diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 36b8520..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2020, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint" - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended" - ], - "rules": { - "@typescript-eslint/naming-convention": "off", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-unused-vars": [ - "warn", - { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_" - } - ], - "@typescript-eslint/no-var-requires": "warn", - "curly": "off", - "eqeqeq": "warn", - "no-throw-literal": "warn" - }, - "ignorePatterns": [ - "out", - "dist", - "**/*.d.ts", - "node_modules", - "coverage", - "test-report", - "*.js", - "examples/**" - ], - "overrides": [ - { - "files": ["**/parser-remark.ts"], - "rules": { - "@typescript-eslint/no-explicit-any": "off" - } - }, - { - "files": ["**/__mocks__/**", "**/__tests__/**"], - "rules": { - "@typescript-eslint/no-explicit-any": "warn" - } - } - ] -} - diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 29290bd..4cec9ce 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -24,8 +24,8 @@ updates: - "@typescript-eslint/*" - "typescript*" - "eslint*" - - "jest*" - - "ts-jest" + - "vitest*" + - "@vitest/*" - "esbuild" - "rimraf" - "@vscode/*" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3c03ec2..6ce82e5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -15,10 +15,39 @@ on: type: string jobs: + crlf-tests: + name: CRLF Tests + runs-on: ubuntu-latest + permissions: + contents: read + actions: write + timeout-minutes: 10 + strategy: + matrix: + node-version: [lts/*] + env: + CI: true + steps: + - name: Checkout ${{ github.sha }} + uses: actions/checkout@v6 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v6 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Install dependencies + run: npm ci + - name: Test CRLF + run: npm run test:crlf --if-present + ci: # CI runs on all pushes (branches and tags) and pull requests # This ensures releases only happen if all tests pass + name: CI Build & Test runs-on: ubuntu-latest + needs: crlf-tests permissions: contents: read timeout-minutes: 10 @@ -60,34 +89,6 @@ jobs: DISPLAY: ':99' run: npm run test:e2e - crlf-tests: - runs-on: ubuntu-latest - permissions: - contents: read - actions: write - timeout-minutes: 10 - strategy: - matrix: - node-version: [lts/*] - env: - CI: true - steps: - - name: Checkout ${{ github.sha }} - uses: actions/checkout@v6 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - - name: Install dependencies - run: npm ci - - name: Test CRLF - run: npm run test:crlf --if-present - - # npm audit runs in .github/workflows/npm-audit.yml (dedicated workflow + README badge). - # The "cd-vsce" job runs only when a tag starting with "v" is pushed (i.e., a version tag), because of the conditional below: cd-vsce: # Only runs when the push references a tag that starts with "v" (for example: refs/tags/v1.2.3) or on workflow_dispatch @@ -247,7 +248,7 @@ jobs: echo "notes=Changelog file not found" >> $GITHUB_OUTPUT fi - name: Create GitHub Release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 with: files: dist/extension.vsix tag_name: ${{ steps.tag_version.outputs.TAG }} diff --git a/.vscodeignore b/.vscodeignore index 06908b8..57af00b 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -3,12 +3,11 @@ .vscode-test/** src/** .gitignore -.eslintrc.json .npmignore tsconfig.json tsconfig.build.json -jest.config.js -jest.setup.js +tsconfig.vitest.json +vitest.config.ts *.map **/*.map dist/**/*.map @@ -28,10 +27,12 @@ specs/** .specify/** # Demo assets (only needed for GitHub README, not in extension) +assets/autoplay-demo.gif assets/demo.gif assets/example-video.gif assets/example-ui.png assets/example-ui-selected-line.png +assets/icon.png~ # Build artifacts branding/** @@ -72,4 +73,4 @@ cliff.toml .eslintignore .vscode-test-cursor.mjs .vscode-test.mjs -tsconfig.e2e.json \ No newline at end of file +tsconfig.e2e.json diff --git a/AGENTS.md b/AGENTS.md index 50fbd02..79db484 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,7 +24,7 @@ Before making changes: - TypeScript (strict mode) - VS Code Extension API - [remark](https://github.com/remarkjs/remark) for markdown parsing -- Jest for testing +- Vitest for testing - esbuild for bundling ## Project Structure @@ -34,28 +34,38 @@ Before making changes: **Core Files:** - `extension.ts` - Extension entry point, activation, command registration - `config.ts` - Centralized configuration access (VS Code settings) -- `parser.ts` - Main markdown parser, converts AST to decoration ranges +- `parser.ts` - Stable parser facade exporting parser API and shared parser types +- `parser/core.ts` - Main markdown parser implementation, converts AST to decoration ranges +- `parser/types.ts` - Shared parser result and decoration type definitions - `parser-remark.ts` - Remark parser setup and utilities - `decorations.ts` - Decoration type factories (transparent, faint, etc.) -- `decorator.ts` - Decoration orchestration, applies decorations to editors +- `decorator.ts` - Decoration orchestration facade, coordinates parsing and application **Specialized Modules:** - `diff-context.ts` - Detects diff views and applies policies - `link-targets.ts` - Resolves link/image URLs (relative, absolute, workspace) +- `link-interactions/shared.ts` - Shared link target/range resolution used by provider, hover, and click flows - `markdown-parse-cache.ts` - Caching layer for parsed markdown (performance critical) - `position-mapping.ts` - Handles CRLF/LF normalization for position calculations +- `language-support.ts` - Shared list of supported markdown-like language IDs and document selectors **Feature Modules:** - `link-provider.ts` - Makes links clickable (DocumentLinkProvider) - `link-hover-provider.ts` - Shows link URLs on hover - `image-hover-provider.ts` - Shows image previews on hover - `link-click-handler.ts` - Handles single-click navigation +- `commands/` - User-facing command registrations and implementations +- `registration/` - Provider and event-wiring helpers used by `extension.ts` **Decoration System:** - `decorator/decoration-type-registry.ts` - Manages decoration type lifecycle - `decorator/visibility-model.ts` - 3-state filtering (Rendered/Ghost/Raw) - `decorator/checkbox-toggle.ts` - Handles checkbox clicks - `decorator/decoration-categories.ts` - Categorizes decoration types +- `decorator/file-decoration-state.ts` - Persists and migrates per-file enable/disable state +- `decorator/update-scheduler.ts` - Debounced and idle update scheduling +- `decorator/editor-decoration-applier.ts` - Range creation, scope entry building, and decoration application helpers +- `decorator/mermaid-update-coordinator.ts` - Async Mermaid rendering and decoration coordination **Test Directories:** - Each module has a corresponding `__tests__/` directory @@ -79,7 +89,7 @@ npm run clean # Remove build artifacts npm run package # Package extension as .vsix ``` -**Testing:** +**Testing (Vitest):** ```bash npm test # Run all tests npm run test:watch # Run tests in watch mode @@ -142,7 +152,7 @@ npm run release # Automated release (see Release section) - Mock VS Code API when needed (see existing tests for patterns) **Current Test Coverage:** -- 438+ passing tests across 33 test suites (parser, hover providers, click handler, decorator, and more) +- 770+ passing tests across 60+ test files (parser, hover providers, click handler, decorator, and more) - Maintain or improve this coverage ### 4. Code Style diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef976f2..1c49b82 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,7 +60,7 @@ extractDecorations(text: string): DecorationRange[] { ### 4. Testing -**All changes must include tests.** The project uses Jest for testing with **438+ passing tests** across 33 test suites. +**All changes must include tests.** The project uses Vitest for testing with **770+ passing tests** across 60+ test files. **Run tests:** ```bash diff --git a/README.md b/README.md index 12fc51d..bc30199 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Press `F5` to launch the Extension Development Host and test your changes. - **[remark](https://github.com/remarkjs/remark)** – Markdown parser for precise AST-based parsing - **[unified](https://github.com/unifiedjs/unified)** – AST processing framework - **[remark-gfm](https://github.com/remarkjs/remark-gfm)** – GitHub Flavored Markdown support -- **Jest** – Testing framework +- **Vitest** – Testing framework **Runtime Requirements:** - **Node.js** 20 or higher @@ -209,7 +209,7 @@ Press `F5` to launch the Extension Development Host and test your changes. - `remark-gfm`, `remark-parse`, `unified`, `unist-util-visit` **Development Dependencies:** -- TypeScript, Jest, ESLint, VS Code extension tools +- TypeScript, Vitest, ESLint, VS Code extension tools ### Architecture diff --git a/assets/icon.png~ b/assets/icon.png~ deleted file mode 100644 index 0b97d95..0000000 Binary files a/assets/icon.png~ and /dev/null differ diff --git a/assets/mermaid/chunks/mermaid.esm.min/architecture-7EHR7CIX-6QZW5X65.mjs b/assets/mermaid/chunks/mermaid.esm.min/architecture-7EHR7CIX-6QZW5X65.mjs new file mode 100644 index 0000000..e082c6b --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/architecture-7EHR7CIX-6QZW5X65.mjs @@ -0,0 +1 @@ +import{a as e,b as r}from"./chunk-RERM46MO.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{e as ArchitectureModule,r as createArchitectureServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/architecture-PBZL5I3N-X3DJOG6M.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/architecture-7EHR7CIX-6QZW5X65.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/architecture-PBZL5I3N-X3DJOG6M.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/architecture-7EHR7CIX-6QZW5X65.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/architecture-PBZL5I3N-X3DJOG6M.mjs b/assets/mermaid/chunks/mermaid.esm.min/architecture-PBZL5I3N-X3DJOG6M.mjs deleted file mode 100644 index 514683c..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/architecture-PBZL5I3N-X3DJOG6M.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as e,b as r}from"./chunk-SYGLAQYM.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import"./chunk-VELTKBKT.mjs";export{e as ArchitectureModule,r as createArchitectureServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-EJXTDGMB.mjs b/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-EJXTDGMB.mjs deleted file mode 100644 index 6b807b1..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-EJXTDGMB.mjs +++ /dev/null @@ -1,36 +0,0 @@ -import{a as tr}from"./chunk-AEOMTBSW.mjs";import{a as _e}from"./chunk-TJ4WWVTA.mjs";import"./chunk-AHTCUU5T.mjs";import"./chunk-JVPIJFVP.mjs";import"./chunk-SYGLAQYM.mjs";import"./chunk-NHJX6F6M.mjs";import"./chunk-F3E5R7LK.mjs";import"./chunk-ZX4KS3OZ.mjs";import{a as er}from"./chunk-D4HHKWPY.mjs";import{a as Ne}from"./chunk-7RZVMHOQ.mjs";import{a as He,b as We,c as ue,f as de}from"./chunk-YLHEXJF3.mjs";import{l as Ke,p as je}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{O as Ve,Q as Be,R as ze,S as $e,T as ke,U as Ze,V as Je,W as qe,Y as ge,j as Ye,s as Ue,z as Xe}from"./chunk-3UWU4A3N.mjs";import{b as fe,h as Qe}from"./chunk-MGPAVIPZ.mjs";import"./chunk-MFSPT3DZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as L,c as Ae,f as mr}from"./chunk-VELTKBKT.mjs";var xe=Ae((se,Me)=>{"use strict";L((function(C,T){typeof se=="object"&&typeof Me=="object"?Me.exports=T():typeof define=="function"&&define.amd?define([],T):typeof se=="object"?se.layoutBase=T():C.layoutBase=T()}),"webpackUniversalModuleDefinition")(se,function(){return(function(D){var C={};function T(g){if(C[g])return C[g].exports;var o=C[g]={i:g,l:!1,exports:{}};return D[g].call(o.exports,o,o.exports,T),o.l=!0,o.exports}return L(T,"__webpack_require__"),T.m=D,T.c=C,T.i=function(g){return g},T.d=function(g,o,n){T.o(g,o)||Object.defineProperty(g,o,{configurable:!1,enumerable:!0,get:n})},T.n=function(g){var o=g&&g.__esModule?L(function(){return g.default},"getDefault"):L(function(){return g},"getModuleExports");return T.d(o,"a",o),o},T.o=function(g,o){return Object.prototype.hasOwnProperty.call(g,o)},T.p="",T(T.s=28)})([(function(D,C,T){"use strict";function g(){}L(g,"LayoutConstants"),g.QUALITY=1,g.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,g.DEFAULT_INCREMENTAL=!1,g.DEFAULT_ANIMATION_ON_LAYOUT=!0,g.DEFAULT_ANIMATION_DURING_LAYOUT=!1,g.DEFAULT_ANIMATION_PERIOD=50,g.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,g.DEFAULT_GRAPH_MARGIN=15,g.NODE_DIMENSIONS_INCLUDE_LABELS=!1,g.SIMPLE_NODE_SIZE=40,g.SIMPLE_NODE_HALF_SIZE=g.SIMPLE_NODE_SIZE/2,g.EMPTY_COMPOUND_NODE_SIZE=40,g.MIN_EDGE_LENGTH=1,g.WORLD_BOUNDARY=1e6,g.INITIAL_WORLD_BOUNDARY=g.WORLD_BOUNDARY/1e3,g.WORLD_CENTER_X=1200,g.WORLD_CENTER_Y=900,D.exports=g}),(function(D,C,T){"use strict";var g=T(2),o=T(8),n=T(9);function r(c,t,u){g.call(this,u),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=u,this.bendpoints=[],this.source=c,this.target=t}L(r,"LEdge"),r.prototype=Object.create(g.prototype);for(var a in g)r[a]=g[a];r.prototype.getSource=function(){return this.source},r.prototype.getTarget=function(){return this.target},r.prototype.isInterGraph=function(){return this.isInterGraph},r.prototype.getLength=function(){return this.length},r.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},r.prototype.getBendpoints=function(){return this.bendpoints},r.prototype.getLca=function(){return this.lca},r.prototype.getSourceInLca=function(){return this.sourceInLca},r.prototype.getTargetInLca=function(){return this.targetInLca},r.prototype.getOtherEnd=function(c){if(this.source===c)return this.target;if(this.target===c)return this.source;throw"Node is not incident with this edge"},r.prototype.getOtherEndInGraph=function(c,t){for(var u=this.getOtherEnd(c),i=t.getGraphManager().getRoot();;){if(u.getOwner()==t)return u;if(u.getOwner()==i)break;u=u.getOwner().getParent()}return null},r.prototype.updateLength=function(){var c=new Array(4);this.isOverlapingSourceAndTarget=o.getIntersection(this.target.getRect(),this.source.getRect(),c),this.isOverlapingSourceAndTarget||(this.lengthX=c[0]-c[2],this.lengthY=c[1]-c[3],Math.abs(this.lengthX)<1&&(this.lengthX=n.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=n.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},r.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=n.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=n.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},D.exports=r}),(function(D,C,T){"use strict";function g(o){this.vGraphObject=o}L(g,"LGraphObject"),D.exports=g}),(function(D,C,T){"use strict";var g=T(2),o=T(10),n=T(13),r=T(0),a=T(16),c=T(5);function t(i,e,h,f){h==null&&f==null&&(f=e),g.call(this,f),i.graphManager!=null&&(i=i.graphManager),this.estimatedSize=o.MIN_VALUE,this.inclusionTreeDepth=o.MAX_VALUE,this.vGraphObject=f,this.edges=[],this.graphManager=i,h!=null&&e!=null?this.rect=new n(e.x,e.y,h.width,h.height):this.rect=new n}L(t,"LNode"),t.prototype=Object.create(g.prototype);for(var u in g)t[u]=g[u];t.prototype.getEdges=function(){return this.edges},t.prototype.getChild=function(){return this.child},t.prototype.getOwner=function(){return this.owner},t.prototype.getWidth=function(){return this.rect.width},t.prototype.setWidth=function(i){this.rect.width=i},t.prototype.getHeight=function(){return this.rect.height},t.prototype.setHeight=function(i){this.rect.height=i},t.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},t.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},t.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},t.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},t.prototype.getRect=function(){return this.rect},t.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},t.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},t.prototype.setRect=function(i,e){this.rect.x=i.x,this.rect.y=i.y,this.rect.width=e.width,this.rect.height=e.height},t.prototype.setCenter=function(i,e){this.rect.x=i-this.rect.width/2,this.rect.y=e-this.rect.height/2},t.prototype.setLocation=function(i,e){this.rect.x=i,this.rect.y=e},t.prototype.moveBy=function(i,e){this.rect.x+=i,this.rect.y+=e},t.prototype.getEdgeListToNode=function(i){var e=[],h,f=this;return f.edges.forEach(function(l){if(l.target==i){if(l.source!=f)throw"Incorrect edge source!";e.push(l)}}),e},t.prototype.getEdgesBetween=function(i){var e=[],h,f=this;return f.edges.forEach(function(l){if(!(l.source==f||l.target==f))throw"Incorrect edge source and/or target";(l.target==i||l.source==i)&&e.push(l)}),e},t.prototype.getNeighborsList=function(){var i=new Set,e=this;return e.edges.forEach(function(h){if(h.source==e)i.add(h.target);else{if(h.target!=e)throw"Incorrect incidency!";i.add(h.source)}}),i},t.prototype.withChildren=function(){var i=new Set,e,h;if(i.add(this),this.child!=null)for(var f=this.child.getNodes(),l=0;le?(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(e+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(h+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>h?(this.rect.y-=(this.labelHeight-h)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(h+this.labelHeight))}}},t.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==o.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},t.prototype.transform=function(i){var e=this.rect.x;e>r.WORLD_BOUNDARY?e=r.WORLD_BOUNDARY:e<-r.WORLD_BOUNDARY&&(e=-r.WORLD_BOUNDARY);var h=this.rect.y;h>r.WORLD_BOUNDARY?h=r.WORLD_BOUNDARY:h<-r.WORLD_BOUNDARY&&(h=-r.WORLD_BOUNDARY);var f=new c(e,h),l=i.inverseTransformPoint(f);this.setLocation(l.x,l.y)},t.prototype.getLeft=function(){return this.rect.x},t.prototype.getRight=function(){return this.rect.x+this.rect.width},t.prototype.getTop=function(){return this.rect.y},t.prototype.getBottom=function(){return this.rect.y+this.rect.height},t.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},D.exports=t}),(function(D,C,T){"use strict";var g=T(0);function o(){}L(o,"FDLayoutConstants");for(var n in g)o[n]=g[n];o.MAX_ITERATIONS=2500,o.DEFAULT_EDGE_LENGTH=50,o.DEFAULT_SPRING_STRENGTH=.45,o.DEFAULT_REPULSION_STRENGTH=4500,o.DEFAULT_GRAVITY_STRENGTH=.4,o.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,o.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,o.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,o.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,o.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,o.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,o.COOLING_ADAPTATION_FACTOR=.33,o.ADAPTATION_LOWER_NODE_LIMIT=1e3,o.ADAPTATION_UPPER_NODE_LIMIT=5e3,o.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,o.MAX_NODE_DISPLACEMENT=o.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,o.MIN_REPULSION_DIST=o.DEFAULT_EDGE_LENGTH/10,o.CONVERGENCE_CHECK_PERIOD=100,o.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,o.MIN_EDGE_LENGTH=1,o.GRID_CALCULATION_CHECK_PERIOD=10,D.exports=o}),(function(D,C,T){"use strict";function g(o,n){o==null&&n==null?(this.x=0,this.y=0):(this.x=o,this.y=n)}L(g,"PointD"),g.prototype.getX=function(){return this.x},g.prototype.getY=function(){return this.y},g.prototype.setX=function(o){this.x=o},g.prototype.setY=function(o){this.y=o},g.prototype.getDifference=function(o){return new DimensionD(this.x-o.x,this.y-o.y)},g.prototype.getCopy=function(){return new g(this.x,this.y)},g.prototype.translate=function(o){return this.x+=o.width,this.y+=o.height,this},D.exports=g}),(function(D,C,T){"use strict";var g=T(2),o=T(10),n=T(0),r=T(7),a=T(3),c=T(1),t=T(13),u=T(12),i=T(11);function e(f,l,A){g.call(this,A),this.estimatedSize=o.MIN_VALUE,this.margin=n.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=f,l!=null&&l instanceof r?this.graphManager=l:l!=null&&l instanceof Layout&&(this.graphManager=l.graphManager)}L(e,"LGraph"),e.prototype=Object.create(g.prototype);for(var h in g)e[h]=g[h];e.prototype.getNodes=function(){return this.nodes},e.prototype.getEdges=function(){return this.edges},e.prototype.getGraphManager=function(){return this.graphManager},e.prototype.getParent=function(){return this.parent},e.prototype.getLeft=function(){return this.left},e.prototype.getRight=function(){return this.right},e.prototype.getTop=function(){return this.top},e.prototype.getBottom=function(){return this.bottom},e.prototype.isConnected=function(){return this.isConnected},e.prototype.add=function(f,l,A){if(l==null&&A==null){var y=f;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(y)>-1)throw"Node already in graph!";return y.owner=this,this.getNodes().push(y),y}else{var v=f;if(!(this.getNodes().indexOf(l)>-1&&this.getNodes().indexOf(A)>-1))throw"Source or target not in graph!";if(!(l.owner==A.owner&&l.owner==this))throw"Both owners must be this graph!";return l.owner!=A.owner?null:(v.source=l,v.target=A,v.isInterGraph=!1,this.getEdges().push(v),l.edges.push(v),A!=l&&A.edges.push(v),v)}},e.prototype.remove=function(f){var l=f;if(f instanceof a){if(l==null)throw"Node is null!";if(!(l.owner!=null&&l.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var A=l.edges.slice(),y,v=A.length,N=0;N-1&&b>-1))throw"Source and/or target doesn't know this edge!";y.source.edges.splice(w,1),y.target!=y.source&&y.target.edges.splice(b,1);var S=y.source.owner.getEdges().indexOf(y);if(S==-1)throw"Not in owner's edge list!";y.source.owner.getEdges().splice(S,1)}},e.prototype.updateLeftTop=function(){for(var f=o.MAX_VALUE,l=o.MAX_VALUE,A,y,v,N=this.getNodes(),S=N.length,w=0;wA&&(f=A),l>y&&(l=y)}return f==o.MAX_VALUE?null:(N[0].getParent().paddingLeft!=null?v=N[0].getParent().paddingLeft:v=this.margin,this.left=l-v,this.top=f-v,new u(this.left,this.top))},e.prototype.updateBounds=function(f){for(var l=o.MAX_VALUE,A=-o.MAX_VALUE,y=o.MAX_VALUE,v=-o.MAX_VALUE,N,S,w,b,$,X=this.nodes,et=X.length,R=0;RN&&(l=N),Aw&&(y=w),vN&&(l=N),Aw&&(y=w),v=this.nodes.length){var et=0;A.forEach(function(R){R.owner==f&&et++}),et==this.nodes.length&&(this.isConnected=!0)}},D.exports=e}),(function(D,C,T){"use strict";var g,o=T(1);function n(r){g=T(6),this.layout=r,this.graphs=[],this.edges=[]}L(n,"LGraphManager"),n.prototype.addRoot=function(){var r=this.layout.newGraph(),a=this.layout.newNode(null),c=this.add(r,a);return this.setRootGraph(c),this.rootGraph},n.prototype.add=function(r,a,c,t,u){if(c==null&&t==null&&u==null){if(r==null)throw"Graph is null!";if(a==null)throw"Parent node is null!";if(this.graphs.indexOf(r)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(r),r.parent!=null)throw"Already has a parent!";if(a.child!=null)throw"Already has a child!";return r.parent=a,a.child=r,r}else{u=c,t=a,c=r;var i=t.getOwner(),e=u.getOwner();if(!(i!=null&&i.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(e!=null&&e.getGraphManager()==this))throw"Target not in this graph mgr!";if(i==e)return c.isInterGraph=!1,i.add(c,t,u);if(c.isInterGraph=!0,c.source=t,c.target=u,this.edges.indexOf(c)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(c),!(c.source!=null&&c.target!=null))throw"Edge source and/or target is null!";if(!(c.source.edges.indexOf(c)==-1&&c.target.edges.indexOf(c)==-1))throw"Edge already in source and/or target incidency list!";return c.source.edges.push(c),c.target.edges.push(c),c}},n.prototype.remove=function(r){if(r instanceof g){var a=r;if(a.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(a==this.rootGraph||a.parent!=null&&a.parent.graphManager==this))throw"Invalid parent node!";var c=[];c=c.concat(a.getEdges());for(var t,u=c.length,i=0;i=r.getRight()?a[0]+=Math.min(r.getX()-n.getX(),n.getRight()-r.getRight()):r.getX()<=n.getX()&&r.getRight()>=n.getRight()&&(a[0]+=Math.min(n.getX()-r.getX(),r.getRight()-n.getRight())),n.getY()<=r.getY()&&n.getBottom()>=r.getBottom()?a[1]+=Math.min(r.getY()-n.getY(),n.getBottom()-r.getBottom()):r.getY()<=n.getY()&&r.getBottom()>=n.getBottom()&&(a[1]+=Math.min(n.getY()-r.getY(),r.getBottom()-n.getBottom()));var u=Math.abs((r.getCenterY()-n.getCenterY())/(r.getCenterX()-n.getCenterX()));r.getCenterY()===n.getCenterY()&&r.getCenterX()===n.getCenterX()&&(u=1);var i=u*a[0],e=a[1]/u;a[0]i)return a[0]=c,a[1]=h,a[2]=u,a[3]=X,!1;if(tu)return a[0]=e,a[1]=t,a[2]=b,a[3]=i,!1;if(cu?(a[0]=l,a[1]=A,s=!0):(a[0]=f,a[1]=h,s=!0):p===d&&(c>u?(a[0]=e,a[1]=h,s=!0):(a[0]=y,a[1]=A,s=!0)),-E===d?u>c?(a[2]=$,a[3]=X,m=!0):(a[2]=b,a[3]=w,m=!0):E===d&&(u>c?(a[2]=S,a[3]=w,m=!0):(a[2]=et,a[3]=X,m=!0)),s&&m)return!1;if(c>u?t>i?(O=this.getCardinalDirection(p,d,4),x=this.getCardinalDirection(E,d,2)):(O=this.getCardinalDirection(-p,d,3),x=this.getCardinalDirection(-E,d,1)):t>i?(O=this.getCardinalDirection(-p,d,1),x=this.getCardinalDirection(-E,d,3)):(O=this.getCardinalDirection(p,d,2),x=this.getCardinalDirection(E,d,4)),!s)switch(O){case 1:F=h,G=c+-N/d,a[0]=G,a[1]=F;break;case 2:G=y,F=t+v*d,a[0]=G,a[1]=F;break;case 3:F=A,G=c+N/d,a[0]=G,a[1]=F;break;case 4:G=l,F=t+-v*d,a[0]=G,a[1]=F;break}if(!m)switch(x){case 1:Z=w,I=u+-J/d,a[2]=I,a[3]=Z;break;case 2:I=et,Z=i+R*d,a[2]=I,a[3]=Z;break;case 3:Z=X,I=u+J/d,a[2]=I,a[3]=Z;break;case 4:I=$,Z=i+-R*d,a[2]=I,a[3]=Z;break}}return!1},o.getCardinalDirection=function(n,r,a){return n>r?a:1+a%4},o.getIntersection=function(n,r,a,c){if(c==null)return this.getIntersection2(n,r,a);var t=n.x,u=n.y,i=r.x,e=r.y,h=a.x,f=a.y,l=c.x,A=c.y,y=void 0,v=void 0,N=void 0,S=void 0,w=void 0,b=void 0,$=void 0,X=void 0,et=void 0;return N=e-u,w=t-i,$=i*u-t*e,S=A-f,b=h-l,X=l*f-h*A,et=N*b-S*w,et===0?null:(y=(w*X-b*$)/et,v=(S*$-N*X)/et,new g(y,v))},o.angleOfVector=function(n,r,a,c){var t=void 0;return n!==a?(t=Math.atan((c-r)/(a-n)),a=0){var A=(-h+Math.sqrt(h*h-4*e*f))/(2*e),y=(-h-Math.sqrt(h*h-4*e*f))/(2*e),v=null;return A>=0&&A<=1?[A]:y>=0&&y<=1?[y]:v}else return null},o.HALF_PI=.5*Math.PI,o.ONE_AND_HALF_PI=1.5*Math.PI,o.TWO_PI=2*Math.PI,o.THREE_PI=3*Math.PI,D.exports=o}),(function(D,C,T){"use strict";function g(){}L(g,"IMath"),g.sign=function(o){return o>0?1:o<0?-1:0},g.floor=function(o){return o<0?Math.ceil(o):Math.floor(o)},g.ceil=function(o){return o<0?Math.floor(o):Math.ceil(o)},D.exports=g}),(function(D,C,T){"use strict";function g(){}L(g,"Integer"),g.MAX_VALUE=2147483647,g.MIN_VALUE=-2147483648,D.exports=g}),(function(D,C,T){"use strict";var g=(function(){function t(u,i){for(var e=0;e"u"?"undefined":g(n);return n==null||r!="object"&&r!="function"},D.exports=o}),(function(D,C,T){"use strict";function g(h){if(Array.isArray(h)){for(var f=0,l=Array(h.length);f0&&f;){for(N.push(w[0]);N.length>0&&f;){var b=N[0];N.splice(0,1),v.add(b);for(var $=b.getEdges(),y=0;y<$.length;y++){var X=$[y].getOtherEnd(b);if(S.get(b)!=X)if(!v.has(X))N.push(X),S.set(X,b);else{f=!1;break}}}if(!f)h=[];else{var et=[].concat(g(v));h.push(et);for(var y=0;y-1&&w.splice(J,1)}v=new Set,S=new Map}}return h},e.prototype.createDummyNodesForBendpoints=function(h){for(var f=[],l=h.source,A=this.graphManager.calcLowestCommonAncestor(h.source,h.target),y=0;y0){for(var A=this.edgeToDummyNodes.get(l),y=0;y=0&&f.splice(X,1);var et=S.getNeighborsList();et.forEach(function(s){if(l.indexOf(s)<0){var m=A.get(s),p=m-1;p==1&&b.push(s),A.set(s,p)}})}l=l.concat(b),(f.length==1||f.length==2)&&(y=!0,v=f[0])}return v},e.prototype.setGraphManager=function(h){this.graphManager=h},D.exports=e}),(function(D,C,T){"use strict";function g(){}L(g,"RandomSeed"),g.seed=1,g.x=0,g.nextDouble=function(){return g.x=Math.sin(g.seed++)*1e4,g.x-Math.floor(g.x)},D.exports=g}),(function(D,C,T){"use strict";var g=T(5);function o(n,r){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}L(o,"Transform"),o.prototype.getWorldOrgX=function(){return this.lworldOrgX},o.prototype.setWorldOrgX=function(n){this.lworldOrgX=n},o.prototype.getWorldOrgY=function(){return this.lworldOrgY},o.prototype.setWorldOrgY=function(n){this.lworldOrgY=n},o.prototype.getWorldExtX=function(){return this.lworldExtX},o.prototype.setWorldExtX=function(n){this.lworldExtX=n},o.prototype.getWorldExtY=function(){return this.lworldExtY},o.prototype.setWorldExtY=function(n){this.lworldExtY=n},o.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},o.prototype.setDeviceOrgX=function(n){this.ldeviceOrgX=n},o.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},o.prototype.setDeviceOrgY=function(n){this.ldeviceOrgY=n},o.prototype.getDeviceExtX=function(){return this.ldeviceExtX},o.prototype.setDeviceExtX=function(n){this.ldeviceExtX=n},o.prototype.getDeviceExtY=function(){return this.ldeviceExtY},o.prototype.setDeviceExtY=function(n){this.ldeviceExtY=n},o.prototype.transformX=function(n){var r=0,a=this.lworldExtX;return a!=0&&(r=this.ldeviceOrgX+(n-this.lworldOrgX)*this.ldeviceExtX/a),r},o.prototype.transformY=function(n){var r=0,a=this.lworldExtY;return a!=0&&(r=this.ldeviceOrgY+(n-this.lworldOrgY)*this.ldeviceExtY/a),r},o.prototype.inverseTransformX=function(n){var r=0,a=this.ldeviceExtX;return a!=0&&(r=this.lworldOrgX+(n-this.ldeviceOrgX)*this.lworldExtX/a),r},o.prototype.inverseTransformY=function(n){var r=0,a=this.ldeviceExtY;return a!=0&&(r=this.lworldOrgY+(n-this.ldeviceOrgY)*this.lworldExtY/a),r},o.prototype.inverseTransformPoint=function(n){var r=new g(this.inverseTransformX(n.x),this.inverseTransformY(n.y));return r},D.exports=o}),(function(D,C,T){"use strict";function g(i){if(Array.isArray(i)){for(var e=0,h=Array(i.length);en.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*n.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(i-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-n.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT_INCREMENTAL):(i>n.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(n.COOLING_ADAPTATION_FACTOR,1-(i-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*(1-n.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*n.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},t.prototype.calcSpringForces=function(){for(var i=this.getAllEdges(),e,h=0;h0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,h,f,l,A,y=this.getAllNodes(),v;if(this.useFRGridVariant)for(this.totalIterations%n.GRID_CALCULATION_CHECK_PERIOD==1&&i&&this.updateGrid(),v=new Set,h=0;hN||v>N)&&(i.gravitationForceX=-this.gravityConstant*l,i.gravitationForceY=-this.gravityConstant*A)):(N=e.getEstimatedSize()*this.compoundGravityRangeFactor,(y>N||v>N)&&(i.gravitationForceX=-this.gravityConstant*l*this.compoundGravityConstant,i.gravitationForceY=-this.gravityConstant*A*this.compoundGravityConstant))},t.prototype.isConverged=function(){var i,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),i=this.totalDisplacement=y.length||N>=y[0].length)){for(var S=0;St},"_defaultCompareFunction")}]),a})();D.exports=r}),(function(D,C,T){"use strict";function g(){}L(g,"SVD"),g.svd=function(o){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=o.length,this.n=o[0].length;var n=Math.min(this.m,this.n);this.s=(function(xt){for(var At=[];xt-- >0;)At.push(0);return At})(Math.min(this.m+1,this.n)),this.U=(function(xt){var At=L(function $t(It){if(It.length==0)return 0;for(var Xt=[],Bt=0;Bt0;)At.push(0);return At})(this.n),a=(function(xt){for(var At=[];xt-- >0;)At.push(0);return At})(this.m),c=!0,t=!0,u=Math.min(this.m-1,this.n),i=Math.max(0,Math.min(this.n-2,this.m)),e=0;e=0;d--)if(this.s[d]!==0){for(var O=d+1;O=0;P--){if((function(xt,At){return xt&&At})(P0;){var Q=void 0,Yt=void 0;for(Q=m-2;Q>=-1&&Q!==-1;Q--)if(Math.abs(r[Q])<=St+Nt*(Math.abs(this.s[Q])+Math.abs(this.s[Q+1]))){r[Q]=0;break}if(Q===m-2)Yt=4;else{var wt=void 0;for(wt=m-1;wt>=Q&&wt!==Q;wt--){var ot=(wt!==m?Math.abs(r[wt]):0)+(wt!==Q+1?Math.abs(r[wt-1]):0);if(Math.abs(this.s[wt])<=St+Nt*ot){this.s[wt]=0;break}}wt===Q?Yt=3:wt===m-1?Yt=1:(Yt=2,Q=wt)}switch(Q++,Yt){case 1:{var rt=r[m-2];r[m-2]=0;for(var vt=m-2;vt>=Q;vt--){var mt=g.hypot(this.s[vt],rt),Lt=this.s[vt]/mt,Et=rt/mt;if(this.s[vt]=mt,vt!==Q&&(rt=-Et*r[vt-1],r[vt-1]=Lt*r[vt-1]),t)for(var Tt=0;Tt=this.s[Q+1]);){var ct=this.s[Q];if(this.s[Q]=this.s[Q+1],this.s[Q+1]=ct,t&&QMath.abs(n)?(r=n/o,r=Math.abs(o)*Math.sqrt(1+r*r)):n!=0?(r=o/n,r=Math.abs(n)*Math.sqrt(1+r*r)):r=0,r},D.exports=g}),(function(D,C,T){"use strict";var g=(function(){function r(a,c){for(var t=0;t2&&arguments[2]!==void 0?arguments[2]:1,u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;o(this,r),this.sequence1=a,this.sequence2=c,this.match_score=t,this.mismatch_penalty=u,this.gap_penalty=i,this.iMax=a.length+1,this.jMax=c.length+1,this.grid=new Array(this.iMax);for(var e=0;e=0;a--){var c=this.listeners[a];c.event===n&&c.callback===r&&this.listeners.splice(a,1)}},o.emit=function(n,r){for(var a=0;a{"use strict";L((function(C,T){typeof he=="object"&&typeof Oe=="object"?Oe.exports=T(xe()):typeof define=="function"&&define.amd?define(["layout-base"],T):typeof he=="object"?he.coseBase=T(xe()):C.coseBase=T(C.layoutBase)}),"webpackUniversalModuleDefinition")(he,function(D){return(()=>{"use strict";var C={45:((n,r,a)=>{var c={};c.layoutBase=a(551),c.CoSEConstants=a(806),c.CoSEEdge=a(767),c.CoSEGraph=a(880),c.CoSEGraphManager=a(578),c.CoSELayout=a(765),c.CoSENode=a(991),c.ConstraintHandler=a(902),n.exports=c}),806:((n,r,a)=>{var c=a(551).FDLayoutConstants;function t(){}L(t,"CoSEConstants");for(var u in c)t[u]=c[u];t.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,t.DEFAULT_RADIAL_SEPARATION=c.DEFAULT_EDGE_LENGTH,t.DEFAULT_COMPONENT_SEPERATION=60,t.TILE=!0,t.TILING_PADDING_VERTICAL=10,t.TILING_PADDING_HORIZONTAL=10,t.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,t.ENFORCE_CONSTRAINTS=!0,t.APPLY_LAYOUT=!0,t.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,t.TREE_REDUCTION_ON_INCREMENTAL=!0,t.PURE_INCREMENTAL=t.DEFAULT_INCREMENTAL,n.exports=t}),767:((n,r,a)=>{var c=a(551).FDLayoutEdge;function t(i,e,h){c.call(this,i,e,h)}L(t,"CoSEEdge"),t.prototype=Object.create(c.prototype);for(var u in c)t[u]=c[u];n.exports=t}),880:((n,r,a)=>{var c=a(551).LGraph;function t(i,e,h){c.call(this,i,e,h)}L(t,"CoSEGraph"),t.prototype=Object.create(c.prototype);for(var u in c)t[u]=c[u];n.exports=t}),578:((n,r,a)=>{var c=a(551).LGraphManager;function t(i){c.call(this,i)}L(t,"CoSEGraphManager"),t.prototype=Object.create(c.prototype);for(var u in c)t[u]=c[u];n.exports=t}),765:((n,r,a)=>{var c=a(551).FDLayout,t=a(578),u=a(880),i=a(991),e=a(767),h=a(806),f=a(902),l=a(551).FDLayoutConstants,A=a(551).LayoutConstants,y=a(551).Point,v=a(551).PointD,N=a(551).DimensionD,S=a(551).Layout,w=a(551).Integer,b=a(551).IGeometry,$=a(551).LGraph,X=a(551).Transform,et=a(551).LinkedList;function R(){c.call(this),this.toBeTiled={},this.constraints={}}L(R,"CoSELayout"),R.prototype=Object.create(c.prototype);for(var J in c)R[J]=c[J];R.prototype.newGraphManager=function(){var s=new t(this);return this.graphManager=s,s},R.prototype.newGraph=function(s){return new u(null,this.graphManager,s)},R.prototype.newNode=function(s){return new i(this.graphManager,s)},R.prototype.newEdge=function(s){return new e(null,null,s)},R.prototype.initParameters=function(){c.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=l.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=l.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},R.prototype.initSpringEmbedder=function(){c.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/l.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},R.prototype.layout=function(){var s=A.DEFAULT_CREATE_BENDS_AS_NEEDED;return s&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},R.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(h.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var m=new Set(this.getAllNodes()),p=this.nodesWithGravity.filter(function(O){return m.has(O)});this.graphManager.setAllNodesToApplyGravitation(p)}}else{var s=this.getFlatForest();if(s.length>0)this.positionNodesRadially(s);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var m=new Set(this.getAllNodes()),p=this.nodesWithGravity.filter(function(E){return m.has(E)});this.graphManager.setAllNodesToApplyGravitation(p),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(f.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),h.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},R.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var s=new Set(this.getAllNodes()),m=this.nodesWithGravity.filter(function(d){return s.has(d)});this.graphManager.setAllNodesToApplyGravitation(m),this.graphManager.updateBounds(),this.updateGrid(),h.PURE_INCREMENTAL?this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),h.PURE_INCREMENTAL?this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var p=!this.isTreeGrowing&&!this.isGrowthFinished,E=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(p,E),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},R.prototype.getPositionsData=function(){for(var s=this.graphManager.getAllNodes(),m={},p=0;p0&&this.updateDisplacements();for(var p=0;p0&&(E.fixedNodeWeight=O)}}if(this.constraints.relativePlacementConstraint){var x=new Map,G=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(M){s.fixedNodesOnHorizontal.add(M),s.fixedNodesOnVertical.add(M)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var F=this.constraints.alignmentConstraint.vertical,p=0;p=2*M.length/3;K--)U=Math.floor(Math.random()*(K+1)),H=M[K],M[K]=M[U],M[U]=H;return M},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(M){if(M.left){var U=x.has(M.left)?x.get(M.left):M.left,H=x.has(M.right)?x.get(M.right):M.right;s.nodesInRelativeHorizontal.includes(U)||(s.nodesInRelativeHorizontal.push(U),s.nodeToRelativeConstraintMapHorizontal.set(U,[]),s.dummyToNodeForVerticalAlignment.has(U)?s.nodeToTempPositionMapHorizontal.set(U,s.idToNodeMap.get(s.dummyToNodeForVerticalAlignment.get(U)[0]).getCenterX()):s.nodeToTempPositionMapHorizontal.set(U,s.idToNodeMap.get(U).getCenterX())),s.nodesInRelativeHorizontal.includes(H)||(s.nodesInRelativeHorizontal.push(H),s.nodeToRelativeConstraintMapHorizontal.set(H,[]),s.dummyToNodeForVerticalAlignment.has(H)?s.nodeToTempPositionMapHorizontal.set(H,s.idToNodeMap.get(s.dummyToNodeForVerticalAlignment.get(H)[0]).getCenterX()):s.nodeToTempPositionMapHorizontal.set(H,s.idToNodeMap.get(H).getCenterX())),s.nodeToRelativeConstraintMapHorizontal.get(U).push({right:H,gap:M.gap}),s.nodeToRelativeConstraintMapHorizontal.get(H).push({left:U,gap:M.gap})}else{var K=G.has(M.top)?G.get(M.top):M.top,ht=G.has(M.bottom)?G.get(M.bottom):M.bottom;s.nodesInRelativeVertical.includes(K)||(s.nodesInRelativeVertical.push(K),s.nodeToRelativeConstraintMapVertical.set(K,[]),s.dummyToNodeForHorizontalAlignment.has(K)?s.nodeToTempPositionMapVertical.set(K,s.idToNodeMap.get(s.dummyToNodeForHorizontalAlignment.get(K)[0]).getCenterY()):s.nodeToTempPositionMapVertical.set(K,s.idToNodeMap.get(K).getCenterY())),s.nodesInRelativeVertical.includes(ht)||(s.nodesInRelativeVertical.push(ht),s.nodeToRelativeConstraintMapVertical.set(ht,[]),s.dummyToNodeForHorizontalAlignment.has(ht)?s.nodeToTempPositionMapVertical.set(ht,s.idToNodeMap.get(s.dummyToNodeForHorizontalAlignment.get(ht)[0]).getCenterY()):s.nodeToTempPositionMapVertical.set(ht,s.idToNodeMap.get(ht).getCenterY())),s.nodeToRelativeConstraintMapVertical.get(K).push({bottom:ht,gap:M.gap}),s.nodeToRelativeConstraintMapVertical.get(ht).push({top:K,gap:M.gap})}});else{var Z=new Map,tt=new Map;this.constraints.relativePlacementConstraint.forEach(function(M){if(M.left){var U=x.has(M.left)?x.get(M.left):M.left,H=x.has(M.right)?x.get(M.right):M.right;Z.has(U)?Z.get(U).push(H):Z.set(U,[H]),Z.has(H)?Z.get(H).push(U):Z.set(H,[U])}else{var K=G.has(M.top)?G.get(M.top):M.top,ht=G.has(M.bottom)?G.get(M.bottom):M.bottom;tt.has(K)?tt.get(K).push(ht):tt.set(K,[ht]),tt.has(ht)?tt.get(ht).push(K):tt.set(ht,[K])}});var P=L(function(U,H){var K=[],ht=[],Nt=new et,St=new Set,Q=0;return U.forEach(function(Yt,wt){if(!St.has(wt)){K[Q]=[],ht[Q]=!1;var ot=wt;for(Nt.push(ot),St.add(ot),K[Q].push(ot);Nt.length!=0;){ot=Nt.shift(),H.has(ot)&&(ht[Q]=!0);var rt=U.get(ot);rt.forEach(function(vt){St.has(vt)||(Nt.push(vt),St.add(vt),K[Q].push(vt))})}Q++}}),{components:K,isFixed:ht}},"constructComponents"),_=P(Z,s.fixedNodesOnHorizontal);this.componentsOnHorizontal=_.components,this.fixedComponentsOnHorizontal=_.isFixed;var B=P(tt,s.fixedNodesOnVertical);this.componentsOnVertical=B.components,this.fixedComponentsOnVertical=B.isFixed}}},R.prototype.updateDisplacements=function(){var s=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(B){var M=s.idToNodeMap.get(B.nodeId);M.displacementX=0,M.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var m=this.constraints.alignmentConstraint.vertical,p=0;p1){var G;for(G=0;GE&&(E=Math.floor(x.y)),O=Math.floor(x.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new v(A.WORLD_CENTER_X-x.x/2,A.WORLD_CENTER_Y-x.y/2))},R.radialLayout=function(s,m,p){var E=Math.max(this.maxDiagonalInTree(s),h.DEFAULT_RADIAL_SEPARATION);R.branchRadialLayout(m,null,0,359,0,E);var d=$.calculateBounds(s),O=new X;O.setDeviceOrgX(d.getMinX()),O.setDeviceOrgY(d.getMinY()),O.setWorldOrgX(p.x),O.setWorldOrgY(p.y);for(var x=0;x1;){var K=H[0];H.splice(0,1);var ht=P.indexOf(K);ht>=0&&P.splice(ht,1),M--,_--}m!=null?U=(P.indexOf(H[0])+1)%M:U=0;for(var Nt=Math.abs(E-p)/_,St=U;B!=_;St=++St%M){var Q=P[St].getOtherEnd(s);if(Q!=m){var Yt=(p+B*Nt)%360,wt=(Yt+Nt)%360;R.branchRadialLayout(Q,s,Yt,wt,d+O,O),B++}}},R.maxDiagonalInTree=function(s){for(var m=w.MIN_VALUE,p=0;pm&&(m=d)}return m},R.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},R.prototype.groupZeroDegreeMembers=function(){var s=this,m={};this.memberGroups={},this.idToDummyNode={};for(var p=[],E=this.graphManager.getAllNodes(),d=0;d"u"&&(m[G]=[]),m[G]=m[G].concat(O)}Object.keys(m).forEach(function(F){if(m[F].length>1){var I="DummyCompound_"+F;s.memberGroups[I]=m[F];var Z=m[F][0].getParent(),tt=new i(s.graphManager);tt.id=I,tt.paddingLeft=Z.paddingLeft||0,tt.paddingRight=Z.paddingRight||0,tt.paddingBottom=Z.paddingBottom||0,tt.paddingTop=Z.paddingTop||0,s.idToDummyNode[I]=tt;var P=s.getGraphManager().add(s.newGraph(),tt),_=Z.getChild();_.add(tt);for(var B=0;Bd?(E.rect.x-=(E.labelWidth-d)/2,E.setWidth(E.labelWidth),E.labelMarginLeft=(E.labelWidth-d)/2):E.labelPosHorizontal=="right"&&E.setWidth(d+E.labelWidth)),E.labelHeight&&(E.labelPosVertical=="top"?(E.rect.y-=E.labelHeight,E.setHeight(O+E.labelHeight),E.labelMarginTop=E.labelHeight):E.labelPosVertical=="center"&&E.labelHeight>O?(E.rect.y-=(E.labelHeight-O)/2,E.setHeight(E.labelHeight),E.labelMarginTop=(E.labelHeight-O)/2):E.labelPosVertical=="bottom"&&E.setHeight(O+E.labelHeight))}})},R.prototype.repopulateCompounds=function(){for(var s=this.compoundOrder.length-1;s>=0;s--){var m=this.compoundOrder[s],p=m.id,E=m.paddingLeft,d=m.paddingTop,O=m.labelMarginLeft,x=m.labelMarginTop;this.adjustLocations(this.tiledMemberPack[p],m.rect.x,m.rect.y,E,d,O,x)}},R.prototype.repopulateZeroDegreeMembers=function(){var s=this,m=this.tiledZeroDegreePack;Object.keys(m).forEach(function(p){var E=s.idToDummyNode[p],d=E.paddingLeft,O=E.paddingTop,x=E.labelMarginLeft,G=E.labelMarginTop;s.adjustLocations(m[p],E.rect.x,E.rect.y,d,O,x,G)})},R.prototype.getToBeTiled=function(s){var m=s.id;if(this.toBeTiled[m]!=null)return this.toBeTiled[m];var p=s.getChild();if(p==null)return this.toBeTiled[m]=!1,!1;for(var E=p.getNodes(),d=0;d0)return this.toBeTiled[m]=!1,!1;if(O.getChild()==null){this.toBeTiled[O.id]=!1;continue}if(!this.getToBeTiled(O))return this.toBeTiled[m]=!1,!1}return this.toBeTiled[m]=!0,!0},R.prototype.getNodeDegree=function(s){for(var m=s.id,p=s.getEdges(),E=0,d=0;dZ&&(Z=P.rect.height)}p+=Z+s.verticalPadding}},R.prototype.tileCompoundMembers=function(s,m){var p=this;this.tiledMemberPack=[],Object.keys(s).forEach(function(E){var d=m[E];if(p.tiledMemberPack[E]=p.tileNodes(s[E],d.paddingLeft+d.paddingRight),d.rect.width=p.tiledMemberPack[E].width,d.rect.height=p.tiledMemberPack[E].height,d.setCenter(p.tiledMemberPack[E].centerX,p.tiledMemberPack[E].centerY),d.labelMarginLeft=0,d.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var O=d.rect.width,x=d.rect.height;d.labelWidth&&(d.labelPosHorizontal=="left"?(d.rect.x-=d.labelWidth,d.setWidth(O+d.labelWidth),d.labelMarginLeft=d.labelWidth):d.labelPosHorizontal=="center"&&d.labelWidth>O?(d.rect.x-=(d.labelWidth-O)/2,d.setWidth(d.labelWidth),d.labelMarginLeft=(d.labelWidth-O)/2):d.labelPosHorizontal=="right"&&d.setWidth(O+d.labelWidth)),d.labelHeight&&(d.labelPosVertical=="top"?(d.rect.y-=d.labelHeight,d.setHeight(x+d.labelHeight),d.labelMarginTop=d.labelHeight):d.labelPosVertical=="center"&&d.labelHeight>x?(d.rect.y-=(d.labelHeight-x)/2,d.setHeight(d.labelHeight),d.labelMarginTop=(d.labelHeight-x)/2):d.labelPosVertical=="bottom"&&d.setHeight(x+d.labelHeight))}})},R.prototype.tileNodes=function(s,m){var p=this.tileNodesByFavoringDim(s,m,!0),E=this.tileNodesByFavoringDim(s,m,!1),d=this.getOrgRatio(p),O=this.getOrgRatio(E),x;return OG&&(G=B.getWidth())});var F=O/d,I=x/d,Z=Math.pow(p-E,2)+4*(F+E)*(I+p)*d,tt=(E-p+Math.sqrt(Z))/(2*(F+E)),P;m?(P=Math.ceil(tt),P==tt&&P++):P=Math.floor(tt);var _=P*(F+E)-E;return G>_&&(_=G),_+=E*2,_},R.prototype.tileNodesByFavoringDim=function(s,m,p){var E=h.TILING_PADDING_VERTICAL,d=h.TILING_PADDING_HORIZONTAL,O=h.TILING_COMPARE_BY,x={rows:[],rowWidth:[],rowHeight:[],width:0,height:m,verticalPadding:E,horizontalPadding:d,centerX:0,centerY:0};O&&(x.idealRowWidth=this.calcIdealRowWidth(s,p));var G=L(function(M){return M.rect.width*M.rect.height},"getNodeArea"),F=L(function(M,U){return G(U)-G(M)},"areaCompareFcn");s.sort(function(B,M){var U=F;return x.idealRowWidth?(U=O,U(B.id,M.id)):U(B,M)});for(var I=0,Z=0,tt=0;tt0&&(x+=s.horizontalPadding),s.rowWidth[p]=x,s.width0&&(G+=s.verticalPadding);var F=0;G>s.rowHeight[p]&&(F=s.rowHeight[p],s.rowHeight[p]=G,F=s.rowHeight[p]-F),s.height+=F,s.rows[p].push(m)},R.prototype.getShortestRowIndex=function(s){for(var m=-1,p=Number.MAX_VALUE,E=0;Ep&&(m=E,p=s.rowWidth[E]);return m},R.prototype.canAddHorizontal=function(s,m,p){if(s.idealRowWidth){var E=s.rows.length-1,d=s.rowWidth[E];return d+m+s.horizontalPadding<=s.idealRowWidth}var O=this.getShortestRowIndex(s);if(O<0)return!0;var x=s.rowWidth[O];if(x+s.horizontalPadding+m<=s.width)return!0;var G=0;s.rowHeight[O]0&&(G=p+s.verticalPadding-s.rowHeight[O]);var F;s.width-x>=m+s.horizontalPadding?F=(s.height+G)/(x+m+s.horizontalPadding):F=(s.height+G)/s.width,G=p+s.verticalPadding;var I;return s.widthO&&m!=p){E.splice(-1,1),s.rows[p].push(d),s.rowWidth[m]=s.rowWidth[m]-O,s.rowWidth[p]=s.rowWidth[p]+O,s.width=s.rowWidth[instance.getLongestRowIndex(s)];for(var x=Number.MIN_VALUE,G=0;Gx&&(x=E[G].height);m>0&&(x+=s.verticalPadding);var F=s.rowHeight[m]+s.rowHeight[p];s.rowHeight[m]=x,s.rowHeight[p]0)for(var _=d;_<=O;_++)P[0]+=this.grid[_][x-1].length+this.grid[_][x].length-1;if(O0)for(var _=x;_<=G;_++)P[3]+=this.grid[d-1][_].length+this.grid[d][_].length-1;for(var B=w.MAX_VALUE,M,U,H=0;H{var c=a(551).FDLayoutNode,t=a(551).IMath;function u(e,h,f,l){c.call(this,e,h,f,l)}L(u,"CoSENode"),u.prototype=Object.create(c.prototype);for(var i in c)u[i]=c[i];u.prototype.calculateDisplacement=function(){var e=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementX=e.coolingFactor*e.maxNodeDisplacement*t.sign(this.displacementX)),Math.abs(this.displacementY)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementY=e.coolingFactor*e.maxNodeDisplacement*t.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},u.prototype.propogateDisplacementToChildren=function(e,h){for(var f=this.getChild().getNodes(),l,A=0;A{function c(f){if(Array.isArray(f)){for(var l=0,A=Array(f.length);l0){var dt=0;nt.forEach(function(ct){V=="horizontal"?(q.set(ct,y.has(ct)?v[y.get(ct)]:k.get(ct)),dt+=q.get(ct)):(q.set(ct,y.has(ct)?N[y.get(ct)]:k.get(ct)),dt+=q.get(ct))}),dt=dt/nt.length,st.forEach(function(ct){z.has(ct)||q.set(ct,dt)})}else{var at=0;st.forEach(function(ct){V=="horizontal"?at+=y.has(ct)?v[y.get(ct)]:k.get(ct):at+=y.has(ct)?N[y.get(ct)]:k.get(ct)}),at=at/st.length,st.forEach(function(ct){q.set(ct,at)})}});for(var it=L(function(){var nt=ut.shift(),dt=W.get(nt);dt.forEach(function(at){if(q.get(at.id)ct&&(ct=Xt),Btbt&&(bt=Bt)}}catch(ee){Vt=!0,xt=ee}finally{try{!Ot&&At.return&&At.return()}finally{if(Vt)throw xt}}var ve=(dt+ct)/2-(at+bt)/2,qt=!0,jt=!1,_t=void 0;try{for(var Qt=st[Symbol.iterator](),ce;!(qt=(ce=Qt.next()).done);qt=!0){var te=ce.value;q.set(te,q.get(te)+ve)}}catch(ee){jt=!0,_t=ee}finally{try{!qt&&Qt.return&&Qt.return()}finally{if(jt)throw _t}}})}return q},"findAppropriatePositionForRelativePlacement"),J=L(function(W){var V=0,z=0,k=0,j=0;if(W.forEach(function(lt){lt.left?v[y.get(lt.left)]-v[y.get(lt.right)]>=0?V++:z++:N[y.get(lt.top)]-N[y.get(lt.bottom)]>=0?k++:j++}),V>z&&k>j)for(var gt=0;gtz)for(var ft=0;ftj)for(var q=0;q1)l.fixedNodeConstraint.forEach(function(Y,W){E[W]=[Y.position.x,Y.position.y],d[W]=[v[y.get(Y.nodeId)],N[y.get(Y.nodeId)]]}),O=!0;else if(l.alignmentConstraint)(function(){var Y=0;if(l.alignmentConstraint.vertical){for(var W=l.alignmentConstraint.vertical,V=L(function(q){var lt=new Set;W[q].forEach(function(pt){lt.add(pt)});var ut=new Set([].concat(c(lt)).filter(function(pt){return G.has(pt)})),it=void 0;ut.size>0?it=v[y.get(ut.values().next().value)]:it=et(lt).x,W[q].forEach(function(pt){E[Y]=[it,N[y.get(pt)]],d[Y]=[v[y.get(pt)],N[y.get(pt)]],Y++})},"_loop2"),z=0;z0?it=v[y.get(ut.values().next().value)]:it=et(lt).y,k[q].forEach(function(pt){E[Y]=[v[y.get(pt)],it],d[Y]=[v[y.get(pt)],N[y.get(pt)]],Y++})},"_loop3"),gt=0;gttt&&(tt=Z[_].length,P=_);if(tt0){var Lt={x:0,y:0};l.fixedNodeConstraint.forEach(function(Y,W){var V={x:v[y.get(Y.nodeId)],y:N[y.get(Y.nodeId)]},z=Y.position,k=X(z,V);Lt.x+=k.x,Lt.y+=k.y}),Lt.x/=l.fixedNodeConstraint.length,Lt.y/=l.fixedNodeConstraint.length,v.forEach(function(Y,W){v[W]+=Lt.x}),N.forEach(function(Y,W){N[W]+=Lt.y}),l.fixedNodeConstraint.forEach(function(Y){v[y.get(Y.nodeId)]=Y.position.x,N[y.get(Y.nodeId)]=Y.position.y})}if(l.alignmentConstraint){if(l.alignmentConstraint.vertical)for(var Et=l.alignmentConstraint.vertical,Tt=L(function(W){var V=new Set;Et[W].forEach(function(j){V.add(j)});var z=new Set([].concat(c(V)).filter(function(j){return G.has(j)})),k=void 0;z.size>0?k=v[y.get(z.values().next().value)]:k=et(V).x,V.forEach(function(j){G.has(j)||(v[y.get(j)]=k)})},"_loop4"),Mt=0;Mt0?k=N[y.get(z.values().next().value)]:k=et(V).y,V.forEach(function(j){G.has(j)||(N[y.get(j)]=k)})},"_loop5"),Pt=0;Pt{n.exports=D})},T={};function g(n){var r=T[n];if(r!==void 0)return r.exports;var a=T[n]={exports:{}};return C[n](a,a.exports,g),a.exports}L(g,"__webpack_require__");var o=g(45);return o})()})});var cr=Ae((le,Ie)=>{"use strict";L((function(C,T){typeof le=="object"&&typeof Ie=="object"?Ie.exports=T(Re()):typeof define=="function"&&define.amd?define(["cose-base"],T):typeof le=="object"?le.cytoscapeFcose=T(Re()):C.cytoscapeFcose=T(C.coseBase)}),"webpackUniversalModuleDefinition")(le,function(D){return(()=>{"use strict";var C={658:(n=>{n.exports=Object.assign!=null?Object.assign.bind(Object):function(r){for(var a=arguments.length,c=Array(a>1?a-1:0),t=1;t{var c=(function(){function i(e,h){var f=[],l=!0,A=!1,y=void 0;try{for(var v=e[Symbol.iterator](),N;!(l=(N=v.next()).done)&&(f.push(N.value),!(h&&f.length===h));l=!0);}catch(S){A=!0,y=S}finally{try{!l&&v.return&&v.return()}finally{if(A)throw y}}return f}return L(i,"sliceIterator"),function(e,h){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return i(e,h);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),t=a(140).layoutBase.LinkedList,u={};u.getTopMostNodes=function(i){for(var e={},h=0;h0&&O.merge(I)});for(var x=0;x1){N=y[0],S=N.connectedEdges().length,y.forEach(function(d){d.connectedEdges().length0&&f.set("dummy"+(f.size+1),$),X},u.relocateComponent=function(i,e,h){if(!h.fixedNodeConstraint){var f=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,A=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY;if(h.quality=="draft"){var v=!0,N=!1,S=void 0;try{for(var w=e.nodeIndexes[Symbol.iterator](),b;!(v=(b=w.next()).done);v=!0){var $=b.value,X=c($,2),et=X[0],R=X[1],J=h.cy.getElementById(et);if(J){var s=J.boundingBox(),m=e.xCoords[R]-s.w/2,p=e.xCoords[R]+s.w/2,E=e.yCoords[R]-s.h/2,d=e.yCoords[R]+s.h/2;ml&&(l=p),Ey&&(y=d)}}}catch(I){N=!0,S=I}finally{try{!v&&w.return&&w.return()}finally{if(N)throw S}}var O=i.x-(l+f)/2,x=i.y-(y+A)/2;e.xCoords=e.xCoords.map(function(I){return I+O}),e.yCoords=e.yCoords.map(function(I){return I+x})}else{Object.keys(e).forEach(function(I){var Z=e[I],tt=Z.getRect().x,P=Z.getRect().x+Z.getRect().width,_=Z.getRect().y,B=Z.getRect().y+Z.getRect().height;ttl&&(l=P),_y&&(y=B)});var G=i.x-(l+f)/2,F=i.y-(y+A)/2;Object.keys(e).forEach(function(I){var Z=e[I];Z.setCenter(Z.getCenterX()+G,Z.getCenterY()+F)})}}},u.calcBoundingBox=function(i,e,h,f){for(var l=Number.MAX_SAFE_INTEGER,A=Number.MIN_SAFE_INTEGER,y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,N=void 0,S=void 0,w=void 0,b=void 0,$=i.descendants().not(":parent"),X=$.length,et=0;etN&&(l=N),Aw&&(y=w),v{var c=a(548),t=a(140).CoSELayout,u=a(140).CoSENode,i=a(140).layoutBase.PointD,e=a(140).layoutBase.DimensionD,h=a(140).layoutBase.LayoutConstants,f=a(140).layoutBase.FDLayoutConstants,l=a(140).CoSEConstants,A=L(function(v,N){var S=v.cy,w=v.eles,b=w.nodes(),$=w.edges(),X=void 0,et=void 0,R=void 0,J={};v.randomize&&(X=N.nodeIndexes,et=N.xCoords,R=N.yCoords);var s=L(function(I){return typeof I=="function"},"isFn"),m=L(function(I,Z){return s(I)?I(Z):I},"optFn"),p=c.calcParentsWithoutChildren(S,w),E=L(function F(I,Z,tt,P){for(var _=Z.length,B=0;B<_;B++){var M=Z[B],U=null;M.intersection(p).length==0&&(U=M.children());var H=void 0,K=M.layoutDimensions({nodeDimensionsIncludeLabels:P.nodeDimensionsIncludeLabels});if(M.outerWidth()!=null&&M.outerHeight()!=null)if(P.randomize)if(!M.isParent())H=I.add(new u(tt.graphManager,new i(et[X.get(M.id())]-K.w/2,R[X.get(M.id())]-K.h/2),new e(parseFloat(K.w),parseFloat(K.h))));else{var ht=c.calcBoundingBox(M,et,R,X);M.intersection(p).length==0?H=I.add(new u(tt.graphManager,new i(ht.topLeftX,ht.topLeftY),new e(ht.width,ht.height))):H=I.add(new u(tt.graphManager,new i(ht.topLeftX,ht.topLeftY),new e(parseFloat(K.w),parseFloat(K.h))))}else H=I.add(new u(tt.graphManager,new i(M.position("x")-K.w/2,M.position("y")-K.h/2),new e(parseFloat(K.w),parseFloat(K.h))));else H=I.add(new u(this.graphManager));if(H.id=M.data("id"),H.nodeRepulsion=m(P.nodeRepulsion,M),H.paddingLeft=parseInt(M.css("padding")),H.paddingTop=parseInt(M.css("padding")),H.paddingRight=parseInt(M.css("padding")),H.paddingBottom=parseInt(M.css("padding")),P.nodeDimensionsIncludeLabels&&(H.labelWidth=M.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).w,H.labelHeight=M.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).h,H.labelPosVertical=M.css("text-valign"),H.labelPosHorizontal=M.css("text-halign")),J[M.data("id")]=H,isNaN(H.rect.x)&&(H.rect.x=0),isNaN(H.rect.y)&&(H.rect.y=0),U!=null&&U.length>0){var Nt=void 0;Nt=tt.getGraphManager().add(tt.newGraph(),H),F(Nt,U,tt,P)}}},"processChildrenList"),d=L(function(I,Z,tt){for(var P=0,_=0,B=0;B0?l.DEFAULT_EDGE_LENGTH=f.DEFAULT_EDGE_LENGTH=P/_:s(v.idealEdgeLength)?l.DEFAULT_EDGE_LENGTH=f.DEFAULT_EDGE_LENGTH=50:l.DEFAULT_EDGE_LENGTH=f.DEFAULT_EDGE_LENGTH=v.idealEdgeLength,l.MIN_REPULSION_DIST=f.MIN_REPULSION_DIST=f.DEFAULT_EDGE_LENGTH/10,l.DEFAULT_RADIAL_SEPARATION=f.DEFAULT_EDGE_LENGTH)},"processEdges"),O=L(function(I,Z){Z.fixedNodeConstraint&&(I.constraints.fixedNodeConstraint=Z.fixedNodeConstraint),Z.alignmentConstraint&&(I.constraints.alignmentConstraint=Z.alignmentConstraint),Z.relativePlacementConstraint&&(I.constraints.relativePlacementConstraint=Z.relativePlacementConstraint)},"processConstraints");v.nestingFactor!=null&&(l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=f.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=v.nestingFactor),v.gravity!=null&&(l.DEFAULT_GRAVITY_STRENGTH=f.DEFAULT_GRAVITY_STRENGTH=v.gravity),v.numIter!=null&&(l.MAX_ITERATIONS=f.MAX_ITERATIONS=v.numIter),v.gravityRange!=null&&(l.DEFAULT_GRAVITY_RANGE_FACTOR=f.DEFAULT_GRAVITY_RANGE_FACTOR=v.gravityRange),v.gravityCompound!=null&&(l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=f.DEFAULT_COMPOUND_GRAVITY_STRENGTH=v.gravityCompound),v.gravityRangeCompound!=null&&(l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=f.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=v.gravityRangeCompound),v.initialEnergyOnIncremental!=null&&(l.DEFAULT_COOLING_FACTOR_INCREMENTAL=f.DEFAULT_COOLING_FACTOR_INCREMENTAL=v.initialEnergyOnIncremental),v.tilingCompareBy!=null&&(l.TILING_COMPARE_BY=v.tilingCompareBy),v.quality=="proof"?h.QUALITY=2:h.QUALITY=0,l.NODE_DIMENSIONS_INCLUDE_LABELS=f.NODE_DIMENSIONS_INCLUDE_LABELS=h.NODE_DIMENSIONS_INCLUDE_LABELS=v.nodeDimensionsIncludeLabels,l.DEFAULT_INCREMENTAL=f.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!v.randomize,l.ANIMATE=f.ANIMATE=h.ANIMATE=v.animate,l.TILE=v.tile,l.TILING_PADDING_VERTICAL=typeof v.tilingPaddingVertical=="function"?v.tilingPaddingVertical.call():v.tilingPaddingVertical,l.TILING_PADDING_HORIZONTAL=typeof v.tilingPaddingHorizontal=="function"?v.tilingPaddingHorizontal.call():v.tilingPaddingHorizontal,l.DEFAULT_INCREMENTAL=f.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!0,l.PURE_INCREMENTAL=!v.randomize,h.DEFAULT_UNIFORM_LEAF_NODE_SIZES=v.uniformNodeDimensions,v.step=="transformed"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,l.ENFORCE_CONSTRAINTS=!1,l.APPLY_LAYOUT=!1),v.step=="enforced"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!0,l.APPLY_LAYOUT=!1),v.step=="cose"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!1,l.APPLY_LAYOUT=!0),v.step=="all"&&(v.randomize?l.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!0,l.APPLY_LAYOUT=!0),v.fixedNodeConstraint||v.alignmentConstraint||v.relativePlacementConstraint?l.TREE_REDUCTION_ON_INCREMENTAL=!1:l.TREE_REDUCTION_ON_INCREMENTAL=!0;var x=new t,G=x.newGraphManager();return E(G.addRoot(),c.getTopMostNodes(b),x,v),d(x,G,$),O(x,v),x.runLayout(),J},"coseLayout");n.exports={coseLayout:A}}),212:((n,r,a)=>{var c=(function(){function v(N,S){for(var w=0;w0)if(d){var G=i.getTopMostNodes(w.eles.nodes());if(s=i.connectComponents(b,w.eles,G),s.forEach(function(ot){var rt=ot.boundingBox();m.push({x:rt.x1+rt.w/2,y:rt.y1+rt.h/2})}),w.randomize&&s.forEach(function(ot){w.eles=ot,X.push(h(w))}),w.quality=="default"||w.quality=="proof"){var F=b.collection();if(w.tile){var I=new Map,Z=[],tt=[],P=0,_={nodeIndexes:I,xCoords:Z,yCoords:tt},B=[];if(s.forEach(function(ot,rt){ot.edges().length==0&&(ot.nodes().forEach(function(vt,mt){F.merge(ot.nodes()[mt]),vt.isParent()||(_.nodeIndexes.set(ot.nodes()[mt].id(),P++),_.xCoords.push(ot.nodes()[0].position().x),_.yCoords.push(ot.nodes()[0].position().y))}),B.push(rt))}),F.length>1){var M=F.boundingBox();m.push({x:M.x1+M.w/2,y:M.y1+M.h/2}),s.push(F),X.push(_);for(var U=B.length-1;U>=0;U--)s.splice(B[U],1),X.splice(B[U],1),m.splice(B[U],1)}}s.forEach(function(ot,rt){w.eles=ot,J.push(l(w,X[rt])),i.relocateComponent(m[rt],J[rt],w)})}else s.forEach(function(ot,rt){i.relocateComponent(m[rt],X[rt],w)});var H=new Set;if(s.length>1){var K=[],ht=$.filter(function(ot){return ot.css("display")=="none"});s.forEach(function(ot,rt){var vt=void 0;if(w.quality=="draft"&&(vt=X[rt].nodeIndexes),ot.nodes().not(ht).length>0){var mt={};mt.edges=[],mt.nodes=[];var Lt=void 0;ot.nodes().not(ht).forEach(function(Et){if(w.quality=="draft")if(!Et.isParent())Lt=vt.get(Et.id()),mt.nodes.push({x:X[rt].xCoords[Lt]-Et.boundingbox().w/2,y:X[rt].yCoords[Lt]-Et.boundingbox().h/2,width:Et.boundingbox().w,height:Et.boundingbox().h});else{var Tt=i.calcBoundingBox(Et,X[rt].xCoords,X[rt].yCoords,vt);mt.nodes.push({x:Tt.topLeftX,y:Tt.topLeftY,width:Tt.width,height:Tt.height})}else J[rt][Et.id()]&&mt.nodes.push({x:J[rt][Et.id()].getLeft(),y:J[rt][Et.id()].getTop(),width:J[rt][Et.id()].getWidth(),height:J[rt][Et.id()].getHeight()})}),ot.edges().forEach(function(Et){var Tt=Et.source(),Mt=Et.target();if(Tt.css("display")!="none"&&Mt.css("display")!="none")if(w.quality=="draft"){var Rt=vt.get(Tt.id()),Wt=vt.get(Mt.id()),Pt=[],Ut=[];if(Tt.isParent()){var Ft=i.calcBoundingBox(Tt,X[rt].xCoords,X[rt].yCoords,vt);Pt.push(Ft.topLeftX+Ft.width/2),Pt.push(Ft.topLeftY+Ft.height/2)}else Pt.push(X[rt].xCoords[Rt]),Pt.push(X[rt].yCoords[Rt]);if(Mt.isParent()){var Y=i.calcBoundingBox(Mt,X[rt].xCoords,X[rt].yCoords,vt);Ut.push(Y.topLeftX+Y.width/2),Ut.push(Y.topLeftY+Y.height/2)}else Ut.push(X[rt].xCoords[Wt]),Ut.push(X[rt].yCoords[Wt]);mt.edges.push({startX:Pt[0],startY:Pt[1],endX:Ut[0],endY:Ut[1]})}else J[rt][Tt.id()]&&J[rt][Mt.id()]&&mt.edges.push({startX:J[rt][Tt.id()].getCenterX(),startY:J[rt][Tt.id()].getCenterY(),endX:J[rt][Mt.id()].getCenterX(),endY:J[rt][Mt.id()].getCenterY()})}),mt.nodes.length>0&&(K.push(mt),H.add(rt))}});var Nt=E.packComponents(K,w.randomize).shifts;if(w.quality=="draft")X.forEach(function(ot,rt){var vt=ot.xCoords.map(function(Lt){return Lt+Nt[rt].dx}),mt=ot.yCoords.map(function(Lt){return Lt+Nt[rt].dy});ot.xCoords=vt,ot.yCoords=mt});else{var St=0;H.forEach(function(ot){Object.keys(J[ot]).forEach(function(rt){var vt=J[ot][rt];vt.setCenter(vt.getCenterX()+Nt[St].dx,vt.getCenterY()+Nt[St].dy)}),St++})}}}else{var O=w.eles.boundingBox();if(m.push({x:O.x1+O.w/2,y:O.y1+O.h/2}),w.randomize){var x=h(w);X.push(x)}w.quality=="default"||w.quality=="proof"?(J.push(l(w,X[0])),i.relocateComponent(m[0],J[0],w)):i.relocateComponent(m[0],X[0],w)}var Q=L(function(rt,vt){if(w.quality=="default"||w.quality=="proof"){typeof rt=="number"&&(rt=vt);var mt=void 0,Lt=void 0,Et=rt.data("id");return J.forEach(function(Mt){Et in Mt&&(mt={x:Mt[Et].getRect().getCenterX(),y:Mt[Et].getRect().getCenterY()},Lt=Mt[Et])}),w.nodeDimensionsIncludeLabels&&(Lt.labelWidth&&(Lt.labelPosHorizontal=="left"?mt.x+=Lt.labelWidth/2:Lt.labelPosHorizontal=="right"&&(mt.x-=Lt.labelWidth/2)),Lt.labelHeight&&(Lt.labelPosVertical=="top"?mt.y+=Lt.labelHeight/2:Lt.labelPosVertical=="bottom"&&(mt.y-=Lt.labelHeight/2))),mt==null&&(mt={x:rt.position("x"),y:rt.position("y")}),{x:mt.x,y:mt.y}}else{var Tt=void 0;return X.forEach(function(Mt){var Rt=Mt.nodeIndexes.get(rt.id());Rt!=null&&(Tt={x:Mt.xCoords[Rt],y:Mt.yCoords[Rt]})}),Tt==null&&(Tt={x:rt.position("x"),y:rt.position("y")}),{x:Tt.x,y:Tt.y}}},"getPositions");if(w.quality=="default"||w.quality=="proof"||w.randomize){var Yt=i.calcParentsWithoutChildren(b,$),wt=$.filter(function(ot){return ot.css("display")=="none"});w.eles=$.not(wt),$.nodes().not(":parent").not(wt).layoutPositions(S,w,Q),Yt.length>0&&Yt.forEach(function(ot){ot.position(Q(ot))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),v})();n.exports=y}),657:((n,r,a)=>{var c=a(548),t=a(140).layoutBase.Matrix,u=a(140).layoutBase.SVD,i=L(function(h){var f=h.cy,l=h.eles,A=l.nodes(),y=l.nodes(":parent"),v=new Map,N=new Map,S=new Map,w=[],b=[],$=[],X=[],et=[],R=[],J=[],s=[],m=void 0,p=void 0,E=1e8,d=1e-9,O=h.piTol,x=h.samplingType,G=h.nodeSeparation,F=void 0,I=L(function(){for(var V=0,z=0,k=!1;z=gt;){q=j[gt++];for(var st=w[q],nt=0;ntit&&(it=et[at],pt=at)}return pt},"BFS"),tt=L(function(V){var z=void 0;if(V){z=Math.floor(Math.random()*p),m=z;for(var j=0;j=1)break;it=ut}for(var st=0;st=1)break;it=ut}for(var dt=0;dt0&&(z.isParent()?w[V].push(S.get(z.id())):w[V].push(z.id()))})});var Yt=L(function(V){var z=N.get(V),k=void 0;v.get(V).forEach(function(j){f.getElementById(j).isParent()?k=S.get(j):k=j,w[z].push(k),w[N.get(k)].push(V)})},"_loop"),wt=!0,ot=!1,rt=void 0;try{for(var vt=v.keys()[Symbol.iterator](),mt;!(wt=(mt=vt.next()).done);wt=!0){var Lt=mt.value;Yt(Lt)}}catch(W){ot=!0,rt=W}finally{try{!wt&&vt.return&&vt.return()}finally{if(ot)throw rt}}p=N.size;var Et=void 0;if(p>2){F=p{var c=a(212),t=L(function(i){i&&i("layout","fcose",c)},"register");typeof cytoscape<"u"&&t(cytoscape),n.exports=t}),140:(n=>{n.exports=D})},T={};function g(n){var r=T[n];if(r!==void 0)return r.exports;var a=T[n]={exports:{}};return C[n](a,a.exports,g),a.exports}L(g,"__webpack_require__");var o=g(579);return o})()})});var Le={L:"left",R:"right",T:"top",B:"bottom"},De={L:L(D=>`${D},${D/2} 0,${D} 0,0`,"L"),R:L(D=>`0,${D/2} ${D},0 ${D},${D}`,"R"),T:L(D=>`0,0 ${D},0 ${D/2},${D}`,"T"),B:L(D=>`${D/2},0 ${D},${D} 0,${D}`,"B")},ne={L:L((D,C)=>D-C+2,"L"),R:L((D,C)=>D-2,"R"),T:L((D,C)=>D-C+2,"T"),B:L((D,C)=>D-2,"B")},rr=L(function(D){return Ht(D)?D==="L"?"R":"L":D==="T"?"B":"T"},"getOppositeArchitectureDirection"),Ce=L(function(D){let C=D;return C==="L"||C==="R"||C==="T"||C==="B"},"isArchitectureDirection"),Ht=L(function(D){let C=D;return C==="L"||C==="R"},"isArchitectureDirectionX"),kt=L(function(D){let C=D;return C==="T"||C==="B"},"isArchitectureDirectionY"),ae=L(function(D,C){let T=Ht(D)&&kt(C),g=kt(D)&&Ht(C);return T||g},"isArchitectureDirectionXY"),ir=L(function(D){let C=D[0],T=D[1],g=Ht(C)&&kt(T),o=kt(C)&&Ht(T);return g||o},"isArchitecturePairXY"),Er=L(function(D){return D!=="LL"&&D!=="RR"&&D!=="TT"&&D!=="BB"},"isValidArchitectureDirectionPair"),oe=L(function(D,C){let T=`${D}${C}`;return Er(T)?T:void 0},"getArchitectureDirectionPair"),nr=L(function([D,C],T){let g=T[0],o=T[1];return Ht(g)?kt(o)?[D+(g==="L"?-1:1),C+(o==="T"?1:-1)]:[D+(g==="L"?-1:1),C]:Ht(o)?[D+(o==="L"?1:-1),C+(g==="T"?1:-1)]:[D,C+(g==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),ar=L(function(D){return D==="LT"||D==="TL"?[1,1]:D==="BL"||D==="LB"?[1,-1]:D==="BR"||D==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),or=L(function(D,C){return ae(D,C)?"bend":Ht(D)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),sr=L(function(D){return D.type==="service"},"isArchitectureService"),hr=L(function(D){return D.type==="junction"},"isArchitectureJunction"),pe=L(D=>D.data(),"edgeData"),Jt=L(D=>D.data(),"nodeData");var Tr=Ye.architecture,re=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.registeredIds={};this.elements={};this.setAccTitle=ze;this.getAccTitle=$e;this.setDiagramTitle=Je;this.getDiagramTitle=qe;this.getAccDescription=Ze;this.setAccDescription=ke;this.clear()}static{L(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},Be()}addService({id:C,icon:T,in:g,title:o,iconText:n}){if(this.registeredIds[C]!==void 0)throw new Error(`The service id [${C}] is already in use by another ${this.registeredIds[C]}`);if(g!==void 0){if(C===g)throw new Error(`The service [${C}] cannot be placed within itself`);if(this.registeredIds[g]===void 0)throw new Error(`The service [${C}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[g]==="node")throw new Error(`The service [${C}]'s parent is not a group`)}this.registeredIds[C]="node",this.nodes[C]={id:C,type:"service",icon:T,iconText:n,title:o,edges:[],in:g}}getServices(){return Object.values(this.nodes).filter(sr)}addJunction({id:C,in:T}){if(this.registeredIds[C]!==void 0)throw new Error(`The junction id [${C}] is already in use by another ${this.registeredIds[C]}`);if(T!==void 0){if(C===T)throw new Error(`The junction [${C}] cannot be placed within itself`);if(this.registeredIds[T]===void 0)throw new Error(`The junction [${C}]'s parent does not exist. Please make sure the parent is created before this junction`);if(this.registeredIds[T]==="node")throw new Error(`The junction [${C}]'s parent is not a group`)}this.registeredIds[C]="node",this.nodes[C]={id:C,type:"junction",edges:[],in:T}}getJunctions(){return Object.values(this.nodes).filter(hr)}getNodes(){return Object.values(this.nodes)}getNode(C){return this.nodes[C]??null}addGroup({id:C,icon:T,in:g,title:o}){if(this.registeredIds?.[C]!==void 0)throw new Error(`The group id [${C}] is already in use by another ${this.registeredIds[C]}`);if(g!==void 0){if(C===g)throw new Error(`The group [${C}] cannot be placed within itself`);if(this.registeredIds?.[g]===void 0)throw new Error(`The group [${C}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[g]==="node")throw new Error(`The group [${C}]'s parent is not a group`)}this.registeredIds[C]="group",this.groups[C]={id:C,icon:T,title:o,in:g}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:C,rhsId:T,lhsDir:g,rhsDir:o,lhsInto:n,rhsInto:r,lhsGroup:a,rhsGroup:c,title:t}){if(!Ce(g))throw new Error(`Invalid direction given for left hand side of edge ${C}--${T}. Expected (L,R,T,B) got ${String(g)}`);if(!Ce(o))throw new Error(`Invalid direction given for right hand side of edge ${C}--${T}. Expected (L,R,T,B) got ${String(o)}`);if(this.nodes[C]===void 0&&this.groups[C]===void 0)throw new Error(`The left-hand id [${C}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[T]===void 0&&this.groups[T]===void 0)throw new Error(`The right-hand id [${T}] does not yet exist. Please create the service/group before declaring an edge to it.`);let u=this.nodes[C].in,i=this.nodes[T].in;if(a&&u&&i&&u==i)throw new Error(`The left-hand id [${C}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(c&&u&&i&&u==i)throw new Error(`The right-hand id [${T}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let e={lhsId:C,lhsDir:g,lhsInto:n,lhsGroup:a,rhsId:T,rhsDir:o,rhsInto:r,rhsGroup:c,title:t};this.edges.push(e),this.nodes[C]&&this.nodes[T]&&(this.nodes[C].edges.push(this.edges[this.edges.length-1]),this.nodes[T].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(this.dataStructures===void 0){let C={},T=Object.entries(this.nodes).reduce((c,[t,u])=>(c[t]=u.edges.reduce((i,e)=>{let h=this.getNode(e.lhsId)?.in,f=this.getNode(e.rhsId)?.in;if(h&&f&&h!==f){let l=or(e.lhsDir,e.rhsDir);l!=="bend"&&(C[h]??={},C[h][f]=l,C[f]??={},C[f][h]=l)}if(e.lhsId===t){let l=oe(e.lhsDir,e.rhsDir);l&&(i[l]=e.rhsId)}else{let l=oe(e.rhsDir,e.lhsDir);l&&(i[l]=e.lhsId)}return i},{}),c),{}),g=Object.keys(T)[0],o={[g]:1},n=Object.keys(T).reduce((c,t)=>t===g?c:{...c,[t]:1},{}),r=L(c=>{let t={[c]:[0,0]},u=[c];for(;u.length>0;){let i=u.shift();if(i){o[i]=1,delete n[i];let e=T[i],[h,f]=t[i];Object.entries(e).forEach(([l,A])=>{o[A]||(t[A]=nr([h,f],l),u.push(A))})}}return t},"BFS"),a=[r(g)];for(;Object.keys(n).length>0;)a.push(r(Object.keys(n)[0]));this.dataStructures={adjList:T,spatialMaps:a,groupAlignments:C}}return this.dataStructures}setElementForId(C,T){this.elements[C]=T}getElementById(C){return this.elements[C]}getConfig(){return Ke({...Tr,...Ue().architecture})}getConfigField(C){return this.getConfig()[C]}};var Ar=L((D,C)=>{tr(D,C),D.groups.map(T=>C.addGroup(T)),D.services.map(T=>C.addService({...T,type:"service"})),D.junctions.map(T=>C.addJunction({...T,type:"junction"})),D.edges.map(T=>C.addEdge(T))},"populateDb"),we={parser:{yy:void 0},parse:L(async D=>{let C=await _e("architecture",D);fe.debug(C);let T=we.parser?.yy;if(!(T instanceof re))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Ar(C,T)},"parse")};var Nr=L(D=>` - .edge { - stroke-width: ${D.archEdgeWidth}; - stroke: ${D.archEdgeColor}; - fill: none; - } - - .arrow { - fill: ${D.archEdgeArrowColor}; - } - - .node-bkg { - fill: none; - stroke: ${D.archGroupBorderColor}; - stroke-width: ${D.archGroupBorderWidth}; - stroke-dasharray: 8; - } - .node-icon-text { - display: flex; - align-items: center; - } - - .node-icon-text > div { - color: #fff; - margin: 1px; - height: fit-content; - text-align: center; - overflow: hidden; - display: -webkit-box; - -webkit-box-orient: vertical; - } -`,"getStyles"),lr=Nr;var pr=mr(cr(),1);var ie=L(D=>`${D}`,"wrapIcon"),Kt={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:ie('')},server:{body:ie('')},disk:{body:ie('')},internet:{body:ie('')},cloud:{body:ie('')},unknown:He,blank:{body:ie("")}}};var fr=L(async function(D,C,T){let g=T.getConfigField("padding"),o=T.getConfigField("iconSize"),n=o/2,r=o/6,a=r/2;await Promise.all(C.edges().map(async c=>{let{source:t,sourceDir:u,sourceArrow:i,sourceGroup:e,target:h,targetDir:f,targetArrow:l,targetGroup:A,label:y}=pe(c),{x:v,y:N}=c[0].sourceEndpoint(),{x:S,y:w}=c[0].midpoint(),{x:b,y:$}=c[0].targetEndpoint(),X=g+4;if(e&&(Ht(u)?v+=u==="L"?-X:X:N+=u==="T"?-X:X+18),A&&(Ht(f)?b+=f==="L"?-X:X:$+=f==="T"?-X:X+18),!e&&T.getNode(t)?.type==="junction"&&(Ht(u)?v+=u==="L"?n:-n:N+=u==="T"?n:-n),!A&&T.getNode(h)?.type==="junction"&&(Ht(f)?b+=f==="L"?n:-n:$+=f==="T"?n:-n),c[0]._private.rscratch){let et=D.insert("g");if(et.insert("path").attr("d",`M ${v},${N} L ${S},${w} L${b},${$} `).attr("class","edge").attr("id",je(t,h,{prefix:"L"})),i){let R=Ht(u)?ne[u](v,r):v-a,J=kt(u)?ne[u](N,r):N-a;et.insert("polygon").attr("points",De[u](r)).attr("transform",`translate(${R},${J})`).attr("class","arrow")}if(l){let R=Ht(f)?ne[f](b,r):b-a,J=kt(f)?ne[f]($,r):$-a;et.insert("polygon").attr("points",De[f](r)).attr("transform",`translate(${R},${J})`).attr("class","arrow")}if(y){let R=ae(u,f)?"XY":Ht(u)?"X":"Y",J=0;R==="X"?J=Math.abs(v-b):R==="Y"?J=Math.abs(N-$)/1.5:J=Math.abs(v-b)/2;let s=et.append("g");if(await de(s,y,{useHtmlLabels:!1,width:J,classes:"architecture-service-label"},ge()),s.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),R==="X")s.attr("transform","translate("+S+", "+w+")");else if(R==="Y")s.attr("transform","translate("+S+", "+w+") rotate(-90)");else if(R==="XY"){let m=oe(u,f);if(m&&ir(m)){let p=s.node().getBoundingClientRect(),[E,d]=ar(m);s.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*E*d*45})`);let O=s.node().getBoundingClientRect();s.attr("transform",` - translate(${S}, ${w-p.height/2}) - translate(${E*O.width/2}, ${d*O.height/2}) - rotate(${-1*E*d*45}, 0, ${p.height/2}) - `)}}}}}))},"drawEdges"),ur=L(async function(D,C,T){let o=T.getConfigField("padding")*.75,n=T.getConfigField("fontSize"),a=T.getConfigField("iconSize")/2;await Promise.all(C.nodes().map(async c=>{let t=Jt(c);if(t.type==="group"){let{h:u,w:i,x1:e,y1:h}=c.boundingBox(),f=D.append("rect");f.attr("id",`group-${t.id}`).attr("x",e+a).attr("y",h+a).attr("width",i).attr("height",u).attr("class","node-bkg");let l=D.append("g"),A=e,y=h;if(t.icon){let v=l.append("g");v.html(`${await ue(t.icon,{height:o,width:o,fallbackPrefix:Kt.prefix})}`),v.attr("transform","translate("+(A+a+1)+", "+(y+a+1)+")"),A+=o,y+=n/2-1-2}if(t.label){let v=l.append("g");await de(v,t.label,{useHtmlLabels:!1,width:i,classes:"architecture-service-label"},ge()),v.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),v.attr("transform","translate("+(A+a+4)+", "+(y+a+2)+")")}T.setElementForId(t.id,f)}}))},"drawGroups"),gr=L(async function(D,C,T){let g=ge();for(let o of T){let n=C.append("g"),r=D.getConfigField("iconSize");if(o.title){let u=n.append("g");await de(u,o.title,{useHtmlLabels:!1,width:r*1.5,classes:"architecture-service-label"},g),u.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),u.attr("transform","translate("+r/2+", "+r+")")}let a=n.append("g");if(o.icon)a.html(`${await ue(o.icon,{height:r,width:r,fallbackPrefix:Kt.prefix})}`);else if(o.iconText){a.html(`${await ue("blank",{height:r,width:r,fallbackPrefix:Kt.prefix})}`);let e=a.append("g").append("foreignObject").attr("width",r).attr("height",r).append("div").attr("class","node-icon-text").attr("style",`height: ${r}px;`).append("div").html(Xe(o.iconText,g)),h=parseInt(window.getComputedStyle(e.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;e.attr("style",`-webkit-line-clamp: ${Math.floor((r-2)/h)};`)}else a.append("path").attr("class","node-bkg").attr("id","node-"+o.id).attr("d",`M0,${r} V5 Q0,0 5,0 H${r-5} Q${r},0 ${r},5 V${r} Z`);n.attr("id",`service-${o.id}`).attr("class","architecture-service");let{width:c,height:t}=n.node().getBBox();o.width=c,o.height=t,D.setElementForId(o.id,n)}return 0},"drawServices"),dr=L(function(D,C,T){T.forEach(g=>{let o=C.append("g"),n=D.getConfigField("iconSize");o.append("g").append("rect").attr("id","node-"+g.id).attr("fill-opacity","0").attr("width",n).attr("height",n),o.attr("class","architecture-junction");let{width:a,height:c}=o._groups[0][0].getBBox();o.width=a,o.height=c,D.setElementForId(g.id,o)})},"drawJunctions");We([{name:Kt.prefix,icons:Kt}]);Ne.use(pr.default);function Lr(D,C,T){D.forEach(g=>{C.add({group:"nodes",data:{type:"service",id:g.id,icon:g.icon,label:g.title,parent:g.in,width:T.getConfigField("iconSize"),height:T.getConfigField("iconSize")},classes:"node-service"})})}L(Lr,"addServices");function Dr(D,C,T){D.forEach(g=>{C.add({group:"nodes",data:{type:"junction",id:g.id,parent:g.in,width:T.getConfigField("iconSize"),height:T.getConfigField("iconSize")},classes:"node-junction"})})}L(Dr,"addJunctions");function Cr(D,C){C.nodes().map(T=>{let g=Jt(T);if(g.type==="group")return;g.x=T.position().x,g.y=T.position().y,D.getElementById(g.id).attr("transform","translate("+(g.x||0)+","+(g.y||0)+")")})}L(Cr,"positionNodes");function wr(D,C){D.forEach(T=>{C.add({group:"nodes",data:{type:"group",id:T.id,icon:T.icon,label:T.title,parent:T.in},classes:"node-group"})})}L(wr,"addGroups");function Mr(D,C){D.forEach(T=>{let{lhsId:g,rhsId:o,lhsInto:n,lhsGroup:r,rhsInto:a,lhsDir:c,rhsDir:t,rhsGroup:u,title:i}=T,e=ae(T.lhsDir,T.rhsDir)?"segments":"straight",h={id:`${g}-${o}`,label:i,source:g,sourceDir:c,sourceArrow:n,sourceGroup:r,sourceEndpoint:c==="L"?"0 50%":c==="R"?"100% 50%":c==="T"?"50% 0":"50% 100%",target:o,targetDir:t,targetArrow:a,targetGroup:u,targetEndpoint:t==="L"?"0 50%":t==="R"?"100% 50%":t==="T"?"50% 0":"50% 100%"};C.add({group:"edges",data:h,classes:e})})}L(Mr,"addEdges");function xr(D,C,T){let g=L((a,c)=>Object.entries(a).reduce((t,[u,i])=>{let e=0,h=Object.entries(i);if(h.length===1)return t[u]=h[0][1],t;for(let f=0;f{let c={},t={};return Object.entries(a).forEach(([u,[i,e]])=>{let h=D.getNode(u)?.in??"default";c[e]??={},c[e][h]??=[],c[e][h].push(u),t[i]??={},t[i][h]??=[],t[i][h].push(u)}),{horiz:Object.values(g(c,"horizontal")).filter(u=>u.length>1),vert:Object.values(g(t,"vertical")).filter(u=>u.length>1)}}),[n,r]=o.reduce(([a,c],{horiz:t,vert:u})=>[[...a,...t],[...c,...u]],[[],[]]);return{horizontal:n,vertical:r}}L(xr,"getAlignments");function Or(D,C){let T=[],g=L(n=>`${n[0]},${n[1]}`,"posToStr"),o=L(n=>n.split(",").map(r=>parseInt(r)),"strToPos");return D.forEach(n=>{let r=Object.fromEntries(Object.entries(n).map(([u,i])=>[g(i),u])),a=[g([0,0])],c={},t={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;a.length>0;){let u=a.shift();if(u){c[u]=1;let i=r[u];if(i){let e=o(u);Object.entries(t).forEach(([h,f])=>{let l=g([e[0]+f[0],e[1]+f[1]]),A=r[l];A&&!c[l]&&(a.push(l),T.push({[Le[h]]:A,[Le[rr(h)]]:i,gap:1.5*C.getConfigField("iconSize")}))})}}}}),T}L(Or,"getRelativeConstraints");function Rr(D,C,T,g,o,{spatialMaps:n,groupAlignments:r}){return new Promise(a=>{let c=Qe("body").append("div").attr("id","cy").attr("style","display:none"),t=Ne({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${o.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${o.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});c.remove(),wr(T,t),Lr(D,t,o),Dr(C,t,o),Mr(g,t);let u=xr(o,n,r),i=Or(n,o),e=t.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(h){let[f,l]=h.connectedNodes(),{parent:A}=Jt(f),{parent:y}=Jt(l);return A===y?1.5*o.getConfigField("iconSize"):.5*o.getConfigField("iconSize")},edgeElasticity(h){let[f,l]=h.connectedNodes(),{parent:A}=Jt(f),{parent:y}=Jt(l);return A===y?.45:.001},alignmentConstraint:u,relativePlacementConstraint:i});e.one("layoutstop",()=>{function h(f,l,A,y){let v,N,{x:S,y:w}=f,{x:b,y:$}=l;N=(y-w+(S-A)*(w-$)/(S-b))/Math.sqrt(1+Math.pow((w-$)/(S-b),2)),v=Math.sqrt(Math.pow(y-w,2)+Math.pow(A-S,2)-Math.pow(N,2));let X=Math.sqrt(Math.pow(b-S,2)+Math.pow($-w,2));v=v/X;let et=(b-S)*(y-w)-($-w)*(A-S);switch(!0){case et>=0:et=1;break;case et<0:et=-1;break}let R=(b-S)*(A-S)+($-w)*(y-w);switch(!0){case R>=0:R=1;break;case R<0:R=-1;break}return N=Math.abs(N)*et,v=v*R,{distances:N,weights:v}}L(h,"getSegmentWeights"),t.startBatch();for(let f of Object.values(t.edges()))if(f.data?.()){let{x:l,y:A}=f.source().position(),{x:y,y:v}=f.target().position();if(l!==y&&A!==v){let N=f.sourceEndpoint(),S=f.targetEndpoint(),{sourceDir:w}=pe(f),[b,$]=kt(w)?[N.x,S.y]:[S.x,N.y],{weights:X,distances:et}=h(N,S,b,$);f.style("segment-distances",et),f.style("segment-weights",X)}}t.endBatch(),e.run()}),e.run(),t.ready(h=>{fe.info("Ready",h),a(t)})})}L(Rr,"layoutArchitecture");var Ir=L(async(D,C,T,g)=>{let o=g.db,n=o.getServices(),r=o.getJunctions(),a=o.getGroups(),c=o.getEdges(),t=o.getDataStructures(),u=er(C),i=u.append("g");i.attr("class","architecture-edges");let e=u.append("g");e.attr("class","architecture-services");let h=u.append("g");h.attr("class","architecture-groups"),await gr(o,e,n),dr(o,e,r);let f=await Rr(n,r,a,c,o,t);await fr(i,f,o),await ur(h,f,o),Cr(o,f),Ve(void 0,u,o.getConfigField("padding"),o.getConfigField("useMaxWidth"))},"draw"),vr={draw:Ir};var Ci={parser:we,get db(){return new re},renderer:vr,styles:lr};export{Ci as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-UL44E2DR.mjs b/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-UL44E2DR.mjs new file mode 100644 index 0000000..1d1492e --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-UL44E2DR.mjs @@ -0,0 +1,36 @@ +import{a as tr}from"./chunk-JQRUD6KW.mjs";import{a as _e}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{a as er}from"./chunk-LRIF4GLE.mjs";import{a as Ne}from"./chunk-3SSMPTDK.mjs";import{a as He,b as We,c as ue,f as de}from"./chunk-INKRHTLW.mjs";import{o as Ke,s as je}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{A as Xe,P as Ve,S as ze,T as Be,U as $e,V as ke,W as Ze,X as Je,Y as qe,_ as ge,j as Ye,t as Ue}from"./chunk-67TQ5CYL.mjs";import{b as fe,h as Qe}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as L,b as Ae,d as mr}from"./chunk-AQ6EADP3.mjs";var xe=Ae((se,Me)=>{"use strict";L((function(C,T){typeof se=="object"&&typeof Me=="object"?Me.exports=T():typeof define=="function"&&define.amd?define([],T):typeof se=="object"?se.layoutBase=T():C.layoutBase=T()}),"webpackUniversalModuleDefinition")(se,function(){return(function(D){var C={};function T(u){if(C[u])return C[u].exports;var h=C[u]={i:u,l:!1,exports:{}};return D[u].call(h.exports,h,h.exports,T),h.l=!0,h.exports}return L(T,"__webpack_require__"),T.m=D,T.c=C,T.i=function(u){return u},T.d=function(u,h,a){T.o(u,h)||Object.defineProperty(u,h,{configurable:!1,enumerable:!0,get:a})},T.n=function(u){var h=u&&u.__esModule?L(function(){return u.default},"getDefault"):L(function(){return u},"getModuleExports");return T.d(h,"a",h),h},T.o=function(u,h){return Object.prototype.hasOwnProperty.call(u,h)},T.p="",T(T.s=28)})([(function(D,C,T){"use strict";function u(){}L(u,"LayoutConstants"),u.QUALITY=1,u.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,u.DEFAULT_INCREMENTAL=!1,u.DEFAULT_ANIMATION_ON_LAYOUT=!0,u.DEFAULT_ANIMATION_DURING_LAYOUT=!1,u.DEFAULT_ANIMATION_PERIOD=50,u.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,u.DEFAULT_GRAPH_MARGIN=15,u.NODE_DIMENSIONS_INCLUDE_LABELS=!1,u.SIMPLE_NODE_SIZE=40,u.SIMPLE_NODE_HALF_SIZE=u.SIMPLE_NODE_SIZE/2,u.EMPTY_COMPOUND_NODE_SIZE=40,u.MIN_EDGE_LENGTH=1,u.WORLD_BOUNDARY=1e6,u.INITIAL_WORLD_BOUNDARY=u.WORLD_BOUNDARY/1e3,u.WORLD_CENTER_X=1200,u.WORLD_CENTER_Y=900,D.exports=u}),(function(D,C,T){"use strict";var u=T(2),h=T(8),a=T(9);function i(c,t,f){u.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=c,this.target=t}L(i,"LEdge"),i.prototype=Object.create(u.prototype);for(var n in u)i[n]=u[n];i.prototype.getSource=function(){return this.source},i.prototype.getTarget=function(){return this.target},i.prototype.isInterGraph=function(){return this.isInterGraph},i.prototype.getLength=function(){return this.length},i.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},i.prototype.getBendpoints=function(){return this.bendpoints},i.prototype.getLca=function(){return this.lca},i.prototype.getSourceInLca=function(){return this.sourceInLca},i.prototype.getTargetInLca=function(){return this.targetInLca},i.prototype.getOtherEnd=function(c){if(this.source===c)return this.target;if(this.target===c)return this.source;throw"Node is not incident with this edge"},i.prototype.getOtherEndInGraph=function(c,t){for(var f=this.getOtherEnd(c),e=t.getGraphManager().getRoot();;){if(f.getOwner()==t)return f;if(f.getOwner()==e)break;f=f.getOwner().getParent()}return null},i.prototype.updateLength=function(){var c=new Array(4);this.isOverlapingSourceAndTarget=h.getIntersection(this.target.getRect(),this.source.getRect(),c),this.isOverlapingSourceAndTarget||(this.lengthX=c[0]-c[2],this.lengthY=c[1]-c[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},i.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},D.exports=i}),(function(D,C,T){"use strict";function u(h){this.vGraphObject=h}L(u,"LGraphObject"),D.exports=u}),(function(D,C,T){"use strict";var u=T(2),h=T(10),a=T(13),i=T(0),n=T(16),c=T(5);function t(e,r,l,g){l==null&&g==null&&(g=r),u.call(this,g),e.graphManager!=null&&(e=e.graphManager),this.estimatedSize=h.MIN_VALUE,this.inclusionTreeDepth=h.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=e,l!=null&&r!=null?this.rect=new a(r.x,r.y,l.width,l.height):this.rect=new a}L(t,"LNode"),t.prototype=Object.create(u.prototype);for(var f in u)t[f]=u[f];t.prototype.getEdges=function(){return this.edges},t.prototype.getChild=function(){return this.child},t.prototype.getOwner=function(){return this.owner},t.prototype.getWidth=function(){return this.rect.width},t.prototype.setWidth=function(e){this.rect.width=e},t.prototype.getHeight=function(){return this.rect.height},t.prototype.setHeight=function(e){this.rect.height=e},t.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},t.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},t.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},t.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},t.prototype.getRect=function(){return this.rect},t.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},t.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},t.prototype.setRect=function(e,r){this.rect.x=e.x,this.rect.y=e.y,this.rect.width=r.width,this.rect.height=r.height},t.prototype.setCenter=function(e,r){this.rect.x=e-this.rect.width/2,this.rect.y=r-this.rect.height/2},t.prototype.setLocation=function(e,r){this.rect.x=e,this.rect.y=r},t.prototype.moveBy=function(e,r){this.rect.x+=e,this.rect.y+=r},t.prototype.getEdgeListToNode=function(e){var r=[],l,g=this;return g.edges.forEach(function(s){if(s.target==e){if(s.source!=g)throw"Incorrect edge source!";r.push(s)}}),r},t.prototype.getEdgesBetween=function(e){var r=[],l,g=this;return g.edges.forEach(function(s){if(!(s.source==g||s.target==g))throw"Incorrect edge source and/or target";(s.target==e||s.source==e)&&r.push(s)}),r},t.prototype.getNeighborsList=function(){var e=new Set,r=this;return r.edges.forEach(function(l){if(l.source==r)e.add(l.target);else{if(l.target!=r)throw"Incorrect incidency!";e.add(l.source)}}),e},t.prototype.withChildren=function(){var e=new Set,r,l;if(e.add(this),this.child!=null)for(var g=this.child.getNodes(),s=0;sr?(this.rect.x-=(this.labelWidth-r)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(r+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(l+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>l?(this.rect.y-=(this.labelHeight-l)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(l+this.labelHeight))}}},t.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==h.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},t.prototype.transform=function(e){var r=this.rect.x;r>i.WORLD_BOUNDARY?r=i.WORLD_BOUNDARY:r<-i.WORLD_BOUNDARY&&(r=-i.WORLD_BOUNDARY);var l=this.rect.y;l>i.WORLD_BOUNDARY?l=i.WORLD_BOUNDARY:l<-i.WORLD_BOUNDARY&&(l=-i.WORLD_BOUNDARY);var g=new c(r,l),s=e.inverseTransformPoint(g);this.setLocation(s.x,s.y)},t.prototype.getLeft=function(){return this.rect.x},t.prototype.getRight=function(){return this.rect.x+this.rect.width},t.prototype.getTop=function(){return this.rect.y},t.prototype.getBottom=function(){return this.rect.y+this.rect.height},t.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},D.exports=t}),(function(D,C,T){"use strict";var u=T(0);function h(){}L(h,"FDLayoutConstants");for(var a in u)h[a]=u[a];h.MAX_ITERATIONS=2500,h.DEFAULT_EDGE_LENGTH=50,h.DEFAULT_SPRING_STRENGTH=.45,h.DEFAULT_REPULSION_STRENGTH=4500,h.DEFAULT_GRAVITY_STRENGTH=.4,h.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,h.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,h.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,h.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,h.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,h.COOLING_ADAPTATION_FACTOR=.33,h.ADAPTATION_LOWER_NODE_LIMIT=1e3,h.ADAPTATION_UPPER_NODE_LIMIT=5e3,h.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,h.MAX_NODE_DISPLACEMENT=h.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,h.MIN_REPULSION_DIST=h.DEFAULT_EDGE_LENGTH/10,h.CONVERGENCE_CHECK_PERIOD=100,h.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,h.MIN_EDGE_LENGTH=1,h.GRID_CALCULATION_CHECK_PERIOD=10,D.exports=h}),(function(D,C,T){"use strict";function u(h,a){h==null&&a==null?(this.x=0,this.y=0):(this.x=h,this.y=a)}L(u,"PointD"),u.prototype.getX=function(){return this.x},u.prototype.getY=function(){return this.y},u.prototype.setX=function(h){this.x=h},u.prototype.setY=function(h){this.y=h},u.prototype.getDifference=function(h){return new DimensionD(this.x-h.x,this.y-h.y)},u.prototype.getCopy=function(){return new u(this.x,this.y)},u.prototype.translate=function(h){return this.x+=h.width,this.y+=h.height,this},D.exports=u}),(function(D,C,T){"use strict";var u=T(2),h=T(10),a=T(0),i=T(7),n=T(3),c=T(1),t=T(13),f=T(12),e=T(11);function r(g,s,A){u.call(this,A),this.estimatedSize=h.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,s!=null&&s instanceof i?this.graphManager=s:s!=null&&s instanceof Layout&&(this.graphManager=s.graphManager)}L(r,"LGraph"),r.prototype=Object.create(u.prototype);for(var l in u)r[l]=u[l];r.prototype.getNodes=function(){return this.nodes},r.prototype.getEdges=function(){return this.edges},r.prototype.getGraphManager=function(){return this.graphManager},r.prototype.getParent=function(){return this.parent},r.prototype.getLeft=function(){return this.left},r.prototype.getRight=function(){return this.right},r.prototype.getTop=function(){return this.top},r.prototype.getBottom=function(){return this.bottom},r.prototype.isConnected=function(){return this.isConnected},r.prototype.add=function(g,s,A){if(s==null&&A==null){var y=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(y)>-1)throw"Node already in graph!";return y.owner=this,this.getNodes().push(y),y}else{var v=g;if(!(this.getNodes().indexOf(s)>-1&&this.getNodes().indexOf(A)>-1))throw"Source or target not in graph!";if(!(s.owner==A.owner&&s.owner==this))throw"Both owners must be this graph!";return s.owner!=A.owner?null:(v.source=s,v.target=A,v.isInterGraph=!1,this.getEdges().push(v),s.edges.push(v),A!=s&&A.edges.push(v),v)}},r.prototype.remove=function(g){var s=g;if(g instanceof n){if(s==null)throw"Node is null!";if(!(s.owner!=null&&s.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var A=s.edges.slice(),y,v=A.length,N=0;N-1&&P>-1))throw"Source and/or target doesn't know this edge!";y.source.edges.splice(w,1),y.target!=y.source&&y.target.edges.splice(P,1);var S=y.source.owner.getEdges().indexOf(y);if(S==-1)throw"Not in owner's edge list!";y.source.owner.getEdges().splice(S,1)}},r.prototype.updateLeftTop=function(){for(var g=h.MAX_VALUE,s=h.MAX_VALUE,A,y,v,N=this.getNodes(),S=N.length,w=0;wA&&(g=A),s>y&&(s=y)}return g==h.MAX_VALUE?null:(N[0].getParent().paddingLeft!=null?v=N[0].getParent().paddingLeft:v=this.margin,this.left=s-v,this.top=g-v,new f(this.left,this.top))},r.prototype.updateBounds=function(g){for(var s=h.MAX_VALUE,A=-h.MAX_VALUE,y=h.MAX_VALUE,v=-h.MAX_VALUE,N,S,w,P,V,Y=this.nodes,K=Y.length,I=0;IN&&(s=N),Aw&&(y=w),vN&&(s=N),Aw&&(y=w),v=this.nodes.length){var K=0;A.forEach(function(I){I.owner==g&&K++}),K==this.nodes.length&&(this.isConnected=!0)}},D.exports=r}),(function(D,C,T){"use strict";var u,h=T(1);function a(i){u=T(6),this.layout=i,this.graphs=[],this.edges=[]}L(a,"LGraphManager"),a.prototype.addRoot=function(){var i=this.layout.newGraph(),n=this.layout.newNode(null),c=this.add(i,n);return this.setRootGraph(c),this.rootGraph},a.prototype.add=function(i,n,c,t,f){if(c==null&&t==null&&f==null){if(i==null)throw"Graph is null!";if(n==null)throw"Parent node is null!";if(this.graphs.indexOf(i)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(i),i.parent!=null)throw"Already has a parent!";if(n.child!=null)throw"Already has a child!";return i.parent=n,n.child=i,i}else{f=c,t=n,c=i;var e=t.getOwner(),r=f.getOwner();if(!(e!=null&&e.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(r!=null&&r.getGraphManager()==this))throw"Target not in this graph mgr!";if(e==r)return c.isInterGraph=!1,e.add(c,t,f);if(c.isInterGraph=!0,c.source=t,c.target=f,this.edges.indexOf(c)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(c),!(c.source!=null&&c.target!=null))throw"Edge source and/or target is null!";if(!(c.source.edges.indexOf(c)==-1&&c.target.edges.indexOf(c)==-1))throw"Edge already in source and/or target incidency list!";return c.source.edges.push(c),c.target.edges.push(c),c}},a.prototype.remove=function(i){if(i instanceof u){var n=i;if(n.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(n==this.rootGraph||n.parent!=null&&n.parent.graphManager==this))throw"Invalid parent node!";var c=[];c=c.concat(n.getEdges());for(var t,f=c.length,e=0;e=i.getRight()?n[0]+=Math.min(i.getX()-a.getX(),a.getRight()-i.getRight()):i.getX()<=a.getX()&&i.getRight()>=a.getRight()&&(n[0]+=Math.min(a.getX()-i.getX(),i.getRight()-a.getRight())),a.getY()<=i.getY()&&a.getBottom()>=i.getBottom()?n[1]+=Math.min(i.getY()-a.getY(),a.getBottom()-i.getBottom()):i.getY()<=a.getY()&&i.getBottom()>=a.getBottom()&&(n[1]+=Math.min(a.getY()-i.getY(),i.getBottom()-a.getBottom()));var f=Math.abs((i.getCenterY()-a.getCenterY())/(i.getCenterX()-a.getCenterX()));i.getCenterY()===a.getCenterY()&&i.getCenterX()===a.getCenterX()&&(f=1);var e=f*n[0],r=n[1]/f;n[0]e)return n[0]=c,n[1]=l,n[2]=f,n[3]=Y,!1;if(tf)return n[0]=r,n[1]=t,n[2]=P,n[3]=e,!1;if(cf?(n[0]=s,n[1]=A,o=!0):(n[0]=g,n[1]=l,o=!0):d===p&&(c>f?(n[0]=r,n[1]=l,o=!0):(n[0]=y,n[1]=A,o=!0)),-E===p?f>c?(n[2]=V,n[3]=Y,m=!0):(n[2]=P,n[3]=w,m=!0):E===p&&(f>c?(n[2]=S,n[3]=w,m=!0):(n[2]=K,n[3]=Y,m=!0)),o&&m)return!1;if(c>f?t>e?(O=this.getCardinalDirection(d,p,4),x=this.getCardinalDirection(E,p,2)):(O=this.getCardinalDirection(-d,p,3),x=this.getCardinalDirection(-E,p,1)):t>e?(O=this.getCardinalDirection(-d,p,1),x=this.getCardinalDirection(-E,p,3)):(O=this.getCardinalDirection(d,p,2),x=this.getCardinalDirection(E,p,4)),!o)switch(O){case 1:b=l,G=c+-N/p,n[0]=G,n[1]=b;break;case 2:G=y,b=t+v*p,n[0]=G,n[1]=b;break;case 3:b=A,G=c+N/p,n[0]=G,n[1]=b;break;case 4:G=s,b=t+-v*p,n[0]=G,n[1]=b;break}if(!m)switch(x){case 1:J=w,R=f+-B/p,n[2]=R,n[3]=J;break;case 2:R=K,J=e+I*p,n[2]=R,n[3]=J;break;case 3:J=Y,R=f+B/p,n[2]=R,n[3]=J;break;case 4:R=V,J=e+-I*p,n[2]=R,n[3]=J;break}}return!1},h.getCardinalDirection=function(a,i,n){return a>i?n:1+n%4},h.getIntersection=function(a,i,n,c){if(c==null)return this.getIntersection2(a,i,n);var t=a.x,f=a.y,e=i.x,r=i.y,l=n.x,g=n.y,s=c.x,A=c.y,y=void 0,v=void 0,N=void 0,S=void 0,w=void 0,P=void 0,V=void 0,Y=void 0,K=void 0;return N=r-f,w=t-e,V=e*f-t*r,S=A-g,P=l-s,Y=s*g-l*A,K=N*P-S*w,K===0?null:(y=(w*Y-P*V)/K,v=(S*V-N*Y)/K,new u(y,v))},h.angleOfVector=function(a,i,n,c){var t=void 0;return a!==n?(t=Math.atan((c-i)/(n-a)),n=0){var A=(-l+Math.sqrt(l*l-4*r*g))/(2*r),y=(-l-Math.sqrt(l*l-4*r*g))/(2*r),v=null;return A>=0&&A<=1?[A]:y>=0&&y<=1?[y]:v}else return null},h.HALF_PI=.5*Math.PI,h.ONE_AND_HALF_PI=1.5*Math.PI,h.TWO_PI=2*Math.PI,h.THREE_PI=3*Math.PI,D.exports=h}),(function(D,C,T){"use strict";function u(){}L(u,"IMath"),u.sign=function(h){return h>0?1:h<0?-1:0},u.floor=function(h){return h<0?Math.ceil(h):Math.floor(h)},u.ceil=function(h){return h<0?Math.floor(h):Math.ceil(h)},D.exports=u}),(function(D,C,T){"use strict";function u(){}L(u,"Integer"),u.MAX_VALUE=2147483647,u.MIN_VALUE=-2147483648,D.exports=u}),(function(D,C,T){"use strict";var u=(function(){function t(f,e){for(var r=0;r"u"?"undefined":u(a);return a==null||i!="object"&&i!="function"},D.exports=h}),(function(D,C,T){"use strict";function u(l){if(Array.isArray(l)){for(var g=0,s=Array(l.length);g0&&g;){for(N.push(w[0]);N.length>0&&g;){var P=N[0];N.splice(0,1),v.add(P);for(var V=P.getEdges(),y=0;y-1&&w.splice(B,1)}v=new Set,S=new Map}}return l},r.prototype.createDummyNodesForBendpoints=function(l){for(var g=[],s=l.source,A=this.graphManager.calcLowestCommonAncestor(l.source,l.target),y=0;y0){for(var A=this.edgeToDummyNodes.get(s),y=0;y=0&&g.splice(Y,1);var K=S.getNeighborsList();K.forEach(function(o){if(s.indexOf(o)<0){var m=A.get(o),d=m-1;d==1&&P.push(o),A.set(o,d)}})}s=s.concat(P),(g.length==1||g.length==2)&&(y=!0,v=g[0])}return v},r.prototype.setGraphManager=function(l){this.graphManager=l},D.exports=r}),(function(D,C,T){"use strict";function u(){}L(u,"RandomSeed"),u.seed=1,u.x=0,u.nextDouble=function(){return u.x=Math.sin(u.seed++)*1e4,u.x-Math.floor(u.x)},D.exports=u}),(function(D,C,T){"use strict";var u=T(5);function h(a,i){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}L(h,"Transform"),h.prototype.getWorldOrgX=function(){return this.lworldOrgX},h.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},h.prototype.getWorldOrgY=function(){return this.lworldOrgY},h.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},h.prototype.getWorldExtX=function(){return this.lworldExtX},h.prototype.setWorldExtX=function(a){this.lworldExtX=a},h.prototype.getWorldExtY=function(){return this.lworldExtY},h.prototype.setWorldExtY=function(a){this.lworldExtY=a},h.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},h.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},h.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},h.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},h.prototype.getDeviceExtX=function(){return this.ldeviceExtX},h.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},h.prototype.getDeviceExtY=function(){return this.ldeviceExtY},h.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},h.prototype.transformX=function(a){var i=0,n=this.lworldExtX;return n!=0&&(i=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/n),i},h.prototype.transformY=function(a){var i=0,n=this.lworldExtY;return n!=0&&(i=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/n),i},h.prototype.inverseTransformX=function(a){var i=0,n=this.ldeviceExtX;return n!=0&&(i=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/n),i},h.prototype.inverseTransformY=function(a){var i=0,n=this.ldeviceExtY;return n!=0&&(i=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/n),i},h.prototype.inverseTransformPoint=function(a){var i=new u(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return i},D.exports=h}),(function(D,C,T){"use strict";function u(e){if(Array.isArray(e)){for(var r=0,l=Array(e.length);ra.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(e>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(e-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},t.prototype.calcSpringForces=function(){for(var e=this.getAllEdges(),r,l=0;l0&&arguments[0]!==void 0?arguments[0]:!0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,l,g,s,A,y=this.getAllNodes(),v;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&e&&this.updateGrid(),v=new Set,l=0;lN||v>N)&&(e.gravitationForceX=-this.gravityConstant*s,e.gravitationForceY=-this.gravityConstant*A)):(N=r.getEstimatedSize()*this.compoundGravityRangeFactor,(y>N||v>N)&&(e.gravitationForceX=-this.gravityConstant*s*this.compoundGravityConstant,e.gravitationForceY=-this.gravityConstant*A*this.compoundGravityConstant))},t.prototype.isConverged=function(){var e,r=!1;return this.totalIterations>this.maxIterations/3&&(r=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),e=this.totalDisplacement=y.length||N>=y[0].length)){for(var S=0;St},"_defaultCompareFunction")}]),n})();D.exports=i}),(function(D,C,T){"use strict";function u(){}L(u,"SVD"),u.svd=function(h){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=h.length,this.n=h[0].length;var a=Math.min(this.m,this.n);this.s=(function(xt){for(var At=[];xt-- >0;)At.push(0);return At})(Math.min(this.m+1,this.n)),this.U=(function(xt){var At=L(function $t(Rt){if(Rt.length==0)return 0;for(var Xt=[],zt=0;zt0;)At.push(0);return At})(this.n),n=(function(xt){for(var At=[];xt-- >0;)At.push(0);return At})(this.m),c=!0,t=!0,f=Math.min(this.m-1,this.n),e=Math.max(0,Math.min(this.n-2,this.m)),r=0;r=0;p--)if(this.s[p]!==0){for(var O=p+1;O=0;F--){if((function(xt,At){return xt&&At})(F0;){var Q=void 0,Yt=void 0;for(Q=m-2;Q>=-1&&Q!==-1;Q--)if(Math.abs(i[Q])<=St+Nt*(Math.abs(this.s[Q])+Math.abs(this.s[Q+1]))){i[Q]=0;break}if(Q===m-2)Yt=4;else{var wt=void 0;for(wt=m-1;wt>=Q&&wt!==Q;wt--){var ot=(wt!==m?Math.abs(i[wt]):0)+(wt!==Q+1?Math.abs(i[wt-1]):0);if(Math.abs(this.s[wt])<=St+Nt*ot){this.s[wt]=0;break}}wt===Q?Yt=3:wt===m-1?Yt=1:(Yt=2,Q=wt)}switch(Q++,Yt){case 1:{var rt=i[m-2];i[m-2]=0;for(var vt=m-2;vt>=Q;vt--){var mt=u.hypot(this.s[vt],rt),Lt=this.s[vt]/mt,Et=rt/mt;if(this.s[vt]=mt,vt!==Q&&(rt=-Et*i[vt-1],i[vt-1]=Lt*i[vt-1]),t)for(var Tt=0;Tt=this.s[Q+1]);){var ct=this.s[Q];if(this.s[Q]=this.s[Q+1],this.s[Q+1]=ct,t&&QMath.abs(a)?(i=a/h,i=Math.abs(h)*Math.sqrt(1+i*i)):a!=0?(i=h/a,i=Math.abs(a)*Math.sqrt(1+i*i)):i=0,i},D.exports=u}),(function(D,C,T){"use strict";var u=(function(){function i(n,c){for(var t=0;t2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,e=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;h(this,i),this.sequence1=n,this.sequence2=c,this.match_score=t,this.mismatch_penalty=f,this.gap_penalty=e,this.iMax=n.length+1,this.jMax=c.length+1,this.grid=new Array(this.iMax);for(var r=0;r=0;n--){var c=this.listeners[n];c.event===a&&c.callback===i&&this.listeners.splice(n,1)}},h.emit=function(a,i){for(var n=0;n{"use strict";L((function(C,T){typeof he=="object"&&typeof Oe=="object"?Oe.exports=T(xe()):typeof define=="function"&&define.amd?define(["layout-base"],T):typeof he=="object"?he.coseBase=T(xe()):C.coseBase=T(C.layoutBase)}),"webpackUniversalModuleDefinition")(he,function(D){return(()=>{"use strict";var C={45:((a,i,n)=>{var c={};c.layoutBase=n(551),c.CoSEConstants=n(806),c.CoSEEdge=n(767),c.CoSEGraph=n(880),c.CoSEGraphManager=n(578),c.CoSELayout=n(765),c.CoSENode=n(991),c.ConstraintHandler=n(902),a.exports=c}),806:((a,i,n)=>{var c=n(551).FDLayoutConstants;function t(){}L(t,"CoSEConstants");for(var f in c)t[f]=c[f];t.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,t.DEFAULT_RADIAL_SEPARATION=c.DEFAULT_EDGE_LENGTH,t.DEFAULT_COMPONENT_SEPERATION=60,t.TILE=!0,t.TILING_PADDING_VERTICAL=10,t.TILING_PADDING_HORIZONTAL=10,t.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,t.ENFORCE_CONSTRAINTS=!0,t.APPLY_LAYOUT=!0,t.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,t.TREE_REDUCTION_ON_INCREMENTAL=!0,t.PURE_INCREMENTAL=t.DEFAULT_INCREMENTAL,a.exports=t}),767:((a,i,n)=>{var c=n(551).FDLayoutEdge;function t(e,r,l){c.call(this,e,r,l)}L(t,"CoSEEdge"),t.prototype=Object.create(c.prototype);for(var f in c)t[f]=c[f];a.exports=t}),880:((a,i,n)=>{var c=n(551).LGraph;function t(e,r,l){c.call(this,e,r,l)}L(t,"CoSEGraph"),t.prototype=Object.create(c.prototype);for(var f in c)t[f]=c[f];a.exports=t}),578:((a,i,n)=>{var c=n(551).LGraphManager;function t(e){c.call(this,e)}L(t,"CoSEGraphManager"),t.prototype=Object.create(c.prototype);for(var f in c)t[f]=c[f];a.exports=t}),765:((a,i,n)=>{var c=n(551).FDLayout,t=n(578),f=n(880),e=n(991),r=n(767),l=n(806),g=n(902),s=n(551).FDLayoutConstants,A=n(551).LayoutConstants,y=n(551).Point,v=n(551).PointD,N=n(551).DimensionD,S=n(551).Layout,w=n(551).Integer,P=n(551).IGeometry,V=n(551).LGraph,Y=n(551).Transform,K=n(551).LinkedList;function I(){c.call(this),this.toBeTiled={},this.constraints={}}L(I,"CoSELayout"),I.prototype=Object.create(c.prototype);for(var B in c)I[B]=c[B];I.prototype.newGraphManager=function(){var o=new t(this);return this.graphManager=o,o},I.prototype.newGraph=function(o){return new f(null,this.graphManager,o)},I.prototype.newNode=function(o){return new e(this.graphManager,o)},I.prototype.newEdge=function(o){return new r(null,null,o)},I.prototype.initParameters=function(){c.prototype.initParameters.call(this,arguments),this.isSubLayout||(l.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=l.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=l.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=s.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=s.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=s.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},I.prototype.initSpringEmbedder=function(){c.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/s.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},I.prototype.layout=function(){var o=A.DEFAULT_CREATE_BENDS_AS_NEEDED;return o&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},I.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(l.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var m=new Set(this.getAllNodes()),d=this.nodesWithGravity.filter(function(O){return m.has(O)});this.graphManager.setAllNodesToApplyGravitation(d)}}else{var o=this.getFlatForest();if(o.length>0)this.positionNodesRadially(o);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var m=new Set(this.getAllNodes()),d=this.nodesWithGravity.filter(function(E){return m.has(E)});this.graphManager.setAllNodesToApplyGravitation(d),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),l.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},I.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%s.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var o=new Set(this.getAllNodes()),m=this.nodesWithGravity.filter(function(p){return o.has(p)});this.graphManager.setAllNodesToApplyGravitation(m),this.graphManager.updateBounds(),this.updateGrid(),l.PURE_INCREMENTAL?this.coolingFactor=s.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=s.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),l.PURE_INCREMENTAL?this.coolingFactor=s.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=s.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var d=!this.isTreeGrowing&&!this.isGrowthFinished,E=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(d,E),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},I.prototype.getPositionsData=function(){for(var o=this.graphManager.getAllNodes(),m={},d=0;d0&&this.updateDisplacements();for(var d=0;d0&&(E.fixedNodeWeight=O)}}if(this.constraints.relativePlacementConstraint){var x=new Map,G=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(M){o.fixedNodesOnHorizontal.add(M),o.fixedNodesOnVertical.add(M)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var b=this.constraints.alignmentConstraint.vertical,d=0;d=2*M.length/3;j--)X=Math.floor(Math.random()*(j+1)),H=M[j],M[j]=M[X],M[X]=H;return M},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(M){if(M.left){var X=x.has(M.left)?x.get(M.left):M.left,H=x.has(M.right)?x.get(M.right):M.right;o.nodesInRelativeHorizontal.includes(X)||(o.nodesInRelativeHorizontal.push(X),o.nodeToRelativeConstraintMapHorizontal.set(X,[]),o.dummyToNodeForVerticalAlignment.has(X)?o.nodeToTempPositionMapHorizontal.set(X,o.idToNodeMap.get(o.dummyToNodeForVerticalAlignment.get(X)[0]).getCenterX()):o.nodeToTempPositionMapHorizontal.set(X,o.idToNodeMap.get(X).getCenterX())),o.nodesInRelativeHorizontal.includes(H)||(o.nodesInRelativeHorizontal.push(H),o.nodeToRelativeConstraintMapHorizontal.set(H,[]),o.dummyToNodeForVerticalAlignment.has(H)?o.nodeToTempPositionMapHorizontal.set(H,o.idToNodeMap.get(o.dummyToNodeForVerticalAlignment.get(H)[0]).getCenterX()):o.nodeToTempPositionMapHorizontal.set(H,o.idToNodeMap.get(H).getCenterX())),o.nodeToRelativeConstraintMapHorizontal.get(X).push({right:H,gap:M.gap}),o.nodeToRelativeConstraintMapHorizontal.get(H).push({left:X,gap:M.gap})}else{var j=G.has(M.top)?G.get(M.top):M.top,ht=G.has(M.bottom)?G.get(M.bottom):M.bottom;o.nodesInRelativeVertical.includes(j)||(o.nodesInRelativeVertical.push(j),o.nodeToRelativeConstraintMapVertical.set(j,[]),o.dummyToNodeForHorizontalAlignment.has(j)?o.nodeToTempPositionMapVertical.set(j,o.idToNodeMap.get(o.dummyToNodeForHorizontalAlignment.get(j)[0]).getCenterY()):o.nodeToTempPositionMapVertical.set(j,o.idToNodeMap.get(j).getCenterY())),o.nodesInRelativeVertical.includes(ht)||(o.nodesInRelativeVertical.push(ht),o.nodeToRelativeConstraintMapVertical.set(ht,[]),o.dummyToNodeForHorizontalAlignment.has(ht)?o.nodeToTempPositionMapVertical.set(ht,o.idToNodeMap.get(o.dummyToNodeForHorizontalAlignment.get(ht)[0]).getCenterY()):o.nodeToTempPositionMapVertical.set(ht,o.idToNodeMap.get(ht).getCenterY())),o.nodeToRelativeConstraintMapVertical.get(j).push({bottom:ht,gap:M.gap}),o.nodeToRelativeConstraintMapVertical.get(ht).push({top:j,gap:M.gap})}});else{var J=new Map,et=new Map;this.constraints.relativePlacementConstraint.forEach(function(M){if(M.left){var X=x.has(M.left)?x.get(M.left):M.left,H=x.has(M.right)?x.get(M.right):M.right;J.has(X)?J.get(X).push(H):J.set(X,[H]),J.has(H)?J.get(H).push(X):J.set(H,[X])}else{var j=G.has(M.top)?G.get(M.top):M.top,ht=G.has(M.bottom)?G.get(M.bottom):M.bottom;et.has(j)?et.get(j).push(ht):et.set(j,[ht]),et.has(ht)?et.get(ht).push(j):et.set(ht,[j])}});var F=L(function(X,H){var j=[],ht=[],Nt=new K,St=new Set,Q=0;return X.forEach(function(Yt,wt){if(!St.has(wt)){j[Q]=[],ht[Q]=!1;var ot=wt;for(Nt.push(ot),St.add(ot),j[Q].push(ot);Nt.length!=0;){ot=Nt.shift(),H.has(ot)&&(ht[Q]=!0);var rt=X.get(ot);rt.forEach(function(vt){St.has(vt)||(Nt.push(vt),St.add(vt),j[Q].push(vt))})}Q++}}),{components:j,isFixed:ht}},"constructComponents"),tt=F(J,o.fixedNodesOnHorizontal);this.componentsOnHorizontal=tt.components,this.fixedComponentsOnHorizontal=tt.isFixed;var $=F(et,o.fixedNodesOnVertical);this.componentsOnVertical=$.components,this.fixedComponentsOnVertical=$.isFixed}}},I.prototype.updateDisplacements=function(){var o=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function($){var M=o.idToNodeMap.get($.nodeId);M.displacementX=0,M.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var m=this.constraints.alignmentConstraint.vertical,d=0;d1){var G;for(G=0;GE&&(E=Math.floor(x.y)),O=Math.floor(x.x+l.DEFAULT_COMPONENT_SEPERATION)}this.transform(new v(A.WORLD_CENTER_X-x.x/2,A.WORLD_CENTER_Y-x.y/2))},I.radialLayout=function(o,m,d){var E=Math.max(this.maxDiagonalInTree(o),l.DEFAULT_RADIAL_SEPARATION);I.branchRadialLayout(m,null,0,359,0,E);var p=V.calculateBounds(o),O=new Y;O.setDeviceOrgX(p.getMinX()),O.setDeviceOrgY(p.getMinY()),O.setWorldOrgX(d.x),O.setWorldOrgY(d.y);for(var x=0;x1;){var j=H[0];H.splice(0,1);var ht=F.indexOf(j);ht>=0&&F.splice(ht,1),M--,tt--}m!=null?X=(F.indexOf(H[0])+1)%M:X=0;for(var Nt=Math.abs(E-d)/tt,St=X;$!=tt;St=++St%M){var Q=F[St].getOtherEnd(o);if(Q!=m){var Yt=(d+$*Nt)%360,wt=(Yt+Nt)%360;I.branchRadialLayout(Q,o,Yt,wt,p+O,O),$++}}},I.maxDiagonalInTree=function(o){for(var m=w.MIN_VALUE,d=0;dm&&(m=p)}return m},I.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},I.prototype.groupZeroDegreeMembers=function(){var o=this,m={};this.memberGroups={},this.idToDummyNode={};for(var d=[],E=this.graphManager.getAllNodes(),p=0;p"u"&&(m[G]=[]),m[G]=m[G].concat(O)}Object.keys(m).forEach(function(b){if(m[b].length>1){var R="DummyCompound_"+b;o.memberGroups[R]=m[b];var J=m[b][0].getParent(),et=new e(o.graphManager);et.id=R,et.paddingLeft=J.paddingLeft||0,et.paddingRight=J.paddingRight||0,et.paddingBottom=J.paddingBottom||0,et.paddingTop=J.paddingTop||0,o.idToDummyNode[R]=et;var F=o.getGraphManager().add(o.newGraph(),et),tt=J.getChild();tt.add(et);for(var $=0;$p?(E.rect.x-=(E.labelWidth-p)/2,E.setWidth(E.labelWidth),E.labelMarginLeft=(E.labelWidth-p)/2):E.labelPosHorizontal=="right"&&E.setWidth(p+E.labelWidth)),E.labelHeight&&(E.labelPosVertical=="top"?(E.rect.y-=E.labelHeight,E.setHeight(O+E.labelHeight),E.labelMarginTop=E.labelHeight):E.labelPosVertical=="center"&&E.labelHeight>O?(E.rect.y-=(E.labelHeight-O)/2,E.setHeight(E.labelHeight),E.labelMarginTop=(E.labelHeight-O)/2):E.labelPosVertical=="bottom"&&E.setHeight(O+E.labelHeight))}})},I.prototype.repopulateCompounds=function(){for(var o=this.compoundOrder.length-1;o>=0;o--){var m=this.compoundOrder[o],d=m.id,E=m.paddingLeft,p=m.paddingTop,O=m.labelMarginLeft,x=m.labelMarginTop;this.adjustLocations(this.tiledMemberPack[d],m.rect.x,m.rect.y,E,p,O,x)}},I.prototype.repopulateZeroDegreeMembers=function(){var o=this,m=this.tiledZeroDegreePack;Object.keys(m).forEach(function(d){var E=o.idToDummyNode[d],p=E.paddingLeft,O=E.paddingTop,x=E.labelMarginLeft,G=E.labelMarginTop;o.adjustLocations(m[d],E.rect.x,E.rect.y,p,O,x,G)})},I.prototype.getToBeTiled=function(o){var m=o.id;if(this.toBeTiled[m]!=null)return this.toBeTiled[m];var d=o.getChild();if(d==null)return this.toBeTiled[m]=!1,!1;for(var E=d.getNodes(),p=0;p0)return this.toBeTiled[m]=!1,!1;if(O.getChild()==null){this.toBeTiled[O.id]=!1;continue}if(!this.getToBeTiled(O))return this.toBeTiled[m]=!1,!1}return this.toBeTiled[m]=!0,!0},I.prototype.getNodeDegree=function(o){for(var m=o.id,d=o.getEdges(),E=0,p=0;pJ&&(J=F.rect.height)}d+=J+o.verticalPadding}},I.prototype.tileCompoundMembers=function(o,m){var d=this;this.tiledMemberPack=[],Object.keys(o).forEach(function(E){var p=m[E];if(d.tiledMemberPack[E]=d.tileNodes(o[E],p.paddingLeft+p.paddingRight),p.rect.width=d.tiledMemberPack[E].width,p.rect.height=d.tiledMemberPack[E].height,p.setCenter(d.tiledMemberPack[E].centerX,d.tiledMemberPack[E].centerY),p.labelMarginLeft=0,p.labelMarginTop=0,l.NODE_DIMENSIONS_INCLUDE_LABELS){var O=p.rect.width,x=p.rect.height;p.labelWidth&&(p.labelPosHorizontal=="left"?(p.rect.x-=p.labelWidth,p.setWidth(O+p.labelWidth),p.labelMarginLeft=p.labelWidth):p.labelPosHorizontal=="center"&&p.labelWidth>O?(p.rect.x-=(p.labelWidth-O)/2,p.setWidth(p.labelWidth),p.labelMarginLeft=(p.labelWidth-O)/2):p.labelPosHorizontal=="right"&&p.setWidth(O+p.labelWidth)),p.labelHeight&&(p.labelPosVertical=="top"?(p.rect.y-=p.labelHeight,p.setHeight(x+p.labelHeight),p.labelMarginTop=p.labelHeight):p.labelPosVertical=="center"&&p.labelHeight>x?(p.rect.y-=(p.labelHeight-x)/2,p.setHeight(p.labelHeight),p.labelMarginTop=(p.labelHeight-x)/2):p.labelPosVertical=="bottom"&&p.setHeight(x+p.labelHeight))}})},I.prototype.tileNodes=function(o,m){var d=this.tileNodesByFavoringDim(o,m,!0),E=this.tileNodesByFavoringDim(o,m,!1),p=this.getOrgRatio(d),O=this.getOrgRatio(E),x;return OG&&(G=$.getWidth())});var b=O/p,R=x/p,J=Math.pow(d-E,2)+4*(b+E)*(R+d)*p,et=(E-d+Math.sqrt(J))/(2*(b+E)),F;m?(F=Math.ceil(et),F==et&&F++):F=Math.floor(et);var tt=F*(b+E)-E;return G>tt&&(tt=G),tt+=E*2,tt},I.prototype.tileNodesByFavoringDim=function(o,m,d){var E=l.TILING_PADDING_VERTICAL,p=l.TILING_PADDING_HORIZONTAL,O=l.TILING_COMPARE_BY,x={rows:[],rowWidth:[],rowHeight:[],width:0,height:m,verticalPadding:E,horizontalPadding:p,centerX:0,centerY:0};O&&(x.idealRowWidth=this.calcIdealRowWidth(o,d));var G=L(function(M){return M.rect.width*M.rect.height},"getNodeArea"),b=L(function(M,X){return G(X)-G(M)},"areaCompareFcn");o.sort(function($,M){var X=b;return x.idealRowWidth?(X=O,X($.id,M.id)):X($,M)});for(var R=0,J=0,et=0;et0&&(x+=o.horizontalPadding),o.rowWidth[d]=x,o.width0&&(G+=o.verticalPadding);var b=0;G>o.rowHeight[d]&&(b=o.rowHeight[d],o.rowHeight[d]=G,b=o.rowHeight[d]-b),o.height+=b,o.rows[d].push(m)},I.prototype.getShortestRowIndex=function(o){for(var m=-1,d=Number.MAX_VALUE,E=0;Ed&&(m=E,d=o.rowWidth[E]);return m},I.prototype.canAddHorizontal=function(o,m,d){if(o.idealRowWidth){var E=o.rows.length-1,p=o.rowWidth[E];return p+m+o.horizontalPadding<=o.idealRowWidth}var O=this.getShortestRowIndex(o);if(O<0)return!0;var x=o.rowWidth[O];if(x+o.horizontalPadding+m<=o.width)return!0;var G=0;o.rowHeight[O]0&&(G=d+o.verticalPadding-o.rowHeight[O]);var b;o.width-x>=m+o.horizontalPadding?b=(o.height+G)/(x+m+o.horizontalPadding):b=(o.height+G)/o.width,G=d+o.verticalPadding;var R;return o.widthO&&m!=d){E.splice(-1,1),o.rows[d].push(p),o.rowWidth[m]=o.rowWidth[m]-O,o.rowWidth[d]=o.rowWidth[d]+O,o.width=o.rowWidth[instance.getLongestRowIndex(o)];for(var x=Number.MIN_VALUE,G=0;Gx&&(x=E[G].height);m>0&&(x+=o.verticalPadding);var b=o.rowHeight[m]+o.rowHeight[d];o.rowHeight[m]=x,o.rowHeight[d]0)for(var tt=p;tt<=O;tt++)F[0]+=this.grid[tt][x-1].length+this.grid[tt][x].length-1;if(O0)for(var tt=x;tt<=G;tt++)F[3]+=this.grid[p-1][tt].length+this.grid[p][tt].length-1;for(var $=w.MAX_VALUE,M,X,H=0;H{var c=n(551).FDLayoutNode,t=n(551).IMath;function f(r,l,g,s){c.call(this,r,l,g,s)}L(f,"CoSENode"),f.prototype=Object.create(c.prototype);for(var e in c)f[e]=c[e];f.prototype.calculateDisplacement=function(){var r=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=r.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=r.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=r.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=r.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>r.coolingFactor*r.maxNodeDisplacement&&(this.displacementX=r.coolingFactor*r.maxNodeDisplacement*t.sign(this.displacementX)),Math.abs(this.displacementY)>r.coolingFactor*r.maxNodeDisplacement&&(this.displacementY=r.coolingFactor*r.maxNodeDisplacement*t.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},f.prototype.propogateDisplacementToChildren=function(r,l){for(var g=this.getChild().getNodes(),s,A=0;A{function c(g){if(Array.isArray(g)){for(var s=0,A=Array(g.length);s0){var dt=0;nt.forEach(function(ct){z=="horizontal"?(q.set(ct,y.has(ct)?v[y.get(ct)]:Z.get(ct)),dt+=q.get(ct)):(q.set(ct,y.has(ct)?N[y.get(ct)]:Z.get(ct)),dt+=q.get(ct))}),dt=dt/nt.length,st.forEach(function(ct){k.has(ct)||q.set(ct,dt)})}else{var at=0;st.forEach(function(ct){z=="horizontal"?at+=y.has(ct)?v[y.get(ct)]:Z.get(ct):at+=y.has(ct)?N[y.get(ct)]:Z.get(ct)}),at=at/st.length,st.forEach(function(ct){q.set(ct,at)})}});for(var it=L(function(){var nt=ut.shift(),dt=W.get(nt);dt.forEach(function(at){if(q.get(at.id)ct&&(ct=Xt),ztbt&&(bt=zt)}}catch(ee){Vt=!0,xt=ee}finally{try{!Ot&&At.return&&At.return()}finally{if(Vt)throw xt}}var ve=(dt+ct)/2-(at+bt)/2,qt=!0,jt=!1,_t=void 0;try{for(var Qt=st[Symbol.iterator](),ce;!(qt=(ce=Qt.next()).done);qt=!0){var te=ce.value;q.set(te,q.get(te)+ve)}}catch(ee){jt=!0,_t=ee}finally{try{!qt&&Qt.return&&Qt.return()}finally{if(jt)throw _t}}})}return q},"findAppropriatePositionForRelativePlacement"),B=L(function(W){var z=0,k=0,Z=0,_=0;if(W.forEach(function(lt){lt.left?v[y.get(lt.left)]-v[y.get(lt.right)]>=0?z++:k++:N[y.get(lt.top)]-N[y.get(lt.bottom)]>=0?Z++:_++}),z>k&&Z>_)for(var gt=0;gtk)for(var ft=0;ft_)for(var q=0;q1)s.fixedNodeConstraint.forEach(function(U,W){E[W]=[U.position.x,U.position.y],p[W]=[v[y.get(U.nodeId)],N[y.get(U.nodeId)]]}),O=!0;else if(s.alignmentConstraint)(function(){var U=0;if(s.alignmentConstraint.vertical){for(var W=s.alignmentConstraint.vertical,z=L(function(q){var lt=new Set;W[q].forEach(function(pt){lt.add(pt)});var ut=new Set([].concat(c(lt)).filter(function(pt){return G.has(pt)})),it=void 0;ut.size>0?it=v[y.get(ut.values().next().value)]:it=K(lt).x,W[q].forEach(function(pt){E[U]=[it,N[y.get(pt)]],p[U]=[v[y.get(pt)],N[y.get(pt)]],U++})},"_loop2"),k=0;k0?it=v[y.get(ut.values().next().value)]:it=K(lt).y,Z[q].forEach(function(pt){E[U]=[v[y.get(pt)],it],p[U]=[v[y.get(pt)],N[y.get(pt)]],U++})},"_loop3"),gt=0;gtet&&(et=J[tt].length,F=tt);if(et0){var Lt={x:0,y:0};s.fixedNodeConstraint.forEach(function(U,W){var z={x:v[y.get(U.nodeId)],y:N[y.get(U.nodeId)]},k=U.position,Z=Y(k,z);Lt.x+=Z.x,Lt.y+=Z.y}),Lt.x/=s.fixedNodeConstraint.length,Lt.y/=s.fixedNodeConstraint.length,v.forEach(function(U,W){v[W]+=Lt.x}),N.forEach(function(U,W){N[W]+=Lt.y}),s.fixedNodeConstraint.forEach(function(U){v[y.get(U.nodeId)]=U.position.x,N[y.get(U.nodeId)]=U.position.y})}if(s.alignmentConstraint){if(s.alignmentConstraint.vertical)for(var Et=s.alignmentConstraint.vertical,Tt=L(function(W){var z=new Set;Et[W].forEach(function(_){z.add(_)});var k=new Set([].concat(c(z)).filter(function(_){return G.has(_)})),Z=void 0;k.size>0?Z=v[y.get(k.values().next().value)]:Z=K(z).x,z.forEach(function(_){G.has(_)||(v[y.get(_)]=Z)})},"_loop4"),Mt=0;Mt0?Z=N[y.get(k.values().next().value)]:Z=K(z).y,z.forEach(function(_){G.has(_)||(N[y.get(_)]=Z)})},"_loop5"),Pt=0;Pt{a.exports=D})},T={};function u(a){var i=T[a];if(i!==void 0)return i.exports;var n=T[a]={exports:{}};return C[a](n,n.exports,u),n.exports}L(u,"__webpack_require__");var h=u(45);return h})()})});var cr=Ae((le,Re)=>{"use strict";L((function(C,T){typeof le=="object"&&typeof Re=="object"?Re.exports=T(Ie()):typeof define=="function"&&define.amd?define(["cose-base"],T):typeof le=="object"?le.cytoscapeFcose=T(Ie()):C.cytoscapeFcose=T(C.coseBase)}),"webpackUniversalModuleDefinition")(le,function(D){return(()=>{"use strict";var C={658:(a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(i){for(var n=arguments.length,c=Array(n>1?n-1:0),t=1;t{var c=(function(){function e(r,l){var g=[],s=!0,A=!1,y=void 0;try{for(var v=r[Symbol.iterator](),N;!(s=(N=v.next()).done)&&(g.push(N.value),!(l&&g.length===l));s=!0);}catch(S){A=!0,y=S}finally{try{!s&&v.return&&v.return()}finally{if(A)throw y}}return g}return L(e,"sliceIterator"),function(r,l){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return e(r,l);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),t=n(140).layoutBase.LinkedList,f={};f.getTopMostNodes=function(e){for(var r={},l=0;l0&&O.merge(R)});for(var x=0;x1){N=y[0],S=N.connectedEdges().length,y.forEach(function(p){p.connectedEdges().length0&&g.set("dummy"+(g.size+1),V),Y},f.relocateComponent=function(e,r,l){if(!l.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY,A=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY;if(l.quality=="draft"){var v=!0,N=!1,S=void 0;try{for(var w=r.nodeIndexes[Symbol.iterator](),P;!(v=(P=w.next()).done);v=!0){var V=P.value,Y=c(V,2),K=Y[0],I=Y[1],B=l.cy.getElementById(K);if(B){var o=B.boundingBox(),m=r.xCoords[I]-o.w/2,d=r.xCoords[I]+o.w/2,E=r.yCoords[I]-o.h/2,p=r.yCoords[I]+o.h/2;ms&&(s=d),Ey&&(y=p)}}}catch(R){N=!0,S=R}finally{try{!v&&w.return&&w.return()}finally{if(N)throw S}}var O=e.x-(s+g)/2,x=e.y-(y+A)/2;r.xCoords=r.xCoords.map(function(R){return R+O}),r.yCoords=r.yCoords.map(function(R){return R+x})}else{Object.keys(r).forEach(function(R){var J=r[R],et=J.getRect().x,F=J.getRect().x+J.getRect().width,tt=J.getRect().y,$=J.getRect().y+J.getRect().height;ets&&(s=F),tty&&(y=$)});var G=e.x-(s+g)/2,b=e.y-(y+A)/2;Object.keys(r).forEach(function(R){var J=r[R];J.setCenter(J.getCenterX()+G,J.getCenterY()+b)})}}},f.calcBoundingBox=function(e,r,l,g){for(var s=Number.MAX_SAFE_INTEGER,A=Number.MIN_SAFE_INTEGER,y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,N=void 0,S=void 0,w=void 0,P=void 0,V=e.descendants().not(":parent"),Y=V.length,K=0;KN&&(s=N),Aw&&(y=w),v{var c=n(548),t=n(140).CoSELayout,f=n(140).CoSENode,e=n(140).layoutBase.PointD,r=n(140).layoutBase.DimensionD,l=n(140).layoutBase.LayoutConstants,g=n(140).layoutBase.FDLayoutConstants,s=n(140).CoSEConstants,A=L(function(v,N){var S=v.cy,w=v.eles,P=w.nodes(),V=w.edges(),Y=void 0,K=void 0,I=void 0,B={};v.randomize&&(Y=N.nodeIndexes,K=N.xCoords,I=N.yCoords);var o=L(function(R){return typeof R=="function"},"isFn"),m=L(function(R,J){return o(R)?R(J):R},"optFn"),d=c.calcParentsWithoutChildren(S,w),E=L(function b(R,J,et,F){for(var tt=J.length,$=0;$0){var Nt=void 0;Nt=et.getGraphManager().add(et.newGraph(),H),b(Nt,X,et,F)}}},"processChildrenList"),p=L(function(R,J,et){for(var F=0,tt=0,$=0;$0?s.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=F/tt:o(v.idealEdgeLength)?s.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:s.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=v.idealEdgeLength,s.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,s.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),O=L(function(R,J){J.fixedNodeConstraint&&(R.constraints.fixedNodeConstraint=J.fixedNodeConstraint),J.alignmentConstraint&&(R.constraints.alignmentConstraint=J.alignmentConstraint),J.relativePlacementConstraint&&(R.constraints.relativePlacementConstraint=J.relativePlacementConstraint)},"processConstraints");v.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=v.nestingFactor),v.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=v.gravity),v.numIter!=null&&(s.MAX_ITERATIONS=g.MAX_ITERATIONS=v.numIter),v.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=v.gravityRange),v.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=v.gravityCompound),v.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=v.gravityRangeCompound),v.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=v.initialEnergyOnIncremental),v.tilingCompareBy!=null&&(s.TILING_COMPARE_BY=v.tilingCompareBy),v.quality=="proof"?l.QUALITY=2:l.QUALITY=0,s.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=l.NODE_DIMENSIONS_INCLUDE_LABELS=v.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=!v.randomize,s.ANIMATE=g.ANIMATE=l.ANIMATE=v.animate,s.TILE=v.tile,s.TILING_PADDING_VERTICAL=typeof v.tilingPaddingVertical=="function"?v.tilingPaddingVertical.call():v.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof v.tilingPaddingHorizontal=="function"?v.tilingPaddingHorizontal.call():v.tilingPaddingHorizontal,s.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=!0,s.PURE_INCREMENTAL=!v.randomize,l.DEFAULT_UNIFORM_LEAF_NODE_SIZES=v.uniformNodeDimensions,v.step=="transformed"&&(s.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,s.ENFORCE_CONSTRAINTS=!1,s.APPLY_LAYOUT=!1),v.step=="enforced"&&(s.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,s.ENFORCE_CONSTRAINTS=!0,s.APPLY_LAYOUT=!1),v.step=="cose"&&(s.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,s.ENFORCE_CONSTRAINTS=!1,s.APPLY_LAYOUT=!0),v.step=="all"&&(v.randomize?s.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:s.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,s.ENFORCE_CONSTRAINTS=!0,s.APPLY_LAYOUT=!0),v.fixedNodeConstraint||v.alignmentConstraint||v.relativePlacementConstraint?s.TREE_REDUCTION_ON_INCREMENTAL=!1:s.TREE_REDUCTION_ON_INCREMENTAL=!0;var x=new t,G=x.newGraphManager();return E(G.addRoot(),c.getTopMostNodes(P),x,v),p(x,G,V),O(x,v),x.runLayout(),B},"coseLayout");a.exports={coseLayout:A}}),212:((a,i,n)=>{var c=(function(){function v(N,S){for(var w=0;w0)if(p){var G=e.getTopMostNodes(w.eles.nodes());if(o=e.connectComponents(P,w.eles,G),o.forEach(function(ot){var rt=ot.boundingBox();m.push({x:rt.x1+rt.w/2,y:rt.y1+rt.h/2})}),w.randomize&&o.forEach(function(ot){w.eles=ot,Y.push(l(w))}),w.quality=="default"||w.quality=="proof"){var b=P.collection();if(w.tile){var R=new Map,J=[],et=[],F=0,tt={nodeIndexes:R,xCoords:J,yCoords:et},$=[];if(o.forEach(function(ot,rt){ot.edges().length==0&&(ot.nodes().forEach(function(vt,mt){b.merge(ot.nodes()[mt]),vt.isParent()||(tt.nodeIndexes.set(ot.nodes()[mt].id(),F++),tt.xCoords.push(ot.nodes()[0].position().x),tt.yCoords.push(ot.nodes()[0].position().y))}),$.push(rt))}),b.length>1){var M=b.boundingBox();m.push({x:M.x1+M.w/2,y:M.y1+M.h/2}),o.push(b),Y.push(tt);for(var X=$.length-1;X>=0;X--)o.splice($[X],1),Y.splice($[X],1),m.splice($[X],1)}}o.forEach(function(ot,rt){w.eles=ot,B.push(s(w,Y[rt])),e.relocateComponent(m[rt],B[rt],w)})}else o.forEach(function(ot,rt){e.relocateComponent(m[rt],Y[rt],w)});var H=new Set;if(o.length>1){var j=[],ht=V.filter(function(ot){return ot.css("display")=="none"});o.forEach(function(ot,rt){var vt=void 0;if(w.quality=="draft"&&(vt=Y[rt].nodeIndexes),ot.nodes().not(ht).length>0){var mt={};mt.edges=[],mt.nodes=[];var Lt=void 0;ot.nodes().not(ht).forEach(function(Et){if(w.quality=="draft")if(!Et.isParent())Lt=vt.get(Et.id()),mt.nodes.push({x:Y[rt].xCoords[Lt]-Et.boundingbox().w/2,y:Y[rt].yCoords[Lt]-Et.boundingbox().h/2,width:Et.boundingbox().w,height:Et.boundingbox().h});else{var Tt=e.calcBoundingBox(Et,Y[rt].xCoords,Y[rt].yCoords,vt);mt.nodes.push({x:Tt.topLeftX,y:Tt.topLeftY,width:Tt.width,height:Tt.height})}else B[rt][Et.id()]&&mt.nodes.push({x:B[rt][Et.id()].getLeft(),y:B[rt][Et.id()].getTop(),width:B[rt][Et.id()].getWidth(),height:B[rt][Et.id()].getHeight()})}),ot.edges().forEach(function(Et){var Tt=Et.source(),Mt=Et.target();if(Tt.css("display")!="none"&&Mt.css("display")!="none")if(w.quality=="draft"){var It=vt.get(Tt.id()),Wt=vt.get(Mt.id()),Pt=[],Ut=[];if(Tt.isParent()){var Ft=e.calcBoundingBox(Tt,Y[rt].xCoords,Y[rt].yCoords,vt);Pt.push(Ft.topLeftX+Ft.width/2),Pt.push(Ft.topLeftY+Ft.height/2)}else Pt.push(Y[rt].xCoords[It]),Pt.push(Y[rt].yCoords[It]);if(Mt.isParent()){var U=e.calcBoundingBox(Mt,Y[rt].xCoords,Y[rt].yCoords,vt);Ut.push(U.topLeftX+U.width/2),Ut.push(U.topLeftY+U.height/2)}else Ut.push(Y[rt].xCoords[Wt]),Ut.push(Y[rt].yCoords[Wt]);mt.edges.push({startX:Pt[0],startY:Pt[1],endX:Ut[0],endY:Ut[1]})}else B[rt][Tt.id()]&&B[rt][Mt.id()]&&mt.edges.push({startX:B[rt][Tt.id()].getCenterX(),startY:B[rt][Tt.id()].getCenterY(),endX:B[rt][Mt.id()].getCenterX(),endY:B[rt][Mt.id()].getCenterY()})}),mt.nodes.length>0&&(j.push(mt),H.add(rt))}});var Nt=E.packComponents(j,w.randomize).shifts;if(w.quality=="draft")Y.forEach(function(ot,rt){var vt=ot.xCoords.map(function(Lt){return Lt+Nt[rt].dx}),mt=ot.yCoords.map(function(Lt){return Lt+Nt[rt].dy});ot.xCoords=vt,ot.yCoords=mt});else{var St=0;H.forEach(function(ot){Object.keys(B[ot]).forEach(function(rt){var vt=B[ot][rt];vt.setCenter(vt.getCenterX()+Nt[St].dx,vt.getCenterY()+Nt[St].dy)}),St++})}}}else{var O=w.eles.boundingBox();if(m.push({x:O.x1+O.w/2,y:O.y1+O.h/2}),w.randomize){var x=l(w);Y.push(x)}w.quality=="default"||w.quality=="proof"?(B.push(s(w,Y[0])),e.relocateComponent(m[0],B[0],w)):e.relocateComponent(m[0],Y[0],w)}var Q=L(function(rt,vt){if(w.quality=="default"||w.quality=="proof"){typeof rt=="number"&&(rt=vt);var mt=void 0,Lt=void 0,Et=rt.data("id");return B.forEach(function(Mt){Et in Mt&&(mt={x:Mt[Et].getRect().getCenterX(),y:Mt[Et].getRect().getCenterY()},Lt=Mt[Et])}),w.nodeDimensionsIncludeLabels&&(Lt.labelWidth&&(Lt.labelPosHorizontal=="left"?mt.x+=Lt.labelWidth/2:Lt.labelPosHorizontal=="right"&&(mt.x-=Lt.labelWidth/2)),Lt.labelHeight&&(Lt.labelPosVertical=="top"?mt.y+=Lt.labelHeight/2:Lt.labelPosVertical=="bottom"&&(mt.y-=Lt.labelHeight/2))),mt==null&&(mt={x:rt.position("x"),y:rt.position("y")}),{x:mt.x,y:mt.y}}else{var Tt=void 0;return Y.forEach(function(Mt){var It=Mt.nodeIndexes.get(rt.id());It!=null&&(Tt={x:Mt.xCoords[It],y:Mt.yCoords[It]})}),Tt==null&&(Tt={x:rt.position("x"),y:rt.position("y")}),{x:Tt.x,y:Tt.y}}},"getPositions");if(w.quality=="default"||w.quality=="proof"||w.randomize){var Yt=e.calcParentsWithoutChildren(P,V),wt=V.filter(function(ot){return ot.css("display")=="none"});w.eles=V.not(wt),V.nodes().not(":parent").not(wt).layoutPositions(S,w,Q),Yt.length>0&&Yt.forEach(function(ot){ot.position(Q(ot))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),v})();a.exports=y}),657:((a,i,n)=>{var c=n(548),t=n(140).layoutBase.Matrix,f=n(140).layoutBase.SVD,e=L(function(l){var g=l.cy,s=l.eles,A=s.nodes(),y=s.nodes(":parent"),v=new Map,N=new Map,S=new Map,w=[],P=[],V=[],Y=[],K=[],I=[],B=[],o=[],m=void 0,d=void 0,E=1e8,p=1e-9,O=l.piTol,x=l.samplingType,G=l.nodeSeparation,b=void 0,R=L(function(){for(var z=0,k=0,Z=!1;k=gt;){q=_[gt++];for(var st=w[q],nt=0;ntit&&(it=K[at],pt=at)}return pt},"BFS"),et=L(function(z){var k=void 0;if(z){k=Math.floor(Math.random()*d),m=k;for(var _=0;_=1)break;it=ut}for(var st=0;st=1)break;it=ut}for(var dt=0;dt0&&(k.isParent()?w[z].push(S.get(k.id())):w[z].push(k.id()))})});var Yt=L(function(z){var k=N.get(z),Z=void 0;v.get(z).forEach(function(_){g.getElementById(_).isParent()?Z=S.get(_):Z=_,w[k].push(Z),w[N.get(Z)].push(z)})},"_loop"),wt=!0,ot=!1,rt=void 0;try{for(var vt=v.keys()[Symbol.iterator](),mt;!(wt=(mt=vt.next()).done);wt=!0){var Lt=mt.value;Yt(Lt)}}catch(W){ot=!0,rt=W}finally{try{!wt&&vt.return&&vt.return()}finally{if(ot)throw rt}}d=N.size;var Et=void 0;if(d>2){b=d{var c=n(212),t=L(function(e){e&&e("layout","fcose",c)},"register");typeof cytoscape<"u"&&t(cytoscape),a.exports=t}),140:(a=>{a.exports=D})},T={};function u(a){var i=T[a];if(i!==void 0)return i.exports;var n=T[a]={exports:{}};return C[a](n,n.exports,u),n.exports}L(u,"__webpack_require__");var h=u(579);return h})()})});var Le={L:"left",R:"right",T:"top",B:"bottom"},De={L:L(D=>`${D},${D/2} 0,${D} 0,0`,"L"),R:L(D=>`0,${D/2} ${D},0 ${D},${D}`,"R"),T:L(D=>`0,0 ${D},0 ${D/2},${D}`,"T"),B:L(D=>`${D/2},0 ${D},${D} 0,${D}`,"B")},ne={L:L((D,C)=>D-C+2,"L"),R:L((D,C)=>D-2,"R"),T:L((D,C)=>D-C+2,"T"),B:L((D,C)=>D-2,"B")},rr=L(function(D){return Ht(D)?D==="L"?"R":"L":D==="T"?"B":"T"},"getOppositeArchitectureDirection"),Ce=L(function(D){let C=D;return C==="L"||C==="R"||C==="T"||C==="B"},"isArchitectureDirection"),Ht=L(function(D){let C=D;return C==="L"||C==="R"},"isArchitectureDirectionX"),kt=L(function(D){let C=D;return C==="T"||C==="B"},"isArchitectureDirectionY"),ae=L(function(D,C){let T=Ht(D)&&kt(C),u=kt(D)&&Ht(C);return T||u},"isArchitectureDirectionXY"),ir=L(function(D){let C=D[0],T=D[1],u=Ht(C)&&kt(T),h=kt(C)&&Ht(T);return u||h},"isArchitecturePairXY"),Er=L(function(D){return D!=="LL"&&D!=="RR"&&D!=="TT"&&D!=="BB"},"isValidArchitectureDirectionPair"),oe=L(function(D,C){let T=`${D}${C}`;return Er(T)?T:void 0},"getArchitectureDirectionPair"),nr=L(function([D,C],T){let u=T[0],h=T[1];return Ht(u)?kt(h)?[D+(u==="L"?-1:1),C+(h==="T"?1:-1)]:[D+(u==="L"?-1:1),C]:Ht(h)?[D+(h==="L"?1:-1),C+(u==="T"?1:-1)]:[D,C+(u==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),ar=L(function(D){return D==="LT"||D==="TL"?[1,1]:D==="BL"||D==="LB"?[1,-1]:D==="BR"||D==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),or=L(function(D,C){return ae(D,C)?"bend":Ht(D)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),sr=L(function(D){return D.type==="service"},"isArchitectureService"),hr=L(function(D){return D.type==="junction"},"isArchitectureJunction"),pe=L(D=>D.data(),"edgeData"),Jt=L(D=>D.data(),"nodeData");var Tr=Ye.architecture,re=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.registeredIds={};this.elements={};this.diagramId="";this.setAccTitle=Be;this.getAccTitle=$e;this.setDiagramTitle=Je;this.getDiagramTitle=qe;this.getAccDescription=Ze;this.setAccDescription=ke;this.clear()}static{L(this,"ArchitectureDB")}setDiagramId(C){this.diagramId=C}getDiagramId(){return this.diagramId}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},this.diagramId="",ze()}addService({id:C,icon:T,in:u,title:h,iconText:a}){if(this.registeredIds[C]!==void 0)throw new Error(`The service id [${C}] is already in use by another ${this.registeredIds[C]}`);if(u!==void 0){if(C===u)throw new Error(`The service [${C}] cannot be placed within itself`);if(this.registeredIds[u]===void 0)throw new Error(`The service [${C}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[u]==="node")throw new Error(`The service [${C}]'s parent is not a group`)}this.registeredIds[C]="node",this.nodes[C]={id:C,type:"service",icon:T,iconText:a,title:h,edges:[],in:u}}getServices(){return Object.values(this.nodes).filter(sr)}addJunction({id:C,in:T}){if(this.registeredIds[C]!==void 0)throw new Error(`The junction id [${C}] is already in use by another ${this.registeredIds[C]}`);if(T!==void 0){if(C===T)throw new Error(`The junction [${C}] cannot be placed within itself`);if(this.registeredIds[T]===void 0)throw new Error(`The junction [${C}]'s parent does not exist. Please make sure the parent is created before this junction`);if(this.registeredIds[T]==="node")throw new Error(`The junction [${C}]'s parent is not a group`)}this.registeredIds[C]="node",this.nodes[C]={id:C,type:"junction",edges:[],in:T}}getJunctions(){return Object.values(this.nodes).filter(hr)}getNodes(){return Object.values(this.nodes)}getNode(C){return this.nodes[C]??null}addGroup({id:C,icon:T,in:u,title:h}){if(this.registeredIds?.[C]!==void 0)throw new Error(`The group id [${C}] is already in use by another ${this.registeredIds[C]}`);if(u!==void 0){if(C===u)throw new Error(`The group [${C}] cannot be placed within itself`);if(this.registeredIds?.[u]===void 0)throw new Error(`The group [${C}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[u]==="node")throw new Error(`The group [${C}]'s parent is not a group`)}this.registeredIds[C]="group",this.groups[C]={id:C,icon:T,title:h,in:u}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:C,rhsId:T,lhsDir:u,rhsDir:h,lhsInto:a,rhsInto:i,lhsGroup:n,rhsGroup:c,title:t}){if(!Ce(u))throw new Error(`Invalid direction given for left hand side of edge ${C}--${T}. Expected (L,R,T,B) got ${String(u)}`);if(!Ce(h))throw new Error(`Invalid direction given for right hand side of edge ${C}--${T}. Expected (L,R,T,B) got ${String(h)}`);if(this.nodes[C]===void 0&&this.groups[C]===void 0)throw new Error(`The left-hand id [${C}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[T]===void 0&&this.groups[T]===void 0)throw new Error(`The right-hand id [${T}] does not yet exist. Please create the service/group before declaring an edge to it.`);let f=this.nodes[C].in,e=this.nodes[T].in;if(n&&f&&e&&f==e)throw new Error(`The left-hand id [${C}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(c&&f&&e&&f==e)throw new Error(`The right-hand id [${T}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let r={lhsId:C,lhsDir:u,lhsInto:a,lhsGroup:n,rhsId:T,rhsDir:h,rhsInto:i,rhsGroup:c,title:t};this.edges.push(r),this.nodes[C]&&this.nodes[T]&&(this.nodes[C].edges.push(this.edges[this.edges.length-1]),this.nodes[T].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(this.dataStructures===void 0){let C={},T=Object.entries(this.nodes).reduce((c,[t,f])=>(c[t]=f.edges.reduce((e,r)=>{let l=this.getNode(r.lhsId)?.in,g=this.getNode(r.rhsId)?.in;if(l&&g&&l!==g){let s=or(r.lhsDir,r.rhsDir);s!=="bend"&&(C[l]??={},C[l][g]=s,C[g]??={},C[g][l]=s)}if(r.lhsId===t){let s=oe(r.lhsDir,r.rhsDir);s&&(e[s]=r.rhsId)}else{let s=oe(r.rhsDir,r.lhsDir);s&&(e[s]=r.lhsId)}return e},{}),c),{}),u=Object.keys(T)[0],h={[u]:1},a=Object.keys(T).reduce((c,t)=>t===u?c:{...c,[t]:1},{}),i=L(c=>{let t={[c]:[0,0]},f=[c];for(;f.length>0;){let e=f.shift();if(e){h[e]=1,delete a[e];let r=T[e],[l,g]=t[e];Object.entries(r).forEach(([s,A])=>{h[A]||(t[A]=nr([l,g],s),f.push(A))})}}return t},"BFS"),n=[i(u)];for(;Object.keys(a).length>0;)n.push(i(Object.keys(a)[0]));this.dataStructures={adjList:T,spatialMaps:n,groupAlignments:C}}return this.dataStructures}setElementForId(C,T){this.elements[C]=T}getElementById(C){return this.elements[C]}getConfig(){return Ke({...Tr,...Ue().architecture})}getConfigField(C){return this.getConfig()[C]}};var Ar=L((D,C)=>{tr(D,C),D.groups.map(T=>C.addGroup(T)),D.services.map(T=>C.addService({...T,type:"service"})),D.junctions.map(T=>C.addJunction({...T,type:"junction"})),D.edges.map(T=>C.addEdge(T))},"populateDb"),we={parser:{yy:void 0},parse:L(async D=>{let C=await _e("architecture",D);fe.debug(C);let T=we.parser?.yy;if(!(T instanceof re))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Ar(C,T)},"parse")};var Nr=L(D=>` + .edge { + stroke-width: ${D.archEdgeWidth}; + stroke: ${D.archEdgeColor}; + fill: none; + } + + .arrow { + fill: ${D.archEdgeArrowColor}; + } + + .node-bkg { + fill: none; + stroke: ${D.archGroupBorderColor}; + stroke-width: ${D.archGroupBorderWidth}; + stroke-dasharray: 8; + } + .node-icon-text { + display: flex; + align-items: center; + } + + .node-icon-text > div { + color: #fff; + margin: 1px; + height: fit-content; + text-align: center; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + } +`,"getStyles"),lr=Nr;var pr=mr(cr(),1);var ie=L(D=>`${D}`,"wrapIcon"),Kt={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:ie('')},server:{body:ie('')},disk:{body:ie('')},internet:{body:ie('')},cloud:{body:ie('')},unknown:He,blank:{body:ie("")}}};var fr=L(async function(D,C,T,u){let h=T.getConfigField("padding"),a=T.getConfigField("iconSize"),i=a/2,n=a/6,c=n/2;await Promise.all(C.edges().map(async t=>{let{source:f,sourceDir:e,sourceArrow:r,sourceGroup:l,target:g,targetDir:s,targetArrow:A,targetGroup:y,label:v}=pe(t),{x:N,y:S}=t[0].sourceEndpoint(),{x:w,y:P}=t[0].midpoint(),{x:V,y:Y}=t[0].targetEndpoint(),K=h+4;if(l&&(Ht(e)?N+=e==="L"?-K:K:S+=e==="T"?-K:K+18),y&&(Ht(s)?V+=s==="L"?-K:K:Y+=s==="T"?-K:K+18),!l&&T.getNode(f)?.type==="junction"&&(Ht(e)?N+=e==="L"?i:-i:S+=e==="T"?i:-i),!y&&T.getNode(g)?.type==="junction"&&(Ht(s)?V+=s==="L"?i:-i:Y+=s==="T"?i:-i),t[0]._private.rscratch){let I=D.insert("g");if(I.insert("path").attr("d",`M ${N},${S} L ${w},${P} L${V},${Y} `).attr("class","edge").attr("id",`${u}-${je(f,g,{prefix:"L"})}`),r){let B=Ht(e)?ne[e](N,n):N-c,o=kt(e)?ne[e](S,n):S-c;I.insert("polygon").attr("points",De[e](n)).attr("transform",`translate(${B},${o})`).attr("class","arrow")}if(A){let B=Ht(s)?ne[s](V,n):V-c,o=kt(s)?ne[s](Y,n):Y-c;I.insert("polygon").attr("points",De[s](n)).attr("transform",`translate(${B},${o})`).attr("class","arrow")}if(v){let B=ae(e,s)?"XY":Ht(e)?"X":"Y",o=0;B==="X"?o=Math.abs(N-V):B==="Y"?o=Math.abs(S-Y)/1.5:o=Math.abs(N-V)/2;let m=I.append("g");if(await de(m,v,{useHtmlLabels:!1,width:o,classes:"architecture-service-label"},ge()),m.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),B==="X")m.attr("transform","translate("+w+", "+P+")");else if(B==="Y")m.attr("transform","translate("+w+", "+P+") rotate(-90)");else if(B==="XY"){let d=oe(e,s);if(d&&ir(d)){let E=m.node().getBoundingClientRect(),[p,O]=ar(d);m.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*p*O*45})`);let x=m.node().getBoundingClientRect();m.attr("transform",` + translate(${w}, ${P-E.height/2}) + translate(${p*x.width/2}, ${O*x.height/2}) + rotate(${-1*p*O*45}, 0, ${E.height/2}) + `)}}}}}))},"drawEdges"),ur=L(async function(D,C,T,u){let a=T.getConfigField("padding")*.75,i=T.getConfigField("fontSize"),c=T.getConfigField("iconSize")/2;await Promise.all(C.nodes().map(async t=>{let f=Jt(t);if(f.type==="group"){let{h:e,w:r,x1:l,y1:g}=t.boundingBox(),s=D.append("rect");s.attr("id",`${u}-group-${f.id}`).attr("x",l+c).attr("y",g+c).attr("width",r).attr("height",e).attr("class","node-bkg");let A=D.append("g"),y=l,v=g;if(f.icon){let N=A.append("g");N.html(`${await ue(f.icon,{height:a,width:a,fallbackPrefix:Kt.prefix})}`),N.attr("transform","translate("+(y+c+1)+", "+(v+c+1)+")"),y+=a,v+=i/2-1-2}if(f.label){let N=A.append("g");await de(N,f.label,{useHtmlLabels:!1,width:r,classes:"architecture-service-label"},ge()),N.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),N.attr("transform","translate("+(y+c+4)+", "+(v+c+2)+")")}T.setElementForId(f.id,s)}}))},"drawGroups"),gr=L(async function(D,C,T,u){let h=ge();for(let a of T){let i=C.append("g"),n=D.getConfigField("iconSize");if(a.title){let e=i.append("g");await de(e,a.title,{useHtmlLabels:!1,width:n*1.5,classes:"architecture-service-label"},h),e.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),e.attr("transform","translate("+n/2+", "+n+")")}let c=i.append("g");if(a.icon)c.html(`${await ue(a.icon,{height:n,width:n,fallbackPrefix:Kt.prefix})}`);else if(a.iconText){c.html(`${await ue("blank",{height:n,width:n,fallbackPrefix:Kt.prefix})}`);let l=c.append("g").append("foreignObject").attr("width",n).attr("height",n).append("div").attr("class","node-icon-text").attr("style",`height: ${n}px;`).append("div").html(Xe(a.iconText,h)),g=parseInt(window.getComputedStyle(l.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;l.attr("style",`-webkit-line-clamp: ${Math.floor((n-2)/g)};`)}else c.append("path").attr("class","node-bkg").attr("id",`${u}-node-${a.id}`).attr("d",`M0,${n} V5 Q0,0 5,0 H${n-5} Q${n},0 ${n},5 V${n} Z`);i.attr("id",`${u}-service-${a.id}`).attr("class","architecture-service");let{width:t,height:f}=i.node().getBBox();a.width=t,a.height=f,D.setElementForId(a.id,i)}return 0},"drawServices"),dr=L(function(D,C,T,u){T.forEach(h=>{let a=C.append("g"),i=D.getConfigField("iconSize");a.append("g").append("rect").attr("id",`${u}-node-${h.id}`).attr("fill-opacity","0").attr("width",i).attr("height",i),a.attr("class","architecture-junction");let{width:c,height:t}=a._groups[0][0].getBBox();a.width=c,a.height=t,D.setElementForId(h.id,a)})},"drawJunctions");We([{name:Kt.prefix,icons:Kt}]);Ne.use(pr.default);function Lr(D,C,T){D.forEach(u=>{C.add({group:"nodes",data:{type:"service",id:u.id,icon:u.icon,label:u.title,parent:u.in,width:T.getConfigField("iconSize"),height:T.getConfigField("iconSize")},classes:"node-service"})})}L(Lr,"addServices");function Dr(D,C,T){D.forEach(u=>{C.add({group:"nodes",data:{type:"junction",id:u.id,parent:u.in,width:T.getConfigField("iconSize"),height:T.getConfigField("iconSize")},classes:"node-junction"})})}L(Dr,"addJunctions");function Cr(D,C){C.nodes().map(T=>{let u=Jt(T);if(u.type==="group")return;u.x=T.position().x,u.y=T.position().y,D.getElementById(u.id).attr("transform","translate("+(u.x||0)+","+(u.y||0)+")")})}L(Cr,"positionNodes");function wr(D,C){D.forEach(T=>{C.add({group:"nodes",data:{type:"group",id:T.id,icon:T.icon,label:T.title,parent:T.in},classes:"node-group"})})}L(wr,"addGroups");function Mr(D,C){D.forEach(T=>{let{lhsId:u,rhsId:h,lhsInto:a,lhsGroup:i,rhsInto:n,lhsDir:c,rhsDir:t,rhsGroup:f,title:e}=T,r=ae(T.lhsDir,T.rhsDir)?"segments":"straight",l={id:`${u}-${h}`,label:e,source:u,sourceDir:c,sourceArrow:a,sourceGroup:i,sourceEndpoint:c==="L"?"0 50%":c==="R"?"100% 50%":c==="T"?"50% 0":"50% 100%",target:h,targetDir:t,targetArrow:n,targetGroup:f,targetEndpoint:t==="L"?"0 50%":t==="R"?"100% 50%":t==="T"?"50% 0":"50% 100%"};C.add({group:"edges",data:l,classes:r})})}L(Mr,"addEdges");function xr(D,C,T){let u=L((n,c)=>Object.entries(n).reduce((t,[f,e])=>{let r=0,l=Object.entries(e);if(l.length===1)return t[f]=l[0][1],t;for(let g=0;g{let c={},t={};return Object.entries(n).forEach(([f,[e,r]])=>{let l=D.getNode(f)?.in??"default";c[r]??={},c[r][l]??=[],c[r][l].push(f),t[e]??={},t[e][l]??=[],t[e][l].push(f)}),{horiz:Object.values(u(c,"horizontal")).filter(f=>f.length>1),vert:Object.values(u(t,"vertical")).filter(f=>f.length>1)}}),[a,i]=h.reduce(([n,c],{horiz:t,vert:f})=>[[...n,...t],[...c,...f]],[[],[]]);return{horizontal:a,vertical:i}}L(xr,"getAlignments");function Or(D,C){let T=[],u=L(a=>`${a[0]},${a[1]}`,"posToStr"),h=L(a=>a.split(",").map(i=>parseInt(i)),"strToPos");return D.forEach(a=>{let i=Object.fromEntries(Object.entries(a).map(([f,e])=>[u(e),f])),n=[u([0,0])],c={},t={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;n.length>0;){let f=n.shift();if(f){c[f]=1;let e=i[f];if(e){let r=h(f);Object.entries(t).forEach(([l,g])=>{let s=u([r[0]+g[0],r[1]+g[1]]),A=i[s];A&&!c[s]&&(n.push(s),T.push({[Le[l]]:A,[Le[rr(l)]]:e,gap:1.5*C.getConfigField("iconSize")}))})}}}}),T}L(Or,"getRelativeConstraints");function Ir(D,C,T,u,h,{spatialMaps:a,groupAlignments:i}){return new Promise(n=>{let c=Qe("body").append("div").attr("id","cy").attr("style","display:none"),t=Ne({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge[label]",style:{label:"data(label)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${h.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${h.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});c.remove(),wr(T,t),Lr(D,t,h),Dr(C,t,h),Mr(u,t);let f=xr(h,a,i),e=Or(a,h),r=h.getConfigField("iconSize"),l=h.getConfigField("idealEdgeLengthMultiplier")*r,g=.5*r,s=h.getConfigField("edgeElasticity"),A=t.layout({name:"fcose",quality:"proof",randomize:h.getConfigField("randomize"),nodeSeparation:h.getConfigField("nodeSeparation"),numIter:h.getConfigField("numIter"),styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(y){let[v,N]=y.connectedNodes(),{parent:S}=Jt(v),{parent:w}=Jt(N);return S===w?l:g},edgeElasticity(y){let[v,N]=y.connectedNodes(),{parent:S}=Jt(v),{parent:w}=Jt(N);return S===w?s:.001},alignmentConstraint:f,relativePlacementConstraint:e});A.one("layoutstop",()=>{function y(v,N,S,w){let P,V,{x:Y,y:K}=v,{x:I,y:B}=N;V=(w-K+(Y-S)*(K-B)/(Y-I))/Math.sqrt(1+Math.pow((K-B)/(Y-I),2)),P=Math.sqrt(Math.pow(w-K,2)+Math.pow(S-Y,2)-Math.pow(V,2));let o=Math.sqrt(Math.pow(I-Y,2)+Math.pow(B-K,2));P=P/o;let m=(I-Y)*(w-K)-(B-K)*(S-Y);switch(!0){case m>=0:m=1;break;case m<0:m=-1;break}let d=(I-Y)*(S-Y)+(B-K)*(w-K);switch(!0){case d>=0:d=1;break;case d<0:d=-1;break}return V=Math.abs(V)*m,P=P*d,{distances:V,weights:P}}L(y,"getSegmentWeights"),t.startBatch();for(let v of Object.values(t.edges()))if(v.data?.()){let{x:N,y:S}=v.source().position(),{x:w,y:P}=v.target().position();if(N!==w&&S!==P){let V=v.sourceEndpoint(),Y=v.targetEndpoint(),{sourceDir:K}=pe(v),[I,B]=kt(K)?[V.x,Y.y]:[Y.x,V.y],{weights:o,distances:m}=y(V,Y,I,B);v.style("segment-distances",m),v.style("segment-weights",o)}}t.endBatch(),A.run()}),A.run(),t.ready(y=>{fe.info("Ready",y),n(t)})})}L(Ir,"layoutArchitecture");var Rr=L(async(D,C,T,u)=>{let h=u.db;h.setDiagramId(C);let a=h.getServices(),i=h.getJunctions(),n=h.getGroups(),c=h.getEdges(),t=h.getDataStructures(),f=er(C),e=f.append("g");e.attr("class","architecture-edges");let r=f.append("g");r.attr("class","architecture-services");let l=f.append("g");l.attr("class","architecture-groups"),await gr(h,r,a,C),dr(h,r,i,C);let g=await Ir(a,i,n,c,h,t);await fr(e,g,h,C),await ur(l,g,h,C),Cr(h,g),Ve(void 0,f,h.getConfigField("padding"),h.getConfigField("useMaxWidth"))},"draw"),vr={draw:Rr};var Ci={parser:we,get db(){return new re},renderer:vr,styles:lr};export{Ci as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-EJXTDGMB.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-UL44E2DR.mjs.map similarity index 63% rename from assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-EJXTDGMB.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-UL44E2DR.mjs.map index 62e5115..d07c509 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-EJXTDGMB.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/architectureDiagram-UL44E2DR.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../../../node_modules/.pnpm/layout-base@2.0.1/node_modules/layout-base/layout-base.js", "../../../../../node_modules/.pnpm/cose-base@2.2.0/node_modules/cose-base/cose-base.js", "../../../../../node_modules/.pnpm/cytoscape-fcose@2.2.0_cytoscape@3.33.1/node_modules/cytoscape-fcose/cytoscape-fcose.js", "../../../src/diagrams/architecture/architectureTypes.ts", "../../../src/diagrams/architecture/architectureDb.ts", "../../../src/diagrams/architecture/architectureParser.ts", "../../../src/diagrams/architecture/architectureStyles.ts", "../../../src/diagrams/architecture/architectureRenderer.ts", "../../../src/diagrams/architecture/architectureIcons.ts", "../../../src/diagrams/architecture/svgDraw.ts", "../../../src/diagrams/architecture/architectureDiagram.ts"], - "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[\"layoutBase\"] = factory();\n\telse\n\t\troot[\"layoutBase\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 28);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LayoutConstants() {}\n\n/**\r\n * Layout Quality: 0:draft, 1:default, 2:proof\r\n */\nLayoutConstants.QUALITY = 1;\n\n/**\r\n * Default parameters\r\n */\nLayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false;\nLayoutConstants.DEFAULT_INCREMENTAL = false;\nLayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true;\nLayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false;\nLayoutConstants.DEFAULT_ANIMATION_PERIOD = 50;\nLayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false;\n\n// -----------------------------------------------------------------------------\n// Section: General other constants\n// -----------------------------------------------------------------------------\n/*\r\n * Margins of a graph to be applied on bouding rectangle of its contents. We\r\n * assume margins on all four sides to be uniform.\r\n */\nLayoutConstants.DEFAULT_GRAPH_MARGIN = 15;\n\n/*\r\n * Whether to consider labels in node dimensions or not\r\n */\nLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_SIZE = 40;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2;\n\n/*\r\n * Empty compound node size. When a compound node is empty, its both\r\n * dimensions should be of this value.\r\n */\nLayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40;\n\n/*\r\n * Minimum length that an edge should take during layout\r\n */\nLayoutConstants.MIN_EDGE_LENGTH = 1;\n\n/*\r\n * World boundaries that layout operates on\r\n */\nLayoutConstants.WORLD_BOUNDARY = 1000000;\n\n/*\r\n * World boundaries that random positioning can be performed with\r\n */\nLayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000;\n\n/*\r\n * Coordinates of the world center\r\n */\nLayoutConstants.WORLD_CENTER_X = 1200;\nLayoutConstants.WORLD_CENTER_Y = 900;\n\nmodule.exports = LayoutConstants;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction LEdge(source, target, vEdge) {\n LGraphObject.call(this, vEdge);\n\n this.isOverlapingSourceAndTarget = false;\n this.vGraphObject = vEdge;\n this.bendpoints = [];\n this.source = source;\n this.target = target;\n}\n\nLEdge.prototype = Object.create(LGraphObject.prototype);\n\nfor (var prop in LGraphObject) {\n LEdge[prop] = LGraphObject[prop];\n}\n\nLEdge.prototype.getSource = function () {\n return this.source;\n};\n\nLEdge.prototype.getTarget = function () {\n return this.target;\n};\n\nLEdge.prototype.isInterGraph = function () {\n return this.isInterGraph;\n};\n\nLEdge.prototype.getLength = function () {\n return this.length;\n};\n\nLEdge.prototype.isOverlapingSourceAndTarget = function () {\n return this.isOverlapingSourceAndTarget;\n};\n\nLEdge.prototype.getBendpoints = function () {\n return this.bendpoints;\n};\n\nLEdge.prototype.getLca = function () {\n return this.lca;\n};\n\nLEdge.prototype.getSourceInLca = function () {\n return this.sourceInLca;\n};\n\nLEdge.prototype.getTargetInLca = function () {\n return this.targetInLca;\n};\n\nLEdge.prototype.getOtherEnd = function (node) {\n if (this.source === node) {\n return this.target;\n } else if (this.target === node) {\n return this.source;\n } else {\n throw \"Node is not incident with this edge\";\n }\n};\n\nLEdge.prototype.getOtherEndInGraph = function (node, graph) {\n var otherEnd = this.getOtherEnd(node);\n var root = graph.getGraphManager().getRoot();\n\n while (true) {\n if (otherEnd.getOwner() == graph) {\n return otherEnd;\n }\n\n if (otherEnd.getOwner() == root) {\n break;\n }\n\n otherEnd = otherEnd.getOwner().getParent();\n }\n\n return null;\n};\n\nLEdge.prototype.updateLength = function () {\n var clipPointCoordinates = new Array(4);\n\n this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates);\n\n if (!this.isOverlapingSourceAndTarget) {\n this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2];\n this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3];\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n }\n};\n\nLEdge.prototype.updateLengthSimple = function () {\n this.lengthX = this.target.getCenterX() - this.source.getCenterX();\n this.lengthY = this.target.getCenterY() - this.source.getCenterY();\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n};\n\nmodule.exports = LEdge;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LGraphObject(vGraphObject) {\n this.vGraphObject = vGraphObject;\n}\n\nmodule.exports = LGraphObject;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar RectangleD = __webpack_require__(13);\nvar LayoutConstants = __webpack_require__(0);\nvar RandomSeed = __webpack_require__(16);\nvar PointD = __webpack_require__(5);\n\nfunction LNode(gm, loc, size, vNode) {\n //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode)\n if (size == null && vNode == null) {\n vNode = loc;\n }\n\n LGraphObject.call(this, vNode);\n\n //Alternative constructor 2 : LNode(Layout layout, Object vNode)\n if (gm.graphManager != null) gm = gm.graphManager;\n\n this.estimatedSize = Integer.MIN_VALUE;\n this.inclusionTreeDepth = Integer.MAX_VALUE;\n this.vGraphObject = vNode;\n this.edges = [];\n this.graphManager = gm;\n\n if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD();\n}\n\nLNode.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LNode[prop] = LGraphObject[prop];\n}\n\nLNode.prototype.getEdges = function () {\n return this.edges;\n};\n\nLNode.prototype.getChild = function () {\n return this.child;\n};\n\nLNode.prototype.getOwner = function () {\n // if (this.owner != null) {\n // if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) {\n // throw \"assert failed\";\n // }\n // }\n\n return this.owner;\n};\n\nLNode.prototype.getWidth = function () {\n return this.rect.width;\n};\n\nLNode.prototype.setWidth = function (width) {\n this.rect.width = width;\n};\n\nLNode.prototype.getHeight = function () {\n return this.rect.height;\n};\n\nLNode.prototype.setHeight = function (height) {\n this.rect.height = height;\n};\n\nLNode.prototype.getCenterX = function () {\n return this.rect.x + this.rect.width / 2;\n};\n\nLNode.prototype.getCenterY = function () {\n return this.rect.y + this.rect.height / 2;\n};\n\nLNode.prototype.getCenter = function () {\n return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2);\n};\n\nLNode.prototype.getLocation = function () {\n return new PointD(this.rect.x, this.rect.y);\n};\n\nLNode.prototype.getRect = function () {\n return this.rect;\n};\n\nLNode.prototype.getDiagonal = function () {\n return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height);\n};\n\n/**\n * This method returns half the diagonal length of this node.\n */\nLNode.prototype.getHalfTheDiagonal = function () {\n return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2;\n};\n\nLNode.prototype.setRect = function (upperLeft, dimension) {\n this.rect.x = upperLeft.x;\n this.rect.y = upperLeft.y;\n this.rect.width = dimension.width;\n this.rect.height = dimension.height;\n};\n\nLNode.prototype.setCenter = function (cx, cy) {\n this.rect.x = cx - this.rect.width / 2;\n this.rect.y = cy - this.rect.height / 2;\n};\n\nLNode.prototype.setLocation = function (x, y) {\n this.rect.x = x;\n this.rect.y = y;\n};\n\nLNode.prototype.moveBy = function (dx, dy) {\n this.rect.x += dx;\n this.rect.y += dy;\n};\n\nLNode.prototype.getEdgeListToNode = function (to) {\n var edgeList = [];\n var edge;\n var self = this;\n\n self.edges.forEach(function (edge) {\n\n if (edge.target == to) {\n if (edge.source != self) throw \"Incorrect edge source!\";\n\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getEdgesBetween = function (other) {\n var edgeList = [];\n var edge;\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (!(edge.source == self || edge.target == self)) throw \"Incorrect edge source and/or target\";\n\n if (edge.target == other || edge.source == other) {\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getNeighborsList = function () {\n var neighbors = new Set();\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (edge.source == self) {\n neighbors.add(edge.target);\n } else {\n if (edge.target != self) {\n throw \"Incorrect incidency!\";\n }\n\n neighbors.add(edge.source);\n }\n });\n\n return neighbors;\n};\n\nLNode.prototype.withChildren = function () {\n var withNeighborsList = new Set();\n var childNode;\n var children;\n\n withNeighborsList.add(this);\n\n if (this.child != null) {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n children = childNode.withChildren();\n children.forEach(function (node) {\n withNeighborsList.add(node);\n });\n }\n }\n\n return withNeighborsList;\n};\n\nLNode.prototype.getNoOfChildren = function () {\n var noOfChildren = 0;\n var childNode;\n\n if (this.child == null) {\n noOfChildren = 1;\n } else {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n\n noOfChildren += childNode.getNoOfChildren();\n }\n }\n\n if (noOfChildren == 0) {\n noOfChildren = 1;\n }\n return noOfChildren;\n};\n\nLNode.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLNode.prototype.calcEstimatedSize = function () {\n if (this.child == null) {\n return this.estimatedSize = (this.rect.width + this.rect.height) / 2;\n } else {\n this.estimatedSize = this.child.calcEstimatedSize();\n this.rect.width = this.estimatedSize;\n this.rect.height = this.estimatedSize;\n\n return this.estimatedSize;\n }\n};\n\nLNode.prototype.scatter = function () {\n var randomCenterX;\n var randomCenterY;\n\n var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX;\n\n var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY;\n\n this.rect.x = randomCenterX;\n this.rect.y = randomCenterY;\n};\n\nLNode.prototype.updateBounds = function () {\n if (this.getChild() == null) {\n throw \"assert failed\";\n }\n if (this.getChild().getNodes().length != 0) {\n // wrap the children nodes by re-arranging the boundaries\n var childGraph = this.getChild();\n childGraph.updateBounds(true);\n\n this.rect.x = childGraph.getLeft();\n this.rect.y = childGraph.getTop();\n\n this.setWidth(childGraph.getRight() - childGraph.getLeft());\n this.setHeight(childGraph.getBottom() - childGraph.getTop());\n\n // Update compound bounds considering its label properties \n if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = childGraph.getRight() - childGraph.getLeft();\n var height = childGraph.getBottom() - childGraph.getTop();\n\n if (this.labelWidth) {\n if (this.labelPosHorizontal == \"left\") {\n this.rect.x -= this.labelWidth;\n this.setWidth(width + this.labelWidth);\n } else if (this.labelPosHorizontal == \"center\" && this.labelWidth > width) {\n this.rect.x -= (this.labelWidth - width) / 2;\n this.setWidth(this.labelWidth);\n } else if (this.labelPosHorizontal == \"right\") {\n this.setWidth(width + this.labelWidth);\n }\n }\n\n if (this.labelHeight) {\n if (this.labelPosVertical == \"top\") {\n this.rect.y -= this.labelHeight;\n this.setHeight(height + this.labelHeight);\n } else if (this.labelPosVertical == \"center\" && this.labelHeight > height) {\n this.rect.y -= (this.labelHeight - height) / 2;\n this.setHeight(this.labelHeight);\n } else if (this.labelPosVertical == \"bottom\") {\n this.setHeight(height + this.labelHeight);\n }\n }\n }\n }\n};\n\nLNode.prototype.getInclusionTreeDepth = function () {\n if (this.inclusionTreeDepth == Integer.MAX_VALUE) {\n throw \"assert failed\";\n }\n return this.inclusionTreeDepth;\n};\n\nLNode.prototype.transform = function (trans) {\n var left = this.rect.x;\n\n if (left > LayoutConstants.WORLD_BOUNDARY) {\n left = LayoutConstants.WORLD_BOUNDARY;\n } else if (left < -LayoutConstants.WORLD_BOUNDARY) {\n left = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var top = this.rect.y;\n\n if (top > LayoutConstants.WORLD_BOUNDARY) {\n top = LayoutConstants.WORLD_BOUNDARY;\n } else if (top < -LayoutConstants.WORLD_BOUNDARY) {\n top = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var leftTop = new PointD(left, top);\n var vLeftTop = trans.inverseTransformPoint(leftTop);\n\n this.setLocation(vLeftTop.x, vLeftTop.y);\n};\n\nLNode.prototype.getLeft = function () {\n return this.rect.x;\n};\n\nLNode.prototype.getRight = function () {\n return this.rect.x + this.rect.width;\n};\n\nLNode.prototype.getTop = function () {\n return this.rect.y;\n};\n\nLNode.prototype.getBottom = function () {\n return this.rect.y + this.rect.height;\n};\n\nLNode.prototype.getParent = function () {\n if (this.owner == null) {\n return null;\n }\n\n return this.owner.getParent();\n};\n\nmodule.exports = LNode;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __webpack_require__(0);\n\nfunction FDLayoutConstants() {}\n\n//FDLayoutConstants inherits static props in LayoutConstants\nfor (var prop in LayoutConstants) {\n FDLayoutConstants[prop] = LayoutConstants[prop];\n}\n\nFDLayoutConstants.MAX_ITERATIONS = 2500;\n\nFDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\nFDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45;\nFDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0;\nFDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0;\nFDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5;\nFDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true;\nFDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true;\nFDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3;\nFDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33;\nFDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000;\nFDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3;\nFDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\nFDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100;\nFDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1;\nFDLayoutConstants.MIN_EDGE_LENGTH = 1;\nFDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10;\n\nmodule.exports = FDLayoutConstants;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction PointD(x, y) {\n if (x == null && y == null) {\n this.x = 0;\n this.y = 0;\n } else {\n this.x = x;\n this.y = y;\n }\n}\n\nPointD.prototype.getX = function () {\n return this.x;\n};\n\nPointD.prototype.getY = function () {\n return this.y;\n};\n\nPointD.prototype.setX = function (x) {\n this.x = x;\n};\n\nPointD.prototype.setY = function (y) {\n this.y = y;\n};\n\nPointD.prototype.getDifference = function (pt) {\n return new DimensionD(this.x - pt.x, this.y - pt.y);\n};\n\nPointD.prototype.getCopy = function () {\n return new PointD(this.x, this.y);\n};\n\nPointD.prototype.translate = function (dim) {\n this.x += dim.width;\n this.y += dim.height;\n return this;\n};\n\nmodule.exports = PointD;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(7);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar RectangleD = __webpack_require__(13);\nvar Point = __webpack_require__(12);\nvar LinkedList = __webpack_require__(11);\n\nfunction LGraph(parent, obj2, vGraph) {\n LGraphObject.call(this, vGraph);\n this.estimatedSize = Integer.MIN_VALUE;\n this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN;\n this.edges = [];\n this.nodes = [];\n this.isConnected = false;\n this.parent = parent;\n\n if (obj2 != null && obj2 instanceof LGraphManager) {\n this.graphManager = obj2;\n } else if (obj2 != null && obj2 instanceof Layout) {\n this.graphManager = obj2.graphManager;\n }\n}\n\nLGraph.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LGraph[prop] = LGraphObject[prop];\n}\n\nLGraph.prototype.getNodes = function () {\n return this.nodes;\n};\n\nLGraph.prototype.getEdges = function () {\n return this.edges;\n};\n\nLGraph.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLGraph.prototype.getParent = function () {\n return this.parent;\n};\n\nLGraph.prototype.getLeft = function () {\n return this.left;\n};\n\nLGraph.prototype.getRight = function () {\n return this.right;\n};\n\nLGraph.prototype.getTop = function () {\n return this.top;\n};\n\nLGraph.prototype.getBottom = function () {\n return this.bottom;\n};\n\nLGraph.prototype.isConnected = function () {\n return this.isConnected;\n};\n\nLGraph.prototype.add = function (obj1, sourceNode, targetNode) {\n if (sourceNode == null && targetNode == null) {\n var newNode = obj1;\n if (this.graphManager == null) {\n throw \"Graph has no graph mgr!\";\n }\n if (this.getNodes().indexOf(newNode) > -1) {\n throw \"Node already in graph!\";\n }\n newNode.owner = this;\n this.getNodes().push(newNode);\n\n return newNode;\n } else {\n var newEdge = obj1;\n if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) {\n throw \"Source or target not in graph!\";\n }\n\n if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) {\n throw \"Both owners must be this graph!\";\n }\n\n if (sourceNode.owner != targetNode.owner) {\n return null;\n }\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // set as intra-graph edge\n newEdge.isInterGraph = false;\n\n // add to graph edge list\n this.getEdges().push(newEdge);\n\n // add to incidency lists\n sourceNode.edges.push(newEdge);\n\n if (targetNode != sourceNode) {\n targetNode.edges.push(newEdge);\n }\n\n return newEdge;\n }\n};\n\nLGraph.prototype.remove = function (obj) {\n var node = obj;\n if (obj instanceof LNode) {\n if (node == null) {\n throw \"Node is null!\";\n }\n if (!(node.owner != null && node.owner == this)) {\n throw \"Owner graph is invalid!\";\n }\n if (this.graphManager == null) {\n throw \"Owner graph manager is invalid!\";\n }\n // remove incident edges first (make a copy to do it safely)\n var edgesToBeRemoved = node.edges.slice();\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n\n if (edge.isInterGraph) {\n this.graphManager.remove(edge);\n } else {\n edge.source.owner.remove(edge);\n }\n }\n\n // now the node itself\n var index = this.nodes.indexOf(node);\n if (index == -1) {\n throw \"Node not in owner node list!\";\n }\n\n this.nodes.splice(index, 1);\n } else if (obj instanceof LEdge) {\n var edge = obj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) {\n throw \"Source and/or target owner is invalid!\";\n }\n\n var sourceIndex = edge.source.edges.indexOf(edge);\n var targetIndex = edge.target.edges.indexOf(edge);\n if (!(sourceIndex > -1 && targetIndex > -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n edge.source.edges.splice(sourceIndex, 1);\n\n if (edge.target != edge.source) {\n edge.target.edges.splice(targetIndex, 1);\n }\n\n var index = edge.source.owner.getEdges().indexOf(edge);\n if (index == -1) {\n throw \"Not in owner's edge list!\";\n }\n\n edge.source.owner.getEdges().splice(index, 1);\n }\n};\n\nLGraph.prototype.updateLeftTop = function () {\n var top = Integer.MAX_VALUE;\n var left = Integer.MAX_VALUE;\n var nodeTop;\n var nodeLeft;\n var margin;\n\n var nodes = this.getNodes();\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeTop = lNode.getTop();\n nodeLeft = lNode.getLeft();\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n }\n\n // Do we have any nodes in this graph?\n if (top == Integer.MAX_VALUE) {\n return null;\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = left - margin;\n this.top = top - margin;\n\n // Apply the margins and return the result\n return new Point(this.left, this.top);\n};\n\nLGraph.prototype.updateBounds = function (recursive) {\n // calculate bounds\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n var margin;\n\n var nodes = this.nodes;\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n\n if (recursive && lNode.child != null) {\n lNode.updateBounds();\n }\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n if (left == Integer.MAX_VALUE) {\n this.left = this.parent.getLeft();\n this.right = this.parent.getRight();\n this.top = this.parent.getTop();\n this.bottom = this.parent.getBottom();\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = boundingRect.x - margin;\n this.right = boundingRect.x + boundingRect.width + margin;\n this.top = boundingRect.y - margin;\n this.bottom = boundingRect.y + boundingRect.height + margin;\n};\n\nLGraph.calculateBounds = function (nodes) {\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n\n return boundingRect;\n};\n\nLGraph.prototype.getInclusionTreeDepth = function () {\n if (this == this.graphManager.getRoot()) {\n return 1;\n } else {\n return this.parent.getInclusionTreeDepth();\n }\n};\n\nLGraph.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLGraph.prototype.calcEstimatedSize = function () {\n var size = 0;\n var nodes = this.nodes;\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n size += lNode.calcEstimatedSize();\n }\n\n if (size == 0) {\n this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE;\n } else {\n this.estimatedSize = size / Math.sqrt(this.nodes.length);\n }\n\n return this.estimatedSize;\n};\n\nLGraph.prototype.updateConnected = function () {\n var self = this;\n if (this.nodes.length == 0) {\n this.isConnected = true;\n return;\n }\n\n var queue = new LinkedList();\n var visited = new Set();\n var currentNode = this.nodes[0];\n var neighborEdges;\n var currentNeighbor;\n var childrenOfNode = currentNode.withChildren();\n childrenOfNode.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n\n while (queue.length !== 0) {\n currentNode = queue.shift();\n\n // Traverse all neighbors of this node\n neighborEdges = currentNode.getEdges();\n var size = neighborEdges.length;\n for (var i = 0; i < size; i++) {\n var neighborEdge = neighborEdges[i];\n currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this);\n\n // Add unvisited neighbors to the list to visit\n if (currentNeighbor != null && !visited.has(currentNeighbor)) {\n var childrenOfNeighbor = currentNeighbor.withChildren();\n\n childrenOfNeighbor.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n }\n }\n }\n\n this.isConnected = false;\n\n if (visited.size >= this.nodes.length) {\n var noOfVisitedInThisGraph = 0;\n\n visited.forEach(function (visitedNode) {\n if (visitedNode.owner == self) {\n noOfVisitedInThisGraph++;\n }\n });\n\n if (noOfVisitedInThisGraph == this.nodes.length) {\n this.isConnected = true;\n }\n }\n};\n\nmodule.exports = LGraph;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph;\nvar LEdge = __webpack_require__(1);\n\nfunction LGraphManager(layout) {\n LGraph = __webpack_require__(6); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now.\n this.layout = layout;\n\n this.graphs = [];\n this.edges = [];\n}\n\nLGraphManager.prototype.addRoot = function () {\n var ngraph = this.layout.newGraph();\n var nnode = this.layout.newNode(null);\n var root = this.add(ngraph, nnode);\n this.setRootGraph(root);\n return this.rootGraph;\n};\n\nLGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) {\n //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge\n if (newEdge == null && sourceNode == null && targetNode == null) {\n if (newGraph == null) {\n throw \"Graph is null!\";\n }\n if (parentNode == null) {\n throw \"Parent node is null!\";\n }\n if (this.graphs.indexOf(newGraph) > -1) {\n throw \"Graph already in this graph mgr!\";\n }\n\n this.graphs.push(newGraph);\n\n if (newGraph.parent != null) {\n throw \"Already has a parent!\";\n }\n if (parentNode.child != null) {\n throw \"Already has a child!\";\n }\n\n newGraph.parent = parentNode;\n parentNode.child = newGraph;\n\n return newGraph;\n } else {\n //change the order of the parameters\n targetNode = newEdge;\n sourceNode = parentNode;\n newEdge = newGraph;\n var sourceGraph = sourceNode.getOwner();\n var targetGraph = targetNode.getOwner();\n\n if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) {\n throw \"Source not in this graph mgr!\";\n }\n if (!(targetGraph != null && targetGraph.getGraphManager() == this)) {\n throw \"Target not in this graph mgr!\";\n }\n\n if (sourceGraph == targetGraph) {\n newEdge.isInterGraph = false;\n return sourceGraph.add(newEdge, sourceNode, targetNode);\n } else {\n newEdge.isInterGraph = true;\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // add edge to inter-graph edge list\n if (this.edges.indexOf(newEdge) > -1) {\n throw \"Edge already in inter-graph edge list!\";\n }\n\n this.edges.push(newEdge);\n\n // add edge to source and target incidency lists\n if (!(newEdge.source != null && newEdge.target != null)) {\n throw \"Edge source and/or target is null!\";\n }\n\n if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) {\n throw \"Edge already in source and/or target incidency list!\";\n }\n\n newEdge.source.edges.push(newEdge);\n newEdge.target.edges.push(newEdge);\n\n return newEdge;\n }\n }\n};\n\nLGraphManager.prototype.remove = function (lObj) {\n if (lObj instanceof LGraph) {\n var graph = lObj;\n if (graph.getGraphManager() != this) {\n throw \"Graph not in this graph mgr\";\n }\n if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) {\n throw \"Invalid parent node!\";\n }\n\n // first the edges (make a copy to do it safely)\n var edgesToBeRemoved = [];\n\n edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges());\n\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n graph.remove(edge);\n }\n\n // then the nodes (make a copy to do it safely)\n var nodesToBeRemoved = [];\n\n nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes());\n\n var node;\n s = nodesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n node = nodesToBeRemoved[i];\n graph.remove(node);\n }\n\n // check if graph is the root\n if (graph == this.rootGraph) {\n this.setRootGraph(null);\n }\n\n // now remove the graph itself\n var index = this.graphs.indexOf(graph);\n this.graphs.splice(index, 1);\n\n // also reset the parent of the graph\n graph.parent = null;\n } else if (lObj instanceof LEdge) {\n edge = lObj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!edge.isInterGraph) {\n throw \"Not an inter-graph edge!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n\n // remove edge from source and target nodes' incidency lists\n\n if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n var index = edge.source.edges.indexOf(edge);\n edge.source.edges.splice(index, 1);\n index = edge.target.edges.indexOf(edge);\n edge.target.edges.splice(index, 1);\n\n // remove edge from owner graph manager's inter-graph edge list\n\n if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) {\n throw \"Edge owner graph or owner graph manager is null!\";\n }\n if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) {\n throw \"Not in owner graph manager's edge list!\";\n }\n\n var index = edge.source.owner.getGraphManager().edges.indexOf(edge);\n edge.source.owner.getGraphManager().edges.splice(index, 1);\n }\n};\n\nLGraphManager.prototype.updateBounds = function () {\n this.rootGraph.updateBounds(true);\n};\n\nLGraphManager.prototype.getGraphs = function () {\n return this.graphs;\n};\n\nLGraphManager.prototype.getAllNodes = function () {\n if (this.allNodes == null) {\n var nodeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < s; i++) {\n nodeList = nodeList.concat(graphs[i].getNodes());\n }\n this.allNodes = nodeList;\n }\n return this.allNodes;\n};\n\nLGraphManager.prototype.resetAllNodes = function () {\n this.allNodes = null;\n};\n\nLGraphManager.prototype.resetAllEdges = function () {\n this.allEdges = null;\n};\n\nLGraphManager.prototype.resetAllNodesToApplyGravitation = function () {\n this.allNodesToApplyGravitation = null;\n};\n\nLGraphManager.prototype.getAllEdges = function () {\n if (this.allEdges == null) {\n var edgeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < graphs.length; i++) {\n edgeList = edgeList.concat(graphs[i].getEdges());\n }\n\n edgeList = edgeList.concat(this.edges);\n\n this.allEdges = edgeList;\n }\n return this.allEdges;\n};\n\nLGraphManager.prototype.getAllNodesToApplyGravitation = function () {\n return this.allNodesToApplyGravitation;\n};\n\nLGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) {\n if (this.allNodesToApplyGravitation != null) {\n throw \"assert failed\";\n }\n\n this.allNodesToApplyGravitation = nodeList;\n};\n\nLGraphManager.prototype.getRoot = function () {\n return this.rootGraph;\n};\n\nLGraphManager.prototype.setRootGraph = function (graph) {\n if (graph.getGraphManager() != this) {\n throw \"Root not in this graph mgr!\";\n }\n\n this.rootGraph = graph;\n // root graph must have a root node associated with it for convenience\n if (graph.parent == null) {\n graph.parent = this.layout.newNode(\"Root node\");\n }\n};\n\nLGraphManager.prototype.getLayout = function () {\n return this.layout;\n};\n\nLGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) {\n if (!(firstNode != null && secondNode != null)) {\n throw \"assert failed\";\n }\n\n if (firstNode == secondNode) {\n return true;\n }\n // Is second node an ancestor of the first one?\n var ownerGraph = firstNode.getOwner();\n var parentNode;\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == secondNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n // Is first node an ancestor of the second one?\n ownerGraph = secondNode.getOwner();\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == firstNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n\n return false;\n};\n\nLGraphManager.prototype.calcLowestCommonAncestors = function () {\n var edge;\n var sourceNode;\n var targetNode;\n var sourceAncestorGraph;\n var targetAncestorGraph;\n\n var edges = this.getAllEdges();\n var s = edges.length;\n for (var i = 0; i < s; i++) {\n edge = edges[i];\n\n sourceNode = edge.source;\n targetNode = edge.target;\n edge.lca = null;\n edge.sourceInLca = sourceNode;\n edge.targetInLca = targetNode;\n\n if (sourceNode == targetNode) {\n edge.lca = sourceNode.getOwner();\n continue;\n }\n\n sourceAncestorGraph = sourceNode.getOwner();\n\n while (edge.lca == null) {\n edge.targetInLca = targetNode;\n targetAncestorGraph = targetNode.getOwner();\n\n while (edge.lca == null) {\n if (targetAncestorGraph == sourceAncestorGraph) {\n edge.lca = targetAncestorGraph;\n break;\n }\n\n if (targetAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca != null) {\n throw \"assert failed\";\n }\n edge.targetInLca = targetAncestorGraph.getParent();\n targetAncestorGraph = edge.targetInLca.getOwner();\n }\n\n if (sourceAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca == null) {\n edge.sourceInLca = sourceAncestorGraph.getParent();\n sourceAncestorGraph = edge.sourceInLca.getOwner();\n }\n }\n\n if (edge.lca == null) {\n throw \"assert failed\";\n }\n }\n};\n\nLGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) {\n if (firstNode == secondNode) {\n return firstNode.getOwner();\n }\n var firstOwnerGraph = firstNode.getOwner();\n\n do {\n if (firstOwnerGraph == null) {\n break;\n }\n var secondOwnerGraph = secondNode.getOwner();\n\n do {\n if (secondOwnerGraph == null) {\n break;\n }\n\n if (secondOwnerGraph == firstOwnerGraph) {\n return secondOwnerGraph;\n }\n secondOwnerGraph = secondOwnerGraph.getParent().getOwner();\n } while (true);\n\n firstOwnerGraph = firstOwnerGraph.getParent().getOwner();\n } while (true);\n\n return firstOwnerGraph;\n};\n\nLGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) {\n if (graph == null && depth == null) {\n graph = this.rootGraph;\n depth = 1;\n }\n var node;\n\n var nodes = graph.getNodes();\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n node = nodes[i];\n node.inclusionTreeDepth = depth;\n\n if (node.child != null) {\n this.calcInclusionTreeDepths(node.child, depth + 1);\n }\n }\n};\n\nLGraphManager.prototype.includesInvalidEdge = function () {\n var edge;\n var edgesToRemove = [];\n\n var s = this.edges.length;\n for (var i = 0; i < s; i++) {\n edge = this.edges[i];\n\n if (this.isOneAncestorOfOther(edge.source, edge.target)) {\n edgesToRemove.push(edge);\n }\n }\n\n // Remove invalid edges from graph manager\n for (var i = 0; i < edgesToRemove.length; i++) {\n this.remove(edgesToRemove[i]);\n }\n\n // Invalid edges are cleared, so return false\n return false;\n};\n\nmodule.exports = LGraphManager;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * This class maintains a list of static geometry related utility methods.\n *\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar Point = __webpack_require__(12);\n\nfunction IGeometry() {}\n\n/**\n * This method calculates *half* the amount in x and y directions of the two\n * input rectangles needed to separate them keeping their respective\n * positioning, and returns the result in the input array. An input\n * separation buffer added to the amount in both directions. We assume that\n * the two rectangles do intersect.\n */\nIGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) {\n if (!rectA.intersects(rectB)) {\n throw \"assert failed\";\n }\n\n var directions = new Array(2);\n\n this.decideDirectionsForOverlappingNodes(rectA, rectB, directions);\n\n overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x);\n overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y);\n\n // update the overlapping amounts for the following cases:\n if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) {\n /* Case x.1:\n *\n * rectA\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectB\n */\n overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight());\n } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) {\n /* Case x.2:\n *\n * rectB\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectA\n */\n overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight());\n }\n if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) {\n /* Case y.1:\n * ________ rectA\n * |\n * |\n * ______|____ rectB\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom());\n } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) {\n /* Case y.2:\n * ________ rectB\n * |\n * |\n * ______|____ rectA\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom());\n }\n\n // find slope of the line passes two centers\n var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX()));\n // if centers are overlapped\n if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) {\n // assume the slope is 1 (45 degree)\n slope = 1.0;\n }\n\n var moveByY = slope * overlapAmount[0];\n var moveByX = overlapAmount[1] / slope;\n if (overlapAmount[0] < moveByX) {\n moveByX = overlapAmount[0];\n } else {\n moveByY = overlapAmount[1];\n }\n // return half the amount so that if each rectangle is moved by these\n // amounts in opposite directions, overlap will be resolved\n overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer);\n overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer);\n};\n\n/**\n * This method decides the separation direction of overlapping nodes\n *\n * if directions[0] = -1, then rectA goes left\n * if directions[0] = 1, then rectA goes right\n * if directions[1] = -1, then rectA goes up\n * if directions[1] = 1, then rectA goes down\n */\nIGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) {\n if (rectA.getCenterX() < rectB.getCenterX()) {\n directions[0] = -1;\n } else {\n directions[0] = 1;\n }\n\n if (rectA.getCenterY() < rectB.getCenterY()) {\n directions[1] = -1;\n } else {\n directions[1] = 1;\n }\n};\n\n/**\n * This method calculates the intersection (clipping) points of the two\n * input rectangles with line segment defined by the centers of these two\n * rectangles. The clipping points are saved in the input double array and\n * whether or not the two rectangles overlap is returned.\n */\nIGeometry.getIntersection2 = function (rectA, rectB, result) {\n //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB\n var p1x = rectA.getCenterX();\n var p1y = rectA.getCenterY();\n var p2x = rectB.getCenterX();\n var p2y = rectB.getCenterY();\n\n //if two rectangles intersect, then clipping points are centers\n if (rectA.intersects(rectB)) {\n result[0] = p1x;\n result[1] = p1y;\n result[2] = p2x;\n result[3] = p2y;\n return true;\n }\n //variables for rectA\n var topLeftAx = rectA.getX();\n var topLeftAy = rectA.getY();\n var topRightAx = rectA.getRight();\n var bottomLeftAx = rectA.getX();\n var bottomLeftAy = rectA.getBottom();\n var bottomRightAx = rectA.getRight();\n var halfWidthA = rectA.getWidthHalf();\n var halfHeightA = rectA.getHeightHalf();\n //variables for rectB\n var topLeftBx = rectB.getX();\n var topLeftBy = rectB.getY();\n var topRightBx = rectB.getRight();\n var bottomLeftBx = rectB.getX();\n var bottomLeftBy = rectB.getBottom();\n var bottomRightBx = rectB.getRight();\n var halfWidthB = rectB.getWidthHalf();\n var halfHeightB = rectB.getHeightHalf();\n\n //flag whether clipping points are found\n var clipPointAFound = false;\n var clipPointBFound = false;\n\n // line is vertical\n if (p1x === p2x) {\n if (p1y > p2y) {\n result[0] = p1x;\n result[1] = topLeftAy;\n result[2] = p2x;\n result[3] = bottomLeftBy;\n return false;\n } else if (p1y < p2y) {\n result[0] = p1x;\n result[1] = bottomLeftAy;\n result[2] = p2x;\n result[3] = topLeftBy;\n return false;\n } else {\n //not line, return null;\n }\n }\n // line is horizontal\n else if (p1y === p2y) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = p1y;\n result[2] = topRightBx;\n result[3] = p2y;\n return false;\n } else if (p1x < p2x) {\n result[0] = topRightAx;\n result[1] = p1y;\n result[2] = topLeftBx;\n result[3] = p2y;\n return false;\n } else {\n //not valid line, return null;\n }\n } else {\n //slopes of rectA's and rectB's diagonals\n var slopeA = rectA.height / rectA.width;\n var slopeB = rectB.height / rectB.width;\n\n //slope of line between center of rectA and center of rectB\n var slopePrime = (p2y - p1y) / (p2x - p1x);\n var cardinalDirectionA = void 0;\n var cardinalDirectionB = void 0;\n var tempPointAx = void 0;\n var tempPointAy = void 0;\n var tempPointBx = void 0;\n var tempPointBy = void 0;\n\n //determine whether clipping point is the corner of nodeA\n if (-slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = bottomLeftAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = topRightAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n }\n } else if (slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = bottomRightAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n }\n }\n\n //determine whether clipping point is the corner of nodeB\n if (-slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = bottomLeftBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = topRightBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n }\n } else if (slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = topLeftBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = bottomRightBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n }\n }\n\n //if both clipping points are corners\n if (clipPointAFound && clipPointBFound) {\n return false;\n }\n\n //determine Cardinal Direction of rectangles\n if (p1x > p2x) {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2);\n } else {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1);\n }\n } else {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3);\n } else {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4);\n }\n }\n //calculate clipping Point if it is not found before\n if (!clipPointAFound) {\n switch (cardinalDirectionA) {\n case 1:\n tempPointAy = topLeftAy;\n tempPointAx = p1x + -halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 2:\n tempPointAx = bottomRightAx;\n tempPointAy = p1y + halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 3:\n tempPointAy = bottomLeftAy;\n tempPointAx = p1x + halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 4:\n tempPointAx = bottomLeftAx;\n tempPointAy = p1y + -halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n }\n }\n if (!clipPointBFound) {\n switch (cardinalDirectionB) {\n case 1:\n tempPointBy = topLeftBy;\n tempPointBx = p2x + -halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 2:\n tempPointBx = bottomRightBx;\n tempPointBy = p2y + halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 3:\n tempPointBy = bottomLeftBy;\n tempPointBx = p2x + halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 4:\n tempPointBx = bottomLeftBx;\n tempPointBy = p2y + -halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n }\n }\n }\n return false;\n};\n\n/**\n * This method returns in which cardinal direction does input point stays\n * 1: North\n * 2: East\n * 3: South\n * 4: West\n */\nIGeometry.getCardinalDirection = function (slope, slopePrime, line) {\n if (slope > slopePrime) {\n return line;\n } else {\n return 1 + line % 4;\n }\n};\n\n/**\n * This method calculates the intersection of the two lines defined by\n * point pairs (s1,s2) and (f1,f2).\n */\nIGeometry.getIntersection = function (s1, s2, f1, f2) {\n if (f2 == null) {\n return this.getIntersection2(s1, s2, f1);\n }\n\n var x1 = s1.x;\n var y1 = s1.y;\n var x2 = s2.x;\n var y2 = s2.y;\n var x3 = f1.x;\n var y3 = f1.y;\n var x4 = f2.x;\n var y4 = f2.y;\n var x = void 0,\n y = void 0; // intersection point\n var a1 = void 0,\n a2 = void 0,\n b1 = void 0,\n b2 = void 0,\n c1 = void 0,\n c2 = void 0; // coefficients of line eqns.\n var denom = void 0;\n\n a1 = y2 - y1;\n b1 = x1 - x2;\n c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 }\n\n a2 = y4 - y3;\n b2 = x3 - x4;\n c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 }\n\n denom = a1 * b2 - a2 * b1;\n\n if (denom === 0) {\n return null;\n }\n\n x = (b1 * c2 - b2 * c1) / denom;\n y = (a2 * c1 - a1 * c2) / denom;\n\n return new Point(x, y);\n};\n\n/**\n * This method finds and returns the angle of the vector from the + x-axis\n * in clockwise direction (compatible w/ Java coordinate system!).\n */\nIGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) {\n var C_angle = void 0;\n\n if (Cx !== Nx) {\n C_angle = Math.atan((Ny - Cy) / (Nx - Cx));\n\n if (Nx < Cx) {\n C_angle += Math.PI;\n } else if (Ny < Cy) {\n C_angle += this.TWO_PI;\n }\n } else if (Ny < Cy) {\n C_angle = this.ONE_AND_HALF_PI; // 270 degrees\n } else {\n C_angle = this.HALF_PI; // 90 degrees\n }\n\n return C_angle;\n};\n\n/**\n * This method checks whether the given two line segments (one with point\n * p1 and p2, the other with point p3 and p4) intersect at a point other\n * than these points.\n */\nIGeometry.doIntersect = function (p1, p2, p3, p4) {\n var a = p1.x;\n var b = p1.y;\n var c = p2.x;\n var d = p2.y;\n var p = p3.x;\n var q = p3.y;\n var r = p4.x;\n var s = p4.y;\n var det = (c - a) * (s - q) - (r - p) * (d - b);\n\n if (det === 0) {\n return false;\n } else {\n var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det;\n var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det;\n return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1;\n }\n};\n\n/**\n * This method checks and calculates the intersection of \n * a line segment and a circle.\n */\nIGeometry.findCircleLineIntersections = function (Ex, Ey, Lx, Ly, Cx, Cy, r) {\n\n // E is the starting point of the ray,\n // L is the end point of the ray,\n // C is the center of sphere you're testing against\n // r is the radius of that sphere\n\n // Compute:\n // d = L - E ( Direction vector of ray, from start to end )\n // f = E - C ( Vector from center sphere to ray start )\n\n // Then the intersection is found by..\n // P = E + t * d\n // This is a parametric equation:\n // Px = Ex + tdx\n // Py = Ey + tdy\n\n // get a, b, c values\n var a = (Lx - Ex) * (Lx - Ex) + (Ly - Ey) * (Ly - Ey);\n var b = 2 * ((Ex - Cx) * (Lx - Ex) + (Ey - Cy) * (Ly - Ey));\n var c = (Ex - Cx) * (Ex - Cx) + (Ey - Cy) * (Ey - Cy) - r * r;\n\n // get discriminant\n var disc = b * b - 4 * a * c;\n if (disc >= 0) {\n // insert into quadratic formula\n var t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a);\n var t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / (2 * a);\n var intersections = null;\n if (t1 >= 0 && t1 <= 1) {\n // t1 is the intersection, and it's closer than t2\n // (since t1 uses -b - discriminant)\n // Impale, Poke\n return [t1];\n }\n\n // here t1 didn't intersect so we are either started\n // inside the sphere or completely past it\n if (t2 >= 0 && t2 <= 1) {\n // ExitWound\n return [t2];\n }\n\n return intersections;\n } else return null;\n};\n\n// -----------------------------------------------------------------------------\n// Section: Class Constants\n// -----------------------------------------------------------------------------\n/**\n * Some useful pre-calculated constants\n */\nIGeometry.HALF_PI = 0.5 * Math.PI;\nIGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI;\nIGeometry.TWO_PI = 2.0 * Math.PI;\nIGeometry.THREE_PI = 3.0 * Math.PI;\n\nmodule.exports = IGeometry;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction IMath() {}\n\n/**\n * This method returns the sign of the input value.\n */\nIMath.sign = function (value) {\n if (value > 0) {\n return 1;\n } else if (value < 0) {\n return -1;\n } else {\n return 0;\n }\n};\n\nIMath.floor = function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n};\n\nIMath.ceil = function (value) {\n return value < 0 ? Math.floor(value) : Math.ceil(value);\n};\n\nmodule.exports = IMath;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Integer() {}\n\nInteger.MAX_VALUE = 2147483647;\nInteger.MIN_VALUE = -2147483648;\n\nmodule.exports = Integer;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar nodeFrom = function nodeFrom(value) {\n return { value: value, next: null, prev: null };\n};\n\nvar add = function add(prev, node, next, list) {\n if (prev !== null) {\n prev.next = node;\n } else {\n list.head = node;\n }\n\n if (next !== null) {\n next.prev = node;\n } else {\n list.tail = node;\n }\n\n node.prev = prev;\n node.next = next;\n\n list.length++;\n\n return node;\n};\n\nvar _remove = function _remove(node, list) {\n var prev = node.prev,\n next = node.next;\n\n\n if (prev !== null) {\n prev.next = next;\n } else {\n list.head = next;\n }\n\n if (next !== null) {\n next.prev = prev;\n } else {\n list.tail = prev;\n }\n\n node.prev = node.next = null;\n\n list.length--;\n\n return node;\n};\n\nvar LinkedList = function () {\n function LinkedList(vals) {\n var _this = this;\n\n _classCallCheck(this, LinkedList);\n\n this.length = 0;\n this.head = null;\n this.tail = null;\n\n if (vals != null) {\n vals.forEach(function (v) {\n return _this.push(v);\n });\n }\n }\n\n _createClass(LinkedList, [{\n key: \"size\",\n value: function size() {\n return this.length;\n }\n }, {\n key: \"insertBefore\",\n value: function insertBefore(val, otherNode) {\n return add(otherNode.prev, nodeFrom(val), otherNode, this);\n }\n }, {\n key: \"insertAfter\",\n value: function insertAfter(val, otherNode) {\n return add(otherNode, nodeFrom(val), otherNode.next, this);\n }\n }, {\n key: \"insertNodeBefore\",\n value: function insertNodeBefore(newNode, otherNode) {\n return add(otherNode.prev, newNode, otherNode, this);\n }\n }, {\n key: \"insertNodeAfter\",\n value: function insertNodeAfter(newNode, otherNode) {\n return add(otherNode, newNode, otherNode.next, this);\n }\n }, {\n key: \"push\",\n value: function push(val) {\n return add(this.tail, nodeFrom(val), null, this);\n }\n }, {\n key: \"unshift\",\n value: function unshift(val) {\n return add(null, nodeFrom(val), this.head, this);\n }\n }, {\n key: \"remove\",\n value: function remove(node) {\n return _remove(node, this);\n }\n }, {\n key: \"pop\",\n value: function pop() {\n return _remove(this.tail, this).value;\n }\n }, {\n key: \"popNode\",\n value: function popNode() {\n return _remove(this.tail, this);\n }\n }, {\n key: \"shift\",\n value: function shift() {\n return _remove(this.head, this).value;\n }\n }, {\n key: \"shiftNode\",\n value: function shiftNode() {\n return _remove(this.head, this);\n }\n }, {\n key: \"get_object_at\",\n value: function get_object_at(index) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n return current.value;\n }\n }\n }, {\n key: \"set_object_at\",\n value: function set_object_at(index, value) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n current.value = value;\n }\n }\n }]);\n\n return LinkedList;\n}();\n\nmodule.exports = LinkedList;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\r\n *This class is the javascript implementation of the Point.java class in jdk\r\n */\nfunction Point(x, y, p) {\n this.x = null;\n this.y = null;\n if (x == null && y == null && p == null) {\n this.x = 0;\n this.y = 0;\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n this.x = x;\n this.y = y;\n } else if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.x = p.x;\n this.y = p.y;\n }\n}\n\nPoint.prototype.getX = function () {\n return this.x;\n};\n\nPoint.prototype.getY = function () {\n return this.y;\n};\n\nPoint.prototype.getLocation = function () {\n return new Point(this.x, this.y);\n};\n\nPoint.prototype.setLocation = function (x, y, p) {\n if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.setLocation(p.x, p.y);\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n //if both parameters are integer just move (x,y) location\n if (parseInt(x) == x && parseInt(y) == y) {\n this.move(x, y);\n } else {\n this.x = Math.floor(x + 0.5);\n this.y = Math.floor(y + 0.5);\n }\n }\n};\n\nPoint.prototype.move = function (x, y) {\n this.x = x;\n this.y = y;\n};\n\nPoint.prototype.translate = function (dx, dy) {\n this.x += dx;\n this.y += dy;\n};\n\nPoint.prototype.equals = function (obj) {\n if (obj.constructor.name == \"Point\") {\n var pt = obj;\n return this.x == pt.x && this.y == pt.y;\n }\n return this == obj;\n};\n\nPoint.prototype.toString = function () {\n return new Point().constructor.name + \"[x=\" + this.x + \",y=\" + this.y + \"]\";\n};\n\nmodule.exports = Point;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RectangleD(x, y, width, height) {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n\n if (x != null && y != null && width != null && height != null) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n\nRectangleD.prototype.getX = function () {\n return this.x;\n};\n\nRectangleD.prototype.setX = function (x) {\n this.x = x;\n};\n\nRectangleD.prototype.getY = function () {\n return this.y;\n};\n\nRectangleD.prototype.setY = function (y) {\n this.y = y;\n};\n\nRectangleD.prototype.getWidth = function () {\n return this.width;\n};\n\nRectangleD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nRectangleD.prototype.getHeight = function () {\n return this.height;\n};\n\nRectangleD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nRectangleD.prototype.getRight = function () {\n return this.x + this.width;\n};\n\nRectangleD.prototype.getBottom = function () {\n return this.y + this.height;\n};\n\nRectangleD.prototype.intersects = function (a) {\n if (this.getRight() < a.x) {\n return false;\n }\n\n if (this.getBottom() < a.y) {\n return false;\n }\n\n if (a.getRight() < this.x) {\n return false;\n }\n\n if (a.getBottom() < this.y) {\n return false;\n }\n\n return true;\n};\n\nRectangleD.prototype.getCenterX = function () {\n return this.x + this.width / 2;\n};\n\nRectangleD.prototype.getMinX = function () {\n return this.getX();\n};\n\nRectangleD.prototype.getMaxX = function () {\n return this.getX() + this.width;\n};\n\nRectangleD.prototype.getCenterY = function () {\n return this.y + this.height / 2;\n};\n\nRectangleD.prototype.getMinY = function () {\n return this.getY();\n};\n\nRectangleD.prototype.getMaxY = function () {\n return this.getY() + this.height;\n};\n\nRectangleD.prototype.getWidthHalf = function () {\n return this.width / 2;\n};\n\nRectangleD.prototype.getHeightHalf = function () {\n return this.height / 2;\n};\n\nmodule.exports = RectangleD;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction UniqueIDGeneretor() {}\n\nUniqueIDGeneretor.lastID = 0;\n\nUniqueIDGeneretor.createID = function (obj) {\n if (UniqueIDGeneretor.isPrimitive(obj)) {\n return obj;\n }\n if (obj.uniqueID != null) {\n return obj.uniqueID;\n }\n obj.uniqueID = UniqueIDGeneretor.getString();\n UniqueIDGeneretor.lastID++;\n return obj.uniqueID;\n};\n\nUniqueIDGeneretor.getString = function (id) {\n if (id == null) id = UniqueIDGeneretor.lastID;\n return \"Object#\" + id + \"\";\n};\n\nUniqueIDGeneretor.isPrimitive = function (arg) {\n var type = typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg);\n return arg == null || type != \"object\" && type != \"function\";\n};\n\nmodule.exports = UniqueIDGeneretor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(7);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar LGraph = __webpack_require__(6);\nvar PointD = __webpack_require__(5);\nvar Transform = __webpack_require__(17);\nvar Emitter = __webpack_require__(29);\n\nfunction Layout(isRemoteUse) {\n Emitter.call(this);\n\n //Layout Quality: 0:draft, 1:default, 2:proof\n this.layoutQuality = LayoutConstants.QUALITY;\n //Whether layout should create bendpoints as needed or not\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n //Whether layout should be incremental or not\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n //Whether we animate from before to after layout node positions\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n //Whether we animate the layout process or not\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n //Number iterations that should be done between two successive animations\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n /**\r\n * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When\r\n * they are, both spring and repulsion forces between two leaf nodes can be\r\n * calculated without the expensive clipping point calculations, resulting\r\n * in major speed-up.\r\n */\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n /**\r\n * This is used for creation of bendpoints by using dummy nodes and edges.\r\n * Maps an LEdge to its dummy bendpoint path.\r\n */\n this.edgeToDummyNodes = new Map();\n this.graphManager = new LGraphManager(this);\n this.isLayoutFinished = false;\n this.isSubLayout = false;\n this.isRemoteUse = false;\n\n if (isRemoteUse != null) {\n this.isRemoteUse = isRemoteUse;\n }\n}\n\nLayout.RANDOM_SEED = 1;\n\nLayout.prototype = Object.create(Emitter.prototype);\n\nLayout.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLayout.prototype.getAllNodes = function () {\n return this.graphManager.getAllNodes();\n};\n\nLayout.prototype.getAllEdges = function () {\n return this.graphManager.getAllEdges();\n};\n\nLayout.prototype.getAllNodesToApplyGravitation = function () {\n return this.graphManager.getAllNodesToApplyGravitation();\n};\n\nLayout.prototype.newGraphManager = function () {\n var gm = new LGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nLayout.prototype.newGraph = function (vGraph) {\n return new LGraph(null, this.graphManager, vGraph);\n};\n\nLayout.prototype.newNode = function (vNode) {\n return new LNode(this.graphManager, vNode);\n};\n\nLayout.prototype.newEdge = function (vEdge) {\n return new LEdge(null, null, vEdge);\n};\n\nLayout.prototype.checkLayoutSuccess = function () {\n return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge();\n};\n\nLayout.prototype.runLayout = function () {\n this.isLayoutFinished = false;\n\n if (this.tilingPreLayout) {\n this.tilingPreLayout();\n }\n\n this.initParameters();\n var isLayoutSuccessfull;\n\n if (this.checkLayoutSuccess()) {\n isLayoutSuccessfull = false;\n } else {\n isLayoutSuccessfull = this.layout();\n }\n\n if (LayoutConstants.ANIMATE === 'during') {\n // If this is a 'during' layout animation. Layout is not finished yet. \n // We need to perform these in index.js when layout is really finished.\n return false;\n }\n\n if (isLayoutSuccessfull) {\n if (!this.isSubLayout) {\n this.doPostLayout();\n }\n }\n\n if (this.tilingPostLayout) {\n this.tilingPostLayout();\n }\n\n this.isLayoutFinished = true;\n\n return isLayoutSuccessfull;\n};\n\n/**\r\n * This method performs the operations required after layout.\r\n */\nLayout.prototype.doPostLayout = function () {\n //assert !isSubLayout : \"Should not be called on sub-layout!\";\n // Propagate geometric changes to v-level objects\n if (!this.incremental) {\n this.transform();\n }\n this.update();\n};\n\n/**\r\n * This method updates the geometry of the target graph according to\r\n * calculated layout.\r\n */\nLayout.prototype.update2 = function () {\n // update bend points\n if (this.createBendsAsNeeded) {\n this.createBendpointsFromDummyNodes();\n\n // reset all edges, since the topology has changed\n this.graphManager.resetAllEdges();\n }\n\n // perform edge, node and root updates if layout is not called\n // remotely\n if (!this.isRemoteUse) {\n // update all edges\n var edge;\n var allEdges = this.graphManager.getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n // this.update(edge);\n }\n\n // recursively update nodes\n var node;\n var nodes = this.graphManager.getRoot().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n // this.update(node);\n }\n\n // update root graph\n this.update(this.graphManager.getRoot());\n }\n};\n\nLayout.prototype.update = function (obj) {\n if (obj == null) {\n this.update2();\n } else if (obj instanceof LNode) {\n var node = obj;\n if (node.getChild() != null) {\n // since node is compound, recursively update child nodes\n var nodes = node.getChild().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n update(nodes[i]);\n }\n }\n\n // if the l-level node is associated with a v-level graph object,\n // then it is assumed that the v-level node implements the\n // interface Updatable.\n if (node.vGraphObject != null) {\n // cast to Updatable without any type check\n var vNode = node.vGraphObject;\n\n // call the update method of the interface\n vNode.update(node);\n }\n } else if (obj instanceof LEdge) {\n var edge = obj;\n // if the l-level edge is associated with a v-level graph object,\n // then it is assumed that the v-level edge implements the\n // interface Updatable.\n\n if (edge.vGraphObject != null) {\n // cast to Updatable without any type check\n var vEdge = edge.vGraphObject;\n\n // call the update method of the interface\n vEdge.update(edge);\n }\n } else if (obj instanceof LGraph) {\n var graph = obj;\n // if the l-level graph is associated with a v-level graph object,\n // then it is assumed that the v-level object implements the\n // interface Updatable.\n\n if (graph.vGraphObject != null) {\n // cast to Updatable without any type check\n var vGraph = graph.vGraphObject;\n\n // call the update method of the interface\n vGraph.update(graph);\n }\n }\n};\n\n/**\r\n * This method is used to set all layout parameters to default values\r\n * determined at compile time.\r\n */\nLayout.prototype.initParameters = function () {\n if (!this.isSubLayout) {\n this.layoutQuality = LayoutConstants.QUALITY;\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n }\n\n if (this.animationDuringLayout) {\n this.animationOnLayout = false;\n }\n};\n\nLayout.prototype.transform = function (newLeftTop) {\n if (newLeftTop == undefined) {\n this.transform(new PointD(0, 0));\n } else {\n // create a transformation object (from Eclipse to layout). When an\n // inverse transform is applied, we get upper-left coordinate of the\n // drawing or the root graph at given input coordinate (some margins\n // already included in calculation of left-top).\n\n var trans = new Transform();\n var leftTop = this.graphManager.getRoot().updateLeftTop();\n\n if (leftTop != null) {\n trans.setWorldOrgX(newLeftTop.x);\n trans.setWorldOrgY(newLeftTop.y);\n\n trans.setDeviceOrgX(leftTop.x);\n trans.setDeviceOrgY(leftTop.y);\n\n var nodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n node.transform(trans);\n }\n }\n }\n};\n\nLayout.prototype.positionNodesRandomly = function (graph) {\n\n if (graph == undefined) {\n //assert !this.incremental;\n this.positionNodesRandomly(this.getGraphManager().getRoot());\n this.getGraphManager().getRoot().updateBounds(true);\n } else {\n var lNode;\n var childGraph;\n\n var nodes = graph.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n lNode = nodes[i];\n childGraph = lNode.getChild();\n\n if (childGraph == null) {\n lNode.scatter();\n } else if (childGraph.getNodes().length == 0) {\n lNode.scatter();\n } else {\n this.positionNodesRandomly(childGraph);\n lNode.updateBounds();\n }\n }\n }\n};\n\n/**\r\n * This method returns a list of trees where each tree is represented as a\r\n * list of l-nodes. The method returns a list of size 0 when:\r\n * - The graph is not flat or\r\n * - One of the component(s) of the graph is not a tree.\r\n */\nLayout.prototype.getFlatForest = function () {\n var flatForest = [];\n var isForest = true;\n\n // Quick reference for all nodes in the graph manager associated with\n // this layout. The list should not be changed.\n var allNodes = this.graphManager.getRoot().getNodes();\n\n // First be sure that the graph is flat\n var isFlat = true;\n\n for (var i = 0; i < allNodes.length; i++) {\n if (allNodes[i].getChild() != null) {\n isFlat = false;\n }\n }\n\n // Return empty forest if the graph is not flat.\n if (!isFlat) {\n return flatForest;\n }\n\n // Run BFS for each component of the graph.\n\n var visited = new Set();\n var toBeVisited = [];\n var parents = new Map();\n var unProcessedNodes = [];\n\n unProcessedNodes = unProcessedNodes.concat(allNodes);\n\n // Each iteration of this loop finds a component of the graph and\n // decides whether it is a tree or not. If it is a tree, adds it to the\n // forest and continued with the next component.\n\n while (unProcessedNodes.length > 0 && isForest) {\n toBeVisited.push(unProcessedNodes[0]);\n\n // Start the BFS. Each iteration of this loop visits a node in a\n // BFS manner.\n while (toBeVisited.length > 0 && isForest) {\n //pool operation\n var currentNode = toBeVisited[0];\n toBeVisited.splice(0, 1);\n visited.add(currentNode);\n\n // Traverse all neighbors of this node\n var neighborEdges = currentNode.getEdges();\n\n for (var i = 0; i < neighborEdges.length; i++) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode);\n\n // If BFS is not growing from this neighbor.\n if (parents.get(currentNode) != currentNeighbor) {\n // We haven't previously visited this neighbor.\n if (!visited.has(currentNeighbor)) {\n toBeVisited.push(currentNeighbor);\n parents.set(currentNeighbor, currentNode);\n }\n // Since we have previously visited this neighbor and\n // this neighbor is not parent of currentNode, given\n // graph contains a component that is not tree, hence\n // it is not a forest.\n else {\n isForest = false;\n break;\n }\n }\n }\n }\n\n // The graph contains a component that is not a tree. Empty\n // previously found trees. The method will end.\n if (!isForest) {\n flatForest = [];\n }\n // Save currently visited nodes as a tree in our forest. Reset\n // visited and parents lists. Continue with the next component of\n // the graph, if any.\n else {\n var temp = [].concat(_toConsumableArray(visited));\n flatForest.push(temp);\n //flatForest = flatForest.concat(temp);\n //unProcessedNodes.removeAll(visited);\n for (var i = 0; i < temp.length; i++) {\n var value = temp[i];\n var index = unProcessedNodes.indexOf(value);\n if (index > -1) {\n unProcessedNodes.splice(index, 1);\n }\n }\n visited = new Set();\n parents = new Map();\n }\n }\n\n return flatForest;\n};\n\n/**\r\n * This method creates dummy nodes (an l-level node with minimal dimensions)\r\n * for the given edge (one per bendpoint). The existing l-level structure\r\n * is updated accordingly.\r\n */\nLayout.prototype.createDummyNodesForBendpoints = function (edge) {\n var dummyNodes = [];\n var prev = edge.source;\n\n var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target);\n\n for (var i = 0; i < edge.bendpoints.length; i++) {\n // create new dummy node\n var dummyNode = this.newNode(null);\n dummyNode.setRect(new Point(0, 0), new Dimension(1, 1));\n\n graph.add(dummyNode);\n\n // create new dummy edge between prev and dummy node\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, dummyNode);\n\n dummyNodes.add(dummyNode);\n prev = dummyNode;\n }\n\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, edge.target);\n\n this.edgeToDummyNodes.set(edge, dummyNodes);\n\n // remove real edge from graph manager if it is inter-graph\n if (edge.isInterGraph()) {\n this.graphManager.remove(edge);\n }\n // else, remove the edge from the current graph\n else {\n graph.remove(edge);\n }\n\n return dummyNodes;\n};\n\n/**\r\n * This method creates bendpoints for edges from the dummy nodes\r\n * at l-level.\r\n */\nLayout.prototype.createBendpointsFromDummyNodes = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges);\n\n for (var k = 0; k < edges.length; k++) {\n var lEdge = edges[k];\n\n if (lEdge.bendpoints.length > 0) {\n var path = this.edgeToDummyNodes.get(lEdge);\n\n for (var i = 0; i < path.length; i++) {\n var dummyNode = path[i];\n var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY());\n\n // update bendpoint's location according to dummy node\n var ebp = lEdge.bendpoints.get(i);\n ebp.x = p.x;\n ebp.y = p.y;\n\n // remove the dummy node, dummy edges incident with this\n // dummy node is also removed (within the remove method)\n dummyNode.getOwner().remove(dummyNode);\n }\n\n // add the real edge to graph\n this.graphManager.add(lEdge, lEdge.source, lEdge.target);\n }\n }\n};\n\nLayout.transform = function (sliderValue, defaultValue, minDiv, maxMul) {\n if (minDiv != undefined && maxMul != undefined) {\n var value = defaultValue;\n\n if (sliderValue <= 50) {\n var minValue = defaultValue / minDiv;\n value -= (defaultValue - minValue) / 50 * (50 - sliderValue);\n } else {\n var maxValue = defaultValue * maxMul;\n value += (maxValue - defaultValue) / 50 * (sliderValue - 50);\n }\n\n return value;\n } else {\n var a, b;\n\n if (sliderValue <= 50) {\n a = 9.0 * defaultValue / 500.0;\n b = defaultValue / 10.0;\n } else {\n a = 9.0 * defaultValue / 50.0;\n b = -8 * defaultValue;\n }\n\n return a * sliderValue + b;\n }\n};\n\n/**\r\n * This method finds and returns the center of the given nodes, assuming\r\n * that the given nodes form a tree in themselves.\r\n */\nLayout.findCenterOfTree = function (nodes) {\n var list = [];\n list = list.concat(nodes);\n\n var removedNodes = [];\n var remainingDegrees = new Map();\n var foundCenter = false;\n var centerNode = null;\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n var degree = node.getNeighborsList().size;\n remainingDegrees.set(node, node.getNeighborsList().size);\n\n if (degree == 1) {\n removedNodes.push(node);\n }\n }\n\n var tempList = [];\n tempList = tempList.concat(removedNodes);\n\n while (!foundCenter) {\n var tempList2 = [];\n tempList2 = tempList2.concat(tempList);\n tempList = [];\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n\n var index = list.indexOf(node);\n if (index >= 0) {\n list.splice(index, 1);\n }\n\n var neighbours = node.getNeighborsList();\n\n neighbours.forEach(function (neighbour) {\n if (removedNodes.indexOf(neighbour) < 0) {\n var otherDegree = remainingDegrees.get(neighbour);\n var newDegree = otherDegree - 1;\n\n if (newDegree == 1) {\n tempList.push(neighbour);\n }\n\n remainingDegrees.set(neighbour, newDegree);\n }\n });\n }\n\n removedNodes = removedNodes.concat(tempList);\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n }\n\n return centerNode;\n};\n\n/**\r\n * During the coarsening process, this layout may be referenced by two graph managers\r\n * this setter function grants access to change the currently being used graph manager\r\n */\nLayout.prototype.setGraphManager = function (gm) {\n this.graphManager = gm;\n};\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RandomSeed() {}\n// adapted from: https://stackoverflow.com/a/19303725\nRandomSeed.seed = 1;\nRandomSeed.x = 0;\n\nRandomSeed.nextDouble = function () {\n RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000;\n return RandomSeed.x - Math.floor(RandomSeed.x);\n};\n\nmodule.exports = RandomSeed;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar PointD = __webpack_require__(5);\n\nfunction Transform(x, y) {\n this.lworldOrgX = 0.0;\n this.lworldOrgY = 0.0;\n this.ldeviceOrgX = 0.0;\n this.ldeviceOrgY = 0.0;\n this.lworldExtX = 1.0;\n this.lworldExtY = 1.0;\n this.ldeviceExtX = 1.0;\n this.ldeviceExtY = 1.0;\n}\n\nTransform.prototype.getWorldOrgX = function () {\n return this.lworldOrgX;\n};\n\nTransform.prototype.setWorldOrgX = function (wox) {\n this.lworldOrgX = wox;\n};\n\nTransform.prototype.getWorldOrgY = function () {\n return this.lworldOrgY;\n};\n\nTransform.prototype.setWorldOrgY = function (woy) {\n this.lworldOrgY = woy;\n};\n\nTransform.prototype.getWorldExtX = function () {\n return this.lworldExtX;\n};\n\nTransform.prototype.setWorldExtX = function (wex) {\n this.lworldExtX = wex;\n};\n\nTransform.prototype.getWorldExtY = function () {\n return this.lworldExtY;\n};\n\nTransform.prototype.setWorldExtY = function (wey) {\n this.lworldExtY = wey;\n};\n\n/* Device related */\n\nTransform.prototype.getDeviceOrgX = function () {\n return this.ldeviceOrgX;\n};\n\nTransform.prototype.setDeviceOrgX = function (dox) {\n this.ldeviceOrgX = dox;\n};\n\nTransform.prototype.getDeviceOrgY = function () {\n return this.ldeviceOrgY;\n};\n\nTransform.prototype.setDeviceOrgY = function (doy) {\n this.ldeviceOrgY = doy;\n};\n\nTransform.prototype.getDeviceExtX = function () {\n return this.ldeviceExtX;\n};\n\nTransform.prototype.setDeviceExtX = function (dex) {\n this.ldeviceExtX = dex;\n};\n\nTransform.prototype.getDeviceExtY = function () {\n return this.ldeviceExtY;\n};\n\nTransform.prototype.setDeviceExtY = function (dey) {\n this.ldeviceExtY = dey;\n};\n\nTransform.prototype.transformX = function (x) {\n var xDevice = 0.0;\n var worldExtX = this.lworldExtX;\n if (worldExtX != 0.0) {\n xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX;\n }\n\n return xDevice;\n};\n\nTransform.prototype.transformY = function (y) {\n var yDevice = 0.0;\n var worldExtY = this.lworldExtY;\n if (worldExtY != 0.0) {\n yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY;\n }\n\n return yDevice;\n};\n\nTransform.prototype.inverseTransformX = function (x) {\n var xWorld = 0.0;\n var deviceExtX = this.ldeviceExtX;\n if (deviceExtX != 0.0) {\n xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX;\n }\n\n return xWorld;\n};\n\nTransform.prototype.inverseTransformY = function (y) {\n var yWorld = 0.0;\n var deviceExtY = this.ldeviceExtY;\n if (deviceExtY != 0.0) {\n yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY;\n }\n return yWorld;\n};\n\nTransform.prototype.inverseTransformPoint = function (inPoint) {\n var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y));\n return outPoint;\n};\n\nmodule.exports = Transform;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar Layout = __webpack_require__(15);\nvar FDLayoutConstants = __webpack_require__(4);\nvar LayoutConstants = __webpack_require__(0);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction FDLayout() {\n Layout.call(this);\n\n this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.totalDisplacement = 0.0;\n this.oldTotalDisplacement = 0.0;\n this.maxIterations = FDLayoutConstants.MAX_ITERATIONS;\n}\n\nFDLayout.prototype = Object.create(Layout.prototype);\n\nfor (var prop in Layout) {\n FDLayout[prop] = Layout[prop];\n}\n\nFDLayout.prototype.initParameters = function () {\n Layout.prototype.initParameters.call(this, arguments);\n\n this.totalIterations = 0;\n this.notAnimatedIterations = 0;\n\n this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION;\n\n this.grid = [];\n};\n\nFDLayout.prototype.calcIdealEdgeLengths = function () {\n var edge;\n var originalIdealLength;\n var lcaDepth;\n var source;\n var target;\n var sizeOfSourceInLca;\n var sizeOfTargetInLca;\n\n var allEdges = this.getGraphManager().getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n\n originalIdealLength = edge.idealLength;\n\n if (edge.isInterGraph) {\n source = edge.getSource();\n target = edge.getTarget();\n\n sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize();\n sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize();\n\n if (this.useSmartIdealEdgeLengthCalculation) {\n edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE;\n }\n\n lcaDepth = edge.getLca().getInclusionTreeDepth();\n\n edge.idealLength += originalIdealLength * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth);\n }\n }\n};\n\nFDLayout.prototype.initSpringEmbedder = function () {\n\n var s = this.getAllNodes().length;\n if (this.incremental) {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n }\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL;\n } else {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n } else {\n this.coolingFactor = 1.0;\n }\n this.initialCoolingFactor = this.coolingFactor;\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT;\n }\n\n this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations);\n\n // Reassign this attribute by using new constant value\n this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length;\n\n this.repulsionRange = this.calcRepulsionRange();\n};\n\nFDLayout.prototype.calcSpringForces = function () {\n var lEdges = this.getAllEdges();\n var edge;\n\n for (var i = 0; i < lEdges.length; i++) {\n edge = lEdges[i];\n\n this.calcSpringForce(edge, edge.idealLength);\n }\n};\n\nFDLayout.prototype.calcRepulsionForces = function () {\n var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var i, j;\n var nodeA, nodeB;\n var lNodes = this.getAllNodes();\n var processedNodeSet;\n\n if (this.useFRGridVariant) {\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) {\n this.updateGrid();\n }\n\n processedNodeSet = new Set();\n\n // calculate repulsion forces between each nodes and its surrounding\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate);\n processedNodeSet.add(nodeA);\n }\n } else {\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n\n for (j = i + 1; j < lNodes.length; j++) {\n nodeB = lNodes[j];\n\n // If both nodes are not members of the same graph, skip.\n if (nodeA.getOwner() != nodeB.getOwner()) {\n continue;\n }\n\n this.calcRepulsionForce(nodeA, nodeB);\n }\n }\n }\n};\n\nFDLayout.prototype.calcGravitationalForces = function () {\n var node;\n var lNodes = this.getAllNodesToApplyGravitation();\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n this.calcGravitationalForce(node);\n }\n};\n\nFDLayout.prototype.moveNodes = function () {\n var lNodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.move();\n }\n};\n\nFDLayout.prototype.calcSpringForce = function (edge, idealLength) {\n var sourceNode = edge.getSource();\n var targetNode = edge.getTarget();\n\n var length;\n var springForce;\n var springForceX;\n var springForceY;\n\n // Update edge length\n if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) {\n edge.updateLengthSimple();\n } else {\n edge.updateLength();\n\n if (edge.isOverlapingSourceAndTarget) {\n return;\n }\n }\n\n length = edge.getLength();\n\n if (length == 0) return;\n\n // Calculate spring forces\n springForce = edge.edgeElasticity * (length - idealLength);\n\n // Project force onto x and y axes\n springForceX = springForce * (edge.lengthX / length);\n springForceY = springForce * (edge.lengthY / length);\n\n // Apply forces on the end nodes\n sourceNode.springForceX += springForceX;\n sourceNode.springForceY += springForceY;\n targetNode.springForceX -= springForceX;\n targetNode.springForceY -= springForceY;\n};\n\nFDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) {\n var rectA = nodeA.getRect();\n var rectB = nodeB.getRect();\n var overlapAmount = new Array(2);\n var clipPoints = new Array(4);\n var distanceX;\n var distanceY;\n var distanceSquared;\n var distance;\n var repulsionForce;\n var repulsionForceX;\n var repulsionForceY;\n\n if (rectA.intersects(rectB)) // two nodes overlap\n {\n // calculate separation amount in x and y directions\n IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0);\n\n repulsionForceX = 2 * overlapAmount[0];\n repulsionForceY = 2 * overlapAmount[1];\n\n var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren);\n\n // Apply forces on the two nodes\n nodeA.repulsionForceX -= childrenConstant * repulsionForceX;\n nodeA.repulsionForceY -= childrenConstant * repulsionForceY;\n nodeB.repulsionForceX += childrenConstant * repulsionForceX;\n nodeB.repulsionForceY += childrenConstant * repulsionForceY;\n } else // no overlap\n {\n // calculate distance\n\n if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers\n {\n distanceX = rectB.getCenterX() - rectA.getCenterX();\n distanceY = rectB.getCenterY() - rectA.getCenterY();\n } else // use clipping points\n {\n IGeometry.getIntersection(rectA, rectB, clipPoints);\n\n distanceX = clipPoints[2] - clipPoints[0];\n distanceY = clipPoints[3] - clipPoints[1];\n }\n\n // No repulsion range. FR grid variant should take care of this.\n if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n distanceSquared = distanceX * distanceX + distanceY * distanceY;\n distance = Math.sqrt(distanceSquared);\n\n // Here we use half of the nodes' repulsion values for backward compatibility\n repulsionForce = (nodeA.nodeRepulsion / 2 + nodeB.nodeRepulsion / 2) * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared;\n\n // Project force onto x and y axes\n repulsionForceX = repulsionForce * distanceX / distance;\n repulsionForceY = repulsionForce * distanceY / distance;\n\n // Apply forces on the two nodes \n nodeA.repulsionForceX -= repulsionForceX;\n nodeA.repulsionForceY -= repulsionForceY;\n nodeB.repulsionForceX += repulsionForceX;\n nodeB.repulsionForceY += repulsionForceY;\n }\n};\n\nFDLayout.prototype.calcGravitationalForce = function (node) {\n var ownerGraph;\n var ownerCenterX;\n var ownerCenterY;\n var distanceX;\n var distanceY;\n var absDistanceX;\n var absDistanceY;\n var estimatedSize;\n ownerGraph = node.getOwner();\n\n ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2;\n ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2;\n distanceX = node.getCenterX() - ownerCenterX;\n distanceY = node.getCenterY() - ownerCenterY;\n absDistanceX = Math.abs(distanceX) + node.getWidth() / 2;\n absDistanceY = Math.abs(distanceY) + node.getHeight() / 2;\n\n if (node.getOwner() == this.graphManager.getRoot()) // in the root graph\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX;\n node.gravitationForceY = -this.gravityConstant * distanceY;\n }\n } else // inside a compound\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant;\n node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant;\n }\n }\n};\n\nFDLayout.prototype.isConverged = function () {\n var converged;\n var oscilating = false;\n\n if (this.totalIterations > this.maxIterations / 3) {\n oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2;\n }\n\n converged = this.totalDisplacement < this.totalDisplacementThreshold;\n\n this.oldTotalDisplacement = this.totalDisplacement;\n\n return converged || oscilating;\n};\n\nFDLayout.prototype.animate = function () {\n if (this.animationDuringLayout && !this.isSubLayout) {\n if (this.notAnimatedIterations == this.animationPeriod) {\n this.update();\n this.notAnimatedIterations = 0;\n } else {\n this.notAnimatedIterations++;\n }\n }\n};\n\n//This method calculates the number of children (weight) for all nodes\nFDLayout.prototype.calcNoOfChildrenForAllNodes = function () {\n var node;\n var allNodes = this.graphManager.getAllNodes();\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n node.noOfChildren = node.getNoOfChildren();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: FR-Grid Variant Repulsion Force Calculation\n// -----------------------------------------------------------------------------\n\nFDLayout.prototype.calcGrid = function (graph) {\n\n var sizeX = 0;\n var sizeY = 0;\n\n sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange));\n sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange));\n\n var grid = new Array(sizeX);\n\n for (var i = 0; i < sizeX; i++) {\n grid[i] = new Array(sizeY);\n }\n\n for (var i = 0; i < sizeX; i++) {\n for (var j = 0; j < sizeY; j++) {\n grid[i][j] = new Array();\n }\n }\n\n return grid;\n};\n\nFDLayout.prototype.addNodeToGrid = function (v, left, top) {\n\n var startX = 0;\n var finishX = 0;\n var startY = 0;\n var finishY = 0;\n\n startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange));\n finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange));\n startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange));\n finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange));\n\n for (var i = startX; i <= finishX; i++) {\n for (var j = startY; j <= finishY; j++) {\n this.grid[i][j].push(v);\n v.setGridCoordinates(startX, finishX, startY, finishY);\n }\n }\n};\n\nFDLayout.prototype.updateGrid = function () {\n var i;\n var nodeA;\n var lNodes = this.getAllNodes();\n\n this.grid = this.calcGrid(this.graphManager.getRoot());\n\n // put all nodes to proper grid cells\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop());\n }\n};\n\nFDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) {\n\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) {\n var surrounding = new Set();\n nodeA.surrounding = new Array();\n var nodeB;\n var grid = this.grid;\n\n for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) {\n for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) {\n if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) {\n for (var k = 0; k < grid[i][j].length; k++) {\n nodeB = grid[i][j][k];\n\n // If both nodes are not members of the same graph, \n // or both nodes are the same, skip.\n if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) {\n continue;\n }\n\n // check if the repulsion force between\n // nodeA and nodeB has already been calculated\n if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) {\n var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2);\n var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2);\n\n // if the distance between nodeA and nodeB \n // is less then calculation range\n if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) {\n //then add nodeB to surrounding of nodeA\n surrounding.add(nodeB);\n }\n }\n }\n }\n }\n }\n\n nodeA.surrounding = [].concat(_toConsumableArray(surrounding));\n }\n for (i = 0; i < nodeA.surrounding.length; i++) {\n this.calcRepulsionForce(nodeA, nodeA.surrounding[i]);\n }\n};\n\nFDLayout.prototype.calcRepulsionRange = function () {\n return 0.0;\n};\n\nmodule.exports = FDLayout;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LEdge = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(4);\n\nfunction FDLayoutEdge(source, target, vEdge) {\n LEdge.call(this, source, target, vEdge);\n\n // Ideal length and elasticity value for this edge\n this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n this.edgeElasticity = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n}\n\nFDLayoutEdge.prototype = Object.create(LEdge.prototype);\n\nfor (var prop in LEdge) {\n FDLayoutEdge[prop] = LEdge[prop];\n}\n\nmodule.exports = FDLayoutEdge;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LNode = __webpack_require__(3);\nvar FDLayoutConstants = __webpack_require__(4);\n\nfunction FDLayoutNode(gm, loc, size, vNode) {\n // alternative constructor is handled inside LNode\n LNode.call(this, gm, loc, size, vNode);\n\n // Repulsion value of this node\n this.nodeRepulsion = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n\n //Spring, repulsion and gravitational forces acting on this node\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n //Amount by which this node is to be moved in this iteration\n this.displacementX = 0;\n this.displacementY = 0;\n\n //Start and finish grid coordinates that this node is fallen into\n this.startX = 0;\n this.finishX = 0;\n this.startY = 0;\n this.finishY = 0;\n\n //Geometric neighbors of this node\n this.surrounding = [];\n}\n\nFDLayoutNode.prototype = Object.create(LNode.prototype);\n\nfor (var prop in LNode) {\n FDLayoutNode[prop] = LNode[prop];\n}\n\nFDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) {\n this.startX = _startX;\n this.finishX = _finishX;\n this.startY = _startY;\n this.finishY = _finishY;\n};\n\nmodule.exports = FDLayoutNode;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction DimensionD(width, height) {\n this.width = 0;\n this.height = 0;\n if (width !== null && height !== null) {\n this.height = height;\n this.width = width;\n }\n}\n\nDimensionD.prototype.getWidth = function () {\n return this.width;\n};\n\nDimensionD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nDimensionD.prototype.getHeight = function () {\n return this.height;\n};\n\nDimensionD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nmodule.exports = DimensionD;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashMap() {\n this.map = {};\n this.keys = [];\n}\n\nHashMap.prototype.put = function (key, value) {\n var theId = UniqueIDGeneretor.createID(key);\n if (!this.contains(theId)) {\n this.map[theId] = value;\n this.keys.push(key);\n }\n};\n\nHashMap.prototype.contains = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[key] != null;\n};\n\nHashMap.prototype.get = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[theId];\n};\n\nHashMap.prototype.keySet = function () {\n return this.keys;\n};\n\nmodule.exports = HashMap;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashSet() {\n this.set = {};\n}\n;\n\nHashSet.prototype.add = function (obj) {\n var theId = UniqueIDGeneretor.createID(obj);\n if (!this.contains(theId)) this.set[theId] = obj;\n};\n\nHashSet.prototype.remove = function (obj) {\n delete this.set[UniqueIDGeneretor.createID(obj)];\n};\n\nHashSet.prototype.clear = function () {\n this.set = {};\n};\n\nHashSet.prototype.contains = function (obj) {\n return this.set[UniqueIDGeneretor.createID(obj)] == obj;\n};\n\nHashSet.prototype.isEmpty = function () {\n return this.size() === 0;\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\n//concats this.set to the given list\nHashSet.prototype.addAllTo = function (list) {\n var keys = Object.keys(this.set);\n var length = keys.length;\n for (var i = 0; i < length; i++) {\n list.push(this.set[keys[i]]);\n }\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\nHashSet.prototype.addAll = function (list) {\n var s = list.length;\n for (var i = 0; i < s; i++) {\n var v = list[i];\n this.add(v);\n }\n};\n\nmodule.exports = HashSet;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Some matrix (1d and 2d array) operations\nfunction Matrix() {}\n\n/**\n * matrix multiplication\n * array1, array2 and result are 2d arrays\n */\nMatrix.multMat = function (array1, array2) {\n var result = [];\n\n for (var i = 0; i < array1.length; i++) {\n result[i] = [];\n for (var j = 0; j < array2[0].length; j++) {\n result[i][j] = 0;\n for (var k = 0; k < array1[0].length; k++) {\n result[i][j] += array1[i][k] * array2[k][j];\n }\n }\n }\n return result;\n};\n\n/**\n * matrix transpose\n * array and result are 2d arrays\n */\nMatrix.transpose = function (array) {\n var result = [];\n\n for (var i = 0; i < array[0].length; i++) {\n result[i] = [];\n for (var j = 0; j < array.length; j++) {\n result[i][j] = array[j][i];\n }\n }\n\n return result;\n};\n\n/**\n * multiply array with constant\n * array and result are 1d arrays\n */\nMatrix.multCons = function (array, constant) {\n var result = [];\n\n for (var i = 0; i < array.length; i++) {\n result[i] = array[i] * constant;\n }\n\n return result;\n};\n\n/**\n * substract two arrays\n * array1, array2 and result are 1d arrays\n */\nMatrix.minusOp = function (array1, array2) {\n var result = [];\n\n for (var i = 0; i < array1.length; i++) {\n result[i] = array1[i] - array2[i];\n }\n\n return result;\n};\n\n/**\n * dot product of two arrays with same size\n * array1 and array2 are 1d arrays\n */\nMatrix.dotProduct = function (array1, array2) {\n var product = 0;\n\n for (var i = 0; i < array1.length; i++) {\n product += array1[i] * array2[i];\n }\n\n return product;\n};\n\n/**\n * magnitude of an array\n * array is 1d array\n */\nMatrix.mag = function (array) {\n return Math.sqrt(this.dotProduct(array, array));\n};\n\n/**\n * normalization of an array\n * array and result are 1d array\n */\nMatrix.normalize = function (array) {\n var result = [];\n var magnitude = this.mag(array);\n\n for (var i = 0; i < array.length; i++) {\n result[i] = array[i] / magnitude;\n }\n\n return result;\n};\n\n/**\n * multiply an array with centering matrix\n * array and result are 1d array\n */\nMatrix.multGamma = function (array) {\n var result = [];\n var sum = 0;\n\n for (var i = 0; i < array.length; i++) {\n sum += array[i];\n }\n\n sum *= -1 / array.length;\n\n for (var _i = 0; _i < array.length; _i++) {\n result[_i] = sum + array[_i];\n }\n return result;\n};\n\n/**\n * a special matrix multiplication\n * result = 0.5 * C * INV * C^T * array\n * array and result are 1d, C and INV are 2d arrays\n */\nMatrix.multL = function (array, C, INV) {\n var result = [];\n var temp1 = [];\n var temp2 = [];\n\n // multiply by C^T\n for (var i = 0; i < C[0].length; i++) {\n var sum = 0;\n for (var j = 0; j < C.length; j++) {\n sum += -0.5 * C[j][i] * array[j];\n }\n temp1[i] = sum;\n }\n // multiply the result by INV\n for (var _i2 = 0; _i2 < INV.length; _i2++) {\n var _sum = 0;\n for (var _j = 0; _j < INV.length; _j++) {\n _sum += INV[_i2][_j] * temp1[_j];\n }\n temp2[_i2] = _sum;\n }\n // multiply the result by C\n for (var _i3 = 0; _i3 < C.length; _i3++) {\n var _sum2 = 0;\n for (var _j2 = 0; _j2 < C[0].length; _j2++) {\n _sum2 += C[_i3][_j2] * temp2[_j2];\n }\n result[_i3] = _sum2;\n }\n\n return result;\n};\n\nmodule.exports = Matrix;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * A classic Quicksort algorithm with Hoare's partition\n * - Works also on LinkedList objects\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar LinkedList = __webpack_require__(11);\n\nvar Quicksort = function () {\n function Quicksort(A, compareFunction) {\n _classCallCheck(this, Quicksort);\n\n if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction;\n\n var length = void 0;\n if (A instanceof LinkedList) length = A.size();else length = A.length;\n\n this._quicksort(A, 0, length - 1);\n }\n\n _createClass(Quicksort, [{\n key: '_quicksort',\n value: function _quicksort(A, p, r) {\n if (p < r) {\n var q = this._partition(A, p, r);\n this._quicksort(A, p, q);\n this._quicksort(A, q + 1, r);\n }\n }\n }, {\n key: '_partition',\n value: function _partition(A, p, r) {\n var x = this._get(A, p);\n var i = p;\n var j = r;\n while (true) {\n while (this.compareFunction(x, this._get(A, j))) {\n j--;\n }while (this.compareFunction(this._get(A, i), x)) {\n i++;\n }if (i < j) {\n this._swap(A, i, j);\n i++;\n j--;\n } else return j;\n }\n }\n }, {\n key: '_get',\n value: function _get(object, index) {\n if (object instanceof LinkedList) return object.get_object_at(index);else return object[index];\n }\n }, {\n key: '_set',\n value: function _set(object, index, value) {\n if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value;\n }\n }, {\n key: '_swap',\n value: function _swap(A, i, j) {\n var temp = this._get(A, i);\n this._set(A, i, this._get(A, j));\n this._set(A, j, temp);\n }\n }, {\n key: '_defaultCompareFunction',\n value: function _defaultCompareFunction(a, b) {\n return b > a;\n }\n }]);\n\n return Quicksort;\n}();\n\nmodule.exports = Quicksort;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Singular Value Decomposition implementation\nfunction SVD() {};\n\n/* Below singular value decomposition (svd) code including hypot function is adopted from https://github.com/dragonfly-ai/JamaJS\n Some changes are applied to make the code compatible with the fcose code and to make it independent from Jama.\n Input matrix is changed to a 2D array instead of Jama matrix. Matrix dimensions are taken according to 2D array instead of using Jama functions.\n An object that includes singular value components is created for return. \n The types of input parameters of the hypot function are removed. \n let is used instead of var for the variable initialization.\n*/\n/*\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright {yyyy} {name of copyright owner}\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nSVD.svd = function (A) {\n this.U = null;\n this.V = null;\n this.s = null;\n this.m = 0;\n this.n = 0;\n this.m = A.length;\n this.n = A[0].length;\n var nu = Math.min(this.m, this.n);\n this.s = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(Math.min(this.m + 1, this.n));\n this.U = function (dims) {\n var allocate = function allocate(dims) {\n if (dims.length == 0) {\n return 0;\n } else {\n var array = [];\n for (var i = 0; i < dims[0]; i++) {\n array.push(allocate(dims.slice(1)));\n }\n return array;\n }\n };\n return allocate(dims);\n }([this.m, nu]);\n this.V = function (dims) {\n var allocate = function allocate(dims) {\n if (dims.length == 0) {\n return 0;\n } else {\n var array = [];\n for (var i = 0; i < dims[0]; i++) {\n array.push(allocate(dims.slice(1)));\n }\n return array;\n }\n };\n return allocate(dims);\n }([this.n, this.n]);\n var e = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(this.n);\n var work = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(this.m);\n var wantu = true;\n var wantv = true;\n var nct = Math.min(this.m - 1, this.n);\n var nrt = Math.max(0, Math.min(this.n - 2, this.m));\n for (var k = 0; k < Math.max(nct, nrt); k++) {\n if (k < nct) {\n this.s[k] = 0;\n for (var i = k; i < this.m; i++) {\n this.s[k] = SVD.hypot(this.s[k], A[i][k]);\n }\n ;\n if (this.s[k] !== 0.0) {\n if (A[k][k] < 0.0) {\n this.s[k] = -this.s[k];\n }\n for (var _i = k; _i < this.m; _i++) {\n A[_i][k] /= this.s[k];\n }\n ;\n A[k][k] += 1.0;\n }\n this.s[k] = -this.s[k];\n }\n for (var j = k + 1; j < this.n; j++) {\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(k < nct, this.s[k] !== 0.0)) {\n var t = 0;\n for (var _i2 = k; _i2 < this.m; _i2++) {\n t += A[_i2][k] * A[_i2][j];\n }\n ;\n t = -t / A[k][k];\n for (var _i3 = k; _i3 < this.m; _i3++) {\n A[_i3][j] += t * A[_i3][k];\n }\n ;\n }\n e[j] = A[k][j];\n }\n ;\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(wantu, k < nct)) {\n for (var _i4 = k; _i4 < this.m; _i4++) {\n this.U[_i4][k] = A[_i4][k];\n }\n ;\n }\n if (k < nrt) {\n e[k] = 0;\n for (var _i5 = k + 1; _i5 < this.n; _i5++) {\n e[k] = SVD.hypot(e[k], e[_i5]);\n }\n ;\n if (e[k] !== 0.0) {\n if (e[k + 1] < 0.0) {\n e[k] = -e[k];\n }\n for (var _i6 = k + 1; _i6 < this.n; _i6++) {\n e[_i6] /= e[k];\n }\n ;\n e[k + 1] += 1.0;\n }\n e[k] = -e[k];\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(k + 1 < this.m, e[k] !== 0.0)) {\n for (var _i7 = k + 1; _i7 < this.m; _i7++) {\n work[_i7] = 0.0;\n }\n ;\n for (var _j = k + 1; _j < this.n; _j++) {\n for (var _i8 = k + 1; _i8 < this.m; _i8++) {\n work[_i8] += e[_j] * A[_i8][_j];\n }\n ;\n }\n ;\n for (var _j2 = k + 1; _j2 < this.n; _j2++) {\n var _t = -e[_j2] / e[k + 1];\n for (var _i9 = k + 1; _i9 < this.m; _i9++) {\n A[_i9][_j2] += _t * work[_i9];\n }\n ;\n }\n ;\n }\n if (wantv) {\n for (var _i10 = k + 1; _i10 < this.n; _i10++) {\n this.V[_i10][k] = e[_i10];\n };\n }\n }\n };\n var p = Math.min(this.n, this.m + 1);\n if (nct < this.n) {\n this.s[nct] = A[nct][nct];\n }\n if (this.m < p) {\n this.s[p - 1] = 0.0;\n }\n if (nrt + 1 < p) {\n e[nrt] = A[nrt][p - 1];\n }\n e[p - 1] = 0.0;\n if (wantu) {\n for (var _j3 = nct; _j3 < nu; _j3++) {\n for (var _i11 = 0; _i11 < this.m; _i11++) {\n this.U[_i11][_j3] = 0.0;\n }\n ;\n this.U[_j3][_j3] = 1.0;\n };\n for (var _k = nct - 1; _k >= 0; _k--) {\n if (this.s[_k] !== 0.0) {\n for (var _j4 = _k + 1; _j4 < nu; _j4++) {\n var _t2 = 0;\n for (var _i12 = _k; _i12 < this.m; _i12++) {\n _t2 += this.U[_i12][_k] * this.U[_i12][_j4];\n };\n _t2 = -_t2 / this.U[_k][_k];\n for (var _i13 = _k; _i13 < this.m; _i13++) {\n this.U[_i13][_j4] += _t2 * this.U[_i13][_k];\n };\n };\n for (var _i14 = _k; _i14 < this.m; _i14++) {\n this.U[_i14][_k] = -this.U[_i14][_k];\n };\n this.U[_k][_k] = 1.0 + this.U[_k][_k];\n for (var _i15 = 0; _i15 < _k - 1; _i15++) {\n this.U[_i15][_k] = 0.0;\n };\n } else {\n for (var _i16 = 0; _i16 < this.m; _i16++) {\n this.U[_i16][_k] = 0.0;\n };\n this.U[_k][_k] = 1.0;\n }\n };\n }\n if (wantv) {\n for (var _k2 = this.n - 1; _k2 >= 0; _k2--) {\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(_k2 < nrt, e[_k2] !== 0.0)) {\n for (var _j5 = _k2 + 1; _j5 < nu; _j5++) {\n var _t3 = 0;\n for (var _i17 = _k2 + 1; _i17 < this.n; _i17++) {\n _t3 += this.V[_i17][_k2] * this.V[_i17][_j5];\n };\n _t3 = -_t3 / this.V[_k2 + 1][_k2];\n for (var _i18 = _k2 + 1; _i18 < this.n; _i18++) {\n this.V[_i18][_j5] += _t3 * this.V[_i18][_k2];\n };\n };\n }\n for (var _i19 = 0; _i19 < this.n; _i19++) {\n this.V[_i19][_k2] = 0.0;\n };\n this.V[_k2][_k2] = 1.0;\n };\n }\n var pp = p - 1;\n var iter = 0;\n var eps = Math.pow(2.0, -52.0);\n var tiny = Math.pow(2.0, -966.0);\n while (p > 0) {\n var _k3 = void 0;\n var kase = void 0;\n for (_k3 = p - 2; _k3 >= -1; _k3--) {\n if (_k3 === -1) {\n break;\n }\n if (Math.abs(e[_k3]) <= tiny + eps * (Math.abs(this.s[_k3]) + Math.abs(this.s[_k3 + 1]))) {\n e[_k3] = 0.0;\n break;\n }\n };\n if (_k3 === p - 2) {\n kase = 4;\n } else {\n var ks = void 0;\n for (ks = p - 1; ks >= _k3; ks--) {\n if (ks === _k3) {\n break;\n }\n var _t4 = (ks !== p ? Math.abs(e[ks]) : 0.0) + (ks !== _k3 + 1 ? Math.abs(e[ks - 1]) : 0.0);\n if (Math.abs(this.s[ks]) <= tiny + eps * _t4) {\n this.s[ks] = 0.0;\n break;\n }\n };\n if (ks === _k3) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n _k3 = ks;\n }\n }\n _k3++;\n switch (kase) {\n case 1:\n {\n var f = e[p - 2];\n e[p - 2] = 0.0;\n for (var _j6 = p - 2; _j6 >= _k3; _j6--) {\n var _t5 = SVD.hypot(this.s[_j6], f);\n var cs = this.s[_j6] / _t5;\n var sn = f / _t5;\n this.s[_j6] = _t5;\n if (_j6 !== _k3) {\n f = -sn * e[_j6 - 1];\n e[_j6 - 1] = cs * e[_j6 - 1];\n }\n if (wantv) {\n for (var _i20 = 0; _i20 < this.n; _i20++) {\n _t5 = cs * this.V[_i20][_j6] + sn * this.V[_i20][p - 1];\n this.V[_i20][p - 1] = -sn * this.V[_i20][_j6] + cs * this.V[_i20][p - 1];\n this.V[_i20][_j6] = _t5;\n };\n }\n };\n };\n break;\n case 2:\n {\n var _f = e[_k3 - 1];\n e[_k3 - 1] = 0.0;\n for (var _j7 = _k3; _j7 < p; _j7++) {\n var _t6 = SVD.hypot(this.s[_j7], _f);\n var _cs = this.s[_j7] / _t6;\n var _sn = _f / _t6;\n this.s[_j7] = _t6;\n _f = -_sn * e[_j7];\n e[_j7] = _cs * e[_j7];\n if (wantu) {\n for (var _i21 = 0; _i21 < this.m; _i21++) {\n _t6 = _cs * this.U[_i21][_j7] + _sn * this.U[_i21][_k3 - 1];\n this.U[_i21][_k3 - 1] = -_sn * this.U[_i21][_j7] + _cs * this.U[_i21][_k3 - 1];\n this.U[_i21][_j7] = _t6;\n };\n }\n };\n };\n break;\n case 3:\n {\n var scale = Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[p - 1]), Math.abs(this.s[p - 2])), Math.abs(e[p - 2])), Math.abs(this.s[_k3])), Math.abs(e[_k3]));\n var sp = this.s[p - 1] / scale;\n var spm1 = this.s[p - 2] / scale;\n var epm1 = e[p - 2] / scale;\n var sk = this.s[_k3] / scale;\n var ek = e[_k3] / scale;\n var b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2.0;\n var c = sp * epm1 * (sp * epm1);\n var shift = 0.0;\n if (function (lhs, rhs) {\n return lhs || rhs;\n }(b !== 0.0, c !== 0.0)) {\n shift = Math.sqrt(b * b + c);\n if (b < 0.0) {\n shift = -shift;\n }\n shift = c / (b + shift);\n }\n var _f2 = (sk + sp) * (sk - sp) + shift;\n var g = sk * ek;\n for (var _j8 = _k3; _j8 < p - 1; _j8++) {\n var _t7 = SVD.hypot(_f2, g);\n var _cs2 = _f2 / _t7;\n var _sn2 = g / _t7;\n if (_j8 !== _k3) {\n e[_j8 - 1] = _t7;\n }\n _f2 = _cs2 * this.s[_j8] + _sn2 * e[_j8];\n e[_j8] = _cs2 * e[_j8] - _sn2 * this.s[_j8];\n g = _sn2 * this.s[_j8 + 1];\n this.s[_j8 + 1] = _cs2 * this.s[_j8 + 1];\n if (wantv) {\n for (var _i22 = 0; _i22 < this.n; _i22++) {\n _t7 = _cs2 * this.V[_i22][_j8] + _sn2 * this.V[_i22][_j8 + 1];\n this.V[_i22][_j8 + 1] = -_sn2 * this.V[_i22][_j8] + _cs2 * this.V[_i22][_j8 + 1];\n this.V[_i22][_j8] = _t7;\n };\n }\n _t7 = SVD.hypot(_f2, g);\n _cs2 = _f2 / _t7;\n _sn2 = g / _t7;\n this.s[_j8] = _t7;\n _f2 = _cs2 * e[_j8] + _sn2 * this.s[_j8 + 1];\n this.s[_j8 + 1] = -_sn2 * e[_j8] + _cs2 * this.s[_j8 + 1];\n g = _sn2 * e[_j8 + 1];\n e[_j8 + 1] = _cs2 * e[_j8 + 1];\n if (wantu && _j8 < this.m - 1) {\n for (var _i23 = 0; _i23 < this.m; _i23++) {\n _t7 = _cs2 * this.U[_i23][_j8] + _sn2 * this.U[_i23][_j8 + 1];\n this.U[_i23][_j8 + 1] = -_sn2 * this.U[_i23][_j8] + _cs2 * this.U[_i23][_j8 + 1];\n this.U[_i23][_j8] = _t7;\n };\n }\n };\n e[p - 2] = _f2;\n iter = iter + 1;\n };\n break;\n case 4:\n {\n if (this.s[_k3] <= 0.0) {\n this.s[_k3] = this.s[_k3] < 0.0 ? -this.s[_k3] : 0.0;\n if (wantv) {\n for (var _i24 = 0; _i24 <= pp; _i24++) {\n this.V[_i24][_k3] = -this.V[_i24][_k3];\n };\n }\n }\n while (_k3 < pp) {\n if (this.s[_k3] >= this.s[_k3 + 1]) {\n break;\n }\n var _t8 = this.s[_k3];\n this.s[_k3] = this.s[_k3 + 1];\n this.s[_k3 + 1] = _t8;\n if (wantv && _k3 < this.n - 1) {\n for (var _i25 = 0; _i25 < this.n; _i25++) {\n _t8 = this.V[_i25][_k3 + 1];\n this.V[_i25][_k3 + 1] = this.V[_i25][_k3];\n this.V[_i25][_k3] = _t8;\n };\n }\n if (wantu && _k3 < this.m - 1) {\n for (var _i26 = 0; _i26 < this.m; _i26++) {\n _t8 = this.U[_i26][_k3 + 1];\n this.U[_i26][_k3 + 1] = this.U[_i26][_k3];\n this.U[_i26][_k3] = _t8;\n };\n }\n _k3++;\n };\n iter = 0;\n p--;\n };\n break;\n }\n };\n var result = { U: this.U, V: this.V, S: this.s };\n return result;\n};\n\n// sqrt(a^2 + b^2) without under/overflow.\nSVD.hypot = function (a, b) {\n var r = void 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n r = Math.abs(a) * Math.sqrt(1 + r * r);\n } else if (b != 0) {\n r = a / b;\n r = Math.abs(b) * Math.sqrt(1 + r * r);\n } else {\n r = 0.0;\n }\n return r;\n};\n\nmodule.exports = SVD;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string\n * sequences by S.B.Needleman and C.D.Wunsch (1970).\n *\n * Aside from the inputs, you can assign the scores for,\n * - Match: The two characters at the current index are same.\n * - Mismatch: The two characters at the current index are different.\n * - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string.\n */\n\nvar NeedlemanWunsch = function () {\n function NeedlemanWunsch(sequence1, sequence2) {\n var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1;\n var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n\n _classCallCheck(this, NeedlemanWunsch);\n\n this.sequence1 = sequence1;\n this.sequence2 = sequence2;\n this.match_score = match_score;\n this.mismatch_penalty = mismatch_penalty;\n this.gap_penalty = gap_penalty;\n\n // Just the remove redundancy\n this.iMax = sequence1.length + 1;\n this.jMax = sequence2.length + 1;\n\n // Grid matrix of scores\n this.grid = new Array(this.iMax);\n for (var i = 0; i < this.iMax; i++) {\n this.grid[i] = new Array(this.jMax);\n\n for (var j = 0; j < this.jMax; j++) {\n this.grid[i][j] = 0;\n }\n }\n\n // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions)\n this.tracebackGrid = new Array(this.iMax);\n for (var _i = 0; _i < this.iMax; _i++) {\n this.tracebackGrid[_i] = new Array(this.jMax);\n\n for (var _j = 0; _j < this.jMax; _j++) {\n this.tracebackGrid[_i][_j] = [null, null, null];\n }\n }\n\n // The aligned sequences (return multiple possibilities)\n this.alignments = [];\n\n // Final alignment score\n this.score = -1;\n\n // Calculate scores and tracebacks\n this.computeGrids();\n }\n\n _createClass(NeedlemanWunsch, [{\n key: \"getScore\",\n value: function getScore() {\n return this.score;\n }\n }, {\n key: \"getAlignments\",\n value: function getAlignments() {\n return this.alignments;\n }\n\n // Main dynamic programming procedure\n\n }, {\n key: \"computeGrids\",\n value: function computeGrids() {\n // Fill in the first row\n for (var j = 1; j < this.jMax; j++) {\n this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty;\n this.tracebackGrid[0][j] = [false, false, true];\n }\n\n // Fill in the first column\n for (var i = 1; i < this.iMax; i++) {\n this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty;\n this.tracebackGrid[i][0] = [false, true, false];\n }\n\n // Fill the rest of the grid\n for (var _i2 = 1; _i2 < this.iMax; _i2++) {\n for (var _j2 = 1; _j2 < this.jMax; _j2++) {\n // Find the max score(s) among [`Diag`, `Up`, `Left`]\n var diag = void 0;\n if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty;\n\n var up = this.grid[_i2 - 1][_j2] + this.gap_penalty;\n var left = this.grid[_i2][_j2 - 1] + this.gap_penalty;\n\n // If there exists multiple max values, capture them for multiple paths\n var maxOf = [diag, up, left];\n var indices = this.arrayAllMaxIndexes(maxOf);\n\n // Update Grids\n this.grid[_i2][_j2] = maxOf[indices[0]];\n this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)];\n }\n }\n\n // Update alignment score\n this.score = this.grid[this.iMax - 1][this.jMax - 1];\n }\n\n // Gets all possible valid sequence combinations\n\n }, {\n key: \"alignmentTraceback\",\n value: function alignmentTraceback() {\n var inProcessAlignments = [];\n\n inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length],\n seq1: \"\",\n seq2: \"\"\n });\n\n while (inProcessAlignments[0]) {\n var current = inProcessAlignments[0];\n var directions = this.tracebackGrid[current.pos[0]][current.pos[1]];\n\n if (directions[0]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n if (directions[1]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: '-' + current.seq2\n });\n }\n if (directions[2]) {\n inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1],\n seq1: '-' + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n\n if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1,\n sequence2: current.seq2\n });\n\n inProcessAlignments.shift();\n }\n\n return this.alignments;\n }\n\n // Helper Functions\n\n }, {\n key: \"getAllIndexes\",\n value: function getAllIndexes(arr, val) {\n var indexes = [],\n i = -1;\n while ((i = arr.indexOf(val, i + 1)) !== -1) {\n indexes.push(i);\n }\n return indexes;\n }\n }, {\n key: \"arrayAllMaxIndexes\",\n value: function arrayAllMaxIndexes(array) {\n return this.getAllIndexes(array, Math.max.apply(null, array));\n }\n }]);\n\n return NeedlemanWunsch;\n}();\n\nmodule.exports = NeedlemanWunsch;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar layoutBase = function layoutBase() {\n return;\n};\n\nlayoutBase.FDLayout = __webpack_require__(18);\nlayoutBase.FDLayoutConstants = __webpack_require__(4);\nlayoutBase.FDLayoutEdge = __webpack_require__(19);\nlayoutBase.FDLayoutNode = __webpack_require__(20);\nlayoutBase.DimensionD = __webpack_require__(21);\nlayoutBase.HashMap = __webpack_require__(22);\nlayoutBase.HashSet = __webpack_require__(23);\nlayoutBase.IGeometry = __webpack_require__(8);\nlayoutBase.IMath = __webpack_require__(9);\nlayoutBase.Integer = __webpack_require__(10);\nlayoutBase.Point = __webpack_require__(12);\nlayoutBase.PointD = __webpack_require__(5);\nlayoutBase.RandomSeed = __webpack_require__(16);\nlayoutBase.RectangleD = __webpack_require__(13);\nlayoutBase.Transform = __webpack_require__(17);\nlayoutBase.UniqueIDGeneretor = __webpack_require__(14);\nlayoutBase.Quicksort = __webpack_require__(25);\nlayoutBase.LinkedList = __webpack_require__(11);\nlayoutBase.LGraphObject = __webpack_require__(2);\nlayoutBase.LGraph = __webpack_require__(6);\nlayoutBase.LEdge = __webpack_require__(1);\nlayoutBase.LGraphManager = __webpack_require__(7);\nlayoutBase.LNode = __webpack_require__(3);\nlayoutBase.Layout = __webpack_require__(15);\nlayoutBase.LayoutConstants = __webpack_require__(0);\nlayoutBase.NeedlemanWunsch = __webpack_require__(27);\nlayoutBase.Matrix = __webpack_require__(24);\nlayoutBase.SVD = __webpack_require__(26);\n\nmodule.exports = layoutBase;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Emitter() {\n this.listeners = [];\n}\n\nvar p = Emitter.prototype;\n\np.addListener = function (event, callback) {\n this.listeners.push({\n event: event,\n callback: callback\n });\n};\n\np.removeListener = function (event, callback) {\n for (var i = this.listeners.length; i >= 0; i--) {\n var l = this.listeners[i];\n\n if (l.event === event && l.callback === callback) {\n this.listeners.splice(i, 1);\n }\n }\n};\n\np.emit = function (event, data) {\n for (var i = 0; i < this.listeners.length; i++) {\n var l = this.listeners[i];\n\n if (event === l.event) {\n l.callback(data);\n }\n }\n};\n\nmodule.exports = Emitter;\n\n/***/ })\n/******/ ]);\n});", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"layout-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"layout-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"coseBase\"] = factory(require(\"layout-base\"));\n\telse\n\t\troot[\"coseBase\"] = factory(root[\"layoutBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__551__) {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 45:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar coseBase = {};\n\ncoseBase.layoutBase = __webpack_require__(551);\ncoseBase.CoSEConstants = __webpack_require__(806);\ncoseBase.CoSEEdge = __webpack_require__(767);\ncoseBase.CoSEGraph = __webpack_require__(880);\ncoseBase.CoSEGraphManager = __webpack_require__(578);\ncoseBase.CoSELayout = __webpack_require__(765);\ncoseBase.CoSENode = __webpack_require__(991);\ncoseBase.ConstraintHandler = __webpack_require__(902);\n\nmodule.exports = coseBase;\n\n/***/ }),\n\n/***/ 806:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutConstants = __webpack_require__(551).FDLayoutConstants;\n\nfunction CoSEConstants() {}\n\n//CoSEConstants inherits static props in FDLayoutConstants\nfor (var prop in FDLayoutConstants) {\n CoSEConstants[prop] = FDLayoutConstants[prop];\n}\n\nCoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false;\nCoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\nCoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60;\nCoSEConstants.TILE = true;\nCoSEConstants.TILING_PADDING_VERTICAL = 10;\nCoSEConstants.TILING_PADDING_HORIZONTAL = 10;\nCoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;\nCoSEConstants.ENFORCE_CONSTRAINTS = true;\nCoSEConstants.APPLY_LAYOUT = true;\nCoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS = true;\nCoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true; // this should be set to false if there will be a constraint\n// This constant is for differentiating whether actual layout algorithm that uses cose-base wants to apply only incremental layout or \n// an incremental layout on top of a randomized layout. If it is only incremental layout, then this constant should be true.\nCoSEConstants.PURE_INCREMENTAL = CoSEConstants.DEFAULT_INCREMENTAL;\n\nmodule.exports = CoSEConstants;\n\n/***/ }),\n\n/***/ 767:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutEdge = __webpack_require__(551).FDLayoutEdge;\n\nfunction CoSEEdge(source, target, vEdge) {\n FDLayoutEdge.call(this, source, target, vEdge);\n}\n\nCoSEEdge.prototype = Object.create(FDLayoutEdge.prototype);\nfor (var prop in FDLayoutEdge) {\n CoSEEdge[prop] = FDLayoutEdge[prop];\n}\n\nmodule.exports = CoSEEdge;\n\n/***/ }),\n\n/***/ 880:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar LGraph = __webpack_require__(551).LGraph;\n\nfunction CoSEGraph(parent, graphMgr, vGraph) {\n LGraph.call(this, parent, graphMgr, vGraph);\n}\n\nCoSEGraph.prototype = Object.create(LGraph.prototype);\nfor (var prop in LGraph) {\n CoSEGraph[prop] = LGraph[prop];\n}\n\nmodule.exports = CoSEGraph;\n\n/***/ }),\n\n/***/ 578:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar LGraphManager = __webpack_require__(551).LGraphManager;\n\nfunction CoSEGraphManager(layout) {\n LGraphManager.call(this, layout);\n}\n\nCoSEGraphManager.prototype = Object.create(LGraphManager.prototype);\nfor (var prop in LGraphManager) {\n CoSEGraphManager[prop] = LGraphManager[prop];\n}\n\nmodule.exports = CoSEGraphManager;\n\n/***/ }),\n\n/***/ 765:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayout = __webpack_require__(551).FDLayout;\nvar CoSEGraphManager = __webpack_require__(578);\nvar CoSEGraph = __webpack_require__(880);\nvar CoSENode = __webpack_require__(991);\nvar CoSEEdge = __webpack_require__(767);\nvar CoSEConstants = __webpack_require__(806);\nvar ConstraintHandler = __webpack_require__(902);\nvar FDLayoutConstants = __webpack_require__(551).FDLayoutConstants;\nvar LayoutConstants = __webpack_require__(551).LayoutConstants;\nvar Point = __webpack_require__(551).Point;\nvar PointD = __webpack_require__(551).PointD;\nvar DimensionD = __webpack_require__(551).DimensionD;\nvar Layout = __webpack_require__(551).Layout;\nvar Integer = __webpack_require__(551).Integer;\nvar IGeometry = __webpack_require__(551).IGeometry;\nvar LGraph = __webpack_require__(551).LGraph;\nvar Transform = __webpack_require__(551).Transform;\nvar LinkedList = __webpack_require__(551).LinkedList;\n\nfunction CoSELayout() {\n FDLayout.call(this);\n\n this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled\n this.constraints = {}; // keep layout constraints\n}\n\nCoSELayout.prototype = Object.create(FDLayout.prototype);\n\nfor (var prop in FDLayout) {\n CoSELayout[prop] = FDLayout[prop];\n}\n\nCoSELayout.prototype.newGraphManager = function () {\n var gm = new CoSEGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nCoSELayout.prototype.newGraph = function (vGraph) {\n return new CoSEGraph(null, this.graphManager, vGraph);\n};\n\nCoSELayout.prototype.newNode = function (vNode) {\n return new CoSENode(this.graphManager, vNode);\n};\n\nCoSELayout.prototype.newEdge = function (vEdge) {\n return new CoSEEdge(null, null, vEdge);\n};\n\nCoSELayout.prototype.initParameters = function () {\n FDLayout.prototype.initParameters.call(this, arguments);\n if (!this.isSubLayout) {\n if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) {\n this.idealEdgeLength = 10;\n } else {\n this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH;\n }\n\n this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n\n // variables for tree reduction support\n this.prunedNodesAll = [];\n this.growTreeIterations = 0;\n this.afterGrowthIterations = 0;\n this.isTreeGrowing = false;\n this.isGrowthFinished = false;\n }\n};\n\n// This method is used to set CoSE related parameters used by spring embedder.\nCoSELayout.prototype.initSpringEmbedder = function () {\n FDLayout.prototype.initSpringEmbedder.call(this);\n\n // variables for cooling\n this.coolingCycle = 0;\n this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD;\n this.finalTemperature = 0.04;\n this.coolingAdjuster = 1;\n};\n\nCoSELayout.prototype.layout = function () {\n var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n if (createBendsAsNeeded) {\n this.createBendpoints();\n this.graphManager.resetAllEdges();\n }\n\n this.level = 0;\n return this.classicLayout();\n};\n\nCoSELayout.prototype.classicLayout = function () {\n this.nodesWithGravity = this.calculateNodesToApplyGravitationTo();\n this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity);\n this.calcNoOfChildrenForAllNodes();\n this.graphManager.calcLowestCommonAncestors();\n this.graphManager.calcInclusionTreeDepths();\n this.graphManager.getRoot().calcEstimatedSize();\n this.calcIdealEdgeLengths();\n\n if (!this.incremental) {\n var forest = this.getFlatForest();\n\n // The graph associated with this layout is flat and a forest\n if (forest.length > 0) {\n this.positionNodesRadially(forest);\n }\n // The graph associated with this layout is not flat or a forest\n else {\n // Reduce the trees when incremental mode is not enabled and graph is not a forest \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.positionNodesRandomly();\n }\n } else {\n if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) {\n // Reduce the trees in incremental mode if only this constant is set to true \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n }\n }\n\n if (Object.keys(this.constraints).length > 0) {\n ConstraintHandler.handleConstraints(this);\n this.initConstraintVariables();\n }\n\n this.initSpringEmbedder();\n if (CoSEConstants.APPLY_LAYOUT) {\n this.runSpringEmbedder();\n }\n\n return true;\n};\n\nCoSELayout.prototype.tick = function () {\n this.totalIterations++;\n\n if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.isConverged()) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n this.coolingCycle++;\n\n if (this.layoutQuality == 0) {\n // quality - \"draft\"\n this.coolingAdjuster = this.coolingCycle;\n } else if (this.layoutQuality == 1) {\n // quality - \"default\"\n this.coolingAdjuster = this.coolingCycle / 3;\n }\n\n // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3\n this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature);\n this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor));\n }\n // Operations while tree is growing again \n if (this.isTreeGrowing) {\n if (this.growTreeIterations % 10 == 0) {\n if (this.prunedNodesAll.length > 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n this.growTree(this.prunedNodesAll);\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.graphManager.updateBounds();\n this.updateGrid();\n if (CoSEConstants.PURE_INCREMENTAL) this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2;else this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n } else {\n this.isTreeGrowing = false;\n this.isGrowthFinished = true;\n }\n }\n this.growTreeIterations++;\n }\n // Operations after growth is finished\n if (this.isGrowthFinished) {\n if (this.isConverged()) {\n return true;\n }\n if (this.afterGrowthIterations % 10 == 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n }\n if (CoSEConstants.PURE_INCREMENTAL) this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2 * ((100 - this.afterGrowthIterations) / 100);else this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100);\n this.afterGrowthIterations++;\n }\n\n var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished;\n var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished;\n\n this.totalDisplacement = 0;\n this.graphManager.updateBounds();\n this.calcSpringForces();\n this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate);\n this.calcGravitationalForces();\n this.moveNodes();\n this.animate();\n\n return false; // Layout is not ended yet return false\n};\n\nCoSELayout.prototype.getPositionsData = function () {\n var allNodes = this.graphManager.getAllNodes();\n var pData = {};\n for (var i = 0; i < allNodes.length; i++) {\n var rect = allNodes[i].rect;\n var id = allNodes[i].id;\n pData[id] = {\n id: id,\n x: rect.getCenterX(),\n y: rect.getCenterY(),\n w: rect.width,\n h: rect.height\n };\n }\n\n return pData;\n};\n\nCoSELayout.prototype.runSpringEmbedder = function () {\n this.initialAnimationPeriod = 25;\n this.animationPeriod = this.initialAnimationPeriod;\n var layoutEnded = false;\n\n // If aminate option is 'during' signal that layout is supposed to start iterating\n if (FDLayoutConstants.ANIMATE === 'during') {\n this.emit('layoutstarted');\n } else {\n // If aminate option is 'during' tick() function will be called on index.js\n while (!layoutEnded) {\n layoutEnded = this.tick();\n }\n\n this.graphManager.updateBounds();\n }\n};\n\n// overrides moveNodes method in FDLayout\nCoSELayout.prototype.moveNodes = function () {\n var lNodes = this.getAllNodes();\n var node;\n\n // calculate displacement for each node \n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.calculateDisplacement();\n }\n\n if (Object.keys(this.constraints).length > 0) {\n this.updateDisplacements();\n }\n\n // move each node\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.move();\n }\n};\n\n// constraint related methods: initConstraintVariables and updateDisplacements\n\n// initialize constraint related variables\nCoSELayout.prototype.initConstraintVariables = function () {\n var self = this;\n this.idToNodeMap = new Map();\n this.fixedNodeSet = new Set();\n\n var allNodes = this.graphManager.getAllNodes();\n\n // fill idToNodeMap\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n this.idToNodeMap.set(node.id, node);\n }\n\n // calculate fixed node weight for given compound node\n var calculateCompoundWeight = function calculateCompoundWeight(compoundNode) {\n var nodes = compoundNode.getChild().getNodes();\n var node;\n var fixedNodeWeight = 0;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n if (self.fixedNodeSet.has(node.id)) {\n fixedNodeWeight += 100;\n }\n } else {\n fixedNodeWeight += calculateCompoundWeight(node);\n }\n }\n return fixedNodeWeight;\n };\n\n if (this.constraints.fixedNodeConstraint) {\n // fill fixedNodeSet\n this.constraints.fixedNodeConstraint.forEach(function (nodeData) {\n self.fixedNodeSet.add(nodeData.nodeId);\n });\n\n // assign fixed node weights to compounds if they contain fixed nodes\n var allNodes = this.graphManager.getAllNodes();\n var node;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getChild() != null) {\n var fixedNodeWeight = calculateCompoundWeight(node);\n if (fixedNodeWeight > 0) {\n node.fixedNodeWeight = fixedNodeWeight;\n }\n }\n }\n }\n\n if (this.constraints.relativePlacementConstraint) {\n var nodeToDummyForVerticalAlignment = new Map();\n var nodeToDummyForHorizontalAlignment = new Map();\n this.dummyToNodeForVerticalAlignment = new Map();\n this.dummyToNodeForHorizontalAlignment = new Map();\n this.fixedNodesOnHorizontal = new Set();\n this.fixedNodesOnVertical = new Set();\n\n // fill maps and sets\n this.fixedNodeSet.forEach(function (nodeId) {\n self.fixedNodesOnHorizontal.add(nodeId);\n self.fixedNodesOnVertical.add(nodeId);\n });\n\n if (this.constraints.alignmentConstraint) {\n if (this.constraints.alignmentConstraint.vertical) {\n var verticalAlignment = this.constraints.alignmentConstraint.vertical;\n for (var i = 0; i < verticalAlignment.length; i++) {\n this.dummyToNodeForVerticalAlignment.set(\"dummy\" + i, []);\n verticalAlignment[i].forEach(function (nodeId) {\n nodeToDummyForVerticalAlignment.set(nodeId, \"dummy\" + i);\n self.dummyToNodeForVerticalAlignment.get(\"dummy\" + i).push(nodeId);\n if (self.fixedNodeSet.has(nodeId)) {\n self.fixedNodesOnHorizontal.add(\"dummy\" + i);\n }\n });\n }\n }\n if (this.constraints.alignmentConstraint.horizontal) {\n var horizontalAlignment = this.constraints.alignmentConstraint.horizontal;\n for (var i = 0; i < horizontalAlignment.length; i++) {\n this.dummyToNodeForHorizontalAlignment.set(\"dummy\" + i, []);\n horizontalAlignment[i].forEach(function (nodeId) {\n nodeToDummyForHorizontalAlignment.set(nodeId, \"dummy\" + i);\n self.dummyToNodeForHorizontalAlignment.get(\"dummy\" + i).push(nodeId);\n if (self.fixedNodeSet.has(nodeId)) {\n self.fixedNodesOnVertical.add(\"dummy\" + i);\n }\n });\n }\n }\n }\n\n if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) {\n\n this.shuffle = function (array) {\n var j, x, i;\n for (i = array.length - 1; i >= 2 * array.length / 3; i--) {\n j = Math.floor(Math.random() * (i + 1));\n x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n };\n\n this.nodesInRelativeHorizontal = [];\n this.nodesInRelativeVertical = [];\n this.nodeToRelativeConstraintMapHorizontal = new Map();\n this.nodeToRelativeConstraintMapVertical = new Map();\n this.nodeToTempPositionMapHorizontal = new Map();\n this.nodeToTempPositionMapVertical = new Map();\n\n // fill arrays and maps\n this.constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n var nodeIdLeft = nodeToDummyForVerticalAlignment.has(constraint.left) ? nodeToDummyForVerticalAlignment.get(constraint.left) : constraint.left;\n var nodeIdRight = nodeToDummyForVerticalAlignment.has(constraint.right) ? nodeToDummyForVerticalAlignment.get(constraint.right) : constraint.right;\n\n if (!self.nodesInRelativeHorizontal.includes(nodeIdLeft)) {\n self.nodesInRelativeHorizontal.push(nodeIdLeft);\n self.nodeToRelativeConstraintMapHorizontal.set(nodeIdLeft, []);\n if (self.dummyToNodeForVerticalAlignment.has(nodeIdLeft)) {\n self.nodeToTempPositionMapHorizontal.set(nodeIdLeft, self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeIdLeft)[0]).getCenterX());\n } else {\n self.nodeToTempPositionMapHorizontal.set(nodeIdLeft, self.idToNodeMap.get(nodeIdLeft).getCenterX());\n }\n }\n if (!self.nodesInRelativeHorizontal.includes(nodeIdRight)) {\n self.nodesInRelativeHorizontal.push(nodeIdRight);\n self.nodeToRelativeConstraintMapHorizontal.set(nodeIdRight, []);\n if (self.dummyToNodeForVerticalAlignment.has(nodeIdRight)) {\n self.nodeToTempPositionMapHorizontal.set(nodeIdRight, self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeIdRight)[0]).getCenterX());\n } else {\n self.nodeToTempPositionMapHorizontal.set(nodeIdRight, self.idToNodeMap.get(nodeIdRight).getCenterX());\n }\n }\n\n self.nodeToRelativeConstraintMapHorizontal.get(nodeIdLeft).push({ right: nodeIdRight, gap: constraint.gap });\n self.nodeToRelativeConstraintMapHorizontal.get(nodeIdRight).push({ left: nodeIdLeft, gap: constraint.gap });\n } else {\n var nodeIdTop = nodeToDummyForHorizontalAlignment.has(constraint.top) ? nodeToDummyForHorizontalAlignment.get(constraint.top) : constraint.top;\n var nodeIdBottom = nodeToDummyForHorizontalAlignment.has(constraint.bottom) ? nodeToDummyForHorizontalAlignment.get(constraint.bottom) : constraint.bottom;\n\n if (!self.nodesInRelativeVertical.includes(nodeIdTop)) {\n self.nodesInRelativeVertical.push(nodeIdTop);\n self.nodeToRelativeConstraintMapVertical.set(nodeIdTop, []);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeIdTop)) {\n self.nodeToTempPositionMapVertical.set(nodeIdTop, self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeIdTop)[0]).getCenterY());\n } else {\n self.nodeToTempPositionMapVertical.set(nodeIdTop, self.idToNodeMap.get(nodeIdTop).getCenterY());\n }\n }\n if (!self.nodesInRelativeVertical.includes(nodeIdBottom)) {\n self.nodesInRelativeVertical.push(nodeIdBottom);\n self.nodeToRelativeConstraintMapVertical.set(nodeIdBottom, []);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeIdBottom)) {\n self.nodeToTempPositionMapVertical.set(nodeIdBottom, self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeIdBottom)[0]).getCenterY());\n } else {\n self.nodeToTempPositionMapVertical.set(nodeIdBottom, self.idToNodeMap.get(nodeIdBottom).getCenterY());\n }\n }\n self.nodeToRelativeConstraintMapVertical.get(nodeIdTop).push({ bottom: nodeIdBottom, gap: constraint.gap });\n self.nodeToRelativeConstraintMapVertical.get(nodeIdBottom).push({ top: nodeIdTop, gap: constraint.gap });\n }\n });\n } else {\n var subGraphOnHorizontal = new Map(); // subgraph from vertical RP constraints\n var subGraphOnVertical = new Map(); // subgraph from vertical RP constraints\n\n // construct subgraphs from relative placement constraints \n this.constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n var left = nodeToDummyForVerticalAlignment.has(constraint.left) ? nodeToDummyForVerticalAlignment.get(constraint.left) : constraint.left;\n var right = nodeToDummyForVerticalAlignment.has(constraint.right) ? nodeToDummyForVerticalAlignment.get(constraint.right) : constraint.right;\n if (subGraphOnHorizontal.has(left)) {\n subGraphOnHorizontal.get(left).push(right);\n } else {\n subGraphOnHorizontal.set(left, [right]);\n }\n if (subGraphOnHorizontal.has(right)) {\n subGraphOnHorizontal.get(right).push(left);\n } else {\n subGraphOnHorizontal.set(right, [left]);\n }\n } else {\n var top = nodeToDummyForHorizontalAlignment.has(constraint.top) ? nodeToDummyForHorizontalAlignment.get(constraint.top) : constraint.top;\n var bottom = nodeToDummyForHorizontalAlignment.has(constraint.bottom) ? nodeToDummyForHorizontalAlignment.get(constraint.bottom) : constraint.bottom;\n if (subGraphOnVertical.has(top)) {\n subGraphOnVertical.get(top).push(bottom);\n } else {\n subGraphOnVertical.set(top, [bottom]);\n }\n if (subGraphOnVertical.has(bottom)) {\n subGraphOnVertical.get(bottom).push(top);\n } else {\n subGraphOnVertical.set(bottom, [top]);\n }\n }\n });\n\n // function to construct components from a given graph \n // also returns an array that keeps whether each component contains fixed node\n var constructComponents = function constructComponents(graph, fixedNodes) {\n var components = [];\n var isFixed = [];\n var queue = new LinkedList();\n var visited = new Set();\n var count = 0;\n\n graph.forEach(function (value, key) {\n if (!visited.has(key)) {\n components[count] = [];\n isFixed[count] = false;\n var currentNode = key;\n queue.push(currentNode);\n visited.add(currentNode);\n components[count].push(currentNode);\n\n while (queue.length != 0) {\n currentNode = queue.shift();\n if (fixedNodes.has(currentNode)) {\n isFixed[count] = true;\n }\n var neighbors = graph.get(currentNode);\n neighbors.forEach(function (neighbor) {\n if (!visited.has(neighbor)) {\n queue.push(neighbor);\n visited.add(neighbor);\n components[count].push(neighbor);\n }\n });\n }\n count++;\n }\n });\n\n return { components: components, isFixed: isFixed };\n };\n\n var resultOnHorizontal = constructComponents(subGraphOnHorizontal, self.fixedNodesOnHorizontal);\n this.componentsOnHorizontal = resultOnHorizontal.components;\n this.fixedComponentsOnHorizontal = resultOnHorizontal.isFixed;\n var resultOnVertical = constructComponents(subGraphOnVertical, self.fixedNodesOnVertical);\n this.componentsOnVertical = resultOnVertical.components;\n this.fixedComponentsOnVertical = resultOnVertical.isFixed;\n }\n }\n};\n\n// updates node displacements based on constraints\nCoSELayout.prototype.updateDisplacements = function () {\n var self = this;\n if (this.constraints.fixedNodeConstraint) {\n this.constraints.fixedNodeConstraint.forEach(function (nodeData) {\n var fixedNode = self.idToNodeMap.get(nodeData.nodeId);\n fixedNode.displacementX = 0;\n fixedNode.displacementY = 0;\n });\n }\n\n if (this.constraints.alignmentConstraint) {\n if (this.constraints.alignmentConstraint.vertical) {\n var allVerticalAlignments = this.constraints.alignmentConstraint.vertical;\n for (var i = 0; i < allVerticalAlignments.length; i++) {\n var totalDisplacementX = 0;\n for (var j = 0; j < allVerticalAlignments[i].length; j++) {\n if (this.fixedNodeSet.has(allVerticalAlignments[i][j])) {\n totalDisplacementX = 0;\n break;\n }\n totalDisplacementX += this.idToNodeMap.get(allVerticalAlignments[i][j]).displacementX;\n }\n var averageDisplacementX = totalDisplacementX / allVerticalAlignments[i].length;\n for (var j = 0; j < allVerticalAlignments[i].length; j++) {\n this.idToNodeMap.get(allVerticalAlignments[i][j]).displacementX = averageDisplacementX;\n }\n }\n }\n if (this.constraints.alignmentConstraint.horizontal) {\n var allHorizontalAlignments = this.constraints.alignmentConstraint.horizontal;\n for (var i = 0; i < allHorizontalAlignments.length; i++) {\n var totalDisplacementY = 0;\n for (var j = 0; j < allHorizontalAlignments[i].length; j++) {\n if (this.fixedNodeSet.has(allHorizontalAlignments[i][j])) {\n totalDisplacementY = 0;\n break;\n }\n totalDisplacementY += this.idToNodeMap.get(allHorizontalAlignments[i][j]).displacementY;\n }\n var averageDisplacementY = totalDisplacementY / allHorizontalAlignments[i].length;\n for (var j = 0; j < allHorizontalAlignments[i].length; j++) {\n this.idToNodeMap.get(allHorizontalAlignments[i][j]).displacementY = averageDisplacementY;\n }\n }\n }\n }\n\n if (this.constraints.relativePlacementConstraint) {\n\n if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) {\n // shuffle array to randomize node processing order\n if (this.totalIterations % 10 == 0) {\n this.shuffle(this.nodesInRelativeHorizontal);\n this.shuffle(this.nodesInRelativeVertical);\n }\n\n this.nodesInRelativeHorizontal.forEach(function (nodeId) {\n if (!self.fixedNodesOnHorizontal.has(nodeId)) {\n var displacement = 0;\n if (self.dummyToNodeForVerticalAlignment.has(nodeId)) {\n displacement = self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeId)[0]).displacementX;\n } else {\n displacement = self.idToNodeMap.get(nodeId).displacementX;\n }\n self.nodeToRelativeConstraintMapHorizontal.get(nodeId).forEach(function (constraint) {\n if (constraint.right) {\n var diff = self.nodeToTempPositionMapHorizontal.get(constraint.right) - self.nodeToTempPositionMapHorizontal.get(nodeId) - displacement;\n if (diff < constraint.gap) {\n displacement -= constraint.gap - diff;\n }\n } else {\n var diff = self.nodeToTempPositionMapHorizontal.get(nodeId) - self.nodeToTempPositionMapHorizontal.get(constraint.left) + displacement;\n if (diff < constraint.gap) {\n displacement += constraint.gap - diff;\n }\n }\n });\n self.nodeToTempPositionMapHorizontal.set(nodeId, self.nodeToTempPositionMapHorizontal.get(nodeId) + displacement);\n if (self.dummyToNodeForVerticalAlignment.has(nodeId)) {\n self.dummyToNodeForVerticalAlignment.get(nodeId).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = displacement;\n });\n } else {\n self.idToNodeMap.get(nodeId).displacementX = displacement;\n }\n }\n });\n\n this.nodesInRelativeVertical.forEach(function (nodeId) {\n if (!self.fixedNodesOnHorizontal.has(nodeId)) {\n var displacement = 0;\n if (self.dummyToNodeForHorizontalAlignment.has(nodeId)) {\n displacement = self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeId)[0]).displacementY;\n } else {\n displacement = self.idToNodeMap.get(nodeId).displacementY;\n }\n self.nodeToRelativeConstraintMapVertical.get(nodeId).forEach(function (constraint) {\n if (constraint.bottom) {\n var diff = self.nodeToTempPositionMapVertical.get(constraint.bottom) - self.nodeToTempPositionMapVertical.get(nodeId) - displacement;\n if (diff < constraint.gap) {\n displacement -= constraint.gap - diff;\n }\n } else {\n var diff = self.nodeToTempPositionMapVertical.get(nodeId) - self.nodeToTempPositionMapVertical.get(constraint.top) + displacement;\n if (diff < constraint.gap) {\n displacement += constraint.gap - diff;\n }\n }\n });\n self.nodeToTempPositionMapVertical.set(nodeId, self.nodeToTempPositionMapVertical.get(nodeId) + displacement);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeId)) {\n self.dummyToNodeForHorizontalAlignment.get(nodeId).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = displacement;\n });\n } else {\n self.idToNodeMap.get(nodeId).displacementY = displacement;\n }\n }\n });\n } else {\n for (var i = 0; i < this.componentsOnHorizontal.length; i++) {\n var component = this.componentsOnHorizontal[i];\n if (this.fixedComponentsOnHorizontal[i]) {\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n this.dummyToNodeForVerticalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = 0;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementX = 0;\n }\n }\n } else {\n var sum = 0;\n var count = 0;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n var actualNodes = this.dummyToNodeForVerticalAlignment.get(component[j]);\n sum += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementX;\n count += actualNodes.length;\n } else {\n sum += this.idToNodeMap.get(component[j]).displacementX;\n count++;\n }\n }\n var averageDisplacement = sum / count;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n this.dummyToNodeForVerticalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = averageDisplacement;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementX = averageDisplacement;\n }\n }\n }\n }\n\n for (var i = 0; i < this.componentsOnVertical.length; i++) {\n var component = this.componentsOnVertical[i];\n if (this.fixedComponentsOnVertical[i]) {\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n this.dummyToNodeForHorizontalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = 0;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementY = 0;\n }\n }\n } else {\n var sum = 0;\n var count = 0;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n var actualNodes = this.dummyToNodeForHorizontalAlignment.get(component[j]);\n sum += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementY;\n count += actualNodes.length;\n } else {\n sum += this.idToNodeMap.get(component[j]).displacementY;\n count++;\n }\n }\n var averageDisplacement = sum / count;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n this.dummyToNodeForHorizontalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = averageDisplacement;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementY = averageDisplacement;\n }\n }\n }\n }\n }\n }\n};\n\nCoSELayout.prototype.calculateNodesToApplyGravitationTo = function () {\n var nodeList = [];\n var graph;\n\n var graphs = this.graphManager.getGraphs();\n var size = graphs.length;\n var i;\n for (i = 0; i < size; i++) {\n graph = graphs[i];\n\n graph.updateConnected();\n\n if (!graph.isConnected) {\n nodeList = nodeList.concat(graph.getNodes());\n }\n }\n\n return nodeList;\n};\n\nCoSELayout.prototype.createBendpoints = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n var visited = new Set();\n var i;\n for (i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (!visited.has(edge)) {\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if (source == target) {\n edge.getBendpoints().push(new PointD());\n edge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(edge);\n visited.add(edge);\n } else {\n var edgeList = [];\n\n edgeList = edgeList.concat(source.getEdgeListToNode(target));\n edgeList = edgeList.concat(target.getEdgeListToNode(source));\n\n if (!visited.has(edgeList[0])) {\n if (edgeList.length > 1) {\n var k;\n for (k = 0; k < edgeList.length; k++) {\n var multiEdge = edgeList[k];\n multiEdge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(multiEdge);\n }\n }\n edgeList.forEach(function (edge) {\n visited.add(edge);\n });\n }\n }\n }\n\n if (visited.size == edges.length) {\n break;\n }\n }\n};\n\nCoSELayout.prototype.positionNodesRadially = function (forest) {\n // We tile the trees to a grid row by row; first tree starts at (0,0)\n var currentStartingPoint = new Point(0, 0);\n var numberOfColumns = Math.ceil(Math.sqrt(forest.length));\n var height = 0;\n var currentY = 0;\n var currentX = 0;\n var point = new PointD(0, 0);\n\n for (var i = 0; i < forest.length; i++) {\n if (i % numberOfColumns == 0) {\n // Start of a new row, make the x coordinate 0, increment the\n // y coordinate with the max height of the previous row\n currentX = 0;\n currentY = height;\n\n if (i != 0) {\n currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION;\n }\n\n height = 0;\n }\n\n var tree = forest[i];\n\n // Find the center of the tree\n var centerNode = Layout.findCenterOfTree(tree);\n\n // Set the staring point of the next tree\n currentStartingPoint.x = currentX;\n currentStartingPoint.y = currentY;\n\n // Do a radial layout starting with the center\n point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint);\n\n if (point.y > height) {\n height = Math.floor(point.y);\n }\n\n currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION);\n }\n\n this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2));\n};\n\nCoSELayout.radialLayout = function (tree, centerNode, startingPoint) {\n var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION);\n CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep);\n var bounds = LGraph.calculateBounds(tree);\n\n var transform = new Transform();\n transform.setDeviceOrgX(bounds.getMinX());\n transform.setDeviceOrgY(bounds.getMinY());\n transform.setWorldOrgX(startingPoint.x);\n transform.setWorldOrgY(startingPoint.y);\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n node.transform(transform);\n }\n\n var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY());\n\n return transform.inverseTransformPoint(bottomRight);\n};\n\nCoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) {\n // First, position this node by finding its angle.\n var halfInterval = (endAngle - startAngle + 1) / 2;\n\n if (halfInterval < 0) {\n halfInterval += 180;\n }\n\n var nodeAngle = (halfInterval + startAngle) % 360;\n var teta = nodeAngle * IGeometry.TWO_PI / 360;\n\n // Make polar to java cordinate conversion.\n var cos_teta = Math.cos(teta);\n var x_ = distance * Math.cos(teta);\n var y_ = distance * Math.sin(teta);\n\n node.setCenter(x_, y_);\n\n // Traverse all neighbors of this node and recursively call this\n // function.\n var neighborEdges = [];\n neighborEdges = neighborEdges.concat(node.getEdges());\n var childCount = neighborEdges.length;\n\n if (parentOfNode != null) {\n childCount--;\n }\n\n var branchCount = 0;\n\n var incEdgesCount = neighborEdges.length;\n var startIndex;\n\n var edges = node.getEdgesBetween(parentOfNode);\n\n // If there are multiple edges, prune them until there remains only one\n // edge.\n while (edges.length > 1) {\n //neighborEdges.remove(edges.remove(0));\n var temp = edges[0];\n edges.splice(0, 1);\n var index = neighborEdges.indexOf(temp);\n if (index >= 0) {\n neighborEdges.splice(index, 1);\n }\n incEdgesCount--;\n childCount--;\n }\n\n if (parentOfNode != null) {\n //assert edges.length == 1;\n startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount;\n } else {\n startIndex = 0;\n }\n\n var stepAngle = Math.abs(endAngle - startAngle) / childCount;\n\n for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(node);\n\n // Don't back traverse to root node in current tree.\n if (currentNeighbor == parentOfNode) {\n continue;\n }\n\n var childStartAngle = (startAngle + branchCount * stepAngle) % 360;\n var childEndAngle = (childStartAngle + stepAngle) % 360;\n\n CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation);\n\n branchCount++;\n }\n};\n\nCoSELayout.maxDiagonalInTree = function (tree) {\n var maxDiagonal = Integer.MIN_VALUE;\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n var diagonal = node.getDiagonal();\n\n if (diagonal > maxDiagonal) {\n maxDiagonal = diagonal;\n }\n }\n\n return maxDiagonal;\n};\n\nCoSELayout.prototype.calcRepulsionRange = function () {\n // formula is 2 x (level + 1) x idealEdgeLength\n return 2 * (this.level + 1) * this.idealEdgeLength;\n};\n\n// Tiling methods\n\n// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's\nCoSELayout.prototype.groupZeroDegreeMembers = function () {\n var self = this;\n // array of [parent_id x oneDegreeNode_id]\n var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members\n this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled\n this.idToDummyNode = {}; // A map of id to dummy node \n\n var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled\n var allNodes = this.graphManager.getAllNodes();\n\n // Fill zero degree list\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n var parent = node.getParent();\n // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list\n if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) {\n zeroDegree.push(node);\n }\n }\n\n // Create a map of parent node and its zero degree members\n for (var i = 0; i < zeroDegree.length; i++) {\n var node = zeroDegree[i]; // Zero degree node itself\n var p_id = node.getParent().id; // Parent id\n\n if (typeof tempMemberGroups[p_id] === \"undefined\") tempMemberGroups[p_id] = [];\n\n tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups\n }\n\n // If there are at least two nodes at a level, create a dummy compound for them\n Object.keys(tempMemberGroups).forEach(function (p_id) {\n if (tempMemberGroups[p_id].length > 1) {\n var dummyCompoundId = \"DummyCompound_\" + p_id; // The id of dummy compound which will be created soon\n self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups\n\n var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound\n\n // Create a dummy compound with calculated id\n var dummyCompound = new CoSENode(self.graphManager);\n dummyCompound.id = dummyCompoundId;\n dummyCompound.paddingLeft = parent.paddingLeft || 0;\n dummyCompound.paddingRight = parent.paddingRight || 0;\n dummyCompound.paddingBottom = parent.paddingBottom || 0;\n dummyCompound.paddingTop = parent.paddingTop || 0;\n\n self.idToDummyNode[dummyCompoundId] = dummyCompound;\n\n var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound);\n var parentGraph = parent.getChild();\n\n // Add dummy compound to parent the graph\n parentGraph.add(dummyCompound);\n\n // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent\n for (var i = 0; i < tempMemberGroups[p_id].length; i++) {\n var node = tempMemberGroups[p_id][i];\n\n parentGraph.remove(node);\n dummyParentGraph.add(node);\n }\n }\n });\n};\n\nCoSELayout.prototype.clearCompounds = function () {\n var childGraphMap = {};\n var idToNode = {};\n\n // Get compound ordering by finding the inner one first\n this.performDFSOnCompounds();\n\n for (var i = 0; i < this.compoundOrder.length; i++) {\n\n idToNode[this.compoundOrder[i].id] = this.compoundOrder[i];\n childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes());\n\n // Remove children of compounds\n this.graphManager.remove(this.compoundOrder[i].getChild());\n this.compoundOrder[i].child = null;\n }\n\n this.graphManager.resetAllNodes();\n\n // Tile the removed children\n this.tileCompoundMembers(childGraphMap, idToNode);\n};\n\nCoSELayout.prototype.clearZeroDegreeMembers = function () {\n var self = this;\n var tiledZeroDegreePack = this.tiledZeroDegreePack = [];\n\n Object.keys(this.memberGroups).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound\n\n tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n // Set the width and height of the dummy compound as calculated\n compoundNode.rect.width = tiledZeroDegreePack[id].width;\n compoundNode.rect.height = tiledZeroDegreePack[id].height;\n compoundNode.setCenter(tiledZeroDegreePack[id].centerX, tiledZeroDegreePack[id].centerY);\n\n // compound left and top margings for labels\n // when node labels are included, these values may be set to different values below and are used in tilingPostLayout,\n // otherwise they stay as zero\n compoundNode.labelMarginLeft = 0;\n compoundNode.labelMarginTop = 0;\n\n // Update compound bounds considering its label properties and set label margins for left and top\n if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = compoundNode.rect.width;\n var height = compoundNode.rect.height;\n\n if (compoundNode.labelWidth) {\n if (compoundNode.labelPosHorizontal == \"left\") {\n compoundNode.rect.x -= compoundNode.labelWidth;\n compoundNode.setWidth(width + compoundNode.labelWidth);\n compoundNode.labelMarginLeft = compoundNode.labelWidth;\n } else if (compoundNode.labelPosHorizontal == \"center\" && compoundNode.labelWidth > width) {\n compoundNode.rect.x -= (compoundNode.labelWidth - width) / 2;\n compoundNode.setWidth(compoundNode.labelWidth);\n compoundNode.labelMarginLeft = (compoundNode.labelWidth - width) / 2;\n } else if (compoundNode.labelPosHorizontal == \"right\") {\n compoundNode.setWidth(width + compoundNode.labelWidth);\n }\n }\n\n if (compoundNode.labelHeight) {\n if (compoundNode.labelPosVertical == \"top\") {\n compoundNode.rect.y -= compoundNode.labelHeight;\n compoundNode.setHeight(height + compoundNode.labelHeight);\n compoundNode.labelMarginTop = compoundNode.labelHeight;\n } else if (compoundNode.labelPosVertical == \"center\" && compoundNode.labelHeight > height) {\n compoundNode.rect.y -= (compoundNode.labelHeight - height) / 2;\n compoundNode.setHeight(compoundNode.labelHeight);\n compoundNode.labelMarginTop = (compoundNode.labelHeight - height) / 2;\n } else if (compoundNode.labelPosVertical == \"bottom\") {\n compoundNode.setHeight(height + compoundNode.labelHeight);\n }\n }\n }\n });\n};\n\nCoSELayout.prototype.repopulateCompounds = function () {\n for (var i = this.compoundOrder.length - 1; i >= 0; i--) {\n var lCompoundNode = this.compoundOrder[i];\n var id = lCompoundNode.id;\n var horizontalMargin = lCompoundNode.paddingLeft;\n var verticalMargin = lCompoundNode.paddingTop;\n var labelMarginLeft = lCompoundNode.labelMarginLeft;\n var labelMarginTop = lCompoundNode.labelMarginTop;\n\n this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop);\n }\n};\n\nCoSELayout.prototype.repopulateZeroDegreeMembers = function () {\n var self = this;\n var tiledPack = this.tiledZeroDegreePack;\n\n Object.keys(tiledPack).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id\n var horizontalMargin = compoundNode.paddingLeft;\n var verticalMargin = compoundNode.paddingTop;\n var labelMarginLeft = compoundNode.labelMarginLeft;\n var labelMarginTop = compoundNode.labelMarginTop;\n\n // Adjust the positions of nodes wrt its compound\n self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop);\n });\n};\n\nCoSELayout.prototype.getToBeTiled = function (node) {\n var id = node.id;\n //firstly check the previous results\n if (this.toBeTiled[id] != null) {\n return this.toBeTiled[id];\n }\n\n //only compound nodes are to be tiled\n var childGraph = node.getChild();\n if (childGraph == null) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n var children = childGraph.getNodes(); // Get the children nodes\n\n //a compound node is not to be tiled if all of its compound children are not to be tiled\n for (var i = 0; i < children.length; i++) {\n var theChild = children[i];\n\n if (this.getNodeDegree(theChild) > 0) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n //pass the children not having the compound structure\n if (theChild.getChild() == null) {\n this.toBeTiled[theChild.id] = false;\n continue;\n }\n\n if (!this.getToBeTiled(theChild)) {\n this.toBeTiled[id] = false;\n return false;\n }\n }\n this.toBeTiled[id] = true;\n return true;\n};\n\n// Get degree of a node depending of its edges and independent of its children\nCoSELayout.prototype.getNodeDegree = function (node) {\n var id = node.id;\n var edges = node.getEdges();\n var degree = 0;\n\n // For the edges connected\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n if (edge.getSource().id !== edge.getTarget().id) {\n degree = degree + 1;\n }\n }\n return degree;\n};\n\n// Get degree of a node with its children\nCoSELayout.prototype.getNodeDegreeWithChildren = function (node) {\n var degree = this.getNodeDegree(node);\n if (node.getChild() == null) {\n return degree;\n }\n var children = node.getChild().getNodes();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n degree += this.getNodeDegreeWithChildren(child);\n }\n return degree;\n};\n\nCoSELayout.prototype.performDFSOnCompounds = function () {\n this.compoundOrder = [];\n this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes());\n};\n\nCoSELayout.prototype.fillCompexOrderByDFS = function (children) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.getChild() != null) {\n this.fillCompexOrderByDFS(child.getChild().getNodes());\n }\n if (this.getToBeTiled(child)) {\n this.compoundOrder.push(child);\n }\n }\n};\n\n/**\n* This method places each zero degree member wrt given (x,y) coordinates (top left).\n*/\nCoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin, compoundLabelMarginLeft, compoundLabelMarginTop) {\n x += compoundHorizontalMargin + compoundLabelMarginLeft;\n y += compoundVerticalMargin + compoundLabelMarginTop;\n\n var left = x;\n\n for (var i = 0; i < organization.rows.length; i++) {\n var row = organization.rows[i];\n x = left;\n var maxHeight = 0;\n\n for (var j = 0; j < row.length; j++) {\n var lnode = row[j];\n\n lnode.rect.x = x; // + lnode.rect.width / 2;\n lnode.rect.y = y; // + lnode.rect.height / 2;\n\n x += lnode.rect.width + organization.horizontalPadding;\n\n if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height;\n }\n\n y += maxHeight + organization.verticalPadding;\n }\n};\n\nCoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) {\n var self = this;\n this.tiledMemberPack = [];\n\n Object.keys(childGraphMap).forEach(function (id) {\n // Get the compound node\n var compoundNode = idToNode[id];\n\n self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n compoundNode.rect.width = self.tiledMemberPack[id].width;\n compoundNode.rect.height = self.tiledMemberPack[id].height;\n compoundNode.setCenter(self.tiledMemberPack[id].centerX, self.tiledMemberPack[id].centerY);\n\n // compound left and top margings for labels\n // when node labels are included, these values may be set to different values below and are used in tilingPostLayout,\n // otherwise they stay as zero\n compoundNode.labelMarginLeft = 0;\n compoundNode.labelMarginTop = 0;\n\n // Update compound bounds considering its label properties and set label margins for left and top\n if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = compoundNode.rect.width;\n var height = compoundNode.rect.height;\n\n if (compoundNode.labelWidth) {\n if (compoundNode.labelPosHorizontal == \"left\") {\n compoundNode.rect.x -= compoundNode.labelWidth;\n compoundNode.setWidth(width + compoundNode.labelWidth);\n compoundNode.labelMarginLeft = compoundNode.labelWidth;\n } else if (compoundNode.labelPosHorizontal == \"center\" && compoundNode.labelWidth > width) {\n compoundNode.rect.x -= (compoundNode.labelWidth - width) / 2;\n compoundNode.setWidth(compoundNode.labelWidth);\n compoundNode.labelMarginLeft = (compoundNode.labelWidth - width) / 2;\n } else if (compoundNode.labelPosHorizontal == \"right\") {\n compoundNode.setWidth(width + compoundNode.labelWidth);\n }\n }\n\n if (compoundNode.labelHeight) {\n if (compoundNode.labelPosVertical == \"top\") {\n compoundNode.rect.y -= compoundNode.labelHeight;\n compoundNode.setHeight(height + compoundNode.labelHeight);\n compoundNode.labelMarginTop = compoundNode.labelHeight;\n } else if (compoundNode.labelPosVertical == \"center\" && compoundNode.labelHeight > height) {\n compoundNode.rect.y -= (compoundNode.labelHeight - height) / 2;\n compoundNode.setHeight(compoundNode.labelHeight);\n compoundNode.labelMarginTop = (compoundNode.labelHeight - height) / 2;\n } else if (compoundNode.labelPosVertical == \"bottom\") {\n compoundNode.setHeight(height + compoundNode.labelHeight);\n }\n }\n }\n });\n};\n\nCoSELayout.prototype.tileNodes = function (nodes, minWidth) {\n var horizontalOrg = this.tileNodesByFavoringDim(nodes, minWidth, true);\n var verticalOrg = this.tileNodesByFavoringDim(nodes, minWidth, false);\n\n var horizontalRatio = this.getOrgRatio(horizontalOrg);\n var verticalRatio = this.getOrgRatio(verticalOrg);\n var bestOrg;\n\n // the best ratio is the one that is closer to 1 since the ratios are already normalized\n // and the best organization is the one that has the best ratio\n if (verticalRatio < horizontalRatio) {\n bestOrg = verticalOrg;\n } else {\n bestOrg = horizontalOrg;\n }\n\n return bestOrg;\n};\n\n// get the width/height ratio of the organization that is normalized so that it will not be less than 1\nCoSELayout.prototype.getOrgRatio = function (organization) {\n // get dimensions and calculate the initial ratio\n var width = organization.width;\n var height = organization.height;\n var ratio = width / height;\n\n // if the initial ratio is less then 1 then inverse it\n if (ratio < 1) {\n ratio = 1 / ratio;\n }\n\n // return the normalized ratio\n return ratio;\n};\n\n/*\n * Calculates the ideal width for the rows. This method assumes that\n * each node has the same sizes and calculates the ideal row width that\n * approximates a square shaped complex accordingly. However, since nodes would\n * have different sizes some rows would have different sizes and the resulting\n * shape would not be an exact square.\n */\nCoSELayout.prototype.calcIdealRowWidth = function (members, favorHorizontalDim) {\n // To approximate a square shaped complex we need to make complex width equal to complex height.\n // To achieve this we need to solve the following equation system for hc:\n // (x + bx) * hc - bx = (y + by) * vc - by, hc * vc = n\n // where x is the avarage width of the nodes, y is the avarage height of nodes\n // bx and by are the buffer sizes in horizontal and vertical dimensions accordingly,\n // hc and vc are the number of rows in horizontal and vertical dimensions\n // n is number of members.\n\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n\n // number of members\n var membersSize = members.length;\n\n // sum of the width of all members\n var totalWidth = 0;\n\n // sum of the height of all members\n var totalHeight = 0;\n\n var maxWidth = 0;\n\n // traverse all members to calculate total width and total height and get the maximum members width\n members.forEach(function (node) {\n totalWidth += node.getWidth();\n totalHeight += node.getHeight();\n\n if (node.getWidth() > maxWidth) {\n maxWidth = node.getWidth();\n }\n });\n\n // average width of the members\n var averageWidth = totalWidth / membersSize;\n\n // average height of the members\n var averageHeight = totalHeight / membersSize;\n\n // solving the initial equation system for the hc yields the following second degree equation:\n // hc^2 * (x+bx) + hc * (by - bx) - n * (y + by) = 0\n\n // the delta value to solve the equation above for hc\n var delta = Math.pow(verticalPadding - horizontalPadding, 2) + 4 * (averageWidth + horizontalPadding) * (averageHeight + verticalPadding) * membersSize;\n\n // solve the equation using delta value to calculate the horizontal count\n // that represents the number of nodes in an ideal row\n var horizontalCountDouble = (horizontalPadding - verticalPadding + Math.sqrt(delta)) / (2 * (averageWidth + horizontalPadding));\n // round the calculated horizontal count up or down according to the favored dimension\n var horizontalCount;\n\n if (favorHorizontalDim) {\n horizontalCount = Math.ceil(horizontalCountDouble);\n // if horizontalCount count is not a float value then both of rounding to floor and ceil\n // will yield the same values. Instead of repeating the same calculation try going up\n // while favoring horizontal dimension in such cases\n if (horizontalCount == horizontalCountDouble) {\n horizontalCount++;\n }\n } else {\n horizontalCount = Math.floor(horizontalCountDouble);\n }\n\n // ideal width to be calculated\n var idealWidth = horizontalCount * (averageWidth + horizontalPadding) - horizontalPadding;\n\n // if max width is bigger than calculated ideal width reset ideal width to it\n if (maxWidth > idealWidth) {\n idealWidth = maxWidth;\n }\n\n // add the left-right margins to the ideal row width\n idealWidth += horizontalPadding * 2;\n\n // return the ideal row width1\n return idealWidth;\n};\n\nCoSELayout.prototype.tileNodesByFavoringDim = function (nodes, minWidth, favorHorizontalDim) {\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n var tilingCompareBy = CoSEConstants.TILING_COMPARE_BY;\n var organization = {\n rows: [],\n rowWidth: [],\n rowHeight: [],\n width: 0,\n height: minWidth, // assume minHeight equals to minWidth\n verticalPadding: verticalPadding,\n horizontalPadding: horizontalPadding,\n centerX: 0,\n centerY: 0\n };\n\n if (tilingCompareBy) {\n organization.idealRowWidth = this.calcIdealRowWidth(nodes, favorHorizontalDim);\n }\n\n var getNodeArea = function getNodeArea(n) {\n return n.rect.width * n.rect.height;\n };\n\n var areaCompareFcn = function areaCompareFcn(n1, n2) {\n return getNodeArea(n2) - getNodeArea(n1);\n };\n\n // Sort the nodes in descending order of their areas\n nodes.sort(function (n1, n2) {\n var cmpBy = areaCompareFcn;\n if (organization.idealRowWidth) {\n cmpBy = tilingCompareBy;\n return cmpBy(n1.id, n2.id);\n }\n return cmpBy(n1, n2);\n });\n\n // Create the organization -> calculate compound center\n var sumCenterX = 0;\n var sumCenterY = 0;\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n sumCenterX += lNode.getCenterX();\n sumCenterY += lNode.getCenterY();\n }\n\n organization.centerX = sumCenterX / nodes.length;\n organization.centerY = sumCenterY / nodes.length;\n\n // Create the organization -> tile members\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n if (organization.rows.length == 0) {\n this.insertNodeToRow(organization, lNode, 0, minWidth);\n } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) {\n var rowIndex = organization.rows.length - 1;\n if (!organization.idealRowWidth) {\n rowIndex = this.getShortestRowIndex(organization);\n }\n this.insertNodeToRow(organization, lNode, rowIndex, minWidth);\n } else {\n this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth);\n }\n\n this.shiftToLastRow(organization);\n }\n\n return organization;\n};\n\nCoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) {\n var minCompoundSize = minWidth;\n\n // Add new row if needed\n if (rowIndex == organization.rows.length) {\n var secondDimension = [];\n\n organization.rows.push(secondDimension);\n organization.rowWidth.push(minCompoundSize);\n organization.rowHeight.push(0);\n }\n\n // Update row width\n var w = organization.rowWidth[rowIndex] + node.rect.width;\n\n if (organization.rows[rowIndex].length > 0) {\n w += organization.horizontalPadding;\n }\n\n organization.rowWidth[rowIndex] = w;\n // Update compound width\n if (organization.width < w) {\n organization.width = w;\n }\n\n // Update height\n var h = node.rect.height;\n if (rowIndex > 0) h += organization.verticalPadding;\n\n var extraHeight = 0;\n if (h > organization.rowHeight[rowIndex]) {\n extraHeight = organization.rowHeight[rowIndex];\n organization.rowHeight[rowIndex] = h;\n extraHeight = organization.rowHeight[rowIndex] - extraHeight;\n }\n\n organization.height += extraHeight;\n\n // Insert node\n organization.rows[rowIndex].push(node);\n};\n\n//Scans the rows of an organization and returns the one with the min width\nCoSELayout.prototype.getShortestRowIndex = function (organization) {\n var r = -1;\n var min = Number.MAX_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n if (organization.rowWidth[i] < min) {\n r = i;\n min = organization.rowWidth[i];\n }\n }\n return r;\n};\n\n//Scans the rows of an organization and returns the one with the max width\nCoSELayout.prototype.getLongestRowIndex = function (organization) {\n var r = -1;\n var max = Number.MIN_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n\n if (organization.rowWidth[i] > max) {\n r = i;\n max = organization.rowWidth[i];\n }\n }\n\n return r;\n};\n\n/**\n* This method checks whether adding extra width to the organization violates\n* the aspect ratio(1) or not.\n*/\nCoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) {\n\n // if there is an ideal row width specified use it instead of checking the aspect ratio\n if (organization.idealRowWidth) {\n var lastRowIndex = organization.rows.length - 1;\n var lastRowWidth = organization.rowWidth[lastRowIndex];\n\n // check and return if ideal row width will be exceed if the node is added to the row\n return lastRowWidth + extraWidth + organization.horizontalPadding <= organization.idealRowWidth;\n }\n\n var sri = this.getShortestRowIndex(organization);\n\n if (sri < 0) {\n return true;\n }\n\n var min = organization.rowWidth[sri];\n\n if (min + organization.horizontalPadding + extraWidth <= organization.width) return true;\n\n var hDiff = 0;\n\n // Adding to an existing row\n if (organization.rowHeight[sri] < extraHeight) {\n if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri];\n }\n\n var add_to_row_ratio;\n if (organization.width - min >= extraWidth + organization.horizontalPadding) {\n add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding);\n } else {\n add_to_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n // Adding a new row for this node\n hDiff = extraHeight + organization.verticalPadding;\n var add_new_row_ratio;\n if (organization.width < extraWidth) {\n add_new_row_ratio = (organization.height + hDiff) / extraWidth;\n } else {\n add_new_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio;\n\n if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio;\n\n return add_to_row_ratio < add_new_row_ratio;\n};\n\n//If moving the last node from the longest row and adding it to the last\n//row makes the bounding box smaller, do it.\nCoSELayout.prototype.shiftToLastRow = function (organization) {\n var longest = this.getLongestRowIndex(organization);\n var last = organization.rowWidth.length - 1;\n var row = organization.rows[longest];\n var node = row[row.length - 1];\n\n var diff = node.width + organization.horizontalPadding;\n\n // Check if there is enough space on the last row\n if (organization.width - organization.rowWidth[last] > diff && longest != last) {\n // Remove the last element of the longest row\n row.splice(-1, 1);\n\n // Push it to the last row\n organization.rows[last].push(node);\n\n organization.rowWidth[longest] = organization.rowWidth[longest] - diff;\n organization.rowWidth[last] = organization.rowWidth[last] + diff;\n organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)];\n\n // Update heights of the organization\n var maxHeight = Number.MIN_VALUE;\n for (var i = 0; i < row.length; i++) {\n if (row[i].height > maxHeight) maxHeight = row[i].height;\n }\n if (longest > 0) maxHeight += organization.verticalPadding;\n\n var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n\n organization.rowHeight[longest] = maxHeight;\n if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding;\n\n var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n organization.height += finalTotal - prevTotal;\n\n this.shiftToLastRow(organization);\n }\n};\n\nCoSELayout.prototype.tilingPreLayout = function () {\n if (CoSEConstants.TILE) {\n // Find zero degree nodes and create a compound for each level\n this.groupZeroDegreeMembers();\n // Tile and clear children of each compound\n this.clearCompounds();\n // Separately tile and clear zero degree nodes for each level\n this.clearZeroDegreeMembers();\n }\n};\n\nCoSELayout.prototype.tilingPostLayout = function () {\n if (CoSEConstants.TILE) {\n this.repopulateZeroDegreeMembers();\n this.repopulateCompounds();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Tree Reduction methods\n// -----------------------------------------------------------------------------\n// Reduce trees \nCoSELayout.prototype.reduceTrees = function () {\n var prunedNodesAll = [];\n var containsLeaf = true;\n var node;\n\n while (containsLeaf) {\n var allNodes = this.graphManager.getAllNodes();\n var prunedNodesInStepTemp = [];\n containsLeaf = false;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) {\n if (CoSEConstants.PURE_INCREMENTAL) {\n var otherEnd = node.getEdges()[0].getOtherEnd(node);\n var relativePosition = new DimensionD(node.getCenterX() - otherEnd.getCenterX(), node.getCenterY() - otherEnd.getCenterY());\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner(), relativePosition]);\n } else {\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]);\n }\n containsLeaf = true;\n }\n }\n if (containsLeaf == true) {\n var prunedNodesInStep = [];\n for (var j = 0; j < prunedNodesInStepTemp.length; j++) {\n if (prunedNodesInStepTemp[j][0].getEdges().length == 1) {\n prunedNodesInStep.push(prunedNodesInStepTemp[j]);\n prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]);\n }\n }\n prunedNodesAll.push(prunedNodesInStep);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n }\n }\n this.prunedNodesAll = prunedNodesAll;\n};\n\n// Grow tree one step \nCoSELayout.prototype.growTree = function (prunedNodesAll) {\n var lengthOfPrunedNodesInStep = prunedNodesAll.length;\n var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1];\n\n var nodeData;\n for (var i = 0; i < prunedNodesInStep.length; i++) {\n nodeData = prunedNodesInStep[i];\n\n this.findPlaceforPrunedNode(nodeData);\n\n nodeData[2].add(nodeData[0]);\n nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target);\n }\n\n prunedNodesAll.splice(prunedNodesAll.length - 1, 1);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n};\n\n// Find an appropriate position to replace pruned node, this method can be improved\nCoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) {\n\n var gridForPrunedNode;\n var nodeToConnect;\n var prunedNode = nodeData[0];\n if (prunedNode == nodeData[1].source) {\n nodeToConnect = nodeData[1].target;\n } else {\n nodeToConnect = nodeData[1].source;\n }\n\n if (CoSEConstants.PURE_INCREMENTAL) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeData[3].getWidth(), nodeToConnect.getCenterY() + nodeData[3].getHeight());\n } else {\n var startGridX = nodeToConnect.startX;\n var finishGridX = nodeToConnect.finishX;\n var startGridY = nodeToConnect.startY;\n var finishGridY = nodeToConnect.finishY;\n\n var upNodeCount = 0;\n var downNodeCount = 0;\n var rightNodeCount = 0;\n var leftNodeCount = 0;\n var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount];\n\n if (startGridY > 0) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1;\n }\n }\n if (finishGridX < this.grid.length - 1) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1;\n }\n }\n if (finishGridY < this.grid[0].length - 1) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1;\n }\n }\n if (startGridX > 0) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1;\n }\n }\n var min = Integer.MAX_VALUE;\n var minCount;\n var minIndex;\n for (var j = 0; j < controlRegions.length; j++) {\n if (controlRegions[j] < min) {\n min = controlRegions[j];\n minCount = 1;\n minIndex = j;\n } else if (controlRegions[j] == min) {\n minCount++;\n }\n }\n\n if (minCount == 3 && min == 0) {\n if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) {\n gridForPrunedNode = 1;\n } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 0;\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 3;\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 2;\n }\n } else if (minCount == 2 && min == 0) {\n var random = Math.floor(Math.random() * 2);\n if (controlRegions[0] == 0 && controlRegions[1] == 0) {\n ;\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 1;\n }\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[0] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 3;\n }\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[1] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 3;\n }\n } else {\n if (random == 0) {\n gridForPrunedNode = 2;\n } else {\n gridForPrunedNode = 3;\n }\n }\n } else if (minCount == 4 && min == 0) {\n var random = Math.floor(Math.random() * 4);\n gridForPrunedNode = random;\n } else {\n gridForPrunedNode = minIndex;\n }\n\n if (gridForPrunedNode == 0) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2);\n } else if (gridForPrunedNode == 1) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n } else if (gridForPrunedNode == 2) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2);\n } else {\n prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n }\n }\n};\n\nmodule.exports = CoSELayout;\n\n/***/ }),\n\n/***/ 991:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutNode = __webpack_require__(551).FDLayoutNode;\nvar IMath = __webpack_require__(551).IMath;\n\nfunction CoSENode(gm, loc, size, vNode) {\n FDLayoutNode.call(this, gm, loc, size, vNode);\n}\n\nCoSENode.prototype = Object.create(FDLayoutNode.prototype);\nfor (var prop in FDLayoutNode) {\n CoSENode[prop] = FDLayoutNode[prop];\n}\n\nCoSENode.prototype.calculateDisplacement = function () {\n var layout = this.graphManager.getLayout();\n // this check is for compound nodes that contain fixed nodes\n if (this.getChild() != null && this.fixedNodeWeight) {\n this.displacementX += layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.fixedNodeWeight;\n this.displacementY += layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.fixedNodeWeight;\n } else {\n this.displacementX += layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren;\n this.displacementY += layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren;\n }\n\n if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX);\n }\n\n if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY);\n }\n\n // non-empty compound node, propogate movement to children as well\n if (this.child && this.child.getNodes().length > 0) {\n this.propogateDisplacementToChildren(this.displacementX, this.displacementY);\n }\n};\n\nCoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) {\n var nodes = this.getChild().getNodes();\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n node.displacementX += dX;\n node.displacementY += dY;\n } else {\n node.propogateDisplacementToChildren(dX, dY);\n }\n }\n};\n\nCoSENode.prototype.move = function () {\n var layout = this.graphManager.getLayout();\n\n // a simple node or an empty compound node, move it\n if (this.child == null || this.child.getNodes().length == 0) {\n this.moveBy(this.displacementX, this.displacementY);\n\n layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY);\n }\n\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n this.displacementX = 0;\n this.displacementY = 0;\n};\n\nCoSENode.prototype.setPred1 = function (pred1) {\n this.pred1 = pred1;\n};\n\nCoSENode.prototype.getPred1 = function () {\n return pred1;\n};\n\nCoSENode.prototype.getPred2 = function () {\n return pred2;\n};\n\nCoSENode.prototype.setNext = function (next) {\n this.next = next;\n};\n\nCoSENode.prototype.getNext = function () {\n return next;\n};\n\nCoSENode.prototype.setProcessed = function (processed) {\n this.processed = processed;\n};\n\nCoSENode.prototype.isProcessed = function () {\n return processed;\n};\n\nmodule.exports = CoSENode;\n\n/***/ }),\n\n/***/ 902:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar CoSEConstants = __webpack_require__(806);\nvar LinkedList = __webpack_require__(551).LinkedList;\nvar Matrix = __webpack_require__(551).Matrix;\nvar SVD = __webpack_require__(551).SVD;\n\nfunction ConstraintHandler() {}\n\nConstraintHandler.handleConstraints = function (layout) {\n // let layout = this.graphManager.getLayout();\n\n // get constraints from layout\n var constraints = {};\n constraints.fixedNodeConstraint = layout.constraints.fixedNodeConstraint;\n constraints.alignmentConstraint = layout.constraints.alignmentConstraint;\n constraints.relativePlacementConstraint = layout.constraints.relativePlacementConstraint;\n\n var idToNodeMap = new Map();\n var nodeIndexes = new Map();\n var xCoords = [];\n var yCoords = [];\n\n var allNodes = layout.getAllNodes();\n var index = 0;\n // fill index map and coordinates\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n if (node.getChild() == null) {\n nodeIndexes.set(node.id, index++);\n xCoords.push(node.getCenterX());\n yCoords.push(node.getCenterY());\n idToNodeMap.set(node.id, node);\n }\n }\n\n // if there exists relative placement constraint without gap value, set it to default \n if (constraints.relativePlacementConstraint) {\n constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (!constraint.gap && constraint.gap != 0) {\n if (constraint.left) {\n constraint.gap = CoSEConstants.DEFAULT_EDGE_LENGTH + idToNodeMap.get(constraint.left).getWidth() / 2 + idToNodeMap.get(constraint.right).getWidth() / 2;\n } else {\n constraint.gap = CoSEConstants.DEFAULT_EDGE_LENGTH + idToNodeMap.get(constraint.top).getHeight() / 2 + idToNodeMap.get(constraint.bottom).getHeight() / 2;\n }\n }\n });\n }\n\n /* auxiliary functions */\n\n // calculate difference between two position objects\n var calculatePositionDiff = function calculatePositionDiff(pos1, pos2) {\n return { x: pos1.x - pos2.x, y: pos1.y - pos2.y };\n };\n\n // calculate average position of the nodes\n var calculateAvgPosition = function calculateAvgPosition(nodeIdSet) {\n var xPosSum = 0;\n var yPosSum = 0;\n nodeIdSet.forEach(function (nodeId) {\n xPosSum += xCoords[nodeIndexes.get(nodeId)];\n yPosSum += yCoords[nodeIndexes.get(nodeId)];\n });\n\n return { x: xPosSum / nodeIdSet.size, y: yPosSum / nodeIdSet.size };\n };\n\n // find an appropriate positioning for the nodes in a given graph according to relative placement constraints\n // this function also takes the fixed nodes and alignment constraints into account\n // graph: dag to be evaluated, direction: \"horizontal\" or \"vertical\", \n // fixedNodes: set of fixed nodes to consider during evaluation, dummyPositions: appropriate coordinates of the dummy nodes \n var findAppropriatePositionForRelativePlacement = function findAppropriatePositionForRelativePlacement(graph, direction, fixedNodes, dummyPositions, componentSources) {\n\n // find union of two sets\n function setUnion(setA, setB) {\n var union = new Set(setA);\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = setB[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var elem = _step.value;\n\n union.add(elem);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return union;\n }\n\n // find indegree count for each node\n var inDegrees = new Map();\n\n graph.forEach(function (value, key) {\n inDegrees.set(key, 0);\n });\n graph.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n inDegrees.set(adjacent.id, inDegrees.get(adjacent.id) + 1);\n });\n });\n\n var positionMap = new Map(); // keeps the position for each node\n var pastMap = new Map(); // keeps the predecessors(past) of a node\n var queue = new LinkedList();\n inDegrees.forEach(function (value, key) {\n if (value == 0) {\n queue.push(key);\n if (!fixedNodes) {\n if (direction == \"horizontal\") {\n positionMap.set(key, nodeIndexes.has(key) ? xCoords[nodeIndexes.get(key)] : dummyPositions.get(key));\n } else {\n positionMap.set(key, nodeIndexes.has(key) ? yCoords[nodeIndexes.get(key)] : dummyPositions.get(key));\n }\n }\n } else {\n positionMap.set(key, Number.NEGATIVE_INFINITY);\n }\n if (fixedNodes) {\n pastMap.set(key, new Set([key]));\n }\n });\n\n // align sources of each component in enforcement phase\n if (fixedNodes) {\n componentSources.forEach(function (component) {\n var fixedIds = [];\n component.forEach(function (nodeId) {\n if (fixedNodes.has(nodeId)) {\n fixedIds.push(nodeId);\n }\n });\n if (fixedIds.length > 0) {\n var position = 0;\n fixedIds.forEach(function (fixedId) {\n if (direction == \"horizontal\") {\n positionMap.set(fixedId, nodeIndexes.has(fixedId) ? xCoords[nodeIndexes.get(fixedId)] : dummyPositions.get(fixedId));\n position += positionMap.get(fixedId);\n } else {\n positionMap.set(fixedId, nodeIndexes.has(fixedId) ? yCoords[nodeIndexes.get(fixedId)] : dummyPositions.get(fixedId));\n position += positionMap.get(fixedId);\n }\n });\n position = position / fixedIds.length;\n component.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) {\n positionMap.set(nodeId, position);\n }\n });\n } else {\n var _position = 0;\n component.forEach(function (nodeId) {\n if (direction == \"horizontal\") {\n _position += nodeIndexes.has(nodeId) ? xCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n } else {\n _position += nodeIndexes.has(nodeId) ? yCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n }\n });\n _position = _position / component.length;\n component.forEach(function (nodeId) {\n positionMap.set(nodeId, _position);\n });\n }\n });\n }\n\n // calculate positions of the nodes\n\n var _loop = function _loop() {\n var currentNode = queue.shift();\n var neighbors = graph.get(currentNode);\n neighbors.forEach(function (neighbor) {\n if (positionMap.get(neighbor.id) < positionMap.get(currentNode) + neighbor.gap) {\n if (fixedNodes && fixedNodes.has(neighbor.id)) {\n var fixedPosition = void 0;\n if (direction == \"horizontal\") {\n fixedPosition = nodeIndexes.has(neighbor.id) ? xCoords[nodeIndexes.get(neighbor.id)] : dummyPositions.get(neighbor.id);\n } else {\n fixedPosition = nodeIndexes.has(neighbor.id) ? yCoords[nodeIndexes.get(neighbor.id)] : dummyPositions.get(neighbor.id);\n }\n positionMap.set(neighbor.id, fixedPosition); // TODO: may do unnecessary work\n if (fixedPosition < positionMap.get(currentNode) + neighbor.gap) {\n var diff = positionMap.get(currentNode) + neighbor.gap - fixedPosition;\n pastMap.get(currentNode).forEach(function (nodeId) {\n positionMap.set(nodeId, positionMap.get(nodeId) - diff);\n });\n }\n } else {\n positionMap.set(neighbor.id, positionMap.get(currentNode) + neighbor.gap);\n }\n }\n inDegrees.set(neighbor.id, inDegrees.get(neighbor.id) - 1);\n if (inDegrees.get(neighbor.id) == 0) {\n queue.push(neighbor.id);\n }\n if (fixedNodes) {\n pastMap.set(neighbor.id, setUnion(pastMap.get(currentNode), pastMap.get(neighbor.id)));\n }\n });\n };\n\n while (queue.length != 0) {\n _loop();\n }\n\n // readjust position of the nodes after enforcement\n if (fixedNodes) {\n // find indegree count for each node\n var sinkNodes = new Set();\n\n graph.forEach(function (value, key) {\n if (value.length == 0) {\n sinkNodes.add(key);\n }\n });\n\n var _components = [];\n pastMap.forEach(function (value, key) {\n if (sinkNodes.has(key)) {\n var isFixedComponent = false;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = value[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var nodeId = _step2.value;\n\n if (fixedNodes.has(nodeId)) {\n isFixedComponent = true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (!isFixedComponent) {\n var isExist = false;\n var existAt = void 0;\n _components.forEach(function (component, index) {\n if (component.has([].concat(_toConsumableArray(value))[0])) {\n isExist = true;\n existAt = index;\n }\n });\n if (!isExist) {\n _components.push(new Set(value));\n } else {\n value.forEach(function (ele) {\n _components[existAt].add(ele);\n });\n }\n }\n }\n });\n\n _components.forEach(function (component, index) {\n var minBefore = Number.POSITIVE_INFINITY;\n var minAfter = Number.POSITIVE_INFINITY;\n var maxBefore = Number.NEGATIVE_INFINITY;\n var maxAfter = Number.NEGATIVE_INFINITY;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = component[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var nodeId = _step3.value;\n\n var posBefore = void 0;\n if (direction == \"horizontal\") {\n posBefore = nodeIndexes.has(nodeId) ? xCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n } else {\n posBefore = nodeIndexes.has(nodeId) ? yCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n }\n var posAfter = positionMap.get(nodeId);\n if (posBefore < minBefore) {\n minBefore = posBefore;\n }\n if (posBefore > maxBefore) {\n maxBefore = posBefore;\n }\n if (posAfter < minAfter) {\n minAfter = posAfter;\n }\n if (posAfter > maxAfter) {\n maxAfter = posAfter;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var diff = (minBefore + maxBefore) / 2 - (minAfter + maxAfter) / 2;\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = component[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var _nodeId = _step4.value;\n\n positionMap.set(_nodeId, positionMap.get(_nodeId) + diff);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n });\n }\n\n return positionMap;\n };\n\n // find transformation based on rel. placement constraints if there are both alignment and rel. placement constraints\n // or if there are only rel. placement contraints where the largest component isn't sufficiently large\n var applyReflectionForRelativePlacement = function applyReflectionForRelativePlacement(relativePlacementConstraints) {\n // variables to count votes\n var reflectOnY = 0,\n notReflectOnY = 0;\n var reflectOnX = 0,\n notReflectOnX = 0;\n\n relativePlacementConstraints.forEach(function (constraint) {\n if (constraint.left) {\n xCoords[nodeIndexes.get(constraint.left)] - xCoords[nodeIndexes.get(constraint.right)] >= 0 ? reflectOnY++ : notReflectOnY++;\n } else {\n yCoords[nodeIndexes.get(constraint.top)] - yCoords[nodeIndexes.get(constraint.bottom)] >= 0 ? reflectOnX++ : notReflectOnX++;\n }\n });\n\n if (reflectOnY > notReflectOnY && reflectOnX > notReflectOnX) {\n for (var _i = 0; _i < nodeIndexes.size; _i++) {\n xCoords[_i] = -1 * xCoords[_i];\n yCoords[_i] = -1 * yCoords[_i];\n }\n } else if (reflectOnY > notReflectOnY) {\n for (var _i2 = 0; _i2 < nodeIndexes.size; _i2++) {\n xCoords[_i2] = -1 * xCoords[_i2];\n }\n } else if (reflectOnX > notReflectOnX) {\n for (var _i3 = 0; _i3 < nodeIndexes.size; _i3++) {\n yCoords[_i3] = -1 * yCoords[_i3];\n }\n }\n };\n\n // find weakly connected components in undirected graph\n var findComponents = function findComponents(graph) {\n // find weakly connected components in dag\n var components = [];\n var queue = new LinkedList();\n var visited = new Set();\n var count = 0;\n\n graph.forEach(function (value, key) {\n if (!visited.has(key)) {\n components[count] = [];\n var _currentNode = key;\n queue.push(_currentNode);\n visited.add(_currentNode);\n components[count].push(_currentNode);\n\n while (queue.length != 0) {\n _currentNode = queue.shift();\n var neighbors = graph.get(_currentNode);\n neighbors.forEach(function (neighbor) {\n if (!visited.has(neighbor.id)) {\n queue.push(neighbor.id);\n visited.add(neighbor.id);\n components[count].push(neighbor.id);\n }\n });\n }\n count++;\n }\n });\n return components;\n };\n\n // return undirected version of given dag\n var dagToUndirected = function dagToUndirected(dag) {\n var undirected = new Map();\n\n dag.forEach(function (value, key) {\n undirected.set(key, []);\n });\n\n dag.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n undirected.get(key).push(adjacent);\n undirected.get(adjacent.id).push({ id: key, gap: adjacent.gap, direction: adjacent.direction });\n });\n });\n\n return undirected;\n };\n\n // return reversed (directions inverted) version of given dag\n var dagToReversed = function dagToReversed(dag) {\n var reversed = new Map();\n\n dag.forEach(function (value, key) {\n reversed.set(key, []);\n });\n\n dag.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n reversed.get(adjacent.id).push({ id: key, gap: adjacent.gap, direction: adjacent.direction });\n });\n });\n\n return reversed;\n };\n\n /**** apply transformation to the initial draft layout to better align with constrained nodes ****/\n // solve the Orthogonal Procrustean Problem to rotate and/or reflect initial draft layout\n // here we follow the solution in Chapter 20.2 of Borg, I. & Groenen, P. (2005) Modern Multidimensional Scaling: Theory and Applications \n\n /* construct source and target configurations */\n\n var targetMatrix = []; // A - target configuration\n var sourceMatrix = []; // B - source configuration \n var standardTransformation = false; // false for no transformation, true for standart (Procrustes) transformation (rotation and/or reflection)\n var reflectionType = false; // false/true for reflection check, 'reflectOnX', 'reflectOnY' or 'reflectOnBoth' for reflection type if necessary\n var fixedNodes = new Set();\n var dag = new Map(); // adjacency list to keep directed acyclic graph (dag) that consists of relative placement constraints\n var dagUndirected = new Map(); // undirected version of the dag\n var components = []; // weakly connected components\n\n // fill fixedNodes collection to use later\n if (constraints.fixedNodeConstraint) {\n constraints.fixedNodeConstraint.forEach(function (nodeData) {\n fixedNodes.add(nodeData.nodeId);\n });\n }\n\n // construct dag from relative placement constraints \n if (constraints.relativePlacementConstraint) {\n // construct both directed and undirected version of the dag\n constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n if (dag.has(constraint.left)) {\n dag.get(constraint.left).push({ id: constraint.right, gap: constraint.gap, direction: \"horizontal\" });\n } else {\n dag.set(constraint.left, [{ id: constraint.right, gap: constraint.gap, direction: \"horizontal\" }]);\n }\n if (!dag.has(constraint.right)) {\n dag.set(constraint.right, []);\n }\n } else {\n if (dag.has(constraint.top)) {\n dag.get(constraint.top).push({ id: constraint.bottom, gap: constraint.gap, direction: \"vertical\" });\n } else {\n dag.set(constraint.top, [{ id: constraint.bottom, gap: constraint.gap, direction: \"vertical\" }]);\n }\n if (!dag.has(constraint.bottom)) {\n dag.set(constraint.bottom, []);\n }\n }\n });\n\n dagUndirected = dagToUndirected(dag);\n components = findComponents(dagUndirected);\n }\n\n if (CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING) {\n // first check fixed node constraint\n if (constraints.fixedNodeConstraint && constraints.fixedNodeConstraint.length > 1) {\n constraints.fixedNodeConstraint.forEach(function (nodeData, i) {\n targetMatrix[i] = [nodeData.position.x, nodeData.position.y];\n sourceMatrix[i] = [xCoords[nodeIndexes.get(nodeData.nodeId)], yCoords[nodeIndexes.get(nodeData.nodeId)]];\n });\n standardTransformation = true;\n } else if (constraints.alignmentConstraint) {\n (function () {\n // then check alignment constraint\n var count = 0;\n if (constraints.alignmentConstraint.vertical) {\n var verticalAlign = constraints.alignmentConstraint.vertical;\n\n var _loop2 = function _loop2(_i4) {\n var alignmentSet = new Set();\n verticalAlign[_i4].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var xPos = void 0;\n if (intersection.size > 0) xPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else xPos = calculateAvgPosition(alignmentSet).x;\n\n verticalAlign[_i4].forEach(function (nodeId) {\n targetMatrix[count] = [xPos, yCoords[nodeIndexes.get(nodeId)]];\n sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n count++;\n });\n };\n\n for (var _i4 = 0; _i4 < verticalAlign.length; _i4++) {\n _loop2(_i4);\n }\n standardTransformation = true;\n }\n if (constraints.alignmentConstraint.horizontal) {\n var horizontalAlign = constraints.alignmentConstraint.horizontal;\n\n var _loop3 = function _loop3(_i5) {\n var alignmentSet = new Set();\n horizontalAlign[_i5].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var yPos = void 0;\n if (intersection.size > 0) yPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else yPos = calculateAvgPosition(alignmentSet).y;\n\n horizontalAlign[_i5].forEach(function (nodeId) {\n targetMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yPos];\n sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n count++;\n });\n };\n\n for (var _i5 = 0; _i5 < horizontalAlign.length; _i5++) {\n _loop3(_i5);\n }\n standardTransformation = true;\n }\n if (constraints.relativePlacementConstraint) {\n reflectionType = true;\n }\n })();\n } else if (constraints.relativePlacementConstraint) {\n // finally check relative placement constraint\n // find largest component in dag\n var largestComponentSize = 0;\n var largestComponentIndex = 0;\n for (var _i6 = 0; _i6 < components.length; _i6++) {\n if (components[_i6].length > largestComponentSize) {\n largestComponentSize = components[_i6].length;\n largestComponentIndex = _i6;\n }\n }\n // if largest component isn't dominant, then take the votes for reflection\n if (largestComponentSize < dagUndirected.size / 2) {\n applyReflectionForRelativePlacement(constraints.relativePlacementConstraint);\n standardTransformation = false;\n reflectionType = false;\n } else {\n // use largest component for transformation\n // construct horizontal and vertical subgraphs in the largest component\n var subGraphOnHorizontal = new Map();\n var subGraphOnVertical = new Map();\n var constraintsInlargestComponent = [];\n\n components[largestComponentIndex].forEach(function (nodeId) {\n dag.get(nodeId).forEach(function (adjacent) {\n if (adjacent.direction == \"horizontal\") {\n if (subGraphOnHorizontal.has(nodeId)) {\n subGraphOnHorizontal.get(nodeId).push(adjacent);\n } else {\n subGraphOnHorizontal.set(nodeId, [adjacent]);\n }\n if (!subGraphOnHorizontal.has(adjacent.id)) {\n subGraphOnHorizontal.set(adjacent.id, []);\n }\n constraintsInlargestComponent.push({ left: nodeId, right: adjacent.id });\n } else {\n if (subGraphOnVertical.has(nodeId)) {\n subGraphOnVertical.get(nodeId).push(adjacent);\n } else {\n subGraphOnVertical.set(nodeId, [adjacent]);\n }\n if (!subGraphOnVertical.has(adjacent.id)) {\n subGraphOnVertical.set(adjacent.id, []);\n }\n constraintsInlargestComponent.push({ top: nodeId, bottom: adjacent.id });\n }\n });\n });\n\n applyReflectionForRelativePlacement(constraintsInlargestComponent);\n reflectionType = false;\n\n // calculate appropriate positioning for subgraphs\n var positionMapHorizontal = findAppropriatePositionForRelativePlacement(subGraphOnHorizontal, \"horizontal\");\n var positionMapVertical = findAppropriatePositionForRelativePlacement(subGraphOnVertical, \"vertical\");\n\n // construct source and target configuration\n components[largestComponentIndex].forEach(function (nodeId, i) {\n sourceMatrix[i] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n targetMatrix[i] = [];\n if (positionMapHorizontal.has(nodeId)) {\n targetMatrix[i][0] = positionMapHorizontal.get(nodeId);\n } else {\n targetMatrix[i][0] = xCoords[nodeIndexes.get(nodeId)];\n }\n if (positionMapVertical.has(nodeId)) {\n targetMatrix[i][1] = positionMapVertical.get(nodeId);\n } else {\n targetMatrix[i][1] = yCoords[nodeIndexes.get(nodeId)];\n }\n });\n\n standardTransformation = true;\n }\n }\n\n // if transformation is required, then calculate and apply transformation matrix\n if (standardTransformation) {\n /* calculate transformation matrix */\n var transformationMatrix = void 0;\n var targetMatrixTranspose = Matrix.transpose(targetMatrix); // A'\n var sourceMatrixTranspose = Matrix.transpose(sourceMatrix); // B'\n\n // centralize transpose matrices\n for (var _i7 = 0; _i7 < targetMatrixTranspose.length; _i7++) {\n targetMatrixTranspose[_i7] = Matrix.multGamma(targetMatrixTranspose[_i7]);\n sourceMatrixTranspose[_i7] = Matrix.multGamma(sourceMatrixTranspose[_i7]);\n }\n\n // do actual calculation for transformation matrix\n var tempMatrix = Matrix.multMat(targetMatrixTranspose, Matrix.transpose(sourceMatrixTranspose)); // tempMatrix = A'B\n var SVDResult = SVD.svd(tempMatrix); // SVD(A'B) = USV', svd function returns U, S and V \n transformationMatrix = Matrix.multMat(SVDResult.V, Matrix.transpose(SVDResult.U)); // transformationMatrix = T = VU'\n\n /* apply found transformation matrix to obtain final draft layout */\n for (var _i8 = 0; _i8 < nodeIndexes.size; _i8++) {\n var temp1 = [xCoords[_i8], yCoords[_i8]];\n var temp2 = [transformationMatrix[0][0], transformationMatrix[1][0]];\n var temp3 = [transformationMatrix[0][1], transformationMatrix[1][1]];\n xCoords[_i8] = Matrix.dotProduct(temp1, temp2);\n yCoords[_i8] = Matrix.dotProduct(temp1, temp3);\n }\n\n // applied only both alignment and rel. placement constraints exist\n if (reflectionType) {\n applyReflectionForRelativePlacement(constraints.relativePlacementConstraint);\n }\n }\n }\n\n if (CoSEConstants.ENFORCE_CONSTRAINTS) {\n /**** enforce constraints on the transformed draft layout ****/\n\n /* first enforce fixed node constraint */\n\n if (constraints.fixedNodeConstraint && constraints.fixedNodeConstraint.length > 0) {\n var translationAmount = { x: 0, y: 0 };\n constraints.fixedNodeConstraint.forEach(function (nodeData, i) {\n var posInTheory = { x: xCoords[nodeIndexes.get(nodeData.nodeId)], y: yCoords[nodeIndexes.get(nodeData.nodeId)] };\n var posDesired = nodeData.position;\n var posDiff = calculatePositionDiff(posDesired, posInTheory);\n translationAmount.x += posDiff.x;\n translationAmount.y += posDiff.y;\n });\n translationAmount.x /= constraints.fixedNodeConstraint.length;\n translationAmount.y /= constraints.fixedNodeConstraint.length;\n\n xCoords.forEach(function (value, i) {\n xCoords[i] += translationAmount.x;\n });\n\n yCoords.forEach(function (value, i) {\n yCoords[i] += translationAmount.y;\n });\n\n constraints.fixedNodeConstraint.forEach(function (nodeData) {\n xCoords[nodeIndexes.get(nodeData.nodeId)] = nodeData.position.x;\n yCoords[nodeIndexes.get(nodeData.nodeId)] = nodeData.position.y;\n });\n }\n\n /* then enforce alignment constraint */\n\n if (constraints.alignmentConstraint) {\n if (constraints.alignmentConstraint.vertical) {\n var xAlign = constraints.alignmentConstraint.vertical;\n\n var _loop4 = function _loop4(_i9) {\n var alignmentSet = new Set();\n xAlign[_i9].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var xPos = void 0;\n if (intersection.size > 0) xPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else xPos = calculateAvgPosition(alignmentSet).x;\n\n alignmentSet.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) xCoords[nodeIndexes.get(nodeId)] = xPos;\n });\n };\n\n for (var _i9 = 0; _i9 < xAlign.length; _i9++) {\n _loop4(_i9);\n }\n }\n if (constraints.alignmentConstraint.horizontal) {\n var yAlign = constraints.alignmentConstraint.horizontal;\n\n var _loop5 = function _loop5(_i10) {\n var alignmentSet = new Set();\n yAlign[_i10].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var yPos = void 0;\n if (intersection.size > 0) yPos = yCoords[nodeIndexes.get(intersection.values().next().value)];else yPos = calculateAvgPosition(alignmentSet).y;\n\n alignmentSet.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) yCoords[nodeIndexes.get(nodeId)] = yPos;\n });\n };\n\n for (var _i10 = 0; _i10 < yAlign.length; _i10++) {\n _loop5(_i10);\n }\n }\n }\n\n /* finally enforce relative placement constraint */\n\n if (constraints.relativePlacementConstraint) {\n (function () {\n var nodeToDummyForVerticalAlignment = new Map();\n var nodeToDummyForHorizontalAlignment = new Map();\n var dummyToNodeForVerticalAlignment = new Map();\n var dummyToNodeForHorizontalAlignment = new Map();\n var dummyPositionsForVerticalAlignment = new Map();\n var dummyPositionsForHorizontalAlignment = new Map();\n var fixedNodesOnHorizontal = new Set();\n var fixedNodesOnVertical = new Set();\n\n // fill maps and sets \n fixedNodes.forEach(function (nodeId) {\n fixedNodesOnHorizontal.add(nodeId);\n fixedNodesOnVertical.add(nodeId);\n });\n\n if (constraints.alignmentConstraint) {\n if (constraints.alignmentConstraint.vertical) {\n var verticalAlignment = constraints.alignmentConstraint.vertical;\n\n var _loop6 = function _loop6(_i11) {\n dummyToNodeForVerticalAlignment.set(\"dummy\" + _i11, []);\n verticalAlignment[_i11].forEach(function (nodeId) {\n nodeToDummyForVerticalAlignment.set(nodeId, \"dummy\" + _i11);\n dummyToNodeForVerticalAlignment.get(\"dummy\" + _i11).push(nodeId);\n if (fixedNodes.has(nodeId)) {\n fixedNodesOnHorizontal.add(\"dummy\" + _i11);\n }\n });\n dummyPositionsForVerticalAlignment.set(\"dummy\" + _i11, xCoords[nodeIndexes.get(verticalAlignment[_i11][0])]);\n };\n\n for (var _i11 = 0; _i11 < verticalAlignment.length; _i11++) {\n _loop6(_i11);\n }\n }\n if (constraints.alignmentConstraint.horizontal) {\n var horizontalAlignment = constraints.alignmentConstraint.horizontal;\n\n var _loop7 = function _loop7(_i12) {\n dummyToNodeForHorizontalAlignment.set(\"dummy\" + _i12, []);\n horizontalAlignment[_i12].forEach(function (nodeId) {\n nodeToDummyForHorizontalAlignment.set(nodeId, \"dummy\" + _i12);\n dummyToNodeForHorizontalAlignment.get(\"dummy\" + _i12).push(nodeId);\n if (fixedNodes.has(nodeId)) {\n fixedNodesOnVertical.add(\"dummy\" + _i12);\n }\n });\n dummyPositionsForHorizontalAlignment.set(\"dummy\" + _i12, yCoords[nodeIndexes.get(horizontalAlignment[_i12][0])]);\n };\n\n for (var _i12 = 0; _i12 < horizontalAlignment.length; _i12++) {\n _loop7(_i12);\n }\n }\n }\n\n // construct horizontal and vertical dags (subgraphs) from overall dag\n var dagOnHorizontal = new Map();\n var dagOnVertical = new Map();\n\n var _loop8 = function _loop8(nodeId) {\n dag.get(nodeId).forEach(function (adjacent) {\n var sourceId = void 0;\n var targetNode = void 0;\n if (adjacent[\"direction\"] == \"horizontal\") {\n sourceId = nodeToDummyForVerticalAlignment.get(nodeId) ? nodeToDummyForVerticalAlignment.get(nodeId) : nodeId;\n if (nodeToDummyForVerticalAlignment.get(adjacent.id)) {\n targetNode = { id: nodeToDummyForVerticalAlignment.get(adjacent.id), gap: adjacent.gap, direction: adjacent.direction };\n } else {\n targetNode = adjacent;\n }\n if (dagOnHorizontal.has(sourceId)) {\n dagOnHorizontal.get(sourceId).push(targetNode);\n } else {\n dagOnHorizontal.set(sourceId, [targetNode]);\n }\n if (!dagOnHorizontal.has(targetNode.id)) {\n dagOnHorizontal.set(targetNode.id, []);\n }\n } else {\n sourceId = nodeToDummyForHorizontalAlignment.get(nodeId) ? nodeToDummyForHorizontalAlignment.get(nodeId) : nodeId;\n if (nodeToDummyForHorizontalAlignment.get(adjacent.id)) {\n targetNode = { id: nodeToDummyForHorizontalAlignment.get(adjacent.id), gap: adjacent.gap, direction: adjacent.direction };\n } else {\n targetNode = adjacent;\n }\n if (dagOnVertical.has(sourceId)) {\n dagOnVertical.get(sourceId).push(targetNode);\n } else {\n dagOnVertical.set(sourceId, [targetNode]);\n }\n if (!dagOnVertical.has(targetNode.id)) {\n dagOnVertical.set(targetNode.id, []);\n }\n }\n });\n };\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = dag.keys()[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var nodeId = _step5.value;\n\n _loop8(nodeId);\n }\n\n // find source nodes of each component in horizontal and vertical dags\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n var undirectedOnHorizontal = dagToUndirected(dagOnHorizontal);\n var undirectedOnVertical = dagToUndirected(dagOnVertical);\n var componentsOnHorizontal = findComponents(undirectedOnHorizontal);\n var componentsOnVertical = findComponents(undirectedOnVertical);\n var reversedDagOnHorizontal = dagToReversed(dagOnHorizontal);\n var reversedDagOnVertical = dagToReversed(dagOnVertical);\n var componentSourcesOnHorizontal = [];\n var componentSourcesOnVertical = [];\n\n componentsOnHorizontal.forEach(function (component, index) {\n componentSourcesOnHorizontal[index] = [];\n component.forEach(function (nodeId) {\n if (reversedDagOnHorizontal.get(nodeId).length == 0) {\n componentSourcesOnHorizontal[index].push(nodeId);\n }\n });\n });\n\n componentsOnVertical.forEach(function (component, index) {\n componentSourcesOnVertical[index] = [];\n component.forEach(function (nodeId) {\n if (reversedDagOnVertical.get(nodeId).length == 0) {\n componentSourcesOnVertical[index].push(nodeId);\n }\n });\n });\n\n // calculate appropriate positioning for subgraphs\n var positionMapHorizontal = findAppropriatePositionForRelativePlacement(dagOnHorizontal, \"horizontal\", fixedNodesOnHorizontal, dummyPositionsForVerticalAlignment, componentSourcesOnHorizontal);\n var positionMapVertical = findAppropriatePositionForRelativePlacement(dagOnVertical, \"vertical\", fixedNodesOnVertical, dummyPositionsForHorizontalAlignment, componentSourcesOnVertical);\n\n // update positions of the nodes based on relative placement constraints\n\n var _loop9 = function _loop9(key) {\n if (dummyToNodeForVerticalAlignment.get(key)) {\n dummyToNodeForVerticalAlignment.get(key).forEach(function (nodeId) {\n xCoords[nodeIndexes.get(nodeId)] = positionMapHorizontal.get(key);\n });\n } else {\n xCoords[nodeIndexes.get(key)] = positionMapHorizontal.get(key);\n }\n };\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = positionMapHorizontal.keys()[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var key = _step6.value;\n\n _loop9(key);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n var _loop10 = function _loop10(key) {\n if (dummyToNodeForHorizontalAlignment.get(key)) {\n dummyToNodeForHorizontalAlignment.get(key).forEach(function (nodeId) {\n yCoords[nodeIndexes.get(nodeId)] = positionMapVertical.get(key);\n });\n } else {\n yCoords[nodeIndexes.get(key)] = positionMapVertical.get(key);\n }\n };\n\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = positionMapVertical.keys()[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var key = _step7.value;\n\n _loop10(key);\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n })();\n }\n }\n\n // assign new coordinates to nodes after constraint handling\n for (var _i13 = 0; _i13 < allNodes.length; _i13++) {\n var _node = allNodes[_i13];\n if (_node.getChild() == null) {\n _node.setCenter(xCoords[nodeIndexes.get(_node.id)], yCoords[nodeIndexes.get(_node.id)]);\n }\n }\n};\n\nmodule.exports = ConstraintHandler;\n\n/***/ }),\n\n/***/ 551:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__551__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(45);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"cose-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"cose-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeFcose\"] = factory(require(\"cose-base\"));\n\telse\n\t\troot[\"cytoscapeFcose\"] = factory(root[\"coseBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__140__) {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 658:\n/***/ ((module) => {\n\n\n\n// Simple, internal Object.assign() polyfill for options objects etc.\n\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n\n return tgt;\n};\n\n/***/ }),\n\n/***/ 548:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n/*\n * Auxiliary functions\n */\n\nvar LinkedList = __webpack_require__(140).layoutBase.LinkedList;\n\nvar auxiliary = {};\n\n// get the top most nodes\nauxiliary.getTopMostNodes = function (nodes) {\n var nodesMap = {};\n for (var i = 0; i < nodes.length; i++) {\n nodesMap[nodes[i].id()] = true;\n }\n var roots = nodes.filter(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var parent = ele.parent()[0];\n while (parent != null) {\n if (nodesMap[parent.id()]) {\n return false;\n }\n parent = parent.parent()[0];\n }\n return true;\n });\n\n return roots;\n};\n\n// find disconnected components and create dummy nodes that connect them\nauxiliary.connectComponents = function (cy, eles, topMostNodes, dummyNodes) {\n var queue = new LinkedList();\n var visited = new Set();\n var visitedTopMostNodes = [];\n var currentNeighbor = void 0;\n var minDegreeNode = void 0;\n var minDegree = void 0;\n\n var isConnected = false;\n var count = 1;\n var nodesConnectedToDummy = [];\n var components = [];\n\n var _loop = function _loop() {\n var cmpt = cy.collection();\n components.push(cmpt);\n\n var currentNode = topMostNodes[0];\n var childrenOfCurrentNode = cy.collection();\n childrenOfCurrentNode.merge(currentNode).merge(currentNode.descendants().intersection(eles));\n visitedTopMostNodes.push(currentNode);\n\n childrenOfCurrentNode.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n cmpt.merge(node);\n });\n\n var _loop2 = function _loop2() {\n currentNode = queue.shift();\n\n // Traverse all neighbors of this node\n var neighborNodes = cy.collection();\n currentNode.neighborhood().nodes().forEach(function (node) {\n if (eles.intersection(currentNode.edgesWith(node)).length > 0) {\n neighborNodes.merge(node);\n }\n });\n\n for (var i = 0; i < neighborNodes.length; i++) {\n var neighborNode = neighborNodes[i];\n currentNeighbor = topMostNodes.intersection(neighborNode.union(neighborNode.ancestors()));\n if (currentNeighbor != null && !visited.has(currentNeighbor[0])) {\n var childrenOfNeighbor = currentNeighbor.union(currentNeighbor.descendants());\n\n childrenOfNeighbor.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n cmpt.merge(node);\n if (topMostNodes.has(node)) {\n visitedTopMostNodes.push(node);\n }\n });\n }\n }\n };\n\n while (queue.length != 0) {\n _loop2();\n }\n\n cmpt.forEach(function (node) {\n eles.intersection(node.connectedEdges()).forEach(function (e) {\n // connectedEdges() usually cached\n if (cmpt.has(e.source()) && cmpt.has(e.target())) {\n // has() is cheap\n cmpt.merge(e);\n }\n });\n });\n\n if (visitedTopMostNodes.length == topMostNodes.length) {\n isConnected = true;\n }\n\n if (!isConnected || isConnected && count > 1) {\n minDegreeNode = visitedTopMostNodes[0];\n minDegree = minDegreeNode.connectedEdges().length;\n visitedTopMostNodes.forEach(function (node) {\n if (node.connectedEdges().length < minDegree) {\n minDegree = node.connectedEdges().length;\n minDegreeNode = node;\n }\n });\n nodesConnectedToDummy.push(minDegreeNode.id());\n // TO DO: Check efficiency of this part\n var temp = cy.collection();\n temp.merge(visitedTopMostNodes[0]);\n visitedTopMostNodes.forEach(function (node) {\n temp.merge(node);\n });\n visitedTopMostNodes = [];\n topMostNodes = topMostNodes.difference(temp);\n count++;\n }\n };\n\n do {\n _loop();\n } while (!isConnected);\n\n if (dummyNodes) {\n if (nodesConnectedToDummy.length > 0) {\n dummyNodes.set('dummy' + (dummyNodes.size + 1), nodesConnectedToDummy);\n }\n }\n return components;\n};\n\n// relocates componentResult to originalCenter if there is no fixedNodeConstraint\nauxiliary.relocateComponent = function (originalCenter, componentResult, options) {\n if (!options.fixedNodeConstraint) {\n var minXCoord = Number.POSITIVE_INFINITY;\n var maxXCoord = Number.NEGATIVE_INFINITY;\n var minYCoord = Number.POSITIVE_INFINITY;\n var maxYCoord = Number.NEGATIVE_INFINITY;\n if (options.quality == \"draft\") {\n // calculate current bounding box\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = componentResult.nodeIndexes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var key = _ref2[0];\n var value = _ref2[1];\n\n var cyNode = options.cy.getElementById(key);\n if (cyNode) {\n var nodeBB = cyNode.boundingBox();\n var leftX = componentResult.xCoords[value] - nodeBB.w / 2;\n var rightX = componentResult.xCoords[value] + nodeBB.w / 2;\n var topY = componentResult.yCoords[value] - nodeBB.h / 2;\n var bottomY = componentResult.yCoords[value] + nodeBB.h / 2;\n\n if (leftX < minXCoord) minXCoord = leftX;\n if (rightX > maxXCoord) maxXCoord = rightX;\n if (topY < minYCoord) minYCoord = topY;\n if (bottomY > maxYCoord) maxYCoord = bottomY;\n }\n }\n // find difference between current and original center\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var diffOnX = originalCenter.x - (maxXCoord + minXCoord) / 2;\n var diffOnY = originalCenter.y - (maxYCoord + minYCoord) / 2;\n // move component to original center\n componentResult.xCoords = componentResult.xCoords.map(function (x) {\n return x + diffOnX;\n });\n componentResult.yCoords = componentResult.yCoords.map(function (y) {\n return y + diffOnY;\n });\n } else {\n // calculate current bounding box\n Object.keys(componentResult).forEach(function (item) {\n var node = componentResult[item];\n var leftX = node.getRect().x;\n var rightX = node.getRect().x + node.getRect().width;\n var topY = node.getRect().y;\n var bottomY = node.getRect().y + node.getRect().height;\n\n if (leftX < minXCoord) minXCoord = leftX;\n if (rightX > maxXCoord) maxXCoord = rightX;\n if (topY < minYCoord) minYCoord = topY;\n if (bottomY > maxYCoord) maxYCoord = bottomY;\n });\n // find difference between current and original center\n var _diffOnX = originalCenter.x - (maxXCoord + minXCoord) / 2;\n var _diffOnY = originalCenter.y - (maxYCoord + minYCoord) / 2;\n // move component to original center\n Object.keys(componentResult).forEach(function (item) {\n var node = componentResult[item];\n node.setCenter(node.getCenterX() + _diffOnX, node.getCenterY() + _diffOnY);\n });\n }\n }\n};\n\nauxiliary.calcBoundingBox = function (parentNode, xCoords, yCoords, nodeIndexes) {\n // calculate bounds\n var left = Number.MAX_SAFE_INTEGER;\n var right = Number.MIN_SAFE_INTEGER;\n var top = Number.MAX_SAFE_INTEGER;\n var bottom = Number.MIN_SAFE_INTEGER;\n var nodeLeft = void 0;\n var nodeRight = void 0;\n var nodeTop = void 0;\n var nodeBottom = void 0;\n\n var nodes = parentNode.descendants().not(\":parent\");\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n var node = nodes[i];\n\n nodeLeft = xCoords[nodeIndexes.get(node.id())] - node.width() / 2;\n nodeRight = xCoords[nodeIndexes.get(node.id())] + node.width() / 2;\n nodeTop = yCoords[nodeIndexes.get(node.id())] - node.height() / 2;\n nodeBottom = yCoords[nodeIndexes.get(node.id())] + node.height() / 2;\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingBox = {};\n boundingBox.topLeftX = left;\n boundingBox.topLeftY = top;\n boundingBox.width = right - left;\n boundingBox.height = bottom - top;\n return boundingBox;\n};\n\n// This function finds and returns parent nodes whose all children are hidden\nauxiliary.calcParentsWithoutChildren = function (cy, eles) {\n var parentsWithoutChildren = cy.collection();\n eles.nodes(':parent').forEach(function (parent) {\n var check = false;\n parent.children().forEach(function (child) {\n if (child.css('display') != 'none') {\n check = true;\n }\n });\n if (!check) {\n parentsWithoutChildren.merge(parent);\n }\n });\n\n return parentsWithoutChildren;\n};\n\nmodule.exports = auxiliary;\n\n/***/ }),\n\n/***/ 816:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\n/**\n The implementation of the postprocessing part that applies CoSE layout over the spectral layout\n*/\n\nvar aux = __webpack_require__(548);\nvar CoSELayout = __webpack_require__(140).CoSELayout;\nvar CoSENode = __webpack_require__(140).CoSENode;\nvar PointD = __webpack_require__(140).layoutBase.PointD;\nvar DimensionD = __webpack_require__(140).layoutBase.DimensionD;\nvar LayoutConstants = __webpack_require__(140).layoutBase.LayoutConstants;\nvar FDLayoutConstants = __webpack_require__(140).layoutBase.FDLayoutConstants;\nvar CoSEConstants = __webpack_require__(140).CoSEConstants;\n\n// main function that cose layout is processed\nvar coseLayout = function coseLayout(options, spectralResult) {\n\n var cy = options.cy;\n var eles = options.eles;\n var nodes = eles.nodes();\n var edges = eles.edges();\n\n var nodeIndexes = void 0;\n var xCoords = void 0;\n var yCoords = void 0;\n var idToLNode = {};\n\n if (options.randomize) {\n nodeIndexes = spectralResult[\"nodeIndexes\"];\n xCoords = spectralResult[\"xCoords\"];\n yCoords = spectralResult[\"yCoords\"];\n }\n\n var isFn = function isFn(fn) {\n return typeof fn === 'function';\n };\n\n var optFn = function optFn(opt, ele) {\n if (isFn(opt)) {\n return opt(ele);\n } else {\n return opt;\n }\n };\n\n /**** Postprocessing functions ****/\n\n var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles);\n\n // transfer cytoscape nodes to cose nodes\n var processChildrenList = function processChildrenList(parent, children, layout, options) {\n var size = children.length;\n for (var i = 0; i < size; i++) {\n var theChild = children[i];\n var children_of_children = null;\n if (theChild.intersection(parentsWithoutChildren).length == 0) {\n children_of_children = theChild.children();\n }\n var theNode = void 0;\n\n var dimensions = theChild.layoutDimensions({\n nodeDimensionsIncludeLabels: options.nodeDimensionsIncludeLabels\n });\n\n if (theChild.outerWidth() != null && theChild.outerHeight() != null) {\n if (options.randomize) {\n if (!theChild.isParent()) {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(xCoords[nodeIndexes.get(theChild.id())] - dimensions.w / 2, yCoords[nodeIndexes.get(theChild.id())] - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n } else {\n var parentInfo = aux.calcBoundingBox(theChild, xCoords, yCoords, nodeIndexes);\n if (theChild.intersection(parentsWithoutChildren).length == 0) {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(parentInfo.topLeftX, parentInfo.topLeftY), new DimensionD(parentInfo.width, parentInfo.height)));\n } else {\n // for the parentsWithoutChildren\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(parentInfo.topLeftX, parentInfo.topLeftY), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n }\n }\n } else {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n }\n } else {\n theNode = parent.add(new CoSENode(this.graphManager));\n }\n // Attach id to the layout node and repulsion value\n theNode.id = theChild.data(\"id\");\n theNode.nodeRepulsion = optFn(options.nodeRepulsion, theChild);\n // Attach the paddings of cy node to layout node\n theNode.paddingLeft = parseInt(theChild.css('padding'));\n theNode.paddingTop = parseInt(theChild.css('padding'));\n theNode.paddingRight = parseInt(theChild.css('padding'));\n theNode.paddingBottom = parseInt(theChild.css('padding'));\n\n //Attach the label properties to both compound and simple nodes if labels will be included in node dimensions\n //These properties will be used while updating bounds of compounds during iterations or tiling\n //and will be used for simple nodes while transferring final positions to cytoscape\n if (options.nodeDimensionsIncludeLabels) {\n theNode.labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).w;\n theNode.labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).h;\n theNode.labelPosVertical = theChild.css(\"text-valign\");\n theNode.labelPosHorizontal = theChild.css(\"text-halign\");\n }\n\n // Map the layout node\n idToLNode[theChild.data(\"id\")] = theNode;\n\n if (isNaN(theNode.rect.x)) {\n theNode.rect.x = 0;\n }\n\n if (isNaN(theNode.rect.y)) {\n theNode.rect.y = 0;\n }\n\n if (children_of_children != null && children_of_children.length > 0) {\n var theNewGraph = void 0;\n theNewGraph = layout.getGraphManager().add(layout.newGraph(), theNode);\n processChildrenList(theNewGraph, children_of_children, layout, options);\n }\n }\n };\n\n // transfer cytoscape edges to cose edges\n var processEdges = function processEdges(layout, gm, edges) {\n var idealLengthTotal = 0;\n var edgeCount = 0;\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var sourceNode = idToLNode[edge.data(\"source\")];\n var targetNode = idToLNode[edge.data(\"target\")];\n if (sourceNode && targetNode && sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) {\n var e1 = gm.add(layout.newEdge(), sourceNode, targetNode);\n e1.id = edge.id();\n e1.idealLength = optFn(options.idealEdgeLength, edge);\n e1.edgeElasticity = optFn(options.edgeElasticity, edge);\n idealLengthTotal += e1.idealLength;\n edgeCount++;\n }\n }\n // we need to update the ideal edge length constant with the avg. ideal length value after processing edges\n // in case there is no edge, use other options\n if (options.idealEdgeLength != null) {\n if (edgeCount > 0) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = idealLengthTotal / edgeCount;else if (!isFn(options.idealEdgeLength)) // in case there is no edge, but option gives a value to use\n CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options.idealEdgeLength;else // in case there is no edge and we cannot get a value from option (because it's a function)\n CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\n // we need to update these constant values based on the ideal edge length constant\n CoSEConstants.MIN_REPULSION_DIST = FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\n CoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n }\n };\n\n // transfer cytoscape constraints to cose layout\n var processConstraints = function processConstraints(layout, options) {\n // get nodes to be fixed\n if (options.fixedNodeConstraint) {\n layout.constraints[\"fixedNodeConstraint\"] = options.fixedNodeConstraint;\n }\n // get nodes to be aligned\n if (options.alignmentConstraint) {\n layout.constraints[\"alignmentConstraint\"] = options.alignmentConstraint;\n }\n // get nodes to be relatively placed\n if (options.relativePlacementConstraint) {\n layout.constraints[\"relativePlacementConstraint\"] = options.relativePlacementConstraint;\n }\n };\n\n /**** Apply postprocessing ****/\n if (options.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options.nestingFactor;\n if (options.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options.gravity;\n if (options.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options.numIter;\n if (options.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options.gravityRange;\n if (options.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options.gravityCompound;\n if (options.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options.gravityRangeCompound;\n if (options.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options.initialEnergyOnIncremental;\n\n if (options.tilingCompareBy != null) CoSEConstants.TILING_COMPARE_BY = options.tilingCompareBy;\n\n if (options.quality == 'proof') LayoutConstants.QUALITY = 2;else LayoutConstants.QUALITY = 0;\n\n CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options.nodeDimensionsIncludeLabels;\n CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options.randomize;\n CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options.animate;\n CoSEConstants.TILE = options.tile;\n CoSEConstants.TILING_PADDING_VERTICAL = typeof options.tilingPaddingVertical === 'function' ? options.tilingPaddingVertical.call() : options.tilingPaddingVertical;\n CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options.tilingPaddingHorizontal === 'function' ? options.tilingPaddingHorizontal.call() : options.tilingPaddingHorizontal;\n\n CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = true;\n CoSEConstants.PURE_INCREMENTAL = !options.randomize;\n LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = options.uniformNodeDimensions;\n\n // This part is for debug/demo purpose\n if (options.step == \"transformed\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;\n CoSEConstants.ENFORCE_CONSTRAINTS = false;\n CoSEConstants.APPLY_LAYOUT = false;\n }\n if (options.step == \"enforced\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = true;\n CoSEConstants.APPLY_LAYOUT = false;\n }\n if (options.step == \"cose\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = false;\n CoSEConstants.APPLY_LAYOUT = true;\n }\n if (options.step == \"all\") {\n if (options.randomize) CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;else CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = true;\n CoSEConstants.APPLY_LAYOUT = true;\n }\n\n if (options.fixedNodeConstraint || options.alignmentConstraint || options.relativePlacementConstraint) {\n CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false;\n } else {\n CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true;\n }\n\n var coseLayout = new CoSELayout();\n var gm = coseLayout.newGraphManager();\n\n processChildrenList(gm.addRoot(), aux.getTopMostNodes(nodes), coseLayout, options);\n processEdges(coseLayout, gm, edges);\n processConstraints(coseLayout, options);\n\n coseLayout.runLayout();\n\n return idToLNode;\n};\n\nmodule.exports = { coseLayout: coseLayout };\n\n/***/ }),\n\n/***/ 212:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n The implementation of the fcose layout algorithm\n*/\n\nvar assign = __webpack_require__(658);\nvar aux = __webpack_require__(548);\n\nvar _require = __webpack_require__(657),\n spectralLayout = _require.spectralLayout;\n\nvar _require2 = __webpack_require__(816),\n coseLayout = _require2.coseLayout;\n\nvar defaults = Object.freeze({\n\n // 'draft', 'default' or 'proof' \n // - 'draft' only applies spectral layout \n // - 'default' improves the quality with subsequent CoSE layout (fast cooling rate)\n // - 'proof' improves the quality with subsequent CoSE layout (slow cooling rate) \n quality: \"default\",\n // Use random node positions at beginning of layout\n // if this is set to false, then quality option must be \"proof\"\n randomize: true,\n // Whether or not to animate the layout\n animate: true,\n // Duration of animation in ms, if enabled\n animationDuration: 1000,\n // Easing of animation, if enabled\n animationEasing: undefined,\n // Fit the viewport to the repositioned nodes\n fit: true,\n // Padding around layout\n padding: 30,\n // Whether to include labels in node dimensions. Valid in \"proof\" quality\n nodeDimensionsIncludeLabels: false,\n // Whether or not simple nodes (non-compound nodes) are of uniform dimensions\n uniformNodeDimensions: false,\n // Whether to pack disconnected components - valid only if randomize: true\n packComponents: true,\n // Layout step - all, transformed, enforced, cose - for debug purpose only\n step: \"all\",\n\n /* spectral layout options */\n\n // False for random, true for greedy\n samplingType: true,\n // Sample size to construct distance matrix\n sampleSize: 25,\n // Separation amount between nodes\n nodeSeparation: 75,\n // Power iteration tolerance\n piTol: 0.0000001,\n\n /* CoSE layout options */\n\n // Node repulsion (non overlapping) multiplier\n nodeRepulsion: function nodeRepulsion(node) {\n return 4500;\n },\n // Ideal edge (non nested) length\n idealEdgeLength: function idealEdgeLength(edge) {\n return 50;\n },\n // Divisor to compute edge forces\n edgeElasticity: function edgeElasticity(edge) {\n return 0.45;\n },\n // Nesting factor (multiplier) to compute ideal edge length for nested edges\n nestingFactor: 0.1,\n // Gravity force (constant)\n gravity: 0.25,\n // Maximum number of iterations to perform\n numIter: 2500,\n // For enabling tiling\n tile: true,\n // The function that specifies the criteria for comparing nodes while sorting them during tiling operation.\n // Takes the node id as a parameter and the default tiling operation is perfomed when this option is not set.\n tilingCompareBy: undefined,\n // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingVertical: 10,\n // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingHorizontal: 10,\n // Gravity range (constant) for compounds\n gravityRangeCompound: 1.5,\n // Gravity force (constant) for compounds\n gravityCompound: 1.0,\n // Gravity range (constant)\n gravityRange: 3.8,\n // Initial cooling factor for incremental layout \n initialEnergyOnIncremental: 0.3,\n\n /* constraint options */\n\n // Fix required nodes to predefined positions\n // [{nodeId: 'n1', position: {x: 100, y: 200}, {...}]\n fixedNodeConstraint: undefined,\n // Align required nodes in vertical/horizontal direction\n // {vertical: [['n1', 'n2')], ['n3', 'n4']], horizontal: ['n2', 'n4']}\n alignmentConstraint: undefined,\n // Place two nodes relatively in vertical/horizontal direction \n // [{top: 'n1', bottom: 'n2', gap: 100}, {left: 'n3', right: 'n4', gap: 75}]\n relativePlacementConstraint: undefined,\n\n /* layout event callbacks */\n ready: function ready() {}, // on layoutready\n stop: function stop() {} // on layoutstop\n});\n\nvar Layout = function () {\n function Layout(options) {\n _classCallCheck(this, Layout);\n\n this.options = assign({}, defaults, options);\n }\n\n _createClass(Layout, [{\n key: 'run',\n value: function run() {\n var layout = this;\n var options = this.options;\n var cy = options.cy;\n var eles = options.eles;\n\n var spectralResult = [];\n var xCoords = void 0;\n var yCoords = void 0;\n var coseResult = [];\n var components = void 0;\n var componentCenters = [];\n\n // basic validity check for constraint inputs \n if (options.fixedNodeConstraint && (!Array.isArray(options.fixedNodeConstraint) || options.fixedNodeConstraint.length == 0)) {\n options.fixedNodeConstraint = undefined;\n }\n\n if (options.alignmentConstraint) {\n if (options.alignmentConstraint.vertical && (!Array.isArray(options.alignmentConstraint.vertical) || options.alignmentConstraint.vertical.length == 0)) {\n options.alignmentConstraint.vertical = undefined;\n }\n if (options.alignmentConstraint.horizontal && (!Array.isArray(options.alignmentConstraint.horizontal) || options.alignmentConstraint.horizontal.length == 0)) {\n options.alignmentConstraint.horizontal = undefined;\n }\n }\n\n if (options.relativePlacementConstraint && (!Array.isArray(options.relativePlacementConstraint) || options.relativePlacementConstraint.length == 0)) {\n options.relativePlacementConstraint = undefined;\n }\n\n // if any constraint exists, set some options\n var constraintExist = options.fixedNodeConstraint || options.alignmentConstraint || options.relativePlacementConstraint;\n if (constraintExist) {\n // constraints work with these options\n options.tile = false;\n options.packComponents = false;\n }\n\n // decide component packing is enabled or not\n var layUtil = void 0;\n var packingEnabled = false;\n if (cy.layoutUtilities && options.packComponents) {\n layUtil = cy.layoutUtilities(\"get\");\n if (!layUtil) layUtil = cy.layoutUtilities();\n packingEnabled = true;\n }\n\n if (eles.nodes().length > 0) {\n // if packing is not enabled, perform layout on the whole graph\n if (!packingEnabled) {\n // store component center\n var boundingBox = options.eles.boundingBox();\n componentCenters.push({ x: boundingBox.x1 + boundingBox.w / 2, y: boundingBox.y1 + boundingBox.h / 2 });\n // apply spectral layout\n if (options.randomize) {\n var result = spectralLayout(options);\n spectralResult.push(result);\n }\n // apply cose layout as postprocessing\n if (options.quality == \"default\" || options.quality == \"proof\") {\n coseResult.push(coseLayout(options, spectralResult[0]));\n aux.relocateComponent(componentCenters[0], coseResult[0], options); // relocate center to original position\n } else {\n aux.relocateComponent(componentCenters[0], spectralResult[0], options); // relocate center to original position\n }\n } else {\n // packing is enabled\n var topMostNodes = aux.getTopMostNodes(options.eles.nodes());\n components = aux.connectComponents(cy, options.eles, topMostNodes);\n // store component centers\n components.forEach(function (component) {\n var boundingBox = component.boundingBox();\n componentCenters.push({ x: boundingBox.x1 + boundingBox.w / 2, y: boundingBox.y1 + boundingBox.h / 2 });\n });\n\n //send each component to spectral layout if randomized\n if (options.randomize) {\n components.forEach(function (component) {\n options.eles = component;\n spectralResult.push(spectralLayout(options));\n });\n }\n\n if (options.quality == \"default\" || options.quality == \"proof\") {\n var toBeTiledNodes = cy.collection();\n if (options.tile) {\n // behave nodes to be tiled as one component\n var nodeIndexes = new Map();\n var _xCoords = [];\n var _yCoords = [];\n var count = 0;\n var tempSpectralResult = { nodeIndexes: nodeIndexes, xCoords: _xCoords, yCoords: _yCoords };\n var indexesToBeDeleted = [];\n components.forEach(function (component, index) {\n if (component.edges().length == 0) {\n component.nodes().forEach(function (node, i) {\n toBeTiledNodes.merge(component.nodes()[i]);\n if (!node.isParent()) {\n tempSpectralResult.nodeIndexes.set(component.nodes()[i].id(), count++);\n tempSpectralResult.xCoords.push(component.nodes()[0].position().x);\n tempSpectralResult.yCoords.push(component.nodes()[0].position().y);\n }\n });\n indexesToBeDeleted.push(index);\n }\n });\n if (toBeTiledNodes.length > 1) {\n var _boundingBox = toBeTiledNodes.boundingBox();\n componentCenters.push({ x: _boundingBox.x1 + _boundingBox.w / 2, y: _boundingBox.y1 + _boundingBox.h / 2 });\n components.push(toBeTiledNodes);\n spectralResult.push(tempSpectralResult);\n for (var i = indexesToBeDeleted.length - 1; i >= 0; i--) {\n components.splice(indexesToBeDeleted[i], 1);\n spectralResult.splice(indexesToBeDeleted[i], 1);\n componentCenters.splice(indexesToBeDeleted[i], 1);\n };\n }\n }\n components.forEach(function (component, index) {\n // send each component to cose layout\n options.eles = component;\n coseResult.push(coseLayout(options, spectralResult[index]));\n aux.relocateComponent(componentCenters[index], coseResult[index], options); // relocate center to original position\n });\n } else {\n components.forEach(function (component, index) {\n aux.relocateComponent(componentCenters[index], spectralResult[index], options); // relocate center to original position\n });\n }\n\n // packing\n var componentsEvaluated = new Set();\n if (components.length > 1) {\n var subgraphs = [];\n var hiddenEles = eles.filter(function (ele) {\n return ele.css('display') == 'none';\n });\n components.forEach(function (component, index) {\n var nodeIndexes = void 0;\n if (options.quality == \"draft\") {\n nodeIndexes = spectralResult[index].nodeIndexes;\n }\n\n if (component.nodes().not(hiddenEles).length > 0) {\n var subgraph = {};\n subgraph.edges = [];\n subgraph.nodes = [];\n var nodeIndex = void 0;\n component.nodes().not(hiddenEles).forEach(function (node) {\n if (options.quality == \"draft\") {\n if (!node.isParent()) {\n nodeIndex = nodeIndexes.get(node.id());\n subgraph.nodes.push({ x: spectralResult[index].xCoords[nodeIndex] - node.boundingbox().w / 2, y: spectralResult[index].yCoords[nodeIndex] - node.boundingbox().h / 2, width: node.boundingbox().w, height: node.boundingbox().h });\n } else {\n var parentInfo = aux.calcBoundingBox(node, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n subgraph.nodes.push({ x: parentInfo.topLeftX, y: parentInfo.topLeftY, width: parentInfo.width, height: parentInfo.height });\n }\n } else {\n if (coseResult[index][node.id()]) {\n subgraph.nodes.push({ x: coseResult[index][node.id()].getLeft(), y: coseResult[index][node.id()].getTop(), width: coseResult[index][node.id()].getWidth(), height: coseResult[index][node.id()].getHeight() });\n }\n }\n });\n component.edges().forEach(function (edge) {\n var source = edge.source();\n var target = edge.target();\n if (source.css(\"display\") != \"none\" && target.css(\"display\") != \"none\") {\n if (options.quality == \"draft\") {\n var sourceNodeIndex = nodeIndexes.get(source.id());\n var targetNodeIndex = nodeIndexes.get(target.id());\n var sourceCenter = [];\n var targetCenter = [];\n if (source.isParent()) {\n var parentInfo = aux.calcBoundingBox(source, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n sourceCenter.push(parentInfo.topLeftX + parentInfo.width / 2);\n sourceCenter.push(parentInfo.topLeftY + parentInfo.height / 2);\n } else {\n sourceCenter.push(spectralResult[index].xCoords[sourceNodeIndex]);\n sourceCenter.push(spectralResult[index].yCoords[sourceNodeIndex]);\n }\n if (target.isParent()) {\n var _parentInfo = aux.calcBoundingBox(target, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n targetCenter.push(_parentInfo.topLeftX + _parentInfo.width / 2);\n targetCenter.push(_parentInfo.topLeftY + _parentInfo.height / 2);\n } else {\n targetCenter.push(spectralResult[index].xCoords[targetNodeIndex]);\n targetCenter.push(spectralResult[index].yCoords[targetNodeIndex]);\n }\n subgraph.edges.push({ startX: sourceCenter[0], startY: sourceCenter[1], endX: targetCenter[0], endY: targetCenter[1] });\n } else {\n if (coseResult[index][source.id()] && coseResult[index][target.id()]) {\n subgraph.edges.push({ startX: coseResult[index][source.id()].getCenterX(), startY: coseResult[index][source.id()].getCenterY(), endX: coseResult[index][target.id()].getCenterX(), endY: coseResult[index][target.id()].getCenterY() });\n }\n }\n }\n });\n if (subgraph.nodes.length > 0) {\n subgraphs.push(subgraph);\n componentsEvaluated.add(index);\n }\n }\n });\n var shiftResult = layUtil.packComponents(subgraphs, options.randomize).shifts;\n if (options.quality == \"draft\") {\n spectralResult.forEach(function (result, index) {\n var newXCoords = result.xCoords.map(function (x) {\n return x + shiftResult[index].dx;\n });\n var newYCoords = result.yCoords.map(function (y) {\n return y + shiftResult[index].dy;\n });\n result.xCoords = newXCoords;\n result.yCoords = newYCoords;\n });\n } else {\n var _count = 0;\n componentsEvaluated.forEach(function (index) {\n Object.keys(coseResult[index]).forEach(function (item) {\n var nodeRectangle = coseResult[index][item];\n nodeRectangle.setCenter(nodeRectangle.getCenterX() + shiftResult[_count].dx, nodeRectangle.getCenterY() + shiftResult[_count].dy);\n });\n _count++;\n });\n }\n }\n }\n }\n\n // get each element's calculated position\n var getPositions = function getPositions(ele, i) {\n if (options.quality == \"default\" || options.quality == \"proof\") {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var pos = void 0;\n var node = void 0;\n var theId = ele.data('id');\n coseResult.forEach(function (result) {\n if (theId in result) {\n pos = { x: result[theId].getRect().getCenterX(), y: result[theId].getRect().getCenterY() };\n node = result[theId];\n }\n });\n if (options.nodeDimensionsIncludeLabels) {\n if (node.labelWidth) {\n if (node.labelPosHorizontal == \"left\") {\n pos.x += node.labelWidth / 2;\n } else if (node.labelPosHorizontal == \"right\") {\n pos.x -= node.labelWidth / 2;\n }\n }\n if (node.labelHeight) {\n if (node.labelPosVertical == \"top\") {\n pos.y += node.labelHeight / 2;\n } else if (node.labelPosVertical == \"bottom\") {\n pos.y -= node.labelHeight / 2;\n }\n }\n }\n if (pos == undefined) pos = { x: ele.position(\"x\"), y: ele.position(\"y\") };\n return {\n x: pos.x,\n y: pos.y\n };\n } else {\n var _pos = void 0;\n spectralResult.forEach(function (result) {\n var index = result.nodeIndexes.get(ele.id());\n if (index != undefined) {\n _pos = { x: result.xCoords[index], y: result.yCoords[index] };\n }\n });\n if (_pos == undefined) _pos = { x: ele.position(\"x\"), y: ele.position(\"y\") };\n return {\n x: _pos.x,\n y: _pos.y\n };\n }\n };\n\n // quality = \"draft\" and randomize = false are contradictive so in that case positions don't change\n if (options.quality == \"default\" || options.quality == \"proof\" || options.randomize) {\n // transfer calculated positions to nodes (positions of only simple nodes are evaluated, compounds are positioned automatically)\n var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles);\n var _hiddenEles = eles.filter(function (ele) {\n return ele.css('display') == 'none';\n });\n options.eles = eles.not(_hiddenEles);\n\n eles.nodes().not(\":parent\").not(_hiddenEles).layoutPositions(layout, options, getPositions);\n\n if (parentsWithoutChildren.length > 0) {\n parentsWithoutChildren.forEach(function (ele) {\n ele.position(getPositions(ele));\n });\n }\n } else {\n console.log(\"If randomize option is set to false, then quality option must be 'default' or 'proof'.\");\n }\n }\n }]);\n\n return Layout;\n}();\n\nmodule.exports = Layout;\n\n/***/ }),\n\n/***/ 657:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\n/**\n The implementation of the spectral layout that is the first part of the fcose layout algorithm\n*/\n\nvar aux = __webpack_require__(548);\nvar Matrix = __webpack_require__(140).layoutBase.Matrix;\nvar SVD = __webpack_require__(140).layoutBase.SVD;\n\n// main function that spectral layout is processed\nvar spectralLayout = function spectralLayout(options) {\n\n var cy = options.cy;\n var eles = options.eles;\n var nodes = eles.nodes();\n var parentNodes = eles.nodes(\":parent\");\n\n var dummyNodes = new Map(); // map to keep dummy nodes and their neighbors\n var nodeIndexes = new Map(); // map to keep indexes to nodes\n var parentChildMap = new Map(); // mapping btw. compound and its representative node \n var allNodesNeighborhood = []; // array to keep neighborhood of all nodes\n var xCoords = [];\n var yCoords = [];\n\n var samplesColumn = []; // sampled vertices\n var minDistancesColumn = [];\n var C = []; // column sampling matrix\n var PHI = []; // intersection of column and row sampling matrices \n var INV = []; // inverse of PHI \n\n var firstSample = void 0; // the first sampled node\n var nodeSize = void 0;\n\n var infinity = 100000000;\n var small = 0.000000001;\n\n var piTol = options.piTol;\n var samplingType = options.samplingType; // false for random, true for greedy\n var nodeSeparation = options.nodeSeparation;\n var sampleSize = void 0;\n\n /**** Spectral-preprocessing functions ****/\n\n /**** Spectral layout functions ****/\n\n // determine which columns to be sampled\n var randomSampleCR = function randomSampleCR() {\n var sample = 0;\n var count = 0;\n var flag = false;\n\n while (count < sampleSize) {\n sample = Math.floor(Math.random() * nodeSize);\n\n flag = false;\n for (var i = 0; i < count; i++) {\n if (samplesColumn[i] == sample) {\n flag = true;\n break;\n }\n }\n\n if (!flag) {\n samplesColumn[count] = sample;\n count++;\n } else {\n continue;\n }\n }\n };\n\n // takes the index of the node(pivot) to initiate BFS as a parameter\n var BFS = function BFS(pivot, index, samplingMethod) {\n var path = []; // the front of the path\n var front = 0; // the back of the path\n var back = 0;\n var current = 0;\n var temp = void 0;\n var distance = [];\n\n var max_dist = 0; // the furthest node to be returned\n var max_ind = 1;\n\n for (var i = 0; i < nodeSize; i++) {\n distance[i] = infinity;\n }\n\n path[back] = pivot;\n distance[pivot] = 0;\n\n while (back >= front) {\n current = path[front++];\n var neighbors = allNodesNeighborhood[current];\n for (var _i = 0; _i < neighbors.length; _i++) {\n temp = nodeIndexes.get(neighbors[_i]);\n if (distance[temp] == infinity) {\n distance[temp] = distance[current] + 1;\n path[++back] = temp;\n }\n }\n C[current][index] = distance[current] * nodeSeparation;\n }\n\n if (samplingMethod) {\n for (var _i2 = 0; _i2 < nodeSize; _i2++) {\n if (C[_i2][index] < minDistancesColumn[_i2]) minDistancesColumn[_i2] = C[_i2][index];\n }\n\n for (var _i3 = 0; _i3 < nodeSize; _i3++) {\n if (minDistancesColumn[_i3] > max_dist) {\n max_dist = minDistancesColumn[_i3];\n max_ind = _i3;\n }\n }\n }\n return max_ind;\n };\n\n // apply BFS to all nodes or selected samples\n var allBFS = function allBFS(samplingMethod) {\n\n var sample = void 0;\n\n if (!samplingMethod) {\n randomSampleCR();\n\n // call BFS\n for (var i = 0; i < sampleSize; i++) {\n BFS(samplesColumn[i], i, samplingMethod, false);\n }\n } else {\n sample = Math.floor(Math.random() * nodeSize);\n firstSample = sample;\n\n for (var _i4 = 0; _i4 < nodeSize; _i4++) {\n minDistancesColumn[_i4] = infinity;\n }\n\n for (var _i5 = 0; _i5 < sampleSize; _i5++) {\n samplesColumn[_i5] = sample;\n sample = BFS(sample, _i5, samplingMethod);\n }\n }\n\n // form the squared distances for C\n for (var _i6 = 0; _i6 < nodeSize; _i6++) {\n for (var j = 0; j < sampleSize; j++) {\n C[_i6][j] *= C[_i6][j];\n }\n }\n\n // form PHI\n for (var _i7 = 0; _i7 < sampleSize; _i7++) {\n PHI[_i7] = [];\n }\n\n for (var _i8 = 0; _i8 < sampleSize; _i8++) {\n for (var _j = 0; _j < sampleSize; _j++) {\n PHI[_i8][_j] = C[samplesColumn[_j]][_i8];\n }\n }\n };\n\n // perform the SVD algorithm and apply a regularization step\n var sample = function sample() {\n\n var SVDResult = SVD.svd(PHI);\n\n var a_q = SVDResult.S;\n var a_u = SVDResult.U;\n var a_v = SVDResult.V;\n\n var max_s = a_q[0] * a_q[0] * a_q[0];\n\n var a_Sig = [];\n\n // regularization\n for (var i = 0; i < sampleSize; i++) {\n a_Sig[i] = [];\n for (var j = 0; j < sampleSize; j++) {\n a_Sig[i][j] = 0;\n if (i == j) {\n a_Sig[i][j] = a_q[i] / (a_q[i] * a_q[i] + max_s / (a_q[i] * a_q[i]));\n }\n }\n }\n\n INV = Matrix.multMat(Matrix.multMat(a_v, a_Sig), Matrix.transpose(a_u));\n };\n\n // calculate final coordinates \n var powerIteration = function powerIteration() {\n // two largest eigenvalues\n var theta1 = void 0;\n var theta2 = void 0;\n\n // initial guesses for eigenvectors\n var Y1 = [];\n var Y2 = [];\n\n var V1 = [];\n var V2 = [];\n\n for (var i = 0; i < nodeSize; i++) {\n Y1[i] = Math.random();\n Y2[i] = Math.random();\n }\n\n Y1 = Matrix.normalize(Y1);\n Y2 = Matrix.normalize(Y2);\n\n var count = 0;\n // to keep track of the improvement ratio in power iteration\n var current = small;\n var previous = small;\n\n var temp = void 0;\n\n while (true) {\n count++;\n\n for (var _i9 = 0; _i9 < nodeSize; _i9++) {\n V1[_i9] = Y1[_i9];\n }\n\n Y1 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V1), C, INV));\n theta1 = Matrix.dotProduct(V1, Y1);\n Y1 = Matrix.normalize(Y1);\n\n current = Matrix.dotProduct(V1, Y1);\n\n temp = Math.abs(current / previous);\n\n if (temp <= 1 + piTol && temp >= 1) {\n break;\n }\n\n previous = current;\n }\n\n for (var _i10 = 0; _i10 < nodeSize; _i10++) {\n V1[_i10] = Y1[_i10];\n }\n\n count = 0;\n previous = small;\n while (true) {\n count++;\n\n for (var _i11 = 0; _i11 < nodeSize; _i11++) {\n V2[_i11] = Y2[_i11];\n }\n\n V2 = Matrix.minusOp(V2, Matrix.multCons(V1, Matrix.dotProduct(V1, V2)));\n Y2 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V2), C, INV));\n theta2 = Matrix.dotProduct(V2, Y2);\n Y2 = Matrix.normalize(Y2);\n\n current = Matrix.dotProduct(V2, Y2);\n\n temp = Math.abs(current / previous);\n\n if (temp <= 1 + piTol && temp >= 1) {\n break;\n }\n\n previous = current;\n }\n\n for (var _i12 = 0; _i12 < nodeSize; _i12++) {\n V2[_i12] = Y2[_i12];\n }\n\n // theta1 now contains dominant eigenvalue\n // theta2 now contains the second-largest eigenvalue\n // V1 now contains theta1's eigenvector\n // V2 now contains theta2's eigenvector\n\n //populate the two vectors\n xCoords = Matrix.multCons(V1, Math.sqrt(Math.abs(theta1)));\n yCoords = Matrix.multCons(V2, Math.sqrt(Math.abs(theta2)));\n };\n\n /**** Preparation for spectral layout (Preprocessing) ****/\n\n // connect disconnected components (first top level, then inside of each compound node)\n aux.connectComponents(cy, eles, aux.getTopMostNodes(nodes), dummyNodes);\n\n parentNodes.forEach(function (ele) {\n aux.connectComponents(cy, eles, aux.getTopMostNodes(ele.descendants().intersection(eles)), dummyNodes);\n });\n\n // assign indexes to nodes (first real, then dummy nodes)\n var index = 0;\n for (var i = 0; i < nodes.length; i++) {\n if (!nodes[i].isParent()) {\n nodeIndexes.set(nodes[i].id(), index++);\n }\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = dummyNodes.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n nodeIndexes.set(key, index++);\n }\n\n // instantiate the neighborhood matrix\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n for (var _i13 = 0; _i13 < nodeIndexes.size; _i13++) {\n allNodesNeighborhood[_i13] = [];\n }\n\n // form a parent-child map to keep representative node of each compound node \n parentNodes.forEach(function (ele) {\n var children = ele.children().intersection(eles);\n\n // let random = 0;\n while (children.nodes(\":childless\").length == 0) {\n // random = Math.floor(Math.random() * children.nodes().length); // if all children are compound then proceed randomly\n children = children.nodes()[0].children().intersection(eles);\n }\n // select the representative node - we can apply different methods here\n // random = Math.floor(Math.random() * children.nodes(\":childless\").length);\n var index = 0;\n var min = children.nodes(\":childless\")[0].connectedEdges().length;\n children.nodes(\":childless\").forEach(function (ele2, i) {\n if (ele2.connectedEdges().length < min) {\n min = ele2.connectedEdges().length;\n index = i;\n }\n });\n parentChildMap.set(ele.id(), children.nodes(\":childless\")[index].id());\n });\n\n // add neighborhood relations (first real, then dummy nodes)\n nodes.forEach(function (ele) {\n var eleIndex = void 0;\n\n if (ele.isParent()) eleIndex = nodeIndexes.get(parentChildMap.get(ele.id()));else eleIndex = nodeIndexes.get(ele.id());\n\n ele.neighborhood().nodes().forEach(function (node) {\n if (eles.intersection(ele.edgesWith(node)).length > 0) {\n if (node.isParent()) allNodesNeighborhood[eleIndex].push(parentChildMap.get(node.id()));else allNodesNeighborhood[eleIndex].push(node.id());\n }\n });\n });\n\n var _loop = function _loop(_key) {\n var eleIndex = nodeIndexes.get(_key);\n var disconnectedId = void 0;\n dummyNodes.get(_key).forEach(function (id) {\n if (cy.getElementById(id).isParent()) disconnectedId = parentChildMap.get(id);else disconnectedId = id;\n\n allNodesNeighborhood[eleIndex].push(disconnectedId);\n allNodesNeighborhood[nodeIndexes.get(disconnectedId)].push(_key);\n });\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = dummyNodes.keys()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _key = _step2.value;\n\n _loop(_key);\n }\n\n // nodeSize now only considers the size of transformed graph\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n nodeSize = nodeIndexes.size;\n\n var spectralResult = void 0;\n\n // If number of nodes in transformed graph is 1 or 2, either SVD or powerIteration causes problem\n // So skip spectral and layout the graph with cose\n if (nodeSize > 2) {\n // if # of nodes in transformed graph is smaller than sample size,\n // then use # of nodes as sample size\n sampleSize = nodeSize < options.sampleSize ? nodeSize : options.sampleSize;\n\n // instantiates the partial matrices that will be used in spectral layout\n for (var _i14 = 0; _i14 < nodeSize; _i14++) {\n C[_i14] = [];\n }\n for (var _i15 = 0; _i15 < sampleSize; _i15++) {\n INV[_i15] = [];\n }\n\n /**** Apply spectral layout ****/\n\n if (options.quality == \"draft\" || options.step == \"all\") {\n allBFS(samplingType);\n sample();\n powerIteration();\n\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n } else {\n nodeIndexes.forEach(function (value, key) {\n xCoords.push(cy.getElementById(key).position(\"x\"));\n yCoords.push(cy.getElementById(key).position(\"y\"));\n });\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n }\n return spectralResult;\n } else {\n var iterator = nodeIndexes.keys();\n var firstNode = cy.getElementById(iterator.next().value);\n var firstNodePos = firstNode.position();\n var firstNodeWidth = firstNode.outerWidth();\n xCoords.push(firstNodePos.x);\n yCoords.push(firstNodePos.y);\n if (nodeSize == 2) {\n var secondNode = cy.getElementById(iterator.next().value);\n var secondNodeWidth = secondNode.outerWidth();\n xCoords.push(firstNodePos.x + firstNodeWidth / 2 + secondNodeWidth / 2 + options.idealEdgeLength);\n yCoords.push(firstNodePos.y);\n }\n\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n return spectralResult;\n }\n};\n\nmodule.exports = { spectralLayout: spectralLayout };\n\n/***/ }),\n\n/***/ 579:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar impl = __webpack_require__(212);\n\n// registers the extension on a cytoscape lib ref\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n cytoscape('layout', 'fcose', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n\n/***/ 140:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__140__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(579);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});", "import type { DiagramDBBase } from '../../diagram-api/types.js';\nimport type { ArchitectureDiagramConfig } from '../../config.type.js';\nimport type { D3Element } from '../../types.js';\nimport type cytoscape from 'cytoscape';\n\n/*=======================================*\\\n| Architecture Diagram Types |\n\\*=======================================*/\n\nexport type ArchitectureAlignment = 'vertical' | 'horizontal' | 'bend';\n\nexport type ArchitectureDirection = 'L' | 'R' | 'T' | 'B';\nexport type ArchitectureDirectionX = Extract;\nexport type ArchitectureDirectionY = Extract;\n\n/**\n * Contains LL, RR, TT, BB which are impossible connections\n */\nexport type InvalidArchitectureDirectionPair = `${ArchitectureDirection}${ArchitectureDirection}`;\nexport type ArchitectureDirectionPair = Exclude<\n InvalidArchitectureDirectionPair,\n 'LL' | 'RR' | 'TT' | 'BB'\n>;\nexport type ArchitectureDirectionPairXY = Exclude<\n InvalidArchitectureDirectionPair,\n 'LL' | 'RR' | 'TT' | 'BB' | 'LR' | 'RL' | 'TB' | 'BT'\n>;\n\nexport const ArchitectureDirectionName = {\n L: 'left',\n R: 'right',\n T: 'top',\n B: 'bottom',\n} as const;\n\nexport const ArchitectureDirectionArrow = {\n L: (scale: number) => `${scale},${scale / 2} 0,${scale} 0,0`,\n R: (scale: number) => `0,${scale / 2} ${scale},0 ${scale},${scale}`,\n T: (scale: number) => `0,0 ${scale},0 ${scale / 2},${scale}`,\n B: (scale: number) => `${scale / 2},0 ${scale},${scale} 0,${scale}`,\n} as const;\n\nexport const ArchitectureDirectionArrowShift = {\n L: (orig: number, arrowSize: number) => orig - arrowSize + 2,\n R: (orig: number, _arrowSize: number) => orig - 2,\n T: (orig: number, arrowSize: number) => orig - arrowSize + 2,\n B: (orig: number, _arrowSize: number) => orig - 2,\n} as const;\n\nexport const getOppositeArchitectureDirection = function (\n x: ArchitectureDirection\n): ArchitectureDirection {\n if (isArchitectureDirectionX(x)) {\n return x === 'L' ? 'R' : 'L';\n } else {\n return x === 'T' ? 'B' : 'T';\n }\n};\n\nexport const isArchitectureDirection = function (x: unknown): x is ArchitectureDirection {\n const temp = x as ArchitectureDirection;\n return temp === 'L' || temp === 'R' || temp === 'T' || temp === 'B';\n};\n\nexport const isArchitectureDirectionX = function (\n x: ArchitectureDirection\n): x is ArchitectureDirectionX {\n const temp = x as ArchitectureDirectionX;\n return temp === 'L' || temp === 'R';\n};\n\nexport const isArchitectureDirectionY = function (\n x: ArchitectureDirection\n): x is ArchitectureDirectionY {\n const temp = x as ArchitectureDirectionY;\n return temp === 'T' || temp === 'B';\n};\n\nexport const isArchitectureDirectionXY = function (\n a: ArchitectureDirection,\n b: ArchitectureDirection\n) {\n const aX_bY = isArchitectureDirectionX(a) && isArchitectureDirectionY(b);\n const aY_bX = isArchitectureDirectionY(a) && isArchitectureDirectionX(b);\n return aX_bY || aY_bX;\n};\n\nexport const isArchitecturePairXY = function (\n pair: ArchitectureDirectionPair\n): pair is ArchitectureDirectionPairXY {\n const lhs = pair[0] as ArchitectureDirection;\n const rhs = pair[1] as ArchitectureDirection;\n const aX_bY = isArchitectureDirectionX(lhs) && isArchitectureDirectionY(rhs);\n const aY_bX = isArchitectureDirectionY(lhs) && isArchitectureDirectionX(rhs);\n return aX_bY || aY_bX;\n};\n\n/**\n * Verifies that the architecture direction pair does not contain an invalid match (LL, RR, TT, BB)\n * @param x - architecture direction pair which could potentially be invalid\n * @returns true if the pair is not LL, RR, TT, or BB\n */\nexport const isValidArchitectureDirectionPair = function (\n x: InvalidArchitectureDirectionPair\n): x is ArchitectureDirectionPair {\n return x !== 'LL' && x !== 'RR' && x !== 'TT' && x !== 'BB';\n};\n\nexport type ArchitectureDirectionPairMap = Partial>;\n\n/**\n * Creates a pair of the directions of each side of an edge. This function should be used instead of manually creating it to ensure that the source is always the first character.\n *\n * Note: Undefined is returned when sourceDir and targetDir are the same. In theory this should never happen since the diagram parser throws an error if a user defines it as such.\n * @param sourceDir - source direction\n * @param targetDir - target direction\n * @returns\n */\nexport const getArchitectureDirectionPair = function (\n sourceDir: ArchitectureDirection,\n targetDir: ArchitectureDirection\n): ArchitectureDirectionPair | undefined {\n const pair: `${ArchitectureDirection}${ArchitectureDirection}` = `${sourceDir}${targetDir}`;\n return isValidArchitectureDirectionPair(pair) ? pair : undefined;\n};\n\n/**\n * Given an x,y position for an arrow and the direction of the edge it belongs to, return a factor for slightly shifting the edge\n * @param param0 - [x, y] coordinate pair\n * @param pair - architecture direction pair\n * @returns a new [x, y] coordinate pair\n */\nexport const shiftPositionByArchitectureDirectionPair = function (\n [x, y]: number[],\n pair: ArchitectureDirectionPair\n): number[] {\n const lhs = pair[0] as ArchitectureDirection;\n const rhs = pair[1] as ArchitectureDirection;\n if (isArchitectureDirectionX(lhs)) {\n if (isArchitectureDirectionY(rhs)) {\n return [x + (lhs === 'L' ? -1 : 1), y + (rhs === 'T' ? 1 : -1)];\n } else {\n return [x + (lhs === 'L' ? -1 : 1), y];\n }\n } else {\n if (isArchitectureDirectionX(rhs)) {\n return [x + (rhs === 'L' ? 1 : -1), y + (lhs === 'T' ? 1 : -1)];\n } else {\n return [x, y + (lhs === 'T' ? 1 : -1)];\n }\n }\n};\n\n/**\n * Given the directional pair of an XY edge, get the scale factors necessary to shift the coordinates inwards towards the edge\n * @param pair - XY pair of an edge\n * @returns - number[] containing [+/- 1, +/- 1]\n */\nexport const getArchitectureDirectionXYFactors = function (\n pair: ArchitectureDirectionPairXY\n): number[] {\n if (pair === 'LT' || pair === 'TL') {\n return [1, 1];\n } else if (pair === 'BL' || pair === 'LB') {\n return [1, -1];\n } else if (pair === 'BR' || pair === 'RB') {\n return [-1, -1];\n } else {\n return [-1, 1];\n }\n};\n\nexport const getArchitectureDirectionAlignment = function (\n a: ArchitectureDirection,\n b: ArchitectureDirection\n): ArchitectureAlignment {\n if (isArchitectureDirectionXY(a, b)) {\n return 'bend';\n } else if (isArchitectureDirectionX(a)) {\n return 'horizontal';\n }\n return 'vertical';\n};\n\nexport interface ArchitectureStyleOptions {\n archEdgeColor: string;\n archEdgeArrowColor: string;\n archEdgeWidth: string;\n archGroupBorderColor: string;\n archGroupBorderWidth: string;\n}\n\nexport interface ArchitectureService {\n id: string;\n type: 'service';\n edges: ArchitectureEdge[];\n icon?: string;\n iconText?: string;\n title?: string;\n in?: string;\n width?: number;\n height?: number;\n}\n\nexport interface ArchitectureJunction {\n id: string;\n type: 'junction';\n edges: ArchitectureEdge[];\n in?: string;\n width?: number;\n height?: number;\n}\n\nexport type ArchitectureNode = ArchitectureService | ArchitectureJunction;\n\nexport const isArchitectureService = function (x: ArchitectureNode): x is ArchitectureService {\n const temp = x as ArchitectureService;\n return temp.type === 'service';\n};\n\nexport const isArchitectureJunction = function (x: ArchitectureNode): x is ArchitectureJunction {\n const temp = x as ArchitectureJunction;\n return temp.type === 'junction';\n};\n\nexport interface ArchitectureGroup {\n id: string;\n icon?: string;\n title?: string;\n in?: string;\n}\n\nexport interface ArchitectureEdge
{\n lhsId: string;\n lhsDir: DT;\n lhsInto?: boolean;\n lhsGroup?: boolean;\n rhsId: string;\n rhsDir: DT;\n rhsInto?: boolean;\n rhsGroup?: boolean;\n title?: string;\n}\n\nexport interface ArchitectureDB extends DiagramDBBase {\n clear: () => void;\n addService: (service: Omit) => void;\n getServices: () => ArchitectureService[];\n addJunction: (service: Omit) => void;\n getJunctions: () => ArchitectureJunction[];\n getNodes: () => ArchitectureNode[];\n getNode: (id: string) => ArchitectureNode | null;\n addGroup: (group: ArchitectureGroup) => void;\n getGroups: () => ArchitectureGroup[];\n addEdge: (edge: ArchitectureEdge) => void;\n getEdges: () => ArchitectureEdge[];\n setElementForId: (id: string, element: D3Element) => void;\n getElementById: (id: string) => D3Element;\n getDataStructures: () => ArchitectureDataStructures;\n}\n\nexport type ArchitectureAdjacencyList = Record;\nexport type ArchitectureSpatialMap = Record;\n\n/**\n * Maps the direction that groups connect from.\n *\n * **Outer key**: ID of group A\n *\n * **Inner key**: ID of group B\n *\n * **Value**: 'vertical' or 'horizontal'\n *\n * Note: tmp[groupA][groupB] == tmp[groupB][groupA]\n */\nexport type ArchitectureGroupAlignments = Record<\n string,\n Record>\n>;\n\nexport interface ArchitectureDataStructures {\n adjList: ArchitectureAdjacencyList;\n spatialMaps: ArchitectureSpatialMap[];\n groupAlignments: ArchitectureGroupAlignments;\n}\n\nexport interface ArchitectureState extends Record {\n nodes: Record;\n groups: Record;\n edges: ArchitectureEdge[];\n registeredIds: Record;\n dataStructures?: ArchitectureDataStructures;\n elements: Record;\n config: ArchitectureDiagramConfig;\n}\n\n/*=======================================*\\\n| Cytoscape Override Types |\n\\*=======================================*/\n\nexport interface EdgeSingularData {\n id: string;\n label?: string;\n source: string;\n sourceDir: ArchitectureDirection;\n sourceArrow?: boolean;\n sourceGroup?: boolean;\n target: string;\n targetDir: ArchitectureDirection;\n targetArrow?: boolean;\n targetGroup?: boolean;\n [key: string]: any;\n}\n\nexport const edgeData = (edge: cytoscape.EdgeSingular) => {\n return edge.data() as EdgeSingularData;\n};\n\nexport interface EdgeSingular extends cytoscape.EdgeSingular {\n _private: {\n bodyBounds: unknown;\n rscratch: {\n startX: number;\n startY: number;\n midX: number;\n midY: number;\n endX: number;\n endY: number;\n };\n };\n data(): EdgeSingularData;\n data(key: T): EdgeSingularData[T];\n}\n\nexport type NodeSingularData =\n | {\n type: 'service';\n id: string;\n icon?: string;\n label?: string;\n parent?: string;\n width: number;\n height: number;\n [key: string]: any;\n }\n | {\n type: 'junction';\n id: string;\n parent?: string;\n width: number;\n height: number;\n [key: string]: any;\n }\n | {\n type: 'group';\n id: string;\n icon?: string;\n label?: string;\n parent?: string;\n [key: string]: any;\n };\n\nexport const nodeData = (node: cytoscape.NodeSingular) => {\n return node.data() as NodeSingularData;\n};\n\nexport interface NodeSingular extends cytoscape.NodeSingular {\n _private: {\n bodyBounds: {\n h: number;\n w: number;\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n };\n children: cytoscape.NodeSingular[];\n };\n data(): NodeSingularData;\n data(key: T): NodeSingularData[T];\n}\n", "import { getConfig as commonGetConfig } from '../../config.js';\nimport type { ArchitectureDiagramConfig } from '../../config.type.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport type { D3Element } from '../../types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type {\n ArchitectureAlignment,\n ArchitectureDirectionPair,\n ArchitectureDirectionPairMap,\n ArchitectureEdge,\n ArchitectureGroup,\n ArchitectureJunction,\n ArchitectureNode,\n ArchitectureService,\n ArchitectureSpatialMap,\n ArchitectureState,\n} from './architectureTypes.js';\nimport {\n getArchitectureDirectionAlignment,\n getArchitectureDirectionPair,\n isArchitectureDirection,\n isArchitectureJunction,\n isArchitectureService,\n shiftPositionByArchitectureDirectionPair,\n} from './architectureTypes.js';\n\nconst DEFAULT_ARCHITECTURE_CONFIG: Required =\n DEFAULT_CONFIG.architecture;\nexport class ArchitectureDB implements DiagramDB {\n private nodes: Record = {};\n private groups: Record = {};\n private edges: ArchitectureEdge[] = [];\n private registeredIds: Record = {};\n private dataStructures?: ArchitectureState['dataStructures'];\n private elements: Record = {};\n\n constructor() {\n this.clear();\n }\n\n public clear(): void {\n this.nodes = {};\n this.groups = {};\n this.edges = [];\n this.registeredIds = {};\n this.dataStructures = undefined;\n this.elements = {};\n commonClear();\n }\n\n public addService({\n id,\n icon,\n in: parent,\n title,\n iconText,\n }: Omit): void {\n if (this.registeredIds[id] !== undefined) {\n throw new Error(\n `The service id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== undefined) {\n if (id === parent) {\n throw new Error(`The service [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === undefined) {\n throw new Error(\n `The service [${id}]'s parent does not exist. Please make sure the parent is created before this service`\n );\n }\n if (this.registeredIds[parent] === 'node') {\n throw new Error(`The service [${id}]'s parent is not a group`);\n }\n }\n\n this.registeredIds[id] = 'node';\n\n this.nodes[id] = {\n id,\n type: 'service',\n icon,\n iconText,\n title,\n edges: [],\n in: parent,\n };\n }\n\n public getServices(): ArchitectureService[] {\n return Object.values(this.nodes).filter(isArchitectureService);\n }\n\n public addJunction({ id, in: parent }: Omit): void {\n if (this.registeredIds[id] !== undefined) {\n throw new Error(\n `The junction id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== undefined) {\n if (id === parent) {\n throw new Error(`The junction [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === undefined) {\n throw new Error(\n `The junction [${id}]'s parent does not exist. Please make sure the parent is created before this junction`\n );\n }\n if (this.registeredIds[parent] === 'node') {\n throw new Error(`The junction [${id}]'s parent is not a group`);\n }\n }\n\n this.registeredIds[id] = 'node';\n\n this.nodes[id] = {\n id,\n type: 'junction',\n edges: [],\n in: parent,\n };\n }\n\n public getJunctions(): ArchitectureJunction[] {\n return Object.values(this.nodes).filter(isArchitectureJunction);\n }\n\n public getNodes(): ArchitectureNode[] {\n return Object.values(this.nodes);\n }\n\n public getNode(id: string): ArchitectureNode | null {\n return this.nodes[id] ?? null;\n }\n\n public addGroup({ id, icon, in: parent, title }: ArchitectureGroup): void {\n if (this.registeredIds?.[id] !== undefined) {\n throw new Error(\n `The group id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== undefined) {\n if (id === parent) {\n throw new Error(`The group [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds?.[parent] === undefined) {\n throw new Error(\n `The group [${id}]'s parent does not exist. Please make sure the parent is created before this group`\n );\n }\n if (this.registeredIds?.[parent] === 'node') {\n throw new Error(`The group [${id}]'s parent is not a group`);\n }\n }\n\n this.registeredIds[id] = 'group';\n\n this.groups[id] = {\n id,\n icon,\n title,\n in: parent,\n };\n }\n public getGroups(): ArchitectureGroup[] {\n return Object.values(this.groups);\n }\n public addEdge({\n lhsId,\n rhsId,\n lhsDir,\n rhsDir,\n lhsInto,\n rhsInto,\n lhsGroup,\n rhsGroup,\n title,\n }: ArchitectureEdge): void {\n if (!isArchitectureDirection(lhsDir)) {\n throw new Error(\n `Invalid direction given for left hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(lhsDir)}`\n );\n }\n if (!isArchitectureDirection(rhsDir)) {\n throw new Error(\n `Invalid direction given for right hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(rhsDir)}`\n );\n }\n\n if (this.nodes[lhsId] === undefined && this.groups[lhsId] === undefined) {\n throw new Error(\n `The left-hand id [${lhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n if (this.nodes[rhsId] === undefined && this.groups[rhsId] === undefined) {\n throw new Error(\n `The right-hand id [${rhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n\n const lhsGroupId = this.nodes[lhsId].in;\n const rhsGroupId = this.nodes[rhsId].in;\n if (lhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The left-hand id [${lhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n if (rhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The right-hand id [${rhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n\n const edge = {\n lhsId,\n lhsDir,\n lhsInto,\n lhsGroup,\n rhsId,\n rhsDir,\n rhsInto,\n rhsGroup,\n title,\n };\n\n this.edges.push(edge);\n if (this.nodes[lhsId] && this.nodes[rhsId]) {\n this.nodes[lhsId].edges.push(this.edges[this.edges.length - 1]);\n this.nodes[rhsId].edges.push(this.edges[this.edges.length - 1]);\n }\n }\n\n public getEdges(): ArchitectureEdge[] {\n return this.edges;\n }\n\n /**\n * Returns the current diagram's adjacency list, spatial map, & group alignments.\n * If they have not been created, run the algorithms to generate them.\n * @returns\n */\n public getDataStructures() {\n if (this.dataStructures === undefined) {\n // Tracks how groups are aligned with one another. Generated while creating the adj list\n const groupAlignments: Record<\n string,\n Record>\n > = {};\n\n // Create an adjacency list of the diagram to perform BFS on\n // Outer reduce applied on all services\n // Inner reduce applied on the edges for a service\n const adjList = Object.entries(this.nodes).reduce<\n Record\n >((prevOuter, [id, service]) => {\n prevOuter[id] = service.edges.reduce((prevInner, edge) => {\n // track the direction groups connect to one another\n const lhsGroupId = this.getNode(edge.lhsId)?.in;\n const rhsGroupId = this.getNode(edge.rhsId)?.in;\n if (lhsGroupId && rhsGroupId && lhsGroupId !== rhsGroupId) {\n const alignment = getArchitectureDirectionAlignment(edge.lhsDir, edge.rhsDir);\n if (alignment !== 'bend') {\n groupAlignments[lhsGroupId] ??= {};\n groupAlignments[lhsGroupId][rhsGroupId] = alignment;\n groupAlignments[rhsGroupId] ??= {};\n groupAlignments[rhsGroupId][lhsGroupId] = alignment;\n }\n }\n\n if (edge.lhsId === id) {\n // source is LHS\n const pair = getArchitectureDirectionPair(edge.lhsDir, edge.rhsDir);\n if (pair) {\n prevInner[pair] = edge.rhsId;\n }\n } else {\n // source is RHS\n const pair = getArchitectureDirectionPair(edge.rhsDir, edge.lhsDir);\n if (pair) {\n prevInner[pair] = edge.lhsId;\n }\n }\n return prevInner;\n }, {});\n return prevOuter;\n }, {});\n\n // Configuration for the initial pass of BFS\n const firstId = Object.keys(adjList)[0];\n const visited = { [firstId]: 1 };\n // If a key is present in this object, it has not been visited\n const notVisited = Object.keys(adjList).reduce(\n (prev, id) => (id === firstId ? prev : { ...prev, [id]: 1 }),\n {} as Record\n );\n\n // Perform BFS on the adjacency list\n const BFS = (startingId: string): ArchitectureSpatialMap => {\n const spatialMap = { [startingId]: [0, 0] };\n const queue = [startingId];\n while (queue.length > 0) {\n const id = queue.shift();\n if (id) {\n visited[id] = 1;\n delete notVisited[id];\n const adj = adjList[id];\n const [posX, posY] = spatialMap[id];\n Object.entries(adj).forEach(([dir, rhsId]) => {\n if (!visited[rhsId]) {\n spatialMap[rhsId] = shiftPositionByArchitectureDirectionPair(\n [posX, posY],\n dir as ArchitectureDirectionPair\n );\n queue.push(rhsId);\n }\n });\n }\n }\n return spatialMap;\n };\n const spatialMaps = [BFS(firstId)];\n\n // If our diagram is disconnected, keep adding additional spatial maps until all disconnected graphs have been found\n while (Object.keys(notVisited).length > 0) {\n spatialMaps.push(BFS(Object.keys(notVisited)[0]));\n }\n this.dataStructures = {\n adjList,\n spatialMaps,\n groupAlignments,\n };\n }\n return this.dataStructures;\n }\n\n public setElementForId(id: string, element: D3Element): void {\n this.elements[id] = element;\n }\n\n public getElementById(id: string): D3Element {\n return this.elements[id];\n }\n\n public getConfig(): Required {\n return cleanAndMerge({\n ...DEFAULT_ARCHITECTURE_CONFIG,\n ...commonGetConfig().architecture,\n });\n }\n\n public getConfigField(\n field: T\n ): Required[T] {\n return this.getConfig()[field];\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getAccDescription = getAccDescription;\n public setAccDescription = setAccDescription;\n}\n\n/**\n * Typed wrapper for resolving an architecture diagram's config fields. Returns the default value if undefined\n * @param field - the config field to access\n * @returns\n */\n// export function getConfigField(\n// field: T\n// ): Required[T] {\n// return db.getConfig()[field];\n// }\n", "import type { Architecture } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { ArchitectureDB } from './architectureDb.js';\n\nconst populateDb = (ast: Architecture, db: ArchitectureDB) => {\n populateCommonDb(ast, db);\n ast.groups.map((group) => db.addGroup(group));\n ast.services.map((service) => db.addService({ ...service, type: 'service' }));\n ast.junctions.map((service) => db.addJunction({ ...service, type: 'junction' }));\n // @ts-ignore TODO our parser guarantees the type is L/R/T/B and not string. How to change to union type?\n ast.edges.map((edge) => db.addEdge(edge));\n};\n\nexport const parser: ParserDefinition = {\n parser: {\n // @ts-expect-error - ArchitectureDB is not assignable to DiagramDB\n yy: undefined,\n },\n parse: async (input: string): Promise => {\n const ast: Architecture = await parse('architecture', input);\n log.debug(ast);\n const db = parser.parser?.yy;\n if (!(db instanceof ArchitectureDB)) {\n throw new Error(\n 'parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.'\n );\n }\n populateDb(ast, db);\n },\n};\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport type { ArchitectureStyleOptions } from './architectureTypes.js';\n\nconst getStyles: DiagramStylesProvider = (options: ArchitectureStyleOptions) =>\n `\n .edge {\n stroke-width: ${options.archEdgeWidth};\n stroke: ${options.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${options.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${options.archGroupBorderColor};\n stroke-width: ${options.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`;\n\nexport default getStyles;\n", "import type { LayoutOptions, Position } from 'cytoscape';\nimport cytoscape from 'cytoscape';\nimport fcose from 'cytoscape-fcose';\nimport { select } from 'd3';\nimport type { DrawDefinition, SVG } from '../../diagram-api/types.js';\nimport type { Diagram } from '../../Diagram.js';\nimport { log } from '../../logger.js';\nimport { registerIconPacks } from '../../rendering-util/icons.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport type { ArchitectureDB } from './architectureDb.js';\nimport { architectureIcons } from './architectureIcons.js';\nimport type {\n ArchitectureAlignment,\n ArchitectureDataStructures,\n ArchitectureGroupAlignments,\n ArchitectureJunction,\n ArchitectureSpatialMap,\n EdgeSingular,\n EdgeSingularData,\n NodeSingularData,\n} from './architectureTypes.js';\nimport {\n type ArchitectureDirection,\n type ArchitectureEdge,\n type ArchitectureGroup,\n type ArchitectureService,\n ArchitectureDirectionName,\n edgeData,\n getOppositeArchitectureDirection,\n isArchitectureDirectionXY,\n isArchitectureDirectionY,\n nodeData,\n} from './architectureTypes.js';\nimport { drawEdges, drawGroups, drawJunctions, drawServices } from './svgDraw.js';\n\nregisterIconPacks([\n {\n name: architectureIcons.prefix,\n icons: architectureIcons,\n },\n]);\ncytoscape.use(fcose as any);\n\nfunction addServices(services: ArchitectureService[], cy: cytoscape.Core, db: ArchitectureDB) {\n services.forEach((service) => {\n cy.add({\n group: 'nodes',\n data: {\n type: 'service',\n id: service.id,\n icon: service.icon,\n label: service.title,\n parent: service.in,\n width: db.getConfigField('iconSize'),\n height: db.getConfigField('iconSize'),\n } as NodeSingularData,\n classes: 'node-service',\n });\n });\n}\n\nfunction addJunctions(junctions: ArchitectureJunction[], cy: cytoscape.Core, db: ArchitectureDB) {\n junctions.forEach((junction) => {\n cy.add({\n group: 'nodes',\n data: {\n type: 'junction',\n id: junction.id,\n parent: junction.in,\n width: db.getConfigField('iconSize'),\n height: db.getConfigField('iconSize'),\n } as NodeSingularData,\n classes: 'node-junction',\n });\n });\n}\n\nfunction positionNodes(db: ArchitectureDB, cy: cytoscape.Core) {\n cy.nodes().map((node) => {\n const data = nodeData(node);\n if (data.type === 'group') {\n return;\n }\n data.x = node.position().x;\n data.y = node.position().y;\n\n const nodeElem = db.getElementById(data.id);\n nodeElem.attr('transform', 'translate(' + (data.x || 0) + ',' + (data.y || 0) + ')');\n });\n}\n\nfunction addGroups(groups: ArchitectureGroup[], cy: cytoscape.Core) {\n groups.forEach((group) => {\n cy.add({\n group: 'nodes',\n data: {\n type: 'group',\n id: group.id,\n icon: group.icon,\n label: group.title,\n parent: group.in,\n } as NodeSingularData,\n classes: 'node-group',\n });\n });\n}\n\nfunction addEdges(edges: ArchitectureEdge[], cy: cytoscape.Core) {\n edges.forEach((parsedEdge) => {\n const { lhsId, rhsId, lhsInto, lhsGroup, rhsInto, lhsDir, rhsDir, rhsGroup, title } =\n parsedEdge;\n const edgeType = isArchitectureDirectionXY(parsedEdge.lhsDir, parsedEdge.rhsDir)\n ? 'segments'\n : 'straight';\n const edge: EdgeSingularData = {\n id: `${lhsId}-${rhsId}`,\n label: title,\n source: lhsId,\n sourceDir: lhsDir,\n sourceArrow: lhsInto,\n sourceGroup: lhsGroup,\n sourceEndpoint:\n lhsDir === 'L'\n ? '0 50%'\n : lhsDir === 'R'\n ? '100% 50%'\n : lhsDir === 'T'\n ? '50% 0'\n : '50% 100%',\n target: rhsId,\n targetDir: rhsDir,\n targetArrow: rhsInto,\n targetGroup: rhsGroup,\n targetEndpoint:\n rhsDir === 'L'\n ? '0 50%'\n : rhsDir === 'R'\n ? '100% 50%'\n : rhsDir === 'T'\n ? '50% 0'\n : '50% 100%',\n };\n cy.add({\n group: 'edges',\n data: edge,\n classes: edgeType,\n });\n });\n}\n\nfunction getAlignments(\n db: ArchitectureDB,\n spatialMaps: ArchitectureSpatialMap[],\n groupAlignments: ArchitectureGroupAlignments\n): fcose.FcoseAlignmentConstraint {\n /**\n * Flattens the alignment object so nodes in different groups will be in the same alignment array IFF their groups don't connect in a conflicting alignment\n *\n * i.e., two groups which connect horizontally should not have nodes with vertical alignments to one another\n *\n * See: #5952\n *\n * @param alignmentObj - alignment object with the outer key being the row/col # and the inner key being the group name mapped to the nodes on that axis in the group\n * @param alignmentDir - alignment direction\n * @returns flattened alignment object with an arbitrary key mapping to nodes in the same row/col\n */\n const flattenAlignments = (\n alignmentObj: Record>,\n alignmentDir: ArchitectureAlignment\n ): Record => {\n return Object.entries(alignmentObj).reduce(\n (prev, [dir, alignments]) => {\n // prev is the mapping of x/y coordinate to an array of the nodes in that row/column\n let cnt = 0;\n const arr = Object.entries(alignments); // [group name, array of nodes within the group on axis dir]\n if (arr.length === 1) {\n // If only one group exists in the row/column, we don't need to do anything else\n prev[dir] = arr[0][1];\n return prev;\n }\n for (let i = 0; i < arr.length - 1; i++) {\n for (let j = i + 1; j < arr.length; j++) {\n const [aGroupId, aNodeIds] = arr[i];\n const [bGroupId, bNodeIds] = arr[j];\n const alignment = groupAlignments[aGroupId]?.[bGroupId]; // Get how the two groups are intended to align (undefined if they aren't)\n\n if (alignment === alignmentDir) {\n // If the intended alignment between the two groups is the same as the alignment we are parsing\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds]; // add the node ids of both groups to the axis array in prev\n } else if (aGroupId === 'default' || bGroupId === 'default') {\n // If either of the groups are in the default space (not in a group), use the same behavior as above\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];\n } else {\n // Otherwise, the nodes in the two groups are not intended to align\n const keyA = `${dir}-${cnt++}`;\n prev[keyA] = aNodeIds;\n const keyB = `${dir}-${cnt++}`;\n prev[keyB] = bNodeIds;\n }\n }\n }\n\n return prev;\n },\n {} as Record\n );\n };\n\n const alignments = spatialMaps.map((spatialMap) => {\n const horizontalAlignments: Record> = {};\n const verticalAlignments: Record> = {};\n\n // Group service ids in an object with their x and y coordinate as the key\n Object.entries(spatialMap).forEach(([id, [x, y]]) => {\n const nodeGroup = db.getNode(id)?.in ?? 'default';\n\n horizontalAlignments[y] ??= {};\n horizontalAlignments[y][nodeGroup] ??= [];\n horizontalAlignments[y][nodeGroup].push(id);\n\n verticalAlignments[x] ??= {};\n verticalAlignments[x][nodeGroup] ??= [];\n verticalAlignments[x][nodeGroup].push(id);\n });\n\n // Merge the values of each object into a list if the inner list has at least 2 elements\n return {\n horiz: Object.values(flattenAlignments(horizontalAlignments, 'horizontal')).filter(\n (arr) => arr.length > 1\n ),\n vert: Object.values(flattenAlignments(verticalAlignments, 'vertical')).filter(\n (arr) => arr.length > 1\n ),\n };\n });\n\n // Merge the alignment lists for each spatial map into one 2d array per axis\n const [horizontal, vertical] = alignments.reduce(\n ([prevHoriz, prevVert], { horiz, vert }) => {\n return [\n [...prevHoriz, ...horiz],\n [...prevVert, ...vert],\n ];\n },\n [[] as string[][], [] as string[][]]\n );\n\n return {\n horizontal,\n vertical,\n };\n}\n\nfunction getRelativeConstraints(\n spatialMaps: ArchitectureSpatialMap[],\n db: ArchitectureDB\n): fcose.FcoseRelativePlacementConstraint[] {\n const relativeConstraints: fcose.FcoseRelativePlacementConstraint[] = [];\n const posToStr = (pos: number[]) => `${pos[0]},${pos[1]}`;\n const strToPos = (pos: string) => pos.split(',').map((p) => parseInt(p));\n\n spatialMaps.forEach((spatialMap) => {\n const invSpatialMap = Object.fromEntries(\n Object.entries(spatialMap).map(([id, pos]) => [posToStr(pos), id])\n );\n\n // perform BFS\n const queue = [posToStr([0, 0])];\n const visited: Record = {};\n const directions: Record = {\n L: [-1, 0],\n R: [1, 0],\n T: [0, 1],\n B: [0, -1],\n };\n while (queue.length > 0) {\n const curr = queue.shift();\n if (curr) {\n visited[curr] = 1;\n const currId = invSpatialMap[curr];\n if (currId) {\n const currPos = strToPos(curr);\n Object.entries(directions).forEach(([dir, shift]) => {\n const newPos = posToStr([currPos[0] + shift[0], currPos[1] + shift[1]]);\n const newId = invSpatialMap[newPos];\n // If there is an adjacent service to the current one and it has not yet been visited\n if (newId && !visited[newPos]) {\n queue.push(newPos);\n // @ts-ignore cannot determine if left/right or top/bottom are paired together\n relativeConstraints.push({\n [ArchitectureDirectionName[dir as ArchitectureDirection]]: newId,\n [ArchitectureDirectionName[\n getOppositeArchitectureDirection(dir as ArchitectureDirection)\n ]]: currId,\n gap: 1.5 * db.getConfigField('iconSize'),\n });\n }\n });\n }\n }\n }\n });\n return relativeConstraints;\n}\n\nfunction layoutArchitecture(\n services: ArchitectureService[],\n junctions: ArchitectureJunction[],\n groups: ArchitectureGroup[],\n edges: ArchitectureEdge[],\n db: ArchitectureDB,\n { spatialMaps, groupAlignments }: ArchitectureDataStructures\n): Promise {\n return new Promise((resolve) => {\n const renderEl = select('body').append('div').attr('id', 'cy').attr('style', 'display:none');\n const cy = cytoscape({\n container: document.getElementById('cy'),\n style: [\n {\n selector: 'edge',\n style: {\n 'curve-style': 'straight',\n label: 'data(label)',\n 'source-endpoint': 'data(sourceEndpoint)',\n 'target-endpoint': 'data(targetEndpoint)',\n },\n },\n {\n selector: 'edge.segments',\n style: {\n 'curve-style': 'segments',\n 'segment-weights': '0',\n 'segment-distances': [0.5],\n // @ts-ignore Incorrect library types\n 'edge-distances': 'endpoints',\n 'source-endpoint': 'data(sourceEndpoint)',\n 'target-endpoint': 'data(targetEndpoint)',\n },\n },\n {\n selector: 'node',\n style: {\n // @ts-ignore Incorrect library types\n 'compound-sizing-wrt-labels': 'include',\n },\n },\n {\n selector: 'node[label]',\n style: {\n 'text-valign': 'bottom',\n 'text-halign': 'center',\n 'font-size': `${db.getConfigField('fontSize')}px`,\n },\n },\n {\n selector: '.node-service',\n style: {\n label: 'data(label)',\n width: 'data(width)',\n height: 'data(height)',\n },\n },\n {\n selector: '.node-junction',\n style: {\n width: 'data(width)',\n height: 'data(height)',\n },\n },\n {\n selector: '.node-group',\n style: {\n // @ts-ignore Incorrect library types\n padding: `${db.getConfigField('padding')}px`,\n },\n },\n ],\n layout: {\n name: 'grid',\n boundingBox: {\n x1: 0,\n x2: 100,\n y1: 0,\n y2: 100,\n },\n },\n });\n // Remove element after layout\n renderEl.remove();\n\n addGroups(groups, cy);\n addServices(services, cy, db);\n addJunctions(junctions, cy, db);\n addEdges(edges, cy);\n // Use the spatial map to create alignment arrays for fcose\n const alignmentConstraint = getAlignments(db, spatialMaps, groupAlignments);\n\n // Create the relative constraints for fcose by using an inverse of the spatial map and performing BFS on it\n const relativePlacementConstraint = getRelativeConstraints(spatialMaps, db);\n\n const layout = cy.layout({\n name: 'fcose',\n quality: 'proof',\n styleEnabled: false,\n animate: false,\n nodeDimensionsIncludeLabels: false,\n // Adjust the edge parameters if it passes through the border of a group\n // Hacky fix for: https://github.com/iVis-at-Bilkent/cytoscape.js-fcose/issues/67\n idealEdgeLength(edge: EdgeSingular) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n const elasticity =\n parentA === parentB\n ? 1.5 * db.getConfigField('iconSize')\n : 0.5 * db.getConfigField('iconSize');\n return elasticity;\n },\n edgeElasticity(edge: EdgeSingular) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n const elasticity = parentA === parentB ? 0.45 : 0.001;\n return elasticity;\n },\n alignmentConstraint,\n relativePlacementConstraint,\n } as LayoutOptions);\n\n // Once the diagram has been generated and the service's position cords are set, adjust the XY edges to have a 90deg bend\n layout.one('layoutstop', () => {\n function getSegmentWeights(\n source: Position,\n target: Position,\n pointX: number,\n pointY: number\n ) {\n let W, D;\n const { x: sX, y: sY } = source;\n const { x: tX, y: tY } = target;\n\n D =\n (pointY - sY + ((sX - pointX) * (sY - tY)) / (sX - tX)) /\n Math.sqrt(1 + Math.pow((sY - tY) / (sX - tX), 2));\n W = Math.sqrt(Math.pow(pointY - sY, 2) + Math.pow(pointX - sX, 2) - Math.pow(D, 2));\n\n const distAB = Math.sqrt(Math.pow(tX - sX, 2) + Math.pow(tY - sY, 2));\n W = W / distAB;\n\n //check whether the point (pointX, pointY) is on right or left of the line src to tgt. for instance : a point C(X, Y) and line (AB). d=(xB-xA)(yC-yA)-(yB-yA)(xC-xA). if d>0, then C is on left of the line. if d<0, it is on right. if d=0, it is on the line.\n let delta1 = (tX - sX) * (pointY - sY) - (tY - sY) * (pointX - sX);\n switch (true) {\n case delta1 >= 0:\n delta1 = 1;\n break;\n case delta1 < 0:\n delta1 = -1;\n break;\n }\n //check whether the point (pointX, pointY) is \"behind\" the line src to tgt\n let delta2 = (tX - sX) * (pointX - sX) + (tY - sY) * (pointY - sY);\n switch (true) {\n case delta2 >= 0:\n delta2 = 1;\n break;\n case delta2 < 0:\n delta2 = -1;\n break;\n }\n\n D = Math.abs(D) * delta1; //ensure that sign of D is same as sign of delta1. Hence we need to take absolute value of D and multiply by delta1\n W = W * delta2;\n\n return {\n distances: D,\n weights: W,\n };\n }\n cy.startBatch();\n for (const edge of Object.values(cy.edges())) {\n if (edge.data?.()) {\n const { x: sX, y: sY } = edge.source().position();\n const { x: tX, y: tY } = edge.target().position();\n if (sX !== tX && sY !== tY) {\n const sEP = edge.sourceEndpoint();\n const tEP = edge.targetEndpoint();\n const { sourceDir } = edgeData(edge);\n const [pointX, pointY] = isArchitectureDirectionY(sourceDir)\n ? [sEP.x, tEP.y]\n : [tEP.x, sEP.y];\n const { weights, distances } = getSegmentWeights(sEP, tEP, pointX, pointY);\n edge.style('segment-distances', distances);\n edge.style('segment-weights', weights);\n }\n }\n }\n cy.endBatch();\n layout.run();\n });\n layout.run();\n\n cy.ready((e) => {\n log.info('Ready', e);\n resolve(cy);\n });\n });\n}\n\nexport const draw: DrawDefinition = async (text, id, _version, diagObj: Diagram) => {\n // TODO: Add title support for architecture diagrams\n\n const db = diagObj.db as ArchitectureDB;\n\n const services = db.getServices();\n const junctions = db.getJunctions();\n const groups = db.getGroups();\n const edges = db.getEdges();\n const ds = db.getDataStructures();\n\n const svg: SVG = selectSvgElement(id);\n\n const edgesElem = svg.append('g');\n edgesElem.attr('class', 'architecture-edges');\n\n const servicesElem = svg.append('g');\n servicesElem.attr('class', 'architecture-services');\n\n const groupElem = svg.append('g');\n groupElem.attr('class', 'architecture-groups');\n\n await drawServices(db, servicesElem, services);\n drawJunctions(db, servicesElem, junctions);\n\n const cy = await layoutArchitecture(services, junctions, groups, edges, db, ds);\n\n await drawEdges(edgesElem, cy, db);\n await drawGroups(groupElem, cy, db);\n positionNodes(db, cy);\n\n setupGraphViewbox(undefined, svg, db.getConfigField('padding'), db.getConfigField('useMaxWidth'));\n};\n\nexport const renderer = { draw };\n", "import { unknownIcon } from '../../rendering-util/icons.js';\nimport type { IconifyJSON } from '@iconify/types';\n\nconst wrapIcon = (icon: string) => {\n return `${icon}`;\n};\n\nexport const architectureIcons: IconifyJSON = {\n prefix: 'mermaid-architecture',\n height: 80,\n width: 80,\n icons: {\n database: {\n body: wrapIcon(\n ''\n ),\n },\n server: {\n body: wrapIcon(\n ''\n ),\n },\n disk: {\n body: wrapIcon(\n ''\n ),\n },\n internet: {\n body: wrapIcon(\n ''\n ),\n },\n cloud: {\n body: wrapIcon(\n ''\n ),\n },\n unknown: unknownIcon,\n blank: {\n body: wrapIcon(''),\n },\n },\n};\n", "import type cytoscape from 'cytoscape';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { createText } from '../../rendering-util/createText.js';\nimport { getIconSVG } from '../../rendering-util/icons.js';\nimport type { D3Element } from '../../types.js';\nimport { sanitizeText } from '../common/common.js';\nimport type { ArchitectureDB } from './architectureDb.js';\nimport { architectureIcons } from './architectureIcons.js';\nimport {\n ArchitectureDirectionArrow,\n ArchitectureDirectionArrowShift,\n edgeData,\n getArchitectureDirectionPair,\n getArchitectureDirectionXYFactors,\n isArchitectureDirectionX,\n isArchitectureDirectionXY,\n isArchitectureDirectionY,\n isArchitecturePairXY,\n nodeData,\n type ArchitectureJunction,\n type ArchitectureService,\n} from './architectureTypes.js';\nimport { getEdgeId } from '../../utils.js';\n\nexport const drawEdges = async function (\n edgesEl: D3Element,\n cy: cytoscape.Core,\n db: ArchitectureDB\n) {\n const padding = db.getConfigField('padding');\n const iconSize = db.getConfigField('iconSize');\n const halfIconSize = iconSize / 2;\n const arrowSize = iconSize / 6;\n const halfArrowSize = arrowSize / 2;\n\n await Promise.all(\n cy.edges().map(async (edge) => {\n const {\n source,\n sourceDir,\n sourceArrow,\n sourceGroup,\n target,\n targetDir,\n targetArrow,\n targetGroup,\n label,\n } = edgeData(edge);\n let { x: startX, y: startY } = edge[0].sourceEndpoint();\n const { x: midX, y: midY } = edge[0].midpoint();\n let { x: endX, y: endY } = edge[0].targetEndpoint();\n\n // Adjust the edge distance if it has the {group} modifier\n const groupEdgeShift = padding + 4;\n // +18 comes from the service label height that extends the padding on the bottom side of each group\n if (sourceGroup) {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === 'L' ? -groupEdgeShift : groupEdgeShift;\n } else {\n startY += sourceDir === 'T' ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n\n if (targetGroup) {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === 'L' ? -groupEdgeShift : groupEdgeShift;\n } else {\n endY += targetDir === 'T' ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n\n // Adjust the edge distance if it doesn't have the {group} modifier and the endpoint is a junction node\n if (!sourceGroup && db.getNode(source)?.type === 'junction') {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === 'L' ? halfIconSize : -halfIconSize;\n } else {\n startY += sourceDir === 'T' ? halfIconSize : -halfIconSize;\n }\n }\n if (!targetGroup && db.getNode(target)?.type === 'junction') {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === 'L' ? halfIconSize : -halfIconSize;\n } else {\n endY += targetDir === 'T' ? halfIconSize : -halfIconSize;\n }\n }\n\n if (edge[0]._private.rscratch) {\n // const bounds = edge[0]._private.rscratch;\n\n const g = edgesEl.insert('g');\n\n g.insert('path')\n .attr('d', `M ${startX},${startY} L ${midX},${midY} L${endX},${endY} `)\n .attr('class', 'edge')\n .attr('id', getEdgeId(source, target, { prefix: 'L' }));\n\n if (sourceArrow) {\n const xShift = isArchitectureDirectionX(sourceDir)\n ? ArchitectureDirectionArrowShift[sourceDir](startX, arrowSize)\n : startX - halfArrowSize;\n const yShift = isArchitectureDirectionY(sourceDir)\n ? ArchitectureDirectionArrowShift[sourceDir](startY, arrowSize)\n : startY - halfArrowSize;\n\n g.insert('polygon')\n .attr('points', ArchitectureDirectionArrow[sourceDir](arrowSize))\n .attr('transform', `translate(${xShift},${yShift})`)\n .attr('class', 'arrow');\n }\n if (targetArrow) {\n const xShift = isArchitectureDirectionX(targetDir)\n ? ArchitectureDirectionArrowShift[targetDir](endX, arrowSize)\n : endX - halfArrowSize;\n const yShift = isArchitectureDirectionY(targetDir)\n ? ArchitectureDirectionArrowShift[targetDir](endY, arrowSize)\n : endY - halfArrowSize;\n\n g.insert('polygon')\n .attr('points', ArchitectureDirectionArrow[targetDir](arrowSize))\n .attr('transform', `translate(${xShift},${yShift})`)\n .attr('class', 'arrow');\n }\n\n if (label) {\n const axis = !isArchitectureDirectionXY(sourceDir, targetDir)\n ? isArchitectureDirectionX(sourceDir)\n ? 'X'\n : 'Y'\n : 'XY';\n\n let width = 0;\n if (axis === 'X') {\n width = Math.abs(startX - endX);\n } else if (axis === 'Y') {\n // Reduce width by a factor of 1.5 to avoid overlapping service labels\n width = Math.abs(startY - endY) / 1.5;\n } else {\n width = Math.abs(startX - endX) / 2;\n }\n\n const textElem = g.append('g');\n await createText(\n textElem,\n label,\n {\n useHtmlLabels: false,\n width,\n classes: 'architecture-service-label',\n },\n getConfig()\n );\n\n textElem\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle');\n\n if (axis === 'X') {\n textElem.attr('transform', 'translate(' + midX + ', ' + midY + ')');\n } else if (axis === 'Y') {\n textElem.attr('transform', 'translate(' + midX + ', ' + midY + ') rotate(-90)');\n } else if (axis === 'XY') {\n const pair = getArchitectureDirectionPair(sourceDir, targetDir);\n if (pair && isArchitecturePairXY(pair)) {\n const bboxOrig = textElem.node().getBoundingClientRect();\n const [x, y] = getArchitectureDirectionXYFactors(pair);\n\n textElem\n .attr('dominant-baseline', 'auto')\n .attr('transform', `rotate(${-1 * x * y * 45})`);\n\n // Calculate the new width/height with the rotation applied, and transform to the proper position\n const bboxNew = textElem.node().getBoundingClientRect();\n textElem.attr(\n 'transform',\n `\n translate(${midX}, ${midY - bboxOrig.height / 2})\n translate(${(x * bboxNew.width) / 2}, ${(y * bboxNew.height) / 2})\n rotate(${-1 * x * y * 45}, 0, ${bboxOrig.height / 2})\n `\n );\n }\n }\n }\n }\n })\n );\n};\n\nexport const drawGroups = async function (\n groupsEl: D3Element,\n cy: cytoscape.Core,\n db: ArchitectureDB\n) {\n const padding = db.getConfigField('padding');\n const groupIconSize = padding * 0.75;\n\n const fontSize = db.getConfigField('fontSize');\n\n const iconSize = db.getConfigField('iconSize');\n const halfIconSize = iconSize / 2;\n\n await Promise.all(\n cy.nodes().map(async (node) => {\n const data = nodeData(node);\n if (data.type === 'group') {\n const { h, w, x1, y1 } = node.boundingBox();\n\n const groupsNode = groupsEl.append('rect');\n groupsNode\n .attr('id', `group-${data.id}`)\n .attr('x', x1 + halfIconSize)\n .attr('y', y1 + halfIconSize)\n .attr('width', w)\n .attr('height', h)\n .attr('class', 'node-bkg');\n\n const groupLabelContainer = groupsEl.append('g');\n let shiftedX1 = x1;\n let shiftedY1 = y1;\n if (data.icon) {\n const bkgElem = groupLabelContainer.append('g');\n bkgElem.html(\n `${await getIconSVG(data.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })}`\n );\n bkgElem.attr(\n 'transform',\n 'translate(' +\n (shiftedX1 + halfIconSize + 1) +\n ', ' +\n (shiftedY1 + halfIconSize + 1) +\n ')'\n );\n shiftedX1 += groupIconSize;\n // TODO: test with more values\n // - 1 - 2 comes from the Y axis transform of the icon and label\n shiftedY1 += fontSize / 2 - 1 - 2;\n }\n if (data.label) {\n const textElem = groupLabelContainer.append('g');\n await createText(\n textElem,\n data.label,\n {\n useHtmlLabels: false,\n width: w,\n classes: 'architecture-service-label',\n },\n getConfig()\n );\n textElem\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'start')\n .attr('text-anchor', 'start');\n\n textElem.attr(\n 'transform',\n 'translate(' +\n (shiftedX1 + halfIconSize + 4) +\n ', ' +\n (shiftedY1 + halfIconSize + 2) +\n ')'\n );\n }\n db.setElementForId(data.id, groupsNode);\n }\n })\n );\n};\n\nexport const drawServices = async function (\n db: ArchitectureDB,\n elem: D3Element,\n services: ArchitectureService[]\n): Promise {\n const config = getConfig();\n for (const service of services) {\n const serviceElem = elem.append('g');\n const iconSize = db.getConfigField('iconSize');\n\n if (service.title) {\n const textElem = serviceElem.append('g');\n await createText(\n textElem,\n service.title,\n {\n useHtmlLabels: false,\n width: iconSize * 1.5,\n classes: 'architecture-service-label',\n },\n config\n );\n\n textElem\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle');\n\n textElem.attr('transform', 'translate(' + iconSize / 2 + ', ' + iconSize + ')');\n }\n\n const bkgElem = serviceElem.append('g');\n if (service.icon) {\n // TODO: should a warning be given to end-users saying which icon names are available?\n // if (!isIconNameInUse(service.icon)) {\n // throw new Error(`Invalid SVG Icon name: \"${service.icon}\"`);\n // }\n bkgElem.html(\n `${await getIconSVG(service.icon, { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}`\n );\n } else if (service.iconText) {\n bkgElem.html(\n `${await getIconSVG('blank', { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}`\n );\n const textElemContainer = bkgElem.append('g');\n const fo = textElemContainer\n .append('foreignObject')\n .attr('width', iconSize)\n .attr('height', iconSize);\n const divElem = fo\n .append('div')\n .attr('class', 'node-icon-text')\n .attr('style', `height: ${iconSize}px;`)\n .append('div')\n .html(sanitizeText(service.iconText, config));\n const fontSize =\n parseInt(\n window\n .getComputedStyle(divElem.node(), null)\n .getPropertyValue('font-size')\n .replace(/\\D/g, '')\n ) ?? 16;\n divElem.attr('style', `-webkit-line-clamp: ${Math.floor((iconSize - 2) / fontSize)};`);\n } else {\n bkgElem\n .append('path')\n .attr('class', 'node-bkg')\n .attr('id', 'node-' + service.id)\n .attr(\n 'd',\n `M0,${iconSize} V5 Q0,0 5,0 H${iconSize - 5} Q${iconSize},0 ${iconSize},5 V${iconSize} Z`\n );\n }\n\n serviceElem.attr('id', `service-${service.id}`).attr('class', 'architecture-service');\n\n const { width, height } = serviceElem.node().getBBox();\n service.width = width;\n service.height = height;\n db.setElementForId(service.id, serviceElem);\n }\n return 0;\n};\n\nexport const drawJunctions = function (\n db: ArchitectureDB,\n elem: D3Element,\n junctions: ArchitectureJunction[]\n) {\n junctions.forEach((junction) => {\n const junctionElem = elem.append('g');\n const iconSize = db.getConfigField('iconSize');\n\n const bkgElem = junctionElem.append('g');\n bkgElem\n .append('rect')\n .attr('id', 'node-' + junction.id)\n .attr('fill-opacity', '0')\n .attr('width', iconSize)\n .attr('height', iconSize);\n\n junctionElem.attr('class', 'architecture-junction');\n\n const { width, height } = junctionElem._groups[0][0].getBBox();\n junctionElem.width = width;\n junctionElem.height = height;\n db.setElementForId(junction.id, junctionElem);\n });\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { parser } from './architectureParser.js';\nimport { ArchitectureDB } from './architectureDb.js';\nimport styles from './architectureStyles.js';\nimport { renderer } from './architectureRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new ArchitectureDB();\n },\n renderer,\n styles,\n};\n"], - "mappings": "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", - "names": ["require_layout_base", "__commonJSMin", "exports", "module", "__name", "root", "factory", "modules", "installedModules", "__webpack_require__", "moduleId", "value", "name", "getter", "object", "property", "LayoutConstants", "LGraphObject", "IGeometry", "IMath", "LEdge", "source", "target", "vEdge", "prop", "node", "graph", "otherEnd", "clipPointCoordinates", "vGraphObject", "Integer", "RectangleD", "RandomSeed", "PointD", "LNode", "gm", "loc", "size", "vNode", "width", "height", "upperLeft", "dimension", "cx", "cy", "x", "y", "dx", "dy", "to", "edgeList", "edge", "self", "other", "neighbors", "withNeighborsList", "childNode", "children", "nodes", "i", "noOfChildren", "randomCenterX", "randomCenterY", "minX", "maxX", "minY", "maxY", "childGraph", "trans", "left", "top", "leftTop", "vLeftTop", "FDLayoutConstants", "pt", "dim", "LGraphManager", "Point", "LinkedList", "LGraph", "parent", "obj2", "vGraph", "obj1", "sourceNode", "targetNode", "newNode", "newEdge", "obj", "edgesToBeRemoved", "s", "index", "sourceIndex", "targetIndex", "nodeTop", "nodeLeft", "margin", "lNode", "recursive", "right", "bottom", "nodeRight", "nodeBottom", "boundingRect", "queue", "visited", "currentNode", "neighborEdges", "currentNeighbor", "childrenOfNode", "neighborEdge", "childrenOfNeighbor", "noOfVisitedInThisGraph", "visitedNode", "layout", "ngraph", "nnode", "newGraph", "parentNode", "sourceGraph", "targetGraph", "lObj", "nodesToBeRemoved", "nodeList", "graphs", "firstNode", "secondNode", "ownerGraph", "sourceAncestorGraph", "targetAncestorGraph", "edges", "firstOwnerGraph", "secondOwnerGraph", "depth", "edgesToRemove", "rectA", "rectB", "overlapAmount", "separationBuffer", "directions", "slope", "moveByY", "moveByX", "result", "p1x", "p1y", "p2x", "p2y", "topLeftAx", "topLeftAy", "topRightAx", "bottomLeftAx", "bottomLeftAy", "bottomRightAx", "halfWidthA", "halfHeightA", "topLeftBx", "topLeftBy", "topRightBx", "bottomLeftBx", "bottomLeftBy", "bottomRightBx", "halfWidthB", "halfHeightB", "clipPointAFound", "clipPointBFound", "slopeA", "slopeB", "slopePrime", "cardinalDirectionA", "cardinalDirectionB", "tempPointAx", "tempPointAy", "tempPointBx", "tempPointBy", "line", "s1", "s2", "f1", "f2", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "a1", "a2", "b1", "b2", "c1", "c2", "denom", "Cx", "Cy", "Nx", "Ny", "C_angle", "p1", "p2", "p3", "p4", "a", "b", "c", "d", "p", "q", "r", "det", "lambda", "gamma", "Ex", "Ey", "Lx", "Ly", "disc", "t1", "t2", "intersections", "_createClass", "defineProperties", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "nodeFrom", "add", "prev", "next", "list", "_remove", "vals", "_this", "v", "val", "otherNode", "current", "_typeof", "UniqueIDGeneretor", "id", "arg", "type", "_toConsumableArray", "arr", "arr2", "Transform", "Emitter", "Layout", "isRemoteUse", "isLayoutSuccessfull", "allEdges", "newLeftTop", "flatForest", "isForest", "allNodes", "isFlat", "toBeVisited", "parents", "unProcessedNodes", "temp", "dummyNodes", "dummyNode", "dummyEdge", "k", "lEdge", "path", "ebp", "sliderValue", "defaultValue", "minDiv", "maxMul", "minValue", "maxValue", "removedNodes", "remainingDegrees", "foundCenter", "centerNode", "degree", "tempList", "tempList2", "neighbours", "neighbour", "otherDegree", "newDegree", "wox", "woy", "wex", "wey", "dox", "doy", "dex", "dey", "xDevice", "worldExtX", "yDevice", "worldExtY", "xWorld", "deviceExtX", "yWorld", "deviceExtY", "inPoint", "outPoint", "FDLayout", "originalIdealLength", "lcaDepth", "sizeOfSourceInLca", "sizeOfTargetInLca", "lEdges", "gridUpdateAllowed", "forceToNodeSurroundingUpdate", "j", "nodeA", "nodeB", "lNodes", "processedNodeSet", "idealLength", "length", "springForce", "springForceX", "springForceY", "clipPoints", "distanceX", "distanceY", "distanceSquared", "distance", "repulsionForce", "repulsionForceX", "repulsionForceY", "childrenConstant", "ownerCenterX", "ownerCenterY", "absDistanceX", "absDistanceY", "estimatedSize", "converged", "oscilating", "sizeX", "sizeY", "grid", "startX", "finishX", "startY", "finishY", "surrounding", "FDLayoutEdge", "FDLayoutNode", "_startX", "_finishX", "_startY", "_finishY", "DimensionD", "HashMap", "key", "theId", "HashSet", "keys", "Matrix", "array1", "array2", "array", "constant", "product", "magnitude", "sum", "_i", "C", "INV", "temp1", "temp2", "_i2", "_sum", "_j", "_i3", "_sum2", "_j2", "Quicksort", "A", "compareFunction", "SVD", "nu", "dims", "allocate", "e", "work", "wantu", "wantv", "nct", "nrt", "lhs", "rhs", "t", "_i4", "_i5", "_i6", "_i7", "_i8", "_t", "_i9", "_i10", "_j3", "_i11", "_k", "_j4", "_t2", "_i12", "_i13", "_i14", "_i15", "_i16", "_k2", "_j5", "_t3", "_i17", "_i18", "_i19", "pp", "iter", "eps", "tiny", "_k3", "kase", "ks", "_t4", "f", "_j6", "_t5", "cs", "sn", "_i20", "_f", "_j7", "_t6", "_cs", "_sn", "_i21", "scale", "sp", "spm1", "epm1", "sk", "ek", "shift", "_f2", "g", "_j8", "_t7", "_cs2", "_sn2", "_i22", "_i23", "_i24", "_t8", "_i25", "_i26", "NeedlemanWunsch", "sequence1", "sequence2", "match_score", "mismatch_penalty", "gap_penalty", "diag", "up", "maxOf", "indices", "inProcessAlignments", "indexes", "layoutBase", "event", "callback", "l", "data", "require_cose_base", "__commonJSMin", "exports", "module", "__name", "root", "factory", "__WEBPACK_EXTERNAL_MODULE__551__", "__webpack_modules__", "__unused_webpack_exports", "__webpack_require__", "coseBase", "FDLayoutConstants", "CoSEConstants", "prop", "FDLayoutEdge", "CoSEEdge", "source", "target", "vEdge", "LGraph", "CoSEGraph", "parent", "graphMgr", "vGraph", "LGraphManager", "CoSEGraphManager", "layout", "FDLayout", "CoSENode", "ConstraintHandler", "LayoutConstants", "Point", "PointD", "DimensionD", "Layout", "Integer", "IGeometry", "Transform", "LinkedList", "CoSELayout", "gm", "vNode", "createBendsAsNeeded", "allNodes", "intersection", "x", "forest", "gridUpdateAllowed", "forceToNodeSurroundingUpdate", "pData", "i", "rect", "id", "layoutEnded", "lNodes", "node", "self", "calculateCompoundWeight", "compoundNode", "nodes", "fixedNodeWeight", "nodeData", "nodeToDummyForVerticalAlignment", "nodeToDummyForHorizontalAlignment", "nodeId", "verticalAlignment", "horizontalAlignment", "array", "j", "constraint", "nodeIdLeft", "nodeIdRight", "nodeIdTop", "nodeIdBottom", "subGraphOnHorizontal", "subGraphOnVertical", "left", "right", "top", "bottom", "constructComponents", "graph", "fixedNodes", "components", "isFixed", "queue", "visited", "count", "value", "key", "currentNode", "neighbors", "neighbor", "resultOnHorizontal", "resultOnVertical", "fixedNode", "allVerticalAlignments", "totalDisplacementX", "averageDisplacementX", "allHorizontalAlignments", "totalDisplacementY", "averageDisplacementY", "displacement", "diff", "component", "sum", "actualNodes", "averageDisplacement", "nodeList", "graphs", "size", "edges", "edge", "edgeList", "k", "multiEdge", "currentStartingPoint", "numberOfColumns", "height", "currentY", "currentX", "point", "tree", "centerNode", "startingPoint", "radialSep", "bounds", "transform", "bottomRight", "parentOfNode", "startAngle", "endAngle", "distance", "radialSeparation", "halfInterval", "nodeAngle", "teta", "cos_teta", "x_", "y_", "neighborEdges", "childCount", "branchCount", "incEdgesCount", "startIndex", "temp", "index", "stepAngle", "currentNeighbor", "childStartAngle", "childEndAngle", "maxDiagonal", "diagonal", "tempMemberGroups", "zeroDegree", "p_id", "dummyCompoundId", "dummyCompound", "dummyParentGraph", "parentGraph", "childGraphMap", "idToNode", "tiledZeroDegreePack", "width", "lCompoundNode", "horizontalMargin", "verticalMargin", "labelMarginLeft", "labelMarginTop", "tiledPack", "childGraph", "children", "theChild", "degree", "child", "organization", "y", "compoundHorizontalMargin", "compoundVerticalMargin", "compoundLabelMarginLeft", "compoundLabelMarginTop", "row", "maxHeight", "lnode", "minWidth", "horizontalOrg", "verticalOrg", "horizontalRatio", "verticalRatio", "bestOrg", "ratio", "members", "favorHorizontalDim", "verticalPadding", "horizontalPadding", "membersSize", "totalWidth", "totalHeight", "maxWidth", "averageWidth", "averageHeight", "delta", "horizontalCountDouble", "horizontalCount", "idealWidth", "tilingCompareBy", "getNodeArea", "n", "areaCompareFcn", "n1", "n2", "cmpBy", "sumCenterX", "sumCenterY", "lNode", "rowIndex", "minCompoundSize", "secondDimension", "w", "h", "extraHeight", "r", "min", "max", "extraWidth", "lastRowIndex", "lastRowWidth", "sri", "hDiff", "add_to_row_ratio", "add_new_row_ratio", "longest", "last", "prevTotal", "finalTotal", "prunedNodesAll", "containsLeaf", "prunedNodesInStepTemp", "otherEnd", "relativePosition", "prunedNodesInStep", "lengthOfPrunedNodesInStep", "gridForPrunedNode", "nodeToConnect", "prunedNode", "startGridX", "finishGridX", "startGridY", "finishGridY", "upNodeCount", "downNodeCount", "rightNodeCount", "leftNodeCount", "controlRegions", "minCount", "minIndex", "random", "FDLayoutNode", "IMath", "loc", "dX", "dY", "pred1", "next", "processed", "_toConsumableArray", "arr", "arr2", "Matrix", "SVD", "constraints", "idToNodeMap", "nodeIndexes", "xCoords", "yCoords", "calculatePositionDiff", "pos1", "pos2", "calculateAvgPosition", "nodeIdSet", "xPosSum", "yPosSum", "findAppropriatePositionForRelativePlacement", "direction", "dummyPositions", "componentSources", "setUnion", "setA", "setB", "union", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "elem", "err", "inDegrees", "adjacent", "positionMap", "pastMap", "fixedIds", "position", "fixedId", "_position", "_loop", "fixedPosition", "sinkNodes", "_components", "isFixedComponent", "_iteratorNormalCompletion2", "_didIteratorError2", "_iteratorError2", "_iterator2", "_step2", "isExist", "existAt", "ele", "minBefore", "minAfter", "maxBefore", "maxAfter", "_iteratorNormalCompletion3", "_didIteratorError3", "_iteratorError3", "_iterator3", "_step3", "posBefore", "posAfter", "_iteratorNormalCompletion4", "_didIteratorError4", "_iteratorError4", "_iterator4", "_step4", "_nodeId", "applyReflectionForRelativePlacement", "relativePlacementConstraints", "reflectOnY", "notReflectOnY", "reflectOnX", "notReflectOnX", "_i", "_i2", "_i3", "findComponents", "_currentNode", "dagToUndirected", "dag", "undirected", "dagToReversed", "reversed", "targetMatrix", "sourceMatrix", "standardTransformation", "reflectionType", "dagUndirected", "verticalAlign", "_loop2", "_i4", "alignmentSet", "xPos", "horizontalAlign", "_loop3", "_i5", "yPos", "largestComponentSize", "largestComponentIndex", "_i6", "constraintsInlargestComponent", "positionMapHorizontal", "positionMapVertical", "transformationMatrix", "targetMatrixTranspose", "sourceMatrixTranspose", "_i7", "tempMatrix", "SVDResult", "_i8", "temp1", "temp2", "temp3", "translationAmount", "posInTheory", "posDesired", "posDiff", "xAlign", "_loop4", "_i9", "yAlign", "_loop5", "_i10", "dummyToNodeForVerticalAlignment", "dummyToNodeForHorizontalAlignment", "dummyPositionsForVerticalAlignment", "dummyPositionsForHorizontalAlignment", "fixedNodesOnHorizontal", "fixedNodesOnVertical", "_loop6", "_i11", "_loop7", "_i12", "dagOnHorizontal", "dagOnVertical", "_loop8", "sourceId", "targetNode", "_iteratorNormalCompletion5", "_didIteratorError5", "_iteratorError5", "_iterator5", "_step5", "undirectedOnHorizontal", "undirectedOnVertical", "componentsOnHorizontal", "componentsOnVertical", "reversedDagOnHorizontal", "reversedDagOnVertical", "componentSourcesOnHorizontal", "componentSourcesOnVertical", "_loop9", "_iteratorNormalCompletion6", "_didIteratorError6", "_iteratorError6", "_iterator6", "_step6", "_loop10", "_iteratorNormalCompletion7", "_didIteratorError7", "_iteratorError7", "_iterator7", "_step7", "_i13", "_node", "__webpack_module_cache__", "moduleId", "cachedModule", "__webpack_exports__", "require_cytoscape_fcose", "__commonJSMin", "exports", "module", "__name", "root", "factory", "__WEBPACK_EXTERNAL_MODULE__140__", "__webpack_modules__", "tgt", "_len", "srcs", "_key", "src", "k", "__unused_webpack_exports", "__webpack_require__", "_slicedToArray", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "LinkedList", "auxiliary", "nodes", "nodesMap", "roots", "ele", "parent", "cy", "eles", "topMostNodes", "dummyNodes", "queue", "visited", "visitedTopMostNodes", "currentNeighbor", "minDegreeNode", "minDegree", "isConnected", "count", "nodesConnectedToDummy", "components", "_loop", "cmpt", "currentNode", "childrenOfCurrentNode", "node", "_loop2", "neighborNodes", "neighborNode", "childrenOfNeighbor", "e", "temp", "originalCenter", "componentResult", "options", "minXCoord", "maxXCoord", "minYCoord", "maxYCoord", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "_ref", "_ref2", "key", "value", "cyNode", "nodeBB", "leftX", "rightX", "topY", "bottomY", "diffOnX", "diffOnY", "x", "y", "item", "_diffOnX", "_diffOnY", "parentNode", "xCoords", "yCoords", "nodeIndexes", "left", "right", "top", "bottom", "nodeLeft", "nodeRight", "nodeTop", "nodeBottom", "s", "boundingBox", "parentsWithoutChildren", "check", "child", "aux", "CoSELayout", "CoSENode", "PointD", "DimensionD", "LayoutConstants", "FDLayoutConstants", "CoSEConstants", "coseLayout", "spectralResult", "edges", "idToLNode", "isFn", "fn", "optFn", "opt", "processChildrenList", "children", "layout", "size", "theChild", "children_of_children", "theNode", "dimensions", "parentInfo", "theNewGraph", "processEdges", "gm", "idealLengthTotal", "edgeCount", "edge", "sourceNode", "targetNode", "e1", "processConstraints", "_createClass", "defineProperties", "target", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "assign", "_require", "spectralLayout", "_require2", "defaults", "Layout", "coseResult", "componentCenters", "constraintExist", "layUtil", "packingEnabled", "component", "toBeTiledNodes", "_xCoords", "_yCoords", "tempSpectralResult", "indexesToBeDeleted", "index", "_boundingBox", "componentsEvaluated", "subgraphs", "hiddenEles", "subgraph", "nodeIndex", "source", "sourceNodeIndex", "targetNodeIndex", "sourceCenter", "targetCenter", "_parentInfo", "shiftResult", "result", "newXCoords", "newYCoords", "_count", "nodeRectangle", "getPositions", "pos", "theId", "_pos", "_hiddenEles", "Matrix", "SVD", "parentNodes", "parentChildMap", "allNodesNeighborhood", "samplesColumn", "minDistancesColumn", "C", "PHI", "INV", "firstSample", "nodeSize", "infinity", "small", "piTol", "samplingType", "nodeSeparation", "sampleSize", "randomSampleCR", "sample", "flag", "BFS", "pivot", "samplingMethod", "path", "front", "back", "current", "distance", "max_dist", "max_ind", "neighbors", "_i2", "_i3", "allBFS", "_i4", "_i5", "_i6", "j", "_i7", "_i8", "_j", "SVDResult", "a_q", "a_u", "a_v", "max_s", "a_Sig", "powerIteration", "theta1", "theta2", "Y1", "Y2", "V1", "V2", "previous", "_i9", "_i10", "_i11", "_i12", "_i13", "min", "ele2", "eleIndex", "disconnectedId", "id", "_iteratorNormalCompletion2", "_didIteratorError2", "_iteratorError2", "_iterator2", "_step2", "_i14", "_i15", "iterator", "firstNode", "firstNodePos", "firstNodeWidth", "secondNode", "secondNodeWidth", "impl", "register", "cytoscape", "__webpack_module_cache__", "moduleId", "cachedModule", "__webpack_exports__", "ArchitectureDirectionName", "ArchitectureDirectionArrow", "__name", "scale", "ArchitectureDirectionArrowShift", "orig", "arrowSize", "_arrowSize", "getOppositeArchitectureDirection", "x", "isArchitectureDirectionX", "isArchitectureDirection", "temp", "isArchitectureDirectionY", "isArchitectureDirectionXY", "a", "b", "aX_bY", "aY_bX", "isArchitecturePairXY", "pair", "lhs", "rhs", "isValidArchitectureDirectionPair", "getArchitectureDirectionPair", "sourceDir", "targetDir", "shiftPositionByArchitectureDirectionPair", "y", "getArchitectureDirectionXYFactors", "getArchitectureDirectionAlignment", "isArchitectureService", "isArchitectureJunction", "edgeData", "edge", "nodeData", "node", "DEFAULT_ARCHITECTURE_CONFIG", "defaultConfig_default", "ArchitectureDB", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "__name", "clear", "id", "icon", "parent", "title", "iconText", "isArchitectureService", "isArchitectureJunction", "lhsId", "rhsId", "lhsDir", "rhsDir", "lhsInto", "rhsInto", "lhsGroup", "rhsGroup", "isArchitectureDirection", "lhsGroupId", "rhsGroupId", "edge", "groupAlignments", "adjList", "prevOuter", "service", "prevInner", "alignment", "getArchitectureDirectionAlignment", "pair", "getArchitectureDirectionPair", "firstId", "visited", "notVisited", "prev", "BFS", "startingId", "spatialMap", "queue", "adj", "posX", "posY", "dir", "shiftPositionByArchitectureDirectionPair", "spatialMaps", "element", "cleanAndMerge", "getConfig", "field", "populateDb", "__name", "ast", "db", "populateCommonDb", "group", "service", "edge", "parser", "input", "parse", "log", "ArchitectureDB", "getStyles", "__name", "options", "architectureStyles_default", "import_cytoscape_fcose", "wrapIcon", "__name", "icon", "architectureIcons", "unknownIcon", "drawEdges", "__name", "edgesEl", "cy", "db", "padding", "iconSize", "halfIconSize", "arrowSize", "halfArrowSize", "edge", "source", "sourceDir", "sourceArrow", "sourceGroup", "target", "targetDir", "targetArrow", "targetGroup", "label", "edgeData", "startX", "startY", "midX", "midY", "endX", "endY", "groupEdgeShift", "isArchitectureDirectionX", "g", "getEdgeId", "xShift", "ArchitectureDirectionArrowShift", "yShift", "isArchitectureDirectionY", "ArchitectureDirectionArrow", "axis", "isArchitectureDirectionXY", "width", "textElem", "createText", "getConfig", "pair", "getArchitectureDirectionPair", "isArchitecturePairXY", "bboxOrig", "x", "y", "getArchitectureDirectionXYFactors", "bboxNew", "drawGroups", "groupsEl", "groupIconSize", "fontSize", "node", "data", "nodeData", "h", "w", "x1", "y1", "groupsNode", "groupLabelContainer", "shiftedX1", "shiftedY1", "bkgElem", "getIconSVG", "architectureIcons", "drawServices", "elem", "services", "config", "service", "serviceElem", "divElem", "sanitizeText", "height", "drawJunctions", "junctions", "junction", "junctionElem", "registerIconPacks", "architectureIcons", "cytoscape", "fcose", "addServices", "services", "cy", "db", "service", "__name", "addJunctions", "junctions", "junction", "positionNodes", "node", "data", "nodeData", "addGroups", "groups", "group", "addEdges", "edges", "parsedEdge", "lhsId", "rhsId", "lhsInto", "lhsGroup", "rhsInto", "lhsDir", "rhsDir", "rhsGroup", "title", "edgeType", "isArchitectureDirectionXY", "edge", "getAlignments", "spatialMaps", "groupAlignments", "flattenAlignments", "alignmentObj", "alignmentDir", "prev", "dir", "alignments", "cnt", "arr", "i", "j", "aGroupId", "aNodeIds", "bGroupId", "bNodeIds", "keyA", "keyB", "spatialMap", "horizontalAlignments", "verticalAlignments", "id", "x", "y", "nodeGroup", "horizontal", "vertical", "prevHoriz", "prevVert", "horiz", "vert", "getRelativeConstraints", "relativeConstraints", "posToStr", "pos", "strToPos", "p", "invSpatialMap", "queue", "visited", "directions", "curr", "currId", "currPos", "shift", "newPos", "newId", "ArchitectureDirectionName", "getOppositeArchitectureDirection", "layoutArchitecture", "resolve", "renderEl", "select_default", "alignmentConstraint", "relativePlacementConstraint", "layout", "nodeA", "nodeB", "parentA", "parentB", "getSegmentWeights", "source", "target", "pointX", "pointY", "W", "D", "sX", "sY", "tX", "tY", "distAB", "delta1", "delta2", "sEP", "tEP", "sourceDir", "edgeData", "isArchitectureDirectionY", "weights", "distances", "e", "log", "draw", "text", "_version", "diagObj", "ds", "svg", "selectSvgElement", "edgesElem", "servicesElem", "groupElem", "drawServices", "drawJunctions", "drawEdges", "drawGroups", "setupGraphViewbox", "renderer", "diagram", "parser", "ArchitectureDB", "renderer", "architectureStyles_default"] + "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[\"layoutBase\"] = factory();\n\telse\n\t\troot[\"layoutBase\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 28);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LayoutConstants() {}\n\n/**\r\n * Layout Quality: 0:draft, 1:default, 2:proof\r\n */\nLayoutConstants.QUALITY = 1;\n\n/**\r\n * Default parameters\r\n */\nLayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false;\nLayoutConstants.DEFAULT_INCREMENTAL = false;\nLayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true;\nLayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false;\nLayoutConstants.DEFAULT_ANIMATION_PERIOD = 50;\nLayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false;\n\n// -----------------------------------------------------------------------------\n// Section: General other constants\n// -----------------------------------------------------------------------------\n/*\r\n * Margins of a graph to be applied on bouding rectangle of its contents. We\r\n * assume margins on all four sides to be uniform.\r\n */\nLayoutConstants.DEFAULT_GRAPH_MARGIN = 15;\n\n/*\r\n * Whether to consider labels in node dimensions or not\r\n */\nLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_SIZE = 40;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2;\n\n/*\r\n * Empty compound node size. When a compound node is empty, its both\r\n * dimensions should be of this value.\r\n */\nLayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40;\n\n/*\r\n * Minimum length that an edge should take during layout\r\n */\nLayoutConstants.MIN_EDGE_LENGTH = 1;\n\n/*\r\n * World boundaries that layout operates on\r\n */\nLayoutConstants.WORLD_BOUNDARY = 1000000;\n\n/*\r\n * World boundaries that random positioning can be performed with\r\n */\nLayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000;\n\n/*\r\n * Coordinates of the world center\r\n */\nLayoutConstants.WORLD_CENTER_X = 1200;\nLayoutConstants.WORLD_CENTER_Y = 900;\n\nmodule.exports = LayoutConstants;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction LEdge(source, target, vEdge) {\n LGraphObject.call(this, vEdge);\n\n this.isOverlapingSourceAndTarget = false;\n this.vGraphObject = vEdge;\n this.bendpoints = [];\n this.source = source;\n this.target = target;\n}\n\nLEdge.prototype = Object.create(LGraphObject.prototype);\n\nfor (var prop in LGraphObject) {\n LEdge[prop] = LGraphObject[prop];\n}\n\nLEdge.prototype.getSource = function () {\n return this.source;\n};\n\nLEdge.prototype.getTarget = function () {\n return this.target;\n};\n\nLEdge.prototype.isInterGraph = function () {\n return this.isInterGraph;\n};\n\nLEdge.prototype.getLength = function () {\n return this.length;\n};\n\nLEdge.prototype.isOverlapingSourceAndTarget = function () {\n return this.isOverlapingSourceAndTarget;\n};\n\nLEdge.prototype.getBendpoints = function () {\n return this.bendpoints;\n};\n\nLEdge.prototype.getLca = function () {\n return this.lca;\n};\n\nLEdge.prototype.getSourceInLca = function () {\n return this.sourceInLca;\n};\n\nLEdge.prototype.getTargetInLca = function () {\n return this.targetInLca;\n};\n\nLEdge.prototype.getOtherEnd = function (node) {\n if (this.source === node) {\n return this.target;\n } else if (this.target === node) {\n return this.source;\n } else {\n throw \"Node is not incident with this edge\";\n }\n};\n\nLEdge.prototype.getOtherEndInGraph = function (node, graph) {\n var otherEnd = this.getOtherEnd(node);\n var root = graph.getGraphManager().getRoot();\n\n while (true) {\n if (otherEnd.getOwner() == graph) {\n return otherEnd;\n }\n\n if (otherEnd.getOwner() == root) {\n break;\n }\n\n otherEnd = otherEnd.getOwner().getParent();\n }\n\n return null;\n};\n\nLEdge.prototype.updateLength = function () {\n var clipPointCoordinates = new Array(4);\n\n this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates);\n\n if (!this.isOverlapingSourceAndTarget) {\n this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2];\n this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3];\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n }\n};\n\nLEdge.prototype.updateLengthSimple = function () {\n this.lengthX = this.target.getCenterX() - this.source.getCenterX();\n this.lengthY = this.target.getCenterY() - this.source.getCenterY();\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n};\n\nmodule.exports = LEdge;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LGraphObject(vGraphObject) {\n this.vGraphObject = vGraphObject;\n}\n\nmodule.exports = LGraphObject;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar RectangleD = __webpack_require__(13);\nvar LayoutConstants = __webpack_require__(0);\nvar RandomSeed = __webpack_require__(16);\nvar PointD = __webpack_require__(5);\n\nfunction LNode(gm, loc, size, vNode) {\n //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode)\n if (size == null && vNode == null) {\n vNode = loc;\n }\n\n LGraphObject.call(this, vNode);\n\n //Alternative constructor 2 : LNode(Layout layout, Object vNode)\n if (gm.graphManager != null) gm = gm.graphManager;\n\n this.estimatedSize = Integer.MIN_VALUE;\n this.inclusionTreeDepth = Integer.MAX_VALUE;\n this.vGraphObject = vNode;\n this.edges = [];\n this.graphManager = gm;\n\n if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD();\n}\n\nLNode.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LNode[prop] = LGraphObject[prop];\n}\n\nLNode.prototype.getEdges = function () {\n return this.edges;\n};\n\nLNode.prototype.getChild = function () {\n return this.child;\n};\n\nLNode.prototype.getOwner = function () {\n // if (this.owner != null) {\n // if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) {\n // throw \"assert failed\";\n // }\n // }\n\n return this.owner;\n};\n\nLNode.prototype.getWidth = function () {\n return this.rect.width;\n};\n\nLNode.prototype.setWidth = function (width) {\n this.rect.width = width;\n};\n\nLNode.prototype.getHeight = function () {\n return this.rect.height;\n};\n\nLNode.prototype.setHeight = function (height) {\n this.rect.height = height;\n};\n\nLNode.prototype.getCenterX = function () {\n return this.rect.x + this.rect.width / 2;\n};\n\nLNode.prototype.getCenterY = function () {\n return this.rect.y + this.rect.height / 2;\n};\n\nLNode.prototype.getCenter = function () {\n return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2);\n};\n\nLNode.prototype.getLocation = function () {\n return new PointD(this.rect.x, this.rect.y);\n};\n\nLNode.prototype.getRect = function () {\n return this.rect;\n};\n\nLNode.prototype.getDiagonal = function () {\n return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height);\n};\n\n/**\n * This method returns half the diagonal length of this node.\n */\nLNode.prototype.getHalfTheDiagonal = function () {\n return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2;\n};\n\nLNode.prototype.setRect = function (upperLeft, dimension) {\n this.rect.x = upperLeft.x;\n this.rect.y = upperLeft.y;\n this.rect.width = dimension.width;\n this.rect.height = dimension.height;\n};\n\nLNode.prototype.setCenter = function (cx, cy) {\n this.rect.x = cx - this.rect.width / 2;\n this.rect.y = cy - this.rect.height / 2;\n};\n\nLNode.prototype.setLocation = function (x, y) {\n this.rect.x = x;\n this.rect.y = y;\n};\n\nLNode.prototype.moveBy = function (dx, dy) {\n this.rect.x += dx;\n this.rect.y += dy;\n};\n\nLNode.prototype.getEdgeListToNode = function (to) {\n var edgeList = [];\n var edge;\n var self = this;\n\n self.edges.forEach(function (edge) {\n\n if (edge.target == to) {\n if (edge.source != self) throw \"Incorrect edge source!\";\n\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getEdgesBetween = function (other) {\n var edgeList = [];\n var edge;\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (!(edge.source == self || edge.target == self)) throw \"Incorrect edge source and/or target\";\n\n if (edge.target == other || edge.source == other) {\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getNeighborsList = function () {\n var neighbors = new Set();\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (edge.source == self) {\n neighbors.add(edge.target);\n } else {\n if (edge.target != self) {\n throw \"Incorrect incidency!\";\n }\n\n neighbors.add(edge.source);\n }\n });\n\n return neighbors;\n};\n\nLNode.prototype.withChildren = function () {\n var withNeighborsList = new Set();\n var childNode;\n var children;\n\n withNeighborsList.add(this);\n\n if (this.child != null) {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n children = childNode.withChildren();\n children.forEach(function (node) {\n withNeighborsList.add(node);\n });\n }\n }\n\n return withNeighborsList;\n};\n\nLNode.prototype.getNoOfChildren = function () {\n var noOfChildren = 0;\n var childNode;\n\n if (this.child == null) {\n noOfChildren = 1;\n } else {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n\n noOfChildren += childNode.getNoOfChildren();\n }\n }\n\n if (noOfChildren == 0) {\n noOfChildren = 1;\n }\n return noOfChildren;\n};\n\nLNode.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLNode.prototype.calcEstimatedSize = function () {\n if (this.child == null) {\n return this.estimatedSize = (this.rect.width + this.rect.height) / 2;\n } else {\n this.estimatedSize = this.child.calcEstimatedSize();\n this.rect.width = this.estimatedSize;\n this.rect.height = this.estimatedSize;\n\n return this.estimatedSize;\n }\n};\n\nLNode.prototype.scatter = function () {\n var randomCenterX;\n var randomCenterY;\n\n var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX;\n\n var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY;\n\n this.rect.x = randomCenterX;\n this.rect.y = randomCenterY;\n};\n\nLNode.prototype.updateBounds = function () {\n if (this.getChild() == null) {\n throw \"assert failed\";\n }\n if (this.getChild().getNodes().length != 0) {\n // wrap the children nodes by re-arranging the boundaries\n var childGraph = this.getChild();\n childGraph.updateBounds(true);\n\n this.rect.x = childGraph.getLeft();\n this.rect.y = childGraph.getTop();\n\n this.setWidth(childGraph.getRight() - childGraph.getLeft());\n this.setHeight(childGraph.getBottom() - childGraph.getTop());\n\n // Update compound bounds considering its label properties \n if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = childGraph.getRight() - childGraph.getLeft();\n var height = childGraph.getBottom() - childGraph.getTop();\n\n if (this.labelWidth) {\n if (this.labelPosHorizontal == \"left\") {\n this.rect.x -= this.labelWidth;\n this.setWidth(width + this.labelWidth);\n } else if (this.labelPosHorizontal == \"center\" && this.labelWidth > width) {\n this.rect.x -= (this.labelWidth - width) / 2;\n this.setWidth(this.labelWidth);\n } else if (this.labelPosHorizontal == \"right\") {\n this.setWidth(width + this.labelWidth);\n }\n }\n\n if (this.labelHeight) {\n if (this.labelPosVertical == \"top\") {\n this.rect.y -= this.labelHeight;\n this.setHeight(height + this.labelHeight);\n } else if (this.labelPosVertical == \"center\" && this.labelHeight > height) {\n this.rect.y -= (this.labelHeight - height) / 2;\n this.setHeight(this.labelHeight);\n } else if (this.labelPosVertical == \"bottom\") {\n this.setHeight(height + this.labelHeight);\n }\n }\n }\n }\n};\n\nLNode.prototype.getInclusionTreeDepth = function () {\n if (this.inclusionTreeDepth == Integer.MAX_VALUE) {\n throw \"assert failed\";\n }\n return this.inclusionTreeDepth;\n};\n\nLNode.prototype.transform = function (trans) {\n var left = this.rect.x;\n\n if (left > LayoutConstants.WORLD_BOUNDARY) {\n left = LayoutConstants.WORLD_BOUNDARY;\n } else if (left < -LayoutConstants.WORLD_BOUNDARY) {\n left = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var top = this.rect.y;\n\n if (top > LayoutConstants.WORLD_BOUNDARY) {\n top = LayoutConstants.WORLD_BOUNDARY;\n } else if (top < -LayoutConstants.WORLD_BOUNDARY) {\n top = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var leftTop = new PointD(left, top);\n var vLeftTop = trans.inverseTransformPoint(leftTop);\n\n this.setLocation(vLeftTop.x, vLeftTop.y);\n};\n\nLNode.prototype.getLeft = function () {\n return this.rect.x;\n};\n\nLNode.prototype.getRight = function () {\n return this.rect.x + this.rect.width;\n};\n\nLNode.prototype.getTop = function () {\n return this.rect.y;\n};\n\nLNode.prototype.getBottom = function () {\n return this.rect.y + this.rect.height;\n};\n\nLNode.prototype.getParent = function () {\n if (this.owner == null) {\n return null;\n }\n\n return this.owner.getParent();\n};\n\nmodule.exports = LNode;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __webpack_require__(0);\n\nfunction FDLayoutConstants() {}\n\n//FDLayoutConstants inherits static props in LayoutConstants\nfor (var prop in LayoutConstants) {\n FDLayoutConstants[prop] = LayoutConstants[prop];\n}\n\nFDLayoutConstants.MAX_ITERATIONS = 2500;\n\nFDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\nFDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45;\nFDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0;\nFDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0;\nFDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5;\nFDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true;\nFDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true;\nFDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3;\nFDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33;\nFDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000;\nFDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3;\nFDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\nFDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100;\nFDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1;\nFDLayoutConstants.MIN_EDGE_LENGTH = 1;\nFDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10;\n\nmodule.exports = FDLayoutConstants;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction PointD(x, y) {\n if (x == null && y == null) {\n this.x = 0;\n this.y = 0;\n } else {\n this.x = x;\n this.y = y;\n }\n}\n\nPointD.prototype.getX = function () {\n return this.x;\n};\n\nPointD.prototype.getY = function () {\n return this.y;\n};\n\nPointD.prototype.setX = function (x) {\n this.x = x;\n};\n\nPointD.prototype.setY = function (y) {\n this.y = y;\n};\n\nPointD.prototype.getDifference = function (pt) {\n return new DimensionD(this.x - pt.x, this.y - pt.y);\n};\n\nPointD.prototype.getCopy = function () {\n return new PointD(this.x, this.y);\n};\n\nPointD.prototype.translate = function (dim) {\n this.x += dim.width;\n this.y += dim.height;\n return this;\n};\n\nmodule.exports = PointD;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(7);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar RectangleD = __webpack_require__(13);\nvar Point = __webpack_require__(12);\nvar LinkedList = __webpack_require__(11);\n\nfunction LGraph(parent, obj2, vGraph) {\n LGraphObject.call(this, vGraph);\n this.estimatedSize = Integer.MIN_VALUE;\n this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN;\n this.edges = [];\n this.nodes = [];\n this.isConnected = false;\n this.parent = parent;\n\n if (obj2 != null && obj2 instanceof LGraphManager) {\n this.graphManager = obj2;\n } else if (obj2 != null && obj2 instanceof Layout) {\n this.graphManager = obj2.graphManager;\n }\n}\n\nLGraph.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LGraph[prop] = LGraphObject[prop];\n}\n\nLGraph.prototype.getNodes = function () {\n return this.nodes;\n};\n\nLGraph.prototype.getEdges = function () {\n return this.edges;\n};\n\nLGraph.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLGraph.prototype.getParent = function () {\n return this.parent;\n};\n\nLGraph.prototype.getLeft = function () {\n return this.left;\n};\n\nLGraph.prototype.getRight = function () {\n return this.right;\n};\n\nLGraph.prototype.getTop = function () {\n return this.top;\n};\n\nLGraph.prototype.getBottom = function () {\n return this.bottom;\n};\n\nLGraph.prototype.isConnected = function () {\n return this.isConnected;\n};\n\nLGraph.prototype.add = function (obj1, sourceNode, targetNode) {\n if (sourceNode == null && targetNode == null) {\n var newNode = obj1;\n if (this.graphManager == null) {\n throw \"Graph has no graph mgr!\";\n }\n if (this.getNodes().indexOf(newNode) > -1) {\n throw \"Node already in graph!\";\n }\n newNode.owner = this;\n this.getNodes().push(newNode);\n\n return newNode;\n } else {\n var newEdge = obj1;\n if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) {\n throw \"Source or target not in graph!\";\n }\n\n if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) {\n throw \"Both owners must be this graph!\";\n }\n\n if (sourceNode.owner != targetNode.owner) {\n return null;\n }\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // set as intra-graph edge\n newEdge.isInterGraph = false;\n\n // add to graph edge list\n this.getEdges().push(newEdge);\n\n // add to incidency lists\n sourceNode.edges.push(newEdge);\n\n if (targetNode != sourceNode) {\n targetNode.edges.push(newEdge);\n }\n\n return newEdge;\n }\n};\n\nLGraph.prototype.remove = function (obj) {\n var node = obj;\n if (obj instanceof LNode) {\n if (node == null) {\n throw \"Node is null!\";\n }\n if (!(node.owner != null && node.owner == this)) {\n throw \"Owner graph is invalid!\";\n }\n if (this.graphManager == null) {\n throw \"Owner graph manager is invalid!\";\n }\n // remove incident edges first (make a copy to do it safely)\n var edgesToBeRemoved = node.edges.slice();\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n\n if (edge.isInterGraph) {\n this.graphManager.remove(edge);\n } else {\n edge.source.owner.remove(edge);\n }\n }\n\n // now the node itself\n var index = this.nodes.indexOf(node);\n if (index == -1) {\n throw \"Node not in owner node list!\";\n }\n\n this.nodes.splice(index, 1);\n } else if (obj instanceof LEdge) {\n var edge = obj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) {\n throw \"Source and/or target owner is invalid!\";\n }\n\n var sourceIndex = edge.source.edges.indexOf(edge);\n var targetIndex = edge.target.edges.indexOf(edge);\n if (!(sourceIndex > -1 && targetIndex > -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n edge.source.edges.splice(sourceIndex, 1);\n\n if (edge.target != edge.source) {\n edge.target.edges.splice(targetIndex, 1);\n }\n\n var index = edge.source.owner.getEdges().indexOf(edge);\n if (index == -1) {\n throw \"Not in owner's edge list!\";\n }\n\n edge.source.owner.getEdges().splice(index, 1);\n }\n};\n\nLGraph.prototype.updateLeftTop = function () {\n var top = Integer.MAX_VALUE;\n var left = Integer.MAX_VALUE;\n var nodeTop;\n var nodeLeft;\n var margin;\n\n var nodes = this.getNodes();\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeTop = lNode.getTop();\n nodeLeft = lNode.getLeft();\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n }\n\n // Do we have any nodes in this graph?\n if (top == Integer.MAX_VALUE) {\n return null;\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = left - margin;\n this.top = top - margin;\n\n // Apply the margins and return the result\n return new Point(this.left, this.top);\n};\n\nLGraph.prototype.updateBounds = function (recursive) {\n // calculate bounds\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n var margin;\n\n var nodes = this.nodes;\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n\n if (recursive && lNode.child != null) {\n lNode.updateBounds();\n }\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n if (left == Integer.MAX_VALUE) {\n this.left = this.parent.getLeft();\n this.right = this.parent.getRight();\n this.top = this.parent.getTop();\n this.bottom = this.parent.getBottom();\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = boundingRect.x - margin;\n this.right = boundingRect.x + boundingRect.width + margin;\n this.top = boundingRect.y - margin;\n this.bottom = boundingRect.y + boundingRect.height + margin;\n};\n\nLGraph.calculateBounds = function (nodes) {\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n\n return boundingRect;\n};\n\nLGraph.prototype.getInclusionTreeDepth = function () {\n if (this == this.graphManager.getRoot()) {\n return 1;\n } else {\n return this.parent.getInclusionTreeDepth();\n }\n};\n\nLGraph.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLGraph.prototype.calcEstimatedSize = function () {\n var size = 0;\n var nodes = this.nodes;\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n size += lNode.calcEstimatedSize();\n }\n\n if (size == 0) {\n this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE;\n } else {\n this.estimatedSize = size / Math.sqrt(this.nodes.length);\n }\n\n return this.estimatedSize;\n};\n\nLGraph.prototype.updateConnected = function () {\n var self = this;\n if (this.nodes.length == 0) {\n this.isConnected = true;\n return;\n }\n\n var queue = new LinkedList();\n var visited = new Set();\n var currentNode = this.nodes[0];\n var neighborEdges;\n var currentNeighbor;\n var childrenOfNode = currentNode.withChildren();\n childrenOfNode.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n\n while (queue.length !== 0) {\n currentNode = queue.shift();\n\n // Traverse all neighbors of this node\n neighborEdges = currentNode.getEdges();\n var size = neighborEdges.length;\n for (var i = 0; i < size; i++) {\n var neighborEdge = neighborEdges[i];\n currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this);\n\n // Add unvisited neighbors to the list to visit\n if (currentNeighbor != null && !visited.has(currentNeighbor)) {\n var childrenOfNeighbor = currentNeighbor.withChildren();\n\n childrenOfNeighbor.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n }\n }\n }\n\n this.isConnected = false;\n\n if (visited.size >= this.nodes.length) {\n var noOfVisitedInThisGraph = 0;\n\n visited.forEach(function (visitedNode) {\n if (visitedNode.owner == self) {\n noOfVisitedInThisGraph++;\n }\n });\n\n if (noOfVisitedInThisGraph == this.nodes.length) {\n this.isConnected = true;\n }\n }\n};\n\nmodule.exports = LGraph;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph;\nvar LEdge = __webpack_require__(1);\n\nfunction LGraphManager(layout) {\n LGraph = __webpack_require__(6); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now.\n this.layout = layout;\n\n this.graphs = [];\n this.edges = [];\n}\n\nLGraphManager.prototype.addRoot = function () {\n var ngraph = this.layout.newGraph();\n var nnode = this.layout.newNode(null);\n var root = this.add(ngraph, nnode);\n this.setRootGraph(root);\n return this.rootGraph;\n};\n\nLGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) {\n //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge\n if (newEdge == null && sourceNode == null && targetNode == null) {\n if (newGraph == null) {\n throw \"Graph is null!\";\n }\n if (parentNode == null) {\n throw \"Parent node is null!\";\n }\n if (this.graphs.indexOf(newGraph) > -1) {\n throw \"Graph already in this graph mgr!\";\n }\n\n this.graphs.push(newGraph);\n\n if (newGraph.parent != null) {\n throw \"Already has a parent!\";\n }\n if (parentNode.child != null) {\n throw \"Already has a child!\";\n }\n\n newGraph.parent = parentNode;\n parentNode.child = newGraph;\n\n return newGraph;\n } else {\n //change the order of the parameters\n targetNode = newEdge;\n sourceNode = parentNode;\n newEdge = newGraph;\n var sourceGraph = sourceNode.getOwner();\n var targetGraph = targetNode.getOwner();\n\n if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) {\n throw \"Source not in this graph mgr!\";\n }\n if (!(targetGraph != null && targetGraph.getGraphManager() == this)) {\n throw \"Target not in this graph mgr!\";\n }\n\n if (sourceGraph == targetGraph) {\n newEdge.isInterGraph = false;\n return sourceGraph.add(newEdge, sourceNode, targetNode);\n } else {\n newEdge.isInterGraph = true;\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // add edge to inter-graph edge list\n if (this.edges.indexOf(newEdge) > -1) {\n throw \"Edge already in inter-graph edge list!\";\n }\n\n this.edges.push(newEdge);\n\n // add edge to source and target incidency lists\n if (!(newEdge.source != null && newEdge.target != null)) {\n throw \"Edge source and/or target is null!\";\n }\n\n if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) {\n throw \"Edge already in source and/or target incidency list!\";\n }\n\n newEdge.source.edges.push(newEdge);\n newEdge.target.edges.push(newEdge);\n\n return newEdge;\n }\n }\n};\n\nLGraphManager.prototype.remove = function (lObj) {\n if (lObj instanceof LGraph) {\n var graph = lObj;\n if (graph.getGraphManager() != this) {\n throw \"Graph not in this graph mgr\";\n }\n if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) {\n throw \"Invalid parent node!\";\n }\n\n // first the edges (make a copy to do it safely)\n var edgesToBeRemoved = [];\n\n edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges());\n\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n graph.remove(edge);\n }\n\n // then the nodes (make a copy to do it safely)\n var nodesToBeRemoved = [];\n\n nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes());\n\n var node;\n s = nodesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n node = nodesToBeRemoved[i];\n graph.remove(node);\n }\n\n // check if graph is the root\n if (graph == this.rootGraph) {\n this.setRootGraph(null);\n }\n\n // now remove the graph itself\n var index = this.graphs.indexOf(graph);\n this.graphs.splice(index, 1);\n\n // also reset the parent of the graph\n graph.parent = null;\n } else if (lObj instanceof LEdge) {\n edge = lObj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!edge.isInterGraph) {\n throw \"Not an inter-graph edge!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n\n // remove edge from source and target nodes' incidency lists\n\n if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n var index = edge.source.edges.indexOf(edge);\n edge.source.edges.splice(index, 1);\n index = edge.target.edges.indexOf(edge);\n edge.target.edges.splice(index, 1);\n\n // remove edge from owner graph manager's inter-graph edge list\n\n if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) {\n throw \"Edge owner graph or owner graph manager is null!\";\n }\n if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) {\n throw \"Not in owner graph manager's edge list!\";\n }\n\n var index = edge.source.owner.getGraphManager().edges.indexOf(edge);\n edge.source.owner.getGraphManager().edges.splice(index, 1);\n }\n};\n\nLGraphManager.prototype.updateBounds = function () {\n this.rootGraph.updateBounds(true);\n};\n\nLGraphManager.prototype.getGraphs = function () {\n return this.graphs;\n};\n\nLGraphManager.prototype.getAllNodes = function () {\n if (this.allNodes == null) {\n var nodeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < s; i++) {\n nodeList = nodeList.concat(graphs[i].getNodes());\n }\n this.allNodes = nodeList;\n }\n return this.allNodes;\n};\n\nLGraphManager.prototype.resetAllNodes = function () {\n this.allNodes = null;\n};\n\nLGraphManager.prototype.resetAllEdges = function () {\n this.allEdges = null;\n};\n\nLGraphManager.prototype.resetAllNodesToApplyGravitation = function () {\n this.allNodesToApplyGravitation = null;\n};\n\nLGraphManager.prototype.getAllEdges = function () {\n if (this.allEdges == null) {\n var edgeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < graphs.length; i++) {\n edgeList = edgeList.concat(graphs[i].getEdges());\n }\n\n edgeList = edgeList.concat(this.edges);\n\n this.allEdges = edgeList;\n }\n return this.allEdges;\n};\n\nLGraphManager.prototype.getAllNodesToApplyGravitation = function () {\n return this.allNodesToApplyGravitation;\n};\n\nLGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) {\n if (this.allNodesToApplyGravitation != null) {\n throw \"assert failed\";\n }\n\n this.allNodesToApplyGravitation = nodeList;\n};\n\nLGraphManager.prototype.getRoot = function () {\n return this.rootGraph;\n};\n\nLGraphManager.prototype.setRootGraph = function (graph) {\n if (graph.getGraphManager() != this) {\n throw \"Root not in this graph mgr!\";\n }\n\n this.rootGraph = graph;\n // root graph must have a root node associated with it for convenience\n if (graph.parent == null) {\n graph.parent = this.layout.newNode(\"Root node\");\n }\n};\n\nLGraphManager.prototype.getLayout = function () {\n return this.layout;\n};\n\nLGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) {\n if (!(firstNode != null && secondNode != null)) {\n throw \"assert failed\";\n }\n\n if (firstNode == secondNode) {\n return true;\n }\n // Is second node an ancestor of the first one?\n var ownerGraph = firstNode.getOwner();\n var parentNode;\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == secondNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n // Is first node an ancestor of the second one?\n ownerGraph = secondNode.getOwner();\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == firstNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n\n return false;\n};\n\nLGraphManager.prototype.calcLowestCommonAncestors = function () {\n var edge;\n var sourceNode;\n var targetNode;\n var sourceAncestorGraph;\n var targetAncestorGraph;\n\n var edges = this.getAllEdges();\n var s = edges.length;\n for (var i = 0; i < s; i++) {\n edge = edges[i];\n\n sourceNode = edge.source;\n targetNode = edge.target;\n edge.lca = null;\n edge.sourceInLca = sourceNode;\n edge.targetInLca = targetNode;\n\n if (sourceNode == targetNode) {\n edge.lca = sourceNode.getOwner();\n continue;\n }\n\n sourceAncestorGraph = sourceNode.getOwner();\n\n while (edge.lca == null) {\n edge.targetInLca = targetNode;\n targetAncestorGraph = targetNode.getOwner();\n\n while (edge.lca == null) {\n if (targetAncestorGraph == sourceAncestorGraph) {\n edge.lca = targetAncestorGraph;\n break;\n }\n\n if (targetAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca != null) {\n throw \"assert failed\";\n }\n edge.targetInLca = targetAncestorGraph.getParent();\n targetAncestorGraph = edge.targetInLca.getOwner();\n }\n\n if (sourceAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca == null) {\n edge.sourceInLca = sourceAncestorGraph.getParent();\n sourceAncestorGraph = edge.sourceInLca.getOwner();\n }\n }\n\n if (edge.lca == null) {\n throw \"assert failed\";\n }\n }\n};\n\nLGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) {\n if (firstNode == secondNode) {\n return firstNode.getOwner();\n }\n var firstOwnerGraph = firstNode.getOwner();\n\n do {\n if (firstOwnerGraph == null) {\n break;\n }\n var secondOwnerGraph = secondNode.getOwner();\n\n do {\n if (secondOwnerGraph == null) {\n break;\n }\n\n if (secondOwnerGraph == firstOwnerGraph) {\n return secondOwnerGraph;\n }\n secondOwnerGraph = secondOwnerGraph.getParent().getOwner();\n } while (true);\n\n firstOwnerGraph = firstOwnerGraph.getParent().getOwner();\n } while (true);\n\n return firstOwnerGraph;\n};\n\nLGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) {\n if (graph == null && depth == null) {\n graph = this.rootGraph;\n depth = 1;\n }\n var node;\n\n var nodes = graph.getNodes();\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n node = nodes[i];\n node.inclusionTreeDepth = depth;\n\n if (node.child != null) {\n this.calcInclusionTreeDepths(node.child, depth + 1);\n }\n }\n};\n\nLGraphManager.prototype.includesInvalidEdge = function () {\n var edge;\n var edgesToRemove = [];\n\n var s = this.edges.length;\n for (var i = 0; i < s; i++) {\n edge = this.edges[i];\n\n if (this.isOneAncestorOfOther(edge.source, edge.target)) {\n edgesToRemove.push(edge);\n }\n }\n\n // Remove invalid edges from graph manager\n for (var i = 0; i < edgesToRemove.length; i++) {\n this.remove(edgesToRemove[i]);\n }\n\n // Invalid edges are cleared, so return false\n return false;\n};\n\nmodule.exports = LGraphManager;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * This class maintains a list of static geometry related utility methods.\n *\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar Point = __webpack_require__(12);\n\nfunction IGeometry() {}\n\n/**\n * This method calculates *half* the amount in x and y directions of the two\n * input rectangles needed to separate them keeping their respective\n * positioning, and returns the result in the input array. An input\n * separation buffer added to the amount in both directions. We assume that\n * the two rectangles do intersect.\n */\nIGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) {\n if (!rectA.intersects(rectB)) {\n throw \"assert failed\";\n }\n\n var directions = new Array(2);\n\n this.decideDirectionsForOverlappingNodes(rectA, rectB, directions);\n\n overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x);\n overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y);\n\n // update the overlapping amounts for the following cases:\n if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) {\n /* Case x.1:\n *\n * rectA\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectB\n */\n overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight());\n } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) {\n /* Case x.2:\n *\n * rectB\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectA\n */\n overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight());\n }\n if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) {\n /* Case y.1:\n * ________ rectA\n * |\n * |\n * ______|____ rectB\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom());\n } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) {\n /* Case y.2:\n * ________ rectB\n * |\n * |\n * ______|____ rectA\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom());\n }\n\n // find slope of the line passes two centers\n var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX()));\n // if centers are overlapped\n if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) {\n // assume the slope is 1 (45 degree)\n slope = 1.0;\n }\n\n var moveByY = slope * overlapAmount[0];\n var moveByX = overlapAmount[1] / slope;\n if (overlapAmount[0] < moveByX) {\n moveByX = overlapAmount[0];\n } else {\n moveByY = overlapAmount[1];\n }\n // return half the amount so that if each rectangle is moved by these\n // amounts in opposite directions, overlap will be resolved\n overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer);\n overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer);\n};\n\n/**\n * This method decides the separation direction of overlapping nodes\n *\n * if directions[0] = -1, then rectA goes left\n * if directions[0] = 1, then rectA goes right\n * if directions[1] = -1, then rectA goes up\n * if directions[1] = 1, then rectA goes down\n */\nIGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) {\n if (rectA.getCenterX() < rectB.getCenterX()) {\n directions[0] = -1;\n } else {\n directions[0] = 1;\n }\n\n if (rectA.getCenterY() < rectB.getCenterY()) {\n directions[1] = -1;\n } else {\n directions[1] = 1;\n }\n};\n\n/**\n * This method calculates the intersection (clipping) points of the two\n * input rectangles with line segment defined by the centers of these two\n * rectangles. The clipping points are saved in the input double array and\n * whether or not the two rectangles overlap is returned.\n */\nIGeometry.getIntersection2 = function (rectA, rectB, result) {\n //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB\n var p1x = rectA.getCenterX();\n var p1y = rectA.getCenterY();\n var p2x = rectB.getCenterX();\n var p2y = rectB.getCenterY();\n\n //if two rectangles intersect, then clipping points are centers\n if (rectA.intersects(rectB)) {\n result[0] = p1x;\n result[1] = p1y;\n result[2] = p2x;\n result[3] = p2y;\n return true;\n }\n //variables for rectA\n var topLeftAx = rectA.getX();\n var topLeftAy = rectA.getY();\n var topRightAx = rectA.getRight();\n var bottomLeftAx = rectA.getX();\n var bottomLeftAy = rectA.getBottom();\n var bottomRightAx = rectA.getRight();\n var halfWidthA = rectA.getWidthHalf();\n var halfHeightA = rectA.getHeightHalf();\n //variables for rectB\n var topLeftBx = rectB.getX();\n var topLeftBy = rectB.getY();\n var topRightBx = rectB.getRight();\n var bottomLeftBx = rectB.getX();\n var bottomLeftBy = rectB.getBottom();\n var bottomRightBx = rectB.getRight();\n var halfWidthB = rectB.getWidthHalf();\n var halfHeightB = rectB.getHeightHalf();\n\n //flag whether clipping points are found\n var clipPointAFound = false;\n var clipPointBFound = false;\n\n // line is vertical\n if (p1x === p2x) {\n if (p1y > p2y) {\n result[0] = p1x;\n result[1] = topLeftAy;\n result[2] = p2x;\n result[3] = bottomLeftBy;\n return false;\n } else if (p1y < p2y) {\n result[0] = p1x;\n result[1] = bottomLeftAy;\n result[2] = p2x;\n result[3] = topLeftBy;\n return false;\n } else {\n //not line, return null;\n }\n }\n // line is horizontal\n else if (p1y === p2y) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = p1y;\n result[2] = topRightBx;\n result[3] = p2y;\n return false;\n } else if (p1x < p2x) {\n result[0] = topRightAx;\n result[1] = p1y;\n result[2] = topLeftBx;\n result[3] = p2y;\n return false;\n } else {\n //not valid line, return null;\n }\n } else {\n //slopes of rectA's and rectB's diagonals\n var slopeA = rectA.height / rectA.width;\n var slopeB = rectB.height / rectB.width;\n\n //slope of line between center of rectA and center of rectB\n var slopePrime = (p2y - p1y) / (p2x - p1x);\n var cardinalDirectionA = void 0;\n var cardinalDirectionB = void 0;\n var tempPointAx = void 0;\n var tempPointAy = void 0;\n var tempPointBx = void 0;\n var tempPointBy = void 0;\n\n //determine whether clipping point is the corner of nodeA\n if (-slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = bottomLeftAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = topRightAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n }\n } else if (slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = bottomRightAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n }\n }\n\n //determine whether clipping point is the corner of nodeB\n if (-slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = bottomLeftBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = topRightBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n }\n } else if (slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = topLeftBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = bottomRightBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n }\n }\n\n //if both clipping points are corners\n if (clipPointAFound && clipPointBFound) {\n return false;\n }\n\n //determine Cardinal Direction of rectangles\n if (p1x > p2x) {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2);\n } else {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1);\n }\n } else {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3);\n } else {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4);\n }\n }\n //calculate clipping Point if it is not found before\n if (!clipPointAFound) {\n switch (cardinalDirectionA) {\n case 1:\n tempPointAy = topLeftAy;\n tempPointAx = p1x + -halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 2:\n tempPointAx = bottomRightAx;\n tempPointAy = p1y + halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 3:\n tempPointAy = bottomLeftAy;\n tempPointAx = p1x + halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 4:\n tempPointAx = bottomLeftAx;\n tempPointAy = p1y + -halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n }\n }\n if (!clipPointBFound) {\n switch (cardinalDirectionB) {\n case 1:\n tempPointBy = topLeftBy;\n tempPointBx = p2x + -halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 2:\n tempPointBx = bottomRightBx;\n tempPointBy = p2y + halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 3:\n tempPointBy = bottomLeftBy;\n tempPointBx = p2x + halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 4:\n tempPointBx = bottomLeftBx;\n tempPointBy = p2y + -halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n }\n }\n }\n return false;\n};\n\n/**\n * This method returns in which cardinal direction does input point stays\n * 1: North\n * 2: East\n * 3: South\n * 4: West\n */\nIGeometry.getCardinalDirection = function (slope, slopePrime, line) {\n if (slope > slopePrime) {\n return line;\n } else {\n return 1 + line % 4;\n }\n};\n\n/**\n * This method calculates the intersection of the two lines defined by\n * point pairs (s1,s2) and (f1,f2).\n */\nIGeometry.getIntersection = function (s1, s2, f1, f2) {\n if (f2 == null) {\n return this.getIntersection2(s1, s2, f1);\n }\n\n var x1 = s1.x;\n var y1 = s1.y;\n var x2 = s2.x;\n var y2 = s2.y;\n var x3 = f1.x;\n var y3 = f1.y;\n var x4 = f2.x;\n var y4 = f2.y;\n var x = void 0,\n y = void 0; // intersection point\n var a1 = void 0,\n a2 = void 0,\n b1 = void 0,\n b2 = void 0,\n c1 = void 0,\n c2 = void 0; // coefficients of line eqns.\n var denom = void 0;\n\n a1 = y2 - y1;\n b1 = x1 - x2;\n c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 }\n\n a2 = y4 - y3;\n b2 = x3 - x4;\n c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 }\n\n denom = a1 * b2 - a2 * b1;\n\n if (denom === 0) {\n return null;\n }\n\n x = (b1 * c2 - b2 * c1) / denom;\n y = (a2 * c1 - a1 * c2) / denom;\n\n return new Point(x, y);\n};\n\n/**\n * This method finds and returns the angle of the vector from the + x-axis\n * in clockwise direction (compatible w/ Java coordinate system!).\n */\nIGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) {\n var C_angle = void 0;\n\n if (Cx !== Nx) {\n C_angle = Math.atan((Ny - Cy) / (Nx - Cx));\n\n if (Nx < Cx) {\n C_angle += Math.PI;\n } else if (Ny < Cy) {\n C_angle += this.TWO_PI;\n }\n } else if (Ny < Cy) {\n C_angle = this.ONE_AND_HALF_PI; // 270 degrees\n } else {\n C_angle = this.HALF_PI; // 90 degrees\n }\n\n return C_angle;\n};\n\n/**\n * This method checks whether the given two line segments (one with point\n * p1 and p2, the other with point p3 and p4) intersect at a point other\n * than these points.\n */\nIGeometry.doIntersect = function (p1, p2, p3, p4) {\n var a = p1.x;\n var b = p1.y;\n var c = p2.x;\n var d = p2.y;\n var p = p3.x;\n var q = p3.y;\n var r = p4.x;\n var s = p4.y;\n var det = (c - a) * (s - q) - (r - p) * (d - b);\n\n if (det === 0) {\n return false;\n } else {\n var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det;\n var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det;\n return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1;\n }\n};\n\n/**\n * This method checks and calculates the intersection of \n * a line segment and a circle.\n */\nIGeometry.findCircleLineIntersections = function (Ex, Ey, Lx, Ly, Cx, Cy, r) {\n\n // E is the starting point of the ray,\n // L is the end point of the ray,\n // C is the center of sphere you're testing against\n // r is the radius of that sphere\n\n // Compute:\n // d = L - E ( Direction vector of ray, from start to end )\n // f = E - C ( Vector from center sphere to ray start )\n\n // Then the intersection is found by..\n // P = E + t * d\n // This is a parametric equation:\n // Px = Ex + tdx\n // Py = Ey + tdy\n\n // get a, b, c values\n var a = (Lx - Ex) * (Lx - Ex) + (Ly - Ey) * (Ly - Ey);\n var b = 2 * ((Ex - Cx) * (Lx - Ex) + (Ey - Cy) * (Ly - Ey));\n var c = (Ex - Cx) * (Ex - Cx) + (Ey - Cy) * (Ey - Cy) - r * r;\n\n // get discriminant\n var disc = b * b - 4 * a * c;\n if (disc >= 0) {\n // insert into quadratic formula\n var t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a);\n var t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / (2 * a);\n var intersections = null;\n if (t1 >= 0 && t1 <= 1) {\n // t1 is the intersection, and it's closer than t2\n // (since t1 uses -b - discriminant)\n // Impale, Poke\n return [t1];\n }\n\n // here t1 didn't intersect so we are either started\n // inside the sphere or completely past it\n if (t2 >= 0 && t2 <= 1) {\n // ExitWound\n return [t2];\n }\n\n return intersections;\n } else return null;\n};\n\n// -----------------------------------------------------------------------------\n// Section: Class Constants\n// -----------------------------------------------------------------------------\n/**\n * Some useful pre-calculated constants\n */\nIGeometry.HALF_PI = 0.5 * Math.PI;\nIGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI;\nIGeometry.TWO_PI = 2.0 * Math.PI;\nIGeometry.THREE_PI = 3.0 * Math.PI;\n\nmodule.exports = IGeometry;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction IMath() {}\n\n/**\n * This method returns the sign of the input value.\n */\nIMath.sign = function (value) {\n if (value > 0) {\n return 1;\n } else if (value < 0) {\n return -1;\n } else {\n return 0;\n }\n};\n\nIMath.floor = function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n};\n\nIMath.ceil = function (value) {\n return value < 0 ? Math.floor(value) : Math.ceil(value);\n};\n\nmodule.exports = IMath;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Integer() {}\n\nInteger.MAX_VALUE = 2147483647;\nInteger.MIN_VALUE = -2147483648;\n\nmodule.exports = Integer;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar nodeFrom = function nodeFrom(value) {\n return { value: value, next: null, prev: null };\n};\n\nvar add = function add(prev, node, next, list) {\n if (prev !== null) {\n prev.next = node;\n } else {\n list.head = node;\n }\n\n if (next !== null) {\n next.prev = node;\n } else {\n list.tail = node;\n }\n\n node.prev = prev;\n node.next = next;\n\n list.length++;\n\n return node;\n};\n\nvar _remove = function _remove(node, list) {\n var prev = node.prev,\n next = node.next;\n\n\n if (prev !== null) {\n prev.next = next;\n } else {\n list.head = next;\n }\n\n if (next !== null) {\n next.prev = prev;\n } else {\n list.tail = prev;\n }\n\n node.prev = node.next = null;\n\n list.length--;\n\n return node;\n};\n\nvar LinkedList = function () {\n function LinkedList(vals) {\n var _this = this;\n\n _classCallCheck(this, LinkedList);\n\n this.length = 0;\n this.head = null;\n this.tail = null;\n\n if (vals != null) {\n vals.forEach(function (v) {\n return _this.push(v);\n });\n }\n }\n\n _createClass(LinkedList, [{\n key: \"size\",\n value: function size() {\n return this.length;\n }\n }, {\n key: \"insertBefore\",\n value: function insertBefore(val, otherNode) {\n return add(otherNode.prev, nodeFrom(val), otherNode, this);\n }\n }, {\n key: \"insertAfter\",\n value: function insertAfter(val, otherNode) {\n return add(otherNode, nodeFrom(val), otherNode.next, this);\n }\n }, {\n key: \"insertNodeBefore\",\n value: function insertNodeBefore(newNode, otherNode) {\n return add(otherNode.prev, newNode, otherNode, this);\n }\n }, {\n key: \"insertNodeAfter\",\n value: function insertNodeAfter(newNode, otherNode) {\n return add(otherNode, newNode, otherNode.next, this);\n }\n }, {\n key: \"push\",\n value: function push(val) {\n return add(this.tail, nodeFrom(val), null, this);\n }\n }, {\n key: \"unshift\",\n value: function unshift(val) {\n return add(null, nodeFrom(val), this.head, this);\n }\n }, {\n key: \"remove\",\n value: function remove(node) {\n return _remove(node, this);\n }\n }, {\n key: \"pop\",\n value: function pop() {\n return _remove(this.tail, this).value;\n }\n }, {\n key: \"popNode\",\n value: function popNode() {\n return _remove(this.tail, this);\n }\n }, {\n key: \"shift\",\n value: function shift() {\n return _remove(this.head, this).value;\n }\n }, {\n key: \"shiftNode\",\n value: function shiftNode() {\n return _remove(this.head, this);\n }\n }, {\n key: \"get_object_at\",\n value: function get_object_at(index) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n return current.value;\n }\n }\n }, {\n key: \"set_object_at\",\n value: function set_object_at(index, value) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n current.value = value;\n }\n }\n }]);\n\n return LinkedList;\n}();\n\nmodule.exports = LinkedList;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\r\n *This class is the javascript implementation of the Point.java class in jdk\r\n */\nfunction Point(x, y, p) {\n this.x = null;\n this.y = null;\n if (x == null && y == null && p == null) {\n this.x = 0;\n this.y = 0;\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n this.x = x;\n this.y = y;\n } else if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.x = p.x;\n this.y = p.y;\n }\n}\n\nPoint.prototype.getX = function () {\n return this.x;\n};\n\nPoint.prototype.getY = function () {\n return this.y;\n};\n\nPoint.prototype.getLocation = function () {\n return new Point(this.x, this.y);\n};\n\nPoint.prototype.setLocation = function (x, y, p) {\n if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.setLocation(p.x, p.y);\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n //if both parameters are integer just move (x,y) location\n if (parseInt(x) == x && parseInt(y) == y) {\n this.move(x, y);\n } else {\n this.x = Math.floor(x + 0.5);\n this.y = Math.floor(y + 0.5);\n }\n }\n};\n\nPoint.prototype.move = function (x, y) {\n this.x = x;\n this.y = y;\n};\n\nPoint.prototype.translate = function (dx, dy) {\n this.x += dx;\n this.y += dy;\n};\n\nPoint.prototype.equals = function (obj) {\n if (obj.constructor.name == \"Point\") {\n var pt = obj;\n return this.x == pt.x && this.y == pt.y;\n }\n return this == obj;\n};\n\nPoint.prototype.toString = function () {\n return new Point().constructor.name + \"[x=\" + this.x + \",y=\" + this.y + \"]\";\n};\n\nmodule.exports = Point;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RectangleD(x, y, width, height) {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n\n if (x != null && y != null && width != null && height != null) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n\nRectangleD.prototype.getX = function () {\n return this.x;\n};\n\nRectangleD.prototype.setX = function (x) {\n this.x = x;\n};\n\nRectangleD.prototype.getY = function () {\n return this.y;\n};\n\nRectangleD.prototype.setY = function (y) {\n this.y = y;\n};\n\nRectangleD.prototype.getWidth = function () {\n return this.width;\n};\n\nRectangleD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nRectangleD.prototype.getHeight = function () {\n return this.height;\n};\n\nRectangleD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nRectangleD.prototype.getRight = function () {\n return this.x + this.width;\n};\n\nRectangleD.prototype.getBottom = function () {\n return this.y + this.height;\n};\n\nRectangleD.prototype.intersects = function (a) {\n if (this.getRight() < a.x) {\n return false;\n }\n\n if (this.getBottom() < a.y) {\n return false;\n }\n\n if (a.getRight() < this.x) {\n return false;\n }\n\n if (a.getBottom() < this.y) {\n return false;\n }\n\n return true;\n};\n\nRectangleD.prototype.getCenterX = function () {\n return this.x + this.width / 2;\n};\n\nRectangleD.prototype.getMinX = function () {\n return this.getX();\n};\n\nRectangleD.prototype.getMaxX = function () {\n return this.getX() + this.width;\n};\n\nRectangleD.prototype.getCenterY = function () {\n return this.y + this.height / 2;\n};\n\nRectangleD.prototype.getMinY = function () {\n return this.getY();\n};\n\nRectangleD.prototype.getMaxY = function () {\n return this.getY() + this.height;\n};\n\nRectangleD.prototype.getWidthHalf = function () {\n return this.width / 2;\n};\n\nRectangleD.prototype.getHeightHalf = function () {\n return this.height / 2;\n};\n\nmodule.exports = RectangleD;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction UniqueIDGeneretor() {}\n\nUniqueIDGeneretor.lastID = 0;\n\nUniqueIDGeneretor.createID = function (obj) {\n if (UniqueIDGeneretor.isPrimitive(obj)) {\n return obj;\n }\n if (obj.uniqueID != null) {\n return obj.uniqueID;\n }\n obj.uniqueID = UniqueIDGeneretor.getString();\n UniqueIDGeneretor.lastID++;\n return obj.uniqueID;\n};\n\nUniqueIDGeneretor.getString = function (id) {\n if (id == null) id = UniqueIDGeneretor.lastID;\n return \"Object#\" + id + \"\";\n};\n\nUniqueIDGeneretor.isPrimitive = function (arg) {\n var type = typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg);\n return arg == null || type != \"object\" && type != \"function\";\n};\n\nmodule.exports = UniqueIDGeneretor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(7);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar LGraph = __webpack_require__(6);\nvar PointD = __webpack_require__(5);\nvar Transform = __webpack_require__(17);\nvar Emitter = __webpack_require__(29);\n\nfunction Layout(isRemoteUse) {\n Emitter.call(this);\n\n //Layout Quality: 0:draft, 1:default, 2:proof\n this.layoutQuality = LayoutConstants.QUALITY;\n //Whether layout should create bendpoints as needed or not\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n //Whether layout should be incremental or not\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n //Whether we animate from before to after layout node positions\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n //Whether we animate the layout process or not\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n //Number iterations that should be done between two successive animations\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n /**\r\n * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When\r\n * they are, both spring and repulsion forces between two leaf nodes can be\r\n * calculated without the expensive clipping point calculations, resulting\r\n * in major speed-up.\r\n */\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n /**\r\n * This is used for creation of bendpoints by using dummy nodes and edges.\r\n * Maps an LEdge to its dummy bendpoint path.\r\n */\n this.edgeToDummyNodes = new Map();\n this.graphManager = new LGraphManager(this);\n this.isLayoutFinished = false;\n this.isSubLayout = false;\n this.isRemoteUse = false;\n\n if (isRemoteUse != null) {\n this.isRemoteUse = isRemoteUse;\n }\n}\n\nLayout.RANDOM_SEED = 1;\n\nLayout.prototype = Object.create(Emitter.prototype);\n\nLayout.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLayout.prototype.getAllNodes = function () {\n return this.graphManager.getAllNodes();\n};\n\nLayout.prototype.getAllEdges = function () {\n return this.graphManager.getAllEdges();\n};\n\nLayout.prototype.getAllNodesToApplyGravitation = function () {\n return this.graphManager.getAllNodesToApplyGravitation();\n};\n\nLayout.prototype.newGraphManager = function () {\n var gm = new LGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nLayout.prototype.newGraph = function (vGraph) {\n return new LGraph(null, this.graphManager, vGraph);\n};\n\nLayout.prototype.newNode = function (vNode) {\n return new LNode(this.graphManager, vNode);\n};\n\nLayout.prototype.newEdge = function (vEdge) {\n return new LEdge(null, null, vEdge);\n};\n\nLayout.prototype.checkLayoutSuccess = function () {\n return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge();\n};\n\nLayout.prototype.runLayout = function () {\n this.isLayoutFinished = false;\n\n if (this.tilingPreLayout) {\n this.tilingPreLayout();\n }\n\n this.initParameters();\n var isLayoutSuccessfull;\n\n if (this.checkLayoutSuccess()) {\n isLayoutSuccessfull = false;\n } else {\n isLayoutSuccessfull = this.layout();\n }\n\n if (LayoutConstants.ANIMATE === 'during') {\n // If this is a 'during' layout animation. Layout is not finished yet. \n // We need to perform these in index.js when layout is really finished.\n return false;\n }\n\n if (isLayoutSuccessfull) {\n if (!this.isSubLayout) {\n this.doPostLayout();\n }\n }\n\n if (this.tilingPostLayout) {\n this.tilingPostLayout();\n }\n\n this.isLayoutFinished = true;\n\n return isLayoutSuccessfull;\n};\n\n/**\r\n * This method performs the operations required after layout.\r\n */\nLayout.prototype.doPostLayout = function () {\n //assert !isSubLayout : \"Should not be called on sub-layout!\";\n // Propagate geometric changes to v-level objects\n if (!this.incremental) {\n this.transform();\n }\n this.update();\n};\n\n/**\r\n * This method updates the geometry of the target graph according to\r\n * calculated layout.\r\n */\nLayout.prototype.update2 = function () {\n // update bend points\n if (this.createBendsAsNeeded) {\n this.createBendpointsFromDummyNodes();\n\n // reset all edges, since the topology has changed\n this.graphManager.resetAllEdges();\n }\n\n // perform edge, node and root updates if layout is not called\n // remotely\n if (!this.isRemoteUse) {\n // update all edges\n var edge;\n var allEdges = this.graphManager.getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n // this.update(edge);\n }\n\n // recursively update nodes\n var node;\n var nodes = this.graphManager.getRoot().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n // this.update(node);\n }\n\n // update root graph\n this.update(this.graphManager.getRoot());\n }\n};\n\nLayout.prototype.update = function (obj) {\n if (obj == null) {\n this.update2();\n } else if (obj instanceof LNode) {\n var node = obj;\n if (node.getChild() != null) {\n // since node is compound, recursively update child nodes\n var nodes = node.getChild().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n update(nodes[i]);\n }\n }\n\n // if the l-level node is associated with a v-level graph object,\n // then it is assumed that the v-level node implements the\n // interface Updatable.\n if (node.vGraphObject != null) {\n // cast to Updatable without any type check\n var vNode = node.vGraphObject;\n\n // call the update method of the interface\n vNode.update(node);\n }\n } else if (obj instanceof LEdge) {\n var edge = obj;\n // if the l-level edge is associated with a v-level graph object,\n // then it is assumed that the v-level edge implements the\n // interface Updatable.\n\n if (edge.vGraphObject != null) {\n // cast to Updatable without any type check\n var vEdge = edge.vGraphObject;\n\n // call the update method of the interface\n vEdge.update(edge);\n }\n } else if (obj instanceof LGraph) {\n var graph = obj;\n // if the l-level graph is associated with a v-level graph object,\n // then it is assumed that the v-level object implements the\n // interface Updatable.\n\n if (graph.vGraphObject != null) {\n // cast to Updatable without any type check\n var vGraph = graph.vGraphObject;\n\n // call the update method of the interface\n vGraph.update(graph);\n }\n }\n};\n\n/**\r\n * This method is used to set all layout parameters to default values\r\n * determined at compile time.\r\n */\nLayout.prototype.initParameters = function () {\n if (!this.isSubLayout) {\n this.layoutQuality = LayoutConstants.QUALITY;\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n }\n\n if (this.animationDuringLayout) {\n this.animationOnLayout = false;\n }\n};\n\nLayout.prototype.transform = function (newLeftTop) {\n if (newLeftTop == undefined) {\n this.transform(new PointD(0, 0));\n } else {\n // create a transformation object (from Eclipse to layout). When an\n // inverse transform is applied, we get upper-left coordinate of the\n // drawing or the root graph at given input coordinate (some margins\n // already included in calculation of left-top).\n\n var trans = new Transform();\n var leftTop = this.graphManager.getRoot().updateLeftTop();\n\n if (leftTop != null) {\n trans.setWorldOrgX(newLeftTop.x);\n trans.setWorldOrgY(newLeftTop.y);\n\n trans.setDeviceOrgX(leftTop.x);\n trans.setDeviceOrgY(leftTop.y);\n\n var nodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n node.transform(trans);\n }\n }\n }\n};\n\nLayout.prototype.positionNodesRandomly = function (graph) {\n\n if (graph == undefined) {\n //assert !this.incremental;\n this.positionNodesRandomly(this.getGraphManager().getRoot());\n this.getGraphManager().getRoot().updateBounds(true);\n } else {\n var lNode;\n var childGraph;\n\n var nodes = graph.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n lNode = nodes[i];\n childGraph = lNode.getChild();\n\n if (childGraph == null) {\n lNode.scatter();\n } else if (childGraph.getNodes().length == 0) {\n lNode.scatter();\n } else {\n this.positionNodesRandomly(childGraph);\n lNode.updateBounds();\n }\n }\n }\n};\n\n/**\r\n * This method returns a list of trees where each tree is represented as a\r\n * list of l-nodes. The method returns a list of size 0 when:\r\n * - The graph is not flat or\r\n * - One of the component(s) of the graph is not a tree.\r\n */\nLayout.prototype.getFlatForest = function () {\n var flatForest = [];\n var isForest = true;\n\n // Quick reference for all nodes in the graph manager associated with\n // this layout. The list should not be changed.\n var allNodes = this.graphManager.getRoot().getNodes();\n\n // First be sure that the graph is flat\n var isFlat = true;\n\n for (var i = 0; i < allNodes.length; i++) {\n if (allNodes[i].getChild() != null) {\n isFlat = false;\n }\n }\n\n // Return empty forest if the graph is not flat.\n if (!isFlat) {\n return flatForest;\n }\n\n // Run BFS for each component of the graph.\n\n var visited = new Set();\n var toBeVisited = [];\n var parents = new Map();\n var unProcessedNodes = [];\n\n unProcessedNodes = unProcessedNodes.concat(allNodes);\n\n // Each iteration of this loop finds a component of the graph and\n // decides whether it is a tree or not. If it is a tree, adds it to the\n // forest and continued with the next component.\n\n while (unProcessedNodes.length > 0 && isForest) {\n toBeVisited.push(unProcessedNodes[0]);\n\n // Start the BFS. Each iteration of this loop visits a node in a\n // BFS manner.\n while (toBeVisited.length > 0 && isForest) {\n //pool operation\n var currentNode = toBeVisited[0];\n toBeVisited.splice(0, 1);\n visited.add(currentNode);\n\n // Traverse all neighbors of this node\n var neighborEdges = currentNode.getEdges();\n\n for (var i = 0; i < neighborEdges.length; i++) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode);\n\n // If BFS is not growing from this neighbor.\n if (parents.get(currentNode) != currentNeighbor) {\n // We haven't previously visited this neighbor.\n if (!visited.has(currentNeighbor)) {\n toBeVisited.push(currentNeighbor);\n parents.set(currentNeighbor, currentNode);\n }\n // Since we have previously visited this neighbor and\n // this neighbor is not parent of currentNode, given\n // graph contains a component that is not tree, hence\n // it is not a forest.\n else {\n isForest = false;\n break;\n }\n }\n }\n }\n\n // The graph contains a component that is not a tree. Empty\n // previously found trees. The method will end.\n if (!isForest) {\n flatForest = [];\n }\n // Save currently visited nodes as a tree in our forest. Reset\n // visited and parents lists. Continue with the next component of\n // the graph, if any.\n else {\n var temp = [].concat(_toConsumableArray(visited));\n flatForest.push(temp);\n //flatForest = flatForest.concat(temp);\n //unProcessedNodes.removeAll(visited);\n for (var i = 0; i < temp.length; i++) {\n var value = temp[i];\n var index = unProcessedNodes.indexOf(value);\n if (index > -1) {\n unProcessedNodes.splice(index, 1);\n }\n }\n visited = new Set();\n parents = new Map();\n }\n }\n\n return flatForest;\n};\n\n/**\r\n * This method creates dummy nodes (an l-level node with minimal dimensions)\r\n * for the given edge (one per bendpoint). The existing l-level structure\r\n * is updated accordingly.\r\n */\nLayout.prototype.createDummyNodesForBendpoints = function (edge) {\n var dummyNodes = [];\n var prev = edge.source;\n\n var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target);\n\n for (var i = 0; i < edge.bendpoints.length; i++) {\n // create new dummy node\n var dummyNode = this.newNode(null);\n dummyNode.setRect(new Point(0, 0), new Dimension(1, 1));\n\n graph.add(dummyNode);\n\n // create new dummy edge between prev and dummy node\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, dummyNode);\n\n dummyNodes.add(dummyNode);\n prev = dummyNode;\n }\n\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, edge.target);\n\n this.edgeToDummyNodes.set(edge, dummyNodes);\n\n // remove real edge from graph manager if it is inter-graph\n if (edge.isInterGraph()) {\n this.graphManager.remove(edge);\n }\n // else, remove the edge from the current graph\n else {\n graph.remove(edge);\n }\n\n return dummyNodes;\n};\n\n/**\r\n * This method creates bendpoints for edges from the dummy nodes\r\n * at l-level.\r\n */\nLayout.prototype.createBendpointsFromDummyNodes = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges);\n\n for (var k = 0; k < edges.length; k++) {\n var lEdge = edges[k];\n\n if (lEdge.bendpoints.length > 0) {\n var path = this.edgeToDummyNodes.get(lEdge);\n\n for (var i = 0; i < path.length; i++) {\n var dummyNode = path[i];\n var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY());\n\n // update bendpoint's location according to dummy node\n var ebp = lEdge.bendpoints.get(i);\n ebp.x = p.x;\n ebp.y = p.y;\n\n // remove the dummy node, dummy edges incident with this\n // dummy node is also removed (within the remove method)\n dummyNode.getOwner().remove(dummyNode);\n }\n\n // add the real edge to graph\n this.graphManager.add(lEdge, lEdge.source, lEdge.target);\n }\n }\n};\n\nLayout.transform = function (sliderValue, defaultValue, minDiv, maxMul) {\n if (minDiv != undefined && maxMul != undefined) {\n var value = defaultValue;\n\n if (sliderValue <= 50) {\n var minValue = defaultValue / minDiv;\n value -= (defaultValue - minValue) / 50 * (50 - sliderValue);\n } else {\n var maxValue = defaultValue * maxMul;\n value += (maxValue - defaultValue) / 50 * (sliderValue - 50);\n }\n\n return value;\n } else {\n var a, b;\n\n if (sliderValue <= 50) {\n a = 9.0 * defaultValue / 500.0;\n b = defaultValue / 10.0;\n } else {\n a = 9.0 * defaultValue / 50.0;\n b = -8 * defaultValue;\n }\n\n return a * sliderValue + b;\n }\n};\n\n/**\r\n * This method finds and returns the center of the given nodes, assuming\r\n * that the given nodes form a tree in themselves.\r\n */\nLayout.findCenterOfTree = function (nodes) {\n var list = [];\n list = list.concat(nodes);\n\n var removedNodes = [];\n var remainingDegrees = new Map();\n var foundCenter = false;\n var centerNode = null;\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n var degree = node.getNeighborsList().size;\n remainingDegrees.set(node, node.getNeighborsList().size);\n\n if (degree == 1) {\n removedNodes.push(node);\n }\n }\n\n var tempList = [];\n tempList = tempList.concat(removedNodes);\n\n while (!foundCenter) {\n var tempList2 = [];\n tempList2 = tempList2.concat(tempList);\n tempList = [];\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n\n var index = list.indexOf(node);\n if (index >= 0) {\n list.splice(index, 1);\n }\n\n var neighbours = node.getNeighborsList();\n\n neighbours.forEach(function (neighbour) {\n if (removedNodes.indexOf(neighbour) < 0) {\n var otherDegree = remainingDegrees.get(neighbour);\n var newDegree = otherDegree - 1;\n\n if (newDegree == 1) {\n tempList.push(neighbour);\n }\n\n remainingDegrees.set(neighbour, newDegree);\n }\n });\n }\n\n removedNodes = removedNodes.concat(tempList);\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n }\n\n return centerNode;\n};\n\n/**\r\n * During the coarsening process, this layout may be referenced by two graph managers\r\n * this setter function grants access to change the currently being used graph manager\r\n */\nLayout.prototype.setGraphManager = function (gm) {\n this.graphManager = gm;\n};\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RandomSeed() {}\n// adapted from: https://stackoverflow.com/a/19303725\nRandomSeed.seed = 1;\nRandomSeed.x = 0;\n\nRandomSeed.nextDouble = function () {\n RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000;\n return RandomSeed.x - Math.floor(RandomSeed.x);\n};\n\nmodule.exports = RandomSeed;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar PointD = __webpack_require__(5);\n\nfunction Transform(x, y) {\n this.lworldOrgX = 0.0;\n this.lworldOrgY = 0.0;\n this.ldeviceOrgX = 0.0;\n this.ldeviceOrgY = 0.0;\n this.lworldExtX = 1.0;\n this.lworldExtY = 1.0;\n this.ldeviceExtX = 1.0;\n this.ldeviceExtY = 1.0;\n}\n\nTransform.prototype.getWorldOrgX = function () {\n return this.lworldOrgX;\n};\n\nTransform.prototype.setWorldOrgX = function (wox) {\n this.lworldOrgX = wox;\n};\n\nTransform.prototype.getWorldOrgY = function () {\n return this.lworldOrgY;\n};\n\nTransform.prototype.setWorldOrgY = function (woy) {\n this.lworldOrgY = woy;\n};\n\nTransform.prototype.getWorldExtX = function () {\n return this.lworldExtX;\n};\n\nTransform.prototype.setWorldExtX = function (wex) {\n this.lworldExtX = wex;\n};\n\nTransform.prototype.getWorldExtY = function () {\n return this.lworldExtY;\n};\n\nTransform.prototype.setWorldExtY = function (wey) {\n this.lworldExtY = wey;\n};\n\n/* Device related */\n\nTransform.prototype.getDeviceOrgX = function () {\n return this.ldeviceOrgX;\n};\n\nTransform.prototype.setDeviceOrgX = function (dox) {\n this.ldeviceOrgX = dox;\n};\n\nTransform.prototype.getDeviceOrgY = function () {\n return this.ldeviceOrgY;\n};\n\nTransform.prototype.setDeviceOrgY = function (doy) {\n this.ldeviceOrgY = doy;\n};\n\nTransform.prototype.getDeviceExtX = function () {\n return this.ldeviceExtX;\n};\n\nTransform.prototype.setDeviceExtX = function (dex) {\n this.ldeviceExtX = dex;\n};\n\nTransform.prototype.getDeviceExtY = function () {\n return this.ldeviceExtY;\n};\n\nTransform.prototype.setDeviceExtY = function (dey) {\n this.ldeviceExtY = dey;\n};\n\nTransform.prototype.transformX = function (x) {\n var xDevice = 0.0;\n var worldExtX = this.lworldExtX;\n if (worldExtX != 0.0) {\n xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX;\n }\n\n return xDevice;\n};\n\nTransform.prototype.transformY = function (y) {\n var yDevice = 0.0;\n var worldExtY = this.lworldExtY;\n if (worldExtY != 0.0) {\n yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY;\n }\n\n return yDevice;\n};\n\nTransform.prototype.inverseTransformX = function (x) {\n var xWorld = 0.0;\n var deviceExtX = this.ldeviceExtX;\n if (deviceExtX != 0.0) {\n xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX;\n }\n\n return xWorld;\n};\n\nTransform.prototype.inverseTransformY = function (y) {\n var yWorld = 0.0;\n var deviceExtY = this.ldeviceExtY;\n if (deviceExtY != 0.0) {\n yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY;\n }\n return yWorld;\n};\n\nTransform.prototype.inverseTransformPoint = function (inPoint) {\n var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y));\n return outPoint;\n};\n\nmodule.exports = Transform;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar Layout = __webpack_require__(15);\nvar FDLayoutConstants = __webpack_require__(4);\nvar LayoutConstants = __webpack_require__(0);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction FDLayout() {\n Layout.call(this);\n\n this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.totalDisplacement = 0.0;\n this.oldTotalDisplacement = 0.0;\n this.maxIterations = FDLayoutConstants.MAX_ITERATIONS;\n}\n\nFDLayout.prototype = Object.create(Layout.prototype);\n\nfor (var prop in Layout) {\n FDLayout[prop] = Layout[prop];\n}\n\nFDLayout.prototype.initParameters = function () {\n Layout.prototype.initParameters.call(this, arguments);\n\n this.totalIterations = 0;\n this.notAnimatedIterations = 0;\n\n this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION;\n\n this.grid = [];\n};\n\nFDLayout.prototype.calcIdealEdgeLengths = function () {\n var edge;\n var originalIdealLength;\n var lcaDepth;\n var source;\n var target;\n var sizeOfSourceInLca;\n var sizeOfTargetInLca;\n\n var allEdges = this.getGraphManager().getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n\n originalIdealLength = edge.idealLength;\n\n if (edge.isInterGraph) {\n source = edge.getSource();\n target = edge.getTarget();\n\n sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize();\n sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize();\n\n if (this.useSmartIdealEdgeLengthCalculation) {\n edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE;\n }\n\n lcaDepth = edge.getLca().getInclusionTreeDepth();\n\n edge.idealLength += originalIdealLength * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth);\n }\n }\n};\n\nFDLayout.prototype.initSpringEmbedder = function () {\n\n var s = this.getAllNodes().length;\n if (this.incremental) {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n }\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL;\n } else {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n } else {\n this.coolingFactor = 1.0;\n }\n this.initialCoolingFactor = this.coolingFactor;\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT;\n }\n\n this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations);\n\n // Reassign this attribute by using new constant value\n this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length;\n\n this.repulsionRange = this.calcRepulsionRange();\n};\n\nFDLayout.prototype.calcSpringForces = function () {\n var lEdges = this.getAllEdges();\n var edge;\n\n for (var i = 0; i < lEdges.length; i++) {\n edge = lEdges[i];\n\n this.calcSpringForce(edge, edge.idealLength);\n }\n};\n\nFDLayout.prototype.calcRepulsionForces = function () {\n var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var i, j;\n var nodeA, nodeB;\n var lNodes = this.getAllNodes();\n var processedNodeSet;\n\n if (this.useFRGridVariant) {\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) {\n this.updateGrid();\n }\n\n processedNodeSet = new Set();\n\n // calculate repulsion forces between each nodes and its surrounding\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate);\n processedNodeSet.add(nodeA);\n }\n } else {\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n\n for (j = i + 1; j < lNodes.length; j++) {\n nodeB = lNodes[j];\n\n // If both nodes are not members of the same graph, skip.\n if (nodeA.getOwner() != nodeB.getOwner()) {\n continue;\n }\n\n this.calcRepulsionForce(nodeA, nodeB);\n }\n }\n }\n};\n\nFDLayout.prototype.calcGravitationalForces = function () {\n var node;\n var lNodes = this.getAllNodesToApplyGravitation();\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n this.calcGravitationalForce(node);\n }\n};\n\nFDLayout.prototype.moveNodes = function () {\n var lNodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.move();\n }\n};\n\nFDLayout.prototype.calcSpringForce = function (edge, idealLength) {\n var sourceNode = edge.getSource();\n var targetNode = edge.getTarget();\n\n var length;\n var springForce;\n var springForceX;\n var springForceY;\n\n // Update edge length\n if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) {\n edge.updateLengthSimple();\n } else {\n edge.updateLength();\n\n if (edge.isOverlapingSourceAndTarget) {\n return;\n }\n }\n\n length = edge.getLength();\n\n if (length == 0) return;\n\n // Calculate spring forces\n springForce = edge.edgeElasticity * (length - idealLength);\n\n // Project force onto x and y axes\n springForceX = springForce * (edge.lengthX / length);\n springForceY = springForce * (edge.lengthY / length);\n\n // Apply forces on the end nodes\n sourceNode.springForceX += springForceX;\n sourceNode.springForceY += springForceY;\n targetNode.springForceX -= springForceX;\n targetNode.springForceY -= springForceY;\n};\n\nFDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) {\n var rectA = nodeA.getRect();\n var rectB = nodeB.getRect();\n var overlapAmount = new Array(2);\n var clipPoints = new Array(4);\n var distanceX;\n var distanceY;\n var distanceSquared;\n var distance;\n var repulsionForce;\n var repulsionForceX;\n var repulsionForceY;\n\n if (rectA.intersects(rectB)) // two nodes overlap\n {\n // calculate separation amount in x and y directions\n IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0);\n\n repulsionForceX = 2 * overlapAmount[0];\n repulsionForceY = 2 * overlapAmount[1];\n\n var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren);\n\n // Apply forces on the two nodes\n nodeA.repulsionForceX -= childrenConstant * repulsionForceX;\n nodeA.repulsionForceY -= childrenConstant * repulsionForceY;\n nodeB.repulsionForceX += childrenConstant * repulsionForceX;\n nodeB.repulsionForceY += childrenConstant * repulsionForceY;\n } else // no overlap\n {\n // calculate distance\n\n if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers\n {\n distanceX = rectB.getCenterX() - rectA.getCenterX();\n distanceY = rectB.getCenterY() - rectA.getCenterY();\n } else // use clipping points\n {\n IGeometry.getIntersection(rectA, rectB, clipPoints);\n\n distanceX = clipPoints[2] - clipPoints[0];\n distanceY = clipPoints[3] - clipPoints[1];\n }\n\n // No repulsion range. FR grid variant should take care of this.\n if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n distanceSquared = distanceX * distanceX + distanceY * distanceY;\n distance = Math.sqrt(distanceSquared);\n\n // Here we use half of the nodes' repulsion values for backward compatibility\n repulsionForce = (nodeA.nodeRepulsion / 2 + nodeB.nodeRepulsion / 2) * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared;\n\n // Project force onto x and y axes\n repulsionForceX = repulsionForce * distanceX / distance;\n repulsionForceY = repulsionForce * distanceY / distance;\n\n // Apply forces on the two nodes \n nodeA.repulsionForceX -= repulsionForceX;\n nodeA.repulsionForceY -= repulsionForceY;\n nodeB.repulsionForceX += repulsionForceX;\n nodeB.repulsionForceY += repulsionForceY;\n }\n};\n\nFDLayout.prototype.calcGravitationalForce = function (node) {\n var ownerGraph;\n var ownerCenterX;\n var ownerCenterY;\n var distanceX;\n var distanceY;\n var absDistanceX;\n var absDistanceY;\n var estimatedSize;\n ownerGraph = node.getOwner();\n\n ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2;\n ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2;\n distanceX = node.getCenterX() - ownerCenterX;\n distanceY = node.getCenterY() - ownerCenterY;\n absDistanceX = Math.abs(distanceX) + node.getWidth() / 2;\n absDistanceY = Math.abs(distanceY) + node.getHeight() / 2;\n\n if (node.getOwner() == this.graphManager.getRoot()) // in the root graph\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX;\n node.gravitationForceY = -this.gravityConstant * distanceY;\n }\n } else // inside a compound\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant;\n node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant;\n }\n }\n};\n\nFDLayout.prototype.isConverged = function () {\n var converged;\n var oscilating = false;\n\n if (this.totalIterations > this.maxIterations / 3) {\n oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2;\n }\n\n converged = this.totalDisplacement < this.totalDisplacementThreshold;\n\n this.oldTotalDisplacement = this.totalDisplacement;\n\n return converged || oscilating;\n};\n\nFDLayout.prototype.animate = function () {\n if (this.animationDuringLayout && !this.isSubLayout) {\n if (this.notAnimatedIterations == this.animationPeriod) {\n this.update();\n this.notAnimatedIterations = 0;\n } else {\n this.notAnimatedIterations++;\n }\n }\n};\n\n//This method calculates the number of children (weight) for all nodes\nFDLayout.prototype.calcNoOfChildrenForAllNodes = function () {\n var node;\n var allNodes = this.graphManager.getAllNodes();\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n node.noOfChildren = node.getNoOfChildren();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: FR-Grid Variant Repulsion Force Calculation\n// -----------------------------------------------------------------------------\n\nFDLayout.prototype.calcGrid = function (graph) {\n\n var sizeX = 0;\n var sizeY = 0;\n\n sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange));\n sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange));\n\n var grid = new Array(sizeX);\n\n for (var i = 0; i < sizeX; i++) {\n grid[i] = new Array(sizeY);\n }\n\n for (var i = 0; i < sizeX; i++) {\n for (var j = 0; j < sizeY; j++) {\n grid[i][j] = new Array();\n }\n }\n\n return grid;\n};\n\nFDLayout.prototype.addNodeToGrid = function (v, left, top) {\n\n var startX = 0;\n var finishX = 0;\n var startY = 0;\n var finishY = 0;\n\n startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange));\n finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange));\n startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange));\n finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange));\n\n for (var i = startX; i <= finishX; i++) {\n for (var j = startY; j <= finishY; j++) {\n this.grid[i][j].push(v);\n v.setGridCoordinates(startX, finishX, startY, finishY);\n }\n }\n};\n\nFDLayout.prototype.updateGrid = function () {\n var i;\n var nodeA;\n var lNodes = this.getAllNodes();\n\n this.grid = this.calcGrid(this.graphManager.getRoot());\n\n // put all nodes to proper grid cells\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop());\n }\n};\n\nFDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) {\n\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) {\n var surrounding = new Set();\n nodeA.surrounding = new Array();\n var nodeB;\n var grid = this.grid;\n\n for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) {\n for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) {\n if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) {\n for (var k = 0; k < grid[i][j].length; k++) {\n nodeB = grid[i][j][k];\n\n // If both nodes are not members of the same graph, \n // or both nodes are the same, skip.\n if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) {\n continue;\n }\n\n // check if the repulsion force between\n // nodeA and nodeB has already been calculated\n if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) {\n var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2);\n var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2);\n\n // if the distance between nodeA and nodeB \n // is less then calculation range\n if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) {\n //then add nodeB to surrounding of nodeA\n surrounding.add(nodeB);\n }\n }\n }\n }\n }\n }\n\n nodeA.surrounding = [].concat(_toConsumableArray(surrounding));\n }\n for (i = 0; i < nodeA.surrounding.length; i++) {\n this.calcRepulsionForce(nodeA, nodeA.surrounding[i]);\n }\n};\n\nFDLayout.prototype.calcRepulsionRange = function () {\n return 0.0;\n};\n\nmodule.exports = FDLayout;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LEdge = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(4);\n\nfunction FDLayoutEdge(source, target, vEdge) {\n LEdge.call(this, source, target, vEdge);\n\n // Ideal length and elasticity value for this edge\n this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n this.edgeElasticity = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n}\n\nFDLayoutEdge.prototype = Object.create(LEdge.prototype);\n\nfor (var prop in LEdge) {\n FDLayoutEdge[prop] = LEdge[prop];\n}\n\nmodule.exports = FDLayoutEdge;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LNode = __webpack_require__(3);\nvar FDLayoutConstants = __webpack_require__(4);\n\nfunction FDLayoutNode(gm, loc, size, vNode) {\n // alternative constructor is handled inside LNode\n LNode.call(this, gm, loc, size, vNode);\n\n // Repulsion value of this node\n this.nodeRepulsion = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n\n //Spring, repulsion and gravitational forces acting on this node\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n //Amount by which this node is to be moved in this iteration\n this.displacementX = 0;\n this.displacementY = 0;\n\n //Start and finish grid coordinates that this node is fallen into\n this.startX = 0;\n this.finishX = 0;\n this.startY = 0;\n this.finishY = 0;\n\n //Geometric neighbors of this node\n this.surrounding = [];\n}\n\nFDLayoutNode.prototype = Object.create(LNode.prototype);\n\nfor (var prop in LNode) {\n FDLayoutNode[prop] = LNode[prop];\n}\n\nFDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) {\n this.startX = _startX;\n this.finishX = _finishX;\n this.startY = _startY;\n this.finishY = _finishY;\n};\n\nmodule.exports = FDLayoutNode;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction DimensionD(width, height) {\n this.width = 0;\n this.height = 0;\n if (width !== null && height !== null) {\n this.height = height;\n this.width = width;\n }\n}\n\nDimensionD.prototype.getWidth = function () {\n return this.width;\n};\n\nDimensionD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nDimensionD.prototype.getHeight = function () {\n return this.height;\n};\n\nDimensionD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nmodule.exports = DimensionD;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashMap() {\n this.map = {};\n this.keys = [];\n}\n\nHashMap.prototype.put = function (key, value) {\n var theId = UniqueIDGeneretor.createID(key);\n if (!this.contains(theId)) {\n this.map[theId] = value;\n this.keys.push(key);\n }\n};\n\nHashMap.prototype.contains = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[key] != null;\n};\n\nHashMap.prototype.get = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[theId];\n};\n\nHashMap.prototype.keySet = function () {\n return this.keys;\n};\n\nmodule.exports = HashMap;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashSet() {\n this.set = {};\n}\n;\n\nHashSet.prototype.add = function (obj) {\n var theId = UniqueIDGeneretor.createID(obj);\n if (!this.contains(theId)) this.set[theId] = obj;\n};\n\nHashSet.prototype.remove = function (obj) {\n delete this.set[UniqueIDGeneretor.createID(obj)];\n};\n\nHashSet.prototype.clear = function () {\n this.set = {};\n};\n\nHashSet.prototype.contains = function (obj) {\n return this.set[UniqueIDGeneretor.createID(obj)] == obj;\n};\n\nHashSet.prototype.isEmpty = function () {\n return this.size() === 0;\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\n//concats this.set to the given list\nHashSet.prototype.addAllTo = function (list) {\n var keys = Object.keys(this.set);\n var length = keys.length;\n for (var i = 0; i < length; i++) {\n list.push(this.set[keys[i]]);\n }\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\nHashSet.prototype.addAll = function (list) {\n var s = list.length;\n for (var i = 0; i < s; i++) {\n var v = list[i];\n this.add(v);\n }\n};\n\nmodule.exports = HashSet;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Some matrix (1d and 2d array) operations\nfunction Matrix() {}\n\n/**\n * matrix multiplication\n * array1, array2 and result are 2d arrays\n */\nMatrix.multMat = function (array1, array2) {\n var result = [];\n\n for (var i = 0; i < array1.length; i++) {\n result[i] = [];\n for (var j = 0; j < array2[0].length; j++) {\n result[i][j] = 0;\n for (var k = 0; k < array1[0].length; k++) {\n result[i][j] += array1[i][k] * array2[k][j];\n }\n }\n }\n return result;\n};\n\n/**\n * matrix transpose\n * array and result are 2d arrays\n */\nMatrix.transpose = function (array) {\n var result = [];\n\n for (var i = 0; i < array[0].length; i++) {\n result[i] = [];\n for (var j = 0; j < array.length; j++) {\n result[i][j] = array[j][i];\n }\n }\n\n return result;\n};\n\n/**\n * multiply array with constant\n * array and result are 1d arrays\n */\nMatrix.multCons = function (array, constant) {\n var result = [];\n\n for (var i = 0; i < array.length; i++) {\n result[i] = array[i] * constant;\n }\n\n return result;\n};\n\n/**\n * substract two arrays\n * array1, array2 and result are 1d arrays\n */\nMatrix.minusOp = function (array1, array2) {\n var result = [];\n\n for (var i = 0; i < array1.length; i++) {\n result[i] = array1[i] - array2[i];\n }\n\n return result;\n};\n\n/**\n * dot product of two arrays with same size\n * array1 and array2 are 1d arrays\n */\nMatrix.dotProduct = function (array1, array2) {\n var product = 0;\n\n for (var i = 0; i < array1.length; i++) {\n product += array1[i] * array2[i];\n }\n\n return product;\n};\n\n/**\n * magnitude of an array\n * array is 1d array\n */\nMatrix.mag = function (array) {\n return Math.sqrt(this.dotProduct(array, array));\n};\n\n/**\n * normalization of an array\n * array and result are 1d array\n */\nMatrix.normalize = function (array) {\n var result = [];\n var magnitude = this.mag(array);\n\n for (var i = 0; i < array.length; i++) {\n result[i] = array[i] / magnitude;\n }\n\n return result;\n};\n\n/**\n * multiply an array with centering matrix\n * array and result are 1d array\n */\nMatrix.multGamma = function (array) {\n var result = [];\n var sum = 0;\n\n for (var i = 0; i < array.length; i++) {\n sum += array[i];\n }\n\n sum *= -1 / array.length;\n\n for (var _i = 0; _i < array.length; _i++) {\n result[_i] = sum + array[_i];\n }\n return result;\n};\n\n/**\n * a special matrix multiplication\n * result = 0.5 * C * INV * C^T * array\n * array and result are 1d, C and INV are 2d arrays\n */\nMatrix.multL = function (array, C, INV) {\n var result = [];\n var temp1 = [];\n var temp2 = [];\n\n // multiply by C^T\n for (var i = 0; i < C[0].length; i++) {\n var sum = 0;\n for (var j = 0; j < C.length; j++) {\n sum += -0.5 * C[j][i] * array[j];\n }\n temp1[i] = sum;\n }\n // multiply the result by INV\n for (var _i2 = 0; _i2 < INV.length; _i2++) {\n var _sum = 0;\n for (var _j = 0; _j < INV.length; _j++) {\n _sum += INV[_i2][_j] * temp1[_j];\n }\n temp2[_i2] = _sum;\n }\n // multiply the result by C\n for (var _i3 = 0; _i3 < C.length; _i3++) {\n var _sum2 = 0;\n for (var _j2 = 0; _j2 < C[0].length; _j2++) {\n _sum2 += C[_i3][_j2] * temp2[_j2];\n }\n result[_i3] = _sum2;\n }\n\n return result;\n};\n\nmodule.exports = Matrix;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * A classic Quicksort algorithm with Hoare's partition\n * - Works also on LinkedList objects\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar LinkedList = __webpack_require__(11);\n\nvar Quicksort = function () {\n function Quicksort(A, compareFunction) {\n _classCallCheck(this, Quicksort);\n\n if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction;\n\n var length = void 0;\n if (A instanceof LinkedList) length = A.size();else length = A.length;\n\n this._quicksort(A, 0, length - 1);\n }\n\n _createClass(Quicksort, [{\n key: '_quicksort',\n value: function _quicksort(A, p, r) {\n if (p < r) {\n var q = this._partition(A, p, r);\n this._quicksort(A, p, q);\n this._quicksort(A, q + 1, r);\n }\n }\n }, {\n key: '_partition',\n value: function _partition(A, p, r) {\n var x = this._get(A, p);\n var i = p;\n var j = r;\n while (true) {\n while (this.compareFunction(x, this._get(A, j))) {\n j--;\n }while (this.compareFunction(this._get(A, i), x)) {\n i++;\n }if (i < j) {\n this._swap(A, i, j);\n i++;\n j--;\n } else return j;\n }\n }\n }, {\n key: '_get',\n value: function _get(object, index) {\n if (object instanceof LinkedList) return object.get_object_at(index);else return object[index];\n }\n }, {\n key: '_set',\n value: function _set(object, index, value) {\n if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value;\n }\n }, {\n key: '_swap',\n value: function _swap(A, i, j) {\n var temp = this._get(A, i);\n this._set(A, i, this._get(A, j));\n this._set(A, j, temp);\n }\n }, {\n key: '_defaultCompareFunction',\n value: function _defaultCompareFunction(a, b) {\n return b > a;\n }\n }]);\n\n return Quicksort;\n}();\n\nmodule.exports = Quicksort;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Singular Value Decomposition implementation\nfunction SVD() {};\n\n/* Below singular value decomposition (svd) code including hypot function is adopted from https://github.com/dragonfly-ai/JamaJS\n Some changes are applied to make the code compatible with the fcose code and to make it independent from Jama.\n Input matrix is changed to a 2D array instead of Jama matrix. Matrix dimensions are taken according to 2D array instead of using Jama functions.\n An object that includes singular value components is created for return. \n The types of input parameters of the hypot function are removed. \n let is used instead of var for the variable initialization.\n*/\n/*\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright {yyyy} {name of copyright owner}\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nSVD.svd = function (A) {\n this.U = null;\n this.V = null;\n this.s = null;\n this.m = 0;\n this.n = 0;\n this.m = A.length;\n this.n = A[0].length;\n var nu = Math.min(this.m, this.n);\n this.s = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(Math.min(this.m + 1, this.n));\n this.U = function (dims) {\n var allocate = function allocate(dims) {\n if (dims.length == 0) {\n return 0;\n } else {\n var array = [];\n for (var i = 0; i < dims[0]; i++) {\n array.push(allocate(dims.slice(1)));\n }\n return array;\n }\n };\n return allocate(dims);\n }([this.m, nu]);\n this.V = function (dims) {\n var allocate = function allocate(dims) {\n if (dims.length == 0) {\n return 0;\n } else {\n var array = [];\n for (var i = 0; i < dims[0]; i++) {\n array.push(allocate(dims.slice(1)));\n }\n return array;\n }\n };\n return allocate(dims);\n }([this.n, this.n]);\n var e = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(this.n);\n var work = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(this.m);\n var wantu = true;\n var wantv = true;\n var nct = Math.min(this.m - 1, this.n);\n var nrt = Math.max(0, Math.min(this.n - 2, this.m));\n for (var k = 0; k < Math.max(nct, nrt); k++) {\n if (k < nct) {\n this.s[k] = 0;\n for (var i = k; i < this.m; i++) {\n this.s[k] = SVD.hypot(this.s[k], A[i][k]);\n }\n ;\n if (this.s[k] !== 0.0) {\n if (A[k][k] < 0.0) {\n this.s[k] = -this.s[k];\n }\n for (var _i = k; _i < this.m; _i++) {\n A[_i][k] /= this.s[k];\n }\n ;\n A[k][k] += 1.0;\n }\n this.s[k] = -this.s[k];\n }\n for (var j = k + 1; j < this.n; j++) {\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(k < nct, this.s[k] !== 0.0)) {\n var t = 0;\n for (var _i2 = k; _i2 < this.m; _i2++) {\n t += A[_i2][k] * A[_i2][j];\n }\n ;\n t = -t / A[k][k];\n for (var _i3 = k; _i3 < this.m; _i3++) {\n A[_i3][j] += t * A[_i3][k];\n }\n ;\n }\n e[j] = A[k][j];\n }\n ;\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(wantu, k < nct)) {\n for (var _i4 = k; _i4 < this.m; _i4++) {\n this.U[_i4][k] = A[_i4][k];\n }\n ;\n }\n if (k < nrt) {\n e[k] = 0;\n for (var _i5 = k + 1; _i5 < this.n; _i5++) {\n e[k] = SVD.hypot(e[k], e[_i5]);\n }\n ;\n if (e[k] !== 0.0) {\n if (e[k + 1] < 0.0) {\n e[k] = -e[k];\n }\n for (var _i6 = k + 1; _i6 < this.n; _i6++) {\n e[_i6] /= e[k];\n }\n ;\n e[k + 1] += 1.0;\n }\n e[k] = -e[k];\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(k + 1 < this.m, e[k] !== 0.0)) {\n for (var _i7 = k + 1; _i7 < this.m; _i7++) {\n work[_i7] = 0.0;\n }\n ;\n for (var _j = k + 1; _j < this.n; _j++) {\n for (var _i8 = k + 1; _i8 < this.m; _i8++) {\n work[_i8] += e[_j] * A[_i8][_j];\n }\n ;\n }\n ;\n for (var _j2 = k + 1; _j2 < this.n; _j2++) {\n var _t = -e[_j2] / e[k + 1];\n for (var _i9 = k + 1; _i9 < this.m; _i9++) {\n A[_i9][_j2] += _t * work[_i9];\n }\n ;\n }\n ;\n }\n if (wantv) {\n for (var _i10 = k + 1; _i10 < this.n; _i10++) {\n this.V[_i10][k] = e[_i10];\n };\n }\n }\n };\n var p = Math.min(this.n, this.m + 1);\n if (nct < this.n) {\n this.s[nct] = A[nct][nct];\n }\n if (this.m < p) {\n this.s[p - 1] = 0.0;\n }\n if (nrt + 1 < p) {\n e[nrt] = A[nrt][p - 1];\n }\n e[p - 1] = 0.0;\n if (wantu) {\n for (var _j3 = nct; _j3 < nu; _j3++) {\n for (var _i11 = 0; _i11 < this.m; _i11++) {\n this.U[_i11][_j3] = 0.0;\n }\n ;\n this.U[_j3][_j3] = 1.0;\n };\n for (var _k = nct - 1; _k >= 0; _k--) {\n if (this.s[_k] !== 0.0) {\n for (var _j4 = _k + 1; _j4 < nu; _j4++) {\n var _t2 = 0;\n for (var _i12 = _k; _i12 < this.m; _i12++) {\n _t2 += this.U[_i12][_k] * this.U[_i12][_j4];\n };\n _t2 = -_t2 / this.U[_k][_k];\n for (var _i13 = _k; _i13 < this.m; _i13++) {\n this.U[_i13][_j4] += _t2 * this.U[_i13][_k];\n };\n };\n for (var _i14 = _k; _i14 < this.m; _i14++) {\n this.U[_i14][_k] = -this.U[_i14][_k];\n };\n this.U[_k][_k] = 1.0 + this.U[_k][_k];\n for (var _i15 = 0; _i15 < _k - 1; _i15++) {\n this.U[_i15][_k] = 0.0;\n };\n } else {\n for (var _i16 = 0; _i16 < this.m; _i16++) {\n this.U[_i16][_k] = 0.0;\n };\n this.U[_k][_k] = 1.0;\n }\n };\n }\n if (wantv) {\n for (var _k2 = this.n - 1; _k2 >= 0; _k2--) {\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(_k2 < nrt, e[_k2] !== 0.0)) {\n for (var _j5 = _k2 + 1; _j5 < nu; _j5++) {\n var _t3 = 0;\n for (var _i17 = _k2 + 1; _i17 < this.n; _i17++) {\n _t3 += this.V[_i17][_k2] * this.V[_i17][_j5];\n };\n _t3 = -_t3 / this.V[_k2 + 1][_k2];\n for (var _i18 = _k2 + 1; _i18 < this.n; _i18++) {\n this.V[_i18][_j5] += _t3 * this.V[_i18][_k2];\n };\n };\n }\n for (var _i19 = 0; _i19 < this.n; _i19++) {\n this.V[_i19][_k2] = 0.0;\n };\n this.V[_k2][_k2] = 1.0;\n };\n }\n var pp = p - 1;\n var iter = 0;\n var eps = Math.pow(2.0, -52.0);\n var tiny = Math.pow(2.0, -966.0);\n while (p > 0) {\n var _k3 = void 0;\n var kase = void 0;\n for (_k3 = p - 2; _k3 >= -1; _k3--) {\n if (_k3 === -1) {\n break;\n }\n if (Math.abs(e[_k3]) <= tiny + eps * (Math.abs(this.s[_k3]) + Math.abs(this.s[_k3 + 1]))) {\n e[_k3] = 0.0;\n break;\n }\n };\n if (_k3 === p - 2) {\n kase = 4;\n } else {\n var ks = void 0;\n for (ks = p - 1; ks >= _k3; ks--) {\n if (ks === _k3) {\n break;\n }\n var _t4 = (ks !== p ? Math.abs(e[ks]) : 0.0) + (ks !== _k3 + 1 ? Math.abs(e[ks - 1]) : 0.0);\n if (Math.abs(this.s[ks]) <= tiny + eps * _t4) {\n this.s[ks] = 0.0;\n break;\n }\n };\n if (ks === _k3) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n _k3 = ks;\n }\n }\n _k3++;\n switch (kase) {\n case 1:\n {\n var f = e[p - 2];\n e[p - 2] = 0.0;\n for (var _j6 = p - 2; _j6 >= _k3; _j6--) {\n var _t5 = SVD.hypot(this.s[_j6], f);\n var cs = this.s[_j6] / _t5;\n var sn = f / _t5;\n this.s[_j6] = _t5;\n if (_j6 !== _k3) {\n f = -sn * e[_j6 - 1];\n e[_j6 - 1] = cs * e[_j6 - 1];\n }\n if (wantv) {\n for (var _i20 = 0; _i20 < this.n; _i20++) {\n _t5 = cs * this.V[_i20][_j6] + sn * this.V[_i20][p - 1];\n this.V[_i20][p - 1] = -sn * this.V[_i20][_j6] + cs * this.V[_i20][p - 1];\n this.V[_i20][_j6] = _t5;\n };\n }\n };\n };\n break;\n case 2:\n {\n var _f = e[_k3 - 1];\n e[_k3 - 1] = 0.0;\n for (var _j7 = _k3; _j7 < p; _j7++) {\n var _t6 = SVD.hypot(this.s[_j7], _f);\n var _cs = this.s[_j7] / _t6;\n var _sn = _f / _t6;\n this.s[_j7] = _t6;\n _f = -_sn * e[_j7];\n e[_j7] = _cs * e[_j7];\n if (wantu) {\n for (var _i21 = 0; _i21 < this.m; _i21++) {\n _t6 = _cs * this.U[_i21][_j7] + _sn * this.U[_i21][_k3 - 1];\n this.U[_i21][_k3 - 1] = -_sn * this.U[_i21][_j7] + _cs * this.U[_i21][_k3 - 1];\n this.U[_i21][_j7] = _t6;\n };\n }\n };\n };\n break;\n case 3:\n {\n var scale = Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[p - 1]), Math.abs(this.s[p - 2])), Math.abs(e[p - 2])), Math.abs(this.s[_k3])), Math.abs(e[_k3]));\n var sp = this.s[p - 1] / scale;\n var spm1 = this.s[p - 2] / scale;\n var epm1 = e[p - 2] / scale;\n var sk = this.s[_k3] / scale;\n var ek = e[_k3] / scale;\n var b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2.0;\n var c = sp * epm1 * (sp * epm1);\n var shift = 0.0;\n if (function (lhs, rhs) {\n return lhs || rhs;\n }(b !== 0.0, c !== 0.0)) {\n shift = Math.sqrt(b * b + c);\n if (b < 0.0) {\n shift = -shift;\n }\n shift = c / (b + shift);\n }\n var _f2 = (sk + sp) * (sk - sp) + shift;\n var g = sk * ek;\n for (var _j8 = _k3; _j8 < p - 1; _j8++) {\n var _t7 = SVD.hypot(_f2, g);\n var _cs2 = _f2 / _t7;\n var _sn2 = g / _t7;\n if (_j8 !== _k3) {\n e[_j8 - 1] = _t7;\n }\n _f2 = _cs2 * this.s[_j8] + _sn2 * e[_j8];\n e[_j8] = _cs2 * e[_j8] - _sn2 * this.s[_j8];\n g = _sn2 * this.s[_j8 + 1];\n this.s[_j8 + 1] = _cs2 * this.s[_j8 + 1];\n if (wantv) {\n for (var _i22 = 0; _i22 < this.n; _i22++) {\n _t7 = _cs2 * this.V[_i22][_j8] + _sn2 * this.V[_i22][_j8 + 1];\n this.V[_i22][_j8 + 1] = -_sn2 * this.V[_i22][_j8] + _cs2 * this.V[_i22][_j8 + 1];\n this.V[_i22][_j8] = _t7;\n };\n }\n _t7 = SVD.hypot(_f2, g);\n _cs2 = _f2 / _t7;\n _sn2 = g / _t7;\n this.s[_j8] = _t7;\n _f2 = _cs2 * e[_j8] + _sn2 * this.s[_j8 + 1];\n this.s[_j8 + 1] = -_sn2 * e[_j8] + _cs2 * this.s[_j8 + 1];\n g = _sn2 * e[_j8 + 1];\n e[_j8 + 1] = _cs2 * e[_j8 + 1];\n if (wantu && _j8 < this.m - 1) {\n for (var _i23 = 0; _i23 < this.m; _i23++) {\n _t7 = _cs2 * this.U[_i23][_j8] + _sn2 * this.U[_i23][_j8 + 1];\n this.U[_i23][_j8 + 1] = -_sn2 * this.U[_i23][_j8] + _cs2 * this.U[_i23][_j8 + 1];\n this.U[_i23][_j8] = _t7;\n };\n }\n };\n e[p - 2] = _f2;\n iter = iter + 1;\n };\n break;\n case 4:\n {\n if (this.s[_k3] <= 0.0) {\n this.s[_k3] = this.s[_k3] < 0.0 ? -this.s[_k3] : 0.0;\n if (wantv) {\n for (var _i24 = 0; _i24 <= pp; _i24++) {\n this.V[_i24][_k3] = -this.V[_i24][_k3];\n };\n }\n }\n while (_k3 < pp) {\n if (this.s[_k3] >= this.s[_k3 + 1]) {\n break;\n }\n var _t8 = this.s[_k3];\n this.s[_k3] = this.s[_k3 + 1];\n this.s[_k3 + 1] = _t8;\n if (wantv && _k3 < this.n - 1) {\n for (var _i25 = 0; _i25 < this.n; _i25++) {\n _t8 = this.V[_i25][_k3 + 1];\n this.V[_i25][_k3 + 1] = this.V[_i25][_k3];\n this.V[_i25][_k3] = _t8;\n };\n }\n if (wantu && _k3 < this.m - 1) {\n for (var _i26 = 0; _i26 < this.m; _i26++) {\n _t8 = this.U[_i26][_k3 + 1];\n this.U[_i26][_k3 + 1] = this.U[_i26][_k3];\n this.U[_i26][_k3] = _t8;\n };\n }\n _k3++;\n };\n iter = 0;\n p--;\n };\n break;\n }\n };\n var result = { U: this.U, V: this.V, S: this.s };\n return result;\n};\n\n// sqrt(a^2 + b^2) without under/overflow.\nSVD.hypot = function (a, b) {\n var r = void 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n r = Math.abs(a) * Math.sqrt(1 + r * r);\n } else if (b != 0) {\n r = a / b;\n r = Math.abs(b) * Math.sqrt(1 + r * r);\n } else {\n r = 0.0;\n }\n return r;\n};\n\nmodule.exports = SVD;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string\n * sequences by S.B.Needleman and C.D.Wunsch (1970).\n *\n * Aside from the inputs, you can assign the scores for,\n * - Match: The two characters at the current index are same.\n * - Mismatch: The two characters at the current index are different.\n * - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string.\n */\n\nvar NeedlemanWunsch = function () {\n function NeedlemanWunsch(sequence1, sequence2) {\n var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1;\n var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n\n _classCallCheck(this, NeedlemanWunsch);\n\n this.sequence1 = sequence1;\n this.sequence2 = sequence2;\n this.match_score = match_score;\n this.mismatch_penalty = mismatch_penalty;\n this.gap_penalty = gap_penalty;\n\n // Just the remove redundancy\n this.iMax = sequence1.length + 1;\n this.jMax = sequence2.length + 1;\n\n // Grid matrix of scores\n this.grid = new Array(this.iMax);\n for (var i = 0; i < this.iMax; i++) {\n this.grid[i] = new Array(this.jMax);\n\n for (var j = 0; j < this.jMax; j++) {\n this.grid[i][j] = 0;\n }\n }\n\n // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions)\n this.tracebackGrid = new Array(this.iMax);\n for (var _i = 0; _i < this.iMax; _i++) {\n this.tracebackGrid[_i] = new Array(this.jMax);\n\n for (var _j = 0; _j < this.jMax; _j++) {\n this.tracebackGrid[_i][_j] = [null, null, null];\n }\n }\n\n // The aligned sequences (return multiple possibilities)\n this.alignments = [];\n\n // Final alignment score\n this.score = -1;\n\n // Calculate scores and tracebacks\n this.computeGrids();\n }\n\n _createClass(NeedlemanWunsch, [{\n key: \"getScore\",\n value: function getScore() {\n return this.score;\n }\n }, {\n key: \"getAlignments\",\n value: function getAlignments() {\n return this.alignments;\n }\n\n // Main dynamic programming procedure\n\n }, {\n key: \"computeGrids\",\n value: function computeGrids() {\n // Fill in the first row\n for (var j = 1; j < this.jMax; j++) {\n this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty;\n this.tracebackGrid[0][j] = [false, false, true];\n }\n\n // Fill in the first column\n for (var i = 1; i < this.iMax; i++) {\n this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty;\n this.tracebackGrid[i][0] = [false, true, false];\n }\n\n // Fill the rest of the grid\n for (var _i2 = 1; _i2 < this.iMax; _i2++) {\n for (var _j2 = 1; _j2 < this.jMax; _j2++) {\n // Find the max score(s) among [`Diag`, `Up`, `Left`]\n var diag = void 0;\n if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty;\n\n var up = this.grid[_i2 - 1][_j2] + this.gap_penalty;\n var left = this.grid[_i2][_j2 - 1] + this.gap_penalty;\n\n // If there exists multiple max values, capture them for multiple paths\n var maxOf = [diag, up, left];\n var indices = this.arrayAllMaxIndexes(maxOf);\n\n // Update Grids\n this.grid[_i2][_j2] = maxOf[indices[0]];\n this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)];\n }\n }\n\n // Update alignment score\n this.score = this.grid[this.iMax - 1][this.jMax - 1];\n }\n\n // Gets all possible valid sequence combinations\n\n }, {\n key: \"alignmentTraceback\",\n value: function alignmentTraceback() {\n var inProcessAlignments = [];\n\n inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length],\n seq1: \"\",\n seq2: \"\"\n });\n\n while (inProcessAlignments[0]) {\n var current = inProcessAlignments[0];\n var directions = this.tracebackGrid[current.pos[0]][current.pos[1]];\n\n if (directions[0]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n if (directions[1]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: '-' + current.seq2\n });\n }\n if (directions[2]) {\n inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1],\n seq1: '-' + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n\n if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1,\n sequence2: current.seq2\n });\n\n inProcessAlignments.shift();\n }\n\n return this.alignments;\n }\n\n // Helper Functions\n\n }, {\n key: \"getAllIndexes\",\n value: function getAllIndexes(arr, val) {\n var indexes = [],\n i = -1;\n while ((i = arr.indexOf(val, i + 1)) !== -1) {\n indexes.push(i);\n }\n return indexes;\n }\n }, {\n key: \"arrayAllMaxIndexes\",\n value: function arrayAllMaxIndexes(array) {\n return this.getAllIndexes(array, Math.max.apply(null, array));\n }\n }]);\n\n return NeedlemanWunsch;\n}();\n\nmodule.exports = NeedlemanWunsch;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar layoutBase = function layoutBase() {\n return;\n};\n\nlayoutBase.FDLayout = __webpack_require__(18);\nlayoutBase.FDLayoutConstants = __webpack_require__(4);\nlayoutBase.FDLayoutEdge = __webpack_require__(19);\nlayoutBase.FDLayoutNode = __webpack_require__(20);\nlayoutBase.DimensionD = __webpack_require__(21);\nlayoutBase.HashMap = __webpack_require__(22);\nlayoutBase.HashSet = __webpack_require__(23);\nlayoutBase.IGeometry = __webpack_require__(8);\nlayoutBase.IMath = __webpack_require__(9);\nlayoutBase.Integer = __webpack_require__(10);\nlayoutBase.Point = __webpack_require__(12);\nlayoutBase.PointD = __webpack_require__(5);\nlayoutBase.RandomSeed = __webpack_require__(16);\nlayoutBase.RectangleD = __webpack_require__(13);\nlayoutBase.Transform = __webpack_require__(17);\nlayoutBase.UniqueIDGeneretor = __webpack_require__(14);\nlayoutBase.Quicksort = __webpack_require__(25);\nlayoutBase.LinkedList = __webpack_require__(11);\nlayoutBase.LGraphObject = __webpack_require__(2);\nlayoutBase.LGraph = __webpack_require__(6);\nlayoutBase.LEdge = __webpack_require__(1);\nlayoutBase.LGraphManager = __webpack_require__(7);\nlayoutBase.LNode = __webpack_require__(3);\nlayoutBase.Layout = __webpack_require__(15);\nlayoutBase.LayoutConstants = __webpack_require__(0);\nlayoutBase.NeedlemanWunsch = __webpack_require__(27);\nlayoutBase.Matrix = __webpack_require__(24);\nlayoutBase.SVD = __webpack_require__(26);\n\nmodule.exports = layoutBase;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Emitter() {\n this.listeners = [];\n}\n\nvar p = Emitter.prototype;\n\np.addListener = function (event, callback) {\n this.listeners.push({\n event: event,\n callback: callback\n });\n};\n\np.removeListener = function (event, callback) {\n for (var i = this.listeners.length; i >= 0; i--) {\n var l = this.listeners[i];\n\n if (l.event === event && l.callback === callback) {\n this.listeners.splice(i, 1);\n }\n }\n};\n\np.emit = function (event, data) {\n for (var i = 0; i < this.listeners.length; i++) {\n var l = this.listeners[i];\n\n if (event === l.event) {\n l.callback(data);\n }\n }\n};\n\nmodule.exports = Emitter;\n\n/***/ })\n/******/ ]);\n});", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"layout-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"layout-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"coseBase\"] = factory(require(\"layout-base\"));\n\telse\n\t\troot[\"coseBase\"] = factory(root[\"layoutBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__551__) {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 45:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar coseBase = {};\n\ncoseBase.layoutBase = __webpack_require__(551);\ncoseBase.CoSEConstants = __webpack_require__(806);\ncoseBase.CoSEEdge = __webpack_require__(767);\ncoseBase.CoSEGraph = __webpack_require__(880);\ncoseBase.CoSEGraphManager = __webpack_require__(578);\ncoseBase.CoSELayout = __webpack_require__(765);\ncoseBase.CoSENode = __webpack_require__(991);\ncoseBase.ConstraintHandler = __webpack_require__(902);\n\nmodule.exports = coseBase;\n\n/***/ }),\n\n/***/ 806:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutConstants = __webpack_require__(551).FDLayoutConstants;\n\nfunction CoSEConstants() {}\n\n//CoSEConstants inherits static props in FDLayoutConstants\nfor (var prop in FDLayoutConstants) {\n CoSEConstants[prop] = FDLayoutConstants[prop];\n}\n\nCoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false;\nCoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\nCoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60;\nCoSEConstants.TILE = true;\nCoSEConstants.TILING_PADDING_VERTICAL = 10;\nCoSEConstants.TILING_PADDING_HORIZONTAL = 10;\nCoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;\nCoSEConstants.ENFORCE_CONSTRAINTS = true;\nCoSEConstants.APPLY_LAYOUT = true;\nCoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS = true;\nCoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true; // this should be set to false if there will be a constraint\n// This constant is for differentiating whether actual layout algorithm that uses cose-base wants to apply only incremental layout or \n// an incremental layout on top of a randomized layout. If it is only incremental layout, then this constant should be true.\nCoSEConstants.PURE_INCREMENTAL = CoSEConstants.DEFAULT_INCREMENTAL;\n\nmodule.exports = CoSEConstants;\n\n/***/ }),\n\n/***/ 767:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutEdge = __webpack_require__(551).FDLayoutEdge;\n\nfunction CoSEEdge(source, target, vEdge) {\n FDLayoutEdge.call(this, source, target, vEdge);\n}\n\nCoSEEdge.prototype = Object.create(FDLayoutEdge.prototype);\nfor (var prop in FDLayoutEdge) {\n CoSEEdge[prop] = FDLayoutEdge[prop];\n}\n\nmodule.exports = CoSEEdge;\n\n/***/ }),\n\n/***/ 880:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar LGraph = __webpack_require__(551).LGraph;\n\nfunction CoSEGraph(parent, graphMgr, vGraph) {\n LGraph.call(this, parent, graphMgr, vGraph);\n}\n\nCoSEGraph.prototype = Object.create(LGraph.prototype);\nfor (var prop in LGraph) {\n CoSEGraph[prop] = LGraph[prop];\n}\n\nmodule.exports = CoSEGraph;\n\n/***/ }),\n\n/***/ 578:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar LGraphManager = __webpack_require__(551).LGraphManager;\n\nfunction CoSEGraphManager(layout) {\n LGraphManager.call(this, layout);\n}\n\nCoSEGraphManager.prototype = Object.create(LGraphManager.prototype);\nfor (var prop in LGraphManager) {\n CoSEGraphManager[prop] = LGraphManager[prop];\n}\n\nmodule.exports = CoSEGraphManager;\n\n/***/ }),\n\n/***/ 765:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayout = __webpack_require__(551).FDLayout;\nvar CoSEGraphManager = __webpack_require__(578);\nvar CoSEGraph = __webpack_require__(880);\nvar CoSENode = __webpack_require__(991);\nvar CoSEEdge = __webpack_require__(767);\nvar CoSEConstants = __webpack_require__(806);\nvar ConstraintHandler = __webpack_require__(902);\nvar FDLayoutConstants = __webpack_require__(551).FDLayoutConstants;\nvar LayoutConstants = __webpack_require__(551).LayoutConstants;\nvar Point = __webpack_require__(551).Point;\nvar PointD = __webpack_require__(551).PointD;\nvar DimensionD = __webpack_require__(551).DimensionD;\nvar Layout = __webpack_require__(551).Layout;\nvar Integer = __webpack_require__(551).Integer;\nvar IGeometry = __webpack_require__(551).IGeometry;\nvar LGraph = __webpack_require__(551).LGraph;\nvar Transform = __webpack_require__(551).Transform;\nvar LinkedList = __webpack_require__(551).LinkedList;\n\nfunction CoSELayout() {\n FDLayout.call(this);\n\n this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled\n this.constraints = {}; // keep layout constraints\n}\n\nCoSELayout.prototype = Object.create(FDLayout.prototype);\n\nfor (var prop in FDLayout) {\n CoSELayout[prop] = FDLayout[prop];\n}\n\nCoSELayout.prototype.newGraphManager = function () {\n var gm = new CoSEGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nCoSELayout.prototype.newGraph = function (vGraph) {\n return new CoSEGraph(null, this.graphManager, vGraph);\n};\n\nCoSELayout.prototype.newNode = function (vNode) {\n return new CoSENode(this.graphManager, vNode);\n};\n\nCoSELayout.prototype.newEdge = function (vEdge) {\n return new CoSEEdge(null, null, vEdge);\n};\n\nCoSELayout.prototype.initParameters = function () {\n FDLayout.prototype.initParameters.call(this, arguments);\n if (!this.isSubLayout) {\n if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) {\n this.idealEdgeLength = 10;\n } else {\n this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH;\n }\n\n this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n\n // variables for tree reduction support\n this.prunedNodesAll = [];\n this.growTreeIterations = 0;\n this.afterGrowthIterations = 0;\n this.isTreeGrowing = false;\n this.isGrowthFinished = false;\n }\n};\n\n// This method is used to set CoSE related parameters used by spring embedder.\nCoSELayout.prototype.initSpringEmbedder = function () {\n FDLayout.prototype.initSpringEmbedder.call(this);\n\n // variables for cooling\n this.coolingCycle = 0;\n this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD;\n this.finalTemperature = 0.04;\n this.coolingAdjuster = 1;\n};\n\nCoSELayout.prototype.layout = function () {\n var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n if (createBendsAsNeeded) {\n this.createBendpoints();\n this.graphManager.resetAllEdges();\n }\n\n this.level = 0;\n return this.classicLayout();\n};\n\nCoSELayout.prototype.classicLayout = function () {\n this.nodesWithGravity = this.calculateNodesToApplyGravitationTo();\n this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity);\n this.calcNoOfChildrenForAllNodes();\n this.graphManager.calcLowestCommonAncestors();\n this.graphManager.calcInclusionTreeDepths();\n this.graphManager.getRoot().calcEstimatedSize();\n this.calcIdealEdgeLengths();\n\n if (!this.incremental) {\n var forest = this.getFlatForest();\n\n // The graph associated with this layout is flat and a forest\n if (forest.length > 0) {\n this.positionNodesRadially(forest);\n }\n // The graph associated with this layout is not flat or a forest\n else {\n // Reduce the trees when incremental mode is not enabled and graph is not a forest \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.positionNodesRandomly();\n }\n } else {\n if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) {\n // Reduce the trees in incremental mode if only this constant is set to true \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n }\n }\n\n if (Object.keys(this.constraints).length > 0) {\n ConstraintHandler.handleConstraints(this);\n this.initConstraintVariables();\n }\n\n this.initSpringEmbedder();\n if (CoSEConstants.APPLY_LAYOUT) {\n this.runSpringEmbedder();\n }\n\n return true;\n};\n\nCoSELayout.prototype.tick = function () {\n this.totalIterations++;\n\n if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.isConverged()) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n this.coolingCycle++;\n\n if (this.layoutQuality == 0) {\n // quality - \"draft\"\n this.coolingAdjuster = this.coolingCycle;\n } else if (this.layoutQuality == 1) {\n // quality - \"default\"\n this.coolingAdjuster = this.coolingCycle / 3;\n }\n\n // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3\n this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature);\n this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor));\n }\n // Operations while tree is growing again \n if (this.isTreeGrowing) {\n if (this.growTreeIterations % 10 == 0) {\n if (this.prunedNodesAll.length > 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n this.growTree(this.prunedNodesAll);\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.graphManager.updateBounds();\n this.updateGrid();\n if (CoSEConstants.PURE_INCREMENTAL) this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2;else this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n } else {\n this.isTreeGrowing = false;\n this.isGrowthFinished = true;\n }\n }\n this.growTreeIterations++;\n }\n // Operations after growth is finished\n if (this.isGrowthFinished) {\n if (this.isConverged()) {\n return true;\n }\n if (this.afterGrowthIterations % 10 == 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n }\n if (CoSEConstants.PURE_INCREMENTAL) this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2 * ((100 - this.afterGrowthIterations) / 100);else this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100);\n this.afterGrowthIterations++;\n }\n\n var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished;\n var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished;\n\n this.totalDisplacement = 0;\n this.graphManager.updateBounds();\n this.calcSpringForces();\n this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate);\n this.calcGravitationalForces();\n this.moveNodes();\n this.animate();\n\n return false; // Layout is not ended yet return false\n};\n\nCoSELayout.prototype.getPositionsData = function () {\n var allNodes = this.graphManager.getAllNodes();\n var pData = {};\n for (var i = 0; i < allNodes.length; i++) {\n var rect = allNodes[i].rect;\n var id = allNodes[i].id;\n pData[id] = {\n id: id,\n x: rect.getCenterX(),\n y: rect.getCenterY(),\n w: rect.width,\n h: rect.height\n };\n }\n\n return pData;\n};\n\nCoSELayout.prototype.runSpringEmbedder = function () {\n this.initialAnimationPeriod = 25;\n this.animationPeriod = this.initialAnimationPeriod;\n var layoutEnded = false;\n\n // If aminate option is 'during' signal that layout is supposed to start iterating\n if (FDLayoutConstants.ANIMATE === 'during') {\n this.emit('layoutstarted');\n } else {\n // If aminate option is 'during' tick() function will be called on index.js\n while (!layoutEnded) {\n layoutEnded = this.tick();\n }\n\n this.graphManager.updateBounds();\n }\n};\n\n// overrides moveNodes method in FDLayout\nCoSELayout.prototype.moveNodes = function () {\n var lNodes = this.getAllNodes();\n var node;\n\n // calculate displacement for each node \n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.calculateDisplacement();\n }\n\n if (Object.keys(this.constraints).length > 0) {\n this.updateDisplacements();\n }\n\n // move each node\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.move();\n }\n};\n\n// constraint related methods: initConstraintVariables and updateDisplacements\n\n// initialize constraint related variables\nCoSELayout.prototype.initConstraintVariables = function () {\n var self = this;\n this.idToNodeMap = new Map();\n this.fixedNodeSet = new Set();\n\n var allNodes = this.graphManager.getAllNodes();\n\n // fill idToNodeMap\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n this.idToNodeMap.set(node.id, node);\n }\n\n // calculate fixed node weight for given compound node\n var calculateCompoundWeight = function calculateCompoundWeight(compoundNode) {\n var nodes = compoundNode.getChild().getNodes();\n var node;\n var fixedNodeWeight = 0;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n if (self.fixedNodeSet.has(node.id)) {\n fixedNodeWeight += 100;\n }\n } else {\n fixedNodeWeight += calculateCompoundWeight(node);\n }\n }\n return fixedNodeWeight;\n };\n\n if (this.constraints.fixedNodeConstraint) {\n // fill fixedNodeSet\n this.constraints.fixedNodeConstraint.forEach(function (nodeData) {\n self.fixedNodeSet.add(nodeData.nodeId);\n });\n\n // assign fixed node weights to compounds if they contain fixed nodes\n var allNodes = this.graphManager.getAllNodes();\n var node;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getChild() != null) {\n var fixedNodeWeight = calculateCompoundWeight(node);\n if (fixedNodeWeight > 0) {\n node.fixedNodeWeight = fixedNodeWeight;\n }\n }\n }\n }\n\n if (this.constraints.relativePlacementConstraint) {\n var nodeToDummyForVerticalAlignment = new Map();\n var nodeToDummyForHorizontalAlignment = new Map();\n this.dummyToNodeForVerticalAlignment = new Map();\n this.dummyToNodeForHorizontalAlignment = new Map();\n this.fixedNodesOnHorizontal = new Set();\n this.fixedNodesOnVertical = new Set();\n\n // fill maps and sets\n this.fixedNodeSet.forEach(function (nodeId) {\n self.fixedNodesOnHorizontal.add(nodeId);\n self.fixedNodesOnVertical.add(nodeId);\n });\n\n if (this.constraints.alignmentConstraint) {\n if (this.constraints.alignmentConstraint.vertical) {\n var verticalAlignment = this.constraints.alignmentConstraint.vertical;\n for (var i = 0; i < verticalAlignment.length; i++) {\n this.dummyToNodeForVerticalAlignment.set(\"dummy\" + i, []);\n verticalAlignment[i].forEach(function (nodeId) {\n nodeToDummyForVerticalAlignment.set(nodeId, \"dummy\" + i);\n self.dummyToNodeForVerticalAlignment.get(\"dummy\" + i).push(nodeId);\n if (self.fixedNodeSet.has(nodeId)) {\n self.fixedNodesOnHorizontal.add(\"dummy\" + i);\n }\n });\n }\n }\n if (this.constraints.alignmentConstraint.horizontal) {\n var horizontalAlignment = this.constraints.alignmentConstraint.horizontal;\n for (var i = 0; i < horizontalAlignment.length; i++) {\n this.dummyToNodeForHorizontalAlignment.set(\"dummy\" + i, []);\n horizontalAlignment[i].forEach(function (nodeId) {\n nodeToDummyForHorizontalAlignment.set(nodeId, \"dummy\" + i);\n self.dummyToNodeForHorizontalAlignment.get(\"dummy\" + i).push(nodeId);\n if (self.fixedNodeSet.has(nodeId)) {\n self.fixedNodesOnVertical.add(\"dummy\" + i);\n }\n });\n }\n }\n }\n\n if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) {\n\n this.shuffle = function (array) {\n var j, x, i;\n for (i = array.length - 1; i >= 2 * array.length / 3; i--) {\n j = Math.floor(Math.random() * (i + 1));\n x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n };\n\n this.nodesInRelativeHorizontal = [];\n this.nodesInRelativeVertical = [];\n this.nodeToRelativeConstraintMapHorizontal = new Map();\n this.nodeToRelativeConstraintMapVertical = new Map();\n this.nodeToTempPositionMapHorizontal = new Map();\n this.nodeToTempPositionMapVertical = new Map();\n\n // fill arrays and maps\n this.constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n var nodeIdLeft = nodeToDummyForVerticalAlignment.has(constraint.left) ? nodeToDummyForVerticalAlignment.get(constraint.left) : constraint.left;\n var nodeIdRight = nodeToDummyForVerticalAlignment.has(constraint.right) ? nodeToDummyForVerticalAlignment.get(constraint.right) : constraint.right;\n\n if (!self.nodesInRelativeHorizontal.includes(nodeIdLeft)) {\n self.nodesInRelativeHorizontal.push(nodeIdLeft);\n self.nodeToRelativeConstraintMapHorizontal.set(nodeIdLeft, []);\n if (self.dummyToNodeForVerticalAlignment.has(nodeIdLeft)) {\n self.nodeToTempPositionMapHorizontal.set(nodeIdLeft, self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeIdLeft)[0]).getCenterX());\n } else {\n self.nodeToTempPositionMapHorizontal.set(nodeIdLeft, self.idToNodeMap.get(nodeIdLeft).getCenterX());\n }\n }\n if (!self.nodesInRelativeHorizontal.includes(nodeIdRight)) {\n self.nodesInRelativeHorizontal.push(nodeIdRight);\n self.nodeToRelativeConstraintMapHorizontal.set(nodeIdRight, []);\n if (self.dummyToNodeForVerticalAlignment.has(nodeIdRight)) {\n self.nodeToTempPositionMapHorizontal.set(nodeIdRight, self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeIdRight)[0]).getCenterX());\n } else {\n self.nodeToTempPositionMapHorizontal.set(nodeIdRight, self.idToNodeMap.get(nodeIdRight).getCenterX());\n }\n }\n\n self.nodeToRelativeConstraintMapHorizontal.get(nodeIdLeft).push({ right: nodeIdRight, gap: constraint.gap });\n self.nodeToRelativeConstraintMapHorizontal.get(nodeIdRight).push({ left: nodeIdLeft, gap: constraint.gap });\n } else {\n var nodeIdTop = nodeToDummyForHorizontalAlignment.has(constraint.top) ? nodeToDummyForHorizontalAlignment.get(constraint.top) : constraint.top;\n var nodeIdBottom = nodeToDummyForHorizontalAlignment.has(constraint.bottom) ? nodeToDummyForHorizontalAlignment.get(constraint.bottom) : constraint.bottom;\n\n if (!self.nodesInRelativeVertical.includes(nodeIdTop)) {\n self.nodesInRelativeVertical.push(nodeIdTop);\n self.nodeToRelativeConstraintMapVertical.set(nodeIdTop, []);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeIdTop)) {\n self.nodeToTempPositionMapVertical.set(nodeIdTop, self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeIdTop)[0]).getCenterY());\n } else {\n self.nodeToTempPositionMapVertical.set(nodeIdTop, self.idToNodeMap.get(nodeIdTop).getCenterY());\n }\n }\n if (!self.nodesInRelativeVertical.includes(nodeIdBottom)) {\n self.nodesInRelativeVertical.push(nodeIdBottom);\n self.nodeToRelativeConstraintMapVertical.set(nodeIdBottom, []);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeIdBottom)) {\n self.nodeToTempPositionMapVertical.set(nodeIdBottom, self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeIdBottom)[0]).getCenterY());\n } else {\n self.nodeToTempPositionMapVertical.set(nodeIdBottom, self.idToNodeMap.get(nodeIdBottom).getCenterY());\n }\n }\n self.nodeToRelativeConstraintMapVertical.get(nodeIdTop).push({ bottom: nodeIdBottom, gap: constraint.gap });\n self.nodeToRelativeConstraintMapVertical.get(nodeIdBottom).push({ top: nodeIdTop, gap: constraint.gap });\n }\n });\n } else {\n var subGraphOnHorizontal = new Map(); // subgraph from vertical RP constraints\n var subGraphOnVertical = new Map(); // subgraph from vertical RP constraints\n\n // construct subgraphs from relative placement constraints \n this.constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n var left = nodeToDummyForVerticalAlignment.has(constraint.left) ? nodeToDummyForVerticalAlignment.get(constraint.left) : constraint.left;\n var right = nodeToDummyForVerticalAlignment.has(constraint.right) ? nodeToDummyForVerticalAlignment.get(constraint.right) : constraint.right;\n if (subGraphOnHorizontal.has(left)) {\n subGraphOnHorizontal.get(left).push(right);\n } else {\n subGraphOnHorizontal.set(left, [right]);\n }\n if (subGraphOnHorizontal.has(right)) {\n subGraphOnHorizontal.get(right).push(left);\n } else {\n subGraphOnHorizontal.set(right, [left]);\n }\n } else {\n var top = nodeToDummyForHorizontalAlignment.has(constraint.top) ? nodeToDummyForHorizontalAlignment.get(constraint.top) : constraint.top;\n var bottom = nodeToDummyForHorizontalAlignment.has(constraint.bottom) ? nodeToDummyForHorizontalAlignment.get(constraint.bottom) : constraint.bottom;\n if (subGraphOnVertical.has(top)) {\n subGraphOnVertical.get(top).push(bottom);\n } else {\n subGraphOnVertical.set(top, [bottom]);\n }\n if (subGraphOnVertical.has(bottom)) {\n subGraphOnVertical.get(bottom).push(top);\n } else {\n subGraphOnVertical.set(bottom, [top]);\n }\n }\n });\n\n // function to construct components from a given graph \n // also returns an array that keeps whether each component contains fixed node\n var constructComponents = function constructComponents(graph, fixedNodes) {\n var components = [];\n var isFixed = [];\n var queue = new LinkedList();\n var visited = new Set();\n var count = 0;\n\n graph.forEach(function (value, key) {\n if (!visited.has(key)) {\n components[count] = [];\n isFixed[count] = false;\n var currentNode = key;\n queue.push(currentNode);\n visited.add(currentNode);\n components[count].push(currentNode);\n\n while (queue.length != 0) {\n currentNode = queue.shift();\n if (fixedNodes.has(currentNode)) {\n isFixed[count] = true;\n }\n var neighbors = graph.get(currentNode);\n neighbors.forEach(function (neighbor) {\n if (!visited.has(neighbor)) {\n queue.push(neighbor);\n visited.add(neighbor);\n components[count].push(neighbor);\n }\n });\n }\n count++;\n }\n });\n\n return { components: components, isFixed: isFixed };\n };\n\n var resultOnHorizontal = constructComponents(subGraphOnHorizontal, self.fixedNodesOnHorizontal);\n this.componentsOnHorizontal = resultOnHorizontal.components;\n this.fixedComponentsOnHorizontal = resultOnHorizontal.isFixed;\n var resultOnVertical = constructComponents(subGraphOnVertical, self.fixedNodesOnVertical);\n this.componentsOnVertical = resultOnVertical.components;\n this.fixedComponentsOnVertical = resultOnVertical.isFixed;\n }\n }\n};\n\n// updates node displacements based on constraints\nCoSELayout.prototype.updateDisplacements = function () {\n var self = this;\n if (this.constraints.fixedNodeConstraint) {\n this.constraints.fixedNodeConstraint.forEach(function (nodeData) {\n var fixedNode = self.idToNodeMap.get(nodeData.nodeId);\n fixedNode.displacementX = 0;\n fixedNode.displacementY = 0;\n });\n }\n\n if (this.constraints.alignmentConstraint) {\n if (this.constraints.alignmentConstraint.vertical) {\n var allVerticalAlignments = this.constraints.alignmentConstraint.vertical;\n for (var i = 0; i < allVerticalAlignments.length; i++) {\n var totalDisplacementX = 0;\n for (var j = 0; j < allVerticalAlignments[i].length; j++) {\n if (this.fixedNodeSet.has(allVerticalAlignments[i][j])) {\n totalDisplacementX = 0;\n break;\n }\n totalDisplacementX += this.idToNodeMap.get(allVerticalAlignments[i][j]).displacementX;\n }\n var averageDisplacementX = totalDisplacementX / allVerticalAlignments[i].length;\n for (var j = 0; j < allVerticalAlignments[i].length; j++) {\n this.idToNodeMap.get(allVerticalAlignments[i][j]).displacementX = averageDisplacementX;\n }\n }\n }\n if (this.constraints.alignmentConstraint.horizontal) {\n var allHorizontalAlignments = this.constraints.alignmentConstraint.horizontal;\n for (var i = 0; i < allHorizontalAlignments.length; i++) {\n var totalDisplacementY = 0;\n for (var j = 0; j < allHorizontalAlignments[i].length; j++) {\n if (this.fixedNodeSet.has(allHorizontalAlignments[i][j])) {\n totalDisplacementY = 0;\n break;\n }\n totalDisplacementY += this.idToNodeMap.get(allHorizontalAlignments[i][j]).displacementY;\n }\n var averageDisplacementY = totalDisplacementY / allHorizontalAlignments[i].length;\n for (var j = 0; j < allHorizontalAlignments[i].length; j++) {\n this.idToNodeMap.get(allHorizontalAlignments[i][j]).displacementY = averageDisplacementY;\n }\n }\n }\n }\n\n if (this.constraints.relativePlacementConstraint) {\n\n if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) {\n // shuffle array to randomize node processing order\n if (this.totalIterations % 10 == 0) {\n this.shuffle(this.nodesInRelativeHorizontal);\n this.shuffle(this.nodesInRelativeVertical);\n }\n\n this.nodesInRelativeHorizontal.forEach(function (nodeId) {\n if (!self.fixedNodesOnHorizontal.has(nodeId)) {\n var displacement = 0;\n if (self.dummyToNodeForVerticalAlignment.has(nodeId)) {\n displacement = self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeId)[0]).displacementX;\n } else {\n displacement = self.idToNodeMap.get(nodeId).displacementX;\n }\n self.nodeToRelativeConstraintMapHorizontal.get(nodeId).forEach(function (constraint) {\n if (constraint.right) {\n var diff = self.nodeToTempPositionMapHorizontal.get(constraint.right) - self.nodeToTempPositionMapHorizontal.get(nodeId) - displacement;\n if (diff < constraint.gap) {\n displacement -= constraint.gap - diff;\n }\n } else {\n var diff = self.nodeToTempPositionMapHorizontal.get(nodeId) - self.nodeToTempPositionMapHorizontal.get(constraint.left) + displacement;\n if (diff < constraint.gap) {\n displacement += constraint.gap - diff;\n }\n }\n });\n self.nodeToTempPositionMapHorizontal.set(nodeId, self.nodeToTempPositionMapHorizontal.get(nodeId) + displacement);\n if (self.dummyToNodeForVerticalAlignment.has(nodeId)) {\n self.dummyToNodeForVerticalAlignment.get(nodeId).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = displacement;\n });\n } else {\n self.idToNodeMap.get(nodeId).displacementX = displacement;\n }\n }\n });\n\n this.nodesInRelativeVertical.forEach(function (nodeId) {\n if (!self.fixedNodesOnHorizontal.has(nodeId)) {\n var displacement = 0;\n if (self.dummyToNodeForHorizontalAlignment.has(nodeId)) {\n displacement = self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeId)[0]).displacementY;\n } else {\n displacement = self.idToNodeMap.get(nodeId).displacementY;\n }\n self.nodeToRelativeConstraintMapVertical.get(nodeId).forEach(function (constraint) {\n if (constraint.bottom) {\n var diff = self.nodeToTempPositionMapVertical.get(constraint.bottom) - self.nodeToTempPositionMapVertical.get(nodeId) - displacement;\n if (diff < constraint.gap) {\n displacement -= constraint.gap - diff;\n }\n } else {\n var diff = self.nodeToTempPositionMapVertical.get(nodeId) - self.nodeToTempPositionMapVertical.get(constraint.top) + displacement;\n if (diff < constraint.gap) {\n displacement += constraint.gap - diff;\n }\n }\n });\n self.nodeToTempPositionMapVertical.set(nodeId, self.nodeToTempPositionMapVertical.get(nodeId) + displacement);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeId)) {\n self.dummyToNodeForHorizontalAlignment.get(nodeId).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = displacement;\n });\n } else {\n self.idToNodeMap.get(nodeId).displacementY = displacement;\n }\n }\n });\n } else {\n for (var i = 0; i < this.componentsOnHorizontal.length; i++) {\n var component = this.componentsOnHorizontal[i];\n if (this.fixedComponentsOnHorizontal[i]) {\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n this.dummyToNodeForVerticalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = 0;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementX = 0;\n }\n }\n } else {\n var sum = 0;\n var count = 0;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n var actualNodes = this.dummyToNodeForVerticalAlignment.get(component[j]);\n sum += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementX;\n count += actualNodes.length;\n } else {\n sum += this.idToNodeMap.get(component[j]).displacementX;\n count++;\n }\n }\n var averageDisplacement = sum / count;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n this.dummyToNodeForVerticalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = averageDisplacement;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementX = averageDisplacement;\n }\n }\n }\n }\n\n for (var i = 0; i < this.componentsOnVertical.length; i++) {\n var component = this.componentsOnVertical[i];\n if (this.fixedComponentsOnVertical[i]) {\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n this.dummyToNodeForHorizontalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = 0;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementY = 0;\n }\n }\n } else {\n var sum = 0;\n var count = 0;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n var actualNodes = this.dummyToNodeForHorizontalAlignment.get(component[j]);\n sum += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementY;\n count += actualNodes.length;\n } else {\n sum += this.idToNodeMap.get(component[j]).displacementY;\n count++;\n }\n }\n var averageDisplacement = sum / count;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n this.dummyToNodeForHorizontalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = averageDisplacement;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementY = averageDisplacement;\n }\n }\n }\n }\n }\n }\n};\n\nCoSELayout.prototype.calculateNodesToApplyGravitationTo = function () {\n var nodeList = [];\n var graph;\n\n var graphs = this.graphManager.getGraphs();\n var size = graphs.length;\n var i;\n for (i = 0; i < size; i++) {\n graph = graphs[i];\n\n graph.updateConnected();\n\n if (!graph.isConnected) {\n nodeList = nodeList.concat(graph.getNodes());\n }\n }\n\n return nodeList;\n};\n\nCoSELayout.prototype.createBendpoints = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n var visited = new Set();\n var i;\n for (i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (!visited.has(edge)) {\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if (source == target) {\n edge.getBendpoints().push(new PointD());\n edge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(edge);\n visited.add(edge);\n } else {\n var edgeList = [];\n\n edgeList = edgeList.concat(source.getEdgeListToNode(target));\n edgeList = edgeList.concat(target.getEdgeListToNode(source));\n\n if (!visited.has(edgeList[0])) {\n if (edgeList.length > 1) {\n var k;\n for (k = 0; k < edgeList.length; k++) {\n var multiEdge = edgeList[k];\n multiEdge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(multiEdge);\n }\n }\n edgeList.forEach(function (edge) {\n visited.add(edge);\n });\n }\n }\n }\n\n if (visited.size == edges.length) {\n break;\n }\n }\n};\n\nCoSELayout.prototype.positionNodesRadially = function (forest) {\n // We tile the trees to a grid row by row; first tree starts at (0,0)\n var currentStartingPoint = new Point(0, 0);\n var numberOfColumns = Math.ceil(Math.sqrt(forest.length));\n var height = 0;\n var currentY = 0;\n var currentX = 0;\n var point = new PointD(0, 0);\n\n for (var i = 0; i < forest.length; i++) {\n if (i % numberOfColumns == 0) {\n // Start of a new row, make the x coordinate 0, increment the\n // y coordinate with the max height of the previous row\n currentX = 0;\n currentY = height;\n\n if (i != 0) {\n currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION;\n }\n\n height = 0;\n }\n\n var tree = forest[i];\n\n // Find the center of the tree\n var centerNode = Layout.findCenterOfTree(tree);\n\n // Set the staring point of the next tree\n currentStartingPoint.x = currentX;\n currentStartingPoint.y = currentY;\n\n // Do a radial layout starting with the center\n point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint);\n\n if (point.y > height) {\n height = Math.floor(point.y);\n }\n\n currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION);\n }\n\n this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2));\n};\n\nCoSELayout.radialLayout = function (tree, centerNode, startingPoint) {\n var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION);\n CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep);\n var bounds = LGraph.calculateBounds(tree);\n\n var transform = new Transform();\n transform.setDeviceOrgX(bounds.getMinX());\n transform.setDeviceOrgY(bounds.getMinY());\n transform.setWorldOrgX(startingPoint.x);\n transform.setWorldOrgY(startingPoint.y);\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n node.transform(transform);\n }\n\n var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY());\n\n return transform.inverseTransformPoint(bottomRight);\n};\n\nCoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) {\n // First, position this node by finding its angle.\n var halfInterval = (endAngle - startAngle + 1) / 2;\n\n if (halfInterval < 0) {\n halfInterval += 180;\n }\n\n var nodeAngle = (halfInterval + startAngle) % 360;\n var teta = nodeAngle * IGeometry.TWO_PI / 360;\n\n // Make polar to java cordinate conversion.\n var cos_teta = Math.cos(teta);\n var x_ = distance * Math.cos(teta);\n var y_ = distance * Math.sin(teta);\n\n node.setCenter(x_, y_);\n\n // Traverse all neighbors of this node and recursively call this\n // function.\n var neighborEdges = [];\n neighborEdges = neighborEdges.concat(node.getEdges());\n var childCount = neighborEdges.length;\n\n if (parentOfNode != null) {\n childCount--;\n }\n\n var branchCount = 0;\n\n var incEdgesCount = neighborEdges.length;\n var startIndex;\n\n var edges = node.getEdgesBetween(parentOfNode);\n\n // If there are multiple edges, prune them until there remains only one\n // edge.\n while (edges.length > 1) {\n //neighborEdges.remove(edges.remove(0));\n var temp = edges[0];\n edges.splice(0, 1);\n var index = neighborEdges.indexOf(temp);\n if (index >= 0) {\n neighborEdges.splice(index, 1);\n }\n incEdgesCount--;\n childCount--;\n }\n\n if (parentOfNode != null) {\n //assert edges.length == 1;\n startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount;\n } else {\n startIndex = 0;\n }\n\n var stepAngle = Math.abs(endAngle - startAngle) / childCount;\n\n for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(node);\n\n // Don't back traverse to root node in current tree.\n if (currentNeighbor == parentOfNode) {\n continue;\n }\n\n var childStartAngle = (startAngle + branchCount * stepAngle) % 360;\n var childEndAngle = (childStartAngle + stepAngle) % 360;\n\n CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation);\n\n branchCount++;\n }\n};\n\nCoSELayout.maxDiagonalInTree = function (tree) {\n var maxDiagonal = Integer.MIN_VALUE;\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n var diagonal = node.getDiagonal();\n\n if (diagonal > maxDiagonal) {\n maxDiagonal = diagonal;\n }\n }\n\n return maxDiagonal;\n};\n\nCoSELayout.prototype.calcRepulsionRange = function () {\n // formula is 2 x (level + 1) x idealEdgeLength\n return 2 * (this.level + 1) * this.idealEdgeLength;\n};\n\n// Tiling methods\n\n// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's\nCoSELayout.prototype.groupZeroDegreeMembers = function () {\n var self = this;\n // array of [parent_id x oneDegreeNode_id]\n var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members\n this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled\n this.idToDummyNode = {}; // A map of id to dummy node \n\n var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled\n var allNodes = this.graphManager.getAllNodes();\n\n // Fill zero degree list\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n var parent = node.getParent();\n // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list\n if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) {\n zeroDegree.push(node);\n }\n }\n\n // Create a map of parent node and its zero degree members\n for (var i = 0; i < zeroDegree.length; i++) {\n var node = zeroDegree[i]; // Zero degree node itself\n var p_id = node.getParent().id; // Parent id\n\n if (typeof tempMemberGroups[p_id] === \"undefined\") tempMemberGroups[p_id] = [];\n\n tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups\n }\n\n // If there are at least two nodes at a level, create a dummy compound for them\n Object.keys(tempMemberGroups).forEach(function (p_id) {\n if (tempMemberGroups[p_id].length > 1) {\n var dummyCompoundId = \"DummyCompound_\" + p_id; // The id of dummy compound which will be created soon\n self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups\n\n var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound\n\n // Create a dummy compound with calculated id\n var dummyCompound = new CoSENode(self.graphManager);\n dummyCompound.id = dummyCompoundId;\n dummyCompound.paddingLeft = parent.paddingLeft || 0;\n dummyCompound.paddingRight = parent.paddingRight || 0;\n dummyCompound.paddingBottom = parent.paddingBottom || 0;\n dummyCompound.paddingTop = parent.paddingTop || 0;\n\n self.idToDummyNode[dummyCompoundId] = dummyCompound;\n\n var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound);\n var parentGraph = parent.getChild();\n\n // Add dummy compound to parent the graph\n parentGraph.add(dummyCompound);\n\n // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent\n for (var i = 0; i < tempMemberGroups[p_id].length; i++) {\n var node = tempMemberGroups[p_id][i];\n\n parentGraph.remove(node);\n dummyParentGraph.add(node);\n }\n }\n });\n};\n\nCoSELayout.prototype.clearCompounds = function () {\n var childGraphMap = {};\n var idToNode = {};\n\n // Get compound ordering by finding the inner one first\n this.performDFSOnCompounds();\n\n for (var i = 0; i < this.compoundOrder.length; i++) {\n\n idToNode[this.compoundOrder[i].id] = this.compoundOrder[i];\n childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes());\n\n // Remove children of compounds\n this.graphManager.remove(this.compoundOrder[i].getChild());\n this.compoundOrder[i].child = null;\n }\n\n this.graphManager.resetAllNodes();\n\n // Tile the removed children\n this.tileCompoundMembers(childGraphMap, idToNode);\n};\n\nCoSELayout.prototype.clearZeroDegreeMembers = function () {\n var self = this;\n var tiledZeroDegreePack = this.tiledZeroDegreePack = [];\n\n Object.keys(this.memberGroups).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound\n\n tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n // Set the width and height of the dummy compound as calculated\n compoundNode.rect.width = tiledZeroDegreePack[id].width;\n compoundNode.rect.height = tiledZeroDegreePack[id].height;\n compoundNode.setCenter(tiledZeroDegreePack[id].centerX, tiledZeroDegreePack[id].centerY);\n\n // compound left and top margings for labels\n // when node labels are included, these values may be set to different values below and are used in tilingPostLayout,\n // otherwise they stay as zero\n compoundNode.labelMarginLeft = 0;\n compoundNode.labelMarginTop = 0;\n\n // Update compound bounds considering its label properties and set label margins for left and top\n if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = compoundNode.rect.width;\n var height = compoundNode.rect.height;\n\n if (compoundNode.labelWidth) {\n if (compoundNode.labelPosHorizontal == \"left\") {\n compoundNode.rect.x -= compoundNode.labelWidth;\n compoundNode.setWidth(width + compoundNode.labelWidth);\n compoundNode.labelMarginLeft = compoundNode.labelWidth;\n } else if (compoundNode.labelPosHorizontal == \"center\" && compoundNode.labelWidth > width) {\n compoundNode.rect.x -= (compoundNode.labelWidth - width) / 2;\n compoundNode.setWidth(compoundNode.labelWidth);\n compoundNode.labelMarginLeft = (compoundNode.labelWidth - width) / 2;\n } else if (compoundNode.labelPosHorizontal == \"right\") {\n compoundNode.setWidth(width + compoundNode.labelWidth);\n }\n }\n\n if (compoundNode.labelHeight) {\n if (compoundNode.labelPosVertical == \"top\") {\n compoundNode.rect.y -= compoundNode.labelHeight;\n compoundNode.setHeight(height + compoundNode.labelHeight);\n compoundNode.labelMarginTop = compoundNode.labelHeight;\n } else if (compoundNode.labelPosVertical == \"center\" && compoundNode.labelHeight > height) {\n compoundNode.rect.y -= (compoundNode.labelHeight - height) / 2;\n compoundNode.setHeight(compoundNode.labelHeight);\n compoundNode.labelMarginTop = (compoundNode.labelHeight - height) / 2;\n } else if (compoundNode.labelPosVertical == \"bottom\") {\n compoundNode.setHeight(height + compoundNode.labelHeight);\n }\n }\n }\n });\n};\n\nCoSELayout.prototype.repopulateCompounds = function () {\n for (var i = this.compoundOrder.length - 1; i >= 0; i--) {\n var lCompoundNode = this.compoundOrder[i];\n var id = lCompoundNode.id;\n var horizontalMargin = lCompoundNode.paddingLeft;\n var verticalMargin = lCompoundNode.paddingTop;\n var labelMarginLeft = lCompoundNode.labelMarginLeft;\n var labelMarginTop = lCompoundNode.labelMarginTop;\n\n this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop);\n }\n};\n\nCoSELayout.prototype.repopulateZeroDegreeMembers = function () {\n var self = this;\n var tiledPack = this.tiledZeroDegreePack;\n\n Object.keys(tiledPack).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id\n var horizontalMargin = compoundNode.paddingLeft;\n var verticalMargin = compoundNode.paddingTop;\n var labelMarginLeft = compoundNode.labelMarginLeft;\n var labelMarginTop = compoundNode.labelMarginTop;\n\n // Adjust the positions of nodes wrt its compound\n self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop);\n });\n};\n\nCoSELayout.prototype.getToBeTiled = function (node) {\n var id = node.id;\n //firstly check the previous results\n if (this.toBeTiled[id] != null) {\n return this.toBeTiled[id];\n }\n\n //only compound nodes are to be tiled\n var childGraph = node.getChild();\n if (childGraph == null) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n var children = childGraph.getNodes(); // Get the children nodes\n\n //a compound node is not to be tiled if all of its compound children are not to be tiled\n for (var i = 0; i < children.length; i++) {\n var theChild = children[i];\n\n if (this.getNodeDegree(theChild) > 0) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n //pass the children not having the compound structure\n if (theChild.getChild() == null) {\n this.toBeTiled[theChild.id] = false;\n continue;\n }\n\n if (!this.getToBeTiled(theChild)) {\n this.toBeTiled[id] = false;\n return false;\n }\n }\n this.toBeTiled[id] = true;\n return true;\n};\n\n// Get degree of a node depending of its edges and independent of its children\nCoSELayout.prototype.getNodeDegree = function (node) {\n var id = node.id;\n var edges = node.getEdges();\n var degree = 0;\n\n // For the edges connected\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n if (edge.getSource().id !== edge.getTarget().id) {\n degree = degree + 1;\n }\n }\n return degree;\n};\n\n// Get degree of a node with its children\nCoSELayout.prototype.getNodeDegreeWithChildren = function (node) {\n var degree = this.getNodeDegree(node);\n if (node.getChild() == null) {\n return degree;\n }\n var children = node.getChild().getNodes();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n degree += this.getNodeDegreeWithChildren(child);\n }\n return degree;\n};\n\nCoSELayout.prototype.performDFSOnCompounds = function () {\n this.compoundOrder = [];\n this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes());\n};\n\nCoSELayout.prototype.fillCompexOrderByDFS = function (children) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.getChild() != null) {\n this.fillCompexOrderByDFS(child.getChild().getNodes());\n }\n if (this.getToBeTiled(child)) {\n this.compoundOrder.push(child);\n }\n }\n};\n\n/**\n* This method places each zero degree member wrt given (x,y) coordinates (top left).\n*/\nCoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin, compoundLabelMarginLeft, compoundLabelMarginTop) {\n x += compoundHorizontalMargin + compoundLabelMarginLeft;\n y += compoundVerticalMargin + compoundLabelMarginTop;\n\n var left = x;\n\n for (var i = 0; i < organization.rows.length; i++) {\n var row = organization.rows[i];\n x = left;\n var maxHeight = 0;\n\n for (var j = 0; j < row.length; j++) {\n var lnode = row[j];\n\n lnode.rect.x = x; // + lnode.rect.width / 2;\n lnode.rect.y = y; // + lnode.rect.height / 2;\n\n x += lnode.rect.width + organization.horizontalPadding;\n\n if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height;\n }\n\n y += maxHeight + organization.verticalPadding;\n }\n};\n\nCoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) {\n var self = this;\n this.tiledMemberPack = [];\n\n Object.keys(childGraphMap).forEach(function (id) {\n // Get the compound node\n var compoundNode = idToNode[id];\n\n self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n compoundNode.rect.width = self.tiledMemberPack[id].width;\n compoundNode.rect.height = self.tiledMemberPack[id].height;\n compoundNode.setCenter(self.tiledMemberPack[id].centerX, self.tiledMemberPack[id].centerY);\n\n // compound left and top margings for labels\n // when node labels are included, these values may be set to different values below and are used in tilingPostLayout,\n // otherwise they stay as zero\n compoundNode.labelMarginLeft = 0;\n compoundNode.labelMarginTop = 0;\n\n // Update compound bounds considering its label properties and set label margins for left and top\n if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = compoundNode.rect.width;\n var height = compoundNode.rect.height;\n\n if (compoundNode.labelWidth) {\n if (compoundNode.labelPosHorizontal == \"left\") {\n compoundNode.rect.x -= compoundNode.labelWidth;\n compoundNode.setWidth(width + compoundNode.labelWidth);\n compoundNode.labelMarginLeft = compoundNode.labelWidth;\n } else if (compoundNode.labelPosHorizontal == \"center\" && compoundNode.labelWidth > width) {\n compoundNode.rect.x -= (compoundNode.labelWidth - width) / 2;\n compoundNode.setWidth(compoundNode.labelWidth);\n compoundNode.labelMarginLeft = (compoundNode.labelWidth - width) / 2;\n } else if (compoundNode.labelPosHorizontal == \"right\") {\n compoundNode.setWidth(width + compoundNode.labelWidth);\n }\n }\n\n if (compoundNode.labelHeight) {\n if (compoundNode.labelPosVertical == \"top\") {\n compoundNode.rect.y -= compoundNode.labelHeight;\n compoundNode.setHeight(height + compoundNode.labelHeight);\n compoundNode.labelMarginTop = compoundNode.labelHeight;\n } else if (compoundNode.labelPosVertical == \"center\" && compoundNode.labelHeight > height) {\n compoundNode.rect.y -= (compoundNode.labelHeight - height) / 2;\n compoundNode.setHeight(compoundNode.labelHeight);\n compoundNode.labelMarginTop = (compoundNode.labelHeight - height) / 2;\n } else if (compoundNode.labelPosVertical == \"bottom\") {\n compoundNode.setHeight(height + compoundNode.labelHeight);\n }\n }\n }\n });\n};\n\nCoSELayout.prototype.tileNodes = function (nodes, minWidth) {\n var horizontalOrg = this.tileNodesByFavoringDim(nodes, minWidth, true);\n var verticalOrg = this.tileNodesByFavoringDim(nodes, minWidth, false);\n\n var horizontalRatio = this.getOrgRatio(horizontalOrg);\n var verticalRatio = this.getOrgRatio(verticalOrg);\n var bestOrg;\n\n // the best ratio is the one that is closer to 1 since the ratios are already normalized\n // and the best organization is the one that has the best ratio\n if (verticalRatio < horizontalRatio) {\n bestOrg = verticalOrg;\n } else {\n bestOrg = horizontalOrg;\n }\n\n return bestOrg;\n};\n\n// get the width/height ratio of the organization that is normalized so that it will not be less than 1\nCoSELayout.prototype.getOrgRatio = function (organization) {\n // get dimensions and calculate the initial ratio\n var width = organization.width;\n var height = organization.height;\n var ratio = width / height;\n\n // if the initial ratio is less then 1 then inverse it\n if (ratio < 1) {\n ratio = 1 / ratio;\n }\n\n // return the normalized ratio\n return ratio;\n};\n\n/*\n * Calculates the ideal width for the rows. This method assumes that\n * each node has the same sizes and calculates the ideal row width that\n * approximates a square shaped complex accordingly. However, since nodes would\n * have different sizes some rows would have different sizes and the resulting\n * shape would not be an exact square.\n */\nCoSELayout.prototype.calcIdealRowWidth = function (members, favorHorizontalDim) {\n // To approximate a square shaped complex we need to make complex width equal to complex height.\n // To achieve this we need to solve the following equation system for hc:\n // (x + bx) * hc - bx = (y + by) * vc - by, hc * vc = n\n // where x is the avarage width of the nodes, y is the avarage height of nodes\n // bx and by are the buffer sizes in horizontal and vertical dimensions accordingly,\n // hc and vc are the number of rows in horizontal and vertical dimensions\n // n is number of members.\n\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n\n // number of members\n var membersSize = members.length;\n\n // sum of the width of all members\n var totalWidth = 0;\n\n // sum of the height of all members\n var totalHeight = 0;\n\n var maxWidth = 0;\n\n // traverse all members to calculate total width and total height and get the maximum members width\n members.forEach(function (node) {\n totalWidth += node.getWidth();\n totalHeight += node.getHeight();\n\n if (node.getWidth() > maxWidth) {\n maxWidth = node.getWidth();\n }\n });\n\n // average width of the members\n var averageWidth = totalWidth / membersSize;\n\n // average height of the members\n var averageHeight = totalHeight / membersSize;\n\n // solving the initial equation system for the hc yields the following second degree equation:\n // hc^2 * (x+bx) + hc * (by - bx) - n * (y + by) = 0\n\n // the delta value to solve the equation above for hc\n var delta = Math.pow(verticalPadding - horizontalPadding, 2) + 4 * (averageWidth + horizontalPadding) * (averageHeight + verticalPadding) * membersSize;\n\n // solve the equation using delta value to calculate the horizontal count\n // that represents the number of nodes in an ideal row\n var horizontalCountDouble = (horizontalPadding - verticalPadding + Math.sqrt(delta)) / (2 * (averageWidth + horizontalPadding));\n // round the calculated horizontal count up or down according to the favored dimension\n var horizontalCount;\n\n if (favorHorizontalDim) {\n horizontalCount = Math.ceil(horizontalCountDouble);\n // if horizontalCount count is not a float value then both of rounding to floor and ceil\n // will yield the same values. Instead of repeating the same calculation try going up\n // while favoring horizontal dimension in such cases\n if (horizontalCount == horizontalCountDouble) {\n horizontalCount++;\n }\n } else {\n horizontalCount = Math.floor(horizontalCountDouble);\n }\n\n // ideal width to be calculated\n var idealWidth = horizontalCount * (averageWidth + horizontalPadding) - horizontalPadding;\n\n // if max width is bigger than calculated ideal width reset ideal width to it\n if (maxWidth > idealWidth) {\n idealWidth = maxWidth;\n }\n\n // add the left-right margins to the ideal row width\n idealWidth += horizontalPadding * 2;\n\n // return the ideal row width1\n return idealWidth;\n};\n\nCoSELayout.prototype.tileNodesByFavoringDim = function (nodes, minWidth, favorHorizontalDim) {\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n var tilingCompareBy = CoSEConstants.TILING_COMPARE_BY;\n var organization = {\n rows: [],\n rowWidth: [],\n rowHeight: [],\n width: 0,\n height: minWidth, // assume minHeight equals to minWidth\n verticalPadding: verticalPadding,\n horizontalPadding: horizontalPadding,\n centerX: 0,\n centerY: 0\n };\n\n if (tilingCompareBy) {\n organization.idealRowWidth = this.calcIdealRowWidth(nodes, favorHorizontalDim);\n }\n\n var getNodeArea = function getNodeArea(n) {\n return n.rect.width * n.rect.height;\n };\n\n var areaCompareFcn = function areaCompareFcn(n1, n2) {\n return getNodeArea(n2) - getNodeArea(n1);\n };\n\n // Sort the nodes in descending order of their areas\n nodes.sort(function (n1, n2) {\n var cmpBy = areaCompareFcn;\n if (organization.idealRowWidth) {\n cmpBy = tilingCompareBy;\n return cmpBy(n1.id, n2.id);\n }\n return cmpBy(n1, n2);\n });\n\n // Create the organization -> calculate compound center\n var sumCenterX = 0;\n var sumCenterY = 0;\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n sumCenterX += lNode.getCenterX();\n sumCenterY += lNode.getCenterY();\n }\n\n organization.centerX = sumCenterX / nodes.length;\n organization.centerY = sumCenterY / nodes.length;\n\n // Create the organization -> tile members\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n if (organization.rows.length == 0) {\n this.insertNodeToRow(organization, lNode, 0, minWidth);\n } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) {\n var rowIndex = organization.rows.length - 1;\n if (!organization.idealRowWidth) {\n rowIndex = this.getShortestRowIndex(organization);\n }\n this.insertNodeToRow(organization, lNode, rowIndex, minWidth);\n } else {\n this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth);\n }\n\n this.shiftToLastRow(organization);\n }\n\n return organization;\n};\n\nCoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) {\n var minCompoundSize = minWidth;\n\n // Add new row if needed\n if (rowIndex == organization.rows.length) {\n var secondDimension = [];\n\n organization.rows.push(secondDimension);\n organization.rowWidth.push(minCompoundSize);\n organization.rowHeight.push(0);\n }\n\n // Update row width\n var w = organization.rowWidth[rowIndex] + node.rect.width;\n\n if (organization.rows[rowIndex].length > 0) {\n w += organization.horizontalPadding;\n }\n\n organization.rowWidth[rowIndex] = w;\n // Update compound width\n if (organization.width < w) {\n organization.width = w;\n }\n\n // Update height\n var h = node.rect.height;\n if (rowIndex > 0) h += organization.verticalPadding;\n\n var extraHeight = 0;\n if (h > organization.rowHeight[rowIndex]) {\n extraHeight = organization.rowHeight[rowIndex];\n organization.rowHeight[rowIndex] = h;\n extraHeight = organization.rowHeight[rowIndex] - extraHeight;\n }\n\n organization.height += extraHeight;\n\n // Insert node\n organization.rows[rowIndex].push(node);\n};\n\n//Scans the rows of an organization and returns the one with the min width\nCoSELayout.prototype.getShortestRowIndex = function (organization) {\n var r = -1;\n var min = Number.MAX_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n if (organization.rowWidth[i] < min) {\n r = i;\n min = organization.rowWidth[i];\n }\n }\n return r;\n};\n\n//Scans the rows of an organization and returns the one with the max width\nCoSELayout.prototype.getLongestRowIndex = function (organization) {\n var r = -1;\n var max = Number.MIN_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n\n if (organization.rowWidth[i] > max) {\n r = i;\n max = organization.rowWidth[i];\n }\n }\n\n return r;\n};\n\n/**\n* This method checks whether adding extra width to the organization violates\n* the aspect ratio(1) or not.\n*/\nCoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) {\n\n // if there is an ideal row width specified use it instead of checking the aspect ratio\n if (organization.idealRowWidth) {\n var lastRowIndex = organization.rows.length - 1;\n var lastRowWidth = organization.rowWidth[lastRowIndex];\n\n // check and return if ideal row width will be exceed if the node is added to the row\n return lastRowWidth + extraWidth + organization.horizontalPadding <= organization.idealRowWidth;\n }\n\n var sri = this.getShortestRowIndex(organization);\n\n if (sri < 0) {\n return true;\n }\n\n var min = organization.rowWidth[sri];\n\n if (min + organization.horizontalPadding + extraWidth <= organization.width) return true;\n\n var hDiff = 0;\n\n // Adding to an existing row\n if (organization.rowHeight[sri] < extraHeight) {\n if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri];\n }\n\n var add_to_row_ratio;\n if (organization.width - min >= extraWidth + organization.horizontalPadding) {\n add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding);\n } else {\n add_to_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n // Adding a new row for this node\n hDiff = extraHeight + organization.verticalPadding;\n var add_new_row_ratio;\n if (organization.width < extraWidth) {\n add_new_row_ratio = (organization.height + hDiff) / extraWidth;\n } else {\n add_new_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio;\n\n if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio;\n\n return add_to_row_ratio < add_new_row_ratio;\n};\n\n//If moving the last node from the longest row and adding it to the last\n//row makes the bounding box smaller, do it.\nCoSELayout.prototype.shiftToLastRow = function (organization) {\n var longest = this.getLongestRowIndex(organization);\n var last = organization.rowWidth.length - 1;\n var row = organization.rows[longest];\n var node = row[row.length - 1];\n\n var diff = node.width + organization.horizontalPadding;\n\n // Check if there is enough space on the last row\n if (organization.width - organization.rowWidth[last] > diff && longest != last) {\n // Remove the last element of the longest row\n row.splice(-1, 1);\n\n // Push it to the last row\n organization.rows[last].push(node);\n\n organization.rowWidth[longest] = organization.rowWidth[longest] - diff;\n organization.rowWidth[last] = organization.rowWidth[last] + diff;\n organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)];\n\n // Update heights of the organization\n var maxHeight = Number.MIN_VALUE;\n for (var i = 0; i < row.length; i++) {\n if (row[i].height > maxHeight) maxHeight = row[i].height;\n }\n if (longest > 0) maxHeight += organization.verticalPadding;\n\n var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n\n organization.rowHeight[longest] = maxHeight;\n if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding;\n\n var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n organization.height += finalTotal - prevTotal;\n\n this.shiftToLastRow(organization);\n }\n};\n\nCoSELayout.prototype.tilingPreLayout = function () {\n if (CoSEConstants.TILE) {\n // Find zero degree nodes and create a compound for each level\n this.groupZeroDegreeMembers();\n // Tile and clear children of each compound\n this.clearCompounds();\n // Separately tile and clear zero degree nodes for each level\n this.clearZeroDegreeMembers();\n }\n};\n\nCoSELayout.prototype.tilingPostLayout = function () {\n if (CoSEConstants.TILE) {\n this.repopulateZeroDegreeMembers();\n this.repopulateCompounds();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Tree Reduction methods\n// -----------------------------------------------------------------------------\n// Reduce trees \nCoSELayout.prototype.reduceTrees = function () {\n var prunedNodesAll = [];\n var containsLeaf = true;\n var node;\n\n while (containsLeaf) {\n var allNodes = this.graphManager.getAllNodes();\n var prunedNodesInStepTemp = [];\n containsLeaf = false;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) {\n if (CoSEConstants.PURE_INCREMENTAL) {\n var otherEnd = node.getEdges()[0].getOtherEnd(node);\n var relativePosition = new DimensionD(node.getCenterX() - otherEnd.getCenterX(), node.getCenterY() - otherEnd.getCenterY());\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner(), relativePosition]);\n } else {\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]);\n }\n containsLeaf = true;\n }\n }\n if (containsLeaf == true) {\n var prunedNodesInStep = [];\n for (var j = 0; j < prunedNodesInStepTemp.length; j++) {\n if (prunedNodesInStepTemp[j][0].getEdges().length == 1) {\n prunedNodesInStep.push(prunedNodesInStepTemp[j]);\n prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]);\n }\n }\n prunedNodesAll.push(prunedNodesInStep);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n }\n }\n this.prunedNodesAll = prunedNodesAll;\n};\n\n// Grow tree one step \nCoSELayout.prototype.growTree = function (prunedNodesAll) {\n var lengthOfPrunedNodesInStep = prunedNodesAll.length;\n var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1];\n\n var nodeData;\n for (var i = 0; i < prunedNodesInStep.length; i++) {\n nodeData = prunedNodesInStep[i];\n\n this.findPlaceforPrunedNode(nodeData);\n\n nodeData[2].add(nodeData[0]);\n nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target);\n }\n\n prunedNodesAll.splice(prunedNodesAll.length - 1, 1);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n};\n\n// Find an appropriate position to replace pruned node, this method can be improved\nCoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) {\n\n var gridForPrunedNode;\n var nodeToConnect;\n var prunedNode = nodeData[0];\n if (prunedNode == nodeData[1].source) {\n nodeToConnect = nodeData[1].target;\n } else {\n nodeToConnect = nodeData[1].source;\n }\n\n if (CoSEConstants.PURE_INCREMENTAL) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeData[3].getWidth(), nodeToConnect.getCenterY() + nodeData[3].getHeight());\n } else {\n var startGridX = nodeToConnect.startX;\n var finishGridX = nodeToConnect.finishX;\n var startGridY = nodeToConnect.startY;\n var finishGridY = nodeToConnect.finishY;\n\n var upNodeCount = 0;\n var downNodeCount = 0;\n var rightNodeCount = 0;\n var leftNodeCount = 0;\n var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount];\n\n if (startGridY > 0) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1;\n }\n }\n if (finishGridX < this.grid.length - 1) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1;\n }\n }\n if (finishGridY < this.grid[0].length - 1) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1;\n }\n }\n if (startGridX > 0) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1;\n }\n }\n var min = Integer.MAX_VALUE;\n var minCount;\n var minIndex;\n for (var j = 0; j < controlRegions.length; j++) {\n if (controlRegions[j] < min) {\n min = controlRegions[j];\n minCount = 1;\n minIndex = j;\n } else if (controlRegions[j] == min) {\n minCount++;\n }\n }\n\n if (minCount == 3 && min == 0) {\n if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) {\n gridForPrunedNode = 1;\n } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 0;\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 3;\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 2;\n }\n } else if (minCount == 2 && min == 0) {\n var random = Math.floor(Math.random() * 2);\n if (controlRegions[0] == 0 && controlRegions[1] == 0) {\n ;\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 1;\n }\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[0] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 3;\n }\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[1] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 3;\n }\n } else {\n if (random == 0) {\n gridForPrunedNode = 2;\n } else {\n gridForPrunedNode = 3;\n }\n }\n } else if (minCount == 4 && min == 0) {\n var random = Math.floor(Math.random() * 4);\n gridForPrunedNode = random;\n } else {\n gridForPrunedNode = minIndex;\n }\n\n if (gridForPrunedNode == 0) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2);\n } else if (gridForPrunedNode == 1) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n } else if (gridForPrunedNode == 2) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2);\n } else {\n prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n }\n }\n};\n\nmodule.exports = CoSELayout;\n\n/***/ }),\n\n/***/ 991:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutNode = __webpack_require__(551).FDLayoutNode;\nvar IMath = __webpack_require__(551).IMath;\n\nfunction CoSENode(gm, loc, size, vNode) {\n FDLayoutNode.call(this, gm, loc, size, vNode);\n}\n\nCoSENode.prototype = Object.create(FDLayoutNode.prototype);\nfor (var prop in FDLayoutNode) {\n CoSENode[prop] = FDLayoutNode[prop];\n}\n\nCoSENode.prototype.calculateDisplacement = function () {\n var layout = this.graphManager.getLayout();\n // this check is for compound nodes that contain fixed nodes\n if (this.getChild() != null && this.fixedNodeWeight) {\n this.displacementX += layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.fixedNodeWeight;\n this.displacementY += layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.fixedNodeWeight;\n } else {\n this.displacementX += layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren;\n this.displacementY += layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren;\n }\n\n if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX);\n }\n\n if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY);\n }\n\n // non-empty compound node, propogate movement to children as well\n if (this.child && this.child.getNodes().length > 0) {\n this.propogateDisplacementToChildren(this.displacementX, this.displacementY);\n }\n};\n\nCoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) {\n var nodes = this.getChild().getNodes();\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n node.displacementX += dX;\n node.displacementY += dY;\n } else {\n node.propogateDisplacementToChildren(dX, dY);\n }\n }\n};\n\nCoSENode.prototype.move = function () {\n var layout = this.graphManager.getLayout();\n\n // a simple node or an empty compound node, move it\n if (this.child == null || this.child.getNodes().length == 0) {\n this.moveBy(this.displacementX, this.displacementY);\n\n layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY);\n }\n\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n this.displacementX = 0;\n this.displacementY = 0;\n};\n\nCoSENode.prototype.setPred1 = function (pred1) {\n this.pred1 = pred1;\n};\n\nCoSENode.prototype.getPred1 = function () {\n return pred1;\n};\n\nCoSENode.prototype.getPred2 = function () {\n return pred2;\n};\n\nCoSENode.prototype.setNext = function (next) {\n this.next = next;\n};\n\nCoSENode.prototype.getNext = function () {\n return next;\n};\n\nCoSENode.prototype.setProcessed = function (processed) {\n this.processed = processed;\n};\n\nCoSENode.prototype.isProcessed = function () {\n return processed;\n};\n\nmodule.exports = CoSENode;\n\n/***/ }),\n\n/***/ 902:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar CoSEConstants = __webpack_require__(806);\nvar LinkedList = __webpack_require__(551).LinkedList;\nvar Matrix = __webpack_require__(551).Matrix;\nvar SVD = __webpack_require__(551).SVD;\n\nfunction ConstraintHandler() {}\n\nConstraintHandler.handleConstraints = function (layout) {\n // let layout = this.graphManager.getLayout();\n\n // get constraints from layout\n var constraints = {};\n constraints.fixedNodeConstraint = layout.constraints.fixedNodeConstraint;\n constraints.alignmentConstraint = layout.constraints.alignmentConstraint;\n constraints.relativePlacementConstraint = layout.constraints.relativePlacementConstraint;\n\n var idToNodeMap = new Map();\n var nodeIndexes = new Map();\n var xCoords = [];\n var yCoords = [];\n\n var allNodes = layout.getAllNodes();\n var index = 0;\n // fill index map and coordinates\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n if (node.getChild() == null) {\n nodeIndexes.set(node.id, index++);\n xCoords.push(node.getCenterX());\n yCoords.push(node.getCenterY());\n idToNodeMap.set(node.id, node);\n }\n }\n\n // if there exists relative placement constraint without gap value, set it to default \n if (constraints.relativePlacementConstraint) {\n constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (!constraint.gap && constraint.gap != 0) {\n if (constraint.left) {\n constraint.gap = CoSEConstants.DEFAULT_EDGE_LENGTH + idToNodeMap.get(constraint.left).getWidth() / 2 + idToNodeMap.get(constraint.right).getWidth() / 2;\n } else {\n constraint.gap = CoSEConstants.DEFAULT_EDGE_LENGTH + idToNodeMap.get(constraint.top).getHeight() / 2 + idToNodeMap.get(constraint.bottom).getHeight() / 2;\n }\n }\n });\n }\n\n /* auxiliary functions */\n\n // calculate difference between two position objects\n var calculatePositionDiff = function calculatePositionDiff(pos1, pos2) {\n return { x: pos1.x - pos2.x, y: pos1.y - pos2.y };\n };\n\n // calculate average position of the nodes\n var calculateAvgPosition = function calculateAvgPosition(nodeIdSet) {\n var xPosSum = 0;\n var yPosSum = 0;\n nodeIdSet.forEach(function (nodeId) {\n xPosSum += xCoords[nodeIndexes.get(nodeId)];\n yPosSum += yCoords[nodeIndexes.get(nodeId)];\n });\n\n return { x: xPosSum / nodeIdSet.size, y: yPosSum / nodeIdSet.size };\n };\n\n // find an appropriate positioning for the nodes in a given graph according to relative placement constraints\n // this function also takes the fixed nodes and alignment constraints into account\n // graph: dag to be evaluated, direction: \"horizontal\" or \"vertical\", \n // fixedNodes: set of fixed nodes to consider during evaluation, dummyPositions: appropriate coordinates of the dummy nodes \n var findAppropriatePositionForRelativePlacement = function findAppropriatePositionForRelativePlacement(graph, direction, fixedNodes, dummyPositions, componentSources) {\n\n // find union of two sets\n function setUnion(setA, setB) {\n var union = new Set(setA);\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = setB[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var elem = _step.value;\n\n union.add(elem);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return union;\n }\n\n // find indegree count for each node\n var inDegrees = new Map();\n\n graph.forEach(function (value, key) {\n inDegrees.set(key, 0);\n });\n graph.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n inDegrees.set(adjacent.id, inDegrees.get(adjacent.id) + 1);\n });\n });\n\n var positionMap = new Map(); // keeps the position for each node\n var pastMap = new Map(); // keeps the predecessors(past) of a node\n var queue = new LinkedList();\n inDegrees.forEach(function (value, key) {\n if (value == 0) {\n queue.push(key);\n if (!fixedNodes) {\n if (direction == \"horizontal\") {\n positionMap.set(key, nodeIndexes.has(key) ? xCoords[nodeIndexes.get(key)] : dummyPositions.get(key));\n } else {\n positionMap.set(key, nodeIndexes.has(key) ? yCoords[nodeIndexes.get(key)] : dummyPositions.get(key));\n }\n }\n } else {\n positionMap.set(key, Number.NEGATIVE_INFINITY);\n }\n if (fixedNodes) {\n pastMap.set(key, new Set([key]));\n }\n });\n\n // align sources of each component in enforcement phase\n if (fixedNodes) {\n componentSources.forEach(function (component) {\n var fixedIds = [];\n component.forEach(function (nodeId) {\n if (fixedNodes.has(nodeId)) {\n fixedIds.push(nodeId);\n }\n });\n if (fixedIds.length > 0) {\n var position = 0;\n fixedIds.forEach(function (fixedId) {\n if (direction == \"horizontal\") {\n positionMap.set(fixedId, nodeIndexes.has(fixedId) ? xCoords[nodeIndexes.get(fixedId)] : dummyPositions.get(fixedId));\n position += positionMap.get(fixedId);\n } else {\n positionMap.set(fixedId, nodeIndexes.has(fixedId) ? yCoords[nodeIndexes.get(fixedId)] : dummyPositions.get(fixedId));\n position += positionMap.get(fixedId);\n }\n });\n position = position / fixedIds.length;\n component.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) {\n positionMap.set(nodeId, position);\n }\n });\n } else {\n var _position = 0;\n component.forEach(function (nodeId) {\n if (direction == \"horizontal\") {\n _position += nodeIndexes.has(nodeId) ? xCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n } else {\n _position += nodeIndexes.has(nodeId) ? yCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n }\n });\n _position = _position / component.length;\n component.forEach(function (nodeId) {\n positionMap.set(nodeId, _position);\n });\n }\n });\n }\n\n // calculate positions of the nodes\n\n var _loop = function _loop() {\n var currentNode = queue.shift();\n var neighbors = graph.get(currentNode);\n neighbors.forEach(function (neighbor) {\n if (positionMap.get(neighbor.id) < positionMap.get(currentNode) + neighbor.gap) {\n if (fixedNodes && fixedNodes.has(neighbor.id)) {\n var fixedPosition = void 0;\n if (direction == \"horizontal\") {\n fixedPosition = nodeIndexes.has(neighbor.id) ? xCoords[nodeIndexes.get(neighbor.id)] : dummyPositions.get(neighbor.id);\n } else {\n fixedPosition = nodeIndexes.has(neighbor.id) ? yCoords[nodeIndexes.get(neighbor.id)] : dummyPositions.get(neighbor.id);\n }\n positionMap.set(neighbor.id, fixedPosition); // TODO: may do unnecessary work\n if (fixedPosition < positionMap.get(currentNode) + neighbor.gap) {\n var diff = positionMap.get(currentNode) + neighbor.gap - fixedPosition;\n pastMap.get(currentNode).forEach(function (nodeId) {\n positionMap.set(nodeId, positionMap.get(nodeId) - diff);\n });\n }\n } else {\n positionMap.set(neighbor.id, positionMap.get(currentNode) + neighbor.gap);\n }\n }\n inDegrees.set(neighbor.id, inDegrees.get(neighbor.id) - 1);\n if (inDegrees.get(neighbor.id) == 0) {\n queue.push(neighbor.id);\n }\n if (fixedNodes) {\n pastMap.set(neighbor.id, setUnion(pastMap.get(currentNode), pastMap.get(neighbor.id)));\n }\n });\n };\n\n while (queue.length != 0) {\n _loop();\n }\n\n // readjust position of the nodes after enforcement\n if (fixedNodes) {\n // find indegree count for each node\n var sinkNodes = new Set();\n\n graph.forEach(function (value, key) {\n if (value.length == 0) {\n sinkNodes.add(key);\n }\n });\n\n var _components = [];\n pastMap.forEach(function (value, key) {\n if (sinkNodes.has(key)) {\n var isFixedComponent = false;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = value[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var nodeId = _step2.value;\n\n if (fixedNodes.has(nodeId)) {\n isFixedComponent = true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (!isFixedComponent) {\n var isExist = false;\n var existAt = void 0;\n _components.forEach(function (component, index) {\n if (component.has([].concat(_toConsumableArray(value))[0])) {\n isExist = true;\n existAt = index;\n }\n });\n if (!isExist) {\n _components.push(new Set(value));\n } else {\n value.forEach(function (ele) {\n _components[existAt].add(ele);\n });\n }\n }\n }\n });\n\n _components.forEach(function (component, index) {\n var minBefore = Number.POSITIVE_INFINITY;\n var minAfter = Number.POSITIVE_INFINITY;\n var maxBefore = Number.NEGATIVE_INFINITY;\n var maxAfter = Number.NEGATIVE_INFINITY;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = component[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var nodeId = _step3.value;\n\n var posBefore = void 0;\n if (direction == \"horizontal\") {\n posBefore = nodeIndexes.has(nodeId) ? xCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n } else {\n posBefore = nodeIndexes.has(nodeId) ? yCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n }\n var posAfter = positionMap.get(nodeId);\n if (posBefore < minBefore) {\n minBefore = posBefore;\n }\n if (posBefore > maxBefore) {\n maxBefore = posBefore;\n }\n if (posAfter < minAfter) {\n minAfter = posAfter;\n }\n if (posAfter > maxAfter) {\n maxAfter = posAfter;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var diff = (minBefore + maxBefore) / 2 - (minAfter + maxAfter) / 2;\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = component[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var _nodeId = _step4.value;\n\n positionMap.set(_nodeId, positionMap.get(_nodeId) + diff);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n });\n }\n\n return positionMap;\n };\n\n // find transformation based on rel. placement constraints if there are both alignment and rel. placement constraints\n // or if there are only rel. placement contraints where the largest component isn't sufficiently large\n var applyReflectionForRelativePlacement = function applyReflectionForRelativePlacement(relativePlacementConstraints) {\n // variables to count votes\n var reflectOnY = 0,\n notReflectOnY = 0;\n var reflectOnX = 0,\n notReflectOnX = 0;\n\n relativePlacementConstraints.forEach(function (constraint) {\n if (constraint.left) {\n xCoords[nodeIndexes.get(constraint.left)] - xCoords[nodeIndexes.get(constraint.right)] >= 0 ? reflectOnY++ : notReflectOnY++;\n } else {\n yCoords[nodeIndexes.get(constraint.top)] - yCoords[nodeIndexes.get(constraint.bottom)] >= 0 ? reflectOnX++ : notReflectOnX++;\n }\n });\n\n if (reflectOnY > notReflectOnY && reflectOnX > notReflectOnX) {\n for (var _i = 0; _i < nodeIndexes.size; _i++) {\n xCoords[_i] = -1 * xCoords[_i];\n yCoords[_i] = -1 * yCoords[_i];\n }\n } else if (reflectOnY > notReflectOnY) {\n for (var _i2 = 0; _i2 < nodeIndexes.size; _i2++) {\n xCoords[_i2] = -1 * xCoords[_i2];\n }\n } else if (reflectOnX > notReflectOnX) {\n for (var _i3 = 0; _i3 < nodeIndexes.size; _i3++) {\n yCoords[_i3] = -1 * yCoords[_i3];\n }\n }\n };\n\n // find weakly connected components in undirected graph\n var findComponents = function findComponents(graph) {\n // find weakly connected components in dag\n var components = [];\n var queue = new LinkedList();\n var visited = new Set();\n var count = 0;\n\n graph.forEach(function (value, key) {\n if (!visited.has(key)) {\n components[count] = [];\n var _currentNode = key;\n queue.push(_currentNode);\n visited.add(_currentNode);\n components[count].push(_currentNode);\n\n while (queue.length != 0) {\n _currentNode = queue.shift();\n var neighbors = graph.get(_currentNode);\n neighbors.forEach(function (neighbor) {\n if (!visited.has(neighbor.id)) {\n queue.push(neighbor.id);\n visited.add(neighbor.id);\n components[count].push(neighbor.id);\n }\n });\n }\n count++;\n }\n });\n return components;\n };\n\n // return undirected version of given dag\n var dagToUndirected = function dagToUndirected(dag) {\n var undirected = new Map();\n\n dag.forEach(function (value, key) {\n undirected.set(key, []);\n });\n\n dag.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n undirected.get(key).push(adjacent);\n undirected.get(adjacent.id).push({ id: key, gap: adjacent.gap, direction: adjacent.direction });\n });\n });\n\n return undirected;\n };\n\n // return reversed (directions inverted) version of given dag\n var dagToReversed = function dagToReversed(dag) {\n var reversed = new Map();\n\n dag.forEach(function (value, key) {\n reversed.set(key, []);\n });\n\n dag.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n reversed.get(adjacent.id).push({ id: key, gap: adjacent.gap, direction: adjacent.direction });\n });\n });\n\n return reversed;\n };\n\n /**** apply transformation to the initial draft layout to better align with constrained nodes ****/\n // solve the Orthogonal Procrustean Problem to rotate and/or reflect initial draft layout\n // here we follow the solution in Chapter 20.2 of Borg, I. & Groenen, P. (2005) Modern Multidimensional Scaling: Theory and Applications \n\n /* construct source and target configurations */\n\n var targetMatrix = []; // A - target configuration\n var sourceMatrix = []; // B - source configuration \n var standardTransformation = false; // false for no transformation, true for standart (Procrustes) transformation (rotation and/or reflection)\n var reflectionType = false; // false/true for reflection check, 'reflectOnX', 'reflectOnY' or 'reflectOnBoth' for reflection type if necessary\n var fixedNodes = new Set();\n var dag = new Map(); // adjacency list to keep directed acyclic graph (dag) that consists of relative placement constraints\n var dagUndirected = new Map(); // undirected version of the dag\n var components = []; // weakly connected components\n\n // fill fixedNodes collection to use later\n if (constraints.fixedNodeConstraint) {\n constraints.fixedNodeConstraint.forEach(function (nodeData) {\n fixedNodes.add(nodeData.nodeId);\n });\n }\n\n // construct dag from relative placement constraints \n if (constraints.relativePlacementConstraint) {\n // construct both directed and undirected version of the dag\n constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n if (dag.has(constraint.left)) {\n dag.get(constraint.left).push({ id: constraint.right, gap: constraint.gap, direction: \"horizontal\" });\n } else {\n dag.set(constraint.left, [{ id: constraint.right, gap: constraint.gap, direction: \"horizontal\" }]);\n }\n if (!dag.has(constraint.right)) {\n dag.set(constraint.right, []);\n }\n } else {\n if (dag.has(constraint.top)) {\n dag.get(constraint.top).push({ id: constraint.bottom, gap: constraint.gap, direction: \"vertical\" });\n } else {\n dag.set(constraint.top, [{ id: constraint.bottom, gap: constraint.gap, direction: \"vertical\" }]);\n }\n if (!dag.has(constraint.bottom)) {\n dag.set(constraint.bottom, []);\n }\n }\n });\n\n dagUndirected = dagToUndirected(dag);\n components = findComponents(dagUndirected);\n }\n\n if (CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING) {\n // first check fixed node constraint\n if (constraints.fixedNodeConstraint && constraints.fixedNodeConstraint.length > 1) {\n constraints.fixedNodeConstraint.forEach(function (nodeData, i) {\n targetMatrix[i] = [nodeData.position.x, nodeData.position.y];\n sourceMatrix[i] = [xCoords[nodeIndexes.get(nodeData.nodeId)], yCoords[nodeIndexes.get(nodeData.nodeId)]];\n });\n standardTransformation = true;\n } else if (constraints.alignmentConstraint) {\n (function () {\n // then check alignment constraint\n var count = 0;\n if (constraints.alignmentConstraint.vertical) {\n var verticalAlign = constraints.alignmentConstraint.vertical;\n\n var _loop2 = function _loop2(_i4) {\n var alignmentSet = new Set();\n verticalAlign[_i4].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var xPos = void 0;\n if (intersection.size > 0) xPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else xPos = calculateAvgPosition(alignmentSet).x;\n\n verticalAlign[_i4].forEach(function (nodeId) {\n targetMatrix[count] = [xPos, yCoords[nodeIndexes.get(nodeId)]];\n sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n count++;\n });\n };\n\n for (var _i4 = 0; _i4 < verticalAlign.length; _i4++) {\n _loop2(_i4);\n }\n standardTransformation = true;\n }\n if (constraints.alignmentConstraint.horizontal) {\n var horizontalAlign = constraints.alignmentConstraint.horizontal;\n\n var _loop3 = function _loop3(_i5) {\n var alignmentSet = new Set();\n horizontalAlign[_i5].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var yPos = void 0;\n if (intersection.size > 0) yPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else yPos = calculateAvgPosition(alignmentSet).y;\n\n horizontalAlign[_i5].forEach(function (nodeId) {\n targetMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yPos];\n sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n count++;\n });\n };\n\n for (var _i5 = 0; _i5 < horizontalAlign.length; _i5++) {\n _loop3(_i5);\n }\n standardTransformation = true;\n }\n if (constraints.relativePlacementConstraint) {\n reflectionType = true;\n }\n })();\n } else if (constraints.relativePlacementConstraint) {\n // finally check relative placement constraint\n // find largest component in dag\n var largestComponentSize = 0;\n var largestComponentIndex = 0;\n for (var _i6 = 0; _i6 < components.length; _i6++) {\n if (components[_i6].length > largestComponentSize) {\n largestComponentSize = components[_i6].length;\n largestComponentIndex = _i6;\n }\n }\n // if largest component isn't dominant, then take the votes for reflection\n if (largestComponentSize < dagUndirected.size / 2) {\n applyReflectionForRelativePlacement(constraints.relativePlacementConstraint);\n standardTransformation = false;\n reflectionType = false;\n } else {\n // use largest component for transformation\n // construct horizontal and vertical subgraphs in the largest component\n var subGraphOnHorizontal = new Map();\n var subGraphOnVertical = new Map();\n var constraintsInlargestComponent = [];\n\n components[largestComponentIndex].forEach(function (nodeId) {\n dag.get(nodeId).forEach(function (adjacent) {\n if (adjacent.direction == \"horizontal\") {\n if (subGraphOnHorizontal.has(nodeId)) {\n subGraphOnHorizontal.get(nodeId).push(adjacent);\n } else {\n subGraphOnHorizontal.set(nodeId, [adjacent]);\n }\n if (!subGraphOnHorizontal.has(adjacent.id)) {\n subGraphOnHorizontal.set(adjacent.id, []);\n }\n constraintsInlargestComponent.push({ left: nodeId, right: adjacent.id });\n } else {\n if (subGraphOnVertical.has(nodeId)) {\n subGraphOnVertical.get(nodeId).push(adjacent);\n } else {\n subGraphOnVertical.set(nodeId, [adjacent]);\n }\n if (!subGraphOnVertical.has(adjacent.id)) {\n subGraphOnVertical.set(adjacent.id, []);\n }\n constraintsInlargestComponent.push({ top: nodeId, bottom: adjacent.id });\n }\n });\n });\n\n applyReflectionForRelativePlacement(constraintsInlargestComponent);\n reflectionType = false;\n\n // calculate appropriate positioning for subgraphs\n var positionMapHorizontal = findAppropriatePositionForRelativePlacement(subGraphOnHorizontal, \"horizontal\");\n var positionMapVertical = findAppropriatePositionForRelativePlacement(subGraphOnVertical, \"vertical\");\n\n // construct source and target configuration\n components[largestComponentIndex].forEach(function (nodeId, i) {\n sourceMatrix[i] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n targetMatrix[i] = [];\n if (positionMapHorizontal.has(nodeId)) {\n targetMatrix[i][0] = positionMapHorizontal.get(nodeId);\n } else {\n targetMatrix[i][0] = xCoords[nodeIndexes.get(nodeId)];\n }\n if (positionMapVertical.has(nodeId)) {\n targetMatrix[i][1] = positionMapVertical.get(nodeId);\n } else {\n targetMatrix[i][1] = yCoords[nodeIndexes.get(nodeId)];\n }\n });\n\n standardTransformation = true;\n }\n }\n\n // if transformation is required, then calculate and apply transformation matrix\n if (standardTransformation) {\n /* calculate transformation matrix */\n var transformationMatrix = void 0;\n var targetMatrixTranspose = Matrix.transpose(targetMatrix); // A'\n var sourceMatrixTranspose = Matrix.transpose(sourceMatrix); // B'\n\n // centralize transpose matrices\n for (var _i7 = 0; _i7 < targetMatrixTranspose.length; _i7++) {\n targetMatrixTranspose[_i7] = Matrix.multGamma(targetMatrixTranspose[_i7]);\n sourceMatrixTranspose[_i7] = Matrix.multGamma(sourceMatrixTranspose[_i7]);\n }\n\n // do actual calculation for transformation matrix\n var tempMatrix = Matrix.multMat(targetMatrixTranspose, Matrix.transpose(sourceMatrixTranspose)); // tempMatrix = A'B\n var SVDResult = SVD.svd(tempMatrix); // SVD(A'B) = USV', svd function returns U, S and V \n transformationMatrix = Matrix.multMat(SVDResult.V, Matrix.transpose(SVDResult.U)); // transformationMatrix = T = VU'\n\n /* apply found transformation matrix to obtain final draft layout */\n for (var _i8 = 0; _i8 < nodeIndexes.size; _i8++) {\n var temp1 = [xCoords[_i8], yCoords[_i8]];\n var temp2 = [transformationMatrix[0][0], transformationMatrix[1][0]];\n var temp3 = [transformationMatrix[0][1], transformationMatrix[1][1]];\n xCoords[_i8] = Matrix.dotProduct(temp1, temp2);\n yCoords[_i8] = Matrix.dotProduct(temp1, temp3);\n }\n\n // applied only both alignment and rel. placement constraints exist\n if (reflectionType) {\n applyReflectionForRelativePlacement(constraints.relativePlacementConstraint);\n }\n }\n }\n\n if (CoSEConstants.ENFORCE_CONSTRAINTS) {\n /**** enforce constraints on the transformed draft layout ****/\n\n /* first enforce fixed node constraint */\n\n if (constraints.fixedNodeConstraint && constraints.fixedNodeConstraint.length > 0) {\n var translationAmount = { x: 0, y: 0 };\n constraints.fixedNodeConstraint.forEach(function (nodeData, i) {\n var posInTheory = { x: xCoords[nodeIndexes.get(nodeData.nodeId)], y: yCoords[nodeIndexes.get(nodeData.nodeId)] };\n var posDesired = nodeData.position;\n var posDiff = calculatePositionDiff(posDesired, posInTheory);\n translationAmount.x += posDiff.x;\n translationAmount.y += posDiff.y;\n });\n translationAmount.x /= constraints.fixedNodeConstraint.length;\n translationAmount.y /= constraints.fixedNodeConstraint.length;\n\n xCoords.forEach(function (value, i) {\n xCoords[i] += translationAmount.x;\n });\n\n yCoords.forEach(function (value, i) {\n yCoords[i] += translationAmount.y;\n });\n\n constraints.fixedNodeConstraint.forEach(function (nodeData) {\n xCoords[nodeIndexes.get(nodeData.nodeId)] = nodeData.position.x;\n yCoords[nodeIndexes.get(nodeData.nodeId)] = nodeData.position.y;\n });\n }\n\n /* then enforce alignment constraint */\n\n if (constraints.alignmentConstraint) {\n if (constraints.alignmentConstraint.vertical) {\n var xAlign = constraints.alignmentConstraint.vertical;\n\n var _loop4 = function _loop4(_i9) {\n var alignmentSet = new Set();\n xAlign[_i9].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var xPos = void 0;\n if (intersection.size > 0) xPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else xPos = calculateAvgPosition(alignmentSet).x;\n\n alignmentSet.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) xCoords[nodeIndexes.get(nodeId)] = xPos;\n });\n };\n\n for (var _i9 = 0; _i9 < xAlign.length; _i9++) {\n _loop4(_i9);\n }\n }\n if (constraints.alignmentConstraint.horizontal) {\n var yAlign = constraints.alignmentConstraint.horizontal;\n\n var _loop5 = function _loop5(_i10) {\n var alignmentSet = new Set();\n yAlign[_i10].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var yPos = void 0;\n if (intersection.size > 0) yPos = yCoords[nodeIndexes.get(intersection.values().next().value)];else yPos = calculateAvgPosition(alignmentSet).y;\n\n alignmentSet.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) yCoords[nodeIndexes.get(nodeId)] = yPos;\n });\n };\n\n for (var _i10 = 0; _i10 < yAlign.length; _i10++) {\n _loop5(_i10);\n }\n }\n }\n\n /* finally enforce relative placement constraint */\n\n if (constraints.relativePlacementConstraint) {\n (function () {\n var nodeToDummyForVerticalAlignment = new Map();\n var nodeToDummyForHorizontalAlignment = new Map();\n var dummyToNodeForVerticalAlignment = new Map();\n var dummyToNodeForHorizontalAlignment = new Map();\n var dummyPositionsForVerticalAlignment = new Map();\n var dummyPositionsForHorizontalAlignment = new Map();\n var fixedNodesOnHorizontal = new Set();\n var fixedNodesOnVertical = new Set();\n\n // fill maps and sets \n fixedNodes.forEach(function (nodeId) {\n fixedNodesOnHorizontal.add(nodeId);\n fixedNodesOnVertical.add(nodeId);\n });\n\n if (constraints.alignmentConstraint) {\n if (constraints.alignmentConstraint.vertical) {\n var verticalAlignment = constraints.alignmentConstraint.vertical;\n\n var _loop6 = function _loop6(_i11) {\n dummyToNodeForVerticalAlignment.set(\"dummy\" + _i11, []);\n verticalAlignment[_i11].forEach(function (nodeId) {\n nodeToDummyForVerticalAlignment.set(nodeId, \"dummy\" + _i11);\n dummyToNodeForVerticalAlignment.get(\"dummy\" + _i11).push(nodeId);\n if (fixedNodes.has(nodeId)) {\n fixedNodesOnHorizontal.add(\"dummy\" + _i11);\n }\n });\n dummyPositionsForVerticalAlignment.set(\"dummy\" + _i11, xCoords[nodeIndexes.get(verticalAlignment[_i11][0])]);\n };\n\n for (var _i11 = 0; _i11 < verticalAlignment.length; _i11++) {\n _loop6(_i11);\n }\n }\n if (constraints.alignmentConstraint.horizontal) {\n var horizontalAlignment = constraints.alignmentConstraint.horizontal;\n\n var _loop7 = function _loop7(_i12) {\n dummyToNodeForHorizontalAlignment.set(\"dummy\" + _i12, []);\n horizontalAlignment[_i12].forEach(function (nodeId) {\n nodeToDummyForHorizontalAlignment.set(nodeId, \"dummy\" + _i12);\n dummyToNodeForHorizontalAlignment.get(\"dummy\" + _i12).push(nodeId);\n if (fixedNodes.has(nodeId)) {\n fixedNodesOnVertical.add(\"dummy\" + _i12);\n }\n });\n dummyPositionsForHorizontalAlignment.set(\"dummy\" + _i12, yCoords[nodeIndexes.get(horizontalAlignment[_i12][0])]);\n };\n\n for (var _i12 = 0; _i12 < horizontalAlignment.length; _i12++) {\n _loop7(_i12);\n }\n }\n }\n\n // construct horizontal and vertical dags (subgraphs) from overall dag\n var dagOnHorizontal = new Map();\n var dagOnVertical = new Map();\n\n var _loop8 = function _loop8(nodeId) {\n dag.get(nodeId).forEach(function (adjacent) {\n var sourceId = void 0;\n var targetNode = void 0;\n if (adjacent[\"direction\"] == \"horizontal\") {\n sourceId = nodeToDummyForVerticalAlignment.get(nodeId) ? nodeToDummyForVerticalAlignment.get(nodeId) : nodeId;\n if (nodeToDummyForVerticalAlignment.get(adjacent.id)) {\n targetNode = { id: nodeToDummyForVerticalAlignment.get(adjacent.id), gap: adjacent.gap, direction: adjacent.direction };\n } else {\n targetNode = adjacent;\n }\n if (dagOnHorizontal.has(sourceId)) {\n dagOnHorizontal.get(sourceId).push(targetNode);\n } else {\n dagOnHorizontal.set(sourceId, [targetNode]);\n }\n if (!dagOnHorizontal.has(targetNode.id)) {\n dagOnHorizontal.set(targetNode.id, []);\n }\n } else {\n sourceId = nodeToDummyForHorizontalAlignment.get(nodeId) ? nodeToDummyForHorizontalAlignment.get(nodeId) : nodeId;\n if (nodeToDummyForHorizontalAlignment.get(adjacent.id)) {\n targetNode = { id: nodeToDummyForHorizontalAlignment.get(adjacent.id), gap: adjacent.gap, direction: adjacent.direction };\n } else {\n targetNode = adjacent;\n }\n if (dagOnVertical.has(sourceId)) {\n dagOnVertical.get(sourceId).push(targetNode);\n } else {\n dagOnVertical.set(sourceId, [targetNode]);\n }\n if (!dagOnVertical.has(targetNode.id)) {\n dagOnVertical.set(targetNode.id, []);\n }\n }\n });\n };\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = dag.keys()[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var nodeId = _step5.value;\n\n _loop8(nodeId);\n }\n\n // find source nodes of each component in horizontal and vertical dags\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n var undirectedOnHorizontal = dagToUndirected(dagOnHorizontal);\n var undirectedOnVertical = dagToUndirected(dagOnVertical);\n var componentsOnHorizontal = findComponents(undirectedOnHorizontal);\n var componentsOnVertical = findComponents(undirectedOnVertical);\n var reversedDagOnHorizontal = dagToReversed(dagOnHorizontal);\n var reversedDagOnVertical = dagToReversed(dagOnVertical);\n var componentSourcesOnHorizontal = [];\n var componentSourcesOnVertical = [];\n\n componentsOnHorizontal.forEach(function (component, index) {\n componentSourcesOnHorizontal[index] = [];\n component.forEach(function (nodeId) {\n if (reversedDagOnHorizontal.get(nodeId).length == 0) {\n componentSourcesOnHorizontal[index].push(nodeId);\n }\n });\n });\n\n componentsOnVertical.forEach(function (component, index) {\n componentSourcesOnVertical[index] = [];\n component.forEach(function (nodeId) {\n if (reversedDagOnVertical.get(nodeId).length == 0) {\n componentSourcesOnVertical[index].push(nodeId);\n }\n });\n });\n\n // calculate appropriate positioning for subgraphs\n var positionMapHorizontal = findAppropriatePositionForRelativePlacement(dagOnHorizontal, \"horizontal\", fixedNodesOnHorizontal, dummyPositionsForVerticalAlignment, componentSourcesOnHorizontal);\n var positionMapVertical = findAppropriatePositionForRelativePlacement(dagOnVertical, \"vertical\", fixedNodesOnVertical, dummyPositionsForHorizontalAlignment, componentSourcesOnVertical);\n\n // update positions of the nodes based on relative placement constraints\n\n var _loop9 = function _loop9(key) {\n if (dummyToNodeForVerticalAlignment.get(key)) {\n dummyToNodeForVerticalAlignment.get(key).forEach(function (nodeId) {\n xCoords[nodeIndexes.get(nodeId)] = positionMapHorizontal.get(key);\n });\n } else {\n xCoords[nodeIndexes.get(key)] = positionMapHorizontal.get(key);\n }\n };\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = positionMapHorizontal.keys()[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var key = _step6.value;\n\n _loop9(key);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n var _loop10 = function _loop10(key) {\n if (dummyToNodeForHorizontalAlignment.get(key)) {\n dummyToNodeForHorizontalAlignment.get(key).forEach(function (nodeId) {\n yCoords[nodeIndexes.get(nodeId)] = positionMapVertical.get(key);\n });\n } else {\n yCoords[nodeIndexes.get(key)] = positionMapVertical.get(key);\n }\n };\n\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = positionMapVertical.keys()[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var key = _step7.value;\n\n _loop10(key);\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n })();\n }\n }\n\n // assign new coordinates to nodes after constraint handling\n for (var _i13 = 0; _i13 < allNodes.length; _i13++) {\n var _node = allNodes[_i13];\n if (_node.getChild() == null) {\n _node.setCenter(xCoords[nodeIndexes.get(_node.id)], yCoords[nodeIndexes.get(_node.id)]);\n }\n }\n};\n\nmodule.exports = ConstraintHandler;\n\n/***/ }),\n\n/***/ 551:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__551__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(45);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"cose-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"cose-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeFcose\"] = factory(require(\"cose-base\"));\n\telse\n\t\troot[\"cytoscapeFcose\"] = factory(root[\"coseBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__140__) {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 658:\n/***/ ((module) => {\n\n\n\n// Simple, internal Object.assign() polyfill for options objects etc.\n\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n\n return tgt;\n};\n\n/***/ }),\n\n/***/ 548:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n/*\n * Auxiliary functions\n */\n\nvar LinkedList = __webpack_require__(140).layoutBase.LinkedList;\n\nvar auxiliary = {};\n\n// get the top most nodes\nauxiliary.getTopMostNodes = function (nodes) {\n var nodesMap = {};\n for (var i = 0; i < nodes.length; i++) {\n nodesMap[nodes[i].id()] = true;\n }\n var roots = nodes.filter(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var parent = ele.parent()[0];\n while (parent != null) {\n if (nodesMap[parent.id()]) {\n return false;\n }\n parent = parent.parent()[0];\n }\n return true;\n });\n\n return roots;\n};\n\n// find disconnected components and create dummy nodes that connect them\nauxiliary.connectComponents = function (cy, eles, topMostNodes, dummyNodes) {\n var queue = new LinkedList();\n var visited = new Set();\n var visitedTopMostNodes = [];\n var currentNeighbor = void 0;\n var minDegreeNode = void 0;\n var minDegree = void 0;\n\n var isConnected = false;\n var count = 1;\n var nodesConnectedToDummy = [];\n var components = [];\n\n var _loop = function _loop() {\n var cmpt = cy.collection();\n components.push(cmpt);\n\n var currentNode = topMostNodes[0];\n var childrenOfCurrentNode = cy.collection();\n childrenOfCurrentNode.merge(currentNode).merge(currentNode.descendants().intersection(eles));\n visitedTopMostNodes.push(currentNode);\n\n childrenOfCurrentNode.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n cmpt.merge(node);\n });\n\n var _loop2 = function _loop2() {\n currentNode = queue.shift();\n\n // Traverse all neighbors of this node\n var neighborNodes = cy.collection();\n currentNode.neighborhood().nodes().forEach(function (node) {\n if (eles.intersection(currentNode.edgesWith(node)).length > 0) {\n neighborNodes.merge(node);\n }\n });\n\n for (var i = 0; i < neighborNodes.length; i++) {\n var neighborNode = neighborNodes[i];\n currentNeighbor = topMostNodes.intersection(neighborNode.union(neighborNode.ancestors()));\n if (currentNeighbor != null && !visited.has(currentNeighbor[0])) {\n var childrenOfNeighbor = currentNeighbor.union(currentNeighbor.descendants());\n\n childrenOfNeighbor.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n cmpt.merge(node);\n if (topMostNodes.has(node)) {\n visitedTopMostNodes.push(node);\n }\n });\n }\n }\n };\n\n while (queue.length != 0) {\n _loop2();\n }\n\n cmpt.forEach(function (node) {\n eles.intersection(node.connectedEdges()).forEach(function (e) {\n // connectedEdges() usually cached\n if (cmpt.has(e.source()) && cmpt.has(e.target())) {\n // has() is cheap\n cmpt.merge(e);\n }\n });\n });\n\n if (visitedTopMostNodes.length == topMostNodes.length) {\n isConnected = true;\n }\n\n if (!isConnected || isConnected && count > 1) {\n minDegreeNode = visitedTopMostNodes[0];\n minDegree = minDegreeNode.connectedEdges().length;\n visitedTopMostNodes.forEach(function (node) {\n if (node.connectedEdges().length < minDegree) {\n minDegree = node.connectedEdges().length;\n minDegreeNode = node;\n }\n });\n nodesConnectedToDummy.push(minDegreeNode.id());\n // TO DO: Check efficiency of this part\n var temp = cy.collection();\n temp.merge(visitedTopMostNodes[0]);\n visitedTopMostNodes.forEach(function (node) {\n temp.merge(node);\n });\n visitedTopMostNodes = [];\n topMostNodes = topMostNodes.difference(temp);\n count++;\n }\n };\n\n do {\n _loop();\n } while (!isConnected);\n\n if (dummyNodes) {\n if (nodesConnectedToDummy.length > 0) {\n dummyNodes.set('dummy' + (dummyNodes.size + 1), nodesConnectedToDummy);\n }\n }\n return components;\n};\n\n// relocates componentResult to originalCenter if there is no fixedNodeConstraint\nauxiliary.relocateComponent = function (originalCenter, componentResult, options) {\n if (!options.fixedNodeConstraint) {\n var minXCoord = Number.POSITIVE_INFINITY;\n var maxXCoord = Number.NEGATIVE_INFINITY;\n var minYCoord = Number.POSITIVE_INFINITY;\n var maxYCoord = Number.NEGATIVE_INFINITY;\n if (options.quality == \"draft\") {\n // calculate current bounding box\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = componentResult.nodeIndexes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var key = _ref2[0];\n var value = _ref2[1];\n\n var cyNode = options.cy.getElementById(key);\n if (cyNode) {\n var nodeBB = cyNode.boundingBox();\n var leftX = componentResult.xCoords[value] - nodeBB.w / 2;\n var rightX = componentResult.xCoords[value] + nodeBB.w / 2;\n var topY = componentResult.yCoords[value] - nodeBB.h / 2;\n var bottomY = componentResult.yCoords[value] + nodeBB.h / 2;\n\n if (leftX < minXCoord) minXCoord = leftX;\n if (rightX > maxXCoord) maxXCoord = rightX;\n if (topY < minYCoord) minYCoord = topY;\n if (bottomY > maxYCoord) maxYCoord = bottomY;\n }\n }\n // find difference between current and original center\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var diffOnX = originalCenter.x - (maxXCoord + minXCoord) / 2;\n var diffOnY = originalCenter.y - (maxYCoord + minYCoord) / 2;\n // move component to original center\n componentResult.xCoords = componentResult.xCoords.map(function (x) {\n return x + diffOnX;\n });\n componentResult.yCoords = componentResult.yCoords.map(function (y) {\n return y + diffOnY;\n });\n } else {\n // calculate current bounding box\n Object.keys(componentResult).forEach(function (item) {\n var node = componentResult[item];\n var leftX = node.getRect().x;\n var rightX = node.getRect().x + node.getRect().width;\n var topY = node.getRect().y;\n var bottomY = node.getRect().y + node.getRect().height;\n\n if (leftX < minXCoord) minXCoord = leftX;\n if (rightX > maxXCoord) maxXCoord = rightX;\n if (topY < minYCoord) minYCoord = topY;\n if (bottomY > maxYCoord) maxYCoord = bottomY;\n });\n // find difference between current and original center\n var _diffOnX = originalCenter.x - (maxXCoord + minXCoord) / 2;\n var _diffOnY = originalCenter.y - (maxYCoord + minYCoord) / 2;\n // move component to original center\n Object.keys(componentResult).forEach(function (item) {\n var node = componentResult[item];\n node.setCenter(node.getCenterX() + _diffOnX, node.getCenterY() + _diffOnY);\n });\n }\n }\n};\n\nauxiliary.calcBoundingBox = function (parentNode, xCoords, yCoords, nodeIndexes) {\n // calculate bounds\n var left = Number.MAX_SAFE_INTEGER;\n var right = Number.MIN_SAFE_INTEGER;\n var top = Number.MAX_SAFE_INTEGER;\n var bottom = Number.MIN_SAFE_INTEGER;\n var nodeLeft = void 0;\n var nodeRight = void 0;\n var nodeTop = void 0;\n var nodeBottom = void 0;\n\n var nodes = parentNode.descendants().not(\":parent\");\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n var node = nodes[i];\n\n nodeLeft = xCoords[nodeIndexes.get(node.id())] - node.width() / 2;\n nodeRight = xCoords[nodeIndexes.get(node.id())] + node.width() / 2;\n nodeTop = yCoords[nodeIndexes.get(node.id())] - node.height() / 2;\n nodeBottom = yCoords[nodeIndexes.get(node.id())] + node.height() / 2;\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingBox = {};\n boundingBox.topLeftX = left;\n boundingBox.topLeftY = top;\n boundingBox.width = right - left;\n boundingBox.height = bottom - top;\n return boundingBox;\n};\n\n// This function finds and returns parent nodes whose all children are hidden\nauxiliary.calcParentsWithoutChildren = function (cy, eles) {\n var parentsWithoutChildren = cy.collection();\n eles.nodes(':parent').forEach(function (parent) {\n var check = false;\n parent.children().forEach(function (child) {\n if (child.css('display') != 'none') {\n check = true;\n }\n });\n if (!check) {\n parentsWithoutChildren.merge(parent);\n }\n });\n\n return parentsWithoutChildren;\n};\n\nmodule.exports = auxiliary;\n\n/***/ }),\n\n/***/ 816:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\n/**\n The implementation of the postprocessing part that applies CoSE layout over the spectral layout\n*/\n\nvar aux = __webpack_require__(548);\nvar CoSELayout = __webpack_require__(140).CoSELayout;\nvar CoSENode = __webpack_require__(140).CoSENode;\nvar PointD = __webpack_require__(140).layoutBase.PointD;\nvar DimensionD = __webpack_require__(140).layoutBase.DimensionD;\nvar LayoutConstants = __webpack_require__(140).layoutBase.LayoutConstants;\nvar FDLayoutConstants = __webpack_require__(140).layoutBase.FDLayoutConstants;\nvar CoSEConstants = __webpack_require__(140).CoSEConstants;\n\n// main function that cose layout is processed\nvar coseLayout = function coseLayout(options, spectralResult) {\n\n var cy = options.cy;\n var eles = options.eles;\n var nodes = eles.nodes();\n var edges = eles.edges();\n\n var nodeIndexes = void 0;\n var xCoords = void 0;\n var yCoords = void 0;\n var idToLNode = {};\n\n if (options.randomize) {\n nodeIndexes = spectralResult[\"nodeIndexes\"];\n xCoords = spectralResult[\"xCoords\"];\n yCoords = spectralResult[\"yCoords\"];\n }\n\n var isFn = function isFn(fn) {\n return typeof fn === 'function';\n };\n\n var optFn = function optFn(opt, ele) {\n if (isFn(opt)) {\n return opt(ele);\n } else {\n return opt;\n }\n };\n\n /**** Postprocessing functions ****/\n\n var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles);\n\n // transfer cytoscape nodes to cose nodes\n var processChildrenList = function processChildrenList(parent, children, layout, options) {\n var size = children.length;\n for (var i = 0; i < size; i++) {\n var theChild = children[i];\n var children_of_children = null;\n if (theChild.intersection(parentsWithoutChildren).length == 0) {\n children_of_children = theChild.children();\n }\n var theNode = void 0;\n\n var dimensions = theChild.layoutDimensions({\n nodeDimensionsIncludeLabels: options.nodeDimensionsIncludeLabels\n });\n\n if (theChild.outerWidth() != null && theChild.outerHeight() != null) {\n if (options.randomize) {\n if (!theChild.isParent()) {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(xCoords[nodeIndexes.get(theChild.id())] - dimensions.w / 2, yCoords[nodeIndexes.get(theChild.id())] - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n } else {\n var parentInfo = aux.calcBoundingBox(theChild, xCoords, yCoords, nodeIndexes);\n if (theChild.intersection(parentsWithoutChildren).length == 0) {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(parentInfo.topLeftX, parentInfo.topLeftY), new DimensionD(parentInfo.width, parentInfo.height)));\n } else {\n // for the parentsWithoutChildren\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(parentInfo.topLeftX, parentInfo.topLeftY), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n }\n }\n } else {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n }\n } else {\n theNode = parent.add(new CoSENode(this.graphManager));\n }\n // Attach id to the layout node and repulsion value\n theNode.id = theChild.data(\"id\");\n theNode.nodeRepulsion = optFn(options.nodeRepulsion, theChild);\n // Attach the paddings of cy node to layout node\n theNode.paddingLeft = parseInt(theChild.css('padding'));\n theNode.paddingTop = parseInt(theChild.css('padding'));\n theNode.paddingRight = parseInt(theChild.css('padding'));\n theNode.paddingBottom = parseInt(theChild.css('padding'));\n\n //Attach the label properties to both compound and simple nodes if labels will be included in node dimensions\n //These properties will be used while updating bounds of compounds during iterations or tiling\n //and will be used for simple nodes while transferring final positions to cytoscape\n if (options.nodeDimensionsIncludeLabels) {\n theNode.labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).w;\n theNode.labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).h;\n theNode.labelPosVertical = theChild.css(\"text-valign\");\n theNode.labelPosHorizontal = theChild.css(\"text-halign\");\n }\n\n // Map the layout node\n idToLNode[theChild.data(\"id\")] = theNode;\n\n if (isNaN(theNode.rect.x)) {\n theNode.rect.x = 0;\n }\n\n if (isNaN(theNode.rect.y)) {\n theNode.rect.y = 0;\n }\n\n if (children_of_children != null && children_of_children.length > 0) {\n var theNewGraph = void 0;\n theNewGraph = layout.getGraphManager().add(layout.newGraph(), theNode);\n processChildrenList(theNewGraph, children_of_children, layout, options);\n }\n }\n };\n\n // transfer cytoscape edges to cose edges\n var processEdges = function processEdges(layout, gm, edges) {\n var idealLengthTotal = 0;\n var edgeCount = 0;\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var sourceNode = idToLNode[edge.data(\"source\")];\n var targetNode = idToLNode[edge.data(\"target\")];\n if (sourceNode && targetNode && sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) {\n var e1 = gm.add(layout.newEdge(), sourceNode, targetNode);\n e1.id = edge.id();\n e1.idealLength = optFn(options.idealEdgeLength, edge);\n e1.edgeElasticity = optFn(options.edgeElasticity, edge);\n idealLengthTotal += e1.idealLength;\n edgeCount++;\n }\n }\n // we need to update the ideal edge length constant with the avg. ideal length value after processing edges\n // in case there is no edge, use other options\n if (options.idealEdgeLength != null) {\n if (edgeCount > 0) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = idealLengthTotal / edgeCount;else if (!isFn(options.idealEdgeLength)) // in case there is no edge, but option gives a value to use\n CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options.idealEdgeLength;else // in case there is no edge and we cannot get a value from option (because it's a function)\n CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\n // we need to update these constant values based on the ideal edge length constant\n CoSEConstants.MIN_REPULSION_DIST = FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\n CoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n }\n };\n\n // transfer cytoscape constraints to cose layout\n var processConstraints = function processConstraints(layout, options) {\n // get nodes to be fixed\n if (options.fixedNodeConstraint) {\n layout.constraints[\"fixedNodeConstraint\"] = options.fixedNodeConstraint;\n }\n // get nodes to be aligned\n if (options.alignmentConstraint) {\n layout.constraints[\"alignmentConstraint\"] = options.alignmentConstraint;\n }\n // get nodes to be relatively placed\n if (options.relativePlacementConstraint) {\n layout.constraints[\"relativePlacementConstraint\"] = options.relativePlacementConstraint;\n }\n };\n\n /**** Apply postprocessing ****/\n if (options.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options.nestingFactor;\n if (options.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options.gravity;\n if (options.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options.numIter;\n if (options.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options.gravityRange;\n if (options.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options.gravityCompound;\n if (options.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options.gravityRangeCompound;\n if (options.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options.initialEnergyOnIncremental;\n\n if (options.tilingCompareBy != null) CoSEConstants.TILING_COMPARE_BY = options.tilingCompareBy;\n\n if (options.quality == 'proof') LayoutConstants.QUALITY = 2;else LayoutConstants.QUALITY = 0;\n\n CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options.nodeDimensionsIncludeLabels;\n CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options.randomize;\n CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options.animate;\n CoSEConstants.TILE = options.tile;\n CoSEConstants.TILING_PADDING_VERTICAL = typeof options.tilingPaddingVertical === 'function' ? options.tilingPaddingVertical.call() : options.tilingPaddingVertical;\n CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options.tilingPaddingHorizontal === 'function' ? options.tilingPaddingHorizontal.call() : options.tilingPaddingHorizontal;\n\n CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = true;\n CoSEConstants.PURE_INCREMENTAL = !options.randomize;\n LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = options.uniformNodeDimensions;\n\n // This part is for debug/demo purpose\n if (options.step == \"transformed\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;\n CoSEConstants.ENFORCE_CONSTRAINTS = false;\n CoSEConstants.APPLY_LAYOUT = false;\n }\n if (options.step == \"enforced\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = true;\n CoSEConstants.APPLY_LAYOUT = false;\n }\n if (options.step == \"cose\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = false;\n CoSEConstants.APPLY_LAYOUT = true;\n }\n if (options.step == \"all\") {\n if (options.randomize) CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;else CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = true;\n CoSEConstants.APPLY_LAYOUT = true;\n }\n\n if (options.fixedNodeConstraint || options.alignmentConstraint || options.relativePlacementConstraint) {\n CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false;\n } else {\n CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true;\n }\n\n var coseLayout = new CoSELayout();\n var gm = coseLayout.newGraphManager();\n\n processChildrenList(gm.addRoot(), aux.getTopMostNodes(nodes), coseLayout, options);\n processEdges(coseLayout, gm, edges);\n processConstraints(coseLayout, options);\n\n coseLayout.runLayout();\n\n return idToLNode;\n};\n\nmodule.exports = { coseLayout: coseLayout };\n\n/***/ }),\n\n/***/ 212:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n The implementation of the fcose layout algorithm\n*/\n\nvar assign = __webpack_require__(658);\nvar aux = __webpack_require__(548);\n\nvar _require = __webpack_require__(657),\n spectralLayout = _require.spectralLayout;\n\nvar _require2 = __webpack_require__(816),\n coseLayout = _require2.coseLayout;\n\nvar defaults = Object.freeze({\n\n // 'draft', 'default' or 'proof' \n // - 'draft' only applies spectral layout \n // - 'default' improves the quality with subsequent CoSE layout (fast cooling rate)\n // - 'proof' improves the quality with subsequent CoSE layout (slow cooling rate) \n quality: \"default\",\n // Use random node positions at beginning of layout\n // if this is set to false, then quality option must be \"proof\"\n randomize: true,\n // Whether or not to animate the layout\n animate: true,\n // Duration of animation in ms, if enabled\n animationDuration: 1000,\n // Easing of animation, if enabled\n animationEasing: undefined,\n // Fit the viewport to the repositioned nodes\n fit: true,\n // Padding around layout\n padding: 30,\n // Whether to include labels in node dimensions. Valid in \"proof\" quality\n nodeDimensionsIncludeLabels: false,\n // Whether or not simple nodes (non-compound nodes) are of uniform dimensions\n uniformNodeDimensions: false,\n // Whether to pack disconnected components - valid only if randomize: true\n packComponents: true,\n // Layout step - all, transformed, enforced, cose - for debug purpose only\n step: \"all\",\n\n /* spectral layout options */\n\n // False for random, true for greedy\n samplingType: true,\n // Sample size to construct distance matrix\n sampleSize: 25,\n // Separation amount between nodes\n nodeSeparation: 75,\n // Power iteration tolerance\n piTol: 0.0000001,\n\n /* CoSE layout options */\n\n // Node repulsion (non overlapping) multiplier\n nodeRepulsion: function nodeRepulsion(node) {\n return 4500;\n },\n // Ideal edge (non nested) length\n idealEdgeLength: function idealEdgeLength(edge) {\n return 50;\n },\n // Divisor to compute edge forces\n edgeElasticity: function edgeElasticity(edge) {\n return 0.45;\n },\n // Nesting factor (multiplier) to compute ideal edge length for nested edges\n nestingFactor: 0.1,\n // Gravity force (constant)\n gravity: 0.25,\n // Maximum number of iterations to perform\n numIter: 2500,\n // For enabling tiling\n tile: true,\n // The function that specifies the criteria for comparing nodes while sorting them during tiling operation.\n // Takes the node id as a parameter and the default tiling operation is perfomed when this option is not set.\n tilingCompareBy: undefined,\n // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingVertical: 10,\n // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingHorizontal: 10,\n // Gravity range (constant) for compounds\n gravityRangeCompound: 1.5,\n // Gravity force (constant) for compounds\n gravityCompound: 1.0,\n // Gravity range (constant)\n gravityRange: 3.8,\n // Initial cooling factor for incremental layout \n initialEnergyOnIncremental: 0.3,\n\n /* constraint options */\n\n // Fix required nodes to predefined positions\n // [{nodeId: 'n1', position: {x: 100, y: 200}, {...}]\n fixedNodeConstraint: undefined,\n // Align required nodes in vertical/horizontal direction\n // {vertical: [['n1', 'n2')], ['n3', 'n4']], horizontal: ['n2', 'n4']}\n alignmentConstraint: undefined,\n // Place two nodes relatively in vertical/horizontal direction \n // [{top: 'n1', bottom: 'n2', gap: 100}, {left: 'n3', right: 'n4', gap: 75}]\n relativePlacementConstraint: undefined,\n\n /* layout event callbacks */\n ready: function ready() {}, // on layoutready\n stop: function stop() {} // on layoutstop\n});\n\nvar Layout = function () {\n function Layout(options) {\n _classCallCheck(this, Layout);\n\n this.options = assign({}, defaults, options);\n }\n\n _createClass(Layout, [{\n key: 'run',\n value: function run() {\n var layout = this;\n var options = this.options;\n var cy = options.cy;\n var eles = options.eles;\n\n var spectralResult = [];\n var xCoords = void 0;\n var yCoords = void 0;\n var coseResult = [];\n var components = void 0;\n var componentCenters = [];\n\n // basic validity check for constraint inputs \n if (options.fixedNodeConstraint && (!Array.isArray(options.fixedNodeConstraint) || options.fixedNodeConstraint.length == 0)) {\n options.fixedNodeConstraint = undefined;\n }\n\n if (options.alignmentConstraint) {\n if (options.alignmentConstraint.vertical && (!Array.isArray(options.alignmentConstraint.vertical) || options.alignmentConstraint.vertical.length == 0)) {\n options.alignmentConstraint.vertical = undefined;\n }\n if (options.alignmentConstraint.horizontal && (!Array.isArray(options.alignmentConstraint.horizontal) || options.alignmentConstraint.horizontal.length == 0)) {\n options.alignmentConstraint.horizontal = undefined;\n }\n }\n\n if (options.relativePlacementConstraint && (!Array.isArray(options.relativePlacementConstraint) || options.relativePlacementConstraint.length == 0)) {\n options.relativePlacementConstraint = undefined;\n }\n\n // if any constraint exists, set some options\n var constraintExist = options.fixedNodeConstraint || options.alignmentConstraint || options.relativePlacementConstraint;\n if (constraintExist) {\n // constraints work with these options\n options.tile = false;\n options.packComponents = false;\n }\n\n // decide component packing is enabled or not\n var layUtil = void 0;\n var packingEnabled = false;\n if (cy.layoutUtilities && options.packComponents) {\n layUtil = cy.layoutUtilities(\"get\");\n if (!layUtil) layUtil = cy.layoutUtilities();\n packingEnabled = true;\n }\n\n if (eles.nodes().length > 0) {\n // if packing is not enabled, perform layout on the whole graph\n if (!packingEnabled) {\n // store component center\n var boundingBox = options.eles.boundingBox();\n componentCenters.push({ x: boundingBox.x1 + boundingBox.w / 2, y: boundingBox.y1 + boundingBox.h / 2 });\n // apply spectral layout\n if (options.randomize) {\n var result = spectralLayout(options);\n spectralResult.push(result);\n }\n // apply cose layout as postprocessing\n if (options.quality == \"default\" || options.quality == \"proof\") {\n coseResult.push(coseLayout(options, spectralResult[0]));\n aux.relocateComponent(componentCenters[0], coseResult[0], options); // relocate center to original position\n } else {\n aux.relocateComponent(componentCenters[0], spectralResult[0], options); // relocate center to original position\n }\n } else {\n // packing is enabled\n var topMostNodes = aux.getTopMostNodes(options.eles.nodes());\n components = aux.connectComponents(cy, options.eles, topMostNodes);\n // store component centers\n components.forEach(function (component) {\n var boundingBox = component.boundingBox();\n componentCenters.push({ x: boundingBox.x1 + boundingBox.w / 2, y: boundingBox.y1 + boundingBox.h / 2 });\n });\n\n //send each component to spectral layout if randomized\n if (options.randomize) {\n components.forEach(function (component) {\n options.eles = component;\n spectralResult.push(spectralLayout(options));\n });\n }\n\n if (options.quality == \"default\" || options.quality == \"proof\") {\n var toBeTiledNodes = cy.collection();\n if (options.tile) {\n // behave nodes to be tiled as one component\n var nodeIndexes = new Map();\n var _xCoords = [];\n var _yCoords = [];\n var count = 0;\n var tempSpectralResult = { nodeIndexes: nodeIndexes, xCoords: _xCoords, yCoords: _yCoords };\n var indexesToBeDeleted = [];\n components.forEach(function (component, index) {\n if (component.edges().length == 0) {\n component.nodes().forEach(function (node, i) {\n toBeTiledNodes.merge(component.nodes()[i]);\n if (!node.isParent()) {\n tempSpectralResult.nodeIndexes.set(component.nodes()[i].id(), count++);\n tempSpectralResult.xCoords.push(component.nodes()[0].position().x);\n tempSpectralResult.yCoords.push(component.nodes()[0].position().y);\n }\n });\n indexesToBeDeleted.push(index);\n }\n });\n if (toBeTiledNodes.length > 1) {\n var _boundingBox = toBeTiledNodes.boundingBox();\n componentCenters.push({ x: _boundingBox.x1 + _boundingBox.w / 2, y: _boundingBox.y1 + _boundingBox.h / 2 });\n components.push(toBeTiledNodes);\n spectralResult.push(tempSpectralResult);\n for (var i = indexesToBeDeleted.length - 1; i >= 0; i--) {\n components.splice(indexesToBeDeleted[i], 1);\n spectralResult.splice(indexesToBeDeleted[i], 1);\n componentCenters.splice(indexesToBeDeleted[i], 1);\n };\n }\n }\n components.forEach(function (component, index) {\n // send each component to cose layout\n options.eles = component;\n coseResult.push(coseLayout(options, spectralResult[index]));\n aux.relocateComponent(componentCenters[index], coseResult[index], options); // relocate center to original position\n });\n } else {\n components.forEach(function (component, index) {\n aux.relocateComponent(componentCenters[index], spectralResult[index], options); // relocate center to original position\n });\n }\n\n // packing\n var componentsEvaluated = new Set();\n if (components.length > 1) {\n var subgraphs = [];\n var hiddenEles = eles.filter(function (ele) {\n return ele.css('display') == 'none';\n });\n components.forEach(function (component, index) {\n var nodeIndexes = void 0;\n if (options.quality == \"draft\") {\n nodeIndexes = spectralResult[index].nodeIndexes;\n }\n\n if (component.nodes().not(hiddenEles).length > 0) {\n var subgraph = {};\n subgraph.edges = [];\n subgraph.nodes = [];\n var nodeIndex = void 0;\n component.nodes().not(hiddenEles).forEach(function (node) {\n if (options.quality == \"draft\") {\n if (!node.isParent()) {\n nodeIndex = nodeIndexes.get(node.id());\n subgraph.nodes.push({ x: spectralResult[index].xCoords[nodeIndex] - node.boundingbox().w / 2, y: spectralResult[index].yCoords[nodeIndex] - node.boundingbox().h / 2, width: node.boundingbox().w, height: node.boundingbox().h });\n } else {\n var parentInfo = aux.calcBoundingBox(node, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n subgraph.nodes.push({ x: parentInfo.topLeftX, y: parentInfo.topLeftY, width: parentInfo.width, height: parentInfo.height });\n }\n } else {\n if (coseResult[index][node.id()]) {\n subgraph.nodes.push({ x: coseResult[index][node.id()].getLeft(), y: coseResult[index][node.id()].getTop(), width: coseResult[index][node.id()].getWidth(), height: coseResult[index][node.id()].getHeight() });\n }\n }\n });\n component.edges().forEach(function (edge) {\n var source = edge.source();\n var target = edge.target();\n if (source.css(\"display\") != \"none\" && target.css(\"display\") != \"none\") {\n if (options.quality == \"draft\") {\n var sourceNodeIndex = nodeIndexes.get(source.id());\n var targetNodeIndex = nodeIndexes.get(target.id());\n var sourceCenter = [];\n var targetCenter = [];\n if (source.isParent()) {\n var parentInfo = aux.calcBoundingBox(source, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n sourceCenter.push(parentInfo.topLeftX + parentInfo.width / 2);\n sourceCenter.push(parentInfo.topLeftY + parentInfo.height / 2);\n } else {\n sourceCenter.push(spectralResult[index].xCoords[sourceNodeIndex]);\n sourceCenter.push(spectralResult[index].yCoords[sourceNodeIndex]);\n }\n if (target.isParent()) {\n var _parentInfo = aux.calcBoundingBox(target, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n targetCenter.push(_parentInfo.topLeftX + _parentInfo.width / 2);\n targetCenter.push(_parentInfo.topLeftY + _parentInfo.height / 2);\n } else {\n targetCenter.push(spectralResult[index].xCoords[targetNodeIndex]);\n targetCenter.push(spectralResult[index].yCoords[targetNodeIndex]);\n }\n subgraph.edges.push({ startX: sourceCenter[0], startY: sourceCenter[1], endX: targetCenter[0], endY: targetCenter[1] });\n } else {\n if (coseResult[index][source.id()] && coseResult[index][target.id()]) {\n subgraph.edges.push({ startX: coseResult[index][source.id()].getCenterX(), startY: coseResult[index][source.id()].getCenterY(), endX: coseResult[index][target.id()].getCenterX(), endY: coseResult[index][target.id()].getCenterY() });\n }\n }\n }\n });\n if (subgraph.nodes.length > 0) {\n subgraphs.push(subgraph);\n componentsEvaluated.add(index);\n }\n }\n });\n var shiftResult = layUtil.packComponents(subgraphs, options.randomize).shifts;\n if (options.quality == \"draft\") {\n spectralResult.forEach(function (result, index) {\n var newXCoords = result.xCoords.map(function (x) {\n return x + shiftResult[index].dx;\n });\n var newYCoords = result.yCoords.map(function (y) {\n return y + shiftResult[index].dy;\n });\n result.xCoords = newXCoords;\n result.yCoords = newYCoords;\n });\n } else {\n var _count = 0;\n componentsEvaluated.forEach(function (index) {\n Object.keys(coseResult[index]).forEach(function (item) {\n var nodeRectangle = coseResult[index][item];\n nodeRectangle.setCenter(nodeRectangle.getCenterX() + shiftResult[_count].dx, nodeRectangle.getCenterY() + shiftResult[_count].dy);\n });\n _count++;\n });\n }\n }\n }\n }\n\n // get each element's calculated position\n var getPositions = function getPositions(ele, i) {\n if (options.quality == \"default\" || options.quality == \"proof\") {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var pos = void 0;\n var node = void 0;\n var theId = ele.data('id');\n coseResult.forEach(function (result) {\n if (theId in result) {\n pos = { x: result[theId].getRect().getCenterX(), y: result[theId].getRect().getCenterY() };\n node = result[theId];\n }\n });\n if (options.nodeDimensionsIncludeLabels) {\n if (node.labelWidth) {\n if (node.labelPosHorizontal == \"left\") {\n pos.x += node.labelWidth / 2;\n } else if (node.labelPosHorizontal == \"right\") {\n pos.x -= node.labelWidth / 2;\n }\n }\n if (node.labelHeight) {\n if (node.labelPosVertical == \"top\") {\n pos.y += node.labelHeight / 2;\n } else if (node.labelPosVertical == \"bottom\") {\n pos.y -= node.labelHeight / 2;\n }\n }\n }\n if (pos == undefined) pos = { x: ele.position(\"x\"), y: ele.position(\"y\") };\n return {\n x: pos.x,\n y: pos.y\n };\n } else {\n var _pos = void 0;\n spectralResult.forEach(function (result) {\n var index = result.nodeIndexes.get(ele.id());\n if (index != undefined) {\n _pos = { x: result.xCoords[index], y: result.yCoords[index] };\n }\n });\n if (_pos == undefined) _pos = { x: ele.position(\"x\"), y: ele.position(\"y\") };\n return {\n x: _pos.x,\n y: _pos.y\n };\n }\n };\n\n // quality = \"draft\" and randomize = false are contradictive so in that case positions don't change\n if (options.quality == \"default\" || options.quality == \"proof\" || options.randomize) {\n // transfer calculated positions to nodes (positions of only simple nodes are evaluated, compounds are positioned automatically)\n var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles);\n var _hiddenEles = eles.filter(function (ele) {\n return ele.css('display') == 'none';\n });\n options.eles = eles.not(_hiddenEles);\n\n eles.nodes().not(\":parent\").not(_hiddenEles).layoutPositions(layout, options, getPositions);\n\n if (parentsWithoutChildren.length > 0) {\n parentsWithoutChildren.forEach(function (ele) {\n ele.position(getPositions(ele));\n });\n }\n } else {\n console.log(\"If randomize option is set to false, then quality option must be 'default' or 'proof'.\");\n }\n }\n }]);\n\n return Layout;\n}();\n\nmodule.exports = Layout;\n\n/***/ }),\n\n/***/ 657:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\n/**\n The implementation of the spectral layout that is the first part of the fcose layout algorithm\n*/\n\nvar aux = __webpack_require__(548);\nvar Matrix = __webpack_require__(140).layoutBase.Matrix;\nvar SVD = __webpack_require__(140).layoutBase.SVD;\n\n// main function that spectral layout is processed\nvar spectralLayout = function spectralLayout(options) {\n\n var cy = options.cy;\n var eles = options.eles;\n var nodes = eles.nodes();\n var parentNodes = eles.nodes(\":parent\");\n\n var dummyNodes = new Map(); // map to keep dummy nodes and their neighbors\n var nodeIndexes = new Map(); // map to keep indexes to nodes\n var parentChildMap = new Map(); // mapping btw. compound and its representative node \n var allNodesNeighborhood = []; // array to keep neighborhood of all nodes\n var xCoords = [];\n var yCoords = [];\n\n var samplesColumn = []; // sampled vertices\n var minDistancesColumn = [];\n var C = []; // column sampling matrix\n var PHI = []; // intersection of column and row sampling matrices \n var INV = []; // inverse of PHI \n\n var firstSample = void 0; // the first sampled node\n var nodeSize = void 0;\n\n var infinity = 100000000;\n var small = 0.000000001;\n\n var piTol = options.piTol;\n var samplingType = options.samplingType; // false for random, true for greedy\n var nodeSeparation = options.nodeSeparation;\n var sampleSize = void 0;\n\n /**** Spectral-preprocessing functions ****/\n\n /**** Spectral layout functions ****/\n\n // determine which columns to be sampled\n var randomSampleCR = function randomSampleCR() {\n var sample = 0;\n var count = 0;\n var flag = false;\n\n while (count < sampleSize) {\n sample = Math.floor(Math.random() * nodeSize);\n\n flag = false;\n for (var i = 0; i < count; i++) {\n if (samplesColumn[i] == sample) {\n flag = true;\n break;\n }\n }\n\n if (!flag) {\n samplesColumn[count] = sample;\n count++;\n } else {\n continue;\n }\n }\n };\n\n // takes the index of the node(pivot) to initiate BFS as a parameter\n var BFS = function BFS(pivot, index, samplingMethod) {\n var path = []; // the front of the path\n var front = 0; // the back of the path\n var back = 0;\n var current = 0;\n var temp = void 0;\n var distance = [];\n\n var max_dist = 0; // the furthest node to be returned\n var max_ind = 1;\n\n for (var i = 0; i < nodeSize; i++) {\n distance[i] = infinity;\n }\n\n path[back] = pivot;\n distance[pivot] = 0;\n\n while (back >= front) {\n current = path[front++];\n var neighbors = allNodesNeighborhood[current];\n for (var _i = 0; _i < neighbors.length; _i++) {\n temp = nodeIndexes.get(neighbors[_i]);\n if (distance[temp] == infinity) {\n distance[temp] = distance[current] + 1;\n path[++back] = temp;\n }\n }\n C[current][index] = distance[current] * nodeSeparation;\n }\n\n if (samplingMethod) {\n for (var _i2 = 0; _i2 < nodeSize; _i2++) {\n if (C[_i2][index] < minDistancesColumn[_i2]) minDistancesColumn[_i2] = C[_i2][index];\n }\n\n for (var _i3 = 0; _i3 < nodeSize; _i3++) {\n if (minDistancesColumn[_i3] > max_dist) {\n max_dist = minDistancesColumn[_i3];\n max_ind = _i3;\n }\n }\n }\n return max_ind;\n };\n\n // apply BFS to all nodes or selected samples\n var allBFS = function allBFS(samplingMethod) {\n\n var sample = void 0;\n\n if (!samplingMethod) {\n randomSampleCR();\n\n // call BFS\n for (var i = 0; i < sampleSize; i++) {\n BFS(samplesColumn[i], i, samplingMethod, false);\n }\n } else {\n sample = Math.floor(Math.random() * nodeSize);\n firstSample = sample;\n\n for (var _i4 = 0; _i4 < nodeSize; _i4++) {\n minDistancesColumn[_i4] = infinity;\n }\n\n for (var _i5 = 0; _i5 < sampleSize; _i5++) {\n samplesColumn[_i5] = sample;\n sample = BFS(sample, _i5, samplingMethod);\n }\n }\n\n // form the squared distances for C\n for (var _i6 = 0; _i6 < nodeSize; _i6++) {\n for (var j = 0; j < sampleSize; j++) {\n C[_i6][j] *= C[_i6][j];\n }\n }\n\n // form PHI\n for (var _i7 = 0; _i7 < sampleSize; _i7++) {\n PHI[_i7] = [];\n }\n\n for (var _i8 = 0; _i8 < sampleSize; _i8++) {\n for (var _j = 0; _j < sampleSize; _j++) {\n PHI[_i8][_j] = C[samplesColumn[_j]][_i8];\n }\n }\n };\n\n // perform the SVD algorithm and apply a regularization step\n var sample = function sample() {\n\n var SVDResult = SVD.svd(PHI);\n\n var a_q = SVDResult.S;\n var a_u = SVDResult.U;\n var a_v = SVDResult.V;\n\n var max_s = a_q[0] * a_q[0] * a_q[0];\n\n var a_Sig = [];\n\n // regularization\n for (var i = 0; i < sampleSize; i++) {\n a_Sig[i] = [];\n for (var j = 0; j < sampleSize; j++) {\n a_Sig[i][j] = 0;\n if (i == j) {\n a_Sig[i][j] = a_q[i] / (a_q[i] * a_q[i] + max_s / (a_q[i] * a_q[i]));\n }\n }\n }\n\n INV = Matrix.multMat(Matrix.multMat(a_v, a_Sig), Matrix.transpose(a_u));\n };\n\n // calculate final coordinates \n var powerIteration = function powerIteration() {\n // two largest eigenvalues\n var theta1 = void 0;\n var theta2 = void 0;\n\n // initial guesses for eigenvectors\n var Y1 = [];\n var Y2 = [];\n\n var V1 = [];\n var V2 = [];\n\n for (var i = 0; i < nodeSize; i++) {\n Y1[i] = Math.random();\n Y2[i] = Math.random();\n }\n\n Y1 = Matrix.normalize(Y1);\n Y2 = Matrix.normalize(Y2);\n\n var count = 0;\n // to keep track of the improvement ratio in power iteration\n var current = small;\n var previous = small;\n\n var temp = void 0;\n\n while (true) {\n count++;\n\n for (var _i9 = 0; _i9 < nodeSize; _i9++) {\n V1[_i9] = Y1[_i9];\n }\n\n Y1 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V1), C, INV));\n theta1 = Matrix.dotProduct(V1, Y1);\n Y1 = Matrix.normalize(Y1);\n\n current = Matrix.dotProduct(V1, Y1);\n\n temp = Math.abs(current / previous);\n\n if (temp <= 1 + piTol && temp >= 1) {\n break;\n }\n\n previous = current;\n }\n\n for (var _i10 = 0; _i10 < nodeSize; _i10++) {\n V1[_i10] = Y1[_i10];\n }\n\n count = 0;\n previous = small;\n while (true) {\n count++;\n\n for (var _i11 = 0; _i11 < nodeSize; _i11++) {\n V2[_i11] = Y2[_i11];\n }\n\n V2 = Matrix.minusOp(V2, Matrix.multCons(V1, Matrix.dotProduct(V1, V2)));\n Y2 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V2), C, INV));\n theta2 = Matrix.dotProduct(V2, Y2);\n Y2 = Matrix.normalize(Y2);\n\n current = Matrix.dotProduct(V2, Y2);\n\n temp = Math.abs(current / previous);\n\n if (temp <= 1 + piTol && temp >= 1) {\n break;\n }\n\n previous = current;\n }\n\n for (var _i12 = 0; _i12 < nodeSize; _i12++) {\n V2[_i12] = Y2[_i12];\n }\n\n // theta1 now contains dominant eigenvalue\n // theta2 now contains the second-largest eigenvalue\n // V1 now contains theta1's eigenvector\n // V2 now contains theta2's eigenvector\n\n //populate the two vectors\n xCoords = Matrix.multCons(V1, Math.sqrt(Math.abs(theta1)));\n yCoords = Matrix.multCons(V2, Math.sqrt(Math.abs(theta2)));\n };\n\n /**** Preparation for spectral layout (Preprocessing) ****/\n\n // connect disconnected components (first top level, then inside of each compound node)\n aux.connectComponents(cy, eles, aux.getTopMostNodes(nodes), dummyNodes);\n\n parentNodes.forEach(function (ele) {\n aux.connectComponents(cy, eles, aux.getTopMostNodes(ele.descendants().intersection(eles)), dummyNodes);\n });\n\n // assign indexes to nodes (first real, then dummy nodes)\n var index = 0;\n for (var i = 0; i < nodes.length; i++) {\n if (!nodes[i].isParent()) {\n nodeIndexes.set(nodes[i].id(), index++);\n }\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = dummyNodes.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n nodeIndexes.set(key, index++);\n }\n\n // instantiate the neighborhood matrix\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n for (var _i13 = 0; _i13 < nodeIndexes.size; _i13++) {\n allNodesNeighborhood[_i13] = [];\n }\n\n // form a parent-child map to keep representative node of each compound node \n parentNodes.forEach(function (ele) {\n var children = ele.children().intersection(eles);\n\n // let random = 0;\n while (children.nodes(\":childless\").length == 0) {\n // random = Math.floor(Math.random() * children.nodes().length); // if all children are compound then proceed randomly\n children = children.nodes()[0].children().intersection(eles);\n }\n // select the representative node - we can apply different methods here\n // random = Math.floor(Math.random() * children.nodes(\":childless\").length);\n var index = 0;\n var min = children.nodes(\":childless\")[0].connectedEdges().length;\n children.nodes(\":childless\").forEach(function (ele2, i) {\n if (ele2.connectedEdges().length < min) {\n min = ele2.connectedEdges().length;\n index = i;\n }\n });\n parentChildMap.set(ele.id(), children.nodes(\":childless\")[index].id());\n });\n\n // add neighborhood relations (first real, then dummy nodes)\n nodes.forEach(function (ele) {\n var eleIndex = void 0;\n\n if (ele.isParent()) eleIndex = nodeIndexes.get(parentChildMap.get(ele.id()));else eleIndex = nodeIndexes.get(ele.id());\n\n ele.neighborhood().nodes().forEach(function (node) {\n if (eles.intersection(ele.edgesWith(node)).length > 0) {\n if (node.isParent()) allNodesNeighborhood[eleIndex].push(parentChildMap.get(node.id()));else allNodesNeighborhood[eleIndex].push(node.id());\n }\n });\n });\n\n var _loop = function _loop(_key) {\n var eleIndex = nodeIndexes.get(_key);\n var disconnectedId = void 0;\n dummyNodes.get(_key).forEach(function (id) {\n if (cy.getElementById(id).isParent()) disconnectedId = parentChildMap.get(id);else disconnectedId = id;\n\n allNodesNeighborhood[eleIndex].push(disconnectedId);\n allNodesNeighborhood[nodeIndexes.get(disconnectedId)].push(_key);\n });\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = dummyNodes.keys()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _key = _step2.value;\n\n _loop(_key);\n }\n\n // nodeSize now only considers the size of transformed graph\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n nodeSize = nodeIndexes.size;\n\n var spectralResult = void 0;\n\n // If number of nodes in transformed graph is 1 or 2, either SVD or powerIteration causes problem\n // So skip spectral and layout the graph with cose\n if (nodeSize > 2) {\n // if # of nodes in transformed graph is smaller than sample size,\n // then use # of nodes as sample size\n sampleSize = nodeSize < options.sampleSize ? nodeSize : options.sampleSize;\n\n // instantiates the partial matrices that will be used in spectral layout\n for (var _i14 = 0; _i14 < nodeSize; _i14++) {\n C[_i14] = [];\n }\n for (var _i15 = 0; _i15 < sampleSize; _i15++) {\n INV[_i15] = [];\n }\n\n /**** Apply spectral layout ****/\n\n if (options.quality == \"draft\" || options.step == \"all\") {\n allBFS(samplingType);\n sample();\n powerIteration();\n\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n } else {\n nodeIndexes.forEach(function (value, key) {\n xCoords.push(cy.getElementById(key).position(\"x\"));\n yCoords.push(cy.getElementById(key).position(\"y\"));\n });\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n }\n return spectralResult;\n } else {\n var iterator = nodeIndexes.keys();\n var firstNode = cy.getElementById(iterator.next().value);\n var firstNodePos = firstNode.position();\n var firstNodeWidth = firstNode.outerWidth();\n xCoords.push(firstNodePos.x);\n yCoords.push(firstNodePos.y);\n if (nodeSize == 2) {\n var secondNode = cy.getElementById(iterator.next().value);\n var secondNodeWidth = secondNode.outerWidth();\n xCoords.push(firstNodePos.x + firstNodeWidth / 2 + secondNodeWidth / 2 + options.idealEdgeLength);\n yCoords.push(firstNodePos.y);\n }\n\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n return spectralResult;\n }\n};\n\nmodule.exports = { spectralLayout: spectralLayout };\n\n/***/ }),\n\n/***/ 579:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar impl = __webpack_require__(212);\n\n// registers the extension on a cytoscape lib ref\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n cytoscape('layout', 'fcose', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n\n/***/ 140:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__140__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(579);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});", "import type { DiagramDBBase } from '../../diagram-api/types.js';\nimport type { ArchitectureDiagramConfig } from '../../config.type.js';\nimport type { D3Element } from '../../types.js';\nimport type cytoscape from 'cytoscape';\n\n/*=======================================*\\\n| Architecture Diagram Types |\n\\*=======================================*/\n\nexport type ArchitectureAlignment = 'vertical' | 'horizontal' | 'bend';\n\nexport type ArchitectureDirection = 'L' | 'R' | 'T' | 'B';\nexport type ArchitectureDirectionX = Extract;\nexport type ArchitectureDirectionY = Extract;\n\n/**\n * Contains LL, RR, TT, BB which are impossible connections\n */\nexport type InvalidArchitectureDirectionPair = `${ArchitectureDirection}${ArchitectureDirection}`;\nexport type ArchitectureDirectionPair = Exclude<\n InvalidArchitectureDirectionPair,\n 'LL' | 'RR' | 'TT' | 'BB'\n>;\nexport type ArchitectureDirectionPairXY = Exclude<\n InvalidArchitectureDirectionPair,\n 'LL' | 'RR' | 'TT' | 'BB' | 'LR' | 'RL' | 'TB' | 'BT'\n>;\n\nexport const ArchitectureDirectionName = {\n L: 'left',\n R: 'right',\n T: 'top',\n B: 'bottom',\n} as const;\n\nexport const ArchitectureDirectionArrow = {\n L: (scale: number) => `${scale},${scale / 2} 0,${scale} 0,0`,\n R: (scale: number) => `0,${scale / 2} ${scale},0 ${scale},${scale}`,\n T: (scale: number) => `0,0 ${scale},0 ${scale / 2},${scale}`,\n B: (scale: number) => `${scale / 2},0 ${scale},${scale} 0,${scale}`,\n} as const;\n\nexport const ArchitectureDirectionArrowShift = {\n L: (orig: number, arrowSize: number) => orig - arrowSize + 2,\n R: (orig: number, _arrowSize: number) => orig - 2,\n T: (orig: number, arrowSize: number) => orig - arrowSize + 2,\n B: (orig: number, _arrowSize: number) => orig - 2,\n} as const;\n\nexport const getOppositeArchitectureDirection = function (\n x: ArchitectureDirection\n): ArchitectureDirection {\n if (isArchitectureDirectionX(x)) {\n return x === 'L' ? 'R' : 'L';\n } else {\n return x === 'T' ? 'B' : 'T';\n }\n};\n\nexport const isArchitectureDirection = function (x: unknown): x is ArchitectureDirection {\n const temp = x as ArchitectureDirection;\n return temp === 'L' || temp === 'R' || temp === 'T' || temp === 'B';\n};\n\nexport const isArchitectureDirectionX = function (\n x: ArchitectureDirection\n): x is ArchitectureDirectionX {\n const temp = x as ArchitectureDirectionX;\n return temp === 'L' || temp === 'R';\n};\n\nexport const isArchitectureDirectionY = function (\n x: ArchitectureDirection\n): x is ArchitectureDirectionY {\n const temp = x as ArchitectureDirectionY;\n return temp === 'T' || temp === 'B';\n};\n\nexport const isArchitectureDirectionXY = function (\n a: ArchitectureDirection,\n b: ArchitectureDirection\n) {\n const aX_bY = isArchitectureDirectionX(a) && isArchitectureDirectionY(b);\n const aY_bX = isArchitectureDirectionY(a) && isArchitectureDirectionX(b);\n return aX_bY || aY_bX;\n};\n\nexport const isArchitecturePairXY = function (\n pair: ArchitectureDirectionPair\n): pair is ArchitectureDirectionPairXY {\n const lhs = pair[0] as ArchitectureDirection;\n const rhs = pair[1] as ArchitectureDirection;\n const aX_bY = isArchitectureDirectionX(lhs) && isArchitectureDirectionY(rhs);\n const aY_bX = isArchitectureDirectionY(lhs) && isArchitectureDirectionX(rhs);\n return aX_bY || aY_bX;\n};\n\n/**\n * Verifies that the architecture direction pair does not contain an invalid match (LL, RR, TT, BB)\n * @param x - architecture direction pair which could potentially be invalid\n * @returns true if the pair is not LL, RR, TT, or BB\n */\nexport const isValidArchitectureDirectionPair = function (\n x: InvalidArchitectureDirectionPair\n): x is ArchitectureDirectionPair {\n return x !== 'LL' && x !== 'RR' && x !== 'TT' && x !== 'BB';\n};\n\nexport type ArchitectureDirectionPairMap = Partial>;\n\n/**\n * Creates a pair of the directions of each side of an edge. This function should be used instead of manually creating it to ensure that the source is always the first character.\n *\n * Note: Undefined is returned when sourceDir and targetDir are the same. In theory this should never happen since the diagram parser throws an error if a user defines it as such.\n * @param sourceDir - source direction\n * @param targetDir - target direction\n * @returns\n */\nexport const getArchitectureDirectionPair = function (\n sourceDir: ArchitectureDirection,\n targetDir: ArchitectureDirection\n): ArchitectureDirectionPair | undefined {\n const pair: `${ArchitectureDirection}${ArchitectureDirection}` = `${sourceDir}${targetDir}`;\n return isValidArchitectureDirectionPair(pair) ? pair : undefined;\n};\n\n/**\n * Given an x,y position for an arrow and the direction of the edge it belongs to, return a factor for slightly shifting the edge\n * @param param0 - [x, y] coordinate pair\n * @param pair - architecture direction pair\n * @returns a new [x, y] coordinate pair\n */\nexport const shiftPositionByArchitectureDirectionPair = function (\n [x, y]: number[],\n pair: ArchitectureDirectionPair\n): number[] {\n const lhs = pair[0] as ArchitectureDirection;\n const rhs = pair[1] as ArchitectureDirection;\n if (isArchitectureDirectionX(lhs)) {\n if (isArchitectureDirectionY(rhs)) {\n return [x + (lhs === 'L' ? -1 : 1), y + (rhs === 'T' ? 1 : -1)];\n } else {\n return [x + (lhs === 'L' ? -1 : 1), y];\n }\n } else {\n if (isArchitectureDirectionX(rhs)) {\n return [x + (rhs === 'L' ? 1 : -1), y + (lhs === 'T' ? 1 : -1)];\n } else {\n return [x, y + (lhs === 'T' ? 1 : -1)];\n }\n }\n};\n\n/**\n * Given the directional pair of an XY edge, get the scale factors necessary to shift the coordinates inwards towards the edge\n * @param pair - XY pair of an edge\n * @returns - number[] containing [+/- 1, +/- 1]\n */\nexport const getArchitectureDirectionXYFactors = function (\n pair: ArchitectureDirectionPairXY\n): number[] {\n if (pair === 'LT' || pair === 'TL') {\n return [1, 1];\n } else if (pair === 'BL' || pair === 'LB') {\n return [1, -1];\n } else if (pair === 'BR' || pair === 'RB') {\n return [-1, -1];\n } else {\n return [-1, 1];\n }\n};\n\nexport const getArchitectureDirectionAlignment = function (\n a: ArchitectureDirection,\n b: ArchitectureDirection\n): ArchitectureAlignment {\n if (isArchitectureDirectionXY(a, b)) {\n return 'bend';\n } else if (isArchitectureDirectionX(a)) {\n return 'horizontal';\n }\n return 'vertical';\n};\n\nexport interface ArchitectureStyleOptions {\n archEdgeColor: string;\n archEdgeArrowColor: string;\n archEdgeWidth: string;\n archGroupBorderColor: string;\n archGroupBorderWidth: string;\n}\n\nexport interface ArchitectureService {\n id: string;\n type: 'service';\n edges: ArchitectureEdge[];\n icon?: string;\n iconText?: string;\n title?: string;\n in?: string;\n width?: number;\n height?: number;\n}\n\nexport interface ArchitectureJunction {\n id: string;\n type: 'junction';\n edges: ArchitectureEdge[];\n in?: string;\n width?: number;\n height?: number;\n}\n\nexport type ArchitectureNode = ArchitectureService | ArchitectureJunction;\n\nexport const isArchitectureService = function (x: ArchitectureNode): x is ArchitectureService {\n const temp = x as ArchitectureService;\n return temp.type === 'service';\n};\n\nexport const isArchitectureJunction = function (x: ArchitectureNode): x is ArchitectureJunction {\n const temp = x as ArchitectureJunction;\n return temp.type === 'junction';\n};\n\nexport interface ArchitectureGroup {\n id: string;\n icon?: string;\n title?: string;\n in?: string;\n}\n\nexport interface ArchitectureEdge
{\n lhsId: string;\n lhsDir: DT;\n lhsInto?: boolean;\n lhsGroup?: boolean;\n rhsId: string;\n rhsDir: DT;\n rhsInto?: boolean;\n rhsGroup?: boolean;\n title?: string;\n}\n\nexport interface ArchitectureDB extends DiagramDBBase {\n clear: () => void;\n addService: (service: Omit) => void;\n getServices: () => ArchitectureService[];\n addJunction: (service: Omit) => void;\n getJunctions: () => ArchitectureJunction[];\n getNodes: () => ArchitectureNode[];\n getNode: (id: string) => ArchitectureNode | null;\n addGroup: (group: ArchitectureGroup) => void;\n getGroups: () => ArchitectureGroup[];\n addEdge: (edge: ArchitectureEdge) => void;\n getEdges: () => ArchitectureEdge[];\n setElementForId: (id: string, element: D3Element) => void;\n getElementById: (id: string) => D3Element;\n getDataStructures: () => ArchitectureDataStructures;\n}\n\nexport type ArchitectureAdjacencyList = Record;\nexport type ArchitectureSpatialMap = Record;\n\n/**\n * Maps the direction that groups connect from.\n *\n * **Outer key**: ID of group A\n *\n * **Inner key**: ID of group B\n *\n * **Value**: 'vertical' or 'horizontal'\n *\n * Note: tmp[groupA][groupB] == tmp[groupB][groupA]\n */\nexport type ArchitectureGroupAlignments = Record<\n string,\n Record>\n>;\n\nexport interface ArchitectureDataStructures {\n adjList: ArchitectureAdjacencyList;\n spatialMaps: ArchitectureSpatialMap[];\n groupAlignments: ArchitectureGroupAlignments;\n}\n\nexport interface ArchitectureState extends Record {\n nodes: Record;\n groups: Record;\n edges: ArchitectureEdge[];\n registeredIds: Record;\n dataStructures?: ArchitectureDataStructures;\n elements: Record;\n config: ArchitectureDiagramConfig;\n}\n\n/*=======================================*\\\n| Cytoscape Override Types |\n\\*=======================================*/\n\nexport interface EdgeSingularData {\n id: string;\n label?: string;\n source: string;\n sourceDir: ArchitectureDirection;\n sourceArrow?: boolean;\n sourceGroup?: boolean;\n target: string;\n targetDir: ArchitectureDirection;\n targetArrow?: boolean;\n targetGroup?: boolean;\n [key: string]: any;\n}\n\nexport const edgeData = (edge: cytoscape.EdgeSingular) => {\n return edge.data() as EdgeSingularData;\n};\n\nexport interface EdgeSingular extends cytoscape.EdgeSingular {\n _private: {\n bodyBounds: unknown;\n rscratch: {\n startX: number;\n startY: number;\n midX: number;\n midY: number;\n endX: number;\n endY: number;\n };\n };\n data(): EdgeSingularData;\n data(key: T): EdgeSingularData[T];\n}\n\nexport type NodeSingularData =\n | {\n type: 'service';\n id: string;\n icon?: string;\n label?: string;\n parent?: string;\n width: number;\n height: number;\n [key: string]: any;\n }\n | {\n type: 'junction';\n id: string;\n parent?: string;\n width: number;\n height: number;\n [key: string]: any;\n }\n | {\n type: 'group';\n id: string;\n icon?: string;\n label?: string;\n parent?: string;\n [key: string]: any;\n };\n\nexport const nodeData = (node: cytoscape.NodeSingular) => {\n return node.data() as NodeSingularData;\n};\n\nexport interface NodeSingular extends cytoscape.NodeSingular {\n _private: {\n bodyBounds: {\n h: number;\n w: number;\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n };\n children: cytoscape.NodeSingular[];\n };\n data(): NodeSingularData;\n data(key: T): NodeSingularData[T];\n}\n", "import { getConfig as commonGetConfig } from '../../config.js';\nimport type { ArchitectureDiagramConfig } from '../../config.type.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport type { D3Element } from '../../types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type {\n ArchitectureAlignment,\n ArchitectureDirectionPair,\n ArchitectureDirectionPairMap,\n ArchitectureEdge,\n ArchitectureGroup,\n ArchitectureJunction,\n ArchitectureNode,\n ArchitectureService,\n ArchitectureSpatialMap,\n ArchitectureState,\n} from './architectureTypes.js';\nimport {\n getArchitectureDirectionAlignment,\n getArchitectureDirectionPair,\n isArchitectureDirection,\n isArchitectureJunction,\n isArchitectureService,\n shiftPositionByArchitectureDirectionPair,\n} from './architectureTypes.js';\n\nconst DEFAULT_ARCHITECTURE_CONFIG: Required =\n DEFAULT_CONFIG.architecture;\nexport class ArchitectureDB implements DiagramDB {\n private nodes: Record = {};\n private groups: Record = {};\n private edges: ArchitectureEdge[] = [];\n private registeredIds: Record = {};\n private dataStructures?: ArchitectureState['dataStructures'];\n private elements: Record = {};\n private diagramId = '';\n\n constructor() {\n this.clear();\n }\n\n public setDiagramId(id: string): void {\n this.diagramId = id;\n }\n\n public getDiagramId(): string {\n return this.diagramId;\n }\n\n public clear(): void {\n this.nodes = {};\n this.groups = {};\n this.edges = [];\n this.registeredIds = {};\n this.dataStructures = undefined;\n this.elements = {};\n this.diagramId = '';\n commonClear();\n }\n\n public addService({\n id,\n icon,\n in: parent,\n title,\n iconText,\n }: Omit): void {\n if (this.registeredIds[id] !== undefined) {\n throw new Error(\n `The service id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== undefined) {\n if (id === parent) {\n throw new Error(`The service [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === undefined) {\n throw new Error(\n `The service [${id}]'s parent does not exist. Please make sure the parent is created before this service`\n );\n }\n if (this.registeredIds[parent] === 'node') {\n throw new Error(`The service [${id}]'s parent is not a group`);\n }\n }\n\n this.registeredIds[id] = 'node';\n\n this.nodes[id] = {\n id,\n type: 'service',\n icon,\n iconText,\n title,\n edges: [],\n in: parent,\n };\n }\n\n public getServices(): ArchitectureService[] {\n return Object.values(this.nodes).filter(isArchitectureService);\n }\n\n public addJunction({ id, in: parent }: Omit): void {\n if (this.registeredIds[id] !== undefined) {\n throw new Error(\n `The junction id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== undefined) {\n if (id === parent) {\n throw new Error(`The junction [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === undefined) {\n throw new Error(\n `The junction [${id}]'s parent does not exist. Please make sure the parent is created before this junction`\n );\n }\n if (this.registeredIds[parent] === 'node') {\n throw new Error(`The junction [${id}]'s parent is not a group`);\n }\n }\n\n this.registeredIds[id] = 'node';\n\n this.nodes[id] = {\n id,\n type: 'junction',\n edges: [],\n in: parent,\n };\n }\n\n public getJunctions(): ArchitectureJunction[] {\n return Object.values(this.nodes).filter(isArchitectureJunction);\n }\n\n public getNodes(): ArchitectureNode[] {\n return Object.values(this.nodes);\n }\n\n public getNode(id: string): ArchitectureNode | null {\n return this.nodes[id] ?? null;\n }\n\n public addGroup({ id, icon, in: parent, title }: ArchitectureGroup): void {\n if (this.registeredIds?.[id] !== undefined) {\n throw new Error(\n `The group id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== undefined) {\n if (id === parent) {\n throw new Error(`The group [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds?.[parent] === undefined) {\n throw new Error(\n `The group [${id}]'s parent does not exist. Please make sure the parent is created before this group`\n );\n }\n if (this.registeredIds?.[parent] === 'node') {\n throw new Error(`The group [${id}]'s parent is not a group`);\n }\n }\n\n this.registeredIds[id] = 'group';\n\n this.groups[id] = {\n id,\n icon,\n title,\n in: parent,\n };\n }\n public getGroups(): ArchitectureGroup[] {\n return Object.values(this.groups);\n }\n public addEdge({\n lhsId,\n rhsId,\n lhsDir,\n rhsDir,\n lhsInto,\n rhsInto,\n lhsGroup,\n rhsGroup,\n title,\n }: ArchitectureEdge): void {\n if (!isArchitectureDirection(lhsDir)) {\n throw new Error(\n `Invalid direction given for left hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(lhsDir)}`\n );\n }\n if (!isArchitectureDirection(rhsDir)) {\n throw new Error(\n `Invalid direction given for right hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(rhsDir)}`\n );\n }\n\n if (this.nodes[lhsId] === undefined && this.groups[lhsId] === undefined) {\n throw new Error(\n `The left-hand id [${lhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n if (this.nodes[rhsId] === undefined && this.groups[rhsId] === undefined) {\n throw new Error(\n `The right-hand id [${rhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n\n const lhsGroupId = this.nodes[lhsId].in;\n const rhsGroupId = this.nodes[rhsId].in;\n if (lhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The left-hand id [${lhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n if (rhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The right-hand id [${rhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n\n const edge = {\n lhsId,\n lhsDir,\n lhsInto,\n lhsGroup,\n rhsId,\n rhsDir,\n rhsInto,\n rhsGroup,\n title,\n };\n\n this.edges.push(edge);\n if (this.nodes[lhsId] && this.nodes[rhsId]) {\n this.nodes[lhsId].edges.push(this.edges[this.edges.length - 1]);\n this.nodes[rhsId].edges.push(this.edges[this.edges.length - 1]);\n }\n }\n\n public getEdges(): ArchitectureEdge[] {\n return this.edges;\n }\n\n /**\n * Returns the current diagram's adjacency list, spatial map, & group alignments.\n * If they have not been created, run the algorithms to generate them.\n * @returns\n */\n public getDataStructures() {\n if (this.dataStructures === undefined) {\n // Tracks how groups are aligned with one another. Generated while creating the adj list\n const groupAlignments: Record<\n string,\n Record>\n > = {};\n\n // Create an adjacency list of the diagram to perform BFS on\n // Outer reduce applied on all services\n // Inner reduce applied on the edges for a service\n const adjList = Object.entries(this.nodes).reduce<\n Record\n >((prevOuter, [id, service]) => {\n prevOuter[id] = service.edges.reduce((prevInner, edge) => {\n // track the direction groups connect to one another\n const lhsGroupId = this.getNode(edge.lhsId)?.in;\n const rhsGroupId = this.getNode(edge.rhsId)?.in;\n if (lhsGroupId && rhsGroupId && lhsGroupId !== rhsGroupId) {\n const alignment = getArchitectureDirectionAlignment(edge.lhsDir, edge.rhsDir);\n if (alignment !== 'bend') {\n groupAlignments[lhsGroupId] ??= {};\n groupAlignments[lhsGroupId][rhsGroupId] = alignment;\n groupAlignments[rhsGroupId] ??= {};\n groupAlignments[rhsGroupId][lhsGroupId] = alignment;\n }\n }\n\n if (edge.lhsId === id) {\n // source is LHS\n const pair = getArchitectureDirectionPair(edge.lhsDir, edge.rhsDir);\n if (pair) {\n prevInner[pair] = edge.rhsId;\n }\n } else {\n // source is RHS\n const pair = getArchitectureDirectionPair(edge.rhsDir, edge.lhsDir);\n if (pair) {\n prevInner[pair] = edge.lhsId;\n }\n }\n return prevInner;\n }, {});\n return prevOuter;\n }, {});\n\n // Configuration for the initial pass of BFS\n const firstId = Object.keys(adjList)[0];\n const visited = { [firstId]: 1 };\n // If a key is present in this object, it has not been visited\n const notVisited = Object.keys(adjList).reduce(\n (prev, id) => (id === firstId ? prev : { ...prev, [id]: 1 }),\n {} as Record\n );\n\n // Perform BFS on the adjacency list\n const BFS = (startingId: string): ArchitectureSpatialMap => {\n const spatialMap = { [startingId]: [0, 0] };\n const queue = [startingId];\n while (queue.length > 0) {\n const id = queue.shift();\n if (id) {\n visited[id] = 1;\n delete notVisited[id];\n const adj = adjList[id];\n const [posX, posY] = spatialMap[id];\n Object.entries(adj).forEach(([dir, rhsId]) => {\n if (!visited[rhsId]) {\n spatialMap[rhsId] = shiftPositionByArchitectureDirectionPair(\n [posX, posY],\n dir as ArchitectureDirectionPair\n );\n queue.push(rhsId);\n }\n });\n }\n }\n return spatialMap;\n };\n const spatialMaps = [BFS(firstId)];\n\n // If our diagram is disconnected, keep adding additional spatial maps until all disconnected graphs have been found\n while (Object.keys(notVisited).length > 0) {\n spatialMaps.push(BFS(Object.keys(notVisited)[0]));\n }\n this.dataStructures = {\n adjList,\n spatialMaps,\n groupAlignments,\n };\n }\n return this.dataStructures;\n }\n\n public setElementForId(id: string, element: D3Element): void {\n this.elements[id] = element;\n }\n\n public getElementById(id: string): D3Element {\n return this.elements[id];\n }\n\n public getConfig(): Required {\n return cleanAndMerge({\n ...DEFAULT_ARCHITECTURE_CONFIG,\n ...commonGetConfig().architecture,\n });\n }\n\n public getConfigField(\n field: T\n ): Required[T] {\n return this.getConfig()[field];\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getAccDescription = getAccDescription;\n public setAccDescription = setAccDescription;\n}\n\n/**\n * Typed wrapper for resolving an architecture diagram's config fields. Returns the default value if undefined\n * @param field - the config field to access\n * @returns\n */\n// export function getConfigField(\n// field: T\n// ): Required[T] {\n// return db.getConfig()[field];\n// }\n", "import type { Architecture } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { ArchitectureDB } from './architectureDb.js';\n\nconst populateDb = (ast: Architecture, db: ArchitectureDB) => {\n populateCommonDb(ast, db);\n ast.groups.map((group) => db.addGroup(group));\n ast.services.map((service) => db.addService({ ...service, type: 'service' }));\n ast.junctions.map((service) => db.addJunction({ ...service, type: 'junction' }));\n // @ts-ignore TODO our parser guarantees the type is L/R/T/B and not string. How to change to union type?\n ast.edges.map((edge) => db.addEdge(edge));\n};\n\nexport const parser: ParserDefinition = {\n parser: {\n // @ts-expect-error - ArchitectureDB is not assignable to DiagramDB\n yy: undefined,\n },\n parse: async (input: string): Promise => {\n const ast: Architecture = await parse('architecture', input);\n log.debug(ast);\n const db = parser.parser?.yy;\n if (!(db instanceof ArchitectureDB)) {\n throw new Error(\n 'parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.'\n );\n }\n populateDb(ast, db);\n },\n};\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport type { ArchitectureStyleOptions } from './architectureTypes.js';\n\nconst getStyles: DiagramStylesProvider = (options: ArchitectureStyleOptions) =>\n `\n .edge {\n stroke-width: ${options.archEdgeWidth};\n stroke: ${options.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${options.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${options.archGroupBorderColor};\n stroke-width: ${options.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`;\n\nexport default getStyles;\n", "import type { LayoutOptions, Position } from 'cytoscape';\nimport cytoscape from 'cytoscape';\nimport fcose from 'cytoscape-fcose';\nimport { select } from 'd3';\nimport type { DrawDefinition, SVG } from '../../diagram-api/types.js';\nimport type { Diagram } from '../../Diagram.js';\nimport { log } from '../../logger.js';\nimport { registerIconPacks } from '../../rendering-util/icons.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport type { ArchitectureDB } from './architectureDb.js';\nimport { architectureIcons } from './architectureIcons.js';\nimport type {\n ArchitectureAlignment,\n ArchitectureDataStructures,\n ArchitectureGroupAlignments,\n ArchitectureJunction,\n ArchitectureSpatialMap,\n EdgeSingular,\n EdgeSingularData,\n NodeSingularData,\n} from './architectureTypes.js';\nimport {\n type ArchitectureDirection,\n type ArchitectureEdge,\n type ArchitectureGroup,\n type ArchitectureService,\n ArchitectureDirectionName,\n edgeData,\n getOppositeArchitectureDirection,\n isArchitectureDirectionXY,\n isArchitectureDirectionY,\n nodeData,\n} from './architectureTypes.js';\nimport { drawEdges, drawGroups, drawJunctions, drawServices } from './svgDraw.js';\n\nregisterIconPacks([\n {\n name: architectureIcons.prefix,\n icons: architectureIcons,\n },\n]);\ncytoscape.use(fcose as any);\n\nfunction addServices(services: ArchitectureService[], cy: cytoscape.Core, db: ArchitectureDB) {\n services.forEach((service) => {\n cy.add({\n group: 'nodes',\n data: {\n type: 'service',\n id: service.id,\n icon: service.icon,\n label: service.title,\n parent: service.in,\n width: db.getConfigField('iconSize'),\n height: db.getConfigField('iconSize'),\n } as NodeSingularData,\n classes: 'node-service',\n });\n });\n}\n\nfunction addJunctions(junctions: ArchitectureJunction[], cy: cytoscape.Core, db: ArchitectureDB) {\n junctions.forEach((junction) => {\n cy.add({\n group: 'nodes',\n data: {\n type: 'junction',\n id: junction.id,\n parent: junction.in,\n width: db.getConfigField('iconSize'),\n height: db.getConfigField('iconSize'),\n } as NodeSingularData,\n classes: 'node-junction',\n });\n });\n}\n\nfunction positionNodes(db: ArchitectureDB, cy: cytoscape.Core) {\n cy.nodes().map((node) => {\n const data = nodeData(node);\n if (data.type === 'group') {\n return;\n }\n data.x = node.position().x;\n data.y = node.position().y;\n\n const nodeElem = db.getElementById(data.id);\n nodeElem.attr('transform', 'translate(' + (data.x || 0) + ',' + (data.y || 0) + ')');\n });\n}\n\nfunction addGroups(groups: ArchitectureGroup[], cy: cytoscape.Core) {\n groups.forEach((group) => {\n cy.add({\n group: 'nodes',\n data: {\n type: 'group',\n id: group.id,\n icon: group.icon,\n label: group.title,\n parent: group.in,\n } as NodeSingularData,\n classes: 'node-group',\n });\n });\n}\n\nfunction addEdges(edges: ArchitectureEdge[], cy: cytoscape.Core) {\n edges.forEach((parsedEdge) => {\n const { lhsId, rhsId, lhsInto, lhsGroup, rhsInto, lhsDir, rhsDir, rhsGroup, title } =\n parsedEdge;\n const edgeType = isArchitectureDirectionXY(parsedEdge.lhsDir, parsedEdge.rhsDir)\n ? 'segments'\n : 'straight';\n const edge: EdgeSingularData = {\n id: `${lhsId}-${rhsId}`,\n label: title,\n source: lhsId,\n sourceDir: lhsDir,\n sourceArrow: lhsInto,\n sourceGroup: lhsGroup,\n sourceEndpoint:\n lhsDir === 'L'\n ? '0 50%'\n : lhsDir === 'R'\n ? '100% 50%'\n : lhsDir === 'T'\n ? '50% 0'\n : '50% 100%',\n target: rhsId,\n targetDir: rhsDir,\n targetArrow: rhsInto,\n targetGroup: rhsGroup,\n targetEndpoint:\n rhsDir === 'L'\n ? '0 50%'\n : rhsDir === 'R'\n ? '100% 50%'\n : rhsDir === 'T'\n ? '50% 0'\n : '50% 100%',\n };\n cy.add({\n group: 'edges',\n data: edge,\n classes: edgeType,\n });\n });\n}\n\nfunction getAlignments(\n db: ArchitectureDB,\n spatialMaps: ArchitectureSpatialMap[],\n groupAlignments: ArchitectureGroupAlignments\n): fcose.FcoseAlignmentConstraint {\n /**\n * Flattens the alignment object so nodes in different groups will be in the same alignment array IFF their groups don't connect in a conflicting alignment\n *\n * i.e., two groups which connect horizontally should not have nodes with vertical alignments to one another\n *\n * See: #5952\n *\n * @param alignmentObj - alignment object with the outer key being the row/col # and the inner key being the group name mapped to the nodes on that axis in the group\n * @param alignmentDir - alignment direction\n * @returns flattened alignment object with an arbitrary key mapping to nodes in the same row/col\n */\n const flattenAlignments = (\n alignmentObj: Record>,\n alignmentDir: ArchitectureAlignment\n ): Record => {\n return Object.entries(alignmentObj).reduce(\n (prev, [dir, alignments]) => {\n // prev is the mapping of x/y coordinate to an array of the nodes in that row/column\n let cnt = 0;\n const arr = Object.entries(alignments); // [group name, array of nodes within the group on axis dir]\n if (arr.length === 1) {\n // If only one group exists in the row/column, we don't need to do anything else\n prev[dir] = arr[0][1];\n return prev;\n }\n for (let i = 0; i < arr.length - 1; i++) {\n for (let j = i + 1; j < arr.length; j++) {\n const [aGroupId, aNodeIds] = arr[i];\n const [bGroupId, bNodeIds] = arr[j];\n const alignment = groupAlignments[aGroupId]?.[bGroupId]; // Get how the two groups are intended to align (undefined if they aren't)\n\n if (alignment === alignmentDir) {\n // If the intended alignment between the two groups is the same as the alignment we are parsing\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds]; // add the node ids of both groups to the axis array in prev\n } else if (aGroupId === 'default' || bGroupId === 'default') {\n // If either of the groups are in the default space (not in a group), use the same behavior as above\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];\n } else {\n // Otherwise, the nodes in the two groups are not intended to align\n const keyA = `${dir}-${cnt++}`;\n prev[keyA] = aNodeIds;\n const keyB = `${dir}-${cnt++}`;\n prev[keyB] = bNodeIds;\n }\n }\n }\n\n return prev;\n },\n {} as Record\n );\n };\n\n const alignments = spatialMaps.map((spatialMap) => {\n const horizontalAlignments: Record> = {};\n const verticalAlignments: Record> = {};\n\n // Group service ids in an object with their x and y coordinate as the key\n Object.entries(spatialMap).forEach(([id, [x, y]]) => {\n const nodeGroup = db.getNode(id)?.in ?? 'default';\n\n horizontalAlignments[y] ??= {};\n horizontalAlignments[y][nodeGroup] ??= [];\n horizontalAlignments[y][nodeGroup].push(id);\n\n verticalAlignments[x] ??= {};\n verticalAlignments[x][nodeGroup] ??= [];\n verticalAlignments[x][nodeGroup].push(id);\n });\n\n // Merge the values of each object into a list if the inner list has at least 2 elements\n return {\n horiz: Object.values(flattenAlignments(horizontalAlignments, 'horizontal')).filter(\n (arr) => arr.length > 1\n ),\n vert: Object.values(flattenAlignments(verticalAlignments, 'vertical')).filter(\n (arr) => arr.length > 1\n ),\n };\n });\n\n // Merge the alignment lists for each spatial map into one 2d array per axis\n const [horizontal, vertical] = alignments.reduce(\n ([prevHoriz, prevVert], { horiz, vert }) => {\n return [\n [...prevHoriz, ...horiz],\n [...prevVert, ...vert],\n ];\n },\n [[] as string[][], [] as string[][]]\n );\n\n return {\n horizontal,\n vertical,\n };\n}\n\nfunction getRelativeConstraints(\n spatialMaps: ArchitectureSpatialMap[],\n db: ArchitectureDB\n): fcose.FcoseRelativePlacementConstraint[] {\n const relativeConstraints: fcose.FcoseRelativePlacementConstraint[] = [];\n const posToStr = (pos: number[]) => `${pos[0]},${pos[1]}`;\n const strToPos = (pos: string) => pos.split(',').map((p) => parseInt(p));\n\n spatialMaps.forEach((spatialMap) => {\n const invSpatialMap = Object.fromEntries(\n Object.entries(spatialMap).map(([id, pos]) => [posToStr(pos), id])\n );\n\n // perform BFS\n const queue = [posToStr([0, 0])];\n const visited: Record = {};\n const directions: Record = {\n L: [-1, 0],\n R: [1, 0],\n T: [0, 1],\n B: [0, -1],\n };\n while (queue.length > 0) {\n const curr = queue.shift();\n if (curr) {\n visited[curr] = 1;\n const currId = invSpatialMap[curr];\n if (currId) {\n const currPos = strToPos(curr);\n Object.entries(directions).forEach(([dir, shift]) => {\n const newPos = posToStr([currPos[0] + shift[0], currPos[1] + shift[1]]);\n const newId = invSpatialMap[newPos];\n // If there is an adjacent service to the current one and it has not yet been visited\n if (newId && !visited[newPos]) {\n queue.push(newPos);\n // @ts-ignore cannot determine if left/right or top/bottom are paired together\n relativeConstraints.push({\n [ArchitectureDirectionName[dir as ArchitectureDirection]]: newId,\n [ArchitectureDirectionName[\n getOppositeArchitectureDirection(dir as ArchitectureDirection)\n ]]: currId,\n gap: 1.5 * db.getConfigField('iconSize'),\n });\n }\n });\n }\n }\n }\n });\n return relativeConstraints;\n}\n\nfunction layoutArchitecture(\n services: ArchitectureService[],\n junctions: ArchitectureJunction[],\n groups: ArchitectureGroup[],\n edges: ArchitectureEdge[],\n db: ArchitectureDB,\n { spatialMaps, groupAlignments }: ArchitectureDataStructures\n): Promise {\n return new Promise((resolve) => {\n const renderEl = select('body').append('div').attr('id', 'cy').attr('style', 'display:none');\n const cy = cytoscape({\n container: document.getElementById('cy'),\n style: [\n {\n selector: 'edge',\n style: {\n 'curve-style': 'straight',\n 'source-endpoint': 'data(sourceEndpoint)',\n 'target-endpoint': 'data(targetEndpoint)',\n },\n },\n {\n selector: 'edge[label]',\n style: {\n label: 'data(label)',\n },\n },\n {\n selector: 'edge.segments',\n style: {\n 'curve-style': 'segments',\n 'segment-weights': '0',\n 'segment-distances': [0.5],\n // @ts-ignore Incorrect library types\n 'edge-distances': 'endpoints',\n 'source-endpoint': 'data(sourceEndpoint)',\n 'target-endpoint': 'data(targetEndpoint)',\n },\n },\n {\n selector: 'node',\n style: {\n // @ts-ignore Incorrect library types\n 'compound-sizing-wrt-labels': 'include',\n },\n },\n {\n selector: 'node[label]',\n style: {\n 'text-valign': 'bottom',\n 'text-halign': 'center',\n 'font-size': `${db.getConfigField('fontSize')}px`,\n },\n },\n {\n selector: '.node-service',\n style: {\n label: 'data(label)',\n width: 'data(width)',\n height: 'data(height)',\n },\n },\n {\n selector: '.node-junction',\n style: {\n width: 'data(width)',\n height: 'data(height)',\n },\n },\n {\n selector: '.node-group',\n style: {\n // @ts-ignore Incorrect library types\n padding: `${db.getConfigField('padding')}px`,\n },\n },\n ],\n layout: {\n name: 'grid',\n boundingBox: {\n x1: 0,\n x2: 100,\n y1: 0,\n y2: 100,\n },\n },\n });\n // Remove element after layout\n renderEl.remove();\n\n addGroups(groups, cy);\n addServices(services, cy, db);\n addJunctions(junctions, cy, db);\n addEdges(edges, cy);\n // Use the spatial map to create alignment arrays for fcose\n const alignmentConstraint = getAlignments(db, spatialMaps, groupAlignments);\n\n // Create the relative constraints for fcose by using an inverse of the spatial map and performing BFS on it\n const relativePlacementConstraint = getRelativeConstraints(spatialMaps, db);\n\n const iconSize = db.getConfigField('iconSize');\n const sameGroupIdealLength = db.getConfigField('idealEdgeLengthMultiplier') * iconSize;\n const crossGroupIdealLength = 0.5 * iconSize;\n const sameGroupElasticity = db.getConfigField('edgeElasticity');\n\n const layout = cy.layout({\n name: 'fcose',\n quality: 'proof',\n randomize: db.getConfigField('randomize'),\n nodeSeparation: db.getConfigField('nodeSeparation'),\n numIter: db.getConfigField('numIter'),\n styleEnabled: false,\n animate: false,\n nodeDimensionsIncludeLabels: false,\n // Adjust the edge parameters if it passes through the border of a group\n // Hacky fix for: https://github.com/iVis-at-Bilkent/cytoscape.js-fcose/issues/67\n idealEdgeLength(edge: EdgeSingular) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n return parentA === parentB ? sameGroupIdealLength : crossGroupIdealLength;\n },\n edgeElasticity(edge: EdgeSingular) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n return parentA === parentB ? sameGroupElasticity : 0.001;\n },\n alignmentConstraint,\n relativePlacementConstraint,\n } as LayoutOptions);\n\n // Once the diagram has been generated and the service's position cords are set, adjust the XY edges to have a 90deg bend\n layout.one('layoutstop', () => {\n function getSegmentWeights(\n source: Position,\n target: Position,\n pointX: number,\n pointY: number\n ) {\n let W, D;\n const { x: sX, y: sY } = source;\n const { x: tX, y: tY } = target;\n\n D =\n (pointY - sY + ((sX - pointX) * (sY - tY)) / (sX - tX)) /\n Math.sqrt(1 + Math.pow((sY - tY) / (sX - tX), 2));\n W = Math.sqrt(Math.pow(pointY - sY, 2) + Math.pow(pointX - sX, 2) - Math.pow(D, 2));\n\n const distAB = Math.sqrt(Math.pow(tX - sX, 2) + Math.pow(tY - sY, 2));\n W = W / distAB;\n\n //check whether the point (pointX, pointY) is on right or left of the line src to tgt. for instance : a point C(X, Y) and line (AB). d=(xB-xA)(yC-yA)-(yB-yA)(xC-xA). if d>0, then C is on left of the line. if d<0, it is on right. if d=0, it is on the line.\n let delta1 = (tX - sX) * (pointY - sY) - (tY - sY) * (pointX - sX);\n switch (true) {\n case delta1 >= 0:\n delta1 = 1;\n break;\n case delta1 < 0:\n delta1 = -1;\n break;\n }\n //check whether the point (pointX, pointY) is \"behind\" the line src to tgt\n let delta2 = (tX - sX) * (pointX - sX) + (tY - sY) * (pointY - sY);\n switch (true) {\n case delta2 >= 0:\n delta2 = 1;\n break;\n case delta2 < 0:\n delta2 = -1;\n break;\n }\n\n D = Math.abs(D) * delta1; //ensure that sign of D is same as sign of delta1. Hence we need to take absolute value of D and multiply by delta1\n W = W * delta2;\n\n return {\n distances: D,\n weights: W,\n };\n }\n cy.startBatch();\n for (const edge of Object.values(cy.edges())) {\n if (edge.data?.()) {\n const { x: sX, y: sY } = edge.source().position();\n const { x: tX, y: tY } = edge.target().position();\n if (sX !== tX && sY !== tY) {\n const sEP = edge.sourceEndpoint();\n const tEP = edge.targetEndpoint();\n const { sourceDir } = edgeData(edge);\n const [pointX, pointY] = isArchitectureDirectionY(sourceDir)\n ? [sEP.x, tEP.y]\n : [tEP.x, sEP.y];\n const { weights, distances } = getSegmentWeights(sEP, tEP, pointX, pointY);\n edge.style('segment-distances', distances);\n edge.style('segment-weights', weights);\n }\n }\n }\n cy.endBatch();\n layout.run();\n });\n layout.run();\n\n cy.ready((e) => {\n log.info('Ready', e);\n resolve(cy);\n });\n });\n}\n\nexport const draw: DrawDefinition = async (text, id, _version, diagObj: Diagram) => {\n // TODO: Add title support for architecture diagrams\n\n const db = diagObj.db as ArchitectureDB;\n db.setDiagramId(id);\n\n const services = db.getServices();\n const junctions = db.getJunctions();\n const groups = db.getGroups();\n const edges = db.getEdges();\n const ds = db.getDataStructures();\n\n const svg: SVG = selectSvgElement(id);\n\n const edgesElem = svg.append('g');\n edgesElem.attr('class', 'architecture-edges');\n\n const servicesElem = svg.append('g');\n servicesElem.attr('class', 'architecture-services');\n\n const groupElem = svg.append('g');\n groupElem.attr('class', 'architecture-groups');\n\n await drawServices(db, servicesElem, services, id);\n drawJunctions(db, servicesElem, junctions, id);\n\n const cy = await layoutArchitecture(services, junctions, groups, edges, db, ds);\n\n await drawEdges(edgesElem, cy, db, id);\n await drawGroups(groupElem, cy, db, id);\n positionNodes(db, cy);\n\n setupGraphViewbox(undefined, svg, db.getConfigField('padding'), db.getConfigField('useMaxWidth'));\n};\n\nexport const renderer = { draw };\n", "import { unknownIcon } from '../../rendering-util/icons.js';\nimport type { IconifyJSON } from '@iconify/types';\n\nconst wrapIcon = (icon: string) => {\n return `${icon}`;\n};\n\nexport const architectureIcons: IconifyJSON = {\n prefix: 'mermaid-architecture',\n height: 80,\n width: 80,\n icons: {\n database: {\n body: wrapIcon(\n ''\n ),\n },\n server: {\n body: wrapIcon(\n ''\n ),\n },\n disk: {\n body: wrapIcon(\n ''\n ),\n },\n internet: {\n body: wrapIcon(\n ''\n ),\n },\n cloud: {\n body: wrapIcon(\n ''\n ),\n },\n unknown: unknownIcon,\n blank: {\n body: wrapIcon(''),\n },\n },\n};\n", "import type cytoscape from 'cytoscape';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { createText } from '../../rendering-util/createText.js';\nimport { getIconSVG } from '../../rendering-util/icons.js';\nimport type { D3Element } from '../../types.js';\nimport { sanitizeText } from '../common/common.js';\nimport type { ArchitectureDB } from './architectureDb.js';\nimport { architectureIcons } from './architectureIcons.js';\nimport {\n ArchitectureDirectionArrow,\n ArchitectureDirectionArrowShift,\n edgeData,\n getArchitectureDirectionPair,\n getArchitectureDirectionXYFactors,\n isArchitectureDirectionX,\n isArchitectureDirectionXY,\n isArchitectureDirectionY,\n isArchitecturePairXY,\n nodeData,\n type ArchitectureJunction,\n type ArchitectureService,\n} from './architectureTypes.js';\nimport { getEdgeId } from '../../utils.js';\n\nexport const drawEdges = async function (\n edgesEl: D3Element,\n cy: cytoscape.Core,\n db: ArchitectureDB,\n diagramId: string\n) {\n const padding = db.getConfigField('padding');\n const iconSize = db.getConfigField('iconSize');\n const halfIconSize = iconSize / 2;\n const arrowSize = iconSize / 6;\n const halfArrowSize = arrowSize / 2;\n\n await Promise.all(\n cy.edges().map(async (edge) => {\n const {\n source,\n sourceDir,\n sourceArrow,\n sourceGroup,\n target,\n targetDir,\n targetArrow,\n targetGroup,\n label,\n } = edgeData(edge);\n let { x: startX, y: startY } = edge[0].sourceEndpoint();\n const { x: midX, y: midY } = edge[0].midpoint();\n let { x: endX, y: endY } = edge[0].targetEndpoint();\n\n // Adjust the edge distance if it has the {group} modifier\n const groupEdgeShift = padding + 4;\n // +18 comes from the service label height that extends the padding on the bottom side of each group\n if (sourceGroup) {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === 'L' ? -groupEdgeShift : groupEdgeShift;\n } else {\n startY += sourceDir === 'T' ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n\n if (targetGroup) {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === 'L' ? -groupEdgeShift : groupEdgeShift;\n } else {\n endY += targetDir === 'T' ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n\n // Adjust the edge distance if it doesn't have the {group} modifier and the endpoint is a junction node\n if (!sourceGroup && db.getNode(source)?.type === 'junction') {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === 'L' ? halfIconSize : -halfIconSize;\n } else {\n startY += sourceDir === 'T' ? halfIconSize : -halfIconSize;\n }\n }\n if (!targetGroup && db.getNode(target)?.type === 'junction') {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === 'L' ? halfIconSize : -halfIconSize;\n } else {\n endY += targetDir === 'T' ? halfIconSize : -halfIconSize;\n }\n }\n\n if (edge[0]._private.rscratch) {\n // const bounds = edge[0]._private.rscratch;\n\n const g = edgesEl.insert('g');\n\n g.insert('path')\n .attr('d', `M ${startX},${startY} L ${midX},${midY} L${endX},${endY} `)\n .attr('class', 'edge')\n .attr('id', `${diagramId}-${getEdgeId(source, target, { prefix: 'L' })}`);\n\n if (sourceArrow) {\n const xShift = isArchitectureDirectionX(sourceDir)\n ? ArchitectureDirectionArrowShift[sourceDir](startX, arrowSize)\n : startX - halfArrowSize;\n const yShift = isArchitectureDirectionY(sourceDir)\n ? ArchitectureDirectionArrowShift[sourceDir](startY, arrowSize)\n : startY - halfArrowSize;\n\n g.insert('polygon')\n .attr('points', ArchitectureDirectionArrow[sourceDir](arrowSize))\n .attr('transform', `translate(${xShift},${yShift})`)\n .attr('class', 'arrow');\n }\n if (targetArrow) {\n const xShift = isArchitectureDirectionX(targetDir)\n ? ArchitectureDirectionArrowShift[targetDir](endX, arrowSize)\n : endX - halfArrowSize;\n const yShift = isArchitectureDirectionY(targetDir)\n ? ArchitectureDirectionArrowShift[targetDir](endY, arrowSize)\n : endY - halfArrowSize;\n\n g.insert('polygon')\n .attr('points', ArchitectureDirectionArrow[targetDir](arrowSize))\n .attr('transform', `translate(${xShift},${yShift})`)\n .attr('class', 'arrow');\n }\n\n if (label) {\n const axis = !isArchitectureDirectionXY(sourceDir, targetDir)\n ? isArchitectureDirectionX(sourceDir)\n ? 'X'\n : 'Y'\n : 'XY';\n\n let width = 0;\n if (axis === 'X') {\n width = Math.abs(startX - endX);\n } else if (axis === 'Y') {\n // Reduce width by a factor of 1.5 to avoid overlapping service labels\n width = Math.abs(startY - endY) / 1.5;\n } else {\n width = Math.abs(startX - endX) / 2;\n }\n\n const textElem = g.append('g');\n await createText(\n textElem,\n label,\n {\n useHtmlLabels: false,\n width,\n classes: 'architecture-service-label',\n },\n getConfig()\n );\n\n textElem\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle');\n\n if (axis === 'X') {\n textElem.attr('transform', 'translate(' + midX + ', ' + midY + ')');\n } else if (axis === 'Y') {\n textElem.attr('transform', 'translate(' + midX + ', ' + midY + ') rotate(-90)');\n } else if (axis === 'XY') {\n const pair = getArchitectureDirectionPair(sourceDir, targetDir);\n if (pair && isArchitecturePairXY(pair)) {\n const bboxOrig = textElem.node().getBoundingClientRect();\n const [x, y] = getArchitectureDirectionXYFactors(pair);\n\n textElem\n .attr('dominant-baseline', 'auto')\n .attr('transform', `rotate(${-1 * x * y * 45})`);\n\n // Calculate the new width/height with the rotation applied, and transform to the proper position\n const bboxNew = textElem.node().getBoundingClientRect();\n textElem.attr(\n 'transform',\n `\n translate(${midX}, ${midY - bboxOrig.height / 2})\n translate(${(x * bboxNew.width) / 2}, ${(y * bboxNew.height) / 2})\n rotate(${-1 * x * y * 45}, 0, ${bboxOrig.height / 2})\n `\n );\n }\n }\n }\n }\n })\n );\n};\n\nexport const drawGroups = async function (\n groupsEl: D3Element,\n cy: cytoscape.Core,\n db: ArchitectureDB,\n diagramId: string\n) {\n const padding = db.getConfigField('padding');\n const groupIconSize = padding * 0.75;\n\n const fontSize = db.getConfigField('fontSize');\n\n const iconSize = db.getConfigField('iconSize');\n const halfIconSize = iconSize / 2;\n\n await Promise.all(\n cy.nodes().map(async (node) => {\n const data = nodeData(node);\n if (data.type === 'group') {\n const { h, w, x1, y1 } = node.boundingBox();\n\n const groupsNode = groupsEl.append('rect');\n groupsNode\n .attr('id', `${diagramId}-group-${data.id}`)\n .attr('x', x1 + halfIconSize)\n .attr('y', y1 + halfIconSize)\n .attr('width', w)\n .attr('height', h)\n .attr('class', 'node-bkg');\n\n const groupLabelContainer = groupsEl.append('g');\n let shiftedX1 = x1;\n let shiftedY1 = y1;\n if (data.icon) {\n const bkgElem = groupLabelContainer.append('g');\n bkgElem.html(\n `${await getIconSVG(data.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })}`\n );\n bkgElem.attr(\n 'transform',\n 'translate(' +\n (shiftedX1 + halfIconSize + 1) +\n ', ' +\n (shiftedY1 + halfIconSize + 1) +\n ')'\n );\n shiftedX1 += groupIconSize;\n // TODO: test with more values\n // - 1 - 2 comes from the Y axis transform of the icon and label\n shiftedY1 += fontSize / 2 - 1 - 2;\n }\n if (data.label) {\n const textElem = groupLabelContainer.append('g');\n await createText(\n textElem,\n data.label,\n {\n useHtmlLabels: false,\n width: w,\n classes: 'architecture-service-label',\n },\n getConfig()\n );\n textElem\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'start')\n .attr('text-anchor', 'start');\n\n textElem.attr(\n 'transform',\n 'translate(' +\n (shiftedX1 + halfIconSize + 4) +\n ', ' +\n (shiftedY1 + halfIconSize + 2) +\n ')'\n );\n }\n db.setElementForId(data.id, groupsNode);\n }\n })\n );\n};\n\nexport const drawServices = async function (\n db: ArchitectureDB,\n elem: D3Element,\n services: ArchitectureService[],\n diagramId: string\n): Promise {\n const config = getConfig();\n for (const service of services) {\n const serviceElem = elem.append('g');\n const iconSize = db.getConfigField('iconSize');\n\n if (service.title) {\n const textElem = serviceElem.append('g');\n await createText(\n textElem,\n service.title,\n {\n useHtmlLabels: false,\n width: iconSize * 1.5,\n classes: 'architecture-service-label',\n },\n config\n );\n\n textElem\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle');\n\n textElem.attr('transform', 'translate(' + iconSize / 2 + ', ' + iconSize + ')');\n }\n\n const bkgElem = serviceElem.append('g');\n if (service.icon) {\n // TODO: should a warning be given to end-users saying which icon names are available?\n // if (!isIconNameInUse(service.icon)) {\n // throw new Error(`Invalid SVG Icon name: \"${service.icon}\"`);\n // }\n bkgElem.html(\n `${await getIconSVG(service.icon, { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}`\n );\n } else if (service.iconText) {\n bkgElem.html(\n `${await getIconSVG('blank', { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}`\n );\n const textElemContainer = bkgElem.append('g');\n const fo = textElemContainer\n .append('foreignObject')\n .attr('width', iconSize)\n .attr('height', iconSize);\n const divElem = fo\n .append('div')\n .attr('class', 'node-icon-text')\n .attr('style', `height: ${iconSize}px;`)\n .append('div')\n .html(sanitizeText(service.iconText, config));\n const fontSize =\n parseInt(\n window\n .getComputedStyle(divElem.node(), null)\n .getPropertyValue('font-size')\n .replace(/\\D/g, '')\n ) ?? 16;\n divElem.attr('style', `-webkit-line-clamp: ${Math.floor((iconSize - 2) / fontSize)};`);\n } else {\n bkgElem\n .append('path')\n .attr('class', 'node-bkg')\n .attr('id', `${diagramId}-node-${service.id}`)\n .attr(\n 'd',\n `M0,${iconSize} V5 Q0,0 5,0 H${iconSize - 5} Q${iconSize},0 ${iconSize},5 V${iconSize} Z`\n );\n }\n\n serviceElem\n .attr('id', `${diagramId}-service-${service.id}`)\n .attr('class', 'architecture-service');\n\n const { width, height } = serviceElem.node().getBBox();\n service.width = width;\n service.height = height;\n db.setElementForId(service.id, serviceElem);\n }\n return 0;\n};\n\nexport const drawJunctions = function (\n db: ArchitectureDB,\n elem: D3Element,\n junctions: ArchitectureJunction[],\n diagramId: string\n) {\n junctions.forEach((junction) => {\n const junctionElem = elem.append('g');\n const iconSize = db.getConfigField('iconSize');\n\n const bkgElem = junctionElem.append('g');\n bkgElem\n .append('rect')\n .attr('id', `${diagramId}-node-${junction.id}`)\n .attr('fill-opacity', '0')\n .attr('width', iconSize)\n .attr('height', iconSize);\n\n junctionElem.attr('class', 'architecture-junction');\n\n const { width, height } = junctionElem._groups[0][0].getBBox();\n junctionElem.width = width;\n junctionElem.height = height;\n db.setElementForId(junction.id, junctionElem);\n });\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { parser } from './architectureParser.js';\nimport { ArchitectureDB } from './architectureDb.js';\nimport styles from './architectureStyles.js';\nimport { renderer } from './architectureRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new ArchitectureDB();\n },\n renderer,\n styles,\n};\n"], + "mappings": "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", + "names": ["require_layout_base", "__commonJSMin", "exports", "module", "__name", "root", "factory", "modules", "installedModules", "__webpack_require__", "moduleId", "value", "name", "getter", "object", "property", "LayoutConstants", "LGraphObject", "IGeometry", "IMath", "LEdge", "source", "target", "vEdge", "prop", "node", "graph", "otherEnd", "clipPointCoordinates", "vGraphObject", "Integer", "RectangleD", "RandomSeed", "PointD", "LNode", "gm", "loc", "size", "vNode", "width", "height", "upperLeft", "dimension", "cx", "cy", "x", "y", "dx", "dy", "to", "edgeList", "edge", "self", "other", "neighbors", "withNeighborsList", "childNode", "children", "nodes", "i", "noOfChildren", "randomCenterX", "randomCenterY", "minX", "maxX", "minY", "maxY", "childGraph", "trans", "left", "top", "leftTop", "vLeftTop", "FDLayoutConstants", "pt", "dim", "LGraphManager", "Point", "LinkedList", "LGraph", "parent", "obj2", "vGraph", "obj1", "sourceNode", "targetNode", "newNode", "newEdge", "obj", "edgesToBeRemoved", "s", "index", "sourceIndex", "targetIndex", "nodeTop", "nodeLeft", "margin", "lNode", "recursive", "right", "bottom", "nodeRight", "nodeBottom", "boundingRect", "queue", "visited", "currentNode", "neighborEdges", "currentNeighbor", "childrenOfNode", "neighborEdge", "childrenOfNeighbor", "noOfVisitedInThisGraph", "visitedNode", "layout", "ngraph", "nnode", "newGraph", "parentNode", "sourceGraph", "targetGraph", "lObj", "nodesToBeRemoved", "nodeList", "graphs", "firstNode", "secondNode", "ownerGraph", "sourceAncestorGraph", "targetAncestorGraph", "edges", "firstOwnerGraph", "secondOwnerGraph", "depth", "edgesToRemove", "rectA", "rectB", "overlapAmount", "separationBuffer", "directions", "slope", "moveByY", "moveByX", "result", "p1x", "p1y", "p2x", "p2y", "topLeftAx", "topLeftAy", "topRightAx", "bottomLeftAx", "bottomLeftAy", "bottomRightAx", "halfWidthA", "halfHeightA", "topLeftBx", "topLeftBy", "topRightBx", "bottomLeftBx", "bottomLeftBy", "bottomRightBx", "halfWidthB", "halfHeightB", "clipPointAFound", "clipPointBFound", "slopeA", "slopeB", "slopePrime", "cardinalDirectionA", "cardinalDirectionB", "tempPointAx", "tempPointAy", "tempPointBx", "tempPointBy", "line", "s1", "s2", "f1", "f2", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "a1", "a2", "b1", "b2", "c1", "c2", "denom", "Cx", "Cy", "Nx", "Ny", "C_angle", "p1", "p2", "p3", "p4", "a", "b", "c", "d", "p", "q", "r", "det", "lambda", "gamma", "Ex", "Ey", "Lx", "Ly", "disc", "t1", "t2", "intersections", "_createClass", "defineProperties", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "nodeFrom", "add", "prev", "next", "list", "_remove", "vals", "_this", "v", "val", "otherNode", "current", "_typeof", "UniqueIDGeneretor", "id", "arg", "type", "_toConsumableArray", "arr", "arr2", "Transform", "Emitter", "Layout", "isRemoteUse", "isLayoutSuccessfull", "allEdges", "newLeftTop", "flatForest", "isForest", "allNodes", "isFlat", "toBeVisited", "parents", "unProcessedNodes", "temp", "dummyNodes", "dummyNode", "dummyEdge", "k", "lEdge", "path", "ebp", "sliderValue", "defaultValue", "minDiv", "maxMul", "minValue", "maxValue", "removedNodes", "remainingDegrees", "foundCenter", "centerNode", "degree", "tempList", "tempList2", "neighbours", "neighbour", "otherDegree", "newDegree", "wox", "woy", "wex", "wey", "dox", "doy", "dex", "dey", "xDevice", "worldExtX", "yDevice", "worldExtY", "xWorld", "deviceExtX", "yWorld", "deviceExtY", "inPoint", "outPoint", "FDLayout", "originalIdealLength", "lcaDepth", "sizeOfSourceInLca", "sizeOfTargetInLca", "lEdges", "gridUpdateAllowed", "forceToNodeSurroundingUpdate", "j", "nodeA", "nodeB", "lNodes", "processedNodeSet", "idealLength", "length", "springForce", "springForceX", "springForceY", "clipPoints", "distanceX", "distanceY", "distanceSquared", "distance", "repulsionForce", "repulsionForceX", "repulsionForceY", "childrenConstant", "ownerCenterX", "ownerCenterY", "absDistanceX", "absDistanceY", "estimatedSize", "converged", "oscilating", "sizeX", "sizeY", "grid", "startX", "finishX", "startY", "finishY", "surrounding", "FDLayoutEdge", "FDLayoutNode", "_startX", "_finishX", "_startY", "_finishY", "DimensionD", "HashMap", "key", "theId", "HashSet", "keys", "Matrix", "array1", "array2", "array", "constant", "product", "magnitude", "sum", "_i", "C", "INV", "temp1", "temp2", "_i2", "_sum", "_j", "_i3", "_sum2", "_j2", "Quicksort", "A", "compareFunction", "SVD", "nu", "dims", "allocate", "e", "work", "wantu", "wantv", "nct", "nrt", "lhs", "rhs", "t", "_i4", "_i5", "_i6", "_i7", "_i8", "_t", "_i9", "_i10", "_j3", "_i11", "_k", "_j4", "_t2", "_i12", "_i13", "_i14", "_i15", "_i16", "_k2", "_j5", "_t3", "_i17", "_i18", "_i19", "pp", "iter", "eps", "tiny", "_k3", "kase", "ks", "_t4", "f", "_j6", "_t5", "cs", "sn", "_i20", "_f", "_j7", "_t6", "_cs", "_sn", "_i21", "scale", "sp", "spm1", "epm1", "sk", "ek", "shift", "_f2", "g", "_j8", "_t7", "_cs2", "_sn2", "_i22", "_i23", "_i24", "_t8", "_i25", "_i26", "NeedlemanWunsch", "sequence1", "sequence2", "match_score", "mismatch_penalty", "gap_penalty", "diag", "up", "maxOf", "indices", "inProcessAlignments", "indexes", "layoutBase", "event", "callback", "l", "data", "require_cose_base", "__commonJSMin", "exports", "module", "__name", "root", "factory", "__WEBPACK_EXTERNAL_MODULE__551__", "__webpack_modules__", "__unused_webpack_exports", "__webpack_require__", "coseBase", "FDLayoutConstants", "CoSEConstants", "prop", "FDLayoutEdge", "CoSEEdge", "source", "target", "vEdge", "LGraph", "CoSEGraph", "parent", "graphMgr", "vGraph", "LGraphManager", "CoSEGraphManager", "layout", "FDLayout", "CoSENode", "ConstraintHandler", "LayoutConstants", "Point", "PointD", "DimensionD", "Layout", "Integer", "IGeometry", "Transform", "LinkedList", "CoSELayout", "gm", "vNode", "createBendsAsNeeded", "allNodes", "intersection", "x", "forest", "gridUpdateAllowed", "forceToNodeSurroundingUpdate", "pData", "i", "rect", "id", "layoutEnded", "lNodes", "node", "self", "calculateCompoundWeight", "compoundNode", "nodes", "fixedNodeWeight", "nodeData", "nodeToDummyForVerticalAlignment", "nodeToDummyForHorizontalAlignment", "nodeId", "verticalAlignment", "horizontalAlignment", "array", "j", "constraint", "nodeIdLeft", "nodeIdRight", "nodeIdTop", "nodeIdBottom", "subGraphOnHorizontal", "subGraphOnVertical", "left", "right", "top", "bottom", "constructComponents", "graph", "fixedNodes", "components", "isFixed", "queue", "visited", "count", "value", "key", "currentNode", "neighbors", "neighbor", "resultOnHorizontal", "resultOnVertical", "fixedNode", "allVerticalAlignments", "totalDisplacementX", "averageDisplacementX", "allHorizontalAlignments", "totalDisplacementY", "averageDisplacementY", "displacement", "diff", "component", "sum", "actualNodes", "averageDisplacement", "nodeList", "graphs", "size", "edges", "edge", "edgeList", "k", "multiEdge", "currentStartingPoint", "numberOfColumns", "height", "currentY", "currentX", "point", "tree", "centerNode", "startingPoint", "radialSep", "bounds", "transform", "bottomRight", "parentOfNode", "startAngle", "endAngle", "distance", "radialSeparation", "halfInterval", "nodeAngle", "teta", "cos_teta", "x_", "y_", "neighborEdges", "childCount", "branchCount", "incEdgesCount", "startIndex", "temp", "index", "stepAngle", "currentNeighbor", "childStartAngle", "childEndAngle", "maxDiagonal", "diagonal", "tempMemberGroups", "zeroDegree", "p_id", "dummyCompoundId", "dummyCompound", "dummyParentGraph", "parentGraph", "childGraphMap", "idToNode", "tiledZeroDegreePack", "width", "lCompoundNode", "horizontalMargin", "verticalMargin", "labelMarginLeft", "labelMarginTop", "tiledPack", "childGraph", "children", "theChild", "degree", "child", "organization", "y", "compoundHorizontalMargin", "compoundVerticalMargin", "compoundLabelMarginLeft", "compoundLabelMarginTop", "row", "maxHeight", "lnode", "minWidth", "horizontalOrg", "verticalOrg", "horizontalRatio", "verticalRatio", "bestOrg", "ratio", "members", "favorHorizontalDim", "verticalPadding", "horizontalPadding", "membersSize", "totalWidth", "totalHeight", "maxWidth", "averageWidth", "averageHeight", "delta", "horizontalCountDouble", "horizontalCount", "idealWidth", "tilingCompareBy", "getNodeArea", "n", "areaCompareFcn", "n1", "n2", "cmpBy", "sumCenterX", "sumCenterY", "lNode", "rowIndex", "minCompoundSize", "secondDimension", "w", "h", "extraHeight", "r", "min", "max", "extraWidth", "lastRowIndex", "lastRowWidth", "sri", "hDiff", "add_to_row_ratio", "add_new_row_ratio", "longest", "last", "prevTotal", "finalTotal", "prunedNodesAll", "containsLeaf", "prunedNodesInStepTemp", "otherEnd", "relativePosition", "prunedNodesInStep", "lengthOfPrunedNodesInStep", "gridForPrunedNode", "nodeToConnect", "prunedNode", "startGridX", "finishGridX", "startGridY", "finishGridY", "upNodeCount", "downNodeCount", "rightNodeCount", "leftNodeCount", "controlRegions", "minCount", "minIndex", "random", "FDLayoutNode", "IMath", "loc", "dX", "dY", "pred1", "next", "processed", "_toConsumableArray", "arr", "arr2", "Matrix", "SVD", "constraints", "idToNodeMap", "nodeIndexes", "xCoords", "yCoords", "calculatePositionDiff", "pos1", "pos2", "calculateAvgPosition", "nodeIdSet", "xPosSum", "yPosSum", "findAppropriatePositionForRelativePlacement", "direction", "dummyPositions", "componentSources", "setUnion", "setA", "setB", "union", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "elem", "err", "inDegrees", "adjacent", "positionMap", "pastMap", "fixedIds", "position", "fixedId", "_position", "_loop", "fixedPosition", "sinkNodes", "_components", "isFixedComponent", "_iteratorNormalCompletion2", "_didIteratorError2", "_iteratorError2", "_iterator2", "_step2", "isExist", "existAt", "ele", "minBefore", "minAfter", "maxBefore", "maxAfter", "_iteratorNormalCompletion3", "_didIteratorError3", "_iteratorError3", "_iterator3", "_step3", "posBefore", "posAfter", "_iteratorNormalCompletion4", "_didIteratorError4", "_iteratorError4", "_iterator4", "_step4", "_nodeId", "applyReflectionForRelativePlacement", "relativePlacementConstraints", "reflectOnY", "notReflectOnY", "reflectOnX", "notReflectOnX", "_i", "_i2", "_i3", "findComponents", "_currentNode", "dagToUndirected", "dag", "undirected", "dagToReversed", "reversed", "targetMatrix", "sourceMatrix", "standardTransformation", "reflectionType", "dagUndirected", "verticalAlign", "_loop2", "_i4", "alignmentSet", "xPos", "horizontalAlign", "_loop3", "_i5", "yPos", "largestComponentSize", "largestComponentIndex", "_i6", "constraintsInlargestComponent", "positionMapHorizontal", "positionMapVertical", "transformationMatrix", "targetMatrixTranspose", "sourceMatrixTranspose", "_i7", "tempMatrix", "SVDResult", "_i8", "temp1", "temp2", "temp3", "translationAmount", "posInTheory", "posDesired", "posDiff", "xAlign", "_loop4", "_i9", "yAlign", "_loop5", "_i10", "dummyToNodeForVerticalAlignment", "dummyToNodeForHorizontalAlignment", "dummyPositionsForVerticalAlignment", "dummyPositionsForHorizontalAlignment", "fixedNodesOnHorizontal", "fixedNodesOnVertical", "_loop6", "_i11", "_loop7", "_i12", "dagOnHorizontal", "dagOnVertical", "_loop8", "sourceId", "targetNode", "_iteratorNormalCompletion5", "_didIteratorError5", "_iteratorError5", "_iterator5", "_step5", "undirectedOnHorizontal", "undirectedOnVertical", "componentsOnHorizontal", "componentsOnVertical", "reversedDagOnHorizontal", "reversedDagOnVertical", "componentSourcesOnHorizontal", "componentSourcesOnVertical", "_loop9", "_iteratorNormalCompletion6", "_didIteratorError6", "_iteratorError6", "_iterator6", "_step6", "_loop10", "_iteratorNormalCompletion7", "_didIteratorError7", "_iteratorError7", "_iterator7", "_step7", "_i13", "_node", "__webpack_module_cache__", "moduleId", "cachedModule", "__webpack_exports__", "require_cytoscape_fcose", "__commonJSMin", "exports", "module", "__name", "root", "factory", "__WEBPACK_EXTERNAL_MODULE__140__", "__webpack_modules__", "tgt", "_len", "srcs", "_key", "src", "k", "__unused_webpack_exports", "__webpack_require__", "_slicedToArray", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "LinkedList", "auxiliary", "nodes", "nodesMap", "roots", "ele", "parent", "cy", "eles", "topMostNodes", "dummyNodes", "queue", "visited", "visitedTopMostNodes", "currentNeighbor", "minDegreeNode", "minDegree", "isConnected", "count", "nodesConnectedToDummy", "components", "_loop", "cmpt", "currentNode", "childrenOfCurrentNode", "node", "_loop2", "neighborNodes", "neighborNode", "childrenOfNeighbor", "e", "temp", "originalCenter", "componentResult", "options", "minXCoord", "maxXCoord", "minYCoord", "maxYCoord", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "_ref", "_ref2", "key", "value", "cyNode", "nodeBB", "leftX", "rightX", "topY", "bottomY", "diffOnX", "diffOnY", "x", "y", "item", "_diffOnX", "_diffOnY", "parentNode", "xCoords", "yCoords", "nodeIndexes", "left", "right", "top", "bottom", "nodeLeft", "nodeRight", "nodeTop", "nodeBottom", "s", "boundingBox", "parentsWithoutChildren", "check", "child", "aux", "CoSELayout", "CoSENode", "PointD", "DimensionD", "LayoutConstants", "FDLayoutConstants", "CoSEConstants", "coseLayout", "spectralResult", "edges", "idToLNode", "isFn", "fn", "optFn", "opt", "processChildrenList", "children", "layout", "size", "theChild", "children_of_children", "theNode", "dimensions", "parentInfo", "theNewGraph", "processEdges", "gm", "idealLengthTotal", "edgeCount", "edge", "sourceNode", "targetNode", "e1", "processConstraints", "_createClass", "defineProperties", "target", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "assign", "_require", "spectralLayout", "_require2", "defaults", "Layout", "coseResult", "componentCenters", "constraintExist", "layUtil", "packingEnabled", "component", "toBeTiledNodes", "_xCoords", "_yCoords", "tempSpectralResult", "indexesToBeDeleted", "index", "_boundingBox", "componentsEvaluated", "subgraphs", "hiddenEles", "subgraph", "nodeIndex", "source", "sourceNodeIndex", "targetNodeIndex", "sourceCenter", "targetCenter", "_parentInfo", "shiftResult", "result", "newXCoords", "newYCoords", "_count", "nodeRectangle", "getPositions", "pos", "theId", "_pos", "_hiddenEles", "Matrix", "SVD", "parentNodes", "parentChildMap", "allNodesNeighborhood", "samplesColumn", "minDistancesColumn", "C", "PHI", "INV", "firstSample", "nodeSize", "infinity", "small", "piTol", "samplingType", "nodeSeparation", "sampleSize", "randomSampleCR", "sample", "flag", "BFS", "pivot", "samplingMethod", "path", "front", "back", "current", "distance", "max_dist", "max_ind", "neighbors", "_i2", "_i3", "allBFS", "_i4", "_i5", "_i6", "j", "_i7", "_i8", "_j", "SVDResult", "a_q", "a_u", "a_v", "max_s", "a_Sig", "powerIteration", "theta1", "theta2", "Y1", "Y2", "V1", "V2", "previous", "_i9", "_i10", "_i11", "_i12", "_i13", "min", "ele2", "eleIndex", "disconnectedId", "id", "_iteratorNormalCompletion2", "_didIteratorError2", "_iteratorError2", "_iterator2", "_step2", "_i14", "_i15", "iterator", "firstNode", "firstNodePos", "firstNodeWidth", "secondNode", "secondNodeWidth", "impl", "register", "cytoscape", "__webpack_module_cache__", "moduleId", "cachedModule", "__webpack_exports__", "ArchitectureDirectionName", "ArchitectureDirectionArrow", "__name", "scale", "ArchitectureDirectionArrowShift", "orig", "arrowSize", "_arrowSize", "getOppositeArchitectureDirection", "x", "isArchitectureDirectionX", "isArchitectureDirection", "temp", "isArchitectureDirectionY", "isArchitectureDirectionXY", "a", "b", "aX_bY", "aY_bX", "isArchitecturePairXY", "pair", "lhs", "rhs", "isValidArchitectureDirectionPair", "getArchitectureDirectionPair", "sourceDir", "targetDir", "shiftPositionByArchitectureDirectionPair", "y", "getArchitectureDirectionXYFactors", "getArchitectureDirectionAlignment", "isArchitectureService", "isArchitectureJunction", "edgeData", "edge", "nodeData", "node", "DEFAULT_ARCHITECTURE_CONFIG", "defaultConfig_default", "ArchitectureDB", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "__name", "id", "clear", "icon", "parent", "title", "iconText", "isArchitectureService", "isArchitectureJunction", "lhsId", "rhsId", "lhsDir", "rhsDir", "lhsInto", "rhsInto", "lhsGroup", "rhsGroup", "isArchitectureDirection", "lhsGroupId", "rhsGroupId", "edge", "groupAlignments", "adjList", "prevOuter", "service", "prevInner", "alignment", "getArchitectureDirectionAlignment", "pair", "getArchitectureDirectionPair", "firstId", "visited", "notVisited", "prev", "BFS", "startingId", "spatialMap", "queue", "adj", "posX", "posY", "dir", "shiftPositionByArchitectureDirectionPair", "spatialMaps", "element", "cleanAndMerge", "getConfig", "field", "populateDb", "__name", "ast", "db", "populateCommonDb", "group", "service", "edge", "parser", "input", "parse", "log", "ArchitectureDB", "getStyles", "__name", "options", "architectureStyles_default", "import_cytoscape_fcose", "wrapIcon", "__name", "icon", "architectureIcons", "unknownIcon", "drawEdges", "__name", "edgesEl", "cy", "db", "diagramId", "padding", "iconSize", "halfIconSize", "arrowSize", "halfArrowSize", "edge", "source", "sourceDir", "sourceArrow", "sourceGroup", "target", "targetDir", "targetArrow", "targetGroup", "label", "edgeData", "startX", "startY", "midX", "midY", "endX", "endY", "groupEdgeShift", "isArchitectureDirectionX", "g", "getEdgeId", "xShift", "ArchitectureDirectionArrowShift", "yShift", "isArchitectureDirectionY", "ArchitectureDirectionArrow", "axis", "isArchitectureDirectionXY", "width", "textElem", "createText", "getConfig", "pair", "getArchitectureDirectionPair", "isArchitecturePairXY", "bboxOrig", "x", "y", "getArchitectureDirectionXYFactors", "bboxNew", "drawGroups", "groupsEl", "groupIconSize", "fontSize", "node", "data", "nodeData", "h", "w", "x1", "y1", "groupsNode", "groupLabelContainer", "shiftedX1", "shiftedY1", "bkgElem", "getIconSVG", "architectureIcons", "drawServices", "elem", "services", "config", "service", "serviceElem", "divElem", "sanitizeText", "height", "drawJunctions", "junctions", "junction", "junctionElem", "registerIconPacks", "architectureIcons", "cytoscape", "fcose", "addServices", "services", "cy", "db", "service", "__name", "addJunctions", "junctions", "junction", "positionNodes", "node", "data", "nodeData", "addGroups", "groups", "group", "addEdges", "edges", "parsedEdge", "lhsId", "rhsId", "lhsInto", "lhsGroup", "rhsInto", "lhsDir", "rhsDir", "rhsGroup", "title", "edgeType", "isArchitectureDirectionXY", "edge", "getAlignments", "spatialMaps", "groupAlignments", "flattenAlignments", "alignmentObj", "alignmentDir", "prev", "dir", "alignments", "cnt", "arr", "i", "j", "aGroupId", "aNodeIds", "bGroupId", "bNodeIds", "keyA", "keyB", "spatialMap", "horizontalAlignments", "verticalAlignments", "id", "x", "y", "nodeGroup", "horizontal", "vertical", "prevHoriz", "prevVert", "horiz", "vert", "getRelativeConstraints", "relativeConstraints", "posToStr", "pos", "strToPos", "p", "invSpatialMap", "queue", "visited", "directions", "curr", "currId", "currPos", "shift", "newPos", "newId", "ArchitectureDirectionName", "getOppositeArchitectureDirection", "layoutArchitecture", "resolve", "renderEl", "select_default", "alignmentConstraint", "relativePlacementConstraint", "iconSize", "sameGroupIdealLength", "crossGroupIdealLength", "sameGroupElasticity", "layout", "nodeA", "nodeB", "parentA", "parentB", "getSegmentWeights", "source", "target", "pointX", "pointY", "W", "D", "sX", "sY", "tX", "tY", "distAB", "delta1", "delta2", "sEP", "tEP", "sourceDir", "edgeData", "isArchitectureDirectionY", "weights", "distances", "e", "log", "draw", "text", "_version", "diagObj", "ds", "svg", "selectSvgElement", "edgesElem", "servicesElem", "groupElem", "drawServices", "drawJunctions", "drawEdges", "drawGroups", "setupGraphViewbox", "renderer", "diagram", "parser", "ArchitectureDB", "renderer", "architectureStyles_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-7IZFK4PR.mjs b/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-7IZFK4PR.mjs new file mode 100644 index 0000000..bdf7a8e --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-7IZFK4PR.mjs @@ -0,0 +1,132 @@ +import{D as Vt}from"./chunk-W44A43WB.mjs";import{a as Ut}from"./chunk-AZZRMDJM.mjs";import{a as rt,d as jt}from"./chunk-5VCL7Z4A.mjs";import{a as Yt,b as Kt}from"./chunk-UY5QBCOK.mjs";import{f as et}from"./chunk-INKRHTLW.mjs";import{a as Pt,f as Wt,p as tt,r as mt}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{A as yt,B as Rt,G as zt,O as At,S as Mt,_ as B,b as It,c as Ot,t as J,x as z}from"./chunk-67TQ5CYL.mjs";import{H as Ft,L as Ht,b as w,h as _}from"./chunk-7W6UQGC5.mjs";import{a as h}from"./chunk-AQ6EADP3.mjs";var kt=(function(){var e=h(function(C,k,u,b){for(u=u||{},b=C.length;b--;u[C[b]]=k);return u},"o"),t=[1,15],a=[1,7],n=[1,13],s=[1,14],o=[1,19],r=[1,16],i=[1,17],c=[1,18],d=[8,30],l=[8,10,21,28,29,30,31,39,43,46],p=[1,23],y=[1,24],x=[8,10,15,16,21,28,29,30,31,39,43,46],m=[8,10,15,16,21,27,28,29,30,31,39,43,46],E=[1,49],S={trace:h(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:h(function(k,u,b,L,D,g,W){var f=g.length-1;switch(D){case 4:L.getLogger().debug("Rule: separator (NL) ");break;case 5:L.getLogger().debug("Rule: separator (Space) ");break;case 6:L.getLogger().debug("Rule: separator (EOF) ");break;case 7:L.getLogger().debug("Rule: hierarchy: ",g[f-1]),L.setHierarchy(g[f-1]);break;case 8:L.getLogger().debug("Stop NL ");break;case 9:L.getLogger().debug("Stop EOF ");break;case 10:L.getLogger().debug("Stop NL2 ");break;case 11:L.getLogger().debug("Stop EOF2 ");break;case 12:L.getLogger().debug("Rule: statement: ",g[f]),typeof g[f].length=="number"?this.$=g[f]:this.$=[g[f]];break;case 13:L.getLogger().debug("Rule: statement #2: ",g[f-1]),this.$=[g[f-1]].concat(g[f]);break;case 14:L.getLogger().debug("Rule: link: ",g[f],k),this.$={edgeTypeStr:g[f],label:""};break;case 15:L.getLogger().debug("Rule: LABEL link: ",g[f-3],g[f-1],g[f]),this.$={edgeTypeStr:g[f],label:g[f-1]};break;case 18:let R=parseInt(g[f]),q=L.generateId();this.$={id:q,type:"space",label:"",width:R,children:[]};break;case 23:L.getLogger().debug("Rule: (nodeStatement link node) ",g[f-2],g[f-1],g[f]," typestr: ",g[f-1].edgeTypeStr);let X=L.edgeStrToEdgeData(g[f-1].edgeTypeStr),gt=L.edgeStrToEdgeStartData(g[f-1].edgeTypeStr),st=L.edgeStrToThickness(g[f-1].edgeTypeStr),dt=L.edgeStrToPattern(g[f-1].edgeTypeStr);this.$=[{id:g[f-2].id,label:g[f-2].label,type:g[f-2].type,directions:g[f-2].directions},{id:g[f-2].id+"-"+g[f].id,start:g[f-2].id,end:g[f].id,label:g[f-1].label,type:"edge",thickness:st,pattern:dt,directions:g[f].directions,arrowTypeEnd:X,arrowTypeStart:gt},{id:g[f].id,label:g[f].label,type:L.typeStr2Type(g[f].typeStr),directions:g[f].directions}];break;case 24:L.getLogger().debug("Rule: nodeStatement (abc88 node size) ",g[f-1],g[f]),this.$={id:g[f-1].id,label:g[f-1].label,type:L.typeStr2Type(g[f-1].typeStr),directions:g[f-1].directions,widthInColumns:parseInt(g[f],10)};break;case 25:L.getLogger().debug("Rule: nodeStatement (node) ",g[f]),this.$={id:g[f].id,label:g[f].label,type:L.typeStr2Type(g[f].typeStr),directions:g[f].directions,widthInColumns:1};break;case 26:L.getLogger().debug("APA123",this?this:"na"),L.getLogger().debug("COLUMNS: ",g[f]),this.$={type:"column-setting",columns:g[f]==="auto"?-1:parseInt(g[f])};break;case 27:L.getLogger().debug("Rule: id-block statement : ",g[f-2],g[f-1]);let M=L.generateId();this.$={...g[f-2],type:"composite",children:g[f-1]};break;case 28:L.getLogger().debug("Rule: blockStatement : ",g[f-2],g[f-1],g[f]);let G=L.generateId();this.$={id:G,type:"composite",label:"",children:g[f-1]};break;case 29:L.getLogger().debug("Rule: node (NODE_ID separator): ",g[f]),this.$={id:g[f]};break;case 30:L.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",g[f-1],g[f]),this.$={id:g[f-1],label:g[f].label,typeStr:g[f].typeStr,directions:g[f].directions};break;case 31:L.getLogger().debug("Rule: dirList: ",g[f]),this.$=[g[f]];break;case 32:L.getLogger().debug("Rule: dirList: ",g[f-1],g[f]),this.$=[g[f-1]].concat(g[f]);break;case 33:L.getLogger().debug("Rule: nodeShapeNLabel: ",g[f-2],g[f-1],g[f]),this.$={typeStr:g[f-2]+g[f],label:g[f-1]};break;case 34:L.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",g[f-3],g[f-2]," #3:",g[f-1],g[f]),this.$={typeStr:g[f-3]+g[f],label:g[f-2],directions:g[f-1]};break;case 35:case 36:this.$={type:"classDef",id:g[f-1].trim(),css:g[f].trim()};break;case 37:this.$={type:"applyClass",id:g[f-1].trim(),styleClass:g[f].trim()};break;case 38:this.$={type:"applyStyles",id:g[f-1].trim(),stylesStr:g[f].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:n,29:s,31:o,39:r,43:i,46:c},{8:[1,20]},e(d,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:a,28:n,29:s,31:o,39:r,43:i,46:c}),e(l,[2,16],{14:22,15:p,16:y}),e(l,[2,17]),e(l,[2,18]),e(l,[2,19]),e(l,[2,20]),e(l,[2,21]),e(l,[2,22]),e(x,[2,25],{27:[1,25]}),e(l,[2,26]),{19:26,26:12,31:o},{10:t,11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:n,29:s,31:o,39:r,43:i,46:c},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(m,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(d,[2,13]),{26:35,31:o},{31:[2,14]},{17:[1,36]},e(x,[2,24]),{10:t,11:37,13:4,14:22,15:p,16:y,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:n,29:s,31:o,39:r,43:i,46:c},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(m,[2,30]),{18:[1,43]},{18:[1,44]},e(x,[2,23]),{18:[1,45]},{30:[1,46]},e(l,[2,28]),e(l,[2,35]),e(l,[2,36]),e(l,[2,37]),e(l,[2,38]),{36:[1,47]},{33:48,34:E},{15:[1,50]},e(l,[2,27]),e(m,[2,33]),{38:[1,51]},{33:52,34:E,38:[2,31]},{31:[2,15]},e(m,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:h(function(k,u){if(u.recoverable)this.trace(k);else{var b=new Error(k);throw b.hash=u,b}},"parseError"),parse:h(function(k){var u=this,b=[0],L=[],D=[null],g=[],W=this.table,f="",R=0,q=0,X=0,gt=2,st=1,dt=g.slice.call(arguments,1),M=Object.create(this.lexer),G={yy:{}};for(var ut in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ut)&&(G.yy[ut]=this.yy[ut]);M.setInput(k,G.yy),G.yy.lexer=M,G.yy.parser=this,typeof M.yylloc>"u"&&(M.yylloc={});var pt=M.yylloc;g.push(pt);var Ce=M.options&&M.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ea(Y){b.length=b.length-2*Y,D.length=D.length-Y,g.length=g.length-Y}h(ea,"popStack");function Ne(){var Y;return Y=L.pop()||M.lex()||st,typeof Y!="number"&&(Y instanceof Array&&(L=Y,Y=L.pop()),Y=u.symbols_[Y]||Y),Y}h(Ne,"lex");for(var H,ft,Q,j,ra,xt,$={},it,Z,Nt,nt;;){if(Q=b[b.length-1],this.defaultActions[Q]?j=this.defaultActions[Q]:((H===null||typeof H>"u")&&(H=Ne()),j=W[Q]&&W[Q][H]),typeof j>"u"||!j.length||!j[0]){var bt="";nt=[];for(it in W[Q])this.terminals_[it]&&it>gt&&nt.push("'"+this.terminals_[it]+"'");M.showPosition?bt="Parse error on line "+(R+1)+`: +`+M.showPosition()+` +Expecting `+nt.join(", ")+", got '"+(this.terminals_[H]||H)+"'":bt="Parse error on line "+(R+1)+": Unexpected "+(H==st?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(bt,{text:M.match,token:this.terminals_[H]||H,line:M.yylineno,loc:pt,expected:nt})}if(j[0]instanceof Array&&j.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Q+", token: "+H);switch(j[0]){case 1:b.push(H),D.push(M.yytext),g.push(M.yylloc),b.push(j[1]),H=null,ft?(H=ft,ft=null):(q=M.yyleng,f=M.yytext,R=M.yylineno,pt=M.yylloc,X>0&&X--);break;case 2:if(Z=this.productions_[j[1]][1],$.$=D[D.length-Z],$._$={first_line:g[g.length-(Z||1)].first_line,last_line:g[g.length-1].last_line,first_column:g[g.length-(Z||1)].first_column,last_column:g[g.length-1].last_column},Ce&&($._$.range=[g[g.length-(Z||1)].range[0],g[g.length-1].range[1]]),xt=this.performAction.apply($,[f,q,R,G.yy,j[1],D,g].concat(dt)),typeof xt<"u")return xt;Z&&(b=b.slice(0,-1*Z*2),D=D.slice(0,-1*Z),g=g.slice(0,-1*Z)),b.push(this.productions_[j[1]][0]),D.push($.$),g.push($._$),Nt=W[b[b.length-2]][b[b.length-1]],b.push(Nt);break;case 3:return!0}}return!0},"parse")},T=(function(){var C={EOF:1,parseError:h(function(u,b){if(this.yy.parser)this.yy.parser.parseError(u,b);else throw new Error(u)},"parseError"),setInput:h(function(k,u){return this.yy=u||this.yy||{},this._input=k,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:h(function(){var k=this._input[0];this.yytext+=k,this.yyleng++,this.offset++,this.match+=k,this.matched+=k;var u=k.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),k},"input"),unput:h(function(k){var u=k.length,b=k.split(/(?:\r\n?|\n)/g);this._input=k+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u),this.offset-=u;var L=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),b.length-1&&(this.yylineno-=b.length-1);var D=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:b?(b.length===L.length?this.yylloc.first_column:0)+L[L.length-b.length].length-b[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[D[0],D[0]+this.yyleng-u]),this.yyleng=this.yytext.length,this},"unput"),more:h(function(){return this._more=!0,this},"more"),reject:h(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:h(function(k){this.unput(this.match.slice(k))},"less"),pastInput:h(function(){var k=this.matched.substr(0,this.matched.length-this.match.length);return(k.length>20?"...":"")+k.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:h(function(){var k=this.match;return k.length<20&&(k+=this._input.substr(0,20-k.length)),(k.substr(0,20)+(k.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:h(function(){var k=this.pastInput(),u=new Array(k.length+1).join("-");return k+this.upcomingInput()+` +`+u+"^"},"showPosition"),test_match:h(function(k,u){var b,L,D;if(this.options.backtrack_lexer&&(D={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(D.yylloc.range=this.yylloc.range.slice(0))),L=k[0].match(/(?:\r\n?|\n).*/g),L&&(this.yylineno+=L.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:L?L[L.length-1].length-L[L.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+k[0].length},this.yytext+=k[0],this.match+=k[0],this.matches=k,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(k[0].length),this.matched+=k[0],b=this.performAction.call(this,this.yy,this,u,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),b)return b;if(this._backtrack){for(var g in D)this[g]=D[g];return!1}return!1},"test_match"),next:h(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var k,u,b,L;this._more||(this.yytext="",this.match="");for(var D=this._currentRules(),g=0;gu[0].length)){if(u=b,L=g,this.options.backtrack_lexer){if(k=this.test_match(b,D[g]),k!==!1)return k;if(this._backtrack){u=!1;continue}else return!1}else if(!this.options.flex)break}return u?(k=this.test_match(u,D[L]),k!==!1?k:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:h(function(){var u=this.next();return u||this.lex()},"lex"),begin:h(function(u){this.conditionStack.push(u)},"begin"),popState:h(function(){var u=this.conditionStack.length-1;return u>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:h(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:h(function(u){return u=this.conditionStack.length-1-Math.abs(u||0),u>=0?this.conditionStack[u]:"INITIAL"},"topState"),pushState:h(function(u){this.begin(u)},"pushState"),stateStackSize:h(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:h(function(u,b,L,D){var g=D;switch(L){case 0:return u.getLogger().debug("Found block-beta"),10;break;case 1:return u.getLogger().debug("Found id-block"),29;break;case 2:return u.getLogger().debug("Found block"),10;break;case 3:u.getLogger().debug(".",b.yytext);break;case 4:u.getLogger().debug("_",b.yytext);break;case 5:return 5;case 6:return b.yytext=-1,28;break;case 7:return b.yytext=b.yytext.replace(/columns\s+/,""),u.getLogger().debug("COLUMNS (LEX)",b.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:u.getLogger().debug("LEX: POPPING STR:",b.yytext),this.popState();break;case 13:return u.getLogger().debug("LEX: STR end:",b.yytext),"STR";break;case 14:return b.yytext=b.yytext.replace(/space\:/,""),u.getLogger().debug("SPACE NUM (LEX)",b.yytext),21;break;case 15:return b.yytext="1",u.getLogger().debug("COLUMNS (LEX)",b.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),u.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),u.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),u.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),u.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),u.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),u.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),u.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),u.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),u.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),u.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),u.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),u.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return u.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return u.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return u.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return u.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return u.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return u.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return u.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),u.getLogger().debug("LEX ARR START"),37;break;case 74:return u.getLogger().debug("Lex: NODE_ID",b.yytext),31;break;case 75:return u.getLogger().debug("Lex: EOF",b.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:u.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:u.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return u.getLogger().debug("LEX: NODE_DESCR:",b.yytext),"NODE_DESCR";break;case 83:u.getLogger().debug("LEX POPPING"),this.popState();break;case 84:u.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return b.yytext=b.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (right): dir:",b.yytext),"DIR";break;case 86:return b.yytext=b.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (left):",b.yytext),"DIR";break;case 87:return b.yytext=b.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (x):",b.yytext),"DIR";break;case 88:return b.yytext=b.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (y):",b.yytext),"DIR";break;case 89:return b.yytext=b.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (up):",b.yytext),"DIR";break;case 90:return b.yytext=b.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (down):",b.yytext),"DIR";break;case 91:return b.yytext="]>",u.getLogger().debug("Lex (ARROW_DIR end):",b.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return u.getLogger().debug("Lex: LINK","#"+b.yytext+"#"),15;break;case 93:return u.getLogger().debug("Lex: LINK",b.yytext),15;break;case 94:return u.getLogger().debug("Lex: LINK",b.yytext),15;break;case 95:return u.getLogger().debug("Lex: LINK",b.yytext),15;break;case 96:return u.getLogger().debug("Lex: START_LINK",b.yytext),this.pushState("LLABEL"),16;break;case 97:return u.getLogger().debug("Lex: START_LINK",b.yytext),this.pushState("LLABEL"),16;break;case 98:return u.getLogger().debug("Lex: START_LINK",b.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return u.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),u.getLogger().debug("Lex: LINK","#"+b.yytext+"#"),15;break;case 102:return this.popState(),u.getLogger().debug("Lex: LINK",b.yytext),15;break;case 103:return this.popState(),u.getLogger().debug("Lex: LINK",b.yytext),15;break;case 104:return u.getLogger().debug("Lex: COLON",b.yytext),b.yytext=b.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:=]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return C})();S.lexer=T;function O(){this.yy={}}return h(O,"Parser"),O.prototype=S,S.Parser=O,new O})();kt.parser=kt;var Xt=kt;var V=new Map,St=[],wt=new Map,Gt="color",Zt="fill",Oe="bgFill",Jt=",",Re=B(),ot=new Map,Lt="",ze=h(e=>zt.sanitizeText(e,Re),"sanitizeText"),Ae=h(function(e,t=""){let a=ot.get(e);a||(a={id:e,styles:[],textStyles:[]},ot.set(e,a)),t?.split(Jt).forEach(n=>{let s=n.replace(/([^;]*);/,"$1").trim();if(RegExp(Gt).exec(n)){let r=s.replace(Zt,Oe).replace(Gt,Zt);a.textStyles.push(r)}a.styles.push(s)})},"addStyleClass"),Me=h(function(e,t=""){let a=V.get(e);t!=null&&(a.styles=t.split(Jt))},"addStyle2Node"),Fe=h(function(e,t){e.split(",").forEach(function(a){let n=V.get(a);if(n===void 0){let s=a.trim();n={id:s,type:"na",children:[]},V.set(s,n)}n.classes||(n.classes=[]),n.classes.push(t)})},"setCssClass"),Qt=h((e,t)=>{let a=e.flat(),n=[],o=a.find(r=>r?.type==="column-setting")?.columns??-1;for(let r of a){if(typeof o=="number"&&o>0&&r.type!=="column-setting"&&typeof r.widthInColumns=="number"&&r.widthInColumns>o&&w.warn(`Block ${r.id} width ${r.widthInColumns} exceeds configured column width ${o}`),r.label&&(r.label=ze(r.label)),r.type==="classDef"){Ae(r.id,r.css);continue}if(r.type==="applyClass"){Fe(r.id,r?.styleClass??"");continue}if(r.type==="applyStyles"){r?.stylesStr&&Me(r.id,r?.stylesStr);continue}if(r.type==="column-setting")t.columns=r.columns??-1;else if(r.type==="edge"){let i=(wt.get(r.id)??0)+1;wt.set(r.id,i),r.id=i+"-"+r.id,St.push(r)}else{r.label||(r.type==="composite"?r.label="":r.label=r.id);let i=V.get(r.id);if(i===void 0?V.set(r.id,r):(r.type!=="na"&&(i.type=r.type),r.label!==r.id&&(i.label=r.label)),r.children&&Qt(r.children,r),r.type==="space"){let c=r.width??1;for(let d=0;d{w.debug("Clear called"),Mt(),at={id:"root",type:"composite",children:[],columns:-1},V=new Map([["root",at]]),Et=[],ot=new Map,St=[],wt=new Map,Lt=""},"clear");function Pe(e){switch(w.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return w.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}h(Pe,"typeStr2Type");function We(e){switch(w.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}h(We,"edgeTypeStr2Type");function Ye(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}h(Ye,"edgeStrToEdgeData");function Ke(e){switch(e.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}h(Ke,"edgeStrToEdgeStartData");function je(e){return e.includes("==")?"thick":"normal"}h(je,"edgeStrToThickness");function Ve(e){return e.includes(".-")?"dotted":"solid"}h(Ve,"edgeStrToPattern");var qt=0,Ue=h(()=>(qt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+qt),"generateId"),Xe=h(e=>{at.children=e,Qt(e,at),Et=at.children},"setHierarchy"),Ge=h(e=>{let t=V.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),Ze=h(()=>[...V.values()],"getBlocksFlat"),qe=h(()=>Et||[],"getBlocks"),Je=h(()=>St,"getEdges"),Qe=h(e=>V.get(e),"getBlock"),$e=h(e=>{V.set(e.id,e)},"setBlock"),tr=h(e=>{Lt=e},"setDiagramId"),er=h(()=>Lt,"getDiagramId"),rr=h(()=>w,"getLogger"),ar=h(function(){return ot},"getClasses"),sr={getConfig:h(()=>J().block,"getConfig"),typeStr2Type:Pe,edgeTypeStr2Type:We,edgeStrToEdgeData:Ye,edgeStrToEdgeStartData:Ke,edgeStrToThickness:je,edgeStrToPattern:Ve,getLogger:rr,getBlocksFlat:Ze,getBlocks:qe,getEdges:Je,setHierarchy:Xe,getBlock:Qe,setBlock:$e,getColumns:Ge,getClasses:ar,clear:He,generateId:Ue,setDiagramId:tr,getDiagramId:er},$t=sr;var Dt=h((e,t)=>{let a=Ot,n=a(e,"r"),s=a(e,"g"),o=a(e,"b");return It(n,s,o,t)},"fade"),ir=h(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + + + .label text,span,p { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + /* + * This is for backward compatibility with existing code that didn't + * add a \`

\` around edge labels. + * + * TODO: We should probably remove this in a future release. + */ + p { + margin: 0; + padding: 0; + display: inline; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${e.edgeLabelBackground}; + } + + .node .cluster { + // fill: ${Dt(e.mainBkg,.5)}; + fill: ${Dt(e.clusterBkg,.5)}; + stroke: ${Dt(e.clusterBorder,.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } + ${Ut()} +`,"getStyles"),te=ir;var nr=h((e,t,a,n)=>{t.forEach(s=>{xr[s](e,a,n)})},"insertMarkers"),or=h((e,t,a)=>{w.trace("Making markers for ",a),e.append("defs").append("marker").attr("id",a+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),cr=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),lr=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),hr=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),gr=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),dr=h((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),ur=h((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),pr=h((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),fr=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),xr={extension:or,composition:cr,aggregation:lr,dependency:hr,lollipop:gr,point:dr,circle:ur,cross:pr,barb:fr},ee=nr;var I=B()?.block?.padding??8;function re(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};let a=t%e,n=Math.floor(t/e);return{px:a,py:n}}h(re,"calculateBlockPosition");var br=h(e=>{let t=0,a=0;for(let n of e.children){let{width:s,height:o,x:r,y:i}=n.size??{width:0,height:0,x:0,y:0};if(w.debug("getMaxChildSize abc95 child:",n.id,"width:",s,"height:",o,"x:",r,"y:",i,n.type),n.type==="space")continue;let c=s/(n.widthInColumns??1);c>t&&(t=c),o>a&&(a=o)}return{width:t,height:a}},"getMaxChildSize");function _t(e,t,a=0,n=0){w.debug("setBlockSizes abc95 (start)",e.id,e?.size?.x,"block width =",e?.size,"siblingWidth",a),e?.size?.width||(e.size={width:a,height:n,x:0,y:0});let s=0,o=0;if(e.children?.length>0){for(let x of e.children)_t(x,t);let r=br(e);s=r.width,o=r.height,w.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",s,o);for(let x of e.children)x.size&&(w.debug(`abc95 Setting size of children of ${e.id} id=${x.id} ${s} ${o} ${JSON.stringify(x.size)}`),x.size.width=s*(x.widthInColumns??1)+I*((x.widthInColumns??1)-1),x.size.height=o,x.size.x=0,x.size.y=0,w.debug(`abc95 updating size of ${e.id} children child:${x.id} maxWidth:${s} maxHeight:${o}`));for(let x of e.children)_t(x,t,s,o);let i=e.columns??-1,c=0;for(let x of e.children)c+=x.widthInColumns??1;let d=e.children.length;i>0&&i0?Math.min(e.children.length,i):e.children.length;if(x>0){let m=(p-x*I-I)/x;w.debug("abc95 (growing to fit) width",e.id,p,e.size?.width,m);for(let E of e.children)E.size&&(E.size.width=m)}}e.size={width:p,height:y,x:0,y:0}}w.debug("setBlockSizes abc94 (done)",e.id,e?.size?.x,e?.size?.width,e?.size?.y,e?.size?.height)}h(_t,"setBlockSizes");function ae(e,t){w.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`);let a=e.columns??-1;if(w.debug("layoutBlocks columns abc95",e.id,"=>",a,e),e.children&&e.children.length>0){let n=e?.children[0]?.size?.width??0,s=e.children.length*n+(e.children.length-1)*I;w.debug("widthOfChildren 88",s,"posX");let o=new Map;{let l=0;for(let p of e.children){if(!p.size)continue;let{py:y}=re(a,l),x=o.get(y)??0;p.size.height>x&&o.set(y,p.size.height);let m=p?.widthInColumns??1;a>0&&(m=Math.min(m,a-l%a)),l+=m}}let r=new Map;{let l=0,p=[...o.keys()].sort((y,x)=>y-x);for(let y of p)r.set(y,l),l+=(o.get(y)??0)+I}let i=0;w.debug("abc91 block?.size?.x",e.id,e?.size?.x);let c=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-I,d=0;for(let l of e.children){let p=e;if(!l.size)continue;let{width:y,height:x}=l.size,{px:m,py:E}=re(a,i);if(E!=d&&(d=E,c=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-I,w.debug("New row in layout for block",e.id," and child ",l.id,d)),w.debug(`abc89 layout blocks (child) id: ${l.id} Pos: ${i} (px, py) ${m},${E} (${p?.size?.x},${p?.size?.y}) parent: ${p.id} width: ${y}${I}`),p.size){let T=y/2;l.size.x=c+I+T,w.debug(`abc91 layout blocks (calc) px, pyid:${l.id} startingPos=X${c} new startingPosX${l.size.x} ${T} padding=${I} width=${y} halfWidth=${T} => x:${l.size.x} y:${l.size.y} ${l.widthInColumns} (width * (child?.w || 1)) / 2 ${y*(l?.widthInColumns??1)/2}`),c=l.size.x+T;let O=r.get(E)??0,C=o.get(E)??x;l.size.y=p.size.y-p.size.height/2+O+C/2+I,w.debug(`abc88 layout blocks (calc) px, pyid:${l.id}startingPosX${c}${I}${T}=>x:${l.size.x}y:${l.size.y}${l.widthInColumns}(width * (child?.w || 1)) / 2${y*(l?.widthInColumns??1)/2}`)}l.children&&ae(l,t);let S=l?.widthInColumns??1;a>0&&(S=Math.min(S,a-i%a)),i+=S,w.debug("abc88 columnsPos",l,i)}}w.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`)}h(ae,"layoutBlocks");function se(e,{minX:t,minY:a,maxX:n,maxY:s}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){let{x:o,y:r,width:i,height:c}=e.size;o-i/2n&&(n=o+i/2),r+c/2>s&&(s=r+c/2)}if(e.children)for(let o of e.children)({minX:t,minY:a,maxX:n,maxY:s}=se(o,{minX:t,minY:a,maxX:n,maxY:s}));return{minX:t,minY:a,maxX:n,maxY:s}}h(se,"findBounds");function ie(e){let t=e.getBlock("root");if(!t)return;_t(t,e,0,0),ae(t,e),w.debug("getBlocks",JSON.stringify(t,null,2));let{minX:a,minY:n,maxX:s,maxY:o}=se(t),r=o-n,i=s-a;return{x:a,y:n,width:i,height:r}}h(ie,"layout");var yr=h(async(e,t,a,n=!1,s=!1)=>{let o=t||"";typeof o=="object"&&(o=o[0]);let r=B(),i=z(r);return await et(e,o,{style:a,isTitle:n,useHtmlLabels:i,markdown:!1,isNode:s,width:Number.POSITIVE_INFINITY},r)},"createLabel"),P=yr;var oe=h((e,t,a,n,s)=>{t.arrowTypeStart&&ne(e,"start",t.arrowTypeStart,a,n,s),t.arrowTypeEnd&&ne(e,"end",t.arrowTypeEnd,a,n,s)},"addEdgeMarkers"),mr={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},ne=h((e,t,a,n,s,o)=>{let r=mr[a];if(!r){w.warn(`Unknown arrow type: ${a}`);return}let i=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${n}#${s}_${o}-${r}${i})`)},"addEdgeMarker");var Bt={},F={};var le=h(async(e,t)=>{let a=B(),n=z(a),s=e.insert("g").attr("class","edgeLabel"),o=s.insert("g").attr("class","label"),r=t.labelType==="markdown",i=await et(e,t.label,{style:t.labelStyle,useHtmlLabels:n,addSvgBackground:r,isNode:!1,markdown:r,width:r?void 0:Number.POSITIVE_INFINITY},a);o.node().appendChild(i);let c=i.getBBox(),d=c;if(n){let p=i.children[0],y=_(i);c=p.getBoundingClientRect(),d=c,y.attr("width",c.width),y.attr("height",c.height)}else{let p=_(i).select("text").node();p&&typeof p.getBBox=="function"&&(d=p.getBBox())}o.attr("transform",rt(d,n)),Bt[t.id]=s,t.width=c.width,t.height=c.height;let l;if(t.startLabelLeft){let p=e.insert("g").attr("class","edgeTerminals"),y=p.insert("g").attr("class","inner"),x=await P(y,t.startLabelLeft,t.labelStyle);l=x;let m=x.getBBox();if(n){let E=x.children[0],S=_(x);m=E.getBoundingClientRect(),S.attr("width",m.width),S.attr("height",m.height)}y.attr("transform",rt(m,n)),F[t.id]||(F[t.id]={}),F[t.id].startLeft=p,ct(l,t.startLabelLeft)}if(t.startLabelRight){let p=e.insert("g").attr("class","edgeTerminals"),y=p.insert("g").attr("class","inner"),x=await P(y,t.startLabelRight,t.labelStyle);l=x;let m=x.getBBox();if(n){let E=x.children[0],S=_(x);m=E.getBoundingClientRect(),S.attr("width",m.width),S.attr("height",m.height)}y.attr("transform",rt(m,n)),F[t.id]||(F[t.id]={}),F[t.id].startRight=p,ct(l,t.startLabelRight)}if(t.endLabelLeft){let p=e.insert("g").attr("class","edgeTerminals"),y=p.insert("g").attr("class","inner"),x=await P(p,t.endLabelLeft,t.labelStyle);l=x;let m=x.getBBox();if(n){let E=x.children[0],S=_(x);m=E.getBoundingClientRect(),S.attr("width",m.width),S.attr("height",m.height)}y.attr("transform",rt(m,n)),F[t.id]||(F[t.id]={}),F[t.id].endLeft=p,ct(l,t.endLabelLeft)}if(t.endLabelRight){let p=e.insert("g").attr("class","edgeTerminals"),y=p.insert("g").attr("class","inner"),x=await P(p,t.endLabelRight,t.labelStyle);l=x;let m=x.getBBox();if(n){let E=x.children[0],S=_(x);m=E.getBoundingClientRect(),S.attr("width",m.width),S.attr("height",m.height)}y.attr("transform",rt(m,n)),F[t.id]||(F[t.id]={}),F[t.id].endRight=p,ct(l,t.endLabelRight)}return i},"insertEdgeLabel");function ct(e,t){z(B())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}h(ct,"setTerminalWidth");var he=h((e,t)=>{w.debug("Moving label abc88 ",e.id,e.label,Bt[e.id],t);let a=t.updatedPath?t.updatedPath:t.originalPath,n=B(),{subGraphTitleTotalMargin:s}=Kt(n);if(e.label){let o=Bt[e.id],r=e.x,i=e.y;if(a){let c=tt.calcLabelPosition(a);w.debug("Moving label "+e.label+" from (",r,",",i,") to (",c.x,",",c.y,") abc88"),t.updatedPath&&(r=c.x,i=c.y)}o.attr("transform",`translate(${r}, ${i+s/2})`)}if(e.startLabelLeft){let o=F[e.id].startLeft,r=e.x,i=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",a);r=c.x,i=c.y}o.attr("transform",`translate(${r}, ${i})`)}if(e.startLabelRight){let o=F[e.id].startRight,r=e.x,i=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",a);r=c.x,i=c.y}o.attr("transform",`translate(${r}, ${i})`)}if(e.endLabelLeft){let o=F[e.id].endLeft,r=e.x,i=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",a);r=c.x,i=c.y}o.attr("transform",`translate(${r}, ${i})`)}if(e.endLabelRight){let o=F[e.id].endRight,r=e.x,i=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",a);r=c.x,i=c.y}o.attr("transform",`translate(${r}, ${i})`)}},"positionEdgeLabel"),kr=h((e,t)=>{let a=e.x,n=e.y,s=Math.abs(t.x-a),o=Math.abs(t.y-n),r=e.width/2,i=e.height/2;return s>=r||o>=i},"outsideNode"),wr=h((e,t,a)=>{w.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(a)} + node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,s=e.y,o=Math.abs(n-a.x),r=e.width/2,i=a.xMath.abs(n-t.x)*c){let p=a.y{w.debug("abc88 cutPathAtIntersect",e,t);let a=[],n=e[0],s=!1;return e.forEach(o=>{if(!kr(t,o)&&!s){let r=wr(t,n,o),i=!1;a.forEach(c=>{i=i||c.x===r.x&&c.y===r.y}),a.some(c=>c.x===r.x&&c.y===r.y)||a.push(r),s=!0}else n=o,s||a.push(o)}),a},"cutPathAtIntersect"),ge=h(function(e,t,a,n,s,o,r){let i=a.points;w.debug("abc88 InsertEdge: edge=",a,"e=",t);let c=!1,d=o.node(t.v);var l=o.node(t.w);l?.intersect&&d?.intersect&&(i=i.slice(1,a.points.length-1),i.unshift(d.intersect(i[0])),i.push(l.intersect(i[i.length-1]))),a.toCluster&&(w.debug("to cluster abc88",n[a.toCluster]),i=ce(a.points,n[a.toCluster].node),c=!0),a.fromCluster&&(w.debug("from cluster abc88",n[a.fromCluster]),i=ce(i.reverse(),n[a.fromCluster].node).reverse(),c=!0);let p=i.filter(k=>!Number.isNaN(k.y)),y=Ht;a.curve&&(s==="graph"||s==="flowchart")&&(y=a.curve);let{x,y:m}=jt(a),E=Ft().x(x).y(m).curve(y),S;switch(a.thickness){case"normal":S="edge-thickness-normal";break;case"thick":S="edge-thickness-thick";break;case"invisible":S="edge-thickness-thick";break;default:S=""}switch(a.pattern){case"solid":S+=" edge-pattern-solid";break;case"dotted":S+=" edge-pattern-dotted";break;case"dashed":S+=" edge-pattern-dashed";break}let T=e.append("path").attr("d",E(p)).attr("id",a.id).attr("class"," "+S+(a.classes?" "+a.classes:"")).attr("style",a.style),O="";(B().flowchart.arrowMarkerAbsolute||B().state.arrowMarkerAbsolute)&&(O=Rt(!0)),oe(T,a,O,r,s);let C={};return c&&(C.updatedPath=i),C.originalPath=a.points,C},"insertEdge");var Sr=h(e=>{let t=new Set;for(let a of e)switch(a){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(a);break}return t},"expandAndDeduplicateDirections"),de=h((e,t,a,n)=>{let s=Sr(e),o=2,r=t.height+2*a.padding,i=r/o,c=n??t.width+2*i+a.padding,d=a.padding/2;return s.has("right")&&s.has("left")&&s.has("up")&&s.has("down")?[{x:0,y:0},{x:i,y:0},{x:c/2,y:2*d},{x:c-i,y:0},{x:c,y:0},{x:c,y:-r/3},{x:c+2*d,y:-r/2},{x:c,y:-2*r/3},{x:c,y:-r},{x:c-i,y:-r},{x:c/2,y:-r-2*d},{x:i,y:-r},{x:0,y:-r},{x:0,y:-2*r/3},{x:-2*d,y:-r/2},{x:0,y:-r/3}]:s.has("right")&&s.has("left")&&s.has("up")?[{x:i,y:0},{x:c-i,y:0},{x:c,y:-r/2},{x:c-i,y:-r},{x:i,y:-r},{x:0,y:-r/2}]:s.has("right")&&s.has("left")&&s.has("down")?[{x:0,y:0},{x:i,y:-r},{x:c-i,y:-r},{x:c,y:0}]:s.has("right")&&s.has("up")&&s.has("down")?[{x:0,y:0},{x:c,y:-i},{x:c,y:-r+i},{x:0,y:-r}]:s.has("left")&&s.has("up")&&s.has("down")?[{x:c,y:0},{x:0,y:-i},{x:0,y:-r+i},{x:c,y:-r}]:s.has("right")&&s.has("left")?[{x:i,y:0},{x:i,y:-d},{x:c-i,y:-d},{x:c-i,y:0},{x:c,y:-r/2},{x:c-i,y:-r},{x:c-i,y:-r+d},{x:i,y:-r+d},{x:i,y:-r},{x:0,y:-r/2}]:s.has("up")&&s.has("down")?[{x:c/2,y:0},{x:0,y:-d},{x:i,y:-d},{x:i,y:-r+d},{x:0,y:-r+d},{x:c/2,y:-r},{x:c,y:-r+d},{x:c-i,y:-r+d},{x:c-i,y:-d},{x:c,y:-d}]:s.has("right")&&s.has("up")?[{x:0,y:0},{x:c,y:-i},{x:0,y:-r}]:s.has("right")&&s.has("down")?[{x:0,y:0},{x:c,y:0},{x:0,y:-r}]:s.has("left")&&s.has("up")?[{x:c,y:0},{x:0,y:-i},{x:c,y:-r}]:s.has("left")&&s.has("down")?[{x:c,y:0},{x:0,y:0},{x:c,y:-r}]:s.has("right")?[{x:i,y:-d},{x:i,y:-d},{x:c-i,y:-d},{x:c-i,y:0},{x:c,y:-r/2},{x:c-i,y:-r},{x:c-i,y:-r+d},{x:i,y:-r+d},{x:i,y:-r+d}]:s.has("left")?[{x:i,y:0},{x:i,y:-d},{x:c-i,y:-d},{x:c-i,y:-r+d},{x:i,y:-r+d},{x:i,y:-r},{x:0,y:-r/2}]:s.has("up")?[{x:i,y:-d},{x:i,y:-r+d},{x:0,y:-r+d},{x:c/2,y:-r},{x:c,y:-r+d},{x:c-i,y:-r+d},{x:c-i,y:-d}]:s.has("down")?[{x:c/2,y:0},{x:0,y:-d},{x:i,y:-d},{x:i,y:-r+d},{x:c-i,y:-r+d},{x:c-i,y:-d},{x:c,y:-d}]:[{x:0,y:0}]},"getArrowPoints");function Lr(e,t){return e.intersect(t)}h(Lr,"intersectNode");var ue=Lr;function Er(e,t,a,n){var s=e.x,o=e.y,r=s-n.x,i=o-n.y,c=Math.sqrt(t*t*i*i+a*a*r*r),d=Math.abs(t*a*r/c);n.x0}h(fe,"sameSign");var xe=_r;var be=Br;function Br(e,t,a){var n=e.x,s=e.y,o=[],r=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(m){r=Math.min(r,m.x),i=Math.min(i,m.y)}):(r=Math.min(r,t.x),i=Math.min(i,t.y));for(var c=n-e.width/2-r,d=s-e.height/2-i,l=0;l1&&o.sort(function(m,E){var S=m.x-a.x,T=m.y-a.y,O=Math.sqrt(S*S+T*T),C=E.x-a.x,k=E.y-a.y,u=Math.sqrt(C*C+k*k);return O{var a=e.x,n=e.y,s=t.x-a,o=t.y-n,r=e.width/2,i=e.height/2,c,d;return Math.abs(o)*r>Math.abs(s)*i?(o<0&&(i=-i),c=o===0?0:i*s/o,d=i):(s<0&&(r=-r),c=r,d=s===0?0:r*o/s),{x:a+c,y:n+d}},"intersectRect"),ye=vr;var v={node:ue,circle:pe,ellipse:lt,polygon:be,rect:ye};var A=h(async(e,t,a,n)=>{let s=B(),o,r=t.useHtmlLabels||z(s);a?o=a:o="node default";let i=e.insert("g").attr("class",o).attr("id",t.domId||t.id),c=i.insert("g").attr("class","label").attr("style",t.labelStyle),d;t.labelText===void 0?d="":d=typeof t.labelText=="string"?t.labelText:t.labelText[0];let l;t.labelType==="markdown"?l=et(c,yt(mt(d),s),{useHtmlLabels:r,width:t.width||s.flowchart.wrappingWidth,classes:"markdown-node-label"},s):l=await P(c,yt(mt(d),s),t.labelStyle,!1,n);let p=l.getBBox(),y=t.padding/2;if(z(s)){let x=l.children[0],m=_(l);await Yt(x,d),p=x.getBoundingClientRect(),m.attr("width",p.width),m.attr("height",p.height)}return r?c.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):c.attr("transform","translate(0, "+-p.height/2+")"),t.centerLabel&&c.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),c.insert("rect",":first-child"),{shapeSvg:i,bbox:p,halfPadding:y,label:c}},"labelHelper"),N=h((e,t)=>{let a=t.node().getBBox();e.width=a.width,e.height=a.height},"updateNodeBounds");function U(e,t,a,n){return e.insert("polygon",":first-child").attr("points",n.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+a/2+")")}h(U,"insertPolygonShape");var Tr=h(async(e,t)=>{t.useHtmlLabels||z(B())||(t.centerLabel=!0);let{shapeSvg:n,bbox:s,halfPadding:o}=await A(e,t,"node "+t.classes,!0);w.info("Classes = ",t.classes);let r=n.insert("rect",":first-child");return r.attr("rx",t.rx).attr("ry",t.ry).attr("x",-s.width/2-o).attr("y",-s.height/2-o).attr("width",s.width+t.padding).attr("height",s.height+t.padding),N(t,r),t.intersect=function(i){return v.rect(t,i)},n},"note"),me=Tr;var ke=h(e=>e?" "+e:"","formatClass"),K=h((e,t)=>`${t||"node default"}${ke(e.classes)} ${ke(e.class)}`,"getClassesFromNode"),we=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.width+t.padding,o=n.height+t.padding,r=s+o,i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}];w.info("Question main (Circle)");let c=U(a,r,r,i);return c.attr("style",t.style),N(t,c),t.intersect=function(d){return w.warn("Intersect called"),v.polygon(t,i,d)},a},"question"),Cr=h((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,s=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return a.insert("polygon",":first-child").attr("points",s.map(function(r){return r.x+","+r.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(r){return v.circle(t,14,r)},a},"choice"),Nr=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=4,o=t.positioned?t.height:n.height+t.padding,r=o/s,i=t.positioned?t.width:n.width+2*r+t.padding,c=[{x:r,y:0},{x:i-r,y:0},{x:i,y:-o/2},{x:i-r,y:-o},{x:r,y:-o},{x:0,y:-o/2}],d=U(a,i,o,c);return d.attr("style",t.style),N(t,d),t.intersect=function(l){return v.polygon(t,c,l)},a},"hexagon"),Ir=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,void 0,!0),s=2,o=n.height+2*t.padding,r=o/s,i=n.width+2*r+t.padding,d=t.positioned&&(t.widthInColumns??1)>1&&t.width>i?t.width:i,l=de(t.directions,n,t,d),p=U(a,d,o,l);return p.attr("style",t.style),N(t,p),t.intersect=function(y){return v.polygon(t,l,y)},a},"block_arrow"),Or=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.width+t.padding,o=n.height+t.padding,r=[{x:-o/2,y:0},{x:s,y:0},{x:s,y:-o},{x:-o/2,y:-o},{x:0,y:-o/2}];return U(a,s,o,r).attr("style",t.style),t.width=s+o,t.height=o,t.intersect=function(c){return v.polygon(t,r,c)},a},"rect_left_inv_arrow"),Rr=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t),!0),s=n.width+t.padding,o=n.height+t.padding,r=[{x:-2*o/6,y:0},{x:s-o/6,y:0},{x:s+2*o/6,y:-o},{x:o/6,y:-o}],i=U(a,s,o,r);return i.attr("style",t.style),N(t,i),t.intersect=function(c){return v.polygon(t,r,c)},a},"lean_right"),zr=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.width+t.padding,o=n.height+t.padding,r=[{x:2*o/6,y:0},{x:s+o/6,y:0},{x:s-2*o/6,y:-o},{x:-o/6,y:-o}],i=U(a,s,o,r);return i.attr("style",t.style),N(t,i),t.intersect=function(c){return v.polygon(t,r,c)},a},"lean_left"),Ar=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.width+t.padding,o=n.height+t.padding,r=[{x:-2*o/6,y:0},{x:s+2*o/6,y:0},{x:s-o/6,y:-o},{x:o/6,y:-o}],i=U(a,s,o,r);return i.attr("style",t.style),N(t,i),t.intersect=function(c){return v.polygon(t,r,c)},a},"trapezoid"),Mr=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.width+t.padding,o=n.height+t.padding,r=[{x:o/6,y:0},{x:s-o/6,y:0},{x:s+2*o/6,y:-o},{x:-2*o/6,y:-o}],i=U(a,s,o,r);return i.attr("style",t.style),N(t,i),t.intersect=function(c){return v.polygon(t,r,c)},a},"inv_trapezoid"),Fr=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.width+t.padding,o=n.height+t.padding,r=[{x:0,y:0},{x:s+o/2,y:0},{x:s,y:-o/2},{x:s+o/2,y:-o},{x:0,y:-o}],i=U(a,s,o,r);return i.attr("style",t.style),N(t,i),t.intersect=function(c){return v.polygon(t,r,c)},a},"rect_right_inv_arrow"),Hr=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.width+t.padding,o=s/2,r=o/(2.5+s/50),i=n.height+r+t.padding,c="M 0,"+r+" a "+o+","+r+" 0,0,0 "+s+" 0 a "+o+","+r+" 0,0,0 "+-s+" 0 l 0,"+i+" a "+o+","+r+" 0,0,0 "+s+" 0 l 0,"+-i,d=a.attr("label-offset-y",r).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-s/2+","+-(i/2+r)+")");return N(t,d),t.intersect=function(l){let p=v.rect(t,l),y=p.x-t.x;if(o!=0&&(Math.abs(y)t.height/2-r)){let x=r*r*(1-y*y/(o*o));x!=0&&(x=Math.sqrt(x)),x=r-x,l.y-t.y>0&&(x=-x),p.y+=x}return p},a},"cylinder"),Pr=h(async(e,t)=>{let{shapeSvg:a,bbox:n,halfPadding:s}=await A(e,t,"node "+t.classes+" "+t.class,!0),o=a.insert("rect",":first-child"),r=t.positioned?t.width:n.width+t.padding,i=t.positioned?t.height:n.height+t.padding,c=t.positioned?-r/2:-n.width/2-s,d=t.positioned?-i/2:-n.height/2-s;if(o.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",c).attr("y",d).attr("width",r).attr("height",i),t.props){let l=new Set(Object.keys(t.props));t.props.borders&&(vt(o,t.props.borders,r,i),l.delete("borders")),l.forEach(p=>{w.warn(`Unknown node property ${p}`)})}return N(t,o),t.intersect=function(l){return v.rect(t,l)},a},"rect"),Wr=h(async(e,t)=>{let{shapeSvg:a,bbox:n,halfPadding:s}=await A(e,t,"node "+t.classes,!0),o=a.insert("rect",":first-child"),r=t.positioned?t.width:n.width+t.padding,i=t.positioned?t.height:n.height+t.padding,c=t.positioned?-r/2:-n.width/2-s,d=t.positioned?-i/2:-n.height/2-s;if(o.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",c).attr("y",d).attr("width",r).attr("height",i),t.props){let l=new Set(Object.keys(t.props));t.props.borders&&(vt(o,t.props.borders,r,i),l.delete("borders")),l.forEach(p=>{w.warn(`Unknown node property ${p}`)})}return N(t,o),t.intersect=function(l){return v.rect(t,l)},a},"composite"),Yr=h(async(e,t)=>{let{shapeSvg:a}=await A(e,t,"label",!0);w.trace("Classes = ",t.class);let n=a.insert("rect",":first-child"),s=0,o=0;if(n.attr("width",s).attr("height",o),a.attr("class","label edgeLabel"),t.props){let r=new Set(Object.keys(t.props));t.props.borders&&(vt(n,t.props.borders,s,o),r.delete("borders")),r.forEach(i=>{w.warn(`Unknown node property ${i}`)})}return N(t,n),t.intersect=function(r){return v.rect(t,r)},a},"labelRect");function vt(e,t,a,n){let s=[],o=h(i=>{s.push(i,0)},"addBorder"),r=h(i=>{s.push(0,i)},"skipBorder");t.includes("t")?(w.debug("add top border"),o(a)):r(a),t.includes("r")?(w.debug("add right border"),o(n)):r(n),t.includes("b")?(w.debug("add bottom border"),o(a)):r(a),t.includes("l")?(w.debug("add left border"),o(n)):r(n),e.attr("stroke-dasharray",s.join(" "))}h(vt,"applyNodePropertyBorders");var Kr=h(async(e,t)=>{let a;t.classes?a="node "+t.classes:a="node default";let n=e.insert("g").attr("class",a).attr("id",t.domId||t.id),s=n.insert("rect",":first-child"),o=n.insert("line"),r=n.insert("g").attr("class","label"),i=t.labelText.flat?t.labelText.flat():t.labelText,c="";typeof i=="object"?c=i[0]:c=i,w.info("Label text abc79",c,i,typeof i=="object");let d=await P(r,c,t.labelStyle,!0,!0),l={width:0,height:0};if(z(B())){let E=d.children[0],S=_(d);l=E.getBoundingClientRect(),S.attr("width",l.width),S.attr("height",l.height)}w.info("Text 2",i);let p=i.slice(1,i.length),y=d.getBBox(),x=await P(r,p.join?p.join("
"):p,t.labelStyle,!0,!0);if(z(B())){let E=x.children[0],S=_(x);l=E.getBoundingClientRect(),S.attr("width",l.width),S.attr("height",l.height)}let m=t.padding/2;return _(x).attr("transform","translate( "+(l.width>y.width?0:(y.width-l.width)/2)+", "+(y.height+m+5)+")"),_(d).attr("transform","translate( "+(l.width{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.height+t.padding,o=n.width+s/4+t.padding,r=a.insert("rect",":first-child").attr("style",t.style).attr("rx",s/2).attr("ry",s/2).attr("x",-o/2).attr("y",-s/2).attr("width",o).attr("height",s);return N(t,r),t.intersect=function(i){return v.rect(t,i)},a},"stadium"),Vr=h(async(e,t)=>{let{shapeSvg:a,bbox:n,halfPadding:s}=await A(e,t,K(t,void 0),!0),o=a.insert("circle",":first-child");return o.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+s).attr("width",n.width+t.padding).attr("height",n.height+t.padding),w.info("Circle main"),N(t,o),t.intersect=function(r){return w.info("Circle intersect",t,n.width/2+s,r),v.circle(t,n.width/2+s,r)},a},"circle"),Ur=h(async(e,t)=>{let{shapeSvg:a,bbox:n,halfPadding:s}=await A(e,t,K(t,void 0),!0),o=5,r=a.insert("g",":first-child"),i=r.insert("circle"),c=r.insert("circle");return r.attr("class",t.class),i.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+s+o).attr("width",n.width+t.padding+o*2).attr("height",n.height+t.padding+o*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+s).attr("width",n.width+t.padding).attr("height",n.height+t.padding),w.info("DoubleCircle main"),N(t,i),t.intersect=function(d){return w.info("DoubleCircle intersect",t,n.width/2+s+o,d),v.circle(t,n.width/2+s+o,d)},a},"doublecircle"),Xr=h(async(e,t)=>{let{shapeSvg:a,bbox:n}=await A(e,t,K(t,void 0),!0),s=n.width+t.padding,o=n.height+t.padding,r=[{x:0,y:0},{x:s,y:0},{x:s,y:-o},{x:0,y:-o},{x:0,y:0},{x:-8,y:0},{x:s+8,y:0},{x:s+8,y:-o},{x:-8,y:-o},{x:-8,y:0}],i=U(a,s,o,r);return i.attr("style",t.style),N(t,i),t.intersect=function(c){return v.polygon(t,r,c)},a},"subroutine"),Gr=h((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=a.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),N(t,n),t.intersect=function(s){return v.circle(t,7,s)},a},"start"),Se=h((e,t,a)=>{let n=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),s=70,o=10;a==="LR"&&(s=10,o=70);let r=n.append("rect").attr("x",-1*s/2).attr("y",-1*o/2).attr("width",s).attr("height",o).attr("class","fork-join");return N(t,r),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(i){return v.rect(t,i)},n},"forkJoin"),Zr=h((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=a.insert("circle",":first-child"),s=a.insert("circle",":first-child");return s.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),N(t,s),t.intersect=function(o){return v.circle(t,7,o)},a},"end"),qr=h(async(e,t)=>{let a=t.padding/2,n=4,s=8,o;t.classes?o="node "+t.classes:o="node default";let r=e.insert("g").attr("class",o).attr("id",t.domId||t.id),i=r.insert("rect",":first-child"),c=r.insert("line"),d=r.insert("line"),l=0,p=n,y=r.insert("g").attr("class","label"),x=0,m=t.classData.annotations?.[0],E=t.classData.annotations[0]?"\xAB"+t.classData.annotations[0]+"\xBB":"",S=await P(y,E,t.labelStyle,!0,!0),T=S.getBBox();if(z(B())){let D=S.children[0],g=_(S);T=D.getBoundingClientRect(),g.attr("width",T.width),g.attr("height",T.height)}t.classData.annotations[0]&&(p+=T.height+n,l+=T.width);let O=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(z(B())?O+="<"+t.classData.type+">":O+="<"+t.classData.type+">");let C=await P(y,O,t.labelStyle,!0,!0);_(C).attr("class","classTitle");let k=C.getBBox();if(z(B())){let D=C.children[0],g=_(C);k=D.getBoundingClientRect(),g.attr("width",k.width),g.attr("height",k.height)}p+=k.height+n,k.width>l&&(l=k.width);let u=[];t.classData.members.forEach(async D=>{let g=D.getDisplayDetails(),W=g.displayText;z(B())&&(W=W.replace(//g,">"));let f=await P(y,W,g.cssStyle?g.cssStyle:t.labelStyle,!0,!0),R=f.getBBox();if(z(B())){let q=f.children[0],X=_(f);R=q.getBoundingClientRect(),X.attr("width",R.width),X.attr("height",R.height)}R.width>l&&(l=R.width),p+=R.height+n,u.push(f)}),p+=s;let b=[];if(t.classData.methods.forEach(async D=>{let g=D.getDisplayDetails(),W=g.displayText;z(B())&&(W=W.replace(//g,">"));let f=await P(y,W,g.cssStyle?g.cssStyle:t.labelStyle,!0,!0),R=f.getBBox();if(z(B())){let q=f.children[0],X=_(f);R=q.getBoundingClientRect(),X.attr("width",R.width),X.attr("height",R.height)}R.width>l&&(l=R.width),p+=R.height+n,b.push(f)}),p+=s,m){let D=(l-T.width)/2;_(S).attr("transform","translate( "+(-1*l/2+D)+", "+-1*p/2+")"),x=T.height+n}let L=(l-k.width)/2;return _(C).attr("transform","translate( "+(-1*l/2+L)+", "+(-1*p/2+x)+")"),x+=k.height+n,c.attr("class","divider").attr("x1",-l/2-a).attr("x2",l/2+a).attr("y1",-p/2-a+s+x).attr("y2",-p/2-a+s+x),x+=s,u.forEach(D=>{_(D).attr("transform","translate( "+-l/2+", "+(-1*p/2+x+s/2)+")");let g=D?.getBBox();x+=(g?.height??0)+n}),x+=s,d.attr("class","divider").attr("x1",-l/2-a).attr("x2",l/2+a).attr("y1",-p/2-a+s+x).attr("y2",-p/2-a+s+x),x+=s,b.forEach(D=>{_(D).attr("transform","translate( "+-l/2+", "+(-1*p/2+x)+")");let g=D?.getBBox();x+=(g?.height??0)+n}),i.attr("style",t.style).attr("class","outer title-state").attr("x",-l/2-a).attr("y",-(p/2)-a).attr("width",l+t.padding).attr("height",p+t.padding),N(t,i),t.intersect=function(D){return v.rect(t,D)},r},"class_box"),Le={rhombus:we,composite:Wr,question:we,rect:Pr,labelRect:Yr,rectWithTitle:Kr,choice:Cr,circle:Vr,doublecircle:Ur,stadium:jr,hexagon:Nr,block_arrow:Ir,rect_left_inv_arrow:Or,lean_right:Rr,lean_left:zr,trapezoid:Ar,inv_trapezoid:Mr,rect_right_inv_arrow:Fr,cylinder:Hr,start:Gr,end:Zr,note:me,subroutine:Xr,fork:Se,join:Se,class_box:qr},ht={},Tt=h(async(e,t,a)=>{let n,s;if(t.link){let o;B().securityLevel==="sandbox"?o="_top":t.linkTarget&&(o=t.linkTarget||"_blank"),n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",o),s=await Le[t.shape](n,t,a)}else s=await Le[t.shape](e,t,a),n=s;return t.tooltip&&s.attr("title",t.tooltip),t.class&&s.attr("class","node default "+t.class),ht[t.id]=n,t.haveCallback&&ht[t.id].attr("class",ht[t.id].attr("class")+" clickable"),n},"insertNode");var Ee=h(e=>{let t=ht[e.id];w.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let a=8,n=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+n-e.width/2)+", "+(e.y-e.height/2-a)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),n},"positionNode");function De(e,t,a=!1){let n=e,s="default";(n?.classes?.length||0)>0&&(s=(n?.classes??[]).join(" ")),s=s+" flowchart-label";let o=0,r="",i;switch(n.type){case"round":o=5,r="rect";break;case"composite":o=0,r="composite",i=0;break;case"square":r="rect";break;case"diamond":r="question";break;case"hexagon":r="hexagon";break;case"block_arrow":r="block_arrow";break;case"odd":r="rect_left_inv_arrow";break;case"lean_right":r="lean_right";break;case"lean_left":r="lean_left";break;case"trapezoid":r="trapezoid";break;case"inv_trapezoid":r="inv_trapezoid";break;case"rect_left_inv_arrow":r="rect_left_inv_arrow";break;case"circle":r="circle";break;case"ellipse":r="ellipse";break;case"stadium":r="stadium";break;case"subroutine":r="subroutine";break;case"cylinder":r="cylinder";break;case"group":r="rect";break;case"doublecircle":r="doublecircle";break;default:r="rect"}let c=Wt(n?.styles??[]),d=n.label,l=n.size??{width:0,height:0,x:0,y:0},p=t.getDiagramId();return{labelStyle:c.labelStyle,shape:r,labelText:d,rx:o,ry:o,class:s,style:c.style,id:n.id,domId:p?`${p}-${n.id}`:n.id,directions:n.directions,width:l.width,height:l.height,x:l.x,y:l.y,positioned:a,intersect:void 0,type:n.type,padding:i??J()?.block?.padding??0,widthInColumns:n.widthInColumns??1}}h(De,"getNodeFromBlock");async function Jr(e,t,a){let n=De(t,a,!1);if(n.type==="group")return;let s=J(),o=await Tt(e,n,{config:s}),r=o.node().getBBox(),i=a.getBlock(n.id);i.size={width:r.width,height:r.height,x:0,y:0,node:o},a.setBlock(i),o.remove()}h(Jr,"calculateBlockSize");async function Qr(e,t,a){let n=De(t,a,!0);if(a.getBlock(n.id).type!=="space"){let o=J();await Tt(e,n,{config:o}),t.intersect=n?.intersect,Ee(n)}}h(Qr,"insertBlockPositioned");async function Ct(e,t,a,n){for(let s of t)await n(e,s,a),s.children&&await Ct(e,s.children,a,n)}h(Ct,"performOperations");async function _e(e,t,a){await Ct(e,t,a,Jr)}h(_e,"calculateBlockSizes");async function Be(e,t,a){await Ct(e,t,a,Qr)}h(Be,"insertBlocks");async function ve(e,t,a,n,s){let o=new Vt({multigraph:!0,compound:!0});o.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let r of a)r.size&&o.setNode(r.id,{width:r.size.width,height:r.size.height,intersect:r.intersect});for(let r of t)if(r.start&&r.end){let i=n.getBlock(r.start),c=n.getBlock(r.end);if(i?.size&&c?.size){let d=i.size,l=c.size,p=[{x:d.x,y:d.y},{x:d.x+(l.x-d.x)/2,y:d.y+(l.y-d.y)/2},{x:l.x,y:l.y}],y=s?`${s}-${r.id}`:r.id,x=r.thickness==="thick"?"edge-thickness-thick":"edge-thickness-normal",m=r.pattern==="dotted"?"edge-pattern-dotted":"edge-pattern-solid",E=`${x} ${m} flowchart-link LS-a1 LE-b1`;ge(e,{v:r.start,w:r.end,name:y},{...r,id:y,arrowTypeEnd:r.arrowTypeEnd,arrowTypeStart:r.arrowTypeStart,points:p,classes:E},void 0,"block",o,s),r.label&&(await le(e,{...r,label:r.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:r.arrowTypeEnd,arrowTypeStart:r.arrowTypeStart,points:p,classes:E}),he({...r,x:p[1].x,y:p[1].y},{originalPath:p}))}}}h(ve,"insertEdges");var $r=h(function(e,t){return t.db.getClasses()},"getClasses"),ta=h(async function(e,t,a,n){let{securityLevel:s,block:o}=J(),r=n.db;r.setDiagramId(t);let i;s==="sandbox"&&(i=_("#i"+t));let c=s==="sandbox"?_(i.nodes()[0].contentDocument.body):_("body"),d=s==="sandbox"?c.select(`[id="${t}"]`):_(`[id="${t}"]`);ee(d,["point","circle","cross"],n.type,t);let p=r.getBlocks(),y=r.getBlocksFlat(),x=r.getEdges(),m=d.insert("g").attr("class","block");await _e(m,p,r);let E=ie(r);if(await Be(m,p,r),await ve(m,x,y,r,t),E){let S=E,T=Math.max(1,Math.round(.125*(S.width/S.height))),O=S.height+T+10,C=S.width+10,{useMaxWidth:k}=o;At(d,O,C,!!k),w.debug("Here Bounds",E,S),d.attr("viewBox",`${S.x-5} ${S.y-5} ${S.width+10} ${S.height+10}`)}},"draw"),Te={draw:ta,getClasses:$r};var ni={parser:Xt,db:$t,renderer:Te,styles:te};export{ni as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-7IZFK4PR.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-7IZFK4PR.mjs.map new file mode 100644 index 0000000..2862bf8 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-7IZFK4PR.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/block/parser/block.jison", "../../../src/diagrams/block/blockDB.ts", "../../../src/diagrams/block/styles.ts", "../../../src/dagre-wrapper/markers.js", "../../../src/diagrams/block/layout.ts", "../../../src/dagre-wrapper/createLabel.js", "../../../src/dagre-wrapper/edgeMarker.ts", "../../../src/dagre-wrapper/edges.js", "../../../src/dagre-wrapper/blockArrowHelper.ts", "../../../src/dagre-wrapper/intersect/intersect-node.js", "../../../src/dagre-wrapper/intersect/intersect-ellipse.js", "../../../src/dagre-wrapper/intersect/intersect-circle.js", "../../../src/dagre-wrapper/intersect/intersect-line.js", "../../../src/dagre-wrapper/intersect/intersect-polygon.js", "../../../src/dagre-wrapper/intersect/intersect-rect.js", "../../../src/dagre-wrapper/intersect/index.js", "../../../src/dagre-wrapper/shapes/util.js", "../../../src/dagre-wrapper/shapes/note.js", "../../../src/dagre-wrapper/nodes.js", "../../../src/diagrams/block/renderHelpers.ts", "../../../src/diagrams/block/blockRenderer.ts", "../../../src/diagrams/block/blockDiagram.ts"], + "sourcesContent": ["/* 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,15],$V1=[1,7],$V2=[1,13],$V3=[1,14],$V4=[1,19],$V5=[1,16],$V6=[1,17],$V7=[1,18],$V8=[8,30],$V9=[8,10,21,28,29,30,31,39,43,46],$Va=[1,23],$Vb=[1,24],$Vc=[8,10,15,16,21,28,29,30,31,39,43,46],$Vd=[8,10,15,16,21,27,28,29,30,31,39,43,46],$Ve=[1,49];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"spaceLines\":3,\"SPACELINE\":4,\"NL\":5,\"separator\":6,\"SPACE\":7,\"EOF\":8,\"start\":9,\"BLOCK_DIAGRAM_KEY\":10,\"document\":11,\"stop\":12,\"statement\":13,\"link\":14,\"LINK\":15,\"START_LINK\":16,\"LINK_LABEL\":17,\"STR\":18,\"nodeStatement\":19,\"columnsStatement\":20,\"SPACE_BLOCK\":21,\"blockStatement\":22,\"classDefStatement\":23,\"cssClassStatement\":24,\"styleStatement\":25,\"node\":26,\"SIZE\":27,\"COLUMNS\":28,\"id-block\":29,\"end\":30,\"NODE_ID\":31,\"nodeShapeNLabel\":32,\"dirList\":33,\"DIR\":34,\"NODE_DSTART\":35,\"NODE_DEND\":36,\"BLOCK_ARROW_START\":37,\"BLOCK_ARROW_END\":38,\"classDef\":39,\"CLASSDEF_ID\":40,\"CLASSDEF_STYLEOPTS\":41,\"DEFAULT\":42,\"class\":43,\"CLASSENTITY_IDS\":44,\"STYLECLASS\":45,\"style\":46,\"STYLE_ENTITY_IDS\":47,\"STYLE_DEFINITION_DATA\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACELINE\",5:\"NL\",7:\"SPACE\",8:\"EOF\",10:\"BLOCK_DIAGRAM_KEY\",15:\"LINK\",16:\"START_LINK\",17:\"LINK_LABEL\",18:\"STR\",21:\"SPACE_BLOCK\",27:\"SIZE\",28:\"COLUMNS\",29:\"id-block\",30:\"end\",31:\"NODE_ID\",34:\"DIR\",35:\"NODE_DSTART\",36:\"NODE_DEND\",37:\"BLOCK_ARROW_START\",38:\"BLOCK_ARROW_END\",39:\"classDef\",40:\"CLASSDEF_ID\",41:\"CLASSDEF_STYLEOPTS\",42:\"DEFAULT\",43:\"class\",44:\"CLASSENTITY_IDS\",45:\"STYLECLASS\",46:\"style\",47:\"STYLE_ENTITY_IDS\",48:\"STYLE_DEFINITION_DATA\"},\nproductions_: [0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],\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.getLogger().debug('Rule: separator (NL) ');\nbreak;\ncase 5:\nyy.getLogger().debug('Rule: separator (Space) ');\nbreak;\ncase 6:\nyy.getLogger().debug('Rule: separator (EOF) ');\nbreak;\ncase 7:\n yy.getLogger().debug(\"Rule: hierarchy: \", $$[$0-1]); yy.setHierarchy($$[$0-1]); \nbreak;\ncase 8:\nyy.getLogger().debug('Stop NL ');\nbreak;\ncase 9:\nyy.getLogger().debug('Stop EOF ');\nbreak;\ncase 10:\nyy.getLogger().debug('Stop NL2 ');\nbreak;\ncase 11:\nyy.getLogger().debug('Stop EOF2 ');\nbreak;\ncase 12:\n yy.getLogger().debug(\"Rule: statement: \", $$[$0]); typeof $$[$0].length === 'number'?this.$ = $$[$0]:this.$ = [$$[$0]]; \nbreak;\ncase 13:\n yy.getLogger().debug(\"Rule: statement #2: \", $$[$0-1]); this.$ = [$$[$0-1]].concat($$[$0]); \nbreak;\ncase 14:\n yy.getLogger().debug(\"Rule: link: \", $$[$0], yytext); this.$={edgeTypeStr: $$[$0], label:''}; \nbreak;\ncase 15:\n yy.getLogger().debug(\"Rule: LABEL link: \", $$[$0-3], $$[$0-1], $$[$0]); this.$={edgeTypeStr: $$[$0], label:$$[$0-1]}; \nbreak;\ncase 18:\n const num=parseInt($$[$0]); const spaceId = yy.generateId(); this.$ = { id: spaceId, type:'space', label:'', width: num, children: [] }\nbreak;\ncase 23:\n\n yy.getLogger().debug('Rule: (nodeStatement link node) ', $$[$0-2], $$[$0-1], $$[$0], ' typestr: ',$$[$0-1].edgeTypeStr);\n const edgeData = yy.edgeStrToEdgeData($$[$0-1].edgeTypeStr)\n const startEdgeData = yy.edgeStrToEdgeStartData($$[$0-1].edgeTypeStr);\n const lineThickness = yy.edgeStrToThickness($$[$0-1].edgeTypeStr);\n const linePattern = yy.edgeStrToPattern($$[$0-1].edgeTypeStr);\n this.$ = [\n {id: $$[$0-2].id, label: $$[$0-2].label, type:$$[$0-2].type, directions: $$[$0-2].directions},\n {id: $$[$0-2].id + '-' + $$[$0].id, start: $$[$0-2].id, end: $$[$0].id, label: $$[$0-1].label, type: 'edge', thickness: lineThickness, pattern: linePattern, directions: $$[$0].directions, arrowTypeEnd: edgeData, arrowTypeStart: startEdgeData },\n {id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions}\n ];\n \nbreak;\ncase 24:\n yy.getLogger().debug('Rule: nodeStatement (abc88 node size) ', $$[$0-1], $$[$0]); this.$ = {id: $$[$0-1].id, label: $$[$0-1].label, type: yy.typeStr2Type($$[$0-1].typeStr), directions: $$[$0-1].directions, widthInColumns: parseInt($$[$0],10)}; \nbreak;\ncase 25:\n yy.getLogger().debug('Rule: nodeStatement (node) ', $$[$0]); this.$ = {id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions, widthInColumns:1}; \nbreak;\ncase 26:\n yy.getLogger().debug('APA123', this? this:'na'); yy.getLogger().debug(\"COLUMNS: \", $$[$0]); this.$ = {type: 'column-setting', columns: $$[$0] === 'auto'?-1:parseInt($$[$0]) } \nbreak;\ncase 27:\n yy.getLogger().debug('Rule: id-block statement : ', $$[$0-2], $$[$0-1]); const id2 = yy.generateId(); this.$ = { ...$$[$0-2], type:'composite', children: $$[$0-1] }; \nbreak;\ncase 28:\n yy.getLogger().debug('Rule: blockStatement : ', $$[$0-2], $$[$0-1], $$[$0]); const id = yy.generateId(); this.$ = { id, type:'composite', label:'', children: $$[$0-1] }; \nbreak;\ncase 29:\n yy.getLogger().debug(\"Rule: node (NODE_ID separator): \", $$[$0]); this.$ = { id: $$[$0] }; \nbreak;\ncase 30:\n\n yy.getLogger().debug(\"Rule: node (NODE_ID nodeShapeNLabel separator): \", $$[$0-1], $$[$0]);\n this.$ = { id: $$[$0-1], label: $$[$0].label, typeStr: $$[$0].typeStr, directions: $$[$0].directions };\n \nbreak;\ncase 31:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0]); this.$ = [$$[$0]]; \nbreak;\ncase 32:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0-1], $$[$0]); this.$ = [$$[$0-1]].concat($$[$0]); \nbreak;\ncase 33:\n yy.getLogger().debug(\"Rule: nodeShapeNLabel: \", $$[$0-2], $$[$0-1], $$[$0]); this.$ = { typeStr: $$[$0-2] + $$[$0], label: $$[$0-1] }; \nbreak;\ncase 34:\n yy.getLogger().debug(\"Rule: BLOCK_ARROW nodeShapeNLabel: \", $$[$0-3], $$[$0-2], \" #3:\",$$[$0-1], $$[$0]); this.$ = { typeStr: $$[$0-3] + $$[$0], label: $$[$0-2], directions: $$[$0-1]}; \nbreak;\ncase 35: case 36:\n\n this.$ = { type: 'classDef', id: $$[$0-1].trim(), css: $$[$0].trim() };\n \nbreak;\ncase 37:\n\n //log.debug('apply class: id(s): ',$$[$0-1], ' style class: ', $$[$0]);\n this.$={ type: 'applyClass', id: $$[$0-1].trim(), styleClass: $$[$0].trim() };\n \nbreak;\ncase 38:\n\n this.$={ type: 'applyStyles', id: $$[$0-1].trim(), stylesStr: $$[$0].trim() };\n \nbreak;\n}\n},\ntable: [{9:1,10:[1,2]},{1:[3]},{10:$V0,11:3,13:4,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{8:[1,20]},o($V8,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:$V0,21:$V1,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7}),o($V9,[2,16],{14:22,15:$Va,16:$Vb}),o($V9,[2,17]),o($V9,[2,18]),o($V9,[2,19]),o($V9,[2,20]),o($V9,[2,21]),o($V9,[2,22]),o($Vc,[2,25],{27:[1,25]}),o($V9,[2,26]),{19:26,26:12,31:$V4},{10:$V0,11:27,13:4,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},o($Vd,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},o($V8,[2,13]),{26:35,31:$V4},{31:[2,14]},{17:[1,36]},o($Vc,[2,24]),{10:$V0,11:37,13:4,14:22,15:$Va,16:$Vb,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},o($Vd,[2,30]),{18:[1,43]},{18:[1,44]},o($Vc,[2,23]),{18:[1,45]},{30:[1,46]},o($V9,[2,28]),o($V9,[2,35]),o($V9,[2,36]),o($V9,[2,37]),o($V9,[2,38]),{36:[1,47]},{33:48,34:$Ve},{15:[1,50]},o($V9,[2,27]),o($Vd,[2,33]),{38:[1,51]},{33:52,34:$Ve,38:[2,31]},{31:[2,15]},o($Vd,[2,34]),{38:[2,32]}],\ndefaultActions: {20:[2,7],23:[2,14],50:[2,15],52:[2,32]},\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\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: yy.getLogger().debug('Found block-beta'); return 10; \nbreak;\ncase 1: yy.getLogger().debug('Found id-block'); return 29; \nbreak;\ncase 2: yy.getLogger().debug('Found block'); return 10; \nbreak;\ncase 3: yy.getLogger().debug('.', yy_.yytext); /* skip all whitespace */ \nbreak;\ncase 4:yy.getLogger().debug('_', yy_.yytext); /* skip all whitespace */ \nbreak;\ncase 5: return 5 \nbreak;\ncase 6: yy_.yytext=-1; return 28; \nbreak;\ncase 7: yy_.yytext = yy_.yytext.replace(/columns\\s+/,''); yy.getLogger().debug('COLUMNS (LEX)', yy_.yytext); return 28; \nbreak;\ncase 8: this.pushState(\"md_string\");\nbreak;\ncase 9: return \"MD_STR\";\nbreak;\ncase 10: this.popState();\nbreak;\ncase 11:this.pushState(\"string\");\nbreak;\ncase 12: yy.getLogger().debug('LEX: POPPING STR:', yy_.yytext);this.popState();\nbreak;\ncase 13: yy.getLogger().debug('LEX: STR end:', yy_.yytext); return \"STR\";\nbreak;\ncase 14: yy_.yytext = yy_.yytext.replace(/space\\:/,'');yy.getLogger().debug('SPACE NUM (LEX)', yy_.yytext); return 21; \nbreak;\ncase 15: yy_.yytext = '1'; yy.getLogger().debug('COLUMNS (LEX)', yy_.yytext); return 21; \nbreak;\ncase 16:return 42;\nbreak;\ncase 17:return 'LINKSTYLE';\nbreak;\ncase 18:return 'INTERPOLATE';\nbreak;\ncase 19: this.pushState('CLASSDEF'); return 39; \nbreak;\ncase 20: this.popState(); this.pushState('CLASSDEFID'); return 'DEFAULT_CLASSDEF_ID' \nbreak;\ncase 21: this.popState(); this.pushState('CLASSDEFID'); return 40 \nbreak;\ncase 22: this.popState(); return 41 \nbreak;\ncase 23: this.pushState('CLASS'); return 43; \nbreak;\ncase 24: this.popState(); this.pushState('CLASS_STYLE'); return 44 \nbreak;\ncase 25: this.popState(); return 45 \nbreak;\ncase 26: this.pushState('STYLE_STMNT'); return 46; \nbreak;\ncase 27: this.popState(); this.pushState('STYLE_DEFINITION'); return 47 \nbreak;\ncase 28: this.popState(); return 48 \nbreak;\ncase 29: this.pushState(\"acc_title\");return 'acc_title'; \nbreak;\ncase 30: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 31: this.pushState(\"acc_descr\");return 'acc_descr'; \nbreak;\ncase 32: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 33: this.pushState(\"acc_descr_multiline\");\nbreak;\ncase 34: this.popState(); \nbreak;\ncase 35:return \"acc_descr_multiline_value\";\nbreak;\ncase 36:return 30;\nbreak;\ncase 37: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 38: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 39: this.popState();yy.getLogger().debug('Lex: ))'); return \"NODE_DEND\"; \nbreak;\ncase 40: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 41: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 42: this.popState();yy.getLogger().debug('Lex: (-'); return \"NODE_DEND\"; \nbreak;\ncase 43: this.popState();yy.getLogger().debug('Lex: -)'); return \"NODE_DEND\"; \nbreak;\ncase 44: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 45: this.popState();yy.getLogger().debug('Lex: ]]'); return \"NODE_DEND\"; \nbreak;\ncase 46: this.popState();yy.getLogger().debug('Lex: ('); return \"NODE_DEND\"; \nbreak;\ncase 47: this.popState();yy.getLogger().debug('Lex: ])'); return \"NODE_DEND\"; \nbreak;\ncase 48: this.popState();yy.getLogger().debug('Lex: /]'); return \"NODE_DEND\"; \nbreak;\ncase 49: this.popState();yy.getLogger().debug('Lex: /]'); return \"NODE_DEND\"; \nbreak;\ncase 50: this.popState();yy.getLogger().debug('Lex: )]'); return \"NODE_DEND\"; \nbreak;\ncase 51: this.popState();yy.getLogger().debug('Lex: )'); return \"NODE_DEND\"; \nbreak;\ncase 52: this.popState();yy.getLogger().debug('Lex: ]>'); return \"NODE_DEND\"; \nbreak;\ncase 53: this.popState();yy.getLogger().debug('Lex: ]'); return \"NODE_DEND\"; \nbreak;\ncase 54: yy.getLogger().debug('Lexa: -)'); this.pushState('NODE');return 35; \nbreak;\ncase 55: yy.getLogger().debug('Lexa: (-'); this.pushState('NODE');return 35; \nbreak;\ncase 56: yy.getLogger().debug('Lexa: ))'); this.pushState('NODE');return 35; \nbreak;\ncase 57: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 58: yy.getLogger().debug('Lex: ((('); this.pushState('NODE');return 35; \nbreak;\ncase 59: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 60: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 61: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 62: yy.getLogger().debug('Lexc: >'); this.pushState('NODE');return 35; \nbreak;\ncase 63: yy.getLogger().debug('Lexa: (['); this.pushState('NODE');return 35; \nbreak;\ncase 64: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 65: this.pushState('NODE');return 35; \nbreak;\ncase 66: this.pushState('NODE');return 35; \nbreak;\ncase 67: this.pushState('NODE');return 35; \nbreak;\ncase 68: this.pushState('NODE');return 35; \nbreak;\ncase 69: this.pushState('NODE');return 35; \nbreak;\ncase 70: this.pushState('NODE');return 35; \nbreak;\ncase 71: this.pushState('NODE');return 35; \nbreak;\ncase 72: yy.getLogger().debug('Lexa: ['); this.pushState('NODE');return 35; \nbreak;\ncase 73: this.pushState('BLOCK_ARROW');yy.getLogger().debug('LEX ARR START');return 37; \nbreak;\ncase 74: yy.getLogger().debug('Lex: NODE_ID', yy_.yytext);return 31; \nbreak;\ncase 75: yy.getLogger().debug('Lex: EOF', yy_.yytext);return 8; \nbreak;\ncase 76: this.pushState(\"md_string\");\nbreak;\ncase 77: this.pushState(\"md_string\");\nbreak;\ncase 78: return \"NODE_DESCR\";\nbreak;\ncase 79: this.popState();\nbreak;\ncase 80: yy.getLogger().debug('Lex: Starting string');this.pushState(\"string\");\nbreak;\ncase 81: yy.getLogger().debug('LEX ARR: Starting string');this.pushState(\"string\");\nbreak;\ncase 82: yy.getLogger().debug('LEX: NODE_DESCR:', yy_.yytext); return \"NODE_DESCR\";\nbreak;\ncase 83:yy.getLogger().debug('LEX POPPING');this.popState();\nbreak;\ncase 84: yy.getLogger().debug('Lex: =>BAE'); this.pushState('ARROW_DIR'); \nbreak;\ncase 85: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (right): dir:',yy_.yytext);return \"DIR\"; \nbreak;\ncase 86: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (left):',yy_.yytext);return \"DIR\"; \nbreak;\ncase 87: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (x):',yy_.yytext); return \"DIR\"; \nbreak;\ncase 88: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (y):',yy_.yytext); return \"DIR\"; \nbreak;\ncase 89: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (up):',yy_.yytext); return \"DIR\"; \nbreak;\ncase 90: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (down):',yy_.yytext); return \"DIR\"; \nbreak;\ncase 91: yy_.yytext=']>';yy.getLogger().debug('Lex (ARROW_DIR end):',yy_.yytext);this.popState();this.popState();return \"BLOCK_ARROW_END\"; \nbreak;\ncase 92: yy.getLogger().debug('Lex: LINK', '#'+yy_.yytext+'#'); return 15; \nbreak;\ncase 93: yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 94: yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 95: yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 96: yy.getLogger().debug('Lex: START_LINK', yy_.yytext);this.pushState(\"LLABEL\");return 16; \nbreak;\ncase 97: yy.getLogger().debug('Lex: START_LINK', yy_.yytext);this.pushState(\"LLABEL\");return 16; \nbreak;\ncase 98: yy.getLogger().debug('Lex: START_LINK', yy_.yytext);this.pushState(\"LLABEL\");return 16; \nbreak;\ncase 99: this.pushState(\"md_string\");\nbreak;\ncase 100: yy.getLogger().debug('Lex: Starting string');this.pushState(\"string\"); return \"LINK_LABEL\";\nbreak;\ncase 101: this.popState(); yy.getLogger().debug('Lex: LINK', '#'+yy_.yytext+'#'); return 15; \nbreak;\ncase 102: this.popState(); yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 103: this.popState(); yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 104: yy.getLogger().debug('Lex: COLON', yy_.yytext); yy_.yytext=yy_.yytext.slice(1);return 27; \nbreak;\n}\n},\nrules: [/^(?:block-beta\\b)/,/^(?:block:)/,/^(?:block\\b)/,/^(?:[\\s]+)/,/^(?:[\\n]+)/,/^(?:((\\u000D\\u000A)|(\\u000A)))/,/^(?:columns\\s+auto\\b)/,/^(?:columns\\s+[\\d]+)/,/^(?:[\"][`])/,/^(?:[^`\"]+)/,/^(?:[`][\"])/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:space[:]\\d+)/,/^(?:space\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\s+)/,/^(?:DEFAULT\\s+)/,/^(?:\\w+\\s+)/,/^(?:[^\\n]*)/,/^(?:class\\s+)/,/^(?:(\\w+)+((,\\s*\\w+)*))/,/^(?:[^\\n]*)/,/^(?:style\\s+)/,/^(?:(\\w+)+((,\\s*\\w+)*))/,/^(?:[^\\n]*)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:end\\b\\s*)/,/^(?:\\(\\(\\()/,/^(?:\\)\\)\\))/,/^(?:[\\)]\\))/,/^(?:\\}\\})/,/^(?:\\})/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\()/,/^(?:\\]\\])/,/^(?:\\()/,/^(?:\\]\\))/,/^(?:\\\\\\])/,/^(?:\\/\\])/,/^(?:\\)\\])/,/^(?:[\\)])/,/^(?:\\]>)/,/^(?:[\\]])/,/^(?:-\\))/,/^(?:\\(-)/,/^(?:\\)\\))/,/^(?:\\))/,/^(?:\\(\\(\\()/,/^(?:\\(\\()/,/^(?:\\{\\{)/,/^(?:\\{)/,/^(?:>)/,/^(?:\\(\\[)/,/^(?:\\()/,/^(?:\\[\\[)/,/^(?:\\[\\|)/,/^(?:\\[\\()/,/^(?:\\)\\)\\))/,/^(?:\\[\\\\)/,/^(?:\\[\\/)/,/^(?:\\[\\\\)/,/^(?:\\[)/,/^(?:<\\[)/,/^(?:[^\\(\\[\\n\\-\\)\\{\\}\\s\\<\\>:=]+)/,/^(?:$)/,/^(?:[\"][`])/,/^(?:[\"][`])/,/^(?:[^`\"]+)/,/^(?:[`][\"])/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]+)/,/^(?:[\"])/,/^(?:\\]>\\s*\\()/,/^(?:,?\\s*right\\s*)/,/^(?:,?\\s*left\\s*)/,/^(?:,?\\s*x\\s*)/,/^(?:,?\\s*y\\s*)/,/^(?:,?\\s*up\\s*)/,/^(?:,?\\s*down\\s*)/,/^(?:\\)\\s*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*~~[\\~]+\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:[\"][`])/,/^(?:[\"])/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?::\\d+)/],\nconditions: {\"STYLE_DEFINITION\":{\"rules\":[28],\"inclusive\":false},\"STYLE_STMNT\":{\"rules\":[27],\"inclusive\":false},\"CLASSDEFID\":{\"rules\":[22],\"inclusive\":false},\"CLASSDEF\":{\"rules\":[20,21],\"inclusive\":false},\"CLASS_STYLE\":{\"rules\":[25],\"inclusive\":false},\"CLASS\":{\"rules\":[24],\"inclusive\":false},\"LLABEL\":{\"rules\":[99,100,101,102,103],\"inclusive\":false},\"ARROW_DIR\":{\"rules\":[85,86,87,88,89,90,91],\"inclusive\":false},\"BLOCK_ARROW\":{\"rules\":[76,81,84],\"inclusive\":false},\"NODE\":{\"rules\":[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],\"inclusive\":false},\"md_string\":{\"rules\":[9,10,78,79],\"inclusive\":false},\"space\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[12,13,82,83],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[34,35],\"inclusive\":false},\"acc_descr\":{\"rules\":[32],\"inclusive\":false},\"acc_title\":{\"rules\":[30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { clone } from 'es-toolkit/compat';\nimport * as configApi from '../../config.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport common from '../common/common.js';\nimport { clear as commonClear } from '../common/commonDb.js';\nimport type { Block, ClassDef } from './blockTypes.js';\n\n// Initialize the node database for simple lookups\nlet blockDatabase = new Map();\nlet edgeList: Block[] = [];\nlet edgeCount = new Map();\n\nconst COLOR_KEYWORD = 'color';\nconst FILL_KEYWORD = 'fill';\nconst BG_FILL = 'bgFill';\nconst STYLECLASS_SEP = ',';\nconst config = getConfig();\n\nlet classes = new Map();\nlet diagramId = '';\n\nconst sanitizeText = (txt: string) => common.sanitizeText(txt, config);\n\n/**\n * Called when the parser comes across a (style) class definition\n * @example classDef my-style fill:#f96;\n *\n * @param id - the id of this (style) class\n * @param styleAttributes - the string with 1 or more style attributes (each separated by a comma)\n */\nexport const addStyleClass = function (id: string, styleAttributes = '') {\n // create a new style class object with this id\n let foundClass = classes.get(id);\n if (!foundClass) {\n foundClass = { id: id, styles: [], textStyles: [] };\n classes.set(id, foundClass); // This is a classDef\n }\n if (styleAttributes !== undefined && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n // remove any trailing ;\n const fixedAttrib = attrib.replace(/([^;]*);/, '$1').trim();\n\n // replace some style keywords\n if (RegExp(COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n};\n\n/**\n * Called when the parser comes across a style definition\n * @example style my-block-id fill:#f96;\n *\n * @param id - the id of the block to style\n * @param styles - the string with 1 or more style attributes (each separated by a comma)\n */\nexport const addStyle2Node = function (id: string, styles = '') {\n const foundBlock = blockDatabase.get(id)!;\n if (styles !== undefined && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n};\n\n/**\n * Add a CSS/style class to the block with the given id.\n * If the block isn't already in the list of known blocks, add it.\n * Might be called by parser when a CSS/style class should be applied to a block\n *\n * @param itemIds - The id or a list of ids of the item(s) to apply the css class to\n * @param cssClassName - CSS class name\n */\nexport const setCssClass = function (itemIds: string, cssClassName: string) {\n itemIds.split(',').forEach(function (id: string) {\n let foundBlock = blockDatabase.get(id);\n if (foundBlock === undefined) {\n const trimmedId = id.trim();\n foundBlock = { id: trimmedId, type: 'na', children: [] } as Block;\n blockDatabase.set(trimmedId, foundBlock);\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n};\n\nconst populateBlockDatabase = (_blockList: Block[], parent: Block): void => {\n const blockList = _blockList.flat();\n const children = [];\n const columnSettingBlock = blockList.find((b) => b?.type === 'column-setting');\n const column = columnSettingBlock?.columns ?? -1;\n for (const block of blockList) {\n if (\n typeof column === 'number' &&\n column > 0 &&\n block.type !== 'column-setting' &&\n typeof block.widthInColumns === 'number' &&\n block.widthInColumns > column\n ) {\n log.warn(\n `Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`\n );\n }\n if (block.label) {\n block.label = sanitizeText(block.label);\n }\n if (block.type === 'classDef') {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === 'applyClass') {\n setCssClass(block.id, block?.styleClass ?? '');\n continue;\n }\n if (block.type === 'applyStyles') {\n if (block?.stylesStr) {\n addStyle2Node(block.id, block?.stylesStr);\n }\n continue;\n }\n if (block.type === 'column-setting') {\n parent.columns = block.columns ?? -1;\n } else if (block.type === 'edge') {\n const count = (edgeCount.get(block.id) ?? 0) + 1;\n edgeCount.set(block.id, count);\n block.id = count + '-' + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === 'composite') {\n block.label = '';\n // log.debug('abc89 composite', block);\n } else {\n block.label = block.id;\n }\n }\n const existingBlock = blockDatabase.get(block.id);\n\n if (existingBlock === undefined) {\n blockDatabase.set(block.id, block);\n } else {\n // Add newer relevant data to aggregated node\n if (block.type !== 'na') {\n existingBlock.type = block.type;\n }\n if (block.label !== block.id) {\n existingBlock.label = block.label;\n }\n }\n\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === 'space') {\n // log.debug('abc95 space', block);\n const w = block.width ?? 1;\n for (let j = 0; j < w; j++) {\n const newBlock = clone(block);\n newBlock.id = newBlock.id + '-' + j;\n blockDatabase.set(newBlock.id, newBlock);\n children.push(newBlock);\n }\n } else if (existingBlock === undefined) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n};\n\nlet blocks: Block[] = [];\nlet rootBlock = { id: 'root', type: 'composite', children: [], columns: -1 } as Block;\n\nconst clear = (): void => {\n log.debug('Clear called');\n commonClear();\n rootBlock = { id: 'root', type: 'composite', children: [], columns: -1 } as Block;\n blockDatabase = new Map([['root', rootBlock]]);\n blocks = [];\n classes = new Map();\n\n edgeList = [];\n edgeCount = new Map();\n diagramId = '';\n};\n\nexport function typeStr2Type(typeStr: string) {\n log.debug('typeStr2Type', typeStr);\n switch (typeStr) {\n case '[]':\n return 'square';\n case '()':\n log.debug('we have a round');\n return 'round';\n case '(())':\n return 'circle';\n case '>]':\n return 'rect_left_inv_arrow';\n case '{}':\n return 'diamond';\n case '{{}}':\n return 'hexagon';\n case '([])':\n return 'stadium';\n case '[[]]':\n return 'subroutine';\n case '[()]':\n return 'cylinder';\n case '((()))':\n return 'doublecircle';\n case '[//]':\n return 'lean_right';\n case '[\\\\\\\\]':\n return 'lean_left';\n case '[/\\\\]':\n return 'trapezoid';\n case '[\\\\/]':\n return 'inv_trapezoid';\n case '<[]>':\n return 'block_arrow';\n default:\n return 'na';\n }\n}\n\nexport function edgeTypeStr2Type(typeStr: string): string {\n log.debug('typeStr2Type', typeStr);\n switch (typeStr) {\n case '==':\n return 'thick';\n default:\n return 'normal';\n }\n}\n\nexport function edgeStrToEdgeData(typeStr: string): string {\n const lastChar = typeStr.trim().slice(-1);\n switch (lastChar) {\n case 'x':\n return 'arrow_cross';\n case 'o':\n return 'arrow_circle';\n case '>':\n return 'arrow_point';\n default:\n return '';\n }\n}\n\nexport function edgeStrToEdgeStartData(typeStr: string): string {\n const firstChar = typeStr.trim().charAt(0);\n switch (firstChar) {\n case 'x':\n return 'arrow_cross';\n case 'o':\n return 'arrow_circle';\n case '<':\n return 'arrow_point';\n default:\n return 'arrow_open';\n }\n}\n\nexport function edgeStrToThickness(typeStr: string): string {\n return typeStr.includes('==') ? 'thick' : 'normal';\n}\n\nexport function edgeStrToPattern(typeStr: string): string {\n if (typeStr.includes('.-')) {\n return 'dotted';\n }\n return 'solid';\n}\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;\n};\n\nconst setHierarchy = (block: Block[]): void => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n};\n\nconst getColumns = (blockId: string): number => {\n const block = blockDatabase.get(blockId);\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n};\n\n/**\n * Returns all the blocks as a flat array\n * @returns\n */\nconst getBlocksFlat = () => {\n return [...blockDatabase.values()];\n};\n/**\n * Returns the hierarchy of blocks\n * @returns\n */\nconst getBlocks = () => {\n return blocks || [];\n};\n\nconst getEdges = () => {\n return edgeList;\n};\nconst getBlock = (id: string) => {\n return blockDatabase.get(id);\n};\n\nconst setBlock = (block: Block) => {\n blockDatabase.set(block.id, block);\n};\n\nconst setDiagramId = (id: string) => {\n diagramId = id;\n};\n\nconst getDiagramId = () => diagramId;\n\nconst getLogger = () => log;\n\n/**\n * Return all of the style classes\n */\nexport const getClasses = function () {\n return classes;\n};\n\nconst db = {\n getConfig: () => configApi.getConfig().block,\n typeStr2Type: typeStr2Type,\n edgeTypeStr2Type: edgeTypeStr2Type,\n edgeStrToEdgeData,\n edgeStrToEdgeStartData,\n edgeStrToThickness,\n edgeStrToPattern,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses,\n clear,\n generateId,\n setDiagramId,\n getDiagramId,\n} as const;\n\nexport type BlockDB = typeof db & DiagramDB;\nexport default db;\n", "import * as khroma from 'khroma';\nimport { getIconStyles } from '../globalStyles.js';\n\n/** Returns the styles given options */\nexport interface BlockChartStyleOptions {\n arrowheadColor: string;\n border2: string;\n clusterBkg: string;\n clusterBorder: string;\n edgeLabelBackground: string;\n fontFamily: string;\n lineColor: string;\n mainBkg: string;\n nodeBorder: string;\n nodeTextColor: string;\n tertiaryColor: string;\n textColor: string;\n titleColor: string;\n}\n\nconst fade = (color: string, opacity: number) => {\n // @ts-ignore TODO: incorrect types from khroma\n const channel = khroma.channel;\n\n const r = channel(color, 'r');\n const g = channel(color, 'g');\n const b = channel(color, 'b');\n\n // @ts-ignore incorrect types from khroma\n return khroma.rgba(r, g, b, opacity);\n};\n\nconst getStyles = (options: BlockChartStyleOptions) =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \\`

\\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg, 0.5)};\n fill: ${fade(options.clusterBkg, 0.5)};\n stroke: ${fade(options.clusterBorder, 0.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`;\n\nexport default getStyles;\n", "/** Setup arrow head and define the marker. The result is appended to the svg. */\n\nimport { log } from '../logger.js';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 6)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst lollipop = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopStart')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('stroke', 'black')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopEnd')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('stroke', 'black')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n};\nconst point = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 6)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 4.5)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'strokeWidth')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semantic free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb,\n};\nexport default insertMarkers;\n", "import type { BlockDB } from './blockDB.js';\nimport type { Block } from './blockTypes.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\n// TODO: This means the number we provide in diagram's config will never be used. Should fix.\nconst padding = getConfig()?.block?.padding ?? 8;\n\ninterface BlockPosition {\n px: number;\n py: number;\n}\n\nexport function calculateBlockPosition(columns: number, position: number): BlockPosition {\n // log.debug('calculateBlockPosition abc89', columns, position);\n // Ensure that columns is a positive integer\n if (columns === 0 || !Number.isInteger(columns)) {\n throw new Error('Columns must be an integer !== 0.');\n }\n\n // Ensure that position is a non-negative integer\n if (position < 0 || !Number.isInteger(position)) {\n throw new Error('Position must be a non-negative integer.' + position);\n }\n\n if (columns < 0) {\n // Auto columns is set\n return { px: position, py: 0 };\n }\n if (columns === 1) {\n // Auto columns is set\n return { px: 0, py: position };\n }\n // Calculate posX and posY\n const px = position % columns;\n const py = Math.floor(position / columns);\n // log.debug('calculateBlockPosition abc89', columns, position, '=> (', px, py, ')');\n return { px, py };\n}\n\nconst getMaxChildSize = (block: Block) => {\n let maxWidth = 0;\n let maxHeight = 0;\n // find max width of children\n // log.debug('getMaxChildSize abc95 (start) parent:', block.id);\n for (const child of block.children) {\n const { width, height, x, y } = child.size ?? { width: 0, height: 0, x: 0, y: 0 };\n log.debug(\n 'getMaxChildSize abc95 child:',\n child.id,\n 'width:',\n width,\n 'height:',\n height,\n 'x:',\n x,\n 'y:',\n y,\n child.type\n );\n if (child.type === 'space') {\n continue;\n }\n const normalizedWidth = width / (child.widthInColumns ?? 1);\n if (normalizedWidth > maxWidth) {\n maxWidth = normalizedWidth;\n }\n if (height > maxHeight) {\n maxHeight = height;\n }\n }\n return { width: maxWidth, height: maxHeight };\n};\n\nfunction setBlockSizes(block: Block, db: BlockDB, siblingWidth = 0, siblingHeight = 0) {\n log.debug(\n 'setBlockSizes abc95 (start)',\n block.id,\n block?.size?.x,\n 'block width =',\n block?.size,\n 'siblingWidth',\n siblingWidth\n );\n if (!block?.size?.width) {\n block.size = {\n width: siblingWidth,\n height: siblingHeight,\n x: 0,\n y: 0,\n };\n }\n let maxWidth = 0;\n let maxHeight = 0;\n\n if (block.children?.length > 0) {\n for (const child of block.children) {\n setBlockSizes(child, db);\n }\n // find max width of children\n const childSize = getMaxChildSize(block);\n maxWidth = childSize.width;\n maxHeight = childSize.height;\n log.debug('setBlockSizes abc95 maxWidth of', block.id, ':s children is ', maxWidth, maxHeight);\n\n // set width of block to max width of children\n for (const child of block.children) {\n if (child.size) {\n log.debug(\n `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`\n );\n child.size.width =\n maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1);\n child.size.height = maxHeight;\n child.size.x = 0;\n child.size.y = 0;\n\n log.debug(\n `abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`\n );\n }\n }\n for (const child of block.children) {\n setBlockSizes(child, db, maxWidth, maxHeight);\n }\n\n const columns = block.columns ?? -1;\n let numItems = 0;\n for (const child of block.children) {\n numItems += child.widthInColumns ?? 1;\n }\n\n // The width and height in number blocks\n let xSize = block.children.length;\n if (columns > 0 && columns < numItems) {\n xSize = columns;\n }\n\n const ySize = Math.ceil(numItems / xSize);\n\n let width = xSize * (maxWidth + padding) + padding;\n let height = ySize * (maxHeight + padding) + padding;\n // If maxWidth\n if (width < siblingWidth) {\n log.debug(\n `Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`\n );\n width = siblingWidth;\n height = siblingHeight;\n const childWidth = (siblingWidth - xSize * padding - padding) / xSize;\n const childHeight = (siblingHeight - ySize * padding - padding) / ySize;\n // cspell:ignore indata\n log.debug('Size indata abc88', block.id, 'childWidth', childWidth, 'maxWidth', maxWidth);\n log.debug('Size indata abc88', block.id, 'childHeight', childHeight, 'maxHeight', maxHeight);\n log.debug('Size indata abc88 xSize', xSize, 'padding', padding);\n\n // set width of block to max width of children\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n child.size.height = childHeight;\n child.size.x = 0;\n child.size.y = 0;\n }\n }\n }\n\n log.debug(\n `abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${\n block.children.length\n } width=${Math.max(width, block.size?.width || 0)}`\n );\n if (width < (block?.size?.width || 0)) {\n width = block?.size?.width || 0;\n\n // Grow children to fit\n const num = columns > 0 ? Math.min(block.children.length, columns) : block.children.length;\n if (num > 0) {\n const childWidth = (width - num * padding - padding) / num;\n log.debug('abc95 (growing to fit) width', block.id, width, block.size?.width, childWidth);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n }\n }\n }\n }\n block.size = {\n width,\n height,\n x: 0,\n y: 0,\n };\n }\n\n log.debug(\n 'setBlockSizes abc94 (done)',\n block.id,\n block?.size?.x,\n block?.size?.width,\n block?.size?.y,\n block?.size?.height\n );\n}\n\nfunction layoutBlocks(block: Block, db: BlockDB) {\n log.debug(\n `abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n const columns = block.columns ?? -1;\n log.debug('layoutBlocks columns abc95', block.id, '=>', columns, block);\n if (\n block.children && // find max width of children\n block.children.length > 0\n ) {\n const width = block?.children[0]?.size?.width ?? 0;\n const widthOfChildren = block.children.length * width + (block.children.length - 1) * padding;\n\n log.debug('widthOfChildren 88', widthOfChildren, 'posX');\n\n // Pre-compute per-row max heights so y-positioning accounts for rows of different heights\n const rowHeights = new Map();\n {\n let colPos = 0;\n for (const child of block.children) {\n if (!child.size) {\n continue;\n }\n const { py } = calculateBlockPosition(columns, colPos);\n const currentMax = rowHeights.get(py) ?? 0;\n if (child.size.height > currentMax) {\n rowHeights.set(py, child.size.height);\n }\n let filled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n filled = Math.min(filled, columns - (colPos % columns));\n }\n colPos += filled;\n }\n }\n const rowYOffsets = new Map();\n {\n let offset = 0;\n const rows = [...rowHeights.keys()].sort((a, b) => a - b);\n for (const row of rows) {\n rowYOffsets.set(row, offset);\n offset += (rowHeights.get(row) ?? 0) + padding;\n }\n }\n\n // let first = true;\n let columnPos = 0;\n log.debug('abc91 block?.size?.x', block.id, block?.size?.x);\n let startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n let rowPos = 0;\n for (const child of block.children) {\n const parent = block;\n\n if (!child.size) {\n continue;\n }\n const { width, height } = child.size;\n const { px, py } = calculateBlockPosition(columns, columnPos);\n if (py != rowPos) {\n rowPos = py;\n startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n log.debug('New row in layout for block', block.id, ' and child ', child.id, rowPos);\n }\n log.debug(\n `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${parent?.size?.x},${parent?.size?.y}) parent: ${parent.id} width: ${width}${padding}`\n );\n if (parent.size) {\n const halfWidth = width / 2;\n child.size.x = startingPosX + padding + halfWidth;\n\n // cspell:ignore pyid\n log.debug(\n `abc91 layout blocks (calc) px, pyid:${\n child.id\n } startingPos=X${startingPosX} new startingPosX${\n child.size.x\n } ${halfWidth} padding=${padding} width=${width} halfWidth=${halfWidth} => x:${\n child.size.x\n } y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${\n (width * (child?.widthInColumns ?? 1)) / 2\n }`\n );\n\n startingPosX = child.size.x + halfWidth;\n\n const rowYOffset = rowYOffsets.get(py) ?? 0;\n const rowHeight = rowHeights.get(py) ?? height;\n child.size.y =\n parent.size.y - parent.size.height / 2 + rowYOffset + rowHeight / 2 + padding;\n\n log.debug(\n `abc88 layout blocks (calc) px, pyid:${\n child.id\n }startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${\n child.widthInColumns\n }(width * (child?.w || 1)) / 2${(width * (child?.widthInColumns ?? 1)) / 2}`\n );\n }\n if (child.children) {\n layoutBlocks(child, db);\n }\n let columnsFilled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n // Make sure overflowing lines do not affect later lines\n columnsFilled = Math.min(columnsFilled, columns - (columnPos % columns));\n }\n columnPos += columnsFilled;\n log.debug('abc88 columnsPos', child, columnPos);\n }\n }\n log.debug(\n `layout blocks (<==layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n}\n\nfunction findBounds(\n block: Block,\n { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }\n) {\n if (block.size && block.id !== 'root') {\n const { x, y, width, height } = block.size;\n if (x - width / 2 < minX) {\n minX = x - width / 2;\n }\n if (y - height / 2 < minY) {\n minY = y - height / 2;\n }\n if (x + width / 2 > maxX) {\n maxX = x + width / 2;\n }\n if (y + height / 2 > maxY) {\n maxY = y + height / 2;\n }\n }\n if (block.children) {\n for (const child of block.children) {\n ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY }));\n }\n }\n return { minX, minY, maxX, maxY };\n}\n\nexport function layout(db: BlockDB) {\n const root = db.getBlock('root');\n if (!root) {\n return;\n }\n\n setBlockSizes(root, db, 0, 0);\n layoutBlocks(root, db);\n // Position blocks relative to parents\n // positionBlock(root, root, db);\n log.debug('getBlocks', JSON.stringify(root, null, 2));\n\n const { minX, minY, maxX, maxY } = findBounds(root);\n\n const height = maxY - minY;\n const width = maxX - minX;\n return { x: minX, y: minY, width, height };\n}\n", "import { getEffectiveHtmlLabels } from '../config.js';\nimport { getConfig } from '../diagram-api/diagramAPI.js';\nimport { createText } from '../rendering-util/createText.js';\n\n/**\n * @param {import('../types.js').D3Selection} element - The parent element to which the label will be appended.\n * @param {string | [string] | undefined} _vertexText - The text content of the label.\n * @param {string} style\n * @param {boolean} [isTitle] - If `true`, style this as a title label, else as a normal label.\n * @param {boolean} [isNode] - If `true`, style this as a node label, else as an edge label.\n * @deprecated svg-util/createText instead\n *\n * @example\n *\n * If `getEffectiveHtmlLabels(getConfig())` is `true`, you must reset the width\n * and height of the created label after creation, like this:\n *\n * ```js\n * const labelElement = await createLabel(parent, ... );\n * let slBox = labelElement.getBBox();\n * if (useHtmlLabels) {\n * const div = labelElement.children[0];\n * const dv = select(labelElement);\n * slBox = div.getBoundingClientRect();\n * dv.attr('width', slBox.width);\n * dv.attr('height', slBox.height);\n * }\n * parent.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n * ```\n */\nconst createLabel = async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') {\n vertexText = vertexText[0];\n }\n\n const config = getConfig();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY,\n },\n config\n );\n};\n\nexport default createLabel;\n", "import type { SVG } from '../diagram-api/types.js';\nimport { log } from '../logger.js';\nimport type { EdgeData } from '../types.js';\n/**\n * Adds SVG markers to a path element based on the arrow types specified in the edge.\n *\n * @param svgPath - The SVG path element to add markers to.\n * @param edge - The edge data object containing the arrow types.\n * @param url - The URL of the SVG marker definitions.\n * @param id - The ID prefix for the SVG marker definitions.\n * @param diagramType - The type of diagram being rendered.\n */\nexport const addEdgeMarkers = (\n svgPath: SVG,\n edge: Pick,\n url: string,\n id: string,\n diagramType: string\n) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, 'start', edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, 'end', edge.arrowTypeEnd, url, id, diagramType);\n }\n};\n\nconst arrowTypesMap = {\n arrow_cross: 'cross',\n arrow_point: 'point',\n arrow_barb: 'barb',\n arrow_circle: 'circle',\n aggregation: 'aggregation',\n extension: 'extension',\n composition: 'composition',\n dependency: 'dependency',\n lollipop: 'lollipop',\n} as const;\n\nconst addEdgeMarker = (\n svgPath: SVG,\n position: 'start' | 'end',\n arrowType: string,\n url: string,\n id: string,\n diagramType: string\n) => {\n const endMarkerType = arrowTypesMap[arrowType as keyof typeof arrowTypesMap];\n\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return; // unknown arrow type, ignore\n }\n\n const suffix = position === 'start' ? 'Start' : 'End';\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n};\n", "import { log } from '../logger.js';\nimport createLabel from './createLabel.js';\nimport { createText } from '../rendering-util/createText.js';\nimport { computeLabelTransform } from '../rendering-util/labelTransform.js';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../config.js';\nimport utils from '../utils.js';\nimport { getUrl } from '../diagrams/common/common.js';\nimport { getLineFunctionsWithOffset } from '../utils/lineWithOffset.js';\nimport { getSubGraphTitleMargins } from '../utils/subGraphTitleMargins.js';\nimport { addEdgeMarkers } from './edgeMarker.js';\n\nlet edgeLabels = {};\nlet terminalLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\n\nexport const insertEdgeLabel = async (elem, edge) => {\n const config = getConfig();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n\n // Create the actual text element\n const isMarkdown = edge.labelType === 'markdown';\n const labelElement = await createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n // TODO: The old code only set addSvgBackground when using markdown, but\n // this function is only used by block diagrams which never use markdown.\n addSvgBackground: isMarkdown,\n isNode: false,\n markdown: isMarkdown,\n // If using markdown, wrap using default width\n width: isMarkdown ? undefined : Number.POSITIVE_INFINITY,\n },\n config\n );\n\n label.node().appendChild(labelElement);\n\n let bbox = labelElement.getBBox();\n let transformBbox = bbox;\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n transformBbox = bbox;\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n } else {\n const textEl = select(labelElement).select('text').node();\n if (textEl && typeof textEl.getBBox === 'function') {\n transformBbox = textEl.getBBox();\n }\n }\n label.attr('transform', computeLabelTransform(transformBbox, useHtmlLabels));\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n const startLabelElement = await createLabel(inner, edge.startLabelLeft, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n const startLabelElement = await createLabel(inner, edge.startLabelRight, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n // TODO: Remove? `inner` is not used\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n const endLabelElement = await createLabel(endEdgeLabelLeft, edge.endLabelLeft, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n // TODO: Remove? `inner` is not used\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n const endLabelElement = await createLabel(\n endEdgeLabelRight,\n edge.endLabelRight,\n edge.labelStyle\n );\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\n\n/**\n * @param {any} fo\n * @param {any} value\n */\nfunction setTerminalWidth(fo, value) {\n if (getEffectiveHtmlLabels(getConfig()) && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.debug('Moving label abc88 ', edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // // debugger;\n const pos = utils.calcLabelPosition(path);\n log.debug(\n 'Moving label ' + edge.label + ' from (',\n x,\n ',',\n y,\n ') to (',\n pos.x,\n ',',\n pos.y,\n ') abc88'\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr('transform', `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n\n //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n};\n\nconst outsideNode = (node, point) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n // const dy = Math.abs(y - insidePoint.y);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n // Intersection is top or bottom of rect.\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res); // cspell: disable-line\n\n return res;\n } else {\n // Intersection on sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n/**\n * This function will page a path and node where the last point(s) in the path is inside the node\n * and return an update path ending by the border of the node.\n *\n * @param {Array} _points\n * @param {any} boundaryNode\n * @returns {Array} Points\n */\nconst cutPathAtIntersect = (_points, boundaryNode) => {\n log.debug('abc88 cutPathAtIntersect', _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n // check if point is inside the boundary rect\n if (!outsideNode(boundaryNode, point) && !isInside) {\n // First point inside the rect found\n // Calc the intersection coord between the point and the last point outside the rect\n const inter = intersection(boundaryNode, lastPointOutside, point);\n\n // // Check case where the intersection is the same as the last point\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // // if (!pointPresent) {\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n\n isInside = true;\n } else {\n // Outside\n lastPointOutside = point;\n // points.push(point);\n if (!isInside) {\n points.push(point);\n }\n }\n });\n return points;\n};\n\nexport const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug('abc88 InsertEdge: edge=', edge, 'e=', e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n if (head?.intersect && tail?.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n\n if (edge.toCluster) {\n log.debug('to cluster abc88', clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.debug('from cluster abc88', clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n let curve = curveBasis;\n // Currently only flowcharts get the curve from the settings, perhaps this should\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\n // have not been thought through\n if (edge.curve && (diagramType === 'graph' || diagramType === 'flowchart')) {\n curve = edge.curve;\n }\n\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n\n // Construct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n case 'invisible':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\n .attr('style', edge.style);\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach((point) => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n // // TODO: Can we load this config only from the rendered graph type?\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n", "import type { Direction } from '../../src/diagrams/block/blockTypes.js';\n\nconst expandAndDeduplicateDirections = (directions: Direction[]) => {\n const uniqueDirections = new Set();\n\n for (const direction of directions) {\n switch (direction) {\n case 'x':\n uniqueDirections.add('right');\n uniqueDirections.add('left');\n break;\n case 'y':\n uniqueDirections.add('up');\n uniqueDirections.add('down');\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n\n return uniqueDirections;\n};\nexport const getArrowPoints = (\n duplicatedDirections: Direction[],\n bbox: { width: number; height: number },\n node: any,\n totalWidth?: number\n) => {\n // Expand and deduplicate the provided directions.\n // for instance: x, right => right, left\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n\n // Factor to divide height for some calculations.\n const f = 2;\n\n // Calculated height of the bounding box, accounting for node padding.\n const height = bbox.height + 2 * node.padding;\n // Midpoint calculation based on height.\n const midpoint = height / f;\n // Calculated width of the bounding box, accounting for additional width and node padding.\n // When totalWidth is provided\n const width = totalWidth ?? bbox.width + 2 * midpoint + node.padding;\n // Padding to use, half of the node padding.\n const padding = node.padding / 2;\n\n if (\n directions.has('right') &&\n directions.has('left') &&\n directions.has('up') &&\n directions.has('down')\n ) {\n // SQUARE\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: (-2 * height) / 3 },\n { x: width, y: -height },\n\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n\n // Left\n { x: 0, y: -height },\n { x: 0, y: (-2 * height) / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 },\n ];\n }\n if (directions.has('right') && directions.has('left') && directions.has('up')) {\n // RECTANGLE_VERTICAL (Top Open)\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 },\n ];\n }\n if (directions.has('right') && directions.has('left') && directions.has('down')) {\n // RECTANGLE_VERTICAL (Bottom Open)\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 },\n ];\n }\n if (directions.has('right') && directions.has('up') && directions.has('down')) {\n // RECTANGLE_HORIZONTAL (Right Open)\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height },\n ];\n }\n if (directions.has('left') && directions.has('up') && directions.has('down')) {\n // RECTANGLE_HORIZONTAL (Left Open)\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height },\n ];\n }\n if (directions.has('right') && directions.has('left')) {\n // HORIZONTAL_LINE\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 },\n ];\n }\n if (directions.has('up') && directions.has('down')) {\n // VERTICAL_LINE\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding },\n ];\n }\n if (directions.has('right') && directions.has('up')) {\n // ANGLE_RT\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height },\n ];\n }\n if (directions.has('right') && directions.has('down')) {\n // ANGLE_RB\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height },\n ];\n }\n if (directions.has('left') && directions.has('up')) {\n // ANGLE_LT\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height },\n ];\n }\n if (directions.has('left') && directions.has('down')) {\n // ANGLE_LB\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height },\n ];\n }\n if (directions.has('right')) {\n // ARROW_RIGHT\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n ];\n }\n if (directions.has('left')) {\n // ARROW_LEFT\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 },\n ];\n }\n if (directions.has('up')) {\n // ARROW_TOP\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n ];\n }\n if (directions.has('down')) {\n // ARROW_BOTTOM\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding },\n ];\n }\n\n // POINT\n return [{ x: 0, y: 0 }];\n};\n", "/**\n * @param node\n * @param point\n */\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n\nexport default intersectNode;\n", "/**\n * @param node\n * @param rx\n * @param ry\n * @param point\n */\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: https://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n", "import intersectEllipse from './intersect-ellipse.js';\n\n/**\n * @param node\n * @param rx\n * @param point\n */\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n", "/**\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\n *\n * @param p1\n * @param p2\n * @param q1\n * @param q2\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\n/**\n * @param r1\n * @param r2\n */\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n", "/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line.js';\n\nexport default intersectPolygon;\n\n/**\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\n * that it has the shape specified by polygon.\n *\n * @param node\n * @param polyPoints\n * @param point\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n", "const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // https://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n", "/*\n * Borrowed with love from dagre-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n", "import createLabel from '../createLabel.js';\nimport { createText } from '../../rendering-util/createText.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../../config.js';\nimport { select } from 'd3';\nimport { sanitizeText } from '../../diagrams/common/common.js';\nimport { decodeEntities } from '../../utils.js';\nimport { configureLabelImages } from '../../rendering-util/rendering-elements/shapes/labelImageUtils.js';\n\nexport const labelHelper = async (parent, node, _classes, isNode) => {\n const config = getConfig();\n let classes;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(config);\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\n\n // Replace labelText with default value if undefined\n let labelText;\n if (node.labelText === undefined) {\n labelText = '';\n } else {\n labelText = typeof node.labelText === 'string' ? node.labelText : node.labelText[0];\n }\n\n let text;\n if (node.labelType === 'markdown') {\n // text = textNode;\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config),\n {\n useHtmlLabels,\n width: node.width || config.flowchart.wrappingWidth,\n classes: 'markdown-node-label',\n },\n config\n );\n } else {\n text = await createLabel(\n label,\n sanitizeText(decodeEntities(labelText), config),\n node.labelStyle,\n false,\n isNode\n );\n }\n // Get the size of the label\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n\n if (getEffectiveHtmlLabels(config)) {\n const div = text.children[0];\n const dv = select(text);\n\n // if there are images, need to wait for them to load before getting the bounding box\n await configureLabelImages(div, labelText);\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center the label\n if (useHtmlLabels) {\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n } else {\n label.attr('transform', 'translate(' + 0 + ', ' + -bbox.height / 2 + ')');\n }\n if (node.centerLabel) {\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n }\n label.insert('rect', ':first-child');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\n */\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n", "import { updateNodeBounds, labelHelper } from './util.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../../config.js';\nimport intersect from '../intersect/index.js';\n\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig());\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n 'node ' + node.classes,\n true\n );\n\n log.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n", "import { select } from 'd3';\nimport { getConfig } from '../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../config.js';\nimport { log } from '../logger.js';\nimport { getArrowPoints } from './blockArrowHelper.js';\nimport createLabel from './createLabel.js';\nimport intersect from './intersect/index.js';\nimport note from './shapes/note.js';\nimport { insertPolygonShape, labelHelper, updateNodeBounds } from './shapes/util.js';\n\nconst formatClass = (str) => {\n if (str) {\n return ' ' + str;\n }\n return '';\n};\nconst getClassesFromNode = (node, otherClasses) => {\n return `${otherClasses ? otherClasses : 'node default'}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n};\n\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n log.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr('style', node.style);\n updateNodeBounds(node, questionElem);\n\n node.intersect = function (point) {\n log.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst choice = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n const choice = shapeSvg.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n );\n // center the circle around its coordinate\n choice.attr('class', 'state-start').attr('r', 7).attr('width', 28).attr('height', 28);\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.circle(node, 14, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const f = 4;\n const h = node.positioned ? node.height : bbox.height + node.padding;\n const m = h / f;\n const w = node.positioned ? node.width : bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr('style', node.style);\n updateNodeBounds(node, hex);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst block_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, undefined, true);\n\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const naturalW = bbox.width + 2 * m + node.padding;\n // Only use the layout-computed width when the block explicitly spans multiple columns\n const isSpanning = node.positioned && (node.widthInColumns ?? 1) > 1 && node.width > naturalW;\n const w = isSpanning ? node.width : naturalW;\n\n const points = getArrowPoints(node.directions, bbox, node, w);\n\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr('style', node.style);\n updateNodeBounds(node, blockArrow);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n\n node.width = w + h;\n node.height = h;\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('style', node.style)\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjusted value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - node.y > 0) {\n y = -y;\n }\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n 'node ' + node.classes + ' ' + node.class,\n true\n );\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // console.log('Rect node:', node, 'bbox:', bbox, 'halfPadding:', halfPadding, 'node.padding:', node.padding);\n // const totalWidth = bbox.width + node.padding * 2;\n // const totalHeight = bbox.height + node.padding * 2;\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect\n .attr('class', 'basic label-container')\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst composite = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n 'node ' + node.classes,\n true\n );\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // const totalWidth = bbox.width + node.padding * 2;\n // const totalHeight = bbox.height + node.padding * 2;\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect\n .attr('class', 'basic cluster composite label-container')\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, 'label', true);\n\n log.trace('Classes = ', node.class);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Hide the rect we are only after the label\n const totalWidth = 0;\n const totalHeight = 0;\n rect.attr('width', totalWidth).attr('height', totalHeight);\n shapeSvg.attr('class', 'label edgeLabel');\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * @param rect\n * @param borders\n * @param totalWidth\n * @param totalHeight\n */\nfunction applyNodePropertyBorders(rect, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes('t')) {\n log.debug('add top border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('r')) {\n log.debug('add right border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes('b')) {\n log.debug('add bottom border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('l')) {\n log.debug('add left border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect.attr('stroke-dasharray', strokeDashArray.join(' '));\n}\n\nconst rectWithTitle = async (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n // const text2 = typeof text2prim === 'object' ? text2prim[0] : text2prim;\n\n let title = '';\n if (typeof text2 === 'object') {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info('Label text abc79', title, text2, typeof text2 === 'object');\n\n const text = await createLabel(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = await createLabel(\n label,\n textRows.join ? textRows.join('
') : textRows,\n node.labelStyle,\n true,\n true\n );\n\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // log.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('style', node.style)\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert('g', ':first-child');\n const outerCircle = circleGroup.insert('circle');\n const innerCircle = circleGroup.insert('circle');\n\n circleGroup.attr('class', node.class);\n\n // center the circle around its coordinate\n outerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding + gap)\n .attr('width', bbox.width + node.padding + gap * 2)\n .attr('height', bbox.height + node.padding + gap * 2);\n\n innerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('DoubleCircle main');\n\n updateNodeBounds(node, outerCircle);\n\n node.intersect = function (point) {\n log.info('DoubleCircle intersect', node, bbox.width / 2 + halfPadding + gap, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = async (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n\n // 1. Create the labels\n const interfaceLabelText = node.classData.annotations[0]\n ? '\u00AB' + node.classData.annotations[0] + '\u00BB'\n : '';\n const interfaceLabel = await createLabel(\n labelContainer,\n interfaceLabelText,\n node.labelStyle,\n true,\n true\n );\n let interfaceBBox = interfaceLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr('width', interfaceBBox.width);\n dv.attr('height', interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n let classTitleString = node.classData.label;\n\n if (node.classData.type !== undefined && node.classData.type !== '') {\n if (getEffectiveHtmlLabels(getConfig())) {\n classTitleString += '<' + node.classData.type + '>';\n } else {\n classTitleString += '<' + node.classData.type + '>';\n }\n }\n const classTitleLabel = await createLabel(\n labelContainer,\n classTitleString,\n node.labelStyle,\n true,\n true\n );\n select(classTitleLabel).attr('class', 'classTitle');\n let classTitleBBox = classTitleLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr('width', classTitleBBox.width);\n dv.attr('height', classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig())) {\n parsedText = parsedText.replace(//g, '>');\n }\n const lbl = await createLabel(\n labelContainer,\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n const classMethods = [];\n node.classData.methods.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig())) {\n displayText = displayText.replace(//g, '>');\n }\n const lbl = await createLabel(\n labelContainer,\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n let diffX = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' + ((-1 * maxWidth) / 2 + diffX) + ', ' + (-1 * maxHeight) / 2 + ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Position the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n //get the height of the bounding box of each member if exists\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n\n verticalPos += lineHeight;\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n\n rect\n .attr('style', node.style)\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box,\n};\n\nlet nodeElems = {};\n\nexport const insertNode = async (elem, node, renderOptions) => {\n let newEl;\n let el;\n\n // Add link when appropriate\n if (node.link) {\n let target;\n if (getConfig().securityLevel === 'sandbox') {\n target = '_top';\n } else if (node.linkTarget) {\n target = node.linkTarget || '_blank';\n }\n newEl = elem.insert('svg:a').attr('xlink:href', node.link).attr('target', target);\n el = await shapes[node.shape](newEl, node, renderOptions);\n } else {\n el = await shapes[node.shape](elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n if (node.class) {\n el.attr('class', 'node default ' + node.class);\n }\n\n nodeElems[node.id] = newEl;\n\n if (node.haveCallback) {\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\n }\n return newEl;\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n", "import * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { getConfig } from '../../config.js';\nimport { insertEdge, insertEdgeLabel, positionEdgeLabel } from '../../dagre-wrapper/edges.js';\nimport { insertNode, positionNode } from '../../dagre-wrapper/nodes.js';\nimport { getStylesFromArray } from '../../utils.js';\nimport type { BlockDB } from './blockDB.js';\nimport type { Block } from './blockTypes.js';\n\nfunction getNodeFromBlock(block: Block, db: BlockDB, positioned = false) {\n const vertex = block;\n\n let classStr = 'default';\n if ((vertex?.classes?.length || 0) > 0) {\n classStr = (vertex?.classes ?? []).join(' ');\n }\n classStr = classStr + ' flowchart-label';\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let radius = 0;\n let shape = '';\n let padding;\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radius = 5;\n shape = 'rect';\n break;\n case 'composite':\n radius = 0;\n shape = 'composite';\n padding = 0;\n break;\n case 'square':\n shape = 'rect';\n break;\n case 'diamond':\n shape = 'question';\n break;\n case 'hexagon':\n shape = 'hexagon';\n break;\n case 'block_arrow':\n shape = 'block_arrow';\n break;\n case 'odd':\n shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n shape = 'lean_right';\n break;\n case 'lean_left':\n shape = 'lean_left';\n break;\n case 'trapezoid':\n shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n shape = 'inv_trapezoid';\n break;\n case 'rect_left_inv_arrow':\n shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n shape = 'circle';\n break;\n case 'ellipse':\n shape = 'ellipse';\n break;\n case 'stadium':\n shape = 'stadium';\n break;\n case 'subroutine':\n shape = 'subroutine';\n break;\n case 'cylinder':\n shape = 'cylinder';\n break;\n case 'group':\n shape = 'rect';\n break;\n case 'doublecircle':\n shape = 'doublecircle';\n break;\n default:\n shape = 'rect';\n }\n\n const styles = getStylesFromArray(vertex?.styles ?? []);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n const vertexText = vertex.label;\n\n const bounds = vertex.size ?? { width: 0, height: 0, x: 0, y: 0 };\n const dbDiagramId = db.getDiagramId();\n // Add the node\n const node = {\n labelStyle: styles.labelStyle,\n shape: shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: dbDiagramId ? `${dbDiagramId}-${vertex.id}` : vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: undefined,\n type: vertex.type,\n padding: padding ?? getConfig()?.block?.padding ?? 0,\n widthInColumns: vertex.widthInColumns ?? 1,\n };\n return node;\n}\nasync function calculateBlockSize(\n elem: d3.Selection,\n block: any,\n db: any\n) {\n const node = getNodeFromBlock(block, db, false);\n if (node.type === 'group') {\n return;\n }\n\n // Add the element to the DOM to size it\n const config = getConfig();\n const nodeEl = await insertNode(elem, node, { config });\n const boundingBox = nodeEl.node().getBBox();\n const obj = db.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db.setBlock(obj);\n nodeEl.remove();\n}\ntype ActionFun = typeof calculateBlockSize;\n\nexport async function insertBlockPositioned(elem: any, block: Block, db: any) {\n const node = getNodeFromBlock(block, db, true);\n // Add the element to the DOM to size it\n const obj = db.getBlock(node.id);\n if (obj.type !== 'space') {\n const config = getConfig();\n await insertNode(elem, node, { config });\n block.intersect = node?.intersect;\n positionNode(node);\n }\n}\n\nexport async function performOperations(\n elem: d3.Selection,\n blocks: Block[],\n db: BlockDB,\n operation: ActionFun\n) {\n for (const block of blocks) {\n await operation(elem, block, db);\n if (block.children) {\n await performOperations(elem, block.children, db, operation);\n }\n }\n}\n\nexport async function calculateBlockSizes(elem: any, blocks: Block[], db: BlockDB) {\n await performOperations(elem, blocks, db, calculateBlockSize);\n}\n\nexport async function insertBlocks(\n elem: d3.Selection,\n blocks: Block[],\n db: BlockDB\n) {\n await performOperations(elem, blocks, db, insertBlockPositioned);\n}\n\nexport async function insertEdges(\n elem: any,\n edges: Block[],\n blocks: Block[],\n db: BlockDB,\n id: string\n) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n g.setGraph({\n rankdir: 'TB',\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8,\n });\n\n for (const block of blocks) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect,\n });\n }\n }\n\n for (const edge of edges) {\n // elem, e, edge, clusterDb, diagramType, graph;\n if (edge.start && edge.end) {\n const startBlock = db.getBlock(edge.start);\n const endBlock = db.getBlock(edge.end);\n\n if (startBlock?.size && endBlock?.size) {\n const start = startBlock.size;\n const end = endBlock.size;\n const points = [\n { x: start.x, y: start.y },\n { x: start.x + (end.x - start.x) / 2, y: start.y + (end.y - start.y) / 2 },\n { x: end.x, y: end.y },\n ];\n const prefixedEdgeId = id ? `${id}-${edge.id}` : edge.id;\n\n const thicknessClass =\n edge.thickness === 'thick' ? 'edge-thickness-thick' : 'edge-thickness-normal';\n const patternClass =\n edge.pattern === 'dotted' ? 'edge-pattern-dotted' : 'edge-pattern-solid';\n const dynamicClasses = `${thicknessClass} ${patternClass} flowchart-link LS-a1 LE-b1`;\n\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: prefixedEdgeId },\n {\n ...edge,\n id: prefixedEdgeId,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: dynamicClasses,\n },\n undefined,\n 'block',\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: 'stroke: #333; stroke-width: 1.5px;fill:none;',\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: dynamicClasses,\n });\n positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points,\n }\n );\n }\n }\n }\n }\n}\n", "import { select as d3select } from 'd3';\nimport type { Diagram } from '../../Diagram.js';\nimport * as configApi from '../../config.js';\nimport insertMarkers from '../../dagre-wrapper/markers.js';\nimport { log } from '../../logger.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { BlockDB } from './blockDB.js';\nimport { layout } from './layout.js';\nimport { calculateBlockSizes, insertBlocks, insertEdges } from './renderHelpers.js';\n\nexport const getClasses = function (text: any, diagObj: any) {\n return diagObj.db.getClasses();\n};\n\nexport const draw = async function (\n text: string,\n id: string,\n _version: string,\n diagObj: Diagram\n): Promise {\n const { securityLevel, block: conf } = configApi.getConfig();\n const db = diagObj.db as BlockDB;\n db.setDiagramId(id);\n let sandboxElement: any;\n if (securityLevel === 'sandbox') {\n sandboxElement = d3select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? d3select(sandboxElement.nodes()[0].contentDocument.body)\n : d3select('body');\n\n const svg =\n securityLevel === 'sandbox'\n ? root.select(`[id=\"${id}\"]`)\n : d3select(`[id=\"${id}\"]`);\n\n // Define the supported markers for the diagram\n const markers = ['point', 'circle', 'cross'];\n\n // Add the marker definitions to the svg as marker tags\n insertMarkers(svg, markers, diagObj.type, id);\n\n const bl = db.getBlocks();\n const blArr = db.getBlocksFlat();\n const edges = db.getEdges();\n\n const nodes = svg.insert('g').attr('class', 'block');\n await calculateBlockSizes(nodes, bl, db);\n const bounds = layout(db);\n await insertBlocks(nodes, bl, db);\n await insertEdges(nodes, edges, blArr, db, id);\n\n // Establish svg dimensions and get width and height\n // Why, oh why ????\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf!;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug('Here Bounds', bounds, bounds2);\n svg.attr(\n 'viewBox',\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n};\n\nexport default {\n draw,\n getClasses,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: jison doesn't export types\nimport parser from './parser/block.jison';\nimport db from './blockDB.js';\nimport flowStyles from './styles.js';\nimport renderer from './blockRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles: flowStyles,\n};\n"], + "mappings": "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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "num", "spaceId", "edgeData", "startEdgeData", "lineThickness", "linePattern", "id2", "id", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "block_default", "parser", "blockDatabase", "edgeList", "edgeCount", "COLOR_KEYWORD", "FILL_KEYWORD", "BG_FILL", "STYLECLASS_SEP", "config", "getConfig", "classes", "diagramId", "sanitizeText", "__name", "txt", "common_default", "addStyleClass", "id", "styleAttributes", "foundClass", "attrib", "fixedAttrib", "newStyle2", "addStyle2Node", "styles", "foundBlock", "setCssClass", "itemIds", "cssClassName", "trimmedId", "populateBlockDatabase", "_blockList", "parent", "blockList", "children", "column", "b", "block", "log", "count", "existingBlock", "w", "j", "newBlock", "clone", "blocks", "rootBlock", "clear", "typeStr2Type", "typeStr", "edgeTypeStr2Type", "edgeStrToEdgeData", "edgeStrToEdgeStartData", "edgeStrToThickness", "edgeStrToPattern", "cnt", "generateId", "setHierarchy", "getColumns", "blockId", "getBlocksFlat", "getBlocks", "getEdges", "getBlock", "setBlock", "setDiagramId", "getDiagramId", "getLogger", "getClasses", "db", "blockDB_default", "fade", "__name", "color", "opacity", "channel", "channel_default", "r", "g", "b", "rgba_default", "getStyles", "options", "getIconStyles", "styles_default", "insertMarkers", "__name", "elem", "markerArray", "type", "id", "markerName", "markers", "extension", "log", "composition", "aggregation", "dependency", "lollipop", "point", "circle", "cross", "barb", "markers_default", "padding", "getConfig", "calculateBlockPosition", "columns", "position", "px", "py", "__name", "getMaxChildSize", "block", "maxWidth", "maxHeight", "child", "width", "height", "x", "y", "log", "normalizedWidth", "setBlockSizes", "db", "siblingWidth", "siblingHeight", "childSize", "numItems", "xSize", "ySize", "childWidth", "childHeight", "num", "layoutBlocks", "widthOfChildren", "rowHeights", "colPos", "currentMax", "filled", "rowYOffsets", "offset", "rows", "a", "b", "row", "columnPos", "startingPosX", "rowPos", "parent", "halfWidth", "rowYOffset", "rowHeight", "columnsFilled", "findBounds", "minX", "minY", "maxX", "maxY", "layout", "root", "createLabel", "__name", "element", "_vertexText", "style", "isTitle", "isNode", "vertexText", "config", "getConfig", "useHtmlLabels", "getEffectiveHtmlLabels", "createText", "createLabel_default", "addEdgeMarkers", "__name", "svgPath", "edge", "url", "id", "diagramType", "addEdgeMarker", "arrowTypesMap", "position", "arrowType", "endMarkerType", "log", "suffix", "edgeLabels", "terminalLabels", "insertEdgeLabel", "__name", "elem", "edge", "config", "getConfig", "useHtmlLabels", "getEffectiveHtmlLabels", "edgeLabel", "label", "isMarkdown", "labelElement", "createText", "bbox", "transformBbox", "div", "dv", "select_default", "textEl", "computeLabelTransform", "edgeLabels", "fo", "startEdgeLabelLeft", "inner", "startLabelElement", "createLabel_default", "slBox", "terminalLabels", "setTerminalWidth", "startEdgeLabelRight", "endEdgeLabelLeft", "endLabelElement", "endEdgeLabelRight", "value", "positionEdgeLabel", "paths", "log", "path", "siteConfig", "subGraphTitleTotalMargin", "getSubGraphTitleMargins", "el", "x", "y", "pos", "utils_default", "outsideNode", "node", "point", "dx", "dy", "w", "h", "intersection", "outsidePoint", "insidePoint", "r", "Q", "R", "q", "res", "_x", "_y", "cutPathAtIntersect", "_points", "boundaryNode", "points", "lastPointOutside", "isInside", "inter", "pointPresent", "p", "e", "insertEdge", "clusterDb", "diagramType", "graph", "id", "pointsHasChanged", "tail", "head", "lineData", "curve", "basis_default", "getLineFunctionsWithOffset", "lineFunction", "line_default", "strokeClasses", "svgPath", "url", "getUrl", "addEdgeMarkers", "expandAndDeduplicateDirections", "__name", "directions", "uniqueDirections", "direction", "getArrowPoints", "duplicatedDirections", "bbox", "node", "totalWidth", "f", "height", "midpoint", "width", "padding", "intersectNode", "node", "point", "__name", "intersect_node_default", "intersectEllipse", "node", "rx", "ry", "point", "cx", "cy", "px", "py", "det", "dx", "dy", "__name", "intersect_ellipse_default", "intersectCircle", "node", "rx", "point", "intersect_ellipse_default", "__name", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "a2", "b1", "b2", "c1", "c2", "r1", "r2", "r3", "r4", "denom", "offset", "num", "x", "y", "sameSign", "__name", "intersect_line_default", "intersect_polygon_default", "intersectPolygon", "node", "polyPoints", "point", "x1", "y1", "intersections", "minX", "minY", "entry", "left", "top", "i", "p1", "p2", "intersect", "intersect_line_default", "p", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "__name", "intersectRect", "__name", "node", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "intersect_default", "intersect_node_default", "intersect_circle_default", "intersect_ellipse_default", "intersect_polygon_default", "intersect_rect_default", "labelHelper", "__name", "parent", "node", "_classes", "isNode", "config", "getConfig", "classes", "useHtmlLabels", "getEffectiveHtmlLabels", "shapeSvg", "label", "labelText", "text", "createText", "sanitizeText", "decodeEntities", "createLabel_default", "bbox", "halfPadding", "div", "dv", "select_default", "configureLabelImages", "updateNodeBounds", "element", "insertPolygonShape", "w", "h", "points", "d", "note", "__name", "parent", "node", "getEffectiveHtmlLabels", "getConfig", "shapeSvg", "bbox", "halfPadding", "labelHelper", "log", "rect", "updateNodeBounds", "point", "intersect_default", "note_default", "formatClass", "__name", "str", "getClassesFromNode", "node", "otherClasses", "question", "parent", "shapeSvg", "bbox", "labelHelper", "w", "h", "s", "points", "log", "questionElem", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "choice", "d", "hexagon", "f", "m", "hex", "block_arrow", "naturalW", "getArrowPoints", "blockArrow", "rect_left_inv_arrow", "lean_right", "el", "lean_left", "trapezoid", "inv_trapezoid", "rect_right_inv_arrow", "cylinder", "rx", "ry", "shape", "pos", "x", "y", "rect", "halfPadding", "totalWidth", "totalHeight", "propKeys", "applyNodePropertyBorders", "propKey", "composite", "labelRect", "borders", "strokeDashArray", "addBorder", "length", "skipBorder", "rectWithTitle", "classes", "innerLine", "label", "text2", "title", "text", "createLabel_default", "getEffectiveHtmlLabels", "getConfig", "div", "dv", "select_default", "textRows", "titleBox", "descr", "stadium", "circle", "doublecircle", "gap", "circleGroup", "outerCircle", "innerCircle", "subroutine", "start", "forkJoin", "dir", "width", "height", "end", "class_box", "rowPadding", "lineHeight", "topLine", "bottomLine", "maxWidth", "maxHeight", "labelContainer", "verticalPos", "hasInterface", "interfaceLabelText", "interfaceLabel", "interfaceBBox", "classTitleString", "classTitleLabel", "classTitleBBox", "classAttributes", "member", "parsedInfo", "parsedText", "lbl", "classMethods", "displayText", "diffX", "memberBBox", "shapes", "note_default", "nodeElems", "insertNode", "elem", "renderOptions", "newEl", "target", "positionNode", "__name", "node", "el", "nodeElems", "log", "padding", "diff", "getNodeFromBlock", "block", "db", "positioned", "vertex", "classStr", "radius", "shape", "padding", "styles", "getStylesFromArray", "vertexText", "bounds", "dbDiagramId", "getConfig", "__name", "calculateBlockSize", "elem", "node", "config", "nodeEl", "insertNode", "boundingBox", "obj", "insertBlockPositioned", "positionNode", "performOperations", "blocks", "operation", "calculateBlockSizes", "insertBlocks", "insertEdges", "edges", "id", "g", "Graph", "edge", "startBlock", "endBlock", "start", "end", "points", "prefixedEdgeId", "thicknessClass", "patternClass", "dynamicClasses", "insertEdge", "insertEdgeLabel", "positionEdgeLabel", "getClasses", "__name", "text", "diagObj", "draw", "id", "_version", "securityLevel", "conf", "getConfig", "db", "sandboxElement", "select_default", "root", "svg", "markers_default", "bl", "blArr", "edges", "nodes", "calculateBlockSizes", "bounds", "layout", "insertBlocks", "insertEdges", "bounds2", "magicFactor", "height", "width", "useMaxWidth", "configureSvgSize", "log", "blockRenderer_default", "diagram", "block_default", "blockDB_default", "blockRenderer_default", "styles_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-HG7WUIX4.mjs b/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-HG7WUIX4.mjs deleted file mode 100644 index bd9ebe1..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-HG7WUIX4.mjs +++ /dev/null @@ -1,132 +0,0 @@ -import{a as Kt}from"./chunk-HN6EAY2L.mjs";import{a as jt}from"./chunk-KSICW3F5.mjs";import{a as rt,d as Wt}from"./chunk-3ZBQQEZ6.mjs";import{a as Ht,b as Yt}from"./chunk-XODN6PIJ.mjs";import{f as et}from"./chunk-YLHEXJF3.mjs";import{d as Ft,m as tt,o as bt}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{A as It,F as Ot,N as Rt,Q as zt,Y as D,b as Nt,c as Ct,s as q,w as z,z as xt}from"./chunk-3UWU4A3N.mjs";import{H as At,L as Mt,b as w,h as _}from"./chunk-MGPAVIPZ.mjs";import{e as Pt}from"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as h}from"./chunk-VELTKBKT.mjs";var yt=(function(){var e=h(function(N,m,d,b){for(d=d||{},b=N.length;b--;d[N[b]]=m);return d},"o"),t=[1,15],a=[1,7],i=[1,13],o=[1,14],s=[1,19],r=[1,16],n=[1,17],c=[1,18],x=[8,30],l=[8,10,21,28,29,30,31,39,43,46],u=[1,23],y=[1,24],f=[8,10,15,16,21,28,29,30,31,39,43,46],k=[8,10,15,16,21,27,28,29,30,31,39,43,46],E=[1,49],L={trace:h(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:h(function(m,d,b,S,B,g,W){var p=g.length-1;switch(B){case 4:S.getLogger().debug("Rule: separator (NL) ");break;case 5:S.getLogger().debug("Rule: separator (Space) ");break;case 6:S.getLogger().debug("Rule: separator (EOF) ");break;case 7:S.getLogger().debug("Rule: hierarchy: ",g[p-1]),S.setHierarchy(g[p-1]);break;case 8:S.getLogger().debug("Stop NL ");break;case 9:S.getLogger().debug("Stop EOF ");break;case 10:S.getLogger().debug("Stop NL2 ");break;case 11:S.getLogger().debug("Stop EOF2 ");break;case 12:S.getLogger().debug("Rule: statement: ",g[p]),typeof g[p].length=="number"?this.$=g[p]:this.$=[g[p]];break;case 13:S.getLogger().debug("Rule: statement #2: ",g[p-1]),this.$=[g[p-1]].concat(g[p]);break;case 14:S.getLogger().debug("Rule: link: ",g[p],m),this.$={edgeTypeStr:g[p],label:""};break;case 15:S.getLogger().debug("Rule: LABEL link: ",g[p-3],g[p-1],g[p]),this.$={edgeTypeStr:g[p],label:g[p-1]};break;case 18:let R=parseInt(g[p]),Z=S.generateId();this.$={id:Z,type:"space",label:"",width:R,children:[]};break;case 23:S.getLogger().debug("Rule: (nodeStatement link node) ",g[p-2],g[p-1],g[p]," typestr: ",g[p-1].edgeTypeStr);let X=S.edgeStrToEdgeData(g[p-1].edgeTypeStr);this.$=[{id:g[p-2].id,label:g[p-2].label,type:g[p-2].type,directions:g[p-2].directions},{id:g[p-2].id+"-"+g[p].id,start:g[p-2].id,end:g[p].id,label:g[p-1].label,type:"edge",directions:g[p].directions,arrowTypeEnd:X,arrowTypeStart:"arrow_open"},{id:g[p].id,label:g[p].label,type:S.typeStr2Type(g[p].typeStr),directions:g[p].directions}];break;case 24:S.getLogger().debug("Rule: nodeStatement (abc88 node size) ",g[p-1],g[p]),this.$={id:g[p-1].id,label:g[p-1].label,type:S.typeStr2Type(g[p-1].typeStr),directions:g[p-1].directions,widthInColumns:parseInt(g[p],10)};break;case 25:S.getLogger().debug("Rule: nodeStatement (node) ",g[p]),this.$={id:g[p].id,label:g[p].label,type:S.typeStr2Type(g[p].typeStr),directions:g[p].directions,widthInColumns:1};break;case 26:S.getLogger().debug("APA123",this?this:"na"),S.getLogger().debug("COLUMNS: ",g[p]),this.$={type:"column-setting",columns:g[p]==="auto"?-1:parseInt(g[p])};break;case 27:S.getLogger().debug("Rule: id-block statement : ",g[p-2],g[p-1]);let vt=S.generateId();this.$={...g[p-2],type:"composite",children:g[p-1]};break;case 28:S.getLogger().debug("Rule: blockStatement : ",g[p-2],g[p-1],g[p]);let st=S.generateId();this.$={id:st,type:"composite",label:"",children:g[p-1]};break;case 29:S.getLogger().debug("Rule: node (NODE_ID separator): ",g[p]),this.$={id:g[p]};break;case 30:S.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",g[p-1],g[p]),this.$={id:g[p-1],label:g[p].label,typeStr:g[p].typeStr,directions:g[p].directions};break;case 31:S.getLogger().debug("Rule: dirList: ",g[p]),this.$=[g[p]];break;case 32:S.getLogger().debug("Rule: dirList: ",g[p-1],g[p]),this.$=[g[p-1]].concat(g[p]);break;case 33:S.getLogger().debug("Rule: nodeShapeNLabel: ",g[p-2],g[p-1],g[p]),this.$={typeStr:g[p-2]+g[p],label:g[p-1]};break;case 34:S.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",g[p-3],g[p-2]," #3:",g[p-1],g[p]),this.$={typeStr:g[p-3]+g[p],label:g[p-2],directions:g[p-1]};break;case 35:case 36:this.$={type:"classDef",id:g[p-1].trim(),css:g[p].trim()};break;case 37:this.$={type:"applyClass",id:g[p-1].trim(),styleClass:g[p].trim()};break;case 38:this.$={type:"applyStyles",id:g[p-1].trim(),stylesStr:g[p].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:o,31:s,39:r,43:n,46:c},{8:[1,20]},e(x,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:a,28:i,29:o,31:s,39:r,43:n,46:c}),e(l,[2,16],{14:22,15:u,16:y}),e(l,[2,17]),e(l,[2,18]),e(l,[2,19]),e(l,[2,20]),e(l,[2,21]),e(l,[2,22]),e(f,[2,25],{27:[1,25]}),e(l,[2,26]),{19:26,26:12,31:s},{10:t,11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:o,31:s,39:r,43:n,46:c},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(k,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(x,[2,13]),{26:35,31:s},{31:[2,14]},{17:[1,36]},e(f,[2,24]),{10:t,11:37,13:4,14:22,15:u,16:y,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:o,31:s,39:r,43:n,46:c},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(k,[2,30]),{18:[1,43]},{18:[1,44]},e(f,[2,23]),{18:[1,45]},{30:[1,46]},e(l,[2,28]),e(l,[2,35]),e(l,[2,36]),e(l,[2,37]),e(l,[2,38]),{36:[1,47]},{33:48,34:E},{15:[1,50]},e(l,[2,27]),e(k,[2,33]),{38:[1,51]},{33:52,34:E,38:[2,31]},{31:[2,15]},e(k,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:h(function(m,d){if(d.recoverable)this.trace(m);else{var b=new Error(m);throw b.hash=d,b}},"parseError"),parse:h(function(m){var d=this,b=[0],S=[],B=[null],g=[],W=this.table,p="",R=0,Z=0,X=0,vt=2,st=1,ve=g.slice.call(arguments,1),M=Object.create(this.lexer),J={yy:{}};for(var gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,gt)&&(J.yy[gt]=this.yy[gt]);M.setInput(m,J.yy),J.yy.lexer=M,J.yy.parser=this,typeof M.yylloc>"u"&&(M.yylloc={});var dt=M.yylloc;g.push(dt);var Te=M.options&&M.options.ranges;typeof J.yy.parseError=="function"?this.parseError=J.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Zr(P){b.length=b.length-2*P,B.length=B.length-P,g.length=g.length-P}h(Zr,"popStack");function Ne(){var P;return P=S.pop()||M.lex()||st,typeof P!="number"&&(P instanceof Array&&(S=P,P=S.pop()),P=d.symbols_[P]||P),P}h(Ne,"lex");for(var H,ut,Q,j,qr,pt,$={},it,G,Tt,nt;;){if(Q=b[b.length-1],this.defaultActions[Q]?j=this.defaultActions[Q]:((H===null||typeof H>"u")&&(H=Ne()),j=W[Q]&&W[Q][H]),typeof j>"u"||!j.length||!j[0]){var ft="";nt=[];for(it in W[Q])this.terminals_[it]&&it>vt&&nt.push("'"+this.terminals_[it]+"'");M.showPosition?ft="Parse error on line "+(R+1)+`: -`+M.showPosition()+` -Expecting `+nt.join(", ")+", got '"+(this.terminals_[H]||H)+"'":ft="Parse error on line "+(R+1)+": Unexpected "+(H==st?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(ft,{text:M.match,token:this.terminals_[H]||H,line:M.yylineno,loc:dt,expected:nt})}if(j[0]instanceof Array&&j.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Q+", token: "+H);switch(j[0]){case 1:b.push(H),B.push(M.yytext),g.push(M.yylloc),b.push(j[1]),H=null,ut?(H=ut,ut=null):(Z=M.yyleng,p=M.yytext,R=M.yylineno,dt=M.yylloc,X>0&&X--);break;case 2:if(G=this.productions_[j[1]][1],$.$=B[B.length-G],$._$={first_line:g[g.length-(G||1)].first_line,last_line:g[g.length-1].last_line,first_column:g[g.length-(G||1)].first_column,last_column:g[g.length-1].last_column},Te&&($._$.range=[g[g.length-(G||1)].range[0],g[g.length-1].range[1]]),pt=this.performAction.apply($,[p,Z,R,J.yy,j[1],B,g].concat(ve)),typeof pt<"u")return pt;G&&(b=b.slice(0,-1*G*2),B=B.slice(0,-1*G),g=g.slice(0,-1*G)),b.push(this.productions_[j[1]][0]),B.push($.$),g.push($._$),Tt=W[b[b.length-2]][b[b.length-1]],b.push(Tt);break;case 3:return!0}}return!0},"parse")},T=(function(){var N={EOF:1,parseError:h(function(d,b){if(this.yy.parser)this.yy.parser.parseError(d,b);else throw new Error(d)},"parseError"),setInput:h(function(m,d){return this.yy=d||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:h(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var d=m.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:h(function(m){var d=m.length,b=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d),this.offset-=d;var S=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),b.length-1&&(this.yylineno-=b.length-1);var B=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:b?(b.length===S.length?this.yylloc.first_column:0)+S[S.length-b.length].length-b[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[B[0],B[0]+this.yyleng-d]),this.yyleng=this.yytext.length,this},"unput"),more:h(function(){return this._more=!0,this},"more"),reject:h(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:h(function(m){this.unput(this.match.slice(m))},"less"),pastInput:h(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:h(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:h(function(){var m=this.pastInput(),d=new Array(m.length+1).join("-");return m+this.upcomingInput()+` -`+d+"^"},"showPosition"),test_match:h(function(m,d){var b,S,B;if(this.options.backtrack_lexer&&(B={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(B.yylloc.range=this.yylloc.range.slice(0))),S=m[0].match(/(?:\r\n?|\n).*/g),S&&(this.yylineno+=S.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:S?S[S.length-1].length-S[S.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],b=this.performAction.call(this,this.yy,this,d,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),b)return b;if(this._backtrack){for(var g in B)this[g]=B[g];return!1}return!1},"test_match"),next:h(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,d,b,S;this._more||(this.yytext="",this.match="");for(var B=this._currentRules(),g=0;gd[0].length)){if(d=b,S=g,this.options.backtrack_lexer){if(m=this.test_match(b,B[g]),m!==!1)return m;if(this._backtrack){d=!1;continue}else return!1}else if(!this.options.flex)break}return d?(m=this.test_match(d,B[S]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:h(function(){var d=this.next();return d||this.lex()},"lex"),begin:h(function(d){this.conditionStack.push(d)},"begin"),popState:h(function(){var d=this.conditionStack.length-1;return d>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:h(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:h(function(d){return d=this.conditionStack.length-1-Math.abs(d||0),d>=0?this.conditionStack[d]:"INITIAL"},"topState"),pushState:h(function(d){this.begin(d)},"pushState"),stateStackSize:h(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:h(function(d,b,S,B){var g=B;switch(S){case 0:return d.getLogger().debug("Found block-beta"),10;break;case 1:return d.getLogger().debug("Found id-block"),29;break;case 2:return d.getLogger().debug("Found block"),10;break;case 3:d.getLogger().debug(".",b.yytext);break;case 4:d.getLogger().debug("_",b.yytext);break;case 5:return 5;case 6:return b.yytext=-1,28;break;case 7:return b.yytext=b.yytext.replace(/columns\s+/,""),d.getLogger().debug("COLUMNS (LEX)",b.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:d.getLogger().debug("LEX: POPPING STR:",b.yytext),this.popState();break;case 13:return d.getLogger().debug("LEX: STR end:",b.yytext),"STR";break;case 14:return b.yytext=b.yytext.replace(/space\:/,""),d.getLogger().debug("SPACE NUM (LEX)",b.yytext),21;break;case 15:return b.yytext="1",d.getLogger().debug("COLUMNS (LEX)",b.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),d.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),d.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),d.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),d.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),d.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),d.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),d.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),d.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),d.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),d.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),d.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),d.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),d.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),d.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),d.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),d.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),d.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return d.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return d.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return d.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return d.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return d.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return d.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return d.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return d.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return d.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return d.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return d.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return d.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),d.getLogger().debug("LEX ARR START"),37;break;case 74:return d.getLogger().debug("Lex: NODE_ID",b.yytext),31;break;case 75:return d.getLogger().debug("Lex: EOF",b.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:d.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:d.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return d.getLogger().debug("LEX: NODE_DESCR:",b.yytext),"NODE_DESCR";break;case 83:d.getLogger().debug("LEX POPPING"),this.popState();break;case 84:d.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return b.yytext=b.yytext.replace(/^,\s*/,""),d.getLogger().debug("Lex (right): dir:",b.yytext),"DIR";break;case 86:return b.yytext=b.yytext.replace(/^,\s*/,""),d.getLogger().debug("Lex (left):",b.yytext),"DIR";break;case 87:return b.yytext=b.yytext.replace(/^,\s*/,""),d.getLogger().debug("Lex (x):",b.yytext),"DIR";break;case 88:return b.yytext=b.yytext.replace(/^,\s*/,""),d.getLogger().debug("Lex (y):",b.yytext),"DIR";break;case 89:return b.yytext=b.yytext.replace(/^,\s*/,""),d.getLogger().debug("Lex (up):",b.yytext),"DIR";break;case 90:return b.yytext=b.yytext.replace(/^,\s*/,""),d.getLogger().debug("Lex (down):",b.yytext),"DIR";break;case 91:return b.yytext="]>",d.getLogger().debug("Lex (ARROW_DIR end):",b.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return d.getLogger().debug("Lex: LINK","#"+b.yytext+"#"),15;break;case 93:return d.getLogger().debug("Lex: LINK",b.yytext),15;break;case 94:return d.getLogger().debug("Lex: LINK",b.yytext),15;break;case 95:return d.getLogger().debug("Lex: LINK",b.yytext),15;break;case 96:return d.getLogger().debug("Lex: START_LINK",b.yytext),this.pushState("LLABEL"),16;break;case 97:return d.getLogger().debug("Lex: START_LINK",b.yytext),this.pushState("LLABEL"),16;break;case 98:return d.getLogger().debug("Lex: START_LINK",b.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return d.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),d.getLogger().debug("Lex: LINK","#"+b.yytext+"#"),15;break;case 102:return this.popState(),d.getLogger().debug("Lex: LINK",b.yytext),15;break;case 103:return this.popState(),d.getLogger().debug("Lex: LINK",b.yytext),15;break;case 104:return d.getLogger().debug("Lex: COLON",b.yytext),b.yytext=b.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return N})();L.lexer=T;function O(){this.yy={}}return h(O,"Parser"),O.prototype=L,L.Parser=O,new O})();yt.parser=yt;var Vt=yt;var V=new Map,kt=[],mt=new Map,Ut="color",Xt="fill",Ie="bgFill",Zt=",",Oe=D(),ot=new Map,Re=h(e=>Ot.sanitizeText(e,Oe),"sanitizeText"),ze=h(function(e,t=""){let a=ot.get(e);a||(a={id:e,styles:[],textStyles:[]},ot.set(e,a)),t?.split(Zt).forEach(i=>{let o=i.replace(/([^;]*);/,"$1").trim();if(RegExp(Ut).exec(i)){let r=o.replace(Xt,Ie).replace(Ut,Xt);a.textStyles.push(r)}a.styles.push(o)})},"addStyleClass"),Ae=h(function(e,t=""){let a=V.get(e);t!=null&&(a.styles=t.split(Zt))},"addStyle2Node"),Me=h(function(e,t){e.split(",").forEach(function(a){let i=V.get(a);if(i===void 0){let o=a.trim();i={id:o,type:"na",children:[]},V.set(o,i)}i.classes||(i.classes=[]),i.classes.push(t)})},"setCssClass"),qt=h((e,t)=>{let a=e.flat(),i=[],s=a.find(r=>r?.type==="column-setting")?.columns??-1;for(let r of a){if(typeof s=="number"&&s>0&&r.type!=="column-setting"&&typeof r.widthInColumns=="number"&&r.widthInColumns>s&&w.warn(`Block ${r.id} width ${r.widthInColumns} exceeds configured column width ${s}`),r.label&&(r.label=Re(r.label)),r.type==="classDef"){ze(r.id,r.css);continue}if(r.type==="applyClass"){Me(r.id,r?.styleClass??"");continue}if(r.type==="applyStyles"){r?.stylesStr&&Ae(r.id,r?.stylesStr);continue}if(r.type==="column-setting")t.columns=r.columns??-1;else if(r.type==="edge"){let n=(mt.get(r.id)??0)+1;mt.set(r.id,n),r.id=n+"-"+r.id,kt.push(r)}else{r.label||(r.type==="composite"?r.label="":r.label=r.id);let n=V.get(r.id);if(n===void 0?V.set(r.id,r):(r.type!=="na"&&(n.type=r.type),r.label!==r.id&&(n.label=r.label)),r.children&&qt(r.children,r),r.type==="space"){let c=r.width??1;for(let x=0;x{w.debug("Clear called"),zt(),at={id:"root",type:"composite",children:[],columns:-1},V=new Map([["root",at]]),wt=[],ot=new Map,kt=[],mt=new Map},"clear");function He(e){switch(w.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return w.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}h(He,"typeStr2Type");function Ye(e){switch(w.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}h(Ye,"edgeTypeStr2Type");function We(e){switch(e.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}h(We,"edgeStrToEdgeData");var Gt=0,Pe=h(()=>(Gt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Gt),"generateId"),Ke=h(e=>{at.children=e,qt(e,at),wt=at.children},"setHierarchy"),je=h(e=>{let t=V.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),Ve=h(()=>[...V.values()],"getBlocksFlat"),Ue=h(()=>wt||[],"getBlocks"),Xe=h(()=>kt,"getEdges"),Ge=h(e=>V.get(e),"getBlock"),Ze=h(e=>{V.set(e.id,e)},"setBlock"),qe=h(()=>w,"getLogger"),Je=h(function(){return ot},"getClasses"),Qe={getConfig:h(()=>q().block,"getConfig"),typeStr2Type:He,edgeTypeStr2Type:Ye,edgeStrToEdgeData:We,getLogger:qe,getBlocksFlat:Ve,getBlocks:Ue,getEdges:Xe,setHierarchy:Ke,getBlock:Ge,setBlock:Ze,getColumns:je,getClasses:Je,clear:Fe,generateId:Pe},Jt=Qe;var Lt=h((e,t)=>{let a=Ct,i=a(e,"r"),o=a(e,"g"),s=a(e,"b");return Nt(i,o,s,t)},"fade"),$e=h(e=>`.label { - font-family: ${e.fontFamily}; - color: ${e.nodeTextColor||e.textColor}; - } - .cluster-label text { - fill: ${e.titleColor}; - } - .cluster-label span,p { - color: ${e.titleColor}; - } - - - - .label text,span,p { - fill: ${e.nodeTextColor||e.textColor}; - color: ${e.nodeTextColor||e.textColor}; - } - - .node rect, - .node circle, - .node ellipse, - .node polygon, - .node path { - fill: ${e.mainBkg}; - stroke: ${e.nodeBorder}; - stroke-width: 1px; - } - .flowchart-label text { - text-anchor: middle; - } - // .flowchart-label .text-outer-tspan { - // text-anchor: middle; - // } - // .flowchart-label .text-inner-tspan { - // text-anchor: start; - // } - - .node .label { - text-align: center; - } - .node.clickable { - cursor: pointer; - } - - .arrowheadPath { - fill: ${e.arrowheadColor}; - } - - .edgePath .path { - stroke: ${e.lineColor}; - stroke-width: 2.0px; - } - - .flowchart-link { - stroke: ${e.lineColor}; - fill: none; - } - - .edgeLabel { - background-color: ${e.edgeLabelBackground}; - /* - * This is for backward compatibility with existing code that didn't - * add a \`

\` around edge labels. - * - * TODO: We should probably remove this in a future release. - */ - p { - margin: 0; - padding: 0; - display: inline; - } - rect { - opacity: 0.5; - background-color: ${e.edgeLabelBackground}; - fill: ${e.edgeLabelBackground}; - } - text-align: center; - } - - /* For html labels only */ - .labelBkg { - background-color: ${e.edgeLabelBackground}; - } - - .node .cluster { - // fill: ${Lt(e.mainBkg,.5)}; - fill: ${Lt(e.clusterBkg,.5)}; - stroke: ${Lt(e.clusterBorder,.2)}; - box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; - stroke-width: 1px; - } - - .cluster text { - fill: ${e.titleColor}; - } - - .cluster span,p { - color: ${e.titleColor}; - } - /* .cluster div { - color: ${e.titleColor}; - } */ - - div.mermaidTooltip { - position: absolute; - text-align: center; - max-width: 200px; - padding: 2px; - font-family: ${e.fontFamily}; - font-size: 12px; - background: ${e.tertiaryColor}; - border: 1px solid ${e.border2}; - border-radius: 2px; - pointer-events: none; - z-index: 100; - } - - .flowchartTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${e.textColor}; - } - ${jt()} -`,"getStyles"),Qt=$e;var tr=h((e,t,a,i)=>{t.forEach(o=>{hr[o](e,a,i)})},"insertMarkers"),er=h((e,t,a)=>{w.trace("Making markers for ",a),e.append("defs").append("marker").attr("id",a+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),rr=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),ar=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),sr=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),ir=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),nr=h((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),or=h((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cr=h((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),lr=h((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),hr={extension:er,composition:rr,aggregation:ar,dependency:sr,lollipop:ir,point:nr,circle:or,cross:cr,barb:lr},$t=tr;var I=D()?.block?.padding??8;function te(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};let a=t%e,i=Math.floor(t/e);return{px:a,py:i}}h(te,"calculateBlockPosition");var gr=h(e=>{let t=0,a=0;for(let i of e.children){let{width:o,height:s,x:r,y:n}=i.size??{width:0,height:0,x:0,y:0};w.debug("getMaxChildSize abc95 child:",i.id,"width:",o,"height:",s,"x:",r,"y:",n,i.type),i.type!=="space"&&(o>t&&(t=o/(i.widthInColumns??1)),s>a&&(a=s))}return{width:t,height:a}},"getMaxChildSize");function St(e,t,a=0,i=0){w.debug("setBlockSizes abc95 (start)",e.id,e?.size?.x,"block width =",e?.size,"siblingWidth",a),e?.size?.width||(e.size={width:a,height:i,x:0,y:0});let o=0,s=0;if(e.children?.length>0){for(let f of e.children)St(f,t);let r=gr(e);o=r.width,s=r.height,w.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",o,s);for(let f of e.children)f.size&&(w.debug(`abc95 Setting size of children of ${e.id} id=${f.id} ${o} ${s} ${JSON.stringify(f.size)}`),f.size.width=o*(f.widthInColumns??1)+I*((f.widthInColumns??1)-1),f.size.height=s,f.size.x=0,f.size.y=0,w.debug(`abc95 updating size of ${e.id} children child:${f.id} maxWidth:${o} maxHeight:${s}`));for(let f of e.children)St(f,t,o,s);let n=e.columns??-1,c=0;for(let f of e.children)c+=f.widthInColumns??1;let x=e.children.length;n>0&&n0?Math.min(e.children.length,n):e.children.length;if(f>0){let k=(u-f*I-I)/f;w.debug("abc95 (growing to fit) width",e.id,u,e.size?.width,k);for(let E of e.children)E.size&&(E.size.width=k)}}e.size={width:u,height:y,x:0,y:0}}w.debug("setBlockSizes abc94 (done)",e.id,e?.size?.x,e?.size?.width,e?.size?.y,e?.size?.height)}h(St,"setBlockSizes");function ee(e,t){w.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`);let a=e.columns??-1;if(w.debug("layoutBlocks columns abc95",e.id,"=>",a,e),e.children&&e.children.length>0){let i=e?.children[0]?.size?.width??0,o=e.children.length*i+(e.children.length-1)*I;w.debug("widthOfChildren 88",o,"posX");let s=new Map;{let l=0;for(let u of e.children){if(!u.size)continue;let{py:y}=te(a,l),f=s.get(y)??0;u.size.height>f&&s.set(y,u.size.height);let k=u?.widthInColumns??1;a>0&&(k=Math.min(k,a-l%a)),l+=k}}let r=new Map;{let l=0,u=[...s.keys()].sort((y,f)=>y-f);for(let y of u)r.set(y,l),l+=(s.get(y)??0)+I}let n=0;w.debug("abc91 block?.size?.x",e.id,e?.size?.x);let c=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-I,x=0;for(let l of e.children){let u=e;if(!l.size)continue;let{width:y,height:f}=l.size,{px:k,py:E}=te(a,n);if(E!=x&&(x=E,c=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-I,w.debug("New row in layout for block",e.id," and child ",l.id,x)),w.debug(`abc89 layout blocks (child) id: ${l.id} Pos: ${n} (px, py) ${k},${E} (${u?.size?.x},${u?.size?.y}) parent: ${u.id} width: ${y}${I}`),u.size){let T=y/2;l.size.x=c+I+T,w.debug(`abc91 layout blocks (calc) px, pyid:${l.id} startingPos=X${c} new startingPosX${l.size.x} ${T} padding=${I} width=${y} halfWidth=${T} => x:${l.size.x} y:${l.size.y} ${l.widthInColumns} (width * (child?.w || 1)) / 2 ${y*(l?.widthInColumns??1)/2}`),c=l.size.x+T;let O=r.get(E)??0,N=s.get(E)??f;l.size.y=u.size.y-u.size.height/2+O+N/2+I,w.debug(`abc88 layout blocks (calc) px, pyid:${l.id}startingPosX${c}${I}${T}=>x:${l.size.x}y:${l.size.y}${l.widthInColumns}(width * (child?.w || 1)) / 2${y*(l?.widthInColumns??1)/2}`)}l.children&&ee(l,t);let L=l?.widthInColumns??1;a>0&&(L=Math.min(L,a-n%a)),n+=L,w.debug("abc88 columnsPos",l,n)}}w.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`)}h(ee,"layoutBlocks");function re(e,{minX:t,minY:a,maxX:i,maxY:o}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){let{x:s,y:r,width:n,height:c}=e.size;s-n/2i&&(i=s+n/2),r+c/2>o&&(o=r+c/2)}if(e.children)for(let s of e.children)({minX:t,minY:a,maxX:i,maxY:o}=re(s,{minX:t,minY:a,maxX:i,maxY:o}));return{minX:t,minY:a,maxX:i,maxY:o}}h(re,"findBounds");function ae(e){let t=e.getBlock("root");if(!t)return;St(t,e,0,0),ee(t,e),w.debug("getBlocks",JSON.stringify(t,null,2));let{minX:a,minY:i,maxX:o,maxY:s}=re(t),r=s-i,n=o-a;return{x:a,y:i,width:n,height:r}}h(ae,"layout");var dr=h(async(e,t,a,i=!1,o=!1)=>{let s=t||"";typeof s=="object"&&(s=s[0]);let r=D(),n=z(r);return await et(e,s,{style:a,isTitle:i,useHtmlLabels:n,markdown:!1,isNode:o,width:Number.POSITIVE_INFINITY},r)},"createLabel"),Y=dr;var ie=h((e,t,a,i,o)=>{t.arrowTypeStart&&se(e,"start",t.arrowTypeStart,a,i,o),t.arrowTypeEnd&&se(e,"end",t.arrowTypeEnd,a,i,o)},"addEdgeMarkers"),ur={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},se=h((e,t,a,i,o,s)=>{let r=ur[a];if(!r){w.warn(`Unknown arrow type: ${a}`);return}let n=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${i}#${o}_${s}-${r}${n})`)},"addEdgeMarker");var Et={},F={};var oe=h(async(e,t)=>{let a=D(),i=z(a),o=e.insert("g").attr("class","edgeLabel"),s=o.insert("g").attr("class","label"),r=t.labelType==="markdown",n=await et(e,t.label,{style:t.labelStyle,useHtmlLabels:i,addSvgBackground:r,isNode:!1,markdown:r,width:r?void 0:Number.POSITIVE_INFINITY},a);s.node().appendChild(n);let c=n.getBBox(),x=c;if(i){let u=n.children[0],y=_(n);c=u.getBoundingClientRect(),x=c,y.attr("width",c.width),y.attr("height",c.height)}else{let u=_(n).select("text").node();u&&typeof u.getBBox=="function"&&(x=u.getBBox())}s.attr("transform",rt(x,i)),Et[t.id]=o,t.width=c.width,t.height=c.height;let l;if(t.startLabelLeft){let u=e.insert("g").attr("class","edgeTerminals"),y=u.insert("g").attr("class","inner"),f=await Y(y,t.startLabelLeft,t.labelStyle);l=f;let k=f.getBBox();if(i){let E=f.children[0],L=_(f);k=E.getBoundingClientRect(),L.attr("width",k.width),L.attr("height",k.height)}y.attr("transform",rt(k,i)),F[t.id]||(F[t.id]={}),F[t.id].startLeft=u,ct(l,t.startLabelLeft)}if(t.startLabelRight){let u=e.insert("g").attr("class","edgeTerminals"),y=u.insert("g").attr("class","inner"),f=await Y(u,t.startLabelRight,t.labelStyle);l=f,y.node().appendChild(f);let k=f.getBBox();if(i){let E=f.children[0],L=_(f);k=E.getBoundingClientRect(),L.attr("width",k.width),L.attr("height",k.height)}y.attr("transform",rt(k,i)),F[t.id]||(F[t.id]={}),F[t.id].startRight=u,ct(l,t.startLabelRight)}if(t.endLabelLeft){let u=e.insert("g").attr("class","edgeTerminals"),y=u.insert("g").attr("class","inner"),f=await Y(y,t.endLabelLeft,t.labelStyle);l=f;let k=f.getBBox();if(i){let E=f.children[0],L=_(f);k=E.getBoundingClientRect(),L.attr("width",k.width),L.attr("height",k.height)}y.attr("transform",rt(k,i)),u.node().appendChild(f),F[t.id]||(F[t.id]={}),F[t.id].endLeft=u,ct(l,t.endLabelLeft)}if(t.endLabelRight){let u=e.insert("g").attr("class","edgeTerminals"),y=u.insert("g").attr("class","inner"),f=await Y(y,t.endLabelRight,t.labelStyle);l=f;let k=f.getBBox();if(i){let E=f.children[0],L=_(f);k=E.getBoundingClientRect(),L.attr("width",k.width),L.attr("height",k.height)}y.attr("transform",rt(k,i)),u.node().appendChild(f),F[t.id]||(F[t.id]={}),F[t.id].endRight=u,ct(l,t.endLabelRight)}return n},"insertEdgeLabel");function ct(e,t){z(D())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}h(ct,"setTerminalWidth");var ce=h((e,t)=>{w.debug("Moving label abc88 ",e.id,e.label,Et[e.id],t);let a=t.updatedPath?t.updatedPath:t.originalPath,i=D(),{subGraphTitleTotalMargin:o}=Yt(i);if(e.label){let s=Et[e.id],r=e.x,n=e.y;if(a){let c=tt.calcLabelPosition(a);w.debug("Moving label "+e.label+" from (",r,",",n,") to (",c.x,",",c.y,") abc88"),t.updatedPath&&(r=c.x,n=c.y)}s.attr("transform",`translate(${r}, ${n+o/2})`)}if(e.startLabelLeft){let s=F[e.id].startLeft,r=e.x,n=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.startLabelRight){let s=F[e.id].startRight,r=e.x,n=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.endLabelLeft){let s=F[e.id].endLeft,r=e.x,n=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.endLabelRight){let s=F[e.id].endRight,r=e.x,n=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}},"positionEdgeLabel"),pr=h((e,t)=>{let a=e.x,i=e.y,o=Math.abs(t.x-a),s=Math.abs(t.y-i),r=e.width/2,n=e.height/2;return o>=r||s>=n},"outsideNode"),fr=h((e,t,a)=>{w.debug(`intersection calc abc89: - outsidePoint: ${JSON.stringify(t)} - insidePoint : ${JSON.stringify(a)} - node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let i=e.x,o=e.y,s=Math.abs(i-a.x),r=e.width/2,n=a.xMath.abs(i-t.x)*c){let u=a.y{w.debug("abc88 cutPathAtIntersect",e,t);let a=[],i=e[0],o=!1;return e.forEach(s=>{if(!pr(t,s)&&!o){let r=fr(t,i,s),n=!1;a.forEach(c=>{n=n||c.x===r.x&&c.y===r.y}),a.some(c=>c.x===r.x&&c.y===r.y)||a.push(r),o=!0}else i=s,o||a.push(s)}),a},"cutPathAtIntersect"),le=h(function(e,t,a,i,o,s,r){let n=a.points;w.debug("abc88 InsertEdge: edge=",a,"e=",t);let c=!1,x=s.node(t.v);var l=s.node(t.w);l?.intersect&&x?.intersect&&(n=n.slice(1,a.points.length-1),n.unshift(x.intersect(n[0])),n.push(l.intersect(n[n.length-1]))),a.toCluster&&(w.debug("to cluster abc88",i[a.toCluster]),n=ne(a.points,i[a.toCluster].node),c=!0),a.fromCluster&&(w.debug("from cluster abc88",i[a.fromCluster]),n=ne(n.reverse(),i[a.fromCluster].node).reverse(),c=!0);let u=n.filter(m=>!Number.isNaN(m.y)),y=Mt;a.curve&&(o==="graph"||o==="flowchart")&&(y=a.curve);let{x:f,y:k}=Wt(a),E=At().x(f).y(k).curve(y),L;switch(a.thickness){case"normal":L="edge-thickness-normal";break;case"thick":L="edge-thickness-thick";break;case"invisible":L="edge-thickness-thick";break;default:L=""}switch(a.pattern){case"solid":L+=" edge-pattern-solid";break;case"dotted":L+=" edge-pattern-dotted";break;case"dashed":L+=" edge-pattern-dashed";break}let T=e.append("path").attr("d",E(u)).attr("id",a.id).attr("class"," "+L+(a.classes?" "+a.classes:"")).attr("style",a.style),O="";(D().flowchart.arrowMarkerAbsolute||D().state.arrowMarkerAbsolute)&&(O=It(!0)),ie(T,a,O,r,o);let N={};return c&&(N.updatedPath=n),N.originalPath=a.points,N},"insertEdge");var xr=h(e=>{let t=new Set;for(let a of e)switch(a){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(a);break}return t},"expandAndDeduplicateDirections"),he=h((e,t,a)=>{let i=xr(e),o=2,s=t.height+2*a.padding,r=s/o,n=t.width+2*r+a.padding,c=a.padding/2;return i.has("right")&&i.has("left")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:r,y:0},{x:n/2,y:2*c},{x:n-r,y:0},{x:n,y:0},{x:n,y:-s/3},{x:n+2*c,y:-s/2},{x:n,y:-2*s/3},{x:n,y:-s},{x:n-r,y:-s},{x:n/2,y:-s-2*c},{x:r,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*c,y:-s/2},{x:0,y:-s/3}]:i.has("right")&&i.has("left")&&i.has("up")?[{x:r,y:0},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:r,y:-s},{x:0,y:-s/2}]:i.has("right")&&i.has("left")&&i.has("down")?[{x:0,y:0},{x:r,y:-s},{x:n-r,y:-s},{x:n,y:0}]:i.has("right")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:n,y:-r},{x:n,y:-s+r},{x:0,y:-s}]:i.has("left")&&i.has("up")&&i.has("down")?[{x:n,y:0},{x:0,y:-r},{x:0,y:-s+r},{x:n,y:-s}]:i.has("right")&&i.has("left")?[{x:r,y:0},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s},{x:0,y:-s/2}]:i.has("up")&&i.has("down")?[{x:n/2,y:0},{x:0,y:-c},{x:r,y:-c},{x:r,y:-s+c},{x:0,y:-s+c},{x:n/2,y:-s},{x:n,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c},{x:n,y:-c}]:i.has("right")&&i.has("up")?[{x:0,y:0},{x:n,y:-r},{x:0,y:-s}]:i.has("right")&&i.has("down")?[{x:0,y:0},{x:n,y:0},{x:0,y:-s}]:i.has("left")&&i.has("up")?[{x:n,y:0},{x:0,y:-r},{x:n,y:-s}]:i.has("left")&&i.has("down")?[{x:n,y:0},{x:0,y:0},{x:n,y:-s}]:i.has("right")?[{x:r,y:-c},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s+c}]:i.has("left")?[{x:r,y:0},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s},{x:0,y:-s/2}]:i.has("up")?[{x:r,y:-c},{x:r,y:-s+c},{x:0,y:-s+c},{x:n/2,y:-s},{x:n,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c}]:i.has("down")?[{x:n/2,y:0},{x:0,y:-c},{x:r,y:-c},{x:r,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c},{x:n,y:-c}]:[{x:0,y:0}]},"getArrowPoints");function br(e,t){return e.intersect(t)}h(br,"intersectNode");var ge=br;function yr(e,t,a,i){var o=e.x,s=e.y,r=o-i.x,n=s-i.y,c=Math.sqrt(t*t*n*n+a*a*r*r),x=Math.abs(t*a*r/c);i.x0}h(ue,"sameSign");var pe=kr;var fe=wr;function wr(e,t,a){var i=e.x,o=e.y,s=[],r=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(k){r=Math.min(r,k.x),n=Math.min(n,k.y)}):(r=Math.min(r,t.x),n=Math.min(n,t.y));for(var c=i-e.width/2-r,x=o-e.height/2-n,l=0;l1&&s.sort(function(k,E){var L=k.x-a.x,T=k.y-a.y,O=Math.sqrt(L*L+T*T),N=E.x-a.x,m=E.y-a.y,d=Math.sqrt(N*N+m*m);return O{var a=e.x,i=e.y,o=t.x-a,s=t.y-i,r=e.width/2,n=e.height/2,c,x;return Math.abs(s)*r>Math.abs(o)*n?(s<0&&(n=-n),c=s===0?0:n*o/s,x=n):(o<0&&(r=-r),c=r,x=o===0?0:r*s/o),{x:a+c,y:i+x}},"intersectRect"),xe=Lr;var v={node:ge,circle:de,ellipse:lt,polygon:fe,rect:xe};var A=h(async(e,t,a,i)=>{let o=D(),s,r=t.useHtmlLabels||z(o);a?s=a:s="node default";let n=e.insert("g").attr("class",s).attr("id",t.domId||t.id),c=n.insert("g").attr("class","label").attr("style",t.labelStyle),x;t.labelText===void 0?x="":x=typeof t.labelText=="string"?t.labelText:t.labelText[0];let l;t.labelType==="markdown"?l=et(c,xt(bt(x),o),{useHtmlLabels:r,width:t.width||o.flowchart.wrappingWidth,classes:"markdown-node-label"},o):l=await Y(c,xt(bt(x),o),t.labelStyle,!1,i);let u=l.getBBox(),y=t.padding/2;if(z(o)){let f=l.children[0],k=_(l);await Ht(f,x),u=f.getBoundingClientRect(),k.attr("width",u.width),k.attr("height",u.height)}return r?c.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"):c.attr("transform","translate(0, "+-u.height/2+")"),t.centerLabel&&c.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),c.insert("rect",":first-child"),{shapeSvg:n,bbox:u,halfPadding:y,label:c}},"labelHelper"),C=h((e,t)=>{let a=t.node().getBBox();e.width=a.width,e.height=a.height},"updateNodeBounds");function U(e,t,a,i){return e.insert("polygon",":first-child").attr("points",i.map(function(o){return o.x+","+o.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+a/2+")")}h(U,"insertPolygonShape");var Sr=h(async(e,t)=>{t.useHtmlLabels||z(D())||(t.centerLabel=!0);let{shapeSvg:i,bbox:o,halfPadding:s}=await A(e,t,"node "+t.classes,!0);w.info("Classes = ",t.classes);let r=i.insert("rect",":first-child");return r.attr("rx",t.rx).attr("ry",t.ry).attr("x",-o.width/2-s).attr("y",-o.height/2-s).attr("width",o.width+t.padding).attr("height",o.height+t.padding),C(t,r),t.intersect=function(n){return v.rect(t,n)},i},"note"),be=Sr;var ye=h(e=>e?" "+e:"","formatClass"),K=h((e,t)=>`${t||"node default"}${ye(e.classes)} ${ye(e.class)}`,"getClassesFromNode"),me=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.width+t.padding,s=i.height+t.padding,r=o+s,n=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}];w.info("Question main (Circle)");let c=U(a,r,r,n);return c.attr("style",t.style),C(t,c),t.intersect=function(x){return w.warn("Intersect called"),v.polygon(t,n,x)},a},"question"),Er=h((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=28,o=[{x:0,y:i/2},{x:i/2,y:0},{x:0,y:-i/2},{x:-i/2,y:0}];return a.insert("polygon",":first-child").attr("points",o.map(function(r){return r.x+","+r.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(r){return v.circle(t,14,r)},a},"choice"),Br=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=4,s=i.height+t.padding,r=s/o,n=i.width+2*r+t.padding,c=[{x:r,y:0},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:r,y:-s},{x:0,y:-s/2}],x=U(a,n,s,c);return x.attr("style",t.style),C(t,x),t.intersect=function(l){return v.polygon(t,c,l)},a},"hexagon"),_r=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,void 0,!0),o=2,s=i.height+2*t.padding,r=s/o,n=i.width+2*r+t.padding,c=he(t.directions,i,t),x=U(a,n,s,c);return x.attr("style",t.style),C(t,x),t.intersect=function(l){return v.polygon(t,c,l)},a},"block_arrow"),Dr=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.width+t.padding,s=i.height+t.padding,r=[{x:-s/2,y:0},{x:o,y:0},{x:o,y:-s},{x:-s/2,y:-s},{x:0,y:-s/2}];return U(a,o,s,r).attr("style",t.style),t.width=o+s,t.height=s,t.intersect=function(c){return v.polygon(t,r,c)},a},"rect_left_inv_arrow"),vr=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t),!0),o=i.width+t.padding,s=i.height+t.padding,r=[{x:-2*s/6,y:0},{x:o-s/6,y:0},{x:o+2*s/6,y:-s},{x:s/6,y:-s}],n=U(a,o,s,r);return n.attr("style",t.style),C(t,n),t.intersect=function(c){return v.polygon(t,r,c)},a},"lean_right"),Tr=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.width+t.padding,s=i.height+t.padding,r=[{x:2*s/6,y:0},{x:o+s/6,y:0},{x:o-2*s/6,y:-s},{x:-s/6,y:-s}],n=U(a,o,s,r);return n.attr("style",t.style),C(t,n),t.intersect=function(c){return v.polygon(t,r,c)},a},"lean_left"),Nr=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.width+t.padding,s=i.height+t.padding,r=[{x:-2*s/6,y:0},{x:o+2*s/6,y:0},{x:o-s/6,y:-s},{x:s/6,y:-s}],n=U(a,o,s,r);return n.attr("style",t.style),C(t,n),t.intersect=function(c){return v.polygon(t,r,c)},a},"trapezoid"),Cr=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.width+t.padding,s=i.height+t.padding,r=[{x:s/6,y:0},{x:o-s/6,y:0},{x:o+2*s/6,y:-s},{x:-2*s/6,y:-s}],n=U(a,o,s,r);return n.attr("style",t.style),C(t,n),t.intersect=function(c){return v.polygon(t,r,c)},a},"inv_trapezoid"),Ir=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.width+t.padding,s=i.height+t.padding,r=[{x:0,y:0},{x:o+s/2,y:0},{x:o,y:-s/2},{x:o+s/2,y:-s},{x:0,y:-s}],n=U(a,o,s,r);return n.attr("style",t.style),C(t,n),t.intersect=function(c){return v.polygon(t,r,c)},a},"rect_right_inv_arrow"),Or=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.width+t.padding,s=o/2,r=s/(2.5+o/50),n=i.height+r+t.padding,c="M 0,"+r+" a "+s+","+r+" 0,0,0 "+o+" 0 a "+s+","+r+" 0,0,0 "+-o+" 0 l 0,"+n+" a "+s+","+r+" 0,0,0 "+o+" 0 l 0,"+-n,x=a.attr("label-offset-y",r).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-o/2+","+-(n/2+r)+")");return C(t,x),t.intersect=function(l){let u=v.rect(t,l),y=u.x-t.x;if(s!=0&&(Math.abs(y)t.height/2-r)){let f=r*r*(1-y*y/(s*s));f!=0&&(f=Math.sqrt(f)),f=r-f,l.y-t.y>0&&(f=-f),u.y+=f}return u},a},"cylinder"),Rr=h(async(e,t)=>{let{shapeSvg:a,bbox:i,halfPadding:o}=await A(e,t,"node "+t.classes+" "+t.class,!0),s=a.insert("rect",":first-child"),r=t.positioned?t.width:i.width+t.padding,n=t.positioned?t.height:i.height+t.padding,c=t.positioned?-r/2:-i.width/2-o,x=t.positioned?-n/2:-i.height/2-o;if(s.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",c).attr("y",x).attr("width",r).attr("height",n),t.props){let l=new Set(Object.keys(t.props));t.props.borders&&(Bt(s,t.props.borders,r,n),l.delete("borders")),l.forEach(u=>{w.warn(`Unknown node property ${u}`)})}return C(t,s),t.intersect=function(l){return v.rect(t,l)},a},"rect"),zr=h(async(e,t)=>{let{shapeSvg:a,bbox:i,halfPadding:o}=await A(e,t,"node "+t.classes,!0),s=a.insert("rect",":first-child"),r=t.positioned?t.width:i.width+t.padding,n=t.positioned?t.height:i.height+t.padding,c=t.positioned?-r/2:-i.width/2-o,x=t.positioned?-n/2:-i.height/2-o;if(s.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",c).attr("y",x).attr("width",r).attr("height",n),t.props){let l=new Set(Object.keys(t.props));t.props.borders&&(Bt(s,t.props.borders,r,n),l.delete("borders")),l.forEach(u=>{w.warn(`Unknown node property ${u}`)})}return C(t,s),t.intersect=function(l){return v.rect(t,l)},a},"composite"),Ar=h(async(e,t)=>{let{shapeSvg:a}=await A(e,t,"label",!0);w.trace("Classes = ",t.class);let i=a.insert("rect",":first-child"),o=0,s=0;if(i.attr("width",o).attr("height",s),a.attr("class","label edgeLabel"),t.props){let r=new Set(Object.keys(t.props));t.props.borders&&(Bt(i,t.props.borders,o,s),r.delete("borders")),r.forEach(n=>{w.warn(`Unknown node property ${n}`)})}return C(t,i),t.intersect=function(r){return v.rect(t,r)},a},"labelRect");function Bt(e,t,a,i){let o=[],s=h(n=>{o.push(n,0)},"addBorder"),r=h(n=>{o.push(0,n)},"skipBorder");t.includes("t")?(w.debug("add top border"),s(a)):r(a),t.includes("r")?(w.debug("add right border"),s(i)):r(i),t.includes("b")?(w.debug("add bottom border"),s(a)):r(a),t.includes("l")?(w.debug("add left border"),s(i)):r(i),e.attr("stroke-dasharray",o.join(" "))}h(Bt,"applyNodePropertyBorders");var Mr=h(async(e,t)=>{let a;t.classes?a="node "+t.classes:a="node default";let i=e.insert("g").attr("class",a).attr("id",t.domId||t.id),o=i.insert("rect",":first-child"),s=i.insert("line"),r=i.insert("g").attr("class","label"),n=t.labelText.flat?t.labelText.flat():t.labelText,c="";typeof n=="object"?c=n[0]:c=n,w.info("Label text abc79",c,n,typeof n=="object");let x=await Y(r,c,t.labelStyle,!0,!0),l={width:0,height:0};if(z(D())){let E=x.children[0],L=_(x);l=E.getBoundingClientRect(),L.attr("width",l.width),L.attr("height",l.height)}w.info("Text 2",n);let u=n.slice(1,n.length),y=x.getBBox(),f=await Y(r,u.join?u.join("
"):u,t.labelStyle,!0,!0);if(z(D())){let E=f.children[0],L=_(f);l=E.getBoundingClientRect(),L.attr("width",l.width),L.attr("height",l.height)}let k=t.padding/2;return _(f).attr("transform","translate( "+(l.width>y.width?0:(y.width-l.width)/2)+", "+(y.height+k+5)+")"),_(x).attr("transform","translate( "+(l.width{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.height+t.padding,s=i.width+o/4+t.padding,r=a.insert("rect",":first-child").attr("style",t.style).attr("rx",o/2).attr("ry",o/2).attr("x",-s/2).attr("y",-o/2).attr("width",s).attr("height",o);return C(t,r),t.intersect=function(n){return v.rect(t,n)},a},"stadium"),Hr=h(async(e,t)=>{let{shapeSvg:a,bbox:i,halfPadding:o}=await A(e,t,K(t,void 0),!0),s=a.insert("circle",":first-child");return s.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+o).attr("width",i.width+t.padding).attr("height",i.height+t.padding),w.info("Circle main"),C(t,s),t.intersect=function(r){return w.info("Circle intersect",t,i.width/2+o,r),v.circle(t,i.width/2+o,r)},a},"circle"),Yr=h(async(e,t)=>{let{shapeSvg:a,bbox:i,halfPadding:o}=await A(e,t,K(t,void 0),!0),s=5,r=a.insert("g",":first-child"),n=r.insert("circle"),c=r.insert("circle");return r.attr("class",t.class),n.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+o+s).attr("width",i.width+t.padding+s*2).attr("height",i.height+t.padding+s*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+o).attr("width",i.width+t.padding).attr("height",i.height+t.padding),w.info("DoubleCircle main"),C(t,n),t.intersect=function(x){return w.info("DoubleCircle intersect",t,i.width/2+o+s,x),v.circle(t,i.width/2+o+s,x)},a},"doublecircle"),Wr=h(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,K(t,void 0),!0),o=i.width+t.padding,s=i.height+t.padding,r=[{x:0,y:0},{x:o,y:0},{x:o,y:-s},{x:0,y:-s},{x:0,y:0},{x:-8,y:0},{x:o+8,y:0},{x:o+8,y:-s},{x:-8,y:-s},{x:-8,y:0}],n=U(a,o,s,r);return n.attr("style",t.style),C(t,n),t.intersect=function(c){return v.polygon(t,r,c)},a},"subroutine"),Pr=h((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=a.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),C(t,i),t.intersect=function(o){return v.circle(t,7,o)},a},"start"),ke=h((e,t,a)=>{let i=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),o=70,s=10;a==="LR"&&(o=10,s=70);let r=i.append("rect").attr("x",-1*o/2).attr("y",-1*s/2).attr("width",o).attr("height",s).attr("class","fork-join");return C(t,r),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(n){return v.rect(t,n)},i},"forkJoin"),Kr=h((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=a.insert("circle",":first-child"),o=a.insert("circle",":first-child");return o.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),i.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),C(t,o),t.intersect=function(s){return v.circle(t,7,s)},a},"end"),jr=h(async(e,t)=>{let a=t.padding/2,i=4,o=8,s;t.classes?s="node "+t.classes:s="node default";let r=e.insert("g").attr("class",s).attr("id",t.domId||t.id),n=r.insert("rect",":first-child"),c=r.insert("line"),x=r.insert("line"),l=0,u=i,y=r.insert("g").attr("class","label"),f=0,k=t.classData.annotations?.[0],E=t.classData.annotations[0]?"\xAB"+t.classData.annotations[0]+"\xBB":"",L=await Y(y,E,t.labelStyle,!0,!0),T=L.getBBox();if(z(D())){let B=L.children[0],g=_(L);T=B.getBoundingClientRect(),g.attr("width",T.width),g.attr("height",T.height)}t.classData.annotations[0]&&(u+=T.height+i,l+=T.width);let O=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(z(D())?O+="<"+t.classData.type+">":O+="<"+t.classData.type+">");let N=await Y(y,O,t.labelStyle,!0,!0);_(N).attr("class","classTitle");let m=N.getBBox();if(z(D())){let B=N.children[0],g=_(N);m=B.getBoundingClientRect(),g.attr("width",m.width),g.attr("height",m.height)}u+=m.height+i,m.width>l&&(l=m.width);let d=[];t.classData.members.forEach(async B=>{let g=B.getDisplayDetails(),W=g.displayText;z(D())&&(W=W.replace(//g,">"));let p=await Y(y,W,g.cssStyle?g.cssStyle:t.labelStyle,!0,!0),R=p.getBBox();if(z(D())){let Z=p.children[0],X=_(p);R=Z.getBoundingClientRect(),X.attr("width",R.width),X.attr("height",R.height)}R.width>l&&(l=R.width),u+=R.height+i,d.push(p)}),u+=o;let b=[];if(t.classData.methods.forEach(async B=>{let g=B.getDisplayDetails(),W=g.displayText;z(D())&&(W=W.replace(//g,">"));let p=await Y(y,W,g.cssStyle?g.cssStyle:t.labelStyle,!0,!0),R=p.getBBox();if(z(D())){let Z=p.children[0],X=_(p);R=Z.getBoundingClientRect(),X.attr("width",R.width),X.attr("height",R.height)}R.width>l&&(l=R.width),u+=R.height+i,b.push(p)}),u+=o,k){let B=(l-T.width)/2;_(L).attr("transform","translate( "+(-1*l/2+B)+", "+-1*u/2+")"),f=T.height+i}let S=(l-m.width)/2;return _(N).attr("transform","translate( "+(-1*l/2+S)+", "+(-1*u/2+f)+")"),f+=m.height+i,c.attr("class","divider").attr("x1",-l/2-a).attr("x2",l/2+a).attr("y1",-u/2-a+o+f).attr("y2",-u/2-a+o+f),f+=o,d.forEach(B=>{_(B).attr("transform","translate( "+-l/2+", "+(-1*u/2+f+o/2)+")");let g=B?.getBBox();f+=(g?.height??0)+i}),f+=o,x.attr("class","divider").attr("x1",-l/2-a).attr("x2",l/2+a).attr("y1",-u/2-a+o+f).attr("y2",-u/2-a+o+f),f+=o,b.forEach(B=>{_(B).attr("transform","translate( "+-l/2+", "+(-1*u/2+f)+")");let g=B?.getBBox();f+=(g?.height??0)+i}),n.attr("style",t.style).attr("class","outer title-state").attr("x",-l/2-a).attr("y",-(u/2)-a).attr("width",l+t.padding).attr("height",u+t.padding),C(t,n),t.intersect=function(B){return v.rect(t,B)},r},"class_box"),we={rhombus:me,composite:zr,question:me,rect:Rr,labelRect:Ar,rectWithTitle:Mr,choice:Er,circle:Hr,doublecircle:Yr,stadium:Fr,hexagon:Br,block_arrow:_r,rect_left_inv_arrow:Dr,lean_right:vr,lean_left:Tr,trapezoid:Nr,inv_trapezoid:Cr,rect_right_inv_arrow:Ir,cylinder:Or,start:Pr,end:Kr,note:be,subroutine:Wr,fork:ke,join:ke,class_box:jr},ht={},_t=h(async(e,t,a)=>{let i,o;if(t.link){let s;D().securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),i=e.insert("svg:a").attr("xlink:href",t.link).attr("target",s),o=await we[t.shape](i,t,a)}else o=await we[t.shape](e,t,a),i=o;return t.tooltip&&o.attr("title",t.tooltip),t.class&&o.attr("class","node default "+t.class),ht[t.id]=i,t.haveCallback&&ht[t.id].attr("class",ht[t.id].attr("class")+" clickable"),i},"insertNode");var Le=h(e=>{let t=ht[e.id];w.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let a=8,i=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+i-e.width/2)+", "+(e.y-e.height/2-a)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),i},"positionNode");function Se(e,t,a=!1){let i=e,o="default";(i?.classes?.length||0)>0&&(o=(i?.classes??[]).join(" ")),o=o+" flowchart-label";let s=0,r="",n;switch(i.type){case"round":s=5,r="rect";break;case"composite":s=0,r="composite",n=0;break;case"square":r="rect";break;case"diamond":r="question";break;case"hexagon":r="hexagon";break;case"block_arrow":r="block_arrow";break;case"odd":r="rect_left_inv_arrow";break;case"lean_right":r="lean_right";break;case"lean_left":r="lean_left";break;case"trapezoid":r="trapezoid";break;case"inv_trapezoid":r="inv_trapezoid";break;case"rect_left_inv_arrow":r="rect_left_inv_arrow";break;case"circle":r="circle";break;case"ellipse":r="ellipse";break;case"stadium":r="stadium";break;case"subroutine":r="subroutine";break;case"cylinder":r="cylinder";break;case"group":r="rect";break;case"doublecircle":r="doublecircle";break;default:r="rect"}let c=Ft(i?.styles??[]),x=i.label,l=i.size??{width:0,height:0,x:0,y:0};return{labelStyle:c.labelStyle,shape:r,labelText:x,rx:s,ry:s,class:o,style:c.style,id:i.id,directions:i.directions,width:l.width,height:l.height,x:l.x,y:l.y,positioned:a,intersect:void 0,type:i.type,padding:n??q()?.block?.padding??0}}h(Se,"getNodeFromBlock");async function Vr(e,t,a){let i=Se(t,a,!1);if(i.type==="group")return;let o=q(),s=await _t(e,i,{config:o}),r=s.node().getBBox(),n=a.getBlock(i.id);n.size={width:r.width,height:r.height,x:0,y:0,node:s},a.setBlock(n),s.remove()}h(Vr,"calculateBlockSize");async function Ur(e,t,a){let i=Se(t,a,!0);if(a.getBlock(i.id).type!=="space"){let s=q();await _t(e,i,{config:s}),t.intersect=i?.intersect,Le(i)}}h(Ur,"insertBlockPositioned");async function Dt(e,t,a,i){for(let o of t)await i(e,o,a),o.children&&await Dt(e,o.children,a,i)}h(Dt,"performOperations");async function Ee(e,t,a){await Dt(e,t,a,Vr)}h(Ee,"calculateBlockSizes");async function Be(e,t,a){await Dt(e,t,a,Ur)}h(Be,"insertBlocks");async function _e(e,t,a,i,o){let s=new Kt({multigraph:!0,compound:!0});s.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let r of a)r.size&&s.setNode(r.id,{width:r.size.width,height:r.size.height,intersect:r.intersect});for(let r of t)if(r.start&&r.end){let n=i.getBlock(r.start),c=i.getBlock(r.end);if(n?.size&&c?.size){let x=n.size,l=c.size,u=[{x:x.x,y:x.y},{x:x.x+(l.x-x.x)/2,y:x.y+(l.y-x.y)/2},{x:l.x,y:l.y}];le(e,{v:r.start,w:r.end,name:r.id},{...r,arrowTypeEnd:r.arrowTypeEnd,arrowTypeStart:r.arrowTypeStart,points:u,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",s,o),r.label&&(await oe(e,{...r,label:r.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:r.arrowTypeEnd,arrowTypeStart:r.arrowTypeStart,points:u,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),ce({...r,x:u[1].x,y:u[1].y},{originalPath:u}))}}}h(_e,"insertEdges");var Xr=h(function(e,t){return t.db.getClasses()},"getClasses"),Gr=h(async function(e,t,a,i){let{securityLevel:o,block:s}=q(),r=i.db,n;o==="sandbox"&&(n=_("#i"+t));let c=o==="sandbox"?_(n.nodes()[0].contentDocument.body):_("body"),x=o==="sandbox"?c.select(`[id="${t}"]`):_(`[id="${t}"]`);$t(x,["point","circle","cross"],i.type,t);let u=r.getBlocks(),y=r.getBlocksFlat(),f=r.getEdges(),k=x.insert("g").attr("class","block");await Ee(k,u,r);let E=ae(r);if(await Be(k,u,r),await _e(k,f,y,r,t),E){let L=E,T=Math.max(1,Math.round(.125*(L.width/L.height))),O=L.height+T+10,N=L.width+10,{useMaxWidth:m}=s;Rt(x,O,N,!!m),w.debug("Here Bounds",E,L),x.attr("viewBox",`${L.x-5} ${L.y-5} ${L.width+10} ${L.height+10}`)}},"draw"),De={draw:Gr,getClasses:Xr};var ti={parser:Vt,db:Jt,renderer:De,styles:Qt};export{ti as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-HG7WUIX4.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-HG7WUIX4.mjs.map deleted file mode 100644 index 3341458..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/blockDiagram-HG7WUIX4.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/block/parser/block.jison", "../../../src/diagrams/block/blockDB.ts", "../../../src/diagrams/block/styles.ts", "../../../src/dagre-wrapper/markers.js", "../../../src/diagrams/block/layout.ts", "../../../src/dagre-wrapper/createLabel.js", "../../../src/dagre-wrapper/edgeMarker.ts", "../../../src/dagre-wrapper/edges.js", "../../../src/dagre-wrapper/blockArrowHelper.ts", "../../../src/dagre-wrapper/intersect/intersect-node.js", "../../../src/dagre-wrapper/intersect/intersect-ellipse.js", "../../../src/dagre-wrapper/intersect/intersect-circle.js", "../../../src/dagre-wrapper/intersect/intersect-line.js", "../../../src/dagre-wrapper/intersect/intersect-polygon.js", "../../../src/dagre-wrapper/intersect/intersect-rect.js", "../../../src/dagre-wrapper/intersect/index.js", "../../../src/dagre-wrapper/shapes/util.js", "../../../src/dagre-wrapper/shapes/note.js", "../../../src/dagre-wrapper/nodes.js", "../../../src/diagrams/block/renderHelpers.ts", "../../../src/diagrams/block/blockRenderer.ts", "../../../src/diagrams/block/blockDiagram.ts"], - "sourcesContent": ["/* 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,15],$V1=[1,7],$V2=[1,13],$V3=[1,14],$V4=[1,19],$V5=[1,16],$V6=[1,17],$V7=[1,18],$V8=[8,30],$V9=[8,10,21,28,29,30,31,39,43,46],$Va=[1,23],$Vb=[1,24],$Vc=[8,10,15,16,21,28,29,30,31,39,43,46],$Vd=[8,10,15,16,21,27,28,29,30,31,39,43,46],$Ve=[1,49];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"spaceLines\":3,\"SPACELINE\":4,\"NL\":5,\"separator\":6,\"SPACE\":7,\"EOF\":8,\"start\":9,\"BLOCK_DIAGRAM_KEY\":10,\"document\":11,\"stop\":12,\"statement\":13,\"link\":14,\"LINK\":15,\"START_LINK\":16,\"LINK_LABEL\":17,\"STR\":18,\"nodeStatement\":19,\"columnsStatement\":20,\"SPACE_BLOCK\":21,\"blockStatement\":22,\"classDefStatement\":23,\"cssClassStatement\":24,\"styleStatement\":25,\"node\":26,\"SIZE\":27,\"COLUMNS\":28,\"id-block\":29,\"end\":30,\"NODE_ID\":31,\"nodeShapeNLabel\":32,\"dirList\":33,\"DIR\":34,\"NODE_DSTART\":35,\"NODE_DEND\":36,\"BLOCK_ARROW_START\":37,\"BLOCK_ARROW_END\":38,\"classDef\":39,\"CLASSDEF_ID\":40,\"CLASSDEF_STYLEOPTS\":41,\"DEFAULT\":42,\"class\":43,\"CLASSENTITY_IDS\":44,\"STYLECLASS\":45,\"style\":46,\"STYLE_ENTITY_IDS\":47,\"STYLE_DEFINITION_DATA\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACELINE\",5:\"NL\",7:\"SPACE\",8:\"EOF\",10:\"BLOCK_DIAGRAM_KEY\",15:\"LINK\",16:\"START_LINK\",17:\"LINK_LABEL\",18:\"STR\",21:\"SPACE_BLOCK\",27:\"SIZE\",28:\"COLUMNS\",29:\"id-block\",30:\"end\",31:\"NODE_ID\",34:\"DIR\",35:\"NODE_DSTART\",36:\"NODE_DEND\",37:\"BLOCK_ARROW_START\",38:\"BLOCK_ARROW_END\",39:\"classDef\",40:\"CLASSDEF_ID\",41:\"CLASSDEF_STYLEOPTS\",42:\"DEFAULT\",43:\"class\",44:\"CLASSENTITY_IDS\",45:\"STYLECLASS\",46:\"style\",47:\"STYLE_ENTITY_IDS\",48:\"STYLE_DEFINITION_DATA\"},\nproductions_: [0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],\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.getLogger().debug('Rule: separator (NL) ');\nbreak;\ncase 5:\nyy.getLogger().debug('Rule: separator (Space) ');\nbreak;\ncase 6:\nyy.getLogger().debug('Rule: separator (EOF) ');\nbreak;\ncase 7:\n yy.getLogger().debug(\"Rule: hierarchy: \", $$[$0-1]); yy.setHierarchy($$[$0-1]); \nbreak;\ncase 8:\nyy.getLogger().debug('Stop NL ');\nbreak;\ncase 9:\nyy.getLogger().debug('Stop EOF ');\nbreak;\ncase 10:\nyy.getLogger().debug('Stop NL2 ');\nbreak;\ncase 11:\nyy.getLogger().debug('Stop EOF2 ');\nbreak;\ncase 12:\n yy.getLogger().debug(\"Rule: statement: \", $$[$0]); typeof $$[$0].length === 'number'?this.$ = $$[$0]:this.$ = [$$[$0]]; \nbreak;\ncase 13:\n yy.getLogger().debug(\"Rule: statement #2: \", $$[$0-1]); this.$ = [$$[$0-1]].concat($$[$0]); \nbreak;\ncase 14:\n yy.getLogger().debug(\"Rule: link: \", $$[$0], yytext); this.$={edgeTypeStr: $$[$0], label:''}; \nbreak;\ncase 15:\n yy.getLogger().debug(\"Rule: LABEL link: \", $$[$0-3], $$[$0-1], $$[$0]); this.$={edgeTypeStr: $$[$0], label:$$[$0-1]}; \nbreak;\ncase 18:\n const num=parseInt($$[$0]); const spaceId = yy.generateId(); this.$ = { id: spaceId, type:'space', label:'', width: num, children: [] }\nbreak;\ncase 23:\n\n yy.getLogger().debug('Rule: (nodeStatement link node) ', $$[$0-2], $$[$0-1], $$[$0], ' typestr: ',$$[$0-1].edgeTypeStr);\n const edgeData = yy.edgeStrToEdgeData($$[$0-1].edgeTypeStr)\n this.$ = [\n {id: $$[$0-2].id, label: $$[$0-2].label, type:$$[$0-2].type, directions: $$[$0-2].directions},\n {id: $$[$0-2].id + '-' + $$[$0].id, start: $$[$0-2].id, end: $$[$0].id, label: $$[$0-1].label, type: 'edge', directions: $$[$0].directions, arrowTypeEnd: edgeData, arrowTypeStart: 'arrow_open' },\n {id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions}\n ];\n \nbreak;\ncase 24:\n yy.getLogger().debug('Rule: nodeStatement (abc88 node size) ', $$[$0-1], $$[$0]); this.$ = {id: $$[$0-1].id, label: $$[$0-1].label, type: yy.typeStr2Type($$[$0-1].typeStr), directions: $$[$0-1].directions, widthInColumns: parseInt($$[$0],10)}; \nbreak;\ncase 25:\n yy.getLogger().debug('Rule: nodeStatement (node) ', $$[$0]); this.$ = {id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions, widthInColumns:1}; \nbreak;\ncase 26:\n yy.getLogger().debug('APA123', this? this:'na'); yy.getLogger().debug(\"COLUMNS: \", $$[$0]); this.$ = {type: 'column-setting', columns: $$[$0] === 'auto'?-1:parseInt($$[$0]) } \nbreak;\ncase 27:\n yy.getLogger().debug('Rule: id-block statement : ', $$[$0-2], $$[$0-1]); const id2 = yy.generateId(); this.$ = { ...$$[$0-2], type:'composite', children: $$[$0-1] }; \nbreak;\ncase 28:\n yy.getLogger().debug('Rule: blockStatement : ', $$[$0-2], $$[$0-1], $$[$0]); const id = yy.generateId(); this.$ = { id, type:'composite', label:'', children: $$[$0-1] }; \nbreak;\ncase 29:\n yy.getLogger().debug(\"Rule: node (NODE_ID separator): \", $$[$0]); this.$ = { id: $$[$0] }; \nbreak;\ncase 30:\n\n yy.getLogger().debug(\"Rule: node (NODE_ID nodeShapeNLabel separator): \", $$[$0-1], $$[$0]);\n this.$ = { id: $$[$0-1], label: $$[$0].label, typeStr: $$[$0].typeStr, directions: $$[$0].directions };\n \nbreak;\ncase 31:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0]); this.$ = [$$[$0]]; \nbreak;\ncase 32:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0-1], $$[$0]); this.$ = [$$[$0-1]].concat($$[$0]); \nbreak;\ncase 33:\n yy.getLogger().debug(\"Rule: nodeShapeNLabel: \", $$[$0-2], $$[$0-1], $$[$0]); this.$ = { typeStr: $$[$0-2] + $$[$0], label: $$[$0-1] }; \nbreak;\ncase 34:\n yy.getLogger().debug(\"Rule: BLOCK_ARROW nodeShapeNLabel: \", $$[$0-3], $$[$0-2], \" #3:\",$$[$0-1], $$[$0]); this.$ = { typeStr: $$[$0-3] + $$[$0], label: $$[$0-2], directions: $$[$0-1]}; \nbreak;\ncase 35: case 36:\n\n this.$ = { type: 'classDef', id: $$[$0-1].trim(), css: $$[$0].trim() };\n \nbreak;\ncase 37:\n\n //log.debug('apply class: id(s): ',$$[$0-1], ' style class: ', $$[$0]);\n this.$={ type: 'applyClass', id: $$[$0-1].trim(), styleClass: $$[$0].trim() };\n \nbreak;\ncase 38:\n\n this.$={ type: 'applyStyles', id: $$[$0-1].trim(), stylesStr: $$[$0].trim() };\n \nbreak;\n}\n},\ntable: [{9:1,10:[1,2]},{1:[3]},{10:$V0,11:3,13:4,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{8:[1,20]},o($V8,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:$V0,21:$V1,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7}),o($V9,[2,16],{14:22,15:$Va,16:$Vb}),o($V9,[2,17]),o($V9,[2,18]),o($V9,[2,19]),o($V9,[2,20]),o($V9,[2,21]),o($V9,[2,22]),o($Vc,[2,25],{27:[1,25]}),o($V9,[2,26]),{19:26,26:12,31:$V4},{10:$V0,11:27,13:4,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},o($Vd,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},o($V8,[2,13]),{26:35,31:$V4},{31:[2,14]},{17:[1,36]},o($Vc,[2,24]),{10:$V0,11:37,13:4,14:22,15:$Va,16:$Vb,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},o($Vd,[2,30]),{18:[1,43]},{18:[1,44]},o($Vc,[2,23]),{18:[1,45]},{30:[1,46]},o($V9,[2,28]),o($V9,[2,35]),o($V9,[2,36]),o($V9,[2,37]),o($V9,[2,38]),{36:[1,47]},{33:48,34:$Ve},{15:[1,50]},o($V9,[2,27]),o($Vd,[2,33]),{38:[1,51]},{33:52,34:$Ve,38:[2,31]},{31:[2,15]},o($Vd,[2,34]),{38:[2,32]}],\ndefaultActions: {20:[2,7],23:[2,14],50:[2,15],52:[2,32]},\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\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: yy.getLogger().debug('Found block-beta'); return 10; \nbreak;\ncase 1: yy.getLogger().debug('Found id-block'); return 29; \nbreak;\ncase 2: yy.getLogger().debug('Found block'); return 10; \nbreak;\ncase 3: yy.getLogger().debug('.', yy_.yytext); /* skip all whitespace */ \nbreak;\ncase 4:yy.getLogger().debug('_', yy_.yytext); /* skip all whitespace */ \nbreak;\ncase 5: return 5 \nbreak;\ncase 6: yy_.yytext=-1; return 28; \nbreak;\ncase 7: yy_.yytext = yy_.yytext.replace(/columns\\s+/,''); yy.getLogger().debug('COLUMNS (LEX)', yy_.yytext); return 28; \nbreak;\ncase 8: this.pushState(\"md_string\");\nbreak;\ncase 9: return \"MD_STR\";\nbreak;\ncase 10: this.popState();\nbreak;\ncase 11:this.pushState(\"string\");\nbreak;\ncase 12: yy.getLogger().debug('LEX: POPPING STR:', yy_.yytext);this.popState();\nbreak;\ncase 13: yy.getLogger().debug('LEX: STR end:', yy_.yytext); return \"STR\";\nbreak;\ncase 14: yy_.yytext = yy_.yytext.replace(/space\\:/,'');yy.getLogger().debug('SPACE NUM (LEX)', yy_.yytext); return 21; \nbreak;\ncase 15: yy_.yytext = '1'; yy.getLogger().debug('COLUMNS (LEX)', yy_.yytext); return 21; \nbreak;\ncase 16:return 42;\nbreak;\ncase 17:return 'LINKSTYLE';\nbreak;\ncase 18:return 'INTERPOLATE';\nbreak;\ncase 19: this.pushState('CLASSDEF'); return 39; \nbreak;\ncase 20: this.popState(); this.pushState('CLASSDEFID'); return 'DEFAULT_CLASSDEF_ID' \nbreak;\ncase 21: this.popState(); this.pushState('CLASSDEFID'); return 40 \nbreak;\ncase 22: this.popState(); return 41 \nbreak;\ncase 23: this.pushState('CLASS'); return 43; \nbreak;\ncase 24: this.popState(); this.pushState('CLASS_STYLE'); return 44 \nbreak;\ncase 25: this.popState(); return 45 \nbreak;\ncase 26: this.pushState('STYLE_STMNT'); return 46; \nbreak;\ncase 27: this.popState(); this.pushState('STYLE_DEFINITION'); return 47 \nbreak;\ncase 28: this.popState(); return 48 \nbreak;\ncase 29: this.pushState(\"acc_title\");return 'acc_title'; \nbreak;\ncase 30: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 31: this.pushState(\"acc_descr\");return 'acc_descr'; \nbreak;\ncase 32: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 33: this.pushState(\"acc_descr_multiline\");\nbreak;\ncase 34: this.popState(); \nbreak;\ncase 35:return \"acc_descr_multiline_value\";\nbreak;\ncase 36:return 30;\nbreak;\ncase 37: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 38: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 39: this.popState();yy.getLogger().debug('Lex: ))'); return \"NODE_DEND\"; \nbreak;\ncase 40: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 41: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 42: this.popState();yy.getLogger().debug('Lex: (-'); return \"NODE_DEND\"; \nbreak;\ncase 43: this.popState();yy.getLogger().debug('Lex: -)'); return \"NODE_DEND\"; \nbreak;\ncase 44: this.popState();yy.getLogger().debug('Lex: (('); return \"NODE_DEND\"; \nbreak;\ncase 45: this.popState();yy.getLogger().debug('Lex: ]]'); return \"NODE_DEND\"; \nbreak;\ncase 46: this.popState();yy.getLogger().debug('Lex: ('); return \"NODE_DEND\"; \nbreak;\ncase 47: this.popState();yy.getLogger().debug('Lex: ])'); return \"NODE_DEND\"; \nbreak;\ncase 48: this.popState();yy.getLogger().debug('Lex: /]'); return \"NODE_DEND\"; \nbreak;\ncase 49: this.popState();yy.getLogger().debug('Lex: /]'); return \"NODE_DEND\"; \nbreak;\ncase 50: this.popState();yy.getLogger().debug('Lex: )]'); return \"NODE_DEND\"; \nbreak;\ncase 51: this.popState();yy.getLogger().debug('Lex: )'); return \"NODE_DEND\"; \nbreak;\ncase 52: this.popState();yy.getLogger().debug('Lex: ]>'); return \"NODE_DEND\"; \nbreak;\ncase 53: this.popState();yy.getLogger().debug('Lex: ]'); return \"NODE_DEND\"; \nbreak;\ncase 54: yy.getLogger().debug('Lexa: -)'); this.pushState('NODE');return 35; \nbreak;\ncase 55: yy.getLogger().debug('Lexa: (-'); this.pushState('NODE');return 35; \nbreak;\ncase 56: yy.getLogger().debug('Lexa: ))'); this.pushState('NODE');return 35; \nbreak;\ncase 57: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 58: yy.getLogger().debug('Lex: ((('); this.pushState('NODE');return 35; \nbreak;\ncase 59: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 60: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 61: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 62: yy.getLogger().debug('Lexc: >'); this.pushState('NODE');return 35; \nbreak;\ncase 63: yy.getLogger().debug('Lexa: (['); this.pushState('NODE');return 35; \nbreak;\ncase 64: yy.getLogger().debug('Lexa: )'); this.pushState('NODE');return 35; \nbreak;\ncase 65: this.pushState('NODE');return 35; \nbreak;\ncase 66: this.pushState('NODE');return 35; \nbreak;\ncase 67: this.pushState('NODE');return 35; \nbreak;\ncase 68: this.pushState('NODE');return 35; \nbreak;\ncase 69: this.pushState('NODE');return 35; \nbreak;\ncase 70: this.pushState('NODE');return 35; \nbreak;\ncase 71: this.pushState('NODE');return 35; \nbreak;\ncase 72: yy.getLogger().debug('Lexa: ['); this.pushState('NODE');return 35; \nbreak;\ncase 73: this.pushState('BLOCK_ARROW');yy.getLogger().debug('LEX ARR START');return 37; \nbreak;\ncase 74: yy.getLogger().debug('Lex: NODE_ID', yy_.yytext);return 31; \nbreak;\ncase 75: yy.getLogger().debug('Lex: EOF', yy_.yytext);return 8; \nbreak;\ncase 76: this.pushState(\"md_string\");\nbreak;\ncase 77: this.pushState(\"md_string\");\nbreak;\ncase 78: return \"NODE_DESCR\";\nbreak;\ncase 79: this.popState();\nbreak;\ncase 80: yy.getLogger().debug('Lex: Starting string');this.pushState(\"string\");\nbreak;\ncase 81: yy.getLogger().debug('LEX ARR: Starting string');this.pushState(\"string\");\nbreak;\ncase 82: yy.getLogger().debug('LEX: NODE_DESCR:', yy_.yytext); return \"NODE_DESCR\";\nbreak;\ncase 83:yy.getLogger().debug('LEX POPPING');this.popState();\nbreak;\ncase 84: yy.getLogger().debug('Lex: =>BAE'); this.pushState('ARROW_DIR'); \nbreak;\ncase 85: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (right): dir:',yy_.yytext);return \"DIR\"; \nbreak;\ncase 86: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (left):',yy_.yytext);return \"DIR\"; \nbreak;\ncase 87: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (x):',yy_.yytext); return \"DIR\"; \nbreak;\ncase 88: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (y):',yy_.yytext); return \"DIR\"; \nbreak;\ncase 89: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (up):',yy_.yytext); return \"DIR\"; \nbreak;\ncase 90: yy_.yytext = yy_.yytext.replace(/^,\\s*/, ''); yy.getLogger().debug('Lex (down):',yy_.yytext); return \"DIR\"; \nbreak;\ncase 91: yy_.yytext=']>';yy.getLogger().debug('Lex (ARROW_DIR end):',yy_.yytext);this.popState();this.popState();return \"BLOCK_ARROW_END\"; \nbreak;\ncase 92: yy.getLogger().debug('Lex: LINK', '#'+yy_.yytext+'#'); return 15; \nbreak;\ncase 93: yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 94: yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 95: yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 96: yy.getLogger().debug('Lex: START_LINK', yy_.yytext);this.pushState(\"LLABEL\");return 16; \nbreak;\ncase 97: yy.getLogger().debug('Lex: START_LINK', yy_.yytext);this.pushState(\"LLABEL\");return 16; \nbreak;\ncase 98: yy.getLogger().debug('Lex: START_LINK', yy_.yytext);this.pushState(\"LLABEL\");return 16; \nbreak;\ncase 99: this.pushState(\"md_string\");\nbreak;\ncase 100: yy.getLogger().debug('Lex: Starting string');this.pushState(\"string\"); return \"LINK_LABEL\";\nbreak;\ncase 101: this.popState(); yy.getLogger().debug('Lex: LINK', '#'+yy_.yytext+'#'); return 15; \nbreak;\ncase 102: this.popState(); yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 103: this.popState(); yy.getLogger().debug('Lex: LINK', yy_.yytext); return 15; \nbreak;\ncase 104: yy.getLogger().debug('Lex: COLON', yy_.yytext); yy_.yytext=yy_.yytext.slice(1);return 27; \nbreak;\n}\n},\nrules: [/^(?:block-beta\\b)/,/^(?:block:)/,/^(?:block\\b)/,/^(?:[\\s]+)/,/^(?:[\\n]+)/,/^(?:((\\u000D\\u000A)|(\\u000A)))/,/^(?:columns\\s+auto\\b)/,/^(?:columns\\s+[\\d]+)/,/^(?:[\"][`])/,/^(?:[^`\"]+)/,/^(?:[`][\"])/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:space[:]\\d+)/,/^(?:space\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\s+)/,/^(?:DEFAULT\\s+)/,/^(?:\\w+\\s+)/,/^(?:[^\\n]*)/,/^(?:class\\s+)/,/^(?:(\\w+)+((,\\s*\\w+)*))/,/^(?:[^\\n]*)/,/^(?:style\\s+)/,/^(?:(\\w+)+((,\\s*\\w+)*))/,/^(?:[^\\n]*)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:end\\b\\s*)/,/^(?:\\(\\(\\()/,/^(?:\\)\\)\\))/,/^(?:[\\)]\\))/,/^(?:\\}\\})/,/^(?:\\})/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\()/,/^(?:\\]\\])/,/^(?:\\()/,/^(?:\\]\\))/,/^(?:\\\\\\])/,/^(?:\\/\\])/,/^(?:\\)\\])/,/^(?:[\\)])/,/^(?:\\]>)/,/^(?:[\\]])/,/^(?:-\\))/,/^(?:\\(-)/,/^(?:\\)\\))/,/^(?:\\))/,/^(?:\\(\\(\\()/,/^(?:\\(\\()/,/^(?:\\{\\{)/,/^(?:\\{)/,/^(?:>)/,/^(?:\\(\\[)/,/^(?:\\()/,/^(?:\\[\\[)/,/^(?:\\[\\|)/,/^(?:\\[\\()/,/^(?:\\)\\)\\))/,/^(?:\\[\\\\)/,/^(?:\\[\\/)/,/^(?:\\[\\\\)/,/^(?:\\[)/,/^(?:<\\[)/,/^(?:[^\\(\\[\\n\\-\\)\\{\\}\\s\\<\\>:]+)/,/^(?:$)/,/^(?:[\"][`])/,/^(?:[\"][`])/,/^(?:[^`\"]+)/,/^(?:[`][\"])/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]+)/,/^(?:[\"])/,/^(?:\\]>\\s*\\()/,/^(?:,?\\s*right\\s*)/,/^(?:,?\\s*left\\s*)/,/^(?:,?\\s*x\\s*)/,/^(?:,?\\s*y\\s*)/,/^(?:,?\\s*up\\s*)/,/^(?:,?\\s*down\\s*)/,/^(?:\\)\\s*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*~~[\\~]+\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:[\"][`])/,/^(?:[\"])/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?::\\d+)/],\nconditions: {\"STYLE_DEFINITION\":{\"rules\":[28],\"inclusive\":false},\"STYLE_STMNT\":{\"rules\":[27],\"inclusive\":false},\"CLASSDEFID\":{\"rules\":[22],\"inclusive\":false},\"CLASSDEF\":{\"rules\":[20,21],\"inclusive\":false},\"CLASS_STYLE\":{\"rules\":[25],\"inclusive\":false},\"CLASS\":{\"rules\":[24],\"inclusive\":false},\"LLABEL\":{\"rules\":[99,100,101,102,103],\"inclusive\":false},\"ARROW_DIR\":{\"rules\":[85,86,87,88,89,90,91],\"inclusive\":false},\"BLOCK_ARROW\":{\"rules\":[76,81,84],\"inclusive\":false},\"NODE\":{\"rules\":[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],\"inclusive\":false},\"md_string\":{\"rules\":[9,10,78,79],\"inclusive\":false},\"space\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[12,13,82,83],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[34,35],\"inclusive\":false},\"acc_descr\":{\"rules\":[32],\"inclusive\":false},\"acc_title\":{\"rules\":[30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import clone from 'lodash-es/clone.js';\nimport * as configApi from '../../config.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport common from '../common/common.js';\nimport { clear as commonClear } from '../common/commonDb.js';\nimport type { Block, ClassDef } from './blockTypes.js';\n\n// Initialize the node database for simple lookups\nlet blockDatabase = new Map();\nlet edgeList: Block[] = [];\nlet edgeCount = new Map();\n\nconst COLOR_KEYWORD = 'color';\nconst FILL_KEYWORD = 'fill';\nconst BG_FILL = 'bgFill';\nconst STYLECLASS_SEP = ',';\nconst config = getConfig();\n\nlet classes = new Map();\n\nconst sanitizeText = (txt: string) => common.sanitizeText(txt, config);\n\n/**\n * Called when the parser comes across a (style) class definition\n * @example classDef my-style fill:#f96;\n *\n * @param id - the id of this (style) class\n * @param styleAttributes - the string with 1 or more style attributes (each separated by a comma)\n */\nexport const addStyleClass = function (id: string, styleAttributes = '') {\n // create a new style class object with this id\n let foundClass = classes.get(id);\n if (!foundClass) {\n foundClass = { id: id, styles: [], textStyles: [] };\n classes.set(id, foundClass); // This is a classDef\n }\n if (styleAttributes !== undefined && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n // remove any trailing ;\n const fixedAttrib = attrib.replace(/([^;]*);/, '$1').trim();\n\n // replace some style keywords\n if (RegExp(COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n};\n\n/**\n * Called when the parser comes across a style definition\n * @example style my-block-id fill:#f96;\n *\n * @param id - the id of the block to style\n * @param styles - the string with 1 or more style attributes (each separated by a comma)\n */\nexport const addStyle2Node = function (id: string, styles = '') {\n const foundBlock = blockDatabase.get(id)!;\n if (styles !== undefined && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n};\n\n/**\n * Add a CSS/style class to the block with the given id.\n * If the block isn't already in the list of known blocks, add it.\n * Might be called by parser when a CSS/style class should be applied to a block\n *\n * @param itemIds - The id or a list of ids of the item(s) to apply the css class to\n * @param cssClassName - CSS class name\n */\nexport const setCssClass = function (itemIds: string, cssClassName: string) {\n itemIds.split(',').forEach(function (id: string) {\n let foundBlock = blockDatabase.get(id);\n if (foundBlock === undefined) {\n const trimmedId = id.trim();\n foundBlock = { id: trimmedId, type: 'na', children: [] } as Block;\n blockDatabase.set(trimmedId, foundBlock);\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n};\n\nconst populateBlockDatabase = (_blockList: Block[], parent: Block): void => {\n const blockList = _blockList.flat();\n const children = [];\n const columnSettingBlock = blockList.find((b) => b?.type === 'column-setting');\n const column = columnSettingBlock?.columns ?? -1;\n for (const block of blockList) {\n if (\n typeof column === 'number' &&\n column > 0 &&\n block.type !== 'column-setting' &&\n typeof block.widthInColumns === 'number' &&\n block.widthInColumns > column\n ) {\n log.warn(\n `Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`\n );\n }\n if (block.label) {\n block.label = sanitizeText(block.label);\n }\n if (block.type === 'classDef') {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === 'applyClass') {\n setCssClass(block.id, block?.styleClass ?? '');\n continue;\n }\n if (block.type === 'applyStyles') {\n if (block?.stylesStr) {\n addStyle2Node(block.id, block?.stylesStr);\n }\n continue;\n }\n if (block.type === 'column-setting') {\n parent.columns = block.columns ?? -1;\n } else if (block.type === 'edge') {\n const count = (edgeCount.get(block.id) ?? 0) + 1;\n edgeCount.set(block.id, count);\n block.id = count + '-' + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === 'composite') {\n block.label = '';\n // log.debug('abc89 composite', block);\n } else {\n block.label = block.id;\n }\n }\n const existingBlock = blockDatabase.get(block.id);\n\n if (existingBlock === undefined) {\n blockDatabase.set(block.id, block);\n } else {\n // Add newer relevant data to aggregated node\n if (block.type !== 'na') {\n existingBlock.type = block.type;\n }\n if (block.label !== block.id) {\n existingBlock.label = block.label;\n }\n }\n\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === 'space') {\n // log.debug('abc95 space', block);\n const w = block.width ?? 1;\n for (let j = 0; j < w; j++) {\n const newBlock = clone(block);\n newBlock.id = newBlock.id + '-' + j;\n blockDatabase.set(newBlock.id, newBlock);\n children.push(newBlock);\n }\n } else if (existingBlock === undefined) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n};\n\nlet blocks: Block[] = [];\nlet rootBlock = { id: 'root', type: 'composite', children: [], columns: -1 } as Block;\n\nconst clear = (): void => {\n log.debug('Clear called');\n commonClear();\n rootBlock = { id: 'root', type: 'composite', children: [], columns: -1 } as Block;\n blockDatabase = new Map([['root', rootBlock]]);\n blocks = [];\n classes = new Map();\n\n edgeList = [];\n edgeCount = new Map();\n};\n\nexport function typeStr2Type(typeStr: string) {\n log.debug('typeStr2Type', typeStr);\n switch (typeStr) {\n case '[]':\n return 'square';\n case '()':\n log.debug('we have a round');\n return 'round';\n case '(())':\n return 'circle';\n case '>]':\n return 'rect_left_inv_arrow';\n case '{}':\n return 'diamond';\n case '{{}}':\n return 'hexagon';\n case '([])':\n return 'stadium';\n case '[[]]':\n return 'subroutine';\n case '[()]':\n return 'cylinder';\n case '((()))':\n return 'doublecircle';\n case '[//]':\n return 'lean_right';\n case '[\\\\\\\\]':\n return 'lean_left';\n case '[/\\\\]':\n return 'trapezoid';\n case '[\\\\/]':\n return 'inv_trapezoid';\n case '<[]>':\n return 'block_arrow';\n default:\n return 'na';\n }\n}\n\nexport function edgeTypeStr2Type(typeStr: string): string {\n log.debug('typeStr2Type', typeStr);\n switch (typeStr) {\n case '==':\n return 'thick';\n default:\n return 'normal';\n }\n}\n\nexport function edgeStrToEdgeData(typeStr: string): string {\n switch (typeStr.replace(/^[\\s-]+|[\\s-]+$/g, '')) {\n case 'x':\n return 'arrow_cross';\n case 'o':\n return 'arrow_circle';\n case '>':\n return 'arrow_point';\n default:\n return '';\n }\n}\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;\n};\n\nconst setHierarchy = (block: Block[]): void => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n};\n\nconst getColumns = (blockId: string): number => {\n const block = blockDatabase.get(blockId);\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n};\n\n/**\n * Returns all the blocks as a flat array\n * @returns\n */\nconst getBlocksFlat = () => {\n return [...blockDatabase.values()];\n};\n/**\n * Returns the hierarchy of blocks\n * @returns\n */\nconst getBlocks = () => {\n return blocks || [];\n};\n\nconst getEdges = () => {\n return edgeList;\n};\nconst getBlock = (id: string) => {\n return blockDatabase.get(id);\n};\n\nconst setBlock = (block: Block) => {\n blockDatabase.set(block.id, block);\n};\n\nconst getLogger = () => log;\n\n/**\n * Return all of the style classes\n */\nexport const getClasses = function () {\n return classes;\n};\n\nconst db = {\n getConfig: () => configApi.getConfig().block,\n typeStr2Type: typeStr2Type,\n edgeTypeStr2Type: edgeTypeStr2Type,\n edgeStrToEdgeData,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses,\n clear,\n generateId,\n} as const;\n\nexport type BlockDB = typeof db & DiagramDB;\nexport default db;\n", "import * as khroma from 'khroma';\nimport { getIconStyles } from '../globalStyles.js';\n\n/** Returns the styles given options */\nexport interface BlockChartStyleOptions {\n arrowheadColor: string;\n border2: string;\n clusterBkg: string;\n clusterBorder: string;\n edgeLabelBackground: string;\n fontFamily: string;\n lineColor: string;\n mainBkg: string;\n nodeBorder: string;\n nodeTextColor: string;\n tertiaryColor: string;\n textColor: string;\n titleColor: string;\n}\n\nconst fade = (color: string, opacity: number) => {\n // @ts-ignore TODO: incorrect types from khroma\n const channel = khroma.channel;\n\n const r = channel(color, 'r');\n const g = channel(color, 'g');\n const b = channel(color, 'b');\n\n // @ts-ignore incorrect types from khroma\n return khroma.rgba(r, g, b, opacity);\n};\n\nconst getStyles = (options: BlockChartStyleOptions) =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \\`

\\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg, 0.5)};\n fill: ${fade(options.clusterBkg, 0.5)};\n stroke: ${fade(options.clusterBorder, 0.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`;\n\nexport default getStyles;\n", "/** Setup arrow head and define the marker. The result is appended to the svg. */\n\nimport { log } from '../logger.js';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 6)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst lollipop = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopStart')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('stroke', 'black')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopEnd')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('stroke', 'black')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n};\nconst point = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 6)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 4.5)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'strokeWidth')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semantic free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb,\n};\nexport default insertMarkers;\n", "import type { BlockDB } from './blockDB.js';\nimport type { Block } from './blockTypes.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\n// TODO: This means the number we provide in diagram's config will never be used. Should fix.\nconst padding = getConfig()?.block?.padding ?? 8;\n\ninterface BlockPosition {\n px: number;\n py: number;\n}\n\nexport function calculateBlockPosition(columns: number, position: number): BlockPosition {\n // log.debug('calculateBlockPosition abc89', columns, position);\n // Ensure that columns is a positive integer\n if (columns === 0 || !Number.isInteger(columns)) {\n throw new Error('Columns must be an integer !== 0.');\n }\n\n // Ensure that position is a non-negative integer\n if (position < 0 || !Number.isInteger(position)) {\n throw new Error('Position must be a non-negative integer.' + position);\n }\n\n if (columns < 0) {\n // Auto columns is set\n return { px: position, py: 0 };\n }\n if (columns === 1) {\n // Auto columns is set\n return { px: 0, py: position };\n }\n // Calculate posX and posY\n const px = position % columns;\n const py = Math.floor(position / columns);\n // log.debug('calculateBlockPosition abc89', columns, position, '=> (', px, py, ')');\n return { px, py };\n}\n\nconst getMaxChildSize = (block: Block) => {\n let maxWidth = 0;\n let maxHeight = 0;\n // find max width of children\n // log.debug('getMaxChildSize abc95 (start) parent:', block.id);\n for (const child of block.children) {\n const { width, height, x, y } = child.size ?? { width: 0, height: 0, x: 0, y: 0 };\n log.debug(\n 'getMaxChildSize abc95 child:',\n child.id,\n 'width:',\n width,\n 'height:',\n height,\n 'x:',\n x,\n 'y:',\n y,\n child.type\n );\n if (child.type === 'space') {\n continue;\n }\n if (width > maxWidth) {\n maxWidth = width / (child.widthInColumns ?? 1);\n }\n if (height > maxHeight) {\n maxHeight = height;\n }\n }\n return { width: maxWidth, height: maxHeight };\n};\n\nfunction setBlockSizes(block: Block, db: BlockDB, siblingWidth = 0, siblingHeight = 0) {\n log.debug(\n 'setBlockSizes abc95 (start)',\n block.id,\n block?.size?.x,\n 'block width =',\n block?.size,\n 'siblingWidth',\n siblingWidth\n );\n if (!block?.size?.width) {\n block.size = {\n width: siblingWidth,\n height: siblingHeight,\n x: 0,\n y: 0,\n };\n }\n let maxWidth = 0;\n let maxHeight = 0;\n\n if (block.children?.length > 0) {\n for (const child of block.children) {\n setBlockSizes(child, db);\n }\n // find max width of children\n const childSize = getMaxChildSize(block);\n maxWidth = childSize.width;\n maxHeight = childSize.height;\n log.debug('setBlockSizes abc95 maxWidth of', block.id, ':s children is ', maxWidth, maxHeight);\n\n // set width of block to max width of children\n for (const child of block.children) {\n if (child.size) {\n log.debug(\n `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`\n );\n child.size.width =\n maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1);\n child.size.height = maxHeight;\n child.size.x = 0;\n child.size.y = 0;\n\n log.debug(\n `abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`\n );\n }\n }\n for (const child of block.children) {\n setBlockSizes(child, db, maxWidth, maxHeight);\n }\n\n const columns = block.columns ?? -1;\n let numItems = 0;\n for (const child of block.children) {\n numItems += child.widthInColumns ?? 1;\n }\n\n // The width and height in number blocks\n let xSize = block.children.length;\n if (columns > 0 && columns < numItems) {\n xSize = columns;\n }\n\n const ySize = Math.ceil(numItems / xSize);\n\n let width = xSize * (maxWidth + padding) + padding;\n let height = ySize * (maxHeight + padding) + padding;\n // If maxWidth\n if (width < siblingWidth) {\n log.debug(\n `Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`\n );\n width = siblingWidth;\n height = siblingHeight;\n const childWidth = (siblingWidth - xSize * padding - padding) / xSize;\n const childHeight = (siblingHeight - ySize * padding - padding) / ySize;\n // cspell:ignore indata\n log.debug('Size indata abc88', block.id, 'childWidth', childWidth, 'maxWidth', maxWidth);\n log.debug('Size indata abc88', block.id, 'childHeight', childHeight, 'maxHeight', maxHeight);\n log.debug('Size indata abc88 xSize', xSize, 'padding', padding);\n\n // set width of block to max width of children\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n child.size.height = childHeight;\n child.size.x = 0;\n child.size.y = 0;\n }\n }\n }\n\n log.debug(\n `abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${\n block.children.length\n } width=${Math.max(width, block.size?.width || 0)}`\n );\n if (width < (block?.size?.width || 0)) {\n width = block?.size?.width || 0;\n\n // Grow children to fit\n const num = columns > 0 ? Math.min(block.children.length, columns) : block.children.length;\n if (num > 0) {\n const childWidth = (width - num * padding - padding) / num;\n log.debug('abc95 (growing to fit) width', block.id, width, block.size?.width, childWidth);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n }\n }\n }\n }\n block.size = {\n width,\n height,\n x: 0,\n y: 0,\n };\n }\n\n log.debug(\n 'setBlockSizes abc94 (done)',\n block.id,\n block?.size?.x,\n block?.size?.width,\n block?.size?.y,\n block?.size?.height\n );\n}\n\nfunction layoutBlocks(block: Block, db: BlockDB) {\n log.debug(\n `abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n const columns = block.columns ?? -1;\n log.debug('layoutBlocks columns abc95', block.id, '=>', columns, block);\n if (\n block.children && // find max width of children\n block.children.length > 0\n ) {\n const width = block?.children[0]?.size?.width ?? 0;\n const widthOfChildren = block.children.length * width + (block.children.length - 1) * padding;\n\n log.debug('widthOfChildren 88', widthOfChildren, 'posX');\n\n // Pre-compute per-row max heights so y-positioning accounts for rows of different heights\n const rowHeights = new Map();\n {\n let colPos = 0;\n for (const child of block.children) {\n if (!child.size) {\n continue;\n }\n const { py } = calculateBlockPosition(columns, colPos);\n const currentMax = rowHeights.get(py) ?? 0;\n if (child.size.height > currentMax) {\n rowHeights.set(py, child.size.height);\n }\n let filled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n filled = Math.min(filled, columns - (colPos % columns));\n }\n colPos += filled;\n }\n }\n const rowYOffsets = new Map();\n {\n let offset = 0;\n const rows = [...rowHeights.keys()].sort((a, b) => a - b);\n for (const row of rows) {\n rowYOffsets.set(row, offset);\n offset += (rowHeights.get(row) ?? 0) + padding;\n }\n }\n\n // let first = true;\n let columnPos = 0;\n log.debug('abc91 block?.size?.x', block.id, block?.size?.x);\n let startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n let rowPos = 0;\n for (const child of block.children) {\n const parent = block;\n\n if (!child.size) {\n continue;\n }\n const { width, height } = child.size;\n const { px, py } = calculateBlockPosition(columns, columnPos);\n if (py != rowPos) {\n rowPos = py;\n startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n log.debug('New row in layout for block', block.id, ' and child ', child.id, rowPos);\n }\n log.debug(\n `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${parent?.size?.x},${parent?.size?.y}) parent: ${parent.id} width: ${width}${padding}`\n );\n if (parent.size) {\n const halfWidth = width / 2;\n child.size.x = startingPosX + padding + halfWidth;\n\n // cspell:ignore pyid\n log.debug(\n `abc91 layout blocks (calc) px, pyid:${\n child.id\n } startingPos=X${startingPosX} new startingPosX${\n child.size.x\n } ${halfWidth} padding=${padding} width=${width} halfWidth=${halfWidth} => x:${\n child.size.x\n } y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${\n (width * (child?.widthInColumns ?? 1)) / 2\n }`\n );\n\n startingPosX = child.size.x + halfWidth;\n\n const rowYOffset = rowYOffsets.get(py) ?? 0;\n const rowHeight = rowHeights.get(py) ?? height;\n child.size.y =\n parent.size.y - parent.size.height / 2 + rowYOffset + rowHeight / 2 + padding;\n\n log.debug(\n `abc88 layout blocks (calc) px, pyid:${\n child.id\n }startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${\n child.widthInColumns\n }(width * (child?.w || 1)) / 2${(width * (child?.widthInColumns ?? 1)) / 2}`\n );\n }\n if (child.children) {\n layoutBlocks(child, db);\n }\n let columnsFilled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n // Make sure overflowing lines do not affect later lines\n columnsFilled = Math.min(columnsFilled, columns - (columnPos % columns));\n }\n columnPos += columnsFilled;\n log.debug('abc88 columnsPos', child, columnPos);\n }\n }\n log.debug(\n `layout blocks (<==layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n}\n\nfunction findBounds(\n block: Block,\n { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }\n) {\n if (block.size && block.id !== 'root') {\n const { x, y, width, height } = block.size;\n if (x - width / 2 < minX) {\n minX = x - width / 2;\n }\n if (y - height / 2 < minY) {\n minY = y - height / 2;\n }\n if (x + width / 2 > maxX) {\n maxX = x + width / 2;\n }\n if (y + height / 2 > maxY) {\n maxY = y + height / 2;\n }\n }\n if (block.children) {\n for (const child of block.children) {\n ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY }));\n }\n }\n return { minX, minY, maxX, maxY };\n}\n\nexport function layout(db: BlockDB) {\n const root = db.getBlock('root');\n if (!root) {\n return;\n }\n\n setBlockSizes(root, db, 0, 0);\n layoutBlocks(root, db);\n // Position blocks relative to parents\n // positionBlock(root, root, db);\n log.debug('getBlocks', JSON.stringify(root, null, 2));\n\n const { minX, minY, maxX, maxY } = findBounds(root);\n\n const height = maxY - minY;\n const width = maxX - minX;\n return { x: minX, y: minY, width, height };\n}\n", "import { getEffectiveHtmlLabels } from '../config.js';\nimport { getConfig } from '../diagram-api/diagramAPI.js';\nimport { createText } from '../rendering-util/createText.js';\n\n/**\n * @param {import('../types.js').D3Selection} element - The parent element to which the label will be appended.\n * @param {string | [string] | undefined} _vertexText - The text content of the label.\n * @param {string} style\n * @param {boolean} [isTitle] - If `true`, style this as a title label, else as a normal label.\n * @param {boolean} [isNode] - If `true`, style this as a node label, else as an edge label.\n * @deprecated svg-util/createText instead\n *\n * @example\n *\n * If `getEffectiveHtmlLabels(getConfig())` is `true`, you must reset the width\n * and height of the created label after creation, like this:\n *\n * ```js\n * const labelElement = await createLabel(parent, ... );\n * let slBox = labelElement.getBBox();\n * if (useHtmlLabels) {\n * const div = labelElement.children[0];\n * const dv = select(labelElement);\n * slBox = div.getBoundingClientRect();\n * dv.attr('width', slBox.width);\n * dv.attr('height', slBox.height);\n * }\n * parent.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n * ```\n */\nconst createLabel = async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') {\n vertexText = vertexText[0];\n }\n\n const config = getConfig();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY,\n },\n config\n );\n};\n\nexport default createLabel;\n", "import type { SVG } from '../diagram-api/types.js';\nimport { log } from '../logger.js';\nimport type { EdgeData } from '../types.js';\n/**\n * Adds SVG markers to a path element based on the arrow types specified in the edge.\n *\n * @param svgPath - The SVG path element to add markers to.\n * @param edge - The edge data object containing the arrow types.\n * @param url - The URL of the SVG marker definitions.\n * @param id - The ID prefix for the SVG marker definitions.\n * @param diagramType - The type of diagram being rendered.\n */\nexport const addEdgeMarkers = (\n svgPath: SVG,\n edge: Pick,\n url: string,\n id: string,\n diagramType: string\n) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, 'start', edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, 'end', edge.arrowTypeEnd, url, id, diagramType);\n }\n};\n\nconst arrowTypesMap = {\n arrow_cross: 'cross',\n arrow_point: 'point',\n arrow_barb: 'barb',\n arrow_circle: 'circle',\n aggregation: 'aggregation',\n extension: 'extension',\n composition: 'composition',\n dependency: 'dependency',\n lollipop: 'lollipop',\n} as const;\n\nconst addEdgeMarker = (\n svgPath: SVG,\n position: 'start' | 'end',\n arrowType: string,\n url: string,\n id: string,\n diagramType: string\n) => {\n const endMarkerType = arrowTypesMap[arrowType as keyof typeof arrowTypesMap];\n\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return; // unknown arrow type, ignore\n }\n\n const suffix = position === 'start' ? 'Start' : 'End';\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n};\n", "import { log } from '../logger.js';\nimport createLabel from './createLabel.js';\nimport { createText } from '../rendering-util/createText.js';\nimport { computeLabelTransform } from '../rendering-util/labelTransform.js';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../config.js';\nimport utils from '../utils.js';\nimport { getUrl } from '../diagrams/common/common.js';\nimport { getLineFunctionsWithOffset } from '../utils/lineWithOffset.js';\nimport { getSubGraphTitleMargins } from '../utils/subGraphTitleMargins.js';\nimport { addEdgeMarkers } from './edgeMarker.js';\n\nlet edgeLabels = {};\nlet terminalLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\n\nexport const insertEdgeLabel = async (elem, edge) => {\n const config = getConfig();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n\n // Create the actual text element\n const isMarkdown = edge.labelType === 'markdown';\n const labelElement = await createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n // TODO: The old code only set addSvgBackground when using markdown, but\n // this function is only used by block diagrams which never use markdown.\n addSvgBackground: isMarkdown,\n isNode: false,\n markdown: isMarkdown,\n // If using markdown, wrap using default width\n width: isMarkdown ? undefined : Number.POSITIVE_INFINITY,\n },\n config\n );\n\n label.node().appendChild(labelElement);\n\n let bbox = labelElement.getBBox();\n let transformBbox = bbox;\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n transformBbox = bbox;\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n } else {\n const textEl = select(labelElement).select('text').node();\n if (textEl && typeof textEl.getBBox === 'function') {\n transformBbox = textEl.getBBox();\n }\n }\n label.attr('transform', computeLabelTransform(transformBbox, useHtmlLabels));\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n const startLabelElement = await createLabel(inner, edge.startLabelLeft, edge.labelStyle);\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n // Create the actual text element\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n const startLabelElement = await createLabel(\n startEdgeLabelRight,\n edge.startLabelRight,\n edge.labelStyle\n );\n fo = startLabelElement;\n inner.node().appendChild(startLabelElement);\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n // Create the actual text element\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n const endLabelElement = await createLabel(inner, edge.endLabelLeft, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n // Create the actual text element\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n const endLabelElement = await createLabel(inner, edge.endLabelRight, edge.labelStyle);\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\n\n/**\n * @param {any} fo\n * @param {any} value\n */\nfunction setTerminalWidth(fo, value) {\n if (getEffectiveHtmlLabels(getConfig()) && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.debug('Moving label abc88 ', edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // // debugger;\n const pos = utils.calcLabelPosition(path);\n log.debug(\n 'Moving label ' + edge.label + ' from (',\n x,\n ',',\n y,\n ') to (',\n pos.x,\n ',',\n pos.y,\n ') abc88'\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr('transform', `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n\n //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n};\n\nconst outsideNode = (node, point) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n // const dy = Math.abs(y - insidePoint.y);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n // Intersection is top or bottom of rect.\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res); // cspell: disable-line\n\n return res;\n } else {\n // Intersection on sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n/**\n * This function will page a path and node where the last point(s) in the path is inside the node\n * and return an update path ending by the border of the node.\n *\n * @param {Array} _points\n * @param {any} boundaryNode\n * @returns {Array} Points\n */\nconst cutPathAtIntersect = (_points, boundaryNode) => {\n log.debug('abc88 cutPathAtIntersect', _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n // check if point is inside the boundary rect\n if (!outsideNode(boundaryNode, point) && !isInside) {\n // First point inside the rect found\n // Calc the intersection coord between the point and the last point outside the rect\n const inter = intersection(boundaryNode, lastPointOutside, point);\n\n // // Check case where the intersection is the same as the last point\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // // if (!pointPresent) {\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n\n isInside = true;\n } else {\n // Outside\n lastPointOutside = point;\n // points.push(point);\n if (!isInside) {\n points.push(point);\n }\n }\n });\n return points;\n};\n\nexport const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug('abc88 InsertEdge: edge=', edge, 'e=', e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n if (head?.intersect && tail?.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n\n if (edge.toCluster) {\n log.debug('to cluster abc88', clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.debug('from cluster abc88', clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n let curve = curveBasis;\n // Currently only flowcharts get the curve from the settings, perhaps this should\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\n // have not been thought through\n if (edge.curve && (diagramType === 'graph' || diagramType === 'flowchart')) {\n curve = edge.curve;\n }\n\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n\n // Construct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n case 'invisible':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\n .attr('style', edge.style);\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach((point) => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n // // TODO: Can we load this config only from the rendered graph type?\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n", "import type { Direction } from '../../src/diagrams/block/blockTypes.js';\n\nconst expandAndDeduplicateDirections = (directions: Direction[]) => {\n const uniqueDirections = new Set();\n\n for (const direction of directions) {\n switch (direction) {\n case 'x':\n uniqueDirections.add('right');\n uniqueDirections.add('left');\n break;\n case 'y':\n uniqueDirections.add('up');\n uniqueDirections.add('down');\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n\n return uniqueDirections;\n};\nexport const getArrowPoints = (\n duplicatedDirections: Direction[],\n bbox: { width: number; height: number },\n node: any\n) => {\n // Expand and deduplicate the provided directions.\n // for instance: x, right => right, left\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n\n // Factor to divide height for some calculations.\n const f = 2;\n\n // Calculated height of the bounding box, accounting for node padding.\n const height = bbox.height + 2 * node.padding;\n // Midpoint calculation based on height.\n const midpoint = height / f;\n // Calculated width of the bounding box, accounting for additional width and node padding.\n const width = bbox.width + 2 * midpoint + node.padding;\n // Padding to use, half of the node padding.\n const padding = node.padding / 2;\n\n if (\n directions.has('right') &&\n directions.has('left') &&\n directions.has('up') &&\n directions.has('down')\n ) {\n // SQUARE\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: (-2 * height) / 3 },\n { x: width, y: -height },\n\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n\n // Left\n { x: 0, y: -height },\n { x: 0, y: (-2 * height) / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 },\n ];\n }\n if (directions.has('right') && directions.has('left') && directions.has('up')) {\n // RECTANGLE_VERTICAL (Top Open)\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 },\n ];\n }\n if (directions.has('right') && directions.has('left') && directions.has('down')) {\n // RECTANGLE_VERTICAL (Bottom Open)\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 },\n ];\n }\n if (directions.has('right') && directions.has('up') && directions.has('down')) {\n // RECTANGLE_HORIZONTAL (Right Open)\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height },\n ];\n }\n if (directions.has('left') && directions.has('up') && directions.has('down')) {\n // RECTANGLE_HORIZONTAL (Left Open)\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height },\n ];\n }\n if (directions.has('right') && directions.has('left')) {\n // HORIZONTAL_LINE\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 },\n ];\n }\n if (directions.has('up') && directions.has('down')) {\n // VERTICAL_LINE\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding },\n ];\n }\n if (directions.has('right') && directions.has('up')) {\n // ANGLE_RT\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height },\n ];\n }\n if (directions.has('right') && directions.has('down')) {\n // ANGLE_RB\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height },\n ];\n }\n if (directions.has('left') && directions.has('up')) {\n // ANGLE_LT\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height },\n ];\n }\n if (directions.has('left') && directions.has('down')) {\n // ANGLE_LB\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height },\n ];\n }\n if (directions.has('right')) {\n // ARROW_RIGHT\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n ];\n }\n if (directions.has('left')) {\n // ARROW_LEFT\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 },\n ];\n }\n if (directions.has('up')) {\n // ARROW_TOP\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n ];\n }\n if (directions.has('down')) {\n // ARROW_BOTTOM\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding },\n ];\n }\n\n // POINT\n return [{ x: 0, y: 0 }];\n};\n", "/**\n * @param node\n * @param point\n */\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n\nexport default intersectNode;\n", "/**\n * @param node\n * @param rx\n * @param ry\n * @param point\n */\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: https://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n", "import intersectEllipse from './intersect-ellipse.js';\n\n/**\n * @param node\n * @param rx\n * @param point\n */\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n", "/**\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\n *\n * @param p1\n * @param p2\n * @param q1\n * @param q2\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\n/**\n * @param r1\n * @param r2\n */\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n", "/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line.js';\n\nexport default intersectPolygon;\n\n/**\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\n * that it has the shape specified by polygon.\n *\n * @param node\n * @param polyPoints\n * @param point\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n", "const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // https://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n", "/*\n * Borrowed with love from dagre-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n", "import createLabel from '../createLabel.js';\nimport { createText } from '../../rendering-util/createText.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../../config.js';\nimport { select } from 'd3';\nimport { sanitizeText } from '../../diagrams/common/common.js';\nimport { decodeEntities } from '../../utils.js';\nimport { configureLabelImages } from '../../rendering-util/rendering-elements/shapes/labelImageUtils.js';\n\nexport const labelHelper = async (parent, node, _classes, isNode) => {\n const config = getConfig();\n let classes;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(config);\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\n\n // Replace labelText with default value if undefined\n let labelText;\n if (node.labelText === undefined) {\n labelText = '';\n } else {\n labelText = typeof node.labelText === 'string' ? node.labelText : node.labelText[0];\n }\n\n let text;\n if (node.labelType === 'markdown') {\n // text = textNode;\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config),\n {\n useHtmlLabels,\n width: node.width || config.flowchart.wrappingWidth,\n classes: 'markdown-node-label',\n },\n config\n );\n } else {\n text = await createLabel(\n label,\n sanitizeText(decodeEntities(labelText), config),\n node.labelStyle,\n false,\n isNode\n );\n }\n // Get the size of the label\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n\n if (getEffectiveHtmlLabels(config)) {\n const div = text.children[0];\n const dv = select(text);\n\n // if there are images, need to wait for them to load before getting the bounding box\n await configureLabelImages(div, labelText);\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center the label\n if (useHtmlLabels) {\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n } else {\n label.attr('transform', 'translate(' + 0 + ', ' + -bbox.height / 2 + ')');\n }\n if (node.centerLabel) {\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n }\n label.insert('rect', ':first-child');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\n */\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n", "import { updateNodeBounds, labelHelper } from './util.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../../config.js';\nimport intersect from '../intersect/index.js';\n\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig());\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n 'node ' + node.classes,\n true\n );\n\n log.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n", "import { select } from 'd3';\nimport { getConfig } from '../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../config.js';\nimport { log } from '../logger.js';\nimport { getArrowPoints } from './blockArrowHelper.js';\nimport createLabel from './createLabel.js';\nimport intersect from './intersect/index.js';\nimport note from './shapes/note.js';\nimport { insertPolygonShape, labelHelper, updateNodeBounds } from './shapes/util.js';\n\nconst formatClass = (str) => {\n if (str) {\n return ' ' + str;\n }\n return '';\n};\nconst getClassesFromNode = (node, otherClasses) => {\n return `${otherClasses ? otherClasses : 'node default'}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n};\n\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n log.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr('style', node.style);\n updateNodeBounds(node, questionElem);\n\n node.intersect = function (point) {\n log.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst choice = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n const choice = shapeSvg.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n );\n // center the circle around its coordinate\n choice.attr('class', 'state-start').attr('r', 7).attr('width', 28).attr('height', 28);\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.circle(node, 14, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr('style', node.style);\n updateNodeBounds(node, hex);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst block_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, undefined, true);\n\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n\n const points = getArrowPoints(node.directions, bbox, node);\n\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr('style', node.style);\n updateNodeBounds(node, blockArrow);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n\n node.width = w + h;\n node.height = h;\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('style', node.style)\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjusted value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - node.y > 0) {\n y = -y;\n }\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n 'node ' + node.classes + ' ' + node.class,\n true\n );\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // console.log('Rect node:', node, 'bbox:', bbox, 'halfPadding:', halfPadding, 'node.padding:', node.padding);\n // const totalWidth = bbox.width + node.padding * 2;\n // const totalHeight = bbox.height + node.padding * 2;\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect\n .attr('class', 'basic label-container')\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst composite = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n 'node ' + node.classes,\n true\n );\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // const totalWidth = bbox.width + node.padding * 2;\n // const totalHeight = bbox.height + node.padding * 2;\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect\n .attr('class', 'basic cluster composite label-container')\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, 'label', true);\n\n log.trace('Classes = ', node.class);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Hide the rect we are only after the label\n const totalWidth = 0;\n const totalHeight = 0;\n rect.attr('width', totalWidth).attr('height', totalHeight);\n shapeSvg.attr('class', 'label edgeLabel');\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * @param rect\n * @param borders\n * @param totalWidth\n * @param totalHeight\n */\nfunction applyNodePropertyBorders(rect, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes('t')) {\n log.debug('add top border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('r')) {\n log.debug('add right border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes('b')) {\n log.debug('add bottom border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('l')) {\n log.debug('add left border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect.attr('stroke-dasharray', strokeDashArray.join(' '));\n}\n\nconst rectWithTitle = async (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n // const text2 = typeof text2prim === 'object' ? text2prim[0] : text2prim;\n\n let title = '';\n if (typeof text2 === 'object') {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info('Label text abc79', title, text2, typeof text2 === 'object');\n\n const text = await createLabel(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = await createLabel(\n label,\n textRows.join ? textRows.join('
') : textRows,\n node.labelStyle,\n true,\n true\n );\n\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // log.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('style', node.style)\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert('g', ':first-child');\n const outerCircle = circleGroup.insert('circle');\n const innerCircle = circleGroup.insert('circle');\n\n circleGroup.attr('class', node.class);\n\n // center the circle around its coordinate\n outerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding + gap)\n .attr('width', bbox.width + node.padding + gap * 2)\n .attr('height', bbox.height + node.padding + gap * 2);\n\n innerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('DoubleCircle main');\n\n updateNodeBounds(node, outerCircle);\n\n node.intersect = function (point) {\n log.info('DoubleCircle intersect', node, bbox.width / 2 + halfPadding + gap, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, undefined),\n true\n );\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = async (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n\n // 1. Create the labels\n const interfaceLabelText = node.classData.annotations[0]\n ? '\u00AB' + node.classData.annotations[0] + '\u00BB'\n : '';\n const interfaceLabel = await createLabel(\n labelContainer,\n interfaceLabelText,\n node.labelStyle,\n true,\n true\n );\n let interfaceBBox = interfaceLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr('width', interfaceBBox.width);\n dv.attr('height', interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n let classTitleString = node.classData.label;\n\n if (node.classData.type !== undefined && node.classData.type !== '') {\n if (getEffectiveHtmlLabels(getConfig())) {\n classTitleString += '<' + node.classData.type + '>';\n } else {\n classTitleString += '<' + node.classData.type + '>';\n }\n }\n const classTitleLabel = await createLabel(\n labelContainer,\n classTitleString,\n node.labelStyle,\n true,\n true\n );\n select(classTitleLabel).attr('class', 'classTitle');\n let classTitleBBox = classTitleLabel.getBBox();\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr('width', classTitleBBox.width);\n dv.attr('height', classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig())) {\n parsedText = parsedText.replace(//g, '>');\n }\n const lbl = await createLabel(\n labelContainer,\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n const classMethods = [];\n node.classData.methods.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getEffectiveHtmlLabels(getConfig())) {\n displayText = displayText.replace(//g, '>');\n }\n const lbl = await createLabel(\n labelContainer,\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n );\n let bbox = lbl.getBBox();\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n let diffX = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' + ((-1 * maxWidth) / 2 + diffX) + ', ' + (-1 * maxHeight) / 2 + ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Position the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n //get the height of the bounding box of each member if exists\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n\n verticalPos += lineHeight;\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n\n rect\n .attr('style', node.style)\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box,\n};\n\nlet nodeElems = {};\n\nexport const insertNode = async (elem, node, renderOptions) => {\n let newEl;\n let el;\n\n // Add link when appropriate\n if (node.link) {\n let target;\n if (getConfig().securityLevel === 'sandbox') {\n target = '_top';\n } else if (node.linkTarget) {\n target = node.linkTarget || '_blank';\n }\n newEl = elem.insert('svg:a').attr('xlink:href', node.link).attr('target', target);\n el = await shapes[node.shape](newEl, node, renderOptions);\n } else {\n el = await shapes[node.shape](elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n if (node.class) {\n el.attr('class', 'node default ' + node.class);\n }\n\n nodeElems[node.id] = newEl;\n\n if (node.haveCallback) {\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\n }\n return newEl;\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n", "import * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { getConfig } from '../../config.js';\nimport { insertEdge, insertEdgeLabel, positionEdgeLabel } from '../../dagre-wrapper/edges.js';\nimport { insertNode, positionNode } from '../../dagre-wrapper/nodes.js';\nimport { getStylesFromArray } from '../../utils.js';\nimport type { BlockDB } from './blockDB.js';\nimport type { Block } from './blockTypes.js';\n\nfunction getNodeFromBlock(block: Block, db: BlockDB, positioned = false) {\n const vertex = block;\n\n let classStr = 'default';\n if ((vertex?.classes?.length || 0) > 0) {\n classStr = (vertex?.classes ?? []).join(' ');\n }\n classStr = classStr + ' flowchart-label';\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let radius = 0;\n let shape = '';\n let padding;\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radius = 5;\n shape = 'rect';\n break;\n case 'composite':\n radius = 0;\n shape = 'composite';\n padding = 0;\n break;\n case 'square':\n shape = 'rect';\n break;\n case 'diamond':\n shape = 'question';\n break;\n case 'hexagon':\n shape = 'hexagon';\n break;\n case 'block_arrow':\n shape = 'block_arrow';\n break;\n case 'odd':\n shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n shape = 'lean_right';\n break;\n case 'lean_left':\n shape = 'lean_left';\n break;\n case 'trapezoid':\n shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n shape = 'inv_trapezoid';\n break;\n case 'rect_left_inv_arrow':\n shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n shape = 'circle';\n break;\n case 'ellipse':\n shape = 'ellipse';\n break;\n case 'stadium':\n shape = 'stadium';\n break;\n case 'subroutine':\n shape = 'subroutine';\n break;\n case 'cylinder':\n shape = 'cylinder';\n break;\n case 'group':\n shape = 'rect';\n break;\n case 'doublecircle':\n shape = 'doublecircle';\n break;\n default:\n shape = 'rect';\n }\n\n const styles = getStylesFromArray(vertex?.styles ?? []);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n const vertexText = vertex.label;\n\n const bounds = vertex.size ?? { width: 0, height: 0, x: 0, y: 0 };\n // Add the node\n const node = {\n labelStyle: styles.labelStyle,\n shape: shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: undefined,\n type: vertex.type,\n padding: padding ?? getConfig()?.block?.padding ?? 0,\n };\n return node;\n}\nasync function calculateBlockSize(\n elem: d3.Selection,\n block: any,\n db: any\n) {\n const node = getNodeFromBlock(block, db, false);\n if (node.type === 'group') {\n return;\n }\n\n // Add the element to the DOM to size it\n const config = getConfig();\n const nodeEl = await insertNode(elem, node, { config });\n const boundingBox = nodeEl.node().getBBox();\n const obj = db.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db.setBlock(obj);\n nodeEl.remove();\n}\ntype ActionFun = typeof calculateBlockSize;\n\nexport async function insertBlockPositioned(elem: any, block: Block, db: any) {\n const node = getNodeFromBlock(block, db, true);\n // Add the element to the DOM to size it\n const obj = db.getBlock(node.id);\n if (obj.type !== 'space') {\n const config = getConfig();\n await insertNode(elem, node, { config });\n block.intersect = node?.intersect;\n positionNode(node);\n }\n}\n\nexport async function performOperations(\n elem: d3.Selection,\n blocks: Block[],\n db: BlockDB,\n operation: ActionFun\n) {\n for (const block of blocks) {\n await operation(elem, block, db);\n if (block.children) {\n await performOperations(elem, block.children, db, operation);\n }\n }\n}\n\nexport async function calculateBlockSizes(elem: any, blocks: Block[], db: BlockDB) {\n await performOperations(elem, blocks, db, calculateBlockSize);\n}\n\nexport async function insertBlocks(\n elem: d3.Selection,\n blocks: Block[],\n db: BlockDB\n) {\n await performOperations(elem, blocks, db, insertBlockPositioned);\n}\n\nexport async function insertEdges(\n elem: any,\n edges: Block[],\n blocks: Block[],\n db: BlockDB,\n id: string\n) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n g.setGraph({\n rankdir: 'TB',\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8,\n });\n\n for (const block of blocks) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect,\n });\n }\n }\n\n for (const edge of edges) {\n // elem, e, edge, clusterDb, diagramType, graph;\n if (edge.start && edge.end) {\n const startBlock = db.getBlock(edge.start);\n const endBlock = db.getBlock(edge.end);\n\n if (startBlock?.size && endBlock?.size) {\n const start = startBlock.size;\n const end = endBlock.size;\n const points = [\n { x: start.x, y: start.y },\n { x: start.x + (end.x - start.x) / 2, y: start.y + (end.y - start.y) / 2 },\n { x: end.x, y: end.y },\n ];\n // edge.points = points;\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: edge.id },\n {\n ...edge,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: 'edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1',\n },\n undefined,\n 'block',\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: 'stroke: #333; stroke-width: 1.5px;fill:none;',\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: 'edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1',\n });\n positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points,\n }\n );\n }\n }\n }\n }\n}\n", "import { select as d3select } from 'd3';\nimport type { Diagram } from '../../Diagram.js';\nimport * as configApi from '../../config.js';\nimport insertMarkers from '../../dagre-wrapper/markers.js';\nimport { log } from '../../logger.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { BlockDB } from './blockDB.js';\nimport { layout } from './layout.js';\nimport { calculateBlockSizes, insertBlocks, insertEdges } from './renderHelpers.js';\n\nexport const getClasses = function (text: any, diagObj: any) {\n return diagObj.db.getClasses();\n};\n\nexport const draw = async function (\n text: string,\n id: string,\n _version: string,\n diagObj: Diagram\n): Promise {\n const { securityLevel, block: conf } = configApi.getConfig();\n const db = diagObj.db as BlockDB;\n let sandboxElement: any;\n if (securityLevel === 'sandbox') {\n sandboxElement = d3select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? d3select(sandboxElement.nodes()[0].contentDocument.body)\n : d3select('body');\n\n const svg =\n securityLevel === 'sandbox'\n ? root.select(`[id=\"${id}\"]`)\n : d3select(`[id=\"${id}\"]`);\n\n // Define the supported markers for the diagram\n const markers = ['point', 'circle', 'cross'];\n\n // Add the marker definitions to the svg as marker tags\n insertMarkers(svg, markers, diagObj.type, id);\n\n const bl = db.getBlocks();\n const blArr = db.getBlocksFlat();\n const edges = db.getEdges();\n\n const nodes = svg.insert('g').attr('class', 'block');\n await calculateBlockSizes(nodes, bl, db);\n const bounds = layout(db);\n await insertBlocks(nodes, bl, db);\n await insertEdges(nodes, edges, blArr, db, id);\n\n // Establish svg dimensions and get width and height\n // Why, oh why ????\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf!;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug('Here Bounds', bounds, bounds2);\n svg.attr(\n 'viewBox',\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n};\n\nexport default {\n draw,\n getClasses,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: jison doesn't export types\nimport parser from './parser/block.jison';\nimport db from './blockDB.js';\nimport flowStyles from './styles.js';\nimport renderer from './blockRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles: flowStyles,\n};\n"], - "mappings": "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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "num", "spaceId", "edgeData", "id2", "id", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "block_default", "parser", "blockDatabase", "edgeList", "edgeCount", "COLOR_KEYWORD", "FILL_KEYWORD", "BG_FILL", "STYLECLASS_SEP", "config", "getConfig", "classes", "sanitizeText", "__name", "txt", "common_default", "addStyleClass", "id", "styleAttributes", "foundClass", "attrib", "fixedAttrib", "newStyle2", "addStyle2Node", "styles", "foundBlock", "setCssClass", "itemIds", "cssClassName", "trimmedId", "populateBlockDatabase", "_blockList", "parent", "blockList", "children", "column", "b", "block", "log", "count", "existingBlock", "w", "j", "newBlock", "clone_default", "blocks", "rootBlock", "clear", "typeStr2Type", "typeStr", "edgeTypeStr2Type", "edgeStrToEdgeData", "cnt", "generateId", "setHierarchy", "getColumns", "blockId", "getBlocksFlat", "getBlocks", "getEdges", "getBlock", "setBlock", "getLogger", "getClasses", "db", "blockDB_default", "fade", "__name", "color", "opacity", "channel", "channel_default", "r", "g", "b", "rgba_default", "getStyles", "options", "getIconStyles", "styles_default", "insertMarkers", "__name", "elem", "markerArray", "type", "id", "markerName", "markers", "extension", "log", "composition", "aggregation", "dependency", "lollipop", "point", "circle", "cross", "barb", "markers_default", "padding", "getConfig", "calculateBlockPosition", "columns", "position", "px", "py", "__name", "getMaxChildSize", "block", "maxWidth", "maxHeight", "child", "width", "height", "x", "y", "log", "setBlockSizes", "db", "siblingWidth", "siblingHeight", "childSize", "numItems", "xSize", "ySize", "childWidth", "childHeight", "num", "layoutBlocks", "widthOfChildren", "rowHeights", "colPos", "currentMax", "filled", "rowYOffsets", "offset", "rows", "a", "b", "row", "columnPos", "startingPosX", "rowPos", "parent", "halfWidth", "rowYOffset", "rowHeight", "columnsFilled", "findBounds", "minX", "minY", "maxX", "maxY", "layout", "root", "createLabel", "__name", "element", "_vertexText", "style", "isTitle", "isNode", "vertexText", "config", "getConfig", "useHtmlLabels", "getEffectiveHtmlLabels", "createText", "createLabel_default", "addEdgeMarkers", "__name", "svgPath", "edge", "url", "id", "diagramType", "addEdgeMarker", "arrowTypesMap", "position", "arrowType", "endMarkerType", "log", "suffix", "edgeLabels", "terminalLabels", "insertEdgeLabel", "__name", "elem", "edge", "config", "getConfig", "useHtmlLabels", "getEffectiveHtmlLabels", "edgeLabel", "label", "isMarkdown", "labelElement", "createText", "bbox", "transformBbox", "div", "dv", "select_default", "textEl", "computeLabelTransform", "edgeLabels", "fo", "startEdgeLabelLeft", "inner", "startLabelElement", "createLabel_default", "slBox", "terminalLabels", "setTerminalWidth", "startEdgeLabelRight", "endEdgeLabelLeft", "endLabelElement", "endEdgeLabelRight", "value", "positionEdgeLabel", "paths", "log", "path", "siteConfig", "subGraphTitleTotalMargin", "getSubGraphTitleMargins", "el", "x", "y", "pos", "utils_default", "outsideNode", "node", "point", "dx", "dy", "w", "h", "intersection", "outsidePoint", "insidePoint", "r", "Q", "R", "q", "res", "_x", "_y", "cutPathAtIntersect", "_points", "boundaryNode", "points", "lastPointOutside", "isInside", "inter", "pointPresent", "p", "e", "insertEdge", "clusterDb", "diagramType", "graph", "id", "pointsHasChanged", "tail", "head", "lineData", "curve", "basis_default", "getLineFunctionsWithOffset", "lineFunction", "line_default", "strokeClasses", "svgPath", "url", "getUrl", "addEdgeMarkers", "expandAndDeduplicateDirections", "__name", "directions", "uniqueDirections", "direction", "getArrowPoints", "duplicatedDirections", "bbox", "node", "f", "height", "midpoint", "width", "padding", "intersectNode", "node", "point", "__name", "intersect_node_default", "intersectEllipse", "node", "rx", "ry", "point", "cx", "cy", "px", "py", "det", "dx", "dy", "__name", "intersect_ellipse_default", "intersectCircle", "node", "rx", "point", "intersect_ellipse_default", "__name", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "a2", "b1", "b2", "c1", "c2", "r1", "r2", "r3", "r4", "denom", "offset", "num", "x", "y", "sameSign", "__name", "intersect_line_default", "intersect_polygon_default", "intersectPolygon", "node", "polyPoints", "point", "x1", "y1", "intersections", "minX", "minY", "entry", "left", "top", "i", "p1", "p2", "intersect", "intersect_line_default", "p", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "__name", "intersectRect", "__name", "node", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "intersect_default", "intersect_node_default", "intersect_circle_default", "intersect_ellipse_default", "intersect_polygon_default", "intersect_rect_default", "labelHelper", "__name", "parent", "node", "_classes", "isNode", "config", "getConfig", "classes", "useHtmlLabels", "getEffectiveHtmlLabels", "shapeSvg", "label", "labelText", "text", "createText", "sanitizeText", "decodeEntities", "createLabel_default", "bbox", "halfPadding", "div", "dv", "select_default", "configureLabelImages", "updateNodeBounds", "element", "insertPolygonShape", "w", "h", "points", "d", "note", "__name", "parent", "node", "getEffectiveHtmlLabels", "getConfig", "shapeSvg", "bbox", "halfPadding", "labelHelper", "log", "rect", "updateNodeBounds", "point", "intersect_default", "note_default", "formatClass", "__name", "str", "getClassesFromNode", "node", "otherClasses", "question", "parent", "shapeSvg", "bbox", "labelHelper", "w", "h", "s", "points", "log", "questionElem", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "choice", "d", "hexagon", "f", "m", "hex", "block_arrow", "getArrowPoints", "blockArrow", "rect_left_inv_arrow", "lean_right", "el", "lean_left", "trapezoid", "inv_trapezoid", "rect_right_inv_arrow", "cylinder", "rx", "ry", "shape", "pos", "x", "y", "rect", "halfPadding", "totalWidth", "totalHeight", "propKeys", "applyNodePropertyBorders", "propKey", "composite", "labelRect", "borders", "strokeDashArray", "addBorder", "length", "skipBorder", "rectWithTitle", "classes", "innerLine", "label", "text2", "title", "text", "createLabel_default", "getEffectiveHtmlLabels", "getConfig", "div", "dv", "select_default", "textRows", "titleBox", "descr", "stadium", "circle", "doublecircle", "gap", "circleGroup", "outerCircle", "innerCircle", "subroutine", "start", "forkJoin", "dir", "width", "height", "end", "class_box", "rowPadding", "lineHeight", "topLine", "bottomLine", "maxWidth", "maxHeight", "labelContainer", "verticalPos", "hasInterface", "interfaceLabelText", "interfaceLabel", "interfaceBBox", "classTitleString", "classTitleLabel", "classTitleBBox", "classAttributes", "member", "parsedInfo", "parsedText", "lbl", "classMethods", "displayText", "diffX", "memberBBox", "shapes", "note_default", "nodeElems", "insertNode", "elem", "renderOptions", "newEl", "target", "positionNode", "__name", "node", "el", "nodeElems", "log", "padding", "diff", "getNodeFromBlock", "block", "db", "positioned", "vertex", "classStr", "radius", "shape", "padding", "styles", "getStylesFromArray", "vertexText", "bounds", "getConfig", "__name", "calculateBlockSize", "elem", "node", "config", "nodeEl", "insertNode", "boundingBox", "obj", "insertBlockPositioned", "positionNode", "performOperations", "blocks", "operation", "calculateBlockSizes", "insertBlocks", "insertEdges", "edges", "id", "g", "Graph", "edge", "startBlock", "endBlock", "start", "end", "points", "insertEdge", "insertEdgeLabel", "positionEdgeLabel", "getClasses", "__name", "text", "diagObj", "draw", "id", "_version", "securityLevel", "conf", "getConfig", "db", "sandboxElement", "select_default", "root", "svg", "markers_default", "bl", "blArr", "edges", "nodes", "calculateBlockSizes", "bounds", "layout", "insertBlocks", "insertEdges", "bounds2", "magicFactor", "height", "width", "useMaxWidth", "configureSvgSize", "log", "blockRenderer_default", "diagram", "block_default", "blockDB_default", "blockRenderer_default", "styles_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-BBK6TRR6.mjs b/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-BBK6TRR6.mjs deleted file mode 100644 index 99f12ef..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-BBK6TRR6.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import{a as ke,f as Ee}from"./chunk-W2A4CRWB.mjs";import{g as Ae,h as ie,i as wt}from"./chunk-Q3CC2MQB.mjs";import{a as Ve}from"./chunk-XBXGYYE5.mjs";import{F as St,N as be,R as ge,S as xe,T as me,U as _e,Y as vt,a as ye,z as ne}from"./chunk-3UWU4A3N.mjs";import{b as ee,h as Pt}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as y,f as Fe}from"./chunk-VELTKBKT.mjs";var Mt=(function(){var e=y(function(xt,m,_,k){for(_=_||{},k=xt.length;k--;_[xt[k]]=m);return _},"o"),t=[1,24],s=[1,25],o=[1,26],l=[1,27],n=[1,28],a=[1,63],r=[1,64],i=[1,65],u=[1,66],d=[1,67],b=[1,68],p=[1,69],E=[1,29],T=[1,30],D=[1,31],P=[1,32],B=[1,33],j=[1,34],H=[1,35],q=[1,36],G=[1,37],K=[1,38],J=[1,39],Z=[1,40],$=[1,41],tt=[1,42],et=[1,43],nt=[1,44],it=[1,45],rt=[1,46],at=[1,47],st=[1,48],lt=[1,50],ot=[1,51],ct=[1,52],ht=[1,53],ut=[1,54],dt=[1,55],ft=[1,56],pt=[1,57],yt=[1,58],bt=[1,59],gt=[1,60],Ot=[14,42],Qt=[14,34,36,37,38,39,40,41,42,44,45,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,72,73,74],Rt=[12,14,34,36,37,38,39,40,41,42,44,45,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,72,73,74],A=[1,82],C=[1,83],v=[1,84],w=[1,85],O=[12,14,42],he=[12,14,33,42],Yt=[12,14,33,42,76,77,79,80],kt=[12,33],Ht=[34,36,37,38,39,40,41,44,45,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,72,73,74],qt={trace:y(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:y(function(m,_,k,g,R,h,Dt){var f=h.length-1;switch(R){case 3:g.setDirection("TB");break;case 4:g.setDirection("BT");break;case 5:g.setDirection("RL");break;case 6:g.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:g.setC4Type(h[f-3]);break;case 19:g.setTitle(h[f].substring(6)),this.$=h[f].substring(6);break;case 20:g.setAccDescription(h[f].substring(15)),this.$=h[f].substring(15);break;case 21:this.$=h[f].trim(),g.setTitle(this.$);break;case 22:case 23:this.$=h[f].trim(),g.setAccDescription(this.$);break;case 28:h[f].splice(2,0,"ENTERPRISE"),g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 29:h[f].splice(2,0,"SYSTEM"),g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 30:g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 31:h[f].splice(2,0,"CONTAINER"),g.addContainerBoundary(...h[f]),this.$=h[f];break;case 32:g.addDeploymentNode("node",...h[f]),this.$=h[f];break;case 33:g.addDeploymentNode("nodeL",...h[f]),this.$=h[f];break;case 34:g.addDeploymentNode("nodeR",...h[f]),this.$=h[f];break;case 35:g.popBoundaryParseStack();break;case 39:g.addPersonOrSystem("person",...h[f]),this.$=h[f];break;case 40:g.addPersonOrSystem("external_person",...h[f]),this.$=h[f];break;case 41:g.addPersonOrSystem("system",...h[f]),this.$=h[f];break;case 42:g.addPersonOrSystem("system_db",...h[f]),this.$=h[f];break;case 43:g.addPersonOrSystem("system_queue",...h[f]),this.$=h[f];break;case 44:g.addPersonOrSystem("external_system",...h[f]),this.$=h[f];break;case 45:g.addPersonOrSystem("external_system_db",...h[f]),this.$=h[f];break;case 46:g.addPersonOrSystem("external_system_queue",...h[f]),this.$=h[f];break;case 47:g.addContainer("container",...h[f]),this.$=h[f];break;case 48:g.addContainer("container_db",...h[f]),this.$=h[f];break;case 49:g.addContainer("container_queue",...h[f]),this.$=h[f];break;case 50:g.addContainer("external_container",...h[f]),this.$=h[f];break;case 51:g.addContainer("external_container_db",...h[f]),this.$=h[f];break;case 52:g.addContainer("external_container_queue",...h[f]),this.$=h[f];break;case 53:g.addComponent("component",...h[f]),this.$=h[f];break;case 54:g.addComponent("component_db",...h[f]),this.$=h[f];break;case 55:g.addComponent("component_queue",...h[f]),this.$=h[f];break;case 56:g.addComponent("external_component",...h[f]),this.$=h[f];break;case 57:g.addComponent("external_component_db",...h[f]),this.$=h[f];break;case 58:g.addComponent("external_component_queue",...h[f]),this.$=h[f];break;case 60:g.addRel("rel",...h[f]),this.$=h[f];break;case 61:g.addRel("birel",...h[f]),this.$=h[f];break;case 62:g.addRel("rel_u",...h[f]),this.$=h[f];break;case 63:g.addRel("rel_d",...h[f]),this.$=h[f];break;case 64:g.addRel("rel_l",...h[f]),this.$=h[f];break;case 65:g.addRel("rel_r",...h[f]),this.$=h[f];break;case 66:g.addRel("rel_b",...h[f]),this.$=h[f];break;case 67:h[f].splice(0,1),g.addRel("rel",...h[f]),this.$=h[f];break;case 68:g.updateElStyle("update_el_style",...h[f]),this.$=h[f];break;case 69:g.updateRelStyle("update_rel_style",...h[f]),this.$=h[f];break;case 70:g.updateLayoutConfig("update_layout_config",...h[f]),this.$=h[f];break;case 71:this.$=[h[f]];break;case 72:h[f].unshift(h[f-1]),this.$=h[f];break;case 73:case 75:this.$=h[f].trim();break;case 74:let Et={};Et[h[f-1].trim()]=h[f].trim(),this.$=Et;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:n,29:49,30:61,32:62,34:a,36:r,37:i,38:u,39:d,40:b,41:p,43:23,44:E,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:70,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:n,29:49,30:61,32:62,34:a,36:r,37:i,38:u,39:d,40:b,41:p,43:23,44:E,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:71,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:n,29:49,30:61,32:62,34:a,36:r,37:i,38:u,39:d,40:b,41:p,43:23,44:E,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:72,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:n,29:49,30:61,32:62,34:a,36:r,37:i,38:u,39:d,40:b,41:p,43:23,44:E,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:73,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:n,29:49,30:61,32:62,34:a,36:r,37:i,38:u,39:d,40:b,41:p,43:23,44:E,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{14:[1,74]},e(Ot,[2,13],{43:23,29:49,30:61,32:62,20:75,34:a,36:r,37:i,38:u,39:d,40:b,41:p,44:E,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt}),e(Ot,[2,14]),e(Qt,[2,16],{12:[1,76]}),e(Ot,[2,36],{12:[1,77]}),e(Rt,[2,19]),e(Rt,[2,20]),{25:[1,78]},{27:[1,79]},e(Rt,[2,23]),{35:80,75:81,76:A,77:C,79:v,80:w},{35:86,75:81,76:A,77:C,79:v,80:w},{35:87,75:81,76:A,77:C,79:v,80:w},{35:88,75:81,76:A,77:C,79:v,80:w},{35:89,75:81,76:A,77:C,79:v,80:w},{35:90,75:81,76:A,77:C,79:v,80:w},{35:91,75:81,76:A,77:C,79:v,80:w},{35:92,75:81,76:A,77:C,79:v,80:w},{35:93,75:81,76:A,77:C,79:v,80:w},{35:94,75:81,76:A,77:C,79:v,80:w},{35:95,75:81,76:A,77:C,79:v,80:w},{35:96,75:81,76:A,77:C,79:v,80:w},{35:97,75:81,76:A,77:C,79:v,80:w},{35:98,75:81,76:A,77:C,79:v,80:w},{35:99,75:81,76:A,77:C,79:v,80:w},{35:100,75:81,76:A,77:C,79:v,80:w},{35:101,75:81,76:A,77:C,79:v,80:w},{35:102,75:81,76:A,77:C,79:v,80:w},{35:103,75:81,76:A,77:C,79:v,80:w},{35:104,75:81,76:A,77:C,79:v,80:w},e(O,[2,59]),{35:105,75:81,76:A,77:C,79:v,80:w},{35:106,75:81,76:A,77:C,79:v,80:w},{35:107,75:81,76:A,77:C,79:v,80:w},{35:108,75:81,76:A,77:C,79:v,80:w},{35:109,75:81,76:A,77:C,79:v,80:w},{35:110,75:81,76:A,77:C,79:v,80:w},{35:111,75:81,76:A,77:C,79:v,80:w},{35:112,75:81,76:A,77:C,79:v,80:w},{35:113,75:81,76:A,77:C,79:v,80:w},{35:114,75:81,76:A,77:C,79:v,80:w},{35:115,75:81,76:A,77:C,79:v,80:w},{20:116,29:49,30:61,32:62,34:a,36:r,37:i,38:u,39:d,40:b,41:p,43:23,44:E,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{12:[1,118],33:[1,117]},{35:119,75:81,76:A,77:C,79:v,80:w},{35:120,75:81,76:A,77:C,79:v,80:w},{35:121,75:81,76:A,77:C,79:v,80:w},{35:122,75:81,76:A,77:C,79:v,80:w},{35:123,75:81,76:A,77:C,79:v,80:w},{35:124,75:81,76:A,77:C,79:v,80:w},{35:125,75:81,76:A,77:C,79:v,80:w},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(Ot,[2,15]),e(Qt,[2,17],{21:22,19:130,22:t,23:s,24:o,26:l,28:n}),e(Ot,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:s,24:o,26:l,28:n,34:a,36:r,37:i,38:u,39:d,40:b,41:p,44:E,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt}),e(Rt,[2,21]),e(Rt,[2,22]),e(O,[2,39]),e(he,[2,71],{75:81,35:132,76:A,77:C,79:v,80:w}),e(Yt,[2,73]),{78:[1,133]},e(Yt,[2,75]),e(Yt,[2,76]),e(O,[2,40]),e(O,[2,41]),e(O,[2,42]),e(O,[2,43]),e(O,[2,44]),e(O,[2,45]),e(O,[2,46]),e(O,[2,47]),e(O,[2,48]),e(O,[2,49]),e(O,[2,50]),e(O,[2,51]),e(O,[2,52]),e(O,[2,53]),e(O,[2,54]),e(O,[2,55]),e(O,[2,56]),e(O,[2,57]),e(O,[2,58]),e(O,[2,60]),e(O,[2,61]),e(O,[2,62]),e(O,[2,63]),e(O,[2,64]),e(O,[2,65]),e(O,[2,66]),e(O,[2,67]),e(O,[2,68]),e(O,[2,69]),e(O,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(kt,[2,28]),e(kt,[2,29]),e(kt,[2,30]),e(kt,[2,31]),e(kt,[2,32]),e(kt,[2,33]),e(kt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(Qt,[2,18]),e(Ot,[2,38]),e(he,[2,72]),e(Yt,[2,74]),e(O,[2,24]),e(O,[2,35]),e(Ht,[2,25]),e(Ht,[2,26],{12:[1,138]}),e(Ht,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:y(function(m,_){if(_.recoverable)this.trace(m);else{var k=new Error(m);throw k.hash=_,k}},"parseError"),parse:y(function(m){var _=this,k=[0],g=[],R=[null],h=[],Dt=this.table,f="",Et=0,ue=0,de=0,Ye=2,fe=1,Ie=h.slice.call(arguments,1),S=Object.create(this.lexer),At={yy:{}};for(var Kt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Kt)&&(At.yy[Kt]=this.yy[Kt]);S.setInput(m,At.yy),At.yy.lexer=S,At.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var Jt=S.yylloc;h.push(Jt);var je=S.options&&S.options.ranges;typeof At.yy.parseError=="function"?this.parseError=At.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function L0(Y){k.length=k.length-2*Y,R.length=R.length-Y,h.length=h.length-Y}y(L0,"popStack");function Ue(){var Y;return Y=g.pop()||S.lex()||fe,typeof Y!="number"&&(Y instanceof Array&&(g=Y,Y=g.pop()),Y=_.symbols_[Y]||Y),Y}y(Ue,"lex");for(var M,Zt,Ct,I,N0,$t,Tt={},It,W,pe,jt;;){if(Ct=k[k.length-1],this.defaultActions[Ct]?I=this.defaultActions[Ct]:((M===null||typeof M>"u")&&(M=Ue()),I=Dt[Ct]&&Dt[Ct][M]),typeof I>"u"||!I.length||!I[0]){var te="";jt=[];for(It in Dt[Ct])this.terminals_[It]&&It>Ye&&jt.push("'"+this.terminals_[It]+"'");S.showPosition?te="Parse error on line "+(Et+1)+`: -`+S.showPosition()+` -Expecting `+jt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":te="Parse error on line "+(Et+1)+": Unexpected "+(M==fe?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(te,{text:S.match,token:this.terminals_[M]||M,line:S.yylineno,loc:Jt,expected:jt})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ct+", token: "+M);switch(I[0]){case 1:k.push(M),R.push(S.yytext),h.push(S.yylloc),k.push(I[1]),M=null,Zt?(M=Zt,Zt=null):(ue=S.yyleng,f=S.yytext,Et=S.yylineno,Jt=S.yylloc,de>0&&de--);break;case 2:if(W=this.productions_[I[1]][1],Tt.$=R[R.length-W],Tt._$={first_line:h[h.length-(W||1)].first_line,last_line:h[h.length-1].last_line,first_column:h[h.length-(W||1)].first_column,last_column:h[h.length-1].last_column},je&&(Tt._$.range=[h[h.length-(W||1)].range[0],h[h.length-1].range[1]]),$t=this.performAction.apply(Tt,[f,ue,Et,At.yy,I[1],R,h].concat(Ie)),typeof $t<"u")return $t;W&&(k=k.slice(0,-1*W*2),R=R.slice(0,-1*W),h=h.slice(0,-1*W)),k.push(this.productions_[I[1]][0]),R.push(Tt.$),h.push(Tt._$),pe=Dt[k[k.length-2]][k[k.length-1]],k.push(pe);break;case 3:return!0}}return!0},"parse")},Be=(function(){var xt={EOF:1,parseError:y(function(_,k){if(this.yy.parser)this.yy.parser.parseError(_,k);else throw new Error(_)},"parseError"),setInput:y(function(m,_){return this.yy=_||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:y(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var _=m.match(/(?:\r\n?|\n).*/g);return _?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:y(function(m){var _=m.length,k=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===g.length?this.yylloc.first_column:0)+g[g.length-k.length].length-k[0].length:this.yylloc.first_column-_},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-_]),this.yyleng=this.yytext.length,this},"unput"),more:y(function(){return this._more=!0,this},"more"),reject:y(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:y(function(m){this.unput(this.match.slice(m))},"less"),pastInput:y(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:y(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:y(function(){var m=this.pastInput(),_=new Array(m.length+1).join("-");return m+this.upcomingInput()+` -`+_+"^"},"showPosition"),test_match:y(function(m,_){var k,g,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),g=m[0].match(/(?:\r\n?|\n).*/g),g&&(this.yylineno+=g.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:g?g[g.length-1].length-g[g.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],k=this.performAction.call(this,this.yy,this,_,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var h in R)this[h]=R[h];return!1}return!1},"test_match"),next:y(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,_,k,g;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),h=0;h_[0].length)){if(_=k,g=h,this.options.backtrack_lexer){if(m=this.test_match(k,R[h]),m!==!1)return m;if(this._backtrack){_=!1;continue}else return!1}else if(!this.options.flex)break}return _?(m=this.test_match(_,R[g]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:y(function(){var _=this.next();return _||this.lex()},"lex"),begin:y(function(_){this.conditionStack.push(_)},"begin"),popState:y(function(){var _=this.conditionStack.length-1;return _>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:y(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:y(function(_){return _=this.conditionStack.length-1-Math.abs(_||0),_>=0?this.conditionStack[_]:"INITIAL"},"topState"),pushState:y(function(_){this.begin(_)},"pushState"),stateStackSize:y(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:y(function(_,k,g,R){var h=R;switch(g){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[65,66,67,68],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return xt})();qt.lexer=Be;function Gt(){this.yy={}}return y(Gt,"Parser"),Gt.prototype=qt,qt.Parser=Gt,new Gt})();Mt.parser=Mt;var Ce=Mt;var F=[],mt=[""],L="global",U="",X=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Lt=[],re="",ae=!1,Ut=4,Ft=2,ve,ze=y(function(){return ve},"getC4Type"),Xe=y(function(e){ve=ne(e,vt())},"setC4Type"),We=y(function(e,t,s,o,l,n,a,r,i){if(e==null||t===void 0||t===null||s===void 0||s===null||o===void 0||o===null)return;let u={},d=Lt.find(b=>b.from===t&&b.to===s);if(d?u=d:Lt.push(u),u.type=e,u.from=t,u.to=s,u.label={text:o},l==null)u.techn={text:""};else if(typeof l=="object"){let[b,p]=Object.entries(l)[0];u[b]={text:p}}else u.techn={text:l};if(n==null)u.descr={text:""};else if(typeof n=="object"){let[b,p]=Object.entries(n)[0];u[b]={text:p}}else u.descr={text:n};if(typeof a=="object"){let[b,p]=Object.entries(a)[0];u[b]=p}else u.sprite=a;if(typeof r=="object"){let[b,p]=Object.entries(r)[0];u[b]=p}else u.tags=r;if(typeof i=="object"){let[b,p]=Object.entries(i)[0];u[b]=p}else u.link=i;u.wrap=_t()},"addRel"),Qe=y(function(e,t,s,o,l,n,a){if(t===null||s===null)return;let r={},i=F.find(u=>u.alias===t);if(i&&t===i.alias?r=i:(r.alias=t,F.push(r)),s==null?r.label={text:""}:r.label={text:s},o==null)r.descr={text:""};else if(typeof o=="object"){let[u,d]=Object.entries(o)[0];r[u]={text:d}}else r.descr={text:o};if(typeof l=="object"){let[u,d]=Object.entries(l)[0];r[u]=d}else r.sprite=l;if(typeof n=="object"){let[u,d]=Object.entries(n)[0];r[u]=d}else r.tags=n;if(typeof a=="object"){let[u,d]=Object.entries(a)[0];r[u]=d}else r.link=a;r.typeC4Shape={text:e},r.parentBoundary=L,r.wrap=_t()},"addPersonOrSystem"),He=y(function(e,t,s,o,l,n,a,r){if(t===null||s===null)return;let i={},u=F.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,F.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.techn={text:""};else if(typeof o=="object"){let[d,b]=Object.entries(o)[0];i[d]={text:b}}else i.techn={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,b]=Object.entries(l)[0];i[d]={text:b}}else i.descr={text:l};if(typeof n=="object"){let[d,b]=Object.entries(n)[0];i[d]=b}else i.sprite=n;if(typeof a=="object"){let[d,b]=Object.entries(a)[0];i[d]=b}else i.tags=a;if(typeof r=="object"){let[d,b]=Object.entries(r)[0];i[d]=b}else i.link=r;i.wrap=_t(),i.typeC4Shape={text:e},i.parentBoundary=L},"addContainer"),qe=y(function(e,t,s,o,l,n,a,r){if(t===null||s===null)return;let i={},u=F.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,F.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.techn={text:""};else if(typeof o=="object"){let[d,b]=Object.entries(o)[0];i[d]={text:b}}else i.techn={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,b]=Object.entries(l)[0];i[d]={text:b}}else i.descr={text:l};if(typeof n=="object"){let[d,b]=Object.entries(n)[0];i[d]=b}else i.sprite=n;if(typeof a=="object"){let[d,b]=Object.entries(a)[0];i[d]=b}else i.tags=a;if(typeof r=="object"){let[d,b]=Object.entries(r)[0];i[d]=b}else i.link=r;i.wrap=_t(),i.typeC4Shape={text:e},i.parentBoundary=L},"addComponent"),Ge=y(function(e,t,s,o,l){if(e===null||t===null)return;let n={},a=X.find(r=>r.alias===e);if(a&&e===a.alias?n=a:(n.alias=e,X.push(n)),t==null?n.label={text:""}:n.label={text:t},s==null)n.type={text:"system"};else if(typeof s=="object"){let[r,i]=Object.entries(s)[0];n[r]={text:i}}else n.type={text:s};if(typeof o=="object"){let[r,i]=Object.entries(o)[0];n[r]=i}else n.tags=o;if(typeof l=="object"){let[r,i]=Object.entries(l)[0];n[r]=i}else n.link=l;n.parentBoundary=L,n.wrap=_t(),U=L,L=e,mt.push(U)},"addPersonOrSystemBoundary"),Ke=y(function(e,t,s,o,l){if(e===null||t===null)return;let n={},a=X.find(r=>r.alias===e);if(a&&e===a.alias?n=a:(n.alias=e,X.push(n)),t==null?n.label={text:""}:n.label={text:t},s==null)n.type={text:"container"};else if(typeof s=="object"){let[r,i]=Object.entries(s)[0];n[r]={text:i}}else n.type={text:s};if(typeof o=="object"){let[r,i]=Object.entries(o)[0];n[r]=i}else n.tags=o;if(typeof l=="object"){let[r,i]=Object.entries(l)[0];n[r]=i}else n.link=l;n.parentBoundary=L,n.wrap=_t(),U=L,L=e,mt.push(U)},"addContainerBoundary"),Je=y(function(e,t,s,o,l,n,a,r){if(t===null||s===null)return;let i={},u=X.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,X.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.type={text:"node"};else if(typeof o=="object"){let[d,b]=Object.entries(o)[0];i[d]={text:b}}else i.type={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,b]=Object.entries(l)[0];i[d]={text:b}}else i.descr={text:l};if(typeof a=="object"){let[d,b]=Object.entries(a)[0];i[d]=b}else i.tags=a;if(typeof r=="object"){let[d,b]=Object.entries(r)[0];i[d]=b}else i.link=r;i.nodeType=e,i.parentBoundary=L,i.wrap=_t(),U=L,L=t,mt.push(U)},"addDeploymentNode"),Ze=y(function(){L=U,mt.pop(),U=mt.pop(),mt.push(U)},"popBoundaryParseStack"),$e=y(function(e,t,s,o,l,n,a,r,i,u,d){let b=F.find(p=>p.alias===t);if(!(b===void 0&&(b=X.find(p=>p.alias===t),b===void 0))){if(s!=null)if(typeof s=="object"){let[p,E]=Object.entries(s)[0];b[p]=E}else b.bgColor=s;if(o!=null)if(typeof o=="object"){let[p,E]=Object.entries(o)[0];b[p]=E}else b.fontColor=o;if(l!=null)if(typeof l=="object"){let[p,E]=Object.entries(l)[0];b[p]=E}else b.borderColor=l;if(n!=null)if(typeof n=="object"){let[p,E]=Object.entries(n)[0];b[p]=E}else b.shadowing=n;if(a!=null)if(typeof a=="object"){let[p,E]=Object.entries(a)[0];b[p]=E}else b.shape=a;if(r!=null)if(typeof r=="object"){let[p,E]=Object.entries(r)[0];b[p]=E}else b.sprite=r;if(i!=null)if(typeof i=="object"){let[p,E]=Object.entries(i)[0];b[p]=E}else b.techn=i;if(u!=null)if(typeof u=="object"){let[p,E]=Object.entries(u)[0];b[p]=E}else b.legendText=u;if(d!=null)if(typeof d=="object"){let[p,E]=Object.entries(d)[0];b[p]=E}else b.legendSprite=d}},"updateElStyle"),t0=y(function(e,t,s,o,l,n,a){let r=Lt.find(i=>i.from===t&&i.to===s);if(r!==void 0){if(o!=null)if(typeof o=="object"){let[i,u]=Object.entries(o)[0];r[i]=u}else r.textColor=o;if(l!=null)if(typeof l=="object"){let[i,u]=Object.entries(l)[0];r[i]=u}else r.lineColor=l;if(n!=null)if(typeof n=="object"){let[i,u]=Object.entries(n)[0];r[i]=parseInt(u)}else r.offsetX=parseInt(n);if(a!=null)if(typeof a=="object"){let[i,u]=Object.entries(a)[0];r[i]=parseInt(u)}else r.offsetY=parseInt(a)}},"updateRelStyle"),e0=y(function(e,t,s){let o=Ut,l=Ft;if(typeof t=="object"){let n=Object.values(t)[0];o=parseInt(n)}else o=parseInt(t);if(typeof s=="object"){let n=Object.values(s)[0];l=parseInt(n)}else l=parseInt(s);o>=1&&(Ut=o),l>=1&&(Ft=l)},"updateLayoutConfig"),n0=y(function(){return Ut},"getC4ShapeInRow"),i0=y(function(){return Ft},"getC4BoundaryInRow"),r0=y(function(){return L},"getCurrentBoundaryParse"),a0=y(function(){return U},"getParentBoundaryParse"),we=y(function(e){return e==null?F:F.filter(t=>t.parentBoundary===e)},"getC4ShapeArray"),s0=y(function(e){return F.find(t=>t.alias===e)},"getC4Shape"),l0=y(function(e){return Object.keys(we(e))},"getC4ShapeKeys"),Oe=y(function(e){return e==null?X:X.filter(t=>t.parentBoundary===e)},"getBoundaries"),o0=Oe,c0=y(function(){return Lt},"getRels"),h0=y(function(){return re},"getTitle"),u0=y(function(e){ae=e},"setWrap"),_t=y(function(){return ae},"autoWrap"),d0=y(function(){F=[],X=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],U="",L="global",mt=[""],Lt=[],mt=[""],re="",ae=!1,Ut=4,Ft=2},"clear"),f0={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},p0={FILLED:0,OPEN:1},y0={LEFTOF:0,RIGHTOF:1,OVER:2},b0=y(function(e){re=ne(e,vt())},"setTitle"),Nt={addPersonOrSystem:Qe,addPersonOrSystemBoundary:Ge,addContainer:He,addContainerBoundary:Ke,addComponent:qe,addDeploymentNode:Je,popBoundaryParseStack:Ze,addRel:We,updateElStyle:$e,updateRelStyle:t0,updateLayoutConfig:e0,autoWrap:_t,setWrap:u0,getC4ShapeArray:we,getC4Shape:s0,getC4ShapeKeys:l0,getBoundaries:Oe,getBoundarys:o0,getCurrentBoundaryParse:r0,getParentBoundaryParse:a0,getRels:c0,getTitle:h0,getC4Type:ze,getC4ShapeInRow:n0,getC4BoundaryInRow:i0,setAccTitle:ge,getAccTitle:xe,getAccDescription:_e,setAccDescription:me,getConfig:y(()=>vt().c4,"getConfig"),clear:d0,LINETYPE:f0,ARROWTYPE:p0,PLACEMENT:y0,setTitle:b0,setC4Type:Xe};var Te=Fe(Ve(),1);var se=y(function(e,t){return ke(e,t)},"drawRect"),Re=y(function(e,t,s,o,l,n){let a=e.append("image");a.attr("width",t),a.attr("height",s),a.attr("x",o),a.attr("y",l);let r=n.startsWith("data:image/png;base64")?n:(0,Te.sanitizeUrl)(n);a.attr("xlink:href",r)},"drawImage"),g0=y((e,t,s)=>{let o=e.append("g"),l=0;for(let n of t){let a=n.textColor?n.textColor:"#444444",r=n.lineColor?n.lineColor:"#444444",i=n.offsetX?parseInt(n.offsetX):0,u=n.offsetY?parseInt(n.offsetY):0,d="";if(l===0){let p=o.append("line");p.attr("x1",n.startPoint.x),p.attr("y1",n.startPoint.y),p.attr("x2",n.endPoint.x),p.attr("y2",n.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",r),p.style("fill","none"),n.type!=="rel_b"&&p.attr("marker-end","url("+d+"#arrowhead)"),(n.type==="birel"||n.type==="rel_b")&&p.attr("marker-start","url("+d+"#arrowend)"),l=-1}else{let p=o.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",r).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",n.startPoint.x).replaceAll("starty",n.startPoint.y).replaceAll("controlx",n.startPoint.x+(n.endPoint.x-n.startPoint.x)/2-(n.endPoint.x-n.startPoint.x)/4).replaceAll("controly",n.startPoint.y+(n.endPoint.y-n.startPoint.y)/2).replaceAll("stopx",n.endPoint.x).replaceAll("stopy",n.endPoint.y)),n.type!=="rel_b"&&p.attr("marker-end","url("+d+"#arrowhead)"),(n.type==="birel"||n.type==="rel_b")&&p.attr("marker-start","url("+d+"#arrowend)")}let b=s.messageFont();Q(s)(n.label.text,o,Math.min(n.startPoint.x,n.endPoint.x)+Math.abs(n.endPoint.x-n.startPoint.x)/2+i,Math.min(n.startPoint.y,n.endPoint.y)+Math.abs(n.endPoint.y-n.startPoint.y)/2+u,n.label.width,n.label.height,{fill:a},b),n.techn&&n.techn.text!==""&&(b=s.messageFont(),Q(s)("["+n.techn.text+"]",o,Math.min(n.startPoint.x,n.endPoint.x)+Math.abs(n.endPoint.x-n.startPoint.x)/2+i,Math.min(n.startPoint.y,n.endPoint.y)+Math.abs(n.endPoint.y-n.startPoint.y)/2+s.messageFontSize+5+u,Math.max(n.label.width,n.techn.width),n.techn.height,{fill:a,"font-style":"italic"},b))}},"drawRels"),x0=y(function(e,t,s){let o=e.append("g"),l=t.bgColor?t.bgColor:"none",n=t.borderColor?t.borderColor:"#444444",a=t.fontColor?t.fontColor:"black",r={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(r={"stroke-width":1});let i={x:t.x,y:t.y,fill:l,stroke:n,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:r};se(o,i);let u=s.boundaryFont();u.fontWeight="bold",u.fontSize=u.fontSize+2,u.fontColor=a,Q(s)(t.label.text,o,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},u),t.type&&t.type.text!==""&&(u=s.boundaryFont(),u.fontColor=a,Q(s)(t.type.text,o,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},u)),t.descr&&t.descr.text!==""&&(u=s.boundaryFont(),u.fontSize=u.fontSize-2,u.fontColor=a,Q(s)(t.descr.text,o,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},u))},"drawBoundary"),m0=y(function(e,t,s){let o=t.bgColor?t.bgColor:s[t.typeC4Shape.text+"_bg_color"],l=t.borderColor?t.borderColor:s[t.typeC4Shape.text+"_border_color"],n=t.fontColor?t.fontColor:"#FFFFFF",a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let r=e.append("g");r.attr("class","person-man");let i=Ee();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":i.x=t.x,i.y=t.y,i.fill=o,i.width=t.width,i.height=t.height,i.stroke=l,i.rx=2.5,i.ry=2.5,i.attrs={"stroke-width":.5},se(r,i);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":r.append("path").attr("fill",o).attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),r.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":r.append("path").attr("fill",o).attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),r.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let u=T0(s,t.typeC4Shape.text);switch(r.append("text").attr("fill",n).attr("font-family",u.fontFamily).attr("font-size",u.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":Re(r,48,48,t.x+t.width/2-24,t.y+t.image.Y,a);break}let d=s[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=n,Q(s)(t.label.text,r,t.x,t.y+t.label.Y,t.width,t.height,{fill:n},d),d=s[t.typeC4Shape.text+"Font"](),d.fontColor=n,t.techn&&t.techn?.text!==""?Q(s)(t.techn.text,r,t.x,t.y+t.techn.Y,t.width,t.height,{fill:n,"font-style":"italic"},d):t.type&&t.type.text!==""&&Q(s)(t.type.text,r,t.x,t.y+t.type.Y,t.width,t.height,{fill:n,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=s.personFont(),d.fontColor=n,Q(s)(t.descr.text,r,t.x,t.y+t.descr.Y,t.width,t.height,{fill:n},d)),t.height},"drawC4Shape"),_0=y(function(e){e.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),k0=y(function(e){e.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),E0=y(function(e){e.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),A0=y(function(e){e.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),C0=y(function(e){e.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),v0=y(function(e){e.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),w0=y(function(e){e.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),O0=y(function(e){let s=e.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);s.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),s.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),T0=y((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"getC4ShapeFont"),Q=(function(){function e(l,n,a,r,i,u,d){let b=n.append("text").attr("x",a+i/2).attr("y",r+u/2+5).style("text-anchor","middle").text(l);o(b,d)}y(e,"byText");function t(l,n,a,r,i,u,d,b){let{fontSize:p,fontFamily:E,fontWeight:T}=b,D=l.split(St.lineBreakRegex);for(let P=0;P=this.data.widthLimit||o>=this.data.widthLimit||this.nextData.cnt>Se)&&(s=this.nextData.startx+t.margin+x.nextLinePaddingX,l=this.nextData.stopy+t.margin*2,this.nextData.stopx=o=s+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=n=l+t.height,this.nextData.cnt=1),t.x=s,t.y=l,this.updateVal(this.data,"startx",s,Math.min),this.updateVal(this.data,"starty",l,Math.min),this.updateVal(this.data,"stopx",o,Math.max),this.updateVal(this.data,"stopy",n,Math.max),this.updateVal(this.nextData,"startx",s,Math.min),this.updateVal(this.nextData,"starty",l,Math.min),this.updateVal(this.nextData,"stopx",o,Math.max),this.updateVal(this.nextData,"stopy",n,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},oe(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},oe=y(function(e){ye(x,e),e.fontFamily&&(x.personFontFamily=x.systemFontFamily=x.messageFontFamily=e.fontFamily),e.fontSize&&(x.personFontSize=x.systemFontSize=x.messageFontSize=e.fontSize),e.fontWeight&&(x.personFontWeight=x.systemFontWeight=x.messageFontWeight=e.fontWeight)},"setConf"),Bt=y((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"c4ShapeFont"),Vt=y(e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),"boundaryFont"),R0=y(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont");function z(e,t,s,o,l){if(!t[e].width)if(s)t[e].text=Ae(t[e].text,l,o),t[e].textLines=t[e].text.split(St.lineBreakRegex).length,t[e].width=l,t[e].height=ie(t[e].text,o);else{let n=t[e].text.split(St.lineBreakRegex);t[e].textLines=n.length;let a=0;t[e].height=0,t[e].width=0;for(let r of n)t[e].width=Math.max(wt(r,o),t[e].width),a=ie(r,o),t[e].height=t[e].height+a}}y(z,"calcC4ShapeTextWH");var Pe=y(function(e,t,s){t.x=s.data.startx,t.y=s.data.starty,t.width=s.data.stopx-s.data.startx,t.height=s.data.stopy-s.data.starty,t.label.y=x.c4ShapeMargin-35;let o=t.wrap&&x.wrap,l=Vt(x);l.fontSize=l.fontSize+2,l.fontWeight="bold";let n=wt(t.label.text,l);z("label",t,o,l,n),V.drawBoundary(e,t,x)},"drawBoundary"),Me=y(function(e,t,s,o){let l=0;for(let n of o){l=0;let a=s[n],r=Bt(x,a.typeC4Shape.text);switch(r.fontSize=r.fontSize-2,a.typeC4Shape.width=wt("\xAB"+a.typeC4Shape.text+"\xBB",r),a.typeC4Shape.height=r.fontSize+2,a.typeC4Shape.Y=x.c4ShapePadding,l=a.typeC4Shape.Y+a.typeC4Shape.height-4,a.image={width:0,height:0,Y:0},a.typeC4Shape.text){case"person":case"external_person":a.image.width=48,a.image.height=48,a.image.Y=l,l=a.image.Y+a.image.height;break}a.sprite&&(a.image.width=48,a.image.height=48,a.image.Y=l,l=a.image.Y+a.image.height);let i=a.wrap&&x.wrap,u=x.width-x.c4ShapePadding*2,d=Bt(x,a.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",z("label",a,i,d,u),a.label.Y=l+8,l=a.label.Y+a.label.height,a.type&&a.type.text!==""){a.type.text="["+a.type.text+"]";let E=Bt(x,a.typeC4Shape.text);z("type",a,i,E,u),a.type.Y=l+5,l=a.type.Y+a.type.height}else if(a.techn&&a.techn.text!==""){a.techn.text="["+a.techn.text+"]";let E=Bt(x,a.techn.text);z("techn",a,i,E,u),a.techn.Y=l+5,l=a.techn.Y+a.techn.height}let b=l,p=a.label.width;if(a.descr&&a.descr.text!==""){let E=Bt(x,a.typeC4Shape.text);z("descr",a,i,E,u),a.descr.Y=l+20,l=a.descr.Y+a.descr.height,p=Math.max(a.label.width,a.descr.width),b=l-a.descr.textLines*5}p=p+x.c4ShapePadding,a.width=Math.max(a.width||x.width,p,x.width),a.height=Math.max(a.height||x.height,b,x.height),a.margin=a.margin||x.c4ShapeMargin,e.insert(a),V.drawC4Shape(t,a,x)}e.bumpLastMargin(x.c4ShapeMargin)},"drawC4ShapeArray"),N=class{static{y(this,"Point")}constructor(t,s){this.x=t,this.y=s}},De=y(function(e,t){let s=e.x,o=e.y,l=t.x,n=t.y,a=s+e.width/2,r=o+e.height/2,i=Math.abs(s-l),u=Math.abs(o-n),d=u/i,b=e.height/e.width,p=null;return o==n&&sl?p=new N(s,r):s==l&&on&&(p=new N(a,o)),s>l&&o=d?p=new N(s,r+d*e.width/2):p=new N(a-i/u*e.height/2,o+e.height):s=d?p=new N(s+e.width,r+d*e.width/2):p=new N(a+i/u*e.height/2,o+e.height):sn?b>=d?p=new N(s+e.width,r-d*e.width/2):p=new N(a+e.height/2*i/u,o):s>l&&o>n&&(b>=d?p=new N(s,r-e.width/2*d):p=new N(a-e.height/2*i/u,o)),p},"getIntersectPoint"),D0=y(function(e,t){let s={x:0,y:0};s.x=t.x+t.width/2,s.y=t.y+t.height/2;let o=De(e,s);s.x=e.x+e.width/2,s.y=e.y+e.height/2;let l=De(t,s);return{startPoint:o,endPoint:l}},"getIntersectPoints"),S0=y(function(e,t,s,o){let l=0;for(let n of t){l=l+1;let a=n.wrap&&x.wrap,r=R0(x);o.db.getC4Type()==="C4Dynamic"&&(n.label.text=l+": "+n.label.text);let u=wt(n.label.text,r);z("label",n,a,r,u),n.techn&&n.techn.text!==""&&(u=wt(n.techn.text,r),z("techn",n,a,r,u)),n.descr&&n.descr.text!==""&&(u=wt(n.descr.text,r),z("descr",n,a,r,u));let d=s(n.from),b=s(n.to),p=D0(d,b);n.startPoint=p.startPoint,n.endPoint=p.endPoint}V.drawRels(e,t,x)},"drawRels");function Le(e,t,s,o,l){let n=new Wt(l);n.data.widthLimit=s.data.widthLimit/Math.min(le,o.length);for(let[a,r]of o.entries()){let i=0;r.image={width:0,height:0,Y:0},r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=i,i=r.image.Y+r.image.height);let u=r.wrap&&x.wrap,d=Vt(x);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",z("label",r,u,d,n.data.widthLimit),r.label.Y=i+8,i=r.label.Y+r.label.height,r.type&&r.type.text!==""){r.type.text="["+r.type.text+"]";let T=Vt(x);z("type",r,u,T,n.data.widthLimit),r.type.Y=i+5,i=r.type.Y+r.type.height}if(r.descr&&r.descr.text!==""){let T=Vt(x);T.fontSize=T.fontSize-2,z("descr",r,u,T,n.data.widthLimit),r.descr.Y=i+20,i=r.descr.Y+r.descr.height}if(a==0||a%le===0){let T=s.data.startx+x.diagramMarginX,D=s.data.stopy+x.diagramMarginY+i;n.setData(T,T,D,D)}else{let T=n.data.stopx!==n.data.startx?n.data.stopx+x.diagramMarginX:n.data.startx,D=n.data.starty;n.setData(T,T,D,D)}n.name=r.alias;let b=l.db.getC4ShapeArray(r.alias),p=l.db.getC4ShapeKeys(r.alias);p.length>0&&Me(n,e,b,p),t=r.alias;let E=l.db.getBoundaries(t);E.length>0&&Le(e,t,n,E,l),r.alias!=="global"&&Pe(e,r,n),s.data.stopy=Math.max(n.data.stopy+x.c4ShapeMargin,s.data.stopy),s.data.stopx=Math.max(n.data.stopx+x.c4ShapeMargin,s.data.stopx),zt=Math.max(zt,s.data.stopx),Xt=Math.max(Xt,s.data.stopy)}}y(Le,"drawInsideBoundary");var P0=y(function(e,t,s,o){x=vt().c4;let l=vt().securityLevel,n;l==="sandbox"&&(n=Pt("#i"+t));let a=l==="sandbox"?Pt(n.nodes()[0].contentDocument.body):Pt("body"),r=o.db;o.db.setWrap(x.wrap),Se=r.getC4ShapeInRow(),le=r.getC4BoundaryInRow(),ee.debug(`C:${JSON.stringify(x,null,2)}`);let i=l==="sandbox"?a.select(`[id="${t}"]`):Pt(`[id="${t}"]`);V.insertComputerIcon(i),V.insertDatabaseIcon(i),V.insertClockIcon(i);let u=new Wt(o);u.setData(x.diagramMarginX,x.diagramMarginX,x.diagramMarginY,x.diagramMarginY),u.data.widthLimit=screen.availWidth,zt=x.diagramMarginX,Xt=x.diagramMarginY;let d=o.db.getTitle(),b=o.db.getBoundaries("");Le(i,"",u,b,o),V.insertArrowHead(i),V.insertArrowEnd(i),V.insertArrowCrossHead(i),V.insertArrowFilledHead(i),S0(i,o.db.getRels(),o.db.getC4Shape,o),u.data.stopx=zt,u.data.stopy=Xt;let p=u.data,T=p.stopy-p.starty+2*x.diagramMarginY,P=p.stopx-p.startx+2*x.diagramMarginX;d&&i.append("text").text(d).attr("x",(p.stopx-p.startx)/2-4*x.diagramMarginX).attr("y",p.starty+x.diagramMarginY),be(i,T,P,x.useMaxWidth);let B=d?60:0;i.attr("viewBox",p.startx-x.diagramMarginX+" -"+(x.diagramMarginY+B)+" "+P+" "+(T+B)),ee.debug("models:",p)},"draw"),ce={drawPersonOrSystemArray:Me,drawBoundary:Pe,setConf:oe,draw:P0};var M0=y(e=>`.person { - stroke: ${e.personBorder}; - fill: ${e.personBkg}; - } -`,"getStyles"),Ne=M0;var u1={parser:Ce,db:Nt,renderer:ce,styles:Ne,init:y(({c4:e,wrap:t})=>{ce.setConf(e),Nt.setWrap(t)},"init")};export{u1 as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-Y2BXMSZH.mjs b/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-Y2BXMSZH.mjs new file mode 100644 index 0000000..f12ea7b --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-Y2BXMSZH.mjs @@ -0,0 +1,10 @@ +import{a as ke,f as Ee}from"./chunk-LII3EMHJ.mjs";import{i as Ae,j as ie,k as wt}from"./chunk-QA3QBVWF.mjs";import{a as Ve}from"./chunk-KNLZD3CH.mjs";import{A as ne,G as St,O as be,T as ge,U as xe,V as _e,W as me,_ as vt,a as ye}from"./chunk-67TQ5CYL.mjs";import{b as ee,h as Pt}from"./chunk-7W6UQGC5.mjs";import{a as y,d as Fe}from"./chunk-AQ6EADP3.mjs";var Mt=(function(){var n=y(function(xt,_,k,E){for(k=k||{},E=xt.length;E--;k[xt[E]]=_);return k},"o"),t=[1,24],a=[1,25],o=[1,26],s=[1,27],l=[1,28],e=[1,63],r=[1,64],i=[1,65],u=[1,66],d=[1,67],p=[1,68],b=[1,69],m=[1,29],T=[1,30],D=[1,31],P=[1,32],B=[1,33],j=[1,34],H=[1,35],q=[1,36],G=[1,37],K=[1,38],J=[1,39],Z=[1,40],$=[1,41],tt=[1,42],et=[1,43],nt=[1,44],it=[1,45],rt=[1,46],at=[1,47],st=[1,48],lt=[1,50],ot=[1,51],ct=[1,52],ht=[1,53],ut=[1,54],dt=[1,55],ft=[1,56],pt=[1,57],yt=[1,58],bt=[1,59],gt=[1,60],Ot=[14,42],Qt=[14,34,36,37,38,39,40,41,42,44,45,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,72,73,74],Rt=[12,14,34,36,37,38,39,40,41,42,44,45,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,72,73,74],A=[1,82],C=[1,83],v=[1,84],w=[1,85],O=[12,14,42],he=[12,14,33,42],Yt=[12,14,33,42,76,77,79,80],kt=[12,33],Ht=[34,36,37,38,39,40,41,44,45,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,72,73,74],qt={trace:y(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:y(function(_,k,E,g,R,h,Dt){var f=h.length-1;switch(R){case 3:g.setDirection("TB");break;case 4:g.setDirection("BT");break;case 5:g.setDirection("RL");break;case 6:g.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:g.setC4Type(h[f-3]);break;case 19:g.setTitle(h[f].substring(6)),this.$=h[f].substring(6);break;case 20:g.setAccDescription(h[f].substring(15)),this.$=h[f].substring(15);break;case 21:this.$=h[f].trim(),g.setTitle(this.$);break;case 22:case 23:this.$=h[f].trim(),g.setAccDescription(this.$);break;case 28:h[f].splice(2,0,"ENTERPRISE"),g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 29:h[f].splice(2,0,"SYSTEM"),g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 30:g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 31:h[f].splice(2,0,"CONTAINER"),g.addContainerBoundary(...h[f]),this.$=h[f];break;case 32:g.addDeploymentNode("node",...h[f]),this.$=h[f];break;case 33:g.addDeploymentNode("nodeL",...h[f]),this.$=h[f];break;case 34:g.addDeploymentNode("nodeR",...h[f]),this.$=h[f];break;case 35:g.popBoundaryParseStack();break;case 39:g.addPersonOrSystem("person",...h[f]),this.$=h[f];break;case 40:g.addPersonOrSystem("external_person",...h[f]),this.$=h[f];break;case 41:g.addPersonOrSystem("system",...h[f]),this.$=h[f];break;case 42:g.addPersonOrSystem("system_db",...h[f]),this.$=h[f];break;case 43:g.addPersonOrSystem("system_queue",...h[f]),this.$=h[f];break;case 44:g.addPersonOrSystem("external_system",...h[f]),this.$=h[f];break;case 45:g.addPersonOrSystem("external_system_db",...h[f]),this.$=h[f];break;case 46:g.addPersonOrSystem("external_system_queue",...h[f]),this.$=h[f];break;case 47:g.addContainer("container",...h[f]),this.$=h[f];break;case 48:g.addContainer("container_db",...h[f]),this.$=h[f];break;case 49:g.addContainer("container_queue",...h[f]),this.$=h[f];break;case 50:g.addContainer("external_container",...h[f]),this.$=h[f];break;case 51:g.addContainer("external_container_db",...h[f]),this.$=h[f];break;case 52:g.addContainer("external_container_queue",...h[f]),this.$=h[f];break;case 53:g.addComponent("component",...h[f]),this.$=h[f];break;case 54:g.addComponent("component_db",...h[f]),this.$=h[f];break;case 55:g.addComponent("component_queue",...h[f]),this.$=h[f];break;case 56:g.addComponent("external_component",...h[f]),this.$=h[f];break;case 57:g.addComponent("external_component_db",...h[f]),this.$=h[f];break;case 58:g.addComponent("external_component_queue",...h[f]),this.$=h[f];break;case 60:g.addRel("rel",...h[f]),this.$=h[f];break;case 61:g.addRel("birel",...h[f]),this.$=h[f];break;case 62:g.addRel("rel_u",...h[f]),this.$=h[f];break;case 63:g.addRel("rel_d",...h[f]),this.$=h[f];break;case 64:g.addRel("rel_l",...h[f]),this.$=h[f];break;case 65:g.addRel("rel_r",...h[f]),this.$=h[f];break;case 66:g.addRel("rel_b",...h[f]),this.$=h[f];break;case 67:h[f].splice(0,1),g.addRel("rel",...h[f]),this.$=h[f];break;case 68:g.updateElStyle("update_el_style",...h[f]),this.$=h[f];break;case 69:g.updateRelStyle("update_rel_style",...h[f]),this.$=h[f];break;case 70:g.updateLayoutConfig("update_layout_config",...h[f]),this.$=h[f];break;case 71:this.$=[h[f]];break;case 72:h[f].unshift(h[f-1]),this.$=h[f];break;case 73:case 75:this.$=h[f].trim();break;case 74:let Et={};Et[h[f-1].trim()]=h[f].trim(),this.$=Et;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:a,24:o,26:s,28:l,29:49,30:61,32:62,34:e,36:r,37:i,38:u,39:d,40:p,41:b,43:23,44:m,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:70,19:20,20:21,21:22,22:t,23:a,24:o,26:s,28:l,29:49,30:61,32:62,34:e,36:r,37:i,38:u,39:d,40:p,41:b,43:23,44:m,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:71,19:20,20:21,21:22,22:t,23:a,24:o,26:s,28:l,29:49,30:61,32:62,34:e,36:r,37:i,38:u,39:d,40:p,41:b,43:23,44:m,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:72,19:20,20:21,21:22,22:t,23:a,24:o,26:s,28:l,29:49,30:61,32:62,34:e,36:r,37:i,38:u,39:d,40:p,41:b,43:23,44:m,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:73,19:20,20:21,21:22,22:t,23:a,24:o,26:s,28:l,29:49,30:61,32:62,34:e,36:r,37:i,38:u,39:d,40:p,41:b,43:23,44:m,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{14:[1,74]},n(Ot,[2,13],{43:23,29:49,30:61,32:62,20:75,34:e,36:r,37:i,38:u,39:d,40:p,41:b,44:m,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt}),n(Ot,[2,14]),n(Qt,[2,16],{12:[1,76]}),n(Ot,[2,36],{12:[1,77]}),n(Rt,[2,19]),n(Rt,[2,20]),{25:[1,78]},{27:[1,79]},n(Rt,[2,23]),{35:80,75:81,76:A,77:C,79:v,80:w},{35:86,75:81,76:A,77:C,79:v,80:w},{35:87,75:81,76:A,77:C,79:v,80:w},{35:88,75:81,76:A,77:C,79:v,80:w},{35:89,75:81,76:A,77:C,79:v,80:w},{35:90,75:81,76:A,77:C,79:v,80:w},{35:91,75:81,76:A,77:C,79:v,80:w},{35:92,75:81,76:A,77:C,79:v,80:w},{35:93,75:81,76:A,77:C,79:v,80:w},{35:94,75:81,76:A,77:C,79:v,80:w},{35:95,75:81,76:A,77:C,79:v,80:w},{35:96,75:81,76:A,77:C,79:v,80:w},{35:97,75:81,76:A,77:C,79:v,80:w},{35:98,75:81,76:A,77:C,79:v,80:w},{35:99,75:81,76:A,77:C,79:v,80:w},{35:100,75:81,76:A,77:C,79:v,80:w},{35:101,75:81,76:A,77:C,79:v,80:w},{35:102,75:81,76:A,77:C,79:v,80:w},{35:103,75:81,76:A,77:C,79:v,80:w},{35:104,75:81,76:A,77:C,79:v,80:w},n(O,[2,59]),{35:105,75:81,76:A,77:C,79:v,80:w},{35:106,75:81,76:A,77:C,79:v,80:w},{35:107,75:81,76:A,77:C,79:v,80:w},{35:108,75:81,76:A,77:C,79:v,80:w},{35:109,75:81,76:A,77:C,79:v,80:w},{35:110,75:81,76:A,77:C,79:v,80:w},{35:111,75:81,76:A,77:C,79:v,80:w},{35:112,75:81,76:A,77:C,79:v,80:w},{35:113,75:81,76:A,77:C,79:v,80:w},{35:114,75:81,76:A,77:C,79:v,80:w},{35:115,75:81,76:A,77:C,79:v,80:w},{20:116,29:49,30:61,32:62,34:e,36:r,37:i,38:u,39:d,40:p,41:b,43:23,44:m,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{12:[1,118],33:[1,117]},{35:119,75:81,76:A,77:C,79:v,80:w},{35:120,75:81,76:A,77:C,79:v,80:w},{35:121,75:81,76:A,77:C,79:v,80:w},{35:122,75:81,76:A,77:C,79:v,80:w},{35:123,75:81,76:A,77:C,79:v,80:w},{35:124,75:81,76:A,77:C,79:v,80:w},{35:125,75:81,76:A,77:C,79:v,80:w},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},n(Ot,[2,15]),n(Qt,[2,17],{21:22,19:130,22:t,23:a,24:o,26:s,28:l}),n(Ot,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:a,24:o,26:s,28:l,34:e,36:r,37:i,38:u,39:d,40:p,41:b,44:m,45:T,46:D,47:P,48:B,49:j,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:nt,60:it,61:rt,62:at,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt}),n(Rt,[2,21]),n(Rt,[2,22]),n(O,[2,39]),n(he,[2,71],{75:81,35:132,76:A,77:C,79:v,80:w}),n(Yt,[2,73]),{78:[1,133]},n(Yt,[2,75]),n(Yt,[2,76]),n(O,[2,40]),n(O,[2,41]),n(O,[2,42]),n(O,[2,43]),n(O,[2,44]),n(O,[2,45]),n(O,[2,46]),n(O,[2,47]),n(O,[2,48]),n(O,[2,49]),n(O,[2,50]),n(O,[2,51]),n(O,[2,52]),n(O,[2,53]),n(O,[2,54]),n(O,[2,55]),n(O,[2,56]),n(O,[2,57]),n(O,[2,58]),n(O,[2,60]),n(O,[2,61]),n(O,[2,62]),n(O,[2,63]),n(O,[2,64]),n(O,[2,65]),n(O,[2,66]),n(O,[2,67]),n(O,[2,68]),n(O,[2,69]),n(O,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},n(kt,[2,28]),n(kt,[2,29]),n(kt,[2,30]),n(kt,[2,31]),n(kt,[2,32]),n(kt,[2,33]),n(kt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},n(Qt,[2,18]),n(Ot,[2,38]),n(he,[2,72]),n(Yt,[2,74]),n(O,[2,24]),n(O,[2,35]),n(Ht,[2,25]),n(Ht,[2,26],{12:[1,138]}),n(Ht,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:y(function(_,k){if(k.recoverable)this.trace(_);else{var E=new Error(_);throw E.hash=k,E}},"parseError"),parse:y(function(_){var k=this,E=[0],g=[],R=[null],h=[],Dt=this.table,f="",Et=0,ue=0,de=0,Ye=2,fe=1,Ie=h.slice.call(arguments,1),S=Object.create(this.lexer),At={yy:{}};for(var Kt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Kt)&&(At.yy[Kt]=this.yy[Kt]);S.setInput(_,At.yy),At.yy.lexer=S,At.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var Jt=S.yylloc;h.push(Jt);var je=S.options&&S.options.ranges;typeof At.yy.parseError=="function"?this.parseError=At.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function M0(Y){E.length=E.length-2*Y,R.length=R.length-Y,h.length=h.length-Y}y(M0,"popStack");function Ue(){var Y;return Y=g.pop()||S.lex()||fe,typeof Y!="number"&&(Y instanceof Array&&(g=Y,Y=g.pop()),Y=k.symbols_[Y]||Y),Y}y(Ue,"lex");for(var M,Zt,Ct,I,L0,$t,Tt={},It,W,pe,jt;;){if(Ct=E[E.length-1],this.defaultActions[Ct]?I=this.defaultActions[Ct]:((M===null||typeof M>"u")&&(M=Ue()),I=Dt[Ct]&&Dt[Ct][M]),typeof I>"u"||!I.length||!I[0]){var te="";jt=[];for(It in Dt[Ct])this.terminals_[It]&&It>Ye&&jt.push("'"+this.terminals_[It]+"'");S.showPosition?te="Parse error on line "+(Et+1)+`: +`+S.showPosition()+` +Expecting `+jt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":te="Parse error on line "+(Et+1)+": Unexpected "+(M==fe?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(te,{text:S.match,token:this.terminals_[M]||M,line:S.yylineno,loc:Jt,expected:jt})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ct+", token: "+M);switch(I[0]){case 1:E.push(M),R.push(S.yytext),h.push(S.yylloc),E.push(I[1]),M=null,Zt?(M=Zt,Zt=null):(ue=S.yyleng,f=S.yytext,Et=S.yylineno,Jt=S.yylloc,de>0&&de--);break;case 2:if(W=this.productions_[I[1]][1],Tt.$=R[R.length-W],Tt._$={first_line:h[h.length-(W||1)].first_line,last_line:h[h.length-1].last_line,first_column:h[h.length-(W||1)].first_column,last_column:h[h.length-1].last_column},je&&(Tt._$.range=[h[h.length-(W||1)].range[0],h[h.length-1].range[1]]),$t=this.performAction.apply(Tt,[f,ue,Et,At.yy,I[1],R,h].concat(Ie)),typeof $t<"u")return $t;W&&(E=E.slice(0,-1*W*2),R=R.slice(0,-1*W),h=h.slice(0,-1*W)),E.push(this.productions_[I[1]][0]),R.push(Tt.$),h.push(Tt._$),pe=Dt[E[E.length-2]][E[E.length-1]],E.push(pe);break;case 3:return!0}}return!0},"parse")},Be=(function(){var xt={EOF:1,parseError:y(function(k,E){if(this.yy.parser)this.yy.parser.parseError(k,E);else throw new Error(k)},"parseError"),setInput:y(function(_,k){return this.yy=k||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:y(function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var k=_.match(/(?:\r\n?|\n).*/g);return k?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},"input"),unput:y(function(_){var k=_.length,E=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),E.length-1&&(this.yylineno-=E.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:E?(E.length===g.length?this.yylloc.first_column:0)+g[g.length-E.length].length-E[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:y(function(){return this._more=!0,this},"more"),reject:y(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:y(function(_){this.unput(this.match.slice(_))},"less"),pastInput:y(function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:y(function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:y(function(){var _=this.pastInput(),k=new Array(_.length+1).join("-");return _+this.upcomingInput()+` +`+k+"^"},"showPosition"),test_match:y(function(_,k){var E,g,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),g=_[0].match(/(?:\r\n?|\n).*/g),g&&(this.yylineno+=g.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:g?g[g.length-1].length-g[g.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+_[0].length},this.yytext+=_[0],this.match+=_[0],this.matches=_,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(_[0].length),this.matched+=_[0],E=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),E)return E;if(this._backtrack){for(var h in R)this[h]=R[h];return!1}return!1},"test_match"),next:y(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,k,E,g;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),h=0;hk[0].length)){if(k=E,g=h,this.options.backtrack_lexer){if(_=this.test_match(E,R[h]),_!==!1)return _;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(_=this.test_match(k,R[g]),_!==!1?_:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:y(function(){var k=this.next();return k||this.lex()},"lex"),begin:y(function(k){this.conditionStack.push(k)},"begin"),popState:y(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:y(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:y(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:y(function(k){this.begin(k)},"pushState"),stateStackSize:y(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:y(function(k,E,g,R){var h=R;switch(g){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[65,66,67,68],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return xt})();qt.lexer=Be;function Gt(){this.yy={}}return y(Gt,"Parser"),Gt.prototype=qt,qt.Parser=Gt,new Gt})();Mt.parser=Mt;var Ce=Mt;var F=[],_t=[""],L="global",U="",X=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Lt=[],re="",ae=!1,Ut=4,Ft=2,ve,ze=y(function(){return ve},"getC4Type"),Xe=y(function(n){ve=ne(n,vt())},"setC4Type"),We=y(function(n,t,a,o,s,l,e,r,i){if(n==null||t===void 0||t===null||a===void 0||a===null||o===void 0||o===null)return;let u={},d=Lt.find(p=>p.from===t&&p.to===a);if(d?u=d:Lt.push(u),u.type=n,u.from=t,u.to=a,u.label={text:o},s==null)u.techn={text:""};else if(typeof s=="object"){let[p,b]=Object.entries(s)[0];u[p]={text:b}}else u.techn={text:s};if(l==null)u.descr={text:""};else if(typeof l=="object"){let[p,b]=Object.entries(l)[0];u[p]={text:b}}else u.descr={text:l};if(typeof e=="object"){let[p,b]=Object.entries(e)[0];u[p]=b}else u.sprite=e;if(typeof r=="object"){let[p,b]=Object.entries(r)[0];u[p]=b}else u.tags=r;if(typeof i=="object"){let[p,b]=Object.entries(i)[0];u[p]=b}else u.link=i;u.wrap=mt()},"addRel"),Qe=y(function(n,t,a,o,s,l,e){if(t===null||a===null)return;let r={},i=F.find(u=>u.alias===t);if(i&&t===i.alias?r=i:(r.alias=t,F.push(r)),a==null?r.label={text:""}:r.label={text:a},o==null)r.descr={text:""};else if(typeof o=="object"){let[u,d]=Object.entries(o)[0];r[u]={text:d}}else r.descr={text:o};if(typeof s=="object"){let[u,d]=Object.entries(s)[0];r[u]=d}else r.sprite=s;if(typeof l=="object"){let[u,d]=Object.entries(l)[0];r[u]=d}else r.tags=l;if(typeof e=="object"){let[u,d]=Object.entries(e)[0];r[u]=d}else r.link=e;r.typeC4Shape={text:n},r.parentBoundary=L,r.wrap=mt()},"addPersonOrSystem"),He=y(function(n,t,a,o,s,l,e,r){if(t===null||a===null)return;let i={},u=F.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,F.push(i)),a==null?i.label={text:""}:i.label={text:a},o==null)i.techn={text:""};else if(typeof o=="object"){let[d,p]=Object.entries(o)[0];i[d]={text:p}}else i.techn={text:o};if(s==null)i.descr={text:""};else if(typeof s=="object"){let[d,p]=Object.entries(s)[0];i[d]={text:p}}else i.descr={text:s};if(typeof l=="object"){let[d,p]=Object.entries(l)[0];i[d]=p}else i.sprite=l;if(typeof e=="object"){let[d,p]=Object.entries(e)[0];i[d]=p}else i.tags=e;if(typeof r=="object"){let[d,p]=Object.entries(r)[0];i[d]=p}else i.link=r;i.wrap=mt(),i.typeC4Shape={text:n},i.parentBoundary=L},"addContainer"),qe=y(function(n,t,a,o,s,l,e,r){if(t===null||a===null)return;let i={},u=F.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,F.push(i)),a==null?i.label={text:""}:i.label={text:a},o==null)i.techn={text:""};else if(typeof o=="object"){let[d,p]=Object.entries(o)[0];i[d]={text:p}}else i.techn={text:o};if(s==null)i.descr={text:""};else if(typeof s=="object"){let[d,p]=Object.entries(s)[0];i[d]={text:p}}else i.descr={text:s};if(typeof l=="object"){let[d,p]=Object.entries(l)[0];i[d]=p}else i.sprite=l;if(typeof e=="object"){let[d,p]=Object.entries(e)[0];i[d]=p}else i.tags=e;if(typeof r=="object"){let[d,p]=Object.entries(r)[0];i[d]=p}else i.link=r;i.wrap=mt(),i.typeC4Shape={text:n},i.parentBoundary=L},"addComponent"),Ge=y(function(n,t,a,o,s){if(n===null||t===null)return;let l={},e=X.find(r=>r.alias===n);if(e&&n===e.alias?l=e:(l.alias=n,X.push(l)),t==null?l.label={text:""}:l.label={text:t},a==null)l.type={text:"system"};else if(typeof a=="object"){let[r,i]=Object.entries(a)[0];l[r]={text:i}}else l.type={text:a};if(typeof o=="object"){let[r,i]=Object.entries(o)[0];l[r]=i}else l.tags=o;if(typeof s=="object"){let[r,i]=Object.entries(s)[0];l[r]=i}else l.link=s;l.parentBoundary=L,l.wrap=mt(),U=L,L=n,_t.push(U)},"addPersonOrSystemBoundary"),Ke=y(function(n,t,a,o,s){if(n===null||t===null)return;let l={},e=X.find(r=>r.alias===n);if(e&&n===e.alias?l=e:(l.alias=n,X.push(l)),t==null?l.label={text:""}:l.label={text:t},a==null)l.type={text:"container"};else if(typeof a=="object"){let[r,i]=Object.entries(a)[0];l[r]={text:i}}else l.type={text:a};if(typeof o=="object"){let[r,i]=Object.entries(o)[0];l[r]=i}else l.tags=o;if(typeof s=="object"){let[r,i]=Object.entries(s)[0];l[r]=i}else l.link=s;l.parentBoundary=L,l.wrap=mt(),U=L,L=n,_t.push(U)},"addContainerBoundary"),Je=y(function(n,t,a,o,s,l,e,r){if(t===null||a===null)return;let i={},u=X.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,X.push(i)),a==null?i.label={text:""}:i.label={text:a},o==null)i.type={text:"node"};else if(typeof o=="object"){let[d,p]=Object.entries(o)[0];i[d]={text:p}}else i.type={text:o};if(s==null)i.descr={text:""};else if(typeof s=="object"){let[d,p]=Object.entries(s)[0];i[d]={text:p}}else i.descr={text:s};if(typeof e=="object"){let[d,p]=Object.entries(e)[0];i[d]=p}else i.tags=e;if(typeof r=="object"){let[d,p]=Object.entries(r)[0];i[d]=p}else i.link=r;i.nodeType=n,i.parentBoundary=L,i.wrap=mt(),U=L,L=t,_t.push(U)},"addDeploymentNode"),Ze=y(function(){L=U,_t.pop(),U=_t.pop(),_t.push(U)},"popBoundaryParseStack"),$e=y(function(n,t,a,o,s,l,e,r,i,u,d){let p=F.find(b=>b.alias===t);if(!(p===void 0&&(p=X.find(b=>b.alias===t),p===void 0))){if(a!=null)if(typeof a=="object"){let[b,m]=Object.entries(a)[0];p[b]=m}else p.bgColor=a;if(o!=null)if(typeof o=="object"){let[b,m]=Object.entries(o)[0];p[b]=m}else p.fontColor=o;if(s!=null)if(typeof s=="object"){let[b,m]=Object.entries(s)[0];p[b]=m}else p.borderColor=s;if(l!=null)if(typeof l=="object"){let[b,m]=Object.entries(l)[0];p[b]=m}else p.shadowing=l;if(e!=null)if(typeof e=="object"){let[b,m]=Object.entries(e)[0];p[b]=m}else p.shape=e;if(r!=null)if(typeof r=="object"){let[b,m]=Object.entries(r)[0];p[b]=m}else p.sprite=r;if(i!=null)if(typeof i=="object"){let[b,m]=Object.entries(i)[0];p[b]=m}else p.techn=i;if(u!=null)if(typeof u=="object"){let[b,m]=Object.entries(u)[0];p[b]=m}else p.legendText=u;if(d!=null)if(typeof d=="object"){let[b,m]=Object.entries(d)[0];p[b]=m}else p.legendSprite=d}},"updateElStyle"),t0=y(function(n,t,a,o,s,l,e){let r=Lt.find(i=>i.from===t&&i.to===a);if(r!==void 0){if(o!=null)if(typeof o=="object"){let[i,u]=Object.entries(o)[0];r[i]=u}else r.textColor=o;if(s!=null)if(typeof s=="object"){let[i,u]=Object.entries(s)[0];r[i]=u}else r.lineColor=s;if(l!=null)if(typeof l=="object"){let[i,u]=Object.entries(l)[0];r[i]=parseInt(u)}else r.offsetX=parseInt(l);if(e!=null)if(typeof e=="object"){let[i,u]=Object.entries(e)[0];r[i]=parseInt(u)}else r.offsetY=parseInt(e)}},"updateRelStyle"),e0=y(function(n,t,a){let o=Ut,s=Ft;if(typeof t=="object"){let l=Object.values(t)[0];o=parseInt(l)}else o=parseInt(t);if(typeof a=="object"){let l=Object.values(a)[0];s=parseInt(l)}else s=parseInt(a);o>=1&&(Ut=o),s>=1&&(Ft=s)},"updateLayoutConfig"),n0=y(function(){return Ut},"getC4ShapeInRow"),i0=y(function(){return Ft},"getC4BoundaryInRow"),r0=y(function(){return L},"getCurrentBoundaryParse"),a0=y(function(){return U},"getParentBoundaryParse"),we=y(function(n){return n==null?F:F.filter(t=>t.parentBoundary===n)},"getC4ShapeArray"),s0=y(function(n){return F.find(t=>t.alias===n)},"getC4Shape"),l0=y(function(n){return Object.keys(we(n))},"getC4ShapeKeys"),Oe=y(function(n){return n==null?X:X.filter(t=>t.parentBoundary===n)},"getBoundaries"),o0=Oe,c0=y(function(){return Lt},"getRels"),h0=y(function(){return re},"getTitle"),u0=y(function(n){ae=n},"setWrap"),mt=y(function(){return ae},"autoWrap"),d0=y(function(){F=[],X=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],U="",L="global",_t=[""],Lt=[],_t=[""],re="",ae=!1,Ut=4,Ft=2},"clear"),f0={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},p0={FILLED:0,OPEN:1},y0={LEFTOF:0,RIGHTOF:1,OVER:2},b0=y(function(n){re=ne(n,vt())},"setTitle"),Nt={addPersonOrSystem:Qe,addPersonOrSystemBoundary:Ge,addContainer:He,addContainerBoundary:Ke,addComponent:qe,addDeploymentNode:Je,popBoundaryParseStack:Ze,addRel:We,updateElStyle:$e,updateRelStyle:t0,updateLayoutConfig:e0,autoWrap:mt,setWrap:u0,getC4ShapeArray:we,getC4Shape:s0,getC4ShapeKeys:l0,getBoundaries:Oe,getBoundarys:o0,getCurrentBoundaryParse:r0,getParentBoundaryParse:a0,getRels:c0,getTitle:h0,getC4Type:ze,getC4ShapeInRow:n0,getC4BoundaryInRow:i0,setAccTitle:ge,getAccTitle:xe,getAccDescription:me,setAccDescription:_e,getConfig:y(()=>vt().c4,"getConfig"),clear:d0,LINETYPE:f0,ARROWTYPE:p0,PLACEMENT:y0,setTitle:b0,setC4Type:Xe};var Te=Fe(Ve(),1);var se=y(function(n,t){return ke(n,t)},"drawRect"),Re=y(function(n,t,a,o,s,l){let e=n.append("image");e.attr("width",t),e.attr("height",a),e.attr("x",o),e.attr("y",s);let r=l.startsWith("data:image/png;base64")?l:(0,Te.sanitizeUrl)(l);e.attr("xlink:href",r)},"drawImage"),g0=y((n,t,a,o)=>{let s=n.append("g"),l=0;for(let e of t){let r=e.textColor?e.textColor:"#444444",i=e.lineColor?e.lineColor:"#444444",u=e.offsetX?parseInt(e.offsetX):0,d=e.offsetY?parseInt(e.offsetY):0,p="";if(l===0){let m=s.append("line");m.attr("x1",e.startPoint.x),m.attr("y1",e.startPoint.y),m.attr("x2",e.endPoint.x),m.attr("y2",e.endPoint.y),m.attr("stroke-width","1"),m.attr("stroke",i),m.style("fill","none"),e.type!=="rel_b"&&m.attr("marker-end","url("+p+"#"+o+"-arrowhead)"),(e.type==="birel"||e.type==="rel_b")&&m.attr("marker-start","url("+p+"#"+o+"-arrowend)"),l=-1}else{let m=s.append("path");m.attr("fill","none").attr("stroke-width","1").attr("stroke",i).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",e.startPoint.x).replaceAll("starty",e.startPoint.y).replaceAll("controlx",e.startPoint.x+(e.endPoint.x-e.startPoint.x)/2-(e.endPoint.x-e.startPoint.x)/4).replaceAll("controly",e.startPoint.y+(e.endPoint.y-e.startPoint.y)/2).replaceAll("stopx",e.endPoint.x).replaceAll("stopy",e.endPoint.y)),e.type!=="rel_b"&&m.attr("marker-end","url("+p+"#"+o+"-arrowhead)"),(e.type==="birel"||e.type==="rel_b")&&m.attr("marker-start","url("+p+"#"+o+"-arrowend)")}let b=a.messageFont();Q(a)(e.label.text,s,Math.min(e.startPoint.x,e.endPoint.x)+Math.abs(e.endPoint.x-e.startPoint.x)/2+u,Math.min(e.startPoint.y,e.endPoint.y)+Math.abs(e.endPoint.y-e.startPoint.y)/2+d,e.label.width,e.label.height,{fill:r},b),e.techn&&e.techn.text!==""&&(b=a.messageFont(),Q(a)("["+e.techn.text+"]",s,Math.min(e.startPoint.x,e.endPoint.x)+Math.abs(e.endPoint.x-e.startPoint.x)/2+u,Math.min(e.startPoint.y,e.endPoint.y)+Math.abs(e.endPoint.y-e.startPoint.y)/2+a.messageFontSize+5+d,Math.max(e.label.width,e.techn.width),e.techn.height,{fill:r,"font-style":"italic"},b))}},"drawRels"),x0=y(function(n,t,a){let o=n.append("g"),s=t.bgColor?t.bgColor:"none",l=t.borderColor?t.borderColor:"#444444",e=t.fontColor?t.fontColor:"black",r={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(r={"stroke-width":1});let i={x:t.x,y:t.y,fill:s,stroke:l,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:r};se(o,i);let u=a.boundaryFont();u.fontWeight="bold",u.fontSize=u.fontSize+2,u.fontColor=e,Q(a)(t.label.text,o,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},u),t.type&&t.type.text!==""&&(u=a.boundaryFont(),u.fontColor=e,Q(a)(t.type.text,o,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},u)),t.descr&&t.descr.text!==""&&(u=a.boundaryFont(),u.fontSize=u.fontSize-2,u.fontColor=e,Q(a)(t.descr.text,o,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},u))},"drawBoundary"),_0=y(function(n,t,a){let o=t.bgColor?t.bgColor:a[t.typeC4Shape.text+"_bg_color"],s=t.borderColor?t.borderColor:a[t.typeC4Shape.text+"_border_color"],l=t.fontColor?t.fontColor:"#FFFFFF",e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let r=n.append("g");r.attr("class","person-man");let i=Ee();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":i.x=t.x,i.y=t.y,i.fill=o,i.width=t.width,i.height=t.height,i.stroke=s,i.rx=2.5,i.ry=2.5,i.attrs={"stroke-width":.5},se(r,i);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":r.append("path").attr("fill",o).attr("stroke-width","0.5").attr("stroke",s).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),r.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",s).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":r.append("path").attr("fill",o).attr("stroke-width","0.5").attr("stroke",s).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),r.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",s).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let u=O0(a,t.typeC4Shape.text);switch(r.append("text").attr("fill",l).attr("font-family",u.fontFamily).attr("font-size",u.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":Re(r,48,48,t.x+t.width/2-24,t.y+t.image.Y,e);break}let d=a[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=l,Q(a)(t.label.text,r,t.x,t.y+t.label.Y,t.width,t.height,{fill:l},d),d=a[t.typeC4Shape.text+"Font"](),d.fontColor=l,t.techn&&t.techn?.text!==""?Q(a)(t.techn.text,r,t.x,t.y+t.techn.Y,t.width,t.height,{fill:l,"font-style":"italic"},d):t.type&&t.type.text!==""&&Q(a)(t.type.text,r,t.x,t.y+t.type.Y,t.width,t.height,{fill:l,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=a.personFont(),d.fontColor=l,Q(a)(t.descr.text,r,t.x,t.y+t.descr.Y,t.width,t.height,{fill:l},d)),t.height},"drawC4Shape"),m0=y(function(n,t){n.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),k0=y(function(n,t){n.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),E0=y(function(n,t){n.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),A0=y(function(n,t){n.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),C0=y(function(n,t){n.append("defs").append("marker").attr("id",t+"-arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),v0=y(function(n,t){n.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),w0=y(function(n,t){let o=n.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);o.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),o.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),O0=y((n,t)=>({fontFamily:n[t+"FontFamily"],fontSize:n[t+"FontSize"],fontWeight:n[t+"FontWeight"]}),"getC4ShapeFont"),Q=(function(){function n(s,l,e,r,i,u,d){let p=l.append("text").attr("x",e+i/2).attr("y",r+u/2+5).style("text-anchor","middle").text(s);o(p,d)}y(n,"byText");function t(s,l,e,r,i,u,d,p){let{fontSize:b,fontFamily:m,fontWeight:T}=p,D=s.split(St.lineBreakRegex);for(let P=0;P=this.data.widthLimit||o>=this.data.widthLimit||this.nextData.cnt>Se)&&(a=this.nextData.startx+t.margin+x.nextLinePaddingX,s=this.nextData.stopy+t.margin*2,this.nextData.stopx=o=a+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=l=s+t.height,this.nextData.cnt=1),t.x=a,t.y=s,this.updateVal(this.data,"startx",a,Math.min),this.updateVal(this.data,"starty",s,Math.min),this.updateVal(this.data,"stopx",o,Math.max),this.updateVal(this.data,"stopy",l,Math.max),this.updateVal(this.nextData,"startx",a,Math.min),this.updateVal(this.nextData,"starty",s,Math.min),this.updateVal(this.nextData,"stopx",o,Math.max),this.updateVal(this.nextData,"stopy",l,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},oe(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},oe=y(function(n){ye(x,n),n.fontFamily&&(x.personFontFamily=x.systemFontFamily=x.messageFontFamily=n.fontFamily),n.fontSize&&(x.personFontSize=x.systemFontSize=x.messageFontSize=n.fontSize),n.fontWeight&&(x.personFontWeight=x.systemFontWeight=x.messageFontWeight=n.fontWeight)},"setConf"),Bt=y((n,t)=>({fontFamily:n[t+"FontFamily"],fontSize:n[t+"FontSize"],fontWeight:n[t+"FontWeight"]}),"c4ShapeFont"),Vt=y(n=>({fontFamily:n.boundaryFontFamily,fontSize:n.boundaryFontSize,fontWeight:n.boundaryFontWeight}),"boundaryFont"),T0=y(n=>({fontFamily:n.messageFontFamily,fontSize:n.messageFontSize,fontWeight:n.messageFontWeight}),"messageFont");function z(n,t,a,o,s){if(!t[n].width)if(a)t[n].text=Ae(t[n].text,s,o),t[n].textLines=t[n].text.split(St.lineBreakRegex).length,t[n].width=s,t[n].height=ie(t[n].text,o);else{let l=t[n].text.split(St.lineBreakRegex);t[n].textLines=l.length;let e=0;t[n].height=0,t[n].width=0;for(let r of l)t[n].width=Math.max(wt(r,o),t[n].width),e=ie(r,o),t[n].height=t[n].height+e}}y(z,"calcC4ShapeTextWH");var Pe=y(function(n,t,a){t.x=a.data.startx,t.y=a.data.starty,t.width=a.data.stopx-a.data.startx,t.height=a.data.stopy-a.data.starty,t.label.y=x.c4ShapeMargin-35;let o=t.wrap&&x.wrap,s=Vt(x);s.fontSize=s.fontSize+2,s.fontWeight="bold";let l=wt(t.label.text,s);z("label",t,o,s,l),V.drawBoundary(n,t,x)},"drawBoundary"),Me=y(function(n,t,a,o){let s=0;for(let l of o){s=0;let e=a[l],r=Bt(x,e.typeC4Shape.text);switch(r.fontSize=r.fontSize-2,e.typeC4Shape.width=wt("\xAB"+e.typeC4Shape.text+"\xBB",r),e.typeC4Shape.height=r.fontSize+2,e.typeC4Shape.Y=x.c4ShapePadding,s=e.typeC4Shape.Y+e.typeC4Shape.height-4,e.image={width:0,height:0,Y:0},e.typeC4Shape.text){case"person":case"external_person":e.image.width=48,e.image.height=48,e.image.Y=s,s=e.image.Y+e.image.height;break}e.sprite&&(e.image.width=48,e.image.height=48,e.image.Y=s,s=e.image.Y+e.image.height);let i=e.wrap&&x.wrap,u=x.width-x.c4ShapePadding*2,d=Bt(x,e.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",z("label",e,i,d,u),e.label.Y=s+8,s=e.label.Y+e.label.height,e.type&&e.type.text!==""){e.type.text="["+e.type.text+"]";let m=Bt(x,e.typeC4Shape.text);z("type",e,i,m,u),e.type.Y=s+5,s=e.type.Y+e.type.height}else if(e.techn&&e.techn.text!==""){e.techn.text="["+e.techn.text+"]";let m=Bt(x,e.techn.text);z("techn",e,i,m,u),e.techn.Y=s+5,s=e.techn.Y+e.techn.height}let p=s,b=e.label.width;if(e.descr&&e.descr.text!==""){let m=Bt(x,e.typeC4Shape.text);z("descr",e,i,m,u),e.descr.Y=s+20,s=e.descr.Y+e.descr.height,b=Math.max(e.label.width,e.descr.width),p=s-e.descr.textLines*5}b=b+x.c4ShapePadding,e.width=Math.max(e.width||x.width,b,x.width),e.height=Math.max(e.height||x.height,p,x.height),e.margin=e.margin||x.c4ShapeMargin,n.insert(e),V.drawC4Shape(t,e,x)}n.bumpLastMargin(x.c4ShapeMargin)},"drawC4ShapeArray"),N=class{static{y(this,"Point")}constructor(t,a){this.x=t,this.y=a}},De=y(function(n,t){let a=n.x,o=n.y,s=t.x,l=t.y,e=a+n.width/2,r=o+n.height/2,i=Math.abs(a-s),u=Math.abs(o-l),d=u/i,p=n.height/n.width,b=null;return o==l&&as?b=new N(a,r):a==s&&ol&&(b=new N(e,o)),a>s&&o=d?b=new N(a,r+d*n.width/2):b=new N(e-i/u*n.height/2,o+n.height):a=d?b=new N(a+n.width,r+d*n.width/2):b=new N(e+i/u*n.height/2,o+n.height):al?p>=d?b=new N(a+n.width,r-d*n.width/2):b=new N(e+n.height/2*i/u,o):a>s&&o>l&&(p>=d?b=new N(a,r-n.width/2*d):b=new N(e-n.height/2*i/u,o)),b},"getIntersectPoint"),R0=y(function(n,t){let a={x:0,y:0};a.x=t.x+t.width/2,a.y=t.y+t.height/2;let o=De(n,a);a.x=n.x+n.width/2,a.y=n.y+n.height/2;let s=De(t,a);return{startPoint:o,endPoint:s}},"getIntersectPoints"),D0=y(function(n,t,a,o,s){let l=0;for(let e of t){l=l+1;let r=e.wrap&&x.wrap,i=T0(x);o.db.getC4Type()==="C4Dynamic"&&(e.label.text=l+": "+e.label.text);let d=wt(e.label.text,i);z("label",e,r,i,d),e.techn&&e.techn.text!==""&&(d=wt(e.techn.text,i),z("techn",e,r,i,d)),e.descr&&e.descr.text!==""&&(d=wt(e.descr.text,i),z("descr",e,r,i,d));let p=a(e.from),b=a(e.to),m=R0(p,b);e.startPoint=m.startPoint,e.endPoint=m.endPoint}V.drawRels(n,t,x,s)},"drawRels");function Le(n,t,a,o,s){let l=new Wt(s);l.data.widthLimit=a.data.widthLimit/Math.min(le,o.length);for(let[e,r]of o.entries()){let i=0;r.image={width:0,height:0,Y:0},r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=i,i=r.image.Y+r.image.height);let u=r.wrap&&x.wrap,d=Vt(x);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",z("label",r,u,d,l.data.widthLimit),r.label.Y=i+8,i=r.label.Y+r.label.height,r.type&&r.type.text!==""){r.type.text="["+r.type.text+"]";let T=Vt(x);z("type",r,u,T,l.data.widthLimit),r.type.Y=i+5,i=r.type.Y+r.type.height}if(r.descr&&r.descr.text!==""){let T=Vt(x);T.fontSize=T.fontSize-2,z("descr",r,u,T,l.data.widthLimit),r.descr.Y=i+20,i=r.descr.Y+r.descr.height}if(e==0||e%le===0){let T=a.data.startx+x.diagramMarginX,D=a.data.stopy+x.diagramMarginY+i;l.setData(T,T,D,D)}else{let T=l.data.stopx!==l.data.startx?l.data.stopx+x.diagramMarginX:l.data.startx,D=l.data.starty;l.setData(T,T,D,D)}l.name=r.alias;let p=s.db.getC4ShapeArray(r.alias),b=s.db.getC4ShapeKeys(r.alias);b.length>0&&Me(l,n,p,b),t=r.alias;let m=s.db.getBoundaries(t);m.length>0&&Le(n,t,l,m,s),r.alias!=="global"&&Pe(n,r,l),a.data.stopy=Math.max(l.data.stopy+x.c4ShapeMargin,a.data.stopy),a.data.stopx=Math.max(l.data.stopx+x.c4ShapeMargin,a.data.stopx),zt=Math.max(zt,a.data.stopx),Xt=Math.max(Xt,a.data.stopy)}}y(Le,"drawInsideBoundary");var S0=y(function(n,t,a,o){x=vt().c4;let s=vt().securityLevel,l;s==="sandbox"&&(l=Pt("#i"+t));let e=s==="sandbox"?Pt(l.nodes()[0].contentDocument.body):Pt("body"),r=o.db;o.db.setWrap(x.wrap),Se=r.getC4ShapeInRow(),le=r.getC4BoundaryInRow(),ee.debug(`C:${JSON.stringify(x,null,2)}`);let i=s==="sandbox"?e.select(`[id="${t}"]`):Pt(`[id="${t}"]`);V.insertComputerIcon(i,t),V.insertDatabaseIcon(i,t),V.insertClockIcon(i,t);let u=new Wt(o);u.setData(x.diagramMarginX,x.diagramMarginX,x.diagramMarginY,x.diagramMarginY),u.data.widthLimit=screen.availWidth,zt=x.diagramMarginX,Xt=x.diagramMarginY;let d=o.db.getTitle(),p=o.db.getBoundaries("");Le(i,"",u,p,o),V.insertArrowHead(i,t),V.insertArrowEnd(i,t),V.insertArrowCrossHead(i,t),V.insertArrowFilledHead(i,t),D0(i,o.db.getRels(),o.db.getC4Shape,o,t),u.data.stopx=zt,u.data.stopy=Xt;let b=u.data,T=b.stopy-b.starty+2*x.diagramMarginY,P=b.stopx-b.startx+2*x.diagramMarginX;d&&i.append("text").text(d).attr("x",(b.stopx-b.startx)/2-4*x.diagramMarginX).attr("y",b.starty+x.diagramMarginY),be(i,T,P,x.useMaxWidth);let B=d?60:0;i.attr("viewBox",b.startx-x.diagramMarginX+" -"+(x.diagramMarginY+B)+" "+P+" "+(T+B)),ee.debug("models:",b)},"draw"),ce={drawPersonOrSystemArray:Me,drawBoundary:Pe,setConf:oe,draw:S0};var P0=y(n=>`.person { + stroke: ${n.personBorder}; + fill: ${n.personBkg}; + } +`,"getStyles"),Ne=P0;var h1={parser:Ce,db:Nt,renderer:ce,styles:Ne,init:y(({c4:n,wrap:t})=>{ce.setConf(n),Nt.setWrap(t)},"init")};export{h1 as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-BBK6TRR6.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-Y2BXMSZH.mjs.map similarity index 59% rename from assets/mermaid/chunks/mermaid.esm.min/c4Diagram-BBK6TRR6.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/c4Diagram-Y2BXMSZH.mjs.map index 99dbce0..8f72dce 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-BBK6TRR6.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/c4Diagram-Y2BXMSZH.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/c4/parser/c4Diagram.jison", "../../../src/diagrams/c4/c4Db.js", "../../../src/diagrams/c4/svgDraw.js", "../../../src/diagrams/c4/c4Renderer.js", "../../../src/diagrams/c4/styles.js", "../../../src/diagrams/c4/c4Diagram.ts"], - "sourcesContent": ["/* 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,24],$V1=[1,25],$V2=[1,26],$V3=[1,27],$V4=[1,28],$V5=[1,63],$V6=[1,64],$V7=[1,65],$V8=[1,66],$V9=[1,67],$Va=[1,68],$Vb=[1,69],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,35],$Vj=[1,36],$Vk=[1,37],$Vl=[1,38],$Vm=[1,39],$Vn=[1,40],$Vo=[1,41],$Vp=[1,42],$Vq=[1,43],$Vr=[1,44],$Vs=[1,45],$Vt=[1,46],$Vu=[1,47],$Vv=[1,48],$Vw=[1,50],$Vx=[1,51],$Vy=[1,52],$Vz=[1,53],$VA=[1,54],$VB=[1,55],$VC=[1,56],$VD=[1,57],$VE=[1,58],$VF=[1,59],$VG=[1,60],$VH=[14,42],$VI=[14,34,36,37,38,39,40,41,42,44,45,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,72,73,74],$VJ=[12,14,34,36,37,38,39,40,41,42,44,45,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,72,73,74],$VK=[1,82],$VL=[1,83],$VM=[1,84],$VN=[1,85],$VO=[12,14,42],$VP=[12,14,33,42],$VQ=[12,14,33,42,76,77,79,80],$VR=[12,33],$VS=[34,36,37,38,39,40,41,44,45,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,72,73,74];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"direction\":5,\"direction_tb\":6,\"direction_bt\":7,\"direction_rl\":8,\"direction_lr\":9,\"graphConfig\":10,\"C4_CONTEXT\":11,\"NEWLINE\":12,\"statements\":13,\"EOF\":14,\"C4_CONTAINER\":15,\"C4_COMPONENT\":16,\"C4_DYNAMIC\":17,\"C4_DEPLOYMENT\":18,\"otherStatements\":19,\"diagramStatements\":20,\"otherStatement\":21,\"title\":22,\"accDescription\":23,\"acc_title\":24,\"acc_title_value\":25,\"acc_descr\":26,\"acc_descr_value\":27,\"acc_descr_multiline_value\":28,\"boundaryStatement\":29,\"boundaryStartStatement\":30,\"boundaryStopStatement\":31,\"boundaryStart\":32,\"LBRACE\":33,\"ENTERPRISE_BOUNDARY\":34,\"attributes\":35,\"SYSTEM_BOUNDARY\":36,\"BOUNDARY\":37,\"CONTAINER_BOUNDARY\":38,\"NODE\":39,\"NODE_L\":40,\"NODE_R\":41,\"RBRACE\":42,\"diagramStatement\":43,\"PERSON\":44,\"PERSON_EXT\":45,\"SYSTEM\":46,\"SYSTEM_DB\":47,\"SYSTEM_QUEUE\":48,\"SYSTEM_EXT\":49,\"SYSTEM_EXT_DB\":50,\"SYSTEM_EXT_QUEUE\":51,\"CONTAINER\":52,\"CONTAINER_DB\":53,\"CONTAINER_QUEUE\":54,\"CONTAINER_EXT\":55,\"CONTAINER_EXT_DB\":56,\"CONTAINER_EXT_QUEUE\":57,\"COMPONENT\":58,\"COMPONENT_DB\":59,\"COMPONENT_QUEUE\":60,\"COMPONENT_EXT\":61,\"COMPONENT_EXT_DB\":62,\"COMPONENT_EXT_QUEUE\":63,\"REL\":64,\"BIREL\":65,\"REL_U\":66,\"REL_D\":67,\"REL_L\":68,\"REL_R\":69,\"REL_B\":70,\"REL_INDEX\":71,\"UPDATE_EL_STYLE\":72,\"UPDATE_REL_STYLE\":73,\"UPDATE_LAYOUT_CONFIG\":74,\"attribute\":75,\"STR\":76,\"STR_KEY\":77,\"STR_VALUE\":78,\"ATTRIBUTE\":79,\"ATTRIBUTE_EMPTY\":80,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"direction_tb\",7:\"direction_bt\",8:\"direction_rl\",9:\"direction_lr\",11:\"C4_CONTEXT\",12:\"NEWLINE\",14:\"EOF\",15:\"C4_CONTAINER\",16:\"C4_COMPONENT\",17:\"C4_DYNAMIC\",18:\"C4_DEPLOYMENT\",22:\"title\",23:\"accDescription\",24:\"acc_title\",25:\"acc_title_value\",26:\"acc_descr\",27:\"acc_descr_value\",28:\"acc_descr_multiline_value\",33:\"LBRACE\",34:\"ENTERPRISE_BOUNDARY\",36:\"SYSTEM_BOUNDARY\",37:\"BOUNDARY\",38:\"CONTAINER_BOUNDARY\",39:\"NODE\",40:\"NODE_L\",41:\"NODE_R\",42:\"RBRACE\",44:\"PERSON\",45:\"PERSON_EXT\",46:\"SYSTEM\",47:\"SYSTEM_DB\",48:\"SYSTEM_QUEUE\",49:\"SYSTEM_EXT\",50:\"SYSTEM_EXT_DB\",51:\"SYSTEM_EXT_QUEUE\",52:\"CONTAINER\",53:\"CONTAINER_DB\",54:\"CONTAINER_QUEUE\",55:\"CONTAINER_EXT\",56:\"CONTAINER_EXT_DB\",57:\"CONTAINER_EXT_QUEUE\",58:\"COMPONENT\",59:\"COMPONENT_DB\",60:\"COMPONENT_QUEUE\",61:\"COMPONENT_EXT\",62:\"COMPONENT_EXT_DB\",63:\"COMPONENT_EXT_QUEUE\",64:\"REL\",65:\"BIREL\",66:\"REL_U\",67:\"REL_D\",68:\"REL_L\",69:\"REL_R\",70:\"REL_B\",71:\"REL_INDEX\",72:\"UPDATE_EL_STYLE\",73:\"UPDATE_REL_STYLE\",74:\"UPDATE_LAYOUT_CONFIG\",76:\"STR\",77:\"STR_KEY\",78:\"STR_VALUE\",79:\"ATTRIBUTE\",80:\"ATTRIBUTE_EMPTY\"},\nproductions_: [0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n yy.setDirection('TB');\nbreak;\ncase 4:\n yy.setDirection('BT');\nbreak;\ncase 5:\n yy.setDirection('RL');\nbreak;\ncase 6:\n yy.setDirection('LR');\nbreak;\ncase 8: case 9: case 10: case 11: case 12:\nyy.setC4Type($$[$0-3])\nbreak;\ncase 19:\nyy.setTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 20:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 21:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 22: case 23:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 28:\n$$[$0].splice(2, 0, 'ENTERPRISE'); yy.addPersonOrSystemBoundary(...$$[$0]); this.$=$$[$0];\nbreak;\ncase 29:\n$$[$0].splice(2, 0, 'SYSTEM'); yy.addPersonOrSystemBoundary(...$$[$0]); this.$=$$[$0];\nbreak;\ncase 30:\nyy.addPersonOrSystemBoundary(...$$[$0]); this.$=$$[$0];\nbreak;\ncase 31:\n$$[$0].splice(2, 0, 'CONTAINER'); yy.addContainerBoundary(...$$[$0]); this.$=$$[$0];\nbreak;\ncase 32:\nyy.addDeploymentNode('node', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 33:\nyy.addDeploymentNode('nodeL', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 34:\nyy.addDeploymentNode('nodeR', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 35:\n yy.popBoundaryParseStack() \nbreak;\ncase 39:\nyy.addPersonOrSystem('person', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 40:\nyy.addPersonOrSystem('external_person', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 41:\nyy.addPersonOrSystem('system', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 42:\nyy.addPersonOrSystem('system_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 43:\nyy.addPersonOrSystem('system_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 44:\nyy.addPersonOrSystem('external_system', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 45:\nyy.addPersonOrSystem('external_system_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 46:\nyy.addPersonOrSystem('external_system_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 47:\nyy.addContainer('container', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 48:\nyy.addContainer('container_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 49:\nyy.addContainer('container_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 50:\nyy.addContainer('external_container', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 51:\nyy.addContainer('external_container_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 52:\nyy.addContainer('external_container_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 53:\nyy.addComponent('component', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 54:\nyy.addComponent('component_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 55:\nyy.addComponent('component_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 56:\nyy.addComponent('external_component', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 57:\nyy.addComponent('external_component_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 58:\nyy.addComponent('external_component_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 60:\nyy.addRel('rel', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 61:\nyy.addRel('birel', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 62:\nyy.addRel('rel_u', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 63:\nyy.addRel('rel_d', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 64:\nyy.addRel('rel_l', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 65:\nyy.addRel('rel_r', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 66:\nyy.addRel('rel_b', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 67:\n$$[$0].splice(0, 1); yy.addRel('rel', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 68:\nyy.updateElStyle('update_el_style', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 69:\nyy.updateRelStyle('update_rel_style', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 70:\nyy.updateLayoutConfig('update_layout_config', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 71:\n this.$ = [$$[$0]]; \nbreak;\ncase 72:\n $$[$0].unshift($$[$0-1]); this.$=$$[$0];\nbreak;\ncase 73: case 75:\n this.$ = $$[$0].trim(); \nbreak;\ncase 74:\n let kv={}; kv[$$[$0-1].trim()]=$$[$0].trim(); this.$=kv; \nbreak;\ncase 76:\n this.$ = \"\"; \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{13:70,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{13:71,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{13:72,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{13:73,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{14:[1,74]},o($VH,[2,13],{43:23,29:49,30:61,32:62,20:75,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG}),o($VH,[2,14]),o($VI,[2,16],{12:[1,76]}),o($VH,[2,36],{12:[1,77]}),o($VJ,[2,19]),o($VJ,[2,20]),{25:[1,78]},{27:[1,79]},o($VJ,[2,23]),{35:80,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:86,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:87,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:88,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:89,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:90,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:91,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:92,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:93,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:94,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:95,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:96,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:97,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:98,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:99,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:100,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:101,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:102,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:103,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:104,75:81,76:$VK,77:$VL,79:$VM,80:$VN},o($VO,[2,59]),{35:105,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:106,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:107,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:108,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:109,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:110,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:111,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:112,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:113,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:114,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:115,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{20:116,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{12:[1,118],33:[1,117]},{35:119,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:120,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:121,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:122,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:123,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:124,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:125,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},o($VH,[2,15]),o($VI,[2,17],{21:22,19:130,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4}),o($VH,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG}),o($VJ,[2,21]),o($VJ,[2,22]),o($VO,[2,39]),o($VP,[2,71],{75:81,35:132,76:$VK,77:$VL,79:$VM,80:$VN}),o($VQ,[2,73]),{78:[1,133]},o($VQ,[2,75]),o($VQ,[2,76]),o($VO,[2,40]),o($VO,[2,41]),o($VO,[2,42]),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]),o($VO,[2,50]),o($VO,[2,51]),o($VO,[2,52]),o($VO,[2,53]),o($VO,[2,54]),o($VO,[2,55]),o($VO,[2,56]),o($VO,[2,57]),o($VO,[2,58]),o($VO,[2,60]),o($VO,[2,61]),o($VO,[2,62]),o($VO,[2,63]),o($VO,[2,64]),o($VO,[2,65]),o($VO,[2,66]),o($VO,[2,67]),o($VO,[2,68]),o($VO,[2,69]),o($VO,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},o($VR,[2,28]),o($VR,[2,29]),o($VR,[2,30]),o($VR,[2,31]),o($VR,[2,32]),o($VR,[2,33]),o($VR,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},o($VI,[2,18]),o($VH,[2,38]),o($VP,[2,72]),o($VQ,[2,74]),o($VO,[2,24]),o($VO,[2,35]),o($VS,[2,25]),o($VS,[2,26],{12:[1,138]}),o($VS,[2,27])],\ndefaultActions: {2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},\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: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 6;\nbreak;\ncase 1:return 7;\nbreak;\ncase 2:return 8;\nbreak;\ncase 3:return 9;\nbreak;\ncase 4:return 22;\nbreak;\ncase 5:return 23;\nbreak;\ncase 6: this.begin(\"acc_title\");return 24; \nbreak;\ncase 7: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 8: this.begin(\"acc_descr\");return 26; \nbreak;\ncase 9: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 10: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 11: this.popState(); \nbreak;\ncase 12:return \"acc_descr_multiline_value\";\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:c /* skip comments */\nbreak;\ncase 15:return 12;\nbreak;\ncase 16:/* skip whitespace */\nbreak;\ncase 17:return 11;\nbreak;\ncase 18:return 15;\nbreak;\ncase 19:return 16;\nbreak;\ncase 20:return 17;\nbreak;\ncase 21:return 18;\nbreak;\ncase 22: this.begin(\"person_ext\"); return 45;\nbreak;\ncase 23: this.begin(\"person\"); return 44;\nbreak;\ncase 24: this.begin(\"system_ext_queue\"); return 51;\nbreak;\ncase 25: this.begin(\"system_ext_db\"); return 50;\nbreak;\ncase 26: this.begin(\"system_ext\"); return 49;\nbreak;\ncase 27: this.begin(\"system_queue\"); return 48;\nbreak;\ncase 28: this.begin(\"system_db\"); return 47;\nbreak;\ncase 29: this.begin(\"system\"); return 46;\nbreak;\ncase 30: this.begin(\"boundary\"); return 37;\nbreak;\ncase 31: this.begin(\"enterprise_boundary\"); return 34;\nbreak;\ncase 32: this.begin(\"system_boundary\"); return 36;\nbreak;\ncase 33: this.begin(\"container_ext_queue\"); return 57;\nbreak;\ncase 34: this.begin(\"container_ext_db\"); return 56;\nbreak;\ncase 35: this.begin(\"container_ext\"); return 55;\nbreak;\ncase 36: this.begin(\"container_queue\"); return 54;\nbreak;\ncase 37: this.begin(\"container_db\"); return 53;\nbreak;\ncase 38: this.begin(\"container\"); return 52;\nbreak;\ncase 39: this.begin(\"container_boundary\"); return 38;\nbreak;\ncase 40: this.begin(\"component_ext_queue\"); return 63;\nbreak;\ncase 41: this.begin(\"component_ext_db\"); return 62;\nbreak;\ncase 42: this.begin(\"component_ext\"); return 61;\nbreak;\ncase 43: this.begin(\"component_queue\"); return 60;\nbreak;\ncase 44: this.begin(\"component_db\"); return 59;\nbreak;\ncase 45: this.begin(\"component\"); return 58;\nbreak;\ncase 46: this.begin(\"node\"); return 39;\nbreak;\ncase 47: this.begin(\"node\"); return 39;\nbreak;\ncase 48: this.begin(\"node_l\"); return 40;\nbreak;\ncase 49: this.begin(\"node_r\"); return 41;\nbreak;\ncase 50: this.begin(\"rel\"); return 64;\nbreak;\ncase 51: this.begin(\"birel\"); return 65;\nbreak;\ncase 52: this.begin(\"rel_u\"); return 66;\nbreak;\ncase 53: this.begin(\"rel_u\"); return 66;\nbreak;\ncase 54: this.begin(\"rel_d\"); return 67;\nbreak;\ncase 55: this.begin(\"rel_d\"); return 67;\nbreak;\ncase 56: this.begin(\"rel_l\"); return 68;\nbreak;\ncase 57: this.begin(\"rel_l\"); return 68;\nbreak;\ncase 58: this.begin(\"rel_r\"); return 69;\nbreak;\ncase 59: this.begin(\"rel_r\"); return 69;\nbreak;\ncase 60: this.begin(\"rel_b\"); return 70;\nbreak;\ncase 61: this.begin(\"rel_index\"); return 71;\nbreak;\ncase 62: this.begin(\"update_el_style\"); return 72;\nbreak;\ncase 63: this.begin(\"update_rel_style\"); return 73;\nbreak;\ncase 64: this.begin(\"update_layout_config\"); return 74;\nbreak;\ncase 65:return \"EOF_IN_STRUCT\";\nbreak;\ncase 66: this.begin(\"attribute\"); return \"ATTRIBUTE_EMPTY\";\nbreak;\ncase 67: this.begin(\"attribute\"); \nbreak;\ncase 68: this.popState();this.popState();\nbreak;\ncase 69: return 80;\nbreak;\ncase 70: \nbreak;\ncase 71: return 80;\nbreak;\ncase 72: this.begin(\"string\");\nbreak;\ncase 73: this.popState(); \nbreak;\ncase 74: return \"STR\";\nbreak;\ncase 75: this.begin(\"string_kv\");\nbreak;\ncase 76: this.begin(\"string_kv_key\"); return \"STR_KEY\";\nbreak;\ncase 77: this.popState(); this.begin(\"string_kv_value\"); \nbreak;\ncase 78: return \"STR_VALUE\";\nbreak;\ncase 79: this.popState(); this.popState(); \nbreak;\ncase 80: return \"STR\";\nbreak;\ncase 81: /* this.begin(\"lbrace\"); */ return \"LBRACE\";\nbreak;\ncase 82: /* this.popState(); */ return \"RBRACE\";\nbreak;\ncase 83:return 'SPACE';\nbreak;\ncase 84:return 'EOL';\nbreak;\ncase 85:return 14;\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:title\\s[^#\\n;]+)/,/^(?:accDescription\\s[^#\\n;]+)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:C4Context\\b)/,/^(?:C4Container\\b)/,/^(?:C4Component\\b)/,/^(?:C4Dynamic\\b)/,/^(?:C4Deployment\\b)/,/^(?:Person_Ext\\b)/,/^(?:Person\\b)/,/^(?:SystemQueue_Ext\\b)/,/^(?:SystemDb_Ext\\b)/,/^(?:System_Ext\\b)/,/^(?:SystemQueue\\b)/,/^(?:SystemDb\\b)/,/^(?:System\\b)/,/^(?:Boundary\\b)/,/^(?:Enterprise_Boundary\\b)/,/^(?:System_Boundary\\b)/,/^(?:ContainerQueue_Ext\\b)/,/^(?:ContainerDb_Ext\\b)/,/^(?:Container_Ext\\b)/,/^(?:ContainerQueue\\b)/,/^(?:ContainerDb\\b)/,/^(?:Container\\b)/,/^(?:Container_Boundary\\b)/,/^(?:ComponentQueue_Ext\\b)/,/^(?:ComponentDb_Ext\\b)/,/^(?:Component_Ext\\b)/,/^(?:ComponentQueue\\b)/,/^(?:ComponentDb\\b)/,/^(?:Component\\b)/,/^(?:Deployment_Node\\b)/,/^(?:Node\\b)/,/^(?:Node_L\\b)/,/^(?:Node_R\\b)/,/^(?:Rel\\b)/,/^(?:BiRel\\b)/,/^(?:Rel_Up\\b)/,/^(?:Rel_U\\b)/,/^(?:Rel_Down\\b)/,/^(?:Rel_D\\b)/,/^(?:Rel_Left\\b)/,/^(?:Rel_L\\b)/,/^(?:Rel_Right\\b)/,/^(?:Rel_R\\b)/,/^(?:Rel_Back\\b)/,/^(?:RelIndex\\b)/,/^(?:UpdateElementStyle\\b)/,/^(?:UpdateRelStyle\\b)/,/^(?:UpdateLayoutConfig\\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*[\"][\"])/,/^(?:[ ]*[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[ ]*[\\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*[\"])/,/^(?:[^\"]+)/,/^(?:[\"])/,/^(?:[^,]+)/,/^(?:\\{)/,/^(?:\\})/,/^(?:[\\s]+)/,/^(?:[\\n\\r]+)/,/^(?:$)/],\nconditions: {\"acc_descr_multiline\":{\"rules\":[11,12],\"inclusive\":false},\"acc_descr\":{\"rules\":[9],\"inclusive\":false},\"acc_title\":{\"rules\":[7],\"inclusive\":false},\"string_kv_value\":{\"rules\":[78,79],\"inclusive\":false},\"string_kv_key\":{\"rules\":[77],\"inclusive\":false},\"string_kv\":{\"rules\":[76],\"inclusive\":false},\"string\":{\"rules\":[73,74],\"inclusive\":false},\"attribute\":{\"rules\":[68,69,70,71,72,75,80],\"inclusive\":false},\"update_layout_config\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"update_rel_style\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"update_el_style\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_b\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_r\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_l\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_d\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_u\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_bi\":{\"rules\":[],\"inclusive\":false},\"rel\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"node_r\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"node_l\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"node\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"index\":{\"rules\":[],\"inclusive\":false},\"rel_index\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_ext_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_ext_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_ext\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_boundary\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_ext_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_ext_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_ext\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"birel\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_boundary\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"enterprise_boundary\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"boundary\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_ext_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_ext_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_ext\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"person_ext\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"person\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { sanitizeText } from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n} from '../common/commonDb.js';\n\nlet c4ShapeArray = [];\nlet boundaryParseStack = [''];\nlet currentBoundaryParse = 'global';\nlet parentBoundaryParse = '';\nlet boundaries = [\n {\n alias: 'global',\n label: { text: 'global' },\n type: { text: 'global' },\n tags: null,\n link: null,\n parentBoundary: '',\n },\n];\nlet rels = [];\nlet title = '';\nlet wrapEnabled = false;\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\nvar c4Type;\n\nexport const getC4Type = function () {\n return c4Type;\n};\n\nexport const setC4Type = function (c4TypeParam) {\n let sanitizedText = sanitizeText(c4TypeParam, getConfig());\n c4Type = sanitizedText;\n};\n\n//type, from, to, label, ?techn, ?descr, ?sprite, ?tags, $link\nexport const addRel = function (type, from, to, label, techn, descr, sprite, tags, link) {\n // Don't allow label nulling\n if (\n type === undefined ||\n type === null ||\n from === undefined ||\n from === null ||\n to === undefined ||\n to === null ||\n label === undefined ||\n label === null\n ) {\n return;\n }\n\n let rel = {};\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old) {\n rel = old;\n } else {\n rels.push(rel);\n }\n\n rel.type = type;\n rel.from = from;\n rel.to = to;\n rel.label = { text: label };\n\n if (techn === undefined || techn === null) {\n rel.techn = { text: '' };\n } else {\n if (typeof techn === 'object') {\n let [key, value] = Object.entries(techn)[0];\n rel[key] = { text: value };\n } else {\n rel.techn = { text: techn };\n }\n }\n\n if (descr === undefined || descr === null) {\n rel.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n rel[key] = { text: value };\n } else {\n rel.descr = { text: descr };\n }\n }\n\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n rel[key] = value;\n } else {\n rel.sprite = sprite;\n }\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n rel[key] = value;\n } else {\n rel.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n rel[key] = value;\n } else {\n rel.link = link;\n }\n rel.wrap = autoWrap();\n};\n\n//type, alias, label, ?descr, ?sprite, ?tags, $link\nexport const addPersonOrSystem = function (typeC4Shape, alias, label, descr, sprite, tags, link) {\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let personOrSystem = {};\n const old = c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n if (old && alias === old.alias) {\n personOrSystem = old;\n } else {\n personOrSystem.alias = alias;\n c4ShapeArray.push(personOrSystem);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n personOrSystem.label = { text: '' };\n } else {\n personOrSystem.label = { text: label };\n }\n\n if (descr === undefined || descr === null) {\n personOrSystem.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n personOrSystem[key] = { text: value };\n } else {\n personOrSystem.descr = { text: descr };\n }\n }\n\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.sprite = sprite;\n }\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.link = link;\n }\n personOrSystem.typeC4Shape = { text: typeC4Shape };\n personOrSystem.parentBoundary = currentBoundaryParse;\n personOrSystem.wrap = autoWrap();\n};\n\n//type, alias, label, ?techn, ?descr ?sprite, ?tags, $link\nexport const addContainer = function (typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let container = {};\n const old = c4ShapeArray.find((container) => container.alias === alias);\n if (old && alias === old.alias) {\n container = old;\n } else {\n container.alias = alias;\n c4ShapeArray.push(container);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n container.label = { text: '' };\n } else {\n container.label = { text: label };\n }\n\n if (techn === undefined || techn === null) {\n container.techn = { text: '' };\n } else {\n if (typeof techn === 'object') {\n let [key, value] = Object.entries(techn)[0];\n container[key] = { text: value };\n } else {\n container.techn = { text: techn };\n }\n }\n\n if (descr === undefined || descr === null) {\n container.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n container[key] = { text: value };\n } else {\n container.descr = { text: descr };\n }\n }\n\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n container[key] = value;\n } else {\n container.sprite = sprite;\n }\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n container[key] = value;\n } else {\n container.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n container[key] = value;\n } else {\n container.link = link;\n }\n container.wrap = autoWrap();\n container.typeC4Shape = { text: typeC4Shape };\n container.parentBoundary = currentBoundaryParse;\n};\n\n//type, alias, label, ?techn, ?descr ?sprite, ?tags, $link\nexport const addComponent = function (typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let component = {};\n const old = c4ShapeArray.find((component) => component.alias === alias);\n if (old && alias === old.alias) {\n component = old;\n } else {\n component.alias = alias;\n c4ShapeArray.push(component);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n component.label = { text: '' };\n } else {\n component.label = { text: label };\n }\n\n if (techn === undefined || techn === null) {\n component.techn = { text: '' };\n } else {\n if (typeof techn === 'object') {\n let [key, value] = Object.entries(techn)[0];\n component[key] = { text: value };\n } else {\n component.techn = { text: techn };\n }\n }\n\n if (descr === undefined || descr === null) {\n component.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n component[key] = { text: value };\n } else {\n component.descr = { text: descr };\n }\n }\n\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n component[key] = value;\n } else {\n component.sprite = sprite;\n }\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n component[key] = value;\n } else {\n component.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n component[key] = value;\n } else {\n component.link = link;\n }\n component.wrap = autoWrap();\n component.typeC4Shape = { text: typeC4Shape };\n component.parentBoundary = currentBoundaryParse;\n};\n\n//alias, label, ?type, ?tags, $link\nexport const addPersonOrSystemBoundary = function (alias, label, type, tags, link) {\n // if (parentBoundary === null) return;\n\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let boundary = {};\n const old = boundaries.find((boundary) => boundary.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n boundary.label = { text: '' };\n } else {\n boundary.label = { text: label };\n }\n\n if (type === undefined || type === null) {\n boundary.type = { text: 'system' };\n } else {\n if (typeof type === 'object') {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\n\n//alias, label, ?type, ?tags, $link\nexport const addContainerBoundary = function (alias, label, type, tags, link) {\n // if (parentBoundary === null) return;\n\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let boundary = {};\n const old = boundaries.find((boundary) => boundary.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n boundary.label = { text: '' };\n } else {\n boundary.label = { text: label };\n }\n\n if (type === undefined || type === null) {\n boundary.type = { text: 'container' };\n } else {\n if (typeof type === 'object') {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\n\n//alias, label, ?type, ?descr, ?sprite, ?tags, $link\nexport const addDeploymentNode = function (\n nodeType,\n alias,\n label,\n type,\n descr,\n sprite,\n tags,\n link\n) {\n // if (parentBoundary === null) return;\n\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let boundary = {};\n const old = boundaries.find((boundary) => boundary.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n boundary.label = { text: '' };\n } else {\n boundary.label = { text: label };\n }\n\n if (type === undefined || type === null) {\n boundary.type = { text: 'node' };\n } else {\n if (typeof type === 'object') {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n\n if (descr === undefined || descr === null) {\n boundary.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n boundary[key] = { text: value };\n } else {\n boundary.descr = { text: descr };\n }\n }\n\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.nodeType = nodeType;\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\n\nexport const popBoundaryParseStack = function () {\n currentBoundaryParse = parentBoundaryParse;\n boundaryParseStack.pop();\n parentBoundaryParse = boundaryParseStack.pop();\n boundaryParseStack.push(parentBoundaryParse);\n};\n\n//elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite\nexport const updateElStyle = function (\n typeC4Shape,\n elementName,\n bgColor,\n fontColor,\n borderColor,\n shadowing,\n shape,\n sprite,\n techn,\n legendText,\n legendSprite\n) {\n let old = c4ShapeArray.find((element) => element.alias === elementName);\n if (old === undefined) {\n old = boundaries.find((element) => element.alias === elementName);\n if (old === undefined) {\n return;\n }\n }\n if (bgColor !== undefined && bgColor !== null) {\n if (typeof bgColor === 'object') {\n let [key, value] = Object.entries(bgColor)[0];\n old[key] = value;\n } else {\n old.bgColor = bgColor;\n }\n }\n if (fontColor !== undefined && fontColor !== null) {\n if (typeof fontColor === 'object') {\n let [key, value] = Object.entries(fontColor)[0];\n old[key] = value;\n } else {\n old.fontColor = fontColor;\n }\n }\n if (borderColor !== undefined && borderColor !== null) {\n if (typeof borderColor === 'object') {\n let [key, value] = Object.entries(borderColor)[0];\n old[key] = value;\n } else {\n old.borderColor = borderColor;\n }\n }\n if (shadowing !== undefined && shadowing !== null) {\n if (typeof shadowing === 'object') {\n let [key, value] = Object.entries(shadowing)[0];\n old[key] = value;\n } else {\n old.shadowing = shadowing;\n }\n }\n if (shape !== undefined && shape !== null) {\n if (typeof shape === 'object') {\n let [key, value] = Object.entries(shape)[0];\n old[key] = value;\n } else {\n old.shape = shape;\n }\n }\n if (sprite !== undefined && sprite !== null) {\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n old[key] = value;\n } else {\n old.sprite = sprite;\n }\n }\n if (techn !== undefined && techn !== null) {\n if (typeof techn === 'object') {\n let [key, value] = Object.entries(techn)[0];\n old[key] = value;\n } else {\n old.techn = techn;\n }\n }\n if (legendText !== undefined && legendText !== null) {\n if (typeof legendText === 'object') {\n let [key, value] = Object.entries(legendText)[0];\n old[key] = value;\n } else {\n old.legendText = legendText;\n }\n }\n if (legendSprite !== undefined && legendSprite !== null) {\n if (typeof legendSprite === 'object') {\n let [key, value] = Object.entries(legendSprite)[0];\n old[key] = value;\n } else {\n old.legendSprite = legendSprite;\n }\n }\n};\n\n//textColor, lineColor, ?offsetX, ?offsetY\nexport const updateRelStyle = function (\n typeC4Shape,\n from,\n to,\n textColor,\n lineColor,\n offsetX,\n offsetY\n) {\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old === undefined) {\n return;\n }\n if (textColor !== undefined && textColor !== null) {\n if (typeof textColor === 'object') {\n let [key, value] = Object.entries(textColor)[0];\n old[key] = value;\n } else {\n old.textColor = textColor;\n }\n }\n if (lineColor !== undefined && lineColor !== null) {\n if (typeof lineColor === 'object') {\n let [key, value] = Object.entries(lineColor)[0];\n old[key] = value;\n } else {\n old.lineColor = lineColor;\n }\n }\n if (offsetX !== undefined && offsetX !== null) {\n if (typeof offsetX === 'object') {\n let [key, value] = Object.entries(offsetX)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetX = parseInt(offsetX);\n }\n }\n if (offsetY !== undefined && offsetY !== null) {\n if (typeof offsetY === 'object') {\n let [key, value] = Object.entries(offsetY)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetY = parseInt(offsetY);\n }\n }\n};\n\n//?c4ShapeInRow, ?c4BoundaryInRow\nexport const updateLayoutConfig = function (typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n let c4ShapeInRowValue = c4ShapeInRow;\n let c4BoundaryInRowValue = c4BoundaryInRow;\n\n if (typeof c4ShapeInRowParam === 'object') {\n const value = Object.values(c4ShapeInRowParam)[0];\n c4ShapeInRowValue = parseInt(value);\n } else {\n c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n }\n if (typeof c4BoundaryInRowParam === 'object') {\n const value = Object.values(c4BoundaryInRowParam)[0];\n c4BoundaryInRowValue = parseInt(value);\n } else {\n c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n }\n\n if (c4ShapeInRowValue >= 1) {\n c4ShapeInRow = c4ShapeInRowValue;\n }\n if (c4BoundaryInRowValue >= 1) {\n c4BoundaryInRow = c4BoundaryInRowValue;\n }\n};\n\nexport const getC4ShapeInRow = function () {\n return c4ShapeInRow;\n};\nexport const getC4BoundaryInRow = function () {\n return c4BoundaryInRow;\n};\nexport const getCurrentBoundaryParse = function () {\n return currentBoundaryParse;\n};\n\nexport const getParentBoundaryParse = function () {\n return parentBoundaryParse;\n};\n\nexport const getC4ShapeArray = function (parentBoundary) {\n if (parentBoundary === undefined || parentBoundary === null) {\n return c4ShapeArray;\n } else {\n return c4ShapeArray.filter((personOrSystem) => {\n return personOrSystem.parentBoundary === parentBoundary;\n });\n }\n};\nexport const getC4Shape = function (alias) {\n return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n};\nexport const getC4ShapeKeys = function (parentBoundary) {\n return Object.keys(getC4ShapeArray(parentBoundary));\n};\n\nexport const getBoundaries = function (parentBoundary) {\n if (parentBoundary === undefined || parentBoundary === null) {\n return boundaries;\n } else {\n return boundaries.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n};\n\n// cspell:ignore getBoundarys\n/**\n * @deprecated Use {@link getBoundaries} instead\n */\nexport const getBoundarys = getBoundaries;\n\nexport const getRels = function () {\n return rels;\n};\n\nexport const getTitle = function () {\n return title;\n};\n\nexport const setWrap = function (wrapSetting) {\n wrapEnabled = wrapSetting;\n};\n\nexport const autoWrap = function () {\n return wrapEnabled;\n};\n\nexport const clear = function () {\n c4ShapeArray = [];\n boundaries = [\n {\n alias: 'global',\n label: { text: 'global' },\n type: { text: 'global' },\n tags: null,\n link: null,\n parentBoundary: '',\n },\n ];\n parentBoundaryParse = '';\n currentBoundaryParse = 'global';\n boundaryParseStack = [''];\n rels = [];\n\n boundaryParseStack = [''];\n title = '';\n wrapEnabled = false;\n c4ShapeInRow = 4;\n c4BoundaryInRow = 2;\n};\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n};\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1,\n};\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2,\n};\n\nexport const setTitle = function (txt) {\n let sanitizedText = sanitizeText(txt, getConfig());\n title = sanitizedText;\n};\n\nexport default {\n addPersonOrSystem,\n addPersonOrSystemBoundary,\n addContainer,\n addContainerBoundary,\n addComponent,\n addDeploymentNode,\n popBoundaryParseStack,\n addRel,\n updateElStyle,\n updateRelStyle,\n updateLayoutConfig,\n autoWrap,\n setWrap,\n getC4ShapeArray,\n getC4Shape,\n getC4ShapeKeys,\n getBoundaries,\n getBoundarys,\n getCurrentBoundaryParse,\n getParentBoundaryParse,\n getRels,\n getTitle,\n getC4Type,\n getC4ShapeInRow,\n getC4BoundaryInRow,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => getConfig().c4,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n setTitle,\n setC4Type,\n // apply,\n};\n", "import common from '../common/common.js';\nimport * as svgDrawCommon from '../common/svgDrawCommon.js';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\n\nexport const drawRect = function (elem, rectData) {\n return svgDrawCommon.drawRect(elem, rectData);\n};\n\nexport const drawImage = function (elem, width, height, x, y, link) {\n const imageElem = elem.append('image');\n imageElem.attr('width', width);\n imageElem.attr('height', height);\n imageElem.attr('x', x);\n imageElem.attr('y', y);\n let sanitizedLink = link.startsWith('data:image/png;base64') ? link : sanitizeUrl(link);\n imageElem.attr('xlink:href', sanitizedLink);\n};\n\nexport const drawRels = (elem, rels, conf) => {\n const relsElem = elem.append('g');\n let i = 0;\n for (let rel of rels) {\n let textColor = rel.textColor ? rel.textColor : '#444444';\n let strokeColor = rel.lineColor ? rel.lineColor : '#444444';\n let offsetX = rel.offsetX ? parseInt(rel.offsetX) : 0;\n let offsetY = rel.offsetY ? parseInt(rel.offsetY) : 0;\n\n let url = '';\n if (i === 0) {\n let line = relsElem.append('line');\n line.attr('x1', rel.startPoint.x);\n line.attr('y1', rel.startPoint.y);\n line.attr('x2', rel.endPoint.x);\n line.attr('y2', rel.endPoint.y);\n\n line.attr('stroke-width', '1');\n line.attr('stroke', strokeColor);\n line.style('fill', 'none');\n if (rel.type !== 'rel_b') {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n if (rel.type === 'birel' || rel.type === 'rel_b') {\n line.attr('marker-start', 'url(' + url + '#arrowend)');\n }\n i = -1;\n } else {\n let line = relsElem.append('path');\n line\n .attr('fill', 'none')\n .attr('stroke-width', '1')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,starty Qcontrolx,controly stopx,stopy '\n .replaceAll('startx', rel.startPoint.x)\n .replaceAll('starty', rel.startPoint.y)\n .replaceAll(\n 'controlx',\n rel.startPoint.x +\n (rel.endPoint.x - rel.startPoint.x) / 2 -\n (rel.endPoint.x - rel.startPoint.x) / 4\n )\n .replaceAll('controly', rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2)\n .replaceAll('stopx', rel.endPoint.x)\n .replaceAll('stopy', rel.endPoint.y)\n );\n if (rel.type !== 'rel_b') {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n if (rel.type === 'birel' || rel.type === 'rel_b') {\n line.attr('marker-start', 'url(' + url + '#arrowend)');\n }\n }\n\n let messageConf = conf.messageFont();\n _drawTextCandidateFunc(conf)(\n rel.label.text,\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) +\n Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 +\n offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) +\n Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 +\n offsetY,\n rel.label.width,\n rel.label.height,\n { fill: textColor },\n messageConf\n );\n\n if (rel.techn && rel.techn.text !== '') {\n messageConf = conf.messageFont();\n _drawTextCandidateFunc(conf)(\n '[' + rel.techn.text + ']',\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) +\n Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 +\n offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) +\n Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 +\n conf.messageFontSize +\n 5 +\n offsetY,\n Math.max(rel.label.width, rel.techn.width),\n rel.techn.height,\n { fill: textColor, 'font-style': 'italic' },\n messageConf\n );\n }\n }\n};\n\n/**\n * Draws a boundary in the diagram\n *\n * @param {any} elem - The diagram we'll draw to.\n * @param {any} boundary - The boundary to draw.\n * @param {any} conf - DrawText implementation discriminator object\n */\nconst drawBoundary = function (elem, boundary, conf) {\n const boundaryElem = elem.append('g');\n\n let fillColor = boundary.bgColor ? boundary.bgColor : 'none';\n let strokeColor = boundary.borderColor ? boundary.borderColor : '#444444';\n let fontColor = boundary.fontColor ? boundary.fontColor : 'black';\n\n let attrsValue = { 'stroke-width': 1.0, 'stroke-dasharray': '7.0,7.0' };\n if (boundary.nodeType) {\n attrsValue = { 'stroke-width': 1.0 };\n }\n let rectData = {\n x: boundary.x,\n y: boundary.y,\n fill: fillColor,\n stroke: strokeColor,\n width: boundary.width,\n height: boundary.height,\n rx: 2.5,\n ry: 2.5,\n attrs: attrsValue,\n };\n\n drawRect(boundaryElem, rectData);\n\n // draw label\n let boundaryConf = conf.boundaryFont();\n boundaryConf.fontWeight = 'bold';\n boundaryConf.fontSize = boundaryConf.fontSize + 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n boundary.label.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.label.Y,\n boundary.width,\n boundary.height,\n { fill: '#444444' },\n boundaryConf\n );\n\n // draw type\n if (boundary.type && boundary.type.text !== '') {\n boundaryConf = conf.boundaryFont();\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n boundary.type.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.type.Y,\n boundary.width,\n boundary.height,\n { fill: '#444444' },\n boundaryConf\n );\n }\n\n // draw descr\n if (boundary.descr && boundary.descr.text !== '') {\n boundaryConf = conf.boundaryFont();\n boundaryConf.fontSize = boundaryConf.fontSize - 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n boundary.descr.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.descr.Y,\n boundary.width,\n boundary.height,\n { fill: '#444444' },\n boundaryConf\n );\n }\n};\n\nexport const drawC4Shape = function (elem, c4Shape, conf) {\n let fillColor = c4Shape.bgColor ? c4Shape.bgColor : conf[c4Shape.typeC4Shape.text + '_bg_color'];\n let strokeColor = c4Shape.borderColor\n ? c4Shape.borderColor\n : conf[c4Shape.typeC4Shape.text + '_border_color'];\n let fontColor = c4Shape.fontColor ? c4Shape.fontColor : '#FFFFFF';\n\n let personImg =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=';\n switch (c4Shape.typeC4Shape.text) {\n case 'person':\n personImg =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=';\n break;\n case 'external_person':\n personImg =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=';\n break;\n }\n\n const c4ShapeElem = elem.append('g');\n c4ShapeElem.attr('class', 'person-man');\n\n // \n // draw rect of c4Shape\n const rect = svgDrawCommon.getNoteRect();\n\n switch (c4Shape.typeC4Shape.text) {\n case 'person':\n case 'external_person':\n case 'system':\n case 'external_system':\n case 'container':\n case 'external_container':\n case 'component':\n case 'external_component':\n rect.x = c4Shape.x;\n rect.y = c4Shape.y;\n rect.fill = fillColor;\n rect.width = c4Shape.width;\n rect.height = c4Shape.height;\n rect.stroke = strokeColor;\n rect.rx = 2.5;\n rect.ry = 2.5;\n rect.attrs = { 'stroke-width': 0.5 };\n drawRect(c4ShapeElem, rect);\n break;\n case 'system_db':\n case 'external_system_db':\n case 'container_db':\n case 'external_container_db':\n case 'component_db':\n case 'external_component_db':\n c4ShapeElem\n .append('path')\n .attr('fill', fillColor)\n .attr('stroke-width', '0.5')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height'\n .replaceAll('startx', c4Shape.x)\n .replaceAll('starty', c4Shape.y)\n .replaceAll('half', c4Shape.width / 2)\n .replaceAll('height', c4Shape.height)\n );\n c4ShapeElem\n .append('path')\n .attr('fill', 'none')\n .attr('stroke-width', '0.5')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10'\n .replaceAll('startx', c4Shape.x)\n .replaceAll('starty', c4Shape.y)\n .replaceAll('half', c4Shape.width / 2)\n );\n break;\n case 'system_queue':\n case 'external_system_queue':\n case 'container_queue':\n case 'external_container_queue':\n case 'component_queue':\n case 'external_component_queue':\n c4ShapeElem\n .append('path')\n .attr('fill', fillColor)\n .attr('stroke-width', '0.5')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half'\n .replaceAll('startx', c4Shape.x)\n .replaceAll('starty', c4Shape.y)\n .replaceAll('width', c4Shape.width)\n .replaceAll('half', c4Shape.height / 2)\n );\n c4ShapeElem\n .append('path')\n .attr('fill', 'none')\n .attr('stroke-width', '0.5')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half'\n .replaceAll('startx', c4Shape.x + c4Shape.width)\n .replaceAll('starty', c4Shape.y)\n .replaceAll('half', c4Shape.height / 2)\n );\n break;\n }\n\n // draw type of c4Shape\n let c4ShapeFontConf = getC4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeElem\n .append('text')\n .attr('fill', fontColor)\n .attr('font-family', c4ShapeFontConf.fontFamily)\n .attr('font-size', c4ShapeFontConf.fontSize - 2)\n .attr('font-style', 'italic')\n .attr('lengthAdjust', 'spacing')\n .attr('textLength', c4Shape.typeC4Shape.width)\n .attr('x', c4Shape.x + c4Shape.width / 2 - c4Shape.typeC4Shape.width / 2)\n .attr('y', c4Shape.y + c4Shape.typeC4Shape.Y)\n .text('<<' + c4Shape.typeC4Shape.text + '>>');\n\n // draw image/sprite\n switch (c4Shape.typeC4Shape.text) {\n case 'person':\n case 'external_person':\n drawImage(\n c4ShapeElem,\n 48,\n 48,\n c4Shape.x + c4Shape.width / 2 - 24,\n c4Shape.y + c4Shape.image.Y,\n personImg\n );\n break;\n }\n\n // draw label\n let textFontConf = conf[c4Shape.typeC4Shape.text + 'Font']();\n textFontConf.fontWeight = 'bold';\n textFontConf.fontSize = textFontConf.fontSize + 2;\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n c4Shape.label.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.label.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n\n // draw techn/type\n textFontConf = conf[c4Shape.typeC4Shape.text + 'Font']();\n textFontConf.fontColor = fontColor;\n\n if (c4Shape.techn && c4Shape.techn?.text !== '') {\n _drawTextCandidateFunc(conf)(\n c4Shape.techn.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.techn.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, 'font-style': 'italic' },\n textFontConf\n );\n } else if (c4Shape.type && c4Shape.type.text !== '') {\n _drawTextCandidateFunc(conf)(\n c4Shape.type.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.type.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, 'font-style': 'italic' },\n textFontConf\n );\n }\n\n // draw descr\n if (c4Shape.descr && c4Shape.descr.text !== '') {\n textFontConf = conf.personFont();\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n c4Shape.descr.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.descr.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n }\n\n return c4Shape.height;\n};\n\nexport const insertDatabaseIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'database')\n .attr('fill-rule', 'evenodd')\n .attr('clip-rule', 'evenodd')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z'\n );\n};\n\nexport const insertComputerIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'computer')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z'\n );\n};\n\nexport const insertClockIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'clock')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z'\n );\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param elem\n */\nexport const insertArrowHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z'); // this is actual shape for arrowhead\n};\n\nexport const insertArrowEnd = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'arrowend')\n .attr('refX', 1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 10 0 L 0 5 L 10 10 z'); // this is actual shape for arrowhead\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowFilledHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'filled-head')\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Setup node number. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertDynamicNumber = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'sequencenumber')\n .attr('refX', 15)\n .attr('refY', 15)\n .attr('markerWidth', 60)\n .attr('markerHeight', 40)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', 15)\n .attr('cy', 15)\n .attr('r', 6);\n // .style(\"fill\", '#f00');\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowCrossHead = function (elem) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4);\n\n // The arrow\n marker\n .append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z');\n\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7');\n // this is actual shape for arrowhead\n};\n\nconst getC4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + 'FontFamily'],\n fontSize: cnf[typeC4Shape + 'FontSize'],\n fontWeight: cnf[typeC4Shape + 'FontWeight'],\n };\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n */\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { fontSize, fontFamily, fontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * fontSize - (fontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n text\n .append('tspan')\n // .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i])\n // .attr('y', y + height / 2)\n .attr('alignment-baseline', 'mathematical');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nexport default {\n drawRect,\n drawBoundary,\n drawC4Shape,\n drawRels,\n drawImage,\n insertArrowHead,\n insertArrowEnd,\n insertArrowFilledHead,\n insertDynamicNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon,\n};\n\n// cspell:ignoreRegExp /'Mstartx.*/g\n", "import { select } from 'd3';\nimport svgDraw from './svgDraw.js';\nimport { log } from '../../logger.js';\nimport { parser } from './parser/c4Diagram.jison';\nimport common from '../common/common.js';\nimport c4Db from './c4Db.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport assignWithDepth from '../../assignWithDepth.js';\nimport { wrapLabel, calculateTextWidth, calculateTextHeight } from '../../utils.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\n\nlet globalBoundaryMaxX = 0,\n globalBoundaryMaxY = 0;\n\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\n\nparser.yy = c4Db;\n\nlet conf = {};\n\nclass Bounds {\n constructor(diagObj) {\n this.name = '';\n this.data = {};\n this.data.startx = undefined;\n this.data.stopx = undefined;\n this.data.starty = undefined;\n this.data.stopy = undefined;\n this.data.widthLimit = undefined;\n\n this.nextData = {};\n this.nextData.startx = undefined;\n this.nextData.stopx = undefined;\n this.nextData.starty = undefined;\n this.nextData.stopy = undefined;\n this.nextData.cnt = 0;\n\n setConf(diagObj.db.getConfig());\n }\n\n setData(startx, stopx, starty, stopy) {\n this.nextData.startx = this.data.startx = startx;\n this.nextData.stopx = this.data.stopx = stopx;\n this.nextData.starty = this.data.starty = starty;\n this.nextData.stopy = this.data.stopy = stopy;\n }\n\n updateVal(obj, key, val, fun) {\n if (obj[key] === undefined) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n }\n\n insert(c4Shape) {\n this.nextData.cnt = this.nextData.cnt + 1;\n let _startx =\n this.nextData.startx === this.nextData.stopx\n ? this.nextData.stopx + c4Shape.margin\n : this.nextData.stopx + c4Shape.margin * 2;\n let _stopx = _startx + c4Shape.width;\n let _starty = this.nextData.starty + c4Shape.margin * 2;\n let _stopy = _starty + c4Shape.height;\n if (\n _startx >= this.data.widthLimit ||\n _stopx >= this.data.widthLimit ||\n this.nextData.cnt > c4ShapeInRow\n ) {\n _startx = this.nextData.startx + c4Shape.margin + conf.nextLinePaddingX;\n _starty = this.nextData.stopy + c4Shape.margin * 2;\n\n this.nextData.stopx = _stopx = _startx + c4Shape.width;\n this.nextData.starty = this.nextData.stopy;\n this.nextData.stopy = _stopy = _starty + c4Shape.height;\n this.nextData.cnt = 1;\n }\n\n c4Shape.x = _startx;\n c4Shape.y = _starty;\n\n this.updateVal(this.data, 'startx', _startx, Math.min);\n this.updateVal(this.data, 'starty', _starty, Math.min);\n this.updateVal(this.data, 'stopx', _stopx, Math.max);\n this.updateVal(this.data, 'stopy', _stopy, Math.max);\n\n this.updateVal(this.nextData, 'startx', _startx, Math.min);\n this.updateVal(this.nextData, 'starty', _starty, Math.min);\n this.updateVal(this.nextData, 'stopx', _stopx, Math.max);\n this.updateVal(this.nextData, 'stopy', _stopy, Math.max);\n }\n\n init(diagObj) {\n this.name = '';\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n widthLimit: undefined,\n };\n this.nextData = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n cnt: 0,\n };\n setConf(diagObj.db.getConfig());\n }\n\n bumpLastMargin(margin) {\n this.data.stopx += margin;\n this.data.stopy += margin;\n }\n}\n\nexport const setConf = function (cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.personFontFamily = conf.systemFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.personFontSize = conf.systemFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.personFontWeight = conf.systemFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst c4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + 'FontFamily'],\n fontSize: cnf[typeC4Shape + 'FontSize'],\n fontWeight: cnf[typeC4Shape + 'FontWeight'],\n };\n};\n\nconst boundaryFont = (cnf) => {\n return {\n fontFamily: cnf.boundaryFontFamily,\n fontSize: cnf.boundaryFontSize,\n fontWeight: cnf.boundaryFontWeight,\n };\n};\n\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight,\n };\n};\n\n/**\n * @param textType\n * @param c4Shape\n * @param c4ShapeTextWrap\n * @param textConf\n * @param textLimitWidth\n */\nfunction calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n if (!c4Shape[textType].width) {\n if (c4ShapeTextWrap) {\n c4Shape[textType].text = wrapLabel(c4Shape[textType].text, textLimitWidth, textConf);\n c4Shape[textType].textLines = c4Shape[textType].text.split(common.lineBreakRegex).length;\n // c4Shape[textType].width = calculateTextWidth(c4Shape[textType].text, textConf);\n c4Shape[textType].width = textLimitWidth;\n // c4Shape[textType].height = c4Shape[textType].textLines * textConf.fontSize;\n c4Shape[textType].height = calculateTextHeight(c4Shape[textType].text, textConf);\n } else {\n let lines = c4Shape[textType].text.split(common.lineBreakRegex);\n c4Shape[textType].textLines = lines.length;\n let lineHeight = 0;\n c4Shape[textType].height = 0;\n c4Shape[textType].width = 0;\n for (const line of lines) {\n c4Shape[textType].width = Math.max(\n calculateTextWidth(line, textConf),\n c4Shape[textType].width\n );\n lineHeight = calculateTextHeight(line, textConf);\n c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n }\n // c4Shapes[textType].height = c4Shapes[textType].textLines * textConf.fontSize;\n }\n }\n}\n\nexport const drawBoundary = function (diagram, boundary, bounds) {\n boundary.x = bounds.data.startx;\n boundary.y = bounds.data.starty;\n boundary.width = bounds.data.stopx - bounds.data.startx;\n boundary.height = bounds.data.stopy - bounds.data.starty;\n\n boundary.label.y = conf.c4ShapeMargin - 35;\n\n let boundaryTextWrap = boundary.wrap && conf.wrap;\n let boundaryLabelConf = boundaryFont(conf);\n boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n boundaryLabelConf.fontWeight = 'bold';\n let textLimitWidth = calculateTextWidth(boundary.label.text, boundaryLabelConf);\n calcC4ShapeTextWH('label', boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n\n svgDraw.drawBoundary(diagram, boundary, conf);\n};\n\nexport const drawC4ShapeArray = function (currentBounds, diagram, c4ShapeArray, c4ShapeKeys) {\n // Upper Y is relative point\n let Y = 0;\n // Draw the c4ShapeArray\n for (const c4ShapeKey of c4ShapeKeys) {\n Y = 0;\n const c4Shape = c4ShapeArray[c4ShapeKey];\n\n // calc c4 shape type width and height\n\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n c4Shape.typeC4Shape.width = calculateTextWidth(\n '\u00AB' + c4Shape.typeC4Shape.text + '\u00BB',\n c4ShapeTypeConf\n );\n c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n c4Shape.typeC4Shape.Y = conf.c4ShapePadding;\n Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n\n // set image width and height c4Shape.x + c4Shape.width / 2 - 24, c4Shape.y + 28\n // let imageWidth = 0,\n // imageHeight = 0,\n // imageY = 0;\n //\n c4Shape.image = { width: 0, height: 0, Y: 0 };\n switch (c4Shape.typeC4Shape.text) {\n case 'person':\n case 'external_person':\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n break;\n }\n if (c4Shape.sprite) {\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n }\n\n // Y = conf.c4ShapePadding + c4Shape.image.height;\n\n let c4ShapeTextWrap = c4Shape.wrap && conf.wrap;\n let textLimitWidth = conf.width - conf.c4ShapePadding * 2;\n\n let c4ShapeLabelConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n c4ShapeLabelConf.fontWeight = 'bold';\n calcC4ShapeTextWH('label', c4Shape, c4ShapeTextWrap, c4ShapeLabelConf, textLimitWidth);\n c4Shape.label.Y = Y + 8;\n Y = c4Shape.label.Y + c4Shape.label.height;\n\n if (c4Shape.type && c4Shape.type.text !== '') {\n c4Shape.type.text = '[' + c4Shape.type.text + ']';\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH('type', c4Shape, c4ShapeTextWrap, c4ShapeTypeConf, textLimitWidth);\n c4Shape.type.Y = Y + 5;\n Y = c4Shape.type.Y + c4Shape.type.height;\n } else if (c4Shape.techn && c4Shape.techn.text !== '') {\n c4Shape.techn.text = '[' + c4Shape.techn.text + ']';\n let c4ShapeTechnConf = c4ShapeFont(conf, c4Shape.techn.text);\n calcC4ShapeTextWH('techn', c4Shape, c4ShapeTextWrap, c4ShapeTechnConf, textLimitWidth);\n c4Shape.techn.Y = Y + 5;\n Y = c4Shape.techn.Y + c4Shape.techn.height;\n }\n\n let rectHeight = Y;\n let rectWidth = c4Shape.label.width;\n\n if (c4Shape.descr && c4Shape.descr.text !== '') {\n let c4ShapeDescrConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH('descr', c4Shape, c4ShapeTextWrap, c4ShapeDescrConf, textLimitWidth);\n c4Shape.descr.Y = Y + 20;\n Y = c4Shape.descr.Y + c4Shape.descr.height;\n\n rectWidth = Math.max(c4Shape.label.width, c4Shape.descr.width);\n rectHeight = Y - c4Shape.descr.textLines * 5;\n }\n\n rectWidth = rectWidth + conf.c4ShapePadding;\n // let rectHeight =\n\n c4Shape.width = Math.max(c4Shape.width || conf.width, rectWidth, conf.width);\n c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height);\n c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin;\n\n currentBounds.insert(c4Shape);\n\n svgDraw.drawC4Shape(diagram, c4Shape, conf);\n }\n\n currentBounds.bumpLastMargin(conf.c4ShapeMargin);\n};\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\n\n/* * *\n * Get the intersection of the line between the center point of a rectangle and a point outside the rectangle.\n * Algorithm idea.\n * Using a point outside the rectangle as the coordinate origin, the graph is divided into four quadrants, and each quadrant is divided into two cases, with separate treatment on the coordinate axes\n * 1. The case of coordinate axes.\n * 1. The case of the negative x-axis\n * 2. The case of the positive x-axis\n * 3. The case of the positive y-axis\n * 4. The negative y-axis case\n * 2. Quadrant cases.\n * 2.1. first quadrant: the case where the line intersects the left side of the rectangle; the case where it intersects the lower side of the rectangle\n * 2.2. second quadrant: the case where the line intersects the right side of the rectangle; the case where it intersects the lower edge of the rectangle\n * 2.3. third quadrant: the case where the line intersects the right side of the rectangle; the case where it intersects the upper edge of the rectangle\n * 2.4. fourth quadrant: the case where the line intersects the left side of the rectangle; the case where it intersects the upper side of the rectangle\n *\n */\nlet getIntersectPoint = function (fromNode, endPoint) {\n let x1 = fromNode.x;\n\n let y1 = fromNode.y;\n\n let x2 = endPoint.x;\n\n let y2 = endPoint.y;\n\n let fromCenterX = x1 + fromNode.width / 2;\n\n let fromCenterY = y1 + fromNode.height / 2;\n\n let dx = Math.abs(x1 - x2);\n\n let dy = Math.abs(y1 - y2);\n\n let tanDYX = dy / dx;\n\n let fromDYX = fromNode.height / fromNode.width;\n\n let returnPoint = null;\n\n if (y1 == y2 && x1 < x2) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY);\n } else if (y1 == y2 && x1 > x2) {\n returnPoint = new Point(x1, fromCenterY);\n } else if (x1 == x2 && y1 < y2) {\n returnPoint = new Point(fromCenterX, y1 + fromNode.height);\n } else if (x1 == x2 && y1 > y2) {\n returnPoint = new Point(fromCenterX, y1);\n }\n\n if (x1 > x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY + (tanDYX * fromNode.width) / 2);\n } else {\n returnPoint = new Point(\n fromCenterX - ((dx / dy) * fromNode.height) / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 < y2) {\n //\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY + (tanDYX * fromNode.width) / 2);\n } else {\n returnPoint = new Point(\n fromCenterX + ((dx / dy) * fromNode.height) / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY - (tanDYX * fromNode.width) / 2);\n } else {\n returnPoint = new Point(fromCenterX + ((fromNode.height / 2) * dx) / dy, y1);\n }\n } else if (x1 > x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY - (fromNode.width / 2) * tanDYX);\n } else {\n returnPoint = new Point(fromCenterX - ((fromNode.height / 2) * dx) / dy, y1);\n }\n }\n return returnPoint;\n};\n\nlet getIntersectPoints = function (fromNode, endNode) {\n let endIntersectPoint = { x: 0, y: 0 };\n endIntersectPoint.x = endNode.x + endNode.width / 2;\n endIntersectPoint.y = endNode.y + endNode.height / 2;\n let startPoint = getIntersectPoint(fromNode, endIntersectPoint);\n\n endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n let endPoint = getIntersectPoint(endNode, endIntersectPoint);\n return { startPoint: startPoint, endPoint: endPoint };\n};\n\nexport const drawRels = function (diagram, rels, getC4ShapeObj, diagObj) {\n let i = 0;\n for (let rel of rels) {\n i = i + 1;\n let relTextWrap = rel.wrap && conf.wrap;\n let relConf = messageFont(conf);\n let diagramType = diagObj.db.getC4Type();\n if (diagramType === 'C4Dynamic') {\n rel.label.text = i + ': ' + rel.label.text;\n }\n let textLimitWidth = calculateTextWidth(rel.label.text, relConf);\n calcC4ShapeTextWH('label', rel, relTextWrap, relConf, textLimitWidth);\n\n if (rel.techn && rel.techn.text !== '') {\n textLimitWidth = calculateTextWidth(rel.techn.text, relConf);\n calcC4ShapeTextWH('techn', rel, relTextWrap, relConf, textLimitWidth);\n }\n\n if (rel.descr && rel.descr.text !== '') {\n textLimitWidth = calculateTextWidth(rel.descr.text, relConf);\n calcC4ShapeTextWH('descr', rel, relTextWrap, relConf, textLimitWidth);\n }\n\n let fromNode = getC4ShapeObj(rel.from);\n let endNode = getC4ShapeObj(rel.to);\n let points = getIntersectPoints(fromNode, endNode);\n rel.startPoint = points.startPoint;\n rel.endPoint = points.endPoint;\n }\n svgDraw.drawRels(diagram, rels, conf);\n};\n\n/**\n * @param diagram\n * @param parentBoundaryAlias\n * @param parentBounds\n * @param currentBoundaries\n * @param diagObj\n */\nfunction drawInsideBoundary(\n diagram,\n parentBoundaryAlias,\n parentBounds,\n currentBoundaries,\n diagObj\n) {\n let currentBounds = new Bounds(diagObj);\n // Calculate the width limit of the boundary. label/type \u7684\u957F\u5EA6\uFF0C\n currentBounds.data.widthLimit =\n parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundaries.length);\n // Math.min(\n // conf.width * conf.c4ShapeInRow + conf.c4ShapeMargin * conf.c4ShapeInRow * 2,\n // parentBounds.data.widthLimit / Math.min(conf.c4BoundaryInRow, currentBoundaries.length)\n // );\n for (let [i, currentBoundary] of currentBoundaries.entries()) {\n let Y = 0;\n currentBoundary.image = { width: 0, height: 0, Y: 0 };\n if (currentBoundary.sprite) {\n currentBoundary.image.width = 48;\n currentBoundary.image.height = 48;\n currentBoundary.image.Y = Y;\n Y = currentBoundary.image.Y + currentBoundary.image.height;\n }\n\n let currentBoundaryTextWrap = currentBoundary.wrap && conf.wrap;\n\n let currentBoundaryLabelConf = boundaryFont(conf);\n currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n currentBoundaryLabelConf.fontWeight = 'bold';\n calcC4ShapeTextWH(\n 'label',\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryLabelConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.label.Y = Y + 8;\n Y = currentBoundary.label.Y + currentBoundary.label.height;\n\n if (currentBoundary.type && currentBoundary.type.text !== '') {\n currentBoundary.type.text = '[' + currentBoundary.type.text + ']';\n let currentBoundaryTypeConf = boundaryFont(conf);\n calcC4ShapeTextWH(\n 'type',\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryTypeConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.type.Y = Y + 5;\n Y = currentBoundary.type.Y + currentBoundary.type.height;\n }\n\n if (currentBoundary.descr && currentBoundary.descr.text !== '') {\n let currentBoundaryDescrConf = boundaryFont(conf);\n currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n calcC4ShapeTextWH(\n 'descr',\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryDescrConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.descr.Y = Y + 20;\n Y = currentBoundary.descr.Y + currentBoundary.descr.height;\n }\n\n if (i == 0 || i % c4BoundaryInRow === 0) {\n // Calculate the drawing start point of the currentBoundaries.\n let _x = parentBounds.data.startx + conf.diagramMarginX;\n let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;\n\n currentBounds.setData(_x, _x, _y, _y);\n } else {\n // Calculate the drawing start point of the currentBoundaries.\n let _x =\n currentBounds.data.stopx !== currentBounds.data.startx\n ? currentBounds.data.stopx + conf.diagramMarginX\n : currentBounds.data.startx;\n let _y = currentBounds.data.starty;\n\n currentBounds.setData(_x, _x, _y, _y);\n }\n currentBounds.name = currentBoundary.alias;\n let currentPersonOrSystemArray = diagObj.db.getC4ShapeArray(currentBoundary.alias);\n let currentPersonOrSystemKeys = diagObj.db.getC4ShapeKeys(currentBoundary.alias);\n\n if (currentPersonOrSystemKeys.length > 0) {\n drawC4ShapeArray(\n currentBounds,\n diagram,\n currentPersonOrSystemArray,\n currentPersonOrSystemKeys\n );\n }\n parentBoundaryAlias = currentBoundary.alias;\n let nextCurrentBoundaries = diagObj.db.getBoundaries(parentBoundaryAlias);\n\n if (nextCurrentBoundaries.length > 0) {\n // draw boundary inside currentBoundary\n drawInsideBoundary(\n diagram,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundaries,\n diagObj\n );\n }\n // draw boundary\n if (currentBoundary.alias !== 'global') {\n drawBoundary(diagram, currentBoundary, currentBounds);\n }\n parentBounds.data.stopy = Math.max(\n currentBounds.data.stopy + conf.c4ShapeMargin,\n parentBounds.data.stopy\n );\n parentBounds.data.stopx = Math.max(\n currentBounds.data.stopx + conf.c4ShapeMargin,\n parentBounds.data.stopx\n );\n globalBoundaryMaxX = Math.max(globalBoundaryMaxX, parentBounds.data.stopx);\n globalBoundaryMaxY = Math.max(globalBoundaryMaxY, parentBounds.data.stopy);\n }\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n *\n * @param {any} _text\n * @param {any} id\n * @param {any} _version\n * @param diagObj\n */\nexport const draw = function (_text, id, _version, diagObj) {\n conf = getConfig().c4;\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n let db = diagObj.db;\n\n diagObj.db.setWrap(conf.wrap);\n\n c4ShapeInRow = db.getC4ShapeInRow();\n c4BoundaryInRow = db.getC4BoundaryInRow();\n\n log.debug(`C:${JSON.stringify(conf, null, 2)}`);\n\n const diagram =\n securityLevel === 'sandbox' ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n\n svgDraw.insertComputerIcon(diagram);\n svgDraw.insertDatabaseIcon(diagram);\n svgDraw.insertClockIcon(diagram);\n\n let screenBounds = new Bounds(diagObj);\n\n screenBounds.setData(\n conf.diagramMarginX,\n conf.diagramMarginX,\n conf.diagramMarginY,\n conf.diagramMarginY\n );\n\n screenBounds.data.widthLimit = screen.availWidth;\n globalBoundaryMaxX = conf.diagramMarginX;\n globalBoundaryMaxY = conf.diagramMarginY;\n\n const title = diagObj.db.getTitle();\n let currentBoundaries = diagObj.db.getBoundaries('');\n // switch (c4type) {\n // case 'C4Context':\n drawInsideBoundary(diagram, '', screenBounds, currentBoundaries, diagObj);\n // break;\n // }\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram);\n svgDraw.insertArrowEnd(diagram);\n svgDraw.insertArrowCrossHead(diagram);\n svgDraw.insertArrowFilledHead(diagram);\n\n drawRels(diagram, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj);\n\n screenBounds.data.stopx = globalBoundaryMaxX;\n screenBounds.data.stopy = globalBoundaryMaxY;\n\n const box = screenBounds.data;\n\n // Make sure the height of the diagram supports long menus.\n let boxHeight = box.stopy - box.starty;\n\n let height = boxHeight + 2 * conf.diagramMarginY;\n\n // Make sure the width of the diagram supports wide menus.\n let boxWidth = box.stopx - box.startx;\n const width = boxWidth + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX)\n .attr('y', box.starty + conf.diagramMarginY);\n }\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n const extraVertForTitle = title ? 60 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle)\n );\n\n log.debug(`models:`, box);\n};\n\nexport default {\n drawPersonOrSystemArray: drawC4ShapeArray,\n drawBoundary,\n setConf,\n draw,\n};\n", "const getStyles = (options) =>\n `.person {\n stroke: ${options.personBorder};\n fill: ${options.personBkg};\n }\n`;\n\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/c4Diagram.jison';\nimport db from './c4Db.js';\nimport renderer from './c4Renderer.js';\nimport styles from './styles.js';\nimport type { MermaidConfig } from '../../config.type.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n init: ({ c4, wrap }: MermaidConfig) => {\n renderer.setConf(c4);\n db.setWrap(wrap);\n },\n};\n"], - "mappings": "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G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG/D,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG1C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG1C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG1C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG1C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAA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AEzD,EAAEyD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAEzD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAA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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "kv", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "c4Diagram_default", "parser", "c4ShapeArray", "boundaryParseStack", "currentBoundaryParse", "parentBoundaryParse", "boundaries", "rels", "title", "wrapEnabled", "c4ShapeInRow", "c4BoundaryInRow", "c4Type", "getC4Type", "__name", "setC4Type", "c4TypeParam", "sanitizeText", "getConfig", "addRel", "type", "from", "to", "label", "techn", "descr", "sprite", "tags", "link", "rel", "old", "key", "value", "autoWrap", "addPersonOrSystem", "typeC4Shape", "alias", "personOrSystem", "addContainer", "container", "addComponent", "component", "addPersonOrSystemBoundary", "boundary", "addContainerBoundary", "addDeploymentNode", "nodeType", "popBoundaryParseStack", "updateElStyle", "elementName", "bgColor", "fontColor", "borderColor", "shadowing", "shape", "legendText", "legendSprite", "element", "updateRelStyle", "textColor", "lineColor", "offsetX", "offsetY", "updateLayoutConfig", "c4ShapeInRowParam", "c4BoundaryInRowParam", "c4ShapeInRowValue", "c4BoundaryInRowValue", "getC4ShapeInRow", "getC4BoundaryInRow", "getCurrentBoundaryParse", "getParentBoundaryParse", "getC4ShapeArray", "parentBoundary", "getC4Shape", "getC4ShapeKeys", "getBoundaries", "getBoundarys", "getRels", "getTitle", "setWrap", "wrapSetting", "clear", "LINETYPE", "ARROWTYPE", "PLACEMENT", "setTitle", "txt", "c4Db_default", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "import_sanitize_url", "drawRect", "__name", "elem", "rectData", "drawImage", "width", "height", "x", "y", "link", "imageElem", "sanitizedLink", "drawRels", "rels", "conf", "relsElem", "i", "rel", "textColor", "strokeColor", "offsetX", "offsetY", "url", "line", "messageConf", "_drawTextCandidateFunc", "drawBoundary", "boundary", "boundaryElem", "fillColor", "fontColor", "attrsValue", "boundaryConf", "drawC4Shape", "c4Shape", "personImg", "c4ShapeElem", "rect", "getNoteRect", "c4ShapeFontConf", "getC4ShapeFont", "textFontConf", "insertDatabaseIcon", "insertComputerIcon", "insertClockIcon", "insertArrowHead", "insertArrowEnd", "insertArrowFilledHead", "insertDynamicNumber", "insertArrowCrossHead", "marker", "cnf", "typeC4Shape", "byText", "content", "g", "textAttrs", "text", "_setTextAttrs", "byTspan", "fontSize", "fontFamily", "fontWeight", "lines", "common_default", "dy", "byFo", "s", "toText", "fromTextAttrsDict", "key", "svgDraw_default", "globalBoundaryMaxX", "globalBoundaryMaxY", "c4ShapeInRow", "c4BoundaryInRow", "parser", "c4Db_default", "conf", "Bounds", "__name", "diagObj", "setConf", "startx", "stopx", "starty", "stopy", "obj", "key", "val", "fun", "c4Shape", "_startx", "_stopx", "_starty", "_stopy", "margin", "cnf", "assignWithDepth_default", "c4ShapeFont", "typeC4Shape", "boundaryFont", "messageFont", "calcC4ShapeTextWH", "textType", "c4ShapeTextWrap", "textConf", "textLimitWidth", "wrapLabel", "common_default", "calculateTextHeight", "lines", "lineHeight", "line", "calculateTextWidth", "drawBoundary", "diagram", "boundary", "bounds", "boundaryTextWrap", "boundaryLabelConf", "svgDraw_default", "drawC4ShapeArray", "currentBounds", "c4ShapeArray", "c4ShapeKeys", "Y", "c4ShapeKey", "c4ShapeTypeConf", "c4ShapeLabelConf", "c4ShapeTechnConf", "rectHeight", "rectWidth", "c4ShapeDescrConf", "Point", "x", "y", "getIntersectPoint", "fromNode", "endPoint", "x1", "y1", "x2", "y2", "fromCenterX", "fromCenterY", "dx", "dy", "tanDYX", "fromDYX", "returnPoint", "getIntersectPoints", "endNode", "endIntersectPoint", "startPoint", "drawRels", "rels", "getC4ShapeObj", "i", "rel", "relTextWrap", "relConf", "points", "drawInsideBoundary", "parentBoundaryAlias", "parentBounds", "currentBoundaries", "currentBoundary", "currentBoundaryTextWrap", "currentBoundaryLabelConf", "currentBoundaryTypeConf", "currentBoundaryDescrConf", "_x", "_y", "currentPersonOrSystemArray", "currentPersonOrSystemKeys", "nextCurrentBoundaries", "draw", "_text", "id", "_version", "getConfig", "securityLevel", "sandboxElement", "select_default", "root", "db", "log", "screenBounds", "title", "box", "height", "width", "configureSvgSize", "extraVertForTitle", "c4Renderer_default", "getStyles", "__name", "options", "styles_default", "diagram", "c4Diagram_default", "c4Db_default", "c4Renderer_default", "styles_default", "__name", "c4", "wrap"] + "sourcesContent": ["/* 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,24],$V1=[1,25],$V2=[1,26],$V3=[1,27],$V4=[1,28],$V5=[1,63],$V6=[1,64],$V7=[1,65],$V8=[1,66],$V9=[1,67],$Va=[1,68],$Vb=[1,69],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,35],$Vj=[1,36],$Vk=[1,37],$Vl=[1,38],$Vm=[1,39],$Vn=[1,40],$Vo=[1,41],$Vp=[1,42],$Vq=[1,43],$Vr=[1,44],$Vs=[1,45],$Vt=[1,46],$Vu=[1,47],$Vv=[1,48],$Vw=[1,50],$Vx=[1,51],$Vy=[1,52],$Vz=[1,53],$VA=[1,54],$VB=[1,55],$VC=[1,56],$VD=[1,57],$VE=[1,58],$VF=[1,59],$VG=[1,60],$VH=[14,42],$VI=[14,34,36,37,38,39,40,41,42,44,45,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,72,73,74],$VJ=[12,14,34,36,37,38,39,40,41,42,44,45,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,72,73,74],$VK=[1,82],$VL=[1,83],$VM=[1,84],$VN=[1,85],$VO=[12,14,42],$VP=[12,14,33,42],$VQ=[12,14,33,42,76,77,79,80],$VR=[12,33],$VS=[34,36,37,38,39,40,41,44,45,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,72,73,74];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"direction\":5,\"direction_tb\":6,\"direction_bt\":7,\"direction_rl\":8,\"direction_lr\":9,\"graphConfig\":10,\"C4_CONTEXT\":11,\"NEWLINE\":12,\"statements\":13,\"EOF\":14,\"C4_CONTAINER\":15,\"C4_COMPONENT\":16,\"C4_DYNAMIC\":17,\"C4_DEPLOYMENT\":18,\"otherStatements\":19,\"diagramStatements\":20,\"otherStatement\":21,\"title\":22,\"accDescription\":23,\"acc_title\":24,\"acc_title_value\":25,\"acc_descr\":26,\"acc_descr_value\":27,\"acc_descr_multiline_value\":28,\"boundaryStatement\":29,\"boundaryStartStatement\":30,\"boundaryStopStatement\":31,\"boundaryStart\":32,\"LBRACE\":33,\"ENTERPRISE_BOUNDARY\":34,\"attributes\":35,\"SYSTEM_BOUNDARY\":36,\"BOUNDARY\":37,\"CONTAINER_BOUNDARY\":38,\"NODE\":39,\"NODE_L\":40,\"NODE_R\":41,\"RBRACE\":42,\"diagramStatement\":43,\"PERSON\":44,\"PERSON_EXT\":45,\"SYSTEM\":46,\"SYSTEM_DB\":47,\"SYSTEM_QUEUE\":48,\"SYSTEM_EXT\":49,\"SYSTEM_EXT_DB\":50,\"SYSTEM_EXT_QUEUE\":51,\"CONTAINER\":52,\"CONTAINER_DB\":53,\"CONTAINER_QUEUE\":54,\"CONTAINER_EXT\":55,\"CONTAINER_EXT_DB\":56,\"CONTAINER_EXT_QUEUE\":57,\"COMPONENT\":58,\"COMPONENT_DB\":59,\"COMPONENT_QUEUE\":60,\"COMPONENT_EXT\":61,\"COMPONENT_EXT_DB\":62,\"COMPONENT_EXT_QUEUE\":63,\"REL\":64,\"BIREL\":65,\"REL_U\":66,\"REL_D\":67,\"REL_L\":68,\"REL_R\":69,\"REL_B\":70,\"REL_INDEX\":71,\"UPDATE_EL_STYLE\":72,\"UPDATE_REL_STYLE\":73,\"UPDATE_LAYOUT_CONFIG\":74,\"attribute\":75,\"STR\":76,\"STR_KEY\":77,\"STR_VALUE\":78,\"ATTRIBUTE\":79,\"ATTRIBUTE_EMPTY\":80,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"direction_tb\",7:\"direction_bt\",8:\"direction_rl\",9:\"direction_lr\",11:\"C4_CONTEXT\",12:\"NEWLINE\",14:\"EOF\",15:\"C4_CONTAINER\",16:\"C4_COMPONENT\",17:\"C4_DYNAMIC\",18:\"C4_DEPLOYMENT\",22:\"title\",23:\"accDescription\",24:\"acc_title\",25:\"acc_title_value\",26:\"acc_descr\",27:\"acc_descr_value\",28:\"acc_descr_multiline_value\",33:\"LBRACE\",34:\"ENTERPRISE_BOUNDARY\",36:\"SYSTEM_BOUNDARY\",37:\"BOUNDARY\",38:\"CONTAINER_BOUNDARY\",39:\"NODE\",40:\"NODE_L\",41:\"NODE_R\",42:\"RBRACE\",44:\"PERSON\",45:\"PERSON_EXT\",46:\"SYSTEM\",47:\"SYSTEM_DB\",48:\"SYSTEM_QUEUE\",49:\"SYSTEM_EXT\",50:\"SYSTEM_EXT_DB\",51:\"SYSTEM_EXT_QUEUE\",52:\"CONTAINER\",53:\"CONTAINER_DB\",54:\"CONTAINER_QUEUE\",55:\"CONTAINER_EXT\",56:\"CONTAINER_EXT_DB\",57:\"CONTAINER_EXT_QUEUE\",58:\"COMPONENT\",59:\"COMPONENT_DB\",60:\"COMPONENT_QUEUE\",61:\"COMPONENT_EXT\",62:\"COMPONENT_EXT_DB\",63:\"COMPONENT_EXT_QUEUE\",64:\"REL\",65:\"BIREL\",66:\"REL_U\",67:\"REL_D\",68:\"REL_L\",69:\"REL_R\",70:\"REL_B\",71:\"REL_INDEX\",72:\"UPDATE_EL_STYLE\",73:\"UPDATE_REL_STYLE\",74:\"UPDATE_LAYOUT_CONFIG\",76:\"STR\",77:\"STR_KEY\",78:\"STR_VALUE\",79:\"ATTRIBUTE\",80:\"ATTRIBUTE_EMPTY\"},\nproductions_: [0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n yy.setDirection('TB');\nbreak;\ncase 4:\n yy.setDirection('BT');\nbreak;\ncase 5:\n yy.setDirection('RL');\nbreak;\ncase 6:\n yy.setDirection('LR');\nbreak;\ncase 8: case 9: case 10: case 11: case 12:\nyy.setC4Type($$[$0-3])\nbreak;\ncase 19:\nyy.setTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 20:\nyy.setAccDescription($$[$0].substring(15));this.$=$$[$0].substring(15);\nbreak;\ncase 21:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 22: case 23:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 28:\n$$[$0].splice(2, 0, 'ENTERPRISE'); yy.addPersonOrSystemBoundary(...$$[$0]); this.$=$$[$0];\nbreak;\ncase 29:\n$$[$0].splice(2, 0, 'SYSTEM'); yy.addPersonOrSystemBoundary(...$$[$0]); this.$=$$[$0];\nbreak;\ncase 30:\nyy.addPersonOrSystemBoundary(...$$[$0]); this.$=$$[$0];\nbreak;\ncase 31:\n$$[$0].splice(2, 0, 'CONTAINER'); yy.addContainerBoundary(...$$[$0]); this.$=$$[$0];\nbreak;\ncase 32:\nyy.addDeploymentNode('node', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 33:\nyy.addDeploymentNode('nodeL', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 34:\nyy.addDeploymentNode('nodeR', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 35:\n yy.popBoundaryParseStack() \nbreak;\ncase 39:\nyy.addPersonOrSystem('person', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 40:\nyy.addPersonOrSystem('external_person', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 41:\nyy.addPersonOrSystem('system', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 42:\nyy.addPersonOrSystem('system_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 43:\nyy.addPersonOrSystem('system_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 44:\nyy.addPersonOrSystem('external_system', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 45:\nyy.addPersonOrSystem('external_system_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 46:\nyy.addPersonOrSystem('external_system_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 47:\nyy.addContainer('container', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 48:\nyy.addContainer('container_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 49:\nyy.addContainer('container_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 50:\nyy.addContainer('external_container', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 51:\nyy.addContainer('external_container_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 52:\nyy.addContainer('external_container_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 53:\nyy.addComponent('component', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 54:\nyy.addComponent('component_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 55:\nyy.addComponent('component_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 56:\nyy.addComponent('external_component', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 57:\nyy.addComponent('external_component_db', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 58:\nyy.addComponent('external_component_queue', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 60:\nyy.addRel('rel', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 61:\nyy.addRel('birel', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 62:\nyy.addRel('rel_u', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 63:\nyy.addRel('rel_d', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 64:\nyy.addRel('rel_l', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 65:\nyy.addRel('rel_r', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 66:\nyy.addRel('rel_b', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 67:\n$$[$0].splice(0, 1); yy.addRel('rel', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 68:\nyy.updateElStyle('update_el_style', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 69:\nyy.updateRelStyle('update_rel_style', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 70:\nyy.updateLayoutConfig('update_layout_config', ...$$[$0]); this.$=$$[$0];\nbreak;\ncase 71:\n this.$ = [$$[$0]]; \nbreak;\ncase 72:\n $$[$0].unshift($$[$0-1]); this.$=$$[$0];\nbreak;\ncase 73: case 75:\n this.$ = $$[$0].trim(); \nbreak;\ncase 74:\n let kv={}; kv[$$[$0-1].trim()]=$$[$0].trim(); this.$=kv; \nbreak;\ncase 76:\n this.$ = \"\"; \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{13:70,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{13:71,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{13:72,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{13:73,19:20,20:21,21:22,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{14:[1,74]},o($VH,[2,13],{43:23,29:49,30:61,32:62,20:75,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG}),o($VH,[2,14]),o($VI,[2,16],{12:[1,76]}),o($VH,[2,36],{12:[1,77]}),o($VJ,[2,19]),o($VJ,[2,20]),{25:[1,78]},{27:[1,79]},o($VJ,[2,23]),{35:80,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:86,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:87,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:88,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:89,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:90,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:91,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:92,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:93,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:94,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:95,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:96,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:97,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:98,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:99,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:100,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:101,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:102,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:103,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:104,75:81,76:$VK,77:$VL,79:$VM,80:$VN},o($VO,[2,59]),{35:105,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:106,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:107,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:108,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:109,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:110,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:111,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:112,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:113,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:114,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:115,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{20:116,29:49,30:61,32:62,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,43:23,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG},{12:[1,118],33:[1,117]},{35:119,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:120,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:121,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:122,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:123,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:124,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{35:125,75:81,76:$VK,77:$VL,79:$VM,80:$VN},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},o($VH,[2,15]),o($VI,[2,17],{21:22,19:130,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4}),o($VH,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:$V0,23:$V1,24:$V2,26:$V3,28:$V4,34:$V5,36:$V6,37:$V7,38:$V8,39:$V9,40:$Va,41:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi,51:$Vj,52:$Vk,53:$Vl,54:$Vm,55:$Vn,56:$Vo,57:$Vp,58:$Vq,59:$Vr,60:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz,68:$VA,69:$VB,70:$VC,71:$VD,72:$VE,73:$VF,74:$VG}),o($VJ,[2,21]),o($VJ,[2,22]),o($VO,[2,39]),o($VP,[2,71],{75:81,35:132,76:$VK,77:$VL,79:$VM,80:$VN}),o($VQ,[2,73]),{78:[1,133]},o($VQ,[2,75]),o($VQ,[2,76]),o($VO,[2,40]),o($VO,[2,41]),o($VO,[2,42]),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]),o($VO,[2,50]),o($VO,[2,51]),o($VO,[2,52]),o($VO,[2,53]),o($VO,[2,54]),o($VO,[2,55]),o($VO,[2,56]),o($VO,[2,57]),o($VO,[2,58]),o($VO,[2,60]),o($VO,[2,61]),o($VO,[2,62]),o($VO,[2,63]),o($VO,[2,64]),o($VO,[2,65]),o($VO,[2,66]),o($VO,[2,67]),o($VO,[2,68]),o($VO,[2,69]),o($VO,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},o($VR,[2,28]),o($VR,[2,29]),o($VR,[2,30]),o($VR,[2,31]),o($VR,[2,32]),o($VR,[2,33]),o($VR,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},o($VI,[2,18]),o($VH,[2,38]),o($VP,[2,72]),o($VQ,[2,74]),o($VO,[2,24]),o($VO,[2,35]),o($VS,[2,25]),o($VS,[2,26],{12:[1,138]}),o($VS,[2,27])],\ndefaultActions: {2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},\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: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 6;\nbreak;\ncase 1:return 7;\nbreak;\ncase 2:return 8;\nbreak;\ncase 3:return 9;\nbreak;\ncase 4:return 22;\nbreak;\ncase 5:return 23;\nbreak;\ncase 6: this.begin(\"acc_title\");return 24; \nbreak;\ncase 7: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 8: this.begin(\"acc_descr\");return 26; \nbreak;\ncase 9: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 10: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 11: this.popState(); \nbreak;\ncase 12:return \"acc_descr_multiline_value\";\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:c /* skip comments */\nbreak;\ncase 15:return 12;\nbreak;\ncase 16:/* skip whitespace */\nbreak;\ncase 17:return 11;\nbreak;\ncase 18:return 15;\nbreak;\ncase 19:return 16;\nbreak;\ncase 20:return 17;\nbreak;\ncase 21:return 18;\nbreak;\ncase 22: this.begin(\"person_ext\"); return 45;\nbreak;\ncase 23: this.begin(\"person\"); return 44;\nbreak;\ncase 24: this.begin(\"system_ext_queue\"); return 51;\nbreak;\ncase 25: this.begin(\"system_ext_db\"); return 50;\nbreak;\ncase 26: this.begin(\"system_ext\"); return 49;\nbreak;\ncase 27: this.begin(\"system_queue\"); return 48;\nbreak;\ncase 28: this.begin(\"system_db\"); return 47;\nbreak;\ncase 29: this.begin(\"system\"); return 46;\nbreak;\ncase 30: this.begin(\"boundary\"); return 37;\nbreak;\ncase 31: this.begin(\"enterprise_boundary\"); return 34;\nbreak;\ncase 32: this.begin(\"system_boundary\"); return 36;\nbreak;\ncase 33: this.begin(\"container_ext_queue\"); return 57;\nbreak;\ncase 34: this.begin(\"container_ext_db\"); return 56;\nbreak;\ncase 35: this.begin(\"container_ext\"); return 55;\nbreak;\ncase 36: this.begin(\"container_queue\"); return 54;\nbreak;\ncase 37: this.begin(\"container_db\"); return 53;\nbreak;\ncase 38: this.begin(\"container\"); return 52;\nbreak;\ncase 39: this.begin(\"container_boundary\"); return 38;\nbreak;\ncase 40: this.begin(\"component_ext_queue\"); return 63;\nbreak;\ncase 41: this.begin(\"component_ext_db\"); return 62;\nbreak;\ncase 42: this.begin(\"component_ext\"); return 61;\nbreak;\ncase 43: this.begin(\"component_queue\"); return 60;\nbreak;\ncase 44: this.begin(\"component_db\"); return 59;\nbreak;\ncase 45: this.begin(\"component\"); return 58;\nbreak;\ncase 46: this.begin(\"node\"); return 39;\nbreak;\ncase 47: this.begin(\"node\"); return 39;\nbreak;\ncase 48: this.begin(\"node_l\"); return 40;\nbreak;\ncase 49: this.begin(\"node_r\"); return 41;\nbreak;\ncase 50: this.begin(\"rel\"); return 64;\nbreak;\ncase 51: this.begin(\"birel\"); return 65;\nbreak;\ncase 52: this.begin(\"rel_u\"); return 66;\nbreak;\ncase 53: this.begin(\"rel_u\"); return 66;\nbreak;\ncase 54: this.begin(\"rel_d\"); return 67;\nbreak;\ncase 55: this.begin(\"rel_d\"); return 67;\nbreak;\ncase 56: this.begin(\"rel_l\"); return 68;\nbreak;\ncase 57: this.begin(\"rel_l\"); return 68;\nbreak;\ncase 58: this.begin(\"rel_r\"); return 69;\nbreak;\ncase 59: this.begin(\"rel_r\"); return 69;\nbreak;\ncase 60: this.begin(\"rel_b\"); return 70;\nbreak;\ncase 61: this.begin(\"rel_index\"); return 71;\nbreak;\ncase 62: this.begin(\"update_el_style\"); return 72;\nbreak;\ncase 63: this.begin(\"update_rel_style\"); return 73;\nbreak;\ncase 64: this.begin(\"update_layout_config\"); return 74;\nbreak;\ncase 65:return \"EOF_IN_STRUCT\";\nbreak;\ncase 66: this.begin(\"attribute\"); return \"ATTRIBUTE_EMPTY\";\nbreak;\ncase 67: this.begin(\"attribute\"); \nbreak;\ncase 68: this.popState();this.popState();\nbreak;\ncase 69: return 80;\nbreak;\ncase 70: \nbreak;\ncase 71: return 80;\nbreak;\ncase 72: this.begin(\"string\");\nbreak;\ncase 73: this.popState(); \nbreak;\ncase 74: return \"STR\";\nbreak;\ncase 75: this.begin(\"string_kv\");\nbreak;\ncase 76: this.begin(\"string_kv_key\"); return \"STR_KEY\";\nbreak;\ncase 77: this.popState(); this.begin(\"string_kv_value\"); \nbreak;\ncase 78: return \"STR_VALUE\";\nbreak;\ncase 79: this.popState(); this.popState(); \nbreak;\ncase 80: return \"STR\";\nbreak;\ncase 81: /* this.begin(\"lbrace\"); */ return \"LBRACE\";\nbreak;\ncase 82: /* this.popState(); */ return \"RBRACE\";\nbreak;\ncase 83:return 'SPACE';\nbreak;\ncase 84:return 'EOL';\nbreak;\ncase 85:return 14;\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:title\\s[^#\\n;]+)/,/^(?:accDescription\\s[^#\\n;]+)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:C4Context\\b)/,/^(?:C4Container\\b)/,/^(?:C4Component\\b)/,/^(?:C4Dynamic\\b)/,/^(?:C4Deployment\\b)/,/^(?:Person_Ext\\b)/,/^(?:Person\\b)/,/^(?:SystemQueue_Ext\\b)/,/^(?:SystemDb_Ext\\b)/,/^(?:System_Ext\\b)/,/^(?:SystemQueue\\b)/,/^(?:SystemDb\\b)/,/^(?:System\\b)/,/^(?:Boundary\\b)/,/^(?:Enterprise_Boundary\\b)/,/^(?:System_Boundary\\b)/,/^(?:ContainerQueue_Ext\\b)/,/^(?:ContainerDb_Ext\\b)/,/^(?:Container_Ext\\b)/,/^(?:ContainerQueue\\b)/,/^(?:ContainerDb\\b)/,/^(?:Container\\b)/,/^(?:Container_Boundary\\b)/,/^(?:ComponentQueue_Ext\\b)/,/^(?:ComponentDb_Ext\\b)/,/^(?:Component_Ext\\b)/,/^(?:ComponentQueue\\b)/,/^(?:ComponentDb\\b)/,/^(?:Component\\b)/,/^(?:Deployment_Node\\b)/,/^(?:Node\\b)/,/^(?:Node_L\\b)/,/^(?:Node_R\\b)/,/^(?:Rel\\b)/,/^(?:BiRel\\b)/,/^(?:Rel_Up\\b)/,/^(?:Rel_U\\b)/,/^(?:Rel_Down\\b)/,/^(?:Rel_D\\b)/,/^(?:Rel_Left\\b)/,/^(?:Rel_L\\b)/,/^(?:Rel_Right\\b)/,/^(?:Rel_R\\b)/,/^(?:Rel_Back\\b)/,/^(?:RelIndex\\b)/,/^(?:UpdateElementStyle\\b)/,/^(?:UpdateRelStyle\\b)/,/^(?:UpdateLayoutConfig\\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*[\"][\"])/,/^(?:[ ]*[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[ ]*[\\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*[\"])/,/^(?:[^\"]+)/,/^(?:[\"])/,/^(?:[^,]+)/,/^(?:\\{)/,/^(?:\\})/,/^(?:[\\s]+)/,/^(?:[\\n\\r]+)/,/^(?:$)/],\nconditions: {\"acc_descr_multiline\":{\"rules\":[11,12],\"inclusive\":false},\"acc_descr\":{\"rules\":[9],\"inclusive\":false},\"acc_title\":{\"rules\":[7],\"inclusive\":false},\"string_kv_value\":{\"rules\":[78,79],\"inclusive\":false},\"string_kv_key\":{\"rules\":[77],\"inclusive\":false},\"string_kv\":{\"rules\":[76],\"inclusive\":false},\"string\":{\"rules\":[73,74],\"inclusive\":false},\"attribute\":{\"rules\":[68,69,70,71,72,75,80],\"inclusive\":false},\"update_layout_config\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"update_rel_style\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"update_el_style\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_b\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_r\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_l\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_d\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_u\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"rel_bi\":{\"rules\":[],\"inclusive\":false},\"rel\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"node_r\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"node_l\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"node\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"index\":{\"rules\":[],\"inclusive\":false},\"rel_index\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_ext_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_ext_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_ext\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"component\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_boundary\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_ext_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_ext_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_ext\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"container\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"birel\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_boundary\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"enterprise_boundary\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"boundary\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_ext_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_ext_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_ext\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_queue\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system_db\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"system\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"person_ext\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"person\":{\"rules\":[65,66,67,68],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { sanitizeText } from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n} from '../common/commonDb.js';\n\nlet c4ShapeArray = [];\nlet boundaryParseStack = [''];\nlet currentBoundaryParse = 'global';\nlet parentBoundaryParse = '';\nlet boundaries = [\n {\n alias: 'global',\n label: { text: 'global' },\n type: { text: 'global' },\n tags: null,\n link: null,\n parentBoundary: '',\n },\n];\nlet rels = [];\nlet title = '';\nlet wrapEnabled = false;\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\nvar c4Type;\n\nexport const getC4Type = function () {\n return c4Type;\n};\n\nexport const setC4Type = function (c4TypeParam) {\n let sanitizedText = sanitizeText(c4TypeParam, getConfig());\n c4Type = sanitizedText;\n};\n\n//type, from, to, label, ?techn, ?descr, ?sprite, ?tags, $link\nexport const addRel = function (type, from, to, label, techn, descr, sprite, tags, link) {\n // Don't allow label nulling\n if (\n type === undefined ||\n type === null ||\n from === undefined ||\n from === null ||\n to === undefined ||\n to === null ||\n label === undefined ||\n label === null\n ) {\n return;\n }\n\n let rel = {};\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old) {\n rel = old;\n } else {\n rels.push(rel);\n }\n\n rel.type = type;\n rel.from = from;\n rel.to = to;\n rel.label = { text: label };\n\n if (techn === undefined || techn === null) {\n rel.techn = { text: '' };\n } else {\n if (typeof techn === 'object') {\n let [key, value] = Object.entries(techn)[0];\n rel[key] = { text: value };\n } else {\n rel.techn = { text: techn };\n }\n }\n\n if (descr === undefined || descr === null) {\n rel.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n rel[key] = { text: value };\n } else {\n rel.descr = { text: descr };\n }\n }\n\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n rel[key] = value;\n } else {\n rel.sprite = sprite;\n }\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n rel[key] = value;\n } else {\n rel.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n rel[key] = value;\n } else {\n rel.link = link;\n }\n rel.wrap = autoWrap();\n};\n\n//type, alias, label, ?descr, ?sprite, ?tags, $link\nexport const addPersonOrSystem = function (typeC4Shape, alias, label, descr, sprite, tags, link) {\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let personOrSystem = {};\n const old = c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n if (old && alias === old.alias) {\n personOrSystem = old;\n } else {\n personOrSystem.alias = alias;\n c4ShapeArray.push(personOrSystem);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n personOrSystem.label = { text: '' };\n } else {\n personOrSystem.label = { text: label };\n }\n\n if (descr === undefined || descr === null) {\n personOrSystem.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n personOrSystem[key] = { text: value };\n } else {\n personOrSystem.descr = { text: descr };\n }\n }\n\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.sprite = sprite;\n }\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.link = link;\n }\n personOrSystem.typeC4Shape = { text: typeC4Shape };\n personOrSystem.parentBoundary = currentBoundaryParse;\n personOrSystem.wrap = autoWrap();\n};\n\n//type, alias, label, ?techn, ?descr ?sprite, ?tags, $link\nexport const addContainer = function (typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let container = {};\n const old = c4ShapeArray.find((container) => container.alias === alias);\n if (old && alias === old.alias) {\n container = old;\n } else {\n container.alias = alias;\n c4ShapeArray.push(container);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n container.label = { text: '' };\n } else {\n container.label = { text: label };\n }\n\n if (techn === undefined || techn === null) {\n container.techn = { text: '' };\n } else {\n if (typeof techn === 'object') {\n let [key, value] = Object.entries(techn)[0];\n container[key] = { text: value };\n } else {\n container.techn = { text: techn };\n }\n }\n\n if (descr === undefined || descr === null) {\n container.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n container[key] = { text: value };\n } else {\n container.descr = { text: descr };\n }\n }\n\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n container[key] = value;\n } else {\n container.sprite = sprite;\n }\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n container[key] = value;\n } else {\n container.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n container[key] = value;\n } else {\n container.link = link;\n }\n container.wrap = autoWrap();\n container.typeC4Shape = { text: typeC4Shape };\n container.parentBoundary = currentBoundaryParse;\n};\n\n//type, alias, label, ?techn, ?descr ?sprite, ?tags, $link\nexport const addComponent = function (typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let component = {};\n const old = c4ShapeArray.find((component) => component.alias === alias);\n if (old && alias === old.alias) {\n component = old;\n } else {\n component.alias = alias;\n c4ShapeArray.push(component);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n component.label = { text: '' };\n } else {\n component.label = { text: label };\n }\n\n if (techn === undefined || techn === null) {\n component.techn = { text: '' };\n } else {\n if (typeof techn === 'object') {\n let [key, value] = Object.entries(techn)[0];\n component[key] = { text: value };\n } else {\n component.techn = { text: techn };\n }\n }\n\n if (descr === undefined || descr === null) {\n component.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n component[key] = { text: value };\n } else {\n component.descr = { text: descr };\n }\n }\n\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n component[key] = value;\n } else {\n component.sprite = sprite;\n }\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n component[key] = value;\n } else {\n component.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n component[key] = value;\n } else {\n component.link = link;\n }\n component.wrap = autoWrap();\n component.typeC4Shape = { text: typeC4Shape };\n component.parentBoundary = currentBoundaryParse;\n};\n\n//alias, label, ?type, ?tags, $link\nexport const addPersonOrSystemBoundary = function (alias, label, type, tags, link) {\n // if (parentBoundary === null) return;\n\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let boundary = {};\n const old = boundaries.find((boundary) => boundary.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n boundary.label = { text: '' };\n } else {\n boundary.label = { text: label };\n }\n\n if (type === undefined || type === null) {\n boundary.type = { text: 'system' };\n } else {\n if (typeof type === 'object') {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\n\n//alias, label, ?type, ?tags, $link\nexport const addContainerBoundary = function (alias, label, type, tags, link) {\n // if (parentBoundary === null) return;\n\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let boundary = {};\n const old = boundaries.find((boundary) => boundary.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n boundary.label = { text: '' };\n } else {\n boundary.label = { text: label };\n }\n\n if (type === undefined || type === null) {\n boundary.type = { text: 'container' };\n } else {\n if (typeof type === 'object') {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\n\n//alias, label, ?type, ?descr, ?sprite, ?tags, $link\nexport const addDeploymentNode = function (\n nodeType,\n alias,\n label,\n type,\n descr,\n sprite,\n tags,\n link\n) {\n // if (parentBoundary === null) return;\n\n // Don't allow label nulling\n if (alias === null || label === null) {\n return;\n }\n\n let boundary = {};\n const old = boundaries.find((boundary) => boundary.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n\n // Don't allow null labels, either\n if (label === undefined || label === null) {\n boundary.label = { text: '' };\n } else {\n boundary.label = { text: label };\n }\n\n if (type === undefined || type === null) {\n boundary.type = { text: 'node' };\n } else {\n if (typeof type === 'object') {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n\n if (descr === undefined || descr === null) {\n boundary.descr = { text: '' };\n } else {\n if (typeof descr === 'object') {\n let [key, value] = Object.entries(descr)[0];\n boundary[key] = { text: value };\n } else {\n boundary.descr = { text: descr };\n }\n }\n\n if (typeof tags === 'object') {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === 'object') {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.nodeType = nodeType;\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\n\nexport const popBoundaryParseStack = function () {\n currentBoundaryParse = parentBoundaryParse;\n boundaryParseStack.pop();\n parentBoundaryParse = boundaryParseStack.pop();\n boundaryParseStack.push(parentBoundaryParse);\n};\n\n//elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite\nexport const updateElStyle = function (\n typeC4Shape,\n elementName,\n bgColor,\n fontColor,\n borderColor,\n shadowing,\n shape,\n sprite,\n techn,\n legendText,\n legendSprite\n) {\n let old = c4ShapeArray.find((element) => element.alias === elementName);\n if (old === undefined) {\n old = boundaries.find((element) => element.alias === elementName);\n if (old === undefined) {\n return;\n }\n }\n if (bgColor !== undefined && bgColor !== null) {\n if (typeof bgColor === 'object') {\n let [key, value] = Object.entries(bgColor)[0];\n old[key] = value;\n } else {\n old.bgColor = bgColor;\n }\n }\n if (fontColor !== undefined && fontColor !== null) {\n if (typeof fontColor === 'object') {\n let [key, value] = Object.entries(fontColor)[0];\n old[key] = value;\n } else {\n old.fontColor = fontColor;\n }\n }\n if (borderColor !== undefined && borderColor !== null) {\n if (typeof borderColor === 'object') {\n let [key, value] = Object.entries(borderColor)[0];\n old[key] = value;\n } else {\n old.borderColor = borderColor;\n }\n }\n if (shadowing !== undefined && shadowing !== null) {\n if (typeof shadowing === 'object') {\n let [key, value] = Object.entries(shadowing)[0];\n old[key] = value;\n } else {\n old.shadowing = shadowing;\n }\n }\n if (shape !== undefined && shape !== null) {\n if (typeof shape === 'object') {\n let [key, value] = Object.entries(shape)[0];\n old[key] = value;\n } else {\n old.shape = shape;\n }\n }\n if (sprite !== undefined && sprite !== null) {\n if (typeof sprite === 'object') {\n let [key, value] = Object.entries(sprite)[0];\n old[key] = value;\n } else {\n old.sprite = sprite;\n }\n }\n if (techn !== undefined && techn !== null) {\n if (typeof techn === 'object') {\n let [key, value] = Object.entries(techn)[0];\n old[key] = value;\n } else {\n old.techn = techn;\n }\n }\n if (legendText !== undefined && legendText !== null) {\n if (typeof legendText === 'object') {\n let [key, value] = Object.entries(legendText)[0];\n old[key] = value;\n } else {\n old.legendText = legendText;\n }\n }\n if (legendSprite !== undefined && legendSprite !== null) {\n if (typeof legendSprite === 'object') {\n let [key, value] = Object.entries(legendSprite)[0];\n old[key] = value;\n } else {\n old.legendSprite = legendSprite;\n }\n }\n};\n\n//textColor, lineColor, ?offsetX, ?offsetY\nexport const updateRelStyle = function (\n typeC4Shape,\n from,\n to,\n textColor,\n lineColor,\n offsetX,\n offsetY\n) {\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old === undefined) {\n return;\n }\n if (textColor !== undefined && textColor !== null) {\n if (typeof textColor === 'object') {\n let [key, value] = Object.entries(textColor)[0];\n old[key] = value;\n } else {\n old.textColor = textColor;\n }\n }\n if (lineColor !== undefined && lineColor !== null) {\n if (typeof lineColor === 'object') {\n let [key, value] = Object.entries(lineColor)[0];\n old[key] = value;\n } else {\n old.lineColor = lineColor;\n }\n }\n if (offsetX !== undefined && offsetX !== null) {\n if (typeof offsetX === 'object') {\n let [key, value] = Object.entries(offsetX)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetX = parseInt(offsetX);\n }\n }\n if (offsetY !== undefined && offsetY !== null) {\n if (typeof offsetY === 'object') {\n let [key, value] = Object.entries(offsetY)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetY = parseInt(offsetY);\n }\n }\n};\n\n//?c4ShapeInRow, ?c4BoundaryInRow\nexport const updateLayoutConfig = function (typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n let c4ShapeInRowValue = c4ShapeInRow;\n let c4BoundaryInRowValue = c4BoundaryInRow;\n\n if (typeof c4ShapeInRowParam === 'object') {\n const value = Object.values(c4ShapeInRowParam)[0];\n c4ShapeInRowValue = parseInt(value);\n } else {\n c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n }\n if (typeof c4BoundaryInRowParam === 'object') {\n const value = Object.values(c4BoundaryInRowParam)[0];\n c4BoundaryInRowValue = parseInt(value);\n } else {\n c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n }\n\n if (c4ShapeInRowValue >= 1) {\n c4ShapeInRow = c4ShapeInRowValue;\n }\n if (c4BoundaryInRowValue >= 1) {\n c4BoundaryInRow = c4BoundaryInRowValue;\n }\n};\n\nexport const getC4ShapeInRow = function () {\n return c4ShapeInRow;\n};\nexport const getC4BoundaryInRow = function () {\n return c4BoundaryInRow;\n};\nexport const getCurrentBoundaryParse = function () {\n return currentBoundaryParse;\n};\n\nexport const getParentBoundaryParse = function () {\n return parentBoundaryParse;\n};\n\nexport const getC4ShapeArray = function (parentBoundary) {\n if (parentBoundary === undefined || parentBoundary === null) {\n return c4ShapeArray;\n } else {\n return c4ShapeArray.filter((personOrSystem) => {\n return personOrSystem.parentBoundary === parentBoundary;\n });\n }\n};\nexport const getC4Shape = function (alias) {\n return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n};\nexport const getC4ShapeKeys = function (parentBoundary) {\n return Object.keys(getC4ShapeArray(parentBoundary));\n};\n\nexport const getBoundaries = function (parentBoundary) {\n if (parentBoundary === undefined || parentBoundary === null) {\n return boundaries;\n } else {\n return boundaries.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n};\n\n// cspell:ignore getBoundarys\n/**\n * @deprecated Use {@link getBoundaries} instead\n */\nexport const getBoundarys = getBoundaries;\n\nexport const getRels = function () {\n return rels;\n};\n\nexport const getTitle = function () {\n return title;\n};\n\nexport const setWrap = function (wrapSetting) {\n wrapEnabled = wrapSetting;\n};\n\nexport const autoWrap = function () {\n return wrapEnabled;\n};\n\nexport const clear = function () {\n c4ShapeArray = [];\n boundaries = [\n {\n alias: 'global',\n label: { text: 'global' },\n type: { text: 'global' },\n tags: null,\n link: null,\n parentBoundary: '',\n },\n ];\n parentBoundaryParse = '';\n currentBoundaryParse = 'global';\n boundaryParseStack = [''];\n rels = [];\n\n boundaryParseStack = [''];\n title = '';\n wrapEnabled = false;\n c4ShapeInRow = 4;\n c4BoundaryInRow = 2;\n};\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n};\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1,\n};\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2,\n};\n\nexport const setTitle = function (txt) {\n let sanitizedText = sanitizeText(txt, getConfig());\n title = sanitizedText;\n};\n\nexport default {\n addPersonOrSystem,\n addPersonOrSystemBoundary,\n addContainer,\n addContainerBoundary,\n addComponent,\n addDeploymentNode,\n popBoundaryParseStack,\n addRel,\n updateElStyle,\n updateRelStyle,\n updateLayoutConfig,\n autoWrap,\n setWrap,\n getC4ShapeArray,\n getC4Shape,\n getC4ShapeKeys,\n getBoundaries,\n getBoundarys,\n getCurrentBoundaryParse,\n getParentBoundaryParse,\n getRels,\n getTitle,\n getC4Type,\n getC4ShapeInRow,\n getC4BoundaryInRow,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => getConfig().c4,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n setTitle,\n setC4Type,\n // apply,\n};\n", "import common from '../common/common.js';\nimport * as svgDrawCommon from '../common/svgDrawCommon.js';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\n\nexport const drawRect = function (elem, rectData) {\n return svgDrawCommon.drawRect(elem, rectData);\n};\n\nexport const drawImage = function (elem, width, height, x, y, link) {\n const imageElem = elem.append('image');\n imageElem.attr('width', width);\n imageElem.attr('height', height);\n imageElem.attr('x', x);\n imageElem.attr('y', y);\n let sanitizedLink = link.startsWith('data:image/png;base64') ? link : sanitizeUrl(link);\n imageElem.attr('xlink:href', sanitizedLink);\n};\n\nexport const drawRels = (elem, rels, conf, diagramId) => {\n const relsElem = elem.append('g');\n let i = 0;\n for (let rel of rels) {\n let textColor = rel.textColor ? rel.textColor : '#444444';\n let strokeColor = rel.lineColor ? rel.lineColor : '#444444';\n let offsetX = rel.offsetX ? parseInt(rel.offsetX) : 0;\n let offsetY = rel.offsetY ? parseInt(rel.offsetY) : 0;\n\n let url = '';\n if (i === 0) {\n let line = relsElem.append('line');\n line.attr('x1', rel.startPoint.x);\n line.attr('y1', rel.startPoint.y);\n line.attr('x2', rel.endPoint.x);\n line.attr('y2', rel.endPoint.y);\n\n line.attr('stroke-width', '1');\n line.attr('stroke', strokeColor);\n line.style('fill', 'none');\n if (rel.type !== 'rel_b') {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-arrowhead)');\n }\n if (rel.type === 'birel' || rel.type === 'rel_b') {\n line.attr('marker-start', 'url(' + url + '#' + diagramId + '-arrowend)');\n }\n i = -1;\n } else {\n let line = relsElem.append('path');\n line\n .attr('fill', 'none')\n .attr('stroke-width', '1')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,starty Qcontrolx,controly stopx,stopy '\n .replaceAll('startx', rel.startPoint.x)\n .replaceAll('starty', rel.startPoint.y)\n .replaceAll(\n 'controlx',\n rel.startPoint.x +\n (rel.endPoint.x - rel.startPoint.x) / 2 -\n (rel.endPoint.x - rel.startPoint.x) / 4\n )\n .replaceAll('controly', rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2)\n .replaceAll('stopx', rel.endPoint.x)\n .replaceAll('stopy', rel.endPoint.y)\n );\n if (rel.type !== 'rel_b') {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-arrowhead)');\n }\n if (rel.type === 'birel' || rel.type === 'rel_b') {\n line.attr('marker-start', 'url(' + url + '#' + diagramId + '-arrowend)');\n }\n }\n\n let messageConf = conf.messageFont();\n _drawTextCandidateFunc(conf)(\n rel.label.text,\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) +\n Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 +\n offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) +\n Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 +\n offsetY,\n rel.label.width,\n rel.label.height,\n { fill: textColor },\n messageConf\n );\n\n if (rel.techn && rel.techn.text !== '') {\n messageConf = conf.messageFont();\n _drawTextCandidateFunc(conf)(\n '[' + rel.techn.text + ']',\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) +\n Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 +\n offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) +\n Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 +\n conf.messageFontSize +\n 5 +\n offsetY,\n Math.max(rel.label.width, rel.techn.width),\n rel.techn.height,\n { fill: textColor, 'font-style': 'italic' },\n messageConf\n );\n }\n }\n};\n\n/**\n * Draws a boundary in the diagram\n *\n * @param {any} elem - The diagram we'll draw to.\n * @param {any} boundary - The boundary to draw.\n * @param {any} conf - DrawText implementation discriminator object\n */\nconst drawBoundary = function (elem, boundary, conf) {\n const boundaryElem = elem.append('g');\n\n let fillColor = boundary.bgColor ? boundary.bgColor : 'none';\n let strokeColor = boundary.borderColor ? boundary.borderColor : '#444444';\n let fontColor = boundary.fontColor ? boundary.fontColor : 'black';\n\n let attrsValue = { 'stroke-width': 1.0, 'stroke-dasharray': '7.0,7.0' };\n if (boundary.nodeType) {\n attrsValue = { 'stroke-width': 1.0 };\n }\n let rectData = {\n x: boundary.x,\n y: boundary.y,\n fill: fillColor,\n stroke: strokeColor,\n width: boundary.width,\n height: boundary.height,\n rx: 2.5,\n ry: 2.5,\n attrs: attrsValue,\n };\n\n drawRect(boundaryElem, rectData);\n\n // draw label\n let boundaryConf = conf.boundaryFont();\n boundaryConf.fontWeight = 'bold';\n boundaryConf.fontSize = boundaryConf.fontSize + 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n boundary.label.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.label.Y,\n boundary.width,\n boundary.height,\n { fill: '#444444' },\n boundaryConf\n );\n\n // draw type\n if (boundary.type && boundary.type.text !== '') {\n boundaryConf = conf.boundaryFont();\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n boundary.type.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.type.Y,\n boundary.width,\n boundary.height,\n { fill: '#444444' },\n boundaryConf\n );\n }\n\n // draw descr\n if (boundary.descr && boundary.descr.text !== '') {\n boundaryConf = conf.boundaryFont();\n boundaryConf.fontSize = boundaryConf.fontSize - 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n boundary.descr.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.descr.Y,\n boundary.width,\n boundary.height,\n { fill: '#444444' },\n boundaryConf\n );\n }\n};\n\nexport const drawC4Shape = function (elem, c4Shape, conf) {\n let fillColor = c4Shape.bgColor ? c4Shape.bgColor : conf[c4Shape.typeC4Shape.text + '_bg_color'];\n let strokeColor = c4Shape.borderColor\n ? c4Shape.borderColor\n : conf[c4Shape.typeC4Shape.text + '_border_color'];\n let fontColor = c4Shape.fontColor ? c4Shape.fontColor : '#FFFFFF';\n\n let personImg =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=';\n switch (c4Shape.typeC4Shape.text) {\n case 'person':\n personImg =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=';\n break;\n case 'external_person':\n personImg =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=';\n break;\n }\n\n const c4ShapeElem = elem.append('g');\n c4ShapeElem.attr('class', 'person-man');\n\n // \n // draw rect of c4Shape\n const rect = svgDrawCommon.getNoteRect();\n\n switch (c4Shape.typeC4Shape.text) {\n case 'person':\n case 'external_person':\n case 'system':\n case 'external_system':\n case 'container':\n case 'external_container':\n case 'component':\n case 'external_component':\n rect.x = c4Shape.x;\n rect.y = c4Shape.y;\n rect.fill = fillColor;\n rect.width = c4Shape.width;\n rect.height = c4Shape.height;\n rect.stroke = strokeColor;\n rect.rx = 2.5;\n rect.ry = 2.5;\n rect.attrs = { 'stroke-width': 0.5 };\n drawRect(c4ShapeElem, rect);\n break;\n case 'system_db':\n case 'external_system_db':\n case 'container_db':\n case 'external_container_db':\n case 'component_db':\n case 'external_component_db':\n c4ShapeElem\n .append('path')\n .attr('fill', fillColor)\n .attr('stroke-width', '0.5')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height'\n .replaceAll('startx', c4Shape.x)\n .replaceAll('starty', c4Shape.y)\n .replaceAll('half', c4Shape.width / 2)\n .replaceAll('height', c4Shape.height)\n );\n c4ShapeElem\n .append('path')\n .attr('fill', 'none')\n .attr('stroke-width', '0.5')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10'\n .replaceAll('startx', c4Shape.x)\n .replaceAll('starty', c4Shape.y)\n .replaceAll('half', c4Shape.width / 2)\n );\n break;\n case 'system_queue':\n case 'external_system_queue':\n case 'container_queue':\n case 'external_container_queue':\n case 'component_queue':\n case 'external_component_queue':\n c4ShapeElem\n .append('path')\n .attr('fill', fillColor)\n .attr('stroke-width', '0.5')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half'\n .replaceAll('startx', c4Shape.x)\n .replaceAll('starty', c4Shape.y)\n .replaceAll('width', c4Shape.width)\n .replaceAll('half', c4Shape.height / 2)\n );\n c4ShapeElem\n .append('path')\n .attr('fill', 'none')\n .attr('stroke-width', '0.5')\n .attr('stroke', strokeColor)\n .attr(\n 'd',\n 'Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half'\n .replaceAll('startx', c4Shape.x + c4Shape.width)\n .replaceAll('starty', c4Shape.y)\n .replaceAll('half', c4Shape.height / 2)\n );\n break;\n }\n\n // draw type of c4Shape\n let c4ShapeFontConf = getC4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeElem\n .append('text')\n .attr('fill', fontColor)\n .attr('font-family', c4ShapeFontConf.fontFamily)\n .attr('font-size', c4ShapeFontConf.fontSize - 2)\n .attr('font-style', 'italic')\n .attr('lengthAdjust', 'spacing')\n .attr('textLength', c4Shape.typeC4Shape.width)\n .attr('x', c4Shape.x + c4Shape.width / 2 - c4Shape.typeC4Shape.width / 2)\n .attr('y', c4Shape.y + c4Shape.typeC4Shape.Y)\n .text('<<' + c4Shape.typeC4Shape.text + '>>');\n\n // draw image/sprite\n switch (c4Shape.typeC4Shape.text) {\n case 'person':\n case 'external_person':\n drawImage(\n c4ShapeElem,\n 48,\n 48,\n c4Shape.x + c4Shape.width / 2 - 24,\n c4Shape.y + c4Shape.image.Y,\n personImg\n );\n break;\n }\n\n // draw label\n let textFontConf = conf[c4Shape.typeC4Shape.text + 'Font']();\n textFontConf.fontWeight = 'bold';\n textFontConf.fontSize = textFontConf.fontSize + 2;\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n c4Shape.label.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.label.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n\n // draw techn/type\n textFontConf = conf[c4Shape.typeC4Shape.text + 'Font']();\n textFontConf.fontColor = fontColor;\n\n if (c4Shape.techn && c4Shape.techn?.text !== '') {\n _drawTextCandidateFunc(conf)(\n c4Shape.techn.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.techn.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, 'font-style': 'italic' },\n textFontConf\n );\n } else if (c4Shape.type && c4Shape.type.text !== '') {\n _drawTextCandidateFunc(conf)(\n c4Shape.type.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.type.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, 'font-style': 'italic' },\n textFontConf\n );\n }\n\n // draw descr\n if (c4Shape.descr && c4Shape.descr.text !== '') {\n textFontConf = conf.personFont();\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf)(\n c4Shape.descr.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.descr.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n }\n\n return c4Shape.height;\n};\n\nexport const insertDatabaseIcon = function (elem, id) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', id + '-database')\n .attr('fill-rule', 'evenodd')\n .attr('clip-rule', 'evenodd')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z'\n );\n};\n\nexport const insertComputerIcon = function (elem, id) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', id + '-computer')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z'\n );\n};\n\nexport const insertClockIcon = function (elem, id) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', id + '-clock')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z'\n );\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param elem\n */\nexport const insertArrowHead = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-arrowhead')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z'); // this is actual shape for arrowhead\n};\n\nexport const insertArrowEnd = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-arrowend')\n .attr('refX', 1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 10 0 L 0 5 L 10 10 z'); // this is actual shape for arrowhead\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowFilledHead = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-filled-head')\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowCrossHead = function (elem, id) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', id + '-crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4);\n\n // The arrow\n marker\n .append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z');\n\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7');\n // this is actual shape for arrowhead\n};\n\nconst getC4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + 'FontFamily'],\n fontSize: cnf[typeC4Shape + 'FontSize'],\n fontWeight: cnf[typeC4Shape + 'FontWeight'],\n };\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n */\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { fontSize, fontFamily, fontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * fontSize - (fontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n text\n .append('tspan')\n // .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i])\n // .attr('y', y + height / 2)\n .attr('alignment-baseline', 'mathematical');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nexport default {\n drawRect,\n drawBoundary,\n drawC4Shape,\n drawRels,\n drawImage,\n insertArrowHead,\n insertArrowEnd,\n insertArrowFilledHead,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon,\n};\n\n// cspell:ignoreRegExp /'Mstartx.*/g\n", "import { select } from 'd3';\nimport svgDraw from './svgDraw.js';\nimport { log } from '../../logger.js';\nimport { parser } from './parser/c4Diagram.jison';\nimport common from '../common/common.js';\nimport c4Db from './c4Db.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport assignWithDepth from '../../assignWithDepth.js';\nimport { wrapLabel, calculateTextWidth, calculateTextHeight } from '../../utils.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\n\nlet globalBoundaryMaxX = 0,\n globalBoundaryMaxY = 0;\n\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\n\nparser.yy = c4Db;\n\nlet conf = {};\n\nclass Bounds {\n constructor(diagObj) {\n this.name = '';\n this.data = {};\n this.data.startx = undefined;\n this.data.stopx = undefined;\n this.data.starty = undefined;\n this.data.stopy = undefined;\n this.data.widthLimit = undefined;\n\n this.nextData = {};\n this.nextData.startx = undefined;\n this.nextData.stopx = undefined;\n this.nextData.starty = undefined;\n this.nextData.stopy = undefined;\n this.nextData.cnt = 0;\n\n setConf(diagObj.db.getConfig());\n }\n\n setData(startx, stopx, starty, stopy) {\n this.nextData.startx = this.data.startx = startx;\n this.nextData.stopx = this.data.stopx = stopx;\n this.nextData.starty = this.data.starty = starty;\n this.nextData.stopy = this.data.stopy = stopy;\n }\n\n updateVal(obj, key, val, fun) {\n if (obj[key] === undefined) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n }\n\n insert(c4Shape) {\n this.nextData.cnt = this.nextData.cnt + 1;\n let _startx =\n this.nextData.startx === this.nextData.stopx\n ? this.nextData.stopx + c4Shape.margin\n : this.nextData.stopx + c4Shape.margin * 2;\n let _stopx = _startx + c4Shape.width;\n let _starty = this.nextData.starty + c4Shape.margin * 2;\n let _stopy = _starty + c4Shape.height;\n if (\n _startx >= this.data.widthLimit ||\n _stopx >= this.data.widthLimit ||\n this.nextData.cnt > c4ShapeInRow\n ) {\n _startx = this.nextData.startx + c4Shape.margin + conf.nextLinePaddingX;\n _starty = this.nextData.stopy + c4Shape.margin * 2;\n\n this.nextData.stopx = _stopx = _startx + c4Shape.width;\n this.nextData.starty = this.nextData.stopy;\n this.nextData.stopy = _stopy = _starty + c4Shape.height;\n this.nextData.cnt = 1;\n }\n\n c4Shape.x = _startx;\n c4Shape.y = _starty;\n\n this.updateVal(this.data, 'startx', _startx, Math.min);\n this.updateVal(this.data, 'starty', _starty, Math.min);\n this.updateVal(this.data, 'stopx', _stopx, Math.max);\n this.updateVal(this.data, 'stopy', _stopy, Math.max);\n\n this.updateVal(this.nextData, 'startx', _startx, Math.min);\n this.updateVal(this.nextData, 'starty', _starty, Math.min);\n this.updateVal(this.nextData, 'stopx', _stopx, Math.max);\n this.updateVal(this.nextData, 'stopy', _stopy, Math.max);\n }\n\n init(diagObj) {\n this.name = '';\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n widthLimit: undefined,\n };\n this.nextData = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n cnt: 0,\n };\n setConf(diagObj.db.getConfig());\n }\n\n bumpLastMargin(margin) {\n this.data.stopx += margin;\n this.data.stopy += margin;\n }\n}\n\nexport const setConf = function (cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.personFontFamily = conf.systemFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.personFontSize = conf.systemFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.personFontWeight = conf.systemFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst c4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + 'FontFamily'],\n fontSize: cnf[typeC4Shape + 'FontSize'],\n fontWeight: cnf[typeC4Shape + 'FontWeight'],\n };\n};\n\nconst boundaryFont = (cnf) => {\n return {\n fontFamily: cnf.boundaryFontFamily,\n fontSize: cnf.boundaryFontSize,\n fontWeight: cnf.boundaryFontWeight,\n };\n};\n\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight,\n };\n};\n\n/**\n * @param textType\n * @param c4Shape\n * @param c4ShapeTextWrap\n * @param textConf\n * @param textLimitWidth\n */\nfunction calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n if (!c4Shape[textType].width) {\n if (c4ShapeTextWrap) {\n c4Shape[textType].text = wrapLabel(c4Shape[textType].text, textLimitWidth, textConf);\n c4Shape[textType].textLines = c4Shape[textType].text.split(common.lineBreakRegex).length;\n // c4Shape[textType].width = calculateTextWidth(c4Shape[textType].text, textConf);\n c4Shape[textType].width = textLimitWidth;\n // c4Shape[textType].height = c4Shape[textType].textLines * textConf.fontSize;\n c4Shape[textType].height = calculateTextHeight(c4Shape[textType].text, textConf);\n } else {\n let lines = c4Shape[textType].text.split(common.lineBreakRegex);\n c4Shape[textType].textLines = lines.length;\n let lineHeight = 0;\n c4Shape[textType].height = 0;\n c4Shape[textType].width = 0;\n for (const line of lines) {\n c4Shape[textType].width = Math.max(\n calculateTextWidth(line, textConf),\n c4Shape[textType].width\n );\n lineHeight = calculateTextHeight(line, textConf);\n c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n }\n // c4Shapes[textType].height = c4Shapes[textType].textLines * textConf.fontSize;\n }\n }\n}\n\nexport const drawBoundary = function (diagram, boundary, bounds) {\n boundary.x = bounds.data.startx;\n boundary.y = bounds.data.starty;\n boundary.width = bounds.data.stopx - bounds.data.startx;\n boundary.height = bounds.data.stopy - bounds.data.starty;\n\n boundary.label.y = conf.c4ShapeMargin - 35;\n\n let boundaryTextWrap = boundary.wrap && conf.wrap;\n let boundaryLabelConf = boundaryFont(conf);\n boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n boundaryLabelConf.fontWeight = 'bold';\n let textLimitWidth = calculateTextWidth(boundary.label.text, boundaryLabelConf);\n calcC4ShapeTextWH('label', boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n\n svgDraw.drawBoundary(diagram, boundary, conf);\n};\n\nexport const drawC4ShapeArray = function (currentBounds, diagram, c4ShapeArray, c4ShapeKeys) {\n // Upper Y is relative point\n let Y = 0;\n // Draw the c4ShapeArray\n for (const c4ShapeKey of c4ShapeKeys) {\n Y = 0;\n const c4Shape = c4ShapeArray[c4ShapeKey];\n\n // calc c4 shape type width and height\n\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n c4Shape.typeC4Shape.width = calculateTextWidth(\n '\u00AB' + c4Shape.typeC4Shape.text + '\u00BB',\n c4ShapeTypeConf\n );\n c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n c4Shape.typeC4Shape.Y = conf.c4ShapePadding;\n Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n\n // set image width and height c4Shape.x + c4Shape.width / 2 - 24, c4Shape.y + 28\n // let imageWidth = 0,\n // imageHeight = 0,\n // imageY = 0;\n //\n c4Shape.image = { width: 0, height: 0, Y: 0 };\n switch (c4Shape.typeC4Shape.text) {\n case 'person':\n case 'external_person':\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n break;\n }\n if (c4Shape.sprite) {\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n }\n\n // Y = conf.c4ShapePadding + c4Shape.image.height;\n\n let c4ShapeTextWrap = c4Shape.wrap && conf.wrap;\n let textLimitWidth = conf.width - conf.c4ShapePadding * 2;\n\n let c4ShapeLabelConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n c4ShapeLabelConf.fontWeight = 'bold';\n calcC4ShapeTextWH('label', c4Shape, c4ShapeTextWrap, c4ShapeLabelConf, textLimitWidth);\n c4Shape.label.Y = Y + 8;\n Y = c4Shape.label.Y + c4Shape.label.height;\n\n if (c4Shape.type && c4Shape.type.text !== '') {\n c4Shape.type.text = '[' + c4Shape.type.text + ']';\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH('type', c4Shape, c4ShapeTextWrap, c4ShapeTypeConf, textLimitWidth);\n c4Shape.type.Y = Y + 5;\n Y = c4Shape.type.Y + c4Shape.type.height;\n } else if (c4Shape.techn && c4Shape.techn.text !== '') {\n c4Shape.techn.text = '[' + c4Shape.techn.text + ']';\n let c4ShapeTechnConf = c4ShapeFont(conf, c4Shape.techn.text);\n calcC4ShapeTextWH('techn', c4Shape, c4ShapeTextWrap, c4ShapeTechnConf, textLimitWidth);\n c4Shape.techn.Y = Y + 5;\n Y = c4Shape.techn.Y + c4Shape.techn.height;\n }\n\n let rectHeight = Y;\n let rectWidth = c4Shape.label.width;\n\n if (c4Shape.descr && c4Shape.descr.text !== '') {\n let c4ShapeDescrConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH('descr', c4Shape, c4ShapeTextWrap, c4ShapeDescrConf, textLimitWidth);\n c4Shape.descr.Y = Y + 20;\n Y = c4Shape.descr.Y + c4Shape.descr.height;\n\n rectWidth = Math.max(c4Shape.label.width, c4Shape.descr.width);\n rectHeight = Y - c4Shape.descr.textLines * 5;\n }\n\n rectWidth = rectWidth + conf.c4ShapePadding;\n // let rectHeight =\n\n c4Shape.width = Math.max(c4Shape.width || conf.width, rectWidth, conf.width);\n c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height);\n c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin;\n\n currentBounds.insert(c4Shape);\n\n svgDraw.drawC4Shape(diagram, c4Shape, conf);\n }\n\n currentBounds.bumpLastMargin(conf.c4ShapeMargin);\n};\n\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\n\n/* * *\n * Get the intersection of the line between the center point of a rectangle and a point outside the rectangle.\n * Algorithm idea.\n * Using a point outside the rectangle as the coordinate origin, the graph is divided into four quadrants, and each quadrant is divided into two cases, with separate treatment on the coordinate axes\n * 1. The case of coordinate axes.\n * 1. The case of the negative x-axis\n * 2. The case of the positive x-axis\n * 3. The case of the positive y-axis\n * 4. The negative y-axis case\n * 2. Quadrant cases.\n * 2.1. first quadrant: the case where the line intersects the left side of the rectangle; the case where it intersects the lower side of the rectangle\n * 2.2. second quadrant: the case where the line intersects the right side of the rectangle; the case where it intersects the lower edge of the rectangle\n * 2.3. third quadrant: the case where the line intersects the right side of the rectangle; the case where it intersects the upper edge of the rectangle\n * 2.4. fourth quadrant: the case where the line intersects the left side of the rectangle; the case where it intersects the upper side of the rectangle\n *\n */\nlet getIntersectPoint = function (fromNode, endPoint) {\n let x1 = fromNode.x;\n\n let y1 = fromNode.y;\n\n let x2 = endPoint.x;\n\n let y2 = endPoint.y;\n\n let fromCenterX = x1 + fromNode.width / 2;\n\n let fromCenterY = y1 + fromNode.height / 2;\n\n let dx = Math.abs(x1 - x2);\n\n let dy = Math.abs(y1 - y2);\n\n let tanDYX = dy / dx;\n\n let fromDYX = fromNode.height / fromNode.width;\n\n let returnPoint = null;\n\n if (y1 == y2 && x1 < x2) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY);\n } else if (y1 == y2 && x1 > x2) {\n returnPoint = new Point(x1, fromCenterY);\n } else if (x1 == x2 && y1 < y2) {\n returnPoint = new Point(fromCenterX, y1 + fromNode.height);\n } else if (x1 == x2 && y1 > y2) {\n returnPoint = new Point(fromCenterX, y1);\n }\n\n if (x1 > x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY + (tanDYX * fromNode.width) / 2);\n } else {\n returnPoint = new Point(\n fromCenterX - ((dx / dy) * fromNode.height) / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 < y2) {\n //\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY + (tanDYX * fromNode.width) / 2);\n } else {\n returnPoint = new Point(\n fromCenterX + ((dx / dy) * fromNode.height) / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY - (tanDYX * fromNode.width) / 2);\n } else {\n returnPoint = new Point(fromCenterX + ((fromNode.height / 2) * dx) / dy, y1);\n }\n } else if (x1 > x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY - (fromNode.width / 2) * tanDYX);\n } else {\n returnPoint = new Point(fromCenterX - ((fromNode.height / 2) * dx) / dy, y1);\n }\n }\n return returnPoint;\n};\n\nlet getIntersectPoints = function (fromNode, endNode) {\n let endIntersectPoint = { x: 0, y: 0 };\n endIntersectPoint.x = endNode.x + endNode.width / 2;\n endIntersectPoint.y = endNode.y + endNode.height / 2;\n let startPoint = getIntersectPoint(fromNode, endIntersectPoint);\n\n endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n let endPoint = getIntersectPoint(endNode, endIntersectPoint);\n return { startPoint: startPoint, endPoint: endPoint };\n};\n\nexport const drawRels = function (diagram, rels, getC4ShapeObj, diagObj, diagramId) {\n let i = 0;\n for (let rel of rels) {\n i = i + 1;\n let relTextWrap = rel.wrap && conf.wrap;\n let relConf = messageFont(conf);\n let diagramType = diagObj.db.getC4Type();\n if (diagramType === 'C4Dynamic') {\n rel.label.text = i + ': ' + rel.label.text;\n }\n let textLimitWidth = calculateTextWidth(rel.label.text, relConf);\n calcC4ShapeTextWH('label', rel, relTextWrap, relConf, textLimitWidth);\n\n if (rel.techn && rel.techn.text !== '') {\n textLimitWidth = calculateTextWidth(rel.techn.text, relConf);\n calcC4ShapeTextWH('techn', rel, relTextWrap, relConf, textLimitWidth);\n }\n\n if (rel.descr && rel.descr.text !== '') {\n textLimitWidth = calculateTextWidth(rel.descr.text, relConf);\n calcC4ShapeTextWH('descr', rel, relTextWrap, relConf, textLimitWidth);\n }\n\n let fromNode = getC4ShapeObj(rel.from);\n let endNode = getC4ShapeObj(rel.to);\n let points = getIntersectPoints(fromNode, endNode);\n rel.startPoint = points.startPoint;\n rel.endPoint = points.endPoint;\n }\n svgDraw.drawRels(diagram, rels, conf, diagramId);\n};\n\n/**\n * @param diagram\n * @param parentBoundaryAlias\n * @param parentBounds\n * @param currentBoundaries\n * @param diagObj\n */\nfunction drawInsideBoundary(\n diagram,\n parentBoundaryAlias,\n parentBounds,\n currentBoundaries,\n diagObj\n) {\n let currentBounds = new Bounds(diagObj);\n // Calculate the width limit of the boundary. label/type \u7684\u957F\u5EA6\uFF0C\n currentBounds.data.widthLimit =\n parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundaries.length);\n // Math.min(\n // conf.width * conf.c4ShapeInRow + conf.c4ShapeMargin * conf.c4ShapeInRow * 2,\n // parentBounds.data.widthLimit / Math.min(conf.c4BoundaryInRow, currentBoundaries.length)\n // );\n for (let [i, currentBoundary] of currentBoundaries.entries()) {\n let Y = 0;\n currentBoundary.image = { width: 0, height: 0, Y: 0 };\n if (currentBoundary.sprite) {\n currentBoundary.image.width = 48;\n currentBoundary.image.height = 48;\n currentBoundary.image.Y = Y;\n Y = currentBoundary.image.Y + currentBoundary.image.height;\n }\n\n let currentBoundaryTextWrap = currentBoundary.wrap && conf.wrap;\n\n let currentBoundaryLabelConf = boundaryFont(conf);\n currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n currentBoundaryLabelConf.fontWeight = 'bold';\n calcC4ShapeTextWH(\n 'label',\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryLabelConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.label.Y = Y + 8;\n Y = currentBoundary.label.Y + currentBoundary.label.height;\n\n if (currentBoundary.type && currentBoundary.type.text !== '') {\n currentBoundary.type.text = '[' + currentBoundary.type.text + ']';\n let currentBoundaryTypeConf = boundaryFont(conf);\n calcC4ShapeTextWH(\n 'type',\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryTypeConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.type.Y = Y + 5;\n Y = currentBoundary.type.Y + currentBoundary.type.height;\n }\n\n if (currentBoundary.descr && currentBoundary.descr.text !== '') {\n let currentBoundaryDescrConf = boundaryFont(conf);\n currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n calcC4ShapeTextWH(\n 'descr',\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryDescrConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.descr.Y = Y + 20;\n Y = currentBoundary.descr.Y + currentBoundary.descr.height;\n }\n\n if (i == 0 || i % c4BoundaryInRow === 0) {\n // Calculate the drawing start point of the currentBoundaries.\n let _x = parentBounds.data.startx + conf.diagramMarginX;\n let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;\n\n currentBounds.setData(_x, _x, _y, _y);\n } else {\n // Calculate the drawing start point of the currentBoundaries.\n let _x =\n currentBounds.data.stopx !== currentBounds.data.startx\n ? currentBounds.data.stopx + conf.diagramMarginX\n : currentBounds.data.startx;\n let _y = currentBounds.data.starty;\n\n currentBounds.setData(_x, _x, _y, _y);\n }\n currentBounds.name = currentBoundary.alias;\n let currentPersonOrSystemArray = diagObj.db.getC4ShapeArray(currentBoundary.alias);\n let currentPersonOrSystemKeys = diagObj.db.getC4ShapeKeys(currentBoundary.alias);\n\n if (currentPersonOrSystemKeys.length > 0) {\n drawC4ShapeArray(\n currentBounds,\n diagram,\n currentPersonOrSystemArray,\n currentPersonOrSystemKeys\n );\n }\n parentBoundaryAlias = currentBoundary.alias;\n let nextCurrentBoundaries = diagObj.db.getBoundaries(parentBoundaryAlias);\n\n if (nextCurrentBoundaries.length > 0) {\n // draw boundary inside currentBoundary\n drawInsideBoundary(\n diagram,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundaries,\n diagObj\n );\n }\n // draw boundary\n if (currentBoundary.alias !== 'global') {\n drawBoundary(diagram, currentBoundary, currentBounds);\n }\n parentBounds.data.stopy = Math.max(\n currentBounds.data.stopy + conf.c4ShapeMargin,\n parentBounds.data.stopy\n );\n parentBounds.data.stopx = Math.max(\n currentBounds.data.stopx + conf.c4ShapeMargin,\n parentBounds.data.stopx\n );\n globalBoundaryMaxX = Math.max(globalBoundaryMaxX, parentBounds.data.stopx);\n globalBoundaryMaxY = Math.max(globalBoundaryMaxY, parentBounds.data.stopy);\n }\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n *\n * @param {any} _text\n * @param {any} id\n * @param {any} _version\n * @param diagObj\n */\nexport const draw = function (_text, id, _version, diagObj) {\n conf = getConfig().c4;\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n let db = diagObj.db;\n\n diagObj.db.setWrap(conf.wrap);\n\n c4ShapeInRow = db.getC4ShapeInRow();\n c4BoundaryInRow = db.getC4BoundaryInRow();\n\n log.debug(`C:${JSON.stringify(conf, null, 2)}`);\n\n const diagram =\n securityLevel === 'sandbox' ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n\n svgDraw.insertComputerIcon(diagram, id);\n svgDraw.insertDatabaseIcon(diagram, id);\n svgDraw.insertClockIcon(diagram, id);\n\n let screenBounds = new Bounds(diagObj);\n\n screenBounds.setData(\n conf.diagramMarginX,\n conf.diagramMarginX,\n conf.diagramMarginY,\n conf.diagramMarginY\n );\n\n screenBounds.data.widthLimit = screen.availWidth;\n globalBoundaryMaxX = conf.diagramMarginX;\n globalBoundaryMaxY = conf.diagramMarginY;\n\n const title = diagObj.db.getTitle();\n let currentBoundaries = diagObj.db.getBoundaries('');\n // switch (c4type) {\n // case 'C4Context':\n drawInsideBoundary(diagram, '', screenBounds, currentBoundaries, diagObj);\n // break;\n // }\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram, id);\n svgDraw.insertArrowEnd(diagram, id);\n svgDraw.insertArrowCrossHead(diagram, id);\n svgDraw.insertArrowFilledHead(diagram, id);\n\n drawRels(diagram, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj, id);\n\n screenBounds.data.stopx = globalBoundaryMaxX;\n screenBounds.data.stopy = globalBoundaryMaxY;\n\n const box = screenBounds.data;\n\n // Make sure the height of the diagram supports long menus.\n let boxHeight = box.stopy - box.starty;\n\n let height = boxHeight + 2 * conf.diagramMarginY;\n\n // Make sure the width of the diagram supports wide menus.\n let boxWidth = box.stopx - box.startx;\n const width = boxWidth + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX)\n .attr('y', box.starty + conf.diagramMarginY);\n }\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n const extraVertForTitle = title ? 60 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle)\n );\n\n log.debug(`models:`, box);\n};\n\nexport default {\n drawPersonOrSystemArray: drawC4ShapeArray,\n drawBoundary,\n setConf,\n draw,\n};\n", "const getStyles = (options) =>\n `.person {\n stroke: ${options.personBorder};\n fill: ${options.personBkg};\n }\n`;\n\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/c4Diagram.jison';\nimport db from './c4Db.js';\nimport renderer from './c4Renderer.js';\nimport styles from './styles.js';\nimport type { MermaidConfig } from '../../config.type.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n init: ({ c4, wrap }: MermaidConfig) => {\n renderer.setConf(c4);\n db.setWrap(wrap);\n },\n};\n"], + "mappings": "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G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG/D,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG1C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG1C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG1C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG1C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE/C,EAAEgD,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGtC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,CAAC,EAAE/C,EAAEgD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAEhD,EAAEiD,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEjD,EAAEgD,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEhD,EAAEkD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAElD,EAAEkD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAElD,EAAEkD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAEtD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGJ,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG5C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGI,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAGH,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAEtD,EAAEgD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAEhD,EAAEiD,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG5C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,CAAC,EAAET,EAAEgD,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG3C,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAG,CAAC,EAAE/C,EAAEkD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAElD,EAAEkD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAElD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEwD,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAGL,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,CAAG,CAAC,EAAEtD,EAAEyD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEzD,EAAEyD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAEzD,EAAEyD,GAAI,CAAC,EAAE,EAAE,CAAC,EAAEzD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvD,EAAEuD,EAAI,CAAC,EAAE,EAA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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "kv", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "c4Diagram_default", "parser", "c4ShapeArray", "boundaryParseStack", "currentBoundaryParse", "parentBoundaryParse", "boundaries", "rels", "title", "wrapEnabled", "c4ShapeInRow", "c4BoundaryInRow", "c4Type", "getC4Type", "__name", "setC4Type", "c4TypeParam", "sanitizeText", "getConfig", "addRel", "type", "from", "to", "label", "techn", "descr", "sprite", "tags", "link", "rel", "old", "key", "value", "autoWrap", "addPersonOrSystem", "typeC4Shape", "alias", "personOrSystem", "addContainer", "container", "addComponent", "component", "addPersonOrSystemBoundary", "boundary", "addContainerBoundary", "addDeploymentNode", "nodeType", "popBoundaryParseStack", "updateElStyle", "elementName", "bgColor", "fontColor", "borderColor", "shadowing", "shape", "legendText", "legendSprite", "element", "updateRelStyle", "textColor", "lineColor", "offsetX", "offsetY", "updateLayoutConfig", "c4ShapeInRowParam", "c4BoundaryInRowParam", "c4ShapeInRowValue", "c4BoundaryInRowValue", "getC4ShapeInRow", "getC4BoundaryInRow", "getCurrentBoundaryParse", "getParentBoundaryParse", "getC4ShapeArray", "parentBoundary", "getC4Shape", "getC4ShapeKeys", "getBoundaries", "getBoundarys", "getRels", "getTitle", "setWrap", "wrapSetting", "clear", "LINETYPE", "ARROWTYPE", "PLACEMENT", "setTitle", "txt", "c4Db_default", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "import_sanitize_url", "drawRect", "__name", "elem", "rectData", "drawImage", "width", "height", "x", "y", "link", "imageElem", "sanitizedLink", "drawRels", "rels", "conf", "diagramId", "relsElem", "i", "rel", "textColor", "strokeColor", "offsetX", "offsetY", "url", "line", "messageConf", "_drawTextCandidateFunc", "drawBoundary", "boundary", "boundaryElem", "fillColor", "fontColor", "attrsValue", "boundaryConf", "drawC4Shape", "c4Shape", "personImg", "c4ShapeElem", "rect", "getNoteRect", "c4ShapeFontConf", "getC4ShapeFont", "textFontConf", "insertDatabaseIcon", "id", "insertComputerIcon", "insertClockIcon", "insertArrowHead", "insertArrowEnd", "insertArrowFilledHead", "insertArrowCrossHead", "marker", "cnf", "typeC4Shape", "byText", "content", "g", "textAttrs", "text", "_setTextAttrs", "byTspan", "fontSize", "fontFamily", "fontWeight", "lines", "common_default", "dy", "byFo", "s", "toText", "fromTextAttrsDict", "key", "svgDraw_default", "globalBoundaryMaxX", "globalBoundaryMaxY", "c4ShapeInRow", "c4BoundaryInRow", "parser", "c4Db_default", "conf", "Bounds", "__name", "diagObj", "setConf", "startx", "stopx", "starty", "stopy", "obj", "key", "val", "fun", "c4Shape", "_startx", "_stopx", "_starty", "_stopy", "margin", "cnf", "assignWithDepth_default", "c4ShapeFont", "typeC4Shape", "boundaryFont", "messageFont", "calcC4ShapeTextWH", "textType", "c4ShapeTextWrap", "textConf", "textLimitWidth", "wrapLabel", "common_default", "calculateTextHeight", "lines", "lineHeight", "line", "calculateTextWidth", "drawBoundary", "diagram", "boundary", "bounds", "boundaryTextWrap", "boundaryLabelConf", "svgDraw_default", "drawC4ShapeArray", "currentBounds", "c4ShapeArray", "c4ShapeKeys", "Y", "c4ShapeKey", "c4ShapeTypeConf", "c4ShapeLabelConf", "c4ShapeTechnConf", "rectHeight", "rectWidth", "c4ShapeDescrConf", "Point", "x", "y", "getIntersectPoint", "fromNode", "endPoint", "x1", "y1", "x2", "y2", "fromCenterX", "fromCenterY", "dx", "dy", "tanDYX", "fromDYX", "returnPoint", "getIntersectPoints", "endNode", "endIntersectPoint", "startPoint", "drawRels", "rels", "getC4ShapeObj", "diagramId", "i", "rel", "relTextWrap", "relConf", "points", "drawInsideBoundary", "parentBoundaryAlias", "parentBounds", "currentBoundaries", "currentBoundary", "currentBoundaryTextWrap", "currentBoundaryLabelConf", "currentBoundaryTypeConf", "currentBoundaryDescrConf", "_x", "_y", "currentPersonOrSystemArray", "currentPersonOrSystemKeys", "nextCurrentBoundaries", "draw", "_text", "id", "_version", "getConfig", "securityLevel", "sandboxElement", "select_default", "root", "db", "log", "screenBounds", "title", "box", "height", "width", "configureSvgSize", "extraVertForTitle", "c4Renderer_default", "getStyles", "__name", "options", "styles_default", "diagram", "c4Diagram_default", "c4Db_default", "c4Renderer_default", "styles_default", "__name", "c4", "wrap"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-2T2R6R2M.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-2T2R6R2M.mjs new file mode 100644 index 0000000..3a7cb63 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-2T2R6R2M.mjs @@ -0,0 +1,3 @@ +import{a as t}from"./chunk-4R4BOZG6.mjs";import{a as c}from"./chunk-AQ6EADP3.mjs";var i={},m={info:t(async()=>{let{createInfoServices:e}=await import("./info-J43DQDTF-KCYPFFUO.mjs"),r=e().Info.parser.LangiumParser;i.info=r},"info"),packet:t(async()=>{let{createPacketServices:e}=await import("./packet-YPE3B663-LP52Z2RK.mjs"),r=e().Packet.parser.LangiumParser;i.packet=r},"packet"),pie:t(async()=>{let{createPieServices:e}=await import("./pie-LRSECV5Y-TCRJHUBD.mjs"),r=e().Pie.parser.LangiumParser;i.pie=r},"pie"),treeView:t(async()=>{let{createTreeViewServices:e}=await import("./treeView-BLDUP644-QA4HXRO3.mjs"),r=e().TreeView.parser.LangiumParser;i.treeView=r},"treeView"),architecture:t(async()=>{let{createArchitectureServices:e}=await import("./architecture-7EHR7CIX-6QZW5X65.mjs"),r=e().Architecture.parser.LangiumParser;i.architecture=r},"architecture"),gitGraph:t(async()=>{let{createGitGraphServices:e}=await import("./gitGraph-WXDBUCRP-R675I2BI.mjs"),r=e().GitGraph.parser.LangiumParser;i.gitGraph=r},"gitGraph"),eventmodeling:t(async()=>{let{createEventModelingServices:e}=await import("./eventmodeling-FCH6USID-MREXMVOE.mjs"),r=e().EventModel.parser.LangiumParser;i.eventmodeling=r},"eventmodeling"),radar:t(async()=>{let{createRadarServices:e}=await import("./radar-GUYGQ44K-RDLRG3WG.mjs"),r=e().Radar.parser.LangiumParser;i.radar=r},"radar"),treemap:t(async()=>{let{createTreemapServices:e}=await import("./treemap-LRROVOQU-LLAWBHMP.mjs"),r=e().Treemap.parser.LangiumParser;i.treemap=r},"treemap"),wardley:t(async()=>{let{createWardleyServices:e}=await import("./wardley-L42UT6IY-5TKZOOLJ.mjs"),r=e().Wardley.parser.LangiumParser;i.wardley=r},"wardley")};async function d(e,r){let s=m[e];if(!s)throw new Error(`Unknown diagram type: ${e}`);i[e]||await s();let o=i[e].parse(r);if(o.lexerErrors.length>0||o.parserErrors.length>0)throw new l(o);return o.value}c(d,"parse");t(d,"parse");var l=class extends Error{static{c(this,"MermaidParseError")}constructor(e){let r=e.lexerErrors.map(a=>{let o=a.line!==void 0&&!isNaN(a.line)?a.line:"?",n=a.column!==void 0&&!isNaN(a.column)?a.column:"?";return`Lexer error on line ${o}, column ${n}: ${a.message}`}).join(` +`),s=e.parserErrors.map(a=>{let o=a.token.startLine!==void 0&&!isNaN(a.token.startLine)?a.token.startLine:"?",n=a.token.startColumn!==void 0&&!isNaN(a.token.startColumn)?a.token.startColumn:"?";return`Parse error on line ${o}, column ${n}: ${a.message}`}).join(` +`);super(`Parsing failed: ${r} ${s}`),this.result=e}static{t(this,"MermaidParseError")}};export{d as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-2T2R6R2M.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-2T2R6R2M.mjs.map new file mode 100644 index 0000000..8bdcfe9 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-2T2R6R2M.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/mermaid-parser.core.mjs"], + "sourcesContent": ["import {\n RadarModule,\n createRadarServices\n} from \"./chunks/mermaid-parser.core/chunk-FHYWG6QK.mjs\";\nimport {\n TreemapModule,\n createTreemapServices\n} from \"./chunks/mermaid-parser.core/chunk-BR22UD5L.mjs\";\nimport {\n WardleyModule,\n createWardleyServices\n} from \"./chunks/mermaid-parser.core/chunk-PUPMXCY4.mjs\";\nimport {\n GitGraphModule,\n createGitGraphServices\n} from \"./chunks/mermaid-parser.core/chunk-UIBZB4QT.mjs\";\nimport {\n InfoModule,\n createInfoServices\n} from \"./chunks/mermaid-parser.core/chunk-5DO6E6H7.mjs\";\nimport {\n PacketModule,\n createPacketServices\n} from \"./chunks/mermaid-parser.core/chunk-MPE355IW.mjs\";\nimport {\n PieModule,\n createPieServices\n} from \"./chunks/mermaid-parser.core/chunk-MZUSXYTE.mjs\";\nimport {\n TreeViewModule,\n createTreeViewServices\n} from \"./chunks/mermaid-parser.core/chunk-WCWK7LTN.mjs\";\nimport {\n ArchitectureModule,\n createArchitectureServices\n} from \"./chunks/mermaid-parser.core/chunk-4EGX6M5U.mjs\";\nimport {\n EventModelingModule,\n createEventModelingServices\n} from \"./chunks/mermaid-parser.core/chunk-N66VUXT2.mjs\";\nimport {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n Architecture,\n ArchitectureGrammarGeneratedModule,\n Branch,\n Commit,\n CommonTokenBuilder,\n CommonValueConverter,\n EmDataEntity,\n EmFrame,\n EventModel,\n EventModelingGeneratedModule,\n GitGraph,\n GitGraphGrammarGeneratedModule,\n Info,\n InfoGrammarGeneratedModule,\n Merge,\n MermaidGeneratedSharedModule,\n Packet,\n PacketBlock,\n PacketGrammarGeneratedModule,\n Pie,\n PieGrammarGeneratedModule,\n PieSection,\n Radar,\n RadarGrammarGeneratedModule,\n Statement,\n TreeNode,\n TreeView,\n TreeViewGrammarGeneratedModule,\n Treemap,\n TreemapGrammarGeneratedModule,\n Wardley,\n WardleyGrammarGeneratedModule,\n __name,\n isArchitecture,\n isBranch,\n isCommit,\n isEmModelEntityType,\n isEmResetFrame,\n isGitGraph,\n isInfo,\n isMerge,\n isPacket,\n isPacketBlock,\n isPie,\n isPieSection,\n isTreemap,\n isWardley\n} from \"./chunks/mermaid-parser.core/chunk-NNHCCRGN.mjs\";\n\n// src/parse.ts\nvar parsers = {};\nvar initializers = {\n info: /* @__PURE__ */ __name(async () => {\n const { createInfoServices: createInfoServices2 } = await import(\"./chunks/mermaid-parser.core/info-J43DQDTF.mjs\");\n const parser = createInfoServices2().Info.parser.LangiumParser;\n parsers.info = parser;\n }, \"info\"),\n packet: /* @__PURE__ */ __name(async () => {\n const { createPacketServices: createPacketServices2 } = await import(\"./chunks/mermaid-parser.core/packet-YPE3B663.mjs\");\n const parser = createPacketServices2().Packet.parser.LangiumParser;\n parsers.packet = parser;\n }, \"packet\"),\n pie: /* @__PURE__ */ __name(async () => {\n const { createPieServices: createPieServices2 } = await import(\"./chunks/mermaid-parser.core/pie-LRSECV5Y.mjs\");\n const parser = createPieServices2().Pie.parser.LangiumParser;\n parsers.pie = parser;\n }, \"pie\"),\n treeView: /* @__PURE__ */ __name(async () => {\n const { createTreeViewServices: createTreeViewServices2 } = await import(\"./chunks/mermaid-parser.core/treeView-BLDUP644.mjs\");\n const parser = createTreeViewServices2().TreeView.parser.LangiumParser;\n parsers.treeView = parser;\n }, \"treeView\"),\n architecture: /* @__PURE__ */ __name(async () => {\n const { createArchitectureServices: createArchitectureServices2 } = await import(\"./chunks/mermaid-parser.core/architecture-7EHR7CIX.mjs\");\n const parser = createArchitectureServices2().Architecture.parser.LangiumParser;\n parsers.architecture = parser;\n }, \"architecture\"),\n gitGraph: /* @__PURE__ */ __name(async () => {\n const { createGitGraphServices: createGitGraphServices2 } = await import(\"./chunks/mermaid-parser.core/gitGraph-WXDBUCRP.mjs\");\n const parser = createGitGraphServices2().GitGraph.parser.LangiumParser;\n parsers.gitGraph = parser;\n }, \"gitGraph\"),\n eventmodeling: /* @__PURE__ */ __name(async () => {\n const { createEventModelingServices: createEventModelingServices2 } = await import(\"./chunks/mermaid-parser.core/eventmodeling-FCH6USID.mjs\");\n const parser = createEventModelingServices2().EventModel.parser.LangiumParser;\n parsers.eventmodeling = parser;\n }, \"eventmodeling\"),\n radar: /* @__PURE__ */ __name(async () => {\n const { createRadarServices: createRadarServices2 } = await import(\"./chunks/mermaid-parser.core/radar-GUYGQ44K.mjs\");\n const parser = createRadarServices2().Radar.parser.LangiumParser;\n parsers.radar = parser;\n }, \"radar\"),\n treemap: /* @__PURE__ */ __name(async () => {\n const { createTreemapServices: createTreemapServices2 } = await import(\"./chunks/mermaid-parser.core/treemap-LRROVOQU.mjs\");\n const parser = createTreemapServices2().Treemap.parser.LangiumParser;\n parsers.treemap = parser;\n }, \"treemap\"),\n wardley: /* @__PURE__ */ __name(async () => {\n const { createWardleyServices: createWardleyServices2 } = await import(\"./chunks/mermaid-parser.core/wardley-L42UT6IY.mjs\");\n const parser = createWardleyServices2().Wardley.parser.LangiumParser;\n parsers.wardley = parser;\n }, \"wardley\")\n};\nasync function parse(diagramType, text) {\n const initializer = initializers[diagramType];\n if (!initializer) {\n throw new Error(`Unknown diagram type: ${diagramType}`);\n }\n if (!parsers[diagramType]) {\n await initializer();\n }\n const parser = parsers[diagramType];\n const result = parser.parse(text);\n if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) {\n throw new MermaidParseError(result);\n }\n return result.value;\n}\n__name(parse, \"parse\");\nvar MermaidParseError = class extends Error {\n constructor(result) {\n const lexerErrors = result.lexerErrors.map((err) => {\n const line = err.line !== void 0 && !isNaN(err.line) ? err.line : \"?\";\n const column = err.column !== void 0 && !isNaN(err.column) ? err.column : \"?\";\n return `Lexer error on line ${line}, column ${column}: ${err.message}`;\n }).join(\"\\n\");\n const parserErrors = result.parserErrors.map((err) => {\n const line = err.token.startLine !== void 0 && !isNaN(err.token.startLine) ? err.token.startLine : \"?\";\n const column = err.token.startColumn !== void 0 && !isNaN(err.token.startColumn) ? err.token.startColumn : \"?\";\n return `Parse error on line ${line}, column ${column}: ${err.message}`;\n }).join(\"\\n\");\n super(`Parsing failed: ${lexerErrors} ${parserErrors}`);\n this.result = result;\n }\n static {\n __name(this, \"MermaidParseError\");\n }\n};\nexport {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n Architecture,\n ArchitectureGrammarGeneratedModule as ArchitectureGeneratedModule,\n ArchitectureModule,\n Branch,\n Commit,\n CommonTokenBuilder,\n CommonValueConverter,\n EmDataEntity,\n EmFrame,\n EventModel,\n EventModelingGeneratedModule,\n EventModelingModule,\n GitGraph,\n GitGraphGrammarGeneratedModule as GitGraphGeneratedModule,\n GitGraphModule,\n Info,\n InfoGrammarGeneratedModule as InfoGeneratedModule,\n InfoModule,\n Merge,\n MermaidGeneratedSharedModule,\n MermaidParseError,\n Packet,\n PacketBlock,\n PacketGrammarGeneratedModule as PacketGeneratedModule,\n PacketModule,\n Pie,\n PieGrammarGeneratedModule as PieGeneratedModule,\n PieModule,\n PieSection,\n Radar,\n RadarGrammarGeneratedModule as RadarGeneratedModule,\n RadarModule,\n Statement,\n TreeNode,\n TreeView,\n TreeViewGrammarGeneratedModule as TreeViewGeneratedModule,\n TreeViewModule,\n Treemap,\n TreemapGrammarGeneratedModule as TreemapGeneratedModule,\n TreemapModule,\n Wardley,\n WardleyGrammarGeneratedModule as WardleyGeneratedModule,\n WardleyModule,\n createArchitectureServices,\n createEventModelingServices,\n createGitGraphServices,\n createInfoServices,\n createPacketServices,\n createPieServices,\n createRadarServices,\n createTreeViewServices,\n createTreemapServices,\n createWardleyServices,\n isArchitecture,\n isBranch,\n isCommit,\n isEmModelEntityType,\n isEmResetFrame,\n isGitGraph,\n isInfo,\n isMerge,\n isPacket,\n isPacketBlock,\n isPie,\n isPieSection,\n isTreemap,\n isWardley,\n parse\n};\n"], + "mappings": "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", + "names": ["parsers", "initializers", "__name", "createInfoServices2", "parser", "createPacketServices2", "createPieServices2", "createTreeViewServices2", "createArchitectureServices2", "createGitGraphServices2", "createEventModelingServices2", "createRadarServices2", "createTreemapServices2", "createWardleyServices2", "parse", "diagramType", "text", "initializer", "result", "MermaidParseError", "lexerErrors", "err", "line", "column", "parserErrors"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-2UTLFMKG.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-2UTLFMKG.mjs new file mode 100644 index 0000000..0b9d8bd --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-2UTLFMKG.mjs @@ -0,0 +1 @@ +import{a as e,b as o,c as n,d as t,e as i,g as u,n as l,s,t as c}from"./chunk-4R4BOZG6.mjs";import{a}from"./chunk-AQ6EADP3.mjs";var v=class extends c{static{a(this,"RadarTokenBuilder")}static{e(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},R={parser:{TokenBuilder:e(()=>new v,"TokenBuilder"),ValueConverter:e(()=>new s,"ValueConverter")}};function M(m=i){let r=t(n(m),u),d=t(o({shared:r}),l,R);return r.ServiceRegistry.register(d),{shared:r,Radar:d}}a(M,"createRadarServices");e(M,"createRadarServices");export{R as a,M as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-2UTLFMKG.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-2UTLFMKG.mjs.map new file mode 100644 index 0000000..88616c5 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-2UTLFMKG.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-FHYWG6QK.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n EmptyFileSystem,\n MermaidGeneratedSharedModule,\n RadarGrammarGeneratedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/radar/tokenBuilder.ts\nvar RadarTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"RadarTokenBuilder\");\n }\n constructor() {\n super([\"radar-beta\"]);\n }\n};\n\n// src/language/radar/module.ts\nvar RadarModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new RadarTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createRadarServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Radar = inject(\n createDefaultCoreModule({ shared }),\n RadarGrammarGeneratedModule,\n RadarModule\n );\n shared.ServiceRegistry.register(Radar);\n return { shared, Radar };\n}\n__name(createRadarServices, \"createRadarServices\");\n\nexport {\n RadarModule,\n createRadarServices\n};\n"], + "mappings": "gIAcA,IAAIA,EAAoB,cAAcC,CAA4B,CAdlE,MAckE,CAAAC,EAAA,0BAChE,MAAO,CACLA,EAAO,KAAM,mBAAmB,CAClC,CACA,aAAc,CACZ,MAAM,CAAC,YAAY,CAAC,CACtB,CACF,EAGIC,EAAc,CAChB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAqB,cAAc,EAClF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAoBC,EAAUC,EAAiB,CACtD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAQH,EACZI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAK,EAC9B,CAAE,OAAAJ,EAAQ,MAAAI,CAAM,CACzB,CAZSV,EAAAG,EAAA,uBAaTH,EAAOG,EAAqB,qBAAqB", + "names": ["RadarTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "RadarModule", "CommonValueConverter", "createRadarServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Radar", "createDefaultCoreModule", "RadarGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-33NP3AWU.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-33NP3AWU.mjs deleted file mode 100644 index 30dce68..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-33NP3AWU.mjs +++ /dev/null @@ -1,220 +0,0 @@ -import{a as Qt}from"./chunk-TBF5ZNIQ.mjs";import{a as te}from"./chunk-T4EQAHMB.mjs";import{b as Zt}from"./chunk-SK62O5VA.mjs";import{e as Jt,m as qt}from"./chunk-Q3CC2MQB.mjs";import{F as M,Q as Ut,R as Ht,S as jt,T as Wt,U as zt,V as Kt,W as Xt,Y as v}from"./chunk-3UWU4A3N.mjs";import{b as _}from"./chunk-MGPAVIPZ.mjs";import{a as c}from"./chunk-VELTKBKT.mjs";var Ct=(function(){var t=c(function(Y,o,h,a){for(h=h||{},a=Y.length;a--;h[Y[a]]=o);return h},"o"),e=[1,2],s=[1,3],n=[1,4],r=[2,4],d=[1,9],u=[1,11],f=[1,16],S=[1,17],m=[1,18],E=[1,19],b=[1,33],L=[1,20],A=[1,21],p=[1,22],k=[1,23],O=[1,24],I=[1,26],G=[1,27],R=[1,28],P=[1,29],et=[1,30],st=[1,31],it=[1,32],rt=[1,35],nt=[1,36],at=[1,37],ot=[1,38],z=[1,34],g=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],lt=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],Ft=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],Et={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:c(function(o,h,a,y,T,i,Q){var l=i.length-1;switch(T){case 3:return y.setRootDoc(i[l]),i[l];break;case 4:this.$=[];break;case 5:i[l]!="nl"&&(i[l-1].push(i[l]),this.$=i[l-1]);break;case 6:case 7:this.$=i[l];break;case 8:this.$="nl";break;case 12:this.$=i[l];break;case 13:let ct=i[l-1];ct.description=y.trimColon(i[l]),this.$=ct;break;case 14:this.$={stmt:"relation",state1:i[l-2],state2:i[l]};break;case 15:let ht=y.trimColon(i[l]);this.$={stmt:"relation",state1:i[l-3],state2:i[l-1],description:ht};break;case 19:this.$={stmt:"state",id:i[l-3],type:"default",description:"",doc:i[l-1]};break;case 20:var V=i[l],K=i[l-2].trim();if(i[l].match(":")){var Z=i[l].split(":");V=Z[0],K=[K,Z[1]]}this.$={stmt:"state",id:V,type:"default",description:K};break;case 21:this.$={stmt:"state",id:i[l-3],type:"default",description:i[l-5],doc:i[l-1]};break;case 22:this.$={stmt:"state",id:i[l],type:"fork"};break;case 23:this.$={stmt:"state",id:i[l],type:"join"};break;case 24:this.$={stmt:"state",id:i[l],type:"choice"};break;case 25:this.$={stmt:"state",id:y.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:i[l-1].trim(),note:{position:i[l-2].trim(),text:i[l].trim()}};break;case 29:this.$=i[l].trim(),y.setAccTitle(this.$);break;case 30:case 31:this.$=i[l].trim(),y.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:i[l-3],url:i[l-2],tooltip:i[l-1]};break;case 33:this.$={stmt:"click",id:i[l-3],url:i[l-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:i[l-1].trim(),classes:i[l].trim()};break;case 36:this.$={stmt:"style",id:i[l-1].trim(),styleClass:i[l].trim()};break;case 37:this.$={stmt:"applyClass",id:i[l-1].trim(),styleClass:i[l].trim()};break;case 38:y.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:y.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:y.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:y.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:i[l].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:i[l-2].trim(),classes:[i[l].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:i[l-2].trim(),classes:[i[l].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:s,6:n},{1:[3]},{3:5,4:e,5:s,6:n},{3:6,4:e,5:s,6:n},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],r,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:d,5:u,8:8,9:10,10:12,11:13,12:14,13:15,16:f,17:S,19:m,22:E,24:b,25:L,26:A,27:p,28:k,29:O,32:25,33:I,35:G,37:R,38:P,41:et,45:st,48:it,51:rt,52:nt,53:at,54:ot,57:z},t(g,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:f,17:S,19:m,22:E,24:b,25:L,26:A,27:p,28:k,29:O,32:25,33:I,35:G,37:R,38:P,41:et,45:st,48:it,51:rt,52:nt,53:at,54:ot,57:z},t(g,[2,7]),t(g,[2,8]),t(g,[2,9]),t(g,[2,10]),t(g,[2,11]),t(g,[2,12],{14:[1,40],15:[1,41]}),t(g,[2,16]),{18:[1,42]},t(g,[2,18],{20:[1,43]}),{23:[1,44]},t(g,[2,22]),t(g,[2,23]),t(g,[2,24]),t(g,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(g,[2,28]),{34:[1,49]},{36:[1,50]},t(g,[2,31]),{13:51,24:b,57:z},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(lt,[2,44],{58:[1,56]}),t(lt,[2,45],{58:[1,57]}),t(g,[2,38]),t(g,[2,39]),t(g,[2,40]),t(g,[2,41]),t(g,[2,6]),t(g,[2,13]),{13:58,24:b,57:z},t(g,[2,17]),t(Ft,r,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(g,[2,29]),t(g,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(g,[2,14],{14:[1,71]}),{4:d,5:u,8:8,9:10,10:12,11:13,12:14,13:15,16:f,17:S,19:m,21:[1,72],22:E,24:b,25:L,26:A,27:p,28:k,29:O,32:25,33:I,35:G,37:R,38:P,41:et,45:st,48:it,51:rt,52:nt,53:at,54:ot,57:z},t(g,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(g,[2,34]),t(g,[2,35]),t(g,[2,36]),t(g,[2,37]),t(lt,[2,46]),t(lt,[2,47]),t(g,[2,15]),t(g,[2,19]),t(Ft,r,{7:78}),t(g,[2,26]),t(g,[2,27]),{5:[1,79]},{5:[1,80]},{4:d,5:u,8:8,9:10,10:12,11:13,12:14,13:15,16:f,17:S,19:m,21:[1,81],22:E,24:b,25:L,26:A,27:p,28:k,29:O,32:25,33:I,35:G,37:R,38:P,41:et,45:st,48:it,51:rt,52:nt,53:at,54:ot,57:z},t(g,[2,32]),t(g,[2,33]),t(g,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:c(function(o,h){if(h.recoverable)this.trace(o);else{var a=new Error(o);throw a.hash=h,a}},"parseError"),parse:c(function(o){var h=this,a=[0],y=[],T=[null],i=[],Q=this.table,l="",V=0,K=0,Z=0,ct=2,ht=1,De=i.slice.call(arguments,1),D=Object.create(this.lexer),U={yy:{}};for(var bt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,bt)&&(U.yy[bt]=this.yy[bt]);D.setInput(o,U.yy),U.yy.lexer=D,U.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Dt=D.yylloc;i.push(Dt);var ke=D.options&&D.options.ranges;typeof U.yy.parseError=="function"?this.parseError=U.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Me(N){a.length=a.length-2*N,T.length=T.length-N,i.length=i.length-N}c(Me,"popStack");function Ae(){var N;return N=y.pop()||D.lex()||ht,typeof N!="number"&&(N instanceof Array&&(y=N,N=y.pop()),N=h.symbols_[N]||N),N}c(Ae,"lex");for(var x,kt,H,w,Ye,At,X={},dt,$,Vt,ut;;){if(H=a[a.length-1],this.defaultActions[H]?w=this.defaultActions[H]:((x===null||typeof x>"u")&&(x=Ae()),w=Q[H]&&Q[H][x]),typeof w>"u"||!w.length||!w[0]){var xt="";ut=[];for(dt in Q[H])this.terminals_[dt]&&dt>ct&&ut.push("'"+this.terminals_[dt]+"'");D.showPosition?xt="Parse error on line "+(V+1)+`: -`+D.showPosition()+` -Expecting `+ut.join(", ")+", got '"+(this.terminals_[x]||x)+"'":xt="Parse error on line "+(V+1)+": Unexpected "+(x==ht?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(xt,{text:D.match,token:this.terminals_[x]||x,line:D.yylineno,loc:Dt,expected:ut})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+x);switch(w[0]){case 1:a.push(x),T.push(D.yytext),i.push(D.yylloc),a.push(w[1]),x=null,kt?(x=kt,kt=null):(K=D.yyleng,l=D.yytext,V=D.yylineno,Dt=D.yylloc,Z>0&&Z--);break;case 2:if($=this.productions_[w[1]][1],X.$=T[T.length-$],X._$={first_line:i[i.length-($||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-($||1)].first_column,last_column:i[i.length-1].last_column},ke&&(X._$.range=[i[i.length-($||1)].range[0],i[i.length-1].range[1]]),At=this.performAction.apply(X,[l,K,V,U.yy,w[1],T,i].concat(De)),typeof At<"u")return At;$&&(a=a.slice(0,-1*$*2),T=T.slice(0,-1*$),i=i.slice(0,-1*$)),a.push(this.productions_[w[1]][0]),T.push(X.$),i.push(X._$),Vt=Q[a[a.length-2]][a[a.length-1]],a.push(Vt);break;case 3:return!0}}return!0},"parse")},be=(function(){var Y={EOF:1,parseError:c(function(h,a){if(this.yy.parser)this.yy.parser.parseError(h,a);else throw new Error(h)},"parseError"),setInput:c(function(o,h){return this.yy=h||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:c(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var h=o.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:c(function(o){var h=o.length,a=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===y.length?this.yylloc.first_column:0)+y[y.length-a.length].length-a[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:c(function(){return this._more=!0,this},"more"),reject:c(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:c(function(o){this.unput(this.match.slice(o))},"less"),pastInput:c(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:c(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:c(function(){var o=this.pastInput(),h=new Array(o.length+1).join("-");return o+this.upcomingInput()+` -`+h+"^"},"showPosition"),test_match:c(function(o,h){var a,y,T;if(this.options.backtrack_lexer&&(T={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(T.yylloc.range=this.yylloc.range.slice(0))),y=o[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],a=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var i in T)this[i]=T[i];return!1}return!1},"test_match"),next:c(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,h,a,y;this._more||(this.yytext="",this.match="");for(var T=this._currentRules(),i=0;ih[0].length)){if(h=a,y=i,this.options.backtrack_lexer){if(o=this.test_match(a,T[i]),o!==!1)return o;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(o=this.test_match(h,T[y]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:c(function(){var h=this.next();return h||this.lex()},"lex"),begin:c(function(h){this.conditionStack.push(h)},"begin"),popState:c(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:c(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:c(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:c(function(h){this.begin(h)},"pushState"),stateStackSize:c(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:c(function(h,a,y,T){var i=T;switch(y){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:break;case 9:break;case 10:return 5;case 11:break;case 12:break;case 13:break;case 14:break;case 15:return this.pushState("SCALE"),17;break;case 16:return 18;case 17:this.popState();break;case 18:return this.begin("acc_title"),33;break;case 19:return this.popState(),"acc_title_value";break;case 20:return this.begin("acc_descr"),35;break;case 21:return this.popState(),"acc_descr_value";break;case 22:this.begin("acc_descr_multiline");break;case 23:this.popState();break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;break;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 27:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 28:return this.popState(),43;break;case 29:return this.pushState("CLASS"),48;break;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 31:return this.popState(),50;break;case 32:return this.pushState("STYLE"),45;break;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 34:return this.popState(),47;break;case 35:return this.pushState("SCALE"),17;break;case 36:return 18;case 37:this.popState();break;case 38:this.pushState("STATE");break;case 39:return this.popState(),a.yytext=a.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),a.yytext=a.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),a.yytext=a.yytext.slice(0,-10).trim(),27;break;case 42:return this.popState(),a.yytext=a.yytext.slice(0,-8).trim(),25;break;case 43:return this.popState(),a.yytext=a.yytext.slice(0,-8).trim(),26;break;case 44:return this.popState(),a.yytext=a.yytext.slice(0,-10).trim(),27;break;case 45:return 51;case 46:return 52;case 47:return 53;case 48:return 54;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";break;case 51:return this.popState(),"ID";break;case 52:this.popState();break;case 53:return"STATE_DESCR";case 54:return 19;case 55:this.popState();break;case 56:return this.popState(),this.pushState("struct"),20;break;case 57:break;case 58:return this.popState(),21;break;case 59:break;case 60:return this.begin("NOTE"),29;break;case 61:return this.popState(),this.pushState("NOTE_ID"),59;break;case 62:return this.popState(),this.pushState("NOTE_ID"),60;break;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 65:break;case 66:return"NOTE_TEXT";case 67:return this.popState(),"ID";break;case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 69:return this.popState(),a.yytext=a.yytext.substr(2).trim(),31;break;case 70:return this.popState(),a.yytext=a.yytext.slice(0,-8).trim(),31;break;case 71:return 6;case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return a.yytext=a.yytext.trim(),14;break;case 77:return 15;case 78:return 28;case 79:return 58;case 80:return 5;case 81:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\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,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/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,/^(?:%%(?!\{)[^\n]*)/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;]|:[^:\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}};return Y})();Et.lexer=be;function _t(){this.yy={}}return c(_t,"Parser"),_t.prototype=Et,Et.Parser=_t,new _t})();Ct.parser=Ct;var Be=Ct;var B="state",j="root",tt="relation",ee="classDef",se="style",ie="applyClass",W="default",St="divider",Lt="fill:none",It="fill: #333";var Rt="markdown",Nt="normal",pt="rect",ft="rectWithTitle",re="stateStart",ne="stateEnd",vt="divider",Ot="roundedWithTitle",ae="note",oe="noteGroup",J="statediagram",xe="state",le=`${J}-${xe}`,wt="transition",Ce="note",Le="note-edge",ce=`${wt} ${Le}`,he=`${J}-${Ce}`,Ie="cluster",de=`${J}-${Ie}`,Re="cluster-alt",ue=`${J}-${Re}`,Gt="parent",Pt="note",Se="state",gt="----",pe=`${gt}${Pt}`,$t=`${gt}${Gt}`;var Yt=c((t,e="TB")=>{if(!t.doc)return e;let s=e;for(let n of t.doc)n.stmt==="dir"&&(s=n.value);return s},"getDir"),Ne=c(function(t,e){return e.db.getClasses()},"getClasses"),ve=c(async function(t,e,s,n){_.info("REF0:"),_.info("Drawing state diagram (v2)",e);let{securityLevel:r,state:d,layout:u}=v();n.db.extract(n.db.getRootDocV2());let f=n.db.getData(),S=Qt(e,r);f.type=n.type,f.layoutAlgorithm=u,f.nodeSpacing=d?.nodeSpacing||50,f.rankSpacing=d?.rankSpacing||50,f.markers=["barb"],f.diagramId=e,await Zt(f,S);let m=8;try{(typeof n.db.getLinks=="function"?n.db.getLinks():new Map).forEach((b,L)=>{let A=typeof L=="string"?L:typeof L?.id=="string"?L.id:"";if(!A){_.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(L));return}let p=S.node()?.querySelectorAll("g"),k;if(p?.forEach(R=>{R.textContent?.trim()===A&&(k=R)}),!k){_.warn("\u26A0\uFE0F Could not find node matching text:",A);return}let O=k.parentNode;if(!O){_.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",A);return}let I=document.createElementNS("http://www.w3.org/2000/svg","a"),G=b.url.replace(/^"+|"+$/g,"");if(I.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",G),I.setAttribute("target","_blank"),b.tooltip){let R=b.tooltip.replace(/^"+|"+$/g,"");I.setAttribute("title",R)}O.replaceChild(I,k),I.appendChild(k),_.info("\u{1F517} Wrapped node in tag for:",A,b.url)})}catch(E){_.error("\u274C Error injecting clickable links:",E)}qt.insertTitle(S,"statediagramTitleText",d?.titleTopMargin??25,n.db.getDiagramTitle()),te(S,m,J,d?.useMaxWidth??!0)},"draw"),qe={getClasses:Ne,draw:ve,getDir:Yt};var mt=new Map,F=0;function Bt(t="",e=0,s="",n=gt){let r=s!==null&&s.length>0?`${n}${s}`:"";return`${Se}-${t}${r}-${e}`}c(Bt,"stateDomId");var Oe=c((t,e,s,n,r,d,u,f)=>{_.trace("items",e),e.forEach(S=>{switch(S.stmt){case B:q(t,S,s,n,r,d,u,f);break;case W:q(t,S,s,n,r,d,u,f);break;case tt:{q(t,S.state1,s,n,r,d,u,f),q(t,S.state2,s,n,r,d,u,f);let m={id:"edge"+F,start:S.state1.id,end:S.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:Lt,labelStyle:"",label:M.sanitizeText(S.description??"",v()),arrowheadStyle:It,labelpos:"c",labelType:Rt,thickness:Nt,classes:wt,look:u};r.push(m),F++}break}})},"setupDoc"),fe=c((t,e="TB")=>{let s=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(s=n.value);return s},"getDir");function yt(t,e,s){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(r=>{let d=s.get(r);d&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...d.styles])}));let n=t.find(r=>r.id===e.id);n?Object.assign(n,e):t.push(e)}c(yt,"insertOrUpdateNode");function we(t){return t?.classes?.join(" ")??""}c(we,"getClassesFromDbInfo");function Ge(t){return t?.styles??[]}c(Ge,"getStylesFromDbInfo");var q=c((t,e,s,n,r,d,u,f)=>{let S=e.id,m=s.get(S),E=we(m),b=Ge(m),L=v();if(_.info("dataFetcher parsedItem",e,m,b),S!=="root"){let A=pt;e.start===!0?A=re:e.start===!1&&(A=ne),e.type!==W&&(A=e.type),mt.get(S)||mt.set(S,{id:S,shape:A,description:M.sanitizeText(S,L),cssClasses:`${E} ${le}`,cssStyles:b});let p=mt.get(S);e.description&&(Array.isArray(p.description)?(p.shape=ft,p.description.push(e.description)):p.description?.length&&p.description.length>0?(p.shape=ft,p.description===S?p.description=[e.description]:p.description=[p.description,e.description]):(p.shape=pt,p.description=e.description),p.description=M.sanitizeTextOrArray(p.description,L)),p.description?.length===1&&p.shape===ft&&(p.type==="group"?p.shape=Ot:p.shape=pt),!p.type&&e.doc&&(_.info("Setting cluster for XCX",S,fe(e)),p.type="group",p.isGroup=!0,p.dir=fe(e),p.shape=e.type===St?vt:Ot,p.cssClasses=`${p.cssClasses} ${de} ${d?ue:""}`);let k={labelStyle:"",shape:p.shape,label:p.description,cssClasses:p.cssClasses,cssCompiledStyles:[],cssStyles:p.cssStyles,id:S,dir:p.dir,domId:Bt(S,F),type:p.type,isGroup:p.type==="group",padding:8,rx:10,ry:10,look:u,labelType:"markdown"};if(k.shape===vt&&(k.label=""),t&&t.id!=="root"&&(_.trace("Setting node ",S," to be child of its parent ",t.id),k.parentId=t.id),k.centerLabel=!0,e.note){let O={labelStyle:"",shape:ae,label:e.note.text,labelType:"markdown",cssClasses:he,cssStyles:[],cssCompiledStyles:[],id:S+pe+"-"+F,domId:Bt(S,F,Pt),type:p.type,isGroup:p.type==="group",padding:L.flowchart?.padding,look:u,position:e.note.position},I=S+$t,G={labelStyle:"",shape:oe,label:e.note.text,cssClasses:p.cssClasses,cssStyles:[],id:S+$t,domId:Bt(S,F,Gt),type:"group",isGroup:!0,padding:16,look:u,position:e.note.position};F++,G.id=I,O.parentId=I,yt(n,G,f),yt(n,O,f),yt(n,k,f);let R=S,P=O.id;e.note.position==="left of"&&(R=O.id,P=S),r.push({id:R+"-"+P,start:R,end:P,arrowhead:"none",arrowTypeEnd:"",style:Lt,labelStyle:"",classes:ce,arrowheadStyle:It,labelpos:"c",labelType:Rt,thickness:Nt,look:u})}else yt(n,k,f)}e.doc&&(_.trace("Adding nodes children "),Oe(e,e.doc,s,n,r,!d,u,f))},"dataFetcher"),ye=c(()=>{mt.clear(),F=0},"reset");var C={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},Te=c(()=>new Map,"newClassesList"),Ee=c(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),Tt=c(t=>JSON.parse(JSON.stringify(t)),"clone"),_e=class{constructor(e){this.version=e;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=Te();this.documents={root:Ee()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.getAccTitle=jt;this.setAccTitle=Ht;this.getAccDescription=zt;this.setAccDescription=Wt;this.setDiagramTitle=Kt;this.getDiagramTitle=Xt;this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{c(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(e){this.clear(!0);for(let r of Array.isArray(e)?e:e.doc)switch(r.stmt){case B:this.addState(r.id.trim(),r.type,r.doc,r.description,r.note);break;case tt:this.addRelation(r.state1,r.state2,r.description);break;case ee:this.addStyleClass(r.id.trim(),r.classes);break;case se:this.handleStyleDef(r);break;case ie:this.setCssClass(r.id.trim(),r.styleClass);break;case"click":this.addLink(r.id,r.url,r.tooltip);break}let s=this.getStates(),n=v();ye(),q(void 0,this.getRootDocV2(),s,this.nodes,this.edges,!0,n.look,this.classes);for(let r of this.nodes)if(Array.isArray(r.label)){if(r.description=r.label.slice(1),r.isGroup&&r.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${r.id}]`);r.label=r.label[0]}}handleStyleDef(e){let s=e.id.trim().split(","),n=e.styleClass.split(",");for(let r of s){let d=this.getState(r);if(!d){let u=r.trim();this.addState(u),d=this.getState(u)}d&&(d.styles=n.map(u=>u.replace(/;/g,"")?.trim()))}}setRootDoc(e){_.info("Setting root doc",e),this.rootDoc=e,this.version===1?this.extract(e):this.extract(this.getRootDocV2())}docTranslator(e,s,n){if(s.stmt===tt){this.docTranslator(e,s.state1,!0),this.docTranslator(e,s.state2,!1);return}if(s.stmt===B&&(s.id===C.START_NODE?(s.id=e.id+(n?"_start":"_end"),s.start=n):s.id=s.id.trim()),s.stmt!==j&&s.stmt!==B||!s.doc)return;let r=[],d=[];for(let u of s.doc)if(u.type===St){let f=Tt(u);f.doc=Tt(d),r.push(f),d=[]}else d.push(u);if(r.length>0&&d.length>0){let u={stmt:B,id:Jt(),type:"divider",doc:Tt(d)};r.push(Tt(u)),s.doc=r}s.doc.forEach(u=>this.docTranslator(s,u,!0))}getRootDocV2(){return this.docTranslator({id:j,stmt:j},{id:j,stmt:j,doc:this.rootDoc},!0),{id:j,doc:this.rootDoc}}addState(e,s=W,n=void 0,r=void 0,d=void 0,u=void 0,f=void 0,S=void 0){let m=e?.trim();if(!this.currentDocument.states.has(m))_.info("Adding state ",m,r),this.currentDocument.states.set(m,{stmt:B,id:m,descriptions:[],type:s,doc:n,note:d,classes:[],styles:[],textStyles:[]});else{let E=this.currentDocument.states.get(m);if(!E)throw new Error(`State not found: ${m}`);E.doc||(E.doc=n),E.type||(E.type=s)}if(r&&(_.info("Setting state description",m,r),(Array.isArray(r)?r:[r]).forEach(b=>this.addDescription(m,b.trim()))),d){let E=this.currentDocument.states.get(m);if(!E)throw new Error(`State not found: ${m}`);E.note=d,E.note.text=M.sanitizeText(E.note.text,v())}u&&(_.info("Setting state classes",m,u),(Array.isArray(u)?u:[u]).forEach(b=>this.setCssClass(m,b.trim()))),f&&(_.info("Setting state styles",m,f),(Array.isArray(f)?f:[f]).forEach(b=>this.setStyle(m,b.trim()))),S&&(_.info("Setting state styles",m,f),(Array.isArray(S)?S:[S]).forEach(b=>this.setTextStyle(m,b.trim())))}clear(e){this.nodes=[],this.edges=[],this.documents={root:Ee()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=Te(),e||(this.links=new Map,Ut())}getState(e){return this.currentDocument.states.get(e)}getStates(){return this.currentDocument.states}logDocuments(){_.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(e,s,n){this.links.set(e,{url:s,tooltip:n}),_.warn("Adding link",e,s,n)}getLinks(){return this.links}startIdIfNeeded(e=""){return e===C.START_NODE?(this.startEndCount++,`${C.START_TYPE}${this.startEndCount}`):e}startTypeIfNeeded(e="",s=W){return e===C.START_NODE?C.START_TYPE:s}endIdIfNeeded(e=""){return e===C.END_NODE?(this.startEndCount++,`${C.END_TYPE}${this.startEndCount}`):e}endTypeIfNeeded(e="",s=W){return e===C.END_NODE?C.END_TYPE:s}addRelationObjs(e,s,n=""){let r=this.startIdIfNeeded(e.id.trim()),d=this.startTypeIfNeeded(e.id.trim(),e.type),u=this.startIdIfNeeded(s.id.trim()),f=this.startTypeIfNeeded(s.id.trim(),s.type);this.addState(r,d,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.addState(u,f,s.doc,s.description,s.note,s.classes,s.styles,s.textStyles),this.currentDocument.relations.push({id1:r,id2:u,relationTitle:M.sanitizeText(n,v())})}addRelation(e,s,n){if(typeof e=="object"&&typeof s=="object")this.addRelationObjs(e,s,n);else if(typeof e=="string"&&typeof s=="string"){let r=this.startIdIfNeeded(e.trim()),d=this.startTypeIfNeeded(e),u=this.endIdIfNeeded(s.trim()),f=this.endTypeIfNeeded(s);this.addState(r,d),this.addState(u,f),this.currentDocument.relations.push({id1:r,id2:u,relationTitle:n?M.sanitizeText(n,v()):void 0})}}addDescription(e,s){let n=this.currentDocument.states.get(e),r=s.startsWith(":")?s.replace(":","").trim():s;n?.descriptions?.push(M.sanitizeText(r,v()))}cleanupLabel(e){return e.startsWith(":")?e.slice(2).trim():e.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(e,s=""){this.classes.has(e)||this.classes.set(e,{id:e,styles:[],textStyles:[]});let n=this.classes.get(e);s&&n&&s.split(C.STYLECLASS_SEP).forEach(r=>{let d=r.replace(/([^;]*);/,"$1").trim();if(RegExp(C.COLOR_KEYWORD).exec(r)){let f=d.replace(C.FILL_KEYWORD,C.BG_FILL).replace(C.COLOR_KEYWORD,C.FILL_KEYWORD);n.textStyles.push(f)}n.styles.push(d)})}getClasses(){return this.classes}setCssClass(e,s){e.split(",").forEach(n=>{let r=this.getState(n);if(!r){let d=n.trim();this.addState(d),r=this.getState(d)}r?.classes?.push(s)})}setStyle(e,s){this.getState(e)?.styles?.push(s)}setTextStyle(e,s){this.getState(e)?.textStyles?.push(s)}getDirectionStatement(){return this.rootDoc.find(e=>e.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(e){let s=this.getDirectionStatement();s?s.value=e:this.rootDoc.unshift({stmt:"dir",value:e})}trimColon(e){return e.startsWith(":")?e.slice(1).trim():e.trim()}getData(){let e=v();return{nodes:this.nodes,edges:this.edges,other:{},config:e,direction:Yt(this.getRootDocV2())}}getConfig(){return v().state}};var $e=c(t=>` -defs #statediagram-barbEnd { - fill: ${t.transitionColor}; - stroke: ${t.transitionColor}; - } -g.stateGroup text { - fill: ${t.nodeBorder}; - stroke: none; - font-size: 10px; -} -g.stateGroup text { - fill: ${t.textColor}; - stroke: none; - font-size: 10px; - -} -g.stateGroup .state-title { - font-weight: bolder; - fill: ${t.stateLabelColor}; -} - -g.stateGroup rect { - fill: ${t.mainBkg}; - stroke: ${t.nodeBorder}; -} - -g.stateGroup line { - stroke: ${t.lineColor}; - stroke-width: 1; -} - -.transition { - stroke: ${t.transitionColor}; - stroke-width: 1; - fill: none; -} - -.stateGroup .composit { - fill: ${t.background}; - border-bottom: 1px -} - -.stateGroup .alt-composit { - fill: #e0e0e0; - border-bottom: 1px -} - -.state-note { - stroke: ${t.noteBorderColor}; - fill: ${t.noteBkgColor}; - - text { - fill: ${t.noteTextColor}; - stroke: none; - font-size: 10px; - } -} - -.stateLabel .box { - stroke: none; - stroke-width: 0; - fill: ${t.mainBkg}; - opacity: 0.5; -} - -.edgeLabel .label rect { - fill: ${t.labelBackgroundColor}; - opacity: 0.5; -} -.edgeLabel { - background-color: ${t.edgeLabelBackground}; - p { - background-color: ${t.edgeLabelBackground}; - } - rect { - opacity: 0.5; - background-color: ${t.edgeLabelBackground}; - fill: ${t.edgeLabelBackground}; - } - text-align: center; -} -.edgeLabel .label text { - fill: ${t.transitionLabelColor||t.tertiaryTextColor}; -} -.label div .edgeLabel { - color: ${t.transitionLabelColor||t.tertiaryTextColor}; -} - -.stateLabel text { - fill: ${t.stateLabelColor}; - font-size: 10px; - font-weight: bold; -} - -.node circle.state-start { - fill: ${t.specialStateColor}; - stroke: ${t.specialStateColor}; -} - -.node .fork-join { - fill: ${t.specialStateColor}; - stroke: ${t.specialStateColor}; -} - -.node circle.state-end { - fill: ${t.innerEndBackground}; - stroke: ${t.background}; - stroke-width: 1.5 -} -.end-state-inner { - fill: ${t.compositeBackground||t.background}; - // stroke: ${t.background}; - stroke-width: 1.5 -} - -.node rect { - fill: ${t.stateBkg||t.mainBkg}; - stroke: ${t.stateBorder||t.nodeBorder}; - stroke-width: 1px; -} -.node polygon { - fill: ${t.mainBkg}; - stroke: ${t.stateBorder||t.nodeBorder};; - stroke-width: 1px; -} -#statediagram-barbEnd { - fill: ${t.lineColor}; -} - -.statediagram-cluster rect { - fill: ${t.compositeTitleBackground}; - stroke: ${t.stateBorder||t.nodeBorder}; - stroke-width: 1px; -} - -.cluster-label, .nodeLabel { - color: ${t.stateLabelColor}; - // line-height: 1; -} - -.statediagram-cluster rect.outer { - rx: 5px; - ry: 5px; -} -.statediagram-state .divider { - stroke: ${t.stateBorder||t.nodeBorder}; -} - -.statediagram-state .title-state { - rx: 5px; - ry: 5px; -} -.statediagram-cluster.statediagram-cluster .inner { - fill: ${t.compositeBackground||t.background}; -} -.statediagram-cluster.statediagram-cluster-alt .inner { - fill: ${t.altBackground?t.altBackground:"#efefef"}; -} - -.statediagram-cluster .inner { - rx:0; - ry:0; -} - -.statediagram-state rect.basic { - rx: 5px; - ry: 5px; -} -.statediagram-state rect.divider { - stroke-dasharray: 10,10; - fill: ${t.altBackground?t.altBackground:"#efefef"}; -} - -.note-edge { - stroke-dasharray: 5; -} - -.statediagram-note rect { - fill: ${t.noteBkgColor}; - stroke: ${t.noteBorderColor}; - stroke-width: 1px; - rx: 0; - ry: 0; -} -.statediagram-note rect { - fill: ${t.noteBkgColor}; - stroke: ${t.noteBorderColor}; - stroke-width: 1px; - rx: 0; - ry: 0; -} - -.statediagram-note text { - fill: ${t.noteTextColor}; -} - -.statediagram-note .nodeLabel { - color: ${t.noteTextColor}; -} -.statediagram .edgeLabel { - color: red; // ${t.noteTextColor}; -} - -#dependencyStart, #dependencyEnd { - fill: ${t.lineColor}; - stroke: ${t.lineColor}; - stroke-width: 1; -} - -.statediagramTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${t.textColor}; -} -`,"getStyles"),gs=$e;export{Be as a,qe as b,_e as c,gs as d}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-33NP3AWU.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-33NP3AWU.mjs.map deleted file mode 100644 index 9d25821..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-33NP3AWU.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/state/parser/stateDiagram.jison", "../../../src/diagrams/state/stateCommon.ts", "../../../src/diagrams/state/stateRenderer-v3-unified.ts", "../../../src/diagrams/state/dataFetcher.ts", "../../../src/diagrams/state/stateDb.ts", "../../../src/diagrams/state/styles.js"], - "sourcesContent": ["/* 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,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,16],$V7=[1,17],$V8=[1,18],$V9=[1,19],$Va=[1,33],$Vb=[1,20],$Vc=[1,21],$Vd=[1,22],$Ve=[1,23],$Vf=[1,24],$Vg=[1,26],$Vh=[1,27],$Vi=[1,28],$Vj=[1,29],$Vk=[1,30],$Vl=[1,31],$Vm=[1,32],$Vn=[1,35],$Vo=[1,36],$Vp=[1,37],$Vq=[1,38],$Vr=[1,34],$Vs=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],$Vt=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],$Vu=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"classDefStatement\":10,\"styleStatement\":11,\"cssClassStatement\":12,\"idStatement\":13,\"DESCR\":14,\"-->\":15,\"HIDE_EMPTY\":16,\"scale\":17,\"WIDTH\":18,\"COMPOSIT_STATE\":19,\"STRUCT_START\":20,\"STRUCT_STOP\":21,\"STATE_DESCR\":22,\"AS\":23,\"ID\":24,\"FORK\":25,\"JOIN\":26,\"CHOICE\":27,\"CONCURRENT\":28,\"note\":29,\"notePosition\":30,\"NOTE_TEXT\":31,\"direction\":32,\"acc_title\":33,\"acc_title_value\":34,\"acc_descr\":35,\"acc_descr_value\":36,\"acc_descr_multiline_value\":37,\"CLICK\":38,\"STRING\":39,\"HREF\":40,\"classDef\":41,\"CLASSDEF_ID\":42,\"CLASSDEF_STYLEOPTS\":43,\"DEFAULT\":44,\"style\":45,\"STYLE_IDS\":46,\"STYLEDEF_STYLEOPTS\":47,\"class\":48,\"CLASSENTITY_IDS\":49,\"STYLECLASS\":50,\"direction_tb\":51,\"direction_bt\":52,\"direction_rl\":53,\"direction_lr\":54,\"eol\":55,\";\":56,\"EDGE_STATE\":57,\"STYLE_SEPARATOR\":58,\"left_of\":59,\"right_of\":60,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",6:\"SD\",14:\"DESCR\",15:\"-->\",16:\"HIDE_EMPTY\",17:\"scale\",18:\"WIDTH\",19:\"COMPOSIT_STATE\",20:\"STRUCT_START\",21:\"STRUCT_STOP\",22:\"STATE_DESCR\",23:\"AS\",24:\"ID\",25:\"FORK\",26:\"JOIN\",27:\"CHOICE\",28:\"CONCURRENT\",29:\"note\",31:\"NOTE_TEXT\",33:\"acc_title\",34:\"acc_title_value\",35:\"acc_descr\",36:\"acc_descr_value\",37:\"acc_descr_multiline_value\",38:\"CLICK\",39:\"STRING\",40:\"HREF\",41:\"classDef\",42:\"CLASSDEF_ID\",43:\"CLASSDEF_STYLEOPTS\",44:\"DEFAULT\",45:\"style\",46:\"STYLE_IDS\",47:\"STYLEDEF_STYLEOPTS\",48:\"class\",49:\"CLASSENTITY_IDS\",50:\"STYLECLASS\",51:\"direction_tb\",52:\"direction_bt\",53:\"direction_rl\",54:\"direction_lr\",56:\";\",57:\"EDGE_STATE\",58:\"STYLE_SEPARATOR\",59:\"left_of\",60:\"right_of\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n /* console.log('--> Root document', $$[$0]); */ yy.setRootDoc($$[$0]); return $$[$0]; \nbreak;\ncase 4:\n /*console.log('empty document'); */ this.$ = [] \nbreak;\ncase 5:\n\n if($$[$0] !='nl'){\n /* console.log(' document: 1: ', $$[$0-1], ' pushing 2: ', $$[$0]); */\n $$[$0-1].push($$[$0]); this.$ = $$[$0-1]\n }\n /* console.log('Got document',$$[$0-1], $$[$0]); */\n \nbreak;\ncase 6: case 7:\n this.$ = $$[$0] \nbreak;\ncase 8:\n this.$='nl';\nbreak;\ncase 12:\n /* console.log('got id', $$[$0]); */\n this.$=$$[$0];\n\t \nbreak;\ncase 13:\n\n const stateStmt = $$[$0-1];\n stateStmt.description = yy.trimColon($$[$0]);\n this.$ = stateStmt;\n\t \nbreak;\ncase 14:\n\n /* console.info('got ids: 1: ', $$[$0-2], ' 2:', $$[$0-1],' 3: ', $$[$0]); */\n // console.log(' idStatement --> idStatement : state1 =', $$[$0-2], ' state2 =', $$[$0]);\n this.$={ stmt: 'relation', state1: $$[$0-2], state2: $$[$0]};\n \nbreak;\ncase 15:\n\n const relDescription = yy.trimColon($$[$0]);\n /* console.log(' idStatement --> idStatement DESCR : state1 =', $$[$0-3], ' state2stmt =', $$[$0-1], ' description: ', relDescription); */\n this.$={ stmt: 'relation', state1: $$[$0-3], state2: $$[$0-1], description: relDescription};\n \nbreak;\ncase 19:\n\n // console.log('Adding document for state without id ', $$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 21:\n\n // console.log('state with id ', $$[$0-3],' document = ', $$[$0-1], );\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 23:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 24:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\n \nbreak;\ncase 25:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 26:\n\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 29:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 30: case 31:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 32:\n\n this.$ = {\n stmt: \"click\",\n id: $$[$0-3],\n url: $$[$0-2],\n tooltip: $$[$0-1]\n };\n \nbreak;\ncase 33:\n\n this.$ = {\n stmt: \"click\",\n id: $$[$0-3],\n url: $$[$0-1],\n tooltip: \"\"\n };\n \nbreak;\ncase 34: case 35:\n\n this.$ = { stmt: 'classDef', id: $$[$0-1].trim(), classes: $$[$0].trim() };\n \nbreak;\ncase 36:\n\n this.$ = { stmt: 'style', id: $$[$0-1].trim(), styleClass: $$[$0].trim() };\n \nbreak;\ncase 37:\n\n //console.log('apply class: id(s): ',$$[$0-1], ' style class: ', $$[$0]);\n this.$={ stmt: 'applyClass', id: $$[$0-1].trim(), styleClass: $$[$0].trim() };\n \nbreak;\ncase 38:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 39:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 40:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 41:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 44: case 45:\n /* console.log('idStatement id: ', $$[$0]); */\n this.$={ stmt: 'state', id: $$[$0].trim(), type: 'default', description: '' };\n \nbreak;\ncase 46:\n /*console.log('idStatement ID STYLE_SEPARATOR ID'); */\n this.$={ stmt: 'state', id: $$[$0-2].trim(), classes: [$$[$0].trim()], type: 'default', description: '' };\n \nbreak;\ncase 47:\n /*console.log('idStatement EDGE_STATE STYLE_SEPARATOR ID'); */\n this.$={ stmt: 'state', id: $$[$0-2].trim(), classes: [$$[$0].trim()], type: 'default', description: '' };\n \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:12,11:13,12:14,13:15,16:$V6,17:$V7,19:$V8,22:$V9,24:$Va,25:$Vb,26:$Vc,27:$Vd,28:$Ve,29:$Vf,32:25,33:$Vg,35:$Vh,37:$Vi,38:$Vj,41:$Vk,45:$Vl,48:$Vm,51:$Vn,52:$Vo,53:$Vp,54:$Vq,57:$Vr},o($Vs,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:$V6,17:$V7,19:$V8,22:$V9,24:$Va,25:$Vb,26:$Vc,27:$Vd,28:$Ve,29:$Vf,32:25,33:$Vg,35:$Vh,37:$Vi,38:$Vj,41:$Vk,45:$Vl,48:$Vm,51:$Vn,52:$Vo,53:$Vp,54:$Vq,57:$Vr},o($Vs,[2,7]),o($Vs,[2,8]),o($Vs,[2,9]),o($Vs,[2,10]),o($Vs,[2,11]),o($Vs,[2,12],{14:[1,40],15:[1,41]}),o($Vs,[2,16]),{18:[1,42]},o($Vs,[2,18],{20:[1,43]}),{23:[1,44]},o($Vs,[2,22]),o($Vs,[2,23]),o($Vs,[2,24]),o($Vs,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},o($Vs,[2,28]),{34:[1,49]},{36:[1,50]},o($Vs,[2,31]),{13:51,24:$Va,57:$Vr},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},o($Vt,[2,44],{58:[1,56]}),o($Vt,[2,45],{58:[1,57]}),o($Vs,[2,38]),o($Vs,[2,39]),o($Vs,[2,40]),o($Vs,[2,41]),o($Vs,[2,6]),o($Vs,[2,13]),{13:58,24:$Va,57:$Vr},o($Vs,[2,17]),o($Vu,$V3,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},o($Vs,[2,29]),o($Vs,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},o($Vs,[2,14],{14:[1,71]}),{4:$V4,5:$V5,8:8,9:10,10:12,11:13,12:14,13:15,16:$V6,17:$V7,19:$V8,21:[1,72],22:$V9,24:$Va,25:$Vb,26:$Vc,27:$Vd,28:$Ve,29:$Vf,32:25,33:$Vg,35:$Vh,37:$Vi,38:$Vj,41:$Vk,45:$Vl,48:$Vm,51:$Vn,52:$Vo,53:$Vp,54:$Vq,57:$Vr},o($Vs,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},o($Vs,[2,34]),o($Vs,[2,35]),o($Vs,[2,36]),o($Vs,[2,37]),o($Vt,[2,46]),o($Vt,[2,47]),o($Vs,[2,15]),o($Vs,[2,19]),o($Vu,$V3,{7:78}),o($Vs,[2,26]),o($Vs,[2,27]),{5:[1,79]},{5:[1,80]},{4:$V4,5:$V5,8:8,9:10,10:12,11:13,12:14,13:15,16:$V6,17:$V7,19:$V8,21:[1,81],22:$V9,24:$Va,25:$Vb,26:$Vc,27:$Vd,28:$Ve,29:$Vf,32:25,33:$Vg,35:$Vh,37:$Vi,38:$Vj,41:$Vk,45:$Vl,48:$Vm,51:$Vn,52:$Vo,53:$Vp,54:$Vq,57:$Vr},o($Vs,[2,32]),o($Vs,[2,33]),o($Vs,[2,21])],\ndefaultActions: {5:[2,1],6:[2,2],47:[2,48],48:[2,49]},\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\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 38;\nbreak;\ncase 1:return 40;\nbreak;\ncase 2:return 39; \nbreak;\ncase 3:return 44;\nbreak;\ncase 4:return 51;\nbreak;\ncase 5:return 52;\nbreak;\ncase 6:return 53;\nbreak;\ncase 7:return 54;\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */{ /*console.log('Crap after close');*/ }\nbreak;\ncase 10:return 5;\nbreak;\ncase 11:/* skip all whitespace */\nbreak;\ncase 12:/* skip same-line whitespace */\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 17; \nbreak;\ncase 16:return 18;\nbreak;\ncase 17: this.popState(); \nbreak;\ncase 18: this.begin(\"acc_title\");return 33; \nbreak;\ncase 19: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 20: this.begin(\"acc_descr\");return 35; \nbreak;\ncase 21: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 22: this.begin(\"acc_descr_multiline\"); \nbreak;\ncase 23: this.popState(); \nbreak;\ncase 24:return \"acc_descr_multiline_value\";\nbreak;\ncase 25: this.pushState('CLASSDEF'); return 41; \nbreak;\ncase 26: this.popState(); this.pushState('CLASSDEFID'); return 'DEFAULT_CLASSDEF_ID' \nbreak;\ncase 27: this.popState(); this.pushState('CLASSDEFID'); return 42 \nbreak;\ncase 28: this.popState(); return 43 \nbreak;\ncase 29: this.pushState('CLASS'); return 48; \nbreak;\ncase 30: this.popState(); this.pushState('CLASS_STYLE'); return 49 \nbreak;\ncase 31: this.popState(); return 50 \nbreak;\ncase 32: this.pushState('STYLE'); return 45; \nbreak;\ncase 33: this.popState(); this.pushState('STYLEDEF_STYLES'); return 46 \nbreak;\ncase 34: this.popState(); return 47 \nbreak;\ncase 35: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 17; \nbreak;\ncase 36:return 18;\nbreak;\ncase 37:this.popState();\nbreak;\ncase 38: /* console.log('Starting STATE '); */ this.pushState('STATE'); \nbreak;\ncase 39:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 25;\nbreak;\ncase 40:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 26;\nbreak;\ncase 41:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 27;\nbreak;\ncase 42:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 25;\nbreak;\ncase 43:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 26;\nbreak;\ncase 44:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 27;\nbreak;\ncase 45: return 51;\nbreak;\ncase 46: return 52;\nbreak;\ncase 47: return 53;\nbreak;\ncase 48: return 54;\nbreak;\ncase 49: /* console.log('Starting STATE_STRING'); */ this.pushState(\"STATE_STRING\"); \nbreak;\ncase 50: this.pushState('STATE_ID'); /* console.log('pushState(STATE_ID)'); */ return \"AS\"; \nbreak;\ncase 51: this.popState(); /* console.log('STATE_ID', yy_.yytext); */ return \"ID\"; \nbreak;\ncase 52: this.popState(); \nbreak;\ncase 53: /* console.log('Long description:', yy_.yytext); */ return \"STATE_DESCR\"; \nbreak;\ncase 54: /* console.log('COMPOSIT_STATE', yy_.yytext); */ return 19; \nbreak;\ncase 55: this.popState(); \nbreak;\ncase 56: this.popState(); this.pushState('struct'); /* console.log('begin struct', yy_.yytext); */ return 20; \nbreak;\ncase 57:/* skip comments inside state*/\nbreak;\ncase 58: /*console.log('Ending struct');*/ this.popState(); return 21;\nbreak;\ncase 59:/* nothing */\nbreak;\ncase 60: this.begin('NOTE'); return 29; \nbreak;\ncase 61: this.popState(); this.pushState('NOTE_ID'); return 59; \nbreak;\ncase 62: this.popState(); this.pushState('NOTE_ID'); return 60; \nbreak;\ncase 63: this.popState(); this.pushState('FLOATING_NOTE'); \nbreak;\ncase 64: this.popState(); this.pushState('FLOATING_NOTE_ID'); return \"AS\"; \nbreak;\ncase 65:/**/\nbreak;\ncase 66: /* console.log('Floating note text: ', yy_.yytext); */ return \"NOTE_TEXT\"; \nbreak;\ncase 67: this.popState(); /* console.log('Floating note ID', yy_.yytext);*/ return \"ID\"; \nbreak;\ncase 68: this.popState(); this.pushState('NOTE_TEXT'); /*console.log('Got ID for note', yy_.yytext);*/ return 24; \nbreak;\ncase 69: this.popState(); /* console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim(); return 31; \nbreak;\ncase 70: this.popState(); /* console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim(); return 31; \nbreak;\ncase 71: /* console.log('Got state diagram', yy_.yytext,'#'); */ return 6; \nbreak;\ncase 72: /* console.log('Got state diagram', yy_.yytext,'#'); */ return 6; \nbreak;\ncase 73: /* console.log('HIDE_EMPTY', yy_.yytext,'#'); */ return 16; \nbreak;\ncase 74: /* console.log('EDGE_STATE=',yy_.yytext); */ return 57; \nbreak;\ncase 75: /* console.log('=>ID=',yy_.yytext); */ return 24; \nbreak;\ncase 76: yy_.yytext = yy_.yytext.trim(); /* console.log('Descr = ', yy_.yytext); */ return 14; \nbreak;\ncase 77:return 15;\nbreak;\ncase 78:return 28;\nbreak;\ncase 79:return 58;\nbreak;\ncase 80:return 5;\nbreak;\ncase 81:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:click\\b)/i,/^(?:href\\b)/i,/^(?:\"[^\"]*\")/i,/^(?:default\\b)/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\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,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:classDef\\s+)/i,/^(?:DEFAULT\\s+)/i,/^(?:\\w+\\s+)/i,/^(?:[^\\n]*)/i,/^(?:class\\s+)/i,/^(?:(\\w+)+((,\\s*\\w+)*))/i,/^(?:[^\\n]*)/i,/^(?:style\\s+)/i,/^(?:[\\w,]+\\s+)/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,/^(?:%%(?!\\{)[^\\n]*)/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;]|:[^:\\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[12,13],\"inclusive\":false},\"struct\":{\"rules\":[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[67],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[64,65,66],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[69,70],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[68],\"inclusive\":false},\"NOTE\":{\"rules\":[61,62,63],\"inclusive\":false},\"STYLEDEF_STYLEOPTS\":{\"rules\":[],\"inclusive\":false},\"STYLEDEF_STYLES\":{\"rules\":[34],\"inclusive\":false},\"STYLE_IDS\":{\"rules\":[],\"inclusive\":false},\"STYLE\":{\"rules\":[33],\"inclusive\":false},\"CLASS_STYLE\":{\"rules\":[31],\"inclusive\":false},\"CLASS\":{\"rules\":[30],\"inclusive\":false},\"CLASSDEFID\":{\"rules\":[28],\"inclusive\":false},\"CLASSDEF\":{\"rules\":[26,27],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[23,24],\"inclusive\":false},\"acc_descr\":{\"rules\":[21],\"inclusive\":false},\"acc_title\":{\"rules\":[19],\"inclusive\":false},\"SCALE\":{\"rules\":[16,17,36,37],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[51],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[52,53],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[12,13,39,40,41,42,43,44,49,50,54,55,56],\"inclusive\":false},\"ID\":{\"rules\":[12,13],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "/**\n * Constants common to all State Diagram code\n */\n\n// default diagram direction\nexport const DEFAULT_DIAGRAM_DIRECTION = 'TB';\n\n// default direction for any nested documents (composites)\nexport const DEFAULT_NESTED_DOC_DIR = 'TB';\n\n// parsed statement type for a direction\nexport const STMT_DIRECTION = 'dir';\n\n// parsed statement type for a state\nexport const STMT_STATE = 'state';\n\n// parsed statement type for a root\nexport const STMT_ROOT = 'root';\n\n// parsed statement type for a relation\nexport const STMT_RELATION = 'relation';\n// parsed statement type for a classDef\nexport const STMT_CLASSDEF = 'classDef';\nexport const STMT_STYLEDEF = 'style';\n// parsed statement type for applyClass\nexport const STMT_APPLYCLASS = 'applyClass';\n\nexport const DEFAULT_STATE_TYPE = 'default';\nexport const DIVIDER_TYPE = 'divider';\n\n// Graph edge settings\nexport const G_EDGE_STYLE = 'fill:none';\nexport const G_EDGE_ARROWHEADSTYLE = 'fill: #333';\nexport const G_EDGE_LABELPOS = 'c';\nexport const G_EDGE_LABELTYPE = 'markdown';\nexport const G_EDGE_THICKNESS = 'normal';\n\nexport const SHAPE_STATE = 'rect';\nexport const SHAPE_STATE_WITH_DESC = 'rectWithTitle';\nexport const SHAPE_START = 'stateStart';\nexport const SHAPE_END = 'stateEnd';\nexport const SHAPE_DIVIDER = 'divider';\nexport const SHAPE_GROUP = 'roundedWithTitle';\nexport const SHAPE_NOTE = 'note';\nexport const SHAPE_NOTEGROUP = 'noteGroup';\n\n// CSS classes\nexport const CSS_DIAGRAM = 'statediagram';\nexport const CSS_STATE = 'state';\nexport const CSS_DIAGRAM_STATE = `${CSS_DIAGRAM}-${CSS_STATE}`;\nexport const CSS_EDGE = 'transition';\nexport const CSS_NOTE = 'note';\nexport const CSS_NOTE_EDGE = 'note-edge';\nexport const CSS_EDGE_NOTE_EDGE = `${CSS_EDGE} ${CSS_NOTE_EDGE}`;\nexport const CSS_DIAGRAM_NOTE = `${CSS_DIAGRAM}-${CSS_NOTE}`;\nexport const CSS_CLUSTER = 'cluster';\nexport const CSS_DIAGRAM_CLUSTER = `${CSS_DIAGRAM}-${CSS_CLUSTER}`;\nexport const CSS_CLUSTER_ALT = 'cluster-alt';\nexport const CSS_DIAGRAM_CLUSTER_ALT = `${CSS_DIAGRAM}-${CSS_CLUSTER_ALT}`;\n\nexport const PARENT = 'parent';\nexport const NOTE = 'note';\nexport const DOMID_STATE = 'state';\nexport const DOMID_TYPE_SPACER = '----';\nexport const NOTE_ID = `${DOMID_TYPE_SPACER}${NOTE}`;\nexport const PARENT_ID = `${DOMID_TYPE_SPACER}${PARENT}`;\n// --------------------------------------\n\nexport default {\n DEFAULT_DIAGRAM_DIRECTION,\n DEFAULT_NESTED_DOC_DIR,\n STMT_STATE,\n STMT_RELATION,\n STMT_CLASSDEF,\n STMT_STYLEDEF,\n STMT_APPLYCLASS,\n DEFAULT_STATE_TYPE,\n DIVIDER_TYPE,\n G_EDGE_STYLE,\n G_EDGE_ARROWHEADSTYLE,\n G_EDGE_LABELPOS,\n G_EDGE_LABELTYPE,\n G_EDGE_THICKNESS,\n CSS_EDGE,\n CSS_DIAGRAM,\n SHAPE_STATE,\n SHAPE_STATE_WITH_DESC,\n SHAPE_START,\n SHAPE_END,\n SHAPE_DIVIDER,\n SHAPE_GROUP,\n SHAPE_NOTE,\n SHAPE_NOTEGROUP,\n CSS_STATE,\n CSS_DIAGRAM_STATE,\n CSS_NOTE,\n CSS_NOTE_EDGE,\n CSS_EDGE_NOTE_EDGE,\n CSS_DIAGRAM_NOTE,\n CSS_CLUSTER,\n CSS_DIAGRAM_CLUSTER,\n CSS_CLUSTER_ALT,\n CSS_DIAGRAM_CLUSTER_ALT,\n PARENT,\n NOTE,\n DOMID_STATE,\n DOMID_TYPE_SPACER,\n NOTE_ID,\n PARENT_ID,\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\nimport { CSS_DIAGRAM, DEFAULT_NESTED_DOC_DIR } from './stateCommon.js';\n\n/**\n * Get the direction from the statement items.\n * Look through all of the documents (docs) in the parsedItems\n * Because is a _document_ direction, the default direction is not necessarily the same as the overall default _diagram_ direction.\n * @param parsedItem - the parsed statement item to look through\n * @param defaultDir - the direction to use if none is found\n * @returns The direction to use\n */\nexport const getDir = (parsedItem: any, defaultDir = DEFAULT_NESTED_DOC_DIR) => {\n if (!parsedItem.doc) {\n return defaultDir;\n }\n\n let dir = defaultDir;\n\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === 'dir') {\n dir = parsedItemDoc.value;\n }\n }\n\n return dir;\n};\n\nexport const getClasses = function (\n text: string,\n diagramObj: any\n): Map {\n return diagramObj.db.getClasses();\n};\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing state diagram (v2)', id);\n const { securityLevel, state: conf, layout } = getConfig();\n // Extracting the data from the parsed structure into a more usable form\n // Not related to the refactoring, but this is the first step in the rendering process\n diag.db.extract(diag.db.getRootDocV2());\n\n //const DIR = getDir(diag.db.getRootDocV2());\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n const data4Layout = diag.db.getData() as LayoutData;\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, securityLevel);\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = layout;\n\n // TODO: Should we move these two to baseConfig? These types are not there in StateConfig.\n\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n data4Layout.markers = ['barb'];\n data4Layout.diagramId = id;\n // console.log('REF1:', data4Layout);\n await render(data4Layout, svg);\n const padding = 8;\n\n // Inject clickable links after nodes are rendered\n try {\n const links: Map =\n typeof diag.db.getLinks === 'function' ? diag.db.getLinks() : new Map();\n\n type StateKey = string | { id: string };\n\n links.forEach((linkInfo, key: StateKey) => {\n const stateId = typeof key === 'string' ? key : typeof key?.id === 'string' ? key.id : '';\n\n if (!stateId) {\n log.warn('\u26A0\uFE0F Invalid or missing stateId from key:', JSON.stringify(key));\n return;\n }\n\n const allNodes = svg.node()?.querySelectorAll('g');\n let matchedElem: SVGGElement | undefined;\n\n allNodes?.forEach((g: SVGGElement) => {\n const text = g.textContent?.trim();\n if (text === stateId) {\n matchedElem = g;\n }\n });\n\n if (!matchedElem) {\n log.warn('\u26A0\uFE0F Could not find node matching text:', stateId);\n return;\n }\n\n const parent = matchedElem.parentNode;\n if (!parent) {\n log.warn('\u26A0\uFE0F Node has no parent, cannot wrap:', stateId);\n return;\n }\n\n const a = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n const cleanedUrl = linkInfo.url.replace(/^\"+|\"+$/g, ''); // remove leading/trailing quotes\n a.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', cleanedUrl);\n a.setAttribute('target', '_blank');\n if (linkInfo.tooltip) {\n const tooltip = linkInfo.tooltip.replace(/^\"+|\"+$/g, '');\n a.setAttribute('title', tooltip);\n }\n\n parent.replaceChild(a, matchedElem);\n a.appendChild(matchedElem);\n\n log.info('\uD83D\uDD17 Wrapped node in tag for:', stateId, linkInfo.url);\n });\n } catch (err) {\n log.error('\u274C Error injecting clickable links:', err);\n }\n\n utils.insertTitle(\n svg,\n 'statediagramTitleText',\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n setupViewPortForSVG(svg, padding, CSS_DIAGRAM, conf?.useMaxWidth ?? true);\n};\n\nexport default {\n getClasses,\n draw,\n getDir,\n};\n", "import type { MermaidConfig } from '../../config.type.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport common from '../common/common.js';\nimport {\n CSS_DIAGRAM_CLUSTER,\n CSS_DIAGRAM_CLUSTER_ALT,\n CSS_DIAGRAM_NOTE,\n CSS_DIAGRAM_STATE,\n CSS_EDGE,\n CSS_EDGE_NOTE_EDGE,\n DEFAULT_NESTED_DOC_DIR,\n DEFAULT_STATE_TYPE,\n DIVIDER_TYPE,\n DOMID_STATE,\n DOMID_TYPE_SPACER,\n G_EDGE_ARROWHEADSTYLE,\n G_EDGE_LABELPOS,\n G_EDGE_LABELTYPE,\n G_EDGE_STYLE,\n G_EDGE_THICKNESS,\n NOTE,\n NOTE_ID,\n PARENT,\n PARENT_ID,\n SHAPE_DIVIDER,\n SHAPE_END,\n SHAPE_GROUP,\n SHAPE_NOTE,\n SHAPE_NOTEGROUP,\n SHAPE_START,\n SHAPE_STATE,\n SHAPE_STATE_WITH_DESC,\n STMT_RELATION,\n STMT_STATE,\n} from './stateCommon.js';\nimport type { Edge, NodeData, StateStmt, Stmt, StyleClass } from './stateDb.js';\n\n// List of nodes created from the parsed diagram statement items\nconst nodeDb = new Map();\n\nlet graphItemCount = 0; // used to construct ids, etc.\n\n/**\n * Create a standard string for the dom ID of an item.\n * If a type is given, insert that before the counter, preceded by the type spacer\n *\n */\nexport function stateDomId(\n itemId = '',\n counter = 0,\n type: string | null = '',\n typeSpacer = DOMID_TYPE_SPACER\n) {\n const typeStr = type !== null && type.length > 0 ? `${typeSpacer}${type}` : '';\n return `${DOMID_STATE}-${itemId}${typeStr}-${counter}`;\n}\n\nconst setupDoc = (\n parentParsedItem: StateStmt | undefined,\n doc: Stmt[],\n diagramStates: Map,\n nodes: NodeData[],\n edges: Edge[],\n altFlag: boolean,\n look: MermaidConfig['look'],\n classes: Map\n) => {\n // graphItemCount = 0;\n log.trace('items', doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n dataFetcher(parentParsedItem, item, diagramStates, nodes, edges, altFlag, look, classes);\n break;\n case DEFAULT_STATE_TYPE:\n dataFetcher(parentParsedItem, item, diagramStates, nodes, edges, altFlag, look, classes);\n break;\n case STMT_RELATION:\n {\n dataFetcher(\n parentParsedItem,\n item.state1,\n diagramStates,\n nodes,\n edges,\n altFlag,\n look,\n classes\n );\n dataFetcher(\n parentParsedItem,\n item.state2,\n diagramStates,\n nodes,\n edges,\n altFlag,\n look,\n classes\n );\n const edgeData = {\n id: 'edge' + graphItemCount,\n start: item.state1.id,\n end: item.state2.id,\n arrowhead: 'normal',\n arrowTypeEnd: 'arrow_barb',\n style: G_EDGE_STYLE,\n labelStyle: '',\n label: common.sanitizeText(item.description ?? '', getConfig()),\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n classes: CSS_EDGE,\n look,\n };\n edges.push(edgeData);\n graphItemCount++;\n }\n break;\n }\n });\n};\n\n/**\n * Get the direction from the statement items.\n * Look through all of the documents (docs) in the parsedItems\n * Because is a _document_ direction, the default direction is not necessarily the same as the overall default _diagram_ direction.\n * @param parsedItem - the parsed statement item to look through\n * @param defaultDir - the direction to use if none is found\n */\nconst getDir = (parsedItem: { doc?: Stmt[] }, defaultDir = DEFAULT_NESTED_DOC_DIR) => {\n let dir = defaultDir;\n if (parsedItem.doc) {\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === 'dir') {\n dir = parsedItemDoc.value;\n }\n }\n }\n return dir;\n};\n\nfunction insertOrUpdateNode(\n nodes: NodeData[],\n nodeData: NodeData,\n classes: Map\n) {\n if (!nodeData.id || nodeData.id === '' || nodeData.id === '') {\n return;\n }\n\n //Populate node style attributes if nodeData has classes defined\n if (nodeData.cssClasses) {\n if (!Array.isArray(nodeData.cssCompiledStyles)) {\n nodeData.cssCompiledStyles = [];\n }\n\n nodeData.cssClasses.split(' ').forEach((cssClass) => {\n const classDef = classes.get(cssClass);\n if (classDef) {\n nodeData.cssCompiledStyles = [...(nodeData.cssCompiledStyles ?? []), ...classDef.styles];\n }\n });\n }\n const existingNodeData = nodes.find((node) => node.id === nodeData.id);\n if (existingNodeData) {\n //update the existing nodeData\n Object.assign(existingNodeData, nodeData);\n } else {\n nodes.push(nodeData);\n }\n}\n/**\n * Get classes from the db for the info item.\n * If there aren't any or if dbInfoItem isn't defined, return an empty string.\n * Else create 1 string from the list of classes found\n *\n */\nfunction getClassesFromDbInfo(dbInfoItem?: StateStmt): string {\n return dbInfoItem?.classes?.join(' ') ?? '';\n}\n\nfunction getStylesFromDbInfo(dbInfoItem?: StateStmt): string[] {\n return dbInfoItem?.styles ?? [];\n}\n\nexport const dataFetcher = (\n parent: StateStmt | undefined,\n parsedItem: StateStmt,\n diagramStates: Map,\n nodes: NodeData[],\n edges: Edge[],\n altFlag: boolean,\n look: MermaidConfig['look'],\n classes: Map\n) => {\n const itemId = parsedItem.id;\n const dbState = diagramStates.get(itemId);\n const classStr = getClassesFromDbInfo(dbState);\n const style = getStylesFromDbInfo(dbState);\n const config = getConfig();\n\n log.info('dataFetcher parsedItem', parsedItem, dbState, style);\n\n if (itemId !== 'root') {\n let shape = SHAPE_STATE;\n // The if === true / false can be removed if we can guarantee that the parsedItem.start is always a boolean\n if (parsedItem.start === true) {\n shape = SHAPE_START;\n } else if (parsedItem.start === false) {\n shape = SHAPE_END;\n }\n if (parsedItem.type !== DEFAULT_STATE_TYPE) {\n shape = parsedItem.type;\n }\n\n // Add the node to our list (nodeDb)\n if (!nodeDb.get(itemId)) {\n nodeDb.set(itemId, {\n id: itemId,\n shape,\n description: common.sanitizeText(itemId, config),\n cssClasses: `${classStr} ${CSS_DIAGRAM_STATE}`,\n cssStyles: style,\n });\n }\n\n const newNode = nodeDb.get(itemId)!;\n\n // Save data for description and group so that for instance a statement without description overwrites\n // one with description @todo TODO What does this mean? If important, add a test for it\n\n // Build of the array of description strings\n if (parsedItem.description) {\n if (Array.isArray(newNode.description)) {\n // There already is an array of strings,add to it\n newNode.shape = SHAPE_STATE_WITH_DESC;\n newNode.description.push(parsedItem.description);\n } else {\n if (newNode.description?.length && newNode.description.length > 0) {\n // if there is a description already transform it to an array\n newNode.shape = SHAPE_STATE_WITH_DESC;\n if (newNode.description === itemId) {\n // If the previous description was this, remove it\n newNode.description = [parsedItem.description];\n } else {\n newNode.description = [newNode.description, parsedItem.description];\n }\n } else {\n newNode.shape = SHAPE_STATE;\n newNode.description = parsedItem.description;\n }\n }\n newNode.description = common.sanitizeTextOrArray(newNode.description, config);\n }\n\n // If there's only 1 description entry, just use a regular state shape\n if (newNode.description?.length === 1 && newNode.shape === SHAPE_STATE_WITH_DESC) {\n if (newNode.type === 'group') {\n newNode.shape = SHAPE_GROUP;\n } else {\n newNode.shape = SHAPE_STATE;\n }\n }\n\n // group\n if (!newNode.type && parsedItem.doc) {\n log.info('Setting cluster for XCX', itemId, getDir(parsedItem));\n newNode.type = 'group';\n newNode.isGroup = true;\n newNode.dir = getDir(parsedItem);\n newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP;\n newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${altFlag ? CSS_DIAGRAM_CLUSTER_ALT : ''}`;\n }\n\n // This is what will be added to the graph\n const nodeData: NodeData = {\n labelStyle: '',\n shape: newNode.shape,\n label: newNode.description,\n cssClasses: newNode.cssClasses,\n cssCompiledStyles: [],\n cssStyles: newNode.cssStyles,\n id: itemId,\n dir: newNode.dir,\n domId: stateDomId(itemId, graphItemCount),\n type: newNode.type,\n isGroup: newNode.type === 'group',\n padding: 8,\n rx: 10,\n ry: 10,\n look,\n labelType: 'markdown',\n };\n\n // Clear the label for dividers who have no description\n if (nodeData.shape === SHAPE_DIVIDER) {\n nodeData.label = '';\n }\n\n if (parent && parent.id !== 'root') {\n log.trace('Setting node ', itemId, ' to be child of its parent ', parent.id);\n nodeData.parentId = parent.id;\n }\n\n nodeData.centerLabel = true;\n\n if (parsedItem.note) {\n // Todo: set random id\n const noteData: NodeData = {\n labelStyle: '',\n shape: SHAPE_NOTE,\n label: parsedItem.note.text,\n labelType: 'markdown',\n cssClasses: CSS_DIAGRAM_NOTE,\n // useHtmlLabels: false,\n cssStyles: [],\n cssCompiledStyles: [],\n id: itemId + NOTE_ID + '-' + graphItemCount,\n domId: stateDomId(itemId, graphItemCount, NOTE),\n type: newNode.type,\n isGroup: newNode.type === 'group',\n padding: config.flowchart?.padding,\n look,\n position: parsedItem.note.position,\n };\n const parentNodeId = itemId + PARENT_ID;\n const groupData = {\n labelStyle: '',\n shape: SHAPE_NOTEGROUP,\n label: parsedItem.note.text,\n cssClasses: newNode.cssClasses,\n cssStyles: [],\n id: itemId + PARENT_ID,\n domId: stateDomId(itemId, graphItemCount, PARENT),\n type: 'group',\n isGroup: true,\n padding: 16, //getConfig().flowchart.padding\n look,\n position: parsedItem.note.position,\n };\n graphItemCount++;\n\n //add parent id to groupData\n groupData.id = parentNodeId;\n //add parent id to noteData\n noteData.parentId = parentNodeId;\n //nodeData.parentId = parentNodeId;\n\n //insert groupData\n insertOrUpdateNode(nodes, groupData, classes);\n //insert noteData\n insertOrUpdateNode(nodes, noteData, classes);\n //insert nodeData\n insertOrUpdateNode(nodes, nodeData, classes);\n\n let from = itemId;\n let to = noteData.id;\n\n if (parsedItem.note.position === 'left of') {\n from = noteData.id;\n to = itemId;\n }\n\n edges.push({\n id: from + '-' + to,\n start: from,\n end: to,\n arrowhead: 'none',\n arrowTypeEnd: '',\n style: G_EDGE_STYLE,\n labelStyle: '',\n classes: CSS_EDGE_NOTE_EDGE,\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n look,\n });\n } else {\n insertOrUpdateNode(nodes, nodeData, classes);\n }\n }\n if (parsedItem.doc) {\n log.trace('Adding nodes children ');\n setupDoc(parsedItem, parsedItem.doc, diagramStates, nodes, edges, !altFlag, look, classes);\n }\n};\n\nexport const reset = () => {\n nodeDb.clear();\n graphItemCount = 0;\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport { generateId } from '../../utils.js';\nimport common from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport { dataFetcher, reset as resetDataFetcher } from './dataFetcher.js';\nimport { getDir } from './stateRenderer-v3-unified.js';\nimport {\n DEFAULT_DIAGRAM_DIRECTION,\n DEFAULT_STATE_TYPE,\n DIVIDER_TYPE,\n STMT_APPLYCLASS,\n STMT_CLASSDEF,\n STMT_RELATION,\n STMT_ROOT,\n STMT_DIRECTION,\n STMT_STATE,\n STMT_STYLEDEF,\n} from './stateCommon.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\nconst CONSTANTS = {\n START_NODE: '[*]',\n START_TYPE: 'start',\n END_NODE: '[*]',\n END_TYPE: 'end',\n COLOR_KEYWORD: 'color',\n FILL_KEYWORD: 'fill',\n BG_FILL: 'bgFill',\n STYLECLASS_SEP: ',',\n} as const;\n\ninterface BaseStmt {\n stmt:\n | 'applyClass'\n | 'classDef'\n | 'dir'\n | 'relation'\n | 'state'\n | 'style'\n | 'root'\n | 'default'\n | 'click';\n}\n\ninterface ApplyClassStmt extends BaseStmt {\n stmt: 'applyClass';\n id: string;\n styleClass: string;\n}\n\ninterface ClassDefStmt extends BaseStmt {\n stmt: 'classDef';\n id: string;\n classes: string;\n}\n\ninterface DirectionStmt extends BaseStmt {\n stmt: 'dir';\n value: 'TB' | 'BT' | 'RL' | 'LR';\n}\n\ninterface RelationStmt extends BaseStmt {\n stmt: 'relation';\n state1: StateStmt;\n state2: StateStmt;\n description?: string;\n}\n\nexport interface StateStmt extends BaseStmt {\n stmt: 'state' | 'default';\n id: string;\n type: 'default' | 'fork' | 'join' | 'choice' | 'divider' | 'start' | 'end';\n description?: string;\n descriptions?: string[];\n doc?: Stmt[];\n note?: Note;\n start?: boolean;\n classes?: string[];\n styles?: string[];\n textStyles?: string[];\n}\n\ninterface StyleStmt extends BaseStmt {\n stmt: 'style';\n id: string;\n styleClass: string;\n}\n\nexport interface RootStmt {\n id: 'root';\n stmt: 'root';\n doc?: Stmt[];\n}\n\nexport interface ClickStmt extends BaseStmt {\n stmt: 'click';\n id: string;\n url: string;\n tooltip: string;\n}\n\ninterface Note {\n position?: 'left of' | 'right of';\n text: string;\n}\n\nexport type Stmt =\n | ApplyClassStmt\n | ClassDefStmt\n | DirectionStmt\n | RelationStmt\n | StateStmt\n | StyleStmt\n | RootStmt\n | ClickStmt;\n\ninterface DiagramEdge {\n id1: string;\n id2: string;\n relationTitle?: string;\n}\n\ninterface Document {\n relations: DiagramEdge[];\n states: Map;\n documents: Record;\n}\n\nexport interface StyleClass {\n id: string;\n styles: string[];\n textStyles: string[];\n}\n\nexport interface NodeData {\n labelStyle?: string;\n shape: string;\n label?: string | string[];\n cssClasses: string;\n cssCompiledStyles?: string[];\n cssStyles: string[];\n id: string;\n dir?: string;\n domId?: string;\n type?: string;\n isGroup?: boolean;\n padding?: number;\n rx?: number;\n ry?: number;\n look?: MermaidConfig['look'];\n parentId?: string;\n centerLabel?: boolean;\n position?: string;\n description?: string | string[];\n labelType?: string;\n}\n\nexport interface Edge {\n id: string;\n start: string;\n end: string;\n arrowhead: string;\n arrowTypeEnd: string;\n style: string;\n labelStyle: string;\n label?: string;\n arrowheadStyle: string;\n labelpos: string;\n labelType: string;\n thickness: string;\n classes: string;\n look: MermaidConfig['look'];\n}\n\n/**\n * Returns a new list of classes.\n * In the future, this can be replaced with a class common to all diagrams.\n * ClassDef information = \\{ id: id, styles: [], textStyles: [] \\}\n */\nconst newClassesList = (): Map => new Map();\nconst newDoc = (): Document => ({\n relations: [],\n states: new Map(),\n documents: {},\n});\nconst clone = (o: T): T => JSON.parse(JSON.stringify(o));\n\nexport class StateDB {\n private nodes: NodeData[] = [];\n private edges: Edge[] = [];\n private rootDoc: Stmt[] = [];\n private classes = newClassesList();\n private documents = { root: newDoc() };\n private currentDocument = this.documents.root;\n private startEndCount = 0;\n private dividerCnt = 0;\n private links = new Map();\n\n static readonly relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n } as const;\n\n constructor(private version: 1 | 2) {\n this.clear();\n // Bind methods used by JISON\n this.setRootDoc = this.setRootDoc.bind(this);\n this.getDividerId = this.getDividerId.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.trimColon = this.trimColon.bind(this);\n }\n\n /**\n * Convert all of the statements (stmts) that were parsed into states and relationships.\n * This is done because a state diagram may have nested sections,\n * where each section is a 'document' and has its own set of statements.\n * Ex: the section within a fork has its own statements, and incoming and outgoing statements\n * refer to the fork as a whole (document).\n * See the parser grammar: the definition of a document is a document then a 'line', where a line can be a statement.\n * This will push the statement into the list of statements for the current document.\n */\n extract(statements: Stmt[] | { doc: Stmt[] }) {\n this.clear(true);\n for (const item of Array.isArray(statements) ? statements : statements.doc) {\n switch (item.stmt) {\n case STMT_STATE:\n this.addState(item.id.trim(), item.type, item.doc, item.description, item.note);\n break;\n case STMT_RELATION:\n this.addRelation(item.state1, item.state2, item.description);\n break;\n case STMT_CLASSDEF:\n this.addStyleClass(item.id.trim(), item.classes);\n break;\n case STMT_STYLEDEF:\n this.handleStyleDef(item);\n break;\n case STMT_APPLYCLASS:\n this.setCssClass(item.id.trim(), item.styleClass);\n break;\n case 'click':\n this.addLink(item.id, item.url, item.tooltip);\n break;\n }\n }\n const diagramStates = this.getStates();\n const config = getConfig();\n\n resetDataFetcher();\n dataFetcher(\n undefined,\n this.getRootDocV2() as StateStmt,\n diagramStates,\n this.nodes,\n this.edges,\n true,\n config.look,\n this.classes\n );\n\n // Process node labels\n for (const node of this.nodes) {\n if (!Array.isArray(node.label)) {\n continue;\n }\n\n node.description = node.label.slice(1);\n if (node.isGroup && node.description.length > 0) {\n throw new Error(\n `Group nodes can only have label. Remove the additional description for node [${node.id}]`\n );\n }\n node.label = node.label[0];\n }\n }\n\n private handleStyleDef(item: StyleStmt) {\n const ids = item.id.trim().split(',');\n const styles = item.styleClass.split(',');\n\n for (const id of ids) {\n let state = this.getState(id);\n if (!state) {\n const trimmedId = id.trim();\n this.addState(trimmedId);\n state = this.getState(trimmedId);\n }\n if (state) {\n state.styles = styles.map((s) => s.replace(/;/g, '')?.trim());\n }\n }\n }\n\n setRootDoc(o: Stmt[]) {\n log.info('Setting root doc', o);\n this.rootDoc = o;\n if (this.version === 1) {\n this.extract(o);\n } else {\n this.extract(this.getRootDocV2());\n }\n }\n\n docTranslator(parent: RootStmt | StateStmt, node: Stmt, first: boolean) {\n if (node.stmt === STMT_RELATION) {\n this.docTranslator(parent, node.state1, true);\n this.docTranslator(parent, node.state2, false);\n return;\n }\n\n if (node.stmt === STMT_STATE) {\n if (node.id === CONSTANTS.START_NODE) {\n node.id = parent.id + (first ? '_start' : '_end');\n node.start = first;\n } else {\n // This is just a plain state, not a start or end\n node.id = node.id.trim();\n }\n }\n\n if ((node.stmt !== STMT_ROOT && node.stmt !== STMT_STATE) || !node.doc) {\n return;\n }\n\n const doc = [];\n // Check for concurrency\n let currentDoc = [];\n for (const stmt of node.doc) {\n if ((stmt as StateStmt).type === DIVIDER_TYPE) {\n const newNode = clone(stmt as StateStmt);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(stmt);\n }\n }\n\n // If any divider was encountered\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: STMT_STATE,\n id: generateId(),\n type: 'divider',\n doc: clone(currentDoc),\n } satisfies StateStmt;\n doc.push(clone(newNode));\n node.doc = doc;\n }\n\n node.doc.forEach((docNode) => this.docTranslator(node, docNode, true));\n }\n\n private getRootDocV2() {\n this.docTranslator(\n { id: STMT_ROOT, stmt: STMT_ROOT },\n { id: STMT_ROOT, stmt: STMT_ROOT, doc: this.rootDoc },\n true\n );\n return { id: STMT_ROOT, doc: this.rootDoc };\n }\n\n /**\n * Function called by parser when a node definition has been found.\n *\n * @param descr - description for the state. Can be a string or a list or strings\n * @param classes - class styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 class, convert it to an array of that 1 class.\n * @param styles - styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 style, convert it to an array of that 1 style.\n * @param textStyles - text styles to apply to this state. Can be a string (1 text test) or an array of text styles. If it's just 1 text style, convert it to an array of that 1 text style.\n */\n addState(\n id: string,\n type: StateStmt['type'] = DEFAULT_STATE_TYPE,\n doc: Stmt[] | undefined = undefined,\n descr: string | string[] | undefined = undefined,\n note: Note | undefined = undefined,\n classes: string | string[] | undefined = undefined,\n styles: string | string[] | undefined = undefined,\n textStyles: string | string[] | undefined = undefined\n ) {\n const trimmedId = id?.trim();\n if (!this.currentDocument.states.has(trimmedId)) {\n log.info('Adding state ', trimmedId, descr);\n this.currentDocument.states.set(trimmedId, {\n stmt: STMT_STATE,\n id: trimmedId,\n descriptions: [],\n type,\n doc,\n note,\n classes: [],\n styles: [],\n textStyles: [],\n });\n } else {\n const state = this.currentDocument.states.get(trimmedId);\n if (!state) {\n throw new Error(`State not found: ${trimmedId}`);\n }\n if (!state.doc) {\n state.doc = doc;\n }\n if (!state.type) {\n state.type = type;\n }\n }\n\n if (descr) {\n log.info('Setting state description', trimmedId, descr);\n const descriptions = Array.isArray(descr) ? descr : [descr];\n descriptions.forEach((des) => this.addDescription(trimmedId, des.trim()));\n }\n\n if (note) {\n const doc2 = this.currentDocument.states.get(trimmedId);\n if (!doc2) {\n throw new Error(`State not found: ${trimmedId}`);\n }\n doc2.note = note;\n doc2.note.text = common.sanitizeText(doc2.note.text, getConfig());\n }\n\n if (classes) {\n log.info('Setting state classes', trimmedId, classes);\n const classesList = Array.isArray(classes) ? classes : [classes];\n classesList.forEach((cssClass) => this.setCssClass(trimmedId, cssClass.trim()));\n }\n\n if (styles) {\n log.info('Setting state styles', trimmedId, styles);\n const stylesList = Array.isArray(styles) ? styles : [styles];\n stylesList.forEach((style) => this.setStyle(trimmedId, style.trim()));\n }\n\n if (textStyles) {\n log.info('Setting state styles', trimmedId, styles);\n const textStylesList = Array.isArray(textStyles) ? textStyles : [textStyles];\n textStylesList.forEach((textStyle) => this.setTextStyle(trimmedId, textStyle.trim()));\n }\n }\n\n clear(saveCommon?: boolean) {\n this.nodes = [];\n this.edges = [];\n this.documents = { root: newDoc() };\n this.currentDocument = this.documents.root;\n\n // number of start and end nodes; used to construct ids\n this.startEndCount = 0;\n this.classes = newClassesList();\n if (!saveCommon) {\n this.links = new Map(); // <-- add here\n commonClear();\n }\n }\n\n getState(id: string) {\n return this.currentDocument.states.get(id);\n }\n\n getStates() {\n return this.currentDocument.states;\n }\n\n logDocuments() {\n log.info('Documents = ', this.documents);\n }\n\n getRelations() {\n return this.currentDocument.relations;\n }\n\n /**\n * Adds a clickable link to a state.\n */\n addLink(stateId: string, url: string, tooltip: string): void {\n this.links.set(stateId, { url, tooltip });\n log.warn('Adding link', stateId, url, tooltip);\n }\n\n /**\n * Get all registered links.\n */\n getLinks(): Map {\n return this.links;\n }\n\n /**\n * If the id is a start node ( [*] ), then return a new id constructed from\n * the start node name and the current start node count.\n * else return the given id\n */\n startIdIfNeeded(id = '') {\n if (id === CONSTANTS.START_NODE) {\n this.startEndCount++;\n return `${CONSTANTS.START_TYPE}${this.startEndCount}`;\n }\n return id;\n }\n\n /**\n * If the id is a start node ( [*] ), then return the start type ('start')\n * else return the given type\n */\n startTypeIfNeeded(id = '', type: StateStmt['type'] = DEFAULT_STATE_TYPE) {\n return id === CONSTANTS.START_NODE ? CONSTANTS.START_TYPE : type;\n }\n\n /**\n * If the id is an end node ( [*] ), then return a new id constructed from\n * the end node name and the current start_end node count.\n * else return the given id\n */\n endIdIfNeeded(id = '') {\n if (id === CONSTANTS.END_NODE) {\n this.startEndCount++;\n return `${CONSTANTS.END_TYPE}${this.startEndCount}`;\n }\n return id;\n }\n\n /**\n * If the id is an end node ( [*] ), then return the end type\n * else return the given type\n *\n */\n endTypeIfNeeded(id = '', type: StateStmt['type'] = DEFAULT_STATE_TYPE) {\n return id === CONSTANTS.END_NODE ? CONSTANTS.END_TYPE : type;\n }\n\n addRelationObjs(item1: StateStmt, item2: StateStmt, relationTitle = '') {\n const id1 = this.startIdIfNeeded(item1.id.trim());\n const type1 = this.startTypeIfNeeded(item1.id.trim(), item1.type);\n const id2 = this.startIdIfNeeded(item2.id.trim());\n const type2 = this.startTypeIfNeeded(item2.id.trim(), item2.type);\n this.addState(\n id1,\n type1,\n item1.doc,\n item1.description,\n item1.note,\n item1.classes,\n item1.styles,\n item1.textStyles\n );\n this.addState(\n id2,\n type2,\n item2.doc,\n item2.description,\n item2.note,\n item2.classes,\n item2.styles,\n item2.textStyles\n );\n this.currentDocument.relations.push({\n id1,\n id2,\n relationTitle: common.sanitizeText(relationTitle, getConfig()),\n });\n }\n\n /**\n * Add a relation between two items. The items may be full objects or just the string id of a state.\n */\n addRelation(item1: string | StateStmt, item2: string | StateStmt, title?: string) {\n if (typeof item1 === 'object' && typeof item2 === 'object') {\n this.addRelationObjs(item1, item2, title);\n } else if (typeof item1 === 'string' && typeof item2 === 'string') {\n const id1 = this.startIdIfNeeded(item1.trim());\n const type1 = this.startTypeIfNeeded(item1);\n const id2 = this.endIdIfNeeded(item2.trim());\n const type2 = this.endTypeIfNeeded(item2);\n\n this.addState(id1, type1);\n this.addState(id2, type2);\n this.currentDocument.relations.push({\n id1,\n id2,\n relationTitle: title ? common.sanitizeText(title, getConfig()) : undefined,\n });\n }\n }\n\n addDescription(id: string, descr: string) {\n const theState = this.currentDocument.states.get(id);\n const _descr = descr.startsWith(':') ? descr.replace(':', '').trim() : descr;\n theState?.descriptions?.push(common.sanitizeText(_descr, getConfig()));\n }\n\n cleanupLabel(label: string) {\n return label.startsWith(':') ? label.slice(2).trim() : label.trim();\n }\n\n getDividerId() {\n this.dividerCnt++;\n return `divider-id-${this.dividerCnt}`;\n }\n\n /**\n * Called when the parser comes across a (style) class definition\n * @example classDef my-style fill:#f96;\n *\n * @param id - the id of this (style) class\n * @param styleAttributes - the string with 1 or more style attributes (each separated by a comma)\n */\n addStyleClass(id: string, styleAttributes = '') {\n // create a new style class object with this id\n if (!this.classes.has(id)) {\n this.classes.set(id, { id, styles: [], textStyles: [] });\n }\n const foundClass = this.classes.get(id);\n if (styleAttributes && foundClass) {\n styleAttributes.split(CONSTANTS.STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, '$1').trim();\n if (RegExp(CONSTANTS.COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(CONSTANTS.FILL_KEYWORD, CONSTANTS.BG_FILL);\n const newStyle2 = newStyle1.replace(CONSTANTS.COLOR_KEYWORD, CONSTANTS.FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n }\n\n getClasses() {\n return this.classes;\n }\n\n /**\n * Add a (style) class or css class to a state with the given id.\n * If the state isn't already in the list of known states, add it.\n * Might be called by parser when a style class or CSS class should be applied to a state\n *\n * @param itemIds - The id or a list of ids of the item(s) to apply the css class to\n * @param cssClassName - CSS class name\n */\n setCssClass(itemIds: string, cssClassName: string) {\n itemIds.split(',').forEach((id) => {\n let foundState = this.getState(id);\n if (!foundState) {\n const trimmedId = id.trim();\n this.addState(trimmedId);\n foundState = this.getState(trimmedId);\n }\n foundState?.classes?.push(cssClassName);\n });\n }\n\n /**\n * Add a style to a state with the given id.\n * @example style stateId fill:#f9f,stroke:#333,stroke-width:4px\n * where 'style' is the keyword\n * stateId is the id of a state\n * the rest of the string is the styleText (all of the attributes to be applied to the state)\n *\n * @param itemId - The id of item to apply the style to\n * @param styleText - the text of the attributes for the style\n */\n setStyle(itemId: string, styleText: string) {\n this.getState(itemId)?.styles?.push(styleText);\n }\n\n /**\n * Add a text style to a state with the given id\n *\n * @param itemId - The id of item to apply the css class to\n * @param cssClassName - CSS class name\n */\n setTextStyle(itemId: string, cssClassName: string) {\n this.getState(itemId)?.textStyles?.push(cssClassName);\n }\n\n /**\n * Finds the direction statement in the root document.\n * @returns the direction statement if present\n */\n private getDirectionStatement() {\n return this.rootDoc.find((doc): doc is DirectionStmt => doc.stmt === STMT_DIRECTION);\n }\n\n getDirection() {\n return this.getDirectionStatement()?.value ?? DEFAULT_DIAGRAM_DIRECTION;\n }\n\n setDirection(dir: DirectionStmt['value']) {\n const doc = this.getDirectionStatement();\n if (doc) {\n doc.value = dir;\n } else {\n this.rootDoc.unshift({ stmt: STMT_DIRECTION, value: dir });\n }\n }\n\n trimColon(str: string) {\n return str.startsWith(':') ? str.slice(1).trim() : str.trim();\n }\n\n getData() {\n const config = getConfig();\n return {\n nodes: this.nodes,\n edges: this.edges,\n other: {},\n config,\n direction: getDir(this.getRootDocV2()),\n };\n }\n\n getConfig() {\n return getConfig().state;\n }\n\n getAccTitle = getAccTitle;\n setAccTitle = setAccTitle;\n getAccDescription = getAccDescription;\n setAccDescription = setAccDescription;\n setDiagramTitle = setDiagramTitle;\n getDiagramTitle = getDiagramTitle;\n}\n", "const getStyles = (options) =>\n `\ndefs #statediagram-barbEnd {\n fill: ${options.transitionColor};\n stroke: ${options.transitionColor};\n }\ng.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: ${options.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${options.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel {\n background-color: ${options.edgeLabelBackground};\n p {\n background-color: ${options.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n}\n.edgeLabel .label text {\n fill: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${options.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${options.innerEndBackground};\n stroke: ${options.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${options.compositeBackground || options.background};\n // stroke: ${options.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.stateBkg || options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.compositeTitleBackground};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.stateLabelColor};\n // line-height: 1;\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.stateBorder || options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.compositeBackground || options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${options.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\n\n// todo: change composit to composite\n// cspell:ignore composit\n\nexport default getStyles;\n"], - "mappings": "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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "stateStmt", "relDescription", "id", "description", "parts", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "stateDiagram_default", "parser", "STMT_STATE", "STMT_ROOT", "STMT_RELATION", "STMT_CLASSDEF", "STMT_STYLEDEF", "STMT_APPLYCLASS", "DEFAULT_STATE_TYPE", "DIVIDER_TYPE", "G_EDGE_STYLE", "G_EDGE_ARROWHEADSTYLE", "G_EDGE_LABELTYPE", "G_EDGE_THICKNESS", "SHAPE_STATE", "SHAPE_STATE_WITH_DESC", "SHAPE_START", "SHAPE_END", "SHAPE_DIVIDER", "SHAPE_GROUP", "SHAPE_NOTE", "SHAPE_NOTEGROUP", "CSS_DIAGRAM", "CSS_STATE", "CSS_DIAGRAM_STATE", "CSS_EDGE", "CSS_NOTE", "CSS_NOTE_EDGE", "CSS_EDGE_NOTE_EDGE", "CSS_DIAGRAM_NOTE", "CSS_CLUSTER", "CSS_DIAGRAM_CLUSTER", "CSS_CLUSTER_ALT", "CSS_DIAGRAM_CLUSTER_ALT", "PARENT", "NOTE", "DOMID_STATE", "DOMID_TYPE_SPACER", "NOTE_ID", "PARENT_ID", "getDir", "__name", "parsedItem", "defaultDir", "dir", "parsedItemDoc", "getClasses", "text", "diagramObj", "draw", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "data4Layout", "svg", "getDiagramElement", "render", "padding", "linkInfo", "key", "stateId", "allNodes", "matchedElem", "g", "parent", "a", "cleanedUrl", "tooltip", "err", "utils_default", "setupViewPortForSVG", "CSS_DIAGRAM", "stateRenderer_v3_unified_default", "nodeDb", "graphItemCount", "stateDomId", "itemId", "counter", "type", "typeSpacer", "DOMID_TYPE_SPACER", "typeStr", "DOMID_STATE", "__name", "setupDoc", "parentParsedItem", "doc", "diagramStates", "nodes", "edges", "altFlag", "look", "classes", "log", "item", "STMT_STATE", "dataFetcher", "DEFAULT_STATE_TYPE", "STMT_RELATION", "edgeData", "G_EDGE_STYLE", "common_default", "getConfig", "G_EDGE_ARROWHEADSTYLE", "G_EDGE_LABELTYPE", "G_EDGE_THICKNESS", "CSS_EDGE", "getDir", "parsedItem", "defaultDir", "dir", "parsedItemDoc", "insertOrUpdateNode", "nodeData", "cssClass", "classDef", "existingNodeData", "node", "getClassesFromDbInfo", "dbInfoItem", "getStylesFromDbInfo", "parent", "dbState", "classStr", "style", "config", "shape", "SHAPE_STATE", "SHAPE_START", "SHAPE_END", "CSS_DIAGRAM_STATE", "newNode", "SHAPE_STATE_WITH_DESC", "SHAPE_GROUP", "DIVIDER_TYPE", "SHAPE_DIVIDER", "CSS_DIAGRAM_CLUSTER", "CSS_DIAGRAM_CLUSTER_ALT", "noteData", "SHAPE_NOTE", "CSS_DIAGRAM_NOTE", "NOTE_ID", "NOTE", "parentNodeId", "PARENT_ID", "groupData", "SHAPE_NOTEGROUP", "PARENT", "from", "to", "CSS_EDGE_NOTE_EDGE", "reset", "CONSTANTS", "newClassesList", "__name", "newDoc", "clone", "o", "StateDB", "version", "getAccTitle", "setAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "statements", "item", "STMT_STATE", "STMT_RELATION", "STMT_CLASSDEF", "STMT_STYLEDEF", "STMT_APPLYCLASS", "diagramStates", "config", "getConfig", "reset", "dataFetcher", "node", "ids", "styles", "id", "state", "trimmedId", "s", "log", "parent", "first", "STMT_ROOT", "doc", "currentDoc", "stmt", "DIVIDER_TYPE", "newNode", "generateId", "docNode", "type", "DEFAULT_STATE_TYPE", "descr", "note", "classes", "textStyles", "des", "doc2", "common_default", "cssClass", "style", "textStyle", "saveCommon", "clear", "stateId", "url", "tooltip", "item1", "item2", "relationTitle", "id1", "type1", "id2", "type2", "title", "theState", "_descr", "label", "styleAttributes", "foundClass", "attrib", "fixedAttrib", "newStyle2", "itemIds", "cssClassName", "foundState", "itemId", "styleText", "dir", "str", "getDir", "getStyles", "__name", "options", "styles_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-7RZVMHOQ.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-3SSMPTDK.mjs similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-7RZVMHOQ.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-3SSMPTDK.mjs index bc473a2..e43f23d 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-7RZVMHOQ.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-3SSMPTDK.mjs @@ -1,4 +1,4 @@ -import{a as v}from"./chunk-VELTKBKT.mjs";function Ps(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,a=Array(e);t=r.length?{done:!0}:{done:!1,value:r[a++]}},"n"),e:v(function(l){throw l},"e"),f:n}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +import{a as v}from"./chunk-AQ6EADP3.mjs";function Ps(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,a=Array(e);t=r.length?{done:!0}:{done:!1,value:r[a++]}},"n"),e:v(function(l){throw l},"e"),f:n}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,s=!0,o=!1;return{s:v(function(){t=t.call(r)},"s"),n:v(function(){var l=t.next();return s=l.done,l},"n"),e:v(function(l){o=!0,i=l},"e"),f:v(function(){try{s||t.return==null||t.return()}finally{if(o)throw i}},"f")}}v(Dr,"_createForOfIteratorHelper");function jl(r,e,t){return(e=ev(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}v(jl,"_defineProperty$1");function nc(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}v(nc,"_iterableToArray");function ic(r,e){var t=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var a,n,i,s,o=[],l=!0,u=!1;try{if(i=(t=t.call(r)).next,e===0){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=i.call(t)).done)&&(o.push(a.value),o.length!==e);l=!0);}catch(f){u=!0,n=f}finally{try{if(!l&&t.return!=null&&(s=t.return(),Object(s)!==s))return}finally{if(u)throw n}}return o}}v(ic,"_iterableToArrayLimit");function sc(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}v(sc,"_nonIterableRest");function oc(){throw new TypeError(`Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}v(oc,"_nonIterableSpread");function je(r,e){return rc(r)||ic(r,e)||Ys(r,e)||sc()}v(je,"_slicedToArray");function bn(r){return tc(r)||nc(r)||Ys(r)||oc()}v(bn,"_toConsumableArray");function uc(r,e){if(typeof r!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var a=t.call(r,e);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(r)}v(uc,"_toPrimitive");function ev(r){var e=uc(r,"string");return typeof e=="symbol"?e:e+""}v(ev,"_toPropertyKey");function nr(r){"@babel/helpers - typeof";return nr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nr(r)}v(nr,"_typeof");function Ys(r,e){if(r){if(typeof r=="string")return Ps(r,e);var t={}.toString.call(r).slice(8,-1);return t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set"?Array.from(r):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Ps(r,e):void 0}}v(Ys,"_unsupportedIterableToArray");var tr=typeof window>"u"?null:window,So=tr?tr.navigator:null;tr&&tr.document;var lc=nr(""),rv=nr({}),vc=nr(function(){}),fc=typeof HTMLElement>"u"?"undefined":nr(HTMLElement),Ia=v(function(e){return e&&e.instanceString&&Ke(e.instanceString)?e.instanceString():null},"instanceStr"),pe=v(function(e){return e!=null&&nr(e)==lc},"string"),Ke=v(function(e){return e!=null&&nr(e)===vc},"fn"),Ge=v(function(e){return!Br(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},"array"),Ie=v(function(e){return e!=null&&nr(e)===rv&&!Ge(e)&&e.constructor===Object},"plainObject"),cc=v(function(e){return e!=null&&nr(e)===rv},"object"),ne=v(function(e){return e!=null&&nr(e)===nr(1)&&!isNaN(e)},"number"),dc=v(function(e){return ne(e)&&Math.floor(e)===e},"integer"),wn=v(function(e){if(fc!=="undefined")return e!=null&&e instanceof HTMLElement},"htmlElement"),Br=v(function(e){return Oa(e)||tv(e)},"elementOrCollection"),Oa=v(function(e){return Ia(e)==="collection"&&e._private.single},"element"),tv=v(function(e){return Ia(e)==="collection"&&!e._private.single},"collection"),Zs=v(function(e){return Ia(e)==="core"},"core"),av=v(function(e){return Ia(e)==="stylesheet"},"stylesheet"),hc=v(function(e){return Ia(e)==="event"},"event"),lt=v(function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},"emptyString"),gc=v(function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},"domElement"),pc=v(function(e){return Ie(e)&&ne(e.x1)&&ne(e.x2)&&ne(e.y1)&&ne(e.y2)},"boundingBox"),yc=v(function(e){return cc(e)&&Ke(e.then)},"promise"),mc=v(function(){return So&&So.userAgent.match(/msie|trident|edge/i)},"ms"),Jt=v(function(e,t){t||(t=v(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var i=[],s=0;st?1:0},"ascending"),Sc=v(function(e,t){return-1*iv(e,t)},"descending"),we=Object.assign!=null?Object.assign.bind(Object):function(r){for(var e=arguments,t=1;t1&&(p-=1),p<1/6?h+(m-h)*6*p:p<1/2?m:p<2/3?h+(m-h)*(2/3-p)*6:h}v(f,"hue2rgb");var c=new RegExp("^"+xc+"$").exec(e);if(c){if(a=parseInt(c[1]),a<0?a=(360- -1*a%360)%360:a>360&&(a=a%360),a/=360,n=parseFloat(c[2]),n<0||n>100||(n=n/100,i=parseFloat(c[3]),i<0||i>100)||(i=i/100,s=c[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(n===0)o=l=u=Math.round(i*255);else{var d=i<.5?i*(1+n):i+n-i*n,g=2*i-d;o=Math.round(255*f(g,d,a+1/3)),l=Math.round(255*f(g,d,a)),u=Math.round(255*f(g,d,a-1/3))}t=[o,l,u,s]}return t},"hsl2tuple"),Bc=v(function(e){var t,a=new RegExp("^"+bc+"$").exec(e);if(a){t=[];for(var n=[],i=1;i<=3;i++){var s=a[i];if(s[s.length-1]==="%"&&(n[i]=!0),s=parseFloat(s),n[i]&&(s=s/100*255),s<0||s>255)return;t.push(Math.floor(s))}var o=n[1]||n[2]||n[3],l=n[1]&&n[2]&&n[3];if(o&&!l)return;var u=a[4];if(u!==void 0){if(u=parseFloat(u),u<0||u>1)return;t.push(u)}}return t},"rgb2tuple"),Pc=v(function(e){return Ac[e.toLowerCase()]},"colorname2tuple"),sv=v(function(e){return(Ge(e)?e:null)||Pc(e)||kc(e)||Bc(e)||Dc(e)},"color2tuple"),Ac={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},ov=v(function(e){for(var t=e.map,a=e.keys,n=a.length,i=0;i=l||M<0||b&&I>=d}v(E,"shouldInvoke");function S(){var R=e();if(E(R))return D(R);h=setTimeout(S,T(R))}v(S,"timerExpired");function D(R){return h=void 0,w&&f?x(R):(f=c=void 0,g)}v(D,"trailingEdge");function B(){h!==void 0&&clearTimeout(h),p=0,f=m=c=h=void 0}v(B,"cancel");function P(){return h===void 0?g:D(e())}v(P,"flush");function A(){var R=e(),M=E(R);if(f=arguments,c=this,m=R,M){if(h===void 0)return C(m);if(b)return clearTimeout(h),h=setTimeout(S,l),x(m)}return h===void 0&&(h=setTimeout(S,l)),g}return v(A,"debounced"),A.cancel=B,A.flush=P,A}return v(s,"debounce"),ci=s,ci}v(Vc,"requireDebounce");var qc=Vc(),Va=Na(qc),di=tr?tr.performance:null,vv=di&&di.now?function(){return di.now()}:function(){return Date.now()},_c=(function(){if(tr){if(tr.requestAnimationFrame)return function(r){tr.requestAnimationFrame(r)};if(tr.mozRequestAnimationFrame)return function(r){tr.mozRequestAnimationFrame(r)};if(tr.webkitRequestAnimationFrame)return function(r){tr.webkitRequestAnimationFrame(r)};if(tr.msRequestAnimationFrame)return function(r){tr.msRequestAnimationFrame(r)}}return function(r){r&&setTimeout(function(){r(vv())},1e3/60)}})(),xn=v(function(e){return _c(e)},"requestAnimationFrame"),Zr=vv,kt=9261,fv=65599,Wt=5381,cv=v(function(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:kt,a=t,n;n=e.next(),!n.done;)a=a*fv+n.value|0;return a},"hashIterableInts"),Ta=v(function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:kt;return t*fv+e|0},"hashInt"),Sa=v(function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt;return(t<<5)+t+e|0},"hashIntAlt"),Gc=v(function(e,t){return e*2097152+t},"combineHashes"),rt=v(function(e){return e[0]*2097152+e[1]},"combineHashesArray"),Ya=v(function(e,t){return[Ta(e[0],t[0]),Sa(e[1],t[1])]},"hashArrays"),_o=v(function(e,t){var a={value:0,done:!1},n=0,i=e.length,s={next:v(function(){return n=0;n--)e[n]===t&&e.splice(n,1)},"removeFromArray"),ro=v(function(e){e.splice(0,e.length)},"clearArray"),Jc=v(function(e,t){for(var a=0;a"u"?"undefined":nr(Set))!==ed?Set:rd,On=v(function(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||t===void 0||!Zs(e)){Ue("An element must have a core reference and parameters set");return}var n=t.group;if(n==null&&(t.data&&t.data.source!=null&&t.data.target!=null?n="edges":n="nodes"),n!=="nodes"&&n!=="edges"){Ue("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:t.selectable===void 0?!0:!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:t.grabbable===void 0?!0:!!t.grabbable,pannable:t.pannable===void 0?n==="edges":!!t.pannable,active:!1,classes:new ta,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:t.parent&&t.parent.isNode()?t.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(i.position.x==null&&(i.position.x=0),i.position.y==null&&(i.position.y=0),t.renderedPosition){var s=t.renderedPosition,o=e.pan(),l=e.zoom();i.position={x:(s.x-o.x)/l,y:(s.y-o.y)/l}}var u=[];Ge(t.classes)?u=t.classes:pe(t.classes)&&(u=t.classes.split(/\s+/));for(var f=0,c=u.length;fb?1:0},"defaultCmp"),f=v(function(y,b,w,x,C){var T;if(w==null&&(w=0),C==null&&(C=a),w<0)throw new Error("lo must be non-negative");for(x==null&&(x=y.length);wB;0<=B?D++:D--)S.push(D);return S}).apply(this).reverse(),E=[],x=0,C=T.length;xP;0<=P?++S:--S)A.push(s(y,w));return A},"nsmallest"),m=v(function(y,b,w,x){var C,T,E;for(x==null&&(x=a),C=y[w];w>b;){if(E=w-1>>1,T=y[E],x(C,T)<0){y[w]=T,w=E;continue}break}return y[w]=C},"_siftdown"),p=v(function(y,b,w){var x,C,T,E,S;for(w==null&&(w=a),C=y.length,S=b,T=y[b],x=2*b+1;x0;){var T=b.pop(),E=p(T),S=T.id();if(d[S]=E,E!==1/0)for(var D=T.neighborhood().intersect(h),B=0;B0)for(N.unshift(L);c[H];){var z=c[H];N.unshift(z.edge),N.unshift(z.node),q=z.node,H=q.id()}return o.spawn(N)},"pathTo")}},"dijkstra")},ud={kruskal:v(function(e){e=e||function(w){return 1};for(var t=this.byGroup(),a=t.nodes,n=t.edges,i=a.length,s=new Array(i),o=a,l=v(function(x){for(var C=0;C0;){if(C(),E++,x===f){for(var S=[],D=i,B=f,P=y[B];S.unshift(D),P!=null&&S.unshift(P),D=p[B],D!=null;)B=D.id(),P=y[B];return{found:!0,distance:c[x],path:this.spawn(S),steps:E}}g[x]=!0;for(var A=w._private.edges,R=0;RP&&(h[B]=P,b[B]=D,w[B]=C),!i){var A=D*f+S;!i&&h[A]>P&&(h[A]=P,b[A]=S,w[A]=C)}}}for(var R=0;R1&&arguments[1]!==void 0?arguments[1]:s,se=w(xe),he=[],ge=se;;){if(ge==null)return t.spawn();var Ce=b(ge),ye=Ce.edge,ke=Ce.pred;if(he.unshift(ge[0]),ge.same(me)&&he.length>0)break;ye!=null&&he.unshift(ye),ge=ke}return l.spawn(he)},"pathTo"),T=0;T=0;f--){var c=u[f],d=c[1],g=c[2];(t[d]===o&&t[g]===l||t[d]===l&&t[g]===o)&&u.splice(f,1)}for(var h=0;hn;){var i=Math.floor(Math.random()*t.length);t=pd(i,e,t),a--}return t},"contractUntil"),yd={kargerStein:v(function(){var e=this,t=this.byGroup(),a=t.nodes,n=t.edges;n.unmergeBy(function(N){return N.isLoop()});var i=a.length,s=n.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),l=Math.floor(i/gd);if(i<2){Ue("At least 2 nodes are required for Karger-Stein algorithm");return}for(var u=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=1/0,i=t;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=-1/0,i=t;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=0,i=0,s=t;s1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?e=e.slice(t,a):(a0&&e.splice(0,t));for(var o=0,l=e.length-1;l>=0;l--){var u=e[l];s?isFinite(u)||(e[l]=-1/0,o++):e.splice(l,1)}i&&e.sort(function(d,g){return d-g});var f=e.length,c=Math.floor(f/2);return f%2!==0?e[c+1+o]:(e[c-1+o]+e[c+o])/2},"median"),Cd=v(function(e){return Math.PI*e/180},"deg2rad"),Za=v(function(e,t){return Math.atan2(t,e)-Math.PI/2},"getAngleFromDisp"),to=Math.log2||function(r){return Math.log(r)/Math.log(2)},ao=v(function(e){return e>0?1:e<0?-1:0},"signum"),At=v(function(e,t){return Math.sqrt(Tt(e,t))},"dist"),Tt=v(function(e,t){var a=t.x-e.x,n=t.y-e.y;return a*a+n*n},"sqdist"),Td=v(function(e){for(var t=e.length,a=0,n=0;n=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},"makeBoundingBox"),kd=v(function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},"copyBoundingBox"),Dd=v(function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},"clearBoundingBox"),Bd=v(function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},"updateBoundingBox"),bv=v(function(e,t,a){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,a),e.y2=Math.max(e.y2,a),e.h=e.y2-e.y1},"expandBoundingBoxByPoint"),ln=v(function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBox"),vn=v(function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],a,n,i,s;if(t.length===1)a=n=i=s=t[0];else if(t.length===2)a=i=t[0],s=n=t[1];else if(t.length===4){var o=je(t,4);a=o[0],n=o[1],i=o[2],s=o[3]}return e.x1-=s,e.x2+=n,e.y1-=a,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBoxSides"),Ko=v(function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},"assignBoundingBox"),no=v(function(e,t){return!(e.x1>t.x2||t.x1>e.x2||e.x2t.y2||t.y1>e.y2)},"boundingBoxesIntersect"),it=v(function(e,t,a){return e.x1<=t&&t<=e.x2&&e.y1<=a&&a<=e.y2},"inBoundingBox"),Xo=v(function(e,t){return it(e,t.x,t.y)},"pointInBoundingBox"),wv=v(function(e,t){return it(e,t.x1,t.y1)&&it(e,t.x2,t.y2)},"boundingBoxInBoundingBox"),Pd=(pi=Math.hypot)!==null&&pi!==void 0?pi:function(r,e){return Math.sqrt(r*r+e*e)};function Ad(r,e){if(r.length<3)throw new Error("Need at least 3 vertices");var t=v(function(S,D){return{x:S.x+D.x,y:S.y+D.y}},"add"),a=v(function(S,D){return{x:S.x-D.x,y:S.y-D.y}},"sub"),n=v(function(S,D){return{x:S.x*D,y:S.y*D}},"scale"),i=v(function(S,D){return S.x*D.y-S.y*D.x},"cross"),s=v(function(S){var D=Pd(S.x,S.y);return D===0?{x:0,y:0}:{x:S.x/D,y:S.y/D}},"normalize"),o=v(function(S){for(var D=0,B=0;B7&&arguments[7]!==void 0?arguments[7]:"auto",u=l==="auto"?ft(i,s):l,f=i/2,c=s/2;u=Math.min(u,f,c);var d=u!==f,g=u!==c,h;if(d){var m=a-f+u-o,p=n-c-o,y=a+f-u+o,b=p;if(h=st(e,t,a,n,m,p,y,b,!1),h.length>0)return h}if(g){var w=a+f+o,x=n-c+u-o,C=w,T=n+c-u+o;if(h=st(e,t,a,n,w,x,C,T,!1),h.length>0)return h}if(d){var E=a-f+u-o,S=n+c+o,D=a+f-u+o,B=S;if(h=st(e,t,a,n,E,S,D,B,!1),h.length>0)return h}if(g){var P=a-f-o,A=n-c+u-o,R=P,M=n+c-u+o;if(h=st(e,t,a,n,P,A,R,M,!1),h.length>0)return h}var I;{var O=a-f+u,L=n-c+u;if(I=ma(e,t,a,n,O,L,u+o),I.length>0&&I[0]<=O&&I[1]<=L)return[I[0],I[1]]}{var N=a+f-u,q=n-c+u;if(I=ma(e,t,a,n,N,q,u+o),I.length>0&&I[0]>=N&&I[1]<=q)return[I[0],I[1]]}{var H=a+f-u,z=n+c-u;if(I=ma(e,t,a,n,H,z,u+o),I.length>0&&I[0]>=H&&I[1]>=z)return[I[0],I[1]]}{var V=a-f+u,K=n+c-u;if(I=ma(e,t,a,n,V,K,u+o),I.length>0&&I[0]<=V&&I[1]>=K)return[I[0],I[1]]}return[]},"roundRectangleIntersectLine"),Md=v(function(e,t,a,n,i,s,o){var l=o,u=Math.min(a,i),f=Math.max(a,i),c=Math.min(n,s),d=Math.max(n,s);return u-l<=e&&e<=f+l&&c-l<=t&&t<=d+l},"inLineVicinity"),Ld=v(function(e,t,a,n,i,s,o,l,u){var f={x1:Math.min(a,o,i)-u,x2:Math.max(a,o,i)+u,y1:Math.min(n,l,s)-u,y2:Math.max(n,l,s)+u};return!(ef.x2||tf.y2)},"inBezierVicinity"),Id=v(function(e,t,a,n){a-=n;var i=t*t-4*e*a;if(i<0)return[];var s=Math.sqrt(i),o=2*e,l=(-t+s)/o,u=(-t-s)/o;return[l,u]},"solveQuadratic"),Od=v(function(e,t,a,n,i){var s=1e-5;e===0&&(e=s),t/=e,a/=e,n/=e;var o,l,u,f,c,d,g,h;if(l=(3*a-t*t)/9,u=-(27*n)+t*(9*a-2*(t*t)),u/=54,o=l*l*l+u*u,i[1]=0,g=t/3,o>0){c=u+Math.sqrt(o),c=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3),d=u-Math.sqrt(o),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),i[0]=-g+c+d,g+=(c+d)/2,i[4]=i[2]=-g,g=Math.sqrt(3)*(-d+c)/2,i[3]=g,i[5]=-g;return}if(i[5]=i[3]=0,o===0){h=u<0?-Math.pow(-u,1/3):Math.pow(u,1/3),i[0]=-g+2*h,i[4]=i[2]=-(h+g);return}l=-l,f=l*l*l,f=Math.acos(u/Math.sqrt(f)),h=2*Math.sqrt(l),i[0]=-g+h*Math.cos(f/3),i[2]=-g+h*Math.cos((f+2*Math.PI)/3),i[4]=-g+h*Math.cos((f+4*Math.PI)/3)},"solveCubic"),Nd=v(function(e,t,a,n,i,s,o,l){var u=1*a*a-4*a*i+2*a*o+4*i*i-4*i*o+o*o+n*n-4*n*s+2*n*l+4*s*s-4*s*l+l*l,f=9*a*i-3*a*a-3*a*o-6*i*i+3*i*o+9*n*s-3*n*n-3*n*l-6*s*s+3*s*l,c=3*a*a-6*a*i+a*o-a*e+2*i*i+2*i*e-o*e+3*n*n-6*n*s+n*l-n*t+2*s*s+2*s*t-l*t,d=1*a*i-a*a+a*e-i*e+n*s-n*n+n*t-s*t,g=[];Od(u,f,c,d,g);for(var h=1e-7,m=[],p=0;p<6;p+=2)Math.abs(g[p+1])=0&&g[p]<=1&&m.push(g[p]);m.push(1),m.push(0);for(var y=-1,b,w,x,C=0;C=0?xu?(e-i)*(e-i)+(t-s)*(t-s):f-d},"sqdistToFiniteLine"),kr=v(function(e,t,a){for(var n,i,s,o,l,u=0,f=0;f=e&&e>=s||n<=e&&e<=s)l=(e-n)/(s-n)*(o-i)+i,l>t&&u++;else continue;return u%2!==0},"pointInsidePolygonPoints"),Qr=v(function(e,t,a,n,i,s,o,l,u){var f=new Array(a.length),c;l[0]!=null?(c=Math.atan(l[1]/l[0]),l[0]<0?c=c+Math.PI/2:c=-c-Math.PI/2):c=l;for(var d=Math.cos(-c),g=Math.sin(-c),h=0;h0){var p=Tn(f,-u);m=Cn(p)}else m=f;return kr(e,t,m)},"pointInsidePolygon"),Fd=v(function(e,t,a,n,i,s,o,l){for(var u=new Array(a.length*2),f=0;f=0&&p<=1&&b.push(p),y>=0&&y<=1&&b.push(y),b.length===0)return[];var w=b[0]*l[0]+e,x=b[0]*l[1]+t;if(b.length>1){if(b[0]==b[1])return[w,x];var C=b[1]*l[0]+e,T=b[1]*l[1]+t;return[w,x,C,T]}else return[w,x]},"intersectLineCircle"),yi=v(function(e,t,a){return t<=e&&e<=a||a<=e&&e<=t?e:e<=t&&t<=a||a<=t&&t<=e?t:a},"midOfThree"),st=v(function(e,t,a,n,i,s,o,l,u){var f=e-i,c=a-e,d=o-i,g=t-s,h=n-t,m=l-s,p=d*g-m*f,y=c*g-h*f,b=m*c-d*h;if(b!==0){var w=p/b,x=y/b,C=.001,T=0-C,E=1+C;return T<=w&&w<=E&&T<=x&&x<=E?[e+w*c,t+w*h]:u?[e+w*c,t+w*h]:[]}else return p===0||y===0?yi(e,a,o)===o?[o,l]:yi(e,a,i)===i?[i,s]:yi(i,o,a)===a?[a,n]:[]:[]},"finiteLinesIntersect"),qd=v(function(e,t,a,n,i){var s=[],o=n/2,l=i/2,u=t,f=a;s.push({x:u+o*e[0],y:f+l*e[1]});for(var c=1;c0){var m=Tn(c,-l);g=Cn(m)}else g=c}else g=a;for(var p,y,b,w,x=0;x2){for(var h=[f[0],f[1]],m=Math.pow(h[0]-e,2)+Math.pow(h[1]-t,2),p=1;pf&&(f=x)},"set"),get:v(function(w){return u[w]},"get")},d=0;d0?I=M.edgesTo(R)[0]:I=R.edgesTo(M)[0];var O=n(I);R=R.id(),E[R]>E[P]+O&&(E[R]=E[P]+O,S.nodes.indexOf(R)<0?S.push(R):S.updateItem(R),T[R]=0,C[R]=[]),E[R]==E[P]+O&&(T[R]=T[R]+T[P],C[R].push(P))}else for(var L=0;L0;){for(var z=x.pop(),V=0;V0&&o.push(a[l]);o.length!==0&&i.push(n.collection(o))}return i},"assign"),rh=v(function(e,t){for(var a=0;a5&&arguments[5]!==void 0?arguments[5]:nh,o=n,l,u,f=0;f=2?fa(e,t,a,0,jo,ih):fa(e,t,a,0,Jo)},"euclidean"),squaredEuclidean:v(function(e,t,a){return fa(e,t,a,0,jo)},"squaredEuclidean"),manhattan:v(function(e,t,a){return fa(e,t,a,0,Jo)},"manhattan"),max:v(function(e,t,a){return fa(e,t,a,-1/0,sh)},"max")};jt["squared-euclidean"]=jt.squaredEuclidean;jt.squaredeuclidean=jt.squaredEuclidean;function zn(r,e,t,a,n,i){var s;return Ke(r)?s=r:s=jt[r]||jt.euclidean,e===0&&Ke(r)?s(n,i):s(e,t,a,n,i)}v(zn,"clusteringDistance");var oh=dr({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),so=v(function(e){return oh(e)},"setOptions"),Sn=v(function(e,t,a,n,i){var s=i!=="kMedoids",o=s?function(c){return a[c]}:function(c){return n[c](a)},l=v(function(d){return n[d](t)},"getQ"),u=a,f=t;return zn(e,n.length,o,l,u,f)},"getDist"),bi=v(function(e,t,a){for(var n=a.length,i=new Array(n),s=new Array(n),o=new Array(t),l=null,u=0;ua)return!1}return!0},"haveMatricesConverged"),vh=v(function(e,t,a){for(var n=0;no&&(o=t[u][f],l=f);i[l].push(e[u])}for(var c=0;c=i.threshold||i.mode==="dendrogram"&&e.length===1)return!1;var h=t[s],m=t[n[s]],p;i.mode==="dendrogram"?p={left:h,right:m,key:h.key}:p={value:h.value.concat(m.value),key:h.key},e[h.index]=p,e.splice(m.index,1),t[h.key]=p;for(var y=0;ya[m.key][b.key]&&(l=a[m.key][b.key])):i.linkage==="max"?(l=a[h.key][b.key],a[h.key][b.key]0&&n.push(i);return n},"findExemplars"),iu=v(function(e,t,a){for(var n=[],i=0;io&&(s=u,o=t[i*e+u])}s>0&&n.push(s)}for(var f=0;fu&&(l=f,u=c)}a[i]=s[l]}return n=iu(e,t,a),n},"assign"),su=v(function(e){for(var t=this.cy(),a=this.nodes(),n=Eh(e),i={},s=0;s=P?(A=P,P=M,R=I):M>A&&(A=M);for(var O=0;O0?1:0;E[D%n.minIterations*o+V]=K,z+=K}if(z>0&&(D>=n.minIterations-1||D==n.maxIterations-1)){for(var J=0,X=0;X1||T>1)&&(o=!0),c[w]=[],b.outgoers().forEach(function(S){S.isEdge()&&c[w].push(S.id())})}else d[w]=[void 0,b.target().id()]}):s.forEach(function(b){var w=b.id();if(b.isNode()){var x=b.degree(!0);x%2&&(l?u?o=!0:u=w:l=w),c[w]=[],b.connectedEdges().forEach(function(C){return c[w].push(C.id())})}else d[w]=[b.source().id(),b.target().id()]});var g={found:!1,trail:void 0};if(o)return g;if(u&&l)if(i){if(f&&u!=f)return g;f=u}else{if(f&&u!=f&&l!=f)return g;f||(f=u)}else f||(f=s[0].id());var h=v(function(w){for(var x=w,C=[w],T,E,S;c[x].length;)T=c[x].shift(),E=d[T][0],S=d[T][1],x!=S?(c[S]=c[S].filter(function(D){return D!=T}),x=S):!i&&x!=E&&(c[E]=c[E].filter(function(D){return D!=T}),x=E),C.unshift(T),C.unshift(x);return C},"walk"),m=[],p=[];for(p=h(f);p.length!=1;)c[p[0]].length==0?(m.unshift(s.getElementById(p.shift())),m.unshift(s.getElementById(p.shift()))):p=h(p.shift()).concat(p);m.unshift(s.getElementById(p.shift()));for(var y in c)if(c[y].length)return g;return g.found=!0,g.trail=this.spawn(m,!0),g},"hierholzer")},Ja=v(function(){var e=this,t={},a=0,n=0,i=[],s=[],o={},l=v(function(d,g){for(var h=s.length-1,m=[],p=e.spawn();s[h].x!=d||s[h].y!=g;)m.push(s.pop().edge),h--;m.push(s.pop().edge),m.forEach(function(y){var b=y.connectedNodes().intersection(e);p.merge(y),b.forEach(function(w){var x=w.id(),C=w.connectedEdges().intersection(e);p.merge(w),t[x].cutVertex?p.merge(C.filter(function(T){return T.isLoop()})):p.merge(C)})}),i.push(p)},"buildComponent"),u=v(function(d,g,h){d===h&&(n+=1),t[g]={id:a,low:a++,cutVertex:!1};var m=e.getElementById(g).connectedEdges().intersection(e);if(m.size()===0)i.push(e.spawn(e.getElementById(g)));else{var p,y,b,w;m.forEach(function(x){p=x.source().id(),y=x.target().id(),b=p===g?y:p,b!==h&&(w=x.id(),o[w]||(o[w]=!0,s.push({x:g,y:b,edge:x})),b in t?t[g].low=Math.min(t[g].low,t[b].id):(u(d,b,g),t[g].low=Math.min(t[g].low,t[b].low),t[g].id<=t[b].low&&(t[g].cutVertex=!0,l(g,b))))})}},"biconnectedSearch");e.forEach(function(c){if(c.isNode()){var d=c.id();d in t||(n=0,u(d,d),t[d].cutVertex=n>1)}});var f=Object.keys(t).filter(function(c){return t[c].cutVertex}).map(function(c){return e.getElementById(c)});return{cut:e.spawn(f),components:i}},"hopcroftTarjanBiconnected"),Ah={hopcroftTarjanBiconnected:Ja,htbc:Ja,htb:Ja,hopcroftTarjanBiconnectedComponents:Ja},ja=v(function(){var e=this,t={},a=0,n=[],i=[],s=e.spawn(e),o=v(function(u){i.push(u),t[u]={index:a,low:a++,explored:!1};var f=e.getElementById(u).connectedEdges().intersection(e);if(f.forEach(function(m){var p=m.target().id();p!==u&&(p in t||o(p),t[p].explored||(t[u].low=Math.min(t[u].low,t[p].low)))}),t[u].index===t[u].low){for(var c=e.spawn();;){var d=i.pop();if(c.merge(e.getElementById(d)),t[d].low=t[u].index,t[d].explored=!0,d===u)break}var g=c.edgesWith(c),h=c.merge(g);n.push(h),s=s.difference(h)}},"stronglyConnectedSearch");return e.forEach(function(l){if(l.isNode()){var u=l.id();u in t||o(u)}}),{cut:s,components:n}},"tarjanStronglyConnected"),Rh={tarjanStronglyConnected:ja,tsc:ja,tscc:ja,tarjanStronglyConnectedComponents:ja},Bv={};[ka,od,ud,vd,cd,hd,yd,Wd,Yt,Zt,Ms,ah,ph,wh,Dh,Ph,Ah,Rh].forEach(function(r){we(Bv,r)});var Pv=0,Av=1,Rv=2,zr=v(function(e){if(!(this instanceof zr))return new zr(e);this.id="Thenable/1.0.7",this.state=Pv,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");zr.prototype={fulfill:v(function(e){return ou(this,Av,"fulfillValue",e)},"fulfill"),reject:v(function(e){return ou(this,Rv,"rejectReason",e)},"reject"),then:v(function(e,t){var a=this,n=new zr;return a.onFulfilled.push(lu(e,n,"fulfill")),a.onRejected.push(lu(t,n,"reject")),Mv(a),n.proxy},"then")};var ou=v(function(e,t,a,n){return e.state===Pv&&(e.state=t,e[a]=n,Mv(e)),e},"deliver"),Mv=v(function(e){e.state===Av?uu(e,"onFulfilled",e.fulfillValue):e.state===Rv&&uu(e,"onRejected",e.rejectReason)},"execute"),uu=v(function(e,t,a){if(e[t].length!==0){var n=e[t];e[t]=[];var i=v(function(){for(var o=0;o0},"animatedImpl")},"animated"),clearQueue:v(function(){return v(function(){var t=this,a=t.length!==void 0,n=a?t:[t],i=this._private.cy||this;if(!i.styleEnabled())return this;for(var s=0;s-1}return v(e,"listCacheHas"),_i=e,_i}v(Yh,"require_listCacheHas");var Gi,Mu;function Zh(){if(Mu)return Gi;Mu=1;var r=qn();function e(t,a){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,a])):n[i][1]=a,this}return v(e,"listCacheSet"),Gi=e,Gi}v(Zh,"require_listCacheSet");var Hi,Lu;function Qh(){if(Lu)return Hi;Lu=1;var r=Uh(),e=Kh(),t=Xh(),a=Yh(),n=Zh();function i(s){var o=-1,l=s==null?0:s.length;for(this.clear();++o-1&&a%1==0&&a0&&this.spawn(n).updateStyle().emit("class"),t},"classes"),addClass:v(function(e){return this.toggleClass(e,!0)},"addClass"),hasClass:v(function(e){var t=this[0];return t!=null&&t._private.classes.has(e)},"hasClass"),toggleClass:v(function(e,t){Ge(e)||(e=e.match(/\S+/g)||[]);for(var a=this,n=t===void 0,i=[],s=0,o=a.length;s0&&this.spawn(i).updateStyle().emit("class"),a},"toggleClass"),removeClass:v(function(e){return this.toggleClass(e,!1)},"removeClass"),flashClass:v(function(e,t){var a=this;if(t==null)t=250;else if(t===0)return a;return a.addClass(e),setTimeout(function(){a.removeClass(e)},t),a},"flashClass")};fn.className=fn.classNames=fn.classes;var Le={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:ar,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Le.variable="(?:[\\w-.]|(?:\\\\"+Le.metaChar+"))+";Le.className="(?:[\\w-]|(?:\\\\"+Le.metaChar+"))+";Le.value=Le.string+"|"+Le.number;Le.id=Le.variable;(function(){var r,e,t;for(r=Le.comparatorOp.split("|"),t=0;t=0)&&e!=="="&&(Le.comparatorOp+="|\\!"+e)})();var _e=v(function(){return{checks:[]}},"newQuery"),oe={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},Ns=[{selector:":selected",matches:v(function(e){return e.selected()},"matches")},{selector:":unselected",matches:v(function(e){return!e.selected()},"matches")},{selector:":selectable",matches:v(function(e){return e.selectable()},"matches")},{selector:":unselectable",matches:v(function(e){return!e.selectable()},"matches")},{selector:":locked",matches:v(function(e){return e.locked()},"matches")},{selector:":unlocked",matches:v(function(e){return!e.locked()},"matches")},{selector:":visible",matches:v(function(e){return e.visible()},"matches")},{selector:":hidden",matches:v(function(e){return!e.visible()},"matches")},{selector:":transparent",matches:v(function(e){return e.transparent()},"matches")},{selector:":grabbed",matches:v(function(e){return e.grabbed()},"matches")},{selector:":free",matches:v(function(e){return!e.grabbed()},"matches")},{selector:":removed",matches:v(function(e){return e.removed()},"matches")},{selector:":inside",matches:v(function(e){return!e.removed()},"matches")},{selector:":grabbable",matches:v(function(e){return e.grabbable()},"matches")},{selector:":ungrabbable",matches:v(function(e){return!e.grabbable()},"matches")},{selector:":animated",matches:v(function(e){return e.animated()},"matches")},{selector:":unanimated",matches:v(function(e){return!e.animated()},"matches")},{selector:":parent",matches:v(function(e){return e.isParent()},"matches")},{selector:":childless",matches:v(function(e){return e.isChildless()},"matches")},{selector:":child",matches:v(function(e){return e.isChild()},"matches")},{selector:":orphan",matches:v(function(e){return e.isOrphan()},"matches")},{selector:":nonorphan",matches:v(function(e){return e.isChild()},"matches")},{selector:":compound",matches:v(function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()},"matches")},{selector:":loop",matches:v(function(e){return e.isLoop()},"matches")},{selector:":simple",matches:v(function(e){return e.isSimple()},"matches")},{selector:":active",matches:v(function(e){return e.active()},"matches")},{selector:":inactive",matches:v(function(e){return!e.active()},"matches")},{selector:":backgrounding",matches:v(function(e){return e.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:v(function(e){return!e.backgrounding()},"matches")}].sort(function(r,e){return Sc(r.selector,e.selector)}),Bg=(function(){for(var r={},e,t=0;t0&&f.edgeCount>0)return qe("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return qe("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&qe("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),Ig=v(function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=v(function(f){return f??""},"clean"),t=v(function(f){return pe(f)?'"'+f+'"':e(f)},"cleanVal"),a=v(function(f){return" "+f+" "},"space"),n=v(function(f,c){var d=f.type,g=f.value;switch(d){case oe.GROUP:{var h=e(g);return h.substring(0,h.length-1)}case oe.DATA_COMPARE:{var m=f.field,p=f.operator;return"["+m+a(e(p))+t(g)+"]"}case oe.DATA_BOOL:{var y=f.operator,b=f.field;return"["+e(y)+b+"]"}case oe.DATA_EXIST:{var w=f.field;return"["+w+"]"}case oe.META_COMPARE:{var x=f.operator,C=f.field;return"[["+C+a(e(x))+t(g)+"]]"}case oe.STATE:return g;case oe.ID:return"#"+g;case oe.CLASS:return"."+g;case oe.PARENT:case oe.CHILD:return i(f.parent,c)+a(">")+i(f.child,c);case oe.ANCESTOR:case oe.DESCENDANT:return i(f.ancestor,c)+" "+i(f.descendant,c);case oe.COMPOUND_SPLIT:{var T=i(f.left,c),E=i(f.subject,c),S=i(f.right,c);return T+(T.length>0?" ":"")+E+S}case oe.TRUE:return""}},"checkToString"),i=v(function(f,c){return f.checks.reduce(function(d,g,h){return d+(c===f&&h===0?"$":"")+n(g,c)},"")},"queryToString"),s="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),f=!0),(i||o||f)&&(l=!i&&!s?"":""+e,u=""+a),f&&(e=l=l.toLowerCase(),a=u=u.toLowerCase()),t){case"*=":n=l.indexOf(u)>=0;break;case"$=":n=l.indexOf(u,l.length-u.length)>=0;break;case"^=":n=l.indexOf(u)===0;break;case"=":n=e===a;break;case">":d=!0,n=e>a;break;case">=":d=!0,n=e>=a;break;case"<":d=!0,n=e0;){var f=n.shift();e(f),i.add(f.id()),o&&a(n,i,f)}return r}v(vo,"forEachCompound");function qv(r,e,t){if(t.isParent())for(var a=t._private.children,n=0;n1&&arguments[1]!==void 0?arguments[1]:!0;return vo(this,r,e,qv)};function _v(r,e,t){if(t.isChild()){var a=t._private.parent;e.has(a.id())||r.push(a)}}v(_v,"addParent");ea.forEachUp=function(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return vo(this,r,e,_v)};function Gg(r,e,t){_v(r,e,t),qv(r,e,t)}v(Gg,"addParentAndChildren");ea.forEachUpAndDown=function(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return vo(this,r,e,Gg)};ea.ancestors=ea.parents;var Pa,Gv;Pa=Gv={data:Ve.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Ve.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Ve.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Ve.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Ve.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Ve.removeData({field:"rscratch",triggerEvent:!1}),id:v(function(){var e=this[0];if(e)return e._private.data.id},"id")};Pa.attr=Pa.data;Pa.removeAttr=Pa.removeData;var Hg=Gv,Gn={};function ys(r){return function(e){var t=this;if(e===void 0&&(e=!0),t.length!==0)if(t.isNode()&&!t.removed()){for(var a=0,n=t[0],i=n._private.edges,s=0;se}),minIndegree:Ft("indegree",function(r,e){return re}),minOutdegree:Ft("outdegree",function(r,e){return re})});we(Gn,{totalDegree:v(function(e){for(var t=0,a=this.nodes(),n=0;n0,d=c;c&&(f=f[0]);var g=d?f.position():{x:0,y:0};t!==void 0?u.position(e,t+g[e]):i!==void 0&&u.position({x:i.x+g.x,y:i.y+g.y})}else{var h=a.position(),m=o?a.parent():null,p=m&&m.length>0,y=p;p&&(m=m[0]);var b=y?m.position():{x:0,y:0};return i={x:h.x-b.x,y:h.y-b.y},e===void 0?i:i[e]}else if(!s)return;return this},"relativePosition")};Nr.modelPosition=Nr.point=Nr.position;Nr.modelPositions=Nr.points=Nr.positions;Nr.renderedPoint=Nr.renderedPosition;Nr.relativePoint=Nr.relativePosition;var Wg=Hv,Qt,yt;Qt=yt={};yt.renderedBoundingBox=function(r){var e=this.boundingBox(r),t=this.cy(),a=t.zoom(),n=t.pan(),i=e.x1*a+n.x,s=e.x2*a+n.x,o=e.y1*a+n.y,l=e.y2*a+n.y;return{x1:i,x2:s,y1:o,y2:l,w:s-i,h:l-o}};yt.dirtyCompoundBoundsCache=function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(t){if(t.isParent()){var a=t._private;a.compoundBoundsClean=!1,a.bbCache=null,r||t.emitAndNotify("bounds")}}),this)};yt.updateCompoundBounds=function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!r&&e.batching())return this;function t(s){if(!s.isParent())return;var o=s._private,l=s.children(),u=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},c=l.boundingBox({includeLabels:u,includeOverlays:!1,useCache:!1}),d=o.position;(c.w===0||c.h===0)&&(c={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},c.x1=d.x-c.w/2,c.x2=d.x+c.w/2,c.y1=d.y-c.h/2,c.y2=d.y+c.h/2);function g(D,B,P){var A=0,R=0,M=B+P;return D>0&&M>0&&(A=B/M*D,R=P/M*D),{biasDiff:A,biasComplementDiff:R}}v(g,"computeBiasValues");function h(D,B,P,A){if(P.units==="%")switch(A){case"width":return D>0?P.pfValue*D:0;case"height":return B>0?P.pfValue*B:0;case"average":return D>0&&B>0?P.pfValue*(D+B)/2:0;case"min":return D>0&&B>0?D>B?P.pfValue*B:P.pfValue*D:0;case"max":return D>0&&B>0?D>B?P.pfValue*D:P.pfValue*B:0;default:return 0}else return P.units==="px"?P.pfValue:0}v(h,"computePaddingValues");var m=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(m=m*100/f.width.val);var p=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(p=p*100/f.width.val);var y=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(y=y*100/f.height.val);var b=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(b=b*100/f.height.val);var w=g(f.width.val-c.w,m,p),x=w.biasDiff,C=w.biasComplementDiff,T=g(f.height.val-c.h,y,b),E=T.biasDiff,S=T.biasComplementDiff;o.autoPadding=h(c.w,c.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),o.autoWidth=Math.max(c.w,f.width.val),d.x=(-x+c.x1+c.x2+C)/2,o.autoHeight=Math.max(c.h,f.height.val),d.y=(-E+c.y1+c.y2+S)/2}v(t,"update");for(var a=0;ae.x2?n:e.x2,e.y1=ae.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},"updateBounds"),at=v(function(e,t){return t==null?e:Or(e,t.x1,t.y1,t.x2,t.y2)},"updateBoundsFromBox"),ca=v(function(e,t,a){return Sr(e,t,a)},"prefixedProperty"),en=v(function(e,t,a){if(!t.cy().headless()){var n=t._private,i=n.rstyle,s=i.arrowWidth/2,o=t.pstyle(a+"-arrow-shape").value,l,u;if(o!=="none"){a==="source"?(l=i.srcX,u=i.srcY):a==="target"?(l=i.tgtX,u=i.tgtY):(l=i.midX,u=i.midY);var f=n.arrowBounds=n.arrowBounds||{},c=f[a]=f[a]||{};c.x1=l-s,c.y1=u-s,c.x2=l+s,c.y2=u+s,c.w=c.x2-c.x1,c.h=c.y2-c.y1,ln(c,1),Or(e,c.x1,c.y1,c.x2,c.y2)}}},"updateBoundsFromArrow"),ms=v(function(e,t,a){if(!t.cy().headless()){var n;a?n=a+"-":n="";var i=t._private,s=i.rstyle,o=t.pstyle(n+"label").strValue;if(o){var l=t.pstyle("text-halign"),u=t.pstyle("text-valign"),f=ca(s,"labelWidth",a),c=ca(s,"labelHeight",a),d=ca(s,"labelX",a),g=ca(s,"labelY",a),h=t.pstyle(n+"text-margin-x").pfValue,m=t.pstyle(n+"text-margin-y").pfValue,p=t.isEdge(),y=t.pstyle(n+"text-rotation"),b=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue,x=w/2,C=t.pstyle("text-background-padding").pfValue,T=2,E=c,S=f,D=S/2,B=E/2,P,A,R,M;if(p)P=d-D,A=d+D,R=g-B,M=g+B;else{switch(l.value){case"left":P=d-S,A=d;break;case"center":P=d-D,A=d+D;break;case"right":P=d,A=d+S;break}switch(u.value){case"top":R=g-E,M=g;break;case"center":R=g-B,M=g+B;break;case"bottom":R=g,M=g+E;break}}var I=h-Math.max(b,x)-C-T,O=h+Math.max(b,x)+C+T,L=m-Math.max(b,x)-C-T,N=m+Math.max(b,x)+C+T;P+=I,A+=O,R+=L,M+=N;var q=a||"main",H=i.labelBounds,z=H[q]=H[q]||{};z.x1=P,z.y1=R,z.x2=A,z.y2=M,z.w=A-P,z.h=M-R,z.leftPad=I,z.rightPad=O,z.topPad=L,z.botPad=N;var V=p&&y.strValue==="autorotate",K=y.pfValue!=null&&y.pfValue!==0;if(V||K){var J=V?ca(i.rstyle,"labelAngle",a):y.pfValue,X=Math.cos(J),ee=Math.sin(J),te=(P+A)/2,ie=(R+M)/2;if(!p){switch(l.value){case"left":te=A;break;case"right":te=P;break}switch(u.value){case"top":ie=M;break;case"bottom":ie=R;break}}var j=v(function(Te,xe){return Te=Te-te,xe=xe-ie,{x:Te*X-xe*ee+te,y:Te*ee+xe*X+ie}},"rotate"),F=j(P,R),_=j(P,M),W=j(A,R),Z=j(A,M);P=Math.min(F.x,_.x,W.x,Z.x),A=Math.max(F.x,_.x,W.x,Z.x),R=Math.min(F.y,_.y,W.y,Z.y),M=Math.max(F.y,_.y,W.y,Z.y)}var ae=q+"Rot",de=H[ae]=H[ae]||{};de.x1=P,de.y1=R,de.x2=A,de.y2=M,de.w=A-P,de.h=M-R,Or(e,P,R,A,M),Or(i.labelBounds.all,P,R,A,M)}return e}},"updateBoundsFromLabel"),ul=v(function(e,t){if(!t.cy().headless()){var a=t.pstyle("outline-opacity").value,n=t.pstyle("outline-width").value,i=t.pstyle("outline-offset").value,s=n+i;$v(e,t,a,s,"outside",s/2)}},"updateBoundsFromOutline"),$v=v(function(e,t,a,n,i,s){if(!(a===0||n<=0||i==="inside")){var o=t.cy(),l=t.pstyle("shape").value,u=o.renderer().nodeShapes[l],f=t.position(),c=f.x,d=f.y,g=t.width(),h=t.height();if(u.hasMiterBounds){i==="center"&&(n/=2);var m=u.miterBounds(c,d,g,h,n);at(e,m)}else s!=null&&s>0&&vn(e,[s,s,s,s])}},"updateBoundsFromMiter"),$g=v(function(e,t){if(!t.cy().headless()){var a=t.pstyle("border-opacity").value,n=t.pstyle("border-width").pfValue,i=t.pstyle("border-position").value;$v(e,t,a,n,i)}},"updateBoundsFromMiterBorder"),Ug=v(function(e,t){var a=e._private.cy,n=a.styleEnabled(),i=a.headless(),s=xr(),o=e._private,l=e.isNode(),u=e.isEdge(),f,c,d,g,h,m,p=o.rstyle,y=l&&n?e.pstyle("bounds-expansion").pfValue:[0],b=v(function(Re){return Re.pstyle("display").value!=="none"},"isDisplayed"),w=!n||b(e)&&(!u||b(e.source())&&b(e.target()));if(w){var x=0,C=0;n&&t.includeOverlays&&(x=e.pstyle("overlay-opacity").value,x!==0&&(C=e.pstyle("overlay-padding").value));var T=0,E=0;n&&t.includeUnderlays&&(T=e.pstyle("underlay-opacity").value,T!==0&&(E=e.pstyle("underlay-padding").value));var S=Math.max(C,E),D=0,B=0;if(n&&(D=e.pstyle("width").pfValue,B=D/2),l&&t.includeNodes){var P=e.position();h=P.x,m=P.y;var A=e.outerWidth(),R=A/2,M=e.outerHeight(),I=M/2;f=h-R,c=h+R,d=m-I,g=m+I,Or(s,f,d,c,g),n&&ul(s,e),n&&t.includeOutlines&&!i&&ul(s,e),n&&$g(s,e)}else if(u&&t.includeEdges)if(n&&!i){var O=e.pstyle("curve-style").strValue;if(f=Math.min(p.srcX,p.midX,p.tgtX),c=Math.max(p.srcX,p.midX,p.tgtX),d=Math.min(p.srcY,p.midY,p.tgtY),g=Math.max(p.srcY,p.midY,p.tgtY),f-=B,c+=B,d-=B,g+=B,Or(s,f,d,c,g),O==="haystack"){var L=p.haystackPts;if(L&&L.length===2){if(f=L[0].x,d=L[0].y,c=L[1].x,g=L[1].y,f>c){var N=f;f=c,c=N}if(d>g){var q=d;d=g,g=q}Or(s,f-B,d-B,c+B,g+B)}}else if(O==="bezier"||O==="unbundled-bezier"||nt(O,"segments")||nt(O,"taxi")){var H;switch(O){case"bezier":case"unbundled-bezier":H=p.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":H=p.linePts;break}if(H!=null)for(var z=0;zc){var te=f;f=c,c=te}if(d>g){var ie=d;d=g,g=ie}f-=B,c+=B,d-=B,g+=B,Or(s,f,d,c,g)}if(n&&t.includeEdges&&u&&(en(s,e,"mid-source"),en(s,e,"mid-target"),en(s,e,"source"),en(s,e,"target")),n){var j=e.pstyle("ghost").value==="yes";if(j){var F=e.pstyle("ghost-offset-x").pfValue,_=e.pstyle("ghost-offset-y").pfValue;Or(s,s.x1+F,s.y1+_,s.x2+F,s.y2+_)}}var W=o.bodyBounds=o.bodyBounds||{};Ko(W,s),vn(W,y),ln(W,1),n&&(f=s.x1,c=s.x2,d=s.y1,g=s.y2,Or(s,f-S,d-S,c+S,g+S));var Z=o.overlayBounds=o.overlayBounds||{};Ko(Z,s),vn(Z,y),ln(Z,1);var ae=o.labelBounds=o.labelBounds||{};ae.all!=null?Dd(ae.all):ae.all=xr(),n&&t.includeLabels&&(t.includeMainLabels&&ms(s,e,null),u&&(t.includeSourceLabels&&ms(s,e,"source"),t.includeTargetLabels&&ms(s,e,"target")))}return s.x1=Rr(s.x1),s.y1=Rr(s.y1),s.x2=Rr(s.x2),s.y2=Rr(s.y2),s.w=Rr(s.x2-s.x1),s.h=Rr(s.y2-s.y1),s.w>0&&s.h>0&&w&&(vn(s,y),ln(s,1)),s},"boundingBoxImpl"),Uv=v(function(e){var t=0,a=v(function(s){return(s?1:0)<0&&arguments[0]!==void 0?arguments[0]:op,e=arguments.length>1?arguments[1]:void 0,t=0;t=0;o--)s(o);return this};ht.removeAllListeners=function(){return this.removeListener("*")};ht.emit=ht.trigger=function(r,e,t){var a=this.listeners,n=a.length;return this.emitting++,Ge(e)||(e=[e]),up(this,function(i,s){t!=null&&(a=[{event:s.event,type:s.type,namespace:s.namespace,callback:t}],n=a.length);for(var o=v(function(){var f=a[l];if(f.type===s.type&&(!f.namespace||f.namespace===s.namespace||f.namespace===sp)&&i.eventMatches(i.context,f,s)){var c=[s];e!=null&&Jc(c,e),i.beforeEmit(i.context,f,s),f.conf&&f.conf.one&&(i.listeners=i.listeners.filter(function(h){return h!==f}));var d=i.callbackContext(i.context,f,s),g=f.callback.apply(d,c);i.afterEmit(i.context,f,s),g===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),l=0;l1&&!s){var o=this.length-1,l=this[o],u=l._private.data.id;this[o]=void 0,this[e]=l,i.set(u,{ele:l,index:e})}return this.length--,this},"unmergeAt"),unmergeOne:v(function(e){e=e[0];var t=this._private,a=e._private.data.id,n=t.map,i=n.get(a);if(!i)return this;var s=i.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:v(function(e){var t=this._private.cy;if(!e)return this;if(e&&pe(e)){var a=e;e=t.mutableElements().filter(a)}for(var n=0;n=0;t--){var a=this[t];e(a)&&this.unmergeAt(t)}return this},"unmergeBy"),map:v(function(e,t){for(var a=[],n=this,i=0;ia&&(a=l,n=o)}return{value:a,ele:n}},"max"),min:v(function(e,t){for(var a=1/0,n,i=this,s=0;s=0&&i"u"?"undefined":nr(Symbol))!=e&&nr(Symbol.iterator)!=e;t&&(kn[Symbol.iterator]=function(){var a=this,n={value:void 0,done:!1},i=0,s=this.length;return jl({next:v(function(){return i1&&arguments[1]!==void 0?arguments[1]:!0,a=this[0],n=a.cy();if(n.styleEnabled()&&a){a._private.styleDirty&&(a._private.styleDirty=!1,n.style().apply(a));var i=a._private.style[e];return i??(t?n.style().getDefaultProperty(e):null)}},"parsedStyle"),numericStyle:v(function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var a=t.pstyle(e);return a.pfValue!==void 0?a.pfValue:a.value}},"numericStyle"),numericStyleUnits:v(function(e){var t=this[0];if(t.cy().styleEnabled()&&t)return t.pstyle(e).units},"numericStyleUnits"),renderedStyle:v(function(e){var t=this.cy();if(!t.styleEnabled())return this;var a=this[0];if(a)return t.style().getRenderedStyle(a,e)},"renderedStyle"),style:v(function(e,t){var a=this.cy();if(!a.styleEnabled())return this;var n=!1,i=a.style();if(Ie(e)){var s=e;i.applyBypass(this,s,n),this.emitAndNotify("style")}else if(pe(e))if(t===void 0){var o=this[0];return o?i.getStylePropertyValue(o,e):void 0}else i.applyBypass(this,e,t,n),this.emitAndNotify("style");else if(e===void 0){var l=this[0];return l?i.getRawStyle(l):void 0}return this},"style"),removeStyle:v(function(e){var t=this.cy();if(!t.styleEnabled())return this;var a=!1,n=t.style(),i=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(o[0])}return this.spawn(e,!0).filter(r)},"neighborhood"),closedNeighborhood:v(function(e){return this.neighborhood().add(this).filter(e)},"closedNeighborhood"),openNeighborhood:v(function(e){return this.neighborhood(e)},"openNeighborhood")});pr.neighbourhood=pr.neighborhood;pr.closedNeighbourhood=pr.closedNeighborhood;pr.openNeighbourhood=pr.openNeighborhood;we(pr,{source:Mr(v(function(e){var t=this[0],a;return t&&(a=t._private.source||t.cy().collection()),a&&e?a.filter(e):a},"sourceImpl"),"source"),target:Mr(v(function(e){var t=this[0],a;return t&&(a=t._private.target||t.cy().collection()),a&&e?a.filter(e):a},"targetImpl"),"target"),sources:bl({attr:"source"}),targets:bl({attr:"target"})});function bl(r){return v(function(t){for(var a=[],n=0;n0);return s},"components"),component:v(function(){var e=this[0];return e.cy().mutableElements().components(e)[0]},"component")});pr.componentsOf=pr.components;var cr=v(function(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Ue("A collection must have a reference to the core");return}var i=new Yr,s=!1;if(!t)t=[];else if(t.length>0&&Ie(t[0])&&!Oa(t[0])){s=!0;for(var o=[],l=new ta,u=0,f=t.length;u0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,t=this,a=t.cy(),n=a._private,i=[],s=[],o,l=0,u=t.length;l0){for(var q=o.length===t.length?t:new cr(a,o),H=0;H0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,t=this,a=[],n={},i=t._private.cy;function s(M){for(var I=M._private.edges,O=0;O0&&(r?P.emitAndNotify("remove"):e&&P.emit("remove"));for(var A=0;A0?A=M:P=M;while(Math.abs(R)>s&&++I=i?b(B,I):O===0?I:x(B,P,P+u)}v(C,"getTForX");var T=!1;function E(){T=!0,(r!==e||t!==a)&&w()}v(E,"precompute");var S=v(function(P){return T||E(),r===e&&t===a?P:P===0?0:P===1?1:p(C(P),e,a)},"f");S.getControlPoints=function(){return[{x:r,y:e},{x:t,y:a}]};var D="generateBezier("+[r,e,t,a]+")";return S.toString=function(){return D},S}v(mp,"generateCubicBezier");var bp=(function(){function r(a){return-a.tension*a.x-a.friction*a.v}v(r,"springAccelerationForState");function e(a,n,i){var s={x:a.x+i.dx*n,v:a.v+i.dv*n,tension:a.tension,friction:a.friction};return{dx:s.v,dv:r(s)}}v(e,"springEvaluateStateWithDerivative");function t(a,n){var i={dx:a.v,dv:r(a)},s=e(a,n*.5,i),o=e(a,n*.5,s),l=e(a,n,o),u=1/6*(i.dx+2*(s.dx+o.dx)+l.dx),f=1/6*(i.dv+2*(s.dv+o.dv)+l.dv);return a.x=a.x+u*n,a.v=a.v+f*n,a}return v(t,"springIntegrateState"),v(function a(n,i,s){var o={x:-1,v:0,tension:null,friction:null},l=[0],u=0,f=1/1e4,c=16/1e3,d,g,h;for(n=parseFloat(n)||500,i=parseFloat(i)||20,s=s||null,o.tension=n,o.friction=i,d=s!==null,d?(u=a(n,i),g=u/s*c):g=c;h=t(h||o,g),l.push(1+h.x),u+=16,Math.abs(h.x)>f&&Math.abs(h.v)>f;);return d?function(m){return l[m*(l.length-1)|0]}:u},"springRK4Factory")})(),He=v(function(e,t,a,n){var i=mp(e,t,a,n);return function(s,o,l){return s+(o-s)*i(l)}},"cubicBezier"),dn={linear:v(function(e,t,a){return e+(t-e)*a},"linear"),ease:He(.25,.1,.25,1),"ease-in":He(.42,0,1,1),"ease-out":He(0,0,.58,1),"ease-in-out":He(.42,0,.58,1),"ease-in-sine":He(.47,0,.745,.715),"ease-out-sine":He(.39,.575,.565,1),"ease-in-out-sine":He(.445,.05,.55,.95),"ease-in-quad":He(.55,.085,.68,.53),"ease-out-quad":He(.25,.46,.45,.94),"ease-in-out-quad":He(.455,.03,.515,.955),"ease-in-cubic":He(.55,.055,.675,.19),"ease-out-cubic":He(.215,.61,.355,1),"ease-in-out-cubic":He(.645,.045,.355,1),"ease-in-quart":He(.895,.03,.685,.22),"ease-out-quart":He(.165,.84,.44,1),"ease-in-out-quart":He(.77,0,.175,1),"ease-in-quint":He(.755,.05,.855,.06),"ease-out-quint":He(.23,1,.32,1),"ease-in-out-quint":He(.86,0,.07,1),"ease-in-expo":He(.95,.05,.795,.035),"ease-out-expo":He(.19,1,.22,1),"ease-in-out-expo":He(1,0,0,1),"ease-in-circ":He(.6,.04,.98,.335),"ease-out-circ":He(.075,.82,.165,1),"ease-in-out-circ":He(.785,.135,.15,.86),spring:v(function(e,t,a){if(a===0)return dn.linear;var n=bp(e,t,a);return function(i,s,o){return i+(s-i)*n(o)}},"spring"),"cubic-bezier":He};function El(r,e,t,a,n){if(a===1||e===t)return t;var i=n(e,t,a);return r==null||((r.roundValue||r.color)&&(i=Math.round(i)),r.min!==void 0&&(i=Math.max(i,r.min)),r.max!==void 0&&(i=Math.min(i,r.max))),i}v(El,"getEasedValue");function Cl(r,e){return r.pfValue!=null||r.value!=null?r.pfValue!=null&&(e==null||e.type.units!=="%")?r.pfValue:r.value:r}v(Cl,"getValue");function Vt(r,e,t,a,n){var i=n!=null?n.type:null;t<0?t=0:t>1&&(t=1);var s=Cl(r,n),o=Cl(e,n);if(ne(s)&&ne(o))return El(i,s,o,t,a);if(Ge(s)&&Ge(o)){for(var l=[],u=0;u0?(g==="spring"&&h.push(s.duration),s.easingImpl=dn[g].apply(null,h)):s.easingImpl=dn[g]}var m=s.easingImpl,p;if(s.duration===0?p=1:p=(t-l)/s.duration,s.applying&&(p=s.progress),p<0?p=0:p>1&&(p=1),s.delay==null){var y=s.startPosition,b=s.position;if(b&&n&&!r.locked()){var w={};ha(y.x,b.x)&&(w.x=Vt(y.x,b.x,p,m)),ha(y.y,b.y)&&(w.y=Vt(y.y,b.y,p,m)),r.position(w)}var x=s.startPan,C=s.pan,T=i.pan,E=C!=null&&a;E&&(ha(x.x,C.x)&&(T.x=Vt(x.x,C.x,p,m)),ha(x.y,C.y)&&(T.y=Vt(x.y,C.y,p,m)),r.emit("pan"));var S=s.startZoom,D=s.zoom,B=D!=null&&a;B&&(ha(S,D)&&(i.zoom=Da(i.minZoom,Vt(S,D,p,m),i.maxZoom)),r.emit("zoom")),(E||B)&&r.emit("viewport");var P=s.style;if(P&&P.length>0&&n){for(var A=0;A=0;E--){var S=T[E];S()}T.splice(0,T.length)},"callbacks"),b=g.length-1;b>=0;b--){var w=g[b],x=w._private;if(x.stopped){g.splice(b,1),x.hooked=!1,x.playing=!1,x.started=!1,y(x.frames);continue}!x.playing&&!x.applying||(x.playing&&x.applying&&(x.applying=!1),x.started||xp(f,w,r),wp(f,w,r,c),x.applying&&(x.applying=!1),y(x.frames),x.step!=null&&x.step(r),w.completed()&&(g.splice(b,1),x.hooked=!1,x.playing=!1,x.started=!1,y(x.completes)),m=!0)}return!c&&g.length===0&&h.length===0&&a.push(f),m}v(n,"stepOne");for(var i=!1,s=0;s0?e.notify("draw",t):e.notify("draw")),t.unmerge(a),e.emit("step")}v(Tl,"stepAll");var Ep={animate:Ve.animate(),animation:Ve.animation(),animated:Ve.animated(),clearQueue:Ve.clearQueue(),delay:Ve.delay(),delayAnimation:Ve.delayAnimation(),stop:Ve.stop(),addToAnimationPool:v(function(e){var t=this;t.styleEnabled()&&t._private.aniEles.merge(e)},"addToAnimationPool"),stopAnimationLoop:v(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:v(function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function t(){e._private.animationsRunning&&xn(v(function(i){Tl(i,e),t()},"animationStep"))}v(t,"headlessStep");var a=e.renderer();a&&a.beforeRender?a.beforeRender(v(function(i,s){Tl(s,e)},"rendererAnimationStep"),a.beforeRenderPriorities.animations):t()},"startAnimationLoop")},Cp={qualifierCompare:v(function(e,t){return e==null||t==null?e==null&&t==null:e.sameText(t)},"qualifierCompare"),eventMatches:v(function(e,t,a){var n=t.qualifier;return n!=null?e!==a.target&&Oa(a.target)&&n.matches(a.target):!0},"eventMatches"),addEventFields:v(function(e,t){t.cy=e,t.target=e},"addEventFields"),callbackContext:v(function(e,t,a){return t.qualifier!=null?a.target:e},"callbackContext")},an=v(function(e){return pe(e)?new ct(e):e},"argSelector"),af={createEmitter:v(function(){var e=this._private;return e.emitter||(e.emitter=new Hn(Cp,this)),this},"createEmitter"),emitter:v(function(){return this._private.emitter},"emitter"),on:v(function(e,t,a){return this.emitter().on(e,an(t),a),this},"on"),removeListener:v(function(e,t,a){return this.emitter().removeListener(e,an(t),a),this},"removeListener"),removeAllListeners:v(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:v(function(e,t,a){return this.emitter().one(e,an(t),a),this},"one"),once:v(function(e,t,a){return this.emitter().one(e,an(t),a),this},"once"),emit:v(function(e,t){return this.emitter().emit(e,t),this},"emit"),emitAndNotify:v(function(e,t){return this.emit(e),this.notify(e,t),this},"emitAndNotify")};Ve.eventAliasesOn(af);var Fs={png:v(function(e){var t=this._private.renderer;return e=e||{},t.png(e)},"png"),jpg:v(function(e){var t=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",t.jpg(e)},"jpg")};Fs.jpeg=Fs.jpg;var hn={layout:v(function(e){var t=this;if(e==null){Ue("Layout options must be specified to make a layout");return}if(e.name==null){Ue("A `name` must be specified to make a layout");return}var a=e.name,n=t.extension("layout",a);if(n==null){Ue("No such layout `"+a+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var i;pe(e.eles)?i=t.$(e.eles):i=e.eles!=null?e.eles:t.$();var s=new n(we({},e,{cy:t,eles:i}));return s},"layout")};hn.createLayout=hn.makeLayout=hn.layout;var Tp={notify:v(function(e,t){var a=this._private;if(this.batching()){a.batchNotifications=a.batchNotifications||{};var n=a.batchNotifications[e]=a.batchNotifications[e]||this.collection();t!=null&&n.merge(t);return}if(a.notificationsEnabled){var i=this.renderer();this.destroyed()||!i||i.notify(e,t)}},"notify"),notifications:v(function(e){var t=this._private;return e===void 0?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},"notifications"),noNotifications:v(function(e){this.notifications(!1),e(),this.notifications(!0)},"noNotifications"),batching:v(function(){return this._private.batchCount>0},"batching"),startBatch:v(function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},"startBatch"),endBatch:v(function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach(function(a){var n=e.batchNotifications[a];n.empty()?t.notify(a):t.notify(a,n)})}return this},"endBatch"),batch:v(function(e){return this.startBatch(),e(),this.endBatch(),this},"batch"),batchData:v(function(e){var t=this;return this.batch(function(){for(var a=Object.keys(e),n=0;n0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(a){var n=a._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},"destroyRenderer"),onRender:v(function(e){return this.on("render",e)},"onRender"),offRender:v(function(e){return this.off("render",e)},"offRender")};Vs.invalidateDimensions=Vs.resize;var gn={collection:v(function(e,t){return pe(e)?this.$(e):Br(e)?e.collection():Ge(e)?(t||(t={}),new cr(this,e,t.unique,t.removed)):new cr(this)},"collection"),nodes:v(function(e){var t=this.$(function(a){return a.isNode()});return e?t.filter(e):t},"nodes"),edges:v(function(e){var t=this.$(function(a){return a.isEdge()});return e?t.filter(e):t},"edges"),$:v(function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},"$"),mutableElements:v(function(){return this._private.elements},"mutableElements")};gn.elements=gn.filter=gn.$;var lr={},xa="t",kp="f";lr.apply=function(r){for(var e=this,t=e._private,a=t.cy,n=a.collection(),i=0;i0;if(d||c&&g){var h=void 0;d&&g||d?h=u.properties:g&&(h=u.mappedProperties);for(var m=0;m1&&(x=1),o.color){var T=a.valueMin[0],E=a.valueMax[0],S=a.valueMin[1],D=a.valueMax[1],B=a.valueMin[2],P=a.valueMax[2],A=a.valueMin[3]==null?1:a.valueMin[3],R=a.valueMax[3]==null?1:a.valueMax[3],M=[Math.round(T+(E-T)*x),Math.round(S+(D-S)*x),Math.round(B+(P-B)*x),Math.round(A+(R-A)*x)];i={bypass:a.bypass,name:a.name,value:M,strValue:"rgb("+M[0]+", "+M[1]+", "+M[2]+")"}}else if(o.number){var I=a.valueMin+(a.valueMax-a.valueMin)*x;i=this.parse(a.name,I,a.bypass,d)}else return!1;if(!i)return m(),!1;i.mapping=a,a=i;break}case s.data:{for(var O=a.field.split("."),L=c.data,N=0;N0&&i>0){for(var o={},l=!1,u=0;u0?r.delayAnimation(s).play().promise().then(w):w()}).then(function(){return r.animation({style:o,duration:i,easing:r.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){t.removeBypasses(r,n),r.emitAndNotify("style"),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(r,n),r.emitAndNotify("style"),a.transitioning=!1)};lr.checkTrigger=function(r,e,t,a,n,i){var s=this.properties[e],o=n(s);r.removed()||o!=null&&o(t,a,r)&&i(s)};lr.checkZOrderTrigger=function(r,e,t,a){var n=this;this.checkTrigger(r,e,t,a,function(i){return i.triggersZOrder},function(){n._private.cy.notify("zorder",r)})};lr.checkBoundsTrigger=function(r,e,t,a){this.checkTrigger(r,e,t,a,function(n){return n.triggersBounds},function(n){r.dirtyCompoundBoundsCache(),r.dirtyBoundingBoxCache()})};lr.checkConnectedEdgesBoundsTrigger=function(r,e,t,a){this.checkTrigger(r,e,t,a,function(n){return n.triggersBoundsOfConnectedEdges},function(n){r.connectedEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};lr.checkParallelEdgesBoundsTrigger=function(r,e,t,a){this.checkTrigger(r,e,t,a,function(n){return n.triggersBoundsOfParallelEdges},function(n){r.parallelEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};lr.checkTriggers=function(r,e,t,a){r.dirtyStyleCache(),this.checkZOrderTrigger(r,e,t,a),this.checkBoundsTrigger(r,e,t,a),this.checkConnectedEdgesBoundsTrigger(r,e,t,a),this.checkParallelEdgesBoundsTrigger(r,e,t,a)};var Ga={};Ga.applyBypass=function(r,e,t,a){var n=this,i=[],s=!0;if(e==="*"||e==="**"){if(t!==void 0)for(var o=0;on.length?a=a.substr(n.length):a=""}v(o,"removeSelAndBlockFromRemaining");function l(){i.length>s.length?i=i.substr(s.length):i=""}for(v(l,"removePropAndValFromRem");;){var u=a.match(/^\s*$/);if(u)break;var f=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){qe("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+a);break}n=f[0];var c=f[1];if(c!=="core"){var d=new ct(c);if(d.invalid){qe("Skipping parsing of block: Invalid selector found in string stylesheet: "+c),o();continue}}var g=f[2],h=!1;i=g;for(var m=[];;){var p=i.match(/^\s*$/);if(p)break;var y=i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!y){qe("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+g),h=!0;break}s=y[0];var b=y[1],w=y[2],x=e.properties[b];if(!x){qe("Skipping property: Invalid property name in: "+s),l();continue}var C=t.parse(b,w);if(!C){qe("Skipping property: Invalid property definition in: "+s),l();continue}m.push({name:b,val:w}),l()}if(h){o();break}t.selector(c);for(var T=0;T=7&&e[0]==="d"&&(f=new RegExp(o.data.regex).exec(e))){if(t)return!1;var d=o.data;return{name:r,value:f,strValue:""+e,mapped:d,field:f[1],bypass:t}}else if(e.length>=10&&e[0]==="m"&&(c=new RegExp(o.mapData.regex).exec(e))){if(t||u.multiple)return!1;var g=o.mapData;if(!(u.color||u.number))return!1;var h=this.parse(r,c[4]);if(!h||h.mapped)return!1;var m=this.parse(r,c[5]);if(!m||m.mapped)return!1;if(h.pfValue===m.pfValue||h.strValue===m.strValue)return qe("`"+r+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+r+": "+h.strValue+"`"),this.parse(r,h.strValue);if(u.color){var p=h.value,y=m.value,b=p[0]===y[0]&&p[1]===y[1]&&p[2]===y[2]&&(p[3]===y[3]||(p[3]==null||p[3]===1)&&(y[3]==null||y[3]===1));if(b)return!1}return{name:r,value:c,strValue:""+e,mapped:g,field:c[1],fieldMin:parseFloat(c[2]),fieldMax:parseFloat(c[3]),valueMin:h.value,valueMax:m.value,bypass:t}}}if(u.multiple&&a!=="multiple"){var w;if(l?w=e.split(/\s+/):Ge(e)?w=e:w=[e],u.evenMultiple&&w.length%2!==0)return null;for(var x=[],C=[],T=[],E="",S=!1,D=0;D0?" ":"")+B.strValue}return u.validate&&!u.validate(x,C)?null:u.singleEnum&&S?x.length===1&&pe(x[0])?{name:r,value:x[0],strValue:x[0],bypass:t}:null:{name:r,value:x,pfValue:T,strValue:E,bypass:t,units:C}}var P=v(function(){for(var j=0;ju.max||u.strictMax&&e===u.max))return null;var O={name:r,value:e,strValue:""+e+(A||""),units:A,bypass:t};return u.unitless||A!=="px"&&A!=="em"?O.pfValue=e:O.pfValue=A==="px"||!A?e:this.getEmSizeInPixels()*e,(A==="ms"||A==="s")&&(O.pfValue=A==="ms"?e:1e3*e),(A==="deg"||A==="rad")&&(O.pfValue=A==="rad"?e:Cd(e)),A==="%"&&(O.pfValue=e/100),O}else if(u.propList){var L=[],N=""+e;if(N!=="none"){for(var q=N.split(/\s*,\s*|\s+/),H=0;H0&&o>0&&!isNaN(a.w)&&!isNaN(a.h)&&a.w>0&&a.h>0){l=Math.min((s-2*t)/a.w,(o-2*t)/a.h),l=l>this._private.maxZoom?this._private.maxZoom:l,l=l=a.minZoom&&(a.maxZoom=t),this},"zoomRange"),minZoom:v(function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},"minZoom"),maxZoom:v(function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},"maxZoom"),getZoomedViewport:v(function(e){var t=this._private,a=t.pan,n=t.zoom,i,s,o=!1;if(t.zoomingEnabled||(o=!0),ne(e)?s=e:Ie(e)&&(s=e.level,e.position!=null?i=Nn(e.position,n,a):e.renderedPosition!=null&&(i=e.renderedPosition),i!=null&&!t.panningEnabled&&(o=!0)),s=s>t.maxZoom?t.maxZoom:s,s=st.maxZoom||!t.zoomingEnabled?s=!0:(t.zoom=l,i.push("zoom"))}if(n&&(!s||!e.cancelOnFailedZoom)&&t.panningEnabled){var u=e.pan;ne(u.x)&&(t.pan.x=u.x,o=!1),ne(u.y)&&(t.pan.y=u.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.join(" ")),this.notify("viewport")),this},"viewport"),center:v(function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:v(function(e,t){if(this._private.panningEnabled){if(pe(e)){var a=e;e=this.mutableElements().filter(a)}else Br(e)||(e=this.mutableElements());if(e.length!==0){var n=e.boundingBox(),i=this.width(),s=this.height();t=t===void 0?this._private.zoom:t;var o={x:(i-t*(n.x1+n.x2))/2,y:(s-t*(n.y1+n.y2))/2};return o}}},"getCenterPan"),reset:v(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:v(function(){this._private.sizeCache=null},"invalidateSize"),size:v(function(){var e=this._private,t=e.container,a=this;return e.sizeCache=e.sizeCache||(t?(function(){var n=a.window().getComputedStyle(t),i=v(function(o){return parseFloat(n.getPropertyValue(o))},"val");return{width:t.clientWidth-i("padding-left")-i("padding-right"),height:t.clientHeight-i("padding-top")-i("padding-bottom")}})():{width:1,height:1})},"size"),width:v(function(){return this.size().width},"width"),height:v(function(){return this.size().height},"height"),extent:v(function(){var e=this._private.pan,t=this._private.zoom,a=this.renderedExtent(),n={x1:(a.x1-e.x)/t,x2:(a.x2-e.x)/t,y1:(a.y1-e.y)/t,y2:(a.y2-e.y)/t};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},"extent"),renderedExtent:v(function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},"renderedExtent"),multiClickDebounceTime:v(function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};Mt.centre=Mt.center;Mt.autolockNodes=Mt.autolock;Mt.autoungrabifyNodes=Mt.autoungrabify;var Ra={data:Ve.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Ve.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Ve.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Ve.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Ra.attr=Ra.data;Ra.removeAttr=Ra.removeData;var Ma=v(function(e){var t=this;e=we({},e);var a=e.container;a&&!wn(a)&&wn(a[0])&&(a=a[0]);var n=a?a._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var i=n.readies=n.readies||[];a&&(a._cyreg=n),n.cy=t;var s=tr!==void 0&&a!==void 0&&!e.headless,o=e;o.layout=we({name:s?"grid":"null"},o.layout),o.renderer=we({name:s?"canvas":"null"},o.renderer);var l=v(function(h,m,p){return m!==void 0?m:p!==void 0?p:h},"defVal"),u=this._private={container:a,ready:!1,options:o,elements:new cr(this),listeners:[],aniEles:new cr(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:l(!0,o.zoomingEnabled),userZoomingEnabled:l(!0,o.userZoomingEnabled),panningEnabled:l(!0,o.panningEnabled),userPanningEnabled:l(!0,o.userPanningEnabled),boxSelectionEnabled:l(!0,o.boxSelectionEnabled),autolock:l(!1,o.autolock,o.autolockNodes),autoungrabify:l(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:l(!1,o.autounselectify),styleEnabled:o.styleEnabled===void 0?s:o.styleEnabled,zoom:ne(o.zoom)?o.zoom:1,pan:{x:Ie(o.pan)&&ne(o.pan.x)?o.pan.x:0,y:Ie(o.pan)&&ne(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:l(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var f=v(function(h,m){var p=h.some(yc);if(p)return aa.all(h).then(m);m(h)},"loadExtData");u.styleEnabled&&t.setStyle([]);var c=we({},o,o.renderer);t.initRenderer(c);var d=v(function(h,m,p){t.notifications(!1);var y=t.mutableElements();y.length>0&&y.remove(),h!=null&&(Ie(h)||Ge(h))&&t.add(h),t.one("layoutready",function(w){t.notifications(!0),t.emit(w),t.one("load",m),t.emitAndNotify("load")}).one("layoutstop",function(){t.one("done",p),t.emit("done")});var b=we({},t._private.options.layout);b.eles=t.elements(),t.layout(b).run()},"setElesAndLayout");f([o.style,o.elements],function(g){var h=g[0],m=g[1];u.styleEnabled&&t.style().append(h),d(m,function(){t.startAnimationLoop(),u.ready=!0,Ke(o.ready)&&t.on("ready",o.ready);for(var p=0;p0,o=!!r.boundingBox,l=xr(o?r.boundingBox:structuredClone(e.extent())),u;if(Br(r.roots))u=r.roots;else if(Ge(r.roots)){for(var f=[],c=0;c0;){var M=R(),I=D(M,P);if(I)M.outgoers().filter(function(me){return me.isNode()&&t.has(me)}).forEach(A);else if(I===null){qe("Detected double maximal shift for node `"+M.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var O=0;if(r.avoidOverlap)for(var L=0;L0&&y[0].length<=3?ye/2:0),Me=2*Math.PI/y[ge].length*Ce;return ge===0&&y[0].length===1&&(ke=1),{x:W.x+ke*Math.cos(Me),y:W.y+ke*Math.sin(Me)}}else{var Ne=y[ge].length,ze=Math.max(Ne===1?0:o?(l.w-r.padding*2-Z.w)/((r.grid?de:Ne)-1):(l.w-r.padding*2-Z.w)/((r.grid?de:Ne)+1),O),Fe={x:W.x+(Ce+1-(Ne+1)/2)*ze,y:W.y+(ge+1-(X+1)/2)*ae};return Fe}},"getPositionTopBottom"),Te={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Te).indexOf(r.direction)===-1&&Ue("Invalid direction '".concat(r.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Te).join(", ")));var xe=v(function(se){return Uc(Re(se),l,Te[r.direction])},"getPosition");return t.nodes().layoutPositions(this,r,xe),this};var Rp={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:v(function(e,t){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:v(function(e,t){return t},"transform")};function sf(r){this.options=we({},Rp,r)}v(sf,"CircleLayout");sf.prototype.run=function(){var r=this.options,e=r,t=r.cy,a=e.eles,n=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,i=a.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));for(var s=xr(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=e.sweep===void 0?2*Math.PI-2*Math.PI/i.length:e.sweep,u=l/Math.max(1,i.length-1),f,c=0,d=0;d1&&e.avoidOverlap){c*=1.75;var y=Math.cos(u)-Math.cos(0),b=Math.sin(u)-Math.sin(0),w=Math.sqrt(c*c/(y*y+b*b));f=Math.max(w,f)}var x=v(function(T,E){var S=e.startAngle+E*u*(n?1:-1),D=f*Math.cos(S),B=f*Math.sin(S),P={x:o.x+D,y:o.y+B};return P},"getPos");return a.nodes().layoutPositions(this,e,x),this};var Mp={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:v(function(e){return e.degree()},"concentric"),levelWidth:v(function(e){return e.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:v(function(e,t){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:v(function(e,t){return t},"transform")};function of(r){this.options=we({},Mp,r)}v(of,"ConcentricLayout");of.prototype.run=function(){for(var r=this.options,e=r,t=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=r.cy,n=e.eles,i=n.nodes().not(":parent"),s=xr(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:a.width(),h:a.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=[],u=0,f=0;f0){var C=Math.abs(b[0].value-x.value);C>=p&&(b=[],y.push(b))}b.push(x)}var T=u+e.minNodeSpacing;if(!e.avoidOverlap){var E=y.length>0&&y[0].length>1,S=Math.min(s.w,s.h)/2-T,D=S/(y.length+E?1:0);T=Math.min(T,D)}for(var B=0,P=0;P1&&e.avoidOverlap){var I=Math.cos(M)-Math.cos(0),O=Math.sin(M)-Math.sin(0),L=Math.sqrt(T*T/(I*I+O*O));B=Math.max(L,B)}A.r=B,B+=T}if(e.equidistant){for(var N=0,q=0,H=0;H=r.numIter||(Vp(a,r),a.temperature=a.temperature*r.coolingFactor,a.temperature=r.animationThreshold&&i(),xn(f)}},"frame");f()}else{for(;u;)u=s(l),l++;Dl(a,r),o()}return this};Xn.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};Xn.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Ip=v(function(e,t,a){for(var n=a.eles.edges(),i=a.eles.nodes(),s=xr(a.boundingBox?a.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:a.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},l=a.eles.components(),u={},f=0;f0){o.graphSet.push(S);for(var f=0;fn.count?0:n.graph},"findLCA"),uf=v(function(e,t,a,n){var i=n.graphSet[a];if(-10)var c=n.nodeOverlap*f,d=Math.sqrt(o*o+l*l),g=c*o/d,h=c*l/d;else var m=Bn(e,o,l),p=Bn(t,-1*o,-1*l),y=p.x-m.x,b=p.y-m.y,w=y*y+b*b,d=Math.sqrt(w),c=(e.nodeRepulsion+t.nodeRepulsion)/w,g=c*y/d,h=c*b/d;e.isLocked||(e.offsetX-=g,e.offsetY-=h),t.isLocked||(t.offsetX+=g,t.offsetY+=h)}},"nodeRepulsion"),Gp=v(function(e,t,a,n){if(a>0)var i=e.maxX-t.minX;else var i=t.maxX-e.minX;if(n>0)var s=e.maxY-t.minY;else var s=t.maxY-e.minY;return i>=0&&s>=0?Math.sqrt(i*i+s*s):0},"nodesOverlap"),Bn=v(function(e,t,a){var n=e.positionX,i=e.positionY,s=e.height||1,o=e.width||1,l=a/t,u=s/o,f={};return t===0&&0a?(f.x=n,f.y=i+s/2,f):0t&&-1*u<=l&&l<=u?(f.x=n-o/2,f.y=i-o*a/2/t,f):0=u)?(f.x=n+s*t/2/a,f.y=i+s/2,f):(0>a&&(l<=-1*u||l>=u)&&(f.x=n-s*t/2/a,f.y=i-s/2),f)},"findClippingPoint"),Hp=v(function(e,t){for(var a=0;aa){var p=t.gravity*g/m,y=t.gravity*h/m;d.offsetX+=p,d.offsetY+=y}}}}},"calculateGravityForces"),$p=v(function(e,t){var a=[],n=0,i=-1;for(a.push.apply(a,e.graphSet[0]),i+=e.graphSet[0].length;n<=i;){var s=a[n++],o=e.idToIndex[s],l=e.layoutNodes[o],u=l.children;if(0a)var i={x:a*e/n,y:a*t/n};else var i={x:e,y:t};return i},"limitForce"),vf=v(function(e,t){var a=e.parentId;if(a!=null){var n=t.layoutNodes[t.idToIndex[a]],i=!1;if((n.maxX==null||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(n.minX==null||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(n.minY==null||e.minY-n.padTopy&&(h+=p+t.componentSpacing,g=0,m=0,p=0)}}},"separateComponents"),Xp={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:v(function(e){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:v(function(e,t){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:v(function(e,t){return t},"transform")};function ff(r){this.options=we({},Xp,r)}v(ff,"GridLayout");ff.prototype.run=function(){var r=this.options,e=r,t=r.cy,a=e.eles,n=a.nodes().not(":parent");e.sort&&(n=n.sort(e.sort));var i=xr(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()});if(i.h===0||i.w===0)a.nodes().layoutPositions(this,e,function(K){return{x:i.x1,y:i.y1}});else{var s=n.size(),o=Math.sqrt(s*i.h/i.w),l=Math.round(o),u=Math.round(i.w/i.h*o),f=v(function(J){if(J==null)return Math.min(l,u);var X=Math.min(l,u);X==l?l=J:u=J},"small"),c=v(function(J){if(J==null)return Math.max(l,u);var X=Math.max(l,u);X==l?l=J:u=J},"large"),d=e.rows,g=e.cols!=null?e.cols:e.columns;if(d!=null&&g!=null)l=d,u=g;else if(d!=null&&g==null)l=d,u=Math.ceil(s/l);else if(d==null&&g!=null)u=g,l=Math.ceil(s/u);else if(u*l>s){var h=f(),m=c();(h-1)*m>=s?f(h-1):(m-1)*h>=s&&c(m-1)}else for(;u*l=s?c(y+1):f(p+1)}var b=i.w/u,w=i.h/l;if(e.condense&&(b=0,w=0),e.avoidOverlap)for(var x=0;x=u&&(I=0,M++)},"moveToNextCell"),L={},N=0;N(I=zd(r,e,O[L],O[L+1],O[L+2],O[L+3])))return p(E,I),!0}else if(D.edgeType==="bezier"||D.edgeType==="multibezier"||D.edgeType==="self"||D.edgeType==="compound"){for(var O=D.allpts,L=0;L+5(I=Nd(r,e,O[L],O[L+1],O[L+2],O[L+3],O[L+4],O[L+5])))return p(E,I),!0}for(var N=N||S.source,q=q||S.target,H=n.getArrowWidth(B,P),z=[{name:"source",x:D.arrowStartX,y:D.arrowStartY,angle:D.srcArrowAngle},{name:"target",x:D.arrowEndX,y:D.arrowEndY,angle:D.tgtArrowAngle},{name:"mid-source",x:D.midX,y:D.midY,angle:D.midsrcArrowAngle},{name:"mid-target",x:D.midX,y:D.midY,angle:D.midtgtArrowAngle}],L=0;L0&&(y(N),y(q))}v(b,"checkEdge");function w(E,S,D){return Sr(E,S,D)}v(w,"preprop");function x(E,S){var D=E._private,B=d,P;S?P=S+"-":P="",E.boundingBox();var A=D.labelBounds[S||"main"],R=E.pstyle(P+"label").value,M=E.pstyle("text-events").strValue==="yes";if(!(!M||!R)){var I=w(D.rscratch,"labelX",S),O=w(D.rscratch,"labelY",S),L=w(D.rscratch,"labelAngle",S),N=E.pstyle(P+"text-margin-x").pfValue,q=E.pstyle(P+"text-margin-y").pfValue,H=A.x1-B-N,z=A.x2+B-N,V=A.y1-B-q,K=A.y2+B-q;if(L){var J=Math.cos(L),X=Math.sin(L),ee=v(function(Z,ae){return Z=Z-I,ae=ae-O,{x:Z*J-ae*X+I,y:Z*X+ae*J+O}},"rotate"),te=ee(H,V),ie=ee(H,K),j=ee(z,V),F=ee(z,K),_=[te.x+N,te.y+q,j.x+N,j.y+q,F.x+N,F.y+q,ie.x+N,ie.y+q];if(kr(r,e,_))return p(E),!0}else if(it(A,r,e))return p(E),!0}}v(x,"checkLabel");for(var C=s.length-1;C>=0;C--){var T=s[C];T.isNode()?y(T)||x(T):b(T)||x(T)||x(T,"source")||x(T,"target")}return o};It.getAllInBox=function(r,e,t,a){var n=this.getCachedZSortedEles().interactive,i=this.cy.zoom(),s=2/i,o=[],l=Math.min(r,t),u=Math.max(r,t),f=Math.min(e,a),c=Math.max(e,a);r=l,t=u,e=f,a=c;var d=xr({x1:r,y1:e,x2:t,y2:a}),g=[{x:d.x1,y:d.y1},{x:d.x2,y:d.y1},{x:d.x2,y:d.y2},{x:d.x1,y:d.y2}],h=[[g[0],g[1]],[g[1],g[2]],[g[2],g[3]],[g[3],g[0]]];function m(Z,ae,de){return Sr(Z,ae,de)}v(m,"preprop");function p(Z,ae){var de=Z._private,Re=s,Te="";Z.boundingBox();var xe=de.labelBounds.main;if(!xe)return null;var me=m(de.rscratch,"labelX",ae),se=m(de.rscratch,"labelY",ae),he=m(de.rscratch,"labelAngle",ae),ge=Z.pstyle(Te+"text-margin-x").pfValue,Ce=Z.pstyle(Te+"text-margin-y").pfValue,ye=xe.x1-Re-ge,ke=xe.x2+Re-ge,Me=xe.y1-Re-Ce,Ne=xe.y2+Re-Ce;if(he){var ze=Math.cos(he),Fe=Math.sin(he),Ee=v(function(Y,k){return Y=Y-me,k=k-se,{x:Y*ze-k*Fe+me,y:Y*Fe+k*ze+se}},"rotate");return[Ee(ye,Me),Ee(ke,Me),Ee(ke,Ne),Ee(ye,Ne)]}else return[{x:ye,y:Me},{x:ke,y:Me},{x:ke,y:Ne},{x:ye,y:Ne}]}v(p,"getRotatedLabelBox");function y(Z,ae,de,Re){function Te(xe,me,se){return(se.y-xe.y)*(me.x-xe.x)>(me.y-xe.y)*(se.x-xe.x)}return v(Te,"ccw"),Te(Z,de,Re)!==Te(ae,de,Re)&&Te(Z,ae,de)!==Te(Z,ae,Re)}v(y,"doLinesIntersect");for(var b=0;b0?-(Math.PI-e.ang):Math.PI+e.ang},"invertVec"),ey=v(function(e,t,a,n,i){if(e!==Ml?Ll(t,e,qr):jp(Ar,qr),Ll(t,a,Ar),Al=qr.nx*Ar.ny-qr.ny*Ar.nx,Rl=qr.nx*Ar.nx-qr.ny*-Ar.ny,Kr=Math.asin(Math.max(-1,Math.min(1,Al))),Math.abs(Kr)<1e-6){qs=t.x,_s=t.y,St=_t=0;return}Dt=1,pn=!1,Rl<0?Kr<0?Kr=Math.PI+Kr:(Kr=Math.PI-Kr,Dt=-1,pn=!0):Kr>0&&(Dt=-1,pn=!0),t.radius!==void 0?_t=t.radius:_t=n,xt=Kr/2,nn=Math.min(qr.len/2,Ar.len/2),i?(Fr=Math.abs(Math.cos(xt)*_t/Math.sin(xt)),Fr>nn?(Fr=nn,St=Math.abs(Fr*Math.sin(xt)/Math.cos(xt))):St=_t):(Fr=Math.min(nn,_t),St=Math.abs(Fr*Math.sin(xt)/Math.cos(xt))),Gs=t.x+Ar.nx*Fr,Hs=t.y+Ar.ny*Fr,qs=Gs-Ar.ny*St*Dt,_s=Hs+Ar.nx*St*Dt,gf=t.x+qr.nx*Fr,pf=t.y+qr.ny*Fr,Ml=t},"calcCornerArc");function yf(r,e){e.radius===0?r.lineTo(e.cx,e.cy):r.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}v(yf,"drawPreparedRoundCorner");function yo(r,e,t,a){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return a===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(ey(r,e,t,a,n),{cx:qs,cy:_s,radius:St,startX:gf,startY:pf,stopX:Gs,stopY:Hs,startAngle:qr.ang+Math.PI/2*Dt,endAngle:Ar.ang-Math.PI/2*Dt,counterClockwise:pn})}v(yo,"getRoundCorner");var La=.01,ry=Math.sqrt(2*La),mr={};mr.findMidptPtsEtc=function(r,e){var t=e.posPts,a=e.intersectionPts,n=e.vectorNormInverse,i,s=r.pstyle("source-endpoint"),o=r.pstyle("target-endpoint"),l=s.units!=null&&o.units!=null,u=v(function(C,T,E,S){var D=S-T,B=E-C,P=Math.sqrt(B*B+D*D);return{x:-D/P,y:B/P}},"recalcVectorNormInverse"),f=r.pstyle("edge-distances").value;switch(f){case"node-position":i=t;break;case"intersection":i=a;break;case"endpoints":{if(l){var c=this.manualEndptToPx(r.source()[0],s),d=je(c,2),g=d[0],h=d[1],m=this.manualEndptToPx(r.target()[0],o),p=je(m,2),y=p[0],b=p[1],w={x1:g,y1:h,x2:y,y2:b};n=u(g,h,y,b),i=w}else qe("Edge ".concat(r.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),i=a;break}}return{midptPts:i,vectorNormInverse:n}};mr.findHaystackPoints=function(r){for(var e=0;e0?Math.max(k-G,0):Math.min(k+G,0)},"subDWH"),R=A(B,S),M=A(P,D),I=!1;b===u?y=Math.abs(R)>Math.abs(M)?n:a:b===l||b===o?(y=a,I=!0):(b===i||b===s)&&(y=n,I=!0);var O=y===a,L=O?M:R,N=O?P:B,q=ao(N),H=!1;!(I&&(x||T))&&(b===o&&N<0||b===l&&N>0||b===i&&N>0||b===s&&N<0)&&(q*=-1,L=q*Math.abs(L),H=!0);var z;if(x){var V=C<0?1+C:C;z=V*L}else{var K=C<0?L:0;z=K+C*q}var J=v(function(k){return Math.abs(k)=Math.abs(L)},"getIsTooClose"),X=J(z),ee=J(Math.abs(L)-Math.abs(z)),te=X||ee;if(te&&!H)if(O){var ie=Math.abs(N)<=d/2,j=Math.abs(B)<=g/2;if(ie){var F=(f.x1+f.x2)/2,_=f.y1,W=f.y2;t.segpts=[F,_,F,W]}else if(j){var Z=(f.y1+f.y2)/2,ae=f.x1,de=f.x2;t.segpts=[ae,Z,de,Z]}else t.segpts=[f.x1,f.y2]}else{var Re=Math.abs(N)<=c/2,Te=Math.abs(P)<=h/2;if(Re){var xe=(f.y1+f.y2)/2,me=f.x1,se=f.x2;t.segpts=[me,xe,se,xe]}else if(Te){var he=(f.x1+f.x2)/2,ge=f.y1,Ce=f.y2;t.segpts=[he,ge,he,Ce]}else t.segpts=[f.x2,f.y1]}else if(O){var ye=f.y1+z+(p?d/2*q:0),ke=f.x1,Me=f.x2;t.segpts=[ke,ye,Me,ye]}else{var Ne=f.x1+z+(p?c/2*q:0),ze=f.y1,Fe=f.y2;t.segpts=[Ne,ze,Ne,Fe]}if(t.isRound){var Ee=r.pstyle("taxi-radius").value,le=r.pstyle("radius-type").value[0]==="arc-radius";t.radii=new Array(t.segpts.length/2).fill(Ee),t.isArcRadius=new Array(t.segpts.length/2).fill(le)}};mr.tryToCorrectInvalidPoints=function(r,e){var t=r._private.rscratch;if(t.edgeType==="bezier"){var a=e.srcPos,n=e.tgtPos,i=e.srcW,s=e.srcH,o=e.tgtW,l=e.tgtH,u=e.srcShape,f=e.tgtShape,c=e.srcCornerRadius,d=e.tgtCornerRadius,g=e.srcRs,h=e.tgtRs,m=!ne(t.startX)||!ne(t.startY),p=!ne(t.arrowStartX)||!ne(t.arrowStartY),y=!ne(t.endX)||!ne(t.endY),b=!ne(t.arrowEndX)||!ne(t.arrowEndY),w=3,x=this.getArrowWidth(r.pstyle("width").pfValue,r.pstyle("arrow-scale").value)*this.arrowShapeWidth,C=w*x,T=At({x:t.ctrlpts[0],y:t.ctrlpts[1]},{x:t.startX,y:t.startY}),E=TN.poolIndex()){var q=L;L=N,N=q}var H=R.srcPos=L.position(),z=R.tgtPos=N.position(),V=R.srcW=L.outerWidth(),K=R.srcH=L.outerHeight(),J=R.tgtW=N.outerWidth(),X=R.tgtH=N.outerHeight(),ee=R.srcShape=t.nodeShapes[e.getNodeShape(L)],te=R.tgtShape=t.nodeShapes[e.getNodeShape(N)],ie=R.srcCornerRadius=L.pstyle("corner-radius").value==="auto"?"auto":L.pstyle("corner-radius").pfValue,j=R.tgtCornerRadius=N.pstyle("corner-radius").value==="auto"?"auto":N.pstyle("corner-radius").pfValue,F=R.tgtRs=N._private.rscratch,_=R.srcRs=L._private.rscratch;R.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var W=0;W=ry||(Me=Math.sqrt(Math.max(ke*ke,La)+Math.max(ye*ye,La)));var Ne=R.vector={x:ke,y:ye},ze=R.vectorNorm={x:Ne.x/Me,y:Ne.y/Me},Fe={x:-ze.y,y:ze.x};R.nodesOverlap=!ne(Me)||te.checkPoint(xe[0],xe[1],0,J,X,z.x,z.y,j,F)||ee.checkPoint(se[0],se[1],0,V,K,H.x,H.y,ie,_),R.vectorNormInverse=Fe,M={nodesOverlap:R.nodesOverlap,dirCounts:R.dirCounts,calculatedIntersection:!0,hasBezier:R.hasBezier,hasUnbundled:R.hasUnbundled,eles:R.eles,srcPos:z,srcRs:F,tgtPos:H,tgtRs:_,srcW:J,srcH:X,tgtW:V,tgtH:K,srcIntn:he,tgtIntn:me,srcShape:te,tgtShape:ee,posPts:{x1:Ce.x2,y1:Ce.y2,x2:Ce.x1,y2:Ce.y1},intersectionPts:{x1:ge.x2,y1:ge.y2,x2:ge.x1,y2:ge.y1},vector:{x:-Ne.x,y:-Ne.y},vectorNorm:{x:-ze.x,y:-ze.y},vectorNormInverse:{x:-Fe.x,y:-Fe.y}}}var Ee=Te?M:R;ae.nodesOverlap=Ee.nodesOverlap,ae.srcIntn=Ee.srcIntn,ae.tgtIntn=Ee.tgtIntn,ae.isRound=de.startsWith("round"),n&&(L.isParent()||L.isChild()||N.isParent()||N.isChild())&&(L.parents().anySame(N)||N.parents().anySame(L)||L.same(N)&&L.isParent())?e.findCompoundLoopPoints(Z,Ee,W,Re):L===N?e.findLoopPoints(Z,Ee,W,Re):de.endsWith("segments")?e.findSegmentsPoints(Z,Ee):de.endsWith("taxi")?e.findTaxiPoints(Z,Ee):de==="straight"||!Re&&R.eles.length%2===1&&W===Math.floor(R.eles.length/2)?e.findStraightEdgePoints(Z):e.findBezierPoints(Z,Ee,W,Re,Te),e.findEndpoints(Z),e.tryToCorrectInvalidPoints(Z,Ee),e.checkForInvalidEdgeWarning(Z),e.storeAllpts(Z),e.storeEdgeProjections(Z),e.calculateArrowAngles(Z),e.recalculateEdgeLabelProjections(Z),e.calculateLabelAngles(Z)}},"_loop"),E=0;E0){var xe=u,me=Tt(xe,$t(s)),se=Tt(xe,$t(Te)),he=me;if(se2){var ge=Tt(xe,{x:Te[2],y:Te[3]});ge0){var $=f,U=Tt($,$t(s)),Q=Tt($,$t(G)),ue=U;if(Q2){var re=Tt($,{x:G[2],y:G[3]});re=h||E){p={cp:x,segment:T};break}}if(p)break}var S=p.cp,D=p.segment,B=(h-y)/D.length,P=D.t1-D.t0,A=g?D.t0+P*B:D.t1-P*B;A=Da(0,A,1),e=Xt(S.p0,S.p1,S.p2,A),d=ay(S.p0,S.p1,S.p2,A);break}case"straight":case"segments":case"haystack":{for(var R=0,M,I,O,L,N=a.allpts.length,q=0;q+3=h));q+=2);var H=h-I,z=H/M;z=Da(0,z,1),e=Sd(O,L,z),d=wf(O,L);break}}s("labelX",c,e.x),s("labelY",c,e.y),s("labelAutoAngle",c,d)}},"calculateEndProjection");u("source"),u("target"),this.applyLabelDimensions(r)}};Hr.applyLabelDimensions=function(r){this.applyPrefixedLabelDimensions(r),r.isEdge()&&(this.applyPrefixedLabelDimensions(r,"source"),this.applyPrefixedLabelDimensions(r,"target"))};Hr.applyPrefixedLabelDimensions=function(r,e){var t=r._private,a=this.getLabelText(r,e),n=Pt(a,r._private.labelDimsKey);if(Sr(t.rscratch,"prefixedLabelDimsKey",e)!==n){Xr(t.rscratch,"prefixedLabelDimsKey",e,n);var i=this.calculateLabelDimensions(r,a),s=r.pstyle("line-height").pfValue,o=r.pstyle("text-wrap").strValue,l=Sr(t.rscratch,"labelWrapCachedLines",e)||[],u=o!=="wrap"?1:Math.max(l.length,1),f=i.height/u,c=f*s,d=i.width,g=i.height+(u-1)*(s-1)*f;Xr(t.rstyle,"labelWidth",e,d),Xr(t.rscratch,"labelWidth",e,d),Xr(t.rstyle,"labelHeight",e,g),Xr(t.rscratch,"labelHeight",e,g),Xr(t.rscratch,"labelLineHeight",e,c)}};Hr.getLabelText=function(r,e){var t=r._private,a=e?e+"-":"",n=r.pstyle(a+"label").strValue,i=r.pstyle("text-transform").value,s=v(function(K,J){return J?(Xr(t.rscratch,K,e,J),J):Sr(t.rscratch,K,e)},"rscratch");if(!n)return"";i=="none"||(i=="uppercase"?n=n.toUpperCase():i=="lowercase"&&(n=n.toLowerCase()));var o=r.pstyle("text-wrap").value;if(o==="wrap"){var l=s("labelKey");if(l!=null&&s("labelWrapKey")===l)return s("labelWrapCachedText");for(var u="\u200B",f=n.split(` diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-7RZVMHOQ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-3SSMPTDK.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-7RZVMHOQ.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-3SSMPTDK.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-3UWU4A3N.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-3UWU4A3N.mjs deleted file mode 100644 index b842f22..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-3UWU4A3N.mjs +++ /dev/null @@ -1,85 +0,0 @@ -import{b as T,c as Bi}from"./chunk-MGPAVIPZ.mjs";import{a as r,d as Ir}from"./chunk-VELTKBKT.mjs";var Si=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,Fi=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Li=/\s*%%.*\n/gm;var Vt=class extends Error{static{r(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}};var Yt={},ns=r(function(e,t){e=e.replace(Si,"").replace(Fi,"").replace(Li,` -`);for(let[i,{detector:a}]of Object.entries(Yt))if(a(e,t))return i;throw new Vt(`No diagram type detected matching given configuration for text: ${e}`)},"detectType"),hs=r((...e)=>{for(let{id:t,detector:i,loader:a}of e)Le(t,i,a)},"registerLazyLoadedDiagrams"),Le=r((e,t,i)=>{Yt[e]&&T.warn(`Detector with key ${e} already exists. Overwriting.`),Yt[e]={detector:t,loader:i},T.debug(`Detector with key ${e} added${i?" with loader":""}`)},"addDetector"),cs=r(e=>Yt[e].loader,"getDiagramLoader");var _e=r((e,t,{depth:i=2,clobber:a=!1}={})=>{let l={depth:i,clobber:a};return Array.isArray(t)&&!Array.isArray(e)?(t.forEach(c=>_e(e,c,l)),e):Array.isArray(t)&&Array.isArray(e)?(t.forEach(c=>{e.includes(c)||e.push(c)}),e):e===void 0||i<=0?e!=null&&typeof e=="object"&&typeof t=="object"?Object.assign(e,t):t:(t!==void 0&&typeof e=="object"&&typeof t=="object"&&Object.keys(t).forEach(c=>{typeof t[c]=="object"&&t[c]!==null&&(e[c]===void 0||typeof e[c]=="object")?(e[c]===void 0&&(e[c]=Array.isArray(t[c])?[]:{}),e[c]=_e(e[c],t[c],{depth:i-1,clobber:a})):(a||typeof e[c]!="object"&&typeof t[c]!="object")&&(e[c]=t[c])}),e)},"assignWithDepth"),D=_e;var Xt={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:r(e=>e>=255?255:e<0?0:e,"r"),g:r(e=>e>=255?255:e<0?0:e,"g"),b:r(e=>e>=255?255:e<0?0:e,"b"),h:r(e=>e%360,"h"),s:r(e=>e>=100?100:e<0?0:e,"s"),l:r(e=>e>=100?100:e<0?0:e,"l"),a:r(e=>e>=1?1:e<0?0:e,"a")},toLinear:r(e=>{let t=e/255;return e>.03928?Math.pow((t+.055)/1.055,2.4):t/12.92},"toLinear"),hue2rgb:r((e,t,i)=>(i<0&&(i+=1),i>1&&(i-=1),i<.16666666666666666?e+(t-e)*6*i:i<.5?t:i<.6666666666666666?e+(t-e)*(.6666666666666666-i)*6:e),"hue2rgb"),hsl2rgb:r(({h:e,s:t,l:i},a)=>{if(!t)return i*2.55;e/=360,t/=100,i/=100;let l=i<.5?i*(1+t):i+t-i*t,c=2*i-l;switch(a){case"r":return Xt.hue2rgb(c,l,e+.3333333333333333)*255;case"g":return Xt.hue2rgb(c,l,e)*255;case"b":return Xt.hue2rgb(c,l,e-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:r(({r:e,g:t,b:i},a)=>{e/=255,t/=255,i/=255;let l=Math.max(e,t,i),c=Math.min(e,t,i),f=(l+c)/2;if(a==="l")return f*100;if(l===c)return 0;let x=l-c,A=f>.5?x/(2-l-c):x/(l+c);if(a==="s")return A*100;switch(l){case e:return((t-i)/x+(tt>i?Math.min(t,Math.max(i,e)):Math.min(i,Math.max(t,e)),"clamp"),round:r(e=>Math.round(e*1e10)/1e10,"round")},Ai=qr;var zr={dec2hex:r(e=>{let t=Math.round(e).toString(16);return t.length>1?t:`0${t}`},"dec2hex")},Ei=zr;var Rr={channel:_i,lang:Ai,unit:Ei},C=Rr;var J={};for(let e=0;e<=255;e++)J[e]=C.unit.dec2hex(e);var F={ALL:0,RGB:1,HSL:2};var Ae=class{static{r(this,"Type")}constructor(){this.type=F.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=F.ALL}is(t){return this.type===t}},vi=Ae;var Ee=class{static{r(this,"Channels")}constructor(t,i){this.color=i,this.changed=!1,this.data=t,this.type=new vi}set(t,i){return this.color=i,this.changed=!1,this.data=t,this.type.type=F.ALL,this}_ensureHSL(){let t=this.data,{h:i,s:a,l}=t;i===void 0&&(t.h=C.channel.rgb2hsl(t,"h")),a===void 0&&(t.s=C.channel.rgb2hsl(t,"s")),l===void 0&&(t.l=C.channel.rgb2hsl(t,"l"))}_ensureRGB(){let t=this.data,{r:i,g:a,b:l}=t;i===void 0&&(t.r=C.channel.hsl2rgb(t,"r")),a===void 0&&(t.g=C.channel.hsl2rgb(t,"g")),l===void 0&&(t.b=C.channel.hsl2rgb(t,"b"))}get r(){let t=this.data,i=t.r;return!this.type.is(F.HSL)&&i!==void 0?i:(this._ensureHSL(),C.channel.hsl2rgb(t,"r"))}get g(){let t=this.data,i=t.g;return!this.type.is(F.HSL)&&i!==void 0?i:(this._ensureHSL(),C.channel.hsl2rgb(t,"g"))}get b(){let t=this.data,i=t.b;return!this.type.is(F.HSL)&&i!==void 0?i:(this._ensureHSL(),C.channel.hsl2rgb(t,"b"))}get h(){let t=this.data,i=t.h;return!this.type.is(F.RGB)&&i!==void 0?i:(this._ensureRGB(),C.channel.rgb2hsl(t,"h"))}get s(){let t=this.data,i=t.s;return!this.type.is(F.RGB)&&i!==void 0?i:(this._ensureRGB(),C.channel.rgb2hsl(t,"s"))}get l(){let t=this.data,i=t.l;return!this.type.is(F.RGB)&&i!==void 0?i:(this._ensureRGB(),C.channel.rgb2hsl(t,"l"))}get a(){return this.data.a}set r(t){this.type.set(F.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(F.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(F.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(F.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(F.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(F.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}},Mi=Ee;var Wr=new Mi({r:0,g:0,b:0,a:0},"transparent"),et=Wr;var Oi={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:r(e=>{if(e.charCodeAt(0)!==35)return;let t=e.match(Oi.re);if(!t)return;let i=t[1],a=parseInt(i,16),l=i.length,c=l%4===0,f=l>4,x=f?1:17,A=f?8:4,E=c?0:-1,U=f?255:15;return et.set({r:(a>>A*(E+3)&U)*x,g:(a>>A*(E+2)&U)*x,b:(a>>A*(E+1)&U)*x,a:c?(a&U)*x/255:1},e)},"parse"),stringify:r(e=>{let{r:t,g:i,b:a,a:l}=e;return l<1?`#${J[Math.round(t)]}${J[Math.round(i)]}${J[Math.round(a)]}${J[Math.round(l*255)]}`:`#${J[Math.round(t)]}${J[Math.round(i)]}${J[Math.round(a)]}`},"stringify")},nt=Oi;var Kt={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:r(e=>{let t=e.match(Kt.hueRe);if(t){let[,i,a]=t;switch(a){case"grad":return C.channel.clamp.h(parseFloat(i)*.9);case"rad":return C.channel.clamp.h(parseFloat(i)*180/Math.PI);case"turn":return C.channel.clamp.h(parseFloat(i)*360)}}return C.channel.clamp.h(parseFloat(e))},"_hue2deg"),parse:r(e=>{let t=e.charCodeAt(0);if(t!==104&&t!==72)return;let i=e.match(Kt.re);if(!i)return;let[,a,l,c,f,x]=i;return et.set({h:Kt._hue2deg(a),s:C.channel.clamp.s(parseFloat(l)),l:C.channel.clamp.l(parseFloat(c)),a:f?C.channel.clamp.a(x?parseFloat(f)/100:parseFloat(f)):1},e)},"parse"),stringify:r(e=>{let{h:t,s:i,l:a,a:l}=e;return l<1?`hsla(${C.lang.round(t)}, ${C.lang.round(i)}%, ${C.lang.round(a)}%, ${l})`:`hsl(${C.lang.round(t)}, ${C.lang.round(i)}%, ${C.lang.round(a)}%)`},"stringify")},Et=Kt;var Zt={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:r(e=>{e=e.toLowerCase();let t=Zt.colors[e];if(t)return nt.parse(t)},"parse"),stringify:r(e=>{let t=nt.stringify(e);for(let i in Zt.colors)if(Zt.colors[i]===t)return i},"stringify")},ve=Zt;var Di={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:r(e=>{let t=e.charCodeAt(0);if(t!==114&&t!==82)return;let i=e.match(Di.re);if(!i)return;let[,a,l,c,f,x,A,E,U]=i;return et.set({r:C.channel.clamp.r(l?parseFloat(a)*2.55:parseFloat(a)),g:C.channel.clamp.g(f?parseFloat(c)*2.55:parseFloat(c)),b:C.channel.clamp.b(A?parseFloat(x)*2.55:parseFloat(x)),a:E?C.channel.clamp.a(U?parseFloat(E)/100:parseFloat(E)):1},e)},"parse"),stringify:r(e=>{let{r:t,g:i,b:a,a:l}=e;return l<1?`rgba(${C.lang.round(t)}, ${C.lang.round(i)}, ${C.lang.round(a)}, ${C.lang.round(l)})`:`rgb(${C.lang.round(t)}, ${C.lang.round(i)}, ${C.lang.round(a)})`},"stringify")},vt=Di;var Pr={format:{keyword:ve,hex:nt,rgb:vt,rgba:vt,hsl:Et,hsla:Et},parse:r(e=>{if(typeof e!="string")return e;let t=nt.parse(e)||vt.parse(e)||Et.parse(e)||ve.parse(e);if(t)return t;throw new Error(`Unsupported color format: "${e}"`)},"parse"),stringify:r(e=>!e.changed&&e.color?e.color:e.type.is(F.HSL)||e.data.r===void 0?Et.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?vt.stringify(e):nt.stringify(e),"stringify")},L=Pr;var Nr=r((e,t)=>{let i=L.parse(e);for(let a in t)i[a]=C.channel.clamp[a](t[a]);return L.stringify(i)},"change"),Jt=Nr;var Hr=r((e,t,i=0,a=1)=>{if(typeof e!="number")return Jt(e,{a:t});let l=et.set({r:C.channel.clamp.r(e),g:C.channel.clamp.g(t),b:C.channel.clamp.b(i),a:C.channel.clamp.a(a)});return L.stringify(l)},"rgba"),Q=Hr;var Ur=r((e,t)=>C.lang.round(L.parse(e)[t]),"channel"),Gr=Ur;var $r=r(e=>{let{r:t,g:i,b:a}=L.parse(e),l=.2126*C.channel.toLinear(t)+.7152*C.channel.toLinear(i)+.0722*C.channel.toLinear(a);return C.lang.round(l)},"luminance"),wi=$r;var jr=r(e=>wi(e)>=.5,"isLight"),Ii=jr;var Vr=r(e=>!Ii(e),"isDark"),G=Vr;var Yr=r((e,t,i)=>{let a=L.parse(e),l=a[t],c=C.channel.clamp[t](l+i);return l!==c&&(a[t]=c),L.stringify(a)},"adjustChannel"),Tt=Yr;var Xr=r((e,t)=>Tt(e,"l",t),"lighten"),d=Xr;var Kr=r((e,t)=>Tt(e,"l",-t),"darken"),u=Kr;var Zr=r((e,t)=>Tt(e,"a",-t),"transparentize"),Jr=Zr;var Qr=r((e,t)=>{let i=L.parse(e),a={};for(let l in t)t[l]&&(a[l]=i[l]+t[l]);return Jt(e,a)},"adjust"),s=Qr;var to=r((e,t,i=50)=>{let{r:a,g:l,b:c,a:f}=L.parse(e),{r:x,g:A,b:E,a:U}=L.parse(t),Bt=i/100,ct=Bt*2-1,tt=f-U,gt=((ct*tt===-1?ct:(ct+tt)/(1+ct*tt))+1)/2,St=1-gt,ne=a*gt+x*St,he=l*gt+A*St,ut=c*gt+E*St,v=f*Bt+U*(1-Bt);return Q(ne,he,ut,v)},"mix"),qi=to;var eo=r((e,t=100)=>{let i=L.parse(e);return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,qi(i,e,t)},"invert"),h=eo;var it="#ffffff",rt="#f2f2f2";var B=r((e,t)=>t?s(e,{s:-40,l:10}):s(e,{s:-40,l:-10}),"mkBorder");var Me=class{static{r(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||s(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||s(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||B(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||B(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||B(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||B(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?u(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||u(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||d(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||u(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||u(this.mainBkg,10)):(this.rowOdd=this.rowOdd||d(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||d(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||s(this.primaryColor,{h:30}),this.cScale4=this.cScale4||s(this.primaryColor,{h:60}),this.cScale5=this.cScale5||s(this.primaryColor,{h:90}),this.cScale6=this.cScale6||s(this.primaryColor,{h:120}),this.cScale7=this.cScale7||s(this.primaryColor,{h:150}),this.cScale8=this.cScale8||s(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||s(this.primaryColor,{h:270}),this.cScale10=this.cScale10||s(this.primaryColor,{h:300}),this.cScale11=this.cScale11||s(this.primaryColor,{h:330}),this.darkMode)for(let i=0;i{this[a]=t[a]}),this.updateColors(),i.forEach(a=>{this[a]=t[a]})}},zi=r(e=>{let t=new Me;return t.calculate(e),t},"getThemeVariables");var Oe=class{static{r(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=d(this.primaryColor,16),this.tertiaryColor=s(this.primaryColor,{h:-160}),this.primaryBorderColor=h(this.background),this.secondaryBorderColor=B(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=B(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=d(h("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Q(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=u("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=u(this.sectionBkgColor,10),this.taskBorderColor=Q(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Q(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||d(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||u(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=d(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=d(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=d(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=h(this.doneTaskBkgColor),this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=s(this.primaryColor,{h:64}),this.fillType3=s(this.secondaryColor,{h:64}),this.fillType4=s(this.primaryColor,{h:-64}),this.fillType5=s(this.secondaryColor,{h:-64}),this.fillType6=s(this.primaryColor,{h:128}),this.fillType7=s(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||s(this.primaryColor,{h:30}),this.cScale4=this.cScale4||s(this.primaryColor,{h:60}),this.cScale5=this.cScale5||s(this.primaryColor,{h:90}),this.cScale6=this.cScale6||s(this.primaryColor,{h:120}),this.cScale7=this.cScale7||s(this.primaryColor,{h:150}),this.cScale8=this.cScale8||s(this.primaryColor,{h:210}),this.cScale9=this.cScale9||s(this.primaryColor,{h:270}),this.cScale10=this.cScale10||s(this.primaryColor,{h:300}),this.cScale11=this.cScale11||s(this.primaryColor,{h:330});for(let t=0;t{this[a]=t[a]}),this.updateColors(),i.forEach(a=>{this[a]=t[a]})}},Ri=r(e=>{let t=new Oe;return t.calculate(e),t},"getThemeVariables");var De=class{static{r(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=s(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=s(this.primaryColor,{h:-160}),this.primaryBorderColor=B(this.primaryColor,this.darkMode),this.secondaryBorderColor=B(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=B(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=Q(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||s(this.primaryColor,{h:30}),this.cScale4=this.cScale4||s(this.primaryColor,{h:60}),this.cScale5=this.cScale5||s(this.primaryColor,{h:90}),this.cScale6=this.cScale6||s(this.primaryColor,{h:120}),this.cScale7=this.cScale7||s(this.primaryColor,{h:150}),this.cScale8=this.cScale8||s(this.primaryColor,{h:210}),this.cScale9=this.cScale9||s(this.primaryColor,{h:270}),this.cScale10=this.cScale10||s(this.primaryColor,{h:300}),this.cScale11=this.cScale11||s(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||u(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||u(this.tertiaryColor,40);for(let t=0;t{this[a]==="calculated"&&(this[a]=void 0)}),typeof t!="object"){this.updateColors();return}let i=Object.keys(t);i.forEach(a=>{this[a]=t[a]}),this.updateColors(),i.forEach(a=>{this[a]=t[a]})}},Wi=r(e=>{let t=new De;return t.calculate(e),t},"getThemeVariables");var we=class{static{r(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=d("#cde498",10),this.primaryBorderColor=B(this.primaryColor,this.darkMode),this.secondaryBorderColor=B(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=B(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.primaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=u(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||s(this.primaryColor,{h:30}),this.cScale4=this.cScale4||s(this.primaryColor,{h:60}),this.cScale5=this.cScale5||s(this.primaryColor,{h:90}),this.cScale6=this.cScale6||s(this.primaryColor,{h:120}),this.cScale7=this.cScale7||s(this.primaryColor,{h:150}),this.cScale8=this.cScale8||s(this.primaryColor,{h:210}),this.cScale9=this.cScale9||s(this.primaryColor,{h:270}),this.cScale10=this.cScale10||s(this.primaryColor,{h:300}),this.cScale11=this.cScale11||s(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||u(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||u(this.tertiaryColor,40);for(let t=0;t{this[a]=t[a]}),this.updateColors(),i.forEach(a=>{this[a]=t[a]})}},Pi=r(e=>{let t=new we;return t.calculate(e),t},"getThemeVariables");var Ie=class{static{r(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=d(this.contrast,55),this.background="#ffffff",this.tertiaryColor=s(this.primaryColor,{h:-160}),this.primaryBorderColor=B(this.primaryColor,this.darkMode),this.secondaryBorderColor=B(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=B(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||d(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=d(this.contrast,55),this.border2=this.contrast,this.actorBorder=d(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[a]=t[a]}),this.updateColors(),i.forEach(a=>{this[a]=t[a]})}},Ni=r(e=>{let t=new Ie;return t.calculate(e),t},"getThemeVariables");var ot={base:{getThemeVariables:zi},dark:{getThemeVariables:Ri},default:{getThemeVariables:Wi},forest:{getThemeVariables:Pi},neutral:{getThemeVariables:Ni}};var N={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:null,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},ishikawa:{useMaxWidth:!0,diagramPadding:20},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},venn:{useMaxWidth:!0,width:800,height:450,padding:8,useDebugLayout:!1},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1};var Hi={...N,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:ot.default.getThemeVariables(),sequence:{...N.sequence,messageFont:r(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:r(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:r(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...N.gantt,tickInterval:void 0,useWidth:void 0},c4:{...N.c4,useWidth:void 0,personFont:r(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...N.flowchart,inheritDir:!1},external_personFont:r(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:r(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:r(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:r(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:r(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:r(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:r(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:r(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:r(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:r(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:r(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:r(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:r(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:r(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:r(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:r(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:r(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:r(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:r(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:r(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:r(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...N.pie,useWidth:984},xyChart:{...N.xyChart,useWidth:void 0},requirement:{...N.requirement,useWidth:void 0},packet:{...N.packet},radar:{...N.radar},ishikawa:{...N.ishikawa},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","},venn:{...N.venn}},Ui=r((e,t="")=>Object.keys(e).reduce((i,a)=>Array.isArray(e[a])?i:typeof e[a]=="object"&&e[a]!==null?[...i,t+a,...Ui(e[a],"")]:[...i,t+a],[]),"keyify"),Gi=new Set(Ui(Hi,"")),$i=Hi;var Qt=r(e=>{if(T.debug("sanitizeDirective called with",e),!(typeof e!="object"||e==null)){if(Array.isArray(e)){e.forEach(t=>Qt(t));return}for(let t of Object.keys(e)){if(T.debug("Checking key",t),t.startsWith("__")||t.includes("proto")||t.includes("constr")||!Gi.has(t)||e[t]==null){T.debug("sanitize deleting key: ",t),delete e[t];continue}if(typeof e[t]=="object"){T.debug("sanitizing object",t),Qt(e[t]);continue}let i=["themeCSS","fontFamily","altFontFamily"];for(let a of i)t.includes(a)&&(T.debug("sanitizing css option",t),e[t]=io(e[t]))}if(e.themeVariables)for(let t of Object.keys(e.themeVariables)){let i=e.themeVariables[t];i?.match&&!i.match(/^[\d "#%(),.;A-Za-z]+$/)&&(e.themeVariables[t]="")}T.debug("After sanitization",e)}},"sanitizeDirective"),io=r(e=>{let t=0,i=0;for(let a of e){if(t!(e===!1||["false","null","0"].includes(String(e).trim().toLowerCase())),"evaluate"),P=D({},Ot),te,ht=[],Mt=D({},Ot),ee=r((e,t)=>{let i=D({},e),a={};for(let l of t)Yi(l),a=D(a,l);if(i=D(i,a),a.theme&&a.theme in ot){let l=D({},te),c=D(l.themeVariables||{},a.themeVariables);i.theme&&i.theme in ot&&(i.themeVariables=ot[i.theme].getThemeVariables(c))}return Mt=i,Ki(Mt),Mt},"updateCurrentConfig"),ro=r(e=>(P=D({},Ot),P=D(P,e),e.theme&&ot[e.theme]&&(P.themeVariables=ot[e.theme].getThemeVariables(e.themeVariables)),ee(P,ht),P),"setSiteConfig"),on=r(e=>{te=D({},e)},"saveConfigFromInitialize"),sn=r(e=>(P=D(P,e),ee(P,ht),P),"updateSiteConfig"),an=r(()=>D({},P),"getSiteConfig"),Vi=r(e=>(Ki(e),D(Mt,e),Dt()),"setConfig"),Dt=r(()=>D({},Mt),"getConfig"),Yi=r(e=>{e&&(["secure",...P.secure??[]].forEach(t=>{Object.hasOwn(e,t)&&(T.debug(`Denied attempt to modify a secure key ${t}`,e[t]),delete e[t])}),Object.keys(e).forEach(t=>{t.startsWith("__")&&delete e[t]}),Object.keys(e).forEach(t=>{typeof e[t]=="string"&&(e[t].includes("<")||e[t].includes(">")||e[t].includes("url(data:"))&&delete e[t],typeof e[t]=="object"&&Yi(e[t])}))},"sanitize"),ln=r(e=>{Qt(e),e.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables={...e.themeVariables,fontFamily:e.fontFamily}),ht.push(e),ee(P,ht)},"addDirective"),nn=r((e=P)=>{ht=[],ee(e,ht)},"reset"),oo={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",FLOWCHART_HTML_LABELS_DEPRECATED:"flowchart.htmlLabels is deprecated. Please use global htmlLabels instead."},ji={},Xi=r(e=>{ji[e]||(T.warn(oo[e]),ji[e]=!0)},"issueWarning"),Ki=r(e=>{e&&(e.lazyLoadedDiagrams||e.loadExternalDiagramsAtStartup)&&Xi("LAZY_LOAD_DEPRECATED")},"checkConfig"),hn=r(()=>{let e={};te&&(e=D(e,te));for(let t of ht)e=D(e,t);return e},"getUserDefinedConfig"),Zi=r(e=>(e.flowchart?.htmlLabels!=null&&Xi("FLOWCHART_HTML_LABELS_DEPRECATED"),qe(e.htmlLabels??e.flowchart?.htmlLabels??!0)),"getEffectiveHtmlLabels");var{entries:ar,setPrototypeOf:Ji,isFrozen:so,getPrototypeOf:ao,getOwnPropertyDescriptor:lo}=Object,{freeze:z,seal:H,create:Ue}=Object,{apply:Ge,construct:$e}=typeof Reflect<"u"&&Reflect;z||(z=r(function(t){return t},"freeze"));H||(H=r(function(t){return t},"seal"));Ge||(Ge=r(function(t,i){for(var a=arguments.length,l=new Array(a>2?a-2:0),c=2;c1?i-1:0),l=1;l1?i-1:0),l=1;l2&&arguments[2]!==void 0?arguments[2]:oe;Ji&&Ji(e,null);let a=t.length;for(;a--;){let l=t[a];if(typeof l=="string"){let c=i(l);c!==l&&(so(t)||(t[a]=c),l=c)}e[l]=!0}return e}r(p,"addToSet");function Co(e){for(let t=0;t/gm),yo=H(/\$\{[\w\W]*/gm),bo=H(/^data-[\-\w.\u00B7-\uFFFF]+$/),To=H(/^aria-[\-\w]+$/),lr=H(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ko=H(/^(?:\w+script|data):/i),Bo=H(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),nr=H(/^html$/i),So=H(/^[a-z][.\w]*(-[.\w]+)+$/i),or=Object.freeze({__proto__:null,ARIA_ATTR:To,ATTR_WHITESPACE:Bo,CUSTOM_ELEMENT:So,DATA_ATTR:bo,DOCTYPE_NAME:nr,ERB_EXPR:xo,IS_ALLOWED_URI:lr,IS_SCRIPT_OR_DATA:ko,MUSTACHE_EXPR:fo,TMPLIT_EXPR:yo}),Rt={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Fo=r(function(){return typeof window>"u"?null:window},"getGlobal"),Lo=r(function(t,i){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let a=null,l="data-tt-policy-suffix";i&&i.hasAttribute(l)&&(a=i.getAttribute(l));let c="dompurify"+(a?"#"+a:"");try{return t.createPolicy(c,{createHTML(f){return f},createScriptURL(f){return f}})}catch{return console.warn("TrustedTypes policy "+c+" could not be created."),null}},"_createTrustedTypesPolicy"),sr=r(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");function hr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Fo(),t=r(m=>hr(m),"DOMPurify");if(t.version="3.3.1",t.removed=[],!e||!e.document||e.document.nodeType!==Rt.document||!e.Element)return t.isSupported=!1,t;let{document:i}=e,a=i,l=a.currentScript,{DocumentFragment:c,HTMLTemplateElement:f,Node:x,Element:A,NodeFilter:E,NamedNodeMap:U=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:Bt,DOMParser:ct,trustedTypes:tt}=e,dt=A.prototype,gt=zt(dt,"cloneNode"),St=zt(dt,"remove"),ne=zt(dt,"nextSibling"),he=zt(dt,"childNodes"),ut=zt(dt,"parentNode");if(typeof f=="function"){let m=i.createElement("template");m.content&&m.content.ownerDocument&&(i=m.content.ownerDocument)}let v,Ft="",{implementation:ce,createNodeIterator:yr,createDocumentFragment:br,getElementsByTagName:Tr}=i,{importNode:kr}=a,I=sr();t.isSupported=typeof ar=="function"&&typeof ut=="function"&&ce&&ce.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:de,ERB_EXPR:ge,TMPLIT_EXPR:ue,DATA_ATTR:Br,ARIA_ATTR:Sr,IS_SCRIPT_OR_DATA:Fr,ATTR_WHITESPACE:Qe,CUSTOM_ELEMENT:Lr}=or,{IS_ALLOWED_URI:ti}=or,_=null,ei=p({},[...tr,...We,...Pe,...Ne,...er]),M=null,ii=p({},[...ir,...He,...rr,...re]),b=Object.seal(Ue(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Lt=null,Ce=null,Ct=Object.seal(Ue(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),ri=!0,me=!0,oi=!1,si=!0,mt=!1,Pt=!0,at=!1,pe=!1,fe=!1,pt=!1,Nt=!1,Ht=!1,ai=!0,li=!1,_r="user-content-",xe=!0,_t=!1,ft={},j=null,ye=p({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ni=null,hi=p({},["audio","video","img","source","image","track"]),be=null,ci=p({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ut="http://www.w3.org/1998/Math/MathML",Gt="http://www.w3.org/2000/svg",X="http://www.w3.org/1999/xhtml",xt=X,Te=!1,ke=null,Ar=p({},[Ut,Gt,X],ze),$t=p({},["mi","mo","mn","ms","mtext"]),jt=p({},["annotation-xml"]),Er=p({},["title","style","font","a","script"]),At=null,vr=["application/xhtml+xml","text/html"],Mr="text/html",S=null,yt=null,Or=i.createElement("form"),di=r(function(o){return o instanceof RegExp||o instanceof Function},"isRegexOrFunction"),Be=r(function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(yt&&yt===o)){if((!o||typeof o!="object")&&(o={}),o=Y(o),At=vr.indexOf(o.PARSER_MEDIA_TYPE)===-1?Mr:o.PARSER_MEDIA_TYPE,S=At==="application/xhtml+xml"?ze:oe,_=$(o,"ALLOWED_TAGS")?p({},o.ALLOWED_TAGS,S):ei,M=$(o,"ALLOWED_ATTR")?p({},o.ALLOWED_ATTR,S):ii,ke=$(o,"ALLOWED_NAMESPACES")?p({},o.ALLOWED_NAMESPACES,ze):Ar,be=$(o,"ADD_URI_SAFE_ATTR")?p(Y(ci),o.ADD_URI_SAFE_ATTR,S):ci,ni=$(o,"ADD_DATA_URI_TAGS")?p(Y(hi),o.ADD_DATA_URI_TAGS,S):hi,j=$(o,"FORBID_CONTENTS")?p({},o.FORBID_CONTENTS,S):ye,Lt=$(o,"FORBID_TAGS")?p({},o.FORBID_TAGS,S):Y({}),Ce=$(o,"FORBID_ATTR")?p({},o.FORBID_ATTR,S):Y({}),ft=$(o,"USE_PROFILES")?o.USE_PROFILES:!1,ri=o.ALLOW_ARIA_ATTR!==!1,me=o.ALLOW_DATA_ATTR!==!1,oi=o.ALLOW_UNKNOWN_PROTOCOLS||!1,si=o.ALLOW_SELF_CLOSE_IN_ATTR!==!1,mt=o.SAFE_FOR_TEMPLATES||!1,Pt=o.SAFE_FOR_XML!==!1,at=o.WHOLE_DOCUMENT||!1,pt=o.RETURN_DOM||!1,Nt=o.RETURN_DOM_FRAGMENT||!1,Ht=o.RETURN_TRUSTED_TYPE||!1,fe=o.FORCE_BODY||!1,ai=o.SANITIZE_DOM!==!1,li=o.SANITIZE_NAMED_PROPS||!1,xe=o.KEEP_CONTENT!==!1,_t=o.IN_PLACE||!1,ti=o.ALLOWED_URI_REGEXP||lr,xt=o.NAMESPACE||X,$t=o.MATHML_TEXT_INTEGRATION_POINTS||$t,jt=o.HTML_INTEGRATION_POINTS||jt,b=o.CUSTOM_ELEMENT_HANDLING||{},o.CUSTOM_ELEMENT_HANDLING&&di(o.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(b.tagNameCheck=o.CUSTOM_ELEMENT_HANDLING.tagNameCheck),o.CUSTOM_ELEMENT_HANDLING&&di(o.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(b.attributeNameCheck=o.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),o.CUSTOM_ELEMENT_HANDLING&&typeof o.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(b.allowCustomizedBuiltInElements=o.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),mt&&(me=!1),Nt&&(pt=!0),ft&&(_=p({},er),M=[],ft.html===!0&&(p(_,tr),p(M,ir)),ft.svg===!0&&(p(_,We),p(M,He),p(M,re)),ft.svgFilters===!0&&(p(_,Pe),p(M,He),p(M,re)),ft.mathMl===!0&&(p(_,Ne),p(M,rr),p(M,re))),o.ADD_TAGS&&(typeof o.ADD_TAGS=="function"?Ct.tagCheck=o.ADD_TAGS:(_===ei&&(_=Y(_)),p(_,o.ADD_TAGS,S))),o.ADD_ATTR&&(typeof o.ADD_ATTR=="function"?Ct.attributeCheck=o.ADD_ATTR:(M===ii&&(M=Y(M)),p(M,o.ADD_ATTR,S))),o.ADD_URI_SAFE_ATTR&&p(be,o.ADD_URI_SAFE_ATTR,S),o.FORBID_CONTENTS&&(j===ye&&(j=Y(j)),p(j,o.FORBID_CONTENTS,S)),o.ADD_FORBID_CONTENTS&&(j===ye&&(j=Y(j)),p(j,o.ADD_FORBID_CONTENTS,S)),xe&&(_["#text"]=!0),at&&p(_,["html","head","body"]),_.table&&(p(_,["tbody"]),delete Lt.tbody),o.TRUSTED_TYPES_POLICY){if(typeof o.TRUSTED_TYPES_POLICY.createHTML!="function")throw qt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof o.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw qt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');v=o.TRUSTED_TYPES_POLICY,Ft=v.createHTML("")}else v===void 0&&(v=Lo(tt,l)),v!==null&&typeof Ft=="string"&&(Ft=v.createHTML(""));z&&z(o),yt=o}},"_parseConfig"),gi=p({},[...We,...Pe,...mo]),ui=p({},[...Ne,...po]),Dr=r(function(o){let n=ut(o);(!n||!n.tagName)&&(n={namespaceURI:xt,tagName:"template"});let g=oe(o.tagName),y=oe(n.tagName);return ke[o.namespaceURI]?o.namespaceURI===Gt?n.namespaceURI===X?g==="svg":n.namespaceURI===Ut?g==="svg"&&(y==="annotation-xml"||$t[y]):!!gi[g]:o.namespaceURI===Ut?n.namespaceURI===X?g==="math":n.namespaceURI===Gt?g==="math"&&jt[y]:!!ui[g]:o.namespaceURI===X?n.namespaceURI===Gt&&!jt[y]||n.namespaceURI===Ut&&!$t[y]?!1:!ui[g]&&(Er[g]||!gi[g]):!!(At==="application/xhtml+xml"&&ke[o.namespaceURI]):!1},"_checkValidNamespace"),V=r(function(o){wt(t.removed,{element:o});try{ut(o).removeChild(o)}catch{St(o)}},"_forceRemove"),lt=r(function(o,n){try{wt(t.removed,{attribute:n.getAttributeNode(o),from:n})}catch{wt(t.removed,{attribute:null,from:n})}if(n.removeAttribute(o),o==="is")if(pt||Nt)try{V(n)}catch{}else try{n.setAttribute(o,"")}catch{}},"_removeAttribute"),Ci=r(function(o){let n=null,g=null;if(fe)o=""+o;else{let k=Re(o,/^[\r\n\t ]+/);g=k&&k[0]}At==="application/xhtml+xml"&&xt===X&&(o=''+o+"");let y=v?v.createHTML(o):o;if(xt===X)try{n=new ct().parseFromString(y,At)}catch{}if(!n||!n.documentElement){n=ce.createDocument(xt,"template",null);try{n.documentElement.innerHTML=Te?Ft:y}catch{}}let w=n.body||n.documentElement;return o&&g&&w.insertBefore(i.createTextNode(g),w.childNodes[0]||null),xt===X?Tr.call(n,at?"html":"body")[0]:at?n.documentElement:w},"_initDocument"),mi=r(function(o){return yr.call(o.ownerDocument||o,o,E.SHOW_ELEMENT|E.SHOW_COMMENT|E.SHOW_TEXT|E.SHOW_PROCESSING_INSTRUCTION|E.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),Se=r(function(o){return o instanceof Bt&&(typeof o.nodeName!="string"||typeof o.textContent!="string"||typeof o.removeChild!="function"||!(o.attributes instanceof U)||typeof o.removeAttribute!="function"||typeof o.setAttribute!="function"||typeof o.namespaceURI!="string"||typeof o.insertBefore!="function"||typeof o.hasChildNodes!="function")},"_isClobbered"),pi=r(function(o){return typeof x=="function"&&o instanceof x},"_isNode");function K(m,o,n){ie(m,g=>{g.call(t,o,n,yt)})}r(K,"_executeHooks");let fi=r(function(o){let n=null;if(K(I.beforeSanitizeElements,o,null),Se(o))return V(o),!0;let g=S(o.nodeName);if(K(I.uponSanitizeElement,o,{tagName:g,allowedTags:_}),Pt&&o.hasChildNodes()&&!pi(o.firstElementChild)&&q(/<[/\w!]/g,o.innerHTML)&&q(/<[/\w!]/g,o.textContent)||o.nodeType===Rt.progressingInstruction||Pt&&o.nodeType===Rt.comment&&q(/<[/\w]/g,o.data))return V(o),!0;if(!(Ct.tagCheck instanceof Function&&Ct.tagCheck(g))&&(!_[g]||Lt[g])){if(!Lt[g]&&yi(g)&&(b.tagNameCheck instanceof RegExp&&q(b.tagNameCheck,g)||b.tagNameCheck instanceof Function&&b.tagNameCheck(g)))return!1;if(xe&&!j[g]){let y=ut(o)||o.parentNode,w=he(o)||o.childNodes;if(w&&y){let k=w.length;for(let W=k-1;W>=0;--W){let Z=gt(w[W],!0);Z.__removalCount=(o.__removalCount||0)+1,y.insertBefore(Z,ne(o))}}}return V(o),!0}return o instanceof A&&!Dr(o)||(g==="noscript"||g==="noembed"||g==="noframes")&&q(/<\/no(script|embed|frames)/i,o.innerHTML)?(V(o),!0):(mt&&o.nodeType===Rt.text&&(n=o.textContent,ie([de,ge,ue],y=>{n=It(n,y," ")}),o.textContent!==n&&(wt(t.removed,{element:o.cloneNode()}),o.textContent=n)),K(I.afterSanitizeElements,o,null),!1)},"_sanitizeElements"),xi=r(function(o,n,g){if(ai&&(n==="id"||n==="name")&&(g in i||g in Or))return!1;if(!(me&&!Ce[n]&&q(Br,n))){if(!(ri&&q(Sr,n))){if(!(Ct.attributeCheck instanceof Function&&Ct.attributeCheck(n,o))){if(!M[n]||Ce[n]){if(!(yi(o)&&(b.tagNameCheck instanceof RegExp&&q(b.tagNameCheck,o)||b.tagNameCheck instanceof Function&&b.tagNameCheck(o))&&(b.attributeNameCheck instanceof RegExp&&q(b.attributeNameCheck,n)||b.attributeNameCheck instanceof Function&&b.attributeNameCheck(n,o))||n==="is"&&b.allowCustomizedBuiltInElements&&(b.tagNameCheck instanceof RegExp&&q(b.tagNameCheck,g)||b.tagNameCheck instanceof Function&&b.tagNameCheck(g))))return!1}else if(!be[n]){if(!q(ti,It(g,Qe,""))){if(!((n==="src"||n==="xlink:href"||n==="href")&&o!=="script"&&co(g,"data:")===0&&ni[o])){if(!(oi&&!q(Fr,It(g,Qe,"")))){if(g)return!1}}}}}}}return!0},"_isValidAttribute"),yi=r(function(o){return o!=="annotation-xml"&&Re(o,Lr)},"_isBasicCustomElement"),bi=r(function(o){K(I.beforeSanitizeAttributes,o,null);let{attributes:n}=o;if(!n||Se(o))return;let g={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:M,forceKeepAttr:void 0},y=n.length;for(;y--;){let w=n[y],{name:k,namespaceURI:W,value:Z}=w,bt=S(k),Fe=Z,O=k==="value"?Fe:go(Fe);if(g.attrName=bt,g.attrValue=O,g.keepAttr=!0,g.forceKeepAttr=void 0,K(I.uponSanitizeAttribute,o,g),O=g.attrValue,li&&(bt==="id"||bt==="name")&&(lt(k,o),O=_r+O),Pt&&q(/((--!?|])>)|<\/(style|title|textarea)/i,O)){lt(k,o);continue}if(bt==="attributename"&&Re(O,"href")){lt(k,o);continue}if(g.forceKeepAttr)continue;if(!g.keepAttr){lt(k,o);continue}if(!si&&q(/\/>/i,O)){lt(k,o);continue}mt&&ie([de,ge,ue],ki=>{O=It(O,ki," ")});let Ti=S(o.nodeName);if(!xi(Ti,bt,O)){lt(k,o);continue}if(v&&typeof tt=="object"&&typeof tt.getAttributeType=="function"&&!W)switch(tt.getAttributeType(Ti,bt)){case"TrustedHTML":{O=v.createHTML(O);break}case"TrustedScriptURL":{O=v.createScriptURL(O);break}}if(O!==Fe)try{W?o.setAttributeNS(W,k,O):o.setAttribute(k,O),Se(o)?V(o):Qi(t.removed)}catch{lt(k,o)}}K(I.afterSanitizeAttributes,o,null)},"_sanitizeAttributes"),wr=r(function m(o){let n=null,g=mi(o);for(K(I.beforeSanitizeShadowDOM,o,null);n=g.nextNode();)K(I.uponSanitizeShadowNode,n,null),fi(n),bi(n),n.content instanceof c&&m(n.content);K(I.afterSanitizeShadowDOM,o,null)},"_sanitizeShadowDOM");return t.sanitize=function(m){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=null,g=null,y=null,w=null;if(Te=!m,Te&&(m=""),typeof m!="string"&&!pi(m))if(typeof m.toString=="function"){if(m=m.toString(),typeof m!="string")throw qt("dirty is not a string, aborting")}else throw qt("toString is not a function");if(!t.isSupported)return m;if(pe||Be(o),t.removed=[],typeof m=="string"&&(_t=!1),_t){if(m.nodeName){let Z=S(m.nodeName);if(!_[Z]||Lt[Z])throw qt("root node is forbidden and cannot be sanitized in-place")}}else if(m instanceof x)n=Ci(""),g=n.ownerDocument.importNode(m,!0),g.nodeType===Rt.element&&g.nodeName==="BODY"||g.nodeName==="HTML"?n=g:n.appendChild(g);else{if(!pt&&!mt&&!at&&m.indexOf("<")===-1)return v&&Ht?v.createHTML(m):m;if(n=Ci(m),!n)return pt?null:Ht?Ft:""}n&&fe&&V(n.firstChild);let k=mi(_t?m:n);for(;y=k.nextNode();)fi(y),bi(y),y.content instanceof c&&wr(y.content);if(_t)return m;if(pt){if(Nt)for(w=br.call(n.ownerDocument);n.firstChild;)w.appendChild(n.firstChild);else w=n;return(M.shadowroot||M.shadowrootmode)&&(w=kr.call(a,w,!0)),w}let W=at?n.outerHTML:n.innerHTML;return at&&_["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&q(nr,n.ownerDocument.doctype.name)&&(W=" -`+W),mt&&ie([de,ge,ue],Z=>{W=It(W,Z," ")}),v&&Ht?v.createHTML(W):W},t.setConfig=function(){let m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Be(m),pe=!0},t.clearConfig=function(){yt=null,pe=!1},t.isValidAttribute=function(m,o,n){yt||Be({});let g=S(m),y=S(o);return xi(g,y,n)},t.addHook=function(m,o){typeof o=="function"&&wt(I[m],o)},t.removeHook=function(m,o){if(o!==void 0){let n=no(I[m],o);return n===-1?void 0:ho(I[m],n,1)[0]}return Qi(I[m])},t.removeHooks=function(m){I[m]=[]},t.removeAllHooks=function(){I=sr()},t}r(hr,"createDOMPurify");var kt=hr();var Wt=//gi,_o=r(e=>e?Cr(e).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),Ao=(()=>{let e=!1;return()=>{e||(Eo(),e=!0)}})();function Eo(){let e="data-temp-href-target";kt.addHook("beforeSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute("target")&&t.setAttribute(e,t.getAttribute("target")??"")}),kt.addHook("afterSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute(e)&&(t.setAttribute("target",t.getAttribute(e)??""),t.removeAttribute(e),t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener"))})}r(Eo,"setupDompurifyHooks");var ur=r(e=>(Ao(),kt.sanitize(e)),"removeScript"),cr=r((e,t)=>{if(Zi(t)){let i=t.securityLevel;i==="antiscript"||i==="strict"||i==="sandbox"?e=ur(e):i!=="loose"&&(e=Cr(e),e=e.replace(//g,">"),e=e.replace(/=/g,"="),e=Do(e))}return e},"sanitizeMore"),st=r((e,t)=>e&&(t.dompurifyConfig?e=kt.sanitize(cr(e,t),t.dompurifyConfig).toString():e=kt.sanitize(cr(e,t),{FORBID_TAGS:["style"]}).toString(),e),"sanitizeText"),vo=r((e,t)=>typeof e=="string"?st(e,t):e.flat().map(i=>st(i,t)),"sanitizeTextOrArray"),Mo=r(e=>Wt.test(e),"hasBreaks"),Oo=r(e=>e.split(Wt),"splitBreaks"),Do=r(e=>e.replace(/#br#/g,"
"),"placeholderToBreak"),Cr=r(e=>e.replace(Wt,"#br#"),"breakToPlaceholder"),wo=r(e=>{let t="";return e&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,t=CSS.escape(t)),t},"getUrl");var Io=r(function(...e){let t=e.filter(i=>!isNaN(i));return Math.max(...t)},"getMax"),qo=r(function(...e){let t=e.filter(i=>!isNaN(i));return Math.min(...t)},"getMin"),pn=r(function(e){let t=e.split(/(,)/),i=[];for(let a=0;a0&&a+1Math.max(0,e.split(t).length-1),"countOccurrence"),zo=r((e,t)=>{let i=je(e,"~"),a=je(t,"~");return i===1&&a===1},"shouldCombineSets"),Ro=r(e=>{let t=je(e,"~"),i=!1;if(t<=1)return e;t%2!==0&&e.startsWith("~")&&(e=e.substring(1),i=!0);let a=[...e],l=a.indexOf("~"),c=a.lastIndexOf("~");for(;l!==-1&&c!==-1&&l!==c;)a[l]="<",a[c]=">",l=a.indexOf("~"),c=a.lastIndexOf("~");return i&&a.unshift("~"),a.join("")},"processSet"),dr=r(()=>window.MathMLElement!==void 0,"isMathMLSupported"),se=/\$\$(.*)\$\$/g,gr=r(e=>(e.match(se)?.length??0)>0,"hasKatex"),fn=r(async(e,t)=>{let i=document.createElement("div");i.innerHTML=await Po(e,t),i.id="katex-temp",i.style.visibility="hidden",i.style.position="absolute",i.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",i);let l={width:i.clientWidth,height:i.clientHeight};return i.remove(),l},"calculateMathMLDimensions"),Wo=r(async(e,t)=>{if(!gr(e))return e;if(!(dr()||t.legacyMathML||t.forceLegacyMathML))return e.replace(se,"MathML is unsupported in this environment.");{let{default:i}=await import("./katex-GD7MH7QM.mjs"),a=t.forceLegacyMathML||!dr()&&t.legacyMathML?"htmlAndMathml":"mathml";return e.split(Wt).map(l=>gr(l)?`

`:`
${l}
`).join("").replace(se,(l,c)=>i.renderToString(c,{throwOnError:!0,displayMode:!0,output:a}).replace(/\n/g," ").replace(//g,""))}return e.replace(se,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),Po=r(async(e,t)=>st(await Wo(e,t),t),"renderKatexSanitized"),xn={getRows:_o,sanitizeText:st,sanitizeTextOrArray:vo,hasBreaks:Mo,splitBreaks:Oo,lineBreakRegex:Wt,removeScript:ur,getUrl:wo,evaluate:qe,getMax:Io,getMin:qo};var No=r(function(e,t){for(let i of t)e.attr(i[0],i[1])},"d3Attrs"),Ho=r(function(e,t,i){let a=new Map;return i?(a.set("width","100%"),a.set("style",`max-width: ${t}px;`)):(a.set("height",e),a.set("width",t)),a},"calculateSvgSizeAttrs"),Uo=r(function(e,t,i,a){let l=Ho(t,i,a);No(e,l)},"configureSvgSize"),mr=r(function(e,t,i,a){let l=t.node().getBBox(),c=l.width,f=l.height;T.info(`SVG bounds: ${c}x${f}`,l);let x=0,A=0;T.info(`Graph bounds: ${x}x${A}`,e),x=c+i*2,A=f+i*2,T.info(`Calculated bounds: ${x}x${A}`),Uo(t,A,x,a);let E=`${l.x-i} ${l.y-i} ${l.width+2*i} ${l.height+2*i}`;t.attr("viewBox",E)},"setupGraphViewbox");var ae={},Go=r((e,t,i)=>{let a="";return e in ae&&ae[e]?a=ae[e](i):T.warn(`No theme found for ${e}`),` & { - font-family: ${i.fontFamily}; - font-size: ${i.fontSize}; - fill: ${i.textColor} - } - @keyframes edge-animation-frame { - from { - stroke-dashoffset: 0; - } - } - @keyframes dash { - to { - stroke-dashoffset: 0; - } - } - & .edge-animation-slow { - stroke-dasharray: 9,5 !important; - stroke-dashoffset: 900; - animation: dash 50s linear infinite; - stroke-linecap: round; - } - & .edge-animation-fast { - stroke-dasharray: 9,5 !important; - stroke-dashoffset: 900; - animation: dash 20s linear infinite; - stroke-linecap: round; - } - /* Classes common for multiple diagrams */ - - & .error-icon { - fill: ${i.errorBkgColor}; - } - & .error-text { - fill: ${i.errorTextColor}; - stroke: ${i.errorTextColor}; - } - - & .edge-thickness-normal { - stroke-width: 1px; - } - & .edge-thickness-thick { - stroke-width: 3.5px - } - & .edge-pattern-solid { - stroke-dasharray: 0; - } - & .edge-thickness-invisible { - stroke-width: 0; - fill: none; - } - & .edge-pattern-dashed{ - stroke-dasharray: 3; - } - .edge-pattern-dotted { - stroke-dasharray: 2; - } - - & .marker { - fill: ${i.lineColor}; - stroke: ${i.lineColor}; - } - & .marker.cross { - stroke: ${i.lineColor}; - } - - & svg { - font-family: ${i.fontFamily}; - font-size: ${i.fontSize}; - } - & p { - margin: 0 - } - - ${a} - - ${t} -`},"getStyles"),pr=r((e,t)=>{t!==void 0&&(ae[e]=t)},"addStylesForDiagram"),Fn=Go;var Ze={};Ir(Ze,{clear:()=>$o,getAccDescription:()=>Xo,getAccTitle:()=>Vo,getDiagramTitle:()=>Zo,setAccDescription:()=>Yo,setAccTitle:()=>jo,setDiagramTitle:()=>Ko});var Ve="",Ye="",Xe="",Ke=r(e=>st(e,Dt()),"sanitizeText"),$o=r(()=>{Ve="",Xe="",Ye=""},"clear"),jo=r(e=>{Ve=Ke(e).replace(/^\s+/g,"")},"setAccTitle"),Vo=r(()=>Ve,"getAccTitle"),Yo=r(e=>{Xe=Ke(e).replace(/\n\s+/g,` -`)},"setAccDescription"),Xo=r(()=>Xe,"getAccDescription"),Ko=r(e=>{Ye=Ke(e)},"setDiagramTitle"),Zo=r(()=>Ye,"getDiagramTitle");var fr=T,Jo=Bi,xr=Dt,zn=Vi,Rn=Ot;var Qo=r(e=>st(e,xr()),"sanitizeText"),ts=mr,es=r(()=>Ze,"getCommonDb"),le={},Wn=r((e,t,i)=>{le[e]&&fr.warn(`Diagram with id ${e} already registered. Overwriting.`),le[e]=t,i&&Le(e,i),pr(e,t.styles),t.injectUtils?.(fr,Jo,xr,Qo,ts,es(),()=>{})},"registerDiagram"),Pn=r(e=>{if(e in le)return le[e];throw new Je(e)},"getDiagram"),Je=class extends Error{static{r(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}};export{D as a,Q as b,Gr as c,G as d,d as e,u as f,Jr as g,Wi as h,ot as i,$i as j,Qt as k,Ot as l,qe as m,ro as n,on as o,sn as p,an as q,Vi as r,Dt as s,ln as t,nn as u,hn as v,Zi as w,kt as x,Wt as y,st as z,wo as A,pn as B,gr as C,fn as D,Po as E,xn as F,Si as G,Fi as H,Vt as I,Yt as J,ns as K,hs as L,cs as M,Uo as N,mr as O,Fn as P,$o as Q,jo as R,Vo as S,Yo as T,Xo as U,Ko as V,Zo as W,Ze as X,xr as Y,zn as Z,Rn as _,Qo as $,ts as aa,Wn as ba,Pn as ca}; -/*! Bundled license information: - -dompurify/dist/purify.es.mjs: - (*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE *) -*/ diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-3UWU4A3N.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-3UWU4A3N.mjs.map deleted file mode 100644 index c8fd4ab..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-3UWU4A3N.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagram-api/regexes.ts", "../../../src/errors.ts", "../../../src/diagram-api/detectType.ts", "../../../src/assignWithDepth.ts", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/channel.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/lang.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/unit.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/index.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/constants.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/type.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/index.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/reusable.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hex.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hsl.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/keyword.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/rgb.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/index.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/change.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/rgba.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/channel.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/luminance.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/is_light.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/is_dark.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/adjust_channel.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/lighten.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/darken.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/transparentize.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/adjust.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/mix.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/invert.js", "../../../src/themes/erDiagram-oldHardcodedValues.ts", "../../../src/themes/theme-helpers.js", "../../../src/themes/theme-base.js", "../../../src/themes/theme-dark.js", "../../../src/themes/theme-default.js", "../../../src/themes/theme-forest.js", "../../../src/themes/theme-neutral.js", "../../../src/themes/index.js", "../../../src/schemas/config.schema.yaml", "../../../src/defaultConfig.ts", "../../../src/utils/sanitizeDirective.ts", "../../../src/config.ts", "../../../../../node_modules/.pnpm/dompurify@3.3.1/node_modules/dompurify/src/utils.ts", "../../../../../node_modules/.pnpm/dompurify@3.3.1/node_modules/dompurify/src/tags.ts", "../../../../../node_modules/.pnpm/dompurify@3.3.1/node_modules/dompurify/src/attrs.ts", "../../../../../node_modules/.pnpm/dompurify@3.3.1/node_modules/dompurify/src/regexp.ts", "../../../../../node_modules/.pnpm/dompurify@3.3.1/node_modules/dompurify/src/purify.ts", "../../../src/diagrams/common/common.ts", "../../../src/setupGraphViewbox.js", "../../../src/styles.ts", "../../../src/diagrams/common/commonDb.ts", "../../../src/diagram-api/diagramAPI.ts"], - "sourcesContent": ["// Match Jekyll-style front matter blocks (https://jekyllrb.com/docs/front-matter/).\n// Based on regex used by Jekyll: https://github.com/jekyll/jekyll/blob/6dd3cc21c40b98054851846425af06c64f9fb466/lib/jekyll/document.rb#L10\n// Note that JS doesn't support the \"\\A\" anchor, which means we can't use\n// multiline mode.\n// Relevant YAML spec: https://yaml.org/spec/1.2.2/#914-explicit-documents\nexport const frontMatterRegex = /^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+/s;\n\nexport const directiveRegex =\n /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\n\nexport const anyCommentRegex = /\\s*%%.*\\n/gm;\n", "export class UnknownDiagramError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'UnknownDiagramError';\n }\n}\n", "import type { MermaidConfig } from '../config.type.js';\nimport { log } from '../logger.js';\nimport type {\n DetectorRecord,\n DiagramDetector,\n DiagramLoader,\n ExternalDiagramDefinition,\n} from './types.js';\nimport { anyCommentRegex, directiveRegex, frontMatterRegex } from './regexes.js';\nimport { UnknownDiagramError } from '../errors.js';\n\nexport const detectors: Record = {};\n\n/**\n * Detects the type of the graph text.\n *\n * Takes into consideration the possible existence of an `%%init` directive\n *\n * @param text - The text defining the graph. For example:\n *\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param config - The mermaid config.\n * @returns A graph definition key\n */\nexport const detectType = function (text: string, config?: MermaidConfig): string {\n text = text\n .replace(frontMatterRegex, '')\n .replace(directiveRegex, '')\n .replace(anyCommentRegex, '\\n');\n for (const [key, { detector }] of Object.entries(detectors)) {\n const diagram = detector(text, config);\n if (diagram) {\n return key;\n }\n }\n\n throw new UnknownDiagramError(\n `No diagram type detected matching given configuration for text: ${text}`\n );\n};\n\n/**\n * Registers lazy-loaded diagrams to Mermaid.\n *\n * The diagram function is loaded asynchronously, so that diagrams are only loaded\n * if the diagram is detected.\n *\n * @remarks\n * Please note that the order of diagram detectors is important.\n * The first detector to return `true` is the diagram that will be loaded\n * and used, so put more specific detectors at the beginning!\n *\n * @param diagrams - Diagrams to lazy load, and their detectors, in order of importance.\n */\nexport const registerLazyLoadedDiagrams = (...diagrams: ExternalDiagramDefinition[]) => {\n for (const { id, detector, loader } of diagrams) {\n addDetector(id, detector, loader);\n }\n};\n\nexport const addDetector = (key: string, detector: DiagramDetector, loader?: DiagramLoader) => {\n if (detectors[key]) {\n log.warn(`Detector with key ${key} already exists. Overwriting.`);\n }\n detectors[key] = { detector, loader };\n log.debug(`Detector with key ${key} added${loader ? ' with loader' : ''}`);\n};\n\nexport const getDiagramLoader = (key: string) => {\n return detectors[key].loader;\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * assignWithDepth Extends the functionality of {@link Object.assign} with the\n * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)\n * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of\n * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to `{}` and\n * effectively merged with src[`k`]

Additionally, dissimilar types will not clobber unless the\n * config.clobber parameter === true. Example:\n *\n * ```\n * const config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * const config_1 = { foo: 'foo', bar: 'bar' };\n * const result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a\n * destructured array of objects and dst is not an array, assignWithDepth will apply each element\n * of src to dst in order.\n * @param dst - The destination of the merge\n * @param src - The source object(s) to merge into destination\n * @param config -\n * * depth: depth to traverse within src and dst for merging\n * * clobber: should dissimilar types clobber\n */\nconst assignWithDepth = (\n dst: any,\n src: any,\n { depth = 2, clobber = false }: { depth?: number; clobber?: boolean } = {}\n): any => {\n const config: { depth: number; clobber: boolean } = { depth, clobber };\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === undefined || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== undefined && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach((key) => {\n if (\n typeof src[key] === 'object' &&\n src[key] !== null &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport default assignWithDepth;\n", "/* IMPORT */\n/* MAIN */\nconst Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n h: (h) => h % 360,\n s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: (c) => {\n const n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: (p, q, t) => {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: ({ h, s, l }, channel) => {\n if (!s)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n const p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: ({ r, g, b }, channel) => {\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n const d = max - min;\n const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\nexport default Channel;\n", "/* MAIN */\nconst Lang = {\n /* API */\n clamp: (number, lower, upper) => {\n if (lower > upper)\n return Math.min(lower, Math.max(upper, number));\n return Math.min(upper, Math.max(lower, number));\n },\n round: (number) => {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\nexport default Lang;\n", "/* MAIN */\nconst Unit = {\n /* API */\n dec2hex: (dec) => {\n const hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : `0${hex}`;\n }\n};\n/* EXPORT */\nexport default Unit;\n", "/* IMPORT */\nimport channel from './channel.js';\nimport lang from './lang.js';\nimport unit from './unit.js';\n/* MAIN */\nconst Utils = {\n channel,\n lang,\n unit\n};\n/* EXPORT */\nexport default Utils;\n", "/* IMPORT */\nimport _ from './utils/index.js';\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n DEC2HEX[i] = _.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n ALL: 0,\n RGB: 1,\n HSL: 2\n};\n/* EXPORT */\nexport { DEC2HEX, TYPE };\n", "/* IMPORT */\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Type {\n constructor() {\n /* VARIABLES */\n this.type = TYPE.ALL;\n }\n /* API */\n get() {\n return this.type;\n }\n set(type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n }\n reset() {\n this.type = TYPE.ALL;\n }\n is(type) {\n return this.type === type;\n }\n}\n/* EXPORT */\nexport default Type;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Type from './type.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Channels {\n /* CONSTRUCTOR */\n constructor(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new Type();\n }\n /* API */\n set(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = TYPE.ALL;\n return this;\n }\n /* HELPERS */\n _ensureHSL() {\n const data = this.data;\n const { h, s, l } = data;\n if (h === undefined)\n data.h = _.channel.rgb2hsl(data, 'h');\n if (s === undefined)\n data.s = _.channel.rgb2hsl(data, 's');\n if (l === undefined)\n data.l = _.channel.rgb2hsl(data, 'l');\n }\n _ensureRGB() {\n const data = this.data;\n const { r, g, b } = data;\n if (r === undefined)\n data.r = _.channel.hsl2rgb(data, 'r');\n if (g === undefined)\n data.g = _.channel.hsl2rgb(data, 'g');\n if (b === undefined)\n data.b = _.channel.hsl2rgb(data, 'b');\n }\n /* GETTERS */\n get r() {\n const data = this.data;\n const r = data.r;\n if (!this.type.is(TYPE.HSL) && r !== undefined)\n return r;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'r');\n }\n get g() {\n const data = this.data;\n const g = data.g;\n if (!this.type.is(TYPE.HSL) && g !== undefined)\n return g;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'g');\n }\n get b() {\n const data = this.data;\n const b = data.b;\n if (!this.type.is(TYPE.HSL) && b !== undefined)\n return b;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'b');\n }\n get h() {\n const data = this.data;\n const h = data.h;\n if (!this.type.is(TYPE.RGB) && h !== undefined)\n return h;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'h');\n }\n get s() {\n const data = this.data;\n const s = data.s;\n if (!this.type.is(TYPE.RGB) && s !== undefined)\n return s;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 's');\n }\n get l() {\n const data = this.data;\n const l = data.l;\n if (!this.type.is(TYPE.RGB) && l !== undefined)\n return l;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'l');\n }\n get a() {\n return this.data.a;\n }\n /* SETTERS */\n set r(r) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n }\n set g(g) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n }\n set b(b) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n }\n set h(h) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n }\n set s(s) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n }\n set l(l) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n }\n set a(a) {\n this.changed = true;\n this.data.a = a;\n }\n}\n/* EXPORT */\nexport default Channels;\n", "/* IMPORT */\nimport Channels from './/index.js';\n/* MAIN */\nconst channels = new Channels({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexport default channels;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport { DEC2HEX } from '../constants.js';\n/* MAIN */\nconst Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: (color) => {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n const match = color.match(Hex.re);\n if (!match)\n return;\n const hex = match[1];\n const dec = parseInt(hex, 16);\n const length = hex.length;\n const hasAlpha = length % 4 === 0;\n const isFullLength = length > 4;\n const multiplier = isFullLength ? 1 : 17;\n const bits = isFullLength ? 8 : 4;\n const bitsOffset = hasAlpha ? 0 : -1;\n const mask = isFullLength ? 255 : 15;\n return ChannelsReusable.set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // #RRGGBBAA\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;\n }\n else { // #RRGGBB\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;\n }\n }\n};\n/* EXPORT */\nexport default Hex;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: (hue) => {\n const match = hue.match(HSL.hueRe);\n if (match) {\n const [, number, unit] = match;\n switch (unit) {\n case 'grad': return _.channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return _.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return _.channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return _.channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n const match = color.match(HSL.re);\n if (!match)\n return;\n const [, h, s, l, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n h: HSL._hue2deg(h),\n s: _.channel.clamp.s(parseFloat(s)),\n l: _.channel.clamp.l(parseFloat(l)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { h, s, l, a } = channels;\n if (a < 1) { // HSLA\n return `hsla(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%, ${a})`;\n }\n else { // HSL\n return `hsl(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%)`;\n }\n }\n};\n/* EXPORT */\nexport default HSL;\n", "/* IMPORT */\nimport Hex from './hex.js';\n/* MAIN */\nconst Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: (color) => {\n color = color.toLowerCase();\n const hex = Keyword.colors[color];\n if (!hex)\n return;\n return Hex.parse(hex);\n },\n stringify: (channels) => {\n const hex = Hex.stringify(channels);\n for (const name in Keyword.colors) {\n if (Keyword.colors[name] === hex)\n return name;\n }\n return;\n }\n};\n/* EXPORT */\nexport default Keyword;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n const match = color.match(RGB.re);\n if (!match)\n return;\n const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n r: _.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: _.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: _.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // RGBA\n return `rgba(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)}, ${_.lang.round(a)})`;\n }\n else { // RGB\n return `rgb(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)})`;\n }\n }\n};\n/* EXPORT */\nexport default RGB;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Hex from './hex.js';\nimport HSL from './hsl.js';\nimport Keyword from './keyword.js';\nimport RGB from './rgb.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nconst Color = {\n /* VARIABLES */\n format: {\n keyword: Keyword,\n hex: Hex,\n rgb: RGB,\n rgba: RGB,\n hsl: HSL,\n hsla: HSL\n },\n /* API */\n parse: (color) => {\n if (typeof color !== 'string')\n return color;\n const channels = Hex.parse(color) || RGB.parse(color) || HSL.parse(color) || Keyword.parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(`Unsupported color format: \"${color}\"`);\n },\n stringify: (channels) => {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(TYPE.HSL) || channels.data.r === undefined) {\n return HSL.stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return RGB.stringify(channels);\n }\n else {\n return Hex.stringify(channels);\n }\n }\n};\n/* EXPORT */\nexport default Color;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst change = (color, channels) => {\n const ch = Color.parse(color);\n for (const c in channels) {\n ch[c] = _.channel.clamp[c](channels[c]);\n }\n return Color.stringify(ch);\n};\n/* EXPORT */\nexport default change;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n if (typeof r !== 'number')\n return change(r, { a: g });\n const channels = ChannelsReusable.set({\n r: _.channel.clamp.r(r),\n g: _.channel.clamp.g(g),\n b: _.channel.clamp.b(b),\n a: _.channel.clamp.a(a)\n });\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default rgba;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst channel = (color, channel) => {\n return _.lang.round(Color.parse(color)[channel]);\n};\n/* EXPORT */\nexport default channel;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\n//SOURCE: https://planetcalc.com/7779\nconst luminance = (color) => {\n const { r, g, b } = Color.parse(color);\n const luminance = .2126 * _.channel.toLinear(r) + .7152 * _.channel.toLinear(g) + .0722 * _.channel.toLinear(b);\n return _.lang.round(luminance);\n};\n/* EXPORT */\nexport default luminance;\n", "/* IMPORT */\nimport luminance from './luminance.js';\n/* MAIN */\nconst isLight = (color) => {\n return luminance(color) >= .5;\n};\n/* EXPORT */\nexport default isLight;\n", "/* IMPORT */\nimport isLight from './is_light.js';\n/* MAIN */\nconst isDark = (color) => {\n return !isLight(color);\n};\n/* EXPORT */\nexport default isDark;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n const channels = Color.parse(color);\n const amountCurrent = channels[channel];\n const amountNext = _.channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default adjustChannel;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst lighten = (color, amount) => {\n return adjustChannel(color, 'l', amount);\n};\n/* EXPORT */\nexport default lighten;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst darken = (color, amount) => {\n return adjustChannel(color, 'l', -amount);\n};\n/* EXPORT */\nexport default darken;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst transparentize = (color, amount) => {\n return adjustChannel(color, 'a', -amount);\n};\n/* EXPORT */\nexport default transparentize;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst adjust = (color, channels) => {\n const ch = Color.parse(color);\n const changes = {};\n for (const c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return change(color, changes);\n};\n/* EXPORT */\nexport default adjust;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport rgba from './rgba.js';\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n const { r: r1, g: g1, b: b1, a: a1 } = Color.parse(color1);\n const { r: r2, g: g2, b: b2, a: a2 } = Color.parse(color2);\n const weightScale = weight / 100;\n const weightNormalized = (weightScale * 2) - 1;\n const alphaDelta = a1 - a2;\n const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n const weight1 = (weight1combined + 1) / 2;\n const weight2 = 1 - weight1;\n const r = (r1 * weight1) + (r2 * weight2);\n const g = (g1 * weight1) + (g2 * weight2);\n const b = (b1 * weight1) + (b2 * weight2);\n const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return rgba(r, g, b, a);\n};\n/* EXPORT */\nexport default mix;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport mix from './mix.js';\n/* MAIN */\nconst invert = (color, weight = 100) => {\n const inverse = Color.parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return mix(inverse, color, weight);\n};\n/* EXPORT */\nexport default invert;\n", "/**\n * Values that have been hardcoded in src/diagrams/er/styles.js. These can be used by\n * theme-_._ files to maintain display styles until themes, styles, renderers are revised. --\n * 2022-09-22\n */\nexport const oldAttributeBackgroundColorOdd = '#ffffff';\nexport const oldAttributeBackgroundColorEven = '#f2f2f2';\n", "import { adjust } from 'khroma';\n\nexport const mkBorder = (col, darkMode) =>\n darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\n", "import { adjust, darken, invert, isDark, lighten } from 'khroma';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\nimport { mkBorder } from './theme-helpers.js';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#f4f4f4';\n\n this.primaryColor = '#fff4dd';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n this.THEME_COLOR_LIMIT = 12;\n\n // dark\n\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n // TODO: should this instead default to secondaryBorderColor?\n this.border2 = this.border2 || this.tertiaryBorderColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.vertLineColor = this.vertLineColor || 'navy';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* ER diagram */\n\n if (this.darkMode) {\n this.rowOdd = this.rowOdd || darken(this.mainBkg, 5) || '#ffffff';\n this.rowEven = this.rowEven || darken(this.mainBkg, 10);\n } else {\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 75) || '#ffffff';\n this.rowEven = this.rowEven || lighten(this.mainBkg, 5);\n }\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 25);\n }\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });\n this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });\n this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -30 });\n this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });\n this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });\n this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });\n this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });\n this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* architecture */\n this.archEdgeColor = this.archEdgeColor || '#777';\n this.archEdgeArrowColor = this.archEdgeArrowColor || '#777';\n this.archEdgeWidth = this.archEdgeWidth || '3';\n this.archGroupBorderColor = this.archGroupBorderColor || '#000';\n this.archGroupBorderWidth = this.archGroupBorderWidth || '2px';\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { adjust, darken, invert, isDark, lighten, rgba } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#ccc';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.excludeBkgColor = darken(this.sectionBkgColor, 10);\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n this.vertLineColor = '#00BFFF';\n\n /* C4 Context Diagram variables */\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* Entity Relationship variables */\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 5) || '#ffffff';\n this.rowEven = this.rowEven || darken(this.mainBkg, 10);\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.actorBorder;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = invert(this.doneTaskBkgColor);\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#555';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#f4f4f4'; // this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* cScale */\n this.cScale1 = this.cScale1 || '#0b0000';\n this.cScale2 = this.cScale2 || '#4d1037';\n this.cScale3 = this.cScale3 || '#3f5258';\n this.cScale4 = this.cScale4 || '#4f2f1b';\n this.cScale5 = this.cScale5 || '#6e0a0a';\n this.cScale6 = this.cScale6 || '#3b0048';\n this.cScale7 = this.cScale7 || '#995a01';\n this.cScale8 = this.cScale8 || '#154706';\n this.cScale9 = this.cScale9 || '#161722';\n this.cScale10 = this.cScale10 || '#00296f';\n this.cScale11 = this.cScale11 || '#01629c';\n this.cScale12 = this.cScale12 || '#010029';\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n /* Pie diagram */\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['pie' + i] = this['cScale' + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.mainContrastColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.mainContrastColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n for (let i = 0; i < 8; i++) {\n this['venn' + (i + 1)] = this['venn' + (i + 1)] ?? lighten(this['cScale' + i], 30);\n }\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22',\n };\n\n this.packet = {\n startByteColor: this.primaryTextColor,\n endByteColor: this.primaryTextColor,\n labelColor: this.primaryTextColor,\n titleColor: this.primaryTextColor,\n blockStrokeColor: this.primaryTextColor,\n blockFillColor: this.background,\n };\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* class */\n this.classText = this.primaryTextColor;\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: +60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: +120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || lighten(this.background, 12);\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || lighten(this.background, 2);\n /* -------------------------------------------------- */\n\n this.nodeBorder = this.nodeBorder || '#999';\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { invert, lighten, rgba, adjust, darken, isDark } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.background = '#f4f4f4';\n this.primaryColor = '#ECECFF';\n\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = '#ffffde';\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = 'rgba(232,232,232, 0.8)';\n this.textColor = '#333';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n this.vertLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n this.vertLineColor = 'navy';\n\n /* C4 Context Diagram variables */\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* Entity Relationship variables */\n this.rowOdd = 'calculated';\n this.rowEven = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // Setup the peer color for the set, useful for borders\n this['cScale' + i] = darken(this['cScale' + i], 10);\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n }\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n // Setup the label color for the set\n this.scaleLabelColor =\n this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n ? this.scaleLabelColor\n : this.labelTextColor;\n\n if (this.labelTextColor !== 'calculated') {\n this.cScaleLabel0 = this.cScaleLabel0 || invert(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || invert(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.labelTextColor;\n }\n }\n\n /* Flowchart variables */\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.actorLineColor = this.actorBorder;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* Entity Relationship variables */\n this.rowOdd = this.rowOdd || lighten(this.primaryColor, 75) || '#ffffff';\n this.rowEven = this.rowEven || lighten(this.primaryColor, 1);\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });\n this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });\n this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -40 });\n this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });\n this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });\n this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });\n this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });\n this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n // for all keys in this object, if it is 'calculated' then set it to undefined\n Object.keys(this).forEach((k) => {\n if (this[k] === 'calculated') {\n this[k] = undefined;\n }\n });\n\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { adjust, darken, invert, isDark, lighten } from 'khroma';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\nimport { mkBorder } from './theme-helpers.js';\n\nclass Theme {\n constructor() {\n /* Base vales */\n this.background = '#f4f4f4';\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n this.tertiaryColor = lighten('#cde498', 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'calculated';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n this.vertLineColor = '#00BFFF';\n\n /* C4 Context Diagram variables */\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Sequence Diagram variables */\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.actorLineColor = this.actorBorder;\n\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // Setup the peer color for the set, useful for borders\n this['cScale' + i] = darken(this['cScale' + i], 10);\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n }\n\n // Setup the label color for the set\n this.scaleLabelColor =\n this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n ? this.scaleLabelColor\n : this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n }\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* ER diagram */\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 75) || '#ffffff';\n this.rowEven = this.rowEven || lighten(this.mainBkg, 20);\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });\n this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });\n this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -30 });\n this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });\n this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });\n this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });\n this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });\n this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n this.packet = {\n startByteColor: this.primaryTextColor,\n endByteColor: this.primaryTextColor,\n labelColor: this.primaryTextColor,\n titleColor: this.primaryTextColor,\n blockStrokeColor: this.primaryTextColor,\n blockFillColor: this.mainBkg,\n };\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { invert, darken, lighten, adjust, isDark } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#707070';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = '#ffffff';\n\n // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n // this.altBackground = lighten(this.contrast, 55);\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = this.actorBorder;\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n this.vertLineColor = 'calculated';\n\n /* C4 Context Diagram variables */\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* ER diagram */\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 75) || '#ffffff';\n this.rowEven = this.rowEven || '#f4f4f4';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.actorBorder;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = '#999';\n this.noteBkgColor = '#666';\n this.noteTextColor = '#fff';\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || '#555';\n this.cScale1 = this.cScale1 || '#F4F4F4';\n this.cScale2 = this.cScale2 || '#555';\n this.cScale3 = this.cScale3 || '#BBB';\n this.cScale4 = this.cScale4 || '#777';\n this.cScale5 = this.cScale5 || '#999';\n this.cScale6 = this.cScale6 || '#DDD';\n this.cScale7 = this.cScale7 || '#FFF';\n this.cScale8 = this.cScale8 || '#DDD';\n this.cScale9 = this.cScale9 || '#BBB';\n this.cScale10 = this.cScale10 || '#999';\n this.cScale11 = this.cScale11 || '#777';\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n this.cScaleLabel0 = this.cScaleLabel0 || this.cScale1;\n this.cScaleLabel2 = this.cScaleLabel2 || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { l: -(8 + i * 5) });\n }\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n this.vertLineColor = this.critBkgColor;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || '#000';\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f4f4f4';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || '#000';\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#222';\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n // /* pie */\n /* Pie diagram */\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['pie' + i] = this['cScale' + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n for (let i = 0; i < 8; i++) {\n this['venn' + (i + 1)] = this['venn' + (i + 1)] ?? this['cScale' + i];\n }\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0',\n };\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: +120 });\n\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = 'white';\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = 'white';\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { getThemeVariables as baseThemeVariables } from './theme-base.js';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark.js';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default.js';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest.js';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral.js';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables,\n },\n dark: {\n getThemeVariables: darkThemeVariables,\n },\n default: {\n getThemeVariables: defaultThemeVariables,\n },\n forest: {\n getThemeVariables: forestThemeVariables,\n },\n neutral: {\n getThemeVariables: neutralThemeVariables,\n },\n};\n", "export default {\n \"flowchart\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"subGraphTitleMargin\": {\n \"top\": 0,\n \"bottom\": 0\n },\n \"diagramPadding\": 8,\n \"htmlLabels\": null,\n \"nodeSpacing\": 50,\n \"rankSpacing\": 50,\n \"curve\": \"basis\",\n \"padding\": 15,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"wrappingWidth\": 200,\n \"inheritDir\": false\n },\n \"sequence\": {\n \"useMaxWidth\": true,\n \"hideUnusedParticipants\": false,\n \"activationWidth\": 10,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"actorMargin\": 50,\n \"width\": 150,\n \"height\": 65,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"mirrorActors\": true,\n \"forceMenus\": false,\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"showSequenceNumbers\": false,\n \"actorFontSize\": 14,\n \"actorFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"actorFontWeight\": 400,\n \"noteFontSize\": 14,\n \"noteFontFamily\": \"\\\"trebuchet ms\\\", verdana, arial, sans-serif\",\n \"noteFontWeight\": 400,\n \"noteAlign\": \"center\",\n \"messageFontSize\": 16,\n \"messageFontFamily\": \"\\\"trebuchet ms\\\", verdana, arial, sans-serif\",\n \"messageFontWeight\": 400,\n \"wrap\": false,\n \"wrapPadding\": 10,\n \"labelBoxWidth\": 50,\n \"labelBoxHeight\": 20\n },\n \"gantt\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"barHeight\": 20,\n \"barGap\": 4,\n \"topPadding\": 50,\n \"rightPadding\": 75,\n \"leftPadding\": 75,\n \"gridLineStartPadding\": 35,\n \"fontSize\": 11,\n \"sectionFontSize\": 11,\n \"numberSectionStyles\": 4,\n \"axisFormat\": \"%Y-%m-%d\",\n \"topAxis\": false,\n \"displayMode\": \"\",\n \"weekday\": \"sunday\"\n },\n \"journey\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"maxLabelWidth\": 360,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"titleColor\": \"\",\n \"titleFontFamily\": \"\\\"trebuchet ms\\\", verdana, arial, sans-serif\",\n \"titleFontSize\": \"4ex\"\n },\n \"class\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"arrowMarkerAbsolute\": false,\n \"dividerMargin\": 10,\n \"padding\": 5,\n \"textHeight\": 10,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"htmlLabels\": false,\n \"hideEmptyMembersBox\": false\n },\n \"state\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"dividerMargin\": 10,\n \"sizeUnit\": 5,\n \"padding\": 8,\n \"textHeight\": 10,\n \"titleShift\": -15,\n \"noteMargin\": 10,\n \"forkWidth\": 70,\n \"forkHeight\": 7,\n \"miniPadding\": 2,\n \"fontSizeFactor\": 5.02,\n \"fontSize\": 24,\n \"labelHeight\": 16,\n \"edgeLengthFactor\": \"20\",\n \"compositTitleSize\": 35,\n \"radius\": 5,\n \"defaultRenderer\": \"dagre-wrapper\"\n },\n \"er\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 20,\n \"layoutDirection\": \"TB\",\n \"minEntityWidth\": 100,\n \"minEntityHeight\": 75,\n \"entityPadding\": 15,\n \"nodeSpacing\": 140,\n \"rankSpacing\": 80,\n \"stroke\": \"gray\",\n \"fill\": \"honeydew\",\n \"fontSize\": 12\n },\n \"pie\": {\n \"useMaxWidth\": true,\n \"textPosition\": 0.75\n },\n \"quadrantChart\": {\n \"useMaxWidth\": true,\n \"chartWidth\": 500,\n \"chartHeight\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"quadrantPadding\": 5,\n \"xAxisLabelPadding\": 5,\n \"yAxisLabelPadding\": 5,\n \"xAxisLabelFontSize\": 16,\n \"yAxisLabelFontSize\": 16,\n \"quadrantLabelFontSize\": 16,\n \"quadrantTextTopPadding\": 5,\n \"pointTextPadding\": 5,\n \"pointLabelFontSize\": 12,\n \"pointRadius\": 5,\n \"xAxisPosition\": \"top\",\n \"yAxisPosition\": \"left\",\n \"quadrantInternalBorderStrokeWidth\": 1,\n \"quadrantExternalBorderStrokeWidth\": 2\n },\n \"xyChart\": {\n \"useMaxWidth\": true,\n \"width\": 700,\n \"height\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"showDataLabel\": false,\n \"showTitle\": true,\n \"xAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"yAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"chartOrientation\": \"vertical\",\n \"plotReservedSpacePercent\": 50\n },\n \"requirement\": {\n \"useMaxWidth\": true,\n \"rect_fill\": \"#f9f9f9\",\n \"text_color\": \"#333\",\n \"rect_border_size\": \"0.5px\",\n \"rect_border_color\": \"#bbb\",\n \"rect_min_width\": 200,\n \"rect_min_height\": 200,\n \"fontSize\": 14,\n \"rect_padding\": 10,\n \"line_height\": 20\n },\n \"mindmap\": {\n \"useMaxWidth\": true,\n \"padding\": 10,\n \"maxNodeWidth\": 200,\n \"layoutAlgorithm\": \"cose-bilkent\"\n },\n \"ishikawa\": {\n \"useMaxWidth\": true,\n \"diagramPadding\": 20\n },\n \"kanban\": {\n \"useMaxWidth\": true,\n \"padding\": 8,\n \"sectionWidth\": 200,\n \"ticketBaseUrl\": \"\"\n },\n \"timeline\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"disableMulticolor\": false\n },\n \"gitGraph\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 8,\n \"nodeLabel\": {\n \"width\": 75,\n \"height\": 100,\n \"x\": -25,\n \"y\": 0\n },\n \"mainBranchName\": \"main\",\n \"mainBranchOrder\": 0,\n \"showCommitLabel\": true,\n \"showBranches\": true,\n \"rotateCommitLabel\": true,\n \"parallelCommits\": false,\n \"arrowMarkerAbsolute\": false\n },\n \"c4\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"c4ShapeMargin\": 50,\n \"c4ShapePadding\": 20,\n \"width\": 216,\n \"height\": 60,\n \"boxMargin\": 10,\n \"c4ShapeInRow\": 4,\n \"nextLinePaddingX\": 0,\n \"c4BoundaryInRow\": 2,\n \"personFontSize\": 14,\n \"personFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"personFontWeight\": \"normal\",\n \"external_personFontSize\": 14,\n \"external_personFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_personFontWeight\": \"normal\",\n \"systemFontSize\": 14,\n \"systemFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"systemFontWeight\": \"normal\",\n \"external_systemFontSize\": 14,\n \"external_systemFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_systemFontWeight\": \"normal\",\n \"system_dbFontSize\": 14,\n \"system_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"system_dbFontWeight\": \"normal\",\n \"external_system_dbFontSize\": 14,\n \"external_system_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_system_dbFontWeight\": \"normal\",\n \"system_queueFontSize\": 14,\n \"system_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"system_queueFontWeight\": \"normal\",\n \"external_system_queueFontSize\": 14,\n \"external_system_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_system_queueFontWeight\": \"normal\",\n \"boundaryFontSize\": 14,\n \"boundaryFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"boundaryFontWeight\": \"normal\",\n \"messageFontSize\": 12,\n \"messageFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"messageFontWeight\": \"normal\",\n \"containerFontSize\": 14,\n \"containerFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"containerFontWeight\": \"normal\",\n \"external_containerFontSize\": 14,\n \"external_containerFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_containerFontWeight\": \"normal\",\n \"container_dbFontSize\": 14,\n \"container_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"container_dbFontWeight\": \"normal\",\n \"external_container_dbFontSize\": 14,\n \"external_container_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_container_dbFontWeight\": \"normal\",\n \"container_queueFontSize\": 14,\n \"container_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"container_queueFontWeight\": \"normal\",\n \"external_container_queueFontSize\": 14,\n \"external_container_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_container_queueFontWeight\": \"normal\",\n \"componentFontSize\": 14,\n \"componentFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"componentFontWeight\": \"normal\",\n \"external_componentFontSize\": 14,\n \"external_componentFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_componentFontWeight\": \"normal\",\n \"component_dbFontSize\": 14,\n \"component_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"component_dbFontWeight\": \"normal\",\n \"external_component_dbFontSize\": 14,\n \"external_component_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_component_dbFontWeight\": \"normal\",\n \"component_queueFontSize\": 14,\n \"component_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"component_queueFontWeight\": \"normal\",\n \"external_component_queueFontSize\": 14,\n \"external_component_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_component_queueFontWeight\": \"normal\",\n \"wrap\": true,\n \"wrapPadding\": 10,\n \"person_bg_color\": \"#08427B\",\n \"person_border_color\": \"#073B6F\",\n \"external_person_bg_color\": \"#686868\",\n \"external_person_border_color\": \"#8A8A8A\",\n \"system_bg_color\": \"#1168BD\",\n \"system_border_color\": \"#3C7FC0\",\n \"system_db_bg_color\": \"#1168BD\",\n \"system_db_border_color\": \"#3C7FC0\",\n \"system_queue_bg_color\": \"#1168BD\",\n \"system_queue_border_color\": \"#3C7FC0\",\n \"external_system_bg_color\": \"#999999\",\n \"external_system_border_color\": \"#8A8A8A\",\n \"external_system_db_bg_color\": \"#999999\",\n \"external_system_db_border_color\": \"#8A8A8A\",\n \"external_system_queue_bg_color\": \"#999999\",\n \"external_system_queue_border_color\": \"#8A8A8A\",\n \"container_bg_color\": \"#438DD5\",\n \"container_border_color\": \"#3C7FC0\",\n \"container_db_bg_color\": \"#438DD5\",\n \"container_db_border_color\": \"#3C7FC0\",\n \"container_queue_bg_color\": \"#438DD5\",\n \"container_queue_border_color\": \"#3C7FC0\",\n \"external_container_bg_color\": \"#B3B3B3\",\n \"external_container_border_color\": \"#A6A6A6\",\n \"external_container_db_bg_color\": \"#B3B3B3\",\n \"external_container_db_border_color\": \"#A6A6A6\",\n \"external_container_queue_bg_color\": \"#B3B3B3\",\n \"external_container_queue_border_color\": \"#A6A6A6\",\n \"component_bg_color\": \"#85BBF0\",\n \"component_border_color\": \"#78A8D8\",\n \"component_db_bg_color\": \"#85BBF0\",\n \"component_db_border_color\": \"#78A8D8\",\n \"component_queue_bg_color\": \"#85BBF0\",\n \"component_queue_border_color\": \"#78A8D8\",\n \"external_component_bg_color\": \"#CCCCCC\",\n \"external_component_border_color\": \"#BFBFBF\",\n \"external_component_db_bg_color\": \"#CCCCCC\",\n \"external_component_db_border_color\": \"#BFBFBF\",\n \"external_component_queue_bg_color\": \"#CCCCCC\",\n \"external_component_queue_border_color\": \"#BFBFBF\"\n },\n \"sankey\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 400,\n \"linkColor\": \"gradient\",\n \"nodeAlignment\": \"justify\",\n \"showValues\": true,\n \"prefix\": \"\",\n \"suffix\": \"\"\n },\n \"block\": {\n \"useMaxWidth\": true,\n \"padding\": 8\n },\n \"packet\": {\n \"useMaxWidth\": true,\n \"rowHeight\": 32,\n \"bitWidth\": 32,\n \"bitsPerRow\": 32,\n \"showBits\": true,\n \"paddingX\": 5,\n \"paddingY\": 5\n },\n \"architecture\": {\n \"useMaxWidth\": true,\n \"padding\": 40,\n \"iconSize\": 80,\n \"fontSize\": 16\n },\n \"radar\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 600,\n \"marginTop\": 50,\n \"marginRight\": 50,\n \"marginBottom\": 50,\n \"marginLeft\": 50,\n \"axisScaleFactor\": 1,\n \"axisLabelFactor\": 1.05,\n \"curveTension\": 0.17\n },\n \"venn\": {\n \"useMaxWidth\": true,\n \"width\": 800,\n \"height\": 450,\n \"padding\": 8,\n \"useDebugLayout\": false\n },\n \"theme\": \"default\",\n \"look\": \"classic\",\n \"handDrawnSeed\": 0,\n \"layout\": \"dagre\",\n \"maxTextSize\": 50000,\n \"maxEdges\": 500,\n \"darkMode\": false,\n \"fontFamily\": \"\\\"trebuchet ms\\\", verdana, arial, sans-serif;\",\n \"logLevel\": 5,\n \"securityLevel\": \"strict\",\n \"startOnLoad\": true,\n \"arrowMarkerAbsolute\": false,\n \"secure\": [\n \"secure\",\n \"securityLevel\",\n \"startOnLoad\",\n \"maxTextSize\",\n \"suppressErrorRendering\",\n \"maxEdges\"\n ],\n \"legacyMathML\": false,\n \"forceLegacyMathML\": false,\n \"deterministicIds\": false,\n \"fontSize\": 16,\n \"markdownAutoWrap\": true,\n \"suppressErrorRendering\": false\n};", "import type { RequiredDeep } from 'type-fest';\n\nimport theme from './themes/index.js';\nimport type { MermaidConfig } from './config.type.js';\n\n// Uses our custom Vite jsonSchemaPlugin to load only the default values from\n// our JSON Schema\n// @ts-expect-error This file is automatically generated via a custom Vite plugin\nimport defaultConfigJson from './schemas/config.schema.yaml?only-defaults=true';\n\n/**\n * Default mermaid configuration options.\n *\n * Please see the Mermaid config JSON Schema for the default JSON values.\n * Non-JSON JS default values are listed in this file, e.g. functions, or\n * `undefined` (explicitly set so that `configKeys` finds them).\n */\nconst config: RequiredDeep = {\n ...defaultConfigJson,\n // Set, even though they're `undefined` so that `configKeys` finds these keys\n // TODO: Should we replace these with `null` so that they can go in the JSON Schema?\n deterministicIDSeed: undefined,\n elk: {\n // mergeEdges is needed here to be considered\n mergeEdges: false,\n nodePlacementStrategy: 'BRANDES_KOEPF',\n forceNodeModelOrder: false,\n considerModelOrder: 'NODES_AND_EDGES',\n },\n themeCSS: undefined,\n\n // add non-JSON default config values\n themeVariables: theme.default.getThemeVariables(),\n sequence: {\n ...defaultConfigJson.sequence,\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n noteFont: function () {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight,\n };\n },\n actorFont: function () {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight,\n };\n },\n },\n class: {\n hideEmptyMembersBox: false,\n },\n gantt: {\n ...defaultConfigJson.gantt,\n tickInterval: undefined,\n useWidth: undefined, // can probably be removed since `configKeys` already includes this\n },\n c4: {\n ...defaultConfigJson.c4,\n useWidth: undefined,\n personFont: function () {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight,\n };\n },\n flowchart: {\n ...defaultConfigJson.flowchart,\n inheritDir: false, // default to legacy behavior\n },\n\n external_personFont: function () {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight,\n };\n },\n\n systemFont: function () {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight,\n };\n },\n\n external_systemFont: function () {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight,\n };\n },\n\n system_dbFont: function () {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight,\n };\n },\n\n external_system_dbFont: function () {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight,\n };\n },\n\n system_queueFont: function () {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight,\n };\n },\n\n external_system_queueFont: function () {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight,\n };\n },\n\n containerFont: function () {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight,\n };\n },\n\n external_containerFont: function () {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight,\n };\n },\n\n container_dbFont: function () {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight,\n };\n },\n\n external_container_dbFont: function () {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight,\n };\n },\n\n container_queueFont: function () {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight,\n };\n },\n\n external_container_queueFont: function () {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight,\n };\n },\n\n componentFont: function () {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight,\n };\n },\n\n external_componentFont: function () {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight,\n };\n },\n\n component_dbFont: function () {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight,\n };\n },\n\n external_component_dbFont: function () {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight,\n };\n },\n\n component_queueFont: function () {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight,\n };\n },\n\n external_component_queueFont: function () {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight,\n };\n },\n\n boundaryFont: function () {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight,\n };\n },\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n },\n pie: {\n ...defaultConfigJson.pie,\n useWidth: 984,\n },\n xyChart: {\n ...defaultConfigJson.xyChart,\n useWidth: undefined,\n },\n requirement: {\n ...defaultConfigJson.requirement,\n useWidth: undefined,\n },\n packet: {\n ...defaultConfigJson.packet,\n },\n radar: {\n ...defaultConfigJson.radar,\n },\n ishikawa: {\n ...defaultConfigJson.ishikawa,\n },\n treemap: {\n useMaxWidth: true,\n padding: 10,\n diagramPadding: 8,\n showValues: true,\n nodeWidth: 100,\n nodeHeight: 40,\n borderWidth: 1,\n valueFontSize: 12,\n labelFontSize: 14,\n valueFormat: ',',\n },\n venn: {\n ...defaultConfigJson.venn,\n },\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst keyify = (obj: any, prefix = ''): string[] =>\n Object.keys(obj).reduce((res: string[], el): string[] => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], '')];\n }\n return [...res, prefix + el];\n }, []);\n\nexport const configKeys = new Set(keyify(config, ''));\nexport default config;\n", "import { configKeys } from '../defaultConfig.js';\nimport { log } from '../logger.js';\n\n/**\n * Sanitizes directive objects\n *\n * @param args - Directive's JSON\n */\nexport const sanitizeDirective = (args: any): void => {\n log.debug('sanitizeDirective called with', args);\n\n // Return if not an object\n if (typeof args !== 'object' || args == null) {\n return;\n }\n\n // Sanitize each element if an array\n if (Array.isArray(args)) {\n args.forEach((arg) => sanitizeDirective(arg));\n return;\n }\n\n // Sanitize each key if an object\n for (const key of Object.keys(args)) {\n log.debug('Checking key', key);\n if (\n key.startsWith('__') ||\n key.includes('proto') ||\n key.includes('constr') ||\n !configKeys.has(key) ||\n args[key] == null\n ) {\n log.debug('sanitize deleting key: ', key);\n delete args[key];\n continue;\n }\n\n // Recurse if an object\n if (typeof args[key] === 'object') {\n log.debug('sanitizing object', key);\n sanitizeDirective(args[key]);\n continue;\n }\n\n const cssMatchers = ['themeCSS', 'fontFamily', 'altFontFamily'];\n for (const cssKey of cssMatchers) {\n if (key.includes(cssKey)) {\n log.debug('sanitizing css option', key);\n args[key] = sanitizeCss(args[key]);\n }\n }\n }\n\n if (args.themeVariables) {\n for (const k of Object.keys(args.themeVariables)) {\n const val = args.themeVariables[k];\n if (val?.match && !val.match(/^[\\d \"#%(),.;A-Za-z]+$/)) {\n args.themeVariables[k] = '';\n }\n }\n }\n log.debug('After sanitization', args);\n};\n\nexport const sanitizeCss = (str: string): string => {\n let startCnt = 0;\n let endCnt = 0;\n\n for (const element of str) {\n if (startCnt < endCnt) {\n return '{ /* ERROR: Unbalanced CSS */ }';\n }\n if (element === '{') {\n startCnt++;\n } else if (element === '}') {\n endCnt++;\n }\n }\n if (startCnt !== endCnt) {\n return '{ /* ERROR: Unbalanced CSS */ }';\n }\n // Todo add more checks here\n return str;\n};\n", "import assignWithDepth from './assignWithDepth.js';\nimport { log } from './logger.js';\nimport theme from './themes/index.js';\nimport config from './defaultConfig.js';\nimport type { MermaidConfig } from './config.type.js';\nimport { sanitizeDirective } from './utils/sanitizeDirective.js';\n\nexport const defaultConfig: MermaidConfig = Object.freeze(config);\n\n/**\n * Converts a string/boolean into a boolean\n *\n * @param val - String or boolean to convert\n * @returns The result from the input\n */\nexport const evaluate = (val?: string | boolean | null): boolean =>\n val === false || ['false', 'null', '0'].includes(String(val).trim().toLowerCase()) ? false : true;\n\nlet siteConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize: MermaidConfig;\nlet directives: MermaidConfig[] = [];\nlet currentConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg: MermaidConfig, _directives: MermaidConfig[]) => {\n // start with config being the siteConfig\n let cfg: MermaidConfig = assignWithDepth({}, siteCfg);\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n // Join directives\n let sumOfDirectives: MermaidConfig = {};\n for (const d of _directives) {\n sanitize(d);\n // Apply the data from the directive where the overrides the themeVariables\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n }\n\n cfg = assignWithDepth(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n const themeVariables = assignWithDepth(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in theme) {\n cfg.themeVariables = theme[cfg.theme as keyof typeof theme].getThemeVariables(themeVariables);\n }\n }\n\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n};\n\n/**\n * ## setSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function _Default value: At default, will mirror Global Config_\n *\n * @param conf - The base currentConfig to use as siteConfig\n * @returns The new siteConfig\n */\nexport const setSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n siteConfig = assignWithDepth({}, defaultConfig);\n siteConfig = assignWithDepth(siteConfig, conf);\n\n // @ts-ignore: TODO Fix ts errors\n if (conf.theme && theme[conf.theme]) {\n // @ts-ignore: TODO Fix ts errors\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n\nexport const saveConfigFromInitialize = (conf: MermaidConfig): void => {\n configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n siteConfig = assignWithDepth(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n\n return siteConfig;\n};\n/**\n * ## getSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns The siteConfig\n */\nexport const getSiteConfig = (): MermaidConfig => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param conf - The potential currentConfig\n * @returns The currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf: MermaidConfig): MermaidConfig => {\n checkConfig(conf);\n assignWithDepth(currentConfig, conf);\n\n return getConfig();\n};\n\n/**\n * ## getConfig\n *\n * | Function | Description | Type | Return Values |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Avoid calling this function repeatedly. Instead, store the result in a variable and use it, and pass it down to function calls.\n *\n * @returns The currentConfig\n */\nexport const getConfig = (): MermaidConfig => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description | Type | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param options - The potential setConfig parameter\n */\nexport const sanitize = (options: any) => {\n if (!options) {\n return;\n }\n // Checking that options are not in the list of excluded options\n ['secure', ...(siteConfig.secure ?? [])].forEach((key) => {\n if (Object.hasOwn(options, key)) {\n // DO NOT attempt to print options[key] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n log.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n\n // Check that there no attempts of prototype pollution\n Object.keys(options).forEach((key) => {\n if (key.startsWith('__')) {\n delete options[key];\n }\n });\n // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svg's with inline script tags\n Object.keys(options).forEach((key) => {\n if (\n typeof options[key] === 'string' &&\n (options[key].includes('<') ||\n options[key].includes('>') ||\n options[key].includes('url(data:'))\n ) {\n delete options[key];\n }\n if (typeof options[key] === 'object') {\n sanitize(options[key]);\n }\n });\n};\n\n/**\n * Pushes in a directive to the configuration\n *\n * @param directive - The directive to push in\n */\nexport const addDirective = (directive: MermaidConfig) => {\n sanitizeDirective(directive);\n\n // If the directive has a fontFamily, but no themeVariables, add the fontFamily to the themeVariables\n if (directive.fontFamily && !directive.themeVariables?.fontFamily) {\n directive.themeVariables = {\n ...directive.themeVariables,\n fontFamily: directive.fontFamily,\n };\n }\n\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n * ## reset\n *\n * | Function | Description | Type | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\n *\n * ## conf\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- |\n * | conf | base set of values, which currentConfig could be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array |\n *\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\n *\n * @param config - base set of values, which currentConfig could be **reset** to.\n * Defaults to the current siteConfig (e.g returned by {@link getSiteConfig}).\n */\nexport const reset = (config = siteConfig): void => {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(config, directives);\n};\n\nconst ConfigWarning = {\n LAZY_LOAD_DEPRECATED:\n 'The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.',\n FLOWCHART_HTML_LABELS_DEPRECATED:\n 'flowchart.htmlLabels is deprecated. Please use global htmlLabels instead.',\n} as const;\n\ntype ConfigWarningStrings = keyof typeof ConfigWarning;\nconst issuedWarnings: Partial> = {};\nconst issueWarning = (warning: ConfigWarningStrings) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n};\n\nconst checkConfig = (config: MermaidConfig) => {\n if (!config) {\n return;\n }\n // @ts-expect-error Properties were removed in v10. Warning should exist.\n if (config.lazyLoadedDiagrams || config.loadExternalDiagramsAtStartup) {\n issueWarning('LAZY_LOAD_DEPRECATED');\n }\n};\n\nexport const getUserDefinedConfig = (): MermaidConfig => {\n let userConfig: MermaidConfig = {};\n\n if (configFromInitialize) {\n userConfig = assignWithDepth(userConfig, configFromInitialize);\n }\n\n for (const d of directives) {\n userConfig = assignWithDepth(userConfig, d);\n }\n\n return userConfig;\n};\n\n/**\n * Helper function to handle deprecated flowchart.htmlLabels\n * @param config - The configuration object (merged config with defaults)\n * @returns The effective htmlLabels value based on precedence: root flowchart default\n */\nexport const getEffectiveHtmlLabels = (config: MermaidConfig): boolean => {\n // != instead of !== handles null case\n if (config.flowchart?.htmlLabels != undefined) {\n issueWarning('FLOWCHART_HTML_LABELS_DEPRECATED');\n }\n return evaluate(config.htmlLabels ?? config.flowchart?.htmlLabels ?? true);\n};\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x: T): T {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x: T): T {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (\n func: (thisArg: any, ...args: any[]) => T,\n thisArg: any,\n ...args: any[]\n ): T {\n return func.apply(thisArg, args);\n };\n}\n\nif (!construct) {\n construct = function (Func: new (...args: any[]) => T, ...args: any[]): T {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(\n func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n return (thisArg: any, ...args: any[]): T => {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n\n return apply(func, thisArg, args);\n };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(\n Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n set: Record,\n array: readonly any[],\n transformCaseFunc: ReturnType> = stringToLowerCase\n): Record {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n (array as any[])[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array: T[]): Array {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone>(object: T): T {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter>(\n object: T,\n prop: string\n): ReturnType> | (() => null) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(): null {\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n arraySplice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'shadow',\n 'slot',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n] as const);\n\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'enterkeyhint',\n 'exportparts',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'inputmode',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'part',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n] as const);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'exportparts',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inert',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'part',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'slot',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n 'slot',\n] as const);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'mask-type',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n] as const);\n", "import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n", "/* eslint-disable @typescript-eslint/indent */\n\nimport type {\n TrustedHTML,\n TrustedTypesWindow,\n} from 'trusted-types/lib/index.js';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySplice,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n trustedTypes: TrustedTypePolicyFactory,\n purifyHostElement: HTMLScriptElement\n) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nconst _createHooksMap = function (): HooksMap {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: [],\n };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n DOMPurify.version = VERSION;\n\n DOMPurify.removed = [];\n\n if (\n !window ||\n !window.document ||\n window.document.nodeType !== NODE_TYPE.document ||\n !window.Element\n ) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript: HTMLScriptElement =\n originalDocument.currentScript as HTMLScriptElement;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = _createHooksMap();\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n })\n );\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES: UseProfilesConfig | false = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc: null | Parameters[2] = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG: Config | null = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (\n testValue: unknown\n ): testValue is Function | RegExp {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg: Config = {}): void {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n cfg.ADD_URI_SAFE_ATTR,\n transformCaseFunc\n )\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS),\n cfg.ADD_DATA_URI_TAGS,\n transformCaseFunc\n )\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n ? cfg.USE_PROFILES\n : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS =\n cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS =\n cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element: Element): boolean {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function (node: Node): void {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function (name: string, element: Element): void {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element,\n });\n }\n\n element.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty: string): Document {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function (root: Node): NodeIterator {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null\n );\n };\n\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function (element: Element): boolean {\n return (\n element instanceof HTMLFormElement &&\n (typeof element.nodeName !== 'string' ||\n typeof element.textContent !== 'string' ||\n typeof element.removeChild !== 'function' ||\n !(element.attributes instanceof NamedNodeMap) ||\n typeof element.removeAttribute !== 'function' ||\n typeof element.setAttribute !== 'function' ||\n typeof element.namespaceURI !== 'string' ||\n typeof element.insertBefore !== 'function' ||\n typeof element.hasChildNodes !== 'function')\n );\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function (value: unknown): value is Node {\n return typeof Node === 'function' && value instanceof Node;\n };\n\n function _executeHooks(\n hooks: HookFunction[],\n currentNode: Parameters[0],\n data: Parameters[1]\n ): void {\n arrayForEach(hooks, (hook: T) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode: any): boolean {\n let content = null;\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n SAFE_FOR_XML &&\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w!]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (\n SAFE_FOR_XML &&\n currentNode.nodeType === NODE_TYPE.comment &&\n regExpTest(/<[/\\w]/g, currentNode.data)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (\n !(\n EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function &&\n EXTRA_ELEMENT_HANDLING.tagCheck(tagName)\n ) &&\n (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])\n ) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (\n lcTag: string,\n lcName: string,\n value: string\n ): boolean {\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Check if ADD_ATTR function allows this attribute */\n } else if (\n EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function &&\n EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)\n ) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName: string): RegExpMatchArray {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode: Element): void {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Work around a security issue with comments inside attributes */\n if (\n SAFE_FOR_XML &&\n regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)\n ) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if ((dirty as Node).nodeName) {\n const tagName = transformCaseFunc((dirty as Node).nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (\n importedNode.nodeType === NODE_TYPE.element &&\n importedNode.nodeName === 'BODY'\n ) {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n DOMPurify.addHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n DOMPurify.removeHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n return index === -1\n ? undefined\n : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n\n return arrayPop(hooks[entryPoint]);\n };\n\n DOMPurify.removeHooks = function (entryPoint: keyof HooksMap) {\n hooks[entryPoint] = [];\n };\n\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n /**\n * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n */\n (root?: WindowLike): DOMPurify;\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n version: string;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n removed: Array;\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n isSupported: boolean;\n\n /**\n * Set the configuration once.\n *\n * @param cfg configuration object\n */\n setConfig(cfg?: Config): void;\n\n /**\n * Removes the configuration.\n */\n clearConfig(): void;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized TrustedHTML.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_TRUSTED_TYPE: true }\n ): TrustedHTML;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized document fragment.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_DOM_FRAGMENT: true }\n ): DocumentFragment;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized string.\n */\n sanitize(dirty: string | Node, cfg?: Config): string;\n\n /**\n * Checks if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n *\n * @param tag Tag name of containing element.\n * @param attr Attribute name.\n * @param value Attribute value.\n * @returns Returns true if `value` is valid. Otherwise, returns false.\n */\n isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction: DocumentFragmentHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction: UponSanitizeElementHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction: UponSanitizeAttributeHook\n ): void;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: BasicHookName,\n hookFunction?: NodeHook\n ): NodeHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: ElementHookName,\n hookFunction?: ElementHook\n ): ElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction?: DocumentFragmentHook\n ): DocumentFragmentHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction?: UponSanitizeElementHook\n ): UponSanitizeElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction?: UponSanitizeAttributeHook\n ): UponSanitizeAttributeHook | undefined;\n\n /**\n * Removes all DOMPurify hooks at a given entryPoint\n *\n * @param entryPoint entry point for the hooks to remove\n */\n removeHooks(entryPoint: HookName): void;\n\n /**\n * Removes all DOMPurify hooks.\n */\n removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n /**\n * The element that was removed.\n */\n element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n /**\n * The attribute that was removed.\n */\n attribute: Attr | null;\n\n /**\n * The element that the attribute was removed.\n */\n from: Node;\n}\n\ntype BasicHookName =\n | 'beforeSanitizeElements'\n | 'afterSanitizeElements'\n | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n | 'beforeSanitizeShadowDOM'\n | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n beforeSanitizeElements: NodeHook[];\n afterSanitizeElements: NodeHook[];\n beforeSanitizeShadowDOM: DocumentFragmentHook[];\n uponSanitizeShadowNode: NodeHook[];\n afterSanitizeShadowDOM: DocumentFragmentHook[];\n beforeSanitizeAttributes: ElementHook[];\n afterSanitizeAttributes: ElementHook[];\n uponSanitizeElement: UponSanitizeElementHook[];\n uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\ntype ArrayElement = T extends Array ? U : never;\n\ntype HookFunction = ArrayElement;\n\nexport type HookName =\n | BasicHookName\n | ElementHookName\n | DocumentFragmentHookName\n | UponSanitizeElementHookName\n | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type ElementHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n this: DOMPurify,\n currentNode: DocumentFragment,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: UponSanitizeElementHookEvent,\n config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: UponSanitizeAttributeHookEvent,\n config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n tagName: string;\n allowedTags: Record;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n attrName: string;\n attrValue: string;\n keepAttr: boolean;\n allowedAttributes: Record;\n forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n typeof globalThis,\n | 'DocumentFragment'\n | 'HTMLTemplateElement'\n | 'Node'\n | 'Element'\n | 'NodeFilter'\n | 'NamedNodeMap'\n | 'HTMLFormElement'\n | 'DOMParser'\n> & {\n document?: Document;\n MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick;\n", "import DOMPurify from 'dompurify';\nimport { evaluate, getEffectiveHtmlLabels } from '../../config.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\n// Remove and ignore br:s\nexport const lineBreakRegex = //gi;\n\n/**\n * Gets the rows of lines in a string\n *\n * @param s - The string to check the lines for\n * @returns The rows in that string\n */\nexport const getRows = (s?: string): string[] => {\n if (!s) {\n return [''];\n }\n const str = breakToPlaceholder(s).replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\nconst setupDompurifyHooksIfNotSetup = (() => {\n let setup = false;\n\n return () => {\n if (!setup) {\n setupDompurifyHooks();\n setup = true;\n }\n };\n})();\n\nfunction setupDompurifyHooks() {\n const TEMPORARY_ATTRIBUTE = 'data-temp-href-target';\n\n DOMPurify.addHook('beforeSanitizeAttributes', (node) => {\n if (node.tagName === 'A' && node.hasAttribute('target')) {\n node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute('target') ?? '');\n }\n });\n\n DOMPurify.addHook('afterSanitizeAttributes', (node) => {\n if (node.tagName === 'A' && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {\n node.setAttribute('target', node.getAttribute(TEMPORARY_ATTRIBUTE) ?? '');\n node.removeAttribute(TEMPORARY_ATTRIBUTE);\n if (node.getAttribute('target') === '_blank') {\n node.setAttribute('rel', 'noopener');\n }\n }\n });\n}\n\n/**\n * Removes script tags from a text\n *\n * @param txt - The text to sanitize\n * @returns The safer text\n */\nexport const removeScript = (txt: string): string => {\n setupDompurifyHooksIfNotSetup();\n\n const sanitizedText = DOMPurify.sanitize(txt);\n\n return sanitizedText;\n};\n\nconst sanitizeMore = (text: string, config: MermaidConfig) => {\n if (getEffectiveHtmlLabels(config)) {\n const level = config.securityLevel;\n if (level === 'antiscript' || level === 'strict' || level === 'sandbox') {\n text = removeScript(text);\n } else if (level !== 'loose') {\n text = breakToPlaceholder(text);\n text = text.replace(//g, '>');\n text = text.replace(/=/g, '=');\n text = placeholderToBreak(text);\n }\n }\n return text;\n};\n\nexport const sanitizeText = (text: string, config: MermaidConfig): string => {\n if (!text) {\n return text;\n }\n if (config.dompurifyConfig) {\n text = DOMPurify.sanitize(sanitizeMore(text, config), config.dompurifyConfig).toString();\n } else {\n text = DOMPurify.sanitize(sanitizeMore(text, config), {\n FORBID_TAGS: ['style'],\n }).toString();\n }\n return text;\n};\n\nexport const sanitizeTextOrArray = (\n a: string | string[] | string[][],\n config: MermaidConfig\n): string | string[] => {\n if (typeof a === 'string') {\n return sanitizeText(a, config);\n }\n // TODO: Refactor to avoid flat.\n return a.flat().map((x: string) => sanitizeText(x, config));\n};\n\n/**\n * Whether or not a text has any line breaks\n *\n * @param text - The text to test\n * @returns Whether or not the text has breaks\n */\nexport const hasBreaks = (text: string): boolean => {\n return lineBreakRegex.test(text);\n};\n\n/**\n * Splits on
tags\n *\n * @param text - Text to split\n * @returns List of lines as strings\n */\nexport const splitBreaks = (text: string): string[] => {\n return text.split(lineBreakRegex);\n};\n\n/**\n * Converts placeholders to line breaks in HTML\n *\n * @param s - HTML with placeholders\n * @returns HTML with breaks instead of placeholders\n */\nconst placeholderToBreak = (s: string): string => {\n return s.replace(/#br#/g, '
');\n};\n\n/**\n * Opposite of `placeholderToBreak`, converts breaks to placeholders\n *\n * @param s - HTML string\n * @returns String with placeholders\n */\nconst breakToPlaceholder = (s: string): string => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\n/**\n * Gets the current URL\n *\n * @param useAbsolute - Whether to return the absolute URL or not\n * @returns The current URL\n */\nexport const getUrl = (useAbsolute: boolean): string => {\n let url = '';\n if (useAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n\n url = CSS.escape(url);\n }\n\n return url;\n};\n\nexport { evaluate };\n\n/**\n * Wrapper around Math.max which removes non-numeric values\n * Returns the larger of a set of supplied numeric expressions.\n * @param values - Numeric expressions to be evaluated\n * @returns The smaller value\n */\nexport const getMax = function (...values: number[]): number {\n const newValues: number[] = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.max(...newValues);\n};\n\n/**\n * Wrapper around Math.min which removes non-numeric values\n * Returns the smaller of a set of supplied numeric expressions.\n * @param values - Numeric expressions to be evaluated\n * @returns The smaller value\n */\nexport const getMin = function (...values: number[]): number {\n const newValues: number[] = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.min(...newValues);\n};\n\n/**\n * Makes generics in typescript syntax\n *\n * @example\n * Array of array of strings in typescript syntax\n *\n * ```js\n * // returns \"Array>\"\n * parseGenericTypes('Array~Array~string~~');\n * ```\n * @param text - The text to convert\n * @returns The converted string\n */\nexport const parseGenericTypes = function (input: string): string {\n const inputSets = input.split(/(,)/);\n const output = [];\n\n for (let i = 0; i < inputSets.length; i++) {\n let thisSet = inputSets[i];\n\n // if the original input included a value such as \"~K, V~\"\", these will be split into\n // an array of [\"~K\",\",\",\" V~\"].\n // This means that on each call of processSet, there will only be 1 ~ present\n // To account for this, if we encounter a \",\", we are checking the previous and next sets in the array\n // to see if they contain matching ~'s\n // in which case we are assuming that they should be rejoined and sent to be processed\n if (thisSet === ',' && i > 0 && i + 1 < inputSets.length) {\n const previousSet = inputSets[i - 1];\n const nextSet = inputSets[i + 1];\n\n if (shouldCombineSets(previousSet, nextSet)) {\n thisSet = previousSet + ',' + nextSet;\n i++; // Move the index forward to skip the next iteration since we're combining sets\n output.pop();\n }\n }\n\n output.push(processSet(thisSet));\n }\n\n return output.join('');\n};\n\nexport const countOccurrence = (string: string, substring: string): number => {\n return Math.max(0, string.split(substring).length - 1);\n};\n\nconst shouldCombineSets = (previousSet: string, nextSet: string): boolean => {\n const prevCount = countOccurrence(previousSet, '~');\n const nextCount = countOccurrence(nextSet, '~');\n\n return prevCount === 1 && nextCount === 1;\n};\n\nconst processSet = (input: string): string => {\n const tildeCount = countOccurrence(input, '~');\n let hasStartingTilde = false;\n\n if (tildeCount <= 1) {\n return input;\n }\n\n // If there is an odd number of tildes, and the input starts with a tilde, we need to remove it and add it back in later\n if (tildeCount % 2 !== 0 && input.startsWith('~')) {\n input = input.substring(1);\n hasStartingTilde = true;\n }\n\n const chars = [...input];\n\n let first = chars.indexOf('~');\n let last = chars.lastIndexOf('~');\n\n while (first !== -1 && last !== -1 && first !== last) {\n chars[first] = '<';\n chars[last] = '>';\n\n first = chars.indexOf('~');\n last = chars.lastIndexOf('~');\n }\n\n // Add the starting tilde back in if we removed it\n if (hasStartingTilde) {\n chars.unshift('~');\n }\n\n return chars.join('');\n};\n\n// TODO: find a better method for detecting support. This interface was added in the MathML 4 spec.\n// Firefox versions between [4,71] (0.47%) and Safari versions between [5,13.4] (0.17%) don't have this interface implemented but MathML is supported\nexport const isMathMLSupported = () => window.MathMLElement !== undefined;\n\nexport const katexRegex = /\\$\\$(.*)\\$\\$/g;\n\n/**\n * Whether or not a text has KaTeX delimiters\n *\n * @param text - The text to test\n * @returns Whether or not the text has KaTeX delimiters\n */\nexport const hasKatex = (text: string): boolean => (text.match(katexRegex)?.length ?? 0) > 0;\n\n/**\n * Computes the minimum dimensions needed to display a div containing MathML\n *\n * @param text - The text to test\n * @param config - Configuration for Mermaid\n * @returns Object containing \\{width, height\\}\n */\nexport const calculateMathMLDimensions = async (text: string, config: MermaidConfig) => {\n const divElem = document.createElement('div');\n divElem.innerHTML = await renderKatexSanitized(text, config);\n divElem.id = 'katex-temp';\n divElem.style.visibility = 'hidden';\n divElem.style.position = 'absolute';\n divElem.style.top = '0';\n const body = document.querySelector('body');\n body?.insertAdjacentElement('beforeend', divElem);\n const dim = { width: divElem.clientWidth, height: divElem.clientHeight };\n divElem.remove();\n return dim;\n};\n\nconst renderKatexUnsanitized = async (text: string, config: MermaidConfig): Promise => {\n if (!hasKatex(text)) {\n return text;\n }\n\n if (!(isMathMLSupported() || config.legacyMathML || config.forceLegacyMathML)) {\n return text.replace(katexRegex, 'MathML is unsupported in this environment.');\n }\n\n if (injected.includeLargeFeatures) {\n const { default: katex } = await import('katex');\n const outputMode =\n config.forceLegacyMathML || (!isMathMLSupported() && config.legacyMathML)\n ? 'htmlAndMathml'\n : 'mathml';\n return text\n .split(lineBreakRegex)\n .map((line) =>\n hasKatex(line)\n ? `

${line}
`\n : `
${line}
`\n )\n .join('')\n .replace(katexRegex, (_, c) =>\n katex\n .renderToString(c, {\n throwOnError: true,\n displayMode: true,\n output: outputMode,\n })\n .replace(/\\n/g, ' ')\n .replace(//g, '')\n );\n }\n\n return text.replace(\n katexRegex,\n 'Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.'\n );\n};\n\n/**\n * Attempts to render and return the KaTeX portion of a string with MathML\n *\n * @param text - The text to test\n * @param config - Configuration for Mermaid\n * @returns String containing MathML if KaTeX is supported, or an error message if it is not and stylesheets aren't present\n */\nexport const renderKatexSanitized = async (\n text: string,\n config: MermaidConfig\n): Promise => {\n return sanitizeText(await renderKatexUnsanitized(text, config), config);\n};\n\nexport default {\n getRows,\n sanitizeText,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n getMax,\n getMin,\n};\n", "import { log } from './logger.js';\n\n/**\n * Applies d3 attributes\n *\n * @param {any} d3Elem D3 Element to apply the attributes onto\n * @param {[string, string][]} attrs Object.keys equivalent format of key to value mapping of attributes\n */\nconst d3Attrs = function (d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\n\n/**\n * Gives attributes for an SVG's size given arguments\n *\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n * @returns {Map<'height' | 'width' | 'style', string>} Attributes for the SVG\n */\nexport const calculateSvgSizeAttrs = function (height, width, useMaxWidth) {\n let attrs = new Map();\n if (useMaxWidth) {\n attrs.set('width', '100%');\n attrs.set('style', `max-width: ${width}px;`);\n } else {\n attrs.set('height', height);\n attrs.set('width', width);\n }\n return attrs;\n};\n\n/**\n * Applies attributes from `calculateSvgSizeAttrs`\n *\n * @param {import('./diagram-api/types.js').SVG} svgElem The SVG Element to configure\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n */\nexport const configureSvgSize = function (svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\n\n// TODO v11: Remove the graph parameter. It is not used.\nexport const setupGraphViewbox = function (graph, svgElem, padding, useMaxWidth) {\n const svgBounds = svgElem.node().getBBox();\n const sWidth = svgBounds.width;\n const sHeight = svgBounds.height;\n\n log.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);\n\n let width = 0;\n let height = 0;\n log.info(`Graph bounds: ${width}x${height}`, graph);\n\n width = sWidth + padding * 2;\n height = sHeight + padding * 2;\n\n log.info(`Calculated bounds: ${width}x${height}`);\n configureSvgSize(svgElem, height, width, useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${\n svgBounds.width + 2 * padding\n } ${svgBounds.height + 2 * padding}`;\n\n svgElem.attr('viewBox', vBox);\n};\n", "import type { FlowChartStyleOptions } from './diagrams/flowchart/styles.js';\nimport { log } from './logger.js';\nimport type { DiagramStylesProvider } from './diagram-api/types.js';\n\nconst themes: Record = {};\n\nconst getStyles = (\n type: string,\n userStyles: string,\n options: {\n fontFamily: string;\n fontSize: string;\n textColor: string;\n errorBkgColor: string;\n errorTextColor: string;\n lineColor: string;\n } & FlowChartStyleOptions\n) => {\n let diagramStyles = '';\n if (type in themes && themes[type]) {\n diagramStyles = themes[type](options);\n } else {\n log.warn(`No theme found for ${type}`);\n }\n return ` & {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n @keyframes edge-animation-frame {\n from {\n stroke-dashoffset: 0;\n }\n }\n @keyframes dash {\n to {\n stroke-dashoffset: 0;\n }\n }\n & .edge-animation-slow {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 50s linear infinite;\n stroke-linecap: round;\n }\n & .edge-animation-fast {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 20s linear infinite;\n stroke-linecap: round;\n }\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${options.errorBkgColor};\n }\n & .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 1px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n & .edge-thickness-invisible {\n stroke-width: 0;\n fill: none;\n }\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n & .marker.cross {\n stroke: ${options.lineColor};\n }\n\n & svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n & p {\n margin: 0\n }\n\n ${diagramStyles}\n\n ${userStyles}\n`;\n};\n\nexport const addStylesForDiagram = (type: string, diagramTheme?: DiagramStylesProvider): void => {\n if (diagramTheme !== undefined) {\n themes[type] = diagramTheme;\n }\n};\n\nexport default getStyles;\n", "import { sanitizeText as _sanitizeText } from './common.js';\nimport { getConfig } from '../../config.js';\n\nlet accTitle = '';\nlet diagramTitle = '';\nlet accDescription = '';\n\nconst sanitizeText = (txt: string): string => _sanitizeText(txt, getConfig());\n\nexport const clear = (): void => {\n accTitle = '';\n accDescription = '';\n diagramTitle = '';\n};\n\nexport const setAccTitle = (txt: string): void => {\n accTitle = sanitizeText(txt).replace(/^\\s+/g, '');\n};\n\nexport const getAccTitle = (): string => accTitle;\n\nexport const setAccDescription = (txt: string): void => {\n accDescription = sanitizeText(txt).replace(/\\n\\s+/g, '\\n');\n};\n\nexport const getAccDescription = (): string => accDescription;\n\nexport const setDiagramTitle = (txt: string): void => {\n diagramTitle = sanitizeText(txt);\n};\n\nexport const getDiagramTitle = (): string => diagramTitle;\n", "import { addDetector } from './detectType.js';\nimport { log as _log, setLogLevel as _setLogLevel } from '../logger.js';\nimport {\n getConfig as _getConfig,\n setConfig as _setConfig,\n defaultConfig as _defaultConfig,\n setSiteConfig as _setSiteConfig,\n} from '../config.js';\nimport { sanitizeText as _sanitizeText } from '../diagrams/common/common.js';\nimport { setupGraphViewbox as _setupGraphViewbox } from '../setupGraphViewbox.js';\nimport { addStylesForDiagram } from '../styles.js';\nimport type { DiagramDefinition, DiagramDetector } from './types.js';\nimport * as _commonDb from '../diagrams/common/commonDb.js';\n\n/*\n Packaging and exposing resources for external diagrams so that they can import\n diagramAPI and have access to select parts of mermaid common code required to\n create diagrams working like the internal diagrams.\n*/\nexport const log = _log;\nexport const setLogLevel = _setLogLevel;\nexport const getConfig = _getConfig;\nexport const setConfig = _setConfig;\nexport const defaultConfig = _defaultConfig;\nexport const setSiteConfig = _setSiteConfig;\nexport const sanitizeText = (text: string) => _sanitizeText(text, getConfig());\nexport const setupGraphViewbox = _setupGraphViewbox;\nexport const getCommonDb = () => {\n return _commonDb;\n};\n\nconst diagrams: Record = {};\nexport type Detectors = Record;\n\n/**\n * Registers the given diagram with Mermaid.\n *\n * Can be used for third-party custom diagrams.\n *\n * @param id - A unique ID for the given diagram.\n * @param diagram - The diagram definition.\n * @param detector - Function that returns `true` if a given mermaid text is this diagram definition.\n */\nexport const registerDiagram = (\n id: string,\n diagram: DiagramDefinition,\n detector?: DiagramDetector\n) => {\n if (diagrams[id]) {\n log.warn(`Diagram with id ${id} already registered. Overwriting.`);\n }\n diagrams[id] = diagram;\n if (detector) {\n addDetector(id, detector);\n }\n addStylesForDiagram(id, diagram.styles);\n\n diagram.injectUtils?.(\n log,\n setLogLevel,\n getConfig,\n sanitizeText,\n setupGraphViewbox,\n getCommonDb(),\n () => {\n // parseDirective is removed in https://github.com/mermaid-js/mermaid/pull/4759.\n // This is a no-op for legacy support.\n }\n );\n};\n\nexport const getDiagram = (name: string): DiagramDefinition => {\n if (name in diagrams) {\n return diagrams[name];\n }\n throw new DiagramNotFoundError(name);\n};\n\nexport class DiagramNotFoundError extends Error {\n constructor(name: string) {\n super(`Diagram ${name} not found.`);\n }\n}\n"], - "mappings": "kGAKO,IAAMA,GAAmB,2CAEnBC,GACX,kFAEWC,GAAkB,cCVxB,IAAMC,GAAN,cAAkC,KAAM,CAA/C,MAA+C,CAAAC,EAAA,4BAC7C,YAAYC,EAAiB,CAC3B,MAAMA,CAAO,EACb,KAAK,KAAO,qBACd,CACF,ECMO,IAAMC,GAA4C,CAAC,EAwB7CC,GAAaC,EAAA,SAAUC,EAAcC,EAAgC,CAChFD,EAAOA,EACJ,QAAQE,GAAkB,EAAE,EAC5B,QAAQC,GAAgB,EAAE,EAC1B,QAAQC,GAAiB;AAAA,CAAI,EAChC,OAAW,CAACC,EAAK,CAAE,SAAAC,CAAS,CAAC,IAAK,OAAO,QAAQT,EAAS,EAExD,GADgBS,EAASN,EAAMC,CAAM,EAEnC,OAAOI,EAIX,MAAM,IAAIE,GACR,mEAAmEP,CAAI,EACzE,CACF,EAf0B,cA8BbQ,GAA6BT,EAAA,IAAIU,IAA0C,CACtF,OAAW,CAAE,GAAAC,EAAI,SAAAJ,EAAU,OAAAK,CAAO,IAAKF,EACrCG,GAAYF,EAAIJ,EAAUK,CAAM,CAEpC,EAJ0C,8BAM7BC,GAAcb,EAAA,CAACM,EAAaC,EAA2BK,IAA2B,CACzFd,GAAUQ,CAAG,GACfQ,EAAI,KAAK,qBAAqBR,CAAG,+BAA+B,EAElER,GAAUQ,CAAG,EAAI,CAAE,SAAAC,EAAU,OAAAK,CAAO,EACpCE,EAAI,MAAM,qBAAqBR,CAAG,SAASM,EAAS,eAAiB,EAAE,EAAE,CAC3E,EAN2B,eAQdG,GAAmBf,EAACM,GACxBR,GAAUQ,CAAG,EAAE,OADQ,oBCpDhC,IAAMU,GAAkBC,EAAA,CACtBC,EACAC,EACA,CAAE,MAAAC,EAAQ,EAAG,QAAAC,EAAU,EAAM,EAA2C,CAAC,IACjE,CACR,IAAMC,EAA8C,CAAE,MAAAF,EAAO,QAAAC,CAAQ,EACrE,OAAI,MAAM,QAAQF,CAAG,GAAK,CAAC,MAAM,QAAQD,CAAG,GAC1CC,EAAI,QAASI,GAAMP,GAAgBE,EAAKK,EAAGD,CAAM,CAAC,EAC3CJ,GACE,MAAM,QAAQC,CAAG,GAAK,MAAM,QAAQD,CAAG,GAChDC,EAAI,QAASI,GAAM,CACZL,EAAI,SAASK,CAAC,GACjBL,EAAI,KAAKK,CAAC,CAEd,CAAC,EACML,GAELA,IAAQ,QAAaE,GAAS,EACPF,GAAQ,MAAQ,OAAOA,GAAQ,UAAY,OAAOC,GAAQ,SAC1E,OAAO,OAAOD,EAAKC,CAAG,EAEtBA,GAGPA,IAAQ,QAAa,OAAOD,GAAQ,UAAY,OAAOC,GAAQ,UACjE,OAAO,KAAKA,CAAG,EAAE,QAASK,GAAQ,CAE9B,OAAOL,EAAIK,CAAG,GAAM,UACpBL,EAAIK,CAAG,IAAM,OACZN,EAAIM,CAAG,IAAM,QAAa,OAAON,EAAIM,CAAG,GAAM,WAE3CN,EAAIM,CAAG,IAAM,SACfN,EAAIM,CAAG,EAAI,MAAM,QAAQL,EAAIK,CAAG,CAAC,EAAI,CAAC,EAAI,CAAC,GAE7CN,EAAIM,CAAG,EAAIR,GAAgBE,EAAIM,CAAG,EAAGL,EAAIK,CAAG,EAAG,CAAE,MAAOJ,EAAQ,EAAG,QAAAC,CAAQ,CAAC,IACnEA,GAAY,OAAOH,EAAIM,CAAG,GAAM,UAAY,OAAOL,EAAIK,CAAG,GAAM,YACzEN,EAAIM,CAAG,EAAIL,EAAIK,CAAG,EAEtB,CAAC,EAEIN,EACT,EAzCwB,mBA2CjBO,EAAQT,GCpEf,IAAMU,GAAU,CAEZ,IAAK,CACD,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,CACP,EACA,IAAK,CACD,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,CACP,EACA,MAAO,CACH,EAAGC,EAACC,GAAMA,GAAK,IAAM,IAAOA,EAAI,EAAI,EAAIA,EAArC,KACH,EAAGD,EAACE,GAAMA,GAAK,IAAM,IAAOA,EAAI,EAAI,EAAIA,EAArC,KACH,EAAGF,EAACG,GAAMA,GAAK,IAAM,IAAOA,EAAI,EAAI,EAAIA,EAArC,KACH,EAAGH,EAACI,GAAMA,EAAI,IAAX,KACH,EAAGJ,EAACK,GAAMA,GAAK,IAAM,IAAOA,EAAI,EAAI,EAAIA,EAArC,KACH,EAAGL,EAACM,GAAMA,GAAK,IAAM,IAAOA,EAAI,EAAI,EAAIA,EAArC,KACH,EAAGN,EAACO,GAAMA,GAAK,EAAI,EAAKA,EAAI,EAAI,EAAIA,EAAjC,IACP,EAGA,SAAUP,EAACQ,GAAM,CACb,IAAMC,EAAID,EAAI,IACd,OAAOA,EAAI,OAAS,KAAK,KAAMC,EAAI,MAAQ,MAAQ,GAAG,EAAIA,EAAI,KAClE,EAHU,YAKV,QAAST,EAAA,CAACU,EAAGC,EAAGC,KACRA,EAAI,IACJA,GAAK,GACLA,EAAI,IACJA,GAAK,GACLA,EAAI,mBACGF,GAAKC,EAAID,GAAK,EAAIE,EACzBA,EAAI,GACGD,EACPC,EAAI,kBACGF,GAAKC,EAAID,IAAM,kBAAQE,GAAK,EAChCF,GAXF,WAaT,QAASV,EAAA,CAAC,CAAE,EAAAI,EAAG,EAAAC,EAAG,EAAAC,CAAE,EAAGO,IAAY,CAC/B,GAAI,CAACR,EACD,OAAOC,EAAI,KACfF,GAAK,IACLC,GAAK,IACLC,GAAK,IACL,IAAMK,EAAKL,EAAI,GAAMA,GAAK,EAAID,GAAMC,EAAID,EAAMC,EAAID,EAC5CK,EAAI,EAAIJ,EAAIK,EAClB,OAAQE,EAAS,CACb,IAAK,IAAK,OAAOd,GAAQ,QAAQW,EAAGC,EAAGP,EAAI,iBAAK,EAAI,IACpD,IAAK,IAAK,OAAOL,GAAQ,QAAQW,EAAGC,EAAGP,CAAC,EAAI,IAC5C,IAAK,IAAK,OAAOL,GAAQ,QAAQW,EAAGC,EAAGP,EAAI,iBAAK,EAAI,GACxD,CACJ,EAbS,WAcT,QAASJ,EAAA,CAAC,CAAE,EAAAC,EAAG,EAAAC,EAAG,EAAAC,CAAE,EAAGU,IAAY,CAC/BZ,GAAK,IACLC,GAAK,IACLC,GAAK,IACL,IAAMW,EAAM,KAAK,IAAIb,EAAGC,EAAGC,CAAC,EACtBY,EAAM,KAAK,IAAId,EAAGC,EAAGC,CAAC,EACtBG,GAAKQ,EAAMC,GAAO,EACxB,GAAIF,IAAY,IACZ,OAAOP,EAAI,IACf,GAAIQ,IAAQC,EACR,MAAO,GACX,IAAMC,EAAIF,EAAMC,EACVV,EAAKC,EAAI,GAAMU,GAAK,EAAIF,EAAMC,GAAOC,GAAKF,EAAMC,GACtD,GAAIF,IAAY,IACZ,OAAOR,EAAI,IACf,OAAQS,EAAK,CACT,KAAKb,EAAG,QAASC,EAAIC,GAAKa,GAAKd,EAAIC,EAAI,EAAI,IAAM,GACjD,KAAKD,EAAG,QAASC,EAAIF,GAAKe,EAAI,GAAK,GACnC,KAAKb,EAAG,QAASF,EAAIC,GAAKc,EAAI,GAAK,GACnC,QAAS,MAAO,EACpB,CACJ,EArBS,UAsBb,EAEOC,GAAQlB,GCvFf,IAAMmB,GAAO,CAET,MAAOC,EAAA,CAACC,EAAQC,EAAOC,IACfD,EAAQC,EACD,KAAK,IAAID,EAAO,KAAK,IAAIC,EAAOF,CAAM,CAAC,EAC3C,KAAK,IAAIE,EAAO,KAAK,IAAID,EAAOD,CAAM,CAAC,EAH3C,SAKP,MAAOD,EAACC,GACG,KAAK,MAAMA,EAAS,IAAW,EAAI,KADvC,QAGX,EAEOG,GAAQL,GCZf,IAAMM,GAAO,CAET,QAASC,EAACC,GAAQ,CACd,IAAMC,EAAM,KAAK,MAAMD,CAAG,EAAE,SAAS,EAAE,EACvC,OAAOC,EAAI,OAAS,EAAIA,EAAM,IAAIA,CAAG,EACzC,EAHS,UAIb,EAEOC,GAAQJ,GCJf,IAAMK,GAAQ,CACV,QAAAC,GACA,KAAAC,GACA,KAAAC,EACJ,EAEOC,EAAQJ,GCRf,IAAMK,EAAU,CAAC,EACjB,QAASC,EAAI,EAAGA,GAAK,IAAKA,IACtBD,EAAQC,CAAC,EAAIC,EAAE,KAAK,QAAQD,CAAC,EACjC,IAAME,EAAO,CACT,IAAK,EACL,IAAK,EACL,IAAK,CACT,ECPA,IAAMC,GAAN,KAAW,CAHX,MAGW,CAAAC,EAAA,aACP,aAAc,CAEV,KAAK,KAAOC,EAAK,GACrB,CAEA,KAAM,CACF,OAAO,KAAK,IAChB,CACA,IAAIC,EAAM,CACN,GAAI,KAAK,MAAQ,KAAK,OAASA,EAC3B,MAAM,IAAI,MAAM,0DAA0D,EAC9E,KAAK,KAAOA,CAChB,CACA,OAAQ,CACJ,KAAK,KAAOD,EAAK,GACrB,CACA,GAAGC,EAAM,CACL,OAAO,KAAK,OAASA,CACzB,CACJ,EAEOC,GAAQJ,GCpBf,IAAMK,GAAN,KAAe,CALf,MAKe,CAAAC,EAAA,iBAEX,YAAYC,EAAMC,EAAO,CACrB,KAAK,MAAQA,EACb,KAAK,QAAU,GACf,KAAK,KAAOD,EACZ,KAAK,KAAO,IAAIE,EACpB,CAEA,IAAIF,EAAMC,EAAO,CACb,YAAK,MAAQA,EACb,KAAK,QAAU,GACf,KAAK,KAAOD,EACZ,KAAK,KAAK,KAAOG,EAAK,IACf,IACX,CAEA,YAAa,CACT,IAAMH,EAAO,KAAK,KACZ,CAAE,EAAAI,EAAG,EAAAC,EAAG,CAAE,EAAIL,EAChBI,IAAM,SACNJ,EAAK,EAAIM,EAAE,QAAQ,QAAQN,EAAM,GAAG,GACpCK,IAAM,SACNL,EAAK,EAAIM,EAAE,QAAQ,QAAQN,EAAM,GAAG,GACpC,IAAM,SACNA,EAAK,EAAIM,EAAE,QAAQ,QAAQN,EAAM,GAAG,EAC5C,CACA,YAAa,CACT,IAAMA,EAAO,KAAK,KACZ,CAAE,EAAAO,EAAG,EAAAC,EAAG,EAAAC,CAAE,EAAIT,EAChBO,IAAM,SACNP,EAAK,EAAIM,EAAE,QAAQ,QAAQN,EAAM,GAAG,GACpCQ,IAAM,SACNR,EAAK,EAAIM,EAAE,QAAQ,QAAQN,EAAM,GAAG,GACpCS,IAAM,SACNT,EAAK,EAAIM,EAAE,QAAQ,QAAQN,EAAM,GAAG,EAC5C,CAEA,IAAI,GAAI,CACJ,IAAMA,EAAO,KAAK,KACZO,EAAIP,EAAK,EACf,MAAI,CAAC,KAAK,KAAK,GAAGG,EAAK,GAAG,GAAKI,IAAM,OAC1BA,GACX,KAAK,WAAW,EACTD,EAAE,QAAQ,QAAQN,EAAM,GAAG,EACtC,CACA,IAAI,GAAI,CACJ,IAAMA,EAAO,KAAK,KACZQ,EAAIR,EAAK,EACf,MAAI,CAAC,KAAK,KAAK,GAAGG,EAAK,GAAG,GAAKK,IAAM,OAC1BA,GACX,KAAK,WAAW,EACTF,EAAE,QAAQ,QAAQN,EAAM,GAAG,EACtC,CACA,IAAI,GAAI,CACJ,IAAMA,EAAO,KAAK,KACZS,EAAIT,EAAK,EACf,MAAI,CAAC,KAAK,KAAK,GAAGG,EAAK,GAAG,GAAKM,IAAM,OAC1BA,GACX,KAAK,WAAW,EACTH,EAAE,QAAQ,QAAQN,EAAM,GAAG,EACtC,CACA,IAAI,GAAI,CACJ,IAAMA,EAAO,KAAK,KACZI,EAAIJ,EAAK,EACf,MAAI,CAAC,KAAK,KAAK,GAAGG,EAAK,GAAG,GAAKC,IAAM,OAC1BA,GACX,KAAK,WAAW,EACTE,EAAE,QAAQ,QAAQN,EAAM,GAAG,EACtC,CACA,IAAI,GAAI,CACJ,IAAMA,EAAO,KAAK,KACZK,EAAIL,EAAK,EACf,MAAI,CAAC,KAAK,KAAK,GAAGG,EAAK,GAAG,GAAKE,IAAM,OAC1BA,GACX,KAAK,WAAW,EACTC,EAAE,QAAQ,QAAQN,EAAM,GAAG,EACtC,CACA,IAAI,GAAI,CACJ,IAAMA,EAAO,KAAK,KACZU,EAAIV,EAAK,EACf,MAAI,CAAC,KAAK,KAAK,GAAGG,EAAK,GAAG,GAAKO,IAAM,OAC1BA,GACX,KAAK,WAAW,EACTJ,EAAE,QAAQ,QAAQN,EAAM,GAAG,EACtC,CACA,IAAI,GAAI,CACJ,OAAO,KAAK,KAAK,CACrB,CAEA,IAAI,EAAEO,EAAG,CACL,KAAK,KAAK,IAAIJ,EAAK,GAAG,EACtB,KAAK,QAAU,GACf,KAAK,KAAK,EAAII,CAClB,CACA,IAAI,EAAEC,EAAG,CACL,KAAK,KAAK,IAAIL,EAAK,GAAG,EACtB,KAAK,QAAU,GACf,KAAK,KAAK,EAAIK,CAClB,CACA,IAAI,EAAEC,EAAG,CACL,KAAK,KAAK,IAAIN,EAAK,GAAG,EACtB,KAAK,QAAU,GACf,KAAK,KAAK,EAAIM,CAClB,CACA,IAAI,EAAEL,EAAG,CACL,KAAK,KAAK,IAAID,EAAK,GAAG,EACtB,KAAK,QAAU,GACf,KAAK,KAAK,EAAIC,CAClB,CACA,IAAI,EAAEC,EAAG,CACL,KAAK,KAAK,IAAIF,EAAK,GAAG,EACtB,KAAK,QAAU,GACf,KAAK,KAAK,EAAIE,CAClB,CACA,IAAI,EAAEK,EAAG,CACL,KAAK,KAAK,IAAIP,EAAK,GAAG,EACtB,KAAK,QAAU,GACf,KAAK,KAAK,EAAIO,CAClB,CACA,IAAI,EAAEC,EAAG,CACL,KAAK,QAAU,GACf,KAAK,KAAK,EAAIA,CAClB,CACJ,EAEOC,GAAQd,GChIf,IAAMe,GAAW,IAAIC,GAAS,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAAG,aAAa,EAEhEC,GAAQF,GCAf,IAAMG,GAAM,CAER,GAAI,yCAEJ,MAAOC,EAACC,GAAU,CACd,GAAIA,EAAM,WAAW,CAAC,IAAM,GACxB,OACJ,IAAMC,EAAQD,EAAM,MAAMF,GAAI,EAAE,EAChC,GAAI,CAACG,EACD,OACJ,IAAMC,EAAMD,EAAM,CAAC,EACbE,EAAM,SAASD,EAAK,EAAE,EACtBE,EAASF,EAAI,OACbG,EAAWD,EAAS,IAAM,EAC1BE,EAAeF,EAAS,EACxBG,EAAaD,EAAe,EAAI,GAChCE,EAAOF,EAAe,EAAI,EAC1BG,EAAaJ,EAAW,EAAI,GAC5BK,EAAOJ,EAAe,IAAM,GAClC,OAAOK,GAAiB,IAAI,CACxB,GAAKR,GAAQK,GAAQC,EAAa,GAAOC,GAAQH,EACjD,GAAKJ,GAAQK,GAAQC,EAAa,GAAOC,GAAQH,EACjD,GAAKJ,GAAQK,GAAQC,EAAa,GAAOC,GAAQH,EACjD,EAAGF,GAAYF,EAAMO,GAAQH,EAAa,IAAM,CACpD,EAAGP,CAAK,CACZ,EArBO,SAsBP,UAAWD,EAACa,GAAa,CACrB,GAAM,CAAE,EAAAC,EAAG,EAAAC,EAAG,EAAAC,EAAG,EAAAC,CAAE,EAAIJ,EACvB,OAAII,EAAI,EACG,IAAIC,EAAQ,KAAK,MAAMJ,CAAC,CAAC,CAAC,GAAGI,EAAQ,KAAK,MAAMH,CAAC,CAAC,CAAC,GAAGG,EAAQ,KAAK,MAAMF,CAAC,CAAC,CAAC,GAAGE,EAAQ,KAAK,MAAMD,EAAI,GAAG,CAAC,CAAC,GAG3G,IAAIC,EAAQ,KAAK,MAAMJ,CAAC,CAAC,CAAC,GAAGI,EAAQ,KAAK,MAAMH,CAAC,CAAC,CAAC,GAAGG,EAAQ,KAAK,MAAMF,CAAC,CAAC,CAAC,EAE3F,EARW,YASf,EAEOG,GAAQpB,GCtCf,IAAMqB,GAAM,CAER,GAAI,mRACJ,MAAO,8BAEP,SAAUC,EAACC,GAAQ,CACf,IAAMC,EAAQD,EAAI,MAAMF,GAAI,KAAK,EACjC,GAAIG,EAAO,CACP,GAAM,CAAC,CAAEC,EAAQC,CAAI,EAAIF,EACzB,OAAQE,EAAM,CACV,IAAK,OAAQ,OAAOC,EAAE,QAAQ,MAAM,EAAE,WAAWF,CAAM,EAAI,EAAE,EAC7D,IAAK,MAAO,OAAOE,EAAE,QAAQ,MAAM,EAAE,WAAWF,CAAM,EAAI,IAAM,KAAK,EAAE,EACvE,IAAK,OAAQ,OAAOE,EAAE,QAAQ,MAAM,EAAE,WAAWF,CAAM,EAAI,GAAG,CAClE,CACJ,CACA,OAAOE,EAAE,QAAQ,MAAM,EAAE,WAAWJ,CAAG,CAAC,CAC5C,EAXU,YAaV,MAAOD,EAACM,GAAU,CACd,IAAMC,EAAWD,EAAM,WAAW,CAAC,EACnC,GAAIC,IAAa,KAAOA,IAAa,GACjC,OACJ,IAAML,EAAQI,EAAM,MAAMP,GAAI,EAAE,EAChC,GAAI,CAACG,EACD,OACJ,GAAM,CAAC,CAAEM,EAAGC,EAAGC,EAAGC,EAAGC,CAAiB,EAAIV,EAC1C,OAAOW,GAAiB,IAAI,CACxB,EAAGd,GAAI,SAASS,CAAC,EACjB,EAAGH,EAAE,QAAQ,MAAM,EAAE,WAAWI,CAAC,CAAC,EAClC,EAAGJ,EAAE,QAAQ,MAAM,EAAE,WAAWK,CAAC,CAAC,EAClC,EAAGC,EAAIN,EAAE,QAAQ,MAAM,EAAEO,EAAoB,WAAWD,CAAC,EAAI,IAAM,WAAWA,CAAC,CAAC,EAAI,CACxF,EAAGL,CAAK,CACZ,EAdO,SAeP,UAAWN,EAACc,GAAa,CACrB,GAAM,CAAE,EAAAN,EAAG,EAAAC,EAAG,EAAAC,EAAG,EAAAC,CAAE,EAAIG,EACvB,OAAIH,EAAI,EACG,QAAQN,EAAE,KAAK,MAAMG,CAAC,CAAC,KAAKH,EAAE,KAAK,MAAMI,CAAC,CAAC,MAAMJ,EAAE,KAAK,MAAMK,CAAC,CAAC,MAAMC,CAAC,IAGvE,OAAON,EAAE,KAAK,MAAMG,CAAC,CAAC,KAAKH,EAAE,KAAK,MAAMI,CAAC,CAAC,MAAMJ,EAAE,KAAK,MAAMK,CAAC,CAAC,IAE9E,EARW,YASf,EAEOK,GAAQhB,GC7Cf,IAAMiB,GAAU,CAEZ,OAAQ,CACJ,UAAW,UACX,aAAc,UACd,KAAM,UACN,WAAY,UACZ,MAAO,UACP,MAAO,UACP,OAAQ,UACR,MAAO,UACP,eAAgB,UAChB,KAAM,UACN,WAAY,UACZ,MAAO,UACP,UAAW,UACX,UAAW,UACX,WAAY,UACZ,UAAW,UACX,MAAO,UACP,eAAgB,UAChB,SAAU,UACV,QAAS,UACT,SAAU,UACV,SAAU,UACV,SAAU,UACV,cAAe,UACf,SAAU,UACV,UAAW,UACX,SAAU,UACV,UAAW,UACX,YAAa,UACb,eAAgB,UAChB,WAAY,UACZ,WAAY,UACZ,QAAS,UACT,WAAY,UACZ,aAAc,UACd,cAAe,UACf,cAAe,UACf,cAAe,UACf,cAAe,UACf,WAAY,UACZ,SAAU,UACV,YAAa,UACb,QAAS,UACT,QAAS,UACT,WAAY,UACZ,UAAW,UACX,YAAa,UACb,YAAa,UACb,QAAS,UACT,UAAW,UACX,WAAY,UACZ,KAAM,UACN,UAAW,UACX,KAAM,UACN,MAAO,UACP,YAAa,UACb,KAAM,UACN,SAAU,UACV,QAAS,UACT,UAAW,UACX,OAAQ,UACR,MAAO,UACP,MAAO,UACP,SAAU,UACV,cAAe,UACf,UAAW,UACX,aAAc,UACd,UAAW,UACX,WAAY,UACZ,UAAW,UACX,qBAAsB,UACtB,UAAW,UACX,WAAY,UACZ,UAAW,UACX,UAAW,UACX,YAAa,UACb,cAAe,UACf,aAAc,UACd,eAAgB,UAChB,eAAgB,UAChB,eAAgB,UAChB,YAAa,UACb,KAAM,UACN,UAAW,UACX,MAAO,UACP,QAAS,UACT,OAAQ,UACR,iBAAkB,UAClB,WAAY,UACZ,aAAc,UACd,aAAc,UACd,eAAgB,UAChB,gBAAiB,UACjB,kBAAmB,UACnB,gBAAiB,UACjB,gBAAiB,UACjB,aAAc,UACd,UAAW,UACX,UAAW,UACX,SAAU,UACV,YAAa,UACb,KAAM,UACN,QAAS,UACT,MAAO,UACP,UAAW,UACX,OAAQ,UACR,UAAW,UACX,OAAQ,UACR,cAAe,UACf,UAAW,UACX,cAAe,UACf,cAAe,UACf,WAAY,UACZ,UAAW,UACX,KAAM,UACN,KAAM,UACN,KAAM,UACN,WAAY,UACZ,OAAQ,UACR,cAAe,UACf,IAAK,UACL,UAAW,UACX,UAAW,UACX,YAAa,UACb,OAAQ,UACR,WAAY,UACZ,SAAU,UACV,SAAU,UACV,OAAQ,UACR,OAAQ,UACR,QAAS,UACT,UAAW,UACX,UAAW,UACX,UAAW,UACX,KAAM,UACN,YAAa,UACb,IAAK,UACL,KAAM,UACN,QAAS,UACT,YAAa,YACb,UAAW,UACX,OAAQ,UACR,MAAO,UACP,MAAO,UACP,WAAY,UACZ,OAAQ,UACR,YAAa,SACjB,EAEA,MAAOC,EAACC,GAAU,CACdA,EAAQA,EAAM,YAAY,EAC1B,IAAMC,EAAMH,GAAQ,OAAOE,CAAK,EAChC,GAAKC,EAEL,OAAOC,GAAI,MAAMD,CAAG,CACxB,EANO,SAOP,UAAWF,EAACI,GAAa,CACrB,IAAMF,EAAMC,GAAI,UAAUC,CAAQ,EAClC,QAAWC,KAAQN,GAAQ,OACvB,GAAIA,GAAQ,OAAOM,CAAI,IAAMH,EACzB,OAAOG,CAGnB,EAPW,YAQf,EAEOC,GAAQP,GCxKf,IAAMQ,GAAM,CAER,GAAI,+PAEJ,MAAOC,EAACC,GAAU,CACd,IAAMC,EAAWD,EAAM,WAAW,CAAC,EACnC,GAAIC,IAAa,KAAOA,IAAa,GACjC,OACJ,IAAMC,EAAQF,EAAM,MAAMF,GAAI,EAAE,EAChC,GAAI,CAACI,EACD,OACJ,GAAM,CAAC,CAAEC,EAAGC,EAAiBC,EAAGC,EAAmBC,EAAGC,EAAkBC,EAAGC,CAAiB,EAAIR,EAChG,OAAOS,GAAiB,IAAI,CACxB,EAAGC,EAAE,QAAQ,MAAM,EAAER,EAAkB,WAAWD,CAAC,EAAI,KAAO,WAAWA,CAAC,CAAC,EAC3E,EAAGS,EAAE,QAAQ,MAAM,EAAEN,EAAoB,WAAWD,CAAC,EAAI,KAAO,WAAWA,CAAC,CAAC,EAC7E,EAAGO,EAAE,QAAQ,MAAM,EAAEJ,EAAmB,WAAWD,CAAC,EAAI,KAAO,WAAWA,CAAC,CAAC,EAC5E,EAAGE,EAAIG,EAAE,QAAQ,MAAM,EAAEF,EAAoB,WAAWD,CAAC,EAAI,IAAM,WAAWA,CAAC,CAAC,EAAI,CACxF,EAAGT,CAAK,CACZ,EAdO,SAeP,UAAWD,EAACc,GAAa,CACrB,GAAM,CAAE,EAAAV,EAAG,EAAAE,EAAG,EAAAE,EAAG,EAAAE,CAAE,EAAII,EACvB,OAAIJ,EAAI,EACG,QAAQG,EAAE,KAAK,MAAMT,CAAC,CAAC,KAAKS,EAAE,KAAK,MAAMP,CAAC,CAAC,KAAKO,EAAE,KAAK,MAAML,CAAC,CAAC,KAAKK,EAAE,KAAK,MAAMH,CAAC,CAAC,IAGnF,OAAOG,EAAE,KAAK,MAAMT,CAAC,CAAC,KAAKS,EAAE,KAAK,MAAMP,CAAC,CAAC,KAAKO,EAAE,KAAK,MAAML,CAAC,CAAC,GAE7E,EARW,YASf,EAEOO,GAAQhB,GC1Bf,IAAMiB,GAAQ,CAEV,OAAQ,CACJ,QAASC,GACT,IAAKC,GACL,IAAKC,GACL,KAAMA,GACN,IAAKC,GACL,KAAMA,EACV,EAEA,MAAOC,EAACC,GAAU,CACd,GAAI,OAAOA,GAAU,SACjB,OAAOA,EACX,IAAMC,EAAWL,GAAI,MAAMI,CAAK,GAAKH,GAAI,MAAMG,CAAK,GAAKF,GAAI,MAAME,CAAK,GAAKL,GAAQ,MAAMK,CAAK,EAChG,GAAIC,EACA,OAAOA,EACX,MAAM,IAAI,MAAM,8BAA8BD,CAAK,GAAG,CAC1D,EAPO,SAQP,UAAWD,EAACE,GAEJ,CAACA,EAAS,SAAWA,EAAS,MACvBA,EAAS,MAChBA,EAAS,KAAK,GAAGC,EAAK,GAAG,GAAKD,EAAS,KAAK,IAAM,OAC3CH,GAAI,UAAUG,CAAQ,EAExBA,EAAS,EAAI,GAAK,CAAC,OAAO,UAAUA,EAAS,CAAC,GAAK,CAAC,OAAO,UAAUA,EAAS,CAAC,GAAK,CAAC,OAAO,UAAUA,EAAS,CAAC,EAC9GJ,GAAI,UAAUI,CAAQ,EAGtBL,GAAI,UAAUK,CAAQ,EAX1B,YAcf,EAEOE,EAAQT,GCvCf,IAAMU,GAASC,EAAA,CAACC,EAAOC,IAAa,CAChC,IAAMC,EAAKC,EAAM,MAAMH,CAAK,EAC5B,QAAWI,KAAKH,EACZC,EAAGE,CAAC,EAAIC,EAAE,QAAQ,MAAMD,CAAC,EAAEH,EAASG,CAAC,CAAC,EAE1C,OAAOD,EAAM,UAAUD,CAAE,CAC7B,EANe,UAQRI,GAAQR,GCNf,IAAMS,GAAOC,EAAA,CAACC,EAAGC,EAAGC,EAAI,EAAG,EAAI,IAAM,CACjC,GAAI,OAAOF,GAAM,SACb,OAAOG,GAAOH,EAAG,CAAE,EAAGC,CAAE,CAAC,EAC7B,IAAMG,EAAWC,GAAiB,IAAI,CAClC,EAAGC,EAAE,QAAQ,MAAM,EAAEN,CAAC,EACtB,EAAGM,EAAE,QAAQ,MAAM,EAAEL,CAAC,EACtB,EAAGK,EAAE,QAAQ,MAAM,EAAEJ,CAAC,EACtB,EAAGI,EAAE,QAAQ,MAAM,EAAE,CAAC,CAC1B,CAAC,EACD,OAAOC,EAAM,UAAUH,CAAQ,CACnC,EAVa,QAYNI,EAAQV,GCdf,IAAMW,GAAUC,EAAA,CAACC,EAAOF,IACbG,EAAE,KAAK,MAAMC,EAAM,MAAMF,CAAK,EAAEF,CAAO,CAAC,EADnC,WAITK,GAAQL,GCHf,IAAMM,GAAYC,EAACC,GAAU,CACzB,GAAM,CAAE,EAAAC,EAAG,EAAAC,EAAG,EAAAC,CAAE,EAAIC,EAAM,MAAMJ,CAAK,EAC/BF,EAAY,MAAQO,EAAE,QAAQ,SAASJ,CAAC,EAAI,MAAQI,EAAE,QAAQ,SAASH,CAAC,EAAI,MAAQG,EAAE,QAAQ,SAASF,CAAC,EAC9G,OAAOE,EAAE,KAAK,MAAMP,CAAS,CACjC,EAJkB,aAMXQ,GAAQR,GCRf,IAAMS,GAAUC,EAACC,GACNC,GAAUD,CAAK,GAAK,GADf,WAITE,GAAQJ,GCJf,IAAMK,GAASC,EAACC,GACL,CAACC,GAAQD,CAAK,EADV,UAIRE,EAAQJ,GCHf,IAAMK,GAAgBC,EAAA,CAACC,EAAOC,EAASC,IAAW,CAC9C,IAAMC,EAAWC,EAAM,MAAMJ,CAAK,EAC5BK,EAAgBF,EAASF,CAAO,EAChCK,EAAaC,EAAE,QAAQ,MAAMN,CAAO,EAAEI,EAAgBH,CAAM,EAClE,OAAIG,IAAkBC,IAClBH,EAASF,CAAO,EAAIK,GACjBF,EAAM,UAAUD,CAAQ,CACnC,EAPsB,iBASfK,GAAQV,GCVf,IAAMW,GAAUC,EAAA,CAACC,EAAOC,IACbC,GAAcF,EAAO,IAAKC,CAAM,EAD3B,WAITE,EAAQL,GCJf,IAAMM,GAASC,EAAA,CAACC,EAAOC,IACZC,GAAcF,EAAO,IAAK,CAACC,CAAM,EAD7B,UAIRE,EAAQL,GCJf,IAAMM,GAAiBC,EAAA,CAACC,EAAOC,IACpBC,GAAcF,EAAO,IAAK,CAACC,CAAM,EADrB,kBAIhBE,GAAQL,GCHf,IAAMM,GAASC,EAAA,CAACC,EAAOC,IAAa,CAChC,IAAMC,EAAKC,EAAM,MAAMH,CAAK,EACtBI,EAAU,CAAC,EACjB,QAAWC,KAAKJ,EACPA,EAASI,CAAC,IAEfD,EAAQC,CAAC,EAAIH,EAAGG,CAAC,EAAIJ,EAASI,CAAC,GAEnC,OAAOC,GAAON,EAAOI,CAAO,CAChC,EATe,UAWRG,EAAQT,GCVf,IAAMU,GAAMC,EAAA,CAACC,EAAQC,EAAQC,EAAS,KAAO,CACzC,GAAM,CAAE,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,CAAG,EAAIC,EAAM,MAAMP,CAAM,EACnD,CAAE,EAAGQ,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,CAAG,EAAIJ,EAAM,MAAMN,CAAM,EACnDW,GAAcV,EAAS,IACvBW,GAAoBD,GAAc,EAAK,EACvCE,GAAaR,EAAKK,EAElBI,KADoBF,GAAmBC,KAAgB,GAAMD,IAAoBA,GAAmBC,KAAe,EAAID,GAAmBC,KAC7G,GAAK,EAClCE,GAAU,EAAID,GACdE,GAAKd,EAAKY,GAAYP,EAAKQ,GAC3BE,GAAKd,EAAKW,GAAYN,EAAKO,GAC3BG,GAAKd,EAAKU,GAAYL,EAAKM,GAC3BI,EAAKd,EAAKM,GAAgBD,GAAM,EAAIC,IAC1C,OAAOS,EAAKJ,GAAGC,GAAGC,GAAGC,CAAC,CAC1B,EAdY,OAgBLE,GAAQxB,GCjBf,IAAMyB,GAASC,EAAA,CAACC,EAAOC,EAAS,MAAQ,CACpC,IAAMC,EAAUC,EAAM,MAAMH,CAAK,EACjC,OAAAE,EAAQ,EAAI,IAAMA,EAAQ,EAC1BA,EAAQ,EAAI,IAAMA,EAAQ,EAC1BA,EAAQ,EAAI,IAAMA,EAAQ,EACnBE,GAAIF,EAASF,EAAOC,CAAM,CACrC,EANe,UAQRI,EAAQP,GCPR,IAAMQ,GAAiC,UACjCC,GAAkC,UCJxC,IAAMC,EAAWC,EAAA,CAACC,EAAKC,IAC5BA,EAAWC,EAAOF,EAAK,CAAE,EAAG,IAAK,EAAG,EAAG,CAAC,EAAIE,EAAOF,EAAK,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EADpD,YCKxB,IAAMG,GAAN,KAAY,CAPZ,MAOY,CAAAC,EAAA,cACV,aAAc,CAMZ,KAAK,WAAa,UAElB,KAAK,aAAe,UAEpB,KAAK,aAAe,UACpB,KAAK,cAAgB,OAErB,KAAK,kBAAoB,GAIzB,KAAK,WAAa,6CAClB,KAAK,SAAW,MAClB,CACA,cAAe,CA+Hb,GA3HA,KAAK,iBAAmB,KAAK,mBAAqB,KAAK,SAAW,OAAS,QAC3E,KAAK,eAAiB,KAAK,gBAAkBC,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,CAAC,EAClF,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,CAAE,CAAC,EAErF,KAAK,mBAAqB,KAAK,oBAAsBC,EAAS,KAAK,aAAc,KAAK,QAAQ,EAC9F,KAAK,qBACH,KAAK,sBAAwBA,EAAS,KAAK,eAAgB,KAAK,QAAQ,EAC1E,KAAK,oBACH,KAAK,qBAAuBA,EAAS,KAAK,cAAe,KAAK,QAAQ,EACxE,KAAK,gBAAkB,KAAK,iBAAmBA,EAAS,KAAK,aAAc,KAAK,QAAQ,EACxF,KAAK,aAAe,KAAK,cAAgB,UACzC,KAAK,cAAgB,KAAK,eAAiB,OAE3C,KAAK,mBAAqB,KAAK,oBAAsBC,EAAO,KAAK,cAAc,EAC/E,KAAK,kBAAoB,KAAK,mBAAqBA,EAAO,KAAK,aAAa,EAC5E,KAAK,UAAY,KAAK,WAAaA,EAAO,KAAK,UAAU,EACzD,KAAK,eAAiB,KAAK,gBAAkBA,EAAO,KAAK,UAAU,EACnE,KAAK,UAAY,KAAK,WAAa,KAAK,iBAGxC,KAAK,QAAU,KAAK,SAAW,KAAK,oBAGpC,KAAK,QAAU,KAAK,SAAW,KAAK,aACpC,KAAK,QAAU,KAAK,SAAW,KAAK,aACpC,KAAK,WAAa,KAAK,YAAc,KAAK,mBAC1C,KAAK,WAAa,KAAK,YAAc,KAAK,cAC1C,KAAK,cAAgB,KAAK,eAAiB,KAAK,oBAChD,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,UACtD,KAAK,WAAa,KAAK,YAAc,KAAK,kBAC1C,KAAK,oBACH,KAAK,sBACJ,KAAK,SAAWC,EAAO,KAAK,eAAgB,EAAE,EAAI,KAAK,gBAC1D,KAAK,cAAgB,KAAK,eAAiB,KAAK,iBAIhD,KAAK,YAAc,KAAK,aAAe,KAAK,mBAC5C,KAAK,SAAW,KAAK,UAAY,KAAK,QACtC,KAAK,eAAiB,KAAK,gBAAkB,KAAK,iBAClD,KAAK,eAAiB,KAAK,gBAAkB,KAAK,YAClD,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,SACtD,KAAK,YAAc,KAAK,aAAe,KAAK,UAC5C,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UACpD,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,YAC5D,KAAK,eAAiB,KAAK,gBAAkB,KAAK,eAClD,KAAK,cAAgB,KAAK,eAAiB,KAAK,eAChD,KAAK,sBAAwB,KAAK,uBAAyBA,EAAO,KAAK,eAAgB,EAAE,EACzF,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,eAC1D,KAAK,oBAAsB,KAAK,qBAAuBD,EAAO,KAAK,SAAS,EAI5E,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,cACpD,KAAK,mBAAqB,KAAK,oBAAsB,QACrD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,aACtD,KAAK,gBAAkB,KAAK,iBAAmB,UAC/C,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,mBACpD,KAAK,aAAe,KAAK,cAAgB,KAAK,aAC9C,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,aAChE,KAAK,mBAAqB,KAAK,oBAAsBE,EAAQ,KAAK,aAAc,EAAE,EAClF,KAAK,UAAY,KAAK,WAAa,YACnC,KAAK,iBAAmB,KAAK,kBAAoB,YACjD,KAAK,oBAAsB,KAAK,qBAAuB,OACvD,KAAK,gBAAkB,KAAK,iBAAmB,UAC/C,KAAK,aAAe,KAAK,cAAgB,MACzC,KAAK,eAAiB,KAAK,gBAAkB,MAC7C,KAAK,cAAgB,KAAK,eAAiB,OAC3C,KAAK,cAAgB,KAAK,eAAiB,KAAK,UAChD,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,UAC9D,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,UAC1D,KAAK,cAAgB,KAAK,eAAiB,KAAK,iBAChD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,UACxD,KAAK,uBAAyB,KAAK,wBAA0B,UAI7D,KAAK,aAAe,KAAK,cAAgB,KAAK,mBAC9C,KAAK,UAAY,KAAK,WAAa,KAAK,QAIpC,KAAK,UACP,KAAK,OAAS,KAAK,QAAUD,EAAO,KAAK,QAAS,CAAC,GAAK,UACxD,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,QAAS,EAAE,IAEtD,KAAK,OAAS,KAAK,QAAUC,EAAQ,KAAK,QAAS,EAAE,GAAK,UAC1D,KAAK,QAAU,KAAK,SAAWA,EAAQ,KAAK,QAAS,CAAC,GAIxD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UACpD,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,UAE9D,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UAAY,KAAK,iBAErE,KAAK,SAAW,KAAK,UAAY,KAAK,QACtC,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,SAC9D,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,YAAc,KAAK,cAC/E,KAAK,cAAgB,KAAK,eAAiB,KAAK,cAChD,KAAK,yBAA2B,KAAK,0BAA4B,KAAK,QACtE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,WACpD,KAAK,mBAAqB,KAAK,WAC/B,KAAK,cAAgB,KAAK,eAAiB,KAAK,cAChD,KAAK,eAAiB,KAAK,gBAAkB,KAAK,kBAClD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UACpD,KAAK,kBAAoB,KAAK,UAI9B,KAAK,QAAU,KAAK,SAAW,KAAK,aACpC,KAAK,QAAU,KAAK,SAAW,KAAK,eACpC,KAAK,QAAU,KAAK,SAAW,KAAK,cACpC,KAAK,QAAU,KAAK,SAAWJ,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EAC3E,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,SAAW,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrE,KAAK,SAAW,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACjE,KAAK,SACP,QAAS,EAAI,EAAG,EAAI,KAAK,kBAAmB,IAC1C,KAAK,SAAW,CAAC,EAAIG,EAAO,KAAK,SAAW,CAAC,EAAG,EAAE,MAGpD,SAAS,EAAI,EAAG,EAAI,KAAK,kBAAmB,IAC1C,KAAK,SAAW,CAAC,EAAIA,EAAO,KAAK,SAAW,CAAC,EAAG,EAAE,EAKtD,QAAS,EAAI,EAAG,EAAI,KAAK,kBAAmB,IAC1C,KAAK,YAAc,CAAC,EAAI,KAAK,YAAc,CAAC,GAAKD,EAAO,KAAK,SAAW,CAAC,CAAC,EAG5E,QAAS,EAAI,EAAG,EAAI,KAAK,kBAAmB,IACtC,KAAK,SACP,KAAK,aAAe,CAAC,EAAI,KAAK,aAAe,CAAC,GAAKE,EAAQ,KAAK,SAAW,CAAC,EAAG,EAAE,EAEjF,KAAK,aAAe,CAAC,EAAI,KAAK,aAAe,CAAC,GAAKD,EAAO,KAAK,SAAW,CAAC,EAAG,EAAE,EAKpF,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eAEpD,QAAS,EAAI,EAAG,EAAI,KAAK,kBAAmB,IAC1C,KAAK,cAAgB,CAAC,EAAI,KAAK,cAAgB,CAAC,GAAK,KAAK,gBAG5D,IAAME,EAAa,KAAK,SAAW,GAAK,GACxC,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB,KAAK,UAAY,CAAC,EAChB,KAAK,UAAY,CAAC,GAClBL,EAAO,KAAK,QAAS,CAAE,EAAG,IAAK,EAAG,IAAK,EAAGK,GAAc,EAAI,EAAI,EAAG,CAAC,EACtE,KAAK,cAAgB,CAAC,EACpB,KAAK,cAAgB,CAAC,GACtBL,EAAO,KAAK,QAAS,CAAE,EAAG,IAAK,EAAG,IAAK,EAAGK,GAAc,EAAI,EAAI,EAAG,CAAC,EAIxE,KAAK,UAAY,KAAK,WAAa,KAAK,UAGxC,KAAK,UAAY,KAAK,WAAa,KAAK,aACxC,KAAK,UAAY,KAAK,WAAa,KAAK,eACxC,KAAK,UAAY,KAAK,WAAaL,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EACtE,KAAK,UAAY,KAAK,WAAaA,EAAO,KAAK,eAAgB,CAAE,EAAG,EAAG,CAAC,EACxE,KAAK,UAAY,KAAK,WAAaA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACvE,KAAK,UAAY,KAAK,WAAaA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EACzE,KAAK,UAAY,KAAK,WAAaA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACvE,KAAK,UAAY,KAAK,WAAaA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EAGzE,KAAK,KAAO,KAAK,MAAQ,KAAK,aAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,eAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,cAC9B,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EAC/D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,cAAe,CAAE,EAAG,GAAI,CAAC,EAC9D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,EAAG,GAAI,CAAC,EACrE,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACrE,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,CAAE,CAAC,EACnE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,kBACxD,KAAK,mBAAqB,KAAK,oBAAsB,OACrD,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,UAC5D,KAAK,kBAAoB,KAAK,mBAAqB,OACnD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,kBAC1D,KAAK,eAAiB,KAAK,gBAAkB,QAC7C,KAAK,eAAiB,KAAK,gBAAkB,MAC7C,KAAK,oBAAsB,KAAK,qBAAuB,MACvD,KAAK,oBAAsB,KAAK,qBAAuB,QACvD,KAAK,WAAa,KAAK,YAAc,MAGrC,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC/D,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EACjE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,cAAe,CAAE,EAAG,GAAI,CAAC,EAChE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,CAAC,EACtE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,EAAG,GAAI,CAAC,EACxE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACzE,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,WAC1D,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,UAGtD,KAAK,MAAQ,CACX,UAAW,KAAK,OAAO,WAAa,KAAK,UACzC,gBAAiB,KAAK,OAAO,iBAAmB,EAChD,kBAAmB,KAAK,OAAO,mBAAqB,GACpD,aAAc,KAAK,OAAO,cAAgB,GAC1C,iBAAkB,KAAK,OAAO,kBAAoB,EAClD,eAAgB,KAAK,OAAO,gBAAkB,UAC9C,qBAAsB,KAAK,OAAO,sBAAwB,EAC1D,iBAAkB,KAAK,OAAO,kBAAoB,GAClD,cAAe,KAAK,OAAO,eAAiB,GAC5C,eAAgB,KAAK,OAAO,gBAAkB,EAChD,EAGA,KAAK,cAAgB,KAAK,eAAiB,OAC3C,KAAK,mBAAqB,KAAK,oBAAsB,OACrD,KAAK,cAAgB,KAAK,eAAiB,IAC3C,KAAK,qBAAuB,KAAK,sBAAwB,OACzD,KAAK,qBAAuB,KAAK,sBAAwB,MAGzD,KAAK,cAAgB,KAAK,eAAiB,KAAK,aAChD,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,CAAC,EACzF,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBACxD,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EACjF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBM,EAAO,KAAK,aAAa,EAC/CF,EAAQ,KAAK,aAAa,EAC1BD,EAAO,KAAK,aAAa,EAC/B,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBAGxD,KAAK,QAAU,CACb,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,WACvD,WAAY,KAAK,SAAS,YAAc,KAAK,iBAC7C,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,iBACE,KAAK,SAAS,kBACd,iFACJ,EAGA,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,aAChE,KAAK,uBAAyB,KAAK,wBAA0B,KAAK,mBAClE,KAAK,sBAAwB,KAAK,uBAAyB,IAC3D,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,iBAC9D,KAAK,cAAgB,KAAK,eAAiB,KAAK,UAChD,KAAK,wBACH,KAAK,0BACJ,KAAK,SAAWA,EAAO,KAAK,eAAgB,EAAE,EAAI,KAAK,gBAC1D,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,eAG1D,KAAK,KAAO,KAAK,MAAQ,KAAK,aAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,eAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,cAC9B,KAAK,KAAO,KAAK,MAAQH,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,CAAC,EAC1D,KAAK,UACP,KAAK,KAAOI,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,IAEjC,KAAK,KAAOD,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,GAElC,KAAK,QAAU,KAAK,SAAWD,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,iBACH,KAAK,mBAAqB,KAAK,SAAW,QAAU,KAAK,gBAC3D,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,iBACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,iBACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,iBACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,iBACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,iBACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,iBACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,iBACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,iBAEpD,KAAK,cAAgB,KAAK,eAAiB,KAAK,iBAChD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,aAC1D,KAAK,eAAiB,KAAK,WAAa,KAAK,mBAC7C,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,mBACtD,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,eAChE,KAAK,oBAAsB,KAAK,qBAAuB,OAKvD,KAAK,4BACH,KAAK,6BAA+BK,GACtC,KAAK,6BACH,KAAK,8BAAgCC,EAEzC,CACA,UAAUC,EAAW,CACnB,GAAI,OAAOA,GAAc,SAAU,CAEjC,KAAK,aAAa,EAClB,MACF,CAEA,IAAMC,EAAO,OAAO,KAAKD,CAAS,EAGlCC,EAAK,QAASC,GAAM,CAClB,KAAKA,CAAC,EAAIF,EAAUE,CAAC,CACvB,CAAC,EAGD,KAAK,aAAa,EAElBD,EAAK,QAASC,GAAM,CAClB,KAAKA,CAAC,EAAIF,EAAUE,CAAC,CACvB,CAAC,CACH,CACF,EAEaC,GAAoBb,EAACc,GAAkB,CAClD,IAAMC,EAAQ,IAAIhB,GAClB,OAAAgB,EAAM,UAAUD,CAAa,EACtBC,CACT,EAJiC,qBCnZjC,IAAMC,GAAN,KAAY,CAHZ,MAGY,CAAAC,EAAA,cACV,aAAc,CACZ,KAAK,WAAa,OAClB,KAAK,aAAe,UACpB,KAAK,eAAiBC,EAAQ,KAAK,aAAc,EAAE,EACnD,KAAK,cAAgBC,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,CAAC,EAC1D,KAAK,mBAAqBC,EAAO,KAAK,UAAU,EAChD,KAAK,qBAAuBC,EAAS,KAAK,eAAgB,KAAK,QAAQ,EACvE,KAAK,oBAAsBA,EAAS,KAAK,cAAe,KAAK,QAAQ,EACrE,KAAK,iBAAmBD,EAAO,KAAK,YAAY,EAChD,KAAK,mBAAqBA,EAAO,KAAK,cAAc,EACpD,KAAK,kBAAoBA,EAAO,KAAK,aAAa,EAClD,KAAK,UAAYA,EAAO,KAAK,UAAU,EACvC,KAAK,UAAYA,EAAO,KAAK,UAAU,EAEvC,KAAK,QAAU,UACf,KAAK,UAAY,aACjB,KAAK,kBAAoB,YACzB,KAAK,cAAgBF,EAAQE,EAAO,SAAS,EAAG,EAAE,EAClD,KAAK,UAAY,aACjB,KAAK,QAAU,OACf,KAAK,QAAUE,EAAK,IAAK,IAAK,IAAK,GAAI,EACvC,KAAK,eAAiB,aACtB,KAAK,WAAa,6CAClB,KAAK,SAAW,OAChB,KAAK,gBAAkB,UACvB,KAAK,UAAY,OACjB,KAAK,kBAAoB,GAGzB,KAAK,QAAU,aACf,KAAK,WAAa,aAClB,KAAK,WAAa,aAClB,KAAK,cAAgB,aACrB,KAAK,iBAAmB,aACxB,KAAK,WAAa,UAClB,KAAK,oBAAsB,aAI3B,KAAK,YAAc,aACnB,KAAK,SAAW,aAChB,KAAK,eAAiB,aACtB,KAAK,eAAiB,aACtB,KAAK,YAAc,aACnB,KAAK,gBAAkB,aACvB,KAAK,iBAAmB,aACxB,KAAK,oBAAsB,aAC3B,KAAK,eAAiB,aACtB,KAAK,cAAgB,aACrB,KAAK,gBAAkB,aACvB,KAAK,aAAe,UACpB,KAAK,cAAgB,aACrB,KAAK,sBAAwB,aAC7B,KAAK,mBAAqB,aAC1B,KAAK,oBAAsB,QAI3B,KAAK,gBAAkBC,EAAO,UAAW,EAAE,EAC3C,KAAK,mBAAqB,aAC1B,KAAK,iBAAmB,UACxB,KAAK,gBAAkBA,EAAO,KAAK,gBAAiB,EAAE,EACtD,KAAK,gBAAkBD,EAAK,IAAK,IAAK,IAAK,EAAE,EAC7C,KAAK,aAAe,aACpB,KAAK,cAAgB,aACrB,KAAK,mBAAqB,aAC1B,KAAK,qBAAuB,aAC5B,KAAK,uBAAyB,UAC9B,KAAK,sBAAwBA,EAAK,IAAK,IAAK,IAAK,EAAE,EACnD,KAAK,mBAAqB,UAC1B,KAAK,UAAY,aACjB,KAAK,iBAAmB,aACxB,KAAK,oBAAsB,OAC3B,KAAK,gBAAkB,UACvB,KAAK,aAAe,UACpB,KAAK,kBAAoB,aACzB,KAAK,eAAiB,UACtB,KAAK,cAAgB,UAGrB,KAAK,aAAe,KAAK,mBACzB,KAAK,UAAY,KAAK,QAGtB,KAAK,cAAgB,aACrB,KAAK,mBAAqB,aAC1B,KAAK,cAAgB,IACrB,KAAK,qBAAuB,KAAK,mBACjC,KAAK,qBAAuB,MAG5B,KAAK,OAAS,KAAK,QAAUJ,EAAQ,KAAK,QAAS,CAAC,GAAK,UACzD,KAAK,QAAU,KAAK,SAAWK,EAAO,KAAK,QAAS,EAAE,EAGtD,KAAK,WAAa,aAElB,KAAK,cAAgB,UACrB,KAAK,eAAiB,MACxB,CACA,cAAe,CACb,KAAK,UAAYL,EAAQ,KAAK,QAAS,EAAE,EACzC,KAAK,UAAY,KAAK,kBACtB,KAAK,eAAiB,KAAK,kBAG3B,KAAK,QAAU,KAAK,QACpB,KAAK,WAAa,KAAK,QACvB,KAAK,WAAa,KAAK,UACvB,KAAK,cAAgB,KAAK,QAC1B,KAAK,iBAAmB,KAAK,UAC7B,KAAK,oBAAsBA,EAAQ,KAAK,gBAAiB,EAAE,EAI3D,KAAK,YAAc,KAAK,QACxB,KAAK,SAAW,KAAK,QACrB,KAAK,eAAiB,KAAK,kBAC3B,KAAK,eAAiB,KAAK,YAC3B,KAAK,YAAc,KAAK,kBACxB,KAAK,gBAAkB,KAAK,kBAC5B,KAAK,iBAAmB,KAAK,SAC7B,KAAK,oBAAsB,KAAK,YAChC,KAAK,eAAiB,KAAK,kBAC3B,KAAK,cAAgB,KAAK,kBAC1B,KAAK,gBAAkB,KAAK,qBAC5B,KAAK,aAAe,KAAK,UACzB,KAAK,cAAgB,KAAK,mBAC1B,KAAK,sBAAwB,KAAK,QAClC,KAAK,mBAAqB,KAAK,UAI/B,KAAK,mBAAqB,KAAK,WAC/B,KAAK,aAAeA,EAAQ,KAAK,QAAS,EAAE,EAC5C,KAAK,cAAgB,KAAK,cAC1B,KAAK,mBAAqB,KAAK,kBAC/B,KAAK,qBAAuB,KAAK,mBACjC,KAAK,UAAY,KAAK,kBACtB,KAAK,iBAAmB,KAAK,kBAC7B,KAAK,kBAAoBE,EAAO,KAAK,gBAAgB,EAGrD,KAAK,cAAgB,KAAK,UAC1B,KAAK,mBAAqB,KAAK,UAG/B,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UACpD,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,UAC9D,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UAAY,KAAK,iBACrE,KAAK,SAAW,KAAK,UAAY,KAAK,QACtC,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,SAC9D,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,YAAc,KAAK,cAC/E,KAAK,cAAgB,KAAK,eAAiB,OAC3C,KAAK,yBAA2B,KAAK,0BAA4B,KAAK,QACtE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,WACpD,KAAK,mBAAqB,KAAK,mBAC/B,KAAK,kBAAoB,UAEzB,KAAK,cAAgB,KAAK,eAAiB,KAAK,cAChD,KAAK,eAAiB,KAAK,gBAAkB,KAAK,kBAElD,KAAK,UAAY,KAAK,aACtB,KAAK,UAAY,KAAK,eACtB,KAAK,UAAYD,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EACpD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,EAAG,CAAC,EACtD,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EACvD,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EAGvD,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,SAAW,KAAK,UAAY,UACjC,KAAK,SAAW,KAAK,UAAY,UACjC,KAAK,SAAW,KAAK,UAAY,UAIjC,KAAK,QAAU,KAAK,SAAW,KAAK,aACpC,KAAK,QAAU,KAAK,SAAW,KAAK,eACpC,KAAK,QAAU,KAAK,SAAW,KAAK,cACpC,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,SAAW,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrE,KAAK,SAAW,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAGrE,QAASK,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,YAAcA,CAAC,EAAI,KAAK,YAAcA,CAAC,GAAKJ,EAAO,KAAK,SAAWI,CAAC,CAAC,EAG5E,QAASA,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,aAAeA,CAAC,EAAI,KAAK,aAAeA,CAAC,GAAKN,EAAQ,KAAK,SAAWM,CAAC,EAAG,EAAE,EAGnF,QAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,UAAYA,CAAC,EAChB,KAAK,UAAYA,CAAC,GAAKL,EAAO,KAAK,QAAS,CAAE,EAAG,GAAI,EAAG,IAAK,EAAG,EAAE,IAAMK,EAAI,EAAG,CAAC,EAClF,KAAK,cAAgBA,CAAC,EACpB,KAAK,cAAgBA,CAAC,GAAKL,EAAO,KAAK,QAAS,CAAE,EAAG,GAAI,EAAG,IAAK,EAAG,EAAE,GAAKK,EAAI,EAAG,CAAC,EAIvF,KAAK,gBAAkB,KAAK,kBAAoB,KAAK,SAAW,QAAU,KAAK,gBAE/E,QAASA,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,cAAgBA,CAAC,EAAI,KAAK,cAAgBA,CAAC,GAAK,KAAK,gBAI5D,QAASA,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,MAAQA,CAAC,EAAI,KAAK,SAAWA,CAAC,EAErC,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,kBACxD,KAAK,mBAAqB,KAAK,oBAAsB,OACrD,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,UAC5D,KAAK,kBAAoB,KAAK,mBAAqB,OACnD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,kBAC1D,KAAK,eAAiB,KAAK,gBAAkB,QAC7C,KAAK,eAAiB,KAAK,gBAAkB,MAC7C,KAAK,oBAAsB,KAAK,qBAAuB,MACvD,KAAK,oBAAsB,KAAK,qBAAuB,QACvD,KAAK,WAAa,KAAK,YAAc,MAGrC,QAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,QAAUA,EAAI,EAAE,EAAI,KAAK,QAAUA,EAAI,EAAE,GAAKN,EAAQ,KAAK,SAAWM,CAAC,EAAG,EAAE,EAEnF,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,WAC1D,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,UAGtD,KAAK,cAAgB,KAAK,eAAiB,KAAK,aAChD,KAAK,cAAgB,KAAK,eAAiBL,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,CAAC,EACzF,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBACxD,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EACjF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBM,EAAO,KAAK,aAAa,EAC/CP,EAAQ,KAAK,aAAa,EAC1BK,EAAO,KAAK,aAAa,EAC/B,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBAGxD,KAAK,QAAU,CACb,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,WACvD,WAAY,KAAK,SAAS,YAAc,KAAK,iBAC7C,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,iBACE,KAAK,SAAS,kBACd,iFACJ,EAEA,KAAK,OAAS,CACZ,eAAgB,KAAK,iBACrB,aAAc,KAAK,iBACnB,WAAY,KAAK,iBACjB,WAAY,KAAK,iBACjB,iBAAkB,KAAK,iBACvB,eAAgB,KAAK,UACvB,EAGA,KAAK,MAAQ,CACX,UAAW,KAAK,OAAO,WAAa,KAAK,UACzC,gBAAiB,KAAK,OAAO,iBAAmB,EAChD,kBAAmB,KAAK,OAAO,mBAAqB,GACpD,aAAc,KAAK,OAAO,cAAgB,GAC1C,iBAAkB,KAAK,OAAO,kBAAoB,EAClD,eAAgB,KAAK,OAAO,gBAAkB,UAC9C,qBAAsB,KAAK,OAAO,sBAAwB,EAC1D,iBAAkB,KAAK,OAAO,kBAAoB,GAClD,cAAe,KAAK,OAAO,eAAiB,GAC5C,eAAgB,KAAK,OAAO,gBAAkB,EAChD,EAGA,KAAK,UAAY,KAAK,iBAGtB,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,aAChE,KAAK,uBAAyB,KAAK,wBAA0B,KAAK,mBAClE,KAAK,sBAAwB,KAAK,uBAAyB,IAC3D,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,iBAC9D,KAAK,cAAgB,KAAK,eAAiB,KAAK,UAChD,KAAK,wBACH,KAAK,0BACJ,KAAK,SAAWA,EAAO,KAAK,eAAgB,EAAE,EAAI,KAAK,gBAC1D,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,eAG1D,KAAK,KAAOL,EAAQ,KAAK,eAAgB,EAAE,EAC3C,KAAK,KAAOA,EAAQ,KAAK,MAAQ,KAAK,eAAgB,EAAE,EACxD,KAAK,KAAOA,EAAQ,KAAK,MAAQ,KAAK,cAAe,EAAE,EACvD,KAAK,KAAOA,EAAQ,KAAK,MAAQC,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAAG,EAAE,EAC1E,KAAK,KAAOD,EAAQ,KAAK,MAAQC,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAAG,EAAE,EAC1E,KAAK,KAAOD,EAAQ,KAAK,MAAQC,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAAG,EAAE,EAC1E,KAAK,KAAOD,EAAQ,KAAK,MAAQC,EAAO,KAAK,aAAc,CAAE,EAAG,EAAI,CAAC,EAAG,EAAE,EAC1E,KAAK,KAAOD,EAAQ,KAAK,MAAQC,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,CAAC,EAAG,EAAE,EAC3E,KAAK,QAAU,KAAK,SAAWC,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,gBAAkB,KAAK,iBAAmBA,EAAO,KAAK,cAAc,EACzE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmBA,EAAO,KAAK,cAAc,EACzE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eAEpD,KAAK,cAAgB,KAAK,eAAiB,KAAK,iBAChD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,aAC1D,KAAK,eAAiB,KAAK,WAAa,KAAK,mBAC7C,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,mBACtD,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,eAChE,KAAK,oBAAsB,KAAK,qBAAuB,OAKvD,KAAK,4BACH,KAAK,6BAA+BF,EAAQ,KAAK,WAAY,EAAE,EACjE,KAAK,6BACH,KAAK,8BAAgCA,EAAQ,KAAK,WAAY,CAAC,EAGjE,KAAK,WAAa,KAAK,YAAc,MACvC,CACA,UAAUQ,EAAW,CACnB,GAAI,OAAOA,GAAc,SAAU,CAEjC,KAAK,aAAa,EAClB,MACF,CAEA,IAAMC,EAAO,OAAO,KAAKD,CAAS,EAGlCC,EAAK,QAASC,GAAM,CAClB,KAAKA,CAAC,EAAIF,EAAUE,CAAC,CACvB,CAAC,EAGD,KAAK,aAAa,EAElBD,EAAK,QAASC,GAAM,CAClB,KAAKA,CAAC,EAAIF,EAAUE,CAAC,CACvB,CAAC,CACH,CACF,EAEaC,GAAoBZ,EAACa,GAAkB,CAClD,IAAMC,EAAQ,IAAIf,GAClB,OAAAe,EAAM,UAAUD,CAAa,EACtBC,CACT,EAJiC,qBCtYjC,IAAMC,GAAN,KAAY,CAPZ,MAOY,CAAAC,EAAA,cACV,aAAc,CAEZ,KAAK,WAAa,UAClB,KAAK,aAAe,UAEpB,KAAK,eAAiBC,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC1D,KAAK,eAAiB,UACtB,KAAK,cAAgBA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,CAAC,EAC1D,KAAK,mBAAqBC,EAAS,KAAK,aAAc,KAAK,QAAQ,EACnE,KAAK,qBAAuBA,EAAS,KAAK,eAAgB,KAAK,QAAQ,EACvE,KAAK,oBAAsBA,EAAS,KAAK,cAAe,KAAK,QAAQ,EAGrE,KAAK,iBAAmBC,EAAO,KAAK,YAAY,EAChD,KAAK,mBAAqBA,EAAO,KAAK,cAAc,EACpD,KAAK,kBAAoBA,EAAO,KAAK,aAAa,EAClD,KAAK,UAAYA,EAAO,KAAK,UAAU,EACvC,KAAK,UAAYA,EAAO,KAAK,UAAU,EAEvC,KAAK,WAAa,QAClB,KAAK,QAAU,UACf,KAAK,UAAY,UACjB,KAAK,UAAY,UACjB,KAAK,QAAU,UACf,KAAK,QAAU,UACf,KAAK,eAAiB,UACtB,KAAK,WAAa,6CAClB,KAAK,SAAW,OAChB,KAAK,gBAAkB,yBACvB,KAAK,UAAY,OACjB,KAAK,kBAAoB,GAIzB,KAAK,QAAU,aACf,KAAK,WAAa,aAClB,KAAK,WAAa,aAClB,KAAK,cAAgB,aACrB,KAAK,iBAAmB,aACxB,KAAK,WAAa,aAClB,KAAK,oBAAsB,aAI3B,KAAK,YAAc,aACnB,KAAK,SAAW,aAChB,KAAK,eAAiB,QACtB,KAAK,eAAiB,aACtB,KAAK,YAAc,aACnB,KAAK,gBAAkB,aACvB,KAAK,iBAAmB,aACxB,KAAK,oBAAsB,aAC3B,KAAK,eAAiB,aACtB,KAAK,cAAgB,aACrB,KAAK,gBAAkB,aACvB,KAAK,aAAe,UACpB,KAAK,cAAgB,aACrB,KAAK,sBAAwB,OAC7B,KAAK,mBAAqB,UAC1B,KAAK,oBAAsB,QAI3B,KAAK,gBAAkB,aACvB,KAAK,mBAAqB,aAC1B,KAAK,iBAAmB,aACxB,KAAK,gBAAkB,UACvB,KAAK,gBAAkB,aACvB,KAAK,aAAe,aACpB,KAAK,mBAAqB,aAC1B,KAAK,cAAgB,KAAK,mBAC1B,KAAK,kBAAoB,aACzB,KAAK,qBAAuB,KAAK,kBACjC,KAAK,uBAAyB,aAC9B,KAAK,sBAAwB,aAC7B,KAAK,mBAAqB,aAC1B,KAAK,UAAY,aACjB,KAAK,iBAAmB,aACxB,KAAK,oBAAsB,aAC3B,KAAK,gBAAkB,aACvB,KAAK,aAAe,aACpB,KAAK,eAAiB,aACtB,KAAK,cAAgB,aAErB,KAAK,gBAAkBC,EAAK,IAAK,IAAK,IAAK,GAAI,EAC/C,KAAK,mBAAqB,QAC1B,KAAK,iBAAmB,UACxB,KAAK,gBAAkB,UACvB,KAAK,aAAe,UACpB,KAAK,mBAAqB,QAC1B,KAAK,cAAgB,aACrB,KAAK,kBAAoB,QACzB,KAAK,qBAAuB,aAC5B,KAAK,uBAAyB,UAC9B,KAAK,sBAAwB,UAC7B,KAAK,mBAAqB,UAC1B,KAAK,UAAY,YACjB,KAAK,iBAAmB,YACxB,KAAK,oBAAsB,OAC3B,KAAK,gBAAkB,UACvB,KAAK,aAAe,MACpB,KAAK,eAAiB,MACtB,KAAK,cAAgB,OAGrB,KAAK,aAAe,KAAK,mBACzB,KAAK,UAAY,KAAK,QAGtB,KAAK,cAAgB,aACrB,KAAK,mBAAqB,aAC1B,KAAK,cAAgB,IACrB,KAAK,qBAAuB,KAAK,mBACjC,KAAK,qBAAuB,MAG5B,KAAK,OAAS,aACd,KAAK,QAAU,aAGf,KAAK,WAAa,QAClB,KAAK,cAAgB,UACrB,KAAK,eAAiB,UACtB,KAAK,aAAa,CACpB,CACA,cAAe,CAIb,KAAK,QAAU,KAAK,SAAW,KAAK,aACpC,KAAK,QAAU,KAAK,SAAW,KAAK,eACpC,KAAK,QAAU,KAAK,SAAW,KAAK,cACpC,KAAK,QAAU,KAAK,SAAWH,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,SAAW,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrE,KAAK,SAAW,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrE,KAAK,YAAoB,KAAK,aAAqBI,EAAO,KAAK,eAAgB,EAAE,EACjF,KAAK,YAAoB,KAAK,aAAqBA,EAAO,KAAK,cAAe,EAAE,EAChF,QAASC,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAE1C,KAAK,SAAWA,CAAC,EAAID,EAAO,KAAK,SAAWC,CAAC,EAAG,EAAE,EAClD,KAAK,aAAeA,CAAC,EAAI,KAAK,aAAeA,CAAC,GAAKD,EAAO,KAAK,SAAWC,CAAC,EAAG,EAAE,EAGlF,QAASA,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,YAAcA,CAAC,EAAI,KAAK,YAAcA,CAAC,GAAKL,EAAO,KAAK,SAAWK,CAAC,EAAG,CAAE,EAAG,GAAI,CAAC,EAGxF,QAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,UAAYA,CAAC,EAAI,KAAK,UAAYA,CAAC,GAAKL,EAAO,KAAK,QAAS,CAAE,EAAG,GAAI,EAAG,EAAE,EAAIK,EAAI,EAAG,CAAC,EAC5F,KAAK,cAAgBA,CAAC,EACpB,KAAK,cAAgBA,CAAC,GAAKL,EAAO,KAAK,QAAS,CAAE,EAAG,GAAI,EAAG,EAAE,EAAIK,EAAI,EAAG,CAAC,EAQ9E,GALA,KAAK,gBACH,KAAK,kBAAoB,cAAgB,KAAK,gBAC1C,KAAK,gBACL,KAAK,eAEP,KAAK,iBAAmB,aAAc,CACxC,KAAK,aAAe,KAAK,cAAgBH,EAAO,KAAK,cAAc,EACnE,KAAK,aAAe,KAAK,cAAgBA,EAAO,KAAK,cAAc,EACnE,QAASG,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,cAAgBA,CAAC,EAAI,KAAK,cAAgBA,CAAC,GAAK,KAAK,cAE9D,CAGA,KAAK,QAAU,KAAK,QACpB,KAAK,WAAa,KAAK,QACvB,KAAK,WAAa,KAAK,UACvB,KAAK,cAAgB,KAAK,QAC1B,KAAK,iBAAmB,KAAK,UAC7B,KAAK,WAAa,KAAK,UACvB,KAAK,oBAAsB,KAAK,gBAKhC,KAAK,YAAcC,EAAQ,KAAK,QAAS,EAAE,EAC3C,KAAK,SAAW,KAAK,QACrB,KAAK,iBAAmB,KAAK,SAC7B,KAAK,YAAc,KAAK,UACxB,KAAK,gBAAkB,KAAK,UAC5B,KAAK,oBAAsB,KAAK,YAChC,KAAK,eAAiB,KAAK,eAC3B,KAAK,cAAgB,KAAK,eAC1B,KAAK,gBAAkB,KAAK,QAC5B,KAAK,cAAgB,KAAK,eAC1B,KAAK,eAAiB,KAAK,YAI3B,KAAK,cAAgB,KAAK,mBAC1B,KAAK,qBAAuB,KAAK,kBAGjC,KAAK,cAAgB,KAAK,UAC1B,KAAK,mBAAqB,KAAK,UAG/B,KAAK,OAAS,KAAK,QAAUA,EAAQ,KAAK,aAAc,EAAE,GAAK,UAC/D,KAAK,QAAU,KAAK,SAAWA,EAAQ,KAAK,aAAc,CAAC,EAE3D,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UACpD,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,UAC9D,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UAAY,KAAK,iBAErE,KAAK,SAAW,KAAK,UAAY,KAAK,QACtC,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,SAC9D,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,YAAc,KAAK,cAC/E,KAAK,cAAgB,KAAK,eAAiB,UAC3C,KAAK,yBAA2B,KAAK,0BAA4B,KAAK,QACtE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,WACpD,KAAK,mBAAqB,KAAK,WAC/B,KAAK,kBAAoB,KAAK,UAE9B,KAAK,cAAgB,KAAK,eAAiB,KAAK,cAChD,KAAK,eAAiB,KAAK,gBAAkB,KAAK,kBAClD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UAEpD,KAAK,UAAY,KAAK,iBAEtB,KAAK,UAAY,KAAK,aACtB,KAAK,UAAY,KAAK,eACtB,KAAK,UAAYN,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EACpD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,EAAG,CAAC,EACtD,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EACvD,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EAGvD,KAAK,KAAO,KAAK,MAAQ,KAAK,aAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,eAC9B,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,cAAe,CAAE,EAAG,GAAI,CAAC,EAC9D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EAC/D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,cAAe,CAAE,EAAG,GAAI,CAAC,EAC9D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,EAAG,GAAI,CAAC,EACrE,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACrE,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACrE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,kBACxD,KAAK,mBAAqB,KAAK,oBAAsB,OACrD,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,UAC5D,KAAK,kBAAoB,KAAK,mBAAqB,OACnD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,kBAC1D,KAAK,eAAiB,KAAK,gBAAkB,QAC7C,KAAK,eAAiB,KAAK,gBAAkB,MAC7C,KAAK,oBAAsB,KAAK,qBAAuB,MACvD,KAAK,oBAAsB,KAAK,qBAAuB,QACvD,KAAK,WAAa,KAAK,YAAc,MAGrC,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC/D,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EACjE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,cAAe,CAAE,EAAG,GAAI,CAAC,EAChE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,CAAC,EACtE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,EAAG,GAAI,CAAC,EACxE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACzE,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,WAC1D,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,UAGtD,KAAK,cAAgB,KAAK,eAAiB,KAAK,aAChD,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,CAAC,EACzF,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBACxD,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EACjF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBO,EAAO,KAAK,aAAa,EAC/CD,EAAQ,KAAK,aAAa,EAC1BF,EAAO,KAAK,aAAa,EAC/B,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBAGxD,KAAK,MAAQ,CACX,UAAW,KAAK,OAAO,WAAa,KAAK,UACzC,gBAAiB,KAAK,OAAO,iBAAmB,EAChD,kBAAmB,KAAK,OAAO,mBAAqB,GACpD,aAAc,KAAK,OAAO,cAAgB,GAC1C,iBAAkB,KAAK,OAAO,kBAAoB,EAClD,eAAgB,KAAK,OAAO,gBAAkB,UAC9C,qBAAsB,KAAK,OAAO,sBAAwB,EAC1D,iBAAkB,KAAK,OAAO,kBAAoB,GAClD,cAAe,KAAK,OAAO,eAAiB,GAC5C,eAAgB,KAAK,OAAO,gBAAkB,EAChD,EAGA,KAAK,QAAU,CACb,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,WACvD,WAAY,KAAK,SAAS,YAAc,KAAK,iBAC7C,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,iBACE,KAAK,SAAS,kBACd,iFACJ,EAGA,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,aAChE,KAAK,uBAAyB,KAAK,wBAA0B,KAAK,mBAClE,KAAK,sBAAwB,KAAK,uBAAyB,IAC3D,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,iBAC9D,KAAK,cAAgB,KAAK,eAAiB,KAAK,UAChD,KAAK,wBAA0B,KAAK,yBAA2B,KAAK,gBACpE,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,eAG1D,KAAK,KAAO,KAAK,MAAQ,KAAK,aAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,eAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,cAC9B,KAAK,KAAO,KAAK,MAAQJ,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,CAAC,EAC1D,KAAK,UACP,KAAK,KAAOM,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,IAEjC,KAAK,KAAOF,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,GAElC,KAAK,QAAU,KAAK,SAAWA,EAAOF,EAAO,KAAK,IAAI,EAAG,EAAE,EAC3D,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,gBAAkB,KAAK,iBAAmBA,EAAO,KAAK,cAAc,EACzE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmBA,EAAO,KAAK,cAAc,EACzE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eAEpD,KAAK,cAAgB,KAAK,eAAiB,KAAK,iBAChD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,aAC1D,KAAK,eAAiB,KAAK,WAAa,KAAK,mBAC7C,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,mBACtD,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,eAChE,KAAK,oBAAsB,KAAK,qBAAuB,OAKvD,KAAK,4BACH,KAAK,6BAA+BM,GACtC,KAAK,6BACH,KAAK,8BAAgCC,EAEzC,CACA,UAAUC,EAAW,CAQnB,GANA,OAAO,KAAK,IAAI,EAAE,QAASC,GAAM,CAC3B,KAAKA,CAAC,IAAM,eACd,KAAKA,CAAC,EAAI,OAEd,CAAC,EAEG,OAAOD,GAAc,SAAU,CAEjC,KAAK,aAAa,EAClB,MACF,CAEA,IAAME,EAAO,OAAO,KAAKF,CAAS,EAGlCE,EAAK,QAASD,GAAM,CAClB,KAAKA,CAAC,EAAID,EAAUC,CAAC,CACvB,CAAC,EAGD,KAAK,aAAa,EAElBC,EAAK,QAASD,GAAM,CAClB,KAAKA,CAAC,EAAID,EAAUC,CAAC,CACvB,CAAC,CACH,CACF,EAEaE,GAAoBd,EAACe,GAAkB,CAClD,IAAMC,EAAQ,IAAIjB,GAClB,OAAAiB,EAAM,UAAUD,CAAa,EACtBC,CACT,EAJiC,qBChbjC,IAAMC,GAAN,KAAY,CAPZ,MAOY,CAAAC,EAAA,cACV,aAAc,CAEZ,KAAK,WAAa,UAClB,KAAK,aAAe,UACpB,KAAK,eAAiB,UACtB,KAAK,WAAa,QAClB,KAAK,QAAU,UACf,KAAK,UAAY,UACjB,KAAK,UAAY,QACjB,KAAK,QAAU,UACf,KAAK,QAAU,UACf,KAAK,eAAiB,QACtB,KAAK,WAAa,6CAClB,KAAK,SAAW,OAEhB,KAAK,cAAgBC,EAAQ,UAAW,EAAE,EAC1C,KAAK,mBAAqBC,EAAS,KAAK,aAAc,KAAK,QAAQ,EACnE,KAAK,qBAAuBA,EAAS,KAAK,eAAgB,KAAK,QAAQ,EACvE,KAAK,oBAAsBA,EAAS,KAAK,cAAe,KAAK,QAAQ,EACrE,KAAK,iBAAmBC,EAAO,KAAK,YAAY,EAChD,KAAK,mBAAqBA,EAAO,KAAK,cAAc,EACpD,KAAK,kBAAoBA,EAAO,KAAK,YAAY,EACjD,KAAK,UAAYA,EAAO,KAAK,UAAU,EACvC,KAAK,UAAYA,EAAO,KAAK,UAAU,EACvC,KAAK,kBAAoB,GAGzB,KAAK,QAAU,aACf,KAAK,WAAa,aAClB,KAAK,WAAa,aAClB,KAAK,cAAgB,aACrB,KAAK,iBAAmB,aACxB,KAAK,WAAa,OAClB,KAAK,oBAAsB,UAI3B,KAAK,YAAc,aACnB,KAAK,SAAW,aAChB,KAAK,eAAiB,QACtB,KAAK,eAAiB,aACtB,KAAK,YAAc,OACnB,KAAK,gBAAkB,OACvB,KAAK,iBAAmB,aACxB,KAAK,oBAAsB,UAC3B,KAAK,eAAiB,aACtB,KAAK,cAAgB,aACrB,KAAK,gBAAkB,aACvB,KAAK,aAAe,UACpB,KAAK,cAAgB,aACrB,KAAK,sBAAwB,OAC7B,KAAK,mBAAqB,UAC1B,KAAK,oBAAsB,QAI3B,KAAK,gBAAkB,UACvB,KAAK,mBAAqB,QAC1B,KAAK,iBAAmB,UACxB,KAAK,gBAAkB,UACvB,KAAK,gBAAkB,aACvB,KAAK,aAAe,UACpB,KAAK,mBAAqB,QAC1B,KAAK,cAAgB,aACrB,KAAK,kBAAoB,QACzB,KAAK,qBAAuB,aAC5B,KAAK,uBAAyB,UAC9B,KAAK,sBAAwB,aAC7B,KAAK,mBAAqB,aAC1B,KAAK,UAAY,YACjB,KAAK,iBAAmB,YACxB,KAAK,oBAAsB,OAC3B,KAAK,gBAAkB,UACvB,KAAK,aAAe,MACpB,KAAK,eAAiB,MACtB,KAAK,cAAgB,UAGrB,KAAK,aAAe,KAAK,mBACzB,KAAK,UAAY,KAAK,QAGtB,KAAK,cAAgB,aACrB,KAAK,mBAAqB,aAC1B,KAAK,cAAgB,IACrB,KAAK,qBAAuB,KAAK,mBACjC,KAAK,qBAAuB,MAG5B,KAAK,WAAa,QAElB,KAAK,cAAgB,UACrB,KAAK,eAAiB,SACxB,CACA,cAAe,CAEb,KAAK,YAAcC,EAAO,KAAK,QAAS,EAAE,EAC1C,KAAK,SAAW,KAAK,QACrB,KAAK,iBAAmB,KAAK,SAC7B,KAAK,eAAiB,KAAK,eAC3B,KAAK,cAAgB,KAAK,eAC1B,KAAK,gBAAkB,KAAK,QAC5B,KAAK,cAAgB,KAAK,eAC1B,KAAK,eAAiB,KAAK,YAG3B,KAAK,QAAU,KAAK,SAAW,KAAK,aACpC,KAAK,QAAU,KAAK,SAAW,KAAK,eACpC,KAAK,QAAU,KAAK,SAAW,KAAK,cACpC,KAAK,QAAU,KAAK,SAAWC,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EAClE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACnE,KAAK,SAAW,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrE,KAAK,SAAW,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrE,KAAK,YAAoB,KAAK,aAAqBD,EAAO,KAAK,eAAgB,EAAE,EACjF,KAAK,YAAoB,KAAK,aAAqBA,EAAO,KAAK,cAAe,EAAE,EAChF,QAASE,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAE1C,KAAK,SAAWA,CAAC,EAAIF,EAAO,KAAK,SAAWE,CAAC,EAAG,EAAE,EAClD,KAAK,aAAeA,CAAC,EAAI,KAAK,aAAeA,CAAC,GAAKF,EAAO,KAAK,SAAWE,CAAC,EAAG,EAAE,EAIlF,QAASA,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,YAAcA,CAAC,EAAI,KAAK,YAAcA,CAAC,GAAKD,EAAO,KAAK,SAAWC,CAAC,EAAG,CAAE,EAAG,GAAI,CAAC,EAIxF,KAAK,gBACH,KAAK,kBAAoB,cAAgB,KAAK,gBAC1C,KAAK,gBACL,KAAK,eAEX,QAASA,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,cAAgBA,CAAC,EAAI,KAAK,cAAgBA,CAAC,GAAK,KAAK,gBAG5D,QAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,UAAYA,CAAC,EAChB,KAAK,UAAYA,CAAC,GAAKD,EAAO,KAAK,QAAS,CAAE,EAAG,GAAI,EAAG,IAAK,EAAG,EAAE,EAAIC,EAAI,EAAG,CAAC,EAChF,KAAK,cAAgBA,CAAC,EACpB,KAAK,cAAgBA,CAAC,GAAKD,EAAO,KAAK,QAAS,CAAE,EAAG,GAAI,EAAG,IAAK,EAAG,EAAE,EAAIC,EAAI,EAAG,CAAC,EAKtF,KAAK,QAAU,KAAK,QACpB,KAAK,WAAa,KAAK,QACvB,KAAK,WAAa,KAAK,UACvB,KAAK,cAAgB,KAAK,QAC1B,KAAK,iBAAmB,KAAK,UAI7B,KAAK,gBAAkB,KAAK,QAC5B,KAAK,cAAgB,KAAK,mBAC1B,KAAK,qBAAuB,KAAK,kBACjC,KAAK,sBAAwB,KAAK,gBAClC,KAAK,mBAAqB,KAAK,QAG/B,KAAK,cAAgB,KAAK,UAC1B,KAAK,mBAAqB,KAAK,UAG/B,KAAK,OAAS,KAAK,QAAUL,EAAQ,KAAK,QAAS,EAAE,GAAK,UAC1D,KAAK,QAAU,KAAK,SAAWA,EAAQ,KAAK,QAAS,EAAE,EAGvD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UACpD,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,UAC9D,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UAAY,KAAK,iBAErE,KAAK,SAAW,KAAK,UAAY,KAAK,QACtC,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,SAC9D,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,YAAc,KAAK,cAC/E,KAAK,cAAgB,KAAK,eAAiB,UAC3C,KAAK,yBAA2B,KAAK,0BAA4B,KAAK,QACtE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,WACpD,KAAK,mBAAqB,KAAK,mBAC/B,KAAK,kBAAoB,KAAK,UAE9B,KAAK,cAAgB,KAAK,eAAiB,KAAK,cAChD,KAAK,eAAiB,KAAK,gBAAkB,KAAK,kBAClD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UAEpD,KAAK,UAAY,KAAK,iBAEtB,KAAK,UAAY,KAAK,aACtB,KAAK,UAAY,KAAK,eACtB,KAAK,UAAYI,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EACpD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,EAAG,CAAC,EACtD,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EACvD,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EAGvD,KAAK,KAAO,KAAK,MAAQ,KAAK,aAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,eAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,cAC9B,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EAC/D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,cAAe,CAAE,EAAG,GAAK,EAAG,GAAI,CAAC,EACtE,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,EAAG,GAAI,CAAC,EACrE,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACrE,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,CAAE,CAAC,EACnE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,kBACxD,KAAK,mBAAqB,KAAK,oBAAsB,OACrD,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,UAC5D,KAAK,kBAAoB,KAAK,mBAAqB,OACnD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,kBAC1D,KAAK,eAAiB,KAAK,gBAAkB,QAC7C,KAAK,eAAiB,KAAK,gBAAkB,MAC7C,KAAK,oBAAsB,KAAK,qBAAuB,MACvD,KAAK,oBAAsB,KAAK,qBAAuB,QACvD,KAAK,WAAa,KAAK,YAAc,MAGrC,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC/D,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EACjE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,cAAe,CAAE,EAAG,GAAI,CAAC,EAChE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,CAAC,EACtE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,EAAG,GAAI,CAAC,EACxE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACvE,KAAK,MAAQ,KAAK,OAASA,EAAO,KAAK,eAAgB,CAAE,EAAG,IAAK,EAAG,GAAI,CAAC,EACzE,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,WAC1D,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,UAGtD,KAAK,cAAgB,KAAK,eAAiB,KAAK,aAChD,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,CAAC,EACzF,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBACxD,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EACjF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBE,EAAO,KAAK,aAAa,EAC/CN,EAAQ,KAAK,aAAa,EAC1BG,EAAO,KAAK,aAAa,EAC/B,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBAExD,KAAK,OAAS,CACZ,eAAgB,KAAK,iBACrB,aAAc,KAAK,iBACnB,WAAY,KAAK,iBACjB,WAAY,KAAK,iBACjB,iBAAkB,KAAK,iBACvB,eAAgB,KAAK,OACvB,EAGA,KAAK,MAAQ,CACX,UAAW,KAAK,OAAO,WAAa,KAAK,UACzC,gBAAiB,KAAK,OAAO,iBAAmB,EAChD,kBAAmB,KAAK,OAAO,mBAAqB,GACpD,aAAc,KAAK,OAAO,cAAgB,GAC1C,iBAAkB,KAAK,OAAO,kBAAoB,EAClD,eAAgB,KAAK,OAAO,gBAAkB,UAC9C,qBAAsB,KAAK,OAAO,sBAAwB,EAC1D,iBAAkB,KAAK,OAAO,kBAAoB,GAClD,cAAe,KAAK,OAAO,eAAiB,GAC5C,eAAgB,KAAK,OAAO,gBAAkB,EAChD,EAGA,KAAK,QAAU,CACb,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,WACvD,WAAY,KAAK,SAAS,YAAc,KAAK,iBAC7C,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,iBACE,KAAK,SAAS,kBACd,iFACJ,EAGA,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,aAChE,KAAK,uBAAyB,KAAK,wBAA0B,KAAK,mBAClE,KAAK,sBAAwB,KAAK,uBAAyB,IAC3D,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,iBAC9D,KAAK,cAAgB,KAAK,eAAiB,KAAK,UAChD,KAAK,wBAA0B,KAAK,yBAA2B,KAAK,oBACpE,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,eAG1D,KAAK,KAAO,KAAK,MAAQ,KAAK,aAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,eAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,cAC9B,KAAK,KAAO,KAAK,MAAQC,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,CAAC,EAC1D,KAAK,UACP,KAAK,KAAOJ,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,EACjC,KAAK,KAAOA,EAAQ,KAAK,KAAM,EAAE,IAEjC,KAAK,KAAOG,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,EAChC,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,GAElC,KAAK,QAAU,KAAK,SAAWD,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,gBAAkB,KAAK,iBAAmBA,EAAO,KAAK,cAAc,EACzE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmBA,EAAO,KAAK,cAAc,EACzE,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eACpD,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,eAEpD,KAAK,cAAgB,KAAK,eAAiB,KAAK,iBAChD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,aAC1D,KAAK,eAAiB,KAAK,WAAa,KAAK,mBAC7C,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,mBACtD,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,eAChE,KAAK,oBAAsB,KAAK,qBAAuB,OAKvD,KAAK,4BACH,KAAK,6BAA+BK,GACtC,KAAK,6BACH,KAAK,8BAAgCC,EAEzC,CACA,UAAUC,EAAW,CACnB,GAAI,OAAOA,GAAc,SAAU,CAEjC,KAAK,aAAa,EAClB,MACF,CAEA,IAAMC,EAAO,OAAO,KAAKD,CAAS,EAGlCC,EAAK,QAASC,GAAM,CAClB,KAAKA,CAAC,EAAIF,EAAUE,CAAC,CACvB,CAAC,EAGD,KAAK,aAAa,EAElBD,EAAK,QAASC,GAAM,CAClB,KAAKA,CAAC,EAAIF,EAAUE,CAAC,CACvB,CAAC,CACH,CACF,EAEaC,GAAoBb,EAACc,GAAkB,CAClD,IAAMC,EAAQ,IAAIhB,GAClB,OAAAgB,EAAM,UAAUD,CAAa,EACtBC,CACT,EAJiC,qBC3YjC,IAAMC,GAAN,KAAY,CAVZ,MAUY,CAAAC,EAAA,cACV,aAAc,CACZ,KAAK,aAAe,OACpB,KAAK,SAAW,UAChB,KAAK,eAAiBC,EAAQ,KAAK,SAAU,EAAE,EAC/C,KAAK,WAAa,UAGlB,KAAK,cAAgBC,EAAO,KAAK,aAAc,CAAE,EAAG,IAAK,CAAC,EAC1D,KAAK,mBAAqBC,EAAS,KAAK,aAAc,KAAK,QAAQ,EACnE,KAAK,qBAAuBA,EAAS,KAAK,eAAgB,KAAK,QAAQ,EACvE,KAAK,oBAAsBA,EAAS,KAAK,cAAe,KAAK,QAAQ,EAGrE,KAAK,iBAAmBC,EAAO,KAAK,YAAY,EAChD,KAAK,mBAAqBA,EAAO,KAAK,cAAc,EACpD,KAAK,kBAAoBA,EAAO,KAAK,aAAa,EAClD,KAAK,UAAYA,EAAO,KAAK,UAAU,EACvC,KAAK,UAAYA,EAAO,KAAK,UAAU,EAGvC,KAAK,QAAU,OACf,KAAK,UAAY,aACjB,KAAK,UAAY,OACjB,KAAK,QAAU,OACf,KAAK,QAAU,aACf,KAAK,KAAO,OACZ,KAAK,KAAO,OACZ,KAAK,SAAW,OAChB,KAAK,KAAO,OACZ,KAAK,eAAiB,UACtB,KAAK,WAAa,6CAClB,KAAK,SAAW,OAChB,KAAK,kBAAoB,GAIzB,KAAK,QAAU,aACf,KAAK,WAAa,aAClB,KAAK,WAAa,aAClB,KAAK,cAAgB,aACrB,KAAK,iBAAmB,aACxB,KAAK,WAAa,aAClB,KAAK,oBAAsB,QAI3B,KAAK,YAAc,aACnB,KAAK,SAAW,aAChB,KAAK,eAAiB,aACtB,KAAK,eAAiB,KAAK,YAC3B,KAAK,YAAc,aACnB,KAAK,gBAAkB,aACvB,KAAK,iBAAmB,aACxB,KAAK,oBAAsB,aAC3B,KAAK,eAAiB,aACtB,KAAK,cAAgB,aACrB,KAAK,gBAAkB,aACvB,KAAK,aAAe,aACpB,KAAK,cAAgB,aACrB,KAAK,sBAAwB,OAC7B,KAAK,mBAAqB,UAC1B,KAAK,oBAAsB,QAI3B,KAAK,gBAAkB,aACvB,KAAK,mBAAqB,QAC1B,KAAK,iBAAmB,aACxB,KAAK,gBAAkB,UACvB,KAAK,gBAAkB,aACvB,KAAK,aAAe,aACpB,KAAK,mBAAqB,QAC1B,KAAK,cAAgB,aACrB,KAAK,kBAAoB,aACzB,KAAK,qBAAuB,aAC5B,KAAK,uBAAyB,UAC9B,KAAK,sBAAwB,aAC7B,KAAK,mBAAqB,aAC1B,KAAK,UAAY,aACjB,KAAK,iBAAmB,aACxB,KAAK,oBAAsB,aAC3B,KAAK,aAAe,aACpB,KAAK,gBAAkB,aACvB,KAAK,eAAiB,aACtB,KAAK,cAAgB,aAGrB,KAAK,aAAe,KAAK,mBACzB,KAAK,UAAY,KAAK,QAGtB,KAAK,cAAgB,aACrB,KAAK,mBAAqB,aAC1B,KAAK,cAAgB,IACrB,KAAK,qBAAuB,KAAK,mBACjC,KAAK,qBAAuB,MAG5B,KAAK,OAAS,KAAK,QAAUH,EAAQ,KAAK,QAAS,EAAE,GAAK,UAC1D,KAAK,QAAU,KAAK,SAAW,UAG/B,KAAK,WAAa,QAElB,KAAK,cAAgB,UACrB,KAAK,eAAiB,SACxB,CACA,cAAe,CACb,KAAK,UAAYA,EAAQ,KAAK,SAAU,EAAE,EAC1C,KAAK,QAAU,KAAK,SAIpB,KAAK,YAAcA,EAAQ,KAAK,QAAS,EAAE,EAC3C,KAAK,SAAW,KAAK,QACrB,KAAK,eAAiB,KAAK,KAC3B,KAAK,eAAiB,KAAK,YAC3B,KAAK,YAAc,KAAK,KACxB,KAAK,gBAAkB,KAAK,KAC5B,KAAK,iBAAmB,KAAK,SAC7B,KAAK,oBAAsB,KAAK,YAChC,KAAK,eAAiB,KAAK,KAC3B,KAAK,cAAgB,KAAK,KAC1B,KAAK,gBAAkB,OACvB,KAAK,aAAe,OACpB,KAAK,cAAgB,OAKrB,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,QAAU,KAAK,SAAW,UAC/B,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,QAAU,KAAK,SAAW,OAC/B,KAAK,SAAW,KAAK,UAAY,OACjC,KAAK,SAAW,KAAK,UAAY,OAGjC,QAASI,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,YAAcA,CAAC,EAAI,KAAK,YAAcA,CAAC,GAAKD,EAAO,KAAK,SAAWC,CAAC,CAAC,EAG5E,QAASA,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IACtC,KAAK,SACP,KAAK,aAAeA,CAAC,EAAI,KAAK,aAAeA,CAAC,GAAKJ,EAAQ,KAAK,SAAWI,CAAC,EAAG,EAAE,EAEjF,KAAK,aAAeA,CAAC,EAAI,KAAK,aAAeA,CAAC,GAAKC,EAAO,KAAK,SAAWD,CAAC,EAAG,EAAE,EAKpF,KAAK,gBAAkB,KAAK,kBAAoB,KAAK,SAAW,QAAU,KAAK,gBAE/E,KAAK,aAAe,KAAK,cAAgB,KAAK,QAC9C,KAAK,aAAe,KAAK,cAAgB,KAAK,QAC9C,QAASA,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,cAAgBA,CAAC,EAAI,KAAK,cAAgBA,CAAC,GAAK,KAAK,gBAG5D,QAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,UAAYA,CAAC,EAAI,KAAK,UAAYA,CAAC,GAAKH,EAAO,KAAK,QAAS,CAAE,EAAG,EAAE,EAAIG,EAAI,EAAG,CAAC,EACrF,KAAK,cAAgBA,CAAC,EACpB,KAAK,cAAgBA,CAAC,GAAKH,EAAO,KAAK,QAAS,CAAE,EAAG,EAAE,EAAIG,EAAI,EAAG,CAAC,EAKvE,KAAK,QAAU,KAAK,QACpB,KAAK,WAAa,KAAK,QACvB,KAAK,WAAa,KAAK,UACvB,KAAK,cAAgB,KAAK,QAC1B,KAAK,iBAAmB,KAAK,UAC7B,KAAK,WAAa,KAAK,KAIvB,KAAK,gBAAkBJ,EAAQ,KAAK,SAAU,EAAE,EAChD,KAAK,iBAAmBA,EAAQ,KAAK,SAAU,EAAE,EAEjD,KAAK,gBAAkBK,EAAO,KAAK,SAAU,EAAE,EAE/C,KAAK,aAAe,KAAK,SACzB,KAAK,cAAgB,KAAK,mBAC1B,KAAK,kBAAoB,KAAK,KAC9B,KAAK,qBAAuB,KAAK,kBACjC,KAAK,sBAAwB,KAAK,gBAClC,KAAK,mBAAqB,KAAK,QAC/B,KAAK,UAAYL,EAAQ,KAAK,QAAS,EAAE,EAEzC,KAAK,iBAAmB,KAAK,KAC7B,KAAK,oBAAsB,KAAK,UAChC,KAAK,aAAe,KAAK,SACzB,KAAK,gBAAkBK,EAAO,KAAK,aAAc,EAAE,EAEnD,KAAK,eAAiB,KAAK,aAC3B,KAAK,cAAgB,KAAK,aAG1B,KAAK,cAAgB,KAAK,UAC1B,KAAK,mBAAqB,KAAK,UAG/B,KAAK,gBAAkB,KAAK,iBAAmB,OAC/C,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,UAC9D,KAAK,gBAAkB,KAAK,iBAAmB,KAAK,UAAY,KAAK,iBAErE,KAAK,SAAW,KAAK,UAAY,KAAK,QACtC,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,SAC9D,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,YAAc,KAAK,cAC/E,KAAK,cAAgB,KAAK,eAAiB,UAC3C,KAAK,yBAA2B,KAAK,0BAA4B,KAAK,QACtE,KAAK,YAAc,KAAK,aAAe,OACvC,KAAK,mBAAqB,KAAK,mBAC/B,KAAK,kBAAoB,OAEzB,KAAK,cAAgB,KAAK,eAAiB,KAAK,cAChD,KAAK,eAAiB,KAAK,gBAAkB,KAAK,kBAGlD,KAAK,UAAY,KAAK,iBAEtB,KAAK,UAAY,KAAK,aACtB,KAAK,UAAY,KAAK,eACtB,KAAK,UAAYJ,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,CAAC,EACpD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,EAAG,CAAC,EACtD,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EACvD,KAAK,UAAYA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EACrD,KAAK,UAAYA,EAAO,KAAK,eAAgB,CAAE,EAAG,GAAI,CAAC,EAIvD,QAASG,EAAI,EAAGA,EAAI,KAAK,kBAAmBA,IAC1C,KAAK,MAAQA,CAAC,EAAI,KAAK,SAAWA,CAAC,EAErC,KAAK,MAAQ,KAAK,KAClB,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,kBACxD,KAAK,mBAAqB,KAAK,oBAAsB,OACrD,KAAK,oBAAsB,KAAK,qBAAuB,KAAK,UAC5D,KAAK,kBAAoB,KAAK,mBAAqB,OACnD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,kBAC1D,KAAK,eAAiB,KAAK,gBAAkB,QAC7C,KAAK,eAAiB,KAAK,gBAAkB,MAC7C,KAAK,oBAAsB,KAAK,qBAAuB,MACvD,KAAK,oBAAsB,KAAK,qBAAuB,QACvD,KAAK,WAAa,KAAK,YAAc,MAGrC,QAASA,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,QAAUA,EAAI,EAAE,EAAI,KAAK,QAAUA,EAAI,EAAE,GAAK,KAAK,SAAWA,CAAC,EAEtE,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,WAC1D,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,UAGtD,KAAK,cAAgB,KAAK,eAAiB,KAAK,aAChD,KAAK,cAAgB,KAAK,eAAiBH,EAAO,KAAK,aAAc,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,CAAC,EACzF,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,cAAgB,KAAK,eAAiBA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EAC5F,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBACxD,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,CAAC,EACjF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBA,EAAO,KAAK,iBAAkB,CAAE,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EACpF,KAAK,kBACH,KAAK,mBAAqBK,EAAO,KAAK,aAAa,EAC/CN,EAAQ,KAAK,aAAa,EAC1BK,EAAO,KAAK,aAAa,EAC/B,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,iBAChE,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,iCACH,KAAK,kCAAoC,KAAK,mBAChD,KAAK,kBAAoB,KAAK,mBAAqB,KAAK,iBAGxD,KAAK,QAAU,CACb,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,WACvD,WAAY,KAAK,SAAS,YAAc,KAAK,iBAC7C,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,gBAAiB,KAAK,SAAS,iBAAmB,KAAK,iBACvD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,eAAgB,KAAK,SAAS,gBAAkB,KAAK,iBACrD,iBACE,KAAK,SAAS,kBACd,8EACJ,EAGA,KAAK,MAAQ,CACX,UAAW,KAAK,OAAO,WAAa,KAAK,UACzC,gBAAiB,KAAK,OAAO,iBAAmB,EAChD,kBAAmB,KAAK,OAAO,mBAAqB,GACpD,aAAc,KAAK,OAAO,cAAgB,GAC1C,iBAAkB,KAAK,OAAO,kBAAoB,EAClD,eAAgB,KAAK,OAAO,gBAAkB,UAC9C,qBAAsB,KAAK,OAAO,sBAAwB,EAC1D,iBAAkB,KAAK,OAAO,kBAAoB,GAClD,cAAe,KAAK,OAAO,eAAiB,GAC5C,eAAgB,KAAK,OAAO,gBAAkB,EAChD,EAGA,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,aAChE,KAAK,uBAAyB,KAAK,wBAA0B,KAAK,mBAClE,KAAK,sBAAwB,KAAK,uBAAyB,IAC3D,KAAK,qBAAuB,KAAK,sBAAwB,KAAK,iBAC9D,KAAK,cAAgB,KAAK,eAAiB,KAAK,UAChD,KAAK,wBAA0B,KAAK,yBAA2B,KAAK,oBACpE,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,eAG1D,KAAK,KAAOA,EAAO,KAAK,KAAM,EAAE,GAAK,KAAK,aAC1C,KAAK,KAAO,KAAK,MAAQ,KAAK,eAC9B,KAAK,KAAO,KAAK,MAAQ,KAAK,cAC9B,KAAK,KAAO,KAAK,MAAQJ,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,EAAI,CAAC,EAC7D,KAAK,KAAO,KAAK,MAAQA,EAAO,KAAK,aAAc,CAAE,EAAG,GAAK,CAAC,EAE9D,KAAK,QAAU,KAAK,SAAWE,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,SAAWA,EAAO,KAAK,IAAI,EAE/C,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,eACtD,KAAK,gBAAkB,KAAK,iBAC5B,KAAK,gBAAkB,QACvB,KAAK,gBAAkB,KAAK,iBAC5B,KAAK,gBAAkB,QACvB,KAAK,gBAAkB,KAAK,iBAC5B,KAAK,gBAAkB,KAAK,iBAC5B,KAAK,gBAAkB,KAAK,iBAC5B,KAAK,gBAAkB,KAAK,iBAE5B,KAAK,cAAgB,KAAK,eAAiB,KAAK,iBAChD,KAAK,mBAAqB,KAAK,oBAAsB,KAAK,aAC1D,KAAK,eAAiB,KAAK,WAAa,KAAK,mBAC7C,KAAK,iBAAmB,KAAK,kBAAoB,OACjD,KAAK,iBAAmB,KAAK,kBAAoB,KAAK,mBACtD,KAAK,sBAAwB,KAAK,uBAAyB,KAAK,eAChE,KAAK,oBAAsB,KAAK,qBAAuB,OAKvD,KAAK,4BACH,KAAK,6BAA+BI,GACtC,KAAK,6BACH,KAAK,8BAAgCC,EAEzC,CACA,UAAUC,EAAW,CACnB,GAAI,OAAOA,GAAc,SAAU,CAEjC,KAAK,aAAa,EAClB,MACF,CAEA,IAAMC,EAAO,OAAO,KAAKD,CAAS,EAGlCC,EAAK,QAASC,GAAM,CAClB,KAAKA,CAAC,EAAIF,EAAUE,CAAC,CACvB,CAAC,EAGD,KAAK,aAAa,EAElBD,EAAK,QAASC,GAAM,CAClB,KAAKA,CAAC,EAAIF,EAAUE,CAAC,CACvB,CAAC,CACH,CACF,EAEaC,GAAoBb,EAACc,GAAkB,CAClD,IAAMC,EAAQ,IAAIhB,GAClB,OAAAgB,EAAM,UAAUD,CAAa,EACtBC,CACT,EAJiC,qBChZjC,IAAOC,GAAQ,CACb,KAAM,CACJ,kBAAmBC,EACrB,EACA,KAAM,CACJ,kBAAmBA,EACrB,EACA,QAAS,CACP,kBAAmBA,EACrB,EACA,OAAQ,CACN,kBAAmBA,EACrB,EACA,QAAS,CACP,kBAAmBA,EACrB,CACF,ECtBA,IAAOC,EAAQ,CACb,UAAa,CACX,YAAe,GACf,eAAkB,GAClB,oBAAuB,CACrB,IAAO,EACP,OAAU,CACZ,EACA,eAAkB,EAClB,WAAc,KACd,YAAe,GACf,YAAe,GACf,MAAS,QACT,QAAW,GACX,gBAAmB,gBACnB,cAAiB,IACjB,WAAc,EAChB,EACA,SAAY,CACV,YAAe,GACf,uBAA0B,GAC1B,gBAAmB,GACnB,eAAkB,GAClB,eAAkB,GAClB,YAAe,GACf,MAAS,IACT,OAAU,GACV,UAAa,GACb,cAAiB,EACjB,WAAc,GACd,cAAiB,GACjB,aAAgB,SAChB,aAAgB,GAChB,WAAc,GACd,gBAAmB,EACnB,YAAe,GACf,oBAAuB,GACvB,cAAiB,GACjB,gBAAmB,0BACnB,gBAAmB,IACnB,aAAgB,GAChB,eAAkB,6CAClB,eAAkB,IAClB,UAAa,SACb,gBAAmB,GACnB,kBAAqB,6CACrB,kBAAqB,IACrB,KAAQ,GACR,YAAe,GACf,cAAiB,GACjB,eAAkB,EACpB,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,UAAa,GACb,OAAU,EACV,WAAc,GACd,aAAgB,GAChB,YAAe,GACf,qBAAwB,GACxB,SAAY,GACZ,gBAAmB,GACnB,oBAAuB,EACvB,WAAc,WACd,QAAW,GACX,YAAe,GACf,QAAW,QACb,EACA,QAAW,CACT,YAAe,GACf,eAAkB,GAClB,eAAkB,GAClB,WAAc,IACd,cAAiB,IACjB,MAAS,IACT,OAAU,GACV,UAAa,GACb,cAAiB,EACjB,WAAc,GACd,cAAiB,GACjB,aAAgB,SAChB,gBAAmB,EACnB,YAAe,GACf,aAAgB,GAChB,eAAkB,0BAClB,WAAc,GACd,gBAAmB,GACnB,cAAiB,KACjB,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,SACF,EACA,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,eAAkB,CAChB,MACF,EACA,WAAc,GACd,gBAAmB,6CACnB,cAAiB,KACnB,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,oBAAuB,GACvB,cAAiB,GACjB,QAAW,EACX,WAAc,GACd,gBAAmB,gBACnB,WAAc,GACd,oBAAuB,EACzB,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,cAAiB,GACjB,SAAY,EACZ,QAAW,EACX,WAAc,GACd,WAAc,IACd,WAAc,GACd,UAAa,GACb,WAAc,EACd,YAAe,EACf,eAAkB,KAClB,SAAY,GACZ,YAAe,GACf,iBAAoB,KACpB,kBAAqB,GACrB,OAAU,EACV,gBAAmB,eACrB,EACA,GAAM,CACJ,YAAe,GACf,eAAkB,GAClB,eAAkB,GAClB,gBAAmB,KACnB,eAAkB,IAClB,gBAAmB,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A,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KAAK,CACG,EAEG+E,GAAM/E,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OAAO,CACC,EAEGgF,GAAahF,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAAc,CACN,EAMGiF,GAAgBjF,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAAK,CACG,EAEGkF,GAASlF,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aAAa,CACL,EAIGmF,GAAmBnF,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAAM,CACE,EAEGoF,GAAOpF,EAAO,CAAC,OAAO,CAAU,EC1RhC8E,GAAO9E,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,MAAM,CACE,EAEG+E,GAAM/E,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,YAAY,CACJ,EAEGkF,GAASlF,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,OAAO,CACR,EAEYqF,GAAMrF,EAAO,CACxB,aACA,SACA,cACA,YACA,aAAa,CACL,ECpXGsF,GAAgBrF,EAAK,2BAA2B,EAChDsF,GAAWtF,EAAK,uBAAuB,EACvCuF,GAAcvF,EAAK,eAAe,EAClCwF,GAAYxF,EAAK,8BAA8B,EAC/CyF,GAAYzF,EAAK,gBAAgB,EACjC0F,GAAiB1F,EAC5B,oGAEW2F,GAAoB3F,EAAK,uBAAuB,EAChD4F,GAAkB5F,EAC7B,+DAEW6F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", - "names": ["frontMatterRegex", "directiveRegex", "anyCommentRegex", "UnknownDiagramError", "__name", "message", "detectors", "detectType", "__name", "text", "config", "frontMatterRegex", "directiveRegex", "anyCommentRegex", "key", "detector", "UnknownDiagramError", "registerLazyLoadedDiagrams", "diagrams", "id", "loader", "addDetector", "log", "getDiagramLoader", "assignWithDepth", "__name", "dst", "src", "depth", "clobber", "config", "s", "key", "assignWithDepth_default", "Channel", "__name", "r", "g", "b", "h", "s", "l", "a", "c", "n", "p", "q", "t", "channel", "max", "min", "d", "channel_default", "Lang", "__name", "number", "lower", "upper", "lang_default", "Unit", "__name", "dec", "hex", "unit_default", "Utils", "channel_default", "lang_default", "unit_default", "utils_default", "DEC2HEX", "i", "utils_default", "TYPE", "Type", "__name", "TYPE", "type", "type_default", "Channels", "__name", "data", "color", "type_default", "TYPE", "h", "s", "utils_default", "r", "g", "b", "l", "a", "channels_default", "channels", "channels_default", "reusable_default", "Hex", "__name", "color", "match", "hex", "dec", "length", "hasAlpha", "isFullLength", "multiplier", "bits", "bitsOffset", "mask", "reusable_default", "channels", "r", "g", "b", "a", "DEC2HEX", "hex_default", "HSL", "__name", "hue", "match", "number", "unit", "utils_default", "color", "charCode", "h", "s", "l", "a", "isAlphaPercentage", "reusable_default", "channels", "hsl_default", "Keyword", "__name", "color", "hex", "hex_default", "channels", "name", "keyword_default", "RGB", "__name", "color", "charCode", "match", "r", "isRedPercentage", "g", "isGreenPercentage", "b", "isBluePercentage", "a", "isAlphaPercentage", "reusable_default", "utils_default", "channels", "rgb_default", "Color", "keyword_default", "hex_default", "rgb_default", "hsl_default", "__name", "color", "channels", "TYPE", "color_default", "change", "__name", "color", "channels", "ch", "color_default", "c", "utils_default", "change_default", "rgba", "__name", "r", "g", "b", "change_default", "channels", "reusable_default", "utils_default", "color_default", "rgba_default", "channel", "__name", "color", "utils_default", "color_default", "channel_default", "luminance", "__name", "color", "r", "g", "b", "color_default", "utils_default", "luminance_default", "isLight", "__name", "color", "luminance_default", "is_light_default", "isDark", "__name", "color", "is_light_default", "is_dark_default", "adjustChannel", "__name", "color", "channel", "amount", "channels", "color_default", "amountCurrent", "amountNext", "utils_default", "adjust_channel_default", "lighten", "__name", "color", "amount", "adjust_channel_default", "lighten_default", "darken", "__name", "color", "amount", "adjust_channel_default", "darken_default", "transparentize", "__name", "color", "amount", "adjust_channel_default", "transparentize_default", "adjust", "__name", "color", "channels", "ch", "color_default", "changes", "c", "change_default", "adjust_default", "mix", "__name", "color1", "color2", "weight", "r1", "g1", "b1", "a1", "color_default", "r2", "g2", "b2", "a2", "weightScale", "weightNormalized", "alphaDelta", "weight1", "weight2", "r", "g", "b", "a", "rgba_default", "mix_default", "invert", "__name", "color", "weight", "inverse", "color_default", "mix_default", "invert_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "mkBorder", "__name", "col", "darkMode", "adjust_default", "Theme", "__name", "adjust_default", "mkBorder", "invert_default", "darken_default", "lighten_default", "multiplier", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "adjust_default", "invert_default", "mkBorder", "rgba_default", "darken_default", "i", "is_dark_default", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "adjust_default", "mkBorder", "invert_default", "rgba_default", "darken_default", "i", "lighten_default", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "k", "keys", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "mkBorder", "invert_default", "darken_default", "adjust_default", "i", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "adjust_default", "mkBorder", "invert_default", "i", "darken_default", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "themes_default", "getThemeVariables", "config_schema_default", "config", "config_schema_default", "themes_default", "__name", "keyify", "obj", "prefix", "res", "el", "configKeys", "defaultConfig_default", "sanitizeDirective", "__name", "args", "log", "arg", "key", "configKeys", "cssMatchers", "cssKey", "sanitizeCss", "k", "val", "str", "startCnt", "endCnt", "element", "defaultConfig", "defaultConfig_default", "evaluate", "__name", "val", "siteConfig", "assignWithDepth_default", "configFromInitialize", "directives", "currentConfig", "updateCurrentConfig", "siteCfg", "_directives", "cfg", "sumOfDirectives", "d", "sanitize", "themes_default", "tmpConfigFromInitialize", "themeVariables", "checkConfig", "setSiteConfig", "conf", "saveConfigFromInitialize", "updateSiteConfig", "getSiteConfig", "setConfig", "getConfig", "options", "key", "log", "addDirective", "directive", "sanitizeDirective", "reset", "config", "ConfigWarning", "issuedWarnings", "issueWarning", "warning", "getUserDefinedConfig", "userConfig", "getEffectiveHtmlLabels", "entries", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "Object", "freeze", "seal", "create", "apply", "construct", "Reflect", "__name", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "objectHasOwnProperty", "hasOwnProperty", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "lastIndex", "_len3", "_key3", "_len4", "_key4", "addToSet", "set", "array", "transformCaseFunc", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "property", "value", "isArray", "constructor", "lookupGetter", "prop", "desc", "get", "fallbackValue", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "CUSTOM_ELEMENT", "NODE_TYPE", "attribute", "cdataSection", "entityReference", "entityNode", "progressingInstruction", "comment", "document", "documentType", "documentFragment", "notation", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "console", "warn", "_createHooksMap", "afterSanitizeAttributes", "afterSanitizeElements", "afterSanitizeShadowDOM", "beforeSanitizeAttributes", "beforeSanitizeElements", "beforeSanitizeShadowDOM", "uponSanitizeAttribute", "uponSanitizeElement", "uponSanitizeShadowNode", "createDOMPurify", "undefined", "DOMPurify", "root", "version", "VERSION", "removed", "nodeType", "Element", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "NodeFilter", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "remove", "getNextSibling", "getChildNodes", "getParentNode", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "EXTRA_ELEMENT_HANDLING", "tagCheck", "attributeCheck", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "SAFE_FOR_XML", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "ADD_TAGS", "ADD_ATTR", "ADD_FORBID_CONTENTS", "table", "tbody", "TRUSTED_TYPES_POLICY", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "Boolean", "_forceRemove", "node", "removeChild", "_removeAttribute", "name", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "SHOW_PROCESSING_INSTRUCTION", "SHOW_CDATA_SECTION", "_isClobbered", "nodeName", "textContent", "attributes", "hasChildNodes", "_isNode", "_executeHooks", "currentNode", "data", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_isBasicCustomElement", "parentNode", "childCount", "i", "childClone", "__removalCount", "expr", "_isValidAttribute", "lcTag", "lcName", "_sanitizeAttributes", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "forceKeepAttr", "attr", "initValue", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "nextNode", "sanitize", "importedNode", "returnNode", "appendChild", "firstChild", "nodeIterator", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "entryPoint", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "lineBreakRegex", "getRows", "__name", "s", "breakToPlaceholder", "setupDompurifyHooksIfNotSetup", "setup", "setupDompurifyHooks", "TEMPORARY_ATTRIBUTE", "purify", "node", "removeScript", "txt", "sanitizeMore", "text", "config", "getEffectiveHtmlLabels", "level", "placeholderToBreak", "sanitizeText", "sanitizeTextOrArray", "a", "x", "hasBreaks", "splitBreaks", "getUrl", "useAbsolute", "url", "getMax", "__name", "values", "newValues", "value", "getMin", "parseGenericTypes", "input", "inputSets", "output", "i", "thisSet", "previousSet", "nextSet", "shouldCombineSets", "processSet", "countOccurrence", "string", "substring", "prevCount", "nextCount", "tildeCount", "hasStartingTilde", "chars", "first", "last", "isMathMLSupported", "katexRegex", "hasKatex", "text", "calculateMathMLDimensions", "config", "divElem", "renderKatexSanitized", "dim", "renderKatexUnsanitized", "katex", "outputMode", "lineBreakRegex", "line", "_", "sanitizeText", "common_default", "getRows", "sanitizeTextOrArray", "hasBreaks", "splitBreaks", "removeScript", "getUrl", "evaluate", "d3Attrs", "__name", "d3Elem", "attrs", "attr", "calculateSvgSizeAttrs", "height", "width", "useMaxWidth", "configureSvgSize", "svgElem", "setupGraphViewbox", "graph", "padding", "svgBounds", "sWidth", "sHeight", "log", "vBox", "themes", "getStyles", "__name", "type", "userStyles", "options", "diagramStyles", "log", "addStylesForDiagram", "diagramTheme", "styles_default", "commonDb_exports", "__export", "clear", "getAccDescription", "getAccTitle", "getDiagramTitle", "setAccDescription", "setAccTitle", "setDiagramTitle", "accTitle", "diagramTitle", "accDescription", "sanitizeText", "__name", "txt", "getConfig", "clear", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "log", "setLogLevel", "getConfig", "setConfig", "defaultConfig", "sanitizeText", "__name", "text", "getConfig", "setupGraphViewbox", "getCommonDb", "commonDb_exports", "diagrams", "registerDiagram", "id", "diagram", "detector", "log", "addDetector", "addStylesForDiagram", "setLogLevel", "getDiagram", "name", "DiagramNotFoundError"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-3YCYZ6SJ.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-3YCYZ6SJ.mjs deleted file mode 100644 index 1892840..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-3YCYZ6SJ.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as E}from"./chunk-HN6EAY2L.mjs";import{D as y,E as G,F as x,G as L,H as V,J as B,K as k,L as S,N as yr,P as I,T as A,U as Z,d as N,f as _r,h as Q,i as wr,k as R,n as u,p as O,q as z,s as _,u as br,v as Er,x as q,z as P}from"./chunk-H3VCZNTA.mjs";import{O as F,T as Y,z as vr}from"./chunk-JIN56HTB.mjs";import{a as s}from"./chunk-VELTKBKT.mjs";function g(r,e,n,t){var o;do o=A(t);while(r.hasNode(o));return n.dummy=e,r.setNode(o,n),o}s(g,"addDummyNode");function xr(r){var e=new E().setGraph(r.graph());return u(r.nodes(),function(n){e.setNode(n,r.node(n))}),u(r.edges(),function(n){var t=e.edge(n.v,n.w)||{weight:0,minlen:1},o=r.edge(n);e.setEdge(n.v,n.w,{weight:t.weight+o.weight,minlen:Math.max(t.minlen,o.minlen)})}),e}s(xr,"simplify");function X(r){var e=new E({multigraph:r.isMultigraph()}).setGraph(r.graph());return u(r.nodes(),function(n){r.children(n).length||e.setNode(n,r.node(n))}),u(r.edges(),function(n){e.setEdge(n,r.edge(n))}),e}s(X,"asNonCompoundGraph");function $(r,e){var n=r.x,t=r.y,o=e.x-n,a=e.y-t,i=r.width/2,f=r.height/2;if(!o&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var d,c;return Math.abs(a)*i>Math.abs(o)*f?(a<0&&(f=-f),d=f*o/a,c=f):(o<0&&(i=-i),d=i,c=i*a/o),{x:n+d,y:t+c}}s($,"intersectRect");function C(r){var e=_(k(er(r)+1),function(){return[]});return u(r.nodes(),function(n){var t=r.node(n),o=t.rank;y(o)||(e[o][t.order]=n)}),e}s(C,"buildLayerMatrix");function kr(r){var e=L(_(r.nodes(),function(n){return r.node(n).rank}));u(r.nodes(),function(n){var t=r.node(n);q(t,"rank")&&(t.rank-=e)})}s(kr,"normalizeRanks");function gr(r){var e=L(_(r.nodes(),function(a){return r.node(a).rank})),n=[];u(r.nodes(),function(a){var i=r.node(a).rank-e;n[i]||(n[i]=[]),n[i].push(a)});var t=0,o=r.graph().nodeRankFactor;u(n,function(a,i){y(a)&&i%o!==0?--t:t&&u(a,function(f){r.node(f).rank+=t})})}s(gr,"removeEmptyRanks");function rr(r,e,n,t){var o={width:0,height:0};return arguments.length>=4&&(o.rank=n,o.order=t),g(r,"border",o,e)}s(rr,"addBorderNode");function er(r){return x(_(r.nodes(),function(e){var n=r.node(e).rank;if(!y(n))return n}))}s(er,"maxRank");function Nr(r,e){var n={lhs:[],rhs:[]};return u(r,function(t){e(t)?n.lhs.push(t):n.rhs.push(t)}),n}s(Nr,"partition");function Or(r,e){var n=Q();try{return e()}finally{console.log(r+" time: "+(Q()-n)+"ms")}}s(Or,"time");function Ir(r,e){return e()}s(Ir,"notime");function Lr(r){function e(n){var t=r.children(n),o=r.node(n);if(t.length&&u(t,e),Object.prototype.hasOwnProperty.call(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(var a=o.minRank,i=o.maxRank+1;a0;--f)if(i=e[f].dequeue(),i){t=t.concat(or(r,e,n,i,!0));break}}}return t}s(be,"doGreedyFAS");function or(r,e,n,t,o){var a=o?[]:void 0;return u(r.inEdges(t.v),function(i){var f=r.edge(i),d=r.node(i.v);o&&a.push({v:i.v,w:i.w}),d.out-=f,ar(e,n,d)}),u(r.outEdges(t.v),function(i){var f=r.edge(i),d=i.w,c=r.node(d);c.in-=f,ar(e,n,c)}),r.removeNode(t.v),a}s(or,"removeNode");function Ee(r,e){var n=new E,t=0,o=0;u(r.nodes(),function(f){n.setNode(f,{v:f,in:0,out:0})}),u(r.edges(),function(f){var d=n.edge(f.v,f.w)||0,c=e(f),h=d+c;n.setEdge(f.v,f.w,h),o=Math.max(o,n.node(f.v).out+=c),t=Math.max(t,n.node(f.w).in+=c)});var a=k(o+t+3).map(function(){return new H}),i=t+1;return u(n.nodes(),function(f){ar(a,i,n.node(f))}),{graph:n,buckets:a,zeroIdx:i}}s(Ee,"buildState");function ar(r,e,n){n.out?n.in?r[n.out-n.in+e].enqueue(n):r[r.length-1].enqueue(n):r[0].enqueue(n)}s(ar,"assignBucket");function Fr(r){var e=r.graph().acyclicer==="greedy"?Mr(r,n(r)):ye(r);u(e,function(t){var o=r.edge(t);r.removeEdge(t),o.forwardName=t.name,o.reversed=!0,r.setEdge(t.w,t.v,o,A("rev"))});function n(t){return function(o){return t.edge(o).weight}}s(n,"weightFn")}s(Fr,"run");function ye(r){var e=[],n={},t={};function o(a){Object.prototype.hasOwnProperty.call(t,a)||(t[a]=!0,n[a]=!0,u(r.outEdges(a),function(i){Object.prototype.hasOwnProperty.call(n,i.w)?e.push(i):o(i.w)}),delete n[a])}return s(o,"dfs"),u(r.nodes(),o),e}s(ye,"dfsFAS");function Gr(r){u(r.edges(),function(e){var n=r.edge(e);if(n.reversed){r.removeEdge(e);var t=n.forwardName;delete n.reversed,delete n.forwardName,r.setEdge(e.w,e.v,n,t)}})}s(Gr,"undo");function Br(r){r.graph().dummyChains=[],u(r.edges(),function(e){xe(r,e)})}s(Br,"run");function xe(r,e){var n=e.v,t=r.node(n).rank,o=e.w,a=r.node(o).rank,i=e.name,f=r.edge(e),d=f.labelRank;if(a!==t+1){r.removeEdge(e);var c=void 0,h,l;for(l=0,++t;ti.lim&&(f=i,d=!0);var c=O(e.edges(),function(h){return d===zr(r,r.node(h.v),f)&&d!==zr(r,r.node(h.w),f)});return V(c,function(h){return M(e,h)})}s(Xr,"enterEdge");function Hr(r,e,n,t){var o=n.v,a=n.w;r.removeEdge(o,a),r.setEdge(t.v,t.w,{}),dr(r),ur(r,e),je(r,e)}s(Hr,"exchangeEdges");function je(r,e){var n=z(r.nodes(),function(o){return!e.node(o).parent}),t=fr(r,n);t=t.slice(1),u(t,function(o){var a=r.node(o).parent,i=e.edge(o,a),f=!1;i||(i=e.edge(a,o),f=!0),e.node(o).rank=e.node(a).rank+(f?i.minlen:-i.minlen)})}s(je,"updateRanks");function Te(r,e,n){return r.hasEdge(e,n)}s(Te,"isTreeEdge");function zr(r,e,n){return n.low<=e.lim&&e.lim<=n.lim}s(zr,"isDescendant");function cr(r){switch(r.graph().ranker){case"network-simplex":Jr(r);break;case"tight-tree":Se(r);break;case"longest-path":Re(r);break;default:Jr(r)}}s(cr,"rank");var Re=U;function Se(r){U(r),J(r)}s(Se,"tightTreeRanker");function Jr(r){T(r)}s(Jr,"networkSimplexRanker");function Kr(r){var e=g(r,"root",{},"_root"),n=Me(r),t=x(P(n))-1,o=2*t+1;r.graph().nestingRoot=e,u(r.edges(),function(i){r.edge(i).minlen*=o});var a=Fe(r)+1;u(r.children(),function(i){Qr(r,e,o,a,t,n,i)}),r.graph().nodeRankFactor=o}s(Kr,"run");function Qr(r,e,n,t,o,a,i){var f=r.children(i);if(!f.length){i!==e&&r.setEdge(e,i,{weight:0,minlen:n});return}var d=rr(r,"_bt"),c=rr(r,"_bb"),h=r.node(i);r.setParent(d,i),h.borderTop=d,r.setParent(c,i),h.borderBottom=c,u(f,function(l){Qr(r,e,n,t,o,a,l);var p=r.node(l),m=p.borderTop?p.borderTop:l,v=p.borderBottom?p.borderBottom:l,b=p.borderTop?t:2*t,D=m!==v?1:o-a[i]+1;r.setEdge(d,m,{weight:b,minlen:D,nestingEdge:!0}),r.setEdge(v,c,{weight:b,minlen:D,nestingEdge:!0})}),r.parent(i)||r.setEdge(e,d,{weight:0,minlen:o+a[i]})}s(Qr,"dfs");function Me(r){var e={};function n(t,o){var a=r.children(t);a&&a.length&&u(a,function(i){n(i,o+1)}),e[t]=o}return s(n,"dfs"),u(r.children(),function(t){n(t,1)}),e}s(Me,"treeDepths");function Fe(r){return S(r.edges(),function(e,n){return e+r.edge(n).weight},0)}s(Fe,"sumWeights");function Zr(r){var e=r.graph();r.removeNode(e.nestingRoot),delete e.nestingRoot,u(r.edges(),function(n){var t=r.edge(n);t.nestingEdge&&r.removeEdge(n)})}s(Zr,"cleanup");function $r(r,e,n){var t={},o;u(n,function(a){for(var i=r.parent(a),f,d;i;){if(f=r.parent(i),f?(d=t[f],t[f]=i):(d=o,o=i),d&&d!==i){e.setEdge(d,i);return}i=f}})}s($r,"addSubgraphConstraints");function re(r,e,n){var t=Ve(r),o=new E({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(a){return r.node(a)});return u(r.nodes(),function(a){var i=r.node(a),f=r.parent(a);(i.rank===e||i.minRank<=e&&e<=i.maxRank)&&(o.setNode(a),o.setParent(a,f||t),u(r[n](a),function(d){var c=d.v===a?d.w:d.v,h=o.edge(c,a),l=y(h)?0:h.weight;o.setEdge(c,a,{weight:r.edge(d).weight+l})}),Object.prototype.hasOwnProperty.call(i,"minRank")&&o.setNode(a,{borderLeft:i.borderLeft[e],borderRight:i.borderRight[e]}))}),o}s(re,"buildLayerGraph");function Ve(r){for(var e;r.hasNode(e=A("_root")););return e}s(Ve,"createRootNode");function ee(r,e){for(var n=0,t=1;t0;)h%2&&(l+=f[h+1]),h=h-1>>1,f[h]+=c.weight;d+=c.weight*l})),d}s(Be,"twoLayerCrossCount");function ne(r){var e={},n=O(r.nodes(),function(f){return!r.children(f).length}),t=x(_(n,function(f){return r.node(f).rank})),o=_(k(t+1),function(){return[]});function a(f){if(!q(e,f)){e[f]=!0;var d=r.node(f);o[d.rank].push(f),u(r.successors(f),a)}}s(a,"dfs");var i=I(n,function(f){return r.node(f).rank});return u(i,a),o}s(ne,"initOrder");function te(r,e){return _(e,function(n){var t=r.inEdges(n);if(t.length){var o=S(t,function(a,i){var f=r.edge(i),d=r.node(i.v);return{sum:a.sum+f.weight*d.order,weight:a.weight+f.weight}},{sum:0,weight:0});return{v:n,barycenter:o.sum/o.weight,weight:o.weight}}else return{v:n}})}s(te,"barycenter");function oe(r,e){var n={};u(r,function(o,a){var i=n[o.v]={indegree:0,in:[],out:[],vs:[o.v],i:a};y(o.barycenter)||(i.barycenter=o.barycenter,i.weight=o.weight)}),u(e.edges(),function(o){var a=n[o.v],i=n[o.w];!y(a)&&!y(i)&&(i.indegree++,a.out.push(n[o.w]))});var t=O(n,function(o){return!o.indegree});return Ae(t)}s(oe,"resolveConflicts");function Ae(r){var e=[];function n(a){return function(i){i.merged||(y(i.barycenter)||y(a.barycenter)||i.barycenter>=a.barycenter)&&De(a,i)}}s(n,"handleIn");function t(a){return function(i){i.in.push(a),--i.indegree===0&&r.push(i)}}for(s(t,"handleOut");r.length;){var o=r.pop();e.push(o),u(o.in.reverse(),n(o)),u(o.out,t(o))}return _(O(e,function(a){return!a.merged}),function(a){return B(a,["vs","i","barycenter","weight"])})}s(Ae,"doResolveConflicts");function De(r,e){var n=0,t=0;r.weight&&(n+=r.barycenter*r.weight,t+=r.weight),e.weight&&(n+=e.barycenter*e.weight,t+=e.weight),r.vs=e.vs.concat(r.vs),r.barycenter=n/t,r.weight=t,r.i=Math.min(e.i,r.i),e.merged=!0}s(De,"mergeEntries");function ie(r,e){var n=Nr(r,function(h){return Object.prototype.hasOwnProperty.call(h,"barycenter")}),t=n.lhs,o=I(n.rhs,function(h){return-h.i}),a=[],i=0,f=0,d=0;t.sort(Ye(!!e)),d=ae(a,o,d),u(t,function(h){d+=h.vs.length,a.push(h.vs),i+=h.barycenter*h.weight,f+=h.weight,d=ae(a,o,d)});var c={vs:N(a)};return f&&(c.barycenter=i/f,c.weight=f),c}s(ie,"sort");function ae(r,e,n){for(var t;e.length&&(t=R(e)).i<=n;)e.pop(),r.push(t.vs),n++;return n}s(ae,"consumeUnsortable");function Ye(r){return function(e,n){return e.barycentern.barycenter?1:r?n.i-e.i:e.i-n.i}}s(Ye,"compareWithBias");function hr(r,e,n,t){var o=r.children(e),a=r.node(e),i=a?a.borderLeft:void 0,f=a?a.borderRight:void 0,d={};i&&(o=O(o,function(v){return v!==i&&v!==f}));var c=te(r,o);u(c,function(v){if(r.children(v.v).length){var b=hr(r,v.v,n,t);d[v.v]=b,Object.prototype.hasOwnProperty.call(b,"barycenter")&&Ue(v,b)}});var h=oe(c,n);ze(h,d);var l=ie(h,t);if(i&&(l.vs=N([i,l.vs,f]),r.predecessors(i).length)){var p=r.node(r.predecessors(i)[0]),m=r.node(r.predecessors(f)[0]);Object.prototype.hasOwnProperty.call(l,"barycenter")||(l.barycenter=0,l.weight=0),l.barycenter=(l.barycenter*l.weight+p.order+m.order)/(l.weight+2),l.weight+=2}return l}s(hr,"sortSubgraph");function ze(r,e){u(r,function(n){n.vs=N(n.vs.map(function(t){return e[t]?e[t].vs:t}))})}s(ze,"expandSubgraphs");function Ue(r,e){y(r.barycenter)?(r.barycenter=e.barycenter,r.weight=e.weight):(r.barycenter=(r.barycenter*r.weight+e.barycenter*e.weight)/(r.weight+e.weight),r.weight+=e.weight)}s(Ue,"mergeBarycenters");function ue(r){var e=er(r),n=se(r,k(1,e+1),"inEdges"),t=se(r,k(e-1,-1,-1),"outEdges"),o=ne(r);fe(r,o);for(var a=Number.POSITIVE_INFINITY,i,f=0,d=0;d<4;++f,++d){We(f%2?n:t,f%4>=2),o=C(r);var c=ee(r,o);ci||f>e[d].lim));for(c=d,d=t;(d=r.parent(d))!==c;)a.push(d);return{path:o.concat(a.reverse()),lca:c}}s(qe,"findPath");function Xe(r){var e={},n=0;function t(o){var a=n;u(r.children(o),t),e[o]={low:a,lim:n++}}return s(t,"dfs"),u(r.children(),t),e}s(Xe,"postorder");function He(r,e){var n={};function t(o,a){var i=0,f=0,d=o.length,c=R(a);return u(a,function(h,l){var p=Ke(r,h),m=p?r.node(p).order:d;(p||h===c)&&(u(a.slice(f,l+1),function(v){u(r.predecessors(v),function(b){var D=r.node(b),mr=D.order;(mrc)&&ce(n,p,h)})})}s(t,"scan");function o(a,i){var f=-1,d,c=0;return u(i,function(h,l){if(r.node(h).dummy==="border"){var p=r.predecessors(h);p.length&&(d=r.node(p[0]).order,t(i,c,l,f,d),c=l,f=d)}t(i,c,i.length,d,a.length)}),i}return s(o,"visitLayer"),S(e,o),n}s(Je,"findType2Conflicts");function Ke(r,e){if(r.node(e).dummy)return z(r.predecessors(e),function(n){return r.node(n).dummy})}s(Ke,"findOtherInnerSegmentNode");function ce(r,e,n){if(e>n){var t=e;e=n,n=t}Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,configurable:!0,value:{},writable:!0});var o=r[e];Object.defineProperty(o,n,{enumerable:!0,configurable:!0,value:!0,writable:!0})}s(ce,"addConflict");function Qe(r,e,n){if(e>n){var t=e;e=n,n=t}return!!r[e]&&Object.prototype.hasOwnProperty.call(r[e],n)}s(Qe,"hasConflict");function Ze(r,e,n,t){var o={},a={},i={};return u(e,function(f){u(f,function(d,c){o[d]=d,a[d]=d,i[d]=c})}),u(e,function(f){var d=-1;u(f,function(c){var h=t(c);if(h.length){h=I(h,function(b){return i[b]});for(var l=(h.length-1)/2,p=Math.floor(l),m=Math.ceil(l);p<=m;++p){var v=h[p];a[c]===c&&d{var t=n(" buildLayoutGraph",()=>bn(r));n(" runLayout",()=>un(t,n)),n(" updateInputGraph",()=>dn(r,t))})}s(fn,"layout");function un(r,e){e(" makeSpaceForEdgeLabels",()=>En(r)),e(" removeSelfEdges",()=>Ln(r)),e(" acyclic",()=>Fr(r)),e(" nestingGraph.run",()=>Kr(r)),e(" rank",()=>cr(X(r))),e(" injectEdgeLabelProxies",()=>yn(r)),e(" removeEmptyRanks",()=>gr(r)),e(" nestingGraph.cleanup",()=>Zr(r)),e(" normalizeRanks",()=>kr(r)),e(" assignRankMinMax",()=>xn(r)),e(" removeEdgeLabelProxies",()=>kn(r)),e(" normalize.run",()=>Br(r)),e(" parentDummyChains",()=>de(r)),e(" addBorderSegments",()=>Lr(r)),e(" order",()=>ue(r)),e(" insertSelfEdges",()=>Cn(r)),e(" adjustCoordinateSystem",()=>jr(r)),e(" position",()=>le(r)),e(" positionSelfEdges",()=>jn(r)),e(" removeBorderNodes",()=>Pn(r)),e(" normalize.undo",()=>Ar(r)),e(" fixupEdgeLabelCoords",()=>On(r)),e(" undoCoordinateSystem",()=>Tr(r)),e(" translateGraph",()=>gn(r)),e(" assignNodeIntersects",()=>Nn(r)),e(" reversePoints",()=>In(r)),e(" acyclic.undo",()=>Gr(r))}s(un,"runLayout");function dn(r,e){u(r.nodes(),function(n){var t=r.node(n),o=e.node(n);t&&(t.x=o.x,t.y=o.y,e.children(n).length&&(t.width=o.width,t.height=o.height))}),u(r.edges(),function(n){var t=r.edge(n),o=e.edge(n);t.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(t.x=o.x,t.y=o.y)}),r.graph().width=e.graph().width,r.graph().height=e.graph().height}s(dn,"updateInputGraph");var cn=["nodesep","edgesep","ranksep","marginx","marginy"],hn={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},ln=["acyclicer","ranker","rankdir","align"],pn=["width","height"],mn={width:0,height:0},vn=["minlen","weight","width","height","labeloffset"],_n={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},wn=["labelpos"];function bn(r){var e=new E({multigraph:!0,compound:!0}),n=pr(r.graph());return e.setGraph(Y({},hn,lr(n,cn),B(n,ln))),u(r.nodes(),function(t){var o=pr(r.node(t));e.setNode(t,wr(lr(o,pn),mn)),e.setParent(t,r.parent(t))}),u(r.edges(),function(t){var o=pr(r.edge(t));e.setEdge(t,Y({},_n,lr(o,vn),B(o,wn)))}),e}s(bn,"buildLayoutGraph");function En(r){var e=r.graph();e.ranksep/=2,u(r.edges(),function(n){var t=r.edge(n);t.minlen*=2,t.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?t.width+=t.labeloffset:t.height+=t.labeloffset)})}s(En,"makeSpaceForEdgeLabels");function yn(r){u(r.edges(),function(e){var n=r.edge(e);if(n.width&&n.height){var t=r.node(e.v),o=r.node(e.w),a={rank:(o.rank-t.rank)/2+t.rank,e};g(r,"edge-proxy",a,"_ep")}})}s(yn,"injectEdgeLabelProxies");function xn(r){var e=0;u(r.nodes(),function(n){var t=r.node(n);t.borderTop&&(t.minRank=r.node(t.borderTop).rank,t.maxRank=r.node(t.borderBottom).rank,e=x(e,t.maxRank))}),r.graph().maxRank=e}s(xn,"assignRankMinMax");function kn(r){u(r.nodes(),function(e){var n=r.node(e);n.dummy==="edge-proxy"&&(r.edge(n.e).labelRank=n.rank,r.removeNode(e))})}s(kn,"removeEdgeLabelProxies");function gn(r){var e=Number.POSITIVE_INFINITY,n=0,t=Number.POSITIVE_INFINITY,o=0,a=r.graph(),i=a.marginx||0,f=a.marginy||0;function d(c){var h=c.x,l=c.y,p=c.width,m=c.height;e=Math.min(e,h-p/2),n=Math.max(n,h+p/2),t=Math.min(t,l-m/2),o=Math.max(o,l+m/2)}s(d,"getExtremes"),u(r.nodes(),function(c){d(r.node(c))}),u(r.edges(),function(c){var h=r.edge(c);Object.prototype.hasOwnProperty.call(h,"x")&&d(h)}),e-=i,t-=f,u(r.nodes(),function(c){var h=r.node(c);h.x-=e,h.y-=t}),u(r.edges(),function(c){var h=r.edge(c);u(h.points,function(l){l.x-=e,l.y-=t}),Object.prototype.hasOwnProperty.call(h,"x")&&(h.x-=e),Object.prototype.hasOwnProperty.call(h,"y")&&(h.y-=t)}),a.width=n-e+i,a.height=o-t+f}s(gn,"translateGraph");function Nn(r){u(r.edges(),function(e){var n=r.edge(e),t=r.node(e.v),o=r.node(e.w),a,i;n.points?(a=n.points[0],i=n.points[n.points.length-1]):(n.points=[],a=o,i=t),n.points.unshift($(t,a)),n.points.push($(o,i))})}s(Nn,"assignNodeIntersects");function On(r){u(r.edges(),function(e){var n=r.edge(e);if(Object.prototype.hasOwnProperty.call(n,"x"))switch((n.labelpos==="l"||n.labelpos==="r")&&(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset;break}})}s(On,"fixupEdgeLabelCoords");function In(r){u(r.edges(),function(e){var n=r.edge(e);n.reversed&&n.points.reverse()})}s(In,"reversePointsForReversedEdges");function Pn(r){u(r.nodes(),function(e){if(r.children(e).length){var n=r.node(e),t=r.node(n.borderTop),o=r.node(n.borderBottom),a=r.node(R(n.borderLeft)),i=r.node(R(n.borderRight));n.width=Math.abs(i.x-a.x),n.height=Math.abs(o.y-t.y),n.x=a.x+n.width/2,n.y=t.y+n.height/2}}),u(r.nodes(),function(e){r.node(e).dummy==="border"&&r.removeNode(e)})}s(Pn,"removeBorderNodes");function Ln(r){u(r.edges(),function(e){if(e.v===e.w){var n=r.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e,label:r.edge(e)}),r.removeEdge(e)}})}s(Ln,"removeSelfEdges");function Cn(r){var e=C(r);u(e,function(n){var t=0;u(n,function(o,a){var i=r.node(o);i.order=a+t,u(i.selfEdges,function(f){g(r,"selfedge",{width:f.label.width,height:f.label.height,rank:i.rank,order:a+ ++t,e:f.e,label:f.label},"_se")}),delete i.selfEdges})})}s(Cn,"insertSelfEdges");function jn(r){u(r.nodes(),function(e){var n=r.node(e);if(n.dummy==="selfedge"){var t=r.node(n.e.v),o=t.x+t.width/2,a=t.y,i=n.x-o,f=t.height/2;r.setEdge(n.e,n.label),r.removeNode(e),n.label.points=[{x:o+2*i/3,y:a-f},{x:o+5*i/6,y:a-f},{x:o+i,y:a},{x:o+5*i/6,y:a+f},{x:o+2*i/3,y:a+f}],n.label.x=n.x,n.label.y=n.y}})}s(jn,"positionSelfEdges");function lr(r,e){return G(B(r,e),Number)}s(lr,"selectNumberAttrs");function pr(r){var e={};return u(r,function(n,t){e[t.toLowerCase()]=n}),e}s(pr,"canonicalize");export{fn as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-3ZBQQEZ6.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-3ZBQQEZ6.mjs deleted file mode 100644 index e1467b6..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-3ZBQQEZ6.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as f}from"./chunk-VELTKBKT.mjs";var d=f((t,r)=>{if(r)return"translate("+-t.width/2+", "+-t.height/2+")";let c=t.x??0,e=t.y??0;return"translate("+-(c+t.width/2)+", "+-(e+t.height/2)+")"},"computeLabelTransform");var s={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4},T={arrow_point:9,arrow_cross:12.5,arrow_circle:12.5};function x(t,r){if(t===void 0||r===void 0)return{angle:0,deltaX:0,deltaY:0};t=n(t),r=n(r);let[c,e]=[t.x,t.y],[o,i]=[r.x,r.y],l=o-c,p=i-e;return{angle:Math.atan(p/l),deltaX:l,deltaY:p}}f(x,"calculateDeltaAndAngle");var n=f(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),E=f(t=>({x:f(function(r,c,e){let o=0,i=n(e[0]).x=0?1:-1)}else if(c===e.length-1&&Object.hasOwn(s,t.arrowTypeEnd)){let{angle:a,deltaX:m}=x(e[e.length-1],e[e.length-2]);o=s[t.arrowTypeEnd]*Math.cos(a)*(m>=0?1:-1)}let l=Math.abs(n(r).x-n(e[e.length-1]).x),p=Math.abs(n(r).y-n(e[e.length-1]).y),u=Math.abs(n(r).x-n(e[0]).x),b=Math.abs(n(r).y-n(e[0]).y),y=s[t.arrowTypeStart],h=s[t.arrowTypeEnd],g=1;if(l0&&p0&&b=0?1:-1)}else if(c===e.length-1&&Object.hasOwn(s,t.arrowTypeEnd)){let{angle:a,deltaY:m}=x(e[e.length-1],e[e.length-2]);o=s[t.arrowTypeEnd]*Math.abs(Math.sin(a))*(m>=0?1:-1)}let l=Math.abs(n(r).y-n(e[e.length-1]).y),p=Math.abs(n(r).x-n(e[e.length-1]).x),u=Math.abs(n(r).y-n(e[0]).y),b=Math.abs(n(r).x-n(e[0]).x),y=s[t.arrowTypeStart],h=s[t.arrowTypeEnd],g=1;if(l0&&p0&&b extends beyond the text (making\n * bbox.x/y negative), so we include those offsets to correctly center the visual\n * content at the origin.\n *\n * @param bbox - The bounding box of the label element\n * @param useHtmlLabels - Whether HTML labels are in use\n * @returns SVG transform string, e.g. \"translate(-20, -10)\"\n */\nexport const computeLabelTransform = (bbox: LabelBBox, useHtmlLabels: boolean): string => {\n if (useHtmlLabels) {\n return 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')';\n }\n const x = bbox.x ?? 0;\n const y = bbox.y ?? 0;\n return 'translate(' + -(x + bbox.width / 2) + ', ' + -(y + bbox.height / 2) + ')';\n};\n", "import type { EdgeData, Point } from '../types.js';\n\n// We need to draw the lines a bit shorter to avoid drawing\n// under any transparent markers.\n// The offsets are calculated from the markers' dimensions.\nexport const markerOffsets = {\n aggregation: 17.25,\n extension: 17.25,\n composition: 17.25,\n dependency: 6,\n lollipop: 13.5,\n arrow_point: 4,\n //arrow_cross: 24,\n} as const;\n\n// We need to draw the lines a bit shorter to avoid drawing\n// under any transparent markers.\n// The offsets are calculated from the markers' dimensions.\nexport const markerOffsets2 = {\n arrow_point: 9,\n arrow_cross: 12.5,\n arrow_circle: 12.5,\n} as const;\n\n/**\n * Calculate the deltas and angle between two points\n * @param point1 - First point\n * @param point2 - Second point\n * @returns The angle, deltaX and deltaY\n */\nfunction calculateDeltaAndAngle(\n point1?: Point | [number, number],\n point2?: Point | [number, number]\n): { angle: number; deltaX: number; deltaY: number } {\n if (point1 === undefined || point2 === undefined) {\n return { angle: 0, deltaX: 0, deltaY: 0 };\n }\n point1 = pointTransformer(point1);\n point2 = pointTransformer(point2);\n const [x1, y1] = [point1.x, point1.y];\n const [x2, y2] = [point2.x, point2.y];\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };\n}\n\nconst pointTransformer = (data: Point | [number, number]) => {\n if (Array.isArray(data)) {\n return { x: data[0], y: data[1] };\n }\n return data;\n};\n\nexport const getLineFunctionsWithOffset = (\n edge: Pick\n) => {\n return {\n x: function (\n this: void,\n d: Point | [number, number],\n i: number,\n data: (Point | [number, number])[]\n ) {\n let offset = 0;\n const DIRECTION =\n pointTransformer(data[0]).x < pointTransformer(data[data.length - 1]).x ? 'left' : 'right';\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n offset =\n markerOffsets[edge.arrowTypeStart as keyof typeof markerOffsets] *\n Math.cos(angle) *\n (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaX } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset =\n markerOffsets[edge.arrowTypeEnd as keyof typeof markerOffsets] *\n Math.cos(angle) *\n (deltaX >= 0 ? 1 : -1);\n }\n\n const differenceToEnd = Math.abs(\n pointTransformer(d).x - pointTransformer(data[data.length - 1]).x\n );\n const differenceInYEnd = Math.abs(\n pointTransformer(d).y - pointTransformer(data[data.length - 1]).y\n );\n const differenceToStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);\n const differenceInYStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);\n const startMarkerHeight = markerOffsets[edge.arrowTypeStart as keyof typeof markerOffsets];\n const endMarkerHeight = markerOffsets[edge.arrowTypeEnd as keyof typeof markerOffsets];\n const extraRoom = 1;\n\n // Adjust the offset if the difference is smaller than the marker height\n if (\n differenceToEnd < endMarkerHeight &&\n differenceToEnd > 0 &&\n differenceInYEnd < endMarkerHeight\n ) {\n let adjustment = endMarkerHeight + extraRoom - differenceToEnd;\n adjustment *= DIRECTION === 'right' ? -1 : 1;\n // Adjust the offset by the amount needed to fit the marker\n offset -= adjustment;\n }\n\n if (\n differenceToStart < startMarkerHeight &&\n differenceToStart > 0 &&\n differenceInYStart < startMarkerHeight\n ) {\n let adjustment = startMarkerHeight + extraRoom - differenceToStart;\n adjustment *= DIRECTION === 'right' ? -1 : 1;\n offset += adjustment;\n }\n\n return pointTransformer(d).x + offset;\n },\n y: function (\n this: void,\n d: Point | [number, number],\n i: number,\n data: (Point | [number, number])[]\n ) {\n let offset = 0;\n const DIRECTION =\n pointTransformer(data[0]).y < pointTransformer(data[data.length - 1]).y ? 'down' : 'up';\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n offset =\n markerOffsets[edge.arrowTypeStart as keyof typeof markerOffsets] *\n Math.abs(Math.sin(angle)) *\n (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaY } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset =\n markerOffsets[edge.arrowTypeEnd as keyof typeof markerOffsets] *\n Math.abs(Math.sin(angle)) *\n (deltaY >= 0 ? 1 : -1);\n }\n\n const differenceToEnd = Math.abs(\n pointTransformer(d).y - pointTransformer(data[data.length - 1]).y\n );\n const differenceInXEnd = Math.abs(\n pointTransformer(d).x - pointTransformer(data[data.length - 1]).x\n );\n const differenceToStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);\n const differenceInXStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);\n const startMarkerHeight = markerOffsets[edge.arrowTypeStart as keyof typeof markerOffsets];\n const endMarkerHeight = markerOffsets[edge.arrowTypeEnd as keyof typeof markerOffsets];\n const extraRoom = 1;\n\n // Adjust the offset if the difference is smaller than the marker height\n if (\n differenceToEnd < endMarkerHeight &&\n differenceToEnd > 0 &&\n differenceInXEnd < endMarkerHeight\n ) {\n let adjustment = endMarkerHeight + extraRoom - differenceToEnd;\n adjustment *= DIRECTION === 'up' ? -1 : 1;\n // Adjust the offset by the amount needed to fit the marker\n offset -= adjustment;\n }\n\n if (\n differenceToStart < startMarkerHeight &&\n differenceToStart > 0 &&\n differenceInXStart < startMarkerHeight\n ) {\n let adjustment = startMarkerHeight + extraRoom - differenceToStart;\n adjustment *= DIRECTION === 'up' ? -1 : 1;\n offset += adjustment;\n }\n return pointTransformer(d).y + offset;\n },\n };\n};\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n describe('calculateDeltaAndAngle', () => {\n it('should calculate the angle and deltas between two points', () => {\n expect(calculateDeltaAndAngle([0, 0], [0, 1])).toStrictEqual({\n angle: 1.5707963267948966,\n deltaX: 0,\n deltaY: 1,\n });\n expect(calculateDeltaAndAngle([1, 0], [0, -1])).toStrictEqual({\n angle: 0.7853981633974483,\n deltaX: -1,\n deltaY: -1,\n });\n expect(calculateDeltaAndAngle({ x: 1, y: 0 }, [0, -1])).toStrictEqual({\n angle: 0.7853981633974483,\n deltaX: -1,\n deltaY: -1,\n });\n expect(calculateDeltaAndAngle({ x: 1, y: 0 }, { x: 1, y: 0 })).toStrictEqual({\n angle: NaN,\n deltaX: 0,\n deltaY: 0,\n });\n });\n\n it('should calculate the angle and deltas if one point in undefined', () => {\n expect(calculateDeltaAndAngle(undefined, [0, 1])).toStrictEqual({\n angle: 0,\n deltaX: 0,\n deltaY: 0,\n });\n expect(calculateDeltaAndAngle([0, 1], undefined)).toStrictEqual({\n angle: 0,\n deltaX: 0,\n deltaY: 0,\n });\n });\n });\n}\n"], - "mappings": "yCA0BO,IAAMA,EAAwBC,EAAA,CAACC,EAAiBC,IAAmC,CACxF,GAAIA,EACF,MAAO,aAAe,CAACD,EAAK,MAAQ,EAAI,KAAO,CAACA,EAAK,OAAS,EAAI,IAEpE,IAAME,EAAIF,EAAK,GAAK,EACdG,EAAIH,EAAK,GAAK,EACpB,MAAO,aAAe,EAAEE,EAAIF,EAAK,MAAQ,GAAK,KAAO,EAAEG,EAAIH,EAAK,OAAS,GAAK,GAChF,EAPqC,yBCrB9B,IAAMI,EAAgB,CAC3B,YAAa,MACb,UAAW,MACX,YAAa,MACb,WAAY,EACZ,SAAU,KACV,YAAa,CAEf,EAKaC,EAAiB,CAC5B,YAAa,EACb,YAAa,KACb,aAAc,IAChB,EAQA,SAASC,EACPC,EACAC,EACmD,CACnD,GAAID,IAAW,QAAaC,IAAW,OACrC,MAAO,CAAE,MAAO,EAAG,OAAQ,EAAG,OAAQ,CAAE,EAE1CD,EAASE,EAAiBF,CAAM,EAChCC,EAASC,EAAiBD,CAAM,EAChC,GAAM,CAACE,EAAIC,CAAE,EAAI,CAACJ,EAAO,EAAGA,EAAO,CAAC,EAC9B,CAACK,EAAIC,CAAE,EAAI,CAACL,EAAO,EAAGA,EAAO,CAAC,EAC9BM,EAASF,EAAKF,EACdK,EAASF,EAAKF,EACpB,MAAO,CAAE,MAAO,KAAK,KAAKI,EAASD,CAAM,EAAG,OAAAA,EAAQ,OAAAC,CAAO,CAC7D,CAdSC,EAAAV,EAAA,0BAgBT,IAAMG,EAAmBO,EAACC,GACpB,MAAM,QAAQA,CAAI,EACb,CAAE,EAAGA,EAAK,CAAC,EAAG,EAAGA,EAAK,CAAC,CAAE,EAE3BA,EAJgB,oBAOZC,EAA6BF,EACxCG,IAEO,CACL,EAAGH,EAAA,SAEDI,EACAC,EACAJ,EACA,CACA,IAAIK,EAAS,EACPC,EACJd,EAAiBQ,EAAK,CAAC,CAAC,EAAE,EAAIR,EAAiBQ,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAE,EAAI,OAAS,QACrF,GAAII,IAAM,GAAK,OAAO,OAAOjB,EAAee,EAAK,cAAc,EAAG,CAChE,GAAM,CAAE,MAAAK,EAAO,OAAAV,CAAO,EAAIR,EAAuBW,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EACjEK,EACElB,EAAce,EAAK,cAA4C,EAC/D,KAAK,IAAIK,CAAK,GACbV,GAAU,EAAI,EAAI,GACvB,SAAWO,IAAMJ,EAAK,OAAS,GAAK,OAAO,OAAOb,EAAee,EAAK,YAAY,EAAG,CACnF,GAAM,CAAE,MAAAK,EAAO,OAAAV,CAAO,EAAIR,EACxBW,EAAKA,EAAK,OAAS,CAAC,EACpBA,EAAKA,EAAK,OAAS,CAAC,CACtB,EACAK,EACElB,EAAce,EAAK,YAA0C,EAC7D,KAAK,IAAIK,CAAK,GACbV,GAAU,EAAI,EAAI,GACvB,CAEA,IAAMW,EAAkB,KAAK,IAC3BhB,EAAiBW,CAAC,EAAE,EAAIX,EAAiBQ,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAE,CAClE,EACMS,EAAmB,KAAK,IAC5BjB,EAAiBW,CAAC,EAAE,EAAIX,EAAiBQ,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAE,CAClE,EACMU,EAAoB,KAAK,IAAIlB,EAAiBW,CAAC,EAAE,EAAIX,EAAiBQ,EAAK,CAAC,CAAC,EAAE,CAAC,EAChFW,EAAqB,KAAK,IAAInB,EAAiBW,CAAC,EAAE,EAAIX,EAAiBQ,EAAK,CAAC,CAAC,EAAE,CAAC,EACjFY,EAAoBzB,EAAce,EAAK,cAA4C,EACnFW,EAAkB1B,EAAce,EAAK,YAA0C,EAC/EY,EAAY,EAGlB,GACEN,EAAkBK,GAClBL,EAAkB,GAClBC,EAAmBI,EACnB,CACA,IAAIE,EAAaF,EAAkBC,EAAYN,EAC/CO,GAAcT,IAAc,QAAU,GAAK,EAE3CD,GAAUU,CACZ,CAEA,GACEL,EAAoBE,GACpBF,EAAoB,GACpBC,EAAqBC,EACrB,CACA,IAAIG,EAAaH,EAAoBE,EAAYJ,EACjDK,GAAcT,IAAc,QAAU,GAAK,EAC3CD,GAAUU,CACZ,CAEA,OAAOvB,EAAiBW,CAAC,EAAE,EAAIE,CACjC,EA7DG,KA8DH,EAAGN,EAAA,SAEDI,EACAC,EACAJ,EACA,CACA,IAAIK,EAAS,EACPC,EACJd,EAAiBQ,EAAK,CAAC,CAAC,EAAE,EAAIR,EAAiBQ,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAE,EAAI,OAAS,KACrF,GAAII,IAAM,GAAK,OAAO,OAAOjB,EAAee,EAAK,cAAc,EAAG,CAChE,GAAM,CAAE,MAAAK,EAAO,OAAAT,CAAO,EAAIT,EAAuBW,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EACjEK,EACElB,EAAce,EAAK,cAA4C,EAC/D,KAAK,IAAI,KAAK,IAAIK,CAAK,CAAC,GACvBT,GAAU,EAAI,EAAI,GACvB,SAAWM,IAAMJ,EAAK,OAAS,GAAK,OAAO,OAAOb,EAAee,EAAK,YAAY,EAAG,CACnF,GAAM,CAAE,MAAAK,EAAO,OAAAT,CAAO,EAAIT,EACxBW,EAAKA,EAAK,OAAS,CAAC,EACpBA,EAAKA,EAAK,OAAS,CAAC,CACtB,EACAK,EACElB,EAAce,EAAK,YAA0C,EAC7D,KAAK,IAAI,KAAK,IAAIK,CAAK,CAAC,GACvBT,GAAU,EAAI,EAAI,GACvB,CAEA,IAAMU,EAAkB,KAAK,IAC3BhB,EAAiBW,CAAC,EAAE,EAAIX,EAAiBQ,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAE,CAClE,EACMgB,EAAmB,KAAK,IAC5BxB,EAAiBW,CAAC,EAAE,EAAIX,EAAiBQ,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAE,CAClE,EACMU,EAAoB,KAAK,IAAIlB,EAAiBW,CAAC,EAAE,EAAIX,EAAiBQ,EAAK,CAAC,CAAC,EAAE,CAAC,EAChFiB,EAAqB,KAAK,IAAIzB,EAAiBW,CAAC,EAAE,EAAIX,EAAiBQ,EAAK,CAAC,CAAC,EAAE,CAAC,EACjFY,EAAoBzB,EAAce,EAAK,cAA4C,EACnFW,EAAkB1B,EAAce,EAAK,YAA0C,EAC/EY,EAAY,EAGlB,GACEN,EAAkBK,GAClBL,EAAkB,GAClBQ,EAAmBH,EACnB,CACA,IAAIE,EAAaF,EAAkBC,EAAYN,EAC/CO,GAAcT,IAAc,KAAO,GAAK,EAExCD,GAAUU,CACZ,CAEA,GACEL,EAAoBE,GACpBF,EAAoB,GACpBO,EAAqBL,EACrB,CACA,IAAIG,EAAaH,EAAoBE,EAAYJ,EACjDK,GAAcT,IAAc,KAAO,GAAK,EACxCD,GAAUU,CACZ,CACA,OAAOvB,EAAiBW,CAAC,EAAE,EAAIE,CACjC,EA5DG,IA6DL,GA/HwC", - "names": ["computeLabelTransform", "__name", "bbox", "useHtmlLabels", "x", "y", "markerOffsets", "markerOffsets2", "calculateDeltaAndAngle", "point1", "point2", "pointTransformer", "x1", "y1", "x2", "y2", "deltaX", "deltaY", "__name", "data", "getLineFunctionsWithOffset", "edge", "d", "i", "offset", "DIRECTION", "angle", "differenceToEnd", "differenceInYEnd", "differenceToStart", "differenceInYStart", "startMarkerHeight", "endMarkerHeight", "extraRoom", "adjustment", "differenceInXEnd", "differenceInXStart"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-4R4BOZG6.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-4R4BOZG6.mjs new file mode 100644 index 0000000..6f7deb5 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-4R4BOZG6.mjs @@ -0,0 +1,172 @@ +import{a as i}from"./chunk-AQ6EADP3.mjs";var $S=Object.create,gs=Object.defineProperty,AS=Object.getOwnPropertyDescriptor,Bf=Object.getOwnPropertyNames,ES=Object.getPrototypeOf,_S=Object.prototype.hasOwnProperty,o=i((e,t)=>gs(e,"name",{value:t,configurable:!0}),"__name"),CS=i((e,t)=>i(function(){return e&&(t=(0,e[Bf(e)[0]])(e=0)),t},"__init"),"__esm"),Y=i((e,t)=>i(function(){return t||(0,e[Bf(e)[0]])((t={exports:{}}).exports,t),t.exports},"__require"),"__commonJS"),xr=i((e,t)=>{for(var r in t)gs(e,r,{get:t[r],enumerable:!0})},"__export"),bo=i((e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Bf(t))!_S.call(e,a)&&a!==r&&gs(e,a,{get:i(()=>t[a],"get"),enumerable:!(n=AS(t,a))||n.enumerable});return e},"__copyProps"),ml=i((e,t,r)=>(bo(e,t,"default"),r&&bo(r,t,"default")),"__reExport"),Kf=i((e,t,r)=>(r=e!=null?$S(ES(e)):{},bo(t||!e||!e.__esModule?gs(r,"default",{value:e,enumerable:!0}):r,e)),"__toESM"),qf=i(e=>bo(gs({},"__esModule",{value:!0}),e),"__toCommonJS"),gl={};xr(gl,{AnnotatedTextEdit:i(()=>ar,"AnnotatedTextEdit"),ChangeAnnotation:i(()=>Hr,"ChangeAnnotation"),ChangeAnnotationIdentifier:i(()=>Be,"ChangeAnnotationIdentifier"),CodeAction:i(()=>bc,"CodeAction"),CodeActionContext:i(()=>Cc,"CodeActionContext"),CodeActionKind:i(()=>_c,"CodeActionKind"),CodeActionTriggerKind:i(()=>ki,"CodeActionTriggerKind"),CodeDescription:i(()=>rc,"CodeDescription"),CodeLens:i(()=>Sc,"CodeLens"),Color:i(()=>no,"Color"),ColorInformation:i(()=>Xu,"ColorInformation"),ColorPresentation:i(()=>Ju,"ColorPresentation"),Command:i(()=>Vr,"Command"),CompletionItem:i(()=>dc,"CompletionItem"),CompletionItemKind:i(()=>sc,"CompletionItemKind"),CompletionItemLabelDetails:i(()=>fc,"CompletionItemLabelDetails"),CompletionItemTag:i(()=>lc,"CompletionItemTag"),CompletionList:i(()=>pc,"CompletionList"),CreateFile:i(()=>na,"CreateFile"),DeleteFile:i(()=>ia,"DeleteFile"),Diagnostic:i(()=>Si,"Diagnostic"),DiagnosticRelatedInformation:i(()=>ao,"DiagnosticRelatedInformation"),DiagnosticSeverity:i(()=>ec,"DiagnosticSeverity"),DiagnosticTag:i(()=>tc,"DiagnosticTag"),DocumentHighlight:i(()=>vc,"DocumentHighlight"),DocumentHighlightKind:i(()=>yc,"DocumentHighlightKind"),DocumentLink:i(()=>Ic,"DocumentLink"),DocumentSymbol:i(()=>Ec,"DocumentSymbol"),DocumentUri:i(()=>Vu,"DocumentUri"),EOL:i(()=>yg,"EOL"),FoldingRange:i(()=>Qu,"FoldingRange"),FoldingRangeKind:i(()=>Zu,"FoldingRangeKind"),FormattingOptions:i(()=>wc,"FormattingOptions"),Hover:i(()=>hc,"Hover"),InlayHint:i(()=>Fc,"InlayHint"),InlayHintKind:i(()=>oo,"InlayHintKind"),InlayHintLabelPart:i(()=>lo,"InlayHintLabelPart"),InlineCompletionContext:i(()=>Kc,"InlineCompletionContext"),InlineCompletionItem:i(()=>jc,"InlineCompletionItem"),InlineCompletionList:i(()=>Uc,"InlineCompletionList"),InlineCompletionTriggerKind:i(()=>zc,"InlineCompletionTriggerKind"),InlineValueContext:i(()=>xc,"InlineValueContext"),InlineValueEvaluatableExpression:i(()=>Mc,"InlineValueEvaluatableExpression"),InlineValueText:i(()=>Lc,"InlineValueText"),InlineValueVariableLookup:i(()=>Dc,"InlineValueVariableLookup"),InsertReplaceEdit:i(()=>uc,"InsertReplaceEdit"),InsertTextFormat:i(()=>oc,"InsertTextFormat"),InsertTextMode:i(()=>cc,"InsertTextMode"),Location:i(()=>bi,"Location"),LocationLink:i(()=>Yu,"LocationLink"),MarkedString:i(()=>Ni,"MarkedString"),MarkupContent:i(()=>sa,"MarkupContent"),MarkupKind:i(()=>so,"MarkupKind"),OptionalVersionedTextDocumentIdentifier:i(()=>Ii,"OptionalVersionedTextDocumentIdentifier"),ParameterInformation:i(()=>mc,"ParameterInformation"),Position:i(()=>ae,"Position"),Range:i(()=>Q,"Range"),RenameFile:i(()=>aa,"RenameFile"),SelectedCompletionInfo:i(()=>Bc,"SelectedCompletionInfo"),SelectionRange:i(()=>Nc,"SelectionRange"),SemanticTokenModifiers:i(()=>Pc,"SemanticTokenModifiers"),SemanticTokenTypes:i(()=>kc,"SemanticTokenTypes"),SemanticTokens:i(()=>Oc,"SemanticTokens"),SignatureInformation:i(()=>gc,"SignatureInformation"),StringValue:i(()=>Gc,"StringValue"),SymbolInformation:i(()=>$c,"SymbolInformation"),SymbolKind:i(()=>Tc,"SymbolKind"),SymbolTag:i(()=>Rc,"SymbolTag"),TextDocument:i(()=>Wc,"TextDocument"),TextDocumentEdit:i(()=>wi,"TextDocumentEdit"),TextDocumentIdentifier:i(()=>nc,"TextDocumentIdentifier"),TextDocumentItem:i(()=>ic,"TextDocumentItem"),TextEdit:i(()=>zt,"TextEdit"),URI:i(()=>ro,"URI"),VersionedTextDocumentIdentifier:i(()=>ac,"VersionedTextDocumentIdentifier"),WorkspaceChange:i(()=>gg,"WorkspaceChange"),WorkspaceEdit:i(()=>io,"WorkspaceEdit"),WorkspaceFolder:i(()=>qc,"WorkspaceFolder"),WorkspaceSymbol:i(()=>Ac,"WorkspaceSymbol"),integer:i(()=>Hu,"integer"),uinteger:i(()=>Ci,"uinteger")});var Vu,ro,Hu,Ci,ae,Q,bi,Yu,no,Xu,Ju,Zu,Qu,ao,ec,tc,rc,Si,Vr,zt,Hr,Be,ar,wi,na,aa,ia,io,mi,Cu,gg,nc,ac,Ii,ic,so,sa,sc,oc,lc,uc,cc,fc,dc,pc,Ni,hc,mc,gc,yc,vc,Tc,Rc,$c,Ac,Ec,_c,ki,Cc,bc,Sc,wc,Ic,Nc,kc,Pc,Oc,Lc,Dc,Mc,xc,oo,lo,Fc,Gc,jc,Uc,zc,Bc,Kc,qc,yg,Wc,Nh,A,ys=CS({"../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js"(){"use strict";(function(e){function t(r){return typeof r=="string"}i(t,"is"),o(t,"is"),e.is=t})(Vu||(Vu={})),(function(e){function t(r){return typeof r=="string"}i(t,"is"),o(t,"is"),e.is=t})(ro||(ro={})),(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}i(t,"is"),o(t,"is"),e.is=t})(Hu||(Hu={})),(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}i(t,"is"),o(t,"is"),e.is=t})(Ci||(Ci={})),(function(e){function t(n,a){return n===Number.MAX_VALUE&&(n=Ci.MAX_VALUE),a===Number.MAX_VALUE&&(a=Ci.MAX_VALUE),{line:n,character:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&A.uinteger(a.line)&&A.uinteger(a.character)}i(r,"is"),o(r,"is"),e.is=r})(ae||(ae={})),(function(e){function t(n,a,s,l){if(A.uinteger(n)&&A.uinteger(a)&&A.uinteger(s)&&A.uinteger(l))return{start:ae.create(n,a),end:ae.create(s,l)};if(ae.is(n)&&ae.is(a))return{start:n,end:a};throw new Error(`Range#create called with invalid arguments[${n}, ${a}, ${s}, ${l}]`)}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&ae.is(a.start)&&ae.is(a.end)}i(r,"is"),o(r,"is"),e.is=r})(Q||(Q={})),(function(e){function t(n,a){return{uri:n,range:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&Q.is(a.range)&&(A.string(a.uri)||A.undefined(a.uri))}i(r,"is"),o(r,"is"),e.is=r})(bi||(bi={})),(function(e){function t(n,a,s,l){return{targetUri:n,targetRange:a,targetSelectionRange:s,originSelectionRange:l}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&Q.is(a.targetRange)&&A.string(a.targetUri)&&Q.is(a.targetSelectionRange)&&(Q.is(a.originSelectionRange)||A.undefined(a.originSelectionRange))}i(r,"is"),o(r,"is"),e.is=r})(Yu||(Yu={})),(function(e){function t(n,a,s,l){return{red:n,green:a,blue:s,alpha:l}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&A.numberRange(a.red,0,1)&&A.numberRange(a.green,0,1)&&A.numberRange(a.blue,0,1)&&A.numberRange(a.alpha,0,1)}i(r,"is"),o(r,"is"),e.is=r})(no||(no={})),(function(e){function t(n,a){return{range:n,color:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&Q.is(a.range)&&no.is(a.color)}i(r,"is"),o(r,"is"),e.is=r})(Xu||(Xu={})),(function(e){function t(n,a,s){return{label:n,textEdit:a,additionalTextEdits:s}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&A.string(a.label)&&(A.undefined(a.textEdit)||zt.is(a))&&(A.undefined(a.additionalTextEdits)||A.typedArray(a.additionalTextEdits,zt.is))}i(r,"is"),o(r,"is"),e.is=r})(Ju||(Ju={})),(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(Zu||(Zu={})),(function(e){function t(n,a,s,l,u,c){let f={startLine:n,endLine:a};return A.defined(s)&&(f.startCharacter=s),A.defined(l)&&(f.endCharacter=l),A.defined(u)&&(f.kind=u),A.defined(c)&&(f.collapsedText=c),f}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&A.uinteger(a.startLine)&&A.uinteger(a.startLine)&&(A.undefined(a.startCharacter)||A.uinteger(a.startCharacter))&&(A.undefined(a.endCharacter)||A.uinteger(a.endCharacter))&&(A.undefined(a.kind)||A.string(a.kind))}i(r,"is"),o(r,"is"),e.is=r})(Qu||(Qu={})),(function(e){function t(n,a){return{location:n,message:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&bi.is(a.location)&&A.string(a.message)}i(r,"is"),o(r,"is"),e.is=r})(ao||(ao={})),(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(ec||(ec={})),(function(e){e.Unnecessary=1,e.Deprecated=2})(tc||(tc={})),(function(e){function t(r){let n=r;return A.objectLiteral(n)&&A.string(n.href)}i(t,"is"),o(t,"is"),e.is=t})(rc||(rc={})),(function(e){function t(n,a,s,l,u,c){let f={range:n,message:a};return A.defined(s)&&(f.severity=s),A.defined(l)&&(f.code=l),A.defined(u)&&(f.source=u),A.defined(c)&&(f.relatedInformation=c),f}i(t,"create"),o(t,"create"),e.create=t;function r(n){var a;let s=n;return A.defined(s)&&Q.is(s.range)&&A.string(s.message)&&(A.number(s.severity)||A.undefined(s.severity))&&(A.integer(s.code)||A.string(s.code)||A.undefined(s.code))&&(A.undefined(s.codeDescription)||A.string((a=s.codeDescription)===null||a===void 0?void 0:a.href))&&(A.string(s.source)||A.undefined(s.source))&&(A.undefined(s.relatedInformation)||A.typedArray(s.relatedInformation,ao.is))}i(r,"is"),o(r,"is"),e.is=r})(Si||(Si={})),(function(e){function t(n,a,...s){let l={title:n,command:a};return A.defined(s)&&s.length>0&&(l.arguments=s),l}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&A.string(a.title)&&A.string(a.command)}i(r,"is"),o(r,"is"),e.is=r})(Vr||(Vr={})),(function(e){function t(s,l){return{range:s,newText:l}}i(t,"replace"),o(t,"replace"),e.replace=t;function r(s,l){return{range:{start:s,end:s},newText:l}}i(r,"insert"),o(r,"insert"),e.insert=r;function n(s){return{range:s,newText:""}}i(n,"del"),o(n,"del"),e.del=n;function a(s){let l=s;return A.objectLiteral(l)&&A.string(l.newText)&&Q.is(l.range)}i(a,"is"),o(a,"is"),e.is=a})(zt||(zt={})),(function(e){function t(n,a,s){let l={label:n};return a!==void 0&&(l.needsConfirmation=a),s!==void 0&&(l.description=s),l}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&A.string(a.label)&&(A.boolean(a.needsConfirmation)||a.needsConfirmation===void 0)&&(A.string(a.description)||a.description===void 0)}i(r,"is"),o(r,"is"),e.is=r})(Hr||(Hr={})),(function(e){function t(r){let n=r;return A.string(n)}i(t,"is"),o(t,"is"),e.is=t})(Be||(Be={})),(function(e){function t(s,l,u){return{range:s,newText:l,annotationId:u}}i(t,"replace"),o(t,"replace"),e.replace=t;function r(s,l,u){return{range:{start:s,end:s},newText:l,annotationId:u}}i(r,"insert"),o(r,"insert"),e.insert=r;function n(s,l){return{range:s,newText:"",annotationId:l}}i(n,"del"),o(n,"del"),e.del=n;function a(s){let l=s;return zt.is(l)&&(Hr.is(l.annotationId)||Be.is(l.annotationId))}i(a,"is"),o(a,"is"),e.is=a})(ar||(ar={})),(function(e){function t(n,a){return{textDocument:n,edits:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&Ii.is(a.textDocument)&&Array.isArray(a.edits)}i(r,"is"),o(r,"is"),e.is=r})(wi||(wi={})),(function(e){function t(n,a,s){let l={kind:"create",uri:n};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a&&a.kind==="create"&&A.string(a.uri)&&(a.options===void 0||(a.options.overwrite===void 0||A.boolean(a.options.overwrite))&&(a.options.ignoreIfExists===void 0||A.boolean(a.options.ignoreIfExists)))&&(a.annotationId===void 0||Be.is(a.annotationId))}i(r,"is"),o(r,"is"),e.is=r})(na||(na={})),(function(e){function t(n,a,s,l){let u={kind:"rename",oldUri:n,newUri:a};return s!==void 0&&(s.overwrite!==void 0||s.ignoreIfExists!==void 0)&&(u.options=s),l!==void 0&&(u.annotationId=l),u}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a&&a.kind==="rename"&&A.string(a.oldUri)&&A.string(a.newUri)&&(a.options===void 0||(a.options.overwrite===void 0||A.boolean(a.options.overwrite))&&(a.options.ignoreIfExists===void 0||A.boolean(a.options.ignoreIfExists)))&&(a.annotationId===void 0||Be.is(a.annotationId))}i(r,"is"),o(r,"is"),e.is=r})(aa||(aa={})),(function(e){function t(n,a,s){let l={kind:"delete",uri:n};return a!==void 0&&(a.recursive!==void 0||a.ignoreIfNotExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a&&a.kind==="delete"&&A.string(a.uri)&&(a.options===void 0||(a.options.recursive===void 0||A.boolean(a.options.recursive))&&(a.options.ignoreIfNotExists===void 0||A.boolean(a.options.ignoreIfNotExists)))&&(a.annotationId===void 0||Be.is(a.annotationId))}i(r,"is"),o(r,"is"),e.is=r})(ia||(ia={})),(function(e){function t(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(a=>A.string(a.kind)?na.is(a)||aa.is(a)||ia.is(a):wi.is(a)))}i(t,"is"),o(t,"is"),e.is=t})(io||(io={})),mi=class{static{i(this,"TextEditChangeImpl")}static{o(this,"TextEditChangeImpl")}constructor(e,t){this.edits=e,this.changeAnnotations=t}insert(e,t,r){let n,a;if(r===void 0?n=zt.insert(e,t):Be.is(r)?(a=r,n=ar.insert(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(r),n=ar.insert(e,t,a)),this.edits.push(n),a!==void 0)return a}replace(e,t,r){let n,a;if(r===void 0?n=zt.replace(e,t):Be.is(r)?(a=r,n=ar.replace(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(r),n=ar.replace(e,t,a)),this.edits.push(n),a!==void 0)return a}delete(e,t){let r,n;if(t===void 0?r=zt.del(e):Be.is(t)?(n=t,r=ar.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(t),r=ar.del(e,n)),this.edits.push(r),n!==void 0)return n}add(e){this.edits.push(e)}all(){return this.edits}clear(){this.edits.splice(0,this.edits.length)}assertChangeAnnotations(e){if(e===void 0)throw new Error("Text edit change is not configured to manage change annotations.")}},Cu=class{static{i(this,"ChangeAnnotations")}static{o(this,"ChangeAnnotations")}constructor(e){this._annotations=e===void 0?Object.create(null):e,this._counter=0,this._size=0}all(){return this._annotations}get size(){return this._size}manage(e,t){let r;if(Be.is(e)?r=e:(r=this.nextId(),t=e),this._annotations[r]!==void 0)throw new Error(`Id ${r} is already in use.`);if(t===void 0)throw new Error(`No annotation provided for id ${r}`);return this._annotations[r]=t,this._size++,r}nextId(){return this._counter++,this._counter.toString()}},gg=class{static{i(this,"WorkspaceChange")}static{o(this,"WorkspaceChange")}constructor(e){this._textEditChanges=Object.create(null),e!==void 0?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new Cu(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(t=>{if(wi.is(t)){let r=new mi(t.edits,this._changeAnnotations);this._textEditChanges[t.textDocument.uri]=r}})):e.changes&&Object.keys(e.changes).forEach(t=>{let r=new mi(e.changes[t]);this._textEditChanges[t]=r})):this._workspaceEdit={}}get edit(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit}getTextEditChange(e){if(Ii.is(e)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let t={uri:e.uri,version:e.version},r=this._textEditChanges[t.uri];if(!r){let n=[],a={textDocument:t,edits:n};this._workspaceEdit.documentChanges.push(a),r=new mi(n,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");let t=this._textEditChanges[e];if(!t){let r=[];this._workspaceEdit.changes[e]=r,t=new mi(r),this._textEditChanges[e]=t}return t}}initDocumentChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new Cu,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())}initChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))}createFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;Hr.is(t)||Be.is(t)?n=t:r=t;let a,s;if(n===void 0?a=na.create(e,r):(s=Be.is(n)?n:this._changeAnnotations.manage(n),a=na.create(e,r,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s}renameFile(e,t,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let a;Hr.is(r)||Be.is(r)?a=r:n=r;let s,l;if(a===void 0?s=aa.create(e,t,n):(l=Be.is(a)?a:this._changeAnnotations.manage(a),s=aa.create(e,t,n,l)),this._workspaceEdit.documentChanges.push(s),l!==void 0)return l}deleteFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;Hr.is(t)||Be.is(t)?n=t:r=t;let a,s;if(n===void 0?a=ia.create(e,r):(s=Be.is(n)?n:this._changeAnnotations.manage(n),a=ia.create(e,r,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s}},(function(e){function t(n){return{uri:n}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&A.string(a.uri)}i(r,"is"),o(r,"is"),e.is=r})(nc||(nc={})),(function(e){function t(n,a){return{uri:n,version:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&A.string(a.uri)&&A.integer(a.version)}i(r,"is"),o(r,"is"),e.is=r})(ac||(ac={})),(function(e){function t(n,a){return{uri:n,version:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&A.string(a.uri)&&(a.version===null||A.integer(a.version))}i(r,"is"),o(r,"is"),e.is=r})(Ii||(Ii={})),(function(e){function t(n,a,s,l){return{uri:n,languageId:a,version:s,text:l}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&A.string(a.uri)&&A.string(a.languageId)&&A.integer(a.version)&&A.string(a.text)}i(r,"is"),o(r,"is"),e.is=r})(ic||(ic={})),(function(e){e.PlainText="plaintext",e.Markdown="markdown";function t(r){let n=r;return n===e.PlainText||n===e.Markdown}i(t,"is"),o(t,"is"),e.is=t})(so||(so={})),(function(e){function t(r){let n=r;return A.objectLiteral(r)&&so.is(n.kind)&&A.string(n.value)}i(t,"is"),o(t,"is"),e.is=t})(sa||(sa={})),(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(sc||(sc={})),(function(e){e.PlainText=1,e.Snippet=2})(oc||(oc={})),(function(e){e.Deprecated=1})(lc||(lc={})),(function(e){function t(n,a,s){return{newText:n,insert:a,replace:s}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a&&A.string(a.newText)&&Q.is(a.insert)&&Q.is(a.replace)}i(r,"is"),o(r,"is"),e.is=r})(uc||(uc={})),(function(e){e.asIs=1,e.adjustIndentation=2})(cc||(cc={})),(function(e){function t(r){let n=r;return n&&(A.string(n.detail)||n.detail===void 0)&&(A.string(n.description)||n.description===void 0)}i(t,"is"),o(t,"is"),e.is=t})(fc||(fc={})),(function(e){function t(r){return{label:r}}i(t,"create"),o(t,"create"),e.create=t})(dc||(dc={})),(function(e){function t(r,n){return{items:r||[],isIncomplete:!!n}}i(t,"create"),o(t,"create"),e.create=t})(pc||(pc={})),(function(e){function t(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}i(t,"fromPlainText"),o(t,"fromPlainText"),e.fromPlainText=t;function r(n){let a=n;return A.string(a)||A.objectLiteral(a)&&A.string(a.language)&&A.string(a.value)}i(r,"is"),o(r,"is"),e.is=r})(Ni||(Ni={})),(function(e){function t(r){let n=r;return!!n&&A.objectLiteral(n)&&(sa.is(n.contents)||Ni.is(n.contents)||A.typedArray(n.contents,Ni.is))&&(r.range===void 0||Q.is(r.range))}i(t,"is"),o(t,"is"),e.is=t})(hc||(hc={})),(function(e){function t(r,n){return n?{label:r,documentation:n}:{label:r}}i(t,"create"),o(t,"create"),e.create=t})(mc||(mc={})),(function(e){function t(r,n,...a){let s={label:r};return A.defined(n)&&(s.documentation=n),A.defined(a)?s.parameters=a:s.parameters=[],s}i(t,"create"),o(t,"create"),e.create=t})(gc||(gc={})),(function(e){e.Text=1,e.Read=2,e.Write=3})(yc||(yc={})),(function(e){function t(r,n){let a={range:r};return A.number(n)&&(a.kind=n),a}i(t,"create"),o(t,"create"),e.create=t})(vc||(vc={})),(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})(Tc||(Tc={})),(function(e){e.Deprecated=1})(Rc||(Rc={})),(function(e){function t(r,n,a,s,l){let u={name:r,kind:n,location:{uri:s,range:a}};return l&&(u.containerName=l),u}i(t,"create"),o(t,"create"),e.create=t})($c||($c={})),(function(e){function t(r,n,a,s){return s!==void 0?{name:r,kind:n,location:{uri:a,range:s}}:{name:r,kind:n,location:{uri:a}}}i(t,"create"),o(t,"create"),e.create=t})(Ac||(Ac={})),(function(e){function t(n,a,s,l,u,c){let f={name:n,detail:a,kind:s,range:l,selectionRange:u};return c!==void 0&&(f.children=c),f}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a&&A.string(a.name)&&A.number(a.kind)&&Q.is(a.range)&&Q.is(a.selectionRange)&&(a.detail===void 0||A.string(a.detail))&&(a.deprecated===void 0||A.boolean(a.deprecated))&&(a.children===void 0||Array.isArray(a.children))&&(a.tags===void 0||Array.isArray(a.tags))}i(r,"is"),o(r,"is"),e.is=r})(Ec||(Ec={})),(function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"})(_c||(_c={})),(function(e){e.Invoked=1,e.Automatic=2})(ki||(ki={})),(function(e){function t(n,a,s){let l={diagnostics:n};return a!=null&&(l.only=a),s!=null&&(l.triggerKind=s),l}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&A.typedArray(a.diagnostics,Si.is)&&(a.only===void 0||A.typedArray(a.only,A.string))&&(a.triggerKind===void 0||a.triggerKind===ki.Invoked||a.triggerKind===ki.Automatic)}i(r,"is"),o(r,"is"),e.is=r})(Cc||(Cc={})),(function(e){function t(n,a,s){let l={title:n},u=!0;return typeof a=="string"?(u=!1,l.kind=a):Vr.is(a)?l.command=a:l.edit=a,u&&s!==void 0&&(l.kind=s),l}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a&&A.string(a.title)&&(a.diagnostics===void 0||A.typedArray(a.diagnostics,Si.is))&&(a.kind===void 0||A.string(a.kind))&&(a.edit!==void 0||a.command!==void 0)&&(a.command===void 0||Vr.is(a.command))&&(a.isPreferred===void 0||A.boolean(a.isPreferred))&&(a.edit===void 0||io.is(a.edit))}i(r,"is"),o(r,"is"),e.is=r})(bc||(bc={})),(function(e){function t(n,a){let s={range:n};return A.defined(a)&&(s.data=a),s}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&Q.is(a.range)&&(A.undefined(a.command)||Vr.is(a.command))}i(r,"is"),o(r,"is"),e.is=r})(Sc||(Sc={})),(function(e){function t(n,a){return{tabSize:n,insertSpaces:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&A.uinteger(a.tabSize)&&A.boolean(a.insertSpaces)}i(r,"is"),o(r,"is"),e.is=r})(wc||(wc={})),(function(e){function t(n,a,s){return{range:n,target:a,data:s}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&Q.is(a.range)&&(A.undefined(a.target)||A.string(a.target))}i(r,"is"),o(r,"is"),e.is=r})(Ic||(Ic={})),(function(e){function t(n,a){return{range:n,parent:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&Q.is(a.range)&&(a.parent===void 0||e.is(a.parent))}i(r,"is"),o(r,"is"),e.is=r})(Nc||(Nc={})),(function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"})(kc||(kc={})),(function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"})(Pc||(Pc={})),(function(e){function t(r){let n=r;return A.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}i(t,"is"),o(t,"is"),e.is=t})(Oc||(Oc={})),(function(e){function t(n,a){return{range:n,text:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a!=null&&Q.is(a.range)&&A.string(a.text)}i(r,"is"),o(r,"is"),e.is=r})(Lc||(Lc={})),(function(e){function t(n,a,s){return{range:n,variableName:a,caseSensitiveLookup:s}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a!=null&&Q.is(a.range)&&A.boolean(a.caseSensitiveLookup)&&(A.string(a.variableName)||a.variableName===void 0)}i(r,"is"),o(r,"is"),e.is=r})(Dc||(Dc={})),(function(e){function t(n,a){return{range:n,expression:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return a!=null&&Q.is(a.range)&&(A.string(a.expression)||a.expression===void 0)}i(r,"is"),o(r,"is"),e.is=r})(Mc||(Mc={})),(function(e){function t(n,a){return{frameId:n,stoppedLocation:a}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.defined(a)&&Q.is(n.stoppedLocation)}i(r,"is"),o(r,"is"),e.is=r})(xc||(xc={})),(function(e){e.Type=1,e.Parameter=2;function t(r){return r===1||r===2}i(t,"is"),o(t,"is"),e.is=t})(oo||(oo={})),(function(e){function t(n){return{value:n}}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&(a.tooltip===void 0||A.string(a.tooltip)||sa.is(a.tooltip))&&(a.location===void 0||bi.is(a.location))&&(a.command===void 0||Vr.is(a.command))}i(r,"is"),o(r,"is"),e.is=r})(lo||(lo={})),(function(e){function t(n,a,s){let l={position:n,label:a};return s!==void 0&&(l.kind=s),l}i(t,"create"),o(t,"create"),e.create=t;function r(n){let a=n;return A.objectLiteral(a)&&ae.is(a.position)&&(A.string(a.label)||A.typedArray(a.label,lo.is))&&(a.kind===void 0||oo.is(a.kind))&&a.textEdits===void 0||A.typedArray(a.textEdits,zt.is)&&(a.tooltip===void 0||A.string(a.tooltip)||sa.is(a.tooltip))&&(a.paddingLeft===void 0||A.boolean(a.paddingLeft))&&(a.paddingRight===void 0||A.boolean(a.paddingRight))}i(r,"is"),o(r,"is"),e.is=r})(Fc||(Fc={})),(function(e){function t(r){return{kind:"snippet",value:r}}i(t,"createSnippet"),o(t,"createSnippet"),e.createSnippet=t})(Gc||(Gc={})),(function(e){function t(r,n,a,s){return{insertText:r,filterText:n,range:a,command:s}}i(t,"create"),o(t,"create"),e.create=t})(jc||(jc={})),(function(e){function t(r){return{items:r}}i(t,"create"),o(t,"create"),e.create=t})(Uc||(Uc={})),(function(e){e.Invoked=0,e.Automatic=1})(zc||(zc={})),(function(e){function t(r,n){return{range:r,text:n}}i(t,"create"),o(t,"create"),e.create=t})(Bc||(Bc={})),(function(e){function t(r,n){return{triggerKind:r,selectedCompletionInfo:n}}i(t,"create"),o(t,"create"),e.create=t})(Kc||(Kc={})),(function(e){function t(r){let n=r;return A.objectLiteral(n)&&ro.is(n.uri)&&A.string(n.name)}i(t,"is"),o(t,"is"),e.is=t})(qc||(qc={})),yg=[` +`,`\r +`,"\r"],(function(e){function t(s,l,u,c){return new Nh(s,l,u,c)}i(t,"create"),o(t,"create"),e.create=t;function r(s){let l=s;return!!(A.defined(l)&&A.string(l.uri)&&(A.undefined(l.languageId)||A.string(l.languageId))&&A.uinteger(l.lineCount)&&A.func(l.getText)&&A.func(l.positionAt)&&A.func(l.offsetAt))}i(r,"is"),o(r,"is"),e.is=r;function n(s,l){let u=s.getText(),c=a(l,(d,p)=>{let m=d.range.start.line-p.range.start.line;return m===0?d.range.start.character-p.range.start.character:m}),f=u.length;for(let d=c.length-1;d>=0;d--){let p=c[d],m=s.offsetAt(p.range.start),v=s.offsetAt(p.range.end);if(v<=f)u=u.substring(0,m)+p.newText+u.substring(v,u.length);else throw new Error("Overlapping edit");f=m}return u}i(n,"applyEdits"),o(n,"applyEdits"),e.applyEdits=n;function a(s,l){if(s.length<=1)return s;let u=s.length/2|0,c=s.slice(0,u),f=s.slice(u);a(c,l),a(f,l);let d=0,p=0,m=0;for(;d0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),r=0,n=t.length;if(n===0)return ae.create(0,e);for(;re?n=s:r=s+1}let a=r-1;return ae.create(a,e-t[a])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],n=e.line+1"u"}i(n,"undefined2"),o(n,"undefined"),e.undefined=n;function a(v){return v===!0||v===!1}i(a,"boolean"),o(a,"boolean"),e.boolean=a;function s(v){return t.call(v)==="[object String]"}i(s,"string"),o(s,"string"),e.string=s;function l(v){return t.call(v)==="[object Number]"}i(l,"number"),o(l,"number"),e.number=l;function u(v,T,w){return t.call(v)==="[object Number]"&&T<=v&&v<=w}i(u,"numberRange"),o(u,"numberRange"),e.numberRange=u;function c(v){return t.call(v)==="[object Number]"&&-2147483648<=v&&v<=2147483647}i(c,"integer2"),o(c,"integer"),e.integer=c;function f(v){return t.call(v)==="[object Number]"&&0<=v&&v<=2147483647}i(f,"uinteger2"),o(f,"uinteger"),e.uinteger=f;function d(v){return t.call(v)==="[object Function]"}i(d,"func"),o(d,"func"),e.func=d;function p(v){return v!==null&&typeof v=="object"}i(p,"objectLiteral"),o(p,"objectLiteral"),e.objectLiteral=p;function m(v,T){return Array.isArray(v)&&v.every(T)}i(m,"typedArray"),o(m,"typedArray"),e.typedArray=m})(A||(A={}))}}),_n=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t;function r(){if(t===void 0)throw new Error("No runtime abstraction layer installed");return t}i(r,"RAL"),o(r,"RAL"),(function(n){function a(s){if(s===void 0)throw new Error("No runtime abstraction layer provided");t=s}i(a,"install"),o(a,"install"),n.install=a})(r||(r={})),e.default=r}}),vs=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(c){return c===!0||c===!1}i(t,"boolean"),o(t,"boolean"),e.boolean=t;function r(c){return typeof c=="string"||c instanceof String}i(r,"string"),o(r,"string"),e.string=r;function n(c){return typeof c=="number"||c instanceof Number}i(n,"number"),o(n,"number"),e.number=n;function a(c){return c instanceof Error}i(a,"error"),o(a,"error"),e.error=a;function s(c){return typeof c=="function"}i(s,"func"),o(s,"func"),e.func=s;function l(c){return Array.isArray(c)}i(l,"array"),o(l,"array"),e.array=l;function u(c){return l(c)&&c.every(f=>r(f))}i(u,"stringArray"),o(u,"stringArray"),e.stringArray=u}}),Fa=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Emitter=e.Event=void 0;var t=_n(),r;(function(s){let l={dispose(){}};s.None=function(){return l}})(r||(e.Event=r={}));var n=class{static{i(this,"CallbackList")}static{o(this,"CallbackList")}add(s,l=null,u){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(s),this._contexts.push(l),Array.isArray(u)&&u.push({dispose:o(()=>this.remove(s,l),"dispose")})}remove(s,l=null){if(!this._callbacks)return;let u=!1;for(let c=0,f=this._callbacks.length;c{this._callbacks||(this._callbacks=new n),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(l,u);let f={dispose:o(()=>{this._callbacks&&(this._callbacks.remove(l,u),f.dispose=vg._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(c)&&c.push(f),f}),this._event}fire(l){this._callbacks&&this._callbacks.invoke.call(this._callbacks,l)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};e.Emitter=a,a._noop=function(){}}}),yl=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;var t=_n(),r=vs(),n=Fa(),a;(function(c){c.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:n.Event.None}),c.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:n.Event.None});function f(d){let p=d;return p&&(p===c.None||p===c.Cancelled||r.boolean(p.isCancellationRequested)&&!!p.onCancellationRequested)}i(f,"is"),o(f,"is"),c.is=f})(a||(e.CancellationToken=a={}));var s=Object.freeze(function(c,f){let d=(0,t.default)().timer.setTimeout(c.bind(f),0);return{dispose(){d.dispose()}}}),l=class{static{i(this,"MutableToken")}static{o(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?s:(this._emitter||(this._emitter=new n.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},u=class{static{i(this,"CancellationTokenSource3")}static{o(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new l),this._token}cancel(){this._token?this._token.cancel():this._token=a.Cancelled}dispose(){this._token?this._token instanceof l&&this._token.dispose():this._token=a.None}};e.CancellationTokenSource=u}}),Tg=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Message=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType=e.RequestType0=e.AbstractMessageSignature=e.ParameterStructures=e.ResponseError=e.ErrorCodes=void 0;var t=vs(),r;(function(y){y.ParseError=-32700,y.InvalidRequest=-32600,y.MethodNotFound=-32601,y.InvalidParams=-32602,y.InternalError=-32603,y.jsonrpcReservedErrorRangeStart=-32099,y.serverErrorStart=-32099,y.MessageWriteError=-32099,y.MessageReadError=-32098,y.PendingResponseRejected=-32097,y.ConnectionInactive=-32096,y.ServerNotInitialized=-32002,y.UnknownErrorCode=-32001,y.jsonrpcReservedErrorRangeEnd=-32e3,y.serverErrorEnd=-32e3})(r||(e.ErrorCodes=r={}));var n=class Rg extends Error{static{i(this,"_ResponseError")}static{o(this,"ResponseError")}constructor(E,R,$){super(R),this.code=t.number(E)?E:r.UnknownErrorCode,this.data=$,Object.setPrototypeOf(this,Rg.prototype)}toJson(){let E={code:this.code,message:this.message};return this.data!==void 0&&(E.data=this.data),E}};e.ResponseError=n;var a=class uo{static{i(this,"_ParameterStructures")}static{o(this,"ParameterStructures")}constructor(E){this.kind=E}static is(E){return E===uo.auto||E===uo.byName||E===uo.byPosition}toString(){return this.kind}};e.ParameterStructures=a,a.auto=new a("auto"),a.byPosition=new a("byPosition"),a.byName=new a("byName");var s=class{static{i(this,"AbstractMessageSignature")}static{o(this,"AbstractMessageSignature")}constructor(y,E){this.method=y,this.numberOfParams=E}get parameterStructures(){return a.auto}};e.AbstractMessageSignature=s;var l=class extends s{static{i(this,"RequestType0")}static{o(this,"RequestType0")}constructor(y){super(y,0)}};e.RequestType0=l;var u=class extends s{static{i(this,"RequestType")}static{o(this,"RequestType")}constructor(y,E=a.auto){super(y,1),this._parameterStructures=E}get parameterStructures(){return this._parameterStructures}};e.RequestType=u;var c=class extends s{static{i(this,"RequestType1")}static{o(this,"RequestType1")}constructor(y,E=a.auto){super(y,1),this._parameterStructures=E}get parameterStructures(){return this._parameterStructures}};e.RequestType1=c;var f=class extends s{static{i(this,"RequestType2")}static{o(this,"RequestType2")}constructor(y){super(y,2)}};e.RequestType2=f;var d=class extends s{static{i(this,"RequestType3")}static{o(this,"RequestType3")}constructor(y){super(y,3)}};e.RequestType3=d;var p=class extends s{static{i(this,"RequestType4")}static{o(this,"RequestType4")}constructor(y){super(y,4)}};e.RequestType4=p;var m=class extends s{static{i(this,"RequestType5")}static{o(this,"RequestType5")}constructor(y){super(y,5)}};e.RequestType5=m;var v=class extends s{static{i(this,"RequestType6")}static{o(this,"RequestType6")}constructor(y){super(y,6)}};e.RequestType6=v;var T=class extends s{static{i(this,"RequestType7")}static{o(this,"RequestType7")}constructor(y){super(y,7)}};e.RequestType7=T;var w=class extends s{static{i(this,"RequestType8")}static{o(this,"RequestType8")}constructor(y){super(y,8)}};e.RequestType8=w;var N=class extends s{static{i(this,"RequestType9")}static{o(this,"RequestType9")}constructor(y){super(y,9)}};e.RequestType9=N;var I=class extends s{static{i(this,"NotificationType")}static{o(this,"NotificationType")}constructor(y,E=a.auto){super(y,1),this._parameterStructures=E}get parameterStructures(){return this._parameterStructures}};e.NotificationType=I;var S=class extends s{static{i(this,"NotificationType0")}static{o(this,"NotificationType0")}constructor(y){super(y,0)}};e.NotificationType0=S;var _=class extends s{static{i(this,"NotificationType1")}static{o(this,"NotificationType1")}constructor(y,E=a.auto){super(y,1),this._parameterStructures=E}get parameterStructures(){return this._parameterStructures}};e.NotificationType1=_;var P=class extends s{static{i(this,"NotificationType2")}static{o(this,"NotificationType2")}constructor(y){super(y,2)}};e.NotificationType2=P;var j=class extends s{static{i(this,"NotificationType3")}static{o(this,"NotificationType3")}constructor(y){super(y,3)}};e.NotificationType3=j;var ee=class extends s{static{i(this,"NotificationType4")}static{o(this,"NotificationType4")}constructor(y){super(y,4)}};e.NotificationType4=ee;var X=class extends s{static{i(this,"NotificationType5")}static{o(this,"NotificationType5")}constructor(y){super(y,5)}};e.NotificationType5=X;var ce=class extends s{static{i(this,"NotificationType6")}static{o(this,"NotificationType6")}constructor(y){super(y,6)}};e.NotificationType6=ce;var me=class extends s{static{i(this,"NotificationType7")}static{o(this,"NotificationType7")}constructor(y){super(y,7)}};e.NotificationType7=me;var Re=class extends s{static{i(this,"NotificationType8")}static{o(this,"NotificationType8")}constructor(y){super(y,8)}};e.NotificationType8=Re;var O=class extends s{static{i(this,"NotificationType9")}static{o(this,"NotificationType9")}constructor(y){super(y,9)}};e.NotificationType9=O;var C;(function(y){function E(b){let L=b;return L&&t.string(L.method)&&(t.string(L.id)||t.number(L.id))}i(E,"isRequest"),o(E,"isRequest"),y.isRequest=E;function R(b){let L=b;return L&&t.string(L.method)&&b.id===void 0}i(R,"isNotification"),o(R,"isNotification"),y.isNotification=R;function $(b){let L=b;return L&&(L.result!==void 0||!!L.error)&&(t.string(L.id)||t.number(L.id)||L.id===null)}i($,"isResponse"),o($,"isResponse"),y.isResponse=$})(C||(e.Message=C={}))}}),$g=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js"(e){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=e.LinkedMap=e.Touch=void 0;var r;(function(s){s.None=0,s.First=1,s.AsOld=s.First,s.Last=2,s.AsNew=s.Last})(r||(e.Touch=r={}));var n=class{static{i(this,"LinkedMap")}static{o(this,"LinkedMap")}constructor(){this[t]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(s){return this._map.has(s)}get(s,l=r.None){let u=this._map.get(s);if(u)return l!==r.None&&this.touch(u,l),u.value}set(s,l,u=r.None){let c=this._map.get(s);if(c)c.value=l,u!==r.None&&this.touch(c,u);else{switch(c={key:s,value:l,next:void 0,previous:void 0},u){case r.None:this.addItemLast(c);break;case r.First:this.addItemFirst(c);break;case r.Last:this.addItemLast(c);break;default:this.addItemLast(c);break}this._map.set(s,c),this._size++}return this}delete(s){return!!this.remove(s)}remove(s){let l=this._map.get(s);if(l)return this._map.delete(s),this.removeItem(l),this._size--,l.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let s=this._head;return this._map.delete(s.key),this.removeItem(s),this._size--,s.value}forEach(s,l){let u=this._state,c=this._head;for(;c;){if(l?s.bind(l)(c.value,c.key,this):s(c.value,c.key,this),this._state!==u)throw new Error("LinkedMap got modified during iteration.");c=c.next}}keys(){let s=this._state,l=this._head,u={[Symbol.iterator]:()=>u,next:o(()=>{if(this._state!==s)throw new Error("LinkedMap got modified during iteration.");if(l){let c={value:l.key,done:!1};return l=l.next,c}else return{value:void 0,done:!0}},"next")};return u}values(){let s=this._state,l=this._head,u={[Symbol.iterator]:()=>u,next:o(()=>{if(this._state!==s)throw new Error("LinkedMap got modified during iteration.");if(l){let c={value:l.value,done:!1};return l=l.next,c}else return{value:void 0,done:!0}},"next")};return u}entries(){let s=this._state,l=this._head,u={[Symbol.iterator]:()=>u,next:o(()=>{if(this._state!==s)throw new Error("LinkedMap got modified during iteration.");if(l){let c={value:[l.key,l.value],done:!1};return l=l.next,c}else return{value:void 0,done:!0}},"next")};return u}[(t=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(s){if(s>=this.size)return;if(s===0){this.clear();return}let l=this._head,u=this.size;for(;l&&u>s;)this._map.delete(l.key),l=l.next,u--;this._head=l,this._size=u,l&&(l.previous=void 0),this._state++}addItemFirst(s){if(!this._head&&!this._tail)this._tail=s;else if(this._head)s.next=this._head,this._head.previous=s;else throw new Error("Invalid list");this._head=s,this._state++}addItemLast(s){if(!this._head&&!this._tail)this._head=s;else if(this._tail)s.previous=this._tail,this._tail.next=s;else throw new Error("Invalid list");this._tail=s,this._state++}removeItem(s){if(s===this._head&&s===this._tail)this._head=void 0,this._tail=void 0;else if(s===this._head){if(!s.next)throw new Error("Invalid list");s.next.previous=void 0,this._head=s.next}else if(s===this._tail){if(!s.previous)throw new Error("Invalid list");s.previous.next=void 0,this._tail=s.previous}else{let l=s.next,u=s.previous;if(!l||!u)throw new Error("Invalid list");l.previous=u,u.next=l}s.next=void 0,s.previous=void 0,this._state++}touch(s,l){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(l!==r.First&&l!==r.Last)){if(l===r.First){if(s===this._head)return;let u=s.next,c=s.previous;s===this._tail?(c.next=void 0,this._tail=c):(u.previous=c,c.next=u),s.previous=void 0,s.next=this._head,this._head.previous=s,this._head=s,this._state++}else if(l===r.Last){if(s===this._tail)return;let u=s.next,c=s.previous;s===this._head?(u.previous=void 0,this._head=u):(u.previous=c,c.next=u),s.next=void 0,s.previous=this._tail,this._tail.next=s,this._tail=s,this._state++}}}toJSON(){let s=[];return this.forEach((l,u)=>{s.push([u,l])}),s}fromJSON(s){this.clear();for(let[l,u]of s)this.set(l,u)}};e.LinkedMap=n;var a=class extends n{static{i(this,"LRUCache")}static{o(this,"LRUCache")}constructor(s,l=1){super(),this._limit=s,this._ratio=Math.min(Math.max(0,l),1)}get limit(){return this._limit}set limit(s){this._limit=s,this.checkTrim()}get ratio(){return this._ratio}set ratio(s){this._ratio=Math.min(Math.max(0,s),1),this.checkTrim()}get(s,l=r.AsNew){return super.get(s,l)}peek(s){return super.get(s,r.None)}set(s,l){return super.set(s,l,r.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};e.LRUCache=a}}),bS=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Disposable=void 0;var t;(function(r){function n(a){return{dispose:a}}i(n,"create"),o(n,"create"),r.create=n})(t||(e.Disposable=t={}))}}),SS=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=void 0;var t=yl(),r;(function(u){u.Continue=0,u.Cancelled=1})(r||(r={}));var n=class{static{i(this,"SharedArraySenderStrategy")}static{o(this,"SharedArraySenderStrategy")}constructor(){this.buffers=new Map}enableCancellation(u){if(u.id===null)return;let c=new SharedArrayBuffer(4),f=new Int32Array(c,0,1);f[0]=r.Continue,this.buffers.set(u.id,c),u.$cancellationData=c}async sendCancellation(u,c){let f=this.buffers.get(c);if(f===void 0)return;let d=new Int32Array(f,0,1);Atomics.store(d,0,r.Cancelled)}cleanup(u){this.buffers.delete(u)}dispose(){this.buffers.clear()}};e.SharedArraySenderStrategy=n;var a=class{static{i(this,"SharedArrayBufferCancellationToken")}static{o(this,"SharedArrayBufferCancellationToken")}constructor(u){this.data=new Int32Array(u,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===r.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},s=class{static{i(this,"SharedArrayBufferCancellationTokenSource")}static{o(this,"SharedArrayBufferCancellationTokenSource")}constructor(u){this.token=new a(u)}cancel(){}dispose(){}},l=class{static{i(this,"SharedArrayReceiverStrategy")}static{o(this,"SharedArrayReceiverStrategy")}constructor(){this.kind="request"}createCancellationTokenSource(u){let c=u.$cancellationData;return c===void 0?new t.CancellationTokenSource:new s(c)}};e.SharedArrayReceiverStrategy=l}}),Ag=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Semaphore=void 0;var t=_n(),r=class{static{i(this,"Semaphore")}static{o(this,"Semaphore")}constructor(n=1){if(n<=0)throw new Error("Capacity must be greater than 0");this._capacity=n,this._active=0,this._waiting=[]}lock(n){return new Promise((a,s)=>{this._waiting.push({thunk:n,resolve:a,reject:s}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,t.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let n=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let a=n.thunk();a instanceof Promise?a.then(s=>{this._active--,n.resolve(s),this.runNext()},s=>{this._active--,n.reject(s),this.runNext()}):(this._active--,n.resolve(a),this.runNext())}catch(a){this._active--,n.reject(a),this.runNext()}}};e.Semaphore=r}}),wS=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=void 0;var t=_n(),r=vs(),n=Fa(),a=Ag(),s;(function(f){function d(p){let m=p;return m&&r.func(m.listen)&&r.func(m.dispose)&&r.func(m.onError)&&r.func(m.onClose)&&r.func(m.onPartialMessage)}i(d,"is"),o(d,"is"),f.is=d})(s||(e.MessageReader=s={}));var l=class{static{i(this,"AbstractMessageReader")}static{o(this,"AbstractMessageReader")}constructor(){this.errorEmitter=new n.Emitter,this.closeEmitter=new n.Emitter,this.partialMessageEmitter=new n.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(f){this.errorEmitter.fire(this.asError(f))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(f){this.partialMessageEmitter.fire(f)}asError(f){return f instanceof Error?f:new Error(`Reader received error. Reason: ${r.string(f.message)?f.message:"unknown"}`)}};e.AbstractMessageReader=l;var u;(function(f){function d(p){let m,v,T,w=new Map,N,I=new Map;if(p===void 0||typeof p=="string")m=p??"utf-8";else{if(m=p.charset??"utf-8",p.contentDecoder!==void 0&&(T=p.contentDecoder,w.set(T.name,T)),p.contentDecoders!==void 0)for(let S of p.contentDecoders)w.set(S.name,S);if(p.contentTypeDecoder!==void 0&&(N=p.contentTypeDecoder,I.set(N.name,N)),p.contentTypeDecoders!==void 0)for(let S of p.contentTypeDecoders)I.set(S.name,S)}return N===void 0&&(N=(0,t.default)().applicationJson.decoder,I.set(N.name,N)),{charset:m,contentDecoder:T,contentDecoders:w,contentTypeDecoder:N,contentTypeDecoders:I}}i(d,"fromOptions"),o(d,"fromOptions"),f.fromOptions=d})(u||(u={}));var c=class extends l{static{i(this,"ReadableStreamMessageReader")}static{o(this,"ReadableStreamMessageReader")}constructor(f,d){super(),this.readable=f,this.options=u.fromOptions(d),this.buffer=(0,t.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new a.Semaphore(1)}set partialMessageTimeout(f){this._partialMessageTimeout=f}get partialMessageTimeout(){return this._partialMessageTimeout}listen(f){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=f;let d=this.readable.onData(p=>{this.onData(p)});return this.readable.onError(p=>this.fireError(p)),this.readable.onClose(()=>this.fireClose()),d}onData(f){try{for(this.buffer.append(f);;){if(this.nextMessageLength===-1){let p=this.buffer.tryReadHeaders(!0);if(!p)return;let m=p.get("content-length");if(!m){this.fireError(new Error(`Header must provide a Content-Length property. +${JSON.stringify(Object.fromEntries(p))}`));return}let v=parseInt(m);if(isNaN(v)){this.fireError(new Error(`Content-Length value must be a number. Got ${m}`));return}this.nextMessageLength=v}let d=this.buffer.tryReadBody(this.nextMessageLength);if(d===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let p=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(d):d,m=await this.options.contentTypeDecoder.decode(p,this.options);this.callback(m)}).catch(p=>{this.fireError(p)})}}catch(d){this.fireError(d)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,t.default)().timer.setTimeout((f,d)=>{this.partialMessageTimer=void 0,f===this.messageToken&&(this.firePartialMessage({messageToken:f,waitingTime:d}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};e.ReadableStreamMessageReader=c}}),IS=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=void 0;var t=_n(),r=vs(),n=Ag(),a=Fa(),s="Content-Length: ",l=`\r +`,u;(function(p){function m(v){let T=v;return T&&r.func(T.dispose)&&r.func(T.onClose)&&r.func(T.onError)&&r.func(T.write)}i(m,"is"),o(m,"is"),p.is=m})(u||(e.MessageWriter=u={}));var c=class{static{i(this,"AbstractMessageWriter")}static{o(this,"AbstractMessageWriter")}constructor(){this.errorEmitter=new a.Emitter,this.closeEmitter=new a.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(p,m,v){this.errorEmitter.fire([this.asError(p),m,v])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(p){return p instanceof Error?p:new Error(`Writer received error. Reason: ${r.string(p.message)?p.message:"unknown"}`)}};e.AbstractMessageWriter=c;var f;(function(p){function m(v){return v===void 0||typeof v=="string"?{charset:v??"utf-8",contentTypeEncoder:(0,t.default)().applicationJson.encoder}:{charset:v.charset??"utf-8",contentEncoder:v.contentEncoder,contentTypeEncoder:v.contentTypeEncoder??(0,t.default)().applicationJson.encoder}}i(m,"fromOptions"),o(m,"fromOptions"),p.fromOptions=m})(f||(f={}));var d=class extends c{static{i(this,"WriteableStreamMessageWriter")}static{o(this,"WriteableStreamMessageWriter")}constructor(p,m){super(),this.writable=p,this.options=f.fromOptions(m),this.errorCount=0,this.writeSemaphore=new n.Semaphore(1),this.writable.onError(v=>this.fireError(v)),this.writable.onClose(()=>this.fireClose())}async write(p){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(p,this.options).then(v=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(v):v).then(v=>{let T=[];return T.push(s,v.byteLength.toString(),l),T.push(l),this.doWrite(p,T,v)},v=>{throw this.fireError(v),v}))}async doWrite(p,m,v){try{return await this.writable.write(m.join(""),"ascii"),this.writable.write(v)}catch(T){return this.handleError(T,p),Promise.reject(T)}}handleError(p,m){this.errorCount++,this.fireError(p,m,this.errorCount)}end(){this.writable.end()}};e.WriteableStreamMessageWriter=d}}),NS=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractMessageBuffer=void 0;var t=13,r=10,n=`\r +`,a=class{static{i(this,"AbstractMessageBuffer")}static{o(this,"AbstractMessageBuffer")}constructor(s="utf-8"){this._encoding=s,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(s){let l=typeof s=="string"?this.fromString(s,this._encoding):s;this._chunks.push(l),this._totalLength+=l.byteLength}tryReadHeaders(s=!1){if(this._chunks.length===0)return;let l=0,u=0,c=0,f=0;e:for(;uthis._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===s){let f=this._chunks[0];return this._chunks.shift(),this._totalLength-=s,this.asNative(f)}if(this._chunks[0].byteLength>s){let f=this._chunks[0],d=this.asNative(f,s);return this._chunks[0]=f.slice(s),this._totalLength-=s,d}let l=this.allocNative(s),u=0,c=0;for(;s>0;){let f=this._chunks[c];if(f.byteLength>s){let d=f.slice(0,s);l.set(d,u),u+=s,this._chunks[c]=f.slice(s),this._totalLength-=s,s-=s}else l.set(f,u),u+=f.byteLength,this._chunks.shift(),this._totalLength-=f.byteLength,s-=f.byteLength}return l}};e.AbstractMessageBuffer=a}}),kS=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.ConnectionOptions=e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.RequestCancellationReceiverStrategy=e.IdCancellationReceiverStrategy=e.ConnectionStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=e.NullLogger=e.ProgressType=e.ProgressToken=void 0;var t=_n(),r=vs(),n=Tg(),a=$g(),s=Fa(),l=yl(),u;(function(y){y.type=new n.NotificationType("$/cancelRequest")})(u||(u={}));var c;(function(y){function E(R){return typeof R=="string"||typeof R=="number"}i(E,"is"),o(E,"is"),y.is=E})(c||(e.ProgressToken=c={}));var f;(function(y){y.type=new n.NotificationType("$/progress")})(f||(f={}));var d=class{static{i(this,"ProgressType")}static{o(this,"ProgressType")}constructor(){}};e.ProgressType=d;var p;(function(y){function E(R){return r.func(R)}i(E,"is"),o(E,"is"),y.is=E})(p||(p={})),e.NullLogger=Object.freeze({error:o(()=>{},"error"),warn:o(()=>{},"warn"),info:o(()=>{},"info"),log:o(()=>{},"log")});var m;(function(y){y[y.Off=0]="Off",y[y.Messages=1]="Messages",y[y.Compact=2]="Compact",y[y.Verbose=3]="Verbose"})(m||(e.Trace=m={}));var v;(function(y){y.Off="off",y.Messages="messages",y.Compact="compact",y.Verbose="verbose"})(v||(e.TraceValues=v={})),(function(y){function E($){if(!r.string($))return y.Off;switch($=$.toLowerCase(),$){case"off":return y.Off;case"messages":return y.Messages;case"compact":return y.Compact;case"verbose":return y.Verbose;default:return y.Off}}i(E,"fromString"),o(E,"fromString"),y.fromString=E;function R($){switch($){case y.Off:return"off";case y.Messages:return"messages";case y.Compact:return"compact";case y.Verbose:return"verbose";default:return"off"}}i(R,"toString4"),o(R,"toString"),y.toString=R})(m||(e.Trace=m={}));var T;(function(y){y.Text="text",y.JSON="json"})(T||(e.TraceFormat=T={})),(function(y){function E(R){return r.string(R)?(R=R.toLowerCase(),R==="json"?y.JSON:y.Text):y.Text}i(E,"fromString"),o(E,"fromString"),y.fromString=E})(T||(e.TraceFormat=T={}));var w;(function(y){y.type=new n.NotificationType("$/setTrace")})(w||(e.SetTraceNotification=w={}));var N;(function(y){y.type=new n.NotificationType("$/logTrace")})(N||(e.LogTraceNotification=N={}));var I;(function(y){y[y.Closed=1]="Closed",y[y.Disposed=2]="Disposed",y[y.AlreadyListening=3]="AlreadyListening"})(I||(e.ConnectionErrors=I={}));var S=class Eg extends Error{static{i(this,"_ConnectionError")}static{o(this,"ConnectionError")}constructor(E,R){super(R),this.code=E,Object.setPrototypeOf(this,Eg.prototype)}};e.ConnectionError=S;var _;(function(y){function E(R){let $=R;return $&&r.func($.cancelUndispatched)}i(E,"is"),o(E,"is"),y.is=E})(_||(e.ConnectionStrategy=_={}));var P;(function(y){function E(R){let $=R;return $&&($.kind===void 0||$.kind==="id")&&r.func($.createCancellationTokenSource)&&($.dispose===void 0||r.func($.dispose))}i(E,"is"),o(E,"is"),y.is=E})(P||(e.IdCancellationReceiverStrategy=P={}));var j;(function(y){function E(R){let $=R;return $&&$.kind==="request"&&r.func($.createCancellationTokenSource)&&($.dispose===void 0||r.func($.dispose))}i(E,"is"),o(E,"is"),y.is=E})(j||(e.RequestCancellationReceiverStrategy=j={}));var ee;(function(y){y.Message=Object.freeze({createCancellationTokenSource(R){return new l.CancellationTokenSource}});function E(R){return P.is(R)||j.is(R)}i(E,"is"),o(E,"is"),y.is=E})(ee||(e.CancellationReceiverStrategy=ee={}));var X;(function(y){y.Message=Object.freeze({sendCancellation(R,$){return R.sendNotification(u.type,{id:$})},cleanup(R){}});function E(R){let $=R;return $&&r.func($.sendCancellation)&&r.func($.cleanup)}i(E,"is"),o(E,"is"),y.is=E})(X||(e.CancellationSenderStrategy=X={}));var ce;(function(y){y.Message=Object.freeze({receiver:ee.Message,sender:X.Message});function E(R){let $=R;return $&&ee.is($.receiver)&&X.is($.sender)}i(E,"is"),o(E,"is"),y.is=E})(ce||(e.CancellationStrategy=ce={}));var me;(function(y){function E(R){let $=R;return $&&r.func($.handleMessage)}i(E,"is"),o(E,"is"),y.is=E})(me||(e.MessageStrategy=me={}));var Re;(function(y){function E(R){let $=R;return $&&(ce.is($.cancellationStrategy)||_.is($.connectionStrategy)||me.is($.messageStrategy))}i(E,"is"),o(E,"is"),y.is=E})(Re||(e.ConnectionOptions=Re={}));var O;(function(y){y[y.New=1]="New",y[y.Listening=2]="Listening",y[y.Closed=3]="Closed",y[y.Disposed=4]="Disposed"})(O||(O={}));function C(y,E,R,$){let b=R!==void 0?R:e.NullLogger,L=0,x=0,M=0,U="2.0",W,le=new Map,H,Oe=new Map,ie=new Map,Le,Ue=new a.LinkedMap,$e=new Map,ze=new Set,Ie=new Map,J=m.Off,Ge=T.Text,fe,at=O.New,qn=new s.Emitter,Ha=new s.Emitter,Ya=new s.Emitter,Xa=new s.Emitter,Ja=new s.Emitter,St=$&&$.cancellationStrategy?$.cancellationStrategy:ce.Message;function Wn(g){if(g===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+g.toString()}i(Wn,"createRequestQueueKey"),o(Wn,"createRequestQueueKey");function Za(g){return g===null?"res-unknown-"+(++M).toString():"res-"+g.toString()}i(Za,"createResponseQueueKey"),o(Za,"createResponseQueueKey");function Qa(){return"not-"+(++x).toString()}i(Qa,"createNotificationQueueKey"),o(Qa,"createNotificationQueueKey");function ei(g,k){n.Message.isRequest(k)?g.set(Wn(k.id),k):n.Message.isResponse(k)?g.set(Za(k.id),k):g.set(Qa(),k)}i(ei,"addMessageToQueue"),o(ei,"addMessageToQueue");function ti(g){}i(ti,"cancelUndispatched"),o(ti,"cancelUndispatched");function Vn(){return at===O.Listening}i(Vn,"isListening"),o(Vn,"isListening");function Hn(){return at===O.Closed}i(Hn,"isClosed"),o(Hn,"isClosed");function Ft(){return at===O.Disposed}i(Ft,"isDisposed"),o(Ft,"isDisposed");function Yn(){(at===O.New||at===O.Listening)&&(at=O.Closed,Ha.fire(void 0))}i(Yn,"closeHandler"),o(Yn,"closeHandler");function ri(g){qn.fire([g,void 0,void 0])}i(ri,"readErrorHandler"),o(ri,"readErrorHandler");function ni(g){qn.fire(g)}i(ni,"writeErrorHandler"),o(ni,"writeErrorHandler"),y.onClose(Yn),y.onError(ri),E.onClose(Yn),E.onError(ni);function Xn(){Le||Ue.size===0||(Le=(0,t.default)().timer.setImmediate(()=>{Le=void 0,ai()}))}i(Xn,"triggerMessageQueue"),o(Xn,"triggerMessageQueue");function Jn(g){n.Message.isRequest(g)?ii(g):n.Message.isNotification(g)?oi(g):n.Message.isResponse(g)?si(g):li(g)}i(Jn,"handleMessage"),o(Jn,"handleMessage");function ai(){if(Ue.size===0)return;let g=Ue.shift();try{let k=$?.messageStrategy;me.is(k)?k.handleMessage(g,Jn):Jn(g)}finally{Xn()}}i(ai,"processMessageQueue"),o(ai,"processMessageQueue");let xs=o(g=>{try{if(n.Message.isNotification(g)&&g.method===u.type.method){let k=g.params.id,D=Wn(k),F=Ue.get(D);if(n.Message.isRequest(F)){let ue=$?.connectionStrategy,be=ue&&ue.cancelUndispatched?ue.cancelUndispatched(F,ti):void 0;if(be&&(be.error!==void 0||be.result!==void 0)){Ue.delete(D),Ie.delete(k),be.id=F.id,Cr(be,g.method,Date.now()),E.write(be).catch(()=>b.error("Sending response for canceled message failed."));return}}let ge=Ie.get(k);if(ge!==void 0){ge.cancel(),zr(g);return}else ze.add(k)}ei(Ue,g)}finally{Xn()}},"callback");function ii(g){if(Ft())return;function k(te,Ee,se){let De={jsonrpc:U,id:g.id};te instanceof n.ResponseError?De.error=te.toJson():De.result=te===void 0?null:te,Cr(De,Ee,se),E.write(De).catch(()=>b.error("Sending response failed."))}i(k,"reply"),o(k,"reply");function D(te,Ee,se){let De={jsonrpc:U,id:g.id,error:te.toJson()};Cr(De,Ee,se),E.write(De).catch(()=>b.error("Sending response failed."))}i(D,"replyError"),o(D,"replyError");function F(te,Ee,se){te===void 0&&(te=null);let De={jsonrpc:U,id:g.id,result:te};Cr(De,Ee,se),E.write(De).catch(()=>b.error("Sending response failed."))}i(F,"replySuccess"),o(F,"replySuccess"),fi(g);let ge=le.get(g.method),ue,be;ge&&(ue=ge.type,be=ge.handler);let Ne=Date.now();if(be||W){let te=g.id??String(Date.now()),Ee=P.is(St.receiver)?St.receiver.createCancellationTokenSource(te):St.receiver.createCancellationTokenSource(g);g.id!==null&&ze.has(g.id)&&Ee.cancel(),g.id!==null&&Ie.set(te,Ee);try{let se;if(be)if(g.params===void 0){if(ue!==void 0&&ue.numberOfParams!==0){D(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${g.method} defines ${ue.numberOfParams} params but received none.`),g.method,Ne);return}se=be(Ee.token)}else if(Array.isArray(g.params)){if(ue!==void 0&&ue.parameterStructures===n.ParameterStructures.byName){D(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${g.method} defines parameters by name but received parameters by position`),g.method,Ne);return}se=be(...g.params,Ee.token)}else{if(ue!==void 0&&ue.parameterStructures===n.ParameterStructures.byPosition){D(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${g.method} defines parameters by position but received parameters by name`),g.method,Ne);return}se=be(g.params,Ee.token)}else W&&(se=W(g.method,g.params,Ee.token));let De=se;se?De.then?De.then(He=>{Ie.delete(te),k(He,g.method,Ne)},He=>{Ie.delete(te),He instanceof n.ResponseError?D(He,g.method,Ne):He&&r.string(He.message)?D(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${g.method} failed with message: ${He.message}`),g.method,Ne):D(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${g.method} failed unexpectedly without providing any details.`),g.method,Ne)}):(Ie.delete(te),k(se,g.method,Ne)):(Ie.delete(te),F(se,g.method,Ne))}catch(se){Ie.delete(te),se instanceof n.ResponseError?k(se,g.method,Ne):se&&r.string(se.message)?D(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${g.method} failed with message: ${se.message}`),g.method,Ne):D(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${g.method} failed unexpectedly without providing any details.`),g.method,Ne)}}else D(new n.ResponseError(n.ErrorCodes.MethodNotFound,`Unhandled method ${g.method}`),g.method,Ne)}i(ii,"handleRequest"),o(ii,"handleRequest");function si(g){if(!Ft())if(g.id===null)g.error?b.error(`Received response message without id: Error is: +${JSON.stringify(g.error,void 0,4)}`):b.error("Received response message without id. No further error information provided.");else{let k=g.id,D=$e.get(k);if(di(g,D),D!==void 0){$e.delete(k);try{if(g.error){let F=g.error;D.reject(new n.ResponseError(F.code,F.message,F.data))}else if(g.result!==void 0)D.resolve(g.result);else throw new Error("Should never happen.")}catch(F){F.message?b.error(`Response handler '${D.method}' failed with message: ${F.message}`):b.error(`Response handler '${D.method}' failed unexpectedly.`)}}}}i(si,"handleResponse"),o(si,"handleResponse");function oi(g){if(Ft())return;let k,D;if(g.method===u.type.method){let F=g.params.id;ze.delete(F),zr(g);return}else{let F=Oe.get(g.method);F&&(D=F.handler,k=F.type)}if(D||H)try{if(zr(g),D)if(g.params===void 0)k!==void 0&&k.numberOfParams!==0&&k.parameterStructures!==n.ParameterStructures.byName&&b.error(`Notification ${g.method} defines ${k.numberOfParams} params but received none.`),D();else if(Array.isArray(g.params)){let F=g.params;g.method===f.type.method&&F.length===2&&c.is(F[0])?D({token:F[0],value:F[1]}):(k!==void 0&&(k.parameterStructures===n.ParameterStructures.byName&&b.error(`Notification ${g.method} defines parameters by name but received parameters by position`),k.numberOfParams!==g.params.length&&b.error(`Notification ${g.method} defines ${k.numberOfParams} params but received ${F.length} arguments`)),D(...F))}else k!==void 0&&k.parameterStructures===n.ParameterStructures.byPosition&&b.error(`Notification ${g.method} defines parameters by position but received parameters by name`),D(g.params);else H&&H(g.method,g.params)}catch(F){F.message?b.error(`Notification handler '${g.method}' failed with message: ${F.message}`):b.error(`Notification handler '${g.method}' failed unexpectedly.`)}else Ya.fire(g)}i(oi,"handleNotification"),o(oi,"handleNotification");function li(g){if(!g){b.error("Received empty message.");return}b.error(`Received message which is neither a response nor a notification message: +${JSON.stringify(g,null,4)}`);let k=g;if(r.string(k.id)||r.number(k.id)){let D=k.id,F=$e.get(D);F&&F.reject(new Error("The received response has neither a result nor an error property."))}}i(li,"handleInvalidMessage"),o(li,"handleInvalidMessage");function Rt(g){if(g!=null)switch(J){case m.Verbose:return JSON.stringify(g,null,4);case m.Compact:return JSON.stringify(g);default:return}}i(Rt,"stringifyTrace"),o(Rt,"stringifyTrace");function ui(g){if(!(J===m.Off||!fe))if(Ge===T.Text){let k;(J===m.Verbose||J===m.Compact)&&g.params&&(k=`Params: ${Rt(g.params)} + +`),fe.log(`Sending request '${g.method} - (${g.id})'.`,k)}else Gt("send-request",g)}i(ui,"traceSendingRequest"),o(ui,"traceSendingRequest");function ci(g){if(!(J===m.Off||!fe))if(Ge===T.Text){let k;(J===m.Verbose||J===m.Compact)&&(g.params?k=`Params: ${Rt(g.params)} + +`:k=`No parameters provided. + +`),fe.log(`Sending notification '${g.method}'.`,k)}else Gt("send-notification",g)}i(ci,"traceSendingNotification"),o(ci,"traceSendingNotification");function Cr(g,k,D){if(!(J===m.Off||!fe))if(Ge===T.Text){let F;(J===m.Verbose||J===m.Compact)&&(g.error&&g.error.data?F=`Error data: ${Rt(g.error.data)} + +`:g.result?F=`Result: ${Rt(g.result)} + +`:g.error===void 0&&(F=`No result returned. + +`)),fe.log(`Sending response '${k} - (${g.id})'. Processing request took ${Date.now()-D}ms`,F)}else Gt("send-response",g)}i(Cr,"traceSendingResponse"),o(Cr,"traceSendingResponse");function fi(g){if(!(J===m.Off||!fe))if(Ge===T.Text){let k;(J===m.Verbose||J===m.Compact)&&g.params&&(k=`Params: ${Rt(g.params)} + +`),fe.log(`Received request '${g.method} - (${g.id})'.`,k)}else Gt("receive-request",g)}i(fi,"traceReceivedRequest"),o(fi,"traceReceivedRequest");function zr(g){if(!(J===m.Off||!fe||g.method===N.type.method))if(Ge===T.Text){let k;(J===m.Verbose||J===m.Compact)&&(g.params?k=`Params: ${Rt(g.params)} + +`:k=`No parameters provided. + +`),fe.log(`Received notification '${g.method}'.`,k)}else Gt("receive-notification",g)}i(zr,"traceReceivedNotification"),o(zr,"traceReceivedNotification");function di(g,k){if(!(J===m.Off||!fe))if(Ge===T.Text){let D;if((J===m.Verbose||J===m.Compact)&&(g.error&&g.error.data?D=`Error data: ${Rt(g.error.data)} + +`:g.result?D=`Result: ${Rt(g.result)} + +`:g.error===void 0&&(D=`No result returned. + +`)),k){let F=g.error?` Request failed: ${g.error.message} (${g.error.code}).`:"";fe.log(`Received response '${k.method} - (${g.id})' in ${Date.now()-k.timerStart}ms.${F}`,D)}else fe.log(`Received response ${g.id} without active response promise.`,D)}else Gt("receive-response",g)}i(di,"traceReceivedResponse"),o(di,"traceReceivedResponse");function Gt(g,k){if(!fe||J===m.Off)return;let D={isLSPMessage:!0,type:g,message:k,timestamp:Date.now()};fe.log(D)}i(Gt,"logLSPMessage"),o(Gt,"logLSPMessage");function tr(){if(Hn())throw new S(I.Closed,"Connection is closed.");if(Ft())throw new S(I.Disposed,"Connection is disposed.")}i(tr,"throwIfClosedOrDisposed"),o(tr,"throwIfClosedOrDisposed");function pi(){if(Vn())throw new S(I.AlreadyListening,"Connection is already listening")}i(pi,"throwIfListening"),o(pi,"throwIfListening");function hi(){if(!Vn())throw new Error("Call listen() first.")}i(hi,"throwIfNotListening"),o(hi,"throwIfNotListening");function rr(g){return g===void 0?null:g}i(rr,"undefinedToNull"),o(rr,"undefinedToNull");function Zn(g){if(g!==null)return g}i(Zn,"nullToUndefined"),o(Zn,"nullToUndefined");function h(g){return g!=null&&!Array.isArray(g)&&typeof g=="object"}i(h,"isNamedParam"),o(h,"isNamedParam");function ne(g,k){switch(g){case n.ParameterStructures.auto:return h(k)?Zn(k):[rr(k)];case n.ParameterStructures.byName:if(!h(k))throw new Error("Received parameters by name but param is not an object literal.");return Zn(k);case n.ParameterStructures.byPosition:return[rr(k)];default:throw new Error(`Unknown parameter structure ${g.toString()}`)}}i(ne,"computeSingleParam"),o(ne,"computeSingleParam");function Ae(g,k){let D,F=g.numberOfParams;switch(F){case 0:D=void 0;break;case 1:D=ne(g.parameterStructures,k[0]);break;default:D=[];for(let ge=0;ge{tr();let D,F;if(r.string(g)){D=g;let ue=k[0],be=0,Ne=n.ParameterStructures.auto;n.ParameterStructures.is(ue)&&(be=1,Ne=ue);let te=k.length,Ee=te-be;switch(Ee){case 0:F=void 0;break;case 1:F=ne(Ne,k[be]);break;default:if(Ne===n.ParameterStructures.byName)throw new Error(`Received ${Ee} parameters for 'by Name' notification parameter structure.`);F=k.slice(be,te).map(se=>rr(se));break}}else{let ue=k;D=g.method,F=Ae(g,ue)}let ge={jsonrpc:U,method:D,params:F};return ci(ge),E.write(ge).catch(ue=>{throw b.error("Sending notification failed."),ue})},"sendNotification"),onNotification:o((g,k)=>{tr();let D;return r.func(g)?H=g:k&&(r.string(g)?(D=g,Oe.set(g,{type:void 0,handler:k})):(D=g.method,Oe.set(g.method,{type:g,handler:k}))),{dispose:o(()=>{D!==void 0?Oe.delete(D):H=void 0},"dispose")}},"onNotification"),onProgress:o((g,k,D)=>{if(ie.has(k))throw new Error(`Progress handler for token ${k} already registered`);return ie.set(k,D),{dispose:o(()=>{ie.delete(k)},"dispose")}},"onProgress"),sendProgress:o((g,k,D)=>V.sendNotification(f.type,{token:k,value:D}),"sendProgress"),onUnhandledProgress:Xa.event,sendRequest:o((g,...k)=>{tr(),hi();let D,F,ge;if(r.string(g)){D=g;let te=k[0],Ee=k[k.length-1],se=0,De=n.ParameterStructures.auto;n.ParameterStructures.is(te)&&(se=1,De=te);let He=k.length;l.CancellationToken.is(Ee)&&(He=He-1,ge=Ee);let jt=He-se;switch(jt){case 0:F=void 0;break;case 1:F=ne(De,k[se]);break;default:if(De===n.ParameterStructures.byName)throw new Error(`Received ${jt} parameters for 'by Name' request parameter structure.`);F=k.slice(se,He).map(RS=>rr(RS));break}}else{let te=k;D=g.method,F=Ae(g,te);let Ee=g.numberOfParams;ge=l.CancellationToken.is(te[Ee])?te[Ee]:void 0}let ue=L++,be;ge&&(be=ge.onCancellationRequested(()=>{let te=St.sender.sendCancellation(V,ue);return te===void 0?(b.log(`Received no promise from cancellation strategy when cancelling id ${ue}`),Promise.resolve()):te.catch(()=>{b.log(`Sending cancellation messages for id ${ue} failed`)})}));let Ne={jsonrpc:U,id:ue,method:D,params:F};return ui(Ne),typeof St.sender.enableCancellation=="function"&&St.sender.enableCancellation(Ne),new Promise(async(te,Ee)=>{let se=o(jt=>{te(jt),St.sender.cleanup(ue),be?.dispose()},"resolveWithCleanup"),De=o(jt=>{Ee(jt),St.sender.cleanup(ue),be?.dispose()},"rejectWithCleanup"),He={method:D,timerStart:Date.now(),resolve:se,reject:De};try{await E.write(Ne),$e.set(ue,He)}catch(jt){throw b.error("Sending request failed."),He.reject(new n.ResponseError(n.ErrorCodes.MessageWriteError,jt.message?jt.message:"Unknown reason")),jt}})},"sendRequest"),onRequest:o((g,k)=>{tr();let D=null;return p.is(g)?(D=void 0,W=g):r.string(g)?(D=null,k!==void 0&&(D=g,le.set(g,{handler:k,type:void 0}))):k!==void 0&&(D=g.method,le.set(g.method,{type:g,handler:k})),{dispose:o(()=>{D!==null&&(D!==void 0?le.delete(D):W=void 0)},"dispose")}},"onRequest"),hasPendingResponse:o(()=>$e.size>0,"hasPendingResponse"),trace:o(async(g,k,D)=>{let F=!1,ge=T.Text;D!==void 0&&(r.boolean(D)?F=D:(F=D.sendNotification||!1,ge=D.traceFormat||T.Text)),J=g,Ge=ge,J===m.Off?fe=void 0:fe=k,F&&!Hn()&&!Ft()&&await V.sendNotification(w.type,{value:m.toString(g)})},"trace"),onError:qn.event,onClose:Ha.event,onUnhandledNotification:Ya.event,onDispose:Ja.event,end:o(()=>{E.end()},"end"),dispose:o(()=>{if(Ft())return;at=O.Disposed,Ja.fire(void 0);let g=new n.ResponseError(n.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let k of $e.values())k.reject(g);$e=new Map,Ie=new Map,ze=new Set,Ue=new a.LinkedMap,r.func(E.dispose)&&E.dispose(),r.func(y.dispose)&&y.dispose()},"dispose"),listen:o(()=>{tr(),pi(),at=O.Listening,y.listen(xs)},"listen"),inspect:o(()=>{(0,t.default)().console.log("inspect")},"inspect")};return V.onNotification(N.type,g=>{if(J===m.Off||!fe)return;let k=J===m.Verbose||J===m.Compact;fe.log(g.message,k?g.verbose:void 0)}),V.onNotification(f.type,g=>{let k=ie.get(g.token);k?k(g.value):Xa.fire(g)}),V}i(C,"createMessageConnection"),o(C,"createMessageConnection"),e.createMessageConnection=C}}),Vc=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProgressType=e.ProgressToken=e.createMessageConnection=e.NullLogger=e.ConnectionOptions=e.ConnectionStrategy=e.AbstractMessageBuffer=e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=e.CancellationToken=e.CancellationTokenSource=e.Emitter=e.Event=e.Disposable=e.LRUCache=e.Touch=e.LinkedMap=e.ParameterStructures=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.ErrorCodes=e.ResponseError=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType0=e.RequestType=e.Message=e.RAL=void 0,e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=void 0;var t=Tg();Object.defineProperty(e,"Message",{enumerable:!0,get:o(function(){return t.Message},"get")}),Object.defineProperty(e,"RequestType",{enumerable:!0,get:o(function(){return t.RequestType},"get")}),Object.defineProperty(e,"RequestType0",{enumerable:!0,get:o(function(){return t.RequestType0},"get")}),Object.defineProperty(e,"RequestType1",{enumerable:!0,get:o(function(){return t.RequestType1},"get")}),Object.defineProperty(e,"RequestType2",{enumerable:!0,get:o(function(){return t.RequestType2},"get")}),Object.defineProperty(e,"RequestType3",{enumerable:!0,get:o(function(){return t.RequestType3},"get")}),Object.defineProperty(e,"RequestType4",{enumerable:!0,get:o(function(){return t.RequestType4},"get")}),Object.defineProperty(e,"RequestType5",{enumerable:!0,get:o(function(){return t.RequestType5},"get")}),Object.defineProperty(e,"RequestType6",{enumerable:!0,get:o(function(){return t.RequestType6},"get")}),Object.defineProperty(e,"RequestType7",{enumerable:!0,get:o(function(){return t.RequestType7},"get")}),Object.defineProperty(e,"RequestType8",{enumerable:!0,get:o(function(){return t.RequestType8},"get")}),Object.defineProperty(e,"RequestType9",{enumerable:!0,get:o(function(){return t.RequestType9},"get")}),Object.defineProperty(e,"ResponseError",{enumerable:!0,get:o(function(){return t.ResponseError},"get")}),Object.defineProperty(e,"ErrorCodes",{enumerable:!0,get:o(function(){return t.ErrorCodes},"get")}),Object.defineProperty(e,"NotificationType",{enumerable:!0,get:o(function(){return t.NotificationType},"get")}),Object.defineProperty(e,"NotificationType0",{enumerable:!0,get:o(function(){return t.NotificationType0},"get")}),Object.defineProperty(e,"NotificationType1",{enumerable:!0,get:o(function(){return t.NotificationType1},"get")}),Object.defineProperty(e,"NotificationType2",{enumerable:!0,get:o(function(){return t.NotificationType2},"get")}),Object.defineProperty(e,"NotificationType3",{enumerable:!0,get:o(function(){return t.NotificationType3},"get")}),Object.defineProperty(e,"NotificationType4",{enumerable:!0,get:o(function(){return t.NotificationType4},"get")}),Object.defineProperty(e,"NotificationType5",{enumerable:!0,get:o(function(){return t.NotificationType5},"get")}),Object.defineProperty(e,"NotificationType6",{enumerable:!0,get:o(function(){return t.NotificationType6},"get")}),Object.defineProperty(e,"NotificationType7",{enumerable:!0,get:o(function(){return t.NotificationType7},"get")}),Object.defineProperty(e,"NotificationType8",{enumerable:!0,get:o(function(){return t.NotificationType8},"get")}),Object.defineProperty(e,"NotificationType9",{enumerable:!0,get:o(function(){return t.NotificationType9},"get")}),Object.defineProperty(e,"ParameterStructures",{enumerable:!0,get:o(function(){return t.ParameterStructures},"get")});var r=$g();Object.defineProperty(e,"LinkedMap",{enumerable:!0,get:o(function(){return r.LinkedMap},"get")}),Object.defineProperty(e,"LRUCache",{enumerable:!0,get:o(function(){return r.LRUCache},"get")}),Object.defineProperty(e,"Touch",{enumerable:!0,get:o(function(){return r.Touch},"get")});var n=bS();Object.defineProperty(e,"Disposable",{enumerable:!0,get:o(function(){return n.Disposable},"get")});var a=Fa();Object.defineProperty(e,"Event",{enumerable:!0,get:o(function(){return a.Event},"get")}),Object.defineProperty(e,"Emitter",{enumerable:!0,get:o(function(){return a.Emitter},"get")});var s=yl();Object.defineProperty(e,"CancellationTokenSource",{enumerable:!0,get:o(function(){return s.CancellationTokenSource},"get")}),Object.defineProperty(e,"CancellationToken",{enumerable:!0,get:o(function(){return s.CancellationToken},"get")});var l=SS();Object.defineProperty(e,"SharedArraySenderStrategy",{enumerable:!0,get:o(function(){return l.SharedArraySenderStrategy},"get")}),Object.defineProperty(e,"SharedArrayReceiverStrategy",{enumerable:!0,get:o(function(){return l.SharedArrayReceiverStrategy},"get")});var u=wS();Object.defineProperty(e,"MessageReader",{enumerable:!0,get:o(function(){return u.MessageReader},"get")}),Object.defineProperty(e,"AbstractMessageReader",{enumerable:!0,get:o(function(){return u.AbstractMessageReader},"get")}),Object.defineProperty(e,"ReadableStreamMessageReader",{enumerable:!0,get:o(function(){return u.ReadableStreamMessageReader},"get")});var c=IS();Object.defineProperty(e,"MessageWriter",{enumerable:!0,get:o(function(){return c.MessageWriter},"get")}),Object.defineProperty(e,"AbstractMessageWriter",{enumerable:!0,get:o(function(){return c.AbstractMessageWriter},"get")}),Object.defineProperty(e,"WriteableStreamMessageWriter",{enumerable:!0,get:o(function(){return c.WriteableStreamMessageWriter},"get")});var f=NS();Object.defineProperty(e,"AbstractMessageBuffer",{enumerable:!0,get:o(function(){return f.AbstractMessageBuffer},"get")});var d=kS();Object.defineProperty(e,"ConnectionStrategy",{enumerable:!0,get:o(function(){return d.ConnectionStrategy},"get")}),Object.defineProperty(e,"ConnectionOptions",{enumerable:!0,get:o(function(){return d.ConnectionOptions},"get")}),Object.defineProperty(e,"NullLogger",{enumerable:!0,get:o(function(){return d.NullLogger},"get")}),Object.defineProperty(e,"createMessageConnection",{enumerable:!0,get:o(function(){return d.createMessageConnection},"get")}),Object.defineProperty(e,"ProgressToken",{enumerable:!0,get:o(function(){return d.ProgressToken},"get")}),Object.defineProperty(e,"ProgressType",{enumerable:!0,get:o(function(){return d.ProgressType},"get")}),Object.defineProperty(e,"Trace",{enumerable:!0,get:o(function(){return d.Trace},"get")}),Object.defineProperty(e,"TraceValues",{enumerable:!0,get:o(function(){return d.TraceValues},"get")}),Object.defineProperty(e,"TraceFormat",{enumerable:!0,get:o(function(){return d.TraceFormat},"get")}),Object.defineProperty(e,"SetTraceNotification",{enumerable:!0,get:o(function(){return d.SetTraceNotification},"get")}),Object.defineProperty(e,"LogTraceNotification",{enumerable:!0,get:o(function(){return d.LogTraceNotification},"get")}),Object.defineProperty(e,"ConnectionErrors",{enumerable:!0,get:o(function(){return d.ConnectionErrors},"get")}),Object.defineProperty(e,"ConnectionError",{enumerable:!0,get:o(function(){return d.ConnectionError},"get")}),Object.defineProperty(e,"CancellationReceiverStrategy",{enumerable:!0,get:o(function(){return d.CancellationReceiverStrategy},"get")}),Object.defineProperty(e,"CancellationSenderStrategy",{enumerable:!0,get:o(function(){return d.CancellationSenderStrategy},"get")}),Object.defineProperty(e,"CancellationStrategy",{enumerable:!0,get:o(function(){return d.CancellationStrategy},"get")}),Object.defineProperty(e,"MessageStrategy",{enumerable:!0,get:o(function(){return d.MessageStrategy},"get")});var p=_n();e.RAL=p.default}}),PS=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=Vc(),r=class _g extends t.AbstractMessageBuffer{static{i(this,"_MessageBuffer")}static{o(this,"MessageBuffer")}constructor(f="utf-8"){super(f),this.asciiDecoder=new TextDecoder("ascii")}emptyBuffer(){return _g.emptyBuffer}fromString(f,d){return new TextEncoder().encode(f)}toString(f,d){return d==="ascii"?this.asciiDecoder.decode(f):new TextDecoder(d).decode(f)}asNative(f,d){return d===void 0?f:f.slice(0,d)}allocNative(f){return new Uint8Array(f)}};r.emptyBuffer=new Uint8Array(0);var n=class{static{i(this,"ReadableStreamWrapper")}static{o(this,"ReadableStreamWrapper")}constructor(c){this.socket=c,this._onData=new t.Emitter,this._messageListener=f=>{f.data.arrayBuffer().then(p=>{this._onData.fire(new Uint8Array(p))},()=>{(0,t.RAL)().console.error("Converting blob to array buffer failed.")})},this.socket.addEventListener("message",this._messageListener)}onClose(c){return this.socket.addEventListener("close",c),t.Disposable.create(()=>this.socket.removeEventListener("close",c))}onError(c){return this.socket.addEventListener("error",c),t.Disposable.create(()=>this.socket.removeEventListener("error",c))}onEnd(c){return this.socket.addEventListener("end",c),t.Disposable.create(()=>this.socket.removeEventListener("end",c))}onData(c){return this._onData.event(c)}},a=class{static{i(this,"WritableStreamWrapper")}static{o(this,"WritableStreamWrapper")}constructor(c){this.socket=c}onClose(c){return this.socket.addEventListener("close",c),t.Disposable.create(()=>this.socket.removeEventListener("close",c))}onError(c){return this.socket.addEventListener("error",c),t.Disposable.create(()=>this.socket.removeEventListener("error",c))}onEnd(c){return this.socket.addEventListener("end",c),t.Disposable.create(()=>this.socket.removeEventListener("end",c))}write(c,f){if(typeof c=="string"){if(f!==void 0&&f!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${f}`);this.socket.send(c)}else this.socket.send(c);return Promise.resolve()}end(){this.socket.close()}},s=new TextEncoder,l=Object.freeze({messageBuffer:Object.freeze({create:o(c=>new r(c),"create")}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:o((c,f)=>{if(f.charset!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${f.charset}`);return Promise.resolve(s.encode(JSON.stringify(c,void 0,0)))},"encode")}),decoder:Object.freeze({name:"application/json",decode:o((c,f)=>{if(!(c instanceof Uint8Array))throw new Error("In a Browser environments only Uint8Arrays are supported.");return Promise.resolve(JSON.parse(new TextDecoder(f.charset).decode(c)))},"decode")})}),stream:Object.freeze({asReadableStream:o(c=>new n(c),"asReadableStream"),asWritableStream:o(c=>new a(c),"asWritableStream")}),console,timer:Object.freeze({setTimeout(c,f,...d){let p=setTimeout(c,f,...d);return{dispose:o(()=>clearTimeout(p),"dispose")}},setImmediate(c,...f){let d=setTimeout(c,0,...f);return{dispose:o(()=>clearTimeout(d),"dispose")}},setInterval(c,f,...d){let p=setInterval(c,f,...d);return{dispose:o(()=>clearInterval(p),"dispose")}}})});function u(){return l}i(u,"RIL"),o(u,"RIL"),(function(c){function f(){t.RAL.install(l)}i(f,"install"),o(f,"install"),c.install=f})(u||(u={})),e.default=u}}),Ga=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(c,f,d,p){p===void 0&&(p=d);var m=Object.getOwnPropertyDescriptor(f,d);(!m||("get"in m?!f.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:o(function(){return f[d]},"get")}),Object.defineProperty(c,p,m)}):(function(c,f,d,p){p===void 0&&(p=d),c[p]=f[d]})),r=e&&e.__exportStar||function(c,f){for(var d in c)d!=="default"&&!Object.prototype.hasOwnProperty.call(f,d)&&t(f,c,d)};Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.BrowserMessageWriter=e.BrowserMessageReader=void 0;var n=PS();n.default.install();var a=Vc();r(Vc(),e);var s=class extends a.AbstractMessageReader{static{i(this,"BrowserMessageReader")}static{o(this,"BrowserMessageReader")}constructor(c){super(),this._onData=new a.Emitter,this._messageListener=f=>{this._onData.fire(f.data)},c.addEventListener("error",f=>this.fireError(f)),c.onmessage=this._messageListener}listen(c){return this._onData.event(c)}};e.BrowserMessageReader=s;var l=class extends a.AbstractMessageWriter{static{i(this,"BrowserMessageWriter")}static{o(this,"BrowserMessageWriter")}constructor(c){super(),this.port=c,this.errorCount=0,c.addEventListener("error",f=>this.fireError(f))}write(c){try{return this.port.postMessage(c),Promise.resolve()}catch(f){return this.handleError(f,c),Promise.reject(f)}}handleError(c,f){this.errorCount++,this.fireError(c,f,this.errorCount)}end(){}};e.BrowserMessageWriter=l;function u(c,f,d,p){return d===void 0&&(d=a.NullLogger),a.ConnectionStrategy.is(p)&&(p={connectionStrategy:p}),(0,a.createMessageConnection)(c,f,d,p)}i(u,"createMessageConnection"),o(u,"createMessageConnection"),e.createMessageConnection=u}}),kh=Y({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js"(e,t){"use strict";t.exports=Ga()}}),Ce=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProtocolNotificationType=e.ProtocolNotificationType0=e.ProtocolRequestType=e.ProtocolRequestType0=e.RegistrationType=e.MessageDirection=void 0;var t=Ga(),r;(function(c){c.clientToServer="clientToServer",c.serverToClient="serverToClient",c.both="both"})(r||(e.MessageDirection=r={}));var n=class{static{i(this,"RegistrationType")}static{o(this,"RegistrationType")}constructor(c){this.method=c}};e.RegistrationType=n;var a=class extends t.RequestType0{static{i(this,"ProtocolRequestType0")}static{o(this,"ProtocolRequestType0")}constructor(c){super(c)}};e.ProtocolRequestType0=a;var s=class extends t.RequestType{static{i(this,"ProtocolRequestType")}static{o(this,"ProtocolRequestType")}constructor(c){super(c,t.ParameterStructures.byName)}};e.ProtocolRequestType=s;var l=class extends t.NotificationType0{static{i(this,"ProtocolNotificationType0")}static{o(this,"ProtocolNotificationType0")}constructor(c){super(c)}};e.ProtocolNotificationType0=l;var u=class extends t.NotificationType{static{i(this,"ProtocolNotificationType")}static{o(this,"ProtocolNotificationType")}constructor(c){super(c,t.ParameterStructures.byName)}};e.ProtocolNotificationType=u}}),Wf=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.objectLiteral=e.typedArray=e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(d){return d===!0||d===!1}i(t,"boolean"),o(t,"boolean"),e.boolean=t;function r(d){return typeof d=="string"||d instanceof String}i(r,"string"),o(r,"string"),e.string=r;function n(d){return typeof d=="number"||d instanceof Number}i(n,"number"),o(n,"number"),e.number=n;function a(d){return d instanceof Error}i(a,"error"),o(a,"error"),e.error=a;function s(d){return typeof d=="function"}i(s,"func"),o(s,"func"),e.func=s;function l(d){return Array.isArray(d)}i(l,"array"),o(l,"array"),e.array=l;function u(d){return l(d)&&d.every(p=>r(p))}i(u,"stringArray"),o(u,"stringArray"),e.stringArray=u;function c(d,p){return Array.isArray(d)&&d.every(p)}i(c,"typedArray"),o(c,"typedArray"),e.typedArray=c;function f(d){return d!==null&&typeof d=="object"}i(f,"objectLiteral"),o(f,"objectLiteral"),e.objectLiteral=f}}),OS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImplementationRequest=void 0;var t=Ce(),r;(function(n){n.method="textDocument/implementation",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ImplementationRequest=r={}))}}),LS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeDefinitionRequest=void 0;var t=Ce(),r;(function(n){n.method="textDocument/typeDefinition",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.TypeDefinitionRequest=r={}))}}),DS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=void 0;var t=Ce(),r;(function(a){a.method="workspace/workspaceFolders",a.messageDirection=t.MessageDirection.serverToClient,a.type=new t.ProtocolRequestType0(a.method)})(r||(e.WorkspaceFoldersRequest=r={}));var n;(function(a){a.method="workspace/didChangeWorkspaceFolders",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolNotificationType(a.method)})(n||(e.DidChangeWorkspaceFoldersNotification=n={}))}}),MS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigurationRequest=void 0;var t=Ce(),r;(function(n){n.method="workspace/configuration",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ConfigurationRequest=r={}))}}),xS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPresentationRequest=e.DocumentColorRequest=void 0;var t=Ce(),r;(function(a){a.method="textDocument/documentColor",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.DocumentColorRequest=r={}));var n;(function(a){a.method="textDocument/colorPresentation",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.ColorPresentationRequest=n={}))}}),FS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=void 0;var t=Ce(),r;(function(a){a.method="textDocument/foldingRange",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.FoldingRangeRequest=r={}));var n;(function(a){a.method="workspace/foldingRange/refresh",a.messageDirection=t.MessageDirection.serverToClient,a.type=new t.ProtocolRequestType0(a.method)})(n||(e.FoldingRangeRefreshRequest=n={}))}}),GS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DeclarationRequest=void 0;var t=Ce(),r;(function(n){n.method="textDocument/declaration",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.DeclarationRequest=r={}))}}),jS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionRangeRequest=void 0;var t=Ce(),r;(function(n){n.method="textDocument/selectionRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.SelectionRangeRequest=r={}))}}),US=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=void 0;var t=Ga(),r=Ce(),n;(function(l){l.type=new t.ProgressType;function u(c){return c===l.type}i(u,"is"),o(u,"is"),l.is=u})(n||(e.WorkDoneProgress=n={}));var a;(function(l){l.method="window/workDoneProgress/create",l.messageDirection=r.MessageDirection.serverToClient,l.type=new r.ProtocolRequestType(l.method)})(a||(e.WorkDoneProgressCreateRequest=a={}));var s;(function(l){l.method="window/workDoneProgress/cancel",l.messageDirection=r.MessageDirection.clientToServer,l.type=new r.ProtocolNotificationType(l.method)})(s||(e.WorkDoneProgressCancelNotification=s={}))}}),zS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.CallHierarchyPrepareRequest=void 0;var t=Ce(),r;(function(s){s.method="textDocument/prepareCallHierarchy",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(r||(e.CallHierarchyPrepareRequest=r={}));var n;(function(s){s.method="callHierarchy/incomingCalls",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(n||(e.CallHierarchyIncomingCallsRequest=n={}));var a;(function(s){s.method="callHierarchy/outgoingCalls",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(a||(e.CallHierarchyOutgoingCallsRequest=a={}))}}),BS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.SemanticTokensRegistrationType=e.TokenFormat=void 0;var t=Ce(),r;(function(c){c.Relative="relative"})(r||(e.TokenFormat=r={}));var n;(function(c){c.method="textDocument/semanticTokens",c.type=new t.RegistrationType(c.method)})(n||(e.SemanticTokensRegistrationType=n={}));var a;(function(c){c.method="textDocument/semanticTokens/full",c.messageDirection=t.MessageDirection.clientToServer,c.type=new t.ProtocolRequestType(c.method),c.registrationMethod=n.method})(a||(e.SemanticTokensRequest=a={}));var s;(function(c){c.method="textDocument/semanticTokens/full/delta",c.messageDirection=t.MessageDirection.clientToServer,c.type=new t.ProtocolRequestType(c.method),c.registrationMethod=n.method})(s||(e.SemanticTokensDeltaRequest=s={}));var l;(function(c){c.method="textDocument/semanticTokens/range",c.messageDirection=t.MessageDirection.clientToServer,c.type=new t.ProtocolRequestType(c.method),c.registrationMethod=n.method})(l||(e.SemanticTokensRangeRequest=l={}));var u;(function(c){c.method="workspace/semanticTokens/refresh",c.messageDirection=t.MessageDirection.serverToClient,c.type=new t.ProtocolRequestType0(c.method)})(u||(e.SemanticTokensRefreshRequest=u={}))}}),KS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowDocumentRequest=void 0;var t=Ce(),r;(function(n){n.method="window/showDocument",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ShowDocumentRequest=r={}))}}),qS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedEditingRangeRequest=void 0;var t=Ce(),r;(function(n){n.method="textDocument/linkedEditingRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.LinkedEditingRangeRequest=r={}))}}),WS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.DidRenameFilesNotification=e.WillRenameFilesRequest=e.DidCreateFilesNotification=e.WillCreateFilesRequest=e.FileOperationPatternKind=void 0;var t=Ce(),r;(function(f){f.file="file",f.folder="folder"})(r||(e.FileOperationPatternKind=r={}));var n;(function(f){f.method="workspace/willCreateFiles",f.messageDirection=t.MessageDirection.clientToServer,f.type=new t.ProtocolRequestType(f.method)})(n||(e.WillCreateFilesRequest=n={}));var a;(function(f){f.method="workspace/didCreateFiles",f.messageDirection=t.MessageDirection.clientToServer,f.type=new t.ProtocolNotificationType(f.method)})(a||(e.DidCreateFilesNotification=a={}));var s;(function(f){f.method="workspace/willRenameFiles",f.messageDirection=t.MessageDirection.clientToServer,f.type=new t.ProtocolRequestType(f.method)})(s||(e.WillRenameFilesRequest=s={}));var l;(function(f){f.method="workspace/didRenameFiles",f.messageDirection=t.MessageDirection.clientToServer,f.type=new t.ProtocolNotificationType(f.method)})(l||(e.DidRenameFilesNotification=l={}));var u;(function(f){f.method="workspace/didDeleteFiles",f.messageDirection=t.MessageDirection.clientToServer,f.type=new t.ProtocolNotificationType(f.method)})(u||(e.DidDeleteFilesNotification=u={}));var c;(function(f){f.method="workspace/willDeleteFiles",f.messageDirection=t.MessageDirection.clientToServer,f.type=new t.ProtocolRequestType(f.method)})(c||(e.WillDeleteFilesRequest=c={}))}}),VS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=void 0;var t=Ce(),r;(function(s){s.document="document",s.project="project",s.group="group",s.scheme="scheme",s.global="global"})(r||(e.UniquenessLevel=r={}));var n;(function(s){s.$import="import",s.$export="export",s.local="local"})(n||(e.MonikerKind=n={}));var a;(function(s){s.method="textDocument/moniker",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(a||(e.MonikerRequest=a={}))}}),HS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeHierarchySubtypesRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t=Ce(),r;(function(s){s.method="textDocument/prepareTypeHierarchy",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(r||(e.TypeHierarchyPrepareRequest=r={}));var n;(function(s){s.method="typeHierarchy/supertypes",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(n||(e.TypeHierarchySupertypesRequest=n={}));var a;(function(s){s.method="typeHierarchy/subtypes",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(a||(e.TypeHierarchySubtypesRequest=a={}))}}),YS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineValueRefreshRequest=e.InlineValueRequest=void 0;var t=Ce(),r;(function(a){a.method="textDocument/inlineValue",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.InlineValueRequest=r={}));var n;(function(a){a.method="workspace/inlineValue/refresh",a.messageDirection=t.MessageDirection.serverToClient,a.type=new t.ProtocolRequestType0(a.method)})(n||(e.InlineValueRefreshRequest=n={}))}}),XS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=void 0;var t=Ce(),r;(function(s){s.method="textDocument/inlayHint",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(r||(e.InlayHintRequest=r={}));var n;(function(s){s.method="inlayHint/resolve",s.messageDirection=t.MessageDirection.clientToServer,s.type=new t.ProtocolRequestType(s.method)})(n||(e.InlayHintResolveRequest=n={}));var a;(function(s){s.method="workspace/inlayHint/refresh",s.messageDirection=t.MessageDirection.serverToClient,s.type=new t.ProtocolRequestType0(s.method)})(a||(e.InlayHintRefreshRequest=a={}))}}),JS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=void 0;var t=Ga(),r=Wf(),n=Ce(),a;(function(f){function d(p){let m=p;return m&&r.boolean(m.retriggerRequest)}i(d,"is"),o(d,"is"),f.is=d})(a||(e.DiagnosticServerCancellationData=a={}));var s;(function(f){f.Full="full",f.Unchanged="unchanged"})(s||(e.DocumentDiagnosticReportKind=s={}));var l;(function(f){f.method="textDocument/diagnostic",f.messageDirection=n.MessageDirection.clientToServer,f.type=new n.ProtocolRequestType(f.method),f.partialResult=new t.ProgressType})(l||(e.DocumentDiagnosticRequest=l={}));var u;(function(f){f.method="workspace/diagnostic",f.messageDirection=n.MessageDirection.clientToServer,f.type=new n.ProtocolRequestType(f.method),f.partialResult=new t.ProgressType})(u||(e.WorkspaceDiagnosticRequest=u={}));var c;(function(f){f.method="workspace/diagnostic/refresh",f.messageDirection=n.MessageDirection.serverToClient,f.type=new n.ProtocolRequestType0(f.method)})(c||(e.DiagnosticRefreshRequest=c={}))}}),ZS=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=void 0;var t=(ys(),qf(gl)),r=Wf(),n=Ce(),a;(function(T){T.Markup=1,T.Code=2;function w(N){return N===1||N===2}i(w,"is"),o(w,"is"),T.is=w})(a||(e.NotebookCellKind=a={}));var s;(function(T){function w(S,_){let P={executionOrder:S};return(_===!0||_===!1)&&(P.success=_),P}i(w,"create"),o(w,"create"),T.create=w;function N(S){let _=S;return r.objectLiteral(_)&&t.uinteger.is(_.executionOrder)&&(_.success===void 0||r.boolean(_.success))}i(N,"is"),o(N,"is"),T.is=N;function I(S,_){return S===_?!0:S==null||_===null||_===void 0?!1:S.executionOrder===_.executionOrder&&S.success===_.success}i(I,"equals"),o(I,"equals"),T.equals=I})(s||(e.ExecutionSummary=s={}));var l;(function(T){function w(_,P){return{kind:_,document:P}}i(w,"create"),o(w,"create"),T.create=w;function N(_){let P=_;return r.objectLiteral(P)&&a.is(P.kind)&&t.DocumentUri.is(P.document)&&(P.metadata===void 0||r.objectLiteral(P.metadata))}i(N,"is"),o(N,"is"),T.is=N;function I(_,P){let j=new Set;return _.document!==P.document&&j.add("document"),_.kind!==P.kind&&j.add("kind"),_.executionSummary!==P.executionSummary&&j.add("executionSummary"),(_.metadata!==void 0||P.metadata!==void 0)&&!S(_.metadata,P.metadata)&&j.add("metadata"),(_.executionSummary!==void 0||P.executionSummary!==void 0)&&!s.equals(_.executionSummary,P.executionSummary)&&j.add("executionSummary"),j}i(I,"diff"),o(I,"diff"),T.diff=I;function S(_,P){if(_===P)return!0;if(_==null||P===null||P===void 0||typeof _!=typeof P||typeof _!="object")return!1;let j=Array.isArray(_),ee=Array.isArray(P);if(j!==ee)return!1;if(j&&ee){if(_.length!==P.length)return!1;for(let X=0;X<_.length;X++)if(!S(_[X],P[X]))return!1}if(r.objectLiteral(_)&&r.objectLiteral(P)){let X=Object.keys(_),ce=Object.keys(P);if(X.length!==ce.length||(X.sort(),ce.sort(),!S(X,ce)))return!1;for(let me=0;me0}i(ne,"hasId"),o(ne,"hasId"),h.hasId=ne})(L||(e.StaticRegistrationOptions=L={}));var x;(function(h){function ne(Ae){let V=Ae;return V&&(V.documentSelector===null||C.is(V.documentSelector))}i(ne,"is"),o(ne,"is"),h.is=ne})(x||(e.TextDocumentRegistrationOptions=x={}));var M;(function(h){function ne(V){let g=V;return n.objectLiteral(g)&&(g.workDoneProgress===void 0||n.boolean(g.workDoneProgress))}i(ne,"is"),o(ne,"is"),h.is=ne;function Ae(V){let g=V;return g&&n.boolean(g.workDoneProgress)}i(Ae,"hasWorkDoneProgress"),o(Ae,"hasWorkDoneProgress"),h.hasWorkDoneProgress=Ae})(M||(e.WorkDoneProgressOptions=M={}));var U;(function(h){h.method="initialize",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(U||(e.InitializeRequest=U={}));var W;(function(h){h.unknownProtocolVersion=1})(W||(e.InitializeErrorCodes=W={}));var le;(function(h){h.method="initialized",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(le||(e.InitializedNotification=le={}));var H;(function(h){h.method="shutdown",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType0(h.method)})(H||(e.ShutdownRequest=H={}));var Oe;(function(h){h.method="exit",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType0(h.method)})(Oe||(e.ExitNotification=Oe={}));var ie;(function(h){h.method="workspace/didChangeConfiguration",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(ie||(e.DidChangeConfigurationNotification=ie={}));var Le;(function(h){h.Error=1,h.Warning=2,h.Info=3,h.Log=4,h.Debug=5})(Le||(e.MessageType=Le={}));var Ue;(function(h){h.method="window/showMessage",h.messageDirection=t.MessageDirection.serverToClient,h.type=new t.ProtocolNotificationType(h.method)})(Ue||(e.ShowMessageNotification=Ue={}));var $e;(function(h){h.method="window/showMessageRequest",h.messageDirection=t.MessageDirection.serverToClient,h.type=new t.ProtocolRequestType(h.method)})($e||(e.ShowMessageRequest=$e={}));var ze;(function(h){h.method="window/logMessage",h.messageDirection=t.MessageDirection.serverToClient,h.type=new t.ProtocolNotificationType(h.method)})(ze||(e.LogMessageNotification=ze={}));var Ie;(function(h){h.method="telemetry/event",h.messageDirection=t.MessageDirection.serverToClient,h.type=new t.ProtocolNotificationType(h.method)})(Ie||(e.TelemetryEventNotification=Ie={}));var J;(function(h){h.None=0,h.Full=1,h.Incremental=2})(J||(e.TextDocumentSyncKind=J={}));var Ge;(function(h){h.method="textDocument/didOpen",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(Ge||(e.DidOpenTextDocumentNotification=Ge={}));var fe;(function(h){function ne(V){let g=V;return g!=null&&typeof g.text=="string"&&g.range!==void 0&&(g.rangeLength===void 0||typeof g.rangeLength=="number")}i(ne,"isIncremental"),o(ne,"isIncremental"),h.isIncremental=ne;function Ae(V){let g=V;return g!=null&&typeof g.text=="string"&&g.range===void 0&&g.rangeLength===void 0}i(Ae,"isFull"),o(Ae,"isFull"),h.isFull=Ae})(fe||(e.TextDocumentContentChangeEvent=fe={}));var at;(function(h){h.method="textDocument/didChange",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(at||(e.DidChangeTextDocumentNotification=at={}));var qn;(function(h){h.method="textDocument/didClose",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(qn||(e.DidCloseTextDocumentNotification=qn={}));var Ha;(function(h){h.method="textDocument/didSave",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(Ha||(e.DidSaveTextDocumentNotification=Ha={}));var Ya;(function(h){h.Manual=1,h.AfterDelay=2,h.FocusOut=3})(Ya||(e.TextDocumentSaveReason=Ya={}));var Xa;(function(h){h.method="textDocument/willSave",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(Xa||(e.WillSaveTextDocumentNotification=Xa={}));var Ja;(function(h){h.method="textDocument/willSaveWaitUntil",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Ja||(e.WillSaveTextDocumentWaitUntilRequest=Ja={}));var St;(function(h){h.method="workspace/didChangeWatchedFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(St||(e.DidChangeWatchedFilesNotification=St={}));var Wn;(function(h){h.Created=1,h.Changed=2,h.Deleted=3})(Wn||(e.FileChangeType=Wn={}));var Za;(function(h){function ne(Ae){let V=Ae;return n.objectLiteral(V)&&(r.URI.is(V.baseUri)||r.WorkspaceFolder.is(V.baseUri))&&n.string(V.pattern)}i(ne,"is"),o(ne,"is"),h.is=ne})(Za||(e.RelativePattern=Za={}));var Qa;(function(h){h.Create=1,h.Change=2,h.Delete=4})(Qa||(e.WatchKind=Qa={}));var ei;(function(h){h.method="textDocument/publishDiagnostics",h.messageDirection=t.MessageDirection.serverToClient,h.type=new t.ProtocolNotificationType(h.method)})(ei||(e.PublishDiagnosticsNotification=ei={}));var ti;(function(h){h.Invoked=1,h.TriggerCharacter=2,h.TriggerForIncompleteCompletions=3})(ti||(e.CompletionTriggerKind=ti={}));var Vn;(function(h){h.method="textDocument/completion",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Vn||(e.CompletionRequest=Vn={}));var Hn;(function(h){h.method="completionItem/resolve",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Hn||(e.CompletionResolveRequest=Hn={}));var Ft;(function(h){h.method="textDocument/hover",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Ft||(e.HoverRequest=Ft={}));var Yn;(function(h){h.Invoked=1,h.TriggerCharacter=2,h.ContentChange=3})(Yn||(e.SignatureHelpTriggerKind=Yn={}));var ri;(function(h){h.method="textDocument/signatureHelp",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(ri||(e.SignatureHelpRequest=ri={}));var ni;(function(h){h.method="textDocument/definition",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(ni||(e.DefinitionRequest=ni={}));var Xn;(function(h){h.method="textDocument/references",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Xn||(e.ReferencesRequest=Xn={}));var Jn;(function(h){h.method="textDocument/documentHighlight",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Jn||(e.DocumentHighlightRequest=Jn={}));var ai;(function(h){h.method="textDocument/documentSymbol",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(ai||(e.DocumentSymbolRequest=ai={}));var xs;(function(h){h.method="textDocument/codeAction",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(xs||(e.CodeActionRequest=xs={}));var ii;(function(h){h.method="codeAction/resolve",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(ii||(e.CodeActionResolveRequest=ii={}));var si;(function(h){h.method="workspace/symbol",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(si||(e.WorkspaceSymbolRequest=si={}));var oi;(function(h){h.method="workspaceSymbol/resolve",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(oi||(e.WorkspaceSymbolResolveRequest=oi={}));var li;(function(h){h.method="textDocument/codeLens",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(li||(e.CodeLensRequest=li={}));var Rt;(function(h){h.method="codeLens/resolve",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Rt||(e.CodeLensResolveRequest=Rt={}));var ui;(function(h){h.method="workspace/codeLens/refresh",h.messageDirection=t.MessageDirection.serverToClient,h.type=new t.ProtocolRequestType0(h.method)})(ui||(e.CodeLensRefreshRequest=ui={}));var ci;(function(h){h.method="textDocument/documentLink",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(ci||(e.DocumentLinkRequest=ci={}));var Cr;(function(h){h.method="documentLink/resolve",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Cr||(e.DocumentLinkResolveRequest=Cr={}));var fi;(function(h){h.method="textDocument/formatting",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(fi||(e.DocumentFormattingRequest=fi={}));var zr;(function(h){h.method="textDocument/rangeFormatting",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(zr||(e.DocumentRangeFormattingRequest=zr={}));var di;(function(h){h.method="textDocument/rangesFormatting",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(di||(e.DocumentRangesFormattingRequest=di={}));var Gt;(function(h){h.method="textDocument/onTypeFormatting",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(Gt||(e.DocumentOnTypeFormattingRequest=Gt={}));var tr;(function(h){h.Identifier=1})(tr||(e.PrepareSupportDefaultBehavior=tr={}));var pi;(function(h){h.method="textDocument/rename",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(pi||(e.RenameRequest=pi={}));var hi;(function(h){h.method="textDocument/prepareRename",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(hi||(e.PrepareRenameRequest=hi={}));var rr;(function(h){h.method="workspace/executeCommand",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(rr||(e.ExecuteCommandRequest=rr={}));var Zn;(function(h){h.method="workspace/applyEdit",h.messageDirection=t.MessageDirection.serverToClient,h.type=new t.ProtocolRequestType("workspace/applyEdit")})(Zn||(e.ApplyWorkspaceEditRequest=Zn={}))}}),tw=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var t=Ga();function r(n,a,s,l){return t.ConnectionStrategy.is(l)&&(l={connectionStrategy:l}),(0,t.createMessageConnection)(n,a,s,l)}i(r,"createProtocolConnection"),o(r,"createProtocolConnection"),e.createProtocolConnection=r}}),rw=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(s,l,u,c){c===void 0&&(c=u);var f=Object.getOwnPropertyDescriptor(l,u);(!f||("get"in f?!l.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:o(function(){return l[u]},"get")}),Object.defineProperty(s,c,f)}):(function(s,l,u,c){c===void 0&&(c=u),s[c]=l[u]})),r=e&&e.__exportStar||function(s,l){for(var u in s)u!=="default"&&!Object.prototype.hasOwnProperty.call(l,u)&&t(l,s,u)};Object.defineProperty(e,"__esModule",{value:!0}),e.LSPErrorCodes=e.createProtocolConnection=void 0,r(Ga(),e),r((ys(),qf(gl)),e),r(Ce(),e),r(ew(),e);var n=tw();Object.defineProperty(e,"createProtocolConnection",{enumerable:!0,get:o(function(){return n.createProtocolConnection},"get")});var a;(function(s){s.lspReservedErrorRangeStart=-32899,s.RequestFailed=-32803,s.ServerCancelled=-32802,s.ContentModified=-32801,s.RequestCancelled=-32800,s.lspReservedErrorRangeEnd=-32800})(a||(e.LSPErrorCodes=a={}))}}),nw=Y({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(s,l,u,c){c===void 0&&(c=u);var f=Object.getOwnPropertyDescriptor(l,u);(!f||("get"in f?!l.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:o(function(){return l[u]},"get")}),Object.defineProperty(s,c,f)}):(function(s,l,u,c){c===void 0&&(c=u),s[c]=l[u]})),r=e&&e.__exportStar||function(s,l){for(var u in s)u!=="default"&&!Object.prototype.hasOwnProperty.call(l,u)&&t(l,s,u)};Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var n=kh();r(kh(),e),r(rw(),e);function a(s,l,u,c){return(0,n.createMessageConnection)(s,l,u,c)}i(a,"createProtocolConnection"),o(a,"createProtocolConnection"),e.createProtocolConnection=a}}),Cg={};xr(Cg,{AbstractAstReflection:i(()=>Yf,"AbstractAstReflection"),AbstractCstNode:i(()=>Jp,"AbstractCstNode"),AbstractLangiumParser:i(()=>Qp,"AbstractLangiumParser"),AbstractParserErrorMessageProvider:i(()=>hb,"AbstractParserErrorMessageProvider"),AbstractThreadedAsyncParser:i(()=>P1,"AbstractThreadedAsyncParser"),AstUtils:i(()=>Xf,"AstUtils"),BiMap:i(()=>cl,"BiMap"),Cancellation:i(()=>pe,"Cancellation"),CompositeCstNodeImpl:i(()=>pu,"CompositeCstNodeImpl"),ContextCache:i(()=>Ru,"ContextCache"),CstNodeBuilder:i(()=>cb,"CstNodeBuilder"),CstUtils:i(()=>Vf,"CstUtils"),DEFAULT_TOKENIZE_OPTIONS:i(()=>yh,"DEFAULT_TOKENIZE_OPTIONS"),DONE_RESULT:i(()=>Ye,"DONE_RESULT"),DatatypeSymbol:i(()=>sl,"DatatypeSymbol"),DefaultAstNodeDescriptionProvider:i(()=>Kb,"DefaultAstNodeDescriptionProvider"),DefaultAstNodeLocator:i(()=>Wb,"DefaultAstNodeLocator"),DefaultAsyncParser:i(()=>cS,"DefaultAsyncParser"),DefaultCommentProvider:i(()=>uS,"DefaultCommentProvider"),DefaultConfigurationProvider:i(()=>Vb,"DefaultConfigurationProvider"),DefaultDocumentBuilder:i(()=>Hb,"DefaultDocumentBuilder"),DefaultDocumentValidator:i(()=>Bb,"DefaultDocumentValidator"),DefaultHydrator:i(()=>dS,"DefaultHydrator"),DefaultIndexManager:i(()=>Yb,"DefaultIndexManager"),DefaultJsonSerializer:i(()=>Gb,"DefaultJsonSerializer"),DefaultLangiumDocumentFactory:i(()=>Nb,"DefaultLangiumDocumentFactory"),DefaultLangiumDocuments:i(()=>kb,"DefaultLangiumDocuments"),DefaultLangiumProfiler:i(()=>x1,"DefaultLangiumProfiler"),DefaultLexer:i(()=>vh,"DefaultLexer"),DefaultLexerErrorMessageProvider:i(()=>Jb,"DefaultLexerErrorMessageProvider"),DefaultLinker:i(()=>Pb,"DefaultLinker"),DefaultNameProvider:i(()=>Ob,"DefaultNameProvider"),DefaultReferenceDescriptionProvider:i(()=>qb,"DefaultReferenceDescriptionProvider"),DefaultReferences:i(()=>Lb,"DefaultReferences"),DefaultScopeComputation:i(()=>Db,"DefaultScopeComputation"),DefaultScopeProvider:i(()=>Fb,"DefaultScopeProvider"),DefaultServiceRegistry:i(()=>jb,"DefaultServiceRegistry"),DefaultTokenBuilder:i(()=>gu,"DefaultTokenBuilder"),DefaultValueConverter:i(()=>sh,"DefaultValueConverter"),DefaultWorkspaceLock:i(()=>fS,"DefaultWorkspaceLock"),DefaultWorkspaceManager:i(()=>Xb,"DefaultWorkspaceManager"),Deferred:i(()=>Tr,"Deferred"),Disposable:i(()=>Tn,"Disposable"),DisposableCache:i(()=>Tu,"DisposableCache"),DocumentCache:i(()=>xb,"DocumentCache"),DocumentState:i(()=>Z,"DocumentState"),DocumentValidator:i(()=>$t,"DocumentValidator"),EMPTY_SCOPE:i(()=>w1,"EMPTY_SCOPE"),EMPTY_STREAM:i(()=>ba,"EMPTY_STREAM"),EmptyFileSystem:i(()=>gS,"EmptyFileSystem"),EmptyFileSystemProvider:i(()=>mS,"EmptyFileSystemProvider"),ErrorWithLocation:i(()=>bl,"ErrorWithLocation"),GrammarAST:i(()=>wg,"GrammarAST"),GrammarUtils:i(()=>bd,"GrammarUtils"),IndentationAwareLexer:i(()=>L1,"IndentationAwareLexer"),IndentationAwareTokenBuilder:i(()=>hS,"IndentationAwareTokenBuilder"),JSDocDocumentationProvider:i(()=>lS,"JSDocDocumentationProvider"),LangiumCompletionParser:i(()=>mb,"LangiumCompletionParser"),LangiumParser:i(()=>pb,"LangiumParser"),LangiumParserErrorMessageProvider:i(()=>eh,"LangiumParserErrorMessageProvider"),LeafCstNodeImpl:i(()=>il,"LeafCstNodeImpl"),LexingMode:i(()=>yn,"LexingMode"),MapScope:i(()=>S1,"MapScope"),Module:i(()=>Nf,"Module"),MultiMap:i(()=>Rr,"MultiMap"),MultiMapScope:i(()=>Mb,"MultiMapScope"),OperationCancelled:i(()=>Vt,"OperationCancelled"),ParserWorker:i(()=>O1,"ParserWorker"),ProfilingTask:i(()=>vS,"ProfilingTask"),Reduction:i(()=>es,"Reduction"),RefResolving:i(()=>Zr,"RefResolving"),RegExpUtils:i(()=>wd,"RegExpUtils"),RootCstNodeImpl:i(()=>Zp,"RootCstNodeImpl"),SimpleCache:i(()=>dh,"SimpleCache"),StreamImpl:i(()=>Wt,"StreamImpl"),StreamScope:i(()=>bf,"StreamScope"),TextDocument:i(()=>ll,"TextDocument"),TreeStreamImpl:i(()=>Sa,"TreeStreamImpl"),URI:i(()=>dt,"URI"),UriTrie:i(()=>ch,"UriTrie"),UriUtils:i(()=>Je,"UriUtils"),VALIDATE_EACH_NODE:i(()=>zb,"VALIDATE_EACH_NODE"),ValidationCategory:i(()=>fl,"ValidationCategory"),ValidationRegistry:i(()=>Ub,"ValidationRegistry"),ValueConverter:i(()=>Kt,"ValueConverter"),WorkspaceCache:i(()=>ph,"WorkspaceCache"),assertCondition:i(()=>Sd,"assertCondition"),assertUnreachable:i(()=>Fr,"assertUnreachable"),createCompletionParser:i(()=>nh,"createCompletionParser"),createDefaultCoreModule:i(()=>Ch,"createDefaultCoreModule"),createDefaultSharedCoreModule:i(()=>bh,"createDefaultSharedCoreModule"),createGrammarConfig:i(()=>Wd,"createGrammarConfig"),createLangiumParser:i(()=>ah,"createLangiumParser"),createParser:i(()=>hu,"createParser"),delayNextTick:i(()=>yu,"delayNextTick"),diagnosticData:i(()=>gn,"diagnosticData"),eagerLoad:i(()=>Sh,"eagerLoad"),getDiagnosticRange:i(()=>mh,"getDiagnosticRange"),indentationBuilderDefaultOptions:i(()=>Pf,"indentationBuilderDefaultOptions"),inject:i(()=>hl,"inject"),interruptAndCheck:i(()=>je,"interruptAndCheck"),isAstNode:i(()=>Pe,"isAstNode"),isAstNodeDescription:i(()=>Hf,"isAstNodeDescription"),isAstNodeWithComment:i(()=>hh,"isAstNodeWithComment"),isCompositeCstNode:i(()=>fr,"isCompositeCstNode"),isIMultiModeLexerDefinition:i(()=>Eu,"isIMultiModeLexerDefinition"),isJSDoc:i(()=>Rh,"isJSDoc"),isLeafCstNode:i(()=>Cn,"isLeafCstNode"),isLinkingError:i(()=>tn,"isLinkingError"),isMultiReference:i(()=>Ht,"isMultiReference"),isNamed:i(()=>fh,"isNamed"),isOperationCancelled:i(()=>Kn,"isOperationCancelled"),isReference:i(()=>Xe,"isReference"),isRootCstNode:i(()=>vl,"isRootCstNode"),isTokenTypeArray:i(()=>Au,"isTokenTypeArray"),isTokenTypeDictionary:i(()=>dl,"isTokenTypeDictionary"),loadGrammarFromJson:i(()=>vt,"loadGrammarFromJson"),parseJSDoc:i(()=>Th,"parseJSDoc"),prepareLangiumParser:i(()=>ih,"prepareLangiumParser"),setInterruptionPeriod:i(()=>oh,"setInterruptionPeriod"),startCancelableOperation:i(()=>vu,"startCancelableOperation"),stream:i(()=>oe,"stream"),toDiagnosticData:i(()=>gh,"toDiagnosticData"),toDiagnosticSeverity:i(()=>Zi,"toDiagnosticSeverity")});var Vf={};xr(Vf,{DefaultNameRegexp:i(()=>$d,"DefaultNameRegexp"),RangeComparison:i(()=>qt,"RangeComparison"),compareRange:i(()=>Td,"compareRange"),findCommentNode:i(()=>Ad,"findCommentNode"),findDeclarationNodeAtOffset:i(()=>Vg,"findDeclarationNodeAtOffset"),findLeafNodeAtOffset:i(()=>Cl,"findLeafNodeAtOffset"),findLeafNodeBeforeOffset:i(()=>Ed,"findLeafNodeBeforeOffset"),flattenCst:i(()=>Wg,"flattenCst"),getDatatypeNode:i(()=>qg,"getDatatypeNode"),getInteriorNodes:i(()=>Xg,"getInteriorNodes"),getNextNode:i(()=>Hg,"getNextNode"),getPreviousNode:i(()=>Cd,"getPreviousNode"),getStartlineNode:i(()=>Yg,"getStartlineNode"),inRange:i(()=>Rd,"inRange"),isChildNode:i(()=>vd,"isChildNode"),isCommentNode:i(()=>Bo,"isCommentNode"),streamCst:i(()=>ka,"streamCst"),toDocumentSegment:i(()=>Pa,"toDocumentSegment"),tokenToRange:i(()=>ts,"tokenToRange")});function Pe(e){return typeof e=="object"&&e!==null&&typeof e.$type=="string"}i(Pe,"isAstNode");o(Pe,"isAstNode");function Xe(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"ref"in e}i(Xe,"isReference");o(Xe,"isReference");function Ht(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"items"in e}i(Ht,"isMultiReference");o(Ht,"isMultiReference");function Hf(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.type=="string"&&typeof e.path=="string"}i(Hf,"isAstNodeDescription");o(Hf,"isAstNodeDescription");function tn(e){return typeof e=="object"&&e!==null&&typeof e.info=="object"&&typeof e.message=="string"}i(tn,"isLinkingError");o(tn,"isLinkingError");var Yf=class{static{i(this,"AbstractAstReflection")}static{o(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw new Error(`Type ${e.container.$type||"undefined"} not found.`);let r=t.properties[e.property]?.referenceType;if(!r)throw new Error(`Property ${e.property||"undefined"} of type ${e.container.$type} is not a reference.`);return r}getTypeMetaData(e){let t=this.types[e];return t||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return Pe(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});let n=r[t];if(n!==void 0)return n;{let a=this.types[e],s=a?a.superTypes.some(l=>this.isSubtype(l,t)):!1;return r[t]=s,s}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let r=this.getAllTypes(),n=[];for(let a of r)this.isSubtype(a,e)&&n.push(a);return this.allSubtypes[e]=n,n}}};function fr(e){return typeof e=="object"&&e!==null&&Array.isArray(e.content)}i(fr,"isCompositeCstNode");o(fr,"isCompositeCstNode");function Cn(e){return typeof e=="object"&&e!==null&&typeof e.tokenType=="object"}i(Cn,"isLeafCstNode");o(Cn,"isLeafCstNode");function vl(e){return fr(e)&&typeof e.fullText=="string"}i(vl,"isRootCstNode");o(vl,"isRootCstNode");var Wt=class ir{static{i(this,"_StreamImpl")}static{o(this,"StreamImpl")}constructor(t,r){this.startFn=t,this.nextFn=r}iterator(){let t={state:this.startFn(),next:o(()=>this.nextFn(t.state),"next"),[Symbol.iterator]:()=>t};return t}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let t=this.iterator(),r=0,n=t.next();for(;!n.done;)r++,n=t.next();return r}toArray(){let t=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&t.push(n.value);while(!n.done);return t}toSet(){return new Set(this)}toMap(t,r){let n=this.map(a=>[t?t(a):a,r?r(a):a]);return new Map(n)}toString(){return this.join()}concat(t){return new ir(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return Ye})}join(t=","){let r=this.iterator(),n="",a,s=!1;do a=r.next(),a.done||(s&&(n+=t),n+=bg(a.value)),s=!0;while(!a.done);return n}indexOf(t,r=0){let n=this.iterator(),a=0,s=n.next();for(;!s.done;){if(a>=r&&s.value===t)return a;s=n.next(),a++}return-1}every(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(!t(n.value))return!1;n=r.next()}return!0}some(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(t(n.value))return!0;n=r.next()}return!1}forEach(t){let r=this.iterator(),n=0,a=r.next();for(;!a.done;)t(a.value,n),a=r.next(),n++}map(t){return new ir(this.startFn,r=>{let{done:n,value:a}=this.nextFn(r);return n?Ye:{done:!1,value:t(a)}})}filter(t){return new ir(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&t(n.value))return n;while(!n.done);return Ye})}nonNullable(){return this.filter(t=>t!=null)}reduce(t,r){let n=this.iterator(),a=r,s=n.next();for(;!s.done;)a===void 0?a=s.value:a=t(a,s.value),s=n.next();return a}reduceRight(t,r){return this.recursiveReduce(this.iterator(),t,r)}recursiveReduce(t,r,n){let a=t.next();if(a.done)return n;let s=this.recursiveReduce(t,r,n);return s===void 0?a.value:r(s,a.value)}find(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(t(n.value))return n.value;n=r.next()}}findIndex(t){let r=this.iterator(),n=0,a=r.next();for(;!a.done;){if(t(a.value))return n;a=r.next(),n++}return-1}includes(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===t)return!0;n=r.next()}return!1}flatMap(t){return new ir(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let s=r.iterator.next();if(s.done)r.iterator=void 0;else return s}let{done:n,value:a}=this.nextFn(r.this);if(!n){let s=t(a);if(Qi(s))r.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}}while(r.iterator);return Ye})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let r=t>1?this.flat(t-1):this;return new ir(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let l=n.iterator.next();if(l.done)n.iterator=void 0;else return l}let{done:a,value:s}=r.nextFn(n.this);if(!a)if(Qi(s))n.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}while(n.iterator);return Ye})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(t=1){return new ir(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>t?Ye:this.nextFn(r.state)))}distinct(t){return new ir(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let a=t?t(n.value):n.value;if(!r.set.has(a))return r.set.add(a),n}while(!n.done);return Ye})}exclude(t,r){let n=new Set;for(let a of t){let s=r?r(a):a;n.add(s)}return this.filter(a=>{let s=r?r(a):a;return!n.has(s)})}};function bg(e){return typeof e=="string"?e:typeof e>"u"?"undefined":typeof e.toString=="function"?e.toString():Object.prototype.toString.call(e)}i(bg,"toString");o(bg,"toString");function Qi(e){return!!e&&typeof e[Symbol.iterator]=="function"}i(Qi,"isIterable");o(Qi,"isIterable");var ba=new Wt(()=>{},()=>Ye),Ye=Object.freeze({done:!0,value:void 0});function oe(...e){if(e.length===1){let t=e[0];if(t instanceof Wt)return t;if(Qi(t))return new Wt(()=>t[Symbol.iterator](),r=>r.next());if(typeof t.length=="number")return new Wt(()=>({index:0}),r=>r.index1?new Wt(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let r=t.iterator.next();if(!r.done)return r;t.iterator=void 0}if(t.array){if(t.arrIndex({iterators:r?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),n=>{for(n.pruned&&(n.iterators.pop(),n.pruned=!1);n.iterators.length>0;){let s=n.iterators[n.iterators.length-1].next();if(s.done)n.iterators.pop();else return n.iterators.push(t(s.value)[Symbol.iterator]()),s}return Ye})}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),prune:o(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}},es;(function(e){function t(s){return s.reduce((l,u)=>l+u,0)}i(t,"sum"),o(t,"sum"),e.sum=t;function r(s){return s.reduce((l,u)=>l*u,0)}i(r,"product"),o(r,"product"),e.product=r;function n(s){return s.reduce((l,u)=>Math.min(l,u))}i(n,"min2"),o(n,"min"),e.min=n;function a(s){return s.reduce((l,u)=>Math.max(l,u))}i(a,"max"),o(a,"max"),e.max=a})(es||(es={}));var Xf={};xr(Xf,{assignMandatoryProperties:i(()=>Jf,"assignMandatoryProperties"),copyAstNode:i(()=>Io,"copyAstNode"),findRootNode:i(()=>Aa,"findRootNode"),getContainerOfType:i(()=>bn,"getContainerOfType"),getDocument:i(()=>kt,"getDocument"),getReferenceNodes:i(()=>So,"getReferenceNodes"),hasContainerOfType:i(()=>Sg,"hasContainerOfType"),linkContentToContainer:i(()=>wa,"linkContentToContainer"),streamAllContents:i(()=>$r,"streamAllContents"),streamAst:i(()=>Pt,"streamAst"),streamContents:i(()=>Ts,"streamContents"),streamReferences:i(()=>Ia,"streamReferences")});function wa(e,t={}){for(let[r,n]of Object.entries(e))r.startsWith("$")||(Array.isArray(n)?n.forEach((a,s)=>{Pe(a)&&(a.$container=e,a.$containerProperty=r,a.$containerIndex=s,t.deep&&wa(a,t))}):Pe(n)&&(n.$container=e,n.$containerProperty=r,t.deep&&wa(n,t)))}i(wa,"linkContentToContainer");o(wa,"linkContentToContainer");function bn(e,t){let r=e;for(;r;){if(t(r))return r;r=r.$container}}i(bn,"getContainerOfType");o(bn,"getContainerOfType");function Sg(e,t){let r=e;for(;r;){if(t(r))return!0;r=r.$container}return!1}i(Sg,"hasContainerOfType");o(Sg,"hasContainerOfType");function kt(e){let r=Aa(e).$document;if(!r)throw new Error("AST node has no document.");return r}i(kt,"getDocument");o(kt,"getDocument");function Aa(e){for(;e.$container;)e=e.$container;return e}i(Aa,"findRootNode");o(Aa,"findRootNode");function So(e){return Xe(e)?e.ref?[e.ref]:[]:Ht(e)?e.items.map(t=>t.ref):[]}i(So,"getReferenceNodes");o(So,"getReferenceNodes");function Ts(e,t){if(!e)throw new Error("Node must be an AstNode.");let r=t?.range;return new Wt(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexTs(r,t))}i($r,"streamAllContents");o($r,"streamAllContents");function Pt(e,t){if(e){if(t?.range&&!wo(e,t.range))return new Sa(e,()=>[])}else throw new Error("Root node must be an AstNode.");return new Sa(e,r=>Ts(r,t),{includeRoot:!0})}i(Pt,"streamAst");o(Pt,"streamAst");function wo(e,t){if(!t)return!0;let r=e.$cstNode?.range;return r?Rd(r,t):!1}i(wo,"isAstNodeInRange");o(wo,"isAstNodeInRange");function Ia(e){return new Wt(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndexit,"AbstractElement"),AbstractParserRule:i(()=>Fi,"AbstractParserRule"),AbstractRule:i(()=>ha,"AbstractRule"),AbstractType:i(()=>ft,"AbstractType"),Action:i(()=>Sr,"Action"),Alternatives:i(()=>Gi,"Alternatives"),ArrayLiteral:i(()=>No,"ArrayLiteral"),ArrayType:i(()=>ko,"ArrayType"),Assignment:i(()=>wr,"Assignment"),BooleanLiteral:i(()=>Po,"BooleanLiteral"),CharacterRange:i(()=>Ir,"CharacterRange"),Condition:i(()=>Nr,"Condition"),Conjunction:i(()=>ji,"Conjunction"),CrossReference:i(()=>kr,"CrossReference"),Disjunction:i(()=>Ui,"Disjunction"),EndOfFile:i(()=>Oo,"EndOfFile"),Grammar:i(()=>lr,"Grammar"),GrammarImport:i(()=>Lo,"GrammarImport"),Group:i(()=>rn,"Group"),InferredType:i(()=>Do,"InferredType"),InfixRule:i(()=>Bt,"InfixRule"),InfixRuleOperatorList:i(()=>zi,"InfixRuleOperatorList"),InfixRuleOperators:i(()=>Mo,"InfixRuleOperators"),Interface:i(()=>ma,"Interface"),Keyword:i(()=>ga,"Keyword"),LangiumGrammarAstReflection:i(()=>yd,"LangiumGrammarAstReflection"),LangiumGrammarTerminals:i(()=>aw,"LangiumGrammarTerminals"),NamedArgument:i(()=>ya,"NamedArgument"),NegatedToken:i(()=>nn,"NegatedToken"),Negation:i(()=>xo,"Negation"),NumberLiteral:i(()=>Fo,"NumberLiteral"),Parameter:i(()=>va,"Parameter"),ParameterReference:i(()=>Go,"ParameterReference"),ParserRule:i(()=>wt,"ParserRule"),ReferenceType:i(()=>Bi,"ReferenceType"),RegexToken:i(()=>an,"RegexToken"),ReturnType:i(()=>jo,"ReturnType"),RuleCall:i(()=>sn,"RuleCall"),SimpleType:i(()=>Ta,"SimpleType"),StringLiteral:i(()=>Uo,"StringLiteral"),TerminalAlternatives:i(()=>on,"TerminalAlternatives"),TerminalElement:i(()=>st,"TerminalElement"),TerminalGroup:i(()=>ln,"TerminalGroup"),TerminalRule:i(()=>ur,"TerminalRule"),TerminalRuleCall:i(()=>un,"TerminalRuleCall"),Type:i(()=>Ki,"Type"),TypeAttribute:i(()=>cn,"TypeAttribute"),TypeDefinition:i(()=>fn,"TypeDefinition"),UnionType:i(()=>zo,"UnionType"),UnorderedGroup:i(()=>qi,"UnorderedGroup"),UntilToken:i(()=>dn,"UntilToken"),ValueLiteral:i(()=>pn,"ValueLiteral"),Wildcard:i(()=>Ra,"Wildcard"),isAbstractElement:i(()=>Tl,"isAbstractElement"),isAbstractParserRule:i(()=>Sn,"isAbstractParserRule"),isAbstractRule:i(()=>Ig,"isAbstractRule"),isAbstractType:i(()=>Ng,"isAbstractType"),isAction:i(()=>Pr,"isAction"),isAlternatives:i(()=>Rl,"isAlternatives"),isArrayLiteral:i(()=>kg,"isArrayLiteral"),isArrayType:i(()=>Qf,"isArrayType"),isAssignment:i(()=>dr,"isAssignment"),isBooleanLiteral:i(()=>ed,"isBooleanLiteral"),isCharacterRange:i(()=>td,"isCharacterRange"),isCondition:i(()=>Pg,"isCondition"),isConjunction:i(()=>rd,"isConjunction"),isCrossReference:i(()=>wn,"isCrossReference"),isDisjunction:i(()=>nd,"isDisjunction"),isEndOfFile:i(()=>ad,"isEndOfFile"),isGrammar:i(()=>Og,"isGrammar"),isGrammarImport:i(()=>Lg,"isGrammarImport"),isGroup:i(()=>In,"isGroup"),isInferredType:i(()=>Rs,"isInferredType"),isInfixRule:i(()=>Na,"isInfixRule"),isInfixRuleOperatorList:i(()=>Dg,"isInfixRuleOperatorList"),isInfixRuleOperators:i(()=>Mg,"isInfixRuleOperators"),isInterface:i(()=>id,"isInterface"),isKeyword:i(()=>pr,"isKeyword"),isNamedArgument:i(()=>xg,"isNamedArgument"),isNegatedToken:i(()=>sd,"isNegatedToken"),isNegation:i(()=>od,"isNegation"),isNumberLiteral:i(()=>Fg,"isNumberLiteral"),isParameter:i(()=>Gg,"isParameter"),isParameterReference:i(()=>ld,"isParameterReference"),isParserRule:i(()=>Qe,"isParserRule"),isReferenceType:i(()=>ud,"isReferenceType"),isRegexToken:i(()=>cd,"isRegexToken"),isReturnType:i(()=>fd,"isReturnType"),isRuleCall:i(()=>hr,"isRuleCall"),isSimpleType:i(()=>$l,"isSimpleType"),isStringLiteral:i(()=>jg,"isStringLiteral"),isTerminalAlternatives:i(()=>dd,"isTerminalAlternatives"),isTerminalElement:i(()=>Ug,"isTerminalElement"),isTerminalGroup:i(()=>pd,"isTerminalGroup"),isTerminalRule:i(()=>Ct,"isTerminalRule"),isTerminalRuleCall:i(()=>Al,"isTerminalRuleCall"),isType:i(()=>El,"isType"),isTypeAttribute:i(()=>zg,"isTypeAttribute"),isTypeDefinition:i(()=>Bg,"isTypeDefinition"),isUnionType:i(()=>hd,"isUnionType"),isUnorderedGroup:i(()=>_l,"isUnorderedGroup"),isUntilToken:i(()=>md,"isUntilToken"),isValueLiteral:i(()=>Kg,"isValueLiteral"),isWildcard:i(()=>gd,"isWildcard"),reflection:i(()=>z,"reflection")});var aw={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},it={$type:"AbstractElement",cardinality:"cardinality"};function Tl(e){return z.isInstance(e,it.$type)}i(Tl,"isAbstractElement");o(Tl,"isAbstractElement");var Fi={$type:"AbstractParserRule"};function Sn(e){return z.isInstance(e,Fi.$type)}i(Sn,"isAbstractParserRule");o(Sn,"isAbstractParserRule");var ha={$type:"AbstractRule"};function Ig(e){return z.isInstance(e,ha.$type)}i(Ig,"isAbstractRule");o(Ig,"isAbstractRule");var ft={$type:"AbstractType"};function Ng(e){return z.isInstance(e,ft.$type)}i(Ng,"isAbstractType");o(Ng,"isAbstractType");var Sr={$type:"Action",cardinality:"cardinality",feature:"feature",inferredType:"inferredType",operator:"operator",type:"type"};function Pr(e){return z.isInstance(e,Sr.$type)}i(Pr,"isAction");o(Pr,"isAction");var Gi={$type:"Alternatives",cardinality:"cardinality",elements:"elements"};function Rl(e){return z.isInstance(e,Gi.$type)}i(Rl,"isAlternatives");o(Rl,"isAlternatives");var No={$type:"ArrayLiteral",elements:"elements"};function kg(e){return z.isInstance(e,No.$type)}i(kg,"isArrayLiteral");o(kg,"isArrayLiteral");var ko={$type:"ArrayType",elementType:"elementType"};function Qf(e){return z.isInstance(e,ko.$type)}i(Qf,"isArrayType");o(Qf,"isArrayType");var wr={$type:"Assignment",cardinality:"cardinality",feature:"feature",operator:"operator",predicate:"predicate",terminal:"terminal"};function dr(e){return z.isInstance(e,wr.$type)}i(dr,"isAssignment");o(dr,"isAssignment");var Po={$type:"BooleanLiteral",true:"true"};function ed(e){return z.isInstance(e,Po.$type)}i(ed,"isBooleanLiteral");o(ed,"isBooleanLiteral");var Ir={$type:"CharacterRange",cardinality:"cardinality",left:"left",lookahead:"lookahead",parenthesized:"parenthesized",right:"right"};function td(e){return z.isInstance(e,Ir.$type)}i(td,"isCharacterRange");o(td,"isCharacterRange");var Nr={$type:"Condition"};function Pg(e){return z.isInstance(e,Nr.$type)}i(Pg,"isCondition");o(Pg,"isCondition");var ji={$type:"Conjunction",left:"left",right:"right"};function rd(e){return z.isInstance(e,ji.$type)}i(rd,"isConjunction");o(rd,"isConjunction");var kr={$type:"CrossReference",cardinality:"cardinality",deprecatedSyntax:"deprecatedSyntax",isMulti:"isMulti",terminal:"terminal",type:"type"};function wn(e){return z.isInstance(e,kr.$type)}i(wn,"isCrossReference");o(wn,"isCrossReference");var Ui={$type:"Disjunction",left:"left",right:"right"};function nd(e){return z.isInstance(e,Ui.$type)}i(nd,"isDisjunction");o(nd,"isDisjunction");var Oo={$type:"EndOfFile",cardinality:"cardinality"};function ad(e){return z.isInstance(e,Oo.$type)}i(ad,"isEndOfFile");o(ad,"isEndOfFile");var lr={$type:"Grammar",imports:"imports",interfaces:"interfaces",isDeclared:"isDeclared",name:"name",rules:"rules",types:"types"};function Og(e){return z.isInstance(e,lr.$type)}i(Og,"isGrammar");o(Og,"isGrammar");var Lo={$type:"GrammarImport",path:"path"};function Lg(e){return z.isInstance(e,Lo.$type)}i(Lg,"isGrammarImport");o(Lg,"isGrammarImport");var rn={$type:"Group",cardinality:"cardinality",elements:"elements",guardCondition:"guardCondition",predicate:"predicate"};function In(e){return z.isInstance(e,rn.$type)}i(In,"isGroup");o(In,"isGroup");var Do={$type:"InferredType",name:"name"};function Rs(e){return z.isInstance(e,Do.$type)}i(Rs,"isInferredType");o(Rs,"isInferredType");var Bt={$type:"InfixRule",call:"call",dataType:"dataType",inferredType:"inferredType",name:"name",operators:"operators",parameters:"parameters",returnType:"returnType"};function Na(e){return z.isInstance(e,Bt.$type)}i(Na,"isInfixRule");o(Na,"isInfixRule");var zi={$type:"InfixRuleOperatorList",associativity:"associativity",operators:"operators"};function Dg(e){return z.isInstance(e,zi.$type)}i(Dg,"isInfixRuleOperatorList");o(Dg,"isInfixRuleOperatorList");var Mo={$type:"InfixRuleOperators",precedences:"precedences"};function Mg(e){return z.isInstance(e,Mo.$type)}i(Mg,"isInfixRuleOperators");o(Mg,"isInfixRuleOperators");var ma={$type:"Interface",attributes:"attributes",name:"name",superTypes:"superTypes"};function id(e){return z.isInstance(e,ma.$type)}i(id,"isInterface");o(id,"isInterface");var ga={$type:"Keyword",cardinality:"cardinality",predicate:"predicate",value:"value"};function pr(e){return z.isInstance(e,ga.$type)}i(pr,"isKeyword");o(pr,"isKeyword");var ya={$type:"NamedArgument",calledByName:"calledByName",parameter:"parameter",value:"value"};function xg(e){return z.isInstance(e,ya.$type)}i(xg,"isNamedArgument");o(xg,"isNamedArgument");var nn={$type:"NegatedToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};function sd(e){return z.isInstance(e,nn.$type)}i(sd,"isNegatedToken");o(sd,"isNegatedToken");var xo={$type:"Negation",value:"value"};function od(e){return z.isInstance(e,xo.$type)}i(od,"isNegation");o(od,"isNegation");var Fo={$type:"NumberLiteral",value:"value"};function Fg(e){return z.isInstance(e,Fo.$type)}i(Fg,"isNumberLiteral");o(Fg,"isNumberLiteral");var va={$type:"Parameter",name:"name"};function Gg(e){return z.isInstance(e,va.$type)}i(Gg,"isParameter");o(Gg,"isParameter");var Go={$type:"ParameterReference",parameter:"parameter"};function ld(e){return z.isInstance(e,Go.$type)}i(ld,"isParameterReference");o(ld,"isParameterReference");var wt={$type:"ParserRule",dataType:"dataType",definition:"definition",entry:"entry",fragment:"fragment",inferredType:"inferredType",name:"name",parameters:"parameters",returnType:"returnType"};function Qe(e){return z.isInstance(e,wt.$type)}i(Qe,"isParserRule");o(Qe,"isParserRule");var Bi={$type:"ReferenceType",isMulti:"isMulti",referenceType:"referenceType"};function ud(e){return z.isInstance(e,Bi.$type)}i(ud,"isReferenceType");o(ud,"isReferenceType");var an={$type:"RegexToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",regex:"regex"};function cd(e){return z.isInstance(e,an.$type)}i(cd,"isRegexToken");o(cd,"isRegexToken");var jo={$type:"ReturnType",name:"name"};function fd(e){return z.isInstance(e,jo.$type)}i(fd,"isReturnType");o(fd,"isReturnType");var sn={$type:"RuleCall",arguments:"arguments",cardinality:"cardinality",predicate:"predicate",rule:"rule"};function hr(e){return z.isInstance(e,sn.$type)}i(hr,"isRuleCall");o(hr,"isRuleCall");var Ta={$type:"SimpleType",primitiveType:"primitiveType",stringType:"stringType",typeRef:"typeRef"};function $l(e){return z.isInstance(e,Ta.$type)}i($l,"isSimpleType");o($l,"isSimpleType");var Uo={$type:"StringLiteral",value:"value"};function jg(e){return z.isInstance(e,Uo.$type)}i(jg,"isStringLiteral");o(jg,"isStringLiteral");var on={$type:"TerminalAlternatives",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};function dd(e){return z.isInstance(e,on.$type)}i(dd,"isTerminalAlternatives");o(dd,"isTerminalAlternatives");var st={$type:"TerminalElement",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};function Ug(e){return z.isInstance(e,st.$type)}i(Ug,"isTerminalElement");o(Ug,"isTerminalElement");var ln={$type:"TerminalGroup",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};function pd(e){return z.isInstance(e,ln.$type)}i(pd,"isTerminalGroup");o(pd,"isTerminalGroup");var ur={$type:"TerminalRule",definition:"definition",fragment:"fragment",hidden:"hidden",name:"name",type:"type"};function Ct(e){return z.isInstance(e,ur.$type)}i(Ct,"isTerminalRule");o(Ct,"isTerminalRule");var un={$type:"TerminalRuleCall",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",rule:"rule"};function Al(e){return z.isInstance(e,un.$type)}i(Al,"isTerminalRuleCall");o(Al,"isTerminalRuleCall");var Ki={$type:"Type",name:"name",type:"type"};function El(e){return z.isInstance(e,Ki.$type)}i(El,"isType");o(El,"isType");var cn={$type:"TypeAttribute",defaultValue:"defaultValue",isOptional:"isOptional",name:"name",type:"type"};function zg(e){return z.isInstance(e,cn.$type)}i(zg,"isTypeAttribute");o(zg,"isTypeAttribute");var fn={$type:"TypeDefinition"};function Bg(e){return z.isInstance(e,fn.$type)}i(Bg,"isTypeDefinition");o(Bg,"isTypeDefinition");var zo={$type:"UnionType",types:"types"};function hd(e){return z.isInstance(e,zo.$type)}i(hd,"isUnionType");o(hd,"isUnionType");var qi={$type:"UnorderedGroup",cardinality:"cardinality",elements:"elements"};function _l(e){return z.isInstance(e,qi.$type)}i(_l,"isUnorderedGroup");o(_l,"isUnorderedGroup");var dn={$type:"UntilToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};function md(e){return z.isInstance(e,dn.$type)}i(md,"isUntilToken");o(md,"isUntilToken");var pn={$type:"ValueLiteral"};function Kg(e){return z.isInstance(e,pn.$type)}i(Kg,"isValueLiteral");o(Kg,"isValueLiteral");var Ra={$type:"Wildcard",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};function gd(e){return z.isInstance(e,Ra.$type)}i(gd,"isWildcard");o(gd,"isWildcard");var yd=class extends Yf{static{i(this,"LangiumGrammarAstReflection")}static{o(this,"LangiumGrammarAstReflection")}constructor(){super(...arguments),this.types={AbstractElement:{name:it.$type,properties:{cardinality:{name:it.cardinality}},superTypes:[]},AbstractParserRule:{name:Fi.$type,properties:{},superTypes:[ha.$type,ft.$type]},AbstractRule:{name:ha.$type,properties:{},superTypes:[]},AbstractType:{name:ft.$type,properties:{},superTypes:[]},Action:{name:Sr.$type,properties:{cardinality:{name:Sr.cardinality},feature:{name:Sr.feature},inferredType:{name:Sr.inferredType},operator:{name:Sr.operator},type:{name:Sr.type,referenceType:ft.$type}},superTypes:[it.$type]},Alternatives:{name:Gi.$type,properties:{cardinality:{name:Gi.cardinality},elements:{name:Gi.elements,defaultValue:[]}},superTypes:[it.$type]},ArrayLiteral:{name:No.$type,properties:{elements:{name:No.elements,defaultValue:[]}},superTypes:[pn.$type]},ArrayType:{name:ko.$type,properties:{elementType:{name:ko.elementType}},superTypes:[fn.$type]},Assignment:{name:wr.$type,properties:{cardinality:{name:wr.cardinality},feature:{name:wr.feature},operator:{name:wr.operator},predicate:{name:wr.predicate},terminal:{name:wr.terminal}},superTypes:[it.$type]},BooleanLiteral:{name:Po.$type,properties:{true:{name:Po.true,defaultValue:!1}},superTypes:[Nr.$type,pn.$type]},CharacterRange:{name:Ir.$type,properties:{cardinality:{name:Ir.cardinality},left:{name:Ir.left},lookahead:{name:Ir.lookahead},parenthesized:{name:Ir.parenthesized,defaultValue:!1},right:{name:Ir.right}},superTypes:[st.$type]},Condition:{name:Nr.$type,properties:{},superTypes:[]},Conjunction:{name:ji.$type,properties:{left:{name:ji.left},right:{name:ji.right}},superTypes:[Nr.$type]},CrossReference:{name:kr.$type,properties:{cardinality:{name:kr.cardinality},deprecatedSyntax:{name:kr.deprecatedSyntax,defaultValue:!1},isMulti:{name:kr.isMulti,defaultValue:!1},terminal:{name:kr.terminal},type:{name:kr.type,referenceType:ft.$type}},superTypes:[it.$type]},Disjunction:{name:Ui.$type,properties:{left:{name:Ui.left},right:{name:Ui.right}},superTypes:[Nr.$type]},EndOfFile:{name:Oo.$type,properties:{cardinality:{name:Oo.cardinality}},superTypes:[it.$type]},Grammar:{name:lr.$type,properties:{imports:{name:lr.imports,defaultValue:[]},interfaces:{name:lr.interfaces,defaultValue:[]},isDeclared:{name:lr.isDeclared,defaultValue:!1},name:{name:lr.name},rules:{name:lr.rules,defaultValue:[]},types:{name:lr.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:Lo.$type,properties:{path:{name:Lo.path}},superTypes:[]},Group:{name:rn.$type,properties:{cardinality:{name:rn.cardinality},elements:{name:rn.elements,defaultValue:[]},guardCondition:{name:rn.guardCondition},predicate:{name:rn.predicate}},superTypes:[it.$type]},InferredType:{name:Do.$type,properties:{name:{name:Do.name}},superTypes:[ft.$type]},InfixRule:{name:Bt.$type,properties:{call:{name:Bt.call},dataType:{name:Bt.dataType},inferredType:{name:Bt.inferredType},name:{name:Bt.name},operators:{name:Bt.operators},parameters:{name:Bt.parameters,defaultValue:[]},returnType:{name:Bt.returnType,referenceType:ft.$type}},superTypes:[Fi.$type]},InfixRuleOperatorList:{name:zi.$type,properties:{associativity:{name:zi.associativity},operators:{name:zi.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:Mo.$type,properties:{precedences:{name:Mo.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:ma.$type,properties:{attributes:{name:ma.attributes,defaultValue:[]},name:{name:ma.name},superTypes:{name:ma.superTypes,defaultValue:[],referenceType:ft.$type}},superTypes:[ft.$type]},Keyword:{name:ga.$type,properties:{cardinality:{name:ga.cardinality},predicate:{name:ga.predicate},value:{name:ga.value}},superTypes:[it.$type]},NamedArgument:{name:ya.$type,properties:{calledByName:{name:ya.calledByName,defaultValue:!1},parameter:{name:ya.parameter,referenceType:va.$type},value:{name:ya.value}},superTypes:[]},NegatedToken:{name:nn.$type,properties:{cardinality:{name:nn.cardinality},lookahead:{name:nn.lookahead},parenthesized:{name:nn.parenthesized,defaultValue:!1},terminal:{name:nn.terminal}},superTypes:[st.$type]},Negation:{name:xo.$type,properties:{value:{name:xo.value}},superTypes:[Nr.$type]},NumberLiteral:{name:Fo.$type,properties:{value:{name:Fo.value}},superTypes:[pn.$type]},Parameter:{name:va.$type,properties:{name:{name:va.name}},superTypes:[]},ParameterReference:{name:Go.$type,properties:{parameter:{name:Go.parameter,referenceType:va.$type}},superTypes:[Nr.$type]},ParserRule:{name:wt.$type,properties:{dataType:{name:wt.dataType},definition:{name:wt.definition},entry:{name:wt.entry,defaultValue:!1},fragment:{name:wt.fragment,defaultValue:!1},inferredType:{name:wt.inferredType},name:{name:wt.name},parameters:{name:wt.parameters,defaultValue:[]},returnType:{name:wt.returnType,referenceType:ft.$type}},superTypes:[Fi.$type]},ReferenceType:{name:Bi.$type,properties:{isMulti:{name:Bi.isMulti,defaultValue:!1},referenceType:{name:Bi.referenceType}},superTypes:[fn.$type]},RegexToken:{name:an.$type,properties:{cardinality:{name:an.cardinality},lookahead:{name:an.lookahead},parenthesized:{name:an.parenthesized,defaultValue:!1},regex:{name:an.regex}},superTypes:[st.$type]},ReturnType:{name:jo.$type,properties:{name:{name:jo.name}},superTypes:[]},RuleCall:{name:sn.$type,properties:{arguments:{name:sn.arguments,defaultValue:[]},cardinality:{name:sn.cardinality},predicate:{name:sn.predicate},rule:{name:sn.rule,referenceType:ha.$type}},superTypes:[it.$type]},SimpleType:{name:Ta.$type,properties:{primitiveType:{name:Ta.primitiveType},stringType:{name:Ta.stringType},typeRef:{name:Ta.typeRef,referenceType:ft.$type}},superTypes:[fn.$type]},StringLiteral:{name:Uo.$type,properties:{value:{name:Uo.value}},superTypes:[pn.$type]},TerminalAlternatives:{name:on.$type,properties:{cardinality:{name:on.cardinality},elements:{name:on.elements,defaultValue:[]},lookahead:{name:on.lookahead},parenthesized:{name:on.parenthesized,defaultValue:!1}},superTypes:[st.$type]},TerminalElement:{name:st.$type,properties:{cardinality:{name:st.cardinality},lookahead:{name:st.lookahead},parenthesized:{name:st.parenthesized,defaultValue:!1}},superTypes:[it.$type]},TerminalGroup:{name:ln.$type,properties:{cardinality:{name:ln.cardinality},elements:{name:ln.elements,defaultValue:[]},lookahead:{name:ln.lookahead},parenthesized:{name:ln.parenthesized,defaultValue:!1}},superTypes:[st.$type]},TerminalRule:{name:ur.$type,properties:{definition:{name:ur.definition},fragment:{name:ur.fragment,defaultValue:!1},hidden:{name:ur.hidden,defaultValue:!1},name:{name:ur.name},type:{name:ur.type}},superTypes:[ha.$type]},TerminalRuleCall:{name:un.$type,properties:{cardinality:{name:un.cardinality},lookahead:{name:un.lookahead},parenthesized:{name:un.parenthesized,defaultValue:!1},rule:{name:un.rule,referenceType:ur.$type}},superTypes:[st.$type]},Type:{name:Ki.$type,properties:{name:{name:Ki.name},type:{name:Ki.type}},superTypes:[ft.$type]},TypeAttribute:{name:cn.$type,properties:{defaultValue:{name:cn.defaultValue},isOptional:{name:cn.isOptional,defaultValue:!1},name:{name:cn.name},type:{name:cn.type}},superTypes:[]},TypeDefinition:{name:fn.$type,properties:{},superTypes:[]},UnionType:{name:zo.$type,properties:{types:{name:zo.types,defaultValue:[]}},superTypes:[fn.$type]},UnorderedGroup:{name:qi.$type,properties:{cardinality:{name:qi.cardinality},elements:{name:qi.elements,defaultValue:[]}},superTypes:[it.$type]},UntilToken:{name:dn.$type,properties:{cardinality:{name:dn.cardinality},lookahead:{name:dn.lookahead},parenthesized:{name:dn.parenthesized,defaultValue:!1},terminal:{name:dn.terminal}},superTypes:[st.$type]},ValueLiteral:{name:pn.$type,properties:{},superTypes:[]},Wildcard:{name:Ra.$type,properties:{cardinality:{name:Ra.cardinality},lookahead:{name:Ra.lookahead},parenthesized:{name:Ra.parenthesized,defaultValue:!1}},superTypes:[st.$type]}}}},z=new yd;function qg(e){let t=e,r=!1;for(;t;){let n=bn(t.grammarSource,Qe);if(n&&n.dataType)t=t.container,r=!0;else return r?t:void 0}}i(qg,"getDatatypeNode");o(qg,"getDatatypeNode");function ka(e){return new Sa(e,t=>fr(t)?t.content:[],{includeRoot:!0})}i(ka,"streamCst");o(ka,"streamCst");function Wg(e){return ka(e).filter(Cn)}i(Wg,"flattenCst");o(Wg,"flattenCst");function vd(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}i(vd,"isChildNode");o(vd,"isChildNode");function ts(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}i(ts,"tokenToRange");o(ts,"tokenToRange");function Pa(e){if(!e)return;let{offset:t,end:r,range:n}=e;return{range:n,offset:t,end:r,length:r-t}}i(Pa,"toDocumentSegment");o(Pa,"toDocumentSegment");var qt;(function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"})(qt||(qt={}));function Td(e,t){if(e.end.linet.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return qt.After;let r=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,n=e.end.lineqt.After}i(Rd,"inRange");o(Rd,"inRange");var $d=/^[\w\p{L}]$/u;function Vg(e,t,r=$d){if(e){if(t>0){let n=t-e.offset,a=e.text.charAt(n);r.test(a)||t--}return Cl(e,t)}}i(Vg,"findDeclarationNodeAtOffset");o(Vg,"findDeclarationNodeAtOffset");function Ad(e,t){if(e){let r=Cd(e,!0);if(r&&Bo(r,t))return r;if(vl(e)){let n=e.content.findIndex(a=>!a.hidden);for(let a=n-1;a>=0;a--){let s=e.content[a];if(Bo(s,t))return s}}}}i(Ad,"findCommentNode");o(Ad,"findCommentNode");function Bo(e,t){return Cn(e)&&t.includes(e.tokenType.name)}i(Bo,"isCommentNode");o(Bo,"isCommentNode");function Cl(e,t){if(Cn(e))return e;if(fr(e)){let r=_d(e,t,!1);if(r)return Cl(r,t)}}i(Cl,"findLeafNodeAtOffset");o(Cl,"findLeafNodeAtOffset");function Ed(e,t){if(Cn(e))return e;if(fr(e)){let r=_d(e,t,!0);if(r)return Ed(r,t)}}i(Ed,"findLeafNodeBeforeOffset");o(Ed,"findLeafNodeBeforeOffset");function _d(e,t,r){let n=0,a=e.content.length-1,s;for(;n<=a;){let l=Math.floor((n+a)/2),u=e.content[l];if(u.offset<=t&&u.end>t)return u;u.end<=t?(s=r?u:void 0,n=l+1):a=l-1}return s}i(_d,"binarySearch");o(_d,"binarySearch");function Cd(e,t=!0){for(;e.container;){let r=e.container,n=r.content.indexOf(e);for(;n>0;){n--;let a=r.content[n];if(t||!a.hidden)return a}e=r}}i(Cd,"getPreviousNode");o(Cd,"getPreviousNode");function Hg(e,t=!0){for(;e.container;){let r=e.container,n=r.content.indexOf(e),a=r.content.length-1;for(;nGd,"findAssignment"),findNameAssignment:i(()=>Ol,"findNameAssignment"),findNodeForKeyword:i(()=>Fd,"findNodeForKeyword"),findNodeForProperty:i(()=>Nl,"findNodeForProperty"),findNodesForKeyword:i(()=>ay,"findNodesForKeyword"),findNodesForKeywordInternal:i(()=>Pl,"findNodesForKeywordInternal"),findNodesForProperty:i(()=>xd,"findNodesForProperty"),getActionAtElement:i(()=>Ud,"getActionAtElement"),getActionType:i(()=>Bd,"getActionType"),getAllReachableRules:i(()=>Il,"getAllReachableRules"),getAllRulesUsedForCrossReferences:i(()=>ny,"getAllRulesUsedForCrossReferences"),getCrossReferenceTerminal:i(()=>Dd,"getCrossReferenceTerminal"),getEntryRule:i(()=>Pd,"getEntryRule"),getExplicitRuleType:i(()=>As,"getExplicitRuleType"),getHiddenRules:i(()=>Od,"getHiddenRules"),getRuleType:i(()=>Kd,"getRuleType"),getRuleTypeName:i(()=>uy,"getRuleTypeName"),getTypeName:i(()=>Rn,"getTypeName"),isArrayCardinality:i(()=>sy,"isArrayCardinality"),isArrayOperator:i(()=>oy,"isArrayOperator"),isCommentTerminal:i(()=>Md,"isCommentTerminal"),isDataType:i(()=>ly,"isDataType"),isDataTypeRule:i(()=>$s,"isDataTypeRule"),isOptionalCardinality:i(()=>iy,"isOptionalCardinality"),terminalRegex:i(()=>Es,"terminalRegex")});var bl=class extends Error{static{i(this,"ErrorWithLocation")}static{o(this,"ErrorWithLocation")}constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};function Fr(e,t="Error: Got unexpected value."){throw new Error(t)}i(Fr,"assertUnreachable");o(Fr,"assertUnreachable");function Sd(e,t="Error: Condition is violated."){if(!e)throw new Error(t)}i(Sd,"assertCondition");o(Sd,"assertCondition");var wd={};xr(wd,{NEWLINE_REGEXP:i(()=>Qg,"NEWLINE_REGEXP"),escapeRegExp:i(()=>ja,"escapeRegExp"),getTerminalParts:i(()=>ty,"getTerminalParts"),isMultilineComment:i(()=>Id,"isMultilineComment"),isWhitespace:i(()=>wl,"isWhitespace"),partialMatches:i(()=>Nd,"partialMatches"),partialRegExp:i(()=>kd,"partialRegExp"),whitespaceCharacters:i(()=>ry,"whitespaceCharacters")});function K(e){return e.charCodeAt(0)}i(K,"cc");o(K,"cc");function co(e,t){Array.isArray(e)?e.forEach(function(r){t.push(r)}):t.push(e)}i(co,"insertToSet");o(co,"insertToSet");function oa(e,t){if(e[t]===!0)throw"duplicate flag "+t;let r=e[t];e[t]=!0}i(oa,"addFlag");o(oa,"addFlag");function Yr(e){if(e===void 0)throw Error("Internal Error - Should never get here!");return!0}i(Yr,"ASSERT_EXISTS");o(Yr,"ASSERT_EXISTS");function Pi(){throw Error("Internal Error - Should never get here!")}i(Pi,"ASSERT_NEVER_REACH_HERE");o(Pi,"ASSERT_NEVER_REACH_HERE");function Yc(e){return e.type==="Character"}i(Yc,"isCharacter");o(Yc,"isCharacter");var Ko=[];for(let e=K("0");e<=K("9");e++)Ko.push(e);var qo=[K("_")].concat(Ko);for(let e=K("a");e<=K("z");e++)qo.push(e);for(let e=K("A");e<=K("Z");e++)qo.push(e);var Ph=[K(" "),K("\f"),K(` +`),K("\r"),K(" "),K("\v"),K(" "),K("\xA0"),K("\u1680"),K("\u2000"),K("\u2001"),K("\u2002"),K("\u2003"),K("\u2004"),K("\u2005"),K("\u2006"),K("\u2007"),K("\u2008"),K("\u2009"),K("\u200A"),K("\u2028"),K("\u2029"),K("\u202F"),K("\u205F"),K("\u3000"),K("\uFEFF")],iw=/[0-9a-fA-F]/,Fs=/[0-9]/,sw=/[1-9]/,Zg=class{static{i(this,"RegExpParser")}static{o(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let t=this.disjunction();this.consumeChar("/");let r={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":oa(r,"global");break;case"i":oa(r,"ignoreCase");break;case"m":oa(r,"multiLine");break;case"u":oa(r,"unicode");break;case"y":oa(r,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:t,loc:this.loc(0)}}disjunction(){let e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){let e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let t;switch(this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead";break;case"<":{switch(this.popChar()){case"=":t="Lookbehind";break;case"!":t="NegativeLookbehind"}break}}Yr(t);let r=this.disjunction();return this.consumeChar(")"),{type:t,value:r,loc:this.loc(e)}}return Pi()}quantifier(e=!1){let t,r=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":let n=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:n,atMost:n};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),t={atLeast:n,atMost:a}):t={atLeast:n,atMost:1/0},this.consumeChar("}");break}if(e===!0&&t===void 0)return;Yr(t);break}if(!(e===!0&&t===void 0)&&Yr(t))return this.peekChar(0)==="?"?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(r),t}atom(){let e,t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Yr(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):Pi()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[K(` +`),K("\r"),K("\u2028"),K("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=Ko;break;case"D":e=Ko,t=!0;break;case"s":e=Ph;break;case"S":e=Ph,t=!0;break;case"w":e=qo;break;case"W":e=qo,t=!0;break}return Yr(e)?{type:"Set",value:e,complement:t}:Pi()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=K("\f");break;case"n":e=K(` +`);break;case"r":e=K("\r");break;case"t":e=K(" ");break;case"v":e=K("\v");break}return Yr(e)?{type:"Character",value:e}:Pi()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:K("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:K(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:K(e)}}}characterClass(){let e=[],t=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),t=!0);this.isClassAtom();){let r=this.classAtom(),n=r.type==="Character";if(Yc(r)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(Yc(a)){if(a.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}},Sl=class{static{i(this,"BaseRegExpVisitor")}static{o(this,"BaseRegExpVisitor")}visitChildren(e){for(let t in e){let r=e[t];e.hasOwnProperty(t)&&(r.type!==void 0?this.visit(r):Array.isArray(r)&&r.forEach(n=>{this.visit(n)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Lookbehind":this.visitLookbehind(e);break;case"NegativeLookbehind":this.visitNegativeLookbehind(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitLookbehind(e){}visitNegativeLookbehind(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}},Qg=/\r?\n/gm,ey=new Zg,ow=class extends Sl{static{i(this,"TerminalRegExpVisitor")}static{o(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let t=String.fromCharCode(e.value);if(!this.multiline&&t===` +`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=ja(t);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitSet(e){if(!this.multiline){let t=this.regex.substring(e.loc.begin,e.loc.end),r=new RegExp(t);this.multiline=!!` +`.match(r)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},hn=new ow;function ty(e){try{typeof e!="string"&&(e=e.source),e=`/${e}/`;let t=ey.pattern(e),r=[];for(let n of t.value.value)hn.reset(e),hn.visit(n),r.push({start:hn.startRegexp,end:hn.endRegex});return r}catch{return[]}}i(ty,"getTerminalParts");o(ty,"getTerminalParts");function Id(e){try{return typeof e=="string"&&(e=new RegExp(e)),e=e.toString(),hn.reset(e),hn.visit(ey.pattern(e)),hn.multiline}catch{return!1}}i(Id,"isMultilineComment");o(Id,"isMultilineComment");var ry=`\f +\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");function wl(e){let t=typeof e=="string"?new RegExp(e):e;return ry.some(r=>t.test(r))}i(wl,"isWhitespace");o(wl,"isWhitespace");function ja(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}i(ja,"escapeRegExp");o(ja,"escapeRegExp");function Nd(e,t){let r=kd(e),n=t.match(r);return!!n&&n[0].length>0}i(Nd,"partialMatches");o(Nd,"partialMatches");function kd(e){typeof e=="string"&&(e=new RegExp(e));let t=e,r=e.source,n=0;function a(){let s="",l;function u(f){s+=r.substr(n,f),n+=f}i(u,"appendRaw"),o(u,"appendRaw");function c(f){s+="(?:"+r.substr(n,f)+"|$)",n+=f}for(i(c,"appendOptional"),o(c,"appendOptional");n",n)-n+1);break;default:c(2);break}break;case"[":l=/\[(?:\\.|.)*?\]/g,l.lastIndex=n,l=l.exec(r)||[],c(l[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":u(1);break;case"{":l=/\{\d+,?\d*\}/g,l.lastIndex=n,l=l.exec(r),l?u(l[0].length):c(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":s+="(?:",n+=3,s+=a()+"|$)";break;case"=":s+="(?=",n+=3,s+=a()+")";break;case"!":l=n,n+=3,a(),s+=r.substr(l,n-l);break;case"<":switch(r[n+3]){case"=":case"!":l=n,n+=4,a(),s+=r.substr(l,n-l);break;default:u(r.indexOf(">",n)-n+1),s+=a()+"|$)";break}break}else u(1),s+=a()+"|$)";break;case")":return++n,s;default:c(1);break}return s}return i(a,"process2"),o(a,"process"),new RegExp(a(),e.flags)}i(kd,"partialRegExp");o(kd,"partialRegExp");function Pd(e){return e.rules.find(t=>Qe(t)&&t.entry)}i(Pd,"getEntryRule");o(Pd,"getEntryRule");function Od(e){return e.rules.filter(t=>Ct(t)&&t.hidden)}i(Od,"getHiddenRules");o(Od,"getHiddenRules");function Il(e,t){let r=new Set,n=Pd(e);if(!n)return new Set(e.rules);let a=[n].concat(Od(e));for(let l of a)Ld(l,r,t);let s=new Set;for(let l of e.rules)(r.has(l.name)||Ct(l)&&l.hidden)&&s.add(l);return s}i(Il,"getAllReachableRules");o(Il,"getAllReachableRules");function Ld(e,t,r){t.add(e.name),$r(e).forEach(n=>{if(hr(n)||r&&Al(n)){let a=n.rule.ref;a&&!t.has(a.name)&&Ld(a,t,r)}})}i(Ld,"ruleDfs");o(Ld,"ruleDfs");function ny(e){let t=new Set;return $r(e).forEach(r=>{wn(r)&&(Qe(r.type.ref)&&t.add(r.type.ref),Rs(r.type.ref)&&Qe(r.type.ref.$container)&&t.add(r.type.ref.$container))}),t}i(ny,"getAllRulesUsedForCrossReferences");o(ny,"getAllRulesUsedForCrossReferences");function Dd(e){if(e.terminal)return e.terminal;if(e.type.ref)return Ol(e.type.ref)?.terminal}i(Dd,"getCrossReferenceTerminal");o(Dd,"getCrossReferenceTerminal");function Md(e){return e.hidden&&!wl(Es(e))}i(Md,"isCommentTerminal");o(Md,"isCommentTerminal");function xd(e,t){return!e||!t?[]:kl(e,t,e.astNode,!0)}i(xd,"findNodesForProperty");o(xd,"findNodesForProperty");function Nl(e,t,r){if(!e||!t)return;let n=kl(e,t,e.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}i(Nl,"findNodeForProperty");o(Nl,"findNodeForProperty");function kl(e,t,r,n){if(!n){let a=bn(e.grammarSource,dr);if(a&&a.feature===t)return[e]}return fr(e)&&e.astNode===r?e.content.flatMap(a=>kl(a,t,r,!1)):[]}i(kl,"findNodesForPropertyInternal");o(kl,"findNodesForPropertyInternal");function ay(e,t){return e?Pl(e,t,e?.astNode):[]}i(ay,"findNodesForKeyword");o(ay,"findNodesForKeyword");function Fd(e,t,r){if(!e)return;let n=Pl(e,t,e?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}i(Fd,"findNodeForKeyword");o(Fd,"findNodeForKeyword");function Pl(e,t,r){if(e.astNode!==r)return[];if(pr(e.grammarSource)&&e.grammarSource.value===t)return[e];let n=ka(e).iterator(),a,s=[];do if(a=n.next(),!a.done){let l=a.value;l.astNode===r?pr(l.grammarSource)&&l.grammarSource.value===t&&s.push(l):n.prune()}while(!a.done);return s}i(Pl,"findNodesForKeywordInternal");o(Pl,"findNodesForKeywordInternal");function Gd(e){let t=e.astNode;for(;t===e.container?.astNode;){let r=bn(e.grammarSource,dr);if(r)return r;e=e.container}}i(Gd,"findAssignment");o(Gd,"findAssignment");function Ol(e){let t=e;return Rs(t)&&(Pr(t.$container)?t=t.$container.$container:Sn(t.$container)?t=t.$container:Fr(t.$container)),jd(e,t,new Map)}i(Ol,"findNameAssignment");o(Ol,"findNameAssignment");function jd(e,t,r){function n(a,s){let l;return bn(a,dr)||(l=jd(s,s,r)),r.set(e,l),l}if(i(n,"go"),o(n,"go"),r.has(e))return r.get(e);r.set(e,void 0);for(let a of $r(t)){if(dr(a)&&a.feature.toLowerCase()==="name")return r.set(e,a),a;if(hr(a)&&Qe(a.rule.ref))return n(a,a.rule.ref);if($l(a)&&a.typeRef?.ref)return n(a,a.typeRef.ref)}}i(jd,"findNameAssignmentInternal");o(jd,"findNameAssignmentInternal");function Ud(e){let t=e.$container;if(In(t)){let r=t.elements,n=r.indexOf(e);for(let a=n-1;a>=0;a--){let s=r[a];if(Pr(s))return s;{let l=$r(r[a]).find(Pr);if(l)return l}}}if(Tl(t))return Ud(t)}i(Ud,"getActionAtElement");o(Ud,"getActionAtElement");function iy(e,t){return e==="?"||e==="*"||In(t)&&!!t.guardCondition}i(iy,"isOptionalCardinality");o(iy,"isOptionalCardinality");function sy(e){return e==="*"||e==="+"}i(sy,"isArrayCardinality");o(sy,"isArrayCardinality");function oy(e){return e==="+="}i(oy,"isArrayOperator");o(oy,"isArrayOperator");function $s(e){return zd(e,new Set)}i($s,"isDataTypeRule");o($s,"isDataTypeRule");function zd(e,t){if(t.has(e))return!0;t.add(e);for(let r of $r(e))if(hr(r)){if(!r.rule.ref||Qe(r.rule.ref)&&!zd(r.rule.ref,t)||Na(r.rule.ref))return!1}else{if(dr(r))return!1;if(Pr(r))return!1}return!!e.definition}i(zd,"isDataTypeRuleInternal");o(zd,"isDataTypeRuleInternal");function ly(e){return Wo(e.type,new Set)}i(ly,"isDataType");o(ly,"isDataType");function Wo(e,t){if(t.has(e))return!0;if(t.add(e),Qf(e))return!1;if(ud(e))return!1;if(hd(e))return e.types.every(r=>Wo(r,t));if($l(e)){if(e.primitiveType!==void 0)return!0;if(e.stringType!==void 0)return!0;if(e.typeRef!==void 0){let r=e.typeRef.ref;return El(r)?Wo(r.type,t):!1}else return!1}else return!1}i(Wo,"isDataTypeInternal");o(Wo,"isDataTypeInternal");function As(e){if(!Ct(e)){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){let t=e.returnType.ref;if(t)return t.name}}}i(As,"getExplicitRuleType");o(As,"getExplicitRuleType");function Rn(e){if(Sn(e))return Qe(e)&&$s(e)?e.name:As(e)??e.name;if(id(e)||El(e)||fd(e))return e.name;if(Pr(e)){let t=Bd(e);if(t)return t}else if(Rs(e))return e.name;throw new Error("Cannot get name of Unknown Type")}i(Rn,"getTypeName");o(Rn,"getTypeName");function Bd(e){if(e.inferredType)return e.inferredType.name;if(e.type?.ref)return Rn(e.type.ref)}i(Bd,"getActionType");o(Bd,"getActionType");function uy(e){return Ct(e)?e.type?.name??"string":Qe(e)&&$s(e)?e.name:As(e)??e.name}i(uy,"getRuleTypeName");o(uy,"getRuleTypeName");function Kd(e){return Ct(e)?e.type?.name??"string":As(e)??e.name}i(Kd,"getRuleType");o(Kd,"getRuleType");function Es(e){let t={s:!1,i:!1,u:!1},r=Nn(e.definition,t),n=Object.entries(t).filter(([,a])=>a).map(([a])=>a).join("");return new RegExp(r,n)}i(Es,"terminalRegex");o(Es,"terminalRegex");var qd=/[\s\S]/.source;function Nn(e,t){if(dd(e))return cy(e);if(pd(e))return fy(e);if(td(e))return hy(e);if(Al(e)){let r=e.rule.ref;if(!r)throw new Error("Missing rule reference.");return Yt(Nn(r.definition),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}else{if(sd(e))return py(e);if(md(e))return dy(e);if(cd(e)){let r=e.regex.lastIndexOf("/"),n=e.regex.substring(1,r),a=e.regex.substring(r+1);return t&&(t.i=a.includes("i"),t.s=a.includes("s"),t.u=a.includes("u")),Yt(n,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}else{if(gd(e))return Yt(qd,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized});throw new Error(`Invalid terminal element: ${e?.$type}, ${e?.$cstNode?.text}`)}}}i(Nn,"abstractElementToRegex");o(Nn,"abstractElementToRegex");function cy(e){return Yt(e.elements.map(t=>Nn(t)).join("|"),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}i(cy,"terminalAlternativesToRegex");o(cy,"terminalAlternativesToRegex");function fy(e){return Yt(e.elements.map(t=>Nn(t)).join(""),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}i(fy,"terminalGroupToRegex");o(fy,"terminalGroupToRegex");function dy(e){return Yt(`${qd}*?${Nn(e.terminal)}`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}i(dy,"untilTokenToRegex");o(dy,"untilTokenToRegex");function py(e){return Yt(`(?!${Nn(e.terminal)})${qd}*?`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}i(py,"negateTokenToRegex");o(py,"negateTokenToRegex");function hy(e){return e.right?Yt(`[${fo(e.left)}-${fo(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1}):Yt(fo(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}i(hy,"characterRangeToRegex");o(hy,"characterRangeToRegex");function fo(e){return ja(e.value)}i(fo,"keywordToRegex");o(fo,"keywordToRegex");function Yt(e,t){return(t.parenthesized||t.lookahead||t.wrap!==!1)&&(e=`(${t.lookahead??(t.parenthesized?"":"?:")}${e})`),t.cardinality?`${e}${t.cardinality}`:e}i(Yt,"withCardinality");o(Yt,"withCardinality");function Wd(e){let t=[],r=e.Grammar;for(let n of r.rules)Ct(n)&&Md(n)&&Id(Es(n))&&t.push(n.name);return{multilineCommentRules:t,nameRegexp:$d}}i(Wd,"createGrammarConfig");o(Wd,"createGrammarConfig");var lw=typeof global=="object"&&global&&global.Object===Object&&global,my=lw,uw=typeof self=="object"&&self&&self.Object===Object&&self,cw=my||uw||Function("return this")(),Jt=cw,fw=Jt.Symbol,Et=fw,gy=Object.prototype,dw=gy.hasOwnProperty,pw=gy.toString,gi=Et?Et.toStringTag:void 0;function yy(e){var t=dw.call(e,gi),r=e[gi];try{e[gi]=void 0;var n=!0}catch{}var a=pw.call(e);return n&&(t?e[gi]=r:delete e[gi]),a}i(yy,"getRawTag");o(yy,"getRawTag");var hw=yy,mw=Object.prototype,gw=mw.toString;function vy(e){return gw.call(e)}i(vy,"objectToString");o(vy,"objectToString");var yw=vy,vw="[object Null]",Tw="[object Undefined]",Oh=Et?Et.toStringTag:void 0;function Ty(e){return e==null?e===void 0?Tw:vw:Oh&&Oh in Object(e)?hw(e):yw(e)}i(Ty,"baseGetTag");o(Ty,"baseGetTag");var Gr=Ty;function Ry(e){return e!=null&&typeof e=="object"}i(Ry,"isObjectLike");o(Ry,"isObjectLike");var Dt=Ry,Rw="[object Symbol]";function $y(e){return typeof e=="symbol"||Dt(e)&&Gr(e)==Rw}i($y,"isSymbol");o($y,"isSymbol");var Ll=$y;function Ay(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r0){if(++t>=nI)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}i(Gy,"shortOut");o(Gy,"shortOut");var sI=Gy;function jy(e){return function(){return e}}i(jy,"constant");o(jy,"constant");var oI=jy,lI=(function(){try{var e=Pn(Object,"defineProperty");return e({},"",{}),e}catch{}})(),Vo=lI,uI=Vo?function(e,t){return Vo(e,"toString",{configurable:!0,enumerable:!1,value:oI(t),writable:!0})}:Oa,cI=uI,fI=sI(cI),dI=fI;function Uy(e,t){for(var r=-1,n=e==null?0:e.length;++r-1}i(Hy,"arrayIncludes");o(Hy,"arrayIncludes");var Yy=Hy,mI=9007199254740991,gI=/^(?:0|[1-9]\d*)$/;function Xy(e,t){var r=typeof e;return t=t??mI,!!t&&(r=="number"||r!="symbol"&&gI.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=RI}i(nv,"isLength");o(nv,"isLength");var Jd=nv;function av(e){return e!=null&&Jd(e.length)&&!Ar(e)}i(av,"isArrayLike");o(av,"isArrayLike");var Zt=av;function iv(e,t,r){if(!_t(r))return!1;var n=typeof t;return(n=="number"?Zt(r)&&Dl(t,r.length):n=="string"&&t in r)?bs(r[t],e):!1}i(iv,"isIterateeCall");o(iv,"isIterateeCall");var xl=iv;function sv(e){return Xd(function(t,r){var n=-1,a=r.length,s=a>1?r[a-1]:void 0,l=a>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(a--,s):void 0,l&&xl(r[0],r[1],l)&&(s=a<3?void 0:s,a=1),t=Object(t);++n-1}i(Mv,"listCacheHas");o(Mv,"listCacheHas");var FN=Mv;function xv(e,t){var r=this.__data__,n=jl(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}i(xv,"listCacheSet");o(xv,"listCacheSet");var GN=xv;function Ln(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t0&&r(u)?t>1?rp(u,t-1,r,n,a):tp(a,u):n||(a[a.length]=u)}return a}i(rp,"baseFlatten");o(rp,"baseFlatten");var np=rp;function Qv(e){var t=e==null?0:e.length;return t?np(e,1):[]}i(Qv,"flatten");o(Qv,"flatten");var Ot=Qv,ik=Tv(Object.getPrototypeOf,Object),eT=ik;function tT(e,t,r){var n=-1,a=e.length;t<0&&(t=-t>a?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var s=Array(a);++nu))return!1;var f=s.get(e),d=s.get(t);if(f&&d)return f==t&&d==e;var p=-1,m=!0,v=r&YP?new op:void 0;for(s.set(e,t),s.set(t,e);++p2?t[2]:void 0;for(a&&xl(t[0],t[1],a)&&(n=1);++r=z0&&(s=lp,l=!1,t=new op(t));e:for(;++a-1?a[s?t[l]:l]:void 0}}i(MR,"createFind");o(MR,"createFind");var H0=MR,Y0=Math.max;function xR(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var a=r==null?0:Cs(r);return a<0&&(a=Y0(n+a,0)),Ky(e,Qt(t,3),a)}i(xR,"findIndex");o(xR,"findIndex");var X0=xR,J0=H0(X0),Da=J0;function FR(e){return e&&e.length?e[0]:void 0}i(FR,"head");o(FR,"head");var Mt=FR;function GR(e,t){var r=-1,n=Zt(e)?Array(e.length):[];return xn(e,function(a,s,l){n[++r]=t(a,s,l)}),n}i(GR,"baseMap");o(GR,"baseMap");var Z0=GR;function jR(e,t){var r=re(e)?_s:Z0;return r(e,Qt(t,3))}i(jR,"map");o(jR,"map");var G=jR;function UR(e,t){return np(G(e,t),1)}i(UR,"flatMap");o(UR,"flatMap");var At=UR,Q0=Object.prototype,eO=Q0.hasOwnProperty,tO=G0(function(e,t,r){eO.call(e,r)?e[r].push(t):Yd(e,r,[t])}),rO=tO,nO=Object.prototype,aO=nO.hasOwnProperty;function zR(e,t){return e!=null&&aO.call(e,t)}i(zR,"baseHas");o(zR,"baseHas");var iO=zR;function BR(e,t){return e!=null&&oR(e,t,iO)}i(BR,"has");o(BR,"has");var B=BR,sO="[object String]";function KR(e){return typeof e=="string"||!re(e)&&Dt(e)&&Gr(e)==sO}i(KR,"isString");o(KR,"isString");var ot=KR;function qR(e,t){return _s(t,function(r){return e[r]})}i(qR,"baseValues");o(qR,"baseValues");var oO=qR;function WR(e){return e==null?[]:oO(e,pt(e))}i(WR,"values");o(WR,"values");var xe=WR,lO=Math.max;function VR(e,t,r,n){e=Zt(e)?e:xe(e),r=r&&!n?Cs(r):0;var a=e.length;return r<0&&(r=lO(a+r,0)),ot(e)?r<=a&&e.indexOf(t,r)>-1:!!a&&Hd(e,t,r)>-1}i(VR,"includes");o(VR,"includes");var nt=VR,uO=Math.max;function HR(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var a=r==null?0:Cs(r);return a<0&&(a=uO(n+a,0)),Hd(e,t,a)}i(HR,"indexOf");o(HR,"indexOf");var fm=HR,cO="[object Map]",fO="[object Set]",dO=Object.prototype,pO=dO.hasOwnProperty;function YR(e){if(e==null)return!0;if(Zt(e)&&(re(e)||typeof e=="string"||typeof e.splice=="function"||rs(e)||Zd(e)||Fl(e)))return!e.length;var t=La(e);if(t==cO||t==fO)return!e.size;if(ws(e))return!$v(e).length;for(var r in e)if(pO.call(e,r))return!1;return!0}i(YR,"isEmpty");o(YR,"isEmpty");var he=YR,hO="[object RegExp]";function XR(e){return Dt(e)&&Gr(e)==hO}i(XR,"baseIsRegExp");o(XR,"baseIsRegExp");var mO=XR,dm=Or&&Or.isRegExp,gO=dm?Is(dm):mO,mr=gO;function JR(e){return e===void 0}i(JR,"isUndefined");o(JR,"isUndefined");var gr=JR,yO="Expected a function";function ZR(e){if(typeof e!="function")throw new TypeError(yO);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}i(ZR,"negate");o(ZR,"negate");var vO=ZR;function QR(e,t,r,n){if(!_t(e))return e;t=ql(t,e);for(var a=-1,s=t.length,l=s-1,u=e;u!=null&&++a=bO){var f=t?null:CO(e);if(f)return up(f);l=!1,a=lp,c=new op}else c=t?[]:u;e:for(;++n{t.accept(e)})}},et=class extends er{static{i(this,"NonTerminal")}static{o(this,"NonTerminal")}constructor(e){super([]),this.idx=1,ht(this,xt(e,t=>t!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},Ua=class extends er{static{i(this,"Rule")}static{o(this,"Rule")}constructor(e){super(e.definition),this.orgText="",ht(this,xt(e,t=>t!==void 0))}},lt=class extends er{static{i(this,"Alternative")}static{o(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,ht(this,xt(e,t=>t!==void 0))}},We=class extends er{static{i(this,"Option")}static{o(this,"Option")}constructor(e){super(e.definition),this.idx=1,ht(this,xt(e,t=>t!==void 0))}},gt=class extends er{static{i(this,"RepetitionMandatory")}static{o(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,ht(this,xt(e,t=>t!==void 0))}},yt=class extends er{static{i(this,"RepetitionMandatoryWithSeparator")}static{o(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,ht(this,xt(e,t=>t!==void 0))}},Se=class extends er{static{i(this,"Repetition")}static{o(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,ht(this,xt(e,t=>t!==void 0))}},ut=class extends er{static{i(this,"RepetitionWithSeparator")}static{o(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,ht(this,xt(e,t=>t!==void 0))}},ct=class extends er{static{i(this,"Alternation")}static{o(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,ht(this,xt(e,t=>t!==void 0))}},Te=class{static{i(this,"Terminal")}static{o(this,"Terminal")}constructor(e){this.idx=1,ht(this,xt(e,t=>t!==void 0))}accept(e){e.visit(this)}};function d$(e){return G(e,Yi)}i(d$,"serializeGrammar");o(d$,"serializeGrammar");function Yi(e){function t(r){return G(r,Yi)}if(i(t,"convertDefinition"),o(t,"convertDefinition"),e instanceof et){let r={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return ot(e.label)&&(r.label=e.label),r}else{if(e instanceof lt)return{type:"Alternative",definition:t(e.definition)};if(e instanceof We)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof gt)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof yt)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:Yi(new Te({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof ut)return{type:"RepetitionWithSeparator",idx:e.idx,separator:Yi(new Te({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof Se)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof ct)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof Te){let r={type:"Terminal",name:e.terminalType.name,label:c$(e.terminalType),idx:e.idx};ot(e.label)&&(r.terminalLabel=e.label);let n=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(r.pattern=mr(n)?n.source:n),r}else{if(e instanceof Ua)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}}}i(Yi,"serializeProduction");o(Yi,"serializeProduction");var za=class{static{i(this,"GAstVisitor")}static{o(this,"GAstVisitor")}visit(e){let t=e;switch(t.constructor){case et:return this.visitNonTerminal(t);case lt:return this.visitAlternative(t);case We:return this.visitOption(t);case gt:return this.visitRepetitionMandatory(t);case yt:return this.visitRepetitionMandatoryWithSeparator(t);case ut:return this.visitRepetitionWithSeparator(t);case Se:return this.visitRepetition(t);case ct:return this.visitAlternation(t);case Te:return this.visitTerminal(t);case Ua:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}};function p$(e){return e instanceof lt||e instanceof We||e instanceof Se||e instanceof gt||e instanceof yt||e instanceof ut||e instanceof Te||e instanceof Ua}i(p$,"isSequenceProd");o(p$,"isSequenceProd");function os(e,t=[]){return e instanceof We||e instanceof Se||e instanceof ut?!0:e instanceof ct?o$(e.definition,n=>os(n,t)):e instanceof et&&nt(t,e)?!1:e instanceof er?(e instanceof et&&t.push(e),Lt(e.definition,n=>os(n,t))):!1}i(os,"isOptionalProd");o(os,"isOptionalProd");function h$(e){return e instanceof ct}i(h$,"isBranchingProd");o(h$,"isBranchingProd");function It(e){if(e instanceof et)return"SUBRULE";if(e instanceof We)return"OPTION";if(e instanceof ct)return"OR";if(e instanceof gt)return"AT_LEAST_ONE";if(e instanceof yt)return"AT_LEAST_ONE_SEP";if(e instanceof ut)return"MANY_SEP";if(e instanceof Se)return"MANY";if(e instanceof Te)return"CONSUME";throw Error("non exhaustive match")}i(It,"getProductionDslName");o(It,"getProductionDslName");var Hl=class{static{i(this,"RestWalker")}static{o(this,"RestWalker")}walk(e,t=[]){q(e.definition,(r,n)=>{let a=qe(e.definition,n+1);if(r instanceof et)this.walkProdRef(r,a,t);else if(r instanceof Te)this.walkTerminal(r,a,t);else if(r instanceof lt)this.walkFlat(r,a,t);else if(r instanceof We)this.walkOption(r,a,t);else if(r instanceof gt)this.walkAtLeastOne(r,a,t);else if(r instanceof yt)this.walkAtLeastOneSep(r,a,t);else if(r instanceof ut)this.walkManySep(r,a,t);else if(r instanceof Se)this.walkMany(r,a,t);else if(r instanceof ct)this.walkOr(r,a,t);else throw Error("non exhaustive match")})}walkTerminal(e,t,r){}walkProdRef(e,t,r){}walkFlat(e,t,r){let n=t.concat(r);this.walk(e,n)}walkOption(e,t,r){let n=t.concat(r);this.walk(e,n)}walkAtLeastOne(e,t,r){let n=[new We({definition:e.definition})].concat(t,r);this.walk(e,n)}walkAtLeastOneSep(e,t,r){let n=ef(e,t,r);this.walk(e,n)}walkMany(e,t,r){let n=[new We({definition:e.definition})].concat(t,r);this.walk(e,n)}walkManySep(e,t,r){let n=ef(e,t,r);this.walk(e,n)}walkOr(e,t,r){let n=t.concat(r);q(e.definition,a=>{let s=new lt({definition:[a]});this.walk(s,n)})}};function ef(e,t,r){return[new We({definition:[new Te({terminalType:e.separator})].concat(e.definition)})].concat(t,r)}i(ef,"restForRepetitionWithSeparator");o(ef,"restForRepetitionWithSeparator");function Ba(e){if(e instanceof et)return Ba(e.referencedRule);if(e instanceof Te)return y$(e);if(p$(e))return m$(e);if(h$(e))return g$(e);throw Error("non exhaustive match")}i(Ba,"first");o(Ba,"first");function m$(e){let t=[],r=e.definition,n=0,a=r.length>n,s,l=!0;for(;a&&l;)s=r[n],l=os(s),t=t.concat(Ba(s)),n=n+1,a=r.length>n;return dp(t)}i(m$,"firstForSequence");o(m$,"firstForSequence");function g$(e){let t=G(e.definition,r=>Ba(r));return dp(Ot(t))}i(g$,"firstForBranching");o(g$,"firstForBranching");function y$(e){return[e.terminalType]}i(y$,"firstForTerminal");o(y$,"firstForTerminal");var v$="_~IN~_",wO=class extends Hl{static{i(this,"ResyncFollowsWalker")}static{o(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,r){}walkProdRef(e,t,r){let n=R$(e.referencedRule,e.idx)+this.topProd.name,a=t.concat(r),s=new lt({definition:a}),l=Ba(s);this.follows[n]=l}};function T$(e){let t={};return q(e,r=>{let n=new wO(r).startWalking();ht(t,n)}),t}i(T$,"computeAllProdsFollows");o(T$,"computeAllProdsFollows");function R$(e,t){return e.name+t+v$}i(R$,"buildBetweenProdsFollowPrefix");o(R$,"buildBetweenProdsFollowPrefix");var po={},IO=new Zg;function Ps(e){let t=e.toString();if(po.hasOwnProperty(t))return po[t];{let r=IO.pattern(t);return po[t]=r,r}}i(Ps,"getRegExpAst");o(Ps,"getRegExpAst");function $$(){po={}}i($$,"clearRegExpParserCache");o($$,"clearRegExpParserCache");var A$="Complement Sets are not supported for first char optimization",Xo=`Unable to use "first char" lexer optimizations: +`;function E$(e,t=!1){try{let r=Ps(e);return Jo(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===A$)t&&pp(`${Xo} Unable to optimize: < ${e.toString()} > + Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";t&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Yo(`${Xo} + Failed parsing: < ${e.toString()} > + Using the @chevrotain/regexp-to-ast library + Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}i(E$,"getOptimizedStartCodesIndices");o(E$,"getOptimizedStartCodesIndices");function Jo(e,t,r){switch(e.type){case"Disjunction":for(let a=0;a{if(typeof c=="number")Oi(c,t,r);else{let f=c;if(r===!0)for(let d=f.from;d<=f.to;d++)Oi(d,t,r);else{for(let d=f.from;d<=f.to&&d=Di){let d=f.from>=Di?f.from:Di,p=f.to,m=yr(d),v=yr(p);for(let T=m;T<=v;T++)t[T]=T}}}});break;case"Group":Jo(l.value,t,r);break;default:throw Error("Non Exhaustive Match")}let u=l.quantifier!==void 0&&l.quantifier.atLeast===0;if(l.type==="Group"&&Zo(l)===!1||l.type!=="Group"&&u===!1)break}break;default:throw Error("non exhaustive match!")}return xe(t)}i(Jo,"firstCharOptimizedIndices");o(Jo,"firstCharOptimizedIndices");function Oi(e,t,r){let n=yr(e);t[n]=n,r===!0&&_$(e,t)}i(Oi,"addOptimizedIdxToResult");o(Oi,"addOptimizedIdxToResult");function _$(e,t){let r=String.fromCharCode(e),n=r.toUpperCase();if(n!==r){let a=yr(n.charCodeAt(0));t[a]=a}else{let a=r.toLowerCase();if(a!==r){let s=yr(a.charCodeAt(0));t[s]=s}}}i(_$,"handleIgnoreCase");o(_$,"handleIgnoreCase");function tf(e,t){return Da(e.value,r=>{if(typeof r=="number")return nt(t,r);{let n=r;return Da(t,a=>n.from<=a&&a<=n.to)!==void 0}})}i(tf,"findCode");o(tf,"findCode");function Zo(e){let t=e.quantifier;return t&&t.atLeast===0?!0:e.value?re(e.value)?Lt(e.value,Zo):Zo(e.value):!1}i(Zo,"isWholeOptional");o(Zo,"isWholeOptional");var NO=class extends Sl{static{i(this,"CharCodeFinder")}static{o(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return;case"Lookbehind":this.visitLookbehind(e);return;case"NegativeLookbehind":this.visitNegativeLookbehind(e);return}super.visitChildren(e)}}visitCharacter(e){nt(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?tf(e,this.targetCharCodes)===void 0&&(this.found=!0):tf(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};function Yl(e,t){if(t instanceof RegExp){let r=Ps(t),n=new NO(e);return n.visit(r),n.found}else return Da(t,r=>nt(e,r.charCodeAt(0)))!==void 0}i(Yl,"canMatchCharCode");o(Yl,"canMatchCharCode");var An="PATTERN",Li="defaultMode",js="modes",C$=typeof new RegExp("(?:)").sticky=="boolean";function b$(e,t){t=fp(t,{useSticky:C$,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:o((S,_)=>_(),"tracer")});let r=t.tracer;r("initCharCodeToOptimizedIndexMap",()=>{V$()});let n;r("Reject Lexer.NA",()=>{n=Vl(e,S=>S[An]===Ze.NA)});let a=!1,s;r("Transform Patterns",()=>{a=!1,s=G(n,S=>{let _=S[An];if(mr(_)){let P=_.source;return P.length===1&&P!=="^"&&P!=="$"&&P!=="."&&!_.ignoreCase?P:P.length===2&&P[0]==="\\"&&!nt(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],P[1])?P[1]:t.useSticky?nf(_):rf(_)}else{if(Ar(_))return a=!0,{exec:_};if(typeof _=="object")return a=!0,_;if(typeof _=="string"){if(_.length===1)return _;{let P=_.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(P);return t.useSticky?nf(j):rf(j)}}else throw Error("non exhaustive match")}})});let l,u,c,f,d;r("misc mapping",()=>{l=G(n,S=>S.tokenTypeIdx),u=G(n,S=>{let _=S.GROUP;if(_!==Ze.SKIPPED){if(ot(_))return _;if(gr(_))return!1;throw Error("non exhaustive match")}}),c=G(n,S=>{let _=S.LONGER_ALT;if(_)return re(_)?G(_,j=>fm(n,j)):[fm(n,_)]}),f=G(n,S=>S.PUSH_MODE),d=G(n,S=>B(S,"POP_MODE"))});let p;r("Line Terminator Handling",()=>{let S=vp(t.lineTerminatorCharacters);p=G(n,_=>!1),t.positionTracking!=="onlyOffset"&&(p=G(n,_=>B(_,"LINE_BREAKS")?!!_.LINE_BREAKS:yp(_,S)===!1&&Yl(S,_.PATTERN)))});let m,v,T,w;r("Misc Mapping #2",()=>{m=G(n,gp),v=G(s,q$),T=mt(n,(S,_)=>{let P=_.GROUP;return ot(P)&&P!==Ze.SKIPPED&&(S[P]=[]),S},{}),w=G(s,(S,_)=>({pattern:s[_],longerAlt:c[_],canLineTerminator:p[_],isCustom:m[_],short:v[_],group:u[_],push:f[_],pop:d[_],tokenTypeIdx:l[_],tokenType:n[_]}))});let N=!0,I=[];return t.safeMode||r("First Char Optimization",()=>{I=mt(n,(S,_,P)=>{if(typeof _.PATTERN=="string"){let j=_.PATTERN.charCodeAt(0),ee=yr(j);ho(S,ee,w[P])}else if(re(_.START_CHARS_HINT)){let j;q(_.START_CHARS_HINT,ee=>{let X=typeof ee=="string"?ee.charCodeAt(0):ee,ce=yr(X);j!==ce&&(j=ce,ho(S,ce,w[P]))})}else if(mr(_.PATTERN))if(_.PATTERN.unicode)N=!1,t.ensureOptimizations&&Yo(`${Xo} Unable to analyze < ${_.PATTERN.toString()} > pattern. + The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let j=E$(_.PATTERN,t.ensureOptimizations);he(j)&&(N=!1),q(j,ee=>{ho(S,ee,w[P])})}else t.ensureOptimizations&&Yo(`${Xo} TokenType: <${_.name}> is using a custom token pattern without providing parameter. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),N=!1;return S},[])}),{emptyGroups:T,patternIdxToConfig:w,charCodeToPatternIdxToConfig:I,hasCustom:a,canBeOptimized:N}}i(b$,"analyzeTokenTypes");o(b$,"analyzeTokenTypes");function S$(e,t){let r=[],n=I$(e);r=r.concat(n.errors);let a=N$(n.valid),s=a.valid;return r=r.concat(a.errors),r=r.concat(w$(s)),r=r.concat(M$(s)),r=r.concat(x$(s,t)),r=r.concat(F$(s)),r}i(S$,"validatePatterns");o(S$,"validatePatterns");function w$(e){let t=[],r=bt(e,n=>mr(n[An]));return t=t.concat(k$(r)),t=t.concat(O$(r)),t=t.concat(L$(r)),t=t.concat(D$(r)),t=t.concat(P$(r)),t}i(w$,"validateRegExpPattern");o(w$,"validateRegExpPattern");function I$(e){let t=bt(e,a=>!B(a,An)),r=G(t,a=>({message:"Token Type: ->"+a.name+"<- missing static 'PATTERN' property",type:we.MISSING_PATTERN,tokenTypes:[a]})),n=Wl(e,t);return{errors:r,valid:n}}i(I$,"findMissingPatterns");o(I$,"findMissingPatterns");function N$(e){let t=bt(e,a=>{let s=a[An];return!mr(s)&&!Ar(s)&&!B(s,"exec")&&!ot(s)}),r=G(t,a=>({message:"Token Type: ->"+a.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:we.INVALID_PATTERN,tokenTypes:[a]})),n=Wl(e,t);return{errors:r,valid:n}}i(N$,"findInvalidPatterns");o(N$,"findInvalidPatterns");var kO=/[^\\][$]/;function k$(e){class t extends Sl{static{i(this,"EndAnchorFinder")}static{o(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(s){this.found=!0}}let r=bt(e,a=>{let s=a.PATTERN;try{let l=Ps(s),u=new t;return u.visit(l),u.found}catch{return kO.test(s.source)}});return G(r,a=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+a.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:we.EOI_ANCHOR_FOUND,tokenTypes:[a]}))}i(k$,"findEndOfInputAnchor");o(k$,"findEndOfInputAnchor");function P$(e){let t=bt(e,n=>n.PATTERN.test(""));return G(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:we.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}i(P$,"findEmptyMatchRegExps");o(P$,"findEmptyMatchRegExps");var PO=/[^\\[][\^]|^\^/;function O$(e){class t extends Sl{static{i(this,"StartAnchorFinder")}static{o(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(s){this.found=!0}}let r=bt(e,a=>{let s=a.PATTERN;try{let l=Ps(s),u=new t;return u.visit(l),u.found}catch{return PO.test(s.source)}});return G(r,a=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+a.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:we.SOI_ANCHOR_FOUND,tokenTypes:[a]}))}i(O$,"findStartOfInputAnchor");o(O$,"findStartOfInputAnchor");function L$(e){let t=bt(e,n=>{let a=n[An];return a instanceof RegExp&&(a.multiline||a.global)});return G(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:we.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}i(L$,"findUnsupportedFlags");o(L$,"findUnsupportedFlags");function D$(e){let t=[],r=G(e,s=>mt(e,(l,u)=>(s.PATTERN.source===u.PATTERN.source&&!nt(t,u)&&u.PATTERN!==Ze.NA&&(t.push(u),l.push(u)),l),[]));r=ks(r);let n=bt(r,s=>s.length>1);return G(n,s=>{let l=G(s,c=>c.name);return{message:`The same RegExp pattern ->${Mt(s).PATTERN}<-has been used in all of the following Token Types: ${l.join(", ")} <-`,type:we.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}})}i(D$,"findDuplicatePatterns");o(D$,"findDuplicatePatterns");function M$(e){let t=bt(e,n=>{if(!B(n,"GROUP"))return!1;let a=n.GROUP;return a!==Ze.SKIPPED&&a!==Ze.NA&&!ot(a)});return G(t,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:we.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}i(M$,"findInvalidGroupType");o(M$,"findInvalidGroupType");function x$(e,t){let r=bt(e,a=>a.PUSH_MODE!==void 0&&!nt(t,a.PUSH_MODE));return G(r,a=>({message:`Token Type: ->${a.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${a.PUSH_MODE}<-which does not exist`,type:we.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[a]}))}i(x$,"findModesThatDoNotExist");o(x$,"findModesThatDoNotExist");function F$(e){let t=[],r=mt(e,(n,a,s)=>{let l=a.PATTERN;return l===Ze.NA||(ot(l)?n.push({str:l,idx:s,tokenType:a}):mr(l)&&j$(l)&&n.push({str:l.source,idx:s,tokenType:a})),n},[]);return q(e,(n,a)=>{q(r,({str:s,idx:l,tokenType:u})=>{if(a${u.name}<- can never be matched. +Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:c,type:we.UNREACHABLE_PATTERN,tokenTypes:[n,u]})}})}),t}i(F$,"findUnreachablePatterns");o(F$,"findUnreachablePatterns");function G$(e,t){if(mr(t)){if(U$(t))return!1;let r=t.exec(e);return r!==null&&r.index===0}else{if(Ar(t))return t(e,0,[],{});if(B(t,"exec"))return t.exec(e,0,[],{});if(typeof t=="string")return t===e;throw Error("non exhaustive match")}}i(G$,"tryToMatchStrToPattern");o(G$,"tryToMatchStrToPattern");function j$(e){return Da([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>e.source.indexOf(r)!==-1)===void 0}i(j$,"noMetaChar");o(j$,"noMetaChar");function U$(e){return/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\? property in its definition +`,type:we.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),B(e,js)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+js+`> property in its definition +`,type:we.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),B(e,js)&&B(e,Li)&&!B(e.modes,e.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${Li}: <${e.defaultMode}>which does not exist +`,type:we.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),B(e,js)&&q(e.modes,(a,s)=>{q(a,(l,u)=>{if(gr(l))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${s}> at index: <${u}> +`,type:we.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(B(l,"LONGER_ALT")){let c=re(l.LONGER_ALT)?l.LONGER_ALT:[l.LONGER_ALT];q(c,f=>{!gr(f)&&!nt(a,f)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${f.name}> on token <${l.name}> outside of mode <${s}> +`,type:we.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}i(z$,"performRuntimeChecks");o(z$,"performRuntimeChecks");function B$(e,t,r){let n=[],a=!1,s=ks(Ot(xe(e.modes))),l=Vl(s,c=>c[An]===Ze.NA),u=vp(r);return t&&q(l,c=>{let f=yp(c,u);if(f!==!1){let p={message:W$(c,f),type:f.issue,tokenType:c};n.push(p)}else B(c,"LINE_BREAKS")?c.LINE_BREAKS===!0&&(a=!0):Yl(u,c.PATTERN)&&(a=!0)}),t&&!a&&n.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:we.NO_LINE_BREAKS_FLAGS}),n}i(B$,"performWarningRuntimeChecks");o(B$,"performWarningRuntimeChecks");function K$(e){let t={},r=pt(e);return q(r,n=>{let a=e[n];if(re(a))t[n]=[];else throw Error("non exhaustive match")}),t}i(K$,"cloneEmptyGroups");o(K$,"cloneEmptyGroups");function gp(e){let t=e.PATTERN;if(mr(t))return!1;if(Ar(t))return!0;if(B(t,"exec"))return!0;if(ot(t))return!1;throw Error("non exhaustive match")}i(gp,"isCustomPattern");o(gp,"isCustomPattern");function q$(e){return ot(e)&&e.length===1?e.charCodeAt(0):!1}i(q$,"isShortPattern");o(q$,"isShortPattern");var OO={test:o(function(e){let t=e.length;for(let r=this.lastIndex;r Token Type + Root cause: ${t.errMsg}. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===we.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. + The problem is in the <${e.name}> Token Type + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}i(W$,"buildLineBreakIssueMessage");o(W$,"buildLineBreakIssueMessage");function vp(e){return G(e,r=>ot(r)?r.charCodeAt(0):r)}i(vp,"getCharCodes");o(vp,"getCharCodes");function ho(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}i(ho,"addToMapOfArrays");o(ho,"addToMapOfArrays");var Di=256,mo=[];function yr(e){return e255?255+~~(e/255):e}}i(V$,"initCharCodeToOptimizedIndexMap");o(V$,"initCharCodeToOptimizedIndexMap");function Ka(e,t){let r=e.tokenTypeIdx;return r===t.tokenTypeIdx?!0:t.isParent===!0&&t.categoryMatchesMap[r]===!0}i(Ka,"tokenStructuredMatcher");o(Ka,"tokenStructuredMatcher");function ls(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}i(ls,"tokenStructuredMatcherNoCategories");o(ls,"tokenStructuredMatcherNoCategories");var pm=1,H$={};function qa(e){let t=Y$(e);X$(t),Z$(t),J$(t),q(t,r=>{r.isParent=r.categoryMatches.length>0})}i(qa,"augmentTokenTypes");o(qa,"augmentTokenTypes");function Y$(e){let t=Ve(e),r=e,n=!0;for(;n;){r=ks(Ot(G(r,s=>s.CATEGORIES)));let a=Wl(r,t);t=t.concat(a),he(a)?n=!1:r=a}return t}i(Y$,"expandCategories");o(Y$,"expandCategories");function X$(e){q(e,t=>{Rp(t)||(H$[pm]=t,t.tokenTypeIdx=pm++),af(t)&&!re(t.CATEGORIES)&&(t.CATEGORIES=[t.CATEGORIES]),af(t)||(t.CATEGORIES=[]),Q$(t)||(t.categoryMatches=[]),eA(t)||(t.categoryMatchesMap={})})}i(X$,"assignTokenDefaultProps");o(X$,"assignTokenDefaultProps");function J$(e){q(e,t=>{t.categoryMatches=[],q(t.categoryMatchesMap,(r,n)=>{t.categoryMatches.push(H$[n].tokenTypeIdx)})})}i(J$,"assignCategoriesTokensProp");o(J$,"assignCategoriesTokensProp");function Z$(e){q(e,t=>{Tp([],t)})}i(Z$,"assignCategoriesMapProp");o(Z$,"assignCategoriesMapProp");function Tp(e,t){q(e,r=>{t.categoryMatchesMap[r.tokenTypeIdx]=!0}),q(t.CATEGORIES,r=>{let n=e.concat(t);nt(n,r)||Tp(n,r)})}i(Tp,"singleAssignCategoriesToksMap");o(Tp,"singleAssignCategoriesToksMap");function Rp(e){return B(e,"tokenTypeIdx")}i(Rp,"hasShortKeyProperty");o(Rp,"hasShortKeyProperty");function af(e){return B(e,"CATEGORIES")}i(af,"hasCategoriesProperty");o(af,"hasCategoriesProperty");function Q$(e){return B(e,"categoryMatches")}i(Q$,"hasExtendingTokensTypesProperty");o(Q$,"hasExtendingTokensTypesProperty");function eA(e){return B(e,"categoryMatchesMap")}i(eA,"hasExtendingTokensTypesMapProperty");o(eA,"hasExtendingTokensTypesMapProperty");function tA(e){return B(e,"tokenTypeIdx")}i(tA,"isTokenType");o(tA,"isTokenType");var sf={buildUnableToPopLexerModeMessage(e){return`Unable to pop Lexer Mode after encountering Token ->${e.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(e,t,r,n,a,s){return`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${r} characters.`}},we;(function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(we||(we={}));var Mi={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:sf,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Mi);var Ze=class{static{i(this,"Lexer")}static{o(this,"Lexer")}constructor(e,t=Mi){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(n,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let s=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${n}>`);let{time:l,value:u}=hp(a),c=l>10?console.warn:console.log;return this.traceInitIndent time: ${l}ms`),this.traceInitIndent--,u}else return a()},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=ht({},Mi,t);let r=this.config.traceInitPerf;r===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof r=="number"&&(this.traceInitMaxIdent=r,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Mi.lineTerminatorsPattern)this.config.lineTerminatorsPattern=OO;else if(this.config.lineTerminatorCharacters===Mi.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),re(e)?n={modes:{defaultMode:Ve(e)},defaultMode:Li}:(a=!1,n=Ve(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(z$(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(B$(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},q(n.modes,(l,u)=>{n.modes[u]=Vl(l,c=>gr(c))});let s=pt(n.modes);if(q(n.modes,(l,u)=>{this.TRACE_INIT(`Mode: <${u}> processing`,()=>{if(this.modes.push(u),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(S$(l,s))}),he(this.lexerDefinitionErrors)){qa(l);let c;this.TRACE_INIT("analyzeTokenTypes",()=>{c=b$(l,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[u]=c.patternIdxToConfig,this.charCodeToPatternIdxToConfig[u]=c.charCodeToPatternIdxToConfig,this.emptyGroups=ht({},this.emptyGroups,c.emptyGroups),this.hasCustom=c.hasCustom||this.hasCustom,this.canModeBeOptimized[u]=c.canBeOptimized}})}),this.defaultMode=n.defaultMode,!he(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let u=G(this.lexerDefinitionErrors,c=>c.message).join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+u)}q(this.lexerDefinitionWarning,l=>{pp(l.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(C$?(this.chopInput=Oa,this.match=this.matchWithTest):(this.updateLastIndex=Me,this.match=this.matchWithExec),a&&(this.handleModes=Me),this.trackStartLines===!1&&(this.computeNewColumn=Oa),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=Me),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let l=mt(this.canModeBeOptimized,(u,c,f)=>(c===!1&&u.push(f),u),[]);if(t.ensureOptimizations&&!he(l))throw Error(`Lexer Modes: < ${l.join(", ")} > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{$$()}),this.TRACE_INIT("toFastProperties",()=>{mp(this)})})}tokenize(e,t=this.defaultMode){if(!he(this.lexerDefinitionErrors)){let n=G(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let r,n,a,s,l,u,c,f,d,p,m,v,T,w,N,I,S=e,_=S.length,P=0,j=0,ee=this.hasCustom?0:Math.floor(e.length/10),X=new Array(ee),ce=[],me=this.trackStartLines?1:void 0,Re=this.trackStartLines?1:void 0,O=K$(this.emptyGroups),C=this.trackStartLines,y=this.config.lineTerminatorsPattern,E=0,R=[],$=[],b=[],L=[];Object.freeze(L);let x;function M(){return R}i(M,"getPossiblePatternsSlow"),o(M,"getPossiblePatternsSlow");function U(ie){let Le=yr(ie),Ue=$[Le];return Ue===void 0?L:Ue}i(U,"getPossiblePatternsOptimized"),o(U,"getPossiblePatternsOptimized");let W=o(ie=>{if(b.length===1&&ie.tokenType.PUSH_MODE===void 0){let Le=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(ie);ce.push({offset:ie.startOffset,line:ie.startLine,column:ie.startColumn,length:ie.image.length,message:Le})}else{b.pop();let Le=$n(b);R=this.patternIdxToConfig[Le],$=this.charCodeToPatternIdxToConfig[Le],E=R.length;let Ue=this.canModeBeOptimized[Le]&&this.config.safeMode===!1;$&&Ue?x=U:x=M}},"pop_mode");function le(ie){b.push(ie),$=this.charCodeToPatternIdxToConfig[ie],R=this.patternIdxToConfig[ie],E=R.length,E=R.length;let Le=this.canModeBeOptimized[ie]&&this.config.safeMode===!1;$&&Le?x=U:x=M}i(le,"push_mode"),o(le,"push_mode"),le.call(this,t);let H,Oe=this.config.recoveryEnabled;for(;P<_;){u=null;let ie=S.charCodeAt(P),Le=x(ie),Ue=Le.length;for(r=0;ru.length){u=s,c=f,H=J;break}}}break}}if(u!==null){if(d=u.length,p=H.group,p!==void 0&&(m=H.tokenTypeIdx,v=this.createTokenInstance(u,P,m,H.tokenType,me,Re,d),this.handlePayload(v,c),p===!1?j=this.addToken(X,j,v):O[p].push(v)),e=this.chopInput(e,d),P=P+d,Re=this.computeNewColumn(Re,d),C===!0&&H.canLineTerminator===!0){let $e=0,ze,Ie;y.lastIndex=0;do ze=y.test(u),ze===!0&&(Ie=y.lastIndex-1,$e++);while(ze===!0);$e!==0&&(me=me+$e,Re=d-Ie,this.updateTokenEndLineColumnLocation(v,p,Ie,$e,me,Re,d))}this.handleModes(H,W,le,v)}else{let $e=P,ze=me,Ie=Re,J=Oe===!1;for(;J===!1&&P<_;)for(e=this.chopInput(e,1),P++,n=0;n ${vn(e)} <--`:`token of type --> ${e.name} <--`} but found --> '${t.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:e,ruleName:t}){return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:r,customUserDescription:n,ruleName:a}){let s="Expecting: ",u=` +but found: '`+Mt(t).image+"'";if(n)return s+n+u;{let c=mt(e,(m,v)=>m.concat(v),[]),f=G(c,m=>`[${G(m,v=>vn(v)).join(", ")}]`),p=`one of these possible Token sequences: +${G(f,(m,v)=>` ${v+1}. ${m}`).join(` +`)}`;return s+p+u}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:r,ruleName:n}){let a="Expecting: ",l=` +but found: '`+Mt(t).image+"'";if(r)return a+r+l;{let c=`expecting at least one iteration which starts with one of these possible Token sequences:: + <${G(e,f=>`[${G(f,d=>vn(d)).join(",")}]`).join(" ,")}>`;return a+c+l}}};Object.freeze($a);var DO={buildRuleNotFoundError(e,t){return"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+`<- +inside top level rule: ->`+e.name+"<-"}},mn={buildDuplicateFoundError(e,t){function r(d){return d instanceof Te?d.terminalType.name:d instanceof et?d.nonTerminalName:""}i(r,"getExtraProductionArgument2"),o(r,"getExtraProductionArgument");let n=e.name,a=Mt(t),s=a.idx,l=It(a),u=r(a),c=s>0,f=`->${l}${c?s:""}<- ${u?`with argument: ->${u}<-`:""} + appears more than once (${t.length} times) in the top level rule: ->${n}<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return f=f.replace(/[ \t]+/g," "),f=f.replace(/\s\s+/g,` +`),f},buildNamespaceConflictError(e){return`Namespace conflict found in grammar. +The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>. +To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(e){let t=G(e.prefixPath,a=>vn(a)).join(", "),r=e.alternation.idx===0?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix +in inside <${e.topLevelRule.name}> Rule, +<${t}> may appears as a prefix path in all these alternatives. +See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`},buildAlternationAmbiguityError(e){let t=G(e.prefixPath,a=>vn(a)).join(", "),r=e.alternation.idx===0?"":e.alternation.idx,n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in inside <${e.topLevelRule.name}> Rule, +<${t}> may appears as a prefix path in all these alternatives. +`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,n},buildEmptyRepetitionError(e){let t=It(e.repetition);return e.repetition.idx!==0&&(t+=e.repetition.idx),`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens. +This could lead to an infinite loop.`},buildTokenNameError(e){return"deprecated"},buildEmptyAlternationError(e){return`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in inside <${e.topLevelRule.name}> Rule. +Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(e){return`An Alternation cannot have more than 256 alternatives: + inside <${e.topLevelRule.name}> Rule. + has ${e.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(e){let t=e.topLevelRule.name,r=G(e.leftRecursionPath,s=>s.name),n=`${t} --> ${r.concat([t]).join(" --> ")}`;return`Left Recursion found in grammar. +rule: <${t}> can be invoked from itself (directly or indirectly) +without consuming any Tokens. The grammar path that causes this is: + ${n} + To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(e){return"deprecated"},buildDuplicateRuleNameError(e){let t;return e.topLevelRule instanceof Ua?t=e.topLevelRule.name:t=e.topLevelRule,`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};function nA(e,t){let r=new MO(e,t);return r.resolveRefs(),r.errors}i(nA,"resolveGrammar");o(nA,"resolveGrammar");var MO=class extends za{static{i(this,"GastRefResolverVisitor")}static{o(this,"GastRefResolverVisitor")}constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){q(xe(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{let r=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:r,type:tt.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}},xO=class extends Hl{static{i(this,"AbstractNextPossibleTokensWalker")}static{o(this,"AbstractNextPossibleTokensWalker")}constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=Ve(this.path.ruleStack).reverse(),this.occurrenceStack=Ve(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,r){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let n=t.concat(r);this.updateExpectedNext(),this.walk(e.referencedRule,n)}}updateExpectedNext(){he(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},FO=class extends xO{static{i(this,"NextAfterTokenWalker")}static{o(this,"NextAfterTokenWalker")}constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,r){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let n=t.concat(r),a=new lt({definition:n});this.possibleTokTypes=Ba(a),this.found=!0}}},Xl=class extends Hl{static{i(this,"AbstractNextTerminalAfterProductionWalker")}static{o(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},GO=class extends Xl{static{i(this,"NextTerminalAfterManyWalker")}static{o(this,"NextTerminalAfterManyWalker")}walkMany(e,t,r){if(e.idx===this.occurrence){let n=Mt(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof Te&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkMany(e,t,r)}},Am=class extends Xl{static{i(this,"NextTerminalAfterManySepWalker")}static{o(this,"NextTerminalAfterManySepWalker")}walkManySep(e,t,r){if(e.idx===this.occurrence){let n=Mt(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof Te&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkManySep(e,t,r)}},jO=class extends Xl{static{i(this,"NextTerminalAfterAtLeastOneWalker")}static{o(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,t,r){if(e.idx===this.occurrence){let n=Mt(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof Te&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkAtLeastOne(e,t,r)}},Em=class extends Xl{static{i(this,"NextTerminalAfterAtLeastOneSepWalker")}static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,t,r){if(e.idx===this.occurrence){let n=Mt(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof Te&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkAtLeastOneSep(e,t,r)}};function Qo(e,t,r=[]){r=Ve(r);let n=[],a=0;function s(u){return u.concat(qe(e,a+1))}i(s,"remainingPathWith"),o(s,"remainingPathWith");function l(u){let c=Qo(s(u),t,r);return n.concat(c)}for(i(l,"getAlternativesForProd"),o(l,"getAlternativesForProd");r.length{he(c.definition)===!1&&(n=l(c.definition))}),n;if(u instanceof Te)r.push(u.terminalType);else throw Error("non exhaustive match")}a++}return n.push({partialPath:r,suffixDef:qe(e,a)}),n}i(Qo,"possiblePathsFrom");o(Qo,"possiblePathsFrom");function Ep(e,t,r,n){let a="EXIT_NONE_TERMINAL",s=[a],l="EXIT_ALTERNATIVE",u=!1,c=t.length,f=c-n-1,d=[],p=[];for(p.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!he(p);){let m=p.pop();if(m===l){u&&$n(p).idx<=f&&p.pop();continue}let v=m.def,T=m.idx,w=m.ruleStack,N=m.occurrenceStack;if(he(v))continue;let I=v[0];if(I===a){let S={idx:T,def:qe(v),ruleStack:ss(w),occurrenceStack:ss(N)};p.push(S)}else if(I instanceof Te)if(T=0;S--){let _=I.definition[S],P={idx:T,def:_.definition.concat(qe(v)),ruleStack:w,occurrenceStack:N};p.push(P),p.push(l)}else if(I instanceof lt)p.push({idx:T,def:I.definition.concat(qe(v)),ruleStack:w,occurrenceStack:N});else if(I instanceof Ua)p.push(aA(I,T,w,N));else throw Error("non exhaustive match")}return d}i(Ep,"nextPossibleTokensAfter");o(Ep,"nextPossibleTokensAfter");function aA(e,t,r,n){let a=Ve(r);a.push(e.name);let s=Ve(n);return s.push(1),{idx:t,def:e.definition,ruleStack:a,occurrenceStack:s}}i(aA,"expandTopLevelRule");o(aA,"expandTopLevelRule");var _e;(function(e){e[e.OPTION=0]="OPTION",e[e.REPETITION=1]="REPETITION",e[e.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",e[e.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",e[e.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",e[e.ALTERNATION=5]="ALTERNATION"})(_e||(_e={}));function Jl(e){if(e instanceof We||e==="Option")return _e.OPTION;if(e instanceof Se||e==="Repetition")return _e.REPETITION;if(e instanceof gt||e==="RepetitionMandatory")return _e.REPETITION_MANDATORY;if(e instanceof yt||e==="RepetitionMandatoryWithSeparator")return _e.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof ut||e==="RepetitionWithSeparator")return _e.REPETITION_WITH_SEPARATOR;if(e instanceof ct||e==="Alternation")return _e.ALTERNATION;throw Error("non exhaustive match")}i(Jl,"getProdType");o(Jl,"getProdType");function of(e){let{occurrence:t,rule:r,prodType:n,maxLookahead:a}=e,s=Jl(n);return s===_e.ALTERNATION?Ls(t,r,a):Ds(t,r,s,a)}i(of,"getLookaheadPaths");o(of,"getLookaheadPaths");function iA(e,t,r,n,a,s){let l=Ls(e,t,r),u=Cp(l)?ls:Ka;return s(l,n,u,a)}i(iA,"buildLookaheadFuncForOr");o(iA,"buildLookaheadFuncForOr");function sA(e,t,r,n,a,s){let l=Ds(e,t,a,r),u=Cp(l)?ls:Ka;return s(l[0],u,n)}i(sA,"buildLookaheadFuncForOptionalProd");o(sA,"buildLookaheadFuncForOptionalProd");function oA(e,t,r,n){let a=e.length,s=Lt(e,l=>Lt(l,u=>u.length===1));if(t)return function(l){let u=G(l,c=>c.GATE);for(let c=0;cOt(c)),u=mt(l,(c,f,d)=>(q(f,p=>{B(c,p.tokenTypeIdx)||(c[p.tokenTypeIdx]=d),q(p.categoryMatches,m=>{B(c,m)||(c[m]=d)})}),c),{});return function(){let c=this.LA(1);return u[c.tokenTypeIdx]}}else return function(){for(let l=0;ls.length===1),a=e.length;if(n&&!r){let s=Ot(e);if(s.length===1&&he(s[0].categoryMatches)){let u=s[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===u}}else{let l=mt(s,(u,c,f)=>(u[c.tokenTypeIdx]=!0,q(c.categoryMatches,d=>{u[d]=!0}),u),[]);return function(){let u=this.LA(1);return l[u.tokenTypeIdx]===!0}}}else return function(){e:for(let s=0;sQo([l],1)),n=lf(r.length),a=G(r,l=>{let u={};return q(l,c=>{let f=go(c.partialPath);q(f,d=>{u[d]=!0})}),u}),s=r;for(let l=1;l<=t;l++){let u=s;s=lf(u.length);for(let c=0;c{let I=go(N.partialPath);q(I,S=>{a[c][S]=!0})})}}}}return n}i(_p,"lookAheadSequenceFromAlternatives");o(_p,"lookAheadSequenceFromAlternatives");function Ls(e,t,r,n){let a=new uA(e,_e.ALTERNATION,n);return t.accept(a),_p(a.result,r)}i(Ls,"getLookaheadPathsForOr");o(Ls,"getLookaheadPathsForOr");function Ds(e,t,r,n){let a=new uA(e,r);t.accept(a);let s=a.result,u=new UO(t,e,r).startWalking(),c=new lt({definition:s}),f=new lt({definition:u});return _p([c,f],n)}i(Ds,"getLookaheadPathsForOptionalProd");o(Ds,"getLookaheadPathsForOptionalProd");function el(e,t){e:for(let r=0;r{let a=t[n];return r===a||a.categoryMatchesMap[r.tokenTypeIdx]})}i(fA,"isStrictPrefixOfPath");o(fA,"isStrictPrefixOfPath");function Cp(e){return Lt(e,t=>Lt(t,r=>Lt(r,n=>he(n.categoryMatches))))}i(Cp,"areTokenCategoriesNotUsed");o(Cp,"areTokenCategoriesNotUsed");function dA(e){let t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return G(t,r=>Object.assign({type:tt.CUSTOM_LOOKAHEAD_VALIDATION},r))}i(dA,"validateLookahead");o(dA,"validateLookahead");function pA(e,t,r,n){let a=At(e,c=>hA(c,r)),s=_A(e,t,r),l=At(e,c=>RA(c,r)),u=At(e,c=>gA(c,e,n,r));return a.concat(s,l,u)}i(pA,"validateGrammar");o(pA,"validateGrammar");function hA(e,t){let r=new zO;e.accept(r);let n=r.allProductions,a=rO(n,mA),s=xt(a,u=>u.length>1);return G(xe(s),u=>{let c=Mt(u),f=t.buildDuplicateFoundError(e,u),d=It(c),p={message:f,type:tt.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:d,occurrence:c.idx},m=bp(c);return m&&(p.parameter=m),p})}i(hA,"validateDuplicateProductions");o(hA,"validateDuplicateProductions");function mA(e){return`${It(e)}_#_${e.idx}_#_${bp(e)}`}i(mA,"identifyProductionForDuplicates");o(mA,"identifyProductionForDuplicates");function bp(e){return e instanceof Te?e.terminalType.name:e instanceof et?e.nonTerminalName:""}i(bp,"getExtraProductionArgument");o(bp,"getExtraProductionArgument");var zO=class extends za{static{i(this,"OccurrenceValidationCollector")}static{o(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};function gA(e,t,r,n){let a=[];if(mt(t,(l,u)=>u.name===e.name?l+1:l,0)>1){let l=n.buildDuplicateRuleNameError({topLevelRule:e,grammarName:r});a.push({message:l,type:tt.DUPLICATE_RULE_NAME,ruleName:e.name})}return a}i(gA,"validateRuleDoesNotAlreadyExist");o(gA,"validateRuleDoesNotAlreadyExist");function yA(e,t,r){let n=[],a;return nt(t,e)||(a=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:a,type:tt.INVALID_RULE_OVERRIDE,ruleName:e})),n}i(yA,"validateRuleIsOverridden");o(yA,"validateRuleIsOverridden");function Sp(e,t,r,n=[]){let a=[],s=Xi(t.definition);if(he(s))return[];{let l=e.name;nt(s,e)&&a.push({message:r.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:n}),type:tt.LEFT_RECURSION,ruleName:l});let c=Wl(s,n.concat([e])),f=At(c,d=>{let p=Ve(n);return p.push(d),Sp(e,d,r,p)});return a.concat(f)}}i(Sp,"validateNoLeftRecursion");o(Sp,"validateNoLeftRecursion");function Xi(e){let t=[];if(he(e))return t;let r=Mt(e);if(r instanceof et)t.push(r.referencedRule);else if(r instanceof lt||r instanceof We||r instanceof gt||r instanceof yt||r instanceof ut||r instanceof Se)t=t.concat(Xi(r.definition));else if(r instanceof ct)t=Ot(G(r.definition,s=>Xi(s.definition)));else if(!(r instanceof Te))throw Error("non exhaustive match");let n=os(r),a=e.length>1;if(n&&a){let s=qe(e);return t.concat(Xi(s))}else return t}i(Xi,"getFirstNoneTerminal");o(Xi,"getFirstNoneTerminal");var wp=class extends za{static{i(this,"OrCollector")}static{o(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};function vA(e,t){let r=new wp;e.accept(r);let n=r.alternations;return At(n,s=>{let l=ss(s.definition);return At(l,(u,c)=>{let f=Ep([u],[],Ka,1);return he(f)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:s,emptyChoiceIdx:c}),type:tt.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:s.idx,alternative:c+1}]:[]})})}i(vA,"validateEmptyOrAlternative");o(vA,"validateEmptyOrAlternative");function TA(e,t,r){let n=new wp;e.accept(n);let a=n.alternations;return a=Vl(a,l=>l.ignoreAmbiguities===!0),At(a,l=>{let u=l.idx,c=l.maxLookahead||t,f=Ls(u,e,c,l),d=AA(f,l,e,r),p=EA(f,l,e,r);return d.concat(p)})}i(TA,"validateAmbiguousAlternationAlternatives");o(TA,"validateAmbiguousAlternationAlternatives");var BO=class extends za{static{i(this,"RepetitionCollector")}static{o(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};function RA(e,t){let r=new wp;e.accept(r);let n=r.alternations;return At(n,s=>s.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:s}),type:tt.TOO_MANY_ALTS,ruleName:e.name,occurrence:s.idx}]:[])}i(RA,"validateTooManyAlts");o(RA,"validateTooManyAlts");function $A(e,t,r){let n=[];return q(e,a=>{let s=new BO;a.accept(s);let l=s.allProductions;q(l,u=>{let c=Jl(u),f=u.maxLookahead||t,d=u.idx,m=Ds(d,a,c,f)[0];if(he(Ot(m))){let v=r.buildEmptyRepetitionError({topLevelRule:a,repetition:u});n.push({message:v,type:tt.NO_NON_EMPTY_LOOKAHEAD,ruleName:a.name})}})}),n}i($A,"validateSomeNonEmptyLookaheadPath");o($A,"validateSomeNonEmptyLookaheadPath");function AA(e,t,r,n){let a=[],s=mt(e,(u,c,f)=>(t.definition[f].ignoreAmbiguities===!0||q(c,d=>{let p=[f];q(e,(m,v)=>{f!==v&&el(m,d)&&t.definition[v].ignoreAmbiguities!==!0&&p.push(v)}),p.length>1&&!el(a,d)&&(a.push(d),u.push({alts:p,path:d}))}),u),[]);return G(s,u=>{let c=G(u.alts,d=>d+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:c,prefixPath:u.path}),type:tt.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:t.idx,alternatives:u.alts}})}i(AA,"checkAlternativesAmbiguities");o(AA,"checkAlternativesAmbiguities");function EA(e,t,r,n){let a=mt(e,(l,u,c)=>{let f=G(u,d=>({idx:c,path:d}));return l.concat(f)},[]);return ks(At(a,l=>{if(t.definition[l.idx].ignoreAmbiguities===!0)return[];let c=l.idx,f=l.path,d=bt(a,m=>t.definition[m.idx].ignoreAmbiguities!==!0&&m.idx{let v=[m.idx+1,c+1],T=t.idx===0?"":t.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:v,prefixPath:m.path}),type:tt.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:T,alternatives:v}})}))}i(EA,"checkPrefixAlternativesAmbiguities");o(EA,"checkPrefixAlternativesAmbiguities");function _A(e,t,r){let n=[],a=G(t,s=>s.name);return q(e,s=>{let l=s.name;if(nt(a,l)){let u=r.buildNamespaceConflictError(s);n.push({message:u,type:tt.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:l})}}),n}i(_A,"checkTerminalAndNoneTerminalsNameSpace");o(_A,"checkTerminalAndNoneTerminalsNameSpace");function CA(e){let t=fp(e,{errMsgProvider:DO}),r={};return q(e.rules,n=>{r[n.name]=n}),nA(r,t.errMsgProvider)}i(CA,"resolveGrammar2");o(CA,"resolveGrammar");function bA(e){return e=fp(e,{errMsgProvider:mn}),pA(e.rules,e.tokenTypes,e.errMsgProvider,e.grammarName)}i(bA,"validateGrammar2");o(bA,"validateGrammar");var SA="MismatchedTokenException",wA="NoViableAltException",IA="EarlyExitException",NA="NotAllInputParsedException",kA=[SA,wA,IA,NA];Object.freeze(kA);function us(e){return nt(kA,e.name)}i(us,"isRecognitionException");o(us,"isRecognitionException");var Zl=class extends Error{static{i(this,"RecognitionException")}static{o(this,"RecognitionException")}constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},PA=class extends Zl{static{i(this,"MismatchedTokenException")}static{o(this,"MismatchedTokenException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=SA}},KO=class extends Zl{static{i(this,"NoViableAltException")}static{o(this,"NoViableAltException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=wA}},qO=class extends Zl{static{i(this,"NotAllInputParsedException")}static{o(this,"NotAllInputParsedException")}constructor(e,t){super(e,t),this.name=NA}},WO=class extends Zl{static{i(this,"EarlyExitException")}static{o(this,"EarlyExitException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=IA}},Iu={},OA="InRuleRecoveryException",VO=class extends Error{static{i(this,"InRuleRecoveryException")}static{o(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=OA}},HO=class{static{i(this,"Recoverable")}static{o(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=B(e,"recoveryEnabled")?e.recoveryEnabled:vr.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=LA)}getTokenToInsert(e){let t=Os(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,r,n){let a=this.findReSyncTokenType(),s=this.exportLexerState(),l=[],u=!1,c=this.LA(1),f=this.LA(1),d=o(()=>{let p=this.LA(0),m=this.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:c,previous:p,ruleName:this.getCurrRuleFullName()}),v=new PA(m,c,this.LA(0));v.resyncedTokens=ss(l),this.SAVE_ERROR(v)},"generateErrorMessage");for(;!u;)if(this.tokenMatcher(f,n)){d();return}else if(r.call(this)){d(),e.apply(this,t);return}else this.tokenMatcher(f,a)?u=!0:(f=this.SKIP_TOKEN(),this.addToResyncTokens(f,l));this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,t,r){return!(r===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))}getFollowsForInRuleRecovery(e,t){let r=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(r)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let r=this.SKIP_TOKEN();return this.consumeToken(),r}throw new VO("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e)||he(t))return!1;let r=this.LA(1);return Da(t,a=>this.tokenMatcher(r,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let t=this.getCurrFollowKey(),r=this.getFollowSetFromFollowKey(t);return nt(r,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),t=this.LA(1),r=2;for(;;){let n=Da(e,a=>Ap(t,a));if(n!==void 0)return n;t=this.LA(r),r++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return Iu;let e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),r=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(r)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return G(e,(r,n)=>n===0?Iu:{ruleName:this.shortRuleNameToFullName(r),idxInCallingRule:t[n],inRule:this.shortRuleNameToFullName(e[n-1])})}flattenFollowSet(){let e=G(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t));return Ot(e)}getFollowSetFromFollowKey(e){if(e===Iu)return[Lr];let t=e.ruleName+e.idxInCallingRule+v$+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,Lr)||t.push(e),t}reSyncTo(e){let t=[],r=this.LA(1);for(;this.tokenMatcher(r,e)===!1;)r=this.SKIP_TOKEN(),this.addToResyncTokens(r,t);return ss(t)}attemptInRepetitionRecovery(e,t,r,n,a,s,l){}getCurrentGrammarPath(e,t){let r=this.getHumanReadableRuleStack(),n=Ve(this.RULE_OCCURRENCE_STACK);return{ruleStack:r,occurrenceStack:n,lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return G(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};function LA(e,t,r,n,a,s,l){let u=this.getKeyForAutomaticLookahead(n,a),c=this.firstAfterRepMap[u];if(c===void 0){let m=this.getCurrRuleFullName(),v=this.getGAstProductions()[m];c=new s(v,a).startWalking(),this.firstAfterRepMap[u]=c}let f=c.token,d=c.occurrence,p=c.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=Lr,d=1),!(f===void 0||d===void 0)&&this.shouldInRepetitionRecoveryBeTried(f,d,l)&&this.tryInRepetitionRecovery(e,t,r,f)}i(LA,"attemptInRepetitionRecovery");o(LA,"attemptInRepetitionRecovery");var YO=4,jr=8,XO=8,DA=1<Sp(t,t,mn))}validateEmptyOrAlternatives(e){return At(e,t=>vA(t,mn))}validateAmbiguousAlternationAlternatives(e,t){return At(e,r=>TA(r,t,mn))}validateSomeNonEmptyLookaheadPath(e,t){return $A(e,t,mn)}buildLookaheadForAlternation(e){return iA(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,oA)}buildLookaheadForOptional(e){return sA(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,Jl(e.prodType),lA)}},JO=class{static{i(this,"LooksAhead")}static{o(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=B(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:vr.dynamicTokensEnabled,this.maxLookahead=B(e,"maxLookahead")?e.maxLookahead:vr.maxLookahead,this.lookaheadStrategy=B(e,"lookaheadStrategy")?e.lookaheadStrategy:new Ip({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){q(e,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{let{alternation:r,repetition:n,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:l,repetitionWithSeparator:u}=xA(t);q(r,c=>{let f=c.idx===0?"":c.idx;this.TRACE_INIT(`${It(c)}${f}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:c.idx,rule:t,maxLookahead:c.maxLookahead||this.maxLookahead,hasPredicates:c.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),p=vo(this.fullRuleNameToShort[t.name],DA,c.idx);this.setLaFuncCache(p,d)})}),q(n,c=>{this.computeLookaheadFunc(t,c.idx,uf,"Repetition",c.maxLookahead,It(c))}),q(a,c=>{this.computeLookaheadFunc(t,c.idx,MA,"Option",c.maxLookahead,It(c))}),q(s,c=>{this.computeLookaheadFunc(t,c.idx,cf,"RepetitionMandatory",c.maxLookahead,It(c))}),q(l,c=>{this.computeLookaheadFunc(t,c.idx,yo,"RepetitionMandatoryWithSeparator",c.maxLookahead,It(c))}),q(u,c=>{this.computeLookaheadFunc(t,c.idx,ff,"RepetitionWithSeparator",c.maxLookahead,It(c))})})})}computeLookaheadFunc(e,t,r,n,a,s){this.TRACE_INIT(`${s}${t===0?"":t}`,()=>{let l=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:n}),u=vo(this.fullRuleNameToShort[e.name],r,t);this.setLaFuncCache(u,l)})}getKeyForAutomaticLookahead(e,t){let r=this.getLastExplicitRuleShortName();return vo(r,e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},ZO=class extends za{static{i(this,"DslMethodsCollectorVisitor")}static{o(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},Us=new ZO;function xA(e){Us.reset(),e.accept(Us);let t=Us.dslMethods;return Us.reset(),t}i(xA,"collectMethods");o(xA,"collectMethods");function df(e,t){isNaN(e.startOffset)===!0?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffsetl.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: + ${s.join(` + +`).replace(/\n/g,` + `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=t,r}i(UA,"createBaseSemanticVisitorConstructor");o(UA,"createBaseSemanticVisitorConstructor");function zA(e,t,r){let n=o(function(){},"derivedConstructor");Np(n,e+"BaseSemanticsWithDefaults");let a=Object.create(r.prototype);return q(t,s=>{a[s]=jA}),n.prototype=a,n.prototype.constructor=n,n}i(zA,"createBaseVisitorConstructorWithDefaults");o(zA,"createBaseVisitorConstructorWithDefaults");var hf;(function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"})(hf||(hf={}));function BA(e,t){return KA(e,t)}i(BA,"validateVisitor");o(BA,"validateVisitor");function KA(e,t){let r=bt(t,a=>Ar(e[a])===!1),n=G(r,a=>({msg:`Missing visitor method: <${a}> on ${e.constructor.name} CST Visitor.`,type:hf.MISSING_METHOD,methodName:a}));return ks(n)}i(KA,"validateMissingCstMethods");o(KA,"validateMissingCstMethods");var eL=class{static{i(this,"TreeBuilder")}static{o(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=B(e,"nodeLocationTracking")?e.nodeLocationTracking:vr.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Me,this.cstFinallyStateUpdate=Me,this.cstPostTerminal=Me,this.cstPostNonTerminal=Me,this.cstPostRule=Me;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=pf,this.setNodeLocationFromNode=pf,this.cstPostRule=Me,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Me,this.setNodeLocationFromNode=Me,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=df,this.setNodeLocationFromNode=df,this.cstPostRule=Me,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Me,this.setNodeLocationFromNode=Me,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Me,this.setNodeLocationFromNode=Me,this.cstPostRule=Me,this.setInitialNodeLocation=Me;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?(r.endOffset=t.endOffset,r.endLine=t.endLine,r.endColumn=t.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)}cstPostRuleOnlyOffset(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?r.endOffset=t.endOffset:r.startOffset=NaN}cstPostTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];FA(r,t,e),this.setNodeLocationFromToken(r.location,t)}cstPostNonTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];GA(r,t,e),this.setNodeLocationFromNode(r.location,e.location)}getBaseCstVisitorConstructor(){if(gr(this.baseCstVisitorConstructor)){let e=UA(this.className,pt(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(gr(this.baseCstVisitorWithDefaultsConstructor)){let e=zA(this.className,pt(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},tL=class{static{i(this,"LexerAdapter")}static{o(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):tl}LA(e){let t=this.currIdx+e;return t<0||this.tokVectorLength<=t?tl:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},rL=class{static{i(this,"RecognizerApi")}static{o(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,t,r){return this.consumeInternal(t,e,r)}subrule(e,t,r){return this.subruleInternal(t,e,r)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,r=rl){if(nt(this.definedRulesNames,e)){let s={message:mn.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:tt.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);let n=this.defineRule(e,t,r);return this[e]=n,n}OVERRIDE_RULE(e,t,r=rl){let n=yA(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(n);let a=this.defineRule(e,t,r);return this[e]=a,a}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);let r=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if(us(n))return!1;throw n}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return d$(xe(this.gastProductionsCache))}},nL=class{static{i(this,"RecognizerEngine")}static{o(this,"RecognizerEngine")}initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=ls,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},B(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if(re(e)){if(he(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if(re(e))this.tokensMap=mt(e,(a,s)=>(a[s.name]=s,a),{});else if(B(e,"modes")&&Lt(Ot(xe(e.modes)),tA)){let a=Ot(xe(e.modes)),s=dp(a);this.tokensMap=mt(s,(l,u)=>(l[u.name]=u,l),{})}else if(_t(e))this.tokensMap=Ve(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Lr;let r=B(e,"modes")?Ot(xe(e.modes)):xe(e),n=Lt(r,a=>he(a.categoryMatches));this.tokenMatcher=n?ls:Ka,qa(xe(this.tokensMap))}defineRule(e,t,r){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let n=B(r,"resyncEnabled")?r.resyncEnabled:rl.resyncEnabled,a=B(r,"recoveryValueFunc")?r.recoveryValueFunc:rl.recoveryValueFunc,s=this.ruleShortNameIdx<s.call(this)&&l.call(this),"lookAheadFunc")}}else a=e;if(n.call(this)===!0)return a.call(this)}atLeastOneInternal(e,t){let r=this.getKeyForAutomaticLookahead(cf,e);return this.atLeastOneInternalLogic(e,t,r)}atLeastOneInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),a;if(typeof t!="function"){a=t.DEF;let s=t.GATE;if(s!==void 0){let l=n;n=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=t;if(n.call(this)===!0){let s=this.doSingleRepetition(a);for(;n.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,_e.REPETITION_MANDATORY,t.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],n,cf,e,jO)}atLeastOneSepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(yo,e);this.atLeastOneSepFirstInternalLogic(e,t,r)}atLeastOneSepFirstInternalLogic(e,t,r){let n=t.DEF,a=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){n.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,n,Em],l,yo,e,Em)}else throw this.raiseEarlyExitException(e,_e.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG)}manyInternal(e,t){let r=this.getKeyForAutomaticLookahead(uf,e);return this.manyInternalLogic(e,t,r)}manyInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),a;if(typeof t!="function"){a=t.DEF;let l=t.GATE;if(l!==void 0){let u=n;n=o(()=>l.call(this)&&u.call(this),"lookaheadFunction")}}else a=t;let s=!0;for(;n.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],n,uf,e,GO,s)}manySepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(ff,e);this.manySepFirstInternalLogic(e,t,r)}manySepFirstInternalLogic(e,t,r){let n=t.DEF,a=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){n.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,n,Am],l,ff,e,Am)}}repetitionSepSecondInternal(e,t,r,n,a){for(;r();)this.CONSUME(t),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,r,n,a],r,yo,e,a)}doSingleRepetition(e){let t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){let r=this.getKeyForAutomaticLookahead(DA,t),n=re(e)?e:e.DEF,s=this.getLaFuncFromCache(r).call(this,n);if(s!==void 0)return n[s].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new qO(t,e))}}subruleInternal(e,t,r){let n;try{let a=r!==void 0?r.ARGS:void 0;return this.subruleIdx=t,n=e.apply(this,a),this.cstPostNonTerminal(n,r!==void 0&&r.LABEL!==void 0?r.LABEL:e.ruleName),n}catch(a){throw this.subruleInternalError(a,r,e.ruleName)}}subruleInternalError(e,t,r){throw us(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:r),delete e.partialCstResult),e}consumeInternal(e,t,r){let n;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),n=a):this.consumeInternalError(e,a,r)}catch(a){n=this.consumeInternalRecovery(e,t,a)}return this.cstPostTerminal(r!==void 0&&r.LABEL!==void 0?r.LABEL:e.name,n),n}consumeInternalError(e,t,r){let n,a=this.LA(0);throw r!==void 0&&r.ERR_MSG?n=r.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new PA(n,t,a))}consumeInternalRecovery(e,t,r){if(this.recoveryEnabled&&r.name==="MismatchedTokenException"&&!this.isBackTracking()){let n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(a){throw a.name===OA?r:a}}else throw r}saveRecogState(){let e=this.errors,t=Ve(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),Lr)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},aL=class{static{i(this,"ErrorHandler")}static{o(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=B(e,"errorMessageProvider")?e.errorMessageProvider:vr.errorMessageProvider}SAVE_ERROR(e){if(us(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:Ve(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return Ve(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,r){let n=this.getCurrRuleFullName(),a=this.getGAstProductions()[n],l=Ds(e,a,t,this.maxLookahead)[0],u=[];for(let f=1;f<=this.maxLookahead;f++)u.push(this.LA(f));let c=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:l,actual:u,previous:this.LA(0),customUserDescription:r,ruleName:n});throw this.SAVE_ERROR(new WO(c,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){let r=this.getCurrRuleFullName(),n=this.getGAstProductions()[r],a=Ls(e,n,this.maxLookahead),s=[];for(let c=1;c<=this.maxLookahead;c++)s.push(this.LA(c));let l=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new KO(u,this.LA(1),l))}},iL=class{static{i(this,"ContentAssist")}static{o(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,t){let r=this.gastProductionsCache[e];if(gr(r))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return Ep([r],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let t=Mt(e.ruleStack),n=this.getGAstProductions()[t];return new FO(n,e).startWalking()}},Ql={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(Ql);var _m=!0,Cm=Math.pow(2,jr)-1,qA=_a({name:"RECORDING_PHASE_TOKEN",pattern:Ze.NA});qa([qA]);var WA=Os(qA,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(WA);var sL={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},oL=class{static{i(this,"GastRecorder")}static{o(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let t=e>0?e:"";this[`CONSUME${t}`]=function(r,n){return this.consumeInternalRecord(r,e,n)},this[`SUBRULE${t}`]=function(r,n){return this.subruleInternalRecord(r,e,n)},this[`OPTION${t}`]=function(r){return this.optionInternalRecord(r,e)},this[`OR${t}`]=function(r){return this.orInternalRecord(r,e)},this[`MANY${t}`]=function(r){this.manyInternalRecord(e,r)},this[`MANY_SEP${t}`]=function(r){this.manySepFirstInternalRecord(e,r)},this[`AT_LEAST_ONE${t}`]=function(r){this.atLeastOneInternalRecord(e,r)},this[`AT_LEAST_ONE_SEP${t}`]=function(r){this.atLeastOneSepFirstInternalRecord(e,r)}}this.consume=function(e,t,r){return this.consumeInternalRecord(t,e,r)},this.subrule=function(e,t,r){return this.subruleInternalRecord(t,e,r)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let t=0;t<10;t++){let r=t>0?t:"";delete e[`CONSUME${r}`],delete e[`SUBRULE${r}`],delete e[`OPTION${r}`],delete e[`OR${r}`],delete e[`MANY${r}`],delete e[`MANY_SEP${r}`],delete e[`AT_LEAST_ONE${r}`],delete e[`AT_LEAST_ONE_SEP${r}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return tl}topLevelRuleRecord(e,t){try{let r=new Ua({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),t.call(this),this.recordingProdStack.pop(),r}catch(r){if(r.KNOWN_RECORDER_ERROR!==!0)try{r.message=r.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw r}throw r}}optionInternalRecord(e,t){return la.call(this,We,e,t)}atLeastOneInternalRecord(e,t){la.call(this,gt,t,e)}atLeastOneSepFirstInternalRecord(e,t){la.call(this,yt,t,e,_m)}manyInternalRecord(e,t){la.call(this,Se,t,e)}manySepFirstInternalRecord(e,t){la.call(this,ut,t,e,_m)}orInternalRecord(e,t){return VA.call(this,e,t)}subruleInternalRecord(e,t,r){if(cs(t),!e||B(e,"ruleName")===!1){let l=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw l.KNOWN_RECORDER_ERROR=!0,l}let n=$n(this.recordingProdStack),a=e.ruleName,s=new et({idx:t,nonTerminalName:a,label:r?.LABEL,referencedRule:void 0});return n.definition.push(s),this.outputCst?sL:Ql}consumeInternalRecord(e,t,r){if(cs(t),!Rp(e)){let s=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let n=$n(this.recordingProdStack),a=new Te({idx:t,terminalType:e,label:r?.LABEL});return n.definition.push(a),WA}};function la(e,t,r,n=!1){cs(r);let a=$n(this.recordingProdStack),s=Ar(t)?t:t.DEF,l=new e({definition:[],idx:r});return n&&(l.separator=t.SEP),B(t,"MAX_LOOKAHEAD")&&(l.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(l),s.call(this),a.definition.push(l),this.recordingProdStack.pop(),Ql}i(la,"recordProd");o(la,"recordProd");function VA(e,t){cs(t);let r=$n(this.recordingProdStack),n=re(e)===!1,a=n===!1?e:e.DEF,s=new ct({definition:[],idx:t,ignoreAmbiguities:n&&e.IGNORE_AMBIGUITIES===!0});B(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD);let l=o$(a,u=>Ar(u.GATE));return s.hasPredicates=l,r.definition.push(s),q(a,u=>{let c=new lt({definition:[]});s.definition.push(c),B(u,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=u.IGNORE_AMBIGUITIES:B(u,"GATE")&&(c.ignoreAmbiguities=!0),this.recordingProdStack.push(c),u.ALT.call(this),this.recordingProdStack.pop()}),Ql}i(VA,"recordOrProd");o(VA,"recordOrProd");function mf(e){return e===0?"":`${e}`}i(mf,"getIdxSuffix");o(mf,"getIdxSuffix");function cs(e){if(e<0||e>Cm){let t=new Error(`Invalid DSL Method idx value: <${e}> + Idx value must be a none negative value smaller than ${Cm+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}i(cs,"assertMethodIdxIsValid");o(cs,"assertMethodIdxIsValid");var lL=class{static{i(this,"PerformanceTracer")}static{o(this,"PerformanceTracer")}initPerformanceTracer(e){if(B(e,"traceInitPerf")){let t=e.traceInitPerf,r=typeof t=="number";this.traceInitMaxIdent=r?t:1/0,this.traceInitPerf=r?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=vr.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;let r=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:n,value:a}=hp(t),s=n>10?console.warn:console.log;return this.traceInitIndent time: ${n}ms`),this.traceInitIndent--,a}else return t()}};function HA(e,t){t.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(a=>{if(a==="constructor")return;let s=Object.getOwnPropertyDescriptor(n,a);s&&(s.get||s.set)?Object.defineProperty(e.prototype,a,s):e.prototype[a]=r.prototype[a]})})}i(HA,"applyMixins");o(HA,"applyMixins");var tl=Os(Lr,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(tl);var vr=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:$a,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),rl=Object.freeze({recoveryValueFunc:o(()=>{},"recoveryValueFunc"),resyncEnabled:!0}),tt;(function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(tt||(tt={}));function gf(e=void 0){return function(){return e}}i(gf,"EMPTY_ALT");o(gf,"EMPTY_ALT");var kp=class YA{static{i(this,"_Parser")}static{o(this,"Parser")}static performSelfAnalysis(t){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let t;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{mp(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),q(this.definedRulesNames,a=>{let l=this[a].originalGrammarAction,u;this.TRACE_INIT(`${a} Rule`,()=>{u=this.topLevelRuleRecord(a,l)}),this.gastProductionsCache[a]=u})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=CA({rules:xe(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(he(n)&&this.skipValidations===!1){let a=bA({rules:xe(this.gastProductionsCache),tokenTypes:xe(this.tokensMap),errMsgProvider:mn,grammarName:r}),s=dA({lookaheadStrategy:this.lookaheadStrategy,rules:xe(this.gastProductionsCache),tokenTypes:xe(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(a,s)}}),he(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let a=T$(xe(this.gastProductionsCache));this.resyncFollows=a}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var a,s;(s=(a=this.lookaheadStrategy).initialize)===null||s===void 0||s.call(a,{rules:xe(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(xe(this.gastProductionsCache))})),!YA.DEFER_DEFINITION_ERRORS_HANDLING&&!he(this.definitionErrors))throw t=G(this.definitionErrors,a=>a.message),new Error(`Parser Definition Errors detected: + ${t.join(` +------------------------------- +`)}`)})}constructor(t,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(t,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),B(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=B(r,"skipValidations")?r.skipValidations:vr.skipValidations}};kp.DEFER_DEFINITION_ERRORS_HANDLING=!1;HA(kp,[HO,JO,eL,tL,nL,rL,aL,iL,oL,lL]);var uL=class extends kp{static{i(this,"EmbeddedActionsParser")}static{o(this,"EmbeddedActionsParser")}constructor(e,t=vr){let r=Ve(t);r.outputCst=!1,super(e,r)}};function XA(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r-1}i(aE,"listCacheHas2");o(aE,"listCacheHas");var mL=aE;function iE(e,t){var r=this.__data__,n=eu(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}i(iE,"listCacheSet2");o(iE,"listCacheSet");var gL=iE;function Fn(e){var t=-1,r=e==null?0:e.length;for(this.clear();++tu))return!1;var f=s.get(e),d=s.get(t);if(f&&d)return f==t&&d==e;var p=-1,m=!0,v=r&AD?new FE:void 0;for(s.set(e,t),s.set(t,e);++p-1&&e%1==0&&e-1&&e%1==0&&e<=nM}i(o_,"isLength2");o(o_,"isLength");var Lp=o_,aM="[object Arguments]",iM="[object Array]",sM="[object Boolean]",oM="[object Date]",lM="[object Error]",uM="[object Function]",cM="[object Map]",fM="[object Number]",dM="[object Object]",pM="[object RegExp]",hM="[object Set]",mM="[object String]",gM="[object WeakMap]",yM="[object ArrayBuffer]",vM="[object DataView]",TM="[object Float32Array]",RM="[object Float64Array]",$M="[object Int8Array]",AM="[object Int16Array]",EM="[object Int32Array]",_M="[object Uint8Array]",CM="[object Uint8ClampedArray]",bM="[object Uint16Array]",SM="[object Uint32Array]",ve={};ve[TM]=ve[RM]=ve[$M]=ve[AM]=ve[EM]=ve[_M]=ve[CM]=ve[bM]=ve[SM]=!0;ve[aM]=ve[iM]=ve[yM]=ve[sM]=ve[vM]=ve[oM]=ve[lM]=ve[uM]=ve[cM]=ve[fM]=ve[dM]=ve[pM]=ve[hM]=ve[mM]=ve[gM]=!1;function l_(e){return Ma(e)&&Lp(e.length)&&!!ve[Wa(e)]}i(l_,"baseIsTypedArray2");o(l_,"baseIsTypedArray");var wM=l_;function u_(e){return function(t){return e(t)}}i(u_,"baseUnary2");o(u_,"baseUnary");var IM=u_,c_=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ji=c_&&typeof module=="object"&&module&&!module.nodeType&&module,NM=Ji&&Ji.exports===c_,Pu=NM&&cE.process,kM=(function(){try{var e=Ji&&Ji.require&&Ji.require("util").types;return e||Pu&&Pu.binding&&Pu.binding("util")}catch{}})(),Dm=kM,Mm=Dm&&Dm.isTypedArray,PM=Mm?IM(Mm):wM,Dp=PM,OM=Object.prototype,LM=OM.hasOwnProperty;function f_(e,t){var r=rt(e),n=!r&&au(e),a=!r&&!n&&nl(e),s=!r&&!n&&!a&&Dp(e),l=r||n||a||s,u=l?WD(e.length,String):[],c=u.length;for(var f in e)(t||LM.call(e,f))&&!(l&&(f=="length"||a&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||s_(f,c)))&&u.push(f);return u}i(f_,"arrayLikeKeys2");o(f_,"arrayLikeKeys");var DM=f_,MM=Object.prototype;function d_(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||MM;return e===r}i(d_,"isPrototype2");o(d_,"isPrototype");var p_=d_;function h_(e,t){return function(r){return e(t(r))}}i(h_,"overArg2");o(h_,"overArg");var xM=h_,FM=xM(Object.keys,Object),GM=FM,jM=Object.prototype,UM=jM.hasOwnProperty;function m_(e){if(!p_(e))return GM(e);var t=[];for(var r in Object(e))UM.call(e,r)&&r!="constructor"&&t.push(r);return t}i(m_,"baseKeys2");o(m_,"baseKeys");var g_=m_;function y_(e){return e!=null&&Lp(e.length)&&!yE(e)}i(y_,"isArrayLike2");o(y_,"isArrayLike");var iu=y_;function v_(e){return iu(e)?DM(e):g_(e)}i(v_,"keys2");o(v_,"keys");var Mp=v_;function T_(e){return jD(e,Mp,qD)}i(T_,"getAllKeys2");o(T_,"getAllKeys");var xm=T_,zM=1,BM=Object.prototype,KM=BM.hasOwnProperty;function R_(e,t,r,n,a,s){var l=r&zM,u=xm(e),c=u.length,f=xm(t),d=f.length;if(c!=d&&!l)return!1;for(var p=c;p--;){var m=u[p];if(!(l?m in t:KM.call(t,m)))return!1}var v=s.get(e),T=s.get(t);if(v&&T)return v==t&&T==e;var w=!0;s.set(e,t),s.set(t,e);for(var N=l;++pKp(e,t,l));return Bn(e,t,n,r,...a)}i(dC,"alternation");o(dC,"alternation");function pC(e,t,r){let n=Fe(e,t,r,{type:Dr});_r(e,n);let a=Bn(e,t,n,r,Ur(e,t,r));return hC(e,t,r,a)}i(pC,"option");o(pC,"option");function Ur(e,t,r){let n=Bx(cr(r.definition,a=>Kp(e,t,a)),a=>a!==void 0);return n.length===1?n[0]:n.length===0?void 0:gC(e,n)}i(Ur,"block");o(Ur,"block");function qp(e,t,r,n,a){let s=n.left,l=n.right,u=Fe(e,t,r,{type:Hx});_r(e,u);let c=Fe(e,t,r,{type:aC});return s.loopback=u,c.loopback=u,e.decisionMap[En(t,a?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=u,ke(l,u),a===void 0?(ke(u,s),ke(u,c)):(ke(u,c),ke(u,a.left),ke(a.right,s)),{left:s,right:c}}i(qp,"plus");o(qp,"plus");function Wp(e,t,r,n,a){let s=n.left,l=n.right,u=Fe(e,t,r,{type:Vx});_r(e,u);let c=Fe(e,t,r,{type:aC}),f=Fe(e,t,r,{type:Wx});return u.loopback=f,c.loopback=f,ke(u,s),ke(u,c),ke(l,f),a!==void 0?(ke(f,c),ke(f,a.left),ke(a.right,s)):ke(f,u),e.decisionMap[En(t,a?"RepetitionWithSeparator":"Repetition",r.idx)]=u,{left:u,right:c}}i(Wp,"star");o(Wp,"star");function hC(e,t,r,n){let a=n.left,s=n.right;return ke(a,s),e.decisionMap[En(t,"Option",r.idx)]=a,n}i(hC,"optional");o(hC,"optional");function _r(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}i(_r,"defineDecisionState");o(_r,"defineDecisionState");function Bn(e,t,r,n,...a){let s=Fe(e,t,n,{type:qx,start:r});r.end=s;for(let u of a)u!==void 0?(ke(r,u.left),ke(u.right,s)):ke(r,s);let l={left:r,right:s};return e.decisionMap[En(t,mC(n),n.idx)]=r,l}i(Bn,"makeAlts");o(Bn,"makeAlts");function mC(e){if(e instanceof ct)return"Alternation";if(e instanceof We)return"Option";if(e instanceof Se)return"Repetition";if(e instanceof ut)return"RepetitionWithSeparator";if(e instanceof gt)return"RepetitionMandatory";if(e instanceof yt)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}i(mC,"getProdType2");o(mC,"getProdType");function gC(e,t){let r=t.length;for(let s=0;se.alt)}get key(){let e="";for(let t in this.map)e+=t+":";return e}};function Vp(e,t=!0){return`${t?`a${e.alt}`:""}s${e.state.stateNumber}:${e.stack.map(r=>r.stateNumber.toString()).join("_")}`}i(Vp,"getATNConfigKey");o(Vp,"getATNConfigKey");function RC(e,t,r){for(var n=-1,a=e.length;++n0&&r(u)?t>1?Hp(u,t-1,r,n,a):HE(a,u):n||(a[a.length]=u)}return a}i(Hp,"baseFlatten2");o(Hp,"baseFlatten");var _C=Hp;function CC(e,t){return _C(cr(e,t),1)}i(CC,"flatMap2");o(CC,"flatMap");var Qx=CC;function bC(e,t,r,n){for(var a=e.length,s=r+(n?1:-1);n?s--:++s-1}i(NC,"arrayIncludes2");o(NC,"arrayIncludes");var a1=NC;function kC(e,t,r){for(var n=-1,a=e==null?0:e.length;++n=c1){var f=t?null:u1(e);if(f)return Op(f);l=!1,a=UE,c=new FE}else c=t?[]:u;e:for(;++n{let a=n.toString(),s=r[a];return s!==void 0||(s={atnStartState:e,decision:t,states:{}},r[a]=s),s}}i(BC,"createDFACache");o(BC,"createDFACache");var KC=class{static{i(this,"PredicateSet")}static{o(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="",t=this.predicates.length;for(let r=0;rconsole.log(r))}initialize(e){this.atn=sC(e.rules),this.dfas=qC(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:t,rule:r,hasPredicates:n,dynamicTokensEnabled:a}=e,s=this.dfas,l=this.logging,u=En(r,"Alternation",t),f=this.atn.decisionMap[u].decision,d=cr(of({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:r}),p=>cr(p,m=>m[0]));if(Af(d,!1)&&!a){let p=Ym(d,(m,v,T)=>(Ou(v,w=>{w&&(m[w.tokenTypeIdx]=T,Ou(w.categoryMatches,N=>{m[N]=T}))}),m),{});return n?function(m){var v;let T=this.LA(1),w=p[T.tokenTypeIdx];if(m!==void 0&&w!==void 0){let N=(v=m[w])===null||v===void 0?void 0:v.GATE;if(N!==void 0&&N.call(this)===!1)return}return w}:function(){let m=this.LA(1);return p[m.tokenTypeIdx]}}else return n?function(p){let m=new KC,v=p===void 0?0:p.length;for(let w=0;wcr(p,m=>m[0]));if(Af(d)&&d[0][0]&&!a){let p=d[0],m=p1(p);if(m.length===1&&R1(m[0].categoryMatches)){let T=m[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===T}}else{let v=Ym(m,(T,w)=>(w!==void 0&&(T[w.tokenTypeIdx]=!0,Ou(w.categoryMatches,N=>{T[N]=!0})),T),{});return function(){let T=this.LA(1);return v[T.tokenTypeIdx]===!0}}}return function(){let p=Ro.call(this,s,f,Xm,l);return typeof p=="object"?!1:p===0}}};function Af(e,t=!0){let r=new Set;for(let n of e){let a=new Set;for(let s of n){if(s===void 0){if(t)break;return!1}let l=[s.tokenTypeIdx].concat(s.categoryMatches);for(let u of l)if(r.has(u)){if(!a.has(u))return!1}else r.add(u),a.add(u)}}return!0}i(Af,"isLL1Sequence");o(Af,"isLL1Sequence");function qC(e){let t=e.decisionStates.length,r=Array(t);for(let n=0;nvn(a)).join(", "),r=e.production.idx===0?"":e.production.idx,n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${XC(e.production)}${r}> inside <${e.topLevelRule.name}> Rule, +<${t}> may appears as a prefix path in all these alternatives. +`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,n}i(YC,"buildAmbiguityError");o(YC,"buildAmbiguityError");function XC(e){if(e instanceof et)return"SUBRULE";if(e instanceof We)return"OPTION";if(e instanceof ct)return"OR";if(e instanceof gt)return"AT_LEAST_ONE";if(e instanceof yt)return"AT_LEAST_ONE_SEP";if(e instanceof ut)return"MANY_SEP";if(e instanceof Se)return"MANY";if(e instanceof Te)return"CONSUME";throw Error("non exhaustive match")}i(XC,"getProductionDslName2");o(XC,"getProductionDslName");function JC(e,t,r){let n=Qx(t.configs.elements,s=>s.state.transitions),a=d1(n.filter(s=>s instanceof zp).map(s=>s.tokenType),s=>s.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:a,tokenPath:e}}i(JC,"buildAdaptivePredictError");o(JC,"buildAdaptivePredictError");function ZC(e,t){return e.edges[t.tokenTypeIdx]}i(ZC,"getExistingTargetState");o(ZC,"getExistingTargetState");function QC(e,t,r){let n=new $f,a=[];for(let l of e.elements){if(r.is(l.alt)===!1)continue;if(l.state.type===Ms){a.push(l);continue}let u=l.state.transitions.length;for(let c=0;c0&&!ab(s))for(let l of a)s.add(l);return s}i(QC,"computeReachSet");o(QC,"computeReachSet");function eb(e,t){if(e instanceof zp&&Ap(t,e.tokenType))return e.target}i(eb,"getReachableTarget");o(eb,"getReachableTarget");function tb(e,t){let r;for(let n of e.elements)if(t.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}i(tb,"getUniqueAlt");o(tb,"getUniqueAlt");function Yp(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}i(Yp,"newDFAState");o(Yp,"newDFAState");function Ef(e,t,r,n){return n=Xp(e,n),t.edges[r.tokenTypeIdx]=n,n}i(Ef,"addDFAEdge");o(Ef,"addDFAEdge");function Xp(e,t){if(t===al)return t;let r=t.configs.key,n=e.states[r];return n!==void 0?n:(t.configs.finalize(),e.states[r]=t,t)}i(Xp,"addDFAState");o(Xp,"addDFAState");function rb(e){let t=new $f,r=e.transitions.length;for(let n=0;n0){let a=[...e.stack],l={state:a.pop(),alt:e.alt,stack:a};hs(l,t)}else t.add(e);return}r.epsilonOnlyTransitions||t.add(e);let n=r.transitions.length;for(let a=0;a1)return!0;return!1}i(lb,"hasConflictingAltSet");o(lb,"hasConflictingAltSet");function ub(e){for(let t of Array.from(e.values()))if(Object.keys(t).length===1)return!0;return!1}i(ub,"hasStateAssociatedWithOneAlt");o(ub,"hasStateAssociatedWithOneAlt");ys();var cb=class{static{i(this,"CstNodeBuilder")}static{o(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]??this.rootNode}buildRootNode(e){return this.rootNode=new Zp(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let t=new pu;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){let r=new il(e.startOffset,e.image.length,ts(e),e.tokenType,!t);return r.grammarSource=t,r.root=this.rootNode,this.current.content.push(r),r}removeNode(e){let t=e.container;if(t){let r=t.content.indexOf(e);r>=0&&t.content.splice(r,1)}}addHiddenNodes(e){let t=[];for(let a of e){let s=new il(a.startOffset,a.image.length,ts(a),a.tokenType,!0);s.root=this.rootNode,t.push(s)}let r=this.current,n=!1;if(r.content.length>0){r.content.push(...t);return}for(;r.container;){let a=r.container.content.indexOf(r);if(a>0){r.container.content.splice(a,0,...t),n=!0;break}r=r.container}n||this.rootNode.content.unshift(...t)}construct(e){let t=this.current;typeof e.$type=="string"&&!e.$infix&&(this.current.astNode=e),e.$cstNode=t;let r=this.nodeStack.pop();r?.content.length===0&&this.removeNode(r)}},Jp=class{static{i(this,"AbstractCstNode")}static{o(this,"AbstractCstNode")}get hidden(){return!1}get astNode(){let e=typeof this._astNode?.$type=="string"?this._astNode:this.container?.astNode;if(!e)throw new Error("This node has no associated AST element");return e}set astNode(e){this._astNode=e}get text(){return this.root.fullText.substring(this.offset,this.end)}},il=class extends Jp{static{i(this,"LeafCstNodeImpl")}static{o(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,r,n,a=!1){super(),this._hidden=a,this._offset=e,this._tokenType=n,this._length=t,this._range=r}},pu=class extends Jp{static{i(this,"CompositeCstNodeImpl")}static{o(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new _1(this)}get offset(){return this.firstNonHiddenNode?.offset??0}get length(){return this.end-this.offset}get end(){return this.lastNonHiddenNode?.end??0}get range(){let e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(this._rangeCache===void 0){let{range:r}=e,{range:n}=t;this._rangeCache={start:r.start,end:n.end.line=0;e--){let t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}},_1=class fb extends Array{static{i(this,"_CstNodeContainer")}static{o(this,"CstNodeContainer")}constructor(t){super(),this.parent=t,Object.setPrototypeOf(this,fb.prototype)}push(...t){return this.addParents(t),super.push(...t)}unshift(...t){return this.addParents(t),super.unshift(...t)}splice(t,r,...n){return this.addParents(n),super.splice(t,r,...n)}addParents(t){for(let r of t)r.container=this.parent}},Zp=class extends pu{static{i(this,"RootCstNodeImpl")}static{o(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}},sl=Symbol("Datatype");function $o(e){return e.$type===sl}i($o,"isDataTypeNode");o($o,"isDataTypeNode");var Jm="\u200B",db=o(e=>e.endsWith(Jm)?e:e+Jm,"withRuleSuffix"),Qp=class{static{i(this,"AbstractLangiumParser")}static{o(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let t=this.lexer.definition,r=e.LanguageMetaData.mode==="production";e.shared.profilers.LangiumProfiler?.isActive("parsing")?this.wrapper=new b1(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider},e.shared.profilers.LangiumProfiler.createTask("parsing",e.LanguageMetaData.languageId)):this.wrapper=new gb(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider})}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},pb=class extends Qp{static{i(this,"LangiumParser")}static{o(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new cb,this.stack=[],this.assignmentMap=new Map,this.operatorPrecedence=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){let r=this.computeRuleType(e),n;Na(e)&&(n=e.name,this.registerPrecedenceMap(e));let a=this.wrapper.DEFINE_RULE(db(e.name),this.startImplementation(r,n,t).bind(this));return this.allRules.set(e.name,a),Qe(e)&&e.entry&&(this.mainRule=a),a}registerPrecedenceMap(e){let t=e.name,r=new Map;for(let n=0;n0&&(t=this.construct()),t===void 0)throw new Error("No result from parser");if(this.stack.length>0)throw new Error("Parser stack is not empty after parsing");return t}startImplementation(e,t,r){return n=>{let a=!this.isRecording()&&e!==void 0;if(a){let s={$type:e};this.stack.push(s),e===sl?s.value="":t!==void 0&&(s.$infixName=t)}return r(n),a?this.construct():void 0}}extractHiddenTokens(e){let t=this.lexerResult.hidden;if(!t.length)return[];let r=e.startOffset;for(let n=0;nr)return t.splice(0,n);return t.splice(0,t.length)}consume(e,t,r){let n=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(n)){let a=this.extractHiddenTokens(n);this.nodeBuilder.addHiddenNodes(a);let s=this.nodeBuilder.buildLeafNode(n,r),{assignment:l,crossRef:u}=this.getAssignment(r),c=this.current;if(l){let f=pr(r)?n.image:this.converter.convert(n.image,s);this.assign(l.operator,l.feature,f,s,u)}else if($o(c)){let f=n.image;pr(r)||(f=this.converter.convert(f,s).toString()),c.value+=f}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,t,r,n,a){let s;!this.isRecording()&&!r&&(s=this.nodeBuilder.buildCompositeNode(n));let l;try{l=this.wrapper.wrapSubrule(e,t,a)}finally{this.isRecording()||(l===void 0&&!r&&(l=this.construct()),l!==void 0&&s&&s.length>0&&this.performSubruleAssignment(l,n,s))}}performSubruleAssignment(e,t,r){let{assignment:n,crossRef:a}=this.getAssignment(t);if(n)this.assign(n.operator,n.feature,e,r,a);else if(!n){let s=this.current;if($o(s))s.value+=e.toString();else if(typeof e=="object"&&e){let u=this.assignWithoutOverride(e,s);this.stack.pop(),this.stack.push(u)}}}action(e,t){if(!this.isRecording()){let r=this.current;if(t.feature&&t.operator){r=this.construct(),this.nodeBuilder.removeNode(r.$cstNode),this.nodeBuilder.buildCompositeNode(t).content.push(r.$cstNode);let a={$type:e};this.stack.push(a),this.assign(t.operator,t.feature,r,r.$cstNode)}else r.$type=e}}construct(){if(this.isRecording())return;let e=this.stack.pop();return this.nodeBuilder.construct(e),"$infixName"in e?this.constructInfix(e,this.operatorPrecedence.get(e.$infixName)):$o(e)?this.converter.convert(e.value,e.$cstNode):(Jf(this.astReflection,e),e)}constructInfix(e,t){let r=e.parts;if(!Array.isArray(r)||r.length===0)return;let n=e.operators;if(!Array.isArray(n)||r.length<2)return r[0];let a=0,s=-1;for(let T=0;Ts?(s=N.precedence,a=T):N.precedence===s&&(N.rightAssoc||(a=T))}let l=n.slice(0,a),u=n.slice(a+1),c=r.slice(0,a+1),f=r.slice(a+1),d={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:c,operators:l},p={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:f,operators:u},m=this.constructInfix(d,t),v=this.constructInfix(p,t);return{$type:e.$type,$cstNode:e.$cstNode,left:m,operator:n[a],right:v}}getAssignment(e){if(!this.assignmentMap.has(e)){let t=bn(e,dr);this.assignmentMap.set(e,{assignment:t,crossRef:t&&wn(t.terminal)?t.terminal.isMulti?"multi":"single":void 0})}return this.assignmentMap.get(e)}assign(e,t,r,n,a){let s=this.current,l;switch(a==="single"&&typeof r=="string"?l=this.linker.buildReference(s,t,n,r):a==="multi"&&typeof r=="string"?l=this.linker.buildMultiReference(s,t,n,r):l=r,e){case"=":{s[t]=l;break}case"?=":{s[t]=!0;break}case"+=":Array.isArray(s[t])||(s[t]=[]),s[t].push(l)}}assignWithoutOverride(e,t){for(let[n,a]of Object.entries(t)){let s=e[n];s===void 0?e[n]=a:Array.isArray(s)&&Array.isArray(a)&&(a.push(...s),e[n]=a)}let r=e.$cstNode;return r&&(r.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},hb=class{static{i(this,"AbstractParserErrorMessageProvider")}static{o(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return $a.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return $a.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return $a.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return $a.buildEarlyExitMessage(e)}},eh=class extends hb{static{i(this,"LangiumParserErrorMessageProvider")}static{o(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},mb=class extends Qp{static{i(this,"LangiumCompletionParser")}static{o(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){let r=this.wrapper.DEFINE_RULE(db(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{let r=this.keepStackSize();try{e(t)}finally{this.resetStackSize(r)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,r){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,r],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,r,n,a){this.before(n),this.wrapper.wrapSubrule(e,t,a),this.after(n)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}},C1={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new eh},gb=class extends uL{static{i(this,"ChevrotainWrapper")}static{o(this,"ChevrotainWrapper")}constructor(e,t){let r=t&&"maxLookahead"in t;super(e,{...C1,lookaheadStrategy:r?new Ip({maxLookahead:t.maxLookahead}):new E1({logging:t.skipValidations?()=>{}:void 0}),...t})}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t,r){return this.RULE(e,t,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t,void 0)}wrapSubrule(e,t,r){return this.subrule(e,t,{ARGS:[r]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}rule(e){return e.call(this,{})}},b1=class extends gb{static{i(this,"ProfilerWrapper")}static{o(this,"ProfilerWrapper")}constructor(e,t,r){super(e,t),this.task=r}rule(e){this.task.start(),this.task.startSubTask(this.ruleName(e));try{return super.rule(e)}finally{this.task.stopSubTask(this.ruleName(e)),this.task.stop()}}ruleName(e){return e.ruleName}subrule(e,t,r){this.task.startSubTask(this.ruleName(t));try{return super.subrule(e,t,r)}finally{this.task.stopSubTask(this.ruleName(t))}}};function hu(e,t,r){return yb({parser:t,tokens:r,ruleNames:new Map},e),t}i(hu,"createParser");o(hu,"createParser");function yb(e,t){let r=Il(t,!1),n=oe(t.rules).filter(Qe).filter(s=>r.has(s));for(let s of n){let l={...e,consume:1,optional:1,subrule:1,many:1,or:1};e.parser.rule(s,Mr(l,s.definition))}let a=oe(t.rules).filter(Na).filter(s=>r.has(s));for(let s of a)e.parser.rule(s,vb(e,s))}i(yb,"buildRules");o(yb,"buildRules");function vb(e,t){let r=t.call.rule.ref;if(!r)throw new Error("Could not resolve reference to infix operator rule: "+t.call.rule.$refText);if(Ct(r))throw new Error("Cannot use terminal rule in infix expression");let n=t.operators.precedences.flatMap(v=>v.operators),a={$type:"Group",elements:[]},s={$container:a,$type:"Assignment",feature:"parts",operator:"+=",terminal:t.call},l={$container:a,$type:"Group",elements:[],cardinality:"*"};a.elements.push(s,l);let c={$container:l,$type:"Assignment",feature:"operators",operator:"+=",terminal:{$type:"Alternatives",elements:n}},f={...s,$container:l};l.elements.push(c,f);let p=n.map(v=>e.tokens[v.value]).map((v,T)=>({ALT:o(()=>e.parser.consume(T,v,c),"ALT")})),m;return v=>{m??(m=mu(e,r)),e.parser.subrule(0,m,!1,s,v),e.parser.many(0,{DEF:o(()=>{e.parser.alternatives(0,p),e.parser.subrule(1,m,!1,f,v)},"DEF")})}}i(vb,"buildInfixRule");o(vb,"buildInfixRule");function Mr(e,t,r=!1){let n;if(pr(t))n=Cb(e,t);else if(Pr(t))n=Tb(e,t);else if(dr(t))n=Mr(e,t.terminal);else if(wn(t))n=th(e,t);else if(hr(t))n=Rb(e,t);else if(Rl(t))n=Ab(e,t);else if(_l(t))n=Eb(e,t);else if(In(t))n=_b(e,t);else if(ad(t)){let a=e.consume++;n=o(()=>e.parser.consume(a,Lr,t),"method")}else throw new bl(t.$cstNode,`Unexpected element type: ${t.$type}`);return rh(e,r?void 0:ms(t),n,t.cardinality)}i(Mr,"buildElement");o(Mr,"buildElement");function Tb(e,t){let r=Rn(t);return()=>e.parser.action(r,t)}i(Tb,"buildAction");o(Tb,"buildAction");function Rb(e,t){let r=t.rule.ref;if(Sn(r)){let n=e.subrule++,a=Qe(r)&&r.fragment,s=t.arguments.length>0?$b(r,t.arguments):()=>({}),l;return u=>{l??(l=mu(e,r)),e.parser.subrule(n,l,a,t,s(u))}}else if(Ct(r)){let n=e.consume++,a=ol(e,r.name);return()=>e.parser.consume(n,a,t)}else if(r)Fr(r);else throw new bl(t.$cstNode,`Undefined rule: ${t.rule.$refText}`)}i(Rb,"buildRuleCall");o(Rb,"buildRuleCall");function $b(e,t){if(t.some(n=>n.calledByName)){let n=t.map(a=>({parameterName:a.parameter?.ref?.name,predicate:Nt(a.value)}));return a=>{let s={};for(let{parameterName:l,predicate:u}of n)l&&(s[l]=u(a));return s}}else{let n=t.map(a=>Nt(a.value));return a=>{let s={};for(let l=0;lt(n)||r(n)}else if(rd(e)){let t=Nt(e.left),r=Nt(e.right);return n=>t(n)&&r(n)}else if(od(e)){let t=Nt(e.value);return r=>!t(r)}else if(ld(e)){let t=e.parameter.ref.name;return r=>r!==void 0&&r[t]===!0}else if(ed(e)){let t=!!e.true;return()=>t}Fr(e)}i(Nt,"buildPredicate");o(Nt,"buildPredicate");function Ab(e,t){if(t.elements.length===1)return Mr(e,t.elements[0]);{let r=[];for(let a of t.elements){let s={ALT:Mr(e,a,!0)},l=ms(a);l&&(s.GATE=Nt(l)),r.push(s)}let n=e.or++;return a=>e.parser.alternatives(n,r.map(s=>{let l={ALT:o(()=>s.ALT(a),"ALT")},u=s.GATE;return u&&(l.GATE=()=>u(a)),l}))}}i(Ab,"buildAlternatives");o(Ab,"buildAlternatives");function Eb(e,t){if(t.elements.length===1)return Mr(e,t.elements[0]);let r=[];for(let u of t.elements){let c={ALT:Mr(e,u,!0)},f=ms(u);f&&(c.GATE=Nt(f)),r.push(c)}let n=e.or++,a=o((u,c)=>{let f=c.getRuleStack().join("-");return`uGroup_${u}_${f}`},"idFunc"),s=o(u=>e.parser.alternatives(n,r.map((c,f)=>{let d={ALT:o(()=>!0,"ALT")},p=e.parser;d.ALT=()=>{if(c.ALT(u),!p.isRecording()){let v=a(n,p);p.unorderedGroups.get(v)||p.unorderedGroups.set(v,[]);let T=p.unorderedGroups.get(v);typeof T?.[f]>"u"&&(T[f]=!0)}};let m=c.GATE;return m?d.GATE=()=>m(u):d.GATE=()=>!p.unorderedGroups.get(a(n,p))?.[f],d})),"alternatives"),l=rh(e,ms(t),s,"*");return u=>{l(u),e.parser.isRecording()||e.parser.unorderedGroups.delete(a(n,e.parser))}}i(Eb,"buildUnorderedGroup");o(Eb,"buildUnorderedGroup");function _b(e,t){let r=t.elements.map(n=>Mr(e,n));return n=>r.forEach(a=>a(n))}i(_b,"buildGroup");o(_b,"buildGroup");function ms(e){if(In(e))return e.guardCondition}i(ms,"getGuardCondition");o(ms,"getGuardCondition");function th(e,t,r=t.terminal){if(r)if(hr(r)&&Qe(r.rule.ref)){let n=r.rule.ref,a=e.subrule++,s;return l=>{s??(s=mu(e,n)),e.parser.subrule(a,s,!1,t,l)}}else if(hr(r)&&Ct(r.rule.ref)){let n=e.consume++,a=ol(e,r.rule.ref.name);return()=>e.parser.consume(n,a,t)}else if(pr(r)){let n=e.consume++,a=ol(e,r.value);return()=>e.parser.consume(n,a,t)}else throw new Error("Could not build cross reference parser");else{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);let a=Ol(t.type.ref)?.terminal;if(!a)throw new Error("Could not find name assignment for type: "+Rn(t.type.ref));return th(e,t,a)}}i(th,"buildCrossReference");o(th,"buildCrossReference");function Cb(e,t){let r=e.consume++,n=e.tokens[t.value];if(!n)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(r,n,t)}i(Cb,"buildKeyword");o(Cb,"buildKeyword");function rh(e,t,r,n){let a=t&&Nt(t);if(!n)if(a){let s=e.or++;return l=>e.parser.alternatives(s,[{ALT:o(()=>r(l),"ALT"),GATE:o(()=>a(l),"GATE")},{ALT:gf(),GATE:o(()=>!a(l),"GATE")}])}else return r;if(n==="*"){let s=e.many++;return l=>e.parser.many(s,{DEF:o(()=>r(l),"DEF"),GATE:a?()=>a(l):void 0})}else if(n==="+"){let s=e.many++;if(a){let l=e.or++;return u=>e.parser.alternatives(l,[{ALT:o(()=>e.parser.atLeastOne(s,{DEF:o(()=>r(u),"DEF")}),"ALT"),GATE:o(()=>a(u),"GATE")},{ALT:gf(),GATE:o(()=>!a(u),"GATE")}])}else return l=>e.parser.atLeastOne(s,{DEF:o(()=>r(l),"DEF")})}else if(n==="?"){let s=e.optional++;return l=>e.parser.optional(s,{DEF:o(()=>r(l),"DEF"),GATE:a?()=>a(l):void 0})}else Fr(n)}i(rh,"wrap");o(rh,"wrap");function mu(e,t){let r=bb(e,t),n=e.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}i(mu,"getRule");o(mu,"getRule");function bb(e,t){if(Sn(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let r=t,n=r.$container,a=t.$type;for(;!Qe(n);)(In(n)||Rl(n)||_l(n))&&(a=n.elements.indexOf(r).toString()+":"+a),r=n,n=n.$container;return a=n.name+":"+a,e.ruleNames.set(t,a),a}}i(bb,"getRuleName");o(bb,"getRuleName");function ol(e,t){let r=e.tokens[t];if(!r)throw new Error(`Token "${t}" not found."`);return r}i(ol,"getToken");o(ol,"getToken");function nh(e){let t=e.Grammar,r=e.parser.Lexer,n=new mb(e);return hu(t,n,r.definition),n.finalize(),n}i(nh,"createCompletionParser");o(nh,"createCompletionParser");function ah(e){let t=ih(e);return t.finalize(),t}i(ah,"createLangiumParser");o(ah,"createLangiumParser");function ih(e){let t=e.Grammar,r=e.parser.Lexer,n=new pb(e);return hu(t,n,r.definition)}i(ih,"prepareLangiumParser");o(ih,"prepareLangiumParser");var gu=class{static{i(this,"DefaultTokenBuilder")}static{o(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,t){let r=oe(Il(e,!1)),n=this.buildTerminalTokens(r),a=this.buildKeywordTokens(r,n,t);return a.push(...n),a}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(Ct).filter(t=>!t.fragment).map(t=>this.buildTerminalToken(t)).toArray()}buildTerminalToken(e){let t=Es(e),r=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,n={name:e.name,PATTERN:r};return typeof r=="function"&&(n.LINE_BREAKS=!0),e.hidden&&(n.GROUP=wl(t)?Ze.SKIPPED:"hidden"),n}requiresCustomPattern(e){return!!(e.flags.includes("u")||e.flags.includes("s"))}regexPatternFunction(e){let t=new RegExp(e,e.flags+"y");return(r,n)=>(t.lastIndex=n,t.exec(r))}buildKeywordTokens(e,t,r){return e.filter(Sn).flatMap(n=>$r(n).filter(pr)).distinct(n=>n.value).toArray().sort((n,a)=>a.value.length-n.value.length).map(n=>this.buildKeywordToken(n,t,!!r?.caseInsensitive))}buildKeywordToken(e,t,r){let n=this.buildKeywordPattern(e,r),a={name:e.value,PATTERN:n,LONGER_ALT:this.findLongerAlt(e,t)};return typeof n=="function"&&(a.LINE_BREAKS=!0),a}buildKeywordPattern(e,t){return t?new RegExp(ja(e.value),"i"):e.value}findLongerAlt(e,t){return t.reduce((r,n)=>{let a=n?.PATTERN;return a?.source&&Nd("^"+a.source+"$",e.value)&&r.push(n),r},[])}},sh=class{static{i(this,"DefaultValueConverter")}static{o(this,"DefaultValueConverter")}convert(e,t){let r=t.grammarSource;if(wn(r)&&(r=Dd(r)),hr(r)){let n=r.rule.ref;if(!n)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(n,e,t)}return e}runConverter(e,t,r){switch(e.name.toUpperCase()){case"INT":return Kt.convertInt(t);case"STRING":return Kt.convertString(t);case"ID":return Kt.convertID(t)}switch(Kd(e)?.toLowerCase()){case"number":return Kt.convertNumber(t);case"boolean":return Kt.convertBoolean(t);case"bigint":return Kt.convertBigint(t);case"date":return Kt.convertDate(t);default:return t}}},Kt;(function(e){function t(f){let d="";for(let p=1;p{typeof setImmediate>"u"?setTimeout(e,0):setImmediate(e)})}i(yu,"delayNextTick");o(yu,"delayNextTick");var Ao=0,Sb=10;function vu(){return Ao=performance.now(),new pe.CancellationTokenSource}i(vu,"startCancelableOperation");o(vu,"startCancelableOperation");function oh(e){Sb=e}i(oh,"setInterruptionPeriod");o(oh,"setInterruptionPeriod");var Vt=Symbol("OperationCancelled");function Kn(e){return e===Vt}i(Kn,"isOperationCancelled");o(Kn,"isOperationCancelled");async function je(e){if(e===pe.CancellationToken.None)return;let t=performance.now();if(t-Ao>=Sb&&(Ao=t,await yu(),Ao=performance.now()),e.isCancellationRequested)throw Vt}i(je,"interruptAndCheck");o(je,"interruptAndCheck");var Tr=class{static{i(this,"Deferred")}static{o(this,"Deferred")}constructor(){this.promise=new Promise((e,t)=>{this.resolve=r=>(e(r),this),this.reject=r=>(t(r),this)})}},Zm=class _f{static{i(this,"_FullTextDocument")}static{o(this,"FullTextDocument")}constructor(t,r,n,a){this._uri=t,this._languageId=r,this._version=n,this._content=a,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){if(t){let r=this.offsetAt(t.start),n=this.offsetAt(t.end);return this._content.substring(r,n)}return this._content}update(t,r){for(let n of t)if(_f.isIncremental(n)){let a=uh(n.range),s=this.offsetAt(a.start),l=this.offsetAt(a.end);this._content=this._content.substring(0,s)+n.text+this._content.substring(l,this._content.length);let u=Math.max(a.start.line,0),c=Math.max(a.end.line,0),f=this._lineOffsets,d=Cf(n.text,!1,s);if(c-u===d.length)for(let m=0,v=d.length;mt?a=l:n=l+1}let s=n-1;return t=this.ensureBeforeEOL(t,r[s]),{line:s,character:t-r[s]}}offsetAt(t){let r=this.getLineOffsets();if(t.line>=r.length)return this._content.length;if(t.line<0)return 0;let n=r[t.line];if(t.character<=0)return n;let a=t.line+1r&&lh(this._content.charCodeAt(t-1));)t--;return t}get lineCount(){return this.getLineOffsets().length}static isIncremental(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}},ll;(function(e){function t(a,s,l,u){return new Zm(a,s,l,u)}i(t,"create"),o(t,"create"),e.create=t;function r(a,s,l){if(a instanceof Zm)return a.update(s,l),a;throw new Error("TextDocument.update: document must be created by TextDocument.create")}i(r,"update"),o(r,"update"),e.update=r;function n(a,s){let l=a.getText(),u=ul(s.map(wb),(d,p)=>{let m=d.range.start.line-p.range.start.line;return m===0?d.range.start.character-p.range.start.character:m}),c=0,f=[];for(let d of u){let p=a.offsetAt(d.range.start);if(pc&&f.push(l.substring(c,p)),d.newText.length&&f.push(d.newText),c=a.offsetAt(d.range.end)}return f.push(l.substr(c)),f.join("")}i(n,"applyEdits"),o(n,"applyEdits"),e.applyEdits=n})(ll||(ll={}));function ul(e,t){if(e.length<=1)return e;let r=e.length/2|0,n=e.slice(0,r),a=e.slice(r);ul(n,t),ul(a,t);let s=0,l=0,u=0;for(;sr.line||t.line===r.line&&t.character>r.character?{start:r,end:t}:e}i(uh,"getWellformedRange");o(uh,"getWellformedRange");function wb(e){let t=uh(e.range);return t!==e.range?{newText:e.newText,range:t}:e}i(wb,"getWellformedEdit");o(wb,"getWellformedEdit");var Ib;(()=>{"use strict";var e={975:O=>{function C(R){if(typeof R!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(R))}i(C,"e2"),o(C,"e");function y(R,$){for(var b,L="",x=0,M=-1,U=0,W=0;W<=R.length;++W){if(W2){var le=L.lastIndexOf("/");if(le!==L.length-1){le===-1?(L="",x=0):x=(L=L.slice(0,le)).length-1-L.lastIndexOf("/"),M=W,U=0;continue}}else if(L.length===2||L.length===1){L="",x=0,M=W,U=0;continue}}$&&(L.length>0?L+="/..":L="..",x=2)}else L.length>0?L+="/"+R.slice(M+1,W):L=R.slice(M+1,W),x=W-M-1;M=W,U=0}else b===46&&U!==-1?++U:U=-1}return L}i(y,"r2"),o(y,"r");var E={resolve:o(function(){for(var R,$="",b=!1,L=arguments.length-1;L>=-1&&!b;L--){var x;L>=0?x=arguments[L]:(R===void 0&&(R=process.cwd()),x=R),C(x),x.length!==0&&($=x+"/"+$,b=x.charCodeAt(0)===47)}return $=y($,!b),b?$.length>0?"/"+$:"/":$.length>0?$:"."},"resolve"),normalize:o(function(R){if(C(R),R.length===0)return".";var $=R.charCodeAt(0)===47,b=R.charCodeAt(R.length-1)===47;return(R=y(R,!$)).length!==0||$||(R="."),R.length>0&&b&&(R+="/"),$?"/"+R:R},"normalize"),isAbsolute:o(function(R){return C(R),R.length>0&&R.charCodeAt(0)===47},"isAbsolute"),join:o(function(){if(arguments.length===0)return".";for(var R,$=0;$0&&(R===void 0?R=b:R+="/"+b)}return R===void 0?".":E.normalize(R)},"join"),relative:o(function(R,$){if(C(R),C($),R===$||(R=E.resolve(R))===($=E.resolve($)))return"";for(var b=1;bW){if($.charCodeAt(M+H)===47)return $.slice(M+H+1);if(H===0)return $.slice(M+H)}else x>W&&(R.charCodeAt(b+H)===47?le=H:H===0&&(le=0));break}var Oe=R.charCodeAt(b+H);if(Oe!==$.charCodeAt(M+H))break;Oe===47&&(le=H)}var ie="";for(H=b+le+1;H<=L;++H)H!==L&&R.charCodeAt(H)!==47||(ie.length===0?ie+="..":ie+="/..");return ie.length>0?ie+$.slice(M+le):(M+=le,$.charCodeAt(M)===47&&++M,$.slice(M))},"relative"),_makeLong:o(function(R){return R},"_makeLong"),dirname:o(function(R){if(C(R),R.length===0)return".";for(var $=R.charCodeAt(0),b=$===47,L=-1,x=!0,M=R.length-1;M>=1;--M)if(($=R.charCodeAt(M))===47){if(!x){L=M;break}}else x=!1;return L===-1?b?"/":".":b&&L===1?"//":R.slice(0,L)},"dirname"),basename:o(function(R,$){if($!==void 0&&typeof $!="string")throw new TypeError('"ext" argument must be a string');C(R);var b,L=0,x=-1,M=!0;if($!==void 0&&$.length>0&&$.length<=R.length){if($.length===R.length&&$===R)return"";var U=$.length-1,W=-1;for(b=R.length-1;b>=0;--b){var le=R.charCodeAt(b);if(le===47){if(!M){L=b+1;break}}else W===-1&&(M=!1,W=b+1),U>=0&&(le===$.charCodeAt(U)?--U==-1&&(x=b):(U=-1,x=W))}return L===x?x=W:x===-1&&(x=R.length),R.slice(L,x)}for(b=R.length-1;b>=0;--b)if(R.charCodeAt(b)===47){if(!M){L=b+1;break}}else x===-1&&(M=!1,x=b+1);return x===-1?"":R.slice(L,x)},"basename"),extname:o(function(R){C(R);for(var $=-1,b=0,L=-1,x=!0,M=0,U=R.length-1;U>=0;--U){var W=R.charCodeAt(U);if(W!==47)L===-1&&(x=!1,L=U+1),W===46?$===-1?$=U:M!==1&&(M=1):$!==-1&&(M=-1);else if(!x){b=U+1;break}}return $===-1||L===-1||M===0||M===1&&$===L-1&&$===b+1?"":R.slice($,L)},"extname"),format:o(function(R){if(R===null||typeof R!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof R);return(function($,b){var L=b.dir||b.root,x=b.base||(b.name||"")+(b.ext||"");return L?L===b.root?L+x:L+"/"+x:x})(0,R)},"format"),parse:o(function(R){C(R);var $={root:"",dir:"",base:"",ext:"",name:""};if(R.length===0)return $;var b,L=R.charCodeAt(0),x=L===47;x?($.root="/",b=1):b=0;for(var M=-1,U=0,W=-1,le=!0,H=R.length-1,Oe=0;H>=b;--H)if((L=R.charCodeAt(H))!==47)W===-1&&(le=!1,W=H+1),L===46?M===-1?M=H:Oe!==1&&(Oe=1):M!==-1&&(Oe=-1);else if(!le){U=H+1;break}return M===-1||W===-1||Oe===0||Oe===1&&M===W-1&&M===U+1?W!==-1&&($.base=$.name=U===0&&x?R.slice(1,W):R.slice(U,W)):(U===0&&x?($.name=R.slice(1,M),$.base=R.slice(1,W)):($.name=R.slice(U,M),$.base=R.slice(U,W)),$.ext=R.slice(M,W)),U>0?$.dir=R.slice(0,U-1):x&&($.dir="/"),$},"parse"),sep:"/",delimiter:":",win32:null,posix:null};E.posix=E,O.exports=E}},t={};function r(O){var C=t[O];if(C!==void 0)return C.exports;var y=t[O]={exports:{}};return e[O](y,y.exports,r),y.exports}i(r,"r"),o(r,"r"),r.d=(O,C)=>{for(var y in C)r.o(C,y)&&!r.o(O,y)&&Object.defineProperty(O,y,{enumerable:!0,get:C[y]})},r.o=(O,C)=>Object.prototype.hasOwnProperty.call(O,C),r.r=O=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(O,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(O,"__esModule",{value:!0})};var n={};let a;r.r(n),r.d(n,{URI:o(()=>m,"URI"),Utils:o(()=>Re,"Utils")}),typeof process=="object"?a=process.platform==="win32":typeof navigator=="object"&&(a=navigator.userAgent.indexOf("Windows")>=0);let s=/^\w[\w\d+.-]*$/,l=/^\//,u=/^\/\//;function c(O,C){if(!O.scheme&&C)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${O.authority}", path: "${O.path}", query: "${O.query}", fragment: "${O.fragment}"}`);if(O.scheme&&!s.test(O.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(O.path){if(O.authority){if(!l.test(O.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(u.test(O.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}i(c,"a"),o(c,"a");let f="",d="/",p=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class m{static{i(this,"l")}static{o(this,"l")}static isUri(C){return C instanceof m||!!C&&typeof C.authority=="string"&&typeof C.fragment=="string"&&typeof C.path=="string"&&typeof C.query=="string"&&typeof C.scheme=="string"&&typeof C.fsPath=="string"&&typeof C.with=="function"&&typeof C.toString=="function"}scheme;authority;path;query;fragment;constructor(C,y,E,R,$,b=!1){typeof C=="object"?(this.scheme=C.scheme||f,this.authority=C.authority||f,this.path=C.path||f,this.query=C.query||f,this.fragment=C.fragment||f):(this.scheme=(function(L,x){return L||x?L:"file"})(C,b),this.authority=y||f,this.path=(function(L,x){switch(L){case"https":case"http":case"file":x?x[0]!==d&&(x=d+x):x=d}return x})(this.scheme,E||f),this.query=R||f,this.fragment=$||f,c(this,b))}get fsPath(){return S(this,!1)}with(C){if(!C)return this;let{scheme:y,authority:E,path:R,query:$,fragment:b}=C;return y===void 0?y=this.scheme:y===null&&(y=f),E===void 0?E=this.authority:E===null&&(E=f),R===void 0?R=this.path:R===null&&(R=f),$===void 0?$=this.query:$===null&&($=f),b===void 0?b=this.fragment:b===null&&(b=f),y===this.scheme&&E===this.authority&&R===this.path&&$===this.query&&b===this.fragment?this:new T(y,E,R,$,b)}static parse(C,y=!1){let E=p.exec(C);return E?new T(E[2]||f,ee(E[4]||f),ee(E[5]||f),ee(E[7]||f),ee(E[9]||f),y):new T(f,f,f,f,f)}static file(C){let y=f;if(a&&(C=C.replace(/\\/g,d)),C[0]===d&&C[1]===d){let E=C.indexOf(d,2);E===-1?(y=C.substring(2),C=d):(y=C.substring(2,E),C=C.substring(E)||d)}return new T("file",y,C,f,f)}static from(C){let y=new T(C.scheme,C.authority,C.path,C.query,C.fragment);return c(y,!0),y}toString(C=!1){return _(this,C)}toJSON(){return this}static revive(C){if(C){if(C instanceof m)return C;{let y=new T(C);return y._formatted=C.external,y._fsPath=C._sep===v?C.fsPath:null,y}}return C}}let v=a?1:void 0;class T extends m{static{i(this,"d")}static{o(this,"d")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=S(this,!1)),this._fsPath}toString(C=!1){return C?_(this,!0):(this._formatted||(this._formatted=_(this,!1)),this._formatted)}toJSON(){let C={$mid:1};return this._fsPath&&(C.fsPath=this._fsPath,C._sep=v),this._formatted&&(C.external=this._formatted),this.path&&(C.path=this.path),this.scheme&&(C.scheme=this.scheme),this.authority&&(C.authority=this.authority),this.query&&(C.query=this.query),this.fragment&&(C.fragment=this.fragment),C}}let w={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function N(O,C,y){let E,R=-1;for(let $=0;$=97&&b<=122||b>=65&&b<=90||b>=48&&b<=57||b===45||b===46||b===95||b===126||C&&b===47||y&&b===91||y&&b===93||y&&b===58)R!==-1&&(E+=encodeURIComponent(O.substring(R,$)),R=-1),E!==void 0&&(E+=O.charAt($));else{E===void 0&&(E=O.substr(0,$));let L=w[b];L!==void 0?(R!==-1&&(E+=encodeURIComponent(O.substring(R,$)),R=-1),E+=L):R===-1&&(R=$)}}return R!==-1&&(E+=encodeURIComponent(O.substring(R))),E!==void 0?E:O}i(N,"m"),o(N,"m");function I(O){let C;for(let y=0;y1&&O.scheme==="file"?`//${O.authority}${O.path}`:O.path.charCodeAt(0)===47&&(O.path.charCodeAt(1)>=65&&O.path.charCodeAt(1)<=90||O.path.charCodeAt(1)>=97&&O.path.charCodeAt(1)<=122)&&O.path.charCodeAt(2)===58?C?O.path.substr(1):O.path[1].toLowerCase()+O.path.substr(2):O.path,a&&(y=y.replace(/\//g,"\\")),y}i(S,"v"),o(S,"v");function _(O,C){let y=C?I:N,E="",{scheme:R,authority:$,path:b,query:L,fragment:x}=O;if(R&&(E+=R,E+=":"),($||R==="file")&&(E+=d,E+=d),$){let M=$.indexOf("@");if(M!==-1){let U=$.substr(0,M);$=$.substr(M+1),M=U.lastIndexOf(":"),M===-1?E+=y(U,!1,!1):(E+=y(U.substr(0,M),!1,!1),E+=":",E+=y(U.substr(M+1),!1,!0)),E+="@"}$=$.toLowerCase(),M=$.lastIndexOf(":"),M===-1?E+=y($,!1,!0):(E+=y($.substr(0,M),!1,!0),E+=$.substr(M))}if(b){if(b.length>=3&&b.charCodeAt(0)===47&&b.charCodeAt(2)===58){let M=b.charCodeAt(1);M>=65&&M<=90&&(b=`/${String.fromCharCode(M+32)}:${b.substr(3)}`)}else if(b.length>=2&&b.charCodeAt(1)===58){let M=b.charCodeAt(0);M>=65&&M<=90&&(b=`${String.fromCharCode(M+32)}:${b.substr(2)}`)}E+=y(b,!0,!1)}return L&&(E+="?",E+=y(L,!1,!1)),x&&(E+="#",E+=C?x:N(x,!1,!1)),E}i(_,"b"),o(_,"b");function P(O){try{return decodeURIComponent(O)}catch{return O.length>3?O.substr(0,3)+P(O.substr(3)):O}}i(P,"C"),o(P,"C");let j=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function ee(O){return O.match(j)?O.replace(j,(C=>P(C))):O}i(ee,"w"),o(ee,"w");var X=r(975);let ce=X.posix||X,me="/";var Re;(function(O){O.joinPath=function(C,...y){return C.with({path:ce.join(C.path,...y)})},O.resolvePath=function(C,...y){let E=C.path,R=!1;E[0]!==me&&(E=me+E,R=!0);let $=ce.resolve(E,...y);return R&&$[0]===me&&!C.authority&&($=$.substring(1)),C.with({path:$})},O.dirname=function(C){if(C.path.length===0||C.path===me)return C;let y=ce.dirname(C.path);return y.length===1&&y.charCodeAt(0)===46&&(y=""),C.with({path:y})},O.basename=function(C){return ce.basename(C.path)},O.extname=function(C){return ce.extname(C.path)}})(Re||(Re={})),Ib=n})();var{URI:dt,Utils:vi}=Ib,Je;(function(e){e.basename=vi.basename,e.dirname=vi.dirname,e.extname=vi.extname,e.joinPath=vi.joinPath,e.resolvePath=vi.resolvePath;let t=typeof process=="object"&&process?.platform==="win32";function r(l,u){return l?.toString()===u?.toString()}i(r,"equals"),o(r,"equals"),e.equals=r;function n(l,u){let c=typeof l=="string"?dt.parse(l).path:l.path,f=typeof u=="string"?dt.parse(u).path:u.path,d=c.split("/").filter(w=>w.length>0),p=f.split("/").filter(w=>w.length>0);if(t){let w=/^[A-Z]:$/;if(d[0]&&w.test(d[0])&&(d[0]=d[0].toLowerCase()),p[0]&&w.test(p[0])&&(p[0]=p[0].toLowerCase()),d[0]!==p[0])return f.substring(1)}let m=0;for(;m({name:n.name,uri:Je.joinPath(dt.parse(t),n.name).toString(),element:n.element})):[]}all(){return this.collectValues(this.root)}findAll(e){let t=this.getNode(Je.normalize(e),!1);return t?this.collectValues(t):[]}getNode(e,t){let r=e.split("/");e.charAt(e.length-1)==="/"&&r.pop();let n=this.root;for(let a of r){let s=n.children.get(a);if(!s)if(t)s={name:a,children:new Map,parent:n},n.children.set(a,s);else return;n=s}return n}collectValues(e){let t=[];e.element&&t.push(e.element);for(let r of e.children.values())t.push(...this.collectValues(r));return t}},Z;(function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"})(Z||(Z={}));var Nb=class{static{i(this,"DefaultLangiumDocumentFactory")}static{o(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=pe.CancellationToken.None){let r=await this.fileSystemProvider.readFile(e);return this.createAsync(e,r,t)}fromTextDocument(e,t,r){return t=t??dt.parse(e.uri),pe.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromString(e,t,r){return pe.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,r){if(typeof t=="string"){let n=this.parse(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}else if("$model"in t){let n={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}else{let n=this.parse(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}async createAsync(e,t,r){if(typeof t=="string"){let n=await this.parseAsync(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}else{let n=await this.parseAsync(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}createLangiumDocument(e,t,r,n){let a;if(r)a={parseResult:e,uri:t,state:Z.Parsed,references:[],textDocument:r};else{let s=this.createTextDocumentGetter(t,n);a={parseResult:e,uri:t,state:Z.Parsed,references:[],get textDocument(){return s()}}}return e.value.$document=a,a}async update(e,t){let r=e.parseResult.value.$cstNode?.root.fullText,n=this.textDocuments?.get(e.uri.toString()),a=n?n.getText():await this.fileSystemProvider.readFile(e.uri);if(n)Object.defineProperty(e,"textDocument",{value:n});else{let s=this.createTextDocumentGetter(e.uri,a);Object.defineProperty(e,"textDocument",{get:s})}return r!==a&&(e.parseResult=await this.parseAsync(e.uri,a,t),e.parseResult.value.$document=e),e.state=Z.Parsed,e}parse(e,t,r){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,r)}parseAsync(e,t,r){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,r)}createTextDocumentGetter(e,t){let r=this.serviceRegistry,n;return()=>n??(n=ll.create(e.toString(),r.getServices(e).LanguageMetaData.languageId,0,t??""))}},kb=class{static{i(this,"DefaultLangiumDocuments")}static{o(this,"DefaultLangiumDocuments")}constructor(e){this.documentTrie=new ch,this.services=e,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.documentBuilder=()=>e.workspace.DocumentBuilder}get all(){return oe(this.documentTrie.all())}addDocument(e){let t=e.uri.toString();if(this.documentTrie.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentTrie.insert(t,e)}getDocument(e){let t=e.toString();return this.documentTrie.find(t)}getDocuments(e){let t=e.toString();return this.documentTrie.findAll(t)}async getOrCreateDocument(e,t){let r=this.getDocument(e);return r||(r=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(r),r)}createDocument(e,t,r){if(r)return this.langiumDocumentFactory.fromString(t,e,r).then(n=>(this.addDocument(n),n));{let n=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(n),n}}hasDocument(e){return this.documentTrie.has(e.toString())}invalidateDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&this.documentBuilder().resetToState(r,Z.Changed),r}deleteDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&(r.state=Z.Changed,this.documentTrie.delete(t)),r}deleteDocuments(e){let t=e.toString(),r=this.documentTrie.findAll(t);for(let n of r)n.state=Z.Changed;return this.documentTrie.delete(t),r}},Zr=Symbol("RefResolving"),Pb=class{static{i(this,"DefaultLinker")}static{o(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async link(e,t=pe.CancellationToken.None){if(this.profiler?.isActive("linking")){let r=this.profiler.createTask("linking",this.languageId);r.start();try{for(let n of Pt(e.parseResult.value))await je(t),Ia(n).forEach(a=>{let s=`${n.$type}:${a.property}`;r.startSubTask(s);try{this.doLink(a,e)}finally{r.stopSubTask(s)}})}finally{r.stop()}}else for(let r of Pt(e.parseResult.value))await je(t),Ia(r).forEach(n=>this.doLink(n,e))}doLink(e,t){let r=e.reference;if("_ref"in r&&r._ref===void 0){r._ref=Zr;try{let n=this.getCandidate(e);if(tn(n))r._ref=n;else{r._nodeDescription=n;let a=this.loadAstNode(n);r._ref=a??this.createLinkingError(e,n)}}catch(n){console.error(`An error occurred while resolving reference to '${r.$refText}':`,n);let a=n.message??String(n);r._ref={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${a}`}}t.references.push(r)}else if("_items"in r&&r._items===void 0){r._items=Zr;try{let n=this.getCandidates(e),a=[];if(tn(n))r._linkingError=n;else for(let s of n){let l=this.loadAstNode(s);l&&a.push({ref:l,$nodeDescription:s})}r._items=a}catch(n){r._linkingError={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${n}`},r._items=[]}t.references.push(r)}}unlink(e){for(let t of e.references)"_ref"in t?(t._ref=void 0,delete t._nodeDescription):"_items"in t&&(t._items=void 0,delete t._linkingError);e.references=[]}getCandidate(e){return this.scopeProvider.getScope(e).getElement(e.reference.$refText)??this.createLinkingError(e)}getCandidates(e){let r=this.scopeProvider.getScope(e).getElements(e.reference.$refText).distinct(n=>`${n.documentUri}#${n.path}`).toArray();return r.length>0?r:this.createLinkingError(e)}buildReference(e,t,r,n){let a=this,s={$refNode:r,$refText:n,_ref:void 0,get ref(){if(Pe(this._ref))return this._ref;if(Hf(this._nodeDescription)){let l=a.loadAstNode(this._nodeDescription);this._ref=l??a.createLinkingError({reference:s,container:e,property:t},this._nodeDescription)}else if(this._ref===void 0){this._ref=Zr;let l=Aa(e).$document,u=a.getLinkedNode({reference:s,container:e,property:t});if(u.error&&l&&l.state0))return this._linkingError=a.createLinkingError({reference:s,container:e,property:t})}};return s}throwCyclicReferenceError(e,t,r){throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`)}getLinkedNode(e){try{let t=this.getCandidate(e);if(tn(t))return{error:t};let r=this.loadAstNode(t);return r?{node:r,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(t){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,t);let r=t.message??String(t);return{error:{info:e,message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`}}}}loadAstNode(e){if(e.node)return e.node;let t=this.langiumDocuments().getDocument(e.documentUri);if(t)return this.astNodeLocator.getAstNode(t.parseResult.value,e.path)}createLinkingError(e,t){let r=Aa(e.container).$document;r&&r.statewn(t)&&t.isMulti)}findDeclarations(e){if(e){let t=Gd(e),r=e.astNode;if(t&&r){let n=r[t.feature];if(Xe(n)||Ht(n))return So(n);if(Array.isArray(n)){for(let a of n)if((Xe(a)||Ht(a))&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return So(a)}}if(r){let n=this.nameProvider.getNameNode(r);if(n&&(n===e||vd(e,n)))return this.getSelfNodes(r)}}return[]}getSelfNodes(e){if(this.hasMultiReference){let t=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e)),r=this.getNodeFromReferenceDescription(t.head());if(r){for(let n of Ia(r))if(Ht(n.reference)&&n.reference.items.some(a=>a.ref===e))return n.reference.items.map(a=>a.ref)}return[e]}else return[e]}getNodeFromReferenceDescription(e){if(!e)return;let t=this.documents.getDocument(e.sourceUri);if(t)return this.nodeLocator.getAstNode(t.parseResult.value,e.sourcePath)}findDeclarationNodes(e){let t=this.findDeclarations(e),r=[];for(let n of t){let a=this.nameProvider.getNameNode(n)??n.$cstNode;a&&r.push(a)}return r}findReferences(e,t){let r=[];t.includeDeclaration&&r.push(...this.getSelfReferences(e));let n=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(n=n.filter(a=>Je.equals(a.sourceUri,t.documentUri))),r.push(...n),oe(r)}getSelfReferences(e){let t=this.getSelfNodes(e),r=[];for(let n of t){let a=this.nameProvider.getNameNode(n);if(a){let s=kt(n),l=this.nodeLocator.getAstNodePath(n);r.push({sourceUri:s.uri,sourcePath:l,targetUri:s.uri,targetPath:l,segment:Pa(a),local:!0})}}return r}},Rr=class{static{i(this,"MultiMap")}static{o(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[t,r]of e)this.add(t,r)}get size(){return es.sum(oe(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(t===void 0)return this.map.delete(e);{let r=this.map.get(e);if(r){let n=r.indexOf(t);if(n>=0)return r.length===1?this.map.delete(e):r.splice(n,1),!0}return!1}}get(e){return this.map.get(e)??[]}getStream(e){let t=this.map.get(e);return t?oe(t):ba}has(e,t){if(t===void 0)return this.map.has(e);{let r=this.map.get(e);return r?r.indexOf(t)>=0:!1}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,r)=>t.forEach(n=>e(n,r,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return oe(this.map.entries()).flatMap(([e,t])=>t.map(r=>[e,r]))}keys(){return oe(this.map.keys())}values(){return oe(this.map.values()).flat()}entriesGroupedByKey(){return oe(this.map.entries())}},cl=class{static{i(this,"BiMap")}static{o(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[t,r]of e)this.set(t,r)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let t=this.map.get(e);return t!==void 0?(this.map.delete(e),this.inverse.delete(t),!0):!1}},Db=class{static{i(this,"DefaultScopeComputation")}static{o(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async collectExportedSymbols(e,t=pe.CancellationToken.None){return this.collectExportedSymbolsForNode(e.parseResult.value,e,void 0,t)}async collectExportedSymbolsForNode(e,t,r=Ts,n=pe.CancellationToken.None){let a=[];this.addExportedSymbol(e,a,t);for(let s of r(e))await je(n),this.addExportedSymbol(s,a,t);return a}addExportedSymbol(e,t,r){let n=this.nameProvider.getName(e);n&&t.push(this.descriptions.createDescription(e,n,r))}async collectLocalSymbols(e,t=pe.CancellationToken.None){let r=e.parseResult.value,n=new Rr;for(let a of $r(r))await je(t),this.addLocalSymbol(a,e,n);return n}addLocalSymbol(e,t,r){let n=e.$container;if(n){let a=this.nameProvider.getName(e);a&&r.add(n,this.descriptions.createDescription(e,a,t))}}},bf=class{static{i(this,"StreamScope")}static{o(this,"StreamScope")}constructor(e,t,r){this.elements=e,this.outerScope=t,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===t):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.filter(n=>n.name.toLowerCase()===t):this.elements.filter(n=>n.name===e);return(this.concatOuterScope||r.isEmpty())&&this.outerScope?r.concat(this.outerScope.getElements(e)):r}},S1=class{static{i(this,"MapScope")}static{o(this,"MapScope")}constructor(e,t,r){this.elements=new Map,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let n of e){let a=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.set(a,n)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t),n=r?[r]:[];return(this.concatOuterScope||n.length>0)&&this.outerScope?oe(n).concat(this.outerScope.getElements(e)):oe(n)}getAllElements(){let e=oe(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},Mb=class{static{i(this,"MultiMapScope")}static{o(this,"MultiMapScope")}constructor(e,t,r){this.elements=new Rr,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let n of e){let a=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.add(a,n)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t)[0];if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);return(this.concatOuterScope||r.length===0)&&this.outerScope?oe(r).concat(this.outerScope.getElements(e)):oe(r)}getAllElements(){let e=oe(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},w1={getElement(){},getElements(){return ba},getAllElements(){return ba}},Tu=class{static{i(this,"DisposableCache")}static{o(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},dh=class extends Tu{static{i(this,"SimpleCache")}static{o(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){let r=t();return this.cache.set(e,r),r}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},Ru=class extends Tu{static{i(this,"ContextCache")}static{o(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(t=>t)}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,r){this.throwIfDisposed(),this.cacheForContext(e).set(t,r)}get(e,t,r){this.throwIfDisposed();let n=this.cacheForContext(e);if(n.has(t))return n.get(t);if(r){let a=r();return n.set(t,a),a}else return}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){let t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){let t=this.converter(e),r=this.cache.get(t);return r||(r=new Map,this.cache.set(t,r)),r}},xb=class extends Ru{static{i(this,"DocumentCache")}static{o(this,"DocumentCache")}constructor(e,t){super(r=>r.toString()),t?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(t,r=>{this.clear(r.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{for(let a of n)this.clear(a)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{let a=r.concat(n);for(let s of a)this.clear(s)}))}},ph=class extends dh{static{i(this,"WorkspaceCache")}static{o(this,"WorkspaceCache")}constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{n.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}},Fb=class{static{i(this,"DefaultScopeProvider")}static{o(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new ph(e.shared)}getScope(e){let t=[],r=this.reflection.getReferenceType(e),n=kt(e.container).localSymbols;if(n){let s=e.container;do n.has(s)&&t.push(n.getStream(s).filter(l=>this.reflection.isSubtype(l.type,r))),s=s.$container;while(s)}let a=this.getGlobalScope(r,e);for(let s=t.length-1;s>=0;s--)a=this.createScope(t[s],a);return a}createScope(e,t,r){return new bf(oe(e),t,r)}createScopeForNodes(e,t,r){let n=oe(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new bf(n,t,r)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new Mb(this.indexManager.allElements(e)))}};function hh(e){return typeof e.$comment=="string"}i(hh,"isAstNodeWithComment");o(hh,"isAstNodeWithComment");function Sf(e){return typeof e=="object"&&!!e&&("$ref"in e||"$error"in e)}i(Sf,"isIntermediateReference");o(Sf,"isIntermediateReference");var Gb=class{static{i(this,"DefaultJsonSerializer")}static{o(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){let r=t??{},n=t?.replacer,a=o((l,u)=>this.replacer(l,u,r),"defaultReplacer"),s=n?(l,u)=>n(l,u,a):a;try{return this.currentDocument=kt(e),JSON.stringify(e,s,t?.space)}finally{this.currentDocument=void 0}}deserialize(e,t){let r=t??{},n=JSON.parse(e);return this.linkNode(n,n,r),n}replacer(e,t,{refText:r,sourceText:n,textRegions:a,comments:s,uriConverter:l}){if(!this.ignoreProperties.has(e))if(Xe(t)){let u=t.ref,c=r?t.$refText:void 0;if(u){let f=kt(u),d="";this.currentDocument&&this.currentDocument!==f&&(l?d=l(f.uri,u):d=f.uri.toString());let p=this.astNodeLocator.getAstNodePath(u);return{$ref:`${d}#${p}`,$refText:c}}else return{$error:t.error?.message??"Could not resolve reference",$refText:c}}else if(Ht(t)){let u=r?t.$refText:void 0,c=[];for(let f of t.items){let d=f.ref,p=kt(f.ref),m="";this.currentDocument&&this.currentDocument!==p&&(l?m=l(p.uri,d):m=p.uri.toString());let v=this.astNodeLocator.getAstNodePath(d);c.push(`${m}#${v}`)}return{$refs:c,$refText:u}}else if(Pe(t)){let u;if(a&&(u=this.addAstNodeRegionWithAssignmentsTo({...t}),(!e||t.$document)&&u?.$textRegion&&(u.$textRegion.documentURI=this.currentDocument?.uri.toString())),n&&!e&&(u??(u={...t}),u.$sourceText=t.$cstNode?.text),s){u??(u={...t});let c=this.commentProvider.getComment(t);c&&(u.$comment=c.replace(/\r/g,""))}return u??t}else return t}addAstNodeRegionWithAssignmentsTo(e){let t=o(r=>({offset:r.offset,end:r.end,length:r.length,range:r.range}),"createDocumentSegment");if(e.$cstNode){let r=e.$textRegion=t(e.$cstNode),n=r.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let s=xd(e.$cstNode,a).map(t);s.length!==0&&(n[a]=s)}),e}}linkNode(e,t,r,n,a,s){for(let[u,c]of Object.entries(e))if(Array.isArray(c))for(let f=0;f{await this.handleException(()=>e.call(t,r,n,a),"An error occurred during validation",n,r)}}async handleException(e,t,r,n){try{await e()}catch(a){if(Kn(a))throw a;console.error(`${t}:`,a),a instanceof Error&&a.stack&&console.error(a.stack);let s=a instanceof Error?a.message:String(a);r("error",`${t}: ${s}`,{node:n})}}addEntry(e,t){if(e==="AstNode"){this.entries.add("AstNode",t);return}for(let r of this.reflection.getAllSubTypes(e))this.entries.add(r,t)}getChecks(e,t){let r=oe(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(r=r.filter(n=>t.includes(n.category))),r.map(n=>n.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,r){return async(n,a,s,l)=>{await this.handleException(()=>e.call(r,n,a,s,l),t,a,n)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}getAllValidationCategories(e){return this.knownCategories}},zb=Object.freeze({validateNode:!0,validateChildren:!0}),Bb=class{static{i(this,"DefaultDocumentValidator")}static{o(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async validateDocument(e,t={},r=pe.CancellationToken.None){let n=e.parseResult,a=[];if(await je(r),(!t.categories||t.categories.includes("built-in"))&&(this.processLexingErrors(n,a,t),t.stopAfterLexingErrors&&a.some(s=>s.data?.code===$t.LexingError)||(this.processParsingErrors(n,a,t),t.stopAfterParsingErrors&&a.some(s=>s.data?.code===$t.ParsingError))||(this.processLinkingErrors(e,a,t),t.stopAfterLinkingErrors&&a.some(s=>s.data?.code===$t.LinkingError))))return a;try{a.push(...await this.validateAst(n.value,t,r))}catch(s){if(Kn(s))throw s;console.error("An error occurred during validation:",s)}return await je(r),a}processLexingErrors(e,t,r){let n=[...e.lexerErrors,...e.lexerReport?.diagnostics??[]];for(let a of n){let s=a.severity??"error",l={severity:Zi(s),range:{start:{line:a.line-1,character:a.column-1},end:{line:a.line-1,character:a.column+a.length-1}},message:a.message,data:gh(s),source:this.getSource()};t.push(l)}}processParsingErrors(e,t,r){for(let n of e.parserErrors){let a;if(isNaN(n.token.startOffset)){if("previousToken"in n){let s=n.previousToken;if(isNaN(s.startOffset)){let l={line:0,character:0};a={start:l,end:l}}else{let l={line:s.endLine-1,character:s.endColumn};a={start:l,end:l}}}}else a=ts(n.token);if(a){let s={severity:Zi("error"),range:a,message:n.message,data:gn($t.ParsingError),source:this.getSource()};t.push(s)}}}processLinkingErrors(e,t,r){for(let n of e.references){let a=n.error;if(a){let s={node:a.info.container,range:n.$refNode?.range,property:a.info.property,index:a.info.index,data:{code:$t.LinkingError,containerType:a.info.container.$type,property:a.info.property,refText:a.info.reference.$refText}};t.push(this.toDiagnostic("error",a.message,s))}}}async validateAst(e,t,r=pe.CancellationToken.None){let n=[],a=o((s,l,u)=>{n.push(this.toDiagnostic(s,l,u))},"acceptor");return await this.validateAstBefore(e,t,a,r),await this.validateAstNodes(e,t,a,r),await this.validateAstAfter(e,t,a,r),n}async validateAstBefore(e,t,r,n=pe.CancellationToken.None){let a=this.validationRegistry.checksBefore;for(let s of a)await je(n),await s(e,r,t.categories??[],n)}async validateAstNodes(e,t,r,n=pe.CancellationToken.None){if(this.profiler?.isActive("validating")){let a=this.profiler.createTask("validating",this.languageId);a.start();try{let s=Pt(e).iterator();for(let l of s){a.startSubTask(l.$type);let u=this.validateSingleNodeOptions(l,t);if(u.validateNode)try{let c=this.validationRegistry.getChecks(l.$type,t.categories);for(let f of c)await f(l,r,n)}finally{a.stopSubTask(l.$type)}u.validateChildren||s.prune()}}finally{a.stop()}}else{let a=Pt(e).iterator();for(let s of a){await je(n);let l=this.validateSingleNodeOptions(s,t);if(l.validateNode){let u=this.validationRegistry.getChecks(s.$type,t.categories);for(let c of u)await c(s,r,n)}l.validateChildren||a.prune()}}}validateSingleNodeOptions(e,t){return zb}async validateAstAfter(e,t,r,n=pe.CancellationToken.None){let a=this.validationRegistry.checksAfter;for(let s of a)await je(n),await s(e,r,t.categories??[],n)}toDiagnostic(e,t,r){return{message:t,range:mh(r),severity:Zi(e),code:r.code,codeDescription:r.codeDescription,tags:r.tags,relatedInformation:r.relatedInformation,data:r.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};function mh(e){if(e.range)return e.range;let t;return typeof e.property=="string"?t=Nl(e.node.$cstNode,e.property,e.index):typeof e.keyword=="string"&&(t=Fd(e.node.$cstNode,e.keyword,e.index)),t??(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}i(mh,"getDiagnosticRange");o(mh,"getDiagnosticRange");function Zi(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}i(Zi,"toDiagnosticSeverity");o(Zi,"toDiagnosticSeverity");function gh(e){switch(e){case"error":return gn($t.LexingError);case"warning":return gn($t.LexingWarning);case"info":return gn($t.LexingInfo);case"hint":return gn($t.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}i(gh,"toDiagnosticData");o(gh,"toDiagnosticData");var $t;(function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"})($t||($t={}));var Kb=class{static{i(this,"DefaultAstNodeDescriptionProvider")}static{o(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,r){let n=r??kt(e);t??(t=this.nameProvider.getName(e));let a=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${a} has no name.`);let s,l=o(()=>s??(s=Pa(this.nameProvider.getNameNode(e)??e.$cstNode)),"nameSegmentGetter");return{node:e,name:t,get nameSegment(){return l()},selectionSegment:Pa(e.$cstNode),type:e.$type,documentUri:n.uri,path:a}}},qb=class{static{i(this,"DefaultReferenceDescriptionProvider")}static{o(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=pe.CancellationToken.None){let r=[],n=e.parseResult.value;for(let a of Pt(n))await je(t),Ia(a).forEach(s=>{s.reference.error||r.push(...this.createInfoDescriptions(s))});return r}createInfoDescriptions(e){let t=e.reference;if(t.error||!t.$refNode)return[];let r=[];Xe(t)&&t.$nodeDescription?r=[t.$nodeDescription]:Ht(t)&&(r=t.items.map(u=>u.$nodeDescription).filter(u=>u!==void 0));let n=kt(e.container).uri,a=this.nodeLocator.getAstNodePath(e.container),s=[],l=Pa(t.$refNode);for(let u of r)s.push({sourceUri:n,sourcePath:a,targetUri:u.documentUri,targetPath:u.path,segment:l,local:Je.equals(u.documentUri,n)});return s}},Wb=class{static{i(this,"DefaultAstNodeLocator")}static{o(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let t=this.getAstNodePath(e.$container),r=this.getPathSegment(e);return t+this.segmentSeparator+r}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return t!==void 0?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((n,a)=>{if(!n||a.length===0)return n;let s=a.indexOf(this.indexSeparator);if(s>0){let l=a.substring(0,s),u=parseInt(a.substring(s+1));return n[l]?.[u]}return n[a]},e)}},$u={};ml($u,Kf(Fa(),1));var Vb=class{static{i(this,"DefaultConfigurationProvider")}static{o(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new Tr,this.onConfigurationSectionUpdateEmitter=new $u.Emitter,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){this.workspaceConfig=e.capabilities.workspace?.configuration??!1}async initialized(e){if(this.workspaceConfig){if(e.register){let t=this.serviceRegistry.all;e.register({section:t.map(r=>this.toSectionName(r.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let t=this.serviceRegistry.all.map(n=>({section:this.toSectionName(n.LanguageMetaData.languageId)})),r=await e.fetchConfiguration(t);t.forEach((n,a)=>{this.updateSectionConfiguration(n.section,r[a])})}}this._ready.resolve()}updateConfiguration(e){typeof e.settings!="object"||e.settings===null||Object.entries(e.settings).forEach(([t,r])=>{this.updateSectionConfiguration(t,r),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:r})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;let r=this.toSectionName(e);if(this.settings[r])return this.settings[r][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}},Bs=Kf(nw(),1),Tn;(function(e){function t(r){return{dispose:o(async()=>await r(),"dispose")}}i(t,"create"),o(t,"create"),e.create=t})(Tn||(Tn={}));var Hb=class{static{i(this,"DefaultDocumentBuilder")}static{o(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Rr,this.documentPhaseListeners=new Rr,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=Z.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.fileSystemProvider=e.workspace.FileSystemProvider,this.workspaceManager=()=>e.workspace.WorkspaceManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},r=pe.CancellationToken.None){for(let n of e){let a=n.uri.toString();if(n.state===Z.Validated){if(typeof t.validation=="boolean"&&t.validation)this.resetToState(n,Z.IndexedReferences);else if(typeof t.validation=="object"){let s=this.findMissingValidationCategories(n,t);s.length>0&&(this.buildState.set(a,{completed:!1,options:{validation:{categories:s}},result:this.buildState.get(a)?.result}),n.state=Z.IndexedReferences)}}else this.buildState.delete(a)}this.currentState=Z.Changed,await this.emitUpdate(e.map(n=>n.uri),[]),await this.buildDocuments(e,t,r)}async update(e,t,r=pe.CancellationToken.None){this.currentState=Z.Changed;let n=[];for(let u of t){let c=this.langiumDocuments.deleteDocuments(u);for(let f of c)n.push(f.uri),this.cleanUpDeleted(f)}let a=(await Promise.all(e.map(u=>this.findChangedUris(u)))).flat();for(let u of a){let c=this.langiumDocuments.getDocument(u);c===void 0&&(c=this.langiumDocumentFactory.fromModel({$type:"INVALID"},u),c.state=Z.Changed,this.langiumDocuments.addDocument(c)),this.resetToState(c,Z.Changed)}let s=oe(a).concat(n).map(u=>u.toString()).toSet();this.langiumDocuments.all.filter(u=>!s.has(u.uri.toString())&&this.shouldRelink(u,s)).forEach(u=>this.resetToState(u,Z.ComputedScopes)),await this.emitUpdate(a,n),await je(r);let l=this.sortDocuments(this.langiumDocuments.all.filter(u=>u.state=1}findMissingValidationCategories(e,t){let r=this.buildState.get(e.uri.toString()),n=this.serviceRegistry.getServices(e.uri).validation.ValidationRegistry.getAllValidationCategories(e),a=r?.result?.validationChecks?new Set(r?.result?.validationChecks):r?.completed?n:new Set,s=t===void 0||t.validation===!0?n:typeof t.validation=="object"?t.validation.categories??n:[];return oe(s).filter(l=>!a.has(l)).toArray()}async findChangedUris(e){if(this.langiumDocuments.getDocument(e)??this.textDocuments?.get(e))return[e];try{let r=await this.fileSystemProvider.stat(e);if(r.isDirectory)return await this.workspaceManager().searchFolder(e);if(this.workspaceManager().shouldIncludeEntry(r))return[e]}catch{}return[]}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(r=>r(e,t)))}sortDocuments(e){let t=0,r=e.length-1;for(;t=0&&!this.hasTextDocument(e[r]);)r--;tr.error!==void 0)?!0:this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),Tn.create(()=>{let t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}resetToState(e,t){switch(t){case Z.Changed:case Z.Parsed:this.indexManager.removeContent(e.uri);case Z.IndexedContent:e.localSymbols=void 0;case Z.ComputedScopes:this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e);case Z.Linked:this.indexManager.removeReferences(e.uri);case Z.IndexedReferences:e.diagnostics=void 0,this.buildState.delete(e.uri.toString());case Z.Validated:}e.state>t&&(e.state=t)}cleanUpDeleted(e){this.buildState.delete(e.uri.toString()),this.indexManager.remove(e.uri),e.state=Z.Changed}async buildDocuments(e,t,r){this.prepareBuild(e,t),await this.runCancelable(e,Z.Parsed,r,s=>this.langiumDocumentFactory.update(s,r)),await this.runCancelable(e,Z.IndexedContent,r,s=>this.indexManager.updateContent(s,r)),await this.runCancelable(e,Z.ComputedScopes,r,async s=>{let l=this.serviceRegistry.getServices(s.uri).references.ScopeComputation;s.localSymbols=await l.collectLocalSymbols(s,r)});let n=e.filter(s=>this.shouldLink(s));await this.runCancelable(n,Z.Linked,r,s=>this.serviceRegistry.getServices(s.uri).references.Linker.link(s,r)),await this.runCancelable(n,Z.IndexedReferences,r,s=>this.indexManager.updateReferences(s,r));let a=e.filter(s=>this.shouldValidate(s)?!0:(this.markAsCompleted(s),!1));await this.runCancelable(a,Z.Validated,r,async s=>{await this.validate(s,r),this.markAsCompleted(s)})}markAsCompleted(e){let t=this.buildState.get(e.uri.toString());t&&(t.completed=!0)}prepareBuild(e,t){for(let r of e){let n=r.uri.toString(),a=this.buildState.get(n);(!a||a.completed)&&this.buildState.set(n,{completed:!1,options:t,result:a?.result})}}async runCancelable(e,t,r,n){for(let s of e)s.states.state===t);await this.notifyBuildPhase(a,t,r),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),Tn.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),Tn.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,r){let n;return t&&"path"in t?n=t:r=t,r??(r=pe.CancellationToken.None),n?this.awaitDocumentState(e,n,r):this.awaitBuilderState(e,r)}awaitDocumentState(e,t,r){let n=this.langiumDocuments.getDocument(t);if(n){if(n.state>=e)return Promise.resolve(t);if(r.isCancellationRequested)return Promise.reject(Vt);if(this.currentState>=e&&e>n.state)return Promise.reject(new Bs.ResponseError(Bs.LSPErrorCodes.RequestFailed,`Document state of ${t.toString()} is ${Z[n.state]}, requiring ${Z[e]}, but workspace state is already ${Z[this.currentState]}. Returning undefined.`))}else return Promise.reject(new Bs.ResponseError(Bs.LSPErrorCodes.ServerCancelled,`No document found for URI: ${t.toString()}`));return new Promise((a,s)=>{let l=this.onDocumentPhase(e,c=>{Je.equals(c.uri,t)&&(l.dispose(),u.dispose(),a(c.uri))}),u=r.onCancellationRequested(()=>{l.dispose(),u.dispose(),s(Vt)})})}awaitBuilderState(e,t){return this.currentState>=e?Promise.resolve():t.isCancellationRequested?Promise.reject(Vt):new Promise((r,n)=>{let a=this.onBuildPhase(e,()=>{a.dispose(),s.dispose(),r()}),s=t.onCancellationRequested(()=>{a.dispose(),s.dispose(),n(Vt)})})}async notifyDocumentPhase(e,t,r){let a=this.documentPhaseListeners.get(t).slice();for(let s of a)try{await je(r),await s(e,r)}catch(l){if(!Kn(l))throw l}}async notifyBuildPhase(e,t,r){if(e.length===0)return;let a=this.buildPhaseListeners.get(t).slice();for(let s of a)await je(r),await s(e,r)}shouldLink(e){return this.getBuildOptions(e).eagerLinking??!0}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,t){let r=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,n=this.getBuildOptions(e),a=typeof n.validation=="object"?{...n.validation}:{};a.categories=this.findMissingValidationCategories(e,n);let s=await r.validateDocument(e,a,t);e.diagnostics?e.diagnostics.push(...s):e.diagnostics=s;let l=this.buildState.get(e.uri.toString());l&&(l.result??(l.result={}),l.result.validationChecks?l.result.validationChecks=oe(l.result.validationChecks).concat(a.categories).distinct().toArray():l.result.validationChecks=[...a.categories])}getBuildOptions(e){return this.buildState.get(e.uri.toString())?.options??{}}},Yb=class{static{i(this,"DefaultIndexManager")}static{o(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Ru,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){let r=kt(e).uri,n=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{Je.equals(s.targetUri,r)&&s.targetPath===t&&n.push(s)})}),oe(n)}allElements(e,t){let r=oe(this.symbolIndex.keys());return t&&(r=r.filter(n=>!t||t.has(n))),r.map(n=>this.getFileDescriptions(n,e)).flat()}getFileDescriptions(e,t){return t?this.symbolByTypeIndex.get(e,t,()=>(this.symbolIndex.get(e)??[]).filter(a=>this.astReflection.isSubtype(a.type,t))):this.symbolIndex.get(e)??[]}remove(e){this.removeContent(e),this.removeReferences(e)}removeContent(e){let t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t)}removeReferences(e){let t=e.toString();this.referenceIndex.delete(t)}async updateContent(e,t=pe.CancellationToken.None){let n=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.collectExportedSymbols(e,t),a=e.uri.toString();this.symbolIndex.set(a,n),this.symbolByTypeIndex.clear(a)}async updateReferences(e,t=pe.CancellationToken.None){let n=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),n)}isAffected(e,t){let r=this.referenceIndex.get(e.uri.toString());return r?r.some(n=>!n.local&&t.has(n.targetUri.toString())):!1}},Xb=class{static{i(this,"DefaultWorkspaceManager")}static{o(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new Tr,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){this.folders=e.workspaceFolders??void 0}initialized(e){return this.mutex.write(t=>this.initializeWorkspace(this.folders??[],t))}async initializeWorkspace(e,t=pe.CancellationToken.None){let r=await this.performStartup(e);await je(t),await this.documentBuilder.build(r,this.initialBuildOptions,t)}async performStartup(e){let t=[],r=o(s=>{t.push(s),this.langiumDocuments.hasDocument(s.uri)||this.langiumDocuments.addDocument(s)},"collector");await this.loadAdditionalDocuments(e,r);let n=[];await Promise.all(e.map(s=>this.getRootFolder(s)).map(async s=>this.traverseFolder(s,n)));let a=oe(n).distinct(s=>s.toString()).filter(s=>!this.langiumDocuments.hasDocument(s));return await this.loadWorkspaceDocuments(a,r),this._ready.resolve(),t}async loadWorkspaceDocuments(e,t){await Promise.all(e.map(async r=>{let n=await this.langiumDocuments.getOrCreateDocument(r);t(n)}))}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return dt.parse(e.uri)}async traverseFolder(e,t){try{let r=await this.fileSystemProvider.readDirectory(e);await Promise.all(r.map(async n=>{this.shouldIncludeEntry(n)&&(n.isDirectory?await this.traverseFolder(n.uri,t):n.isFile&&t.push(n.uri))}))}catch(r){console.error("Failure to read directory content of "+e.toString(!0),r)}}async searchFolder(e){let t=[];return await this.traverseFolder(e,t),t}shouldIncludeEntry(e){let t=Je.basename(e.uri);return t.startsWith(".")?!1:e.isDirectory?t!=="node_modules"&&t!=="out":e.isFile?this.serviceRegistry.hasServices(e.uri):!1}},Jb=class{static{i(this,"DefaultLexerErrorMessageProvider")}static{o(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,t,r,n,a){return sf.buildUnexpectedCharactersMessage(e,t,r,n,a)}buildUnableToPopLexerModeMessage(e){return sf.buildUnableToPopLexerModeMessage(e)}},yh={mode:"full"},vh=class{static{i(this,"DefaultLexer")}static{o(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);let r=dl(t)?Object.values(t):t,n=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Ze(r,{positionTracking:"full",skipValidations:n,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=yh){let r=this.chevrotainLexer.tokenize(e);return{tokens:r.tokens,errors:r.errors,hidden:r.groups.hidden??[],report:this.tokenBuilder.flushLexingReport?.(e)}}toTokenTypeDictionary(e){if(dl(e))return e;let t=Eu(e)?Object.values(e.modes).flat():e,r={};return t.forEach(n=>r[n.name]=n),r}};function Au(e){return Array.isArray(e)&&(e.length===0||"name"in e[0])}i(Au,"isTokenTypeArray");o(Au,"isTokenTypeArray");function Eu(e){return e&&"modes"in e&&"defaultMode"in e}i(Eu,"isIMultiModeLexerDefinition");o(Eu,"isIMultiModeLexerDefinition");function dl(e){return!Au(e)&&!Eu(e)}i(dl,"isTokenTypeDictionary");o(dl,"isTokenTypeDictionary");ys();function Th(e,t,r){let n,a;typeof e=="string"?(a=t,n=r):(a=e.range.start,n=t),a||(a=ae.create(0,0));let s=$h(e),l=_u(n),u=Zb({lines:s,position:a,options:l});return tS({index:0,tokens:u,position:a})}i(Th,"parseJSDoc");o(Th,"parseJSDoc");function Rh(e,t){let r=_u(t),n=$h(e);if(n.length===0)return!1;let a=n[0],s=n[n.length-1],l=r.start,u=r.end;return!!l?.exec(a)&&!!u?.exec(s)}i(Rh,"isJSDoc");o(Rh,"isJSDoc");function $h(e){let t="";return typeof e=="string"?t=e:t=e.text,t.split(Qg)}i($h,"getLines");o($h,"getLines");var Qm=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,I1=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function Zb(e){let t=[],r=e.position.line,n=e.position.character;for(let a=0;a=u.length){if(t.length>0){let d=ae.create(r,n);t.push({type:"break",content:"",range:Q.create(d,d)})}}else{Qm.lastIndex=c;let d=Qm.exec(u);if(d){let p=d[0],m=d[1],v=ae.create(r,n+c),T=ae.create(r,n+c+p.length);t.push({type:"tag",content:m,range:Q.create(v,T)}),c+=p.length,c=pl(u,c)}if(c0&&t[t.length-1].type==="break"?t.slice(0,-1):t}i(Zb,"tokenize");o(Zb,"tokenize");function Qb(e,t,r,n){let a=[];if(e.length===0){let s=ae.create(r,n),l=ae.create(r,n+t.length);a.push({type:"text",content:t,range:Q.create(s,l)})}else{let s=0;for(let u of e){let c=u.index,f=t.substring(s,c);f.length>0&&a.push({type:"text",content:t.substring(s,c),range:Q.create(ae.create(r,s+n),ae.create(r,c+n))});let d=f.length+1,p=u[1];if(a.push({type:"inline-tag",content:p,range:Q.create(ae.create(r,s+d+n),ae.create(r,s+d+p.length+n))}),d+=p.length,u.length===4){d+=u[2].length;let m=u[3];a.push({type:"text",content:m,range:Q.create(ae.create(r,s+d+n),ae.create(r,s+d+m.length+n))})}else a.push({type:"text",content:"",range:Q.create(ae.create(r,s+d+n),ae.create(r,s+d+n))});s=c+u[0].length}let l=t.substring(s);l.length>0&&a.push({type:"text",content:l,range:Q.create(ae.create(r,s+n),ae.create(r,s+n+l.length))})}return a}i(Qb,"buildInlineTokens");o(Qb,"buildInlineTokens");var N1=/\S/,k1=/\s*$/;function pl(e,t){let r=e.substring(t).match(N1);return r?t+r.index:e.length}i(pl,"skipWhitespace");o(pl,"skipWhitespace");function eS(e){let t=e.match(k1);if(t&&typeof t.index=="number")return t.index}i(eS,"lastCharacter");o(eS,"lastCharacter");function tS(e){let t=ae.create(e.position.line,e.position.character);if(e.tokens.length===0)return new eg([],Q.create(t,t));let r=[];for(;e.indext.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let t of this.elements)if(e.length===0)e=t.toString();else{let r=t.toString();e+=If(e)+r}return e.trim()}toMarkdown(e){let t="";for(let r of this.elements)if(t.length===0)t=r.toMarkdown(e);else{let n=r.toMarkdown(e);t+=If(t)+n}return t.trim()}},Lu=class{static{i(this,"JSDocTagImpl")}static{o(this,"JSDocTagImpl")}constructor(e,t,r,n){this.name=e,this.content=t,this.inline=r,this.range=n}toString(){let e=`@${this.name}`,t=this.content.toString();return this.content.inlines.length===1?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e} +${t}`),this.inline?`{${e}}`:e}toMarkdown(e){return e?.renderTag?.(this)??this.toMarkdownDefault(e)}toMarkdownDefault(e){let t=this.content.toMarkdown(e);if(this.inline){let a=iS(this.name,t,e??{});if(typeof a=="string")return a}let r="";e?.tag==="italic"||e?.tag===void 0?r="*":e?.tag==="bold"?r="**":e?.tag==="bold-italic"&&(r="***");let n=`${r}@${this.name}${r}`;return this.content.inlines.length===1?n=`${n} \u2014 ${t}`:this.content.inlines.length>1&&(n=`${n} +${t}`),this.inline?`{${n}}`:n}};function iS(e,t,r){if(e==="linkplain"||e==="linkcode"||e==="link"){let n=t.indexOf(" "),a=t;if(n>0){let l=pl(t,n);a=t.substring(l),t=t.substring(0,n)}return(e==="linkcode"||e==="link"&&r.link==="code")&&(a=`\`${a}\``),r.renderLink?.(t,a)??sS(t,a)}}i(iS,"renderInlineTag");o(iS,"renderInlineTag");function sS(e,t){try{return dt.parse(e,!0),`[${t}](${e})`}catch{return e}}i(sS,"renderLinkDefault");o(sS,"renderLinkDefault");var wf=class{static{i(this,"JSDocTextImpl")}static{o(this,"JSDocTextImpl")}constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;tr.range.start.line&&(e+=` +`)}return e}toMarkdown(e){let t="";for(let r=0;rn.range.start.line&&(t+=` +`)}return t}},oS=class{static{i(this,"JSDocLineImpl")}static{o(this,"JSDocLineImpl")}constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}};function If(e){return e.endsWith(` +`)?` +`:` + +`}i(If,"fillNewlines");o(If,"fillNewlines");var lS=class{static{i(this,"JSDocDocumentationProvider")}static{o(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let t=this.commentProvider.getComment(e);if(t&&Rh(t))return Th(t).toMarkdown({renderLink:o((n,a)=>this.documentationLinkRenderer(e,n,a),"renderLink"),renderTag:o(n=>this.documentationTagRenderer(e,n),"renderTag")})}documentationLinkRenderer(e,t,r){let n=this.findNameInLocalSymbols(e,t)??this.findNameInGlobalScope(e,t);if(n&&n.nameSegment){let a=n.nameSegment.range.start.line+1,s=n.nameSegment.range.start.character+1,l=n.documentUri.with({fragment:`L${a},${s}`});return`[${r}](${l.toString()})`}else return}documentationTagRenderer(e,t){}findNameInLocalSymbols(e,t){let n=kt(e).localSymbols;if(!n)return;let a=e;do{let l=n.getStream(a).find(u=>u.name===t);if(l)return l;a=a.$container}while(a)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(n=>n.name===t)}},uS=class{static{i(this,"DefaultCommentProvider")}static{o(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){return hh(e)?e.$comment:Ad(e.$cstNode,this.grammarConfig().multilineCommentRules)?.text}},cS=class{static{i(this,"DefaultAsyncParser")}static{o(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}},P1=class{static{i(this,"AbstractThreadedAsyncParser")}static{o(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let t=this.queue.shift();t&&(e.lock(),t.resolve(e))}}),this.workerPool.push(e)}}async parse(e,t){let r=await this.acquireParserWorker(t),n=new Tr,a,s=t.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(r)},this.terminationDelay)});return r.parse(e).then(l=>{let u=this.hydrator.hydrate(l);n.resolve(u)}).catch(l=>{n.reject(l)}).finally(()=>{s.dispose(),clearTimeout(a)}),n.promise}terminateWorker(e){e.terminate();let t=this.workerPool.indexOf(e);t>=0&&this.workerPool.splice(t,1)}async acquireParserWorker(e){this.initializeWorkers();for(let r of this.workerPool)if(r.ready)return r.lock(),r;let t=new Tr;return e.onCancellationRequested(()=>{let r=this.queue.indexOf(t);r>=0&&this.queue.splice(r,1),t.reject(Vt)}),this.queue.push(t),t.promise}},O1=class{static{i(this,"ParserWorker")}static{o(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,t,r,n){this.onReadyEmitter=new $u.Emitter,this.deferred=new Tr,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=n,t(a=>{let s=a;this.deferred.resolve(s),this.unlock()}),r(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(Vt),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new Tr,this.sendMessage(e),this.deferred.promise}},fS=class{static{i(this,"DefaultWorkspaceLock")}static{o(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new pe.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let t=vu();return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,r=pe.CancellationToken.None){let n=new Tr,a={action:t,deferred:n,cancellationToken:r};return e.push(a),this.performNextOperation(),n.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:t,deferred:r,cancellationToken:n})=>{try{let a=await Promise.resolve().then(()=>t(n));r.resolve(a)}catch(a){Kn(a)?r.resolve(void 0):r.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}},dS=class{static{i(this,"DefaultHydrator")}static{o(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new cl,this.tokenTypeIdMap=new cl,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(t=>({...t,message:t.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let t=new Map,r=new Map;for(let n of Pt(e))t.set(n,{});if(e.$cstNode)for(let n of ka(e.$cstNode))r.set(n,{});return{astNodes:t,cstNodes:r}}dehydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(r.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(let[n,a]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(a)){let s=[];r[n]=s;for(let l of a)Pe(l)?s.push(this.dehydrateAstNode(l,t)):Xe(l)?s.push(this.dehydrateReference(l,t)):s.push(l)}else Pe(a)?r[n]=this.dehydrateAstNode(a,t):Xe(a)?r[n]=this.dehydrateReference(a,t):a!==void 0&&(r[n]=a);return r}dehydrateReference(e,t){let r={};return r.$refText=e.$refText,e.$refNode&&(r.$refNode=t.cstNodes.get(e.$refNode)),r}dehydrateCstNode(e,t){let r=t.cstNodes.get(e);return vl(e)?r.fullText=e.fullText:r.grammarSource=this.getGrammarElementId(e.grammarSource),r.hidden=e.hidden,r.astNode=t.astNodes.get(e.astNode),fr(e)?r.content=e.content.map(n=>this.dehydrateCstNode(n,t)):Cn(e)&&(r.tokenType=e.tokenType.name,r.offset=e.offset,r.length=e.length,r.startLine=e.range.start.line,r.startColumn=e.range.start.character,r.endLine=e.range.end.line,r.endColumn=e.range.end.character),r}hydrate(e){let t=e.value,r=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,r),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,r)}}createHydrationContext(e){let t=new Map,r=new Map;for(let a of Pt(e))t.set(a,{});let n;if(e.$cstNode)for(let a of ka(e.$cstNode)){let s;"fullText"in a?(s=new Zp(a.fullText),n=s):"content"in a?s=new pu:"tokenType"in a&&(s=this.hydrateCstLeafNode(a)),s&&(r.set(a,s),s.root=n)}return{astNodes:t,cstNodes:r}}hydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode&&(r.$cstNode=t.cstNodes.get(e.$cstNode));for(let[n,a]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(a)){let s=[];r[n]=s;for(let l of a)Pe(l)?s.push(this.setParent(this.hydrateAstNode(l,t),r)):Xe(l)?s.push(this.hydrateReference(l,r,n,t)):s.push(l)}else Pe(a)?r[n]=this.setParent(this.hydrateAstNode(a,t),r):Xe(a)?r[n]=this.hydrateReference(a,r,n,t):a!==void 0&&(r[n]=a);return r}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,r,n){return this.linker.buildReference(t,r,n.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,r=0){let n=t.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(n.grammarSource=this.getGrammarElement(e.grammarSource)),n.astNode=t.astNodes.get(e.astNode),fr(n))for(let a of e.content){let s=this.hydrateCstNode(a,t,r++);n.content.push(s)}return n}hydrateCstLeafNode(e){let t=this.getTokenType(e.tokenType),r=e.offset,n=e.length,a=e.startLine,s=e.startColumn,l=e.endLine,u=e.endColumn,c=e.hidden;return new il(r,n,{start:{line:a,character:s},end:{line:l,character:u}},t,c)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let t of Pt(this.grammar))Tl(t)&&this.grammarElementIdMap.set(t,e++)}};function Ch(e){return{documentation:{CommentProvider:o(t=>new uS(t),"CommentProvider"),DocumentationProvider:o(t=>new lS(t),"DocumentationProvider")},parser:{AsyncParser:o(t=>new cS(t),"AsyncParser"),GrammarConfig:o(t=>Wd(t),"GrammarConfig"),LangiumParser:o(t=>ah(t),"LangiumParser"),CompletionParser:o(t=>nh(t),"CompletionParser"),ValueConverter:o(()=>new sh,"ValueConverter"),TokenBuilder:o(()=>new gu,"TokenBuilder"),Lexer:o(t=>new vh(t),"Lexer"),ParserErrorMessageProvider:o(()=>new eh,"ParserErrorMessageProvider"),LexerErrorMessageProvider:o(()=>new Jb,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:o(()=>new Wb,"AstNodeLocator"),AstNodeDescriptionProvider:o(t=>new Kb(t),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:o(t=>new qb(t),"ReferenceDescriptionProvider")},references:{Linker:o(t=>new Pb(t),"Linker"),NameProvider:o(()=>new Ob,"NameProvider"),ScopeProvider:o(t=>new Fb(t),"ScopeProvider"),ScopeComputation:o(t=>new Db(t),"ScopeComputation"),References:o(t=>new Lb(t),"References")},serializer:{Hydrator:o(t=>new dS(t),"Hydrator"),JsonSerializer:o(t=>new Gb(t),"JsonSerializer")},validation:{DocumentValidator:o(t=>new Bb(t),"DocumentValidator"),ValidationRegistry:o(t=>new Ub(t),"ValidationRegistry")},shared:o(()=>e.shared,"shared")}}i(Ch,"createDefaultCoreModule");o(Ch,"createDefaultCoreModule");function bh(e){return{ServiceRegistry:o(t=>new jb(t),"ServiceRegistry"),workspace:{LangiumDocuments:o(t=>new kb(t),"LangiumDocuments"),LangiumDocumentFactory:o(t=>new Nb(t),"LangiumDocumentFactory"),DocumentBuilder:o(t=>new Hb(t),"DocumentBuilder"),IndexManager:o(t=>new Yb(t),"IndexManager"),WorkspaceManager:o(t=>new Xb(t),"WorkspaceManager"),FileSystemProvider:o(t=>e.fileSystemProvider(t),"FileSystemProvider"),WorkspaceLock:o(()=>new fS,"WorkspaceLock"),ConfigurationProvider:o(t=>new Vb(t),"ConfigurationProvider")},profilers:{}}}i(bh,"createDefaultSharedCoreModule");o(bh,"createDefaultSharedCoreModule");var Nf;(function(e){e.merge=(t,r)=>xa(xa({},t),r)})(Nf||(Nf={}));function hl(e,t,r,n,a,s,l,u,c){let f=[e,t,r,n,a,s,l,u,c].reduce(xa,{});return wh(f)}i(hl,"inject");o(hl,"inject");var pS=Symbol("isProxy");function Sh(e){if(e&&e[pS])for(let t of Object.values(e))Sh(t);return e}i(Sh,"eagerLoad");o(Sh,"eagerLoad");function wh(e,t){let r=new Proxy({},{deleteProperty:o(()=>!1,"deleteProperty"),set:o(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:o((n,a)=>a===pS?!0:kf(n,a,e,t||r),"get"),getOwnPropertyDescriptor:o((n,a)=>(kf(n,a,e,t||r),Object.getOwnPropertyDescriptor(n,a)),"getOwnPropertyDescriptor"),has:o((n,a)=>a in e,"has"),ownKeys:o(()=>[...Object.getOwnPropertyNames(e)],"ownKeys")});return r}i(wh,"_inject");o(wh,"_inject");var tg=Symbol();function kf(e,t,r,n){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable. Cause: "+e[t]);if(e[t]===tg)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}else if(t in r){let a=r[t];e[t]=tg;try{e[t]=typeof a=="function"?a(n):wh(a,n)}catch(s){throw e[t]=s instanceof Error?s:void 0,s}return e[t]}else return}i(kf,"_resolve");o(kf,"_resolve");function xa(e,t){if(t){for(let[r,n]of Object.entries(t))if(n!=null)if(typeof n=="object"){let a=e[r];typeof a=="object"&&a!==null?e[r]=xa(a,n):e[r]=xa({},n)}else e[r]=n}return e}i(xa,"_merge");o(xa,"_merge");var Pf={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]},yn;(function(e){e.REGULAR="indentation-sensitive",e.IGNORE_INDENTATION="ignore-indentation"})(yn||(yn={}));var hS=class extends gu{static{i(this,"IndentationAwareTokenBuilder")}static{o(this,"IndentationAwareTokenBuilder")}constructor(e=Pf){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options={...Pf,...e},this.indentTokenType=_a({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=_a({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,t){let r=super.buildTokens(e,t);if(!Au(r))throw new Error("Invalid tokens built by default builder");let{indentTokenName:n,dedentTokenName:a,whitespaceTokenName:s,ignoreIndentationDelimiters:l}=this.options,u,c,f,d=[];for(let p of r){for(let[m,v]of l)p.name===m?p.PUSH_MODE=yn.IGNORE_INDENTATION:p.name===v&&(p.POP_MODE=!0);p.name===a?u=p:p.name===n?c=p:p.name===s?f=p:d.push(p)}if(!u||!c||!f)throw new Error("Some indentation/whitespace tokens not found!");return l.length>0?{modes:{[yn.REGULAR]:[u,c,...d,f],[yn.IGNORE_INDENTATION]:[...d,f]},defaultMode:yn.REGULAR}:[u,c,f,...d]}flushLexingReport(e){return{...super.flushLexingReport(e),remainingDedents:this.flushRemainingDedents(e)}}isStartOfLine(e,t){return t===0||`\r +`.includes(e[t-1])}matchWhitespace(e,t,r,n){this.whitespaceRegExp.lastIndex=t;let a=this.whitespaceRegExp.exec(e);return{currIndentLevel:a?.[0].length??0,prevIndentLevel:this.indentationStack.at(-1),match:a}}createIndentationTokenInstance(e,t,r,n){let a=this.getLineNumber(t,n);return Os(e,r,n,n+r.length,a,a,1,r.length)}getLineNumber(e,t){return e.substring(0,t).split(/\r\n|\r|\n/).length}indentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:a,prevIndentLevel:s,match:l}=this.matchWhitespace(e,t,r,n);return a<=s?null:(this.indentationStack.push(a),l)}dedentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:a,prevIndentLevel:s,match:l}=this.matchWhitespace(e,t,r,n);if(a>=s)return null;let u=this.indentationStack.lastIndexOf(a);if(u===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${a} at offset: ${t}. Current indentation stack: ${this.indentationStack}`,offset:t,length:l?.[0]?.length??0,line:this.getLineNumber(e,t),column:1}),null;let c=this.indentationStack.length-u-1,f=e.substring(0,t).match(/[\r\n]+$/)?.[0].length??1;for(let d=0;d1;)t.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],t}},L1=class extends vh{static{i(this,"IndentationAwareLexer")}static{o(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof hS)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,t=yh){let r=super.tokenize(e),n=r.report;t?.mode==="full"&&r.tokens.push(...n.remainingDedents),n.remainingDedents=[];let{indentTokenType:a,dedentTokenType:s}=this.indentationTokenBuilder,l=a.tokenTypeIdx,u=s.tokenTypeIdx,c=[],f=r.tokens.length-1;for(let d=0;d=0&&c.push(r.tokens[f]),r.tokens=c,r}},Ih={};xr(Ih,{AstUtils:i(()=>Xf,"AstUtils"),BiMap:i(()=>cl,"BiMap"),Cancellation:i(()=>pe,"Cancellation"),ContextCache:i(()=>Ru,"ContextCache"),CstUtils:i(()=>Vf,"CstUtils"),DONE_RESULT:i(()=>Ye,"DONE_RESULT"),Deferred:i(()=>Tr,"Deferred"),Disposable:i(()=>Tn,"Disposable"),DisposableCache:i(()=>Tu,"DisposableCache"),DocumentCache:i(()=>xb,"DocumentCache"),EMPTY_STREAM:i(()=>ba,"EMPTY_STREAM"),ErrorWithLocation:i(()=>bl,"ErrorWithLocation"),GrammarUtils:i(()=>bd,"GrammarUtils"),MultiMap:i(()=>Rr,"MultiMap"),OperationCancelled:i(()=>Vt,"OperationCancelled"),Reduction:i(()=>es,"Reduction"),RegExpUtils:i(()=>wd,"RegExpUtils"),SimpleCache:i(()=>dh,"SimpleCache"),StreamImpl:i(()=>Wt,"StreamImpl"),TreeStreamImpl:i(()=>Sa,"TreeStreamImpl"),URI:i(()=>dt,"URI"),UriTrie:i(()=>ch,"UriTrie"),UriUtils:i(()=>Je,"UriUtils"),WorkspaceCache:i(()=>ph,"WorkspaceCache"),assertCondition:i(()=>Sd,"assertCondition"),assertUnreachable:i(()=>Fr,"assertUnreachable"),delayNextTick:i(()=>yu,"delayNextTick"),interruptAndCheck:i(()=>je,"interruptAndCheck"),isOperationCancelled:i(()=>Kn,"isOperationCancelled"),loadGrammarFromJson:i(()=>vt,"loadGrammarFromJson"),setInterruptionPeriod:i(()=>oh,"setInterruptionPeriod"),startCancelableOperation:i(()=>vu,"startCancelableOperation"),stream:i(()=>oe,"stream")});ml(Ih,$u);var mS=class{static{i(this,"EmptyFileSystemProvider")}static{o(this,"EmptyFileSystemProvider")}stat(e){throw new Error("No file system is available.")}statSync(e){throw new Error("No file system is available.")}async exists(){return!1}existsSync(){return!1}readBinary(){throw new Error("No file system is available.")}readBinarySync(){throw new Error("No file system is available.")}readFile(){throw new Error("No file system is available.")}readFileSync(){throw new Error("No file system is available.")}async readDirectory(){return[]}readDirectorySync(){return[]}},gS={fileSystemProvider:o(()=>new mS,"fileSystemProvider")},D1={Grammar:o(()=>{},"Grammar"),LanguageMetaData:o(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},M1={AstReflection:o(()=>new yd,"AstReflection")};function yS(){let e=hl(bh(gS),M1),t=hl(Ch({shared:e}),D1);return e.ServiceRegistry.register(t),t}i(yS,"createMinimalGrammarServices");o(yS,"createMinimalGrammarServices");function vt(e){let t=yS(),r=t.serializer.JsonSerializer.deserialize(e);return t.shared.workspace.LangiumDocumentFactory.fromModel(r,dt.parse(`memory:/${r.name??"grammar"}.langium`)),r}i(vt,"loadGrammarFromJson");o(vt,"loadGrammarFromJson");ml(Cg,Ih);var x1=class{static{i(this,"DefaultLangiumProfiler")}static{o(this,"DefaultLangiumProfiler")}constructor(e){this.activeCategories=new Set,this.allCategories=new Set(["validating","parsing","linking"]),this.activeCategories=e??new Set(this.allCategories),this.records=new Rr}isActive(e){return this.activeCategories.has(e)}start(...e){e?e.forEach(t=>this.activeCategories.add(t)):this.activeCategories=new Set(this.allCategories)}stop(...e){e?e.forEach(t=>this.activeCategories.delete(t)):this.activeCategories.clear()}createTask(e,t){if(!this.isActive(e))throw new Error(`Category "${e}" is not active.`);return console.log(`Creating profiling task for '${e}.${t}'.`),new vS(r=>this.records.add(e,this.dumpRecord(e,r)),t)}dumpRecord(e,t){console.info(`Task ${e}.${t.identifier} executed in ${t.duration.toFixed(2)}ms and ended at ${t.date.toISOString()}`);let r=[];for(let s of t.entries.keys()){let l=t.entries.get(s),u=l.reduce((c,f)=>c+f);r.push({name:`${t.identifier}.${s}`,count:l.length,duration:u})}let n=t.duration-r.map(s=>s.duration).reduce((s,l)=>s+l,0);r.push({name:t.identifier,count:1,duration:n}),r.sort((s,l)=>l.duration-s.duration);function a(s){return Math.round(100*s)/100}return i(a,"Round"),o(a,"Round"),console.table(r.map(s=>({Element:s.name,Count:s.count,"Self %":a(100*s.duration/t.duration),"Time (ms)":a(s.duration)}))),t}getRecords(...e){return e.length===0?this.records.values():this.records.entries().filter(t=>e.some(r=>r===t[0])).flatMap(t=>t[1])}},vS=class{static{i(this,"ProfilingTask")}static{o(this,"ProfilingTask")}constructor(e,t){this.stack=[],this.entries=new Rr,this.addRecord=e,this.identifier=t}start(){if(this.startTime!==void 0)throw new Error(`Task "${this.identifier}" is already started.`);this.startTime=performance.now()}stop(){if(this.startTime===void 0)throw new Error(`Task "${this.identifier}" was not started.`);if(this.stack.length!==0)throw new Error(`Task "${this.identifier}" cannot be stopped before sub-task(s): ${this.stack.map(t=>t.id).join(", ")}.`);let e={identifier:this.identifier,date:new Date,duration:performance.now()-this.startTime,entries:this.entries};this.addRecord(e),this.startTime=void 0,this.entries.clear()}startSubTask(e){this.stack.push({id:e,start:performance.now(),content:0})}stopSubTask(e){let t=this.stack.pop();if(!t)throw new Error(`Task "${this.identifier}.${e}" was not started.`);if(t.id!==e)throw new Error(`Sub-Task "${t.id}" is not already stopped.`);let r=performance.now()-t.start;this.stack.at(-1)!==void 0&&(this.stack[this.stack.length-1].content+=r);let n=r-t.content;this.entries.add(e,n)}},Of;(e=>{e.Terminals={ARROW_DIRECTION:/L|R|T|B/,ARROW_GROUP:/\{group\}/,ARROW_INTO:/<|>/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ARCH_ICON:/\([\w-:]+\)/,ARCH_TITLE:/\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[\w ]+)\]/}})(Of||(Of={}));var Lf;(e=>{e.Terminals={EM_ID:/[_a-zA-Z][\w_]*/,EM_FID:/\d{1,3}/,EM_DATA_INLINE:/\{(.*)\}|"(.*)"|'(.*)'/,EM_DATA_BLOCK:/\{[\t ]*\r?\n(?:[\S\s]*?\r?\n)?\}(?:\r?\n|(?!\S))/,EM_ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EM_ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,EM_TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,EM_WS:/\s+/,EM_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EM_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EM_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EM_ML_COMMENT:/\/\*[\s\S]*?\*\//,EM_SL_COMMENT:/\/\/[^\n\r]*/}})(Lf||(Lf={}));var Df;(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,REFERENCE:/\w([-\./\w]*[-\w])?/}})(Df||(Df={}));var Mf;(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(Mf||(Mf={}));var xf;(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(xf||(xf={}));var Ff;(e=>{e.Terminals={NUMBER_PIE:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(Ff||(Ff={}));var Gf;(e=>{e.Terminals={GRATICULE:/circle|polygon/,BOOLEAN:/true|false/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NUMBER:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(Gf||(Gf={}));var jf;(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,TREEMAP_KEYWORD:/treemap-beta|treemap/,CLASS_DEF:/classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/,STYLE_SEPARATOR:/:::/,SEPARATOR:/:/,COMMA:/,/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,ID2:/[a-zA-Z_][a-zA-Z0-9_]*/,NUMBER2:/[0-9_\.\,]+/,STRING2:/"[^"]*"|'[^']*'/}})(jf||(jf={}));var Uf;(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,STRING2:/"[^"]*"|'[^']*'/}})(Uf||(Uf={}));var zf;(e=>{e.Terminals={WARDLEY_NUMBER:/[0-9]+\.[0-9]+/,ARROW:/->/,LINK_PORT:/\+<>|\+>|\+|-\.->|>|\+'[^']*'<>|\+'[^']*'<|\+'[^']*'>/,LINK_LABEL:/;[^\n\r]+/,STRATEGY:/build|buy|outsource|market/,KW_WARDLEY:/wardley-beta/,KW_SIZE:/size/,KW_EVOLUTION:/evolution/,KW_ANCHOR:/anchor/,KW_COMPONENT:/component/,KW_LABEL:/label/,KW_INERTIA:/inertia/,KW_EVOLVE:/evolve/,KW_PIPELINE:/pipeline/,KW_NOTE:/note/,KW_ANNOTATIONS:/annotations/,KW_ANNOTATION:/annotation/,KW_ACCELERATOR:/accelerator/,KW_DEACCELERATOR:/deaccelerator/,NAME_WITH_SPACES:/(?!title\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/,WS:/[ \t]+/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(zf||(zf={}));var CF={...Of.Terminals,...Lf.Terminals,...Df.Terminals,...Mf.Terminals,...xf.Terminals,...Ff.Terminals,...Gf.Terminals,...Uf.Terminals,...jf.Terminals,...zf.Terminals},Ks={$type:"Accelerator",name:"name",x:"x",y:"y"},qs={$type:"Anchor",evolution:"evolution",name:"name",visibility:"visibility"},Ti={$type:"Annotation",number:"number",text:"text",x:"x",y:"y"},Du={$type:"Annotations",x:"x",y:"y"},sr={$type:"Architecture",accDescr:"accDescr",accTitle:"accTitle",edges:"edges",groups:"groups",junctions:"junctions",services:"services",title:"title"};function F1(e){return Tt.isInstance(e,sr.$type)}i(F1,"isArchitecture");o(F1,"isArchitecture");var Ws={$type:"Axis",label:"label",name:"name"},_o={$type:"Branch",name:"name",order:"order"};function G1(e){return Tt.isInstance(e,_o.$type)}i(G1,"isBranch");o(G1,"isBranch");var rg={$type:"Checkout",branch:"branch"},Vs={$type:"CherryPicking",id:"id",parent:"parent",tags:"tags"},Mu={$type:"ClassDefStatement",className:"className",styleText:"styleText"},ua={$type:"Commit",id:"id",message:"message",tags:"tags",type:"type"};function j1(e){return Tt.isInstance(e,ua.$type)}i(j1,"isCommit");o(j1,"isCommit");var Hs={$type:"Common",accDescr:"accDescr",accTitle:"accTitle",title:"title"},Br={$type:"Component",decorator:"decorator",evolution:"evolution",inertia:"inertia",label:"label",name:"name",visibility:"visibility"},Ys={$type:"Curve",entries:"entries",label:"label",name:"name"},Xs={$type:"Deaccelerator",name:"name",x:"x",y:"y"},ng={$type:"Decorator",strategy:"strategy"},Qn={$type:"Direction",accDescr:"accDescr",accTitle:"accTitle",dir:"dir",statements:"statements",title:"title"},Ut={$type:"Edge",lhsDir:"lhsDir",lhsGroup:"lhsGroup",lhsId:"lhsId",lhsInto:"lhsInto",rhsDir:"rhsDir",rhsGroup:"rhsGroup",rhsId:"rhsId",rhsInto:"rhsInto",title:"title"},ea={$type:"EmDataEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",name:"name"},Kr={$type:"EmFrame"},Ri={$type:"EmGwt",givenStatements:"givenStatements",sourceFrame:"sourceFrame",thenStatements:"thenStatements",whenStatements:"whenStatements"},ag={$type:"EmGwtStatement",entityIdentifier:"entityIdentifier"},xu={$type:"EmModelEntity",name:"name"};function U1(e){return e==="rmo"||e==="readmodel"||e==="ui"||e==="cmd"||e==="command"||e==="evt"||e==="event"||e==="pcr"||e==="processor"}i(U1,"isEmModelEntityType");o(U1,"isEmModelEntityType");var Js={$type:"EmNoteEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",sourceFrame:"sourceFrame"},or={$type:"EmResetFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"};function z1(e){return Tt.isInstance(e,or.$type)}i(z1,"isEmResetFrame");o(z1,"isEmResetFrame");var br={$type:"EmTimeFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"},Fu={$type:"Entry",axis:"axis",value:"value"},nr={$type:"EventModel",accDescr:"accDescr",accTitle:"accTitle",dataEntities:"dataEntities",frames:"frames",gwtEntities:"gwtEntities",modelEntities:"modelEntities",noteEntities:"noteEntities",title:"title"},ig={$type:"Evolution",stages:"stages"},Zs={$type:"EvolutionStage",boundary:"boundary",name:"name",secondName:"secondName"},Gu={$type:"Evolve",component:"component",target:"target"},Qr={$type:"GitGraph",accDescr:"accDescr",accTitle:"accTitle",statements:"statements",title:"title"};function B1(e){return Tt.isInstance(e,Qr.$type)}i(B1,"isGitGraph");o(B1,"isGitGraph");var $i={$type:"Group",icon:"icon",id:"id",in:"in",title:"title"},xi={$type:"Info",accDescr:"accDescr",accTitle:"accTitle",title:"title"};function K1(e){return Tt.isInstance(e,xi.$type)}i(K1,"isInfo");o(K1,"isInfo");var Ai={$type:"Item",classSelector:"classSelector",name:"name"},ju={$type:"Junction",id:"id",in:"in"},Ei={$type:"Label",negX:"negX",negY:"negY",offsetX:"offsetX",offsetY:"offsetY"},Qs={$type:"Leaf",classSelector:"classSelector",name:"name",value:"value"},qr={$type:"Link",arrow:"arrow",from:"from",fromPort:"fromPort",linkLabel:"linkLabel",to:"to",toPort:"toPort"},ca={$type:"Merge",branch:"branch",id:"id",tags:"tags",type:"type"};function q1(e){return Tt.isInstance(e,ca.$type)}i(q1,"isMerge");o(q1,"isMerge");var eo={$type:"Note",evolution:"evolution",text:"text",visibility:"visibility"},Uu={$type:"Option",name:"name",value:"value"},fa={$type:"Packet",accDescr:"accDescr",accTitle:"accTitle",blocks:"blocks",title:"title"};function W1(e){return Tt.isInstance(e,fa.$type)}i(W1,"isPacket");o(W1,"isPacket");var da={$type:"PacketBlock",bits:"bits",end:"end",label:"label",start:"start"};function V1(e){return Tt.isInstance(e,da.$type)}i(V1,"isPacketBlock");o(V1,"isPacketBlock");var en={$type:"Pie",accDescr:"accDescr",accTitle:"accTitle",sections:"sections",showData:"showData",title:"title"};function H1(e){return Tt.isInstance(e,en.$type)}i(H1,"isPie");o(H1,"isPie");var Co={$type:"PieSection",label:"label",value:"value"};function Y1(e){return Tt.isInstance(e,Co.$type)}i(Y1,"isPieSection");o(Y1,"isPieSection");var zu={$type:"Pipeline",components:"components",parent:"parent"},to={$type:"PipelineComponent",evolution:"evolution",label:"label",name:"name"},Wr={$type:"Radar",accDescr:"accDescr",accTitle:"accTitle",axes:"axes",curves:"curves",options:"options",title:"title"},Bu={$type:"Section",classSelector:"classSelector",name:"name"},ta={$type:"Service",icon:"icon",iconText:"iconText",id:"id",in:"in",title:"title"},Ku={$type:"Size",height:"height",width:"width"},ra={$type:"Statement"},pa={$type:"Treemap",accDescr:"accDescr",accTitle:"accTitle",title:"title",TreemapRows:"TreemapRows"};function X1(e){return Tt.isInstance(e,pa.$type)}i(X1,"isTreemap");o(X1,"isTreemap");var qu={$type:"TreemapRow",indent:"indent",item:"item"},Wu={$type:"TreeNode",indent:"indent",name:"name"},_i={$type:"TreeView",accDescr:"accDescr",accTitle:"accTitle",nodes:"nodes",title:"title"},Ke={$type:"Wardley",accDescr:"accDescr",accelerators:"accelerators",accTitle:"accTitle",anchors:"anchors",annotation:"annotation",annotations:"annotations",components:"components",deaccelerators:"deaccelerators",evolution:"evolution",evolves:"evolves",links:"links",notes:"notes",pipelines:"pipelines",size:"size",title:"title"};function J1(e){return Tt.isInstance(e,Ke.$type)}i(J1,"isWardley");o(J1,"isWardley");var TS=class extends Yf{static{i(this,"MermaidAstReflection")}constructor(){super(...arguments),this.types={Accelerator:{name:Ks.$type,properties:{name:{name:Ks.name},x:{name:Ks.x},y:{name:Ks.y}},superTypes:[]},Anchor:{name:qs.$type,properties:{evolution:{name:qs.evolution},name:{name:qs.name},visibility:{name:qs.visibility}},superTypes:[]},Annotation:{name:Ti.$type,properties:{number:{name:Ti.number},text:{name:Ti.text},x:{name:Ti.x},y:{name:Ti.y}},superTypes:[]},Annotations:{name:Du.$type,properties:{x:{name:Du.x},y:{name:Du.y}},superTypes:[]},Architecture:{name:sr.$type,properties:{accDescr:{name:sr.accDescr},accTitle:{name:sr.accTitle},edges:{name:sr.edges,defaultValue:[]},groups:{name:sr.groups,defaultValue:[]},junctions:{name:sr.junctions,defaultValue:[]},services:{name:sr.services,defaultValue:[]},title:{name:sr.title}},superTypes:[]},Axis:{name:Ws.$type,properties:{label:{name:Ws.label},name:{name:Ws.name}},superTypes:[]},Branch:{name:_o.$type,properties:{name:{name:_o.name},order:{name:_o.order}},superTypes:[ra.$type]},Checkout:{name:rg.$type,properties:{branch:{name:rg.branch}},superTypes:[ra.$type]},CherryPicking:{name:Vs.$type,properties:{id:{name:Vs.id},parent:{name:Vs.parent},tags:{name:Vs.tags,defaultValue:[]}},superTypes:[ra.$type]},ClassDefStatement:{name:Mu.$type,properties:{className:{name:Mu.className},styleText:{name:Mu.styleText}},superTypes:[]},Commit:{name:ua.$type,properties:{id:{name:ua.id},message:{name:ua.message},tags:{name:ua.tags,defaultValue:[]},type:{name:ua.type}},superTypes:[ra.$type]},Common:{name:Hs.$type,properties:{accDescr:{name:Hs.accDescr},accTitle:{name:Hs.accTitle},title:{name:Hs.title}},superTypes:[]},Component:{name:Br.$type,properties:{decorator:{name:Br.decorator},evolution:{name:Br.evolution},inertia:{name:Br.inertia,defaultValue:!1},label:{name:Br.label},name:{name:Br.name},visibility:{name:Br.visibility}},superTypes:[]},Curve:{name:Ys.$type,properties:{entries:{name:Ys.entries,defaultValue:[]},label:{name:Ys.label},name:{name:Ys.name}},superTypes:[]},Deaccelerator:{name:Xs.$type,properties:{name:{name:Xs.name},x:{name:Xs.x},y:{name:Xs.y}},superTypes:[]},Decorator:{name:ng.$type,properties:{strategy:{name:ng.strategy}},superTypes:[]},Direction:{name:Qn.$type,properties:{accDescr:{name:Qn.accDescr},accTitle:{name:Qn.accTitle},dir:{name:Qn.dir},statements:{name:Qn.statements,defaultValue:[]},title:{name:Qn.title}},superTypes:[Qr.$type]},Edge:{name:Ut.$type,properties:{lhsDir:{name:Ut.lhsDir},lhsGroup:{name:Ut.lhsGroup,defaultValue:!1},lhsId:{name:Ut.lhsId},lhsInto:{name:Ut.lhsInto,defaultValue:!1},rhsDir:{name:Ut.rhsDir},rhsGroup:{name:Ut.rhsGroup,defaultValue:!1},rhsId:{name:Ut.rhsId},rhsInto:{name:Ut.rhsInto,defaultValue:!1},title:{name:Ut.title}},superTypes:[]},EmDataEntity:{name:ea.$type,properties:{dataBlockValue:{name:ea.dataBlockValue},dataType:{name:ea.dataType},name:{name:ea.name}},superTypes:[]},EmFrame:{name:Kr.$type,properties:{},superTypes:[]},EmGwt:{name:Ri.$type,properties:{givenStatements:{name:Ri.givenStatements,defaultValue:[]},sourceFrame:{name:Ri.sourceFrame,referenceType:Kr.$type},thenStatements:{name:Ri.thenStatements,defaultValue:[]},whenStatements:{name:Ri.whenStatements,defaultValue:[]}},superTypes:[]},EmGwtStatement:{name:ag.$type,properties:{entityIdentifier:{name:ag.entityIdentifier,referenceType:xu.$type}},superTypes:[]},EmModelEntity:{name:xu.$type,properties:{name:{name:xu.name}},superTypes:[]},EmNoteEntity:{name:Js.$type,properties:{dataBlockValue:{name:Js.dataBlockValue},dataType:{name:Js.dataType},sourceFrame:{name:Js.sourceFrame,referenceType:Kr.$type}},superTypes:[]},EmResetFrame:{name:or.$type,properties:{dataInlineValue:{name:or.dataInlineValue},dataReference:{name:or.dataReference,referenceType:ea.$type},dataType:{name:or.dataType},entityIdentifier:{name:or.entityIdentifier},modelEntityType:{name:or.modelEntityType},name:{name:or.name},sourceFrames:{name:or.sourceFrames,defaultValue:[],referenceType:Kr.$type}},superTypes:[Kr.$type]},EmTimeFrame:{name:br.$type,properties:{dataInlineValue:{name:br.dataInlineValue},dataReference:{name:br.dataReference,referenceType:ea.$type},dataType:{name:br.dataType},entityIdentifier:{name:br.entityIdentifier},modelEntityType:{name:br.modelEntityType},name:{name:br.name},sourceFrames:{name:br.sourceFrames,defaultValue:[],referenceType:Kr.$type}},superTypes:[Kr.$type]},Entry:{name:Fu.$type,properties:{axis:{name:Fu.axis,referenceType:Ws.$type},value:{name:Fu.value}},superTypes:[]},EventModel:{name:nr.$type,properties:{accDescr:{name:nr.accDescr},accTitle:{name:nr.accTitle},dataEntities:{name:nr.dataEntities,defaultValue:[]},frames:{name:nr.frames,defaultValue:[]},gwtEntities:{name:nr.gwtEntities,defaultValue:[]},modelEntities:{name:nr.modelEntities,defaultValue:[]},noteEntities:{name:nr.noteEntities,defaultValue:[]},title:{name:nr.title}},superTypes:[]},Evolution:{name:ig.$type,properties:{stages:{name:ig.stages,defaultValue:[]}},superTypes:[]},EvolutionStage:{name:Zs.$type,properties:{boundary:{name:Zs.boundary},name:{name:Zs.name},secondName:{name:Zs.secondName}},superTypes:[]},Evolve:{name:Gu.$type,properties:{component:{name:Gu.component},target:{name:Gu.target}},superTypes:[]},GitGraph:{name:Qr.$type,properties:{accDescr:{name:Qr.accDescr},accTitle:{name:Qr.accTitle},statements:{name:Qr.statements,defaultValue:[]},title:{name:Qr.title}},superTypes:[]},Group:{name:$i.$type,properties:{icon:{name:$i.icon},id:{name:$i.id},in:{name:$i.in},title:{name:$i.title}},superTypes:[]},Info:{name:xi.$type,properties:{accDescr:{name:xi.accDescr},accTitle:{name:xi.accTitle},title:{name:xi.title}},superTypes:[]},Item:{name:Ai.$type,properties:{classSelector:{name:Ai.classSelector},name:{name:Ai.name}},superTypes:[]},Junction:{name:ju.$type,properties:{id:{name:ju.id},in:{name:ju.in}},superTypes:[]},Label:{name:Ei.$type,properties:{negX:{name:Ei.negX,defaultValue:!1},negY:{name:Ei.negY,defaultValue:!1},offsetX:{name:Ei.offsetX},offsetY:{name:Ei.offsetY}},superTypes:[]},Leaf:{name:Qs.$type,properties:{classSelector:{name:Qs.classSelector},name:{name:Qs.name},value:{name:Qs.value}},superTypes:[Ai.$type]},Link:{name:qr.$type,properties:{arrow:{name:qr.arrow},from:{name:qr.from},fromPort:{name:qr.fromPort},linkLabel:{name:qr.linkLabel},to:{name:qr.to},toPort:{name:qr.toPort}},superTypes:[]},Merge:{name:ca.$type,properties:{branch:{name:ca.branch},id:{name:ca.id},tags:{name:ca.tags,defaultValue:[]},type:{name:ca.type}},superTypes:[ra.$type]},Note:{name:eo.$type,properties:{evolution:{name:eo.evolution},text:{name:eo.text},visibility:{name:eo.visibility}},superTypes:[]},Option:{name:Uu.$type,properties:{name:{name:Uu.name},value:{name:Uu.value,defaultValue:!1}},superTypes:[]},Packet:{name:fa.$type,properties:{accDescr:{name:fa.accDescr},accTitle:{name:fa.accTitle},blocks:{name:fa.blocks,defaultValue:[]},title:{name:fa.title}},superTypes:[]},PacketBlock:{name:da.$type,properties:{bits:{name:da.bits},end:{name:da.end},label:{name:da.label},start:{name:da.start}},superTypes:[]},Pie:{name:en.$type,properties:{accDescr:{name:en.accDescr},accTitle:{name:en.accTitle},sections:{name:en.sections,defaultValue:[]},showData:{name:en.showData,defaultValue:!1},title:{name:en.title}},superTypes:[]},PieSection:{name:Co.$type,properties:{label:{name:Co.label},value:{name:Co.value}},superTypes:[]},Pipeline:{name:zu.$type,properties:{components:{name:zu.components,defaultValue:[]},parent:{name:zu.parent}},superTypes:[]},PipelineComponent:{name:to.$type,properties:{evolution:{name:to.evolution},label:{name:to.label},name:{name:to.name}},superTypes:[]},Radar:{name:Wr.$type,properties:{accDescr:{name:Wr.accDescr},accTitle:{name:Wr.accTitle},axes:{name:Wr.axes,defaultValue:[]},curves:{name:Wr.curves,defaultValue:[]},options:{name:Wr.options,defaultValue:[]},title:{name:Wr.title}},superTypes:[]},Section:{name:Bu.$type,properties:{classSelector:{name:Bu.classSelector},name:{name:Bu.name}},superTypes:[Ai.$type]},Service:{name:ta.$type,properties:{icon:{name:ta.icon},iconText:{name:ta.iconText},id:{name:ta.id},in:{name:ta.in},title:{name:ta.title}},superTypes:[]},Size:{name:Ku.$type,properties:{height:{name:Ku.height},width:{name:Ku.width}},superTypes:[]},Statement:{name:ra.$type,properties:{},superTypes:[]},TreeNode:{name:Wu.$type,properties:{indent:{name:Wu.indent},name:{name:Wu.name}},superTypes:[]},TreeView:{name:_i.$type,properties:{accDescr:{name:_i.accDescr},accTitle:{name:_i.accTitle},nodes:{name:_i.nodes,defaultValue:[]},title:{name:_i.title}},superTypes:[]},Treemap:{name:pa.$type,properties:{accDescr:{name:pa.accDescr},accTitle:{name:pa.accTitle},title:{name:pa.title},TreemapRows:{name:pa.TreemapRows,defaultValue:[]}},superTypes:[]},TreemapRow:{name:qu.$type,properties:{indent:{name:qu.indent},item:{name:qu.item}},superTypes:[]},Wardley:{name:Ke.$type,properties:{accDescr:{name:Ke.accDescr},accelerators:{name:Ke.accelerators,defaultValue:[]},accTitle:{name:Ke.accTitle},anchors:{name:Ke.anchors,defaultValue:[]},annotation:{name:Ke.annotation,defaultValue:[]},annotations:{name:Ke.annotations,defaultValue:[]},components:{name:Ke.components,defaultValue:[]},deaccelerators:{name:Ke.deaccelerators,defaultValue:[]},evolution:{name:Ke.evolution},evolves:{name:Ke.evolves,defaultValue:[]},links:{name:Ke.links,defaultValue:[]},notes:{name:Ke.notes,defaultValue:[]},pipelines:{name:Ke.pipelines,defaultValue:[]},size:{name:Ke.size},title:{name:Ke.title}},superTypes:[]}}}static{o(this,"MermaidAstReflection")}},Tt=new TS,sg,Z1=o(()=>sg??(sg=vt(`{"$type":"Grammar","isDeclared":true,"name":"ArchitectureGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[(?:\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'|[\\\\w ]+)\\\\]/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"ArchitectureGrammarGrammar"),og,Q1=o(()=>og??(og=vt('{"$type":"Grammar","isDeclared":true,"name":"EventModeling","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","entry":true,"name":"EventModel","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"eventmodeling"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"frames","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"dataEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"noteEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"gwtEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntityType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rmo"},{"$type":"Keyword","value":"readmodel"},{"$type":"Keyword","value":"ui"},{"$type":"Keyword","value":"cmd"},{"$type":"Keyword","value":"command"},{"$type":"Keyword","value":"evt"},{"$type":"Keyword","value":"event"},{"$type":"Keyword","value":"pcr"},{"$type":"Keyword","value":"processor"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"json"},{"$type":"Keyword","value":"jsobj"},{"$type":"Keyword","value":"figma"},{"$type":"Keyword","value":"salt"},{"$type":"Keyword","value":"uri"},{"$type":"Keyword","value":"md"},{"$type":"Keyword","value":"html"},{"$type":"Keyword","value":"text"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataInline","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataInlineValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataBlock","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataBlockValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"QualifiedName","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"."},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmTimeFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"tf"},{"$type":"Keyword","value":"timeframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmResetFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rf"},{"$type":"Keyword","value":"resetframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmFrame","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"entity"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"data"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmNoteEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"note"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwt","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"gwt"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"given"},{"$type":"Assignment","feature":"givenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Keyword","value":"when"},{"$type":"Assignment","feature":"whenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}],"cardinality":"?"},{"$type":"Keyword","value":"then"},{"$type":"Assignment","feature":"thenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwtStatement","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@9"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_EID","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_FI","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"EM_ID","definition":{"$type":"RegexToken","regex":"/[_a-zA-Z][\\\\w_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_FID","definition":{"$type":"RegexToken","regex":"/\\\\d{1,3}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_INLINE","definition":{"$type":"RegexToken","regex":"/\\\\{(.*)\\\\}|\\"(.*)\\"|\'(.*)\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_BLOCK","definition":{"$type":"RegexToken","regex":"/\\\\{[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?\\\\}(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EM_WS","definition":{"$type":"RegexToken","regex":"/\\\\s+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SL_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"imports":[],"types":[]}')),"EventModelingGrammar"),lg,eF=o(()=>lg??(lg=vt(`{"$type":"Grammar","isDeclared":true,"name":"GitGraphGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"GitGraphGrammarGrammar"),ug,tF=o(()=>ug??(ug=vt(`{"$type":"Grammar","isDeclared":true,"name":"InfoGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"InfoGrammarGrammar"),cg,rF=o(()=>cg??(cg=vt(`{"$type":"Grammar","isDeclared":true,"name":"PacketGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PacketGrammarGrammar"),fg,nF=o(()=>fg??(fg=vt(`{"$type":"Grammar","isDeclared":true,"name":"PieGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PieGrammarGrammar"),dg,aF=o(()=>dg??(dg=vt(`{"$type":"Grammar","isDeclared":true,"name":"RadarGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}},"isMulti":false}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"types":[]}`)),"RadarGrammarGrammar"),pg,iF=o(()=>pg??(pg=vt(`{"$type":"Grammar","isDeclared":true,"name":"TreemapGrammar","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammarGrammar"),hg,sF=o(()=>hg??(hg=vt(`{"$type":"Grammar","isDeclared":true,"name":"TreeViewGrammar","rules":[{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"TreeView","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"treeView-beta"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"nodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreeNode","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"TreeView","attributes":[{"$type":"TypeAttribute","name":"nodes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@9"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * TreeView grammar for Langium\\n * Converted from treemap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treeView declaration.\\n */"}`)),"TreeViewGrammarGrammar"),mg,oF=o(()=>mg??(mg=vt(`{"$type":"Grammar","isDeclared":true,"name":"WardleyGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Wardley","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"size","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"anchors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"links","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"evolves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"pipelines","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"notes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"annotations","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"annotation","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"deaccelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Size","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"width","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"height","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolution","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EvolutionStage","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"@"},{"$type":"Assignment","feature":"boundary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}],"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"secondName","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Anchor","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Component","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"decorator","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Keyword","value":")"}]}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Label","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"negX","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetX","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"negY","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetY","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Decorator","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"strategy","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Link","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"fromPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"arrow","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"?"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"toPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"linkLabel","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolve","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]},{"$type":"Assignment","feature":"component","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Pipeline","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PipelineComponent","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Note","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotations","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotation","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},{"$type":"Assignment","feature":"number","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CoordinateValue","dataType":"number","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Accelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Deaccelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"WARDLEY_NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"->"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_PORT","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<>"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+>"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_ARROW","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-->"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-.->"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":">"},"parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'<>/","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'/","parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_LABEL","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRATEGY","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"build"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"buy"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"outsource"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"market"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_WARDLEY","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"wardley-beta"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_SIZE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"size"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLUTION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolution"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANCHOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"anchor"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_COMPONENT","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"component"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_LABEL","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"label"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_INERTIA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"inertia"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLVE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolve"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_PIPELINE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"pipeline"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_NOTE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"note"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATIONS","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotations"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotation"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"accelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_DEACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"deaccelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NAME_WITH_SPACES","definition":{"$type":"RegexToken","regex":"/(?!title\\\\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \\\\t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@47"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@48"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"WardleyGrammarGrammar"),lF={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},uF={languageId:"eventmodeling",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},cF={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},fF={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},dF={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},pF={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},hF={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},mF={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},gF={languageId:"treeView",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},yF={languageId:"wardley",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},bF={AstReflection:o(()=>new TS,"AstReflection")},SF={Grammar:o(()=>Z1(),"Grammar"),LanguageMetaData:o(()=>lF,"LanguageMetaData"),parser:{}},wF={Grammar:o(()=>Q1(),"Grammar"),LanguageMetaData:o(()=>uF,"LanguageMetaData"),parser:{}},IF={Grammar:o(()=>eF(),"Grammar"),LanguageMetaData:o(()=>cF,"LanguageMetaData"),parser:{}},NF={Grammar:o(()=>tF(),"Grammar"),LanguageMetaData:o(()=>fF,"LanguageMetaData"),parser:{}},kF={Grammar:o(()=>rF(),"Grammar"),LanguageMetaData:o(()=>dF,"LanguageMetaData"),parser:{}},PF={Grammar:o(()=>nF(),"Grammar"),LanguageMetaData:o(()=>pF,"LanguageMetaData"),parser:{}},OF={Grammar:o(()=>aF(),"Grammar"),LanguageMetaData:o(()=>hF,"LanguageMetaData"),parser:{}},LF={Grammar:o(()=>iF(),"Grammar"),LanguageMetaData:o(()=>mF,"LanguageMetaData"),parser:{}},DF={Grammar:o(()=>sF(),"Grammar"),LanguageMetaData:o(()=>gF,"LanguageMetaData"),parser:{}},MF={Grammar:o(()=>oF(),"Grammar"),LanguageMetaData:o(()=>yF,"LanguageMetaData"),parser:{}},vF=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,TF=/accTitle[\t ]*:([^\n\r]*)/,RF=/title([\t ][^\n\r]*|)/,$F={ACC_DESCR:vF,ACC_TITLE:TF,TITLE:RF},AF=class extends sh{static{i(this,"AbstractMermaidValueConverter")}static{o(this,"AbstractMermaidValueConverter")}runConverter(e,t,r){let n=this.runCommonConverter(e,t,r);return n===void 0&&(n=this.runCustomConverter(e,t,r)),n===void 0?super.runConverter(e,t,r):n}runCommonConverter(e,t,r){let n=$F[e.name];if(n===void 0)return;let a=n.exec(t);if(a!==null){if(a[1]!==void 0)return a[1].trim().replace(/[\t ]{2,}/gm," ");if(a[2]!==void 0)return a[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` +`)}}},xF=class extends AF{static{i(this,"CommonValueConverter")}static{o(this,"CommonValueConverter")}runCustomConverter(e,t,r){}},EF=class extends gu{static{i(this,"AbstractMermaidTokenBuilder")}static{o(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,r){let n=super.buildKeywordTokens(e,t,r);return n.forEach(a=>{this.keywords.has(a.name)&&a.PATTERN!==void 0&&(a.PATTERN=new RegExp(a.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},FF=class extends EF{static{i(this,"CommonTokenBuilder")}static{o(this,"CommonTokenBuilder")}};export{o as a,Ch as b,bh as c,hl as d,gS as e,z1 as f,bF as g,SF as h,wF as i,IF as j,NF as k,kF as l,PF as m,OF as n,LF as o,DF as p,MF as q,AF as r,xF as s,EF as t}; +/*! Bundled license information: + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) +*/ diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-4R4BOZG6.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-4R4BOZG6.mjs.map new file mode 100644 index 0000000..1134428 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-4R4BOZG6.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-NNHCCRGN.mjs"], + "sourcesContent": ["var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// ../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js\nvar main_exports = {};\n__export(main_exports, {\n AnnotatedTextEdit: () => AnnotatedTextEdit,\n ChangeAnnotation: () => ChangeAnnotation,\n ChangeAnnotationIdentifier: () => ChangeAnnotationIdentifier,\n CodeAction: () => CodeAction,\n CodeActionContext: () => CodeActionContext,\n CodeActionKind: () => CodeActionKind,\n CodeActionTriggerKind: () => CodeActionTriggerKind,\n CodeDescription: () => CodeDescription,\n CodeLens: () => CodeLens,\n Color: () => Color,\n ColorInformation: () => ColorInformation,\n ColorPresentation: () => ColorPresentation,\n Command: () => Command,\n CompletionItem: () => CompletionItem,\n CompletionItemKind: () => CompletionItemKind,\n CompletionItemLabelDetails: () => CompletionItemLabelDetails,\n CompletionItemTag: () => CompletionItemTag,\n CompletionList: () => CompletionList,\n CreateFile: () => CreateFile,\n DeleteFile: () => DeleteFile,\n Diagnostic: () => Diagnostic,\n DiagnosticRelatedInformation: () => DiagnosticRelatedInformation,\n DiagnosticSeverity: () => DiagnosticSeverity,\n DiagnosticTag: () => DiagnosticTag,\n DocumentHighlight: () => DocumentHighlight,\n DocumentHighlightKind: () => DocumentHighlightKind,\n DocumentLink: () => DocumentLink,\n DocumentSymbol: () => DocumentSymbol,\n DocumentUri: () => DocumentUri,\n EOL: () => EOL,\n FoldingRange: () => FoldingRange,\n FoldingRangeKind: () => FoldingRangeKind,\n FormattingOptions: () => FormattingOptions,\n Hover: () => Hover,\n InlayHint: () => InlayHint,\n InlayHintKind: () => InlayHintKind,\n InlayHintLabelPart: () => InlayHintLabelPart,\n InlineCompletionContext: () => InlineCompletionContext,\n InlineCompletionItem: () => InlineCompletionItem,\n InlineCompletionList: () => InlineCompletionList,\n InlineCompletionTriggerKind: () => InlineCompletionTriggerKind,\n InlineValueContext: () => InlineValueContext,\n InlineValueEvaluatableExpression: () => InlineValueEvaluatableExpression,\n InlineValueText: () => InlineValueText,\n InlineValueVariableLookup: () => InlineValueVariableLookup,\n InsertReplaceEdit: () => InsertReplaceEdit,\n InsertTextFormat: () => InsertTextFormat,\n InsertTextMode: () => InsertTextMode,\n Location: () => Location,\n LocationLink: () => LocationLink,\n MarkedString: () => MarkedString,\n MarkupContent: () => MarkupContent,\n MarkupKind: () => MarkupKind,\n OptionalVersionedTextDocumentIdentifier: () => OptionalVersionedTextDocumentIdentifier,\n ParameterInformation: () => ParameterInformation,\n Position: () => Position,\n Range: () => Range,\n RenameFile: () => RenameFile,\n SelectedCompletionInfo: () => SelectedCompletionInfo,\n SelectionRange: () => SelectionRange,\n SemanticTokenModifiers: () => SemanticTokenModifiers,\n SemanticTokenTypes: () => SemanticTokenTypes,\n SemanticTokens: () => SemanticTokens,\n SignatureInformation: () => SignatureInformation,\n StringValue: () => StringValue,\n SymbolInformation: () => SymbolInformation,\n SymbolKind: () => SymbolKind,\n SymbolTag: () => SymbolTag,\n TextDocument: () => TextDocument,\n TextDocumentEdit: () => TextDocumentEdit,\n TextDocumentIdentifier: () => TextDocumentIdentifier,\n TextDocumentItem: () => TextDocumentItem,\n TextEdit: () => TextEdit,\n URI: () => URI,\n VersionedTextDocumentIdentifier: () => VersionedTextDocumentIdentifier,\n WorkspaceChange: () => WorkspaceChange,\n WorkspaceEdit: () => WorkspaceEdit,\n WorkspaceFolder: () => WorkspaceFolder,\n WorkspaceSymbol: () => WorkspaceSymbol,\n integer: () => integer,\n uinteger: () => uinteger\n});\nvar DocumentUri, URI, integer, uinteger, Position, Range, Location, LocationLink, Color, ColorInformation, ColorPresentation, FoldingRangeKind, FoldingRange, DiagnosticRelatedInformation, DiagnosticSeverity, DiagnosticTag, CodeDescription, Diagnostic, Command, TextEdit, ChangeAnnotation, ChangeAnnotationIdentifier, AnnotatedTextEdit, TextDocumentEdit, CreateFile, RenameFile, DeleteFile, WorkspaceEdit, TextEditChangeImpl, ChangeAnnotations, WorkspaceChange, TextDocumentIdentifier, VersionedTextDocumentIdentifier, OptionalVersionedTextDocumentIdentifier, TextDocumentItem, MarkupKind, MarkupContent, CompletionItemKind, InsertTextFormat, CompletionItemTag, InsertReplaceEdit, InsertTextMode, CompletionItemLabelDetails, CompletionItem, CompletionList, MarkedString, Hover, ParameterInformation, SignatureInformation, DocumentHighlightKind, DocumentHighlight, SymbolKind, SymbolTag, SymbolInformation, WorkspaceSymbol, DocumentSymbol, CodeActionKind, CodeActionTriggerKind, CodeActionContext, CodeAction, CodeLens, FormattingOptions, DocumentLink, SelectionRange, SemanticTokenTypes, SemanticTokenModifiers, SemanticTokens, InlineValueText, InlineValueVariableLookup, InlineValueEvaluatableExpression, InlineValueContext, InlayHintKind, InlayHintLabelPart, InlayHint, StringValue, InlineCompletionItem, InlineCompletionList, InlineCompletionTriggerKind, SelectedCompletionInfo, InlineCompletionContext, WorkspaceFolder, EOL, TextDocument, FullTextDocument, Is;\nvar init_main = __esm({\n \"../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js\"() {\n \"use strict\";\n (function(DocumentUri2) {\n function is(value) {\n return typeof value === \"string\";\n }\n __name(is, \"is\");\n DocumentUri2.is = is;\n })(DocumentUri || (DocumentUri = {}));\n (function(URI3) {\n function is(value) {\n return typeof value === \"string\";\n }\n __name(is, \"is\");\n URI3.is = is;\n })(URI || (URI = {}));\n (function(integer2) {\n integer2.MIN_VALUE = -2147483648;\n integer2.MAX_VALUE = 2147483647;\n function is(value) {\n return typeof value === \"number\" && integer2.MIN_VALUE <= value && value <= integer2.MAX_VALUE;\n }\n __name(is, \"is\");\n integer2.is = is;\n })(integer || (integer = {}));\n (function(uinteger2) {\n uinteger2.MIN_VALUE = 0;\n uinteger2.MAX_VALUE = 2147483647;\n function is(value) {\n return typeof value === \"number\" && uinteger2.MIN_VALUE <= value && value <= uinteger2.MAX_VALUE;\n }\n __name(is, \"is\");\n uinteger2.is = is;\n })(uinteger || (uinteger = {}));\n (function(Position2) {\n function create(line, character) {\n if (line === Number.MAX_VALUE) {\n line = uinteger.MAX_VALUE;\n }\n if (character === Number.MAX_VALUE) {\n character = uinteger.MAX_VALUE;\n }\n return { line, character };\n }\n __name(create, \"create\");\n Position2.create = create;\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n __name(is, \"is\");\n Position2.is = is;\n })(Position || (Position = {}));\n (function(Range2) {\n function create(one, two, three, four) {\n if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {\n return { start: Position.create(one, two), end: Position.create(three, four) };\n } else if (Position.is(one) && Position.is(two)) {\n return { start: one, end: two };\n } else {\n throw new Error(`Range#create called with invalid arguments[${one}, ${two}, ${three}, ${four}]`);\n }\n }\n __name(create, \"create\");\n Range2.create = create;\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n __name(is, \"is\");\n Range2.is = is;\n })(Range || (Range = {}));\n (function(Location2) {\n function create(uri, range) {\n return { uri, range };\n }\n __name(create, \"create\");\n Location2.create = create;\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n }\n __name(is, \"is\");\n Location2.is = is;\n })(Location || (Location = {}));\n (function(LocationLink2) {\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return { targetUri, targetRange, targetSelectionRange, originSelectionRange };\n }\n __name(create, \"create\");\n LocationLink2.create = create;\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && Range.is(candidate.targetSelectionRange) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n __name(is, \"is\");\n LocationLink2.is = is;\n })(LocationLink || (LocationLink = {}));\n (function(Color2) {\n function create(red, green, blue, alpha) {\n return {\n red,\n green,\n blue,\n alpha\n };\n }\n __name(create, \"create\");\n Color2.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1);\n }\n __name(is, \"is\");\n Color2.is = is;\n })(Color || (Color = {}));\n (function(ColorInformation2) {\n function create(range, color) {\n return {\n range,\n color\n };\n }\n __name(create, \"create\");\n ColorInformation2.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color.is(candidate.color);\n }\n __name(is, \"is\");\n ColorInformation2.is = is;\n })(ColorInformation || (ColorInformation = {}));\n (function(ColorPresentation2) {\n function create(label, textEdit, additionalTextEdits) {\n return {\n label,\n textEdit,\n additionalTextEdits\n };\n }\n __name(create, \"create\");\n ColorPresentation2.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n __name(is, \"is\");\n ColorPresentation2.is = is;\n })(ColorPresentation || (ColorPresentation = {}));\n (function(FoldingRangeKind2) {\n FoldingRangeKind2.Comment = \"comment\";\n FoldingRangeKind2.Imports = \"imports\";\n FoldingRangeKind2.Region = \"region\";\n })(FoldingRangeKind || (FoldingRangeKind = {}));\n (function(FoldingRange2) {\n function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) {\n const result = {\n startLine,\n endLine\n };\n if (Is.defined(startCharacter)) {\n result.startCharacter = startCharacter;\n }\n if (Is.defined(endCharacter)) {\n result.endCharacter = endCharacter;\n }\n if (Is.defined(kind)) {\n result.kind = kind;\n }\n if (Is.defined(collapsedText)) {\n result.collapsedText = collapsedText;\n }\n return result;\n }\n __name(create, \"create\");\n FoldingRange2.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n __name(is, \"is\");\n FoldingRange2.is = is;\n })(FoldingRange || (FoldingRange = {}));\n (function(DiagnosticRelatedInformation2) {\n function create(location, message) {\n return {\n location,\n message\n };\n }\n __name(create, \"create\");\n DiagnosticRelatedInformation2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n __name(is, \"is\");\n DiagnosticRelatedInformation2.is = is;\n })(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\n (function(DiagnosticSeverity2) {\n DiagnosticSeverity2.Error = 1;\n DiagnosticSeverity2.Warning = 2;\n DiagnosticSeverity2.Information = 3;\n DiagnosticSeverity2.Hint = 4;\n })(DiagnosticSeverity || (DiagnosticSeverity = {}));\n (function(DiagnosticTag2) {\n DiagnosticTag2.Unnecessary = 1;\n DiagnosticTag2.Deprecated = 2;\n })(DiagnosticTag || (DiagnosticTag = {}));\n (function(CodeDescription2) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.href);\n }\n __name(is, \"is\");\n CodeDescription2.is = is;\n })(CodeDescription || (CodeDescription = {}));\n (function(Diagnostic2) {\n function create(range, message, severity, code, source, relatedInformation) {\n let result = { range, message };\n if (Is.defined(severity)) {\n result.severity = severity;\n }\n if (Is.defined(code)) {\n result.code = code;\n }\n if (Is.defined(source)) {\n result.source = source;\n }\n if (Is.defined(relatedInformation)) {\n result.relatedInformation = relatedInformation;\n }\n return result;\n }\n __name(create, \"create\");\n Diagnostic2.create = create;\n function is(value) {\n var _a;\n let candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n __name(is, \"is\");\n Diagnostic2.is = is;\n })(Diagnostic || (Diagnostic = {}));\n (function(Command2) {\n function create(title, command, ...args) {\n let result = { title, command };\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n return result;\n }\n __name(create, \"create\");\n Command2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n __name(is, \"is\");\n Command2.is = is;\n })(Command || (Command = {}));\n (function(TextEdit2) {\n function replace(range, newText) {\n return { range, newText };\n }\n __name(replace, \"replace\");\n TextEdit2.replace = replace;\n function insert(position, newText) {\n return { range: { start: position, end: position }, newText };\n }\n __name(insert, \"insert\");\n TextEdit2.insert = insert;\n function del(range) {\n return { range, newText: \"\" };\n }\n __name(del, \"del\");\n TextEdit2.del = del;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range);\n }\n __name(is, \"is\");\n TextEdit2.is = is;\n })(TextEdit || (TextEdit = {}));\n (function(ChangeAnnotation2) {\n function create(label, needsConfirmation, description) {\n const result = { label };\n if (needsConfirmation !== void 0) {\n result.needsConfirmation = needsConfirmation;\n }\n if (description !== void 0) {\n result.description = description;\n }\n return result;\n }\n __name(create, \"create\");\n ChangeAnnotation2.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === void 0) && (Is.string(candidate.description) || candidate.description === void 0);\n }\n __name(is, \"is\");\n ChangeAnnotation2.is = is;\n })(ChangeAnnotation || (ChangeAnnotation = {}));\n (function(ChangeAnnotationIdentifier2) {\n function is(value) {\n const candidate = value;\n return Is.string(candidate);\n }\n __name(is, \"is\");\n ChangeAnnotationIdentifier2.is = is;\n })(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));\n (function(AnnotatedTextEdit2) {\n function replace(range, newText, annotation) {\n return { range, newText, annotationId: annotation };\n }\n __name(replace, \"replace\");\n AnnotatedTextEdit2.replace = replace;\n function insert(position, newText, annotation) {\n return { range: { start: position, end: position }, newText, annotationId: annotation };\n }\n __name(insert, \"insert\");\n AnnotatedTextEdit2.insert = insert;\n function del(range, annotation) {\n return { range, newText: \"\", annotationId: annotation };\n }\n __name(del, \"del\");\n AnnotatedTextEdit2.del = del;\n function is(value) {\n const candidate = value;\n return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n __name(is, \"is\");\n AnnotatedTextEdit2.is = is;\n })(AnnotatedTextEdit || (AnnotatedTextEdit = {}));\n (function(TextDocumentEdit2) {\n function create(textDocument, edits) {\n return { textDocument, edits };\n }\n __name(create, \"create\");\n TextDocumentEdit2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits);\n }\n __name(is, \"is\");\n TextDocumentEdit2.is = is;\n })(TextDocumentEdit || (TextDocumentEdit = {}));\n (function(CreateFile2) {\n function create(uri, options, annotation) {\n let result = {\n kind: \"create\",\n uri\n };\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n __name(create, \"create\");\n CreateFile2.create = create;\n function is(value) {\n let candidate = value;\n return candidate && candidate.kind === \"create\" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n __name(is, \"is\");\n CreateFile2.is = is;\n })(CreateFile || (CreateFile = {}));\n (function(RenameFile2) {\n function create(oldUri, newUri, options, annotation) {\n let result = {\n kind: \"rename\",\n oldUri,\n newUri\n };\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n __name(create, \"create\");\n RenameFile2.create = create;\n function is(value) {\n let candidate = value;\n return candidate && candidate.kind === \"rename\" && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n __name(is, \"is\");\n RenameFile2.is = is;\n })(RenameFile || (RenameFile = {}));\n (function(DeleteFile2) {\n function create(uri, options, annotation) {\n let result = {\n kind: \"delete\",\n uri\n };\n if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n __name(create, \"create\");\n DeleteFile2.create = create;\n function is(value) {\n let candidate = value;\n return candidate && candidate.kind === \"delete\" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n __name(is, \"is\");\n DeleteFile2.is = is;\n })(DeleteFile || (DeleteFile = {}));\n (function(WorkspaceEdit2) {\n function is(value) {\n let candidate = value;\n return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every((change) => {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n } else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n __name(is, \"is\");\n WorkspaceEdit2.is = is;\n })(WorkspaceEdit || (WorkspaceEdit = {}));\n TextEditChangeImpl = class {\n static {\n __name(this, \"TextEditChangeImpl\");\n }\n constructor(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n insert(position, newText, annotation) {\n let edit;\n let id;\n if (annotation === void 0) {\n edit = TextEdit.insert(position, newText);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.insert(position, newText, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n }\n replace(range, newText, annotation) {\n let edit;\n let id;\n if (annotation === void 0) {\n edit = TextEdit.replace(range, newText);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range, newText, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.replace(range, newText, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n }\n delete(range, annotation) {\n let edit;\n let id;\n if (annotation === void 0) {\n edit = TextEdit.del(range);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.del(range, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n }\n add(edit) {\n this.edits.push(edit);\n }\n all() {\n return this.edits;\n }\n clear() {\n this.edits.splice(0, this.edits.length);\n }\n assertChangeAnnotations(value) {\n if (value === void 0) {\n throw new Error(`Text edit change is not configured to manage change annotations.`);\n }\n }\n };\n ChangeAnnotations = class {\n static {\n __name(this, \"ChangeAnnotations\");\n }\n constructor(annotations) {\n this._annotations = annotations === void 0 ? /* @__PURE__ */ Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n all() {\n return this._annotations;\n }\n get size() {\n return this._size;\n }\n manage(idOrAnnotation, annotation) {\n let id;\n if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n id = idOrAnnotation;\n } else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n if (this._annotations[id] !== void 0) {\n throw new Error(`Id ${id} is already in use.`);\n }\n if (annotation === void 0) {\n throw new Error(`No annotation provided for id ${id}`);\n }\n this._annotations[id] = annotation;\n this._size++;\n return id;\n }\n nextId() {\n this._counter++;\n return this._counter.toString();\n }\n };\n WorkspaceChange = class {\n static {\n __name(this, \"WorkspaceChange\");\n }\n constructor(workspaceEdit) {\n this._textEditChanges = /* @__PURE__ */ Object.create(null);\n if (workspaceEdit !== void 0) {\n this._workspaceEdit = workspaceEdit;\n if (workspaceEdit.documentChanges) {\n this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);\n workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n workspaceEdit.documentChanges.forEach((change) => {\n if (TextDocumentEdit.is(change)) {\n const textEditChange = new TextEditChangeImpl(change.edits, this._changeAnnotations);\n this._textEditChanges[change.textDocument.uri] = textEditChange;\n }\n });\n } else if (workspaceEdit.changes) {\n Object.keys(workspaceEdit.changes).forEach((key) => {\n const textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n this._textEditChanges[key] = textEditChange;\n });\n }\n } else {\n this._workspaceEdit = {};\n }\n }\n /**\n * Returns the underlying {@link WorkspaceEdit} literal\n * use to be returned from a workspace edit operation like rename.\n */\n get edit() {\n this.initDocumentChanges();\n if (this._changeAnnotations !== void 0) {\n if (this._changeAnnotations.size === 0) {\n this._workspaceEdit.changeAnnotations = void 0;\n } else {\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n return this._workspaceEdit;\n }\n getTextEditChange(key) {\n if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n const textDocument = { uri: key.uri, version: key.version };\n let result = this._textEditChanges[textDocument.uri];\n if (!result) {\n const edits = [];\n const textDocumentEdit = {\n textDocument,\n edits\n };\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\n result = new TextEditChangeImpl(edits, this._changeAnnotations);\n this._textEditChanges[textDocument.uri] = result;\n }\n return result;\n } else {\n this.initChanges();\n if (this._workspaceEdit.changes === void 0) {\n throw new Error(\"Workspace edit is not configured for normal text edit changes.\");\n }\n let result = this._textEditChanges[key];\n if (!result) {\n let edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n return result;\n }\n }\n initDocumentChanges() {\n if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {\n this._changeAnnotations = new ChangeAnnotations();\n this._workspaceEdit.documentChanges = [];\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n initChanges() {\n if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {\n this._workspaceEdit.changes = /* @__PURE__ */ Object.create(null);\n }\n }\n createFile(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n let operation;\n let id;\n if (annotation === void 0) {\n operation = CreateFile.create(uri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = CreateFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n }\n renameFile(oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n let operation;\n let id;\n if (annotation === void 0) {\n operation = RenameFile.create(oldUri, newUri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = RenameFile.create(oldUri, newUri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n }\n deleteFile(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n let operation;\n let id;\n if (annotation === void 0) {\n operation = DeleteFile.create(uri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = DeleteFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n }\n };\n (function(TextDocumentIdentifier2) {\n function create(uri) {\n return { uri };\n }\n __name(create, \"create\");\n TextDocumentIdentifier2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n __name(is, \"is\");\n TextDocumentIdentifier2.is = is;\n })(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\n (function(VersionedTextDocumentIdentifier2) {\n function create(uri, version) {\n return { uri, version };\n }\n __name(create, \"create\");\n VersionedTextDocumentIdentifier2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n __name(is, \"is\");\n VersionedTextDocumentIdentifier2.is = is;\n })(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\n (function(OptionalVersionedTextDocumentIdentifier2) {\n function create(uri, version) {\n return { uri, version };\n }\n __name(create, \"create\");\n OptionalVersionedTextDocumentIdentifier2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));\n }\n __name(is, \"is\");\n OptionalVersionedTextDocumentIdentifier2.is = is;\n })(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));\n (function(TextDocumentItem2) {\n function create(uri, languageId, version, text) {\n return { uri, languageId, version, text };\n }\n __name(create, \"create\");\n TextDocumentItem2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);\n }\n __name(is, \"is\");\n TextDocumentItem2.is = is;\n })(TextDocumentItem || (TextDocumentItem = {}));\n (function(MarkupKind2) {\n MarkupKind2.PlainText = \"plaintext\";\n MarkupKind2.Markdown = \"markdown\";\n function is(value) {\n const candidate = value;\n return candidate === MarkupKind2.PlainText || candidate === MarkupKind2.Markdown;\n }\n __name(is, \"is\");\n MarkupKind2.is = is;\n })(MarkupKind || (MarkupKind = {}));\n (function(MarkupContent2) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n __name(is, \"is\");\n MarkupContent2.is = is;\n })(MarkupContent || (MarkupContent = {}));\n (function(CompletionItemKind2) {\n CompletionItemKind2.Text = 1;\n CompletionItemKind2.Method = 2;\n CompletionItemKind2.Function = 3;\n CompletionItemKind2.Constructor = 4;\n CompletionItemKind2.Field = 5;\n CompletionItemKind2.Variable = 6;\n CompletionItemKind2.Class = 7;\n CompletionItemKind2.Interface = 8;\n CompletionItemKind2.Module = 9;\n CompletionItemKind2.Property = 10;\n CompletionItemKind2.Unit = 11;\n CompletionItemKind2.Value = 12;\n CompletionItemKind2.Enum = 13;\n CompletionItemKind2.Keyword = 14;\n CompletionItemKind2.Snippet = 15;\n CompletionItemKind2.Color = 16;\n CompletionItemKind2.File = 17;\n CompletionItemKind2.Reference = 18;\n CompletionItemKind2.Folder = 19;\n CompletionItemKind2.EnumMember = 20;\n CompletionItemKind2.Constant = 21;\n CompletionItemKind2.Struct = 22;\n CompletionItemKind2.Event = 23;\n CompletionItemKind2.Operator = 24;\n CompletionItemKind2.TypeParameter = 25;\n })(CompletionItemKind || (CompletionItemKind = {}));\n (function(InsertTextFormat2) {\n InsertTextFormat2.PlainText = 1;\n InsertTextFormat2.Snippet = 2;\n })(InsertTextFormat || (InsertTextFormat = {}));\n (function(CompletionItemTag2) {\n CompletionItemTag2.Deprecated = 1;\n })(CompletionItemTag || (CompletionItemTag = {}));\n (function(InsertReplaceEdit2) {\n function create(newText, insert, replace) {\n return { newText, insert, replace };\n }\n __name(create, \"create\");\n InsertReplaceEdit2.create = create;\n function is(value) {\n const candidate = value;\n return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n }\n __name(is, \"is\");\n InsertReplaceEdit2.is = is;\n })(InsertReplaceEdit || (InsertReplaceEdit = {}));\n (function(InsertTextMode2) {\n InsertTextMode2.asIs = 1;\n InsertTextMode2.adjustIndentation = 2;\n })(InsertTextMode || (InsertTextMode = {}));\n (function(CompletionItemLabelDetails2) {\n function is(value) {\n const candidate = value;\n return candidate && (Is.string(candidate.detail) || candidate.detail === void 0) && (Is.string(candidate.description) || candidate.description === void 0);\n }\n __name(is, \"is\");\n CompletionItemLabelDetails2.is = is;\n })(CompletionItemLabelDetails || (CompletionItemLabelDetails = {}));\n (function(CompletionItem2) {\n function create(label) {\n return { label };\n }\n __name(create, \"create\");\n CompletionItem2.create = create;\n })(CompletionItem || (CompletionItem = {}));\n (function(CompletionList2) {\n function create(items, isIncomplete) {\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\n }\n __name(create, \"create\");\n CompletionList2.create = create;\n })(CompletionList || (CompletionList = {}));\n (function(MarkedString2) {\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, \"\\\\$&\");\n }\n __name(fromPlainText, \"fromPlainText\");\n MarkedString2.fromPlainText = fromPlainText;\n function is(value) {\n const candidate = value;\n return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value);\n }\n __name(is, \"is\");\n MarkedString2.is = is;\n })(MarkedString || (MarkedString = {}));\n (function(Hover2) {\n function is(value) {\n let candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));\n }\n __name(is, \"is\");\n Hover2.is = is;\n })(Hover || (Hover = {}));\n (function(ParameterInformation2) {\n function create(label, documentation) {\n return documentation ? { label, documentation } : { label };\n }\n __name(create, \"create\");\n ParameterInformation2.create = create;\n })(ParameterInformation || (ParameterInformation = {}));\n (function(SignatureInformation2) {\n function create(label, documentation, ...parameters) {\n let result = { label };\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n } else {\n result.parameters = [];\n }\n return result;\n }\n __name(create, \"create\");\n SignatureInformation2.create = create;\n })(SignatureInformation || (SignatureInformation = {}));\n (function(DocumentHighlightKind2) {\n DocumentHighlightKind2.Text = 1;\n DocumentHighlightKind2.Read = 2;\n DocumentHighlightKind2.Write = 3;\n })(DocumentHighlightKind || (DocumentHighlightKind = {}));\n (function(DocumentHighlight2) {\n function create(range, kind) {\n let result = { range };\n if (Is.number(kind)) {\n result.kind = kind;\n }\n return result;\n }\n __name(create, \"create\");\n DocumentHighlight2.create = create;\n })(DocumentHighlight || (DocumentHighlight = {}));\n (function(SymbolKind2) {\n SymbolKind2.File = 1;\n SymbolKind2.Module = 2;\n SymbolKind2.Namespace = 3;\n SymbolKind2.Package = 4;\n SymbolKind2.Class = 5;\n SymbolKind2.Method = 6;\n SymbolKind2.Property = 7;\n SymbolKind2.Field = 8;\n SymbolKind2.Constructor = 9;\n SymbolKind2.Enum = 10;\n SymbolKind2.Interface = 11;\n SymbolKind2.Function = 12;\n SymbolKind2.Variable = 13;\n SymbolKind2.Constant = 14;\n SymbolKind2.String = 15;\n SymbolKind2.Number = 16;\n SymbolKind2.Boolean = 17;\n SymbolKind2.Array = 18;\n SymbolKind2.Object = 19;\n SymbolKind2.Key = 20;\n SymbolKind2.Null = 21;\n SymbolKind2.EnumMember = 22;\n SymbolKind2.Struct = 23;\n SymbolKind2.Event = 24;\n SymbolKind2.Operator = 25;\n SymbolKind2.TypeParameter = 26;\n })(SymbolKind || (SymbolKind = {}));\n (function(SymbolTag2) {\n SymbolTag2.Deprecated = 1;\n })(SymbolTag || (SymbolTag = {}));\n (function(SymbolInformation2) {\n function create(name, kind, range, uri, containerName) {\n let result = {\n name,\n kind,\n location: { uri, range }\n };\n if (containerName) {\n result.containerName = containerName;\n }\n return result;\n }\n __name(create, \"create\");\n SymbolInformation2.create = create;\n })(SymbolInformation || (SymbolInformation = {}));\n (function(WorkspaceSymbol2) {\n function create(name, kind, uri, range) {\n return range !== void 0 ? { name, kind, location: { uri, range } } : { name, kind, location: { uri } };\n }\n __name(create, \"create\");\n WorkspaceSymbol2.create = create;\n })(WorkspaceSymbol || (WorkspaceSymbol = {}));\n (function(DocumentSymbol2) {\n function create(name, detail, kind, range, selectionRange, children) {\n let result = {\n name,\n detail,\n kind,\n range,\n selectionRange\n };\n if (children !== void 0) {\n result.children = children;\n }\n return result;\n }\n __name(create, \"create\");\n DocumentSymbol2.create = create;\n function is(value) {\n let candidate = value;\n return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children)) && (candidate.tags === void 0 || Array.isArray(candidate.tags));\n }\n __name(is, \"is\");\n DocumentSymbol2.is = is;\n })(DocumentSymbol || (DocumentSymbol = {}));\n (function(CodeActionKind2) {\n CodeActionKind2.Empty = \"\";\n CodeActionKind2.QuickFix = \"quickfix\";\n CodeActionKind2.Refactor = \"refactor\";\n CodeActionKind2.RefactorExtract = \"refactor.extract\";\n CodeActionKind2.RefactorInline = \"refactor.inline\";\n CodeActionKind2.RefactorRewrite = \"refactor.rewrite\";\n CodeActionKind2.Source = \"source\";\n CodeActionKind2.SourceOrganizeImports = \"source.organizeImports\";\n CodeActionKind2.SourceFixAll = \"source.fixAll\";\n })(CodeActionKind || (CodeActionKind = {}));\n (function(CodeActionTriggerKind2) {\n CodeActionTriggerKind2.Invoked = 1;\n CodeActionTriggerKind2.Automatic = 2;\n })(CodeActionTriggerKind || (CodeActionTriggerKind = {}));\n (function(CodeActionContext2) {\n function create(diagnostics, only, triggerKind) {\n let result = { diagnostics };\n if (only !== void 0 && only !== null) {\n result.only = only;\n }\n if (triggerKind !== void 0 && triggerKind !== null) {\n result.triggerKind = triggerKind;\n }\n return result;\n }\n __name(create, \"create\");\n CodeActionContext2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string)) && (candidate.triggerKind === void 0 || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic);\n }\n __name(is, \"is\");\n CodeActionContext2.is = is;\n })(CodeActionContext || (CodeActionContext = {}));\n (function(CodeAction2) {\n function create(title, kindOrCommandOrEdit, kind) {\n let result = { title };\n let checkKind = true;\n if (typeof kindOrCommandOrEdit === \"string\") {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n } else if (Command.is(kindOrCommandOrEdit)) {\n result.command = kindOrCommandOrEdit;\n } else {\n result.edit = kindOrCommandOrEdit;\n }\n if (checkKind && kind !== void 0) {\n result.kind = kind;\n }\n return result;\n }\n __name(create, \"create\");\n CodeAction2.create = create;\n function is(value) {\n let candidate = value;\n return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));\n }\n __name(is, \"is\");\n CodeAction2.is = is;\n })(CodeAction || (CodeAction = {}));\n (function(CodeLens2) {\n function create(range, data) {\n let result = { range };\n if (Is.defined(data)) {\n result.data = data;\n }\n return result;\n }\n __name(create, \"create\");\n CodeLens2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n }\n __name(is, \"is\");\n CodeLens2.is = is;\n })(CodeLens || (CodeLens = {}));\n (function(FormattingOptions2) {\n function create(tabSize, insertSpaces) {\n return { tabSize, insertSpaces };\n }\n __name(create, \"create\");\n FormattingOptions2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n __name(is, \"is\");\n FormattingOptions2.is = is;\n })(FormattingOptions || (FormattingOptions = {}));\n (function(DocumentLink2) {\n function create(range, target, data) {\n return { range, target, data };\n }\n __name(create, \"create\");\n DocumentLink2.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n }\n __name(is, \"is\");\n DocumentLink2.is = is;\n })(DocumentLink || (DocumentLink = {}));\n (function(SelectionRange2) {\n function create(range, parent) {\n return { range, parent };\n }\n __name(create, \"create\");\n SelectionRange2.create = create;\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent));\n }\n __name(is, \"is\");\n SelectionRange2.is = is;\n })(SelectionRange || (SelectionRange = {}));\n (function(SemanticTokenTypes2) {\n SemanticTokenTypes2[\"namespace\"] = \"namespace\";\n SemanticTokenTypes2[\"type\"] = \"type\";\n SemanticTokenTypes2[\"class\"] = \"class\";\n SemanticTokenTypes2[\"enum\"] = \"enum\";\n SemanticTokenTypes2[\"interface\"] = \"interface\";\n SemanticTokenTypes2[\"struct\"] = \"struct\";\n SemanticTokenTypes2[\"typeParameter\"] = \"typeParameter\";\n SemanticTokenTypes2[\"parameter\"] = \"parameter\";\n SemanticTokenTypes2[\"variable\"] = \"variable\";\n SemanticTokenTypes2[\"property\"] = \"property\";\n SemanticTokenTypes2[\"enumMember\"] = \"enumMember\";\n SemanticTokenTypes2[\"event\"] = \"event\";\n SemanticTokenTypes2[\"function\"] = \"function\";\n SemanticTokenTypes2[\"method\"] = \"method\";\n SemanticTokenTypes2[\"macro\"] = \"macro\";\n SemanticTokenTypes2[\"keyword\"] = \"keyword\";\n SemanticTokenTypes2[\"modifier\"] = \"modifier\";\n SemanticTokenTypes2[\"comment\"] = \"comment\";\n SemanticTokenTypes2[\"string\"] = \"string\";\n SemanticTokenTypes2[\"number\"] = \"number\";\n SemanticTokenTypes2[\"regexp\"] = \"regexp\";\n SemanticTokenTypes2[\"operator\"] = \"operator\";\n SemanticTokenTypes2[\"decorator\"] = \"decorator\";\n })(SemanticTokenTypes || (SemanticTokenTypes = {}));\n (function(SemanticTokenModifiers2) {\n SemanticTokenModifiers2[\"declaration\"] = \"declaration\";\n SemanticTokenModifiers2[\"definition\"] = \"definition\";\n SemanticTokenModifiers2[\"readonly\"] = \"readonly\";\n SemanticTokenModifiers2[\"static\"] = \"static\";\n SemanticTokenModifiers2[\"deprecated\"] = \"deprecated\";\n SemanticTokenModifiers2[\"abstract\"] = \"abstract\";\n SemanticTokenModifiers2[\"async\"] = \"async\";\n SemanticTokenModifiers2[\"modification\"] = \"modification\";\n SemanticTokenModifiers2[\"documentation\"] = \"documentation\";\n SemanticTokenModifiers2[\"defaultLibrary\"] = \"defaultLibrary\";\n })(SemanticTokenModifiers || (SemanticTokenModifiers = {}));\n (function(SemanticTokens2) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (candidate.resultId === void 0 || typeof candidate.resultId === \"string\") && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === \"number\");\n }\n __name(is, \"is\");\n SemanticTokens2.is = is;\n })(SemanticTokens || (SemanticTokens = {}));\n (function(InlineValueText2) {\n function create(range, text) {\n return { range, text };\n }\n __name(create, \"create\");\n InlineValueText2.create = create;\n function is(value) {\n const candidate = value;\n return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n }\n __name(is, \"is\");\n InlineValueText2.is = is;\n })(InlineValueText || (InlineValueText = {}));\n (function(InlineValueVariableLookup2) {\n function create(range, variableName, caseSensitiveLookup) {\n return { range, variableName, caseSensitiveLookup };\n }\n __name(create, \"create\");\n InlineValueVariableLookup2.create = create;\n function is(value) {\n const candidate = value;\n return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup) && (Is.string(candidate.variableName) || candidate.variableName === void 0);\n }\n __name(is, \"is\");\n InlineValueVariableLookup2.is = is;\n })(InlineValueVariableLookup || (InlineValueVariableLookup = {}));\n (function(InlineValueEvaluatableExpression2) {\n function create(range, expression) {\n return { range, expression };\n }\n __name(create, \"create\");\n InlineValueEvaluatableExpression2.create = create;\n function is(value) {\n const candidate = value;\n return candidate !== void 0 && candidate !== null && Range.is(candidate.range) && (Is.string(candidate.expression) || candidate.expression === void 0);\n }\n __name(is, \"is\");\n InlineValueEvaluatableExpression2.is = is;\n })(InlineValueEvaluatableExpression || (InlineValueEvaluatableExpression = {}));\n (function(InlineValueContext2) {\n function create(frameId, stoppedLocation) {\n return { frameId, stoppedLocation };\n }\n __name(create, \"create\");\n InlineValueContext2.create = create;\n function is(value) {\n const candidate = value;\n return Is.defined(candidate) && Range.is(value.stoppedLocation);\n }\n __name(is, \"is\");\n InlineValueContext2.is = is;\n })(InlineValueContext || (InlineValueContext = {}));\n (function(InlayHintKind2) {\n InlayHintKind2.Type = 1;\n InlayHintKind2.Parameter = 2;\n function is(value) {\n return value === 1 || value === 2;\n }\n __name(is, \"is\");\n InlayHintKind2.is = is;\n })(InlayHintKind || (InlayHintKind = {}));\n (function(InlayHintLabelPart2) {\n function create(value) {\n return { value };\n }\n __name(create, \"create\");\n InlayHintLabelPart2.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (candidate.tooltip === void 0 || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.location === void 0 || Location.is(candidate.location)) && (candidate.command === void 0 || Command.is(candidate.command));\n }\n __name(is, \"is\");\n InlayHintLabelPart2.is = is;\n })(InlayHintLabelPart || (InlayHintLabelPart = {}));\n (function(InlayHint2) {\n function create(position, label, kind) {\n const result = { position, label };\n if (kind !== void 0) {\n result.kind = kind;\n }\n return result;\n }\n __name(create, \"create\");\n InlayHint2.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.position) && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is)) && (candidate.kind === void 0 || InlayHintKind.is(candidate.kind)) && candidate.textEdits === void 0 || Is.typedArray(candidate.textEdits, TextEdit.is) && (candidate.tooltip === void 0 || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.paddingLeft === void 0 || Is.boolean(candidate.paddingLeft)) && (candidate.paddingRight === void 0 || Is.boolean(candidate.paddingRight));\n }\n __name(is, \"is\");\n InlayHint2.is = is;\n })(InlayHint || (InlayHint = {}));\n (function(StringValue2) {\n function createSnippet(value) {\n return { kind: \"snippet\", value };\n }\n __name(createSnippet, \"createSnippet\");\n StringValue2.createSnippet = createSnippet;\n })(StringValue || (StringValue = {}));\n (function(InlineCompletionItem2) {\n function create(insertText, filterText, range, command) {\n return { insertText, filterText, range, command };\n }\n __name(create, \"create\");\n InlineCompletionItem2.create = create;\n })(InlineCompletionItem || (InlineCompletionItem = {}));\n (function(InlineCompletionList2) {\n function create(items) {\n return { items };\n }\n __name(create, \"create\");\n InlineCompletionList2.create = create;\n })(InlineCompletionList || (InlineCompletionList = {}));\n (function(InlineCompletionTriggerKind2) {\n InlineCompletionTriggerKind2.Invoked = 0;\n InlineCompletionTriggerKind2.Automatic = 1;\n })(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\n (function(SelectedCompletionInfo2) {\n function create(range, text) {\n return { range, text };\n }\n __name(create, \"create\");\n SelectedCompletionInfo2.create = create;\n })(SelectedCompletionInfo || (SelectedCompletionInfo = {}));\n (function(InlineCompletionContext2) {\n function create(triggerKind, selectedCompletionInfo) {\n return { triggerKind, selectedCompletionInfo };\n }\n __name(create, \"create\");\n InlineCompletionContext2.create = create;\n })(InlineCompletionContext || (InlineCompletionContext = {}));\n (function(WorkspaceFolder2) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n }\n __name(is, \"is\");\n WorkspaceFolder2.is = is;\n })(WorkspaceFolder || (WorkspaceFolder = {}));\n EOL = [\"\\n\", \"\\r\\n\", \"\\r\"];\n (function(TextDocument3) {\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n __name(create, \"create\");\n TextDocument3.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n __name(is, \"is\");\n TextDocument3.is = is;\n function applyEdits(document, edits) {\n let text = document.getText();\n let sortedEdits = mergeSort2(edits, (a, b) => {\n let diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = text.length;\n for (let i = sortedEdits.length - 1; i >= 0; i--) {\n let e = sortedEdits[i];\n let startOffset = document.offsetAt(e.range.start);\n let endOffset = document.offsetAt(e.range.end);\n if (endOffset <= lastModifiedOffset) {\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n } else {\n throw new Error(\"Overlapping edit\");\n }\n lastModifiedOffset = startOffset;\n }\n return text;\n }\n __name(applyEdits, \"applyEdits\");\n TextDocument3.applyEdits = applyEdits;\n function mergeSort2(data, compare) {\n if (data.length <= 1) {\n return data;\n }\n const p = data.length / 2 | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort2(left, compare);\n mergeSort2(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n let ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n data[i++] = left[leftIdx++];\n } else {\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n }\n __name(mergeSort2, \"mergeSort\");\n })(TextDocument || (TextDocument = {}));\n FullTextDocument = class {\n static {\n __name(this, \"FullTextDocument\");\n }\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = void 0;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n let start = this.offsetAt(range.start);\n let end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = void 0;\n }\n getLineOffsets() {\n if (this._lineOffsets === void 0) {\n let lineOffsets = [];\n let text = this._content;\n let isLineStart = true;\n for (let i = 0; i < text.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n let ch = text.charAt(i);\n isLineStart = ch === \"\\r\" || ch === \"\\n\";\n if (ch === \"\\r\" && i + 1 < text.length && text.charAt(i + 1) === \"\\n\") {\n i++;\n }\n }\n if (isLineStart && text.length > 0) {\n lineOffsets.push(text.length);\n }\n this._lineOffsets = lineOffsets;\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n let lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return Position.create(0, offset);\n }\n while (low < high) {\n let mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n let line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n }\n offsetAt(position) {\n let lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n } else if (position.line < 0) {\n return 0;\n }\n let lineOffset = lineOffsets[position.line];\n let nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n };\n (function(Is2) {\n const toString4 = Object.prototype.toString;\n function defined(value) {\n return typeof value !== \"undefined\";\n }\n __name(defined, \"defined\");\n Is2.defined = defined;\n function undefined2(value) {\n return typeof value === \"undefined\";\n }\n __name(undefined2, \"undefined\");\n Is2.undefined = undefined2;\n function boolean(value) {\n return value === true || value === false;\n }\n __name(boolean, \"boolean\");\n Is2.boolean = boolean;\n function string(value) {\n return toString4.call(value) === \"[object String]\";\n }\n __name(string, \"string\");\n Is2.string = string;\n function number(value) {\n return toString4.call(value) === \"[object Number]\";\n }\n __name(number, \"number\");\n Is2.number = number;\n function numberRange(value, min2, max) {\n return toString4.call(value) === \"[object Number]\" && min2 <= value && value <= max;\n }\n __name(numberRange, \"numberRange\");\n Is2.numberRange = numberRange;\n function integer2(value) {\n return toString4.call(value) === \"[object Number]\" && -2147483648 <= value && value <= 2147483647;\n }\n __name(integer2, \"integer\");\n Is2.integer = integer2;\n function uinteger2(value) {\n return toString4.call(value) === \"[object Number]\" && 0 <= value && value <= 2147483647;\n }\n __name(uinteger2, \"uinteger\");\n Is2.uinteger = uinteger2;\n function func(value) {\n return toString4.call(value) === \"[object Function]\";\n }\n __name(func, \"func\");\n Is2.func = func;\n function objectLiteral(value) {\n return value !== null && typeof value === \"object\";\n }\n __name(objectLiteral, \"objectLiteral\");\n Is2.objectLiteral = objectLiteral;\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n __name(typedArray, \"typedArray\");\n Is2.typedArray = typedArray;\n })(Is || (Is = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js\nvar require_ral = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var _ral;\n function RAL() {\n if (_ral === void 0) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n }\n __name(RAL, \"RAL\");\n (function(RAL2) {\n function install(ral) {\n if (ral === void 0) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n __name(install, \"install\");\n RAL2.install = install;\n })(RAL || (RAL = {}));\n exports2.default = RAL;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js\nvar require_is = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0;\n function boolean(value) {\n return value === true || value === false;\n }\n __name(boolean, \"boolean\");\n exports2.boolean = boolean;\n function string(value) {\n return typeof value === \"string\" || value instanceof String;\n }\n __name(string, \"string\");\n exports2.string = string;\n function number(value) {\n return typeof value === \"number\" || value instanceof Number;\n }\n __name(number, \"number\");\n exports2.number = number;\n function error(value) {\n return value instanceof Error;\n }\n __name(error, \"error\");\n exports2.error = error;\n function func(value) {\n return typeof value === \"function\";\n }\n __name(func, \"func\");\n exports2.func = func;\n function array(value) {\n return Array.isArray(value);\n }\n __name(array, \"array\");\n exports2.array = array;\n function stringArray(value) {\n return array(value) && value.every((elem) => string(elem));\n }\n __name(stringArray, \"stringArray\");\n exports2.stringArray = stringArray;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js\nvar require_events = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.Emitter = exports2.Event = void 0;\n var ral_1 = require_ral();\n var Event;\n (function(Event2) {\n const _disposable = { dispose() {\n } };\n Event2.None = function() {\n return _disposable;\n };\n })(Event || (exports2.Event = Event = {}));\n var CallbackList = class {\n static {\n __name(this, \"CallbackList\");\n }\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: /* @__PURE__ */ __name(() => this.remove(callback, context), \"dispose\") });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n } else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error(\"When adding a listener with a context, you should remove it with the same context\");\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n } catch (e) {\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = void 0;\n this._contexts = void 0;\n }\n };\n var Emitter3 = class _Emitter {\n static {\n __name(this, \"Emitter\");\n }\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: /* @__PURE__ */ __name(() => {\n if (!this._callbacks) {\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = _Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }, \"dispose\")\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = void 0;\n }\n }\n };\n exports2.Emitter = Emitter3;\n Emitter3._noop = function() {\n };\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js\nvar require_cancellation = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.CancellationTokenSource = exports2.CancellationToken = void 0;\n var ral_1 = require_ral();\n var Is2 = require_is();\n var events_1 = require_events();\n var CancellationToken11;\n (function(CancellationToken12) {\n CancellationToken12.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken12.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken12.None || candidate === CancellationToken12.Cancelled || Is2.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested);\n }\n __name(is, \"is\");\n CancellationToken12.is = is;\n })(CancellationToken11 || (exports2.CancellationToken = CancellationToken11 = {}));\n var shortcutEvent = Object.freeze(function(callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() {\n handle.dispose();\n } };\n });\n var MutableToken = class {\n static {\n __name(this, \"MutableToken\");\n }\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(void 0);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = void 0;\n }\n }\n };\n var CancellationTokenSource3 = class {\n static {\n __name(this, \"CancellationTokenSource\");\n }\n get token() {\n if (!this._token) {\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n this._token = CancellationToken11.Cancelled;\n } else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n this._token = CancellationToken11.None;\n } else if (this._token instanceof MutableToken) {\n this._token.dispose();\n }\n }\n };\n exports2.CancellationTokenSource = CancellationTokenSource3;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js\nvar require_messages = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.Message = exports2.NotificationType9 = exports2.NotificationType8 = exports2.NotificationType7 = exports2.NotificationType6 = exports2.NotificationType5 = exports2.NotificationType4 = exports2.NotificationType3 = exports2.NotificationType2 = exports2.NotificationType1 = exports2.NotificationType0 = exports2.NotificationType = exports2.RequestType9 = exports2.RequestType8 = exports2.RequestType7 = exports2.RequestType6 = exports2.RequestType5 = exports2.RequestType4 = exports2.RequestType3 = exports2.RequestType2 = exports2.RequestType1 = exports2.RequestType = exports2.RequestType0 = exports2.AbstractMessageSignature = exports2.ParameterStructures = exports2.ResponseError = exports2.ErrorCodes = void 0;\n var is = require_is();\n var ErrorCodes;\n (function(ErrorCodes2) {\n ErrorCodes2.ParseError = -32700;\n ErrorCodes2.InvalidRequest = -32600;\n ErrorCodes2.MethodNotFound = -32601;\n ErrorCodes2.InvalidParams = -32602;\n ErrorCodes2.InternalError = -32603;\n ErrorCodes2.jsonrpcReservedErrorRangeStart = -32099;\n ErrorCodes2.serverErrorStart = -32099;\n ErrorCodes2.MessageWriteError = -32099;\n ErrorCodes2.MessageReadError = -32098;\n ErrorCodes2.PendingResponseRejected = -32097;\n ErrorCodes2.ConnectionInactive = -32096;\n ErrorCodes2.ServerNotInitialized = -32002;\n ErrorCodes2.UnknownErrorCode = -32001;\n ErrorCodes2.jsonrpcReservedErrorRangeEnd = -32e3;\n ErrorCodes2.serverErrorEnd = -32e3;\n })(ErrorCodes || (exports2.ErrorCodes = ErrorCodes = {}));\n var ResponseError2 = class _ResponseError extends Error {\n static {\n __name(this, \"ResponseError\");\n }\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, _ResponseError.prototype);\n }\n toJson() {\n const result = {\n code: this.code,\n message: this.message\n };\n if (this.data !== void 0) {\n result.data = this.data;\n }\n return result;\n }\n };\n exports2.ResponseError = ResponseError2;\n var ParameterStructures = class _ParameterStructures {\n static {\n __name(this, \"ParameterStructures\");\n }\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === _ParameterStructures.auto || value === _ParameterStructures.byName || value === _ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n };\n exports2.ParameterStructures = ParameterStructures;\n ParameterStructures.auto = new ParameterStructures(\"auto\");\n ParameterStructures.byPosition = new ParameterStructures(\"byPosition\");\n ParameterStructures.byName = new ParameterStructures(\"byName\");\n var AbstractMessageSignature = class {\n static {\n __name(this, \"AbstractMessageSignature\");\n }\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n };\n exports2.AbstractMessageSignature = AbstractMessageSignature;\n var RequestType0 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType0\");\n }\n constructor(method) {\n super(method, 0);\n }\n };\n exports2.RequestType0 = RequestType0;\n var RequestType = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType\");\n }\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n };\n exports2.RequestType = RequestType;\n var RequestType1 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType1\");\n }\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n };\n exports2.RequestType1 = RequestType1;\n var RequestType2 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType2\");\n }\n constructor(method) {\n super(method, 2);\n }\n };\n exports2.RequestType2 = RequestType2;\n var RequestType3 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType3\");\n }\n constructor(method) {\n super(method, 3);\n }\n };\n exports2.RequestType3 = RequestType3;\n var RequestType4 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType4\");\n }\n constructor(method) {\n super(method, 4);\n }\n };\n exports2.RequestType4 = RequestType4;\n var RequestType5 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType5\");\n }\n constructor(method) {\n super(method, 5);\n }\n };\n exports2.RequestType5 = RequestType5;\n var RequestType6 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType6\");\n }\n constructor(method) {\n super(method, 6);\n }\n };\n exports2.RequestType6 = RequestType6;\n var RequestType7 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType7\");\n }\n constructor(method) {\n super(method, 7);\n }\n };\n exports2.RequestType7 = RequestType7;\n var RequestType8 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType8\");\n }\n constructor(method) {\n super(method, 8);\n }\n };\n exports2.RequestType8 = RequestType8;\n var RequestType9 = class extends AbstractMessageSignature {\n static {\n __name(this, \"RequestType9\");\n }\n constructor(method) {\n super(method, 9);\n }\n };\n exports2.RequestType9 = RequestType9;\n var NotificationType = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType\");\n }\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n };\n exports2.NotificationType = NotificationType;\n var NotificationType0 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType0\");\n }\n constructor(method) {\n super(method, 0);\n }\n };\n exports2.NotificationType0 = NotificationType0;\n var NotificationType1 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType1\");\n }\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n };\n exports2.NotificationType1 = NotificationType1;\n var NotificationType2 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType2\");\n }\n constructor(method) {\n super(method, 2);\n }\n };\n exports2.NotificationType2 = NotificationType2;\n var NotificationType3 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType3\");\n }\n constructor(method) {\n super(method, 3);\n }\n };\n exports2.NotificationType3 = NotificationType3;\n var NotificationType4 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType4\");\n }\n constructor(method) {\n super(method, 4);\n }\n };\n exports2.NotificationType4 = NotificationType4;\n var NotificationType5 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType5\");\n }\n constructor(method) {\n super(method, 5);\n }\n };\n exports2.NotificationType5 = NotificationType5;\n var NotificationType6 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType6\");\n }\n constructor(method) {\n super(method, 6);\n }\n };\n exports2.NotificationType6 = NotificationType6;\n var NotificationType7 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType7\");\n }\n constructor(method) {\n super(method, 7);\n }\n };\n exports2.NotificationType7 = NotificationType7;\n var NotificationType8 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType8\");\n }\n constructor(method) {\n super(method, 8);\n }\n };\n exports2.NotificationType8 = NotificationType8;\n var NotificationType9 = class extends AbstractMessageSignature {\n static {\n __name(this, \"NotificationType9\");\n }\n constructor(method) {\n super(method, 9);\n }\n };\n exports2.NotificationType9 = NotificationType9;\n var Message;\n (function(Message2) {\n function isRequest(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n }\n __name(isRequest, \"isRequest\");\n Message2.isRequest = isRequest;\n function isNotification(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n }\n __name(isNotification, \"isNotification\");\n Message2.isNotification = isNotification;\n function isResponse(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n }\n __name(isResponse, \"isResponse\");\n Message2.isResponse = isResponse;\n })(Message || (exports2.Message = Message = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js\nvar require_linkedMap = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js\"(exports2) {\n \"use strict\";\n var _a;\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.LRUCache = exports2.LinkedMap = exports2.Touch = void 0;\n var Touch;\n (function(Touch2) {\n Touch2.None = 0;\n Touch2.First = 1;\n Touch2.AsOld = Touch2.First;\n Touch2.Last = 2;\n Touch2.AsNew = Touch2.Last;\n })(Touch || (exports2.Touch = Touch = {}));\n var LinkedMap = class {\n static {\n __name(this, \"LinkedMap\");\n }\n constructor() {\n this[_a] = \"LinkedMap\";\n this._map = /* @__PURE__ */ new Map();\n this._head = void 0;\n this._tail = void 0;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = void 0;\n this._tail = void 0;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = Touch.None) {\n const item = this._map.get(key);\n if (!item) {\n return void 0;\n }\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = Touch.None) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n } else {\n item = { key, value, next: void 0, previous: void 0 };\n switch (touch) {\n case Touch.None:\n this.addItemLast(item);\n break;\n case Touch.First:\n this.addItemFirst(item);\n break;\n case Touch.Last:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return void 0;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return void 0;\n }\n if (!this._head || !this._tail) {\n throw new Error(\"Invalid list\");\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n } else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: /* @__PURE__ */ __name(() => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n } else {\n return { value: void 0, done: true };\n }\n }, \"next\")\n };\n return iterator;\n }\n values() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: /* @__PURE__ */ __name(() => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n } else {\n return { value: void 0, done: true };\n }\n }, \"next\")\n };\n return iterator;\n }\n entries() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: /* @__PURE__ */ __name(() => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n } else {\n return { value: void 0, done: true };\n }\n }, \"next\")\n };\n return iterator;\n }\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = void 0;\n }\n this._state++;\n }\n addItemFirst(item) {\n if (!this._head && !this._tail) {\n this._tail = item;\n } else if (!this._head) {\n throw new Error(\"Invalid list\");\n } else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n if (!this._head && !this._tail) {\n this._head = item;\n } else if (!this._tail) {\n throw new Error(\"Invalid list\");\n } else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = void 0;\n this._tail = void 0;\n } else if (item === this._head) {\n if (!item.next) {\n throw new Error(\"Invalid list\");\n }\n item.next.previous = void 0;\n this._head = item.next;\n } else if (item === this._tail) {\n if (!item.previous) {\n throw new Error(\"Invalid list\");\n }\n item.previous.next = void 0;\n this._tail = item.previous;\n } else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error(\"Invalid list\");\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = void 0;\n item.previous = void 0;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error(\"Invalid list\");\n }\n if (touch !== Touch.First && touch !== Touch.Last) {\n return;\n }\n if (touch === Touch.First) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n if (item === this._tail) {\n previous.next = void 0;\n this._tail = previous;\n } else {\n next.previous = previous;\n previous.next = next;\n }\n item.previous = void 0;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n } else if (touch === Touch.Last) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n if (item === this._head) {\n next.previous = void 0;\n this._head = next;\n } else {\n next.previous = previous;\n previous.next = next;\n }\n item.next = void 0;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n };\n exports2.LinkedMap = LinkedMap;\n var LRUCache = class extends LinkedMap {\n static {\n __name(this, \"LRUCache\");\n }\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get ratio() {\n return this._ratio;\n }\n set ratio(ratio) {\n this._ratio = Math.min(Math.max(0, ratio), 1);\n this.checkTrim();\n }\n get(key, touch = Touch.AsNew) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, Touch.None);\n }\n set(key, value) {\n super.set(key, value, Touch.Last);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n };\n exports2.LRUCache = LRUCache;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js\nvar require_disposable = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.Disposable = void 0;\n var Disposable2;\n (function(Disposable3) {\n function create(func) {\n return {\n dispose: func\n };\n }\n __name(create, \"create\");\n Disposable3.create = create;\n })(Disposable2 || (exports2.Disposable = Disposable2 = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js\nvar require_sharedArrayCancellation = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.SharedArrayReceiverStrategy = exports2.SharedArraySenderStrategy = void 0;\n var cancellation_1 = require_cancellation();\n var CancellationState;\n (function(CancellationState2) {\n CancellationState2.Continue = 0;\n CancellationState2.Cancelled = 1;\n })(CancellationState || (CancellationState = {}));\n var SharedArraySenderStrategy = class {\n static {\n __name(this, \"SharedArraySenderStrategy\");\n }\n constructor() {\n this.buffers = /* @__PURE__ */ new Map();\n }\n enableCancellation(request) {\n if (request.id === null) {\n return;\n }\n const buffer = new SharedArrayBuffer(4);\n const data = new Int32Array(buffer, 0, 1);\n data[0] = CancellationState.Continue;\n this.buffers.set(request.id, buffer);\n request.$cancellationData = buffer;\n }\n async sendCancellation(_conn, id) {\n const buffer = this.buffers.get(id);\n if (buffer === void 0) {\n return;\n }\n const data = new Int32Array(buffer, 0, 1);\n Atomics.store(data, 0, CancellationState.Cancelled);\n }\n cleanup(id) {\n this.buffers.delete(id);\n }\n dispose() {\n this.buffers.clear();\n }\n };\n exports2.SharedArraySenderStrategy = SharedArraySenderStrategy;\n var SharedArrayBufferCancellationToken = class {\n static {\n __name(this, \"SharedArrayBufferCancellationToken\");\n }\n constructor(buffer) {\n this.data = new Int32Array(buffer, 0, 1);\n }\n get isCancellationRequested() {\n return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n }\n get onCancellationRequested() {\n throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n }\n };\n var SharedArrayBufferCancellationTokenSource = class {\n static {\n __name(this, \"SharedArrayBufferCancellationTokenSource\");\n }\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n };\n var SharedArrayReceiverStrategy = class {\n static {\n __name(this, \"SharedArrayReceiverStrategy\");\n }\n constructor() {\n this.kind = \"request\";\n }\n createCancellationTokenSource(request) {\n const buffer = request.$cancellationData;\n if (buffer === void 0) {\n return new cancellation_1.CancellationTokenSource();\n }\n return new SharedArrayBufferCancellationTokenSource(buffer);\n }\n };\n exports2.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js\nvar require_semaphore = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.Semaphore = void 0;\n var ral_1 = require_ral();\n var Semaphore = class {\n static {\n __name(this, \"Semaphore\");\n }\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error(\"Capacity must be greater than 0\");\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject2) => {\n this._waiting.push({ thunk, resolve, reject: reject2 });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n } else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n } catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n };\n exports2.Semaphore = Semaphore;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js\nvar require_messageReader = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.ReadableStreamMessageReader = exports2.AbstractMessageReader = exports2.MessageReader = void 0;\n var ral_1 = require_ral();\n var Is2 = require_is();\n var events_1 = require_events();\n var semaphore_1 = require_semaphore();\n var MessageReader;\n (function(MessageReader2) {\n function is(value) {\n let candidate = value;\n return candidate && Is2.func(candidate.listen) && Is2.func(candidate.dispose) && Is2.func(candidate.onError) && Is2.func(candidate.onClose) && Is2.func(candidate.onPartialMessage);\n }\n __name(is, \"is\");\n MessageReader2.is = is;\n })(MessageReader || (exports2.MessageReader = MessageReader = {}));\n var AbstractMessageReader = class {\n static {\n __name(this, \"AbstractMessageReader\");\n }\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n this.partialMessageEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error) {\n this.errorEmitter.fire(this.asError(error));\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(void 0);\n }\n get onPartialMessage() {\n return this.partialMessageEmitter.event;\n }\n firePartialMessage(info) {\n this.partialMessageEmitter.fire(info);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n } else {\n return new Error(`Reader received error. Reason: ${Is2.string(error.message) ? error.message : \"unknown\"}`);\n }\n }\n };\n exports2.AbstractMessageReader = AbstractMessageReader;\n var ResolvedMessageReaderOptions;\n (function(ResolvedMessageReaderOptions2) {\n function fromOptions(options) {\n let charset;\n let result;\n let contentDecoder;\n const contentDecoders = /* @__PURE__ */ new Map();\n let contentTypeDecoder;\n const contentTypeDecoders = /* @__PURE__ */ new Map();\n if (options === void 0 || typeof options === \"string\") {\n charset = options ?? \"utf-8\";\n } else {\n charset = options.charset ?? \"utf-8\";\n if (options.contentDecoder !== void 0) {\n contentDecoder = options.contentDecoder;\n contentDecoders.set(contentDecoder.name, contentDecoder);\n }\n if (options.contentDecoders !== void 0) {\n for (const decoder of options.contentDecoders) {\n contentDecoders.set(decoder.name, decoder);\n }\n }\n if (options.contentTypeDecoder !== void 0) {\n contentTypeDecoder = options.contentTypeDecoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n if (options.contentTypeDecoders !== void 0) {\n for (const decoder of options.contentTypeDecoders) {\n contentTypeDecoders.set(decoder.name, decoder);\n }\n }\n }\n if (contentTypeDecoder === void 0) {\n contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n }\n __name(fromOptions, \"fromOptions\");\n ResolvedMessageReaderOptions2.fromOptions = fromOptions;\n })(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\n var ReadableStreamMessageReader = class extends AbstractMessageReader {\n static {\n __name(this, \"ReadableStreamMessageReader\");\n }\n constructor(readable, options) {\n super();\n this.readable = readable;\n this.options = ResolvedMessageReaderOptions.fromOptions(options);\n this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n this._partialMessageTimeout = 1e4;\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.readSemaphore = new semaphore_1.Semaphore(1);\n }\n set partialMessageTimeout(timeout) {\n this._partialMessageTimeout = timeout;\n }\n get partialMessageTimeout() {\n return this._partialMessageTimeout;\n }\n listen(callback) {\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.partialMessageTimer = void 0;\n this.callback = callback;\n const result = this.readable.onData((data) => {\n this.onData(data);\n });\n this.readable.onError((error) => this.fireError(error));\n this.readable.onClose(() => this.fireClose());\n return result;\n }\n onData(data) {\n try {\n this.buffer.append(data);\n while (true) {\n if (this.nextMessageLength === -1) {\n const headers = this.buffer.tryReadHeaders(true);\n if (!headers) {\n return;\n }\n const contentLength = headers.get(\"content-length\");\n if (!contentLength) {\n this.fireError(new Error(`Header must provide a Content-Length property.\n${JSON.stringify(Object.fromEntries(headers))}`));\n return;\n }\n const length = parseInt(contentLength);\n if (isNaN(length)) {\n this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`));\n return;\n }\n this.nextMessageLength = length;\n }\n const body = this.buffer.tryReadBody(this.nextMessageLength);\n if (body === void 0) {\n this.setPartialMessageTimer();\n return;\n }\n this.clearPartialMessageTimer();\n this.nextMessageLength = -1;\n this.readSemaphore.lock(async () => {\n const bytes = this.options.contentDecoder !== void 0 ? await this.options.contentDecoder.decode(body) : body;\n const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n this.callback(message);\n }).catch((error) => {\n this.fireError(error);\n });\n }\n } catch (error) {\n this.fireError(error);\n }\n }\n clearPartialMessageTimer() {\n if (this.partialMessageTimer) {\n this.partialMessageTimer.dispose();\n this.partialMessageTimer = void 0;\n }\n }\n setPartialMessageTimer() {\n this.clearPartialMessageTimer();\n if (this._partialMessageTimeout <= 0) {\n return;\n }\n this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n this.partialMessageTimer = void 0;\n if (token === this.messageToken) {\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n this.setPartialMessageTimer();\n }\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n }\n };\n exports2.ReadableStreamMessageReader = ReadableStreamMessageReader;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js\nvar require_messageWriter = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.WriteableStreamMessageWriter = exports2.AbstractMessageWriter = exports2.MessageWriter = void 0;\n var ral_1 = require_ral();\n var Is2 = require_is();\n var semaphore_1 = require_semaphore();\n var events_1 = require_events();\n var ContentLength = \"Content-Length: \";\n var CRLF = \"\\r\\n\";\n var MessageWriter;\n (function(MessageWriter2) {\n function is(value) {\n let candidate = value;\n return candidate && Is2.func(candidate.dispose) && Is2.func(candidate.onClose) && Is2.func(candidate.onError) && Is2.func(candidate.write);\n }\n __name(is, \"is\");\n MessageWriter2.is = is;\n })(MessageWriter || (exports2.MessageWriter = MessageWriter = {}));\n var AbstractMessageWriter = class {\n static {\n __name(this, \"AbstractMessageWriter\");\n }\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error, message, count) {\n this.errorEmitter.fire([this.asError(error), message, count]);\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(void 0);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n } else {\n return new Error(`Writer received error. Reason: ${Is2.string(error.message) ? error.message : \"unknown\"}`);\n }\n }\n };\n exports2.AbstractMessageWriter = AbstractMessageWriter;\n var ResolvedMessageWriterOptions;\n (function(ResolvedMessageWriterOptions2) {\n function fromOptions(options) {\n if (options === void 0 || typeof options === \"string\") {\n return { charset: options ?? \"utf-8\", contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n } else {\n return { charset: options.charset ?? \"utf-8\", contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n }\n }\n __name(fromOptions, \"fromOptions\");\n ResolvedMessageWriterOptions2.fromOptions = fromOptions;\n })(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\n var WriteableStreamMessageWriter = class extends AbstractMessageWriter {\n static {\n __name(this, \"WriteableStreamMessageWriter\");\n }\n constructor(writable, options) {\n super();\n this.writable = writable;\n this.options = ResolvedMessageWriterOptions.fromOptions(options);\n this.errorCount = 0;\n this.writeSemaphore = new semaphore_1.Semaphore(1);\n this.writable.onError((error) => this.fireError(error));\n this.writable.onClose(() => this.fireClose());\n }\n async write(msg) {\n return this.writeSemaphore.lock(async () => {\n const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n if (this.options.contentEncoder !== void 0) {\n return this.options.contentEncoder.encode(buffer);\n } else {\n return buffer;\n }\n });\n return payload.then((buffer) => {\n const headers = [];\n headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n headers.push(CRLF);\n return this.doWrite(msg, headers, buffer);\n }, (error) => {\n this.fireError(error);\n throw error;\n });\n });\n }\n async doWrite(msg, headers, data) {\n try {\n await this.writable.write(headers.join(\"\"), \"ascii\");\n return this.writable.write(data);\n } catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n this.writable.end();\n }\n };\n exports2.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js\nvar require_messageBuffer = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.AbstractMessageBuffer = void 0;\n var CR = 13;\n var LF = 10;\n var CRLF = \"\\r\\n\";\n var AbstractMessageBuffer = class {\n static {\n __name(this, \"AbstractMessageBuffer\");\n }\n constructor(encoding = \"utf-8\") {\n this._encoding = encoding;\n this._chunks = [];\n this._totalLength = 0;\n }\n get encoding() {\n return this._encoding;\n }\n append(chunk) {\n const toAppend = typeof chunk === \"string\" ? this.fromString(chunk, this._encoding) : chunk;\n this._chunks.push(toAppend);\n this._totalLength += toAppend.byteLength;\n }\n tryReadHeaders(lowerCaseKeys = false) {\n if (this._chunks.length === 0) {\n return void 0;\n }\n let state = 0;\n let chunkIndex = 0;\n let offset = 0;\n let chunkBytesRead = 0;\n row: while (chunkIndex < this._chunks.length) {\n const chunk = this._chunks[chunkIndex];\n offset = 0;\n column: while (offset < chunk.length) {\n const value = chunk[offset];\n switch (value) {\n case CR:\n switch (state) {\n case 0:\n state = 1;\n break;\n case 2:\n state = 3;\n break;\n default:\n state = 0;\n }\n break;\n case LF:\n switch (state) {\n case 1:\n state = 2;\n break;\n case 3:\n state = 4;\n offset++;\n break row;\n default:\n state = 0;\n }\n break;\n default:\n state = 0;\n }\n offset++;\n }\n chunkBytesRead += chunk.byteLength;\n chunkIndex++;\n }\n if (state !== 4) {\n return void 0;\n }\n const buffer = this._read(chunkBytesRead + offset);\n const result = /* @__PURE__ */ new Map();\n const headers = this.toString(buffer, \"ascii\").split(CRLF);\n if (headers.length < 2) {\n return result;\n }\n for (let i = 0; i < headers.length - 2; i++) {\n const header = headers[i];\n const index = header.indexOf(\":\");\n if (index === -1) {\n throw new Error(`Message header must separate key and value using ':'\n${header}`);\n }\n const key = header.substr(0, index);\n const value = header.substr(index + 1).trim();\n result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n }\n return result;\n }\n tryReadBody(length) {\n if (this._totalLength < length) {\n return void 0;\n }\n return this._read(length);\n }\n get numberOfBytes() {\n return this._totalLength;\n }\n _read(byteCount) {\n if (byteCount === 0) {\n return this.emptyBuffer();\n }\n if (byteCount > this._totalLength) {\n throw new Error(`Cannot read so many bytes!`);\n }\n if (this._chunks[0].byteLength === byteCount) {\n const chunk = this._chunks[0];\n this._chunks.shift();\n this._totalLength -= byteCount;\n return this.asNative(chunk);\n }\n if (this._chunks[0].byteLength > byteCount) {\n const chunk = this._chunks[0];\n const result2 = this.asNative(chunk, byteCount);\n this._chunks[0] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n return result2;\n }\n const result = this.allocNative(byteCount);\n let resultOffset = 0;\n let chunkIndex = 0;\n while (byteCount > 0) {\n const chunk = this._chunks[chunkIndex];\n if (chunk.byteLength > byteCount) {\n const chunkPart = chunk.slice(0, byteCount);\n result.set(chunkPart, resultOffset);\n resultOffset += byteCount;\n this._chunks[chunkIndex] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n byteCount -= byteCount;\n } else {\n result.set(chunk, resultOffset);\n resultOffset += chunk.byteLength;\n this._chunks.shift();\n this._totalLength -= chunk.byteLength;\n byteCount -= chunk.byteLength;\n }\n }\n return result;\n }\n };\n exports2.AbstractMessageBuffer = AbstractMessageBuffer;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js\nvar require_connection = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.createMessageConnection = exports2.ConnectionOptions = exports2.MessageStrategy = exports2.CancellationStrategy = exports2.CancellationSenderStrategy = exports2.CancellationReceiverStrategy = exports2.RequestCancellationReceiverStrategy = exports2.IdCancellationReceiverStrategy = exports2.ConnectionStrategy = exports2.ConnectionError = exports2.ConnectionErrors = exports2.LogTraceNotification = exports2.SetTraceNotification = exports2.TraceFormat = exports2.TraceValues = exports2.Trace = exports2.NullLogger = exports2.ProgressType = exports2.ProgressToken = void 0;\n var ral_1 = require_ral();\n var Is2 = require_is();\n var messages_1 = require_messages();\n var linkedMap_1 = require_linkedMap();\n var events_1 = require_events();\n var cancellation_1 = require_cancellation();\n var CancelNotification;\n (function(CancelNotification2) {\n CancelNotification2.type = new messages_1.NotificationType(\"$/cancelRequest\");\n })(CancelNotification || (CancelNotification = {}));\n var ProgressToken;\n (function(ProgressToken2) {\n function is(value) {\n return typeof value === \"string\" || typeof value === \"number\";\n }\n __name(is, \"is\");\n ProgressToken2.is = is;\n })(ProgressToken || (exports2.ProgressToken = ProgressToken = {}));\n var ProgressNotification;\n (function(ProgressNotification2) {\n ProgressNotification2.type = new messages_1.NotificationType(\"$/progress\");\n })(ProgressNotification || (ProgressNotification = {}));\n var ProgressType = class {\n static {\n __name(this, \"ProgressType\");\n }\n constructor() {\n }\n };\n exports2.ProgressType = ProgressType;\n var StarRequestHandler;\n (function(StarRequestHandler2) {\n function is(value) {\n return Is2.func(value);\n }\n __name(is, \"is\");\n StarRequestHandler2.is = is;\n })(StarRequestHandler || (StarRequestHandler = {}));\n exports2.NullLogger = Object.freeze({\n error: /* @__PURE__ */ __name(() => {\n }, \"error\"),\n warn: /* @__PURE__ */ __name(() => {\n }, \"warn\"),\n info: /* @__PURE__ */ __name(() => {\n }, \"info\"),\n log: /* @__PURE__ */ __name(() => {\n }, \"log\")\n });\n var Trace;\n (function(Trace2) {\n Trace2[Trace2[\"Off\"] = 0] = \"Off\";\n Trace2[Trace2[\"Messages\"] = 1] = \"Messages\";\n Trace2[Trace2[\"Compact\"] = 2] = \"Compact\";\n Trace2[Trace2[\"Verbose\"] = 3] = \"Verbose\";\n })(Trace || (exports2.Trace = Trace = {}));\n var TraceValues;\n (function(TraceValues2) {\n TraceValues2.Off = \"off\";\n TraceValues2.Messages = \"messages\";\n TraceValues2.Compact = \"compact\";\n TraceValues2.Verbose = \"verbose\";\n })(TraceValues || (exports2.TraceValues = TraceValues = {}));\n (function(Trace2) {\n function fromString(value) {\n if (!Is2.string(value)) {\n return Trace2.Off;\n }\n value = value.toLowerCase();\n switch (value) {\n case \"off\":\n return Trace2.Off;\n case \"messages\":\n return Trace2.Messages;\n case \"compact\":\n return Trace2.Compact;\n case \"verbose\":\n return Trace2.Verbose;\n default:\n return Trace2.Off;\n }\n }\n __name(fromString, \"fromString\");\n Trace2.fromString = fromString;\n function toString4(value) {\n switch (value) {\n case Trace2.Off:\n return \"off\";\n case Trace2.Messages:\n return \"messages\";\n case Trace2.Compact:\n return \"compact\";\n case Trace2.Verbose:\n return \"verbose\";\n default:\n return \"off\";\n }\n }\n __name(toString4, \"toString\");\n Trace2.toString = toString4;\n })(Trace || (exports2.Trace = Trace = {}));\n var TraceFormat;\n (function(TraceFormat2) {\n TraceFormat2[\"Text\"] = \"text\";\n TraceFormat2[\"JSON\"] = \"json\";\n })(TraceFormat || (exports2.TraceFormat = TraceFormat = {}));\n (function(TraceFormat2) {\n function fromString(value) {\n if (!Is2.string(value)) {\n return TraceFormat2.Text;\n }\n value = value.toLowerCase();\n if (value === \"json\") {\n return TraceFormat2.JSON;\n } else {\n return TraceFormat2.Text;\n }\n }\n __name(fromString, \"fromString\");\n TraceFormat2.fromString = fromString;\n })(TraceFormat || (exports2.TraceFormat = TraceFormat = {}));\n var SetTraceNotification;\n (function(SetTraceNotification2) {\n SetTraceNotification2.type = new messages_1.NotificationType(\"$/setTrace\");\n })(SetTraceNotification || (exports2.SetTraceNotification = SetTraceNotification = {}));\n var LogTraceNotification;\n (function(LogTraceNotification2) {\n LogTraceNotification2.type = new messages_1.NotificationType(\"$/logTrace\");\n })(LogTraceNotification || (exports2.LogTraceNotification = LogTraceNotification = {}));\n var ConnectionErrors;\n (function(ConnectionErrors2) {\n ConnectionErrors2[ConnectionErrors2[\"Closed\"] = 1] = \"Closed\";\n ConnectionErrors2[ConnectionErrors2[\"Disposed\"] = 2] = \"Disposed\";\n ConnectionErrors2[ConnectionErrors2[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n })(ConnectionErrors || (exports2.ConnectionErrors = ConnectionErrors = {}));\n var ConnectionError = class _ConnectionError extends Error {\n static {\n __name(this, \"ConnectionError\");\n }\n constructor(code, message) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, _ConnectionError.prototype);\n }\n };\n exports2.ConnectionError = ConnectionError;\n var ConnectionStrategy;\n (function(ConnectionStrategy2) {\n function is(value) {\n const candidate = value;\n return candidate && Is2.func(candidate.cancelUndispatched);\n }\n __name(is, \"is\");\n ConnectionStrategy2.is = is;\n })(ConnectionStrategy || (exports2.ConnectionStrategy = ConnectionStrategy = {}));\n var IdCancellationReceiverStrategy;\n (function(IdCancellationReceiverStrategy2) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.kind === void 0 || candidate.kind === \"id\") && Is2.func(candidate.createCancellationTokenSource) && (candidate.dispose === void 0 || Is2.func(candidate.dispose));\n }\n __name(is, \"is\");\n IdCancellationReceiverStrategy2.is = is;\n })(IdCancellationReceiverStrategy || (exports2.IdCancellationReceiverStrategy = IdCancellationReceiverStrategy = {}));\n var RequestCancellationReceiverStrategy;\n (function(RequestCancellationReceiverStrategy2) {\n function is(value) {\n const candidate = value;\n return candidate && candidate.kind === \"request\" && Is2.func(candidate.createCancellationTokenSource) && (candidate.dispose === void 0 || Is2.func(candidate.dispose));\n }\n __name(is, \"is\");\n RequestCancellationReceiverStrategy2.is = is;\n })(RequestCancellationReceiverStrategy || (exports2.RequestCancellationReceiverStrategy = RequestCancellationReceiverStrategy = {}));\n var CancellationReceiverStrategy;\n (function(CancellationReceiverStrategy2) {\n CancellationReceiverStrategy2.Message = Object.freeze({\n createCancellationTokenSource(_) {\n return new cancellation_1.CancellationTokenSource();\n }\n });\n function is(value) {\n return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n }\n __name(is, \"is\");\n CancellationReceiverStrategy2.is = is;\n })(CancellationReceiverStrategy || (exports2.CancellationReceiverStrategy = CancellationReceiverStrategy = {}));\n var CancellationSenderStrategy;\n (function(CancellationSenderStrategy2) {\n CancellationSenderStrategy2.Message = Object.freeze({\n sendCancellation(conn, id) {\n return conn.sendNotification(CancelNotification.type, { id });\n },\n cleanup(_) {\n }\n });\n function is(value) {\n const candidate = value;\n return candidate && Is2.func(candidate.sendCancellation) && Is2.func(candidate.cleanup);\n }\n __name(is, \"is\");\n CancellationSenderStrategy2.is = is;\n })(CancellationSenderStrategy || (exports2.CancellationSenderStrategy = CancellationSenderStrategy = {}));\n var CancellationStrategy;\n (function(CancellationStrategy2) {\n CancellationStrategy2.Message = Object.freeze({\n receiver: CancellationReceiverStrategy.Message,\n sender: CancellationSenderStrategy.Message\n });\n function is(value) {\n const candidate = value;\n return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n }\n __name(is, \"is\");\n CancellationStrategy2.is = is;\n })(CancellationStrategy || (exports2.CancellationStrategy = CancellationStrategy = {}));\n var MessageStrategy;\n (function(MessageStrategy2) {\n function is(value) {\n const candidate = value;\n return candidate && Is2.func(candidate.handleMessage);\n }\n __name(is, \"is\");\n MessageStrategy2.is = is;\n })(MessageStrategy || (exports2.MessageStrategy = MessageStrategy = {}));\n var ConnectionOptions;\n (function(ConnectionOptions2) {\n function is(value) {\n const candidate = value;\n return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n }\n __name(is, \"is\");\n ConnectionOptions2.is = is;\n })(ConnectionOptions || (exports2.ConnectionOptions = ConnectionOptions = {}));\n var ConnectionState;\n (function(ConnectionState2) {\n ConnectionState2[ConnectionState2[\"New\"] = 1] = \"New\";\n ConnectionState2[ConnectionState2[\"Listening\"] = 2] = \"Listening\";\n ConnectionState2[ConnectionState2[\"Closed\"] = 3] = \"Closed\";\n ConnectionState2[ConnectionState2[\"Disposed\"] = 4] = \"Disposed\";\n })(ConnectionState || (ConnectionState = {}));\n function createMessageConnection(messageReader, messageWriter, _logger, options) {\n const logger = _logger !== void 0 ? _logger : exports2.NullLogger;\n let sequenceNumber = 0;\n let notificationSequenceNumber = 0;\n let unknownResponseSequenceNumber = 0;\n const version = \"2.0\";\n let starRequestHandler = void 0;\n const requestHandlers = /* @__PURE__ */ new Map();\n let starNotificationHandler = void 0;\n const notificationHandlers = /* @__PURE__ */ new Map();\n const progressHandlers = /* @__PURE__ */ new Map();\n let timer2;\n let messageQueue = new linkedMap_1.LinkedMap();\n let responsePromises = /* @__PURE__ */ new Map();\n let knownCanceledRequests = /* @__PURE__ */ new Set();\n let requestTokens = /* @__PURE__ */ new Map();\n let trace = Trace.Off;\n let traceFormat = TraceFormat.Text;\n let tracer;\n let state = ConnectionState.New;\n const errorEmitter = new events_1.Emitter();\n const closeEmitter = new events_1.Emitter();\n const unhandledNotificationEmitter = new events_1.Emitter();\n const unhandledProgressEmitter = new events_1.Emitter();\n const disposeEmitter = new events_1.Emitter();\n const cancellationStrategy = options && options.cancellationStrategy ? options.cancellationStrategy : CancellationStrategy.Message;\n function createRequestQueueKey(id) {\n if (id === null) {\n throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n }\n return \"req-\" + id.toString();\n }\n __name(createRequestQueueKey, \"createRequestQueueKey\");\n function createResponseQueueKey(id) {\n if (id === null) {\n return \"res-unknown-\" + (++unknownResponseSequenceNumber).toString();\n } else {\n return \"res-\" + id.toString();\n }\n }\n __name(createResponseQueueKey, \"createResponseQueueKey\");\n function createNotificationQueueKey() {\n return \"not-\" + (++notificationSequenceNumber).toString();\n }\n __name(createNotificationQueueKey, \"createNotificationQueueKey\");\n function addMessageToQueue(queue, message) {\n if (messages_1.Message.isRequest(message)) {\n queue.set(createRequestQueueKey(message.id), message);\n } else if (messages_1.Message.isResponse(message)) {\n queue.set(createResponseQueueKey(message.id), message);\n } else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n __name(addMessageToQueue, \"addMessageToQueue\");\n function cancelUndispatched(_message) {\n return void 0;\n }\n __name(cancelUndispatched, \"cancelUndispatched\");\n function isListening() {\n return state === ConnectionState.Listening;\n }\n __name(isListening, \"isListening\");\n function isClosed() {\n return state === ConnectionState.Closed;\n }\n __name(isClosed, \"isClosed\");\n function isDisposed() {\n return state === ConnectionState.Disposed;\n }\n __name(isDisposed, \"isDisposed\");\n function closeHandler() {\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\n state = ConnectionState.Closed;\n closeEmitter.fire(void 0);\n }\n }\n __name(closeHandler, \"closeHandler\");\n function readErrorHandler(error) {\n errorEmitter.fire([error, void 0, void 0]);\n }\n __name(readErrorHandler, \"readErrorHandler\");\n function writeErrorHandler(data) {\n errorEmitter.fire(data);\n }\n __name(writeErrorHandler, \"writeErrorHandler\");\n messageReader.onClose(closeHandler);\n messageReader.onError(readErrorHandler);\n messageWriter.onClose(closeHandler);\n messageWriter.onError(writeErrorHandler);\n function triggerMessageQueue() {\n if (timer2 || messageQueue.size === 0) {\n return;\n }\n timer2 = (0, ral_1.default)().timer.setImmediate(() => {\n timer2 = void 0;\n processMessageQueue();\n });\n }\n __name(triggerMessageQueue, \"triggerMessageQueue\");\n function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n handleRequest(message);\n } else if (messages_1.Message.isNotification(message)) {\n handleNotification(message);\n } else if (messages_1.Message.isResponse(message)) {\n handleResponse(message);\n } else {\n handleInvalidMessage(message);\n }\n }\n __name(handleMessage, \"handleMessage\");\n function processMessageQueue() {\n if (messageQueue.size === 0) {\n return;\n }\n const message = messageQueue.shift();\n try {\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n messageStrategy.handleMessage(message, handleMessage);\n } else {\n handleMessage(message);\n }\n } finally {\n triggerMessageQueue();\n }\n }\n __name(processMessageQueue, \"processMessageQueue\");\n const callback = /* @__PURE__ */ __name((message) => {\n try {\n if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n const key = createRequestQueueKey(cancelId);\n const toCancel = messageQueue.get(key);\n if (messages_1.Message.isRequest(toCancel)) {\n const strategy = options?.connectionStrategy;\n const response = strategy && strategy.cancelUndispatched ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n if (response && (response.error !== void 0 || response.result !== void 0)) {\n messageQueue.delete(key);\n requestTokens.delete(cancelId);\n response.id = toCancel.id;\n traceSendingResponse(response, message.method, Date.now());\n messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n return;\n }\n }\n const cancellationToken = requestTokens.get(cancelId);\n if (cancellationToken !== void 0) {\n cancellationToken.cancel();\n traceReceivedNotification(message);\n return;\n } else {\n knownCanceledRequests.add(cancelId);\n }\n }\n addMessageToQueue(messageQueue, message);\n } finally {\n triggerMessageQueue();\n }\n }, \"callback\");\n function handleRequest(requestMessage) {\n if (isDisposed()) {\n return;\n }\n function reply(resultOrError, method, startTime2) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id\n };\n if (resultOrError instanceof messages_1.ResponseError) {\n message.error = resultOrError.toJson();\n } else {\n message.result = resultOrError === void 0 ? null : resultOrError;\n }\n traceSendingResponse(message, method, startTime2);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n __name(reply, \"reply\");\n function replyError(error, method, startTime2) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n error: error.toJson()\n };\n traceSendingResponse(message, method, startTime2);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n __name(replyError, \"replyError\");\n function replySuccess(result, method, startTime2) {\n if (result === void 0) {\n result = null;\n }\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n result\n };\n traceSendingResponse(message, method, startTime2);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n __name(replySuccess, \"replySuccess\");\n traceReceivedRequest(requestMessage);\n const element = requestHandlers.get(requestMessage.method);\n let type;\n let requestHandler;\n if (element) {\n type = element.type;\n requestHandler = element.handler;\n }\n const startTime = Date.now();\n if (requestHandler || starRequestHandler) {\n const tokenKey = requestMessage.id ?? String(Date.now());\n const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver) ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey) : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n cancellationSource.cancel();\n }\n if (requestMessage.id !== null) {\n requestTokens.set(tokenKey, cancellationSource);\n }\n try {\n let handlerResult;\n if (requestHandler) {\n if (requestMessage.params === void 0) {\n if (type !== void 0 && type.numberOfParams !== 0) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(cancellationSource.token);\n } else if (Array.isArray(requestMessage.params)) {\n if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byName) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n } else {\n if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n }\n } else if (starRequestHandler) {\n handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n }\n const promise = handlerResult;\n if (!handlerResult) {\n requestTokens.delete(tokenKey);\n replySuccess(handlerResult, requestMessage.method, startTime);\n } else if (promise.then) {\n promise.then((resultOrError) => {\n requestTokens.delete(tokenKey);\n reply(resultOrError, requestMessage.method, startTime);\n }, (error) => {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n replyError(error, requestMessage.method, startTime);\n } else if (error && Is2.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n } else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n });\n } else {\n requestTokens.delete(tokenKey);\n reply(handlerResult, requestMessage.method, startTime);\n }\n } catch (error) {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n reply(error, requestMessage.method, startTime);\n } else if (error && Is2.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n } else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n } else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n }\n }\n __name(handleRequest, \"handleRequest\");\n function handleResponse(responseMessage) {\n if (isDisposed()) {\n return;\n }\n if (responseMessage.id === null) {\n if (responseMessage.error) {\n logger.error(`Received response message without id: Error is: \n${JSON.stringify(responseMessage.error, void 0, 4)}`);\n } else {\n logger.error(`Received response message without id. No further error information provided.`);\n }\n } else {\n const key = responseMessage.id;\n const responsePromise = responsePromises.get(key);\n traceReceivedResponse(responseMessage, responsePromise);\n if (responsePromise !== void 0) {\n responsePromises.delete(key);\n try {\n if (responseMessage.error) {\n const error = responseMessage.error;\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n } else if (responseMessage.result !== void 0) {\n responsePromise.resolve(responseMessage.result);\n } else {\n throw new Error(\"Should never happen.\");\n }\n } catch (error) {\n if (error.message) {\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n } else {\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n }\n }\n }\n }\n }\n __name(handleResponse, \"handleResponse\");\n function handleNotification(message) {\n if (isDisposed()) {\n return;\n }\n let type = void 0;\n let notificationHandler;\n if (message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n knownCanceledRequests.delete(cancelId);\n traceReceivedNotification(message);\n return;\n } else {\n const element = notificationHandlers.get(message.method);\n if (element) {\n notificationHandler = element.handler;\n type = element.type;\n }\n }\n if (notificationHandler || starNotificationHandler) {\n try {\n traceReceivedNotification(message);\n if (notificationHandler) {\n if (message.params === void 0) {\n if (type !== void 0) {\n if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n }\n }\n notificationHandler();\n } else if (Array.isArray(message.params)) {\n const params = message.params;\n if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n notificationHandler({ token: params[0], value: params[1] });\n } else {\n if (type !== void 0) {\n if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n }\n if (type.numberOfParams !== message.params.length) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n }\n }\n notificationHandler(...params);\n }\n } else {\n if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n }\n notificationHandler(message.params);\n }\n } else if (starNotificationHandler) {\n starNotificationHandler(message.method, message.params);\n }\n } catch (error) {\n if (error.message) {\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n } else {\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n }\n }\n } else {\n unhandledNotificationEmitter.fire(message);\n }\n }\n __name(handleNotification, \"handleNotification\");\n function handleInvalidMessage(message) {\n if (!message) {\n logger.error(\"Received empty message.\");\n return;\n }\n logger.error(`Received message which is neither a response nor a notification message:\n${JSON.stringify(message, null, 4)}`);\n const responseMessage = message;\n if (Is2.string(responseMessage.id) || Is2.number(responseMessage.id)) {\n const key = responseMessage.id;\n const responseHandler = responsePromises.get(key);\n if (responseHandler) {\n responseHandler.reject(new Error(\"The received response has neither a result nor an error property.\"));\n }\n }\n }\n __name(handleInvalidMessage, \"handleInvalidMessage\");\n function stringifyTrace(params) {\n if (params === void 0 || params === null) {\n return void 0;\n }\n switch (trace) {\n case Trace.Verbose:\n return JSON.stringify(params, null, 4);\n case Trace.Compact:\n return JSON.stringify(params);\n default:\n return void 0;\n }\n }\n __name(stringifyTrace, \"stringifyTrace\");\n function traceSendingRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = void 0;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\n\n`;\n }\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n } else {\n logLSPMessage(\"send-request\", message);\n }\n }\n __name(traceSendingRequest, \"traceSendingRequest\");\n function traceSendingNotification(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = void 0;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\n\n`;\n } else {\n data = \"No parameters provided.\\n\\n\";\n }\n }\n tracer.log(`Sending notification '${message.method}'.`, data);\n } else {\n logLSPMessage(\"send-notification\", message);\n }\n }\n __name(traceSendingNotification, \"traceSendingNotification\");\n function traceSendingResponse(message, method, startTime) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = void 0;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\n\n`;\n } else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\n\n`;\n } else if (message.error === void 0) {\n data = \"No result returned.\\n\\n\";\n }\n }\n }\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n } else {\n logLSPMessage(\"send-response\", message);\n }\n }\n __name(traceSendingResponse, \"traceSendingResponse\");\n function traceReceivedRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = void 0;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\n\n`;\n }\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n } else {\n logLSPMessage(\"receive-request\", message);\n }\n }\n __name(traceReceivedRequest, \"traceReceivedRequest\");\n function traceReceivedNotification(message) {\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = void 0;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\n\n`;\n } else {\n data = \"No parameters provided.\\n\\n\";\n }\n }\n tracer.log(`Received notification '${message.method}'.`, data);\n } else {\n logLSPMessage(\"receive-notification\", message);\n }\n }\n __name(traceReceivedNotification, \"traceReceivedNotification\");\n function traceReceivedResponse(message, responsePromise) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = void 0;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\n\n`;\n } else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\n\n`;\n } else if (message.error === void 0) {\n data = \"No result returned.\\n\\n\";\n }\n }\n }\n if (responsePromise) {\n const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : \"\";\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n } else {\n tracer.log(`Received response ${message.id} without active response promise.`, data);\n }\n } else {\n logLSPMessage(\"receive-response\", message);\n }\n }\n __name(traceReceivedResponse, \"traceReceivedResponse\");\n function logLSPMessage(type, message) {\n if (!tracer || trace === Trace.Off) {\n return;\n }\n const lspMessage = {\n isLSPMessage: true,\n type,\n message,\n timestamp: Date.now()\n };\n tracer.log(lspMessage);\n }\n __name(logLSPMessage, \"logLSPMessage\");\n function throwIfClosedOrDisposed() {\n if (isClosed()) {\n throw new ConnectionError(ConnectionErrors.Closed, \"Connection is closed.\");\n }\n if (isDisposed()) {\n throw new ConnectionError(ConnectionErrors.Disposed, \"Connection is disposed.\");\n }\n }\n __name(throwIfClosedOrDisposed, \"throwIfClosedOrDisposed\");\n function throwIfListening() {\n if (isListening()) {\n throw new ConnectionError(ConnectionErrors.AlreadyListening, \"Connection is already listening\");\n }\n }\n __name(throwIfListening, \"throwIfListening\");\n function throwIfNotListening() {\n if (!isListening()) {\n throw new Error(\"Call listen() first.\");\n }\n }\n __name(throwIfNotListening, \"throwIfNotListening\");\n function undefinedToNull(param) {\n if (param === void 0) {\n return null;\n } else {\n return param;\n }\n }\n __name(undefinedToNull, \"undefinedToNull\");\n function nullToUndefined(param) {\n if (param === null) {\n return void 0;\n } else {\n return param;\n }\n }\n __name(nullToUndefined, \"nullToUndefined\");\n function isNamedParam(param) {\n return param !== void 0 && param !== null && !Array.isArray(param) && typeof param === \"object\";\n }\n __name(isNamedParam, \"isNamedParam\");\n function computeSingleParam(parameterStructures, param) {\n switch (parameterStructures) {\n case messages_1.ParameterStructures.auto:\n if (isNamedParam(param)) {\n return nullToUndefined(param);\n } else {\n return [undefinedToNull(param)];\n }\n case messages_1.ParameterStructures.byName:\n if (!isNamedParam(param)) {\n throw new Error(`Received parameters by name but param is not an object literal.`);\n }\n return nullToUndefined(param);\n case messages_1.ParameterStructures.byPosition:\n return [undefinedToNull(param)];\n default:\n throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n }\n }\n __name(computeSingleParam, \"computeSingleParam\");\n function computeMessageParams(type, params) {\n let result;\n const numberOfParams = type.numberOfParams;\n switch (numberOfParams) {\n case 0:\n result = void 0;\n break;\n case 1:\n result = computeSingleParam(type.parameterStructures, params[0]);\n break;\n default:\n result = [];\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\n result.push(undefinedToNull(params[i]));\n }\n if (params.length < numberOfParams) {\n for (let i = params.length; i < numberOfParams; i++) {\n result.push(null);\n }\n }\n break;\n }\n return result;\n }\n __name(computeMessageParams, \"computeMessageParams\");\n const connection = {\n sendNotification: /* @__PURE__ */ __name((type, ...args) => {\n throwIfClosedOrDisposed();\n let method;\n let messageParams;\n if (Is2.string(type)) {\n method = type;\n const first2 = args[0];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first2)) {\n paramStart = 1;\n parameterStructures = first2;\n }\n let paramEnd = args.length;\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = void 0;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map((value) => undefinedToNull(value));\n break;\n }\n } else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n }\n const notificationMessage = {\n jsonrpc: version,\n method,\n params: messageParams\n };\n traceSendingNotification(notificationMessage);\n return messageWriter.write(notificationMessage).catch((error) => {\n logger.error(`Sending notification failed.`);\n throw error;\n });\n }, \"sendNotification\"),\n onNotification: /* @__PURE__ */ __name((type, handler) => {\n throwIfClosedOrDisposed();\n let method;\n if (Is2.func(type)) {\n starNotificationHandler = type;\n } else if (handler) {\n if (Is2.string(type)) {\n method = type;\n notificationHandlers.set(type, { type: void 0, handler });\n } else {\n method = type.method;\n notificationHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: /* @__PURE__ */ __name(() => {\n if (method !== void 0) {\n notificationHandlers.delete(method);\n } else {\n starNotificationHandler = void 0;\n }\n }, \"dispose\")\n };\n }, \"onNotification\"),\n onProgress: /* @__PURE__ */ __name((_type, token, handler) => {\n if (progressHandlers.has(token)) {\n throw new Error(`Progress handler for token ${token} already registered`);\n }\n progressHandlers.set(token, handler);\n return {\n dispose: /* @__PURE__ */ __name(() => {\n progressHandlers.delete(token);\n }, \"dispose\")\n };\n }, \"onProgress\"),\n sendProgress: /* @__PURE__ */ __name((_type, token, value) => {\n return connection.sendNotification(ProgressNotification.type, { token, value });\n }, \"sendProgress\"),\n onUnhandledProgress: unhandledProgressEmitter.event,\n sendRequest: /* @__PURE__ */ __name((type, ...args) => {\n throwIfClosedOrDisposed();\n throwIfNotListening();\n let method;\n let messageParams;\n let token = void 0;\n if (Is2.string(type)) {\n method = type;\n const first2 = args[0];\n const last2 = args[args.length - 1];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first2)) {\n paramStart = 1;\n parameterStructures = first2;\n }\n let paramEnd = args.length;\n if (cancellation_1.CancellationToken.is(last2)) {\n paramEnd = paramEnd - 1;\n token = last2;\n }\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = void 0;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map((value) => undefinedToNull(value));\n break;\n }\n } else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n const numberOfParams = type.numberOfParams;\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : void 0;\n }\n const id = sequenceNumber++;\n let disposable;\n if (token) {\n disposable = token.onCancellationRequested(() => {\n const p = cancellationStrategy.sender.sendCancellation(connection, id);\n if (p === void 0) {\n logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n return Promise.resolve();\n } else {\n return p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed`);\n });\n }\n });\n }\n const requestMessage = {\n jsonrpc: version,\n id,\n method,\n params: messageParams\n };\n traceSendingRequest(requestMessage);\n if (typeof cancellationStrategy.sender.enableCancellation === \"function\") {\n cancellationStrategy.sender.enableCancellation(requestMessage);\n }\n return new Promise(async (resolve, reject2) => {\n const resolveWithCleanup = /* @__PURE__ */ __name((r) => {\n resolve(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n }, \"resolveWithCleanup\");\n const rejectWithCleanup = /* @__PURE__ */ __name((r) => {\n reject2(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n }, \"rejectWithCleanup\");\n const responsePromise = { method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n try {\n await messageWriter.write(requestMessage);\n responsePromises.set(id, responsePromise);\n } catch (error) {\n logger.error(`Sending request failed.`);\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : \"Unknown reason\"));\n throw error;\n }\n });\n }, \"sendRequest\"),\n onRequest: /* @__PURE__ */ __name((type, handler) => {\n throwIfClosedOrDisposed();\n let method = null;\n if (StarRequestHandler.is(type)) {\n method = void 0;\n starRequestHandler = type;\n } else if (Is2.string(type)) {\n method = null;\n if (handler !== void 0) {\n method = type;\n requestHandlers.set(type, { handler, type: void 0 });\n }\n } else {\n if (handler !== void 0) {\n method = type.method;\n requestHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: /* @__PURE__ */ __name(() => {\n if (method === null) {\n return;\n }\n if (method !== void 0) {\n requestHandlers.delete(method);\n } else {\n starRequestHandler = void 0;\n }\n }, \"dispose\")\n };\n }, \"onRequest\"),\n hasPendingResponse: /* @__PURE__ */ __name(() => {\n return responsePromises.size > 0;\n }, \"hasPendingResponse\"),\n trace: /* @__PURE__ */ __name(async (_value, _tracer, sendNotificationOrTraceOptions) => {\n let _sendNotification = false;\n let _traceFormat = TraceFormat.Text;\n if (sendNotificationOrTraceOptions !== void 0) {\n if (Is2.boolean(sendNotificationOrTraceOptions)) {\n _sendNotification = sendNotificationOrTraceOptions;\n } else {\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n }\n }\n trace = _value;\n traceFormat = _traceFormat;\n if (trace === Trace.Off) {\n tracer = void 0;\n } else {\n tracer = _tracer;\n }\n if (_sendNotification && !isClosed() && !isDisposed()) {\n await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n }\n }, \"trace\"),\n onError: errorEmitter.event,\n onClose: closeEmitter.event,\n onUnhandledNotification: unhandledNotificationEmitter.event,\n onDispose: disposeEmitter.event,\n end: /* @__PURE__ */ __name(() => {\n messageWriter.end();\n }, \"end\"),\n dispose: /* @__PURE__ */ __name(() => {\n if (isDisposed()) {\n return;\n }\n state = ConnectionState.Disposed;\n disposeEmitter.fire(void 0);\n const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, \"Pending response rejected since connection got disposed\");\n for (const promise of responsePromises.values()) {\n promise.reject(error);\n }\n responsePromises = /* @__PURE__ */ new Map();\n requestTokens = /* @__PURE__ */ new Map();\n knownCanceledRequests = /* @__PURE__ */ new Set();\n messageQueue = new linkedMap_1.LinkedMap();\n if (Is2.func(messageWriter.dispose)) {\n messageWriter.dispose();\n }\n if (Is2.func(messageReader.dispose)) {\n messageReader.dispose();\n }\n }, \"dispose\"),\n listen: /* @__PURE__ */ __name(() => {\n throwIfClosedOrDisposed();\n throwIfListening();\n state = ConnectionState.Listening;\n messageReader.listen(callback);\n }, \"listen\"),\n inspect: /* @__PURE__ */ __name(() => {\n (0, ral_1.default)().console.log(\"inspect\");\n }, \"inspect\")\n };\n connection.onNotification(LogTraceNotification.type, (params) => {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n tracer.log(params.message, verbose ? params.verbose : void 0);\n });\n connection.onNotification(ProgressNotification.type, (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n handler(params.value);\n } else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\n }\n __name(createMessageConnection, \"createMessageConnection\");\n exports2.createMessageConnection = createMessageConnection;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js\nvar require_api = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.ProgressType = exports2.ProgressToken = exports2.createMessageConnection = exports2.NullLogger = exports2.ConnectionOptions = exports2.ConnectionStrategy = exports2.AbstractMessageBuffer = exports2.WriteableStreamMessageWriter = exports2.AbstractMessageWriter = exports2.MessageWriter = exports2.ReadableStreamMessageReader = exports2.AbstractMessageReader = exports2.MessageReader = exports2.SharedArrayReceiverStrategy = exports2.SharedArraySenderStrategy = exports2.CancellationToken = exports2.CancellationTokenSource = exports2.Emitter = exports2.Event = exports2.Disposable = exports2.LRUCache = exports2.Touch = exports2.LinkedMap = exports2.ParameterStructures = exports2.NotificationType9 = exports2.NotificationType8 = exports2.NotificationType7 = exports2.NotificationType6 = exports2.NotificationType5 = exports2.NotificationType4 = exports2.NotificationType3 = exports2.NotificationType2 = exports2.NotificationType1 = exports2.NotificationType0 = exports2.NotificationType = exports2.ErrorCodes = exports2.ResponseError = exports2.RequestType9 = exports2.RequestType8 = exports2.RequestType7 = exports2.RequestType6 = exports2.RequestType5 = exports2.RequestType4 = exports2.RequestType3 = exports2.RequestType2 = exports2.RequestType1 = exports2.RequestType0 = exports2.RequestType = exports2.Message = exports2.RAL = void 0;\n exports2.MessageStrategy = exports2.CancellationStrategy = exports2.CancellationSenderStrategy = exports2.CancellationReceiverStrategy = exports2.ConnectionError = exports2.ConnectionErrors = exports2.LogTraceNotification = exports2.SetTraceNotification = exports2.TraceFormat = exports2.TraceValues = exports2.Trace = void 0;\n var messages_1 = require_messages();\n Object.defineProperty(exports2, \"Message\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.Message;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType0\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType0;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType1\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType1;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType2\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType2;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType3\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType3;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType4\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType4;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType5\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType5;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType6\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType6;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType7\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType7;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType8\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType8;\n }, \"get\") });\n Object.defineProperty(exports2, \"RequestType9\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.RequestType9;\n }, \"get\") });\n Object.defineProperty(exports2, \"ResponseError\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.ResponseError;\n }, \"get\") });\n Object.defineProperty(exports2, \"ErrorCodes\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.ErrorCodes;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType0\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType0;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType1\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType1;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType2\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType2;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType3\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType3;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType4\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType4;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType5\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType5;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType6\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType6;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType7\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType7;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType8\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType8;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotificationType9\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.NotificationType9;\n }, \"get\") });\n Object.defineProperty(exports2, \"ParameterStructures\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messages_1.ParameterStructures;\n }, \"get\") });\n var linkedMap_1 = require_linkedMap();\n Object.defineProperty(exports2, \"LinkedMap\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return linkedMap_1.LinkedMap;\n }, \"get\") });\n Object.defineProperty(exports2, \"LRUCache\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return linkedMap_1.LRUCache;\n }, \"get\") });\n Object.defineProperty(exports2, \"Touch\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return linkedMap_1.Touch;\n }, \"get\") });\n var disposable_1 = require_disposable();\n Object.defineProperty(exports2, \"Disposable\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return disposable_1.Disposable;\n }, \"get\") });\n var events_1 = require_events();\n Object.defineProperty(exports2, \"Event\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return events_1.Event;\n }, \"get\") });\n Object.defineProperty(exports2, \"Emitter\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return events_1.Emitter;\n }, \"get\") });\n var cancellation_1 = require_cancellation();\n Object.defineProperty(exports2, \"CancellationTokenSource\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return cancellation_1.CancellationTokenSource;\n }, \"get\") });\n Object.defineProperty(exports2, \"CancellationToken\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return cancellation_1.CancellationToken;\n }, \"get\") });\n var sharedArrayCancellation_1 = require_sharedArrayCancellation();\n Object.defineProperty(exports2, \"SharedArraySenderStrategy\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return sharedArrayCancellation_1.SharedArraySenderStrategy;\n }, \"get\") });\n Object.defineProperty(exports2, \"SharedArrayReceiverStrategy\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return sharedArrayCancellation_1.SharedArrayReceiverStrategy;\n }, \"get\") });\n var messageReader_1 = require_messageReader();\n Object.defineProperty(exports2, \"MessageReader\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messageReader_1.MessageReader;\n }, \"get\") });\n Object.defineProperty(exports2, \"AbstractMessageReader\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messageReader_1.AbstractMessageReader;\n }, \"get\") });\n Object.defineProperty(exports2, \"ReadableStreamMessageReader\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messageReader_1.ReadableStreamMessageReader;\n }, \"get\") });\n var messageWriter_1 = require_messageWriter();\n Object.defineProperty(exports2, \"MessageWriter\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messageWriter_1.MessageWriter;\n }, \"get\") });\n Object.defineProperty(exports2, \"AbstractMessageWriter\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messageWriter_1.AbstractMessageWriter;\n }, \"get\") });\n Object.defineProperty(exports2, \"WriteableStreamMessageWriter\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messageWriter_1.WriteableStreamMessageWriter;\n }, \"get\") });\n var messageBuffer_1 = require_messageBuffer();\n Object.defineProperty(exports2, \"AbstractMessageBuffer\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return messageBuffer_1.AbstractMessageBuffer;\n }, \"get\") });\n var connection_1 = require_connection();\n Object.defineProperty(exports2, \"ConnectionStrategy\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.ConnectionStrategy;\n }, \"get\") });\n Object.defineProperty(exports2, \"ConnectionOptions\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.ConnectionOptions;\n }, \"get\") });\n Object.defineProperty(exports2, \"NullLogger\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.NullLogger;\n }, \"get\") });\n Object.defineProperty(exports2, \"createMessageConnection\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.createMessageConnection;\n }, \"get\") });\n Object.defineProperty(exports2, \"ProgressToken\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.ProgressToken;\n }, \"get\") });\n Object.defineProperty(exports2, \"ProgressType\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.ProgressType;\n }, \"get\") });\n Object.defineProperty(exports2, \"Trace\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.Trace;\n }, \"get\") });\n Object.defineProperty(exports2, \"TraceValues\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.TraceValues;\n }, \"get\") });\n Object.defineProperty(exports2, \"TraceFormat\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.TraceFormat;\n }, \"get\") });\n Object.defineProperty(exports2, \"SetTraceNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.SetTraceNotification;\n }, \"get\") });\n Object.defineProperty(exports2, \"LogTraceNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.LogTraceNotification;\n }, \"get\") });\n Object.defineProperty(exports2, \"ConnectionErrors\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.ConnectionErrors;\n }, \"get\") });\n Object.defineProperty(exports2, \"ConnectionError\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.ConnectionError;\n }, \"get\") });\n Object.defineProperty(exports2, \"CancellationReceiverStrategy\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.CancellationReceiverStrategy;\n }, \"get\") });\n Object.defineProperty(exports2, \"CancellationSenderStrategy\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.CancellationSenderStrategy;\n }, \"get\") });\n Object.defineProperty(exports2, \"CancellationStrategy\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.CancellationStrategy;\n }, \"get\") });\n Object.defineProperty(exports2, \"MessageStrategy\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.MessageStrategy;\n }, \"get\") });\n var ral_1 = require_ral();\n exports2.RAL = ral_1.default;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js\nvar require_ril = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var api_1 = require_api();\n var MessageBuffer = class _MessageBuffer extends api_1.AbstractMessageBuffer {\n static {\n __name(this, \"MessageBuffer\");\n }\n constructor(encoding = \"utf-8\") {\n super(encoding);\n this.asciiDecoder = new TextDecoder(\"ascii\");\n }\n emptyBuffer() {\n return _MessageBuffer.emptyBuffer;\n }\n fromString(value, _encoding) {\n return new TextEncoder().encode(value);\n }\n toString(value, encoding) {\n if (encoding === \"ascii\") {\n return this.asciiDecoder.decode(value);\n } else {\n return new TextDecoder(encoding).decode(value);\n }\n }\n asNative(buffer, length) {\n if (length === void 0) {\n return buffer;\n } else {\n return buffer.slice(0, length);\n }\n }\n allocNative(length) {\n return new Uint8Array(length);\n }\n };\n MessageBuffer.emptyBuffer = new Uint8Array(0);\n var ReadableStreamWrapper = class {\n static {\n __name(this, \"ReadableStreamWrapper\");\n }\n constructor(socket) {\n this.socket = socket;\n this._onData = new api_1.Emitter();\n this._messageListener = (event) => {\n const blob = event.data;\n blob.arrayBuffer().then((buffer) => {\n this._onData.fire(new Uint8Array(buffer));\n }, () => {\n (0, api_1.RAL)().console.error(`Converting blob to array buffer failed.`);\n });\n };\n this.socket.addEventListener(\"message\", this._messageListener);\n }\n onClose(listener) {\n this.socket.addEventListener(\"close\", listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener(\"close\", listener));\n }\n onError(listener) {\n this.socket.addEventListener(\"error\", listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener(\"error\", listener));\n }\n onEnd(listener) {\n this.socket.addEventListener(\"end\", listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener(\"end\", listener));\n }\n onData(listener) {\n return this._onData.event(listener);\n }\n };\n var WritableStreamWrapper = class {\n static {\n __name(this, \"WritableStreamWrapper\");\n }\n constructor(socket) {\n this.socket = socket;\n }\n onClose(listener) {\n this.socket.addEventListener(\"close\", listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener(\"close\", listener));\n }\n onError(listener) {\n this.socket.addEventListener(\"error\", listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener(\"error\", listener));\n }\n onEnd(listener) {\n this.socket.addEventListener(\"end\", listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener(\"end\", listener));\n }\n write(data, encoding) {\n if (typeof data === \"string\") {\n if (encoding !== void 0 && encoding !== \"utf-8\") {\n throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${encoding}`);\n }\n this.socket.send(data);\n } else {\n this.socket.send(data);\n }\n return Promise.resolve();\n }\n end() {\n this.socket.close();\n }\n };\n var _textEncoder = new TextEncoder();\n var _ril = Object.freeze({\n messageBuffer: Object.freeze({\n create: /* @__PURE__ */ __name((encoding) => new MessageBuffer(encoding), \"create\")\n }),\n applicationJson: Object.freeze({\n encoder: Object.freeze({\n name: \"application/json\",\n encode: /* @__PURE__ */ __name((msg, options) => {\n if (options.charset !== \"utf-8\") {\n throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${options.charset}`);\n }\n return Promise.resolve(_textEncoder.encode(JSON.stringify(msg, void 0, 0)));\n }, \"encode\")\n }),\n decoder: Object.freeze({\n name: \"application/json\",\n decode: /* @__PURE__ */ __name((buffer, options) => {\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`In a Browser environments only Uint8Arrays are supported.`);\n }\n return Promise.resolve(JSON.parse(new TextDecoder(options.charset).decode(buffer)));\n }, \"decode\")\n })\n }),\n stream: Object.freeze({\n asReadableStream: /* @__PURE__ */ __name((socket) => new ReadableStreamWrapper(socket), \"asReadableStream\"),\n asWritableStream: /* @__PURE__ */ __name((socket) => new WritableStreamWrapper(socket), \"asWritableStream\")\n }),\n console,\n timer: Object.freeze({\n setTimeout(callback, ms, ...args) {\n const handle = setTimeout(callback, ms, ...args);\n return { dispose: /* @__PURE__ */ __name(() => clearTimeout(handle), \"dispose\") };\n },\n setImmediate(callback, ...args) {\n const handle = setTimeout(callback, 0, ...args);\n return { dispose: /* @__PURE__ */ __name(() => clearTimeout(handle), \"dispose\") };\n },\n setInterval(callback, ms, ...args) {\n const handle = setInterval(callback, ms, ...args);\n return { dispose: /* @__PURE__ */ __name(() => clearInterval(handle), \"dispose\") };\n }\n })\n });\n function RIL() {\n return _ril;\n }\n __name(RIL, \"RIL\");\n (function(RIL2) {\n function install() {\n api_1.RAL.install(_ril);\n }\n __name(install, \"install\");\n RIL2.install = install;\n })(RIL || (RIL = {}));\n exports2.default = RIL;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js\nvar require_main = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js\"(exports2) {\n \"use strict\";\n var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {\n if (k2 === void 0) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return m[k];\n }, \"get\") };\n }\n Object.defineProperty(o, k2, desc);\n }) : (function(o, m, k, k2) {\n if (k2 === void 0) k2 = k;\n o[k2] = m[k];\n }));\n var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.createMessageConnection = exports2.BrowserMessageWriter = exports2.BrowserMessageReader = void 0;\n var ril_1 = require_ril();\n ril_1.default.install();\n var api_1 = require_api();\n __exportStar(require_api(), exports2);\n var BrowserMessageReader = class extends api_1.AbstractMessageReader {\n static {\n __name(this, \"BrowserMessageReader\");\n }\n constructor(port) {\n super();\n this._onData = new api_1.Emitter();\n this._messageListener = (event) => {\n this._onData.fire(event.data);\n };\n port.addEventListener(\"error\", (event) => this.fireError(event));\n port.onmessage = this._messageListener;\n }\n listen(callback) {\n return this._onData.event(callback);\n }\n };\n exports2.BrowserMessageReader = BrowserMessageReader;\n var BrowserMessageWriter = class extends api_1.AbstractMessageWriter {\n static {\n __name(this, \"BrowserMessageWriter\");\n }\n constructor(port) {\n super();\n this.port = port;\n this.errorCount = 0;\n port.addEventListener(\"error\", (event) => this.fireError(event));\n }\n write(msg) {\n try {\n this.port.postMessage(msg);\n return Promise.resolve();\n } catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n };\n exports2.BrowserMessageWriter = BrowserMessageWriter;\n function createMessageConnection(reader, writer, logger, options) {\n if (logger === void 0) {\n logger = api_1.NullLogger;\n }\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n }\n __name(createMessageConnection, \"createMessageConnection\");\n exports2.createMessageConnection = createMessageConnection;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js\nvar require_browser = __commonJS({\n \"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = require_main();\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js\nvar require_messages2 = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.ProtocolNotificationType = exports2.ProtocolNotificationType0 = exports2.ProtocolRequestType = exports2.ProtocolRequestType0 = exports2.RegistrationType = exports2.MessageDirection = void 0;\n var vscode_jsonrpc_1 = require_main();\n var MessageDirection;\n (function(MessageDirection2) {\n MessageDirection2[\"clientToServer\"] = \"clientToServer\";\n MessageDirection2[\"serverToClient\"] = \"serverToClient\";\n MessageDirection2[\"both\"] = \"both\";\n })(MessageDirection || (exports2.MessageDirection = MessageDirection = {}));\n var RegistrationType = class {\n static {\n __name(this, \"RegistrationType\");\n }\n constructor(method) {\n this.method = method;\n }\n };\n exports2.RegistrationType = RegistrationType;\n var ProtocolRequestType0 = class extends vscode_jsonrpc_1.RequestType0 {\n static {\n __name(this, \"ProtocolRequestType0\");\n }\n constructor(method) {\n super(method);\n }\n };\n exports2.ProtocolRequestType0 = ProtocolRequestType0;\n var ProtocolRequestType = class extends vscode_jsonrpc_1.RequestType {\n static {\n __name(this, \"ProtocolRequestType\");\n }\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n };\n exports2.ProtocolRequestType = ProtocolRequestType;\n var ProtocolNotificationType0 = class extends vscode_jsonrpc_1.NotificationType0 {\n static {\n __name(this, \"ProtocolNotificationType0\");\n }\n constructor(method) {\n super(method);\n }\n };\n exports2.ProtocolNotificationType0 = ProtocolNotificationType0;\n var ProtocolNotificationType = class extends vscode_jsonrpc_1.NotificationType {\n static {\n __name(this, \"ProtocolNotificationType\");\n }\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n };\n exports2.ProtocolNotificationType = ProtocolNotificationType;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js\nvar require_is2 = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.objectLiteral = exports2.typedArray = exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0;\n function boolean(value) {\n return value === true || value === false;\n }\n __name(boolean, \"boolean\");\n exports2.boolean = boolean;\n function string(value) {\n return typeof value === \"string\" || value instanceof String;\n }\n __name(string, \"string\");\n exports2.string = string;\n function number(value) {\n return typeof value === \"number\" || value instanceof Number;\n }\n __name(number, \"number\");\n exports2.number = number;\n function error(value) {\n return value instanceof Error;\n }\n __name(error, \"error\");\n exports2.error = error;\n function func(value) {\n return typeof value === \"function\";\n }\n __name(func, \"func\");\n exports2.func = func;\n function array(value) {\n return Array.isArray(value);\n }\n __name(array, \"array\");\n exports2.array = array;\n function stringArray(value) {\n return array(value) && value.every((elem) => string(elem));\n }\n __name(stringArray, \"stringArray\");\n exports2.stringArray = stringArray;\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n __name(typedArray, \"typedArray\");\n exports2.typedArray = typedArray;\n function objectLiteral(value) {\n return value !== null && typeof value === \"object\";\n }\n __name(objectLiteral, \"objectLiteral\");\n exports2.objectLiteral = objectLiteral;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js\nvar require_protocol_implementation = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.ImplementationRequest = void 0;\n var messages_1 = require_messages2();\n var ImplementationRequest;\n (function(ImplementationRequest2) {\n ImplementationRequest2.method = \"textDocument/implementation\";\n ImplementationRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n ImplementationRequest2.type = new messages_1.ProtocolRequestType(ImplementationRequest2.method);\n })(ImplementationRequest || (exports2.ImplementationRequest = ImplementationRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js\nvar require_protocol_typeDefinition = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.TypeDefinitionRequest = void 0;\n var messages_1 = require_messages2();\n var TypeDefinitionRequest;\n (function(TypeDefinitionRequest2) {\n TypeDefinitionRequest2.method = \"textDocument/typeDefinition\";\n TypeDefinitionRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeDefinitionRequest2.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest2.method);\n })(TypeDefinitionRequest || (exports2.TypeDefinitionRequest = TypeDefinitionRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js\nvar require_protocol_workspaceFolder = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.DidChangeWorkspaceFoldersNotification = exports2.WorkspaceFoldersRequest = void 0;\n var messages_1 = require_messages2();\n var WorkspaceFoldersRequest;\n (function(WorkspaceFoldersRequest2) {\n WorkspaceFoldersRequest2.method = \"workspace/workspaceFolders\";\n WorkspaceFoldersRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n WorkspaceFoldersRequest2.type = new messages_1.ProtocolRequestType0(WorkspaceFoldersRequest2.method);\n })(WorkspaceFoldersRequest || (exports2.WorkspaceFoldersRequest = WorkspaceFoldersRequest = {}));\n var DidChangeWorkspaceFoldersNotification;\n (function(DidChangeWorkspaceFoldersNotification2) {\n DidChangeWorkspaceFoldersNotification2.method = \"workspace/didChangeWorkspaceFolders\";\n DidChangeWorkspaceFoldersNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeWorkspaceFoldersNotification2.type = new messages_1.ProtocolNotificationType(DidChangeWorkspaceFoldersNotification2.method);\n })(DidChangeWorkspaceFoldersNotification || (exports2.DidChangeWorkspaceFoldersNotification = DidChangeWorkspaceFoldersNotification = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js\nvar require_protocol_configuration = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.ConfigurationRequest = void 0;\n var messages_1 = require_messages2();\n var ConfigurationRequest;\n (function(ConfigurationRequest2) {\n ConfigurationRequest2.method = \"workspace/configuration\";\n ConfigurationRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n ConfigurationRequest2.type = new messages_1.ProtocolRequestType(ConfigurationRequest2.method);\n })(ConfigurationRequest || (exports2.ConfigurationRequest = ConfigurationRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js\nvar require_protocol_colorProvider = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.ColorPresentationRequest = exports2.DocumentColorRequest = void 0;\n var messages_1 = require_messages2();\n var DocumentColorRequest;\n (function(DocumentColorRequest2) {\n DocumentColorRequest2.method = \"textDocument/documentColor\";\n DocumentColorRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentColorRequest2.type = new messages_1.ProtocolRequestType(DocumentColorRequest2.method);\n })(DocumentColorRequest || (exports2.DocumentColorRequest = DocumentColorRequest = {}));\n var ColorPresentationRequest;\n (function(ColorPresentationRequest2) {\n ColorPresentationRequest2.method = \"textDocument/colorPresentation\";\n ColorPresentationRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n ColorPresentationRequest2.type = new messages_1.ProtocolRequestType(ColorPresentationRequest2.method);\n })(ColorPresentationRequest || (exports2.ColorPresentationRequest = ColorPresentationRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js\nvar require_protocol_foldingRange = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.FoldingRangeRefreshRequest = exports2.FoldingRangeRequest = void 0;\n var messages_1 = require_messages2();\n var FoldingRangeRequest;\n (function(FoldingRangeRequest2) {\n FoldingRangeRequest2.method = \"textDocument/foldingRange\";\n FoldingRangeRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n FoldingRangeRequest2.type = new messages_1.ProtocolRequestType(FoldingRangeRequest2.method);\n })(FoldingRangeRequest || (exports2.FoldingRangeRequest = FoldingRangeRequest = {}));\n var FoldingRangeRefreshRequest;\n (function(FoldingRangeRefreshRequest2) {\n FoldingRangeRefreshRequest2.method = `workspace/foldingRange/refresh`;\n FoldingRangeRefreshRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n FoldingRangeRefreshRequest2.type = new messages_1.ProtocolRequestType0(FoldingRangeRefreshRequest2.method);\n })(FoldingRangeRefreshRequest || (exports2.FoldingRangeRefreshRequest = FoldingRangeRefreshRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js\nvar require_protocol_declaration = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.DeclarationRequest = void 0;\n var messages_1 = require_messages2();\n var DeclarationRequest;\n (function(DeclarationRequest2) {\n DeclarationRequest2.method = \"textDocument/declaration\";\n DeclarationRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DeclarationRequest2.type = new messages_1.ProtocolRequestType(DeclarationRequest2.method);\n })(DeclarationRequest || (exports2.DeclarationRequest = DeclarationRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js\nvar require_protocol_selectionRange = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.SelectionRangeRequest = void 0;\n var messages_1 = require_messages2();\n var SelectionRangeRequest;\n (function(SelectionRangeRequest2) {\n SelectionRangeRequest2.method = \"textDocument/selectionRange\";\n SelectionRangeRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n SelectionRangeRequest2.type = new messages_1.ProtocolRequestType(SelectionRangeRequest2.method);\n })(SelectionRangeRequest || (exports2.SelectionRangeRequest = SelectionRangeRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js\nvar require_protocol_progress = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCreateRequest = exports2.WorkDoneProgress = void 0;\n var vscode_jsonrpc_1 = require_main();\n var messages_1 = require_messages2();\n var WorkDoneProgress;\n (function(WorkDoneProgress2) {\n WorkDoneProgress2.type = new vscode_jsonrpc_1.ProgressType();\n function is(value) {\n return value === WorkDoneProgress2.type;\n }\n __name(is, \"is\");\n WorkDoneProgress2.is = is;\n })(WorkDoneProgress || (exports2.WorkDoneProgress = WorkDoneProgress = {}));\n var WorkDoneProgressCreateRequest;\n (function(WorkDoneProgressCreateRequest2) {\n WorkDoneProgressCreateRequest2.method = \"window/workDoneProgress/create\";\n WorkDoneProgressCreateRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n WorkDoneProgressCreateRequest2.type = new messages_1.ProtocolRequestType(WorkDoneProgressCreateRequest2.method);\n })(WorkDoneProgressCreateRequest || (exports2.WorkDoneProgressCreateRequest = WorkDoneProgressCreateRequest = {}));\n var WorkDoneProgressCancelNotification;\n (function(WorkDoneProgressCancelNotification2) {\n WorkDoneProgressCancelNotification2.method = \"window/workDoneProgress/cancel\";\n WorkDoneProgressCancelNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkDoneProgressCancelNotification2.type = new messages_1.ProtocolNotificationType(WorkDoneProgressCancelNotification2.method);\n })(WorkDoneProgressCancelNotification || (exports2.WorkDoneProgressCancelNotification = WorkDoneProgressCancelNotification = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js\nvar require_protocol_callHierarchy = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyIncomingCallsRequest = exports2.CallHierarchyPrepareRequest = void 0;\n var messages_1 = require_messages2();\n var CallHierarchyPrepareRequest;\n (function(CallHierarchyPrepareRequest2) {\n CallHierarchyPrepareRequest2.method = \"textDocument/prepareCallHierarchy\";\n CallHierarchyPrepareRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyPrepareRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest2.method);\n })(CallHierarchyPrepareRequest || (exports2.CallHierarchyPrepareRequest = CallHierarchyPrepareRequest = {}));\n var CallHierarchyIncomingCallsRequest;\n (function(CallHierarchyIncomingCallsRequest2) {\n CallHierarchyIncomingCallsRequest2.method = \"callHierarchy/incomingCalls\";\n CallHierarchyIncomingCallsRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyIncomingCallsRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest2.method);\n })(CallHierarchyIncomingCallsRequest || (exports2.CallHierarchyIncomingCallsRequest = CallHierarchyIncomingCallsRequest = {}));\n var CallHierarchyOutgoingCallsRequest;\n (function(CallHierarchyOutgoingCallsRequest2) {\n CallHierarchyOutgoingCallsRequest2.method = \"callHierarchy/outgoingCalls\";\n CallHierarchyOutgoingCallsRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyOutgoingCallsRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest2.method);\n })(CallHierarchyOutgoingCallsRequest || (exports2.CallHierarchyOutgoingCallsRequest = CallHierarchyOutgoingCallsRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js\nvar require_protocol_semanticTokens = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.SemanticTokensRefreshRequest = exports2.SemanticTokensRangeRequest = exports2.SemanticTokensDeltaRequest = exports2.SemanticTokensRequest = exports2.SemanticTokensRegistrationType = exports2.TokenFormat = void 0;\n var messages_1 = require_messages2();\n var TokenFormat;\n (function(TokenFormat2) {\n TokenFormat2.Relative = \"relative\";\n })(TokenFormat || (exports2.TokenFormat = TokenFormat = {}));\n var SemanticTokensRegistrationType;\n (function(SemanticTokensRegistrationType2) {\n SemanticTokensRegistrationType2.method = \"textDocument/semanticTokens\";\n SemanticTokensRegistrationType2.type = new messages_1.RegistrationType(SemanticTokensRegistrationType2.method);\n })(SemanticTokensRegistrationType || (exports2.SemanticTokensRegistrationType = SemanticTokensRegistrationType = {}));\n var SemanticTokensRequest;\n (function(SemanticTokensRequest2) {\n SemanticTokensRequest2.method = \"textDocument/semanticTokens/full\";\n SemanticTokensRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensRequest2.method);\n SemanticTokensRequest2.registrationMethod = SemanticTokensRegistrationType.method;\n })(SemanticTokensRequest || (exports2.SemanticTokensRequest = SemanticTokensRequest = {}));\n var SemanticTokensDeltaRequest;\n (function(SemanticTokensDeltaRequest2) {\n SemanticTokensDeltaRequest2.method = \"textDocument/semanticTokens/full/delta\";\n SemanticTokensDeltaRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensDeltaRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensDeltaRequest2.method);\n SemanticTokensDeltaRequest2.registrationMethod = SemanticTokensRegistrationType.method;\n })(SemanticTokensDeltaRequest || (exports2.SemanticTokensDeltaRequest = SemanticTokensDeltaRequest = {}));\n var SemanticTokensRangeRequest;\n (function(SemanticTokensRangeRequest2) {\n SemanticTokensRangeRequest2.method = \"textDocument/semanticTokens/range\";\n SemanticTokensRangeRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensRangeRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest2.method);\n SemanticTokensRangeRequest2.registrationMethod = SemanticTokensRegistrationType.method;\n })(SemanticTokensRangeRequest || (exports2.SemanticTokensRangeRequest = SemanticTokensRangeRequest = {}));\n var SemanticTokensRefreshRequest;\n (function(SemanticTokensRefreshRequest2) {\n SemanticTokensRefreshRequest2.method = `workspace/semanticTokens/refresh`;\n SemanticTokensRefreshRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n SemanticTokensRefreshRequest2.type = new messages_1.ProtocolRequestType0(SemanticTokensRefreshRequest2.method);\n })(SemanticTokensRefreshRequest || (exports2.SemanticTokensRefreshRequest = SemanticTokensRefreshRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js\nvar require_protocol_showDocument = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.ShowDocumentRequest = void 0;\n var messages_1 = require_messages2();\n var ShowDocumentRequest;\n (function(ShowDocumentRequest2) {\n ShowDocumentRequest2.method = \"window/showDocument\";\n ShowDocumentRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowDocumentRequest2.type = new messages_1.ProtocolRequestType(ShowDocumentRequest2.method);\n })(ShowDocumentRequest || (exports2.ShowDocumentRequest = ShowDocumentRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js\nvar require_protocol_linkedEditingRange = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.LinkedEditingRangeRequest = void 0;\n var messages_1 = require_messages2();\n var LinkedEditingRangeRequest;\n (function(LinkedEditingRangeRequest2) {\n LinkedEditingRangeRequest2.method = \"textDocument/linkedEditingRange\";\n LinkedEditingRangeRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n LinkedEditingRangeRequest2.type = new messages_1.ProtocolRequestType(LinkedEditingRangeRequest2.method);\n })(LinkedEditingRangeRequest || (exports2.LinkedEditingRangeRequest = LinkedEditingRangeRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js\nvar require_protocol_fileOperations = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.WillDeleteFilesRequest = exports2.DidDeleteFilesNotification = exports2.DidRenameFilesNotification = exports2.WillRenameFilesRequest = exports2.DidCreateFilesNotification = exports2.WillCreateFilesRequest = exports2.FileOperationPatternKind = void 0;\n var messages_1 = require_messages2();\n var FileOperationPatternKind;\n (function(FileOperationPatternKind2) {\n FileOperationPatternKind2.file = \"file\";\n FileOperationPatternKind2.folder = \"folder\";\n })(FileOperationPatternKind || (exports2.FileOperationPatternKind = FileOperationPatternKind = {}));\n var WillCreateFilesRequest;\n (function(WillCreateFilesRequest2) {\n WillCreateFilesRequest2.method = \"workspace/willCreateFiles\";\n WillCreateFilesRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n WillCreateFilesRequest2.type = new messages_1.ProtocolRequestType(WillCreateFilesRequest2.method);\n })(WillCreateFilesRequest || (exports2.WillCreateFilesRequest = WillCreateFilesRequest = {}));\n var DidCreateFilesNotification;\n (function(DidCreateFilesNotification2) {\n DidCreateFilesNotification2.method = \"workspace/didCreateFiles\";\n DidCreateFilesNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCreateFilesNotification2.type = new messages_1.ProtocolNotificationType(DidCreateFilesNotification2.method);\n })(DidCreateFilesNotification || (exports2.DidCreateFilesNotification = DidCreateFilesNotification = {}));\n var WillRenameFilesRequest;\n (function(WillRenameFilesRequest2) {\n WillRenameFilesRequest2.method = \"workspace/willRenameFiles\";\n WillRenameFilesRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n WillRenameFilesRequest2.type = new messages_1.ProtocolRequestType(WillRenameFilesRequest2.method);\n })(WillRenameFilesRequest || (exports2.WillRenameFilesRequest = WillRenameFilesRequest = {}));\n var DidRenameFilesNotification;\n (function(DidRenameFilesNotification2) {\n DidRenameFilesNotification2.method = \"workspace/didRenameFiles\";\n DidRenameFilesNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidRenameFilesNotification2.type = new messages_1.ProtocolNotificationType(DidRenameFilesNotification2.method);\n })(DidRenameFilesNotification || (exports2.DidRenameFilesNotification = DidRenameFilesNotification = {}));\n var DidDeleteFilesNotification;\n (function(DidDeleteFilesNotification2) {\n DidDeleteFilesNotification2.method = \"workspace/didDeleteFiles\";\n DidDeleteFilesNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidDeleteFilesNotification2.type = new messages_1.ProtocolNotificationType(DidDeleteFilesNotification2.method);\n })(DidDeleteFilesNotification || (exports2.DidDeleteFilesNotification = DidDeleteFilesNotification = {}));\n var WillDeleteFilesRequest;\n (function(WillDeleteFilesRequest2) {\n WillDeleteFilesRequest2.method = \"workspace/willDeleteFiles\";\n WillDeleteFilesRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n WillDeleteFilesRequest2.type = new messages_1.ProtocolRequestType(WillDeleteFilesRequest2.method);\n })(WillDeleteFilesRequest || (exports2.WillDeleteFilesRequest = WillDeleteFilesRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js\nvar require_protocol_moniker = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.MonikerRequest = exports2.MonikerKind = exports2.UniquenessLevel = void 0;\n var messages_1 = require_messages2();\n var UniquenessLevel;\n (function(UniquenessLevel2) {\n UniquenessLevel2.document = \"document\";\n UniquenessLevel2.project = \"project\";\n UniquenessLevel2.group = \"group\";\n UniquenessLevel2.scheme = \"scheme\";\n UniquenessLevel2.global = \"global\";\n })(UniquenessLevel || (exports2.UniquenessLevel = UniquenessLevel = {}));\n var MonikerKind;\n (function(MonikerKind2) {\n MonikerKind2.$import = \"import\";\n MonikerKind2.$export = \"export\";\n MonikerKind2.local = \"local\";\n })(MonikerKind || (exports2.MonikerKind = MonikerKind = {}));\n var MonikerRequest;\n (function(MonikerRequest2) {\n MonikerRequest2.method = \"textDocument/moniker\";\n MonikerRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n MonikerRequest2.type = new messages_1.ProtocolRequestType(MonikerRequest2.method);\n })(MonikerRequest || (exports2.MonikerRequest = MonikerRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js\nvar require_protocol_typeHierarchy = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.TypeHierarchySubtypesRequest = exports2.TypeHierarchySupertypesRequest = exports2.TypeHierarchyPrepareRequest = void 0;\n var messages_1 = require_messages2();\n var TypeHierarchyPrepareRequest;\n (function(TypeHierarchyPrepareRequest2) {\n TypeHierarchyPrepareRequest2.method = \"textDocument/prepareTypeHierarchy\";\n TypeHierarchyPrepareRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchyPrepareRequest2.type = new messages_1.ProtocolRequestType(TypeHierarchyPrepareRequest2.method);\n })(TypeHierarchyPrepareRequest || (exports2.TypeHierarchyPrepareRequest = TypeHierarchyPrepareRequest = {}));\n var TypeHierarchySupertypesRequest;\n (function(TypeHierarchySupertypesRequest2) {\n TypeHierarchySupertypesRequest2.method = \"typeHierarchy/supertypes\";\n TypeHierarchySupertypesRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchySupertypesRequest2.type = new messages_1.ProtocolRequestType(TypeHierarchySupertypesRequest2.method);\n })(TypeHierarchySupertypesRequest || (exports2.TypeHierarchySupertypesRequest = TypeHierarchySupertypesRequest = {}));\n var TypeHierarchySubtypesRequest;\n (function(TypeHierarchySubtypesRequest2) {\n TypeHierarchySubtypesRequest2.method = \"typeHierarchy/subtypes\";\n TypeHierarchySubtypesRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchySubtypesRequest2.type = new messages_1.ProtocolRequestType(TypeHierarchySubtypesRequest2.method);\n })(TypeHierarchySubtypesRequest || (exports2.TypeHierarchySubtypesRequest = TypeHierarchySubtypesRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js\nvar require_protocol_inlineValue = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.InlineValueRefreshRequest = exports2.InlineValueRequest = void 0;\n var messages_1 = require_messages2();\n var InlineValueRequest;\n (function(InlineValueRequest2) {\n InlineValueRequest2.method = \"textDocument/inlineValue\";\n InlineValueRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n InlineValueRequest2.type = new messages_1.ProtocolRequestType(InlineValueRequest2.method);\n })(InlineValueRequest || (exports2.InlineValueRequest = InlineValueRequest = {}));\n var InlineValueRefreshRequest;\n (function(InlineValueRefreshRequest2) {\n InlineValueRefreshRequest2.method = `workspace/inlineValue/refresh`;\n InlineValueRefreshRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n InlineValueRefreshRequest2.type = new messages_1.ProtocolRequestType0(InlineValueRefreshRequest2.method);\n })(InlineValueRefreshRequest || (exports2.InlineValueRefreshRequest = InlineValueRefreshRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js\nvar require_protocol_inlayHint = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.InlayHintRefreshRequest = exports2.InlayHintResolveRequest = exports2.InlayHintRequest = void 0;\n var messages_1 = require_messages2();\n var InlayHintRequest;\n (function(InlayHintRequest2) {\n InlayHintRequest2.method = \"textDocument/inlayHint\";\n InlayHintRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n InlayHintRequest2.type = new messages_1.ProtocolRequestType(InlayHintRequest2.method);\n })(InlayHintRequest || (exports2.InlayHintRequest = InlayHintRequest = {}));\n var InlayHintResolveRequest;\n (function(InlayHintResolveRequest2) {\n InlayHintResolveRequest2.method = \"inlayHint/resolve\";\n InlayHintResolveRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n InlayHintResolveRequest2.type = new messages_1.ProtocolRequestType(InlayHintResolveRequest2.method);\n })(InlayHintResolveRequest || (exports2.InlayHintResolveRequest = InlayHintResolveRequest = {}));\n var InlayHintRefreshRequest;\n (function(InlayHintRefreshRequest2) {\n InlayHintRefreshRequest2.method = `workspace/inlayHint/refresh`;\n InlayHintRefreshRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n InlayHintRefreshRequest2.type = new messages_1.ProtocolRequestType0(InlayHintRefreshRequest2.method);\n })(InlayHintRefreshRequest || (exports2.InlayHintRefreshRequest = InlayHintRefreshRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js\nvar require_protocol_diagnostic = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.DiagnosticRefreshRequest = exports2.WorkspaceDiagnosticRequest = exports2.DocumentDiagnosticRequest = exports2.DocumentDiagnosticReportKind = exports2.DiagnosticServerCancellationData = void 0;\n var vscode_jsonrpc_1 = require_main();\n var Is2 = require_is2();\n var messages_1 = require_messages2();\n var DiagnosticServerCancellationData;\n (function(DiagnosticServerCancellationData2) {\n function is(value) {\n const candidate = value;\n return candidate && Is2.boolean(candidate.retriggerRequest);\n }\n __name(is, \"is\");\n DiagnosticServerCancellationData2.is = is;\n })(DiagnosticServerCancellationData || (exports2.DiagnosticServerCancellationData = DiagnosticServerCancellationData = {}));\n var DocumentDiagnosticReportKind;\n (function(DocumentDiagnosticReportKind2) {\n DocumentDiagnosticReportKind2.Full = \"full\";\n DocumentDiagnosticReportKind2.Unchanged = \"unchanged\";\n })(DocumentDiagnosticReportKind || (exports2.DocumentDiagnosticReportKind = DocumentDiagnosticReportKind = {}));\n var DocumentDiagnosticRequest;\n (function(DocumentDiagnosticRequest2) {\n DocumentDiagnosticRequest2.method = \"textDocument/diagnostic\";\n DocumentDiagnosticRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentDiagnosticRequest2.type = new messages_1.ProtocolRequestType(DocumentDiagnosticRequest2.method);\n DocumentDiagnosticRequest2.partialResult = new vscode_jsonrpc_1.ProgressType();\n })(DocumentDiagnosticRequest || (exports2.DocumentDiagnosticRequest = DocumentDiagnosticRequest = {}));\n var WorkspaceDiagnosticRequest;\n (function(WorkspaceDiagnosticRequest2) {\n WorkspaceDiagnosticRequest2.method = \"workspace/diagnostic\";\n WorkspaceDiagnosticRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceDiagnosticRequest2.type = new messages_1.ProtocolRequestType(WorkspaceDiagnosticRequest2.method);\n WorkspaceDiagnosticRequest2.partialResult = new vscode_jsonrpc_1.ProgressType();\n })(WorkspaceDiagnosticRequest || (exports2.WorkspaceDiagnosticRequest = WorkspaceDiagnosticRequest = {}));\n var DiagnosticRefreshRequest;\n (function(DiagnosticRefreshRequest2) {\n DiagnosticRefreshRequest2.method = `workspace/diagnostic/refresh`;\n DiagnosticRefreshRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n DiagnosticRefreshRequest2.type = new messages_1.ProtocolRequestType0(DiagnosticRefreshRequest2.method);\n })(DiagnosticRefreshRequest || (exports2.DiagnosticRefreshRequest = DiagnosticRefreshRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js\nvar require_protocol_notebook = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.DidCloseNotebookDocumentNotification = exports2.DidSaveNotebookDocumentNotification = exports2.DidChangeNotebookDocumentNotification = exports2.NotebookCellArrayChange = exports2.DidOpenNotebookDocumentNotification = exports2.NotebookDocumentSyncRegistrationType = exports2.NotebookDocument = exports2.NotebookCell = exports2.ExecutionSummary = exports2.NotebookCellKind = void 0;\n var vscode_languageserver_types_1 = (init_main(), __toCommonJS(main_exports));\n var Is2 = require_is2();\n var messages_1 = require_messages2();\n var NotebookCellKind;\n (function(NotebookCellKind2) {\n NotebookCellKind2.Markup = 1;\n NotebookCellKind2.Code = 2;\n function is(value) {\n return value === 1 || value === 2;\n }\n __name(is, \"is\");\n NotebookCellKind2.is = is;\n })(NotebookCellKind || (exports2.NotebookCellKind = NotebookCellKind = {}));\n var ExecutionSummary;\n (function(ExecutionSummary2) {\n function create(executionOrder, success) {\n const result = { executionOrder };\n if (success === true || success === false) {\n result.success = success;\n }\n return result;\n }\n __name(create, \"create\");\n ExecutionSummary2.create = create;\n function is(value) {\n const candidate = value;\n return Is2.objectLiteral(candidate) && vscode_languageserver_types_1.uinteger.is(candidate.executionOrder) && (candidate.success === void 0 || Is2.boolean(candidate.success));\n }\n __name(is, \"is\");\n ExecutionSummary2.is = is;\n function equals(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === void 0 || other === null || other === void 0) {\n return false;\n }\n return one.executionOrder === other.executionOrder && one.success === other.success;\n }\n __name(equals, \"equals\");\n ExecutionSummary2.equals = equals;\n })(ExecutionSummary || (exports2.ExecutionSummary = ExecutionSummary = {}));\n var NotebookCell;\n (function(NotebookCell2) {\n function create(kind, document) {\n return { kind, document };\n }\n __name(create, \"create\");\n NotebookCell2.create = create;\n function is(value) {\n const candidate = value;\n return Is2.objectLiteral(candidate) && NotebookCellKind.is(candidate.kind) && vscode_languageserver_types_1.DocumentUri.is(candidate.document) && (candidate.metadata === void 0 || Is2.objectLiteral(candidate.metadata));\n }\n __name(is, \"is\");\n NotebookCell2.is = is;\n function diff(one, two) {\n const result = /* @__PURE__ */ new Set();\n if (one.document !== two.document) {\n result.add(\"document\");\n }\n if (one.kind !== two.kind) {\n result.add(\"kind\");\n }\n if (one.executionSummary !== two.executionSummary) {\n result.add(\"executionSummary\");\n }\n if ((one.metadata !== void 0 || two.metadata !== void 0) && !equalsMetadata(one.metadata, two.metadata)) {\n result.add(\"metadata\");\n }\n if ((one.executionSummary !== void 0 || two.executionSummary !== void 0) && !ExecutionSummary.equals(one.executionSummary, two.executionSummary)) {\n result.add(\"executionSummary\");\n }\n return result;\n }\n __name(diff, \"diff\");\n NotebookCell2.diff = diff;\n function equalsMetadata(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === void 0 || other === null || other === void 0) {\n return false;\n }\n if (typeof one !== typeof other) {\n return false;\n }\n if (typeof one !== \"object\") {\n return false;\n }\n const oneArray = Array.isArray(one);\n const otherArray = Array.isArray(other);\n if (oneArray !== otherArray) {\n return false;\n }\n if (oneArray && otherArray) {\n if (one.length !== other.length) {\n return false;\n }\n for (let i = 0; i < one.length; i++) {\n if (!equalsMetadata(one[i], other[i])) {\n return false;\n }\n }\n }\n if (Is2.objectLiteral(one) && Is2.objectLiteral(other)) {\n const oneKeys = Object.keys(one);\n const otherKeys = Object.keys(other);\n if (oneKeys.length !== otherKeys.length) {\n return false;\n }\n oneKeys.sort();\n otherKeys.sort();\n if (!equalsMetadata(oneKeys, otherKeys)) {\n return false;\n }\n for (let i = 0; i < oneKeys.length; i++) {\n const prop = oneKeys[i];\n if (!equalsMetadata(one[prop], other[prop])) {\n return false;\n }\n }\n }\n return true;\n }\n __name(equalsMetadata, \"equalsMetadata\");\n })(NotebookCell || (exports2.NotebookCell = NotebookCell = {}));\n var NotebookDocument;\n (function(NotebookDocument2) {\n function create(uri, notebookType, version, cells) {\n return { uri, notebookType, version, cells };\n }\n __name(create, \"create\");\n NotebookDocument2.create = create;\n function is(value) {\n const candidate = value;\n return Is2.objectLiteral(candidate) && Is2.string(candidate.uri) && vscode_languageserver_types_1.integer.is(candidate.version) && Is2.typedArray(candidate.cells, NotebookCell.is);\n }\n __name(is, \"is\");\n NotebookDocument2.is = is;\n })(NotebookDocument || (exports2.NotebookDocument = NotebookDocument = {}));\n var NotebookDocumentSyncRegistrationType;\n (function(NotebookDocumentSyncRegistrationType2) {\n NotebookDocumentSyncRegistrationType2.method = \"notebookDocument/sync\";\n NotebookDocumentSyncRegistrationType2.messageDirection = messages_1.MessageDirection.clientToServer;\n NotebookDocumentSyncRegistrationType2.type = new messages_1.RegistrationType(NotebookDocumentSyncRegistrationType2.method);\n })(NotebookDocumentSyncRegistrationType || (exports2.NotebookDocumentSyncRegistrationType = NotebookDocumentSyncRegistrationType = {}));\n var DidOpenNotebookDocumentNotification;\n (function(DidOpenNotebookDocumentNotification2) {\n DidOpenNotebookDocumentNotification2.method = \"notebookDocument/didOpen\";\n DidOpenNotebookDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidOpenNotebookDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidOpenNotebookDocumentNotification2.method);\n DidOpenNotebookDocumentNotification2.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n })(DidOpenNotebookDocumentNotification || (exports2.DidOpenNotebookDocumentNotification = DidOpenNotebookDocumentNotification = {}));\n var NotebookCellArrayChange;\n (function(NotebookCellArrayChange2) {\n function is(value) {\n const candidate = value;\n return Is2.objectLiteral(candidate) && vscode_languageserver_types_1.uinteger.is(candidate.start) && vscode_languageserver_types_1.uinteger.is(candidate.deleteCount) && (candidate.cells === void 0 || Is2.typedArray(candidate.cells, NotebookCell.is));\n }\n __name(is, \"is\");\n NotebookCellArrayChange2.is = is;\n function create(start, deleteCount, cells) {\n const result = { start, deleteCount };\n if (cells !== void 0) {\n result.cells = cells;\n }\n return result;\n }\n __name(create, \"create\");\n NotebookCellArrayChange2.create = create;\n })(NotebookCellArrayChange || (exports2.NotebookCellArrayChange = NotebookCellArrayChange = {}));\n var DidChangeNotebookDocumentNotification;\n (function(DidChangeNotebookDocumentNotification2) {\n DidChangeNotebookDocumentNotification2.method = \"notebookDocument/didChange\";\n DidChangeNotebookDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeNotebookDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidChangeNotebookDocumentNotification2.method);\n DidChangeNotebookDocumentNotification2.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n })(DidChangeNotebookDocumentNotification || (exports2.DidChangeNotebookDocumentNotification = DidChangeNotebookDocumentNotification = {}));\n var DidSaveNotebookDocumentNotification;\n (function(DidSaveNotebookDocumentNotification2) {\n DidSaveNotebookDocumentNotification2.method = \"notebookDocument/didSave\";\n DidSaveNotebookDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidSaveNotebookDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidSaveNotebookDocumentNotification2.method);\n DidSaveNotebookDocumentNotification2.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n })(DidSaveNotebookDocumentNotification || (exports2.DidSaveNotebookDocumentNotification = DidSaveNotebookDocumentNotification = {}));\n var DidCloseNotebookDocumentNotification;\n (function(DidCloseNotebookDocumentNotification2) {\n DidCloseNotebookDocumentNotification2.method = \"notebookDocument/didClose\";\n DidCloseNotebookDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCloseNotebookDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidCloseNotebookDocumentNotification2.method);\n DidCloseNotebookDocumentNotification2.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n })(DidCloseNotebookDocumentNotification || (exports2.DidCloseNotebookDocumentNotification = DidCloseNotebookDocumentNotification = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js\nvar require_protocol_inlineCompletion = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.InlineCompletionRequest = void 0;\n var messages_1 = require_messages2();\n var InlineCompletionRequest;\n (function(InlineCompletionRequest2) {\n InlineCompletionRequest2.method = \"textDocument/inlineCompletion\";\n InlineCompletionRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n InlineCompletionRequest2.type = new messages_1.ProtocolRequestType(InlineCompletionRequest2.method);\n })(InlineCompletionRequest || (exports2.InlineCompletionRequest = InlineCompletionRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.js\nvar require_protocol = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.WorkspaceSymbolRequest = exports2.CodeActionResolveRequest = exports2.CodeActionRequest = exports2.DocumentSymbolRequest = exports2.DocumentHighlightRequest = exports2.ReferencesRequest = exports2.DefinitionRequest = exports2.SignatureHelpRequest = exports2.SignatureHelpTriggerKind = exports2.HoverRequest = exports2.CompletionResolveRequest = exports2.CompletionRequest = exports2.CompletionTriggerKind = exports2.PublishDiagnosticsNotification = exports2.WatchKind = exports2.RelativePattern = exports2.FileChangeType = exports2.DidChangeWatchedFilesNotification = exports2.WillSaveTextDocumentWaitUntilRequest = exports2.WillSaveTextDocumentNotification = exports2.TextDocumentSaveReason = exports2.DidSaveTextDocumentNotification = exports2.DidCloseTextDocumentNotification = exports2.DidChangeTextDocumentNotification = exports2.TextDocumentContentChangeEvent = exports2.DidOpenTextDocumentNotification = exports2.TextDocumentSyncKind = exports2.TelemetryEventNotification = exports2.LogMessageNotification = exports2.ShowMessageRequest = exports2.ShowMessageNotification = exports2.MessageType = exports2.DidChangeConfigurationNotification = exports2.ExitNotification = exports2.ShutdownRequest = exports2.InitializedNotification = exports2.InitializeErrorCodes = exports2.InitializeRequest = exports2.WorkDoneProgressOptions = exports2.TextDocumentRegistrationOptions = exports2.StaticRegistrationOptions = exports2.PositionEncodingKind = exports2.FailureHandlingKind = exports2.ResourceOperationKind = exports2.UnregistrationRequest = exports2.RegistrationRequest = exports2.DocumentSelector = exports2.NotebookCellTextDocumentFilter = exports2.NotebookDocumentFilter = exports2.TextDocumentFilter = void 0;\n exports2.MonikerRequest = exports2.MonikerKind = exports2.UniquenessLevel = exports2.WillDeleteFilesRequest = exports2.DidDeleteFilesNotification = exports2.WillRenameFilesRequest = exports2.DidRenameFilesNotification = exports2.WillCreateFilesRequest = exports2.DidCreateFilesNotification = exports2.FileOperationPatternKind = exports2.LinkedEditingRangeRequest = exports2.ShowDocumentRequest = exports2.SemanticTokensRegistrationType = exports2.SemanticTokensRefreshRequest = exports2.SemanticTokensRangeRequest = exports2.SemanticTokensDeltaRequest = exports2.SemanticTokensRequest = exports2.TokenFormat = exports2.CallHierarchyPrepareRequest = exports2.CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyIncomingCallsRequest = exports2.WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCreateRequest = exports2.WorkDoneProgress = exports2.SelectionRangeRequest = exports2.DeclarationRequest = exports2.FoldingRangeRefreshRequest = exports2.FoldingRangeRequest = exports2.ColorPresentationRequest = exports2.DocumentColorRequest = exports2.ConfigurationRequest = exports2.DidChangeWorkspaceFoldersNotification = exports2.WorkspaceFoldersRequest = exports2.TypeDefinitionRequest = exports2.ImplementationRequest = exports2.ApplyWorkspaceEditRequest = exports2.ExecuteCommandRequest = exports2.PrepareRenameRequest = exports2.RenameRequest = exports2.PrepareSupportDefaultBehavior = exports2.DocumentOnTypeFormattingRequest = exports2.DocumentRangesFormattingRequest = exports2.DocumentRangeFormattingRequest = exports2.DocumentFormattingRequest = exports2.DocumentLinkResolveRequest = exports2.DocumentLinkRequest = exports2.CodeLensRefreshRequest = exports2.CodeLensResolveRequest = exports2.CodeLensRequest = exports2.WorkspaceSymbolResolveRequest = void 0;\n exports2.InlineCompletionRequest = exports2.DidCloseNotebookDocumentNotification = exports2.DidSaveNotebookDocumentNotification = exports2.DidChangeNotebookDocumentNotification = exports2.NotebookCellArrayChange = exports2.DidOpenNotebookDocumentNotification = exports2.NotebookDocumentSyncRegistrationType = exports2.NotebookDocument = exports2.NotebookCell = exports2.ExecutionSummary = exports2.NotebookCellKind = exports2.DiagnosticRefreshRequest = exports2.WorkspaceDiagnosticRequest = exports2.DocumentDiagnosticRequest = exports2.DocumentDiagnosticReportKind = exports2.DiagnosticServerCancellationData = exports2.InlayHintRefreshRequest = exports2.InlayHintResolveRequest = exports2.InlayHintRequest = exports2.InlineValueRefreshRequest = exports2.InlineValueRequest = exports2.TypeHierarchySupertypesRequest = exports2.TypeHierarchySubtypesRequest = exports2.TypeHierarchyPrepareRequest = void 0;\n var messages_1 = require_messages2();\n var vscode_languageserver_types_1 = (init_main(), __toCommonJS(main_exports));\n var Is2 = require_is2();\n var protocol_implementation_1 = require_protocol_implementation();\n Object.defineProperty(exports2, \"ImplementationRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_implementation_1.ImplementationRequest;\n }, \"get\") });\n var protocol_typeDefinition_1 = require_protocol_typeDefinition();\n Object.defineProperty(exports2, \"TypeDefinitionRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_typeDefinition_1.TypeDefinitionRequest;\n }, \"get\") });\n var protocol_workspaceFolder_1 = require_protocol_workspaceFolder();\n Object.defineProperty(exports2, \"WorkspaceFoldersRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_workspaceFolder_1.WorkspaceFoldersRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"DidChangeWorkspaceFoldersNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_workspaceFolder_1.DidChangeWorkspaceFoldersNotification;\n }, \"get\") });\n var protocol_configuration_1 = require_protocol_configuration();\n Object.defineProperty(exports2, \"ConfigurationRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_configuration_1.ConfigurationRequest;\n }, \"get\") });\n var protocol_colorProvider_1 = require_protocol_colorProvider();\n Object.defineProperty(exports2, \"DocumentColorRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_colorProvider_1.DocumentColorRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"ColorPresentationRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_colorProvider_1.ColorPresentationRequest;\n }, \"get\") });\n var protocol_foldingRange_1 = require_protocol_foldingRange();\n Object.defineProperty(exports2, \"FoldingRangeRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_foldingRange_1.FoldingRangeRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"FoldingRangeRefreshRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_foldingRange_1.FoldingRangeRefreshRequest;\n }, \"get\") });\n var protocol_declaration_1 = require_protocol_declaration();\n Object.defineProperty(exports2, \"DeclarationRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_declaration_1.DeclarationRequest;\n }, \"get\") });\n var protocol_selectionRange_1 = require_protocol_selectionRange();\n Object.defineProperty(exports2, \"SelectionRangeRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_selectionRange_1.SelectionRangeRequest;\n }, \"get\") });\n var protocol_progress_1 = require_protocol_progress();\n Object.defineProperty(exports2, \"WorkDoneProgress\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_progress_1.WorkDoneProgress;\n }, \"get\") });\n Object.defineProperty(exports2, \"WorkDoneProgressCreateRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_progress_1.WorkDoneProgressCreateRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"WorkDoneProgressCancelNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_progress_1.WorkDoneProgressCancelNotification;\n }, \"get\") });\n var protocol_callHierarchy_1 = require_protocol_callHierarchy();\n Object.defineProperty(exports2, \"CallHierarchyIncomingCallsRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_callHierarchy_1.CallHierarchyIncomingCallsRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"CallHierarchyOutgoingCallsRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_callHierarchy_1.CallHierarchyOutgoingCallsRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"CallHierarchyPrepareRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_callHierarchy_1.CallHierarchyPrepareRequest;\n }, \"get\") });\n var protocol_semanticTokens_1 = require_protocol_semanticTokens();\n Object.defineProperty(exports2, \"TokenFormat\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_semanticTokens_1.TokenFormat;\n }, \"get\") });\n Object.defineProperty(exports2, \"SemanticTokensRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_semanticTokens_1.SemanticTokensRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"SemanticTokensDeltaRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_semanticTokens_1.SemanticTokensDeltaRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"SemanticTokensRangeRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_semanticTokens_1.SemanticTokensRangeRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"SemanticTokensRefreshRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_semanticTokens_1.SemanticTokensRefreshRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"SemanticTokensRegistrationType\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_semanticTokens_1.SemanticTokensRegistrationType;\n }, \"get\") });\n var protocol_showDocument_1 = require_protocol_showDocument();\n Object.defineProperty(exports2, \"ShowDocumentRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_showDocument_1.ShowDocumentRequest;\n }, \"get\") });\n var protocol_linkedEditingRange_1 = require_protocol_linkedEditingRange();\n Object.defineProperty(exports2, \"LinkedEditingRangeRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_linkedEditingRange_1.LinkedEditingRangeRequest;\n }, \"get\") });\n var protocol_fileOperations_1 = require_protocol_fileOperations();\n Object.defineProperty(exports2, \"FileOperationPatternKind\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_fileOperations_1.FileOperationPatternKind;\n }, \"get\") });\n Object.defineProperty(exports2, \"DidCreateFilesNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_fileOperations_1.DidCreateFilesNotification;\n }, \"get\") });\n Object.defineProperty(exports2, \"WillCreateFilesRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_fileOperations_1.WillCreateFilesRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"DidRenameFilesNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_fileOperations_1.DidRenameFilesNotification;\n }, \"get\") });\n Object.defineProperty(exports2, \"WillRenameFilesRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_fileOperations_1.WillRenameFilesRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"DidDeleteFilesNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_fileOperations_1.DidDeleteFilesNotification;\n }, \"get\") });\n Object.defineProperty(exports2, \"WillDeleteFilesRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_fileOperations_1.WillDeleteFilesRequest;\n }, \"get\") });\n var protocol_moniker_1 = require_protocol_moniker();\n Object.defineProperty(exports2, \"UniquenessLevel\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_moniker_1.UniquenessLevel;\n }, \"get\") });\n Object.defineProperty(exports2, \"MonikerKind\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_moniker_1.MonikerKind;\n }, \"get\") });\n Object.defineProperty(exports2, \"MonikerRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_moniker_1.MonikerRequest;\n }, \"get\") });\n var protocol_typeHierarchy_1 = require_protocol_typeHierarchy();\n Object.defineProperty(exports2, \"TypeHierarchyPrepareRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_typeHierarchy_1.TypeHierarchyPrepareRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"TypeHierarchySubtypesRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_typeHierarchy_1.TypeHierarchySubtypesRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"TypeHierarchySupertypesRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_typeHierarchy_1.TypeHierarchySupertypesRequest;\n }, \"get\") });\n var protocol_inlineValue_1 = require_protocol_inlineValue();\n Object.defineProperty(exports2, \"InlineValueRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_inlineValue_1.InlineValueRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"InlineValueRefreshRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_inlineValue_1.InlineValueRefreshRequest;\n }, \"get\") });\n var protocol_inlayHint_1 = require_protocol_inlayHint();\n Object.defineProperty(exports2, \"InlayHintRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_inlayHint_1.InlayHintRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"InlayHintResolveRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_inlayHint_1.InlayHintResolveRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"InlayHintRefreshRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_inlayHint_1.InlayHintRefreshRequest;\n }, \"get\") });\n var protocol_diagnostic_1 = require_protocol_diagnostic();\n Object.defineProperty(exports2, \"DiagnosticServerCancellationData\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_diagnostic_1.DiagnosticServerCancellationData;\n }, \"get\") });\n Object.defineProperty(exports2, \"DocumentDiagnosticReportKind\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_diagnostic_1.DocumentDiagnosticReportKind;\n }, \"get\") });\n Object.defineProperty(exports2, \"DocumentDiagnosticRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_diagnostic_1.DocumentDiagnosticRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"WorkspaceDiagnosticRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_diagnostic_1.WorkspaceDiagnosticRequest;\n }, \"get\") });\n Object.defineProperty(exports2, \"DiagnosticRefreshRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_diagnostic_1.DiagnosticRefreshRequest;\n }, \"get\") });\n var protocol_notebook_1 = require_protocol_notebook();\n Object.defineProperty(exports2, \"NotebookCellKind\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.NotebookCellKind;\n }, \"get\") });\n Object.defineProperty(exports2, \"ExecutionSummary\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.ExecutionSummary;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotebookCell\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.NotebookCell;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotebookDocument\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.NotebookDocument;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotebookDocumentSyncRegistrationType\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.NotebookDocumentSyncRegistrationType;\n }, \"get\") });\n Object.defineProperty(exports2, \"DidOpenNotebookDocumentNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.DidOpenNotebookDocumentNotification;\n }, \"get\") });\n Object.defineProperty(exports2, \"NotebookCellArrayChange\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.NotebookCellArrayChange;\n }, \"get\") });\n Object.defineProperty(exports2, \"DidChangeNotebookDocumentNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.DidChangeNotebookDocumentNotification;\n }, \"get\") });\n Object.defineProperty(exports2, \"DidSaveNotebookDocumentNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.DidSaveNotebookDocumentNotification;\n }, \"get\") });\n Object.defineProperty(exports2, \"DidCloseNotebookDocumentNotification\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_notebook_1.DidCloseNotebookDocumentNotification;\n }, \"get\") });\n var protocol_inlineCompletion_1 = require_protocol_inlineCompletion();\n Object.defineProperty(exports2, \"InlineCompletionRequest\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return protocol_inlineCompletion_1.InlineCompletionRequest;\n }, \"get\") });\n var TextDocumentFilter;\n (function(TextDocumentFilter2) {\n function is(value) {\n const candidate = value;\n return Is2.string(candidate) || (Is2.string(candidate.language) || Is2.string(candidate.scheme) || Is2.string(candidate.pattern));\n }\n __name(is, \"is\");\n TextDocumentFilter2.is = is;\n })(TextDocumentFilter || (exports2.TextDocumentFilter = TextDocumentFilter = {}));\n var NotebookDocumentFilter;\n (function(NotebookDocumentFilter2) {\n function is(value) {\n const candidate = value;\n return Is2.objectLiteral(candidate) && (Is2.string(candidate.notebookType) || Is2.string(candidate.scheme) || Is2.string(candidate.pattern));\n }\n __name(is, \"is\");\n NotebookDocumentFilter2.is = is;\n })(NotebookDocumentFilter || (exports2.NotebookDocumentFilter = NotebookDocumentFilter = {}));\n var NotebookCellTextDocumentFilter;\n (function(NotebookCellTextDocumentFilter2) {\n function is(value) {\n const candidate = value;\n return Is2.objectLiteral(candidate) && (Is2.string(candidate.notebook) || NotebookDocumentFilter.is(candidate.notebook)) && (candidate.language === void 0 || Is2.string(candidate.language));\n }\n __name(is, \"is\");\n NotebookCellTextDocumentFilter2.is = is;\n })(NotebookCellTextDocumentFilter || (exports2.NotebookCellTextDocumentFilter = NotebookCellTextDocumentFilter = {}));\n var DocumentSelector;\n (function(DocumentSelector2) {\n function is(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n for (let elem of value) {\n if (!Is2.string(elem) && !TextDocumentFilter.is(elem) && !NotebookCellTextDocumentFilter.is(elem)) {\n return false;\n }\n }\n return true;\n }\n __name(is, \"is\");\n DocumentSelector2.is = is;\n })(DocumentSelector || (exports2.DocumentSelector = DocumentSelector = {}));\n var RegistrationRequest;\n (function(RegistrationRequest2) {\n RegistrationRequest2.method = \"client/registerCapability\";\n RegistrationRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n RegistrationRequest2.type = new messages_1.ProtocolRequestType(RegistrationRequest2.method);\n })(RegistrationRequest || (exports2.RegistrationRequest = RegistrationRequest = {}));\n var UnregistrationRequest;\n (function(UnregistrationRequest2) {\n UnregistrationRequest2.method = \"client/unregisterCapability\";\n UnregistrationRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n UnregistrationRequest2.type = new messages_1.ProtocolRequestType(UnregistrationRequest2.method);\n })(UnregistrationRequest || (exports2.UnregistrationRequest = UnregistrationRequest = {}));\n var ResourceOperationKind;\n (function(ResourceOperationKind2) {\n ResourceOperationKind2.Create = \"create\";\n ResourceOperationKind2.Rename = \"rename\";\n ResourceOperationKind2.Delete = \"delete\";\n })(ResourceOperationKind || (exports2.ResourceOperationKind = ResourceOperationKind = {}));\n var FailureHandlingKind;\n (function(FailureHandlingKind2) {\n FailureHandlingKind2.Abort = \"abort\";\n FailureHandlingKind2.Transactional = \"transactional\";\n FailureHandlingKind2.TextOnlyTransactional = \"textOnlyTransactional\";\n FailureHandlingKind2.Undo = \"undo\";\n })(FailureHandlingKind || (exports2.FailureHandlingKind = FailureHandlingKind = {}));\n var PositionEncodingKind;\n (function(PositionEncodingKind2) {\n PositionEncodingKind2.UTF8 = \"utf-8\";\n PositionEncodingKind2.UTF16 = \"utf-16\";\n PositionEncodingKind2.UTF32 = \"utf-32\";\n })(PositionEncodingKind || (exports2.PositionEncodingKind = PositionEncodingKind = {}));\n var StaticRegistrationOptions;\n (function(StaticRegistrationOptions2) {\n function hasId(value) {\n const candidate = value;\n return candidate && Is2.string(candidate.id) && candidate.id.length > 0;\n }\n __name(hasId, \"hasId\");\n StaticRegistrationOptions2.hasId = hasId;\n })(StaticRegistrationOptions || (exports2.StaticRegistrationOptions = StaticRegistrationOptions = {}));\n var TextDocumentRegistrationOptions;\n (function(TextDocumentRegistrationOptions2) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.documentSelector === null || DocumentSelector.is(candidate.documentSelector));\n }\n __name(is, \"is\");\n TextDocumentRegistrationOptions2.is = is;\n })(TextDocumentRegistrationOptions || (exports2.TextDocumentRegistrationOptions = TextDocumentRegistrationOptions = {}));\n var WorkDoneProgressOptions;\n (function(WorkDoneProgressOptions2) {\n function is(value) {\n const candidate = value;\n return Is2.objectLiteral(candidate) && (candidate.workDoneProgress === void 0 || Is2.boolean(candidate.workDoneProgress));\n }\n __name(is, \"is\");\n WorkDoneProgressOptions2.is = is;\n function hasWorkDoneProgress(value) {\n const candidate = value;\n return candidate && Is2.boolean(candidate.workDoneProgress);\n }\n __name(hasWorkDoneProgress, \"hasWorkDoneProgress\");\n WorkDoneProgressOptions2.hasWorkDoneProgress = hasWorkDoneProgress;\n })(WorkDoneProgressOptions || (exports2.WorkDoneProgressOptions = WorkDoneProgressOptions = {}));\n var InitializeRequest;\n (function(InitializeRequest2) {\n InitializeRequest2.method = \"initialize\";\n InitializeRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n InitializeRequest2.type = new messages_1.ProtocolRequestType(InitializeRequest2.method);\n })(InitializeRequest || (exports2.InitializeRequest = InitializeRequest = {}));\n var InitializeErrorCodes;\n (function(InitializeErrorCodes2) {\n InitializeErrorCodes2.unknownProtocolVersion = 1;\n })(InitializeErrorCodes || (exports2.InitializeErrorCodes = InitializeErrorCodes = {}));\n var InitializedNotification;\n (function(InitializedNotification2) {\n InitializedNotification2.method = \"initialized\";\n InitializedNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n InitializedNotification2.type = new messages_1.ProtocolNotificationType(InitializedNotification2.method);\n })(InitializedNotification || (exports2.InitializedNotification = InitializedNotification = {}));\n var ShutdownRequest;\n (function(ShutdownRequest2) {\n ShutdownRequest2.method = \"shutdown\";\n ShutdownRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n ShutdownRequest2.type = new messages_1.ProtocolRequestType0(ShutdownRequest2.method);\n })(ShutdownRequest || (exports2.ShutdownRequest = ShutdownRequest = {}));\n var ExitNotification;\n (function(ExitNotification2) {\n ExitNotification2.method = \"exit\";\n ExitNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n ExitNotification2.type = new messages_1.ProtocolNotificationType0(ExitNotification2.method);\n })(ExitNotification || (exports2.ExitNotification = ExitNotification = {}));\n var DidChangeConfigurationNotification;\n (function(DidChangeConfigurationNotification2) {\n DidChangeConfigurationNotification2.method = \"workspace/didChangeConfiguration\";\n DidChangeConfigurationNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeConfigurationNotification2.type = new messages_1.ProtocolNotificationType(DidChangeConfigurationNotification2.method);\n })(DidChangeConfigurationNotification || (exports2.DidChangeConfigurationNotification = DidChangeConfigurationNotification = {}));\n var MessageType;\n (function(MessageType2) {\n MessageType2.Error = 1;\n MessageType2.Warning = 2;\n MessageType2.Info = 3;\n MessageType2.Log = 4;\n MessageType2.Debug = 5;\n })(MessageType || (exports2.MessageType = MessageType = {}));\n var ShowMessageNotification;\n (function(ShowMessageNotification2) {\n ShowMessageNotification2.method = \"window/showMessage\";\n ShowMessageNotification2.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowMessageNotification2.type = new messages_1.ProtocolNotificationType(ShowMessageNotification2.method);\n })(ShowMessageNotification || (exports2.ShowMessageNotification = ShowMessageNotification = {}));\n var ShowMessageRequest;\n (function(ShowMessageRequest2) {\n ShowMessageRequest2.method = \"window/showMessageRequest\";\n ShowMessageRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowMessageRequest2.type = new messages_1.ProtocolRequestType(ShowMessageRequest2.method);\n })(ShowMessageRequest || (exports2.ShowMessageRequest = ShowMessageRequest = {}));\n var LogMessageNotification;\n (function(LogMessageNotification2) {\n LogMessageNotification2.method = \"window/logMessage\";\n LogMessageNotification2.messageDirection = messages_1.MessageDirection.serverToClient;\n LogMessageNotification2.type = new messages_1.ProtocolNotificationType(LogMessageNotification2.method);\n })(LogMessageNotification || (exports2.LogMessageNotification = LogMessageNotification = {}));\n var TelemetryEventNotification;\n (function(TelemetryEventNotification2) {\n TelemetryEventNotification2.method = \"telemetry/event\";\n TelemetryEventNotification2.messageDirection = messages_1.MessageDirection.serverToClient;\n TelemetryEventNotification2.type = new messages_1.ProtocolNotificationType(TelemetryEventNotification2.method);\n })(TelemetryEventNotification || (exports2.TelemetryEventNotification = TelemetryEventNotification = {}));\n var TextDocumentSyncKind;\n (function(TextDocumentSyncKind2) {\n TextDocumentSyncKind2.None = 0;\n TextDocumentSyncKind2.Full = 1;\n TextDocumentSyncKind2.Incremental = 2;\n })(TextDocumentSyncKind || (exports2.TextDocumentSyncKind = TextDocumentSyncKind = {}));\n var DidOpenTextDocumentNotification;\n (function(DidOpenTextDocumentNotification2) {\n DidOpenTextDocumentNotification2.method = \"textDocument/didOpen\";\n DidOpenTextDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidOpenTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification2.method);\n })(DidOpenTextDocumentNotification || (exports2.DidOpenTextDocumentNotification = DidOpenTextDocumentNotification = {}));\n var TextDocumentContentChangeEvent;\n (function(TextDocumentContentChangeEvent2) {\n function isIncremental(event) {\n let candidate = event;\n return candidate !== void 0 && candidate !== null && typeof candidate.text === \"string\" && candidate.range !== void 0 && (candidate.rangeLength === void 0 || typeof candidate.rangeLength === \"number\");\n }\n __name(isIncremental, \"isIncremental\");\n TextDocumentContentChangeEvent2.isIncremental = isIncremental;\n function isFull(event) {\n let candidate = event;\n return candidate !== void 0 && candidate !== null && typeof candidate.text === \"string\" && candidate.range === void 0 && candidate.rangeLength === void 0;\n }\n __name(isFull, \"isFull\");\n TextDocumentContentChangeEvent2.isFull = isFull;\n })(TextDocumentContentChangeEvent || (exports2.TextDocumentContentChangeEvent = TextDocumentContentChangeEvent = {}));\n var DidChangeTextDocumentNotification;\n (function(DidChangeTextDocumentNotification2) {\n DidChangeTextDocumentNotification2.method = \"textDocument/didChange\";\n DidChangeTextDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidChangeTextDocumentNotification2.method);\n })(DidChangeTextDocumentNotification || (exports2.DidChangeTextDocumentNotification = DidChangeTextDocumentNotification = {}));\n var DidCloseTextDocumentNotification;\n (function(DidCloseTextDocumentNotification2) {\n DidCloseTextDocumentNotification2.method = \"textDocument/didClose\";\n DidCloseTextDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCloseTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidCloseTextDocumentNotification2.method);\n })(DidCloseTextDocumentNotification || (exports2.DidCloseTextDocumentNotification = DidCloseTextDocumentNotification = {}));\n var DidSaveTextDocumentNotification;\n (function(DidSaveTextDocumentNotification2) {\n DidSaveTextDocumentNotification2.method = \"textDocument/didSave\";\n DidSaveTextDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidSaveTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidSaveTextDocumentNotification2.method);\n })(DidSaveTextDocumentNotification || (exports2.DidSaveTextDocumentNotification = DidSaveTextDocumentNotification = {}));\n var TextDocumentSaveReason;\n (function(TextDocumentSaveReason2) {\n TextDocumentSaveReason2.Manual = 1;\n TextDocumentSaveReason2.AfterDelay = 2;\n TextDocumentSaveReason2.FocusOut = 3;\n })(TextDocumentSaveReason || (exports2.TextDocumentSaveReason = TextDocumentSaveReason = {}));\n var WillSaveTextDocumentNotification;\n (function(WillSaveTextDocumentNotification2) {\n WillSaveTextDocumentNotification2.method = \"textDocument/willSave\";\n WillSaveTextDocumentNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n WillSaveTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(WillSaveTextDocumentNotification2.method);\n })(WillSaveTextDocumentNotification || (exports2.WillSaveTextDocumentNotification = WillSaveTextDocumentNotification = {}));\n var WillSaveTextDocumentWaitUntilRequest;\n (function(WillSaveTextDocumentWaitUntilRequest2) {\n WillSaveTextDocumentWaitUntilRequest2.method = \"textDocument/willSaveWaitUntil\";\n WillSaveTextDocumentWaitUntilRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n WillSaveTextDocumentWaitUntilRequest2.type = new messages_1.ProtocolRequestType(WillSaveTextDocumentWaitUntilRequest2.method);\n })(WillSaveTextDocumentWaitUntilRequest || (exports2.WillSaveTextDocumentWaitUntilRequest = WillSaveTextDocumentWaitUntilRequest = {}));\n var DidChangeWatchedFilesNotification;\n (function(DidChangeWatchedFilesNotification2) {\n DidChangeWatchedFilesNotification2.method = \"workspace/didChangeWatchedFiles\";\n DidChangeWatchedFilesNotification2.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeWatchedFilesNotification2.type = new messages_1.ProtocolNotificationType(DidChangeWatchedFilesNotification2.method);\n })(DidChangeWatchedFilesNotification || (exports2.DidChangeWatchedFilesNotification = DidChangeWatchedFilesNotification = {}));\n var FileChangeType;\n (function(FileChangeType2) {\n FileChangeType2.Created = 1;\n FileChangeType2.Changed = 2;\n FileChangeType2.Deleted = 3;\n })(FileChangeType || (exports2.FileChangeType = FileChangeType = {}));\n var RelativePattern;\n (function(RelativePattern2) {\n function is(value) {\n const candidate = value;\n return Is2.objectLiteral(candidate) && (vscode_languageserver_types_1.URI.is(candidate.baseUri) || vscode_languageserver_types_1.WorkspaceFolder.is(candidate.baseUri)) && Is2.string(candidate.pattern);\n }\n __name(is, \"is\");\n RelativePattern2.is = is;\n })(RelativePattern || (exports2.RelativePattern = RelativePattern = {}));\n var WatchKind;\n (function(WatchKind2) {\n WatchKind2.Create = 1;\n WatchKind2.Change = 2;\n WatchKind2.Delete = 4;\n })(WatchKind || (exports2.WatchKind = WatchKind = {}));\n var PublishDiagnosticsNotification;\n (function(PublishDiagnosticsNotification2) {\n PublishDiagnosticsNotification2.method = \"textDocument/publishDiagnostics\";\n PublishDiagnosticsNotification2.messageDirection = messages_1.MessageDirection.serverToClient;\n PublishDiagnosticsNotification2.type = new messages_1.ProtocolNotificationType(PublishDiagnosticsNotification2.method);\n })(PublishDiagnosticsNotification || (exports2.PublishDiagnosticsNotification = PublishDiagnosticsNotification = {}));\n var CompletionTriggerKind;\n (function(CompletionTriggerKind2) {\n CompletionTriggerKind2.Invoked = 1;\n CompletionTriggerKind2.TriggerCharacter = 2;\n CompletionTriggerKind2.TriggerForIncompleteCompletions = 3;\n })(CompletionTriggerKind || (exports2.CompletionTriggerKind = CompletionTriggerKind = {}));\n var CompletionRequest;\n (function(CompletionRequest2) {\n CompletionRequest2.method = \"textDocument/completion\";\n CompletionRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CompletionRequest2.type = new messages_1.ProtocolRequestType(CompletionRequest2.method);\n })(CompletionRequest || (exports2.CompletionRequest = CompletionRequest = {}));\n var CompletionResolveRequest;\n (function(CompletionResolveRequest2) {\n CompletionResolveRequest2.method = \"completionItem/resolve\";\n CompletionResolveRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CompletionResolveRequest2.type = new messages_1.ProtocolRequestType(CompletionResolveRequest2.method);\n })(CompletionResolveRequest || (exports2.CompletionResolveRequest = CompletionResolveRequest = {}));\n var HoverRequest;\n (function(HoverRequest2) {\n HoverRequest2.method = \"textDocument/hover\";\n HoverRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n HoverRequest2.type = new messages_1.ProtocolRequestType(HoverRequest2.method);\n })(HoverRequest || (exports2.HoverRequest = HoverRequest = {}));\n var SignatureHelpTriggerKind;\n (function(SignatureHelpTriggerKind2) {\n SignatureHelpTriggerKind2.Invoked = 1;\n SignatureHelpTriggerKind2.TriggerCharacter = 2;\n SignatureHelpTriggerKind2.ContentChange = 3;\n })(SignatureHelpTriggerKind || (exports2.SignatureHelpTriggerKind = SignatureHelpTriggerKind = {}));\n var SignatureHelpRequest;\n (function(SignatureHelpRequest2) {\n SignatureHelpRequest2.method = \"textDocument/signatureHelp\";\n SignatureHelpRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n SignatureHelpRequest2.type = new messages_1.ProtocolRequestType(SignatureHelpRequest2.method);\n })(SignatureHelpRequest || (exports2.SignatureHelpRequest = SignatureHelpRequest = {}));\n var DefinitionRequest;\n (function(DefinitionRequest2) {\n DefinitionRequest2.method = \"textDocument/definition\";\n DefinitionRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DefinitionRequest2.type = new messages_1.ProtocolRequestType(DefinitionRequest2.method);\n })(DefinitionRequest || (exports2.DefinitionRequest = DefinitionRequest = {}));\n var ReferencesRequest;\n (function(ReferencesRequest2) {\n ReferencesRequest2.method = \"textDocument/references\";\n ReferencesRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n ReferencesRequest2.type = new messages_1.ProtocolRequestType(ReferencesRequest2.method);\n })(ReferencesRequest || (exports2.ReferencesRequest = ReferencesRequest = {}));\n var DocumentHighlightRequest;\n (function(DocumentHighlightRequest2) {\n DocumentHighlightRequest2.method = \"textDocument/documentHighlight\";\n DocumentHighlightRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentHighlightRequest2.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest2.method);\n })(DocumentHighlightRequest || (exports2.DocumentHighlightRequest = DocumentHighlightRequest = {}));\n var DocumentSymbolRequest;\n (function(DocumentSymbolRequest2) {\n DocumentSymbolRequest2.method = \"textDocument/documentSymbol\";\n DocumentSymbolRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentSymbolRequest2.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest2.method);\n })(DocumentSymbolRequest || (exports2.DocumentSymbolRequest = DocumentSymbolRequest = {}));\n var CodeActionRequest;\n (function(CodeActionRequest2) {\n CodeActionRequest2.method = \"textDocument/codeAction\";\n CodeActionRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeActionRequest2.type = new messages_1.ProtocolRequestType(CodeActionRequest2.method);\n })(CodeActionRequest || (exports2.CodeActionRequest = CodeActionRequest = {}));\n var CodeActionResolveRequest;\n (function(CodeActionResolveRequest2) {\n CodeActionResolveRequest2.method = \"codeAction/resolve\";\n CodeActionResolveRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeActionResolveRequest2.type = new messages_1.ProtocolRequestType(CodeActionResolveRequest2.method);\n })(CodeActionResolveRequest || (exports2.CodeActionResolveRequest = CodeActionResolveRequest = {}));\n var WorkspaceSymbolRequest;\n (function(WorkspaceSymbolRequest2) {\n WorkspaceSymbolRequest2.method = \"workspace/symbol\";\n WorkspaceSymbolRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceSymbolRequest2.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest2.method);\n })(WorkspaceSymbolRequest || (exports2.WorkspaceSymbolRequest = WorkspaceSymbolRequest = {}));\n var WorkspaceSymbolResolveRequest;\n (function(WorkspaceSymbolResolveRequest2) {\n WorkspaceSymbolResolveRequest2.method = \"workspaceSymbol/resolve\";\n WorkspaceSymbolResolveRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceSymbolResolveRequest2.type = new messages_1.ProtocolRequestType(WorkspaceSymbolResolveRequest2.method);\n })(WorkspaceSymbolResolveRequest || (exports2.WorkspaceSymbolResolveRequest = WorkspaceSymbolResolveRequest = {}));\n var CodeLensRequest;\n (function(CodeLensRequest2) {\n CodeLensRequest2.method = \"textDocument/codeLens\";\n CodeLensRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeLensRequest2.type = new messages_1.ProtocolRequestType(CodeLensRequest2.method);\n })(CodeLensRequest || (exports2.CodeLensRequest = CodeLensRequest = {}));\n var CodeLensResolveRequest;\n (function(CodeLensResolveRequest2) {\n CodeLensResolveRequest2.method = \"codeLens/resolve\";\n CodeLensResolveRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeLensResolveRequest2.type = new messages_1.ProtocolRequestType(CodeLensResolveRequest2.method);\n })(CodeLensResolveRequest || (exports2.CodeLensResolveRequest = CodeLensResolveRequest = {}));\n var CodeLensRefreshRequest;\n (function(CodeLensRefreshRequest2) {\n CodeLensRefreshRequest2.method = `workspace/codeLens/refresh`;\n CodeLensRefreshRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n CodeLensRefreshRequest2.type = new messages_1.ProtocolRequestType0(CodeLensRefreshRequest2.method);\n })(CodeLensRefreshRequest || (exports2.CodeLensRefreshRequest = CodeLensRefreshRequest = {}));\n var DocumentLinkRequest;\n (function(DocumentLinkRequest2) {\n DocumentLinkRequest2.method = \"textDocument/documentLink\";\n DocumentLinkRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentLinkRequest2.type = new messages_1.ProtocolRequestType(DocumentLinkRequest2.method);\n })(DocumentLinkRequest || (exports2.DocumentLinkRequest = DocumentLinkRequest = {}));\n var DocumentLinkResolveRequest;\n (function(DocumentLinkResolveRequest2) {\n DocumentLinkResolveRequest2.method = \"documentLink/resolve\";\n DocumentLinkResolveRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentLinkResolveRequest2.type = new messages_1.ProtocolRequestType(DocumentLinkResolveRequest2.method);\n })(DocumentLinkResolveRequest || (exports2.DocumentLinkResolveRequest = DocumentLinkResolveRequest = {}));\n var DocumentFormattingRequest;\n (function(DocumentFormattingRequest2) {\n DocumentFormattingRequest2.method = \"textDocument/formatting\";\n DocumentFormattingRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentFormattingRequest2.type = new messages_1.ProtocolRequestType(DocumentFormattingRequest2.method);\n })(DocumentFormattingRequest || (exports2.DocumentFormattingRequest = DocumentFormattingRequest = {}));\n var DocumentRangeFormattingRequest;\n (function(DocumentRangeFormattingRequest2) {\n DocumentRangeFormattingRequest2.method = \"textDocument/rangeFormatting\";\n DocumentRangeFormattingRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentRangeFormattingRequest2.type = new messages_1.ProtocolRequestType(DocumentRangeFormattingRequest2.method);\n })(DocumentRangeFormattingRequest || (exports2.DocumentRangeFormattingRequest = DocumentRangeFormattingRequest = {}));\n var DocumentRangesFormattingRequest;\n (function(DocumentRangesFormattingRequest2) {\n DocumentRangesFormattingRequest2.method = \"textDocument/rangesFormatting\";\n DocumentRangesFormattingRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentRangesFormattingRequest2.type = new messages_1.ProtocolRequestType(DocumentRangesFormattingRequest2.method);\n })(DocumentRangesFormattingRequest || (exports2.DocumentRangesFormattingRequest = DocumentRangesFormattingRequest = {}));\n var DocumentOnTypeFormattingRequest;\n (function(DocumentOnTypeFormattingRequest2) {\n DocumentOnTypeFormattingRequest2.method = \"textDocument/onTypeFormatting\";\n DocumentOnTypeFormattingRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentOnTypeFormattingRequest2.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest2.method);\n })(DocumentOnTypeFormattingRequest || (exports2.DocumentOnTypeFormattingRequest = DocumentOnTypeFormattingRequest = {}));\n var PrepareSupportDefaultBehavior;\n (function(PrepareSupportDefaultBehavior2) {\n PrepareSupportDefaultBehavior2.Identifier = 1;\n })(PrepareSupportDefaultBehavior || (exports2.PrepareSupportDefaultBehavior = PrepareSupportDefaultBehavior = {}));\n var RenameRequest;\n (function(RenameRequest2) {\n RenameRequest2.method = \"textDocument/rename\";\n RenameRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n RenameRequest2.type = new messages_1.ProtocolRequestType(RenameRequest2.method);\n })(RenameRequest || (exports2.RenameRequest = RenameRequest = {}));\n var PrepareRenameRequest;\n (function(PrepareRenameRequest2) {\n PrepareRenameRequest2.method = \"textDocument/prepareRename\";\n PrepareRenameRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n PrepareRenameRequest2.type = new messages_1.ProtocolRequestType(PrepareRenameRequest2.method);\n })(PrepareRenameRequest || (exports2.PrepareRenameRequest = PrepareRenameRequest = {}));\n var ExecuteCommandRequest;\n (function(ExecuteCommandRequest2) {\n ExecuteCommandRequest2.method = \"workspace/executeCommand\";\n ExecuteCommandRequest2.messageDirection = messages_1.MessageDirection.clientToServer;\n ExecuteCommandRequest2.type = new messages_1.ProtocolRequestType(ExecuteCommandRequest2.method);\n })(ExecuteCommandRequest || (exports2.ExecuteCommandRequest = ExecuteCommandRequest = {}));\n var ApplyWorkspaceEditRequest;\n (function(ApplyWorkspaceEditRequest2) {\n ApplyWorkspaceEditRequest2.method = \"workspace/applyEdit\";\n ApplyWorkspaceEditRequest2.messageDirection = messages_1.MessageDirection.serverToClient;\n ApplyWorkspaceEditRequest2.type = new messages_1.ProtocolRequestType(\"workspace/applyEdit\");\n })(ApplyWorkspaceEditRequest || (exports2.ApplyWorkspaceEditRequest = ApplyWorkspaceEditRequest = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js\nvar require_connection2 = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.createProtocolConnection = void 0;\n var vscode_jsonrpc_1 = require_main();\n function createProtocolConnection(input, output, logger, options) {\n if (vscode_jsonrpc_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, vscode_jsonrpc_1.createMessageConnection)(input, output, logger, options);\n }\n __name(createProtocolConnection, \"createProtocolConnection\");\n exports2.createProtocolConnection = createProtocolConnection;\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js\nvar require_api2 = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js\"(exports2) {\n \"use strict\";\n var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {\n if (k2 === void 0) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return m[k];\n }, \"get\") };\n }\n Object.defineProperty(o, k2, desc);\n }) : (function(o, m, k, k2) {\n if (k2 === void 0) k2 = k;\n o[k2] = m[k];\n }));\n var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.LSPErrorCodes = exports2.createProtocolConnection = void 0;\n __exportStar(require_main(), exports2);\n __exportStar((init_main(), __toCommonJS(main_exports)), exports2);\n __exportStar(require_messages2(), exports2);\n __exportStar(require_protocol(), exports2);\n var connection_1 = require_connection2();\n Object.defineProperty(exports2, \"createProtocolConnection\", { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return connection_1.createProtocolConnection;\n }, \"get\") });\n var LSPErrorCodes2;\n (function(LSPErrorCodes3) {\n LSPErrorCodes3.lspReservedErrorRangeStart = -32899;\n LSPErrorCodes3.RequestFailed = -32803;\n LSPErrorCodes3.ServerCancelled = -32802;\n LSPErrorCodes3.ContentModified = -32801;\n LSPErrorCodes3.RequestCancelled = -32800;\n LSPErrorCodes3.lspReservedErrorRangeEnd = -32800;\n })(LSPErrorCodes2 || (exports2.LSPErrorCodes = LSPErrorCodes2 = {}));\n }\n});\n\n// ../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js\nvar require_main2 = __commonJS({\n \"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js\"(exports2) {\n \"use strict\";\n var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {\n if (k2 === void 0) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: /* @__PURE__ */ __name(function() {\n return m[k];\n }, \"get\") };\n }\n Object.defineProperty(o, k2, desc);\n }) : (function(o, m, k, k2) {\n if (k2 === void 0) k2 = k;\n o[k2] = m[k];\n }));\n var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.createProtocolConnection = void 0;\n var browser_1 = require_browser();\n __exportStar(require_browser(), exports2);\n __exportStar(require_api2(), exports2);\n function createProtocolConnection(reader, writer, logger, options) {\n return (0, browser_1.createMessageConnection)(reader, writer, logger, options);\n }\n __name(createProtocolConnection, \"createProtocolConnection\");\n exports2.createProtocolConnection = createProtocolConnection;\n }\n});\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/index.js\nvar lib_exports = {};\n__export(lib_exports, {\n AbstractAstReflection: () => AbstractAstReflection,\n AbstractCstNode: () => AbstractCstNode,\n AbstractLangiumParser: () => AbstractLangiumParser,\n AbstractParserErrorMessageProvider: () => AbstractParserErrorMessageProvider,\n AbstractThreadedAsyncParser: () => AbstractThreadedAsyncParser,\n AstUtils: () => ast_utils_exports,\n BiMap: () => BiMap,\n Cancellation: () => cancellation_exports,\n CompositeCstNodeImpl: () => CompositeCstNodeImpl,\n ContextCache: () => ContextCache,\n CstNodeBuilder: () => CstNodeBuilder,\n CstUtils: () => cst_utils_exports,\n DEFAULT_TOKENIZE_OPTIONS: () => DEFAULT_TOKENIZE_OPTIONS,\n DONE_RESULT: () => DONE_RESULT,\n DatatypeSymbol: () => DatatypeSymbol,\n DefaultAstNodeDescriptionProvider: () => DefaultAstNodeDescriptionProvider,\n DefaultAstNodeLocator: () => DefaultAstNodeLocator,\n DefaultAsyncParser: () => DefaultAsyncParser,\n DefaultCommentProvider: () => DefaultCommentProvider,\n DefaultConfigurationProvider: () => DefaultConfigurationProvider,\n DefaultDocumentBuilder: () => DefaultDocumentBuilder,\n DefaultDocumentValidator: () => DefaultDocumentValidator,\n DefaultHydrator: () => DefaultHydrator,\n DefaultIndexManager: () => DefaultIndexManager,\n DefaultJsonSerializer: () => DefaultJsonSerializer,\n DefaultLangiumDocumentFactory: () => DefaultLangiumDocumentFactory,\n DefaultLangiumDocuments: () => DefaultLangiumDocuments,\n DefaultLangiumProfiler: () => DefaultLangiumProfiler,\n DefaultLexer: () => DefaultLexer,\n DefaultLexerErrorMessageProvider: () => DefaultLexerErrorMessageProvider,\n DefaultLinker: () => DefaultLinker,\n DefaultNameProvider: () => DefaultNameProvider,\n DefaultReferenceDescriptionProvider: () => DefaultReferenceDescriptionProvider,\n DefaultReferences: () => DefaultReferences,\n DefaultScopeComputation: () => DefaultScopeComputation,\n DefaultScopeProvider: () => DefaultScopeProvider,\n DefaultServiceRegistry: () => DefaultServiceRegistry,\n DefaultTokenBuilder: () => DefaultTokenBuilder,\n DefaultValueConverter: () => DefaultValueConverter,\n DefaultWorkspaceLock: () => DefaultWorkspaceLock,\n DefaultWorkspaceManager: () => DefaultWorkspaceManager,\n Deferred: () => Deferred,\n Disposable: () => Disposable,\n DisposableCache: () => DisposableCache,\n DocumentCache: () => DocumentCache,\n DocumentState: () => DocumentState,\n DocumentValidator: () => DocumentValidator,\n EMPTY_SCOPE: () => EMPTY_SCOPE,\n EMPTY_STREAM: () => EMPTY_STREAM,\n EmptyFileSystem: () => EmptyFileSystem,\n EmptyFileSystemProvider: () => EmptyFileSystemProvider,\n ErrorWithLocation: () => ErrorWithLocation,\n GrammarAST: () => ast_exports,\n GrammarUtils: () => grammar_utils_exports,\n IndentationAwareLexer: () => IndentationAwareLexer,\n IndentationAwareTokenBuilder: () => IndentationAwareTokenBuilder,\n JSDocDocumentationProvider: () => JSDocDocumentationProvider,\n LangiumCompletionParser: () => LangiumCompletionParser,\n LangiumParser: () => LangiumParser,\n LangiumParserErrorMessageProvider: () => LangiumParserErrorMessageProvider,\n LeafCstNodeImpl: () => LeafCstNodeImpl,\n LexingMode: () => LexingMode,\n MapScope: () => MapScope,\n Module: () => Module,\n MultiMap: () => MultiMap,\n MultiMapScope: () => MultiMapScope,\n OperationCancelled: () => OperationCancelled,\n ParserWorker: () => ParserWorker,\n ProfilingTask: () => ProfilingTask,\n Reduction: () => Reduction,\n RefResolving: () => RefResolving,\n RegExpUtils: () => regexp_utils_exports,\n RootCstNodeImpl: () => RootCstNodeImpl,\n SimpleCache: () => SimpleCache,\n StreamImpl: () => StreamImpl,\n StreamScope: () => StreamScope,\n TextDocument: () => TextDocument2,\n TreeStreamImpl: () => TreeStreamImpl,\n URI: () => URI2,\n UriTrie: () => UriTrie,\n UriUtils: () => UriUtils,\n VALIDATE_EACH_NODE: () => VALIDATE_EACH_NODE,\n ValidationCategory: () => ValidationCategory,\n ValidationRegistry: () => ValidationRegistry,\n ValueConverter: () => ValueConverter,\n WorkspaceCache: () => WorkspaceCache,\n assertCondition: () => assertCondition,\n assertUnreachable: () => assertUnreachable,\n createCompletionParser: () => createCompletionParser,\n createDefaultCoreModule: () => createDefaultCoreModule,\n createDefaultSharedCoreModule: () => createDefaultSharedCoreModule,\n createGrammarConfig: () => createGrammarConfig,\n createLangiumParser: () => createLangiumParser,\n createParser: () => createParser,\n delayNextTick: () => delayNextTick,\n diagnosticData: () => diagnosticData,\n eagerLoad: () => eagerLoad,\n getDiagnosticRange: () => getDiagnosticRange,\n indentationBuilderDefaultOptions: () => indentationBuilderDefaultOptions,\n inject: () => inject,\n interruptAndCheck: () => interruptAndCheck,\n isAstNode: () => isAstNode,\n isAstNodeDescription: () => isAstNodeDescription,\n isAstNodeWithComment: () => isAstNodeWithComment,\n isCompositeCstNode: () => isCompositeCstNode,\n isIMultiModeLexerDefinition: () => isIMultiModeLexerDefinition,\n isJSDoc: () => isJSDoc,\n isLeafCstNode: () => isLeafCstNode,\n isLinkingError: () => isLinkingError,\n isMultiReference: () => isMultiReference,\n isNamed: () => isNamed,\n isOperationCancelled: () => isOperationCancelled,\n isReference: () => isReference,\n isRootCstNode: () => isRootCstNode,\n isTokenTypeArray: () => isTokenTypeArray,\n isTokenTypeDictionary: () => isTokenTypeDictionary,\n loadGrammarFromJson: () => loadGrammarFromJson,\n parseJSDoc: () => parseJSDoc,\n prepareLangiumParser: () => prepareLangiumParser,\n setInterruptionPeriod: () => setInterruptionPeriod,\n startCancelableOperation: () => startCancelableOperation,\n stream: () => stream,\n toDiagnosticData: () => toDiagnosticData,\n toDiagnosticSeverity: () => toDiagnosticSeverity\n});\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/cst-utils.js\nvar cst_utils_exports = {};\n__export(cst_utils_exports, {\n DefaultNameRegexp: () => DefaultNameRegexp,\n RangeComparison: () => RangeComparison,\n compareRange: () => compareRange,\n findCommentNode: () => findCommentNode,\n findDeclarationNodeAtOffset: () => findDeclarationNodeAtOffset,\n findLeafNodeAtOffset: () => findLeafNodeAtOffset,\n findLeafNodeBeforeOffset: () => findLeafNodeBeforeOffset,\n flattenCst: () => flattenCst,\n getDatatypeNode: () => getDatatypeNode,\n getInteriorNodes: () => getInteriorNodes,\n getNextNode: () => getNextNode,\n getPreviousNode: () => getPreviousNode,\n getStartlineNode: () => getStartlineNode,\n inRange: () => inRange,\n isChildNode: () => isChildNode,\n isCommentNode: () => isCommentNode,\n streamCst: () => streamCst,\n toDocumentSegment: () => toDocumentSegment,\n tokenToRange: () => tokenToRange\n});\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/syntax-tree.js\nfunction isAstNode(obj) {\n return typeof obj === \"object\" && obj !== null && typeof obj.$type === \"string\";\n}\n__name(isAstNode, \"isAstNode\");\nfunction isReference(obj) {\n return typeof obj === \"object\" && obj !== null && typeof obj.$refText === \"string\" && \"ref\" in obj;\n}\n__name(isReference, \"isReference\");\nfunction isMultiReference(obj) {\n return typeof obj === \"object\" && obj !== null && typeof obj.$refText === \"string\" && \"items\" in obj;\n}\n__name(isMultiReference, \"isMultiReference\");\nfunction isAstNodeDescription(obj) {\n return typeof obj === \"object\" && obj !== null && typeof obj.name === \"string\" && typeof obj.type === \"string\" && typeof obj.path === \"string\";\n}\n__name(isAstNodeDescription, \"isAstNodeDescription\");\nfunction isLinkingError(obj) {\n return typeof obj === \"object\" && obj !== null && typeof obj.info === \"object\" && typeof obj.message === \"string\";\n}\n__name(isLinkingError, \"isLinkingError\");\nvar AbstractAstReflection = class {\n static {\n __name(this, \"AbstractAstReflection\");\n }\n constructor() {\n this.subtypes = {};\n this.allSubtypes = {};\n }\n getAllTypes() {\n return Object.keys(this.types);\n }\n getReferenceType(refInfo) {\n const metaData = this.types[refInfo.container.$type];\n if (!metaData) {\n throw new Error(`Type ${refInfo.container.$type || \"undefined\"} not found.`);\n }\n const referenceType = metaData.properties[refInfo.property]?.referenceType;\n if (!referenceType) {\n throw new Error(`Property ${refInfo.property || \"undefined\"} of type ${refInfo.container.$type} is not a reference.`);\n }\n return referenceType;\n }\n getTypeMetaData(type) {\n const result = this.types[type];\n if (!result) {\n return {\n name: type,\n properties: {},\n superTypes: []\n };\n }\n return result;\n }\n isInstance(node, type) {\n return isAstNode(node) && this.isSubtype(node.$type, type);\n }\n isSubtype(subtype, supertype) {\n if (subtype === supertype) {\n return true;\n }\n let nested = this.subtypes[subtype];\n if (!nested) {\n nested = this.subtypes[subtype] = {};\n }\n const existing = nested[supertype];\n if (existing !== void 0) {\n return existing;\n } else {\n const metaData = this.types[subtype];\n const result = metaData ? metaData.superTypes.some((s) => this.isSubtype(s, supertype)) : false;\n nested[supertype] = result;\n return result;\n }\n }\n getAllSubTypes(type) {\n const existing = this.allSubtypes[type];\n if (existing) {\n return existing;\n } else {\n const allTypes = this.getAllTypes();\n const types = [];\n for (const possibleSubType of allTypes) {\n if (this.isSubtype(possibleSubType, type)) {\n types.push(possibleSubType);\n }\n }\n this.allSubtypes[type] = types;\n return types;\n }\n }\n};\nfunction isCompositeCstNode(node) {\n return typeof node === \"object\" && node !== null && Array.isArray(node.content);\n}\n__name(isCompositeCstNode, \"isCompositeCstNode\");\nfunction isLeafCstNode(node) {\n return typeof node === \"object\" && node !== null && typeof node.tokenType === \"object\";\n}\n__name(isLeafCstNode, \"isLeafCstNode\");\nfunction isRootCstNode(node) {\n return isCompositeCstNode(node) && typeof node.fullText === \"string\";\n}\n__name(isRootCstNode, \"isRootCstNode\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/stream.js\nvar StreamImpl = class _StreamImpl {\n static {\n __name(this, \"StreamImpl\");\n }\n constructor(startFn, nextFn) {\n this.startFn = startFn;\n this.nextFn = nextFn;\n }\n iterator() {\n const iterator = {\n state: this.startFn(),\n next: /* @__PURE__ */ __name(() => this.nextFn(iterator.state), \"next\"),\n [Symbol.iterator]: () => iterator\n };\n return iterator;\n }\n [Symbol.iterator]() {\n return this.iterator();\n }\n isEmpty() {\n const iterator = this.iterator();\n return Boolean(iterator.next().done);\n }\n count() {\n const iterator = this.iterator();\n let count = 0;\n let next = iterator.next();\n while (!next.done) {\n count++;\n next = iterator.next();\n }\n return count;\n }\n toArray() {\n const result = [];\n const iterator = this.iterator();\n let next;\n do {\n next = iterator.next();\n if (next.value !== void 0) {\n result.push(next.value);\n }\n } while (!next.done);\n return result;\n }\n toSet() {\n return new Set(this);\n }\n toMap(keyFn, valueFn) {\n const entryStream = this.map((element) => [\n keyFn ? keyFn(element) : element,\n valueFn ? valueFn(element) : element\n ]);\n return new Map(entryStream);\n }\n toString() {\n return this.join();\n }\n concat(other) {\n return new _StreamImpl(() => ({ first: this.startFn(), firstDone: false, iterator: other[Symbol.iterator]() }), (state) => {\n let result;\n if (!state.firstDone) {\n do {\n result = this.nextFn(state.first);\n if (!result.done) {\n return result;\n }\n } while (!result.done);\n state.firstDone = true;\n }\n do {\n result = state.iterator.next();\n if (!result.done) {\n return result;\n }\n } while (!result.done);\n return DONE_RESULT;\n });\n }\n join(separator = \",\") {\n const iterator = this.iterator();\n let value = \"\";\n let result;\n let addSeparator = false;\n do {\n result = iterator.next();\n if (!result.done) {\n if (addSeparator) {\n value += separator;\n }\n value += toString(result.value);\n }\n addSeparator = true;\n } while (!result.done);\n return value;\n }\n indexOf(searchElement, fromIndex = 0) {\n const iterator = this.iterator();\n let index = 0;\n let next = iterator.next();\n while (!next.done) {\n if (index >= fromIndex && next.value === searchElement) {\n return index;\n }\n next = iterator.next();\n index++;\n }\n return -1;\n }\n every(predicate) {\n const iterator = this.iterator();\n let next = iterator.next();\n while (!next.done) {\n if (!predicate(next.value)) {\n return false;\n }\n next = iterator.next();\n }\n return true;\n }\n some(predicate) {\n const iterator = this.iterator();\n let next = iterator.next();\n while (!next.done) {\n if (predicate(next.value)) {\n return true;\n }\n next = iterator.next();\n }\n return false;\n }\n forEach(callbackfn) {\n const iterator = this.iterator();\n let index = 0;\n let next = iterator.next();\n while (!next.done) {\n callbackfn(next.value, index);\n next = iterator.next();\n index++;\n }\n }\n map(callbackfn) {\n return new _StreamImpl(this.startFn, (state) => {\n const { done, value } = this.nextFn(state);\n if (done) {\n return DONE_RESULT;\n } else {\n return { done: false, value: callbackfn(value) };\n }\n });\n }\n filter(predicate) {\n return new _StreamImpl(this.startFn, (state) => {\n let result;\n do {\n result = this.nextFn(state);\n if (!result.done && predicate(result.value)) {\n return result;\n }\n } while (!result.done);\n return DONE_RESULT;\n });\n }\n nonNullable() {\n return this.filter((e) => e !== void 0 && e !== null);\n }\n reduce(callbackfn, initialValue) {\n const iterator = this.iterator();\n let previousValue = initialValue;\n let next = iterator.next();\n while (!next.done) {\n if (previousValue === void 0) {\n previousValue = next.value;\n } else {\n previousValue = callbackfn(previousValue, next.value);\n }\n next = iterator.next();\n }\n return previousValue;\n }\n reduceRight(callbackfn, initialValue) {\n return this.recursiveReduce(this.iterator(), callbackfn, initialValue);\n }\n recursiveReduce(iterator, callbackfn, initialValue) {\n const next = iterator.next();\n if (next.done) {\n return initialValue;\n }\n const previousValue = this.recursiveReduce(iterator, callbackfn, initialValue);\n if (previousValue === void 0) {\n return next.value;\n }\n return callbackfn(previousValue, next.value);\n }\n find(predicate) {\n const iterator = this.iterator();\n let next = iterator.next();\n while (!next.done) {\n if (predicate(next.value)) {\n return next.value;\n }\n next = iterator.next();\n }\n return void 0;\n }\n findIndex(predicate) {\n const iterator = this.iterator();\n let index = 0;\n let next = iterator.next();\n while (!next.done) {\n if (predicate(next.value)) {\n return index;\n }\n next = iterator.next();\n index++;\n }\n return -1;\n }\n includes(searchElement) {\n const iterator = this.iterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value === searchElement) {\n return true;\n }\n next = iterator.next();\n }\n return false;\n }\n flatMap(callbackfn) {\n return new _StreamImpl(() => ({ this: this.startFn() }), (state) => {\n do {\n if (state.iterator) {\n const next = state.iterator.next();\n if (next.done) {\n state.iterator = void 0;\n } else {\n return next;\n }\n }\n const { done, value } = this.nextFn(state.this);\n if (!done) {\n const mapped = callbackfn(value);\n if (isIterable(mapped)) {\n state.iterator = mapped[Symbol.iterator]();\n } else {\n return { done: false, value: mapped };\n }\n }\n } while (state.iterator);\n return DONE_RESULT;\n });\n }\n flat(depth) {\n if (depth === void 0) {\n depth = 1;\n }\n if (depth <= 0) {\n return this;\n }\n const stream2 = depth > 1 ? this.flat(depth - 1) : this;\n return new _StreamImpl(() => ({ this: stream2.startFn() }), (state) => {\n do {\n if (state.iterator) {\n const next = state.iterator.next();\n if (next.done) {\n state.iterator = void 0;\n } else {\n return next;\n }\n }\n const { done, value } = stream2.nextFn(state.this);\n if (!done) {\n if (isIterable(value)) {\n state.iterator = value[Symbol.iterator]();\n } else {\n return { done: false, value };\n }\n }\n } while (state.iterator);\n return DONE_RESULT;\n });\n }\n head() {\n const iterator = this.iterator();\n const result = iterator.next();\n if (result.done) {\n return void 0;\n }\n return result.value;\n }\n tail(skipCount = 1) {\n return new _StreamImpl(() => {\n const state = this.startFn();\n for (let i = 0; i < skipCount; i++) {\n const next = this.nextFn(state);\n if (next.done) {\n return state;\n }\n }\n return state;\n }, this.nextFn);\n }\n limit(maxSize) {\n return new _StreamImpl(() => ({ size: 0, state: this.startFn() }), (state) => {\n state.size++;\n if (state.size > maxSize) {\n return DONE_RESULT;\n }\n return this.nextFn(state.state);\n });\n }\n distinct(by) {\n return new _StreamImpl(() => ({ set: /* @__PURE__ */ new Set(), internalState: this.startFn() }), (state) => {\n let result;\n do {\n result = this.nextFn(state.internalState);\n if (!result.done) {\n const value = by ? by(result.value) : result.value;\n if (!state.set.has(value)) {\n state.set.add(value);\n return result;\n }\n }\n } while (!result.done);\n return DONE_RESULT;\n });\n }\n exclude(other, key) {\n const otherKeySet = /* @__PURE__ */ new Set();\n for (const item of other) {\n const value = key ? key(item) : item;\n otherKeySet.add(value);\n }\n return this.filter((e) => {\n const ownKey = key ? key(e) : e;\n return !otherKeySet.has(ownKey);\n });\n }\n};\nfunction toString(item) {\n if (typeof item === \"string\") {\n return item;\n }\n if (typeof item === \"undefined\") {\n return \"undefined\";\n }\n if (typeof item.toString === \"function\") {\n return item.toString();\n }\n return Object.prototype.toString.call(item);\n}\n__name(toString, \"toString\");\nfunction isIterable(obj) {\n return !!obj && typeof obj[Symbol.iterator] === \"function\";\n}\n__name(isIterable, \"isIterable\");\nvar EMPTY_STREAM = new StreamImpl(() => void 0, () => DONE_RESULT);\nvar DONE_RESULT = Object.freeze({ done: true, value: void 0 });\nfunction stream(...collections) {\n if (collections.length === 1) {\n const collection = collections[0];\n if (collection instanceof StreamImpl) {\n return collection;\n }\n if (isIterable(collection)) {\n return new StreamImpl(() => collection[Symbol.iterator](), (iterator) => iterator.next());\n }\n if (typeof collection.length === \"number\") {\n return new StreamImpl(() => ({ index: 0 }), (state) => {\n if (state.index < collection.length) {\n return { done: false, value: collection[state.index++] };\n } else {\n return DONE_RESULT;\n }\n });\n }\n }\n if (collections.length > 1) {\n return new StreamImpl(() => ({ collIndex: 0, arrIndex: 0 }), (state) => {\n do {\n if (state.iterator) {\n const next = state.iterator.next();\n if (!next.done) {\n return next;\n }\n state.iterator = void 0;\n }\n if (state.array) {\n if (state.arrIndex < state.array.length) {\n return { done: false, value: state.array[state.arrIndex++] };\n }\n state.array = void 0;\n state.arrIndex = 0;\n }\n if (state.collIndex < collections.length) {\n const collection = collections[state.collIndex++];\n if (isIterable(collection)) {\n state.iterator = collection[Symbol.iterator]();\n } else if (collection && typeof collection.length === \"number\") {\n state.array = collection;\n }\n }\n } while (state.iterator || state.array || state.collIndex < collections.length);\n return DONE_RESULT;\n });\n }\n return EMPTY_STREAM;\n}\n__name(stream, \"stream\");\nvar TreeStreamImpl = class extends StreamImpl {\n static {\n __name(this, \"TreeStreamImpl\");\n }\n constructor(root3, children, options) {\n super(() => ({\n iterators: options?.includeRoot ? [[root3][Symbol.iterator]()] : [children(root3)[Symbol.iterator]()],\n pruned: false\n }), (state) => {\n if (state.pruned) {\n state.iterators.pop();\n state.pruned = false;\n }\n while (state.iterators.length > 0) {\n const iterator = state.iterators[state.iterators.length - 1];\n const next = iterator.next();\n if (next.done) {\n state.iterators.pop();\n } else {\n state.iterators.push(children(next.value)[Symbol.iterator]());\n return next;\n }\n }\n return DONE_RESULT;\n });\n }\n iterator() {\n const iterator = {\n state: this.startFn(),\n next: /* @__PURE__ */ __name(() => this.nextFn(iterator.state), \"next\"),\n prune: /* @__PURE__ */ __name(() => {\n iterator.state.pruned = true;\n }, \"prune\"),\n [Symbol.iterator]: () => iterator\n };\n return iterator;\n }\n};\nvar Reduction;\n(function(Reduction2) {\n function sum(stream2) {\n return stream2.reduce((a, b) => a + b, 0);\n }\n __name(sum, \"sum\");\n Reduction2.sum = sum;\n function product(stream2) {\n return stream2.reduce((a, b) => a * b, 0);\n }\n __name(product, \"product\");\n Reduction2.product = product;\n function min2(stream2) {\n return stream2.reduce((a, b) => Math.min(a, b));\n }\n __name(min2, \"min\");\n Reduction2.min = min2;\n function max(stream2) {\n return stream2.reduce((a, b) => Math.max(a, b));\n }\n __name(max, \"max\");\n Reduction2.max = max;\n})(Reduction || (Reduction = {}));\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/ast-utils.js\nvar ast_utils_exports = {};\n__export(ast_utils_exports, {\n assignMandatoryProperties: () => assignMandatoryProperties,\n copyAstNode: () => copyAstNode,\n findRootNode: () => findRootNode,\n getContainerOfType: () => getContainerOfType,\n getDocument: () => getDocument,\n getReferenceNodes: () => getReferenceNodes,\n hasContainerOfType: () => hasContainerOfType,\n linkContentToContainer: () => linkContentToContainer,\n streamAllContents: () => streamAllContents,\n streamAst: () => streamAst,\n streamContents: () => streamContents,\n streamReferences: () => streamReferences\n});\nfunction linkContentToContainer(node, options = {}) {\n for (const [name, value] of Object.entries(node)) {\n if (!name.startsWith(\"$\")) {\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n if (isAstNode(item)) {\n item.$container = node;\n item.$containerProperty = name;\n item.$containerIndex = index;\n if (options.deep) {\n linkContentToContainer(item, options);\n }\n }\n });\n } else if (isAstNode(value)) {\n value.$container = node;\n value.$containerProperty = name;\n if (options.deep) {\n linkContentToContainer(value, options);\n }\n }\n }\n }\n}\n__name(linkContentToContainer, \"linkContentToContainer\");\nfunction getContainerOfType(node, typePredicate) {\n let item = node;\n while (item) {\n if (typePredicate(item)) {\n return item;\n }\n item = item.$container;\n }\n return void 0;\n}\n__name(getContainerOfType, \"getContainerOfType\");\nfunction hasContainerOfType(node, predicate) {\n let item = node;\n while (item) {\n if (predicate(item)) {\n return true;\n }\n item = item.$container;\n }\n return false;\n}\n__name(hasContainerOfType, \"hasContainerOfType\");\nfunction getDocument(node) {\n const rootNode = findRootNode(node);\n const result = rootNode.$document;\n if (!result) {\n throw new Error(\"AST node has no document.\");\n }\n return result;\n}\n__name(getDocument, \"getDocument\");\nfunction findRootNode(node) {\n while (node.$container) {\n node = node.$container;\n }\n return node;\n}\n__name(findRootNode, \"findRootNode\");\nfunction getReferenceNodes(reference) {\n if (isReference(reference)) {\n return reference.ref ? [reference.ref] : [];\n } else if (isMultiReference(reference)) {\n return reference.items.map((item) => item.ref);\n }\n return [];\n}\n__name(getReferenceNodes, \"getReferenceNodes\");\nfunction streamContents(node, options) {\n if (!node) {\n throw new Error(\"Node must be an AstNode.\");\n }\n const range = options?.range;\n return new StreamImpl(() => ({\n keys: Object.keys(node),\n keyIndex: 0,\n arrayIndex: 0\n }), (state) => {\n while (state.keyIndex < state.keys.length) {\n const property3 = state.keys[state.keyIndex];\n if (!property3.startsWith(\"$\")) {\n const value = node[property3];\n if (isAstNode(value)) {\n state.keyIndex++;\n if (isAstNodeInRange(value, range)) {\n return { done: false, value };\n }\n } else if (Array.isArray(value)) {\n while (state.arrayIndex < value.length) {\n const index = state.arrayIndex++;\n const element = value[index];\n if (isAstNode(element) && isAstNodeInRange(element, range)) {\n return { done: false, value: element };\n }\n }\n state.arrayIndex = 0;\n }\n }\n state.keyIndex++;\n }\n return DONE_RESULT;\n });\n}\n__name(streamContents, \"streamContents\");\nfunction streamAllContents(root3, options) {\n if (!root3) {\n throw new Error(\"Root node must be an AstNode.\");\n }\n return new TreeStreamImpl(root3, (node) => streamContents(node, options));\n}\n__name(streamAllContents, \"streamAllContents\");\nfunction streamAst(root3, options) {\n if (!root3) {\n throw new Error(\"Root node must be an AstNode.\");\n } else if (options?.range && !isAstNodeInRange(root3, options.range)) {\n return new TreeStreamImpl(root3, () => []);\n }\n return new TreeStreamImpl(root3, (node) => streamContents(node, options), { includeRoot: true });\n}\n__name(streamAst, \"streamAst\");\nfunction isAstNodeInRange(astNode, range) {\n if (!range) {\n return true;\n }\n const nodeRange = astNode.$cstNode?.range;\n if (!nodeRange) {\n return false;\n }\n return inRange(nodeRange, range);\n}\n__name(isAstNodeInRange, \"isAstNodeInRange\");\nfunction streamReferences(node) {\n return new StreamImpl(() => ({\n keys: Object.keys(node),\n keyIndex: 0,\n arrayIndex: 0\n }), (state) => {\n while (state.keyIndex < state.keys.length) {\n const property3 = state.keys[state.keyIndex];\n if (!property3.startsWith(\"$\")) {\n const value = node[property3];\n if (isReference(value) || isMultiReference(value)) {\n state.keyIndex++;\n return { done: false, value: { reference: value, container: node, property: property3 } };\n } else if (Array.isArray(value)) {\n while (state.arrayIndex < value.length) {\n const index = state.arrayIndex++;\n const element = value[index];\n if (isReference(element) || isMultiReference(value)) {\n return { done: false, value: { reference: element, container: node, property: property3, index } };\n }\n }\n state.arrayIndex = 0;\n }\n }\n state.keyIndex++;\n }\n return DONE_RESULT;\n });\n}\n__name(streamReferences, \"streamReferences\");\nfunction assignMandatoryProperties(reflection3, node) {\n const typeMetaData = reflection3.getTypeMetaData(node.$type);\n const genericNode = node;\n for (const property3 of Object.values(typeMetaData.properties)) {\n if (property3.defaultValue !== void 0 && genericNode[property3.name] === void 0) {\n genericNode[property3.name] = copyDefaultValue(property3.defaultValue);\n }\n }\n}\n__name(assignMandatoryProperties, \"assignMandatoryProperties\");\nfunction copyDefaultValue(propertyType) {\n if (Array.isArray(propertyType)) {\n return [...propertyType.map(copyDefaultValue)];\n } else {\n return propertyType;\n }\n}\n__name(copyDefaultValue, \"copyDefaultValue\");\nfunction copyAstNode(node, buildReference, trace) {\n const copy = { $type: node.$type };\n if (trace) {\n trace.set(node, copy);\n trace.set(copy, node);\n }\n for (const [name, value] of Object.entries(node)) {\n if (!name.startsWith(\"$\")) {\n if (isAstNode(value)) {\n copy[name] = copyAstNode(value, buildReference, trace);\n } else if (isReference(value)) {\n copy[name] = buildReference(copy, name, value.$refNode, value.$refText, value);\n } else if (Array.isArray(value)) {\n const copiedArray = [];\n for (const element of value) {\n if (isAstNode(element)) {\n copiedArray.push(copyAstNode(element, buildReference, trace));\n } else if (isReference(element)) {\n copiedArray.push(buildReference(copy, name, element.$refNode, element.$refText, element));\n } else {\n copiedArray.push(element);\n }\n }\n copy[name] = copiedArray;\n } else {\n copy[name] = value;\n }\n }\n }\n linkContentToContainer(copy, { deep: true });\n return copy;\n}\n__name(copyAstNode, \"copyAstNode\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/languages/generated/ast.js\nvar ast_exports = {};\n__export(ast_exports, {\n AbstractElement: () => AbstractElement,\n AbstractParserRule: () => AbstractParserRule,\n AbstractRule: () => AbstractRule,\n AbstractType: () => AbstractType,\n Action: () => Action,\n Alternatives: () => Alternatives,\n ArrayLiteral: () => ArrayLiteral,\n ArrayType: () => ArrayType,\n Assignment: () => Assignment,\n BooleanLiteral: () => BooleanLiteral,\n CharacterRange: () => CharacterRange,\n Condition: () => Condition,\n Conjunction: () => Conjunction,\n CrossReference: () => CrossReference,\n Disjunction: () => Disjunction,\n EndOfFile: () => EndOfFile,\n Grammar: () => Grammar,\n GrammarImport: () => GrammarImport,\n Group: () => Group,\n InferredType: () => InferredType,\n InfixRule: () => InfixRule,\n InfixRuleOperatorList: () => InfixRuleOperatorList,\n InfixRuleOperators: () => InfixRuleOperators,\n Interface: () => Interface,\n Keyword: () => Keyword,\n LangiumGrammarAstReflection: () => LangiumGrammarAstReflection,\n LangiumGrammarTerminals: () => LangiumGrammarTerminals,\n NamedArgument: () => NamedArgument,\n NegatedToken: () => NegatedToken,\n Negation: () => Negation,\n NumberLiteral: () => NumberLiteral,\n Parameter: () => Parameter,\n ParameterReference: () => ParameterReference,\n ParserRule: () => ParserRule,\n ReferenceType: () => ReferenceType,\n RegexToken: () => RegexToken,\n ReturnType: () => ReturnType,\n RuleCall: () => RuleCall,\n SimpleType: () => SimpleType,\n StringLiteral: () => StringLiteral,\n TerminalAlternatives: () => TerminalAlternatives,\n TerminalElement: () => TerminalElement,\n TerminalGroup: () => TerminalGroup,\n TerminalRule: () => TerminalRule,\n TerminalRuleCall: () => TerminalRuleCall,\n Type: () => Type,\n TypeAttribute: () => TypeAttribute,\n TypeDefinition: () => TypeDefinition,\n UnionType: () => UnionType,\n UnorderedGroup: () => UnorderedGroup,\n UntilToken: () => UntilToken,\n ValueLiteral: () => ValueLiteral,\n Wildcard: () => Wildcard,\n isAbstractElement: () => isAbstractElement,\n isAbstractParserRule: () => isAbstractParserRule,\n isAbstractRule: () => isAbstractRule,\n isAbstractType: () => isAbstractType,\n isAction: () => isAction,\n isAlternatives: () => isAlternatives,\n isArrayLiteral: () => isArrayLiteral,\n isArrayType: () => isArrayType,\n isAssignment: () => isAssignment,\n isBooleanLiteral: () => isBooleanLiteral,\n isCharacterRange: () => isCharacterRange,\n isCondition: () => isCondition,\n isConjunction: () => isConjunction,\n isCrossReference: () => isCrossReference,\n isDisjunction: () => isDisjunction,\n isEndOfFile: () => isEndOfFile,\n isGrammar: () => isGrammar,\n isGrammarImport: () => isGrammarImport,\n isGroup: () => isGroup,\n isInferredType: () => isInferredType,\n isInfixRule: () => isInfixRule,\n isInfixRuleOperatorList: () => isInfixRuleOperatorList,\n isInfixRuleOperators: () => isInfixRuleOperators,\n isInterface: () => isInterface,\n isKeyword: () => isKeyword,\n isNamedArgument: () => isNamedArgument,\n isNegatedToken: () => isNegatedToken,\n isNegation: () => isNegation,\n isNumberLiteral: () => isNumberLiteral,\n isParameter: () => isParameter,\n isParameterReference: () => isParameterReference,\n isParserRule: () => isParserRule,\n isReferenceType: () => isReferenceType,\n isRegexToken: () => isRegexToken,\n isReturnType: () => isReturnType,\n isRuleCall: () => isRuleCall,\n isSimpleType: () => isSimpleType,\n isStringLiteral: () => isStringLiteral,\n isTerminalAlternatives: () => isTerminalAlternatives,\n isTerminalElement: () => isTerminalElement,\n isTerminalGroup: () => isTerminalGroup,\n isTerminalRule: () => isTerminalRule,\n isTerminalRuleCall: () => isTerminalRuleCall,\n isType: () => isType,\n isTypeAttribute: () => isTypeAttribute,\n isTypeDefinition: () => isTypeDefinition,\n isUnionType: () => isUnionType,\n isUnorderedGroup: () => isUnorderedGroup,\n isUntilToken: () => isUntilToken,\n isValueLiteral: () => isValueLiteral,\n isWildcard: () => isWildcard,\n reflection: () => reflection\n});\nvar LangiumGrammarTerminals = {\n ID: /\\^?[_a-zA-Z][\\w_]*/,\n STRING: /\"(\\\\.|[^\"\\\\])*\"|'(\\\\.|[^'\\\\])*'/,\n NUMBER: /NaN|-?((\\d*\\.\\d+|\\d+)([Ee][+-]?\\d+)?|Infinity)/,\n RegexLiteral: /\\/(?![*+?])(?:[^\\r\\n\\[/\\\\]|\\\\.|\\[(?:[^\\r\\n\\]\\\\]|\\\\.)*\\])+\\/[a-z]*/,\n WS: /\\s+/,\n ML_COMMENT: /\\/\\*[\\s\\S]*?\\*\\//,\n SL_COMMENT: /\\/\\/[^\\n\\r]*/\n};\nvar AbstractElement = {\n $type: \"AbstractElement\",\n cardinality: \"cardinality\"\n};\nfunction isAbstractElement(item) {\n return reflection.isInstance(item, AbstractElement.$type);\n}\n__name(isAbstractElement, \"isAbstractElement\");\nvar AbstractParserRule = {\n $type: \"AbstractParserRule\"\n};\nfunction isAbstractParserRule(item) {\n return reflection.isInstance(item, AbstractParserRule.$type);\n}\n__name(isAbstractParserRule, \"isAbstractParserRule\");\nvar AbstractRule = {\n $type: \"AbstractRule\"\n};\nfunction isAbstractRule(item) {\n return reflection.isInstance(item, AbstractRule.$type);\n}\n__name(isAbstractRule, \"isAbstractRule\");\nvar AbstractType = {\n $type: \"AbstractType\"\n};\nfunction isAbstractType(item) {\n return reflection.isInstance(item, AbstractType.$type);\n}\n__name(isAbstractType, \"isAbstractType\");\nvar Action = {\n $type: \"Action\",\n cardinality: \"cardinality\",\n feature: \"feature\",\n inferredType: \"inferredType\",\n operator: \"operator\",\n type: \"type\"\n};\nfunction isAction(item) {\n return reflection.isInstance(item, Action.$type);\n}\n__name(isAction, \"isAction\");\nvar Alternatives = {\n $type: \"Alternatives\",\n cardinality: \"cardinality\",\n elements: \"elements\"\n};\nfunction isAlternatives(item) {\n return reflection.isInstance(item, Alternatives.$type);\n}\n__name(isAlternatives, \"isAlternatives\");\nvar ArrayLiteral = {\n $type: \"ArrayLiteral\",\n elements: \"elements\"\n};\nfunction isArrayLiteral(item) {\n return reflection.isInstance(item, ArrayLiteral.$type);\n}\n__name(isArrayLiteral, \"isArrayLiteral\");\nvar ArrayType = {\n $type: \"ArrayType\",\n elementType: \"elementType\"\n};\nfunction isArrayType(item) {\n return reflection.isInstance(item, ArrayType.$type);\n}\n__name(isArrayType, \"isArrayType\");\nvar Assignment = {\n $type: \"Assignment\",\n cardinality: \"cardinality\",\n feature: \"feature\",\n operator: \"operator\",\n predicate: \"predicate\",\n terminal: \"terminal\"\n};\nfunction isAssignment(item) {\n return reflection.isInstance(item, Assignment.$type);\n}\n__name(isAssignment, \"isAssignment\");\nvar BooleanLiteral = {\n $type: \"BooleanLiteral\",\n true: \"true\"\n};\nfunction isBooleanLiteral(item) {\n return reflection.isInstance(item, BooleanLiteral.$type);\n}\n__name(isBooleanLiteral, \"isBooleanLiteral\");\nvar CharacterRange = {\n $type: \"CharacterRange\",\n cardinality: \"cardinality\",\n left: \"left\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\",\n right: \"right\"\n};\nfunction isCharacterRange(item) {\n return reflection.isInstance(item, CharacterRange.$type);\n}\n__name(isCharacterRange, \"isCharacterRange\");\nvar Condition = {\n $type: \"Condition\"\n};\nfunction isCondition(item) {\n return reflection.isInstance(item, Condition.$type);\n}\n__name(isCondition, \"isCondition\");\nvar Conjunction = {\n $type: \"Conjunction\",\n left: \"left\",\n right: \"right\"\n};\nfunction isConjunction(item) {\n return reflection.isInstance(item, Conjunction.$type);\n}\n__name(isConjunction, \"isConjunction\");\nvar CrossReference = {\n $type: \"CrossReference\",\n cardinality: \"cardinality\",\n deprecatedSyntax: \"deprecatedSyntax\",\n isMulti: \"isMulti\",\n terminal: \"terminal\",\n type: \"type\"\n};\nfunction isCrossReference(item) {\n return reflection.isInstance(item, CrossReference.$type);\n}\n__name(isCrossReference, \"isCrossReference\");\nvar Disjunction = {\n $type: \"Disjunction\",\n left: \"left\",\n right: \"right\"\n};\nfunction isDisjunction(item) {\n return reflection.isInstance(item, Disjunction.$type);\n}\n__name(isDisjunction, \"isDisjunction\");\nvar EndOfFile = {\n $type: \"EndOfFile\",\n cardinality: \"cardinality\"\n};\nfunction isEndOfFile(item) {\n return reflection.isInstance(item, EndOfFile.$type);\n}\n__name(isEndOfFile, \"isEndOfFile\");\nvar Grammar = {\n $type: \"Grammar\",\n imports: \"imports\",\n interfaces: \"interfaces\",\n isDeclared: \"isDeclared\",\n name: \"name\",\n rules: \"rules\",\n types: \"types\"\n};\nfunction isGrammar(item) {\n return reflection.isInstance(item, Grammar.$type);\n}\n__name(isGrammar, \"isGrammar\");\nvar GrammarImport = {\n $type: \"GrammarImport\",\n path: \"path\"\n};\nfunction isGrammarImport(item) {\n return reflection.isInstance(item, GrammarImport.$type);\n}\n__name(isGrammarImport, \"isGrammarImport\");\nvar Group = {\n $type: \"Group\",\n cardinality: \"cardinality\",\n elements: \"elements\",\n guardCondition: \"guardCondition\",\n predicate: \"predicate\"\n};\nfunction isGroup(item) {\n return reflection.isInstance(item, Group.$type);\n}\n__name(isGroup, \"isGroup\");\nvar InferredType = {\n $type: \"InferredType\",\n name: \"name\"\n};\nfunction isInferredType(item) {\n return reflection.isInstance(item, InferredType.$type);\n}\n__name(isInferredType, \"isInferredType\");\nvar InfixRule = {\n $type: \"InfixRule\",\n call: \"call\",\n dataType: \"dataType\",\n inferredType: \"inferredType\",\n name: \"name\",\n operators: \"operators\",\n parameters: \"parameters\",\n returnType: \"returnType\"\n};\nfunction isInfixRule(item) {\n return reflection.isInstance(item, InfixRule.$type);\n}\n__name(isInfixRule, \"isInfixRule\");\nvar InfixRuleOperatorList = {\n $type: \"InfixRuleOperatorList\",\n associativity: \"associativity\",\n operators: \"operators\"\n};\nfunction isInfixRuleOperatorList(item) {\n return reflection.isInstance(item, InfixRuleOperatorList.$type);\n}\n__name(isInfixRuleOperatorList, \"isInfixRuleOperatorList\");\nvar InfixRuleOperators = {\n $type: \"InfixRuleOperators\",\n precedences: \"precedences\"\n};\nfunction isInfixRuleOperators(item) {\n return reflection.isInstance(item, InfixRuleOperators.$type);\n}\n__name(isInfixRuleOperators, \"isInfixRuleOperators\");\nvar Interface = {\n $type: \"Interface\",\n attributes: \"attributes\",\n name: \"name\",\n superTypes: \"superTypes\"\n};\nfunction isInterface(item) {\n return reflection.isInstance(item, Interface.$type);\n}\n__name(isInterface, \"isInterface\");\nvar Keyword = {\n $type: \"Keyword\",\n cardinality: \"cardinality\",\n predicate: \"predicate\",\n value: \"value\"\n};\nfunction isKeyword(item) {\n return reflection.isInstance(item, Keyword.$type);\n}\n__name(isKeyword, \"isKeyword\");\nvar NamedArgument = {\n $type: \"NamedArgument\",\n calledByName: \"calledByName\",\n parameter: \"parameter\",\n value: \"value\"\n};\nfunction isNamedArgument(item) {\n return reflection.isInstance(item, NamedArgument.$type);\n}\n__name(isNamedArgument, \"isNamedArgument\");\nvar NegatedToken = {\n $type: \"NegatedToken\",\n cardinality: \"cardinality\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\",\n terminal: \"terminal\"\n};\nfunction isNegatedToken(item) {\n return reflection.isInstance(item, NegatedToken.$type);\n}\n__name(isNegatedToken, \"isNegatedToken\");\nvar Negation = {\n $type: \"Negation\",\n value: \"value\"\n};\nfunction isNegation(item) {\n return reflection.isInstance(item, Negation.$type);\n}\n__name(isNegation, \"isNegation\");\nvar NumberLiteral = {\n $type: \"NumberLiteral\",\n value: \"value\"\n};\nfunction isNumberLiteral(item) {\n return reflection.isInstance(item, NumberLiteral.$type);\n}\n__name(isNumberLiteral, \"isNumberLiteral\");\nvar Parameter = {\n $type: \"Parameter\",\n name: \"name\"\n};\nfunction isParameter(item) {\n return reflection.isInstance(item, Parameter.$type);\n}\n__name(isParameter, \"isParameter\");\nvar ParameterReference = {\n $type: \"ParameterReference\",\n parameter: \"parameter\"\n};\nfunction isParameterReference(item) {\n return reflection.isInstance(item, ParameterReference.$type);\n}\n__name(isParameterReference, \"isParameterReference\");\nvar ParserRule = {\n $type: \"ParserRule\",\n dataType: \"dataType\",\n definition: \"definition\",\n entry: \"entry\",\n fragment: \"fragment\",\n inferredType: \"inferredType\",\n name: \"name\",\n parameters: \"parameters\",\n returnType: \"returnType\"\n};\nfunction isParserRule(item) {\n return reflection.isInstance(item, ParserRule.$type);\n}\n__name(isParserRule, \"isParserRule\");\nvar ReferenceType = {\n $type: \"ReferenceType\",\n isMulti: \"isMulti\",\n referenceType: \"referenceType\"\n};\nfunction isReferenceType(item) {\n return reflection.isInstance(item, ReferenceType.$type);\n}\n__name(isReferenceType, \"isReferenceType\");\nvar RegexToken = {\n $type: \"RegexToken\",\n cardinality: \"cardinality\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\",\n regex: \"regex\"\n};\nfunction isRegexToken(item) {\n return reflection.isInstance(item, RegexToken.$type);\n}\n__name(isRegexToken, \"isRegexToken\");\nvar ReturnType = {\n $type: \"ReturnType\",\n name: \"name\"\n};\nfunction isReturnType(item) {\n return reflection.isInstance(item, ReturnType.$type);\n}\n__name(isReturnType, \"isReturnType\");\nvar RuleCall = {\n $type: \"RuleCall\",\n arguments: \"arguments\",\n cardinality: \"cardinality\",\n predicate: \"predicate\",\n rule: \"rule\"\n};\nfunction isRuleCall(item) {\n return reflection.isInstance(item, RuleCall.$type);\n}\n__name(isRuleCall, \"isRuleCall\");\nvar SimpleType = {\n $type: \"SimpleType\",\n primitiveType: \"primitiveType\",\n stringType: \"stringType\",\n typeRef: \"typeRef\"\n};\nfunction isSimpleType(item) {\n return reflection.isInstance(item, SimpleType.$type);\n}\n__name(isSimpleType, \"isSimpleType\");\nvar StringLiteral = {\n $type: \"StringLiteral\",\n value: \"value\"\n};\nfunction isStringLiteral(item) {\n return reflection.isInstance(item, StringLiteral.$type);\n}\n__name(isStringLiteral, \"isStringLiteral\");\nvar TerminalAlternatives = {\n $type: \"TerminalAlternatives\",\n cardinality: \"cardinality\",\n elements: \"elements\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\"\n};\nfunction isTerminalAlternatives(item) {\n return reflection.isInstance(item, TerminalAlternatives.$type);\n}\n__name(isTerminalAlternatives, \"isTerminalAlternatives\");\nvar TerminalElement = {\n $type: \"TerminalElement\",\n cardinality: \"cardinality\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\"\n};\nfunction isTerminalElement(item) {\n return reflection.isInstance(item, TerminalElement.$type);\n}\n__name(isTerminalElement, \"isTerminalElement\");\nvar TerminalGroup = {\n $type: \"TerminalGroup\",\n cardinality: \"cardinality\",\n elements: \"elements\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\"\n};\nfunction isTerminalGroup(item) {\n return reflection.isInstance(item, TerminalGroup.$type);\n}\n__name(isTerminalGroup, \"isTerminalGroup\");\nvar TerminalRule = {\n $type: \"TerminalRule\",\n definition: \"definition\",\n fragment: \"fragment\",\n hidden: \"hidden\",\n name: \"name\",\n type: \"type\"\n};\nfunction isTerminalRule(item) {\n return reflection.isInstance(item, TerminalRule.$type);\n}\n__name(isTerminalRule, \"isTerminalRule\");\nvar TerminalRuleCall = {\n $type: \"TerminalRuleCall\",\n cardinality: \"cardinality\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\",\n rule: \"rule\"\n};\nfunction isTerminalRuleCall(item) {\n return reflection.isInstance(item, TerminalRuleCall.$type);\n}\n__name(isTerminalRuleCall, \"isTerminalRuleCall\");\nvar Type = {\n $type: \"Type\",\n name: \"name\",\n type: \"type\"\n};\nfunction isType(item) {\n return reflection.isInstance(item, Type.$type);\n}\n__name(isType, \"isType\");\nvar TypeAttribute = {\n $type: \"TypeAttribute\",\n defaultValue: \"defaultValue\",\n isOptional: \"isOptional\",\n name: \"name\",\n type: \"type\"\n};\nfunction isTypeAttribute(item) {\n return reflection.isInstance(item, TypeAttribute.$type);\n}\n__name(isTypeAttribute, \"isTypeAttribute\");\nvar TypeDefinition = {\n $type: \"TypeDefinition\"\n};\nfunction isTypeDefinition(item) {\n return reflection.isInstance(item, TypeDefinition.$type);\n}\n__name(isTypeDefinition, \"isTypeDefinition\");\nvar UnionType = {\n $type: \"UnionType\",\n types: \"types\"\n};\nfunction isUnionType(item) {\n return reflection.isInstance(item, UnionType.$type);\n}\n__name(isUnionType, \"isUnionType\");\nvar UnorderedGroup = {\n $type: \"UnorderedGroup\",\n cardinality: \"cardinality\",\n elements: \"elements\"\n};\nfunction isUnorderedGroup(item) {\n return reflection.isInstance(item, UnorderedGroup.$type);\n}\n__name(isUnorderedGroup, \"isUnorderedGroup\");\nvar UntilToken = {\n $type: \"UntilToken\",\n cardinality: \"cardinality\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\",\n terminal: \"terminal\"\n};\nfunction isUntilToken(item) {\n return reflection.isInstance(item, UntilToken.$type);\n}\n__name(isUntilToken, \"isUntilToken\");\nvar ValueLiteral = {\n $type: \"ValueLiteral\"\n};\nfunction isValueLiteral(item) {\n return reflection.isInstance(item, ValueLiteral.$type);\n}\n__name(isValueLiteral, \"isValueLiteral\");\nvar Wildcard = {\n $type: \"Wildcard\",\n cardinality: \"cardinality\",\n lookahead: \"lookahead\",\n parenthesized: \"parenthesized\"\n};\nfunction isWildcard(item) {\n return reflection.isInstance(item, Wildcard.$type);\n}\n__name(isWildcard, \"isWildcard\");\nvar LangiumGrammarAstReflection = class extends AbstractAstReflection {\n static {\n __name(this, \"LangiumGrammarAstReflection\");\n }\n constructor() {\n super(...arguments);\n this.types = {\n AbstractElement: {\n name: AbstractElement.$type,\n properties: {\n cardinality: {\n name: AbstractElement.cardinality\n }\n },\n superTypes: []\n },\n AbstractParserRule: {\n name: AbstractParserRule.$type,\n properties: {},\n superTypes: [AbstractRule.$type, AbstractType.$type]\n },\n AbstractRule: {\n name: AbstractRule.$type,\n properties: {},\n superTypes: []\n },\n AbstractType: {\n name: AbstractType.$type,\n properties: {},\n superTypes: []\n },\n Action: {\n name: Action.$type,\n properties: {\n cardinality: {\n name: Action.cardinality\n },\n feature: {\n name: Action.feature\n },\n inferredType: {\n name: Action.inferredType\n },\n operator: {\n name: Action.operator\n },\n type: {\n name: Action.type,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractElement.$type]\n },\n Alternatives: {\n name: Alternatives.$type,\n properties: {\n cardinality: {\n name: Alternatives.cardinality\n },\n elements: {\n name: Alternatives.elements,\n defaultValue: []\n }\n },\n superTypes: [AbstractElement.$type]\n },\n ArrayLiteral: {\n name: ArrayLiteral.$type,\n properties: {\n elements: {\n name: ArrayLiteral.elements,\n defaultValue: []\n }\n },\n superTypes: [ValueLiteral.$type]\n },\n ArrayType: {\n name: ArrayType.$type,\n properties: {\n elementType: {\n name: ArrayType.elementType\n }\n },\n superTypes: [TypeDefinition.$type]\n },\n Assignment: {\n name: Assignment.$type,\n properties: {\n cardinality: {\n name: Assignment.cardinality\n },\n feature: {\n name: Assignment.feature\n },\n operator: {\n name: Assignment.operator\n },\n predicate: {\n name: Assignment.predicate\n },\n terminal: {\n name: Assignment.terminal\n }\n },\n superTypes: [AbstractElement.$type]\n },\n BooleanLiteral: {\n name: BooleanLiteral.$type,\n properties: {\n true: {\n name: BooleanLiteral.true,\n defaultValue: false\n }\n },\n superTypes: [Condition.$type, ValueLiteral.$type]\n },\n CharacterRange: {\n name: CharacterRange.$type,\n properties: {\n cardinality: {\n name: CharacterRange.cardinality\n },\n left: {\n name: CharacterRange.left\n },\n lookahead: {\n name: CharacterRange.lookahead\n },\n parenthesized: {\n name: CharacterRange.parenthesized,\n defaultValue: false\n },\n right: {\n name: CharacterRange.right\n }\n },\n superTypes: [TerminalElement.$type]\n },\n Condition: {\n name: Condition.$type,\n properties: {},\n superTypes: []\n },\n Conjunction: {\n name: Conjunction.$type,\n properties: {\n left: {\n name: Conjunction.left\n },\n right: {\n name: Conjunction.right\n }\n },\n superTypes: [Condition.$type]\n },\n CrossReference: {\n name: CrossReference.$type,\n properties: {\n cardinality: {\n name: CrossReference.cardinality\n },\n deprecatedSyntax: {\n name: CrossReference.deprecatedSyntax,\n defaultValue: false\n },\n isMulti: {\n name: CrossReference.isMulti,\n defaultValue: false\n },\n terminal: {\n name: CrossReference.terminal\n },\n type: {\n name: CrossReference.type,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractElement.$type]\n },\n Disjunction: {\n name: Disjunction.$type,\n properties: {\n left: {\n name: Disjunction.left\n },\n right: {\n name: Disjunction.right\n }\n },\n superTypes: [Condition.$type]\n },\n EndOfFile: {\n name: EndOfFile.$type,\n properties: {\n cardinality: {\n name: EndOfFile.cardinality\n }\n },\n superTypes: [AbstractElement.$type]\n },\n Grammar: {\n name: Grammar.$type,\n properties: {\n imports: {\n name: Grammar.imports,\n defaultValue: []\n },\n interfaces: {\n name: Grammar.interfaces,\n defaultValue: []\n },\n isDeclared: {\n name: Grammar.isDeclared,\n defaultValue: false\n },\n name: {\n name: Grammar.name\n },\n rules: {\n name: Grammar.rules,\n defaultValue: []\n },\n types: {\n name: Grammar.types,\n defaultValue: []\n }\n },\n superTypes: []\n },\n GrammarImport: {\n name: GrammarImport.$type,\n properties: {\n path: {\n name: GrammarImport.path\n }\n },\n superTypes: []\n },\n Group: {\n name: Group.$type,\n properties: {\n cardinality: {\n name: Group.cardinality\n },\n elements: {\n name: Group.elements,\n defaultValue: []\n },\n guardCondition: {\n name: Group.guardCondition\n },\n predicate: {\n name: Group.predicate\n }\n },\n superTypes: [AbstractElement.$type]\n },\n InferredType: {\n name: InferredType.$type,\n properties: {\n name: {\n name: InferredType.name\n }\n },\n superTypes: [AbstractType.$type]\n },\n InfixRule: {\n name: InfixRule.$type,\n properties: {\n call: {\n name: InfixRule.call\n },\n dataType: {\n name: InfixRule.dataType\n },\n inferredType: {\n name: InfixRule.inferredType\n },\n name: {\n name: InfixRule.name\n },\n operators: {\n name: InfixRule.operators\n },\n parameters: {\n name: InfixRule.parameters,\n defaultValue: []\n },\n returnType: {\n name: InfixRule.returnType,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractParserRule.$type]\n },\n InfixRuleOperatorList: {\n name: InfixRuleOperatorList.$type,\n properties: {\n associativity: {\n name: InfixRuleOperatorList.associativity\n },\n operators: {\n name: InfixRuleOperatorList.operators,\n defaultValue: []\n }\n },\n superTypes: []\n },\n InfixRuleOperators: {\n name: InfixRuleOperators.$type,\n properties: {\n precedences: {\n name: InfixRuleOperators.precedences,\n defaultValue: []\n }\n },\n superTypes: []\n },\n Interface: {\n name: Interface.$type,\n properties: {\n attributes: {\n name: Interface.attributes,\n defaultValue: []\n },\n name: {\n name: Interface.name\n },\n superTypes: {\n name: Interface.superTypes,\n defaultValue: [],\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractType.$type]\n },\n Keyword: {\n name: Keyword.$type,\n properties: {\n cardinality: {\n name: Keyword.cardinality\n },\n predicate: {\n name: Keyword.predicate\n },\n value: {\n name: Keyword.value\n }\n },\n superTypes: [AbstractElement.$type]\n },\n NamedArgument: {\n name: NamedArgument.$type,\n properties: {\n calledByName: {\n name: NamedArgument.calledByName,\n defaultValue: false\n },\n parameter: {\n name: NamedArgument.parameter,\n referenceType: Parameter.$type\n },\n value: {\n name: NamedArgument.value\n }\n },\n superTypes: []\n },\n NegatedToken: {\n name: NegatedToken.$type,\n properties: {\n cardinality: {\n name: NegatedToken.cardinality\n },\n lookahead: {\n name: NegatedToken.lookahead\n },\n parenthesized: {\n name: NegatedToken.parenthesized,\n defaultValue: false\n },\n terminal: {\n name: NegatedToken.terminal\n }\n },\n superTypes: [TerminalElement.$type]\n },\n Negation: {\n name: Negation.$type,\n properties: {\n value: {\n name: Negation.value\n }\n },\n superTypes: [Condition.$type]\n },\n NumberLiteral: {\n name: NumberLiteral.$type,\n properties: {\n value: {\n name: NumberLiteral.value\n }\n },\n superTypes: [ValueLiteral.$type]\n },\n Parameter: {\n name: Parameter.$type,\n properties: {\n name: {\n name: Parameter.name\n }\n },\n superTypes: []\n },\n ParameterReference: {\n name: ParameterReference.$type,\n properties: {\n parameter: {\n name: ParameterReference.parameter,\n referenceType: Parameter.$type\n }\n },\n superTypes: [Condition.$type]\n },\n ParserRule: {\n name: ParserRule.$type,\n properties: {\n dataType: {\n name: ParserRule.dataType\n },\n definition: {\n name: ParserRule.definition\n },\n entry: {\n name: ParserRule.entry,\n defaultValue: false\n },\n fragment: {\n name: ParserRule.fragment,\n defaultValue: false\n },\n inferredType: {\n name: ParserRule.inferredType\n },\n name: {\n name: ParserRule.name\n },\n parameters: {\n name: ParserRule.parameters,\n defaultValue: []\n },\n returnType: {\n name: ParserRule.returnType,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractParserRule.$type]\n },\n ReferenceType: {\n name: ReferenceType.$type,\n properties: {\n isMulti: {\n name: ReferenceType.isMulti,\n defaultValue: false\n },\n referenceType: {\n name: ReferenceType.referenceType\n }\n },\n superTypes: [TypeDefinition.$type]\n },\n RegexToken: {\n name: RegexToken.$type,\n properties: {\n cardinality: {\n name: RegexToken.cardinality\n },\n lookahead: {\n name: RegexToken.lookahead\n },\n parenthesized: {\n name: RegexToken.parenthesized,\n defaultValue: false\n },\n regex: {\n name: RegexToken.regex\n }\n },\n superTypes: [TerminalElement.$type]\n },\n ReturnType: {\n name: ReturnType.$type,\n properties: {\n name: {\n name: ReturnType.name\n }\n },\n superTypes: []\n },\n RuleCall: {\n name: RuleCall.$type,\n properties: {\n arguments: {\n name: RuleCall.arguments,\n defaultValue: []\n },\n cardinality: {\n name: RuleCall.cardinality\n },\n predicate: {\n name: RuleCall.predicate\n },\n rule: {\n name: RuleCall.rule,\n referenceType: AbstractRule.$type\n }\n },\n superTypes: [AbstractElement.$type]\n },\n SimpleType: {\n name: SimpleType.$type,\n properties: {\n primitiveType: {\n name: SimpleType.primitiveType\n },\n stringType: {\n name: SimpleType.stringType\n },\n typeRef: {\n name: SimpleType.typeRef,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [TypeDefinition.$type]\n },\n StringLiteral: {\n name: StringLiteral.$type,\n properties: {\n value: {\n name: StringLiteral.value\n }\n },\n superTypes: [ValueLiteral.$type]\n },\n TerminalAlternatives: {\n name: TerminalAlternatives.$type,\n properties: {\n cardinality: {\n name: TerminalAlternatives.cardinality\n },\n elements: {\n name: TerminalAlternatives.elements,\n defaultValue: []\n },\n lookahead: {\n name: TerminalAlternatives.lookahead\n },\n parenthesized: {\n name: TerminalAlternatives.parenthesized,\n defaultValue: false\n }\n },\n superTypes: [TerminalElement.$type]\n },\n TerminalElement: {\n name: TerminalElement.$type,\n properties: {\n cardinality: {\n name: TerminalElement.cardinality\n },\n lookahead: {\n name: TerminalElement.lookahead\n },\n parenthesized: {\n name: TerminalElement.parenthesized,\n defaultValue: false\n }\n },\n superTypes: [AbstractElement.$type]\n },\n TerminalGroup: {\n name: TerminalGroup.$type,\n properties: {\n cardinality: {\n name: TerminalGroup.cardinality\n },\n elements: {\n name: TerminalGroup.elements,\n defaultValue: []\n },\n lookahead: {\n name: TerminalGroup.lookahead\n },\n parenthesized: {\n name: TerminalGroup.parenthesized,\n defaultValue: false\n }\n },\n superTypes: [TerminalElement.$type]\n },\n TerminalRule: {\n name: TerminalRule.$type,\n properties: {\n definition: {\n name: TerminalRule.definition\n },\n fragment: {\n name: TerminalRule.fragment,\n defaultValue: false\n },\n hidden: {\n name: TerminalRule.hidden,\n defaultValue: false\n },\n name: {\n name: TerminalRule.name\n },\n type: {\n name: TerminalRule.type\n }\n },\n superTypes: [AbstractRule.$type]\n },\n TerminalRuleCall: {\n name: TerminalRuleCall.$type,\n properties: {\n cardinality: {\n name: TerminalRuleCall.cardinality\n },\n lookahead: {\n name: TerminalRuleCall.lookahead\n },\n parenthesized: {\n name: TerminalRuleCall.parenthesized,\n defaultValue: false\n },\n rule: {\n name: TerminalRuleCall.rule,\n referenceType: TerminalRule.$type\n }\n },\n superTypes: [TerminalElement.$type]\n },\n Type: {\n name: Type.$type,\n properties: {\n name: {\n name: Type.name\n },\n type: {\n name: Type.type\n }\n },\n superTypes: [AbstractType.$type]\n },\n TypeAttribute: {\n name: TypeAttribute.$type,\n properties: {\n defaultValue: {\n name: TypeAttribute.defaultValue\n },\n isOptional: {\n name: TypeAttribute.isOptional,\n defaultValue: false\n },\n name: {\n name: TypeAttribute.name\n },\n type: {\n name: TypeAttribute.type\n }\n },\n superTypes: []\n },\n TypeDefinition: {\n name: TypeDefinition.$type,\n properties: {},\n superTypes: []\n },\n UnionType: {\n name: UnionType.$type,\n properties: {\n types: {\n name: UnionType.types,\n defaultValue: []\n }\n },\n superTypes: [TypeDefinition.$type]\n },\n UnorderedGroup: {\n name: UnorderedGroup.$type,\n properties: {\n cardinality: {\n name: UnorderedGroup.cardinality\n },\n elements: {\n name: UnorderedGroup.elements,\n defaultValue: []\n }\n },\n superTypes: [AbstractElement.$type]\n },\n UntilToken: {\n name: UntilToken.$type,\n properties: {\n cardinality: {\n name: UntilToken.cardinality\n },\n lookahead: {\n name: UntilToken.lookahead\n },\n parenthesized: {\n name: UntilToken.parenthesized,\n defaultValue: false\n },\n terminal: {\n name: UntilToken.terminal\n }\n },\n superTypes: [TerminalElement.$type]\n },\n ValueLiteral: {\n name: ValueLiteral.$type,\n properties: {},\n superTypes: []\n },\n Wildcard: {\n name: Wildcard.$type,\n properties: {\n cardinality: {\n name: Wildcard.cardinality\n },\n lookahead: {\n name: Wildcard.lookahead\n },\n parenthesized: {\n name: Wildcard.parenthesized,\n defaultValue: false\n }\n },\n superTypes: [TerminalElement.$type]\n }\n };\n }\n};\nvar reflection = new LangiumGrammarAstReflection();\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/cst-utils.js\nfunction getDatatypeNode(cstNode) {\n let current = cstNode;\n let found = false;\n while (current) {\n const definingRule = getContainerOfType(current.grammarSource, isParserRule);\n if (definingRule && definingRule.dataType) {\n current = current.container;\n found = true;\n } else if (found) {\n return current;\n } else {\n return void 0;\n }\n }\n return void 0;\n}\n__name(getDatatypeNode, \"getDatatypeNode\");\nfunction streamCst(node) {\n return new TreeStreamImpl(node, (element) => {\n if (isCompositeCstNode(element)) {\n return element.content;\n } else {\n return [];\n }\n }, { includeRoot: true });\n}\n__name(streamCst, \"streamCst\");\nfunction flattenCst(node) {\n return streamCst(node).filter(isLeafCstNode);\n}\n__name(flattenCst, \"flattenCst\");\nfunction isChildNode(child, parent) {\n while (child.container) {\n child = child.container;\n if (child === parent) {\n return true;\n }\n }\n return false;\n}\n__name(isChildNode, \"isChildNode\");\nfunction tokenToRange(token) {\n return {\n start: {\n character: token.startColumn - 1,\n line: token.startLine - 1\n },\n end: {\n character: token.endColumn,\n // endColumn uses the correct index\n line: token.endLine - 1\n }\n };\n}\n__name(tokenToRange, \"tokenToRange\");\nfunction toDocumentSegment(node) {\n if (!node) {\n return void 0;\n }\n const { offset, end, range } = node;\n return {\n range,\n offset,\n end,\n length: end - offset\n };\n}\n__name(toDocumentSegment, \"toDocumentSegment\");\nvar RangeComparison;\n(function(RangeComparison2) {\n RangeComparison2[RangeComparison2[\"Before\"] = 0] = \"Before\";\n RangeComparison2[RangeComparison2[\"After\"] = 1] = \"After\";\n RangeComparison2[RangeComparison2[\"OverlapFront\"] = 2] = \"OverlapFront\";\n RangeComparison2[RangeComparison2[\"OverlapBack\"] = 3] = \"OverlapBack\";\n RangeComparison2[RangeComparison2[\"Inside\"] = 4] = \"Inside\";\n RangeComparison2[RangeComparison2[\"Outside\"] = 5] = \"Outside\";\n})(RangeComparison || (RangeComparison = {}));\nfunction compareRange(range, to) {\n if (range.end.line < to.start.line || range.end.line === to.start.line && range.end.character <= to.start.character) {\n return RangeComparison.Before;\n } else if (range.start.line > to.end.line || range.start.line === to.end.line && range.start.character >= to.end.character) {\n return RangeComparison.After;\n }\n const startInside = range.start.line > to.start.line || range.start.line === to.start.line && range.start.character >= to.start.character;\n const endInside = range.end.line < to.end.line || range.end.line === to.end.line && range.end.character <= to.end.character;\n if (startInside && endInside) {\n return RangeComparison.Inside;\n } else if (startInside) {\n return RangeComparison.OverlapBack;\n } else if (endInside) {\n return RangeComparison.OverlapFront;\n } else {\n return RangeComparison.Outside;\n }\n}\n__name(compareRange, \"compareRange\");\nfunction inRange(range, to) {\n const comparison = compareRange(range, to);\n return comparison > RangeComparison.After;\n}\n__name(inRange, \"inRange\");\nvar DefaultNameRegexp = /^[\\w\\p{L}]$/u;\nfunction findDeclarationNodeAtOffset(cstNode, offset, nameRegexp = DefaultNameRegexp) {\n if (cstNode) {\n if (offset > 0) {\n const localOffset = offset - cstNode.offset;\n const textAtOffset = cstNode.text.charAt(localOffset);\n if (!nameRegexp.test(textAtOffset)) {\n offset--;\n }\n }\n return findLeafNodeAtOffset(cstNode, offset);\n }\n return void 0;\n}\n__name(findDeclarationNodeAtOffset, \"findDeclarationNodeAtOffset\");\nfunction findCommentNode(cstNode, commentNames) {\n if (cstNode) {\n const previous = getPreviousNode(cstNode, true);\n if (previous && isCommentNode(previous, commentNames)) {\n return previous;\n }\n if (isRootCstNode(cstNode)) {\n const endIndex = cstNode.content.findIndex((e) => !e.hidden);\n for (let i = endIndex - 1; i >= 0; i--) {\n const child = cstNode.content[i];\n if (isCommentNode(child, commentNames)) {\n return child;\n }\n }\n }\n }\n return void 0;\n}\n__name(findCommentNode, \"findCommentNode\");\nfunction isCommentNode(cstNode, commentNames) {\n return isLeafCstNode(cstNode) && commentNames.includes(cstNode.tokenType.name);\n}\n__name(isCommentNode, \"isCommentNode\");\nfunction findLeafNodeAtOffset(node, offset) {\n if (isLeafCstNode(node)) {\n return node;\n } else if (isCompositeCstNode(node)) {\n const searchResult = binarySearch(node, offset, false);\n if (searchResult) {\n return findLeafNodeAtOffset(searchResult, offset);\n }\n }\n return void 0;\n}\n__name(findLeafNodeAtOffset, \"findLeafNodeAtOffset\");\nfunction findLeafNodeBeforeOffset(node, offset) {\n if (isLeafCstNode(node)) {\n return node;\n } else if (isCompositeCstNode(node)) {\n const searchResult = binarySearch(node, offset, true);\n if (searchResult) {\n return findLeafNodeBeforeOffset(searchResult, offset);\n }\n }\n return void 0;\n}\n__name(findLeafNodeBeforeOffset, \"findLeafNodeBeforeOffset\");\nfunction binarySearch(node, offset, closest) {\n let left = 0;\n let right = node.content.length - 1;\n let closestNode = void 0;\n while (left <= right) {\n const middle = Math.floor((left + right) / 2);\n const middleNode = node.content[middle];\n if (middleNode.offset <= offset && middleNode.end > offset) {\n return middleNode;\n }\n if (middleNode.end <= offset) {\n closestNode = closest ? middleNode : void 0;\n left = middle + 1;\n } else {\n right = middle - 1;\n }\n }\n return closestNode;\n}\n__name(binarySearch, \"binarySearch\");\nfunction getPreviousNode(node, hidden = true) {\n while (node.container) {\n const parent = node.container;\n let index = parent.content.indexOf(node);\n while (index > 0) {\n index--;\n const previous = parent.content[index];\n if (hidden || !previous.hidden) {\n return previous;\n }\n }\n node = parent;\n }\n return void 0;\n}\n__name(getPreviousNode, \"getPreviousNode\");\nfunction getNextNode(node, hidden = true) {\n while (node.container) {\n const parent = node.container;\n let index = parent.content.indexOf(node);\n const last2 = parent.content.length - 1;\n while (index < last2) {\n index++;\n const next = parent.content[index];\n if (hidden || !next.hidden) {\n return next;\n }\n }\n node = parent;\n }\n return void 0;\n}\n__name(getNextNode, \"getNextNode\");\nfunction getStartlineNode(node) {\n if (node.range.start.character === 0) {\n return node;\n }\n const line = node.range.start.line;\n let last2 = node;\n let index;\n while (node.container) {\n const parent = node.container;\n const selfIndex = index ?? parent.content.indexOf(node);\n if (selfIndex === 0) {\n node = parent;\n index = void 0;\n } else {\n index = selfIndex - 1;\n node = parent.content[index];\n }\n if (node.range.start.line !== line) {\n break;\n }\n last2 = node;\n }\n return last2;\n}\n__name(getStartlineNode, \"getStartlineNode\");\nfunction getInteriorNodes(start, end) {\n const commonParent = getCommonParent(start, end);\n if (!commonParent) {\n return [];\n }\n return commonParent.parent.content.slice(commonParent.a + 1, commonParent.b);\n}\n__name(getInteriorNodes, \"getInteriorNodes\");\nfunction getCommonParent(a, b) {\n const aParents = getParentChain(a);\n const bParents = getParentChain(b);\n let current;\n for (let i = 0; i < aParents.length && i < bParents.length; i++) {\n const aParent = aParents[i];\n const bParent = bParents[i];\n if (aParent.parent === bParent.parent) {\n current = {\n parent: aParent.parent,\n a: aParent.index,\n b: bParent.index\n };\n } else {\n break;\n }\n }\n return current;\n}\n__name(getCommonParent, \"getCommonParent\");\nfunction getParentChain(node) {\n const chain = [];\n while (node.container) {\n const parent = node.container;\n const index = parent.content.indexOf(node);\n chain.push({\n parent,\n index\n });\n node = parent;\n }\n return chain.reverse();\n}\n__name(getParentChain, \"getParentChain\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/grammar-utils.js\nvar grammar_utils_exports = {};\n__export(grammar_utils_exports, {\n findAssignment: () => findAssignment,\n findNameAssignment: () => findNameAssignment,\n findNodeForKeyword: () => findNodeForKeyword,\n findNodeForProperty: () => findNodeForProperty,\n findNodesForKeyword: () => findNodesForKeyword,\n findNodesForKeywordInternal: () => findNodesForKeywordInternal,\n findNodesForProperty: () => findNodesForProperty,\n getActionAtElement: () => getActionAtElement,\n getActionType: () => getActionType,\n getAllReachableRules: () => getAllReachableRules,\n getAllRulesUsedForCrossReferences: () => getAllRulesUsedForCrossReferences,\n getCrossReferenceTerminal: () => getCrossReferenceTerminal,\n getEntryRule: () => getEntryRule,\n getExplicitRuleType: () => getExplicitRuleType,\n getHiddenRules: () => getHiddenRules,\n getRuleType: () => getRuleType,\n getRuleTypeName: () => getRuleTypeName,\n getTypeName: () => getTypeName,\n isArrayCardinality: () => isArrayCardinality,\n isArrayOperator: () => isArrayOperator,\n isCommentTerminal: () => isCommentTerminal,\n isDataType: () => isDataType,\n isDataTypeRule: () => isDataTypeRule,\n isOptionalCardinality: () => isOptionalCardinality,\n terminalRegex: () => terminalRegex\n});\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/errors.js\nvar ErrorWithLocation = class extends Error {\n static {\n __name(this, \"ErrorWithLocation\");\n }\n constructor(node, message) {\n super(node ? `${message} at ${node.range.start.line}:${node.range.start.character}` : message);\n }\n};\nfunction assertUnreachable(_, message = \"Error: Got unexpected value.\") {\n throw new Error(message);\n}\n__name(assertUnreachable, \"assertUnreachable\");\nfunction assertCondition(condition, message = \"Error: Condition is violated.\") {\n if (!condition) {\n throw new Error(message);\n }\n}\n__name(assertCondition, \"assertCondition\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/regexp-utils.js\nvar regexp_utils_exports = {};\n__export(regexp_utils_exports, {\n NEWLINE_REGEXP: () => NEWLINE_REGEXP,\n escapeRegExp: () => escapeRegExp,\n getTerminalParts: () => getTerminalParts,\n isMultilineComment: () => isMultilineComment,\n isWhitespace: () => isWhitespace,\n partialMatches: () => partialMatches,\n partialRegExp: () => partialRegExp,\n whitespaceCharacters: () => whitespaceCharacters\n});\n\n// ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.1.1/node_modules/@chevrotain/regexp-to-ast/lib/src/utils.js\nfunction cc(char) {\n return char.charCodeAt(0);\n}\n__name(cc, \"cc\");\nfunction insertToSet(item, set) {\n if (Array.isArray(item)) {\n item.forEach(function(subItem) {\n set.push(subItem);\n });\n } else {\n set.push(item);\n }\n}\n__name(insertToSet, \"insertToSet\");\nfunction addFlag(flagObj, flagKey) {\n if (flagObj[flagKey] === true) {\n throw \"duplicate flag \" + flagKey;\n }\n const x = flagObj[flagKey];\n flagObj[flagKey] = true;\n}\n__name(addFlag, \"addFlag\");\nfunction ASSERT_EXISTS(obj) {\n if (obj === void 0) {\n throw Error(\"Internal Error - Should never get here!\");\n }\n return true;\n}\n__name(ASSERT_EXISTS, \"ASSERT_EXISTS\");\nfunction ASSERT_NEVER_REACH_HERE() {\n throw Error(\"Internal Error - Should never get here!\");\n}\n__name(ASSERT_NEVER_REACH_HERE, \"ASSERT_NEVER_REACH_HERE\");\nfunction isCharacter(obj) {\n return obj[\"type\"] === \"Character\";\n}\n__name(isCharacter, \"isCharacter\");\n\n// ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.1.1/node_modules/@chevrotain/regexp-to-ast/lib/src/character-classes.js\nvar digitsCharCodes = [];\nfor (let i = cc(\"0\"); i <= cc(\"9\"); i++) {\n digitsCharCodes.push(i);\n}\nvar wordCharCodes = [cc(\"_\")].concat(digitsCharCodes);\nfor (let i = cc(\"a\"); i <= cc(\"z\"); i++) {\n wordCharCodes.push(i);\n}\nfor (let i = cc(\"A\"); i <= cc(\"Z\"); i++) {\n wordCharCodes.push(i);\n}\nvar whitespaceCodes = [\n cc(\" \"),\n cc(\"\\f\"),\n cc(\"\\n\"),\n cc(\"\\r\"),\n cc(\"\t\"),\n cc(\"\\v\"),\n cc(\"\t\"),\n cc(\"\\xA0\"),\n cc(\"\\u1680\"),\n cc(\"\\u2000\"),\n cc(\"\\u2001\"),\n cc(\"\\u2002\"),\n cc(\"\\u2003\"),\n cc(\"\\u2004\"),\n cc(\"\\u2005\"),\n cc(\"\\u2006\"),\n cc(\"\\u2007\"),\n cc(\"\\u2008\"),\n cc(\"\\u2009\"),\n cc(\"\\u200A\"),\n cc(\"\\u2028\"),\n cc(\"\\u2029\"),\n cc(\"\\u202F\"),\n cc(\"\\u205F\"),\n cc(\"\\u3000\"),\n cc(\"\\uFEFF\")\n];\n\n// ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.1.1/node_modules/@chevrotain/regexp-to-ast/lib/src/regexp-parser.js\nvar hexDigitPattern = /[0-9a-fA-F]/;\nvar decimalPattern = /[0-9]/;\nvar decimalPatternNoZero = /[1-9]/;\nvar RegExpParser = class {\n static {\n __name(this, \"RegExpParser\");\n }\n constructor() {\n this.idx = 0;\n this.input = \"\";\n this.groupIdx = 0;\n }\n saveState() {\n return {\n idx: this.idx,\n input: this.input,\n groupIdx: this.groupIdx\n };\n }\n restoreState(newState2) {\n this.idx = newState2.idx;\n this.input = newState2.input;\n this.groupIdx = newState2.groupIdx;\n }\n pattern(input) {\n this.idx = 0;\n this.input = input;\n this.groupIdx = 0;\n this.consumeChar(\"/\");\n const value = this.disjunction();\n this.consumeChar(\"/\");\n const flags = {\n type: \"Flags\",\n loc: { begin: this.idx, end: input.length },\n global: false,\n ignoreCase: false,\n multiLine: false,\n unicode: false,\n sticky: false\n };\n while (this.isRegExpFlag()) {\n switch (this.popChar()) {\n case \"g\":\n addFlag(flags, \"global\");\n break;\n case \"i\":\n addFlag(flags, \"ignoreCase\");\n break;\n case \"m\":\n addFlag(flags, \"multiLine\");\n break;\n case \"u\":\n addFlag(flags, \"unicode\");\n break;\n case \"y\":\n addFlag(flags, \"sticky\");\n break;\n }\n }\n if (this.idx !== this.input.length) {\n throw Error(\"Redundant input: \" + this.input.substring(this.idx));\n }\n return {\n type: \"Pattern\",\n flags,\n value,\n loc: this.loc(0)\n };\n }\n disjunction() {\n const alts = [];\n const begin = this.idx;\n alts.push(this.alternative());\n while (this.peekChar() === \"|\") {\n this.consumeChar(\"|\");\n alts.push(this.alternative());\n }\n return { type: \"Disjunction\", value: alts, loc: this.loc(begin) };\n }\n alternative() {\n const terms = [];\n const begin = this.idx;\n while (this.isTerm()) {\n terms.push(this.term());\n }\n return { type: \"Alternative\", value: terms, loc: this.loc(begin) };\n }\n term() {\n if (this.isAssertion()) {\n return this.assertion();\n } else {\n return this.atom();\n }\n }\n assertion() {\n const begin = this.idx;\n switch (this.popChar()) {\n case \"^\":\n return {\n type: \"StartAnchor\",\n loc: this.loc(begin)\n };\n case \"$\":\n return { type: \"EndAnchor\", loc: this.loc(begin) };\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.popChar()) {\n case \"b\":\n return {\n type: \"WordBoundary\",\n loc: this.loc(begin)\n };\n case \"B\":\n return {\n type: \"NonWordBoundary\",\n loc: this.loc(begin)\n };\n }\n throw Error(\"Invalid Assertion Escape\");\n // '(?=' or '(?!'\n case \"(\":\n this.consumeChar(\"?\");\n let type;\n switch (this.popChar()) {\n case \"=\":\n type = \"Lookahead\";\n break;\n case \"!\":\n type = \"NegativeLookahead\";\n break;\n case \"<\": {\n switch (this.popChar()) {\n case \"=\":\n type = \"Lookbehind\";\n break;\n case \"!\":\n type = \"NegativeLookbehind\";\n }\n break;\n }\n }\n ASSERT_EXISTS(type);\n const disjunction = this.disjunction();\n this.consumeChar(\")\");\n return {\n type,\n value: disjunction,\n loc: this.loc(begin)\n };\n }\n return ASSERT_NEVER_REACH_HERE();\n }\n quantifier(isBacktracking = false) {\n let range = void 0;\n const begin = this.idx;\n switch (this.popChar()) {\n case \"*\":\n range = {\n atLeast: 0,\n atMost: Infinity\n };\n break;\n case \"+\":\n range = {\n atLeast: 1,\n atMost: Infinity\n };\n break;\n case \"?\":\n range = {\n atLeast: 0,\n atMost: 1\n };\n break;\n case \"{\":\n const atLeast = this.integerIncludingZero();\n switch (this.popChar()) {\n case \"}\":\n range = {\n atLeast,\n atMost: atLeast\n };\n break;\n case \",\":\n let atMost;\n if (this.isDigit()) {\n atMost = this.integerIncludingZero();\n range = {\n atLeast,\n atMost\n };\n } else {\n range = {\n atLeast,\n atMost: Infinity\n };\n }\n this.consumeChar(\"}\");\n break;\n }\n if (isBacktracking === true && range === void 0) {\n return void 0;\n }\n ASSERT_EXISTS(range);\n break;\n }\n if (isBacktracking === true && range === void 0) {\n return void 0;\n }\n if (ASSERT_EXISTS(range)) {\n if (this.peekChar(0) === \"?\") {\n this.consumeChar(\"?\");\n range.greedy = false;\n } else {\n range.greedy = true;\n }\n range.type = \"Quantifier\";\n range.loc = this.loc(begin);\n return range;\n }\n }\n atom() {\n let atom2;\n const begin = this.idx;\n switch (this.peekChar()) {\n case \".\":\n atom2 = this.dotAll();\n break;\n case \"\\\\\":\n atom2 = this.atomEscape();\n break;\n case \"[\":\n atom2 = this.characterClass();\n break;\n case \"(\":\n atom2 = this.group();\n break;\n }\n if (atom2 === void 0 && this.isPatternCharacter()) {\n atom2 = this.patternCharacter();\n }\n if (ASSERT_EXISTS(atom2)) {\n atom2.loc = this.loc(begin);\n if (this.isQuantifier()) {\n atom2.quantifier = this.quantifier();\n }\n return atom2;\n }\n return ASSERT_NEVER_REACH_HERE();\n }\n dotAll() {\n this.consumeChar(\".\");\n return {\n type: \"Set\",\n complement: true,\n value: [cc(\"\\n\"), cc(\"\\r\"), cc(\"\\u2028\"), cc(\"\\u2029\")]\n };\n }\n atomEscape() {\n this.consumeChar(\"\\\\\");\n switch (this.peekChar()) {\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n return this.decimalEscapeAtom();\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape();\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom();\n case \"c\":\n return this.controlLetterEscapeAtom();\n case \"0\":\n return this.nulCharacterAtom();\n case \"x\":\n return this.hexEscapeSequenceAtom();\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom();\n default:\n return this.identityEscapeAtom();\n }\n }\n decimalEscapeAtom() {\n const value = this.positiveInteger();\n return { type: \"GroupBackReference\", value };\n }\n characterClassEscape() {\n let set;\n let complement = false;\n switch (this.popChar()) {\n case \"d\":\n set = digitsCharCodes;\n break;\n case \"D\":\n set = digitsCharCodes;\n complement = true;\n break;\n case \"s\":\n set = whitespaceCodes;\n break;\n case \"S\":\n set = whitespaceCodes;\n complement = true;\n break;\n case \"w\":\n set = wordCharCodes;\n break;\n case \"W\":\n set = wordCharCodes;\n complement = true;\n break;\n }\n if (ASSERT_EXISTS(set)) {\n return { type: \"Set\", value: set, complement };\n }\n return ASSERT_NEVER_REACH_HERE();\n }\n controlEscapeAtom() {\n let escapeCode;\n switch (this.popChar()) {\n case \"f\":\n escapeCode = cc(\"\\f\");\n break;\n case \"n\":\n escapeCode = cc(\"\\n\");\n break;\n case \"r\":\n escapeCode = cc(\"\\r\");\n break;\n case \"t\":\n escapeCode = cc(\"\t\");\n break;\n case \"v\":\n escapeCode = cc(\"\\v\");\n break;\n }\n if (ASSERT_EXISTS(escapeCode)) {\n return { type: \"Character\", value: escapeCode };\n }\n return ASSERT_NEVER_REACH_HERE();\n }\n controlLetterEscapeAtom() {\n this.consumeChar(\"c\");\n const letter = this.popChar();\n if (/[a-zA-Z]/.test(letter) === false) {\n throw Error(\"Invalid \");\n }\n const letterCode = letter.toUpperCase().charCodeAt(0) - 64;\n return { type: \"Character\", value: letterCode };\n }\n nulCharacterAtom() {\n this.consumeChar(\"0\");\n return { type: \"Character\", value: cc(\"\\0\") };\n }\n hexEscapeSequenceAtom() {\n this.consumeChar(\"x\");\n return this.parseHexDigits(2);\n }\n regExpUnicodeEscapeSequenceAtom() {\n this.consumeChar(\"u\");\n return this.parseHexDigits(4);\n }\n identityEscapeAtom() {\n const escapedChar = this.popChar();\n return { type: \"Character\", value: cc(escapedChar) };\n }\n classPatternCharacterAtom() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \"]\":\n throw Error(\"TBD\");\n default:\n const nextChar = this.popChar();\n return { type: \"Character\", value: cc(nextChar) };\n }\n }\n characterClass() {\n const set = [];\n let complement = false;\n this.consumeChar(\"[\");\n if (this.peekChar(0) === \"^\") {\n this.consumeChar(\"^\");\n complement = true;\n }\n while (this.isClassAtom()) {\n const from = this.classAtom();\n const isFromSingleChar = from.type === \"Character\";\n if (isCharacter(from) && this.isRangeDash()) {\n this.consumeChar(\"-\");\n const to = this.classAtom();\n const isToSingleChar = to.type === \"Character\";\n if (isCharacter(to)) {\n if (to.value < from.value) {\n throw Error(\"Range out of order in character class\");\n }\n set.push({ from: from.value, to: to.value });\n } else {\n insertToSet(from.value, set);\n set.push(cc(\"-\"));\n insertToSet(to.value, set);\n }\n } else {\n insertToSet(from.value, set);\n }\n }\n this.consumeChar(\"]\");\n return { type: \"Set\", complement, value: set };\n }\n classAtom() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"]\":\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n throw Error(\"TBD\");\n case \"\\\\\":\n return this.classEscape();\n default:\n return this.classPatternCharacterAtom();\n }\n }\n classEscape() {\n this.consumeChar(\"\\\\\");\n switch (this.peekChar()) {\n // Matches a backspace.\n // (Not to be confused with \\b word boundary outside characterClass)\n case \"b\":\n this.consumeChar(\"b\");\n return { type: \"Character\", value: cc(\"\\b\") };\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape();\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom();\n case \"c\":\n return this.controlLetterEscapeAtom();\n case \"0\":\n return this.nulCharacterAtom();\n case \"x\":\n return this.hexEscapeSequenceAtom();\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom();\n default:\n return this.identityEscapeAtom();\n }\n }\n group() {\n let capturing = true;\n this.consumeChar(\"(\");\n switch (this.peekChar(0)) {\n case \"?\":\n this.consumeChar(\"?\");\n this.consumeChar(\":\");\n capturing = false;\n break;\n default:\n this.groupIdx++;\n break;\n }\n const value = this.disjunction();\n this.consumeChar(\")\");\n const groupAst = {\n type: \"Group\",\n capturing,\n value\n };\n if (capturing) {\n groupAst[\"idx\"] = this.groupIdx;\n }\n return groupAst;\n }\n positiveInteger() {\n let number = this.popChar();\n if (decimalPatternNoZero.test(number) === false) {\n throw Error(\"Expecting a positive integer\");\n }\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar();\n }\n return parseInt(number, 10);\n }\n integerIncludingZero() {\n let number = this.popChar();\n if (decimalPattern.test(number) === false) {\n throw Error(\"Expecting an integer\");\n }\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar();\n }\n return parseInt(number, 10);\n }\n patternCharacter() {\n const nextChar = this.popChar();\n switch (nextChar) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"^\":\n // istanbul ignore next\n case \"$\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \".\":\n // istanbul ignore next\n case \"*\":\n // istanbul ignore next\n case \"+\":\n // istanbul ignore next\n case \"?\":\n // istanbul ignore next\n case \"(\":\n // istanbul ignore next\n case \")\":\n // istanbul ignore next\n case \"[\":\n // istanbul ignore next\n case \"|\":\n throw Error(\"TBD\");\n default:\n return { type: \"Character\", value: cc(nextChar) };\n }\n }\n isRegExpFlag() {\n switch (this.peekChar(0)) {\n case \"g\":\n case \"i\":\n case \"m\":\n case \"u\":\n case \"y\":\n return true;\n default:\n return false;\n }\n }\n isRangeDash() {\n return this.peekChar() === \"-\" && this.isClassAtom(1);\n }\n isDigit() {\n return decimalPattern.test(this.peekChar(0));\n }\n isClassAtom(howMuch = 0) {\n switch (this.peekChar(howMuch)) {\n case \"]\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false;\n default:\n return true;\n }\n }\n isTerm() {\n return this.isAtom() || this.isAssertion();\n }\n isAtom() {\n if (this.isPatternCharacter()) {\n return true;\n }\n switch (this.peekChar(0)) {\n case \".\":\n case \"\\\\\":\n // atomEscape\n case \"[\":\n // characterClass\n // TODO: isAtom must be called before isAssertion - disambiguate\n case \"(\":\n return true;\n default:\n return false;\n }\n }\n isAssertion() {\n switch (this.peekChar(0)) {\n case \"^\":\n case \"$\":\n return true;\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.peekChar(1)) {\n case \"b\":\n case \"B\":\n return true;\n default:\n return false;\n }\n // '(?=' or '(?!' or `(?<=` or `(?= this.input.length) {\n throw Error(\"Unexpected end of input\");\n }\n this.idx++;\n }\n loc(begin) {\n return { begin, end: this.idx };\n }\n};\n\n// ../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.1.1/node_modules/@chevrotain/regexp-to-ast/lib/src/base-regexp-visitor.js\nvar BaseRegExpVisitor = class {\n static {\n __name(this, \"BaseRegExpVisitor\");\n }\n visitChildren(node) {\n for (const key in node) {\n const child = node[key];\n if (node.hasOwnProperty(key)) {\n if (child.type !== void 0) {\n this.visit(child);\n } else if (Array.isArray(child)) {\n child.forEach((subChild) => {\n this.visit(subChild);\n }, this);\n }\n }\n }\n }\n visit(node) {\n switch (node.type) {\n case \"Pattern\":\n this.visitPattern(node);\n break;\n case \"Flags\":\n this.visitFlags(node);\n break;\n case \"Disjunction\":\n this.visitDisjunction(node);\n break;\n case \"Alternative\":\n this.visitAlternative(node);\n break;\n case \"StartAnchor\":\n this.visitStartAnchor(node);\n break;\n case \"EndAnchor\":\n this.visitEndAnchor(node);\n break;\n case \"WordBoundary\":\n this.visitWordBoundary(node);\n break;\n case \"NonWordBoundary\":\n this.visitNonWordBoundary(node);\n break;\n case \"Lookahead\":\n this.visitLookahead(node);\n break;\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node);\n break;\n case \"Lookbehind\":\n this.visitLookbehind(node);\n break;\n case \"NegativeLookbehind\":\n this.visitNegativeLookbehind(node);\n break;\n case \"Character\":\n this.visitCharacter(node);\n break;\n case \"Set\":\n this.visitSet(node);\n break;\n case \"Group\":\n this.visitGroup(node);\n break;\n case \"GroupBackReference\":\n this.visitGroupBackReference(node);\n break;\n case \"Quantifier\":\n this.visitQuantifier(node);\n break;\n }\n this.visitChildren(node);\n }\n visitPattern(node) {\n }\n visitFlags(node) {\n }\n visitDisjunction(node) {\n }\n visitAlternative(node) {\n }\n // Assertion\n visitStartAnchor(node) {\n }\n visitEndAnchor(node) {\n }\n visitWordBoundary(node) {\n }\n visitNonWordBoundary(node) {\n }\n visitLookahead(node) {\n }\n visitNegativeLookahead(node) {\n }\n visitLookbehind(node) {\n }\n visitNegativeLookbehind(node) {\n }\n // atoms\n visitCharacter(node) {\n }\n visitSet(node) {\n }\n visitGroup(node) {\n }\n visitGroupBackReference(node) {\n }\n visitQuantifier(node) {\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/regexp-utils.js\nvar NEWLINE_REGEXP = /\\r?\\n/gm;\nvar regexpParser = new RegExpParser();\nvar TerminalRegExpVisitor = class extends BaseRegExpVisitor {\n static {\n __name(this, \"TerminalRegExpVisitor\");\n }\n constructor() {\n super(...arguments);\n this.isStarting = true;\n this.endRegexpStack = [];\n this.multiline = false;\n }\n get endRegex() {\n return this.endRegexpStack.join(\"\");\n }\n reset(regex) {\n this.multiline = false;\n this.regex = regex;\n this.startRegexp = \"\";\n this.isStarting = true;\n this.endRegexpStack = [];\n }\n visitGroup(node) {\n if (node.quantifier) {\n this.isStarting = false;\n this.endRegexpStack = [];\n }\n }\n visitCharacter(node) {\n const char = String.fromCharCode(node.value);\n if (!this.multiline && char === \"\\n\") {\n this.multiline = true;\n }\n if (node.quantifier) {\n this.isStarting = false;\n this.endRegexpStack = [];\n } else {\n const escapedChar = escapeRegExp(char);\n this.endRegexpStack.push(escapedChar);\n if (this.isStarting) {\n this.startRegexp += escapedChar;\n }\n }\n }\n visitSet(node) {\n if (!this.multiline) {\n const set = this.regex.substring(node.loc.begin, node.loc.end);\n const regex = new RegExp(set);\n this.multiline = Boolean(\"\\n\".match(regex));\n }\n if (node.quantifier) {\n this.isStarting = false;\n this.endRegexpStack = [];\n } else {\n const set = this.regex.substring(node.loc.begin, node.loc.end);\n this.endRegexpStack.push(set);\n if (this.isStarting) {\n this.startRegexp += set;\n }\n }\n }\n visitChildren(node) {\n if (node.type === \"Group\") {\n const group = node;\n if (group.quantifier) {\n return;\n }\n }\n super.visitChildren(node);\n }\n};\nvar visitor = new TerminalRegExpVisitor();\nfunction getTerminalParts(regexp) {\n try {\n if (typeof regexp !== \"string\") {\n regexp = regexp.source;\n }\n regexp = `/${regexp}/`;\n const pattern = regexpParser.pattern(regexp);\n const parts = [];\n for (const alternative of pattern.value.value) {\n visitor.reset(regexp);\n visitor.visit(alternative);\n parts.push({\n start: visitor.startRegexp,\n end: visitor.endRegex\n });\n }\n return parts;\n } catch {\n return [];\n }\n}\n__name(getTerminalParts, \"getTerminalParts\");\nfunction isMultilineComment(regexp) {\n try {\n if (typeof regexp === \"string\") {\n regexp = new RegExp(regexp);\n }\n regexp = regexp.toString();\n visitor.reset(regexp);\n visitor.visit(regexpParser.pattern(regexp));\n return visitor.multiline;\n } catch {\n return false;\n }\n}\n__name(isMultilineComment, \"isMultilineComment\");\nvar whitespaceCharacters = \"\\f\\n\\r\t\\v \\xA0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\".split(\"\");\nfunction isWhitespace(value) {\n const regexp = typeof value === \"string\" ? new RegExp(value) : value;\n return whitespaceCharacters.some((ws) => regexp.test(ws));\n}\n__name(isWhitespace, \"isWhitespace\");\nfunction escapeRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n__name(escapeRegExp, \"escapeRegExp\");\nfunction partialMatches(regex, input) {\n const partial = partialRegExp(regex);\n const match = input.match(partial);\n return !!match && match[0].length > 0;\n}\n__name(partialMatches, \"partialMatches\");\nfunction partialRegExp(regex) {\n if (typeof regex === \"string\") {\n regex = new RegExp(regex);\n }\n const re = regex, source = regex.source;\n let i = 0;\n function process2() {\n let result = \"\", tmp;\n function appendRaw(nbChars) {\n result += source.substr(i, nbChars);\n i += nbChars;\n }\n __name(appendRaw, \"appendRaw\");\n function appendOptional(nbChars) {\n result += \"(?:\" + source.substr(i, nbChars) + \"|$)\";\n i += nbChars;\n }\n __name(appendOptional, \"appendOptional\");\n while (i < source.length) {\n switch (source[i]) {\n case \"\\\\\":\n switch (source[i + 1]) {\n case \"c\":\n appendOptional(3);\n break;\n case \"x\":\n appendOptional(4);\n break;\n case \"u\":\n if (re.unicode) {\n if (source[i + 2] === \"{\") {\n appendOptional(source.indexOf(\"}\", i) - i + 1);\n } else {\n appendOptional(6);\n }\n } else {\n appendOptional(2);\n }\n break;\n case \"p\":\n case \"P\":\n if (re.unicode) {\n appendOptional(source.indexOf(\"}\", i) - i + 1);\n } else {\n appendOptional(2);\n }\n break;\n case \"k\":\n appendOptional(source.indexOf(\">\", i) - i + 1);\n break;\n default:\n appendOptional(2);\n break;\n }\n break;\n case \"[\":\n tmp = /\\[(?:\\\\.|.)*?\\]/g;\n tmp.lastIndex = i;\n tmp = tmp.exec(source) || [];\n appendOptional(tmp[0].length);\n break;\n case \"|\":\n case \"^\":\n case \"$\":\n case \"*\":\n case \"+\":\n case \"?\":\n appendRaw(1);\n break;\n case \"{\":\n tmp = /\\{\\d+,?\\d*\\}/g;\n tmp.lastIndex = i;\n tmp = tmp.exec(source);\n if (tmp) {\n appendRaw(tmp[0].length);\n } else {\n appendOptional(1);\n }\n break;\n case \"(\":\n if (source[i + 1] === \"?\") {\n switch (source[i + 2]) {\n case \":\":\n result += \"(?:\";\n i += 3;\n result += process2() + \"|$)\";\n break;\n case \"=\":\n result += \"(?=\";\n i += 3;\n result += process2() + \")\";\n break;\n case \"!\":\n tmp = i;\n i += 3;\n process2();\n result += source.substr(tmp, i - tmp);\n break;\n case \"<\":\n switch (source[i + 3]) {\n case \"=\":\n case \"!\":\n tmp = i;\n i += 4;\n process2();\n result += source.substr(tmp, i - tmp);\n break;\n default:\n appendRaw(source.indexOf(\">\", i) - i + 1);\n result += process2() + \"|$)\";\n break;\n }\n break;\n }\n } else {\n appendRaw(1);\n result += process2() + \"|$)\";\n }\n break;\n case \")\":\n ++i;\n return result;\n default:\n appendOptional(1);\n break;\n }\n }\n return result;\n }\n __name(process2, \"process\");\n return new RegExp(process2(), regex.flags);\n}\n__name(partialRegExp, \"partialRegExp\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/grammar-utils.js\nfunction getEntryRule(grammar) {\n return grammar.rules.find((e) => isParserRule(e) && e.entry);\n}\n__name(getEntryRule, \"getEntryRule\");\nfunction getHiddenRules(grammar) {\n return grammar.rules.filter((e) => isTerminalRule(e) && e.hidden);\n}\n__name(getHiddenRules, \"getHiddenRules\");\nfunction getAllReachableRules(grammar, allTerminals) {\n const ruleNames = /* @__PURE__ */ new Set();\n const entryRule = getEntryRule(grammar);\n if (!entryRule) {\n return new Set(grammar.rules);\n }\n const topMostRules = [entryRule].concat(getHiddenRules(grammar));\n for (const rule of topMostRules) {\n ruleDfs(rule, ruleNames, allTerminals);\n }\n const rules = /* @__PURE__ */ new Set();\n for (const rule of grammar.rules) {\n if (ruleNames.has(rule.name) || isTerminalRule(rule) && rule.hidden) {\n rules.add(rule);\n }\n }\n return rules;\n}\n__name(getAllReachableRules, \"getAllReachableRules\");\nfunction ruleDfs(rule, visitedSet, allTerminals) {\n visitedSet.add(rule.name);\n streamAllContents(rule).forEach((node) => {\n if (isRuleCall(node) || allTerminals && isTerminalRuleCall(node)) {\n const refRule = node.rule.ref;\n if (refRule && !visitedSet.has(refRule.name)) {\n ruleDfs(refRule, visitedSet, allTerminals);\n }\n }\n });\n}\n__name(ruleDfs, \"ruleDfs\");\nfunction getAllRulesUsedForCrossReferences(grammar) {\n const result = /* @__PURE__ */ new Set();\n streamAllContents(grammar).forEach((node) => {\n if (isCrossReference(node)) {\n if (isParserRule(node.type.ref)) {\n result.add(node.type.ref);\n }\n if (isInferredType(node.type.ref) && isParserRule(node.type.ref.$container)) {\n result.add(node.type.ref.$container);\n }\n }\n });\n return result;\n}\n__name(getAllRulesUsedForCrossReferences, \"getAllRulesUsedForCrossReferences\");\nfunction getCrossReferenceTerminal(crossRef) {\n if (crossRef.terminal) {\n return crossRef.terminal;\n } else if (crossRef.type.ref) {\n const nameAssigment = findNameAssignment(crossRef.type.ref);\n return nameAssigment?.terminal;\n }\n return void 0;\n}\n__name(getCrossReferenceTerminal, \"getCrossReferenceTerminal\");\nfunction isCommentTerminal(terminalRule) {\n return terminalRule.hidden && !isWhitespace(terminalRegex(terminalRule));\n}\n__name(isCommentTerminal, \"isCommentTerminal\");\nfunction findNodesForProperty(node, property3) {\n if (!node || !property3) {\n return [];\n }\n return findNodesForPropertyInternal(node, property3, node.astNode, true);\n}\n__name(findNodesForProperty, \"findNodesForProperty\");\nfunction findNodeForProperty(node, property3, index) {\n if (!node || !property3) {\n return void 0;\n }\n const nodes = findNodesForPropertyInternal(node, property3, node.astNode, true);\n if (nodes.length === 0) {\n return void 0;\n }\n if (index !== void 0) {\n index = Math.max(0, Math.min(index, nodes.length - 1));\n } else {\n index = 0;\n }\n return nodes[index];\n}\n__name(findNodeForProperty, \"findNodeForProperty\");\nfunction findNodesForPropertyInternal(node, property3, element, first2) {\n if (!first2) {\n const nodeFeature = getContainerOfType(node.grammarSource, isAssignment);\n if (nodeFeature && nodeFeature.feature === property3) {\n return [node];\n }\n }\n if (isCompositeCstNode(node) && node.astNode === element) {\n return node.content.flatMap((e) => findNodesForPropertyInternal(e, property3, element, false));\n }\n return [];\n}\n__name(findNodesForPropertyInternal, \"findNodesForPropertyInternal\");\nfunction findNodesForKeyword(node, keyword) {\n if (!node) {\n return [];\n }\n return findNodesForKeywordInternal(node, keyword, node?.astNode);\n}\n__name(findNodesForKeyword, \"findNodesForKeyword\");\nfunction findNodeForKeyword(node, keyword, index) {\n if (!node) {\n return void 0;\n }\n const nodes = findNodesForKeywordInternal(node, keyword, node?.astNode);\n if (nodes.length === 0) {\n return void 0;\n }\n if (index !== void 0) {\n index = Math.max(0, Math.min(index, nodes.length - 1));\n } else {\n index = 0;\n }\n return nodes[index];\n}\n__name(findNodeForKeyword, \"findNodeForKeyword\");\nfunction findNodesForKeywordInternal(node, keyword, element) {\n if (node.astNode !== element) {\n return [];\n }\n if (isKeyword(node.grammarSource) && node.grammarSource.value === keyword) {\n return [node];\n }\n const treeIterator = streamCst(node).iterator();\n let result;\n const keywordNodes = [];\n do {\n result = treeIterator.next();\n if (!result.done) {\n const childNode = result.value;\n if (childNode.astNode === element) {\n if (isKeyword(childNode.grammarSource) && childNode.grammarSource.value === keyword) {\n keywordNodes.push(childNode);\n }\n } else {\n treeIterator.prune();\n }\n }\n } while (!result.done);\n return keywordNodes;\n}\n__name(findNodesForKeywordInternal, \"findNodesForKeywordInternal\");\nfunction findAssignment(cstNode) {\n const astNode = cstNode.astNode;\n while (astNode === cstNode.container?.astNode) {\n const assignment = getContainerOfType(cstNode.grammarSource, isAssignment);\n if (assignment) {\n return assignment;\n }\n cstNode = cstNode.container;\n }\n return void 0;\n}\n__name(findAssignment, \"findAssignment\");\nfunction findNameAssignment(type) {\n let startNode = type;\n if (isInferredType(startNode)) {\n if (isAction(startNode.$container)) {\n startNode = startNode.$container.$container;\n } else if (isAbstractParserRule(startNode.$container)) {\n startNode = startNode.$container;\n } else {\n assertUnreachable(startNode.$container);\n }\n }\n return findNameAssignmentInternal(type, startNode, /* @__PURE__ */ new Map());\n}\n__name(findNameAssignment, \"findNameAssignment\");\nfunction findNameAssignmentInternal(type, startNode, cache) {\n function go(node, refType) {\n let childAssignment = void 0;\n const parentAssignment = getContainerOfType(node, isAssignment);\n if (!parentAssignment) {\n childAssignment = findNameAssignmentInternal(refType, refType, cache);\n }\n cache.set(type, childAssignment);\n return childAssignment;\n }\n __name(go, \"go\");\n if (cache.has(type)) {\n return cache.get(type);\n }\n cache.set(type, void 0);\n for (const node of streamAllContents(startNode)) {\n if (isAssignment(node) && node.feature.toLowerCase() === \"name\") {\n cache.set(type, node);\n return node;\n } else if (isRuleCall(node) && isParserRule(node.rule.ref)) {\n return go(node, node.rule.ref);\n } else if (isSimpleType(node) && node.typeRef?.ref) {\n return go(node, node.typeRef.ref);\n }\n }\n return void 0;\n}\n__name(findNameAssignmentInternal, \"findNameAssignmentInternal\");\nfunction getActionAtElement(element) {\n const parent = element.$container;\n if (isGroup(parent)) {\n const elements = parent.elements;\n const index = elements.indexOf(element);\n for (let i = index - 1; i >= 0; i--) {\n const item = elements[i];\n if (isAction(item)) {\n return item;\n } else {\n const action = streamAllContents(elements[i]).find(isAction);\n if (action) {\n return action;\n }\n }\n }\n }\n if (isAbstractElement(parent)) {\n return getActionAtElement(parent);\n } else {\n return void 0;\n }\n}\n__name(getActionAtElement, \"getActionAtElement\");\nfunction isOptionalCardinality(cardinality, element) {\n return cardinality === \"?\" || cardinality === \"*\" || isGroup(element) && Boolean(element.guardCondition);\n}\n__name(isOptionalCardinality, \"isOptionalCardinality\");\nfunction isArrayCardinality(cardinality) {\n return cardinality === \"*\" || cardinality === \"+\";\n}\n__name(isArrayCardinality, \"isArrayCardinality\");\nfunction isArrayOperator(operator) {\n return operator === \"+=\";\n}\n__name(isArrayOperator, \"isArrayOperator\");\nfunction isDataTypeRule(rule) {\n return isDataTypeRuleInternal(rule, /* @__PURE__ */ new Set());\n}\n__name(isDataTypeRule, \"isDataTypeRule\");\nfunction isDataTypeRuleInternal(rule, visited) {\n if (visited.has(rule)) {\n return true;\n } else {\n visited.add(rule);\n }\n for (const node of streamAllContents(rule)) {\n if (isRuleCall(node)) {\n if (!node.rule.ref) {\n return false;\n }\n if (isParserRule(node.rule.ref) && !isDataTypeRuleInternal(node.rule.ref, visited)) {\n return false;\n }\n if (isInfixRule(node.rule.ref)) {\n return false;\n }\n } else if (isAssignment(node)) {\n return false;\n } else if (isAction(node)) {\n return false;\n }\n }\n return Boolean(rule.definition);\n}\n__name(isDataTypeRuleInternal, \"isDataTypeRuleInternal\");\nfunction isDataType(type) {\n return isDataTypeInternal(type.type, /* @__PURE__ */ new Set());\n}\n__name(isDataType, \"isDataType\");\nfunction isDataTypeInternal(type, visited) {\n if (visited.has(type)) {\n return true;\n } else {\n visited.add(type);\n }\n if (isArrayType(type)) {\n return false;\n } else if (isReferenceType(type)) {\n return false;\n } else if (isUnionType(type)) {\n return type.types.every((e) => isDataTypeInternal(e, visited));\n } else if (isSimpleType(type)) {\n if (type.primitiveType !== void 0) {\n return true;\n } else if (type.stringType !== void 0) {\n return true;\n } else if (type.typeRef !== void 0) {\n const ref = type.typeRef.ref;\n if (isType(ref)) {\n return isDataTypeInternal(ref.type, visited);\n } else {\n return false;\n }\n } else {\n return false;\n }\n } else {\n return false;\n }\n}\n__name(isDataTypeInternal, \"isDataTypeInternal\");\nfunction getExplicitRuleType(rule) {\n if (isTerminalRule(rule)) {\n return void 0;\n }\n if (rule.inferredType) {\n return rule.inferredType.name;\n } else if (rule.dataType) {\n return rule.dataType;\n } else if (rule.returnType) {\n const refType = rule.returnType.ref;\n if (refType) {\n return refType.name;\n }\n }\n return void 0;\n}\n__name(getExplicitRuleType, \"getExplicitRuleType\");\nfunction getTypeName(type) {\n if (isAbstractParserRule(type)) {\n return isParserRule(type) && isDataTypeRule(type) ? type.name : getExplicitRuleType(type) ?? type.name;\n } else if (isInterface(type) || isType(type) || isReturnType(type)) {\n return type.name;\n } else if (isAction(type)) {\n const actionType = getActionType(type);\n if (actionType) {\n return actionType;\n }\n } else if (isInferredType(type)) {\n return type.name;\n }\n throw new Error(\"Cannot get name of Unknown Type\");\n}\n__name(getTypeName, \"getTypeName\");\nfunction getActionType(action) {\n if (action.inferredType) {\n return action.inferredType.name;\n } else if (action.type?.ref) {\n return getTypeName(action.type.ref);\n }\n return void 0;\n}\n__name(getActionType, \"getActionType\");\nfunction getRuleTypeName(rule) {\n if (isTerminalRule(rule)) {\n return rule.type?.name ?? \"string\";\n } else {\n return isParserRule(rule) && isDataTypeRule(rule) ? rule.name : getExplicitRuleType(rule) ?? rule.name;\n }\n}\n__name(getRuleTypeName, \"getRuleTypeName\");\nfunction getRuleType(rule) {\n if (isTerminalRule(rule)) {\n return rule.type?.name ?? \"string\";\n } else {\n return getExplicitRuleType(rule) ?? rule.name;\n }\n}\n__name(getRuleType, \"getRuleType\");\nfunction terminalRegex(terminalRule) {\n const flags = {\n s: false,\n i: false,\n u: false\n };\n const source = abstractElementToRegex(terminalRule.definition, flags);\n const flagText = Object.entries(flags).filter(([, value]) => value).map(([name]) => name).join(\"\");\n return new RegExp(source, flagText);\n}\n__name(terminalRegex, \"terminalRegex\");\nvar WILDCARD = /[\\s\\S]/.source;\nfunction abstractElementToRegex(element, flags) {\n if (isTerminalAlternatives(element)) {\n return terminalAlternativesToRegex(element);\n } else if (isTerminalGroup(element)) {\n return terminalGroupToRegex(element);\n } else if (isCharacterRange(element)) {\n return characterRangeToRegex(element);\n } else if (isTerminalRuleCall(element)) {\n const rule = element.rule.ref;\n if (!rule) {\n throw new Error(\"Missing rule reference.\");\n }\n return withCardinality(abstractElementToRegex(rule.definition), {\n cardinality: element.cardinality,\n lookahead: element.lookahead,\n parenthesized: element.parenthesized\n });\n } else if (isNegatedToken(element)) {\n return negateTokenToRegex(element);\n } else if (isUntilToken(element)) {\n return untilTokenToRegex(element);\n } else if (isRegexToken(element)) {\n const lastSlash = element.regex.lastIndexOf(\"/\");\n const source = element.regex.substring(1, lastSlash);\n const regexFlags = element.regex.substring(lastSlash + 1);\n if (flags) {\n flags.i = regexFlags.includes(\"i\");\n flags.s = regexFlags.includes(\"s\");\n flags.u = regexFlags.includes(\"u\");\n }\n return withCardinality(source, {\n cardinality: element.cardinality,\n lookahead: element.lookahead,\n parenthesized: element.parenthesized,\n wrap: false\n });\n } else if (isWildcard(element)) {\n return withCardinality(WILDCARD, {\n cardinality: element.cardinality,\n lookahead: element.lookahead,\n parenthesized: element.parenthesized\n });\n } else {\n throw new Error(`Invalid terminal element: ${element?.$type}, ${element?.$cstNode?.text}`);\n }\n}\n__name(abstractElementToRegex, \"abstractElementToRegex\");\nfunction terminalAlternativesToRegex(alternatives) {\n return withCardinality(alternatives.elements.map((e) => abstractElementToRegex(e)).join(\"|\"), {\n cardinality: alternatives.cardinality,\n lookahead: alternatives.lookahead,\n parenthesized: alternatives.parenthesized,\n wrap: false\n // wrapping is not required for top level alternatives, and nested alternatives are already parenthesized according to the grammar\n });\n}\n__name(terminalAlternativesToRegex, \"terminalAlternativesToRegex\");\nfunction terminalGroupToRegex(group) {\n return withCardinality(group.elements.map((e) => abstractElementToRegex(e)).join(\"\"), {\n cardinality: group.cardinality,\n lookahead: group.lookahead,\n parenthesized: group.parenthesized,\n wrap: false\n // wrapping is not required for top level group, and nested group are already parenthesized according to the grammar\n });\n}\n__name(terminalGroupToRegex, \"terminalGroupToRegex\");\nfunction untilTokenToRegex(until) {\n return withCardinality(`${WILDCARD}*?${abstractElementToRegex(until.terminal)}`, {\n cardinality: until.cardinality,\n lookahead: until.lookahead,\n parenthesized: until.parenthesized\n });\n}\n__name(untilTokenToRegex, \"untilTokenToRegex\");\nfunction negateTokenToRegex(negate2) {\n return withCardinality(`(?!${abstractElementToRegex(negate2.terminal)})${WILDCARD}*?`, {\n cardinality: negate2.cardinality,\n lookahead: negate2.lookahead,\n parenthesized: negate2.parenthesized\n });\n}\n__name(negateTokenToRegex, \"negateTokenToRegex\");\nfunction characterRangeToRegex(range) {\n if (range.right) {\n return withCardinality(`[${keywordToRegex(range.left)}-${keywordToRegex(range.right)}]`, {\n cardinality: range.cardinality,\n lookahead: range.lookahead,\n parenthesized: range.parenthesized,\n wrap: false\n });\n }\n return withCardinality(keywordToRegex(range.left), {\n cardinality: range.cardinality,\n lookahead: range.lookahead,\n parenthesized: range.parenthesized,\n wrap: false\n });\n}\n__name(characterRangeToRegex, \"characterRangeToRegex\");\nfunction keywordToRegex(keyword) {\n return escapeRegExp(keyword.value);\n}\n__name(keywordToRegex, \"keywordToRegex\");\nfunction withCardinality(regex, options) {\n if (options.parenthesized || options.lookahead || options.wrap !== false) {\n const groupConfig = options.lookahead ?? (options.parenthesized ? \"\" : \"?:\");\n regex = `(${groupConfig}${regex})`;\n }\n if (options.cardinality) {\n return `${regex}${options.cardinality}`;\n }\n return regex;\n}\n__name(withCardinality, \"withCardinality\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/languages/grammar-config.js\nfunction createGrammarConfig(services) {\n const rules = [];\n const grammar = services.Grammar;\n for (const rule of grammar.rules) {\n if (isTerminalRule(rule) && isCommentTerminal(rule) && isMultilineComment(terminalRegex(rule))) {\n rules.push(rule.name);\n }\n }\n return {\n multilineCommentRules: rules,\n nameRegexp: DefaultNameRegexp\n };\n}\n__name(createGrammarConfig, \"createGrammarConfig\");\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_freeGlobal.js\nvar freeGlobal = typeof global == \"object\" && global && global.Object === Object && global;\nvar freeGlobal_default = freeGlobal;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_root.js\nvar freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\nvar root = freeGlobal_default || freeSelf || Function(\"return this\")();\nvar root_default = root;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Symbol.js\nvar Symbol2 = root_default.Symbol;\nvar Symbol_default = Symbol2;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getRawTag.js\nvar objectProto = Object.prototype;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nvar nativeObjectToString = objectProto.toString;\nvar symToStringTag = Symbol_default ? Symbol_default.toStringTag : void 0;\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n try {\n value[symToStringTag] = void 0;\n var unmasked = true;\n } catch (e) {\n }\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n__name(getRawTag, \"getRawTag\");\nvar getRawTag_default = getRawTag;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_objectToString.js\nvar objectProto2 = Object.prototype;\nvar nativeObjectToString2 = objectProto2.toString;\nfunction objectToString(value) {\n return nativeObjectToString2.call(value);\n}\n__name(objectToString, \"objectToString\");\nvar objectToString_default = objectToString;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetTag.js\nvar nullTag = \"[object Null]\";\nvar undefinedTag = \"[object Undefined]\";\nvar symToStringTag2 = Symbol_default ? Symbol_default.toStringTag : void 0;\nfunction baseGetTag(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag : nullTag;\n }\n return symToStringTag2 && symToStringTag2 in Object(value) ? getRawTag_default(value) : objectToString_default(value);\n}\n__name(baseGetTag, \"baseGetTag\");\nvar baseGetTag_default = baseGetTag;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObjectLike.js\nfunction isObjectLike(value) {\n return value != null && typeof value == \"object\";\n}\n__name(isObjectLike, \"isObjectLike\");\nvar isObjectLike_default = isObjectLike;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSymbol.js\nvar symbolTag = \"[object Symbol]\";\nfunction isSymbol(value) {\n return typeof value == \"symbol\" || isObjectLike_default(value) && baseGetTag_default(value) == symbolTag;\n}\n__name(isSymbol, \"isSymbol\");\nvar isSymbol_default = isSymbol;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayMap.js\nfunction arrayMap(array, iteratee) {\n var index = -1, length = array == null ? 0 : array.length, result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n__name(arrayMap, \"arrayMap\");\nvar arrayMap_default = arrayMap;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArray.js\nvar isArray = Array.isArray;\nvar isArray_default = isArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseToString.js\nvar INFINITY = 1 / 0;\nvar symbolProto = Symbol_default ? Symbol_default.prototype : void 0;\nvar symbolToString = symbolProto ? symbolProto.toString : void 0;\nfunction baseToString(value) {\n if (typeof value == \"string\") {\n return value;\n }\n if (isArray_default(value)) {\n return arrayMap_default(value, baseToString) + \"\";\n }\n if (isSymbol_default(value)) {\n return symbolToString ? symbolToString.call(value) : \"\";\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY ? \"-0\" : result;\n}\n__name(baseToString, \"baseToString\");\nvar baseToString_default = baseToString;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_trimmedEndIndex.js\nvar reWhitespace = /\\s/;\nfunction trimmedEndIndex(string) {\n var index = string.length;\n while (index-- && reWhitespace.test(string.charAt(index))) {\n }\n return index;\n}\n__name(trimmedEndIndex, \"trimmedEndIndex\");\nvar trimmedEndIndex_default = trimmedEndIndex;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTrim.js\nvar reTrimStart = /^\\s+/;\nfunction baseTrim(string) {\n return string ? string.slice(0, trimmedEndIndex_default(string) + 1).replace(reTrimStart, \"\") : string;\n}\n__name(baseTrim, \"baseTrim\");\nvar baseTrim_default = baseTrim;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObject.js\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n__name(isObject, \"isObject\");\nvar isObject_default = isObject;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toNumber.js\nvar NAN = 0 / 0;\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\nvar reIsBinary = /^0b[01]+$/i;\nvar reIsOctal = /^0o[0-7]+$/i;\nvar freeParseInt = parseInt;\nfunction toNumber(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol_default(value)) {\n return NAN;\n }\n if (isObject_default(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject_default(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = baseTrim_default(value);\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n__name(toNumber, \"toNumber\");\nvar toNumber_default = toNumber;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toFinite.js\nvar INFINITY2 = 1 / 0;\nvar MAX_INTEGER = 17976931348623157e292;\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber_default(value);\n if (value === INFINITY2 || value === -INFINITY2) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n__name(toFinite, \"toFinite\");\nvar toFinite_default = toFinite;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toInteger.js\nfunction toInteger(value) {\n var result = toFinite_default(value), remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n__name(toInteger, \"toInteger\");\nvar toInteger_default = toInteger;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/identity.js\nfunction identity(value) {\n return value;\n}\n__name(identity, \"identity\");\nvar identity_default = identity;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isFunction.js\nvar asyncTag = \"[object AsyncFunction]\";\nvar funcTag = \"[object Function]\";\nvar genTag = \"[object GeneratorFunction]\";\nvar proxyTag = \"[object Proxy]\";\nfunction isFunction(value) {\n if (!isObject_default(value)) {\n return false;\n }\n var tag = baseGetTag_default(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n__name(isFunction, \"isFunction\");\nvar isFunction_default = isFunction;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_coreJsData.js\nvar coreJsData = root_default[\"__core-js_shared__\"];\nvar coreJsData_default = coreJsData;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isMasked.js\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData_default && coreJsData_default.keys && coreJsData_default.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n})();\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n__name(isMasked, \"isMasked\");\nvar isMasked_default = isMasked;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toSource.js\nvar funcProto = Function.prototype;\nvar funcToString = funcProto.toString;\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {\n }\n try {\n return func + \"\";\n } catch (e) {\n }\n }\n return \"\";\n}\n__name(toSource, \"toSource\");\nvar toSource_default = toSource;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNative.js\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\nvar funcProto2 = Function.prototype;\nvar objectProto3 = Object.prototype;\nvar funcToString2 = funcProto2.toString;\nvar hasOwnProperty2 = objectProto3.hasOwnProperty;\nvar reIsNative = RegExp(\n \"^\" + funcToString2.call(hasOwnProperty2).replace(reRegExpChar, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n);\nfunction baseIsNative(value) {\n if (!isObject_default(value) || isMasked_default(value)) {\n return false;\n }\n var pattern = isFunction_default(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource_default(value));\n}\n__name(baseIsNative, \"baseIsNative\");\nvar baseIsNative_default = baseIsNative;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getValue.js\nfunction getValue(object, key) {\n return object == null ? void 0 : object[key];\n}\n__name(getValue, \"getValue\");\nvar getValue_default = getValue;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getNative.js\nfunction getNative(object, key) {\n var value = getValue_default(object, key);\n return baseIsNative_default(value) ? value : void 0;\n}\n__name(getNative, \"getNative\");\nvar getNative_default = getNative;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_WeakMap.js\nvar WeakMap = getNative_default(root_default, \"WeakMap\");\nvar WeakMap_default = WeakMap;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseCreate.js\nvar objectCreate = Object.create;\nvar baseCreate = /* @__PURE__ */ (function() {\n function object() {\n }\n __name(object, \"object\");\n return function(proto) {\n if (!isObject_default(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = void 0;\n return result;\n };\n})();\nvar baseCreate_default = baseCreate;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_apply.js\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n__name(apply, \"apply\");\nvar apply_default = apply;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/noop.js\nfunction noop() {\n}\n__name(noop, \"noop\");\nvar noop_default = noop;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copyArray.js\nfunction copyArray(source, array) {\n var index = -1, length = source.length;\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n__name(copyArray, \"copyArray\");\nvar copyArray_default = copyArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_shortOut.js\nvar HOT_COUNT = 800;\nvar HOT_SPAN = 16;\nvar nativeNow = Date.now;\nfunction shortOut(func) {\n var count = 0, lastCalled = 0;\n return function() {\n var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(void 0, arguments);\n };\n}\n__name(shortOut, \"shortOut\");\nvar shortOut_default = shortOut;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/constant.js\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n__name(constant, \"constant\");\nvar constant_default = constant;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_defineProperty.js\nvar defineProperty = (function() {\n try {\n var func = getNative_default(Object, \"defineProperty\");\n func({}, \"\", {});\n return func;\n } catch (e) {\n }\n})();\nvar defineProperty_default = defineProperty;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSetToString.js\nvar baseSetToString = !defineProperty_default ? identity_default : function(func, string) {\n return defineProperty_default(func, \"toString\", {\n \"configurable\": true,\n \"enumerable\": false,\n \"value\": constant_default(string),\n \"writable\": true\n });\n};\nvar baseSetToString_default = baseSetToString;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setToString.js\nvar setToString = shortOut_default(baseSetToString_default);\nvar setToString_default = setToString;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayEach.js\nfunction arrayEach(array, iteratee) {\n var index = -1, length = array == null ? 0 : array.length;\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n__name(arrayEach, \"arrayEach\");\nvar arrayEach_default = arrayEach;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFindIndex.js\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length, index = fromIndex + (fromRight ? 1 : -1);\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n__name(baseFindIndex, \"baseFindIndex\");\nvar baseFindIndex_default = baseFindIndex;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNaN.js\nfunction baseIsNaN(value) {\n return value !== value;\n}\n__name(baseIsNaN, \"baseIsNaN\");\nvar baseIsNaN_default = baseIsNaN;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_strictIndexOf.js\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1, length = array.length;\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n__name(strictIndexOf, \"strictIndexOf\");\nvar strictIndexOf_default = strictIndexOf;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIndexOf.js\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value ? strictIndexOf_default(array, value, fromIndex) : baseFindIndex_default(array, baseIsNaN_default, fromIndex);\n}\n__name(baseIndexOf, \"baseIndexOf\");\nvar baseIndexOf_default = baseIndexOf;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludes.js\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf_default(array, value, 0) > -1;\n}\n__name(arrayIncludes, \"arrayIncludes\");\nvar arrayIncludes_default = arrayIncludes;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isIndex.js\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == \"number\" || type != \"symbol\" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n}\n__name(isIndex, \"isIndex\");\nvar isIndex_default = isIndex;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssignValue.js\nfunction baseAssignValue(object, key, value) {\n if (key == \"__proto__\" && defineProperty_default) {\n defineProperty_default(object, key, {\n \"configurable\": true,\n \"enumerable\": true,\n \"value\": value,\n \"writable\": true\n });\n } else {\n object[key] = value;\n }\n}\n__name(baseAssignValue, \"baseAssignValue\");\nvar baseAssignValue_default = baseAssignValue;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/eq.js\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n__name(eq, \"eq\");\nvar eq_default = eq;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assignValue.js\nvar objectProto4 = Object.prototype;\nvar hasOwnProperty3 = objectProto4.hasOwnProperty;\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty3.call(object, key) && eq_default(objValue, value)) || value === void 0 && !(key in object)) {\n baseAssignValue_default(object, key, value);\n }\n}\n__name(assignValue, \"assignValue\");\nvar assignValue_default = assignValue;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copyObject.js\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1, length = props.length;\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;\n if (newValue === void 0) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue_default(object, key, newValue);\n } else {\n assignValue_default(object, key, newValue);\n }\n }\n return object;\n}\n__name(copyObject, \"copyObject\");\nvar copyObject_default = copyObject;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_overRest.js\nvar nativeMax = Math.max;\nfunction overRest(func, start, transform) {\n start = nativeMax(start === void 0 ? func.length - 1 : start, 0);\n return function() {\n var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length);\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply_default(func, this, otherArgs);\n };\n}\n__name(overRest, \"overRest\");\nvar overRest_default = overRest;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseRest.js\nfunction baseRest(func, start) {\n return setToString_default(overRest_default(func, start, identity_default), func + \"\");\n}\n__name(baseRest, \"baseRest\");\nvar baseRest_default = baseRest;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isLength.js\nvar MAX_SAFE_INTEGER2 = 9007199254740991;\nfunction isLength(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;\n}\n__name(isLength, \"isLength\");\nvar isLength_default = isLength;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArrayLike.js\nfunction isArrayLike(value) {\n return value != null && isLength_default(value.length) && !isFunction_default(value);\n}\n__name(isArrayLike, \"isArrayLike\");\nvar isArrayLike_default = isArrayLike;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isIterateeCall.js\nfunction isIterateeCall(value, index, object) {\n if (!isObject_default(object)) {\n return false;\n }\n var type = typeof index;\n if (type == \"number\" ? isArrayLike_default(object) && isIndex_default(index, object.length) : type == \"string\" && index in object) {\n return eq_default(object[index], value);\n }\n return false;\n}\n__name(isIterateeCall, \"isIterateeCall\");\nvar isIterateeCall_default = isIterateeCall;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createAssigner.js\nfunction createAssigner(assigner) {\n return baseRest_default(function(object, sources) {\n var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;\n customizer = assigner.length > 3 && typeof customizer == \"function\" ? (length--, customizer) : void 0;\n if (guard && isIterateeCall_default(sources[0], sources[1], guard)) {\n customizer = length < 3 ? void 0 : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n__name(createAssigner, \"createAssigner\");\nvar createAssigner_default = createAssigner;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isPrototype.js\nvar objectProto5 = Object.prototype;\nfunction isPrototype(value) {\n var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto5;\n return value === proto;\n}\n__name(isPrototype, \"isPrototype\");\nvar isPrototype_default = isPrototype;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTimes.js\nfunction baseTimes(n, iteratee) {\n var index = -1, result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n__name(baseTimes, \"baseTimes\");\nvar baseTimes_default = baseTimes;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsArguments.js\nvar argsTag = \"[object Arguments]\";\nfunction baseIsArguments(value) {\n return isObjectLike_default(value) && baseGetTag_default(value) == argsTag;\n}\n__name(baseIsArguments, \"baseIsArguments\");\nvar baseIsArguments_default = baseIsArguments;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArguments.js\nvar objectProto6 = Object.prototype;\nvar hasOwnProperty4 = objectProto6.hasOwnProperty;\nvar propertyIsEnumerable = objectProto6.propertyIsEnumerable;\nvar isArguments = baseIsArguments_default(/* @__PURE__ */ (function() {\n return arguments;\n})()) ? baseIsArguments_default : function(value) {\n return isObjectLike_default(value) && hasOwnProperty4.call(value, \"callee\") && !propertyIsEnumerable.call(value, \"callee\");\n};\nvar isArguments_default = isArguments;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/stubFalse.js\nfunction stubFalse() {\n return false;\n}\n__name(stubFalse, \"stubFalse\");\nvar stubFalse_default = stubFalse;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isBuffer.js\nvar freeExports = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule = freeExports && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports = freeModule && freeModule.exports === freeExports;\nvar Buffer2 = moduleExports ? root_default.Buffer : void 0;\nvar nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\nvar isBuffer = nativeIsBuffer || stubFalse_default;\nvar isBuffer_default = isBuffer;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsTypedArray.js\nvar argsTag2 = \"[object Arguments]\";\nvar arrayTag = \"[object Array]\";\nvar boolTag = \"[object Boolean]\";\nvar dateTag = \"[object Date]\";\nvar errorTag = \"[object Error]\";\nvar funcTag2 = \"[object Function]\";\nvar mapTag = \"[object Map]\";\nvar numberTag = \"[object Number]\";\nvar objectTag = \"[object Object]\";\nvar regexpTag = \"[object RegExp]\";\nvar setTag = \"[object Set]\";\nvar stringTag = \"[object String]\";\nvar weakMapTag = \"[object WeakMap]\";\nvar arrayBufferTag = \"[object ArrayBuffer]\";\nvar dataViewTag = \"[object DataView]\";\nvar float32Tag = \"[object Float32Array]\";\nvar float64Tag = \"[object Float64Array]\";\nvar int8Tag = \"[object Int8Array]\";\nvar int16Tag = \"[object Int16Array]\";\nvar int32Tag = \"[object Int32Array]\";\nvar uint8Tag = \"[object Uint8Array]\";\nvar uint8ClampedTag = \"[object Uint8ClampedArray]\";\nvar uint16Tag = \"[object Uint16Array]\";\nvar uint32Tag = \"[object Uint32Array]\";\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag2] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag2] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\nfunction baseIsTypedArray(value) {\n return isObjectLike_default(value) && isLength_default(value.length) && !!typedArrayTags[baseGetTag_default(value)];\n}\n__name(baseIsTypedArray, \"baseIsTypedArray\");\nvar baseIsTypedArray_default = baseIsTypedArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUnary.js\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n__name(baseUnary, \"baseUnary\");\nvar baseUnary_default = baseUnary;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nodeUtil.js\nvar freeExports2 = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule2 = freeExports2 && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports2 = freeModule2 && freeModule2.exports === freeExports2;\nvar freeProcess = moduleExports2 && freeGlobal_default.process;\nvar nodeUtil = (function() {\n try {\n var types = freeModule2 && freeModule2.require && freeModule2.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n } catch (e) {\n }\n})();\nvar nodeUtil_default = nodeUtil;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isTypedArray.js\nvar nodeIsTypedArray = nodeUtil_default && nodeUtil_default.isTypedArray;\nvar isTypedArray = nodeIsTypedArray ? baseUnary_default(nodeIsTypedArray) : baseIsTypedArray_default;\nvar isTypedArray_default = isTypedArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayLikeKeys.js\nvar objectProto7 = Object.prototype;\nvar hasOwnProperty5 = objectProto7.hasOwnProperty;\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_default(value), isArg = !isArr && isArguments_default(value), isBuff = !isArr && !isArg && isBuffer_default(value), isType2 = !isArr && !isArg && !isBuff && isTypedArray_default(value), skipIndexes = isArr || isArg || isBuff || isType2, result = skipIndexes ? baseTimes_default(value.length, String) : [], length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty5.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.\n (key == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == \"offset\" || key == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType2 && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || // Skip index properties.\n isIndex_default(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n__name(arrayLikeKeys, \"arrayLikeKeys\");\nvar arrayLikeKeys_default = arrayLikeKeys;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_overArg.js\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n__name(overArg, \"overArg\");\nvar overArg_default = overArg;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeKeys.js\nvar nativeKeys = overArg_default(Object.keys, Object);\nvar nativeKeys_default = nativeKeys;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseKeys.js\nvar objectProto8 = Object.prototype;\nvar hasOwnProperty6 = objectProto8.hasOwnProperty;\nfunction baseKeys(object) {\n if (!isPrototype_default(object)) {\n return nativeKeys_default(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty6.call(object, key) && key != \"constructor\") {\n result.push(key);\n }\n }\n return result;\n}\n__name(baseKeys, \"baseKeys\");\nvar baseKeys_default = baseKeys;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/keys.js\nfunction keys(object) {\n return isArrayLike_default(object) ? arrayLikeKeys_default(object) : baseKeys_default(object);\n}\n__name(keys, \"keys\");\nvar keys_default = keys;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/assign.js\nvar objectProto9 = Object.prototype;\nvar hasOwnProperty7 = objectProto9.hasOwnProperty;\nvar assign = createAssigner_default(function(object, source) {\n if (isPrototype_default(source) || isArrayLike_default(source)) {\n copyObject_default(source, keys_default(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty7.call(source, key)) {\n assignValue_default(object, key, source[key]);\n }\n }\n});\nvar assign_default = assign;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeKeysIn.js\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n__name(nativeKeysIn, \"nativeKeysIn\");\nvar nativeKeysIn_default = nativeKeysIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseKeysIn.js\nvar objectProto10 = Object.prototype;\nvar hasOwnProperty8 = objectProto10.hasOwnProperty;\nfunction baseKeysIn(object) {\n if (!isObject_default(object)) {\n return nativeKeysIn_default(object);\n }\n var isProto = isPrototype_default(object), result = [];\n for (var key in object) {\n if (!(key == \"constructor\" && (isProto || !hasOwnProperty8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n__name(baseKeysIn, \"baseKeysIn\");\nvar baseKeysIn_default = baseKeysIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/keysIn.js\nfunction keysIn(object) {\n return isArrayLike_default(object) ? arrayLikeKeys_default(object, true) : baseKeysIn_default(object);\n}\n__name(keysIn, \"keysIn\");\nvar keysIn_default = keysIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKey.js\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\nvar reIsPlainProp = /^\\w*$/;\nfunction isKey(value, object) {\n if (isArray_default(value)) {\n return false;\n }\n var type = typeof value;\n if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol_default(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n__name(isKey, \"isKey\");\nvar isKey_default = isKey;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeCreate.js\nvar nativeCreate = getNative_default(Object, \"create\");\nvar nativeCreate_default = nativeCreate;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashClear.js\nfunction hashClear() {\n this.__data__ = nativeCreate_default ? nativeCreate_default(null) : {};\n this.size = 0;\n}\n__name(hashClear, \"hashClear\");\nvar hashClear_default = hashClear;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashDelete.js\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n__name(hashDelete, \"hashDelete\");\nvar hashDelete_default = hashDelete;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashGet.js\nvar HASH_UNDEFINED = \"__lodash_hash_undefined__\";\nvar objectProto11 = Object.prototype;\nvar hasOwnProperty9 = objectProto11.hasOwnProperty;\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate_default) {\n var result = data[key];\n return result === HASH_UNDEFINED ? void 0 : result;\n }\n return hasOwnProperty9.call(data, key) ? data[key] : void 0;\n}\n__name(hashGet, \"hashGet\");\nvar hashGet_default = hashGet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashHas.js\nvar objectProto12 = Object.prototype;\nvar hasOwnProperty10 = objectProto12.hasOwnProperty;\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate_default ? data[key] !== void 0 : hasOwnProperty10.call(data, key);\n}\n__name(hashHas, \"hashHas\");\nvar hashHas_default = hashHas;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashSet.js\nvar HASH_UNDEFINED2 = \"__lodash_hash_undefined__\";\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate_default && value === void 0 ? HASH_UNDEFINED2 : value;\n return this;\n}\n__name(hashSet, \"hashSet\");\nvar hashSet_default = hashSet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Hash.js\nfunction Hash(entries) {\n var index = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n__name(Hash, \"Hash\");\nHash.prototype.clear = hashClear_default;\nHash.prototype[\"delete\"] = hashDelete_default;\nHash.prototype.get = hashGet_default;\nHash.prototype.has = hashHas_default;\nHash.prototype.set = hashSet_default;\nvar Hash_default = Hash;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheClear.js\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n__name(listCacheClear, \"listCacheClear\");\nvar listCacheClear_default = listCacheClear;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assocIndexOf.js\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_default(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n__name(assocIndexOf, \"assocIndexOf\");\nvar assocIndexOf_default = assocIndexOf;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheDelete.js\nvar arrayProto = Array.prototype;\nvar splice = arrayProto.splice;\nfunction listCacheDelete(key) {\n var data = this.__data__, index = assocIndexOf_default(data, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n__name(listCacheDelete, \"listCacheDelete\");\nvar listCacheDelete_default = listCacheDelete;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheGet.js\nfunction listCacheGet(key) {\n var data = this.__data__, index = assocIndexOf_default(data, key);\n return index < 0 ? void 0 : data[index][1];\n}\n__name(listCacheGet, \"listCacheGet\");\nvar listCacheGet_default = listCacheGet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheHas.js\nfunction listCacheHas(key) {\n return assocIndexOf_default(this.__data__, key) > -1;\n}\n__name(listCacheHas, \"listCacheHas\");\nvar listCacheHas_default = listCacheHas;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheSet.js\nfunction listCacheSet(key, value) {\n var data = this.__data__, index = assocIndexOf_default(data, key);\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n__name(listCacheSet, \"listCacheSet\");\nvar listCacheSet_default = listCacheSet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_ListCache.js\nfunction ListCache(entries) {\n var index = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n__name(ListCache, \"ListCache\");\nListCache.prototype.clear = listCacheClear_default;\nListCache.prototype[\"delete\"] = listCacheDelete_default;\nListCache.prototype.get = listCacheGet_default;\nListCache.prototype.has = listCacheHas_default;\nListCache.prototype.set = listCacheSet_default;\nvar ListCache_default = ListCache;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Map.js\nvar Map2 = getNative_default(root_default, \"Map\");\nvar Map_default = Map2;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheClear.js\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new Hash_default(),\n \"map\": new (Map_default || ListCache_default)(),\n \"string\": new Hash_default()\n };\n}\n__name(mapCacheClear, \"mapCacheClear\");\nvar mapCacheClear_default = mapCacheClear;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKeyable.js\nfunction isKeyable(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n}\n__name(isKeyable, \"isKeyable\");\nvar isKeyable_default = isKeyable;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMapData.js\nfunction getMapData(map3, key) {\n var data = map3.__data__;\n return isKeyable_default(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n}\n__name(getMapData, \"getMapData\");\nvar getMapData_default = getMapData;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheDelete.js\nfunction mapCacheDelete(key) {\n var result = getMapData_default(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n__name(mapCacheDelete, \"mapCacheDelete\");\nvar mapCacheDelete_default = mapCacheDelete;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheGet.js\nfunction mapCacheGet(key) {\n return getMapData_default(this, key).get(key);\n}\n__name(mapCacheGet, \"mapCacheGet\");\nvar mapCacheGet_default = mapCacheGet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheHas.js\nfunction mapCacheHas(key) {\n return getMapData_default(this, key).has(key);\n}\n__name(mapCacheHas, \"mapCacheHas\");\nvar mapCacheHas_default = mapCacheHas;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheSet.js\nfunction mapCacheSet(key, value) {\n var data = getMapData_default(this, key), size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n__name(mapCacheSet, \"mapCacheSet\");\nvar mapCacheSet_default = mapCacheSet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_MapCache.js\nfunction MapCache(entries) {\n var index = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n__name(MapCache, \"MapCache\");\nMapCache.prototype.clear = mapCacheClear_default;\nMapCache.prototype[\"delete\"] = mapCacheDelete_default;\nMapCache.prototype.get = mapCacheGet_default;\nMapCache.prototype.has = mapCacheHas_default;\nMapCache.prototype.set = mapCacheSet_default;\nvar MapCache_default = MapCache;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/memoize.js\nvar FUNC_ERROR_TEXT = \"Expected a function\";\nfunction memoize(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = /* @__PURE__ */ __name(function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n }, \"memoized\");\n memoized.cache = new (memoize.Cache || MapCache_default)();\n return memoized;\n}\n__name(memoize, \"memoize\");\nmemoize.Cache = MapCache_default;\nvar memoize_default = memoize;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_memoizeCapped.js\nvar MAX_MEMOIZE_SIZE = 500;\nfunction memoizeCapped(func) {\n var result = memoize_default(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\n__name(memoizeCapped, \"memoizeCapped\");\nvar memoizeCapped_default = memoizeCapped;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stringToPath.js\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g;\nvar stringToPath = memoizeCapped_default(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, \"$1\") : number || match);\n });\n return result;\n});\nvar stringToPath_default = stringToPath;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toString.js\nfunction toString2(value) {\n return value == null ? \"\" : baseToString_default(value);\n}\n__name(toString2, \"toString\");\nvar toString_default = toString2;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castPath.js\nfunction castPath(value, object) {\n if (isArray_default(value)) {\n return value;\n }\n return isKey_default(value, object) ? [value] : stringToPath_default(toString_default(value));\n}\n__name(castPath, \"castPath\");\nvar castPath_default = castPath;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toKey.js\nvar INFINITY3 = 1 / 0;\nfunction toKey(value) {\n if (typeof value == \"string\" || isSymbol_default(value)) {\n return value;\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY3 ? \"-0\" : result;\n}\n__name(toKey, \"toKey\");\nvar toKey_default = toKey;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGet.js\nfunction baseGet(object, path) {\n path = castPath_default(path, object);\n var index = 0, length = path.length;\n while (object != null && index < length) {\n object = object[toKey_default(path[index++])];\n }\n return index && index == length ? object : void 0;\n}\n__name(baseGet, \"baseGet\");\nvar baseGet_default = baseGet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/get.js\nfunction get(object, path, defaultValue) {\n var result = object == null ? void 0 : baseGet_default(object, path);\n return result === void 0 ? defaultValue : result;\n}\n__name(get, \"get\");\nvar get_default = get;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayPush.js\nfunction arrayPush(array, values2) {\n var index = -1, length = values2.length, offset = array.length;\n while (++index < length) {\n array[offset + index] = values2[index];\n }\n return array;\n}\n__name(arrayPush, \"arrayPush\");\nvar arrayPush_default = arrayPush;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isFlattenable.js\nvar spreadableSymbol = Symbol_default ? Symbol_default.isConcatSpreadable : void 0;\nfunction isFlattenable(value) {\n return isArray_default(value) || isArguments_default(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n__name(isFlattenable, \"isFlattenable\");\nvar isFlattenable_default = isFlattenable;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFlatten.js\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1, length = array.length;\n predicate || (predicate = isFlattenable_default);\n result || (result = []);\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush_default(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n__name(baseFlatten, \"baseFlatten\");\nvar baseFlatten_default = baseFlatten;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatten.js\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten_default(array, 1) : [];\n}\n__name(flatten, \"flatten\");\nvar flatten_default = flatten;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getPrototype.js\nvar getPrototype = overArg_default(Object.getPrototypeOf, Object);\nvar getPrototype_default = getPrototype;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSlice.js\nfunction baseSlice(array, start, end) {\n var index = -1, length = array.length;\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n__name(baseSlice, \"baseSlice\");\nvar baseSlice_default = baseSlice;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayReduce.js\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1, length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n__name(arrayReduce, \"arrayReduce\");\nvar arrayReduce_default = arrayReduce;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackClear.js\nfunction stackClear() {\n this.__data__ = new ListCache_default();\n this.size = 0;\n}\n__name(stackClear, \"stackClear\");\nvar stackClear_default = stackClear;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackDelete.js\nfunction stackDelete(key) {\n var data = this.__data__, result = data[\"delete\"](key);\n this.size = data.size;\n return result;\n}\n__name(stackDelete, \"stackDelete\");\nvar stackDelete_default = stackDelete;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackGet.js\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n__name(stackGet, \"stackGet\");\nvar stackGet_default = stackGet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackHas.js\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n__name(stackHas, \"stackHas\");\nvar stackHas_default = stackHas;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stackSet.js\nvar LARGE_ARRAY_SIZE = 200;\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache_default) {\n var pairs = data.__data__;\n if (!Map_default || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache_default(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n__name(stackSet, \"stackSet\");\nvar stackSet_default = stackSet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Stack.js\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache_default(entries);\n this.size = data.size;\n}\n__name(Stack, \"Stack\");\nStack.prototype.clear = stackClear_default;\nStack.prototype[\"delete\"] = stackDelete_default;\nStack.prototype.get = stackGet_default;\nStack.prototype.has = stackHas_default;\nStack.prototype.set = stackSet_default;\nvar Stack_default = Stack;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssign.js\nfunction baseAssign(object, source) {\n return object && copyObject_default(source, keys_default(source), object);\n}\n__name(baseAssign, \"baseAssign\");\nvar baseAssign_default = baseAssign;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssignIn.js\nfunction baseAssignIn(object, source) {\n return object && copyObject_default(source, keysIn_default(source), object);\n}\n__name(baseAssignIn, \"baseAssignIn\");\nvar baseAssignIn_default = baseAssignIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneBuffer.js\nvar freeExports3 = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule3 = freeExports3 && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports3 = freeModule3 && freeModule3.exports === freeExports3;\nvar Buffer3 = moduleExports3 ? root_default.Buffer : void 0;\nvar allocUnsafe = Buffer3 ? Buffer3.allocUnsafe : void 0;\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n}\n__name(cloneBuffer, \"cloneBuffer\");\nvar cloneBuffer_default = cloneBuffer;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayFilter.js\nfunction arrayFilter(array, predicate) {\n var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n__name(arrayFilter, \"arrayFilter\");\nvar arrayFilter_default = arrayFilter;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/stubArray.js\nfunction stubArray() {\n return [];\n}\n__name(stubArray, \"stubArray\");\nvar stubArray_default = stubArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getSymbols.js\nvar objectProto13 = Object.prototype;\nvar propertyIsEnumerable2 = objectProto13.propertyIsEnumerable;\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\nvar getSymbols = !nativeGetSymbols ? stubArray_default : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter_default(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable2.call(object, symbol);\n });\n};\nvar getSymbols_default = getSymbols;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copySymbols.js\nfunction copySymbols(source, object) {\n return copyObject_default(source, getSymbols_default(source), object);\n}\n__name(copySymbols, \"copySymbols\");\nvar copySymbols_default = copySymbols;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getSymbolsIn.js\nvar nativeGetSymbols2 = Object.getOwnPropertySymbols;\nvar getSymbolsIn = !nativeGetSymbols2 ? stubArray_default : function(object) {\n var result = [];\n while (object) {\n arrayPush_default(result, getSymbols_default(object));\n object = getPrototype_default(object);\n }\n return result;\n};\nvar getSymbolsIn_default = getSymbolsIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copySymbolsIn.js\nfunction copySymbolsIn(source, object) {\n return copyObject_default(source, getSymbolsIn_default(source), object);\n}\n__name(copySymbolsIn, \"copySymbolsIn\");\nvar copySymbolsIn_default = copySymbolsIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetAllKeys.js\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray_default(object) ? result : arrayPush_default(result, symbolsFunc(object));\n}\n__name(baseGetAllKeys, \"baseGetAllKeys\");\nvar baseGetAllKeys_default = baseGetAllKeys;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getAllKeys.js\nfunction getAllKeys(object) {\n return baseGetAllKeys_default(object, keys_default, getSymbols_default);\n}\n__name(getAllKeys, \"getAllKeys\");\nvar getAllKeys_default = getAllKeys;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getAllKeysIn.js\nfunction getAllKeysIn(object) {\n return baseGetAllKeys_default(object, keysIn_default, getSymbolsIn_default);\n}\n__name(getAllKeysIn, \"getAllKeysIn\");\nvar getAllKeysIn_default = getAllKeysIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_DataView.js\nvar DataView = getNative_default(root_default, \"DataView\");\nvar DataView_default = DataView;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Promise.js\nvar Promise2 = getNative_default(root_default, \"Promise\");\nvar Promise_default = Promise2;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Set.js\nvar Set2 = getNative_default(root_default, \"Set\");\nvar Set_default = Set2;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getTag.js\nvar mapTag2 = \"[object Map]\";\nvar objectTag2 = \"[object Object]\";\nvar promiseTag = \"[object Promise]\";\nvar setTag2 = \"[object Set]\";\nvar weakMapTag2 = \"[object WeakMap]\";\nvar dataViewTag2 = \"[object DataView]\";\nvar dataViewCtorString = toSource_default(DataView_default);\nvar mapCtorString = toSource_default(Map_default);\nvar promiseCtorString = toSource_default(Promise_default);\nvar setCtorString = toSource_default(Set_default);\nvar weakMapCtorString = toSource_default(WeakMap_default);\nvar getTag = baseGetTag_default;\nif (DataView_default && getTag(new DataView_default(new ArrayBuffer(1))) != dataViewTag2 || Map_default && getTag(new Map_default()) != mapTag2 || Promise_default && getTag(Promise_default.resolve()) != promiseTag || Set_default && getTag(new Set_default()) != setTag2 || WeakMap_default && getTag(new WeakMap_default()) != weakMapTag2) {\n getTag = /* @__PURE__ */ __name(function(value) {\n var result = baseGetTag_default(value), Ctor = result == objectTag2 ? value.constructor : void 0, ctorString = Ctor ? toSource_default(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag2;\n case mapCtorString:\n return mapTag2;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag2;\n case weakMapCtorString:\n return weakMapTag2;\n }\n }\n return result;\n }, \"getTag\");\n}\nvar getTag_default = getTag;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneArray.js\nvar objectProto14 = Object.prototype;\nvar hasOwnProperty11 = objectProto14.hasOwnProperty;\nfunction initCloneArray(array) {\n var length = array.length, result = new array.constructor(length);\n if (length && typeof array[0] == \"string\" && hasOwnProperty11.call(array, \"index\")) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n__name(initCloneArray, \"initCloneArray\");\nvar initCloneArray_default = initCloneArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Uint8Array.js\nvar Uint8Array2 = root_default.Uint8Array;\nvar Uint8Array_default = Uint8Array2;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneArrayBuffer.js\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array_default(result).set(new Uint8Array_default(arrayBuffer));\n return result;\n}\n__name(cloneArrayBuffer, \"cloneArrayBuffer\");\nvar cloneArrayBuffer_default = cloneArrayBuffer;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneDataView.js\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer_default(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n__name(cloneDataView, \"cloneDataView\");\nvar cloneDataView_default = cloneDataView;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneRegExp.js\nvar reFlags = /\\w*$/;\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n__name(cloneRegExp, \"cloneRegExp\");\nvar cloneRegExp_default = cloneRegExp;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneSymbol.js\nvar symbolProto2 = Symbol_default ? Symbol_default.prototype : void 0;\nvar symbolValueOf = symbolProto2 ? symbolProto2.valueOf : void 0;\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n__name(cloneSymbol, \"cloneSymbol\");\nvar cloneSymbol_default = cloneSymbol;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneTypedArray.js\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer_default(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n__name(cloneTypedArray, \"cloneTypedArray\");\nvar cloneTypedArray_default = cloneTypedArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneByTag.js\nvar boolTag2 = \"[object Boolean]\";\nvar dateTag2 = \"[object Date]\";\nvar mapTag3 = \"[object Map]\";\nvar numberTag2 = \"[object Number]\";\nvar regexpTag2 = \"[object RegExp]\";\nvar setTag3 = \"[object Set]\";\nvar stringTag2 = \"[object String]\";\nvar symbolTag2 = \"[object Symbol]\";\nvar arrayBufferTag2 = \"[object ArrayBuffer]\";\nvar dataViewTag3 = \"[object DataView]\";\nvar float32Tag2 = \"[object Float32Array]\";\nvar float64Tag2 = \"[object Float64Array]\";\nvar int8Tag2 = \"[object Int8Array]\";\nvar int16Tag2 = \"[object Int16Array]\";\nvar int32Tag2 = \"[object Int32Array]\";\nvar uint8Tag2 = \"[object Uint8Array]\";\nvar uint8ClampedTag2 = \"[object Uint8ClampedArray]\";\nvar uint16Tag2 = \"[object Uint16Array]\";\nvar uint32Tag2 = \"[object Uint32Array]\";\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag2:\n return cloneArrayBuffer_default(object);\n case boolTag2:\n case dateTag2:\n return new Ctor(+object);\n case dataViewTag3:\n return cloneDataView_default(object, isDeep);\n case float32Tag2:\n case float64Tag2:\n case int8Tag2:\n case int16Tag2:\n case int32Tag2:\n case uint8Tag2:\n case uint8ClampedTag2:\n case uint16Tag2:\n case uint32Tag2:\n return cloneTypedArray_default(object, isDeep);\n case mapTag3:\n return new Ctor();\n case numberTag2:\n case stringTag2:\n return new Ctor(object);\n case regexpTag2:\n return cloneRegExp_default(object);\n case setTag3:\n return new Ctor();\n case symbolTag2:\n return cloneSymbol_default(object);\n }\n}\n__name(initCloneByTag, \"initCloneByTag\");\nvar initCloneByTag_default = initCloneByTag;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneObject.js\nfunction initCloneObject(object) {\n return typeof object.constructor == \"function\" && !isPrototype_default(object) ? baseCreate_default(getPrototype_default(object)) : {};\n}\n__name(initCloneObject, \"initCloneObject\");\nvar initCloneObject_default = initCloneObject;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsMap.js\nvar mapTag4 = \"[object Map]\";\nfunction baseIsMap(value) {\n return isObjectLike_default(value) && getTag_default(value) == mapTag4;\n}\n__name(baseIsMap, \"baseIsMap\");\nvar baseIsMap_default = baseIsMap;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isMap.js\nvar nodeIsMap = nodeUtil_default && nodeUtil_default.isMap;\nvar isMap = nodeIsMap ? baseUnary_default(nodeIsMap) : baseIsMap_default;\nvar isMap_default = isMap;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsSet.js\nvar setTag4 = \"[object Set]\";\nfunction baseIsSet(value) {\n return isObjectLike_default(value) && getTag_default(value) == setTag4;\n}\n__name(baseIsSet, \"baseIsSet\");\nvar baseIsSet_default = baseIsSet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSet.js\nvar nodeIsSet = nodeUtil_default && nodeUtil_default.isSet;\nvar isSet = nodeIsSet ? baseUnary_default(nodeIsSet) : baseIsSet_default;\nvar isSet_default = isSet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseClone.js\nvar CLONE_DEEP_FLAG = 1;\nvar CLONE_FLAT_FLAG = 2;\nvar CLONE_SYMBOLS_FLAG = 4;\nvar argsTag3 = \"[object Arguments]\";\nvar arrayTag2 = \"[object Array]\";\nvar boolTag3 = \"[object Boolean]\";\nvar dateTag3 = \"[object Date]\";\nvar errorTag2 = \"[object Error]\";\nvar funcTag3 = \"[object Function]\";\nvar genTag2 = \"[object GeneratorFunction]\";\nvar mapTag5 = \"[object Map]\";\nvar numberTag3 = \"[object Number]\";\nvar objectTag3 = \"[object Object]\";\nvar regexpTag3 = \"[object RegExp]\";\nvar setTag5 = \"[object Set]\";\nvar stringTag3 = \"[object String]\";\nvar symbolTag3 = \"[object Symbol]\";\nvar weakMapTag3 = \"[object WeakMap]\";\nvar arrayBufferTag3 = \"[object ArrayBuffer]\";\nvar dataViewTag4 = \"[object DataView]\";\nvar float32Tag3 = \"[object Float32Array]\";\nvar float64Tag3 = \"[object Float64Array]\";\nvar int8Tag3 = \"[object Int8Array]\";\nvar int16Tag3 = \"[object Int16Array]\";\nvar int32Tag3 = \"[object Int32Array]\";\nvar uint8Tag3 = \"[object Uint8Array]\";\nvar uint8ClampedTag3 = \"[object Uint8ClampedArray]\";\nvar uint16Tag3 = \"[object Uint16Array]\";\nvar uint32Tag3 = \"[object Uint32Array]\";\nvar cloneableTags = {};\ncloneableTags[argsTag3] = cloneableTags[arrayTag2] = cloneableTags[arrayBufferTag3] = cloneableTags[dataViewTag4] = cloneableTags[boolTag3] = cloneableTags[dateTag3] = cloneableTags[float32Tag3] = cloneableTags[float64Tag3] = cloneableTags[int8Tag3] = cloneableTags[int16Tag3] = cloneableTags[int32Tag3] = cloneableTags[mapTag5] = cloneableTags[numberTag3] = cloneableTags[objectTag3] = cloneableTags[regexpTag3] = cloneableTags[setTag5] = cloneableTags[stringTag3] = cloneableTags[symbolTag3] = cloneableTags[uint8Tag3] = cloneableTags[uint8ClampedTag3] = cloneableTags[uint16Tag3] = cloneableTags[uint32Tag3] = true;\ncloneableTags[errorTag2] = cloneableTags[funcTag3] = cloneableTags[weakMapTag3] = false;\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== void 0) {\n return result;\n }\n if (!isObject_default(value)) {\n return value;\n }\n var isArr = isArray_default(value);\n if (isArr) {\n result = initCloneArray_default(value);\n if (!isDeep) {\n return copyArray_default(value, result);\n }\n } else {\n var tag = getTag_default(value), isFunc = tag == funcTag3 || tag == genTag2;\n if (isBuffer_default(value)) {\n return cloneBuffer_default(value, isDeep);\n }\n if (tag == objectTag3 || tag == argsTag3 || isFunc && !object) {\n result = isFlat || isFunc ? {} : initCloneObject_default(value);\n if (!isDeep) {\n return isFlat ? copySymbolsIn_default(value, baseAssignIn_default(result, value)) : copySymbols_default(value, baseAssign_default(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag_default(value, tag, isDeep);\n }\n }\n stack || (stack = new Stack_default());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet_default(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap_default(value)) {\n value.forEach(function(subValue, key2) {\n result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? getAllKeysIn_default : getAllKeys_default : isFlat ? keysIn_default : keys_default;\n var props = isArr ? void 0 : keysFunc(value);\n arrayEach_default(props || value, function(subValue, key2) {\n if (props) {\n key2 = subValue;\n subValue = value[key2];\n }\n assignValue_default(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n });\n return result;\n}\n__name(baseClone, \"baseClone\");\nvar baseClone_default = baseClone;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/clone.js\nvar CLONE_SYMBOLS_FLAG2 = 4;\nfunction clone(value) {\n return baseClone_default(value, CLONE_SYMBOLS_FLAG2);\n}\n__name(clone, \"clone\");\nvar clone_default = clone;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/compact.js\nfunction compact(array) {\n var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n__name(compact, \"compact\");\nvar compact_default = compact;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheAdd.js\nvar HASH_UNDEFINED3 = \"__lodash_hash_undefined__\";\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED3);\n return this;\n}\n__name(setCacheAdd, \"setCacheAdd\");\nvar setCacheAdd_default = setCacheAdd;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheHas.js\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n__name(setCacheHas, \"setCacheHas\");\nvar setCacheHas_default = setCacheHas;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_SetCache.js\nfunction SetCache(values2) {\n var index = -1, length = values2 == null ? 0 : values2.length;\n this.__data__ = new MapCache_default();\n while (++index < length) {\n this.add(values2[index]);\n }\n}\n__name(SetCache, \"SetCache\");\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd_default;\nSetCache.prototype.has = setCacheHas_default;\nvar SetCache_default = SetCache;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arraySome.js\nfunction arraySome(array, predicate) {\n var index = -1, length = array == null ? 0 : array.length;\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n__name(arraySome, \"arraySome\");\nvar arraySome_default = arraySome;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cacheHas.js\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n__name(cacheHas, \"cacheHas\");\nvar cacheHas_default = cacheHas;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalArrays.js\nvar COMPARE_PARTIAL_FLAG = 1;\nvar COMPARE_UNORDERED_FLAG = 2;\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache_default() : void 0;\n stack.set(array, other);\n stack.set(other, array);\n while (++index < arrLength) {\n var arrValue = array[index], othValue = other[index];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== void 0) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n if (seen) {\n if (!arraySome_default(other, function(othValue2, othIndex) {\n if (!cacheHas_default(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack[\"delete\"](array);\n stack[\"delete\"](other);\n return result;\n}\n__name(equalArrays, \"equalArrays\");\nvar equalArrays_default = equalArrays;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapToArray.js\nfunction mapToArray(map3) {\n var index = -1, result = Array(map3.size);\n map3.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n__name(mapToArray, \"mapToArray\");\nvar mapToArray_default = mapToArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setToArray.js\nfunction setToArray(set) {\n var index = -1, result = Array(set.size);\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n__name(setToArray, \"setToArray\");\nvar setToArray_default = setToArray;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalByTag.js\nvar COMPARE_PARTIAL_FLAG2 = 1;\nvar COMPARE_UNORDERED_FLAG2 = 2;\nvar boolTag4 = \"[object Boolean]\";\nvar dateTag4 = \"[object Date]\";\nvar errorTag3 = \"[object Error]\";\nvar mapTag6 = \"[object Map]\";\nvar numberTag4 = \"[object Number]\";\nvar regexpTag4 = \"[object RegExp]\";\nvar setTag6 = \"[object Set]\";\nvar stringTag4 = \"[object String]\";\nvar symbolTag4 = \"[object Symbol]\";\nvar arrayBufferTag4 = \"[object ArrayBuffer]\";\nvar dataViewTag5 = \"[object DataView]\";\nvar symbolProto3 = Symbol_default ? Symbol_default.prototype : void 0;\nvar symbolValueOf2 = symbolProto3 ? symbolProto3.valueOf : void 0;\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag5:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag4:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array_default(object), new Uint8Array_default(other))) {\n return false;\n }\n return true;\n case boolTag4:\n case dateTag4:\n case numberTag4:\n return eq_default(+object, +other);\n case errorTag3:\n return object.name == other.name && object.message == other.message;\n case regexpTag4:\n case stringTag4:\n return object == other + \"\";\n case mapTag6:\n var convert = mapToArray_default;\n case setTag6:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG2;\n convert || (convert = setToArray_default);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG2;\n stack.set(object, other);\n var result = equalArrays_default(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack[\"delete\"](object);\n return result;\n case symbolTag4:\n if (symbolValueOf2) {\n return symbolValueOf2.call(object) == symbolValueOf2.call(other);\n }\n }\n return false;\n}\n__name(equalByTag, \"equalByTag\");\nvar equalByTag_default = equalByTag;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalObjects.js\nvar COMPARE_PARTIAL_FLAG3 = 1;\nvar objectProto15 = Object.prototype;\nvar hasOwnProperty12 = objectProto15.hasOwnProperty;\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG3, objProps = getAllKeys_default(object), objLength = objProps.length, othProps = getAllKeys_default(other), othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty12.call(other, key))) {\n return false;\n }\n }\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key], othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == \"constructor\");\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor, othCtor = other.constructor;\n if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack[\"delete\"](object);\n stack[\"delete\"](other);\n return result;\n}\n__name(equalObjects, \"equalObjects\");\nvar equalObjects_default = equalObjects;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsEqualDeep.js\nvar COMPARE_PARTIAL_FLAG4 = 1;\nvar argsTag4 = \"[object Arguments]\";\nvar arrayTag3 = \"[object Array]\";\nvar objectTag4 = \"[object Object]\";\nvar objectProto16 = Object.prototype;\nvar hasOwnProperty13 = objectProto16.hasOwnProperty;\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray_default(object), othIsArr = isArray_default(other), objTag = objIsArr ? arrayTag3 : getTag_default(object), othTag = othIsArr ? arrayTag3 : getTag_default(other);\n objTag = objTag == argsTag4 ? objectTag4 : objTag;\n othTag = othTag == argsTag4 ? objectTag4 : othTag;\n var objIsObj = objTag == objectTag4, othIsObj = othTag == objectTag4, isSameTag = objTag == othTag;\n if (isSameTag && isBuffer_default(object)) {\n if (!isBuffer_default(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack_default());\n return objIsArr || isTypedArray_default(object) ? equalArrays_default(object, other, bitmask, customizer, equalFunc, stack) : equalByTag_default(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG4)) {\n var objIsWrapped = objIsObj && hasOwnProperty13.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty13.call(other, \"__wrapped__\");\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack_default());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack_default());\n return equalObjects_default(object, other, bitmask, customizer, equalFunc, stack);\n}\n__name(baseIsEqualDeep, \"baseIsEqualDeep\");\nvar baseIsEqualDeep_default = baseIsEqualDeep;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsEqual.js\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike_default(value) && !isObjectLike_default(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep_default(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n__name(baseIsEqual, \"baseIsEqual\");\nvar baseIsEqual_default = baseIsEqual;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsMatch.js\nvar COMPARE_PARTIAL_FLAG5 = 1;\nvar COMPARE_UNORDERED_FLAG3 = 2;\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length, length = index, noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0], objValue = object[key], srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === void 0 && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack_default();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === void 0 ? baseIsEqual_default(srcValue, objValue, COMPARE_PARTIAL_FLAG5 | COMPARE_UNORDERED_FLAG3, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\n__name(baseIsMatch, \"baseIsMatch\");\nvar baseIsMatch_default = baseIsMatch;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isStrictComparable.js\nfunction isStrictComparable(value) {\n return value === value && !isObject_default(value);\n}\n__name(isStrictComparable, \"isStrictComparable\");\nvar isStrictComparable_default = isStrictComparable;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMatchData.js\nfunction getMatchData(object) {\n var result = keys_default(object), length = result.length;\n while (length--) {\n var key = result[length], value = object[key];\n result[length] = [key, value, isStrictComparable_default(value)];\n }\n return result;\n}\n__name(getMatchData, \"getMatchData\");\nvar getMatchData_default = getMatchData;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_matchesStrictComparable.js\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n };\n}\n__name(matchesStrictComparable, \"matchesStrictComparable\");\nvar matchesStrictComparable_default = matchesStrictComparable;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMatches.js\nfunction baseMatches(source) {\n var matchData = getMatchData_default(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable_default(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch_default(object, source, matchData);\n };\n}\n__name(baseMatches, \"baseMatches\");\nvar baseMatches_default = baseMatches;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHasIn.js\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n__name(baseHasIn, \"baseHasIn\");\nvar baseHasIn_default = baseHasIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hasPath.js\nfunction hasPath(object, path, hasFunc) {\n path = castPath_default(path, object);\n var index = -1, length = path.length, result = false;\n while (++index < length) {\n var key = toKey_default(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength_default(length) && isIndex_default(key, length) && (isArray_default(object) || isArguments_default(object));\n}\n__name(hasPath, \"hasPath\");\nvar hasPath_default = hasPath;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/hasIn.js\nfunction hasIn(object, path) {\n return object != null && hasPath_default(object, path, baseHasIn_default);\n}\n__name(hasIn, \"hasIn\");\nvar hasIn_default = hasIn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMatchesProperty.js\nvar COMPARE_PARTIAL_FLAG6 = 1;\nvar COMPARE_UNORDERED_FLAG4 = 2;\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey_default(path) && isStrictComparable_default(srcValue)) {\n return matchesStrictComparable_default(toKey_default(path), srcValue);\n }\n return function(object) {\n var objValue = get_default(object, path);\n return objValue === void 0 && objValue === srcValue ? hasIn_default(object, path) : baseIsEqual_default(srcValue, objValue, COMPARE_PARTIAL_FLAG6 | COMPARE_UNORDERED_FLAG4);\n };\n}\n__name(baseMatchesProperty, \"baseMatchesProperty\");\nvar baseMatchesProperty_default = baseMatchesProperty;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseProperty.js\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? void 0 : object[key];\n };\n}\n__name(baseProperty, \"baseProperty\");\nvar baseProperty_default = baseProperty;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePropertyDeep.js\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet_default(object, path);\n };\n}\n__name(basePropertyDeep, \"basePropertyDeep\");\nvar basePropertyDeep_default = basePropertyDeep;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/property.js\nfunction property(path) {\n return isKey_default(path) ? baseProperty_default(toKey_default(path)) : basePropertyDeep_default(path);\n}\n__name(property, \"property\");\nvar property_default = property;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIteratee.js\nfunction baseIteratee(value) {\n if (typeof value == \"function\") {\n return value;\n }\n if (value == null) {\n return identity_default;\n }\n if (typeof value == \"object\") {\n return isArray_default(value) ? baseMatchesProperty_default(value[0], value[1]) : baseMatches_default(value);\n }\n return property_default(value);\n}\n__name(baseIteratee, \"baseIteratee\");\nvar baseIteratee_default = baseIteratee;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayAggregator.js\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1, length = array == null ? 0 : array.length;\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n__name(arrayAggregator, \"arrayAggregator\");\nvar arrayAggregator_default = arrayAggregator;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createBaseFor.js\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n__name(createBaseFor, \"createBaseFor\");\nvar createBaseFor_default = createBaseFor;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFor.js\nvar baseFor = createBaseFor_default();\nvar baseFor_default = baseFor;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseForOwn.js\nfunction baseForOwn(object, iteratee) {\n return object && baseFor_default(object, iteratee, keys_default);\n}\n__name(baseForOwn, \"baseForOwn\");\nvar baseForOwn_default = baseForOwn;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createBaseEach.js\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike_default(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n__name(createBaseEach, \"createBaseEach\");\nvar createBaseEach_default = createBaseEach;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseEach.js\nvar baseEach = createBaseEach_default(baseForOwn_default);\nvar baseEach_default = baseEach;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAggregator.js\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach_default(collection, function(value, key, collection2) {\n setter(accumulator, value, iteratee(value), collection2);\n });\n return accumulator;\n}\n__name(baseAggregator, \"baseAggregator\");\nvar baseAggregator_default = baseAggregator;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createAggregator.js\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray_default(collection) ? arrayAggregator_default : baseAggregator_default, accumulator = initializer ? initializer() : {};\n return func(collection, setter, baseIteratee_default(iteratee, 2), accumulator);\n };\n}\n__name(createAggregator, \"createAggregator\");\nvar createAggregator_default = createAggregator;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/defaults.js\nvar objectProto17 = Object.prototype;\nvar hasOwnProperty14 = objectProto17.hasOwnProperty;\nvar defaults = baseRest_default(function(object, sources) {\n object = Object(object);\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : void 0;\n if (guard && isIterateeCall_default(sources[0], sources[1], guard)) {\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n var props = keysIn_default(source);\n var propsIndex = -1;\n var propsLength = props.length;\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n if (value === void 0 || eq_default(value, objectProto17[key]) && !hasOwnProperty14.call(object, key)) {\n object[key] = source[key];\n }\n }\n }\n return object;\n});\nvar defaults_default = defaults;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArrayLikeObject.js\nfunction isArrayLikeObject(value) {\n return isObjectLike_default(value) && isArrayLike_default(value);\n}\n__name(isArrayLikeObject, \"isArrayLikeObject\");\nvar isArrayLikeObject_default = isArrayLikeObject;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludesWith.js\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1, length = array == null ? 0 : array.length;\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n__name(arrayIncludesWith, \"arrayIncludesWith\");\nvar arrayIncludesWith_default = arrayIncludesWith;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseDifference.js\nvar LARGE_ARRAY_SIZE2 = 200;\nfunction baseDifference(array, values2, iteratee, comparator) {\n var index = -1, includes2 = arrayIncludes_default, isCommon = true, length = array.length, result = [], valuesLength = values2.length;\n if (!length) {\n return result;\n }\n if (iteratee) {\n values2 = arrayMap_default(values2, baseUnary_default(iteratee));\n }\n if (comparator) {\n includes2 = arrayIncludesWith_default;\n isCommon = false;\n } else if (values2.length >= LARGE_ARRAY_SIZE2) {\n includes2 = cacheHas_default;\n isCommon = false;\n values2 = new SetCache_default(values2);\n }\n outer:\n while (++index < length) {\n var value = array[index], computed = iteratee == null ? value : iteratee(value);\n value = comparator || value !== 0 ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values2[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n } else if (!includes2(values2, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n__name(baseDifference, \"baseDifference\");\nvar baseDifference_default = baseDifference;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/difference.js\nvar difference = baseRest_default(function(array, values2) {\n return isArrayLikeObject_default(array) ? baseDifference_default(array, baseFlatten_default(values2, 1, isArrayLikeObject_default, true)) : [];\n});\nvar difference_default = difference;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/last.js\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : void 0;\n}\n__name(last, \"last\");\nvar last_default = last;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/drop.js\nfunction drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = guard || n === void 0 ? 1 : toInteger_default(n);\n return baseSlice_default(array, n < 0 ? 0 : n, length);\n}\n__name(drop, \"drop\");\nvar drop_default = drop;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/dropRight.js\nfunction dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = guard || n === void 0 ? 1 : toInteger_default(n);\n n = length - n;\n return baseSlice_default(array, 0, n < 0 ? 0 : n);\n}\n__name(dropRight, \"dropRight\");\nvar dropRight_default = dropRight;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castFunction.js\nfunction castFunction(value) {\n return typeof value == \"function\" ? value : identity_default;\n}\n__name(castFunction, \"castFunction\");\nvar castFunction_default = castFunction;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/forEach.js\nfunction forEach(collection, iteratee) {\n var func = isArray_default(collection) ? arrayEach_default : baseEach_default;\n return func(collection, castFunction_default(iteratee));\n}\n__name(forEach, \"forEach\");\nvar forEach_default = forEach;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayEvery.js\nfunction arrayEvery(array, predicate) {\n var index = -1, length = array == null ? 0 : array.length;\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n__name(arrayEvery, \"arrayEvery\");\nvar arrayEvery_default = arrayEvery;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseEvery.js\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach_default(collection, function(value, index, collection2) {\n result = !!predicate(value, index, collection2);\n return result;\n });\n return result;\n}\n__name(baseEvery, \"baseEvery\");\nvar baseEvery_default = baseEvery;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/every.js\nfunction every(collection, predicate, guard) {\n var func = isArray_default(collection) ? arrayEvery_default : baseEvery_default;\n if (guard && isIterateeCall_default(collection, predicate, guard)) {\n predicate = void 0;\n }\n return func(collection, baseIteratee_default(predicate, 3));\n}\n__name(every, \"every\");\nvar every_default = every;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFilter.js\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach_default(collection, function(value, index, collection2) {\n if (predicate(value, index, collection2)) {\n result.push(value);\n }\n });\n return result;\n}\n__name(baseFilter, \"baseFilter\");\nvar baseFilter_default = baseFilter;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/filter.js\nfunction filter(collection, predicate) {\n var func = isArray_default(collection) ? arrayFilter_default : baseFilter_default;\n return func(collection, baseIteratee_default(predicate, 3));\n}\n__name(filter, \"filter\");\nvar filter_default = filter;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createFind.js\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike_default(collection)) {\n var iteratee = baseIteratee_default(predicate, 3);\n collection = keys_default(collection);\n predicate = /* @__PURE__ */ __name(function(key) {\n return iteratee(iterable[key], key, iterable);\n }, \"predicate\");\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : void 0;\n };\n}\n__name(createFind, \"createFind\");\nvar createFind_default = createFind;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/findIndex.js\nvar nativeMax2 = Math.max;\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger_default(fromIndex);\n if (index < 0) {\n index = nativeMax2(length + index, 0);\n }\n return baseFindIndex_default(array, baseIteratee_default(predicate, 3), index);\n}\n__name(findIndex, \"findIndex\");\nvar findIndex_default = findIndex;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/find.js\nvar find = createFind_default(findIndex_default);\nvar find_default = find;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/head.js\nfunction head(array) {\n return array && array.length ? array[0] : void 0;\n}\n__name(head, \"head\");\nvar head_default = head;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMap.js\nfunction baseMap(collection, iteratee) {\n var index = -1, result = isArrayLike_default(collection) ? Array(collection.length) : [];\n baseEach_default(collection, function(value, key, collection2) {\n result[++index] = iteratee(value, key, collection2);\n });\n return result;\n}\n__name(baseMap, \"baseMap\");\nvar baseMap_default = baseMap;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/map.js\nfunction map(collection, iteratee) {\n var func = isArray_default(collection) ? arrayMap_default : baseMap_default;\n return func(collection, baseIteratee_default(iteratee, 3));\n}\n__name(map, \"map\");\nvar map_default = map;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatMap.js\nfunction flatMap(collection, iteratee) {\n return baseFlatten_default(map_default(collection, iteratee), 1);\n}\n__name(flatMap, \"flatMap\");\nvar flatMap_default = flatMap;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/groupBy.js\nvar objectProto18 = Object.prototype;\nvar hasOwnProperty15 = objectProto18.hasOwnProperty;\nvar groupBy = createAggregator_default(function(result, value, key) {\n if (hasOwnProperty15.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue_default(result, key, [value]);\n }\n});\nvar groupBy_default = groupBy;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHas.js\nvar objectProto19 = Object.prototype;\nvar hasOwnProperty16 = objectProto19.hasOwnProperty;\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty16.call(object, key);\n}\n__name(baseHas, \"baseHas\");\nvar baseHas_default = baseHas;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/has.js\nfunction has(object, path) {\n return object != null && hasPath_default(object, path, baseHas_default);\n}\n__name(has, \"has\");\nvar has_default = has;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isString.js\nvar stringTag5 = \"[object String]\";\nfunction isString(value) {\n return typeof value == \"string\" || !isArray_default(value) && isObjectLike_default(value) && baseGetTag_default(value) == stringTag5;\n}\n__name(isString, \"isString\");\nvar isString_default = isString;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseValues.js\nfunction baseValues(object, props) {\n return arrayMap_default(props, function(key) {\n return object[key];\n });\n}\n__name(baseValues, \"baseValues\");\nvar baseValues_default = baseValues;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/values.js\nfunction values(object) {\n return object == null ? [] : baseValues_default(object, keys_default(object));\n}\n__name(values, \"values\");\nvar values_default = values;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/includes.js\nvar nativeMax3 = Math.max;\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike_default(collection) ? collection : values_default(collection);\n fromIndex = fromIndex && !guard ? toInteger_default(fromIndex) : 0;\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax3(length + fromIndex, 0);\n }\n return isString_default(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf_default(collection, value, fromIndex) > -1;\n}\n__name(includes, \"includes\");\nvar includes_default = includes;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/indexOf.js\nvar nativeMax4 = Math.max;\nfunction indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger_default(fromIndex);\n if (index < 0) {\n index = nativeMax4(length + index, 0);\n }\n return baseIndexOf_default(array, value, index);\n}\n__name(indexOf, \"indexOf\");\nvar indexOf_default = indexOf;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isEmpty.js\nvar mapTag7 = \"[object Map]\";\nvar setTag7 = \"[object Set]\";\nvar objectProto20 = Object.prototype;\nvar hasOwnProperty17 = objectProto20.hasOwnProperty;\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike_default(value) && (isArray_default(value) || typeof value == \"string\" || typeof value.splice == \"function\" || isBuffer_default(value) || isTypedArray_default(value) || isArguments_default(value))) {\n return !value.length;\n }\n var tag = getTag_default(value);\n if (tag == mapTag7 || tag == setTag7) {\n return !value.size;\n }\n if (isPrototype_default(value)) {\n return !baseKeys_default(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty17.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n__name(isEmpty, \"isEmpty\");\nvar isEmpty_default = isEmpty;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsRegExp.js\nvar regexpTag5 = \"[object RegExp]\";\nfunction baseIsRegExp(value) {\n return isObjectLike_default(value) && baseGetTag_default(value) == regexpTag5;\n}\n__name(baseIsRegExp, \"baseIsRegExp\");\nvar baseIsRegExp_default = baseIsRegExp;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isRegExp.js\nvar nodeIsRegExp = nodeUtil_default && nodeUtil_default.isRegExp;\nvar isRegExp = nodeIsRegExp ? baseUnary_default(nodeIsRegExp) : baseIsRegExp_default;\nvar isRegExp_default = isRegExp;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isUndefined.js\nfunction isUndefined(value) {\n return value === void 0;\n}\n__name(isUndefined, \"isUndefined\");\nvar isUndefined_default = isUndefined;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/negate.js\nvar FUNC_ERROR_TEXT2 = \"Expected a function\";\nfunction negate(predicate) {\n if (typeof predicate != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT2);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0:\n return !predicate.call(this);\n case 1:\n return !predicate.call(this, args[0]);\n case 2:\n return !predicate.call(this, args[0], args[1]);\n case 3:\n return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n__name(negate, \"negate\");\nvar negate_default = negate;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSet.js\nfunction baseSet(object, path, value, customizer) {\n if (!isObject_default(object)) {\n return object;\n }\n path = castPath_default(path, object);\n var index = -1, length = path.length, lastIndex = length - 1, nested = object;\n while (nested != null && ++index < length) {\n var key = toKey_default(path[index]), newValue = value;\n if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n return object;\n }\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : void 0;\n if (newValue === void 0) {\n newValue = isObject_default(objValue) ? objValue : isIndex_default(path[index + 1]) ? [] : {};\n }\n }\n assignValue_default(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n__name(baseSet, \"baseSet\");\nvar baseSet_default = baseSet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePickBy.js\nfunction basePickBy(object, paths, predicate) {\n var index = -1, length = paths.length, result = {};\n while (++index < length) {\n var path = paths[index], value = baseGet_default(object, path);\n if (predicate(value, path)) {\n baseSet_default(result, castPath_default(path, object), value);\n }\n }\n return result;\n}\n__name(basePickBy, \"basePickBy\");\nvar basePickBy_default = basePickBy;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/pickBy.js\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap_default(getAllKeysIn_default(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee_default(predicate);\n return basePickBy_default(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n__name(pickBy, \"pickBy\");\nvar pickBy_default = pickBy;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseReduce.js\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection2) {\n accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2);\n });\n return accumulator;\n}\n__name(baseReduce, \"baseReduce\");\nvar baseReduce_default = baseReduce;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/reduce.js\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray_default(collection) ? arrayReduce_default : baseReduce_default, initAccum = arguments.length < 3;\n return func(collection, baseIteratee_default(iteratee, 4), accumulator, initAccum, baseEach_default);\n}\n__name(reduce, \"reduce\");\nvar reduce_default = reduce;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/reject.js\nfunction reject(collection, predicate) {\n var func = isArray_default(collection) ? arrayFilter_default : baseFilter_default;\n return func(collection, negate_default(baseIteratee_default(predicate, 3)));\n}\n__name(reject, \"reject\");\nvar reject_default = reject;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSome.js\nfunction baseSome(collection, predicate) {\n var result;\n baseEach_default(collection, function(value, index, collection2) {\n result = predicate(value, index, collection2);\n return !result;\n });\n return !!result;\n}\n__name(baseSome, \"baseSome\");\nvar baseSome_default = baseSome;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/some.js\nfunction some(collection, predicate, guard) {\n var func = isArray_default(collection) ? arraySome_default : baseSome_default;\n if (guard && isIterateeCall_default(collection, predicate, guard)) {\n predicate = void 0;\n }\n return func(collection, baseIteratee_default(predicate, 3));\n}\n__name(some, \"some\");\nvar some_default = some;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createSet.js\nvar INFINITY4 = 1 / 0;\nvar createSet = !(Set_default && 1 / setToArray_default(new Set_default([, -0]))[1] == INFINITY4) ? noop_default : function(values2) {\n return new Set_default(values2);\n};\nvar createSet_default = createSet;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUniq.js\nvar LARGE_ARRAY_SIZE3 = 200;\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1, includes2 = arrayIncludes_default, length = array.length, isCommon = true, result = [], seen = result;\n if (comparator) {\n isCommon = false;\n includes2 = arrayIncludesWith_default;\n } else if (length >= LARGE_ARRAY_SIZE3) {\n var set = iteratee ? null : createSet_default(array);\n if (set) {\n return setToArray_default(set);\n }\n isCommon = false;\n includes2 = cacheHas_default;\n seen = new SetCache_default();\n } else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index], computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n } else if (!includes2(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n__name(baseUniq, \"baseUniq\");\nvar baseUniq_default = baseUniq;\n\n// ../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/uniq.js\nfunction uniq(array) {\n return array && array.length ? baseUniq_default(array) : [];\n}\n__name(uniq, \"uniq\");\nvar uniq_default = uniq;\n\n// ../../node_modules/.pnpm/@chevrotain+utils@11.1.1/node_modules/@chevrotain/utils/lib/src/print.js\nfunction PRINT_ERROR(msg) {\n if (console && console.error) {\n console.error(`Error: ${msg}`);\n }\n}\n__name(PRINT_ERROR, \"PRINT_ERROR\");\nfunction PRINT_WARNING(msg) {\n if (console && console.warn) {\n console.warn(`Warning: ${msg}`);\n }\n}\n__name(PRINT_WARNING, \"PRINT_WARNING\");\n\n// ../../node_modules/.pnpm/@chevrotain+utils@11.1.1/node_modules/@chevrotain/utils/lib/src/timer.js\nfunction timer(func) {\n const start = (/* @__PURE__ */ new Date()).getTime();\n const val = func();\n const end = (/* @__PURE__ */ new Date()).getTime();\n const total = end - start;\n return { time: total, value: val };\n}\n__name(timer, \"timer\");\n\n// ../../node_modules/.pnpm/@chevrotain+utils@11.1.1/node_modules/@chevrotain/utils/lib/src/to-fast-properties.js\nfunction toFastProperties(toBecomeFast) {\n function FakeConstructor() {\n }\n __name(FakeConstructor, \"FakeConstructor\");\n FakeConstructor.prototype = toBecomeFast;\n const fakeInstance = new FakeConstructor();\n function fakeAccess() {\n return typeof fakeInstance.bar;\n }\n __name(fakeAccess, \"fakeAccess\");\n fakeAccess();\n fakeAccess();\n if (1)\n return toBecomeFast;\n (0, eval)(toBecomeFast);\n}\n__name(toFastProperties, \"toFastProperties\");\n\n// ../../node_modules/.pnpm/@chevrotain+gast@11.1.1/node_modules/@chevrotain/gast/lib/src/model.js\nfunction tokenLabel(tokType) {\n if (hasTokenLabel(tokType)) {\n return tokType.LABEL;\n } else {\n return tokType.name;\n }\n}\n__name(tokenLabel, \"tokenLabel\");\nfunction hasTokenLabel(obj) {\n return isString_default(obj.LABEL) && obj.LABEL !== \"\";\n}\n__name(hasTokenLabel, \"hasTokenLabel\");\nvar AbstractProduction = class {\n static {\n __name(this, \"AbstractProduction\");\n }\n get definition() {\n return this._definition;\n }\n set definition(value) {\n this._definition = value;\n }\n constructor(_definition) {\n this._definition = _definition;\n }\n accept(visitor2) {\n visitor2.visit(this);\n forEach_default(this.definition, (prod) => {\n prod.accept(visitor2);\n });\n }\n};\nvar NonTerminal = class extends AbstractProduction {\n static {\n __name(this, \"NonTerminal\");\n }\n constructor(options) {\n super([]);\n this.idx = 1;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n set definition(definition) {\n }\n get definition() {\n if (this.referencedRule !== void 0) {\n return this.referencedRule.definition;\n }\n return [];\n }\n accept(visitor2) {\n visitor2.visit(this);\n }\n};\nvar Rule = class extends AbstractProduction {\n static {\n __name(this, \"Rule\");\n }\n constructor(options) {\n super(options.definition);\n this.orgText = \"\";\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n};\nvar Alternative = class extends AbstractProduction {\n static {\n __name(this, \"Alternative\");\n }\n constructor(options) {\n super(options.definition);\n this.ignoreAmbiguities = false;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n};\nvar Option = class extends AbstractProduction {\n static {\n __name(this, \"Option\");\n }\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n};\nvar RepetitionMandatory = class extends AbstractProduction {\n static {\n __name(this, \"RepetitionMandatory\");\n }\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n};\nvar RepetitionMandatoryWithSeparator = class extends AbstractProduction {\n static {\n __name(this, \"RepetitionMandatoryWithSeparator\");\n }\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n};\nvar Repetition = class extends AbstractProduction {\n static {\n __name(this, \"Repetition\");\n }\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n};\nvar RepetitionWithSeparator = class extends AbstractProduction {\n static {\n __name(this, \"RepetitionWithSeparator\");\n }\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n};\nvar Alternation = class extends AbstractProduction {\n static {\n __name(this, \"Alternation\");\n }\n get definition() {\n return this._definition;\n }\n set definition(value) {\n this._definition = value;\n }\n constructor(options) {\n super(options.definition);\n this.idx = 1;\n this.ignoreAmbiguities = false;\n this.hasPredicates = false;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n};\nvar Terminal = class {\n static {\n __name(this, \"Terminal\");\n }\n constructor(options) {\n this.idx = 1;\n assign_default(this, pickBy_default(options, (v) => v !== void 0));\n }\n accept(visitor2) {\n visitor2.visit(this);\n }\n};\nfunction serializeGrammar(topRules) {\n return map_default(topRules, serializeProduction);\n}\n__name(serializeGrammar, \"serializeGrammar\");\nfunction serializeProduction(node) {\n function convertDefinition(definition) {\n return map_default(definition, serializeProduction);\n }\n __name(convertDefinition, \"convertDefinition\");\n if (node instanceof NonTerminal) {\n const serializedNonTerminal = {\n type: \"NonTerminal\",\n name: node.nonTerminalName,\n idx: node.idx\n };\n if (isString_default(node.label)) {\n serializedNonTerminal.label = node.label;\n }\n return serializedNonTerminal;\n } else if (node instanceof Alternative) {\n return {\n type: \"Alternative\",\n definition: convertDefinition(node.definition)\n };\n } else if (node instanceof Option) {\n return {\n type: \"Option\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n } else if (node instanceof RepetitionMandatory) {\n return {\n type: \"RepetitionMandatory\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n } else if (node instanceof RepetitionMandatoryWithSeparator) {\n return {\n type: \"RepetitionMandatoryWithSeparator\",\n idx: node.idx,\n separator: serializeProduction(new Terminal({ terminalType: node.separator })),\n definition: convertDefinition(node.definition)\n };\n } else if (node instanceof RepetitionWithSeparator) {\n return {\n type: \"RepetitionWithSeparator\",\n idx: node.idx,\n separator: serializeProduction(new Terminal({ terminalType: node.separator })),\n definition: convertDefinition(node.definition)\n };\n } else if (node instanceof Repetition) {\n return {\n type: \"Repetition\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n } else if (node instanceof Alternation) {\n return {\n type: \"Alternation\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n } else if (node instanceof Terminal) {\n const serializedTerminal = {\n type: \"Terminal\",\n name: node.terminalType.name,\n label: tokenLabel(node.terminalType),\n idx: node.idx\n };\n if (isString_default(node.label)) {\n serializedTerminal.terminalLabel = node.label;\n }\n const pattern = node.terminalType.PATTERN;\n if (node.terminalType.PATTERN) {\n serializedTerminal.pattern = isRegExp_default(pattern) ? pattern.source : pattern;\n }\n return serializedTerminal;\n } else if (node instanceof Rule) {\n return {\n type: \"Rule\",\n name: node.name,\n orgText: node.orgText,\n definition: convertDefinition(node.definition)\n };\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n__name(serializeProduction, \"serializeProduction\");\n\n// ../../node_modules/.pnpm/@chevrotain+gast@11.1.1/node_modules/@chevrotain/gast/lib/src/visitor.js\nvar GAstVisitor = class {\n static {\n __name(this, \"GAstVisitor\");\n }\n visit(node) {\n const nodeAny = node;\n switch (nodeAny.constructor) {\n case NonTerminal:\n return this.visitNonTerminal(nodeAny);\n case Alternative:\n return this.visitAlternative(nodeAny);\n case Option:\n return this.visitOption(nodeAny);\n case RepetitionMandatory:\n return this.visitRepetitionMandatory(nodeAny);\n case RepetitionMandatoryWithSeparator:\n return this.visitRepetitionMandatoryWithSeparator(nodeAny);\n case RepetitionWithSeparator:\n return this.visitRepetitionWithSeparator(nodeAny);\n case Repetition:\n return this.visitRepetition(nodeAny);\n case Alternation:\n return this.visitAlternation(nodeAny);\n case Terminal:\n return this.visitTerminal(nodeAny);\n case Rule:\n return this.visitRule(nodeAny);\n /* c8 ignore next 2 */\n default:\n throw Error(\"non exhaustive match\");\n }\n }\n /* c8 ignore next */\n visitNonTerminal(node) {\n }\n /* c8 ignore next */\n visitAlternative(node) {\n }\n /* c8 ignore next */\n visitOption(node) {\n }\n /* c8 ignore next */\n visitRepetition(node) {\n }\n /* c8 ignore next */\n visitRepetitionMandatory(node) {\n }\n /* c8 ignore next 3 */\n visitRepetitionMandatoryWithSeparator(node) {\n }\n /* c8 ignore next */\n visitRepetitionWithSeparator(node) {\n }\n /* c8 ignore next */\n visitAlternation(node) {\n }\n /* c8 ignore next */\n visitTerminal(node) {\n }\n /* c8 ignore next */\n visitRule(node) {\n }\n};\n\n// ../../node_modules/.pnpm/@chevrotain+gast@11.1.1/node_modules/@chevrotain/gast/lib/src/helpers.js\nfunction isSequenceProd(prod) {\n return prod instanceof Alternative || prod instanceof Option || prod instanceof Repetition || prod instanceof RepetitionMandatory || prod instanceof RepetitionMandatoryWithSeparator || prod instanceof RepetitionWithSeparator || prod instanceof Terminal || prod instanceof Rule;\n}\n__name(isSequenceProd, \"isSequenceProd\");\nfunction isOptionalProd(prod, alreadyVisited = []) {\n const isDirectlyOptional = prod instanceof Option || prod instanceof Repetition || prod instanceof RepetitionWithSeparator;\n if (isDirectlyOptional) {\n return true;\n }\n if (prod instanceof Alternation) {\n return some_default(prod.definition, (subProd) => {\n return isOptionalProd(subProd, alreadyVisited);\n });\n } else if (prod instanceof NonTerminal && includes_default(alreadyVisited, prod)) {\n return false;\n } else if (prod instanceof AbstractProduction) {\n if (prod instanceof NonTerminal) {\n alreadyVisited.push(prod);\n }\n return every_default(prod.definition, (subProd) => {\n return isOptionalProd(subProd, alreadyVisited);\n });\n } else {\n return false;\n }\n}\n__name(isOptionalProd, \"isOptionalProd\");\nfunction isBranchingProd(prod) {\n return prod instanceof Alternation;\n}\n__name(isBranchingProd, \"isBranchingProd\");\nfunction getProductionDslName(prod) {\n if (prod instanceof NonTerminal) {\n return \"SUBRULE\";\n } else if (prod instanceof Option) {\n return \"OPTION\";\n } else if (prod instanceof Alternation) {\n return \"OR\";\n } else if (prod instanceof RepetitionMandatory) {\n return \"AT_LEAST_ONE\";\n } else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return \"AT_LEAST_ONE_SEP\";\n } else if (prod instanceof RepetitionWithSeparator) {\n return \"MANY_SEP\";\n } else if (prod instanceof Repetition) {\n return \"MANY\";\n } else if (prod instanceof Terminal) {\n return \"CONSUME\";\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n__name(getProductionDslName, \"getProductionDslName\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/rest.js\nvar RestWalker = class {\n static {\n __name(this, \"RestWalker\");\n }\n walk(prod, prevRest = []) {\n forEach_default(prod.definition, (subProd, index) => {\n const currRest = drop_default(prod.definition, index + 1);\n if (subProd instanceof NonTerminal) {\n this.walkProdRef(subProd, currRest, prevRest);\n } else if (subProd instanceof Terminal) {\n this.walkTerminal(subProd, currRest, prevRest);\n } else if (subProd instanceof Alternative) {\n this.walkFlat(subProd, currRest, prevRest);\n } else if (subProd instanceof Option) {\n this.walkOption(subProd, currRest, prevRest);\n } else if (subProd instanceof RepetitionMandatory) {\n this.walkAtLeastOne(subProd, currRest, prevRest);\n } else if (subProd instanceof RepetitionMandatoryWithSeparator) {\n this.walkAtLeastOneSep(subProd, currRest, prevRest);\n } else if (subProd instanceof RepetitionWithSeparator) {\n this.walkManySep(subProd, currRest, prevRest);\n } else if (subProd instanceof Repetition) {\n this.walkMany(subProd, currRest, prevRest);\n } else if (subProd instanceof Alternation) {\n this.walkOr(subProd, currRest, prevRest);\n } else {\n throw Error(\"non exhaustive match\");\n }\n });\n }\n walkTerminal(terminal, currRest, prevRest) {\n }\n walkProdRef(refProd, currRest, prevRest) {\n }\n walkFlat(flatProd, currRest, prevRest) {\n const fullOrRest = currRest.concat(prevRest);\n this.walk(flatProd, fullOrRest);\n }\n walkOption(optionProd, currRest, prevRest) {\n const fullOrRest = currRest.concat(prevRest);\n this.walk(optionProd, fullOrRest);\n }\n walkAtLeastOne(atLeastOneProd, currRest, prevRest) {\n const fullAtLeastOneRest = [\n new Option({ definition: atLeastOneProd.definition })\n ].concat(currRest, prevRest);\n this.walk(atLeastOneProd, fullAtLeastOneRest);\n }\n walkAtLeastOneSep(atLeastOneSepProd, currRest, prevRest) {\n const fullAtLeastOneSepRest = restForRepetitionWithSeparator(atLeastOneSepProd, currRest, prevRest);\n this.walk(atLeastOneSepProd, fullAtLeastOneSepRest);\n }\n walkMany(manyProd, currRest, prevRest) {\n const fullManyRest = [\n new Option({ definition: manyProd.definition })\n ].concat(currRest, prevRest);\n this.walk(manyProd, fullManyRest);\n }\n walkManySep(manySepProd, currRest, prevRest) {\n const fullManySepRest = restForRepetitionWithSeparator(manySepProd, currRest, prevRest);\n this.walk(manySepProd, fullManySepRest);\n }\n walkOr(orProd, currRest, prevRest) {\n const fullOrRest = currRest.concat(prevRest);\n forEach_default(orProd.definition, (alt) => {\n const prodWrapper = new Alternative({ definition: [alt] });\n this.walk(prodWrapper, fullOrRest);\n });\n }\n};\nfunction restForRepetitionWithSeparator(repSepProd, currRest, prevRest) {\n const repSepRest = [\n new Option({\n definition: [\n new Terminal({ terminalType: repSepProd.separator })\n ].concat(repSepProd.definition)\n })\n ];\n const fullRepSepRest = repSepRest.concat(currRest, prevRest);\n return fullRepSepRest;\n}\n__name(restForRepetitionWithSeparator, \"restForRepetitionWithSeparator\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/first.js\nfunction first(prod) {\n if (prod instanceof NonTerminal) {\n return first(prod.referencedRule);\n } else if (prod instanceof Terminal) {\n return firstForTerminal(prod);\n } else if (isSequenceProd(prod)) {\n return firstForSequence(prod);\n } else if (isBranchingProd(prod)) {\n return firstForBranching(prod);\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n__name(first, \"first\");\nfunction firstForSequence(prod) {\n let firstSet = [];\n const seq = prod.definition;\n let nextSubProdIdx = 0;\n let hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n let currSubProd;\n let isLastInnerProdOptional = true;\n while (hasInnerProdsRemaining && isLastInnerProdOptional) {\n currSubProd = seq[nextSubProdIdx];\n isLastInnerProdOptional = isOptionalProd(currSubProd);\n firstSet = firstSet.concat(first(currSubProd));\n nextSubProdIdx = nextSubProdIdx + 1;\n hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n }\n return uniq_default(firstSet);\n}\n__name(firstForSequence, \"firstForSequence\");\nfunction firstForBranching(prod) {\n const allAlternativesFirsts = map_default(prod.definition, (innerProd) => {\n return first(innerProd);\n });\n return uniq_default(flatten_default(allAlternativesFirsts));\n}\n__name(firstForBranching, \"firstForBranching\");\nfunction firstForTerminal(terminal) {\n return [terminal.terminalType];\n}\n__name(firstForTerminal, \"firstForTerminal\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/constants.js\nvar IN = \"_~IN~_\";\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/follow.js\nvar ResyncFollowsWalker = class extends RestWalker {\n static {\n __name(this, \"ResyncFollowsWalker\");\n }\n constructor(topProd) {\n super();\n this.topProd = topProd;\n this.follows = {};\n }\n startWalking() {\n this.walk(this.topProd);\n return this.follows;\n }\n walkTerminal(terminal, currRest, prevRest) {\n }\n walkProdRef(refProd, currRest, prevRest) {\n const followName = buildBetweenProdsFollowPrefix(refProd.referencedRule, refProd.idx) + this.topProd.name;\n const fullRest = currRest.concat(prevRest);\n const restProd = new Alternative({ definition: fullRest });\n const t_in_topProd_follows = first(restProd);\n this.follows[followName] = t_in_topProd_follows;\n }\n};\nfunction computeAllProdsFollows(topProductions) {\n const reSyncFollows = {};\n forEach_default(topProductions, (topProd) => {\n const currRefsFollow = new ResyncFollowsWalker(topProd).startWalking();\n assign_default(reSyncFollows, currRefsFollow);\n });\n return reSyncFollows;\n}\n__name(computeAllProdsFollows, \"computeAllProdsFollows\");\nfunction buildBetweenProdsFollowPrefix(inner, occurenceInParent) {\n return inner.name + occurenceInParent + IN;\n}\n__name(buildBetweenProdsFollowPrefix, \"buildBetweenProdsFollowPrefix\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/scan/reg_exp_parser.js\nvar regExpAstCache = {};\nvar regExpParser = new RegExpParser();\nfunction getRegExpAst(regExp) {\n const regExpStr = regExp.toString();\n if (regExpAstCache.hasOwnProperty(regExpStr)) {\n return regExpAstCache[regExpStr];\n } else {\n const regExpAst = regExpParser.pattern(regExpStr);\n regExpAstCache[regExpStr] = regExpAst;\n return regExpAst;\n }\n}\n__name(getRegExpAst, \"getRegExpAst\");\nfunction clearRegExpParserCache() {\n regExpAstCache = {};\n}\n__name(clearRegExpParserCache, \"clearRegExpParserCache\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/scan/reg_exp.js\nvar complementErrorMessage = \"Complement Sets are not supported for first char optimization\";\nvar failedOptimizationPrefixMsg = 'Unable to use \"first char\" lexer optimizations:\\n';\nfunction getOptimizedStartCodesIndices(regExp, ensureOptimizations = false) {\n try {\n const ast = getRegExpAst(regExp);\n const firstChars = firstCharOptimizedIndices(ast.value, {}, ast.flags.ignoreCase);\n return firstChars;\n } catch (e) {\n if (e.message === complementErrorMessage) {\n if (ensureOptimizations) {\n PRINT_WARNING(`${failedOptimizationPrefixMsg}\tUnable to optimize: < ${regExp.toString()} >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);\n }\n } else {\n let msgSuffix = \"\";\n if (ensureOptimizations) {\n msgSuffix = \"\\n\tThis will disable the lexer's first char optimizations.\\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.\";\n }\n PRINT_ERROR(`${failedOptimizationPrefixMsg}\n\tFailed parsing: < ${regExp.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues` + msgSuffix);\n }\n }\n return [];\n}\n__name(getOptimizedStartCodesIndices, \"getOptimizedStartCodesIndices\");\nfunction firstCharOptimizedIndices(ast, result, ignoreCase) {\n switch (ast.type) {\n case \"Disjunction\":\n for (let i = 0; i < ast.value.length; i++) {\n firstCharOptimizedIndices(ast.value[i], result, ignoreCase);\n }\n break;\n case \"Alternative\":\n const terms = ast.value;\n for (let i = 0; i < terms.length; i++) {\n const term = terms[i];\n switch (term.type) {\n case \"EndAnchor\":\n // A group back reference cannot affect potential starting char.\n // because if a back reference is the first production than automatically\n // the group being referenced has had to come BEFORE so its codes have already been added\n case \"GroupBackReference\":\n // assertions do not affect potential starting codes\n case \"Lookahead\":\n case \"NegativeLookahead\":\n case \"Lookbehind\":\n case \"NegativeLookbehind\":\n case \"StartAnchor\":\n case \"WordBoundary\":\n case \"NonWordBoundary\":\n continue;\n }\n const atom2 = term;\n switch (atom2.type) {\n case \"Character\":\n addOptimizedIdxToResult(atom2.value, result, ignoreCase);\n break;\n case \"Set\":\n if (atom2.complement === true) {\n throw Error(complementErrorMessage);\n }\n forEach_default(atom2.value, (code) => {\n if (typeof code === \"number\") {\n addOptimizedIdxToResult(code, result, ignoreCase);\n } else {\n const range = code;\n if (ignoreCase === true) {\n for (let rangeCode = range.from; rangeCode <= range.to; rangeCode++) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n } else {\n for (let rangeCode = range.from; rangeCode <= range.to && rangeCode < minOptimizationVal; rangeCode++) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n if (range.to >= minOptimizationVal) {\n const minUnOptVal = range.from >= minOptimizationVal ? range.from : minOptimizationVal;\n const maxUnOptVal = range.to;\n const minOptIdx = charCodeToOptimizedIndex(minUnOptVal);\n const maxOptIdx = charCodeToOptimizedIndex(maxUnOptVal);\n for (let currOptIdx = minOptIdx; currOptIdx <= maxOptIdx; currOptIdx++) {\n result[currOptIdx] = currOptIdx;\n }\n }\n }\n }\n });\n break;\n case \"Group\":\n firstCharOptimizedIndices(atom2.value, result, ignoreCase);\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"Non Exhaustive Match\");\n }\n const isOptionalQuantifier = atom2.quantifier !== void 0 && atom2.quantifier.atLeast === 0;\n if (\n // A group may be optional due to empty contents /(?:)/\n // or if everything inside it is optional /((a)?)/\n atom2.type === \"Group\" && isWholeOptional(atom2) === false || // If this term is not a group it may only be optional if it has an optional quantifier\n atom2.type !== \"Group\" && isOptionalQuantifier === false\n ) {\n break;\n }\n }\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"non exhaustive match!\");\n }\n return values_default(result);\n}\n__name(firstCharOptimizedIndices, \"firstCharOptimizedIndices\");\nfunction addOptimizedIdxToResult(code, result, ignoreCase) {\n const optimizedCharIdx = charCodeToOptimizedIndex(code);\n result[optimizedCharIdx] = optimizedCharIdx;\n if (ignoreCase === true) {\n handleIgnoreCase(code, result);\n }\n}\n__name(addOptimizedIdxToResult, \"addOptimizedIdxToResult\");\nfunction handleIgnoreCase(code, result) {\n const char = String.fromCharCode(code);\n const upperChar = char.toUpperCase();\n if (upperChar !== char) {\n const optimizedCharIdx = charCodeToOptimizedIndex(upperChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n } else {\n const lowerChar = char.toLowerCase();\n if (lowerChar !== char) {\n const optimizedCharIdx = charCodeToOptimizedIndex(lowerChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n }\n }\n}\n__name(handleIgnoreCase, \"handleIgnoreCase\");\nfunction findCode(setNode, targetCharCodes) {\n return find_default(setNode.value, (codeOrRange) => {\n if (typeof codeOrRange === \"number\") {\n return includes_default(targetCharCodes, codeOrRange);\n } else {\n const range = codeOrRange;\n return find_default(targetCharCodes, (targetCode) => range.from <= targetCode && targetCode <= range.to) !== void 0;\n }\n });\n}\n__name(findCode, \"findCode\");\nfunction isWholeOptional(ast) {\n const quantifier = ast.quantifier;\n if (quantifier && quantifier.atLeast === 0) {\n return true;\n }\n if (!ast.value) {\n return false;\n }\n return isArray_default(ast.value) ? every_default(ast.value, isWholeOptional) : isWholeOptional(ast.value);\n}\n__name(isWholeOptional, \"isWholeOptional\");\nvar CharCodeFinder = class extends BaseRegExpVisitor {\n static {\n __name(this, \"CharCodeFinder\");\n }\n constructor(targetCharCodes) {\n super();\n this.targetCharCodes = targetCharCodes;\n this.found = false;\n }\n visitChildren(node) {\n if (this.found === true) {\n return;\n }\n switch (node.type) {\n case \"Lookahead\":\n this.visitLookahead(node);\n return;\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node);\n return;\n case \"Lookbehind\":\n this.visitLookbehind(node);\n return;\n case \"NegativeLookbehind\":\n this.visitNegativeLookbehind(node);\n return;\n }\n super.visitChildren(node);\n }\n visitCharacter(node) {\n if (includes_default(this.targetCharCodes, node.value)) {\n this.found = true;\n }\n }\n visitSet(node) {\n if (node.complement) {\n if (findCode(node, this.targetCharCodes) === void 0) {\n this.found = true;\n }\n } else {\n if (findCode(node, this.targetCharCodes) !== void 0) {\n this.found = true;\n }\n }\n }\n};\nfunction canMatchCharCode(charCodes, pattern) {\n if (pattern instanceof RegExp) {\n const ast = getRegExpAst(pattern);\n const charCodeFinder = new CharCodeFinder(charCodes);\n charCodeFinder.visit(ast);\n return charCodeFinder.found;\n } else {\n return find_default(pattern, (char) => {\n return includes_default(charCodes, char.charCodeAt(0));\n }) !== void 0;\n }\n}\n__name(canMatchCharCode, \"canMatchCharCode\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/scan/lexer.js\nvar PATTERN = \"PATTERN\";\nvar DEFAULT_MODE = \"defaultMode\";\nvar MODES = \"modes\";\nvar SUPPORT_STICKY = typeof new RegExp(\"(?:)\").sticky === \"boolean\";\nfunction analyzeTokenTypes(tokenTypes, options) {\n options = defaults_default(options, {\n useSticky: SUPPORT_STICKY,\n debug: false,\n safeMode: false,\n positionTracking: \"full\",\n lineTerminatorCharacters: [\"\\r\", \"\\n\"],\n tracer: /* @__PURE__ */ __name((msg, action) => action(), \"tracer\")\n });\n const tracer = options.tracer;\n tracer(\"initCharCodeToOptimizedIndexMap\", () => {\n initCharCodeToOptimizedIndexMap();\n });\n let onlyRelevantTypes;\n tracer(\"Reject Lexer.NA\", () => {\n onlyRelevantTypes = reject_default(tokenTypes, (currType) => {\n return currType[PATTERN] === Lexer.NA;\n });\n });\n let hasCustom = false;\n let allTransformedPatterns;\n tracer(\"Transform Patterns\", () => {\n hasCustom = false;\n allTransformedPatterns = map_default(onlyRelevantTypes, (currType) => {\n const currPattern = currType[PATTERN];\n if (isRegExp_default(currPattern)) {\n const regExpSource = currPattern.source;\n if (regExpSource.length === 1 && // only these regExp meta characters which can appear in a length one regExp\n regExpSource !== \"^\" && regExpSource !== \"$\" && regExpSource !== \".\" && !currPattern.ignoreCase) {\n return regExpSource;\n } else if (regExpSource.length === 2 && regExpSource[0] === \"\\\\\" && // not a meta character\n !includes_default([\n \"d\",\n \"D\",\n \"s\",\n \"S\",\n \"t\",\n \"r\",\n \"n\",\n \"t\",\n \"0\",\n \"c\",\n \"b\",\n \"B\",\n \"f\",\n \"v\",\n \"w\",\n \"W\"\n ], regExpSource[1])) {\n return regExpSource[1];\n } else {\n return options.useSticky ? addStickyFlag(currPattern) : addStartOfInput(currPattern);\n }\n } else if (isFunction_default(currPattern)) {\n hasCustom = true;\n return { exec: currPattern };\n } else if (typeof currPattern === \"object\") {\n hasCustom = true;\n return currPattern;\n } else if (typeof currPattern === \"string\") {\n if (currPattern.length === 1) {\n return currPattern;\n } else {\n const escapedRegExpString = currPattern.replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\");\n const wrappedRegExp = new RegExp(escapedRegExpString);\n return options.useSticky ? addStickyFlag(wrappedRegExp) : addStartOfInput(wrappedRegExp);\n }\n } else {\n throw Error(\"non exhaustive match\");\n }\n });\n });\n let patternIdxToType;\n let patternIdxToGroup;\n let patternIdxToLongerAltIdxArr;\n let patternIdxToPushMode;\n let patternIdxToPopMode;\n tracer(\"misc mapping\", () => {\n patternIdxToType = map_default(onlyRelevantTypes, (currType) => currType.tokenTypeIdx);\n patternIdxToGroup = map_default(onlyRelevantTypes, (clazz) => {\n const groupName = clazz.GROUP;\n if (groupName === Lexer.SKIPPED) {\n return void 0;\n } else if (isString_default(groupName)) {\n return groupName;\n } else if (isUndefined_default(groupName)) {\n return false;\n } else {\n throw Error(\"non exhaustive match\");\n }\n });\n patternIdxToLongerAltIdxArr = map_default(onlyRelevantTypes, (clazz) => {\n const longerAltType = clazz.LONGER_ALT;\n if (longerAltType) {\n const longerAltIdxArr = isArray_default(longerAltType) ? map_default(longerAltType, (type) => indexOf_default(onlyRelevantTypes, type)) : [indexOf_default(onlyRelevantTypes, longerAltType)];\n return longerAltIdxArr;\n }\n });\n patternIdxToPushMode = map_default(onlyRelevantTypes, (clazz) => clazz.PUSH_MODE);\n patternIdxToPopMode = map_default(onlyRelevantTypes, (clazz) => has_default(clazz, \"POP_MODE\"));\n });\n let patternIdxToCanLineTerminator;\n tracer(\"Line Terminator Handling\", () => {\n const lineTerminatorCharCodes = getCharCodes(options.lineTerminatorCharacters);\n patternIdxToCanLineTerminator = map_default(onlyRelevantTypes, (tokType) => false);\n if (options.positionTracking !== \"onlyOffset\") {\n patternIdxToCanLineTerminator = map_default(onlyRelevantTypes, (tokType) => {\n if (has_default(tokType, \"LINE_BREAKS\")) {\n return !!tokType.LINE_BREAKS;\n } else {\n return checkLineBreaksIssues(tokType, lineTerminatorCharCodes) === false && canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN);\n }\n });\n }\n });\n let patternIdxToIsCustom;\n let patternIdxToShort;\n let emptyGroups;\n let patternIdxToConfig;\n tracer(\"Misc Mapping #2\", () => {\n patternIdxToIsCustom = map_default(onlyRelevantTypes, isCustomPattern);\n patternIdxToShort = map_default(allTransformedPatterns, isShortPattern);\n emptyGroups = reduce_default(onlyRelevantTypes, (acc, clazz) => {\n const groupName = clazz.GROUP;\n if (isString_default(groupName) && !(groupName === Lexer.SKIPPED)) {\n acc[groupName] = [];\n }\n return acc;\n }, {});\n patternIdxToConfig = map_default(allTransformedPatterns, (x, idx) => {\n return {\n pattern: allTransformedPatterns[idx],\n longerAlt: patternIdxToLongerAltIdxArr[idx],\n canLineTerminator: patternIdxToCanLineTerminator[idx],\n isCustom: patternIdxToIsCustom[idx],\n short: patternIdxToShort[idx],\n group: patternIdxToGroup[idx],\n push: patternIdxToPushMode[idx],\n pop: patternIdxToPopMode[idx],\n tokenTypeIdx: patternIdxToType[idx],\n tokenType: onlyRelevantTypes[idx]\n };\n });\n });\n let canBeOptimized = true;\n let charCodeToPatternIdxToConfig = [];\n if (!options.safeMode) {\n tracer(\"First Char Optimization\", () => {\n charCodeToPatternIdxToConfig = reduce_default(onlyRelevantTypes, (result, currTokType, idx) => {\n if (typeof currTokType.PATTERN === \"string\") {\n const charCode = currTokType.PATTERN.charCodeAt(0);\n const optimizedIdx = charCodeToOptimizedIndex(charCode);\n addToMapOfArrays(result, optimizedIdx, patternIdxToConfig[idx]);\n } else if (isArray_default(currTokType.START_CHARS_HINT)) {\n let lastOptimizedIdx;\n forEach_default(currTokType.START_CHARS_HINT, (charOrInt) => {\n const charCode = typeof charOrInt === \"string\" ? charOrInt.charCodeAt(0) : charOrInt;\n const currOptimizedIdx = charCodeToOptimizedIndex(charCode);\n if (lastOptimizedIdx !== currOptimizedIdx) {\n lastOptimizedIdx = currOptimizedIdx;\n addToMapOfArrays(result, currOptimizedIdx, patternIdxToConfig[idx]);\n }\n });\n } else if (isRegExp_default(currTokType.PATTERN)) {\n if (currTokType.PATTERN.unicode) {\n canBeOptimized = false;\n if (options.ensureOptimizations) {\n PRINT_ERROR(`${failedOptimizationPrefixMsg}\tUnable to analyze < ${currTokType.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);\n }\n } else {\n const optimizedCodes = getOptimizedStartCodesIndices(currTokType.PATTERN, options.ensureOptimizations);\n if (isEmpty_default(optimizedCodes)) {\n canBeOptimized = false;\n }\n forEach_default(optimizedCodes, (code) => {\n addToMapOfArrays(result, code, patternIdxToConfig[idx]);\n });\n }\n } else {\n if (options.ensureOptimizations) {\n PRINT_ERROR(`${failedOptimizationPrefixMsg}\tTokenType: <${currTokType.name}> is using a custom token pattern without providing parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`);\n }\n canBeOptimized = false;\n }\n return result;\n }, []);\n });\n }\n return {\n emptyGroups,\n patternIdxToConfig,\n charCodeToPatternIdxToConfig,\n hasCustom,\n canBeOptimized\n };\n}\n__name(analyzeTokenTypes, \"analyzeTokenTypes\");\nfunction validatePatterns(tokenTypes, validModesNames) {\n let errors = [];\n const missingResult = findMissingPatterns(tokenTypes);\n errors = errors.concat(missingResult.errors);\n const invalidResult = findInvalidPatterns(missingResult.valid);\n const validTokenTypes = invalidResult.valid;\n errors = errors.concat(invalidResult.errors);\n errors = errors.concat(validateRegExpPattern(validTokenTypes));\n errors = errors.concat(findInvalidGroupType(validTokenTypes));\n errors = errors.concat(findModesThatDoNotExist(validTokenTypes, validModesNames));\n errors = errors.concat(findUnreachablePatterns(validTokenTypes));\n return errors;\n}\n__name(validatePatterns, \"validatePatterns\");\nfunction validateRegExpPattern(tokenTypes) {\n let errors = [];\n const withRegExpPatterns = filter_default(tokenTypes, (currTokType) => isRegExp_default(currTokType[PATTERN]));\n errors = errors.concat(findEndOfInputAnchor(withRegExpPatterns));\n errors = errors.concat(findStartOfInputAnchor(withRegExpPatterns));\n errors = errors.concat(findUnsupportedFlags(withRegExpPatterns));\n errors = errors.concat(findDuplicatePatterns(withRegExpPatterns));\n errors = errors.concat(findEmptyMatchRegExps(withRegExpPatterns));\n return errors;\n}\n__name(validateRegExpPattern, \"validateRegExpPattern\");\nfunction findMissingPatterns(tokenTypes) {\n const tokenTypesWithMissingPattern = filter_default(tokenTypes, (currType) => {\n return !has_default(currType, PATTERN);\n });\n const errors = map_default(tokenTypesWithMissingPattern, (currType) => {\n return {\n message: \"Token Type: ->\" + currType.name + \"<- missing static 'PATTERN' property\",\n type: LexerDefinitionErrorType.MISSING_PATTERN,\n tokenTypes: [currType]\n };\n });\n const valid = difference_default(tokenTypes, tokenTypesWithMissingPattern);\n return { errors, valid };\n}\n__name(findMissingPatterns, \"findMissingPatterns\");\nfunction findInvalidPatterns(tokenTypes) {\n const tokenTypesWithInvalidPattern = filter_default(tokenTypes, (currType) => {\n const pattern = currType[PATTERN];\n return !isRegExp_default(pattern) && !isFunction_default(pattern) && !has_default(pattern, \"exec\") && !isString_default(pattern);\n });\n const errors = map_default(tokenTypesWithInvalidPattern, (currType) => {\n return {\n message: \"Token Type: ->\" + currType.name + \"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.\",\n type: LexerDefinitionErrorType.INVALID_PATTERN,\n tokenTypes: [currType]\n };\n });\n const valid = difference_default(tokenTypes, tokenTypesWithInvalidPattern);\n return { errors, valid };\n}\n__name(findInvalidPatterns, \"findInvalidPatterns\");\nvar end_of_input = /[^\\\\][$]/;\nfunction findEndOfInputAnchor(tokenTypes) {\n class EndAnchorFinder extends BaseRegExpVisitor {\n static {\n __name(this, \"EndAnchorFinder\");\n }\n constructor() {\n super(...arguments);\n this.found = false;\n }\n visitEndAnchor(node) {\n this.found = true;\n }\n }\n const invalidRegex = filter_default(tokenTypes, (currType) => {\n const pattern = currType.PATTERN;\n try {\n const regexpAst = getRegExpAst(pattern);\n const endAnchorVisitor = new EndAnchorFinder();\n endAnchorVisitor.visit(regexpAst);\n return endAnchorVisitor.found;\n } catch (e) {\n return end_of_input.test(pattern.source);\n }\n });\n const errors = map_default(invalidRegex, (currType) => {\n return {\n message: \"Unexpected RegExp Anchor Error:\\n\tToken Type: ->\" + currType.name + \"<- static 'PATTERN' cannot contain end of input anchor '$'\\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.\",\n type: LexerDefinitionErrorType.EOI_ANCHOR_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\n__name(findEndOfInputAnchor, \"findEndOfInputAnchor\");\nfunction findEmptyMatchRegExps(tokenTypes) {\n const matchesEmptyString = filter_default(tokenTypes, (currType) => {\n const pattern = currType.PATTERN;\n return pattern.test(\"\");\n });\n const errors = map_default(matchesEmptyString, (currType) => {\n return {\n message: \"Token Type: ->\" + currType.name + \"<- static 'PATTERN' must not match an empty string\",\n type: LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\n__name(findEmptyMatchRegExps, \"findEmptyMatchRegExps\");\nvar start_of_input = /[^\\\\[][\\^]|^\\^/;\nfunction findStartOfInputAnchor(tokenTypes) {\n class StartAnchorFinder extends BaseRegExpVisitor {\n static {\n __name(this, \"StartAnchorFinder\");\n }\n constructor() {\n super(...arguments);\n this.found = false;\n }\n visitStartAnchor(node) {\n this.found = true;\n }\n }\n const invalidRegex = filter_default(tokenTypes, (currType) => {\n const pattern = currType.PATTERN;\n try {\n const regexpAst = getRegExpAst(pattern);\n const startAnchorVisitor = new StartAnchorFinder();\n startAnchorVisitor.visit(regexpAst);\n return startAnchorVisitor.found;\n } catch (e) {\n return start_of_input.test(pattern.source);\n }\n });\n const errors = map_default(invalidRegex, (currType) => {\n return {\n message: \"Unexpected RegExp Anchor Error:\\n\tToken Type: ->\" + currType.name + \"<- static 'PATTERN' cannot contain start of input anchor '^'\\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.\",\n type: LexerDefinitionErrorType.SOI_ANCHOR_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\n__name(findStartOfInputAnchor, \"findStartOfInputAnchor\");\nfunction findUnsupportedFlags(tokenTypes) {\n const invalidFlags = filter_default(tokenTypes, (currType) => {\n const pattern = currType[PATTERN];\n return pattern instanceof RegExp && (pattern.multiline || pattern.global);\n });\n const errors = map_default(invalidFlags, (currType) => {\n return {\n message: \"Token Type: ->\" + currType.name + \"<- static 'PATTERN' may NOT contain global('g') or multiline('m')\",\n type: LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\n__name(findUnsupportedFlags, \"findUnsupportedFlags\");\nfunction findDuplicatePatterns(tokenTypes) {\n const found = [];\n let identicalPatterns = map_default(tokenTypes, (outerType) => {\n return reduce_default(tokenTypes, (result, innerType) => {\n if (outerType.PATTERN.source === innerType.PATTERN.source && !includes_default(found, innerType) && innerType.PATTERN !== Lexer.NA) {\n found.push(innerType);\n result.push(innerType);\n return result;\n }\n return result;\n }, []);\n });\n identicalPatterns = compact_default(identicalPatterns);\n const duplicatePatterns = filter_default(identicalPatterns, (currIdenticalSet) => {\n return currIdenticalSet.length > 1;\n });\n const errors = map_default(duplicatePatterns, (setOfIdentical) => {\n const tokenTypeNames = map_default(setOfIdentical, (currType) => {\n return currType.name;\n });\n const dupPatternSrc = head_default(setOfIdentical).PATTERN;\n return {\n message: `The same RegExp pattern ->${dupPatternSrc}<-has been used in all of the following Token Types: ${tokenTypeNames.join(\", \")} <-`,\n type: LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,\n tokenTypes: setOfIdentical\n };\n });\n return errors;\n}\n__name(findDuplicatePatterns, \"findDuplicatePatterns\");\nfunction findInvalidGroupType(tokenTypes) {\n const invalidTypes = filter_default(tokenTypes, (clazz) => {\n if (!has_default(clazz, \"GROUP\")) {\n return false;\n }\n const group = clazz.GROUP;\n return group !== Lexer.SKIPPED && group !== Lexer.NA && !isString_default(group);\n });\n const errors = map_default(invalidTypes, (currType) => {\n return {\n message: \"Token Type: ->\" + currType.name + \"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String\",\n type: LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\n__name(findInvalidGroupType, \"findInvalidGroupType\");\nfunction findModesThatDoNotExist(tokenTypes, validModes) {\n const invalidModes = filter_default(tokenTypes, (clazz) => {\n return clazz.PUSH_MODE !== void 0 && !includes_default(validModes, clazz.PUSH_MODE);\n });\n const errors = map_default(invalidModes, (tokType) => {\n const msg = `Token Type: ->${tokType.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${tokType.PUSH_MODE}<-which does not exist`;\n return {\n message: msg,\n type: LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,\n tokenTypes: [tokType]\n };\n });\n return errors;\n}\n__name(findModesThatDoNotExist, \"findModesThatDoNotExist\");\nfunction findUnreachablePatterns(tokenTypes) {\n const errors = [];\n const canBeTested = reduce_default(tokenTypes, (result, tokType, idx) => {\n const pattern = tokType.PATTERN;\n if (pattern === Lexer.NA) {\n return result;\n }\n if (isString_default(pattern)) {\n result.push({ str: pattern, idx, tokenType: tokType });\n } else if (isRegExp_default(pattern) && noMetaChar(pattern)) {\n result.push({ str: pattern.source, idx, tokenType: tokType });\n }\n return result;\n }, []);\n forEach_default(tokenTypes, (aTokType, aIdx) => {\n forEach_default(canBeTested, ({ str: bStr, idx: bIdx, tokenType: bTokType }) => {\n if (aIdx < bIdx && tryToMatchStrToPattern(bStr, aTokType.PATTERN)) {\n const msg = `Token: ->${bTokType.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${aTokType.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;\n errors.push({\n message: msg,\n type: LexerDefinitionErrorType.UNREACHABLE_PATTERN,\n tokenTypes: [aTokType, bTokType]\n });\n }\n });\n });\n return errors;\n}\n__name(findUnreachablePatterns, \"findUnreachablePatterns\");\nfunction tryToMatchStrToPattern(str, pattern) {\n if (isRegExp_default(pattern)) {\n if (usesLookAheadOrBehind(pattern)) {\n return false;\n }\n const regExpArray = pattern.exec(str);\n return regExpArray !== null && regExpArray.index === 0;\n } else if (isFunction_default(pattern)) {\n return pattern(str, 0, [], {});\n } else if (has_default(pattern, \"exec\")) {\n return pattern.exec(str, 0, [], {});\n } else if (typeof pattern === \"string\") {\n return pattern === str;\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n__name(tryToMatchStrToPattern, \"tryToMatchStrToPattern\");\nfunction noMetaChar(regExp) {\n const metaChars = [\n \".\",\n \"\\\\\",\n \"[\",\n \"]\",\n \"|\",\n \"^\",\n \"$\",\n \"(\",\n \")\",\n \"?\",\n \"*\",\n \"+\",\n \"{\"\n ];\n return find_default(metaChars, (char) => regExp.source.indexOf(char) !== -1) === void 0;\n}\n__name(noMetaChar, \"noMetaChar\");\nfunction usesLookAheadOrBehind(regExp) {\n return /(\\(\\?=)|(\\(\\?!)|(\\(\\?<=)|(\\(\\? property in its definition\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\n });\n }\n if (!has_default(lexerDefinition, MODES)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized without a <\" + MODES + \"> property in its definition\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\n });\n }\n if (has_default(lexerDefinition, MODES) && has_default(lexerDefinition, DEFAULT_MODE) && !has_default(lexerDefinition.modes, lexerDefinition.defaultMode)) {\n errors.push({\n message: `A MultiMode Lexer cannot be initialized with a ${DEFAULT_MODE}: <${lexerDefinition.defaultMode}>which does not exist\n`,\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\n });\n }\n if (has_default(lexerDefinition, MODES)) {\n forEach_default(lexerDefinition.modes, (currModeValue, currModeName) => {\n forEach_default(currModeValue, (currTokType, currIdx) => {\n if (isUndefined_default(currTokType)) {\n errors.push({\n message: `A Lexer cannot be initialized using an undefined Token Type. Mode:<${currModeName}> at index: <${currIdx}>\n`,\n type: LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\n });\n } else if (has_default(currTokType, \"LONGER_ALT\")) {\n const longerAlt = isArray_default(currTokType.LONGER_ALT) ? currTokType.LONGER_ALT : [currTokType.LONGER_ALT];\n forEach_default(longerAlt, (currLongerAlt) => {\n if (!isUndefined_default(currLongerAlt) && !includes_default(currModeValue, currLongerAlt)) {\n errors.push({\n message: `A MultiMode Lexer cannot be initialized with a longer_alt <${currLongerAlt.name}> on token <${currTokType.name}> outside of mode <${currModeName}>\n`,\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE\n });\n }\n });\n }\n });\n });\n }\n return errors;\n}\n__name(performRuntimeChecks, \"performRuntimeChecks\");\nfunction performWarningRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) {\n const warnings = [];\n let hasAnyLineBreak = false;\n const allTokenTypes = compact_default(flatten_default(values_default(lexerDefinition.modes)));\n const concreteTokenTypes = reject_default(allTokenTypes, (currType) => currType[PATTERN] === Lexer.NA);\n const terminatorCharCodes = getCharCodes(lineTerminatorCharacters);\n if (trackLines) {\n forEach_default(concreteTokenTypes, (tokType) => {\n const currIssue = checkLineBreaksIssues(tokType, terminatorCharCodes);\n if (currIssue !== false) {\n const message = buildLineBreakIssueMessage(tokType, currIssue);\n const warningDescriptor = {\n message,\n type: currIssue.issue,\n tokenType: tokType\n };\n warnings.push(warningDescriptor);\n } else {\n if (has_default(tokType, \"LINE_BREAKS\")) {\n if (tokType.LINE_BREAKS === true) {\n hasAnyLineBreak = true;\n }\n } else {\n if (canMatchCharCode(terminatorCharCodes, tokType.PATTERN)) {\n hasAnyLineBreak = true;\n }\n }\n }\n });\n }\n if (trackLines && !hasAnyLineBreak) {\n warnings.push({\n message: \"Warning: No LINE_BREAKS Found.\\n\tThis Lexer has been defined to track line and column information,\\n\tBut none of the Token Types can be identified as matching a line terminator.\\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \\n\tfor details.\",\n type: LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS\n });\n }\n return warnings;\n}\n__name(performWarningRuntimeChecks, \"performWarningRuntimeChecks\");\nfunction cloneEmptyGroups(emptyGroups) {\n const clonedResult = {};\n const groupKeys = keys_default(emptyGroups);\n forEach_default(groupKeys, (currKey) => {\n const currGroupValue = emptyGroups[currKey];\n if (isArray_default(currGroupValue)) {\n clonedResult[currKey] = [];\n } else {\n throw Error(\"non exhaustive match\");\n }\n });\n return clonedResult;\n}\n__name(cloneEmptyGroups, \"cloneEmptyGroups\");\nfunction isCustomPattern(tokenType) {\n const pattern = tokenType.PATTERN;\n if (isRegExp_default(pattern)) {\n return false;\n } else if (isFunction_default(pattern)) {\n return true;\n } else if (has_default(pattern, \"exec\")) {\n return true;\n } else if (isString_default(pattern)) {\n return false;\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n__name(isCustomPattern, \"isCustomPattern\");\nfunction isShortPattern(pattern) {\n if (isString_default(pattern) && pattern.length === 1) {\n return pattern.charCodeAt(0);\n } else {\n return false;\n }\n}\n__name(isShortPattern, \"isShortPattern\");\nvar LineTerminatorOptimizedTester = {\n // implements /\\n|\\r\\n?/g.test\n test: /* @__PURE__ */ __name(function(text) {\n const len = text.length;\n for (let i = this.lastIndex; i < len; i++) {\n const c = text.charCodeAt(i);\n if (c === 10) {\n this.lastIndex = i + 1;\n return true;\n } else if (c === 13) {\n if (text.charCodeAt(i + 1) === 10) {\n this.lastIndex = i + 2;\n } else {\n this.lastIndex = i + 1;\n }\n return true;\n }\n }\n return false;\n }, \"test\"),\n lastIndex: 0\n};\nfunction checkLineBreaksIssues(tokType, lineTerminatorCharCodes) {\n if (has_default(tokType, \"LINE_BREAKS\")) {\n return false;\n } else {\n if (isRegExp_default(tokType.PATTERN)) {\n try {\n canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN);\n } catch (e) {\n return {\n issue: LexerDefinitionErrorType.IDENTIFY_TERMINATOR,\n errMsg: e.message\n };\n }\n return false;\n } else if (isString_default(tokType.PATTERN)) {\n return false;\n } else if (isCustomPattern(tokType)) {\n return { issue: LexerDefinitionErrorType.CUSTOM_LINE_BREAK };\n } else {\n throw Error(\"non exhaustive match\");\n }\n }\n}\n__name(checkLineBreaksIssues, \"checkLineBreaksIssues\");\nfunction buildLineBreakIssueMessage(tokType, details) {\n if (details.issue === LexerDefinitionErrorType.IDENTIFY_TERMINATOR) {\n return `Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <${tokType.name}> Token Type\n\t Root cause: ${details.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;\n } else if (details.issue === LexerDefinitionErrorType.CUSTOM_LINE_BREAK) {\n return `Warning: A Custom Token Pattern should specify the option.\n\tThe problem is in the <${tokType.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n__name(buildLineBreakIssueMessage, \"buildLineBreakIssueMessage\");\nfunction getCharCodes(charsOrCodes) {\n const charCodes = map_default(charsOrCodes, (numOrString) => {\n if (isString_default(numOrString)) {\n return numOrString.charCodeAt(0);\n } else {\n return numOrString;\n }\n });\n return charCodes;\n}\n__name(getCharCodes, \"getCharCodes\");\nfunction addToMapOfArrays(map3, key, value) {\n if (map3[key] === void 0) {\n map3[key] = [value];\n } else {\n map3[key].push(value);\n }\n}\n__name(addToMapOfArrays, \"addToMapOfArrays\");\nvar minOptimizationVal = 256;\nvar charCodeToOptimizedIdxMap = [];\nfunction charCodeToOptimizedIndex(charCode) {\n return charCode < minOptimizationVal ? charCode : charCodeToOptimizedIdxMap[charCode];\n}\n__name(charCodeToOptimizedIndex, \"charCodeToOptimizedIndex\");\nfunction initCharCodeToOptimizedIndexMap() {\n if (isEmpty_default(charCodeToOptimizedIdxMap)) {\n charCodeToOptimizedIdxMap = new Array(65536);\n for (let i = 0; i < 65536; i++) {\n charCodeToOptimizedIdxMap[i] = i > 255 ? 255 + ~~(i / 255) : i;\n }\n }\n}\n__name(initCharCodeToOptimizedIndexMap, \"initCharCodeToOptimizedIndexMap\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/scan/tokens.js\nfunction tokenStructuredMatcher(tokInstance, tokConstructor) {\n const instanceType = tokInstance.tokenTypeIdx;\n if (instanceType === tokConstructor.tokenTypeIdx) {\n return true;\n } else {\n return tokConstructor.isParent === true && tokConstructor.categoryMatchesMap[instanceType] === true;\n }\n}\n__name(tokenStructuredMatcher, \"tokenStructuredMatcher\");\nfunction tokenStructuredMatcherNoCategories(token, tokType) {\n return token.tokenTypeIdx === tokType.tokenTypeIdx;\n}\n__name(tokenStructuredMatcherNoCategories, \"tokenStructuredMatcherNoCategories\");\nvar tokenShortNameIdx = 1;\nvar tokenIdxToClass = {};\nfunction augmentTokenTypes(tokenTypes) {\n const tokenTypesAndParents = expandCategories(tokenTypes);\n assignTokenDefaultProps(tokenTypesAndParents);\n assignCategoriesMapProp(tokenTypesAndParents);\n assignCategoriesTokensProp(tokenTypesAndParents);\n forEach_default(tokenTypesAndParents, (tokType) => {\n tokType.isParent = tokType.categoryMatches.length > 0;\n });\n}\n__name(augmentTokenTypes, \"augmentTokenTypes\");\nfunction expandCategories(tokenTypes) {\n let result = clone_default(tokenTypes);\n let categories = tokenTypes;\n let searching = true;\n while (searching) {\n categories = compact_default(flatten_default(map_default(categories, (currTokType) => currTokType.CATEGORIES)));\n const newCategories = difference_default(categories, result);\n result = result.concat(newCategories);\n if (isEmpty_default(newCategories)) {\n searching = false;\n } else {\n categories = newCategories;\n }\n }\n return result;\n}\n__name(expandCategories, \"expandCategories\");\nfunction assignTokenDefaultProps(tokenTypes) {\n forEach_default(tokenTypes, (currTokType) => {\n if (!hasShortKeyProperty(currTokType)) {\n tokenIdxToClass[tokenShortNameIdx] = currTokType;\n currTokType.tokenTypeIdx = tokenShortNameIdx++;\n }\n if (hasCategoriesProperty(currTokType) && !isArray_default(currTokType.CATEGORIES)) {\n currTokType.CATEGORIES = [currTokType.CATEGORIES];\n }\n if (!hasCategoriesProperty(currTokType)) {\n currTokType.CATEGORIES = [];\n }\n if (!hasExtendingTokensTypesProperty(currTokType)) {\n currTokType.categoryMatches = [];\n }\n if (!hasExtendingTokensTypesMapProperty(currTokType)) {\n currTokType.categoryMatchesMap = {};\n }\n });\n}\n__name(assignTokenDefaultProps, \"assignTokenDefaultProps\");\nfunction assignCategoriesTokensProp(tokenTypes) {\n forEach_default(tokenTypes, (currTokType) => {\n currTokType.categoryMatches = [];\n forEach_default(currTokType.categoryMatchesMap, (val, key) => {\n currTokType.categoryMatches.push(tokenIdxToClass[key].tokenTypeIdx);\n });\n });\n}\n__name(assignCategoriesTokensProp, \"assignCategoriesTokensProp\");\nfunction assignCategoriesMapProp(tokenTypes) {\n forEach_default(tokenTypes, (currTokType) => {\n singleAssignCategoriesToksMap([], currTokType);\n });\n}\n__name(assignCategoriesMapProp, \"assignCategoriesMapProp\");\nfunction singleAssignCategoriesToksMap(path, nextNode) {\n forEach_default(path, (pathNode) => {\n nextNode.categoryMatchesMap[pathNode.tokenTypeIdx] = true;\n });\n forEach_default(nextNode.CATEGORIES, (nextCategory) => {\n const newPath = path.concat(nextNode);\n if (!includes_default(newPath, nextCategory)) {\n singleAssignCategoriesToksMap(newPath, nextCategory);\n }\n });\n}\n__name(singleAssignCategoriesToksMap, \"singleAssignCategoriesToksMap\");\nfunction hasShortKeyProperty(tokType) {\n return has_default(tokType, \"tokenTypeIdx\");\n}\n__name(hasShortKeyProperty, \"hasShortKeyProperty\");\nfunction hasCategoriesProperty(tokType) {\n return has_default(tokType, \"CATEGORIES\");\n}\n__name(hasCategoriesProperty, \"hasCategoriesProperty\");\nfunction hasExtendingTokensTypesProperty(tokType) {\n return has_default(tokType, \"categoryMatches\");\n}\n__name(hasExtendingTokensTypesProperty, \"hasExtendingTokensTypesProperty\");\nfunction hasExtendingTokensTypesMapProperty(tokType) {\n return has_default(tokType, \"categoryMatchesMap\");\n}\n__name(hasExtendingTokensTypesMapProperty, \"hasExtendingTokensTypesMapProperty\");\nfunction isTokenType(tokType) {\n return has_default(tokType, \"tokenTypeIdx\");\n}\n__name(isTokenType, \"isTokenType\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/scan/lexer_errors_public.js\nvar defaultLexerErrorProvider = {\n buildUnableToPopLexerModeMessage(token) {\n return `Unable to pop Lexer Mode after encountering Token ->${token.image}<- The Mode Stack is empty`;\n },\n buildUnexpectedCharactersMessage(fullText, startOffset, length, line, column, mode) {\n return `unexpected character: ->${fullText.charAt(startOffset)}<- at offset: ${startOffset}, skipped ${length} characters.`;\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/scan/lexer_public.js\nvar LexerDefinitionErrorType;\n(function(LexerDefinitionErrorType2) {\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MISSING_PATTERN\"] = 0] = \"MISSING_PATTERN\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"INVALID_PATTERN\"] = 1] = \"INVALID_PATTERN\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"EOI_ANCHOR_FOUND\"] = 2] = \"EOI_ANCHOR_FOUND\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"UNSUPPORTED_FLAGS_FOUND\"] = 3] = \"UNSUPPORTED_FLAGS_FOUND\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"DUPLICATE_PATTERNS_FOUND\"] = 4] = \"DUPLICATE_PATTERNS_FOUND\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"INVALID_GROUP_TYPE_FOUND\"] = 5] = \"INVALID_GROUP_TYPE_FOUND\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"PUSH_MODE_DOES_NOT_EXIST\"] = 6] = \"PUSH_MODE_DOES_NOT_EXIST\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\"] = 7] = \"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\"] = 8] = \"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\"] = 9] = \"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\"] = 10] = \"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"SOI_ANCHOR_FOUND\"] = 11] = \"SOI_ANCHOR_FOUND\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"EMPTY_MATCH_PATTERN\"] = 12] = \"EMPTY_MATCH_PATTERN\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"NO_LINE_BREAKS_FLAGS\"] = 13] = \"NO_LINE_BREAKS_FLAGS\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"UNREACHABLE_PATTERN\"] = 14] = \"UNREACHABLE_PATTERN\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"IDENTIFY_TERMINATOR\"] = 15] = \"IDENTIFY_TERMINATOR\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"CUSTOM_LINE_BREAK\"] = 16] = \"CUSTOM_LINE_BREAK\";\n LexerDefinitionErrorType2[LexerDefinitionErrorType2[\"MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE\"] = 17] = \"MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE\";\n})(LexerDefinitionErrorType || (LexerDefinitionErrorType = {}));\nvar DEFAULT_LEXER_CONFIG = {\n deferDefinitionErrorsHandling: false,\n positionTracking: \"full\",\n lineTerminatorsPattern: /\\n|\\r\\n?/g,\n lineTerminatorCharacters: [\"\\n\", \"\\r\"],\n ensureOptimizations: false,\n safeMode: false,\n errorMessageProvider: defaultLexerErrorProvider,\n traceInitPerf: false,\n skipValidations: false,\n recoveryEnabled: true\n};\nObject.freeze(DEFAULT_LEXER_CONFIG);\nvar Lexer = class {\n static {\n __name(this, \"Lexer\");\n }\n constructor(lexerDefinition, config = DEFAULT_LEXER_CONFIG) {\n this.lexerDefinition = lexerDefinition;\n this.lexerDefinitionErrors = [];\n this.lexerDefinitionWarning = [];\n this.patternIdxToConfig = {};\n this.charCodeToPatternIdxToConfig = {};\n this.modes = [];\n this.emptyGroups = {};\n this.trackStartLines = true;\n this.trackEndLines = true;\n this.hasCustom = false;\n this.canModeBeOptimized = {};\n this.TRACE_INIT = (phaseDesc, phaseImpl) => {\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n const indent = new Array(this.traceInitIndent + 1).join(\"\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(`${indent}--> <${phaseDesc}>`);\n }\n const { time, value } = timer(phaseImpl);\n const traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(`${indent}<-- <${phaseDesc}> time: ${time}ms`);\n }\n this.traceInitIndent--;\n return value;\n } else {\n return phaseImpl();\n }\n };\n if (typeof config === \"boolean\") {\n throw Error(\"The second argument to the Lexer constructor is now an ILexerConfig Object.\\na boolean 2nd argument is no longer supported\");\n }\n this.config = assign_default({}, DEFAULT_LEXER_CONFIG, config);\n const traceInitVal = this.config.traceInitPerf;\n if (traceInitVal === true) {\n this.traceInitMaxIdent = Infinity;\n this.traceInitPerf = true;\n } else if (typeof traceInitVal === \"number\") {\n this.traceInitMaxIdent = traceInitVal;\n this.traceInitPerf = true;\n }\n this.traceInitIndent = -1;\n this.TRACE_INIT(\"Lexer Constructor\", () => {\n let actualDefinition;\n let hasOnlySingleMode = true;\n this.TRACE_INIT(\"Lexer Config handling\", () => {\n if (this.config.lineTerminatorsPattern === DEFAULT_LEXER_CONFIG.lineTerminatorsPattern) {\n this.config.lineTerminatorsPattern = LineTerminatorOptimizedTester;\n } else {\n if (this.config.lineTerminatorCharacters === DEFAULT_LEXER_CONFIG.lineTerminatorCharacters) {\n throw Error(\"Error: Missing property on the Lexer config.\\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS\");\n }\n }\n if (config.safeMode && config.ensureOptimizations) {\n throw Error('\"safeMode\" and \"ensureOptimizations\" flags are mutually exclusive.');\n }\n this.trackStartLines = /full|onlyStart/i.test(this.config.positionTracking);\n this.trackEndLines = /full/i.test(this.config.positionTracking);\n if (isArray_default(lexerDefinition)) {\n actualDefinition = {\n modes: { defaultMode: clone_default(lexerDefinition) },\n defaultMode: DEFAULT_MODE\n };\n } else {\n hasOnlySingleMode = false;\n actualDefinition = clone_default(lexerDefinition);\n }\n });\n if (this.config.skipValidations === false) {\n this.TRACE_INIT(\"performRuntimeChecks\", () => {\n this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(performRuntimeChecks(actualDefinition, this.trackStartLines, this.config.lineTerminatorCharacters));\n });\n this.TRACE_INIT(\"performWarningRuntimeChecks\", () => {\n this.lexerDefinitionWarning = this.lexerDefinitionWarning.concat(performWarningRuntimeChecks(actualDefinition, this.trackStartLines, this.config.lineTerminatorCharacters));\n });\n }\n actualDefinition.modes = actualDefinition.modes ? actualDefinition.modes : {};\n forEach_default(actualDefinition.modes, (currModeValue, currModeName) => {\n actualDefinition.modes[currModeName] = reject_default(currModeValue, (currTokType) => isUndefined_default(currTokType));\n });\n const allModeNames = keys_default(actualDefinition.modes);\n forEach_default(actualDefinition.modes, (currModDef, currModName) => {\n this.TRACE_INIT(`Mode: <${currModName}> processing`, () => {\n this.modes.push(currModName);\n if (this.config.skipValidations === false) {\n this.TRACE_INIT(`validatePatterns`, () => {\n this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(validatePatterns(currModDef, allModeNames));\n });\n }\n if (isEmpty_default(this.lexerDefinitionErrors)) {\n augmentTokenTypes(currModDef);\n let currAnalyzeResult;\n this.TRACE_INIT(`analyzeTokenTypes`, () => {\n currAnalyzeResult = analyzeTokenTypes(currModDef, {\n lineTerminatorCharacters: this.config.lineTerminatorCharacters,\n positionTracking: config.positionTracking,\n ensureOptimizations: config.ensureOptimizations,\n safeMode: config.safeMode,\n tracer: this.TRACE_INIT\n });\n });\n this.patternIdxToConfig[currModName] = currAnalyzeResult.patternIdxToConfig;\n this.charCodeToPatternIdxToConfig[currModName] = currAnalyzeResult.charCodeToPatternIdxToConfig;\n this.emptyGroups = assign_default({}, this.emptyGroups, currAnalyzeResult.emptyGroups);\n this.hasCustom = currAnalyzeResult.hasCustom || this.hasCustom;\n this.canModeBeOptimized[currModName] = currAnalyzeResult.canBeOptimized;\n }\n });\n });\n this.defaultMode = actualDefinition.defaultMode;\n if (!isEmpty_default(this.lexerDefinitionErrors) && !this.config.deferDefinitionErrorsHandling) {\n const allErrMessages = map_default(this.lexerDefinitionErrors, (error) => {\n return error.message;\n });\n const allErrMessagesString = allErrMessages.join(\"-----------------------\\n\");\n throw new Error(\"Errors detected in definition of Lexer:\\n\" + allErrMessagesString);\n }\n forEach_default(this.lexerDefinitionWarning, (warningDescriptor) => {\n PRINT_WARNING(warningDescriptor.message);\n });\n this.TRACE_INIT(\"Choosing sub-methods implementations\", () => {\n if (SUPPORT_STICKY) {\n this.chopInput = identity_default;\n this.match = this.matchWithTest;\n } else {\n this.updateLastIndex = noop_default;\n this.match = this.matchWithExec;\n }\n if (hasOnlySingleMode) {\n this.handleModes = noop_default;\n }\n if (this.trackStartLines === false) {\n this.computeNewColumn = identity_default;\n }\n if (this.trackEndLines === false) {\n this.updateTokenEndLineColumnLocation = noop_default;\n }\n if (/full/i.test(this.config.positionTracking)) {\n this.createTokenInstance = this.createFullToken;\n } else if (/onlyStart/i.test(this.config.positionTracking)) {\n this.createTokenInstance = this.createStartOnlyToken;\n } else if (/onlyOffset/i.test(this.config.positionTracking)) {\n this.createTokenInstance = this.createOffsetOnlyToken;\n } else {\n throw Error(`Invalid config option: \"${this.config.positionTracking}\"`);\n }\n if (this.hasCustom) {\n this.addToken = this.addTokenUsingPush;\n this.handlePayload = this.handlePayloadWithCustom;\n } else {\n this.addToken = this.addTokenUsingMemberAccess;\n this.handlePayload = this.handlePayloadNoCustom;\n }\n });\n this.TRACE_INIT(\"Failed Optimization Warnings\", () => {\n const unOptimizedModes = reduce_default(this.canModeBeOptimized, (cannotBeOptimized, canBeOptimized, modeName) => {\n if (canBeOptimized === false) {\n cannotBeOptimized.push(modeName);\n }\n return cannotBeOptimized;\n }, []);\n if (config.ensureOptimizations && !isEmpty_default(unOptimizedModes)) {\n throw Error(`Lexer Modes: < ${unOptimizedModes.join(\", \")} > cannot be optimized.\n\t Disable the \"ensureOptimizations\" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`);\n }\n });\n this.TRACE_INIT(\"clearRegExpParserCache\", () => {\n clearRegExpParserCache();\n });\n this.TRACE_INIT(\"toFastProperties\", () => {\n toFastProperties(this);\n });\n });\n }\n tokenize(text, initialMode = this.defaultMode) {\n if (!isEmpty_default(this.lexerDefinitionErrors)) {\n const allErrMessages = map_default(this.lexerDefinitionErrors, (error) => {\n return error.message;\n });\n const allErrMessagesString = allErrMessages.join(\"-----------------------\\n\");\n throw new Error(\"Unable to Tokenize because Errors detected in definition of Lexer:\\n\" + allErrMessagesString);\n }\n return this.tokenizeInternal(text, initialMode);\n }\n // There is quite a bit of duplication between this and \"tokenizeInternalLazy\"\n // This is intentional due to performance considerations.\n // this method also used quite a bit of `!` none null assertions because it is too optimized\n // for `tsc` to always understand it is \"safe\"\n tokenizeInternal(text, initialMode) {\n let i, j, k, matchAltImage, longerAlt, matchedImage, payload, altPayload, imageLength, group, tokType, newToken, errLength, droppedChar, msg, match;\n const orgText = text;\n const orgLength = orgText.length;\n let offset = 0;\n let matchedTokensIndex = 0;\n const guessedNumberOfTokens = this.hasCustom ? 0 : Math.floor(text.length / 10);\n const matchedTokens = new Array(guessedNumberOfTokens);\n const errors = [];\n let line = this.trackStartLines ? 1 : void 0;\n let column = this.trackStartLines ? 1 : void 0;\n const groups = cloneEmptyGroups(this.emptyGroups);\n const trackLines = this.trackStartLines;\n const lineTerminatorPattern = this.config.lineTerminatorsPattern;\n let currModePatternsLength = 0;\n let patternIdxToConfig = [];\n let currCharCodeToPatternIdxToConfig = [];\n const modeStack = [];\n const emptyArray = [];\n Object.freeze(emptyArray);\n let getPossiblePatterns;\n function getPossiblePatternsSlow() {\n return patternIdxToConfig;\n }\n __name(getPossiblePatternsSlow, \"getPossiblePatternsSlow\");\n function getPossiblePatternsOptimized(charCode) {\n const optimizedCharIdx = charCodeToOptimizedIndex(charCode);\n const possiblePatterns = currCharCodeToPatternIdxToConfig[optimizedCharIdx];\n if (possiblePatterns === void 0) {\n return emptyArray;\n } else {\n return possiblePatterns;\n }\n }\n __name(getPossiblePatternsOptimized, \"getPossiblePatternsOptimized\");\n const pop_mode = /* @__PURE__ */ __name((popToken) => {\n if (modeStack.length === 1 && // if we have both a POP_MODE and a PUSH_MODE this is in-fact a \"transition\"\n // So no error should occur.\n popToken.tokenType.PUSH_MODE === void 0) {\n const msg2 = this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken);\n errors.push({\n offset: popToken.startOffset,\n line: popToken.startLine,\n column: popToken.startColumn,\n length: popToken.image.length,\n message: msg2\n });\n } else {\n modeStack.pop();\n const newMode = last_default(modeStack);\n patternIdxToConfig = this.patternIdxToConfig[newMode];\n currCharCodeToPatternIdxToConfig = this.charCodeToPatternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n const modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false;\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n } else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n }, \"pop_mode\");\n function push_mode(newMode) {\n modeStack.push(newMode);\n currCharCodeToPatternIdxToConfig = this.charCodeToPatternIdxToConfig[newMode];\n patternIdxToConfig = this.patternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n currModePatternsLength = patternIdxToConfig.length;\n const modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false;\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n } else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n __name(push_mode, \"push_mode\");\n push_mode.call(this, initialMode);\n let currConfig;\n const recoveryEnabled = this.config.recoveryEnabled;\n while (offset < orgLength) {\n matchedImage = null;\n const nextCharCode = orgText.charCodeAt(offset);\n const chosenPatternIdxToConfig = getPossiblePatterns(nextCharCode);\n const chosenPatternsLength = chosenPatternIdxToConfig.length;\n for (i = 0; i < chosenPatternsLength; i++) {\n currConfig = chosenPatternIdxToConfig[i];\n const currPattern = currConfig.pattern;\n payload = null;\n const singleCharCode = currConfig.short;\n if (singleCharCode !== false) {\n if (nextCharCode === singleCharCode) {\n matchedImage = currPattern;\n }\n } else if (currConfig.isCustom === true) {\n match = currPattern.exec(orgText, offset, matchedTokens, groups);\n if (match !== null) {\n matchedImage = match[0];\n if (match.payload !== void 0) {\n payload = match.payload;\n }\n } else {\n matchedImage = null;\n }\n } else {\n this.updateLastIndex(currPattern, offset);\n matchedImage = this.match(currPattern, text, offset);\n }\n if (matchedImage !== null) {\n longerAlt = currConfig.longerAlt;\n if (longerAlt !== void 0) {\n const longerAltLength = longerAlt.length;\n for (k = 0; k < longerAltLength; k++) {\n const longerAltConfig = patternIdxToConfig[longerAlt[k]];\n const longerAltPattern = longerAltConfig.pattern;\n altPayload = null;\n if (longerAltConfig.isCustom === true) {\n match = longerAltPattern.exec(orgText, offset, matchedTokens, groups);\n if (match !== null) {\n matchAltImage = match[0];\n if (match.payload !== void 0) {\n altPayload = match.payload;\n }\n } else {\n matchAltImage = null;\n }\n } else {\n this.updateLastIndex(longerAltPattern, offset);\n matchAltImage = this.match(longerAltPattern, text, offset);\n }\n if (matchAltImage && matchAltImage.length > matchedImage.length) {\n matchedImage = matchAltImage;\n payload = altPayload;\n currConfig = longerAltConfig;\n break;\n }\n }\n }\n break;\n }\n }\n if (matchedImage !== null) {\n imageLength = matchedImage.length;\n group = currConfig.group;\n if (group !== void 0) {\n tokType = currConfig.tokenTypeIdx;\n newToken = this.createTokenInstance(matchedImage, offset, tokType, currConfig.tokenType, line, column, imageLength);\n this.handlePayload(newToken, payload);\n if (group === false) {\n matchedTokensIndex = this.addToken(matchedTokens, matchedTokensIndex, newToken);\n } else {\n groups[group].push(newToken);\n }\n }\n text = this.chopInput(text, imageLength);\n offset = offset + imageLength;\n column = this.computeNewColumn(column, imageLength);\n if (trackLines === true && currConfig.canLineTerminator === true) {\n let numOfLTsInMatch = 0;\n let foundTerminator;\n let lastLTEndOffset;\n lineTerminatorPattern.lastIndex = 0;\n do {\n foundTerminator = lineTerminatorPattern.test(matchedImage);\n if (foundTerminator === true) {\n lastLTEndOffset = lineTerminatorPattern.lastIndex - 1;\n numOfLTsInMatch++;\n }\n } while (foundTerminator === true);\n if (numOfLTsInMatch !== 0) {\n line = line + numOfLTsInMatch;\n column = imageLength - lastLTEndOffset;\n this.updateTokenEndLineColumnLocation(newToken, group, lastLTEndOffset, numOfLTsInMatch, line, column, imageLength);\n }\n }\n this.handleModes(currConfig, pop_mode, push_mode, newToken);\n } else {\n const errorStartOffset = offset;\n const errorLine = line;\n const errorColumn = column;\n let foundResyncPoint = recoveryEnabled === false;\n while (foundResyncPoint === false && offset < orgLength) {\n text = this.chopInput(text, 1);\n offset++;\n for (j = 0; j < currModePatternsLength; j++) {\n const currConfig2 = patternIdxToConfig[j];\n const currPattern = currConfig2.pattern;\n const singleCharCode = currConfig2.short;\n if (singleCharCode !== false) {\n if (orgText.charCodeAt(offset) === singleCharCode) {\n foundResyncPoint = true;\n }\n } else if (currConfig2.isCustom === true) {\n foundResyncPoint = currPattern.exec(orgText, offset, matchedTokens, groups) !== null;\n } else {\n this.updateLastIndex(currPattern, offset);\n foundResyncPoint = currPattern.exec(text) !== null;\n }\n if (foundResyncPoint === true) {\n break;\n }\n }\n }\n errLength = offset - errorStartOffset;\n column = this.computeNewColumn(column, errLength);\n msg = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(orgText, errorStartOffset, errLength, errorLine, errorColumn, last_default(modeStack));\n errors.push({\n offset: errorStartOffset,\n line: errorLine,\n column: errorColumn,\n length: errLength,\n message: msg\n });\n if (recoveryEnabled === false) {\n break;\n }\n }\n }\n if (!this.hasCustom) {\n matchedTokens.length = matchedTokensIndex;\n }\n return {\n tokens: matchedTokens,\n groups,\n errors\n };\n }\n handleModes(config, pop_mode, push_mode, newToken) {\n if (config.pop === true) {\n const pushMode = config.push;\n pop_mode(newToken);\n if (pushMode !== void 0) {\n push_mode.call(this, pushMode);\n }\n } else if (config.push !== void 0) {\n push_mode.call(this, config.push);\n }\n }\n chopInput(text, length) {\n return text.substring(length);\n }\n updateLastIndex(regExp, newLastIndex) {\n regExp.lastIndex = newLastIndex;\n }\n // TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler\n updateTokenEndLineColumnLocation(newToken, group, lastLTIdx, numOfLTsInMatch, line, column, imageLength) {\n let lastCharIsLT, fixForEndingInLT;\n if (group !== void 0) {\n lastCharIsLT = lastLTIdx === imageLength - 1;\n fixForEndingInLT = lastCharIsLT ? -1 : 0;\n if (!(numOfLTsInMatch === 1 && lastCharIsLT === true)) {\n newToken.endLine = line + fixForEndingInLT;\n newToken.endColumn = column - 1 + -fixForEndingInLT;\n }\n }\n }\n computeNewColumn(oldColumn, imageLength) {\n return oldColumn + imageLength;\n }\n createOffsetOnlyToken(image, startOffset, tokenTypeIdx, tokenType) {\n return {\n image,\n startOffset,\n tokenTypeIdx,\n tokenType\n };\n }\n createStartOnlyToken(image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn) {\n return {\n image,\n startOffset,\n startLine,\n startColumn,\n tokenTypeIdx,\n tokenType\n };\n }\n createFullToken(image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn, imageLength) {\n return {\n image,\n startOffset,\n endOffset: startOffset + imageLength - 1,\n startLine,\n endLine: startLine,\n startColumn,\n endColumn: startColumn + imageLength - 1,\n tokenTypeIdx,\n tokenType\n };\n }\n addTokenUsingPush(tokenVector, index, tokenToAdd) {\n tokenVector.push(tokenToAdd);\n return index;\n }\n addTokenUsingMemberAccess(tokenVector, index, tokenToAdd) {\n tokenVector[index] = tokenToAdd;\n index++;\n return index;\n }\n handlePayloadNoCustom(token, payload) {\n }\n handlePayloadWithCustom(token, payload) {\n if (payload !== null) {\n token.payload = payload;\n }\n }\n matchWithTest(pattern, text, offset) {\n const found = pattern.test(text);\n if (found === true) {\n return text.substring(offset, pattern.lastIndex);\n }\n return null;\n }\n matchWithExec(pattern, text) {\n const regExpArray = pattern.exec(text);\n return regExpArray !== null ? regExpArray[0] : null;\n }\n};\nLexer.SKIPPED = \"This marks a skipped Token pattern, this means each token identified by it will be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.\";\nLexer.NA = /NOT_APPLICABLE/;\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/scan/tokens_public.js\nfunction tokenLabel2(tokType) {\n if (hasTokenLabel2(tokType)) {\n return tokType.LABEL;\n } else {\n return tokType.name;\n }\n}\n__name(tokenLabel2, \"tokenLabel\");\nfunction hasTokenLabel2(obj) {\n return isString_default(obj.LABEL) && obj.LABEL !== \"\";\n}\n__name(hasTokenLabel2, \"hasTokenLabel\");\nvar PARENT = \"parent\";\nvar CATEGORIES = \"categories\";\nvar LABEL = \"label\";\nvar GROUP = \"group\";\nvar PUSH_MODE = \"push_mode\";\nvar POP_MODE = \"pop_mode\";\nvar LONGER_ALT = \"longer_alt\";\nvar LINE_BREAKS = \"line_breaks\";\nvar START_CHARS_HINT = \"start_chars_hint\";\nfunction createToken(config) {\n return createTokenInternal(config);\n}\n__name(createToken, \"createToken\");\nfunction createTokenInternal(config) {\n const pattern = config.pattern;\n const tokenType = {};\n tokenType.name = config.name;\n if (!isUndefined_default(pattern)) {\n tokenType.PATTERN = pattern;\n }\n if (has_default(config, PARENT)) {\n throw \"The parent property is no longer supported.\\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.\";\n }\n if (has_default(config, CATEGORIES)) {\n tokenType.CATEGORIES = config[CATEGORIES];\n }\n augmentTokenTypes([tokenType]);\n if (has_default(config, LABEL)) {\n tokenType.LABEL = config[LABEL];\n }\n if (has_default(config, GROUP)) {\n tokenType.GROUP = config[GROUP];\n }\n if (has_default(config, POP_MODE)) {\n tokenType.POP_MODE = config[POP_MODE];\n }\n if (has_default(config, PUSH_MODE)) {\n tokenType.PUSH_MODE = config[PUSH_MODE];\n }\n if (has_default(config, LONGER_ALT)) {\n tokenType.LONGER_ALT = config[LONGER_ALT];\n }\n if (has_default(config, LINE_BREAKS)) {\n tokenType.LINE_BREAKS = config[LINE_BREAKS];\n }\n if (has_default(config, START_CHARS_HINT)) {\n tokenType.START_CHARS_HINT = config[START_CHARS_HINT];\n }\n return tokenType;\n}\n__name(createTokenInternal, \"createTokenInternal\");\nvar EOF = createToken({ name: \"EOF\", pattern: Lexer.NA });\naugmentTokenTypes([EOF]);\nfunction createTokenInstance(tokType, image, startOffset, endOffset, startLine, endLine, startColumn, endColumn) {\n return {\n image,\n startOffset,\n endOffset,\n startLine,\n endLine,\n startColumn,\n endColumn,\n tokenTypeIdx: tokType.tokenTypeIdx,\n tokenType: tokType\n };\n}\n__name(createTokenInstance, \"createTokenInstance\");\nfunction tokenMatcher(token, tokType) {\n return tokenStructuredMatcher(token, tokType);\n}\n__name(tokenMatcher, \"tokenMatcher\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/errors_public.js\nvar defaultParserErrorProvider = {\n buildMismatchTokenMessage({ expected, actual, previous, ruleName }) {\n const hasLabel = hasTokenLabel2(expected);\n const expectedMsg = hasLabel ? `--> ${tokenLabel2(expected)} <--` : `token of type --> ${expected.name} <--`;\n const msg = `Expecting ${expectedMsg} but found --> '${actual.image}' <--`;\n return msg;\n },\n buildNotAllInputParsedMessage({ firstRedundant, ruleName }) {\n return \"Redundant input, expecting EOF but found: \" + firstRedundant.image;\n },\n buildNoViableAltMessage({ expectedPathsPerAlt, actual, previous, customUserDescription, ruleName }) {\n const errPrefix = \"Expecting: \";\n const actualText = head_default(actual).image;\n const errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n } else {\n const allLookAheadPaths = reduce_default(expectedPathsPerAlt, (result, currAltPaths) => result.concat(currAltPaths), []);\n const nextValidTokenSequences = map_default(allLookAheadPaths, (currPath) => `[${map_default(currPath, (currTokenType) => tokenLabel2(currTokenType)).join(\", \")}]`);\n const nextValidSequenceItems = map_default(nextValidTokenSequences, (itemMsg, idx) => ` ${idx + 1}. ${itemMsg}`);\n const calculatedDescription = `one of these possible Token sequences:\n${nextValidSequenceItems.join(\"\\n\")}`;\n return errPrefix + calculatedDescription + errSuffix;\n }\n },\n buildEarlyExitMessage({ expectedIterationPaths, actual, customUserDescription, ruleName }) {\n const errPrefix = \"Expecting: \";\n const actualText = head_default(actual).image;\n const errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n } else {\n const nextValidTokenSequences = map_default(expectedIterationPaths, (currPath) => `[${map_default(currPath, (currTokenType) => tokenLabel2(currTokenType)).join(\",\")}]`);\n const calculatedDescription = `expecting at least one iteration which starts with one of these possible Token sequences::\n <${nextValidTokenSequences.join(\" ,\")}>`;\n return errPrefix + calculatedDescription + errSuffix;\n }\n }\n};\nObject.freeze(defaultParserErrorProvider);\nvar defaultGrammarResolverErrorProvider = {\n buildRuleNotFoundError(topLevelRule, undefinedRule) {\n const msg = \"Invalid grammar, reference to a rule which is not defined: ->\" + undefinedRule.nonTerminalName + \"<-\\ninside top level rule: ->\" + topLevelRule.name + \"<-\";\n return msg;\n }\n};\nvar defaultGrammarValidatorErrorProvider = {\n buildDuplicateFoundError(topLevelRule, duplicateProds) {\n function getExtraProductionArgument2(prod) {\n if (prod instanceof Terminal) {\n return prod.terminalType.name;\n } else if (prod instanceof NonTerminal) {\n return prod.nonTerminalName;\n } else {\n return \"\";\n }\n }\n __name(getExtraProductionArgument2, \"getExtraProductionArgument\");\n const topLevelName = topLevelRule.name;\n const duplicateProd = head_default(duplicateProds);\n const index = duplicateProd.idx;\n const dslName = getProductionDslName(duplicateProd);\n const extraArgument = getExtraProductionArgument2(duplicateProd);\n const hasExplicitIndex = index > 0;\n let msg = `->${dslName}${hasExplicitIndex ? index : \"\"}<- ${extraArgument ? `with argument: ->${extraArgument}<-` : \"\"}\n appears more than once (${duplicateProds.length} times) in the top level rule: ->${topLevelName}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;\n msg = msg.replace(/[ \\t]+/g, \" \");\n msg = msg.replace(/\\s\\s+/g, \"\\n\");\n return msg;\n },\n buildNamespaceConflictError(rule) {\n const errMsg = `Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${rule.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`;\n return errMsg;\n },\n buildAlternationPrefixAmbiguityError(options) {\n const pathMsg = map_default(options.prefixPath, (currTok) => tokenLabel2(currTok)).join(\", \");\n const occurrence = options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n const errMsg = `Ambiguous alternatives: <${options.ambiguityIndices.join(\" ,\")}> due to common lookahead prefix\nin inside <${options.topLevelRule.name}> Rule,\n<${pathMsg}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`;\n return errMsg;\n },\n buildAlternationAmbiguityError(options) {\n const pathMsg = map_default(options.prefixPath, (currtok) => tokenLabel2(currtok)).join(\", \");\n const occurrence = options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n let currMessage = `Ambiguous Alternatives Detected: <${options.ambiguityIndices.join(\" ,\")}> in inside <${options.topLevelRule.name}> Rule,\n<${pathMsg}> may appears as a prefix path in all these alternatives.\n`;\n currMessage = currMessage + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.`;\n return currMessage;\n },\n buildEmptyRepetitionError(options) {\n let dslName = getProductionDslName(options.repetition);\n if (options.repetition.idx !== 0) {\n dslName += options.repetition.idx;\n }\n const errMsg = `The repetition <${dslName}> within Rule <${options.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`;\n return errMsg;\n },\n // TODO: remove - `errors_public` from nyc.config.js exclude\n // once this method is fully removed from this file\n buildTokenNameError(options) {\n return \"deprecated\";\n },\n buildEmptyAlternationError(options) {\n const errMsg = `Ambiguous empty alternative: <${options.emptyChoiceIdx + 1}> in inside <${options.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`;\n return errMsg;\n },\n buildTooManyAlternativesError(options) {\n const errMsg = `An Alternation cannot have more than 256 alternatives:\n inside <${options.topLevelRule.name}> Rule.\n has ${options.alternation.definition.length + 1} alternatives.`;\n return errMsg;\n },\n buildLeftRecursionError(options) {\n const ruleName = options.topLevelRule.name;\n const pathNames = map_default(options.leftRecursionPath, (currRule) => currRule.name);\n const leftRecursivePath = `${ruleName} --> ${pathNames.concat([ruleName]).join(\" --> \")}`;\n const errMsg = `Left Recursion found in grammar.\nrule: <${ruleName}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${leftRecursivePath}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;\n return errMsg;\n },\n // TODO: remove - `errors_public` from nyc.config.js exclude\n // once this method is fully removed from this file\n buildInvalidRuleNameError(options) {\n return \"deprecated\";\n },\n buildDuplicateRuleNameError(options) {\n let ruleName;\n if (options.topLevelRule instanceof Rule) {\n ruleName = options.topLevelRule.name;\n } else {\n ruleName = options.topLevelRule;\n }\n const errMsg = `Duplicate definition, rule: ->${ruleName}<- is already defined in the grammar: ->${options.grammarName}<-`;\n return errMsg;\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/resolver.js\nfunction resolveGrammar(topLevels, errMsgProvider) {\n const refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider);\n refResolver.resolveRefs();\n return refResolver.errors;\n}\n__name(resolveGrammar, \"resolveGrammar\");\nvar GastRefResolverVisitor = class extends GAstVisitor {\n static {\n __name(this, \"GastRefResolverVisitor\");\n }\n constructor(nameToTopRule, errMsgProvider) {\n super();\n this.nameToTopRule = nameToTopRule;\n this.errMsgProvider = errMsgProvider;\n this.errors = [];\n }\n resolveRefs() {\n forEach_default(values_default(this.nameToTopRule), (prod) => {\n this.currTopLevel = prod;\n prod.accept(this);\n });\n }\n visitNonTerminal(node) {\n const ref = this.nameToTopRule[node.nonTerminalName];\n if (!ref) {\n const msg = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, node);\n this.errors.push({\n message: msg,\n type: ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,\n ruleName: this.currTopLevel.name,\n unresolvedRefName: node.nonTerminalName\n });\n } else {\n node.referencedRule = ref;\n }\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js\nvar AbstractNextPossibleTokensWalker = class extends RestWalker {\n static {\n __name(this, \"AbstractNextPossibleTokensWalker\");\n }\n constructor(topProd, path) {\n super();\n this.topProd = topProd;\n this.path = path;\n this.possibleTokTypes = [];\n this.nextProductionName = \"\";\n this.nextProductionOccurrence = 0;\n this.found = false;\n this.isAtEndOfPath = false;\n }\n startWalking() {\n this.found = false;\n if (this.path.ruleStack[0] !== this.topProd.name) {\n throw Error(\"The path does not start with the walker's top Rule!\");\n }\n this.ruleStack = clone_default(this.path.ruleStack).reverse();\n this.occurrenceStack = clone_default(this.path.occurrenceStack).reverse();\n this.ruleStack.pop();\n this.occurrenceStack.pop();\n this.updateExpectedNext();\n this.walk(this.topProd);\n return this.possibleTokTypes;\n }\n walk(prod, prevRest = []) {\n if (!this.found) {\n super.walk(prod, prevRest);\n }\n }\n walkProdRef(refProd, currRest, prevRest) {\n if (refProd.referencedRule.name === this.nextProductionName && refProd.idx === this.nextProductionOccurrence) {\n const fullRest = currRest.concat(prevRest);\n this.updateExpectedNext();\n this.walk(refProd.referencedRule, fullRest);\n }\n }\n updateExpectedNext() {\n if (isEmpty_default(this.ruleStack)) {\n this.nextProductionName = \"\";\n this.nextProductionOccurrence = 0;\n this.isAtEndOfPath = true;\n } else {\n this.nextProductionName = this.ruleStack.pop();\n this.nextProductionOccurrence = this.occurrenceStack.pop();\n }\n }\n};\nvar NextAfterTokenWalker = class extends AbstractNextPossibleTokensWalker {\n static {\n __name(this, \"NextAfterTokenWalker\");\n }\n constructor(topProd, path) {\n super(topProd, path);\n this.path = path;\n this.nextTerminalName = \"\";\n this.nextTerminalOccurrence = 0;\n this.nextTerminalName = this.path.lastTok.name;\n this.nextTerminalOccurrence = this.path.lastTokOccurrence;\n }\n walkTerminal(terminal, currRest, prevRest) {\n if (this.isAtEndOfPath && terminal.terminalType.name === this.nextTerminalName && terminal.idx === this.nextTerminalOccurrence && !this.found) {\n const fullRest = currRest.concat(prevRest);\n const restProd = new Alternative({ definition: fullRest });\n this.possibleTokTypes = first(restProd);\n this.found = true;\n }\n }\n};\nvar AbstractNextTerminalAfterProductionWalker = class extends RestWalker {\n static {\n __name(this, \"AbstractNextTerminalAfterProductionWalker\");\n }\n constructor(topRule, occurrence) {\n super();\n this.topRule = topRule;\n this.occurrence = occurrence;\n this.result = {\n token: void 0,\n occurrence: void 0,\n isEndOfRule: void 0\n };\n }\n startWalking() {\n this.walk(this.topRule);\n return this.result;\n }\n};\nvar NextTerminalAfterManyWalker = class extends AbstractNextTerminalAfterProductionWalker {\n static {\n __name(this, \"NextTerminalAfterManyWalker\");\n }\n walkMany(manyProd, currRest, prevRest) {\n if (manyProd.idx === this.occurrence) {\n const firstAfterMany = head_default(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterMany === void 0;\n if (firstAfterMany instanceof Terminal) {\n this.result.token = firstAfterMany.terminalType;\n this.result.occurrence = firstAfterMany.idx;\n }\n } else {\n super.walkMany(manyProd, currRest, prevRest);\n }\n }\n};\nvar NextTerminalAfterManySepWalker = class extends AbstractNextTerminalAfterProductionWalker {\n static {\n __name(this, \"NextTerminalAfterManySepWalker\");\n }\n walkManySep(manySepProd, currRest, prevRest) {\n if (manySepProd.idx === this.occurrence) {\n const firstAfterManySep = head_default(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterManySep === void 0;\n if (firstAfterManySep instanceof Terminal) {\n this.result.token = firstAfterManySep.terminalType;\n this.result.occurrence = firstAfterManySep.idx;\n }\n } else {\n super.walkManySep(manySepProd, currRest, prevRest);\n }\n }\n};\nvar NextTerminalAfterAtLeastOneWalker = class extends AbstractNextTerminalAfterProductionWalker {\n static {\n __name(this, \"NextTerminalAfterAtLeastOneWalker\");\n }\n walkAtLeastOne(atLeastOneProd, currRest, prevRest) {\n if (atLeastOneProd.idx === this.occurrence) {\n const firstAfterAtLeastOne = head_default(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterAtLeastOne === void 0;\n if (firstAfterAtLeastOne instanceof Terminal) {\n this.result.token = firstAfterAtLeastOne.terminalType;\n this.result.occurrence = firstAfterAtLeastOne.idx;\n }\n } else {\n super.walkAtLeastOne(atLeastOneProd, currRest, prevRest);\n }\n }\n};\nvar NextTerminalAfterAtLeastOneSepWalker = class extends AbstractNextTerminalAfterProductionWalker {\n static {\n __name(this, \"NextTerminalAfterAtLeastOneSepWalker\");\n }\n walkAtLeastOneSep(atleastOneSepProd, currRest, prevRest) {\n if (atleastOneSepProd.idx === this.occurrence) {\n const firstAfterfirstAfterAtLeastOneSep = head_default(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterfirstAfterAtLeastOneSep === void 0;\n if (firstAfterfirstAfterAtLeastOneSep instanceof Terminal) {\n this.result.token = firstAfterfirstAfterAtLeastOneSep.terminalType;\n this.result.occurrence = firstAfterfirstAfterAtLeastOneSep.idx;\n }\n } else {\n super.walkAtLeastOneSep(atleastOneSepProd, currRest, prevRest);\n }\n }\n};\nfunction possiblePathsFrom(targetDef, maxLength, currPath = []) {\n currPath = clone_default(currPath);\n let result = [];\n let i = 0;\n function remainingPathWith(nextDef) {\n return nextDef.concat(drop_default(targetDef, i + 1));\n }\n __name(remainingPathWith, \"remainingPathWith\");\n function getAlternativesForProd(definition) {\n const alternatives = possiblePathsFrom(remainingPathWith(definition), maxLength, currPath);\n return result.concat(alternatives);\n }\n __name(getAlternativesForProd, \"getAlternativesForProd\");\n while (currPath.length < maxLength && i < targetDef.length) {\n const prod = targetDef[i];\n if (prod instanceof Alternative) {\n return getAlternativesForProd(prod.definition);\n } else if (prod instanceof NonTerminal) {\n return getAlternativesForProd(prod.definition);\n } else if (prod instanceof Option) {\n result = getAlternativesForProd(prod.definition);\n } else if (prod instanceof RepetitionMandatory) {\n const newDef = prod.definition.concat([\n new Repetition({\n definition: prod.definition\n })\n ]);\n return getAlternativesForProd(newDef);\n } else if (prod instanceof RepetitionMandatoryWithSeparator) {\n const newDef = [\n new Alternative({ definition: prod.definition }),\n new Repetition({\n definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition)\n })\n ];\n return getAlternativesForProd(newDef);\n } else if (prod instanceof RepetitionWithSeparator) {\n const newDef = prod.definition.concat([\n new Repetition({\n definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition)\n })\n ]);\n result = getAlternativesForProd(newDef);\n } else if (prod instanceof Repetition) {\n const newDef = prod.definition.concat([\n new Repetition({\n definition: prod.definition\n })\n ]);\n result = getAlternativesForProd(newDef);\n } else if (prod instanceof Alternation) {\n forEach_default(prod.definition, (currAlt) => {\n if (isEmpty_default(currAlt.definition) === false) {\n result = getAlternativesForProd(currAlt.definition);\n }\n });\n return result;\n } else if (prod instanceof Terminal) {\n currPath.push(prod.terminalType);\n } else {\n throw Error(\"non exhaustive match\");\n }\n i++;\n }\n result.push({\n partialPath: currPath,\n suffixDef: drop_default(targetDef, i)\n });\n return result;\n}\n__name(possiblePathsFrom, \"possiblePathsFrom\");\nfunction nextPossibleTokensAfter(initialDef, tokenVector, tokMatcher, maxLookAhead) {\n const EXIT_NON_TERMINAL = \"EXIT_NONE_TERMINAL\";\n const EXIT_NON_TERMINAL_ARR = [EXIT_NON_TERMINAL];\n const EXIT_ALTERNATIVE = \"EXIT_ALTERNATIVE\";\n let foundCompletePath = false;\n const tokenVectorLength = tokenVector.length;\n const minimalAlternativesIndex = tokenVectorLength - maxLookAhead - 1;\n const result = [];\n const possiblePaths = [];\n possiblePaths.push({\n idx: -1,\n def: initialDef,\n ruleStack: [],\n occurrenceStack: []\n });\n while (!isEmpty_default(possiblePaths)) {\n const currPath = possiblePaths.pop();\n if (currPath === EXIT_ALTERNATIVE) {\n if (foundCompletePath && last_default(possiblePaths).idx <= minimalAlternativesIndex) {\n possiblePaths.pop();\n }\n continue;\n }\n const currDef = currPath.def;\n const currIdx = currPath.idx;\n const currRuleStack = currPath.ruleStack;\n const currOccurrenceStack = currPath.occurrenceStack;\n if (isEmpty_default(currDef)) {\n continue;\n }\n const prod = currDef[0];\n if (prod === EXIT_NON_TERMINAL) {\n const nextPath = {\n idx: currIdx,\n def: drop_default(currDef),\n ruleStack: dropRight_default(currRuleStack),\n occurrenceStack: dropRight_default(currOccurrenceStack)\n };\n possiblePaths.push(nextPath);\n } else if (prod instanceof Terminal) {\n if (currIdx < tokenVectorLength - 1) {\n const nextIdx = currIdx + 1;\n const actualToken = tokenVector[nextIdx];\n if (tokMatcher(actualToken, prod.terminalType)) {\n const nextPath = {\n idx: nextIdx,\n def: drop_default(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n } else if (currIdx === tokenVectorLength - 1) {\n result.push({\n nextTokenType: prod.terminalType,\n nextTokenOccurrence: prod.idx,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n });\n foundCompletePath = true;\n } else {\n throw Error(\"non exhaustive match\");\n }\n } else if (prod instanceof NonTerminal) {\n const newRuleStack = clone_default(currRuleStack);\n newRuleStack.push(prod.nonTerminalName);\n const newOccurrenceStack = clone_default(currOccurrenceStack);\n newOccurrenceStack.push(prod.idx);\n const nextPath = {\n idx: currIdx,\n def: prod.definition.concat(EXIT_NON_TERMINAL_ARR, drop_default(currDef)),\n ruleStack: newRuleStack,\n occurrenceStack: newOccurrenceStack\n };\n possiblePaths.push(nextPath);\n } else if (prod instanceof Option) {\n const nextPathWithout = {\n idx: currIdx,\n def: drop_default(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n possiblePaths.push(EXIT_ALTERNATIVE);\n const nextPathWith = {\n idx: currIdx,\n def: prod.definition.concat(drop_default(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n } else if (prod instanceof RepetitionMandatory) {\n const secondIteration = new Repetition({\n definition: prod.definition,\n idx: prod.idx\n });\n const nextDef = prod.definition.concat([secondIteration], drop_default(currDef));\n const nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n } else if (prod instanceof RepetitionMandatoryWithSeparator) {\n const separatorGast = new Terminal({\n terminalType: prod.separator\n });\n const secondIteration = new Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx\n });\n const nextDef = prod.definition.concat([secondIteration], drop_default(currDef));\n const nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n } else if (prod instanceof RepetitionWithSeparator) {\n const nextPathWithout = {\n idx: currIdx,\n def: drop_default(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n possiblePaths.push(EXIT_ALTERNATIVE);\n const separatorGast = new Terminal({\n terminalType: prod.separator\n });\n const nthRepetition = new Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx\n });\n const nextDef = prod.definition.concat([nthRepetition], drop_default(currDef));\n const nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n } else if (prod instanceof Repetition) {\n const nextPathWithout = {\n idx: currIdx,\n def: drop_default(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n possiblePaths.push(EXIT_ALTERNATIVE);\n const nthRepetition = new Repetition({\n definition: prod.definition,\n idx: prod.idx\n });\n const nextDef = prod.definition.concat([nthRepetition], drop_default(currDef));\n const nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n } else if (prod instanceof Alternation) {\n for (let i = prod.definition.length - 1; i >= 0; i--) {\n const currAlt = prod.definition[i];\n const currAltPath = {\n idx: currIdx,\n def: currAlt.definition.concat(drop_default(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(currAltPath);\n possiblePaths.push(EXIT_ALTERNATIVE);\n }\n } else if (prod instanceof Alternative) {\n possiblePaths.push({\n idx: currIdx,\n def: prod.definition.concat(drop_default(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n });\n } else if (prod instanceof Rule) {\n possiblePaths.push(expandTopLevelRule(prod, currIdx, currRuleStack, currOccurrenceStack));\n } else {\n throw Error(\"non exhaustive match\");\n }\n }\n return result;\n}\n__name(nextPossibleTokensAfter, \"nextPossibleTokensAfter\");\nfunction expandTopLevelRule(topRule, currIdx, currRuleStack, currOccurrenceStack) {\n const newRuleStack = clone_default(currRuleStack);\n newRuleStack.push(topRule.name);\n const newCurrOccurrenceStack = clone_default(currOccurrenceStack);\n newCurrOccurrenceStack.push(1);\n return {\n idx: currIdx,\n def: topRule.definition,\n ruleStack: newRuleStack,\n occurrenceStack: newCurrOccurrenceStack\n };\n}\n__name(expandTopLevelRule, \"expandTopLevelRule\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js\nvar PROD_TYPE;\n(function(PROD_TYPE2) {\n PROD_TYPE2[PROD_TYPE2[\"OPTION\"] = 0] = \"OPTION\";\n PROD_TYPE2[PROD_TYPE2[\"REPETITION\"] = 1] = \"REPETITION\";\n PROD_TYPE2[PROD_TYPE2[\"REPETITION_MANDATORY\"] = 2] = \"REPETITION_MANDATORY\";\n PROD_TYPE2[PROD_TYPE2[\"REPETITION_MANDATORY_WITH_SEPARATOR\"] = 3] = \"REPETITION_MANDATORY_WITH_SEPARATOR\";\n PROD_TYPE2[PROD_TYPE2[\"REPETITION_WITH_SEPARATOR\"] = 4] = \"REPETITION_WITH_SEPARATOR\";\n PROD_TYPE2[PROD_TYPE2[\"ALTERNATION\"] = 5] = \"ALTERNATION\";\n})(PROD_TYPE || (PROD_TYPE = {}));\nfunction getProdType(prod) {\n if (prod instanceof Option || prod === \"Option\") {\n return PROD_TYPE.OPTION;\n } else if (prod instanceof Repetition || prod === \"Repetition\") {\n return PROD_TYPE.REPETITION;\n } else if (prod instanceof RepetitionMandatory || prod === \"RepetitionMandatory\") {\n return PROD_TYPE.REPETITION_MANDATORY;\n } else if (prod instanceof RepetitionMandatoryWithSeparator || prod === \"RepetitionMandatoryWithSeparator\") {\n return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR;\n } else if (prod instanceof RepetitionWithSeparator || prod === \"RepetitionWithSeparator\") {\n return PROD_TYPE.REPETITION_WITH_SEPARATOR;\n } else if (prod instanceof Alternation || prod === \"Alternation\") {\n return PROD_TYPE.ALTERNATION;\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n__name(getProdType, \"getProdType\");\nfunction getLookaheadPaths(options) {\n const { occurrence, rule, prodType, maxLookahead } = options;\n const type = getProdType(prodType);\n if (type === PROD_TYPE.ALTERNATION) {\n return getLookaheadPathsForOr(occurrence, rule, maxLookahead);\n } else {\n return getLookaheadPathsForOptionalProd(occurrence, rule, type, maxLookahead);\n }\n}\n__name(getLookaheadPaths, \"getLookaheadPaths\");\nfunction buildLookaheadFuncForOr(occurrence, ruleGrammar, maxLookahead, hasPredicates, dynamicTokensEnabled, laFuncBuilder) {\n const lookAheadPaths = getLookaheadPathsForOr(occurrence, ruleGrammar, maxLookahead);\n const tokenMatcher2 = areTokenCategoriesNotUsed(lookAheadPaths) ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher;\n return laFuncBuilder(lookAheadPaths, hasPredicates, tokenMatcher2, dynamicTokensEnabled);\n}\n__name(buildLookaheadFuncForOr, \"buildLookaheadFuncForOr\");\nfunction buildLookaheadFuncForOptionalProd(occurrence, ruleGrammar, k, dynamicTokensEnabled, prodType, lookaheadBuilder) {\n const lookAheadPaths = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k);\n const tokenMatcher2 = areTokenCategoriesNotUsed(lookAheadPaths) ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher;\n return lookaheadBuilder(lookAheadPaths[0], tokenMatcher2, dynamicTokensEnabled);\n}\n__name(buildLookaheadFuncForOptionalProd, \"buildLookaheadFuncForOptionalProd\");\nfunction buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher2, dynamicTokensEnabled) {\n const numOfAlts = alts.length;\n const areAllOneTokenLookahead = every_default(alts, (currAlt) => {\n return every_default(currAlt, (currPath) => {\n return currPath.length === 1;\n });\n });\n if (hasPredicates) {\n return function(orAlts) {\n const predicates = map_default(orAlts, (currAlt) => currAlt.GATE);\n for (let t = 0; t < numOfAlts; t++) {\n const currAlt = alts[t];\n const currNumOfPaths = currAlt.length;\n const currPredicate = predicates[t];\n if (currPredicate !== void 0 && currPredicate.call(this) === false) {\n continue;\n }\n nextPath: for (let j = 0; j < currNumOfPaths; j++) {\n const currPath = currAlt[j];\n const currPathLength = currPath.length;\n for (let i = 0; i < currPathLength; i++) {\n const nextToken = this.LA(i + 1);\n if (tokenMatcher2(nextToken, currPath[i]) === false) {\n continue nextPath;\n }\n }\n return t;\n }\n }\n return void 0;\n };\n } else if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n const singleTokenAlts = map_default(alts, (currAlt) => {\n return flatten_default(currAlt);\n });\n const choiceToAlt = reduce_default(singleTokenAlts, (result, currAlt, idx) => {\n forEach_default(currAlt, (currTokType) => {\n if (!has_default(result, currTokType.tokenTypeIdx)) {\n result[currTokType.tokenTypeIdx] = idx;\n }\n forEach_default(currTokType.categoryMatches, (currExtendingType) => {\n if (!has_default(result, currExtendingType)) {\n result[currExtendingType] = idx;\n }\n });\n });\n return result;\n }, {});\n return function() {\n const nextToken = this.LA(1);\n return choiceToAlt[nextToken.tokenTypeIdx];\n };\n } else {\n return function() {\n for (let t = 0; t < numOfAlts; t++) {\n const currAlt = alts[t];\n const currNumOfPaths = currAlt.length;\n nextPath: for (let j = 0; j < currNumOfPaths; j++) {\n const currPath = currAlt[j];\n const currPathLength = currPath.length;\n for (let i = 0; i < currPathLength; i++) {\n const nextToken = this.LA(i + 1);\n if (tokenMatcher2(nextToken, currPath[i]) === false) {\n continue nextPath;\n }\n }\n return t;\n }\n }\n return void 0;\n };\n }\n}\n__name(buildAlternativesLookAheadFunc, \"buildAlternativesLookAheadFunc\");\nfunction buildSingleAlternativeLookaheadFunction(alt, tokenMatcher2, dynamicTokensEnabled) {\n const areAllOneTokenLookahead = every_default(alt, (currPath) => {\n return currPath.length === 1;\n });\n const numOfPaths = alt.length;\n if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n const singleTokensTypes = flatten_default(alt);\n if (singleTokensTypes.length === 1 && isEmpty_default(singleTokensTypes[0].categoryMatches)) {\n const expectedTokenType = singleTokensTypes[0];\n const expectedTokenUniqueKey = expectedTokenType.tokenTypeIdx;\n return function() {\n return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey;\n };\n } else {\n const choiceToAlt = reduce_default(singleTokensTypes, (result, currTokType, idx) => {\n result[currTokType.tokenTypeIdx] = true;\n forEach_default(currTokType.categoryMatches, (currExtendingType) => {\n result[currExtendingType] = true;\n });\n return result;\n }, []);\n return function() {\n const nextToken = this.LA(1);\n return choiceToAlt[nextToken.tokenTypeIdx] === true;\n };\n }\n } else {\n return function() {\n nextPath: for (let j = 0; j < numOfPaths; j++) {\n const currPath = alt[j];\n const currPathLength = currPath.length;\n for (let i = 0; i < currPathLength; i++) {\n const nextToken = this.LA(i + 1);\n if (tokenMatcher2(nextToken, currPath[i]) === false) {\n continue nextPath;\n }\n }\n return true;\n }\n return false;\n };\n }\n}\n__name(buildSingleAlternativeLookaheadFunction, \"buildSingleAlternativeLookaheadFunction\");\nvar RestDefinitionFinderWalker = class extends RestWalker {\n static {\n __name(this, \"RestDefinitionFinderWalker\");\n }\n constructor(topProd, targetOccurrence, targetProdType) {\n super();\n this.topProd = topProd;\n this.targetOccurrence = targetOccurrence;\n this.targetProdType = targetProdType;\n }\n startWalking() {\n this.walk(this.topProd);\n return this.restDef;\n }\n checkIsTarget(node, expectedProdType, currRest, prevRest) {\n if (node.idx === this.targetOccurrence && this.targetProdType === expectedProdType) {\n this.restDef = currRest.concat(prevRest);\n return true;\n }\n return false;\n }\n walkOption(optionProd, currRest, prevRest) {\n if (!this.checkIsTarget(optionProd, PROD_TYPE.OPTION, currRest, prevRest)) {\n super.walkOption(optionProd, currRest, prevRest);\n }\n }\n walkAtLeastOne(atLeastOneProd, currRest, prevRest) {\n if (!this.checkIsTarget(atLeastOneProd, PROD_TYPE.REPETITION_MANDATORY, currRest, prevRest)) {\n super.walkOption(atLeastOneProd, currRest, prevRest);\n }\n }\n walkAtLeastOneSep(atLeastOneSepProd, currRest, prevRest) {\n if (!this.checkIsTarget(atLeastOneSepProd, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currRest, prevRest)) {\n super.walkOption(atLeastOneSepProd, currRest, prevRest);\n }\n }\n walkMany(manyProd, currRest, prevRest) {\n if (!this.checkIsTarget(manyProd, PROD_TYPE.REPETITION, currRest, prevRest)) {\n super.walkOption(manyProd, currRest, prevRest);\n }\n }\n walkManySep(manySepProd, currRest, prevRest) {\n if (!this.checkIsTarget(manySepProd, PROD_TYPE.REPETITION_WITH_SEPARATOR, currRest, prevRest)) {\n super.walkOption(manySepProd, currRest, prevRest);\n }\n }\n};\nvar InsideDefinitionFinderVisitor = class extends GAstVisitor {\n static {\n __name(this, \"InsideDefinitionFinderVisitor\");\n }\n constructor(targetOccurrence, targetProdType, targetRef) {\n super();\n this.targetOccurrence = targetOccurrence;\n this.targetProdType = targetProdType;\n this.targetRef = targetRef;\n this.result = [];\n }\n checkIsTarget(node, expectedProdName) {\n if (node.idx === this.targetOccurrence && this.targetProdType === expectedProdName && (this.targetRef === void 0 || node === this.targetRef)) {\n this.result = node.definition;\n }\n }\n visitOption(node) {\n this.checkIsTarget(node, PROD_TYPE.OPTION);\n }\n visitRepetition(node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION);\n }\n visitRepetitionMandatory(node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY);\n }\n visitRepetitionMandatoryWithSeparator(node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR);\n }\n visitRepetitionWithSeparator(node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_WITH_SEPARATOR);\n }\n visitAlternation(node) {\n this.checkIsTarget(node, PROD_TYPE.ALTERNATION);\n }\n};\nfunction initializeArrayOfArrays(size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = [];\n }\n return result;\n}\n__name(initializeArrayOfArrays, \"initializeArrayOfArrays\");\nfunction pathToHashKeys(path) {\n let keys3 = [\"\"];\n for (let i = 0; i < path.length; i++) {\n const tokType = path[i];\n const longerKeys = [];\n for (let j = 0; j < keys3.length; j++) {\n const currShorterKey = keys3[j];\n longerKeys.push(currShorterKey + \"_\" + tokType.tokenTypeIdx);\n for (let t = 0; t < tokType.categoryMatches.length; t++) {\n const categoriesKeySuffix = \"_\" + tokType.categoryMatches[t];\n longerKeys.push(currShorterKey + categoriesKeySuffix);\n }\n }\n keys3 = longerKeys;\n }\n return keys3;\n}\n__name(pathToHashKeys, \"pathToHashKeys\");\nfunction isUniquePrefixHash(altKnownPathsKeys, searchPathKeys, idx) {\n for (let currAltIdx = 0; currAltIdx < altKnownPathsKeys.length; currAltIdx++) {\n if (currAltIdx === idx) {\n continue;\n }\n const otherAltKnownPathsKeys = altKnownPathsKeys[currAltIdx];\n for (let searchIdx = 0; searchIdx < searchPathKeys.length; searchIdx++) {\n const searchKey = searchPathKeys[searchIdx];\n if (otherAltKnownPathsKeys[searchKey] === true) {\n return false;\n }\n }\n }\n return true;\n}\n__name(isUniquePrefixHash, \"isUniquePrefixHash\");\nfunction lookAheadSequenceFromAlternatives(altsDefs, k) {\n const partialAlts = map_default(altsDefs, (currAlt) => possiblePathsFrom([currAlt], 1));\n const finalResult = initializeArrayOfArrays(partialAlts.length);\n const altsHashes = map_default(partialAlts, (currAltPaths) => {\n const dict = {};\n forEach_default(currAltPaths, (item) => {\n const keys3 = pathToHashKeys(item.partialPath);\n forEach_default(keys3, (currKey) => {\n dict[currKey] = true;\n });\n });\n return dict;\n });\n let newData = partialAlts;\n for (let pathLength = 1; pathLength <= k; pathLength++) {\n const currDataset = newData;\n newData = initializeArrayOfArrays(currDataset.length);\n for (let altIdx = 0; altIdx < currDataset.length; altIdx++) {\n const currAltPathsAndSuffixes = currDataset[altIdx];\n for (let currPathIdx = 0; currPathIdx < currAltPathsAndSuffixes.length; currPathIdx++) {\n const currPathPrefix = currAltPathsAndSuffixes[currPathIdx].partialPath;\n const suffixDef = currAltPathsAndSuffixes[currPathIdx].suffixDef;\n const prefixKeys = pathToHashKeys(currPathPrefix);\n const isUnique = isUniquePrefixHash(altsHashes, prefixKeys, altIdx);\n if (isUnique || isEmpty_default(suffixDef) || currPathPrefix.length === k) {\n const currAltResult = finalResult[altIdx];\n if (containsPath(currAltResult, currPathPrefix) === false) {\n currAltResult.push(currPathPrefix);\n for (let j = 0; j < prefixKeys.length; j++) {\n const currKey = prefixKeys[j];\n altsHashes[altIdx][currKey] = true;\n }\n }\n } else {\n const newPartialPathsAndSuffixes = possiblePathsFrom(suffixDef, pathLength + 1, currPathPrefix);\n newData[altIdx] = newData[altIdx].concat(newPartialPathsAndSuffixes);\n forEach_default(newPartialPathsAndSuffixes, (item) => {\n const prefixKeys2 = pathToHashKeys(item.partialPath);\n forEach_default(prefixKeys2, (key) => {\n altsHashes[altIdx][key] = true;\n });\n });\n }\n }\n }\n }\n return finalResult;\n}\n__name(lookAheadSequenceFromAlternatives, \"lookAheadSequenceFromAlternatives\");\nfunction getLookaheadPathsForOr(occurrence, ruleGrammar, k, orProd) {\n const visitor2 = new InsideDefinitionFinderVisitor(occurrence, PROD_TYPE.ALTERNATION, orProd);\n ruleGrammar.accept(visitor2);\n return lookAheadSequenceFromAlternatives(visitor2.result, k);\n}\n__name(getLookaheadPathsForOr, \"getLookaheadPathsForOr\");\nfunction getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k) {\n const insideDefVisitor = new InsideDefinitionFinderVisitor(occurrence, prodType);\n ruleGrammar.accept(insideDefVisitor);\n const insideDef = insideDefVisitor.result;\n const afterDefWalker = new RestDefinitionFinderWalker(ruleGrammar, occurrence, prodType);\n const afterDef = afterDefWalker.startWalking();\n const insideFlat = new Alternative({ definition: insideDef });\n const afterFlat = new Alternative({ definition: afterDef });\n return lookAheadSequenceFromAlternatives([insideFlat, afterFlat], k);\n}\n__name(getLookaheadPathsForOptionalProd, \"getLookaheadPathsForOptionalProd\");\nfunction containsPath(alternative, searchPath) {\n compareOtherPath: for (let i = 0; i < alternative.length; i++) {\n const otherPath = alternative[i];\n if (otherPath.length !== searchPath.length) {\n continue;\n }\n for (let j = 0; j < otherPath.length; j++) {\n const searchTok = searchPath[j];\n const otherTok = otherPath[j];\n const matchingTokens = searchTok === otherTok || otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !== void 0;\n if (matchingTokens === false) {\n continue compareOtherPath;\n }\n }\n return true;\n }\n return false;\n}\n__name(containsPath, \"containsPath\");\nfunction isStrictPrefixOfPath(prefix, other) {\n return prefix.length < other.length && every_default(prefix, (tokType, idx) => {\n const otherTokType = other[idx];\n return tokType === otherTokType || otherTokType.categoryMatchesMap[tokType.tokenTypeIdx];\n });\n}\n__name(isStrictPrefixOfPath, \"isStrictPrefixOfPath\");\nfunction areTokenCategoriesNotUsed(lookAheadPaths) {\n return every_default(lookAheadPaths, (singleAltPaths) => every_default(singleAltPaths, (singlePath) => every_default(singlePath, (token) => isEmpty_default(token.categoryMatches))));\n}\n__name(areTokenCategoriesNotUsed, \"areTokenCategoriesNotUsed\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/checks.js\nfunction validateLookahead(options) {\n const lookaheadValidationErrorMessages = options.lookaheadStrategy.validate({\n rules: options.rules,\n tokenTypes: options.tokenTypes,\n grammarName: options.grammarName\n });\n return map_default(lookaheadValidationErrorMessages, (errorMessage) => Object.assign({ type: ParserDefinitionErrorType.CUSTOM_LOOKAHEAD_VALIDATION }, errorMessage));\n}\n__name(validateLookahead, \"validateLookahead\");\nfunction validateGrammar(topLevels, tokenTypes, errMsgProvider, grammarName) {\n const duplicateErrors = flatMap_default(topLevels, (currTopLevel) => validateDuplicateProductions(currTopLevel, errMsgProvider));\n const termsNamespaceConflictErrors = checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider);\n const tooManyAltsErrors = flatMap_default(topLevels, (curRule) => validateTooManyAlts(curRule, errMsgProvider));\n const duplicateRulesError = flatMap_default(topLevels, (curRule) => validateRuleDoesNotAlreadyExist(curRule, topLevels, grammarName, errMsgProvider));\n return duplicateErrors.concat(termsNamespaceConflictErrors, tooManyAltsErrors, duplicateRulesError);\n}\n__name(validateGrammar, \"validateGrammar\");\nfunction validateDuplicateProductions(topLevelRule, errMsgProvider) {\n const collectorVisitor2 = new OccurrenceValidationCollector();\n topLevelRule.accept(collectorVisitor2);\n const allRuleProductions = collectorVisitor2.allProductions;\n const productionGroups = groupBy_default(allRuleProductions, identifyProductionForDuplicates);\n const duplicates = pickBy_default(productionGroups, (currGroup) => {\n return currGroup.length > 1;\n });\n const errors = map_default(values_default(duplicates), (currDuplicates) => {\n const firstProd = head_default(currDuplicates);\n const msg = errMsgProvider.buildDuplicateFoundError(topLevelRule, currDuplicates);\n const dslName = getProductionDslName(firstProd);\n const defError = {\n message: msg,\n type: ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,\n ruleName: topLevelRule.name,\n dslName,\n occurrence: firstProd.idx\n };\n const param = getExtraProductionArgument(firstProd);\n if (param) {\n defError.parameter = param;\n }\n return defError;\n });\n return errors;\n}\n__name(validateDuplicateProductions, \"validateDuplicateProductions\");\nfunction identifyProductionForDuplicates(prod) {\n return `${getProductionDslName(prod)}_#_${prod.idx}_#_${getExtraProductionArgument(prod)}`;\n}\n__name(identifyProductionForDuplicates, \"identifyProductionForDuplicates\");\nfunction getExtraProductionArgument(prod) {\n if (prod instanceof Terminal) {\n return prod.terminalType.name;\n } else if (prod instanceof NonTerminal) {\n return prod.nonTerminalName;\n } else {\n return \"\";\n }\n}\n__name(getExtraProductionArgument, \"getExtraProductionArgument\");\nvar OccurrenceValidationCollector = class extends GAstVisitor {\n static {\n __name(this, \"OccurrenceValidationCollector\");\n }\n constructor() {\n super(...arguments);\n this.allProductions = [];\n }\n visitNonTerminal(subrule) {\n this.allProductions.push(subrule);\n }\n visitOption(option2) {\n this.allProductions.push(option2);\n }\n visitRepetitionWithSeparator(manySep) {\n this.allProductions.push(manySep);\n }\n visitRepetitionMandatory(atLeastOne) {\n this.allProductions.push(atLeastOne);\n }\n visitRepetitionMandatoryWithSeparator(atLeastOneSep) {\n this.allProductions.push(atLeastOneSep);\n }\n visitRepetition(many) {\n this.allProductions.push(many);\n }\n visitAlternation(or) {\n this.allProductions.push(or);\n }\n visitTerminal(terminal) {\n this.allProductions.push(terminal);\n }\n};\nfunction validateRuleDoesNotAlreadyExist(rule, allRules, className, errMsgProvider) {\n const errors = [];\n const occurrences = reduce_default(allRules, (result, curRule) => {\n if (curRule.name === rule.name) {\n return result + 1;\n }\n return result;\n }, 0);\n if (occurrences > 1) {\n const errMsg = errMsgProvider.buildDuplicateRuleNameError({\n topLevelRule: rule,\n grammarName: className\n });\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: rule.name\n });\n }\n return errors;\n}\n__name(validateRuleDoesNotAlreadyExist, \"validateRuleDoesNotAlreadyExist\");\nfunction validateRuleIsOverridden(ruleName, definedRulesNames, className) {\n const errors = [];\n let errMsg;\n if (!includes_default(definedRulesNames, ruleName)) {\n errMsg = `Invalid rule override, rule: ->${ruleName}<- cannot be overridden in the grammar: ->${className}<-as it is not defined in any of the super grammars `;\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,\n ruleName\n });\n }\n return errors;\n}\n__name(validateRuleIsOverridden, \"validateRuleIsOverridden\");\nfunction validateNoLeftRecursion(topRule, currRule, errMsgProvider, path = []) {\n const errors = [];\n const nextNonTerminals = getFirstNoneTerminal(currRule.definition);\n if (isEmpty_default(nextNonTerminals)) {\n return [];\n } else {\n const ruleName = topRule.name;\n const foundLeftRecursion = includes_default(nextNonTerminals, topRule);\n if (foundLeftRecursion) {\n errors.push({\n message: errMsgProvider.buildLeftRecursionError({\n topLevelRule: topRule,\n leftRecursionPath: path\n }),\n type: ParserDefinitionErrorType.LEFT_RECURSION,\n ruleName\n });\n }\n const validNextSteps = difference_default(nextNonTerminals, path.concat([topRule]));\n const errorsFromNextSteps = flatMap_default(validNextSteps, (currRefRule) => {\n const newPath = clone_default(path);\n newPath.push(currRefRule);\n return validateNoLeftRecursion(topRule, currRefRule, errMsgProvider, newPath);\n });\n return errors.concat(errorsFromNextSteps);\n }\n}\n__name(validateNoLeftRecursion, \"validateNoLeftRecursion\");\nfunction getFirstNoneTerminal(definition) {\n let result = [];\n if (isEmpty_default(definition)) {\n return result;\n }\n const firstProd = head_default(definition);\n if (firstProd instanceof NonTerminal) {\n result.push(firstProd.referencedRule);\n } else if (firstProd instanceof Alternative || firstProd instanceof Option || firstProd instanceof RepetitionMandatory || firstProd instanceof RepetitionMandatoryWithSeparator || firstProd instanceof RepetitionWithSeparator || firstProd instanceof Repetition) {\n result = result.concat(getFirstNoneTerminal(firstProd.definition));\n } else if (firstProd instanceof Alternation) {\n result = flatten_default(map_default(firstProd.definition, (currSubDef) => getFirstNoneTerminal(currSubDef.definition)));\n } else if (firstProd instanceof Terminal) {\n } else {\n throw Error(\"non exhaustive match\");\n }\n const isFirstOptional = isOptionalProd(firstProd);\n const hasMore = definition.length > 1;\n if (isFirstOptional && hasMore) {\n const rest = drop_default(definition);\n return result.concat(getFirstNoneTerminal(rest));\n } else {\n return result;\n }\n}\n__name(getFirstNoneTerminal, \"getFirstNoneTerminal\");\nvar OrCollector = class extends GAstVisitor {\n static {\n __name(this, \"OrCollector\");\n }\n constructor() {\n super(...arguments);\n this.alternations = [];\n }\n visitAlternation(node) {\n this.alternations.push(node);\n }\n};\nfunction validateEmptyOrAlternative(topLevelRule, errMsgProvider) {\n const orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n const ors = orCollector.alternations;\n const errors = flatMap_default(ors, (currOr) => {\n const exceptLast = dropRight_default(currOr.definition);\n return flatMap_default(exceptLast, (currAlternative, currAltIdx) => {\n const possibleFirstInAlt = nextPossibleTokensAfter([currAlternative], [], tokenStructuredMatcher, 1);\n if (isEmpty_default(possibleFirstInAlt)) {\n return [\n {\n message: errMsgProvider.buildEmptyAlternationError({\n topLevelRule,\n alternation: currOr,\n emptyChoiceIdx: currAltIdx\n }),\n type: ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx,\n alternative: currAltIdx + 1\n }\n ];\n } else {\n return [];\n }\n });\n });\n return errors;\n}\n__name(validateEmptyOrAlternative, \"validateEmptyOrAlternative\");\nfunction validateAmbiguousAlternationAlternatives(topLevelRule, globalMaxLookahead, errMsgProvider) {\n const orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n let ors = orCollector.alternations;\n ors = reject_default(ors, (currOr) => currOr.ignoreAmbiguities === true);\n const errors = flatMap_default(ors, (currOr) => {\n const currOccurrence = currOr.idx;\n const actualMaxLookahead = currOr.maxLookahead || globalMaxLookahead;\n const alternatives = getLookaheadPathsForOr(currOccurrence, topLevelRule, actualMaxLookahead, currOr);\n const altsAmbiguityErrors = checkAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider);\n const altsPrefixAmbiguityErrors = checkPrefixAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider);\n return altsAmbiguityErrors.concat(altsPrefixAmbiguityErrors);\n });\n return errors;\n}\n__name(validateAmbiguousAlternationAlternatives, \"validateAmbiguousAlternationAlternatives\");\nvar RepetitionCollector = class extends GAstVisitor {\n static {\n __name(this, \"RepetitionCollector\");\n }\n constructor() {\n super(...arguments);\n this.allProductions = [];\n }\n visitRepetitionWithSeparator(manySep) {\n this.allProductions.push(manySep);\n }\n visitRepetitionMandatory(atLeastOne) {\n this.allProductions.push(atLeastOne);\n }\n visitRepetitionMandatoryWithSeparator(atLeastOneSep) {\n this.allProductions.push(atLeastOneSep);\n }\n visitRepetition(many) {\n this.allProductions.push(many);\n }\n};\nfunction validateTooManyAlts(topLevelRule, errMsgProvider) {\n const orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n const ors = orCollector.alternations;\n const errors = flatMap_default(ors, (currOr) => {\n if (currOr.definition.length > 255) {\n return [\n {\n message: errMsgProvider.buildTooManyAlternativesError({\n topLevelRule,\n alternation: currOr\n }),\n type: ParserDefinitionErrorType.TOO_MANY_ALTS,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx\n }\n ];\n } else {\n return [];\n }\n });\n return errors;\n}\n__name(validateTooManyAlts, \"validateTooManyAlts\");\nfunction validateSomeNonEmptyLookaheadPath(topLevelRules, maxLookahead, errMsgProvider) {\n const errors = [];\n forEach_default(topLevelRules, (currTopRule) => {\n const collectorVisitor2 = new RepetitionCollector();\n currTopRule.accept(collectorVisitor2);\n const allRuleProductions = collectorVisitor2.allProductions;\n forEach_default(allRuleProductions, (currProd) => {\n const prodType = getProdType(currProd);\n const actualMaxLookahead = currProd.maxLookahead || maxLookahead;\n const currOccurrence = currProd.idx;\n const paths = getLookaheadPathsForOptionalProd(currOccurrence, currTopRule, prodType, actualMaxLookahead);\n const pathsInsideProduction = paths[0];\n if (isEmpty_default(flatten_default(pathsInsideProduction))) {\n const errMsg = errMsgProvider.buildEmptyRepetitionError({\n topLevelRule: currTopRule,\n repetition: currProd\n });\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,\n ruleName: currTopRule.name\n });\n }\n });\n });\n return errors;\n}\n__name(validateSomeNonEmptyLookaheadPath, \"validateSomeNonEmptyLookaheadPath\");\nfunction checkAlternativesAmbiguities(alternatives, alternation2, rule, errMsgProvider) {\n const foundAmbiguousPaths = [];\n const identicalAmbiguities = reduce_default(alternatives, (result, currAlt, currAltIdx) => {\n if (alternation2.definition[currAltIdx].ignoreAmbiguities === true) {\n return result;\n }\n forEach_default(currAlt, (currPath) => {\n const altsCurrPathAppearsIn = [currAltIdx];\n forEach_default(alternatives, (currOtherAlt, currOtherAltIdx) => {\n if (currAltIdx !== currOtherAltIdx && containsPath(currOtherAlt, currPath) && // ignore (skip) ambiguities with this \"other\" alternative\n alternation2.definition[currOtherAltIdx].ignoreAmbiguities !== true) {\n altsCurrPathAppearsIn.push(currOtherAltIdx);\n }\n });\n if (altsCurrPathAppearsIn.length > 1 && !containsPath(foundAmbiguousPaths, currPath)) {\n foundAmbiguousPaths.push(currPath);\n result.push({\n alts: altsCurrPathAppearsIn,\n path: currPath\n });\n }\n });\n return result;\n }, []);\n const currErrors = map_default(identicalAmbiguities, (currAmbDescriptor) => {\n const ambgIndices = map_default(currAmbDescriptor.alts, (currAltIdx) => currAltIdx + 1);\n const currMessage = errMsgProvider.buildAlternationAmbiguityError({\n topLevelRule: rule,\n alternation: alternation2,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbDescriptor.path\n });\n return {\n message: currMessage,\n type: ParserDefinitionErrorType.AMBIGUOUS_ALTS,\n ruleName: rule.name,\n occurrence: alternation2.idx,\n alternatives: currAmbDescriptor.alts\n };\n });\n return currErrors;\n}\n__name(checkAlternativesAmbiguities, \"checkAlternativesAmbiguities\");\nfunction checkPrefixAlternativesAmbiguities(alternatives, alternation2, rule, errMsgProvider) {\n const pathsAndIndices = reduce_default(alternatives, (result, currAlt, idx) => {\n const currPathsAndIdx = map_default(currAlt, (currPath) => {\n return { idx, path: currPath };\n });\n return result.concat(currPathsAndIdx);\n }, []);\n const errors = compact_default(flatMap_default(pathsAndIndices, (currPathAndIdx) => {\n const alternativeGast = alternation2.definition[currPathAndIdx.idx];\n if (alternativeGast.ignoreAmbiguities === true) {\n return [];\n }\n const targetIdx = currPathAndIdx.idx;\n const targetPath = currPathAndIdx.path;\n const prefixAmbiguitiesPathsAndIndices = filter_default(pathsAndIndices, (searchPathAndIdx) => {\n return (\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation2.definition[searchPathAndIdx.idx].ignoreAmbiguities !== true && searchPathAndIdx.idx < targetIdx && // checking for strict prefix because identical lookaheads\n // will be be detected using a different validation.\n isStrictPrefixOfPath(searchPathAndIdx.path, targetPath)\n );\n });\n const currPathPrefixErrors = map_default(prefixAmbiguitiesPathsAndIndices, (currAmbPathAndIdx) => {\n const ambgIndices = [currAmbPathAndIdx.idx + 1, targetIdx + 1];\n const occurrence = alternation2.idx === 0 ? \"\" : alternation2.idx;\n const message = errMsgProvider.buildAlternationPrefixAmbiguityError({\n topLevelRule: rule,\n alternation: alternation2,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbPathAndIdx.path\n });\n return {\n message,\n type: ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS,\n ruleName: rule.name,\n occurrence,\n alternatives: ambgIndices\n };\n });\n return currPathPrefixErrors;\n }));\n return errors;\n}\n__name(checkPrefixAlternativesAmbiguities, \"checkPrefixAlternativesAmbiguities\");\nfunction checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider) {\n const errors = [];\n const tokenNames = map_default(tokenTypes, (currToken) => currToken.name);\n forEach_default(topLevels, (currRule) => {\n const currRuleName = currRule.name;\n if (includes_default(tokenNames, currRuleName)) {\n const errMsg = errMsgProvider.buildNamespaceConflictError(currRule);\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,\n ruleName: currRuleName\n });\n }\n });\n return errors;\n}\n__name(checkTerminalAndNoneTerminalsNameSpace, \"checkTerminalAndNoneTerminalsNameSpace\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js\nfunction resolveGrammar2(options) {\n const actualOptions = defaults_default(options, {\n errMsgProvider: defaultGrammarResolverErrorProvider\n });\n const topRulesTable = {};\n forEach_default(options.rules, (rule) => {\n topRulesTable[rule.name] = rule;\n });\n return resolveGrammar(topRulesTable, actualOptions.errMsgProvider);\n}\n__name(resolveGrammar2, \"resolveGrammar\");\nfunction validateGrammar2(options) {\n options = defaults_default(options, {\n errMsgProvider: defaultGrammarValidatorErrorProvider\n });\n return validateGrammar(options.rules, options.tokenTypes, options.errMsgProvider, options.grammarName);\n}\n__name(validateGrammar2, \"validateGrammar\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/exceptions_public.js\nvar MISMATCHED_TOKEN_EXCEPTION = \"MismatchedTokenException\";\nvar NO_VIABLE_ALT_EXCEPTION = \"NoViableAltException\";\nvar EARLY_EXIT_EXCEPTION = \"EarlyExitException\";\nvar NOT_ALL_INPUT_PARSED_EXCEPTION = \"NotAllInputParsedException\";\nvar RECOGNITION_EXCEPTION_NAMES = [\n MISMATCHED_TOKEN_EXCEPTION,\n NO_VIABLE_ALT_EXCEPTION,\n EARLY_EXIT_EXCEPTION,\n NOT_ALL_INPUT_PARSED_EXCEPTION\n];\nObject.freeze(RECOGNITION_EXCEPTION_NAMES);\nfunction isRecognitionException(error) {\n return includes_default(RECOGNITION_EXCEPTION_NAMES, error.name);\n}\n__name(isRecognitionException, \"isRecognitionException\");\nvar RecognitionException = class extends Error {\n static {\n __name(this, \"RecognitionException\");\n }\n constructor(message, token) {\n super(message);\n this.token = token;\n this.resyncedTokens = [];\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n};\nvar MismatchedTokenException = class extends RecognitionException {\n static {\n __name(this, \"MismatchedTokenException\");\n }\n constructor(message, token, previousToken) {\n super(message, token);\n this.previousToken = previousToken;\n this.name = MISMATCHED_TOKEN_EXCEPTION;\n }\n};\nvar NoViableAltException = class extends RecognitionException {\n static {\n __name(this, \"NoViableAltException\");\n }\n constructor(message, token, previousToken) {\n super(message, token);\n this.previousToken = previousToken;\n this.name = NO_VIABLE_ALT_EXCEPTION;\n }\n};\nvar NotAllInputParsedException = class extends RecognitionException {\n static {\n __name(this, \"NotAllInputParsedException\");\n }\n constructor(message, token) {\n super(message, token);\n this.name = NOT_ALL_INPUT_PARSED_EXCEPTION;\n }\n};\nvar EarlyExitException = class extends RecognitionException {\n static {\n __name(this, \"EarlyExitException\");\n }\n constructor(message, token, previousToken) {\n super(message, token);\n this.previousToken = previousToken;\n this.name = EARLY_EXIT_EXCEPTION;\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js\nvar EOF_FOLLOW_KEY = {};\nvar IN_RULE_RECOVERY_EXCEPTION = \"InRuleRecoveryException\";\nvar InRuleRecoveryException = class extends Error {\n static {\n __name(this, \"InRuleRecoveryException\");\n }\n constructor(message) {\n super(message);\n this.name = IN_RULE_RECOVERY_EXCEPTION;\n }\n};\nvar Recoverable = class {\n static {\n __name(this, \"Recoverable\");\n }\n initRecoverable(config) {\n this.firstAfterRepMap = {};\n this.resyncFollows = {};\n this.recoveryEnabled = has_default(config, \"recoveryEnabled\") ? config.recoveryEnabled : DEFAULT_PARSER_CONFIG.recoveryEnabled;\n if (this.recoveryEnabled) {\n this.attemptInRepetitionRecovery = attemptInRepetitionRecovery;\n }\n }\n getTokenToInsert(tokType) {\n const tokToInsert = createTokenInstance(tokType, \"\", NaN, NaN, NaN, NaN, NaN, NaN);\n tokToInsert.isInsertedInRecovery = true;\n return tokToInsert;\n }\n canTokenTypeBeInsertedInRecovery(tokType) {\n return true;\n }\n canTokenTypeBeDeletedInRecovery(tokType) {\n return true;\n }\n tryInRepetitionRecovery(grammarRule, grammarRuleArgs, lookAheadFunc, expectedTokType) {\n const reSyncTokType = this.findReSyncTokenType();\n const savedLexerState = this.exportLexerState();\n const resyncedTokens = [];\n let passedResyncPoint = false;\n const nextTokenWithoutResync = this.LA(1);\n let currToken = this.LA(1);\n const generateErrorMessage = /* @__PURE__ */ __name(() => {\n const previousToken = this.LA(0);\n const msg = this.errorMessageProvider.buildMismatchTokenMessage({\n expected: expectedTokType,\n actual: nextTokenWithoutResync,\n previous: previousToken,\n ruleName: this.getCurrRuleFullName()\n });\n const error = new MismatchedTokenException(msg, nextTokenWithoutResync, this.LA(0));\n error.resyncedTokens = dropRight_default(resyncedTokens);\n this.SAVE_ERROR(error);\n }, \"generateErrorMessage\");\n while (!passedResyncPoint) {\n if (this.tokenMatcher(currToken, expectedTokType)) {\n generateErrorMessage();\n return;\n } else if (lookAheadFunc.call(this)) {\n generateErrorMessage();\n grammarRule.apply(this, grammarRuleArgs);\n return;\n } else if (this.tokenMatcher(currToken, reSyncTokType)) {\n passedResyncPoint = true;\n } else {\n currToken = this.SKIP_TOKEN();\n this.addToResyncTokens(currToken, resyncedTokens);\n }\n }\n this.importLexerState(savedLexerState);\n }\n shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck) {\n if (notStuck === false) {\n return false;\n }\n if (this.tokenMatcher(this.LA(1), expectTokAfterLastMatch)) {\n return false;\n }\n if (this.isBackTracking()) {\n return false;\n }\n if (this.canPerformInRuleRecovery(expectTokAfterLastMatch, this.getFollowsForInRuleRecovery(expectTokAfterLastMatch, nextTokIdx))) {\n return false;\n }\n return true;\n }\n // Error Recovery functionality\n getFollowsForInRuleRecovery(tokType, tokIdxInRule) {\n const grammarPath = this.getCurrentGrammarPath(tokType, tokIdxInRule);\n const follows = this.getNextPossibleTokenTypes(grammarPath);\n return follows;\n }\n tryInRuleRecovery(expectedTokType, follows) {\n if (this.canRecoverWithSingleTokenInsertion(expectedTokType, follows)) {\n const tokToInsert = this.getTokenToInsert(expectedTokType);\n return tokToInsert;\n }\n if (this.canRecoverWithSingleTokenDeletion(expectedTokType)) {\n const nextTok = this.SKIP_TOKEN();\n this.consumeToken();\n return nextTok;\n }\n throw new InRuleRecoveryException(\"sad sad panda\");\n }\n canPerformInRuleRecovery(expectedToken, follows) {\n return this.canRecoverWithSingleTokenInsertion(expectedToken, follows) || this.canRecoverWithSingleTokenDeletion(expectedToken);\n }\n canRecoverWithSingleTokenInsertion(expectedTokType, follows) {\n if (!this.canTokenTypeBeInsertedInRecovery(expectedTokType)) {\n return false;\n }\n if (isEmpty_default(follows)) {\n return false;\n }\n const mismatchedTok = this.LA(1);\n const isMisMatchedTokInFollows = find_default(follows, (possibleFollowsTokType) => {\n return this.tokenMatcher(mismatchedTok, possibleFollowsTokType);\n }) !== void 0;\n return isMisMatchedTokInFollows;\n }\n canRecoverWithSingleTokenDeletion(expectedTokType) {\n if (!this.canTokenTypeBeDeletedInRecovery(expectedTokType)) {\n return false;\n }\n const isNextTokenWhatIsExpected = this.tokenMatcher(this.LA(2), expectedTokType);\n return isNextTokenWhatIsExpected;\n }\n isInCurrentRuleReSyncSet(tokenTypeIdx) {\n const followKey = this.getCurrFollowKey();\n const currentRuleReSyncSet = this.getFollowSetFromFollowKey(followKey);\n return includes_default(currentRuleReSyncSet, tokenTypeIdx);\n }\n findReSyncTokenType() {\n const allPossibleReSyncTokTypes = this.flattenFollowSet();\n let nextToken = this.LA(1);\n let k = 2;\n while (true) {\n const foundMatch = find_default(allPossibleReSyncTokTypes, (resyncTokType) => {\n const canMatch = tokenMatcher(nextToken, resyncTokType);\n return canMatch;\n });\n if (foundMatch !== void 0) {\n return foundMatch;\n }\n nextToken = this.LA(k);\n k++;\n }\n }\n getCurrFollowKey() {\n if (this.RULE_STACK.length === 1) {\n return EOF_FOLLOW_KEY;\n }\n const currRuleShortName = this.getLastExplicitRuleShortName();\n const currRuleIdx = this.getLastExplicitRuleOccurrenceIndex();\n const prevRuleShortName = this.getPreviousExplicitRuleShortName();\n return {\n ruleName: this.shortRuleNameToFullName(currRuleShortName),\n idxInCallingRule: currRuleIdx,\n inRule: this.shortRuleNameToFullName(prevRuleShortName)\n };\n }\n buildFullFollowKeyStack() {\n const explicitRuleStack = this.RULE_STACK;\n const explicitOccurrenceStack = this.RULE_OCCURRENCE_STACK;\n return map_default(explicitRuleStack, (ruleName, idx) => {\n if (idx === 0) {\n return EOF_FOLLOW_KEY;\n }\n return {\n ruleName: this.shortRuleNameToFullName(ruleName),\n idxInCallingRule: explicitOccurrenceStack[idx],\n inRule: this.shortRuleNameToFullName(explicitRuleStack[idx - 1])\n };\n });\n }\n flattenFollowSet() {\n const followStack = map_default(this.buildFullFollowKeyStack(), (currKey) => {\n return this.getFollowSetFromFollowKey(currKey);\n });\n return flatten_default(followStack);\n }\n getFollowSetFromFollowKey(followKey) {\n if (followKey === EOF_FOLLOW_KEY) {\n return [EOF];\n }\n const followName = followKey.ruleName + followKey.idxInCallingRule + IN + followKey.inRule;\n return this.resyncFollows[followName];\n }\n // It does not make any sense to include a virtual EOF token in the list of resynced tokens\n // as EOF does not really exist and thus does not contain any useful information (line/column numbers)\n addToResyncTokens(token, resyncTokens) {\n if (!this.tokenMatcher(token, EOF)) {\n resyncTokens.push(token);\n }\n return resyncTokens;\n }\n reSyncTo(tokType) {\n const resyncedTokens = [];\n let nextTok = this.LA(1);\n while (this.tokenMatcher(nextTok, tokType) === false) {\n nextTok = this.SKIP_TOKEN();\n this.addToResyncTokens(nextTok, resyncedTokens);\n }\n return dropRight_default(resyncedTokens);\n }\n attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) {\n }\n getCurrentGrammarPath(tokType, tokIdxInRule) {\n const pathRuleStack = this.getHumanReadableRuleStack();\n const pathOccurrenceStack = clone_default(this.RULE_OCCURRENCE_STACK);\n const grammarPath = {\n ruleStack: pathRuleStack,\n occurrenceStack: pathOccurrenceStack,\n lastTok: tokType,\n lastTokOccurrence: tokIdxInRule\n };\n return grammarPath;\n }\n getHumanReadableRuleStack() {\n return map_default(this.RULE_STACK, (currShortName) => this.shortRuleNameToFullName(currShortName));\n }\n};\nfunction attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) {\n const key = this.getKeyForAutomaticLookahead(dslMethodIdx, prodOccurrence);\n let firstAfterRepInfo = this.firstAfterRepMap[key];\n if (firstAfterRepInfo === void 0) {\n const currRuleName = this.getCurrRuleFullName();\n const ruleGrammar = this.getGAstProductions()[currRuleName];\n const walker = new nextToksWalker(ruleGrammar, prodOccurrence);\n firstAfterRepInfo = walker.startWalking();\n this.firstAfterRepMap[key] = firstAfterRepInfo;\n }\n let expectTokAfterLastMatch = firstAfterRepInfo.token;\n let nextTokIdx = firstAfterRepInfo.occurrence;\n const isEndOfRule = firstAfterRepInfo.isEndOfRule;\n if (this.RULE_STACK.length === 1 && isEndOfRule && expectTokAfterLastMatch === void 0) {\n expectTokAfterLastMatch = EOF;\n nextTokIdx = 1;\n }\n if (expectTokAfterLastMatch === void 0 || nextTokIdx === void 0) {\n return;\n }\n if (this.shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck)) {\n this.tryInRepetitionRecovery(prodFunc, args, lookaheadFunc, expectTokAfterLastMatch);\n }\n}\n__name(attemptInRepetitionRecovery, \"attemptInRepetitionRecovery\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/keys.js\nvar BITS_FOR_METHOD_TYPE = 4;\nvar BITS_FOR_OCCURRENCE_IDX = 8;\nvar BITS_FOR_ALT_IDX = 8;\nvar OR_IDX = 1 << BITS_FOR_OCCURRENCE_IDX;\nvar OPTION_IDX = 2 << BITS_FOR_OCCURRENCE_IDX;\nvar MANY_IDX = 3 << BITS_FOR_OCCURRENCE_IDX;\nvar AT_LEAST_ONE_IDX = 4 << BITS_FOR_OCCURRENCE_IDX;\nvar MANY_SEP_IDX = 5 << BITS_FOR_OCCURRENCE_IDX;\nvar AT_LEAST_ONE_SEP_IDX = 6 << BITS_FOR_OCCURRENCE_IDX;\nfunction getKeyForAutomaticLookahead(ruleIdx, dslMethodIdx, occurrence) {\n return occurrence | dslMethodIdx | ruleIdx;\n}\n__name(getKeyForAutomaticLookahead, \"getKeyForAutomaticLookahead\");\nvar BITS_START_FOR_ALT_IDX = 32 - BITS_FOR_ALT_IDX;\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/grammar/llk_lookahead.js\nvar LLkLookaheadStrategy = class {\n static {\n __name(this, \"LLkLookaheadStrategy\");\n }\n constructor(options) {\n var _a;\n this.maxLookahead = (_a = options === null || options === void 0 ? void 0 : options.maxLookahead) !== null && _a !== void 0 ? _a : DEFAULT_PARSER_CONFIG.maxLookahead;\n }\n validate(options) {\n const leftRecursionErrors = this.validateNoLeftRecursion(options.rules);\n if (isEmpty_default(leftRecursionErrors)) {\n const emptyAltErrors = this.validateEmptyOrAlternatives(options.rules);\n const ambiguousAltsErrors = this.validateAmbiguousAlternationAlternatives(options.rules, this.maxLookahead);\n const emptyRepetitionErrors = this.validateSomeNonEmptyLookaheadPath(options.rules, this.maxLookahead);\n const allErrors = [\n ...leftRecursionErrors,\n ...emptyAltErrors,\n ...ambiguousAltsErrors,\n ...emptyRepetitionErrors\n ];\n return allErrors;\n }\n return leftRecursionErrors;\n }\n validateNoLeftRecursion(rules) {\n return flatMap_default(rules, (currTopRule) => validateNoLeftRecursion(currTopRule, currTopRule, defaultGrammarValidatorErrorProvider));\n }\n validateEmptyOrAlternatives(rules) {\n return flatMap_default(rules, (currTopRule) => validateEmptyOrAlternative(currTopRule, defaultGrammarValidatorErrorProvider));\n }\n validateAmbiguousAlternationAlternatives(rules, maxLookahead) {\n return flatMap_default(rules, (currTopRule) => validateAmbiguousAlternationAlternatives(currTopRule, maxLookahead, defaultGrammarValidatorErrorProvider));\n }\n validateSomeNonEmptyLookaheadPath(rules, maxLookahead) {\n return validateSomeNonEmptyLookaheadPath(rules, maxLookahead, defaultGrammarValidatorErrorProvider);\n }\n buildLookaheadForAlternation(options) {\n return buildLookaheadFuncForOr(options.prodOccurrence, options.rule, options.maxLookahead, options.hasPredicates, options.dynamicTokensEnabled, buildAlternativesLookAheadFunc);\n }\n buildLookaheadForOptional(options) {\n return buildLookaheadFuncForOptionalProd(options.prodOccurrence, options.rule, options.maxLookahead, options.dynamicTokensEnabled, getProdType(options.prodType), buildSingleAlternativeLookaheadFunction);\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js\nvar LooksAhead = class {\n static {\n __name(this, \"LooksAhead\");\n }\n initLooksAhead(config) {\n this.dynamicTokensEnabled = has_default(config, \"dynamicTokensEnabled\") ? config.dynamicTokensEnabled : DEFAULT_PARSER_CONFIG.dynamicTokensEnabled;\n this.maxLookahead = has_default(config, \"maxLookahead\") ? config.maxLookahead : DEFAULT_PARSER_CONFIG.maxLookahead;\n this.lookaheadStrategy = has_default(config, \"lookaheadStrategy\") ? config.lookaheadStrategy : new LLkLookaheadStrategy({ maxLookahead: this.maxLookahead });\n this.lookAheadFuncsCache = /* @__PURE__ */ new Map();\n }\n preComputeLookaheadFunctions(rules) {\n forEach_default(rules, (currRule) => {\n this.TRACE_INIT(`${currRule.name} Rule Lookahead`, () => {\n const { alternation: alternation2, repetition: repetition2, option: option2, repetitionMandatory: repetitionMandatory2, repetitionMandatoryWithSeparator, repetitionWithSeparator } = collectMethods(currRule);\n forEach_default(alternation2, (currProd) => {\n const prodIdx = currProd.idx === 0 ? \"\" : currProd.idx;\n this.TRACE_INIT(`${getProductionDslName(currProd)}${prodIdx}`, () => {\n const laFunc = this.lookaheadStrategy.buildLookaheadForAlternation({\n prodOccurrence: currProd.idx,\n rule: currRule,\n maxLookahead: currProd.maxLookahead || this.maxLookahead,\n hasPredicates: currProd.hasPredicates,\n dynamicTokensEnabled: this.dynamicTokensEnabled\n });\n const key = getKeyForAutomaticLookahead(this.fullRuleNameToShort[currRule.name], OR_IDX, currProd.idx);\n this.setLaFuncCache(key, laFunc);\n });\n });\n forEach_default(repetition2, (currProd) => {\n this.computeLookaheadFunc(currRule, currProd.idx, MANY_IDX, \"Repetition\", currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach_default(option2, (currProd) => {\n this.computeLookaheadFunc(currRule, currProd.idx, OPTION_IDX, \"Option\", currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach_default(repetitionMandatory2, (currProd) => {\n this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_IDX, \"RepetitionMandatory\", currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach_default(repetitionMandatoryWithSeparator, (currProd) => {\n this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_SEP_IDX, \"RepetitionMandatoryWithSeparator\", currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach_default(repetitionWithSeparator, (currProd) => {\n this.computeLookaheadFunc(currRule, currProd.idx, MANY_SEP_IDX, \"RepetitionWithSeparator\", currProd.maxLookahead, getProductionDslName(currProd));\n });\n });\n });\n }\n computeLookaheadFunc(rule, prodOccurrence, prodKey, prodType, prodMaxLookahead, dslMethodName) {\n this.TRACE_INIT(`${dslMethodName}${prodOccurrence === 0 ? \"\" : prodOccurrence}`, () => {\n const laFunc = this.lookaheadStrategy.buildLookaheadForOptional({\n prodOccurrence,\n rule,\n maxLookahead: prodMaxLookahead || this.maxLookahead,\n dynamicTokensEnabled: this.dynamicTokensEnabled,\n prodType\n });\n const key = getKeyForAutomaticLookahead(this.fullRuleNameToShort[rule.name], prodKey, prodOccurrence);\n this.setLaFuncCache(key, laFunc);\n });\n }\n // this actually returns a number, but it is always used as a string (object prop key)\n getKeyForAutomaticLookahead(dslMethodIdx, occurrence) {\n const currRuleShortName = this.getLastExplicitRuleShortName();\n return getKeyForAutomaticLookahead(currRuleShortName, dslMethodIdx, occurrence);\n }\n getLaFuncFromCache(key) {\n return this.lookAheadFuncsCache.get(key);\n }\n /* istanbul ignore next */\n setLaFuncCache(key, value) {\n this.lookAheadFuncsCache.set(key, value);\n }\n};\nvar DslMethodsCollectorVisitor = class extends GAstVisitor {\n static {\n __name(this, \"DslMethodsCollectorVisitor\");\n }\n constructor() {\n super(...arguments);\n this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: []\n };\n }\n reset() {\n this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: []\n };\n }\n visitOption(option2) {\n this.dslMethods.option.push(option2);\n }\n visitRepetitionWithSeparator(manySep) {\n this.dslMethods.repetitionWithSeparator.push(manySep);\n }\n visitRepetitionMandatory(atLeastOne) {\n this.dslMethods.repetitionMandatory.push(atLeastOne);\n }\n visitRepetitionMandatoryWithSeparator(atLeastOneSep) {\n this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep);\n }\n visitRepetition(many) {\n this.dslMethods.repetition.push(many);\n }\n visitAlternation(or) {\n this.dslMethods.alternation.push(or);\n }\n};\nvar collectorVisitor = new DslMethodsCollectorVisitor();\nfunction collectMethods(rule) {\n collectorVisitor.reset();\n rule.accept(collectorVisitor);\n const dslMethods = collectorVisitor.dslMethods;\n collectorVisitor.reset();\n return dslMethods;\n}\n__name(collectMethods, \"collectMethods\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/cst/cst.js\nfunction setNodeLocationOnlyOffset(currNodeLocation, newLocationInfo) {\n if (isNaN(currNodeLocation.startOffset) === true) {\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n } else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n}\n__name(setNodeLocationOnlyOffset, \"setNodeLocationOnlyOffset\");\nfunction setNodeLocationFull(currNodeLocation, newLocationInfo) {\n if (isNaN(currNodeLocation.startOffset) === true) {\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.startColumn = newLocationInfo.startColumn;\n currNodeLocation.startLine = newLocationInfo.startLine;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n } else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n}\n__name(setNodeLocationFull, \"setNodeLocationFull\");\nfunction addTerminalToCst(node, token, tokenTypeName) {\n if (node.children[tokenTypeName] === void 0) {\n node.children[tokenTypeName] = [token];\n } else {\n node.children[tokenTypeName].push(token);\n }\n}\n__name(addTerminalToCst, \"addTerminalToCst\");\nfunction addNoneTerminalToCst(node, ruleName, ruleResult) {\n if (node.children[ruleName] === void 0) {\n node.children[ruleName] = [ruleResult];\n } else {\n node.children[ruleName].push(ruleResult);\n }\n}\n__name(addNoneTerminalToCst, \"addNoneTerminalToCst\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/lang/lang_extensions.js\nvar NAME = \"name\";\nfunction defineNameProp(obj, nameValue) {\n Object.defineProperty(obj, NAME, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: nameValue\n });\n}\n__name(defineNameProp, \"defineNameProp\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js\nfunction defaultVisit(ctx, param) {\n const childrenNames = keys_default(ctx);\n const childrenNamesLength = childrenNames.length;\n for (let i = 0; i < childrenNamesLength; i++) {\n const currChildName = childrenNames[i];\n const currChildArray = ctx[currChildName];\n const currChildArrayLength = currChildArray.length;\n for (let j = 0; j < currChildArrayLength; j++) {\n const currChild = currChildArray[j];\n if (currChild.tokenTypeIdx === void 0) {\n this[currChild.name](currChild.children, param);\n }\n }\n }\n}\n__name(defaultVisit, \"defaultVisit\");\nfunction createBaseSemanticVisitorConstructor(grammarName, ruleNames) {\n const derivedConstructor = /* @__PURE__ */ __name(function() {\n }, \"derivedConstructor\");\n defineNameProp(derivedConstructor, grammarName + \"BaseSemantics\");\n const semanticProto = {\n visit: /* @__PURE__ */ __name(function(cstNode, param) {\n if (isArray_default(cstNode)) {\n cstNode = cstNode[0];\n }\n if (isUndefined_default(cstNode)) {\n return void 0;\n }\n return this[cstNode.name](cstNode.children, param);\n }, \"visit\"),\n validateVisitor: /* @__PURE__ */ __name(function() {\n const semanticDefinitionErrors = validateVisitor(this, ruleNames);\n if (!isEmpty_default(semanticDefinitionErrors)) {\n const errorMessages = map_default(semanticDefinitionErrors, (currDefError) => currDefError.msg);\n throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${errorMessages.join(\"\\n\\n\").replace(/\\n/g, \"\\n\t\")}`);\n }\n }, \"validateVisitor\")\n };\n derivedConstructor.prototype = semanticProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n derivedConstructor._RULE_NAMES = ruleNames;\n return derivedConstructor;\n}\n__name(createBaseSemanticVisitorConstructor, \"createBaseSemanticVisitorConstructor\");\nfunction createBaseVisitorConstructorWithDefaults(grammarName, ruleNames, baseConstructor) {\n const derivedConstructor = /* @__PURE__ */ __name(function() {\n }, \"derivedConstructor\");\n defineNameProp(derivedConstructor, grammarName + \"BaseSemanticsWithDefaults\");\n const withDefaultsProto = Object.create(baseConstructor.prototype);\n forEach_default(ruleNames, (ruleName) => {\n withDefaultsProto[ruleName] = defaultVisit;\n });\n derivedConstructor.prototype = withDefaultsProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n return derivedConstructor;\n}\n__name(createBaseVisitorConstructorWithDefaults, \"createBaseVisitorConstructorWithDefaults\");\nvar CstVisitorDefinitionError;\n(function(CstVisitorDefinitionError2) {\n CstVisitorDefinitionError2[CstVisitorDefinitionError2[\"REDUNDANT_METHOD\"] = 0] = \"REDUNDANT_METHOD\";\n CstVisitorDefinitionError2[CstVisitorDefinitionError2[\"MISSING_METHOD\"] = 1] = \"MISSING_METHOD\";\n})(CstVisitorDefinitionError || (CstVisitorDefinitionError = {}));\nfunction validateVisitor(visitorInstance, ruleNames) {\n const missingErrors = validateMissingCstMethods(visitorInstance, ruleNames);\n return missingErrors;\n}\n__name(validateVisitor, \"validateVisitor\");\nfunction validateMissingCstMethods(visitorInstance, ruleNames) {\n const missingRuleNames = filter_default(ruleNames, (currRuleName) => {\n return isFunction_default(visitorInstance[currRuleName]) === false;\n });\n const errors = map_default(missingRuleNames, (currRuleName) => {\n return {\n msg: `Missing visitor method: <${currRuleName}> on ${visitorInstance.constructor.name} CST Visitor.`,\n type: CstVisitorDefinitionError.MISSING_METHOD,\n methodName: currRuleName\n };\n });\n return compact_default(errors);\n}\n__name(validateMissingCstMethods, \"validateMissingCstMethods\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js\nvar TreeBuilder = class {\n static {\n __name(this, \"TreeBuilder\");\n }\n initTreeBuilder(config) {\n this.CST_STACK = [];\n this.outputCst = config.outputCst;\n this.nodeLocationTracking = has_default(config, \"nodeLocationTracking\") ? config.nodeLocationTracking : DEFAULT_PARSER_CONFIG.nodeLocationTracking;\n if (!this.outputCst) {\n this.cstInvocationStateUpdate = noop_default;\n this.cstFinallyStateUpdate = noop_default;\n this.cstPostTerminal = noop_default;\n this.cstPostNonTerminal = noop_default;\n this.cstPostRule = noop_default;\n } else {\n if (/full/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = setNodeLocationFull;\n this.setNodeLocationFromNode = setNodeLocationFull;\n this.cstPostRule = noop_default;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery;\n } else {\n this.setNodeLocationFromToken = noop_default;\n this.setNodeLocationFromNode = noop_default;\n this.cstPostRule = this.cstPostRuleFull;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular;\n }\n } else if (/onlyOffset/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = setNodeLocationOnlyOffset;\n this.setNodeLocationFromNode = setNodeLocationOnlyOffset;\n this.cstPostRule = noop_default;\n this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery;\n } else {\n this.setNodeLocationFromToken = noop_default;\n this.setNodeLocationFromNode = noop_default;\n this.cstPostRule = this.cstPostRuleOnlyOffset;\n this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular;\n }\n } else if (/none/i.test(this.nodeLocationTracking)) {\n this.setNodeLocationFromToken = noop_default;\n this.setNodeLocationFromNode = noop_default;\n this.cstPostRule = noop_default;\n this.setInitialNodeLocation = noop_default;\n } else {\n throw Error(`Invalid config option: \"${config.nodeLocationTracking}\"`);\n }\n }\n }\n setInitialNodeLocationOnlyOffsetRecovery(cstNode) {\n cstNode.location = {\n startOffset: NaN,\n endOffset: NaN\n };\n }\n setInitialNodeLocationOnlyOffsetRegular(cstNode) {\n cstNode.location = {\n // without error recovery the starting Location of a new CstNode is guaranteed\n // To be the next Token's startOffset (for valid inputs).\n // For invalid inputs there won't be any CSTOutput so this potential\n // inaccuracy does not matter\n startOffset: this.LA(1).startOffset,\n endOffset: NaN\n };\n }\n setInitialNodeLocationFullRecovery(cstNode) {\n cstNode.location = {\n startOffset: NaN,\n startLine: NaN,\n startColumn: NaN,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN\n };\n }\n /**\n * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work\n \n * @param cstNode\n */\n setInitialNodeLocationFullRegular(cstNode) {\n const nextToken = this.LA(1);\n cstNode.location = {\n startOffset: nextToken.startOffset,\n startLine: nextToken.startLine,\n startColumn: nextToken.startColumn,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN\n };\n }\n cstInvocationStateUpdate(fullRuleName) {\n const cstNode = {\n name: fullRuleName,\n children: /* @__PURE__ */ Object.create(null)\n };\n this.setInitialNodeLocation(cstNode);\n this.CST_STACK.push(cstNode);\n }\n cstFinallyStateUpdate() {\n this.CST_STACK.pop();\n }\n cstPostRuleFull(ruleCstNode) {\n const prevToken = this.LA(0);\n const loc = ruleCstNode.location;\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n loc.endLine = prevToken.endLine;\n loc.endColumn = prevToken.endColumn;\n } else {\n loc.startOffset = NaN;\n loc.startLine = NaN;\n loc.startColumn = NaN;\n }\n }\n cstPostRuleOnlyOffset(ruleCstNode) {\n const prevToken = this.LA(0);\n const loc = ruleCstNode.location;\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n } else {\n loc.startOffset = NaN;\n }\n }\n cstPostTerminal(key, consumedToken) {\n const rootCst = this.CST_STACK[this.CST_STACK.length - 1];\n addTerminalToCst(rootCst, consumedToken, key);\n this.setNodeLocationFromToken(rootCst.location, consumedToken);\n }\n cstPostNonTerminal(ruleCstResult, ruleName) {\n const preCstNode = this.CST_STACK[this.CST_STACK.length - 1];\n addNoneTerminalToCst(preCstNode, ruleName, ruleCstResult);\n this.setNodeLocationFromNode(preCstNode.location, ruleCstResult.location);\n }\n getBaseCstVisitorConstructor() {\n if (isUndefined_default(this.baseCstVisitorConstructor)) {\n const newBaseCstVisitorConstructor = createBaseSemanticVisitorConstructor(this.className, keys_default(this.gastProductionsCache));\n this.baseCstVisitorConstructor = newBaseCstVisitorConstructor;\n return newBaseCstVisitorConstructor;\n }\n return this.baseCstVisitorConstructor;\n }\n getBaseCstVisitorConstructorWithDefaults() {\n if (isUndefined_default(this.baseCstVisitorWithDefaultsConstructor)) {\n const newConstructor = createBaseVisitorConstructorWithDefaults(this.className, keys_default(this.gastProductionsCache), this.getBaseCstVisitorConstructor());\n this.baseCstVisitorWithDefaultsConstructor = newConstructor;\n return newConstructor;\n }\n return this.baseCstVisitorWithDefaultsConstructor;\n }\n getLastExplicitRuleShortName() {\n const ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 1];\n }\n getPreviousExplicitRuleShortName() {\n const ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 2];\n }\n getLastExplicitRuleOccurrenceIndex() {\n const occurrenceStack = this.RULE_OCCURRENCE_STACK;\n return occurrenceStack[occurrenceStack.length - 1];\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js\nvar LexerAdapter = class {\n static {\n __name(this, \"LexerAdapter\");\n }\n initLexerAdapter() {\n this.tokVector = [];\n this.tokVectorLength = 0;\n this.currIdx = -1;\n }\n set input(newInput) {\n if (this.selfAnalysisDone !== true) {\n throw Error(`Missing invocation at the end of the Parser's constructor.`);\n }\n this.reset();\n this.tokVector = newInput;\n this.tokVectorLength = newInput.length;\n }\n get input() {\n return this.tokVector;\n }\n // skips a token and returns the next token\n SKIP_TOKEN() {\n if (this.currIdx <= this.tokVector.length - 2) {\n this.consumeToken();\n return this.LA(1);\n } else {\n return END_OF_FILE;\n }\n }\n // Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers\n // or lexers dependent on parser context.\n LA(howMuch) {\n const soughtIdx = this.currIdx + howMuch;\n if (soughtIdx < 0 || this.tokVectorLength <= soughtIdx) {\n return END_OF_FILE;\n } else {\n return this.tokVector[soughtIdx];\n }\n }\n consumeToken() {\n this.currIdx++;\n }\n exportLexerState() {\n return this.currIdx;\n }\n importLexerState(newState2) {\n this.currIdx = newState2;\n }\n resetLexerState() {\n this.currIdx = -1;\n }\n moveToTerminatedState() {\n this.currIdx = this.tokVector.length - 1;\n }\n getLexerPosition() {\n return this.exportLexerState();\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js\nvar RecognizerApi = class {\n static {\n __name(this, \"RecognizerApi\");\n }\n ACTION(impl) {\n return impl.call(this);\n }\n consume(idx, tokType, options) {\n return this.consumeInternal(tokType, idx, options);\n }\n subrule(idx, ruleToCall, options) {\n return this.subruleInternal(ruleToCall, idx, options);\n }\n option(idx, actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, idx);\n }\n or(idx, altsOrOpts) {\n return this.orInternal(altsOrOpts, idx);\n }\n many(idx, actionORMethodDef) {\n return this.manyInternal(idx, actionORMethodDef);\n }\n atLeastOne(idx, actionORMethodDef) {\n return this.atLeastOneInternal(idx, actionORMethodDef);\n }\n CONSUME(tokType, options) {\n return this.consumeInternal(tokType, 0, options);\n }\n CONSUME1(tokType, options) {\n return this.consumeInternal(tokType, 1, options);\n }\n CONSUME2(tokType, options) {\n return this.consumeInternal(tokType, 2, options);\n }\n CONSUME3(tokType, options) {\n return this.consumeInternal(tokType, 3, options);\n }\n CONSUME4(tokType, options) {\n return this.consumeInternal(tokType, 4, options);\n }\n CONSUME5(tokType, options) {\n return this.consumeInternal(tokType, 5, options);\n }\n CONSUME6(tokType, options) {\n return this.consumeInternal(tokType, 6, options);\n }\n CONSUME7(tokType, options) {\n return this.consumeInternal(tokType, 7, options);\n }\n CONSUME8(tokType, options) {\n return this.consumeInternal(tokType, 8, options);\n }\n CONSUME9(tokType, options) {\n return this.consumeInternal(tokType, 9, options);\n }\n SUBRULE(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 0, options);\n }\n SUBRULE1(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 1, options);\n }\n SUBRULE2(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 2, options);\n }\n SUBRULE3(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 3, options);\n }\n SUBRULE4(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 4, options);\n }\n SUBRULE5(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 5, options);\n }\n SUBRULE6(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 6, options);\n }\n SUBRULE7(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 7, options);\n }\n SUBRULE8(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 8, options);\n }\n SUBRULE9(ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 9, options);\n }\n OPTION(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 0);\n }\n OPTION1(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 1);\n }\n OPTION2(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 2);\n }\n OPTION3(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 3);\n }\n OPTION4(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 4);\n }\n OPTION5(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 5);\n }\n OPTION6(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 6);\n }\n OPTION7(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 7);\n }\n OPTION8(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 8);\n }\n OPTION9(actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 9);\n }\n OR(altsOrOpts) {\n return this.orInternal(altsOrOpts, 0);\n }\n OR1(altsOrOpts) {\n return this.orInternal(altsOrOpts, 1);\n }\n OR2(altsOrOpts) {\n return this.orInternal(altsOrOpts, 2);\n }\n OR3(altsOrOpts) {\n return this.orInternal(altsOrOpts, 3);\n }\n OR4(altsOrOpts) {\n return this.orInternal(altsOrOpts, 4);\n }\n OR5(altsOrOpts) {\n return this.orInternal(altsOrOpts, 5);\n }\n OR6(altsOrOpts) {\n return this.orInternal(altsOrOpts, 6);\n }\n OR7(altsOrOpts) {\n return this.orInternal(altsOrOpts, 7);\n }\n OR8(altsOrOpts) {\n return this.orInternal(altsOrOpts, 8);\n }\n OR9(altsOrOpts) {\n return this.orInternal(altsOrOpts, 9);\n }\n MANY(actionORMethodDef) {\n this.manyInternal(0, actionORMethodDef);\n }\n MANY1(actionORMethodDef) {\n this.manyInternal(1, actionORMethodDef);\n }\n MANY2(actionORMethodDef) {\n this.manyInternal(2, actionORMethodDef);\n }\n MANY3(actionORMethodDef) {\n this.manyInternal(3, actionORMethodDef);\n }\n MANY4(actionORMethodDef) {\n this.manyInternal(4, actionORMethodDef);\n }\n MANY5(actionORMethodDef) {\n this.manyInternal(5, actionORMethodDef);\n }\n MANY6(actionORMethodDef) {\n this.manyInternal(6, actionORMethodDef);\n }\n MANY7(actionORMethodDef) {\n this.manyInternal(7, actionORMethodDef);\n }\n MANY8(actionORMethodDef) {\n this.manyInternal(8, actionORMethodDef);\n }\n MANY9(actionORMethodDef) {\n this.manyInternal(9, actionORMethodDef);\n }\n MANY_SEP(options) {\n this.manySepFirstInternal(0, options);\n }\n MANY_SEP1(options) {\n this.manySepFirstInternal(1, options);\n }\n MANY_SEP2(options) {\n this.manySepFirstInternal(2, options);\n }\n MANY_SEP3(options) {\n this.manySepFirstInternal(3, options);\n }\n MANY_SEP4(options) {\n this.manySepFirstInternal(4, options);\n }\n MANY_SEP5(options) {\n this.manySepFirstInternal(5, options);\n }\n MANY_SEP6(options) {\n this.manySepFirstInternal(6, options);\n }\n MANY_SEP7(options) {\n this.manySepFirstInternal(7, options);\n }\n MANY_SEP8(options) {\n this.manySepFirstInternal(8, options);\n }\n MANY_SEP9(options) {\n this.manySepFirstInternal(9, options);\n }\n AT_LEAST_ONE(actionORMethodDef) {\n this.atLeastOneInternal(0, actionORMethodDef);\n }\n AT_LEAST_ONE1(actionORMethodDef) {\n return this.atLeastOneInternal(1, actionORMethodDef);\n }\n AT_LEAST_ONE2(actionORMethodDef) {\n this.atLeastOneInternal(2, actionORMethodDef);\n }\n AT_LEAST_ONE3(actionORMethodDef) {\n this.atLeastOneInternal(3, actionORMethodDef);\n }\n AT_LEAST_ONE4(actionORMethodDef) {\n this.atLeastOneInternal(4, actionORMethodDef);\n }\n AT_LEAST_ONE5(actionORMethodDef) {\n this.atLeastOneInternal(5, actionORMethodDef);\n }\n AT_LEAST_ONE6(actionORMethodDef) {\n this.atLeastOneInternal(6, actionORMethodDef);\n }\n AT_LEAST_ONE7(actionORMethodDef) {\n this.atLeastOneInternal(7, actionORMethodDef);\n }\n AT_LEAST_ONE8(actionORMethodDef) {\n this.atLeastOneInternal(8, actionORMethodDef);\n }\n AT_LEAST_ONE9(actionORMethodDef) {\n this.atLeastOneInternal(9, actionORMethodDef);\n }\n AT_LEAST_ONE_SEP(options) {\n this.atLeastOneSepFirstInternal(0, options);\n }\n AT_LEAST_ONE_SEP1(options) {\n this.atLeastOneSepFirstInternal(1, options);\n }\n AT_LEAST_ONE_SEP2(options) {\n this.atLeastOneSepFirstInternal(2, options);\n }\n AT_LEAST_ONE_SEP3(options) {\n this.atLeastOneSepFirstInternal(3, options);\n }\n AT_LEAST_ONE_SEP4(options) {\n this.atLeastOneSepFirstInternal(4, options);\n }\n AT_LEAST_ONE_SEP5(options) {\n this.atLeastOneSepFirstInternal(5, options);\n }\n AT_LEAST_ONE_SEP6(options) {\n this.atLeastOneSepFirstInternal(6, options);\n }\n AT_LEAST_ONE_SEP7(options) {\n this.atLeastOneSepFirstInternal(7, options);\n }\n AT_LEAST_ONE_SEP8(options) {\n this.atLeastOneSepFirstInternal(8, options);\n }\n AT_LEAST_ONE_SEP9(options) {\n this.atLeastOneSepFirstInternal(9, options);\n }\n RULE(name, implementation, config = DEFAULT_RULE_CONFIG) {\n if (includes_default(this.definedRulesNames, name)) {\n const errMsg = defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({\n topLevelRule: name,\n grammarName: this.className\n });\n const error = {\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: name\n };\n this.definitionErrors.push(error);\n }\n this.definedRulesNames.push(name);\n const ruleImplementation = this.defineRule(name, implementation, config);\n this[name] = ruleImplementation;\n return ruleImplementation;\n }\n OVERRIDE_RULE(name, impl, config = DEFAULT_RULE_CONFIG) {\n const ruleErrors = validateRuleIsOverridden(name, this.definedRulesNames, this.className);\n this.definitionErrors = this.definitionErrors.concat(ruleErrors);\n const ruleImplementation = this.defineRule(name, impl, config);\n this[name] = ruleImplementation;\n return ruleImplementation;\n }\n BACKTRACK(grammarRule, args) {\n return function() {\n this.isBackTrackingStack.push(1);\n const orgState = this.saveRecogState();\n try {\n grammarRule.apply(this, args);\n return true;\n } catch (e) {\n if (isRecognitionException(e)) {\n return false;\n } else {\n throw e;\n }\n } finally {\n this.reloadRecogState(orgState);\n this.isBackTrackingStack.pop();\n }\n };\n }\n // GAST export APIs\n getGAstProductions() {\n return this.gastProductionsCache;\n }\n getSerializedGastProductions() {\n return serializeGrammar(values_default(this.gastProductionsCache));\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js\nvar RecognizerEngine = class {\n static {\n __name(this, \"RecognizerEngine\");\n }\n initRecognizerEngine(tokenVocabulary, config) {\n this.className = this.constructor.name;\n this.shortRuleNameToFull = {};\n this.fullRuleNameToShort = {};\n this.ruleShortNameIdx = 256;\n this.tokenMatcher = tokenStructuredMatcherNoCategories;\n this.subruleIdx = 0;\n this.definedRulesNames = [];\n this.tokensMap = {};\n this.isBackTrackingStack = [];\n this.RULE_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n this.gastProductionsCache = {};\n if (has_default(config, \"serializedGrammar\")) {\n throw Error(\"The Parser's configuration can no longer contain a property.\\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\\n\tFor Further details.\");\n }\n if (isArray_default(tokenVocabulary)) {\n if (isEmpty_default(tokenVocabulary)) {\n throw Error(\"A Token Vocabulary cannot be empty.\\n\tNote that the first argument for the parser constructor\\n\tis no longer a Token vector (since v4.0).\");\n }\n if (typeof tokenVocabulary[0].startOffset === \"number\") {\n throw Error(\"The Parser constructor no longer accepts a token vector as the first argument.\\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\\n\tFor Further details.\");\n }\n }\n if (isArray_default(tokenVocabulary)) {\n this.tokensMap = reduce_default(tokenVocabulary, (acc, tokType) => {\n acc[tokType.name] = tokType;\n return acc;\n }, {});\n } else if (has_default(tokenVocabulary, \"modes\") && every_default(flatten_default(values_default(tokenVocabulary.modes)), isTokenType)) {\n const allTokenTypes2 = flatten_default(values_default(tokenVocabulary.modes));\n const uniqueTokens = uniq_default(allTokenTypes2);\n this.tokensMap = reduce_default(uniqueTokens, (acc, tokType) => {\n acc[tokType.name] = tokType;\n return acc;\n }, {});\n } else if (isObject_default(tokenVocabulary)) {\n this.tokensMap = clone_default(tokenVocabulary);\n } else {\n throw new Error(\" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition\");\n }\n this.tokensMap[\"EOF\"] = EOF;\n const allTokenTypes = has_default(tokenVocabulary, \"modes\") ? flatten_default(values_default(tokenVocabulary.modes)) : values_default(tokenVocabulary);\n const noTokenCategoriesUsed = every_default(allTokenTypes, (tokenConstructor) => isEmpty_default(tokenConstructor.categoryMatches));\n this.tokenMatcher = noTokenCategoriesUsed ? tokenStructuredMatcherNoCategories : tokenStructuredMatcher;\n augmentTokenTypes(values_default(this.tokensMap));\n }\n defineRule(ruleName, impl, config) {\n if (this.selfAnalysisDone) {\n throw Error(`Grammar rule <${ruleName}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);\n }\n const resyncEnabled = has_default(config, \"resyncEnabled\") ? config.resyncEnabled : DEFAULT_RULE_CONFIG.resyncEnabled;\n const recoveryValueFunc = has_default(config, \"recoveryValueFunc\") ? config.recoveryValueFunc : DEFAULT_RULE_CONFIG.recoveryValueFunc;\n const shortName = this.ruleShortNameIdx << BITS_FOR_METHOD_TYPE + BITS_FOR_OCCURRENCE_IDX;\n this.ruleShortNameIdx++;\n this.shortRuleNameToFull[shortName] = ruleName;\n this.fullRuleNameToShort[ruleName] = shortName;\n let invokeRuleWithTry;\n if (this.outputCst === true) {\n invokeRuleWithTry = /* @__PURE__ */ __name(function invokeRuleWithTry2(...args) {\n try {\n this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx);\n impl.apply(this, args);\n const cst = this.CST_STACK[this.CST_STACK.length - 1];\n this.cstPostRule(cst);\n return cst;\n } catch (e) {\n return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc);\n } finally {\n this.ruleFinallyStateUpdate();\n }\n }, \"invokeRuleWithTry\");\n } else {\n invokeRuleWithTry = /* @__PURE__ */ __name(function invokeRuleWithTryCst(...args) {\n try {\n this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx);\n return impl.apply(this, args);\n } catch (e) {\n return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc);\n } finally {\n this.ruleFinallyStateUpdate();\n }\n }, \"invokeRuleWithTryCst\");\n }\n const wrappedGrammarRule = Object.assign(invokeRuleWithTry, { ruleName, originalGrammarAction: impl });\n return wrappedGrammarRule;\n }\n invokeRuleCatch(e, resyncEnabledConfig, recoveryValueFunc) {\n const isFirstInvokedRule = this.RULE_STACK.length === 1;\n const reSyncEnabled = resyncEnabledConfig && !this.isBackTracking() && this.recoveryEnabled;\n if (isRecognitionException(e)) {\n const recogError = e;\n if (reSyncEnabled) {\n const reSyncTokType = this.findReSyncTokenType();\n if (this.isInCurrentRuleReSyncSet(reSyncTokType)) {\n recogError.resyncedTokens = this.reSyncTo(reSyncTokType);\n if (this.outputCst) {\n const partialCstResult = this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n return partialCstResult;\n } else {\n return recoveryValueFunc(e);\n }\n } else {\n if (this.outputCst) {\n const partialCstResult = this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n recogError.partialCstResult = partialCstResult;\n }\n throw recogError;\n }\n } else if (isFirstInvokedRule) {\n this.moveToTerminatedState();\n return recoveryValueFunc(e);\n } else {\n throw recogError;\n }\n } else {\n throw e;\n }\n }\n // Implementation of parsing DSL\n optionInternal(actionORMethodDef, occurrence) {\n const key = this.getKeyForAutomaticLookahead(OPTION_IDX, occurrence);\n return this.optionInternalLogic(actionORMethodDef, occurrence, key);\n }\n optionInternalLogic(actionORMethodDef, occurrence, key) {\n let lookAheadFunc = this.getLaFuncFromCache(key);\n let action;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n const predicate = actionORMethodDef.GATE;\n if (predicate !== void 0) {\n const orgLookaheadFunction = lookAheadFunc;\n lookAheadFunc = /* @__PURE__ */ __name(() => {\n return predicate.call(this) && orgLookaheadFunction.call(this);\n }, \"lookAheadFunc\");\n }\n } else {\n action = actionORMethodDef;\n }\n if (lookAheadFunc.call(this) === true) {\n return action.call(this);\n }\n return void 0;\n }\n atLeastOneInternal(prodOccurrence, actionORMethodDef) {\n const laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX, prodOccurrence);\n return this.atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n }\n atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, key) {\n let lookAheadFunc = this.getLaFuncFromCache(key);\n let action;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n const predicate = actionORMethodDef.GATE;\n if (predicate !== void 0) {\n const orgLookaheadFunction = lookAheadFunc;\n lookAheadFunc = /* @__PURE__ */ __name(() => {\n return predicate.call(this) && orgLookaheadFunction.call(this);\n }, \"lookAheadFunc\");\n }\n } else {\n action = actionORMethodDef;\n }\n if (lookAheadFunc.call(this) === true) {\n let notStuck = this.doSingleRepetition(action);\n while (lookAheadFunc.call(this) === true && notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n } else {\n throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY, actionORMethodDef.ERR_MSG);\n }\n this.attemptInRepetitionRecovery(this.atLeastOneInternal, [prodOccurrence, actionORMethodDef], lookAheadFunc, AT_LEAST_ONE_IDX, prodOccurrence, NextTerminalAfterAtLeastOneWalker);\n }\n atLeastOneSepFirstInternal(prodOccurrence, options) {\n const laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX, prodOccurrence);\n this.atLeastOneSepFirstInternalLogic(prodOccurrence, options, laKey);\n }\n atLeastOneSepFirstInternalLogic(prodOccurrence, options, key) {\n const action = options.DEF;\n const separator = options.SEP;\n const firstIterationLookaheadFunc = this.getLaFuncFromCache(key);\n if (firstIterationLookaheadFunc.call(this) === true) {\n action.call(this);\n const separatorLookAheadFunc = /* @__PURE__ */ __name(() => {\n return this.tokenMatcher(this.LA(1), separator);\n }, \"separatorLookAheadFunc\");\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n this.CONSUME(separator);\n action.call(this);\n }\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n NextTerminalAfterAtLeastOneSepWalker\n ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, NextTerminalAfterAtLeastOneSepWalker);\n } else {\n throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, options.ERR_MSG);\n }\n }\n manyInternal(prodOccurrence, actionORMethodDef) {\n const laKey = this.getKeyForAutomaticLookahead(MANY_IDX, prodOccurrence);\n return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n }\n manyInternalLogic(prodOccurrence, actionORMethodDef, key) {\n let lookaheadFunction = this.getLaFuncFromCache(key);\n let action;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n const predicate = actionORMethodDef.GATE;\n if (predicate !== void 0) {\n const orgLookaheadFunction = lookaheadFunction;\n lookaheadFunction = /* @__PURE__ */ __name(() => {\n return predicate.call(this) && orgLookaheadFunction.call(this);\n }, \"lookaheadFunction\");\n }\n } else {\n action = actionORMethodDef;\n }\n let notStuck = true;\n while (lookaheadFunction.call(this) === true && notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n this.attemptInRepetitionRecovery(\n this.manyInternal,\n [prodOccurrence, actionORMethodDef],\n lookaheadFunction,\n MANY_IDX,\n prodOccurrence,\n NextTerminalAfterManyWalker,\n // The notStuck parameter is only relevant when \"attemptInRepetitionRecovery\"\n // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP]\n // An infinite loop cannot occur as:\n // - Either the lookahead is guaranteed to consume something (Single Token Separator)\n // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out).\n notStuck\n );\n }\n manySepFirstInternal(prodOccurrence, options) {\n const laKey = this.getKeyForAutomaticLookahead(MANY_SEP_IDX, prodOccurrence);\n this.manySepFirstInternalLogic(prodOccurrence, options, laKey);\n }\n manySepFirstInternalLogic(prodOccurrence, options, key) {\n const action = options.DEF;\n const separator = options.SEP;\n const firstIterationLaFunc = this.getLaFuncFromCache(key);\n if (firstIterationLaFunc.call(this) === true) {\n action.call(this);\n const separatorLookAheadFunc = /* @__PURE__ */ __name(() => {\n return this.tokenMatcher(this.LA(1), separator);\n }, \"separatorLookAheadFunc\");\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n this.CONSUME(separator);\n action.call(this);\n }\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n NextTerminalAfterManySepWalker\n ], separatorLookAheadFunc, MANY_SEP_IDX, prodOccurrence, NextTerminalAfterManySepWalker);\n }\n }\n repetitionSepSecondInternal(prodOccurrence, separator, separatorLookAheadFunc, action, nextTerminalAfterWalker) {\n while (separatorLookAheadFunc()) {\n this.CONSUME(separator);\n action.call(this);\n }\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n nextTerminalAfterWalker\n ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, nextTerminalAfterWalker);\n }\n doSingleRepetition(action) {\n const beforeIteration = this.getLexerPosition();\n action.call(this);\n const afterIteration = this.getLexerPosition();\n return afterIteration > beforeIteration;\n }\n orInternal(altsOrOpts, occurrence) {\n const laKey = this.getKeyForAutomaticLookahead(OR_IDX, occurrence);\n const alts = isArray_default(altsOrOpts) ? altsOrOpts : altsOrOpts.DEF;\n const laFunc = this.getLaFuncFromCache(laKey);\n const altIdxToTake = laFunc.call(this, alts);\n if (altIdxToTake !== void 0) {\n const chosenAlternative = alts[altIdxToTake];\n return chosenAlternative.ALT.call(this);\n }\n this.raiseNoAltException(occurrence, altsOrOpts.ERR_MSG);\n }\n ruleFinallyStateUpdate() {\n this.RULE_STACK.pop();\n this.RULE_OCCURRENCE_STACK.pop();\n this.cstFinallyStateUpdate();\n if (this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) {\n const firstRedundantTok = this.LA(1);\n const errMsg = this.errorMessageProvider.buildNotAllInputParsedMessage({\n firstRedundant: firstRedundantTok,\n ruleName: this.getCurrRuleFullName()\n });\n this.SAVE_ERROR(new NotAllInputParsedException(errMsg, firstRedundantTok));\n }\n }\n subruleInternal(ruleToCall, idx, options) {\n let ruleResult;\n try {\n const args = options !== void 0 ? options.ARGS : void 0;\n this.subruleIdx = idx;\n ruleResult = ruleToCall.apply(this, args);\n this.cstPostNonTerminal(ruleResult, options !== void 0 && options.LABEL !== void 0 ? options.LABEL : ruleToCall.ruleName);\n return ruleResult;\n } catch (e) {\n throw this.subruleInternalError(e, options, ruleToCall.ruleName);\n }\n }\n subruleInternalError(e, options, ruleName) {\n if (isRecognitionException(e) && e.partialCstResult !== void 0) {\n this.cstPostNonTerminal(e.partialCstResult, options !== void 0 && options.LABEL !== void 0 ? options.LABEL : ruleName);\n delete e.partialCstResult;\n }\n throw e;\n }\n consumeInternal(tokType, idx, options) {\n let consumedToken;\n try {\n const nextToken = this.LA(1);\n if (this.tokenMatcher(nextToken, tokType) === true) {\n this.consumeToken();\n consumedToken = nextToken;\n } else {\n this.consumeInternalError(tokType, nextToken, options);\n }\n } catch (eFromConsumption) {\n consumedToken = this.consumeInternalRecovery(tokType, idx, eFromConsumption);\n }\n this.cstPostTerminal(options !== void 0 && options.LABEL !== void 0 ? options.LABEL : tokType.name, consumedToken);\n return consumedToken;\n }\n consumeInternalError(tokType, nextToken, options) {\n let msg;\n const previousToken = this.LA(0);\n if (options !== void 0 && options.ERR_MSG) {\n msg = options.ERR_MSG;\n } else {\n msg = this.errorMessageProvider.buildMismatchTokenMessage({\n expected: tokType,\n actual: nextToken,\n previous: previousToken,\n ruleName: this.getCurrRuleFullName()\n });\n }\n throw this.SAVE_ERROR(new MismatchedTokenException(msg, nextToken, previousToken));\n }\n consumeInternalRecovery(tokType, idx, eFromConsumption) {\n if (this.recoveryEnabled && // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions?\n eFromConsumption.name === \"MismatchedTokenException\" && !this.isBackTracking()) {\n const follows = this.getFollowsForInRuleRecovery(tokType, idx);\n try {\n return this.tryInRuleRecovery(tokType, follows);\n } catch (eFromInRuleRecovery) {\n if (eFromInRuleRecovery.name === IN_RULE_RECOVERY_EXCEPTION) {\n throw eFromConsumption;\n } else {\n throw eFromInRuleRecovery;\n }\n }\n } else {\n throw eFromConsumption;\n }\n }\n saveRecogState() {\n const savedErrors = this.errors;\n const savedRuleStack = clone_default(this.RULE_STACK);\n return {\n errors: savedErrors,\n lexerState: this.exportLexerState(),\n RULE_STACK: savedRuleStack,\n CST_STACK: this.CST_STACK\n };\n }\n reloadRecogState(newState2) {\n this.errors = newState2.errors;\n this.importLexerState(newState2.lexerState);\n this.RULE_STACK = newState2.RULE_STACK;\n }\n ruleInvocationStateUpdate(shortName, fullName, idxInCallingRule) {\n this.RULE_OCCURRENCE_STACK.push(idxInCallingRule);\n this.RULE_STACK.push(shortName);\n this.cstInvocationStateUpdate(fullName);\n }\n isBackTracking() {\n return this.isBackTrackingStack.length !== 0;\n }\n getCurrRuleFullName() {\n const shortName = this.getLastExplicitRuleShortName();\n return this.shortRuleNameToFull[shortName];\n }\n shortRuleNameToFullName(shortName) {\n return this.shortRuleNameToFull[shortName];\n }\n isAtEndOfInput() {\n return this.tokenMatcher(this.LA(1), EOF);\n }\n reset() {\n this.resetLexerState();\n this.subruleIdx = 0;\n this.isBackTrackingStack = [];\n this.errors = [];\n this.RULE_STACK = [];\n this.CST_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js\nvar ErrorHandler = class {\n static {\n __name(this, \"ErrorHandler\");\n }\n initErrorHandler(config) {\n this._errors = [];\n this.errorMessageProvider = has_default(config, \"errorMessageProvider\") ? config.errorMessageProvider : DEFAULT_PARSER_CONFIG.errorMessageProvider;\n }\n SAVE_ERROR(error) {\n if (isRecognitionException(error)) {\n error.context = {\n ruleStack: this.getHumanReadableRuleStack(),\n ruleOccurrenceStack: clone_default(this.RULE_OCCURRENCE_STACK)\n };\n this._errors.push(error);\n return error;\n } else {\n throw Error(\"Trying to save an Error which is not a RecognitionException\");\n }\n }\n get errors() {\n return clone_default(this._errors);\n }\n set errors(newErrors) {\n this._errors = newErrors;\n }\n // TODO: consider caching the error message computed information\n raiseEarlyExitException(occurrence, prodType, userDefinedErrMsg) {\n const ruleName = this.getCurrRuleFullName();\n const ruleGrammar = this.getGAstProductions()[ruleName];\n const lookAheadPathsPerAlternative = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, this.maxLookahead);\n const insideProdPaths = lookAheadPathsPerAlternative[0];\n const actualTokens = [];\n for (let i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n const msg = this.errorMessageProvider.buildEarlyExitMessage({\n expectedIterationPaths: insideProdPaths,\n actual: actualTokens,\n previous: this.LA(0),\n customUserDescription: userDefinedErrMsg,\n ruleName\n });\n throw this.SAVE_ERROR(new EarlyExitException(msg, this.LA(1), this.LA(0)));\n }\n // TODO: consider caching the error message computed information\n raiseNoAltException(occurrence, errMsgTypes) {\n const ruleName = this.getCurrRuleFullName();\n const ruleGrammar = this.getGAstProductions()[ruleName];\n const lookAheadPathsPerAlternative = getLookaheadPathsForOr(occurrence, ruleGrammar, this.maxLookahead);\n const actualTokens = [];\n for (let i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n const previousToken = this.LA(0);\n const errMsg = this.errorMessageProvider.buildNoViableAltMessage({\n expectedPathsPerAlt: lookAheadPathsPerAlternative,\n actual: actualTokens,\n previous: previousToken,\n customUserDescription: errMsgTypes,\n ruleName: this.getCurrRuleFullName()\n });\n throw this.SAVE_ERROR(new NoViableAltException(errMsg, this.LA(1), previousToken));\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js\nvar ContentAssist = class {\n static {\n __name(this, \"ContentAssist\");\n }\n initContentAssist() {\n }\n computeContentAssist(startRuleName, precedingInput) {\n const startRuleGast = this.gastProductionsCache[startRuleName];\n if (isUndefined_default(startRuleGast)) {\n throw Error(`Rule ->${startRuleName}<- does not exist in this grammar.`);\n }\n return nextPossibleTokensAfter([startRuleGast], precedingInput, this.tokenMatcher, this.maxLookahead);\n }\n // TODO: should this be a member method or a utility? it does not have any state or usage of 'this'...\n // TODO: should this be more explicitly part of the public API?\n getNextPossibleTokenTypes(grammarPath) {\n const topRuleName = head_default(grammarPath.ruleStack);\n const gastProductions = this.getGAstProductions();\n const topProduction = gastProductions[topRuleName];\n const nextPossibleTokenTypes = new NextAfterTokenWalker(topProduction, grammarPath).startWalking();\n return nextPossibleTokenTypes;\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js\nvar RECORDING_NULL_OBJECT = {\n description: \"This Object indicates the Parser is during Recording Phase\"\n};\nObject.freeze(RECORDING_NULL_OBJECT);\nvar HANDLE_SEPARATOR = true;\nvar MAX_METHOD_IDX = Math.pow(2, BITS_FOR_OCCURRENCE_IDX) - 1;\nvar RFT = createToken({ name: \"RECORDING_PHASE_TOKEN\", pattern: Lexer.NA });\naugmentTokenTypes([RFT]);\nvar RECORDING_PHASE_TOKEN = createTokenInstance(\n RFT,\n \"This IToken indicates the Parser is in Recording Phase\\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\",\n // Using \"-1\" instead of NaN (as in EOF) because an actual number is less likely to\n // cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase.\n -1,\n -1,\n -1,\n -1,\n -1,\n -1\n);\nObject.freeze(RECORDING_PHASE_TOKEN);\nvar RECORDING_PHASE_CSTNODE = {\n name: \"This CSTNode indicates the Parser is in Recording Phase\\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\",\n children: {}\n};\nvar GastRecorder = class {\n static {\n __name(this, \"GastRecorder\");\n }\n initGastRecorder(config) {\n this.recordingProdStack = [];\n this.RECORDING_PHASE = false;\n }\n enableRecording() {\n this.RECORDING_PHASE = true;\n this.TRACE_INIT(\"Enable Recording\", () => {\n for (let i = 0; i < 10; i++) {\n const idx = i > 0 ? i : \"\";\n this[`CONSUME${idx}`] = function(arg1, arg2) {\n return this.consumeInternalRecord(arg1, i, arg2);\n };\n this[`SUBRULE${idx}`] = function(arg1, arg2) {\n return this.subruleInternalRecord(arg1, i, arg2);\n };\n this[`OPTION${idx}`] = function(arg1) {\n return this.optionInternalRecord(arg1, i);\n };\n this[`OR${idx}`] = function(arg1) {\n return this.orInternalRecord(arg1, i);\n };\n this[`MANY${idx}`] = function(arg1) {\n this.manyInternalRecord(i, arg1);\n };\n this[`MANY_SEP${idx}`] = function(arg1) {\n this.manySepFirstInternalRecord(i, arg1);\n };\n this[`AT_LEAST_ONE${idx}`] = function(arg1) {\n this.atLeastOneInternalRecord(i, arg1);\n };\n this[`AT_LEAST_ONE_SEP${idx}`] = function(arg1) {\n this.atLeastOneSepFirstInternalRecord(i, arg1);\n };\n }\n this[`consume`] = function(idx, arg1, arg2) {\n return this.consumeInternalRecord(arg1, idx, arg2);\n };\n this[`subrule`] = function(idx, arg1, arg2) {\n return this.subruleInternalRecord(arg1, idx, arg2);\n };\n this[`option`] = function(idx, arg1) {\n return this.optionInternalRecord(arg1, idx);\n };\n this[`or`] = function(idx, arg1) {\n return this.orInternalRecord(arg1, idx);\n };\n this[`many`] = function(idx, arg1) {\n this.manyInternalRecord(idx, arg1);\n };\n this[`atLeastOne`] = function(idx, arg1) {\n this.atLeastOneInternalRecord(idx, arg1);\n };\n this.ACTION = this.ACTION_RECORD;\n this.BACKTRACK = this.BACKTRACK_RECORD;\n this.LA = this.LA_RECORD;\n });\n }\n disableRecording() {\n this.RECORDING_PHASE = false;\n this.TRACE_INIT(\"Deleting Recording methods\", () => {\n const that = this;\n for (let i = 0; i < 10; i++) {\n const idx = i > 0 ? i : \"\";\n delete that[`CONSUME${idx}`];\n delete that[`SUBRULE${idx}`];\n delete that[`OPTION${idx}`];\n delete that[`OR${idx}`];\n delete that[`MANY${idx}`];\n delete that[`MANY_SEP${idx}`];\n delete that[`AT_LEAST_ONE${idx}`];\n delete that[`AT_LEAST_ONE_SEP${idx}`];\n }\n delete that[`consume`];\n delete that[`subrule`];\n delete that[`option`];\n delete that[`or`];\n delete that[`many`];\n delete that[`atLeastOne`];\n delete that.ACTION;\n delete that.BACKTRACK;\n delete that.LA;\n });\n }\n // Parser methods are called inside an ACTION?\n // Maybe try/catch/finally on ACTIONS while disabling the recorders state changes?\n // @ts-expect-error -- noop place holder\n ACTION_RECORD(impl) {\n }\n // Executing backtracking logic will break our recording logic assumptions\n BACKTRACK_RECORD(grammarRule, args) {\n return () => true;\n }\n // LA is part of the official API and may be used for custom lookahead logic\n // by end users who may forget to wrap it in ACTION or inside a GATE\n LA_RECORD(howMuch) {\n return END_OF_FILE;\n }\n topLevelRuleRecord(name, def) {\n try {\n const newTopLevelRule = new Rule({ definition: [], name });\n newTopLevelRule.name = name;\n this.recordingProdStack.push(newTopLevelRule);\n def.call(this);\n this.recordingProdStack.pop();\n return newTopLevelRule;\n } catch (originalError) {\n if (originalError.KNOWN_RECORDER_ERROR !== true) {\n try {\n originalError.message = originalError.message + '\\n\t This error was thrown during the \"grammar recording phase\" For more info see:\\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording';\n } catch (mutabilityError) {\n throw originalError;\n }\n }\n throw originalError;\n }\n }\n // Implementation of parsing DSL\n optionInternalRecord(actionORMethodDef, occurrence) {\n return recordProd.call(this, Option, actionORMethodDef, occurrence);\n }\n atLeastOneInternalRecord(occurrence, actionORMethodDef) {\n recordProd.call(this, RepetitionMandatory, actionORMethodDef, occurrence);\n }\n atLeastOneSepFirstInternalRecord(occurrence, options) {\n recordProd.call(this, RepetitionMandatoryWithSeparator, options, occurrence, HANDLE_SEPARATOR);\n }\n manyInternalRecord(occurrence, actionORMethodDef) {\n recordProd.call(this, Repetition, actionORMethodDef, occurrence);\n }\n manySepFirstInternalRecord(occurrence, options) {\n recordProd.call(this, RepetitionWithSeparator, options, occurrence, HANDLE_SEPARATOR);\n }\n orInternalRecord(altsOrOpts, occurrence) {\n return recordOrProd.call(this, altsOrOpts, occurrence);\n }\n subruleInternalRecord(ruleToCall, occurrence, options) {\n assertMethodIdxIsValid(occurrence);\n if (!ruleToCall || has_default(ruleToCall, \"ruleName\") === false) {\n const error = new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(ruleToCall)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n const prevProd = last_default(this.recordingProdStack);\n const ruleName = ruleToCall.ruleName;\n const newNoneTerminal = new NonTerminal({\n idx: occurrence,\n nonTerminalName: ruleName,\n label: options === null || options === void 0 ? void 0 : options.LABEL,\n // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created\n referencedRule: void 0\n });\n prevProd.definition.push(newNoneTerminal);\n return this.outputCst ? RECORDING_PHASE_CSTNODE : RECORDING_NULL_OBJECT;\n }\n consumeInternalRecord(tokType, occurrence, options) {\n assertMethodIdxIsValid(occurrence);\n if (!hasShortKeyProperty(tokType)) {\n const error = new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(tokType)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n const prevProd = last_default(this.recordingProdStack);\n const newNoneTerminal = new Terminal({\n idx: occurrence,\n terminalType: tokType,\n label: options === null || options === void 0 ? void 0 : options.LABEL\n });\n prevProd.definition.push(newNoneTerminal);\n return RECORDING_PHASE_TOKEN;\n }\n};\nfunction recordProd(prodConstructor, mainProdArg, occurrence, handleSep = false) {\n assertMethodIdxIsValid(occurrence);\n const prevProd = last_default(this.recordingProdStack);\n const grammarAction = isFunction_default(mainProdArg) ? mainProdArg : mainProdArg.DEF;\n const newProd = new prodConstructor({ definition: [], idx: occurrence });\n if (handleSep) {\n newProd.separator = mainProdArg.SEP;\n }\n if (has_default(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n this.recordingProdStack.push(newProd);\n grammarAction.call(this);\n prevProd.definition.push(newProd);\n this.recordingProdStack.pop();\n return RECORDING_NULL_OBJECT;\n}\n__name(recordProd, \"recordProd\");\nfunction recordOrProd(mainProdArg, occurrence) {\n assertMethodIdxIsValid(occurrence);\n const prevProd = last_default(this.recordingProdStack);\n const hasOptions = isArray_default(mainProdArg) === false;\n const alts = hasOptions === false ? mainProdArg : mainProdArg.DEF;\n const newOrProd = new Alternation({\n definition: [],\n idx: occurrence,\n ignoreAmbiguities: hasOptions && mainProdArg.IGNORE_AMBIGUITIES === true\n });\n if (has_default(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newOrProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n const hasPredicates = some_default(alts, (currAlt) => isFunction_default(currAlt.GATE));\n newOrProd.hasPredicates = hasPredicates;\n prevProd.definition.push(newOrProd);\n forEach_default(alts, (currAlt) => {\n const currAltFlat = new Alternative({ definition: [] });\n newOrProd.definition.push(currAltFlat);\n if (has_default(currAlt, \"IGNORE_AMBIGUITIES\")) {\n currAltFlat.ignoreAmbiguities = currAlt.IGNORE_AMBIGUITIES;\n } else if (has_default(currAlt, \"GATE\")) {\n currAltFlat.ignoreAmbiguities = true;\n }\n this.recordingProdStack.push(currAltFlat);\n currAlt.ALT.call(this);\n this.recordingProdStack.pop();\n });\n return RECORDING_NULL_OBJECT;\n}\n__name(recordOrProd, \"recordOrProd\");\nfunction getIdxSuffix(idx) {\n return idx === 0 ? \"\" : `${idx}`;\n}\n__name(getIdxSuffix, \"getIdxSuffix\");\nfunction assertMethodIdxIsValid(idx) {\n if (idx < 0 || idx > MAX_METHOD_IDX) {\n const error = new Error(\n // The stack trace will contain all the needed details\n `Invalid DSL Method idx value: <${idx}>\n\tIdx value must be a none negative value smaller than ${MAX_METHOD_IDX + 1}`\n );\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n}\n__name(assertMethodIdxIsValid, \"assertMethodIdxIsValid\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js\nvar PerformanceTracer = class {\n static {\n __name(this, \"PerformanceTracer\");\n }\n initPerformanceTracer(config) {\n if (has_default(config, \"traceInitPerf\")) {\n const userTraceInitPerf = config.traceInitPerf;\n const traceIsNumber = typeof userTraceInitPerf === \"number\";\n this.traceInitMaxIdent = traceIsNumber ? userTraceInitPerf : Infinity;\n this.traceInitPerf = traceIsNumber ? userTraceInitPerf > 0 : userTraceInitPerf;\n } else {\n this.traceInitMaxIdent = 0;\n this.traceInitPerf = DEFAULT_PARSER_CONFIG.traceInitPerf;\n }\n this.traceInitIndent = -1;\n }\n TRACE_INIT(phaseDesc, phaseImpl) {\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n const indent = new Array(this.traceInitIndent + 1).join(\"\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(`${indent}--> <${phaseDesc}>`);\n }\n const { time, value } = timer(phaseImpl);\n const traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(`${indent}<-- <${phaseDesc}> time: ${time}ms`);\n }\n this.traceInitIndent--;\n return value;\n } else {\n return phaseImpl();\n }\n }\n};\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/utils/apply_mixins.js\nfunction applyMixins(derivedCtor, baseCtors) {\n baseCtors.forEach((baseCtor) => {\n const baseProto = baseCtor.prototype;\n Object.getOwnPropertyNames(baseProto).forEach((propName) => {\n if (propName === \"constructor\") {\n return;\n }\n const basePropDescriptor = Object.getOwnPropertyDescriptor(baseProto, propName);\n if (basePropDescriptor && (basePropDescriptor.get || basePropDescriptor.set)) {\n Object.defineProperty(derivedCtor.prototype, propName, basePropDescriptor);\n } else {\n derivedCtor.prototype[propName] = baseCtor.prototype[propName];\n }\n });\n });\n}\n__name(applyMixins, \"applyMixins\");\n\n// ../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/lib/src/parse/parser/parser.js\nvar END_OF_FILE = createTokenInstance(EOF, \"\", NaN, NaN, NaN, NaN, NaN, NaN);\nObject.freeze(END_OF_FILE);\nvar DEFAULT_PARSER_CONFIG = Object.freeze({\n recoveryEnabled: false,\n maxLookahead: 3,\n dynamicTokensEnabled: false,\n outputCst: true,\n errorMessageProvider: defaultParserErrorProvider,\n nodeLocationTracking: \"none\",\n traceInitPerf: false,\n skipValidations: false\n});\nvar DEFAULT_RULE_CONFIG = Object.freeze({\n recoveryValueFunc: /* @__PURE__ */ __name(() => void 0, \"recoveryValueFunc\"),\n resyncEnabled: true\n});\nvar ParserDefinitionErrorType;\n(function(ParserDefinitionErrorType2) {\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"INVALID_RULE_NAME\"] = 0] = \"INVALID_RULE_NAME\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"DUPLICATE_RULE_NAME\"] = 1] = \"DUPLICATE_RULE_NAME\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"INVALID_RULE_OVERRIDE\"] = 2] = \"INVALID_RULE_OVERRIDE\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"DUPLICATE_PRODUCTIONS\"] = 3] = \"DUPLICATE_PRODUCTIONS\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"UNRESOLVED_SUBRULE_REF\"] = 4] = \"UNRESOLVED_SUBRULE_REF\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"LEFT_RECURSION\"] = 5] = \"LEFT_RECURSION\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"NONE_LAST_EMPTY_ALT\"] = 6] = \"NONE_LAST_EMPTY_ALT\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"AMBIGUOUS_ALTS\"] = 7] = \"AMBIGUOUS_ALTS\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"CONFLICT_TOKENS_RULES_NAMESPACE\"] = 8] = \"CONFLICT_TOKENS_RULES_NAMESPACE\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"INVALID_TOKEN_NAME\"] = 9] = \"INVALID_TOKEN_NAME\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"NO_NON_EMPTY_LOOKAHEAD\"] = 10] = \"NO_NON_EMPTY_LOOKAHEAD\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"AMBIGUOUS_PREFIX_ALTS\"] = 11] = \"AMBIGUOUS_PREFIX_ALTS\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"TOO_MANY_ALTS\"] = 12] = \"TOO_MANY_ALTS\";\n ParserDefinitionErrorType2[ParserDefinitionErrorType2[\"CUSTOM_LOOKAHEAD_VALIDATION\"] = 13] = \"CUSTOM_LOOKAHEAD_VALIDATION\";\n})(ParserDefinitionErrorType || (ParserDefinitionErrorType = {}));\nfunction EMPTY_ALT(value = void 0) {\n return function() {\n return value;\n };\n}\n__name(EMPTY_ALT, \"EMPTY_ALT\");\nvar Parser = class _Parser {\n static {\n __name(this, \"Parser\");\n }\n /**\n * @deprecated use the **instance** method with the same name instead\n */\n static performSelfAnalysis(parserInstance) {\n throw Error(\"The **static** `performSelfAnalysis` method has been deprecated.\t\\nUse the **instance** method with the same name instead.\");\n }\n performSelfAnalysis() {\n this.TRACE_INIT(\"performSelfAnalysis\", () => {\n let defErrorsMsgs;\n this.selfAnalysisDone = true;\n const className = this.className;\n this.TRACE_INIT(\"toFastProps\", () => {\n toFastProperties(this);\n });\n this.TRACE_INIT(\"Grammar Recording\", () => {\n try {\n this.enableRecording();\n forEach_default(this.definedRulesNames, (currRuleName) => {\n const wrappedRule = this[currRuleName];\n const originalGrammarAction = wrappedRule[\"originalGrammarAction\"];\n let recordedRuleGast;\n this.TRACE_INIT(`${currRuleName} Rule`, () => {\n recordedRuleGast = this.topLevelRuleRecord(currRuleName, originalGrammarAction);\n });\n this.gastProductionsCache[currRuleName] = recordedRuleGast;\n });\n } finally {\n this.disableRecording();\n }\n });\n let resolverErrors = [];\n this.TRACE_INIT(\"Grammar Resolving\", () => {\n resolverErrors = resolveGrammar2({\n rules: values_default(this.gastProductionsCache)\n });\n this.definitionErrors = this.definitionErrors.concat(resolverErrors);\n });\n this.TRACE_INIT(\"Grammar Validations\", () => {\n if (isEmpty_default(resolverErrors) && this.skipValidations === false) {\n const validationErrors = validateGrammar2({\n rules: values_default(this.gastProductionsCache),\n tokenTypes: values_default(this.tokensMap),\n errMsgProvider: defaultGrammarValidatorErrorProvider,\n grammarName: className\n });\n const lookaheadValidationErrors = validateLookahead({\n lookaheadStrategy: this.lookaheadStrategy,\n rules: values_default(this.gastProductionsCache),\n tokenTypes: values_default(this.tokensMap),\n grammarName: className\n });\n this.definitionErrors = this.definitionErrors.concat(validationErrors, lookaheadValidationErrors);\n }\n });\n if (isEmpty_default(this.definitionErrors)) {\n if (this.recoveryEnabled) {\n this.TRACE_INIT(\"computeAllProdsFollows\", () => {\n const allFollows = computeAllProdsFollows(values_default(this.gastProductionsCache));\n this.resyncFollows = allFollows;\n });\n }\n this.TRACE_INIT(\"ComputeLookaheadFunctions\", () => {\n var _a, _b;\n (_b = (_a = this.lookaheadStrategy).initialize) === null || _b === void 0 ? void 0 : _b.call(_a, {\n rules: values_default(this.gastProductionsCache)\n });\n this.preComputeLookaheadFunctions(values_default(this.gastProductionsCache));\n });\n }\n if (!_Parser.DEFER_DEFINITION_ERRORS_HANDLING && !isEmpty_default(this.definitionErrors)) {\n defErrorsMsgs = map_default(this.definitionErrors, (defError) => defError.message);\n throw new Error(`Parser Definition Errors detected:\n ${defErrorsMsgs.join(\"\\n-------------------------------\\n\")}`);\n }\n });\n }\n constructor(tokenVocabulary, config) {\n this.definitionErrors = [];\n this.selfAnalysisDone = false;\n const that = this;\n that.initErrorHandler(config);\n that.initLexerAdapter();\n that.initLooksAhead(config);\n that.initRecognizerEngine(tokenVocabulary, config);\n that.initRecoverable(config);\n that.initTreeBuilder(config);\n that.initContentAssist();\n that.initGastRecorder(config);\n that.initPerformanceTracer(config);\n if (has_default(config, \"ignoredIssues\")) {\n throw new Error(\"The IParserConfig property has been deprecated.\\n\tPlease use the flag on the relevant DSL method instead.\\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\\n\tFor further details.\");\n }\n this.skipValidations = has_default(config, \"skipValidations\") ? config.skipValidations : DEFAULT_PARSER_CONFIG.skipValidations;\n }\n};\nParser.DEFER_DEFINITION_ERRORS_HANDLING = false;\napplyMixins(Parser, [\n Recoverable,\n LooksAhead,\n TreeBuilder,\n LexerAdapter,\n RecognizerEngine,\n RecognizerApi,\n ErrorHandler,\n ContentAssist,\n GastRecorder,\n PerformanceTracer\n]);\nvar EmbeddedActionsParser = class extends Parser {\n static {\n __name(this, \"EmbeddedActionsParser\");\n }\n constructor(tokenVocabulary, config = DEFAULT_PARSER_CONFIG) {\n const configClone = clone_default(config);\n configClone.outputCst = false;\n super(tokenVocabulary, configClone);\n }\n};\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js\nfunction arrayMap2(array, iteratee) {\n var index = -1, length = array == null ? 0 : array.length, result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n__name(arrayMap2, \"arrayMap\");\nvar arrayMap_default2 = arrayMap2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js\nfunction listCacheClear2() {\n this.__data__ = [];\n this.size = 0;\n}\n__name(listCacheClear2, \"listCacheClear\");\nvar listCacheClear_default2 = listCacheClear2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/eq.js\nfunction eq2(value, other) {\n return value === other || value !== value && other !== other;\n}\n__name(eq2, \"eq\");\nvar eq_default2 = eq2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js\nfunction assocIndexOf2(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_default2(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n__name(assocIndexOf2, \"assocIndexOf\");\nvar assocIndexOf_default2 = assocIndexOf2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js\nvar arrayProto2 = Array.prototype;\nvar splice2 = arrayProto2.splice;\nfunction listCacheDelete2(key) {\n var data = this.__data__, index = assocIndexOf_default2(data, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice2.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n__name(listCacheDelete2, \"listCacheDelete\");\nvar listCacheDelete_default2 = listCacheDelete2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js\nfunction listCacheGet2(key) {\n var data = this.__data__, index = assocIndexOf_default2(data, key);\n return index < 0 ? void 0 : data[index][1];\n}\n__name(listCacheGet2, \"listCacheGet\");\nvar listCacheGet_default2 = listCacheGet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js\nfunction listCacheHas2(key) {\n return assocIndexOf_default2(this.__data__, key) > -1;\n}\n__name(listCacheHas2, \"listCacheHas\");\nvar listCacheHas_default2 = listCacheHas2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js\nfunction listCacheSet2(key, value) {\n var data = this.__data__, index = assocIndexOf_default2(data, key);\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n__name(listCacheSet2, \"listCacheSet\");\nvar listCacheSet_default2 = listCacheSet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js\nfunction ListCache2(entries) {\n var index = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n__name(ListCache2, \"ListCache\");\nListCache2.prototype.clear = listCacheClear_default2;\nListCache2.prototype[\"delete\"] = listCacheDelete_default2;\nListCache2.prototype.get = listCacheGet_default2;\nListCache2.prototype.has = listCacheHas_default2;\nListCache2.prototype.set = listCacheSet_default2;\nvar ListCache_default2 = ListCache2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js\nfunction stackClear2() {\n this.__data__ = new ListCache_default2();\n this.size = 0;\n}\n__name(stackClear2, \"stackClear\");\nvar stackClear_default2 = stackClear2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js\nfunction stackDelete2(key) {\n var data = this.__data__, result = data[\"delete\"](key);\n this.size = data.size;\n return result;\n}\n__name(stackDelete2, \"stackDelete\");\nvar stackDelete_default2 = stackDelete2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js\nfunction stackGet2(key) {\n return this.__data__.get(key);\n}\n__name(stackGet2, \"stackGet\");\nvar stackGet_default2 = stackGet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js\nfunction stackHas2(key) {\n return this.__data__.has(key);\n}\n__name(stackHas2, \"stackHas\");\nvar stackHas_default2 = stackHas2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js\nvar freeGlobal2 = typeof global == \"object\" && global && global.Object === Object && global;\nvar freeGlobal_default2 = freeGlobal2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js\nvar freeSelf2 = typeof self == \"object\" && self && self.Object === Object && self;\nvar root2 = freeGlobal_default2 || freeSelf2 || Function(\"return this\")();\nvar root_default2 = root2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js\nvar Symbol3 = root_default2.Symbol;\nvar Symbol_default2 = Symbol3;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js\nvar objectProto21 = Object.prototype;\nvar hasOwnProperty18 = objectProto21.hasOwnProperty;\nvar nativeObjectToString3 = objectProto21.toString;\nvar symToStringTag3 = Symbol_default2 ? Symbol_default2.toStringTag : void 0;\nfunction getRawTag2(value) {\n var isOwn = hasOwnProperty18.call(value, symToStringTag3), tag = value[symToStringTag3];\n try {\n value[symToStringTag3] = void 0;\n var unmasked = true;\n } catch (e) {\n }\n var result = nativeObjectToString3.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag3] = tag;\n } else {\n delete value[symToStringTag3];\n }\n }\n return result;\n}\n__name(getRawTag2, \"getRawTag\");\nvar getRawTag_default2 = getRawTag2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js\nvar objectProto22 = Object.prototype;\nvar nativeObjectToString4 = objectProto22.toString;\nfunction objectToString2(value) {\n return nativeObjectToString4.call(value);\n}\n__name(objectToString2, \"objectToString\");\nvar objectToString_default2 = objectToString2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js\nvar nullTag2 = \"[object Null]\";\nvar undefinedTag2 = \"[object Undefined]\";\nvar symToStringTag4 = Symbol_default2 ? Symbol_default2.toStringTag : void 0;\nfunction baseGetTag2(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag2 : nullTag2;\n }\n return symToStringTag4 && symToStringTag4 in Object(value) ? getRawTag_default2(value) : objectToString_default2(value);\n}\n__name(baseGetTag2, \"baseGetTag\");\nvar baseGetTag_default2 = baseGetTag2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObject.js\nfunction isObject2(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n__name(isObject2, \"isObject\");\nvar isObject_default2 = isObject2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js\nvar asyncTag2 = \"[object AsyncFunction]\";\nvar funcTag4 = \"[object Function]\";\nvar genTag3 = \"[object GeneratorFunction]\";\nvar proxyTag2 = \"[object Proxy]\";\nfunction isFunction2(value) {\n if (!isObject_default2(value)) {\n return false;\n }\n var tag = baseGetTag_default2(value);\n return tag == funcTag4 || tag == genTag3 || tag == asyncTag2 || tag == proxyTag2;\n}\n__name(isFunction2, \"isFunction\");\nvar isFunction_default2 = isFunction2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js\nvar coreJsData2 = root_default2[\"__core-js_shared__\"];\nvar coreJsData_default2 = coreJsData2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js\nvar maskSrcKey2 = (function() {\n var uid = /[^.]+$/.exec(coreJsData_default2 && coreJsData_default2.keys && coreJsData_default2.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n})();\nfunction isMasked2(func) {\n return !!maskSrcKey2 && maskSrcKey2 in func;\n}\n__name(isMasked2, \"isMasked\");\nvar isMasked_default2 = isMasked2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js\nvar funcProto3 = Function.prototype;\nvar funcToString3 = funcProto3.toString;\nfunction toSource2(func) {\n if (func != null) {\n try {\n return funcToString3.call(func);\n } catch (e) {\n }\n try {\n return func + \"\";\n } catch (e) {\n }\n }\n return \"\";\n}\n__name(toSource2, \"toSource\");\nvar toSource_default2 = toSource2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js\nvar reRegExpChar2 = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor2 = /^\\[object .+?Constructor\\]$/;\nvar funcProto4 = Function.prototype;\nvar objectProto23 = Object.prototype;\nvar funcToString4 = funcProto4.toString;\nvar hasOwnProperty19 = objectProto23.hasOwnProperty;\nvar reIsNative2 = RegExp(\n \"^\" + funcToString4.call(hasOwnProperty19).replace(reRegExpChar2, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n);\nfunction baseIsNative2(value) {\n if (!isObject_default2(value) || isMasked_default2(value)) {\n return false;\n }\n var pattern = isFunction_default2(value) ? reIsNative2 : reIsHostCtor2;\n return pattern.test(toSource_default2(value));\n}\n__name(baseIsNative2, \"baseIsNative\");\nvar baseIsNative_default2 = baseIsNative2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js\nfunction getValue2(object, key) {\n return object == null ? void 0 : object[key];\n}\n__name(getValue2, \"getValue\");\nvar getValue_default2 = getValue2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js\nfunction getNative2(object, key) {\n var value = getValue_default2(object, key);\n return baseIsNative_default2(value) ? value : void 0;\n}\n__name(getNative2, \"getNative\");\nvar getNative_default2 = getNative2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Map.js\nvar Map3 = getNative_default2(root_default2, \"Map\");\nvar Map_default2 = Map3;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js\nvar nativeCreate2 = getNative_default2(Object, \"create\");\nvar nativeCreate_default2 = nativeCreate2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js\nfunction hashClear2() {\n this.__data__ = nativeCreate_default2 ? nativeCreate_default2(null) : {};\n this.size = 0;\n}\n__name(hashClear2, \"hashClear\");\nvar hashClear_default2 = hashClear2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js\nfunction hashDelete2(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n__name(hashDelete2, \"hashDelete\");\nvar hashDelete_default2 = hashDelete2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js\nvar HASH_UNDEFINED4 = \"__lodash_hash_undefined__\";\nvar objectProto24 = Object.prototype;\nvar hasOwnProperty20 = objectProto24.hasOwnProperty;\nfunction hashGet2(key) {\n var data = this.__data__;\n if (nativeCreate_default2) {\n var result = data[key];\n return result === HASH_UNDEFINED4 ? void 0 : result;\n }\n return hasOwnProperty20.call(data, key) ? data[key] : void 0;\n}\n__name(hashGet2, \"hashGet\");\nvar hashGet_default2 = hashGet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js\nvar objectProto25 = Object.prototype;\nvar hasOwnProperty21 = objectProto25.hasOwnProperty;\nfunction hashHas2(key) {\n var data = this.__data__;\n return nativeCreate_default2 ? data[key] !== void 0 : hasOwnProperty21.call(data, key);\n}\n__name(hashHas2, \"hashHas\");\nvar hashHas_default2 = hashHas2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js\nvar HASH_UNDEFINED5 = \"__lodash_hash_undefined__\";\nfunction hashSet2(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate_default2 && value === void 0 ? HASH_UNDEFINED5 : value;\n return this;\n}\n__name(hashSet2, \"hashSet\");\nvar hashSet_default2 = hashSet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js\nfunction Hash2(entries) {\n var index = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n__name(Hash2, \"Hash\");\nHash2.prototype.clear = hashClear_default2;\nHash2.prototype[\"delete\"] = hashDelete_default2;\nHash2.prototype.get = hashGet_default2;\nHash2.prototype.has = hashHas_default2;\nHash2.prototype.set = hashSet_default2;\nvar Hash_default2 = Hash2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js\nfunction mapCacheClear2() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new Hash_default2(),\n \"map\": new (Map_default2 || ListCache_default2)(),\n \"string\": new Hash_default2()\n };\n}\n__name(mapCacheClear2, \"mapCacheClear\");\nvar mapCacheClear_default2 = mapCacheClear2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js\nfunction isKeyable2(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n}\n__name(isKeyable2, \"isKeyable\");\nvar isKeyable_default2 = isKeyable2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js\nfunction getMapData2(map3, key) {\n var data = map3.__data__;\n return isKeyable_default2(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n}\n__name(getMapData2, \"getMapData\");\nvar getMapData_default2 = getMapData2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js\nfunction mapCacheDelete2(key) {\n var result = getMapData_default2(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n__name(mapCacheDelete2, \"mapCacheDelete\");\nvar mapCacheDelete_default2 = mapCacheDelete2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js\nfunction mapCacheGet2(key) {\n return getMapData_default2(this, key).get(key);\n}\n__name(mapCacheGet2, \"mapCacheGet\");\nvar mapCacheGet_default2 = mapCacheGet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js\nfunction mapCacheHas2(key) {\n return getMapData_default2(this, key).has(key);\n}\n__name(mapCacheHas2, \"mapCacheHas\");\nvar mapCacheHas_default2 = mapCacheHas2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js\nfunction mapCacheSet2(key, value) {\n var data = getMapData_default2(this, key), size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n__name(mapCacheSet2, \"mapCacheSet\");\nvar mapCacheSet_default2 = mapCacheSet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js\nfunction MapCache2(entries) {\n var index = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n__name(MapCache2, \"MapCache\");\nMapCache2.prototype.clear = mapCacheClear_default2;\nMapCache2.prototype[\"delete\"] = mapCacheDelete_default2;\nMapCache2.prototype.get = mapCacheGet_default2;\nMapCache2.prototype.has = mapCacheHas_default2;\nMapCache2.prototype.set = mapCacheSet_default2;\nvar MapCache_default2 = MapCache2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js\nvar LARGE_ARRAY_SIZE4 = 200;\nfunction stackSet2(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache_default2) {\n var pairs = data.__data__;\n if (!Map_default2 || pairs.length < LARGE_ARRAY_SIZE4 - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache_default2(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n__name(stackSet2, \"stackSet\");\nvar stackSet_default2 = stackSet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js\nfunction Stack2(entries) {\n var data = this.__data__ = new ListCache_default2(entries);\n this.size = data.size;\n}\n__name(Stack2, \"Stack\");\nStack2.prototype.clear = stackClear_default2;\nStack2.prototype[\"delete\"] = stackDelete_default2;\nStack2.prototype.get = stackGet_default2;\nStack2.prototype.has = stackHas_default2;\nStack2.prototype.set = stackSet_default2;\nvar Stack_default2 = Stack2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setCacheAdd.js\nvar HASH_UNDEFINED6 = \"__lodash_hash_undefined__\";\nfunction setCacheAdd2(value) {\n this.__data__.set(value, HASH_UNDEFINED6);\n return this;\n}\n__name(setCacheAdd2, \"setCacheAdd\");\nvar setCacheAdd_default2 = setCacheAdd2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setCacheHas.js\nfunction setCacheHas2(value) {\n return this.__data__.has(value);\n}\n__name(setCacheHas2, \"setCacheHas\");\nvar setCacheHas_default2 = setCacheHas2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_SetCache.js\nfunction SetCache2(values2) {\n var index = -1, length = values2 == null ? 0 : values2.length;\n this.__data__ = new MapCache_default2();\n while (++index < length) {\n this.add(values2[index]);\n }\n}\n__name(SetCache2, \"SetCache\");\nSetCache2.prototype.add = SetCache2.prototype.push = setCacheAdd_default2;\nSetCache2.prototype.has = setCacheHas_default2;\nvar SetCache_default2 = SetCache2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arraySome.js\nfunction arraySome2(array, predicate) {\n var index = -1, length = array == null ? 0 : array.length;\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n__name(arraySome2, \"arraySome\");\nvar arraySome_default2 = arraySome2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cacheHas.js\nfunction cacheHas2(cache, key) {\n return cache.has(key);\n}\n__name(cacheHas2, \"cacheHas\");\nvar cacheHas_default2 = cacheHas2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalArrays.js\nvar COMPARE_PARTIAL_FLAG7 = 1;\nvar COMPARE_UNORDERED_FLAG5 = 2;\nfunction equalArrays2(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG7, arrLength = array.length, othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG5 ? new SetCache_default2() : void 0;\n stack.set(array, other);\n stack.set(other, array);\n while (++index < arrLength) {\n var arrValue = array[index], othValue = other[index];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== void 0) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n if (seen) {\n if (!arraySome_default2(other, function(othValue2, othIndex) {\n if (!cacheHas_default2(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack[\"delete\"](array);\n stack[\"delete\"](other);\n return result;\n}\n__name(equalArrays2, \"equalArrays\");\nvar equalArrays_default2 = equalArrays2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js\nvar Uint8Array3 = root_default2.Uint8Array;\nvar Uint8Array_default2 = Uint8Array3;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapToArray.js\nfunction mapToArray2(map3) {\n var index = -1, result = Array(map3.size);\n map3.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n__name(mapToArray2, \"mapToArray\");\nvar mapToArray_default2 = mapToArray2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setToArray.js\nfunction setToArray2(set) {\n var index = -1, result = Array(set.size);\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n__name(setToArray2, \"setToArray\");\nvar setToArray_default2 = setToArray2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalByTag.js\nvar COMPARE_PARTIAL_FLAG8 = 1;\nvar COMPARE_UNORDERED_FLAG6 = 2;\nvar boolTag5 = \"[object Boolean]\";\nvar dateTag5 = \"[object Date]\";\nvar errorTag4 = \"[object Error]\";\nvar mapTag8 = \"[object Map]\";\nvar numberTag5 = \"[object Number]\";\nvar regexpTag6 = \"[object RegExp]\";\nvar setTag8 = \"[object Set]\";\nvar stringTag6 = \"[object String]\";\nvar symbolTag5 = \"[object Symbol]\";\nvar arrayBufferTag5 = \"[object ArrayBuffer]\";\nvar dataViewTag6 = \"[object DataView]\";\nvar symbolProto4 = Symbol_default2 ? Symbol_default2.prototype : void 0;\nvar symbolValueOf3 = symbolProto4 ? symbolProto4.valueOf : void 0;\nfunction equalByTag2(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag6:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag5:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array_default2(object), new Uint8Array_default2(other))) {\n return false;\n }\n return true;\n case boolTag5:\n case dateTag5:\n case numberTag5:\n return eq_default2(+object, +other);\n case errorTag4:\n return object.name == other.name && object.message == other.message;\n case regexpTag6:\n case stringTag6:\n return object == other + \"\";\n case mapTag8:\n var convert = mapToArray_default2;\n case setTag8:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG8;\n convert || (convert = setToArray_default2);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG6;\n stack.set(object, other);\n var result = equalArrays_default2(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack[\"delete\"](object);\n return result;\n case symbolTag5:\n if (symbolValueOf3) {\n return symbolValueOf3.call(object) == symbolValueOf3.call(other);\n }\n }\n return false;\n}\n__name(equalByTag2, \"equalByTag\");\nvar equalByTag_default2 = equalByTag2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js\nfunction arrayPush2(array, values2) {\n var index = -1, length = values2.length, offset = array.length;\n while (++index < length) {\n array[offset + index] = values2[index];\n }\n return array;\n}\n__name(arrayPush2, \"arrayPush\");\nvar arrayPush_default2 = arrayPush2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArray.js\nvar isArray2 = Array.isArray;\nvar isArray_default2 = isArray2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js\nfunction baseGetAllKeys2(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray_default2(object) ? result : arrayPush_default2(result, symbolsFunc(object));\n}\n__name(baseGetAllKeys2, \"baseGetAllKeys\");\nvar baseGetAllKeys_default2 = baseGetAllKeys2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js\nfunction arrayFilter2(array, predicate) {\n var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n__name(arrayFilter2, \"arrayFilter\");\nvar arrayFilter_default2 = arrayFilter2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js\nfunction stubArray2() {\n return [];\n}\n__name(stubArray2, \"stubArray\");\nvar stubArray_default2 = stubArray2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js\nvar objectProto26 = Object.prototype;\nvar propertyIsEnumerable3 = objectProto26.propertyIsEnumerable;\nvar nativeGetSymbols3 = Object.getOwnPropertySymbols;\nvar getSymbols2 = !nativeGetSymbols3 ? stubArray_default2 : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter_default2(nativeGetSymbols3(object), function(symbol) {\n return propertyIsEnumerable3.call(object, symbol);\n });\n};\nvar getSymbols_default2 = getSymbols2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js\nfunction baseTimes2(n, iteratee) {\n var index = -1, result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n__name(baseTimes2, \"baseTimes\");\nvar baseTimes_default2 = baseTimes2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js\nfunction isObjectLike2(value) {\n return value != null && typeof value == \"object\";\n}\n__name(isObjectLike2, \"isObjectLike\");\nvar isObjectLike_default2 = isObjectLike2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js\nvar argsTag5 = \"[object Arguments]\";\nfunction baseIsArguments2(value) {\n return isObjectLike_default2(value) && baseGetTag_default2(value) == argsTag5;\n}\n__name(baseIsArguments2, \"baseIsArguments\");\nvar baseIsArguments_default2 = baseIsArguments2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js\nvar objectProto27 = Object.prototype;\nvar hasOwnProperty22 = objectProto27.hasOwnProperty;\nvar propertyIsEnumerable4 = objectProto27.propertyIsEnumerable;\nvar isArguments2 = baseIsArguments_default2(/* @__PURE__ */ (function() {\n return arguments;\n})()) ? baseIsArguments_default2 : function(value) {\n return isObjectLike_default2(value) && hasOwnProperty22.call(value, \"callee\") && !propertyIsEnumerable4.call(value, \"callee\");\n};\nvar isArguments_default2 = isArguments2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js\nfunction stubFalse2() {\n return false;\n}\n__name(stubFalse2, \"stubFalse\");\nvar stubFalse_default2 = stubFalse2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js\nvar freeExports4 = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule4 = freeExports4 && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports4 = freeModule4 && freeModule4.exports === freeExports4;\nvar Buffer4 = moduleExports4 ? root_default2.Buffer : void 0;\nvar nativeIsBuffer2 = Buffer4 ? Buffer4.isBuffer : void 0;\nvar isBuffer2 = nativeIsBuffer2 || stubFalse_default2;\nvar isBuffer_default2 = isBuffer2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js\nvar MAX_SAFE_INTEGER3 = 9007199254740991;\nvar reIsUint2 = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex2(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER3 : length;\n return !!length && (type == \"number\" || type != \"symbol\" && reIsUint2.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n}\n__name(isIndex2, \"isIndex\");\nvar isIndex_default2 = isIndex2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isLength.js\nvar MAX_SAFE_INTEGER4 = 9007199254740991;\nfunction isLength2(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER4;\n}\n__name(isLength2, \"isLength\");\nvar isLength_default2 = isLength2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js\nvar argsTag6 = \"[object Arguments]\";\nvar arrayTag4 = \"[object Array]\";\nvar boolTag6 = \"[object Boolean]\";\nvar dateTag6 = \"[object Date]\";\nvar errorTag5 = \"[object Error]\";\nvar funcTag5 = \"[object Function]\";\nvar mapTag9 = \"[object Map]\";\nvar numberTag6 = \"[object Number]\";\nvar objectTag5 = \"[object Object]\";\nvar regexpTag7 = \"[object RegExp]\";\nvar setTag9 = \"[object Set]\";\nvar stringTag7 = \"[object String]\";\nvar weakMapTag4 = \"[object WeakMap]\";\nvar arrayBufferTag6 = \"[object ArrayBuffer]\";\nvar dataViewTag7 = \"[object DataView]\";\nvar float32Tag4 = \"[object Float32Array]\";\nvar float64Tag4 = \"[object Float64Array]\";\nvar int8Tag4 = \"[object Int8Array]\";\nvar int16Tag4 = \"[object Int16Array]\";\nvar int32Tag4 = \"[object Int32Array]\";\nvar uint8Tag4 = \"[object Uint8Array]\";\nvar uint8ClampedTag4 = \"[object Uint8ClampedArray]\";\nvar uint16Tag4 = \"[object Uint16Array]\";\nvar uint32Tag4 = \"[object Uint32Array]\";\nvar typedArrayTags2 = {};\ntypedArrayTags2[float32Tag4] = typedArrayTags2[float64Tag4] = typedArrayTags2[int8Tag4] = typedArrayTags2[int16Tag4] = typedArrayTags2[int32Tag4] = typedArrayTags2[uint8Tag4] = typedArrayTags2[uint8ClampedTag4] = typedArrayTags2[uint16Tag4] = typedArrayTags2[uint32Tag4] = true;\ntypedArrayTags2[argsTag6] = typedArrayTags2[arrayTag4] = typedArrayTags2[arrayBufferTag6] = typedArrayTags2[boolTag6] = typedArrayTags2[dataViewTag7] = typedArrayTags2[dateTag6] = typedArrayTags2[errorTag5] = typedArrayTags2[funcTag5] = typedArrayTags2[mapTag9] = typedArrayTags2[numberTag6] = typedArrayTags2[objectTag5] = typedArrayTags2[regexpTag7] = typedArrayTags2[setTag9] = typedArrayTags2[stringTag7] = typedArrayTags2[weakMapTag4] = false;\nfunction baseIsTypedArray2(value) {\n return isObjectLike_default2(value) && isLength_default2(value.length) && !!typedArrayTags2[baseGetTag_default2(value)];\n}\n__name(baseIsTypedArray2, \"baseIsTypedArray\");\nvar baseIsTypedArray_default2 = baseIsTypedArray2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js\nfunction baseUnary2(func) {\n return function(value) {\n return func(value);\n };\n}\n__name(baseUnary2, \"baseUnary\");\nvar baseUnary_default2 = baseUnary2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js\nvar freeExports5 = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule5 = freeExports5 && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports5 = freeModule5 && freeModule5.exports === freeExports5;\nvar freeProcess2 = moduleExports5 && freeGlobal_default2.process;\nvar nodeUtil2 = (function() {\n try {\n var types = freeModule5 && freeModule5.require && freeModule5.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess2 && freeProcess2.binding && freeProcess2.binding(\"util\");\n } catch (e) {\n }\n})();\nvar nodeUtil_default2 = nodeUtil2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js\nvar nodeIsTypedArray2 = nodeUtil_default2 && nodeUtil_default2.isTypedArray;\nvar isTypedArray2 = nodeIsTypedArray2 ? baseUnary_default2(nodeIsTypedArray2) : baseIsTypedArray_default2;\nvar isTypedArray_default2 = isTypedArray2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js\nvar objectProto28 = Object.prototype;\nvar hasOwnProperty23 = objectProto28.hasOwnProperty;\nfunction arrayLikeKeys2(value, inherited) {\n var isArr = isArray_default2(value), isArg = !isArr && isArguments_default2(value), isBuff = !isArr && !isArg && isBuffer_default2(value), isType2 = !isArr && !isArg && !isBuff && isTypedArray_default2(value), skipIndexes = isArr || isArg || isBuff || isType2, result = skipIndexes ? baseTimes_default2(value.length, String) : [], length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty23.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.\n (key == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == \"offset\" || key == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType2 && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || // Skip index properties.\n isIndex_default2(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n__name(arrayLikeKeys2, \"arrayLikeKeys\");\nvar arrayLikeKeys_default2 = arrayLikeKeys2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js\nvar objectProto29 = Object.prototype;\nfunction isPrototype2(value) {\n var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto29;\n return value === proto;\n}\n__name(isPrototype2, \"isPrototype\");\nvar isPrototype_default2 = isPrototype2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js\nfunction overArg2(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n__name(overArg2, \"overArg\");\nvar overArg_default2 = overArg2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js\nvar nativeKeys2 = overArg_default2(Object.keys, Object);\nvar nativeKeys_default2 = nativeKeys2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js\nvar objectProto30 = Object.prototype;\nvar hasOwnProperty24 = objectProto30.hasOwnProperty;\nfunction baseKeys2(object) {\n if (!isPrototype_default2(object)) {\n return nativeKeys_default2(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty24.call(object, key) && key != \"constructor\") {\n result.push(key);\n }\n }\n return result;\n}\n__name(baseKeys2, \"baseKeys\");\nvar baseKeys_default2 = baseKeys2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js\nfunction isArrayLike2(value) {\n return value != null && isLength_default2(value.length) && !isFunction_default2(value);\n}\n__name(isArrayLike2, \"isArrayLike\");\nvar isArrayLike_default2 = isArrayLike2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/keys.js\nfunction keys2(object) {\n return isArrayLike_default2(object) ? arrayLikeKeys_default2(object) : baseKeys_default2(object);\n}\n__name(keys2, \"keys\");\nvar keys_default2 = keys2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js\nfunction getAllKeys2(object) {\n return baseGetAllKeys_default2(object, keys_default2, getSymbols_default2);\n}\n__name(getAllKeys2, \"getAllKeys\");\nvar getAllKeys_default2 = getAllKeys2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalObjects.js\nvar COMPARE_PARTIAL_FLAG9 = 1;\nvar objectProto31 = Object.prototype;\nvar hasOwnProperty25 = objectProto31.hasOwnProperty;\nfunction equalObjects2(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG9, objProps = getAllKeys_default2(object), objLength = objProps.length, othProps = getAllKeys_default2(other), othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty25.call(other, key))) {\n return false;\n }\n }\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key], othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == \"constructor\");\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor, othCtor = other.constructor;\n if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack[\"delete\"](object);\n stack[\"delete\"](other);\n return result;\n}\n__name(equalObjects2, \"equalObjects\");\nvar equalObjects_default2 = equalObjects2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js\nvar DataView2 = getNative_default2(root_default2, \"DataView\");\nvar DataView_default2 = DataView2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js\nvar Promise3 = getNative_default2(root_default2, \"Promise\");\nvar Promise_default2 = Promise3;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Set.js\nvar Set3 = getNative_default2(root_default2, \"Set\");\nvar Set_default2 = Set3;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js\nvar WeakMap2 = getNative_default2(root_default2, \"WeakMap\");\nvar WeakMap_default2 = WeakMap2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js\nvar mapTag10 = \"[object Map]\";\nvar objectTag6 = \"[object Object]\";\nvar promiseTag2 = \"[object Promise]\";\nvar setTag10 = \"[object Set]\";\nvar weakMapTag5 = \"[object WeakMap]\";\nvar dataViewTag8 = \"[object DataView]\";\nvar dataViewCtorString2 = toSource_default2(DataView_default2);\nvar mapCtorString2 = toSource_default2(Map_default2);\nvar promiseCtorString2 = toSource_default2(Promise_default2);\nvar setCtorString2 = toSource_default2(Set_default2);\nvar weakMapCtorString2 = toSource_default2(WeakMap_default2);\nvar getTag2 = baseGetTag_default2;\nif (DataView_default2 && getTag2(new DataView_default2(new ArrayBuffer(1))) != dataViewTag8 || Map_default2 && getTag2(new Map_default2()) != mapTag10 || Promise_default2 && getTag2(Promise_default2.resolve()) != promiseTag2 || Set_default2 && getTag2(new Set_default2()) != setTag10 || WeakMap_default2 && getTag2(new WeakMap_default2()) != weakMapTag5) {\n getTag2 = /* @__PURE__ */ __name(function(value) {\n var result = baseGetTag_default2(value), Ctor = result == objectTag6 ? value.constructor : void 0, ctorString = Ctor ? toSource_default2(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString2:\n return dataViewTag8;\n case mapCtorString2:\n return mapTag10;\n case promiseCtorString2:\n return promiseTag2;\n case setCtorString2:\n return setTag10;\n case weakMapCtorString2:\n return weakMapTag5;\n }\n }\n return result;\n }, \"getTag\");\n}\nvar getTag_default2 = getTag2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqualDeep.js\nvar COMPARE_PARTIAL_FLAG10 = 1;\nvar argsTag7 = \"[object Arguments]\";\nvar arrayTag5 = \"[object Array]\";\nvar objectTag7 = \"[object Object]\";\nvar objectProto32 = Object.prototype;\nvar hasOwnProperty26 = objectProto32.hasOwnProperty;\nfunction baseIsEqualDeep2(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray_default2(object), othIsArr = isArray_default2(other), objTag = objIsArr ? arrayTag5 : getTag_default2(object), othTag = othIsArr ? arrayTag5 : getTag_default2(other);\n objTag = objTag == argsTag7 ? objectTag7 : objTag;\n othTag = othTag == argsTag7 ? objectTag7 : othTag;\n var objIsObj = objTag == objectTag7, othIsObj = othTag == objectTag7, isSameTag = objTag == othTag;\n if (isSameTag && isBuffer_default2(object)) {\n if (!isBuffer_default2(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack_default2());\n return objIsArr || isTypedArray_default2(object) ? equalArrays_default2(object, other, bitmask, customizer, equalFunc, stack) : equalByTag_default2(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG10)) {\n var objIsWrapped = objIsObj && hasOwnProperty26.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty26.call(other, \"__wrapped__\");\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack_default2());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack_default2());\n return equalObjects_default2(object, other, bitmask, customizer, equalFunc, stack);\n}\n__name(baseIsEqualDeep2, \"baseIsEqualDeep\");\nvar baseIsEqualDeep_default2 = baseIsEqualDeep2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqual.js\nfunction baseIsEqual2(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike_default2(value) && !isObjectLike_default2(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep_default2(value, other, bitmask, customizer, baseIsEqual2, stack);\n}\n__name(baseIsEqual2, \"baseIsEqual\");\nvar baseIsEqual_default2 = baseIsEqual2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMatch.js\nvar COMPARE_PARTIAL_FLAG11 = 1;\nvar COMPARE_UNORDERED_FLAG7 = 2;\nfunction baseIsMatch2(object, source, matchData, customizer) {\n var index = matchData.length, length = index, noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0], objValue = object[key], srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === void 0 && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack_default2();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === void 0 ? baseIsEqual_default2(srcValue, objValue, COMPARE_PARTIAL_FLAG11 | COMPARE_UNORDERED_FLAG7, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\n__name(baseIsMatch2, \"baseIsMatch\");\nvar baseIsMatch_default2 = baseIsMatch2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isStrictComparable.js\nfunction isStrictComparable2(value) {\n return value === value && !isObject_default2(value);\n}\n__name(isStrictComparable2, \"isStrictComparable\");\nvar isStrictComparable_default2 = isStrictComparable2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getMatchData.js\nfunction getMatchData2(object) {\n var result = keys_default2(object), length = result.length;\n while (length--) {\n var key = result[length], value = object[key];\n result[length] = [key, value, isStrictComparable_default2(value)];\n }\n return result;\n}\n__name(getMatchData2, \"getMatchData\");\nvar getMatchData_default2 = getMatchData2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_matchesStrictComparable.js\nfunction matchesStrictComparable2(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n };\n}\n__name(matchesStrictComparable2, \"matchesStrictComparable\");\nvar matchesStrictComparable_default2 = matchesStrictComparable2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseMatches.js\nfunction baseMatches2(source) {\n var matchData = getMatchData_default2(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable_default2(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch_default2(object, source, matchData);\n };\n}\n__name(baseMatches2, \"baseMatches\");\nvar baseMatches_default2 = baseMatches2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js\nvar symbolTag6 = \"[object Symbol]\";\nfunction isSymbol2(value) {\n return typeof value == \"symbol\" || isObjectLike_default2(value) && baseGetTag_default2(value) == symbolTag6;\n}\n__name(isSymbol2, \"isSymbol\");\nvar isSymbol_default2 = isSymbol2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isKey.js\nvar reIsDeepProp2 = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\nvar reIsPlainProp2 = /^\\w*$/;\nfunction isKey2(value, object) {\n if (isArray_default2(value)) {\n return false;\n }\n var type = typeof value;\n if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol_default2(value)) {\n return true;\n }\n return reIsPlainProp2.test(value) || !reIsDeepProp2.test(value) || object != null && value in Object(object);\n}\n__name(isKey2, \"isKey\");\nvar isKey_default2 = isKey2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/memoize.js\nvar FUNC_ERROR_TEXT3 = \"Expected a function\";\nfunction memoize2(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT3);\n }\n var memoized = /* @__PURE__ */ __name(function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n }, \"memoized\");\n memoized.cache = new (memoize2.Cache || MapCache_default2)();\n return memoized;\n}\n__name(memoize2, \"memoize\");\nmemoize2.Cache = MapCache_default2;\nvar memoize_default2 = memoize2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_memoizeCapped.js\nvar MAX_MEMOIZE_SIZE2 = 500;\nfunction memoizeCapped2(func) {\n var result = memoize_default2(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE2) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\n__name(memoizeCapped2, \"memoizeCapped\");\nvar memoizeCapped_default2 = memoizeCapped2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringToPath.js\nvar rePropName2 = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\nvar reEscapeChar2 = /\\\\(\\\\)?/g;\nvar stringToPath2 = memoizeCapped_default2(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string.replace(rePropName2, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar2, \"$1\") : number || match);\n });\n return result;\n});\nvar stringToPath_default2 = stringToPath2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js\nvar INFINITY5 = 1 / 0;\nvar symbolProto5 = Symbol_default2 ? Symbol_default2.prototype : void 0;\nvar symbolToString2 = symbolProto5 ? symbolProto5.toString : void 0;\nfunction baseToString2(value) {\n if (typeof value == \"string\") {\n return value;\n }\n if (isArray_default2(value)) {\n return arrayMap_default2(value, baseToString2) + \"\";\n }\n if (isSymbol_default2(value)) {\n return symbolToString2 ? symbolToString2.call(value) : \"\";\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY5 ? \"-0\" : result;\n}\n__name(baseToString2, \"baseToString\");\nvar baseToString_default2 = baseToString2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toString.js\nfunction toString3(value) {\n return value == null ? \"\" : baseToString_default2(value);\n}\n__name(toString3, \"toString\");\nvar toString_default2 = toString3;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castPath.js\nfunction castPath2(value, object) {\n if (isArray_default2(value)) {\n return value;\n }\n return isKey_default2(value, object) ? [value] : stringToPath_default2(toString_default2(value));\n}\n__name(castPath2, \"castPath\");\nvar castPath_default2 = castPath2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_toKey.js\nvar INFINITY6 = 1 / 0;\nfunction toKey2(value) {\n if (typeof value == \"string\" || isSymbol_default2(value)) {\n return value;\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY6 ? \"-0\" : result;\n}\n__name(toKey2, \"toKey\");\nvar toKey_default2 = toKey2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGet.js\nfunction baseGet2(object, path) {\n path = castPath_default2(path, object);\n var index = 0, length = path.length;\n while (object != null && index < length) {\n object = object[toKey_default2(path[index++])];\n }\n return index && index == length ? object : void 0;\n}\n__name(baseGet2, \"baseGet\");\nvar baseGet_default2 = baseGet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/get.js\nfunction get2(object, path, defaultValue) {\n var result = object == null ? void 0 : baseGet_default2(object, path);\n return result === void 0 ? defaultValue : result;\n}\n__name(get2, \"get\");\nvar get_default2 = get2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseHasIn.js\nfunction baseHasIn2(object, key) {\n return object != null && key in Object(object);\n}\n__name(baseHasIn2, \"baseHasIn\");\nvar baseHasIn_default2 = baseHasIn2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasPath.js\nfunction hasPath2(object, path, hasFunc) {\n path = castPath_default2(path, object);\n var index = -1, length = path.length, result = false;\n while (++index < length) {\n var key = toKey_default2(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength_default2(length) && isIndex_default2(key, length) && (isArray_default2(object) || isArguments_default2(object));\n}\n__name(hasPath2, \"hasPath\");\nvar hasPath_default2 = hasPath2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/hasIn.js\nfunction hasIn2(object, path) {\n return object != null && hasPath_default2(object, path, baseHasIn_default2);\n}\n__name(hasIn2, \"hasIn\");\nvar hasIn_default2 = hasIn2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseMatchesProperty.js\nvar COMPARE_PARTIAL_FLAG12 = 1;\nvar COMPARE_UNORDERED_FLAG8 = 2;\nfunction baseMatchesProperty2(path, srcValue) {\n if (isKey_default2(path) && isStrictComparable_default2(srcValue)) {\n return matchesStrictComparable_default2(toKey_default2(path), srcValue);\n }\n return function(object) {\n var objValue = get_default2(object, path);\n return objValue === void 0 && objValue === srcValue ? hasIn_default2(object, path) : baseIsEqual_default2(srcValue, objValue, COMPARE_PARTIAL_FLAG12 | COMPARE_UNORDERED_FLAG8);\n };\n}\n__name(baseMatchesProperty2, \"baseMatchesProperty\");\nvar baseMatchesProperty_default2 = baseMatchesProperty2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/identity.js\nfunction identity2(value) {\n return value;\n}\n__name(identity2, \"identity\");\nvar identity_default2 = identity2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseProperty.js\nfunction baseProperty2(key) {\n return function(object) {\n return object == null ? void 0 : object[key];\n };\n}\n__name(baseProperty2, \"baseProperty\");\nvar baseProperty_default2 = baseProperty2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePropertyDeep.js\nfunction basePropertyDeep2(path) {\n return function(object) {\n return baseGet_default2(object, path);\n };\n}\n__name(basePropertyDeep2, \"basePropertyDeep\");\nvar basePropertyDeep_default2 = basePropertyDeep2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/property.js\nfunction property2(path) {\n return isKey_default2(path) ? baseProperty_default2(toKey_default2(path)) : basePropertyDeep_default2(path);\n}\n__name(property2, \"property\");\nvar property_default2 = property2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIteratee.js\nfunction baseIteratee2(value) {\n if (typeof value == \"function\") {\n return value;\n }\n if (value == null) {\n return identity_default2;\n }\n if (typeof value == \"object\") {\n return isArray_default2(value) ? baseMatchesProperty_default2(value[0], value[1]) : baseMatches_default2(value);\n }\n return property_default2(value);\n}\n__name(baseIteratee2, \"baseIteratee\");\nvar baseIteratee_default2 = baseIteratee2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createBaseFor.js\nfunction createBaseFor2(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n__name(createBaseFor2, \"createBaseFor\");\nvar createBaseFor_default2 = createBaseFor2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFor.js\nvar baseFor2 = createBaseFor_default2();\nvar baseFor_default2 = baseFor2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseForOwn.js\nfunction baseForOwn2(object, iteratee) {\n return object && baseFor_default2(object, iteratee, keys_default2);\n}\n__name(baseForOwn2, \"baseForOwn\");\nvar baseForOwn_default2 = baseForOwn2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createBaseEach.js\nfunction createBaseEach2(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike_default2(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n__name(createBaseEach2, \"createBaseEach\");\nvar createBaseEach_default2 = createBaseEach2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseEach.js\nvar baseEach2 = createBaseEach_default2(baseForOwn_default2);\nvar baseEach_default2 = baseEach2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseMap.js\nfunction baseMap2(collection, iteratee) {\n var index = -1, result = isArrayLike_default2(collection) ? Array(collection.length) : [];\n baseEach_default2(collection, function(value, key, collection2) {\n result[++index] = iteratee(value, key, collection2);\n });\n return result;\n}\n__name(baseMap2, \"baseMap\");\nvar baseMap_default2 = baseMap2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/map.js\nfunction map2(collection, iteratee) {\n var func = isArray_default2(collection) ? arrayMap_default2 : baseMap_default2;\n return func(collection, baseIteratee_default2(iteratee, 3));\n}\n__name(map2, \"map\");\nvar map_default2 = map2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFilter.js\nfunction baseFilter2(collection, predicate) {\n var result = [];\n baseEach_default2(collection, function(value, index, collection2) {\n if (predicate(value, index, collection2)) {\n result.push(value);\n }\n });\n return result;\n}\n__name(baseFilter2, \"baseFilter\");\nvar baseFilter_default2 = baseFilter2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/filter.js\nfunction filter2(collection, predicate) {\n var func = isArray_default2(collection) ? arrayFilter_default2 : baseFilter_default2;\n return func(collection, baseIteratee_default2(predicate, 3));\n}\n__name(filter2, \"filter\");\nvar filter_default2 = filter2;\n\n// ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.1.1/node_modules/chevrotain-allstar/lib/atn.js\nfunction buildATNKey(rule, type, occurrence) {\n return `${rule.name}_${type}_${occurrence}`;\n}\n__name(buildATNKey, \"buildATNKey\");\nvar ATN_BASIC = 1;\nvar ATN_RULE_START = 2;\nvar ATN_PLUS_BLOCK_START = 4;\nvar ATN_STAR_BLOCK_START = 5;\nvar ATN_RULE_STOP = 7;\nvar ATN_BLOCK_END = 8;\nvar ATN_STAR_LOOP_BACK = 9;\nvar ATN_STAR_LOOP_ENTRY = 10;\nvar ATN_PLUS_LOOP_BACK = 11;\nvar ATN_LOOP_END = 12;\nvar AbstractTransition = class {\n static {\n __name(this, \"AbstractTransition\");\n }\n constructor(target) {\n this.target = target;\n }\n isEpsilon() {\n return false;\n }\n};\nvar AtomTransition = class extends AbstractTransition {\n static {\n __name(this, \"AtomTransition\");\n }\n constructor(target, tokenType) {\n super(target);\n this.tokenType = tokenType;\n }\n};\nvar EpsilonTransition = class extends AbstractTransition {\n static {\n __name(this, \"EpsilonTransition\");\n }\n constructor(target) {\n super(target);\n }\n isEpsilon() {\n return true;\n }\n};\nvar RuleTransition = class extends AbstractTransition {\n static {\n __name(this, \"RuleTransition\");\n }\n constructor(ruleStart, rule, followState) {\n super(ruleStart);\n this.rule = rule;\n this.followState = followState;\n }\n isEpsilon() {\n return true;\n }\n};\nfunction createATN(rules) {\n const atn = {\n decisionMap: {},\n decisionStates: [],\n ruleToStartState: /* @__PURE__ */ new Map(),\n ruleToStopState: /* @__PURE__ */ new Map(),\n states: []\n };\n createRuleStartAndStopATNStates(atn, rules);\n const ruleLength = rules.length;\n for (let i = 0; i < ruleLength; i++) {\n const rule = rules[i];\n const ruleBlock = block(atn, rule, rule);\n if (ruleBlock === void 0) {\n continue;\n }\n buildRuleHandle(atn, rule, ruleBlock);\n }\n return atn;\n}\n__name(createATN, \"createATN\");\nfunction createRuleStartAndStopATNStates(atn, rules) {\n const ruleLength = rules.length;\n for (let i = 0; i < ruleLength; i++) {\n const rule = rules[i];\n const start = newState(atn, rule, void 0, {\n type: ATN_RULE_START\n });\n const stop = newState(atn, rule, void 0, {\n type: ATN_RULE_STOP\n });\n start.stop = stop;\n atn.ruleToStartState.set(rule, start);\n atn.ruleToStopState.set(rule, stop);\n }\n}\n__name(createRuleStartAndStopATNStates, \"createRuleStartAndStopATNStates\");\nfunction atom(atn, rule, production) {\n if (production instanceof Terminal) {\n return tokenRef(atn, rule, production.terminalType, production);\n } else if (production instanceof NonTerminal) {\n return ruleRef(atn, rule, production);\n } else if (production instanceof Alternation) {\n return alternation(atn, rule, production);\n } else if (production instanceof Option) {\n return option(atn, rule, production);\n } else if (production instanceof Repetition) {\n return repetition(atn, rule, production);\n } else if (production instanceof RepetitionWithSeparator) {\n return repetitionSep(atn, rule, production);\n } else if (production instanceof RepetitionMandatory) {\n return repetitionMandatory(atn, rule, production);\n } else if (production instanceof RepetitionMandatoryWithSeparator) {\n return repetitionMandatorySep(atn, rule, production);\n } else {\n return block(atn, rule, production);\n }\n}\n__name(atom, \"atom\");\nfunction repetition(atn, rule, repetition2) {\n const starState = newState(atn, rule, repetition2, {\n type: ATN_STAR_BLOCK_START\n });\n defineDecisionState(atn, starState);\n const handle = makeAlts(atn, rule, starState, repetition2, block(atn, rule, repetition2));\n return star(atn, rule, repetition2, handle);\n}\n__name(repetition, \"repetition\");\nfunction repetitionSep(atn, rule, repetition2) {\n const starState = newState(atn, rule, repetition2, {\n type: ATN_STAR_BLOCK_START\n });\n defineDecisionState(atn, starState);\n const handle = makeAlts(atn, rule, starState, repetition2, block(atn, rule, repetition2));\n const sep = tokenRef(atn, rule, repetition2.separator, repetition2);\n return star(atn, rule, repetition2, handle, sep);\n}\n__name(repetitionSep, \"repetitionSep\");\nfunction repetitionMandatory(atn, rule, repetition2) {\n const plusState = newState(atn, rule, repetition2, {\n type: ATN_PLUS_BLOCK_START\n });\n defineDecisionState(atn, plusState);\n const handle = makeAlts(atn, rule, plusState, repetition2, block(atn, rule, repetition2));\n return plus(atn, rule, repetition2, handle);\n}\n__name(repetitionMandatory, \"repetitionMandatory\");\nfunction repetitionMandatorySep(atn, rule, repetition2) {\n const plusState = newState(atn, rule, repetition2, {\n type: ATN_PLUS_BLOCK_START\n });\n defineDecisionState(atn, plusState);\n const handle = makeAlts(atn, rule, plusState, repetition2, block(atn, rule, repetition2));\n const sep = tokenRef(atn, rule, repetition2.separator, repetition2);\n return plus(atn, rule, repetition2, handle, sep);\n}\n__name(repetitionMandatorySep, \"repetitionMandatorySep\");\nfunction alternation(atn, rule, alternation2) {\n const start = newState(atn, rule, alternation2, {\n type: ATN_BASIC\n });\n defineDecisionState(atn, start);\n const alts = map_default2(alternation2.definition, (e) => atom(atn, rule, e));\n const handle = makeAlts(atn, rule, start, alternation2, ...alts);\n return handle;\n}\n__name(alternation, \"alternation\");\nfunction option(atn, rule, option2) {\n const start = newState(atn, rule, option2, {\n type: ATN_BASIC\n });\n defineDecisionState(atn, start);\n const handle = makeAlts(atn, rule, start, option2, block(atn, rule, option2));\n return optional(atn, rule, option2, handle);\n}\n__name(option, \"option\");\nfunction block(atn, rule, block2) {\n const handles = filter_default2(map_default2(block2.definition, (e) => atom(atn, rule, e)), (e) => e !== void 0);\n if (handles.length === 1) {\n return handles[0];\n } else if (handles.length === 0) {\n return void 0;\n } else {\n return makeBlock(atn, handles);\n }\n}\n__name(block, \"block\");\nfunction plus(atn, rule, plus2, handle, sep) {\n const blkStart = handle.left;\n const blkEnd = handle.right;\n const loop = newState(atn, rule, plus2, {\n type: ATN_PLUS_LOOP_BACK\n });\n defineDecisionState(atn, loop);\n const end = newState(atn, rule, plus2, {\n type: ATN_LOOP_END\n });\n blkStart.loopback = loop;\n end.loopback = loop;\n atn.decisionMap[buildATNKey(rule, sep ? \"RepetitionMandatoryWithSeparator\" : \"RepetitionMandatory\", plus2.idx)] = loop;\n epsilon(blkEnd, loop);\n if (sep === void 0) {\n epsilon(loop, blkStart);\n epsilon(loop, end);\n } else {\n epsilon(loop, end);\n epsilon(loop, sep.left);\n epsilon(sep.right, blkStart);\n }\n return {\n left: blkStart,\n right: end\n };\n}\n__name(plus, \"plus\");\nfunction star(atn, rule, star2, handle, sep) {\n const start = handle.left;\n const end = handle.right;\n const entry = newState(atn, rule, star2, {\n type: ATN_STAR_LOOP_ENTRY\n });\n defineDecisionState(atn, entry);\n const loopEnd = newState(atn, rule, star2, {\n type: ATN_LOOP_END\n });\n const loop = newState(atn, rule, star2, {\n type: ATN_STAR_LOOP_BACK\n });\n entry.loopback = loop;\n loopEnd.loopback = loop;\n epsilon(entry, start);\n epsilon(entry, loopEnd);\n epsilon(end, loop);\n if (sep !== void 0) {\n epsilon(loop, loopEnd);\n epsilon(loop, sep.left);\n epsilon(sep.right, start);\n } else {\n epsilon(loop, entry);\n }\n atn.decisionMap[buildATNKey(rule, sep ? \"RepetitionWithSeparator\" : \"Repetition\", star2.idx)] = entry;\n return {\n left: entry,\n right: loopEnd\n };\n}\n__name(star, \"star\");\nfunction optional(atn, rule, optional2, handle) {\n const start = handle.left;\n const end = handle.right;\n epsilon(start, end);\n atn.decisionMap[buildATNKey(rule, \"Option\", optional2.idx)] = start;\n return handle;\n}\n__name(optional, \"optional\");\nfunction defineDecisionState(atn, state) {\n atn.decisionStates.push(state);\n state.decision = atn.decisionStates.length - 1;\n return state.decision;\n}\n__name(defineDecisionState, \"defineDecisionState\");\nfunction makeAlts(atn, rule, start, production, ...alts) {\n const end = newState(atn, rule, production, {\n type: ATN_BLOCK_END,\n start\n });\n start.end = end;\n for (const alt of alts) {\n if (alt !== void 0) {\n epsilon(start, alt.left);\n epsilon(alt.right, end);\n } else {\n epsilon(start, end);\n }\n }\n const handle = {\n left: start,\n right: end\n };\n atn.decisionMap[buildATNKey(rule, getProdType2(production), production.idx)] = start;\n return handle;\n}\n__name(makeAlts, \"makeAlts\");\nfunction getProdType2(production) {\n if (production instanceof Alternation) {\n return \"Alternation\";\n } else if (production instanceof Option) {\n return \"Option\";\n } else if (production instanceof Repetition) {\n return \"Repetition\";\n } else if (production instanceof RepetitionWithSeparator) {\n return \"RepetitionWithSeparator\";\n } else if (production instanceof RepetitionMandatory) {\n return \"RepetitionMandatory\";\n } else if (production instanceof RepetitionMandatoryWithSeparator) {\n return \"RepetitionMandatoryWithSeparator\";\n } else {\n throw new Error(\"Invalid production type encountered\");\n }\n}\n__name(getProdType2, \"getProdType\");\nfunction makeBlock(atn, alts) {\n const altsLength = alts.length;\n for (let i = 0; i < altsLength - 1; i++) {\n const handle = alts[i];\n let transition;\n if (handle.left.transitions.length === 1) {\n transition = handle.left.transitions[0];\n }\n const isRuleTransition = transition instanceof RuleTransition;\n const ruleTransition = transition;\n const next = alts[i + 1].left;\n if (handle.left.type === ATN_BASIC && handle.right.type === ATN_BASIC && transition !== void 0 && (isRuleTransition && ruleTransition.followState === handle.right || transition.target === handle.right)) {\n if (isRuleTransition) {\n ruleTransition.followState = next;\n } else {\n transition.target = next;\n }\n removeState(atn, handle.right);\n } else {\n epsilon(handle.right, next);\n }\n }\n const first2 = alts[0];\n const last2 = alts[altsLength - 1];\n return {\n left: first2.left,\n right: last2.right\n };\n}\n__name(makeBlock, \"makeBlock\");\nfunction tokenRef(atn, rule, tokenType, production) {\n const left = newState(atn, rule, production, {\n type: ATN_BASIC\n });\n const right = newState(atn, rule, production, {\n type: ATN_BASIC\n });\n addTransition(left, new AtomTransition(right, tokenType));\n return {\n left,\n right\n };\n}\n__name(tokenRef, \"tokenRef\");\nfunction ruleRef(atn, currentRule, nonTerminal) {\n const rule = nonTerminal.referencedRule;\n const start = atn.ruleToStartState.get(rule);\n const left = newState(atn, currentRule, nonTerminal, {\n type: ATN_BASIC\n });\n const right = newState(atn, currentRule, nonTerminal, {\n type: ATN_BASIC\n });\n const call = new RuleTransition(start, rule, right);\n addTransition(left, call);\n return {\n left,\n right\n };\n}\n__name(ruleRef, \"ruleRef\");\nfunction buildRuleHandle(atn, rule, block2) {\n const start = atn.ruleToStartState.get(rule);\n epsilon(start, block2.left);\n const stop = atn.ruleToStopState.get(rule);\n epsilon(block2.right, stop);\n const handle = {\n left: start,\n right: stop\n };\n return handle;\n}\n__name(buildRuleHandle, \"buildRuleHandle\");\nfunction epsilon(a, b) {\n const transition = new EpsilonTransition(b);\n addTransition(a, transition);\n}\n__name(epsilon, \"epsilon\");\nfunction newState(atn, rule, production, partial) {\n const t = Object.assign({\n atn,\n production,\n epsilonOnlyTransitions: false,\n rule,\n transitions: [],\n nextTokenWithinRule: [],\n stateNumber: atn.states.length\n }, partial);\n atn.states.push(t);\n return t;\n}\n__name(newState, \"newState\");\nfunction addTransition(state, transition) {\n if (state.transitions.length === 0) {\n state.epsilonOnlyTransitions = transition.isEpsilon();\n }\n state.transitions.push(transition);\n}\n__name(addTransition, \"addTransition\");\nfunction removeState(atn, state) {\n atn.states.splice(atn.states.indexOf(state), 1);\n}\n__name(removeState, \"removeState\");\n\n// ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.1.1/node_modules/chevrotain-allstar/lib/dfa.js\nvar DFA_ERROR = {};\nvar ATNConfigSet = class {\n static {\n __name(this, \"ATNConfigSet\");\n }\n constructor() {\n this.map = {};\n this.configs = [];\n }\n get size() {\n return this.configs.length;\n }\n finalize() {\n this.map = {};\n }\n add(config) {\n const key = getATNConfigKey(config);\n if (!(key in this.map)) {\n this.map[key] = this.configs.length;\n this.configs.push(config);\n }\n }\n get elements() {\n return this.configs;\n }\n get alts() {\n return map_default2(this.configs, (e) => e.alt);\n }\n get key() {\n let value = \"\";\n for (const k in this.map) {\n value += k + \":\";\n }\n return value;\n }\n};\nfunction getATNConfigKey(config, alt = true) {\n return `${alt ? `a${config.alt}` : \"\"}s${config.state.stateNumber}:${config.stack.map((e) => e.stateNumber.toString()).join(\"_\")}`;\n}\n__name(getATNConfigKey, \"getATNConfigKey\");\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseExtremum.js\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1, length = array.length;\n while (++index < length) {\n var value = array[index], current = iteratee(value);\n if (current != null && (computed === void 0 ? current === current && !isSymbol_default2(current) : comparator(current, computed))) {\n var computed = current, result = value;\n }\n }\n return result;\n}\n__name(baseExtremum, \"baseExtremum\");\nvar baseExtremum_default = baseExtremum;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseLt.js\nfunction baseLt(value, other) {\n return value < other;\n}\n__name(baseLt, \"baseLt\");\nvar baseLt_default = baseLt;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/min.js\nfunction min(array) {\n return array && array.length ? baseExtremum_default(array, identity_default2, baseLt_default) : void 0;\n}\n__name(min, \"min\");\nvar min_default = min;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isFlattenable.js\nvar spreadableSymbol2 = Symbol_default2 ? Symbol_default2.isConcatSpreadable : void 0;\nfunction isFlattenable2(value) {\n return isArray_default2(value) || isArguments_default2(value) || !!(spreadableSymbol2 && value && value[spreadableSymbol2]);\n}\n__name(isFlattenable2, \"isFlattenable\");\nvar isFlattenable_default2 = isFlattenable2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFlatten.js\nfunction baseFlatten2(array, depth, predicate, isStrict, result) {\n var index = -1, length = array.length;\n predicate || (predicate = isFlattenable_default2);\n result || (result = []);\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n baseFlatten2(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush_default2(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n__name(baseFlatten2, \"baseFlatten\");\nvar baseFlatten_default2 = baseFlatten2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/flatMap.js\nfunction flatMap2(collection, iteratee) {\n return baseFlatten_default2(map_default2(collection, iteratee), 1);\n}\n__name(flatMap2, \"flatMap\");\nvar flatMap_default2 = flatMap2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFindIndex.js\nfunction baseFindIndex2(array, predicate, fromIndex, fromRight) {\n var length = array.length, index = fromIndex + (fromRight ? 1 : -1);\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n__name(baseFindIndex2, \"baseFindIndex\");\nvar baseFindIndex_default2 = baseFindIndex2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNaN.js\nfunction baseIsNaN2(value) {\n return value !== value;\n}\n__name(baseIsNaN2, \"baseIsNaN\");\nvar baseIsNaN_default2 = baseIsNaN2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_strictIndexOf.js\nfunction strictIndexOf2(array, value, fromIndex) {\n var index = fromIndex - 1, length = array.length;\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n__name(strictIndexOf2, \"strictIndexOf\");\nvar strictIndexOf_default2 = strictIndexOf2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIndexOf.js\nfunction baseIndexOf2(array, value, fromIndex) {\n return value === value ? strictIndexOf_default2(array, value, fromIndex) : baseFindIndex_default2(array, baseIsNaN_default2, fromIndex);\n}\n__name(baseIndexOf2, \"baseIndexOf\");\nvar baseIndexOf_default2 = baseIndexOf2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludes.js\nfunction arrayIncludes2(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf_default2(array, value, 0) > -1;\n}\n__name(arrayIncludes2, \"arrayIncludes\");\nvar arrayIncludes_default2 = arrayIncludes2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludesWith.js\nfunction arrayIncludesWith2(array, value, comparator) {\n var index = -1, length = array == null ? 0 : array.length;\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n__name(arrayIncludesWith2, \"arrayIncludesWith\");\nvar arrayIncludesWith_default2 = arrayIncludesWith2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/noop.js\nfunction noop2() {\n}\n__name(noop2, \"noop\");\nvar noop_default2 = noop2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createSet.js\nvar INFINITY7 = 1 / 0;\nvar createSet2 = !(Set_default2 && 1 / setToArray_default2(new Set_default2([, -0]))[1] == INFINITY7) ? noop_default2 : function(values2) {\n return new Set_default2(values2);\n};\nvar createSet_default2 = createSet2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseUniq.js\nvar LARGE_ARRAY_SIZE5 = 200;\nfunction baseUniq2(array, iteratee, comparator) {\n var index = -1, includes2 = arrayIncludes_default2, length = array.length, isCommon = true, result = [], seen = result;\n if (comparator) {\n isCommon = false;\n includes2 = arrayIncludesWith_default2;\n } else if (length >= LARGE_ARRAY_SIZE5) {\n var set = iteratee ? null : createSet_default2(array);\n if (set) {\n return setToArray_default2(set);\n }\n isCommon = false;\n includes2 = cacheHas_default2;\n seen = new SetCache_default2();\n } else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index], computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n } else if (!includes2(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n__name(baseUniq2, \"baseUniq\");\nvar baseUniq_default2 = baseUniq2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/uniqBy.js\nfunction uniqBy(array, iteratee) {\n return array && array.length ? baseUniq_default2(array, baseIteratee_default2(iteratee, 2)) : [];\n}\n__name(uniqBy, \"uniqBy\");\nvar uniqBy_default = uniqBy;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/flatten.js\nfunction flatten2(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten_default2(array, 1) : [];\n}\n__name(flatten2, \"flatten\");\nvar flatten_default2 = flatten2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayEach.js\nfunction arrayEach2(array, iteratee) {\n var index = -1, length = array == null ? 0 : array.length;\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n__name(arrayEach2, \"arrayEach\");\nvar arrayEach_default2 = arrayEach2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castFunction.js\nfunction castFunction2(value) {\n return typeof value == \"function\" ? value : identity_default2;\n}\n__name(castFunction2, \"castFunction\");\nvar castFunction_default2 = castFunction2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/forEach.js\nfunction forEach2(collection, iteratee) {\n var func = isArray_default2(collection) ? arrayEach_default2 : baseEach_default2;\n return func(collection, castFunction_default2(iteratee));\n}\n__name(forEach2, \"forEach\");\nvar forEach_default2 = forEach2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isEmpty.js\nvar mapTag11 = \"[object Map]\";\nvar setTag11 = \"[object Set]\";\nvar objectProto33 = Object.prototype;\nvar hasOwnProperty27 = objectProto33.hasOwnProperty;\nfunction isEmpty2(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike_default2(value) && (isArray_default2(value) || typeof value == \"string\" || typeof value.splice == \"function\" || isBuffer_default2(value) || isTypedArray_default2(value) || isArguments_default2(value))) {\n return !value.length;\n }\n var tag = getTag_default2(value);\n if (tag == mapTag11 || tag == setTag11) {\n return !value.size;\n }\n if (isPrototype_default2(value)) {\n return !baseKeys_default2(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty27.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n__name(isEmpty2, \"isEmpty\");\nvar isEmpty_default2 = isEmpty2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayReduce.js\nfunction arrayReduce2(array, iteratee, accumulator, initAccum) {\n var index = -1, length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n__name(arrayReduce2, \"arrayReduce\");\nvar arrayReduce_default2 = arrayReduce2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseReduce.js\nfunction baseReduce2(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection2) {\n accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2);\n });\n return accumulator;\n}\n__name(baseReduce2, \"baseReduce\");\nvar baseReduce_default2 = baseReduce2;\n\n// ../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/reduce.js\nfunction reduce2(collection, iteratee, accumulator) {\n var func = isArray_default2(collection) ? arrayReduce_default2 : baseReduce_default2, initAccum = arguments.length < 3;\n return func(collection, baseIteratee_default2(iteratee, 4), accumulator, initAccum, baseEach_default2);\n}\n__name(reduce2, \"reduce\");\nvar reduce_default2 = reduce2;\n\n// ../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.1.1/node_modules/chevrotain-allstar/lib/all-star-lookahead.js\nfunction createDFACache(startState, decision) {\n const map3 = {};\n return (predicateSet) => {\n const key = predicateSet.toString();\n let existing = map3[key];\n if (existing !== void 0) {\n return existing;\n } else {\n existing = {\n atnStartState: startState,\n decision,\n states: {}\n };\n map3[key] = existing;\n return existing;\n }\n };\n}\n__name(createDFACache, \"createDFACache\");\nvar PredicateSet = class {\n static {\n __name(this, \"PredicateSet\");\n }\n constructor() {\n this.predicates = [];\n }\n is(index) {\n return index >= this.predicates.length || this.predicates[index];\n }\n set(index, value) {\n this.predicates[index] = value;\n }\n toString() {\n let value = \"\";\n const size = this.predicates.length;\n for (let i = 0; i < size; i++) {\n value += this.predicates[i] === true ? \"1\" : \"0\";\n }\n return value;\n }\n};\nvar EMPTY_PREDICATES = new PredicateSet();\nvar LLStarLookaheadStrategy = class extends LLkLookaheadStrategy {\n static {\n __name(this, \"LLStarLookaheadStrategy\");\n }\n constructor(options) {\n var _a;\n super();\n this.logging = (_a = options === null || options === void 0 ? void 0 : options.logging) !== null && _a !== void 0 ? _a : ((message) => console.log(message));\n }\n initialize(options) {\n this.atn = createATN(options.rules);\n this.dfas = initATNSimulator(this.atn);\n }\n validateAmbiguousAlternationAlternatives() {\n return [];\n }\n validateEmptyOrAlternatives() {\n return [];\n }\n buildLookaheadForAlternation(options) {\n const { prodOccurrence, rule, hasPredicates, dynamicTokensEnabled } = options;\n const dfas = this.dfas;\n const logging = this.logging;\n const key = buildATNKey(rule, \"Alternation\", prodOccurrence);\n const decisionState = this.atn.decisionMap[key];\n const decisionIndex = decisionState.decision;\n const partialAlts = map_default2(getLookaheadPaths({\n maxLookahead: 1,\n occurrence: prodOccurrence,\n prodType: \"Alternation\",\n rule\n }), (currAlt) => map_default2(currAlt, (path) => path[0]));\n if (isLL1Sequence(partialAlts, false) && !dynamicTokensEnabled) {\n const choiceToAlt = reduce_default2(partialAlts, (result, currAlt, idx) => {\n forEach_default2(currAlt, (currTokType) => {\n if (currTokType) {\n result[currTokType.tokenTypeIdx] = idx;\n forEach_default2(currTokType.categoryMatches, (currExtendingType) => {\n result[currExtendingType] = idx;\n });\n }\n });\n return result;\n }, {});\n if (hasPredicates) {\n return function(orAlts) {\n var _a;\n const nextToken = this.LA(1);\n const prediction = choiceToAlt[nextToken.tokenTypeIdx];\n if (orAlts !== void 0 && prediction !== void 0) {\n const gate = (_a = orAlts[prediction]) === null || _a === void 0 ? void 0 : _a.GATE;\n if (gate !== void 0 && gate.call(this) === false) {\n return void 0;\n }\n }\n return prediction;\n };\n } else {\n return function() {\n const nextToken = this.LA(1);\n return choiceToAlt[nextToken.tokenTypeIdx];\n };\n }\n } else if (hasPredicates) {\n return function(orAlts) {\n const predicates = new PredicateSet();\n const length = orAlts === void 0 ? 0 : orAlts.length;\n for (let i = 0; i < length; i++) {\n const gate = orAlts === null || orAlts === void 0 ? void 0 : orAlts[i].GATE;\n predicates.set(i, gate === void 0 || gate.call(this));\n }\n const result = adaptivePredict.call(this, dfas, decisionIndex, predicates, logging);\n return typeof result === \"number\" ? result : void 0;\n };\n } else {\n return function() {\n const result = adaptivePredict.call(this, dfas, decisionIndex, EMPTY_PREDICATES, logging);\n return typeof result === \"number\" ? result : void 0;\n };\n }\n }\n buildLookaheadForOptional(options) {\n const { prodOccurrence, rule, prodType, dynamicTokensEnabled } = options;\n const dfas = this.dfas;\n const logging = this.logging;\n const key = buildATNKey(rule, prodType, prodOccurrence);\n const decisionState = this.atn.decisionMap[key];\n const decisionIndex = decisionState.decision;\n const alts = map_default2(getLookaheadPaths({\n maxLookahead: 1,\n occurrence: prodOccurrence,\n prodType,\n rule\n }), (e) => {\n return map_default2(e, (g) => g[0]);\n });\n if (isLL1Sequence(alts) && alts[0][0] && !dynamicTokensEnabled) {\n const alt = alts[0];\n const singleTokensTypes = flatten_default2(alt);\n if (singleTokensTypes.length === 1 && isEmpty_default2(singleTokensTypes[0].categoryMatches)) {\n const expectedTokenType = singleTokensTypes[0];\n const expectedTokenUniqueKey = expectedTokenType.tokenTypeIdx;\n return function() {\n return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey;\n };\n } else {\n const choiceToAlt = reduce_default2(singleTokensTypes, (result, currTokType) => {\n if (currTokType !== void 0) {\n result[currTokType.tokenTypeIdx] = true;\n forEach_default2(currTokType.categoryMatches, (currExtendingType) => {\n result[currExtendingType] = true;\n });\n }\n return result;\n }, {});\n return function() {\n const nextToken = this.LA(1);\n return choiceToAlt[nextToken.tokenTypeIdx] === true;\n };\n }\n }\n return function() {\n const result = adaptivePredict.call(this, dfas, decisionIndex, EMPTY_PREDICATES, logging);\n return typeof result === \"object\" ? false : result === 0;\n };\n }\n};\nfunction isLL1Sequence(sequences, allowEmpty = true) {\n const fullSet = /* @__PURE__ */ new Set();\n for (const alt of sequences) {\n const altSet = /* @__PURE__ */ new Set();\n for (const tokType of alt) {\n if (tokType === void 0) {\n if (allowEmpty) {\n break;\n } else {\n return false;\n }\n }\n const indices = [tokType.tokenTypeIdx].concat(tokType.categoryMatches);\n for (const index of indices) {\n if (fullSet.has(index)) {\n if (!altSet.has(index)) {\n return false;\n }\n } else {\n fullSet.add(index);\n altSet.add(index);\n }\n }\n }\n }\n return true;\n}\n__name(isLL1Sequence, \"isLL1Sequence\");\nfunction initATNSimulator(atn) {\n const decisionLength = atn.decisionStates.length;\n const decisionToDFA = Array(decisionLength);\n for (let i = 0; i < decisionLength; i++) {\n decisionToDFA[i] = createDFACache(atn.decisionStates[i], i);\n }\n return decisionToDFA;\n}\n__name(initATNSimulator, \"initATNSimulator\");\nfunction adaptivePredict(dfaCaches, decision, predicateSet, logging) {\n const dfa = dfaCaches[decision](predicateSet);\n let start = dfa.start;\n if (start === void 0) {\n const closure2 = computeStartState(dfa.atnStartState);\n start = addDFAState(dfa, newDFAState(closure2));\n dfa.start = start;\n }\n const alt = performLookahead.apply(this, [dfa, start, predicateSet, logging]);\n return alt;\n}\n__name(adaptivePredict, \"adaptivePredict\");\nfunction performLookahead(dfa, s0, predicateSet, logging) {\n let previousD = s0;\n let i = 1;\n const path = [];\n let t = this.LA(i++);\n while (true) {\n let d = getExistingTargetState(previousD, t);\n if (d === void 0) {\n d = computeLookaheadTarget.apply(this, [dfa, previousD, t, i, predicateSet, logging]);\n }\n if (d === DFA_ERROR) {\n return buildAdaptivePredictError(path, previousD, t);\n }\n if (d.isAcceptState === true) {\n return d.prediction;\n }\n previousD = d;\n path.push(t);\n t = this.LA(i++);\n }\n}\n__name(performLookahead, \"performLookahead\");\nfunction computeLookaheadTarget(dfa, previousD, token, lookahead, predicateSet, logging) {\n const reach = computeReachSet(previousD.configs, token, predicateSet);\n if (reach.size === 0) {\n addDFAEdge(dfa, previousD, token, DFA_ERROR);\n return DFA_ERROR;\n }\n let newState2 = newDFAState(reach);\n const predictedAlt = getUniqueAlt(reach, predicateSet);\n if (predictedAlt !== void 0) {\n newState2.isAcceptState = true;\n newState2.prediction = predictedAlt;\n newState2.configs.uniqueAlt = predictedAlt;\n } else if (hasConflictTerminatingPrediction(reach)) {\n const prediction = min_default(reach.alts);\n newState2.isAcceptState = true;\n newState2.prediction = prediction;\n newState2.configs.uniqueAlt = prediction;\n reportLookaheadAmbiguity.apply(this, [dfa, lookahead, reach.alts, logging]);\n }\n newState2 = addDFAEdge(dfa, previousD, token, newState2);\n return newState2;\n}\n__name(computeLookaheadTarget, \"computeLookaheadTarget\");\nfunction reportLookaheadAmbiguity(dfa, lookahead, ambiguityIndices, logging) {\n const prefixPath = [];\n for (let i = 1; i <= lookahead; i++) {\n prefixPath.push(this.LA(i).tokenType);\n }\n const atnState = dfa.atnStartState;\n const topLevelRule = atnState.rule;\n const production = atnState.production;\n const message = buildAmbiguityError({\n topLevelRule,\n ambiguityIndices,\n production,\n prefixPath\n });\n logging(message);\n}\n__name(reportLookaheadAmbiguity, \"reportLookaheadAmbiguity\");\nfunction buildAmbiguityError(options) {\n const pathMsg = map_default2(options.prefixPath, (currtok) => tokenLabel2(currtok)).join(\", \");\n const occurrence = options.production.idx === 0 ? \"\" : options.production.idx;\n let currMessage = `Ambiguous Alternatives Detected: <${options.ambiguityIndices.join(\", \")}> in <${getProductionDslName2(options.production)}${occurrence}> inside <${options.topLevelRule.name}> Rule,\n<${pathMsg}> may appears as a prefix path in all these alternatives.\n`;\n currMessage = currMessage + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.`;\n return currMessage;\n}\n__name(buildAmbiguityError, \"buildAmbiguityError\");\nfunction getProductionDslName2(prod) {\n if (prod instanceof NonTerminal) {\n return \"SUBRULE\";\n } else if (prod instanceof Option) {\n return \"OPTION\";\n } else if (prod instanceof Alternation) {\n return \"OR\";\n } else if (prod instanceof RepetitionMandatory) {\n return \"AT_LEAST_ONE\";\n } else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return \"AT_LEAST_ONE_SEP\";\n } else if (prod instanceof RepetitionWithSeparator) {\n return \"MANY_SEP\";\n } else if (prod instanceof Repetition) {\n return \"MANY\";\n } else if (prod instanceof Terminal) {\n return \"CONSUME\";\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n__name(getProductionDslName2, \"getProductionDslName\");\nfunction buildAdaptivePredictError(path, previous, current) {\n const nextTransitions = flatMap_default2(previous.configs.elements, (e) => e.state.transitions);\n const nextTokenTypes = uniqBy_default(nextTransitions.filter((e) => e instanceof AtomTransition).map((e) => e.tokenType), (e) => e.tokenTypeIdx);\n return {\n actualToken: current,\n possibleTokenTypes: nextTokenTypes,\n tokenPath: path\n };\n}\n__name(buildAdaptivePredictError, \"buildAdaptivePredictError\");\nfunction getExistingTargetState(state, token) {\n return state.edges[token.tokenTypeIdx];\n}\n__name(getExistingTargetState, \"getExistingTargetState\");\nfunction computeReachSet(configs, token, predicateSet) {\n const intermediate = new ATNConfigSet();\n const skippedStopStates = [];\n for (const c of configs.elements) {\n if (predicateSet.is(c.alt) === false) {\n continue;\n }\n if (c.state.type === ATN_RULE_STOP) {\n skippedStopStates.push(c);\n continue;\n }\n const transitionLength = c.state.transitions.length;\n for (let i = 0; i < transitionLength; i++) {\n const transition = c.state.transitions[i];\n const target = getReachableTarget(transition, token);\n if (target !== void 0) {\n intermediate.add({\n state: target,\n alt: c.alt,\n stack: c.stack\n });\n }\n }\n }\n let reach;\n if (skippedStopStates.length === 0 && intermediate.size === 1) {\n reach = intermediate;\n }\n if (reach === void 0) {\n reach = new ATNConfigSet();\n for (const c of intermediate.elements) {\n closure(c, reach);\n }\n }\n if (skippedStopStates.length > 0 && !hasConfigInRuleStopState(reach)) {\n for (const c of skippedStopStates) {\n reach.add(c);\n }\n }\n return reach;\n}\n__name(computeReachSet, \"computeReachSet\");\nfunction getReachableTarget(transition, token) {\n if (transition instanceof AtomTransition && tokenMatcher(token, transition.tokenType)) {\n return transition.target;\n }\n return void 0;\n}\n__name(getReachableTarget, \"getReachableTarget\");\nfunction getUniqueAlt(configs, predicateSet) {\n let alt;\n for (const c of configs.elements) {\n if (predicateSet.is(c.alt) === true) {\n if (alt === void 0) {\n alt = c.alt;\n } else if (alt !== c.alt) {\n return void 0;\n }\n }\n }\n return alt;\n}\n__name(getUniqueAlt, \"getUniqueAlt\");\nfunction newDFAState(closure2) {\n return {\n configs: closure2,\n edges: {},\n isAcceptState: false,\n prediction: -1\n };\n}\n__name(newDFAState, \"newDFAState\");\nfunction addDFAEdge(dfa, from, token, to) {\n to = addDFAState(dfa, to);\n from.edges[token.tokenTypeIdx] = to;\n return to;\n}\n__name(addDFAEdge, \"addDFAEdge\");\nfunction addDFAState(dfa, state) {\n if (state === DFA_ERROR) {\n return state;\n }\n const mapKey = state.configs.key;\n const existing = dfa.states[mapKey];\n if (existing !== void 0) {\n return existing;\n }\n state.configs.finalize();\n dfa.states[mapKey] = state;\n return state;\n}\n__name(addDFAState, \"addDFAState\");\nfunction computeStartState(atnState) {\n const configs = new ATNConfigSet();\n const numberOfTransitions = atnState.transitions.length;\n for (let i = 0; i < numberOfTransitions; i++) {\n const target = atnState.transitions[i].target;\n const config = {\n state: target,\n alt: i,\n stack: []\n };\n closure(config, configs);\n }\n return configs;\n}\n__name(computeStartState, \"computeStartState\");\nfunction closure(config, configs) {\n const p = config.state;\n if (p.type === ATN_RULE_STOP) {\n if (config.stack.length > 0) {\n const atnStack = [...config.stack];\n const followState = atnStack.pop();\n const followConfig = {\n state: followState,\n alt: config.alt,\n stack: atnStack\n };\n closure(followConfig, configs);\n } else {\n configs.add(config);\n }\n return;\n }\n if (!p.epsilonOnlyTransitions) {\n configs.add(config);\n }\n const transitionLength = p.transitions.length;\n for (let i = 0; i < transitionLength; i++) {\n const transition = p.transitions[i];\n const c = getEpsilonTarget(config, transition);\n if (c !== void 0) {\n closure(c, configs);\n }\n }\n}\n__name(closure, \"closure\");\nfunction getEpsilonTarget(config, transition) {\n if (transition instanceof EpsilonTransition) {\n return {\n state: transition.target,\n alt: config.alt,\n stack: config.stack\n };\n } else if (transition instanceof RuleTransition) {\n const stack = [...config.stack, transition.followState];\n return {\n state: transition.target,\n alt: config.alt,\n stack\n };\n }\n return void 0;\n}\n__name(getEpsilonTarget, \"getEpsilonTarget\");\nfunction hasConfigInRuleStopState(configs) {\n for (const c of configs.elements) {\n if (c.state.type === ATN_RULE_STOP) {\n return true;\n }\n }\n return false;\n}\n__name(hasConfigInRuleStopState, \"hasConfigInRuleStopState\");\nfunction allConfigsInRuleStopStates(configs) {\n for (const c of configs.elements) {\n if (c.state.type !== ATN_RULE_STOP) {\n return false;\n }\n }\n return true;\n}\n__name(allConfigsInRuleStopStates, \"allConfigsInRuleStopStates\");\nfunction hasConflictTerminatingPrediction(configs) {\n if (allConfigsInRuleStopStates(configs)) {\n return true;\n }\n const altSets = getConflictingAltSets(configs.elements);\n const heuristic = hasConflictingAltSet(altSets) && !hasStateAssociatedWithOneAlt(altSets);\n return heuristic;\n}\n__name(hasConflictTerminatingPrediction, \"hasConflictTerminatingPrediction\");\nfunction getConflictingAltSets(configs) {\n const configToAlts = /* @__PURE__ */ new Map();\n for (const c of configs) {\n const key = getATNConfigKey(c, false);\n let alts = configToAlts.get(key);\n if (alts === void 0) {\n alts = {};\n configToAlts.set(key, alts);\n }\n alts[c.alt] = true;\n }\n return configToAlts;\n}\n__name(getConflictingAltSets, \"getConflictingAltSets\");\nfunction hasConflictingAltSet(altSets) {\n for (const value of Array.from(altSets.values())) {\n if (Object.keys(value).length > 1) {\n return true;\n }\n }\n return false;\n}\n__name(hasConflictingAltSet, \"hasConflictingAltSet\");\nfunction hasStateAssociatedWithOneAlt(altSets) {\n for (const value of Array.from(altSets.values())) {\n if (Object.keys(value).length === 1) {\n return true;\n }\n }\n return false;\n}\n__name(hasStateAssociatedWithOneAlt, \"hasStateAssociatedWithOneAlt\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/cst-node-builder.js\ninit_main();\nvar CstNodeBuilder = class {\n static {\n __name(this, \"CstNodeBuilder\");\n }\n constructor() {\n this.nodeStack = [];\n }\n get current() {\n return this.nodeStack[this.nodeStack.length - 1] ?? this.rootNode;\n }\n buildRootNode(input) {\n this.rootNode = new RootCstNodeImpl(input);\n this.rootNode.root = this.rootNode;\n this.nodeStack = [this.rootNode];\n return this.rootNode;\n }\n buildCompositeNode(feature) {\n const compositeNode = new CompositeCstNodeImpl();\n compositeNode.grammarSource = feature;\n compositeNode.root = this.rootNode;\n this.current.content.push(compositeNode);\n this.nodeStack.push(compositeNode);\n return compositeNode;\n }\n buildLeafNode(token, feature) {\n const leafNode = new LeafCstNodeImpl(token.startOffset, token.image.length, tokenToRange(token), token.tokenType, !feature);\n leafNode.grammarSource = feature;\n leafNode.root = this.rootNode;\n this.current.content.push(leafNode);\n return leafNode;\n }\n removeNode(node) {\n const parent = node.container;\n if (parent) {\n const index = parent.content.indexOf(node);\n if (index >= 0) {\n parent.content.splice(index, 1);\n }\n }\n }\n addHiddenNodes(tokens) {\n const nodes = [];\n for (const token of tokens) {\n const leafNode = new LeafCstNodeImpl(token.startOffset, token.image.length, tokenToRange(token), token.tokenType, true);\n leafNode.root = this.rootNode;\n nodes.push(leafNode);\n }\n let current = this.current;\n let added = false;\n if (current.content.length > 0) {\n current.content.push(...nodes);\n return;\n }\n while (current.container) {\n const index = current.container.content.indexOf(current);\n if (index > 0) {\n current.container.content.splice(index, 0, ...nodes);\n added = true;\n break;\n }\n current = current.container;\n }\n if (!added) {\n this.rootNode.content.unshift(...nodes);\n }\n }\n construct(item) {\n const current = this.current;\n if (typeof item.$type === \"string\" && !item.$infix) {\n this.current.astNode = item;\n }\n item.$cstNode = current;\n const node = this.nodeStack.pop();\n if (node?.content.length === 0) {\n this.removeNode(node);\n }\n }\n};\nvar AbstractCstNode = class {\n static {\n __name(this, \"AbstractCstNode\");\n }\n get hidden() {\n return false;\n }\n get astNode() {\n const node = typeof this._astNode?.$type === \"string\" ? this._astNode : this.container?.astNode;\n if (!node) {\n throw new Error(\"This node has no associated AST element\");\n }\n return node;\n }\n set astNode(value) {\n this._astNode = value;\n }\n get text() {\n return this.root.fullText.substring(this.offset, this.end);\n }\n};\nvar LeafCstNodeImpl = class extends AbstractCstNode {\n static {\n __name(this, \"LeafCstNodeImpl\");\n }\n get offset() {\n return this._offset;\n }\n get length() {\n return this._length;\n }\n get end() {\n return this._offset + this._length;\n }\n get hidden() {\n return this._hidden;\n }\n get tokenType() {\n return this._tokenType;\n }\n get range() {\n return this._range;\n }\n constructor(offset, length, range, tokenType, hidden = false) {\n super();\n this._hidden = hidden;\n this._offset = offset;\n this._tokenType = tokenType;\n this._length = length;\n this._range = range;\n }\n};\nvar CompositeCstNodeImpl = class extends AbstractCstNode {\n static {\n __name(this, \"CompositeCstNodeImpl\");\n }\n constructor() {\n super(...arguments);\n this.content = new CstNodeContainer(this);\n }\n get offset() {\n return this.firstNonHiddenNode?.offset ?? 0;\n }\n get length() {\n return this.end - this.offset;\n }\n get end() {\n return this.lastNonHiddenNode?.end ?? 0;\n }\n get range() {\n const firstNode = this.firstNonHiddenNode;\n const lastNode = this.lastNonHiddenNode;\n if (firstNode && lastNode) {\n if (this._rangeCache === void 0) {\n const { range: firstRange } = firstNode;\n const { range: lastRange } = lastNode;\n this._rangeCache = { start: firstRange.start, end: lastRange.end.line < firstRange.start.line ? firstRange.start : lastRange.end };\n }\n return this._rangeCache;\n } else {\n return { start: Position.create(0, 0), end: Position.create(0, 0) };\n }\n }\n get firstNonHiddenNode() {\n for (const child of this.content) {\n if (!child.hidden) {\n return child;\n }\n }\n return this.content[0];\n }\n get lastNonHiddenNode() {\n for (let i = this.content.length - 1; i >= 0; i--) {\n const child = this.content[i];\n if (!child.hidden) {\n return child;\n }\n }\n return this.content[this.content.length - 1];\n }\n};\nvar CstNodeContainer = class _CstNodeContainer extends Array {\n static {\n __name(this, \"CstNodeContainer\");\n }\n constructor(parent) {\n super();\n this.parent = parent;\n Object.setPrototypeOf(this, _CstNodeContainer.prototype);\n }\n push(...items) {\n this.addParents(items);\n return super.push(...items);\n }\n unshift(...items) {\n this.addParents(items);\n return super.unshift(...items);\n }\n splice(start, count, ...items) {\n this.addParents(items);\n return super.splice(start, count, ...items);\n }\n addParents(items) {\n for (const item of items) {\n item.container = this.parent;\n }\n }\n};\nvar RootCstNodeImpl = class extends CompositeCstNodeImpl {\n static {\n __name(this, \"RootCstNodeImpl\");\n }\n get text() {\n return this._text.substring(this.offset, this.end);\n }\n get fullText() {\n return this._text;\n }\n constructor(input) {\n super();\n this._text = \"\";\n this._text = input ?? \"\";\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/langium-parser.js\nvar DatatypeSymbol = Symbol(\"Datatype\");\nfunction isDataTypeNode(node) {\n return node.$type === DatatypeSymbol;\n}\n__name(isDataTypeNode, \"isDataTypeNode\");\nvar ruleSuffix = \"\\u200B\";\nvar withRuleSuffix = /* @__PURE__ */ __name((name) => name.endsWith(ruleSuffix) ? name : name + ruleSuffix, \"withRuleSuffix\");\nvar AbstractLangiumParser = class {\n static {\n __name(this, \"AbstractLangiumParser\");\n }\n constructor(services) {\n this._unorderedGroups = /* @__PURE__ */ new Map();\n this.allRules = /* @__PURE__ */ new Map();\n this.lexer = services.parser.Lexer;\n const tokens = this.lexer.definition;\n const production = services.LanguageMetaData.mode === \"production\";\n if (services.shared.profilers.LangiumProfiler?.isActive(\"parsing\")) {\n this.wrapper = new ProfilerWrapper(tokens, {\n ...services.parser.ParserConfig,\n skipValidations: production,\n errorMessageProvider: services.parser.ParserErrorMessageProvider\n }, services.shared.profilers.LangiumProfiler.createTask(\"parsing\", services.LanguageMetaData.languageId));\n } else {\n this.wrapper = new ChevrotainWrapper(tokens, {\n ...services.parser.ParserConfig,\n skipValidations: production,\n errorMessageProvider: services.parser.ParserErrorMessageProvider\n });\n }\n }\n alternatives(idx, choices) {\n this.wrapper.wrapOr(idx, choices);\n }\n optional(idx, callback) {\n this.wrapper.wrapOption(idx, callback);\n }\n many(idx, callback) {\n this.wrapper.wrapMany(idx, callback);\n }\n atLeastOne(idx, callback) {\n this.wrapper.wrapAtLeastOne(idx, callback);\n }\n getRule(name) {\n return this.allRules.get(name);\n }\n isRecording() {\n return this.wrapper.IS_RECORDING;\n }\n get unorderedGroups() {\n return this._unorderedGroups;\n }\n getRuleStack() {\n return this.wrapper.RULE_STACK;\n }\n finalize() {\n this.wrapper.wrapSelfAnalysis();\n }\n};\nvar LangiumParser = class extends AbstractLangiumParser {\n static {\n __name(this, \"LangiumParser\");\n }\n get current() {\n return this.stack[this.stack.length - 1];\n }\n constructor(services) {\n super(services);\n this.nodeBuilder = new CstNodeBuilder();\n this.stack = [];\n this.assignmentMap = /* @__PURE__ */ new Map();\n this.operatorPrecedence = /* @__PURE__ */ new Map();\n this.linker = services.references.Linker;\n this.converter = services.parser.ValueConverter;\n this.astReflection = services.shared.AstReflection;\n }\n rule(rule, impl) {\n const type = this.computeRuleType(rule);\n let infixName = void 0;\n if (isInfixRule(rule)) {\n infixName = rule.name;\n this.registerPrecedenceMap(rule);\n }\n const ruleMethod = this.wrapper.DEFINE_RULE(withRuleSuffix(rule.name), this.startImplementation(type, infixName, impl).bind(this));\n this.allRules.set(rule.name, ruleMethod);\n if (isParserRule(rule) && rule.entry) {\n this.mainRule = ruleMethod;\n }\n return ruleMethod;\n }\n registerPrecedenceMap(rule) {\n const name = rule.name;\n const map3 = /* @__PURE__ */ new Map();\n for (let i = 0; i < rule.operators.precedences.length; i++) {\n const precedence = rule.operators.precedences[i];\n for (const keyword of precedence.operators) {\n map3.set(keyword.value, {\n precedence: i,\n rightAssoc: precedence.associativity === \"right\"\n });\n }\n }\n this.operatorPrecedence.set(name, map3);\n }\n computeRuleType(rule) {\n if (isInfixRule(rule)) {\n return getTypeName(rule);\n } else if (rule.fragment) {\n return void 0;\n } else if (isDataTypeRule(rule)) {\n return DatatypeSymbol;\n } else {\n return getTypeName(rule);\n }\n }\n parse(input, options = {}) {\n this.nodeBuilder.buildRootNode(input);\n const lexerResult = this.lexerResult = this.lexer.tokenize(input);\n this.wrapper.input = lexerResult.tokens;\n const ruleMethod = options.rule ? this.allRules.get(options.rule) : this.mainRule;\n if (!ruleMethod) {\n throw new Error(options.rule ? `No rule found with name '${options.rule}'` : \"No main rule available.\");\n }\n const result = this.doParse(ruleMethod);\n this.nodeBuilder.addHiddenNodes(lexerResult.hidden);\n this.unorderedGroups.clear();\n this.lexerResult = void 0;\n linkContentToContainer(result, { deep: true });\n return {\n value: result,\n lexerErrors: lexerResult.errors,\n lexerReport: lexerResult.report,\n parserErrors: this.wrapper.errors\n };\n }\n doParse(rule) {\n let result = this.wrapper.rule(rule);\n if (this.stack.length > 0) {\n result = this.construct();\n }\n if (result === void 0) {\n throw new Error(\"No result from parser\");\n } else if (this.stack.length > 0) {\n throw new Error(\"Parser stack is not empty after parsing\");\n }\n return result;\n }\n startImplementation($type, infixName, implementation) {\n return (args) => {\n const createNode = !this.isRecording() && $type !== void 0;\n if (createNode) {\n const node = { $type };\n this.stack.push(node);\n if ($type === DatatypeSymbol) {\n node.value = \"\";\n } else if (infixName !== void 0) {\n node.$infixName = infixName;\n }\n }\n implementation(args);\n return createNode ? this.construct() : void 0;\n };\n }\n extractHiddenTokens(token) {\n const hiddenTokens = this.lexerResult.hidden;\n if (!hiddenTokens.length) {\n return [];\n }\n const offset = token.startOffset;\n for (let i = 0; i < hiddenTokens.length; i++) {\n const token2 = hiddenTokens[i];\n if (token2.startOffset > offset) {\n return hiddenTokens.splice(0, i);\n }\n }\n return hiddenTokens.splice(0, hiddenTokens.length);\n }\n consume(idx, tokenType, feature) {\n const token = this.wrapper.wrapConsume(idx, tokenType);\n if (!this.isRecording() && this.isValidToken(token)) {\n const hiddenTokens = this.extractHiddenTokens(token);\n this.nodeBuilder.addHiddenNodes(hiddenTokens);\n const leafNode = this.nodeBuilder.buildLeafNode(token, feature);\n const { assignment, crossRef } = this.getAssignment(feature);\n const current = this.current;\n if (assignment) {\n const convertedValue = isKeyword(feature) ? token.image : this.converter.convert(token.image, leafNode);\n this.assign(assignment.operator, assignment.feature, convertedValue, leafNode, crossRef);\n } else if (isDataTypeNode(current)) {\n let text = token.image;\n if (!isKeyword(feature)) {\n text = this.converter.convert(text, leafNode).toString();\n }\n current.value += text;\n }\n }\n }\n /**\n * Most consumed parser tokens are valid. However there are two cases in which they are not valid:\n *\n * 1. They were inserted during error recovery by the parser. These tokens don't really exist and should not be further processed\n * 2. They contain invalid token ranges. This might include the special EOF token, or other tokens produced by invalid token builders.\n */\n isValidToken(token) {\n return !token.isInsertedInRecovery && !isNaN(token.startOffset) && typeof token.endOffset === \"number\" && !isNaN(token.endOffset);\n }\n subrule(idx, rule, fragment, feature, args) {\n let cstNode;\n if (!this.isRecording() && !fragment) {\n cstNode = this.nodeBuilder.buildCompositeNode(feature);\n }\n let result;\n try {\n result = this.wrapper.wrapSubrule(idx, rule, args);\n } finally {\n if (!this.isRecording()) {\n if (result === void 0 && !fragment) {\n result = this.construct();\n }\n if (result !== void 0 && cstNode && cstNode.length > 0) {\n this.performSubruleAssignment(result, feature, cstNode);\n }\n }\n }\n }\n performSubruleAssignment(result, feature, cstNode) {\n const { assignment, crossRef } = this.getAssignment(feature);\n if (assignment) {\n this.assign(assignment.operator, assignment.feature, result, cstNode, crossRef);\n } else if (!assignment) {\n const current = this.current;\n if (isDataTypeNode(current)) {\n current.value += result.toString();\n } else if (typeof result === \"object\" && result) {\n const object = this.assignWithoutOverride(result, current);\n const newItem = object;\n this.stack.pop();\n this.stack.push(newItem);\n }\n }\n }\n action($type, action) {\n if (!this.isRecording()) {\n let last2 = this.current;\n if (action.feature && action.operator) {\n last2 = this.construct();\n this.nodeBuilder.removeNode(last2.$cstNode);\n const node = this.nodeBuilder.buildCompositeNode(action);\n node.content.push(last2.$cstNode);\n const newItem = { $type };\n this.stack.push(newItem);\n this.assign(action.operator, action.feature, last2, last2.$cstNode);\n } else {\n last2.$type = $type;\n }\n }\n }\n construct() {\n if (this.isRecording()) {\n return void 0;\n }\n const obj = this.stack.pop();\n this.nodeBuilder.construct(obj);\n if (\"$infixName\" in obj) {\n return this.constructInfix(obj, this.operatorPrecedence.get(obj.$infixName));\n } else if (isDataTypeNode(obj)) {\n return this.converter.convert(obj.value, obj.$cstNode);\n } else {\n assignMandatoryProperties(this.astReflection, obj);\n }\n return obj;\n }\n constructInfix(obj, precedence) {\n const parts = obj.parts;\n if (!Array.isArray(parts) || parts.length === 0) {\n return void 0;\n }\n const operators = obj.operators;\n if (!Array.isArray(operators) || parts.length < 2) {\n return parts[0];\n }\n let lowestPrecedenceIdx = 0;\n let lowestPrecedenceValue = -1;\n for (let i = 0; i < operators.length; i++) {\n const operator = operators[i];\n const opPrecedence = precedence.get(operator) ?? {\n precedence: Infinity,\n rightAssoc: false\n };\n if (opPrecedence.precedence > lowestPrecedenceValue) {\n lowestPrecedenceValue = opPrecedence.precedence;\n lowestPrecedenceIdx = i;\n } else if (opPrecedence.precedence === lowestPrecedenceValue) {\n if (!opPrecedence.rightAssoc) {\n lowestPrecedenceIdx = i;\n }\n }\n }\n const leftOperators = operators.slice(0, lowestPrecedenceIdx);\n const rightOperators = operators.slice(lowestPrecedenceIdx + 1);\n const leftParts = parts.slice(0, lowestPrecedenceIdx + 1);\n const rightParts = parts.slice(lowestPrecedenceIdx + 1);\n const leftInfix = {\n $infixName: obj.$infixName,\n $type: obj.$type,\n $cstNode: obj.$cstNode,\n parts: leftParts,\n operators: leftOperators\n };\n const rightInfix = {\n $infixName: obj.$infixName,\n $type: obj.$type,\n $cstNode: obj.$cstNode,\n parts: rightParts,\n operators: rightOperators\n };\n const leftTree = this.constructInfix(leftInfix, precedence);\n const rightTree = this.constructInfix(rightInfix, precedence);\n return {\n $type: obj.$type,\n $cstNode: obj.$cstNode,\n left: leftTree,\n operator: operators[lowestPrecedenceIdx],\n right: rightTree\n };\n }\n getAssignment(feature) {\n if (!this.assignmentMap.has(feature)) {\n const assignment = getContainerOfType(feature, isAssignment);\n this.assignmentMap.set(feature, {\n assignment,\n crossRef: assignment && isCrossReference(assignment.terminal) ? assignment.terminal.isMulti ? \"multi\" : \"single\" : void 0\n });\n }\n return this.assignmentMap.get(feature);\n }\n assign(operator, feature, value, cstNode, crossRef) {\n const obj = this.current;\n let item;\n if (crossRef === \"single\" && typeof value === \"string\") {\n item = this.linker.buildReference(obj, feature, cstNode, value);\n } else if (crossRef === \"multi\" && typeof value === \"string\") {\n item = this.linker.buildMultiReference(obj, feature, cstNode, value);\n } else {\n item = value;\n }\n switch (operator) {\n case \"=\": {\n obj[feature] = item;\n break;\n }\n case \"?=\": {\n obj[feature] = true;\n break;\n }\n case \"+=\": {\n if (!Array.isArray(obj[feature])) {\n obj[feature] = [];\n }\n obj[feature].push(item);\n }\n }\n }\n assignWithoutOverride(target, source) {\n for (const [name, existingValue] of Object.entries(source)) {\n const newValue = target[name];\n if (newValue === void 0) {\n target[name] = existingValue;\n } else if (Array.isArray(newValue) && Array.isArray(existingValue)) {\n existingValue.push(...newValue);\n target[name] = existingValue;\n }\n }\n const targetCstNode = target.$cstNode;\n if (targetCstNode) {\n targetCstNode.astNode = void 0;\n target.$cstNode = void 0;\n }\n return target;\n }\n get definitionErrors() {\n return this.wrapper.definitionErrors;\n }\n};\nvar AbstractParserErrorMessageProvider = class {\n static {\n __name(this, \"AbstractParserErrorMessageProvider\");\n }\n buildMismatchTokenMessage(options) {\n return defaultParserErrorProvider.buildMismatchTokenMessage(options);\n }\n buildNotAllInputParsedMessage(options) {\n return defaultParserErrorProvider.buildNotAllInputParsedMessage(options);\n }\n buildNoViableAltMessage(options) {\n return defaultParserErrorProvider.buildNoViableAltMessage(options);\n }\n buildEarlyExitMessage(options) {\n return defaultParserErrorProvider.buildEarlyExitMessage(options);\n }\n};\nvar LangiumParserErrorMessageProvider = class extends AbstractParserErrorMessageProvider {\n static {\n __name(this, \"LangiumParserErrorMessageProvider\");\n }\n buildMismatchTokenMessage({ expected, actual }) {\n const expectedMsg = expected.LABEL ? \"`\" + expected.LABEL + \"`\" : expected.name.endsWith(\":KW\") ? `keyword '${expected.name.substring(0, expected.name.length - 3)}'` : `token of type '${expected.name}'`;\n return `Expecting ${expectedMsg} but found \\`${actual.image}\\`.`;\n }\n buildNotAllInputParsedMessage({ firstRedundant }) {\n return `Expecting end of file but found \\`${firstRedundant.image}\\`.`;\n }\n};\nvar LangiumCompletionParser = class extends AbstractLangiumParser {\n static {\n __name(this, \"LangiumCompletionParser\");\n }\n constructor() {\n super(...arguments);\n this.tokens = [];\n this.elementStack = [];\n this.lastElementStack = [];\n this.nextTokenIndex = 0;\n this.stackSize = 0;\n }\n action() {\n }\n construct() {\n return void 0;\n }\n parse(input) {\n this.resetState();\n const tokens = this.lexer.tokenize(input, { mode: \"partial\" });\n this.tokens = tokens.tokens;\n this.wrapper.input = [...this.tokens];\n this.mainRule.call(this.wrapper, {});\n this.unorderedGroups.clear();\n return {\n tokens: this.tokens,\n elementStack: [...this.lastElementStack],\n tokenIndex: this.nextTokenIndex\n };\n }\n rule(rule, impl) {\n const ruleMethod = this.wrapper.DEFINE_RULE(withRuleSuffix(rule.name), this.startImplementation(impl).bind(this));\n this.allRules.set(rule.name, ruleMethod);\n if (rule.entry) {\n this.mainRule = ruleMethod;\n }\n return ruleMethod;\n }\n resetState() {\n this.elementStack = [];\n this.lastElementStack = [];\n this.nextTokenIndex = 0;\n this.stackSize = 0;\n }\n startImplementation(implementation) {\n return (args) => {\n const size = this.keepStackSize();\n try {\n implementation(args);\n } finally {\n this.resetStackSize(size);\n }\n };\n }\n removeUnexpectedElements() {\n this.elementStack.splice(this.stackSize);\n }\n keepStackSize() {\n const size = this.elementStack.length;\n this.stackSize = size;\n return size;\n }\n resetStackSize(size) {\n this.removeUnexpectedElements();\n this.stackSize = size;\n }\n consume(idx, tokenType, feature) {\n this.wrapper.wrapConsume(idx, tokenType);\n if (!this.isRecording()) {\n this.lastElementStack = [...this.elementStack, feature];\n this.nextTokenIndex = this.currIdx + 1;\n }\n }\n subrule(idx, rule, fragment, feature, args) {\n this.before(feature);\n this.wrapper.wrapSubrule(idx, rule, args);\n this.after(feature);\n }\n before(element) {\n if (!this.isRecording()) {\n this.elementStack.push(element);\n }\n }\n after(element) {\n if (!this.isRecording()) {\n const index = this.elementStack.lastIndexOf(element);\n if (index >= 0) {\n this.elementStack.splice(index);\n }\n }\n }\n get currIdx() {\n return this.wrapper.currIdx;\n }\n};\nvar defaultConfig = {\n recoveryEnabled: true,\n nodeLocationTracking: \"full\",\n skipValidations: true,\n errorMessageProvider: new LangiumParserErrorMessageProvider()\n};\nvar ChevrotainWrapper = class extends EmbeddedActionsParser {\n static {\n __name(this, \"ChevrotainWrapper\");\n }\n constructor(tokens, config) {\n const useDefaultLookahead = config && \"maxLookahead\" in config;\n super(tokens, {\n ...defaultConfig,\n lookaheadStrategy: useDefaultLookahead ? new LLkLookaheadStrategy({ maxLookahead: config.maxLookahead }) : new LLStarLookaheadStrategy({\n // If validations are skipped, don't log the lookahead warnings\n logging: config.skipValidations ? () => {\n } : void 0\n }),\n ...config\n });\n }\n get IS_RECORDING() {\n return this.RECORDING_PHASE;\n }\n DEFINE_RULE(name, impl, config) {\n return this.RULE(name, impl, config);\n }\n wrapSelfAnalysis() {\n this.performSelfAnalysis();\n }\n wrapConsume(idx, tokenType) {\n return this.consume(idx, tokenType, void 0);\n }\n wrapSubrule(idx, rule, args) {\n return this.subrule(idx, rule, {\n ARGS: [args]\n });\n }\n wrapOr(idx, choices) {\n this.or(idx, choices);\n }\n wrapOption(idx, callback) {\n this.option(idx, callback);\n }\n wrapMany(idx, callback) {\n this.many(idx, callback);\n }\n wrapAtLeastOne(idx, callback) {\n this.atLeastOne(idx, callback);\n }\n rule(rule) {\n return rule.call(this, {});\n }\n};\nvar ProfilerWrapper = class extends ChevrotainWrapper {\n static {\n __name(this, \"ProfilerWrapper\");\n }\n constructor(tokens, config, task) {\n super(tokens, config);\n this.task = task;\n }\n rule(rule) {\n this.task.start();\n this.task.startSubTask(this.ruleName(rule));\n try {\n return super.rule(rule);\n } finally {\n this.task.stopSubTask(this.ruleName(rule));\n this.task.stop();\n }\n }\n ruleName(rule) {\n return rule.ruleName;\n }\n subrule(idx, ruleToCall, options) {\n this.task.startSubTask(this.ruleName(ruleToCall));\n try {\n return super.subrule(idx, ruleToCall, options);\n } finally {\n this.task.stopSubTask(this.ruleName(ruleToCall));\n }\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/parser-builder-base.js\nfunction createParser(grammar, parser, tokens) {\n const parserContext = {\n parser,\n tokens,\n ruleNames: /* @__PURE__ */ new Map()\n };\n buildRules(parserContext, grammar);\n return parser;\n}\n__name(createParser, \"createParser\");\nfunction buildRules(parserContext, grammar) {\n const reachable = getAllReachableRules(grammar, false);\n const parserRules = stream(grammar.rules).filter(isParserRule).filter((rule) => reachable.has(rule));\n for (const rule of parserRules) {\n const ctx = {\n ...parserContext,\n consume: 1,\n optional: 1,\n subrule: 1,\n many: 1,\n or: 1\n };\n parserContext.parser.rule(rule, buildElement(ctx, rule.definition));\n }\n const infixRules = stream(grammar.rules).filter(isInfixRule).filter((rule) => reachable.has(rule));\n for (const rule of infixRules) {\n parserContext.parser.rule(rule, buildInfixRule(parserContext, rule));\n }\n}\n__name(buildRules, \"buildRules\");\nfunction buildInfixRule(ctx, rule) {\n const expressionRule = rule.call.rule.ref;\n if (!expressionRule) {\n throw new Error(\"Could not resolve reference to infix operator rule: \" + rule.call.rule.$refText);\n }\n if (isTerminalRule(expressionRule)) {\n throw new Error(\"Cannot use terminal rule in infix expression\");\n }\n const allKeywords = rule.operators.precedences.flatMap((e) => e.operators);\n const outerGroup = {\n $type: \"Group\",\n elements: []\n };\n const part1Assignment = {\n $container: outerGroup,\n $type: \"Assignment\",\n feature: \"parts\",\n operator: \"+=\",\n terminal: rule.call\n };\n const innerGroup = {\n $container: outerGroup,\n $type: \"Group\",\n elements: [],\n cardinality: \"*\"\n };\n outerGroup.elements.push(part1Assignment, innerGroup);\n const alternatives = {\n $type: \"Alternatives\",\n elements: allKeywords\n };\n const operatorAssignment = {\n $container: innerGroup,\n $type: \"Assignment\",\n feature: \"operators\",\n operator: \"+=\",\n terminal: alternatives\n };\n const part2Assignment = {\n ...part1Assignment,\n $container: innerGroup\n };\n innerGroup.elements.push(operatorAssignment, part2Assignment);\n const tokens = allKeywords.map((e) => ctx.tokens[e.value]);\n const orAlts = tokens.map((token, index) => ({\n ALT: /* @__PURE__ */ __name(() => ctx.parser.consume(index, token, operatorAssignment), \"ALT\")\n }));\n let subrule;\n return (args) => {\n subrule ?? (subrule = getRule(ctx, expressionRule));\n ctx.parser.subrule(0, subrule, false, part1Assignment, args);\n ctx.parser.many(0, {\n DEF: /* @__PURE__ */ __name(() => {\n ctx.parser.alternatives(0, orAlts);\n ctx.parser.subrule(1, subrule, false, part2Assignment, args);\n }, \"DEF\")\n });\n };\n}\n__name(buildInfixRule, \"buildInfixRule\");\nfunction buildElement(ctx, element, ignoreGuard = false) {\n let method;\n if (isKeyword(element)) {\n method = buildKeyword(ctx, element);\n } else if (isAction(element)) {\n method = buildAction(ctx, element);\n } else if (isAssignment(element)) {\n method = buildElement(ctx, element.terminal);\n } else if (isCrossReference(element)) {\n method = buildCrossReference(ctx, element);\n } else if (isRuleCall(element)) {\n method = buildRuleCall(ctx, element);\n } else if (isAlternatives(element)) {\n method = buildAlternatives(ctx, element);\n } else if (isUnorderedGroup(element)) {\n method = buildUnorderedGroup(ctx, element);\n } else if (isGroup(element)) {\n method = buildGroup(ctx, element);\n } else if (isEndOfFile(element)) {\n const idx = ctx.consume++;\n method = /* @__PURE__ */ __name(() => ctx.parser.consume(idx, EOF, element), \"method\");\n } else {\n throw new ErrorWithLocation(element.$cstNode, `Unexpected element type: ${element.$type}`);\n }\n return wrap(ctx, ignoreGuard ? void 0 : getGuardCondition(element), method, element.cardinality);\n}\n__name(buildElement, \"buildElement\");\nfunction buildAction(ctx, action) {\n const actionType = getTypeName(action);\n return () => ctx.parser.action(actionType, action);\n}\n__name(buildAction, \"buildAction\");\nfunction buildRuleCall(ctx, ruleCall) {\n const rule = ruleCall.rule.ref;\n if (isAbstractParserRule(rule)) {\n const idx = ctx.subrule++;\n const fragment = isParserRule(rule) && rule.fragment;\n const predicate = ruleCall.arguments.length > 0 ? buildRuleCallPredicate(rule, ruleCall.arguments) : () => ({});\n let subrule;\n return (args) => {\n subrule ?? (subrule = getRule(ctx, rule));\n ctx.parser.subrule(idx, subrule, fragment, ruleCall, predicate(args));\n };\n } else if (isTerminalRule(rule)) {\n const idx = ctx.consume++;\n const method = getToken(ctx, rule.name);\n return () => ctx.parser.consume(idx, method, ruleCall);\n } else if (!rule) {\n throw new ErrorWithLocation(ruleCall.$cstNode, `Undefined rule: ${ruleCall.rule.$refText}`);\n } else {\n assertUnreachable(rule);\n }\n}\n__name(buildRuleCall, \"buildRuleCall\");\nfunction buildRuleCallPredicate(rule, namedArgs) {\n const hasNamedArguments = namedArgs.some((arg) => arg.calledByName);\n if (hasNamedArguments) {\n const namedPredicates = namedArgs.map((arg) => ({\n parameterName: arg.parameter?.ref?.name,\n predicate: buildPredicate(arg.value)\n }));\n return (args) => {\n const ruleArgs = {};\n for (const { parameterName, predicate } of namedPredicates) {\n if (parameterName) {\n ruleArgs[parameterName] = predicate(args);\n }\n }\n return ruleArgs;\n };\n } else {\n const predicates = namedArgs.map((arg) => buildPredicate(arg.value));\n return (args) => {\n const ruleArgs = {};\n for (let i = 0; i < predicates.length; i++) {\n if (i < rule.parameters.length) {\n const parameterName = rule.parameters[i].name;\n const predicate = predicates[i];\n ruleArgs[parameterName] = predicate(args);\n }\n }\n return ruleArgs;\n };\n }\n}\n__name(buildRuleCallPredicate, \"buildRuleCallPredicate\");\nfunction buildPredicate(condition) {\n if (isDisjunction(condition)) {\n const left = buildPredicate(condition.left);\n const right = buildPredicate(condition.right);\n return (args) => left(args) || right(args);\n } else if (isConjunction(condition)) {\n const left = buildPredicate(condition.left);\n const right = buildPredicate(condition.right);\n return (args) => left(args) && right(args);\n } else if (isNegation(condition)) {\n const value = buildPredicate(condition.value);\n return (args) => !value(args);\n } else if (isParameterReference(condition)) {\n const name = condition.parameter.ref.name;\n return (args) => args !== void 0 && args[name] === true;\n } else if (isBooleanLiteral(condition)) {\n const value = Boolean(condition.true);\n return () => value;\n }\n assertUnreachable(condition);\n}\n__name(buildPredicate, \"buildPredicate\");\nfunction buildAlternatives(ctx, alternatives) {\n if (alternatives.elements.length === 1) {\n return buildElement(ctx, alternatives.elements[0]);\n } else {\n const methods = [];\n for (const element of alternatives.elements) {\n const predicatedMethod = {\n // Since we handle the guard condition in the alternative already\n // We can ignore the group guard condition inside\n ALT: buildElement(ctx, element, true)\n };\n const guard = getGuardCondition(element);\n if (guard) {\n predicatedMethod.GATE = buildPredicate(guard);\n }\n methods.push(predicatedMethod);\n }\n const idx = ctx.or++;\n return (args) => ctx.parser.alternatives(idx, methods.map((method) => {\n const alt = {\n ALT: /* @__PURE__ */ __name(() => method.ALT(args), \"ALT\")\n };\n const gate = method.GATE;\n if (gate) {\n alt.GATE = () => gate(args);\n }\n return alt;\n }));\n }\n}\n__name(buildAlternatives, \"buildAlternatives\");\nfunction buildUnorderedGroup(ctx, group) {\n if (group.elements.length === 1) {\n return buildElement(ctx, group.elements[0]);\n }\n const methods = [];\n for (const element of group.elements) {\n const predicatedMethod = {\n // Since we handle the guard condition in the alternative already\n // We can ignore the group guard condition inside\n ALT: buildElement(ctx, element, true)\n };\n const guard = getGuardCondition(element);\n if (guard) {\n predicatedMethod.GATE = buildPredicate(guard);\n }\n methods.push(predicatedMethod);\n }\n const orIdx = ctx.or++;\n const idFunc = /* @__PURE__ */ __name((groupIdx, lParser) => {\n const stackId = lParser.getRuleStack().join(\"-\");\n return `uGroup_${groupIdx}_${stackId}`;\n }, \"idFunc\");\n const alternatives = /* @__PURE__ */ __name((args) => ctx.parser.alternatives(orIdx, methods.map((method, idx) => {\n const alt = { ALT: /* @__PURE__ */ __name(() => true, \"ALT\") };\n const parser = ctx.parser;\n alt.ALT = () => {\n method.ALT(args);\n if (!parser.isRecording()) {\n const key = idFunc(orIdx, parser);\n if (!parser.unorderedGroups.get(key)) {\n parser.unorderedGroups.set(key, []);\n }\n const groupState = parser.unorderedGroups.get(key);\n if (typeof groupState?.[idx] === \"undefined\") {\n groupState[idx] = true;\n }\n }\n };\n const gate = method.GATE;\n if (gate) {\n alt.GATE = () => gate(args);\n } else {\n alt.GATE = () => {\n const trackedAlternatives = parser.unorderedGroups.get(idFunc(orIdx, parser));\n const allow = !trackedAlternatives?.[idx];\n return allow;\n };\n }\n return alt;\n })), \"alternatives\");\n const wrapped = wrap(ctx, getGuardCondition(group), alternatives, \"*\");\n return (args) => {\n wrapped(args);\n if (!ctx.parser.isRecording()) {\n ctx.parser.unorderedGroups.delete(idFunc(orIdx, ctx.parser));\n }\n };\n}\n__name(buildUnorderedGroup, \"buildUnorderedGroup\");\nfunction buildGroup(ctx, group) {\n const methods = group.elements.map((e) => buildElement(ctx, e));\n return (args) => methods.forEach((method) => method(args));\n}\n__name(buildGroup, \"buildGroup\");\nfunction getGuardCondition(element) {\n if (isGroup(element)) {\n return element.guardCondition;\n }\n return void 0;\n}\n__name(getGuardCondition, \"getGuardCondition\");\nfunction buildCrossReference(ctx, crossRef, terminal = crossRef.terminal) {\n if (!terminal) {\n if (!crossRef.type.ref) {\n throw new Error(\"Could not resolve reference to type: \" + crossRef.type.$refText);\n }\n const assignment = findNameAssignment(crossRef.type.ref);\n const assignTerminal = assignment?.terminal;\n if (!assignTerminal) {\n throw new Error(\"Could not find name assignment for type: \" + getTypeName(crossRef.type.ref));\n }\n return buildCrossReference(ctx, crossRef, assignTerminal);\n } else if (isRuleCall(terminal) && isParserRule(terminal.rule.ref)) {\n const rule = terminal.rule.ref;\n const idx = ctx.subrule++;\n let subrule;\n return (args) => {\n subrule ?? (subrule = getRule(ctx, rule));\n ctx.parser.subrule(idx, subrule, false, crossRef, args);\n };\n } else if (isRuleCall(terminal) && isTerminalRule(terminal.rule.ref)) {\n const idx = ctx.consume++;\n const terminalRule = getToken(ctx, terminal.rule.ref.name);\n return () => ctx.parser.consume(idx, terminalRule, crossRef);\n } else if (isKeyword(terminal)) {\n const idx = ctx.consume++;\n const keyword = getToken(ctx, terminal.value);\n return () => ctx.parser.consume(idx, keyword, crossRef);\n } else {\n throw new Error(\"Could not build cross reference parser\");\n }\n}\n__name(buildCrossReference, \"buildCrossReference\");\nfunction buildKeyword(ctx, keyword) {\n const idx = ctx.consume++;\n const token = ctx.tokens[keyword.value];\n if (!token) {\n throw new Error(\"Could not find token for keyword: \" + keyword.value);\n }\n return () => ctx.parser.consume(idx, token, keyword);\n}\n__name(buildKeyword, \"buildKeyword\");\nfunction wrap(ctx, guard, method, cardinality) {\n const gate = guard && buildPredicate(guard);\n if (!cardinality) {\n if (gate) {\n const idx = ctx.or++;\n return (args) => ctx.parser.alternatives(idx, [\n {\n ALT: /* @__PURE__ */ __name(() => method(args), \"ALT\"),\n GATE: /* @__PURE__ */ __name(() => gate(args), \"GATE\")\n },\n {\n ALT: EMPTY_ALT(),\n GATE: /* @__PURE__ */ __name(() => !gate(args), \"GATE\")\n }\n ]);\n } else {\n return method;\n }\n }\n if (cardinality === \"*\") {\n const idx = ctx.many++;\n return (args) => ctx.parser.many(idx, {\n DEF: /* @__PURE__ */ __name(() => method(args), \"DEF\"),\n GATE: gate ? () => gate(args) : void 0\n });\n } else if (cardinality === \"+\") {\n const idx = ctx.many++;\n if (gate) {\n const orIdx = ctx.or++;\n return (args) => ctx.parser.alternatives(orIdx, [\n {\n ALT: /* @__PURE__ */ __name(() => ctx.parser.atLeastOne(idx, {\n DEF: /* @__PURE__ */ __name(() => method(args), \"DEF\")\n }), \"ALT\"),\n GATE: /* @__PURE__ */ __name(() => gate(args), \"GATE\")\n },\n {\n ALT: EMPTY_ALT(),\n GATE: /* @__PURE__ */ __name(() => !gate(args), \"GATE\")\n }\n ]);\n } else {\n return (args) => ctx.parser.atLeastOne(idx, {\n DEF: /* @__PURE__ */ __name(() => method(args), \"DEF\")\n });\n }\n } else if (cardinality === \"?\") {\n const idx = ctx.optional++;\n return (args) => ctx.parser.optional(idx, {\n DEF: /* @__PURE__ */ __name(() => method(args), \"DEF\"),\n GATE: gate ? () => gate(args) : void 0\n });\n } else {\n assertUnreachable(cardinality);\n }\n}\n__name(wrap, \"wrap\");\nfunction getRule(ctx, element) {\n const name = getRuleName(ctx, element);\n const rule = ctx.parser.getRule(name);\n if (!rule)\n throw new Error(`Rule \"${name}\" not found.\"`);\n return rule;\n}\n__name(getRule, \"getRule\");\nfunction getRuleName(ctx, element) {\n if (isAbstractParserRule(element)) {\n return element.name;\n } else if (ctx.ruleNames.has(element)) {\n return ctx.ruleNames.get(element);\n } else {\n let item = element;\n let parent = item.$container;\n let ruleName = element.$type;\n while (!isParserRule(parent)) {\n if (isGroup(parent) || isAlternatives(parent) || isUnorderedGroup(parent)) {\n const index = parent.elements.indexOf(item);\n ruleName = index.toString() + \":\" + ruleName;\n }\n item = parent;\n parent = parent.$container;\n }\n const rule = parent;\n ruleName = rule.name + \":\" + ruleName;\n ctx.ruleNames.set(element, ruleName);\n return ruleName;\n }\n}\n__name(getRuleName, \"getRuleName\");\nfunction getToken(ctx, name) {\n const token = ctx.tokens[name];\n if (!token)\n throw new Error(`Token \"${name}\" not found.\"`);\n return token;\n}\n__name(getToken, \"getToken\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/completion-parser-builder.js\nfunction createCompletionParser(services) {\n const grammar = services.Grammar;\n const lexer = services.parser.Lexer;\n const parser = new LangiumCompletionParser(services);\n createParser(grammar, parser, lexer.definition);\n parser.finalize();\n return parser;\n}\n__name(createCompletionParser, \"createCompletionParser\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/langium-parser-builder.js\nfunction createLangiumParser(services) {\n const parser = prepareLangiumParser(services);\n parser.finalize();\n return parser;\n}\n__name(createLangiumParser, \"createLangiumParser\");\nfunction prepareLangiumParser(services) {\n const grammar = services.Grammar;\n const lexer = services.parser.Lexer;\n const parser = new LangiumParser(services);\n return createParser(grammar, parser, lexer.definition);\n}\n__name(prepareLangiumParser, \"prepareLangiumParser\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/token-builder.js\nvar DefaultTokenBuilder = class {\n static {\n __name(this, \"DefaultTokenBuilder\");\n }\n constructor() {\n this.diagnostics = [];\n }\n buildTokens(grammar, options) {\n const reachableRules = stream(getAllReachableRules(grammar, false));\n const terminalTokens = this.buildTerminalTokens(reachableRules);\n const tokens = this.buildKeywordTokens(reachableRules, terminalTokens, options);\n tokens.push(...terminalTokens);\n return tokens;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n flushLexingReport(text) {\n return { diagnostics: this.popDiagnostics() };\n }\n popDiagnostics() {\n const diagnostics = [...this.diagnostics];\n this.diagnostics = [];\n return diagnostics;\n }\n buildTerminalTokens(rules) {\n return rules.filter(isTerminalRule).filter((e) => !e.fragment).map((terminal) => this.buildTerminalToken(terminal)).toArray();\n }\n buildTerminalToken(terminal) {\n const regex = terminalRegex(terminal);\n const pattern = this.requiresCustomPattern(regex) ? this.regexPatternFunction(regex) : regex;\n const tokenType = {\n name: terminal.name,\n PATTERN: pattern\n };\n if (typeof pattern === \"function\") {\n tokenType.LINE_BREAKS = true;\n }\n if (terminal.hidden) {\n tokenType.GROUP = isWhitespace(regex) ? Lexer.SKIPPED : \"hidden\";\n }\n return tokenType;\n }\n requiresCustomPattern(regex) {\n if (regex.flags.includes(\"u\") || regex.flags.includes(\"s\")) {\n return true;\n } else {\n return false;\n }\n }\n regexPatternFunction(regex) {\n const stickyRegex = new RegExp(regex, regex.flags + \"y\");\n return (text, offset) => {\n stickyRegex.lastIndex = offset;\n const execResult = stickyRegex.exec(text);\n return execResult;\n };\n }\n buildKeywordTokens(rules, terminalTokens, options) {\n return rules.filter(isAbstractParserRule).flatMap((rule) => streamAllContents(rule).filter(isKeyword)).distinct((e) => e.value).toArray().sort((a, b) => b.value.length - a.value.length).map((keyword) => this.buildKeywordToken(keyword, terminalTokens, Boolean(options?.caseInsensitive)));\n }\n buildKeywordToken(keyword, terminalTokens, caseInsensitive) {\n const keywordPattern = this.buildKeywordPattern(keyword, caseInsensitive);\n const tokenType = {\n name: keyword.value,\n PATTERN: keywordPattern,\n LONGER_ALT: this.findLongerAlt(keyword, terminalTokens)\n };\n if (typeof keywordPattern === \"function\") {\n tokenType.LINE_BREAKS = true;\n }\n return tokenType;\n }\n buildKeywordPattern(keyword, caseInsensitive) {\n return caseInsensitive ? new RegExp(escapeRegExp(keyword.value), \"i\") : keyword.value;\n }\n findLongerAlt(keyword, terminalTokens) {\n return terminalTokens.reduce((longerAlts, token) => {\n const pattern = token?.PATTERN;\n if (pattern?.source && partialMatches(\"^\" + pattern.source + \"$\", keyword.value)) {\n longerAlts.push(token);\n }\n return longerAlts;\n }, []);\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/value-converter.js\nvar DefaultValueConverter = class {\n static {\n __name(this, \"DefaultValueConverter\");\n }\n convert(input, cstNode) {\n let feature = cstNode.grammarSource;\n if (isCrossReference(feature)) {\n feature = getCrossReferenceTerminal(feature);\n }\n if (isRuleCall(feature)) {\n const rule = feature.rule.ref;\n if (!rule) {\n throw new Error(\"This cst node was not parsed by a rule.\");\n }\n return this.runConverter(rule, input, cstNode);\n }\n return input;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n runConverter(rule, input, cstNode) {\n switch (rule.name.toUpperCase()) {\n case \"INT\":\n return ValueConverter.convertInt(input);\n case \"STRING\":\n return ValueConverter.convertString(input);\n case \"ID\":\n return ValueConverter.convertID(input);\n }\n switch (getRuleType(rule)?.toLowerCase()) {\n case \"number\":\n return ValueConverter.convertNumber(input);\n case \"boolean\":\n return ValueConverter.convertBoolean(input);\n case \"bigint\":\n return ValueConverter.convertBigint(input);\n case \"date\":\n return ValueConverter.convertDate(input);\n default:\n return input;\n }\n }\n};\nvar ValueConverter;\n(function(ValueConverter2) {\n function convertString(input) {\n let result = \"\";\n for (let i = 1; i < input.length - 1; i++) {\n const c = input.charAt(i);\n if (c === \"\\\\\") {\n const c1 = input.charAt(++i);\n result += convertEscapeCharacter(c1);\n } else {\n result += c;\n }\n }\n return result;\n }\n __name(convertString, \"convertString\");\n ValueConverter2.convertString = convertString;\n function convertEscapeCharacter(char) {\n switch (char) {\n case \"b\":\n return \"\\b\";\n case \"f\":\n return \"\\f\";\n case \"n\":\n return \"\\n\";\n case \"r\":\n return \"\\r\";\n case \"t\":\n return \"\t\";\n case \"v\":\n return \"\\v\";\n case \"0\":\n return \"\\0\";\n default:\n return char;\n }\n }\n __name(convertEscapeCharacter, \"convertEscapeCharacter\");\n function convertID(input) {\n if (input.charAt(0) === \"^\") {\n return input.substring(1);\n } else {\n return input;\n }\n }\n __name(convertID, \"convertID\");\n ValueConverter2.convertID = convertID;\n function convertInt(input) {\n return parseInt(input);\n }\n __name(convertInt, \"convertInt\");\n ValueConverter2.convertInt = convertInt;\n function convertBigint(input) {\n return BigInt(input);\n }\n __name(convertBigint, \"convertBigint\");\n ValueConverter2.convertBigint = convertBigint;\n function convertDate(input) {\n return new Date(input);\n }\n __name(convertDate, \"convertDate\");\n ValueConverter2.convertDate = convertDate;\n function convertNumber(input) {\n return Number(input);\n }\n __name(convertNumber, \"convertNumber\");\n ValueConverter2.convertNumber = convertNumber;\n function convertBoolean(input) {\n return input.toLowerCase() === \"true\";\n }\n __name(convertBoolean, \"convertBoolean\");\n ValueConverter2.convertBoolean = convertBoolean;\n})(ValueConverter || (ValueConverter = {}));\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/cancellation.js\nvar cancellation_exports = {};\n__reExport(cancellation_exports, __toESM(require_cancellation(), 1));\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/promise-utils.js\nfunction delayNextTick() {\n return new Promise((resolve) => {\n if (typeof setImmediate === \"undefined\") {\n setTimeout(resolve, 0);\n } else {\n setImmediate(resolve);\n }\n });\n}\n__name(delayNextTick, \"delayNextTick\");\nvar lastTick = 0;\nvar globalInterruptionPeriod = 10;\nfunction startCancelableOperation() {\n lastTick = performance.now();\n return new cancellation_exports.CancellationTokenSource();\n}\n__name(startCancelableOperation, \"startCancelableOperation\");\nfunction setInterruptionPeriod(period) {\n globalInterruptionPeriod = period;\n}\n__name(setInterruptionPeriod, \"setInterruptionPeriod\");\nvar OperationCancelled = Symbol(\"OperationCancelled\");\nfunction isOperationCancelled(err) {\n return err === OperationCancelled;\n}\n__name(isOperationCancelled, \"isOperationCancelled\");\nasync function interruptAndCheck(token) {\n if (token === cancellation_exports.CancellationToken.None) {\n return;\n }\n const current = performance.now();\n if (current - lastTick >= globalInterruptionPeriod) {\n lastTick = current;\n await delayNextTick();\n lastTick = performance.now();\n }\n if (token.isCancellationRequested) {\n throw OperationCancelled;\n }\n}\n__name(interruptAndCheck, \"interruptAndCheck\");\nvar Deferred = class {\n static {\n __name(this, \"Deferred\");\n }\n constructor() {\n this.promise = new Promise((resolve, reject2) => {\n this.resolve = (arg) => {\n resolve(arg);\n return this;\n };\n this.reject = (err) => {\n reject2(err);\n return this;\n };\n });\n }\n};\n\n// ../../node_modules/.pnpm/vscode-languageserver-textdocument@1.0.12/node_modules/vscode-languageserver-textdocument/lib/esm/main.js\nvar FullTextDocument2 = class _FullTextDocument {\n static {\n __name(this, \"FullTextDocument\");\n }\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = void 0;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n const start = this.offsetAt(range.start);\n const end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(changes, version) {\n for (const change of changes) {\n if (_FullTextDocument.isIncremental(change)) {\n const range = getWellformedRange(change.range);\n const startOffset = this.offsetAt(range.start);\n const endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n const startLine = Math.max(range.start.line, 0);\n const endLine = Math.max(range.end.line, 0);\n let lineOffsets = this._lineOffsets;\n const addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (let i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n } else {\n if (addedLineOffsets.length < 1e4) {\n lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets);\n } else {\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n const diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (let i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n } else if (_FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = void 0;\n } else {\n throw new Error(\"Unknown change event received\");\n }\n }\n this._version = version;\n }\n getLineOffsets() {\n if (this._lineOffsets === void 0) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n const lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n const line = low - 1;\n offset = this.ensureBeforeEOL(offset, lineOffsets[line]);\n return { line, character: offset - lineOffsets[line] };\n }\n offsetAt(position) {\n const lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n } else if (position.line < 0) {\n return 0;\n }\n const lineOffset = lineOffsets[position.line];\n if (position.character <= 0) {\n return lineOffset;\n }\n const nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;\n const offset = Math.min(lineOffset + position.character, nextLineOffset);\n return this.ensureBeforeEOL(offset, lineOffset);\n }\n ensureBeforeEOL(offset, lineOffset) {\n while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) {\n offset--;\n }\n return offset;\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n static isIncremental(event) {\n const candidate = event;\n return candidate !== void 0 && candidate !== null && typeof candidate.text === \"string\" && candidate.range !== void 0 && (candidate.rangeLength === void 0 || typeof candidate.rangeLength === \"number\");\n }\n static isFull(event) {\n const candidate = event;\n return candidate !== void 0 && candidate !== null && typeof candidate.text === \"string\" && candidate.range === void 0 && candidate.rangeLength === void 0;\n }\n};\nvar TextDocument2;\n(function(TextDocument3) {\n function create(uri, languageId, version, content) {\n return new FullTextDocument2(uri, languageId, version, content);\n }\n __name(create, \"create\");\n TextDocument3.create = create;\n function update(document, changes, version) {\n if (document instanceof FullTextDocument2) {\n document.update(changes, version);\n return document;\n } else {\n throw new Error(\"TextDocument.update: document must be created by TextDocument.create\");\n }\n }\n __name(update, \"update\");\n TextDocument3.update = update;\n function applyEdits(document, edits) {\n const text = document.getText();\n const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a, b) => {\n const diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = 0;\n const spans = [];\n for (const e of sortedEdits) {\n const startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error(\"Overlapping edit\");\n } else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join(\"\");\n }\n __name(applyEdits, \"applyEdits\");\n TextDocument3.applyEdits = applyEdits;\n})(TextDocument2 || (TextDocument2 = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n return data;\n }\n const p = data.length / 2 | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n const ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n data[i++] = left[leftIdx++];\n } else {\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n}\n__name(mergeSort, \"mergeSort\");\nfunction computeLineOffsets(text, isAtLineStart, textOffset = 0) {\n const result = isAtLineStart ? [textOffset] : [];\n for (let i = 0; i < text.length; i++) {\n const ch = text.charCodeAt(i);\n if (isEOL(ch)) {\n if (ch === 13 && i + 1 < text.length && text.charCodeAt(i + 1) === 10) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\n__name(computeLineOffsets, \"computeLineOffsets\");\nfunction isEOL(char) {\n return char === 13 || char === 10;\n}\n__name(isEOL, \"isEOL\");\nfunction getWellformedRange(range) {\n const start = range.start;\n const end = range.end;\n if (start.line > end.line || start.line === end.line && start.character > end.character) {\n return { start: end, end: start };\n }\n return range;\n}\n__name(getWellformedRange, \"getWellformedRange\");\nfunction getWellformedEdit(textEdit) {\n const range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range };\n }\n return textEdit;\n}\n__name(getWellformedEdit, \"getWellformedEdit\");\n\n// ../../node_modules/.pnpm/vscode-uri@3.1.0/node_modules/vscode-uri/lib/esm/index.mjs\nvar LIB;\n(() => {\n \"use strict\";\n var t = { 975: (t2) => {\n function e2(t3) {\n if (\"string\" != typeof t3) throw new TypeError(\"Path must be a string. Received \" + JSON.stringify(t3));\n }\n __name(e2, \"e\");\n function r2(t3, e3) {\n for (var r3, n3 = \"\", i2 = 0, o2 = -1, s2 = 0, h2 = 0; h2 <= t3.length; ++h2) {\n if (h2 < t3.length) r3 = t3.charCodeAt(h2);\n else {\n if (47 === r3) break;\n r3 = 47;\n }\n if (47 === r3) {\n if (o2 === h2 - 1 || 1 === s2) ;\n else if (o2 !== h2 - 1 && 2 === s2) {\n if (n3.length < 2 || 2 !== i2 || 46 !== n3.charCodeAt(n3.length - 1) || 46 !== n3.charCodeAt(n3.length - 2)) {\n if (n3.length > 2) {\n var a2 = n3.lastIndexOf(\"/\");\n if (a2 !== n3.length - 1) {\n -1 === a2 ? (n3 = \"\", i2 = 0) : i2 = (n3 = n3.slice(0, a2)).length - 1 - n3.lastIndexOf(\"/\"), o2 = h2, s2 = 0;\n continue;\n }\n } else if (2 === n3.length || 1 === n3.length) {\n n3 = \"\", i2 = 0, o2 = h2, s2 = 0;\n continue;\n }\n }\n e3 && (n3.length > 0 ? n3 += \"/..\" : n3 = \"..\", i2 = 2);\n } else n3.length > 0 ? n3 += \"/\" + t3.slice(o2 + 1, h2) : n3 = t3.slice(o2 + 1, h2), i2 = h2 - o2 - 1;\n o2 = h2, s2 = 0;\n } else 46 === r3 && -1 !== s2 ? ++s2 : s2 = -1;\n }\n return n3;\n }\n __name(r2, \"r\");\n var n2 = { resolve: /* @__PURE__ */ __name(function() {\n for (var t3, n3 = \"\", i2 = false, o2 = arguments.length - 1; o2 >= -1 && !i2; o2--) {\n var s2;\n o2 >= 0 ? s2 = arguments[o2] : (void 0 === t3 && (t3 = process.cwd()), s2 = t3), e2(s2), 0 !== s2.length && (n3 = s2 + \"/\" + n3, i2 = 47 === s2.charCodeAt(0));\n }\n return n3 = r2(n3, !i2), i2 ? n3.length > 0 ? \"/\" + n3 : \"/\" : n3.length > 0 ? n3 : \".\";\n }, \"resolve\"), normalize: /* @__PURE__ */ __name(function(t3) {\n if (e2(t3), 0 === t3.length) return \".\";\n var n3 = 47 === t3.charCodeAt(0), i2 = 47 === t3.charCodeAt(t3.length - 1);\n return 0 !== (t3 = r2(t3, !n3)).length || n3 || (t3 = \".\"), t3.length > 0 && i2 && (t3 += \"/\"), n3 ? \"/\" + t3 : t3;\n }, \"normalize\"), isAbsolute: /* @__PURE__ */ __name(function(t3) {\n return e2(t3), t3.length > 0 && 47 === t3.charCodeAt(0);\n }, \"isAbsolute\"), join: /* @__PURE__ */ __name(function() {\n if (0 === arguments.length) return \".\";\n for (var t3, r3 = 0; r3 < arguments.length; ++r3) {\n var i2 = arguments[r3];\n e2(i2), i2.length > 0 && (void 0 === t3 ? t3 = i2 : t3 += \"/\" + i2);\n }\n return void 0 === t3 ? \".\" : n2.normalize(t3);\n }, \"join\"), relative: /* @__PURE__ */ __name(function(t3, r3) {\n if (e2(t3), e2(r3), t3 === r3) return \"\";\n if ((t3 = n2.resolve(t3)) === (r3 = n2.resolve(r3))) return \"\";\n for (var i2 = 1; i2 < t3.length && 47 === t3.charCodeAt(i2); ++i2) ;\n for (var o2 = t3.length, s2 = o2 - i2, h2 = 1; h2 < r3.length && 47 === r3.charCodeAt(h2); ++h2) ;\n for (var a2 = r3.length - h2, c2 = s2 < a2 ? s2 : a2, f2 = -1, u2 = 0; u2 <= c2; ++u2) {\n if (u2 === c2) {\n if (a2 > c2) {\n if (47 === r3.charCodeAt(h2 + u2)) return r3.slice(h2 + u2 + 1);\n if (0 === u2) return r3.slice(h2 + u2);\n } else s2 > c2 && (47 === t3.charCodeAt(i2 + u2) ? f2 = u2 : 0 === u2 && (f2 = 0));\n break;\n }\n var l2 = t3.charCodeAt(i2 + u2);\n if (l2 !== r3.charCodeAt(h2 + u2)) break;\n 47 === l2 && (f2 = u2);\n }\n var g2 = \"\";\n for (u2 = i2 + f2 + 1; u2 <= o2; ++u2) u2 !== o2 && 47 !== t3.charCodeAt(u2) || (0 === g2.length ? g2 += \"..\" : g2 += \"/..\");\n return g2.length > 0 ? g2 + r3.slice(h2 + f2) : (h2 += f2, 47 === r3.charCodeAt(h2) && ++h2, r3.slice(h2));\n }, \"relative\"), _makeLong: /* @__PURE__ */ __name(function(t3) {\n return t3;\n }, \"_makeLong\"), dirname: /* @__PURE__ */ __name(function(t3) {\n if (e2(t3), 0 === t3.length) return \".\";\n for (var r3 = t3.charCodeAt(0), n3 = 47 === r3, i2 = -1, o2 = true, s2 = t3.length - 1; s2 >= 1; --s2) if (47 === (r3 = t3.charCodeAt(s2))) {\n if (!o2) {\n i2 = s2;\n break;\n }\n } else o2 = false;\n return -1 === i2 ? n3 ? \"/\" : \".\" : n3 && 1 === i2 ? \"//\" : t3.slice(0, i2);\n }, \"dirname\"), basename: /* @__PURE__ */ __name(function(t3, r3) {\n if (void 0 !== r3 && \"string\" != typeof r3) throw new TypeError('\"ext\" argument must be a string');\n e2(t3);\n var n3, i2 = 0, o2 = -1, s2 = true;\n if (void 0 !== r3 && r3.length > 0 && r3.length <= t3.length) {\n if (r3.length === t3.length && r3 === t3) return \"\";\n var h2 = r3.length - 1, a2 = -1;\n for (n3 = t3.length - 1; n3 >= 0; --n3) {\n var c2 = t3.charCodeAt(n3);\n if (47 === c2) {\n if (!s2) {\n i2 = n3 + 1;\n break;\n }\n } else -1 === a2 && (s2 = false, a2 = n3 + 1), h2 >= 0 && (c2 === r3.charCodeAt(h2) ? -1 == --h2 && (o2 = n3) : (h2 = -1, o2 = a2));\n }\n return i2 === o2 ? o2 = a2 : -1 === o2 && (o2 = t3.length), t3.slice(i2, o2);\n }\n for (n3 = t3.length - 1; n3 >= 0; --n3) if (47 === t3.charCodeAt(n3)) {\n if (!s2) {\n i2 = n3 + 1;\n break;\n }\n } else -1 === o2 && (s2 = false, o2 = n3 + 1);\n return -1 === o2 ? \"\" : t3.slice(i2, o2);\n }, \"basename\"), extname: /* @__PURE__ */ __name(function(t3) {\n e2(t3);\n for (var r3 = -1, n3 = 0, i2 = -1, o2 = true, s2 = 0, h2 = t3.length - 1; h2 >= 0; --h2) {\n var a2 = t3.charCodeAt(h2);\n if (47 !== a2) -1 === i2 && (o2 = false, i2 = h2 + 1), 46 === a2 ? -1 === r3 ? r3 = h2 : 1 !== s2 && (s2 = 1) : -1 !== r3 && (s2 = -1);\n else if (!o2) {\n n3 = h2 + 1;\n break;\n }\n }\n return -1 === r3 || -1 === i2 || 0 === s2 || 1 === s2 && r3 === i2 - 1 && r3 === n3 + 1 ? \"\" : t3.slice(r3, i2);\n }, \"extname\"), format: /* @__PURE__ */ __name(function(t3) {\n if (null === t3 || \"object\" != typeof t3) throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof t3);\n return (function(t4, e3) {\n var r3 = e3.dir || e3.root, n3 = e3.base || (e3.name || \"\") + (e3.ext || \"\");\n return r3 ? r3 === e3.root ? r3 + n3 : r3 + \"/\" + n3 : n3;\n })(0, t3);\n }, \"format\"), parse: /* @__PURE__ */ __name(function(t3) {\n e2(t3);\n var r3 = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (0 === t3.length) return r3;\n var n3, i2 = t3.charCodeAt(0), o2 = 47 === i2;\n o2 ? (r3.root = \"/\", n3 = 1) : n3 = 0;\n for (var s2 = -1, h2 = 0, a2 = -1, c2 = true, f2 = t3.length - 1, u2 = 0; f2 >= n3; --f2) if (47 !== (i2 = t3.charCodeAt(f2))) -1 === a2 && (c2 = false, a2 = f2 + 1), 46 === i2 ? -1 === s2 ? s2 = f2 : 1 !== u2 && (u2 = 1) : -1 !== s2 && (u2 = -1);\n else if (!c2) {\n h2 = f2 + 1;\n break;\n }\n return -1 === s2 || -1 === a2 || 0 === u2 || 1 === u2 && s2 === a2 - 1 && s2 === h2 + 1 ? -1 !== a2 && (r3.base = r3.name = 0 === h2 && o2 ? t3.slice(1, a2) : t3.slice(h2, a2)) : (0 === h2 && o2 ? (r3.name = t3.slice(1, s2), r3.base = t3.slice(1, a2)) : (r3.name = t3.slice(h2, s2), r3.base = t3.slice(h2, a2)), r3.ext = t3.slice(s2, a2)), h2 > 0 ? r3.dir = t3.slice(0, h2 - 1) : o2 && (r3.dir = \"/\"), r3;\n }, \"parse\"), sep: \"/\", delimiter: \":\", win32: null, posix: null };\n n2.posix = n2, t2.exports = n2;\n } }, e = {};\n function r(n2) {\n var i2 = e[n2];\n if (void 0 !== i2) return i2.exports;\n var o2 = e[n2] = { exports: {} };\n return t[n2](o2, o2.exports, r), o2.exports;\n }\n __name(r, \"r\");\n r.d = (t2, e2) => {\n for (var n2 in e2) r.o(e2, n2) && !r.o(t2, n2) && Object.defineProperty(t2, n2, { enumerable: true, get: e2[n2] });\n }, r.o = (t2, e2) => Object.prototype.hasOwnProperty.call(t2, e2), r.r = (t2) => {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t2, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(t2, \"__esModule\", { value: true });\n };\n var n = {};\n let i;\n if (r.r(n), r.d(n, { URI: /* @__PURE__ */ __name(() => l, \"URI\"), Utils: /* @__PURE__ */ __name(() => I, \"Utils\") }), \"object\" == typeof process) i = \"win32\" === process.platform;\n else if (\"object\" == typeof navigator) {\n let t2 = navigator.userAgent;\n i = t2.indexOf(\"Windows\") >= 0;\n }\n const o = /^\\w[\\w\\d+.-]*$/, s = /^\\//, h = /^\\/\\//;\n function a(t2, e2) {\n if (!t2.scheme && e2) throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${t2.authority}\", path: \"${t2.path}\", query: \"${t2.query}\", fragment: \"${t2.fragment}\"}`);\n if (t2.scheme && !o.test(t2.scheme)) throw new Error(\"[UriError]: Scheme contains illegal characters.\");\n if (t2.path) {\n if (t2.authority) {\n if (!s.test(t2.path)) throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\n } else if (h.test(t2.path)) throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\n }\n }\n __name(a, \"a\");\n const c = \"\", f = \"/\", u = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n class l {\n static {\n __name(this, \"l\");\n }\n static isUri(t2) {\n return t2 instanceof l || !!t2 && \"string\" == typeof t2.authority && \"string\" == typeof t2.fragment && \"string\" == typeof t2.path && \"string\" == typeof t2.query && \"string\" == typeof t2.scheme && \"string\" == typeof t2.fsPath && \"function\" == typeof t2.with && \"function\" == typeof t2.toString;\n }\n scheme;\n authority;\n path;\n query;\n fragment;\n constructor(t2, e2, r2, n2, i2, o2 = false) {\n \"object\" == typeof t2 ? (this.scheme = t2.scheme || c, this.authority = t2.authority || c, this.path = t2.path || c, this.query = t2.query || c, this.fragment = t2.fragment || c) : (this.scheme = /* @__PURE__ */ (function(t3, e3) {\n return t3 || e3 ? t3 : \"file\";\n })(t2, o2), this.authority = e2 || c, this.path = (function(t3, e3) {\n switch (t3) {\n case \"https\":\n case \"http\":\n case \"file\":\n e3 ? e3[0] !== f && (e3 = f + e3) : e3 = f;\n }\n return e3;\n })(this.scheme, r2 || c), this.query = n2 || c, this.fragment = i2 || c, a(this, o2));\n }\n get fsPath() {\n return v(this, false);\n }\n with(t2) {\n if (!t2) return this;\n let { scheme: e2, authority: r2, path: n2, query: i2, fragment: o2 } = t2;\n return void 0 === e2 ? e2 = this.scheme : null === e2 && (e2 = c), void 0 === r2 ? r2 = this.authority : null === r2 && (r2 = c), void 0 === n2 ? n2 = this.path : null === n2 && (n2 = c), void 0 === i2 ? i2 = this.query : null === i2 && (i2 = c), void 0 === o2 ? o2 = this.fragment : null === o2 && (o2 = c), e2 === this.scheme && r2 === this.authority && n2 === this.path && i2 === this.query && o2 === this.fragment ? this : new d(e2, r2, n2, i2, o2);\n }\n static parse(t2, e2 = false) {\n const r2 = u.exec(t2);\n return r2 ? new d(r2[2] || c, w(r2[4] || c), w(r2[5] || c), w(r2[7] || c), w(r2[9] || c), e2) : new d(c, c, c, c, c);\n }\n static file(t2) {\n let e2 = c;\n if (i && (t2 = t2.replace(/\\\\/g, f)), t2[0] === f && t2[1] === f) {\n const r2 = t2.indexOf(f, 2);\n -1 === r2 ? (e2 = t2.substring(2), t2 = f) : (e2 = t2.substring(2, r2), t2 = t2.substring(r2) || f);\n }\n return new d(\"file\", e2, t2, c, c);\n }\n static from(t2) {\n const e2 = new d(t2.scheme, t2.authority, t2.path, t2.query, t2.fragment);\n return a(e2, true), e2;\n }\n toString(t2 = false) {\n return b(this, t2);\n }\n toJSON() {\n return this;\n }\n static revive(t2) {\n if (t2) {\n if (t2 instanceof l) return t2;\n {\n const e2 = new d(t2);\n return e2._formatted = t2.external, e2._fsPath = t2._sep === g ? t2.fsPath : null, e2;\n }\n }\n return t2;\n }\n }\n const g = i ? 1 : void 0;\n class d extends l {\n static {\n __name(this, \"d\");\n }\n _formatted = null;\n _fsPath = null;\n get fsPath() {\n return this._fsPath || (this._fsPath = v(this, false)), this._fsPath;\n }\n toString(t2 = false) {\n return t2 ? b(this, true) : (this._formatted || (this._formatted = b(this, false)), this._formatted);\n }\n toJSON() {\n const t2 = { $mid: 1 };\n return this._fsPath && (t2.fsPath = this._fsPath, t2._sep = g), this._formatted && (t2.external = this._formatted), this.path && (t2.path = this.path), this.scheme && (t2.scheme = this.scheme), this.authority && (t2.authority = this.authority), this.query && (t2.query = this.query), this.fragment && (t2.fragment = this.fragment), t2;\n }\n }\n const p = { 58: \"%3A\", 47: \"%2F\", 63: \"%3F\", 35: \"%23\", 91: \"%5B\", 93: \"%5D\", 64: \"%40\", 33: \"%21\", 36: \"%24\", 38: \"%26\", 39: \"%27\", 40: \"%28\", 41: \"%29\", 42: \"%2A\", 43: \"%2B\", 44: \"%2C\", 59: \"%3B\", 61: \"%3D\", 32: \"%20\" };\n function m(t2, e2, r2) {\n let n2, i2 = -1;\n for (let o2 = 0; o2 < t2.length; o2++) {\n const s2 = t2.charCodeAt(o2);\n if (s2 >= 97 && s2 <= 122 || s2 >= 65 && s2 <= 90 || s2 >= 48 && s2 <= 57 || 45 === s2 || 46 === s2 || 95 === s2 || 126 === s2 || e2 && 47 === s2 || r2 && 91 === s2 || r2 && 93 === s2 || r2 && 58 === s2) -1 !== i2 && (n2 += encodeURIComponent(t2.substring(i2, o2)), i2 = -1), void 0 !== n2 && (n2 += t2.charAt(o2));\n else {\n void 0 === n2 && (n2 = t2.substr(0, o2));\n const e3 = p[s2];\n void 0 !== e3 ? (-1 !== i2 && (n2 += encodeURIComponent(t2.substring(i2, o2)), i2 = -1), n2 += e3) : -1 === i2 && (i2 = o2);\n }\n }\n return -1 !== i2 && (n2 += encodeURIComponent(t2.substring(i2))), void 0 !== n2 ? n2 : t2;\n }\n __name(m, \"m\");\n function y(t2) {\n let e2;\n for (let r2 = 0; r2 < t2.length; r2++) {\n const n2 = t2.charCodeAt(r2);\n 35 === n2 || 63 === n2 ? (void 0 === e2 && (e2 = t2.substr(0, r2)), e2 += p[n2]) : void 0 !== e2 && (e2 += t2[r2]);\n }\n return void 0 !== e2 ? e2 : t2;\n }\n __name(y, \"y\");\n function v(t2, e2) {\n let r2;\n return r2 = t2.authority && t2.path.length > 1 && \"file\" === t2.scheme ? `//${t2.authority}${t2.path}` : 47 === t2.path.charCodeAt(0) && (t2.path.charCodeAt(1) >= 65 && t2.path.charCodeAt(1) <= 90 || t2.path.charCodeAt(1) >= 97 && t2.path.charCodeAt(1) <= 122) && 58 === t2.path.charCodeAt(2) ? e2 ? t2.path.substr(1) : t2.path[1].toLowerCase() + t2.path.substr(2) : t2.path, i && (r2 = r2.replace(/\\//g, \"\\\\\")), r2;\n }\n __name(v, \"v\");\n function b(t2, e2) {\n const r2 = e2 ? y : m;\n let n2 = \"\", { scheme: i2, authority: o2, path: s2, query: h2, fragment: a2 } = t2;\n if (i2 && (n2 += i2, n2 += \":\"), (o2 || \"file\" === i2) && (n2 += f, n2 += f), o2) {\n let t3 = o2.indexOf(\"@\");\n if (-1 !== t3) {\n const e3 = o2.substr(0, t3);\n o2 = o2.substr(t3 + 1), t3 = e3.lastIndexOf(\":\"), -1 === t3 ? n2 += r2(e3, false, false) : (n2 += r2(e3.substr(0, t3), false, false), n2 += \":\", n2 += r2(e3.substr(t3 + 1), false, true)), n2 += \"@\";\n }\n o2 = o2.toLowerCase(), t3 = o2.lastIndexOf(\":\"), -1 === t3 ? n2 += r2(o2, false, true) : (n2 += r2(o2.substr(0, t3), false, true), n2 += o2.substr(t3));\n }\n if (s2) {\n if (s2.length >= 3 && 47 === s2.charCodeAt(0) && 58 === s2.charCodeAt(2)) {\n const t3 = s2.charCodeAt(1);\n t3 >= 65 && t3 <= 90 && (s2 = `/${String.fromCharCode(t3 + 32)}:${s2.substr(3)}`);\n } else if (s2.length >= 2 && 58 === s2.charCodeAt(1)) {\n const t3 = s2.charCodeAt(0);\n t3 >= 65 && t3 <= 90 && (s2 = `${String.fromCharCode(t3 + 32)}:${s2.substr(2)}`);\n }\n n2 += r2(s2, true, false);\n }\n return h2 && (n2 += \"?\", n2 += r2(h2, false, false)), a2 && (n2 += \"#\", n2 += e2 ? a2 : m(a2, false, false)), n2;\n }\n __name(b, \"b\");\n function C(t2) {\n try {\n return decodeURIComponent(t2);\n } catch {\n return t2.length > 3 ? t2.substr(0, 3) + C(t2.substr(3)) : t2;\n }\n }\n __name(C, \"C\");\n const A = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\n function w(t2) {\n return t2.match(A) ? t2.replace(A, ((t3) => C(t3))) : t2;\n }\n __name(w, \"w\");\n var x = r(975);\n const P = x.posix || x, _ = \"/\";\n var I;\n !(function(t2) {\n t2.joinPath = function(t3, ...e2) {\n return t3.with({ path: P.join(t3.path, ...e2) });\n }, t2.resolvePath = function(t3, ...e2) {\n let r2 = t3.path, n2 = false;\n r2[0] !== _ && (r2 = _ + r2, n2 = true);\n let i2 = P.resolve(r2, ...e2);\n return n2 && i2[0] === _ && !t3.authority && (i2 = i2.substring(1)), t3.with({ path: i2 });\n }, t2.dirname = function(t3) {\n if (0 === t3.path.length || t3.path === _) return t3;\n let e2 = P.dirname(t3.path);\n return 1 === e2.length && 46 === e2.charCodeAt(0) && (e2 = \"\"), t3.with({ path: e2 });\n }, t2.basename = function(t3) {\n return P.basename(t3.path);\n }, t2.extname = function(t3) {\n return P.extname(t3.path);\n };\n })(I || (I = {})), LIB = n;\n})();\nvar { URI: URI2, Utils } = LIB;\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/uri-utils.js\nvar UriUtils;\n(function(UriUtils2) {\n UriUtils2.basename = Utils.basename;\n UriUtils2.dirname = Utils.dirname;\n UriUtils2.extname = Utils.extname;\n UriUtils2.joinPath = Utils.joinPath;\n UriUtils2.resolvePath = Utils.resolvePath;\n const isWindows = typeof process === \"object\" && process?.platform === \"win32\";\n function equals(a, b) {\n return a?.toString() === b?.toString();\n }\n __name(equals, \"equals\");\n UriUtils2.equals = equals;\n function relative(from, to) {\n const fromPath = typeof from === \"string\" ? URI2.parse(from).path : from.path;\n const toPath = typeof to === \"string\" ? URI2.parse(to).path : to.path;\n const fromParts = fromPath.split(\"/\").filter((e) => e.length > 0);\n const toParts = toPath.split(\"/\").filter((e) => e.length > 0);\n if (isWindows) {\n const upperCaseDriveLetter = /^[A-Z]:$/;\n if (fromParts[0] && upperCaseDriveLetter.test(fromParts[0])) {\n fromParts[0] = fromParts[0].toLowerCase();\n }\n if (toParts[0] && upperCaseDriveLetter.test(toParts[0])) {\n toParts[0] = toParts[0].toLowerCase();\n }\n if (fromParts[0] !== toParts[0]) {\n return toPath.substring(1);\n }\n }\n let i = 0;\n for (; i < fromParts.length; i++) {\n if (fromParts[i] !== toParts[i]) {\n break;\n }\n }\n const backPart = \"../\".repeat(fromParts.length - i);\n const toPart = toParts.slice(i).join(\"/\");\n return backPart + toPart;\n }\n __name(relative, \"relative\");\n UriUtils2.relative = relative;\n function normalize(uri) {\n return URI2.parse(uri.toString()).toString();\n }\n __name(normalize, \"normalize\");\n UriUtils2.normalize = normalize;\n function contains(parent, child) {\n let parentPath = typeof parent === \"string\" ? parent : parent.path;\n let childPath = typeof child === \"string\" ? child : child.path;\n if (childPath.charAt(childPath.length - 1) === \"/\") {\n childPath = childPath.slice(0, -1);\n }\n if (parentPath.charAt(parentPath.length - 1) === \"/\") {\n parentPath = parentPath.slice(0, -1);\n }\n if (childPath === parentPath) {\n return true;\n }\n if (childPath.length < parentPath.length) {\n return false;\n }\n if (childPath.charAt(parentPath.length) !== \"/\") {\n return false;\n }\n return childPath.startsWith(parentPath);\n }\n __name(contains, \"contains\");\n UriUtils2.contains = contains;\n})(UriUtils || (UriUtils = {}));\nvar UriTrie = class {\n static {\n __name(this, \"UriTrie\");\n }\n constructor() {\n this.root = { name: \"\", children: /* @__PURE__ */ new Map() };\n }\n normalizeUri(uri) {\n return UriUtils.normalize(uri);\n }\n clear() {\n this.root.children.clear();\n }\n insert(uri, element) {\n const node = this.getNode(this.normalizeUri(uri), true);\n node.element = element;\n }\n delete(uri) {\n const nodeToDelete = this.getNode(this.normalizeUri(uri), false);\n if (nodeToDelete?.parent) {\n nodeToDelete.parent.children.delete(nodeToDelete.name);\n }\n }\n has(uri) {\n return this.getNode(this.normalizeUri(uri), false)?.element !== void 0;\n }\n hasNode(uri) {\n return this.getNode(this.normalizeUri(uri), false) !== void 0;\n }\n find(uri) {\n return this.getNode(this.normalizeUri(uri), false)?.element;\n }\n findNode(uri) {\n const uriString = this.normalizeUri(uri);\n const node = this.getNode(uriString, false);\n if (!node) {\n return void 0;\n }\n return {\n name: node.name,\n uri: UriUtils.joinPath(URI2.parse(uriString), node.name).toString(),\n element: node.element\n };\n }\n findChildren(uri) {\n const uriString = this.normalizeUri(uri);\n const node = this.getNode(uriString, false);\n if (!node) {\n return [];\n }\n return Array.from(node.children.values()).map((child) => ({\n name: child.name,\n uri: UriUtils.joinPath(URI2.parse(uriString), child.name).toString(),\n element: child.element\n }));\n }\n all() {\n return this.collectValues(this.root);\n }\n findAll(prefix) {\n const node = this.getNode(UriUtils.normalize(prefix), false);\n if (!node) {\n return [];\n }\n return this.collectValues(node);\n }\n getNode(uri, create) {\n const parts = uri.split(\"/\");\n if (uri.charAt(uri.length - 1) === \"/\") {\n parts.pop();\n }\n let current = this.root;\n for (const part of parts) {\n let child = current.children.get(part);\n if (!child) {\n if (create) {\n child = {\n name: part,\n children: /* @__PURE__ */ new Map(),\n parent: current\n };\n current.children.set(part, child);\n } else {\n return void 0;\n }\n }\n current = child;\n }\n return current;\n }\n collectValues(node) {\n const result = [];\n if (node.element) {\n result.push(node.element);\n }\n for (const child of node.children.values()) {\n result.push(...this.collectValues(child));\n }\n return result;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/documents.js\nvar DocumentState;\n(function(DocumentState2) {\n DocumentState2[DocumentState2[\"Changed\"] = 0] = \"Changed\";\n DocumentState2[DocumentState2[\"Parsed\"] = 1] = \"Parsed\";\n DocumentState2[DocumentState2[\"IndexedContent\"] = 2] = \"IndexedContent\";\n DocumentState2[DocumentState2[\"ComputedScopes\"] = 3] = \"ComputedScopes\";\n DocumentState2[DocumentState2[\"Linked\"] = 4] = \"Linked\";\n DocumentState2[DocumentState2[\"IndexedReferences\"] = 5] = \"IndexedReferences\";\n DocumentState2[DocumentState2[\"Validated\"] = 6] = \"Validated\";\n})(DocumentState || (DocumentState = {}));\nvar DefaultLangiumDocumentFactory = class {\n static {\n __name(this, \"DefaultLangiumDocumentFactory\");\n }\n constructor(services) {\n this.serviceRegistry = services.ServiceRegistry;\n this.textDocuments = services.workspace.TextDocuments;\n this.fileSystemProvider = services.workspace.FileSystemProvider;\n }\n async fromUri(uri, cancellationToken = cancellation_exports.CancellationToken.None) {\n const content = await this.fileSystemProvider.readFile(uri);\n return this.createAsync(uri, content, cancellationToken);\n }\n fromTextDocument(textDocument, uri, token) {\n uri = uri ?? URI2.parse(textDocument.uri);\n if (cancellation_exports.CancellationToken.is(token)) {\n return this.createAsync(uri, textDocument, token);\n } else {\n return this.create(uri, textDocument, token);\n }\n }\n fromString(text, uri, token) {\n if (cancellation_exports.CancellationToken.is(token)) {\n return this.createAsync(uri, text, token);\n } else {\n return this.create(uri, text, token);\n }\n }\n fromModel(model, uri) {\n return this.create(uri, { $model: model });\n }\n create(uri, content, options) {\n if (typeof content === \"string\") {\n const parseResult = this.parse(uri, content, options);\n return this.createLangiumDocument(parseResult, uri, void 0, content);\n } else if (\"$model\" in content) {\n const parseResult = { value: content.$model, parserErrors: [], lexerErrors: [] };\n return this.createLangiumDocument(parseResult, uri);\n } else {\n const parseResult = this.parse(uri, content.getText(), options);\n return this.createLangiumDocument(parseResult, uri, content);\n }\n }\n async createAsync(uri, content, cancelToken) {\n if (typeof content === \"string\") {\n const parseResult = await this.parseAsync(uri, content, cancelToken);\n return this.createLangiumDocument(parseResult, uri, void 0, content);\n } else {\n const parseResult = await this.parseAsync(uri, content.getText(), cancelToken);\n return this.createLangiumDocument(parseResult, uri, content);\n }\n }\n /**\n * Create a LangiumDocument from a given parse result.\n *\n * A TextDocument is created on demand if it is not provided as argument here. Usually this\n * should not be necessary because the main purpose of the TextDocument is to convert between\n * text ranges and offsets, which is done solely in LSP request handling.\n *\n * With the introduction of {@link update} below this method is supposed to be mainly called\n * during workspace initialization and on addition/recognition of new files, while changes in\n * existing documents are processed via {@link update}.\n */\n createLangiumDocument(parseResult, uri, textDocument, text) {\n let document;\n if (textDocument) {\n document = {\n parseResult,\n uri,\n state: DocumentState.Parsed,\n references: [],\n textDocument\n };\n } else {\n const textDocumentGetter = this.createTextDocumentGetter(uri, text);\n document = {\n parseResult,\n uri,\n state: DocumentState.Parsed,\n references: [],\n get textDocument() {\n return textDocumentGetter();\n }\n };\n }\n parseResult.value.$document = document;\n return document;\n }\n async update(document, cancellationToken) {\n const oldText = document.parseResult.value.$cstNode?.root.fullText;\n const textDocument = this.textDocuments?.get(document.uri.toString());\n const text = textDocument ? textDocument.getText() : await this.fileSystemProvider.readFile(document.uri);\n if (textDocument) {\n Object.defineProperty(document, \"textDocument\", {\n value: textDocument\n });\n } else {\n const textDocumentGetter = this.createTextDocumentGetter(document.uri, text);\n Object.defineProperty(document, \"textDocument\", {\n get: textDocumentGetter\n });\n }\n if (oldText !== text) {\n document.parseResult = await this.parseAsync(document.uri, text, cancellationToken);\n document.parseResult.value.$document = document;\n }\n document.state = DocumentState.Parsed;\n return document;\n }\n parse(uri, text, options) {\n const services = this.serviceRegistry.getServices(uri);\n return services.parser.LangiumParser.parse(text, options);\n }\n parseAsync(uri, text, cancellationToken) {\n const services = this.serviceRegistry.getServices(uri);\n return services.parser.AsyncParser.parse(text, cancellationToken);\n }\n createTextDocumentGetter(uri, text) {\n const serviceRegistry = this.serviceRegistry;\n let textDoc = void 0;\n return () => {\n return textDoc ?? (textDoc = TextDocument2.create(uri.toString(), serviceRegistry.getServices(uri).LanguageMetaData.languageId, 0, text ?? \"\"));\n };\n }\n};\nvar DefaultLangiumDocuments = class {\n static {\n __name(this, \"DefaultLangiumDocuments\");\n }\n constructor(services) {\n this.documentTrie = new UriTrie();\n this.services = services;\n this.langiumDocumentFactory = services.workspace.LangiumDocumentFactory;\n this.documentBuilder = () => services.workspace.DocumentBuilder;\n }\n get all() {\n return stream(this.documentTrie.all());\n }\n addDocument(document) {\n const uriString = document.uri.toString();\n if (this.documentTrie.has(uriString)) {\n throw new Error(`A document with the URI '${uriString}' is already present.`);\n }\n this.documentTrie.insert(uriString, document);\n }\n getDocument(uri) {\n const uriString = uri.toString();\n return this.documentTrie.find(uriString);\n }\n getDocuments(folder) {\n const uriString = folder.toString();\n return this.documentTrie.findAll(uriString);\n }\n async getOrCreateDocument(uri, cancellationToken) {\n let document = this.getDocument(uri);\n if (document) {\n return document;\n }\n document = await this.langiumDocumentFactory.fromUri(uri, cancellationToken);\n this.addDocument(document);\n return document;\n }\n createDocument(uri, text, cancellationToken) {\n if (cancellationToken) {\n return this.langiumDocumentFactory.fromString(text, uri, cancellationToken).then((document) => {\n this.addDocument(document);\n return document;\n });\n } else {\n const document = this.langiumDocumentFactory.fromString(text, uri);\n this.addDocument(document);\n return document;\n }\n }\n hasDocument(uri) {\n return this.documentTrie.has(uri.toString());\n }\n /**\n * @deprecated Since 4.2 use `DocumentBuilder.resetToState(DocumentState.Changed)` instead\n * TODO remove this for the next major release\n */\n invalidateDocument(uri) {\n const uriString = uri.toString();\n const langiumDoc = this.documentTrie.find(uriString);\n if (langiumDoc) {\n this.documentBuilder().resetToState(langiumDoc, DocumentState.Changed);\n }\n return langiumDoc;\n }\n deleteDocument(uri) {\n const uriString = uri.toString();\n const langiumDoc = this.documentTrie.find(uriString);\n if (langiumDoc) {\n langiumDoc.state = DocumentState.Changed;\n this.documentTrie.delete(uriString);\n }\n return langiumDoc;\n }\n deleteDocuments(folder) {\n const uriString = folder.toString();\n const langiumDocs = this.documentTrie.findAll(uriString);\n for (const langiumDoc of langiumDocs) {\n langiumDoc.state = DocumentState.Changed;\n }\n this.documentTrie.delete(uriString);\n return langiumDocs;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/references/linker.js\nvar RefResolving = Symbol(\"RefResolving\");\nvar DefaultLinker = class {\n static {\n __name(this, \"DefaultLinker\");\n }\n constructor(services) {\n this.reflection = services.shared.AstReflection;\n this.langiumDocuments = () => services.shared.workspace.LangiumDocuments;\n this.scopeProvider = services.references.ScopeProvider;\n this.astNodeLocator = services.workspace.AstNodeLocator;\n this.profiler = services.shared.profilers.LangiumProfiler;\n this.languageId = services.LanguageMetaData.languageId;\n }\n async link(document, cancelToken = cancellation_exports.CancellationToken.None) {\n if (this.profiler?.isActive(\"linking\")) {\n const task = this.profiler.createTask(\"linking\", this.languageId);\n task.start();\n try {\n for (const node of streamAst(document.parseResult.value)) {\n await interruptAndCheck(cancelToken);\n streamReferences(node).forEach((ref) => {\n const name = `${node.$type}:${ref.property}`;\n task.startSubTask(name);\n try {\n this.doLink(ref, document);\n } finally {\n task.stopSubTask(name);\n }\n });\n }\n } finally {\n task.stop();\n }\n } else {\n for (const node of streamAst(document.parseResult.value)) {\n await interruptAndCheck(cancelToken);\n streamReferences(node).forEach((ref) => this.doLink(ref, document));\n }\n }\n }\n doLink(refInfo, document) {\n const ref = refInfo.reference;\n if (\"_ref\" in ref && ref._ref === void 0) {\n ref._ref = RefResolving;\n try {\n const description = this.getCandidate(refInfo);\n if (isLinkingError(description)) {\n ref._ref = description;\n } else {\n ref._nodeDescription = description;\n const linkedNode = this.loadAstNode(description);\n ref._ref = linkedNode ?? this.createLinkingError(refInfo, description);\n }\n } catch (err) {\n console.error(`An error occurred while resolving reference to '${ref.$refText}':`, err);\n const errorMessage = err.message ?? String(err);\n ref._ref = {\n info: refInfo,\n message: `An error occurred while resolving reference to '${ref.$refText}': ${errorMessage}`\n };\n }\n document.references.push(ref);\n } else if (\"_items\" in ref && ref._items === void 0) {\n ref._items = RefResolving;\n try {\n const descriptions = this.getCandidates(refInfo);\n const items = [];\n if (isLinkingError(descriptions)) {\n ref._linkingError = descriptions;\n } else {\n for (const description of descriptions) {\n const linkedNode = this.loadAstNode(description);\n if (linkedNode) {\n items.push({ ref: linkedNode, $nodeDescription: description });\n }\n }\n }\n ref._items = items;\n } catch (err) {\n ref._linkingError = {\n info: refInfo,\n message: `An error occurred while resolving reference to '${ref.$refText}': ${err}`\n };\n ref._items = [];\n }\n document.references.push(ref);\n }\n }\n unlink(document) {\n for (const ref of document.references) {\n if (\"_ref\" in ref) {\n ref._ref = void 0;\n delete ref._nodeDescription;\n } else if (\"_items\" in ref) {\n ref._items = void 0;\n delete ref._linkingError;\n }\n }\n document.references = [];\n }\n getCandidate(refInfo) {\n const scope = this.scopeProvider.getScope(refInfo);\n const description = scope.getElement(refInfo.reference.$refText);\n return description ?? this.createLinkingError(refInfo);\n }\n getCandidates(refInfo) {\n const scope = this.scopeProvider.getScope(refInfo);\n const descriptions = scope.getElements(refInfo.reference.$refText).distinct((desc) => `${desc.documentUri}#${desc.path}`).toArray();\n return descriptions.length > 0 ? descriptions : this.createLinkingError(refInfo);\n }\n buildReference(node, property3, refNode, refText) {\n const linker = this;\n const reference = {\n $refNode: refNode,\n $refText: refText,\n _ref: void 0,\n get ref() {\n if (isAstNode(this._ref)) {\n return this._ref;\n } else if (isAstNodeDescription(this._nodeDescription)) {\n const linkedNode = linker.loadAstNode(this._nodeDescription);\n this._ref = linkedNode ?? linker.createLinkingError({ reference, container: node, property: property3 }, this._nodeDescription);\n } else if (this._ref === void 0) {\n this._ref = RefResolving;\n const document = findRootNode(node).$document;\n const refData = linker.getLinkedNode({ reference, container: node, property: property3 });\n if (refData.error && document && document.state < DocumentState.ComputedScopes) {\n return this._ref = void 0;\n }\n this._ref = refData.node ?? refData.error;\n this._nodeDescription = refData.descr;\n document?.references.push(this);\n } else if (this._ref === RefResolving) {\n linker.throwCyclicReferenceError(node, property3, refText);\n }\n return isAstNode(this._ref) ? this._ref : void 0;\n },\n get $nodeDescription() {\n return this._nodeDescription;\n },\n get error() {\n return isLinkingError(this._ref) ? this._ref : void 0;\n }\n };\n return reference;\n }\n buildMultiReference(node, property3, refNode, refText) {\n const linker = this;\n const reference = {\n $refNode: refNode,\n $refText: refText,\n _items: void 0,\n get items() {\n if (Array.isArray(this._items)) {\n return this._items;\n } else if (this._items === void 0) {\n this._items = RefResolving;\n const document = findRootNode(node).$document;\n const descriptions = linker.getCandidates({\n reference,\n container: node,\n property: property3\n });\n const items = [];\n if (isLinkingError(descriptions)) {\n this._linkingError = descriptions;\n } else {\n for (const description of descriptions) {\n const linkedNode = linker.loadAstNode(description);\n if (linkedNode) {\n items.push({ ref: linkedNode, $nodeDescription: description });\n }\n }\n }\n this._items = items;\n document?.references.push(this);\n } else if (this._items === RefResolving) {\n linker.throwCyclicReferenceError(node, property3, refText);\n }\n return Array.isArray(this._items) ? this._items : [];\n },\n get error() {\n if (this._linkingError) {\n return this._linkingError;\n }\n const refs = this.items;\n if (refs.length > 0) {\n return void 0;\n } else {\n return this._linkingError = linker.createLinkingError({ reference, container: node, property: property3 });\n }\n }\n };\n return reference;\n }\n throwCyclicReferenceError(node, property3, refText) {\n throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(node)}/${property3} (symbol '${refText}')`);\n }\n getLinkedNode(refInfo) {\n try {\n const description = this.getCandidate(refInfo);\n if (isLinkingError(description)) {\n return { error: description };\n }\n const linkedNode = this.loadAstNode(description);\n if (linkedNode) {\n return { node: linkedNode, descr: description };\n } else {\n return {\n descr: description,\n error: this.createLinkingError(refInfo, description)\n };\n }\n } catch (err) {\n console.error(`An error occurred while resolving reference to '${refInfo.reference.$refText}':`, err);\n const errorMessage = err.message ?? String(err);\n return {\n error: {\n info: refInfo,\n message: `An error occurred while resolving reference to '${refInfo.reference.$refText}': ${errorMessage}`\n }\n };\n }\n }\n loadAstNode(nodeDescription) {\n if (nodeDescription.node) {\n return nodeDescription.node;\n }\n const doc = this.langiumDocuments().getDocument(nodeDescription.documentUri);\n if (!doc) {\n return void 0;\n }\n return this.astNodeLocator.getAstNode(doc.parseResult.value, nodeDescription.path);\n }\n createLinkingError(refInfo, targetDescription) {\n const document = findRootNode(refInfo.container).$document;\n if (document && document.state < DocumentState.ComputedScopes) {\n console.warn(`Attempted reference resolution before document reached ComputedScopes state (${document.uri}).`);\n }\n const referenceType = this.reflection.getReferenceType(refInfo);\n return {\n info: refInfo,\n message: `Could not resolve reference to ${referenceType} named '${refInfo.reference.$refText}'.`,\n targetDescription\n };\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/references/name-provider.js\nfunction isNamed(node) {\n return typeof node.name === \"string\";\n}\n__name(isNamed, \"isNamed\");\nvar DefaultNameProvider = class {\n static {\n __name(this, \"DefaultNameProvider\");\n }\n getName(node) {\n if (isNamed(node)) {\n return node.name;\n }\n return void 0;\n }\n getNameNode(node) {\n return findNodeForProperty(node.$cstNode, \"name\");\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/references/references.js\nvar DefaultReferences = class {\n static {\n __name(this, \"DefaultReferences\");\n }\n constructor(services) {\n this.nameProvider = services.references.NameProvider;\n this.index = services.shared.workspace.IndexManager;\n this.nodeLocator = services.workspace.AstNodeLocator;\n this.documents = services.shared.workspace.LangiumDocuments;\n this.hasMultiReference = streamAst(services.Grammar).some((node) => isCrossReference(node) && node.isMulti);\n }\n findDeclarations(sourceCstNode) {\n if (sourceCstNode) {\n const assignment = findAssignment(sourceCstNode);\n const nodeElem = sourceCstNode.astNode;\n if (assignment && nodeElem) {\n const reference = nodeElem[assignment.feature];\n if (isReference(reference) || isMultiReference(reference)) {\n return getReferenceNodes(reference);\n } else if (Array.isArray(reference)) {\n for (const ref of reference) {\n if ((isReference(ref) || isMultiReference(ref)) && ref.$refNode && ref.$refNode.offset <= sourceCstNode.offset && ref.$refNode.end >= sourceCstNode.end) {\n return getReferenceNodes(ref);\n }\n }\n }\n }\n if (nodeElem) {\n const nameNode = this.nameProvider.getNameNode(nodeElem);\n if (nameNode && (nameNode === sourceCstNode || isChildNode(sourceCstNode, nameNode))) {\n return this.getSelfNodes(nodeElem);\n }\n }\n }\n return [];\n }\n /**\n * Returns all self-references for the specified node.\n * Since the node can be part of a multi-reference, this method returns all nodes that are part of the same multi-reference.\n */\n getSelfNodes(node) {\n if (!this.hasMultiReference) {\n return [node];\n } else {\n const references = this.index.findAllReferences(node, this.nodeLocator.getAstNodePath(node));\n const headNode = this.getNodeFromReferenceDescription(references.head());\n if (headNode) {\n for (const ref of streamReferences(headNode)) {\n if (isMultiReference(ref.reference) && ref.reference.items.some((item) => item.ref === node)) {\n return ref.reference.items.map((item) => item.ref);\n }\n }\n }\n return [node];\n }\n }\n getNodeFromReferenceDescription(ref) {\n if (!ref) {\n return void 0;\n }\n const doc = this.documents.getDocument(ref.sourceUri);\n if (doc) {\n return this.nodeLocator.getAstNode(doc.parseResult.value, ref.sourcePath);\n }\n return void 0;\n }\n findDeclarationNodes(sourceCstNode) {\n const astNodes = this.findDeclarations(sourceCstNode);\n const cstNodes = [];\n for (const astNode of astNodes) {\n const cstNode = this.nameProvider.getNameNode(astNode) ?? astNode.$cstNode;\n if (cstNode) {\n cstNodes.push(cstNode);\n }\n }\n return cstNodes;\n }\n findReferences(targetNode, options) {\n const refs = [];\n if (options.includeDeclaration) {\n refs.push(...this.getSelfReferences(targetNode));\n }\n let indexReferences = this.index.findAllReferences(targetNode, this.nodeLocator.getAstNodePath(targetNode));\n if (options.documentUri) {\n indexReferences = indexReferences.filter((ref) => UriUtils.equals(ref.sourceUri, options.documentUri));\n }\n refs.push(...indexReferences);\n return stream(refs);\n }\n getSelfReferences(targetNode) {\n const selfNodes = this.getSelfNodes(targetNode);\n const references = [];\n for (const selfNode of selfNodes) {\n const nameNode = this.nameProvider.getNameNode(selfNode);\n if (nameNode) {\n const doc = getDocument(selfNode);\n const path = this.nodeLocator.getAstNodePath(selfNode);\n references.push({\n sourceUri: doc.uri,\n sourcePath: path,\n targetUri: doc.uri,\n targetPath: path,\n segment: toDocumentSegment(nameNode),\n local: true\n });\n }\n }\n return references;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/collections.js\nvar MultiMap = class {\n static {\n __name(this, \"MultiMap\");\n }\n constructor(elements) {\n this.map = /* @__PURE__ */ new Map();\n if (elements) {\n for (const [key, value] of elements) {\n this.add(key, value);\n }\n }\n }\n /**\n * The total number of values in the multimap.\n */\n get size() {\n return Reduction.sum(stream(this.map.values()).map((a) => a.length));\n }\n /**\n * Clear all entries in the multimap.\n */\n clear() {\n this.map.clear();\n }\n /**\n * Operates differently depending on whether a `value` is given:\n * * With a value, this method deletes the specific key / value pair from the multimap.\n * * Without a value, all values associated with the given key are deleted.\n *\n * @returns `true` if a value existed and has been removed, or `false` if the specified\n * key / value does not exist.\n */\n delete(key, value) {\n if (value === void 0) {\n return this.map.delete(key);\n } else {\n const values2 = this.map.get(key);\n if (values2) {\n const index = values2.indexOf(value);\n if (index >= 0) {\n if (values2.length === 1) {\n this.map.delete(key);\n } else {\n values2.splice(index, 1);\n }\n return true;\n }\n }\n return false;\n }\n }\n /**\n * Returns an array of all values associated with the given key. If no value exists,\n * an empty array is returned.\n *\n * _Note:_ The returned array is assumed not to be modified. Use the `set` method to add a\n * value and `delete` to remove a value from the multimap.\n */\n get(key) {\n return this.map.get(key) ?? [];\n }\n /**\n * Returns a stream of all values associated with the given key. If no value exists,\n * {@link EMPTY_STREAM} is returned.\n */\n getStream(key) {\n const values2 = this.map.get(key);\n return values2 ? stream(values2) : EMPTY_STREAM;\n }\n /**\n * Operates differently depending on whether a `value` is given:\n * * With a value, this method returns `true` if the specific key / value pair is present in the multimap.\n * * Without a value, this method returns `true` if the given key is present in the multimap.\n */\n has(key, value) {\n if (value === void 0) {\n return this.map.has(key);\n } else {\n const values2 = this.map.get(key);\n if (values2) {\n return values2.indexOf(value) >= 0;\n }\n return false;\n }\n }\n /**\n * Add the given key / value pair to the multimap.\n */\n add(key, value) {\n if (this.map.has(key)) {\n this.map.get(key).push(value);\n } else {\n this.map.set(key, [value]);\n }\n return this;\n }\n /**\n * Add the given set of key / value pairs to the multimap.\n */\n addAll(key, values2) {\n if (this.map.has(key)) {\n this.map.get(key).push(...values2);\n } else {\n this.map.set(key, Array.from(values2));\n }\n return this;\n }\n /**\n * Invokes the given callback function for every key / value pair in the multimap.\n */\n forEach(callbackfn) {\n this.map.forEach((array, key) => array.forEach((value) => callbackfn(value, key, this)));\n }\n /**\n * Returns an iterator of key, value pairs for every entry in the map.\n */\n [Symbol.iterator]() {\n return this.entries().iterator();\n }\n /**\n * Returns a stream of key, value pairs for every entry in the map.\n */\n entries() {\n return stream(this.map.entries()).flatMap(([key, array]) => array.map((value) => [key, value]));\n }\n /**\n * Returns a stream of keys in the map.\n */\n keys() {\n return stream(this.map.keys());\n }\n /**\n * Returns a stream of values in the map.\n */\n values() {\n return stream(this.map.values()).flat();\n }\n /**\n * Returns a stream of key, value set pairs for every key in the map.\n */\n entriesGroupedByKey() {\n return stream(this.map.entries());\n }\n};\nvar BiMap = class {\n static {\n __name(this, \"BiMap\");\n }\n get size() {\n return this.map.size;\n }\n constructor(elements) {\n this.map = /* @__PURE__ */ new Map();\n this.inverse = /* @__PURE__ */ new Map();\n if (elements) {\n for (const [key, value] of elements) {\n this.set(key, value);\n }\n }\n }\n clear() {\n this.map.clear();\n this.inverse.clear();\n }\n set(key, value) {\n this.map.set(key, value);\n this.inverse.set(value, key);\n return this;\n }\n get(key) {\n return this.map.get(key);\n }\n getKey(value) {\n return this.inverse.get(value);\n }\n delete(key) {\n const value = this.map.get(key);\n if (value !== void 0) {\n this.map.delete(key);\n this.inverse.delete(value);\n return true;\n }\n return false;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/references/scope-computation.js\nvar DefaultScopeComputation = class {\n static {\n __name(this, \"DefaultScopeComputation\");\n }\n constructor(services) {\n this.nameProvider = services.references.NameProvider;\n this.descriptions = services.workspace.AstNodeDescriptionProvider;\n }\n async collectExportedSymbols(document, cancelToken = cancellation_exports.CancellationToken.None) {\n return this.collectExportedSymbolsForNode(document.parseResult.value, document, void 0, cancelToken);\n }\n /**\n * Creates {@link AstNodeDescription AstNodeDescriptions} for the given {@link AstNode parentNode} and its children.\n * The list of children to be considered is determined by the function parameter {@link children}.\n * By default only the direct children of {@link parentNode} are visited, nested nodes are not exported.\n *\n * @param parentNode AST node to be exported, i.e., of which an {@link AstNodeDescription} shall be added to the returned list.\n * @param document The document containing the AST node to be exported.\n * @param children A function called with {@link parentNode} as single argument and returning an {@link Iterable} supplying the children to be visited, which must be directly or transitively contained in {@link parentNode}.\n * @param cancelToken Indicates when to cancel the current operation.\n * @throws `OperationCancelled` if a user action occurs during execution.\n * @returns A list of {@link AstNodeDescription AstNodeDescriptions} to be published to index.\n */\n async collectExportedSymbolsForNode(parentNode, document, children = streamContents, cancelToken = cancellation_exports.CancellationToken.None) {\n const exports2 = [];\n this.addExportedSymbol(parentNode, exports2, document);\n for (const node of children(parentNode)) {\n await interruptAndCheck(cancelToken);\n this.addExportedSymbol(node, exports2, document);\n }\n return exports2;\n }\n /**\n * Adds a single node to the list of exports if it has a name. Override this method to change how\n * symbols are exported, e.g. by modifying their exported name.\n */\n addExportedSymbol(node, exports2, document) {\n const name = this.nameProvider.getName(node);\n if (name) {\n exports2.push(this.descriptions.createDescription(node, name, document));\n }\n }\n // --- local symbols gathering ---\n async collectLocalSymbols(document, cancelToken = cancellation_exports.CancellationToken.None) {\n const rootNode = document.parseResult.value;\n const symbols = new MultiMap();\n for (const node of streamAllContents(rootNode)) {\n await interruptAndCheck(cancelToken);\n this.addLocalSymbol(node, document, symbols);\n }\n return symbols;\n }\n /**\n * Adds a single node to the local symbols of its containing document if it has a name.\n * The default implementation makes the node visible in the subtree of its container if it does have a container.\n * Override this method to change this, e.g. by increasing the visibility to a higher level in the AST.\n */\n addLocalSymbol(node, document, symbols) {\n const container = node.$container;\n if (container) {\n const name = this.nameProvider.getName(node);\n if (name) {\n symbols.add(container, this.descriptions.createDescription(node, name, document));\n }\n }\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/references/scope.js\nvar StreamScope = class {\n static {\n __name(this, \"StreamScope\");\n }\n constructor(elements, outerScope, options) {\n this.elements = elements;\n this.outerScope = outerScope;\n this.caseInsensitive = options?.caseInsensitive ?? false;\n this.concatOuterScope = options?.concatOuterScope ?? true;\n }\n getAllElements() {\n if (this.outerScope) {\n return this.elements.concat(this.outerScope.getAllElements());\n } else {\n return this.elements;\n }\n }\n getElement(name) {\n const lowerCaseName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.caseInsensitive ? this.elements.find((e) => e.name.toLowerCase() === lowerCaseName) : this.elements.find((e) => e.name === name);\n if (local) {\n return local;\n }\n if (this.outerScope) {\n return this.outerScope.getElement(name);\n }\n return void 0;\n }\n getElements(name) {\n const lowerCaseName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.caseInsensitive ? this.elements.filter((e) => e.name.toLowerCase() === lowerCaseName) : this.elements.filter((e) => e.name === name);\n if ((this.concatOuterScope || local.isEmpty()) && this.outerScope) {\n return local.concat(this.outerScope.getElements(name));\n } else {\n return local;\n }\n }\n};\nvar MapScope = class {\n static {\n __name(this, \"MapScope\");\n }\n constructor(elements, outerScope, options) {\n this.elements = /* @__PURE__ */ new Map();\n this.caseInsensitive = options?.caseInsensitive ?? false;\n this.concatOuterScope = options?.concatOuterScope ?? true;\n for (const element of elements) {\n const name = this.caseInsensitive ? element.name.toLowerCase() : element.name;\n this.elements.set(name, element);\n }\n this.outerScope = outerScope;\n }\n getElement(name) {\n const localName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.elements.get(localName);\n if (local) {\n return local;\n }\n if (this.outerScope) {\n return this.outerScope.getElement(name);\n }\n return void 0;\n }\n getElements(name) {\n const localName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.elements.get(localName);\n const arr = local ? [local] : [];\n if ((this.concatOuterScope || arr.length > 0) && this.outerScope) {\n return stream(arr).concat(this.outerScope.getElements(name));\n } else {\n return stream(arr);\n }\n }\n getAllElements() {\n let elementStream = stream(this.elements.values());\n if (this.outerScope) {\n elementStream = elementStream.concat(this.outerScope.getAllElements());\n }\n return elementStream;\n }\n};\nvar MultiMapScope = class {\n static {\n __name(this, \"MultiMapScope\");\n }\n constructor(elements, outerScope, options) {\n this.elements = new MultiMap();\n this.caseInsensitive = options?.caseInsensitive ?? false;\n this.concatOuterScope = options?.concatOuterScope ?? true;\n for (const element of elements) {\n const name = this.caseInsensitive ? element.name.toLowerCase() : element.name;\n this.elements.add(name, element);\n }\n this.outerScope = outerScope;\n }\n getElement(name) {\n const localName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.elements.get(localName)[0];\n if (local) {\n return local;\n }\n if (this.outerScope) {\n return this.outerScope.getElement(name);\n }\n return void 0;\n }\n getElements(name) {\n const localName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.elements.get(localName);\n if ((this.concatOuterScope || local.length === 0) && this.outerScope) {\n return stream(local).concat(this.outerScope.getElements(name));\n } else {\n return stream(local);\n }\n }\n getAllElements() {\n let elementStream = stream(this.elements.values());\n if (this.outerScope) {\n elementStream = elementStream.concat(this.outerScope.getAllElements());\n }\n return elementStream;\n }\n};\nvar EMPTY_SCOPE = {\n getElement() {\n return void 0;\n },\n getElements() {\n return EMPTY_STREAM;\n },\n getAllElements() {\n return EMPTY_STREAM;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/caching.js\nvar DisposableCache = class {\n static {\n __name(this, \"DisposableCache\");\n }\n constructor() {\n this.toDispose = [];\n this.isDisposed = false;\n }\n onDispose(disposable) {\n this.toDispose.push(disposable);\n }\n dispose() {\n this.throwIfDisposed();\n this.clear();\n this.isDisposed = true;\n this.toDispose.forEach((disposable) => disposable.dispose());\n }\n throwIfDisposed() {\n if (this.isDisposed) {\n throw new Error(\"This cache has already been disposed\");\n }\n }\n};\nvar SimpleCache = class extends DisposableCache {\n static {\n __name(this, \"SimpleCache\");\n }\n constructor() {\n super(...arguments);\n this.cache = /* @__PURE__ */ new Map();\n }\n has(key) {\n this.throwIfDisposed();\n return this.cache.has(key);\n }\n set(key, value) {\n this.throwIfDisposed();\n this.cache.set(key, value);\n }\n get(key, provider) {\n this.throwIfDisposed();\n if (this.cache.has(key)) {\n return this.cache.get(key);\n } else if (provider) {\n const value = provider();\n this.cache.set(key, value);\n return value;\n } else {\n return void 0;\n }\n }\n delete(key) {\n this.throwIfDisposed();\n return this.cache.delete(key);\n }\n clear() {\n this.throwIfDisposed();\n this.cache.clear();\n }\n};\nvar ContextCache = class extends DisposableCache {\n static {\n __name(this, \"ContextCache\");\n }\n constructor(converter) {\n super();\n this.cache = /* @__PURE__ */ new Map();\n this.converter = converter ?? ((value) => value);\n }\n has(contextKey, key) {\n this.throwIfDisposed();\n return this.cacheForContext(contextKey).has(key);\n }\n set(contextKey, key, value) {\n this.throwIfDisposed();\n this.cacheForContext(contextKey).set(key, value);\n }\n get(contextKey, key, provider) {\n this.throwIfDisposed();\n const contextCache = this.cacheForContext(contextKey);\n if (contextCache.has(key)) {\n return contextCache.get(key);\n } else if (provider) {\n const value = provider();\n contextCache.set(key, value);\n return value;\n } else {\n return void 0;\n }\n }\n delete(contextKey, key) {\n this.throwIfDisposed();\n return this.cacheForContext(contextKey).delete(key);\n }\n clear(contextKey) {\n this.throwIfDisposed();\n if (contextKey) {\n const mapKey = this.converter(contextKey);\n this.cache.delete(mapKey);\n } else {\n this.cache.clear();\n }\n }\n cacheForContext(contextKey) {\n const mapKey = this.converter(contextKey);\n let documentCache = this.cache.get(mapKey);\n if (!documentCache) {\n documentCache = /* @__PURE__ */ new Map();\n this.cache.set(mapKey, documentCache);\n }\n return documentCache;\n }\n};\nvar DocumentCache = class extends ContextCache {\n static {\n __name(this, \"DocumentCache\");\n }\n /**\n * Creates a new document cache.\n *\n * @param sharedServices Service container instance to hook into document lifecycle events.\n * @param state Optional document state on which the cache should evict.\n * If not provided, the cache will evict on `DocumentBuilder#onUpdate`.\n * *Deleted* documents are considered in both cases.\n *\n * Providing a state here will use `DocumentBuilder#onDocumentPhase` instead,\n * which triggers on all documents that have been affected by this change, assuming that the\n * state is `DocumentState.Linked` or a later state.\n */\n constructor(sharedServices, state) {\n super((uri) => uri.toString());\n if (state) {\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onDocumentPhase(state, (document) => {\n this.clear(document.uri.toString());\n }));\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((_changed, deleted) => {\n for (const uri of deleted) {\n this.clear(uri);\n }\n }));\n } else {\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((changed, deleted) => {\n const allUris = changed.concat(deleted);\n for (const uri of allUris) {\n this.clear(uri);\n }\n }));\n }\n }\n};\nvar WorkspaceCache = class extends SimpleCache {\n static {\n __name(this, \"WorkspaceCache\");\n }\n /**\n * Creates a new workspace cache.\n *\n * @param sharedServices Service container instance to hook into document lifecycle events.\n * @param state Optional document state on which the cache should evict.\n * If not provided, the cache will evict on `DocumentBuilder#onUpdate`.\n * *Deleted* documents are considered in both cases.\n */\n constructor(sharedServices, state) {\n super();\n if (state) {\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onBuildPhase(state, () => {\n this.clear();\n }));\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((_changed, deleted) => {\n if (deleted.length > 0) {\n this.clear();\n }\n }));\n } else {\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate(() => {\n this.clear();\n }));\n }\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/references/scope-provider.js\nvar DefaultScopeProvider = class {\n static {\n __name(this, \"DefaultScopeProvider\");\n }\n constructor(services) {\n this.reflection = services.shared.AstReflection;\n this.nameProvider = services.references.NameProvider;\n this.descriptions = services.workspace.AstNodeDescriptionProvider;\n this.indexManager = services.shared.workspace.IndexManager;\n this.globalScopeCache = new WorkspaceCache(services.shared);\n }\n getScope(context) {\n const scopes = [];\n const referenceType = this.reflection.getReferenceType(context);\n const localSymbols = getDocument(context.container).localSymbols;\n if (localSymbols) {\n let currentNode = context.container;\n do {\n if (localSymbols.has(currentNode)) {\n scopes.push(localSymbols.getStream(currentNode).filter((desc) => this.reflection.isSubtype(desc.type, referenceType)));\n }\n currentNode = currentNode.$container;\n } while (currentNode);\n }\n let result = this.getGlobalScope(referenceType, context);\n for (let i = scopes.length - 1; i >= 0; i--) {\n result = this.createScope(scopes[i], result);\n }\n return result;\n }\n /**\n * Create a scope for the given collection of AST node descriptions.\n */\n createScope(elements, outerScope, options) {\n return new StreamScope(stream(elements), outerScope, options);\n }\n /**\n * Create a scope for the given collection of AST nodes, which need to be transformed into respective\n * descriptions first. This is done using the `NameProvider` and `AstNodeDescriptionProvider` services.\n */\n createScopeForNodes(elements, outerScope, options) {\n const s = stream(elements).map((e) => {\n const name = this.nameProvider.getName(e);\n if (name) {\n return this.descriptions.createDescription(e, name);\n }\n return void 0;\n }).nonNullable();\n return new StreamScope(s, outerScope, options);\n }\n /**\n * Create a global scope filtered for the given reference type.\n */\n getGlobalScope(referenceType, _context) {\n return this.globalScopeCache.get(referenceType, () => new MultiMapScope(this.indexManager.allElements(referenceType)));\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/serializer/json-serializer.js\nfunction isAstNodeWithComment(node) {\n return typeof node.$comment === \"string\";\n}\n__name(isAstNodeWithComment, \"isAstNodeWithComment\");\nfunction isIntermediateReference(obj) {\n return typeof obj === \"object\" && !!obj && (\"$ref\" in obj || \"$error\" in obj);\n}\n__name(isIntermediateReference, \"isIntermediateReference\");\nvar DefaultJsonSerializer = class {\n static {\n __name(this, \"DefaultJsonSerializer\");\n }\n constructor(services) {\n this.ignoreProperties = /* @__PURE__ */ new Set([\"$container\", \"$containerProperty\", \"$containerIndex\", \"$document\", \"$cstNode\"]);\n this.langiumDocuments = services.shared.workspace.LangiumDocuments;\n this.astNodeLocator = services.workspace.AstNodeLocator;\n this.nameProvider = services.references.NameProvider;\n this.commentProvider = services.documentation.CommentProvider;\n }\n serialize(node, options) {\n const serializeOptions = options ?? {};\n const specificReplacer = options?.replacer;\n const defaultReplacer = /* @__PURE__ */ __name((key, value) => this.replacer(key, value, serializeOptions), \"defaultReplacer\");\n const replacer = specificReplacer ? (key, value) => specificReplacer(key, value, defaultReplacer) : defaultReplacer;\n try {\n this.currentDocument = getDocument(node);\n return JSON.stringify(node, replacer, options?.space);\n } finally {\n this.currentDocument = void 0;\n }\n }\n deserialize(content, options) {\n const deserializeOptions = options ?? {};\n const root3 = JSON.parse(content);\n this.linkNode(root3, root3, deserializeOptions);\n return root3;\n }\n replacer(key, value, { refText, sourceText, textRegions, comments, uriConverter }) {\n if (this.ignoreProperties.has(key)) {\n return void 0;\n } else if (isReference(value)) {\n const refValue = value.ref;\n const $refText = refText ? value.$refText : void 0;\n if (refValue) {\n const targetDocument = getDocument(refValue);\n let targetUri = \"\";\n if (this.currentDocument && this.currentDocument !== targetDocument) {\n if (uriConverter) {\n targetUri = uriConverter(targetDocument.uri, refValue);\n } else {\n targetUri = targetDocument.uri.toString();\n }\n }\n const targetPath = this.astNodeLocator.getAstNodePath(refValue);\n return {\n $ref: `${targetUri}#${targetPath}`,\n $refText\n };\n } else {\n return {\n $error: value.error?.message ?? \"Could not resolve reference\",\n $refText\n };\n }\n } else if (isMultiReference(value)) {\n const $refText = refText ? value.$refText : void 0;\n const $refs = [];\n for (const item of value.items) {\n const refValue = item.ref;\n const targetDocument = getDocument(item.ref);\n let targetUri = \"\";\n if (this.currentDocument && this.currentDocument !== targetDocument) {\n if (uriConverter) {\n targetUri = uriConverter(targetDocument.uri, refValue);\n } else {\n targetUri = targetDocument.uri.toString();\n }\n }\n const targetPath = this.astNodeLocator.getAstNodePath(refValue);\n $refs.push(`${targetUri}#${targetPath}`);\n }\n return {\n $refs,\n $refText\n };\n } else if (isAstNode(value)) {\n let astNode = void 0;\n if (textRegions) {\n astNode = this.addAstNodeRegionWithAssignmentsTo({ ...value });\n if ((!key || value.$document) && astNode?.$textRegion) {\n astNode.$textRegion.documentURI = this.currentDocument?.uri.toString();\n }\n }\n if (sourceText && !key) {\n astNode ?? (astNode = { ...value });\n astNode.$sourceText = value.$cstNode?.text;\n }\n if (comments) {\n astNode ?? (astNode = { ...value });\n const comment = this.commentProvider.getComment(value);\n if (comment) {\n astNode.$comment = comment.replace(/\\r/g, \"\");\n }\n }\n return astNode ?? value;\n } else {\n return value;\n }\n }\n addAstNodeRegionWithAssignmentsTo(node) {\n const createDocumentSegment = /* @__PURE__ */ __name((cstNode) => ({\n offset: cstNode.offset,\n end: cstNode.end,\n length: cstNode.length,\n range: cstNode.range\n }), \"createDocumentSegment\");\n if (node.$cstNode) {\n const textRegion = node.$textRegion = createDocumentSegment(node.$cstNode);\n const assignments = textRegion.assignments = {};\n Object.keys(node).filter((key) => !key.startsWith(\"$\")).forEach((key) => {\n const propertyAssignments = findNodesForProperty(node.$cstNode, key).map(createDocumentSegment);\n if (propertyAssignments.length !== 0) {\n assignments[key] = propertyAssignments;\n }\n });\n return node;\n }\n return void 0;\n }\n linkNode(node, root3, options, container, containerProperty, containerIndex) {\n for (const [propertyName, item] of Object.entries(node)) {\n if (Array.isArray(item)) {\n for (let index = 0; index < item.length; index++) {\n const element = item[index];\n if (isIntermediateReference(element)) {\n item[index] = this.reviveReference(node, propertyName, root3, element, options);\n } else if (isAstNode(element)) {\n this.linkNode(element, root3, options, node, propertyName, index);\n }\n }\n } else if (isIntermediateReference(item)) {\n node[propertyName] = this.reviveReference(node, propertyName, root3, item, options);\n } else if (isAstNode(item)) {\n this.linkNode(item, root3, options, node, propertyName);\n }\n }\n const mutable = node;\n mutable.$container = container;\n mutable.$containerProperty = containerProperty;\n mutable.$containerIndex = containerIndex;\n }\n reviveReference(container, property3, root3, reference, options) {\n let refText = reference.$refText;\n let error = reference.$error;\n let ref;\n if (reference.$ref) {\n const refNode = this.getRefNode(root3, reference.$ref, options.uriConverter);\n if (isAstNode(refNode)) {\n if (!refText) {\n refText = this.nameProvider.getName(refNode);\n }\n return {\n $refText: refText ?? \"\",\n ref: refNode\n };\n } else {\n error = refNode;\n }\n } else if (reference.$refs) {\n const refs = [];\n for (const refUri of reference.$refs) {\n const refNode = this.getRefNode(root3, refUri, options.uriConverter);\n if (isAstNode(refNode)) {\n refs.push({ ref: refNode });\n }\n }\n if (refs.length === 0) {\n ref = {\n $refText: refText ?? \"\",\n items: refs\n };\n error ?? (error = \"Could not resolve multi-reference\");\n } else {\n return {\n $refText: refText ?? \"\",\n items: refs\n };\n }\n }\n if (error) {\n ref ?? (ref = {\n $refText: refText ?? \"\",\n ref: void 0\n });\n ref.error = {\n info: {\n container,\n property: property3,\n reference: ref\n },\n message: error\n };\n return ref;\n } else {\n return void 0;\n }\n }\n getRefNode(root3, uri, uriConverter) {\n try {\n const fragmentIndex = uri.indexOf(\"#\");\n if (fragmentIndex === 0) {\n const node2 = this.astNodeLocator.getAstNode(root3, uri.substring(1));\n if (!node2) {\n return \"Could not resolve path: \" + uri;\n }\n return node2;\n }\n if (fragmentIndex < 0) {\n const documentUri2 = uriConverter ? uriConverter(uri) : URI2.parse(uri);\n const document2 = this.langiumDocuments.getDocument(documentUri2);\n if (!document2) {\n return \"Could not find document for URI: \" + uri;\n }\n return document2.parseResult.value;\n }\n const documentUri = uriConverter ? uriConverter(uri.substring(0, fragmentIndex)) : URI2.parse(uri.substring(0, fragmentIndex));\n const document = this.langiumDocuments.getDocument(documentUri);\n if (!document) {\n return \"Could not find document for URI: \" + uri;\n }\n if (fragmentIndex === uri.length - 1) {\n return document.parseResult.value;\n }\n const node = this.astNodeLocator.getAstNode(document.parseResult.value, uri.substring(fragmentIndex + 1));\n if (!node) {\n return \"Could not resolve URI: \" + uri;\n }\n return node;\n } catch (err) {\n return String(err);\n }\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/service-registry.js\nvar DefaultServiceRegistry = class {\n static {\n __name(this, \"DefaultServiceRegistry\");\n }\n /**\n * @deprecated Since 3.1.0. Use the new `fileExtensionMap` (or `languageIdMap`) property instead.\n */\n get map() {\n return this.fileExtensionMap;\n }\n constructor(services) {\n this.languageIdMap = /* @__PURE__ */ new Map();\n this.fileExtensionMap = /* @__PURE__ */ new Map();\n this.fileNameMap = /* @__PURE__ */ new Map();\n this.textDocuments = services?.workspace.TextDocuments;\n }\n register(language) {\n const data = language.LanguageMetaData;\n for (const ext of data.fileExtensions) {\n if (this.fileExtensionMap.has(ext)) {\n console.warn(`The file extension ${ext} is used by multiple languages. It is now assigned to '${data.languageId}'.`);\n }\n this.fileExtensionMap.set(ext, language);\n }\n if (data.fileNames) {\n for (const name of data.fileNames) {\n if (this.fileNameMap.has(name)) {\n console.warn(`The file name ${name} is used by multiple languages. It is now assigned to '${data.languageId}'.`);\n }\n this.fileNameMap.set(name, language);\n }\n }\n this.languageIdMap.set(data.languageId, language);\n }\n getServices(uri) {\n if (this.languageIdMap.size === 0) {\n throw new Error(\"The service registry is empty. Use `register` to register the services of a language.\");\n }\n const languageId = this.textDocuments?.get(uri)?.languageId;\n if (languageId !== void 0) {\n const services2 = this.languageIdMap.get(languageId);\n if (services2) {\n return services2;\n }\n }\n const ext = UriUtils.extname(uri);\n const name = UriUtils.basename(uri);\n const services = this.fileNameMap.get(name) ?? this.fileExtensionMap.get(ext);\n if (!services) {\n if (languageId) {\n throw new Error(`The service registry contains no services for the extension '${ext}' for language '${languageId}'.`);\n } else {\n throw new Error(`The service registry contains no services for the extension '${ext}'.`);\n }\n }\n return services;\n }\n hasServices(uri) {\n try {\n this.getServices(uri);\n return true;\n } catch {\n return false;\n }\n }\n get all() {\n return Array.from(this.languageIdMap.values());\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/validation/validation-registry.js\nfunction diagnosticData(code) {\n return { code };\n}\n__name(diagnosticData, \"diagnosticData\");\nvar ValidationCategory;\n(function(ValidationCategory2) {\n ValidationCategory2.defaults = [\"fast\", \"slow\", \"built-in\"];\n ValidationCategory2.all = ValidationCategory2.defaults;\n})(ValidationCategory || (ValidationCategory = {}));\nvar ValidationRegistry = class {\n static {\n __name(this, \"ValidationRegistry\");\n }\n constructor(services) {\n this.entries = new MultiMap();\n this.knownCategories = new Set(ValidationCategory.defaults);\n this.entriesBefore = [];\n this.entriesAfter = [];\n this.reflection = services.shared.AstReflection;\n }\n /**\n * Register a set of validation checks. Each value in the record can be either a single validation check (i.e. a function)\n * or an array of validation checks.\n *\n * @param checksRecord Set of validation checks to register.\n * @param thisObj Optional object to be used as `this` when calling the validation check functions.\n * @param category Optional category for the validation checks (defaults to `'fast'`).\n */\n register(checksRecord, thisObj = this, category = \"fast\") {\n if (category === \"built-in\") {\n throw new Error(\"The 'built-in' category is reserved for lexer, parser, and linker errors.\");\n }\n this.knownCategories.add(category);\n for (const [type, ch] of Object.entries(checksRecord)) {\n const callbacks = ch;\n if (Array.isArray(callbacks)) {\n for (const check of callbacks) {\n const entry = {\n check: this.wrapValidationException(check, thisObj),\n category\n };\n this.addEntry(type, entry);\n }\n } else if (typeof callbacks === \"function\") {\n const entry = {\n check: this.wrapValidationException(callbacks, thisObj),\n category\n };\n this.addEntry(type, entry);\n } else {\n assertUnreachable(callbacks);\n }\n }\n }\n wrapValidationException(check, thisObj) {\n return async (node, accept, cancelToken) => {\n await this.handleException(() => check.call(thisObj, node, accept, cancelToken), \"An error occurred during validation\", accept, node);\n };\n }\n async handleException(functionality, messageContext, accept, node) {\n try {\n await functionality();\n } catch (err) {\n if (isOperationCancelled(err)) {\n throw err;\n }\n console.error(`${messageContext}:`, err);\n if (err instanceof Error && err.stack) {\n console.error(err.stack);\n }\n const messageDetails = err instanceof Error ? err.message : String(err);\n accept(\"error\", `${messageContext}: ${messageDetails}`, { node });\n }\n }\n addEntry(type, entry) {\n if (type === \"AstNode\") {\n this.entries.add(\"AstNode\", entry);\n return;\n }\n for (const subtype of this.reflection.getAllSubTypes(type)) {\n this.entries.add(subtype, entry);\n }\n }\n getChecks(type, categories) {\n let checks = stream(this.entries.get(type)).concat(this.entries.get(\"AstNode\"));\n if (categories) {\n checks = checks.filter((entry) => categories.includes(entry.category));\n }\n return checks.map((entry) => entry.check);\n }\n /**\n * Register logic which will be executed once before validating all the nodes of an AST/Langium document.\n * This helps to prepare or initialize some information which are required or reusable for the following checks on the AstNodes.\n *\n * As an example, for validating unique fully-qualified names of nodes in the AST,\n * here the map for mapping names to nodes could be established.\n * During the usual checks on the nodes, they are put into this map with their name.\n *\n * Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation.\n * Therefore it is recommended to clear stored information\n * _before_ validating an AST to validate each AST unaffected from other ASTs\n * AND _after_ validating the AST to free memory by information which are no longer used.\n *\n * @param checkBefore a set-up function which will be called once before actually validating an AST\n * @param thisObj Optional object to be used as `this` when calling the validation check functions.\n */\n registerBeforeDocument(checkBefore, thisObj = this) {\n this.entriesBefore.push(this.wrapPreparationException(checkBefore, \"An error occurred during set-up of the validation\", thisObj));\n }\n /**\n * Register logic which will be executed once after validating all the nodes of an AST/Langium document.\n * This helps to finally evaluate information which are collected during the checks on the AstNodes.\n *\n * As an example, for validating unique fully-qualified names of nodes in the AST,\n * here the map with all the collected nodes and their names is checked\n * and validation hints are created for all nodes with the same name.\n *\n * Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation.\n * Therefore it is recommended to clear stored information\n * _before_ validating an AST to validate each AST unaffected from other ASTs\n * AND _after_ validating the AST to free memory by information which are no longer used.\n *\n * @param checkBefore a set-up function which will be called once before actually validating an AST\n * @param thisObj Optional object to be used as `this` when calling the validation check functions.\n */\n registerAfterDocument(checkAfter, thisObj = this) {\n this.entriesAfter.push(this.wrapPreparationException(checkAfter, \"An error occurred during tear-down of the validation\", thisObj));\n }\n wrapPreparationException(check, messageContext, thisObj) {\n return async (rootNode, accept, categories, cancelToken) => {\n await this.handleException(() => check.call(thisObj, rootNode, accept, categories, cancelToken), messageContext, accept, rootNode);\n };\n }\n get checksBefore() {\n return this.entriesBefore;\n }\n get checksAfter() {\n return this.entriesAfter;\n }\n getAllValidationCategories(_document) {\n return this.knownCategories;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/validation/document-validator.js\nvar VALIDATE_EACH_NODE = Object.freeze({\n validateNode: true,\n validateChildren: true\n});\nvar DefaultDocumentValidator = class {\n static {\n __name(this, \"DefaultDocumentValidator\");\n }\n constructor(services) {\n this.validationRegistry = services.validation.ValidationRegistry;\n this.metadata = services.LanguageMetaData;\n this.profiler = services.shared.profilers.LangiumProfiler;\n this.languageId = services.LanguageMetaData.languageId;\n }\n async validateDocument(document, options = {}, cancelToken = cancellation_exports.CancellationToken.None) {\n const parseResult = document.parseResult;\n const diagnostics = [];\n await interruptAndCheck(cancelToken);\n if (!options.categories || options.categories.includes(\"built-in\")) {\n this.processLexingErrors(parseResult, diagnostics, options);\n if (options.stopAfterLexingErrors && diagnostics.some((d) => d.data?.code === DocumentValidator.LexingError)) {\n return diagnostics;\n }\n this.processParsingErrors(parseResult, diagnostics, options);\n if (options.stopAfterParsingErrors && diagnostics.some((d) => d.data?.code === DocumentValidator.ParsingError)) {\n return diagnostics;\n }\n this.processLinkingErrors(document, diagnostics, options);\n if (options.stopAfterLinkingErrors && diagnostics.some((d) => d.data?.code === DocumentValidator.LinkingError)) {\n return diagnostics;\n }\n }\n try {\n diagnostics.push(...await this.validateAst(parseResult.value, options, cancelToken));\n } catch (err) {\n if (isOperationCancelled(err)) {\n throw err;\n }\n console.error(\"An error occurred during validation:\", err);\n }\n await interruptAndCheck(cancelToken);\n return diagnostics;\n }\n processLexingErrors(parseResult, diagnostics, _options) {\n const lexerDiagnostics = [...parseResult.lexerErrors, ...parseResult.lexerReport?.diagnostics ?? []];\n for (const lexerDiagnostic of lexerDiagnostics) {\n const severity = lexerDiagnostic.severity ?? \"error\";\n const diagnostic = {\n severity: toDiagnosticSeverity(severity),\n range: {\n start: {\n line: lexerDiagnostic.line - 1,\n character: lexerDiagnostic.column - 1\n },\n end: {\n line: lexerDiagnostic.line - 1,\n character: lexerDiagnostic.column + lexerDiagnostic.length - 1\n }\n },\n message: lexerDiagnostic.message,\n data: toDiagnosticData(severity),\n source: this.getSource()\n };\n diagnostics.push(diagnostic);\n }\n }\n processParsingErrors(parseResult, diagnostics, _options) {\n for (const parserError of parseResult.parserErrors) {\n let range = void 0;\n if (isNaN(parserError.token.startOffset)) {\n if (\"previousToken\" in parserError) {\n const token = parserError.previousToken;\n if (!isNaN(token.startOffset)) {\n const position = { line: token.endLine - 1, character: token.endColumn };\n range = { start: position, end: position };\n } else {\n const position = { line: 0, character: 0 };\n range = { start: position, end: position };\n }\n }\n } else {\n range = tokenToRange(parserError.token);\n }\n if (range) {\n const diagnostic = {\n severity: toDiagnosticSeverity(\"error\"),\n range,\n message: parserError.message,\n data: diagnosticData(DocumentValidator.ParsingError),\n source: this.getSource()\n };\n diagnostics.push(diagnostic);\n }\n }\n }\n processLinkingErrors(document, diagnostics, _options) {\n for (const reference of document.references) {\n const linkingError = reference.error;\n if (linkingError) {\n const info = {\n node: linkingError.info.container,\n range: reference.$refNode?.range,\n property: linkingError.info.property,\n index: linkingError.info.index,\n data: {\n code: DocumentValidator.LinkingError,\n containerType: linkingError.info.container.$type,\n property: linkingError.info.property,\n refText: linkingError.info.reference.$refText\n }\n };\n diagnostics.push(this.toDiagnostic(\"error\", linkingError.message, info));\n }\n }\n }\n async validateAst(rootNode, options, cancelToken = cancellation_exports.CancellationToken.None) {\n const validationItems = [];\n const acceptor = /* @__PURE__ */ __name((severity, message, info) => {\n validationItems.push(this.toDiagnostic(severity, message, info));\n }, \"acceptor\");\n await this.validateAstBefore(rootNode, options, acceptor, cancelToken);\n await this.validateAstNodes(rootNode, options, acceptor, cancelToken);\n await this.validateAstAfter(rootNode, options, acceptor, cancelToken);\n return validationItems;\n }\n async validateAstBefore(rootNode, options, acceptor, cancelToken = cancellation_exports.CancellationToken.None) {\n const checksBefore = this.validationRegistry.checksBefore;\n for (const checkBefore of checksBefore) {\n await interruptAndCheck(cancelToken);\n await checkBefore(rootNode, acceptor, options.categories ?? [], cancelToken);\n }\n }\n async validateAstNodes(rootNode, options, acceptor, cancelToken = cancellation_exports.CancellationToken.None) {\n if (this.profiler?.isActive(\"validating\")) {\n const task = this.profiler.createTask(\"validating\", this.languageId);\n task.start();\n try {\n const nodes = streamAst(rootNode).iterator();\n for (const node of nodes) {\n task.startSubTask(node.$type);\n const nodeOptions = this.validateSingleNodeOptions(node, options);\n if (nodeOptions.validateNode) {\n try {\n const checks = this.validationRegistry.getChecks(node.$type, options.categories);\n for (const check of checks) {\n await check(node, acceptor, cancelToken);\n }\n } finally {\n task.stopSubTask(node.$type);\n }\n }\n if (!nodeOptions.validateChildren) {\n nodes.prune();\n }\n }\n } finally {\n task.stop();\n }\n } else {\n const nodes = streamAst(rootNode).iterator();\n for (const node of nodes) {\n await interruptAndCheck(cancelToken);\n const nodeOptions = this.validateSingleNodeOptions(node, options);\n if (nodeOptions.validateNode) {\n const checks = this.validationRegistry.getChecks(node.$type, options.categories);\n for (const check of checks) {\n await check(node, acceptor, cancelToken);\n }\n }\n if (!nodeOptions.validateChildren) {\n nodes.prune();\n }\n }\n }\n }\n validateSingleNodeOptions(_node, _options) {\n return VALIDATE_EACH_NODE;\n }\n async validateAstAfter(rootNode, options, acceptor, cancelToken = cancellation_exports.CancellationToken.None) {\n const checksAfter = this.validationRegistry.checksAfter;\n for (const checkAfter of checksAfter) {\n await interruptAndCheck(cancelToken);\n await checkAfter(rootNode, acceptor, options.categories ?? [], cancelToken);\n }\n }\n toDiagnostic(severity, message, info) {\n return {\n message,\n range: getDiagnosticRange(info),\n severity: toDiagnosticSeverity(severity),\n code: info.code,\n codeDescription: info.codeDescription,\n tags: info.tags,\n relatedInformation: info.relatedInformation,\n data: info.data,\n source: this.getSource()\n };\n }\n getSource() {\n return this.metadata.languageId;\n }\n};\nfunction getDiagnosticRange(info) {\n if (info.range) {\n return info.range;\n }\n let cstNode;\n if (typeof info.property === \"string\") {\n cstNode = findNodeForProperty(info.node.$cstNode, info.property, info.index);\n } else if (typeof info.keyword === \"string\") {\n cstNode = findNodeForKeyword(info.node.$cstNode, info.keyword, info.index);\n }\n cstNode ?? (cstNode = info.node.$cstNode);\n if (!cstNode) {\n return {\n start: { line: 0, character: 0 },\n end: { line: 0, character: 0 }\n };\n }\n return cstNode.range;\n}\n__name(getDiagnosticRange, \"getDiagnosticRange\");\nfunction toDiagnosticSeverity(severity) {\n switch (severity) {\n case \"error\":\n return 1;\n case \"warning\":\n return 2;\n case \"info\":\n return 3;\n case \"hint\":\n return 4;\n default:\n throw new Error(\"Invalid diagnostic severity: \" + severity);\n }\n}\n__name(toDiagnosticSeverity, \"toDiagnosticSeverity\");\nfunction toDiagnosticData(severity) {\n switch (severity) {\n case \"error\":\n return diagnosticData(DocumentValidator.LexingError);\n case \"warning\":\n return diagnosticData(DocumentValidator.LexingWarning);\n case \"info\":\n return diagnosticData(DocumentValidator.LexingInfo);\n case \"hint\":\n return diagnosticData(DocumentValidator.LexingHint);\n default:\n throw new Error(\"Invalid diagnostic severity: \" + severity);\n }\n}\n__name(toDiagnosticData, \"toDiagnosticData\");\nvar DocumentValidator;\n(function(DocumentValidator2) {\n DocumentValidator2.LexingError = \"lexing-error\";\n DocumentValidator2.LexingWarning = \"lexing-warning\";\n DocumentValidator2.LexingInfo = \"lexing-info\";\n DocumentValidator2.LexingHint = \"lexing-hint\";\n DocumentValidator2.ParsingError = \"parsing-error\";\n DocumentValidator2.LinkingError = \"linking-error\";\n})(DocumentValidator || (DocumentValidator = {}));\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/ast-descriptions.js\nvar DefaultAstNodeDescriptionProvider = class {\n static {\n __name(this, \"DefaultAstNodeDescriptionProvider\");\n }\n constructor(services) {\n this.astNodeLocator = services.workspace.AstNodeLocator;\n this.nameProvider = services.references.NameProvider;\n }\n createDescription(node, name, document) {\n const doc = document ?? getDocument(node);\n name ?? (name = this.nameProvider.getName(node));\n const path = this.astNodeLocator.getAstNodePath(node);\n if (!name) {\n throw new Error(`Node at path ${path} has no name.`);\n }\n let nameNodeSegment;\n const nameSegmentGetter = /* @__PURE__ */ __name(() => nameNodeSegment ?? (nameNodeSegment = toDocumentSegment(this.nameProvider.getNameNode(node) ?? node.$cstNode)), \"nameSegmentGetter\");\n return {\n node,\n name,\n get nameSegment() {\n return nameSegmentGetter();\n },\n selectionSegment: toDocumentSegment(node.$cstNode),\n type: node.$type,\n documentUri: doc.uri,\n path\n };\n }\n};\nvar DefaultReferenceDescriptionProvider = class {\n static {\n __name(this, \"DefaultReferenceDescriptionProvider\");\n }\n constructor(services) {\n this.nodeLocator = services.workspace.AstNodeLocator;\n }\n async createDescriptions(document, cancelToken = cancellation_exports.CancellationToken.None) {\n const descr = [];\n const rootNode = document.parseResult.value;\n for (const astNode of streamAst(rootNode)) {\n await interruptAndCheck(cancelToken);\n streamReferences(astNode).forEach((refInfo) => {\n if (!refInfo.reference.error) {\n descr.push(...this.createInfoDescriptions(refInfo));\n }\n });\n }\n return descr;\n }\n createInfoDescriptions(refInfo) {\n const reference = refInfo.reference;\n if (reference.error || !reference.$refNode) {\n return [];\n }\n let items = [];\n if (isReference(reference) && reference.$nodeDescription) {\n items = [reference.$nodeDescription];\n } else if (isMultiReference(reference)) {\n items = reference.items.map((e) => e.$nodeDescription).filter((e) => e !== void 0);\n }\n const sourceUri = getDocument(refInfo.container).uri;\n const sourcePath = this.nodeLocator.getAstNodePath(refInfo.container);\n const descriptions = [];\n const segment = toDocumentSegment(reference.$refNode);\n for (const item of items) {\n descriptions.push({\n sourceUri,\n sourcePath,\n targetUri: item.documentUri,\n targetPath: item.path,\n segment,\n local: UriUtils.equals(item.documentUri, sourceUri)\n });\n }\n return descriptions;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/ast-node-locator.js\nvar DefaultAstNodeLocator = class {\n static {\n __name(this, \"DefaultAstNodeLocator\");\n }\n constructor() {\n this.segmentSeparator = \"/\";\n this.indexSeparator = \"@\";\n }\n getAstNodePath(node) {\n if (node.$container) {\n const containerPath = this.getAstNodePath(node.$container);\n const newSegment = this.getPathSegment(node);\n const nodePath = containerPath + this.segmentSeparator + newSegment;\n return nodePath;\n }\n return \"\";\n }\n getPathSegment({ $containerProperty, $containerIndex }) {\n if (!$containerProperty) {\n throw new Error(\"Missing '$containerProperty' in AST node.\");\n }\n if ($containerIndex !== void 0) {\n return $containerProperty + this.indexSeparator + $containerIndex;\n }\n return $containerProperty;\n }\n getAstNode(node, path) {\n const segments = path.split(this.segmentSeparator);\n return segments.reduce((previousValue, currentValue) => {\n if (!previousValue || currentValue.length === 0) {\n return previousValue;\n }\n const propertyIndex = currentValue.indexOf(this.indexSeparator);\n if (propertyIndex > 0) {\n const property3 = currentValue.substring(0, propertyIndex);\n const arrayIndex = parseInt(currentValue.substring(propertyIndex + 1));\n const array = previousValue[property3];\n return array?.[arrayIndex];\n }\n return previousValue[currentValue];\n }, node);\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/event.js\nvar event_exports = {};\n__reExport(event_exports, __toESM(require_events(), 1));\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/configuration.js\nvar DefaultConfigurationProvider = class {\n static {\n __name(this, \"DefaultConfigurationProvider\");\n }\n constructor(services) {\n this._ready = new Deferred();\n this.onConfigurationSectionUpdateEmitter = new event_exports.Emitter();\n this.settings = {};\n this.workspaceConfig = false;\n this.serviceRegistry = services.ServiceRegistry;\n }\n get ready() {\n return this._ready.promise;\n }\n initialize(params) {\n this.workspaceConfig = params.capabilities.workspace?.configuration ?? false;\n }\n async initialized(params) {\n if (this.workspaceConfig) {\n if (params.register) {\n const languages = this.serviceRegistry.all;\n params.register({\n // Listen to configuration changes for all languages\n section: languages.map((lang) => this.toSectionName(lang.LanguageMetaData.languageId))\n });\n }\n if (params.fetchConfiguration) {\n const configToUpdate = this.serviceRegistry.all.map((lang) => ({\n // Fetch the configuration changes for all languages\n section: this.toSectionName(lang.LanguageMetaData.languageId)\n }));\n const configs = await params.fetchConfiguration(configToUpdate);\n configToUpdate.forEach((conf, idx) => {\n this.updateSectionConfiguration(conf.section, configs[idx]);\n });\n }\n }\n this._ready.resolve();\n }\n /**\n * Updates the cached configurations using the `change` notification parameters.\n *\n * @param change The parameters of a change configuration notification.\n * `settings` property of the change object could be expressed as `Record>`\n */\n updateConfiguration(change) {\n if (typeof change.settings !== \"object\" || change.settings === null) {\n return;\n }\n Object.entries(change.settings).forEach(([section, configuration]) => {\n this.updateSectionConfiguration(section, configuration);\n this.onConfigurationSectionUpdateEmitter.fire({ section, configuration });\n });\n }\n updateSectionConfiguration(section, configuration) {\n this.settings[section] = configuration;\n }\n /**\n * Returns a configuration value stored for the given language.\n *\n * @param language The language id\n * @param configuration Configuration name\n */\n async getConfiguration(language, configuration) {\n await this.ready;\n const sectionName = this.toSectionName(language);\n if (this.settings[sectionName]) {\n return this.settings[sectionName][configuration];\n }\n }\n toSectionName(languageId) {\n return `${languageId}`;\n }\n get onConfigurationSectionUpdate() {\n return this.onConfigurationSectionUpdateEmitter.event;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/document-builder.js\nvar import_vscode_languageserver_protocol = __toESM(require_main2(), 1);\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/disposable.js\nvar Disposable;\n(function(Disposable2) {\n function create(callback) {\n return {\n dispose: /* @__PURE__ */ __name(async () => await callback(), \"dispose\")\n };\n }\n __name(create, \"create\");\n Disposable2.create = create;\n})(Disposable || (Disposable = {}));\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/document-builder.js\nvar DefaultDocumentBuilder = class {\n static {\n __name(this, \"DefaultDocumentBuilder\");\n }\n constructor(services) {\n this.updateBuildOptions = {\n // Default: run only the built-in validation checks and those in the _fast_ category (includes those without category)\n validation: {\n categories: [\"built-in\", \"fast\"]\n }\n };\n this.updateListeners = [];\n this.buildPhaseListeners = new MultiMap();\n this.documentPhaseListeners = new MultiMap();\n this.buildState = /* @__PURE__ */ new Map();\n this.documentBuildWaiters = /* @__PURE__ */ new Map();\n this.currentState = DocumentState.Changed;\n this.langiumDocuments = services.workspace.LangiumDocuments;\n this.langiumDocumentFactory = services.workspace.LangiumDocumentFactory;\n this.textDocuments = services.workspace.TextDocuments;\n this.indexManager = services.workspace.IndexManager;\n this.fileSystemProvider = services.workspace.FileSystemProvider;\n this.workspaceManager = () => services.workspace.WorkspaceManager;\n this.serviceRegistry = services.ServiceRegistry;\n }\n async build(documents, options = {}, cancelToken = cancellation_exports.CancellationToken.None) {\n for (const document of documents) {\n const key = document.uri.toString();\n if (document.state === DocumentState.Validated) {\n if (typeof options.validation === \"boolean\" && options.validation) {\n this.resetToState(document, DocumentState.IndexedReferences);\n } else if (typeof options.validation === \"object\") {\n const categories = this.findMissingValidationCategories(document, options);\n if (categories.length > 0) {\n this.buildState.set(key, {\n completed: false,\n options: {\n validation: {\n categories\n }\n },\n result: this.buildState.get(key)?.result\n });\n document.state = DocumentState.IndexedReferences;\n }\n }\n } else {\n this.buildState.delete(key);\n }\n }\n this.currentState = DocumentState.Changed;\n await this.emitUpdate(documents.map((e) => e.uri), []);\n await this.buildDocuments(documents, options, cancelToken);\n }\n async update(changed, deleted, cancelToken = cancellation_exports.CancellationToken.None) {\n this.currentState = DocumentState.Changed;\n const deletedUris = [];\n for (const deletedUri of deleted) {\n const deletedDocs = this.langiumDocuments.deleteDocuments(deletedUri);\n for (const doc of deletedDocs) {\n deletedUris.push(doc.uri);\n this.cleanUpDeleted(doc);\n }\n }\n const changedUris = (await Promise.all(changed.map((uri) => this.findChangedUris(uri)))).flat();\n for (const changedUri of changedUris) {\n let changedDocument = this.langiumDocuments.getDocument(changedUri);\n if (changedDocument === void 0) {\n changedDocument = this.langiumDocumentFactory.fromModel({ $type: \"INVALID\" }, changedUri);\n changedDocument.state = DocumentState.Changed;\n this.langiumDocuments.addDocument(changedDocument);\n }\n this.resetToState(changedDocument, DocumentState.Changed);\n }\n const allChangedUris = stream(changedUris).concat(deletedUris).map((uri) => uri.toString()).toSet();\n this.langiumDocuments.all.filter((doc) => !allChangedUris.has(doc.uri.toString()) && this.shouldRelink(doc, allChangedUris)).forEach((doc) => this.resetToState(doc, DocumentState.ComputedScopes));\n await this.emitUpdate(changedUris, deletedUris);\n await interruptAndCheck(cancelToken);\n const rebuildDocuments = this.sortDocuments(this.langiumDocuments.all.filter((doc) => (\n // This includes those that were reported as changed and those that we selected for relinking\n doc.state < DocumentState.Validated || !this.buildState.get(doc.uri.toString())?.completed || this.resultsAreIncomplete(doc, this.updateBuildOptions)\n )).toArray());\n await this.buildDocuments(rebuildDocuments, this.updateBuildOptions, cancelToken);\n }\n resultsAreIncomplete(document, options) {\n return this.findMissingValidationCategories(document, options).length >= 1;\n }\n findMissingValidationCategories(document, options) {\n const state = this.buildState.get(document.uri.toString());\n const allCategories = this.serviceRegistry.getServices(document.uri).validation.ValidationRegistry.getAllValidationCategories(document);\n const executedCategories = state?.result?.validationChecks ? new Set(state?.result?.validationChecks) : state?.completed ? allCategories : /* @__PURE__ */ new Set();\n const requestedCategories = options === void 0 || options.validation === true ? allCategories : typeof options.validation === \"object\" ? options.validation.categories ?? allCategories : [];\n return stream(requestedCategories).filter((requested) => !executedCategories.has(requested)).toArray();\n }\n async findChangedUris(changed) {\n const document = this.langiumDocuments.getDocument(changed) ?? this.textDocuments?.get(changed);\n if (document) {\n return [changed];\n }\n try {\n const stat = await this.fileSystemProvider.stat(changed);\n if (stat.isDirectory) {\n const uris = await this.workspaceManager().searchFolder(changed);\n return uris;\n } else if (this.workspaceManager().shouldIncludeEntry(stat)) {\n return [changed];\n }\n } catch {\n }\n return [];\n }\n async emitUpdate(changed, deleted) {\n await Promise.all(this.updateListeners.map((listener) => listener(changed, deleted)));\n }\n /**\n * Sort the given documents by priority. By default, documents with an open text document are prioritized.\n * This is useful to ensure that visible documents show their diagnostics before all other documents.\n *\n * This improves the responsiveness in large workspaces as users usually don't care about diagnostics\n * in files that are currently not opened in the editor.\n */\n sortDocuments(documents) {\n let left = 0;\n let right = documents.length - 1;\n while (left < right) {\n while (left < documents.length && this.hasTextDocument(documents[left])) {\n left++;\n }\n while (right >= 0 && !this.hasTextDocument(documents[right])) {\n right--;\n }\n if (left < right) {\n [documents[left], documents[right]] = [documents[right], documents[left]];\n }\n }\n return documents;\n }\n hasTextDocument(doc) {\n return Boolean(this.textDocuments?.get(doc.uri));\n }\n /**\n * Check whether the given document should be relinked after changes were found in the given URIs.\n */\n shouldRelink(document, changedUris) {\n if (document.references.some((ref) => ref.error !== void 0)) {\n return true;\n }\n return this.indexManager.isAffected(document, changedUris);\n }\n onUpdate(callback) {\n this.updateListeners.push(callback);\n return Disposable.create(() => {\n const index = this.updateListeners.indexOf(callback);\n if (index >= 0) {\n this.updateListeners.splice(index, 1);\n }\n });\n }\n resetToState(document, state) {\n switch (state) {\n case DocumentState.Changed: {\n }\n case DocumentState.Parsed:\n this.indexManager.removeContent(document.uri);\n // Fall through\n case DocumentState.IndexedContent:\n document.localSymbols = void 0;\n // Fall through\n case DocumentState.ComputedScopes: {\n const linker = this.serviceRegistry.getServices(document.uri).references.Linker;\n linker.unlink(document);\n }\n case DocumentState.Linked:\n this.indexManager.removeReferences(document.uri);\n // Fall through\n case DocumentState.IndexedReferences:\n document.diagnostics = void 0;\n this.buildState.delete(document.uri.toString());\n // Fall through\n case DocumentState.Validated:\n }\n if (document.state > state) {\n document.state = state;\n }\n }\n cleanUpDeleted(document) {\n this.buildState.delete(document.uri.toString());\n this.indexManager.remove(document.uri);\n document.state = DocumentState.Changed;\n }\n /**\n * Build the given documents by stepping through all build phases. If a document's state indicates\n * that a certain build phase is already done, the phase is skipped for that document.\n *\n * @param documents The documents to build.\n * @param options the {@link BuildOptions} to use.\n * @param cancelToken A cancellation token that can be used to cancel the build.\n * @returns A promise that resolves when the build is done.\n */\n async buildDocuments(documents, options, cancelToken) {\n this.prepareBuild(documents, options);\n await this.runCancelable(documents, DocumentState.Parsed, cancelToken, (doc) => this.langiumDocumentFactory.update(doc, cancelToken));\n await this.runCancelable(documents, DocumentState.IndexedContent, cancelToken, (doc) => this.indexManager.updateContent(doc, cancelToken));\n await this.runCancelable(documents, DocumentState.ComputedScopes, cancelToken, async (doc) => {\n const scopeComputation = this.serviceRegistry.getServices(doc.uri).references.ScopeComputation;\n doc.localSymbols = await scopeComputation.collectLocalSymbols(doc, cancelToken);\n });\n const toBeLinked = documents.filter((doc) => this.shouldLink(doc));\n await this.runCancelable(toBeLinked, DocumentState.Linked, cancelToken, (doc) => {\n const linker = this.serviceRegistry.getServices(doc.uri).references.Linker;\n return linker.link(doc, cancelToken);\n });\n await this.runCancelable(toBeLinked, DocumentState.IndexedReferences, cancelToken, (doc) => this.indexManager.updateReferences(doc, cancelToken));\n const toBeValidated = documents.filter((doc) => {\n if (this.shouldValidate(doc)) {\n return true;\n } else {\n this.markAsCompleted(doc);\n return false;\n }\n });\n await this.runCancelable(toBeValidated, DocumentState.Validated, cancelToken, async (doc) => {\n await this.validate(doc, cancelToken);\n this.markAsCompleted(doc);\n });\n }\n markAsCompleted(document) {\n const state = this.buildState.get(document.uri.toString());\n if (state) {\n state.completed = true;\n }\n }\n /**\n * Runs prior to beginning the build process to update the {@link DocumentBuildState} for each document\n *\n * @param documents collection of documents to be built\n * @param options the {@link BuildOptions} to use\n */\n prepareBuild(documents, options) {\n for (const doc of documents) {\n const key = doc.uri.toString();\n const state = this.buildState.get(key);\n if (!state || state.completed) {\n this.buildState.set(key, {\n completed: false,\n options,\n result: state?.result\n });\n } else {\n }\n }\n }\n /**\n * Runs a cancelable operation on a set of documents to bring them to a specified {@link DocumentState}.\n *\n * @param documents The array of documents to process.\n * @param targetState The target {@link DocumentState} to bring the documents to.\n * @param cancelToken A token that can be used to cancel the operation.\n * @param callback A function to be called for each document.\n * @returns A promise that resolves when all documents have been processed or the operation is canceled.\n * @throws Will throw `OperationCancelled` if the operation is canceled via a `CancellationToken`.\n */\n async runCancelable(documents, targetState, cancelToken, callback) {\n for (const document of documents) {\n if (document.state < targetState) {\n await interruptAndCheck(cancelToken);\n await callback(document);\n document.state = targetState;\n await this.notifyDocumentPhase(document, targetState, cancelToken);\n }\n }\n const targetStateDocs = documents.filter((doc) => doc.state === targetState);\n await this.notifyBuildPhase(targetStateDocs, targetState, cancelToken);\n this.currentState = targetState;\n }\n onBuildPhase(targetState, callback) {\n this.buildPhaseListeners.add(targetState, callback);\n return Disposable.create(() => {\n this.buildPhaseListeners.delete(targetState, callback);\n });\n }\n onDocumentPhase(targetState, callback) {\n this.documentPhaseListeners.add(targetState, callback);\n return Disposable.create(() => {\n this.documentPhaseListeners.delete(targetState, callback);\n });\n }\n waitUntil(state, uriOrToken, cancelToken) {\n let uri = void 0;\n if (uriOrToken && \"path\" in uriOrToken) {\n uri = uriOrToken;\n } else {\n cancelToken = uriOrToken;\n }\n cancelToken ?? (cancelToken = cancellation_exports.CancellationToken.None);\n if (uri) {\n return this.awaitDocumentState(state, uri, cancelToken);\n } else {\n return this.awaitBuilderState(state, cancelToken);\n }\n }\n awaitDocumentState(state, uri, cancelToken) {\n const document = this.langiumDocuments.getDocument(uri);\n if (!document) {\n return Promise.reject(new import_vscode_languageserver_protocol.ResponseError(import_vscode_languageserver_protocol.LSPErrorCodes.ServerCancelled, `No document found for URI: ${uri.toString()}`));\n } else if (document.state >= state) {\n return Promise.resolve(uri);\n } else if (cancelToken.isCancellationRequested) {\n return Promise.reject(OperationCancelled);\n } else if (this.currentState >= state && state > document.state) {\n return Promise.reject(new import_vscode_languageserver_protocol.ResponseError(import_vscode_languageserver_protocol.LSPErrorCodes.RequestFailed, `Document state of ${uri.toString()} is ${DocumentState[document.state]}, requiring ${DocumentState[state]}, but workspace state is already ${DocumentState[this.currentState]}. Returning undefined.`));\n }\n return new Promise((resolve, reject2) => {\n const buildDisposable = this.onDocumentPhase(state, (doc) => {\n if (UriUtils.equals(doc.uri, uri)) {\n buildDisposable.dispose();\n cancelDisposable.dispose();\n resolve(doc.uri);\n }\n });\n const cancelDisposable = cancelToken.onCancellationRequested(() => {\n buildDisposable.dispose();\n cancelDisposable.dispose();\n reject2(OperationCancelled);\n });\n });\n }\n awaitBuilderState(state, cancelToken) {\n if (this.currentState >= state) {\n return Promise.resolve();\n } else if (cancelToken.isCancellationRequested) {\n return Promise.reject(OperationCancelled);\n }\n return new Promise((resolve, reject2) => {\n const buildDisposable = this.onBuildPhase(state, () => {\n buildDisposable.dispose();\n cancelDisposable.dispose();\n resolve();\n });\n const cancelDisposable = cancelToken.onCancellationRequested(() => {\n buildDisposable.dispose();\n cancelDisposable.dispose();\n reject2(OperationCancelled);\n });\n });\n }\n async notifyDocumentPhase(document, state, cancelToken) {\n const listeners = this.documentPhaseListeners.get(state);\n const listenersCopy = listeners.slice();\n for (const listener of listenersCopy) {\n try {\n await interruptAndCheck(cancelToken);\n await listener(document, cancelToken);\n } catch (err) {\n if (!isOperationCancelled(err)) {\n throw err;\n }\n }\n }\n }\n async notifyBuildPhase(documents, state, cancelToken) {\n if (documents.length === 0) {\n return;\n }\n const listeners = this.buildPhaseListeners.get(state);\n const listenersCopy = listeners.slice();\n for (const listener of listenersCopy) {\n await interruptAndCheck(cancelToken);\n await listener(documents, cancelToken);\n }\n }\n /**\n * Determine whether the given document should be linked during a build. The default\n * implementation checks the `eagerLinking` property of the build options. If it's set to `true`\n * or `undefined`, the document is included in the linking phase. This also affects the\n * references indexing phase, which depends on eager linking.\n */\n shouldLink(document) {\n return this.getBuildOptions(document).eagerLinking ?? true;\n }\n /**\n * Determine whether the given document should be validated during a build. The default\n * implementation checks the `validation` property of the build options. If it's set to `true`\n * or a `ValidationOptions` object, the document is included in the validation phase.\n */\n shouldValidate(document) {\n return Boolean(this.getBuildOptions(document).validation);\n }\n /**\n * Run validation checks on the given document and store the resulting diagnostics in the document.\n * If the document already contains diagnostics, the new ones are added to the list.\n */\n async validate(document, cancelToken) {\n const validator = this.serviceRegistry.getServices(document.uri).validation.DocumentValidator;\n const options = this.getBuildOptions(document);\n const validationOptions = typeof options.validation === \"object\" ? { ...options.validation } : {};\n validationOptions.categories = this.findMissingValidationCategories(document, options);\n const diagnostics = await validator.validateDocument(document, validationOptions, cancelToken);\n if (document.diagnostics) {\n document.diagnostics.push(...diagnostics);\n } else {\n document.diagnostics = diagnostics;\n }\n const state = this.buildState.get(document.uri.toString());\n if (state) {\n state.result ?? (state.result = {});\n if (state.result.validationChecks) {\n state.result.validationChecks = stream(state.result.validationChecks).concat(validationOptions.categories).distinct().toArray();\n } else {\n state.result.validationChecks = [...validationOptions.categories];\n }\n }\n }\n getBuildOptions(document) {\n return this.buildState.get(document.uri.toString())?.options ?? {};\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/index-manager.js\nvar DefaultIndexManager = class {\n static {\n __name(this, \"DefaultIndexManager\");\n }\n constructor(services) {\n this.symbolIndex = /* @__PURE__ */ new Map();\n this.symbolByTypeIndex = new ContextCache();\n this.referenceIndex = /* @__PURE__ */ new Map();\n this.documents = services.workspace.LangiumDocuments;\n this.serviceRegistry = services.ServiceRegistry;\n this.astReflection = services.AstReflection;\n }\n findAllReferences(targetNode, astNodePath) {\n const targetDocUri = getDocument(targetNode).uri;\n const result = [];\n this.referenceIndex.forEach((docRefs) => {\n docRefs.forEach((refDescr) => {\n if (UriUtils.equals(refDescr.targetUri, targetDocUri) && refDescr.targetPath === astNodePath) {\n result.push(refDescr);\n }\n });\n });\n return stream(result);\n }\n allElements(nodeType, uris) {\n let documentUris = stream(this.symbolIndex.keys());\n if (uris) {\n documentUris = documentUris.filter((uri) => !uris || uris.has(uri));\n }\n return documentUris.map((uri) => this.getFileDescriptions(uri, nodeType)).flat();\n }\n getFileDescriptions(uri, nodeType) {\n if (!nodeType) {\n return this.symbolIndex.get(uri) ?? [];\n }\n const descriptions = this.symbolByTypeIndex.get(uri, nodeType, () => {\n const allFileDescriptions = this.symbolIndex.get(uri) ?? [];\n return allFileDescriptions.filter((e) => this.astReflection.isSubtype(e.type, nodeType));\n });\n return descriptions;\n }\n remove(uri) {\n this.removeContent(uri);\n this.removeReferences(uri);\n }\n removeContent(uri) {\n const uriString = uri.toString();\n this.symbolIndex.delete(uriString);\n this.symbolByTypeIndex.clear(uriString);\n }\n removeReferences(uri) {\n const uriString = uri.toString();\n this.referenceIndex.delete(uriString);\n }\n async updateContent(document, cancelToken = cancellation_exports.CancellationToken.None) {\n const services = this.serviceRegistry.getServices(document.uri);\n const exports2 = await services.references.ScopeComputation.collectExportedSymbols(document, cancelToken);\n const uri = document.uri.toString();\n this.symbolIndex.set(uri, exports2);\n this.symbolByTypeIndex.clear(uri);\n }\n async updateReferences(document, cancelToken = cancellation_exports.CancellationToken.None) {\n const services = this.serviceRegistry.getServices(document.uri);\n const indexData = await services.workspace.ReferenceDescriptionProvider.createDescriptions(document, cancelToken);\n this.referenceIndex.set(document.uri.toString(), indexData);\n }\n isAffected(document, changedUris) {\n const references = this.referenceIndex.get(document.uri.toString());\n if (!references) {\n return false;\n }\n return references.some((ref) => !ref.local && changedUris.has(ref.targetUri.toString()));\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/workspace-manager.js\nvar DefaultWorkspaceManager = class {\n static {\n __name(this, \"DefaultWorkspaceManager\");\n }\n constructor(services) {\n this.initialBuildOptions = {};\n this._ready = new Deferred();\n this.serviceRegistry = services.ServiceRegistry;\n this.langiumDocuments = services.workspace.LangiumDocuments;\n this.documentBuilder = services.workspace.DocumentBuilder;\n this.fileSystemProvider = services.workspace.FileSystemProvider;\n this.mutex = services.workspace.WorkspaceLock;\n }\n get ready() {\n return this._ready.promise;\n }\n get workspaceFolders() {\n return this.folders;\n }\n initialize(params) {\n this.folders = params.workspaceFolders ?? void 0;\n }\n initialized(_params) {\n return this.mutex.write((token) => this.initializeWorkspace(this.folders ?? [], token));\n }\n async initializeWorkspace(folders, cancelToken = cancellation_exports.CancellationToken.None) {\n const documents = await this.performStartup(folders);\n await interruptAndCheck(cancelToken);\n await this.documentBuilder.build(documents, this.initialBuildOptions, cancelToken);\n }\n /**\n * Performs the uninterruptable startup sequence of the workspace manager.\n * This methods loads all documents in the workspace and other documents and returns them.\n */\n async performStartup(folders) {\n const documents = [];\n const collector = /* @__PURE__ */ __name((document) => {\n documents.push(document);\n if (!this.langiumDocuments.hasDocument(document.uri)) {\n this.langiumDocuments.addDocument(document);\n }\n }, \"collector\");\n await this.loadAdditionalDocuments(folders, collector);\n const uris = [];\n await Promise.all(folders.map((wf) => this.getRootFolder(wf)).map(async (entry) => this.traverseFolder(entry, uris)));\n const uniqueUris = stream(uris).distinct((uri) => uri.toString()).filter((uri) => !this.langiumDocuments.hasDocument(uri));\n await this.loadWorkspaceDocuments(uniqueUris, collector);\n this._ready.resolve();\n return documents;\n }\n async loadWorkspaceDocuments(uris, collector) {\n await Promise.all(uris.map(async (uri) => {\n const document = await this.langiumDocuments.getOrCreateDocument(uri);\n collector(document);\n }));\n }\n /**\n * Load all additional documents that shall be visible in the context of the given workspace\n * folders and add them to the collector. This can be used to include built-in libraries of\n * your language, which can be either loaded from provided files or constructed in memory.\n */\n loadAdditionalDocuments(_folders, _collector) {\n return Promise.resolve();\n }\n /**\n * Determine the root folder of the source documents in the given workspace folder.\n * The default implementation returns the URI of the workspace folder, but you can override\n * this to return a subfolder like `src` instead.\n */\n getRootFolder(workspaceFolder) {\n return URI2.parse(workspaceFolder.uri);\n }\n /**\n * Traverse the file system folder identified by the given URI and its subfolders. All\n * contained files that match the file extensions are added to the `uris` array.\n */\n async traverseFolder(folderPath, uris) {\n try {\n const content = await this.fileSystemProvider.readDirectory(folderPath);\n await Promise.all(content.map(async (entry) => {\n if (this.shouldIncludeEntry(entry)) {\n if (entry.isDirectory) {\n await this.traverseFolder(entry.uri, uris);\n } else if (entry.isFile) {\n uris.push(entry.uri);\n }\n }\n }));\n } catch (e) {\n console.error(\"Failure to read directory content of \" + folderPath.toString(true), e);\n }\n }\n async searchFolder(uri) {\n const uris = [];\n await this.traverseFolder(uri, uris);\n return uris;\n }\n /**\n * Determine whether the given folder entry shall be included while indexing the workspace.\n */\n shouldIncludeEntry(entry) {\n const name = UriUtils.basename(entry.uri);\n if (name.startsWith(\".\")) {\n return false;\n }\n if (entry.isDirectory) {\n return name !== \"node_modules\" && name !== \"out\";\n } else if (entry.isFile) {\n return this.serviceRegistry.hasServices(entry.uri);\n }\n return false;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/lexer.js\nvar DefaultLexerErrorMessageProvider = class {\n static {\n __name(this, \"DefaultLexerErrorMessageProvider\");\n }\n buildUnexpectedCharactersMessage(fullText, startOffset, length, line, column) {\n return defaultLexerErrorProvider.buildUnexpectedCharactersMessage(fullText, startOffset, length, line, column);\n }\n buildUnableToPopLexerModeMessage(token) {\n return defaultLexerErrorProvider.buildUnableToPopLexerModeMessage(token);\n }\n};\nvar DEFAULT_TOKENIZE_OPTIONS = { mode: \"full\" };\nvar DefaultLexer = class {\n static {\n __name(this, \"DefaultLexer\");\n }\n constructor(services) {\n this.errorMessageProvider = services.parser.LexerErrorMessageProvider;\n this.tokenBuilder = services.parser.TokenBuilder;\n const tokens = this.tokenBuilder.buildTokens(services.Grammar, {\n caseInsensitive: services.LanguageMetaData.caseInsensitive\n });\n this.tokenTypes = this.toTokenTypeDictionary(tokens);\n const lexerTokens = isTokenTypeDictionary(tokens) ? Object.values(tokens) : tokens;\n const production = services.LanguageMetaData.mode === \"production\";\n this.chevrotainLexer = new Lexer(lexerTokens, {\n positionTracking: \"full\",\n skipValidations: production,\n errorMessageProvider: this.errorMessageProvider\n });\n }\n get definition() {\n return this.tokenTypes;\n }\n tokenize(text, _options = DEFAULT_TOKENIZE_OPTIONS) {\n const chevrotainResult = this.chevrotainLexer.tokenize(text);\n return {\n tokens: chevrotainResult.tokens,\n errors: chevrotainResult.errors,\n hidden: chevrotainResult.groups.hidden ?? [],\n report: this.tokenBuilder.flushLexingReport?.(text)\n };\n }\n toTokenTypeDictionary(buildTokens) {\n if (isTokenTypeDictionary(buildTokens))\n return buildTokens;\n const tokens = isIMultiModeLexerDefinition(buildTokens) ? Object.values(buildTokens.modes).flat() : buildTokens;\n const res = {};\n tokens.forEach((token) => res[token.name] = token);\n return res;\n }\n};\nfunction isTokenTypeArray(tokenVocabulary) {\n return Array.isArray(tokenVocabulary) && (tokenVocabulary.length === 0 || \"name\" in tokenVocabulary[0]);\n}\n__name(isTokenTypeArray, \"isTokenTypeArray\");\nfunction isIMultiModeLexerDefinition(tokenVocabulary) {\n return tokenVocabulary && \"modes\" in tokenVocabulary && \"defaultMode\" in tokenVocabulary;\n}\n__name(isIMultiModeLexerDefinition, \"isIMultiModeLexerDefinition\");\nfunction isTokenTypeDictionary(tokenVocabulary) {\n return !isTokenTypeArray(tokenVocabulary) && !isIMultiModeLexerDefinition(tokenVocabulary);\n}\n__name(isTokenTypeDictionary, \"isTokenTypeDictionary\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/documentation/jsdoc.js\ninit_main();\nfunction parseJSDoc(node, start, options) {\n let opts;\n let position;\n if (typeof node === \"string\") {\n position = start;\n opts = options;\n } else {\n position = node.range.start;\n opts = start;\n }\n if (!position) {\n position = Position.create(0, 0);\n }\n const lines = getLines(node);\n const normalizedOptions = normalizeOptions(opts);\n const tokens = tokenize({\n lines,\n position,\n options: normalizedOptions\n });\n return parseJSDocComment({\n index: 0,\n tokens,\n position\n });\n}\n__name(parseJSDoc, \"parseJSDoc\");\nfunction isJSDoc(node, options) {\n const normalizedOptions = normalizeOptions(options);\n const lines = getLines(node);\n if (lines.length === 0) {\n return false;\n }\n const first2 = lines[0];\n const last2 = lines[lines.length - 1];\n const firstRegex = normalizedOptions.start;\n const lastRegex = normalizedOptions.end;\n return Boolean(firstRegex?.exec(first2)) && Boolean(lastRegex?.exec(last2));\n}\n__name(isJSDoc, \"isJSDoc\");\nfunction getLines(node) {\n let content = \"\";\n if (typeof node === \"string\") {\n content = node;\n } else {\n content = node.text;\n }\n const lines = content.split(NEWLINE_REGEXP);\n return lines;\n}\n__name(getLines, \"getLines\");\nvar tagRegex = /\\s*(@([\\p{L}][\\p{L}\\p{N}]*)?)/uy;\nvar inlineTagRegex = /\\{(@[\\p{L}][\\p{L}\\p{N}]*)(\\s*)([^\\r\\n}]+)?\\}/gu;\nfunction tokenize(context) {\n const tokens = [];\n let currentLine = context.position.line;\n let currentCharacter = context.position.character;\n for (let i = 0; i < context.lines.length; i++) {\n const first2 = i === 0;\n const last2 = i === context.lines.length - 1;\n let line = context.lines[i];\n let index = 0;\n if (first2 && context.options.start) {\n const match = context.options.start?.exec(line);\n if (match) {\n index = match.index + match[0].length;\n }\n } else {\n const match = context.options.line?.exec(line);\n if (match) {\n index = match.index + match[0].length;\n }\n }\n if (last2) {\n const match = context.options.end?.exec(line);\n if (match) {\n line = line.substring(0, match.index);\n }\n }\n line = line.substring(0, lastCharacter(line));\n const whitespaceEnd = skipWhitespace(line, index);\n if (whitespaceEnd >= line.length) {\n if (tokens.length > 0) {\n const position = Position.create(currentLine, currentCharacter);\n tokens.push({\n type: \"break\",\n content: \"\",\n range: Range.create(position, position)\n });\n }\n } else {\n tagRegex.lastIndex = index;\n const tagMatch = tagRegex.exec(line);\n if (tagMatch) {\n const fullMatch = tagMatch[0];\n const value = tagMatch[1];\n const start = Position.create(currentLine, currentCharacter + index);\n const end = Position.create(currentLine, currentCharacter + index + fullMatch.length);\n tokens.push({\n type: \"tag\",\n content: value,\n range: Range.create(start, end)\n });\n index += fullMatch.length;\n index = skipWhitespace(line, index);\n }\n if (index < line.length) {\n const rest = line.substring(index);\n const inlineTagMatches = Array.from(rest.matchAll(inlineTagRegex));\n tokens.push(...buildInlineTokens(inlineTagMatches, rest, currentLine, currentCharacter + index));\n }\n }\n currentLine++;\n currentCharacter = 0;\n }\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"break\") {\n return tokens.slice(0, -1);\n }\n return tokens;\n}\n__name(tokenize, \"tokenize\");\nfunction buildInlineTokens(tags, line, lineIndex, characterIndex) {\n const tokens = [];\n if (tags.length === 0) {\n const start = Position.create(lineIndex, characterIndex);\n const end = Position.create(lineIndex, characterIndex + line.length);\n tokens.push({\n type: \"text\",\n content: line,\n range: Range.create(start, end)\n });\n } else {\n let lastIndex = 0;\n for (const match of tags) {\n const matchIndex = match.index;\n const startContent = line.substring(lastIndex, matchIndex);\n if (startContent.length > 0) {\n tokens.push({\n type: \"text\",\n content: line.substring(lastIndex, matchIndex),\n range: Range.create(Position.create(lineIndex, lastIndex + characterIndex), Position.create(lineIndex, matchIndex + characterIndex))\n });\n }\n let offset = startContent.length + 1;\n const tagName = match[1];\n tokens.push({\n type: \"inline-tag\",\n content: tagName,\n range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + tagName.length + characterIndex))\n });\n offset += tagName.length;\n if (match.length === 4) {\n offset += match[2].length;\n const value = match[3];\n tokens.push({\n type: \"text\",\n content: value,\n range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + value.length + characterIndex))\n });\n } else {\n tokens.push({\n type: \"text\",\n content: \"\",\n range: Range.create(Position.create(lineIndex, lastIndex + offset + characterIndex), Position.create(lineIndex, lastIndex + offset + characterIndex))\n });\n }\n lastIndex = matchIndex + match[0].length;\n }\n const endContent = line.substring(lastIndex);\n if (endContent.length > 0) {\n tokens.push({\n type: \"text\",\n content: endContent,\n range: Range.create(Position.create(lineIndex, lastIndex + characterIndex), Position.create(lineIndex, lastIndex + characterIndex + endContent.length))\n });\n }\n }\n return tokens;\n}\n__name(buildInlineTokens, \"buildInlineTokens\");\nvar nonWhitespaceRegex = /\\S/;\nvar whitespaceEndRegex = /\\s*$/;\nfunction skipWhitespace(line, index) {\n const match = line.substring(index).match(nonWhitespaceRegex);\n if (match) {\n return index + match.index;\n } else {\n return line.length;\n }\n}\n__name(skipWhitespace, \"skipWhitespace\");\nfunction lastCharacter(line) {\n const match = line.match(whitespaceEndRegex);\n if (match && typeof match.index === \"number\") {\n return match.index;\n }\n return void 0;\n}\n__name(lastCharacter, \"lastCharacter\");\nfunction parseJSDocComment(context) {\n const startPosition = Position.create(context.position.line, context.position.character);\n if (context.tokens.length === 0) {\n return new JSDocCommentImpl([], Range.create(startPosition, startPosition));\n }\n const elements = [];\n while (context.index < context.tokens.length) {\n const element = parseJSDocElement(context, elements[elements.length - 1]);\n if (element) {\n elements.push(element);\n }\n }\n const start = elements[0]?.range.start ?? startPosition;\n const end = elements[elements.length - 1]?.range.end ?? startPosition;\n return new JSDocCommentImpl(elements, Range.create(start, end));\n}\n__name(parseJSDocComment, \"parseJSDocComment\");\nfunction parseJSDocElement(context, last2) {\n const next = context.tokens[context.index];\n if (next.type === \"tag\") {\n return parseJSDocTag(context, false);\n } else if (next.type === \"text\" || next.type === \"inline-tag\") {\n return parseJSDocText(context);\n } else {\n appendEmptyLine(next, last2);\n context.index++;\n return void 0;\n }\n}\n__name(parseJSDocElement, \"parseJSDocElement\");\nfunction appendEmptyLine(token, element) {\n if (element) {\n const line = new JSDocLineImpl(\"\", token.range);\n if (\"inlines\" in element) {\n element.inlines.push(line);\n } else {\n element.content.inlines.push(line);\n }\n }\n}\n__name(appendEmptyLine, \"appendEmptyLine\");\nfunction parseJSDocText(context) {\n let token = context.tokens[context.index];\n const firstToken = token;\n let lastToken = token;\n const lines = [];\n while (token && token.type !== \"break\" && token.type !== \"tag\") {\n lines.push(parseJSDocInline(context));\n lastToken = token;\n token = context.tokens[context.index];\n }\n return new JSDocTextImpl(lines, Range.create(firstToken.range.start, lastToken.range.end));\n}\n__name(parseJSDocText, \"parseJSDocText\");\nfunction parseJSDocInline(context) {\n const token = context.tokens[context.index];\n if (token.type === \"inline-tag\") {\n return parseJSDocTag(context, true);\n } else {\n return parseJSDocLine(context);\n }\n}\n__name(parseJSDocInline, \"parseJSDocInline\");\nfunction parseJSDocTag(context, inline) {\n const tagToken = context.tokens[context.index++];\n const name = tagToken.content.substring(1);\n const nextToken = context.tokens[context.index];\n if (nextToken?.type === \"text\") {\n if (inline) {\n const docLine = parseJSDocLine(context);\n return new JSDocTagImpl(name, new JSDocTextImpl([docLine], docLine.range), inline, Range.create(tagToken.range.start, docLine.range.end));\n } else {\n const textDoc = parseJSDocText(context);\n return new JSDocTagImpl(name, textDoc, inline, Range.create(tagToken.range.start, textDoc.range.end));\n }\n } else {\n const range = tagToken.range;\n return new JSDocTagImpl(name, new JSDocTextImpl([], range), inline, range);\n }\n}\n__name(parseJSDocTag, \"parseJSDocTag\");\nfunction parseJSDocLine(context) {\n const token = context.tokens[context.index++];\n return new JSDocLineImpl(token.content, token.range);\n}\n__name(parseJSDocLine, \"parseJSDocLine\");\nfunction normalizeOptions(options) {\n if (!options) {\n return normalizeOptions({\n start: \"/**\",\n end: \"*/\",\n line: \"*\"\n });\n }\n const { start, end, line } = options;\n return {\n start: normalizeOption(start, true),\n end: normalizeOption(end, false),\n line: normalizeOption(line, true)\n };\n}\n__name(normalizeOptions, \"normalizeOptions\");\nfunction normalizeOption(option2, start) {\n if (typeof option2 === \"string\" || typeof option2 === \"object\") {\n const escaped = typeof option2 === \"string\" ? escapeRegExp(option2) : option2.source;\n if (start) {\n return new RegExp(`^\\\\s*${escaped}`);\n } else {\n return new RegExp(`\\\\s*${escaped}\\\\s*$`);\n }\n } else {\n return option2;\n }\n}\n__name(normalizeOption, \"normalizeOption\");\nvar JSDocCommentImpl = class {\n static {\n __name(this, \"JSDocCommentImpl\");\n }\n constructor(elements, range) {\n this.elements = elements;\n this.range = range;\n }\n getTag(name) {\n return this.getAllTags().find((e) => e.name === name);\n }\n getTags(name) {\n return this.getAllTags().filter((e) => e.name === name);\n }\n getAllTags() {\n return this.elements.filter((e) => \"name\" in e);\n }\n toString() {\n let value = \"\";\n for (const element of this.elements) {\n if (value.length === 0) {\n value = element.toString();\n } else {\n const text = element.toString();\n value += fillNewlines(value) + text;\n }\n }\n return value.trim();\n }\n toMarkdown(options) {\n let value = \"\";\n for (const element of this.elements) {\n if (value.length === 0) {\n value = element.toMarkdown(options);\n } else {\n const text = element.toMarkdown(options);\n value += fillNewlines(value) + text;\n }\n }\n return value.trim();\n }\n};\nvar JSDocTagImpl = class {\n static {\n __name(this, \"JSDocTagImpl\");\n }\n constructor(name, content, inline, range) {\n this.name = name;\n this.content = content;\n this.inline = inline;\n this.range = range;\n }\n toString() {\n let text = `@${this.name}`;\n const content = this.content.toString();\n if (this.content.inlines.length === 1) {\n text = `${text} ${content}`;\n } else if (this.content.inlines.length > 1) {\n text = `${text}\n${content}`;\n }\n if (this.inline) {\n return `{${text}}`;\n } else {\n return text;\n }\n }\n toMarkdown(options) {\n return options?.renderTag?.(this) ?? this.toMarkdownDefault(options);\n }\n toMarkdownDefault(options) {\n const content = this.content.toMarkdown(options);\n if (this.inline) {\n const rendered = renderInlineTag(this.name, content, options ?? {});\n if (typeof rendered === \"string\") {\n return rendered;\n }\n }\n let marker = \"\";\n if (options?.tag === \"italic\" || options?.tag === void 0) {\n marker = \"*\";\n } else if (options?.tag === \"bold\") {\n marker = \"**\";\n } else if (options?.tag === \"bold-italic\") {\n marker = \"***\";\n }\n let text = `${marker}@${this.name}${marker}`;\n if (this.content.inlines.length === 1) {\n text = `${text} \\u2014 ${content}`;\n } else if (this.content.inlines.length > 1) {\n text = `${text}\n${content}`;\n }\n if (this.inline) {\n return `{${text}}`;\n } else {\n return text;\n }\n }\n};\nfunction renderInlineTag(tag, content, options) {\n if (tag === \"linkplain\" || tag === \"linkcode\" || tag === \"link\") {\n const index = content.indexOf(\" \");\n let display = content;\n if (index > 0) {\n const displayStart = skipWhitespace(content, index);\n display = content.substring(displayStart);\n content = content.substring(0, index);\n }\n if (tag === \"linkcode\" || tag === \"link\" && options.link === \"code\") {\n display = `\\`${display}\\``;\n }\n const renderedLink = options.renderLink?.(content, display) ?? renderLinkDefault(content, display);\n return renderedLink;\n }\n return void 0;\n}\n__name(renderInlineTag, \"renderInlineTag\");\nfunction renderLinkDefault(content, display) {\n try {\n URI2.parse(content, true);\n return `[${display}](${content})`;\n } catch {\n return content;\n }\n}\n__name(renderLinkDefault, \"renderLinkDefault\");\nvar JSDocTextImpl = class {\n static {\n __name(this, \"JSDocTextImpl\");\n }\n constructor(lines, range) {\n this.inlines = lines;\n this.range = range;\n }\n toString() {\n let text = \"\";\n for (let i = 0; i < this.inlines.length; i++) {\n const inline = this.inlines[i];\n const next = this.inlines[i + 1];\n text += inline.toString();\n if (next && next.range.start.line > inline.range.start.line) {\n text += \"\\n\";\n }\n }\n return text;\n }\n toMarkdown(options) {\n let text = \"\";\n for (let i = 0; i < this.inlines.length; i++) {\n const inline = this.inlines[i];\n const next = this.inlines[i + 1];\n text += inline.toMarkdown(options);\n if (next && next.range.start.line > inline.range.start.line) {\n text += \"\\n\";\n }\n }\n return text;\n }\n};\nvar JSDocLineImpl = class {\n static {\n __name(this, \"JSDocLineImpl\");\n }\n constructor(text, range) {\n this.text = text;\n this.range = range;\n }\n toString() {\n return this.text;\n }\n toMarkdown() {\n return this.text;\n }\n};\nfunction fillNewlines(text) {\n if (text.endsWith(\"\\n\")) {\n return \"\\n\";\n } else {\n return \"\\n\\n\";\n }\n}\n__name(fillNewlines, \"fillNewlines\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/documentation/documentation-provider.js\nvar JSDocDocumentationProvider = class {\n static {\n __name(this, \"JSDocDocumentationProvider\");\n }\n constructor(services) {\n this.indexManager = services.shared.workspace.IndexManager;\n this.commentProvider = services.documentation.CommentProvider;\n }\n getDocumentation(node) {\n const comment = this.commentProvider.getComment(node);\n if (comment && isJSDoc(comment)) {\n const parsedJSDoc = parseJSDoc(comment);\n return parsedJSDoc.toMarkdown({\n renderLink: /* @__PURE__ */ __name((link, display) => {\n return this.documentationLinkRenderer(node, link, display);\n }, \"renderLink\"),\n renderTag: /* @__PURE__ */ __name((tag) => {\n return this.documentationTagRenderer(node, tag);\n }, \"renderTag\")\n });\n }\n return void 0;\n }\n documentationLinkRenderer(node, name, display) {\n const description = this.findNameInLocalSymbols(node, name) ?? this.findNameInGlobalScope(node, name);\n if (description && description.nameSegment) {\n const line = description.nameSegment.range.start.line + 1;\n const character = description.nameSegment.range.start.character + 1;\n const uri = description.documentUri.with({ fragment: `L${line},${character}` });\n return `[${display}](${uri.toString()})`;\n } else {\n return void 0;\n }\n }\n documentationTagRenderer(_node, _tag) {\n return void 0;\n }\n findNameInLocalSymbols(node, name) {\n const document = getDocument(node);\n const precomputed = document.localSymbols;\n if (!precomputed) {\n return void 0;\n }\n let currentNode = node;\n do {\n const allDescriptions = precomputed.getStream(currentNode);\n const description = allDescriptions.find((e) => e.name === name);\n if (description) {\n return description;\n }\n currentNode = currentNode.$container;\n } while (currentNode);\n return void 0;\n }\n findNameInGlobalScope(node, name) {\n const description = this.indexManager.allElements().find((e) => e.name === name);\n return description;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/documentation/comment-provider.js\nvar DefaultCommentProvider = class {\n static {\n __name(this, \"DefaultCommentProvider\");\n }\n constructor(services) {\n this.grammarConfig = () => services.parser.GrammarConfig;\n }\n getComment(node) {\n if (isAstNodeWithComment(node)) {\n return node.$comment;\n }\n return findCommentNode(node.$cstNode, this.grammarConfig().multilineCommentRules)?.text;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/async-parser.js\nvar DefaultAsyncParser = class {\n static {\n __name(this, \"DefaultAsyncParser\");\n }\n constructor(services) {\n this.syncParser = services.parser.LangiumParser;\n }\n parse(text, _cancelToken) {\n return Promise.resolve(this.syncParser.parse(text));\n }\n};\nvar AbstractThreadedAsyncParser = class {\n static {\n __name(this, \"AbstractThreadedAsyncParser\");\n }\n constructor(services) {\n this.threadCount = 8;\n this.terminationDelay = 200;\n this.workerPool = [];\n this.queue = [];\n this.hydrator = services.serializer.Hydrator;\n }\n initializeWorkers() {\n while (this.workerPool.length < this.threadCount) {\n const worker = this.createWorker();\n worker.onReady(() => {\n if (this.queue.length > 0) {\n const deferred = this.queue.shift();\n if (deferred) {\n worker.lock();\n deferred.resolve(worker);\n }\n }\n });\n this.workerPool.push(worker);\n }\n }\n async parse(text, cancelToken) {\n const worker = await this.acquireParserWorker(cancelToken);\n const deferred = new Deferred();\n let timeout;\n const cancellation = cancelToken.onCancellationRequested(() => {\n timeout = setTimeout(() => {\n this.terminateWorker(worker);\n }, this.terminationDelay);\n });\n worker.parse(text).then((result) => {\n const hydrated = this.hydrator.hydrate(result);\n deferred.resolve(hydrated);\n }).catch((err) => {\n deferred.reject(err);\n }).finally(() => {\n cancellation.dispose();\n clearTimeout(timeout);\n });\n return deferred.promise;\n }\n terminateWorker(worker) {\n worker.terminate();\n const index = this.workerPool.indexOf(worker);\n if (index >= 0) {\n this.workerPool.splice(index, 1);\n }\n }\n async acquireParserWorker(cancelToken) {\n this.initializeWorkers();\n for (const worker of this.workerPool) {\n if (worker.ready) {\n worker.lock();\n return worker;\n }\n }\n const deferred = new Deferred();\n cancelToken.onCancellationRequested(() => {\n const index = this.queue.indexOf(deferred);\n if (index >= 0) {\n this.queue.splice(index, 1);\n }\n deferred.reject(OperationCancelled);\n });\n this.queue.push(deferred);\n return deferred.promise;\n }\n};\nvar ParserWorker = class {\n static {\n __name(this, \"ParserWorker\");\n }\n get ready() {\n return this._ready;\n }\n get onReady() {\n return this.onReadyEmitter.event;\n }\n constructor(sendMessage, onMessage, onError, terminate) {\n this.onReadyEmitter = new event_exports.Emitter();\n this.deferred = new Deferred();\n this._ready = true;\n this._parsing = false;\n this.sendMessage = sendMessage;\n this._terminate = terminate;\n onMessage((result) => {\n const parseResult = result;\n this.deferred.resolve(parseResult);\n this.unlock();\n });\n onError((error) => {\n this.deferred.reject(error);\n this.unlock();\n });\n }\n terminate() {\n this.deferred.reject(OperationCancelled);\n this._terminate();\n }\n lock() {\n this._ready = false;\n }\n unlock() {\n this._parsing = false;\n this._ready = true;\n this.onReadyEmitter.fire();\n }\n parse(text) {\n if (this._parsing) {\n throw new Error(\"Parser worker is busy\");\n }\n this._parsing = true;\n this.deferred = new Deferred();\n this.sendMessage(text);\n return this.deferred.promise;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/workspace-lock.js\nvar DefaultWorkspaceLock = class {\n static {\n __name(this, \"DefaultWorkspaceLock\");\n }\n constructor() {\n this.previousTokenSource = new cancellation_exports.CancellationTokenSource();\n this.writeQueue = [];\n this.readQueue = [];\n this.done = true;\n }\n write(action) {\n this.cancelWrite();\n const tokenSource = startCancelableOperation();\n this.previousTokenSource = tokenSource;\n return this.enqueue(this.writeQueue, action, tokenSource.token);\n }\n read(action) {\n return this.enqueue(this.readQueue, action);\n }\n enqueue(queue, action, cancellationToken = cancellation_exports.CancellationToken.None) {\n const deferred = new Deferred();\n const entry = {\n action,\n deferred,\n cancellationToken\n };\n queue.push(entry);\n this.performNextOperation();\n return deferred.promise;\n }\n async performNextOperation() {\n if (!this.done) {\n return;\n }\n const entries = [];\n if (this.writeQueue.length > 0) {\n entries.push(this.writeQueue.shift());\n } else if (this.readQueue.length > 0) {\n entries.push(...this.readQueue.splice(0, this.readQueue.length));\n } else {\n return;\n }\n this.done = false;\n await Promise.all(entries.map(async ({ action, deferred, cancellationToken }) => {\n try {\n const result = await Promise.resolve().then(() => action(cancellationToken));\n deferred.resolve(result);\n } catch (err) {\n if (isOperationCancelled(err)) {\n deferred.resolve(void 0);\n } else {\n deferred.reject(err);\n }\n }\n }));\n this.done = true;\n this.performNextOperation();\n }\n cancelWrite() {\n this.previousTokenSource.cancel();\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/serializer/hydrator.js\nvar DefaultHydrator = class {\n static {\n __name(this, \"DefaultHydrator\");\n }\n constructor(services) {\n this.grammarElementIdMap = new BiMap();\n this.tokenTypeIdMap = new BiMap();\n this.grammar = services.Grammar;\n this.lexer = services.parser.Lexer;\n this.linker = services.references.Linker;\n }\n dehydrate(result) {\n return {\n lexerErrors: result.lexerErrors,\n lexerReport: result.lexerReport ? this.dehydrateLexerReport(result.lexerReport) : void 0,\n // We need to create shallow copies of the errors\n // The original errors inherit from the `Error` class, which is not transferable across worker threads\n parserErrors: result.parserErrors.map((e) => ({ ...e, message: e.message })),\n value: this.dehydrateAstNode(result.value, this.createDehyrationContext(result.value))\n };\n }\n dehydrateLexerReport(lexerReport) {\n return lexerReport;\n }\n createDehyrationContext(node) {\n const astNodes = /* @__PURE__ */ new Map();\n const cstNodes = /* @__PURE__ */ new Map();\n for (const astNode of streamAst(node)) {\n astNodes.set(astNode, {});\n }\n if (node.$cstNode) {\n for (const cstNode of streamCst(node.$cstNode)) {\n cstNodes.set(cstNode, {});\n }\n }\n return {\n astNodes,\n cstNodes\n };\n }\n dehydrateAstNode(node, context) {\n const obj = context.astNodes.get(node);\n obj.$type = node.$type;\n obj.$containerIndex = node.$containerIndex;\n obj.$containerProperty = node.$containerProperty;\n if (node.$cstNode !== void 0) {\n obj.$cstNode = this.dehydrateCstNode(node.$cstNode, context);\n }\n for (const [name, value] of Object.entries(node)) {\n if (name.startsWith(\"$\")) {\n continue;\n }\n if (Array.isArray(value)) {\n const arr = [];\n obj[name] = arr;\n for (const item of value) {\n if (isAstNode(item)) {\n arr.push(this.dehydrateAstNode(item, context));\n } else if (isReference(item)) {\n arr.push(this.dehydrateReference(item, context));\n } else {\n arr.push(item);\n }\n }\n } else if (isAstNode(value)) {\n obj[name] = this.dehydrateAstNode(value, context);\n } else if (isReference(value)) {\n obj[name] = this.dehydrateReference(value, context);\n } else if (value !== void 0) {\n obj[name] = value;\n }\n }\n return obj;\n }\n dehydrateReference(reference, context) {\n const obj = {};\n obj.$refText = reference.$refText;\n if (reference.$refNode) {\n obj.$refNode = context.cstNodes.get(reference.$refNode);\n }\n return obj;\n }\n dehydrateCstNode(node, context) {\n const cstNode = context.cstNodes.get(node);\n if (isRootCstNode(node)) {\n cstNode.fullText = node.fullText;\n } else {\n cstNode.grammarSource = this.getGrammarElementId(node.grammarSource);\n }\n cstNode.hidden = node.hidden;\n cstNode.astNode = context.astNodes.get(node.astNode);\n if (isCompositeCstNode(node)) {\n cstNode.content = node.content.map((child) => this.dehydrateCstNode(child, context));\n } else if (isLeafCstNode(node)) {\n cstNode.tokenType = node.tokenType.name;\n cstNode.offset = node.offset;\n cstNode.length = node.length;\n cstNode.startLine = node.range.start.line;\n cstNode.startColumn = node.range.start.character;\n cstNode.endLine = node.range.end.line;\n cstNode.endColumn = node.range.end.character;\n }\n return cstNode;\n }\n hydrate(result) {\n const node = result.value;\n const context = this.createHydrationContext(node);\n if (\"$cstNode\" in node) {\n this.hydrateCstNode(node.$cstNode, context);\n }\n return {\n lexerErrors: result.lexerErrors,\n lexerReport: result.lexerReport,\n parserErrors: result.parserErrors,\n value: this.hydrateAstNode(node, context)\n };\n }\n createHydrationContext(node) {\n const astNodes = /* @__PURE__ */ new Map();\n const cstNodes = /* @__PURE__ */ new Map();\n for (const astNode of streamAst(node)) {\n astNodes.set(astNode, {});\n }\n let root3;\n if (node.$cstNode) {\n for (const cstNode of streamCst(node.$cstNode)) {\n let cst;\n if (\"fullText\" in cstNode) {\n cst = new RootCstNodeImpl(cstNode.fullText);\n root3 = cst;\n } else if (\"content\" in cstNode) {\n cst = new CompositeCstNodeImpl();\n } else if (\"tokenType\" in cstNode) {\n cst = this.hydrateCstLeafNode(cstNode);\n }\n if (cst) {\n cstNodes.set(cstNode, cst);\n cst.root = root3;\n }\n }\n }\n return {\n astNodes,\n cstNodes\n };\n }\n hydrateAstNode(node, context) {\n const astNode = context.astNodes.get(node);\n astNode.$type = node.$type;\n astNode.$containerIndex = node.$containerIndex;\n astNode.$containerProperty = node.$containerProperty;\n if (node.$cstNode) {\n astNode.$cstNode = context.cstNodes.get(node.$cstNode);\n }\n for (const [name, value] of Object.entries(node)) {\n if (name.startsWith(\"$\")) {\n continue;\n }\n if (Array.isArray(value)) {\n const arr = [];\n astNode[name] = arr;\n for (const item of value) {\n if (isAstNode(item)) {\n arr.push(this.setParent(this.hydrateAstNode(item, context), astNode));\n } else if (isReference(item)) {\n arr.push(this.hydrateReference(item, astNode, name, context));\n } else {\n arr.push(item);\n }\n }\n } else if (isAstNode(value)) {\n astNode[name] = this.setParent(this.hydrateAstNode(value, context), astNode);\n } else if (isReference(value)) {\n astNode[name] = this.hydrateReference(value, astNode, name, context);\n } else if (value !== void 0) {\n astNode[name] = value;\n }\n }\n return astNode;\n }\n setParent(node, parent) {\n node.$container = parent;\n return node;\n }\n hydrateReference(reference, node, name, context) {\n return this.linker.buildReference(node, name, context.cstNodes.get(reference.$refNode), reference.$refText);\n }\n hydrateCstNode(cstNode, context, num = 0) {\n const cstNodeObj = context.cstNodes.get(cstNode);\n if (typeof cstNode.grammarSource === \"number\") {\n cstNodeObj.grammarSource = this.getGrammarElement(cstNode.grammarSource);\n }\n cstNodeObj.astNode = context.astNodes.get(cstNode.astNode);\n if (isCompositeCstNode(cstNodeObj)) {\n for (const child of cstNode.content) {\n const hydrated = this.hydrateCstNode(child, context, num++);\n cstNodeObj.content.push(hydrated);\n }\n }\n return cstNodeObj;\n }\n hydrateCstLeafNode(cstNode) {\n const tokenType = this.getTokenType(cstNode.tokenType);\n const offset = cstNode.offset;\n const length = cstNode.length;\n const startLine = cstNode.startLine;\n const startColumn = cstNode.startColumn;\n const endLine = cstNode.endLine;\n const endColumn = cstNode.endColumn;\n const hidden = cstNode.hidden;\n const node = new LeafCstNodeImpl(offset, length, {\n start: {\n line: startLine,\n character: startColumn\n },\n end: {\n line: endLine,\n character: endColumn\n }\n }, tokenType, hidden);\n return node;\n }\n getTokenType(name) {\n return this.lexer.definition[name];\n }\n getGrammarElementId(node) {\n if (!node) {\n return void 0;\n }\n if (this.grammarElementIdMap.size === 0) {\n this.createGrammarElementIdMap();\n }\n return this.grammarElementIdMap.get(node);\n }\n getGrammarElement(id) {\n if (this.grammarElementIdMap.size === 0) {\n this.createGrammarElementIdMap();\n }\n const element = this.grammarElementIdMap.getKey(id);\n return element;\n }\n createGrammarElementIdMap() {\n let id = 0;\n for (const element of streamAst(this.grammar)) {\n if (isAbstractElement(element)) {\n this.grammarElementIdMap.set(element, id++);\n }\n }\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/default-module.js\nfunction createDefaultCoreModule(context) {\n return {\n documentation: {\n CommentProvider: /* @__PURE__ */ __name((services) => new DefaultCommentProvider(services), \"CommentProvider\"),\n DocumentationProvider: /* @__PURE__ */ __name((services) => new JSDocDocumentationProvider(services), \"DocumentationProvider\")\n },\n parser: {\n AsyncParser: /* @__PURE__ */ __name((services) => new DefaultAsyncParser(services), \"AsyncParser\"),\n GrammarConfig: /* @__PURE__ */ __name((services) => createGrammarConfig(services), \"GrammarConfig\"),\n LangiumParser: /* @__PURE__ */ __name((services) => createLangiumParser(services), \"LangiumParser\"),\n CompletionParser: /* @__PURE__ */ __name((services) => createCompletionParser(services), \"CompletionParser\"),\n ValueConverter: /* @__PURE__ */ __name(() => new DefaultValueConverter(), \"ValueConverter\"),\n TokenBuilder: /* @__PURE__ */ __name(() => new DefaultTokenBuilder(), \"TokenBuilder\"),\n Lexer: /* @__PURE__ */ __name((services) => new DefaultLexer(services), \"Lexer\"),\n ParserErrorMessageProvider: /* @__PURE__ */ __name(() => new LangiumParserErrorMessageProvider(), \"ParserErrorMessageProvider\"),\n LexerErrorMessageProvider: /* @__PURE__ */ __name(() => new DefaultLexerErrorMessageProvider(), \"LexerErrorMessageProvider\")\n },\n workspace: {\n AstNodeLocator: /* @__PURE__ */ __name(() => new DefaultAstNodeLocator(), \"AstNodeLocator\"),\n AstNodeDescriptionProvider: /* @__PURE__ */ __name((services) => new DefaultAstNodeDescriptionProvider(services), \"AstNodeDescriptionProvider\"),\n ReferenceDescriptionProvider: /* @__PURE__ */ __name((services) => new DefaultReferenceDescriptionProvider(services), \"ReferenceDescriptionProvider\")\n },\n references: {\n Linker: /* @__PURE__ */ __name((services) => new DefaultLinker(services), \"Linker\"),\n NameProvider: /* @__PURE__ */ __name(() => new DefaultNameProvider(), \"NameProvider\"),\n ScopeProvider: /* @__PURE__ */ __name((services) => new DefaultScopeProvider(services), \"ScopeProvider\"),\n ScopeComputation: /* @__PURE__ */ __name((services) => new DefaultScopeComputation(services), \"ScopeComputation\"),\n References: /* @__PURE__ */ __name((services) => new DefaultReferences(services), \"References\")\n },\n serializer: {\n Hydrator: /* @__PURE__ */ __name((services) => new DefaultHydrator(services), \"Hydrator\"),\n JsonSerializer: /* @__PURE__ */ __name((services) => new DefaultJsonSerializer(services), \"JsonSerializer\")\n },\n validation: {\n DocumentValidator: /* @__PURE__ */ __name((services) => new DefaultDocumentValidator(services), \"DocumentValidator\"),\n ValidationRegistry: /* @__PURE__ */ __name((services) => new ValidationRegistry(services), \"ValidationRegistry\")\n },\n shared: /* @__PURE__ */ __name(() => context.shared, \"shared\")\n };\n}\n__name(createDefaultCoreModule, \"createDefaultCoreModule\");\nfunction createDefaultSharedCoreModule(context) {\n return {\n ServiceRegistry: /* @__PURE__ */ __name((services) => new DefaultServiceRegistry(services), \"ServiceRegistry\"),\n workspace: {\n LangiumDocuments: /* @__PURE__ */ __name((services) => new DefaultLangiumDocuments(services), \"LangiumDocuments\"),\n LangiumDocumentFactory: /* @__PURE__ */ __name((services) => new DefaultLangiumDocumentFactory(services), \"LangiumDocumentFactory\"),\n DocumentBuilder: /* @__PURE__ */ __name((services) => new DefaultDocumentBuilder(services), \"DocumentBuilder\"),\n IndexManager: /* @__PURE__ */ __name((services) => new DefaultIndexManager(services), \"IndexManager\"),\n WorkspaceManager: /* @__PURE__ */ __name((services) => new DefaultWorkspaceManager(services), \"WorkspaceManager\"),\n FileSystemProvider: /* @__PURE__ */ __name((services) => context.fileSystemProvider(services), \"FileSystemProvider\"),\n WorkspaceLock: /* @__PURE__ */ __name(() => new DefaultWorkspaceLock(), \"WorkspaceLock\"),\n ConfigurationProvider: /* @__PURE__ */ __name((services) => new DefaultConfigurationProvider(services), \"ConfigurationProvider\")\n },\n profilers: {}\n };\n}\n__name(createDefaultSharedCoreModule, \"createDefaultSharedCoreModule\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/dependency-injection.js\nvar Module;\n(function(Module2) {\n Module2.merge = (m1, m2) => _merge(_merge({}, m1), m2);\n})(Module || (Module = {}));\nfunction inject(module1, module2, module3, module4, module5, module6, module7, module8, module9) {\n const module10 = [module1, module2, module3, module4, module5, module6, module7, module8, module9].reduce(_merge, {});\n return _inject(module10);\n}\n__name(inject, \"inject\");\nvar isProxy = Symbol(\"isProxy\");\nfunction eagerLoad(item) {\n if (item && item[isProxy]) {\n for (const value of Object.values(item)) {\n eagerLoad(value);\n }\n }\n return item;\n}\n__name(eagerLoad, \"eagerLoad\");\nfunction _inject(module2, injector) {\n const proxy = new Proxy({}, {\n deleteProperty: /* @__PURE__ */ __name(() => false, \"deleteProperty\"),\n set: /* @__PURE__ */ __name(() => {\n throw new Error(\"Cannot set property on injected service container\");\n }, \"set\"),\n get: /* @__PURE__ */ __name((obj, prop) => {\n if (prop === isProxy) {\n return true;\n } else {\n return _resolve(obj, prop, module2, injector || proxy);\n }\n }, \"get\"),\n getOwnPropertyDescriptor: /* @__PURE__ */ __name((obj, prop) => (_resolve(obj, prop, module2, injector || proxy), Object.getOwnPropertyDescriptor(obj, prop)), \"getOwnPropertyDescriptor\"),\n // used by for..in\n has: /* @__PURE__ */ __name((_, prop) => prop in module2, \"has\"),\n // used by ..in..\n ownKeys: /* @__PURE__ */ __name(() => [...Object.getOwnPropertyNames(module2)], \"ownKeys\")\n // used by for..in\n });\n return proxy;\n}\n__name(_inject, \"_inject\");\nvar __requested__ = Symbol();\nfunction _resolve(obj, prop, module2, injector) {\n if (prop in obj) {\n if (obj[prop] instanceof Error) {\n throw new Error(\"Construction failure. Please make sure that your dependencies are constructable. Cause: \" + obj[prop]);\n }\n if (obj[prop] === __requested__) {\n throw new Error('Cycle detected. Please make \"' + String(prop) + '\" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');\n }\n return obj[prop];\n } else if (prop in module2) {\n const value = module2[prop];\n obj[prop] = __requested__;\n try {\n obj[prop] = typeof value === \"function\" ? value(injector) : _inject(value, injector);\n } catch (error) {\n obj[prop] = error instanceof Error ? error : void 0;\n throw error;\n }\n return obj[prop];\n } else {\n return void 0;\n }\n}\n__name(_resolve, \"_resolve\");\nfunction _merge(target, source) {\n if (source) {\n for (const [key, sourceValue] of Object.entries(source)) {\n if (sourceValue !== void 0 && sourceValue !== null) {\n if (typeof sourceValue === \"object\") {\n const targetValue = target[key];\n if (typeof targetValue === \"object\" && targetValue !== null) {\n target[key] = _merge(targetValue, sourceValue);\n } else {\n target[key] = _merge({}, sourceValue);\n }\n } else {\n target[key] = sourceValue;\n }\n }\n }\n }\n return target;\n}\n__name(_merge, \"_merge\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/parser/indentation-aware.js\nvar indentationBuilderDefaultOptions = {\n indentTokenName: \"INDENT\",\n dedentTokenName: \"DEDENT\",\n whitespaceTokenName: \"WS\",\n ignoreIndentationDelimiters: []\n};\nvar LexingMode;\n(function(LexingMode2) {\n LexingMode2[\"REGULAR\"] = \"indentation-sensitive\";\n LexingMode2[\"IGNORE_INDENTATION\"] = \"ignore-indentation\";\n})(LexingMode || (LexingMode = {}));\nvar IndentationAwareTokenBuilder = class extends DefaultTokenBuilder {\n static {\n __name(this, \"IndentationAwareTokenBuilder\");\n }\n constructor(options = indentationBuilderDefaultOptions) {\n super();\n this.indentationStack = [0];\n this.whitespaceRegExp = /[ \\t]+/y;\n this.options = {\n ...indentationBuilderDefaultOptions,\n ...options\n };\n this.indentTokenType = createToken({\n name: this.options.indentTokenName,\n pattern: this.indentMatcher.bind(this),\n line_breaks: false\n });\n this.dedentTokenType = createToken({\n name: this.options.dedentTokenName,\n pattern: this.dedentMatcher.bind(this),\n line_breaks: false\n });\n }\n buildTokens(grammar, options) {\n const tokenTypes = super.buildTokens(grammar, options);\n if (!isTokenTypeArray(tokenTypes)) {\n throw new Error(\"Invalid tokens built by default builder\");\n }\n const { indentTokenName, dedentTokenName, whitespaceTokenName, ignoreIndentationDelimiters } = this.options;\n let dedent;\n let indent;\n let ws;\n const otherTokens = [];\n for (const tokenType of tokenTypes) {\n for (const [begin, end] of ignoreIndentationDelimiters) {\n if (tokenType.name === begin) {\n tokenType.PUSH_MODE = LexingMode.IGNORE_INDENTATION;\n } else if (tokenType.name === end) {\n tokenType.POP_MODE = true;\n }\n }\n if (tokenType.name === dedentTokenName) {\n dedent = tokenType;\n } else if (tokenType.name === indentTokenName) {\n indent = tokenType;\n } else if (tokenType.name === whitespaceTokenName) {\n ws = tokenType;\n } else {\n otherTokens.push(tokenType);\n }\n }\n if (!dedent || !indent || !ws) {\n throw new Error(\"Some indentation/whitespace tokens not found!\");\n }\n if (ignoreIndentationDelimiters.length > 0) {\n const multiModeLexerDef = {\n modes: {\n [LexingMode.REGULAR]: [dedent, indent, ...otherTokens, ws],\n [LexingMode.IGNORE_INDENTATION]: [...otherTokens, ws]\n },\n defaultMode: LexingMode.REGULAR\n };\n return multiModeLexerDef;\n } else {\n return [dedent, indent, ws, ...otherTokens];\n }\n }\n flushLexingReport(text) {\n const result = super.flushLexingReport(text);\n return {\n ...result,\n remainingDedents: this.flushRemainingDedents(text)\n };\n }\n /**\n * Helper function to check if the current position is the start of a new line.\n *\n * @param text The full input string.\n * @param offset The current position at which to check\n * @returns Whether the current position is the start of a new line\n */\n isStartOfLine(text, offset) {\n return offset === 0 || \"\\r\\n\".includes(text[offset - 1]);\n }\n /**\n * A helper function used in matching both indents and dedents.\n *\n * @param text The full input string.\n * @param offset The current position at which to attempt a match\n * @param tokens Previously scanned tokens\n * @param groups Token Groups\n * @returns The current and previous indentation levels and the matched whitespace\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n matchWhitespace(text, offset, tokens, groups) {\n this.whitespaceRegExp.lastIndex = offset;\n const match = this.whitespaceRegExp.exec(text);\n return {\n currIndentLevel: match?.[0].length ?? 0,\n prevIndentLevel: this.indentationStack.at(-1),\n match\n };\n }\n /**\n * Helper function to create an instance of an indentation token.\n *\n * @param tokenType Indent or dedent token type\n * @param text Full input string, used to calculate the line number\n * @param image The original image of the token (tabs or spaces)\n * @param offset Current position in the input string\n * @returns The indentation token instance\n */\n createIndentationTokenInstance(tokenType, text, image, offset) {\n const lineNumber = this.getLineNumber(text, offset);\n return createTokenInstance(tokenType, image, offset, offset + image.length, lineNumber, lineNumber, 1, image.length);\n }\n /**\n * Helper function to get the line number at a given offset.\n *\n * @param text Full input string, used to calculate the line number\n * @param offset Current position in the input string\n * @returns The line number at the given offset\n */\n getLineNumber(text, offset) {\n return text.substring(0, offset).split(/\\r\\n|\\r|\\n/).length;\n }\n /**\n * A custom pattern for matching indents\n *\n * @param text The full input string.\n * @param offset The offset at which to attempt a match\n * @param tokens Previously scanned tokens\n * @param groups Token Groups\n */\n indentMatcher(text, offset, tokens, groups) {\n if (!this.isStartOfLine(text, offset)) {\n return null;\n }\n const { currIndentLevel, prevIndentLevel, match } = this.matchWhitespace(text, offset, tokens, groups);\n if (currIndentLevel <= prevIndentLevel) {\n return null;\n }\n this.indentationStack.push(currIndentLevel);\n return match;\n }\n /**\n * A custom pattern for matching dedents\n *\n * @param text The full input string.\n * @param offset The offset at which to attempt a match\n * @param tokens Previously scanned tokens\n * @param groups Token Groups\n */\n dedentMatcher(text, offset, tokens, groups) {\n if (!this.isStartOfLine(text, offset)) {\n return null;\n }\n const { currIndentLevel, prevIndentLevel, match } = this.matchWhitespace(text, offset, tokens, groups);\n if (currIndentLevel >= prevIndentLevel) {\n return null;\n }\n const matchIndentIndex = this.indentationStack.lastIndexOf(currIndentLevel);\n if (matchIndentIndex === -1) {\n this.diagnostics.push({\n severity: \"error\",\n message: `Invalid dedent level ${currIndentLevel} at offset: ${offset}. Current indentation stack: ${this.indentationStack}`,\n offset,\n length: match?.[0]?.length ?? 0,\n line: this.getLineNumber(text, offset),\n column: 1\n });\n return null;\n }\n const numberOfDedents = this.indentationStack.length - matchIndentIndex - 1;\n const newlinesBeforeDedent = text.substring(0, offset).match(/[\\r\\n]+$/)?.[0].length ?? 1;\n for (let i = 0; i < numberOfDedents; i++) {\n const token = this.createIndentationTokenInstance(\n this.dedentTokenType,\n text,\n \"\",\n // Dedents are 0-width tokens\n offset - (newlinesBeforeDedent - 1)\n );\n tokens.push(token);\n this.indentationStack.pop();\n }\n return null;\n }\n buildTerminalToken(terminal) {\n const tokenType = super.buildTerminalToken(terminal);\n const { indentTokenName, dedentTokenName, whitespaceTokenName } = this.options;\n if (tokenType.name === indentTokenName) {\n return this.indentTokenType;\n } else if (tokenType.name === dedentTokenName) {\n return this.dedentTokenType;\n } else if (tokenType.name === whitespaceTokenName) {\n return createToken({\n name: whitespaceTokenName,\n pattern: this.whitespaceRegExp,\n group: Lexer.SKIPPED\n });\n }\n return tokenType;\n }\n /**\n * Resets the indentation stack between different runs of the lexer\n *\n * @param text Full text that was tokenized\n * @returns Remaining dedent tokens to match all previous indents at the end of the file\n */\n flushRemainingDedents(text) {\n const remainingDedents = [];\n while (this.indentationStack.length > 1) {\n remainingDedents.push(this.createIndentationTokenInstance(this.dedentTokenType, text, \"\", text.length));\n this.indentationStack.pop();\n }\n this.indentationStack = [0];\n return remainingDedents;\n }\n};\nvar IndentationAwareLexer = class extends DefaultLexer {\n static {\n __name(this, \"IndentationAwareLexer\");\n }\n constructor(services) {\n super(services);\n if (services.parser.TokenBuilder instanceof IndentationAwareTokenBuilder) {\n this.indentationTokenBuilder = services.parser.TokenBuilder;\n } else {\n throw new Error(\"IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder\");\n }\n }\n tokenize(text, options = DEFAULT_TOKENIZE_OPTIONS) {\n const result = super.tokenize(text);\n const report = result.report;\n if (options?.mode === \"full\") {\n result.tokens.push(...report.remainingDedents);\n }\n report.remainingDedents = [];\n const { indentTokenType, dedentTokenType } = this.indentationTokenBuilder;\n const indentTokenIdx = indentTokenType.tokenTypeIdx;\n const dedentTokenIdx = dedentTokenType.tokenTypeIdx;\n const cleanTokens = [];\n const length = result.tokens.length - 1;\n for (let i = 0; i < length; i++) {\n const token = result.tokens[i];\n const nextToken = result.tokens[i + 1];\n if (token.tokenTypeIdx === indentTokenIdx && nextToken.tokenTypeIdx === dedentTokenIdx) {\n i++;\n continue;\n }\n cleanTokens.push(token);\n }\n if (length >= 0) {\n cleanTokens.push(result.tokens[length]);\n }\n result.tokens = cleanTokens;\n return result;\n }\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/index.js\nvar utils_exports = {};\n__export(utils_exports, {\n AstUtils: () => ast_utils_exports,\n BiMap: () => BiMap,\n Cancellation: () => cancellation_exports,\n ContextCache: () => ContextCache,\n CstUtils: () => cst_utils_exports,\n DONE_RESULT: () => DONE_RESULT,\n Deferred: () => Deferred,\n Disposable: () => Disposable,\n DisposableCache: () => DisposableCache,\n DocumentCache: () => DocumentCache,\n EMPTY_STREAM: () => EMPTY_STREAM,\n ErrorWithLocation: () => ErrorWithLocation,\n GrammarUtils: () => grammar_utils_exports,\n MultiMap: () => MultiMap,\n OperationCancelled: () => OperationCancelled,\n Reduction: () => Reduction,\n RegExpUtils: () => regexp_utils_exports,\n SimpleCache: () => SimpleCache,\n StreamImpl: () => StreamImpl,\n TreeStreamImpl: () => TreeStreamImpl,\n URI: () => URI2,\n UriTrie: () => UriTrie,\n UriUtils: () => UriUtils,\n WorkspaceCache: () => WorkspaceCache,\n assertCondition: () => assertCondition,\n assertUnreachable: () => assertUnreachable,\n delayNextTick: () => delayNextTick,\n interruptAndCheck: () => interruptAndCheck,\n isOperationCancelled: () => isOperationCancelled,\n loadGrammarFromJson: () => loadGrammarFromJson,\n setInterruptionPeriod: () => setInterruptionPeriod,\n startCancelableOperation: () => startCancelableOperation,\n stream: () => stream\n});\n__reExport(utils_exports, event_exports);\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/file-system-provider.js\nvar EmptyFileSystemProvider = class {\n static {\n __name(this, \"EmptyFileSystemProvider\");\n }\n stat(_uri) {\n throw new Error(\"No file system is available.\");\n }\n statSync(_uri) {\n throw new Error(\"No file system is available.\");\n }\n async exists() {\n return false;\n }\n existsSync() {\n return false;\n }\n readBinary() {\n throw new Error(\"No file system is available.\");\n }\n readBinarySync() {\n throw new Error(\"No file system is available.\");\n }\n readFile() {\n throw new Error(\"No file system is available.\");\n }\n readFileSync() {\n throw new Error(\"No file system is available.\");\n }\n async readDirectory() {\n return [];\n }\n readDirectorySync() {\n return [];\n }\n};\nvar EmptyFileSystem = {\n fileSystemProvider: /* @__PURE__ */ __name(() => new EmptyFileSystemProvider(), \"fileSystemProvider\")\n};\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/utils/grammar-loader.js\nvar minimalGrammarModule = {\n Grammar: /* @__PURE__ */ __name(() => void 0, \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => ({\n caseInsensitive: false,\n fileExtensions: [\".langium\"],\n languageId: \"langium\"\n }), \"LanguageMetaData\")\n};\nvar minimalSharedGrammarModule = {\n AstReflection: /* @__PURE__ */ __name(() => new LangiumGrammarAstReflection(), \"AstReflection\")\n};\nfunction createMinimalGrammarServices() {\n const shared = inject(createDefaultSharedCoreModule(EmptyFileSystem), minimalSharedGrammarModule);\n const grammar = inject(createDefaultCoreModule({ shared }), minimalGrammarModule);\n shared.ServiceRegistry.register(grammar);\n return grammar;\n}\n__name(createMinimalGrammarServices, \"createMinimalGrammarServices\");\nfunction loadGrammarFromJson(json) {\n const services = createMinimalGrammarServices();\n const astNode = services.serializer.JsonSerializer.deserialize(json);\n services.shared.workspace.LangiumDocumentFactory.fromModel(astNode, URI2.parse(`memory:/${astNode.name ?? \"grammar\"}.langium`));\n return astNode;\n}\n__name(loadGrammarFromJson, \"loadGrammarFromJson\");\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/index.js\n__reExport(lib_exports, utils_exports);\n\n// ../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/lib/workspace/profiler.js\nvar DefaultLangiumProfiler = class {\n static {\n __name(this, \"DefaultLangiumProfiler\");\n }\n constructor(activeCategories) {\n this.activeCategories = /* @__PURE__ */ new Set();\n this.allCategories = /* @__PURE__ */ new Set([\"validating\", \"parsing\", \"linking\"]);\n this.activeCategories = activeCategories ?? new Set(this.allCategories);\n this.records = new MultiMap();\n }\n isActive(category) {\n return this.activeCategories.has(category);\n }\n start(...categories) {\n if (!categories) {\n this.activeCategories = new Set(this.allCategories);\n } else {\n categories.forEach((category) => this.activeCategories.add(category));\n }\n }\n stop(...categories) {\n if (!categories) {\n this.activeCategories.clear();\n } else {\n categories.forEach((category) => this.activeCategories.delete(category));\n }\n }\n createTask(category, taskId) {\n if (!this.isActive(category)) {\n throw new Error(`Category \"${category}\" is not active.`);\n }\n console.log(`Creating profiling task for '${category}.${taskId}'.`);\n return new ProfilingTask((record) => this.records.add(category, this.dumpRecord(category, record)), taskId);\n }\n dumpRecord(category, record) {\n console.info(`Task ${category}.${record.identifier} executed in ${record.duration.toFixed(2)}ms and ended at ${record.date.toISOString()}`);\n const result = [];\n for (const key of record.entries.keys()) {\n const values2 = record.entries.get(key);\n const duration = values2.reduce((p, c) => p + c);\n result.push({ name: `${record.identifier}.${key}`, count: values2.length, duration });\n }\n const taskInternalDuration = record.duration - result.map((r) => r.duration).reduce((a, b) => a + b, 0);\n result.push({ name: record.identifier, count: 1, duration: taskInternalDuration });\n result.sort((a, b) => b.duration - a.duration);\n function Round(value) {\n return Math.round(100 * value) / 100;\n }\n __name(Round, \"Round\");\n console.table(result.map((e) => {\n return { Element: e.name, Count: e.count, \"Self %\": Round(100 * e.duration / record.duration), \"Time (ms)\": Round(e.duration) };\n }));\n return record;\n }\n getRecords(...categories) {\n if (categories.length === 0) {\n return this.records.values();\n } else {\n return this.records.entries().filter((e) => categories.some((c) => c === e[0])).flatMap((e) => e[1]);\n }\n }\n};\nvar ProfilingTask = class {\n static {\n __name(this, \"ProfilingTask\");\n }\n constructor(addRecord, identifier) {\n this.stack = [];\n this.entries = new MultiMap();\n this.addRecord = addRecord;\n this.identifier = identifier;\n }\n start() {\n if (this.startTime !== void 0) {\n throw new Error(`Task \"${this.identifier}\" is already started.`);\n }\n this.startTime = performance.now();\n }\n stop() {\n if (this.startTime === void 0) {\n throw new Error(`Task \"${this.identifier}\" was not started.`);\n }\n if (this.stack.length !== 0) {\n throw new Error(`Task \"${this.identifier}\" cannot be stopped before sub-task(s): ${this.stack.map((s) => s.id).join(\", \")}.`);\n }\n const record = {\n identifier: this.identifier,\n date: /* @__PURE__ */ new Date(),\n duration: performance.now() - this.startTime,\n entries: this.entries\n };\n this.addRecord(record);\n this.startTime = void 0;\n this.entries.clear();\n }\n startSubTask(subTaskId) {\n this.stack.push({ id: subTaskId, start: performance.now(), content: 0 });\n }\n stopSubTask(subTaskId) {\n const subStack = this.stack.pop();\n if (!subStack) {\n throw new Error(`Task \"${this.identifier}.${subTaskId}\" was not started.`);\n }\n if (subStack.id !== subTaskId) {\n throw new Error(`Sub-Task \"${subStack.id}\" is not already stopped.`);\n }\n const duration = performance.now() - subStack.start;\n if (this.stack.at(-1) !== void 0) {\n this.stack[this.stack.length - 1].content += duration;\n }\n const selfDuration = duration - subStack.content;\n this.entries.add(subTaskId, selfDuration);\n }\n};\n\n// src/language/generated/ast.ts\nvar ArchitectureGrammar;\n((ArchitectureGrammar2) => {\n ArchitectureGrammar2.Terminals = {\n ARROW_DIRECTION: /L|R|T|B/,\n ARROW_GROUP: /\\{group\\}/,\n ARROW_INTO: /<|>/,\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n ID: /[\\w]([-\\w]*\\w)?/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/,\n ARCH_ICON: /\\([\\w-:]+\\)/,\n ARCH_TITLE: /\\[(?:\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'|[\\w ]+)\\]/\n };\n})(ArchitectureGrammar || (ArchitectureGrammar = {}));\nvar EventModeling;\n((EventModeling2) => {\n EventModeling2.Terminals = {\n EM_ID: /[_a-zA-Z][\\w_]*/,\n EM_FID: /\\d{1,3}/,\n EM_DATA_INLINE: /\\{(.*)\\}|\"(.*)\"|'(.*)'/,\n EM_DATA_BLOCK: /\\{[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?\\}(?:\\r?\\n|(?!\\S))/,\n EM_ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n EM_ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n EM_TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n EM_WS: /\\s+/,\n EM_YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n EM_DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n EM_SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/,\n EM_ML_COMMENT: /\\/\\*[\\s\\S]*?\\*\\//,\n EM_SL_COMMENT: /\\/\\/[^\\n\\r]*/\n };\n})(EventModeling || (EventModeling = {}));\nvar GitGraphGrammar;\n((GitGraphGrammar2) => {\n GitGraphGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n INT: /0|[1-9][0-9]*(?!\\.)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/,\n REFERENCE: /\\w([-\\./\\w]*[-\\w])?/\n };\n})(GitGraphGrammar || (GitGraphGrammar = {}));\nvar InfoGrammar;\n((InfoGrammar2) => {\n InfoGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(InfoGrammar || (InfoGrammar = {}));\nvar PacketGrammar;\n((PacketGrammar2) => {\n PacketGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n INT: /0|[1-9][0-9]*(?!\\.)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(PacketGrammar || (PacketGrammar = {}));\nvar PieGrammar;\n((PieGrammar2) => {\n PieGrammar2.Terminals = {\n NUMBER_PIE: /(?:-?[0-9]+\\.[0-9]+(?!\\.))|(?:-?(0|[1-9][0-9]*)(?!\\.))/,\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(PieGrammar || (PieGrammar = {}));\nvar RadarGrammar;\n((RadarGrammar2) => {\n RadarGrammar2.Terminals = {\n GRATICULE: /circle|polygon/,\n BOOLEAN: /true|false/,\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n NUMBER: /(?:[0-9]+\\.[0-9]+(?!\\.))|(?:0|[1-9][0-9]*(?!\\.))/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n ID: /[\\w]([-\\w]*\\w)?/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(RadarGrammar || (RadarGrammar = {}));\nvar TreemapGrammar;\n((TreemapGrammar2) => {\n TreemapGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n TREEMAP_KEYWORD: /treemap-beta|treemap/,\n CLASS_DEF: /classDef\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\s+([^;\\r\\n]*))?(?:;)?/,\n STYLE_SEPARATOR: /:::/,\n SEPARATOR: /:/,\n COMMA: /,/,\n INDENTATION: /[ \\t]{1,}/,\n WS: /[ \\t]+/,\n ML_COMMENT: /\\%\\%[^\\n]*/,\n NL: /\\r?\\n/,\n ID2: /[a-zA-Z_][a-zA-Z0-9_]*/,\n NUMBER2: /[0-9_\\.\\,]+/,\n STRING2: /\"[^\"]*\"|'[^']*'/\n };\n})(TreemapGrammar || (TreemapGrammar = {}));\nvar TreeViewGrammar;\n((TreeViewGrammar2) => {\n TreeViewGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n INDENTATION: /[ \\t]{1,}/,\n WS: /[ \\t]+/,\n ML_COMMENT: /\\%\\%[^\\n]*/,\n NL: /\\r?\\n/,\n STRING2: /\"[^\"]*\"|'[^']*'/\n };\n})(TreeViewGrammar || (TreeViewGrammar = {}));\nvar WardleyGrammar;\n((WardleyGrammar2) => {\n WardleyGrammar2.Terminals = {\n WARDLEY_NUMBER: /[0-9]+\\.[0-9]+/,\n ARROW: /->/,\n LINK_PORT: /\\+<>|\\+>|\\+|-\\.->|>|\\+'[^']*'<>|\\+'[^']*'<|\\+'[^']*'>/,\n LINK_LABEL: /;[^\\n\\r]+/,\n STRATEGY: /build|buy|outsource|market/,\n KW_WARDLEY: /wardley-beta/,\n KW_SIZE: /size/,\n KW_EVOLUTION: /evolution/,\n KW_ANCHOR: /anchor/,\n KW_COMPONENT: /component/,\n KW_LABEL: /label/,\n KW_INERTIA: /inertia/,\n KW_EVOLVE: /evolve/,\n KW_PIPELINE: /pipeline/,\n KW_NOTE: /note/,\n KW_ANNOTATIONS: /annotations/,\n KW_ANNOTATION: /annotation/,\n KW_ACCELERATOR: /accelerator/,\n KW_DEACCELERATOR: /deaccelerator/,\n NAME_WITH_SPACES: /(?!title\\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \\t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/,\n WS: /[ \\t]+/,\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n INT: /0|[1-9][0-9]*(?!\\.)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n ID: /[\\w]([-\\w]*\\w)?/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(WardleyGrammar || (WardleyGrammar = {}));\nvar MermaidTerminals = {\n ...ArchitectureGrammar.Terminals,\n ...EventModeling.Terminals,\n ...GitGraphGrammar.Terminals,\n ...InfoGrammar.Terminals,\n ...PacketGrammar.Terminals,\n ...PieGrammar.Terminals,\n ...RadarGrammar.Terminals,\n ...TreeViewGrammar.Terminals,\n ...TreemapGrammar.Terminals,\n ...WardleyGrammar.Terminals\n};\nvar Accelerator = {\n $type: \"Accelerator\",\n name: \"name\",\n x: \"x\",\n y: \"y\"\n};\nvar Anchor = {\n $type: \"Anchor\",\n evolution: \"evolution\",\n name: \"name\",\n visibility: \"visibility\"\n};\nvar Annotation = {\n $type: \"Annotation\",\n number: \"number\",\n text: \"text\",\n x: \"x\",\n y: \"y\"\n};\nvar Annotations = {\n $type: \"Annotations\",\n x: \"x\",\n y: \"y\"\n};\nvar Architecture = {\n $type: \"Architecture\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n edges: \"edges\",\n groups: \"groups\",\n junctions: \"junctions\",\n services: \"services\",\n title: \"title\"\n};\nfunction isArchitecture(item) {\n return reflection2.isInstance(item, Architecture.$type);\n}\n__name(isArchitecture, \"isArchitecture\");\nvar Axis = {\n $type: \"Axis\",\n label: \"label\",\n name: \"name\"\n};\nvar Branch = {\n $type: \"Branch\",\n name: \"name\",\n order: \"order\"\n};\nfunction isBranch(item) {\n return reflection2.isInstance(item, Branch.$type);\n}\n__name(isBranch, \"isBranch\");\nvar Checkout = {\n $type: \"Checkout\",\n branch: \"branch\"\n};\nvar CherryPicking = {\n $type: \"CherryPicking\",\n id: \"id\",\n parent: \"parent\",\n tags: \"tags\"\n};\nvar ClassDefStatement = {\n $type: \"ClassDefStatement\",\n className: \"className\",\n styleText: \"styleText\"\n};\nvar Commit = {\n $type: \"Commit\",\n id: \"id\",\n message: \"message\",\n tags: \"tags\",\n type: \"type\"\n};\nfunction isCommit(item) {\n return reflection2.isInstance(item, Commit.$type);\n}\n__name(isCommit, \"isCommit\");\nvar Common = {\n $type: \"Common\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n title: \"title\"\n};\nvar Component = {\n $type: \"Component\",\n decorator: \"decorator\",\n evolution: \"evolution\",\n inertia: \"inertia\",\n label: \"label\",\n name: \"name\",\n visibility: \"visibility\"\n};\nvar Curve = {\n $type: \"Curve\",\n entries: \"entries\",\n label: \"label\",\n name: \"name\"\n};\nvar Deaccelerator = {\n $type: \"Deaccelerator\",\n name: \"name\",\n x: \"x\",\n y: \"y\"\n};\nvar Decorator = {\n $type: \"Decorator\",\n strategy: \"strategy\"\n};\nvar Direction = {\n $type: \"Direction\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n dir: \"dir\",\n statements: \"statements\",\n title: \"title\"\n};\nvar Edge = {\n $type: \"Edge\",\n lhsDir: \"lhsDir\",\n lhsGroup: \"lhsGroup\",\n lhsId: \"lhsId\",\n lhsInto: \"lhsInto\",\n rhsDir: \"rhsDir\",\n rhsGroup: \"rhsGroup\",\n rhsId: \"rhsId\",\n rhsInto: \"rhsInto\",\n title: \"title\"\n};\nvar EmDataEntity = {\n $type: \"EmDataEntity\",\n dataBlockValue: \"dataBlockValue\",\n dataType: \"dataType\",\n name: \"name\"\n};\nvar EmFrame = {\n $type: \"EmFrame\"\n};\nvar EmGwt = {\n $type: \"EmGwt\",\n givenStatements: \"givenStatements\",\n sourceFrame: \"sourceFrame\",\n thenStatements: \"thenStatements\",\n whenStatements: \"whenStatements\"\n};\nvar EmGwtStatement = {\n $type: \"EmGwtStatement\",\n entityIdentifier: \"entityIdentifier\"\n};\nvar EmModelEntity = {\n $type: \"EmModelEntity\",\n name: \"name\"\n};\nfunction isEmModelEntityType(item) {\n return item === \"rmo\" || item === \"readmodel\" || item === \"ui\" || item === \"cmd\" || item === \"command\" || item === \"evt\" || item === \"event\" || item === \"pcr\" || item === \"processor\";\n}\n__name(isEmModelEntityType, \"isEmModelEntityType\");\nvar EmNoteEntity = {\n $type: \"EmNoteEntity\",\n dataBlockValue: \"dataBlockValue\",\n dataType: \"dataType\",\n sourceFrame: \"sourceFrame\"\n};\nvar EmResetFrame = {\n $type: \"EmResetFrame\",\n dataInlineValue: \"dataInlineValue\",\n dataReference: \"dataReference\",\n dataType: \"dataType\",\n entityIdentifier: \"entityIdentifier\",\n modelEntityType: \"modelEntityType\",\n name: \"name\",\n sourceFrames: \"sourceFrames\"\n};\nfunction isEmResetFrame(item) {\n return reflection2.isInstance(item, EmResetFrame.$type);\n}\n__name(isEmResetFrame, \"isEmResetFrame\");\nvar EmTimeFrame = {\n $type: \"EmTimeFrame\",\n dataInlineValue: \"dataInlineValue\",\n dataReference: \"dataReference\",\n dataType: \"dataType\",\n entityIdentifier: \"entityIdentifier\",\n modelEntityType: \"modelEntityType\",\n name: \"name\",\n sourceFrames: \"sourceFrames\"\n};\nvar Entry = {\n $type: \"Entry\",\n axis: \"axis\",\n value: \"value\"\n};\nvar EventModel = {\n $type: \"EventModel\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n dataEntities: \"dataEntities\",\n frames: \"frames\",\n gwtEntities: \"gwtEntities\",\n modelEntities: \"modelEntities\",\n noteEntities: \"noteEntities\",\n title: \"title\"\n};\nvar Evolution = {\n $type: \"Evolution\",\n stages: \"stages\"\n};\nvar EvolutionStage = {\n $type: \"EvolutionStage\",\n boundary: \"boundary\",\n name: \"name\",\n secondName: \"secondName\"\n};\nvar Evolve = {\n $type: \"Evolve\",\n component: \"component\",\n target: \"target\"\n};\nvar GitGraph = {\n $type: \"GitGraph\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n statements: \"statements\",\n title: \"title\"\n};\nfunction isGitGraph(item) {\n return reflection2.isInstance(item, GitGraph.$type);\n}\n__name(isGitGraph, \"isGitGraph\");\nvar Group2 = {\n $type: \"Group\",\n icon: \"icon\",\n id: \"id\",\n in: \"in\",\n title: \"title\"\n};\nvar Info = {\n $type: \"Info\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n title: \"title\"\n};\nfunction isInfo(item) {\n return reflection2.isInstance(item, Info.$type);\n}\n__name(isInfo, \"isInfo\");\nvar Item = {\n $type: \"Item\",\n classSelector: \"classSelector\",\n name: \"name\"\n};\nvar Junction = {\n $type: \"Junction\",\n id: \"id\",\n in: \"in\"\n};\nvar Label = {\n $type: \"Label\",\n negX: \"negX\",\n negY: \"negY\",\n offsetX: \"offsetX\",\n offsetY: \"offsetY\"\n};\nvar Leaf = {\n $type: \"Leaf\",\n classSelector: \"classSelector\",\n name: \"name\",\n value: \"value\"\n};\nvar Link = {\n $type: \"Link\",\n arrow: \"arrow\",\n from: \"from\",\n fromPort: \"fromPort\",\n linkLabel: \"linkLabel\",\n to: \"to\",\n toPort: \"toPort\"\n};\nvar Merge = {\n $type: \"Merge\",\n branch: \"branch\",\n id: \"id\",\n tags: \"tags\",\n type: \"type\"\n};\nfunction isMerge(item) {\n return reflection2.isInstance(item, Merge.$type);\n}\n__name(isMerge, \"isMerge\");\nvar Note = {\n $type: \"Note\",\n evolution: \"evolution\",\n text: \"text\",\n visibility: \"visibility\"\n};\nvar Option2 = {\n $type: \"Option\",\n name: \"name\",\n value: \"value\"\n};\nvar Packet = {\n $type: \"Packet\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n blocks: \"blocks\",\n title: \"title\"\n};\nfunction isPacket(item) {\n return reflection2.isInstance(item, Packet.$type);\n}\n__name(isPacket, \"isPacket\");\nvar PacketBlock = {\n $type: \"PacketBlock\",\n bits: \"bits\",\n end: \"end\",\n label: \"label\",\n start: \"start\"\n};\nfunction isPacketBlock(item) {\n return reflection2.isInstance(item, PacketBlock.$type);\n}\n__name(isPacketBlock, \"isPacketBlock\");\nvar Pie = {\n $type: \"Pie\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n sections: \"sections\",\n showData: \"showData\",\n title: \"title\"\n};\nfunction isPie(item) {\n return reflection2.isInstance(item, Pie.$type);\n}\n__name(isPie, \"isPie\");\nvar PieSection = {\n $type: \"PieSection\",\n label: \"label\",\n value: \"value\"\n};\nfunction isPieSection(item) {\n return reflection2.isInstance(item, PieSection.$type);\n}\n__name(isPieSection, \"isPieSection\");\nvar Pipeline = {\n $type: \"Pipeline\",\n components: \"components\",\n parent: \"parent\"\n};\nvar PipelineComponent = {\n $type: \"PipelineComponent\",\n evolution: \"evolution\",\n label: \"label\",\n name: \"name\"\n};\nvar Radar = {\n $type: \"Radar\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n axes: \"axes\",\n curves: \"curves\",\n options: \"options\",\n title: \"title\"\n};\nvar Section = {\n $type: \"Section\",\n classSelector: \"classSelector\",\n name: \"name\"\n};\nvar Service = {\n $type: \"Service\",\n icon: \"icon\",\n iconText: \"iconText\",\n id: \"id\",\n in: \"in\",\n title: \"title\"\n};\nvar Size = {\n $type: \"Size\",\n height: \"height\",\n width: \"width\"\n};\nvar Statement = {\n $type: \"Statement\"\n};\nvar Treemap = {\n $type: \"Treemap\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n title: \"title\",\n TreemapRows: \"TreemapRows\"\n};\nfunction isTreemap(item) {\n return reflection2.isInstance(item, Treemap.$type);\n}\n__name(isTreemap, \"isTreemap\");\nvar TreemapRow = {\n $type: \"TreemapRow\",\n indent: \"indent\",\n item: \"item\"\n};\nvar TreeNode = {\n $type: \"TreeNode\",\n indent: \"indent\",\n name: \"name\"\n};\nvar TreeView = {\n $type: \"TreeView\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n nodes: \"nodes\",\n title: \"title\"\n};\nvar Wardley = {\n $type: \"Wardley\",\n accDescr: \"accDescr\",\n accelerators: \"accelerators\",\n accTitle: \"accTitle\",\n anchors: \"anchors\",\n annotation: \"annotation\",\n annotations: \"annotations\",\n components: \"components\",\n deaccelerators: \"deaccelerators\",\n evolution: \"evolution\",\n evolves: \"evolves\",\n links: \"links\",\n notes: \"notes\",\n pipelines: \"pipelines\",\n size: \"size\",\n title: \"title\"\n};\nfunction isWardley(item) {\n return reflection2.isInstance(item, Wardley.$type);\n}\n__name(isWardley, \"isWardley\");\nvar MermaidAstReflection = class extends AbstractAstReflection {\n constructor() {\n super(...arguments);\n this.types = {\n Accelerator: {\n name: Accelerator.$type,\n properties: {\n name: {\n name: Accelerator.name\n },\n x: {\n name: Accelerator.x\n },\n y: {\n name: Accelerator.y\n }\n },\n superTypes: []\n },\n Anchor: {\n name: Anchor.$type,\n properties: {\n evolution: {\n name: Anchor.evolution\n },\n name: {\n name: Anchor.name\n },\n visibility: {\n name: Anchor.visibility\n }\n },\n superTypes: []\n },\n Annotation: {\n name: Annotation.$type,\n properties: {\n number: {\n name: Annotation.number\n },\n text: {\n name: Annotation.text\n },\n x: {\n name: Annotation.x\n },\n y: {\n name: Annotation.y\n }\n },\n superTypes: []\n },\n Annotations: {\n name: Annotations.$type,\n properties: {\n x: {\n name: Annotations.x\n },\n y: {\n name: Annotations.y\n }\n },\n superTypes: []\n },\n Architecture: {\n name: Architecture.$type,\n properties: {\n accDescr: {\n name: Architecture.accDescr\n },\n accTitle: {\n name: Architecture.accTitle\n },\n edges: {\n name: Architecture.edges,\n defaultValue: []\n },\n groups: {\n name: Architecture.groups,\n defaultValue: []\n },\n junctions: {\n name: Architecture.junctions,\n defaultValue: []\n },\n services: {\n name: Architecture.services,\n defaultValue: []\n },\n title: {\n name: Architecture.title\n }\n },\n superTypes: []\n },\n Axis: {\n name: Axis.$type,\n properties: {\n label: {\n name: Axis.label\n },\n name: {\n name: Axis.name\n }\n },\n superTypes: []\n },\n Branch: {\n name: Branch.$type,\n properties: {\n name: {\n name: Branch.name\n },\n order: {\n name: Branch.order\n }\n },\n superTypes: [Statement.$type]\n },\n Checkout: {\n name: Checkout.$type,\n properties: {\n branch: {\n name: Checkout.branch\n }\n },\n superTypes: [Statement.$type]\n },\n CherryPicking: {\n name: CherryPicking.$type,\n properties: {\n id: {\n name: CherryPicking.id\n },\n parent: {\n name: CherryPicking.parent\n },\n tags: {\n name: CherryPicking.tags,\n defaultValue: []\n }\n },\n superTypes: [Statement.$type]\n },\n ClassDefStatement: {\n name: ClassDefStatement.$type,\n properties: {\n className: {\n name: ClassDefStatement.className\n },\n styleText: {\n name: ClassDefStatement.styleText\n }\n },\n superTypes: []\n },\n Commit: {\n name: Commit.$type,\n properties: {\n id: {\n name: Commit.id\n },\n message: {\n name: Commit.message\n },\n tags: {\n name: Commit.tags,\n defaultValue: []\n },\n type: {\n name: Commit.type\n }\n },\n superTypes: [Statement.$type]\n },\n Common: {\n name: Common.$type,\n properties: {\n accDescr: {\n name: Common.accDescr\n },\n accTitle: {\n name: Common.accTitle\n },\n title: {\n name: Common.title\n }\n },\n superTypes: []\n },\n Component: {\n name: Component.$type,\n properties: {\n decorator: {\n name: Component.decorator\n },\n evolution: {\n name: Component.evolution\n },\n inertia: {\n name: Component.inertia,\n defaultValue: false\n },\n label: {\n name: Component.label\n },\n name: {\n name: Component.name\n },\n visibility: {\n name: Component.visibility\n }\n },\n superTypes: []\n },\n Curve: {\n name: Curve.$type,\n properties: {\n entries: {\n name: Curve.entries,\n defaultValue: []\n },\n label: {\n name: Curve.label\n },\n name: {\n name: Curve.name\n }\n },\n superTypes: []\n },\n Deaccelerator: {\n name: Deaccelerator.$type,\n properties: {\n name: {\n name: Deaccelerator.name\n },\n x: {\n name: Deaccelerator.x\n },\n y: {\n name: Deaccelerator.y\n }\n },\n superTypes: []\n },\n Decorator: {\n name: Decorator.$type,\n properties: {\n strategy: {\n name: Decorator.strategy\n }\n },\n superTypes: []\n },\n Direction: {\n name: Direction.$type,\n properties: {\n accDescr: {\n name: Direction.accDescr\n },\n accTitle: {\n name: Direction.accTitle\n },\n dir: {\n name: Direction.dir\n },\n statements: {\n name: Direction.statements,\n defaultValue: []\n },\n title: {\n name: Direction.title\n }\n },\n superTypes: [GitGraph.$type]\n },\n Edge: {\n name: Edge.$type,\n properties: {\n lhsDir: {\n name: Edge.lhsDir\n },\n lhsGroup: {\n name: Edge.lhsGroup,\n defaultValue: false\n },\n lhsId: {\n name: Edge.lhsId\n },\n lhsInto: {\n name: Edge.lhsInto,\n defaultValue: false\n },\n rhsDir: {\n name: Edge.rhsDir\n },\n rhsGroup: {\n name: Edge.rhsGroup,\n defaultValue: false\n },\n rhsId: {\n name: Edge.rhsId\n },\n rhsInto: {\n name: Edge.rhsInto,\n defaultValue: false\n },\n title: {\n name: Edge.title\n }\n },\n superTypes: []\n },\n EmDataEntity: {\n name: EmDataEntity.$type,\n properties: {\n dataBlockValue: {\n name: EmDataEntity.dataBlockValue\n },\n dataType: {\n name: EmDataEntity.dataType\n },\n name: {\n name: EmDataEntity.name\n }\n },\n superTypes: []\n },\n EmFrame: {\n name: EmFrame.$type,\n properties: {},\n superTypes: []\n },\n EmGwt: {\n name: EmGwt.$type,\n properties: {\n givenStatements: {\n name: EmGwt.givenStatements,\n defaultValue: []\n },\n sourceFrame: {\n name: EmGwt.sourceFrame,\n referenceType: EmFrame.$type\n },\n thenStatements: {\n name: EmGwt.thenStatements,\n defaultValue: []\n },\n whenStatements: {\n name: EmGwt.whenStatements,\n defaultValue: []\n }\n },\n superTypes: []\n },\n EmGwtStatement: {\n name: EmGwtStatement.$type,\n properties: {\n entityIdentifier: {\n name: EmGwtStatement.entityIdentifier,\n referenceType: EmModelEntity.$type\n }\n },\n superTypes: []\n },\n EmModelEntity: {\n name: EmModelEntity.$type,\n properties: {\n name: {\n name: EmModelEntity.name\n }\n },\n superTypes: []\n },\n EmNoteEntity: {\n name: EmNoteEntity.$type,\n properties: {\n dataBlockValue: {\n name: EmNoteEntity.dataBlockValue\n },\n dataType: {\n name: EmNoteEntity.dataType\n },\n sourceFrame: {\n name: EmNoteEntity.sourceFrame,\n referenceType: EmFrame.$type\n }\n },\n superTypes: []\n },\n EmResetFrame: {\n name: EmResetFrame.$type,\n properties: {\n dataInlineValue: {\n name: EmResetFrame.dataInlineValue\n },\n dataReference: {\n name: EmResetFrame.dataReference,\n referenceType: EmDataEntity.$type\n },\n dataType: {\n name: EmResetFrame.dataType\n },\n entityIdentifier: {\n name: EmResetFrame.entityIdentifier\n },\n modelEntityType: {\n name: EmResetFrame.modelEntityType\n },\n name: {\n name: EmResetFrame.name\n },\n sourceFrames: {\n name: EmResetFrame.sourceFrames,\n defaultValue: [],\n referenceType: EmFrame.$type\n }\n },\n superTypes: [EmFrame.$type]\n },\n EmTimeFrame: {\n name: EmTimeFrame.$type,\n properties: {\n dataInlineValue: {\n name: EmTimeFrame.dataInlineValue\n },\n dataReference: {\n name: EmTimeFrame.dataReference,\n referenceType: EmDataEntity.$type\n },\n dataType: {\n name: EmTimeFrame.dataType\n },\n entityIdentifier: {\n name: EmTimeFrame.entityIdentifier\n },\n modelEntityType: {\n name: EmTimeFrame.modelEntityType\n },\n name: {\n name: EmTimeFrame.name\n },\n sourceFrames: {\n name: EmTimeFrame.sourceFrames,\n defaultValue: [],\n referenceType: EmFrame.$type\n }\n },\n superTypes: [EmFrame.$type]\n },\n Entry: {\n name: Entry.$type,\n properties: {\n axis: {\n name: Entry.axis,\n referenceType: Axis.$type\n },\n value: {\n name: Entry.value\n }\n },\n superTypes: []\n },\n EventModel: {\n name: EventModel.$type,\n properties: {\n accDescr: {\n name: EventModel.accDescr\n },\n accTitle: {\n name: EventModel.accTitle\n },\n dataEntities: {\n name: EventModel.dataEntities,\n defaultValue: []\n },\n frames: {\n name: EventModel.frames,\n defaultValue: []\n },\n gwtEntities: {\n name: EventModel.gwtEntities,\n defaultValue: []\n },\n modelEntities: {\n name: EventModel.modelEntities,\n defaultValue: []\n },\n noteEntities: {\n name: EventModel.noteEntities,\n defaultValue: []\n },\n title: {\n name: EventModel.title\n }\n },\n superTypes: []\n },\n Evolution: {\n name: Evolution.$type,\n properties: {\n stages: {\n name: Evolution.stages,\n defaultValue: []\n }\n },\n superTypes: []\n },\n EvolutionStage: {\n name: EvolutionStage.$type,\n properties: {\n boundary: {\n name: EvolutionStage.boundary\n },\n name: {\n name: EvolutionStage.name\n },\n secondName: {\n name: EvolutionStage.secondName\n }\n },\n superTypes: []\n },\n Evolve: {\n name: Evolve.$type,\n properties: {\n component: {\n name: Evolve.component\n },\n target: {\n name: Evolve.target\n }\n },\n superTypes: []\n },\n GitGraph: {\n name: GitGraph.$type,\n properties: {\n accDescr: {\n name: GitGraph.accDescr\n },\n accTitle: {\n name: GitGraph.accTitle\n },\n statements: {\n name: GitGraph.statements,\n defaultValue: []\n },\n title: {\n name: GitGraph.title\n }\n },\n superTypes: []\n },\n Group: {\n name: Group2.$type,\n properties: {\n icon: {\n name: Group2.icon\n },\n id: {\n name: Group2.id\n },\n in: {\n name: Group2.in\n },\n title: {\n name: Group2.title\n }\n },\n superTypes: []\n },\n Info: {\n name: Info.$type,\n properties: {\n accDescr: {\n name: Info.accDescr\n },\n accTitle: {\n name: Info.accTitle\n },\n title: {\n name: Info.title\n }\n },\n superTypes: []\n },\n Item: {\n name: Item.$type,\n properties: {\n classSelector: {\n name: Item.classSelector\n },\n name: {\n name: Item.name\n }\n },\n superTypes: []\n },\n Junction: {\n name: Junction.$type,\n properties: {\n id: {\n name: Junction.id\n },\n in: {\n name: Junction.in\n }\n },\n superTypes: []\n },\n Label: {\n name: Label.$type,\n properties: {\n negX: {\n name: Label.negX,\n defaultValue: false\n },\n negY: {\n name: Label.negY,\n defaultValue: false\n },\n offsetX: {\n name: Label.offsetX\n },\n offsetY: {\n name: Label.offsetY\n }\n },\n superTypes: []\n },\n Leaf: {\n name: Leaf.$type,\n properties: {\n classSelector: {\n name: Leaf.classSelector\n },\n name: {\n name: Leaf.name\n },\n value: {\n name: Leaf.value\n }\n },\n superTypes: [Item.$type]\n },\n Link: {\n name: Link.$type,\n properties: {\n arrow: {\n name: Link.arrow\n },\n from: {\n name: Link.from\n },\n fromPort: {\n name: Link.fromPort\n },\n linkLabel: {\n name: Link.linkLabel\n },\n to: {\n name: Link.to\n },\n toPort: {\n name: Link.toPort\n }\n },\n superTypes: []\n },\n Merge: {\n name: Merge.$type,\n properties: {\n branch: {\n name: Merge.branch\n },\n id: {\n name: Merge.id\n },\n tags: {\n name: Merge.tags,\n defaultValue: []\n },\n type: {\n name: Merge.type\n }\n },\n superTypes: [Statement.$type]\n },\n Note: {\n name: Note.$type,\n properties: {\n evolution: {\n name: Note.evolution\n },\n text: {\n name: Note.text\n },\n visibility: {\n name: Note.visibility\n }\n },\n superTypes: []\n },\n Option: {\n name: Option2.$type,\n properties: {\n name: {\n name: Option2.name\n },\n value: {\n name: Option2.value,\n defaultValue: false\n }\n },\n superTypes: []\n },\n Packet: {\n name: Packet.$type,\n properties: {\n accDescr: {\n name: Packet.accDescr\n },\n accTitle: {\n name: Packet.accTitle\n },\n blocks: {\n name: Packet.blocks,\n defaultValue: []\n },\n title: {\n name: Packet.title\n }\n },\n superTypes: []\n },\n PacketBlock: {\n name: PacketBlock.$type,\n properties: {\n bits: {\n name: PacketBlock.bits\n },\n end: {\n name: PacketBlock.end\n },\n label: {\n name: PacketBlock.label\n },\n start: {\n name: PacketBlock.start\n }\n },\n superTypes: []\n },\n Pie: {\n name: Pie.$type,\n properties: {\n accDescr: {\n name: Pie.accDescr\n },\n accTitle: {\n name: Pie.accTitle\n },\n sections: {\n name: Pie.sections,\n defaultValue: []\n },\n showData: {\n name: Pie.showData,\n defaultValue: false\n },\n title: {\n name: Pie.title\n }\n },\n superTypes: []\n },\n PieSection: {\n name: PieSection.$type,\n properties: {\n label: {\n name: PieSection.label\n },\n value: {\n name: PieSection.value\n }\n },\n superTypes: []\n },\n Pipeline: {\n name: Pipeline.$type,\n properties: {\n components: {\n name: Pipeline.components,\n defaultValue: []\n },\n parent: {\n name: Pipeline.parent\n }\n },\n superTypes: []\n },\n PipelineComponent: {\n name: PipelineComponent.$type,\n properties: {\n evolution: {\n name: PipelineComponent.evolution\n },\n label: {\n name: PipelineComponent.label\n },\n name: {\n name: PipelineComponent.name\n }\n },\n superTypes: []\n },\n Radar: {\n name: Radar.$type,\n properties: {\n accDescr: {\n name: Radar.accDescr\n },\n accTitle: {\n name: Radar.accTitle\n },\n axes: {\n name: Radar.axes,\n defaultValue: []\n },\n curves: {\n name: Radar.curves,\n defaultValue: []\n },\n options: {\n name: Radar.options,\n defaultValue: []\n },\n title: {\n name: Radar.title\n }\n },\n superTypes: []\n },\n Section: {\n name: Section.$type,\n properties: {\n classSelector: {\n name: Section.classSelector\n },\n name: {\n name: Section.name\n }\n },\n superTypes: [Item.$type]\n },\n Service: {\n name: Service.$type,\n properties: {\n icon: {\n name: Service.icon\n },\n iconText: {\n name: Service.iconText\n },\n id: {\n name: Service.id\n },\n in: {\n name: Service.in\n },\n title: {\n name: Service.title\n }\n },\n superTypes: []\n },\n Size: {\n name: Size.$type,\n properties: {\n height: {\n name: Size.height\n },\n width: {\n name: Size.width\n }\n },\n superTypes: []\n },\n Statement: {\n name: Statement.$type,\n properties: {},\n superTypes: []\n },\n TreeNode: {\n name: TreeNode.$type,\n properties: {\n indent: {\n name: TreeNode.indent\n },\n name: {\n name: TreeNode.name\n }\n },\n superTypes: []\n },\n TreeView: {\n name: TreeView.$type,\n properties: {\n accDescr: {\n name: TreeView.accDescr\n },\n accTitle: {\n name: TreeView.accTitle\n },\n nodes: {\n name: TreeView.nodes,\n defaultValue: []\n },\n title: {\n name: TreeView.title\n }\n },\n superTypes: []\n },\n Treemap: {\n name: Treemap.$type,\n properties: {\n accDescr: {\n name: Treemap.accDescr\n },\n accTitle: {\n name: Treemap.accTitle\n },\n title: {\n name: Treemap.title\n },\n TreemapRows: {\n name: Treemap.TreemapRows,\n defaultValue: []\n }\n },\n superTypes: []\n },\n TreemapRow: {\n name: TreemapRow.$type,\n properties: {\n indent: {\n name: TreemapRow.indent\n },\n item: {\n name: TreemapRow.item\n }\n },\n superTypes: []\n },\n Wardley: {\n name: Wardley.$type,\n properties: {\n accDescr: {\n name: Wardley.accDescr\n },\n accelerators: {\n name: Wardley.accelerators,\n defaultValue: []\n },\n accTitle: {\n name: Wardley.accTitle\n },\n anchors: {\n name: Wardley.anchors,\n defaultValue: []\n },\n annotation: {\n name: Wardley.annotation,\n defaultValue: []\n },\n annotations: {\n name: Wardley.annotations,\n defaultValue: []\n },\n components: {\n name: Wardley.components,\n defaultValue: []\n },\n deaccelerators: {\n name: Wardley.deaccelerators,\n defaultValue: []\n },\n evolution: {\n name: Wardley.evolution\n },\n evolves: {\n name: Wardley.evolves,\n defaultValue: []\n },\n links: {\n name: Wardley.links,\n defaultValue: []\n },\n notes: {\n name: Wardley.notes,\n defaultValue: []\n },\n pipelines: {\n name: Wardley.pipelines,\n defaultValue: []\n },\n size: {\n name: Wardley.size\n },\n title: {\n name: Wardley.title\n }\n },\n superTypes: []\n }\n };\n }\n static {\n __name(this, \"MermaidAstReflection\");\n }\n};\nvar reflection2 = new MermaidAstReflection();\n\n// src/language/generated/grammar.ts\nvar loadedArchitectureGrammarGrammar;\nvar ArchitectureGrammarGrammar = /* @__PURE__ */ __name(() => loadedArchitectureGrammarGrammar ?? (loadedArchitectureGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"ArchitectureGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Architecture\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Keyword\",\"value\":\"architecture-beta\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Statement\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"groups\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"services\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"junctions\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"edges\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"LeftPort\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\":\"},{\"$type\":\"Assignment\",\"feature\":\"lhsDir\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"RightPort\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"rhsDir\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\":\"}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Arrow\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"lhsInto\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"--\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"-\"},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@29\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"-\"}]}]},{\"$type\":\"Assignment\",\"feature\":\"rhsInto\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Group\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"group\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"icon\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@28\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@29\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"in\"},{\"$type\":\"Assignment\",\"feature\":\"in\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Service\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"service\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"iconText\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@21\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"icon\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@28\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@29\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"in\"},{\"$type\":\"Assignment\",\"feature\":\"in\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Junction\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"junction\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"in\"},{\"$type\":\"Assignment\",\"feature\":\"in\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Edge\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"lhsId\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"lhsGroup\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"rhsId\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"rhsGroup\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"ARROW_DIRECTION\",\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"L\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"R\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"T\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"B\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARROW_GROUP\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\{group\\\\\\\\}/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARROW_INTO\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/<|>/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@18\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARCH_ICON\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\([\\\\\\\\w-:]+\\\\\\\\)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARCH_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\[(?:\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'|[\\\\\\\\w ]+)\\\\\\\\]/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false}],\"interfaces\":[],\"types\":[]}`)), \"ArchitectureGrammarGrammar\");\nvar loadedEventModelingGrammar;\nvar EventModelingGrammar = /* @__PURE__ */ __name(() => loadedEventModelingGrammar ?? (loadedEventModelingGrammar = loadGrammarFromJson('{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"EventModeling\",\"interfaces\":[{\"$type\":\"Interface\",\"name\":\"Common\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"accDescr\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}},{\"$type\":\"TypeAttribute\",\"name\":\"accTitle\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}},{\"$type\":\"TypeAttribute\",\"name\":\"title\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}}],\"superTypes\":[]}],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"EventModel\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"eventmodeling\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@21\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"modelEntities\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"frames\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"dataEntities\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"noteEntities\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"gwtEntities\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmModelEntityType\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"rmo\"},{\"$type\":\"Keyword\",\"value\":\"readmodel\"},{\"$type\":\"Keyword\",\"value\":\"ui\"},{\"$type\":\"Keyword\",\"value\":\"cmd\"},{\"$type\":\"Keyword\",\"value\":\"command\"},{\"$type\":\"Keyword\",\"value\":\"evt\"},{\"$type\":\"Keyword\",\"value\":\"event\"},{\"$type\":\"Keyword\",\"value\":\"pcr\"},{\"$type\":\"Keyword\",\"value\":\"processor\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmDataType\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"json\"},{\"$type\":\"Keyword\",\"value\":\"jsobj\"},{\"$type\":\"Keyword\",\"value\":\"figma\"},{\"$type\":\"Keyword\",\"value\":\"salt\"},{\"$type\":\"Keyword\",\"value\":\"uri\"},{\"$type\":\"Keyword\",\"value\":\"md\"},{\"$type\":\"Keyword\",\"value\":\"html\"},{\"$type\":\"Keyword\",\"value\":\"text\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"EmDataInline\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"`\"},{\"$type\":\"Assignment\",\"feature\":\"dataType\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"`\"}],\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"dataInlineValue\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@18\"},\"arguments\":[]}}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"EmDataBlock\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"`\"},{\"$type\":\"Assignment\",\"feature\":\"dataType\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"`\"}],\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"dataBlockValue\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"QualifiedName\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\".\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmTimeFrame\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"tf\"},{\"$type\":\"Keyword\",\"value\":\"timeframe\"}]},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"modelEntityType\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"entityIdentifier\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"->>\"},{\"$type\":\"Assignment\",\"feature\":\"sourceFrames\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@8\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}}],\"cardinality\":\"*\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"[[\"},{\"$type\":\"Assignment\",\"feature\":\"dataReference\",\"operator\":\"=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@10\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}},{\"$type\":\"Keyword\",\"value\":\"]]\"}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmResetFrame\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"rf\"},{\"$type\":\"Keyword\",\"value\":\"resetframe\"}]},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"modelEntityType\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"entityIdentifier\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"->>\"},{\"$type\":\"Assignment\",\"feature\":\"sourceFrames\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@8\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}}],\"cardinality\":\"*\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"[[\"},{\"$type\":\"Assignment\",\"feature\":\"dataReference\",\"operator\":\"=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@10\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}},{\"$type\":\"Keyword\",\"value\":\"]]\"}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmFrame\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmModelEntity\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"entity\"},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmDataEntity\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"data\"},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmNoteEntity\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"note\"},{\"$type\":\"Assignment\",\"feature\":\"sourceFrame\",\"operator\":\"=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@8\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmGwt\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"gwt\"},{\"$type\":\"Assignment\",\"feature\":\"sourceFrame\",\"operator\":\"=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@8\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}},{\"$type\":\"Keyword\",\"value\":\"given\"},{\"$type\":\"Assignment\",\"feature\":\"givenStatements\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]},\"cardinality\":\"+\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"when\"},{\"$type\":\"Assignment\",\"feature\":\"whenStatements\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]},\"cardinality\":\"+\"}],\"cardinality\":\"?\"},{\"$type\":\"Keyword\",\"value\":\"then\"},{\"$type\":\"Assignment\",\"feature\":\"thenStatements\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]},\"cardinality\":\"+\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EmGwtStatement\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"entityIdentifier\",\"operator\":\"=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@9\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EM_EID\",\"dataType\":\"string\",\"definition\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EM_FI\",\"dataType\":\"string\",\"definition\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"EM_ID\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[_a-zA-Z][\\\\\\\\w_]*/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"EM_FID\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\d{1,3}/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"EM_DATA_INLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\{(.*)\\\\\\\\}|\\\\\"(.*)\\\\\"|\\'(.*)\\'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"EM_DATA_BLOCK\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\{[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?\\\\\\\\}(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"EM_ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"EM_ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"EM_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"EM_WS\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\s+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"EM_YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"EM_DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"EM_SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"EM_ML_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\/\\\\\\\\*[\\\\\\\\s\\\\\\\\S]*?\\\\\\\\*\\\\\\\\//\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"EM_SL_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\/\\\\\\\\/[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"imports\":[],\"types\":[]}')), \"EventModelingGrammar\");\nvar loadedGitGraphGrammarGrammar;\nvar GitGraphGrammarGrammar = /* @__PURE__ */ __name(() => loadedGitGraphGrammarGrammar ?? (loadedGitGraphGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"GitGraphGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"GitGraph\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"gitGraph\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"gitGraph\"},{\"$type\":\"Keyword\",\"value\":\":\"}]},{\"$type\":\"Keyword\",\"value\":\"gitGraph:\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"gitGraph\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]},{\"$type\":\"Keyword\",\"value\":\":\"}]}]},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"statements\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Statement\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Direction\",\"definition\":{\"$type\":\"Assignment\",\"feature\":\"dir\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"LR\"},{\"$type\":\"Keyword\",\"value\":\"TB\"},{\"$type\":\"Keyword\",\"value\":\"BT\"}]}},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Commit\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"commit\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"id:\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"msg:\",\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"message\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"tag:\"},{\"$type\":\"Assignment\",\"feature\":\"tags\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"type:\"},{\"$type\":\"Assignment\",\"feature\":\"type\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"NORMAL\"},{\"$type\":\"Keyword\",\"value\":\"REVERSE\"},{\"$type\":\"Keyword\",\"value\":\"HIGHLIGHT\"}]}}]}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Branch\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"branch\"},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@24\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"order:\"},{\"$type\":\"Assignment\",\"feature\":\"order\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Merge\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"merge\"},{\"$type\":\"Assignment\",\"feature\":\"branch\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@24\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}]}},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"id:\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"tag:\"},{\"$type\":\"Assignment\",\"feature\":\"tags\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"type:\"},{\"$type\":\"Assignment\",\"feature\":\"type\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"NORMAL\"},{\"$type\":\"Keyword\",\"value\":\"REVERSE\"},{\"$type\":\"Keyword\",\"value\":\"HIGHLIGHT\"}]}}]}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Checkout\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"checkout\"},{\"$type\":\"Keyword\",\"value\":\"switch\"}]},{\"$type\":\"Assignment\",\"feature\":\"branch\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@24\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"CherryPicking\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"cherry-pick\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"id:\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"tag:\"},{\"$type\":\"Assignment\",\"feature\":\"tags\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"parent:\"},{\"$type\":\"Assignment\",\"feature\":\"parent\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"name\":\"REFERENCE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\w([-\\\\\\\\./\\\\\\\\w]*[-\\\\\\\\w])?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false}],\"interfaces\":[],\"types\":[]}`)), \"GitGraphGrammarGrammar\");\nvar loadedInfoGrammarGrammar;\nvar InfoGrammarGrammar = /* @__PURE__ */ __name(() => loadedInfoGrammarGrammar ?? (loadedInfoGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"InfoGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Info\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Keyword\",\"value\":\"info\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"showInfo\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[],\"cardinality\":\"*\"}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[],\"cardinality\":\"?\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[],\"types\":[]}`)), \"InfoGrammarGrammar\");\nvar loadedPacketGrammarGrammar;\nvar PacketGrammarGrammar = /* @__PURE__ */ __name(() => loadedPacketGrammarGrammar ?? (loadedPacketGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"PacketGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Packet\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"packet\"},{\"$type\":\"Keyword\",\"value\":\"packet-beta\"}]},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"blocks\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"PacketBlock\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"start\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"-\"},{\"$type\":\"Assignment\",\"feature\":\"end\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}}],\"cardinality\":\"?\"}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"+\"},{\"$type\":\"Assignment\",\"feature\":\"bits\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}}]}]},{\"$type\":\"Keyword\",\"value\":\":\"},{\"$type\":\"Assignment\",\"feature\":\"label\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[],\"types\":[]}`)), \"PacketGrammarGrammar\");\nvar loadedPieGrammarGrammar;\nvar PieGrammarGrammar = /* @__PURE__ */ __name(() => loadedPieGrammarGrammar ?? (loadedPieGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"PieGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Pie\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Keyword\",\"value\":\"pie\"},{\"$type\":\"Assignment\",\"feature\":\"showData\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"showData\"},\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"sections\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"PieSection\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"label\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\":\"},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT_PIE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/-?[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT_PIE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/-?(0|[1-9][0-9]*)(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER_PIE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[],\"types\":[]}`)), \"PieGrammarGrammar\");\nvar loadedRadarGrammarGrammar;\nvar RadarGrammarGrammar = /* @__PURE__ */ __name(() => loadedRadarGrammarGrammar ?? (loadedRadarGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"RadarGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Radar\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"radar-beta\"},{\"$type\":\"Keyword\",\"value\":\"radar-beta:\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"radar-beta\"},{\"$type\":\"Keyword\",\"value\":\":\"}]}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"axis\"},{\"$type\":\"Assignment\",\"feature\":\"axes\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"axes\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"curve\"},{\"$type\":\"Assignment\",\"feature\":\"curves\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"curves\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"options\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"options\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Label\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"label\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@18\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Axis\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Curve\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[],\"cardinality\":\"?\"},{\"$type\":\"Keyword\",\"value\":\"{\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]},{\"$type\":\"Keyword\",\"value\":\"}\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Entries\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Assignment\",\"feature\":\"entries\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Assignment\",\"feature\":\"entries\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Assignment\",\"feature\":\"entries\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Assignment\",\"feature\":\"entries\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"}]}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"DetailedEntry\",\"returnType\":{\"$ref\":\"#/interfaces@0\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"axis\",\"operator\":\"=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@2\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}},{\"$type\":\"Keyword\",\"value\":\":\",\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"NumberEntry\",\"returnType\":{\"$ref\":\"#/interfaces@0\"},\"definition\":{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Option\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"showLegend\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"ticks\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"max\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"min\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"graticule\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}}]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"GRATICULE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"circle\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"polygon\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[{\"$type\":\"Interface\",\"name\":\"Entry\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"axis\",\"isOptional\":true,\"type\":{\"$type\":\"ReferenceType\",\"referenceType\":{\"$type\":\"SimpleType\",\"typeRef\":{\"$ref\":\"#/rules@2\"}},\"isMulti\":false}},{\"$type\":\"TypeAttribute\",\"name\":\"value\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"number\"},\"isOptional\":false}],\"superTypes\":[]}],\"types\":[]}`)), \"RadarGrammarGrammar\");\nvar loadedTreemapGrammarGrammar;\nvar TreemapGrammarGrammar = /* @__PURE__ */ __name(() => loadedTreemapGrammarGrammar ?? (loadedTreemapGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"TreemapGrammar\",\"rules\":[{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Treemap\",\"returnType\":{\"$ref\":\"#/interfaces@4\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@0\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"TreemapRows\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"TREEMAP_KEYWORD\",\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"treemap-beta\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"treemap\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"CLASS_DEF\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/classDef\\\\\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\\\\\s+([^;\\\\\\\\r\\\\\\\\n]*))?(?:;)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STYLE_SEPARATOR\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\":::\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"SEPARATOR\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\":\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"COMMA\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\",\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INDENTATION\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[ \\\\\\\\t]{1,}/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WS\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[ \\\\\\\\t]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"ML_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\%\\\\\\\\%[^\\\\\\\\n]*/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"NL\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"ParserRule\",\"name\":\"TreemapRow\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"indent\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"item\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"ClassDef\",\"dataType\":\"string\",\"definition\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Item\",\"returnType\":{\"$ref\":\"#/interfaces@0\"},\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@18\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Section\",\"returnType\":{\"$ref\":\"#/interfaces@1\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"classSelector\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]}}],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Leaf\",\"returnType\":{\"$ref\":\"#/interfaces@2\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[],\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[],\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"classSelector\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]}}],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"ID2\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[a-zA-Z_][a-zA-Z0-9_]*/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER2\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9_\\\\\\\\.\\\\\\\\,]+/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"name\":\"MyNumber\",\"dataType\":\"number\",\"definition\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@21\"},\"arguments\":[]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"STRING2\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"[^\\\\\"]*\\\\\"|'[^']*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false}],\"interfaces\":[{\"$type\":\"Interface\",\"name\":\"Item\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"name\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"},\"isOptional\":false},{\"$type\":\"TypeAttribute\",\"name\":\"classSelector\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}}],\"superTypes\":[]},{\"$type\":\"Interface\",\"name\":\"Section\",\"superTypes\":[{\"$ref\":\"#/interfaces@0\"}],\"attributes\":[]},{\"$type\":\"Interface\",\"name\":\"Leaf\",\"superTypes\":[{\"$ref\":\"#/interfaces@0\"}],\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"value\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"number\"},\"isOptional\":false}]},{\"$type\":\"Interface\",\"name\":\"ClassDefStatement\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"className\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"},\"isOptional\":false},{\"$type\":\"TypeAttribute\",\"name\":\"styleText\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"},\"isOptional\":false}],\"superTypes\":[]},{\"$type\":\"Interface\",\"name\":\"Treemap\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"TreemapRows\",\"type\":{\"$type\":\"ArrayType\",\"elementType\":{\"$type\":\"SimpleType\",\"typeRef\":{\"$ref\":\"#/rules@15\"}}},\"isOptional\":false},{\"$type\":\"TypeAttribute\",\"name\":\"title\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}},{\"$type\":\"TypeAttribute\",\"name\":\"accTitle\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}},{\"$type\":\"TypeAttribute\",\"name\":\"accDescr\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}}],\"superTypes\":[]}],\"imports\":[],\"types\":[],\"$comment\":\"/**\\\\n * Treemap grammar for Langium\\\\n * Converted from mindmap grammar\\\\n *\\\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\\\n * before the treemap keyword, allowing for empty lines and comments before the\\\\n * treemap declaration.\\\\n */\"}`)), \"TreemapGrammarGrammar\");\nvar loadedTreeViewGrammarGrammar;\nvar TreeViewGrammarGrammar = /* @__PURE__ */ __name(() => loadedTreeViewGrammarGrammar ?? (loadedTreeViewGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"TreeViewGrammar\",\"rules\":[{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"TreeView\",\"returnType\":{\"$ref\":\"#/interfaces@0\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"treeView-beta\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[],\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"nodes\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]},\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@0\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"INDENTATION\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[ \\\\\\\\t]{1,}/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WS\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[ \\\\\\\\t]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"ML_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\%\\\\\\\\%[^\\\\\\\\n]*/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"NL\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"ParserRule\",\"name\":\"TreeNode\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"indent\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]}}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"STRING2\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"[^\\\\\"]*\\\\\"|'[^']*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false}],\"interfaces\":[{\"$type\":\"Interface\",\"name\":\"TreeView\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"nodes\",\"type\":{\"$type\":\"ArrayType\",\"elementType\":{\"$type\":\"SimpleType\",\"typeRef\":{\"$ref\":\"#/rules@9\"}}},\"isOptional\":false},{\"$type\":\"TypeAttribute\",\"name\":\"title\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}},{\"$type\":\"TypeAttribute\",\"name\":\"accTitle\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}},{\"$type\":\"TypeAttribute\",\"name\":\"accDescr\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}}],\"superTypes\":[]}],\"imports\":[],\"types\":[],\"$comment\":\"/**\\\\n * TreeView grammar for Langium\\\\n * Converted from treemap grammar\\\\n *\\\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\\\n * before the treemap keyword, allowing for empty lines and comments before the\\\\n * treeView declaration.\\\\n */\"}`)), \"TreeViewGrammarGrammar\");\nvar loadedWardleyGrammarGrammar;\nvar WardleyGrammarGrammar = /* @__PURE__ */ __name(() => loadedWardleyGrammarGrammar ?? (loadedWardleyGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"WardleyGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Wardley\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@52\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@25\"},\"arguments\":[]},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@52\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@42\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Statement\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"size\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"evolution\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"anchors\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"components\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"links\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"evolves\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"pipelines\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"notes\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"annotations\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"annotation\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accelerators\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"deaccelerators\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@18\"},\"arguments\":[]}}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Size\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@26\"},\"arguments\":[]},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"width\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@48\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"height\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@48\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Evolution\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@27\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"stages\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"stages\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}}],\"cardinality\":\"+\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EvolutionStage\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"@\"},{\"$type\":\"Assignment\",\"feature\":\"boundary\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"/\"},{\"$type\":\"Assignment\",\"feature\":\"secondName\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}}],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Anchor\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@28\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"visibility\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"evolution\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Component\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@29\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"visibility\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"evolution\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"Assignment\",\"feature\":\"label\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"decorator\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"inertia\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@31\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"(\"},{\"$type\":\"Assignment\",\"feature\":\"inertia\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@31\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\")\"}]}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Label\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@30\"},\"arguments\":[]},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"negX\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"-\"},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"offsetX\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@48\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"negY\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"-\"},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"offsetY\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@48\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Decorator\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"(\"},{\"$type\":\"Assignment\",\"feature\":\"strategy\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@24\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\")\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Link\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"from\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Assignment\",\"feature\":\"fromPort\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@21\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"arrow\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]}]},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"to\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Assignment\",\"feature\":\"toPort\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@21\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"linkLabel\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Evolve\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@32\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"component\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Assignment\",\"feature\":\"target\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Pipeline\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@33\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"parent\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Keyword\",\"value\":\"{\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@52\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"Assignment\",\"feature\":\"components\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]},\"cardinality\":\"+\"},{\"$type\":\"Keyword\",\"value\":\"}\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"PipelineComponent\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@29\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"evolution\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"Assignment\",\"feature\":\"label\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Note\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@34\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"text\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"visibility\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"evolution\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Annotations\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@35\"},\"arguments\":[]},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"x\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"y\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Annotation\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@36\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"number\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@48\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"x\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"y\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"Assignment\",\"feature\":\"text\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"CoordinateValue\",\"dataType\":\"number\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@48\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Accelerator\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@37\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"x\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"y\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Deaccelerator\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@38\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@50\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@51\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@39\"},\"arguments\":[]}]}},{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"x\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"y\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"WARDLEY_NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARROW\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"->\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"LINK_PORT\",\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"+<>\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"+>\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"+<\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"LINK_ARROW\",\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"-->\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"-.->\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\">\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\+'[^']*'<>/\",\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\+'[^']*'/\",\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"LINK_LABEL\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/;[^\\\\\\\\n\\\\\\\\r]+/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRATEGY\",\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"build\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"buy\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"outsource\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"market\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_WARDLEY\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"wardley-beta\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_SIZE\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"size\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_EVOLUTION\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"evolution\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_ANCHOR\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"anchor\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_COMPONENT\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"component\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_LABEL\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"label\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_INERTIA\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"inertia\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_EVOLVE\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"evolve\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_PIPELINE\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"pipeline\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_NOTE\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"note\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_ANNOTATIONS\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"annotations\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_ANNOTATION\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"annotation\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_ACCELERATOR\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"accelerator\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"KW_DEACCELERATOR\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"deaccelerator\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NAME_WITH_SPACES\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/(?!title\\\\\\\\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \\\\\\\\t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WS\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[ \\\\\\\\t]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@52\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@44\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@45\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@46\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@41\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@47\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@48\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[],\"types\":[]}`)), \"WardleyGrammarGrammar\");\n\n// src/language/generated/module.ts\nvar ArchitectureGrammarLanguageMetaData = {\n languageId: \"architecture\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar EventModelingLanguageMetaData = {\n languageId: \"eventmodeling\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar GitGraphGrammarLanguageMetaData = {\n languageId: \"gitGraph\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar InfoGrammarLanguageMetaData = {\n languageId: \"info\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar PacketGrammarLanguageMetaData = {\n languageId: \"packet\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar PieGrammarLanguageMetaData = {\n languageId: \"pie\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar RadarGrammarLanguageMetaData = {\n languageId: \"radar\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar TreemapGrammarLanguageMetaData = {\n languageId: \"treemap\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar TreeViewGrammarLanguageMetaData = {\n languageId: \"treeView\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar WardleyGrammarLanguageMetaData = {\n languageId: \"wardley\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar MermaidGeneratedSharedModule = {\n AstReflection: /* @__PURE__ */ __name(() => new MermaidAstReflection(), \"AstReflection\")\n};\nvar ArchitectureGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => ArchitectureGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => ArchitectureGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar EventModelingGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => EventModelingGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => EventModelingLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar GitGraphGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => GitGraphGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => GitGraphGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar InfoGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => InfoGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => InfoGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar PacketGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => PacketGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => PacketGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar PieGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => PieGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => PieGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar RadarGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => RadarGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => RadarGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar TreemapGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => TreemapGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => TreemapGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar TreeViewGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => TreeViewGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => TreeViewGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar WardleyGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => WardleyGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => WardleyGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\n\n// src/language/common/matcher.ts\nvar accessibilityDescrRegex = /accDescr(?:[\\t ]*:([^\\n\\r]*)|\\s*{([^}]*)})/;\nvar accessibilityTitleRegex = /accTitle[\\t ]*:([^\\n\\r]*)/;\nvar titleRegex = /title([\\t ][^\\n\\r]*|)/;\n\n// src/language/common/valueConverter.ts\nvar rulesRegexes = {\n ACC_DESCR: accessibilityDescrRegex,\n ACC_TITLE: accessibilityTitleRegex,\n TITLE: titleRegex\n};\nvar AbstractMermaidValueConverter = class extends DefaultValueConverter {\n static {\n __name(this, \"AbstractMermaidValueConverter\");\n }\n runConverter(rule, input, cstNode) {\n let value = this.runCommonConverter(rule, input, cstNode);\n if (value === void 0) {\n value = this.runCustomConverter(rule, input, cstNode);\n }\n if (value === void 0) {\n return super.runConverter(rule, input, cstNode);\n }\n return value;\n }\n runCommonConverter(rule, input, _cstNode) {\n const regex = rulesRegexes[rule.name];\n if (regex === void 0) {\n return void 0;\n }\n const match = regex.exec(input);\n if (match === null) {\n return void 0;\n }\n if (match[1] !== void 0) {\n return match[1].trim().replace(/[\\t ]{2,}/gm, \" \");\n }\n if (match[2] !== void 0) {\n return match[2].replace(/^\\s*/gm, \"\").replace(/\\s+$/gm, \"\").replace(/[\\t ]{2,}/gm, \" \").replace(/[\\n\\r]{2,}/gm, \"\\n\");\n }\n return void 0;\n }\n};\nvar CommonValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"CommonValueConverter\");\n }\n runCustomConverter(_rule, _input, _cstNode) {\n return void 0;\n }\n};\n\n// src/language/common/tokenBuilder.ts\nvar AbstractMermaidTokenBuilder = class extends DefaultTokenBuilder {\n static {\n __name(this, \"AbstractMermaidTokenBuilder\");\n }\n constructor(keywords) {\n super();\n this.keywords = new Set(keywords);\n }\n buildKeywordTokens(rules, terminalTokens, options) {\n const tokenTypes = super.buildKeywordTokens(rules, terminalTokens, options);\n tokenTypes.forEach((tokenType) => {\n if (this.keywords.has(tokenType.name) && tokenType.PATTERN !== void 0) {\n tokenType.PATTERN = new RegExp(tokenType.PATTERN.toString() + \"(?:(?=%%)|(?!\\\\S))\");\n }\n });\n return tokenTypes;\n }\n};\nvar CommonTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"CommonTokenBuilder\");\n }\n};\n\nexport {\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n EmptyFileSystem,\n lib_exports,\n Architecture,\n isArchitecture,\n Branch,\n isBranch,\n Commit,\n isCommit,\n EmDataEntity,\n EmFrame,\n isEmModelEntityType,\n isEmResetFrame,\n EventModel,\n GitGraph,\n isGitGraph,\n Info,\n isInfo,\n Merge,\n isMerge,\n Packet,\n isPacket,\n PacketBlock,\n isPacketBlock,\n Pie,\n isPie,\n PieSection,\n isPieSection,\n Radar,\n Statement,\n Treemap,\n isTreemap,\n TreeNode,\n TreeView,\n Wardley,\n isWardley,\n MermaidGeneratedSharedModule,\n ArchitectureGrammarGeneratedModule,\n EventModelingGeneratedModule,\n GitGraphGrammarGeneratedModule,\n InfoGrammarGeneratedModule,\n PacketGrammarGeneratedModule,\n PieGrammarGeneratedModule,\n RadarGrammarGeneratedModule,\n TreemapGrammarGeneratedModule,\n TreeViewGrammarGeneratedModule,\n WardleyGrammarGeneratedModule,\n AbstractMermaidValueConverter,\n CommonValueConverter,\n AbstractMermaidTokenBuilder,\n CommonTokenBuilder\n};\n/*! Bundled license information:\n\nlodash-es/lodash.js:\n (**\n * @license\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"es\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n *)\n*/\n"], + "mappings": "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", + "names": ["__create", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__getProtoOf", "__hasOwnProp", "__name", "target", "value", "__esm", "fn", "res", "__commonJS", "cb", "mod", "__export", "all", "name", "__copyProps", "to", "from", "except", "desc", "key", "__reExport", "secondTarget", "__toESM", "isNodeMode", "__toCommonJS", "main_exports", "AnnotatedTextEdit", "ChangeAnnotation", "ChangeAnnotationIdentifier", "CodeAction", "CodeActionContext", "CodeActionKind", "CodeActionTriggerKind", "CodeDescription", "CodeLens", "Color", "ColorInformation", "ColorPresentation", "Command", "CompletionItem", "CompletionItemKind", "CompletionItemLabelDetails", "CompletionItemTag", "CompletionList", "CreateFile", "DeleteFile", "Diagnostic", "DiagnosticRelatedInformation", "DiagnosticSeverity", "DiagnosticTag", "DocumentHighlight", "DocumentHighlightKind", "DocumentLink", "DocumentSymbol", "DocumentUri", "EOL", "FoldingRange", "FoldingRangeKind", "FormattingOptions", "Hover", "InlayHint", "InlayHintKind", "InlayHintLabelPart", "InlineCompletionContext", "InlineCompletionItem", "InlineCompletionList", "InlineCompletionTriggerKind", "InlineValueContext", "InlineValueEvaluatableExpression", "InlineValueText", "InlineValueVariableLookup", "InsertReplaceEdit", "InsertTextFormat", "InsertTextMode", "Location", "LocationLink", "MarkedString", "MarkupContent", "MarkupKind", "OptionalVersionedTextDocumentIdentifier", "ParameterInformation", "Position", "Range", "RenameFile", "SelectedCompletionInfo", "SelectionRange", "SemanticTokenModifiers", "SemanticTokenTypes", "SemanticTokens", "SignatureInformation", "StringValue", "SymbolInformation", "SymbolKind", "SymbolTag", "TextDocument", "TextDocumentEdit", "TextDocumentIdentifier", "TextDocumentItem", "TextEdit", "URI", "VersionedTextDocumentIdentifier", "WorkspaceChange", "WorkspaceEdit", "WorkspaceFolder", "WorkspaceSymbol", "integer", "uinteger", "TextEditChangeImpl", "ChangeAnnotations", "FullTextDocument", "Is", "init_main", "DocumentUri2", "is", "URI3", "integer2", "uinteger2", "Position2", "create", "line", "character", "candidate", "Range2", "one", "two", "three", "four", "Location2", "uri", "range", "LocationLink2", "targetUri", "targetRange", "targetSelectionRange", "originSelectionRange", "Color2", "red", "green", "blue", "alpha", "ColorInformation2", "color", "ColorPresentation2", "label", "textEdit", "additionalTextEdits", "FoldingRangeKind2", "FoldingRange2", "startLine", "endLine", "startCharacter", "endCharacter", "kind", "collapsedText", "result", "DiagnosticRelatedInformation2", "location", "message", "DiagnosticSeverity2", "DiagnosticTag2", "CodeDescription2", "Diagnostic2", "severity", "code", "source", "relatedInformation", "_a", "Command2", "title", "command", "args", "TextEdit2", "replace", "newText", "insert", "position", "del", "ChangeAnnotation2", "needsConfirmation", "description", "ChangeAnnotationIdentifier2", "AnnotatedTextEdit2", "annotation", "TextDocumentEdit2", "textDocument", "edits", "CreateFile2", "options", "RenameFile2", "oldUri", "newUri", "DeleteFile2", "WorkspaceEdit2", "change", "changeAnnotations", "edit", "id", "annotations", "idOrAnnotation", "workspaceEdit", "textEditChange", "textDocumentEdit", "optionsOrAnnotation", "operation", "TextDocumentIdentifier2", "VersionedTextDocumentIdentifier2", "version", "OptionalVersionedTextDocumentIdentifier2", "TextDocumentItem2", "languageId", "text", "MarkupKind2", "MarkupContent2", "CompletionItemKind2", "InsertTextFormat2", "CompletionItemTag2", "InsertReplaceEdit2", "InsertTextMode2", "CompletionItemLabelDetails2", "CompletionItem2", "CompletionList2", "items", "isIncomplete", "MarkedString2", "fromPlainText", "plainText", "Hover2", "ParameterInformation2", "documentation", "SignatureInformation2", "parameters", "DocumentHighlightKind2", "DocumentHighlight2", "SymbolKind2", "SymbolTag2", "SymbolInformation2", "containerName", "WorkspaceSymbol2", "DocumentSymbol2", "detail", "selectionRange", "children", "CodeActionKind2", "CodeActionTriggerKind2", "CodeActionContext2", "diagnostics", "only", "triggerKind", "CodeAction2", "kindOrCommandOrEdit", "checkKind", "CodeLens2", "data", "FormattingOptions2", "tabSize", "insertSpaces", "DocumentLink2", "SelectionRange2", "parent", "SemanticTokenTypes2", "SemanticTokenModifiers2", "SemanticTokens2", "InlineValueText2", "InlineValueVariableLookup2", "variableName", "caseSensitiveLookup", "InlineValueEvaluatableExpression2", "expression", "InlineValueContext2", "frameId", "stoppedLocation", "InlayHintKind2", "InlayHintLabelPart2", "InlayHint2", "StringValue2", "createSnippet", "InlineCompletionItem2", "insertText", "filterText", "InlineCompletionList2", "InlineCompletionTriggerKind2", "SelectedCompletionInfo2", "InlineCompletionContext2", "selectedCompletionInfo", "WorkspaceFolder2", "TextDocument3", "content", "applyEdits", "document", "sortedEdits", "mergeSort2", "a", "b", "diff", "lastModifiedOffset", "i", "e", "startOffset", "endOffset", "compare", "p", "left", "right", "leftIdx", "rightIdx", "start", "end", "event", "lineOffsets", "isLineStart", "ch", "offset", "low", "high", "mid", "lineOffset", "nextLineOffset", "Is2", "toString4", "defined", "undefined2", "boolean", "string", "number", "numberRange", "min2", "max", "func", "objectLiteral", "typedArray", "check", "require_ral", "exports2", "_ral", "RAL", "RAL2", "install", "ral", "require_is", "error", "array", "stringArray", "elem", "require_events", "ral_1", "Event", "Event2", "_disposable", "CallbackList", "callback", "context", "bucket", "foundCallbackWithDifferentContext", "len", "ret", "callbacks", "contexts", "Emitter3", "_Emitter", "_options", "listener", "thisArgs", "disposables", "require_cancellation", "events_1", "CancellationToken11", "CancellationToken12", "shortcutEvent", "handle", "MutableToken", "CancellationTokenSource3", "require_messages", "ErrorCodes", "ErrorCodes2", "ResponseError2", "_ResponseError", "ParameterStructures", "_ParameterStructures", "AbstractMessageSignature", "method", "numberOfParams", "RequestType0", "RequestType", "_parameterStructures", "RequestType1", "RequestType2", "RequestType3", "RequestType4", "RequestType5", "RequestType6", "RequestType7", "RequestType8", "RequestType9", "NotificationType", "NotificationType0", "NotificationType1", "NotificationType2", "NotificationType3", "NotificationType4", "NotificationType5", "NotificationType6", "NotificationType7", "NotificationType8", "NotificationType9", "Message", "Message2", "isRequest", "isNotification", "isResponse", "require_linkedMap", "Touch", "Touch2", "LinkedMap", "touch", "item", "callbackfn", "thisArg", "state", "current", "iterator", "newSize", "currentSize", "next", "previous", "LRUCache", "limit", "ratio", "require_disposable", "Disposable2", "Disposable3", "require_sharedArrayCancellation", "cancellation_1", "CancellationState", "CancellationState2", "SharedArraySenderStrategy", "request", "buffer", "_conn", "SharedArrayBufferCancellationToken", "SharedArrayBufferCancellationTokenSource", "SharedArrayReceiverStrategy", "require_semaphore", "Semaphore", "capacity", "thunk", "resolve", "reject2", "err", "require_messageReader", "semaphore_1", "MessageReader", "MessageReader2", "AbstractMessageReader", "info", "ResolvedMessageReaderOptions", "ResolvedMessageReaderOptions2", "fromOptions", "charset", "contentDecoder", "contentDecoders", "contentTypeDecoder", "contentTypeDecoders", "decoder", "ReadableStreamMessageReader", "readable", "timeout", "headers", "contentLength", "length", "body", "bytes", "token", "require_messageWriter", "ContentLength", "CRLF", "MessageWriter", "MessageWriter2", "AbstractMessageWriter", "count", "ResolvedMessageWriterOptions", "ResolvedMessageWriterOptions2", "WriteableStreamMessageWriter", "writable", "msg", "require_messageBuffer", "CR", "LF", "AbstractMessageBuffer", "encoding", "chunk", "toAppend", "lowerCaseKeys", "chunkIndex", "chunkBytesRead", "row", "header", "index", "byteCount", "result2", "resultOffset", "chunkPart", "require_connection", "messages_1", "linkedMap_1", "CancelNotification", "CancelNotification2", "ProgressToken", "ProgressToken2", "ProgressNotification", "ProgressNotification2", "ProgressType", "StarRequestHandler", "StarRequestHandler2", "Trace", "Trace2", "TraceValues", "TraceValues2", "fromString", "TraceFormat", "TraceFormat2", "SetTraceNotification", "SetTraceNotification2", "LogTraceNotification", "LogTraceNotification2", "ConnectionErrors", "ConnectionErrors2", "ConnectionError", "_ConnectionError", "ConnectionStrategy", "ConnectionStrategy2", "IdCancellationReceiverStrategy", "IdCancellationReceiverStrategy2", "RequestCancellationReceiverStrategy", "RequestCancellationReceiverStrategy2", "CancellationReceiverStrategy", "CancellationReceiverStrategy2", "_", "CancellationSenderStrategy", "CancellationSenderStrategy2", "conn", "CancellationStrategy", "CancellationStrategy2", "MessageStrategy", "MessageStrategy2", "ConnectionOptions", "ConnectionOptions2", "ConnectionState", "ConnectionState2", "createMessageConnection", "messageReader", "messageWriter", "_logger", "logger", "sequenceNumber", "notificationSequenceNumber", "unknownResponseSequenceNumber", "starRequestHandler", "requestHandlers", "starNotificationHandler", "notificationHandlers", "progressHandlers", "timer2", "messageQueue", "responsePromises", "knownCanceledRequests", "requestTokens", "trace", "traceFormat", "tracer", "errorEmitter", "closeEmitter", "unhandledNotificationEmitter", "unhandledProgressEmitter", "disposeEmitter", "cancellationStrategy", "createRequestQueueKey", "createResponseQueueKey", "createNotificationQueueKey", "addMessageToQueue", "queue", "cancelUndispatched", "_message", "isListening", "isClosed", "isDisposed", "closeHandler", "readErrorHandler", "writeErrorHandler", "triggerMessageQueue", "processMessageQueue", "handleMessage", "handleRequest", "handleNotification", "handleResponse", "handleInvalidMessage", "messageStrategy", "cancelId", "toCancel", "strategy", "response", "traceSendingResponse", "cancellationToken", "traceReceivedNotification", "requestMessage", "reply", "resultOrError", "startTime2", "replyError", "replySuccess", "traceReceivedRequest", "element", "type", "requestHandler", "startTime", "tokenKey", "cancellationSource", "handlerResult", "promise", "responseMessage", "responsePromise", "traceReceivedResponse", "notificationHandler", "params", "responseHandler", "stringifyTrace", "traceSendingRequest", "logLSPMessage", "traceSendingNotification", "lspMessage", "throwIfClosedOrDisposed", "throwIfListening", "throwIfNotListening", "undefinedToNull", "param", "nullToUndefined", "isNamedParam", "computeSingleParam", "parameterStructures", "computeMessageParams", "connection", "messageParams", "first2", "paramStart", "paramEnd", "notificationMessage", "handler", "_type", "last2", "disposable", "resolveWithCleanup", "r", "rejectWithCleanup", "_value", "_tracer", "sendNotificationOrTraceOptions", "_sendNotification", "_traceFormat", "verbose", "require_api", "disposable_1", "sharedArrayCancellation_1", "messageReader_1", "messageWriter_1", "messageBuffer_1", "connection_1", "require_ril", "api_1", "MessageBuffer", "_MessageBuffer", "_encoding", "ReadableStreamWrapper", "socket", "WritableStreamWrapper", "_textEncoder", "_ril", "ms", "RIL", "RIL2", "require_main", "__createBinding", "o", "m", "k", "k2", "__exportStar", "exports3", "ril_1", "BrowserMessageReader", "port", "BrowserMessageWriter", "reader", "writer", "require_browser", "module2", "require_messages2", "vscode_jsonrpc_1", "MessageDirection", "MessageDirection2", "RegistrationType", "ProtocolRequestType0", "ProtocolRequestType", "ProtocolNotificationType0", "ProtocolNotificationType", "require_is2", "require_protocol_implementation", "ImplementationRequest", "ImplementationRequest2", "require_protocol_typeDefinition", "TypeDefinitionRequest", "TypeDefinitionRequest2", "require_protocol_workspaceFolder", "WorkspaceFoldersRequest", "WorkspaceFoldersRequest2", "DidChangeWorkspaceFoldersNotification", "DidChangeWorkspaceFoldersNotification2", "require_protocol_configuration", "ConfigurationRequest", "ConfigurationRequest2", "require_protocol_colorProvider", "DocumentColorRequest", "DocumentColorRequest2", "ColorPresentationRequest", "ColorPresentationRequest2", "require_protocol_foldingRange", "FoldingRangeRequest", "FoldingRangeRequest2", "FoldingRangeRefreshRequest", "FoldingRangeRefreshRequest2", "require_protocol_declaration", "DeclarationRequest", "DeclarationRequest2", "require_protocol_selectionRange", "SelectionRangeRequest", "SelectionRangeRequest2", "require_protocol_progress", "WorkDoneProgress", "WorkDoneProgress2", "WorkDoneProgressCreateRequest", "WorkDoneProgressCreateRequest2", "WorkDoneProgressCancelNotification", "WorkDoneProgressCancelNotification2", "require_protocol_callHierarchy", "CallHierarchyPrepareRequest", "CallHierarchyPrepareRequest2", "CallHierarchyIncomingCallsRequest", "CallHierarchyIncomingCallsRequest2", "CallHierarchyOutgoingCallsRequest", "CallHierarchyOutgoingCallsRequest2", "require_protocol_semanticTokens", "TokenFormat", "TokenFormat2", "SemanticTokensRegistrationType", "SemanticTokensRegistrationType2", "SemanticTokensRequest", "SemanticTokensRequest2", "SemanticTokensDeltaRequest", "SemanticTokensDeltaRequest2", "SemanticTokensRangeRequest", "SemanticTokensRangeRequest2", "SemanticTokensRefreshRequest", "SemanticTokensRefreshRequest2", "require_protocol_showDocument", "ShowDocumentRequest", "ShowDocumentRequest2", "require_protocol_linkedEditingRange", "LinkedEditingRangeRequest", "LinkedEditingRangeRequest2", "require_protocol_fileOperations", "FileOperationPatternKind", "FileOperationPatternKind2", "WillCreateFilesRequest", "WillCreateFilesRequest2", "DidCreateFilesNotification", "DidCreateFilesNotification2", "WillRenameFilesRequest", "WillRenameFilesRequest2", "DidRenameFilesNotification", "DidRenameFilesNotification2", "DidDeleteFilesNotification", "DidDeleteFilesNotification2", "WillDeleteFilesRequest", "WillDeleteFilesRequest2", "require_protocol_moniker", "UniquenessLevel", "UniquenessLevel2", "MonikerKind", "MonikerKind2", "MonikerRequest", "MonikerRequest2", "require_protocol_typeHierarchy", "TypeHierarchyPrepareRequest", "TypeHierarchyPrepareRequest2", "TypeHierarchySupertypesRequest", "TypeHierarchySupertypesRequest2", "TypeHierarchySubtypesRequest", "TypeHierarchySubtypesRequest2", "require_protocol_inlineValue", "InlineValueRequest", "InlineValueRequest2", "InlineValueRefreshRequest", "InlineValueRefreshRequest2", "require_protocol_inlayHint", "InlayHintRequest", "InlayHintRequest2", "InlayHintResolveRequest", "InlayHintResolveRequest2", "InlayHintRefreshRequest", "InlayHintRefreshRequest2", "require_protocol_diagnostic", "DiagnosticServerCancellationData", "DiagnosticServerCancellationData2", "DocumentDiagnosticReportKind", "DocumentDiagnosticReportKind2", "DocumentDiagnosticRequest", "DocumentDiagnosticRequest2", "WorkspaceDiagnosticRequest", "WorkspaceDiagnosticRequest2", "DiagnosticRefreshRequest", "DiagnosticRefreshRequest2", "require_protocol_notebook", "vscode_languageserver_types_1", "NotebookCellKind", "NotebookCellKind2", "ExecutionSummary", "ExecutionSummary2", "executionOrder", "success", "equals", "other", "NotebookCell", "NotebookCell2", "equalsMetadata", "oneArray", "otherArray", "oneKeys", "otherKeys", "prop", "NotebookDocument", "NotebookDocument2", "notebookType", "cells", "NotebookDocumentSyncRegistrationType", "NotebookDocumentSyncRegistrationType2", "DidOpenNotebookDocumentNotification", "DidOpenNotebookDocumentNotification2", "NotebookCellArrayChange", "NotebookCellArrayChange2", "deleteCount", "DidChangeNotebookDocumentNotification", "DidChangeNotebookDocumentNotification2", "DidSaveNotebookDocumentNotification", "DidSaveNotebookDocumentNotification2", "DidCloseNotebookDocumentNotification", "DidCloseNotebookDocumentNotification2", "require_protocol_inlineCompletion", "InlineCompletionRequest", "InlineCompletionRequest2", "require_protocol", "protocol_implementation_1", "protocol_typeDefinition_1", "protocol_workspaceFolder_1", "protocol_configuration_1", "protocol_colorProvider_1", "protocol_foldingRange_1", "protocol_declaration_1", "protocol_selectionRange_1", "protocol_progress_1", "protocol_callHierarchy_1", "protocol_semanticTokens_1", "protocol_showDocument_1", "protocol_linkedEditingRange_1", "protocol_fileOperations_1", "protocol_moniker_1", "protocol_typeHierarchy_1", "protocol_inlineValue_1", "protocol_inlayHint_1", "protocol_diagnostic_1", "protocol_notebook_1", "protocol_inlineCompletion_1", "TextDocumentFilter", "TextDocumentFilter2", "NotebookDocumentFilter", "NotebookDocumentFilter2", "NotebookCellTextDocumentFilter", "NotebookCellTextDocumentFilter2", "DocumentSelector", "DocumentSelector2", "RegistrationRequest", "RegistrationRequest2", "UnregistrationRequest", "UnregistrationRequest2", "ResourceOperationKind", "ResourceOperationKind2", "FailureHandlingKind", "FailureHandlingKind2", "PositionEncodingKind", "PositionEncodingKind2", "StaticRegistrationOptions", "StaticRegistrationOptions2", "hasId", "TextDocumentRegistrationOptions", "TextDocumentRegistrationOptions2", "WorkDoneProgressOptions", "WorkDoneProgressOptions2", "hasWorkDoneProgress", "InitializeRequest", "InitializeRequest2", "InitializeErrorCodes", "InitializeErrorCodes2", "InitializedNotification", "InitializedNotification2", "ShutdownRequest", "ShutdownRequest2", "ExitNotification", "ExitNotification2", "DidChangeConfigurationNotification", "DidChangeConfigurationNotification2", "MessageType", "MessageType2", "ShowMessageNotification", "ShowMessageNotification2", "ShowMessageRequest", "ShowMessageRequest2", "LogMessageNotification", "LogMessageNotification2", "TelemetryEventNotification", "TelemetryEventNotification2", "TextDocumentSyncKind", "TextDocumentSyncKind2", "DidOpenTextDocumentNotification", "DidOpenTextDocumentNotification2", "TextDocumentContentChangeEvent", "TextDocumentContentChangeEvent2", "isIncremental", "isFull", "DidChangeTextDocumentNotification", "DidChangeTextDocumentNotification2", "DidCloseTextDocumentNotification", "DidCloseTextDocumentNotification2", "DidSaveTextDocumentNotification", "DidSaveTextDocumentNotification2", "TextDocumentSaveReason", "TextDocumentSaveReason2", "WillSaveTextDocumentNotification", "WillSaveTextDocumentNotification2", "WillSaveTextDocumentWaitUntilRequest", "WillSaveTextDocumentWaitUntilRequest2", "DidChangeWatchedFilesNotification", "DidChangeWatchedFilesNotification2", "FileChangeType", "FileChangeType2", "RelativePattern", "RelativePattern2", "WatchKind", "WatchKind2", "PublishDiagnosticsNotification", "PublishDiagnosticsNotification2", "CompletionTriggerKind", "CompletionTriggerKind2", "CompletionRequest", "CompletionRequest2", "CompletionResolveRequest", "CompletionResolveRequest2", "HoverRequest", "HoverRequest2", "SignatureHelpTriggerKind", "SignatureHelpTriggerKind2", "SignatureHelpRequest", "SignatureHelpRequest2", "DefinitionRequest", "DefinitionRequest2", "ReferencesRequest", "ReferencesRequest2", "DocumentHighlightRequest", "DocumentHighlightRequest2", "DocumentSymbolRequest", "DocumentSymbolRequest2", "CodeActionRequest", "CodeActionRequest2", "CodeActionResolveRequest", "CodeActionResolveRequest2", "WorkspaceSymbolRequest", "WorkspaceSymbolRequest2", "WorkspaceSymbolResolveRequest", "WorkspaceSymbolResolveRequest2", "CodeLensRequest", "CodeLensRequest2", "CodeLensResolveRequest", "CodeLensResolveRequest2", "CodeLensRefreshRequest", "CodeLensRefreshRequest2", "DocumentLinkRequest", "DocumentLinkRequest2", "DocumentLinkResolveRequest", "DocumentLinkResolveRequest2", "DocumentFormattingRequest", "DocumentFormattingRequest2", "DocumentRangeFormattingRequest", "DocumentRangeFormattingRequest2", "DocumentRangesFormattingRequest", "DocumentRangesFormattingRequest2", "DocumentOnTypeFormattingRequest", "DocumentOnTypeFormattingRequest2", "PrepareSupportDefaultBehavior", "PrepareSupportDefaultBehavior2", "RenameRequest", "RenameRequest2", "PrepareRenameRequest", "PrepareRenameRequest2", "ExecuteCommandRequest", "ExecuteCommandRequest2", "ApplyWorkspaceEditRequest", "ApplyWorkspaceEditRequest2", "require_connection2", "createProtocolConnection", "input", "output", "require_api2", "LSPErrorCodes2", "LSPErrorCodes3", "require_main2", "browser_1", "lib_exports", "AbstractAstReflection", "AbstractCstNode", "AbstractLangiumParser", "AbstractParserErrorMessageProvider", "AbstractThreadedAsyncParser", "ast_utils_exports", "BiMap", "cancellation_exports", "CompositeCstNodeImpl", "ContextCache", "CstNodeBuilder", "cst_utils_exports", "DEFAULT_TOKENIZE_OPTIONS", "DONE_RESULT", "DatatypeSymbol", "DefaultAstNodeDescriptionProvider", "DefaultAstNodeLocator", "DefaultAsyncParser", "DefaultCommentProvider", "DefaultConfigurationProvider", "DefaultDocumentBuilder", "DefaultDocumentValidator", "DefaultHydrator", "DefaultIndexManager", "DefaultJsonSerializer", "DefaultLangiumDocumentFactory", "DefaultLangiumDocuments", "DefaultLangiumProfiler", "DefaultLexer", "DefaultLexerErrorMessageProvider", "DefaultLinker", "DefaultNameProvider", "DefaultReferenceDescriptionProvider", "DefaultReferences", "DefaultScopeComputation", "DefaultScopeProvider", "DefaultServiceRegistry", "DefaultTokenBuilder", "DefaultValueConverter", "DefaultWorkspaceLock", "DefaultWorkspaceManager", "Deferred", "Disposable", "DisposableCache", "DocumentCache", "DocumentState", "DocumentValidator", "EMPTY_SCOPE", "EMPTY_STREAM", "EmptyFileSystem", "EmptyFileSystemProvider", "ErrorWithLocation", "ast_exports", "grammar_utils_exports", "IndentationAwareLexer", "IndentationAwareTokenBuilder", "JSDocDocumentationProvider", "LangiumCompletionParser", "LangiumParser", "LangiumParserErrorMessageProvider", "LeafCstNodeImpl", "LexingMode", "MapScope", "Module", "MultiMap", "MultiMapScope", "OperationCancelled", "ParserWorker", "ProfilingTask", "Reduction", "RefResolving", "regexp_utils_exports", "RootCstNodeImpl", "SimpleCache", "StreamImpl", "StreamScope", "TextDocument2", "TreeStreamImpl", "URI2", "UriTrie", "UriUtils", "VALIDATE_EACH_NODE", "ValidationCategory", "ValidationRegistry", "ValueConverter", "WorkspaceCache", "assertCondition", "assertUnreachable", "createCompletionParser", "createDefaultCoreModule", "createDefaultSharedCoreModule", "createGrammarConfig", "createLangiumParser", "createParser", "delayNextTick", "diagnosticData", "eagerLoad", "getDiagnosticRange", "indentationBuilderDefaultOptions", "inject", "interruptAndCheck", "isAstNode", "isAstNodeDescription", "isAstNodeWithComment", "isCompositeCstNode", "isIMultiModeLexerDefinition", "isJSDoc", "isLeafCstNode", "isLinkingError", "isMultiReference", "isNamed", "isOperationCancelled", "isReference", "isRootCstNode", "isTokenTypeArray", "isTokenTypeDictionary", "loadGrammarFromJson", "parseJSDoc", "prepareLangiumParser", "setInterruptionPeriod", "startCancelableOperation", "stream", "toDiagnosticData", "toDiagnosticSeverity", "DefaultNameRegexp", "RangeComparison", "compareRange", "findCommentNode", "findDeclarationNodeAtOffset", "findLeafNodeAtOffset", "findLeafNodeBeforeOffset", "flattenCst", "getDatatypeNode", "getInteriorNodes", "getNextNode", "getPreviousNode", "getStartlineNode", "inRange", "isChildNode", "isCommentNode", "streamCst", "toDocumentSegment", "tokenToRange", "obj", "refInfo", "metaData", "referenceType", "node", "subtype", "supertype", "nested", "existing", "s", "allTypes", "types", "possibleSubType", "_StreamImpl", "startFn", "nextFn", "keyFn", "valueFn", "entryStream", "separator", "addSeparator", "toString", "searchElement", "fromIndex", "predicate", "done", "initialValue", "previousValue", "mapped", "isIterable", "depth", "stream2", "skipCount", "maxSize", "by", "otherKeySet", "ownKey", "collections", "collection", "root3", "Reduction2", "sum", "product", "assignMandatoryProperties", "copyAstNode", "findRootNode", "getContainerOfType", "getDocument", "getReferenceNodes", "hasContainerOfType", "linkContentToContainer", "streamAllContents", "streamAst", "streamContents", "streamReferences", "typePredicate", "reference", "property3", "isAstNodeInRange", "astNode", "nodeRange", "reflection3", "typeMetaData", "genericNode", "copyDefaultValue", "propertyType", "buildReference", "copy", "copiedArray", "AbstractElement", "AbstractParserRule", "AbstractRule", "AbstractType", "Action", "Alternatives", "ArrayLiteral", "ArrayType", "Assignment", "BooleanLiteral", "CharacterRange", "Condition", "Conjunction", "CrossReference", "Disjunction", "EndOfFile", "Grammar", "GrammarImport", "Group", "InferredType", "InfixRule", "InfixRuleOperatorList", "InfixRuleOperators", "Interface", "Keyword", "LangiumGrammarAstReflection", "LangiumGrammarTerminals", "NamedArgument", "NegatedToken", "Negation", "NumberLiteral", "Parameter", "ParameterReference", "ParserRule", "ReferenceType", "RegexToken", "ReturnType", "RuleCall", "SimpleType", "StringLiteral", "TerminalAlternatives", "TerminalElement", "TerminalGroup", "TerminalRule", "TerminalRuleCall", "Type", "TypeAttribute", "TypeDefinition", "UnionType", "UnorderedGroup", "UntilToken", "ValueLiteral", "Wildcard", "isAbstractElement", "isAbstractParserRule", "isAbstractRule", "isAbstractType", "isAction", "isAlternatives", "isArrayLiteral", "isArrayType", "isAssignment", "isBooleanLiteral", "isCharacterRange", "isCondition", "isConjunction", "isCrossReference", "isDisjunction", "isEndOfFile", "isGrammar", "isGrammarImport", "isGroup", "isInferredType", "isInfixRule", "isInfixRuleOperatorList", "isInfixRuleOperators", "isInterface", "isKeyword", "isNamedArgument", "isNegatedToken", "isNegation", "isNumberLiteral", "isParameter", "isParameterReference", "isParserRule", "isReferenceType", "isRegexToken", "isReturnType", "isRuleCall", "isSimpleType", "isStringLiteral", "isTerminalAlternatives", "isTerminalElement", "isTerminalGroup", "isTerminalRule", "isTerminalRuleCall", "isType", "isTypeAttribute", "isTypeDefinition", "isUnionType", "isUnorderedGroup", "isUntilToken", "isValueLiteral", "isWildcard", "reflection", "cstNode", "found", "definingRule", "child", "RangeComparison2", "startInside", "endInside", "nameRegexp", "localOffset", "textAtOffset", "commentNames", "endIndex", "searchResult", "binarySearch", "closest", "closestNode", "middle", "middleNode", "hidden", "selfIndex", "commonParent", "getCommonParent", "aParents", "getParentChain", "bParents", "aParent", "bParent", "chain", "findAssignment", "findNameAssignment", "findNodeForKeyword", "findNodeForProperty", "findNodesForKeyword", "findNodesForKeywordInternal", "findNodesForProperty", "getActionAtElement", "getActionType", "getAllReachableRules", "getAllRulesUsedForCrossReferences", "getCrossReferenceTerminal", "getEntryRule", "getExplicitRuleType", "getHiddenRules", "getRuleType", "getRuleTypeName", "getTypeName", "isArrayCardinality", "isArrayOperator", "isCommentTerminal", "isDataType", "isDataTypeRule", "isOptionalCardinality", "terminalRegex", "condition", "NEWLINE_REGEXP", "escapeRegExp", "getTerminalParts", "isMultilineComment", "isWhitespace", "partialMatches", "partialRegExp", "whitespaceCharacters", "cc", "char", "insertToSet", "set", "subItem", "addFlag", "flagObj", "flagKey", "x", "ASSERT_EXISTS", "ASSERT_NEVER_REACH_HERE", "isCharacter", "digitsCharCodes", "wordCharCodes", "whitespaceCodes", "hexDigitPattern", "decimalPattern", "decimalPatternNoZero", "RegExpParser", "newState2", "flags", "alts", "begin", "terms", "disjunction", "isBacktracking", "atLeast", "atMost", "atom2", "complement", "escapeCode", "letter", "escapedChar", "nextChar", "isFromSingleChar", "isToSingleChar", "capturing", "groupAst", "howMuch", "prevState", "howMany", "hexString", "hexChar", "BaseRegExpVisitor", "subChild", "regexpParser", "TerminalRegExpVisitor", "regex", "visitor", "regexp", "pattern", "parts", "alternative", "ws", "partial", "match", "re", "process2", "tmp", "appendRaw", "nbChars", "appendOptional", "grammar", "allTerminals", "ruleNames", "entryRule", "topMostRules", "rule", "ruleDfs", "rules", "visitedSet", "refRule", "crossRef", "terminalRule", "findNodesForPropertyInternal", "nodes", "nodeFeature", "keyword", "treeIterator", "keywordNodes", "childNode", "assignment", "startNode", "findNameAssignmentInternal", "cache", "go", "refType", "childAssignment", "elements", "action", "cardinality", "operator", "isDataTypeRuleInternal", "visited", "isDataTypeInternal", "ref", "actionType", "abstractElementToRegex", "flagText", "WILDCARD", "terminalAlternativesToRegex", "terminalGroupToRegex", "characterRangeToRegex", "withCardinality", "negateTokenToRegex", "untilTokenToRegex", "lastSlash", "regexFlags", "alternatives", "group", "until", "negate2", "keywordToRegex", "services", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "root_default", "Symbol2", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "isOwn", "tag", "unmasked", "getRawTag_default", "objectProto2", "nativeObjectToString2", "objectToString", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag2", "baseGetTag", "baseGetTag_default", "isObjectLike", "isObjectLike_default", "symbolTag", "isSymbol", "isSymbol_default", "arrayMap", "iteratee", "arrayMap_default", "isArray", "isArray_default", "INFINITY", "symbolProto", "symbolToString", "baseToString", "baseToString_default", "reWhitespace", "trimmedEndIndex", "trimmedEndIndex_default", "reTrimStart", "baseTrim", "baseTrim_default", "isObject", "isObject_default", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "isBinary", "toNumber_default", "INFINITY2", "MAX_INTEGER", "toFinite", "sign", "toFinite_default", "toInteger", "remainder", "toInteger_default", "identity", "identity_default", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "isFunction_default", "coreJsData", "coreJsData_default", "maskSrcKey", "uid", "isMasked", "isMasked_default", "funcProto", "funcToString", "toSource", "toSource_default", "reRegExpChar", "reIsHostCtor", "funcProto2", "objectProto3", "funcToString2", "hasOwnProperty2", "reIsNative", "baseIsNative", "baseIsNative_default", "getValue", "object", "getValue_default", "getNative", "getNative_default", "WeakMap", "WeakMap_default", "objectCreate", "baseCreate", "proto", "baseCreate_default", "apply", "apply_default", "noop", "noop_default", "copyArray", "copyArray_default", "HOT_COUNT", "HOT_SPAN", "nativeNow", "shortOut", "lastCalled", "stamp", "remaining", "shortOut_default", "constant", "constant_default", "defineProperty", "defineProperty_default", "baseSetToString", "baseSetToString_default", "setToString", "setToString_default", "arrayEach", "arrayEach_default", "baseFindIndex", "fromRight", "baseFindIndex_default", "baseIsNaN", "baseIsNaN_default", "strictIndexOf", "strictIndexOf_default", "baseIndexOf", "baseIndexOf_default", "arrayIncludes", "arrayIncludes_default", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "isIndex_default", "baseAssignValue", "baseAssignValue_default", "eq", "eq_default", "objectProto4", "hasOwnProperty3", "assignValue", "objValue", "assignValue_default", "copyObject", "props", "customizer", "isNew", "newValue", "copyObject_default", "nativeMax", "overRest", "transform", "otherArgs", "overRest_default", "baseRest", "baseRest_default", "MAX_SAFE_INTEGER2", "isLength", "isLength_default", "isArrayLike", "isArrayLike_default", "isIterateeCall", "isIterateeCall_default", "createAssigner", "assigner", "sources", "guard", "createAssigner_default", "objectProto5", "isPrototype", "Ctor", "isPrototype_default", "baseTimes", "n", "baseTimes_default", "argsTag", "baseIsArguments", "baseIsArguments_default", "objectProto6", "hasOwnProperty4", "propertyIsEnumerable", "isArguments", "isArguments_default", "stubFalse", "stubFalse_default", "freeExports", "freeModule", "moduleExports", "Buffer2", "nativeIsBuffer", "isBuffer", "isBuffer_default", "argsTag2", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag2", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "baseIsTypedArray_default", "baseUnary", "baseUnary_default", "freeExports2", "freeModule2", "moduleExports2", "freeProcess", "nodeUtil", "nodeUtil_default", "nodeIsTypedArray", "isTypedArray", "isTypedArray_default", "objectProto7", "hasOwnProperty5", "arrayLikeKeys", "inherited", "isArr", "isArg", "isBuff", "isType2", "skipIndexes", "arrayLikeKeys_default", "overArg", "arg", "overArg_default", "nativeKeys", "nativeKeys_default", "objectProto8", "hasOwnProperty6", "baseKeys", "baseKeys_default", "keys", "keys_default", "objectProto9", "hasOwnProperty7", "assign", "assign_default", "nativeKeysIn", "nativeKeysIn_default", "objectProto10", "hasOwnProperty8", "baseKeysIn", "isProto", "baseKeysIn_default", "keysIn", "keysIn_default", "reIsDeepProp", "reIsPlainProp", "isKey", "isKey_default", "nativeCreate", "nativeCreate_default", "hashClear", "hashClear_default", "hashDelete", "hashDelete_default", "HASH_UNDEFINED", "objectProto11", "hasOwnProperty9", "hashGet", "hashGet_default", "objectProto12", "hasOwnProperty10", "hashHas", "hashHas_default", "HASH_UNDEFINED2", "hashSet", "hashSet_default", "Hash", "entries", "entry", "Hash_default", "listCacheClear", "listCacheClear_default", "assocIndexOf", "assocIndexOf_default", "arrayProto", "splice", "listCacheDelete", "lastIndex", "listCacheDelete_default", "listCacheGet", "listCacheGet_default", "listCacheHas", "listCacheHas_default", "listCacheSet", "listCacheSet_default", "ListCache", "ListCache_default", "Map2", "Map_default", "mapCacheClear", "mapCacheClear_default", "isKeyable", "isKeyable_default", "getMapData", "map3", "getMapData_default", "mapCacheDelete", "mapCacheDelete_default", "mapCacheGet", "mapCacheGet_default", "mapCacheHas", "mapCacheHas_default", "mapCacheSet", "size", "mapCacheSet_default", "MapCache", "MapCache_default", "FUNC_ERROR_TEXT", "memoize", "resolver", "memoized", "memoize_default", "MAX_MEMOIZE_SIZE", "memoizeCapped", "memoizeCapped_default", "rePropName", "reEscapeChar", "stringToPath", "quote", "subString", "stringToPath_default", "toString2", "toString_default", "castPath", "castPath_default", "INFINITY3", "toKey", "toKey_default", "baseGet", "path", "baseGet_default", "get", "defaultValue", "get_default", "arrayPush", "values2", "arrayPush_default", "spreadableSymbol", "isFlattenable", "isFlattenable_default", "baseFlatten", "isStrict", "baseFlatten_default", "flatten", "flatten_default", "getPrototype", "getPrototype_default", "baseSlice", "baseSlice_default", "arrayReduce", "accumulator", "initAccum", "arrayReduce_default", "stackClear", "stackClear_default", "stackDelete", "stackDelete_default", "stackGet", "stackGet_default", "stackHas", "stackHas_default", "LARGE_ARRAY_SIZE", "stackSet", "pairs", "stackSet_default", "Stack", "Stack_default", "baseAssign", "baseAssign_default", "baseAssignIn", "baseAssignIn_default", "freeExports3", "freeModule3", "moduleExports3", "Buffer3", "allocUnsafe", "cloneBuffer", "isDeep", "cloneBuffer_default", "arrayFilter", "resIndex", "arrayFilter_default", "stubArray", "stubArray_default", "objectProto13", "propertyIsEnumerable2", "nativeGetSymbols", "getSymbols", "symbol", "getSymbols_default", "copySymbols", "copySymbols_default", "nativeGetSymbols2", "getSymbolsIn", "getSymbolsIn_default", "copySymbolsIn", "copySymbolsIn_default", "baseGetAllKeys", "keysFunc", "symbolsFunc", "baseGetAllKeys_default", "getAllKeys", "getAllKeys_default", "getAllKeysIn", "getAllKeysIn_default", "DataView", "DataView_default", "Promise2", "Promise_default", "Set2", "Set_default", "mapTag2", "objectTag2", "promiseTag", "setTag2", "weakMapTag2", "dataViewTag2", "dataViewCtorString", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "getTag", "ctorString", "getTag_default", "objectProto14", "hasOwnProperty11", "initCloneArray", "initCloneArray_default", "Uint8Array2", "Uint8Array_default", "cloneArrayBuffer", "arrayBuffer", "cloneArrayBuffer_default", "cloneDataView", "dataView", "cloneDataView_default", "reFlags", "cloneRegExp", "cloneRegExp_default", "symbolProto2", "symbolValueOf", "cloneSymbol", "cloneSymbol_default", "cloneTypedArray", "cloneTypedArray_default", "boolTag2", "dateTag2", "mapTag3", "numberTag2", "regexpTag2", "setTag3", "stringTag2", "symbolTag2", "arrayBufferTag2", "dataViewTag3", "float32Tag2", "float64Tag2", "int8Tag2", "int16Tag2", "int32Tag2", "uint8Tag2", "uint8ClampedTag2", "uint16Tag2", "uint32Tag2", "initCloneByTag", "initCloneByTag_default", "initCloneObject", "initCloneObject_default", "mapTag4", "baseIsMap", "baseIsMap_default", "nodeIsMap", "isMap", "isMap_default", "setTag4", "baseIsSet", "baseIsSet_default", "nodeIsSet", "isSet", "isSet_default", "CLONE_DEEP_FLAG", "CLONE_FLAT_FLAG", "CLONE_SYMBOLS_FLAG", "argsTag3", "arrayTag2", "boolTag3", "dateTag3", "errorTag2", "funcTag3", "genTag2", "mapTag5", "numberTag3", "objectTag3", "regexpTag3", "setTag5", "stringTag3", "symbolTag3", "weakMapTag3", "arrayBufferTag3", "dataViewTag4", "float32Tag3", "float64Tag3", "int8Tag3", "int16Tag3", "int32Tag3", "uint8Tag3", "uint8ClampedTag3", "uint16Tag3", "uint32Tag3", "cloneableTags", "baseClone", "bitmask", "stack", "isFlat", "isFunc", "stacked", "subValue", "key2", "baseClone_default", "CLONE_SYMBOLS_FLAG2", "clone", "clone_default", "compact", "compact_default", "HASH_UNDEFINED3", "setCacheAdd", "setCacheAdd_default", "setCacheHas", "setCacheHas_default", "SetCache", "SetCache_default", "arraySome", "arraySome_default", "cacheHas", "cacheHas_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "equalArrays", "equalFunc", "isPartial", "arrLength", "othLength", "arrStacked", "othStacked", "seen", "arrValue", "othValue", "compared", "othValue2", "othIndex", "equalArrays_default", "mapToArray", "mapToArray_default", "setToArray", "setToArray_default", "COMPARE_PARTIAL_FLAG2", "COMPARE_UNORDERED_FLAG2", "boolTag4", "dateTag4", "errorTag3", "mapTag6", "numberTag4", "regexpTag4", "setTag6", "stringTag4", "symbolTag4", "arrayBufferTag4", "dataViewTag5", "symbolProto3", "symbolValueOf2", "equalByTag", "convert", "equalByTag_default", "COMPARE_PARTIAL_FLAG3", "objectProto15", "hasOwnProperty12", "equalObjects", "objProps", "objLength", "othProps", "objStacked", "skipCtor", "objCtor", "othCtor", "equalObjects_default", "COMPARE_PARTIAL_FLAG4", "argsTag4", "arrayTag3", "objectTag4", "objectProto16", "hasOwnProperty13", "baseIsEqualDeep", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "baseIsEqualDeep_default", "baseIsEqual", "baseIsEqual_default", "COMPARE_PARTIAL_FLAG5", "COMPARE_UNORDERED_FLAG3", "baseIsMatch", "matchData", "noCustomizer", "srcValue", "baseIsMatch_default", "isStrictComparable", "isStrictComparable_default", "getMatchData", "getMatchData_default", "matchesStrictComparable", "matchesStrictComparable_default", "baseMatches", "baseMatches_default", "baseHasIn", "baseHasIn_default", "hasPath", "hasFunc", "hasPath_default", "hasIn", "hasIn_default", "COMPARE_PARTIAL_FLAG6", "COMPARE_UNORDERED_FLAG4", "baseMatchesProperty", "baseMatchesProperty_default", "baseProperty", "baseProperty_default", "basePropertyDeep", "basePropertyDeep_default", "property", "property_default", "baseIteratee", "baseIteratee_default", "arrayAggregator", "setter", "arrayAggregator_default", "createBaseFor", "iterable", "createBaseFor_default", "baseFor", "baseFor_default", "baseForOwn", "baseForOwn_default", "createBaseEach", "eachFunc", "createBaseEach_default", "baseEach", "baseEach_default", "baseAggregator", "collection2", "baseAggregator_default", "createAggregator", "initializer", "createAggregator_default", "objectProto17", "hasOwnProperty14", "defaults", "propsIndex", "propsLength", "defaults_default", "isArrayLikeObject", "isArrayLikeObject_default", "arrayIncludesWith", "comparator", "arrayIncludesWith_default", "LARGE_ARRAY_SIZE2", "baseDifference", "includes2", "isCommon", "valuesLength", "outer", "computed", "valuesIndex", "baseDifference_default", "difference", "difference_default", "last", "last_default", "drop", "drop_default", "dropRight", "dropRight_default", "castFunction", "castFunction_default", "forEach", "forEach_default", "arrayEvery", "arrayEvery_default", "baseEvery", "baseEvery_default", "every", "every_default", "baseFilter", "baseFilter_default", "filter", "filter_default", "createFind", "findIndexFunc", "createFind_default", "nativeMax2", "findIndex", "findIndex_default", "find", "find_default", "head", "head_default", "baseMap", "baseMap_default", "map", "map_default", "flatMap", "flatMap_default", "objectProto18", "hasOwnProperty15", "groupBy", "groupBy_default", "objectProto19", "hasOwnProperty16", "baseHas", "baseHas_default", "has", "has_default", "stringTag5", "isString", "isString_default", "baseValues", "baseValues_default", "values", "values_default", "nativeMax3", "includes", "includes_default", "nativeMax4", "indexOf", "indexOf_default", "mapTag7", "setTag7", "objectProto20", "hasOwnProperty17", "isEmpty", "isEmpty_default", "regexpTag5", "baseIsRegExp", "baseIsRegExp_default", "nodeIsRegExp", "isRegExp", "isRegExp_default", "isUndefined", "isUndefined_default", "FUNC_ERROR_TEXT2", "negate", "negate_default", "baseSet", "baseSet_default", "basePickBy", "paths", "basePickBy_default", "pickBy", "pickBy_default", "baseReduce", "baseReduce_default", "reduce", "reduce_default", "reject", "reject_default", "baseSome", "baseSome_default", "some", "some_default", "INFINITY4", "createSet", "createSet_default", "LARGE_ARRAY_SIZE3", "baseUniq", "seenIndex", "baseUniq_default", "uniq", "uniq_default", "PRINT_ERROR", "PRINT_WARNING", "timer", "val", "toFastProperties", "toBecomeFast", "FakeConstructor", "fakeInstance", "fakeAccess", "tokenLabel", "tokType", "hasTokenLabel", "AbstractProduction", "_definition", "visitor2", "prod", "NonTerminal", "v", "definition", "Rule", "Alternative", "Option", "RepetitionMandatory", "RepetitionMandatoryWithSeparator", "Repetition", "RepetitionWithSeparator", "Alternation", "Terminal", "serializeGrammar", "topRules", "serializeProduction", "convertDefinition", "serializedNonTerminal", "serializedTerminal", "GAstVisitor", "nodeAny", "isSequenceProd", "isOptionalProd", "alreadyVisited", "subProd", "isBranchingProd", "getProductionDslName", "RestWalker", "prevRest", "currRest", "terminal", "refProd", "flatProd", "fullOrRest", "optionProd", "atLeastOneProd", "fullAtLeastOneRest", "atLeastOneSepProd", "fullAtLeastOneSepRest", "restForRepetitionWithSeparator", "manyProd", "fullManyRest", "manySepProd", "fullManySepRest", "orProd", "alt", "prodWrapper", "repSepProd", "first", "firstForTerminal", "firstForSequence", "firstForBranching", "firstSet", "seq", "nextSubProdIdx", "hasInnerProdsRemaining", "currSubProd", "isLastInnerProdOptional", "allAlternativesFirsts", "innerProd", "IN", "ResyncFollowsWalker", "topProd", "followName", "buildBetweenProdsFollowPrefix", "fullRest", "restProd", "t_in_topProd_follows", "computeAllProdsFollows", "topProductions", "reSyncFollows", "currRefsFollow", "inner", "occurenceInParent", "regExpAstCache", "regExpParser", "getRegExpAst", "regExp", "regExpStr", "regExpAst", "clearRegExpParserCache", "complementErrorMessage", "failedOptimizationPrefixMsg", "getOptimizedStartCodesIndices", "ensureOptimizations", "ast", "firstCharOptimizedIndices", "msgSuffix", "ignoreCase", "term", "addOptimizedIdxToResult", "rangeCode", "minOptimizationVal", "minUnOptVal", "maxUnOptVal", "minOptIdx", "charCodeToOptimizedIndex", "maxOptIdx", "currOptIdx", "isOptionalQuantifier", "isWholeOptional", "optimizedCharIdx", "handleIgnoreCase", "upperChar", "lowerChar", "findCode", "setNode", "targetCharCodes", "codeOrRange", "targetCode", "quantifier", "CharCodeFinder", "canMatchCharCode", "charCodes", "charCodeFinder", "PATTERN", "DEFAULT_MODE", "MODES", "SUPPORT_STICKY", "analyzeTokenTypes", "tokenTypes", "initCharCodeToOptimizedIndexMap", "onlyRelevantTypes", "currType", "Lexer", "hasCustom", "allTransformedPatterns", "currPattern", "regExpSource", "addStickyFlag", "addStartOfInput", "escapedRegExpString", "wrappedRegExp", "patternIdxToType", "patternIdxToGroup", "patternIdxToLongerAltIdxArr", "patternIdxToPushMode", "patternIdxToPopMode", "clazz", "groupName", "longerAltType", "patternIdxToCanLineTerminator", "lineTerminatorCharCodes", "getCharCodes", "checkLineBreaksIssues", "patternIdxToIsCustom", "patternIdxToShort", "emptyGroups", "patternIdxToConfig", "isCustomPattern", "isShortPattern", "acc", "idx", "canBeOptimized", "charCodeToPatternIdxToConfig", "currTokType", "charCode", "optimizedIdx", "addToMapOfArrays", "lastOptimizedIdx", "charOrInt", "currOptimizedIdx", "optimizedCodes", "validatePatterns", "validModesNames", "errors", "missingResult", "findMissingPatterns", "invalidResult", "findInvalidPatterns", "validTokenTypes", "validateRegExpPattern", "findInvalidGroupType", "findModesThatDoNotExist", "findUnreachablePatterns", "withRegExpPatterns", "findEndOfInputAnchor", "findStartOfInputAnchor", "findUnsupportedFlags", "findDuplicatePatterns", "findEmptyMatchRegExps", "tokenTypesWithMissingPattern", "LexerDefinitionErrorType", "valid", "tokenTypesWithInvalidPattern", "end_of_input", "EndAnchorFinder", "invalidRegex", "regexpAst", "endAnchorVisitor", "matchesEmptyString", "start_of_input", "StartAnchorFinder", "startAnchorVisitor", "invalidFlags", "identicalPatterns", "outerType", "innerType", "duplicatePatterns", "currIdenticalSet", "setOfIdentical", "tokenTypeNames", "invalidTypes", "validModes", "invalidModes", "canBeTested", "noMetaChar", "aTokType", "aIdx", "bStr", "bIdx", "bTokType", "tryToMatchStrToPattern", "str", "usesLookAheadOrBehind", "regExpArray", "performRuntimeChecks", "lexerDefinition", "trackLines", "lineTerminatorCharacters", "currModeValue", "currModeName", "currIdx", "longerAlt", "currLongerAlt", "performWarningRuntimeChecks", "warnings", "hasAnyLineBreak", "allTokenTypes", "concreteTokenTypes", "terminatorCharCodes", "currIssue", "warningDescriptor", "buildLineBreakIssueMessage", "cloneEmptyGroups", "clonedResult", "groupKeys", "currKey", "currGroupValue", "tokenType", "LineTerminatorOptimizedTester", "c", "details", "charsOrCodes", "numOrString", "charCodeToOptimizedIdxMap", "tokenStructuredMatcher", "tokInstance", "tokConstructor", "instanceType", "tokenStructuredMatcherNoCategories", "tokenShortNameIdx", "tokenIdxToClass", "augmentTokenTypes", "tokenTypesAndParents", "expandCategories", "assignTokenDefaultProps", "assignCategoriesMapProp", "assignCategoriesTokensProp", "categories", "searching", "newCategories", "hasShortKeyProperty", "hasCategoriesProperty", "hasExtendingTokensTypesProperty", "hasExtendingTokensTypesMapProperty", "singleAssignCategoriesToksMap", "nextNode", "pathNode", "nextCategory", "newPath", "isTokenType", "defaultLexerErrorProvider", "fullText", "column", "mode", "LexerDefinitionErrorType2", "DEFAULT_LEXER_CONFIG", "config", "phaseDesc", "phaseImpl", "indent", "time", "traceMethod", "traceInitVal", "actualDefinition", "hasOnlySingleMode", "allModeNames", "currModDef", "currModName", "currAnalyzeResult", "allErrMessagesString", "unOptimizedModes", "cannotBeOptimized", "modeName", "initialMode", "j", "matchAltImage", "matchedImage", "payload", "altPayload", "imageLength", "newToken", "errLength", "droppedChar", "orgText", "orgLength", "matchedTokensIndex", "guessedNumberOfTokens", "matchedTokens", "groups", "lineTerminatorPattern", "currModePatternsLength", "currCharCodeToPatternIdxToConfig", "modeStack", "emptyArray", "getPossiblePatterns", "getPossiblePatternsSlow", "getPossiblePatternsOptimized", "possiblePatterns", "pop_mode", "popToken", "msg2", "newMode", "modeCanBeOptimized", "push_mode", "currConfig", "recoveryEnabled", "nextCharCode", "chosenPatternIdxToConfig", "chosenPatternsLength", "singleCharCode", "longerAltLength", "longerAltConfig", "longerAltPattern", "numOfLTsInMatch", "foundTerminator", "lastLTEndOffset", "errorStartOffset", "errorLine", "errorColumn", "foundResyncPoint", "currConfig2", "pushMode", "newLastIndex", "lastLTIdx", "lastCharIsLT", "fixForEndingInLT", "oldColumn", "image", "tokenTypeIdx", "startColumn", "tokenVector", "tokenToAdd", "tokenLabel2", "hasTokenLabel2", "PARENT", "CATEGORIES", "LABEL", "GROUP", "PUSH_MODE", "POP_MODE", "LONGER_ALT", "LINE_BREAKS", "START_CHARS_HINT", "createToken", "createTokenInternal", "EOF", "createTokenInstance", "endColumn", "tokenMatcher", "defaultParserErrorProvider", "expected", "actual", "ruleName", "firstRedundant", "expectedPathsPerAlt", "customUserDescription", "errPrefix", "errSuffix", "allLookAheadPaths", "currAltPaths", "nextValidTokenSequences", "currPath", "currTokenType", "calculatedDescription", "itemMsg", "expectedIterationPaths", "defaultGrammarResolverErrorProvider", "topLevelRule", "undefinedRule", "defaultGrammarValidatorErrorProvider", "duplicateProds", "getExtraProductionArgument2", "topLevelName", "duplicateProd", "dslName", "extraArgument", "hasExplicitIndex", "pathMsg", "currTok", "occurrence", "currtok", "currMessage", "pathNames", "currRule", "leftRecursivePath", "resolveGrammar", "topLevels", "errMsgProvider", "refResolver", "GastRefResolverVisitor", "nameToTopRule", "ParserDefinitionErrorType", "AbstractNextPossibleTokensWalker", "NextAfterTokenWalker", "AbstractNextTerminalAfterProductionWalker", "topRule", "NextTerminalAfterManyWalker", "firstAfterMany", "NextTerminalAfterManySepWalker", "firstAfterManySep", "NextTerminalAfterAtLeastOneWalker", "firstAfterAtLeastOne", "NextTerminalAfterAtLeastOneSepWalker", "atleastOneSepProd", "firstAfterfirstAfterAtLeastOneSep", "possiblePathsFrom", "targetDef", "maxLength", "remainingPathWith", "nextDef", "getAlternativesForProd", "newDef", "currAlt", "nextPossibleTokensAfter", "initialDef", "tokMatcher", "maxLookAhead", "EXIT_NON_TERMINAL", "EXIT_NON_TERMINAL_ARR", "EXIT_ALTERNATIVE", "foundCompletePath", "tokenVectorLength", "minimalAlternativesIndex", "possiblePaths", "currDef", "currRuleStack", "currOccurrenceStack", "nextPath", "nextIdx", "actualToken", "newRuleStack", "newOccurrenceStack", "nextPathWithout", "nextPathWith", "secondIteration", "separatorGast", "nthRepetition", "currAltPath", "expandTopLevelRule", "newCurrOccurrenceStack", "PROD_TYPE", "PROD_TYPE2", "getProdType", "getLookaheadPaths", "prodType", "maxLookahead", "getLookaheadPathsForOr", "getLookaheadPathsForOptionalProd", "buildLookaheadFuncForOr", "ruleGrammar", "hasPredicates", "dynamicTokensEnabled", "laFuncBuilder", "lookAheadPaths", "tokenMatcher2", "areTokenCategoriesNotUsed", "buildLookaheadFuncForOptionalProd", "lookaheadBuilder", "buildAlternativesLookAheadFunc", "numOfAlts", "areAllOneTokenLookahead", "orAlts", "predicates", "t", "currNumOfPaths", "currPredicate", "currPathLength", "nextToken", "singleTokenAlts", "choiceToAlt", "currExtendingType", "buildSingleAlternativeLookaheadFunction", "numOfPaths", "singleTokensTypes", "expectedTokenUniqueKey", "RestDefinitionFinderWalker", "targetOccurrence", "targetProdType", "expectedProdType", "InsideDefinitionFinderVisitor", "targetRef", "expectedProdName", "initializeArrayOfArrays", "pathToHashKeys", "keys3", "longerKeys", "currShorterKey", "categoriesKeySuffix", "isUniquePrefixHash", "altKnownPathsKeys", "searchPathKeys", "currAltIdx", "otherAltKnownPathsKeys", "searchIdx", "searchKey", "lookAheadSequenceFromAlternatives", "altsDefs", "partialAlts", "finalResult", "altsHashes", "dict", "newData", "pathLength", "currDataset", "altIdx", "currAltPathsAndSuffixes", "currPathIdx", "currPathPrefix", "suffixDef", "prefixKeys", "currAltResult", "containsPath", "newPartialPathsAndSuffixes", "prefixKeys2", "insideDefVisitor", "insideDef", "afterDef", "insideFlat", "afterFlat", "searchPath", "compareOtherPath", "otherPath", "searchTok", "otherTok", "isStrictPrefixOfPath", "prefix", "otherTokType", "singleAltPaths", "singlePath", "validateLookahead", "lookaheadValidationErrorMessages", "errorMessage", "validateGrammar", "grammarName", "duplicateErrors", "currTopLevel", "validateDuplicateProductions", "termsNamespaceConflictErrors", "checkTerminalAndNoneTerminalsNameSpace", "tooManyAltsErrors", "curRule", "validateTooManyAlts", "duplicateRulesError", "validateRuleDoesNotAlreadyExist", "collectorVisitor2", "OccurrenceValidationCollector", "allRuleProductions", "productionGroups", "identifyProductionForDuplicates", "duplicates", "currGroup", "currDuplicates", "firstProd", "defError", "getExtraProductionArgument", "subrule", "option2", "manySep", "atLeastOne", "atLeastOneSep", "many", "or", "allRules", "className", "errMsg", "validateRuleIsOverridden", "definedRulesNames", "validateNoLeftRecursion", "nextNonTerminals", "getFirstNoneTerminal", "validNextSteps", "errorsFromNextSteps", "currRefRule", "currSubDef", "isFirstOptional", "hasMore", "rest", "OrCollector", "validateEmptyOrAlternative", "orCollector", "ors", "currOr", "exceptLast", "currAlternative", "possibleFirstInAlt", "validateAmbiguousAlternationAlternatives", "globalMaxLookahead", "currOccurrence", "actualMaxLookahead", "altsAmbiguityErrors", "checkAlternativesAmbiguities", "altsPrefixAmbiguityErrors", "checkPrefixAlternativesAmbiguities", "RepetitionCollector", "validateSomeNonEmptyLookaheadPath", "topLevelRules", "currTopRule", "currProd", "pathsInsideProduction", "alternation2", "foundAmbiguousPaths", "identicalAmbiguities", "altsCurrPathAppearsIn", "currOtherAlt", "currOtherAltIdx", "currAmbDescriptor", "ambgIndices", "pathsAndIndices", "currPathsAndIdx", "currPathAndIdx", "targetIdx", "targetPath", "prefixAmbiguitiesPathsAndIndices", "searchPathAndIdx", "currAmbPathAndIdx", "tokenNames", "currToken", "currRuleName", "resolveGrammar2", "actualOptions", "topRulesTable", "validateGrammar2", "MISMATCHED_TOKEN_EXCEPTION", "NO_VIABLE_ALT_EXCEPTION", "EARLY_EXIT_EXCEPTION", "NOT_ALL_INPUT_PARSED_EXCEPTION", "RECOGNITION_EXCEPTION_NAMES", "isRecognitionException", "RecognitionException", "MismatchedTokenException", "previousToken", "NoViableAltException", "NotAllInputParsedException", "EarlyExitException", "EOF_FOLLOW_KEY", "IN_RULE_RECOVERY_EXCEPTION", "InRuleRecoveryException", "Recoverable", "DEFAULT_PARSER_CONFIG", "attemptInRepetitionRecovery", "tokToInsert", "grammarRule", "grammarRuleArgs", "lookAheadFunc", "expectedTokType", "reSyncTokType", "savedLexerState", "resyncedTokens", "passedResyncPoint", "nextTokenWithoutResync", "generateErrorMessage", "expectTokAfterLastMatch", "nextTokIdx", "notStuck", "tokIdxInRule", "grammarPath", "follows", "nextTok", "expectedToken", "mismatchedTok", "possibleFollowsTokType", "followKey", "currentRuleReSyncSet", "allPossibleReSyncTokTypes", "foundMatch", "resyncTokType", "currRuleShortName", "currRuleIdx", "prevRuleShortName", "explicitRuleStack", "explicitOccurrenceStack", "followStack", "resyncTokens", "prodFunc", "lookaheadFunc", "dslMethodIdx", "prodOccurrence", "nextToksWalker", "pathRuleStack", "pathOccurrenceStack", "currShortName", "firstAfterRepInfo", "isEndOfRule", "BITS_FOR_METHOD_TYPE", "BITS_FOR_OCCURRENCE_IDX", "BITS_FOR_ALT_IDX", "OR_IDX", "OPTION_IDX", "MANY_IDX", "AT_LEAST_ONE_IDX", "MANY_SEP_IDX", "AT_LEAST_ONE_SEP_IDX", "getKeyForAutomaticLookahead", "ruleIdx", "BITS_START_FOR_ALT_IDX", "LLkLookaheadStrategy", "leftRecursionErrors", "emptyAltErrors", "ambiguousAltsErrors", "emptyRepetitionErrors", "LooksAhead", "repetition2", "repetitionMandatory2", "repetitionMandatoryWithSeparator", "repetitionWithSeparator", "collectMethods", "prodIdx", "laFunc", "prodKey", "prodMaxLookahead", "dslMethodName", "DslMethodsCollectorVisitor", "collectorVisitor", "dslMethods", "setNodeLocationOnlyOffset", "currNodeLocation", "newLocationInfo", "setNodeLocationFull", "addTerminalToCst", "tokenTypeName", "addNoneTerminalToCst", "ruleResult", "NAME", "defineNameProp", "nameValue", "defaultVisit", "ctx", "childrenNames", "childrenNamesLength", "currChildName", "currChildArray", "currChildArrayLength", "currChild", "createBaseSemanticVisitorConstructor", "derivedConstructor", "semanticProto", "semanticDefinitionErrors", "validateVisitor", "errorMessages", "currDefError", "createBaseVisitorConstructorWithDefaults", "baseConstructor", "withDefaultsProto", "CstVisitorDefinitionError", "CstVisitorDefinitionError2", "visitorInstance", "validateMissingCstMethods", "missingRuleNames", "TreeBuilder", "fullRuleName", "ruleCstNode", "prevToken", "loc", "consumedToken", "rootCst", "ruleCstResult", "preCstNode", "newBaseCstVisitorConstructor", "newConstructor", "ruleStack", "occurrenceStack", "LexerAdapter", "newInput", "END_OF_FILE", "soughtIdx", "RecognizerApi", "impl", "ruleToCall", "actionORMethodDef", "altsOrOpts", "implementation", "DEFAULT_RULE_CONFIG", "ruleImplementation", "ruleErrors", "orgState", "RecognizerEngine", "tokenVocabulary", "allTokenTypes2", "uniqueTokens", "noTokenCategoriesUsed", "tokenConstructor", "resyncEnabled", "recoveryValueFunc", "shortName", "invokeRuleWithTry", "cst", "resyncEnabledConfig", "isFirstInvokedRule", "reSyncEnabled", "recogError", "partialCstResult", "orgLookaheadFunction", "laKey", "separatorLookAheadFunc", "lookaheadFunction", "nextTerminalAfterWalker", "beforeIteration", "altIdxToTake", "firstRedundantTok", "eFromConsumption", "eFromInRuleRecovery", "savedErrors", "savedRuleStack", "fullName", "idxInCallingRule", "ErrorHandler", "newErrors", "userDefinedErrMsg", "insideProdPaths", "actualTokens", "errMsgTypes", "lookAheadPathsPerAlternative", "ContentAssist", "startRuleName", "precedingInput", "startRuleGast", "topRuleName", "topProduction", "RECORDING_NULL_OBJECT", "HANDLE_SEPARATOR", "MAX_METHOD_IDX", "RFT", "RECORDING_PHASE_TOKEN", "RECORDING_PHASE_CSTNODE", "GastRecorder", "arg1", "arg2", "that", "def", "newTopLevelRule", "originalError", "recordProd", "recordOrProd", "assertMethodIdxIsValid", "getIdxSuffix", "prevProd", "newNoneTerminal", "prodConstructor", "mainProdArg", "handleSep", "grammarAction", "newProd", "hasOptions", "newOrProd", "currAltFlat", "PerformanceTracer", "userTraceInitPerf", "traceIsNumber", "applyMixins", "derivedCtor", "baseCtors", "baseCtor", "baseProto", "propName", "basePropDescriptor", "ParserDefinitionErrorType2", "EMPTY_ALT", "Parser", "_Parser", "parserInstance", "defErrorsMsgs", "originalGrammarAction", "recordedRuleGast", "resolverErrors", "validationErrors", "lookaheadValidationErrors", "allFollows", "_b", "EmbeddedActionsParser", "configClone", "arrayMap2", "arrayMap_default2", "listCacheClear2", "listCacheClear_default2", "eq2", "eq_default2", "assocIndexOf2", "assocIndexOf_default2", "arrayProto2", "splice2", "listCacheDelete2", "listCacheDelete_default2", "listCacheGet2", "listCacheGet_default2", "listCacheHas2", "listCacheHas_default2", "listCacheSet2", "listCacheSet_default2", "ListCache2", "ListCache_default2", "stackClear2", "stackClear_default2", "stackDelete2", "stackDelete_default2", "stackGet2", "stackGet_default2", "stackHas2", "stackHas_default2", "freeGlobal2", "freeGlobal_default2", "freeSelf2", "root2", "root_default2", "Symbol3", "Symbol_default2", "objectProto21", "hasOwnProperty18", "nativeObjectToString3", "symToStringTag3", "getRawTag2", "getRawTag_default2", "objectProto22", "nativeObjectToString4", "objectToString2", "objectToString_default2", "nullTag2", "undefinedTag2", "symToStringTag4", "baseGetTag2", "baseGetTag_default2", "isObject2", "isObject_default2", "asyncTag2", "funcTag4", "genTag3", "proxyTag2", "isFunction2", "isFunction_default2", "coreJsData2", "coreJsData_default2", "maskSrcKey2", "isMasked2", "isMasked_default2", "funcProto3", "funcToString3", "toSource2", "toSource_default2", "reRegExpChar2", "reIsHostCtor2", "funcProto4", "objectProto23", "funcToString4", "hasOwnProperty19", "reIsNative2", "baseIsNative2", "baseIsNative_default2", "getValue2", "getValue_default2", "getNative2", "getNative_default2", "Map3", "Map_default2", "nativeCreate2", "nativeCreate_default2", "hashClear2", "hashClear_default2", "hashDelete2", "hashDelete_default2", "HASH_UNDEFINED4", "objectProto24", "hasOwnProperty20", "hashGet2", "hashGet_default2", "objectProto25", "hasOwnProperty21", "hashHas2", "hashHas_default2", "HASH_UNDEFINED5", "hashSet2", "hashSet_default2", "Hash2", "Hash_default2", "mapCacheClear2", "mapCacheClear_default2", "isKeyable2", "isKeyable_default2", "getMapData2", "getMapData_default2", "mapCacheDelete2", "mapCacheDelete_default2", "mapCacheGet2", "mapCacheGet_default2", "mapCacheHas2", "mapCacheHas_default2", "mapCacheSet2", "mapCacheSet_default2", "MapCache2", "MapCache_default2", "LARGE_ARRAY_SIZE4", "stackSet2", "stackSet_default2", "Stack2", "Stack_default2", "HASH_UNDEFINED6", "setCacheAdd2", "setCacheAdd_default2", "setCacheHas2", "setCacheHas_default2", "SetCache2", "SetCache_default2", "arraySome2", "arraySome_default2", "cacheHas2", "cacheHas_default2", "COMPARE_PARTIAL_FLAG7", "COMPARE_UNORDERED_FLAG5", "equalArrays2", "equalArrays_default2", "Uint8Array3", "Uint8Array_default2", "mapToArray2", "mapToArray_default2", "setToArray2", "setToArray_default2", "COMPARE_PARTIAL_FLAG8", "COMPARE_UNORDERED_FLAG6", "boolTag5", "dateTag5", "errorTag4", "mapTag8", "numberTag5", "regexpTag6", "setTag8", "stringTag6", "symbolTag5", "arrayBufferTag5", "dataViewTag6", "symbolProto4", "symbolValueOf3", "equalByTag2", "equalByTag_default2", "arrayPush2", "arrayPush_default2", "isArray2", "isArray_default2", "baseGetAllKeys2", "baseGetAllKeys_default2", "arrayFilter2", "arrayFilter_default2", "stubArray2", "stubArray_default2", "objectProto26", "propertyIsEnumerable3", "nativeGetSymbols3", "getSymbols2", "getSymbols_default2", "baseTimes2", "baseTimes_default2", "isObjectLike2", "isObjectLike_default2", "argsTag5", "baseIsArguments2", "baseIsArguments_default2", "objectProto27", "hasOwnProperty22", "propertyIsEnumerable4", "isArguments2", "isArguments_default2", "stubFalse2", "stubFalse_default2", "freeExports4", "freeModule4", "moduleExports4", "Buffer4", "nativeIsBuffer2", "isBuffer2", "isBuffer_default2", "MAX_SAFE_INTEGER3", "reIsUint2", "isIndex2", "isIndex_default2", "MAX_SAFE_INTEGER4", "isLength2", "isLength_default2", "argsTag6", "arrayTag4", "boolTag6", "dateTag6", "errorTag5", "funcTag5", "mapTag9", "numberTag6", "objectTag5", "regexpTag7", "setTag9", "stringTag7", "weakMapTag4", "arrayBufferTag6", "dataViewTag7", "float32Tag4", "float64Tag4", "int8Tag4", "int16Tag4", "int32Tag4", "uint8Tag4", "uint8ClampedTag4", "uint16Tag4", "uint32Tag4", "typedArrayTags2", "baseIsTypedArray2", "baseIsTypedArray_default2", "baseUnary2", "baseUnary_default2", "freeExports5", "freeModule5", "moduleExports5", "freeProcess2", "nodeUtil2", "nodeUtil_default2", "nodeIsTypedArray2", "isTypedArray2", "isTypedArray_default2", "objectProto28", "hasOwnProperty23", "arrayLikeKeys2", "arrayLikeKeys_default2", "objectProto29", "isPrototype2", "isPrototype_default2", "overArg2", "overArg_default2", "nativeKeys2", "nativeKeys_default2", "objectProto30", "hasOwnProperty24", "baseKeys2", "baseKeys_default2", "isArrayLike2", "isArrayLike_default2", "keys2", "keys_default2", "getAllKeys2", "getAllKeys_default2", "COMPARE_PARTIAL_FLAG9", "objectProto31", "hasOwnProperty25", "equalObjects2", "equalObjects_default2", "DataView2", "DataView_default2", "Promise3", "Promise_default2", "Set3", "Set_default2", "WeakMap2", "WeakMap_default2", "mapTag10", "objectTag6", "promiseTag2", "setTag10", "weakMapTag5", "dataViewTag8", "dataViewCtorString2", "mapCtorString2", "promiseCtorString2", "setCtorString2", "weakMapCtorString2", "getTag2", "getTag_default2", "COMPARE_PARTIAL_FLAG10", "argsTag7", "arrayTag5", "objectTag7", "objectProto32", "hasOwnProperty26", "baseIsEqualDeep2", "baseIsEqualDeep_default2", "baseIsEqual2", "baseIsEqual_default2", "COMPARE_PARTIAL_FLAG11", "COMPARE_UNORDERED_FLAG7", "baseIsMatch2", "baseIsMatch_default2", "isStrictComparable2", "isStrictComparable_default2", "getMatchData2", "getMatchData_default2", "matchesStrictComparable2", "matchesStrictComparable_default2", "baseMatches2", "baseMatches_default2", "symbolTag6", "isSymbol2", "isSymbol_default2", "reIsDeepProp2", "reIsPlainProp2", "isKey2", "isKey_default2", "FUNC_ERROR_TEXT3", "memoize2", "memoize_default2", "MAX_MEMOIZE_SIZE2", "memoizeCapped2", "memoizeCapped_default2", "rePropName2", "reEscapeChar2", "stringToPath2", "stringToPath_default2", "INFINITY5", "symbolProto5", "symbolToString2", "baseToString2", "baseToString_default2", "toString3", "toString_default2", "castPath2", "castPath_default2", "INFINITY6", "toKey2", "toKey_default2", "baseGet2", "baseGet_default2", "get2", "get_default2", "baseHasIn2", "baseHasIn_default2", "hasPath2", "hasPath_default2", "hasIn2", "hasIn_default2", "COMPARE_PARTIAL_FLAG12", "COMPARE_UNORDERED_FLAG8", "baseMatchesProperty2", "baseMatchesProperty_default2", "identity2", "identity_default2", "baseProperty2", "baseProperty_default2", "basePropertyDeep2", "basePropertyDeep_default2", "property2", "property_default2", "baseIteratee2", "baseIteratee_default2", "createBaseFor2", "createBaseFor_default2", "baseFor2", "baseFor_default2", "baseForOwn2", "baseForOwn_default2", "createBaseEach2", "createBaseEach_default2", "baseEach2", "baseEach_default2", "baseMap2", "baseMap_default2", "map2", "map_default2", "baseFilter2", "baseFilter_default2", "filter2", "filter_default2", "buildATNKey", "ATN_BASIC", "ATN_RULE_START", "ATN_PLUS_BLOCK_START", "ATN_STAR_BLOCK_START", "ATN_RULE_STOP", "ATN_BLOCK_END", "ATN_STAR_LOOP_BACK", "ATN_STAR_LOOP_ENTRY", "ATN_PLUS_LOOP_BACK", "ATN_LOOP_END", "AbstractTransition", "AtomTransition", "EpsilonTransition", "RuleTransition", "ruleStart", "followState", "createATN", "atn", "createRuleStartAndStopATNStates", "ruleLength", "ruleBlock", "block", "buildRuleHandle", "newState", "stop", "atom", "production", "tokenRef", "ruleRef", "alternation", "option", "repetition", "repetitionSep", "repetitionMandatory", "repetitionMandatorySep", "starState", "defineDecisionState", "makeAlts", "star", "sep", "plusState", "plus", "optional", "block2", "handles", "makeBlock", "plus2", "blkStart", "blkEnd", "loop", "epsilon", "star2", "loopEnd", "optional2", "getProdType2", "altsLength", "transition", "isRuleTransition", "ruleTransition", "removeState", "addTransition", "currentRule", "nonTerminal", "call", "DFA_ERROR", "ATNConfigSet", "getATNConfigKey", "baseExtremum", "baseExtremum_default", "baseLt", "baseLt_default", "min", "min_default", "spreadableSymbol2", "isFlattenable2", "isFlattenable_default2", "baseFlatten2", "baseFlatten_default2", "flatMap2", "flatMap_default2", "baseFindIndex2", "baseFindIndex_default2", "baseIsNaN2", "baseIsNaN_default2", "strictIndexOf2", "strictIndexOf_default2", "baseIndexOf2", "baseIndexOf_default2", "arrayIncludes2", "arrayIncludes_default2", "arrayIncludesWith2", "arrayIncludesWith_default2", "noop2", "noop_default2", "INFINITY7", "createSet2", "createSet_default2", "LARGE_ARRAY_SIZE5", "baseUniq2", "baseUniq_default2", "uniqBy", "uniqBy_default", "flatten2", "flatten_default2", "arrayEach2", "arrayEach_default2", "castFunction2", "castFunction_default2", "forEach2", "forEach_default2", "mapTag11", "setTag11", "objectProto33", "hasOwnProperty27", "isEmpty2", "isEmpty_default2", "arrayReduce2", "arrayReduce_default2", "baseReduce2", "baseReduce_default2", "reduce2", "reduce_default2", "createDFACache", "startState", "decision", "predicateSet", "PredicateSet", "EMPTY_PREDICATES", "LLStarLookaheadStrategy", "initATNSimulator", "dfas", "logging", "decisionIndex", "isLL1Sequence", "prediction", "gate", "adaptivePredict", "g", "sequences", "allowEmpty", "fullSet", "altSet", "indices", "decisionLength", "decisionToDFA", "dfaCaches", "dfa", "closure2", "computeStartState", "addDFAState", "newDFAState", "performLookahead", "s0", "previousD", "d", "getExistingTargetState", "computeLookaheadTarget", "buildAdaptivePredictError", "lookahead", "reach", "computeReachSet", "addDFAEdge", "predictedAlt", "getUniqueAlt", "hasConflictTerminatingPrediction", "reportLookaheadAmbiguity", "ambiguityIndices", "prefixPath", "atnState", "buildAmbiguityError", "getProductionDslName2", "nextTransitions", "nextTokenTypes", "configs", "intermediate", "skippedStopStates", "transitionLength", "getReachableTarget", "closure", "hasConfigInRuleStopState", "mapKey", "numberOfTransitions", "atnStack", "followConfig", "getEpsilonTarget", "allConfigsInRuleStopStates", "altSets", "getConflictingAltSets", "hasConflictingAltSet", "hasStateAssociatedWithOneAlt", "configToAlts", "feature", "compositeNode", "leafNode", "tokens", "added", "CstNodeContainer", "firstNode", "lastNode", "firstRange", "lastRange", "_CstNodeContainer", "isDataTypeNode", "ruleSuffix", "withRuleSuffix", "ProfilerWrapper", "ChevrotainWrapper", "choices", "infixName", "ruleMethod", "precedence", "lexerResult", "$type", "createNode", "hiddenTokens", "convertedValue", "fragment", "newItem", "operators", "lowestPrecedenceIdx", "lowestPrecedenceValue", "opPrecedence", "leftOperators", "rightOperators", "leftParts", "rightParts", "leftInfix", "rightInfix", "leftTree", "rightTree", "existingValue", "targetCstNode", "defaultConfig", "useDefaultLookahead", "task", "parser", "buildRules", "parserContext", "reachable", "parserRules", "buildElement", "infixRules", "buildInfixRule", "expressionRule", "allKeywords", "outerGroup", "part1Assignment", "innerGroup", "operatorAssignment", "part2Assignment", "getRule", "ignoreGuard", "buildKeyword", "buildAction", "buildCrossReference", "buildRuleCall", "buildAlternatives", "buildUnorderedGroup", "buildGroup", "wrap", "getGuardCondition", "ruleCall", "buildRuleCallPredicate", "getToken", "namedArgs", "namedPredicates", "buildPredicate", "ruleArgs", "parameterName", "methods", "predicatedMethod", "orIdx", "idFunc", "groupIdx", "lParser", "stackId", "groupState", "wrapped", "assignTerminal", "getRuleName", "lexer", "reachableRules", "terminalTokens", "stickyRegex", "caseInsensitive", "keywordPattern", "longerAlts", "ValueConverter2", "convertString", "c1", "convertEscapeCharacter", "convertID", "convertInt", "convertBigint", "convertDate", "convertNumber", "convertBoolean", "lastTick", "globalInterruptionPeriod", "period", "FullTextDocument2", "_FullTextDocument", "changes", "getWellformedRange", "addedLineOffsets", "computeLineOffsets", "isEOL", "update", "mergeSort", "getWellformedEdit", "spans", "isAtLineStart", "textOffset", "LIB", "t2", "e2", "t3", "r2", "e3", "r3", "n3", "i2", "o2", "s2", "h2", "a2", "n2", "c2", "f2", "u2", "l2", "g2", "t4", "l", "I", "h", "f", "u", "w", "y", "C", "A", "P", "Utils", "UriUtils2", "isWindows", "relative", "fromPath", "toPath", "fromParts", "toParts", "upperCaseDriveLetter", "backPart", "toPart", "normalize", "contains", "parentPath", "childPath", "nodeToDelete", "uriString", "part", "DocumentState2", "model", "parseResult", "cancelToken", "textDocumentGetter", "oldText", "serviceRegistry", "textDoc", "folder", "langiumDoc", "langiumDocs", "linkedNode", "descriptions", "refNode", "refText", "linker", "refData", "nodeDescription", "doc", "targetDescription", "sourceCstNode", "nodeElem", "nameNode", "references", "headNode", "astNodes", "cstNodes", "targetNode", "refs", "indexReferences", "selfNodes", "selfNode", "parentNode", "rootNode", "symbols", "container", "outerScope", "lowerCaseName", "local", "localName", "arr", "elementStream", "provider", "converter", "contextKey", "contextCache", "documentCache", "sharedServices", "_changed", "deleted", "changed", "allUris", "scopes", "localSymbols", "currentNode", "_context", "isIntermediateReference", "serializeOptions", "specificReplacer", "defaultReplacer", "replacer", "deserializeOptions", "sourceText", "textRegions", "comments", "uriConverter", "refValue", "$refText", "targetDocument", "$refs", "comment", "createDocumentSegment", "textRegion", "assignments", "propertyAssignments", "containerProperty", "containerIndex", "propertyName", "mutable", "refUri", "fragmentIndex", "node2", "documentUri2", "document2", "documentUri", "language", "ext", "services2", "ValidationCategory2", "checksRecord", "thisObj", "category", "accept", "functionality", "messageContext", "messageDetails", "checks", "checkBefore", "checkAfter", "_document", "lexerDiagnostics", "lexerDiagnostic", "diagnostic", "parserError", "linkingError", "validationItems", "acceptor", "checksBefore", "nodeOptions", "_node", "checksAfter", "DocumentValidator2", "nameNodeSegment", "nameSegmentGetter", "descr", "sourceUri", "sourcePath", "segment", "containerPath", "newSegment", "$containerProperty", "$containerIndex", "currentValue", "propertyIndex", "arrayIndex", "event_exports", "languages", "lang", "configToUpdate", "conf", "section", "configuration", "sectionName", "import_vscode_languageserver_protocol", "documents", "deletedUris", "deletedUri", "deletedDocs", "changedUris", "changedUri", "changedDocument", "allChangedUris", "rebuildDocuments", "allCategories", "executedCategories", "requestedCategories", "requested", "stat", "scopeComputation", "toBeLinked", "toBeValidated", "targetState", "targetStateDocs", "uriOrToken", "buildDisposable", "cancelDisposable", "listenersCopy", "validator", "validationOptions", "astNodePath", "targetDocUri", "docRefs", "refDescr", "nodeType", "uris", "documentUris", "indexData", "_params", "folders", "collector", "wf", "uniqueUris", "_folders", "_collector", "workspaceFolder", "folderPath", "lexerTokens", "chevrotainResult", "buildTokens", "opts", "lines", "getLines", "normalizedOptions", "normalizeOptions", "tokenize", "parseJSDocComment", "firstRegex", "lastRegex", "tagRegex", "inlineTagRegex", "currentLine", "currentCharacter", "lastCharacter", "skipWhitespace", "tagMatch", "fullMatch", "inlineTagMatches", "buildInlineTokens", "tags", "lineIndex", "characterIndex", "matchIndex", "startContent", "tagName", "endContent", "nonWhitespaceRegex", "whitespaceEndRegex", "startPosition", "JSDocCommentImpl", "parseJSDocElement", "parseJSDocTag", "parseJSDocText", "appendEmptyLine", "JSDocLineImpl", "firstToken", "lastToken", "parseJSDocInline", "JSDocTextImpl", "parseJSDocLine", "inline", "tagToken", "docLine", "JSDocTagImpl", "normalizeOption", "escaped", "fillNewlines", "rendered", "renderInlineTag", "marker", "display", "displayStart", "renderLinkDefault", "link", "_tag", "precomputed", "_cancelToken", "worker", "deferred", "cancellation", "hydrated", "sendMessage", "onMessage", "onError", "terminate", "tokenSource", "lexerReport", "num", "cstNodeObj", "Module2", "m1", "m2", "_merge", "module1", "module3", "module4", "module5", "module6", "module7", "module8", "module9", "module10", "_inject", "isProxy", "injector", "proxy", "_resolve", "__requested__", "sourceValue", "targetValue", "LexingMode2", "indentTokenName", "dedentTokenName", "whitespaceTokenName", "ignoreIndentationDelimiters", "dedent", "otherTokens", "lineNumber", "currIndentLevel", "prevIndentLevel", "matchIndentIndex", "numberOfDedents", "newlinesBeforeDedent", "remainingDedents", "report", "indentTokenType", "dedentTokenType", "indentTokenIdx", "dedentTokenIdx", "cleanTokens", "utils_exports", "_uri", "minimalGrammarModule", "minimalSharedGrammarModule", "createMinimalGrammarServices", "shared", "json", "activeCategories", "taskId", "record", "duration", "taskInternalDuration", "Round", "addRecord", "identifier", "subTaskId", "subStack", "selfDuration", "ArchitectureGrammar", "ArchitectureGrammar2", "EventModeling", "EventModeling2", "GitGraphGrammar", "GitGraphGrammar2", "InfoGrammar", "InfoGrammar2", "PacketGrammar", "PacketGrammar2", "PieGrammar", "PieGrammar2", "RadarGrammar", "RadarGrammar2", "TreemapGrammar", "TreemapGrammar2", "TreeViewGrammar", "TreeViewGrammar2", "WardleyGrammar", "WardleyGrammar2", "MermaidTerminals", "Accelerator", "Anchor", "Annotation", "Annotations", "Architecture", "isArchitecture", "reflection2", "Axis", "Branch", "isBranch", "Checkout", "CherryPicking", "ClassDefStatement", "Commit", "isCommit", "Common", "Component", "Curve", "Deaccelerator", "Decorator", "Direction", "Edge", "EmDataEntity", "EmFrame", "EmGwt", "EmGwtStatement", "EmModelEntity", "isEmModelEntityType", "EmNoteEntity", "EmResetFrame", "isEmResetFrame", "EmTimeFrame", "Entry", "EventModel", "Evolution", "EvolutionStage", "Evolve", "GitGraph", "isGitGraph", "Group2", "Info", "isInfo", "Item", "Junction", "Label", "Leaf", "Link", "Merge", "isMerge", "Note", "Option2", "Packet", "isPacket", "PacketBlock", "isPacketBlock", "Pie", "isPie", "PieSection", "isPieSection", "Pipeline", "PipelineComponent", "Radar", "Section", "Service", "Size", "Statement", "Treemap", "isTreemap", "TreemapRow", "TreeNode", "TreeView", "Wardley", "isWardley", "MermaidAstReflection", "loadedArchitectureGrammarGrammar", "ArchitectureGrammarGrammar", "loadedEventModelingGrammar", "EventModelingGrammar", "loadedGitGraphGrammarGrammar", "GitGraphGrammarGrammar", "loadedInfoGrammarGrammar", "InfoGrammarGrammar", "loadedPacketGrammarGrammar", "PacketGrammarGrammar", "loadedPieGrammarGrammar", "PieGrammarGrammar", "loadedRadarGrammarGrammar", "RadarGrammarGrammar", "loadedTreemapGrammarGrammar", "TreemapGrammarGrammar", "loadedTreeViewGrammarGrammar", "TreeViewGrammarGrammar", "loadedWardleyGrammarGrammar", "WardleyGrammarGrammar", "ArchitectureGrammarLanguageMetaData", "EventModelingLanguageMetaData", "GitGraphGrammarLanguageMetaData", "InfoGrammarLanguageMetaData", "PacketGrammarLanguageMetaData", "PieGrammarLanguageMetaData", "RadarGrammarLanguageMetaData", "TreemapGrammarLanguageMetaData", "TreeViewGrammarLanguageMetaData", "WardleyGrammarLanguageMetaData", "MermaidGeneratedSharedModule", "ArchitectureGrammarGeneratedModule", "EventModelingGeneratedModule", "GitGraphGrammarGeneratedModule", "InfoGrammarGeneratedModule", "PacketGrammarGeneratedModule", "PieGrammarGeneratedModule", "RadarGrammarGeneratedModule", "TreemapGrammarGeneratedModule", "TreeViewGrammarGeneratedModule", "WardleyGrammarGeneratedModule", "accessibilityDescrRegex", "accessibilityTitleRegex", "titleRegex", "rulesRegexes", "AbstractMermaidValueConverter", "_cstNode", "CommonValueConverter", "_rule", "_input", "AbstractMermaidTokenBuilder", "keywords", "CommonTokenBuilder"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-IWDTEBJL.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-IWDTEBJL.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs index 3920ef8..609e64d 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-IWDTEBJL.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs @@ -1 +1 @@ -import{a as g}from"./chunk-VELTKBKT.mjs";function tt(a,t,s){if(a&&a.length){let[e,n]=t,o=Math.PI/180*s,r=Math.cos(o),h=Math.sin(o);for(let i of a){let[l,c]=i;i[0]=(l-e)*r-(c-n)*h+e,i[1]=(l-e)*h+(c-n)*r+n}}}g(tt,"t");function Wt(a,t){return a[0]===t[0]&&a[1]===t[1]}g(Wt,"e");function Et(a,t,s,e=1){let n=s,o=Math.max(t,.1),r=a[0]&&a[0][0]&&typeof a[0][0]=="number"?[a]:a,h=[0,0];if(n)for(let l of r)tt(l,h,n);let i=(function(l,c,d){let p=[];for(let k of l){let w=[...k];Wt(w[0],w[w.length-1])||w.push([w[0][0],w[0][1]]),w.length>2&&p.push(w)}let u=[];c=Math.max(c,.1);let f=[];for(let k of p)for(let w=0;wk.yminw.ymin?1:k.xw.x?1:k.ymax===w.ymax?0:(k.ymax-w.ymax)/Math.abs(k.ymax-w.ymax))),!f.length)return u;let M=[],b=f[0].ymin,y=0;for(;M.length||f.length;){if(f.length){let k=-1;for(let w=0;wb);w++)k=w;f.splice(0,k+1).forEach((w=>{M.push({s:b,edge:w})}))}if(M=M.filter((k=>!(k.edge.ymax<=b))),M.sort(((k,w)=>k.edge.x===w.edge.x?0:(k.edge.x-w.edge.x)/Math.abs(k.edge.x-w.edge.x))),(d!==1||y%c==0)&&M.length>1)for(let k=0;k=M.length)break;let v=M[k].edge,P=M[w].edge;u.push([[Math.round(v.x),b],[Math.round(P.x),b]])}b+=d,M.forEach((k=>{k.edge.x=k.edge.x+d*k.edge.islope})),y++}return u})(r,o,e);if(n){for(let l of r)tt(l,h,-n);(function(l,c,d){let p=[];l.forEach((u=>p.push(...u))),tt(p,c,d)})(i,h,-n)}return i}g(Et,"s");function V(a,t){var s;let e=t.hachureAngle+90,n=t.hachureGap;n<0&&(n=4*t.strokeWidth),n=Math.round(Math.max(n,.1));let o=1;return t.roughness>=1&&(((s=t.randomizer)===null||s===void 0?void 0:s.next())||Math.random())>.7&&(o=n),Et(a,n,e,o||1)}g(V,"n");var F=class{static{g(this,"o")}constructor(t){this.helper=t}fillPolygons(t,s){return this._fillPolygons(t,s)}_fillPolygons(t,s){let e=V(t,s);return{type:"fillSketch",ops:this.renderLines(e,s)}}renderLines(t,s){let e=[];for(let n of t)e.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],s));return e}};function Y(a){let t=a[0],s=a[1];return Math.sqrt(Math.pow(t[0]-s[0],2)+Math.pow(t[1]-s[1],2))}g(Y,"a");var ot=class extends F{static{g(this,"h")}fillPolygons(t,s){let e=s.hachureGap;e<0&&(e=4*s.strokeWidth),e=Math.max(e,.1);let n=V(t,Object.assign({},s,{hachureGap:e})),o=Math.PI/180*s.hachureAngle,r=[],h=.5*e*Math.cos(o),i=.5*e*Math.sin(o);for(let[l,c]of n)Y([l,c])&&r.push([[l[0]-h,l[1]+i],[...c]],[[l[0]+h,l[1]-i],[...c]]);return{type:"fillSketch",ops:this.renderLines(r,s)}}},ht=class extends F{static{g(this,"r")}fillPolygons(t,s){let e=this._fillPolygons(t,s),n=Object.assign({},s,{hachureAngle:s.hachureAngle+90}),o=this._fillPolygons(t,n);return e.ops=e.ops.concat(o.ops),e}},rt=class{static{g(this,"i")}constructor(t){this.helper=t}fillPolygons(t,s){let e=V(t,s=Object.assign({},s,{hachureAngle:0}));return this.dotsOnLines(e,s)}dotsOnLines(t,s){let e=[],n=s.hachureGap;n<0&&(n=4*s.strokeWidth),n=Math.max(n,.1);let o=s.fillWeight;o<0&&(o=s.strokeWidth/2);let r=n/4;for(let h of t){let i=Y(h),l=i/n,c=Math.ceil(l)-1,d=i-c*n,p=(h[0][0]+h[1][0])/2-n/4,u=Math.min(h[0][1],h[1][1]);for(let f=0;f{let h=Y(r),i=Math.floor(h/(e+n)),l=(h+n-i*(e+n))/2,c=r[0],d=r[1];c[0]>d[0]&&(c=r[1],d=r[0]);let p=Math.atan((d[1]-c[1])/(d[0]-c[0]));for(let u=0;u{let r=Y(o),h=Math.round(r/(2*s)),i=o[0],l=o[1];i[0]>l[0]&&(i=o[1],l=o[0]);let c=Math.atan((l[1]-i[1])/(l[0]-i[0]));for(let d=0;dc%2?l+s:l+t));o.push({key:"C",data:i}),t=i[4],s=i[5];break}case"Q":o.push({key:"Q",data:[...h]}),t=h[2],s=h[3];break;case"q":{let i=h.map(((l,c)=>c%2?l+s:l+t));o.push({key:"Q",data:i}),t=i[2],s=i[3];break}case"A":o.push({key:"A",data:[...h]}),t=h[5],s=h[6];break;case"a":t+=h[5],s+=h[6],o.push({key:"A",data:[h[0],h[1],h[2],h[3],h[4],t,s]});break;case"H":o.push({key:"H",data:[...h]}),t=h[0];break;case"h":t+=h[0],o.push({key:"H",data:[t]});break;case"V":o.push({key:"V",data:[...h]}),s=h[0];break;case"v":s+=h[0],o.push({key:"V",data:[s]});break;case"S":o.push({key:"S",data:[...h]}),t=h[2],s=h[3];break;case"s":{let i=h.map(((l,c)=>c%2?l+s:l+t));o.push({key:"S",data:i}),t=i[2],s=i[3];break}case"T":o.push({key:"T",data:[...h]}),t=h[0],s=h[1];break;case"t":t+=h[0],s+=h[1],o.push({key:"T",data:[t,s]});break;case"Z":case"z":o.push({key:"Z",data:[]}),t=e,s=n}return o}g(Lt,"y");function Tt(a){let t=[],s="",e=0,n=0,o=0,r=0,h=0,i=0;for(let{key:l,data:c}of a){switch(l){case"M":t.push({key:"M",data:[...c]}),[e,n]=c,[o,r]=c;break;case"C":t.push({key:"C",data:[...c]}),e=c[4],n=c[5],h=c[2],i=c[3];break;case"L":t.push({key:"L",data:[...c]}),[e,n]=c;break;case"H":e=c[0],t.push({key:"L",data:[e,n]});break;case"V":n=c[0],t.push({key:"L",data:[e,n]});break;case"S":{let d=0,p=0;s==="C"||s==="S"?(d=e+(e-h),p=n+(n-i)):(d=e,p=n),t.push({key:"C",data:[d,p,...c]}),h=c[0],i=c[1],e=c[2],n=c[3];break}case"T":{let[d,p]=c,u=0,f=0;s==="Q"||s==="T"?(u=e+(e-h),f=n+(n-i)):(u=e,f=n);let M=e+2*(u-e)/3,b=n+2*(f-n)/3,y=d+2*(u-d)/3,k=p+2*(f-p)/3;t.push({key:"C",data:[M,b,y,k,d,p]}),h=u,i=f,e=d,n=p;break}case"Q":{let[d,p,u,f]=c,M=e+2*(d-e)/3,b=n+2*(p-n)/3,y=u+2*(d-u)/3,k=f+2*(p-f)/3;t.push({key:"C",data:[M,b,y,k,u,f]}),h=d,i=p,e=u,n=f;break}case"A":{let d=Math.abs(c[0]),p=Math.abs(c[1]),u=c[2],f=c[3],M=c[4],b=c[5],y=c[6];d===0||p===0?(t.push({key:"C",data:[e,n,b,y,b,y]}),e=b,n=y):(e!==b||n!==y)&&(Dt(e,n,b,y,d,p,u,f,M).forEach((function(k){t.push({key:"C",data:k})})),e=b,n=y);break}case"Z":t.push({key:"Z",data:[]}),e=o,n=r}s=l}return t}g(Tt,"m");function j(a,t,s){return[a*Math.cos(s)-t*Math.sin(s),a*Math.sin(s)+t*Math.cos(s)]}g(j,"w");function Dt(a,t,s,e,n,o,r,h,i,l){let c=(d=r,Math.PI*d/180);var d;let p=[],u=0,f=0,M=0,b=0;if(l)[u,f,M,b]=l;else{[a,t]=j(a,t,-c),[s,e]=j(s,e,-c);let D=(a-s)/2,S=(t-e)/2,I=D*D/(n*n)+S*S/(o*o);I>1&&(I=Math.sqrt(I),n*=I,o*=I);let E=n*n,G=o*o,Ct=E*G-E*S*S-G*D*D,zt=E*S*S+G*D*D,bt=(h===i?-1:1)*Math.sqrt(Math.abs(Ct/zt));M=bt*n*S/o+(a+s)/2,b=bt*-o*D/n+(t+e)/2,u=Math.asin(parseFloat(((t-b)/o).toFixed(9))),f=Math.asin(parseFloat(((e-b)/o).toFixed(9))),af&&(u-=2*Math.PI),!i&&f>u&&(f-=2*Math.PI)}let y=f-u;if(Math.abs(y)>120*Math.PI/180){let D=f,S=s,I=e;f=i&&f>u?u+120*Math.PI/180*1:u+120*Math.PI/180*-1,p=Dt(s=M+n*Math.cos(f),e=b+o*Math.sin(f),S,I,n,o,r,0,i,[f,D,M,b])}y=f-u;let k=Math.cos(u),w=Math.sin(u),v=Math.cos(f),P=Math.sin(f),x=Math.tan(y/4),T=4/3*n*x,_=4/3*o*x,Z=[a,t],A=[a+T*w,t-_*k],z=[s+T*P,e-_*v],kt=[s,e];if(A[0]=2*Z[0]-A[0],A[1]=2*Z[1]-A[1],l)return[A,z,kt].concat(p);{p=[A,z,kt].concat(p);let D=[];for(let S=0;S2){let n=[];for(let o=0;o2*Math.PI&&(u=0,f=2*Math.PI);let M=2*Math.PI/i.curveStepCount,b=Math.min(M/2,(f-u)/2),y=St(b,l,c,d,p,u,f,1,i);if(!i.disableMultiStroke){let k=St(b,l,c,d,p,u,f,1.5,i);y.push(...k)}return r&&(h?y.push(...C(l,c,l+d*Math.cos(u),c+p*Math.sin(u),i),...C(l,c,l+d*Math.cos(f),c+p*Math.sin(f),i)):y.push({op:"lineTo",data:[l,c]},{op:"lineTo",data:[l+d*Math.cos(u),c+p*Math.sin(u)]})),{type:"path",ops:y}}g(wt,"A");function xt(a,t){let s=Tt(Lt(Mt(a))),e=[],n=[0,0],o=[0,0];for(let{key:r,data:h}of s)switch(r){case"M":o=[h[0],h[1]],n=[h[0],h[1]];break;case"L":e.push(...C(o[0],o[1],h[0],h[1],t)),o=[h[0],h[1]];break;case"C":{let[i,l,c,d,p,u]=h;e.push(...jt(i,l,c,d,p,u,o,t)),o=[p,u];break}case"Z":e.push(...C(o[0],o[1],n[0],n[1],t)),o=[n[0],n[1]]}return{type:"path",ops:e}}g(xt,"_");function nt(a,t){let s=[];for(let e of a)if(e.length){let n=t.maxRandomnessOffset||0,o=e.length;if(o>2){s.push({op:"move",data:[e[0][0]+m(n,t),e[0][1]+m(n,t)]});for(let r=1;r500?.4:-.0016668*i+1.233334;let c=n.maxRandomnessOffset||0;c*c*100>h&&(c=i/10);let d=c/2,p=.2+.2*It(n),u=n.bowing*n.maxRandomnessOffset*(e-t)/200,f=n.bowing*n.maxRandomnessOffset*(a-s)/200;u=m(u,n,l),f=m(f,n,l);let M=[],b=g(()=>m(d,n,l),"M"),y=g(()=>m(c,n,l),"k"),k=n.preserveVertices;return o&&(r?M.push({op:"move",data:[a+(k?0:b()),t+(k?0:b())]}):M.push({op:"move",data:[a+(k?0:m(c,n,l)),t+(k?0:m(c,n,l))]})),r?M.push({op:"bcurveTo",data:[u+a+(s-a)*p+b(),f+t+(e-t)*p+b(),u+a+2*(s-a)*p+b(),f+t+2*(e-t)*p+b(),s+(k?0:b()),e+(k?0:b())]}):M.push({op:"bcurveTo",data:[u+a+(s-a)*p+y(),f+t+(e-t)*p+y(),u+a+2*(s-a)*p+y(),f+t+2*(e-t)*p+y(),s+(k?0:y()),e+(k?0:y())]}),M}g(pt,"R");function H(a,t,s){if(!a.length)return[];let e=[];e.push([a[0][0]+m(t,s),a[0][1]+m(t,s)]),e.push([a[0][0]+m(t,s),a[0][1]+m(t,s)]);for(let n=1;n3){let o=[],r=1-s.curveTightness;n.push({op:"move",data:[a[1][0],a[1][1]]});for(let h=1;h+21&&n.push(h)):n.push(h),n.push(a[t+3])}else{let i=a[t+0],l=a[t+1],c=a[t+2],d=a[t+3],p=W(i,l,.5),u=W(l,c,.5),f=W(c,d,.5),M=W(p,u,.5),b=W(u,f,.5),y=W(M,b,.5);ft([i,p,M,y],0,s,n),ft([y,b,f,d],0,s,n)}var o,r;return n}g(ft,"K");function Ft(a,t){return X(a,0,a.length,t)}g(Ft,"U");function X(a,t,s,e,n){let o=n||[],r=a[t],h=a[s-1],i=0,l=1;for(let c=t+1;ci&&(i=d,l=c)}return Math.sqrt(i)>e?(X(a,t,l+1,e,o),X(a,l,s,e,o)):(o.length||o.push(r),o.push(h)),o}g(X,"X");function at(a,t=.15,s){let e=[],n=(a.length-1)/3;for(let o=0;o0?X(e,0,e.length,s):e}g(at,"Y");var L="none",R=class{static{g(this,"et")}constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,s,e){return{shape:t,sets:s||[],options:e||this.defaultOptions}}line(t,s,e,n,o){let r=this._o(o);return this._d("line",[At(t,s,e,n,r)],r)}rectangle(t,s,e,n,o){let r=this._o(o),h=[],i=Rt(t,s,e,n,r);if(r.fill){let l=[[t,s],[t+e,s],[t+e,s+n],[t,s+n]];r.fillStyle==="solid"?h.push(nt([l],r)):h.push($([l],r))}return r.stroke!==L&&h.push(i),this._d("rectangle",h,r)}ellipse(t,s,e,n,o){let r=this._o(o),h=[],i=_t(e,n,r),l=ut(t,s,r,i);if(r.fill)if(r.fillStyle==="solid"){let c=ut(t,s,r,i).opset;c.type="fillPath",h.push(c)}else h.push($([l.estimatedPoints],r));return r.stroke!==L&&h.push(l.opset),this._d("ellipse",h,r)}circle(t,s,e,n){let o=this.ellipse(t,s,e,e,n);return o.shape="circle",o}linearPath(t,s){let e=this._o(s);return this._d("linearPath",[B(t,!1,e)],e)}arc(t,s,e,n,o,r,h=!1,i){let l=this._o(i),c=[],d=wt(t,s,e,n,o,r,h,!0,l);if(h&&l.fill)if(l.fillStyle==="solid"){let p=Object.assign({},l);p.disableMultiStroke=!0;let u=wt(t,s,e,n,o,r,!0,!1,p);u.type="fillPath",c.push(u)}else c.push((function(p,u,f,M,b,y,k){let w=p,v=u,P=Math.abs(f/2),x=Math.abs(M/2);P+=m(.01*P,k),x+=m(.01*x,k);let T=b,_=y;for(;T<0;)T+=2*Math.PI,_+=2*Math.PI;_-T>2*Math.PI&&(T=0,_=2*Math.PI);let Z=(_-T)/k.curveStepCount,A=[];for(let z=T;z<=_;z+=Z)A.push([w+P*Math.cos(z),v+x*Math.sin(z)]);return A.push([w+P*Math.cos(_),v+x*Math.sin(_)]),A.push([w,v]),$([A],k)})(t,s,e,n,o,r,l));return l.stroke!==L&&c.push(d),this._d("arc",c,l)}curve(t,s){let e=this._o(s),n=[],o=mt(t,e);if(e.fill&&e.fill!==L)if(e.fillStyle==="solid"){let r=mt(t,Object.assign(Object.assign({},e),{disableMultiStroke:!0,roughness:e.roughness?e.roughness+e.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(r.ops)})}else{let r=[],h=t;if(h.length){let i=typeof h[0][0]=="number"?[h]:h;for(let l of i)l.length<3?r.push(...l):l.length===3?r.push(...at(Ot([l[0],l[0],l[1],l[2]]),10,(1+e.roughness)/2)):r.push(...at(Ot(l),10,(1+e.roughness)/2))}r.length&&n.push($([r],e))}return e.stroke!==L&&n.push(o),this._d("curve",n,e)}polygon(t,s){let e=this._o(s),n=[],o=B(t,!0,e);return e.fill&&(e.fillStyle==="solid"?n.push(nt([t],e)):n.push($([t],e))),e.stroke!==L&&n.push(o),this._d("polygon",n,e)}path(t,s){let e=this._o(s),n=[];if(!t)return this._d("path",n,e);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let o=e.fill&&e.fill!=="transparent"&&e.fill!==L,r=e.stroke!==L,h=!!(e.simplification&&e.simplification<1),i=(function(c,d,p){let u=Tt(Lt(Mt(c))),f=[],M=[],b=[0,0],y=[],k=g(()=>{y.length>=4&&M.push(...at(y,d)),y=[]},"i"),w=g(()=>{k(),M.length&&(f.push(M),M=[])},"c");for(let{key:P,data:x}of u)switch(P){case"M":w(),b=[x[0],x[1]],M.push(b);break;case"L":k(),M.push([x[0],x[1]]);break;case"C":if(!y.length){let T=M.length?M[M.length-1]:b;y.push([T[0],T[1]])}y.push([x[0],x[1]]),y.push([x[2],x[3]]),y.push([x[4],x[5]]);break;case"Z":k(),M.push([b[0],b[1]])}if(w(),!p)return f;let v=[];for(let P of f){let x=Ft(P,p);x.length&&v.push(x)}return v})(t,1,h?4-4*(e.simplification||1):(1+e.roughness)/2),l=xt(t,e);if(o)if(e.fillStyle==="solid")if(i.length===1){let c=xt(t,Object.assign(Object.assign({},e),{disableMultiStroke:!0,roughness:e.roughness?e.roughness+e.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(c.ops)})}else n.push(nt(i,e));else n.push($(i,e));return r&&(h?i.forEach((c=>{n.push(B(c,!1,e))})):n.push(l)),this._d("path",n,e)}opsToPath(t,s){let e="";for(let n of t.ops){let o=typeof s=="number"&&s>=0?n.data.map((r=>+r.toFixed(s))):n.data;switch(n.op){case"move":e+=`M${o[0]} ${o[1]} `;break;case"bcurveTo":e+=`C${o[0]} ${o[1]}, ${o[2]} ${o[3]}, ${o[4]} ${o[5]} `;break;case"lineTo":e+=`L${o[0]} ${o[1]} `}}return e.trim()}toPaths(t){let s=t.sets||[],e=t.options||this.defaultOptions,n=[];for(let o of s){let r=null;switch(o.type){case"path":r={d:this.opsToPath(o),stroke:e.stroke,strokeWidth:e.strokeWidth,fill:L};break;case"fillPath":r={d:this.opsToPath(o),stroke:L,strokeWidth:0,fill:e.fill||L};break;case"fillSketch":r=this.fillSketch(o,e)}r&&n.push(r)}return n}fillSketch(t,s){let e=s.fillWeight;return e<0&&(e=s.strokeWidth/2),{d:this.opsToPath(t),stroke:s.fill||L,strokeWidth:e,fill:L}}_mergedShape(t){return t.filter(((s,e)=>e===0||s.op!=="move"))}},dt=class{static{g(this,"st")}constructor(t,s){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new R(s)}draw(t){let s=t.sets||[],e=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(let r of s)switch(r.type){case"path":n.save(),n.strokeStyle=e.stroke==="none"?"transparent":e.stroke,n.lineWidth=e.strokeWidth,e.strokeLineDash&&n.setLineDash(e.strokeLineDash),e.strokeLineDashOffset&&(n.lineDashOffset=e.strokeLineDashOffset),this._drawToContext(n,r,o),n.restore();break;case"fillPath":{n.save(),n.fillStyle=e.fill||"";let h=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(n,r,o,h),n.restore();break}case"fillSketch":this.fillSketch(n,r,e)}}fillSketch(t,s,e){let n=e.fillWeight;n<0&&(n=e.strokeWidth/2),t.save(),e.fillLineDash&&t.setLineDash(e.fillLineDash),e.fillLineDashOffset&&(t.lineDashOffset=e.fillLineDashOffset),t.strokeStyle=e.fill||"",t.lineWidth=n,this._drawToContext(t,s,e.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,s,e,n="nonzero"){t.beginPath();for(let o of s.ops){let r=typeof e=="number"&&e>=0?o.data.map((h=>+h.toFixed(e))):o.data;switch(o.op){case"move":t.moveTo(r[0],r[1]);break;case"bcurveTo":t.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5]);break;case"lineTo":t.lineTo(r[0],r[1])}}s.type==="fillPath"?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,s,e,n,o){let r=this.gen.line(t,s,e,n,o);return this.draw(r),r}rectangle(t,s,e,n,o){let r=this.gen.rectangle(t,s,e,n,o);return this.draw(r),r}ellipse(t,s,e,n,o){let r=this.gen.ellipse(t,s,e,n,o);return this.draw(r),r}circle(t,s,e,n){let o=this.gen.circle(t,s,e,n);return this.draw(o),o}linearPath(t,s){let e=this.gen.linearPath(t,s);return this.draw(e),e}polygon(t,s){let e=this.gen.polygon(t,s);return this.draw(e),e}arc(t,s,e,n,o,r,h=!1,i){let l=this.gen.arc(t,s,e,n,o,r,h,i);return this.draw(l),l}curve(t,s){let e=this.gen.curve(t,s);return this.draw(e),e}path(t,s){let e=this.gen.path(t,s);return this.draw(e),e}},N="http://www.w3.org/2000/svg",gt=class{static{g(this,"ot")}constructor(t,s){this.svg=t,this.gen=new R(s)}draw(t){let s=t.sets||[],e=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(N,"g"),r=t.options.fixedDecimalPlaceDigits;for(let h of s){let i=null;switch(h.type){case"path":i=n.createElementNS(N,"path"),i.setAttribute("d",this.opsToPath(h,r)),i.setAttribute("stroke",e.stroke),i.setAttribute("stroke-width",e.strokeWidth+""),i.setAttribute("fill","none"),e.strokeLineDash&&i.setAttribute("stroke-dasharray",e.strokeLineDash.join(" ").trim()),e.strokeLineDashOffset&&i.setAttribute("stroke-dashoffset",`${e.strokeLineDashOffset}`);break;case"fillPath":i=n.createElementNS(N,"path"),i.setAttribute("d",this.opsToPath(h,r)),i.setAttribute("stroke","none"),i.setAttribute("stroke-width","0"),i.setAttribute("fill",e.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||i.setAttribute("fill-rule","evenodd");break;case"fillSketch":i=this.fillSketch(n,h,e)}i&&o.appendChild(i)}return o}fillSketch(t,s,e){let n=e.fillWeight;n<0&&(n=e.strokeWidth/2);let o=t.createElementNS(N,"path");return o.setAttribute("d",this.opsToPath(s,e.fixedDecimalPlaceDigits)),o.setAttribute("stroke",e.fill||""),o.setAttribute("stroke-width",n+""),o.setAttribute("fill","none"),e.fillLineDash&&o.setAttribute("stroke-dasharray",e.fillLineDash.join(" ").trim()),e.fillLineDashOffset&&o.setAttribute("stroke-dashoffset",`${e.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,s){return this.gen.opsToPath(t,s)}line(t,s,e,n,o){let r=this.gen.line(t,s,e,n,o);return this.draw(r)}rectangle(t,s,e,n,o){let r=this.gen.rectangle(t,s,e,n,o);return this.draw(r)}ellipse(t,s,e,n,o){let r=this.gen.ellipse(t,s,e,n,o);return this.draw(r)}circle(t,s,e,n){let o=this.gen.circle(t,s,e,n);return this.draw(o)}linearPath(t,s){let e=this.gen.linearPath(t,s);return this.draw(e)}polygon(t,s){let e=this.gen.polygon(t,s);return this.draw(e)}arc(t,s,e,n,o,r,h=!1,i){let l=this.gen.arc(t,s,e,n,o,r,h,i);return this.draw(l)}curve(t,s){let e=this.gen.curve(t,s);return this.draw(e)}path(t,s){let e=this.gen.path(t,s);return this.draw(e)}},Vt={canvas:g((a,t)=>new dt(a,t),"canvas"),svg:g((a,t)=>new gt(a,t),"svg"),generator:g(a=>new R(a),"generator"),newSeed:g(()=>R.newSeed(),"newSeed")};export{Vt as a}; +import{a as g}from"./chunk-AQ6EADP3.mjs";function tt(a,t,s){if(a&&a.length){let[e,n]=t,o=Math.PI/180*s,r=Math.cos(o),h=Math.sin(o);for(let i of a){let[l,c]=i;i[0]=(l-e)*r-(c-n)*h+e,i[1]=(l-e)*h+(c-n)*r+n}}}g(tt,"t");function Wt(a,t){return a[0]===t[0]&&a[1]===t[1]}g(Wt,"e");function Et(a,t,s,e=1){let n=s,o=Math.max(t,.1),r=a[0]&&a[0][0]&&typeof a[0][0]=="number"?[a]:a,h=[0,0];if(n)for(let l of r)tt(l,h,n);let i=(function(l,c,d){let p=[];for(let k of l){let w=[...k];Wt(w[0],w[w.length-1])||w.push([w[0][0],w[0][1]]),w.length>2&&p.push(w)}let u=[];c=Math.max(c,.1);let f=[];for(let k of p)for(let w=0;wk.yminw.ymin?1:k.xw.x?1:k.ymax===w.ymax?0:(k.ymax-w.ymax)/Math.abs(k.ymax-w.ymax))),!f.length)return u;let M=[],b=f[0].ymin,y=0;for(;M.length||f.length;){if(f.length){let k=-1;for(let w=0;wb);w++)k=w;f.splice(0,k+1).forEach((w=>{M.push({s:b,edge:w})}))}if(M=M.filter((k=>!(k.edge.ymax<=b))),M.sort(((k,w)=>k.edge.x===w.edge.x?0:(k.edge.x-w.edge.x)/Math.abs(k.edge.x-w.edge.x))),(d!==1||y%c==0)&&M.length>1)for(let k=0;k=M.length)break;let v=M[k].edge,P=M[w].edge;u.push([[Math.round(v.x),b],[Math.round(P.x),b]])}b+=d,M.forEach((k=>{k.edge.x=k.edge.x+d*k.edge.islope})),y++}return u})(r,o,e);if(n){for(let l of r)tt(l,h,-n);(function(l,c,d){let p=[];l.forEach((u=>p.push(...u))),tt(p,c,d)})(i,h,-n)}return i}g(Et,"s");function V(a,t){var s;let e=t.hachureAngle+90,n=t.hachureGap;n<0&&(n=4*t.strokeWidth),n=Math.round(Math.max(n,.1));let o=1;return t.roughness>=1&&(((s=t.randomizer)===null||s===void 0?void 0:s.next())||Math.random())>.7&&(o=n),Et(a,n,e,o||1)}g(V,"n");var F=class{static{g(this,"o")}constructor(t){this.helper=t}fillPolygons(t,s){return this._fillPolygons(t,s)}_fillPolygons(t,s){let e=V(t,s);return{type:"fillSketch",ops:this.renderLines(e,s)}}renderLines(t,s){let e=[];for(let n of t)e.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],s));return e}};function Y(a){let t=a[0],s=a[1];return Math.sqrt(Math.pow(t[0]-s[0],2)+Math.pow(t[1]-s[1],2))}g(Y,"a");var ot=class extends F{static{g(this,"h")}fillPolygons(t,s){let e=s.hachureGap;e<0&&(e=4*s.strokeWidth),e=Math.max(e,.1);let n=V(t,Object.assign({},s,{hachureGap:e})),o=Math.PI/180*s.hachureAngle,r=[],h=.5*e*Math.cos(o),i=.5*e*Math.sin(o);for(let[l,c]of n)Y([l,c])&&r.push([[l[0]-h,l[1]+i],[...c]],[[l[0]+h,l[1]-i],[...c]]);return{type:"fillSketch",ops:this.renderLines(r,s)}}},ht=class extends F{static{g(this,"r")}fillPolygons(t,s){let e=this._fillPolygons(t,s),n=Object.assign({},s,{hachureAngle:s.hachureAngle+90}),o=this._fillPolygons(t,n);return e.ops=e.ops.concat(o.ops),e}},rt=class{static{g(this,"i")}constructor(t){this.helper=t}fillPolygons(t,s){let e=V(t,s=Object.assign({},s,{hachureAngle:0}));return this.dotsOnLines(e,s)}dotsOnLines(t,s){let e=[],n=s.hachureGap;n<0&&(n=4*s.strokeWidth),n=Math.max(n,.1);let o=s.fillWeight;o<0&&(o=s.strokeWidth/2);let r=n/4;for(let h of t){let i=Y(h),l=i/n,c=Math.ceil(l)-1,d=i-c*n,p=(h[0][0]+h[1][0])/2-n/4,u=Math.min(h[0][1],h[1][1]);for(let f=0;f{let h=Y(r),i=Math.floor(h/(e+n)),l=(h+n-i*(e+n))/2,c=r[0],d=r[1];c[0]>d[0]&&(c=r[1],d=r[0]);let p=Math.atan((d[1]-c[1])/(d[0]-c[0]));for(let u=0;u{let r=Y(o),h=Math.round(r/(2*s)),i=o[0],l=o[1];i[0]>l[0]&&(i=o[1],l=o[0]);let c=Math.atan((l[1]-i[1])/(l[0]-i[0]));for(let d=0;dc%2?l+s:l+t));o.push({key:"C",data:i}),t=i[4],s=i[5];break}case"Q":o.push({key:"Q",data:[...h]}),t=h[2],s=h[3];break;case"q":{let i=h.map(((l,c)=>c%2?l+s:l+t));o.push({key:"Q",data:i}),t=i[2],s=i[3];break}case"A":o.push({key:"A",data:[...h]}),t=h[5],s=h[6];break;case"a":t+=h[5],s+=h[6],o.push({key:"A",data:[h[0],h[1],h[2],h[3],h[4],t,s]});break;case"H":o.push({key:"H",data:[...h]}),t=h[0];break;case"h":t+=h[0],o.push({key:"H",data:[t]});break;case"V":o.push({key:"V",data:[...h]}),s=h[0];break;case"v":s+=h[0],o.push({key:"V",data:[s]});break;case"S":o.push({key:"S",data:[...h]}),t=h[2],s=h[3];break;case"s":{let i=h.map(((l,c)=>c%2?l+s:l+t));o.push({key:"S",data:i}),t=i[2],s=i[3];break}case"T":o.push({key:"T",data:[...h]}),t=h[0],s=h[1];break;case"t":t+=h[0],s+=h[1],o.push({key:"T",data:[t,s]});break;case"Z":case"z":o.push({key:"Z",data:[]}),t=e,s=n}return o}g(Lt,"y");function Tt(a){let t=[],s="",e=0,n=0,o=0,r=0,h=0,i=0;for(let{key:l,data:c}of a){switch(l){case"M":t.push({key:"M",data:[...c]}),[e,n]=c,[o,r]=c;break;case"C":t.push({key:"C",data:[...c]}),e=c[4],n=c[5],h=c[2],i=c[3];break;case"L":t.push({key:"L",data:[...c]}),[e,n]=c;break;case"H":e=c[0],t.push({key:"L",data:[e,n]});break;case"V":n=c[0],t.push({key:"L",data:[e,n]});break;case"S":{let d=0,p=0;s==="C"||s==="S"?(d=e+(e-h),p=n+(n-i)):(d=e,p=n),t.push({key:"C",data:[d,p,...c]}),h=c[0],i=c[1],e=c[2],n=c[3];break}case"T":{let[d,p]=c,u=0,f=0;s==="Q"||s==="T"?(u=e+(e-h),f=n+(n-i)):(u=e,f=n);let M=e+2*(u-e)/3,b=n+2*(f-n)/3,y=d+2*(u-d)/3,k=p+2*(f-p)/3;t.push({key:"C",data:[M,b,y,k,d,p]}),h=u,i=f,e=d,n=p;break}case"Q":{let[d,p,u,f]=c,M=e+2*(d-e)/3,b=n+2*(p-n)/3,y=u+2*(d-u)/3,k=f+2*(p-f)/3;t.push({key:"C",data:[M,b,y,k,u,f]}),h=d,i=p,e=u,n=f;break}case"A":{let d=Math.abs(c[0]),p=Math.abs(c[1]),u=c[2],f=c[3],M=c[4],b=c[5],y=c[6];d===0||p===0?(t.push({key:"C",data:[e,n,b,y,b,y]}),e=b,n=y):(e!==b||n!==y)&&(Dt(e,n,b,y,d,p,u,f,M).forEach((function(k){t.push({key:"C",data:k})})),e=b,n=y);break}case"Z":t.push({key:"Z",data:[]}),e=o,n=r}s=l}return t}g(Tt,"m");function j(a,t,s){return[a*Math.cos(s)-t*Math.sin(s),a*Math.sin(s)+t*Math.cos(s)]}g(j,"w");function Dt(a,t,s,e,n,o,r,h,i,l){let c=(d=r,Math.PI*d/180);var d;let p=[],u=0,f=0,M=0,b=0;if(l)[u,f,M,b]=l;else{[a,t]=j(a,t,-c),[s,e]=j(s,e,-c);let D=(a-s)/2,S=(t-e)/2,I=D*D/(n*n)+S*S/(o*o);I>1&&(I=Math.sqrt(I),n*=I,o*=I);let E=n*n,G=o*o,Ct=E*G-E*S*S-G*D*D,zt=E*S*S+G*D*D,bt=(h===i?-1:1)*Math.sqrt(Math.abs(Ct/zt));M=bt*n*S/o+(a+s)/2,b=bt*-o*D/n+(t+e)/2,u=Math.asin(parseFloat(((t-b)/o).toFixed(9))),f=Math.asin(parseFloat(((e-b)/o).toFixed(9))),af&&(u-=2*Math.PI),!i&&f>u&&(f-=2*Math.PI)}let y=f-u;if(Math.abs(y)>120*Math.PI/180){let D=f,S=s,I=e;f=i&&f>u?u+120*Math.PI/180*1:u+120*Math.PI/180*-1,p=Dt(s=M+n*Math.cos(f),e=b+o*Math.sin(f),S,I,n,o,r,0,i,[f,D,M,b])}y=f-u;let k=Math.cos(u),w=Math.sin(u),v=Math.cos(f),P=Math.sin(f),x=Math.tan(y/4),T=4/3*n*x,_=4/3*o*x,Z=[a,t],A=[a+T*w,t-_*k],z=[s+T*P,e-_*v],kt=[s,e];if(A[0]=2*Z[0]-A[0],A[1]=2*Z[1]-A[1],l)return[A,z,kt].concat(p);{p=[A,z,kt].concat(p);let D=[];for(let S=0;S2){let n=[];for(let o=0;o2*Math.PI&&(u=0,f=2*Math.PI);let M=2*Math.PI/i.curveStepCount,b=Math.min(M/2,(f-u)/2),y=St(b,l,c,d,p,u,f,1,i);if(!i.disableMultiStroke){let k=St(b,l,c,d,p,u,f,1.5,i);y.push(...k)}return r&&(h?y.push(...C(l,c,l+d*Math.cos(u),c+p*Math.sin(u),i),...C(l,c,l+d*Math.cos(f),c+p*Math.sin(f),i)):y.push({op:"lineTo",data:[l,c]},{op:"lineTo",data:[l+d*Math.cos(u),c+p*Math.sin(u)]})),{type:"path",ops:y}}g(wt,"A");function xt(a,t){let s=Tt(Lt(Mt(a))),e=[],n=[0,0],o=[0,0];for(let{key:r,data:h}of s)switch(r){case"M":o=[h[0],h[1]],n=[h[0],h[1]];break;case"L":e.push(...C(o[0],o[1],h[0],h[1],t)),o=[h[0],h[1]];break;case"C":{let[i,l,c,d,p,u]=h;e.push(...jt(i,l,c,d,p,u,o,t)),o=[p,u];break}case"Z":e.push(...C(o[0],o[1],n[0],n[1],t)),o=[n[0],n[1]]}return{type:"path",ops:e}}g(xt,"_");function nt(a,t){let s=[];for(let e of a)if(e.length){let n=t.maxRandomnessOffset||0,o=e.length;if(o>2){s.push({op:"move",data:[e[0][0]+m(n,t),e[0][1]+m(n,t)]});for(let r=1;r500?.4:-.0016668*i+1.233334;let c=n.maxRandomnessOffset||0;c*c*100>h&&(c=i/10);let d=c/2,p=.2+.2*It(n),u=n.bowing*n.maxRandomnessOffset*(e-t)/200,f=n.bowing*n.maxRandomnessOffset*(a-s)/200;u=m(u,n,l),f=m(f,n,l);let M=[],b=g(()=>m(d,n,l),"M"),y=g(()=>m(c,n,l),"k"),k=n.preserveVertices;return o&&(r?M.push({op:"move",data:[a+(k?0:b()),t+(k?0:b())]}):M.push({op:"move",data:[a+(k?0:m(c,n,l)),t+(k?0:m(c,n,l))]})),r?M.push({op:"bcurveTo",data:[u+a+(s-a)*p+b(),f+t+(e-t)*p+b(),u+a+2*(s-a)*p+b(),f+t+2*(e-t)*p+b(),s+(k?0:b()),e+(k?0:b())]}):M.push({op:"bcurveTo",data:[u+a+(s-a)*p+y(),f+t+(e-t)*p+y(),u+a+2*(s-a)*p+y(),f+t+2*(e-t)*p+y(),s+(k?0:y()),e+(k?0:y())]}),M}g(pt,"R");function H(a,t,s){if(!a.length)return[];let e=[];e.push([a[0][0]+m(t,s),a[0][1]+m(t,s)]),e.push([a[0][0]+m(t,s),a[0][1]+m(t,s)]);for(let n=1;n3){let o=[],r=1-s.curveTightness;n.push({op:"move",data:[a[1][0],a[1][1]]});for(let h=1;h+21&&n.push(h)):n.push(h),n.push(a[t+3])}else{let i=a[t+0],l=a[t+1],c=a[t+2],d=a[t+3],p=W(i,l,.5),u=W(l,c,.5),f=W(c,d,.5),M=W(p,u,.5),b=W(u,f,.5),y=W(M,b,.5);ft([i,p,M,y],0,s,n),ft([y,b,f,d],0,s,n)}var o,r;return n}g(ft,"K");function Ft(a,t){return X(a,0,a.length,t)}g(Ft,"U");function X(a,t,s,e,n){let o=n||[],r=a[t],h=a[s-1],i=0,l=1;for(let c=t+1;ci&&(i=d,l=c)}return Math.sqrt(i)>e?(X(a,t,l+1,e,o),X(a,l,s,e,o)):(o.length||o.push(r),o.push(h)),o}g(X,"X");function at(a,t=.15,s){let e=[],n=(a.length-1)/3;for(let o=0;o0?X(e,0,e.length,s):e}g(at,"Y");var L="none",R=class{static{g(this,"et")}constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,s,e){return{shape:t,sets:s||[],options:e||this.defaultOptions}}line(t,s,e,n,o){let r=this._o(o);return this._d("line",[At(t,s,e,n,r)],r)}rectangle(t,s,e,n,o){let r=this._o(o),h=[],i=Rt(t,s,e,n,r);if(r.fill){let l=[[t,s],[t+e,s],[t+e,s+n],[t,s+n]];r.fillStyle==="solid"?h.push(nt([l],r)):h.push($([l],r))}return r.stroke!==L&&h.push(i),this._d("rectangle",h,r)}ellipse(t,s,e,n,o){let r=this._o(o),h=[],i=_t(e,n,r),l=ut(t,s,r,i);if(r.fill)if(r.fillStyle==="solid"){let c=ut(t,s,r,i).opset;c.type="fillPath",h.push(c)}else h.push($([l.estimatedPoints],r));return r.stroke!==L&&h.push(l.opset),this._d("ellipse",h,r)}circle(t,s,e,n){let o=this.ellipse(t,s,e,e,n);return o.shape="circle",o}linearPath(t,s){let e=this._o(s);return this._d("linearPath",[B(t,!1,e)],e)}arc(t,s,e,n,o,r,h=!1,i){let l=this._o(i),c=[],d=wt(t,s,e,n,o,r,h,!0,l);if(h&&l.fill)if(l.fillStyle==="solid"){let p=Object.assign({},l);p.disableMultiStroke=!0;let u=wt(t,s,e,n,o,r,!0,!1,p);u.type="fillPath",c.push(u)}else c.push((function(p,u,f,M,b,y,k){let w=p,v=u,P=Math.abs(f/2),x=Math.abs(M/2);P+=m(.01*P,k),x+=m(.01*x,k);let T=b,_=y;for(;T<0;)T+=2*Math.PI,_+=2*Math.PI;_-T>2*Math.PI&&(T=0,_=2*Math.PI);let Z=(_-T)/k.curveStepCount,A=[];for(let z=T;z<=_;z+=Z)A.push([w+P*Math.cos(z),v+x*Math.sin(z)]);return A.push([w+P*Math.cos(_),v+x*Math.sin(_)]),A.push([w,v]),$([A],k)})(t,s,e,n,o,r,l));return l.stroke!==L&&c.push(d),this._d("arc",c,l)}curve(t,s){let e=this._o(s),n=[],o=mt(t,e);if(e.fill&&e.fill!==L)if(e.fillStyle==="solid"){let r=mt(t,Object.assign(Object.assign({},e),{disableMultiStroke:!0,roughness:e.roughness?e.roughness+e.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(r.ops)})}else{let r=[],h=t;if(h.length){let i=typeof h[0][0]=="number"?[h]:h;for(let l of i)l.length<3?r.push(...l):l.length===3?r.push(...at(Ot([l[0],l[0],l[1],l[2]]),10,(1+e.roughness)/2)):r.push(...at(Ot(l),10,(1+e.roughness)/2))}r.length&&n.push($([r],e))}return e.stroke!==L&&n.push(o),this._d("curve",n,e)}polygon(t,s){let e=this._o(s),n=[],o=B(t,!0,e);return e.fill&&(e.fillStyle==="solid"?n.push(nt([t],e)):n.push($([t],e))),e.stroke!==L&&n.push(o),this._d("polygon",n,e)}path(t,s){let e=this._o(s),n=[];if(!t)return this._d("path",n,e);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let o=e.fill&&e.fill!=="transparent"&&e.fill!==L,r=e.stroke!==L,h=!!(e.simplification&&e.simplification<1),i=(function(c,d,p){let u=Tt(Lt(Mt(c))),f=[],M=[],b=[0,0],y=[],k=g(()=>{y.length>=4&&M.push(...at(y,d)),y=[]},"i"),w=g(()=>{k(),M.length&&(f.push(M),M=[])},"c");for(let{key:P,data:x}of u)switch(P){case"M":w(),b=[x[0],x[1]],M.push(b);break;case"L":k(),M.push([x[0],x[1]]);break;case"C":if(!y.length){let T=M.length?M[M.length-1]:b;y.push([T[0],T[1]])}y.push([x[0],x[1]]),y.push([x[2],x[3]]),y.push([x[4],x[5]]);break;case"Z":k(),M.push([b[0],b[1]])}if(w(),!p)return f;let v=[];for(let P of f){let x=Ft(P,p);x.length&&v.push(x)}return v})(t,1,h?4-4*(e.simplification||1):(1+e.roughness)/2),l=xt(t,e);if(o)if(e.fillStyle==="solid")if(i.length===1){let c=xt(t,Object.assign(Object.assign({},e),{disableMultiStroke:!0,roughness:e.roughness?e.roughness+e.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(c.ops)})}else n.push(nt(i,e));else n.push($(i,e));return r&&(h?i.forEach((c=>{n.push(B(c,!1,e))})):n.push(l)),this._d("path",n,e)}opsToPath(t,s){let e="";for(let n of t.ops){let o=typeof s=="number"&&s>=0?n.data.map((r=>+r.toFixed(s))):n.data;switch(n.op){case"move":e+=`M${o[0]} ${o[1]} `;break;case"bcurveTo":e+=`C${o[0]} ${o[1]}, ${o[2]} ${o[3]}, ${o[4]} ${o[5]} `;break;case"lineTo":e+=`L${o[0]} ${o[1]} `}}return e.trim()}toPaths(t){let s=t.sets||[],e=t.options||this.defaultOptions,n=[];for(let o of s){let r=null;switch(o.type){case"path":r={d:this.opsToPath(o),stroke:e.stroke,strokeWidth:e.strokeWidth,fill:L};break;case"fillPath":r={d:this.opsToPath(o),stroke:L,strokeWidth:0,fill:e.fill||L};break;case"fillSketch":r=this.fillSketch(o,e)}r&&n.push(r)}return n}fillSketch(t,s){let e=s.fillWeight;return e<0&&(e=s.strokeWidth/2),{d:this.opsToPath(t),stroke:s.fill||L,strokeWidth:e,fill:L}}_mergedShape(t){return t.filter(((s,e)=>e===0||s.op!=="move"))}},dt=class{static{g(this,"st")}constructor(t,s){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new R(s)}draw(t){let s=t.sets||[],e=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(let r of s)switch(r.type){case"path":n.save(),n.strokeStyle=e.stroke==="none"?"transparent":e.stroke,n.lineWidth=e.strokeWidth,e.strokeLineDash&&n.setLineDash(e.strokeLineDash),e.strokeLineDashOffset&&(n.lineDashOffset=e.strokeLineDashOffset),this._drawToContext(n,r,o),n.restore();break;case"fillPath":{n.save(),n.fillStyle=e.fill||"";let h=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(n,r,o,h),n.restore();break}case"fillSketch":this.fillSketch(n,r,e)}}fillSketch(t,s,e){let n=e.fillWeight;n<0&&(n=e.strokeWidth/2),t.save(),e.fillLineDash&&t.setLineDash(e.fillLineDash),e.fillLineDashOffset&&(t.lineDashOffset=e.fillLineDashOffset),t.strokeStyle=e.fill||"",t.lineWidth=n,this._drawToContext(t,s,e.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,s,e,n="nonzero"){t.beginPath();for(let o of s.ops){let r=typeof e=="number"&&e>=0?o.data.map((h=>+h.toFixed(e))):o.data;switch(o.op){case"move":t.moveTo(r[0],r[1]);break;case"bcurveTo":t.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5]);break;case"lineTo":t.lineTo(r[0],r[1])}}s.type==="fillPath"?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,s,e,n,o){let r=this.gen.line(t,s,e,n,o);return this.draw(r),r}rectangle(t,s,e,n,o){let r=this.gen.rectangle(t,s,e,n,o);return this.draw(r),r}ellipse(t,s,e,n,o){let r=this.gen.ellipse(t,s,e,n,o);return this.draw(r),r}circle(t,s,e,n){let o=this.gen.circle(t,s,e,n);return this.draw(o),o}linearPath(t,s){let e=this.gen.linearPath(t,s);return this.draw(e),e}polygon(t,s){let e=this.gen.polygon(t,s);return this.draw(e),e}arc(t,s,e,n,o,r,h=!1,i){let l=this.gen.arc(t,s,e,n,o,r,h,i);return this.draw(l),l}curve(t,s){let e=this.gen.curve(t,s);return this.draw(e),e}path(t,s){let e=this.gen.path(t,s);return this.draw(e),e}},N="http://www.w3.org/2000/svg",gt=class{static{g(this,"ot")}constructor(t,s){this.svg=t,this.gen=new R(s)}draw(t){let s=t.sets||[],e=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(N,"g"),r=t.options.fixedDecimalPlaceDigits;for(let h of s){let i=null;switch(h.type){case"path":i=n.createElementNS(N,"path"),i.setAttribute("d",this.opsToPath(h,r)),i.setAttribute("stroke",e.stroke),i.setAttribute("stroke-width",e.strokeWidth+""),i.setAttribute("fill","none"),e.strokeLineDash&&i.setAttribute("stroke-dasharray",e.strokeLineDash.join(" ").trim()),e.strokeLineDashOffset&&i.setAttribute("stroke-dashoffset",`${e.strokeLineDashOffset}`);break;case"fillPath":i=n.createElementNS(N,"path"),i.setAttribute("d",this.opsToPath(h,r)),i.setAttribute("stroke","none"),i.setAttribute("stroke-width","0"),i.setAttribute("fill",e.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||i.setAttribute("fill-rule","evenodd");break;case"fillSketch":i=this.fillSketch(n,h,e)}i&&o.appendChild(i)}return o}fillSketch(t,s,e){let n=e.fillWeight;n<0&&(n=e.strokeWidth/2);let o=t.createElementNS(N,"path");return o.setAttribute("d",this.opsToPath(s,e.fixedDecimalPlaceDigits)),o.setAttribute("stroke",e.fill||""),o.setAttribute("stroke-width",n+""),o.setAttribute("fill","none"),e.fillLineDash&&o.setAttribute("stroke-dasharray",e.fillLineDash.join(" ").trim()),e.fillLineDashOffset&&o.setAttribute("stroke-dashoffset",`${e.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,s){return this.gen.opsToPath(t,s)}line(t,s,e,n,o){let r=this.gen.line(t,s,e,n,o);return this.draw(r)}rectangle(t,s,e,n,o){let r=this.gen.rectangle(t,s,e,n,o);return this.draw(r)}ellipse(t,s,e,n,o){let r=this.gen.ellipse(t,s,e,n,o);return this.draw(r)}circle(t,s,e,n){let o=this.gen.circle(t,s,e,n);return this.draw(o)}linearPath(t,s){let e=this.gen.linearPath(t,s);return this.draw(e)}polygon(t,s){let e=this.gen.polygon(t,s);return this.draw(e)}arc(t,s,e,n,o,r,h=!1,i){let l=this.gen.arc(t,s,e,n,o,r,h,i);return this.draw(l)}curve(t,s){let e=this.gen.curve(t,s);return this.draw(e)}path(t,s){let e=this.gen.path(t,s);return this.draw(e)}},Vt={canvas:g((a,t)=>new dt(a,t),"canvas"),svg:g((a,t)=>new gt(a,t),"svg"),generator:g(a=>new R(a),"generator"),newSeed:g(()=>R.newSeed(),"newSeed")};export{Vt as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-IWDTEBJL.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-IWDTEBJL.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-5VCL7Z4A.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-5VCL7Z4A.mjs new file mode 100644 index 0000000..bc6953b --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-5VCL7Z4A.mjs @@ -0,0 +1 @@ +import{a as f}from"./chunk-AQ6EADP3.mjs";var d=f((t,r)=>{if(r)return"translate("+-t.width/2+", "+-t.height/2+")";let c=t.x??0,e=t.y??0;return"translate("+-(c+t.width/2)+", "+-(e+t.height/2)+")"},"computeLabelTransform");var s={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4,arrow_barb:0,arrow_barb_neo:5.5},T={arrow_point:4,arrow_cross:12.5,arrow_circle:12.5};function b(t,r){if(t===void 0||r===void 0)return{angle:0,deltaX:0,deltaY:0};t=n(t),r=n(r);let[c,e]=[t.x,t.y],[o,i]=[r.x,r.y],l=o-c,p=i-e;return{angle:Math.atan(p/l),deltaX:l,deltaY:p}}f(b,"calculateDeltaAndAngle");var n=f(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),E=f(t=>({x:f(function(r,c,e){let o=0,i=n(e[0]).x=0?1:-1)}else if(c===e.length-1&&Object.hasOwn(s,t.arrowTypeEnd)){let{angle:a,deltaX:m}=b(e[e.length-1],e[e.length-2]);o=s[t.arrowTypeEnd]*Math.cos(a)*(m>=0?1:-1)}let l=Math.abs(n(r).x-n(e[e.length-1]).x),p=Math.abs(n(r).y-n(e[e.length-1]).y),u=Math.abs(n(r).x-n(e[0]).x),x=Math.abs(n(r).y-n(e[0]).y),y=s[t.arrowTypeStart],h=s[t.arrowTypeEnd],g=1;if(l0&&p0&&x=0?1:-1)}else if(c===e.length-1&&Object.hasOwn(s,t.arrowTypeEnd)){let{angle:a,deltaY:m}=b(e[e.length-1],e[e.length-2]);o=s[t.arrowTypeEnd]*Math.abs(Math.sin(a))*(m>=0?1:-1)}let l=Math.abs(n(r).y-n(e[e.length-1]).y),p=Math.abs(n(r).x-n(e[e.length-1]).x),u=Math.abs(n(r).y-n(e[0]).y),x=Math.abs(n(r).x-n(e[0]).x),y=s[t.arrowTypeStart],h=s[t.arrowTypeEnd],g=1;if(l0&&p0&&x extends beyond the text (making\n * bbox.x/y negative), so we include those offsets to correctly center the visual\n * content at the origin.\n *\n * @param bbox - The bounding box of the label element\n * @param useHtmlLabels - Whether HTML labels are in use\n * @returns SVG transform string, e.g. \"translate(-20, -10)\"\n */\nexport const computeLabelTransform = (bbox: LabelBBox, useHtmlLabels: boolean): string => {\n if (useHtmlLabels) {\n return 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')';\n }\n const x = bbox.x ?? 0;\n const y = bbox.y ?? 0;\n return 'translate(' + -(x + bbox.width / 2) + ', ' + -(y + bbox.height / 2) + ')';\n};\n", "import type { EdgeData, Point } from '../types.js';\n\n// We need to draw the lines a bit shorter to avoid drawing\n// under any transparent markers.\n// The offsets are calculated from the markers' dimensions.\nexport const markerOffsets = {\n aggregation: 17.25,\n extension: 17.25,\n composition: 17.25,\n dependency: 6,\n lollipop: 13.5,\n arrow_point: 4,\n arrow_barb: 0,\n arrow_barb_neo: 5.5,\n //arrow_cross: 24,\n} as const;\n\n// We need to draw the lines a bit shorter to avoid drawing\n// under any transparent markers.\n// The offsets are calculated from the markers' dimensions.\nexport const markerOffsets2 = {\n arrow_point: 4,\n arrow_cross: 12.5,\n arrow_circle: 12.5,\n} as const;\n\n/**\n * Calculate the deltas and angle between two points\n * @param point1 - First point\n * @param point2 - Second point\n * @returns The angle, deltaX and deltaY\n */\nfunction calculateDeltaAndAngle(\n point1?: Point | [number, number],\n point2?: Point | [number, number]\n): { angle: number; deltaX: number; deltaY: number } {\n if (point1 === undefined || point2 === undefined) {\n return { angle: 0, deltaX: 0, deltaY: 0 };\n }\n point1 = pointTransformer(point1);\n point2 = pointTransformer(point2);\n const [x1, y1] = [point1.x, point1.y];\n const [x2, y2] = [point2.x, point2.y];\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };\n}\n\nconst pointTransformer = (data: Point | [number, number]) => {\n if (Array.isArray(data)) {\n return { x: data[0], y: data[1] };\n }\n return data;\n};\n\nexport const getLineFunctionsWithOffset = (\n edge: Pick\n) => {\n return {\n x: function (\n this: void,\n d: Point | [number, number],\n i: number,\n data: (Point | [number, number])[]\n ) {\n let offset = 0;\n const DIRECTION =\n pointTransformer(data[0]).x < pointTransformer(data[data.length - 1]).x ? 'left' : 'right';\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n offset =\n markerOffsets[edge.arrowTypeStart as keyof typeof markerOffsets] *\n Math.cos(angle) *\n (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaX } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset =\n markerOffsets[edge.arrowTypeEnd as keyof typeof markerOffsets] *\n Math.cos(angle) *\n (deltaX >= 0 ? 1 : -1);\n }\n\n const differenceToEnd = Math.abs(\n pointTransformer(d).x - pointTransformer(data[data.length - 1]).x\n );\n const differenceInYEnd = Math.abs(\n pointTransformer(d).y - pointTransformer(data[data.length - 1]).y\n );\n const differenceToStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);\n const differenceInYStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);\n const startMarkerHeight = markerOffsets[edge.arrowTypeStart as keyof typeof markerOffsets];\n const endMarkerHeight = markerOffsets[edge.arrowTypeEnd as keyof typeof markerOffsets];\n const extraRoom = 1;\n\n // Adjust the offset if the difference is smaller than the marker height\n if (\n differenceToEnd < endMarkerHeight &&\n differenceToEnd > 0 &&\n differenceInYEnd < endMarkerHeight\n ) {\n let adjustment = endMarkerHeight + extraRoom - differenceToEnd;\n adjustment *= DIRECTION === 'right' ? -1 : 1;\n // Adjust the offset by the amount needed to fit the marker\n offset -= adjustment;\n }\n\n if (\n differenceToStart < startMarkerHeight &&\n differenceToStart > 0 &&\n differenceInYStart < startMarkerHeight\n ) {\n let adjustment = startMarkerHeight + extraRoom - differenceToStart;\n adjustment *= DIRECTION === 'right' ? -1 : 1;\n offset += adjustment;\n }\n\n return pointTransformer(d).x + offset;\n },\n y: function (\n this: void,\n d: Point | [number, number],\n i: number,\n data: (Point | [number, number])[]\n ) {\n let offset = 0;\n const DIRECTION =\n pointTransformer(data[0]).y < pointTransformer(data[data.length - 1]).y ? 'down' : 'up';\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n offset =\n markerOffsets[edge.arrowTypeStart as keyof typeof markerOffsets] *\n Math.abs(Math.sin(angle)) *\n (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaY } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset =\n markerOffsets[edge.arrowTypeEnd as keyof typeof markerOffsets] *\n Math.abs(Math.sin(angle)) *\n (deltaY >= 0 ? 1 : -1);\n }\n\n const differenceToEnd = Math.abs(\n pointTransformer(d).y - pointTransformer(data[data.length - 1]).y\n );\n const differenceInXEnd = Math.abs(\n pointTransformer(d).x - pointTransformer(data[data.length - 1]).x\n );\n const differenceToStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);\n const differenceInXStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);\n const startMarkerHeight = markerOffsets[edge.arrowTypeStart as keyof typeof markerOffsets];\n const endMarkerHeight = markerOffsets[edge.arrowTypeEnd as keyof typeof markerOffsets];\n const extraRoom = 1;\n\n // Adjust the offset if the difference is smaller than the marker height\n if (\n differenceToEnd < endMarkerHeight &&\n differenceToEnd > 0 &&\n differenceInXEnd < endMarkerHeight\n ) {\n let adjustment = endMarkerHeight + extraRoom - differenceToEnd;\n adjustment *= DIRECTION === 'up' ? -1 : 1;\n // Adjust the offset by the amount needed to fit the marker\n offset -= adjustment;\n }\n\n if (\n differenceToStart < startMarkerHeight &&\n differenceToStart > 0 &&\n differenceInXStart < startMarkerHeight\n ) {\n let adjustment = startMarkerHeight + extraRoom - differenceToStart;\n adjustment *= DIRECTION === 'up' ? -1 : 1;\n offset += adjustment;\n }\n return pointTransformer(d).y + offset;\n },\n };\n};\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n describe('calculateDeltaAndAngle', () => {\n it('should calculate the angle and deltas between two points', () => {\n expect(calculateDeltaAndAngle([0, 0], [0, 1])).toStrictEqual({\n angle: 1.5707963267948966,\n deltaX: 0,\n deltaY: 1,\n });\n expect(calculateDeltaAndAngle([1, 0], [0, -1])).toStrictEqual({\n angle: 0.7853981633974483,\n deltaX: -1,\n deltaY: -1,\n });\n expect(calculateDeltaAndAngle({ x: 1, y: 0 }, [0, -1])).toStrictEqual({\n angle: 0.7853981633974483,\n deltaX: -1,\n deltaY: -1,\n });\n expect(calculateDeltaAndAngle({ x: 1, y: 0 }, { x: 1, y: 0 })).toStrictEqual({\n angle: NaN,\n deltaX: 0,\n deltaY: 0,\n });\n });\n\n it('should calculate the angle and deltas if one point in undefined', () => {\n expect(calculateDeltaAndAngle(undefined, [0, 1])).toStrictEqual({\n angle: 0,\n deltaX: 0,\n deltaY: 0,\n });\n expect(calculateDeltaAndAngle([0, 1], undefined)).toStrictEqual({\n angle: 0,\n deltaX: 0,\n deltaY: 0,\n });\n });\n });\n}\n"], + "mappings": "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", + "names": ["computeLabelTransform", "__name", "bbox", "useHtmlLabels", "x", "y", "markerOffsets", "markerOffsets2", "calculateDeltaAndAngle", "point1", "point2", "pointTransformer", "x1", "y1", "x2", "y2", "deltaX", "deltaY", "__name", "data", "getLineFunctionsWithOffset", "edge", "d", "i", "offset", "DIRECTION", "angle", "differenceToEnd", "differenceInYEnd", "differenceToStart", "differenceInYStart", "startMarkerHeight", "endMarkerHeight", "extraRoom", "adjustment", "differenceInXEnd", "differenceInXStart"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-5YHUCXBM.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-5YHUCXBM.mjs deleted file mode 100644 index cb08b6b..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-5YHUCXBM.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import{a as T,b as B,c as K,d as xt}from"./chunk-3ZBQQEZ6.mjs";import{c as Y}from"./chunk-BDKIFH7H.mjs";import{b as kt}from"./chunk-XODN6PIJ.mjs";import{a as yt}from"./chunk-IWDTEBJL.mjs";import{c as ht,d as mt}from"./chunk-D2KP3OBD.mjs";import{f as ft}from"./chunk-YLHEXJF3.mjs";import{m as O}from"./chunk-Q3CC2MQB.mjs";import{Y as E,w as J}from"./chunk-3UWU4A3N.mjs";import{$ as pt,G as N,H as rt,J as at,K as et,L as F,P as nt,S as st,W as ot,X as it,Y as ct,Z as lt,_ as dt,b,h as v}from"./chunk-MGPAVIPZ.mjs";import{a as p}from"./chunk-VELTKBKT.mjs";var bt=p((r,t,a,n,i,s)=>{t.arrowTypeStart&&ut(r,"start",t.arrowTypeStart,a,n,i,s),t.arrowTypeEnd&&ut(r,"end",t.arrowTypeEnd,a,n,i,s)},"addEdgeMarkers"),_t={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},ut=p((r,t,a,n,i,s,e)=>{let o=_t[a];if(!o){b.warn(`Unknown arrow type: ${a}`);return}let l=o.type,m=`${i}_${s}-${l}${t==="start"?"Start":"End"}`;if(e&&e.trim()!==""){let y=e.replace(/[^\dA-Za-z]/g,"_"),f=`${m}_${y}`;if(!document.getElementById(f)){let d=document.getElementById(m);if(d){let x=d.cloneNode(!0);x.id=f,x.querySelectorAll("path, circle, line").forEach(k=>{k.setAttribute("stroke",e),o.fill&&k.setAttribute("fill",e)}),d.parentNode?.appendChild(x)}}r.attr(`marker-${t}`,`url(${n}#${f})`)}else r.attr(`marker-${t}`,`url(${n}#${m})`)},"addEdgeMarker");var $t=p(r=>typeof r=="string"?r:E()?.flowchart?.curve,"resolveEdgeCurveType"),P=new Map,w=new Map,hr=p(()=>{P.clear(),w.clear()},"clear"),W=p(r=>r?typeof r=="string"?r:r.reduce((t,a)=>t+";"+a,""):"","getLabelStyles"),mr=p(async(r,t)=>{let a=E(),n=J(a),{labelStyles:i}=mt(t);t.labelStyle=i;let s=r.insert("g").attr("class","edgeLabel"),e=s.insert("g").attr("class","label").attr("data-id",t.id),o=t.labelType==="markdown",c=await ft(r,t.label,{style:W(t.labelStyle),useHtmlLabels:n,addSvgBackground:!0,isNode:!1,markdown:o,width:o?void 0:void 0},a);e.node().appendChild(c),b.info("abc82",t,t.labelType);let m=c.getBBox(),y=m;if(n){let d=c.children[0],x=v(c);m=d.getBoundingClientRect(),y=m,x.attr("width",m.width),x.attr("height",m.height)}else{let d=v(c).select("text").node();d&&typeof d.getBBox=="function"&&(y=d.getBBox())}e.attr("transform",T(y,n)),P.set(t.id,s),t.width=m.width,t.height=m.height;let f;if(t.startLabelLeft){let d=r.insert("g").attr("class","edgeTerminals"),x=d.insert("g").attr("class","inner"),h=await Y(x,t.startLabelLeft,W(t.labelStyle)||"",!1,!1);f=h;let k=h.getBBox();if(n){let u=h.children[0],M=v(h);k=u.getBoundingClientRect(),M.attr("width",k.width),M.attr("height",k.height)}x.attr("transform",T(k,n)),w.get(t.id)||w.set(t.id,{}),w.get(t.id).startLeft=d,Q(f,t.startLabelLeft)}if(t.startLabelRight){let d=r.insert("g").attr("class","edgeTerminals"),x=d.insert("g").attr("class","inner"),h=await Y(x,t.startLabelRight,W(t.labelStyle)||"",!1,!1);f=h,x.node().appendChild(h);let k=h.getBBox();if(n){let u=h.children[0],M=v(h);k=u.getBoundingClientRect(),M.attr("width",k.width),M.attr("height",k.height)}x.attr("transform",T(k,n)),w.get(t.id)||w.set(t.id,{}),w.get(t.id).startRight=d,Q(f,t.startLabelRight)}if(t.endLabelLeft){let d=r.insert("g").attr("class","edgeTerminals"),x=d.insert("g").attr("class","inner"),h=await Y(x,t.endLabelLeft,W(t.labelStyle)||"",!1,!1);f=h;let k=h.getBBox();if(n){let u=h.children[0],M=v(h);k=u.getBoundingClientRect(),M.attr("width",k.width),M.attr("height",k.height)}x.attr("transform",T(k,n)),d.node().appendChild(h),w.get(t.id)||w.set(t.id,{}),w.get(t.id).endLeft=d,Q(f,t.endLabelLeft)}if(t.endLabelRight){let d=r.insert("g").attr("class","edgeTerminals"),x=d.insert("g").attr("class","inner"),h=await Y(x,t.endLabelRight,W(t.labelStyle)||"",!1,!1);f=h;let k=h.getBBox();if(n){let u=h.children[0],M=v(h);k=u.getBoundingClientRect(),M.attr("width",k.width),M.attr("height",k.height)}x.attr("transform",T(k,n)),d.node().appendChild(h),w.get(t.id)||w.set(t.id,{}),w.get(t.id).endRight=d,Q(f,t.endLabelRight)}return c},"insertEdgeLabel");function Q(r,t){J(E())&&r&&(r.style.width=t.length*9+"px",r.style.height="12px")}p(Q,"setTerminalWidth");var yr=p((r,t)=>{b.debug("Moving label abc88 ",r.id,r.label,P.get(r.id),t);let a=t.updatedPath?t.updatedPath:t.originalPath,n=E(),{subGraphTitleTotalMargin:i}=kt(n);if(r.label){let s=P.get(r.id),e=r.x,o=r.y;if(a){let l=O.calcLabelPosition(a);b.debug("Moving label "+r.label+" from (",e,",",o,") to (",l.x,",",l.y,") abc88"),t.updatedPath&&(e=l.x,o=l.y)}s.attr("transform",`translate(${e}, ${o+i/2})`)}if(r.startLabelLeft){let s=w.get(r.id).startLeft,e=r.x,o=r.y;if(a){let l=O.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_left",a);e=l.x,o=l.y}s.attr("transform",`translate(${e}, ${o})`)}if(r.startLabelRight){let s=w.get(r.id).startRight,e=r.x,o=r.y;if(a){let l=O.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_right",a);e=l.x,o=l.y}s.attr("transform",`translate(${e}, ${o})`)}if(r.endLabelLeft){let s=w.get(r.id).endLeft,e=r.x,o=r.y;if(a){let l=O.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_left",a);e=l.x,o=l.y}s.attr("transform",`translate(${e}, ${o})`)}if(r.endLabelRight){let s=w.get(r.id).endRight,e=r.x,o=r.y;if(a){let l=O.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_right",a);e=l.x,o=l.y}s.attr("transform",`translate(${e}, ${o})`)}},"positionEdgeLabel"),Et=p((r,t)=>{let a=r.x,n=r.y,i=Math.abs(t.x-a),s=Math.abs(t.y-n),e=r.width/2,o=r.height/2;return i>=e||s>=o},"outsideNode"),vt=p((r,t,a)=>{b.debug(`intersection calc abc89: - outsidePoint: ${JSON.stringify(t)} - insidePoint : ${JSON.stringify(a)} - node : x:${r.x} y:${r.y} w:${r.width} h:${r.height}`);let n=r.x,i=r.y,s=Math.abs(n-a.x),e=r.width/2,o=a.xMath.abs(n-t.x)*l){let y=a.y{b.warn("abc88 cutPathAtIntersect",r,t);let a=[],n=r[0],i=!1;return r.forEach(s=>{if(b.info("abc88 checking point",s,t),!Et(t,s)&&!i){let e=vt(t,n,s);b.debug("abc88 inside",s,n,e),b.debug("abc88 intersection",e,t);let o=!1;a.forEach(l=>{o=o||l.x===e.x&&l.y===e.y}),a.some(l=>l.x===e.x&&l.y===e.y)?b.warn("abc88 no intersect",e,a):a.push(e),i=!0}else b.warn("abc88 outside",s,n),n=s,i||a.push(s)}),b.debug("returning points",a),a},"cutPathAtIntersect");function Ot(r){let t=[],a=[];for(let n=1;n5&&Math.abs(s.y-i.y)>5||i.y===s.y&&s.x===e.x&&Math.abs(s.x-i.x)>5&&Math.abs(s.y-e.y)>5)&&(t.push(s),a.push(n))}return{cornerPoints:t,cornerPointPositions:a}}p(Ot,"extractCornerPoints");var wt=p(function(r,t,a){let n=t.x-r.x,i=t.y-r.y,s=Math.sqrt(n*n+i*i),e=a/s;return{x:t.x-e*n,y:t.y-e*i}},"findAdjacentPoint"),Tt=p(function(r){let{cornerPointPositions:t}=Ot(r),a=[];for(let n=0;n10&&Math.abs(s.y-i.y)>=10){b.debug("Corner point fixing",Math.abs(s.x-i.x),Math.abs(s.y-i.y));let d=5;e.x===o.x?f={x:c<0?o.x-d+y:o.x+d-y,y:m<0?o.y-y:o.y+y}:f={x:c<0?o.x-y:o.x+y,y:m<0?o.y-d+y:o.y+d-y}}else b.debug("Corner point skipping fixing",Math.abs(s.x-i.x),Math.abs(s.y-i.y));a.push(f,l)}else a.push(r[n]);return a},"fixCorners"),Xt=p((r,t,a)=>{let n=r-t-a,i=2,s=2,e=i+s,o=Math.floor(n/e),l=Array(o).fill(`${i} ${s}`).join(" ");return`0 ${t} ${l} ${a}`},"generateDashArray"),kr=p(function(r,t,a,n,i,s,e,o=!1){let{handDrawnSeed:l}=E(),c=t.points,m=!1,y=i;var f=s;let d=[];for(let S in t.cssCompiledStyles)ht(S)||d.push(t.cssCompiledStyles[S]);b.debug("UIO intersect check",t.points,f.x,y.x),f.intersect&&y.intersect&&!o&&(c=c.slice(1,t.points.length-1),c.unshift(y.intersect(c[0])),b.debug("Last point UIO",t.start,"-->",t.end,c[c.length-1],f,f.intersect(c[c.length-1])),c.push(f.intersect(c[c.length-1])));let x=btoa(JSON.stringify(c));t.toCluster&&(b.info("to cluster abc88",a.get(t.toCluster)),c=gt(t.points,a.get(t.toCluster).node),m=!0),t.fromCluster&&(b.debug("from cluster abc88",a.get(t.fromCluster),JSON.stringify(c,null,2)),c=gt(c.reverse(),a.get(t.fromCluster).node).reverse(),m=!0);let h=c.filter(S=>!Number.isNaN(S.y)),k=$t(t.curve);k!=="rounded"&&(h=Tt(h));let u=N;switch(k){case"linear":u=N;break;case"basis":u=F;break;case"cardinal":u=nt;break;case"bumpX":u=at;break;case"bumpY":u=et;break;case"catmullRom":u=st;break;case"monotoneX":u=ot;break;case"monotoneY":u=it;break;case"natural":u=ct;break;case"step":u=lt;break;case"stepAfter":u=pt;break;case"stepBefore":u=dt;break;case"rounded":u=N;break;default:u=F}let{x:M,y:Z}=xt(t),V=rt().x(M).y(Z).curve(u),L;switch(t.thickness){case"normal":L="edge-thickness-normal";break;case"thick":L="edge-thickness-thick";break;case"invisible":L="edge-thickness-invisible";break;default:L="edge-thickness-normal"}switch(t.pattern){case"solid":L+=" edge-pattern-solid";break;case"dotted":L+=" edge-pattern-dotted";break;case"dashed":L+=" edge-pattern-dashed";break;default:L+=" edge-pattern-solid"}let g,C=k==="rounded"?Yt(Bt(h,t),5):V(h),_=Array.isArray(t.style)?t.style:[t.style],H=_.find(S=>S?.startsWith("stroke:")),$="";t.animate&&($="edge-animation-fast"),t.animation&&($="edge-animation-"+t.animation);let tt=!1;if(t.look==="handDrawn"){let S=yt.svg(r);Object.assign([],h);let z=S.path(C,{roughness:.3,seed:l});L+=" transition",g=v(z).select("path").attr("id",t.id).attr("class"," "+L+(t.classes?" "+t.classes:"")+($?" "+$:"")).attr("style",_?_.reduce((U,q)=>U+";"+q,""):"");let A=g.attr("d");g.attr("d",A),r.node().appendChild(g.node())}else{let S=d.join(";"),z=_?_.reduce((I,X)=>I+X+";",""):"",A=(S?S+";"+z+";":z)+";"+(_?_.reduce((I,X)=>I+";"+X,""):"");g=r.append("path").attr("d",C).attr("id",t.id).attr("class"," "+L+(t.classes?" "+t.classes:"")+($?" "+$:"")).attr("style",A),H=A.match(/stroke:([^;]+)/)?.[1],tt=t.animate===!0||!!t.animation||S.includes("animation");let U=g.node(),q=typeof U.getTotalLength=="function"?U.getTotalLength():0,G=K[t.arrowTypeStart]||0,D=K[t.arrowTypeEnd]||0;if(t.look==="neo"&&!tt){let X=`stroke-dasharray: ${t.pattern==="dotted"||t.pattern==="dashed"?Xt(q,G,D):`0 ${G} ${q-G-D} ${D}`}; stroke-dashoffset: 0;`;g.attr("style",X+g.attr("style"))}}g.attr("data-edge",!0),g.attr("data-et","edge"),g.attr("data-id",t.id),g.attr("data-points",x),t.showPoints&&h.forEach(S=>{r.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",S.x).attr("cy",S.y)});let R="";(E().flowchart.arrowMarkerAbsolute||E().state.arrowMarkerAbsolute)&&(R=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,R=R.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),b.info("arrowTypeStart",t.arrowTypeStart),b.info("arrowTypeEnd",t.arrowTypeEnd),bt(g,t,R,e,n,H);let Lt=Math.floor(c.length/2),St=c[Lt];O.isLabelCoordinateInPath(St,g.attr("d"))||(m=!0);let j={};return m&&(j.updatedPath=c),j.originalPath=t.points,j},"insertEdge");function Yt(r,t){if(r.length<2)return"";let a="",n=r.length,i=1e-5;for(let s=0;s({...i}));if(r.length>=2&&B[t.arrowTypeStart]){let i=B[t.arrowTypeStart],s=r[0],e=r[1],{angle:o}=Mt(s,e),l=i*Math.cos(o),c=i*Math.sin(o);a[0].x=s.x+l,a[0].y=s.y+c}let n=r.length;if(n>=2&&B[t.arrowTypeEnd]){let i=B[t.arrowTypeEnd],s=r[n-1],e=r[n-2],{angle:o}=Mt(e,s),l=i*Math.cos(o),c=i*Math.sin(o);a[n-1].x=s.x-l,a[n-1].y=s.y-c}return a}p(Bt,"applyMarkerOffsetsToPoints");var Wt=p((r,t,a,n)=>{t.forEach(i=>{Dt[i](r,a,n)})},"insertMarkers"),Ct=p((r,t,a)=>{b.trace("Making markers for ",a),r.append("defs").append("marker").attr("id",a+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),Ht=p((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),Rt=p((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),zt=p((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),At=p((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),r.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),Ut=p((r,t,a)=>{r.append("marker").attr("id",a+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),qt=p((r,t,a)=>{r.append("marker").attr("id",a+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),It=p((r,t,a)=>{r.append("marker").attr("id",a+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),Nt=p((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),Qt=p((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),r.append("defs").append("marker").attr("id",a+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),Pt=p((r,t,a)=>{let n=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),Zt=p((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),r.append("defs").append("marker").attr("id",a+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),Vt=p((r,t,a)=>{let n=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),jt=p((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 - L20,10 - M20,10 - L0,20`)},"requirement_arrow"),Gt=p((r,t,a)=>{let n=r.append("defs").append("marker").attr("id",a+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),Dt={extension:Ct,composition:Ht,aggregation:Rt,dependency:zt,lollipop:At,point:Ut,circle:qt,cross:It,barb:Nt,only_one:Qt,zero_or_one:Pt,one_or_more:Zt,zero_or_more:Vt,requirement_arrow:jt,requirement_contains:Gt},gr=Wt;export{hr as a,mr as b,yr as c,kr as d,gr as e}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-5YHUCXBM.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-5YHUCXBM.mjs.map deleted file mode 100644 index f2f3c86..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-5YHUCXBM.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/rendering-util/rendering-elements/edgeMarker.ts", "../../../src/rendering-util/rendering-elements/edges.js", "../../../src/rendering-util/rendering-elements/markers.js"], - "sourcesContent": ["import type { SVG } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport type { EdgeData } from '../../types.js';\n/**\n * Adds SVG markers to a path element based on the arrow types specified in the edge.\n *\n * @param svgPath - The SVG path element to add markers to.\n * @param edge - The edge data object containing the arrow types.\n * @param url - The URL of the SVG marker definitions.\n * @param id - The ID prefix for the SVG marker definitions.\n * @param diagramType - The type of diagram being rendered.\n */\nexport const addEdgeMarkers = (\n svgPath: SVG,\n edge: Pick,\n url: string,\n id: string,\n diagramType: string,\n strokeColor?: string\n) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, 'start', edge.arrowTypeStart, url, id, diagramType, strokeColor);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, 'end', edge.arrowTypeEnd, url, id, diagramType, strokeColor);\n }\n};\n\nconst arrowTypesMap = {\n arrow_cross: { type: 'cross', fill: false },\n arrow_point: { type: 'point', fill: true },\n arrow_barb: { type: 'barb', fill: true },\n arrow_circle: { type: 'circle', fill: false },\n aggregation: { type: 'aggregation', fill: false },\n extension: { type: 'extension', fill: false },\n composition: { type: 'composition', fill: true },\n dependency: { type: 'dependency', fill: true },\n lollipop: { type: 'lollipop', fill: false },\n only_one: { type: 'onlyOne', fill: false },\n zero_or_one: { type: 'zeroOrOne', fill: false },\n one_or_more: { type: 'oneOrMore', fill: false },\n zero_or_more: { type: 'zeroOrMore', fill: false },\n requirement_arrow: { type: 'requirement_arrow', fill: false },\n requirement_contains: { type: 'requirement_contains', fill: false },\n} as const;\n\nconst addEdgeMarker = (\n svgPath: SVG,\n position: 'start' | 'end',\n arrowType: string,\n url: string,\n id: string,\n diagramType: string,\n strokeColor?: string\n) => {\n const arrowTypeInfo = arrowTypesMap[arrowType as keyof typeof arrowTypesMap];\n\n if (!arrowTypeInfo) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return; // unknown arrow type, ignore\n }\n\n const endMarkerType = arrowTypeInfo.type;\n const suffix = position === 'start' ? 'Start' : 'End';\n const originalMarkerId = `${id}_${diagramType}-${endMarkerType}${suffix}`;\n\n // If stroke color is specified and non-empty, create or use a colored variant of the marker\n if (strokeColor && strokeColor.trim() !== '') {\n // Create a sanitized color value for use in IDs\n const colorId = strokeColor.replace(/[^\\dA-Za-z]/g, '_');\n const coloredMarkerId = `${originalMarkerId}_${colorId}`;\n\n // Check if the colored marker already exists\n if (!document.getElementById(coloredMarkerId)) {\n // Get the original marker\n const originalMarker = document.getElementById(originalMarkerId);\n if (originalMarker) {\n // Clone the marker and create colored version\n const coloredMarker = originalMarker.cloneNode(true) as Element;\n coloredMarker.id = coloredMarkerId;\n\n // Apply colors to the paths inside the marker\n const paths = coloredMarker.querySelectorAll('path, circle, line');\n paths.forEach((path) => {\n path.setAttribute('stroke', strokeColor);\n\n // Apply fill only to markers that should be filled\n if (arrowTypeInfo.fill) {\n path.setAttribute('fill', strokeColor);\n }\n });\n\n // Add the new colored marker to the defs section\n originalMarker.parentNode?.appendChild(coloredMarker);\n }\n }\n\n // Use the colored marker\n svgPath.attr(`marker-${position}`, `url(${url}#${coloredMarkerId})`);\n } else {\n // Always use the original marker for unstyled edges\n svgPath.attr(`marker-${position}`, `url(${url}#${originalMarkerId})`);\n }\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../../config.js';\nimport { log } from '../../logger.js';\nimport { createText } from '../createText.js';\nimport { computeLabelTransform } from '../labelTransform.js';\nimport utils from '../../utils.js';\nimport {\n getLineFunctionsWithOffset,\n markerOffsets,\n markerOffsets2,\n} from '../../utils/lineWithOffset.js';\nimport { getSubGraphTitleMargins } from '../../utils/subGraphTitleMargins.js';\n\nimport {\n curveBasis,\n curveLinear,\n curveCardinal,\n curveBumpX,\n curveBumpY,\n curveCatmullRom,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n line,\n select,\n} from 'd3';\nimport rough from 'roughjs';\nimport createLabel from './createLabel.js';\nimport { addEdgeMarkers } from './edgeMarker.ts';\nimport { isLabelStyle, styles2String } from './shapes/handDrawnShapeStyles.js';\n\n/**\n * Resolve the effective curve type for an edge.\n * If edge.curve is a string (e.g. 'rounded', 'linear'), use it directly.\n * Otherwise (undefined, null, or a D3 CurveFactory function), fall back to config.\n * @param {*} edgeCurve - The edge.curve value (string, function, or undefined/null)\n * @returns {string|undefined} - The resolved curve type string\n */\nexport const resolveEdgeCurveType = (edgeCurve) => {\n return typeof edgeCurve === 'string' ? edgeCurve : getConfig()?.flowchart?.curve;\n};\n\nexport const edgeLabels = new Map();\nexport const terminalLabels = new Map();\n\nexport const clear = () => {\n edgeLabels.clear();\n terminalLabels.clear();\n};\n\nexport const getLabelStyles = (styleArray) => {\n if (!styleArray) {\n return '';\n }\n if (typeof styleArray === 'string') {\n return styleArray;\n }\n return styleArray.reduce((acc, style) => acc + ';' + style, '');\n};\n\nexport const insertEdgeLabel = async (elem, edge) => {\n const config = getConfig();\n let useHtmlLabels = getEffectiveHtmlLabels(config);\n const { labelStyles } = styles2String(edge);\n edge.labelStyle = labelStyles;\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label').attr('data-id', edge.id);\n\n const isMarkdown = edge.labelType === 'markdown';\n const markdownWidth = undefined; // Use default width for markdown labels\n const labelElement = await createText(\n elem,\n edge.label,\n {\n style: getLabelStyles(edge.labelStyle),\n useHtmlLabels,\n addSvgBackground: true,\n isNode: false,\n markdown: isMarkdown,\n // Plain text edge labels should auto-wrap, markdown edge labels respect markdownAutoWrap config\n width: isMarkdown ? markdownWidth : undefined,\n },\n config\n );\n\n label.node().appendChild(labelElement);\n log.info('abc82', edge, edge.labelType);\n\n // Center the label\n let bbox = labelElement.getBBox();\n let transformBbox = bbox;\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n transformBbox = bbox;\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n } else {\n // For SVG labels, use text element's bbox so the text is centered on the edge\n const textEl = select(labelElement).select('text').node();\n if (textEl && typeof textEl.getBBox === 'function') {\n transformBbox = textEl.getBBox();\n }\n }\n label.attr('transform', computeLabelTransform(transformBbox, useHtmlLabels));\n\n // Make element accessible by id for positioning\n edgeLabels.set(edge.id, edgeLabel);\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n const startLabelElement = await createLabel(\n inner,\n edge.startLabelLeft,\n getLabelStyles(edge.labelStyle) || '',\n false,\n false\n );\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n // Create the actual text element\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n const startLabelElement = await createLabel(\n inner,\n edge.startLabelRight,\n getLabelStyles(edge.labelStyle) || '',\n false,\n false\n );\n fo = startLabelElement;\n inner.node().appendChild(startLabelElement);\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n // Create the actual text element\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n const endLabelElement = await createLabel(\n inner,\n edge.endLabelLeft,\n getLabelStyles(edge.labelStyle) || '',\n false,\n false\n );\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n // Create the actual text element\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n\n const endLabelElement = await createLabel(\n inner,\n edge.endLabelRight,\n getLabelStyles(edge.labelStyle) || '',\n false,\n false\n );\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\n\n/**\n * @param {any} fo\n * @param {any} value\n */\nfunction setTerminalWidth(fo, value) {\n if (getEffectiveHtmlLabels(getConfig()) && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.debug('Moving label abc88 ', edge.id, edge.label, edgeLabels.get(edge.id), paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels.get(edge.id);\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.debug(\n 'Moving label ' + edge.label + ' from (',\n x,\n ',',\n y,\n ') to (',\n pos.x,\n ',',\n pos.y,\n ') abc88'\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr('transform', `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n\n if (edge.startLabelLeft) {\n const el = terminalLabels.get(edge.id).startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels.get(edge.id).startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels.get(edge.id).endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels.get(edge.id).endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n};\n\nconst outsideNode = (node, point) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n return dx >= w || dy >= h;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n // Intersection is top or bottom of rect.\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.debug(`abc89 top/bottom calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection on sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n\nconst cutPathAtIntersect = (_points, boundaryNode) => {\n log.warn('abc88 cutPathAtIntersect', _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n log.info('abc88 checking point', point, boundaryNode);\n\n if (!outsideNode(boundaryNode, point) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point);\n log.debug('abc88 inside', point, lastPointOutside, inter);\n log.debug('abc88 intersection', inter, boundaryNode);\n\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn('abc88 no intersect', inter, points);\n }\n isInside = true;\n } else {\n log.warn('abc88 outside', point, lastPointOutside);\n lastPointOutside = point;\n if (!isInside) {\n points.push(point);\n }\n }\n });\n log.debug('returning points', points);\n return points;\n};\n\nfunction extractCornerPoints(points) {\n const cornerPoints = [];\n const cornerPointPositions = [];\n for (let i = 1; i < points.length - 1; i++) {\n const prev = points[i - 1];\n const curr = points[i];\n const next = points[i + 1];\n if (\n prev.x === curr.x &&\n curr.y === next.y &&\n Math.abs(curr.x - next.x) > 5 &&\n Math.abs(curr.y - prev.y) > 5\n ) {\n cornerPoints.push(curr);\n cornerPointPositions.push(i);\n } else if (\n prev.y === curr.y &&\n curr.x === next.x &&\n Math.abs(curr.x - prev.x) > 5 &&\n Math.abs(curr.y - next.y) > 5\n ) {\n cornerPoints.push(curr);\n cornerPointPositions.push(i);\n }\n }\n return { cornerPoints, cornerPointPositions };\n}\n\nconst findAdjacentPoint = function (pointA, pointB, distance) {\n const xDiff = pointB.x - pointA.x;\n const yDiff = pointB.y - pointA.y;\n const length = Math.sqrt(xDiff * xDiff + yDiff * yDiff);\n const ratio = distance / length;\n return { x: pointB.x - ratio * xDiff, y: pointB.y - ratio * yDiff };\n};\n\nconst fixCorners = function (lineData) {\n const { cornerPointPositions } = extractCornerPoints(lineData);\n const newLineData = [];\n for (let i = 0; i < lineData.length; i++) {\n if (cornerPointPositions.includes(i)) {\n const prevPoint = lineData[i - 1];\n const nextPoint = lineData[i + 1];\n const cornerPoint = lineData[i];\n\n const newPrevPoint = findAdjacentPoint(prevPoint, cornerPoint, 5);\n const newNextPoint = findAdjacentPoint(nextPoint, cornerPoint, 5);\n\n const xDiff = newNextPoint.x - newPrevPoint.x;\n const yDiff = newNextPoint.y - newPrevPoint.y;\n newLineData.push(newPrevPoint);\n\n const a = Math.sqrt(2) * 2;\n let newCornerPoint = { x: cornerPoint.x, y: cornerPoint.y };\n if (Math.abs(nextPoint.x - prevPoint.x) > 10 && Math.abs(nextPoint.y - prevPoint.y) >= 10) {\n log.debug(\n 'Corner point fixing',\n Math.abs(nextPoint.x - prevPoint.x),\n Math.abs(nextPoint.y - prevPoint.y)\n );\n const r = 5;\n if (cornerPoint.x === newPrevPoint.x) {\n newCornerPoint = {\n x: xDiff < 0 ? newPrevPoint.x - r + a : newPrevPoint.x + r - a,\n y: yDiff < 0 ? newPrevPoint.y - a : newPrevPoint.y + a,\n };\n } else {\n newCornerPoint = {\n x: xDiff < 0 ? newPrevPoint.x - a : newPrevPoint.x + a,\n y: yDiff < 0 ? newPrevPoint.y - r + a : newPrevPoint.y + r - a,\n };\n }\n } else {\n log.debug(\n 'Corner point skipping fixing',\n Math.abs(nextPoint.x - prevPoint.x),\n Math.abs(nextPoint.y - prevPoint.y)\n );\n }\n newLineData.push(newCornerPoint, newNextPoint);\n } else {\n newLineData.push(lineData[i]);\n }\n }\n return newLineData;\n};\n\nconst generateDashArray = (len, oValueS, oValueE) => {\n const middleLength = len - oValueS - oValueE;\n const dashLength = 2; // Length of each dash\n const gapLength = 2; // Length of each gap\n const dashGapPairLength = dashLength + gapLength;\n\n // Calculate number of complete dash-gap pairs that can fit\n const numberOfPairs = Math.floor(middleLength / dashGapPairLength);\n\n // Generate the middle pattern array\n const middlePattern = Array(numberOfPairs).fill(`${dashLength} ${gapLength}`).join(' ');\n\n // Combine all parts\n const dashArray = `0 ${oValueS} ${middlePattern} ${oValueE}`;\n\n return dashArray;\n};\nexport const insertEdge = function (\n elem,\n edge,\n clusterDb,\n diagramType,\n startNode,\n endNode,\n id,\n skipIntersect = false\n) {\n const { handDrawnSeed } = getConfig();\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = startNode;\n var head = endNode;\n const edgeClassStyles = [];\n for (const key in edge.cssCompiledStyles) {\n if (isLabelStyle(key)) {\n continue;\n }\n edgeClassStyles.push(edge.cssCompiledStyles[key]);\n }\n\n log.debug('UIO intersect check', edge.points, head.x, tail.x);\n if (head.intersect && tail.intersect && !skipIntersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.debug(\n 'Last point UIO',\n edge.start,\n '-->',\n edge.end,\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n const pointsStr = btoa(JSON.stringify(points));\n if (edge.toCluster) {\n log.info('to cluster abc88', clusterDb.get(edge.toCluster));\n points = cutPathAtIntersect(edge.points, clusterDb.get(edge.toCluster).node);\n\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.debug(\n 'from cluster abc88',\n clusterDb.get(edge.fromCluster),\n JSON.stringify(points, null, 2)\n );\n points = cutPathAtIntersect(points.reverse(), clusterDb.get(edge.fromCluster).node).reverse();\n\n pointsHasChanged = true;\n }\n\n let lineData = points.filter((p) => !Number.isNaN(p.y));\n // Resolve curve type: use edge.curve if it's a string, otherwise fall back to config default\n const edgeCurveType = resolveEdgeCurveType(edge.curve);\n // Apply fixCorners for non-rounded curves to pre-round right-angle corners\n // (rounded curve type uses generateRoundedPath instead)\n if (edgeCurveType !== 'rounded') {\n lineData = fixCorners(lineData);\n }\n let curve = curveLinear;\n switch (edgeCurveType) {\n case 'linear':\n curve = curveLinear;\n break;\n case 'basis':\n curve = curveBasis;\n break;\n case 'cardinal':\n curve = curveCardinal;\n break;\n case 'bumpX':\n curve = curveBumpX;\n break;\n case 'bumpY':\n curve = curveBumpY;\n break;\n case 'catmullRom':\n curve = curveCatmullRom;\n break;\n case 'monotoneX':\n curve = curveMonotoneX;\n break;\n case 'monotoneY':\n curve = curveMonotoneY;\n break;\n case 'natural':\n curve = curveNatural;\n break;\n case 'step':\n curve = curveStep;\n break;\n case 'stepAfter':\n curve = curveStepAfter;\n break;\n case 'stepBefore':\n curve = curveStepBefore;\n break;\n case 'rounded':\n curve = curveLinear;\n break;\n default:\n curve = curveBasis;\n }\n\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n case 'invisible':\n strokeClasses = 'edge-thickness-invisible';\n break;\n default:\n strokeClasses = 'edge-thickness-normal';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n default:\n strokeClasses += ' edge-pattern-solid';\n }\n let svgPath;\n let linePath =\n edgeCurveType === 'rounded'\n ? generateRoundedPath(applyMarkerOffsetsToPoints(lineData, edge), 5)\n : lineFunction(lineData);\n const edgeStyles = Array.isArray(edge.style) ? edge.style : [edge.style];\n let strokeColor = edgeStyles.find((style) => style?.startsWith('stroke:'));\n\n let animationClass = '';\n if (edge.animate) {\n animationClass = 'edge-animation-fast';\n }\n if (edge.animation) {\n animationClass = 'edge-animation-' + edge.animation;\n }\n\n let animatedEdge = false;\n if (edge.look === 'handDrawn') {\n const rc = rough.svg(elem);\n Object.assign([], lineData);\n\n const svgPathNode = rc.path(linePath, {\n roughness: 0.3,\n seed: handDrawnSeed,\n });\n\n strokeClasses += ' transition';\n\n svgPath = select(svgPathNode)\n .select('path')\n .attr('id', edge.id)\n .attr(\n 'class',\n ' ' +\n strokeClasses +\n (edge.classes ? ' ' + edge.classes : '') +\n (animationClass ? ' ' + animationClass : '')\n )\n .attr('style', edgeStyles ? edgeStyles.reduce((acc, style) => acc + ';' + style, '') : '');\n let d = svgPath.attr('d');\n svgPath.attr('d', d);\n elem.node().appendChild(svgPath.node());\n } else {\n const stylesFromClasses = edgeClassStyles.join(';');\n const styles = edgeStyles ? edgeStyles.reduce((acc, style) => acc + style + ';', '') : '';\n\n const pathStyle =\n (stylesFromClasses ? stylesFromClasses + ';' + styles + ';' : styles) +\n ';' +\n (edgeStyles ? edgeStyles.reduce((acc, style) => acc + ';' + style, '') : '');\n svgPath = elem\n .append('path')\n .attr('d', linePath)\n .attr('id', edge.id)\n .attr(\n 'class',\n ' ' +\n strokeClasses +\n (edge.classes ? ' ' + edge.classes : '') +\n (animationClass ? ' ' + animationClass : '')\n )\n .attr('style', pathStyle);\n\n //eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n strokeColor = pathStyle.match(/stroke:([^;]+)/)?.[1];\n\n // Possible fix to remove eslint-disable-next-line\n //strokeColor = /stroke:([^;]+)/.exec(pathStyle)?.[1];\n\n animatedEdge =\n edge.animate === true || !!edge.animation || stylesFromClasses.includes('animation');\n const pathNode = svgPath.node();\n const len = typeof pathNode.getTotalLength === 'function' ? pathNode.getTotalLength() : 0;\n const oValueS = markerOffsets2[edge.arrowTypeStart] || 0;\n const oValueE = markerOffsets2[edge.arrowTypeEnd] || 0;\n\n if (edge.look === 'neo' && !animatedEdge) {\n const dashArray =\n edge.pattern === 'dotted' || edge.pattern === 'dashed'\n ? generateDashArray(len, oValueS, oValueE)\n : `0 ${oValueS} ${len - oValueS - oValueE} ${oValueE}`;\n\n // No offset needed because we already start with a zero-length dash that effectively sets us up for a gap at the start.\n const mOffset = `stroke-dasharray: ${dashArray}; stroke-dashoffset: 0;`;\n svgPath.attr('style', mOffset + svgPath.attr('style'));\n }\n }\n\n // MC Special\n svgPath.attr('data-edge', true);\n svgPath.attr('data-et', 'edge');\n svgPath.attr('data-id', edge.id);\n svgPath.attr('data-points', pointsStr);\n\n // DEBUG code, adds a red circle at each edge coordinate\n // cornerPoints.forEach((point) => {\n // elem\n // .append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 3)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n if (edge.showPoints) {\n lineData.forEach((point) => {\n elem\n .append('circle')\n .style('stroke', 'red')\n .style('fill', 'red')\n .attr('r', 1)\n .attr('cx', point.x)\n .attr('cy', point.y);\n });\n }\n\n let url = '';\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(').replace(/\\)/g, '\\\\)');\n }\n log.info('arrowTypeStart', edge.arrowTypeStart);\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n addEdgeMarkers(svgPath, edge, url, id, diagramType, strokeColor);\n const midIndex = Math.floor(points.length / 2);\n const point = points[midIndex];\n if (!utils.isLabelCoordinateInPath(point, svgPath.attr('d'))) {\n pointsHasChanged = true;\n }\n\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n\n/**\n * Generates SVG path data with rounded corners from an array of points.\n * @param {Array} points - Array of points in the format [{x: Number, y: Number}, ...]\n * @param {Number} radius - The radius of the rounded corners\n * @returns {String} - SVG path data string\n */\nfunction generateRoundedPath(points, radius) {\n if (points.length < 2) {\n return '';\n }\n\n let path = '';\n const size = points.length;\n const epsilon = 1e-5;\n\n for (let i = 0; i < size; i++) {\n const currPoint = points[i];\n const prevPoint = points[i - 1];\n const nextPoint = points[i + 1];\n\n if (i === 0) {\n // Move to the first point\n path += `M${currPoint.x},${currPoint.y}`;\n } else if (i === size - 1) {\n // Last point, draw a straight line to the final point\n path += `L${currPoint.x},${currPoint.y}`;\n } else {\n // Calculate vectors for incoming and outgoing segments\n const dx1 = currPoint.x - prevPoint.x;\n const dy1 = currPoint.y - prevPoint.y;\n const dx2 = nextPoint.x - currPoint.x;\n const dy2 = nextPoint.y - currPoint.y;\n\n const len1 = Math.hypot(dx1, dy1);\n const len2 = Math.hypot(dx2, dy2);\n\n // Prevent division by zero\n if (len1 < epsilon || len2 < epsilon) {\n path += `L${currPoint.x},${currPoint.y}`;\n continue;\n }\n\n // Normalize the vectors\n const nx1 = dx1 / len1;\n const ny1 = dy1 / len1;\n const nx2 = dx2 / len2;\n const ny2 = dy2 / len2;\n\n // Calculate the angle between the vectors\n const dot = nx1 * nx2 + ny1 * ny2;\n // Clamp the dot product to avoid numerical issues with acos\n const clampedDot = Math.max(-1, Math.min(1, dot));\n const angle = Math.acos(clampedDot);\n\n // Skip rounding if the angle is too small or too close to 180 degrees\n if (angle < epsilon || Math.abs(Math.PI - angle) < epsilon) {\n path += `L${currPoint.x},${currPoint.y}`;\n continue;\n }\n\n // Calculate the distance to offset the control point\n const cutLen = Math.min(radius / Math.sin(angle / 2), len1 / 2, len2 / 2);\n\n // Calculate the start and end points of the curve\n const startX = currPoint.x - nx1 * cutLen;\n const startY = currPoint.y - ny1 * cutLen;\n const endX = currPoint.x + nx2 * cutLen;\n const endY = currPoint.y + ny2 * cutLen;\n\n // Draw the line to the start of the curve\n path += `L${startX},${startY}`;\n\n // Draw the quadratic Bezier curve\n path += `Q${currPoint.x},${currPoint.y} ${endX},${endY}`;\n }\n }\n\n return path;\n}\n// Helper function to calculate delta and angle between two points\nfunction calculateDeltaAndAngle(point1, point2) {\n if (!point1 || !point2) {\n return { angle: 0, deltaX: 0, deltaY: 0 };\n }\n const deltaX = point2.x - point1.x;\n const deltaY = point2.y - point1.y;\n const angle = Math.atan2(deltaY, deltaX);\n return { angle, deltaX, deltaY };\n}\n\n// Function to adjust the first and last points of the points array\nfunction applyMarkerOffsetsToPoints(points, edge) {\n // Copy the points array to avoid mutating the original data\n const newPoints = points.map((point) => ({ ...point }));\n\n // Handle the first point (start of the edge)\n if (points.length >= 2 && markerOffsets[edge.arrowTypeStart]) {\n const offsetValue = markerOffsets[edge.arrowTypeStart];\n\n const point1 = points[0];\n const point2 = points[1];\n\n const { angle } = calculateDeltaAndAngle(point1, point2);\n\n const offsetX = offsetValue * Math.cos(angle);\n const offsetY = offsetValue * Math.sin(angle);\n\n newPoints[0].x = point1.x + offsetX;\n newPoints[0].y = point1.y + offsetY;\n }\n\n // Handle the last point (end of the edge)\n const n = points.length;\n if (n >= 2 && markerOffsets[edge.arrowTypeEnd]) {\n const offsetValue = markerOffsets[edge.arrowTypeEnd];\n\n const point1 = points[n - 1];\n const point2 = points[n - 2];\n\n const { angle } = calculateDeltaAndAngle(point2, point1);\n\n const offsetX = offsetValue * Math.cos(angle);\n const offsetY = offsetValue * Math.sin(angle);\n\n newPoints[n - 1].x = point1.x - offsetX;\n newPoints[n - 1].y = point1.y - offsetY;\n }\n\n return newPoints;\n}\n", "/** Setup arrow head and define the marker. The result is appended to the svg. */\nimport { log } from '../../logger.js';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 6)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst lollipop = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopStart')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopEnd')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n};\nconst point = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 5)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 8)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 4.5)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 8)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n// erDiagram specific markers\nconst only_one = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-onlyOneStart')\n .attr('class', 'marker onlyOne ' + type)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M9,0 L9,18 M15,0 L15,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-onlyOneEnd')\n .attr('class', 'marker onlyOne ' + type)\n .attr('refX', 18)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M3,0 L3,18 M9,0 L9,18');\n};\n\nconst zero_or_one = (elem, type, id) => {\n const startMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrOneStart')\n .attr('class', 'marker zeroOrOne ' + type)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n startMarker\n .append('circle')\n .attr('fill', 'white') // Fill white for now?\n .attr('cx', 21)\n .attr('cy', 9)\n .attr('r', 6);\n startMarker.append('path').attr('d', 'M9,0 L9,18');\n\n const endMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrOneEnd')\n .attr('class', 'marker zeroOrOne ' + type)\n .attr('refX', 30)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n endMarker\n .append('circle')\n .attr('fill', 'white') // Fill white for now?\n .attr('cx', 9)\n .attr('cy', 9)\n .attr('r', 6);\n endMarker.append('path').attr('d', 'M21,0 L21,18');\n};\n\nconst one_or_more = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-oneOrMoreStart')\n .attr('class', 'marker oneOrMore ' + type)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-oneOrMoreEnd')\n .attr('class', 'marker oneOrMore ' + type)\n .attr('refX', 27)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');\n};\n\nconst zero_or_more = (elem, type, id) => {\n const startMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrMoreStart')\n .attr('class', 'marker zeroOrMore ' + type)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n startMarker.append('circle').attr('fill', 'white').attr('cx', 48).attr('cy', 18).attr('r', 6);\n startMarker.append('path').attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');\n\n const endMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrMoreEnd')\n .attr('class', 'marker zeroOrMore ' + type)\n .attr('refX', 39)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n endMarker.append('circle').attr('fill', 'white').attr('cx', 9).attr('cy', 18).attr('r', 6);\n endMarker.append('path').attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');\n};\n\nconst requirement_arrow = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-requirement_arrowEnd')\n .attr('refX', 20)\n .attr('refY', 10)\n .attr('markerWidth', 20)\n .attr('markerHeight', 20)\n .attr('orient', 'auto')\n .append('path')\n .attr(\n 'd',\n `M0,0\n L20,10\n M20,10\n L0,20`\n );\n};\nconst requirement_contains = (elem, type, id) => {\n const containsNode = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-requirement_containsStart')\n .attr('refX', 0)\n .attr('refY', 10)\n .attr('markerWidth', 20)\n .attr('markerHeight', 20)\n .attr('orient', 'auto')\n .append('g');\n\n containsNode.append('circle').attr('cx', 10).attr('cy', 10).attr('r', 9).attr('fill', 'none');\n\n containsNode.append('line').attr('x1', 1).attr('x2', 19).attr('y1', 10).attr('y2', 10);\n\n containsNode.append('line').attr('y1', 1).attr('y2', 19).attr('x1', 10).attr('x2', 10);\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semantic free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb,\n only_one,\n zero_or_one,\n one_or_more,\n zero_or_more,\n requirement_arrow,\n requirement_contains,\n};\nexport default insertMarkers;\n"], - "mappings": "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", - "names": ["addEdgeMarkers", "__name", "svgPath", "edge", "url", "id", "diagramType", "strokeColor", "addEdgeMarker", "arrowTypesMap", "position", "arrowType", "arrowTypeInfo", "log", "endMarkerType", "originalMarkerId", "colorId", "coloredMarkerId", "originalMarker", "coloredMarker", "path", "resolveEdgeCurveType", "__name", "edgeCurve", "getConfig", "edgeLabels", "terminalLabels", "clear", "getLabelStyles", "styleArray", "acc", "style", "insertEdgeLabel", "elem", "edge", "config", "useHtmlLabels", "getEffectiveHtmlLabels", "labelStyles", "styles2String", "edgeLabel", "label", "isMarkdown", "labelElement", "createText", "log", "bbox", "transformBbox", "div", "dv", "select_default", "textEl", "computeLabelTransform", "fo", "startEdgeLabelLeft", "inner", "startLabelElement", "createLabel_default", "slBox", "setTerminalWidth", "startEdgeLabelRight", "endEdgeLabelLeft", "endLabelElement", "endEdgeLabelRight", "value", "positionEdgeLabel", "paths", "path", "siteConfig", "subGraphTitleTotalMargin", "getSubGraphTitleMargins", "el", "x", "y", "pos", "utils_default", "outsideNode", "node", "point", "dx", "dy", "w", "h", "intersection", "outsidePoint", "insidePoint", "r", "Q", "R", "q", "res", "_x", "_y", "cutPathAtIntersect", "_points", "boundaryNode", "points", "lastPointOutside", "isInside", "inter", "pointPresent", "p", "e", "extractCornerPoints", "cornerPoints", "cornerPointPositions", "i", "prev", "curr", "next", "findAdjacentPoint", "pointA", "pointB", "distance", "xDiff", "yDiff", "length", "ratio", "fixCorners", "lineData", "newLineData", "prevPoint", "nextPoint", "cornerPoint", "newPrevPoint", "newNextPoint", "a", "newCornerPoint", "generateDashArray", "len", "oValueS", "oValueE", "middleLength", "dashLength", "gapLength", "dashGapPairLength", "numberOfPairs", "middlePattern", "insertEdge", "clusterDb", "diagramType", "startNode", "endNode", "id", "skipIntersect", "handDrawnSeed", "pointsHasChanged", "tail", "head", "edgeClassStyles", "key", "isLabelStyle", "pointsStr", "edgeCurveType", "curve", "linear_default", "basis_default", "cardinal_default", "bumpX", "bumpY", "catmullRom_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "getLineFunctionsWithOffset", "lineFunction", "line_default", "strokeClasses", "svgPath", "linePath", "generateRoundedPath", "applyMarkerOffsetsToPoints", "edgeStyles", "strokeColor", "animationClass", "animatedEdge", "rc", "at", "svgPathNode", "d", "stylesFromClasses", "styles", "pathStyle", "pathNode", "markerOffsets2", "mOffset", "url", "addEdgeMarkers", "midIndex", "radius", "size", "epsilon", "currPoint", "dx1", "dy1", "dx2", "dy2", "len1", "len2", "nx1", "ny1", "nx2", "ny2", "dot", "clampedDot", "angle", "cutLen", "startX", "startY", "endX", "endY", "calculateDeltaAndAngle", "point1", "point2", "deltaX", "deltaY", "newPoints", "markerOffsets", "offsetValue", "offsetX", "offsetY", "insertMarkers", "__name", "elem", "markerArray", "type", "id", "markerName", "markers", "extension", "log", "composition", "aggregation", "dependency", "lollipop", "point", "circle", "cross", "barb", "only_one", "zero_or_one", "startMarker", "endMarker", "one_or_more", "zero_or_more", "requirement_arrow", "requirement_contains", "containsNode", "markers_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-TBF5ZNIQ.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-6764PJDD.mjs similarity index 51% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-TBF5ZNIQ.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-6764PJDD.mjs index 5bd3de6..394a480 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-TBF5ZNIQ.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-6764PJDD.mjs @@ -1 +1 @@ -import{h as o}from"./chunk-MGPAVIPZ.mjs";import{a as s}from"./chunk-VELTKBKT.mjs";var m=s((t,n)=>{let e;return n==="sandbox"&&(e=o("#i"+t)),(n==="sandbox"?o(e.nodes()[0].contentDocument.body):o("body")).select(`[id="${t}"]`)},"getDiagramElement");export{m as a}; +import{h as o}from"./chunk-7W6UQGC5.mjs";import{a as s}from"./chunk-AQ6EADP3.mjs";var m=s((t,n)=>{let e;return n==="sandbox"&&(e=o("#i"+t)),(n==="sandbox"?o(e.nodes()[0].contentDocument.body):o("body")).select(`[id="${t}"]`)},"getDiagramElement");export{m as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-TBF5ZNIQ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-6764PJDD.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-TBF5ZNIQ.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-6764PJDD.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-67TQ5CYL.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-67TQ5CYL.mjs new file mode 100644 index 0000000..23990e6 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-67TQ5CYL.mjs @@ -0,0 +1,128 @@ +import{b,c as vr}from"./chunk-7W6UQGC5.mjs";import{a as s,c as Yo}from"./chunk-AQ6EADP3.mjs";var Mr=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,qr=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,wr=/\s*%%.*\n/gm;var Qt=class extends Error{static{s(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}};var ti={},ks=s(function(r,t){r=r.replace(Mr,"").replace(qr,"").replace(wr,` +`);for(let[i,{detector:e}]of Object.entries(ti))if(e(r,t))return i;throw new Qt(`No diagram type detected matching given configuration for text: ${r}`)},"detectType"),Ts=s((...r)=>{for(let{id:t,detector:i,loader:e}of r)_i(t,i,e)},"registerLazyLoadedDiagrams"),_i=s((r,t,i)=>{ti[r]&&b.warn(`Detector with key ${r} already exists. Overwriting.`),ti[r]={detector:t,loader:i},b.debug(`Detector with key ${r} added${i?" with loader":""}`)},"addDetector"),bs=s(r=>ti[r].loader,"getDiagramLoader");var Ai=s((r,t,{depth:i=2,clobber:e=!1}={})=>{let d={depth:i,clobber:e};return Array.isArray(t)&&!Array.isArray(r)?(t.forEach(h=>Ai(r,h,d)),r):Array.isArray(t)&&Array.isArray(r)?(t.forEach(h=>{r.includes(h)||r.push(h)}),r):r===void 0||i<=0?r!=null&&typeof r=="object"&&typeof t=="object"?Object.assign(r,t):t:(t!==void 0&&typeof r=="object"&&typeof t=="object"&&Object.keys(t).forEach(h=>{typeof t[h]=="object"&&t[h]!==null&&(r[h]===void 0||typeof r[h]=="object")?(r[h]===void 0&&(r[h]=Array.isArray(t[h])?[]:{}),r[h]=Ai(r[h],t[h],{depth:i-1,clobber:e})):(e||typeof r[h]!="object"&&typeof t[h]!="object")&&(r[h]=t[h])}),r)},"assignWithDepth"),D=Ai;var ii={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:s(r=>r>=255?255:r<0?0:r,"r"),g:s(r=>r>=255?255:r<0?0:r,"g"),b:s(r=>r>=255?255:r<0?0:r,"b"),h:s(r=>r%360,"h"),s:s(r=>r>=100?100:r<0?0:r,"s"),l:s(r=>r>=100?100:r<0?0:r,"l"),a:s(r=>r>=1?1:r<0?0:r,"a")},toLinear:s(r=>{let t=r/255;return r>.03928?Math.pow((t+.055)/1.055,2.4):t/12.92},"toLinear"),hue2rgb:s((r,t,i)=>(i<0&&(i+=1),i>1&&(i-=1),i<.16666666666666666?r+(t-r)*6*i:i<.5?t:i<.6666666666666666?r+(t-r)*(.6666666666666666-i)*6:r),"hue2rgb"),hsl2rgb:s(({h:r,s:t,l:i},e)=>{if(!t)return i*2.55;r/=360,t/=100,i/=100;let d=i<.5?i*(1+t):i+t-i*t,h=2*i-d;switch(e){case"r":return ii.hue2rgb(h,d,r+.3333333333333333)*255;case"g":return ii.hue2rgb(h,d,r)*255;case"b":return ii.hue2rgb(h,d,r-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:s(({r,g:t,b:i},e)=>{r/=255,t/=255,i/=255;let d=Math.max(r,t,i),h=Math.min(r,t,i),y=(d+h)/2;if(e==="l")return y*100;if(d===h)return 0;let f=d-h,M=y>.5?f/(2-d-h):f/(d+h);if(e==="s")return M*100;switch(d){case r:return((t-i)/f+(tt>i?Math.min(t,Math.max(i,r)):Math.min(i,Math.max(t,r)),"clamp"),round:s(r=>Math.round(r*1e10)/1e10,"round")},Ir=Xo;var Ko={dec2hex:s(r=>{let t=Math.round(r).toString(16);return t.length>1?t:`0${t}`},"dec2hex")},Dr=Ko;var Zo={channel:Or,lang:Ir,unit:Dr},u=Zo;var it={};for(let r=0;r<=255;r++)it[r]=u.unit.dec2hex(r);var _={ALL:0,RGB:1,HSL:2};var vi=class{static{s(this,"Type")}constructor(){this.type=_.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=_.ALL}is(t){return this.type===t}},zr=vi;var Mi=class{static{s(this,"Channels")}constructor(t,i){this.color=i,this.changed=!1,this.data=t,this.type=new zr}set(t,i){return this.color=i,this.changed=!1,this.data=t,this.type.type=_.ALL,this}_ensureHSL(){let t=this.data,{h:i,s:e,l:d}=t;i===void 0&&(t.h=u.channel.rgb2hsl(t,"h")),e===void 0&&(t.s=u.channel.rgb2hsl(t,"s")),d===void 0&&(t.l=u.channel.rgb2hsl(t,"l"))}_ensureRGB(){let t=this.data,{r:i,g:e,b:d}=t;i===void 0&&(t.r=u.channel.hsl2rgb(t,"r")),e===void 0&&(t.g=u.channel.hsl2rgb(t,"g")),d===void 0&&(t.b=u.channel.hsl2rgb(t,"b"))}get r(){let t=this.data,i=t.r;return!this.type.is(_.HSL)&&i!==void 0?i:(this._ensureHSL(),u.channel.hsl2rgb(t,"r"))}get g(){let t=this.data,i=t.g;return!this.type.is(_.HSL)&&i!==void 0?i:(this._ensureHSL(),u.channel.hsl2rgb(t,"g"))}get b(){let t=this.data,i=t.b;return!this.type.is(_.HSL)&&i!==void 0?i:(this._ensureHSL(),u.channel.hsl2rgb(t,"b"))}get h(){let t=this.data,i=t.h;return!this.type.is(_.RGB)&&i!==void 0?i:(this._ensureRGB(),u.channel.rgb2hsl(t,"h"))}get s(){let t=this.data,i=t.s;return!this.type.is(_.RGB)&&i!==void 0?i:(this._ensureRGB(),u.channel.rgb2hsl(t,"s"))}get l(){let t=this.data,i=t.l;return!this.type.is(_.RGB)&&i!==void 0?i:(this._ensureRGB(),u.channel.rgb2hsl(t,"l"))}get a(){return this.data.a}set r(t){this.type.set(_.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(_.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(_.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(_.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(_.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(_.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}},Rr=Mi;var Jo=new Rr({r:0,g:0,b:0,a:0},"transparent"),st=Jo;var Wr={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:s(r=>{if(r.charCodeAt(0)!==35)return;let t=r.match(Wr.re);if(!t)return;let i=t[1],e=parseInt(i,16),d=i.length,h=d%4===0,y=d>4,f=y?1:17,M=y?8:4,q=h?0:-1,Y=y?255:15;return st.set({r:(e>>M*(q+3)&Y)*f,g:(e>>M*(q+2)&Y)*f,b:(e>>M*(q+1)&Y)*f,a:h?(e&Y)*f/255:1},r)},"parse"),stringify:s(r=>{let{r:t,g:i,b:e,a:d}=r;return d<1?`#${it[Math.round(t)]}${it[Math.round(i)]}${it[Math.round(e)]}${it[Math.round(d*255)]}`:`#${it[Math.round(t)]}${it[Math.round(i)]}${it[Math.round(e)]}`},"stringify")},dt=Wr;var ri={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:s(r=>{let t=r.match(ri.hueRe);if(t){let[,i,e]=t;switch(e){case"grad":return u.channel.clamp.h(parseFloat(i)*.9);case"rad":return u.channel.clamp.h(parseFloat(i)*180/Math.PI);case"turn":return u.channel.clamp.h(parseFloat(i)*360)}}return u.channel.clamp.h(parseFloat(r))},"_hue2deg"),parse:s(r=>{let t=r.charCodeAt(0);if(t!==104&&t!==72)return;let i=r.match(ri.re);if(!i)return;let[,e,d,h,y,f]=i;return st.set({h:ri._hue2deg(e),s:u.channel.clamp.s(parseFloat(d)),l:u.channel.clamp.l(parseFloat(h)),a:y?u.channel.clamp.a(f?parseFloat(y)/100:parseFloat(y)):1},r)},"parse"),stringify:s(r=>{let{h:t,s:i,l:e,a:d}=r;return d<1?`hsla(${u.lang.round(t)}, ${u.lang.round(i)}%, ${u.lang.round(e)}%, ${d})`:`hsl(${u.lang.round(t)}, ${u.lang.round(i)}%, ${u.lang.round(e)}%)`},"stringify")},Mt=ri;var oi={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:s(r=>{r=r.toLowerCase();let t=oi.colors[r];if(t)return dt.parse(t)},"parse"),stringify:s(r=>{let t=dt.stringify(r);for(let i in oi.colors)if(oi.colors[i]===t)return i},"stringify")},qi=oi;var Pr={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:s(r=>{let t=r.charCodeAt(0);if(t!==114&&t!==82)return;let i=r.match(Pr.re);if(!i)return;let[,e,d,h,y,f,M,q,Y]=i;return st.set({r:u.channel.clamp.r(d?parseFloat(e)*2.55:parseFloat(e)),g:u.channel.clamp.g(y?parseFloat(h)*2.55:parseFloat(h)),b:u.channel.clamp.b(M?parseFloat(f)*2.55:parseFloat(f)),a:q?u.channel.clamp.a(Y?parseFloat(q)/100:parseFloat(q)):1},r)},"parse"),stringify:s(r=>{let{r:t,g:i,b:e,a:d}=r;return d<1?`rgba(${u.lang.round(t)}, ${u.lang.round(i)}, ${u.lang.round(e)}, ${u.lang.round(d)})`:`rgb(${u.lang.round(t)}, ${u.lang.round(i)}, ${u.lang.round(e)})`},"stringify")},qt=Pr;var Qo={format:{keyword:qi,hex:dt,rgb:qt,rgba:qt,hsl:Mt,hsla:Mt},parse:s(r=>{if(typeof r!="string")return r;let t=dt.parse(r)||qt.parse(r)||Mt.parse(r)||qi.parse(r);if(t)return t;throw new Error(`Unsupported color format: "${r}"`)},"parse"),stringify:s(r=>!r.changed&&r.color?r.color:r.type.is(_.HSL)||r.data.r===void 0?Mt.stringify(r):r.a<1||!Number.isInteger(r.r)||!Number.isInteger(r.g)||!Number.isInteger(r.b)?qt.stringify(r):dt.stringify(r),"stringify")},A=Qo;var te=s((r,t)=>{let i=A.parse(r);for(let e in t)i[e]=u.channel.clamp[e](t[e]);return A.stringify(i)},"change"),ei=te;var ie=s((r,t,i=0,e=1)=>{if(typeof r!="number")return ei(r,{a:t});let d=st.set({r:u.channel.clamp.r(r),g:u.channel.clamp.g(t),b:u.channel.clamp.b(i),a:u.channel.clamp.a(e)});return A.stringify(d)},"rgba"),P=ie;var re=s((r,t)=>u.lang.round(A.parse(r)[t]),"channel"),oe=re;var ee=s(r=>{let{r:t,g:i,b:e}=A.parse(r),d=.2126*u.channel.toLinear(t)+.7152*u.channel.toLinear(i)+.0722*u.channel.toLinear(e);return u.lang.round(d)},"luminance"),Nr=ee;var se=s(r=>Nr(r)>=.5,"isLight"),Hr=se;var le=s(r=>!Hr(r),"isDark"),T=le;var ae=s((r,t,i)=>{let e=A.parse(r),d=e[t],h=u.channel.clamp[t](d+i);return d!==h&&(e[t]=h),A.stringify(e)},"adjustChannel"),Tt=ae;var he=s((r,t)=>Tt(r,"l",t),"lighten"),n=he;var ne=s((r,t)=>Tt(r,"l",-t),"darken"),c=ne;var ce=s((r,t)=>Tt(r,"a",-t),"transparentize"),de=ce;var Ce=s((r,t)=>{let i=A.parse(r),e={};for(let d in t)t[d]&&(e[d]=i[d]+t[d]);return ei(r,e)},"adjust"),o=Ce;var ge=s((r,t,i=50)=>{let{r:e,g:d,b:h,a:y}=A.parse(r),{r:f,g:M,b:q,a:Y}=A.parse(t),St=i/100,gt=St*2-1,rt=y-Y,ut=((gt*rt===-1?gt:(gt+rt)/(1+gt*rt))+1)/2,Ft=1-ut,gi=e*ut+f*Ft,pi=d*ut+M*Ft,mt=h*ut+q*Ft,w=y*St+Y*(1-St);return P(gi,pi,mt,w)},"mix"),Ur=ge;var pe=s((r,t=100)=>{let i=A.parse(r);return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,Ur(i,r,t)},"invert"),a=pe;var F="#ffffff",L="#f2f2f2";var p=s((r,t)=>t?o(r,{s:-40,l:10}):o(r,{s:-40,l:-10}),"mkBorder");var wi=class{static{s(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.useGradient=!0,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||p(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||p(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||p(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||a(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||a(this.tertiaryColor),this.lineColor=this.lineColor||a(this.background),this.arrowheadColor=this.arrowheadColor||a(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?c(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||c(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||a(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||n(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||c(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||c(this.mainBkg,10)):(this.rowOdd=this.rowOdd||n(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||n(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.darkMode)for(let i=0;i{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},Gr=s(r=>{let t=new wi;return t.calculate(r),t},"getThemeVariables");var Oi=class{static{s(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=n(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=a(this.background),this.secondaryBorderColor=p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=p(this.tertiaryColor,this.darkMode),this.primaryTextColor=a(this.primaryColor),this.secondaryTextColor=a(this.secondaryColor),this.tertiaryTextColor=a(this.tertiaryColor),this.lineColor=a(this.background),this.textColor=a(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=n(a("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=P(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.clusterBkg="#302F3D",this.sectionBkgColor=c("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=c(this.sectionBkgColor,10),this.taskBorderColor=P(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=P(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||n(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||c(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal"}updateColors(){this.secondBkg=n(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=n(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=n(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=a(this.doneTaskBkgColor),this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330});for(let t=0;t{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},$r=s(r=>{let t=new Oi;return t.calculate(r),t},"getThemeVariables");var Ii=class{static{s(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=o(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=p(this.primaryColor,this.darkMode),this.secondaryBorderColor=p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=p(this.tertiaryColor,this.darkMode),this.primaryTextColor=a(this.primaryColor),this.secondaryTextColor=a(this.secondaryColor),this.tertiaryTextColor=a(this.tertiaryColor),this.lineColor=a(this.background),this.textColor=a(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.primaryBorderColor=p(this.primaryColor,this.darkMode),this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.clusterBkg="#FBFBFF",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=P(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!1,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow(1px 2px 2px rgba(185, 185, 185, 1))",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||c(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||c(this.tertiaryColor,40);for(let t=0;t{this[e]==="calculated"&&(this[e]=void 0)}),typeof t!="object"){this.updateColors();return}let i=Object.keys(t);i.forEach(e=>{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},jr=s(r=>{let t=new Ii;return t.calculate(r),t},"getThemeVariables");var Di=class{static{s(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=n("#cde498",10),this.primaryBorderColor=p(this.primaryColor,this.darkMode),this.secondaryBorderColor=p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=p(this.tertiaryColor,this.darkMode),this.primaryTextColor=a(this.primaryColor),this.secondaryTextColor=a(this.secondaryColor),this.tertiaryTextColor=a(this.primaryColor),this.lineColor=a(this.background),this.textColor=a(this.background),this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.5))"}updateColors(){this.actorBorder=c(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||c(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||c(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},Vr=s(r=>{let t=new Di;return t.calculate(r),t},"getThemeVariables");var zi=class{static{s(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=n(this.contrast,55),this.background="#ffffff",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=p(this.primaryColor,this.darkMode),this.secondaryBorderColor=p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=p(this.tertiaryColor,this.darkMode),this.primaryTextColor=a(this.primaryColor),this.secondaryTextColor=a(this.secondaryColor),this.tertiaryTextColor=a(this.tertiaryColor),this.lineColor=a(this.background),this.textColor=a(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.rowOdd=this.rowOdd||n(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){this.secondBkg=n(this.contrast,55),this.border2=this.contrast,this.actorBorder=n(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},Yr=s(r=>{let t=new zi;return t.calculate(r),t},"getThemeVariables");var Ri=class{static{s(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=2,this.primaryBorderColor=p(this.primaryColor,this.darkMode),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.nodeBorder="#000000",this.stateBorder="#000000",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 0px 1px 2px rgba(0, 0, 0, 0.25));",this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||p(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||p(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||p(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||a(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||a(this.tertiaryColor),this.lineColor=this.lineColor||a(this.background),this.arrowheadColor=this.arrowheadColor||a(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?c(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||c(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||a(this.lineColor);let t="#ECECFE",i="#E9E9F1",e=o(t,{h:180,l:5});if(this.sectionBkgColor=this.sectionBkgColor||e,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||i,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||n(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||t,this.cScale1=this.cScale1||i,this.cScale2=this.cScale2||e,this.cScale3=this.cScale3||o(t,{h:30}),this.cScale4=this.cScale4||o(t,{h:60}),this.cScale5=this.cScale5||o(t,{h:90}),this.cScale6=this.cScale6||o(t,{h:120}),this.cScale7=this.cScale7||o(t,{h:150}),this.cScale8=this.cScale8||o(t,{h:210,l:150}),this.cScale9=this.cScale9||o(t,{h:270}),this.cScale10=this.cScale10||o(t,{h:300}),this.cScale11=this.cScale11||o(t,{h:330}),this.darkMode)for(let h=0;h{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},Xr=s(r=>{let t=new Ri;return t.calculate(r),t},"getThemeVariables");var Wi=class{static{s(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=n(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=a(this.background),this.secondaryBorderColor=p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=p(this.tertiaryColor,this.darkMode),this.primaryTextColor=a(this.primaryColor),this.secondaryTextColor=a(this.secondaryColor),this.tertiaryTextColor=a(this.tertiaryColor),this.mainBkg="#2a2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=n(a("#323D47"),10),this.border1="#ccc",this.border2=P(255,255,255,.25),this.arrowheadColor=a(this.background),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=1,this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily="arial, sans-serif",this.fontSize="14px",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.2))",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||p(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||p(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||p(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||a(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||a(this.tertiaryColor),this.lineColor=this.lineColor||a(this.background),this.arrowheadColor=this.arrowheadColor||a(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?c(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||c(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||a(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||n(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.darkMode)for(let i=0;i{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},Kr=s(r=>{let t=new Wi;return t.calculate(r),t},"getThemeVariables");var Pi=class{static{s(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=p("#28253D",this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.clusterBkg="#F9F9FB",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||p(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||p(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||p(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#FEF9C3",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||a(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||a(this.tertiaryColor),this.lineColor=this.lineColor||a(this.background),this.arrowheadColor=this.arrowheadColor||a(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?c(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.noteFontWeight=600,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||c(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||a(this.lineColor);let t="#ECECFE",i="#E9E9F1",e=o(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||e,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||i,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||n(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.compositeTitleBackground="#F9F9FB",this.altBackground="#F9F9FB",this.stateEdgeLabelBackground="#FFFFFF",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor;for(let h=0;h{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},Zr=s(r=>{let t=new Pi;return t.calculate(r),t},"getThemeVariables");var Ni=class{static{s(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=n(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=a(this.background),this.secondaryBorderColor=p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=p(this.tertiaryColor,this.darkMode),this.primaryTextColor=a(this.primaryColor),this.secondaryTextColor=a(this.secondaryColor),this.tertiaryTextColor=a(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=n(a("#323D47"),10),this.border1="#ccc",this.border2=P(255,255,255,.25),this.arrowheadColor=a(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.filterColor="#FFFFFF"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||p(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||p(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||p(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||a(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||a(this.tertiaryColor),this.lineColor=this.lineColor||a(this.background),this.arrowheadColor=this.arrowheadColor||a(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?c(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||c(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||a(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||n(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.compositeBackground="#16141F",this.altBackground="#16141F",this.compositeTitleBackground="#16141F",this.stateEdgeLabelBackground="#16141F",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.darkMode)for(let i=0;i{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},Jr=s(r=>{let t=new Ni;return t.calculate(r),t},"getThemeVariables");var Hi=class{static{s(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=p(this.primaryColor,this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=["#FDF4FF","#F0FDFA","#FFF7ED","#ECFEFF","#F0FDF4","#F5F3FF","#FEF2F2","#FEFCE8","#EEF2FF","#F7FEE7","#F0F9FF","#FFF1F2"],this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||p(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||p(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||p(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||a(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||a(this.tertiaryColor),this.lineColor=this.lineColor||a(this.background),this.arrowheadColor=this.arrowheadColor||a(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?c(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||c(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||a(this.lineColor);let t="#ECECFE",i="#E9E9F1",e=o(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||e,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||i,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||n(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let h=0;h{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},Qr=s(r=>{let t=new Hi;return t.calculate(r),t},"getThemeVariables");var Ui=class{static{s(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=n(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=a(this.background),this.secondaryBorderColor=p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=p(this.tertiaryColor,this.darkMode),this.primaryTextColor=a(this.primaryColor),this.secondaryTextColor=a(this.secondaryColor),this.tertiaryTextColor=a(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=n(a("#323D47"),10),this.border1="#ccc",this.border2=P(255,255,255,.25),this.arrowheadColor=a(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=[],this.filterColor="#FFFFFF"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||p(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||p(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||p(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||p(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||a(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||a(this.tertiaryColor),this.lineColor=this.lineColor||a(this.background),this.arrowheadColor=this.arrowheadColor||a(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?c(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||c(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||a(this.lineColor),this.rootLabelColor="#FFFFFF",this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||n(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let i=0;i{this[e]=t[e]}),this.updateColors(),i.forEach(e=>{this[e]=t[e]})}},to=s(r=>{let t=new Ui;return t.calculate(r),t},"getThemeVariables");var lt={base:{getThemeVariables:Gr},dark:{getThemeVariables:$r},default:{getThemeVariables:jr},forest:{getThemeVariables:Vr},neutral:{getThemeVariables:Yr},neo:{getThemeVariables:Xr},"neo-dark":{getThemeVariables:Kr},redux:{getThemeVariables:Zr},"redux-dark":{getThemeVariables:Jr},"redux-color":{getThemeVariables:Qr},"redux-dark-color":{getThemeVariables:to}};var R={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:null,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showDataLabelOutsideBar:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},ishikawa:{useMaxWidth:!0,diagramPadding:20},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:"",nodeWidth:10,nodePadding:12,labelStyle:"legacy"},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},treeView:{useMaxWidth:!0,rowIndent:10,paddingX:5,paddingY:5,lineThickness:1},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16,randomize:!1,nodeSeparation:75,idealEdgeLengthMultiplier:1.5,edgeElasticity:.45,numIter:2500},eventmodeling:{useMaxWidth:!0,padding:30,rowHeight:32},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},venn:{useMaxWidth:!0,width:800,height:450,padding:8,useDebugLayout:!1},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1};var io={...R,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:lt.default.getThemeVariables(),sequence:{...R.sequence,messageFont:s(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:s(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:s(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},gantt:{...R.gantt,tickInterval:void 0,useWidth:void 0},c4:{...R.c4,useWidth:void 0,personFont:s(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...R.flowchart,inheritDir:!1},external_personFont:s(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:s(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:s(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:s(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:s(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:s(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:s(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:s(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:s(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:s(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:s(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:s(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:s(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:s(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:s(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:s(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:s(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:s(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:s(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:s(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:s(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...R.pie,useWidth:984},xyChart:{...R.xyChart,useWidth:void 0},requirement:{...R.requirement,useWidth:void 0},packet:{...R.packet},eventmodeling:{...R.eventmodeling},treeView:{...R.treeView,useWidth:void 0},radar:{...R.radar},ishikawa:{...R.ishikawa},sankey:{...R.sankey,nodeColors:void 0},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","},venn:{...R.venn}},ro=s((r,t="")=>Object.keys(r).reduce((i,e)=>Array.isArray(r[e])?i:typeof r[e]=="object"&&r[e]!==null?[...i,t+e,...ro(r[e],"")]:[...i,t+e],[]),"keyify"),oo=new Set(ro(io,"")),eo=io;var si=s(r=>{if(b.debug("sanitizeDirective called with",r),!(typeof r!="object"||r==null)){if(Array.isArray(r)){r.forEach(t=>si(t));return}for(let t of Object.keys(r)){if(b.debug("Checking key",t),t.startsWith("__")||t.includes("proto")||t.includes("constr")||!oo.has(t)||r[t]==null){b.debug("sanitize deleting key: ",t),delete r[t];continue}if(typeof r[t]=="object"){if(t==="nodeColors"){let e=/^#[\da-f]{3,8}$|^rgb\([\d\s%,.]+\)$|^hsl\([\d\s%,.]+\)$|^[a-z]+$/i;for(let d of Object.keys(r[t]))(typeof r[t][d]!="string"||!e.test(r[t][d]))&&(b.debug("sanitize deleting invalid color:",d,r[t][d]),delete r[t][d])}else b.debug("sanitizing object",t),si(r[t]);continue}let i=["themeCSS","fontFamily","altFontFamily"];for(let e of i)t.includes(e)&&(b.debug("sanitizing css option",t),r[t]=ue(r[t]))}if(r.themeVariables)for(let t of Object.keys(r.themeVariables)){let i=r.themeVariables[t];i?.match&&!i.match(/^[\d "#%(),.;A-Za-z]+$/)&&(r.themeVariables[t]="")}b.debug("After sanitization",r)}},"sanitizeDirective"),ue=s(r=>{let t=0,i=0;for(let e of r){if(t!(r===!1||["false","null","0"].includes(String(r).trim().toLowerCase())),"evaluate"),$=D({},Ot),li,Ct=[],wt=D({},Ot),ai=s((r,t)=>{let i=D({},r),e={};for(let d of t)ao(d),e=D(e,d);if(i=D(i,e),e.theme&&e.theme in lt){let d=D({},li),h=D(d.themeVariables||{},e.themeVariables);i.theme&&i.theme in lt&&(i.themeVariables=lt[i.theme].getThemeVariables(h))}return wt=i,no(wt),wt},"updateCurrentConfig"),me=s(r=>($=D({},Ot),$=D($,r),r.theme&<[r.theme]&&($.themeVariables=lt[r.theme].getThemeVariables(r.themeVariables)),ai($,Ct),$),"setSiteConfig"),Zh=s(r=>{li=D({},r)},"saveConfigFromInitialize"),Jh=s(r=>($=D($,r),ai($,Ct),$),"updateSiteConfig"),Qh=s(()=>D({},$),"getSiteConfig"),lo=s(r=>(no(r),D(wt,r),It()),"setConfig"),It=s(()=>D({},wt),"getConfig"),ao=s(r=>{r&&(["secure",...$.secure??[]].forEach(t=>{Object.hasOwn(r,t)&&(b.debug(`Denied attempt to modify a secure key ${t}`,r[t]),delete r[t])}),Object.keys(r).forEach(t=>{t.startsWith("__")&&delete r[t]}),Object.keys(r).forEach(t=>{typeof r[t]=="string"&&(r[t].includes("<")||r[t].includes(">")||r[t].includes("url(data:"))&&delete r[t],typeof r[t]=="object"&&ao(r[t])}))},"sanitize"),tn=s(r=>{si(r),r.fontFamily&&!r.themeVariables?.fontFamily&&(r.themeVariables={...r.themeVariables,fontFamily:r.fontFamily}),Ct.push(r),ai($,Ct)},"addDirective"),rn=s((r=$)=>{Ct=[],ai(r,Ct)},"reset"),xe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",FLOWCHART_HTML_LABELS_DEPRECATED:"flowchart.htmlLabels is deprecated. Please use global htmlLabels instead."},so={},ho=s(r=>{so[r]||(b.warn(xe[r]),so[r]=!0)},"issueWarning"),no=s(r=>{r&&(r.lazyLoadedDiagrams||r.loadExternalDiagramsAtStartup)&&ho("LAZY_LOAD_DEPRECATED")},"checkConfig"),on=s(()=>{let r={};li&&(r=D(r,li));for(let t of Ct)r=D(r,t);return r},"getUserDefinedConfig"),co=s(r=>(r.flowchart?.htmlLabels!=null&&ho("FLOWCHART_HTML_LABELS_DEPRECATED"),Gi(r.htmlLabels??r.flowchart?.htmlLabels??!0)),"getEffectiveHtmlLabels");var{entries:ko,setPrototypeOf:Co,isFrozen:ye,getPrototypeOf:fe,getOwnPropertyDescriptor:ke}=Object,{freeze:H,seal:V,create:Nt}=Object,{apply:Zi,construct:Ji}=typeof Reflect<"u"&&Reflect;H||(H=s(function(t){return t},"freeze"));V||(V=s(function(t){return t},"seal"));Zi||(Zi=s(function(t,i){for(var e=arguments.length,d=new Array(e>2?e-2:0),h=2;h1?i-1:0),d=1;d1?i-1:0),d=1;d2&&arguments[2]!==void 0?arguments[2]:ni;Co&&Co(r,null);let e=t.length;for(;e--;){let d=t[e];if(typeof d=="string"){let h=i(d);h!==d&&(ye(t)||(t[e]=h),d=h)}r[d]=!0}return r}s(x,"addToSet");function Le(r){for(let t=0;t/gm),Me=V(/\$\{[\w\W]*/gm),qe=V(/^data-[\-\w.\u00B7-\uFFFF]+$/),we=V(/^aria-[\-\w]+$/),To=V(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Oe=V(/^(?:\w+script|data):/i),Ie=V(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),bo=V(/^html$/i),De=V(/^[a-z][.\w]*(-[.\w]+)+$/i),yo=Object.freeze({__proto__:null,ARIA_ATTR:we,ATTR_WHITESPACE:Ie,CUSTOM_ELEMENT:De,DATA_ATTR:qe,DOCTYPE_NAME:bo,ERB_EXPR:ve,IS_ALLOWED_URI:To,IS_SCRIPT_OR_DATA:Oe,MUSTACHE_EXPR:Ae,TMPLIT_EXPR:Me}),Pt={element:1,text:3,progressingInstruction:7,comment:8,document:9},ze=s(function(){return typeof window>"u"?null:window},"getGlobal"),Re=s(function(t,i){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let e=null,d="data-tt-policy-suffix";i&&i.hasAttribute(d)&&(e=i.getAttribute(d));let h="dompurify"+(e?"#"+e:"");try{return t.createPolicy(h,{createHTML(y){return y},createScriptURL(y){return y}})}catch{return console.warn("TrustedTypes policy "+h+" could not be created."),null}},"_createTrustedTypesPolicy"),fo=s(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");function Bo(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ze(),t=s(m=>Bo(m),"DOMPurify");if(t.version="3.4.0",t.removed=[],!r||!r.document||r.document.nodeType!==Pt.document||!r.Element)return t.isSupported=!1,t;let{document:i}=r,e=i,d=e.currentScript,{DocumentFragment:h,HTMLTemplateElement:y,Node:f,Element:M,NodeFilter:q,NamedNodeMap:Y=r.NamedNodeMap||r.MozNamedAttrMap,HTMLFormElement:St,DOMParser:gt,trustedTypes:rt}=r,pt=M.prototype,ut=Wt(pt,"cloneNode"),Ft=Wt(pt,"remove"),gi=Wt(pt,"nextSibling"),pi=Wt(pt,"childNodes"),mt=Wt(pt,"parentNode");if(typeof y=="function"){let m=i.createElement("template");m.content&&m.content.ownerDocument&&(i=m.content.ownerDocument)}let w,Lt="",{implementation:ui,createNodeIterator:wo,createDocumentFragment:Oo,getElementsByTagName:Io}=i,{importNode:Do}=e,W=fo();t.isSupported=typeof ko=="function"&&typeof mt=="function"&&ui&&ui.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:Ut,ERB_EXPR:Gt,TMPLIT_EXPR:$t,DATA_ATTR:zo,ARIA_ATTR:Ro,IS_SCRIPT_OR_DATA:Wo,ATTR_WHITESPACE:lr,CUSTOM_ELEMENT:Po}=yo,{IS_ALLOWED_URI:ar}=yo,v=null,hr=x({},[...po,...Vi,...Yi,...Xi,...uo]),O=null,nr=x({},[...mo,...Ki,...xo,...hi]),B=Object.seal(Nt(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Et=null,jt=null,ot=Object.seal(Nt(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),cr=!0,mi=!0,dr=!1,Cr=!0,ht=!1,_t=!0,nt=!1,xi=!1,yi=!1,xt=!1,Vt=!1,Yt=!1,gr=!0,pr=!1,No="user-content-",fi=!0,At=!1,yt={},Z=null,ki=x({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ur=null,mr=x({},["audio","video","img","source","image","track"]),Ti=null,xr=x({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Xt="http://www.w3.org/1998/Math/MathML",Kt="http://www.w3.org/2000/svg",J="http://www.w3.org/1999/xhtml",ft=J,bi=!1,Bi=null,Ho=x({},[Xt,Kt,J],$i),Zt=x({},["mi","mo","mn","ms","mtext"]),Jt=x({},["annotation-xml"]),Uo=x({},["title","style","font","a","script"]),vt=null,Go=["application/xhtml+xml","text/html"],$o="text/html",E=null,kt=null,jo=i.createElement("form"),yr=s(function(l){return l instanceof RegExp||l instanceof Function},"isRegexOrFunction"),Si=s(function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(kt&&kt===l)){if((!l||typeof l!="object")&&(l={}),l=Q(l),vt=Go.indexOf(l.PARSER_MEDIA_TYPE)===-1?$o:l.PARSER_MEDIA_TYPE,E=vt==="application/xhtml+xml"?$i:ni,v=K(l,"ALLOWED_TAGS")?x({},l.ALLOWED_TAGS,E):hr,O=K(l,"ALLOWED_ATTR")?x({},l.ALLOWED_ATTR,E):nr,Bi=K(l,"ALLOWED_NAMESPACES")?x({},l.ALLOWED_NAMESPACES,$i):Ho,Ti=K(l,"ADD_URI_SAFE_ATTR")?x(Q(xr),l.ADD_URI_SAFE_ATTR,E):xr,ur=K(l,"ADD_DATA_URI_TAGS")?x(Q(mr),l.ADD_DATA_URI_TAGS,E):mr,Z=K(l,"FORBID_CONTENTS")?x({},l.FORBID_CONTENTS,E):ki,Et=K(l,"FORBID_TAGS")?x({},l.FORBID_TAGS,E):Q({}),jt=K(l,"FORBID_ATTR")?x({},l.FORBID_ATTR,E):Q({}),yt=K(l,"USE_PROFILES")?l.USE_PROFILES:!1,cr=l.ALLOW_ARIA_ATTR!==!1,mi=l.ALLOW_DATA_ATTR!==!1,dr=l.ALLOW_UNKNOWN_PROTOCOLS||!1,Cr=l.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ht=l.SAFE_FOR_TEMPLATES||!1,_t=l.SAFE_FOR_XML!==!1,nt=l.WHOLE_DOCUMENT||!1,xt=l.RETURN_DOM||!1,Vt=l.RETURN_DOM_FRAGMENT||!1,Yt=l.RETURN_TRUSTED_TYPE||!1,yi=l.FORCE_BODY||!1,gr=l.SANITIZE_DOM!==!1,pr=l.SANITIZE_NAMED_PROPS||!1,fi=l.KEEP_CONTENT!==!1,At=l.IN_PLACE||!1,ar=l.ALLOWED_URI_REGEXP||To,ft=l.NAMESPACE||J,Zt=l.MATHML_TEXT_INTEGRATION_POINTS||Zt,Jt=l.HTML_INTEGRATION_POINTS||Jt,B=l.CUSTOM_ELEMENT_HANDLING||Nt(null),l.CUSTOM_ELEMENT_HANDLING&&yr(l.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(B.tagNameCheck=l.CUSTOM_ELEMENT_HANDLING.tagNameCheck),l.CUSTOM_ELEMENT_HANDLING&&yr(l.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(B.attributeNameCheck=l.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),l.CUSTOM_ELEMENT_HANDLING&&typeof l.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(B.allowCustomizedBuiltInElements=l.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ht&&(mi=!1),Vt&&(xt=!0),yt&&(v=x({},uo),O=Nt(null),yt.html===!0&&(x(v,po),x(O,mo)),yt.svg===!0&&(x(v,Vi),x(O,Ki),x(O,hi)),yt.svgFilters===!0&&(x(v,Yi),x(O,Ki),x(O,hi)),yt.mathMl===!0&&(x(v,Xi),x(O,xo),x(O,hi))),ot.tagCheck=null,ot.attributeCheck=null,l.ADD_TAGS&&(typeof l.ADD_TAGS=="function"?ot.tagCheck=l.ADD_TAGS:(v===hr&&(v=Q(v)),x(v,l.ADD_TAGS,E))),l.ADD_ATTR&&(typeof l.ADD_ATTR=="function"?ot.attributeCheck=l.ADD_ATTR:(O===nr&&(O=Q(O)),x(O,l.ADD_ATTR,E))),l.ADD_URI_SAFE_ATTR&&x(Ti,l.ADD_URI_SAFE_ATTR,E),l.FORBID_CONTENTS&&(Z===ki&&(Z=Q(Z)),x(Z,l.FORBID_CONTENTS,E)),l.ADD_FORBID_CONTENTS&&(Z===ki&&(Z=Q(Z)),x(Z,l.ADD_FORBID_CONTENTS,E)),fi&&(v["#text"]=!0),nt&&x(v,["html","head","body"]),v.table&&(x(v,["tbody"]),delete Et.tbody),l.TRUSTED_TYPES_POLICY){if(typeof l.TRUSTED_TYPES_POLICY.createHTML!="function")throw Rt('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof l.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Rt('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');w=l.TRUSTED_TYPES_POLICY,Lt=w.createHTML("")}else w===void 0&&(w=Re(rt,d)),w!==null&&typeof Lt=="string"&&(Lt=w.createHTML(""));H&&H(l),kt=l}},"_parseConfig"),fr=x({},[...Vi,...Yi,...Ee]),kr=x({},[...Xi,..._e]),Vo=s(function(l){let C=mt(l);(!C||!C.tagName)&&(C={namespaceURI:ft,tagName:"template"});let g=ni(l.tagName),k=ni(C.tagName);return Bi[l.namespaceURI]?l.namespaceURI===Kt?C.namespaceURI===J?g==="svg":C.namespaceURI===Xt?g==="svg"&&(k==="annotation-xml"||Zt[k]):!!fr[g]:l.namespaceURI===Xt?C.namespaceURI===J?g==="math":C.namespaceURI===Kt?g==="math"&&Jt[k]:!!kr[g]:l.namespaceURI===J?C.namespaceURI===Kt&&!Jt[k]||C.namespaceURI===Xt&&!Zt[k]?!1:!kr[g]&&(Uo[g]||!fr[g]):!!(vt==="application/xhtml+xml"&&Bi[l.namespaceURI]):!1},"_checkValidNamespace"),X=s(function(l){zt(t.removed,{element:l});try{mt(l).removeChild(l)}catch{Ft(l)}},"_forceRemove"),ct=s(function(l,C){try{zt(t.removed,{attribute:C.getAttributeNode(l),from:C})}catch{zt(t.removed,{attribute:null,from:C})}if(C.removeAttribute(l),l==="is")if(xt||Vt)try{X(C)}catch{}else try{C.setAttribute(l,"")}catch{}},"_removeAttribute"),Tr=s(function(l){let C=null,g=null;if(yi)l=""+l;else{let S=ji(l,/^[\r\n\t ]+/);g=S&&S[0]}vt==="application/xhtml+xml"&&ft===J&&(l=''+l+"");let k=w?w.createHTML(l):l;if(ft===J)try{C=new gt().parseFromString(k,vt)}catch{}if(!C||!C.documentElement){C=ui.createDocument(ft,"template",null);try{C.documentElement.innerHTML=bi?Lt:k}catch{}}let z=C.body||C.documentElement;return l&&g&&z.insertBefore(i.createTextNode(g),z.childNodes[0]||null),ft===J?Io.call(C,nt?"html":"body")[0]:nt?C.documentElement:z},"_initDocument"),br=s(function(l){return wo.call(l.ownerDocument||l,l,q.SHOW_ELEMENT|q.SHOW_COMMENT|q.SHOW_TEXT|q.SHOW_PROCESSING_INSTRUCTION|q.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),Fi=s(function(l){return l instanceof St&&(typeof l.nodeName!="string"||typeof l.textContent!="string"||typeof l.removeChild!="function"||!(l.attributes instanceof Y)||typeof l.removeAttribute!="function"||typeof l.setAttribute!="function"||typeof l.namespaceURI!="string"||typeof l.insertBefore!="function"||typeof l.hasChildNodes!="function")},"_isClobbered"),Li=s(function(l){return typeof f=="function"&&l instanceof f},"_isNode");function tt(m,l,C){Dt(m,g=>{g.call(t,l,C,kt)})}s(tt,"_executeHooks");let Br=s(function(l){let C=null;if(tt(W.beforeSanitizeElements,l,null),Fi(l))return X(l),!0;let g=E(l.nodeName);if(tt(W.uponSanitizeElement,l,{tagName:g,allowedTags:v}),_t&&l.hasChildNodes()&&!Li(l.firstElementChild)&&N(/<[/\w!]/g,l.innerHTML)&&N(/<[/\w!]/g,l.textContent)||_t&&l.namespaceURI===J&&g==="style"&&Li(l.firstElementChild)||l.nodeType===Pt.progressingInstruction||_t&&l.nodeType===Pt.comment&&N(/<[/\w]/g,l.data))return X(l),!0;if(Et[g]||!(ot.tagCheck instanceof Function&&ot.tagCheck(g))&&!v[g]){if(!Et[g]&&Fr(g)&&(B.tagNameCheck instanceof RegExp&&N(B.tagNameCheck,g)||B.tagNameCheck instanceof Function&&B.tagNameCheck(g)))return!1;if(fi&&!Z[g]){let k=mt(l)||l.parentNode,z=pi(l)||l.childNodes;if(z&&k){let S=z.length;for(let G=S-1;G>=0;--G){let j=ut(z[G],!0);j.__removalCount=(l.__removalCount||0)+1,k.insertBefore(j,gi(l))}}}return X(l),!0}return l instanceof M&&!Vo(l)||(g==="noscript"||g==="noembed"||g==="noframes")&&N(/<\/no(script|embed|frames)/i,l.innerHTML)?(X(l),!0):(ht&&l.nodeType===Pt.text&&(C=l.textContent,Dt([Ut,Gt,$t],k=>{C=bt(C,k," ")}),l.textContent!==C&&(zt(t.removed,{element:l.cloneNode()}),l.textContent=C)),tt(W.afterSanitizeElements,l,null),!1)},"_sanitizeElements"),Sr=s(function(l,C,g){if(jt[C]||gr&&(C==="id"||C==="name")&&(g in i||g in jo))return!1;if(!(mi&&!jt[C]&&N(zo,C))){if(!(cr&&N(Ro,C))){if(!(ot.attributeCheck instanceof Function&&ot.attributeCheck(C,l))){if(!O[C]||jt[C]){if(!(Fr(l)&&(B.tagNameCheck instanceof RegExp&&N(B.tagNameCheck,l)||B.tagNameCheck instanceof Function&&B.tagNameCheck(l))&&(B.attributeNameCheck instanceof RegExp&&N(B.attributeNameCheck,C)||B.attributeNameCheck instanceof Function&&B.attributeNameCheck(C,l))||C==="is"&&B.allowCustomizedBuiltInElements&&(B.tagNameCheck instanceof RegExp&&N(B.tagNameCheck,g)||B.tagNameCheck instanceof Function&&B.tagNameCheck(g))))return!1}else if(!Ti[C]){if(!N(ar,bt(g,lr,""))){if(!((C==="src"||C==="xlink:href"||C==="href")&&l!=="script"&&Be(g,"data:")===0&&ur[l])){if(!(dr&&!N(Wo,bt(g,lr,"")))){if(g)return!1}}}}}}}return!0},"_isValidAttribute"),Fr=s(function(l){return l!=="annotation-xml"&&ji(l,Po)},"_isBasicCustomElement"),Lr=s(function(l){tt(W.beforeSanitizeAttributes,l,null);let{attributes:C}=l;if(!C||Fi(l))return;let g={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:O,forceKeepAttr:void 0},k=C.length;for(;k--;){let z=C[k],{name:S,namespaceURI:G,value:j}=z,et=E(S),Ei=j,I=S==="value"?Ei:Se(Ei);if(g.attrName=et,g.attrValue=I,g.keepAttr=!0,g.forceKeepAttr=void 0,tt(W.uponSanitizeAttribute,l,g),I=g.attrValue,pr&&(et==="id"||et==="name")&&(ct(S,l),I=No+I),_t&&N(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,I)){ct(S,l);continue}if(et==="attributename"&&ji(I,"href")){ct(S,l);continue}if(g.forceKeepAttr)continue;if(!g.keepAttr){ct(S,l);continue}if(!Cr&&N(/\/>/i,I)){ct(S,l);continue}ht&&Dt([Ut,Gt,$t],Ar=>{I=bt(I,Ar," ")});let _r=E(l.nodeName);if(!Sr(_r,et,I)){ct(S,l);continue}if(w&&typeof rt=="object"&&typeof rt.getAttributeType=="function"&&!G)switch(rt.getAttributeType(_r,et)){case"TrustedHTML":{I=w.createHTML(I);break}case"TrustedScriptURL":{I=w.createScriptURL(I);break}}if(I!==Ei)try{G?l.setAttributeNS(G,S,I):l.setAttribute(S,I),Fi(l)?X(l):go(t.removed)}catch{ct(S,l)}}tt(W.afterSanitizeAttributes,l,null)},"_sanitizeAttributes"),Er=s(function(l){let C=null,g=br(l);for(tt(W.beforeSanitizeShadowDOM,l,null);C=g.nextNode();)tt(W.uponSanitizeShadowNode,C,null),Br(C),Lr(C),C.content instanceof h&&Er(C.content);tt(W.afterSanitizeShadowDOM,l,null)},"_sanitizeShadowDOM");return t.sanitize=function(m){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},C=null,g=null,k=null,z=null;if(bi=!m,bi&&(m=""),typeof m!="string"&&!Li(m))if(typeof m.toString=="function"){if(m=m.toString(),typeof m!="string")throw Rt("dirty is not a string, aborting")}else throw Rt("toString is not a function");if(!t.isSupported)return m;if(xi||Si(l),t.removed=[],typeof m=="string"&&(At=!1),At){if(m.nodeName){let j=E(m.nodeName);if(!v[j]||Et[j])throw Rt("root node is forbidden and cannot be sanitized in-place")}}else if(m instanceof f)C=Tr(""),g=C.ownerDocument.importNode(m,!0),g.nodeType===Pt.element&&g.nodeName==="BODY"||g.nodeName==="HTML"?C=g:C.appendChild(g);else{if(!xt&&!ht&&!nt&&m.indexOf("<")===-1)return w&&Yt?w.createHTML(m):m;if(C=Tr(m),!C)return xt?null:Yt?Lt:""}C&&yi&&X(C.firstChild);let S=br(At?m:C);for(;k=S.nextNode();)Br(k),Lr(k),k.content instanceof h&&Er(k.content);if(At)return m;if(xt){if(ht){C.normalize();let j=C.innerHTML;Dt([Ut,Gt,$t],et=>{j=bt(j,et," ")}),C.innerHTML=j}if(Vt)for(z=Oo.call(C.ownerDocument);C.firstChild;)z.appendChild(C.firstChild);else z=C;return(O.shadowroot||O.shadowrootmode)&&(z=Do.call(e,z,!0)),z}let G=nt?C.outerHTML:C.innerHTML;return nt&&v["!doctype"]&&C.ownerDocument&&C.ownerDocument.doctype&&C.ownerDocument.doctype.name&&N(bo,C.ownerDocument.doctype.name)&&(G=" +`+G),ht&&Dt([Ut,Gt,$t],j=>{G=bt(G,j," ")}),w&&Yt?w.createHTML(G):G},t.setConfig=function(){let m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Si(m),xi=!0},t.clearConfig=function(){kt=null,xi=!1},t.isValidAttribute=function(m,l,C){kt||Si({});let g=E(m),k=E(l);return Sr(g,k,C)},t.addHook=function(m,l){typeof l=="function"&&zt(W[m],l)},t.removeHook=function(m,l){if(l!==void 0){let C=Te(W[m],l);return C===-1?void 0:be(W[m],C,1)[0]}return go(W[m])},t.removeHooks=function(m){W[m]=[]},t.removeAllHooks=function(){W=fo()},t}s(Bo,"createDOMPurify");var Bt=Bo();var Ht=//gi,We=s(r=>r?_o(r).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),Pe=(()=>{let r=!1;return()=>{r||(Ne(),r=!0)}})();function Ne(){let r="data-temp-href-target";Bt.addHook("beforeSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute("target")&&t.setAttribute(r,t.getAttribute("target")??"")}),Bt.addHook("afterSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute(r)&&(t.setAttribute("target",t.getAttribute(r)??""),t.removeAttribute(r),t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener"))})}s(Ne,"setupDompurifyHooks");var Eo=s(r=>(Pe(),Bt.sanitize(r)),"removeScript"),So=s((r,t)=>{if(co(t)){let i=t.securityLevel;i==="antiscript"||i==="strict"||i==="sandbox"?r=Eo(r):i!=="loose"&&(r=_o(r),r=r.replace(//g,">"),r=r.replace(/=/g,"="),r=$e(r))}return r},"sanitizeMore"),at=s((r,t)=>r&&(t.dompurifyConfig?r=Bt.sanitize(So(r,t),t.dompurifyConfig).toString():r=Bt.sanitize(So(r,t),{FORBID_TAGS:["style"]}).toString(),r),"sanitizeText"),He=s((r,t)=>typeof r=="string"?at(r,t):r.flat().map(i=>at(i,t)),"sanitizeTextOrArray"),Ue=s(r=>Ht.test(r),"hasBreaks"),Ge=s(r=>r.split(Ht),"splitBreaks"),$e=s(r=>r.replace(/#br#/g,"
"),"placeholderToBreak"),_o=s(r=>r.replace(Ht,"#br#"),"breakToPlaceholder"),je=s(r=>{let t="";return r&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,t=CSS.escape(t)),t},"getUrl");var Ve=s(function(...r){let t=r.filter(i=>!isNaN(i));return Math.max(...t)},"getMax"),Ye=s(function(...r){let t=r.filter(i=>!isNaN(i));return Math.min(...t)},"getMin"),cn=s(function(r){let t=r.split(/(,)/),i=[];for(let e=0;e0&&e+1Math.max(0,r.split(t).length-1),"countOccurrence"),Xe=s((r,t)=>{let i=Qi(r,"~"),e=Qi(t,"~");return i===1&&e===1},"shouldCombineSets"),Ke=s(r=>{let t=Qi(r,"~"),i=!1;if(t<=1)return r;t%2!==0&&r.startsWith("~")&&(r=r.substring(1),i=!0);let e=[...r],d=e.indexOf("~"),h=e.lastIndexOf("~");for(;d!==-1&&h!==-1&&d!==h;)e[d]="<",e[h]=">",d=e.indexOf("~"),h=e.lastIndexOf("~");return i&&e.unshift("~"),e.join("")},"processSet"),Fo=s(()=>window.MathMLElement!==void 0,"isMathMLSupported"),ci=/\$\$(.*)\$\$/g,Lo=s(r=>(r.match(ci)?.length??0)>0,"hasKatex"),dn=s(async(r,t)=>{let i=document.createElement("div");i.innerHTML=await Je(r,t),i.id="katex-temp",i.style.visibility="hidden",i.style.position="absolute",i.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",i);let d={width:i.clientWidth,height:i.clientHeight};return i.remove(),d},"calculateMathMLDimensions"),Ze=s(async(r,t)=>{if(!Lo(r))return r;if(!(Fo()||t.legacyMathML||t.forceLegacyMathML))return r.replace(ci,"MathML is unsupported in this environment.");{let{default:i}=await import("./katex-K3KEBU37.mjs"),e=t.forceLegacyMathML||!Fo()&&t.legacyMathML?"htmlAndMathml":"mathml";return r.split(Ht).map(d=>Lo(d)?`
${d}
`:`
${d}
`).join("").replace(ci,(d,h)=>i.renderToString(h,{throwOnError:!0,displayMode:!0,output:e}).replace(/\n/g," ").replace(//g,""))}return r.replace(ci,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),Je=s(async(r,t)=>at(await Ze(r,t),t),"renderKatexSanitized"),Cn={getRows:We,sanitizeText:at,sanitizeTextOrArray:He,hasBreaks:Ue,splitBreaks:Ge,lineBreakRegex:Ht,removeScript:Eo,getUrl:je,evaluate:Gi,getMax:Ve,getMin:Ye};var Qe=s(function(r,t){for(let i of t)r.attr(i[0],i[1])},"d3Attrs"),ts=s(function(r,t,i){let e=new Map;return i?(e.set("width","100%"),e.set("style",`max-width: ${t}px;`)):(e.set("height",r),e.set("width",t)),e},"calculateSvgSizeAttrs"),is=s(function(r,t,i,e){let d=ts(t,i,e);Qe(r,d)},"configureSvgSize"),Ao=s(function(r,t,i,e){let d=t.node().getBBox(),h=d.width,y=d.height;b.info(`SVG bounds: ${h}x${y}`,d);let f=0,M=0;b.info(`Graph bounds: ${f}x${M}`,r),f=h+i*2,M=y+i*2,b.info(`Calculated bounds: ${f}x${M}`),is(t,M,f,e);let q=`${d.x-i} ${d.y-i} ${d.width+2*i} ${d.height+2*i}`;t.attr("viewBox",q)},"setupGraphViewbox");var di={};function fn(r){return[...r.cssRules].map(t=>t.cssText).join(` +`)}s(fn,"cssStyleSheetToString");var rs=s((r,t,i,e)=>{let d="";return r in di&&di[r]?d=di[r]({...i,svgId:e}):b.warn(`No theme found for ${r}`),` & { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + fill: ${i.textColor} + } + @keyframes edge-animation-frame { + from { + stroke-dashoffset: 0; + } + } + @keyframes dash { + to { + stroke-dashoffset: 0; + } + } + & .edge-animation-slow { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 50s linear infinite; + stroke-linecap: round; + } + & .edge-animation-fast { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 20s linear infinite; + stroke-linecap: round; + } + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${i.errorBkgColor}; + } + & .error-text { + fill: ${i.errorTextColor}; + stroke: ${i.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: ${i.strokeWidth??1}px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + & .edge-thickness-invisible { + stroke-width: 0; + fill: none; + } + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${i.lineColor}; + stroke: ${i.lineColor}; + } + & .marker.cross { + stroke: ${i.lineColor}; + } + + & svg { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + } + & p { + margin: 0 + } + + ${d} + .node .neo-node { + stroke: ${i.nodeBorder}; + } + + [data-look="neo"].node rect, [data-look="neo"].cluster rect, [data-look="neo"].node polygon { + stroke: ${i.useGradient?"url("+e+"-gradient)":i.nodeBorder}; + filter: ${i.dropShadow?i.dropShadow.replace("url(#drop-shadow)",`url(${e}-drop-shadow)`):"none"}; + } + + + [data-look="neo"].node path { + stroke: ${i.useGradient?"url("+e+"-gradient)":i.nodeBorder}; + stroke-width: ${i.strokeWidth??1}px; + } + + [data-look="neo"].node .outer-path { + filter: ${i.dropShadow?i.dropShadow.replace("url(#drop-shadow)",`url(${e}-drop-shadow)`):"none"}; + } + + [data-look="neo"].node .neo-line path { + stroke: ${i.nodeBorder}; + filter: none; + } + + [data-look="neo"].node circle{ + stroke: ${i.useGradient?"url("+e+"-gradient)":i.nodeBorder}; + filter: ${i.dropShadow?i.dropShadow.replace("url(#drop-shadow)",`url(${e}-drop-shadow)`):"none"}; + } + + [data-look="neo"].node circle .state-start{ + fill: #000000; + } + + [data-look="neo"].icon-shape .icon { + fill: ${i.useGradient?"url("+e+"-gradient)":i.nodeBorder}; + filter: ${i.dropShadow?i.dropShadow.replace("url(#drop-shadow)",`url(${e}-drop-shadow)`):"none"}; + } + + [data-look="neo"].icon-shape .icon-neo path { + stroke: ${i.useGradient?"url("+e+"-gradient)":i.nodeBorder}; + filter: ${i.dropShadow?i.dropShadow.replace("url(#drop-shadow)",`url(${e}-drop-shadow)`):"none"}; + } + + ${t} +`},"getStyles"),vo=s((r,t)=>{t!==void 0&&(di[r]=t)},"addStylesForDiagram"),kn=rs;var er={};Yo(er,{clear:()=>os,getAccDescription:()=>as,getAccTitle:()=>ss,getDiagramTitle:()=>ns,setAccDescription:()=>ls,setAccTitle:()=>es,setDiagramTitle:()=>hs});var tr="",ir="",rr="",or=s(r=>at(r,It()),"sanitizeText"),os=s(()=>{tr="",rr="",ir=""},"clear"),es=s(r=>{tr=or(r).replace(/^\s+/g,"")},"setAccTitle"),ss=s(()=>tr,"getAccTitle"),ls=s(r=>{rr=or(r).replace(/\n\s+/g,` +`)},"setAccDescription"),as=s(()=>rr,"getAccDescription"),hs=s(r=>{ir=or(r)},"setDiagramTitle"),ns=s(()=>ir,"getDiagramTitle");var Mo=b,cs=vr,qo=It,qn=lo,wn=Ot;var ds=s(r=>at(r,qo()),"sanitizeText"),Cs=Ao,gs=s(()=>er,"getCommonDb"),Ci={},On=s((r,t,i)=>{Ci[r]&&Mo.warn(`Diagram with id ${r} already registered. Overwriting.`),Ci[r]=t,i&&_i(r,i),vo(r,t.styles),t.injectUtils?.(Mo,cs,qo,ds,Cs,gs(),()=>{})},"registerDiagram"),In=s(r=>{if(r in Ci)return Ci[r];throw new sr(r)},"getDiagram"),sr=class extends Error{static{s(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}};export{D as a,P as b,oe as c,T as d,n as e,c as f,de as g,jr as h,lt as i,eo as j,si as k,ue as l,Ot as m,Gi as n,me as o,Zh as p,Jh as q,Qh as r,lo as s,It as t,tn as u,rn as v,on as w,co as x,Bt as y,Ht as z,at as A,je as B,cn as C,Lo as D,dn as E,Je as F,Cn as G,Mr as H,qr as I,Qt as J,ti as K,ks as L,Ts as M,bs as N,is as O,Ao as P,fn as Q,kn as R,os as S,es as T,ss as U,ls as V,as as W,hs as X,ns as Y,er as Z,qo as _,qn as $,wn as aa,ds as ba,Cs as ca,On as da,In as ea}; +/*! Bundled license information: + +dompurify/dist/purify.es.mjs: + (*! @license DOMPurify 3.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.0/LICENSE *) +*/ diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-67TQ5CYL.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-67TQ5CYL.mjs.map new file mode 100644 index 0000000..0471b17 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-67TQ5CYL.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagram-api/regexes.ts", "../../../src/errors.ts", "../../../src/diagram-api/detectType.ts", "../../../src/assignWithDepth.ts", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/channel.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/lang.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/unit.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/index.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/constants.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/type.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/index.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/reusable.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hex.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hsl.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/keyword.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/rgb.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/index.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/change.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/rgba.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/channel.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/luminance.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/is_light.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/is_dark.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/adjust_channel.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/lighten.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/darken.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/transparentize.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/adjust.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/mix.js", "../../../../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/invert.js", "../../../src/themes/erDiagram-oldHardcodedValues.ts", "../../../src/themes/theme-helpers.js", "../../../src/themes/theme-base.js", "../../../src/themes/theme-dark.js", "../../../src/themes/theme-default.js", "../../../src/themes/theme-forest.js", "../../../src/themes/theme-neutral.js", "../../../src/themes/theme-neo.js", "../../../src/themes/theme-neo-dark.js", "../../../src/themes/theme-redux.js", "../../../src/themes/theme-redux-dark.js", "../../../src/themes/theme-redux-color.js", "../../../src/themes/theme-redux-dark-color.js", "../../../src/themes/index.js", "../../../src/schemas/config.schema.yaml", "../../../src/defaultConfig.ts", "../../../src/utils/sanitizeDirective.ts", "../../../src/config.ts", "../../../../../node_modules/.pnpm/dompurify@3.4.0/node_modules/dompurify/src/utils.ts", "../../../../../node_modules/.pnpm/dompurify@3.4.0/node_modules/dompurify/src/tags.ts", "../../../../../node_modules/.pnpm/dompurify@3.4.0/node_modules/dompurify/src/attrs.ts", "../../../../../node_modules/.pnpm/dompurify@3.4.0/node_modules/dompurify/src/regexp.ts", "../../../../../node_modules/.pnpm/dompurify@3.4.0/node_modules/dompurify/src/purify.ts", "../../../src/diagrams/common/common.ts", "../../../src/setupGraphViewbox.js", "../../../src/styles.ts", "../../../src/diagrams/common/commonDb.ts", "../../../src/diagram-api/diagramAPI.ts"], + "sourcesContent": ["// Match Jekyll-style front matter blocks (https://jekyllrb.com/docs/front-matter/).\n// Based on regex used by Jekyll: https://github.com/jekyll/jekyll/blob/6dd3cc21c40b98054851846425af06c64f9fb466/lib/jekyll/document.rb#L10\n// Note that JS doesn't support the \"\\A\" anchor, which means we can't use\n// multiline mode.\n// Relevant YAML spec: https://yaml.org/spec/1.2.2/#914-explicit-documents\nexport const frontMatterRegex = /^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+/s;\n\nexport const directiveRegex =\n /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\n\nexport const anyCommentRegex = /\\s*%%.*\\n/gm;\n", "export class UnknownDiagramError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'UnknownDiagramError';\n }\n}\n", "import type { MermaidConfig } from '../config.type.js';\nimport { log } from '../logger.js';\nimport type {\n DetectorRecord,\n DiagramDetector,\n DiagramLoader,\n ExternalDiagramDefinition,\n} from './types.js';\nimport { anyCommentRegex, directiveRegex, frontMatterRegex } from './regexes.js';\nimport { UnknownDiagramError } from '../errors.js';\n\nexport const detectors: Record = {};\n\n/**\n * Detects the type of the graph text.\n *\n * Takes into consideration the possible existence of an `%%init` directive\n *\n * @param text - The text defining the graph. For example:\n *\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param config - The mermaid config.\n * @returns A graph definition key\n */\nexport const detectType = function (text: string, config?: MermaidConfig): string {\n text = text\n .replace(frontMatterRegex, '')\n .replace(directiveRegex, '')\n .replace(anyCommentRegex, '\\n');\n for (const [key, { detector }] of Object.entries(detectors)) {\n const diagram = detector(text, config);\n if (diagram) {\n return key;\n }\n }\n\n throw new UnknownDiagramError(\n `No diagram type detected matching given configuration for text: ${text}`\n );\n};\n\n/**\n * Registers lazy-loaded diagrams to Mermaid.\n *\n * The diagram function is loaded asynchronously, so that diagrams are only loaded\n * if the diagram is detected.\n *\n * @remarks\n * Please note that the order of diagram detectors is important.\n * The first detector to return `true` is the diagram that will be loaded\n * and used, so put more specific detectors at the beginning!\n *\n * @param diagrams - Diagrams to lazy load, and their detectors, in order of importance.\n */\nexport const registerLazyLoadedDiagrams = (...diagrams: ExternalDiagramDefinition[]) => {\n for (const { id, detector, loader } of diagrams) {\n addDetector(id, detector, loader);\n }\n};\n\nexport const addDetector = (key: string, detector: DiagramDetector, loader?: DiagramLoader) => {\n if (detectors[key]) {\n log.warn(`Detector with key ${key} already exists. Overwriting.`);\n }\n detectors[key] = { detector, loader };\n log.debug(`Detector with key ${key} added${loader ? ' with loader' : ''}`);\n};\n\nexport const getDiagramLoader = (key: string) => {\n return detectors[key].loader;\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * assignWithDepth Extends the functionality of {@link Object.assign} with the\n * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)\n * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of\n * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to `{}` and\n * effectively merged with src[`k`]

Additionally, dissimilar types will not clobber unless the\n * config.clobber parameter === true. Example:\n *\n * ```\n * const config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * const config_1 = { foo: 'foo', bar: 'bar' };\n * const result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a\n * destructured array of objects and dst is not an array, assignWithDepth will apply each element\n * of src to dst in order.\n * @param dst - The destination of the merge\n * @param src - The source object(s) to merge into destination\n * @param config -\n * * depth: depth to traverse within src and dst for merging\n * * clobber: should dissimilar types clobber\n */\nconst assignWithDepth = (\n dst: any,\n src: any,\n { depth = 2, clobber = false }: { depth?: number; clobber?: boolean } = {}\n): any => {\n const config: { depth: number; clobber: boolean } = { depth, clobber };\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === undefined || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== undefined && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach((key) => {\n if (\n typeof src[key] === 'object' &&\n src[key] !== null &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport default assignWithDepth;\n", "/* IMPORT */\n/* MAIN */\nconst Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n h: (h) => h % 360,\n s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: (c) => {\n const n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: (p, q, t) => {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: ({ h, s, l }, channel) => {\n if (!s)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n const p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: ({ r, g, b }, channel) => {\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n const d = max - min;\n const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\nexport default Channel;\n", "/* MAIN */\nconst Lang = {\n /* API */\n clamp: (number, lower, upper) => {\n if (lower > upper)\n return Math.min(lower, Math.max(upper, number));\n return Math.min(upper, Math.max(lower, number));\n },\n round: (number) => {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\nexport default Lang;\n", "/* MAIN */\nconst Unit = {\n /* API */\n dec2hex: (dec) => {\n const hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : `0${hex}`;\n }\n};\n/* EXPORT */\nexport default Unit;\n", "/* IMPORT */\nimport channel from './channel.js';\nimport lang from './lang.js';\nimport unit from './unit.js';\n/* MAIN */\nconst Utils = {\n channel,\n lang,\n unit\n};\n/* EXPORT */\nexport default Utils;\n", "/* IMPORT */\nimport _ from './utils/index.js';\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n DEC2HEX[i] = _.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n ALL: 0,\n RGB: 1,\n HSL: 2\n};\n/* EXPORT */\nexport { DEC2HEX, TYPE };\n", "/* IMPORT */\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Type {\n constructor() {\n /* VARIABLES */\n this.type = TYPE.ALL;\n }\n /* API */\n get() {\n return this.type;\n }\n set(type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n }\n reset() {\n this.type = TYPE.ALL;\n }\n is(type) {\n return this.type === type;\n }\n}\n/* EXPORT */\nexport default Type;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Type from './type.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Channels {\n /* CONSTRUCTOR */\n constructor(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new Type();\n }\n /* API */\n set(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = TYPE.ALL;\n return this;\n }\n /* HELPERS */\n _ensureHSL() {\n const data = this.data;\n const { h, s, l } = data;\n if (h === undefined)\n data.h = _.channel.rgb2hsl(data, 'h');\n if (s === undefined)\n data.s = _.channel.rgb2hsl(data, 's');\n if (l === undefined)\n data.l = _.channel.rgb2hsl(data, 'l');\n }\n _ensureRGB() {\n const data = this.data;\n const { r, g, b } = data;\n if (r === undefined)\n data.r = _.channel.hsl2rgb(data, 'r');\n if (g === undefined)\n data.g = _.channel.hsl2rgb(data, 'g');\n if (b === undefined)\n data.b = _.channel.hsl2rgb(data, 'b');\n }\n /* GETTERS */\n get r() {\n const data = this.data;\n const r = data.r;\n if (!this.type.is(TYPE.HSL) && r !== undefined)\n return r;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'r');\n }\n get g() {\n const data = this.data;\n const g = data.g;\n if (!this.type.is(TYPE.HSL) && g !== undefined)\n return g;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'g');\n }\n get b() {\n const data = this.data;\n const b = data.b;\n if (!this.type.is(TYPE.HSL) && b !== undefined)\n return b;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'b');\n }\n get h() {\n const data = this.data;\n const h = data.h;\n if (!this.type.is(TYPE.RGB) && h !== undefined)\n return h;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'h');\n }\n get s() {\n const data = this.data;\n const s = data.s;\n if (!this.type.is(TYPE.RGB) && s !== undefined)\n return s;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 's');\n }\n get l() {\n const data = this.data;\n const l = data.l;\n if (!this.type.is(TYPE.RGB) && l !== undefined)\n return l;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'l');\n }\n get a() {\n return this.data.a;\n }\n /* SETTERS */\n set r(r) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n }\n set g(g) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n }\n set b(b) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n }\n set h(h) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n }\n set s(s) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n }\n set l(l) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n }\n set a(a) {\n this.changed = true;\n this.data.a = a;\n }\n}\n/* EXPORT */\nexport default Channels;\n", "/* IMPORT */\nimport Channels from './/index.js';\n/* MAIN */\nconst channels = new Channels({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexport default channels;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport { DEC2HEX } from '../constants.js';\n/* MAIN */\nconst Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: (color) => {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n const match = color.match(Hex.re);\n if (!match)\n return;\n const hex = match[1];\n const dec = parseInt(hex, 16);\n const length = hex.length;\n const hasAlpha = length % 4 === 0;\n const isFullLength = length > 4;\n const multiplier = isFullLength ? 1 : 17;\n const bits = isFullLength ? 8 : 4;\n const bitsOffset = hasAlpha ? 0 : -1;\n const mask = isFullLength ? 255 : 15;\n return ChannelsReusable.set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // #RRGGBBAA\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;\n }\n else { // #RRGGBB\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;\n }\n }\n};\n/* EXPORT */\nexport default Hex;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: (hue) => {\n const match = hue.match(HSL.hueRe);\n if (match) {\n const [, number, unit] = match;\n switch (unit) {\n case 'grad': return _.channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return _.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return _.channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return _.channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n const match = color.match(HSL.re);\n if (!match)\n return;\n const [, h, s, l, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n h: HSL._hue2deg(h),\n s: _.channel.clamp.s(parseFloat(s)),\n l: _.channel.clamp.l(parseFloat(l)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { h, s, l, a } = channels;\n if (a < 1) { // HSLA\n return `hsla(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%, ${a})`;\n }\n else { // HSL\n return `hsl(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%)`;\n }\n }\n};\n/* EXPORT */\nexport default HSL;\n", "/* IMPORT */\nimport Hex from './hex.js';\n/* MAIN */\nconst Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: (color) => {\n color = color.toLowerCase();\n const hex = Keyword.colors[color];\n if (!hex)\n return;\n return Hex.parse(hex);\n },\n stringify: (channels) => {\n const hex = Hex.stringify(channels);\n for (const name in Keyword.colors) {\n if (Keyword.colors[name] === hex)\n return name;\n }\n return;\n }\n};\n/* EXPORT */\nexport default Keyword;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n const match = color.match(RGB.re);\n if (!match)\n return;\n const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n r: _.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: _.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: _.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // RGBA\n return `rgba(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)}, ${_.lang.round(a)})`;\n }\n else { // RGB\n return `rgb(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)})`;\n }\n }\n};\n/* EXPORT */\nexport default RGB;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Hex from './hex.js';\nimport HSL from './hsl.js';\nimport Keyword from './keyword.js';\nimport RGB from './rgb.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nconst Color = {\n /* VARIABLES */\n format: {\n keyword: Keyword,\n hex: Hex,\n rgb: RGB,\n rgba: RGB,\n hsl: HSL,\n hsla: HSL\n },\n /* API */\n parse: (color) => {\n if (typeof color !== 'string')\n return color;\n const channels = Hex.parse(color) || RGB.parse(color) || HSL.parse(color) || Keyword.parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(`Unsupported color format: \"${color}\"`);\n },\n stringify: (channels) => {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(TYPE.HSL) || channels.data.r === undefined) {\n return HSL.stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return RGB.stringify(channels);\n }\n else {\n return Hex.stringify(channels);\n }\n }\n};\n/* EXPORT */\nexport default Color;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst change = (color, channels) => {\n const ch = Color.parse(color);\n for (const c in channels) {\n ch[c] = _.channel.clamp[c](channels[c]);\n }\n return Color.stringify(ch);\n};\n/* EXPORT */\nexport default change;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n if (typeof r !== 'number')\n return change(r, { a: g });\n const channels = ChannelsReusable.set({\n r: _.channel.clamp.r(r),\n g: _.channel.clamp.g(g),\n b: _.channel.clamp.b(b),\n a: _.channel.clamp.a(a)\n });\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default rgba;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst channel = (color, channel) => {\n return _.lang.round(Color.parse(color)[channel]);\n};\n/* EXPORT */\nexport default channel;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\n//SOURCE: https://planetcalc.com/7779\nconst luminance = (color) => {\n const { r, g, b } = Color.parse(color);\n const luminance = .2126 * _.channel.toLinear(r) + .7152 * _.channel.toLinear(g) + .0722 * _.channel.toLinear(b);\n return _.lang.round(luminance);\n};\n/* EXPORT */\nexport default luminance;\n", "/* IMPORT */\nimport luminance from './luminance.js';\n/* MAIN */\nconst isLight = (color) => {\n return luminance(color) >= .5;\n};\n/* EXPORT */\nexport default isLight;\n", "/* IMPORT */\nimport isLight from './is_light.js';\n/* MAIN */\nconst isDark = (color) => {\n return !isLight(color);\n};\n/* EXPORT */\nexport default isDark;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n const channels = Color.parse(color);\n const amountCurrent = channels[channel];\n const amountNext = _.channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default adjustChannel;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst lighten = (color, amount) => {\n return adjustChannel(color, 'l', amount);\n};\n/* EXPORT */\nexport default lighten;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst darken = (color, amount) => {\n return adjustChannel(color, 'l', -amount);\n};\n/* EXPORT */\nexport default darken;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst transparentize = (color, amount) => {\n return adjustChannel(color, 'a', -amount);\n};\n/* EXPORT */\nexport default transparentize;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst adjust = (color, channels) => {\n const ch = Color.parse(color);\n const changes = {};\n for (const c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return change(color, changes);\n};\n/* EXPORT */\nexport default adjust;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport rgba from './rgba.js';\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n const { r: r1, g: g1, b: b1, a: a1 } = Color.parse(color1);\n const { r: r2, g: g2, b: b2, a: a2 } = Color.parse(color2);\n const weightScale = weight / 100;\n const weightNormalized = (weightScale * 2) - 1;\n const alphaDelta = a1 - a2;\n const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n const weight1 = (weight1combined + 1) / 2;\n const weight2 = 1 - weight1;\n const r = (r1 * weight1) + (r2 * weight2);\n const g = (g1 * weight1) + (g2 * weight2);\n const b = (b1 * weight1) + (b2 * weight2);\n const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return rgba(r, g, b, a);\n};\n/* EXPORT */\nexport default mix;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport mix from './mix.js';\n/* MAIN */\nconst invert = (color, weight = 100) => {\n const inverse = Color.parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return mix(inverse, color, weight);\n};\n/* EXPORT */\nexport default invert;\n", "/**\n * Values that have been hardcoded in src/diagrams/er/styles.js. These can be used by\n * theme-_._ files to maintain display styles until themes, styles, renderers are revised. --\n * 2022-09-22\n */\nexport const oldAttributeBackgroundColorOdd = '#ffffff';\nexport const oldAttributeBackgroundColorEven = '#f2f2f2';\n", "import { adjust } from 'khroma';\n\nexport const mkBorder = (col, darkMode) =>\n darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\n", "import { adjust, darken, invert, isDark, lighten } from 'khroma';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\nimport { mkBorder } from './theme-helpers.js';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#f4f4f4';\n\n this.primaryColor = '#fff4dd';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 5;\n this.strokeWidth = 1;\n // dark\n\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.useGradient = true;\n this.dropShadow = 'drop-shadow( 1px 2px 2px rgba(185,185,185,1))';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n // TODO: should this instead default to secondaryBorderColor?\n this.border2 = this.border2 || this.tertiaryBorderColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.vertLineColor = this.vertLineColor || 'navy';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n this.noteFontWeight = this.noteFontWeight || 'normal';\n this.fontWeight = this.fontWeight || 'normal';\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* ER diagram */\n\n if (this.darkMode) {\n this.rowOdd = this.rowOdd || darken(this.mainBkg, 5) || '#ffffff';\n this.rowEven = this.rowEven || darken(this.mainBkg, 10);\n } else {\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 75) || '#ffffff';\n this.rowEven = this.rowEven || lighten(this.mainBkg, 5);\n }\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 25);\n }\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });\n this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });\n this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -30 });\n this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });\n this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });\n this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });\n this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });\n this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* wardley */\n this.wardleyEvolutionColor = this.wardleyEvolutionColor || '#dc3545';\n this.wardley = {\n backgroundColor: this.wardley?.backgroundColor || this.background,\n axisColor: this.wardley?.axisColor || this.lineColor,\n axisTextColor: this.wardley?.axisTextColor || this.primaryTextColor,\n gridColor: this.wardley?.gridColor || this.gridColor,\n componentFill: this.wardley?.componentFill || this.background,\n componentStroke: this.wardley?.componentStroke || this.lineColor,\n componentLabelColor: this.wardley?.componentLabelColor || this.primaryTextColor,\n linkStroke: this.wardley?.linkStroke || this.lineColor,\n evolutionStroke: this.wardley?.evolutionStroke || this.wardleyEvolutionColor,\n annotationStroke: this.wardley?.annotationStroke || this.lineColor,\n annotationTextColor: this.wardley?.annotationTextColor || this.primaryTextColor,\n annotationFill: this.wardley?.annotationFill || this.background,\n };\n\n /* architecture */\n this.archEdgeColor = this.archEdgeColor || '#777';\n this.archEdgeArrowColor = this.archEdgeArrowColor || '#777';\n this.archEdgeWidth = this.archEdgeWidth || '3';\n this.archGroupBorderColor = this.archGroupBorderColor || '#000';\n this.archGroupBorderWidth = this.archGroupBorderWidth || '2px';\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n dataLabelColor: this.xyChart?.dataLabelColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* Event Modeling diagrams */\n\n this.emUiFill = this.emUiFill || 'white';\n this.emUiStroke = this.emUiStroke || '#dbdada';\n this.emProcessorFill = this.emProcessorFill || '#edb3f6';\n this.emProcessorStroke = this.emProcessorStroke || '#b88cbf';\n this.emReadModelFill = this.emReadModelFill || '#d3f1a2';\n this.emReadModelStroke = this.emReadModelStroke || '#a3b732';\n this.emCommandFill = this.emCommandFill || '#bcd6fe';\n this.emCommandStroke = this.emCommandStroke || '#679ac3';\n this.emEventFill = this.emEventFill || '#ffb778';\n this.emEventStroke = this.emEventStroke || '#c19a0f';\n this.emSwimlaneBackgroundOdd = this.emSwimlaneBackgroundOdd || 'rgb(250,250,250)';\n this.emSwimlaneBackgroundStroke = this.emSwimlaneBackgroundStroke || 'rgb(240,240,240)';\n this.emArrowhead = this.emArrowhead || this.lineColor;\n this.emRelationStroke = this.emRelationStroke || this.lineColor;\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n\n this.gradientStart = this.primaryBorderColor;\n this.gradientStop = this.secondaryBorderColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { adjust, darken, invert, isDark, lighten, rgba } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#ccc';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 5;\n this.strokeWidth = 1;\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n this.clusterBkg = '#302F3D';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.excludeBkgColor = darken(this.sectionBkgColor, 10);\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n this.vertLineColor = '#00BFFF';\n\n /* C4 Context Diagram variables */\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* Entity Relationship variables */\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 5) || '#ffffff';\n this.rowEven = this.rowEven || darken(this.mainBkg, 10);\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n this.useGradient = true;\n this.gradientStart = this.primaryBorderColor;\n this.gradientStop = this.secondaryBorderColor;\n this.dropShadow = 'drop-shadow( 1px 2px 2px rgba(185,185,185,1))';\n\n this.noteFontWeight = this.noteFontWeight || 'normal';\n this.fontWeight = this.fontWeight || 'normal';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.actorBorder;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = invert(this.doneTaskBkgColor);\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#555';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#f4f4f4'; // this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* cScale */\n this.cScale1 = this.cScale1 || '#0b0000';\n this.cScale2 = this.cScale2 || '#4d1037';\n this.cScale3 = this.cScale3 || '#3f5258';\n this.cScale4 = this.cScale4 || '#4f2f1b';\n this.cScale5 = this.cScale5 || '#6e0a0a';\n this.cScale6 = this.cScale6 || '#3b0048';\n this.cScale7 = this.cScale7 || '#995a01';\n this.cScale8 = this.cScale8 || '#154706';\n this.cScale9 = this.cScale9 || '#161722';\n this.cScale10 = this.cScale10 || '#00296f';\n this.cScale11 = this.cScale11 || '#01629c';\n this.cScale12 = this.cScale12 || '#010029';\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n /* Pie diagram */\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['pie' + i] = this['cScale' + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.mainContrastColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.mainContrastColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n for (let i = 0; i < 8; i++) {\n this['venn' + (i + 1)] = this['venn' + (i + 1)] ?? lighten(this['cScale' + i], 30);\n }\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n dataLabelColor: this.xyChart?.dataLabelColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22',\n };\n\n this.packet = {\n startByteColor: this.primaryTextColor,\n endByteColor: this.primaryTextColor,\n labelColor: this.primaryTextColor,\n titleColor: this.primaryTextColor,\n blockStrokeColor: this.primaryTextColor,\n blockFillColor: this.background,\n };\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* wardley */\n this.wardleyEvolutionColor = this.wardleyEvolutionColor || '#ff6b6b';\n this.wardley = {\n backgroundColor: this.wardley?.backgroundColor || this.background,\n axisColor: this.wardley?.axisColor || this.lineColor,\n axisTextColor: this.wardley?.axisTextColor || this.primaryTextColor,\n gridColor: this.wardley?.gridColor || this.gridColor,\n componentFill: this.wardley?.componentFill || this.mainBkg,\n componentStroke: this.wardley?.componentStroke || this.lineColor,\n componentLabelColor: this.wardley?.componentLabelColor || this.primaryTextColor,\n linkStroke: this.wardley?.linkStroke || this.lineColor,\n evolutionStroke: this.wardley?.evolutionStroke || this.wardleyEvolutionColor,\n annotationStroke: this.wardley?.annotationStroke || this.lineColor,\n annotationTextColor: this.wardley?.annotationTextColor || this.primaryTextColor,\n annotationFill: this.wardley?.annotationFill || this.mainBkg,\n };\n\n /* class */\n this.classText = this.primaryTextColor;\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: +60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: +120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* Event Modeling diagrams */\n\n this.emUiFill = this.emUiFill || '#2d2d2d';\n this.emUiStroke = this.emUiStroke || '#555';\n this.emProcessorFill = this.emProcessorFill || lighten('#5a3d5c', 10);\n this.emProcessorStroke = this.emProcessorStroke || '#8a6d8c';\n this.emReadModelFill = this.emReadModelFill || lighten('#3d5a2d', 10);\n this.emReadModelStroke = this.emReadModelStroke || '#6d8c5c';\n this.emCommandFill = this.emCommandFill || lighten('#2d3d5a', 10);\n this.emCommandStroke = this.emCommandStroke || '#5c6d8c';\n this.emEventFill = this.emEventFill || lighten('#5a452d', 10);\n this.emEventStroke = this.emEventStroke || '#8c755c';\n this.emSwimlaneBackgroundOdd = this.emSwimlaneBackgroundOdd || lighten(this.background, 5);\n this.emSwimlaneBackgroundStroke =\n this.emSwimlaneBackgroundStroke || lighten(this.background, 12);\n this.emArrowhead = this.emArrowhead || this.lineColor;\n this.emRelationStroke = this.emRelationStroke || this.lineColor;\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || lighten(this.background, 12);\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || lighten(this.background, 2);\n /* -------------------------------------------------- */\n\n this.nodeBorder = this.nodeBorder || '#999';\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { invert, lighten, rgba, adjust, darken, isDark } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.background = '#f4f4f4';\n this.primaryColor = '#ECECFF';\n\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = '#ffffde';\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = 'rgba(232,232,232, 0.8)';\n this.textColor = '#333';\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 5;\n this.strokeWidth = 1;\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n this.clusterBkg = '#FBFBFF';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n this.vertLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n this.vertLineColor = 'navy';\n\n this.noteFontWeight = this.noteFontWeight || 'normal';\n this.fontWeight = this.fontWeight || 'normal';\n\n /* C4 Context Diagram variables */\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* Entity Relationship variables */\n this.rowOdd = 'calculated';\n this.rowEven = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n\n // Neo-specific\n this.useGradient = false;\n this.gradientStart = this.primaryBorderColor;\n this.gradientStop = this.secondaryBorderColor;\n this.dropShadow = 'drop-shadow(1px 2px 2px rgba(185, 185, 185, 1))';\n this.updateColors();\n }\n updateColors() {\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // Setup the peer color for the set, useful for borders\n this['cScale' + i] = darken(this['cScale' + i], 10);\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n }\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n // Setup the label color for the set\n this.scaleLabelColor =\n this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n ? this.scaleLabelColor\n : this.labelTextColor;\n\n if (this.labelTextColor !== 'calculated') {\n this.cScaleLabel0 = this.cScaleLabel0 || invert(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || invert(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.labelTextColor;\n }\n }\n\n /* Flowchart variables */\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.actorLineColor = this.actorBorder;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* Entity Relationship variables */\n this.rowOdd = this.rowOdd || lighten(this.primaryColor, 75) || '#ffffff';\n this.rowEven = this.rowEven || lighten(this.primaryColor, 1);\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });\n this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });\n this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -40 });\n this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });\n this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });\n this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });\n this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });\n this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* wardley */\n this.wardleyEvolutionColor = this.wardleyEvolutionColor || '#dc3545';\n this.wardley = {\n backgroundColor: this.wardley?.backgroundColor || this.background,\n axisColor: this.wardley?.axisColor || this.lineColor,\n axisTextColor: this.wardley?.axisTextColor || this.primaryTextColor,\n gridColor: this.wardley?.gridColor || this.gridColor,\n componentFill: this.wardley?.componentFill || this.background,\n componentStroke: this.wardley?.componentStroke || this.lineColor,\n componentLabelColor: this.wardley?.componentLabelColor || this.primaryTextColor,\n linkStroke: this.wardley?.linkStroke || this.lineColor,\n evolutionStroke: this.wardley?.evolutionStroke || this.wardleyEvolutionColor,\n annotationStroke: this.wardley?.annotationStroke || this.lineColor,\n annotationTextColor: this.wardley?.annotationTextColor || this.primaryTextColor,\n annotationFill: this.wardley?.annotationFill || this.background,\n };\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n dataLabelColor: this.xyChart?.dataLabelColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* Event Modeling diagrams */\n\n this.emUiFill = this.emUiFill || 'white';\n this.emUiStroke = this.emUiStroke || '#dbdada';\n this.emProcessorFill = this.emProcessorFill || '#edb3f6';\n this.emProcessorStroke = this.emProcessorStroke || '#b88cbf';\n this.emReadModelFill = this.emReadModelFill || '#d3f1a2';\n this.emReadModelStroke = this.emReadModelStroke || '#a3b732';\n this.emCommandFill = this.emCommandFill || '#bcd6fe';\n this.emCommandStroke = this.emCommandStroke || '#679ac3';\n this.emEventFill = this.emEventFill || '#ffb778';\n this.emEventStroke = this.emEventStroke || '#c19a0f';\n this.emSwimlaneBackgroundOdd = this.emSwimlaneBackgroundOdd || 'rgb(250,250,250)';\n this.emSwimlaneBackgroundStroke = this.emSwimlaneBackgroundStroke || 'rgb(240,240,240)';\n this.emArrowhead = this.emArrowhead || this.lineColor;\n this.emRelationStroke = this.emRelationStroke || this.lineColor;\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n // for all keys in this object, if it is 'calculated' then set it to undefined\n Object.keys(this).forEach((k) => {\n if (this[k] === 'calculated') {\n this[k] = undefined;\n }\n });\n\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { adjust, darken, invert, isDark, lighten } from 'khroma';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\nimport { mkBorder } from './theme-helpers.js';\n\nclass Theme {\n constructor() {\n /* Base vales */\n this.background = '#f4f4f4';\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n this.tertiaryColor = lighten('#cde498', 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 5;\n this.strokeWidth = 1;\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'calculated';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n this.vertLineColor = '#00BFFF';\n\n /* C4 Context Diagram variables */\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n this.noteFontWeight = 'normal';\n this.fontWeight = 'normal';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n\n this.useGradient = true;\n this.gradientStart = this.primaryBorderColor;\n this.gradientStop = this.secondaryBorderColor;\n this.dropShadow = 'drop-shadow( 1px 2px 2px rgba(185,185,185,0.5))';\n }\n updateColors() {\n /* Sequence Diagram variables */\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.actorLineColor = this.actorBorder;\n\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // Setup the peer color for the set, useful for borders\n this['cScale' + i] = darken(this['cScale' + i], 10);\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n }\n\n // Setup the label color for the set\n this.scaleLabelColor =\n this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n ? this.scaleLabelColor\n : this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n }\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* ER diagram */\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 75) || '#ffffff';\n this.rowEven = this.rowEven || lighten(this.mainBkg, 20);\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });\n this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });\n this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -30 });\n this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });\n this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });\n this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });\n this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });\n this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n this.packet = {\n startByteColor: this.primaryTextColor,\n endByteColor: this.primaryTextColor,\n labelColor: this.primaryTextColor,\n titleColor: this.primaryTextColor,\n blockStrokeColor: this.primaryTextColor,\n blockFillColor: this.mainBkg,\n };\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* wardley */\n this.wardleyEvolutionColor = this.wardleyEvolutionColor || '#dc3545';\n this.wardley = {\n backgroundColor: this.wardley?.backgroundColor || this.background,\n axisColor: this.wardley?.axisColor || this.lineColor,\n axisTextColor: this.wardley?.axisTextColor || this.primaryTextColor,\n gridColor: this.wardley?.gridColor || this.gridColor,\n componentFill: this.wardley?.componentFill || this.background,\n componentStroke: this.wardley?.componentStroke || this.lineColor,\n componentLabelColor: this.wardley?.componentLabelColor || this.primaryTextColor,\n linkStroke: this.wardley?.linkStroke || this.lineColor,\n evolutionStroke: this.wardley?.evolutionStroke || this.wardleyEvolutionColor,\n annotationStroke: this.wardley?.annotationStroke || this.lineColor,\n annotationTextColor: this.wardley?.annotationTextColor || this.primaryTextColor,\n annotationFill: this.wardley?.annotationFill || this.background,\n };\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n dataLabelColor: this.xyChart?.dataLabelColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* Event Modeling diagrams */\n\n this.emUiFill = this.emUiFill || 'white';\n this.emUiStroke = this.emUiStroke || '#dbdada';\n this.emProcessorFill = this.emProcessorFill || '#edb3f6';\n this.emProcessorStroke = this.emProcessorStroke || '#b88cbf';\n this.emReadModelFill = this.emReadModelFill || '#d3f1a2';\n this.emReadModelStroke = this.emReadModelStroke || '#a3b732';\n this.emCommandFill = this.emCommandFill || '#bcd6fe';\n this.emCommandStroke = this.emCommandStroke || '#679ac3';\n this.emEventFill = this.emEventFill || '#ffb778';\n this.emEventStroke = this.emEventStroke || '#c19a0f';\n this.emSwimlaneBackgroundOdd = this.emSwimlaneBackgroundOdd || 'rgb(250,250,250)';\n this.emSwimlaneBackgroundStroke = this.emSwimlaneBackgroundStroke || 'rgb(240,240,240)';\n this.emArrowhead = this.emArrowhead || this.lineColor;\n this.emRelationStroke = this.emRelationStroke || this.lineColor;\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { invert, darken, lighten, adjust, isDark } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#707070';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = '#ffffff';\n\n // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n // this.altBackground = lighten(this.contrast, 55);\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 5;\n this.strokeWidth = 1;\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = this.actorBorder;\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n this.vertLineColor = 'calculated';\n\n /* C4 Context Diagram variables */\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n this.noteFontWeight = 'normal';\n this.fontWeight = 'normal';\n\n /* ER diagram */\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 75) || '#ffffff';\n this.rowEven = this.rowEven || '#f4f4f4';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.useGradient = true;\n this.gradientStart = this.primaryBorderColor;\n this.gradientStop = this.secondaryBorderColor;\n this.dropShadow = 'drop-shadow( 1px 2px 2px rgba(185,185,185,1))';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.actorBorder;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = '#999';\n this.noteBkgColor = '#666';\n this.noteTextColor = '#fff';\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || '#555';\n this.cScale1 = this.cScale1 || '#F4F4F4';\n this.cScale2 = this.cScale2 || '#555';\n this.cScale3 = this.cScale3 || '#BBB';\n this.cScale4 = this.cScale4 || '#777';\n this.cScale5 = this.cScale5 || '#999';\n this.cScale6 = this.cScale6 || '#DDD';\n this.cScale7 = this.cScale7 || '#FFF';\n this.cScale8 = this.cScale8 || '#DDD';\n this.cScale9 = this.cScale9 || '#BBB';\n this.cScale10 = this.cScale10 || '#999';\n this.cScale11 = this.cScale11 || '#777';\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n this.cScaleLabel0 = this.cScaleLabel0 || this.cScale1;\n this.cScaleLabel2 = this.cScaleLabel2 || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { l: -(8 + i * 5) });\n }\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n this.vertLineColor = this.critBkgColor;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || '#000';\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f4f4f4';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || '#000';\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#222';\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n // /* pie */\n /* Pie diagram */\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['pie' + i] = this['cScale' + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n for (let i = 0; i < 8; i++) {\n this['venn' + (i + 1)] = this['venn' + (i + 1)] ?? this['cScale' + i];\n }\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n dataLabelColor: this.xyChart?.dataLabelColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0',\n };\n\n /* radar */\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || '#DEDEDE',\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12,\n };\n\n /* wardley */\n this.wardleyEvolutionColor = this.wardleyEvolutionColor || '#dc3545';\n this.wardley = {\n backgroundColor: this.wardley?.backgroundColor || this.background,\n axisColor: this.wardley?.axisColor || this.lineColor,\n axisTextColor: this.wardley?.axisTextColor || this.primaryTextColor,\n gridColor: this.wardley?.gridColor || this.gridColor,\n componentFill: this.wardley?.componentFill || this.background,\n componentStroke: this.wardley?.componentStroke || this.lineColor,\n componentLabelColor: this.wardley?.componentLabelColor || this.primaryTextColor,\n linkStroke: this.wardley?.linkStroke || this.lineColor,\n evolutionStroke: this.wardley?.evolutionStroke || this.wardleyEvolutionColor,\n annotationStroke: this.wardley?.annotationStroke || this.lineColor,\n annotationTextColor: this.wardley?.annotationTextColor || this.primaryTextColor,\n annotationFill: this.wardley?.annotationFill || this.background,\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: +120 });\n\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = 'white';\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = 'white';\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* Event Modeling diagrams */\n\n this.emUiFill = this.emUiFill || 'white';\n this.emUiStroke = this.emUiStroke || '#dbdada';\n this.emProcessorFill = this.emProcessorFill || '#edb3f6';\n this.emProcessorStroke = this.emProcessorStroke || '#b88cbf';\n this.emReadModelFill = this.emReadModelFill || '#d3f1a2';\n this.emReadModelStroke = this.emReadModelStroke || '#a3b732';\n this.emCommandFill = this.emCommandFill || '#bcd6fe';\n this.emCommandStroke = this.emCommandStroke || '#679ac3';\n this.emEventFill = this.emEventFill || '#ffb778';\n this.emEventStroke = this.emEventStroke || '#c19a0f';\n this.emSwimlaneBackgroundOdd = this.emSwimlaneBackgroundOdd || 'rgb(250,250,250)';\n this.emSwimlaneBackgroundStroke = this.emSwimlaneBackgroundStroke || 'rgb(240,240,240)';\n this.emArrowhead = this.emArrowhead || this.lineColor;\n this.emRelationStroke = this.emRelationStroke || this.lineColor;\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { darken, lighten, adjust, invert, isDark } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#ffffff';\n\n this.primaryColor = '#cccccc';\n this.mainBkg = '#ffffff';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 3;\n this.strokeWidth = 2;\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n // dark\n\n this.fontFamily = 'arial, sans-serif';\n this.fontSize = '14px';\n\n // Neo-specific\n this.nodeBorder = '#000000';\n this.stateBorder = '#000000';\n this.useGradient = true;\n this.gradientStart = '#0042eb';\n this.gradientStop = '#eb0042';\n // this.dropShadow = 'drop-shadow( 1px 2px 2px rgba(185,185,185,1))';\n // this.dropShadow = 'drop-shadow(0px 2px 2px rgba(0, 0, 0, 0.25));';\n this.dropShadow = 'drop-shadow( 0px 1px 2px rgba(0, 0, 0, 0.25));';\n this.tertiaryColor = '#ffffff';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n this.noteFontWeight = 'normal';\n this.fontWeight = 'normal';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n // TODO: should this instead default to secondaryBorderColor?\n this.border2 = this.border2 || this.tertiaryBorderColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n const primaryColor = '#ECECFE';\n const secondaryColor = '#E9E9F1';\n const tertiaryColor = adjust(primaryColor, { h: 180, l: 5 });\n this.sectionBkgColor = this.sectionBkgColor || tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.vertLineColor = this.vertLineColor || this.primaryBorderColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || primaryColor;\n this.cScale1 = this.cScale1 || secondaryColor;\n this.cScale2 = this.cScale2 || tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 25);\n }\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || primaryColor;\n this.fillType1 = this.fillType1 || secondaryColor;\n this.fillType2 = this.fillType2 || adjust(primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || primaryColor;\n this.pie2 = this.pie2 || secondaryColor;\n this.pie3 = this.pie3 || tertiaryColor;\n this.pie4 = this.pie4 || adjust(primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || primaryColor;\n this.git1 = this.git1 || secondaryColor;\n this.git2 = this.git2 || tertiaryColor;\n this.git3 = this.git3 || adjust(primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { adjust, darken, invert, isDark, lighten, rgba } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n\n this.mainBkg = '#2a2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.border1 = '#ccc';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = invert(this.background);\n this.fontFamily = 'arial, sans-serif';\n this.fontSize = '14px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 3;\n this.strokeWidth = 1;\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n this.THEME_COLOR_LIMIT = 12;\n // dark\n this.fontFamily = 'arial, sans-serif';\n this.fontSize = '14px';\n\n // Neo-specific\n // this.nodeBorder = 'none';\n // this.stateBorder = 'none';\n\n this.useGradient = true;\n this.gradientStart = '#0042eb';\n this.gradientStop = '#eb0042';\n this.dropShadow = 'drop-shadow( 1px 2px 2px rgba(185,185,185,0.2))';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n this.noteFontWeight = 'normal';\n this.fontWeight = 'normal';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n // TODO: should this instead default to secondaryBorderColor?\n this.border2 = this.border2 || this.tertiaryBorderColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.border1;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.vertLineColor = this.vertLineColor || this.primaryBorderColor;\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 25);\n }\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || '#0b0000';\n this.git1 = this.git1 || '#4d1037';\n this.git2 = this.git2 || '#3f5258';\n this.git3 = this.git3 || '#4f2f1b';\n this.git4 = this.git4 || '#6e0a0a';\n this.git5 = this.git5 || '#3b0048';\n this.git6 = this.git6 || '#995a01';\n this.git7 = this.git7 || '#154706';\n this.gitDarkMode = true;\n if (this.gitDarkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { darken, lighten, adjust, invert, isDark } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#ffffff';\n\n this.primaryColor = '#cccccc';\n this.mainBkg = '#ffffff';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#28253D';\n\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 12;\n this.strokeWidth = 2;\n\n this.primaryBorderColor = mkBorder('#28253D', this.darkMode);\n // dark\n\n this.fontFamily = '\"Recursive Variable\", arial, sans-serif';\n this.fontSize = '14px';\n\n // Neo-specific\n this.nodeBorder = '#28253D';\n this.stateBorder = '#28253D';\n this.useGradient = false;\n this.gradientStart = '#0042eb';\n this.gradientStop = '#eb0042';\n this.dropShadow = 'url(#drop-shadow)';\n this.nodeShadow = true;\n this.tertiaryColor = '#ffffff';\n this.clusterBkg = '#F9F9FB';\n this.clusterBorder = '#BDBCCC';\n this.noteBorderColor = '#FACC15';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* Sequence Diagram variables */\n this.actorBorder = '#28253D';\n\n this.filterColor = '#000000';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#28253D'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#FEF9C3';\n this.noteTextColor = this.noteTextColor || '#28253D';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n // TODO: should this instead default to secondaryBorderColor?\n this.border2 = this.border2 || this.tertiaryBorderColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n this.noteFontWeight = 600;\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n const primaryColor = '#ECECFE';\n const secondaryColor = '#E9E9F1';\n const tertiaryColor = adjust(primaryColor, { h: 180, l: 5 });\n this.sectionBkgColor = this.sectionBkgColor || tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.vertLineColor = this.vertLineColor || this.primaryBorderColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.compositeTitleBackground = '#F9F9FB';\n this.altBackground = '#F9F9FB';\n this.stateEdgeLabelBackground = '#FFFFFF';\n this.fontWeight = 600;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = this.mainBkg;\n }\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 25);\n }\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || primaryColor;\n this.fillType1 = this.fillType1 || secondaryColor;\n this.fillType2 = this.fillType2 || adjust(primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || primaryColor;\n this.pie2 = this.pie2 || secondaryColor;\n this.pie3 = this.pie3 || tertiaryColor;\n this.pie4 = this.pie4 || adjust(primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.requirementEdgeLabelBackground = '#FFFFFF';\n\n /* git */\n this.git0 = this.git0 || primaryColor;\n this.git1 = this.git1 || secondaryColor;\n this.git2 = this.git2 || tertiaryColor;\n this.git3 = this.git3 || adjust(primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n this.commitLineColor = this.commitLineColor ?? '#BDBCCC';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n this.erEdgeLabelBackground = '#FFFFFF';\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { adjust, darken, invert, isDark, lighten, rgba } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n\n this.mainBkg = '#111113';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.border1 = '#ccc';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = invert(this.background);\n this.fontFamily = '\"Recursive Variable\", arial, sans-serif';\n this.fontSize = '14px';\n this.labelBackground = '#111113';\n this.textColor = '#ccc';\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 12;\n this.strokeWidth = 2;\n\n this.noteBkgColor = this.noteBkgColor ?? '#FEF9C3';\n this.noteTextColor = this.noteTextColor ?? '#28253D';\n\n this.THEME_COLOR_LIMIT = 12;\n // dark\n this.fontFamily = '\"Recursive Variable\", arial, sans-serif';\n this.fontSize = '14px';\n\n // Neo-specific\n this.nodeBorder = '#FFFFFF';\n this.stateBorder = '#FFFFFF';\n\n this.useGradient = false;\n this.gradientStart = '#0042eb';\n this.gradientStop = '#eb0042';\n this.dropShadow = 'url(#drop-shadow)';\n this.nodeShadow = true;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* Class Diagram variables */\n this.clusterBkg = '#1E1A2E';\n this.clusterBorder = '#BDBCCC';\n this.noteBorderColor = '#FACC15';\n\n /* Sequence Diagram variables */\n this.noteFontWeight = 600;\n\n this.filterColor = '#FFFFFF';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#FFFFFF'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#FFFFFF';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n // TODO: should this instead default to secondaryBorderColor?\n this.border2 = this.border2 || this.tertiaryBorderColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.border1;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = '#FFFFFF';\n this.signalColor = '#FFFFFF';\n this.labelBoxBorderColor = '#BDBCCC';\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.vertLineColor = this.vertLineColor || this.primaryBorderColor;\n this.compositeBackground = '#16141F';\n this.altBackground = '#16141F';\n this.compositeTitleBackground = '#16141F';\n this.stateEdgeLabelBackground = '#16141F';\n this.fontWeight = 600;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 25);\n }\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.requirementEdgeLabelBackground = '#16141F';\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n this.commitLineColor = this.commitLineColor ?? '#BDBCCC';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n this.erEdgeLabelBackground = '#16141F';\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { darken, lighten, adjust, invert, isDark } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#ffffff';\n\n this.primaryColor = '#cccccc';\n this.mainBkg = '#ffffff';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#28253D';\n\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 12;\n this.strokeWidth = 2;\n\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n // dark\n\n this.fontFamily = '\"Recursive Variable\", arial, sans-serif';\n this.fontSize = '14px';\n\n // Neo-specific\n this.nodeBorder = '#28253D';\n this.stateBorder = '#28253D';\n this.useGradient = false;\n this.gradientStart = '#0042eb';\n this.gradientStop = '#eb0042';\n this.dropShadow = 'url(#drop-shadow)';\n this.nodeShadow = true;\n this.tertiaryColor = '#ffffff';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* Sequence Diagram variables */\n this.actorBorder = '#28253D';\n this.noteBorderColor = '#FACC15';\n this.noteFontWeight = 600;\n\n this.borderColorArray = [\n '#E879F9', //Fuchsia-400\n '#2DD4BF', //Teal-400\n '#FB923C', //Orange-400\n '#22D3EE', // Cyan-400\n '#4ADE80', // Green-400\n '#A78BFA', //Violet-400\n '#F87171', //red-400\n '#FACC15', //yellow-400\n '#818CF8', //indigo-400\n '#A3E635 ', //Lime-400\n '#38BDF8', //Sky-400\n '#FB7185', //Rose-400\n ];\n\n this.bkgColorArray = [\n '#FDF4FF', //Fuchsia-50\n '#F0FDFA', //Teal-50\n '#FFF7ED', //Orange-50\n '#ECFEFF', // Cyan-50\n '#F0FDF4', // Green-50\n '#F5F3FF', //Violet-50\n '#FEF2F2', //red-50\n '#FEFCE8', //yellow-50\n '#EEF2FF', //indigo-50\n '#F7FEE7', //Lime-50\n '#F0F9FF', //Sky-50\n '#FFF1F2', //Rose-50\n ];\n\n this.filterColor = '#000000';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#28253D'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#28253D';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n // TODO: should this instead default to secondaryBorderColor?\n this.border2 = this.border2 || this.tertiaryBorderColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n const primaryColor = '#ECECFE';\n const secondaryColor = '#E9E9F1';\n const tertiaryColor = adjust(primaryColor, { h: 180, l: 5 });\n this.sectionBkgColor = this.sectionBkgColor || tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.vertLineColor = this.vertLineColor || this.primaryBorderColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || '#f4a8ff'; // Fuchsia-300\n this.cScale1 = this.cScale1 || '#46ecd5'; // Teal-300\n this.cScale2 = this.cScale2 || '#ffb86a'; // Orange-300\n this.cScale3 = this.cScale3 || '#dab2ff'; // Purple-300\n this.cScale4 = this.cScale4 || '#7bf1a8'; // Green-300\n this.cScale5 = this.cScale5 || '#c4b4ff'; // Violet-300\n this.cScale6 = this.cScale6 || '#ffa2a2'; // Red-300\n this.cScale7 = this.cScale7 || '#ffdf20'; // Yellow-300\n this.cScale8 = this.cScale8 || '#a3b3ff'; // Indigo-300\n this.cScale9 = this.cScale9 || '#bbf451'; // Lime-300\n this.cScale10 = this.cScale10 || '#74d4ff'; // Sky-300\n this.cScale11 = this.cScale11 || '#ffa1ad'; // Rose-300\n\n // if (this.darkMode) {\n // for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // this['cScale' + i] = darken(this['cScale' + i], 75);\n // }\n // } else {\n // for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // this['cScale' + i] = darken(this['cScale' + i], 25);\n // }\n // }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || primaryColor;\n this.fillType1 = this.fillType1 || secondaryColor;\n this.fillType2 = this.fillType2 || adjust(primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || primaryColor;\n this.pie2 = this.pie2 || secondaryColor;\n this.pie3 = this.pie3 || tertiaryColor;\n this.pie4 = this.pie4 || adjust(primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || primaryColor;\n this.git1 = this.git1 || secondaryColor;\n this.git2 = this.git2 || tertiaryColor;\n this.git3 = this.git3 || adjust(primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLineColor = this.commitLineColor ?? '#BDBCCC';\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n this.fontWeight = 600;\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n this.erEdgeLabelBackground = '#FFFFFF';\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { adjust, darken, invert, isDark, lighten, rgba } from 'khroma';\nimport { mkBorder } from './theme-helpers.js';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues.js';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n\n this.mainBkg = '#111113';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.border1 = '#ccc';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = invert(this.background);\n this.fontFamily = '\"Recursive Variable\", arial, sans-serif';\n this.fontSize = '14px';\n this.labelBackground = '#111113';\n this.textColor = '#ccc';\n this.THEME_COLOR_LIMIT = 12;\n this.radius = 12;\n this.strokeWidth = 2;\n\n this.noteBkgColor = this.noteBkgColor ?? '#FEF9C3';\n this.noteTextColor = this.noteTextColor ?? '#28253D';\n\n this.THEME_COLOR_LIMIT = 12;\n // dark\n this.fontFamily = '\"Recursive Variable\", arial, sans-serif';\n this.fontSize = '14px';\n\n // Neo-specific\n this.nodeBorder = '#FFFFFF';\n this.stateBorder = '#FFFFFF';\n\n this.useGradient = false;\n this.gradientStart = '#0042eb';\n this.gradientStop = '#eb0042';\n this.dropShadow = 'url(#drop-shadow)';\n this.nodeShadow = true;\n\n /* Architecture Diagram variables */\n this.archEdgeColor = 'calculated';\n this.archEdgeArrowColor = 'calculated';\n this.archEdgeWidth = '3';\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = '2px';\n\n /* Class Diagram variables */\n this.clusterBkg = '#1E1A2E';\n this.clusterBorder = '#BDBCCC';\n this.noteBorderColor = '#FACC15';\n\n /* Sequence Diagram variables */\n this.noteFontWeight = 600;\n\n this.borderColorArray = [\n '#E879F9', //Fuchsia-400\n '#2DD4BF', //Teal-400\n '#FB923C', //Orange-400\n '#22D3EE', // Cyan-400\n '#4ADE80', // Green-400\n '#A78BFA', //Violet-400\n '#F87171', //red-400\n '#FACC15', //yellow-400\n '#818CF8', //indigo-400\n '#A3E635 ', //Lime-400\n '#38BDF8', //Sky-400\n '#FB7185', //Rose-400\n ];\n\n this.bkgColorArray = [];\n\n this.filterColor = '#FFFFFF';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#FFFFFF'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#FFFFFF';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n // TODO: should this instead default to secondaryBorderColor?\n this.border2 = this.border2 || this.tertiaryBorderColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.border1;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = '#FFFFFF';\n this.signalColor = '#FFFFFF';\n this.labelBoxBorderColor = '#BDBCCC';\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Mindmap Diagram variables */\n this.rootLabelColor = '#FFFFFF';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.vertLineColor = this.vertLineColor || this.primaryBorderColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Architecture Diagram variables */\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || '#f4a8ff'; // Fuchsia-300\n this.cScale1 = this.cScale1 || '#46ecd5'; // Teal-300\n this.cScale2 = this.cScale2 || '#ffb86a'; // Orange-300\n this.cScale3 = this.cScale3 || '#dab2ff'; // Purple-300\n this.cScale4 = this.cScale4 || '#7bf1a8'; // Green-300\n this.cScale5 = this.cScale5 || '#c4b4ff'; // Violet-300\n this.cScale6 = this.cScale6 || '#ffa2a2'; // Red-300\n this.cScale7 = this.cScale7 || '#ffdf20'; // Yellow-300\n this.cScale8 = this.cScale8 || '#a3b3ff'; // Indigo-300\n this.cScale9 = this.cScale9 || '#bbf451'; // Lime-300\n this.cScale10 = this.cScale10 || '#74d4ff'; // Sky-300\n this.cScale11 = this.cScale11 || '#ffa1ad'; // Rose-300\n\n // if (this.darkMode) {\n // for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // this['cScale' + i] = darken(this['cScale' + i], 75);\n // }\n // } else {\n // for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // this['cScale' + i] = darken(this['cScale' + i], 25);\n // }\n // }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = darken(this['cScale' + i], 75);\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px';\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* venn */\n this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;\n this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;\n\n /* quadrant-graph */\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill =\n this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill =\n this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill =\n this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill =\n this.quadrantPointFill || isDark(this.quadrant1Fill)\n ? lighten(this.quadrant1Fill)\n : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill =\n this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill =\n this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n\n /* xychart */\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette:\n this.xyChart?.plotColorPalette ||\n '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0',\n };\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || '1';\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n this.commitLineColor = this.commitLineColor ?? '#BDBCCC';\n this.fontWeight = 600;\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n this.erEdgeLabelBackground = '#16141F';\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n", "import { getThemeVariables as baseThemeVariables } from './theme-base.js';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark.js';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default.js';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest.js';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral.js';\nimport { getThemeVariables as neoThemeVariables } from './theme-neo.js';\nimport { getThemeVariables as neoDarkThemeVariables } from './theme-neo-dark.js';\nimport { getThemeVariables as reduxThemeVariables } from './theme-redux.js';\nimport { getThemeVariables as reduxDarkThemeVariables } from './theme-redux-dark.js';\nimport { getThemeVariables as reduxColorThemeVariables } from './theme-redux-color.js';\nimport { getThemeVariables as reduxDarkColorThemeVariables } from './theme-redux-dark-color.js';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables,\n },\n dark: {\n getThemeVariables: darkThemeVariables,\n },\n default: {\n getThemeVariables: defaultThemeVariables,\n },\n forest: {\n getThemeVariables: forestThemeVariables,\n },\n neutral: {\n getThemeVariables: neutralThemeVariables,\n },\n neo: {\n getThemeVariables: neoThemeVariables,\n },\n 'neo-dark': {\n getThemeVariables: neoDarkThemeVariables,\n },\n redux: {\n getThemeVariables: reduxThemeVariables,\n },\n 'redux-dark': {\n getThemeVariables: reduxDarkThemeVariables,\n },\n 'redux-color': {\n getThemeVariables: reduxColorThemeVariables,\n },\n 'redux-dark-color': {\n getThemeVariables: reduxDarkColorThemeVariables,\n },\n};\n", "export default {\n \"flowchart\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"subGraphTitleMargin\": {\n \"top\": 0,\n \"bottom\": 0\n },\n \"diagramPadding\": 8,\n \"htmlLabels\": null,\n \"nodeSpacing\": 50,\n \"rankSpacing\": 50,\n \"curve\": \"basis\",\n \"padding\": 15,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"wrappingWidth\": 200,\n \"inheritDir\": false\n },\n \"sequence\": {\n \"useMaxWidth\": true,\n \"hideUnusedParticipants\": false,\n \"activationWidth\": 10,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"actorMargin\": 50,\n \"width\": 150,\n \"height\": 65,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"mirrorActors\": true,\n \"forceMenus\": false,\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"showSequenceNumbers\": false,\n \"actorFontSize\": 14,\n \"actorFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"actorFontWeight\": 400,\n \"noteFontSize\": 14,\n \"noteFontFamily\": \"\\\"trebuchet ms\\\", verdana, arial, sans-serif\",\n \"noteFontWeight\": 400,\n \"noteAlign\": \"center\",\n \"messageFontSize\": 16,\n \"messageFontFamily\": \"\\\"trebuchet ms\\\", verdana, arial, sans-serif\",\n \"messageFontWeight\": 400,\n \"wrap\": false,\n \"wrapPadding\": 10,\n \"labelBoxWidth\": 50,\n \"labelBoxHeight\": 20\n },\n \"gantt\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"barHeight\": 20,\n \"barGap\": 4,\n \"topPadding\": 50,\n \"rightPadding\": 75,\n \"leftPadding\": 75,\n \"gridLineStartPadding\": 35,\n \"fontSize\": 11,\n \"sectionFontSize\": 11,\n \"numberSectionStyles\": 4,\n \"axisFormat\": \"%Y-%m-%d\",\n \"topAxis\": false,\n \"displayMode\": \"\",\n \"weekday\": \"sunday\"\n },\n \"journey\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"maxLabelWidth\": 360,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"titleColor\": \"\",\n \"titleFontFamily\": \"\\\"trebuchet ms\\\", verdana, arial, sans-serif\",\n \"titleFontSize\": \"4ex\"\n },\n \"class\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"arrowMarkerAbsolute\": false,\n \"dividerMargin\": 10,\n \"padding\": 5,\n \"textHeight\": 10,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"htmlLabels\": false,\n \"hideEmptyMembersBox\": false,\n \"hierarchicalNamespaces\": true\n },\n \"state\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"dividerMargin\": 10,\n \"sizeUnit\": 5,\n \"padding\": 8,\n \"textHeight\": 10,\n \"titleShift\": -15,\n \"noteMargin\": 10,\n \"forkWidth\": 70,\n \"forkHeight\": 7,\n \"miniPadding\": 2,\n \"fontSizeFactor\": 5.02,\n \"fontSize\": 24,\n \"labelHeight\": 16,\n \"edgeLengthFactor\": \"20\",\n \"compositTitleSize\": 35,\n \"radius\": 5,\n \"defaultRenderer\": \"dagre-wrapper\"\n },\n \"er\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 20,\n \"layoutDirection\": \"TB\",\n \"minEntityWidth\": 100,\n \"minEntityHeight\": 75,\n \"entityPadding\": 15,\n \"nodeSpacing\": 140,\n \"rankSpacing\": 80,\n \"stroke\": \"gray\",\n \"fill\": \"honeydew\",\n \"fontSize\": 12\n },\n \"pie\": {\n \"useMaxWidth\": true,\n \"textPosition\": 0.75\n },\n \"quadrantChart\": {\n \"useMaxWidth\": true,\n \"chartWidth\": 500,\n \"chartHeight\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"quadrantPadding\": 5,\n \"xAxisLabelPadding\": 5,\n \"yAxisLabelPadding\": 5,\n \"xAxisLabelFontSize\": 16,\n \"yAxisLabelFontSize\": 16,\n \"quadrantLabelFontSize\": 16,\n \"quadrantTextTopPadding\": 5,\n \"pointTextPadding\": 5,\n \"pointLabelFontSize\": 12,\n \"pointRadius\": 5,\n \"xAxisPosition\": \"top\",\n \"yAxisPosition\": \"left\",\n \"quadrantInternalBorderStrokeWidth\": 1,\n \"quadrantExternalBorderStrokeWidth\": 2\n },\n \"xyChart\": {\n \"useMaxWidth\": true,\n \"width\": 700,\n \"height\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"showDataLabel\": false,\n \"showDataLabelOutsideBar\": false,\n \"showTitle\": true,\n \"xAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"yAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"chartOrientation\": \"vertical\",\n \"plotReservedSpacePercent\": 50\n },\n \"requirement\": {\n \"useMaxWidth\": true,\n \"rect_fill\": \"#f9f9f9\",\n \"text_color\": \"#333\",\n \"rect_border_size\": \"0.5px\",\n \"rect_border_color\": \"#bbb\",\n \"rect_min_width\": 200,\n \"rect_min_height\": 200,\n \"fontSize\": 14,\n \"rect_padding\": 10,\n \"line_height\": 20\n },\n \"mindmap\": {\n \"useMaxWidth\": true,\n \"padding\": 10,\n \"maxNodeWidth\": 200,\n \"layoutAlgorithm\": \"cose-bilkent\"\n },\n \"ishikawa\": {\n \"useMaxWidth\": true,\n \"diagramPadding\": 20\n },\n \"kanban\": {\n \"useMaxWidth\": true,\n \"padding\": 8,\n \"sectionWidth\": 200,\n \"ticketBaseUrl\": \"\"\n },\n \"timeline\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"disableMulticolor\": false\n },\n \"gitGraph\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 8,\n \"nodeLabel\": {\n \"width\": 75,\n \"height\": 100,\n \"x\": -25,\n \"y\": 0\n },\n \"mainBranchName\": \"main\",\n \"mainBranchOrder\": 0,\n \"showCommitLabel\": true,\n \"showBranches\": true,\n \"rotateCommitLabel\": true,\n \"parallelCommits\": false,\n \"arrowMarkerAbsolute\": false\n },\n \"c4\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"c4ShapeMargin\": 50,\n \"c4ShapePadding\": 20,\n \"width\": 216,\n \"height\": 60,\n \"boxMargin\": 10,\n \"c4ShapeInRow\": 4,\n \"nextLinePaddingX\": 0,\n \"c4BoundaryInRow\": 2,\n \"personFontSize\": 14,\n \"personFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"personFontWeight\": \"normal\",\n \"external_personFontSize\": 14,\n \"external_personFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_personFontWeight\": \"normal\",\n \"systemFontSize\": 14,\n \"systemFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"systemFontWeight\": \"normal\",\n \"external_systemFontSize\": 14,\n \"external_systemFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_systemFontWeight\": \"normal\",\n \"system_dbFontSize\": 14,\n \"system_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"system_dbFontWeight\": \"normal\",\n \"external_system_dbFontSize\": 14,\n \"external_system_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_system_dbFontWeight\": \"normal\",\n \"system_queueFontSize\": 14,\n \"system_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"system_queueFontWeight\": \"normal\",\n \"external_system_queueFontSize\": 14,\n \"external_system_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_system_queueFontWeight\": \"normal\",\n \"boundaryFontSize\": 14,\n \"boundaryFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"boundaryFontWeight\": \"normal\",\n \"messageFontSize\": 12,\n \"messageFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"messageFontWeight\": \"normal\",\n \"containerFontSize\": 14,\n \"containerFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"containerFontWeight\": \"normal\",\n \"external_containerFontSize\": 14,\n \"external_containerFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_containerFontWeight\": \"normal\",\n \"container_dbFontSize\": 14,\n \"container_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"container_dbFontWeight\": \"normal\",\n \"external_container_dbFontSize\": 14,\n \"external_container_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_container_dbFontWeight\": \"normal\",\n \"container_queueFontSize\": 14,\n \"container_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"container_queueFontWeight\": \"normal\",\n \"external_container_queueFontSize\": 14,\n \"external_container_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_container_queueFontWeight\": \"normal\",\n \"componentFontSize\": 14,\n \"componentFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"componentFontWeight\": \"normal\",\n \"external_componentFontSize\": 14,\n \"external_componentFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_componentFontWeight\": \"normal\",\n \"component_dbFontSize\": 14,\n \"component_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"component_dbFontWeight\": \"normal\",\n \"external_component_dbFontSize\": 14,\n \"external_component_dbFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_component_dbFontWeight\": \"normal\",\n \"component_queueFontSize\": 14,\n \"component_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"component_queueFontWeight\": \"normal\",\n \"external_component_queueFontSize\": 14,\n \"external_component_queueFontFamily\": \"\\\"Open Sans\\\", sans-serif\",\n \"external_component_queueFontWeight\": \"normal\",\n \"wrap\": true,\n \"wrapPadding\": 10,\n \"person_bg_color\": \"#08427B\",\n \"person_border_color\": \"#073B6F\",\n \"external_person_bg_color\": \"#686868\",\n \"external_person_border_color\": \"#8A8A8A\",\n \"system_bg_color\": \"#1168BD\",\n \"system_border_color\": \"#3C7FC0\",\n \"system_db_bg_color\": \"#1168BD\",\n \"system_db_border_color\": \"#3C7FC0\",\n \"system_queue_bg_color\": \"#1168BD\",\n \"system_queue_border_color\": \"#3C7FC0\",\n \"external_system_bg_color\": \"#999999\",\n \"external_system_border_color\": \"#8A8A8A\",\n \"external_system_db_bg_color\": \"#999999\",\n \"external_system_db_border_color\": \"#8A8A8A\",\n \"external_system_queue_bg_color\": \"#999999\",\n \"external_system_queue_border_color\": \"#8A8A8A\",\n \"container_bg_color\": \"#438DD5\",\n \"container_border_color\": \"#3C7FC0\",\n \"container_db_bg_color\": \"#438DD5\",\n \"container_db_border_color\": \"#3C7FC0\",\n \"container_queue_bg_color\": \"#438DD5\",\n \"container_queue_border_color\": \"#3C7FC0\",\n \"external_container_bg_color\": \"#B3B3B3\",\n \"external_container_border_color\": \"#A6A6A6\",\n \"external_container_db_bg_color\": \"#B3B3B3\",\n \"external_container_db_border_color\": \"#A6A6A6\",\n \"external_container_queue_bg_color\": \"#B3B3B3\",\n \"external_container_queue_border_color\": \"#A6A6A6\",\n \"component_bg_color\": \"#85BBF0\",\n \"component_border_color\": \"#78A8D8\",\n \"component_db_bg_color\": \"#85BBF0\",\n \"component_db_border_color\": \"#78A8D8\",\n \"component_queue_bg_color\": \"#85BBF0\",\n \"component_queue_border_color\": \"#78A8D8\",\n \"external_component_bg_color\": \"#CCCCCC\",\n \"external_component_border_color\": \"#BFBFBF\",\n \"external_component_db_bg_color\": \"#CCCCCC\",\n \"external_component_db_border_color\": \"#BFBFBF\",\n \"external_component_queue_bg_color\": \"#CCCCCC\",\n \"external_component_queue_border_color\": \"#BFBFBF\"\n },\n \"sankey\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 400,\n \"linkColor\": \"gradient\",\n \"nodeAlignment\": \"justify\",\n \"showValues\": true,\n \"prefix\": \"\",\n \"suffix\": \"\",\n \"nodeWidth\": 10,\n \"nodePadding\": 12,\n \"labelStyle\": \"legacy\"\n },\n \"block\": {\n \"useMaxWidth\": true,\n \"padding\": 8\n },\n \"packet\": {\n \"useMaxWidth\": true,\n \"rowHeight\": 32,\n \"bitWidth\": 32,\n \"bitsPerRow\": 32,\n \"showBits\": true,\n \"paddingX\": 5,\n \"paddingY\": 5\n },\n \"treeView\": {\n \"useMaxWidth\": true,\n \"rowIndent\": 10,\n \"paddingX\": 5,\n \"paddingY\": 5,\n \"lineThickness\": 1\n },\n \"architecture\": {\n \"useMaxWidth\": true,\n \"padding\": 40,\n \"iconSize\": 80,\n \"fontSize\": 16,\n \"randomize\": false,\n \"nodeSeparation\": 75,\n \"idealEdgeLengthMultiplier\": 1.5,\n \"edgeElasticity\": 0.45,\n \"numIter\": 2500\n },\n \"eventmodeling\": {\n \"useMaxWidth\": true,\n \"padding\": 30,\n \"rowHeight\": 32\n },\n \"radar\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 600,\n \"marginTop\": 50,\n \"marginRight\": 50,\n \"marginBottom\": 50,\n \"marginLeft\": 50,\n \"axisScaleFactor\": 1,\n \"axisLabelFactor\": 1.05,\n \"curveTension\": 0.17\n },\n \"venn\": {\n \"useMaxWidth\": true,\n \"width\": 800,\n \"height\": 450,\n \"padding\": 8,\n \"useDebugLayout\": false\n },\n \"theme\": \"default\",\n \"look\": \"classic\",\n \"handDrawnSeed\": 0,\n \"layout\": \"dagre\",\n \"maxTextSize\": 50000,\n \"maxEdges\": 500,\n \"darkMode\": false,\n \"fontFamily\": \"\\\"trebuchet ms\\\", verdana, arial, sans-serif;\",\n \"logLevel\": 5,\n \"securityLevel\": \"strict\",\n \"startOnLoad\": true,\n \"arrowMarkerAbsolute\": false,\n \"secure\": [\n \"secure\",\n \"securityLevel\",\n \"startOnLoad\",\n \"maxTextSize\",\n \"suppressErrorRendering\",\n \"maxEdges\"\n ],\n \"legacyMathML\": false,\n \"forceLegacyMathML\": false,\n \"deterministicIds\": false,\n \"fontSize\": 16,\n \"markdownAutoWrap\": true,\n \"suppressErrorRendering\": false\n};", "import type { RequiredDeep } from 'type-fest';\n\nimport theme from './themes/index.js';\nimport type { MermaidConfig } from './config.type.js';\n\n// Uses our custom Vite jsonSchemaPlugin to load only the default values from\n// our JSON Schema\n// @ts-expect-error This file is automatically generated via a custom Vite plugin\nimport defaultConfigJson from './schemas/config.schema.yaml?only-defaults=true';\n\n/**\n * Default mermaid configuration options.\n *\n * Please see the Mermaid config JSON Schema for the default JSON values.\n * Non-JSON JS default values are listed in this file, e.g. functions, or\n * `undefined` (explicitly set so that `configKeys` finds them).\n */\nconst config: RequiredDeep = {\n ...defaultConfigJson,\n // Set, even though they're `undefined` so that `configKeys` finds these keys\n // TODO: Should we replace these with `null` so that they can go in the JSON Schema?\n deterministicIDSeed: undefined,\n elk: {\n // mergeEdges is needed here to be considered\n mergeEdges: false,\n nodePlacementStrategy: 'BRANDES_KOEPF',\n forceNodeModelOrder: false,\n considerModelOrder: 'NODES_AND_EDGES',\n },\n themeCSS: undefined,\n\n // add non-JSON default config values\n themeVariables: theme.default.getThemeVariables(),\n sequence: {\n ...defaultConfigJson.sequence,\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n noteFont: function () {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight,\n };\n },\n actorFont: function () {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight,\n };\n },\n },\n class: {\n hideEmptyMembersBox: false,\n hierarchicalNamespaces: true,\n },\n gantt: {\n ...defaultConfigJson.gantt,\n tickInterval: undefined,\n useWidth: undefined, // can probably be removed since `configKeys` already includes this\n },\n c4: {\n ...defaultConfigJson.c4,\n useWidth: undefined,\n personFont: function () {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight,\n };\n },\n flowchart: {\n ...defaultConfigJson.flowchart,\n inheritDir: false, // default to legacy behavior\n },\n\n external_personFont: function () {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight,\n };\n },\n\n systemFont: function () {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight,\n };\n },\n\n external_systemFont: function () {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight,\n };\n },\n\n system_dbFont: function () {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight,\n };\n },\n\n external_system_dbFont: function () {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight,\n };\n },\n\n system_queueFont: function () {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight,\n };\n },\n\n external_system_queueFont: function () {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight,\n };\n },\n\n containerFont: function () {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight,\n };\n },\n\n external_containerFont: function () {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight,\n };\n },\n\n container_dbFont: function () {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight,\n };\n },\n\n external_container_dbFont: function () {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight,\n };\n },\n\n container_queueFont: function () {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight,\n };\n },\n\n external_container_queueFont: function () {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight,\n };\n },\n\n componentFont: function () {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight,\n };\n },\n\n external_componentFont: function () {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight,\n };\n },\n\n component_dbFont: function () {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight,\n };\n },\n\n external_component_dbFont: function () {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight,\n };\n },\n\n component_queueFont: function () {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight,\n };\n },\n\n external_component_queueFont: function () {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight,\n };\n },\n\n boundaryFont: function () {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight,\n };\n },\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n },\n pie: {\n ...defaultConfigJson.pie,\n useWidth: 984,\n },\n xyChart: {\n ...defaultConfigJson.xyChart,\n useWidth: undefined,\n },\n requirement: {\n ...defaultConfigJson.requirement,\n useWidth: undefined,\n },\n packet: {\n ...defaultConfigJson.packet,\n },\n eventmodeling: {\n ...defaultConfigJson.eventmodeling,\n },\n treeView: {\n ...defaultConfigJson.treeView,\n useWidth: undefined,\n },\n radar: {\n ...defaultConfigJson.radar,\n },\n ishikawa: {\n ...defaultConfigJson.ishikawa,\n },\n sankey: {\n ...defaultConfigJson.sankey,\n // Set so that `configKeys` includes this key for sanitizeDirective\n nodeColors: undefined,\n },\n treemap: {\n useMaxWidth: true,\n padding: 10,\n diagramPadding: 8,\n showValues: true,\n nodeWidth: 100,\n nodeHeight: 40,\n borderWidth: 1,\n valueFontSize: 12,\n labelFontSize: 14,\n valueFormat: ',',\n },\n venn: {\n ...defaultConfigJson.venn,\n },\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst keyify = (obj: any, prefix = ''): string[] =>\n Object.keys(obj).reduce((res: string[], el): string[] => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], '')];\n }\n return [...res, prefix + el];\n }, []);\n\nexport const configKeys = new Set(keyify(config, ''));\nexport default config;\n", "import { configKeys } from '../defaultConfig.js';\nimport { log } from '../logger.js';\n\n/**\n * Sanitizes directive objects\n *\n * @param args - Directive's JSON\n */\nexport const sanitizeDirective = (args: any): void => {\n log.debug('sanitizeDirective called with', args);\n\n // Return if not an object\n if (typeof args !== 'object' || args == null) {\n return;\n }\n\n // Sanitize each element if an array\n if (Array.isArray(args)) {\n args.forEach((arg) => sanitizeDirective(arg));\n return;\n }\n\n // Sanitize each key if an object\n for (const key of Object.keys(args)) {\n log.debug('Checking key', key);\n if (\n key.startsWith('__') ||\n key.includes('proto') ||\n key.includes('constr') ||\n !configKeys.has(key) ||\n args[key] == null\n ) {\n log.debug('sanitize deleting key: ', key);\n delete args[key];\n continue;\n }\n\n // Recurse if an object, but handle dictionary-style configs specially\n // (like nodeColors for sankey diagrams) by validating values as CSS colors\n if (typeof args[key] === 'object') {\n if (key === 'nodeColors') {\n // Validate each value is a valid CSS color\n const colorPattern = /^#[\\da-f]{3,8}$|^rgb\\([\\d\\s%,.]+\\)$|^hsl\\([\\d\\s%,.]+\\)$|^[a-z]+$/i;\n for (const colorKey of Object.keys(args[key])) {\n if (typeof args[key][colorKey] !== 'string' || !colorPattern.test(args[key][colorKey])) {\n log.debug('sanitize deleting invalid color:', colorKey, args[key][colorKey]);\n delete args[key][colorKey];\n }\n }\n } else {\n log.debug('sanitizing object', key);\n sanitizeDirective(args[key]);\n }\n continue;\n }\n\n const cssMatchers = ['themeCSS', 'fontFamily', 'altFontFamily'];\n for (const cssKey of cssMatchers) {\n if (key.includes(cssKey)) {\n log.debug('sanitizing css option', key);\n args[key] = sanitizeCss(args[key]);\n }\n }\n }\n\n if (args.themeVariables) {\n for (const k of Object.keys(args.themeVariables)) {\n const val = args.themeVariables[k];\n if (val?.match && !val.match(/^[\\d \"#%(),.;A-Za-z]+$/)) {\n args.themeVariables[k] = '';\n }\n }\n }\n log.debug('After sanitization', args);\n};\n\nexport const sanitizeCss = (str: string): string => {\n let startCnt = 0;\n let endCnt = 0;\n\n for (const element of str) {\n if (startCnt < endCnt) {\n return '{ /* ERROR: Unbalanced CSS */ }';\n }\n if (element === '{') {\n startCnt++;\n } else if (element === '}') {\n endCnt++;\n }\n }\n if (startCnt !== endCnt) {\n return '{ /* ERROR: Unbalanced CSS */ }';\n }\n // Todo add more checks here\n return str;\n};\n", "import assignWithDepth from './assignWithDepth.js';\nimport { log } from './logger.js';\nimport theme from './themes/index.js';\nimport config from './defaultConfig.js';\nimport type { MermaidConfig } from './config.type.js';\nimport { sanitizeDirective } from './utils/sanitizeDirective.js';\n\nexport const defaultConfig: MermaidConfig = Object.freeze(config);\n\n/**\n * Converts a string/boolean into a boolean\n *\n * @param val - String or boolean to convert\n * @returns The result from the input\n */\nexport const evaluate = (val?: string | boolean | null): boolean =>\n val === false || ['false', 'null', '0'].includes(String(val).trim().toLowerCase()) ? false : true;\n\nlet siteConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize: MermaidConfig;\nlet directives: MermaidConfig[] = [];\nlet currentConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg: MermaidConfig, _directives: MermaidConfig[]) => {\n // start with config being the siteConfig\n let cfg: MermaidConfig = assignWithDepth({}, siteCfg);\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n // Join directives\n let sumOfDirectives: MermaidConfig = {};\n for (const d of _directives) {\n sanitize(d);\n // Apply the data from the directive where the overrides the themeVariables\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n }\n\n cfg = assignWithDepth(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n const themeVariables = assignWithDepth(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in theme) {\n cfg.themeVariables = theme[cfg.theme as keyof typeof theme].getThemeVariables(themeVariables);\n }\n }\n\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n};\n\n/**\n * ## setSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function _Default value: At default, will mirror Global Config_\n *\n * @param conf - The base currentConfig to use as siteConfig\n * @returns The new siteConfig\n */\nexport const setSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n siteConfig = assignWithDepth({}, defaultConfig);\n siteConfig = assignWithDepth(siteConfig, conf);\n\n // @ts-ignore: TODO Fix ts errors\n if (conf.theme && theme[conf.theme]) {\n // @ts-ignore: TODO Fix ts errors\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n\nexport const saveConfigFromInitialize = (conf: MermaidConfig): void => {\n configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n siteConfig = assignWithDepth(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n\n return siteConfig;\n};\n/**\n * ## getSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns The siteConfig\n */\nexport const getSiteConfig = (): MermaidConfig => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param conf - The potential currentConfig\n * @returns The currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf: MermaidConfig): MermaidConfig => {\n checkConfig(conf);\n assignWithDepth(currentConfig, conf);\n\n return getConfig();\n};\n\n/**\n * ## getConfig\n *\n * | Function | Description | Type | Return Values |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Avoid calling this function repeatedly. Instead, store the result in a variable and use it, and pass it down to function calls.\n *\n * @returns The currentConfig\n */\nexport const getConfig = (): MermaidConfig => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description | Type | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param options - The potential setConfig parameter\n */\nexport const sanitize = (options: any) => {\n if (!options) {\n return;\n }\n // Checking that options are not in the list of excluded options\n ['secure', ...(siteConfig.secure ?? [])].forEach((key) => {\n if (Object.hasOwn(options, key)) {\n // DO NOT attempt to print options[key] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n log.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n\n // Check that there no attempts of prototype pollution\n Object.keys(options).forEach((key) => {\n if (key.startsWith('__')) {\n delete options[key];\n }\n });\n // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svg's with inline script tags\n Object.keys(options).forEach((key) => {\n if (\n typeof options[key] === 'string' &&\n (options[key].includes('<') ||\n options[key].includes('>') ||\n options[key].includes('url(data:'))\n ) {\n delete options[key];\n }\n if (typeof options[key] === 'object') {\n sanitize(options[key]);\n }\n });\n};\n\n/**\n * Pushes in a directive to the configuration\n *\n * @param directive - The directive to push in\n */\nexport const addDirective = (directive: MermaidConfig) => {\n sanitizeDirective(directive);\n\n // If the directive has a fontFamily, but no themeVariables, add the fontFamily to the themeVariables\n if (directive.fontFamily && !directive.themeVariables?.fontFamily) {\n directive.themeVariables = {\n ...directive.themeVariables,\n fontFamily: directive.fontFamily,\n };\n }\n\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n * ## reset\n *\n * | Function | Description | Type | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\n *\n * ## conf\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- |\n * | conf | base set of values, which currentConfig could be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array |\n *\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\n *\n * @param config - base set of values, which currentConfig could be **reset** to.\n * Defaults to the current siteConfig (e.g returned by {@link getSiteConfig}).\n */\nexport const reset = (config = siteConfig): void => {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(config, directives);\n};\n\nconst ConfigWarning = {\n LAZY_LOAD_DEPRECATED:\n 'The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.',\n FLOWCHART_HTML_LABELS_DEPRECATED:\n 'flowchart.htmlLabels is deprecated. Please use global htmlLabels instead.',\n} as const;\n\ntype ConfigWarningStrings = keyof typeof ConfigWarning;\nconst issuedWarnings: Partial> = {};\nconst issueWarning = (warning: ConfigWarningStrings) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n};\n\nconst checkConfig = (config: MermaidConfig) => {\n if (!config) {\n return;\n }\n // @ts-expect-error Properties were removed in v10. Warning should exist.\n if (config.lazyLoadedDiagrams || config.loadExternalDiagramsAtStartup) {\n issueWarning('LAZY_LOAD_DEPRECATED');\n }\n};\n\nexport const getUserDefinedConfig = (): MermaidConfig => {\n let userConfig: MermaidConfig = {};\n\n if (configFromInitialize) {\n userConfig = assignWithDepth(userConfig, configFromInitialize);\n }\n\n for (const d of directives) {\n userConfig = assignWithDepth(userConfig, d);\n }\n\n return userConfig;\n};\n\n/**\n * Helper function to handle deprecated flowchart.htmlLabels\n * @param config - The configuration object (merged config with defaults)\n * @returns The effective htmlLabels value based on precedence: root flowchart default\n */\nexport const getEffectiveHtmlLabels = (config: MermaidConfig): boolean => {\n // != instead of !== handles null case\n if (config.flowchart?.htmlLabels != undefined) {\n issueWarning('FLOWCHART_HTML_LABELS_DEPRECATED');\n }\n return evaluate(config.htmlLabels ?? config.flowchart?.htmlLabels ?? true);\n};\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x: T): T {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x: T): T {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (\n func: (thisArg: any, ...args: any[]) => T,\n thisArg: any,\n ...args: any[]\n ): T {\n return func.apply(thisArg, args);\n };\n}\n\nif (!construct) {\n construct = function (Func: new (...args: any[]) => T, ...args: any[]): T {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(\n func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n return (thisArg: any, ...args: any[]): T => {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n\n return apply(func, thisArg, args);\n };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(\n Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n set: Record,\n array: readonly any[],\n transformCaseFunc: ReturnType> = stringToLowerCase\n): Record {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n (array as any[])[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array: T[]): Array {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone>(object: T): T {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter>(\n object: T,\n prop: string\n): ReturnType> | (() => null) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(): null {\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n arraySplice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'shadow',\n 'slot',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n] as const);\n\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'enterkeyhint',\n 'exportparts',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'inputmode',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'part',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n] as const);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'exportparts',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inert',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'part',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'slot',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n 'slot',\n] as const);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'mask-type',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnalign',\n 'columnlines',\n 'columnspacing',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lquote',\n 'lspace',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n] as const);\n", "import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n", "/* eslint-disable @typescript-eslint/indent */\n\nimport type {\n TrustedHTML,\n TrustedTypesWindow,\n} from 'trusted-types/lib/index.js';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySplice,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n trustedTypes: TrustedTypePolicyFactory,\n purifyHostElement: HTMLScriptElement\n) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nconst _createHooksMap = function (): HooksMap {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: [],\n };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n DOMPurify.version = VERSION;\n\n DOMPurify.removed = [];\n\n if (\n !window ||\n !window.document ||\n window.document.nodeType !== NODE_TYPE.document ||\n !window.Element\n ) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript: HTMLScriptElement =\n originalDocument.currentScript as HTMLScriptElement;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = _createHooksMap();\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n })\n );\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES: UseProfilesConfig | false = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc: null | Parameters[2] = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG: Config | null = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (\n testValue: unknown\n ): testValue is Function | RegExp {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg: Config = {}): void {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n cfg.ADD_URI_SAFE_ATTR,\n transformCaseFunc\n )\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS),\n cfg.ADD_DATA_URI_TAGS,\n transformCaseFunc\n )\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n ? cfg.USE_PROFILES\n : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS =\n cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS =\n cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || create(null);\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = create(null);\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent\n * leaking across calls when switching from function to array config */\n EXTRA_ELEMENT_HANDLING.tagCheck = null;\n EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element: Element): boolean {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function (node: Node): void {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function (name: string, element: Element): void {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element,\n });\n }\n\n element.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty: string): Document {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function (root: Node): NodeIterator {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null\n );\n };\n\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function (element: Element): boolean {\n return (\n element instanceof HTMLFormElement &&\n (typeof element.nodeName !== 'string' ||\n typeof element.textContent !== 'string' ||\n typeof element.removeChild !== 'function' ||\n !(element.attributes instanceof NamedNodeMap) ||\n typeof element.removeAttribute !== 'function' ||\n typeof element.setAttribute !== 'function' ||\n typeof element.namespaceURI !== 'string' ||\n typeof element.insertBefore !== 'function' ||\n typeof element.hasChildNodes !== 'function')\n );\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function (value: unknown): value is Node {\n return typeof Node === 'function' && value instanceof Node;\n };\n\n function _executeHooks(\n hooks: HookFunction[],\n currentNode: Parameters[0],\n data: Parameters[1]\n ): void {\n arrayForEach(hooks, (hook: T) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode: any): boolean {\n let content = null;\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n SAFE_FOR_XML &&\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w!]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove risky CSS construction leading to mXSS */\n if (\n SAFE_FOR_XML &&\n currentNode.namespaceURI === HTML_NAMESPACE &&\n tagName === 'style' &&\n _isNode(currentNode.firstElementChild)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (\n SAFE_FOR_XML &&\n currentNode.nodeType === NODE_TYPE.comment &&\n regExpTest(/<[/\\w]/g, currentNode.data)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (\n FORBID_TAGS[tagName] ||\n (!(\n EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function &&\n EXTRA_ELEMENT_HANDLING.tagCheck(tagName)\n ) &&\n !ALLOWED_TAGS[tagName])\n ) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (\n lcTag: string,\n lcName: string,\n value: string\n ): boolean {\n /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n if (FORBID_ATTR[lcName]) {\n return false;\n }\n\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Check if ADD_ATTR function allows this attribute */\n } else if (\n EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function &&\n EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)\n ) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName: string): RegExpMatchArray {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode: Element): void {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Work around a security issue with comments inside attributes */\n if (\n SAFE_FOR_XML &&\n regExpTest(\n /((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,\n value\n )\n ) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if ((dirty as Node).nodeName) {\n const tagName = transformCaseFunc((dirty as Node).nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (\n importedNode.nodeType === NODE_TYPE.element &&\n importedNode.nodeName === 'BODY'\n ) {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (SAFE_FOR_TEMPLATES) {\n body.normalize();\n let html = body.innerHTML;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n html = stringReplace(html, expr, ' ');\n });\n body.innerHTML = html;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n DOMPurify.addHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n DOMPurify.removeHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n return index === -1\n ? undefined\n : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n\n return arrayPop(hooks[entryPoint]);\n };\n\n DOMPurify.removeHooks = function (entryPoint: keyof HooksMap) {\n hooks[entryPoint] = [];\n };\n\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n /**\n * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n */\n (root?: WindowLike): DOMPurify;\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n version: string;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n removed: Array;\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n isSupported: boolean;\n\n /**\n * Set the configuration once.\n *\n * @param cfg configuration object\n */\n setConfig(cfg?: Config): void;\n\n /**\n * Removes the configuration.\n */\n clearConfig(): void;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized TrustedHTML.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_TRUSTED_TYPE: true }\n ): TrustedHTML;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized document fragment.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_DOM_FRAGMENT: true }\n ): DocumentFragment;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized string.\n */\n sanitize(dirty: string | Node, cfg?: Config): string;\n\n /**\n * Checks if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n *\n * @param tag Tag name of containing element.\n * @param attr Attribute name.\n * @param value Attribute value.\n * @returns Returns true if `value` is valid. Otherwise, returns false.\n */\n isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction: DocumentFragmentHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction: UponSanitizeElementHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction: UponSanitizeAttributeHook\n ): void;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: BasicHookName,\n hookFunction?: NodeHook\n ): NodeHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: ElementHookName,\n hookFunction?: ElementHook\n ): ElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction?: DocumentFragmentHook\n ): DocumentFragmentHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction?: UponSanitizeElementHook\n ): UponSanitizeElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction?: UponSanitizeAttributeHook\n ): UponSanitizeAttributeHook | undefined;\n\n /**\n * Removes all DOMPurify hooks at a given entryPoint\n *\n * @param entryPoint entry point for the hooks to remove\n */\n removeHooks(entryPoint: HookName): void;\n\n /**\n * Removes all DOMPurify hooks.\n */\n removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n /**\n * The element that was removed.\n */\n element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n /**\n * The attribute that was removed.\n */\n attribute: Attr | null;\n\n /**\n * The element that the attribute was removed.\n */\n from: Node;\n}\n\ntype BasicHookName =\n | 'beforeSanitizeElements'\n | 'afterSanitizeElements'\n | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n | 'beforeSanitizeShadowDOM'\n | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n beforeSanitizeElements: NodeHook[];\n afterSanitizeElements: NodeHook[];\n beforeSanitizeShadowDOM: DocumentFragmentHook[];\n uponSanitizeShadowNode: NodeHook[];\n afterSanitizeShadowDOM: DocumentFragmentHook[];\n beforeSanitizeAttributes: ElementHook[];\n afterSanitizeAttributes: ElementHook[];\n uponSanitizeElement: UponSanitizeElementHook[];\n uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\ntype ArrayElement = T extends Array ? U : never;\n\ntype HookFunction = ArrayElement;\n\nexport type HookName =\n | BasicHookName\n | ElementHookName\n | DocumentFragmentHookName\n | UponSanitizeElementHookName\n | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type ElementHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n this: DOMPurify,\n currentNode: DocumentFragment,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: UponSanitizeElementHookEvent,\n config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: UponSanitizeAttributeHookEvent,\n config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n tagName: string;\n allowedTags: Record;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n attrName: string;\n attrValue: string;\n keepAttr: boolean;\n allowedAttributes: Record;\n forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n typeof globalThis,\n | 'DocumentFragment'\n | 'HTMLTemplateElement'\n | 'Node'\n | 'Element'\n | 'NodeFilter'\n | 'NamedNodeMap'\n | 'HTMLFormElement'\n | 'DOMParser'\n> & {\n document?: Document;\n MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick;\n", "import DOMPurify from 'dompurify';\nimport { evaluate, getEffectiveHtmlLabels } from '../../config.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\n// Remove and ignore br:s\nexport const lineBreakRegex = //gi;\n\n/**\n * Gets the rows of lines in a string\n *\n * @param s - The string to check the lines for\n * @returns The rows in that string\n */\nexport const getRows = (s?: string): string[] => {\n if (!s) {\n return [''];\n }\n const str = breakToPlaceholder(s).replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\nconst setupDompurifyHooksIfNotSetup = (() => {\n let setup = false;\n\n return () => {\n if (!setup) {\n setupDompurifyHooks();\n setup = true;\n }\n };\n})();\n\nfunction setupDompurifyHooks() {\n const TEMPORARY_ATTRIBUTE = 'data-temp-href-target';\n\n DOMPurify.addHook('beforeSanitizeAttributes', (node) => {\n if (node.tagName === 'A' && node.hasAttribute('target')) {\n node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute('target') ?? '');\n }\n });\n\n DOMPurify.addHook('afterSanitizeAttributes', (node) => {\n if (node.tagName === 'A' && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {\n node.setAttribute('target', node.getAttribute(TEMPORARY_ATTRIBUTE) ?? '');\n node.removeAttribute(TEMPORARY_ATTRIBUTE);\n if (node.getAttribute('target') === '_blank') {\n node.setAttribute('rel', 'noopener');\n }\n }\n });\n}\n\n/**\n * Removes script tags from a text\n *\n * @param txt - The text to sanitize\n * @returns The safer text\n */\nexport const removeScript = (txt: string): string => {\n setupDompurifyHooksIfNotSetup();\n\n const sanitizedText = DOMPurify.sanitize(txt);\n\n return sanitizedText;\n};\n\nconst sanitizeMore = (text: string, config: MermaidConfig) => {\n if (getEffectiveHtmlLabels(config)) {\n const level = config.securityLevel;\n if (level === 'antiscript' || level === 'strict' || level === 'sandbox') {\n text = removeScript(text);\n } else if (level !== 'loose') {\n text = breakToPlaceholder(text);\n text = text.replace(//g, '>');\n text = text.replace(/=/g, '=');\n text = placeholderToBreak(text);\n }\n }\n return text;\n};\n\nexport const sanitizeText = (text: string, config: MermaidConfig): string => {\n if (!text) {\n return text;\n }\n if (config.dompurifyConfig) {\n text = DOMPurify.sanitize(sanitizeMore(text, config), config.dompurifyConfig).toString();\n } else {\n text = DOMPurify.sanitize(sanitizeMore(text, config), {\n FORBID_TAGS: ['style'],\n }).toString();\n }\n return text;\n};\n\nexport const sanitizeTextOrArray = (\n a: string | string[] | string[][],\n config: MermaidConfig\n): string | string[] => {\n if (typeof a === 'string') {\n return sanitizeText(a, config);\n }\n // TODO: Refactor to avoid flat.\n return a.flat().map((x: string) => sanitizeText(x, config));\n};\n\n/**\n * Whether or not a text has any line breaks\n *\n * @param text - The text to test\n * @returns Whether or not the text has breaks\n */\nexport const hasBreaks = (text: string): boolean => {\n return lineBreakRegex.test(text);\n};\n\n/**\n * Splits on
tags\n *\n * @param text - Text to split\n * @returns List of lines as strings\n */\nexport const splitBreaks = (text: string): string[] => {\n return text.split(lineBreakRegex);\n};\n\n/**\n * Converts placeholders to line breaks in HTML\n *\n * @param s - HTML with placeholders\n * @returns HTML with breaks instead of placeholders\n */\nconst placeholderToBreak = (s: string): string => {\n return s.replace(/#br#/g, '
');\n};\n\n/**\n * Opposite of `placeholderToBreak`, converts breaks to placeholders\n *\n * @param s - HTML string\n * @returns String with placeholders\n */\nconst breakToPlaceholder = (s: string): string => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\n/**\n * Gets the current URL\n *\n * @param useAbsolute - Whether to return the absolute URL or not\n * @returns The current URL\n */\nexport const getUrl = (useAbsolute: boolean): string => {\n let url = '';\n if (useAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n\n url = CSS.escape(url);\n }\n\n return url;\n};\n\nexport { evaluate };\n\n/**\n * Wrapper around Math.max which removes non-numeric values\n * Returns the larger of a set of supplied numeric expressions.\n * @param values - Numeric expressions to be evaluated\n * @returns The smaller value\n */\nexport const getMax = function (...values: number[]): number {\n const newValues: number[] = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.max(...newValues);\n};\n\n/**\n * Wrapper around Math.min which removes non-numeric values\n * Returns the smaller of a set of supplied numeric expressions.\n * @param values - Numeric expressions to be evaluated\n * @returns The smaller value\n */\nexport const getMin = function (...values: number[]): number {\n const newValues: number[] = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.min(...newValues);\n};\n\n/**\n * Makes generics in typescript syntax\n *\n * @example\n * Array of array of strings in typescript syntax\n *\n * ```js\n * // returns \"Array>\"\n * parseGenericTypes('Array~Array~string~~');\n * ```\n * @param text - The text to convert\n * @returns The converted string\n */\nexport const parseGenericTypes = function (input: string): string {\n const inputSets = input.split(/(,)/);\n const output = [];\n\n for (let i = 0; i < inputSets.length; i++) {\n let thisSet = inputSets[i];\n\n // if the original input included a value such as \"~K, V~\"\", these will be split into\n // an array of [\"~K\",\",\",\" V~\"].\n // This means that on each call of processSet, there will only be 1 ~ present\n // To account for this, if we encounter a \",\", we are checking the previous and next sets in the array\n // to see if they contain matching ~'s\n // in which case we are assuming that they should be rejoined and sent to be processed\n if (thisSet === ',' && i > 0 && i + 1 < inputSets.length) {\n const previousSet = inputSets[i - 1];\n const nextSet = inputSets[i + 1];\n\n if (shouldCombineSets(previousSet, nextSet)) {\n thisSet = previousSet + ',' + nextSet;\n i++; // Move the index forward to skip the next iteration since we're combining sets\n output.pop();\n }\n }\n\n output.push(processSet(thisSet));\n }\n\n return output.join('');\n};\n\nexport const countOccurrence = (string: string, substring: string): number => {\n return Math.max(0, string.split(substring).length - 1);\n};\n\nconst shouldCombineSets = (previousSet: string, nextSet: string): boolean => {\n const prevCount = countOccurrence(previousSet, '~');\n const nextCount = countOccurrence(nextSet, '~');\n\n return prevCount === 1 && nextCount === 1;\n};\n\nconst processSet = (input: string): string => {\n const tildeCount = countOccurrence(input, '~');\n let hasStartingTilde = false;\n\n if (tildeCount <= 1) {\n return input;\n }\n\n // If there is an odd number of tildes, and the input starts with a tilde, we need to remove it and add it back in later\n if (tildeCount % 2 !== 0 && input.startsWith('~')) {\n input = input.substring(1);\n hasStartingTilde = true;\n }\n\n const chars = [...input];\n\n let first = chars.indexOf('~');\n let last = chars.lastIndexOf('~');\n\n while (first !== -1 && last !== -1 && first !== last) {\n chars[first] = '<';\n chars[last] = '>';\n\n first = chars.indexOf('~');\n last = chars.lastIndexOf('~');\n }\n\n // Add the starting tilde back in if we removed it\n if (hasStartingTilde) {\n chars.unshift('~');\n }\n\n return chars.join('');\n};\n\n// TODO: find a better method for detecting support. This interface was added in the MathML 4 spec.\n// Firefox versions between [4,71] (0.47%) and Safari versions between [5,13.4] (0.17%) don't have this interface implemented but MathML is supported\nexport const isMathMLSupported = () => window.MathMLElement !== undefined;\n\nexport const katexRegex = /\\$\\$(.*)\\$\\$/g;\n\n/**\n * Whether or not a text has KaTeX delimiters\n *\n * @param text - The text to test\n * @returns Whether or not the text has KaTeX delimiters\n */\nexport const hasKatex = (text: string): boolean => (text.match(katexRegex)?.length ?? 0) > 0;\n\n/**\n * Computes the minimum dimensions needed to display a div containing MathML\n *\n * @param text - The text to test\n * @param config - Configuration for Mermaid\n * @returns Object containing \\{width, height\\}\n */\nexport const calculateMathMLDimensions = async (text: string, config: MermaidConfig) => {\n const divElem = document.createElement('div');\n divElem.innerHTML = await renderKatexSanitized(text, config);\n divElem.id = 'katex-temp';\n divElem.style.visibility = 'hidden';\n divElem.style.position = 'absolute';\n divElem.style.top = '0';\n const body = document.querySelector('body');\n body?.insertAdjacentElement('beforeend', divElem);\n const dim = { width: divElem.clientWidth, height: divElem.clientHeight };\n divElem.remove();\n return dim;\n};\n\nconst renderKatexUnsanitized = async (text: string, config: MermaidConfig): Promise => {\n if (!hasKatex(text)) {\n return text;\n }\n\n if (!(isMathMLSupported() || config.legacyMathML || config.forceLegacyMathML)) {\n return text.replace(katexRegex, 'MathML is unsupported in this environment.');\n }\n\n if (injected.includeLargeFeatures) {\n const { default: katex } = await import('katex');\n const outputMode =\n config.forceLegacyMathML || (!isMathMLSupported() && config.legacyMathML)\n ? 'htmlAndMathml'\n : 'mathml';\n return text\n .split(lineBreakRegex)\n .map((line) =>\n hasKatex(line)\n ? `

${line}
`\n : `
${line}
`\n )\n .join('')\n .replace(katexRegex, (_, c) =>\n katex\n .renderToString(c, {\n throwOnError: true,\n displayMode: true,\n output: outputMode,\n })\n .replace(/\\n/g, ' ')\n .replace(//g, '')\n );\n }\n\n return text.replace(\n katexRegex,\n 'Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.'\n );\n};\n\n/**\n * Attempts to render and return the KaTeX portion of a string with MathML\n *\n * @param text - The text to test\n * @param config - Configuration for Mermaid\n * @returns String containing MathML if KaTeX is supported, or an error message if it is not and stylesheets aren't present\n */\nexport const renderKatexSanitized = async (\n text: string,\n config: MermaidConfig\n): Promise => {\n return sanitizeText(await renderKatexUnsanitized(text, config), config);\n};\n\nexport default {\n getRows,\n sanitizeText,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n getMax,\n getMin,\n};\n", "import { log } from './logger.js';\n\n/**\n * Applies d3 attributes\n *\n * @param {any} d3Elem D3 Element to apply the attributes onto\n * @param {[string, string][]} attrs Object.keys equivalent format of key to value mapping of attributes\n */\nconst d3Attrs = function (d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\n\n/**\n * Gives attributes for an SVG's size given arguments\n *\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n * @returns {Map<'height' | 'width' | 'style', string>} Attributes for the SVG\n */\nexport const calculateSvgSizeAttrs = function (height, width, useMaxWidth) {\n let attrs = new Map();\n if (useMaxWidth) {\n attrs.set('width', '100%');\n attrs.set('style', `max-width: ${width}px;`);\n } else {\n attrs.set('height', height);\n attrs.set('width', width);\n }\n return attrs;\n};\n\n/**\n * Applies attributes from `calculateSvgSizeAttrs`\n *\n * @param {import('./diagram-api/types.js').SVG} svgElem The SVG Element to configure\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n */\nexport const configureSvgSize = function (svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\n\n// TODO v11: Remove the graph parameter. It is not used.\nexport const setupGraphViewbox = function (graph, svgElem, padding, useMaxWidth) {\n const svgBounds = svgElem.node().getBBox();\n const sWidth = svgBounds.width;\n const sHeight = svgBounds.height;\n\n log.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);\n\n let width = 0;\n let height = 0;\n log.info(`Graph bounds: ${width}x${height}`, graph);\n\n width = sWidth + padding * 2;\n height = sHeight + padding * 2;\n\n log.info(`Calculated bounds: ${width}x${height}`);\n configureSvgSize(svgElem, height, width, useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${\n svgBounds.width + 2 * padding\n } ${svgBounds.height + 2 * padding}`;\n\n svgElem.attr('viewBox', vBox);\n};\n", "import type { FlowChartStyleOptions } from './diagrams/flowchart/styles.js';\nimport { log } from './logger.js';\nimport type { DiagramStylesProvider } from './diagram-api/types.js';\n\nconst themes: Record = {};\n\nexport function cssStyleSheetToString(cssStyleSheet: CSSStyleSheet): string {\n return [...cssStyleSheet.cssRules].map((rule) => rule.cssText).join('\\n');\n}\n\nconst getStyles = (\n type: string,\n userStyles: string,\n options: {\n fontFamily: string;\n fontSize: string;\n textColor: string;\n errorBkgColor: string;\n errorTextColor: string;\n lineColor: string;\n useGradient?: boolean;\n dropShadow?: string;\n primaryBorderColor?: string;\n compositeTitleBackground?: string;\n THEME_COLOR_LIMIT?: number;\n nodeBorder?: string;\n mainBkg?: string;\n strokeWidth?: number;\n theme?: string;\n look?: string;\n } & FlowChartStyleOptions,\n svgId: `${string}`\n) => {\n let diagramStyles = '';\n if (type in themes && themes[type]) {\n // Pass svgId through options so diagram-specific style functions can use it\n // (e.g., for gradient URL references like url(svgId-gradient)).\n diagramStyles = themes[type]({ ...options, svgId });\n } else {\n log.warn(`No theme found for ${type}`);\n }\n return ` & {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n @keyframes edge-animation-frame {\n from {\n stroke-dashoffset: 0;\n }\n }\n @keyframes dash {\n to {\n stroke-dashoffset: 0;\n }\n }\n & .edge-animation-slow {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 50s linear infinite;\n stroke-linecap: round;\n }\n & .edge-animation-fast {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 20s linear infinite;\n stroke-linecap: round;\n }\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${options.errorBkgColor};\n }\n & .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: ${(options.strokeWidth ?? 1) as number}px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n & .edge-thickness-invisible {\n stroke-width: 0;\n fill: none;\n }\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n & .marker.cross {\n stroke: ${options.lineColor};\n }\n\n & svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n & p {\n margin: 0\n }\n\n ${diagramStyles}\n .node .neo-node {\n stroke: ${options.nodeBorder};\n }\n\n [data-look=\"neo\"].node rect, [data-look=\"neo\"].cluster rect, [data-look=\"neo\"].node polygon {\n stroke: ${options.useGradient ? 'url(' + svgId + '-gradient)' : options.nodeBorder};\n filter: ${options.dropShadow ? options.dropShadow.replace('url(#drop-shadow)', `url(${svgId}-drop-shadow)`) : 'none'};\n }\n\n\n [data-look=\"neo\"].node path {\n stroke: ${options.useGradient ? 'url(' + svgId + '-gradient)' : options.nodeBorder};\n stroke-width: ${(options.strokeWidth ?? 1) as number}px;\n }\n\n [data-look=\"neo\"].node .outer-path {\n filter: ${options.dropShadow ? options.dropShadow.replace('url(#drop-shadow)', `url(${svgId}-drop-shadow)`) : 'none'};\n }\n\n [data-look=\"neo\"].node .neo-line path {\n stroke: ${options.nodeBorder};\n filter: none;\n }\n\n [data-look=\"neo\"].node circle{\n stroke: ${options.useGradient ? 'url(' + svgId + '-gradient)' : options.nodeBorder};\n filter: ${options.dropShadow ? options.dropShadow.replace('url(#drop-shadow)', `url(${svgId}-drop-shadow)`) : 'none'};\n }\n\n [data-look=\"neo\"].node circle .state-start{\n fill: #000000;\n }\n\n [data-look=\"neo\"].icon-shape .icon {\n fill: ${options.useGradient ? 'url(' + svgId + '-gradient)' : options.nodeBorder};\n filter: ${options.dropShadow ? options.dropShadow.replace('url(#drop-shadow)', `url(${svgId}-drop-shadow)`) : 'none'};\n }\n\n [data-look=\"neo\"].icon-shape .icon-neo path {\n stroke: ${options.useGradient ? 'url(' + svgId + '-gradient)' : options.nodeBorder};\n filter: ${options.dropShadow ? options.dropShadow.replace('url(#drop-shadow)', `url(${svgId}-drop-shadow)`) : 'none'};\n }\n\n ${userStyles}\n`;\n};\n\nexport const addStylesForDiagram = (type: string, diagramTheme?: DiagramStylesProvider): void => {\n if (diagramTheme !== undefined) {\n themes[type] = diagramTheme;\n }\n};\n\nexport default getStyles;\n", "import { sanitizeText as _sanitizeText } from './common.js';\nimport { getConfig } from '../../config.js';\n\nlet accTitle = '';\nlet diagramTitle = '';\nlet accDescription = '';\n\nconst sanitizeText = (txt: string): string => _sanitizeText(txt, getConfig());\n\nexport const clear = (): void => {\n accTitle = '';\n accDescription = '';\n diagramTitle = '';\n};\n\nexport const setAccTitle = (txt: string): void => {\n accTitle = sanitizeText(txt).replace(/^\\s+/g, '');\n};\n\nexport const getAccTitle = (): string => accTitle;\n\nexport const setAccDescription = (txt: string): void => {\n accDescription = sanitizeText(txt).replace(/\\n\\s+/g, '\\n');\n};\n\nexport const getAccDescription = (): string => accDescription;\n\nexport const setDiagramTitle = (txt: string): void => {\n diagramTitle = sanitizeText(txt);\n};\n\nexport const getDiagramTitle = (): string => diagramTitle;\n", "import { addDetector } from './detectType.js';\nimport { log as _log, setLogLevel as _setLogLevel } from '../logger.js';\nimport {\n getConfig as _getConfig,\n setConfig as _setConfig,\n defaultConfig as _defaultConfig,\n setSiteConfig as _setSiteConfig,\n} from '../config.js';\nimport { sanitizeText as _sanitizeText } from '../diagrams/common/common.js';\nimport { setupGraphViewbox as _setupGraphViewbox } from '../setupGraphViewbox.js';\nimport { addStylesForDiagram } from '../styles.js';\nimport type { DiagramDefinition, DiagramDetector } from './types.js';\nimport * as _commonDb from '../diagrams/common/commonDb.js';\n\n/*\n Packaging and exposing resources for external diagrams so that they can import\n diagramAPI and have access to select parts of mermaid common code required to\n create diagrams working like the internal diagrams.\n*/\nexport const log = _log;\nexport const setLogLevel = _setLogLevel;\nexport const getConfig = _getConfig;\nexport const setConfig = _setConfig;\nexport const defaultConfig = _defaultConfig;\nexport const setSiteConfig = _setSiteConfig;\nexport const sanitizeText = (text: string) => _sanitizeText(text, getConfig());\nexport const setupGraphViewbox = _setupGraphViewbox;\nexport const getCommonDb = () => {\n return _commonDb;\n};\n\nconst diagrams: Record = {};\nexport type Detectors = Record;\n\n/**\n * Registers the given diagram with Mermaid.\n *\n * Can be used for third-party custom diagrams.\n *\n * @param id - A unique ID for the given diagram.\n * @param diagram - The diagram definition.\n * @param detector - Function that returns `true` if a given mermaid text is this diagram definition.\n */\nexport const registerDiagram = (\n id: string,\n diagram: DiagramDefinition,\n detector?: DiagramDetector\n) => {\n if (diagrams[id]) {\n log.warn(`Diagram with id ${id} already registered. Overwriting.`);\n }\n diagrams[id] = diagram;\n if (detector) {\n addDetector(id, detector);\n }\n addStylesForDiagram(id, diagram.styles);\n\n diagram.injectUtils?.(\n log,\n setLogLevel,\n getConfig,\n sanitizeText,\n setupGraphViewbox,\n getCommonDb(),\n () => {\n // parseDirective is removed in https://github.com/mermaid-js/mermaid/pull/4759.\n // This is a no-op for legacy support.\n }\n );\n};\n\nexport const getDiagram = (name: string): DiagramDefinition => {\n if (name in diagrams) {\n return diagrams[name];\n }\n throw new DiagramNotFoundError(name);\n};\n\nexport class DiagramNotFoundError extends Error {\n constructor(name: string) {\n super(`Diagram ${name} not found.`);\n }\n}\n"], + "mappings": "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AAmBA,EACrB,CACF,EC9CA,IAAOC,EAAQ,CACb,UAAa,CACX,YAAe,GACf,eAAkB,GAClB,oBAAuB,CACrB,IAAO,EACP,OAAU,CACZ,EACA,eAAkB,EAClB,WAAc,KACd,YAAe,GACf,YAAe,GACf,MAAS,QACT,QAAW,GACX,gBAAmB,gBACnB,cAAiB,IACjB,WAAc,EAChB,EACA,SAAY,CACV,YAAe,GACf,uBAA0B,GAC1B,gBAAmB,GACnB,eAAkB,GAClB,eAAkB,GAClB,YAAe,GACf,MAAS,IACT,OAAU,GACV,UAAa,GACb,cAAiB,EACjB,WAAc,GACd,cAAiB,GACjB,aAAgB,SAChB,aAAgB,GAChB,WAAc,GACd,gBAAmB,EACnB,YAAe,GACf,oBAAuB,GACvB,cAAiB,GACjB,gBAAmB,0BACnB,gBAAmB,IACnB,aAAgB,GAChB,eAAkB,6CAClB,eAAkB,IAClB,UAAa,SACb,gBAAmB,GACnB,kBAAqB,6CACrB,kBAAqB,IACrB,KAAQ,GACR,YAAe,GACf,cAAiB,GACjB,eAAkB,EACpB,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,UAAa,GACb,OAAU,EACV,WAAc,GACd,aAAgB,GAChB,YAAe,GACf,qBAAwB,GACxB,SAAY,GACZ,gBAAmB,GACnB,oBAAuB,EACvB,WAAc,WACd,QAAW,GACX,YAAe,GACf,QAAW,QACb,EACA,QAAW,CACT,YAAe,GACf,eAAkB,GAClB,eAAkB,GAClB,WAAc,IACd,cAAiB,IACjB,MAAS,IACT,OAAU,GACV,UAAa,GACb,cAAiB,EACjB,WAAc,GACd,cAAiB,GACjB,aAAgB,SAChB,gBAAmB,EACnB,YAAe,GACf,aAAgB,GAChB,eAAkB,0BAClB,WAAc,GACd,gBAAmB,GACnB,cAAiB,KACjB,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,SACF,EACA,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,eAAkB,CAChB,MACF,EACA,WAAc,GACd,gBAAmB,6CACnB,cAAiB,KACnB,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,oBA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CA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KAAK,CACG,EAEG+E,GAAM/E,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OAAO,CACC,EAEGgF,GAAahF,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAAc,CACN,EAMGiF,GAAgBjF,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAAK,CACG,EAEGkF,GAASlF,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aAAa,CACL,EAIGmF,GAAmBnF,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAAM,CACE,EAEGoF,GAAOpF,EAAO,CAAC,OAAO,CAAU,EC1RhC8E,GAAO9E,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,MAAM,CACE,EAEG+E,GAAM/E,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,YAAY,CACJ,EAEGkF,GAASlF,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,OAAO,CACR,EAEYqF,GAAMrF,EAAO,CACxB,aACA,SACA,cACA,YACA,aAAa,CACL,ECrXGsF,GAAgBrF,EAAK,2BAA2B,EAChDsF,GAAWtF,EAAK,uBAAuB,EACvCuF,GAAcvF,EAAK,eAAe,EAClCwF,GAAYxF,EAAK,8BAA8B,EAC/CyF,GAAYzF,EAAK,gBAAgB,EACjC0F,GAAiB1F,EAC5B,oGAEW2F,GAAoB3F,EAAK,uBAAuB,EAChD4F,GAAkB5F,EAC7B,+DAEW6F,GAAe7F,EAAK,SAAS,EAC7B8F,GAAiB9F,EAAK,0BAA0B,uMCsBvD+F,GAAY,CAChBlC,QAAS,EAETsB,KAAM,EAINa,uBAAwB,EACxBC,QAAS,EACTC,SAAU,CAAA,EAMNC,GAAY9F,EAAA,UAAA,CAChB,OAAO,OAAO+F,OAAW,IAAc,KAAOA,MAChD,EAFkB,aAYZC,GAA4BhG,EAAA,SAChCiG,EACAC,EAAoC,CAEpC,GACE,OAAOD,GAAiB,UACxB,OAAOA,EAAaE,cAAiB,WAErC,OAAO,KAMT,IAAIC,EAAS,KACPC,EAAY,wBACdH,GAAqBA,EAAkBI,aAAaD,CAAS,IAC/DD,EAASF,EAAkBK,aAAaF,CAAS,GAGnD,IAAMG,EAAa,aAAeJ,EAAS,IAAMA,EAAS,IAE1D,GAAI,CACF,OAAOH,EAAaE,aAAaK,EAAY,CAC3CC,WAAWjC,EAAI,CACb,OAAOA,CACT,EACAkC,gBAAgBC,EAAS,CACvB,OAAOA,CACT,CACD,CAAA,CACH,MAAY,CAIVC,eAAQC,KACN,uBAAyBL,EAAa,wBAAwB,EAEzD,IACT,CACF,EAxCkC,6BA0C5BM,GAAkB9G,EAAA,UAAA,CACtB,MAAO,CACL+G,wBAAyB,CAAA,EACzBC,sBAAuB,CAAA,EACvBC,uBAAwB,CAAA,EACxBC,yBAA0B,CAAA,EAC1BC,uBAAwB,CAAA,EACxBC,wBAAyB,CAAA,EACzBC,sBAAuB,CAAA,EACvBC,oBAAqB,CAAA,EACrBC,uBAAwB,CAAA,EAE5B,EAZwB,mBAcxB,SAASC,IAAgD,CAAA,IAAhCzB,EAAA1F,UAAAC,OAAA,GAAAD,UAAA,CAAA,IAAAoH,OAAApH,UAAA,CAAA,EAAqByF,GAAS,EAC/C4B,EAAwBC,EAAAA,GAAqBH,GAAgBG,CAAI,EAAzCA,aAM9B,GAJAD,EAAUE,QAAUC,QAEpBH,EAAUI,QAAU,CAAA,EAGlB,CAAC/B,GACD,CAACA,EAAOF,UACRE,EAAOF,SAASkC,WAAarC,GAAUG,UACvC,CAACE,EAAOiC,QAIRN,OAAAA,EAAUO,YAAc,GAEjBP,EAGT,GAAI,CAAE7B,SAAAA,CAAQ,EAAKE,EAEbmC,EAAmBrC,EACnBsC,EACJD,EAAiBC,cACb,CACJC,iBAAAA,EACAC,oBAAAA,EACAC,KAAAA,EACAN,QAAAA,EACAO,WAAAA,EACAC,aAAAA,EAAezC,EAAOyC,cAAiBzC,EAAe0C,gBACtDC,gBAAAA,GACAC,UAAAA,GACA1C,aAAAA,EAAY,EACVF,EAEE6C,GAAmBZ,EAAQjH,UAE3B8H,GAAY1E,GAAayE,GAAkB,WAAW,EACtDE,GAAS3E,GAAayE,GAAkB,QAAQ,EAChDG,GAAiB5E,GAAayE,GAAkB,aAAa,EAC7DI,GAAgB7E,GAAayE,GAAkB,YAAY,EAC3DK,GAAgB9E,GAAayE,GAAkB,YAAY,EAQjE,GAAI,OAAOP,GAAwB,WAAY,CAC7C,IAAMa,EAAWrD,EAASsD,cAAc,UAAU,EAC9CD,EAASE,SAAWF,EAASE,QAAQC,gBACvCxD,EAAWqD,EAASE,QAAQC,cAEhC,CAEA,IAAIC,EACAC,GAAY,GAEV,CACJC,eAAAA,GACAC,mBAAAA,GACAC,uBAAAA,GACAC,qBAAAA,EAAoB,EAClB9D,EACE,CAAE+D,WAAAA,EAAU,EAAK1B,EAEnB2B,EAAQ/C,GAAe,EAK3BY,EAAUO,YACR,OAAO7I,IAAY,YACnB,OAAO6J,IAAkB,YACzBO,IACAA,GAAeM,qBAAuBrC,OAExC,GAAM,CACJzC,cAAAA,GACAC,SAAAA,GACAC,YAAAA,GACAC,UAAAA,GACAC,UAAAA,GACAE,kBAAAA,GACAC,gBAAAA,GACAE,eAAAA,EAAc,EACZsE,GAEA,CAAE1E,eAAAA,EAAc,EAAK0E,GAQrBC,EAAe,KACbC,GAAuB9G,EAAS,CAAA,EAAI,CACxC,GAAG+G,GACH,GAAGA,GACH,GAAGA,GACH,GAAGA,GACH,GAAGA,EAAS,CACb,EAGGC,EAAe,KACbC,GAAuBjH,EAAS,CAAA,EAAI,CACxC,GAAGkH,GACH,GAAGA,GACH,GAAGA,GACH,GAAGA,EAAS,CACb,EAQGC,EAA0B7K,OAAOE,KACnCC,GAAO,KAAM,CACX2K,aAAc,CACZC,SAAU,GACVC,aAAc,GACdC,WAAY,GACZ1G,MAAO,MAET2G,mBAAoB,CAClBH,SAAU,GACVC,aAAc,GACdC,WAAY,GACZ1G,MAAO,MAET4G,+BAAgC,CAC9BJ,SAAU,GACVC,aAAc,GACdC,WAAY,GACZ1G,MAAO,EACR,CACF,CAAA,CAAC,EAIA6G,GAAc,KAGdC,GAAc,KAGZC,GAAyBtL,OAAOE,KACpCC,GAAO,KAAM,CACXoL,SAAU,CACRR,SAAU,GACVC,aAAc,GACdC,WAAY,GACZ1G,MAAO,MAETiH,eAAgB,CACdT,SAAU,GACVC,aAAc,GACdC,WAAY,GACZ1G,MAAO,IACR,CACF,CAAA,CAAC,EAIAkH,GAAkB,GAGlBC,GAAkB,GAGlBC,GAA0B,GAI1BC,GAA2B,GAK3BC,GAAqB,GAKrBC,GAAe,GAGfC,GAAiB,GAGjBC,GAAa,GAIbC,GAAa,GAMbC,GAAa,GAIbC,GAAsB,GAItBC,GAAsB,GAKtBC,GAAe,GAefC,GAAuB,GACrBC,GAA8B,gBAGhCC,GAAe,GAIfC,GAAW,GAGXC,GAA0C,CAAA,EAG1CC,EAAkB,KAChBC,GAA0BlJ,EAAS,CAAA,EAAI,CAC3C,iBACA,QACA,WACA,OACA,gBACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,QACA,UACA,WACA,WACA,YACA,SACA,QACA,MACA,WACA,QACA,QACA,QACA,KAAK,CACN,EAGGmJ,GAAgB,KACdC,GAAwBpJ,EAAS,CAAA,EAAI,CACzC,QACA,QACA,MACA,SACA,QACA,OAAO,CACR,EAGGqJ,GAAsB,KACpBC,GAA8BtJ,EAAS,CAAA,EAAI,CAC/C,MACA,QACA,MACA,KACA,QACA,OACA,UACA,cACA,OACA,UACA,QACA,QACA,QACA,OAAO,CACR,EAEKuJ,GAAmB,qCACnBC,GAAgB,6BAChBC,EAAiB,+BAEnBC,GAAYD,EACZE,GAAiB,GAGjBC,GAAqB,KACnBC,GAA6B7J,EACjC,CAAA,EACA,CAACuJ,GAAkBC,GAAeC,CAAc,EAChDhL,EAAc,EAGZqL,GAAiC9J,EAAS,CAAA,EAAI,CAChD,KACA,KACA,KACA,KACA,OAAO,CACR,EAEG+J,GAA0B/J,EAAS,CAAA,EAAI,CAAC,gBAAgB,CAAC,EAMvDgK,GAA+BhK,EAAS,CAAA,EAAI,CAChD,QACA,QACA,OACA,IACA,QAAQ,CACT,EAGGiK,GAAmD,KACjDC,GAA+B,CAAC,wBAAyB,WAAW,EACpEC,GAA4B,YAC9BhK,EAA2D,KAG3DiK,GAAwB,KAKtBC,GAAc3H,EAASsD,cAAc,MAAM,EAE3CsE,GAAoBzN,EAAA,SACxB0N,EAAkB,CAElB,OAAOA,aAAqBjL,QAAUiL,aAAqBC,QAC7D,EAJ0B,qBAYpBC,GAAe5N,EAAA,UAA0B,CAAA,IAAhB6N,EAAAxN,UAAAC,OAAA,GAAAD,UAAA,CAAA,IAAAoH,OAAApH,UAAA,CAAA,EAAc,CAAA,EAC3C,GAAIkN,EAAAA,IAAUA,KAAWM,GAkNzB,KA7MI,CAACA,GAAO,OAAOA,GAAQ,YACzBA,EAAM,CAAA,GAIRA,EAAMjK,EAAMiK,CAAG,EAEfT,GAEEC,GAA6BlL,QAAQ0L,EAAIT,iBAAiB,IAAM,GAC5DE,GACAO,EAAIT,kBAGV9J,EACE8J,KAAsB,wBAClBxL,GACAH,GAGNuI,EAAe1H,EAAqBuL,EAAK,cAAc,EACnD1K,EAAS,CAAA,EAAI0K,EAAI7D,aAAc1G,CAAiB,EAChD2G,GACJE,EAAe7H,EAAqBuL,EAAK,cAAc,EACnD1K,EAAS,CAAA,EAAI0K,EAAI1D,aAAc7G,CAAiB,EAChD8G,GACJ2C,GAAqBzK,EAAqBuL,EAAK,oBAAoB,EAC/D1K,EAAS,CAAA,EAAI0K,EAAId,mBAAoBnL,EAAc,EACnDoL,GACJR,GAAsBlK,EAAqBuL,EAAK,mBAAmB,EAC/D1K,EACES,EAAM6I,EAA2B,EACjCoB,EAAIC,kBACJxK,CAAiB,EAEnBmJ,GACJH,GAAgBhK,EAAqBuL,EAAK,mBAAmB,EACzD1K,EACES,EAAM2I,EAAqB,EAC3BsB,EAAIE,kBACJzK,CAAiB,EAEnBiJ,GACJH,EAAkB9J,EAAqBuL,EAAK,iBAAiB,EACzD1K,EAAS,CAAA,EAAI0K,EAAIzB,gBAAiB9I,CAAiB,EACnD+I,GACJxB,GAAcvI,EAAqBuL,EAAK,aAAa,EACjD1K,EAAS,CAAA,EAAI0K,EAAIhD,YAAavH,CAAiB,EAC/CM,EAAM,CAAA,CAAE,EACZkH,GAAcxI,EAAqBuL,EAAK,aAAa,EACjD1K,EAAS,CAAA,EAAI0K,EAAI/C,YAAaxH,CAAiB,EAC/CM,EAAM,CAAA,CAAE,EACZuI,GAAe7J,EAAqBuL,EAAK,cAAc,EACnDA,EAAI1B,aACJ,GACJjB,GAAkB2C,EAAI3C,kBAAoB,GAC1CC,GAAkB0C,EAAI1C,kBAAoB,GAC1CC,GAA0ByC,EAAIzC,yBAA2B,GACzDC,GAA2BwC,EAAIxC,2BAA6B,GAC5DC,GAAqBuC,EAAIvC,oBAAsB,GAC/CC,GAAesC,EAAItC,eAAiB,GACpCC,GAAiBqC,EAAIrC,gBAAkB,GACvCG,GAAakC,EAAIlC,YAAc,GAC/BC,GAAsBiC,EAAIjC,qBAAuB,GACjDC,GAAsBgC,EAAIhC,qBAAuB,GACjDH,GAAamC,EAAInC,YAAc,GAC/BI,GAAe+B,EAAI/B,eAAiB,GACpCC,GAAuB8B,EAAI9B,sBAAwB,GACnDE,GAAe4B,EAAI5B,eAAiB,GACpCC,GAAW2B,EAAI3B,UAAY,GAC3B7G,GAAiBwI,EAAIG,oBAAsBjE,GAC3C8C,GAAYgB,EAAIhB,WAAaD,EAC7BK,GACEY,EAAIZ,gCAAkCA,GACxCC,GACEW,EAAIX,yBAA2BA,GAEjC5C,EAA0BuD,EAAIvD,yBAA2B1K,GAAO,IAAI,EAElEiO,EAAIvD,yBACJmD,GAAkBI,EAAIvD,wBAAwBC,YAAY,IAE1DD,EAAwBC,aACtBsD,EAAIvD,wBAAwBC,cAI9BsD,EAAIvD,yBACJmD,GAAkBI,EAAIvD,wBAAwBK,kBAAkB,IAEhEL,EAAwBK,mBACtBkD,EAAIvD,wBAAwBK,oBAI9BkD,EAAIvD,yBACJ,OAAOuD,EAAIvD,wBAAwBM,gCACjC,YAEFN,EAAwBM,+BACtBiD,EAAIvD,wBAAwBM,gCAG5BU,KACFH,GAAkB,IAGhBS,KACFD,GAAa,IAIXQ,KACFnC,EAAe7G,EAAS,CAAA,EAAI+G,EAAS,EACrCC,EAAevK,GAAO,IAAI,EACtBuM,GAAa3H,OAAS,KACxBrB,EAAS6G,EAAcE,EAAS,EAChC/G,EAASgH,EAAcE,EAAU,GAG/B8B,GAAa1H,MAAQ,KACvBtB,EAAS6G,EAAcE,EAAQ,EAC/B/G,EAASgH,EAAcE,EAAS,EAChClH,EAASgH,EAAcE,EAAS,GAG9B8B,GAAazH,aAAe,KAC9BvB,EAAS6G,EAAcE,EAAe,EACtC/G,EAASgH,EAAcE,EAAS,EAChClH,EAASgH,EAAcE,EAAS,GAG9B8B,GAAavH,SAAW,KAC1BzB,EAAS6G,EAAcE,EAAW,EAClC/G,EAASgH,EAAcE,EAAY,EACnClH,EAASgH,EAAcE,EAAS,IAMpCU,GAAuBC,SAAW,KAClCD,GAAuBE,eAAiB,KAGpC4C,EAAII,WACF,OAAOJ,EAAII,UAAa,WAC1BlD,GAAuBC,SAAW6C,EAAII,UAElCjE,IAAiBC,KACnBD,EAAepG,EAAMoG,CAAY,GAGnC7G,EAAS6G,EAAc6D,EAAII,SAAU3K,CAAiB,IAItDuK,EAAIK,WACF,OAAOL,EAAIK,UAAa,WAC1BnD,GAAuBE,eAAiB4C,EAAIK,UAExC/D,IAAiBC,KACnBD,EAAevG,EAAMuG,CAAY,GAGnChH,EAASgH,EAAc0D,EAAIK,SAAU5K,CAAiB,IAItDuK,EAAIC,mBACN3K,EAASqJ,GAAqBqB,EAAIC,kBAAmBxK,CAAiB,EAGpEuK,EAAIzB,kBACFA,IAAoBC,KACtBD,EAAkBxI,EAAMwI,CAAe,GAGzCjJ,EAASiJ,EAAiByB,EAAIzB,gBAAiB9I,CAAiB,GAG9DuK,EAAIM,sBACF/B,IAAoBC,KACtBD,EAAkBxI,EAAMwI,CAAe,GAGzCjJ,EAASiJ,EAAiByB,EAAIM,oBAAqB7K,CAAiB,GAIlE2I,KACFjC,EAAa,OAAO,EAAI,IAItBwB,IACFrI,EAAS6G,EAAc,CAAC,OAAQ,OAAQ,MAAM,CAAC,EAI7CA,EAAaoE,QACfjL,EAAS6G,EAAc,CAAC,OAAO,CAAC,EAChC,OAAOa,GAAYwD,OAGjBR,EAAIS,qBAAsB,CAC5B,GAAI,OAAOT,EAAIS,qBAAqB7H,YAAe,WACjD,MAAM9D,GACJ,6EAA6E,EAIjF,GAAI,OAAOkL,EAAIS,qBAAqB5H,iBAAoB,WACtD,MAAM/D,GACJ,kFAAkF,EAKtF2G,EAAqBuE,EAAIS,qBAGzB/E,GAAYD,EAAmB7C,WAAW,EAAE,CAC9C,MAEM6C,IAAuB7B,SACzB6B,EAAqBtD,GACnBC,GACAkC,CAAa,GAKbmB,IAAuB,MAAQ,OAAOC,IAAc,WACtDA,GAAYD,EAAmB7C,WAAW,EAAE,GAM5C/G,GACFA,EAAOmO,CAAG,EAGZN,GAASM,EACX,EA3PqB,gBAgQfU,GAAepL,EAAS,CAAA,EAAI,CAChC,GAAG+G,GACH,GAAGA,GACH,GAAGA,EAAkB,CACtB,EACKsE,GAAkBrL,EAAS,CAAA,EAAI,CACnC,GAAG+G,GACH,GAAGA,EAAqB,CACzB,EAQKuE,GAAuBzO,EAAA,SAAUwD,EAAgB,CACrD,IAAIkL,EAASzF,GAAczF,CAAO,GAI9B,CAACkL,GAAU,CAACA,EAAOC,WACrBD,EAAS,CACPE,aAAc/B,GACd8B,QAAS,aAIb,IAAMA,EAAUlN,GAAkB+B,EAAQmL,OAAO,EAC3CE,EAAgBpN,GAAkBiN,EAAOC,OAAO,EAEtD,OAAK5B,GAAmBvJ,EAAQoL,YAAY,EAIxCpL,EAAQoL,eAAiBjC,GAIvB+B,EAAOE,eAAiBhC,EACnB+B,IAAY,MAMjBD,EAAOE,eAAiBlC,GAExBiC,IAAY,QACXE,IAAkB,kBACjB5B,GAA+B4B,CAAa,GAM3CC,EAAQP,GAAaI,CAAO,EAGjCnL,EAAQoL,eAAiBlC,GAIvBgC,EAAOE,eAAiBhC,EACnB+B,IAAY,OAKjBD,EAAOE,eAAiBjC,GACnBgC,IAAY,QAAUzB,GAAwB2B,CAAa,EAK7DC,EAAQN,GAAgBG,CAAO,EAGpCnL,EAAQoL,eAAiBhC,EAKzB8B,EAAOE,eAAiBjC,IACxB,CAACO,GAAwB2B,CAAa,GAMtCH,EAAOE,eAAiBlC,IACxB,CAACO,GAA+B4B,CAAa,EAEtC,GAMP,CAACL,GAAgBG,CAAO,IACvBxB,GAA6BwB,CAAO,GAAK,CAACJ,GAAaI,CAAO,GAMjEvB,GAAAA,KAAsB,yBACtBL,GAAmBvJ,EAAQoL,YAAY,GA3EhC,EAqFX,EArG6B,wBA4GvBG,EAAe/O,EAAA,SAAUgP,EAAU,CACvC3N,GAAUqG,EAAUI,QAAS,CAAEtE,QAASwL,CAAI,CAAE,EAE9C,GAAI,CAEF/F,GAAc+F,CAAI,EAAEC,YAAYD,CAAI,CACtC,MAAY,CACVlG,GAAOkG,CAAI,CACb,CACF,EATqB,gBAiBfE,GAAmBlP,EAAA,SAAUmP,EAAc3L,EAAgB,CAC/D,GAAI,CACFnC,GAAUqG,EAAUI,QAAS,CAC3BsH,UAAW5L,EAAQ6L,iBAAiBF,CAAI,EACxCG,KAAM9L,CACP,CAAA,CACH,MAAY,CACVnC,GAAUqG,EAAUI,QAAS,CAC3BsH,UAAW,KACXE,KAAM9L,CACP,CAAA,CACH,CAKA,GAHAA,EAAQ+L,gBAAgBJ,CAAI,EAGxBA,IAAS,KACX,GAAIxD,IAAcC,GAChB,GAAI,CACFmD,EAAavL,CAAO,CACtB,MAAY,CAAC,KAEb,IAAI,CACFA,EAAQgM,aAAaL,EAAM,EAAE,CAC/B,MAAY,CAAC,CAGnB,EA3ByB,oBAmCnBM,GAAgBzP,EAAA,SAAU0P,EAAa,CAE3C,IAAIC,EAAM,KACNC,EAAoB,KAExB,GAAIlE,GACFgE,EAAQ,oBAAsBA,MACzB,CAEL,IAAMG,EAAU/N,GAAY4N,EAAO,aAAa,EAChDE,EAAoBC,GAAWA,EAAQ,CAAC,CAC1C,CAGEzC,KAAsB,yBACtBP,KAAcD,IAGd8C,EACE,iEACAA,EACA,kBAGJ,IAAMI,EAAexG,EACjBA,EAAmB7C,WAAWiJ,CAAK,EACnCA,EAKJ,GAAI7C,KAAcD,EAChB,GAAI,CACF+C,EAAM,IAAIhH,GAAS,EAAGoH,gBAAgBD,EAAc1C,EAAiB,CACvE,MAAY,CAAC,CAIf,GAAI,CAACuC,GAAO,CAACA,EAAIK,gBAAiB,CAChCL,EAAMnG,GAAeyG,eAAepD,GAAW,WAAY,IAAI,EAC/D,GAAI,CACF8C,EAAIK,gBAAgBE,UAAYpD,GAC5BvD,GACAuG,CACN,MAAY,CACV,CAEJ,CAEA,IAAMK,EAAOR,EAAIQ,MAAQR,EAAIK,gBAU7B,OARIN,GAASE,GACXO,EAAKC,aACHvK,EAASwK,eAAeT,CAAiB,EACzCO,EAAKG,WAAW,CAAC,GAAK,IAAI,EAK1BzD,KAAcD,EACTjD,GAAqB4G,KAC1BZ,EACAnE,GAAiB,OAAS,MAAM,EAChC,CAAC,EAGEA,GAAiBmE,EAAIK,gBAAkBG,CAChD,EAnEsB,iBA2EhBK,GAAsBxQ,EAAA,SAAU2H,EAAU,CAC9C,OAAO8B,GAAmB8G,KACxB5I,EAAK0B,eAAiB1B,EACtBA,EAEAY,EAAWkI,aACTlI,EAAWmI,aACXnI,EAAWoI,UACXpI,EAAWqI,4BACXrI,EAAWsI,mBACb,IAAI,CAER,EAZ4B,uBAoBtBC,GAAe9Q,EAAA,SAAUwD,EAAgB,CAC7C,OACEA,aAAmBkF,KAClB,OAAOlF,EAAQuN,UAAa,UAC3B,OAAOvN,EAAQwN,aAAgB,UAC/B,OAAOxN,EAAQyL,aAAgB,YAC/B,EAAEzL,EAAQyN,sBAAsBzI,IAChC,OAAOhF,EAAQ+L,iBAAoB,YACnC,OAAO/L,EAAQgM,cAAiB,YAChC,OAAOhM,EAAQoL,cAAiB,UAChC,OAAOpL,EAAQ4M,cAAiB,YAChC,OAAO5M,EAAQ0N,eAAkB,WAEvC,EAbqB,gBAqBfC,GAAUnR,EAAA,SAAUgE,EAAc,CACtC,OAAO,OAAOsE,GAAS,YAActE,aAAiBsE,CACxD,EAFgB,WAIhB,SAAS8I,GACPvH,EACAwH,EACAC,EAAsB,CAEtBzQ,GAAagJ,EAAQ0H,GAAW,CAC9BA,EAAKhB,KAAK7I,EAAW2J,EAAaC,EAAM/D,EAAM,CAChD,CAAC,CACH,CARS6D,EAAAA,GAAAA,iBAmBT,IAAMI,GAAoBxR,EAAA,SAAUqR,EAAgB,CAClD,IAAIjI,EAAU,KAMd,GAHAgI,GAAcvH,EAAM1C,uBAAwBkK,EAAa,IAAI,EAGzDP,GAAaO,CAAW,EAC1BtC,OAAAA,EAAasC,CAAW,EACjB,GAIT,IAAM1C,EAAUrL,EAAkB+N,EAAYN,QAAQ,EAsCtD,GAnCAK,GAAcvH,EAAMvC,oBAAqB+J,EAAa,CACpD1C,QAAAA,EACA8C,YAAazH,CACd,CAAA,EAICuB,IACA8F,EAAYH,cAAa,GACzB,CAACC,GAAQE,EAAYK,iBAAiB,GACtClP,EAAW,WAAY6O,EAAYnB,SAAS,GAC5C1N,EAAW,WAAY6O,EAAYL,WAAW,GAQ9CzF,IACA8F,EAAYzC,eAAiBhC,GAC7B+B,IAAY,SACZwC,GAAQE,EAAYK,iBAAiB,GAOnCL,EAAYtJ,WAAarC,GAAUC,wBAOrC4F,IACA8F,EAAYtJ,WAAarC,GAAUE,SACnCpD,EAAW,UAAW6O,EAAYC,IAAI,EAEtCvC,OAAAA,EAAasC,CAAW,EACjB,GAIT,GACExG,GAAY8D,CAAO,GAClB,EACC5D,GAAuBC,oBAAoB2C,UAC3C5C,GAAuBC,SAAS2D,CAAO,IAEvC,CAAC3E,EAAa2E,CAAO,EACvB,CAEA,GAAI,CAAC9D,GAAY8D,CAAO,GAAKgD,GAAsBhD,CAAO,IAEtDrE,EAAwBC,wBAAwB9H,QAChDD,EAAW8H,EAAwBC,aAAcoE,CAAO,GAMxDrE,EAAwBC,wBAAwBoD,UAChDrD,EAAwBC,aAAaoE,CAAO,GAE5C,MAAO,GAKX,GAAI1C,IAAgB,CAACG,EAAgBuC,CAAO,EAAG,CAC7C,IAAMiD,EAAa3I,GAAcoI,CAAW,GAAKA,EAAYO,WACvDtB,EAAatH,GAAcqI,CAAW,GAAKA,EAAYf,WAE7D,GAAIA,GAAcsB,EAAY,CAC5B,IAAMC,EAAavB,EAAWhQ,OAE9B,QAASwR,EAAID,EAAa,EAAGC,GAAK,EAAG,EAAEA,EAAG,CACxC,IAAMC,EAAalJ,GAAUyH,EAAWwB,CAAC,EAAG,EAAI,EAChDC,EAAWC,gBAAkBX,EAAYW,gBAAkB,GAAK,EAChEJ,EAAWxB,aAAa2B,EAAYhJ,GAAesI,CAAW,CAAC,CACjE,CACF,CACF,CAEAtC,OAAAA,EAAasC,CAAW,EACjB,EACT,CASA,OANIA,aAAuBrJ,GAAW,CAACyG,GAAqB4C,CAAW,IAOpE1C,IAAY,YACXA,IAAY,WACZA,IAAY,aACdnM,EAAW,8BAA+B6O,EAAYnB,SAAS,GAE/DnB,EAAasC,CAAW,EACjB,KAIL/F,IAAsB+F,EAAYtJ,WAAarC,GAAUZ,OAE3DsE,EAAUiI,EAAYL,YAEtBnQ,GAAa,CAACmE,GAAeC,GAAUC,EAAW,EAAI+M,GAAgB,CACpE7I,EAAUpH,GAAcoH,EAAS6I,EAAM,GAAG,CAC5C,CAAC,EAEGZ,EAAYL,cAAgB5H,IAC9B/H,GAAUqG,EAAUI,QAAS,CAAEtE,QAAS6N,EAAYxI,UAAS,CAAE,CAAE,EACjEwI,EAAYL,YAAc5H,IAK9BgI,GAAcvH,EAAM7C,sBAAuBqK,EAAa,IAAI,EAErD,GACT,EA9I0B,qBAyJpBa,GAAoBlS,EAAA,SACxBmS,EACAC,EACApO,EAAa,CAQb,GALI8G,GAAYsH,CAAM,GAMpBtG,KACCsG,IAAW,MAAQA,IAAW,UAC9BpO,KAAS6B,GAAY7B,KAASwJ,IAE/B,MAAO,GAOT,GACErC,EAAAA,IACA,CAACL,GAAYsH,CAAM,GACnB5P,EAAW2C,GAAWiN,CAAM,IAGvB,GAAIlH,EAAAA,IAAmB1I,EAAW4C,GAAWgN,CAAM,IAGnD,GACLrH,EAAAA,GAAuBE,0BAA0B0C,UACjD5C,GAAuBE,eAAemH,EAAQD,CAAK,IAI9C,GAAI,CAAChI,EAAaiI,CAAM,GAAKtH,GAAYsH,CAAM,GACpD,GAIGT,EAAAA,GAAsBQ,CAAK,IACxB7H,EAAwBC,wBAAwB9H,QAChDD,EAAW8H,EAAwBC,aAAc4H,CAAK,GACrD7H,EAAwBC,wBAAwBoD,UAC/CrD,EAAwBC,aAAa4H,CAAK,KAC5C7H,EAAwBK,8BAA8BlI,QACtDD,EAAW8H,EAAwBK,mBAAoByH,CAAM,GAC5D9H,EAAwBK,8BAA8BgD,UACrDrD,EAAwBK,mBAAmByH,EAAQD,CAAK,IAG7DC,IAAW,MACV9H,EAAwBM,iCACtBN,EAAwBC,wBAAwB9H,QAChDD,EAAW8H,EAAwBC,aAAcvG,CAAK,GACrDsG,EAAwBC,wBAAwBoD,UAC/CrD,EAAwBC,aAAavG,CAAK,IAKhD,MAAO,WAGAwI,CAAAA,GAAoB4F,CAAM,GAI9B,GACL5P,CAAAA,EAAW6C,GAAgBrD,GAAcgC,EAAOuB,GAAiB,EAAE,CAAC,GAK/D,GACJ6M,GAAAA,IAAW,OAASA,IAAW,cAAgBA,IAAW,SAC3DD,IAAU,UACVjQ,GAAc8B,EAAO,OAAO,IAAM,GAClCsI,GAAc6F,CAAK,IAMd,GACL/G,EAAAA,IACA,CAAC5I,EAAW8C,GAAmBtD,GAAcgC,EAAOuB,GAAiB,EAAE,CAAC,IAInE,GAAIvB,EACT,MAAO,SAMT,MAAO,EACT,EArG0B,qBA+GpB2N,GAAwB3R,EAAA,SAAU2O,EAAe,CACrD,OAAOA,IAAY,kBAAoB7M,GAAY6M,EAASlJ,EAAc,CAC5E,EAF8B,yBAcxB4M,GAAsBrS,EAAA,SAAUqR,EAAoB,CAExDD,GAAcvH,EAAM3C,yBAA0BmK,EAAa,IAAI,EAE/D,GAAM,CAAEJ,WAAAA,CAAU,EAAKI,EAGvB,GAAI,CAACJ,GAAcH,GAAaO,CAAW,EACzC,OAGF,IAAMiB,EAAY,CAChBC,SAAU,GACVC,UAAW,GACXC,SAAU,GACVC,kBAAmBvI,EACnBwI,cAAelL,QAEblE,EAAI0N,EAAW3Q,OAGnB,KAAOiD,KAAK,CACV,IAAMqP,EAAO3B,EAAW1N,CAAC,EACnB,CAAE4L,KAAAA,EAAMP,aAAAA,EAAc5K,MAAOwO,CAAS,EAAKI,EAC3CR,GAAS9O,EAAkB6L,CAAI,EAE/B0D,GAAYL,EACdxO,EAAQmL,IAAS,QAAU0D,GAAYzQ,GAAWyQ,EAAS,EAsB/D,GAnBAP,EAAUC,SAAWH,GACrBE,EAAUE,UAAYxO,EACtBsO,EAAUG,SAAW,GACrBH,EAAUK,cAAgBlL,OAC1B2J,GAAcvH,EAAMxC,sBAAuBgK,EAAaiB,CAAS,EACjEtO,EAAQsO,EAAUE,UAKdzG,KAAyBqG,KAAW,MAAQA,KAAW,UAEzDlD,GAAiBC,EAAMkC,CAAW,EAGlCrN,EAAQgI,GAA8BhI,GAKtCuH,IACA/I,EACE,qFACAwB,CAAK,EAEP,CACAkL,GAAiBC,EAAMkC,CAAW,EAClC,QACF,CAGA,GAAIe,KAAW,iBAAmBtQ,GAAYkC,EAAO,MAAM,EAAG,CAC5DkL,GAAiBC,EAAMkC,CAAW,EAClC,QACF,CAGA,GAAIiB,EAAUK,cACZ,SAIF,GAAI,CAACL,EAAUG,SAAU,CACvBvD,GAAiBC,EAAMkC,CAAW,EAClC,QACF,CAGA,GAAI,CAAChG,IAA4B7I,EAAW,OAAQwB,CAAK,EAAG,CAC1DkL,GAAiBC,EAAMkC,CAAW,EAClC,QACF,CAGI/F,IACFzK,GAAa,CAACmE,GAAeC,GAAUC,EAAW,EAAI+M,IAAgB,CACpEjO,EAAQhC,GAAcgC,EAAOiO,GAAM,GAAG,CACxC,CAAC,EAIH,IAAME,GAAQ7O,EAAkB+N,EAAYN,QAAQ,EACpD,GAAI,CAACmB,GAAkBC,GAAOC,GAAQpO,CAAK,EAAG,CAC5CkL,GAAiBC,EAAMkC,CAAW,EAClC,QACF,CAGA,GACE/H,GACA,OAAOrD,IAAiB,UACxB,OAAOA,GAAa6M,kBAAqB,YAErClE,CAAAA,EAGF,OAAQ3I,GAAa6M,iBAAiBX,GAAOC,EAAM,EAAC,CAClD,IAAK,cAAe,CAClBpO,EAAQsF,EAAmB7C,WAAWzC,CAAK,EAC3C,KACF,CAEA,IAAK,mBAAoB,CACvBA,EAAQsF,EAAmB5C,gBAAgB1C,CAAK,EAChD,KACF,CAKF,CAKJ,GAAIA,IAAU6O,GACZ,GAAI,CACEjE,EACFyC,EAAY0B,eAAenE,EAAcO,EAAMnL,CAAK,EAGpDqN,EAAY7B,aAAaL,EAAMnL,CAAK,EAGlC8M,GAAaO,CAAW,EAC1BtC,EAAasC,CAAW,EAExBlQ,GAASuG,EAAUI,OAAO,CAE9B,MAAY,CACVoH,GAAiBC,EAAMkC,CAAW,CACpC,CAEJ,CAGAD,GAAcvH,EAAM9C,wBAAyBsK,EAAa,IAAI,CAChE,EAnJ4B,uBA0JtB2B,GAAqBhT,EAAA,SAAUiT,EAA0B,CAC7D,IAAIC,EAAa,KACXC,EAAiB3C,GAAoByC,CAAQ,EAKnD,IAFA7B,GAAcvH,EAAMzC,wBAAyB6L,EAAU,IAAI,EAEnDC,EAAaC,EAAeC,SAAQ,GAE1ChC,GAAcvH,EAAMtC,uBAAwB2L,EAAY,IAAI,EAG5D1B,GAAkB0B,CAAU,EAG5Bb,GAAoBa,CAAU,EAG1BA,EAAW9J,mBAAmBhB,GAChC4K,GAAmBE,EAAW9J,OAAO,EAKzCgI,GAAcvH,EAAM5C,uBAAwBgM,EAAU,IAAI,CAC5D,EAzB2B,sBA4B3BvL,OAAAA,EAAU2L,SAAW,SAAU3D,EAAe,CAAA,IAAR7B,EAAGxN,UAAAC,OAAA,GAAAD,UAAA,CAAA,IAAAoH,OAAApH,UAAA,CAAA,EAAG,CAAA,EACtC8P,EAAO,KACPmD,EAAe,KACfjC,EAAc,KACdkC,EAAa,KAUjB,GANAzG,GAAiB,CAAC4C,EACd5C,KACF4C,EAAQ,SAIN,OAAOA,GAAU,UAAY,CAACyB,GAAQzB,CAAK,EAC7C,GAAI,OAAOA,EAAM7N,UAAa,YAE5B,GADA6N,EAAQA,EAAM7N,SAAQ,EAClB,OAAO6N,GAAU,SACnB,MAAM/M,GAAgB,iCAAiC,MAGzD,OAAMA,GAAgB,4BAA4B,EAKtD,GAAI,CAAC+E,EAAUO,YACb,OAAOyH,EAgBT,GAZKjE,IACHmC,GAAaC,CAAG,EAIlBnG,EAAUI,QAAU,CAAA,EAGhB,OAAO4H,GAAU,WACnBxD,GAAW,IAGTA,IAEF,GAAKwD,EAAeqB,SAAU,CAC5B,IAAMpC,EAAUrL,EAAmBoM,EAAeqB,QAAQ,EAC1D,GAAI,CAAC/G,EAAa2E,CAAO,GAAK9D,GAAY8D,CAAO,EAC/C,MAAMhM,GACJ,yDAAyD,CAG/D,UACS+M,aAAiBpH,EAG1B6H,EAAOV,GAAc,SAAS,EAC9B6D,EAAenD,EAAK9G,cAAcO,WAAW8F,EAAO,EAAI,EAEtD4D,EAAavL,WAAarC,GAAUlC,SACpC8P,EAAavC,WAAa,QAIjBuC,EAAavC,WAAa,OADnCZ,EAAOmD,EAKPnD,EAAKqD,YAAYF,CAAY,MAE1B,CAEL,GACE,CAAC3H,IACD,CAACL,IACD,CAACE,IAEDkE,EAAMvN,QAAQ,GAAG,IAAM,GAEvB,OAAOmH,GAAsBuC,GACzBvC,EAAmB7C,WAAWiJ,CAAK,EACnCA,EAON,GAHAS,EAAOV,GAAcC,CAAK,EAGtB,CAACS,EACH,OAAOxE,GAAa,KAAOE,GAAsBtC,GAAY,EAEjE,CAGI4G,GAAQzE,IACVqD,EAAaoB,EAAKsD,UAAU,EAI9B,IAAMC,EAAelD,GAAoBtE,GAAWwD,EAAQS,CAAI,EAGhE,KAAQkB,EAAcqC,EAAaN,SAAQ,GAEzC5B,GAAkBH,CAAW,EAG7BgB,GAAoBhB,CAAW,EAG3BA,EAAYjI,mBAAmBhB,GACjC4K,GAAmB3B,EAAYjI,OAAO,EAK1C,GAAI8C,GACF,OAAOwD,EAIT,GAAI/D,GAAY,CACd,GAAIL,GAAoB,CACtB6E,EAAKwD,UAAS,EACd,IAAInP,EAAO2L,EAAKD,UAChBrP,GAAa,CAACmE,GAAeC,GAAUC,EAAW,EAAI+M,IAAgB,CACpEzN,EAAOxC,GAAcwC,EAAMyN,GAAM,GAAG,CACtC,CAAC,EACD9B,EAAKD,UAAY1L,CACnB,CAEA,GAAIoH,GAGF,IAFA2H,EAAa7J,GAAuB6G,KAAKJ,EAAK9G,aAAa,EAEpD8G,EAAKsD,YAEVF,EAAWC,YAAYrD,EAAKsD,UAAU,OAGxCF,EAAapD,EAGf,OAAIhG,EAAayJ,YAAczJ,EAAa0J,kBAQ1CN,EAAa3J,GAAW2G,KAAKrI,EAAkBqL,EAAY,EAAI,GAG1DA,CACT,CAEA,IAAIO,EAAiBtI,GAAiB2E,EAAK4D,UAAY5D,EAAKD,UAG5D,OACE1E,IACAxB,EAAa,UAAU,GACvBmG,EAAK9G,eACL8G,EAAK9G,cAAc2K,SACnB7D,EAAK9G,cAAc2K,QAAQ7E,MAC3B3M,EAAWuH,GAA0BoG,EAAK9G,cAAc2K,QAAQ7E,IAAI,IAEpE2E,EACE,aAAe3D,EAAK9G,cAAc2K,QAAQ7E,KAAO;EAAQ2E,GAIzDxI,IACFzK,GAAa,CAACmE,GAAeC,GAAUC,EAAW,EAAI+M,GAAgB,CACpE6B,EAAiB9R,GAAc8R,EAAgB7B,EAAM,GAAG,CAC1D,CAAC,EAGI3I,GAAsBuC,GACzBvC,EAAmB7C,WAAWqN,CAAc,EAC5CA,CACN,EAEApM,EAAUuM,UAAY,UAAkB,CAAA,IAARpG,EAAGxN,UAAAC,OAAA,GAAAD,UAAA,CAAA,IAAAoH,OAAApH,UAAA,CAAA,EAAG,CAAA,EACpCuN,GAAaC,CAAG,EAChBpC,GAAa,EACf,EAEA/D,EAAUwM,YAAc,UAAA,CACtB3G,GAAS,KACT9B,GAAa,EACf,EAEA/D,EAAUyM,iBAAmB,SAAUC,EAAKxB,EAAM5O,EAAK,CAEhDuJ,IACHK,GAAa,CAAA,CAAE,EAGjB,IAAMuE,EAAQ7O,EAAkB8Q,CAAG,EAC7BhC,EAAS9O,EAAkBsP,CAAI,EACrC,OAAOV,GAAkBC,EAAOC,EAAQpO,CAAK,CAC/C,EAEA0D,EAAU2M,QAAU,SAClBC,EACAC,EAA0B,CAEtB,OAAOA,GAAiB,YAI5BlT,GAAUwI,EAAMyK,CAAU,EAAGC,CAAY,CAC3C,EAEA7M,EAAU8M,WAAa,SACrBF,EACAC,EAA0B,CAE1B,GAAIA,IAAiB9M,OAAW,CAC9B,IAAM9D,EAAQ1C,GAAiB4I,EAAMyK,CAAU,EAAGC,CAAY,EAE9D,OAAO5Q,IAAU,GACb8D,OACAlG,GAAYsI,EAAMyK,CAAU,EAAG3Q,EAAO,CAAC,EAAE,CAAC,CAChD,CAEA,OAAOxC,GAAS0I,EAAMyK,CAAU,CAAC,CACnC,EAEA5M,EAAU+M,YAAc,SAAUH,EAA0B,CAC1DzK,EAAMyK,CAAU,EAAI,CAAA,CACtB,EAEA5M,EAAUgN,eAAiB,UAAA,CACzB7K,EAAQ/C,GAAe,CACzB,EAEOY,CACT,CAzmDSF,EAAAA,GAAAA,mBA2mDT,IAAAmN,GAAenN,GAAe,EC/tDvB,IAAMoN,GAAiB,eAQjBC,GAAUC,EAACC,GACjBA,EAGOC,GAAmBD,CAAC,EAAE,QAAQ,OAAQ,MAAM,EAC7C,MAAM,MAAM,EAHd,CAAC,EAAE,EAFS,WAQjBE,IAAiC,IAAM,CAC3C,IAAIC,EAAQ,GAEZ,MAAO,IAAM,CACNA,IACHC,GAAoB,EACpBD,EAAQ,GAEZ,CACF,GAAG,EAEH,SAASC,IAAsB,CAC7B,IAAMC,EAAsB,wBAE5BC,GAAU,QAAQ,2BAA6BC,GAAS,CAClDA,EAAK,UAAY,KAAOA,EAAK,aAAa,QAAQ,GACpDA,EAAK,aAAaF,EAAqBE,EAAK,aAAa,QAAQ,GAAK,EAAE,CAE5E,CAAC,EAEDD,GAAU,QAAQ,0BAA4BC,GAAS,CACjDA,EAAK,UAAY,KAAOA,EAAK,aAAaF,CAAmB,IAC/DE,EAAK,aAAa,SAAUA,EAAK,aAAaF,CAAmB,GAAK,EAAE,EACxEE,EAAK,gBAAgBF,CAAmB,EACpCE,EAAK,aAAa,QAAQ,IAAM,UAClCA,EAAK,aAAa,MAAO,UAAU,EAGzC,CAAC,CACH,CAlBSR,EAAAK,GAAA,uBA0BF,IAAMI,GAAeT,EAACU,IAC3BP,GAA8B,EAERI,GAAU,SAASG,CAAG,GAHlB,gBAQtBC,GAAeX,EAAA,CAACY,EAAcC,IAA0B,CAC5D,GAAIC,GAAuBD,CAAM,EAAG,CAClC,IAAME,EAAQF,EAAO,cACjBE,IAAU,cAAgBA,IAAU,UAAYA,IAAU,UAC5DH,EAAOH,GAAaG,CAAI,EACfG,IAAU,UACnBH,EAAOV,GAAmBU,CAAI,EAC9BA,EAAOA,EAAK,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM,EACtDA,EAAOA,EAAK,QAAQ,KAAM,UAAU,EACpCA,EAAOI,GAAmBJ,CAAI,EAElC,CACA,OAAOA,CACT,EAbqB,gBAeRK,GAAejB,EAAA,CAACY,EAAcC,IACpCD,IAGDC,EAAO,gBACTD,EAAOL,GAAU,SAASI,GAAaC,EAAMC,CAAM,EAAGA,EAAO,eAAe,EAAE,SAAS,EAEvFD,EAAOL,GAAU,SAASI,GAAaC,EAAMC,CAAM,EAAG,CACpD,YAAa,CAAC,OAAO,CACvB,CAAC,EAAE,SAAS,EAEPD,GAXmB,gBAcfM,GAAsBlB,EAAA,CACjCmB,EACAN,IAEI,OAAOM,GAAM,SACRF,GAAaE,EAAGN,CAAM,EAGxBM,EAAE,KAAK,EAAE,IAAKC,GAAcH,GAAaG,EAAGP,CAAM,CAAC,EARzB,uBAiBtBQ,GAAYrB,EAACY,GACjBd,GAAe,KAAKc,CAAI,EADR,aAUZU,GAActB,EAACY,GACnBA,EAAK,MAAMd,EAAc,EADP,eAUrBkB,GAAqBhB,EAACC,GACnBA,EAAE,QAAQ,QAAS,OAAO,EADR,sBAUrBC,GAAqBF,EAACC,GACnBA,EAAE,QAAQH,GAAgB,MAAM,EADd,sBAUdyB,GAASvB,EAACwB,GAAiC,CACtD,IAAIC,EAAM,GACV,OAAID,IACFC,EACE,OAAO,SAAS,SAChB,KACA,OAAO,SAAS,KAChB,OAAO,SAAS,SAChB,OAAO,SAAS,OAElBA,EAAM,IAAI,OAAOA,CAAG,GAGfA,CACT,EAdsB,UAwBf,IAAMC,GAASC,EAAA,YAAaC,EAA0B,CAC3D,IAAMC,EAAsBD,EAAO,OAAQE,GAClC,CAAC,MAAMA,CAAK,CACpB,EACD,OAAO,KAAK,IAAI,GAAGD,CAAS,CAC9B,EALsB,UAaTE,GAASJ,EAAA,YAAaC,EAA0B,CAC3D,IAAMC,EAAsBD,EAAO,OAAQE,GAClC,CAAC,MAAMA,CAAK,CACpB,EACD,OAAO,KAAK,IAAI,GAAGD,CAAS,CAC9B,EALsB,UAoBTG,GAAoBL,EAAA,SAAUM,EAAuB,CAChE,IAAMC,EAAYD,EAAM,MAAM,KAAK,EAC7BE,EAAS,CAAC,EAEhB,QAASC,EAAI,EAAGA,EAAIF,EAAU,OAAQE,IAAK,CACzC,IAAIC,EAAUH,EAAUE,CAAC,EAQzB,GAAIC,IAAY,KAAOD,EAAI,GAAKA,EAAI,EAAIF,EAAU,OAAQ,CACxD,IAAMI,EAAcJ,EAAUE,EAAI,CAAC,EAC7BG,EAAUL,EAAUE,EAAI,CAAC,EAE3BI,GAAkBF,EAAaC,CAAO,IACxCF,EAAUC,EAAc,IAAMC,EAC9BH,IACAD,EAAO,IAAI,EAEf,CAEAA,EAAO,KAAKM,GAAWJ,CAAO,CAAC,CACjC,CAEA,OAAOF,EAAO,KAAK,EAAE,CACvB,EA5BiC,qBA8BpBO,GAAkBf,EAAA,CAACgB,EAAgBC,IACvC,KAAK,IAAI,EAAGD,EAAO,MAAMC,CAAS,EAAE,OAAS,CAAC,EADxB,mBAIzBJ,GAAoBb,EAAA,CAACW,EAAqBC,IAA6B,CAC3E,IAAMM,EAAYH,GAAgBJ,EAAa,GAAG,EAC5CQ,EAAYJ,GAAgBH,EAAS,GAAG,EAE9C,OAAOM,IAAc,GAAKC,IAAc,CAC1C,EAL0B,qBAOpBL,GAAad,EAACM,GAA0B,CAC5C,IAAMc,EAAaL,GAAgBT,EAAO,GAAG,EACzCe,EAAmB,GAEvB,GAAID,GAAc,EAChB,OAAOd,EAILc,EAAa,IAAM,GAAKd,EAAM,WAAW,GAAG,IAC9CA,EAAQA,EAAM,UAAU,CAAC,EACzBe,EAAmB,IAGrB,IAAMC,EAAQ,CAAC,GAAGhB,CAAK,EAEnBiB,EAAQD,EAAM,QAAQ,GAAG,EACzBE,EAAOF,EAAM,YAAY,GAAG,EAEhC,KAAOC,IAAU,IAAMC,IAAS,IAAMD,IAAUC,GAC9CF,EAAMC,CAAK,EAAI,IACfD,EAAME,CAAI,EAAI,IAEdD,EAAQD,EAAM,QAAQ,GAAG,EACzBE,EAAOF,EAAM,YAAY,GAAG,EAI9B,OAAID,GACFC,EAAM,QAAQ,GAAG,EAGZA,EAAM,KAAK,EAAE,CACtB,EAjCmB,cAqCNG,GAAoBzB,EAAA,IAAM,OAAO,gBAAkB,OAA/B,qBAEpB0B,GAAa,gBAQbC,GAAW3B,EAAC4B,IAA2BA,EAAK,MAAMF,EAAU,GAAG,QAAU,GAAK,EAAnE,YASXG,GAA4B7B,EAAA,MAAO4B,EAAcE,IAA0B,CACtF,IAAMC,EAAU,SAAS,cAAc,KAAK,EAC5CA,EAAQ,UAAY,MAAMC,GAAqBJ,EAAME,CAAM,EAC3DC,EAAQ,GAAK,aACbA,EAAQ,MAAM,WAAa,SAC3BA,EAAQ,MAAM,SAAW,WACzBA,EAAQ,MAAM,IAAM,IACP,SAAS,cAAc,MAAM,GACpC,sBAAsB,YAAaA,CAAO,EAChD,IAAME,EAAM,CAAE,MAAOF,EAAQ,YAAa,OAAQA,EAAQ,YAAa,EACvE,OAAAA,EAAQ,OAAO,EACRE,CACT,EAZyC,6BAcnCC,GAAyBlC,EAAA,MAAO4B,EAAcE,IAA2C,CAC7F,GAAI,CAACH,GAASC,CAAI,EAChB,OAAOA,EAGT,GAAI,EAAEH,GAAkB,GAAKK,EAAO,cAAgBA,EAAO,mBACzD,OAAOF,EAAK,QAAQF,GAAY,4CAA4C,EAG3C,CACjC,GAAM,CAAE,QAASS,CAAM,EAAI,KAAM,QAAO,sBAAO,EACzCC,EACJN,EAAO,mBAAsB,CAACL,GAAkB,GAAKK,EAAO,aACxD,gBACA,SACN,OAAOF,EACJ,MAAMS,EAAc,EACpB,IAAKC,GACJX,GAASW,CAAI,EACT,kGAAkGA,CAAI,SACtG,QAAQA,CAAI,QAClB,EACC,KAAK,EAAE,EACP,QAAQZ,GAAY,CAACa,EAAGC,IACvBL,EACG,eAAeK,EAAG,CACjB,aAAc,GACd,YAAa,GACb,OAAQJ,CACV,CAAC,EACA,QAAQ,MAAO,GAAG,EAClB,QAAQ,+BAAgC,EAAE,CAC/C,CACJ,CAEA,OAAOR,EAAK,QACVF,GACA,kFACF,CACF,EAvC+B,0BAgDlBM,GAAuBhC,EAAA,MAClC4B,EACAE,IAEOW,GAAa,MAAMP,GAAuBN,EAAME,CAAM,EAAGA,CAAM,EAJpC,wBAO7BY,GAAQ,CACb,QAAAC,GACA,aAAAF,GACA,oBAAAG,GACA,UAAAC,GACA,YAAAC,GACA,eAAAT,GACA,aAAAU,GACA,OAAAC,GACA,SAAAC,GACA,OAAAlD,GACA,OAAAK,EACF,EC3XA,IAAM8C,GAAUC,EAAA,SAAUC,EAAQC,EAAO,CACvC,QAASC,KAAQD,EACfD,EAAO,KAAKE,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAEhC,EAJgB,WAcHC,GAAwBJ,EAAA,SAAUK,EAAQC,EAAOC,EAAa,CACzE,IAAIL,EAAQ,IAAI,IAChB,OAAIK,GACFL,EAAM,IAAI,QAAS,MAAM,EACzBA,EAAM,IAAI,QAAS,cAAcI,CAAK,KAAK,IAE3CJ,EAAM,IAAI,SAAUG,CAAM,EAC1BH,EAAM,IAAI,QAASI,CAAK,GAEnBJ,CACT,EAVqC,yBAoBxBM,GAAmBR,EAAA,SAAUS,EAASJ,EAAQC,EAAOC,EAAa,CAC7E,IAAML,EAAQE,GAAsBC,EAAQC,EAAOC,CAAW,EAC9DR,GAAQU,EAASP,CAAK,CACxB,EAHgC,oBAMnBQ,GAAoBV,EAAA,SAAUW,EAAOF,EAASG,EAASL,EAAa,CAC/E,IAAMM,EAAYJ,EAAQ,KAAK,EAAE,QAAQ,EACnCK,EAASD,EAAU,MACnBE,EAAUF,EAAU,OAE1BG,EAAI,KAAK,eAAeF,CAAM,IAAIC,CAAO,GAAIF,CAAS,EAEtD,IAAIP,EAAQ,EACRD,EAAS,EACbW,EAAI,KAAK,iBAAiBV,CAAK,IAAID,CAAM,GAAIM,CAAK,EAElDL,EAAQQ,EAASF,EAAU,EAC3BP,EAASU,EAAUH,EAAU,EAE7BI,EAAI,KAAK,sBAAsBV,CAAK,IAAID,CAAM,EAAE,EAChDG,GAAiBC,EAASJ,EAAQC,EAAOC,CAAW,EAGpD,IAAMU,EAAO,GAAGJ,EAAU,EAAID,CAAO,IAAIC,EAAU,EAAID,CAAO,IAC5DC,EAAU,MAAQ,EAAID,CACxB,IAAIC,EAAU,OAAS,EAAID,CAAO,GAElCH,EAAQ,KAAK,UAAWQ,CAAI,CAC9B,EAvBiC,qBC5CjC,IAAMC,GAAgD,CAAC,EAEhD,SAASC,GAAsBC,EAAsC,CAC1E,MAAO,CAAC,GAAGA,EAAc,QAAQ,EAAE,IAAKC,GAASA,EAAK,OAAO,EAAE,KAAK;AAAA,CAAI,CAC1E,CAFgBC,EAAAH,GAAA,yBAIhB,IAAMI,GAAYD,EAAA,CAChBE,EACAC,EACAC,EAkBAC,IACG,CACH,IAAIC,EAAgB,GACpB,OAAIJ,KAAQN,IAAUA,GAAOM,CAAI,EAG/BI,EAAgBV,GAAOM,CAAI,EAAE,CAAE,GAAGE,EAAS,MAAAC,CAAM,CAAC,EAElDE,EAAI,KAAK,sBAAsBL,CAAI,EAAE,EAEhC;AAAA,mBACUE,EAAQ,UAAU;AAAA,iBACpBA,EAAQ,QAAQ;AAAA,YACrBA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YA2BjBA,EAAQ,aAAa;AAAA;AAAA;AAAA,YAGrBA,EAAQ,cAAc;AAAA,cACpBA,EAAQ,cAAc;AAAA;AAAA;AAAA;AAAA,oBAIfA,EAAQ,aAAe,CAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAoB5CA,EAAQ,SAAS;AAAA,cACfA,EAAQ,SAAS;AAAA;AAAA;AAAA,cAGjBA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA,mBAIZA,EAAQ,UAAU;AAAA,iBACpBA,EAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM7BE,CAAa;AAAA;AAAA,cAEHF,EAAQ,UAAU;AAAA;AAAA;AAAA;AAAA,cAIlBA,EAAQ,YAAc,OAASC,EAAQ,aAAeD,EAAQ,UAAU;AAAA,cACxEA,EAAQ,WAAaA,EAAQ,WAAW,QAAQ,oBAAqB,OAAOC,CAAK,eAAe,EAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,cAK1GD,EAAQ,YAAc,OAASC,EAAQ,aAAeD,EAAQ,UAAU;AAAA,oBACjEA,EAAQ,aAAe,CAAY;AAAA;AAAA;AAAA;AAAA,cAI1CA,EAAQ,WAAaA,EAAQ,WAAW,QAAQ,oBAAqB,OAAOC,CAAK,eAAe,EAAI,MAAM;AAAA;AAAA;AAAA;AAAA,cAI1GD,EAAQ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,cAKlBA,EAAQ,YAAc,OAASC,EAAQ,aAAeD,EAAQ,UAAU;AAAA,cACxEA,EAAQ,WAAaA,EAAQ,WAAW,QAAQ,oBAAqB,OAAOC,CAAK,eAAe,EAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQ5GD,EAAQ,YAAc,OAASC,EAAQ,aAAeD,EAAQ,UAAU;AAAA,cACtEA,EAAQ,WAAaA,EAAQ,WAAW,QAAQ,oBAAqB,OAAOC,CAAK,eAAe,EAAI,MAAM;AAAA;AAAA;AAAA;AAAA,cAI1GD,EAAQ,YAAc,OAASC,EAAQ,aAAeD,EAAQ,UAAU;AAAA,cACxEA,EAAQ,WAAaA,EAAQ,WAAW,QAAQ,oBAAqB,OAAOC,CAAK,eAAe,EAAI,MAAM;AAAA;AAAA;AAAA,IAGpHF,CAAU;AAAA,CAEd,EAtJkB,aAwJLK,GAAsBR,EAAA,CAACE,EAAcO,IAA+C,CAC3FA,IAAiB,SACnBb,GAAOM,CAAI,EAAIO,EAEnB,EAJmC,uBAM5BC,GAAQT,GCxKf,IAAAU,GAAA,GAAAC,GAAAD,GAAA,WAAAE,GAAA,sBAAAC,GAAA,gBAAAC,GAAA,oBAAAC,GAAA,sBAAAC,GAAA,gBAAAC,GAAA,oBAAAC,KAGA,IAAIC,GAAW,GACXC,GAAe,GACfC,GAAiB,GAEfC,GAAeC,EAACC,GAAwBF,GAAcE,EAAKC,GAAU,CAAC,EAAvD,gBAERC,GAAQH,EAAA,IAAY,CAC/BJ,GAAW,GACXE,GAAiB,GACjBD,GAAe,EACjB,EAJqB,SAMRO,GAAcJ,EAACC,GAAsB,CAChDL,GAAWG,GAAaE,CAAG,EAAE,QAAQ,QAAS,EAAE,CAClD,EAF2B,eAIdI,GAAcL,EAAA,IAAcJ,GAAd,eAEdU,GAAoBN,EAACC,GAAsB,CACtDH,GAAiBC,GAAaE,CAAG,EAAE,QAAQ,SAAU;AAAA,CAAI,CAC3D,EAFiC,qBAIpBM,GAAoBP,EAAA,IAAcF,GAAd,qBAEpBU,GAAkBR,EAACC,GAAsB,CACpDJ,GAAeE,GAAaE,CAAG,CACjC,EAF+B,mBAIlBQ,GAAkBT,EAAA,IAAcH,GAAd,mBCZxB,IAAMa,GAAMA,EACNC,GAAcA,GACdC,GAAYA,GACZC,GAAYA,GACZC,GAAgBA,GAEtB,IAAMC,GAAeC,EAACC,GAAiBF,GAAcE,EAAMC,GAAU,CAAC,EAAjD,gBACfC,GAAoBA,GACpBC,GAAcJ,EAAA,IAClBK,GADkB,eAIrBC,GAA8C,CAAC,EAYxCC,GAAkBP,EAAA,CAC7BQ,EACAC,EACAC,IACG,CACCJ,GAASE,CAAE,GACbG,GAAI,KAAK,mBAAmBH,CAAE,mCAAmC,EAEnEF,GAASE,CAAE,EAAIC,EACXC,GACFE,GAAYJ,EAAIE,CAAQ,EAE1BG,GAAoBL,EAAIC,EAAQ,MAAM,EAEtCA,EAAQ,cACNE,GACAG,GACAZ,GACAH,GACAI,GACAC,GAAY,EACZ,IAAM,CAGN,CACF,CACF,EA1B+B,mBA4BlBW,GAAaf,EAACgB,GAAoC,CAC7D,GAAIA,KAAQV,GACV,OAAOA,GAASU,CAAI,EAEtB,MAAM,IAAIC,GAAqBD,CAAI,CACrC,EAL0B,cAObC,GAAN,cAAmC,KAAM,CA9EhD,MA8EgD,CAAAjB,EAAA,6BAC9C,YAAYgB,EAAc,CACxB,MAAM,WAAWA,CAAI,aAAa,CACpC,CACF", + "names": ["frontMatterRegex", "directiveRegex", "anyCommentRegex", "UnknownDiagramError", "__name", "message", "detectors", "detectType", "__name", "text", "config", "frontMatterRegex", "directiveRegex", "anyCommentRegex", "key", "detector", "UnknownDiagramError", "registerLazyLoadedDiagrams", "diagrams", "id", "loader", "addDetector", "log", "getDiagramLoader", "assignWithDepth", "__name", "dst", "src", "depth", "clobber", "config", "s", "key", "assignWithDepth_default", "Channel", "__name", "g", "b", "h", "s", "l", "a", "c", "n", "p", "q", "t", "channel", "max", "min", "d", "channel_default", "Lang", "__name", "number", "lower", "upper", "lang_default", "Unit", "__name", "dec", "hex", "unit_default", "Utils", "channel_default", "lang_default", "unit_default", "utils_default", "DEC2HEX", "i", "utils_default", "TYPE", "Type", "__name", "TYPE", "type", "type_default", "Channels", "__name", "data", "color", "type_default", "TYPE", "h", "s", "l", "utils_default", "r", "g", "b", "a", "channels_default", "channels", "channels_default", "reusable_default", "Hex", "__name", "color", "match", "hex", "dec", "length", "hasAlpha", "isFullLength", "multiplier", "bits", "bitsOffset", "mask", "reusable_default", "channels", "r", "g", "b", "a", "DEC2HEX", "hex_default", "HSL", "__name", "hue", "match", "number", "unit", "utils_default", "color", "charCode", "h", "s", "l", "a", "isAlphaPercentage", "reusable_default", "channels", "hsl_default", "Keyword", "__name", "color", "hex", "hex_default", "channels", "name", "keyword_default", "RGB", "__name", "color", "charCode", "match", "r", "isRedPercentage", "g", "isGreenPercentage", "b", "isBluePercentage", "a", "isAlphaPercentage", "reusable_default", "utils_default", "channels", "rgb_default", "Color", "keyword_default", "hex_default", "rgb_default", "hsl_default", "__name", "color", "channels", "TYPE", "color_default", "change", "__name", "color", "channels", "ch", "color_default", "c", "utils_default", "change_default", "rgba", "__name", "g", "b", "a", "change_default", "channels", "reusable_default", "utils_default", "color_default", "rgba_default", "channel", "__name", "color", "utils_default", "color_default", "channel_default", "luminance", "__name", "color", "r", "g", "b", "color_default", "utils_default", "luminance_default", "isLight", "__name", "color", "luminance_default", "is_light_default", "isDark", "__name", "color", "is_light_default", "is_dark_default", "adjustChannel", "__name", "color", "channel", "amount", "channels", "color_default", "amountCurrent", "amountNext", "utils_default", "adjust_channel_default", "lighten", "__name", "color", "amount", "adjust_channel_default", "lighten_default", "darken", "__name", "color", "amount", "adjust_channel_default", "darken_default", "transparentize", "__name", "color", "amount", "adjust_channel_default", "transparentize_default", "adjust", "__name", "color", "channels", "ch", "color_default", "changes", "c", "change_default", "adjust_default", "mix", "__name", "color1", "color2", "weight", "r1", "g1", "b1", "a1", "color_default", "r2", "g2", "b2", "a2", "weightScale", "weightNormalized", "alphaDelta", "weight1", "weight2", "r", "g", "b", "a", "rgba_default", "mix_default", "invert", "__name", "color", "weight", "inverse", "color_default", "mix_default", "invert_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "mkBorder", "__name", "col", "darkMode", "adjust_default", "Theme", "__name", "adjust_default", "mkBorder", "invert_default", "darken_default", "lighten_default", "multiplier", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "adjust_default", "invert_default", "mkBorder", "rgba_default", "darken_default", "i", "is_dark_default", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "adjust_default", "mkBorder", "invert_default", "rgba_default", "darken_default", "i", "lighten_default", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "k", "keys", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "mkBorder", "invert_default", "darken_default", "adjust_default", "i", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "adjust_default", "mkBorder", "invert_default", "i", "darken_default", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "mkBorder", "adjust_default", "invert_default", "darken_default", "primaryColor", "secondaryColor", "tertiaryColor", "lighten_default", "i", "multiplier", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "adjust_default", "invert_default", "mkBorder", "rgba_default", "darken_default", "multiplier", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "mkBorder", "adjust_default", "invert_default", "darken_default", "primaryColor", "secondaryColor", "tertiaryColor", "lighten_default", "i", "multiplier", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "adjust_default", "invert_default", "mkBorder", "rgba_default", "darken_default", "multiplier", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "mkBorder", "adjust_default", "invert_default", "darken_default", "primaryColor", "secondaryColor", "tertiaryColor", "lighten_default", "i", "multiplier", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme", "__name", "lighten_default", "adjust_default", "invert_default", "mkBorder", "rgba_default", "darken_default", "multiplier", "is_dark_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "themes_default", "getThemeVariables", "config_schema_default", "config", "config_schema_default", "themes_default", "__name", "keyify", "obj", "prefix", "res", "el", "configKeys", "defaultConfig_default", "sanitizeDirective", "__name", "args", "log", "arg", "key", "configKeys", "colorPattern", "colorKey", "cssMatchers", "cssKey", "sanitizeCss", "k", "val", "str", "startCnt", "endCnt", "element", "defaultConfig", "defaultConfig_default", "evaluate", "__name", "val", "siteConfig", "assignWithDepth_default", "configFromInitialize", "directives", "currentConfig", "updateCurrentConfig", "siteCfg", "_directives", "cfg", "sumOfDirectives", "sanitize", "themes_default", "tmpConfigFromInitialize", "themeVariables", "checkConfig", "setSiteConfig", "conf", "saveConfigFromInitialize", "updateSiteConfig", "getSiteConfig", "setConfig", "getConfig", "options", "key", "log", "addDirective", "directive", "sanitizeDirective", "reset", "config", "ConfigWarning", "issuedWarnings", "issueWarning", "warning", "getUserDefinedConfig", "userConfig", "d", "getEffectiveHtmlLabels", "entries", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "Object", "freeze", "seal", "create", "apply", "construct", "Reflect", "__name", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "objectHasOwnProperty", "hasOwnProperty", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "lastIndex", "_len3", "_key3", "_len4", "_key4", "addToSet", "set", "array", "transformCaseFunc", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "property", "value", "isArray", "constructor", "lookupGetter", "prop", "desc", "get", "fallbackValue", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "CUSTOM_ELEMENT", "NODE_TYPE", "progressingInstruction", "comment", "document", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "console", "warn", "_createHooksMap", "afterSanitizeAttributes", "afterSanitizeElements", "afterSanitizeShadowDOM", "beforeSanitizeAttributes", "beforeSanitizeElements", "beforeSanitizeShadowDOM", "uponSanitizeAttribute", "uponSanitizeElement", "uponSanitizeShadowNode", "createDOMPurify", "undefined", "DOMPurify", "root", "version", "VERSION", "removed", "nodeType", "Element", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "NodeFilter", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "remove", "getNextSibling", "getChildNodes", "getParentNode", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "EXTRA_ELEMENT_HANDLING", "tagCheck", "attributeCheck", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "SAFE_FOR_XML", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "ADD_TAGS", "ADD_ATTR", "ADD_FORBID_CONTENTS", "table", "tbody", "TRUSTED_TYPES_POLICY", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "Boolean", "_forceRemove", "node", "removeChild", "_removeAttribute", "name", "attribute", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "SHOW_PROCESSING_INSTRUCTION", "SHOW_CDATA_SECTION", "_isClobbered", "nodeName", "textContent", "attributes", "hasChildNodes", "_isNode", "_executeHooks", "currentNode", "data", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_isBasicCustomElement", "parentNode", "childCount", "i", "childClone", "__removalCount", "expr", "_isValidAttribute", "lcTag", "lcName", "_sanitizeAttributes", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "forceKeepAttr", "attr", "initValue", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "nextNode", "sanitize", "importedNode", "returnNode", "appendChild", "firstChild", "nodeIterator", "normalize", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "entryPoint", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "lineBreakRegex", "getRows", "__name", "s", "breakToPlaceholder", "setupDompurifyHooksIfNotSetup", "setup", "setupDompurifyHooks", "TEMPORARY_ATTRIBUTE", "purify", "node", "removeScript", "txt", "sanitizeMore", "text", "config", "getEffectiveHtmlLabels", "level", "placeholderToBreak", "sanitizeText", "sanitizeTextOrArray", "a", "x", "hasBreaks", "splitBreaks", "getUrl", "useAbsolute", "url", "getMax", "__name", "values", "newValues", "value", "getMin", "parseGenericTypes", "input", "inputSets", "output", "i", "thisSet", "previousSet", "nextSet", "shouldCombineSets", "processSet", "countOccurrence", "string", "substring", "prevCount", "nextCount", "tildeCount", "hasStartingTilde", "chars", "first", "last", "isMathMLSupported", "katexRegex", "hasKatex", "text", "calculateMathMLDimensions", "config", "divElem", "renderKatexSanitized", "dim", "renderKatexUnsanitized", "katex", "outputMode", "lineBreakRegex", "line", "_", "c", "sanitizeText", "common_default", "getRows", "sanitizeTextOrArray", "hasBreaks", "splitBreaks", "removeScript", "getUrl", "evaluate", "d3Attrs", "__name", "d3Elem", "attrs", "attr", "calculateSvgSizeAttrs", "height", "width", "useMaxWidth", "configureSvgSize", "svgElem", "setupGraphViewbox", "graph", "padding", "svgBounds", "sWidth", "sHeight", "log", "vBox", "themes", "cssStyleSheetToString", "cssStyleSheet", "rule", "__name", "getStyles", "type", "userStyles", "options", "svgId", "diagramStyles", "log", "addStylesForDiagram", "diagramTheme", "styles_default", "commonDb_exports", "__export", "clear", "getAccDescription", "getAccTitle", "getDiagramTitle", "setAccDescription", "setAccTitle", "setDiagramTitle", "accTitle", "diagramTitle", "accDescription", "sanitizeText", "__name", "txt", "getConfig", "clear", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "log", "setLogLevel", "getConfig", "setConfig", "defaultConfig", "sanitizeText", "__name", "text", "getConfig", "setupGraphViewbox", "getCommonDb", "commonDb_exports", "diagrams", "registerDiagram", "id", "diagram", "detector", "log", "addDetector", "addStylesForDiagram", "setLogLevel", "getDiagram", "name", "DiagramNotFoundError"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-NN2NZ22Q.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-7FYTHRHK.mjs similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-NN2NZ22Q.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-7FYTHRHK.mjs index b612fc3..932c787 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-NN2NZ22Q.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-7FYTHRHK.mjs @@ -1,4 +1,4 @@ -import{a as c}from"./chunk-VELTKBKT.mjs";function _e(e){return typeof e>"u"||e===null}c(_e,"isNothing");function Ve(e){return typeof e=="object"&&e!==null}c(Ve,"isObject");function Xe(e){return Array.isArray(e)?e:_e(e)?[]:[e]}c(Xe,"toArray");function Ze(e,n){var i,l,r,u;if(n)for(u=Object.keys(n),i=0,l=u.length;i"u"||e===null}c(_e,"isNothing");function Ve(e){return typeof e=="object"&&e!==null}c(Ve,"isObject");function Xe(e){return Array.isArray(e)?e:_e(e)?[]:[e]}c(Xe,"toArray");function Ze(e,n){var i,l,r,u;if(n)for(u=Object.keys(n),i=0,l=u.length;if&&(u=" ... ",n=l-f+u.length),i-l>f&&(o=" ...",i=l+f-o.length),{str:u+e.slice(n,i).replace(/\t/g,"\u2192")+o,pos:l-n+u.length}}c(Q,"getLine");function V(e,n){return C.repeat(" ",n-e.length)+e}c(V,"padStart");function fn(e,n){if(n=Object.create(n||null),!e.buffer)return null;n.maxLength||(n.maxLength=79),typeof n.indent!="number"&&(n.indent=1),typeof n.linesBefore!="number"&&(n.linesBefore=3),typeof n.linesAfter!="number"&&(n.linesAfter=2);for(var i=/\r?\n|\r|\0/g,l=[0],r=[],u,o=-1;u=i.exec(e.buffer);)r.push(u.index),l.push(u.index+u[0].length),e.position<=u.index&&o<0&&(o=l.length-2);o<0&&(o=l.length-1);var f="",a,p,h=Math.min(e.line+n.linesAfter,r.length).toString().length,t=n.maxLength-(n.indent+h+3);for(a=1;a<=n.linesBefore&&!(o-a<0);a++)p=Q(e.buffer,l[o-a],r[o-a],e.position-(l[o]-l[o-a]),t),f=C.repeat(" ",n.indent)+V((e.line-a+1).toString(),h)+" | "+p.str+` `+f;for(p=Q(e.buffer,l[o],r[o],e.position,t),f+=C.repeat(" ",n.indent)+V((e.line+1).toString(),h)+" | "+p.str+` diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-NN2NZ22Q.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-7FYTHRHK.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-NN2NZ22Q.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-7FYTHRHK.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-7J6CGLKN.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-7J6CGLKN.mjs new file mode 100644 index 0000000..20fc2e7 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-7J6CGLKN.mjs @@ -0,0 +1,10 @@ +import{c as H}from"./chunk-KGFNY3KK.mjs";import{a as gt}from"./chunk-5IMINLNL.mjs";import{c as kt,d as ut}from"./chunk-T2UQINTJ.mjs";import{a as Y,b as B,c as rt,d as xt}from"./chunk-5VCL7Z4A.mjs";import{b as yt}from"./chunk-UY5QBCOK.mjs";import{f as mt}from"./chunk-INKRHTLW.mjs";import{p as W,t as ht}from"./chunk-QA3QBVWF.mjs";import{_ as U,t as $,x as K}from"./chunk-67TQ5CYL.mjs";import{$ as ft,G as N,H as at,J as et,K as nt,L as tt,P as st,S as ot,W as it,X as ct,Y as lt,Z as dt,_ as pt,b as y,h as E}from"./chunk-7W6UQGC5.mjs";import{a as d}from"./chunk-AQ6EADP3.mjs";var bt=d((r,t,a,s,o,n=!1,e)=>{t.arrowTypeStart&&wt(r,"start",t.arrowTypeStart,a,s,o,n,e),t.arrowTypeEnd&&wt(r,"end",t.arrowTypeEnd,a,s,o,n,e)},"addEdgeMarkers"),Ut={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_barb_neo:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},Et=["cross","point","circle","lollipop","aggregation","extension","composition","dependency","barb"],wt=d((r,t,a,s,o,n,e=!1,i)=>{let c=Ut[a],l=c&&Et.includes(c.type);if(!c){y.warn(`Unknown arrow type: ${a}`);return}let m=c.type,p=`${o}_${n}-${m}${t==="start"?"Start":"End"}${e&&l?"-margin":""}`;if(i&&i.trim()!==""){let x=i.replace(/[^\dA-Za-z]/g,"_"),h=`${p}_${x}`;if(!document.getElementById(h)){let k=document.getElementById(p);if(k){let u=k.cloneNode(!0);u.id=h,u.querySelectorAll("path, circle, line").forEach(X=>{X.setAttribute("stroke",i),c.fill&&X.setAttribute("fill",i)}),k.parentNode?.appendChild(u)}}r.attr(`marker-${t}`,`url(${s}#${h})`)}else r.attr(`marker-${t}`,`url(${s}#${p})`)},"addEdgeMarker");var Wt=d(r=>typeof r=="string"?r:U()?.flowchart?.curve,"resolveEdgeCurveType"),I=new Map,M=new Map,_r=d(()=>{I.clear(),M.clear()},"clear"),T=d(r=>r?typeof r=="string"?r:r.reduce((t,a)=>t+";"+a,""):"","getLabelStyles"),Sr=d(async(r,t)=>{let a=U(),s=K(a),{labelStyles:o}=ut(t);t.labelStyle=o;let n=r.insert("g").attr("class","edgeLabel"),e=n.insert("g").attr("class","label").attr("data-id",t.id),i=t.labelType==="markdown",l=await mt(r,t.label,{style:T(t.labelStyle),useHtmlLabels:s,addSvgBackground:!0,isNode:!1,markdown:i,width:i?void 0:void 0},a);e.node().appendChild(l),y.info("abc82",t,t.labelType);let m=l.getBBox(),g=m;if(s){let p=l.children[0],x=E(l);m=p.getBoundingClientRect(),g=m,x.attr("width",m.width),x.attr("height",m.height)}else{let p=E(l).select("text").node();p&&typeof p.getBBox=="function"&&(g=p.getBBox())}e.attr("transform",Y(g,s)),I.set(t.id,n),t.width=m.width,t.height=m.height;let f;if(t.startLabelLeft){let p=r.insert("g").attr("class","edgeTerminals"),x=p.insert("g").attr("class","inner"),h=await H(x,t.startLabelLeft,T(t.labelStyle)||"",!1,!1);f=h;let k=h.getBBox();if(s){let u=h.children[0],b=E(h);k=u.getBoundingClientRect(),b.attr("width",k.width),b.attr("height",k.height)}x.attr("transform",Y(k,s)),M.get(t.id)||M.set(t.id,{}),M.get(t.id).startLeft=p,V(f,t.startLabelLeft)}if(t.startLabelRight){let p=r.insert("g").attr("class","edgeTerminals"),x=p.insert("g").attr("class","inner"),h=await H(x,t.startLabelRight,T(t.labelStyle)||"",!1,!1);f=h;let k=h.getBBox();if(s){let u=h.children[0],b=E(h);k=u.getBoundingClientRect(),b.attr("width",k.width),b.attr("height",k.height)}x.attr("transform",Y(k,s)),M.get(t.id)||M.set(t.id,{}),M.get(t.id).startRight=p,V(f,t.startLabelRight)}if(t.endLabelLeft){let p=r.insert("g").attr("class","edgeTerminals"),x=p.insert("g").attr("class","inner"),h=await H(p,t.endLabelLeft,T(t.labelStyle)||"",!1,!1);f=h;let k=h.getBBox();if(s){let u=h.children[0],b=E(h);k=u.getBoundingClientRect(),b.attr("width",k.width),b.attr("height",k.height)}x.attr("transform",Y(k,s)),M.get(t.id)||M.set(t.id,{}),M.get(t.id).endLeft=p,V(f,t.endLabelLeft)}if(t.endLabelRight){let p=r.insert("g").attr("class","edgeTerminals"),x=p.insert("g").attr("class","inner"),h=await H(p,t.endLabelRight,T(t.labelStyle)||"",!1,!1);f=h;let k=h.getBBox();if(s){let u=h.children[0],b=E(h);k=u.getBoundingClientRect(),b.attr("width",k.width),b.attr("height",k.height)}x.attr("transform",Y(k,s)),M.get(t.id)||M.set(t.id,{}),M.get(t.id).endRight=p,V(f,t.endLabelRight)}return l},"insertEdgeLabel");function V(r,t){K(U())&&r&&(r.style.width=t.length*9+"px",r.style.height="12px")}d(V,"setTerminalWidth");var Or=d((r,t)=>{y.debug("Moving label abc88 ",r.id,r.label,I.get(r.id),t);let a=t.updatedPath?t.updatedPath:t.originalPath,s=U(),{subGraphTitleTotalMargin:o}=yt(s);if(r.label){let n=I.get(r.id),e=r.x,i=r.y;if(a){let c=W.calcLabelPosition(a);y.debug("Moving label "+r.label+" from (",e,",",i,") to (",c.x,",",c.y,") abc88"),t.updatedPath&&(e=c.x,i=c.y)}n.attr("transform",`translate(${e}, ${i+o/2})`)}if(r.startLabelLeft){let n=M.get(r.id).startLeft,e=r.x,i=r.y;if(a){let c=W.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_left",a);e=c.x,i=c.y}n.attr("transform",`translate(${e}, ${i})`)}if(r.startLabelRight){let n=M.get(r.id).startRight,e=r.x,i=r.y;if(a){let c=W.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_right",a);e=c.x,i=c.y}n.attr("transform",`translate(${e}, ${i})`)}if(r.endLabelLeft){let n=M.get(r.id).endLeft,e=r.x,i=r.y;if(a){let c=W.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_left",a);e=c.x,i=c.y}n.attr("transform",`translate(${e}, ${i})`)}if(r.endLabelRight){let n=M.get(r.id).endRight,e=r.x,i=r.y;if(a){let c=W.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_right",a);e=c.x,i=c.y}n.attr("transform",`translate(${e}, ${i})`)}},"positionEdgeLabel"),Xt=d((r,t)=>{let a=r.x,s=r.y,o=Math.abs(t.x-a),n=Math.abs(t.y-s),e=r.width/2,i=r.height/2;return o>=e||n>=i},"outsideNode"),Yt=d((r,t,a)=>{y.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(a)} + node : x:${r.x} y:${r.y} w:${r.width} h:${r.height}`);let s=r.x,o=r.y,n=Math.abs(s-a.x),e=r.width/2,i=a.xMath.abs(s-t.x)*c){let g=a.y{y.warn("abc88 cutPathAtIntersect",r,t);let a=[],s=r[0],o=!1;return r.forEach(n=>{if(y.info("abc88 checking point",n,t),!Xt(t,n)&&!o){let e=Yt(t,s,n);y.debug("abc88 inside",n,s,e),y.debug("abc88 intersection",e,t);let i=!1;a.forEach(c=>{i=i||c.x===e.x&&c.y===e.y}),a.some(c=>c.x===e.x&&c.y===e.y)?y.warn("abc88 no intersect",e,a):a.push(e),o=!0}else y.warn("abc88 outside",n,s),s=n,o||a.push(n)}),y.debug("returning points",a),a},"cutPathAtIntersect");function vt(r){let t=[],a=[];for(let s=1;s5&&Math.abs(n.y-o.y)>5||o.y===n.y&&n.x===e.x&&Math.abs(n.x-o.x)>5&&Math.abs(n.y-e.y)>5)&&(t.push(n),a.push(s))}return{cornerPoints:t,cornerPointPositions:a}}d(vt,"extractCornerPoints");var Lt=d(function(r,t,a){let s=t.x-r.x,o=t.y-r.y,n=Math.sqrt(s*s+o*o),e=a/n;return{x:t.x-e*s,y:t.y-e*o}},"findAdjacentPoint"),Ht=d(function(r){let{cornerPointPositions:t}=vt(r),a=[];for(let s=0;s10&&Math.abs(n.y-o.y)>=10){y.debug("Corner point fixing",Math.abs(n.x-o.x),Math.abs(n.y-o.y));let p=5;e.x===i.x?f={x:l<0?i.x-p+g:i.x+p-g,y:m<0?i.y-g:i.y+g}:f={x:l<0?i.x-g:i.x+g,y:m<0?i.y-p+g:i.y+p-g}}else y.debug("Corner point skipping fixing",Math.abs(n.x-o.x),Math.abs(n.y-o.y));a.push(f,c)}else a.push(r[s]);return a},"fixCorners"),Bt=d((r,t,a)=>{let s=r-t-a,o=2,n=2,e=o+n,i=Math.floor(s/e),c=Array(i).fill(`${o} ${n}`).join(" ");return`0 ${t} ${c} ${a}`},"generateDashArray"),$r=d(function(r,t,a,s,o,n,e,i=!1){if(!e)throw new Error(`insertEdge: missing diagramId for edge "${t.id}" \u2014 edge IDs require a diagram prefix for uniqueness`);let{handDrawnSeed:c}=U(),l=t.points,m=!1,g=o;var f=n;let p=[];for(let _ in t.cssCompiledStyles)kt(_)||p.push(t.cssCompiledStyles[_]);y.debug("UIO intersect check",t.points,f.x,g.x),f.intersect&&g.intersect&&!i&&(l=l.slice(1,t.points.length-1),l.unshift(g.intersect(l[0])),y.debug("Last point UIO",t.start,"-->",t.end,l[l.length-1],f,f.intersect(l[l.length-1])),l.push(f.intersect(l[l.length-1])));let x=btoa(JSON.stringify(l));t.toCluster&&(y.info("to cluster abc88",a.get(t.toCluster)),l=Mt(t.points,a.get(t.toCluster).node),m=!0),t.fromCluster&&(y.debug("from cluster abc88",a.get(t.fromCluster),JSON.stringify(l,null,2)),l=Mt(l.reverse(),a.get(t.fromCluster).node).reverse(),m=!0);let h=l.filter(_=>!Number.isNaN(_.y)),k=Wt(t.curve);k!=="rounded"&&(h=Ht(h));let u=N;switch(k){case"linear":u=N;break;case"basis":u=tt;break;case"cardinal":u=st;break;case"bumpX":u=et;break;case"bumpY":u=nt;break;case"catmullRom":u=ot;break;case"monotoneX":u=it;break;case"monotoneY":u=ct;break;case"natural":u=lt;break;case"step":u=dt;break;case"stepAfter":u=ft;break;case"stepBefore":u=pt;break;case"rounded":u=N;break;default:u=tt}let{x:b,y:X}=xt(t),j=at().x(b).y(X).curve(u),L;switch(t.thickness){case"normal":L="edge-thickness-normal";break;case"thick":L="edge-thickness-thick";break;case"invisible":L="edge-thickness-invisible";break;default:L="edge-thickness-normal"}switch(t.pattern){case"solid":L+=" edge-pattern-solid";break;case"dotted":L+=" edge-pattern-dotted";break;case"dashed":L+=" edge-pattern-dashed";break;default:L+=" edge-pattern-solid"}let w,C=k==="rounded"?Tt(Ct(h,t),5):j(h),S=Array.isArray(t.style)?t.style:[t.style],z=S.find(_=>_?.startsWith("stroke:")),O="";t.animate&&(O="edge-animation-fast"),t.animation&&(O="edge-animation-"+t.animation);let D=!1;if(t.look==="handDrawn"){let _=gt.svg(r);Object.assign([],h);let R=_.path(C,{roughness:.3,seed:c});L+=" transition",w=E(R).select("path").attr("id",`${e}-${t.id}`).attr("class"," "+L+(t.classes?" "+t.classes:"")+(O?" "+O:"")).attr("style",S?S.reduce((Q,Z)=>Q+";"+Z,""):"");let q=w.attr("d");w.attr("d",q),r.node().appendChild(w.node())}else{let _=p.join(";"),R=S?S.reduce((P,v)=>P+v+";",""):"",q=(_?_+";"+R+";":R)+";"+(S?S.reduce((P,v)=>P+";"+v,""):"");w=r.append("path").attr("d",C).attr("id",`${e}-${t.id}`).attr("class"," "+L+(t.classes?" "+t.classes:"")+(O?" "+O:"")).attr("style",q),z=q.match(/stroke:([^;]+)/)?.[1],D=t.animate===!0||!!t.animation||_.includes("animation");let Q=w.node(),Z=typeof Q.getTotalLength=="function"?Q.getTotalLength():0,J=rt[t.arrowTypeStart]||0,F=rt[t.arrowTypeEnd]||0;if(t.look==="neo"&&!D){let v=`stroke-dasharray: ${t.pattern==="dotted"||t.pattern==="dashed"?Bt(Z,J,F):`0 ${J} ${Z-J-F} ${F}`}; stroke-dashoffset: 0;`;w.attr("style",v+w.attr("style"))}}w.attr("data-edge",!0),w.attr("data-et","edge"),w.attr("data-id",t.id),w.attr("data-points",x),w.attr("data-look",ht(t.look)),t.showPoints&&h.forEach(_=>{r.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",_.x).attr("cy",_.y)});let A="";(U().flowchart.arrowMarkerAbsolute||U().state.arrowMarkerAbsolute)&&(A=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,A=A.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),y.info("arrowTypeStart",t.arrowTypeStart),y.info("arrowTypeEnd",t.arrowTypeEnd);let St=!D&&t?.look==="neo";bt(w,t,A,e,s,St,z);let Ot=Math.floor(l.length/2),$t=l[Ot];W.isLabelCoordinateInPath($t,w.attr("d"))||(m=!0);let G={};return m&&(G.updatedPath=l),G.originalPath=t.points,G},"insertEdge");function Tt(r,t){if(r.length<2)return"";let a="",s=r.length,o=1e-5;for(let n=0;n({...o}));if(r.length>=2&&B[t.arrowTypeStart]){let o=B[t.arrowTypeStart],n=r[0],e=r[1],{angle:i}=_t(n,e),c=o*Math.cos(i),l=o*Math.sin(i);a[0].x=n.x+c,a[0].y=n.y+l}let s=r.length;if(s>=2&&B[t.arrowTypeEnd]){let o=B[t.arrowTypeEnd],n=r[s-1],e=r[s-2],{angle:i}=_t(e,n),c=o*Math.cos(i),l=o*Math.sin(i);a[s-1].x=n.x-c,a[s-1].y=n.y-l}return a}d(Ct,"applyMarkerOffsetsToPoints");var zt=d((r,t,a,s)=>{t.forEach(o=>{ir[o](r,a,s)})},"insertMarkers"),At=d((r,t,a)=>{y.trace("Making markers for ",a),r.append("defs").append("marker").attr("id",a+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M 1,7 L18,13 V 1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),r.append("marker").attr("id",a+"_"+t+"-extensionStart-margin").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,7 18,13 18,1").style("stroke-width",2).style("stroke-dasharray","0"),r.append("defs").append("marker").attr("id",a+"_"+t+"-extensionEnd-margin").attr("class","marker extension "+t).attr("refX",9).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,1 10,13 18,7").style("stroke-width",2).style("stroke-dasharray","0")},"extension"),Rt=d((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-compositionStart-margin").attr("class","marker composition "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("viewBox","0 0 15 15").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-compositionEnd-margin").attr("class","marker composition "+t).attr("refX",3.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),qt=d((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationStart-margin").attr("class","marker aggregation "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationEnd-margin").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),Qt=d((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyStart-margin").attr("class","marker dependency "+t).attr("refX",4).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyEnd-margin").attr("class","marker dependency "+t).attr("refX",16).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),Zt=d((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),r.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),r.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopStart-margin").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2),r.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopEnd-margin").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2)},"lollipop"),Pt=d((r,t,a)=>{r.append("marker").attr("id",a+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-pointEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",11.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",10.5).attr("markerHeight",14).attr("orient","auto").append("path").attr("d","M 0 0 L 11.5 7 L 0 14 z").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-pointStart-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",1).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11.5).attr("markerHeight",14).attr("orient","auto").append("polygon").attr("points","0,7 11.5,14 11.5,0").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"point"),Nt=d((r,t,a)=>{r.append("marker").attr("id",a+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-circleEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refY",5).attr("refX",12.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-circleStart-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-2).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"circle"),Vt=d((r,t,a)=>{r.append("marker").attr("id",a+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),r.append("marker").attr("id",a+"_"+t+"-crossEnd-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",17.7).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5),r.append("marker").attr("id",a+"_"+t+"-crossStart-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",-3.5).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5).style("stroke-dasharray","1,0")},"cross"),It=d((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),jt=d((r,t,a)=>{let s=$(),{themeVariables:o}=s,{transitionColor:n}=o;r.append("defs").append("marker").attr("id",a+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z"),r.append("defs").append("marker").attr("id",a+"_"+t+"-barbEnd-margin").attr("refX",17).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z").attr("fill",`${n}`)},"barbNeo"),Dt=d((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),r.append("defs").append("marker").attr("id",a+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),Gt=d((r,t,a)=>{let s=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");s.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),s.append("path").attr("d","M9,0 L9,18");let o=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");o.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),o.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),Jt=d((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),r.append("defs").append("marker").attr("id",a+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),Ft=d((r,t,a)=>{let s=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");s.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),s.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let o=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");o.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),o.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),Kt=d((r,t,a)=>{let s=$(),{themeVariables:o}=s,{strokeWidth:n}=o;r.append("defs").append("marker").attr("id",a+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M9,0 L9,18 M15,0 L15,18").attr("stroke-width",`${n}`),r.append("defs").append("marker").attr("id",a+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M3,0 L3,18 M9,0 L9,18").attr("stroke-width",`${n}`)},"only_one_neo"),tr=d((r,t,a)=>{let s=$(),{themeVariables:o}=s,{strokeWidth:n,mainBkg:e}=o,i=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse");i.append("circle").attr("fill",e??"white").attr("cx",21).attr("cy",9).attr("stroke-width",`${n}`).attr("r",6),i.append("path").attr("d","M9,0 L9,18").attr("stroke-width",`${n}`);let c=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("markerUnits","userSpaceOnUse").attr("orient","auto");c.append("circle").attr("fill",e??"white").attr("cx",9).attr("cy",9).attr("stroke-width",`${n}`).attr("r",6),c.append("path").attr("d","M21,0 L21,18").attr("stroke-width",`${n}`)},"zero_or_one_neo"),rr=d((r,t,a)=>{let s=$(),{themeVariables:o}=s,{strokeWidth:n}=o;r.append("defs").append("marker").attr("id",a+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27").attr("stroke-width",`${n}`),r.append("defs").append("marker").attr("id",a+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18").attr("stroke-width",`${n}`)},"one_or_more_neo"),ar=d((r,t,a)=>{let s=$(),{themeVariables:o}=s,{strokeWidth:n,mainBkg:e}=o,i=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto");i.append("circle").attr("fill",e??"white").attr("cx",45.5).attr("cy",18).attr("r",6).attr("stroke-width",`${n}`),i.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18").attr("stroke-width",`${n}`);let c=r.append("defs").append("marker").attr("id",a+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse");c.append("circle").attr("fill",e??"white").attr("cx",11).attr("cy",18).attr("r",6).attr("stroke-width",`${n}`),c.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18").attr("stroke-width",`${n}`)},"zero_or_more_neo"),er=d((r,t,a)=>{r.append("defs").append("marker").attr("id",a+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`)},"requirement_arrow"),nr=d((r,t,a)=>{let s=$(),{themeVariables:o}=s,{strokeWidth:n}=o;r.append("defs").append("marker").attr("id",a+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("stroke-width",`${n}`).attr("viewBox","0 0 25 20").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`).attr("stroke-linejoin","miter")},"requirement_arrow_neo"),sr=d((r,t,a)=>{let s=r.append("defs").append("marker").attr("id",a+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");s.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),s.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),s.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),or=d((r,t,a)=>{let s=$(),{themeVariables:o}=s,{strokeWidth:n}=o,e=r.append("defs").append("marker").attr("id",a+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("g");e.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),e.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),e.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10),e.selectAll("*").attr("stroke-width",`${n}`)},"requirement_contains_neo"),ir={extension:At,composition:Rt,aggregation:qt,dependency:Qt,lollipop:Zt,point:Pt,circle:Nt,cross:Vt,barb:It,barbNeo:jt,only_one:Dt,zero_or_one:Gt,one_or_more:Jt,zero_or_more:Ft,only_one_neo:Kt,zero_or_one_neo:tr,one_or_more_neo:rr,zero_or_more_neo:ar,requirement_arrow:er,requirement_contains:sr,requirement_arrow_neo:nr,requirement_contains_neo:or},Yr=zt;export{_r as a,Sr as b,Or as c,$r as d,Yr as e}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-7J6CGLKN.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-7J6CGLKN.mjs.map new file mode 100644 index 0000000..42d6af3 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-7J6CGLKN.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/rendering-util/rendering-elements/edgeMarker.ts", "../../../src/rendering-util/rendering-elements/edges.js", "../../../src/rendering-util/rendering-elements/markers.js"], + "sourcesContent": ["import type { SVG } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport type { EdgeData } from '../../types.js';\n/**\n * Adds SVG markers to a path element based on the arrow types specified in the edge.\n *\n * @param svgPath - The SVG path element to add markers to.\n * @param edge - The edge data object containing the arrow types.\n * @param url - The URL of the SVG marker definitions.\n * @param id - The ID prefix for the SVG marker definitions.\n * @param diagramType - The type of diagram being rendered.\n */\nexport const addEdgeMarkers = (\n svgPath: SVG,\n edge: Pick,\n url: string,\n id: string,\n diagramType: string,\n useMargin = false,\n strokeColor?: string\n) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(\n svgPath,\n 'start',\n edge.arrowTypeStart,\n url,\n id,\n diagramType,\n useMargin,\n strokeColor\n );\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, 'end', edge.arrowTypeEnd, url, id, diagramType, useMargin, strokeColor);\n }\n};\n\nconst arrowTypesMap = {\n arrow_cross: { type: 'cross', fill: false },\n arrow_point: { type: 'point', fill: true },\n arrow_barb: { type: 'barb', fill: true },\n arrow_barb_neo: { type: 'barb', fill: true },\n arrow_circle: { type: 'circle', fill: false },\n aggregation: { type: 'aggregation', fill: false },\n extension: { type: 'extension', fill: false },\n composition: { type: 'composition', fill: true },\n dependency: { type: 'dependency', fill: true },\n lollipop: { type: 'lollipop', fill: false },\n only_one: { type: 'onlyOne', fill: false },\n zero_or_one: { type: 'zeroOrOne', fill: false },\n one_or_more: { type: 'oneOrMore', fill: false },\n zero_or_more: { type: 'zeroOrMore', fill: false },\n requirement_arrow: { type: 'requirement_arrow', fill: false },\n requirement_contains: { type: 'requirement_contains', fill: false },\n} as const;\n\nconst arrowTypesWithMarginSupport = [\n 'cross',\n 'point',\n 'circle',\n 'lollipop',\n 'aggregation',\n 'extension',\n 'composition',\n 'dependency',\n 'barb',\n];\n\nconst addEdgeMarker = (\n svgPath: SVG,\n position: 'start' | 'end',\n arrowType: string,\n url: string,\n id: string,\n diagramType: string,\n useMargin = false,\n strokeColor?: string\n) => {\n const arrowTypeInfo = arrowTypesMap[arrowType as keyof typeof arrowTypesMap];\n const marginSupport = arrowTypeInfo && arrowTypesWithMarginSupport.includes(arrowTypeInfo.type);\n\n if (!arrowTypeInfo) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return; // unknown arrow type, ignore\n }\n\n const endMarkerType = arrowTypeInfo.type;\n const suffix = position === 'start' ? 'Start' : 'End';\n\n const offset = useMargin && marginSupport ? '-margin' : '';\n const originalMarkerId = `${id}_${diagramType}-${endMarkerType}${suffix}${offset}`;\n\n // If stroke color is specified and non-empty, create or use a colored variant of the marker\n if (strokeColor && strokeColor.trim() !== '') {\n // Create a sanitized color value for use in IDs\n const colorId = strokeColor.replace(/[^\\dA-Za-z]/g, '_');\n const coloredMarkerId = `${originalMarkerId}_${colorId}`;\n\n // Check if the colored marker already exists\n if (!document.getElementById(coloredMarkerId)) {\n // Get the original marker\n const originalMarker = document.getElementById(originalMarkerId);\n if (originalMarker) {\n // Clone the marker and create colored version\n const coloredMarker = originalMarker.cloneNode(true) as Element;\n coloredMarker.id = coloredMarkerId;\n\n // Apply colors to the paths inside the marker\n const paths = coloredMarker.querySelectorAll('path, circle, line');\n paths.forEach((path) => {\n path.setAttribute('stroke', strokeColor);\n\n // Apply fill only to markers that should be filled\n if (arrowTypeInfo.fill) {\n path.setAttribute('fill', strokeColor);\n }\n });\n\n // Add the new colored marker to the defs section\n originalMarker.parentNode?.appendChild(coloredMarker);\n }\n }\n\n // Use the colored marker\n svgPath.attr(`marker-${position}`, `url(${url}#${coloredMarkerId})`);\n } else {\n // Always use the original marker for unstyled edges\n svgPath.attr(`marker-${position}`, `url(${url}#${originalMarkerId})`);\n }\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../../config.js';\nimport { log } from '../../logger.js';\nimport { createText } from '../createText.js';\nimport { computeLabelTransform } from '../labelTransform.js';\nimport utils, { handleUndefinedAttr } from '../../utils.js';\nimport {\n getLineFunctionsWithOffset,\n markerOffsets,\n markerOffsets2,\n} from '../../utils/lineWithOffset.js';\nimport { getSubGraphTitleMargins } from '../../utils/subGraphTitleMargins.js';\n\nimport {\n curveBasis,\n curveLinear,\n curveCardinal,\n curveBumpX,\n curveBumpY,\n curveCatmullRom,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n line,\n select,\n} from 'd3';\nimport rough from 'roughjs';\nimport createLabel from './createLabel.js';\nimport { addEdgeMarkers } from './edgeMarker.ts';\nimport { isLabelStyle, styles2String } from './shapes/handDrawnShapeStyles.js';\n\n/**\n * Resolve the effective curve type for an edge.\n * If edge.curve is a string (e.g. 'rounded', 'linear'), use it directly.\n * Otherwise (undefined, null, or a D3 CurveFactory function), fall back to config.\n * @param {*} edgeCurve - The edge.curve value (string, function, or undefined/null)\n * @returns {string|undefined} - The resolved curve type string\n */\nexport const resolveEdgeCurveType = (edgeCurve) => {\n return typeof edgeCurve === 'string' ? edgeCurve : getConfig()?.flowchart?.curve;\n};\n\nexport const edgeLabels = new Map();\nexport const terminalLabels = new Map();\n\nexport const clear = () => {\n edgeLabels.clear();\n terminalLabels.clear();\n};\n\nexport const getLabelStyles = (styleArray) => {\n if (!styleArray) {\n return '';\n }\n if (typeof styleArray === 'string') {\n return styleArray;\n }\n return styleArray.reduce((acc, style) => acc + ';' + style, '');\n};\n\nexport const insertEdgeLabel = async (elem, edge) => {\n const config = getConfig();\n let useHtmlLabels = getEffectiveHtmlLabels(config);\n const { labelStyles } = styles2String(edge);\n edge.labelStyle = labelStyles;\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label').attr('data-id', edge.id);\n\n const isMarkdown = edge.labelType === 'markdown';\n const markdownWidth = undefined; // Use default width for markdown labels\n const labelElement = await createText(\n elem,\n edge.label,\n {\n style: getLabelStyles(edge.labelStyle),\n useHtmlLabels,\n addSvgBackground: true,\n isNode: false,\n markdown: isMarkdown,\n // Plain text edge labels should auto-wrap, markdown edge labels respect markdownAutoWrap config\n width: isMarkdown ? markdownWidth : undefined,\n },\n config\n );\n\n label.node().appendChild(labelElement);\n log.info('abc82', edge, edge.labelType);\n\n // Center the label\n let bbox = labelElement.getBBox();\n let transformBbox = bbox;\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n transformBbox = bbox;\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n } else {\n // For SVG labels, use text element's bbox so the text is centered on the edge\n const textEl = select(labelElement).select('text').node();\n if (textEl && typeof textEl.getBBox === 'function') {\n transformBbox = textEl.getBBox();\n }\n }\n label.attr('transform', computeLabelTransform(transformBbox, useHtmlLabels));\n\n // Make element accessible by id for positioning\n edgeLabels.set(edge.id, edgeLabel);\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n const startLabelElement = await createLabel(\n inner,\n edge.startLabelLeft,\n getLabelStyles(edge.labelStyle) || '',\n false,\n false\n );\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n const startLabelElement = await createLabel(\n inner,\n edge.startLabelRight,\n getLabelStyles(edge.labelStyle) || '',\n false,\n false\n );\n fo = startLabelElement;\n let slBox = startLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = startLabelElement.children[0];\n const dv = select(startLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n // TODO: Remove? `inner` is not used\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n const endLabelElement = await createLabel(\n endEdgeLabelLeft,\n edge.endLabelLeft,\n getLabelStyles(edge.labelStyle) || '',\n false,\n false\n );\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n // TODO: Remove? `inner` is not used\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n const endLabelElement = await createLabel(\n endEdgeLabelRight,\n edge.endLabelRight,\n getLabelStyles(edge.labelStyle) || '',\n false,\n false\n );\n fo = endLabelElement;\n let slBox = endLabelElement.getBBox();\n if (useHtmlLabels) {\n const div = endLabelElement.children[0];\n const dv = select(endLabelElement);\n slBox = div.getBoundingClientRect();\n dv.attr('width', slBox.width);\n dv.attr('height', slBox.height);\n }\n inner.attr('transform', computeLabelTransform(slBox, useHtmlLabels));\n\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\n\n/**\n * @param {any} fo\n * @param {any} value\n */\nfunction setTerminalWidth(fo, value) {\n if (getEffectiveHtmlLabels(getConfig()) && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.debug('Moving label abc88 ', edge.id, edge.label, edgeLabels.get(edge.id), paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels.get(edge.id);\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.debug(\n 'Moving label ' + edge.label + ' from (',\n x,\n ',',\n y,\n ') to (',\n pos.x,\n ',',\n pos.y,\n ') abc88'\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr('transform', `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n\n if (edge.startLabelLeft) {\n const el = terminalLabels.get(edge.id).startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels.get(edge.id).startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels.get(edge.id).endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels.get(edge.id).endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n};\n\nconst outsideNode = (node, point) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n return dx >= w || dy >= h;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n // Intersection is top or bottom of rect.\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.debug(`abc89 top/bottom calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection on sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n\nconst cutPathAtIntersect = (_points, boundaryNode) => {\n log.warn('abc88 cutPathAtIntersect', _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n log.info('abc88 checking point', point, boundaryNode);\n\n if (!outsideNode(boundaryNode, point) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point);\n log.debug('abc88 inside', point, lastPointOutside, inter);\n log.debug('abc88 intersection', inter, boundaryNode);\n\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn('abc88 no intersect', inter, points);\n }\n isInside = true;\n } else {\n log.warn('abc88 outside', point, lastPointOutside);\n lastPointOutside = point;\n if (!isInside) {\n points.push(point);\n }\n }\n });\n log.debug('returning points', points);\n return points;\n};\n\nfunction extractCornerPoints(points) {\n const cornerPoints = [];\n const cornerPointPositions = [];\n for (let i = 1; i < points.length - 1; i++) {\n const prev = points[i - 1];\n const curr = points[i];\n const next = points[i + 1];\n if (\n prev.x === curr.x &&\n curr.y === next.y &&\n Math.abs(curr.x - next.x) > 5 &&\n Math.abs(curr.y - prev.y) > 5\n ) {\n cornerPoints.push(curr);\n cornerPointPositions.push(i);\n } else if (\n prev.y === curr.y &&\n curr.x === next.x &&\n Math.abs(curr.x - prev.x) > 5 &&\n Math.abs(curr.y - next.y) > 5\n ) {\n cornerPoints.push(curr);\n cornerPointPositions.push(i);\n }\n }\n return { cornerPoints, cornerPointPositions };\n}\n\nconst findAdjacentPoint = function (pointA, pointB, distance) {\n const xDiff = pointB.x - pointA.x;\n const yDiff = pointB.y - pointA.y;\n const length = Math.sqrt(xDiff * xDiff + yDiff * yDiff);\n const ratio = distance / length;\n return { x: pointB.x - ratio * xDiff, y: pointB.y - ratio * yDiff };\n};\n\nconst fixCorners = function (lineData) {\n const { cornerPointPositions } = extractCornerPoints(lineData);\n const newLineData = [];\n for (let i = 0; i < lineData.length; i++) {\n if (cornerPointPositions.includes(i)) {\n const prevPoint = lineData[i - 1];\n const nextPoint = lineData[i + 1];\n const cornerPoint = lineData[i];\n\n const newPrevPoint = findAdjacentPoint(prevPoint, cornerPoint, 5);\n const newNextPoint = findAdjacentPoint(nextPoint, cornerPoint, 5);\n\n const xDiff = newNextPoint.x - newPrevPoint.x;\n const yDiff = newNextPoint.y - newPrevPoint.y;\n newLineData.push(newPrevPoint);\n\n const a = Math.sqrt(2) * 2;\n let newCornerPoint = { x: cornerPoint.x, y: cornerPoint.y };\n if (Math.abs(nextPoint.x - prevPoint.x) > 10 && Math.abs(nextPoint.y - prevPoint.y) >= 10) {\n log.debug(\n 'Corner point fixing',\n Math.abs(nextPoint.x - prevPoint.x),\n Math.abs(nextPoint.y - prevPoint.y)\n );\n const r = 5;\n if (cornerPoint.x === newPrevPoint.x) {\n newCornerPoint = {\n x: xDiff < 0 ? newPrevPoint.x - r + a : newPrevPoint.x + r - a,\n y: yDiff < 0 ? newPrevPoint.y - a : newPrevPoint.y + a,\n };\n } else {\n newCornerPoint = {\n x: xDiff < 0 ? newPrevPoint.x - a : newPrevPoint.x + a,\n y: yDiff < 0 ? newPrevPoint.y - r + a : newPrevPoint.y + r - a,\n };\n }\n } else {\n log.debug(\n 'Corner point skipping fixing',\n Math.abs(nextPoint.x - prevPoint.x),\n Math.abs(nextPoint.y - prevPoint.y)\n );\n }\n newLineData.push(newCornerPoint, newNextPoint);\n } else {\n newLineData.push(lineData[i]);\n }\n }\n return newLineData;\n};\n\nconst generateDashArray = (len, oValueS, oValueE) => {\n const middleLength = len - oValueS - oValueE;\n const dashLength = 2; // Length of each dash\n const gapLength = 2; // Length of each gap\n const dashGapPairLength = dashLength + gapLength;\n\n // Calculate number of complete dash-gap pairs that can fit\n const numberOfPairs = Math.floor(middleLength / dashGapPairLength);\n\n // Generate the middle pattern array\n const middlePattern = Array(numberOfPairs).fill(`${dashLength} ${gapLength}`).join(' ');\n\n // Combine all parts\n const dashArray = `0 ${oValueS} ${middlePattern} ${oValueE}`;\n\n return dashArray;\n};\nexport const insertEdge = function (\n elem,\n edge,\n clusterDb,\n diagramType,\n startNode,\n endNode,\n diagramId,\n skipIntersect = false\n) {\n if (!diagramId) {\n throw new Error(\n `insertEdge: missing diagramId for edge \"${edge.id}\" \u2014 edge IDs require a diagram prefix for uniqueness`\n );\n }\n const { handDrawnSeed } = getConfig();\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = startNode;\n var head = endNode;\n const edgeClassStyles = [];\n for (const key in edge.cssCompiledStyles) {\n if (isLabelStyle(key)) {\n continue;\n }\n edgeClassStyles.push(edge.cssCompiledStyles[key]);\n }\n\n log.debug('UIO intersect check', edge.points, head.x, tail.x);\n if (head.intersect && tail.intersect && !skipIntersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.debug(\n 'Last point UIO',\n edge.start,\n '-->',\n edge.end,\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n const pointsStr = btoa(JSON.stringify(points));\n if (edge.toCluster) {\n log.info('to cluster abc88', clusterDb.get(edge.toCluster));\n points = cutPathAtIntersect(edge.points, clusterDb.get(edge.toCluster).node);\n\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.debug(\n 'from cluster abc88',\n clusterDb.get(edge.fromCluster),\n JSON.stringify(points, null, 2)\n );\n points = cutPathAtIntersect(points.reverse(), clusterDb.get(edge.fromCluster).node).reverse();\n\n pointsHasChanged = true;\n }\n\n let lineData = points.filter((p) => !Number.isNaN(p.y));\n // Resolve curve type: use edge.curve if it's a string, otherwise fall back to config default\n const edgeCurveType = resolveEdgeCurveType(edge.curve);\n // Apply fixCorners for non-rounded curves to pre-round right-angle corners\n // (rounded curve type uses generateRoundedPath instead)\n if (edgeCurveType !== 'rounded') {\n lineData = fixCorners(lineData);\n }\n let curve = curveLinear;\n switch (edgeCurveType) {\n case 'linear':\n curve = curveLinear;\n break;\n case 'basis':\n curve = curveBasis;\n break;\n case 'cardinal':\n curve = curveCardinal;\n break;\n case 'bumpX':\n curve = curveBumpX;\n break;\n case 'bumpY':\n curve = curveBumpY;\n break;\n case 'catmullRom':\n curve = curveCatmullRom;\n break;\n case 'monotoneX':\n curve = curveMonotoneX;\n break;\n case 'monotoneY':\n curve = curveMonotoneY;\n break;\n case 'natural':\n curve = curveNatural;\n break;\n case 'step':\n curve = curveStep;\n break;\n case 'stepAfter':\n curve = curveStepAfter;\n break;\n case 'stepBefore':\n curve = curveStepBefore;\n break;\n case 'rounded':\n curve = curveLinear;\n break;\n default:\n curve = curveBasis;\n }\n\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n case 'invisible':\n strokeClasses = 'edge-thickness-invisible';\n break;\n default:\n strokeClasses = 'edge-thickness-normal';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n default:\n strokeClasses += ' edge-pattern-solid';\n }\n let svgPath;\n let linePath =\n edgeCurveType === 'rounded'\n ? generateRoundedPath(applyMarkerOffsetsToPoints(lineData, edge), 5)\n : lineFunction(lineData);\n const edgeStyles = Array.isArray(edge.style) ? edge.style : [edge.style];\n let strokeColor = edgeStyles.find((style) => style?.startsWith('stroke:'));\n\n let animationClass = '';\n if (edge.animate) {\n animationClass = 'edge-animation-fast';\n }\n if (edge.animation) {\n animationClass = 'edge-animation-' + edge.animation;\n }\n\n let animatedEdge = false;\n if (edge.look === 'handDrawn') {\n const rc = rough.svg(elem);\n Object.assign([], lineData);\n\n const svgPathNode = rc.path(linePath, {\n roughness: 0.3,\n seed: handDrawnSeed,\n });\n\n strokeClasses += ' transition';\n\n svgPath = select(svgPathNode)\n .select('path')\n .attr('id', `${diagramId}-${edge.id}`)\n .attr(\n 'class',\n ' ' +\n strokeClasses +\n (edge.classes ? ' ' + edge.classes : '') +\n (animationClass ? ' ' + animationClass : '')\n )\n .attr('style', edgeStyles ? edgeStyles.reduce((acc, style) => acc + ';' + style, '') : '');\n let d = svgPath.attr('d');\n svgPath.attr('d', d);\n elem.node().appendChild(svgPath.node());\n } else {\n const stylesFromClasses = edgeClassStyles.join(';');\n const styles = edgeStyles ? edgeStyles.reduce((acc, style) => acc + style + ';', '') : '';\n\n const pathStyle =\n (stylesFromClasses ? stylesFromClasses + ';' + styles + ';' : styles) +\n ';' +\n (edgeStyles ? edgeStyles.reduce((acc, style) => acc + ';' + style, '') : '');\n svgPath = elem\n .append('path')\n .attr('d', linePath)\n .attr('id', `${diagramId}-${edge.id}`)\n .attr(\n 'class',\n ' ' +\n strokeClasses +\n (edge.classes ? ' ' + edge.classes : '') +\n (animationClass ? ' ' + animationClass : '')\n )\n .attr('style', pathStyle);\n\n //eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n strokeColor = pathStyle.match(/stroke:([^;]+)/)?.[1];\n\n // Possible fix to remove eslint-disable-next-line\n //strokeColor = /stroke:([^;]+)/.exec(pathStyle)?.[1];\n\n animatedEdge =\n edge.animate === true || !!edge.animation || stylesFromClasses.includes('animation');\n const pathNode = svgPath.node();\n const len = typeof pathNode.getTotalLength === 'function' ? pathNode.getTotalLength() : 0;\n const oValueS = markerOffsets2[edge.arrowTypeStart] || 0;\n const oValueE = markerOffsets2[edge.arrowTypeEnd] || 0;\n\n if (edge.look === 'neo' && !animatedEdge) {\n const dashArray =\n edge.pattern === 'dotted' || edge.pattern === 'dashed'\n ? generateDashArray(len, oValueS, oValueE)\n : `0 ${oValueS} ${len - oValueS - oValueE} ${oValueE}`;\n\n // No offset needed because we already start with a zero-length dash that effectively sets us up for a gap at the start.\n const mOffset = `stroke-dasharray: ${dashArray}; stroke-dashoffset: 0;`;\n svgPath.attr('style', mOffset + svgPath.attr('style'));\n }\n }\n\n // MC Special\n svgPath.attr('data-edge', true);\n svgPath.attr('data-et', 'edge');\n svgPath.attr('data-id', edge.id);\n svgPath.attr('data-points', pointsStr);\n // Add data attributes for neo look support\n svgPath.attr('data-look', handleUndefinedAttr(edge.look));\n // DEBUG code, adds a red circle at each edge coordinate\n // cornerPoints.forEach((point) => {\n // elem\n // .append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 3)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n if (edge.showPoints) {\n lineData.forEach((point) => {\n elem\n .append('circle')\n .style('stroke', 'red')\n .style('fill', 'red')\n .attr('r', 1)\n .attr('cx', point.x)\n .attr('cy', point.y);\n });\n }\n\n let url = '';\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(').replace(/\\)/g, '\\\\)');\n }\n log.info('arrowTypeStart', edge.arrowTypeStart);\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n const useMargin = !animatedEdge && edge?.look === 'neo';\n addEdgeMarkers(svgPath, edge, url, diagramId, diagramType, useMargin, strokeColor);\n const midIndex = Math.floor(points.length / 2);\n const point = points[midIndex];\n if (!utils.isLabelCoordinateInPath(point, svgPath.attr('d'))) {\n pointsHasChanged = true;\n }\n\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n\n/**\n * Generates SVG path data with rounded corners from an array of points.\n * @param {Array} points - Array of points in the format [{x: Number, y: Number}, ...]\n * @param {Number} radius - The radius of the rounded corners\n * @returns {String} - SVG path data string\n */\nfunction generateRoundedPath(points, radius) {\n if (points.length < 2) {\n return '';\n }\n\n let path = '';\n const size = points.length;\n const epsilon = 1e-5;\n\n for (let i = 0; i < size; i++) {\n const currPoint = points[i];\n const prevPoint = points[i - 1];\n const nextPoint = points[i + 1];\n\n if (i === 0) {\n // Move to the first point\n path += `M${currPoint.x},${currPoint.y}`;\n } else if (i === size - 1) {\n // Last point, draw a straight line to the final point\n path += `L${currPoint.x},${currPoint.y}`;\n } else {\n // Calculate vectors for incoming and outgoing segments\n const dx1 = currPoint.x - prevPoint.x;\n const dy1 = currPoint.y - prevPoint.y;\n const dx2 = nextPoint.x - currPoint.x;\n const dy2 = nextPoint.y - currPoint.y;\n\n const len1 = Math.hypot(dx1, dy1);\n const len2 = Math.hypot(dx2, dy2);\n\n // Prevent division by zero\n if (len1 < epsilon || len2 < epsilon) {\n path += `L${currPoint.x},${currPoint.y}`;\n continue;\n }\n\n // Normalize the vectors\n const nx1 = dx1 / len1;\n const ny1 = dy1 / len1;\n const nx2 = dx2 / len2;\n const ny2 = dy2 / len2;\n\n // Calculate the angle between the vectors\n const dot = nx1 * nx2 + ny1 * ny2;\n // Clamp the dot product to avoid numerical issues with acos\n const clampedDot = Math.max(-1, Math.min(1, dot));\n const angle = Math.acos(clampedDot);\n\n // Skip rounding if the angle is too small or too close to 180 degrees\n if (angle < epsilon || Math.abs(Math.PI - angle) < epsilon) {\n path += `L${currPoint.x},${currPoint.y}`;\n continue;\n }\n\n // Calculate the distance to offset the control point\n const cutLen = Math.min(radius / Math.sin(angle / 2), len1 / 2, len2 / 2);\n\n // Calculate the start and end points of the curve\n const startX = currPoint.x - nx1 * cutLen;\n const startY = currPoint.y - ny1 * cutLen;\n const endX = currPoint.x + nx2 * cutLen;\n const endY = currPoint.y + ny2 * cutLen;\n\n // Draw the line to the start of the curve\n path += `L${startX},${startY}`;\n\n // Draw the quadratic Bezier curve\n path += `Q${currPoint.x},${currPoint.y} ${endX},${endY}`;\n }\n }\n\n return path;\n}\n// Helper function to calculate delta and angle between two points\nfunction calculateDeltaAndAngle(point1, point2) {\n if (!point1 || !point2) {\n return { angle: 0, deltaX: 0, deltaY: 0 };\n }\n const deltaX = point2.x - point1.x;\n const deltaY = point2.y - point1.y;\n const angle = Math.atan2(deltaY, deltaX);\n return { angle, deltaX, deltaY };\n}\n\n// Function to adjust the first and last points of the points array\nfunction applyMarkerOffsetsToPoints(points, edge) {\n // Copy the points array to avoid mutating the original data\n const newPoints = points.map((point) => ({ ...point }));\n\n // Handle the first point (start of the edge)\n if (points.length >= 2 && markerOffsets[edge.arrowTypeStart]) {\n const offsetValue = markerOffsets[edge.arrowTypeStart];\n\n const point1 = points[0];\n const point2 = points[1];\n\n const { angle } = calculateDeltaAndAngle(point1, point2);\n\n const offsetX = offsetValue * Math.cos(angle);\n const offsetY = offsetValue * Math.sin(angle);\n\n newPoints[0].x = point1.x + offsetX;\n newPoints[0].y = point1.y + offsetY;\n }\n\n // Handle the last point (end of the edge)\n const n = points.length;\n if (n >= 2 && markerOffsets[edge.arrowTypeEnd]) {\n const offsetValue = markerOffsets[edge.arrowTypeEnd];\n\n const point1 = points[n - 1];\n const point2 = points[n - 2];\n\n const { angle } = calculateDeltaAndAngle(point2, point1);\n\n const offsetX = offsetValue * Math.cos(angle);\n const offsetY = offsetValue * Math.sin(angle);\n\n newPoints[n - 1].x = point1.x - offsetX;\n newPoints[n - 1].y = point1.y - offsetY;\n }\n\n return newPoints;\n}\n", "/** Setup arrow head and define the marker. The result is appended to the svg. */\nimport { log } from '../../logger.js';\nimport * as configApi from '../../config.js';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-extensionStart-margin')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('viewBox', '0 0 20 14')\n .append('polygon')\n .attr('points', '10,7 18,13 18,1')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '0');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionEnd-margin')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 9)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('viewBox', '0 0 20 14')\n .append('polygon')\n .attr('points', '10,1 10,13 18,7')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '0');\n};\n\nconst composition = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionStart-margin')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 15)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .style('stroke-width', 0)\n .attr('viewBox', '0 0 15 15')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionEnd-margin')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 3.5)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .style('stroke-width', 0)\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationStart-margin')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 15)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .style('stroke-width', 2)\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationEnd-margin')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .style('stroke-width', 2)\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 6)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyStart-margin')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 4)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .style('stroke-width', 0)\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyEnd-margin')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 16)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .style('stroke-width', 0)\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst lollipop = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopStart')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopEnd')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopStart-margin')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('circle')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6)\n .attr('stroke-width', 2);\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopEnd-margin')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('circle')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6)\n .attr('stroke-width', 2);\n};\nconst point = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 5)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 8)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 4.5)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 8)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointEnd-margin') //arrows with gap(offset)\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 11.5 14')\n .attr('refX', 11.5) // Adjust to position the arrowhead relative to the line\n .attr('refY', 7) // Half of 14 for vertical center\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 10.5)\n .attr('markerHeight', 14)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 11.5 7 L 0 14 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 0)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointStart-margin')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 11.5 14')\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11.5)\n .attr('markerHeight', 14)\n .attr('orient', 'auto')\n .append('polygon')\n .attr('points', '0,7 11.5,14 11.5,0')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 0)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleEnd-margin')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refY', 5) // Vertical center of viewBox (0 0 10 10)\n .attr('refX', 12.25)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 14)\n .attr('markerHeight', 14)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 0)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleStart-margin')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -2)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 14)\n .attr('markerHeight', 14)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 0)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossEnd-margin')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 15 15')\n .attr('refX', 17.7)\n .attr('refY', 7.5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 L 14,14 M 1,14 L 14,1')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2.5);\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossStart-margin')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 15 15')\n .attr('refX', -3.5)\n .attr('refY', 7.5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 L 14,14 M 1,14 L 14,1')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2.5)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\nconst barbNeo = (elem, type, id) => {\n const config = configApi.getConfig();\n const { themeVariables } = config;\n const { transitionColor } = themeVariables;\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'strokeWidth')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L11,14 L13,7 L11,0 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-barbEnd-margin')\n .attr('refX', 17)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L11,14 L13,7 L11,0 Z')\n .attr('fill', `${transitionColor}`);\n};\n// erDiagram specific markers\nconst only_one = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-onlyOneStart')\n .attr('class', 'marker onlyOne ' + type)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M9,0 L9,18 M15,0 L15,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-onlyOneEnd')\n .attr('class', 'marker onlyOne ' + type)\n .attr('refX', 18)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M3,0 L3,18 M9,0 L9,18');\n};\n\nconst zero_or_one = (elem, type, id) => {\n const startMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrOneStart')\n .attr('class', 'marker zeroOrOne ' + type)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n startMarker\n .append('circle')\n .attr('fill', 'white') // Fill white for now?\n .attr('cx', 21)\n .attr('cy', 9)\n .attr('r', 6);\n startMarker.append('path').attr('d', 'M9,0 L9,18');\n\n const endMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrOneEnd')\n .attr('class', 'marker zeroOrOne ' + type)\n .attr('refX', 30)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n endMarker\n .append('circle')\n .attr('fill', 'white') // Fill white for now?\n .attr('cx', 9)\n .attr('cy', 9)\n .attr('r', 6);\n endMarker.append('path').attr('d', 'M21,0 L21,18');\n};\n\nconst one_or_more = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-oneOrMoreStart')\n .attr('class', 'marker oneOrMore ' + type)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-oneOrMoreEnd')\n .attr('class', 'marker oneOrMore ' + type)\n .attr('refX', 27)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');\n};\n\nconst zero_or_more = (elem, type, id) => {\n const startMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrMoreStart')\n .attr('class', 'marker zeroOrMore ' + type)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n startMarker.append('circle').attr('fill', 'white').attr('cx', 48).attr('cy', 18).attr('r', 6);\n startMarker.append('path').attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');\n\n const endMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrMoreEnd')\n .attr('class', 'marker zeroOrMore ' + type)\n .attr('refX', 39)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n endMarker.append('circle').attr('fill', 'white').attr('cx', 9).attr('cy', 18).attr('r', 6);\n endMarker.append('path').attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');\n};\n\nconst only_one_neo = (elem, type, id) => {\n const config = configApi.getConfig();\n const { themeVariables } = config;\n const { strokeWidth } = themeVariables;\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-onlyOneStart')\n .attr('class', 'marker onlyOne ' + type)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .attr('d', 'M9,0 L9,18 M15,0 L15,18')\n .attr('stroke-width', `${strokeWidth}`);\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-onlyOneEnd')\n .attr('class', 'marker onlyOne ' + type)\n .attr('refX', 18)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .attr('d', 'M3,0 L3,18 M9,0 L9,18')\n .attr('stroke-width', `${strokeWidth}`);\n};\n\nconst zero_or_one_neo = (elem, type, id) => {\n const config = configApi.getConfig();\n const { themeVariables } = config;\n const { strokeWidth, mainBkg } = themeVariables;\n const startMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrOneStart')\n .attr('class', 'marker zeroOrOne ' + type)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse');\n startMarker\n .append('circle')\n .attr('fill', mainBkg ?? 'white')\n .attr('cx', 21)\n .attr('cy', 9)\n .attr('stroke-width', `${strokeWidth}`)\n .attr('r', 6);\n startMarker.append('path').attr('d', 'M9,0 L9,18').attr('stroke-width', `${strokeWidth}`);\n\n const endMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrOneEnd')\n .attr('class', 'marker zeroOrOne ' + type)\n .attr('refX', 30)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('orient', 'auto');\n endMarker\n .append('circle')\n .attr('fill', mainBkg ?? 'white')\n .attr('cx', 9)\n .attr('cy', 9)\n .attr('stroke-width', `${strokeWidth}`)\n .attr('r', 6);\n endMarker.append('path').attr('d', 'M21,0 L21,18').attr('stroke-width', `${strokeWidth}`);\n};\n\nconst one_or_more_neo = (elem, type, id) => {\n const config = configApi.getConfig();\n const { themeVariables } = config;\n const { strokeWidth } = themeVariables;\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-oneOrMoreStart')\n .attr('class', 'marker oneOrMore ' + type)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('path')\n .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27')\n .attr('stroke-width', `${strokeWidth}`);\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-oneOrMoreEnd')\n .attr('class', 'marker oneOrMore ' + type)\n .attr('refX', 27)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18')\n .attr('stroke-width', `${strokeWidth}`);\n};\n\nconst zero_or_more_neo = (elem, type, id) => {\n const config = configApi.getConfig();\n const { themeVariables } = config;\n const { strokeWidth, mainBkg } = themeVariables;\n const startMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrMoreStart')\n .attr('class', 'marker zeroOrMore ' + type)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('orient', 'auto');\n startMarker\n .append('circle')\n .attr('fill', mainBkg ?? 'white')\n .attr('cx', 45.5)\n .attr('cy', 18)\n .attr('r', 6)\n .attr('stroke-width', `${strokeWidth}`);\n startMarker\n .append('path')\n .attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18')\n .attr('stroke-width', `${strokeWidth}`);\n\n const endMarker = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-zeroOrMoreEnd')\n .attr('class', 'marker zeroOrMore ' + type)\n .attr('refX', 39)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse');\n endMarker\n .append('circle')\n .attr('fill', mainBkg ?? 'white')\n .attr('cx', 11)\n .attr('cy', 18)\n .attr('r', 6)\n .attr('stroke-width', `${strokeWidth}`);\n endMarker\n .append('path')\n .attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18')\n .attr('stroke-width', `${strokeWidth}`);\n};\n\nconst requirement_arrow = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-requirement_arrowEnd')\n .attr('refX', 20)\n .attr('refY', 10)\n .attr('markerWidth', 20)\n .attr('markerHeight', 20)\n .attr('orient', 'auto')\n .append('path')\n .attr(\n 'd',\n `M0,0\n L20,10\n M20,10\n L0,20`\n );\n};\n\nconst requirement_arrow_neo = (elem, type, id) => {\n const config = configApi.getConfig();\n const { themeVariables } = config;\n const { strokeWidth } = themeVariables;\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-requirement_arrowEnd')\n .attr('refX', 20)\n .attr('refY', 10)\n .attr('markerWidth', 20)\n .attr('markerHeight', 20)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('stroke-width', `${strokeWidth}`)\n .attr('viewBox', '0 0 25 20')\n .append('path')\n .attr(\n 'd',\n `M0,0\n L20,10\n M20,10\n L0,20`\n )\n .attr('stroke-linejoin', 'miter');\n};\n\nconst requirement_contains = (elem, type, id) => {\n const containsNode = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-requirement_containsStart')\n .attr('refX', 0)\n .attr('refY', 10)\n .attr('markerWidth', 20)\n .attr('markerHeight', 20)\n .attr('orient', 'auto')\n .append('g');\n\n containsNode.append('circle').attr('cx', 10).attr('cy', 10).attr('r', 9).attr('fill', 'none');\n\n containsNode.append('line').attr('x1', 1).attr('x2', 19).attr('y1', 10).attr('y2', 10);\n\n containsNode.append('line').attr('y1', 1).attr('y2', 19).attr('x1', 10).attr('x2', 10);\n};\n\nconst requirement_contains_neo = (elem, type, id) => {\n const config = configApi.getConfig();\n const { themeVariables } = config;\n const { strokeWidth } = themeVariables;\n const containsNode = elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-requirement_containsStart')\n .attr('refX', 0)\n .attr('refY', 10)\n .attr('markerWidth', 20)\n .attr('markerHeight', 20)\n .attr('orient', 'auto')\n .attr('markerUnits', 'userSpaceOnUse')\n .append('g');\n\n containsNode.append('circle').attr('cx', 10).attr('cy', 10).attr('r', 9).attr('fill', 'none');\n\n containsNode.append('line').attr('x1', 1).attr('x2', 19).attr('y1', 10).attr('y2', 10);\n\n containsNode.append('line').attr('y1', 1).attr('y2', 19).attr('x1', 10).attr('x2', 10);\n containsNode.selectAll('*').attr('stroke-width', `${strokeWidth}`);\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semantic free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb,\n barbNeo,\n only_one,\n zero_or_one,\n one_or_more,\n zero_or_more,\n only_one_neo,\n zero_or_one_neo,\n one_or_more_neo,\n zero_or_more_neo,\n requirement_arrow,\n requirement_contains,\n requirement_arrow_neo,\n requirement_contains_neo,\n};\nexport default insertMarkers;\n"], + "mappings": "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", + "names": ["addEdgeMarkers", "__name", "svgPath", "edge", "url", "id", "diagramType", "useMargin", "strokeColor", "addEdgeMarker", "arrowTypesMap", "arrowTypesWithMarginSupport", "position", "arrowType", "arrowTypeInfo", "marginSupport", "log", "endMarkerType", "originalMarkerId", "colorId", "coloredMarkerId", "originalMarker", "coloredMarker", "path", "resolveEdgeCurveType", "__name", "edgeCurve", "getConfig", "edgeLabels", "terminalLabels", "clear", "getLabelStyles", "styleArray", "acc", "style", "insertEdgeLabel", "elem", "edge", "config", "useHtmlLabels", "getEffectiveHtmlLabels", "labelStyles", "styles2String", "edgeLabel", "label", "isMarkdown", "labelElement", "createText", "log", "bbox", "transformBbox", "div", "dv", "select_default", "textEl", "computeLabelTransform", "fo", "startEdgeLabelLeft", "inner", "startLabelElement", "createLabel_default", "slBox", "setTerminalWidth", "startEdgeLabelRight", "endEdgeLabelLeft", "endLabelElement", "endEdgeLabelRight", "value", "positionEdgeLabel", "paths", "path", "siteConfig", "subGraphTitleTotalMargin", "getSubGraphTitleMargins", "el", "x", "y", "pos", "utils_default", "outsideNode", "node", "point", "dx", "dy", "w", "h", "intersection", "outsidePoint", "insidePoint", "r", "Q", "R", "q", "res", "_x", "_y", "cutPathAtIntersect", "_points", "boundaryNode", "points", "lastPointOutside", "isInside", "inter", "pointPresent", "p", "e", "extractCornerPoints", "cornerPoints", "cornerPointPositions", "i", "prev", "curr", "next", "findAdjacentPoint", "pointA", "pointB", "distance", "xDiff", "yDiff", "length", "ratio", "fixCorners", "lineData", "newLineData", "prevPoint", "nextPoint", "cornerPoint", "newPrevPoint", "newNextPoint", "a", "newCornerPoint", "generateDashArray", "len", "oValueS", "oValueE", "middleLength", "dashLength", "gapLength", "dashGapPairLength", "numberOfPairs", "middlePattern", "insertEdge", "clusterDb", "diagramType", "startNode", "endNode", "diagramId", "skipIntersect", "handDrawnSeed", "pointsHasChanged", "tail", "head", "edgeClassStyles", "key", "isLabelStyle", "pointsStr", "edgeCurveType", "curve", "linear_default", "basis_default", "cardinal_default", "bumpX", "bumpY", "catmullRom_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "getLineFunctionsWithOffset", "lineFunction", "line_default", "strokeClasses", "svgPath", "linePath", "generateRoundedPath", "applyMarkerOffsetsToPoints", "edgeStyles", "strokeColor", "animationClass", "animatedEdge", "rc", "at", "svgPathNode", "d", "stylesFromClasses", "styles", "pathStyle", "pathNode", "markerOffsets2", "mOffset", "handleUndefinedAttr", "url", "useMargin", "addEdgeMarkers", "midIndex", "radius", "size", "epsilon", "currPoint", "dx1", "dy1", "dx2", "dy2", "len1", "len2", "nx1", "ny1", "nx2", "ny2", "dot", "clampedDot", "angle", "cutLen", "startX", "startY", "endX", "endY", "calculateDeltaAndAngle", "point1", "point2", "deltaX", "deltaY", "newPoints", "markerOffsets", "offsetValue", "offsetX", "offsetY", "n", "insertMarkers", "__name", "elem", "markerArray", "type", "id", "markerName", "markers", "extension", "log", "composition", "aggregation", "dependency", "lollipop", "point", "circle", "cross", "barb", "barbNeo", "config", "getConfig", "themeVariables", "transitionColor", "only_one", "zero_or_one", "startMarker", "endMarker", "one_or_more", "zero_or_more", "only_one_neo", "strokeWidth", "zero_or_one_neo", "mainBkg", "one_or_more_neo", "zero_or_more_neo", "requirement_arrow", "requirement_arrow_neo", "requirement_contains", "containsNode", "requirement_contains_neo", "markers_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-MGPAVIPZ.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-7W6UQGC5.mjs similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-MGPAVIPZ.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-7W6UQGC5.mjs index 6685e4a..87ef430 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-MGPAVIPZ.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-7W6UQGC5.mjs @@ -1 +1 @@ -import{a as r,c as fu,f as lu}from"./chunk-VELTKBKT.mjs";var Bo=fu((fr,lr)=>{"use strict";(function(t,e){typeof fr=="object"&&typeof lr<"u"?lr.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(fr,(function(){"use strict";var t=1e3,e=6e4,n=36e5,i="millisecond",o="second",a="minute",s="hour",u="day",l="week",f="month",h="quarter",p="year",c="date",m="Invalid Date",_=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,T={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:r(function(v){var d=["th","st","nd","rd"],x=v%100;return"["+v+(d[(x-20)%10]||d[x]||d[0])+"]"},"ordinal")},k=r(function(v,d,x){var S=String(v);return!S||S.length>=d?v:""+Array(d+1-S.length).join(x)+v},"m"),I={s:k,z:r(function(v){var d=-v.utcOffset(),x=Math.abs(d),S=Math.floor(x/60),y=x%60;return(d<=0?"+":"-")+k(S,2,"0")+":"+k(y,2,"0")},"z"),m:r(function v(d,x){if(d.date()1)return v($[0])}else{var P=d.name;A[P]=d,y=P}return!S&&y&&(C=y),y||!S&&C},"t"),U=r(function(v,d){if(w(v))return v.clone();var x=typeof d=="object"?d:{};return x.date=v,x.args=arguments,new B(x)},"O"),E=I;E.l=Y,E.i=w,E.w=function(v,d){return U(v,{locale:d.$L,utc:d.$u,x:d.$x,$offset:d.$offset})};var B=(function(){function v(x){this.$L=Y(x.locale,null,!0),this.parse(x),this.$x=this.$x||x.x||{},this[O]=!0}r(v,"M");var d=v.prototype;return d.parse=function(x){this.$d=(function(S){var y=S.date,D=S.utc;if(y===null)return new Date(NaN);if(E.u(y))return new Date;if(y instanceof Date)return new Date(y);if(typeof y=="string"&&!/Z$/i.test(y)){var $=y.match(_);if($){var P=$[2]-1||0,z=($[7]||"0").substring(0,3);return D?new Date(Date.UTC($[1],P,$[3]||1,$[4]||0,$[5]||0,$[6]||0,z)):new Date($[1],P,$[3]||1,$[4]||0,$[5]||0,$[6]||0,z)}}return new Date(y)})(x),this.init()},d.init=function(){var x=this.$d;this.$y=x.getFullYear(),this.$M=x.getMonth(),this.$D=x.getDate(),this.$W=x.getDay(),this.$H=x.getHours(),this.$m=x.getMinutes(),this.$s=x.getSeconds(),this.$ms=x.getMilliseconds()},d.$utils=function(){return E},d.isValid=function(){return this.$d.toString()!==m},d.isSame=function(x,S){var y=U(x);return this.startOf(S)<=y&&y<=this.endOf(S)},d.isAfter=function(x,S){return U(x){},"trace"),debug:r((...t)=>{},"debug"),info:r((...t)=>{},"info"),warn:r((...t)=>{},"warn"),error:r((...t)=>{},"error"),fatal:r((...t)=>{},"fatal")},Wh=r(function(t="fatal"){let e=St.fatal;typeof t=="string"?t.toLowerCase()in St&&(e=St[t]):typeof t=="number"&&(e=t),pt.trace=()=>{},pt.debug=()=>{},pt.info=()=>{},pt.warn=()=>{},pt.error=()=>{},pt.fatal=()=>{},e<=St.fatal&&(pt.fatal=console.error?console.error.bind(console,mt("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",mt("FATAL"))),e<=St.error&&(pt.error=console.error?console.error.bind(console,mt("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",mt("ERROR"))),e<=St.warn&&(pt.warn=console.warn?console.warn.bind(console,mt("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",mt("WARN"))),e<=St.info&&(pt.info=console.info?console.info.bind(console,mt("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",mt("INFO"))),e<=St.debug&&(pt.debug=console.debug?console.debug.bind(console,mt("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",mt("DEBUG"))),e<=St.trace&&(pt.trace=console.debug?console.debug.bind(console,mt("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",mt("TRACE")))},"setLogLevel"),mt=r(t=>`%c${(0,qo.default)().format("ss.SSS")} : ${t} : `,"format");function Wo(t,e){let n;if(e===void 0)for(let i of t)i!=null&&(n=i)&&(n=i);else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n=o)&&(n=o)}return n}r(Wo,"max");function Vo(t,e){let n;if(e===void 0)for(let i of t)i!=null&&(n>i||n===void 0&&i>=i)&&(n=i);else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n>o||n===void 0&&o>=o)&&(n=o)}return n}r(Vo,"min");function Vt(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}r(Vt,"ascending");function cr(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}r(cr,"descending");function Xt(t){let e,n,i;t.length!==2?(e=Vt,n=r((u,l)=>Vt(t(u),l),"compare2"),i=r((u,l)=>t(u)-l,"delta")):(e=t===Vt||t===cr?t:cu,n=t,i=t);function o(u,l,f=0,h=u.length){if(f>>1;n(u[p],l)<0?f=p+1:h=p}while(f>>1;n(u[p],l)<=0?f=p+1:h=p}while(ff&&i(u[p-1],l)>-i(u[p],l)?p-1:p}return r(s,"center"),{left:o,center:s,right:a}}r(Xt,"bisector");function cu(){return 0}r(cu,"zero");function hr(t){return t===null?NaN:+t}r(hr,"number");var Xo=Xt(Vt),Go=Xo.right,hu=Xo.left,pu=Xt(hr).center,pr=Go;var fe=class extends Map{static{r(this,"InternMap")}constructor(e,n=xu){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(let[i,o]of e)this.set(i,o)}get(e){return super.get(Zo(this,e))}has(e){return super.has(Zo(this,e))}set(e,n){return super.set(mu(this,e),n)}delete(e){return super.delete(du(this,e))}};function Zo({_intern:t,_key:e},n){let i=e(n);return t.has(i)?t.get(i):n}r(Zo,"intern_get");function mu({_intern:t,_key:e},n){let i=e(n);return t.has(i)?t.get(i):(t.set(i,n),n)}r(mu,"intern_set");function du({_intern:t,_key:e},n){let i=e(n);return t.has(i)&&(n=t.get(i),t.delete(i)),n}r(du,"intern_delete");function xu(t){return t!==null&&typeof t=="object"?t.valueOf():t}r(xu,"keyof");var _u=Math.sqrt(50),gu=Math.sqrt(10),yu=Math.sqrt(2);function cn(t,e,n){let i=(e-t)/Math.max(0,n),o=Math.floor(Math.log10(i)),a=i/Math.pow(10,o),s=a>=_u?10:a>=gu?5:a>=yu?2:1,u,l,f;return o<0?(f=Math.pow(10,-o)/s,u=Math.round(t*f),l=Math.round(e*f),u/fe&&--l,f=-f):(f=Math.pow(10,o)*s,u=Math.round(t/f),l=Math.round(e/f),u*fe&&--l),l0))return[];if(t===e)return[t];let i=e=o))return[];let u=a-o+1,l=new Array(u);if(i)if(s<0)for(let f=0;f+t(e)}r(bu,"number");function Mu(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}r(Mu,"center");function Tu(){return!this.__axis}r(Tu,"entering");function Ko(t,e){var n=[],i=null,o=null,a=6,s=6,u=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,f=t===dn||t===mn?-1:1,h=t===mn||t===dr?"x":"y",p=t===dn||t===xr?vu:wu;function c(m){var _=i??(e.ticks?e.ticks.apply(e,n):e.domain()),M=o??(e.tickFormat?e.tickFormat.apply(e,n):mr),T=Math.max(a,0)+u,k=e.range(),I=+k[0]+l,C=+k[k.length-1]+l,A=(e.bandwidth?Mu:bu)(e.copy(),l),O=m.selection?m.selection():m,w=O.selectAll(".domain").data([null]),Y=O.selectAll(".tick").data(_,e).order(),U=Y.exit(),E=Y.enter().append("g").attr("class","tick"),B=Y.select("line"),N=Y.select("text");w=w.merge(w.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),Y=Y.merge(E),B=B.merge(E.append("line").attr("stroke","currentColor").attr(h+"2",f*a)),N=N.merge(E.append("text").attr("fill","currentColor").attr(h,f*T).attr("dy",t===dn?"0em":t===xr?"0.71em":"0.32em")),m!==O&&(w=w.transition(m),Y=Y.transition(m),B=B.transition(m),N=N.transition(m),U=U.transition(m).attr("opacity",Qo).attr("transform",function(v){return isFinite(v=A(v))?p(v+l):this.getAttribute("transform")}),E.attr("opacity",Qo).attr("transform",function(v){var d=this.parentNode.__axis;return p((d&&isFinite(d=d(v))?d:A(v))+l)})),U.remove(),w.attr("d",t===mn||t===dr?s?"M"+f*s+","+I+"H"+l+"V"+C+"H"+f*s:"M"+l+","+I+"V"+C:s?"M"+I+","+f*s+"V"+l+"H"+C+"V"+f*s:"M"+I+","+l+"H"+C),Y.attr("opacity",1).attr("transform",function(v){return p(A(v)+l)}),B.attr(h+"2",f*a),N.attr(h,f*T).text(M),O.filter(Tu).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===dr?"start":t===mn?"end":"middle"),O.each(function(){this.__axis=A})}return r(c,"axis"),c.scale=function(m){return arguments.length?(e=m,c):e},c.ticks=function(){return n=Array.from(arguments),c},c.tickArguments=function(m){return arguments.length?(n=m==null?[]:Array.from(m),c):n.slice()},c.tickValues=function(m){return arguments.length?(i=m==null?null:Array.from(m),c):i&&i.slice()},c.tickFormat=function(m){return arguments.length?(o=m,c):o},c.tickSize=function(m){return arguments.length?(a=s=+m,c):a},c.tickSizeInner=function(m){return arguments.length?(a=+m,c):a},c.tickSizeOuter=function(m){return arguments.length?(s=+m,c):s},c.tickPadding=function(m){return arguments.length?(u=+m,c):u},c.offset=function(m){return arguments.length?(l=+m,c):l},c}r(Ko,"axis");function ku(t){return Ko(dn,t)}r(ku,"axisTop");function Su(t){return Ko(xr,t)}r(Su,"axisBottom");function Cu(){}r(Cu,"none");function It(t){return t==null?Cu:function(){return this.querySelector(t)}}r(It,"default");function _r(t){typeof t!="function"&&(t=It(t));for(var e=this._groups,n=e.length,i=new Array(n),o=0;o=C&&(C=I+1);!(O=T[C])&&++C<_;);A._next=O||null}}return s=new G(s,i),s._enter=u,s._exit=l,s}r(kr,"default");function Uu(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}r(Uu,"arraylike");function Sr(){return new G(this._exit||this._groups.map(Ie),this._parents)}r(Sr,"default");function Cr(t,e,n){var i=this.enter(),o=this,a=this.exit();return typeof t=="function"?(i=t(i),i&&(i=i.selection())):i=i.append(t+""),e!=null&&(o=e(o),o&&(o=o.selection())),n==null?a.remove():n(a),i&&o?i.merge(o).order():o}r(Cr,"default");function Nr(t){for(var e=t.selection?t.selection():t,n=this._groups,i=e._groups,o=n.length,a=i.length,s=Math.min(o,a),u=new Array(o),l=0;l=0;)(s=i[o])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}r(Ar,"default");function Dr(t){t||(t=Lu);function e(p,c){return p&&c?t(p.__data__,c.__data__):!p-!c}r(e,"compareNode");for(var n=this._groups,i=n.length,o=new Array(i),a=0;ae?1:t>=e?0:NaN}r(Lu,"ascending");function $r(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}r($r,"default");function Or(){return Array.from(this)}r(Or,"default");function Er(){for(var t=this._groups,e=0,n=t.length;e=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),Yr.hasOwnProperty(e)?{space:Yr[e],local:t}:t}r(wt,"default");function zu(t){return function(){this.removeAttribute(t)}}r(zu,"attrRemove");function Hu(t){return function(){this.removeAttributeNS(t.space,t.local)}}r(Hu,"attrRemoveNS");function Bu(t,e){return function(){this.setAttribute(t,e)}}r(Bu,"attrConstant");function qu(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}r(qu,"attrConstantNS");function Wu(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}r(Wu,"attrFunction");function Vu(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}r(Vu,"attrFunctionNS");function Fr(t,e){var n=wt(t);if(arguments.length<2){var i=this.node();return n.local?i.getAttributeNS(n.space,n.local):i.getAttribute(n)}return this.each((e==null?n.local?Hu:zu:typeof e=="function"?n.local?Vu:Wu:n.local?qu:Bu)(n,e))}r(Fr,"default");function Pe(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}r(Pe,"default");function Xu(t){return function(){this.style.removeProperty(t)}}r(Xu,"styleRemove");function Gu(t,e,n){return function(){this.style.setProperty(t,e,n)}}r(Gu,"styleConstant");function Zu(t,e,n){return function(){var i=e.apply(this,arguments);i==null?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}r(Zu,"styleFunction");function Ur(t,e,n){return arguments.length>1?this.each((e==null?Xu:typeof e=="function"?Zu:Gu)(t,e,n??"")):Rt(this.node(),t)}r(Ur,"default");function Rt(t,e){return t.style.getPropertyValue(e)||Pe(t).getComputedStyle(t,null).getPropertyValue(e)}r(Rt,"styleValue");function Qu(t){return function(){delete this[t]}}r(Qu,"propertyRemove");function Ku(t,e){return function(){this[t]=e}}r(Ku,"propertyConstant");function Ju(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}r(Ju,"propertyFunction");function Lr(t,e){return arguments.length>1?this.each((e==null?Qu:typeof e=="function"?Ju:Ku)(t,e)):this.node()[t]}r(Lr,"default");function Jo(t){return t.trim().split(/^|\s+/)}r(Jo,"classArray");function zr(t){return t.classList||new jo(t)}r(zr,"classList");function jo(t){this._node=t,this._names=Jo(t.getAttribute("class")||"")}r(jo,"ClassList");jo.prototype={add:r(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:r(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:r(function(t){return this._names.indexOf(t)>=0},"contains")};function ta(t,e){for(var n=zr(t),i=-1,o=e.length;++i=0&&(n=e.slice(i+1),e=e.slice(0,i)),{type:e,name:n}})}r(gf,"parseTypenames");function yf(t){return function(){var e=this.__on;if(e){for(var n=0,i=-1,o=e.length,a;n>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?gn(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?gn(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=kf.exec(t))?new nt(e[1],e[2],e[3],1):(e=Sf.exec(t))?new nt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Cf.exec(t))?gn(e[1],e[2],e[3],e[4]):(e=Nf.exec(t))?gn(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Af.exec(t))?ca(e[1],e[2]/100,e[3]/100,1):(e=Df.exec(t))?ca(e[1],e[2]/100,e[3]/100,e[4]):oa.hasOwnProperty(t)?ua(oa[t]):t==="transparent"?new nt(NaN,NaN,NaN,0):null}r(_t,"color");function ua(t){return new nt(t>>16&255,t>>8&255,t&255,1)}r(ua,"rgbn");function gn(t,e,n,i){return i<=0&&(t=e=n=NaN),new nt(t,e,n,i)}r(gn,"rgba");function ri(t){return t instanceof Yt||(t=_t(t)),t?(t=t.rgb(),new nt(t.r,t.g,t.b,t.opacity)):new nt}r(ri,"rgbConvert");function de(t,e,n,i){return arguments.length===1?ri(t):new nt(t,e,n,i??1)}r(de,"rgb");function nt(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}r(nt,"Rgb");Pt(nt,de,pe(Yt,{brighter(t){return t=t==null?vn:Math.pow(vn,t),new nt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Fe:Math.pow(Fe,t),new nt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new nt(Zt(this.r),Zt(this.g),Zt(this.b),wn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:fa,formatHex:fa,formatHex8:Ef,formatRgb:la,toString:la}));function fa(){return`#${Gt(this.r)}${Gt(this.g)}${Gt(this.b)}`}r(fa,"rgb_formatHex");function Ef(){return`#${Gt(this.r)}${Gt(this.g)}${Gt(this.b)}${Gt((isNaN(this.opacity)?1:this.opacity)*255)}`}r(Ef,"rgb_formatHex8");function la(){let t=wn(this.opacity);return`${t===1?"rgb(":"rgba("}${Zt(this.r)}, ${Zt(this.g)}, ${Zt(this.b)}${t===1?")":`, ${t})`}`}r(la,"rgb_formatRgb");function wn(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}r(wn,"clampa");function Zt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}r(Zt,"clampi");function Gt(t){return t=Zt(t),(t<16?"0":"")+t.toString(16)}r(Gt,"hex");function ca(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new xt(t,e,n,i)}r(ca,"hsla");function pa(t){if(t instanceof xt)return new xt(t.h,t.s,t.l,t.opacity);if(t instanceof Yt||(t=_t(t)),!t)return new xt;if(t instanceof xt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,i=t.b/255,o=Math.min(e,n,i),a=Math.max(e,n,i),s=NaN,u=a-o,l=(a+o)/2;return u?(e===a?s=(n-i)/u+(n0&&l<1?0:s,new xt(s,u,l,t.opacity)}r(pa,"hslConvert");function ma(t,e,n,i){return arguments.length===1?pa(t):new xt(t,e,n,i??1)}r(ma,"hsl");function xt(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}r(xt,"Hsl");Pt(xt,ma,pe(Yt,{brighter(t){return t=t==null?vn:Math.pow(vn,t),new xt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fe:Math.pow(Fe,t),new xt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,o=2*n-i;return new nt(ni(t>=240?t-240:t+120,o,i),ni(t,o,i),ni(t<120?t+240:t-120,o,i),this.opacity)},clamp(){return new xt(ha(this.h),yn(this.s),yn(this.l),wn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=wn(this.opacity);return`${t===1?"hsl(":"hsla("}${ha(this.h)}, ${yn(this.s)*100}%, ${yn(this.l)*100}%${t===1?")":`, ${t})`}`}}));function ha(t){return t=(t||0)%360,t<0?t+360:t}r(ha,"clamph");function yn(t){return Math.max(0,Math.min(1,t||0))}r(yn,"clampt");function ni(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}r(ni,"hsl2rgb");var da=Math.PI/180,xa=180/Math.PI;var bn=18,_a=.96422,ga=1,ya=.82521,va=4/29,xe=6/29,wa=3*xe*xe,If=xe*xe*xe;function ba(t){if(t instanceof Mt)return new Mt(t.l,t.a,t.b,t.opacity);if(t instanceof Nt)return Ma(t);t instanceof nt||(t=ri(t));var e=si(t.r),n=si(t.g),i=si(t.b),o=ii((.2225045*e+.7168786*n+.0606169*i)/ga),a,s;return e===n&&n===i?a=s=o:(a=ii((.4360747*e+.3850649*n+.1430804*i)/_a),s=ii((.0139322*e+.0971045*n+.7141733*i)/ya)),new Mt(116*o-16,500*(a-o),200*(o-s),t.opacity)}r(ba,"labConvert");function ui(t,e,n,i){return arguments.length===1?ba(t):new Mt(t,e,n,i??1)}r(ui,"lab");function Mt(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}r(Mt,"Lab");Pt(Mt,ui,pe(Yt,{brighter(t){return new Mt(this.l+bn*(t??1),this.a,this.b,this.opacity)},darker(t){return new Mt(this.l-bn*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=_a*oi(e),t=ga*oi(t),n=ya*oi(n),new nt(ai(3.1338561*e-1.6168667*t-.4906146*n),ai(-.9787684*e+1.9161415*t+.033454*n),ai(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ii(t){return t>If?Math.pow(t,1/3):t/wa+va}r(ii,"xyz2lab");function oi(t){return t>xe?t*t*t:wa*(t-va)}r(oi,"lab2xyz");function ai(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}r(ai,"lrgb2rgb");function si(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}r(si,"rgb2lrgb");function Rf(t){if(t instanceof Nt)return new Nt(t.h,t.c,t.l,t.opacity);if(t instanceof Mt||(t=ba(t)),t.a===0&&t.b===0)return new Nt(NaN,0()=>t,"default");function Ta(t,e){return function(n){return t+n*e}}r(Ta,"linear");function Pf(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}r(Pf,"exponential");function ka(t,e){var n=e-t;return n?Ta(t,n>180||n<-180?n-360*Math.round(n/360):n):_e(isNaN(t)?e:t)}r(ka,"hue");function Sa(t){return(t=+t)==1?At:function(e,n){return n-e?Pf(e,n,t):_e(isNaN(e)?n:e)}}r(Sa,"gamma");function At(t,e){var n=e-t;return n?Ta(t,n):_e(isNaN(t)?e:t)}r(At,"nogamma");function Ca(t){return function(e,n){var i=t((e=Le(e)).h,(n=Le(n)).h),o=At(e.c,n.c),a=At(e.l,n.l),s=At(e.opacity,n.opacity);return function(u){return e.h=i(u),e.c=o(u),e.l=a(u),e.opacity=s(u),e+""}}}r(Ca,"hcl");var Yf=Ca(ka),Ff=Ca(At);function fi(t,e,n,i,o){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*i+s*o)/6}r(fi,"basis");function li(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),o=t[i],a=t[i+1],s=i>0?t[i-1]:2*o-a,u=in&&(a=e.slice(n,a),u[s]?u[s]+=a:u[++s]=a),(i=i[0])===(o=o[0])?u[s]?u[s]+=o:u[++s]=o:(u[++s]=null,l.push({i:s,x:j(i,o)})),n=di.lastIndex;return n180?h+=360:h-f>180&&(f+=360),c.push({i:p.push(o(p)+"rotate(",null,i)-2,x:j(f,h)})):h&&p.push(o(p)+"rotate("+h+i)}r(s,"rotate");function u(f,h,p,c){f!==h?c.push({i:p.push(o(p)+"skewX(",null,i)-2,x:j(f,h)}):h&&p.push(o(p)+"skewX("+h+i)}r(u,"skewX");function l(f,h,p,c,m,_){if(f!==p||h!==c){var M=m.push(o(m)+"scale(",null,",",null,")");_.push({i:M-4,x:j(f,p)},{i:M-2,x:j(h,c)})}else(p!==1||c!==1)&&m.push(o(m)+"scale("+p+","+c+")")}return r(l,"scale"),function(f,h){var p=[],c=[];return f=t(f),h=t(h),a(f.translateX,f.translateY,h.translateX,h.translateY,p,c),s(f.rotate,h.rotate,p,c),u(f.skewX,h.skewX,p,c),l(f.scaleX,f.scaleY,h.scaleX,h.scaleY,p,c),f=h=null,function(m){for(var _=-1,M=c.length,T;++_=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}r(yi,"default");function Kt(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,i=t.slice(0,n);return[i.length>1?i[0]+i.slice(2):i,+t.slice(n+1)]}r(Kt,"formatDecimalParts");function gt(t){return t=Kt(Math.abs(t)),t?t[1]:NaN}r(gt,"default");function vi(t,e){return function(n,i){for(var o=n.length,a=[],s=0,u=t[0],l=0;o>0&&u>0&&(l+u+1>i&&(u=Math.max(1,i-l)),a.push(n.substring(o-=u,o+u)),!((l+=u+1)>i));)u=t[s=(s+1)%t.length];return a.reverse().join(e)}}r(vi,"default");function wi(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}r(wi,"default");var Bf=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ut(t){if(!(e=Bf.exec(t)))throw new Error("invalid format: "+t);var e;return new Cn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}r(Ut,"formatSpecifier");Ut.prototype=Cn.prototype;function Cn(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}r(Cn,"FormatSpecifier");Cn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function bi(t){t:for(var e=t.length,n=1,i=-1,o;n0&&(i=0);break}return i>0?t.slice(0,i)+t.slice(o+1):t}r(bi,"default");var Mi;function Ti(t,e){var n=Kt(t,e);if(!n)return t+"";var i=n[0],o=n[1],a=o-(Mi=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,s=i.length;return a===s?i:a>s?i+new Array(a-s+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Kt(t,Math.max(0,e+a-1))[0]}r(Ti,"default");function Nn(t,e){var n=Kt(t,e);if(!n)return t+"";var i=n[0],o=n[1];return o<0?"0."+new Array(-o).join("0")+i:i.length>o+1?i.slice(0,o+1)+"."+i.slice(o+1):i+new Array(o-i.length+2).join("0")}r(Nn,"default");var ki={"%":r((t,e)=>(t*100).toFixed(e),"%"),b:r(t=>Math.round(t).toString(2),"b"),c:r(t=>t+"","c"),d:yi,e:r((t,e)=>t.toExponential(e),"e"),f:r((t,e)=>t.toFixed(e),"f"),g:r((t,e)=>t.toPrecision(e),"g"),o:r(t=>Math.round(t).toString(8),"o"),p:r((t,e)=>Nn(t*100,e),"p"),r:Nn,s:Ti,X:r(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:r(t=>Math.round(t).toString(16),"x")};function An(t){return t}r(An,"default");var Ra=Array.prototype.map,Pa=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Si(t){var e=t.grouping===void 0||t.thousands===void 0?An:vi(Ra.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",i=t.currency===void 0?"":t.currency[1]+"",o=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?An:wi(Ra.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",u=t.minus===void 0?"\u2212":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function f(p){p=Ut(p);var c=p.fill,m=p.align,_=p.sign,M=p.symbol,T=p.zero,k=p.width,I=p.comma,C=p.precision,A=p.trim,O=p.type;O==="n"?(I=!0,O="g"):ki[O]||(C===void 0&&(C=12),A=!0,O="g"),(T||c==="0"&&m==="=")&&(T=!0,c="0",m="=");var w=M==="$"?n:M==="#"&&/[boxX]/.test(O)?"0"+O.toLowerCase():"",Y=M==="$"?i:/[%p]/.test(O)?s:"",U=ki[O],E=/[defgprs%]/.test(O);C=C===void 0?6:/[gprs]/.test(O)?Math.max(1,Math.min(21,C)):Math.max(0,Math.min(20,C));function B(N){var v=w,d=Y,x,S,y;if(O==="c")d=U(N)+d,N="";else{N=+N;var D=N<0||1/N<0;if(N=isNaN(N)?l:U(Math.abs(N),C),A&&(N=bi(N)),D&&+N==0&&_!=="+"&&(D=!1),v=(D?_==="("?_:u:_==="-"||_==="("?"":_)+v,d=(O==="s"?Pa[8+Mi/3]:"")+d+(D&&_==="("?")":""),E){for(x=-1,S=N.length;++xy||y>57){d=(y===46?o+N.slice(x+1):N.slice(x))+d,N=N.slice(0,x);break}}}I&&!T&&(N=e(N,1/0));var $=v.length+N.length+d.length,P=$>1)+v+N+d+P.slice($);break;default:N=P+v+N+d;break}return a(N)}return r(B,"format"),B.toString=function(){return p+""},B}r(f,"newFormat");function h(p,c){var m=f((p=Ut(p),p.type="f",p)),_=Math.max(-8,Math.min(8,Math.floor(gt(c)/3)))*3,M=Math.pow(10,-_),T=Pa[8+_/3];return function(k){return m(M*k)+T}}return r(h,"formatPrefix"),{format:f,formatPrefix:h}}r(Si,"default");var Dn,$n,On;Ci({thousands:",",grouping:[3],currency:["$",""]});function Ci(t){return Dn=Si(t),$n=Dn.format,On=Dn.formatPrefix,Dn}r(Ci,"defaultLocale");function En(t){return Math.max(0,-gt(Math.abs(t)))}r(En,"default");function In(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(gt(e)/3)))*3-gt(Math.abs(t)))}r(In,"default");function Rn(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,gt(e)-gt(t))+1}r(Rn,"default");function qf(t){var e=0,n=t.children,i=n&&n.length;if(!i)e=1;else for(;--i>=0;)e+=n[i].value;t.value=e}r(qf,"count");function Ni(){return this.eachAfter(qf)}r(Ni,"default");function Ai(t,e){let n=-1;for(let i of this)t.call(e,i,++n,this);return this}r(Ai,"default");function Di(t,e){for(var n=this,i=[n],o,a,s=-1;n=i.pop();)if(t.call(e,n,++s,this),o=n.children)for(a=o.length-1;a>=0;--a)i.push(o[a]);return this}r(Di,"default");function $i(t,e){for(var n=this,i=[n],o=[],a,s,u,l=-1;n=i.pop();)if(o.push(n),a=n.children)for(s=0,u=a.length;s=0;)n+=i[o].value;e.value=n})}r(Ei,"default");function Ii(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}r(Ii,"default");function Ri(t){for(var e=this,n=Wf(e,t),i=[e];e!==n;)e=e.parent,i.push(e);for(var o=i.length;t!==n;)i.splice(o,0,t),t=t.parent;return i}r(Ri,"default");function Wf(t,e){if(t===e)return t;var n=t.ancestors(),i=e.ancestors(),o=null;for(t=n.pop(),e=i.pop();t===e;)o=t,t=n.pop(),e=i.pop();return o}r(Wf,"leastCommonAncestor");function Pi(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}r(Pi,"default");function Yi(){return Array.from(this)}r(Yi,"default");function Fi(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}r(Fi,"default");function Ui(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e}r(Ui,"default");function*Li(){var t=this,e,n=[t],i,o,a;do for(e=n.reverse(),n=[];t=e.pop();)if(yield t,i=t.children)for(o=0,a=i.length;o=0;--u)o.push(a=s[u]=new ze(s[u])),a.parent=i,a.depth=i.depth+1;return n.eachBefore(Qf)}r(Pn,"hierarchy");function Vf(){return Pn(this).eachBefore(Zf)}r(Vf,"node_copy");function Xf(t){return t.children}r(Xf,"objectChildren");function Gf(t){return Array.isArray(t)?t[1]:null}r(Gf,"mapChildren");function Zf(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}r(Zf,"copyData");function Qf(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}r(Qf,"computeHeight");function ze(t){this.data=t,this.depth=this.height=0,this.parent=null}r(ze,"Node");ze.prototype=Pn.prototype={constructor:ze,count:Ni,each:Ai,eachAfter:$i,eachBefore:Di,find:Oi,sum:Ei,sort:Ii,path:Ri,ancestors:Pi,descendants:Yi,leaves:Fi,links:Ui,copy:Vf,[Symbol.iterator]:Li};function zi(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}r(zi,"default");function Hi(t,e,n,i,o){for(var a=t.children,s,u=-1,l=a.length,f=t.value&&(i-e)/t.value;++uI&&(I=f),w=T*T*O,C=Math.max(I/w,w/k),C>A){T-=f;break}A=C}s.push(l={value:T,dice:m<_,children:u.slice(h,p)}),l.dice?Hi(l,n,i,o,M?i+=_*T/M:a):Bi(l,n,i,M?n+=m*T/M:o,a),M-=T,h=p}return s}r(Jf,"squarifyRatio");var Ya=r((function t(e){function n(i,o,a,s,u){Jf(e,i,o,a,s,u)}return r(n,"squarify"),n.ratio=function(i){return t((i=+i)>1?i:1)},n}),"custom")(Kf);function Fa(t){if(typeof t!="function")throw new Error;return t}r(Fa,"required");function ye(){return 0}r(ye,"constantZero");function Jt(t){return function(){return t}}r(Jt,"default");function Ua(){var t=Ya,e=!1,n=1,i=1,o=[0],a=ye,s=ye,u=ye,l=ye,f=ye;function h(c){return c.x0=c.y0=0,c.x1=n,c.y1=i,c.eachBefore(p),o=[0],e&&c.eachBefore(zi),c}r(h,"treemap");function p(c){var m=o[c.depth],_=c.x0+m,M=c.y0+m,T=c.x1-m,k=c.y1-m;T<_&&(_=T=(_+T)/2),ke&&(n=t,t=e,e=n),function(i){return Math.max(t,Math.min(e,i))}}r(jf,"clamper");function tl(t,e,n){var i=t[0],o=t[1],a=e[0],s=e[1];return o2?el:tl,l=f=null,p}r(h,"rescale");function p(c){return c==null||isNaN(c=+c)?a:(l||(l=u(t.map(i),e,n)))(i(s(c)))}return r(p,"scale"),p.invert=function(c){return s(o((f||(f=u(e,t.map(i),j)))(c)))},p.domain=function(c){return arguments.length?(t=Array.from(c,Vi),h()):t.slice()},p.range=function(c){return arguments.length?(e=Array.from(c),h()):e.slice()},p.rangeRound=function(c){return e=Array.from(c),n=Mn,h()},p.clamp=function(c){return arguments.length?(s=c?!0:ve,h()):s!==ve},p.interpolate=function(c){return arguments.length?(n=c,h()):n},p.unknown=function(c){return arguments.length?(a=c,p):a},function(c,m){return i=c,o=m,h()}}r(nl,"transformer");function Be(){return nl()(ve,ve)}r(Be,"continuous");function Gi(t,e,n,i){var o=le(t,e,n),a;switch(i=Ut(i??",f"),i.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return i.precision==null&&!isNaN(a=In(o,s))&&(i.precision=a),On(i,s)}case"":case"e":case"g":case"p":case"r":{i.precision==null&&!isNaN(a=Rn(o,Math.max(Math.abs(t),Math.abs(e))))&&(i.precision=a-(i.type==="e"));break}case"f":case"%":{i.precision==null&&!isNaN(a=En(o))&&(i.precision=a-(i.type==="%")*2);break}}return $n(i)}r(Gi,"tickFormat");function rl(t){var e=t.domain;return t.ticks=function(n){var i=e();return hn(i[0],i[i.length-1],n??10)},t.tickFormat=function(n,i){var o=e();return Gi(o[0],o[o.length-1],n??10,i)},t.nice=function(n){n==null&&(n=10);var i=e(),o=0,a=i.length-1,s=i[o],u=i[a],l,f,h=10;for(u0;){if(f=Ee(s,u,n),f===l)return i[o]=s,i[a]=u,e(i);if(f>0)s=Math.floor(s/f)*f,u=Math.ceil(u/f)*f;else if(f<0)s=Math.ceil(s*f)/f,u=Math.floor(u*f)/f;else break;l=f}return t},t}r(rl,"linearish");function Zi(){var t=Be();return t.copy=function(){return Yn(t,Zi())},Lt.apply(t,arguments),rl(t)}r(Zi,"linear");var Qi=new Date,Ki=new Date;function H(t,e,n,i){function o(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return r(o,"interval"),o.floor=a=>(t(a=new Date(+a)),a),o.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),o.round=a=>{let s=o(a),u=o.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),o.range=(a,s,u)=>{let l=[];if(a=o.ceil(a),u=u==null?1:Math.floor(u),!(a0))return l;let f;do l.push(f=new Date(+a)),e(a,u),t(a);while(fH(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,u)=>{if(s>=s)if(u<0)for(;++u<=0;)for(;e(s,-1),!a(s););else for(;--u>=0;)for(;e(s,1),!a(s););}),n&&(o.count=(a,s)=>(Qi.setTime(+a),Ki.setTime(+s),t(Qi),t(Ki),Math.floor(n(Qi,Ki))),o.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?o.filter(i?s=>i(s)%a===0:s=>o.count(0,s)%a===0):o)),o}r(H,"timeInterval");var jt=H(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);jt.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?H(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):jt);var za=jt.range;var Tt=H(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),Ha=Tt.range;var we=H(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),il=we.range,Fn=H(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),ol=Fn.range;var be=H(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),al=be.range,Un=H(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),sl=Un.range;var Dt=H(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),ul=Dt.range,We=H(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),fl=We.range,Ln=H(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),ll=Ln.range;function ne(t){return H(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}r(ne,"timeWeekday");var $t=ne(0),Me=ne(1),qa=ne(2),Wa=ne(3),zt=ne(4),Va=ne(5),Xa=ne(6),Ga=$t.range,cl=Me.range,hl=qa.range,pl=Wa.range,ml=zt.range,dl=Va.range,xl=Xa.range;function re(t){return H(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/6048e5)}r(re,"utcWeekday");var ie=re(0),Te=re(1),Za=re(2),Qa=re(3),Ht=re(4),Ka=re(5),Ja=re(6),ja=ie.range,_l=Te.range,gl=Za.range,yl=Qa.range,vl=Ht.range,wl=Ka.range,bl=Ja.range;var ke=H(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),Ml=ke.range,zn=H(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),Tl=zn.range;var lt=H(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());lt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:H(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});var kl=lt.range,yt=H(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());yt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:H(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});var Sl=yt.range;function es(t,e,n,i,o,a){let s=[[Tt,1,1e3],[Tt,5,5*1e3],[Tt,15,15*1e3],[Tt,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[i,1,864e5],[i,2,2*864e5],[n,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function u(f,h,p){let c=hT).right(s,c);if(m===s.length)return t.every(le(f/31536e6,h/31536e6,p));if(m===0)return jt.every(Math.max(le(f,h,p),1));let[_,M]=s[c/s[m-1][2]53)return null;"w"in g||(g.w=1),"Z"in g?(q=eo(Ve(g.y,0,1)),ut=q.getUTCDay(),q=ut>4||ut===0?Te.ceil(q):Te(q),q=We.offset(q,(g.V-1)*7),g.y=q.getUTCFullYear(),g.m=q.getUTCMonth(),g.d=q.getUTCDate()+(g.w+6)%7):(q=to(Ve(g.y,0,1)),ut=q.getDay(),q=ut>4||ut===0?Me.ceil(q):Me(q),q=Dt.offset(q,(g.V-1)*7),g.y=q.getFullYear(),g.m=q.getMonth(),g.d=q.getDate()+(g.w+6)%7)}else("W"in g||"U"in g)&&("w"in g||(g.w="u"in g?g.u%7:"W"in g?1:0),ut="Z"in g?eo(Ve(g.y,0,1)).getUTCDay():to(Ve(g.y,0,1)).getDay(),g.m=0,g.d="W"in g?(g.w+6)%7+g.W*7-(ut+5)%7:g.w+g.U*7-(ut+6)%7);return"Z"in g?(g.H+=g.Z/100|0,g.M+=g.Z%100,eo(g)):to(g)}}r(Y,"newParse");function U(b,R,F,g){for(var at=0,q=R.length,ut=F.length,ft,Wt;at=ut)return-1;if(ft=R.charCodeAt(at++),ft===37){if(ft=R.charAt(at++),Wt=O[ft in ns?R.charAt(at++):ft],!Wt||(g=Wt(b,F,g))<0)return-1}else if(ft!=F.charCodeAt(g++))return-1}return g}r(U,"parseSpecifier");function E(b,R,F){var g=f.exec(R.slice(F));return g?(b.p=h.get(g[0].toLowerCase()),F+g[0].length):-1}r(E,"parsePeriod");function B(b,R,F){var g=m.exec(R.slice(F));return g?(b.w=_.get(g[0].toLowerCase()),F+g[0].length):-1}r(B,"parseShortWeekday");function N(b,R,F){var g=p.exec(R.slice(F));return g?(b.w=c.get(g[0].toLowerCase()),F+g[0].length):-1}r(N,"parseWeekday");function v(b,R,F){var g=k.exec(R.slice(F));return g?(b.m=I.get(g[0].toLowerCase()),F+g[0].length):-1}r(v,"parseShortMonth");function d(b,R,F){var g=M.exec(R.slice(F));return g?(b.m=T.get(g[0].toLowerCase()),F+g[0].length):-1}r(d,"parseMonth");function x(b,R,F){return U(b,e,R,F)}r(x,"parseLocaleDateTime");function S(b,R,F){return U(b,n,R,F)}r(S,"parseLocaleDate");function y(b,R,F){return U(b,i,R,F)}r(y,"parseLocaleTime");function D(b){return s[b.getDay()]}r(D,"formatShortWeekday");function $(b){return a[b.getDay()]}r($,"formatWeekday");function P(b){return l[b.getMonth()]}r(P,"formatShortMonth");function z(b){return u[b.getMonth()]}r(z,"formatMonth");function W(b){return o[+(b.getHours()>=12)]}r(W,"formatPeriod");function X(b){return 1+~~(b.getMonth()/3)}r(X,"formatQuarter");function J(b){return s[b.getUTCDay()]}r(J,"formatUTCShortWeekday");function ht(b){return a[b.getUTCDay()]}r(ht,"formatUTCWeekday");function Q(b){return l[b.getUTCMonth()]}r(Q,"formatUTCShortMonth");function dt(b){return u[b.getUTCMonth()]}r(dt,"formatUTCMonth");function st(b){return o[+(b.getUTCHours()>=12)]}r(st,"formatUTCPeriod");function Z(b){return 1+~~(b.getUTCMonth()/3)}return r(Z,"formatUTCQuarter"),{format:r(function(b){var R=w(b+="",C);return R.toString=function(){return b},R},"format"),parse:r(function(b){var R=Y(b+="",!1);return R.toString=function(){return b},R},"parse"),utcFormat:r(function(b){var R=w(b+="",A);return R.toString=function(){return b},R},"utcFormat"),utcParse:r(function(b){var R=Y(b+="",!0);return R.toString=function(){return b},R},"utcParse")}}r(no,"formatLocale");var ns={"-":"",_:" ",0:"0"},tt=/^\s*\d+/,Dl=/^%/,$l=/[\\^$*+?|[\]().{}]/g;function L(t,e,n){var i=t<0?"-":"",o=(i?-t:t)+"",a=o.length;return i+(a[e.toLowerCase(),n]))}r(Ge,"formatLookup");function El(t,e,n){var i=tt.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}r(El,"parseWeekdayNumberSunday");function Il(t,e,n){var i=tt.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}r(Il,"parseWeekdayNumberMonday");function Rl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}r(Rl,"parseWeekNumberSunday");function Pl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}r(Pl,"parseWeekNumberISO");function Yl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}r(Yl,"parseWeekNumberMonday");function rs(t,e,n){var i=tt.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}r(rs,"parseFullYear");function is(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}r(is,"parseYear");function Fl(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}r(Fl,"parseZone");function Ul(t,e,n){var i=tt.exec(e.slice(n,n+1));return i?(t.q=i[0]*3-3,n+i[0].length):-1}r(Ul,"parseQuarter");function Ll(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}r(Ll,"parseMonthNumber");function os(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}r(os,"parseDayOfMonth");function zl(t,e,n){var i=tt.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}r(zl,"parseDayOfYear");function as(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}r(as,"parseHour24");function Hl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}r(Hl,"parseMinutes");function Bl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}r(Bl,"parseSeconds");function ql(t,e,n){var i=tt.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}r(ql,"parseMilliseconds");function Wl(t,e,n){var i=tt.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}r(Wl,"parseMicroseconds");function Vl(t,e,n){var i=Dl.exec(e.slice(n,n+1));return i?n+i[0].length:-1}r(Vl,"parseLiteralPercent");function Xl(t,e,n){var i=tt.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}r(Xl,"parseUnixTimestamp");function Gl(t,e,n){var i=tt.exec(e.slice(n));return i?(t.s=+i[0],n+i[0].length):-1}r(Gl,"parseUnixTimestampSeconds");function ss(t,e){return L(t.getDate(),e,2)}r(ss,"formatDayOfMonth");function Zl(t,e){return L(t.getHours(),e,2)}r(Zl,"formatHour24");function Ql(t,e){return L(t.getHours()%12||12,e,2)}r(Ql,"formatHour12");function Kl(t,e){return L(1+Dt.count(lt(t),t),e,3)}r(Kl,"formatDayOfYear");function hs(t,e){return L(t.getMilliseconds(),e,3)}r(hs,"formatMilliseconds");function Jl(t,e){return hs(t,e)+"000"}r(Jl,"formatMicroseconds");function jl(t,e){return L(t.getMonth()+1,e,2)}r(jl,"formatMonthNumber");function tc(t,e){return L(t.getMinutes(),e,2)}r(tc,"formatMinutes");function ec(t,e){return L(t.getSeconds(),e,2)}r(ec,"formatSeconds");function nc(t){var e=t.getDay();return e===0?7:e}r(nc,"formatWeekdayNumberMonday");function rc(t,e){return L($t.count(lt(t)-1,t),e,2)}r(rc,"formatWeekNumberSunday");function ps(t){var e=t.getDay();return e>=4||e===0?zt(t):zt.ceil(t)}r(ps,"dISO");function ic(t,e){return t=ps(t),L(zt.count(lt(t),t)+(lt(t).getDay()===4),e,2)}r(ic,"formatWeekNumberISO");function oc(t){return t.getDay()}r(oc,"formatWeekdayNumberSunday");function ac(t,e){return L(Me.count(lt(t)-1,t),e,2)}r(ac,"formatWeekNumberMonday");function sc(t,e){return L(t.getFullYear()%100,e,2)}r(sc,"formatYear");function uc(t,e){return t=ps(t),L(t.getFullYear()%100,e,2)}r(uc,"formatYearISO");function fc(t,e){return L(t.getFullYear()%1e4,e,4)}r(fc,"formatFullYear");function lc(t,e){var n=t.getDay();return t=n>=4||n===0?zt(t):zt.ceil(t),L(t.getFullYear()%1e4,e,4)}r(lc,"formatFullYearISO");function cc(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+L(e/60|0,"0",2)+L(e%60,"0",2)}r(cc,"formatZone");function us(t,e){return L(t.getUTCDate(),e,2)}r(us,"formatUTCDayOfMonth");function hc(t,e){return L(t.getUTCHours(),e,2)}r(hc,"formatUTCHour24");function pc(t,e){return L(t.getUTCHours()%12||12,e,2)}r(pc,"formatUTCHour12");function mc(t,e){return L(1+We.count(yt(t),t),e,3)}r(mc,"formatUTCDayOfYear");function ms(t,e){return L(t.getUTCMilliseconds(),e,3)}r(ms,"formatUTCMilliseconds");function dc(t,e){return ms(t,e)+"000"}r(dc,"formatUTCMicroseconds");function xc(t,e){return L(t.getUTCMonth()+1,e,2)}r(xc,"formatUTCMonthNumber");function _c(t,e){return L(t.getUTCMinutes(),e,2)}r(_c,"formatUTCMinutes");function gc(t,e){return L(t.getUTCSeconds(),e,2)}r(gc,"formatUTCSeconds");function yc(t){var e=t.getUTCDay();return e===0?7:e}r(yc,"formatUTCWeekdayNumberMonday");function vc(t,e){return L(ie.count(yt(t)-1,t),e,2)}r(vc,"formatUTCWeekNumberSunday");function ds(t){var e=t.getUTCDay();return e>=4||e===0?Ht(t):Ht.ceil(t)}r(ds,"UTCdISO");function wc(t,e){return t=ds(t),L(Ht.count(yt(t),t)+(yt(t).getUTCDay()===4),e,2)}r(wc,"formatUTCWeekNumberISO");function bc(t){return t.getUTCDay()}r(bc,"formatUTCWeekdayNumberSunday");function Mc(t,e){return L(Te.count(yt(t)-1,t),e,2)}r(Mc,"formatUTCWeekNumberMonday");function Tc(t,e){return L(t.getUTCFullYear()%100,e,2)}r(Tc,"formatUTCYear");function kc(t,e){return t=ds(t),L(t.getUTCFullYear()%100,e,2)}r(kc,"formatUTCYearISO");function Sc(t,e){return L(t.getUTCFullYear()%1e4,e,4)}r(Sc,"formatUTCFullYear");function Cc(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Ht(t):Ht.ceil(t),L(t.getUTCFullYear()%1e4,e,4)}r(Cc,"formatUTCFullYearISO");function Nc(){return"+0000"}r(Nc,"formatUTCZone");function fs(){return"%"}r(fs,"formatLiteralPercent");function ls(t){return+t}r(ls,"formatUnixTimestamp");function cs(t){return Math.floor(+t/1e3)}r(cs,"formatUnixTimestampSeconds");var Se,Hn,xs,_s,gs;ro({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function ro(t){return Se=no(t),Hn=Se.format,xs=Se.parse,_s=Se.utcFormat,gs=Se.utcParse,Se}r(ro,"defaultLocale");function io(t,e){t=t.slice();var n=0,i=t.length-1,o=t[n],a=t[i],s;return a1?0:t<-1?Ce:Math.acos(t)}r(bs,"acos");function uo(t){return t>=1?Ze:t<=-1?-Ze:Math.asin(t)}r(uo,"asin");var fo=Math.PI,lo=2*fo,ae=1e-6,Oc=lo-ae;function Ms(t){this._+=t[0];for(let e=1,n=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Ms;let n=10**e;return function(i){this._+=i[0];for(let o=1,a=i.length;oae)if(!(Math.abs(p*l-f*h)>ae)||!a)this._append`L${this._x1=e},${this._y1=n}`;else{let m=i-s,_=o-u,M=l*l+f*f,T=m*m+_*_,k=Math.sqrt(M),I=Math.sqrt(c),C=a*Math.tan((fo-Math.acos((M+c-T)/(2*k*I)))/2),A=C/I,O=C/k;Math.abs(A-1)>ae&&this._append`L${e+A*h},${n+A*p}`,this._append`A${a},${a},0,0,${+(p*m>h*_)},${this._x1=e+O*l},${this._y1=n+O*f}`}}arc(e,n,i,o,a,s){if(e=+e,n=+n,i=+i,s=!!s,i<0)throw new Error(`negative radius: ${i}`);let u=i*Math.cos(o),l=i*Math.sin(o),f=e+u,h=n+l,p=1^s,c=s?o-a:a-o;this._x1===null?this._append`M${f},${h}`:(Math.abs(this._x1-f)>ae||Math.abs(this._y1-h)>ae)&&this._append`L${f},${h}`,i&&(c<0&&(c=c%lo+lo),c>Oc?this._append`A${i},${i},0,1,${p},${e-u},${n-l}A${i},${i},0,1,${p},${this._x1=f},${this._y1=h}`:c>ae&&this._append`A${i},${i},0,${+(c>=fo)},${p},${this._x1=e+i*Math.cos(a)},${this._y1=n+i*Math.sin(a)}`)}rect(e,n,i,o){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}h${i=+i}v${+o}h${-i}Z`}toString(){return this._}};function Ts(){return new se}r(Ts,"path");Ts.prototype=se.prototype;function qn(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(n==null)e=null;else{let i=Math.floor(n);if(!(i>=0))throw new RangeError(`invalid digits: ${n}`);e=i}return t},()=>new se(e)}r(qn,"withPath");function Ic(t){return t.innerRadius}r(Ic,"arcInnerRadius");function Rc(t){return t.outerRadius}r(Rc,"arcOuterRadius");function Pc(t){return t.startAngle}r(Pc,"arcStartAngle");function Yc(t){return t.endAngle}r(Yc,"arcEndAngle");function Fc(t){return t&&t.padAngle}r(Fc,"arcPadAngle");function Uc(t,e,n,i,o,a,s,u){var l=n-t,f=i-e,h=s-o,p=u-a,c=p*l-h*f;if(!(c*cx*x+S*S&&(U=B,E=N),{cx:U,cy:E,x01:-h,y01:-p,x11:U*(o/O-1),y11:E*(o/O-1)}}r(Wn,"cornerTangents");function ks(){var t=Ic,e=Rc,n=V(0),i=null,o=Pc,a=Yc,s=Fc,u=null,l=qn(f);function f(){var h,p,c=+t.apply(this,arguments),m=+e.apply(this,arguments),_=o.apply(this,arguments)-Ze,M=a.apply(this,arguments)-Ze,T=so(M-_),k=M>_;if(u||(u=h=l()),met))u.moveTo(0,0);else if(T>Ne-et)u.moveTo(m*Bt(_),m*vt(_)),u.arc(0,0,m,_,M,!k),c>et&&(u.moveTo(c*Bt(M),c*vt(M)),u.arc(0,0,c,M,_,k));else{var I=_,C=M,A=_,O=M,w=T,Y=T,U=s.apply(this,arguments)/2,E=U>et&&(i?+i.apply(this,arguments):oe(c*c+m*m)),B=Bn(so(m-c)/2,+n.apply(this,arguments)),N=B,v=B,d,x;if(E>et){var S=uo(E/c*vt(U)),y=uo(E/m*vt(U));(w-=S*2)>et?(S*=k?1:-1,A+=S,O-=S):(w=0,A=O=(_+M)/2),(Y-=y*2)>et?(y*=k?1:-1,I+=y,C-=y):(Y=0,I=C=(_+M)/2)}var D=m*Bt(I),$=m*vt(I),P=c*Bt(O),z=c*vt(O);if(B>et){var W=m*Bt(C),X=m*vt(C),J=c*Bt(A),ht=c*vt(A),Q;if(Tet?v>et?(d=Wn(J,ht,D,$,m,v,k),x=Wn(W,X,P,z,m,v,k),u.moveTo(d.cx+d.x01,d.cy+d.y01),vet)||!(w>et)?u.lineTo(P,z):N>et?(d=Wn(P,z,W,X,c,-N,k),x=Wn(D,$,J,ht,c,-N,k),u.lineTo(d.cx+d.x01,d.cy+d.y01),Nt?1:e>=t?0:NaN}r(co,"default");function ho(t){return t}r(ho,"default");function Ds(){var t=ho,e=co,n=null,i=V(0),o=V(Ne),a=V(0);function s(u){var l,f=(u=Qe(u)).length,h,p,c=0,m=new Array(f),_=new Array(f),M=+i.apply(this,arguments),T=Math.min(Ne,Math.max(-Ne,o.apply(this,arguments)-M)),k,I=Math.min(Math.abs(T)/f,a.apply(this,arguments)),C=I*(T<0?-1:1),A;for(l=0;l0&&(c+=A);for(e!=null?m.sort(function(O,w){return e(_[O],_[w])}):n!=null&&m.sort(function(O,w){return n(u[O],u[w])}),l=0,p=c?(T-f*C)/c:0;l0?A*p:0)+C,_[h]={data:u[h],index:l,value:A,startAngle:M,endAngle:k,padAngle:I};return _}return r(s,"pie"),s.value=function(u){return arguments.length?(t=typeof u=="function"?u:V(+u),s):t},s.sortValues=function(u){return arguments.length?(e=u,n=null,s):e},s.sort=function(u){return arguments.length?(n=u,e=null,s):n},s.startAngle=function(u){return arguments.length?(i=typeof u=="function"?u:V(+u),s):i},s.endAngle=function(u){return arguments.length?(o=typeof u=="function"?u:V(+u),s):o},s.padAngle=function(u){return arguments.length?(a=typeof u=="function"?u:V(+u),s):a},s}r(Ds,"default");var Xn=class{static{r(this,"Bump")}constructor(e,n){this._context=e,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,n){switch(e=+e,n=+n,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,n):this._context.moveTo(e,n);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,n,e,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,e,this._y0,e,n);break}}this._x0=e,this._y0=n}};function Lc(t){return new Xn(t,!0)}r(Lc,"bumpX");function zc(t){return new Xn(t,!1)}r(zc,"bumpY");function Ae(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}r(Ae,"point");function Ke(t){this._context=t}r(Ke,"Basis");Ke.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 3:Ae(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ae(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};function $s(t){return new Ke(t)}r($s,"default");function ct(){}r(ct,"default");function Os(t){this._context=t}r(Os,"BasisClosed");Os.prototype={areaStart:ct,areaEnd:ct,lineStart:r(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Ae(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};function Es(t){return new Os(t)}r(Es,"default");function Is(t){this._context=t}r(Is,"BasisOpen");Is.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:r(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,i):this._context.moveTo(n,i);break;case 3:this._point=4;default:Ae(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};function Rs(t){return new Is(t)}r(Rs,"default");function Ps(t,e){this._basis=new Ke(t),this._beta=e}r(Ps,"Bundle");Ps.prototype={lineStart:r(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:r(function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var i=t[0],o=e[0],a=t[n]-i,s=e[n]-o,u=-1,l;++u<=n;)l=u/n,this._basis.point(this._beta*t[u]+(1-this._beta)*(i+l*a),this._beta*e[u]+(1-this._beta)*(o+l*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:r(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};var Hc=r((function t(e){function n(i){return e===1?new Ke(i):new Ps(i,e)}return r(n,"bundle"),n.beta=function(i){return t(+i)},n}),"custom")(.85);function De(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}r(De,"point");function Gn(t,e){this._context=t,this._k=(1-e)/6}r(Gn,"Cardinal");Gn.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:De(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:De(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Bc=r((function t(e){function n(i){return new Gn(i,e)}return r(n,"cardinal"),n.tension=function(i){return t(+i)},n}),"custom")(0);function Zn(t,e){this._context=t,this._k=(1-e)/6}r(Zn,"CardinalClosed");Zn.prototype={areaStart:ct,areaEnd:ct,lineStart:r(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:De(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var qc=r((function t(e){function n(i){return new Zn(i,e)}return r(n,"cardinal"),n.tension=function(i){return t(+i)},n}),"custom")(0);function Qn(t,e){this._context=t,this._k=(1-e)/6}r(Qn,"CardinalOpen");Qn.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:r(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:De(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Wc=r((function t(e){function n(i){return new Qn(i,e)}return r(n,"cardinal"),n.tension=function(i){return t(+i)},n}),"custom")(0);function Je(t,e,n){var i=t._x1,o=t._y1,a=t._x2,s=t._y2;if(t._l01_a>et){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,o=(o*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>et){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*f+t._x1*t._l23_2a-e*t._l12_2a)/h,s=(s*f+t._y1*t._l23_2a-n*t._l12_2a)/h}t._context.bezierCurveTo(i,o,a,s,t._x2,t._y2)}r(Je,"point");function Ys(t,e){this._context=t,this._alpha=e}r(Ys,"CatmullRom");Ys.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Je(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Vc=r((function t(e){function n(i){return e?new Ys(i,e):new Gn(i,0)}return r(n,"catmullRom"),n.alpha=function(i){return t(+i)},n}),"custom")(.5);function Fs(t,e){this._context=t,this._alpha=e}r(Fs,"CatmullRomClosed");Fs.prototype={areaStart:ct,areaEnd:ct,lineStart:r(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:r(function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Je(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Xc=r((function t(e){function n(i){return e?new Fs(i,e):new Zn(i,0)}return r(n,"catmullRom"),n.alpha=function(i){return t(+i)},n}),"custom")(.5);function Us(t,e){this._context=t,this._alpha=e}r(Us,"CatmullRomOpen");Us.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:r(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Je(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Gc=r((function t(e){function n(i){return e?new Us(i,e):new Qn(i,0)}return r(n,"catmullRom"),n.alpha=function(i){return t(+i)},n}),"custom")(.5);function Ls(t){this._context=t}r(Ls,"LinearClosed");Ls.prototype={areaStart:ct,areaEnd:ct,lineStart:r(function(){this._point=0},"lineStart"),lineEnd:r(function(){this._point&&this._context.closePath()},"lineEnd"),point:r(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};function zs(t){return new Ls(t)}r(zs,"default");function Hs(t){return t<0?-1:1}r(Hs,"sign");function Bs(t,e,n){var i=t._x1-t._x0,o=e-t._x1,a=(t._y1-t._y0)/(i||o<0&&-0),s=(n-t._y1)/(o||i<0&&-0),u=(a*o+s*i)/(i+o);return(Hs(a)+Hs(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(u))||0}r(Bs,"slope3");function qs(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}r(qs,"slope2");function po(t,e,n){var i=t._x0,o=t._y0,a=t._x1,s=t._y1,u=(a-i)/3;t._context.bezierCurveTo(i+u,o+u*e,a-u,s-u*n,a,s)}r(po,"point");function Kn(t){this._context=t}r(Kn,"MonotoneX");Kn.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:po(this,this._t0,qs(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){var n=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,po(this,qs(this,n=Bs(this,t,e)),n);break;default:po(this,this._t0,n=Bs(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}},"point")};function Ws(t){this._context=new Vs(t)}r(Ws,"MonotoneY");(Ws.prototype=Object.create(Kn.prototype)).point=function(t,e){Kn.prototype.point.call(this,e,t)};function Vs(t){this._context=t}r(Vs,"ReflectContext");Vs.prototype={moveTo:r(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:r(function(){this._context.closePath()},"closePath"),lineTo:r(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:r(function(t,e,n,i,o,a){this._context.bezierCurveTo(e,t,i,n,a,o)},"bezierCurveTo")};function Zc(t){return new Kn(t)}r(Zc,"monotoneX");function Qc(t){return new Ws(t)}r(Qc,"monotoneY");function Gs(t){this._context=t}r(Gs,"Natural");Gs.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:r(function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),n===2)this._context.lineTo(t[1],e[1]);else for(var i=Xs(t),o=Xs(e),a=0,s=1;s=0;--e)o[e]=(s[e]-o[e+1])/a[e];for(a[n-1]=(t[n]+o[n-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}break}}this._x=t,this._y=e},"point")};function Qs(t){return new Jn(t,.5)}r(Qs,"default");function Kc(t){return new Jn(t,0)}r(Kc,"stepBefore");function Jc(t){return new Jn(t,1)}r(Jc,"stepAfter");var jc={value:r(()=>{},"value")};function Js(){for(var t=0,e=arguments.length,n={},i;t=0&&(i=n.slice(o+1),n=n.slice(0,o)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:i}})}r(th,"parseTypenames");jn.prototype=Js.prototype={constructor:jn,on:r(function(t,e){var n=this._,i=th(t+"",n),o,a=-1,s=i.length;if(arguments.length<2){for(;++a0)for(var n=new Array(o),i=0,o,a;i=0&&t._call.call(void 0,e),t=t._next;--$e}r(nu,"timerFlush");function js(){ue=(er=nn.now())+nr,$e=tn=0;try{nu()}finally{$e=0,ih(),ue=0}}r(js,"wake");function rh(){var t=nn.now(),e=t-er;e>tu&&(nr-=e,er=t)}r(rh,"poke");function ih(){for(var t,e=tr,n,i=1/0;e;)e._call?(i>e._time&&(i=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:tr=n);en=t,xo(i)}r(ih,"nap");function xo(t){if(!$e){tn&&(tn=clearTimeout(tn));var e=t-ue;e>24?(t<1/0&&(tn=setTimeout(js,t-nn.now()-nr)),je&&(je=clearInterval(je))):(je||(er=nn.now(),je=setInterval(rh,tu)),$e=1,eu(js))}}r(xo,"sleep");function an(t,e,n){var i=new rn;return e=e==null?0:+e,i.restart(o=>{i.stop(),t(o+e)},e,n),i}r(an,"default");var oh=mo("start","end","cancel","interrupt"),ah=[],ou=0,ru=1,or=2,ir=3,iu=4,ar=5,sn=6;function Ot(t,e,n,i,o,a){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;sh(t,n,{name:e,index:i,group:o,on:oh,tween:ah,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:ou})}r(Ot,"default");function un(t,e){var n=K(t,e);if(n.state>ou)throw new Error("too late; already scheduled");return n}r(un,"init");function it(t,e){var n=K(t,e);if(n.state>ir)throw new Error("too late; already running");return n}r(it,"set");function K(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}r(K,"get");function sh(t,e,n){var i=t.__transition,o;i[e]=n,n.timer=rr(a,0,n.time);function a(f){n.state=ru,n.timer.restart(s,n.delay,n.time),n.delay<=f&&s(f-n.delay)}r(a,"schedule");function s(f){var h,p,c,m;if(n.state!==ru)return l();for(h in i)if(m=i[h],m.name===n.name){if(m.state===ir)return an(s);m.state===iu?(m.state=sn,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete i[h]):+hor&&i.state=0&&(e=e.slice(0,n)),!e||e==="start"})}r(Sh,"start");function Ch(t,e,n){var i,o,a=Sh(e)?un:it;return function(){var s=a(this,t),u=s.on;u!==i&&(o=(i=u).copy()).on(e,n),s.on=o}}r(Ch,"onFunction");function Co(t,e){var n=this._id;return arguments.length<2?K(this.node(),n).on.on(t):this.each(Ch(n,t,e))}r(Co,"default");function Nh(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}r(Nh,"removeFunction");function No(){return this.on("end.remove",Nh(this._id))}r(No,"default");function Ao(t){var e=this._name,n=this._id;typeof t!="function"&&(t=It(t));for(var i=this._groups,o=i.length,a=new Array(o),s=0;s{"use strict";(function(t,e){typeof fr=="object"&&typeof lr<"u"?lr.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(fr,(function(){"use strict";var t=1e3,e=6e4,n=36e5,i="millisecond",o="second",a="minute",s="hour",u="day",l="week",f="month",h="quarter",p="year",c="date",m="Invalid Date",_=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,T={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:r(function(v){var d=["th","st","nd","rd"],x=v%100;return"["+v+(d[(x-20)%10]||d[x]||d[0])+"]"},"ordinal")},k=r(function(v,d,x){var S=String(v);return!S||S.length>=d?v:""+Array(d+1-S.length).join(x)+v},"m"),I={s:k,z:r(function(v){var d=-v.utcOffset(),x=Math.abs(d),S=Math.floor(x/60),y=x%60;return(d<=0?"+":"-")+k(S,2,"0")+":"+k(y,2,"0")},"z"),m:r(function v(d,x){if(d.date()1)return v($[0])}else{var P=d.name;A[P]=d,y=P}return!S&&y&&(C=y),y||!S&&C},"t"),U=r(function(v,d){if(w(v))return v.clone();var x=typeof d=="object"?d:{};return x.date=v,x.args=arguments,new B(x)},"O"),E=I;E.l=Y,E.i=w,E.w=function(v,d){return U(v,{locale:d.$L,utc:d.$u,x:d.$x,$offset:d.$offset})};var B=(function(){function v(x){this.$L=Y(x.locale,null,!0),this.parse(x),this.$x=this.$x||x.x||{},this[O]=!0}r(v,"M");var d=v.prototype;return d.parse=function(x){this.$d=(function(S){var y=S.date,D=S.utc;if(y===null)return new Date(NaN);if(E.u(y))return new Date;if(y instanceof Date)return new Date(y);if(typeof y=="string"&&!/Z$/i.test(y)){var $=y.match(_);if($){var P=$[2]-1||0,z=($[7]||"0").substring(0,3);return D?new Date(Date.UTC($[1],P,$[3]||1,$[4]||0,$[5]||0,$[6]||0,z)):new Date($[1],P,$[3]||1,$[4]||0,$[5]||0,$[6]||0,z)}}return new Date(y)})(x),this.init()},d.init=function(){var x=this.$d;this.$y=x.getFullYear(),this.$M=x.getMonth(),this.$D=x.getDate(),this.$W=x.getDay(),this.$H=x.getHours(),this.$m=x.getMinutes(),this.$s=x.getSeconds(),this.$ms=x.getMilliseconds()},d.$utils=function(){return E},d.isValid=function(){return this.$d.toString()!==m},d.isSame=function(x,S){var y=U(x);return this.startOf(S)<=y&&y<=this.endOf(S)},d.isAfter=function(x,S){return U(x){},"trace"),debug:r((...t)=>{},"debug"),info:r((...t)=>{},"info"),warn:r((...t)=>{},"warn"),error:r((...t)=>{},"error"),fatal:r((...t)=>{},"fatal")},Wh=r(function(t="fatal"){let e=St.fatal;typeof t=="string"?t.toLowerCase()in St&&(e=St[t]):typeof t=="number"&&(e=t),pt.trace=()=>{},pt.debug=()=>{},pt.info=()=>{},pt.warn=()=>{},pt.error=()=>{},pt.fatal=()=>{},e<=St.fatal&&(pt.fatal=console.error?console.error.bind(console,mt("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",mt("FATAL"))),e<=St.error&&(pt.error=console.error?console.error.bind(console,mt("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",mt("ERROR"))),e<=St.warn&&(pt.warn=console.warn?console.warn.bind(console,mt("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",mt("WARN"))),e<=St.info&&(pt.info=console.info?console.info.bind(console,mt("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",mt("INFO"))),e<=St.debug&&(pt.debug=console.debug?console.debug.bind(console,mt("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",mt("DEBUG"))),e<=St.trace&&(pt.trace=console.debug?console.debug.bind(console,mt("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",mt("TRACE")))},"setLogLevel"),mt=r(t=>`%c${(0,qo.default)().format("ss.SSS")} : ${t} : `,"format");function Wo(t,e){let n;if(e===void 0)for(let i of t)i!=null&&(n=i)&&(n=i);else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n=o)&&(n=o)}return n}r(Wo,"max");function Vo(t,e){let n;if(e===void 0)for(let i of t)i!=null&&(n>i||n===void 0&&i>=i)&&(n=i);else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n>o||n===void 0&&o>=o)&&(n=o)}return n}r(Vo,"min");function Vt(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}r(Vt,"ascending");function cr(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}r(cr,"descending");function Xt(t){let e,n,i;t.length!==2?(e=Vt,n=r((u,l)=>Vt(t(u),l),"compare2"),i=r((u,l)=>t(u)-l,"delta")):(e=t===Vt||t===cr?t:cu,n=t,i=t);function o(u,l,f=0,h=u.length){if(f>>1;n(u[p],l)<0?f=p+1:h=p}while(f>>1;n(u[p],l)<=0?f=p+1:h=p}while(ff&&i(u[p-1],l)>-i(u[p],l)?p-1:p}return r(s,"center"),{left:o,center:s,right:a}}r(Xt,"bisector");function cu(){return 0}r(cu,"zero");function hr(t){return t===null?NaN:+t}r(hr,"number");var Xo=Xt(Vt),Go=Xo.right,hu=Xo.left,pu=Xt(hr).center,pr=Go;var fe=class extends Map{static{r(this,"InternMap")}constructor(e,n=xu){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(let[i,o]of e)this.set(i,o)}get(e){return super.get(Zo(this,e))}has(e){return super.has(Zo(this,e))}set(e,n){return super.set(mu(this,e),n)}delete(e){return super.delete(du(this,e))}};function Zo({_intern:t,_key:e},n){let i=e(n);return t.has(i)?t.get(i):n}r(Zo,"intern_get");function mu({_intern:t,_key:e},n){let i=e(n);return t.has(i)?t.get(i):(t.set(i,n),n)}r(mu,"intern_set");function du({_intern:t,_key:e},n){let i=e(n);return t.has(i)&&(n=t.get(i),t.delete(i)),n}r(du,"intern_delete");function xu(t){return t!==null&&typeof t=="object"?t.valueOf():t}r(xu,"keyof");var _u=Math.sqrt(50),gu=Math.sqrt(10),yu=Math.sqrt(2);function cn(t,e,n){let i=(e-t)/Math.max(0,n),o=Math.floor(Math.log10(i)),a=i/Math.pow(10,o),s=a>=_u?10:a>=gu?5:a>=yu?2:1,u,l,f;return o<0?(f=Math.pow(10,-o)/s,u=Math.round(t*f),l=Math.round(e*f),u/fe&&--l,f=-f):(f=Math.pow(10,o)*s,u=Math.round(t/f),l=Math.round(e/f),u*fe&&--l),l0))return[];if(t===e)return[t];let i=e=o))return[];let u=a-o+1,l=new Array(u);if(i)if(s<0)for(let f=0;f+t(e)}r(bu,"number");function Mu(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}r(Mu,"center");function Tu(){return!this.__axis}r(Tu,"entering");function Ko(t,e){var n=[],i=null,o=null,a=6,s=6,u=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,f=t===dn||t===mn?-1:1,h=t===mn||t===dr?"x":"y",p=t===dn||t===xr?vu:wu;function c(m){var _=i??(e.ticks?e.ticks.apply(e,n):e.domain()),M=o??(e.tickFormat?e.tickFormat.apply(e,n):mr),T=Math.max(a,0)+u,k=e.range(),I=+k[0]+l,C=+k[k.length-1]+l,A=(e.bandwidth?Mu:bu)(e.copy(),l),O=m.selection?m.selection():m,w=O.selectAll(".domain").data([null]),Y=O.selectAll(".tick").data(_,e).order(),U=Y.exit(),E=Y.enter().append("g").attr("class","tick"),B=Y.select("line"),N=Y.select("text");w=w.merge(w.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),Y=Y.merge(E),B=B.merge(E.append("line").attr("stroke","currentColor").attr(h+"2",f*a)),N=N.merge(E.append("text").attr("fill","currentColor").attr(h,f*T).attr("dy",t===dn?"0em":t===xr?"0.71em":"0.32em")),m!==O&&(w=w.transition(m),Y=Y.transition(m),B=B.transition(m),N=N.transition(m),U=U.transition(m).attr("opacity",Qo).attr("transform",function(v){return isFinite(v=A(v))?p(v+l):this.getAttribute("transform")}),E.attr("opacity",Qo).attr("transform",function(v){var d=this.parentNode.__axis;return p((d&&isFinite(d=d(v))?d:A(v))+l)})),U.remove(),w.attr("d",t===mn||t===dr?s?"M"+f*s+","+I+"H"+l+"V"+C+"H"+f*s:"M"+l+","+I+"V"+C:s?"M"+I+","+f*s+"V"+l+"H"+C+"V"+f*s:"M"+I+","+l+"H"+C),Y.attr("opacity",1).attr("transform",function(v){return p(A(v)+l)}),B.attr(h+"2",f*a),N.attr(h,f*T).text(M),O.filter(Tu).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===dr?"start":t===mn?"end":"middle"),O.each(function(){this.__axis=A})}return r(c,"axis"),c.scale=function(m){return arguments.length?(e=m,c):e},c.ticks=function(){return n=Array.from(arguments),c},c.tickArguments=function(m){return arguments.length?(n=m==null?[]:Array.from(m),c):n.slice()},c.tickValues=function(m){return arguments.length?(i=m==null?null:Array.from(m),c):i&&i.slice()},c.tickFormat=function(m){return arguments.length?(o=m,c):o},c.tickSize=function(m){return arguments.length?(a=s=+m,c):a},c.tickSizeInner=function(m){return arguments.length?(a=+m,c):a},c.tickSizeOuter=function(m){return arguments.length?(s=+m,c):s},c.tickPadding=function(m){return arguments.length?(u=+m,c):u},c.offset=function(m){return arguments.length?(l=+m,c):l},c}r(Ko,"axis");function ku(t){return Ko(dn,t)}r(ku,"axisTop");function Su(t){return Ko(xr,t)}r(Su,"axisBottom");function Cu(){}r(Cu,"none");function It(t){return t==null?Cu:function(){return this.querySelector(t)}}r(It,"default");function _r(t){typeof t!="function"&&(t=It(t));for(var e=this._groups,n=e.length,i=new Array(n),o=0;o=C&&(C=I+1);!(O=T[C])&&++C<_;);A._next=O||null}}return s=new G(s,i),s._enter=u,s._exit=l,s}r(kr,"default");function Uu(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}r(Uu,"arraylike");function Sr(){return new G(this._exit||this._groups.map(Ie),this._parents)}r(Sr,"default");function Cr(t,e,n){var i=this.enter(),o=this,a=this.exit();return typeof t=="function"?(i=t(i),i&&(i=i.selection())):i=i.append(t+""),e!=null&&(o=e(o),o&&(o=o.selection())),n==null?a.remove():n(a),i&&o?i.merge(o).order():o}r(Cr,"default");function Nr(t){for(var e=t.selection?t.selection():t,n=this._groups,i=e._groups,o=n.length,a=i.length,s=Math.min(o,a),u=new Array(o),l=0;l=0;)(s=i[o])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}r(Ar,"default");function Dr(t){t||(t=Lu);function e(p,c){return p&&c?t(p.__data__,c.__data__):!p-!c}r(e,"compareNode");for(var n=this._groups,i=n.length,o=new Array(i),a=0;ae?1:t>=e?0:NaN}r(Lu,"ascending");function $r(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}r($r,"default");function Or(){return Array.from(this)}r(Or,"default");function Er(){for(var t=this._groups,e=0,n=t.length;e=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),Yr.hasOwnProperty(e)?{space:Yr[e],local:t}:t}r(wt,"default");function zu(t){return function(){this.removeAttribute(t)}}r(zu,"attrRemove");function Hu(t){return function(){this.removeAttributeNS(t.space,t.local)}}r(Hu,"attrRemoveNS");function Bu(t,e){return function(){this.setAttribute(t,e)}}r(Bu,"attrConstant");function qu(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}r(qu,"attrConstantNS");function Wu(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}r(Wu,"attrFunction");function Vu(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}r(Vu,"attrFunctionNS");function Fr(t,e){var n=wt(t);if(arguments.length<2){var i=this.node();return n.local?i.getAttributeNS(n.space,n.local):i.getAttribute(n)}return this.each((e==null?n.local?Hu:zu:typeof e=="function"?n.local?Vu:Wu:n.local?qu:Bu)(n,e))}r(Fr,"default");function Pe(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}r(Pe,"default");function Xu(t){return function(){this.style.removeProperty(t)}}r(Xu,"styleRemove");function Gu(t,e,n){return function(){this.style.setProperty(t,e,n)}}r(Gu,"styleConstant");function Zu(t,e,n){return function(){var i=e.apply(this,arguments);i==null?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}r(Zu,"styleFunction");function Ur(t,e,n){return arguments.length>1?this.each((e==null?Xu:typeof e=="function"?Zu:Gu)(t,e,n??"")):Rt(this.node(),t)}r(Ur,"default");function Rt(t,e){return t.style.getPropertyValue(e)||Pe(t).getComputedStyle(t,null).getPropertyValue(e)}r(Rt,"styleValue");function Qu(t){return function(){delete this[t]}}r(Qu,"propertyRemove");function Ku(t,e){return function(){this[t]=e}}r(Ku,"propertyConstant");function Ju(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}r(Ju,"propertyFunction");function Lr(t,e){return arguments.length>1?this.each((e==null?Qu:typeof e=="function"?Ju:Ku)(t,e)):this.node()[t]}r(Lr,"default");function Jo(t){return t.trim().split(/^|\s+/)}r(Jo,"classArray");function zr(t){return t.classList||new jo(t)}r(zr,"classList");function jo(t){this._node=t,this._names=Jo(t.getAttribute("class")||"")}r(jo,"ClassList");jo.prototype={add:r(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:r(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:r(function(t){return this._names.indexOf(t)>=0},"contains")};function ta(t,e){for(var n=zr(t),i=-1,o=e.length;++i=0&&(n=e.slice(i+1),e=e.slice(0,i)),{type:e,name:n}})}r(gf,"parseTypenames");function yf(t){return function(){var e=this.__on;if(e){for(var n=0,i=-1,o=e.length,a;n>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?gn(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?gn(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=kf.exec(t))?new nt(e[1],e[2],e[3],1):(e=Sf.exec(t))?new nt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Cf.exec(t))?gn(e[1],e[2],e[3],e[4]):(e=Nf.exec(t))?gn(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Af.exec(t))?ca(e[1],e[2]/100,e[3]/100,1):(e=Df.exec(t))?ca(e[1],e[2]/100,e[3]/100,e[4]):oa.hasOwnProperty(t)?ua(oa[t]):t==="transparent"?new nt(NaN,NaN,NaN,0):null}r(_t,"color");function ua(t){return new nt(t>>16&255,t>>8&255,t&255,1)}r(ua,"rgbn");function gn(t,e,n,i){return i<=0&&(t=e=n=NaN),new nt(t,e,n,i)}r(gn,"rgba");function ri(t){return t instanceof Yt||(t=_t(t)),t?(t=t.rgb(),new nt(t.r,t.g,t.b,t.opacity)):new nt}r(ri,"rgbConvert");function de(t,e,n,i){return arguments.length===1?ri(t):new nt(t,e,n,i??1)}r(de,"rgb");function nt(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}r(nt,"Rgb");Pt(nt,de,pe(Yt,{brighter(t){return t=t==null?vn:Math.pow(vn,t),new nt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Fe:Math.pow(Fe,t),new nt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new nt(Zt(this.r),Zt(this.g),Zt(this.b),wn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:fa,formatHex:fa,formatHex8:Ef,formatRgb:la,toString:la}));function fa(){return`#${Gt(this.r)}${Gt(this.g)}${Gt(this.b)}`}r(fa,"rgb_formatHex");function Ef(){return`#${Gt(this.r)}${Gt(this.g)}${Gt(this.b)}${Gt((isNaN(this.opacity)?1:this.opacity)*255)}`}r(Ef,"rgb_formatHex8");function la(){let t=wn(this.opacity);return`${t===1?"rgb(":"rgba("}${Zt(this.r)}, ${Zt(this.g)}, ${Zt(this.b)}${t===1?")":`, ${t})`}`}r(la,"rgb_formatRgb");function wn(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}r(wn,"clampa");function Zt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}r(Zt,"clampi");function Gt(t){return t=Zt(t),(t<16?"0":"")+t.toString(16)}r(Gt,"hex");function ca(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new xt(t,e,n,i)}r(ca,"hsla");function pa(t){if(t instanceof xt)return new xt(t.h,t.s,t.l,t.opacity);if(t instanceof Yt||(t=_t(t)),!t)return new xt;if(t instanceof xt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,i=t.b/255,o=Math.min(e,n,i),a=Math.max(e,n,i),s=NaN,u=a-o,l=(a+o)/2;return u?(e===a?s=(n-i)/u+(n0&&l<1?0:s,new xt(s,u,l,t.opacity)}r(pa,"hslConvert");function ma(t,e,n,i){return arguments.length===1?pa(t):new xt(t,e,n,i??1)}r(ma,"hsl");function xt(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}r(xt,"Hsl");Pt(xt,ma,pe(Yt,{brighter(t){return t=t==null?vn:Math.pow(vn,t),new xt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fe:Math.pow(Fe,t),new xt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,o=2*n-i;return new nt(ni(t>=240?t-240:t+120,o,i),ni(t,o,i),ni(t<120?t+240:t-120,o,i),this.opacity)},clamp(){return new xt(ha(this.h),yn(this.s),yn(this.l),wn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=wn(this.opacity);return`${t===1?"hsl(":"hsla("}${ha(this.h)}, ${yn(this.s)*100}%, ${yn(this.l)*100}%${t===1?")":`, ${t})`}`}}));function ha(t){return t=(t||0)%360,t<0?t+360:t}r(ha,"clamph");function yn(t){return Math.max(0,Math.min(1,t||0))}r(yn,"clampt");function ni(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}r(ni,"hsl2rgb");var da=Math.PI/180,xa=180/Math.PI;var bn=18,_a=.96422,ga=1,ya=.82521,va=4/29,xe=6/29,wa=3*xe*xe,If=xe*xe*xe;function ba(t){if(t instanceof Mt)return new Mt(t.l,t.a,t.b,t.opacity);if(t instanceof Nt)return Ma(t);t instanceof nt||(t=ri(t));var e=si(t.r),n=si(t.g),i=si(t.b),o=ii((.2225045*e+.7168786*n+.0606169*i)/ga),a,s;return e===n&&n===i?a=s=o:(a=ii((.4360747*e+.3850649*n+.1430804*i)/_a),s=ii((.0139322*e+.0971045*n+.7141733*i)/ya)),new Mt(116*o-16,500*(a-o),200*(o-s),t.opacity)}r(ba,"labConvert");function ui(t,e,n,i){return arguments.length===1?ba(t):new Mt(t,e,n,i??1)}r(ui,"lab");function Mt(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}r(Mt,"Lab");Pt(Mt,ui,pe(Yt,{brighter(t){return new Mt(this.l+bn*(t??1),this.a,this.b,this.opacity)},darker(t){return new Mt(this.l-bn*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=_a*oi(e),t=ga*oi(t),n=ya*oi(n),new nt(ai(3.1338561*e-1.6168667*t-.4906146*n),ai(-.9787684*e+1.9161415*t+.033454*n),ai(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ii(t){return t>If?Math.pow(t,1/3):t/wa+va}r(ii,"xyz2lab");function oi(t){return t>xe?t*t*t:wa*(t-va)}r(oi,"lab2xyz");function ai(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}r(ai,"lrgb2rgb");function si(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}r(si,"rgb2lrgb");function Rf(t){if(t instanceof Nt)return new Nt(t.h,t.c,t.l,t.opacity);if(t instanceof Mt||(t=ba(t)),t.a===0&&t.b===0)return new Nt(NaN,0()=>t,"default");function Ta(t,e){return function(n){return t+n*e}}r(Ta,"linear");function Pf(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}r(Pf,"exponential");function ka(t,e){var n=e-t;return n?Ta(t,n>180||n<-180?n-360*Math.round(n/360):n):_e(isNaN(t)?e:t)}r(ka,"hue");function Sa(t){return(t=+t)==1?At:function(e,n){return n-e?Pf(e,n,t):_e(isNaN(e)?n:e)}}r(Sa,"gamma");function At(t,e){var n=e-t;return n?Ta(t,n):_e(isNaN(t)?e:t)}r(At,"nogamma");function Ca(t){return function(e,n){var i=t((e=Le(e)).h,(n=Le(n)).h),o=At(e.c,n.c),a=At(e.l,n.l),s=At(e.opacity,n.opacity);return function(u){return e.h=i(u),e.c=o(u),e.l=a(u),e.opacity=s(u),e+""}}}r(Ca,"hcl");var Yf=Ca(ka),Ff=Ca(At);function fi(t,e,n,i,o){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*i+s*o)/6}r(fi,"basis");function li(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),o=t[i],a=t[i+1],s=i>0?t[i-1]:2*o-a,u=in&&(a=e.slice(n,a),u[s]?u[s]+=a:u[++s]=a),(i=i[0])===(o=o[0])?u[s]?u[s]+=o:u[++s]=o:(u[++s]=null,l.push({i:s,x:j(i,o)})),n=di.lastIndex;return n180?h+=360:h-f>180&&(f+=360),c.push({i:p.push(o(p)+"rotate(",null,i)-2,x:j(f,h)})):h&&p.push(o(p)+"rotate("+h+i)}r(s,"rotate");function u(f,h,p,c){f!==h?c.push({i:p.push(o(p)+"skewX(",null,i)-2,x:j(f,h)}):h&&p.push(o(p)+"skewX("+h+i)}r(u,"skewX");function l(f,h,p,c,m,_){if(f!==p||h!==c){var M=m.push(o(m)+"scale(",null,",",null,")");_.push({i:M-4,x:j(f,p)},{i:M-2,x:j(h,c)})}else(p!==1||c!==1)&&m.push(o(m)+"scale("+p+","+c+")")}return r(l,"scale"),function(f,h){var p=[],c=[];return f=t(f),h=t(h),a(f.translateX,f.translateY,h.translateX,h.translateY,p,c),s(f.rotate,h.rotate,p,c),u(f.skewX,h.skewX,p,c),l(f.scaleX,f.scaleY,h.scaleX,h.scaleY,p,c),f=h=null,function(m){for(var _=-1,M=c.length,T;++_=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}r(yi,"default");function Kt(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,i=t.slice(0,n);return[i.length>1?i[0]+i.slice(2):i,+t.slice(n+1)]}r(Kt,"formatDecimalParts");function gt(t){return t=Kt(Math.abs(t)),t?t[1]:NaN}r(gt,"default");function vi(t,e){return function(n,i){for(var o=n.length,a=[],s=0,u=t[0],l=0;o>0&&u>0&&(l+u+1>i&&(u=Math.max(1,i-l)),a.push(n.substring(o-=u,o+u)),!((l+=u+1)>i));)u=t[s=(s+1)%t.length];return a.reverse().join(e)}}r(vi,"default");function wi(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}r(wi,"default");var Bf=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ut(t){if(!(e=Bf.exec(t)))throw new Error("invalid format: "+t);var e;return new Cn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}r(Ut,"formatSpecifier");Ut.prototype=Cn.prototype;function Cn(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}r(Cn,"FormatSpecifier");Cn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function bi(t){t:for(var e=t.length,n=1,i=-1,o;n0&&(i=0);break}return i>0?t.slice(0,i)+t.slice(o+1):t}r(bi,"default");var Mi;function Ti(t,e){var n=Kt(t,e);if(!n)return t+"";var i=n[0],o=n[1],a=o-(Mi=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,s=i.length;return a===s?i:a>s?i+new Array(a-s+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Kt(t,Math.max(0,e+a-1))[0]}r(Ti,"default");function Nn(t,e){var n=Kt(t,e);if(!n)return t+"";var i=n[0],o=n[1];return o<0?"0."+new Array(-o).join("0")+i:i.length>o+1?i.slice(0,o+1)+"."+i.slice(o+1):i+new Array(o-i.length+2).join("0")}r(Nn,"default");var ki={"%":r((t,e)=>(t*100).toFixed(e),"%"),b:r(t=>Math.round(t).toString(2),"b"),c:r(t=>t+"","c"),d:yi,e:r((t,e)=>t.toExponential(e),"e"),f:r((t,e)=>t.toFixed(e),"f"),g:r((t,e)=>t.toPrecision(e),"g"),o:r(t=>Math.round(t).toString(8),"o"),p:r((t,e)=>Nn(t*100,e),"p"),r:Nn,s:Ti,X:r(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:r(t=>Math.round(t).toString(16),"x")};function An(t){return t}r(An,"default");var Ra=Array.prototype.map,Pa=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Si(t){var e=t.grouping===void 0||t.thousands===void 0?An:vi(Ra.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",i=t.currency===void 0?"":t.currency[1]+"",o=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?An:wi(Ra.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",u=t.minus===void 0?"\u2212":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function f(p){p=Ut(p);var c=p.fill,m=p.align,_=p.sign,M=p.symbol,T=p.zero,k=p.width,I=p.comma,C=p.precision,A=p.trim,O=p.type;O==="n"?(I=!0,O="g"):ki[O]||(C===void 0&&(C=12),A=!0,O="g"),(T||c==="0"&&m==="=")&&(T=!0,c="0",m="=");var w=M==="$"?n:M==="#"&&/[boxX]/.test(O)?"0"+O.toLowerCase():"",Y=M==="$"?i:/[%p]/.test(O)?s:"",U=ki[O],E=/[defgprs%]/.test(O);C=C===void 0?6:/[gprs]/.test(O)?Math.max(1,Math.min(21,C)):Math.max(0,Math.min(20,C));function B(N){var v=w,d=Y,x,S,y;if(O==="c")d=U(N)+d,N="";else{N=+N;var D=N<0||1/N<0;if(N=isNaN(N)?l:U(Math.abs(N),C),A&&(N=bi(N)),D&&+N==0&&_!=="+"&&(D=!1),v=(D?_==="("?_:u:_==="-"||_==="("?"":_)+v,d=(O==="s"?Pa[8+Mi/3]:"")+d+(D&&_==="("?")":""),E){for(x=-1,S=N.length;++xy||y>57){d=(y===46?o+N.slice(x+1):N.slice(x))+d,N=N.slice(0,x);break}}}I&&!T&&(N=e(N,1/0));var $=v.length+N.length+d.length,P=$>1)+v+N+d+P.slice($);break;default:N=P+v+N+d;break}return a(N)}return r(B,"format"),B.toString=function(){return p+""},B}r(f,"newFormat");function h(p,c){var m=f((p=Ut(p),p.type="f",p)),_=Math.max(-8,Math.min(8,Math.floor(gt(c)/3)))*3,M=Math.pow(10,-_),T=Pa[8+_/3];return function(k){return m(M*k)+T}}return r(h,"formatPrefix"),{format:f,formatPrefix:h}}r(Si,"default");var Dn,$n,On;Ci({thousands:",",grouping:[3],currency:["$",""]});function Ci(t){return Dn=Si(t),$n=Dn.format,On=Dn.formatPrefix,Dn}r(Ci,"defaultLocale");function En(t){return Math.max(0,-gt(Math.abs(t)))}r(En,"default");function In(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(gt(e)/3)))*3-gt(Math.abs(t)))}r(In,"default");function Rn(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,gt(e)-gt(t))+1}r(Rn,"default");function qf(t){var e=0,n=t.children,i=n&&n.length;if(!i)e=1;else for(;--i>=0;)e+=n[i].value;t.value=e}r(qf,"count");function Ni(){return this.eachAfter(qf)}r(Ni,"default");function Ai(t,e){let n=-1;for(let i of this)t.call(e,i,++n,this);return this}r(Ai,"default");function Di(t,e){for(var n=this,i=[n],o,a,s=-1;n=i.pop();)if(t.call(e,n,++s,this),o=n.children)for(a=o.length-1;a>=0;--a)i.push(o[a]);return this}r(Di,"default");function $i(t,e){for(var n=this,i=[n],o=[],a,s,u,l=-1;n=i.pop();)if(o.push(n),a=n.children)for(s=0,u=a.length;s=0;)n+=i[o].value;e.value=n})}r(Ei,"default");function Ii(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}r(Ii,"default");function Ri(t){for(var e=this,n=Wf(e,t),i=[e];e!==n;)e=e.parent,i.push(e);for(var o=i.length;t!==n;)i.splice(o,0,t),t=t.parent;return i}r(Ri,"default");function Wf(t,e){if(t===e)return t;var n=t.ancestors(),i=e.ancestors(),o=null;for(t=n.pop(),e=i.pop();t===e;)o=t,t=n.pop(),e=i.pop();return o}r(Wf,"leastCommonAncestor");function Pi(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}r(Pi,"default");function Yi(){return Array.from(this)}r(Yi,"default");function Fi(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}r(Fi,"default");function Ui(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e}r(Ui,"default");function*Li(){var t=this,e,n=[t],i,o,a;do for(e=n.reverse(),n=[];t=e.pop();)if(yield t,i=t.children)for(o=0,a=i.length;o=0;--u)o.push(a=s[u]=new ze(s[u])),a.parent=i,a.depth=i.depth+1;return n.eachBefore(Qf)}r(Pn,"hierarchy");function Vf(){return Pn(this).eachBefore(Zf)}r(Vf,"node_copy");function Xf(t){return t.children}r(Xf,"objectChildren");function Gf(t){return Array.isArray(t)?t[1]:null}r(Gf,"mapChildren");function Zf(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}r(Zf,"copyData");function Qf(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}r(Qf,"computeHeight");function ze(t){this.data=t,this.depth=this.height=0,this.parent=null}r(ze,"Node");ze.prototype=Pn.prototype={constructor:ze,count:Ni,each:Ai,eachAfter:$i,eachBefore:Di,find:Oi,sum:Ei,sort:Ii,path:Ri,ancestors:Pi,descendants:Yi,leaves:Fi,links:Ui,copy:Vf,[Symbol.iterator]:Li};function zi(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}r(zi,"default");function Hi(t,e,n,i,o){for(var a=t.children,s,u=-1,l=a.length,f=t.value&&(i-e)/t.value;++uI&&(I=f),w=T*T*O,C=Math.max(I/w,w/k),C>A){T-=f;break}A=C}s.push(l={value:T,dice:m<_,children:u.slice(h,p)}),l.dice?Hi(l,n,i,o,M?i+=_*T/M:a):Bi(l,n,i,M?n+=m*T/M:o,a),M-=T,h=p}return s}r(Jf,"squarifyRatio");var Ya=r((function t(e){function n(i,o,a,s,u){Jf(e,i,o,a,s,u)}return r(n,"squarify"),n.ratio=function(i){return t((i=+i)>1?i:1)},n}),"custom")(Kf);function Fa(t){if(typeof t!="function")throw new Error;return t}r(Fa,"required");function ye(){return 0}r(ye,"constantZero");function Jt(t){return function(){return t}}r(Jt,"default");function Ua(){var t=Ya,e=!1,n=1,i=1,o=[0],a=ye,s=ye,u=ye,l=ye,f=ye;function h(c){return c.x0=c.y0=0,c.x1=n,c.y1=i,c.eachBefore(p),o=[0],e&&c.eachBefore(zi),c}r(h,"treemap");function p(c){var m=o[c.depth],_=c.x0+m,M=c.y0+m,T=c.x1-m,k=c.y1-m;T<_&&(_=T=(_+T)/2),ke&&(n=t,t=e,e=n),function(i){return Math.max(t,Math.min(e,i))}}r(jf,"clamper");function tl(t,e,n){var i=t[0],o=t[1],a=e[0],s=e[1];return o2?el:tl,l=f=null,p}r(h,"rescale");function p(c){return c==null||isNaN(c=+c)?a:(l||(l=u(t.map(i),e,n)))(i(s(c)))}return r(p,"scale"),p.invert=function(c){return s(o((f||(f=u(e,t.map(i),j)))(c)))},p.domain=function(c){return arguments.length?(t=Array.from(c,Vi),h()):t.slice()},p.range=function(c){return arguments.length?(e=Array.from(c),h()):e.slice()},p.rangeRound=function(c){return e=Array.from(c),n=Mn,h()},p.clamp=function(c){return arguments.length?(s=c?!0:ve,h()):s!==ve},p.interpolate=function(c){return arguments.length?(n=c,h()):n},p.unknown=function(c){return arguments.length?(a=c,p):a},function(c,m){return i=c,o=m,h()}}r(nl,"transformer");function Be(){return nl()(ve,ve)}r(Be,"continuous");function Gi(t,e,n,i){var o=le(t,e,n),a;switch(i=Ut(i??",f"),i.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return i.precision==null&&!isNaN(a=In(o,s))&&(i.precision=a),On(i,s)}case"":case"e":case"g":case"p":case"r":{i.precision==null&&!isNaN(a=Rn(o,Math.max(Math.abs(t),Math.abs(e))))&&(i.precision=a-(i.type==="e"));break}case"f":case"%":{i.precision==null&&!isNaN(a=En(o))&&(i.precision=a-(i.type==="%")*2);break}}return $n(i)}r(Gi,"tickFormat");function rl(t){var e=t.domain;return t.ticks=function(n){var i=e();return hn(i[0],i[i.length-1],n??10)},t.tickFormat=function(n,i){var o=e();return Gi(o[0],o[o.length-1],n??10,i)},t.nice=function(n){n==null&&(n=10);var i=e(),o=0,a=i.length-1,s=i[o],u=i[a],l,f,h=10;for(u0;){if(f=Ee(s,u,n),f===l)return i[o]=s,i[a]=u,e(i);if(f>0)s=Math.floor(s/f)*f,u=Math.ceil(u/f)*f;else if(f<0)s=Math.ceil(s*f)/f,u=Math.floor(u*f)/f;else break;l=f}return t},t}r(rl,"linearish");function Zi(){var t=Be();return t.copy=function(){return Yn(t,Zi())},Lt.apply(t,arguments),rl(t)}r(Zi,"linear");var Qi=new Date,Ki=new Date;function H(t,e,n,i){function o(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return r(o,"interval"),o.floor=a=>(t(a=new Date(+a)),a),o.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),o.round=a=>{let s=o(a),u=o.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),o.range=(a,s,u)=>{let l=[];if(a=o.ceil(a),u=u==null?1:Math.floor(u),!(a0))return l;let f;do l.push(f=new Date(+a)),e(a,u),t(a);while(fH(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,u)=>{if(s>=s)if(u<0)for(;++u<=0;)for(;e(s,-1),!a(s););else for(;--u>=0;)for(;e(s,1),!a(s););}),n&&(o.count=(a,s)=>(Qi.setTime(+a),Ki.setTime(+s),t(Qi),t(Ki),Math.floor(n(Qi,Ki))),o.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?o.filter(i?s=>i(s)%a===0:s=>o.count(0,s)%a===0):o)),o}r(H,"timeInterval");var jt=H(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);jt.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?H(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):jt);var za=jt.range;var Tt=H(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),Ha=Tt.range;var we=H(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),il=we.range,Fn=H(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),ol=Fn.range;var be=H(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),al=be.range,Un=H(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),sl=Un.range;var Dt=H(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),ul=Dt.range,We=H(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),fl=We.range,Ln=H(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),ll=Ln.range;function ne(t){return H(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}r(ne,"timeWeekday");var $t=ne(0),Me=ne(1),qa=ne(2),Wa=ne(3),zt=ne(4),Va=ne(5),Xa=ne(6),Ga=$t.range,cl=Me.range,hl=qa.range,pl=Wa.range,ml=zt.range,dl=Va.range,xl=Xa.range;function re(t){return H(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/6048e5)}r(re,"utcWeekday");var ie=re(0),Te=re(1),Za=re(2),Qa=re(3),Ht=re(4),Ka=re(5),Ja=re(6),ja=ie.range,_l=Te.range,gl=Za.range,yl=Qa.range,vl=Ht.range,wl=Ka.range,bl=Ja.range;var ke=H(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),Ml=ke.range,zn=H(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),Tl=zn.range;var lt=H(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());lt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:H(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});var kl=lt.range,yt=H(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());yt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:H(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});var Sl=yt.range;function es(t,e,n,i,o,a){let s=[[Tt,1,1e3],[Tt,5,5*1e3],[Tt,15,15*1e3],[Tt,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[i,1,864e5],[i,2,2*864e5],[n,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function u(f,h,p){let c=hT).right(s,c);if(m===s.length)return t.every(le(f/31536e6,h/31536e6,p));if(m===0)return jt.every(Math.max(le(f,h,p),1));let[_,M]=s[c/s[m-1][2]53)return null;"w"in g||(g.w=1),"Z"in g?(q=eo(Ve(g.y,0,1)),ut=q.getUTCDay(),q=ut>4||ut===0?Te.ceil(q):Te(q),q=We.offset(q,(g.V-1)*7),g.y=q.getUTCFullYear(),g.m=q.getUTCMonth(),g.d=q.getUTCDate()+(g.w+6)%7):(q=to(Ve(g.y,0,1)),ut=q.getDay(),q=ut>4||ut===0?Me.ceil(q):Me(q),q=Dt.offset(q,(g.V-1)*7),g.y=q.getFullYear(),g.m=q.getMonth(),g.d=q.getDate()+(g.w+6)%7)}else("W"in g||"U"in g)&&("w"in g||(g.w="u"in g?g.u%7:"W"in g?1:0),ut="Z"in g?eo(Ve(g.y,0,1)).getUTCDay():to(Ve(g.y,0,1)).getDay(),g.m=0,g.d="W"in g?(g.w+6)%7+g.W*7-(ut+5)%7:g.w+g.U*7-(ut+6)%7);return"Z"in g?(g.H+=g.Z/100|0,g.M+=g.Z%100,eo(g)):to(g)}}r(Y,"newParse");function U(b,R,F,g){for(var at=0,q=R.length,ut=F.length,ft,Wt;at=ut)return-1;if(ft=R.charCodeAt(at++),ft===37){if(ft=R.charAt(at++),Wt=O[ft in ns?R.charAt(at++):ft],!Wt||(g=Wt(b,F,g))<0)return-1}else if(ft!=F.charCodeAt(g++))return-1}return g}r(U,"parseSpecifier");function E(b,R,F){var g=f.exec(R.slice(F));return g?(b.p=h.get(g[0].toLowerCase()),F+g[0].length):-1}r(E,"parsePeriod");function B(b,R,F){var g=m.exec(R.slice(F));return g?(b.w=_.get(g[0].toLowerCase()),F+g[0].length):-1}r(B,"parseShortWeekday");function N(b,R,F){var g=p.exec(R.slice(F));return g?(b.w=c.get(g[0].toLowerCase()),F+g[0].length):-1}r(N,"parseWeekday");function v(b,R,F){var g=k.exec(R.slice(F));return g?(b.m=I.get(g[0].toLowerCase()),F+g[0].length):-1}r(v,"parseShortMonth");function d(b,R,F){var g=M.exec(R.slice(F));return g?(b.m=T.get(g[0].toLowerCase()),F+g[0].length):-1}r(d,"parseMonth");function x(b,R,F){return U(b,e,R,F)}r(x,"parseLocaleDateTime");function S(b,R,F){return U(b,n,R,F)}r(S,"parseLocaleDate");function y(b,R,F){return U(b,i,R,F)}r(y,"parseLocaleTime");function D(b){return s[b.getDay()]}r(D,"formatShortWeekday");function $(b){return a[b.getDay()]}r($,"formatWeekday");function P(b){return l[b.getMonth()]}r(P,"formatShortMonth");function z(b){return u[b.getMonth()]}r(z,"formatMonth");function W(b){return o[+(b.getHours()>=12)]}r(W,"formatPeriod");function X(b){return 1+~~(b.getMonth()/3)}r(X,"formatQuarter");function J(b){return s[b.getUTCDay()]}r(J,"formatUTCShortWeekday");function ht(b){return a[b.getUTCDay()]}r(ht,"formatUTCWeekday");function Q(b){return l[b.getUTCMonth()]}r(Q,"formatUTCShortMonth");function dt(b){return u[b.getUTCMonth()]}r(dt,"formatUTCMonth");function st(b){return o[+(b.getUTCHours()>=12)]}r(st,"formatUTCPeriod");function Z(b){return 1+~~(b.getUTCMonth()/3)}return r(Z,"formatUTCQuarter"),{format:r(function(b){var R=w(b+="",C);return R.toString=function(){return b},R},"format"),parse:r(function(b){var R=Y(b+="",!1);return R.toString=function(){return b},R},"parse"),utcFormat:r(function(b){var R=w(b+="",A);return R.toString=function(){return b},R},"utcFormat"),utcParse:r(function(b){var R=Y(b+="",!0);return R.toString=function(){return b},R},"utcParse")}}r(no,"formatLocale");var ns={"-":"",_:" ",0:"0"},tt=/^\s*\d+/,Dl=/^%/,$l=/[\\^$*+?|[\]().{}]/g;function L(t,e,n){var i=t<0?"-":"",o=(i?-t:t)+"",a=o.length;return i+(a[e.toLowerCase(),n]))}r(Ge,"formatLookup");function El(t,e,n){var i=tt.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}r(El,"parseWeekdayNumberSunday");function Il(t,e,n){var i=tt.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}r(Il,"parseWeekdayNumberMonday");function Rl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}r(Rl,"parseWeekNumberSunday");function Pl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}r(Pl,"parseWeekNumberISO");function Yl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}r(Yl,"parseWeekNumberMonday");function rs(t,e,n){var i=tt.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}r(rs,"parseFullYear");function is(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}r(is,"parseYear");function Fl(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}r(Fl,"parseZone");function Ul(t,e,n){var i=tt.exec(e.slice(n,n+1));return i?(t.q=i[0]*3-3,n+i[0].length):-1}r(Ul,"parseQuarter");function Ll(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}r(Ll,"parseMonthNumber");function os(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}r(os,"parseDayOfMonth");function zl(t,e,n){var i=tt.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}r(zl,"parseDayOfYear");function as(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}r(as,"parseHour24");function Hl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}r(Hl,"parseMinutes");function Bl(t,e,n){var i=tt.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}r(Bl,"parseSeconds");function ql(t,e,n){var i=tt.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}r(ql,"parseMilliseconds");function Wl(t,e,n){var i=tt.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}r(Wl,"parseMicroseconds");function Vl(t,e,n){var i=Dl.exec(e.slice(n,n+1));return i?n+i[0].length:-1}r(Vl,"parseLiteralPercent");function Xl(t,e,n){var i=tt.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}r(Xl,"parseUnixTimestamp");function Gl(t,e,n){var i=tt.exec(e.slice(n));return i?(t.s=+i[0],n+i[0].length):-1}r(Gl,"parseUnixTimestampSeconds");function ss(t,e){return L(t.getDate(),e,2)}r(ss,"formatDayOfMonth");function Zl(t,e){return L(t.getHours(),e,2)}r(Zl,"formatHour24");function Ql(t,e){return L(t.getHours()%12||12,e,2)}r(Ql,"formatHour12");function Kl(t,e){return L(1+Dt.count(lt(t),t),e,3)}r(Kl,"formatDayOfYear");function hs(t,e){return L(t.getMilliseconds(),e,3)}r(hs,"formatMilliseconds");function Jl(t,e){return hs(t,e)+"000"}r(Jl,"formatMicroseconds");function jl(t,e){return L(t.getMonth()+1,e,2)}r(jl,"formatMonthNumber");function tc(t,e){return L(t.getMinutes(),e,2)}r(tc,"formatMinutes");function ec(t,e){return L(t.getSeconds(),e,2)}r(ec,"formatSeconds");function nc(t){var e=t.getDay();return e===0?7:e}r(nc,"formatWeekdayNumberMonday");function rc(t,e){return L($t.count(lt(t)-1,t),e,2)}r(rc,"formatWeekNumberSunday");function ps(t){var e=t.getDay();return e>=4||e===0?zt(t):zt.ceil(t)}r(ps,"dISO");function ic(t,e){return t=ps(t),L(zt.count(lt(t),t)+(lt(t).getDay()===4),e,2)}r(ic,"formatWeekNumberISO");function oc(t){return t.getDay()}r(oc,"formatWeekdayNumberSunday");function ac(t,e){return L(Me.count(lt(t)-1,t),e,2)}r(ac,"formatWeekNumberMonday");function sc(t,e){return L(t.getFullYear()%100,e,2)}r(sc,"formatYear");function uc(t,e){return t=ps(t),L(t.getFullYear()%100,e,2)}r(uc,"formatYearISO");function fc(t,e){return L(t.getFullYear()%1e4,e,4)}r(fc,"formatFullYear");function lc(t,e){var n=t.getDay();return t=n>=4||n===0?zt(t):zt.ceil(t),L(t.getFullYear()%1e4,e,4)}r(lc,"formatFullYearISO");function cc(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+L(e/60|0,"0",2)+L(e%60,"0",2)}r(cc,"formatZone");function us(t,e){return L(t.getUTCDate(),e,2)}r(us,"formatUTCDayOfMonth");function hc(t,e){return L(t.getUTCHours(),e,2)}r(hc,"formatUTCHour24");function pc(t,e){return L(t.getUTCHours()%12||12,e,2)}r(pc,"formatUTCHour12");function mc(t,e){return L(1+We.count(yt(t),t),e,3)}r(mc,"formatUTCDayOfYear");function ms(t,e){return L(t.getUTCMilliseconds(),e,3)}r(ms,"formatUTCMilliseconds");function dc(t,e){return ms(t,e)+"000"}r(dc,"formatUTCMicroseconds");function xc(t,e){return L(t.getUTCMonth()+1,e,2)}r(xc,"formatUTCMonthNumber");function _c(t,e){return L(t.getUTCMinutes(),e,2)}r(_c,"formatUTCMinutes");function gc(t,e){return L(t.getUTCSeconds(),e,2)}r(gc,"formatUTCSeconds");function yc(t){var e=t.getUTCDay();return e===0?7:e}r(yc,"formatUTCWeekdayNumberMonday");function vc(t,e){return L(ie.count(yt(t)-1,t),e,2)}r(vc,"formatUTCWeekNumberSunday");function ds(t){var e=t.getUTCDay();return e>=4||e===0?Ht(t):Ht.ceil(t)}r(ds,"UTCdISO");function wc(t,e){return t=ds(t),L(Ht.count(yt(t),t)+(yt(t).getUTCDay()===4),e,2)}r(wc,"formatUTCWeekNumberISO");function bc(t){return t.getUTCDay()}r(bc,"formatUTCWeekdayNumberSunday");function Mc(t,e){return L(Te.count(yt(t)-1,t),e,2)}r(Mc,"formatUTCWeekNumberMonday");function Tc(t,e){return L(t.getUTCFullYear()%100,e,2)}r(Tc,"formatUTCYear");function kc(t,e){return t=ds(t),L(t.getUTCFullYear()%100,e,2)}r(kc,"formatUTCYearISO");function Sc(t,e){return L(t.getUTCFullYear()%1e4,e,4)}r(Sc,"formatUTCFullYear");function Cc(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Ht(t):Ht.ceil(t),L(t.getUTCFullYear()%1e4,e,4)}r(Cc,"formatUTCFullYearISO");function Nc(){return"+0000"}r(Nc,"formatUTCZone");function fs(){return"%"}r(fs,"formatLiteralPercent");function ls(t){return+t}r(ls,"formatUnixTimestamp");function cs(t){return Math.floor(+t/1e3)}r(cs,"formatUnixTimestampSeconds");var Se,Hn,xs,_s,gs;ro({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function ro(t){return Se=no(t),Hn=Se.format,xs=Se.parse,_s=Se.utcFormat,gs=Se.utcParse,Se}r(ro,"defaultLocale");function io(t,e){t=t.slice();var n=0,i=t.length-1,o=t[n],a=t[i],s;return a1?0:t<-1?Ce:Math.acos(t)}r(bs,"acos");function uo(t){return t>=1?Ze:t<=-1?-Ze:Math.asin(t)}r(uo,"asin");var fo=Math.PI,lo=2*fo,ae=1e-6,Oc=lo-ae;function Ms(t){this._+=t[0];for(let e=1,n=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Ms;let n=10**e;return function(i){this._+=i[0];for(let o=1,a=i.length;oae)if(!(Math.abs(p*l-f*h)>ae)||!a)this._append`L${this._x1=e},${this._y1=n}`;else{let m=i-s,_=o-u,M=l*l+f*f,T=m*m+_*_,k=Math.sqrt(M),I=Math.sqrt(c),C=a*Math.tan((fo-Math.acos((M+c-T)/(2*k*I)))/2),A=C/I,O=C/k;Math.abs(A-1)>ae&&this._append`L${e+A*h},${n+A*p}`,this._append`A${a},${a},0,0,${+(p*m>h*_)},${this._x1=e+O*l},${this._y1=n+O*f}`}}arc(e,n,i,o,a,s){if(e=+e,n=+n,i=+i,s=!!s,i<0)throw new Error(`negative radius: ${i}`);let u=i*Math.cos(o),l=i*Math.sin(o),f=e+u,h=n+l,p=1^s,c=s?o-a:a-o;this._x1===null?this._append`M${f},${h}`:(Math.abs(this._x1-f)>ae||Math.abs(this._y1-h)>ae)&&this._append`L${f},${h}`,i&&(c<0&&(c=c%lo+lo),c>Oc?this._append`A${i},${i},0,1,${p},${e-u},${n-l}A${i},${i},0,1,${p},${this._x1=f},${this._y1=h}`:c>ae&&this._append`A${i},${i},0,${+(c>=fo)},${p},${this._x1=e+i*Math.cos(a)},${this._y1=n+i*Math.sin(a)}`)}rect(e,n,i,o){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}h${i=+i}v${+o}h${-i}Z`}toString(){return this._}};function Ts(){return new se}r(Ts,"path");Ts.prototype=se.prototype;function qn(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(n==null)e=null;else{let i=Math.floor(n);if(!(i>=0))throw new RangeError(`invalid digits: ${n}`);e=i}return t},()=>new se(e)}r(qn,"withPath");function Ic(t){return t.innerRadius}r(Ic,"arcInnerRadius");function Rc(t){return t.outerRadius}r(Rc,"arcOuterRadius");function Pc(t){return t.startAngle}r(Pc,"arcStartAngle");function Yc(t){return t.endAngle}r(Yc,"arcEndAngle");function Fc(t){return t&&t.padAngle}r(Fc,"arcPadAngle");function Uc(t,e,n,i,o,a,s,u){var l=n-t,f=i-e,h=s-o,p=u-a,c=p*l-h*f;if(!(c*cx*x+S*S&&(U=B,E=N),{cx:U,cy:E,x01:-h,y01:-p,x11:U*(o/O-1),y11:E*(o/O-1)}}r(Wn,"cornerTangents");function ks(){var t=Ic,e=Rc,n=V(0),i=null,o=Pc,a=Yc,s=Fc,u=null,l=qn(f);function f(){var h,p,c=+t.apply(this,arguments),m=+e.apply(this,arguments),_=o.apply(this,arguments)-Ze,M=a.apply(this,arguments)-Ze,T=so(M-_),k=M>_;if(u||(u=h=l()),met))u.moveTo(0,0);else if(T>Ne-et)u.moveTo(m*Bt(_),m*vt(_)),u.arc(0,0,m,_,M,!k),c>et&&(u.moveTo(c*Bt(M),c*vt(M)),u.arc(0,0,c,M,_,k));else{var I=_,C=M,A=_,O=M,w=T,Y=T,U=s.apply(this,arguments)/2,E=U>et&&(i?+i.apply(this,arguments):oe(c*c+m*m)),B=Bn(so(m-c)/2,+n.apply(this,arguments)),N=B,v=B,d,x;if(E>et){var S=uo(E/c*vt(U)),y=uo(E/m*vt(U));(w-=S*2)>et?(S*=k?1:-1,A+=S,O-=S):(w=0,A=O=(_+M)/2),(Y-=y*2)>et?(y*=k?1:-1,I+=y,C-=y):(Y=0,I=C=(_+M)/2)}var D=m*Bt(I),$=m*vt(I),P=c*Bt(O),z=c*vt(O);if(B>et){var W=m*Bt(C),X=m*vt(C),J=c*Bt(A),ht=c*vt(A),Q;if(Tet?v>et?(d=Wn(J,ht,D,$,m,v,k),x=Wn(W,X,P,z,m,v,k),u.moveTo(d.cx+d.x01,d.cy+d.y01),vet)||!(w>et)?u.lineTo(P,z):N>et?(d=Wn(P,z,W,X,c,-N,k),x=Wn(D,$,J,ht,c,-N,k),u.lineTo(d.cx+d.x01,d.cy+d.y01),Nt?1:e>=t?0:NaN}r(co,"default");function ho(t){return t}r(ho,"default");function Ds(){var t=ho,e=co,n=null,i=V(0),o=V(Ne),a=V(0);function s(u){var l,f=(u=Qe(u)).length,h,p,c=0,m=new Array(f),_=new Array(f),M=+i.apply(this,arguments),T=Math.min(Ne,Math.max(-Ne,o.apply(this,arguments)-M)),k,I=Math.min(Math.abs(T)/f,a.apply(this,arguments)),C=I*(T<0?-1:1),A;for(l=0;l0&&(c+=A);for(e!=null?m.sort(function(O,w){return e(_[O],_[w])}):n!=null&&m.sort(function(O,w){return n(u[O],u[w])}),l=0,p=c?(T-f*C)/c:0;l0?A*p:0)+C,_[h]={data:u[h],index:l,value:A,startAngle:M,endAngle:k,padAngle:I};return _}return r(s,"pie"),s.value=function(u){return arguments.length?(t=typeof u=="function"?u:V(+u),s):t},s.sortValues=function(u){return arguments.length?(e=u,n=null,s):e},s.sort=function(u){return arguments.length?(n=u,e=null,s):n},s.startAngle=function(u){return arguments.length?(i=typeof u=="function"?u:V(+u),s):i},s.endAngle=function(u){return arguments.length?(o=typeof u=="function"?u:V(+u),s):o},s.padAngle=function(u){return arguments.length?(a=typeof u=="function"?u:V(+u),s):a},s}r(Ds,"default");var Xn=class{static{r(this,"Bump")}constructor(e,n){this._context=e,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,n){switch(e=+e,n=+n,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,n):this._context.moveTo(e,n);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,n,e,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,e,this._y0,e,n);break}}this._x0=e,this._y0=n}};function Lc(t){return new Xn(t,!0)}r(Lc,"bumpX");function zc(t){return new Xn(t,!1)}r(zc,"bumpY");function Ae(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}r(Ae,"point");function Ke(t){this._context=t}r(Ke,"Basis");Ke.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 3:Ae(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ae(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};function $s(t){return new Ke(t)}r($s,"default");function ct(){}r(ct,"default");function Os(t){this._context=t}r(Os,"BasisClosed");Os.prototype={areaStart:ct,areaEnd:ct,lineStart:r(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Ae(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};function Es(t){return new Os(t)}r(Es,"default");function Is(t){this._context=t}r(Is,"BasisOpen");Is.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:r(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,i):this._context.moveTo(n,i);break;case 3:this._point=4;default:Ae(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};function Rs(t){return new Is(t)}r(Rs,"default");function Ps(t,e){this._basis=new Ke(t),this._beta=e}r(Ps,"Bundle");Ps.prototype={lineStart:r(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:r(function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var i=t[0],o=e[0],a=t[n]-i,s=e[n]-o,u=-1,l;++u<=n;)l=u/n,this._basis.point(this._beta*t[u]+(1-this._beta)*(i+l*a),this._beta*e[u]+(1-this._beta)*(o+l*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:r(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};var Hc=r((function t(e){function n(i){return e===1?new Ke(i):new Ps(i,e)}return r(n,"bundle"),n.beta=function(i){return t(+i)},n}),"custom")(.85);function De(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}r(De,"point");function Gn(t,e){this._context=t,this._k=(1-e)/6}r(Gn,"Cardinal");Gn.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:De(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:De(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Bc=r((function t(e){function n(i){return new Gn(i,e)}return r(n,"cardinal"),n.tension=function(i){return t(+i)},n}),"custom")(0);function Zn(t,e){this._context=t,this._k=(1-e)/6}r(Zn,"CardinalClosed");Zn.prototype={areaStart:ct,areaEnd:ct,lineStart:r(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:De(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var qc=r((function t(e){function n(i){return new Zn(i,e)}return r(n,"cardinal"),n.tension=function(i){return t(+i)},n}),"custom")(0);function Qn(t,e){this._context=t,this._k=(1-e)/6}r(Qn,"CardinalOpen");Qn.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:r(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:De(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Wc=r((function t(e){function n(i){return new Qn(i,e)}return r(n,"cardinal"),n.tension=function(i){return t(+i)},n}),"custom")(0);function Je(t,e,n){var i=t._x1,o=t._y1,a=t._x2,s=t._y2;if(t._l01_a>et){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,o=(o*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>et){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*f+t._x1*t._l23_2a-e*t._l12_2a)/h,s=(s*f+t._y1*t._l23_2a-n*t._l12_2a)/h}t._context.bezierCurveTo(i,o,a,s,t._x2,t._y2)}r(Je,"point");function Ys(t,e){this._context=t,this._alpha=e}r(Ys,"CatmullRom");Ys.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Je(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Vc=r((function t(e){function n(i){return e?new Ys(i,e):new Gn(i,0)}return r(n,"catmullRom"),n.alpha=function(i){return t(+i)},n}),"custom")(.5);function Fs(t,e){this._context=t,this._alpha=e}r(Fs,"CatmullRomClosed");Fs.prototype={areaStart:ct,areaEnd:ct,lineStart:r(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:r(function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Je(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Xc=r((function t(e){function n(i){return e?new Fs(i,e):new Zn(i,0)}return r(n,"catmullRom"),n.alpha=function(i){return t(+i)},n}),"custom")(.5);function Us(t,e){this._context=t,this._alpha=e}r(Us,"CatmullRomOpen");Us.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:r(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Je(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};var Gc=r((function t(e){function n(i){return e?new Us(i,e):new Qn(i,0)}return r(n,"catmullRom"),n.alpha=function(i){return t(+i)},n}),"custom")(.5);function Ls(t){this._context=t}r(Ls,"LinearClosed");Ls.prototype={areaStart:ct,areaEnd:ct,lineStart:r(function(){this._point=0},"lineStart"),lineEnd:r(function(){this._point&&this._context.closePath()},"lineEnd"),point:r(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};function zs(t){return new Ls(t)}r(zs,"default");function Hs(t){return t<0?-1:1}r(Hs,"sign");function Bs(t,e,n){var i=t._x1-t._x0,o=e-t._x1,a=(t._y1-t._y0)/(i||o<0&&-0),s=(n-t._y1)/(o||i<0&&-0),u=(a*o+s*i)/(i+o);return(Hs(a)+Hs(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(u))||0}r(Bs,"slope3");function qs(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}r(qs,"slope2");function po(t,e,n){var i=t._x0,o=t._y0,a=t._x1,s=t._y1,u=(a-i)/3;t._context.bezierCurveTo(i+u,o+u*e,a-u,s-u*n,a,s)}r(po,"point");function Kn(t){this._context=t}r(Kn,"MonotoneX");Kn.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:r(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:po(this,this._t0,qs(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:r(function(t,e){var n=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,po(this,qs(this,n=Bs(this,t,e)),n);break;default:po(this,this._t0,n=Bs(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}},"point")};function Ws(t){this._context=new Vs(t)}r(Ws,"MonotoneY");(Ws.prototype=Object.create(Kn.prototype)).point=function(t,e){Kn.prototype.point.call(this,e,t)};function Vs(t){this._context=t}r(Vs,"ReflectContext");Vs.prototype={moveTo:r(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:r(function(){this._context.closePath()},"closePath"),lineTo:r(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:r(function(t,e,n,i,o,a){this._context.bezierCurveTo(e,t,i,n,a,o)},"bezierCurveTo")};function Zc(t){return new Kn(t)}r(Zc,"monotoneX");function Qc(t){return new Ws(t)}r(Qc,"monotoneY");function Gs(t){this._context=t}r(Gs,"Natural");Gs.prototype={areaStart:r(function(){this._line=0},"areaStart"),areaEnd:r(function(){this._line=NaN},"areaEnd"),lineStart:r(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:r(function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),n===2)this._context.lineTo(t[1],e[1]);else for(var i=Xs(t),o=Xs(e),a=0,s=1;s=0;--e)o[e]=(s[e]-o[e+1])/a[e];for(a[n-1]=(t[n]+o[n-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:r(function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}break}}this._x=t,this._y=e},"point")};function Qs(t){return new Jn(t,.5)}r(Qs,"default");function Kc(t){return new Jn(t,0)}r(Kc,"stepBefore");function Jc(t){return new Jn(t,1)}r(Jc,"stepAfter");var jc={value:r(()=>{},"value")};function Js(){for(var t=0,e=arguments.length,n={},i;t=0&&(i=n.slice(o+1),n=n.slice(0,o)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:i}})}r(th,"parseTypenames");jn.prototype=Js.prototype={constructor:jn,on:r(function(t,e){var n=this._,i=th(t+"",n),o,a=-1,s=i.length;if(arguments.length<2){for(;++a0)for(var n=new Array(o),i=0,o,a;i=0&&t._call.call(void 0,e),t=t._next;--$e}r(nu,"timerFlush");function js(){ue=(er=nn.now())+nr,$e=tn=0;try{nu()}finally{$e=0,ih(),ue=0}}r(js,"wake");function rh(){var t=nn.now(),e=t-er;e>tu&&(nr-=e,er=t)}r(rh,"poke");function ih(){for(var t,e=tr,n,i=1/0;e;)e._call?(i>e._time&&(i=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:tr=n);en=t,xo(i)}r(ih,"nap");function xo(t){if(!$e){tn&&(tn=clearTimeout(tn));var e=t-ue;e>24?(t<1/0&&(tn=setTimeout(js,t-nn.now()-nr)),je&&(je=clearInterval(je))):(je||(er=nn.now(),je=setInterval(rh,tu)),$e=1,eu(js))}}r(xo,"sleep");function an(t,e,n){var i=new rn;return e=e==null?0:+e,i.restart(o=>{i.stop(),t(o+e)},e,n),i}r(an,"default");var oh=mo("start","end","cancel","interrupt"),ah=[],ou=0,ru=1,or=2,ir=3,iu=4,ar=5,sn=6;function Ot(t,e,n,i,o,a){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;sh(t,n,{name:e,index:i,group:o,on:oh,tween:ah,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:ou})}r(Ot,"default");function un(t,e){var n=K(t,e);if(n.state>ou)throw new Error("too late; already scheduled");return n}r(un,"init");function it(t,e){var n=K(t,e);if(n.state>ir)throw new Error("too late; already running");return n}r(it,"set");function K(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}r(K,"get");function sh(t,e,n){var i=t.__transition,o;i[e]=n,n.timer=rr(a,0,n.time);function a(f){n.state=ru,n.timer.restart(s,n.delay,n.time),n.delay<=f&&s(f-n.delay)}r(a,"schedule");function s(f){var h,p,c,m;if(n.state!==ru)return l();for(h in i)if(m=i[h],m.name===n.name){if(m.state===ir)return an(s);m.state===iu?(m.state=sn,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete i[h]):+hor&&i.state=0&&(e=e.slice(0,n)),!e||e==="start"})}r(Sh,"start");function Ch(t,e,n){var i,o,a=Sh(e)?un:it;return function(){var s=a(this,t),u=s.on;u!==i&&(o=(i=u).copy()).on(e,n),s.on=o}}r(Ch,"onFunction");function Co(t,e){var n=this._id;return arguments.length<2?K(this.node(),n).on.on(t):this.each(Ch(n,t,e))}r(Co,"default");function Nh(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}r(Nh,"removeFunction");function No(){return this.on("end.remove",Nh(this._id))}r(No,"default");function Ao(t){var e=this._name,n=this._id;typeof t!="function"&&(t=It(t));for(var i=this._groups,o=i.length,a=new Array(o),s=0;snew v,"TokenBuilder"),ValueConverter:e(()=>new l,"ValueConverter")}};function M(k=i){let r=a(n(k),u),o=a(c({shared:r}),d,p);return r.ServiceRegistry.register(o),{shared:r,Packet:o}}t(M,"createPacketServices");e(M,"createPacketServices");export{p as a,M as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-AHTCUU5T.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-AHTCUU5T.mjs.map deleted file mode 100644 index 13bceb5..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-AHTCUU5T.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-C72U2L5F.mjs"], - "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n MermaidGeneratedSharedModule,\n PacketGrammarGeneratedModule,\n __name\n} from \"./chunk-XZSTWKYB.mjs\";\n\n// src/language/packet/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/packet/tokenBuilder.ts\nvar PacketTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"PacketTokenBuilder\");\n }\n constructor() {\n super([\"packet\"]);\n }\n};\n\n// src/language/packet/module.ts\nvar PacketModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new PacketTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createPacketServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Packet = inject(\n createDefaultCoreModule({ shared }),\n PacketGrammarGeneratedModule,\n PacketModule\n );\n shared.ServiceRegistry.register(Packet);\n return { shared, Packet };\n}\n__name(createPacketServices, \"createPacketServices\");\n\nexport {\n PacketModule,\n createPacketServices\n};\n"], - "mappings": "iJAiBA,IAAIA,EAAqB,cAAcC,CAA4B,CAjBnE,MAiBmE,CAAAC,EAAA,2BACjE,MAAO,CACLA,EAAO,KAAM,oBAAoB,CACnC,CACA,aAAc,CACZ,MAAM,CAAC,QAAQ,CAAC,CAClB,CACF,EAGIC,EAAe,CACjB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAsB,cAAc,EACnF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAqBC,EAAUC,EAAiB,CACvD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAASH,EACbI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAM,EAC/B,CAAE,OAAAJ,EAAQ,OAAAI,CAAO,CAC1B,CAZSV,EAAAG,EAAA,wBAaTH,EAAOG,EAAsB,sBAAsB", - "names": ["PacketTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "PacketModule", "CommonValueConverter", "createPacketServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Packet", "createDefaultCoreModule", "PacketGrammarGeneratedModule"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs new file mode 100644 index 0000000..bad97bd --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs @@ -0,0 +1 @@ +var g=Object.create;var e=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=(b,a)=>e(b,"name",{value:a,configurable:!0});var n=(b,a)=>()=>(a||b((a={exports:{}}).exports,a),a.exports),o=(b,a)=>{for(var c in a)e(b,c,{get:a[c],enumerable:!0})},l=(b,a,c,f)=>{if(a&&typeof a=="object"||typeof a=="function")for(let d of i(a))!k.call(b,d)&&d!==c&&e(b,d,{get:()=>a[d],enumerable:!(f=h(a,d))||f.enumerable});return b};var p=(b,a,c)=>(c=b!=null?g(j(b)):{},l(a||!b||!b.__esModule?e(c,"default",{value:b,enumerable:!0}):c,b));export{m as a,n as b,o as c,p as d}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-VELTKBKT.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-VELTKBKT.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-KSICW3F5.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs similarity index 84% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-KSICW3F5.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs index 24011e9..a0b766f 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-KSICW3F5.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs @@ -1,4 +1,4 @@ -import{a as e}from"./chunk-VELTKBKT.mjs";var o=e(()=>` +import{a as e}from"./chunk-AQ6EADP3.mjs";var o=e(()=>` /* Font Awesome icon styling - consolidated */ .label-icon { display: inline-block; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-KSICW3F5.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-KSICW3F5.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-BDKIFH7H.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-BDKIFH7H.mjs deleted file mode 100644 index 60ccc49..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-BDKIFH7H.mjs +++ /dev/null @@ -1,53 +0,0 @@ -import{a as At,b as Mt}from"./chunk-XODN6PIJ.mjs";import{a as N}from"./chunk-IWDTEBJL.mjs";import{a as Ot,b as ft,d as w,e as D}from"./chunk-D2KP3OBD.mjs";import{c as mt,f as et}from"./chunk-YLHEXJF3.mjs";import{i as xt,o as St,q as X}from"./chunk-Q3CC2MQB.mjs";import{$ as $t,B as Rt,C as Ht,Y,m as nt,s as pt,w as U,z as kt}from"./chunk-3UWU4A3N.mjs";import{b as _,h as z}from"./chunk-MGPAVIPZ.mjs";import{a as x}from"./chunk-VELTKBKT.mjs";var C=x(async(f,t,h)=>{let l,o=t.useHtmlLabels||nt(Y()?.htmlLabels);h?l=h:l="node default";let i=f.insert("g").attr("class",l).attr("id",t.domId||t.id),c=i.insert("g").attr("class","label").attr("style",X(t.labelStyle)),r;t.label===void 0?r="":r=typeof t.label=="string"?t.label:t.label[0];let n=!!t.icon||!!t.img,e=t.labelType==="markdown",s=await et(c,kt(St(r),Y()),{useHtmlLabels:o,width:t.width||Y().flowchart?.wrappingWidth,cssClasses:e?"markdown-node-label":void 0,style:t.labelStyle,addSvgBackground:n,markdown:e},Y()),a=s.getBBox(),p=(t?.padding??0)/2;if(o){let m=s.children[0],g=z(s);await At(m,r),a=m.getBoundingClientRect(),g.attr("width",a.width),g.attr("height",a.height)}return o?c.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"):c.attr("transform","translate(0, "+-a.height/2+")"),t.centerLabel&&c.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),c.insert("rect",":first-child"),{shapeSvg:i,bbox:a,halfPadding:p,label:c}},"labelHelper"),Dt=x(async(f,t,h)=>{let l=h.useHtmlLabels??U(Y()),o=f.insert("g").attr("class","label").attr("style",h.labelStyle||""),i=await et(o,kt(St(t),Y()),{useHtmlLabels:l,width:h.width||Y()?.flowchart?.wrappingWidth,style:h.labelStyle,addSvgBackground:!!h.icon||!!h.img}),c=i.getBBox(),r=h.padding/2;if(U(Y())){let n=i.children[0],e=z(i);c=n.getBoundingClientRect(),e.attr("width",c.width),e.attr("height",c.height)}return l?o.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"):o.attr("transform","translate(0, "+-c.height/2+")"),h.centerLabel&&o.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"),o.insert("rect",":first-child"),{shapeSvg:f,bbox:c,halfPadding:r,label:o}},"insertLabel"),$=x((f,t)=>{let h=t.node().getBBox();f.width=h.width,f.height=h.height},"updateNodeBounds");var B=x((f,t)=>(f.look==="handDrawn"?"rough-node":"node")+" "+f.cssClasses+" "+(t||""),"getNodeClasses");function H(f){let t=f.map((h,l)=>`${l===0?"M":"L"}${h.x},${h.y}`);return t.push("Z"),t.join(" ")}x(H,"createPathFromPoints");function it(f,t,h,l,o,i){let c=[],n=h-f,e=l-t,s=n/i,a=2*Math.PI/s,p=t+e/2;for(let m=0;m<=50;m++){let g=m/50,d=f+g*n,u=p+o*Math.sin(a*(d-f));c.push({x:d,y:u})}return c}x(it,"generateFullSineWavePoints");function bt(f,t,h,l,o,i){let c=[],r=o*Math.PI/180,s=(i*Math.PI/180-r)/(l-1);for(let a=0;a{var h=f.x,l=f.y,o=t.x-h,i=t.y-l,c=f.width/2,r=f.height/2,n,e;return Math.abs(i)*c>Math.abs(o)*r?(i<0&&(r=-r),n=i===0?0:r*o/i,e=r):(o<0&&(c=-c),n=c,e=o===0?0:c*i/o),{x:h+n,y:l+e}},"intersectRect"),gt=ss;var rs=x(async(f,t,h,l=!1,o=!1)=>{let i=t||"";typeof i=="object"&&(i=i[0]);let c=Y(),r=U(c);return await et(f,i,{style:h,isTitle:l,useHtmlLabels:r,markdown:!1,isNode:o,width:Number.POSITIVE_INFINITY},c)},"createLabel"),wt=rs;var st=x((f,t,h,l,o)=>["M",f+o,t,"H",f+h-o,"A",o,o,0,0,1,f+h,t+o,"V",t+l-o,"A",o,o,0,0,1,f+h-o,t+l,"H",f+o,"A",o,o,0,0,1,f,t+l-o,"V",t+o,"A",o,o,0,0,1,f+o,t,"Z"].join(" "),"createRoundedRectPathD");var Lt=x(async(f,t)=>{_.info("Creating subgraph rect for ",t.id,t);let h=Y(),{themeVariables:l,handDrawnSeed:o}=h,{clusterBkg:i,clusterBorder:c}=l,{labelStyles:r,nodeStyles:n,borderStyles:e,backgroundStyles:s}=w(t),a=f.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),p=U(h),m=a.insert("g").attr("class","cluster-label "),g;t.labelType==="markdown"?g=await et(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}):g=await wt(m,t.label,t.labelStyle||"",!1,!0);let d=g.getBBox();if(U(h)){let k=g.children[0],R=z(g);d=k.getBoundingClientRect(),R.attr("width",d.width),R.attr("height",d.height)}let u=t.width<=d.width+t.padding?d.width+t.padding:t.width;t.width<=d.width+t.padding?t.diff=(u-t.width)/2-t.padding:t.diff=-t.padding;let y=t.height,S=t.x-u/2,P=t.y-y/2;_.trace("Data ",t,JSON.stringify(t));let T;if(t.look==="handDrawn"){let k=N.svg(a),R=D(t,{roughness:.7,fill:i,stroke:c,fillWeight:3,seed:o}),G=k.path(st(S,P,u,y,0),R);T=a.insert(()=>(_.debug("Rough node insert CXC",G),G),":first-child"),T.select("path:nth-child(2)").attr("style",e.join(";")),T.select("path").attr("style",s.join(";").replace("fill","stroke"))}else T=a.insert("rect",":first-child"),T.attr("style",n).attr("rx",t.rx).attr("ry",t.ry).attr("x",S).attr("y",P).attr("width",u).attr("height",y);let{subGraphTitleTopMargin:v}=Mt(h);if(m.attr("transform",`translate(${t.x-d.width/2}, ${t.y-t.height/2+v})`),r){let k=m.select("span");k&&k.attr("style",r)}let M=T.node().getBBox();return t.offsetX=0,t.width=M.width,t.height=M.height,t.offsetY=d.height-t.padding/2,t.intersect=function(k){return gt(t,k)},{cluster:a,labelBBox:d}},"rect"),is=x((f,t)=>{let h=f.insert("g").attr("class","note-cluster").attr("id",t.id),l=h.insert("rect",":first-child"),o=0*t.padding,i=o/2;l.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-i).attr("y",t.y-t.height/2-i).attr("width",t.width+o).attr("height",t.height+o).attr("fill","none");let c=l.node().getBBox();return t.width=c.width,t.height=c.height,t.intersect=function(r){return gt(t,r)},{cluster:h,labelBBox:{width:0,height:0}}},"noteGroup"),os=x(async(f,t)=>{let h=Y(),{themeVariables:l,handDrawnSeed:o}=h,{altBackground:i,compositeBackground:c,compositeTitleBackground:r,nodeBorder:n}=l,e=f.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-id",t.id).attr("data-look",t.look),s=e.insert("g",":first-child"),a=e.insert("g").attr("class","cluster-label"),p=e.append("rect"),m=await wt(a,t.label,t.labelStyle,void 0,!0),g=m.getBBox();if(U(h)){let G=m.children[0],V=z(m);g=G.getBoundingClientRect(),V.attr("width",g.width),V.attr("height",g.height)}let d=0*t.padding,u=d/2,y=(t.width<=g.width+t.padding?g.width+t.padding:t.width)+d;t.width<=g.width+t.padding?t.diff=(y-t.width)/2-t.padding:t.diff=-t.padding;let S=t.height+d,P=t.height+d-g.height-6,T=t.x-y/2,v=t.y-S/2;t.width=y;let M=t.y-t.height/2-u+g.height+2,k;if(t.look==="handDrawn"){let G=t.cssClasses.includes("statediagram-cluster-alt"),V=N.svg(e),A=t.rx||t.ry?V.path(st(T,v,y,S,10),{roughness:.7,fill:r,fillStyle:"solid",stroke:n,seed:o}):V.rectangle(T,v,y,S,{seed:o});k=e.insert(()=>A,":first-child");let O=V.rectangle(T,M,y,P,{fill:G?i:c,fillStyle:G?"hachure":"solid",stroke:n,seed:o});k=e.insert(()=>A,":first-child"),p=e.insert(()=>O)}else k=s.insert("rect",":first-child"),k.attr("class","outer").attr("x",T).attr("y",v).attr("width",y).attr("height",S).attr("data-look",t.look),p.attr("class","inner").attr("x",T).attr("y",M).attr("width",y).attr("height",P);a.attr("transform",`translate(${t.x-g.width/2}, ${v+1-(U(h)?0:3)})`);let R=k.node().getBBox();return t.height=R.height,t.offsetX=0,t.offsetY=g.height-t.padding/2,t.labelBBox=g,t.intersect=function(G){return gt(t,G)},{cluster:e,labelBBox:g}},"roundedWithTitle"),as=x(async(f,t)=>{_.info("Creating subgraph rect for ",t.id,t);let h=Y(),{themeVariables:l,handDrawnSeed:o}=h,{clusterBkg:i,clusterBorder:c}=l,{labelStyles:r,nodeStyles:n,borderStyles:e,backgroundStyles:s}=w(t),a=f.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),p=U(h),m=a.insert("g").attr("class","cluster-label "),g=await et(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}),d=g.getBBox();if(U(h)){let k=g.children[0],R=z(g);d=k.getBoundingClientRect(),R.attr("width",d.width),R.attr("height",d.height)}let u=t.width<=d.width+t.padding?d.width+t.padding:t.width;t.width<=d.width+t.padding?t.diff=(u-t.width)/2-t.padding:t.diff=-t.padding;let y=t.height,S=t.x-u/2,P=t.y-y/2;_.trace("Data ",t,JSON.stringify(t));let T;if(t.look==="handDrawn"){let k=N.svg(a),R=D(t,{roughness:.7,fill:i,stroke:c,fillWeight:4,seed:o}),G=k.path(st(S,P,u,y,t.rx),R);T=a.insert(()=>(_.debug("Rough node insert CXC",G),G),":first-child"),T.select("path:nth-child(2)").attr("style",e.join(";")),T.select("path").attr("style",s.join(";").replace("fill","stroke"))}else T=a.insert("rect",":first-child"),T.attr("style",n).attr("rx",t.rx).attr("ry",t.ry).attr("x",S).attr("y",P).attr("width",u).attr("height",y);let{subGraphTitleTopMargin:v}=Mt(h);if(m.attr("transform",`translate(${t.x-d.width/2}, ${t.y-t.height/2+v})`),r){let k=m.select("span");k&&k.attr("style",r)}let M=T.node().getBBox();return t.offsetX=0,t.width=M.width,t.height=M.height,t.offsetY=d.height-t.padding/2,t.intersect=function(k){return gt(t,k)},{cluster:a,labelBBox:d}},"kanbanSection"),ns=x((f,t)=>{let h=Y(),{themeVariables:l,handDrawnSeed:o}=h,{nodeBorder:i}=l,c=f.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-look",t.look),r=c.insert("g",":first-child"),n=0*t.padding,e=t.width+n;t.diff=-t.padding;let s=t.height+n,a=t.x-e/2,p=t.y-s/2;t.width=e;let m;if(t.look==="handDrawn"){let u=N.svg(c).rectangle(a,p,e,s,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:i,seed:o});m=c.insert(()=>u,":first-child")}else m=r.insert("rect",":first-child"),m.attr("class","divider").attr("x",a).attr("y",p).attr("width",e).attr("height",s).attr("data-look",t.look);let g=m.node().getBBox();return t.height=g.height,t.offsetX=0,t.offsetY=0,t.intersect=function(d){return gt(t,d)},{cluster:c,labelBBox:{}}},"divider"),ls=Lt,cs={rect:Lt,squareRect:ls,roundedWithTitle:os,noteGroup:is,divider:ns,kanbanSection:as},Vt=new Map,ar=x(async(f,t)=>{let h=t.shape||"rect",l=await cs[h](f,t);return Vt.set(t.id,l),l},"insertCluster");var nr=x(()=>{Vt=new Map},"clear");function hs(f,t){return f.intersect(t)}x(hs,"intersectNode");var Wt=hs;function ps(f,t,h,l){var o=f.x,i=f.y,c=o-l.x,r=i-l.y,n=Math.sqrt(t*t*r*r+h*h*c*c),e=Math.abs(t*h*c/n);l.x0}x(Ft,"sameSign");var _t=fs;function gs(f,t,h){let l=f.x,o=f.y,i=[],c=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(s){c=Math.min(c,s.x),r=Math.min(r,s.y)}):(c=Math.min(c,t.x),r=Math.min(r,t.y));let n=l-f.width/2-c,e=o-f.height/2-r;for(let s=0;s1&&i.sort(function(s,a){let p=s.x-h.x,m=s.y-h.y,g=Math.sqrt(p*p+m*m),d=a.x-h.x,u=a.y-h.y,y=Math.sqrt(d*d+u*u);return gs,":first-child");return a.attr("class","anchor").attr("style",X(r)),$(t,a),t.intersect=function(p){return _.info("Circle intersect",t,c,p),b.circle(t,c,p)},i}x(qt,"anchor");function Yt(f,t,h,l,o,i,c){let n=(f+h)/2,e=(t+l)/2,s=Math.atan2(l-t,h-f),a=(h-f)/2,p=(l-t)/2,m=a/o,g=p/i,d=Math.sqrt(m**2+g**2);if(d>1)throw new Error("The given radii are too small to create an arc between the points.");let u=Math.sqrt(1-d**2),y=n+u*i*Math.sin(s)*(c?-1:1),S=e-u*o*Math.cos(s)*(c?-1:1),P=Math.atan2((t-S)/i,(f-y)/o),v=Math.atan2((l-S)/i,(h-y)/o)-P;c&&v<0&&(v+=2*Math.PI),!c&&v>0&&(v-=2*Math.PI);let M=[];for(let k=0;k<20;k++){let R=k/19,G=P+R*v,V=y+o*Math.cos(G),A=S+i*Math.sin(G);M.push({x:V,y:A})}return M}x(Yt,"generateArcPoints");async function zt(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=i.width+t.padding+20,r=i.height+t.padding,n=r/2,e=n/(2.5+r/50),{cssStyles:s}=t,a=[{x:c/2,y:-r/2},{x:-c/2,y:-r/2},...Yt(-c/2,-r/2,-c/2,r/2,e,n,!1),{x:c/2,y:r/2},...Yt(c/2,r/2,c/2,-r/2,e,n,!0)],p=N.svg(o),m=D(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=H(a),d=p.path(g,m),u=o.insert(()=>d,":first-child");return u.attr("class","basic label-container"),s&&t.look!=="handDrawn"&&u.selectAll("path").attr("style",s),l&&t.look!=="handDrawn"&&u.selectAll("path").attr("style",l),u.attr("transform",`translate(${e/2}, 0)`),$(t,u),t.intersect=function(y){return b.polygon(t,a,y)},o}x(zt,"bowTieRect");function K(f,t,h,l){return f.insert("polygon",":first-child").attr("points",l.map(function(o){return o.x+","+o.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+h/2+")")}x(K,"insertPolygonShape");async function Ut(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=i.height+t.padding,r=12,n=i.width+t.padding+r,e=0,s=n,a=-c,p=0,m=[{x:e+r,y:a},{x:s,y:a},{x:s,y:p},{x:e,y:p},{x:e,y:a+r},{x:e+r,y:a}],g,{cssStyles:d}=t;if(t.look==="handDrawn"){let u=N.svg(o),y=D(t,{}),S=H(m),P=u.path(S,y);g=o.insert(()=>P,":first-child").attr("transform",`translate(${-n/2}, ${c/2})`),d&&g.attr("style",d)}else g=K(o,n,c,m);return l&&g.attr("style",l),$(t,g),t.intersect=function(u){return b.polygon(t,m,u)},o}x(Ut,"card");function Zt(f,t){let{nodeStyles:h}=w(t);t.label="";let l=f.insert("g").attr("class",B(t)).attr("id",t.domId??t.id),{cssStyles:o}=t,i=Math.max(28,t.width??0),c=[{x:0,y:i/2},{x:i/2,y:0},{x:0,y:-i/2},{x:-i/2,y:0}],r=N.svg(l),n=D(t,{});t.look!=="handDrawn"&&(n.roughness=0,n.fillStyle="solid");let e=H(c),s=r.path(e,n),a=l.insert(()=>s,":first-child");return o&&t.look!=="handDrawn"&&a.selectAll("path").attr("style",o),h&&t.look!=="handDrawn"&&a.selectAll("path").attr("style",h),t.width=28,t.height=28,t.intersect=function(p){return b.polygon(t,c,p)},l}x(Zt,"choice");async function Bt(f,t,h){let{labelStyles:l,nodeStyles:o}=w(t);t.labelStyle=l;let{shapeSvg:i,bbox:c,halfPadding:r}=await C(f,t,B(t)),n=h?.padding??r,e=c.width/2+n,s,{cssStyles:a}=t;if(t.look==="handDrawn"){let p=N.svg(i),m=D(t,{}),g=p.circle(0,0,e*2,m);s=i.insert(()=>g,":first-child"),s.attr("class","basic label-container").attr("style",X(a))}else s=i.insert("circle",":first-child").attr("class","basic label-container").attr("style",o).attr("r",e).attr("cx",0).attr("cy",0);return $(t,s),t.calcIntersect=function(p,m){let g=p.width/2;return b.circle(p,g,m)},t.intersect=function(p){return _.info("Circle intersect",t,e,p),b.circle(t,e,p)},i}x(Bt,"circle");function ds(f){let t=Math.cos(Math.PI/4),h=Math.sin(Math.PI/4),l=f*2,o={x:l/2*t,y:l/2*h},i={x:-(l/2)*t,y:l/2*h},c={x:-(l/2)*t,y:-(l/2)*h},r={x:l/2*t,y:-(l/2)*h};return`M ${i.x},${i.y} L ${r.x},${r.y} - M ${o.x},${o.y} L ${c.x},${c.y}`}x(ds,"createLine");function Jt(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h,t.label="";let o=f.insert("g").attr("class",B(t)).attr("id",t.domId??t.id),i=Math.max(30,t?.width??0),{cssStyles:c}=t,r=N.svg(o),n=D(t,{});t.look!=="handDrawn"&&(n.roughness=0,n.fillStyle="solid");let e=r.circle(0,0,i*2,n),s=ds(i),a=r.path(s,n),p=o.insert(()=>e,":first-child");return p.insert(()=>a),c&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",c),l&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",l),$(t,p),t.intersect=function(m){return _.info("crossedCircle intersect",t,{radius:i,point:m}),b.circle(t,i,m)},o}x(Jt,"crossedCircle");function dt(f,t,h,l=100,o=0,i=180){let c=[],r=o*Math.PI/180,s=(i*Math.PI/180-r)/(l-1);for(let a=0;aP,":first-child").attr("stroke-opacity",0),T.insert(()=>y,":first-child"),T.attr("class","text"),s&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",s),l&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",l),T.attr("transform",`translate(${e}, 0)`),c.attr("transform",`translate(${-r/2+e-(i.x-(i.left??0))},${-n/2+(t.padding??0)/2-(i.y-(i.top??0))})`),$(t,T),t.intersect=function(v){return b.polygon(t,p,v)},o}x(Kt,"curlyBraceLeft");function yt(f,t,h,l=100,o=0,i=180){let c=[],r=o*Math.PI/180,s=(i*Math.PI/180-r)/(l-1);for(let a=0;aP,":first-child").attr("stroke-opacity",0),T.insert(()=>y,":first-child"),T.attr("class","text"),s&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",s),l&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",l),T.attr("transform",`translate(${-e}, 0)`),c.attr("transform",`translate(${-r/2+(t.padding??0)/2-(i.x-(i.left??0))},${-n/2+(t.padding??0)/2-(i.y-(i.top??0))})`),$(t,T),t.intersect=function(v){return b.polygon(t,p,v)},o}x(Qt,"curlyBraceRight");function Q(f,t,h,l=100,o=0,i=180){let c=[],r=o*Math.PI/180,s=(i*Math.PI/180-r)/(l-1);for(let a=0;ak,":first-child").attr("stroke-opacity",0),R.insert(()=>S,":first-child"),R.insert(()=>v,":first-child"),R.attr("class","text"),s&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",s),l&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",l),R.attr("transform",`translate(${e-e/4}, 0)`),c.attr("transform",`translate(${-r/2+(t.padding??0)/2-(i.x-(i.left??0))},${-n/2+(t.padding??0)/2-(i.y-(i.top??0))})`),$(t,R),t.intersect=function(G){return b.polygon(t,m,G)},o}x(te,"curlyBraces");async function ee(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=80,r=20,n=Math.max(c,(i.width+(t.padding??0)*2)*1.25,t?.width??0),e=Math.max(r,i.height+(t.padding??0)*2,t?.height??0),s=e/2,{cssStyles:a}=t,p=N.svg(o),m=D(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=n,d=e,u=g-s,y=d/4,S=[{x:u,y:0},{x:y,y:0},{x:0,y:d/2},{x:y,y:d},{x:u,y:d},...bt(-u,-d/2,s,50,270,90)],P=H(S),T=p.path(P,m),v=o.insert(()=>T,":first-child");return v.attr("class","basic label-container"),a&&t.look!=="handDrawn"&&v.selectChildren("path").attr("style",a),l&&t.look!=="handDrawn"&&v.selectChildren("path").attr("style",l),v.attr("transform",`translate(${-n/2}, ${-e/2})`),$(t,v),t.intersect=function(M){return b.polygon(t,S,M)},o}x(ee,"curvedTrapezoid");var ys=x((f,t,h,l,o,i)=>[`M${f},${t+i}`,`a${o},${i} 0,0,0 ${h},0`,`a${o},${i} 0,0,0 ${-h},0`,`l0,${l}`,`a${o},${i} 0,0,0 ${h},0`,`l0,${-l}`].join(" "),"createCylinderPathD"),us=x((f,t,h,l,o,i)=>[`M${f},${t+i}`,`M${f+h},${t+i}`,`a${o},${i} 0,0,0 ${-h},0`,`l0,${l}`,`a${o},${i} 0,0,0 ${h},0`,`l0,${-l}`].join(" "),"createOuterCylinderPathD"),xs=x((f,t,h,l,o,i)=>[`M${f-h/2},${-l/2}`,`a${o},${i} 0,0,0 ${h},0`].join(" "),"createInnerCylinderPathD");async function se(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+t.padding,t.width??0),n=r/2,e=n/(2.5+r/50),s=Math.max(i.height+e+t.padding,t.height??0),a,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=N.svg(o),g=us(0,0,r,s,n,e),d=xs(0,e,r,s,n,e),u=m.path(g,D(t,{})),y=m.path(d,D(t,{fill:"none"}));a=o.insert(()=>y,":first-child"),a=o.insert(()=>u,":first-child"),a.attr("class","basic label-container"),p&&a.attr("style",p)}else{let m=ys(0,0,r,s,n,e);a=o.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",X(p)).attr("style",l)}return a.attr("label-offset-y",e),a.attr("transform",`translate(${-r/2}, ${-(s/2+e)})`),$(t,a),c.attr("transform",`translate(${-(i.width/2)-(i.x-(i.left??0))}, ${-(i.height/2)+(t.padding??0)/1.5-(i.y-(i.top??0))})`),t.intersect=function(m){let g=b.rect(t,m),d=g.x-(t.x??0);if(n!=0&&(Math.abs(d)<(t.width??0)/2||Math.abs(d)==(t.width??0)/2&&Math.abs(g.y-(t.y??0))>(t.height??0)/2-e)){let u=e*e*(1-d*d/(n*n));u>0&&(u=Math.sqrt(u)),u=e-u,m.y-(t.y??0)>0&&(u=-u),g.y+=u}return g},o}x(se,"cylinder");async function re(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=i.width+t.padding,n=i.height+t.padding,e=n*.2,s=-r/2,a=-n/2-e/2,{cssStyles:p}=t,m=N.svg(o),g=D(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let d=[{x:s,y:a+e},{x:-s,y:a+e},{x:-s,y:-a},{x:s,y:-a},{x:s,y:a},{x:-s,y:a},{x:-s,y:a+e}],u=m.polygon(d.map(S=>[S.x,S.y]),g),y=o.insert(()=>u,":first-child");return y.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",p),l&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",l),c.attr("transform",`translate(${s+(t.padding??0)/2-(i.x-(i.left??0))}, ${a+e+(t.padding??0)/2-(i.y-(i.top??0))})`),$(t,y),t.intersect=function(S){return b.rect(t,S)},o}x(re,"dividedRectangle");async function ie(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,halfPadding:c}=await C(f,t,B(t)),n=i.width/2+c+5,e=i.width/2+c,s,{cssStyles:a}=t;if(t.look==="handDrawn"){let p=N.svg(o),m=D(t,{roughness:.2,strokeWidth:2.5}),g=D(t,{roughness:.2,strokeWidth:1.5}),d=p.circle(0,0,n*2,m),u=p.circle(0,0,e*2,g);s=o.insert("g",":first-child"),s.attr("class",X(t.cssClasses)).attr("style",X(a)),s.node()?.appendChild(d),s.node()?.appendChild(u)}else{s=o.insert("g",":first-child");let p=s.insert("circle",":first-child"),m=s.insert("circle");s.attr("class","basic label-container").attr("style",l),p.attr("class","outer-circle").attr("style",l).attr("r",n).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",l).attr("r",e).attr("cx",0).attr("cy",0)}return $(t,s),t.intersect=function(p){return _.info("DoubleCircle intersect",t,n,p),b.circle(t,n,p)},o}x(ie,"doublecircle");function oe(f,t,{config:{themeVariables:h}}){let{labelStyles:l,nodeStyles:o}=w(t);t.label="",t.labelStyle=l;let i=f.insert("g").attr("class",B(t)).attr("id",t.domId??t.id),c=7,{cssStyles:r}=t,n=N.svg(i),{nodeBorder:e}=h,s=D(t,{fillStyle:"solid"});t.look!=="handDrawn"&&(s.roughness=0);let a=n.circle(0,0,c*2,s),p=i.insert(()=>a,":first-child");return p.selectAll("path").attr("style",`fill: ${e} !important;`),r&&r.length>0&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",r),o&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",o),$(t,p),t.intersect=function(m){return _.info("filledCircle intersect",t,{radius:c,point:m}),b.circle(t,c,m)},i}x(oe,"filledCircle");async function ae(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=i.width+(t.padding??0),n=r+i.height,e=r+i.height,s=[{x:0,y:-n},{x:e,y:-n},{x:e/2,y:0}],{cssStyles:a}=t,p=N.svg(o),m=D(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=H(s),d=p.path(g,m),u=o.insert(()=>d,":first-child").attr("transform",`translate(${-n/2}, ${n/2})`);return a&&t.look!=="handDrawn"&&u.selectChildren("path").attr("style",a),l&&t.look!=="handDrawn"&&u.selectChildren("path").attr("style",l),t.width=r,t.height=n,$(t,u),c.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${-n/2+(t.padding??0)/2+(i.y-(i.top??0))})`),t.intersect=function(y){return _.info("Triangle intersect",t,s,y),b.polygon(t,s,y)},o}x(ae,"flippedTriangle");function ne(f,t,{dir:h,config:{state:l,themeVariables:o}}){let{nodeStyles:i}=w(t);t.label="";let c=f.insert("g").attr("class",B(t)).attr("id",t.domId??t.id),{cssStyles:r}=t,n=Math.max(70,t?.width??0),e=Math.max(10,t?.height??0);h==="LR"&&(n=Math.max(10,t?.width??0),e=Math.max(70,t?.height??0));let s=-1*n/2,a=-1*e/2,p=N.svg(c),m=D(t,{stroke:o.lineColor,fill:o.lineColor});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(s,a,n,e,m),d=c.insert(()=>g,":first-child");r&&t.look!=="handDrawn"&&d.selectAll("path").attr("style",r),i&&t.look!=="handDrawn"&&d.selectAll("path").attr("style",i),$(t,d);let u=l?.padding??0;return t.width&&t.height&&(t.width+=u/2||0,t.height+=u/2||0),t.intersect=function(y){return b.rect(t,y)},c}x(ne,"forkJoin");async function le(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let o=80,i=50,{shapeSvg:c,bbox:r}=await C(f,t,B(t)),n=Math.max(o,r.width+(t.padding??0)*2,t?.width??0),e=Math.max(i,r.height+(t.padding??0)*2,t?.height??0),s=e/2,{cssStyles:a}=t,p=N.svg(c),m=D(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-n/2,y:-e/2},{x:n/2-s,y:-e/2},...bt(-n/2+s,0,s,50,90,270),{x:n/2-s,y:e/2},{x:-n/2,y:e/2}],d=H(g),u=p.path(d,m),y=c.insert(()=>u,":first-child");return y.attr("class","basic label-container"),a&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",a),l&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",l),$(t,y),t.intersect=function(S){return _.info("Pill intersect",t,{radius:s,point:S}),b.polygon(t,g,S)},c}x(le,"halfRoundedRectangle");var Ss=x((f,t,h,l,o)=>[`M${f+o},${t}`,`L${f+h-o},${t}`,`L${f+h},${t-l/2}`,`L${f+h-o},${t-l}`,`L${f+o},${t-l}`,`L${f},${t-l/2}`,"Z"].join(" "),"createHexagonPathD");async function ce(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=4,r=i.height+t.padding,n=r/c,e=i.width+2*n+t.padding,s=[{x:n,y:0},{x:e-n,y:0},{x:e,y:-r/2},{x:e-n,y:-r},{x:n,y:-r},{x:0,y:-r/2}],a,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=N.svg(o),g=D(t,{}),d=Ss(0,0,e,r,n),u=m.path(d,g);a=o.insert(()=>u,":first-child").attr("transform",`translate(${-e/2}, ${r/2})`),p&&a.attr("style",p)}else a=K(o,e,r,s);return l&&a.attr("style",l),t.width=e,t.height=r,$(t,a),t.intersect=function(m){return b.polygon(t,s,m)},o}x(ce,"hexagon");async function he(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.label="",t.labelStyle=h;let{shapeSvg:o}=await C(f,t,B(t)),i=Math.max(30,t?.width??0),c=Math.max(30,t?.height??0),{cssStyles:r}=t,n=N.svg(o),e=D(t,{});t.look!=="handDrawn"&&(e.roughness=0,e.fillStyle="solid");let s=[{x:0,y:0},{x:i,y:0},{x:0,y:c},{x:i,y:c}],a=H(s),p=n.path(a,e),m=o.insert(()=>p,":first-child");return m.attr("class","basic label-container"),r&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",r),l&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),m.attr("transform",`translate(${-i/2}, ${-c/2})`),$(t,m),t.intersect=function(g){return _.info("Pill intersect",t,{points:s}),b.polygon(t,s,g)},o}x(he,"hourglass");async function pe(f,t,{config:{themeVariables:h,flowchart:l}}){let{labelStyles:o}=w(t);t.labelStyle=o;let i=t.assetHeight??48,c=t.assetWidth??48,r=Math.max(i,c),n=l?.wrappingWidth;t.width=Math.max(r,n??0);let{shapeSvg:e,bbox:s,label:a}=await C(f,t,"icon-shape default"),p=t.pos==="t",m=r,g=r,{nodeBorder:d}=h,{stylesMap:u}=ft(t),y=-g/2,S=-m/2,P=t.label?8:0,T=N.svg(e),v=D(t,{stroke:"none",fill:"none"});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let M=T.rectangle(y,S,g,m,v),k=Math.max(g,s.width),R=m+s.height+P,G=T.rectangle(-k/2,-R/2,k,R,{...v,fill:"transparent",stroke:"none"}),V=e.insert(()=>M,":first-child"),A=e.insert(()=>G);if(t.icon){let O=e.append("g");O.html(`${await mt(t.icon,{height:r,width:r,fallbackPrefix:""})}`);let E=O.node().getBBox(),L=E.width,I=E.height,j=E.x,F=E.y;O.attr("transform",`translate(${-L/2-j},${p?s.height/2+P/2-I/2-F:-s.height/2-P/2-I/2-F})`),O.attr("style",`color: ${u.get("stroke")??d};`)}return a.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))},${p?-R/2:R/2-s.height})`),V.attr("transform",`translate(0,${p?s.height/2+P/2:-s.height/2-P/2})`),$(t,A),t.intersect=function(O){if(_.info("iconSquare intersect",t,O),!t.label)return b.rect(t,O);let E=t.x??0,L=t.y??0,I=t.height??0,j=[];return p?j=[{x:E-s.width/2,y:L-I/2},{x:E+s.width/2,y:L-I/2},{x:E+s.width/2,y:L-I/2+s.height+P},{x:E+g/2,y:L-I/2+s.height+P},{x:E+g/2,y:L+I/2},{x:E-g/2,y:L+I/2},{x:E-g/2,y:L-I/2+s.height+P},{x:E-s.width/2,y:L-I/2+s.height+P}]:j=[{x:E-g/2,y:L-I/2},{x:E+g/2,y:L-I/2},{x:E+g/2,y:L-I/2+m},{x:E+s.width/2,y:L-I/2+m},{x:E+s.width/2/2,y:L+I/2},{x:E-s.width/2,y:L+I/2},{x:E-s.width/2,y:L-I/2+m},{x:E-g/2,y:L-I/2+m}],b.polygon(t,j,O)},e}x(pe,"icon");async function me(f,t,{config:{themeVariables:h,flowchart:l}}){let{labelStyles:o}=w(t);t.labelStyle=o;let i=t.assetHeight??48,c=t.assetWidth??48,r=Math.max(i,c),n=l?.wrappingWidth;t.width=Math.max(r,n??0);let{shapeSvg:e,bbox:s,label:a}=await C(f,t,"icon-shape default"),p=20,m=t.label?8:0,g=t.pos==="t",{nodeBorder:d,mainBkg:u}=h,{stylesMap:y}=ft(t),S=N.svg(e),P=D(t,{});t.look!=="handDrawn"&&(P.roughness=0,P.fillStyle="solid");let T=y.get("fill");P.stroke=T??u;let v=e.append("g");t.icon&&v.html(`${await mt(t.icon,{height:r,width:r,fallbackPrefix:""})}`);let M=v.node().getBBox(),k=M.width,R=M.height,G=M.x,V=M.y,A=Math.max(k,R)*Math.SQRT2+p*2,O=S.circle(0,0,A,P),E=Math.max(A,s.width),L=A+s.height+m,I=S.rectangle(-E/2,-L/2,E,L,{...P,fill:"transparent",stroke:"none"}),j=e.insert(()=>O,":first-child"),F=e.insert(()=>I);return v.attr("transform",`translate(${-k/2-G},${g?s.height/2+m/2-R/2-V:-s.height/2-m/2-R/2-V})`),v.attr("style",`color: ${y.get("stroke")??d};`),a.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))},${g?-L/2:L/2-s.height})`),j.attr("transform",`translate(0,${g?s.height/2+m/2:-s.height/2-m/2})`),$(t,F),t.intersect=function(W){return _.info("iconSquare intersect",t,W),b.rect(t,W)},e}x(me,"iconCircle");async function fe(f,t,{config:{themeVariables:h,flowchart:l}}){let{labelStyles:o}=w(t);t.labelStyle=o;let i=t.assetHeight??48,c=t.assetWidth??48,r=Math.max(i,c),n=l?.wrappingWidth;t.width=Math.max(r,n??0);let{shapeSvg:e,bbox:s,halfPadding:a,label:p}=await C(f,t,"icon-shape default"),m=t.pos==="t",g=r+a*2,d=r+a*2,{nodeBorder:u,mainBkg:y}=h,{stylesMap:S}=ft(t),P=-d/2,T=-g/2,v=t.label?8:0,M=N.svg(e),k=D(t,{});t.look!=="handDrawn"&&(k.roughness=0,k.fillStyle="solid");let R=S.get("fill");k.stroke=R??y;let G=M.path(st(P,T,d,g,5),k),V=Math.max(d,s.width),A=g+s.height+v,O=M.rectangle(-V/2,-A/2,V,A,{...k,fill:"transparent",stroke:"none"}),E=e.insert(()=>G,":first-child").attr("class","icon-shape2"),L=e.insert(()=>O);if(t.icon){let I=e.append("g");I.html(`${await mt(t.icon,{height:r,width:r,fallbackPrefix:""})}`);let j=I.node().getBBox(),F=j.width,W=j.height,J=j.x,ot=j.y;I.attr("transform",`translate(${-F/2-J},${m?s.height/2+v/2-W/2-ot:-s.height/2-v/2-W/2-ot})`),I.attr("style",`color: ${S.get("stroke")??u};`)}return p.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))},${m?-A/2:A/2-s.height})`),E.attr("transform",`translate(0,${m?s.height/2+v/2:-s.height/2-v/2})`),$(t,L),t.intersect=function(I){if(_.info("iconSquare intersect",t,I),!t.label)return b.rect(t,I);let j=t.x??0,F=t.y??0,W=t.height??0,J=[];return m?J=[{x:j-s.width/2,y:F-W/2},{x:j+s.width/2,y:F-W/2},{x:j+s.width/2,y:F-W/2+s.height+v},{x:j+d/2,y:F-W/2+s.height+v},{x:j+d/2,y:F+W/2},{x:j-d/2,y:F+W/2},{x:j-d/2,y:F-W/2+s.height+v},{x:j-s.width/2,y:F-W/2+s.height+v}]:J=[{x:j-d/2,y:F-W/2},{x:j+d/2,y:F-W/2},{x:j+d/2,y:F-W/2+g},{x:j+s.width/2,y:F-W/2+g},{x:j+s.width/2/2,y:F+W/2},{x:j-s.width/2,y:F+W/2},{x:j-s.width/2,y:F-W/2+g},{x:j-d/2,y:F-W/2+g}],b.polygon(t,J,I)},e}x(fe,"iconRounded");async function ge(f,t,{config:{themeVariables:h,flowchart:l}}){let{labelStyles:o}=w(t);t.labelStyle=o;let i=t.assetHeight??48,c=t.assetWidth??48,r=Math.max(i,c),n=l?.wrappingWidth;t.width=Math.max(r,n??0);let{shapeSvg:e,bbox:s,halfPadding:a,label:p}=await C(f,t,"icon-shape default"),m=t.pos==="t",g=r+a*2,d=r+a*2,{nodeBorder:u,mainBkg:y}=h,{stylesMap:S}=ft(t),P=-d/2,T=-g/2,v=t.label?8:0,M=N.svg(e),k=D(t,{});t.look!=="handDrawn"&&(k.roughness=0,k.fillStyle="solid");let R=S.get("fill");k.stroke=R??y;let G=M.path(st(P,T,d,g,.1),k),V=Math.max(d,s.width),A=g+s.height+v,O=M.rectangle(-V/2,-A/2,V,A,{...k,fill:"transparent",stroke:"none"}),E=e.insert(()=>G,":first-child"),L=e.insert(()=>O);if(t.icon){let I=e.append("g");I.html(`${await mt(t.icon,{height:r,width:r,fallbackPrefix:""})}`);let j=I.node().getBBox(),F=j.width,W=j.height,J=j.x,ot=j.y;I.attr("transform",`translate(${-F/2-J},${m?s.height/2+v/2-W/2-ot:-s.height/2-v/2-W/2-ot})`),I.attr("style",`color: ${S.get("stroke")??u};`)}return p.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))},${m?-A/2:A/2-s.height})`),E.attr("transform",`translate(0,${m?s.height/2+v/2:-s.height/2-v/2})`),$(t,L),t.intersect=function(I){if(_.info("iconSquare intersect",t,I),!t.label)return b.rect(t,I);let j=t.x??0,F=t.y??0,W=t.height??0,J=[];return m?J=[{x:j-s.width/2,y:F-W/2},{x:j+s.width/2,y:F-W/2},{x:j+s.width/2,y:F-W/2+s.height+v},{x:j+d/2,y:F-W/2+s.height+v},{x:j+d/2,y:F+W/2},{x:j-d/2,y:F+W/2},{x:j-d/2,y:F-W/2+s.height+v},{x:j-s.width/2,y:F-W/2+s.height+v}]:J=[{x:j-d/2,y:F-W/2},{x:j+d/2,y:F-W/2},{x:j+d/2,y:F-W/2+g},{x:j+s.width/2,y:F-W/2+g},{x:j+s.width/2/2,y:F+W/2},{x:j-s.width/2,y:F+W/2},{x:j-s.width/2,y:F-W/2+g},{x:j-d/2,y:F-W/2+g}],b.polygon(t,J,I)},e}x(ge,"iconSquare");async function de(f,t,{config:{flowchart:h}}){let l=new Image;l.src=t?.img??"",await l.decode();let o=Number(l.naturalWidth.toString().replace("px","")),i=Number(l.naturalHeight.toString().replace("px",""));t.imageAspectRatio=o/i;let{labelStyles:c}=w(t);t.labelStyle=c;let r=h?.wrappingWidth;t.defaultWidth=h?.wrappingWidth;let n=Math.max(t.label?r??0:0,t?.assetWidth??o),e=t.constraint==="on"&&t?.assetHeight?t.assetHeight*t.imageAspectRatio:n,s=t.constraint==="on"?e/t.imageAspectRatio:t?.assetHeight??i;t.width=Math.max(e,r??0);let{shapeSvg:a,bbox:p,label:m}=await C(f,t,"image-shape default"),g=t.pos==="t",d=-e/2,u=-s/2,y=t.label?8:0,S=N.svg(a),P=D(t,{});t.look!=="handDrawn"&&(P.roughness=0,P.fillStyle="solid");let T=S.rectangle(d,u,e,s,P),v=Math.max(e,p.width),M=s+p.height+y,k=S.rectangle(-v/2,-M/2,v,M,{...P,fill:"none",stroke:"none"}),R=a.insert(()=>T,":first-child"),G=a.insert(()=>k);if(t.img){let V=a.append("image");V.attr("href",t.img),V.attr("width",e),V.attr("height",s),V.attr("preserveAspectRatio","none"),V.attr("transform",`translate(${-e/2},${g?M/2-s:-M/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-s/2-p.height/2-y/2:s/2-p.height/2+y/2})`),R.attr("transform",`translate(0,${g?p.height/2+y/2:-p.height/2-y/2})`),$(t,G),t.intersect=function(V){if(_.info("iconSquare intersect",t,V),!t.label)return b.rect(t,V);let A=t.x??0,O=t.y??0,E=t.height??0,L=[];return g?L=[{x:A-p.width/2,y:O-E/2},{x:A+p.width/2,y:O-E/2},{x:A+p.width/2,y:O-E/2+p.height+y},{x:A+e/2,y:O-E/2+p.height+y},{x:A+e/2,y:O+E/2},{x:A-e/2,y:O+E/2},{x:A-e/2,y:O-E/2+p.height+y},{x:A-p.width/2,y:O-E/2+p.height+y}]:L=[{x:A-e/2,y:O-E/2},{x:A+e/2,y:O-E/2},{x:A+e/2,y:O-E/2+s},{x:A+p.width/2,y:O-E/2+s},{x:A+p.width/2/2,y:O+E/2},{x:A-p.width/2,y:O+E/2},{x:A-p.width/2,y:O-E/2+s},{x:A-e/2,y:O-E/2+s}],b.polygon(t,L,V)},a}x(de,"imageSquare");async function ye(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=Math.max(i.width+(t.padding??0)*2,t?.width??0),r=Math.max(i.height+(t.padding??0)*2,t?.height??0),n=[{x:0,y:0},{x:c,y:0},{x:c+3*r/6,y:-r},{x:-3*r/6,y:-r}],e,{cssStyles:s}=t;if(t.look==="handDrawn"){let a=N.svg(o),p=D(t,{}),m=H(n),g=a.path(m,p);e=o.insert(()=>g,":first-child").attr("transform",`translate(${-c/2}, ${r/2})`),s&&e.attr("style",s)}else e=K(o,c,r,n);return l&&e.attr("style",l),t.width=c,t.height=r,$(t,e),t.intersect=function(a){return b.polygon(t,n,a)},o}x(ye,"inv_trapezoid");async function lt(f,t,h){let{labelStyles:l,nodeStyles:o}=w(t);t.labelStyle=l;let{shapeSvg:i,bbox:c}=await C(f,t,B(t)),r=Math.max(c.width+h.labelPaddingX*2,t?.width||0),n=Math.max(c.height+h.labelPaddingY*2,t?.height||0),e=-r/2,s=-n/2,a,{rx:p,ry:m}=t,{cssStyles:g}=t;if(h?.rx&&h.ry&&(p=h.rx,m=h.ry),t.look==="handDrawn"){let d=N.svg(i),u=D(t,{}),y=p||m?d.path(st(e,s,r,n,p||0),u):d.rectangle(e,s,r,n,u);a=i.insert(()=>y,":first-child"),a.attr("class","basic label-container").attr("style",X(g))}else a=i.insert("rect",":first-child"),a.attr("class","basic label-container").attr("style",o).attr("rx",X(p)).attr("ry",X(m)).attr("x",e).attr("y",s).attr("width",r).attr("height",n);return $(t,a),t.calcIntersect=function(d,u){return b.rect(d,u)},t.intersect=function(d){return b.rect(t,d)},i}x(lt,"drawRect");async function ue(f,t){let{shapeSvg:h,bbox:l,label:o}=await C(f,t,"label"),i=h.insert("rect",":first-child");return i.attr("width",.1).attr("height",.1),h.attr("class","label edgeLabel"),o.attr("transform",`translate(${-(l.width/2)-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),$(t,i),t.intersect=function(n){return b.rect(t,n)},h}x(ue,"labelRect");async function xe(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=Math.max(i.width+(t.padding??0),t?.width??0),r=Math.max(i.height+(t.padding??0),t?.height??0),n=[{x:0,y:0},{x:c+3*r/6,y:0},{x:c,y:-r},{x:-(3*r)/6,y:-r}],e,{cssStyles:s}=t;if(t.look==="handDrawn"){let a=N.svg(o),p=D(t,{}),m=H(n),g=a.path(m,p);e=o.insert(()=>g,":first-child").attr("transform",`translate(${-c/2}, ${r/2})`),s&&e.attr("style",s)}else e=K(o,c,r,n);return l&&e.attr("style",l),t.width=c,t.height=r,$(t,e),t.intersect=function(a){return b.polygon(t,n,a)},o}x(xe,"lean_left");async function Se(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=Math.max(i.width+(t.padding??0),t?.width??0),r=Math.max(i.height+(t.padding??0),t?.height??0),n=[{x:-3*r/6,y:0},{x:c,y:0},{x:c+3*r/6,y:-r},{x:0,y:-r}],e,{cssStyles:s}=t;if(t.look==="handDrawn"){let a=N.svg(o),p=D(t,{}),m=H(n),g=a.path(m,p);e=o.insert(()=>g,":first-child").attr("transform",`translate(${-c/2}, ${r/2})`),s&&e.attr("style",s)}else e=K(o,c,r,n);return l&&e.attr("style",l),t.width=c,t.height=r,$(t,e),t.intersect=function(a){return b.polygon(t,n,a)},o}x(Se,"lean_right");function be(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.label="",t.labelStyle=h;let o=f.insert("g").attr("class",B(t)).attr("id",t.domId??t.id),{cssStyles:i}=t,c=Math.max(35,t?.width??0),r=Math.max(35,t?.height??0),n=7,e=[{x:c,y:0},{x:0,y:r+n/2},{x:c-2*n,y:r+n/2},{x:0,y:2*r},{x:c,y:r-n/2},{x:2*n,y:r-n/2}],s=N.svg(o),a=D(t,{});t.look!=="handDrawn"&&(a.roughness=0,a.fillStyle="solid");let p=H(e),m=s.path(p,a),g=o.insert(()=>m,":first-child");return i&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",i),l&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",l),g.attr("transform",`translate(-${c/2},${-r})`),$(t,g),t.intersect=function(d){return _.info("lightningBolt intersect",t,d),b.polygon(t,e,d)},o}x(be,"lightningBolt");var bs=x((f,t,h,l,o,i,c)=>[`M${f},${t+i}`,`a${o},${i} 0,0,0 ${h},0`,`a${o},${i} 0,0,0 ${-h},0`,`l0,${l}`,`a${o},${i} 0,0,0 ${h},0`,`l0,${-l}`,`M${f},${t+i+c}`,`a${o},${i} 0,0,0 ${h},0`].join(" "),"createCylinderPathD"),ws=x((f,t,h,l,o,i,c)=>[`M${f},${t+i}`,`M${f+h},${t+i}`,`a${o},${i} 0,0,0 ${-h},0`,`l0,${l}`,`a${o},${i} 0,0,0 ${h},0`,`l0,${-l}`,`M${f},${t+i+c}`,`a${o},${i} 0,0,0 ${h},0`].join(" "),"createOuterCylinderPathD"),Ns=x((f,t,h,l,o,i)=>[`M${f-h/2},${-l/2}`,`a${o},${i} 0,0,0 ${h},0`].join(" "),"createInnerCylinderPathD");async function we(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0),t.width??0),n=r/2,e=n/(2.5+r/50),s=Math.max(i.height+e+(t.padding??0),t.height??0),a=s*.1,p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=N.svg(o),d=ws(0,0,r,s,n,e,a),u=Ns(0,e,r,s,n,e),y=D(t,{}),S=g.path(d,y),P=g.path(u,y);o.insert(()=>P,":first-child").attr("class","line"),p=o.insert(()=>S,":first-child"),p.attr("class","basic label-container"),m&&p.attr("style",m)}else{let g=bs(0,0,r,s,n,e,a);p=o.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",X(m)).attr("style",l)}return p.attr("label-offset-y",e),p.attr("transform",`translate(${-r/2}, ${-(s/2+e)})`),$(t,p),c.attr("transform",`translate(${-(i.width/2)-(i.x-(i.left??0))}, ${-(i.height/2)+e-(i.y-(i.top??0))})`),t.intersect=function(g){let d=b.rect(t,g),u=d.x-(t.x??0);if(n!=0&&(Math.abs(u)<(t.width??0)/2||Math.abs(u)==(t.width??0)/2&&Math.abs(d.y-(t.y??0))>(t.height??0)/2-e)){let y=e*e*(1-u*u/(n*n));y>0&&(y=Math.sqrt(y)),y=e-y,g.y-(t.y??0)>0&&(y=-y),d.y+=y}return d},o}x(we,"linedCylinder");async function Ne(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0)*2,t?.width??0),n=Math.max(i.height+(t.padding??0)*2,t?.height??0),e=n/4,s=n+e,{cssStyles:a}=t,p=N.svg(o),m=D(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-r/2-r/2*.1,y:-s/2},{x:-r/2-r/2*.1,y:s/2},...it(-r/2-r/2*.1,s/2,r/2+r/2*.1,s/2,e,.8),{x:r/2+r/2*.1,y:-s/2},{x:-r/2-r/2*.1,y:-s/2},{x:-r/2,y:-s/2},{x:-r/2,y:s/2*1.1},{x:-r/2,y:-s/2}],d=p.polygon(g.map(y=>[y.x,y.y]),m),u=o.insert(()=>d,":first-child");return u.attr("class","basic label-container"),a&&t.look!=="handDrawn"&&u.selectAll("path").attr("style",a),l&&t.look!=="handDrawn"&&u.selectAll("path").attr("style",l),u.attr("transform",`translate(0,${-e/2})`),c.attr("transform",`translate(${-r/2+(t.padding??0)+r/2*.1/2-(i.x-(i.left??0))},${-n/2+(t.padding??0)-e/2-(i.y-(i.top??0))})`),$(t,u),t.intersect=function(y){return b.polygon(t,g,y)},o}x(Ne,"linedWaveEdgedRect");async function $e(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0)*2,t?.width??0),n=Math.max(i.height+(t.padding??0)*2,t?.height??0),e=5,s=-r/2,a=-n/2,{cssStyles:p}=t,m=N.svg(o),g=D(t,{}),d=[{x:s-e,y:a+e},{x:s-e,y:a+n+e},{x:s+r-e,y:a+n+e},{x:s+r-e,y:a+n},{x:s+r,y:a+n},{x:s+r,y:a+n-e},{x:s+r+e,y:a+n-e},{x:s+r+e,y:a-e},{x:s+e,y:a-e},{x:s+e,y:a},{x:s,y:a},{x:s,y:a+e}],u=[{x:s,y:a+e},{x:s+r-e,y:a+e},{x:s+r-e,y:a+n},{x:s+r,y:a+n},{x:s+r,y:a},{x:s,y:a}];t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=H(d),S=m.path(y,g),P=H(u),T=m.path(P,{...g,fill:"none"}),v=o.insert(()=>T,":first-child");return v.insert(()=>S,":first-child"),v.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",p),l&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",l),c.attr("transform",`translate(${-(i.width/2)-e-(i.x-(i.left??0))}, ${-(i.height/2)+e-(i.y-(i.top??0))})`),$(t,v),t.intersect=function(M){return b.polygon(t,d,M)},o}x($e,"multiRect");async function De(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0)*2,t?.width??0),n=Math.max(i.height+(t.padding??0)*2,t?.height??0),e=n/4,s=n+e,a=-r/2,p=-s/2,m=5,{cssStyles:g}=t,d=it(a-m,p+s+m,a+r-m,p+s+m,e,.8),u=d?.[d.length-1],y=[{x:a-m,y:p+m},{x:a-m,y:p+s+m},...d,{x:a+r-m,y:u.y-m},{x:a+r,y:u.y-m},{x:a+r,y:u.y-2*m},{x:a+r+m,y:u.y-2*m},{x:a+r+m,y:p-m},{x:a+m,y:p-m},{x:a+m,y:p},{x:a,y:p},{x:a,y:p+m}],S=[{x:a,y:p+m},{x:a+r-m,y:p+m},{x:a+r-m,y:u.y-m},{x:a+r,y:u.y-m},{x:a+r,y:p},{x:a,y:p}],P=N.svg(o),T=D(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let v=H(y),M=P.path(v,T),k=H(S),R=P.path(k,T),G=o.insert(()=>M,":first-child");return G.insert(()=>R),G.attr("class","basic label-container"),g&&t.look!=="handDrawn"&&G.selectAll("path").attr("style",g),l&&t.look!=="handDrawn"&&G.selectAll("path").attr("style",l),G.attr("transform",`translate(0,${-e/2})`),c.attr("transform",`translate(${-(i.width/2)-m-(i.x-(i.left??0))}, ${-(i.height/2)+m-e/2-(i.y-(i.top??0))})`),$(t,G),t.intersect=function(V){return b.polygon(t,y,V)},o}x(De,"multiWaveEdgedRectangle");async function ve(f,t,{config:{themeVariables:h}}){let{labelStyles:l,nodeStyles:o}=w(t);t.labelStyle=l,t.useHtmlLabels||U(pt())||(t.centerLabel=!0);let{shapeSvg:c,bbox:r,label:n}=await C(f,t,B(t)),e=Math.max(r.width+(t.padding??0)*2,t?.width??0),s=Math.max(r.height+(t.padding??0)*2,t?.height??0),a=-e/2,p=-s/2,{cssStyles:m}=t,g=N.svg(c),d=D(t,{fill:h.noteBkgColor,stroke:h.noteBorderColor});t.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let u=g.rectangle(a,p,e,s,d),y=c.insert(()=>u,":first-child");return y.attr("class","basic label-container"),m&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",m),o&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",o),n.attr("transform",`translate(${-r.width/2-(r.x-(r.left??0))}, ${-(r.height/2)-(r.y-(r.top??0))})`),$(t,y),t.intersect=function(S){return b.rect(t,S)},c}x(ve,"note");var $s=x((f,t,h)=>[`M${f+h/2},${t}`,`L${f+h},${t-h/2}`,`L${f+h/2},${t-h}`,`L${f},${t-h/2}`,"Z"].join(" "),"createDecisionBoxPathD");async function Be(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=i.width+t.padding,r=i.height+t.padding,n=c+r,e=.5,s=[{x:n/2,y:0},{x:n,y:-n/2},{x:n/2,y:-n},{x:0,y:-n/2}],a,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=N.svg(o),g=D(t,{}),d=$s(0,0,n),u=m.path(d,g);a=o.insert(()=>u,":first-child").attr("transform",`translate(${-n/2+e}, ${n/2})`),p&&a.attr("style",p)}else a=K(o,n,n,s),a.attr("transform",`translate(${-n/2+e}, ${n/2})`);return l&&a.attr("style",l),$(t,a),t.calcIntersect=function(m,g){let d=m.width,u=[{x:d/2,y:0},{x:d,y:-d/2},{x:d/2,y:-d},{x:0,y:-d/2}],y=b.polygon(m,u,g);return{x:y.x-.5,y:y.y-.5}},t.intersect=function(m){return this.calcIntersect(t,m)},o}x(Be,"question");async function Pe(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0),t?.width??0),n=Math.max(i.height+(t.padding??0),t?.height??0),e=-r/2,s=-n/2,a=s/2,p=[{x:e+a,y:s},{x:e,y:0},{x:e+a,y:-s},{x:-e,y:-s},{x:-e,y:s}],{cssStyles:m}=t,g=N.svg(o),d=D(t,{});t.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let u=H(p),y=g.path(u,d),S=o.insert(()=>y,":first-child");return S.attr("class","basic label-container"),m&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",m),l&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",l),S.attr("transform",`translate(${-a/2},0)`),c.attr("transform",`translate(${-a/2-i.width/2-(i.x-(i.left??0))}, ${-(i.height/2)-(i.y-(i.top??0))})`),$(t,S),t.intersect=function(P){return b.polygon(t,p,P)},o}x(Pe,"rect_left_inv_arrow");async function Ce(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let o;t.cssClasses?o="node "+t.cssClasses:o="node default";let i=f.insert("g").attr("class",o).attr("id",t.domId||t.id),c=i.insert("g"),r=i.insert("g").attr("class","label").attr("style",l),n=t.description,e=t.label,s=await wt(r,e,t.labelStyle,!0,!0),a={width:0,height:0};if(U(Y())){let R=s.children[0],G=z(s);a=R.getBoundingClientRect(),G.attr("width",a.width),G.attr("height",a.height)}_.info("Text 2",n);let p=n||[],m=s.getBBox(),g=await wt(r,Array.isArray(p)?p.join("
"):p,t.labelStyle,!0,!0),d=g.children[0],u=z(g);a=d.getBoundingClientRect(),u.attr("width",a.width),u.attr("height",a.height);let y=(t.padding||0)/2;z(g).attr("transform","translate( "+(a.width>m.width?0:(m.width-a.width)/2)+", "+(m.height+y+5)+")"),z(s).attr("transform","translate( "+(a.width(_.debug("Rough node insert CXC",V),A),":first-child"),M=i.insert(()=>(_.debug("Rough node insert CXC",V),V),":first-child")}else M=c.insert("rect",":first-child"),k=c.insert("line"),M.attr("class","outer title-state").attr("style",l).attr("x",-a.width/2-y).attr("y",-a.height/2-y).attr("width",a.width+(t.padding||0)).attr("height",a.height+(t.padding||0)),k.attr("class","divider").attr("x1",-a.width/2-y).attr("x2",a.width/2+y).attr("y1",-a.height/2-y+m.height+y).attr("y2",-a.height/2-y+m.height+y);return $(t,M),t.intersect=function(R){return b.rect(t,R)},i}x(Ce,"rectWithTitle");async function Te(f,t){let h={rx:5,ry:5,classes:"",labelPaddingX:(t?.padding||0)*1,labelPaddingY:(t?.padding||0)*1};return lt(f,t,h)}x(Te,"roundedRect");async function ke(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=t?.padding??0,n=Math.max(i.width+(t.padding??0)*2,t?.width??0),e=Math.max(i.height+(t.padding??0)*2,t?.height??0),s=-i.width/2-r,a=-i.height/2-r,{cssStyles:p}=t,m=N.svg(o),g=D(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let d=[{x:s,y:a},{x:s+n+8,y:a},{x:s+n+8,y:a+e},{x:s-8,y:a+e},{x:s-8,y:a},{x:s,y:a},{x:s,y:a+e}],u=m.polygon(d.map(S=>[S.x,S.y]),g),y=o.insert(()=>u,":first-child");return y.attr("class","basic label-container").attr("style",X(p)),l&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",l),p&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",l),c.attr("transform",`translate(${-n/2+4+(t.padding??0)-(i.x-(i.left??0))},${-e/2+(t.padding??0)-(i.y-(i.top??0))})`),$(t,y),t.intersect=function(S){return b.rect(t,S)},o}x(ke,"shadedProcess");async function Re(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0)*2,t?.width??0),n=Math.max(i.height+(t.padding??0)*2,t?.height??0),e=-r/2,s=-n/2,{cssStyles:a}=t,p=N.svg(o),m=D(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:e,y:s},{x:e,y:s+n},{x:e+r,y:s+n},{x:e+r,y:s-n/2}],d=H(g),u=p.path(d,m),y=o.insert(()=>u,":first-child");return y.attr("class","basic label-container"),a&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",a),l&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",l),y.attr("transform",`translate(0, ${n/4})`),c.attr("transform",`translate(${-r/2+(t.padding??0)-(i.x-(i.left??0))}, ${-n/4+(t.padding??0)-(i.y-(i.top??0))})`),$(t,y),t.intersect=function(S){return b.polygon(t,g,S)},o}x(Re,"slopedRect");async function Me(f,t){let h={rx:0,ry:0,classes:"",labelPaddingX:t.labelPaddingX??(t?.padding||0)*2,labelPaddingY:(t?.padding||0)*1};return lt(f,t,h)}x(Me,"squareRect");async function Ge(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=i.height+t.padding,r=i.width+c/4+t.padding,n=c/2,{cssStyles:e}=t,s=N.svg(o),a=D(t,{});t.look!=="handDrawn"&&(a.roughness=0,a.fillStyle="solid");let p=[{x:-r/2+n,y:-c/2},{x:r/2-n,y:-c/2},...bt(-r/2+n,0,n,50,90,270),{x:r/2-n,y:c/2},...bt(r/2-n,0,n,50,270,450)],m=H(p),g=s.path(m,a),d=o.insert(()=>g,":first-child");return d.attr("class","basic label-container outer-path"),e&&t.look!=="handDrawn"&&d.selectChildren("path").attr("style",e),l&&t.look!=="handDrawn"&&d.selectChildren("path").attr("style",l),$(t,d),t.intersect=function(u){return b.polygon(t,p,u)},o}x(Ge,"stadium");async function Ee(f,t){return lt(f,t,{rx:5,ry:5,classes:"flowchart-node"})}x(Ee,"state");function je(f,t,{config:{themeVariables:h}}){let{labelStyles:l,nodeStyles:o}=w(t);t.labelStyle=l;let{cssStyles:i}=t,{lineColor:c,stateBorder:r,nodeBorder:n}=h,e=f.insert("g").attr("class","node default").attr("id",t.domId||t.id),s=N.svg(e),a=D(t,{});t.look!=="handDrawn"&&(a.roughness=0,a.fillStyle="solid");let p=s.circle(0,0,14,{...a,stroke:c,strokeWidth:2}),m=r??n,g=s.circle(0,0,5,{...a,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),d=e.insert(()=>p,":first-child");return d.insert(()=>g),i&&d.selectAll("path").attr("style",i),o&&d.selectAll("path").attr("style",o),$(t,d),t.intersect=function(u){return b.circle(t,7,u)},e}x(je,"stateEnd");function He(f,t,{config:{themeVariables:h}}){let{lineColor:l}=h,o=f.insert("g").attr("class","node default").attr("id",t.domId||t.id),i;if(t.look==="handDrawn"){let r=N.svg(o).circle(0,0,14,Ot(l));i=o.insert(()=>r),i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else i=o.insert("circle",":first-child"),i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return $(t,i),t.intersect=function(c){return b.circle(t,7,c)},o}x(He,"stateStart");async function Ae(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=(t?.padding||0)/2,r=i.width+t.padding,n=i.height+t.padding,e=-i.width/2-c,s=-i.height/2-c,a=[{x:0,y:0},{x:r,y:0},{x:r,y:-n},{x:0,y:-n},{x:0,y:0},{x:-8,y:0},{x:r+8,y:0},{x:r+8,y:-n},{x:-8,y:-n},{x:-8,y:0}];if(t.look==="handDrawn"){let p=N.svg(o),m=D(t,{}),g=p.rectangle(e-8,s,r+16,n,m),d=p.line(e,s,e,s+n,m),u=p.line(e+r,s,e+r,s+n,m);o.insert(()=>d,":first-child"),o.insert(()=>u,":first-child");let y=o.insert(()=>g,":first-child"),{cssStyles:S}=t;y.attr("class","basic label-container").attr("style",X(S)),$(t,y)}else{let p=K(o,r,n,a);l&&p.attr("style",l),$(t,p)}return t.intersect=function(p){return b.polygon(t,a,p)},o}x(Ae,"subroutine");async function Oe(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=Math.max(i.width+(t.padding??0)*2,t?.width??0),r=Math.max(i.height+(t.padding??0)*2,t?.height??0),n=-c/2,e=-r/2,s=.2*r,a=.2*r,{cssStyles:p}=t,m=N.svg(o),g=D(t,{}),d=[{x:n-s/2,y:e},{x:n+c+s/2,y:e},{x:n+c+s/2,y:e+r},{x:n-s/2,y:e+r}],u=[{x:n+c-s/2,y:e+r},{x:n+c+s/2,y:e+r},{x:n+c+s/2,y:e+r-a}];t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=H(d),S=m.path(y,g),P=H(u),T=m.path(P,{...g,fillStyle:"solid"}),v=o.insert(()=>T,":first-child");return v.insert(()=>S,":first-child"),v.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",p),l&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",l),$(t,v),t.intersect=function(M){return b.polygon(t,d,M)},o}x(Oe,"taggedRect");async function Le(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0)*2,t?.width??0),n=Math.max(i.height+(t.padding??0)*2,t?.height??0),e=n/4,s=.2*r,a=.2*n,p=n+e,{cssStyles:m}=t,g=N.svg(o),d=D(t,{});t.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let u=[{x:-r/2-r/2*.1,y:p/2},...it(-r/2-r/2*.1,p/2,r/2+r/2*.1,p/2,e,.8),{x:r/2+r/2*.1,y:-p/2},{x:-r/2-r/2*.1,y:-p/2}],y=-r/2+r/2*.1,S=-p/2-a*.4,P=[{x:y+r-s,y:(S+n)*1.4},{x:y+r,y:S+n-a},{x:y+r,y:(S+n)*.9},...it(y+r,(S+n)*1.3,y+r-s,(S+n)*1.5,-n*.03,.5)],T=H(u),v=g.path(T,d),M=H(P),k=g.path(M,{...d,fillStyle:"solid"}),R=o.insert(()=>k,":first-child");return R.insert(()=>v,":first-child"),R.attr("class","basic label-container"),m&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",m),l&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",l),R.attr("transform",`translate(0,${-e/2})`),c.attr("transform",`translate(${-r/2+(t.padding??0)-(i.x-(i.left??0))},${-n/2+(t.padding??0)-e/2-(i.y-(i.top??0))})`),$(t,R),t.intersect=function(G){return b.polygon(t,u,G)},o}x(Le,"taggedWaveEdgedRectangle");async function Ve(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=Math.max(i.width+t.padding,t?.width||0),r=Math.max(i.height+t.padding,t?.height||0),n=-c/2,e=-r/2,s=o.insert("rect",":first-child");return s.attr("class","text").attr("style",l).attr("rx",0).attr("ry",0).attr("x",n).attr("y",e).attr("width",c).attr("height",r),$(t,s),t.intersect=function(a){return b.rect(t,a)},o}x(Ve,"text");var Ds=x((f,t,h,l,o,i)=>`M${f},${t} - a${o},${i} 0,0,1 0,${-l} - l${h},0 - a${o},${i} 0,0,1 0,${l} - M${h},${-l} - a${o},${i} 0,0,0 0,${l} - l${-h},0`,"createCylinderPathD"),vs=x((f,t,h,l,o,i)=>[`M${f},${t}`,`M${f+h},${t}`,`a${o},${i} 0,0,0 0,${-l}`,`l${-h},0`,`a${o},${i} 0,0,0 0,${l}`,`l${h},0`].join(" "),"createOuterCylinderPathD"),Bs=x((f,t,h,l,o,i)=>[`M${f+h/2},${-l/2}`,`a${o},${i} 0,0,0 0,${l}`].join(" "),"createInnerCylinderPathD");async function We(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c,halfPadding:r}=await C(f,t,B(t)),n=t.look==="neo"?r*2:r,e=i.height+n,s=e/2,a=s/(2.5+e/50),p=i.width+a+n,{cssStyles:m}=t,g;if(t.look==="handDrawn"){let d=N.svg(o),u=vs(0,0,p,e,a,s),y=Bs(0,0,p,e,a,s),S=d.path(u,D(t,{})),P=d.path(y,D(t,{fill:"none"}));g=o.insert(()=>P,":first-child"),g=o.insert(()=>S,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let d=Ds(0,0,p,e,a,s);g=o.insert("path",":first-child").attr("d",d).attr("class","basic label-container").attr("style",X(m)).attr("style",l),g.attr("class","basic label-container"),m&&g.selectAll("path").attr("style",m),l&&g.selectAll("path").attr("style",l)}return g.attr("label-offset-x",a),g.attr("transform",`translate(${-p/2}, ${e/2} )`),c.attr("transform",`translate(${-(i.width/2)-a-(i.x-(i.left??0))}, ${-(i.height/2)-(i.y-(i.top??0))})`),$(t,g),t.intersect=function(d){let u=b.rect(t,d),y=u.y-(t.y??0);if(s!=0&&(Math.abs(y)<(t.height??0)/2||Math.abs(y)==(t.height??0)/2&&Math.abs(u.x-(t.x??0))>(t.width??0)/2-a)){let S=a*a*(1-y*y/(s*s));S!=0&&(S=Math.sqrt(Math.abs(S))),S=a-S,d.x-(t.x??0)>0&&(S=-S),u.x+=S}return u},o}x(We,"tiltedCylinder");async function Ie(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=i.width+t.padding,r=i.height+t.padding,n=[{x:-3*r/6,y:0},{x:c+3*r/6,y:0},{x:c,y:-r},{x:0,y:-r}],e,{cssStyles:s}=t;if(t.look==="handDrawn"){let a=N.svg(o),p=D(t,{}),m=H(n),g=a.path(m,p);e=o.insert(()=>g,":first-child").attr("transform",`translate(${-c/2}, ${r/2})`),s&&e.attr("style",s)}else e=K(o,c,r,n);return l&&e.attr("style",l),t.width=c,t.height=r,$(t,e),t.intersect=function(a){return b.polygon(t,n,a)},o}x(Ie,"trapezoid");async function Fe(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=60,r=20,n=Math.max(c,i.width+(t.padding??0)*2,t?.width??0),e=Math.max(r,i.height+(t.padding??0)*2,t?.height??0),{cssStyles:s}=t,a=N.svg(o),p=D(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=[{x:-n/2*.8,y:-e/2},{x:n/2*.8,y:-e/2},{x:n/2,y:-e/2*.6},{x:n/2,y:e/2},{x:-n/2,y:e/2},{x:-n/2,y:-e/2*.6}],g=H(m),d=a.path(g,p),u=o.insert(()=>d,":first-child");return u.attr("class","basic label-container"),s&&t.look!=="handDrawn"&&u.selectChildren("path").attr("style",s),l&&t.look!=="handDrawn"&&u.selectChildren("path").attr("style",l),$(t,u),t.intersect=function(y){return b.polygon(t,m,y)},o}x(Fe,"trapezoidalPentagon");async function _e(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=t.useHtmlLabels||U(Y()),n=i.width+(t.padding??0),e=n+i.height,s=n+i.height,a=[{x:0,y:0},{x:s,y:0},{x:s/2,y:-e}],{cssStyles:p}=t,m=N.svg(o),g=D(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let d=H(a),u=m.path(d,g),y=o.insert(()=>u,":first-child").attr("transform",`translate(${-e/2}, ${e/2})`);return p&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",p),l&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",l),t.width=n,t.height=e,$(t,y),c.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${e/2-(i.height+(t.padding??0)/(r?2:1)-(i.y-(i.top??0)))})`),t.intersect=function(S){return _.info("Triangle intersect",t,a,S),b.polygon(t,a,S)},o}x(_e,"triangle");async function Xe(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0)*2,t?.width??0),n=Math.max(i.height+(t.padding??0)*2,t?.height??0),e=n/8,s=n+e,{cssStyles:a}=t,m=70-r,g=m>0?m/2:0,d=N.svg(o),u=D(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=[{x:-r/2-g,y:s/2},...it(-r/2-g,s/2,r/2+g,s/2,e,.8),{x:r/2+g,y:-s/2},{x:-r/2-g,y:-s/2}],S=H(y),P=d.path(S,u),T=o.insert(()=>P,":first-child");return T.attr("class","basic label-container"),a&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",a),l&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",l),T.attr("transform",`translate(0,${-e/2})`),c.attr("transform",`translate(${-r/2+(t.padding??0)-(i.x-(i.left??0))},${-n/2+(t.padding??0)-e-(i.y-(i.top??0))})`),$(t,T),t.intersect=function(v){return b.polygon(t,y,v)},o}x(Xe,"waveEdgedRectangle");async function qe(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i}=await C(f,t,B(t)),c=100,r=50,n=Math.max(i.width+(t.padding??0)*2,t?.width??0),e=Math.max(i.height+(t.padding??0)*2,t?.height??0),s=n/e,a=n,p=e;a>p*s?p=a/s:a=p*s,a=Math.max(a,c),p=Math.max(p,r);let m=Math.min(p*.2,p/4),g=p+m*2,{cssStyles:d}=t,u=N.svg(o),y=D(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let S=[{x:-a/2,y:g/2},...it(-a/2,g/2,a/2,g/2,m,1),{x:a/2,y:-g/2},...it(a/2,-g/2,-a/2,-g/2,m,-1)],P=H(S),T=u.path(P,y),v=o.insert(()=>T,":first-child");return v.attr("class","basic label-container"),d&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",d),l&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",l),$(t,v),t.intersect=function(M){return b.polygon(t,S,M)},o}x(qe,"waveRectangle");async function Ye(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,label:c}=await C(f,t,B(t)),r=Math.max(i.width+(t.padding??0)*2,t?.width??0),n=Math.max(i.height+(t.padding??0)*2,t?.height??0),e=5,s=-r/2,a=-n/2,{cssStyles:p}=t,m=N.svg(o),g=D(t,{}),d=[{x:s-e,y:a-e},{x:s-e,y:a+n},{x:s+r,y:a+n},{x:s+r,y:a-e}],u=`M${s-e},${a-e} L${s+r},${a-e} L${s+r},${a+n} L${s-e},${a+n} L${s-e},${a-e} - M${s-e},${a} L${s+r},${a} - M${s},${a-e} L${s},${a+n}`;t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=m.path(u,g),S=o.insert(()=>y,":first-child");return S.attr("transform",`translate(${e/2}, ${e/2})`),S.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",p),l&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",l),c.attr("transform",`translate(${-(i.width/2)+e/2-(i.x-(i.left??0))}, ${-(i.height/2)+e/2-(i.y-(i.top??0))})`),$(t,S),t.intersect=function(P){return b.polygon(t,d,P)},o}x(Ye,"windowPane");async function Gt(f,t){let h=t;if(h.alias&&(t.label=h.alias),t.look==="handDrawn"){let{themeVariables:q}=pt(),{background:Z}=q,tt={...t,id:t.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${Z}`]};await Gt(f,tt)}let l=pt();t.useHtmlLabels=l.htmlLabels;let o=l.er?.diagramPadding??10,i=l.er?.entityPadding??6,{cssStyles:c}=t,{labelStyles:r,nodeStyles:n}=w(t);if(h.attributes.length===0&&t.label){let q={rx:0,ry:0,labelPaddingX:o,labelPaddingY:o*1.5,classes:""};xt(t.label,l)+q.labelPaddingX*20){let q=a.width+o*2-(d+u+y+S);d+=q/v,u+=q/v,y>0&&(y+=q/v),S>0&&(S+=q/v)}let k=d+u+y+S,R=N.svg(s),G=D(t,{});t.look!=="handDrawn"&&(G.roughness=0,G.fillStyle="solid");let V=0;g.length>0&&(V=g.reduce((q,Z)=>q+(Z?.rowHeight??0),0));let A=Math.max(M.width+o*2,t?.width||0,k),O=Math.max((V??0)+a.height,t?.height||0),E=-A/2,L=-O/2;s.selectAll("g:not(:first-child)").each((q,Z,tt)=>{let rt=z(tt[Z]),ut=rt.attr("transform"),ht=0,jt=0;if(ut){let Tt=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(ut);Tt&&(ht=parseFloat(Tt[1]),jt=parseFloat(Tt[2]),rt.attr("class").includes("attribute-name")?ht+=d:rt.attr("class").includes("attribute-keys")?ht+=d+u:rt.attr("class").includes("attribute-comment")&&(ht+=d+u+y))}rt.attr("transform",`translate(${E+o/2+ht}, ${jt+L+a.height+i/2})`)}),s.select(".name").attr("transform","translate("+-a.width/2+", "+(L+i/2)+")");let I=R.rectangle(E,L,A,O,G),j=s.insert(()=>I,":first-child").attr("style",c.join("")),{themeVariables:F}=pt(),{rowEven:W,rowOdd:J,nodeBorder:ot}=F;m.push(0);for(let[q,Z]of g.entries()){let rt=(q+1)%2===0&&Z.yOffset!==0,ut=R.rectangle(E,a.height+L+Z?.yOffset,A,Z?.rowHeight,{...G,fill:rt?W:J,stroke:ot});s.insert(()=>ut,"g.label").attr("style",c.join("")).attr("class",`row-rect-${rt?"even":"odd"}`)}let at=R.line(E,a.height+L,A+E,a.height+L,G);s.insert(()=>at).attr("class","divider"),at=R.line(d+E,a.height+L,d+E,O+L,G),s.insert(()=>at).attr("class","divider"),P&&(at=R.line(d+u+E,a.height+L,d+u+E,O+L,G),s.insert(()=>at).attr("class","divider")),T&&(at=R.line(d+u+y+E,a.height+L,d+u+y+E,O+L,G),s.insert(()=>at).attr("class","divider"));for(let q of m)at=R.line(E,a.height+L+q,A+E,a.height+L+q,G),s.insert(()=>at).attr("class","divider");if($(t,j),n&&t.look!=="handDrawn"){let Z=n.split(";")?.filter(tt=>tt.includes("stroke"))?.map(tt=>`${tt}`).join("; ");s.selectAll("path").attr("style",Z??""),s.selectAll(".row-rect-even path").attr("style",n)}return t.intersect=function(q){return b.rect(t,q)},s}x(Gt,"erBox");async function Nt(f,t,h,l=0,o=0,i=[],c=""){let r=f.insert("g").attr("class",`label ${i.join(" ")}`).attr("transform",`translate(${l}, ${o})`).attr("style",c);t!==Rt(t)&&(t=Rt(t),t=t.replaceAll("<","<").replaceAll(">",">"));let n=r.node().appendChild(await et(r,t,{width:xt(t,h)+100,style:c,useHtmlLabels:h.htmlLabels},h));if(t.includes("<")||t.includes(">")){let s=n.children[0];for(s.textContent=s.textContent.replaceAll("<","<").replaceAll(">",">");s.childNodes[0];)s=s.childNodes[0],s.textContent=s.textContent.replaceAll("<","<").replaceAll(">",">")}let e=n.getBBox();if(nt(h.htmlLabels)){let s=n.children[0];s.style.textAlign="start";let a=z(n);e=s.getBoundingClientRect(),a.attr("width",e.width),a.attr("height",e.height)}return e}x(Nt,"addText");async function ze(f,t,h,l,o=h.class.padding??12){let i=l?0:3,c=f.insert("g").attr("class",B(t)).attr("id",t.domId||t.id),r=null,n=null,e=null,s=null,a=0,p=0,m=0;if(r=c.insert("g").attr("class","annotation-group text"),t.annotations.length>0){let S=t.annotations[0];await Pt(r,{text:`\xAB${S}\xBB`},0),a=r.node().getBBox().height}n=c.insert("g").attr("class","label-group text"),await Pt(n,t,0,["font-weight: bolder"]);let g=n.node().getBBox();p=g.height,e=c.insert("g").attr("class","members-group text");let d=0;for(let S of t.members){let P=await Pt(e,S,d,[S.parseClassifier()]);d+=P+i}m=e.node().getBBox().height,m<=0&&(m=o/2),s=c.insert("g").attr("class","methods-group text");let u=0;for(let S of t.methods){let P=await Pt(s,S,u,[S.parseClassifier()]);u+=P+i}let y=c.node().getBBox();if(r!==null){let S=r.node().getBBox();r.attr("transform",`translate(${-S.width/2})`)}return n.attr("transform",`translate(${-g.width/2}, ${a})`),y=c.node().getBBox(),e.attr("transform",`translate(0, ${a+p+o*2})`),y=c.node().getBBox(),s.attr("transform",`translate(0, ${a+p+(m?m+o*4:o*2)})`),y=c.node().getBBox(),{shapeSvg:c,bbox:y}}x(ze,"textHelper");async function Pt(f,t,h,l=[]){let o=f.insert("g").attr("class","label").attr("style",l.join("; ")),i=pt(),c="useHtmlLabels"in t?t.useHtmlLabels:nt(i.htmlLabels)??!0,r="";"text"in t?r=t.text:r=t.label,!c&&r.startsWith("\\")&&(r=r.substring(1)),Ht(r)&&(c=!0);let n=await et(o,$t(St(r)),{width:xt(r,i)+50,classes:"markdown-node-label",useHtmlLabels:c},i),e,s=1;if(c){let a=n.children[0],p=z(n);s=a.innerHTML.split("
").length,a.innerHTML.includes("")&&(s+=a.innerHTML.split("").length-1);let m=a.getElementsByTagName("img");if(m){let g=r.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(d=>new Promise(u=>{function y(){if(d.style.display="flex",d.style.flexDirection="column",g){let S=i.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,T=parseInt(S,10)*5+"px";d.style.minWidth=T,d.style.maxWidth=T}else d.style.width="100%";u(d)}x(y,"setupImage"),setTimeout(()=>{d.complete&&y()}),d.addEventListener("error",y),d.addEventListener("load",y)})))}e=a.getBoundingClientRect(),p.attr("width",e.width),p.attr("height",e.height)}else{l.includes("font-weight: bolder")&&z(n).selectAll("tspan").attr("font-weight",""),s=n.children.length;let a=n.children[0];(n.textContent===""||n.textContent.includes(">"))&&(a.textContent=r[0]+r.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),r[1]===" "&&(a.textContent=a.textContent[0]+" "+a.textContent.substring(1))),a.textContent==="undefined"&&(a.textContent=""),e=n.getBBox()}return o.attr("transform","translate(0,"+(-e.height/(2*s)+h)+")"),e.height}x(Pt,"addText");async function Ue(f,t){let h=Y(),l=h.class.padding??12,o=l,i=t.useHtmlLabels??nt(h.htmlLabels)??!0,c=t;c.annotations=c.annotations??[],c.members=c.members??[],c.methods=c.methods??[];let{shapeSvg:r,bbox:n}=await ze(f,t,h,i,o),{labelStyles:e,nodeStyles:s}=w(t);t.labelStyle=e,t.cssStyles=c.styles||"";let a=c.styles?.join(";")||s||"";t.cssStyles||(t.cssStyles=a.replaceAll("!important","").split(";"));let p=c.members.length===0&&c.methods.length===0&&!h.class?.hideEmptyMembersBox,m=N.svg(r),g=D(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let d=n.width,u=n.height;c.members.length===0&&c.methods.length===0?u+=o:c.members.length>0&&c.methods.length===0&&(u+=o*2);let y=-d/2,S=-u/2,P=m.rectangle(y-l,S-l-(p?l:c.members.length===0&&c.methods.length===0?-l/2:0),d+2*l,u+2*l+(p?l*2:c.members.length===0&&c.methods.length===0?-l:0),g),T=r.insert(()=>P,":first-child");T.attr("class","basic label-container");let v=T.node().getBBox();r.selectAll(".text").each((G,V,A)=>{let O=z(A[V]),E=O.attr("transform"),L=0;if(E){let W=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(E);W&&(L=parseFloat(W[2]))}let I=L+S+l-(p?l:c.members.length===0&&c.methods.length===0?-l/2:0);i||(I-=4);let j=y;(O.attr("class").includes("label-group")||O.attr("class").includes("annotation-group"))&&(j=-O.node()?.getBBox().width/2||0,r.selectAll("text").each(function(F,W,J){window.getComputedStyle(J[W]).textAnchor==="middle"&&(j=0)})),O.attr("transform",`translate(${j}, ${I})`)});let M=r.select(".annotation-group").node().getBBox().height-(p?l/2:0)||0,k=r.select(".label-group").node().getBBox().height-(p?l/2:0)||0,R=r.select(".members-group").node().getBBox().height-(p?l/2:0)||0;if(c.members.length>0||c.methods.length>0||p){let G=m.line(v.x,M+k+S+l,v.x+v.width,M+k+S+l,g);r.insert(()=>G).attr("class","divider").attr("style",a)}if(p||c.members.length>0||c.methods.length>0){let G=m.line(v.x,M+k+R+S+o*2+l,v.x+v.width,M+k+R+S+l+o*2,g);r.insert(()=>G).attr("class","divider").attr("style",a)}if(c.look!=="handDrawn"&&r.selectAll("path").attr("style",a),T.select(":nth-child(2)").attr("style",a),r.selectAll(".divider").select("path").attr("style",a),t.labelStyle?r.selectAll("span").attr("style",t.labelStyle):r.selectAll("span").attr("style",a),!i){let G=RegExp(/color\s*:\s*([^;]*)/),V=G.exec(a);if(V){let A=V[0].replace("color","fill");r.selectAll("tspan").attr("style",A)}else if(e){let A=G.exec(e);if(A){let O=A[0].replace("color","fill");r.selectAll("tspan").attr("style",O)}}}return $(t,T),t.intersect=function(G){return b.rect(t,G)},r}x(Ue,"classBox");async function Ze(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let o=t,i=t,c=20,r=20,n="verifyMethod"in t,e=B(t),s=f.insert("g").attr("class",e).attr("id",t.domId??t.id),a;n?a=await ct(s,`<<${o.type}>>`,0,t.labelStyle):a=await ct(s,"<<Element>>",0,t.labelStyle);let p=a,m=await ct(s,o.name,p,t.labelStyle+"; font-weight: bold;");if(p+=m+r,n){let M=await ct(s,`${o.requirementId?`ID: ${o.requirementId}`:""}`,p,t.labelStyle);p+=M;let k=await ct(s,`${o.text?`Text: ${o.text}`:""}`,p,t.labelStyle);p+=k;let R=await ct(s,`${o.risk?`Risk: ${o.risk}`:""}`,p,t.labelStyle);p+=R,await ct(s,`${o.verifyMethod?`Verification: ${o.verifyMethod}`:""}`,p,t.labelStyle)}else{let M=await ct(s,`${i.type?`Type: ${i.type}`:""}`,p,t.labelStyle);p+=M,await ct(s,`${i.docRef?`Doc Ref: ${i.docRef}`:""}`,p,t.labelStyle)}let g=(s.node()?.getBBox().width??200)+c,d=(s.node()?.getBBox().height??200)+c,u=-g/2,y=-d/2,S=N.svg(s),P=D(t,{});t.look!=="handDrawn"&&(P.roughness=0,P.fillStyle="solid");let T=S.rectangle(u,y,g,d,P),v=s.insert(()=>T,":first-child");if(v.attr("class","basic label-container").attr("style",l),s.selectAll(".label").each((M,k,R)=>{let G=z(R[k]),V=G.attr("transform"),A=0,O=0;if(V){let j=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(V);j&&(A=parseFloat(j[1]),O=parseFloat(j[2]))}let E=O-d/2,L=u+c/2;(k===0||k===1)&&(L=A),G.attr("transform",`translate(${L}, ${E+c})`)}),p>a+m+r){let M=S.line(u,y+a+m+r,u+g,y+a+m+r,P);s.insert(()=>M).attr("style",l)}return $(t,v),t.intersect=function(M){return b.rect(t,M)},s}x(Ze,"requirementBox");async function ct(f,t,h,l=""){if(t==="")return 0;let o=f.insert("g").attr("class","label").attr("style",l),i=Y(),c=i.htmlLabels??!0,r=await et(o,$t(St(t)),{width:xt(t,i)+50,classes:"markdown-node-label",useHtmlLabels:c,style:l},i),n;if(c){let e=r.children[0],s=z(r);n=e.getBoundingClientRect(),s.attr("width",n.width),s.attr("height",n.height)}else{let e=r.children[0];for(let s of e.children)s.textContent=s.textContent.replaceAll(">",">").replaceAll("<","<"),l&&s.setAttribute("style",l);n=r.getBBox(),n.height+=6}return o.attr("transform",`translate(${-n.width/2},${-n.height/2+h})`),n.height}x(ct,"addText");var Ps=x(f=>{switch(f){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");async function Je(f,t,{config:h}){let{labelStyles:l,nodeStyles:o}=w(t);t.labelStyle=l||"";let i=10,c=t.width;t.width=(t.width??200)-10;let{shapeSvg:r,bbox:n,label:e}=await C(f,t,B(t)),s=t.padding||10,a="",p;"ticket"in t&&t.ticket&&h?.kanban?.ticketBaseUrl&&(a=h?.kanban?.ticketBaseUrl.replace("#TICKET#",t.ticket),p=r.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",a).attr("target","_blank"));let m={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1},g,d;p?{label:g,bbox:d}=await Dt(p,"ticket"in t&&t.ticket||"",m):{label:g,bbox:d}=await Dt(r,"ticket"in t&&t.ticket||"",m);let{label:u,bbox:y}=await Dt(r,"assigned"in t&&t.assigned||"",m);t.width=c;let S=10,P=t?.width||0,T=Math.max(d.height,y.height)/2,v=Math.max(n.height+S*2,t?.height||0)+T,M=-P/2,k=-v/2;e.attr("transform","translate("+(s-P/2)+", "+(-T-n.height/2)+")"),g.attr("transform","translate("+(s-P/2)+", "+(-T+n.height/2)+")"),u.attr("transform","translate("+(s+P/2-y.width-2*i)+", "+(-T+n.height/2)+")");let R,{rx:G,ry:V}=t,{cssStyles:A}=t;if(t.look==="handDrawn"){let O=N.svg(r),E=D(t,{}),L=G||V?O.path(st(M,k,P,v,G||0),E):O.rectangle(M,k,P,v,E);R=r.insert(()=>L,":first-child"),R.attr("class","basic label-container").attr("style",A||null)}else{R=r.insert("rect",":first-child"),R.attr("class","basic label-container __APA__").attr("style",o).attr("rx",G??5).attr("ry",V??5).attr("x",M).attr("y",k).attr("width",P).attr("height",v);let O="priority"in t&&t.priority;if(O){let E=r.append("line"),L=M+2,I=k+Math.floor((G??0)/2),j=k+v-Math.floor((G??0)/2);E.attr("x1",L).attr("y1",I).attr("x2",L).attr("y2",j).attr("stroke-width","4").attr("stroke",Ps(O))}}return $(t,R),t.height=v,t.intersect=function(O){return b.rect(t,O)},r}x(Je,"kanbanItem");async function Ke(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,halfPadding:c,label:r}=await C(f,t,B(t)),n=i.width+10*c,e=i.height+8*c,s=.15*n,{cssStyles:a}=t,p=i.width+20,m=i.height+20,g=Math.max(n,p),d=Math.max(e,m);r.attr("transform",`translate(${-i.width/2}, ${-i.height/2})`);let u,y=`M0 0 - a${s},${s} 1 0,0 ${g*.25},${-1*d*.1} - a${s},${s} 1 0,0 ${g*.25},0 - a${s},${s} 1 0,0 ${g*.25},0 - a${s},${s} 1 0,0 ${g*.25},${d*.1} - - a${s},${s} 1 0,0 ${g*.15},${d*.33} - a${s*.8},${s*.8} 1 0,0 0,${d*.34} - a${s},${s} 1 0,0 ${-1*g*.15},${d*.33} - - a${s},${s} 1 0,0 ${-1*g*.25},${d*.15} - a${s},${s} 1 0,0 ${-1*g*.25},0 - a${s},${s} 1 0,0 ${-1*g*.25},0 - a${s},${s} 1 0,0 ${-1*g*.25},${-1*d*.15} - - a${s},${s} 1 0,0 ${-1*g*.1},${-1*d*.33} - a${s*.8},${s*.8} 1 0,0 0,${-1*d*.34} - a${s},${s} 1 0,0 ${g*.1},${-1*d*.33} - H0 V0 Z`;if(t.look==="handDrawn"){let S=N.svg(o),P=D(t,{}),T=S.path(y,P);u=o.insert(()=>T,":first-child"),u.attr("class","basic label-container").attr("style",X(a))}else u=o.insert("path",":first-child").attr("class","basic label-container").attr("style",l).attr("d",y);return u.attr("transform",`translate(${-g/2}, ${-d/2})`),$(t,u),t.calcIntersect=function(S,P){return b.rect(S,P)},t.intersect=function(S){return _.info("Bang intersect",t,S),b.rect(t,S)},o}x(Ke,"bang");async function Qe(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,halfPadding:c,label:r}=await C(f,t,B(t)),n=i.width+2*c,e=i.height+2*c,s=.15*n,a=.25*n,p=.35*n,m=.2*n,{cssStyles:g}=t,d,u=`M0 0 - a${s},${s} 0 0,1 ${n*.25},${-1*n*.1} - a${p},${p} 1 0,1 ${n*.4},${-1*n*.1} - a${a},${a} 1 0,1 ${n*.35},${n*.2} - - a${s},${s} 1 0,1 ${n*.15},${e*.35} - a${m},${m} 1 0,1 ${-1*n*.15},${e*.65} - - a${a},${s} 1 0,1 ${-1*n*.25},${n*.15} - a${p},${p} 1 0,1 ${-1*n*.5},0 - a${s},${s} 1 0,1 ${-1*n*.25},${-1*n*.15} - - a${s},${s} 1 0,1 ${-1*n*.1},${-1*e*.35} - a${m},${m} 1 0,1 ${n*.1},${-1*e*.65} - H0 V0 Z`;if(t.look==="handDrawn"){let y=N.svg(o),S=D(t,{}),P=y.path(u,S);d=o.insert(()=>P,":first-child"),d.attr("class","basic label-container").attr("style",X(g))}else d=o.insert("path",":first-child").attr("class","basic label-container").attr("style",l).attr("d",u);return r.attr("transform",`translate(${-i.width/2}, ${-i.height/2})`),d.attr("transform",`translate(${-n/2}, ${-e/2})`),$(t,d),t.calcIntersect=function(y,S){return b.rect(y,S)},t.intersect=function(y){return _.info("Cloud intersect",t,y),b.rect(t,y)},o}x(Qe,"cloud");async function ts(f,t){let{labelStyles:h,nodeStyles:l}=w(t);t.labelStyle=h;let{shapeSvg:o,bbox:i,halfPadding:c,label:r}=await C(f,t,B(t)),n=i.width+8*c,e=i.height+2*c,s=5,a=` - M${-n/2} ${e/2-s} - v${-e+2*s} - q0,-${s} ${s},-${s} - h${n-2*s} - q${s},0 ${s},${s} - v${e-2*s} - q0,${s} -${s},${s} - h${-n+2*s} - q-${s},0 -${s},-${s} - Z - `,p=o.append("path").attr("id","node-"+t.id).attr("class","node-bkg node-"+t.type).attr("style",l).attr("d",a);return o.append("line").attr("class","node-line-").attr("x1",-n/2).attr("y1",e/2).attr("x2",n/2).attr("y2",e/2),r.attr("transform",`translate(${-i.width/2}, ${-i.height/2})`),o.append(()=>r.node()),$(t,p),t.calcIntersect=function(m,g){return b.rect(m,g)},t.intersect=function(m){return b.rect(t,m)},o}x(ts,"defaultMindmapNode");async function es(f,t){let h={padding:t.padding??0};return Bt(f,t,h)}x(es,"mindmapCircle");var Cs=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Me},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Te},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Ge},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Ae},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:se},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:Bt},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:Ke},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Qe},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Be},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:ce},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:Se},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:xe},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:Ie},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:ye},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:ie},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:Ve},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:Ut},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:ke},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:He},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:je},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:ne},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:he},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:Kt},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:Qt},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:te},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:be},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:Xe},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:le},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:We},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:we},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:ee},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:re},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:_e},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:Ye},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:oe},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:Fe},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:ae},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:Re},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:De},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:$e},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:zt},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:Jt},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Le},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Oe},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:qe},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Pe},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Ne}],Ts=x(()=>{let t=[...Object.entries({state:Ee,choice:Zt,note:ve,rectWithTitle:Ce,labelRect:ue,iconSquare:ge,iconCircle:me,icon:pe,iconRounded:fe,imageSquare:de,anchor:qt,kanbanItem:Je,mindmapCircle:es,defaultMindmapNode:ts,classBox:Ue,erBox:Gt,requirementBox:Ze}),...Cs.flatMap(h=>[h.shortName,..."aliases"in h?h.aliases:[],..."internalAliases"in h?h.internalAliases:[]].map(o=>[o,h.handler]))];return Object.fromEntries(t)},"generateShapeMap"),Et=Ts();function ff(f){return f in Et}x(ff,"isValidShape");var Ct=new Map;async function xf(f,t,h){let l,o;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");let i=t.shape?Et[t.shape]:void 0;if(!i)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let c;h.config.securityLevel==="sandbox"?c="_top":t.linkTarget&&(c=t.linkTarget||"_blank"),l=f.insert("svg:a").attr("xlink:href",t.link).attr("target",c??null),o=await i(l,t,h)}else o=await i(f,t,h),l=o;return t.tooltip&&o.attr("title",t.tooltip),Ct.set(t.id,l),t.haveCallback&&l.attr("class",l.attr("class")+" clickable"),l}x(xf,"insertNode");var Sf=x((f,t)=>{Ct.set(t.id,f)},"setNodeElem"),bf=x(()=>{Ct.clear()},"clear"),wf=x(f=>{let t=Ct.get(f.id);_.trace("Transforming node",f.diff,f,"translate("+(f.x-f.width/2-5)+", "+f.width/2+")");let h=8,l=f.diff||0;return f.clusterNode?t.attr("transform","translate("+(f.x+l-f.width/2)+", "+(f.y-f.height/2-h)+")"):t.attr("transform","translate("+f.x+", "+f.y+")"),l},"positionNode");export{C as a,$ as b,wt as c,ff as d,ar as e,nr as f,xf as g,Sf as h,bf as i,wf as j}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-BDKIFH7H.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-BDKIFH7H.mjs.map deleted file mode 100644 index 55bcdca..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-BDKIFH7H.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/rendering-util/rendering-elements/shapes/util.ts", "../../../src/rendering-util/rendering-elements/intersect/intersect-rect.js", "../../../src/rendering-util/rendering-elements/createLabel.js", "../../../src/rendering-util/rendering-elements/shapes/roundedRectPath.ts", "../../../src/rendering-util/rendering-elements/clusters.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-node.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-ellipse.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-circle.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-line.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-polygon.js", "../../../src/rendering-util/rendering-elements/intersect/index.js", "../../../src/rendering-util/rendering-elements/shapes/anchor.ts", "../../../src/rendering-util/rendering-elements/shapes/bowTieRect.ts", "../../../src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts", "../../../src/rendering-util/rendering-elements/shapes/card.ts", "../../../src/rendering-util/rendering-elements/shapes/choice.ts", "../../../src/rendering-util/rendering-elements/shapes/circle.ts", "../../../src/rendering-util/rendering-elements/shapes/crossedCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts", "../../../src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts", "../../../src/rendering-util/rendering-elements/shapes/curlyBraces.ts", "../../../src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts", "../../../src/rendering-util/rendering-elements/shapes/cylinder.ts", "../../../src/rendering-util/rendering-elements/shapes/dividedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/doubleCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/filledCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/flippedTriangle.ts", "../../../src/rendering-util/rendering-elements/shapes/forkJoin.ts", "../../../src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/hexagon.ts", "../../../src/rendering-util/rendering-elements/shapes/hourglass.ts", "../../../src/rendering-util/rendering-elements/shapes/icon.ts", "../../../src/rendering-util/rendering-elements/shapes/iconCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/iconRounded.ts", "../../../src/rendering-util/rendering-elements/shapes/iconSquare.ts", "../../../src/rendering-util/rendering-elements/shapes/imageSquare.ts", "../../../src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts", "../../../src/rendering-util/rendering-elements/shapes/drawRect.ts", "../../../src/rendering-util/rendering-elements/shapes/labelRect.ts", "../../../src/rendering-util/rendering-elements/shapes/leanLeft.ts", "../../../src/rendering-util/rendering-elements/shapes/leanRight.ts", "../../../src/rendering-util/rendering-elements/shapes/lightningBolt.ts", "../../../src/rendering-util/rendering-elements/shapes/linedCylinder.ts", "../../../src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/multiRect.ts", "../../../src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/note.ts", "../../../src/rendering-util/rendering-elements/shapes/question.ts", "../../../src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts", "../../../src/rendering-util/rendering-elements/shapes/rectWithTitle.ts", "../../../src/rendering-util/rendering-elements/shapes/roundedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/shadedProcess.ts", "../../../src/rendering-util/rendering-elements/shapes/slopedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/squareRect.ts", "../../../src/rendering-util/rendering-elements/shapes/stadium.ts", "../../../src/rendering-util/rendering-elements/shapes/state.ts", "../../../src/rendering-util/rendering-elements/shapes/stateEnd.ts", "../../../src/rendering-util/rendering-elements/shapes/stateStart.ts", "../../../src/rendering-util/rendering-elements/shapes/subroutine.ts", "../../../src/rendering-util/rendering-elements/shapes/taggedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/text.ts", "../../../src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts", "../../../src/rendering-util/rendering-elements/shapes/trapezoid.ts", "../../../src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts", "../../../src/rendering-util/rendering-elements/shapes/triangle.ts", "../../../src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/waveRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/windowPane.ts", "../../../src/rendering-util/rendering-elements/shapes/erBox.ts", "../../../src/diagrams/class/shapeUtil.ts", "../../../src/rendering-util/rendering-elements/shapes/classBox.ts", "../../../src/rendering-util/rendering-elements/shapes/requirementBox.ts", "../../../src/rendering-util/rendering-elements/shapes/kanbanItem.ts", "../../../src/rendering-util/rendering-elements/shapes/bang.ts", "../../../src/rendering-util/rendering-elements/shapes/cloud.ts", "../../../src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts", "../../../src/rendering-util/rendering-elements/shapes/mindmapCircle.ts", "../../../src/rendering-util/rendering-elements/shapes.ts", "../../../src/rendering-util/rendering-elements/nodes.ts"], - "sourcesContent": ["import { createText } from '../../createText.js';\nimport type { Node } from '../../types.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport { evaluate, getEffectiveHtmlLabels } from '../../../config.js';\nimport { select } from 'd3';\nimport { sanitizeText } from '../../../diagrams/common/common.js';\nimport { decodeEntities, handleUndefinedAttr } from '../../../utils.js';\nimport type { D3Selection, Point } from '../../../types.js';\nimport { configureLabelImages } from './labelImageUtils.js';\n\nexport const labelHelper = async (\n parent: D3Selection,\n node: Node,\n _classes?: string\n) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig()?.htmlLabels);\n if (!_classes) {\n cssClasses = 'node default';\n } else {\n cssClasses = _classes;\n }\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', cssClasses)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const labelEl = shapeSvg\n .insert('g')\n .attr('class', 'label')\n .attr('style', handleUndefinedAttr(node.labelStyle));\n\n // Replace label with default value if undefined\n let label;\n if (node.label === undefined) {\n label = '';\n } else {\n label = typeof node.label === 'string' ? node.label : node.label[0];\n }\n\n const addBackground = !!node.icon || !!node.img;\n const isMarkdown = node.labelType === 'markdown';\n const text = await createText(\n labelEl,\n sanitizeText(decodeEntities(label), getConfig()),\n {\n useHtmlLabels,\n width: node.width || getConfig().flowchart?.wrappingWidth,\n // @ts-expect-error -- This is currently not used. Should this be `classes` instead?\n cssClasses: isMarkdown ? 'markdown-node-label' : undefined,\n style: node.labelStyle,\n addSvgBackground: addBackground,\n markdown: isMarkdown,\n },\n getConfig()\n );\n\n // Get the size of the label\n let bbox = text.getBBox();\n const halfPadding = (node?.padding ?? 0) / 2;\n\n if (useHtmlLabels) {\n const div = text.children[0];\n const dv = select(text);\n\n // if there are images, need to wait for them to load before getting the bounding box\n await configureLabelImages(div, label);\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center the label\n if (useHtmlLabels) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n } else {\n labelEl.attr('transform', 'translate(' + 0 + ', ' + -bbox.height / 2 + ')');\n }\n if (node.centerLabel) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n }\n labelEl.insert('rect', ':first-child');\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n};\nexport const insertLabel = async (\n parent: D3Selection,\n label: string,\n options: {\n labelStyle?: string | undefined;\n icon?: boolean | undefined;\n img?: string | undefined;\n useHtmlLabels?: boolean | undefined;\n padding: number;\n width?: number | undefined;\n centerLabel?: boolean | undefined;\n addSvgBackground?: boolean | undefined;\n }\n) => {\n const useHtmlLabels = options.useHtmlLabels ?? getEffectiveHtmlLabels(getConfig());\n\n // Create the label and insert it after the rect\n const labelEl = parent\n .insert('g')\n .attr('class', 'label')\n .attr('style', options.labelStyle || '');\n\n const text = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig()), {\n useHtmlLabels,\n width: options.width || getConfig()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img,\n });\n // Get the size of the label\n let bbox = text.getBBox();\n const halfPadding = options.padding / 2;\n\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = text.children[0];\n const dv = select(text);\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center the label\n if (useHtmlLabels) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n } else {\n labelEl.attr('transform', 'translate(' + 0 + ', ' + -bbox.height / 2 + ')');\n }\n if (options.centerLabel) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n }\n labelEl.insert('rect', ':first-child');\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n};\nexport const updateNodeBounds = (\n node: Node,\n // D3Selection is for the roughjs case, D3Selection is for the non-roughjs case\n element: D3Selection | D3Selection\n) => {\n const bbox = element.node()!.getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\n/**\n * @param parent - Parent element to append the polygon to\n * @param w - Width of the polygon\n * @param h - Height of the polygon\n * @param points - Array of points to create the polygon\n */\nexport function insertPolygonShape(\n parent: D3Selection,\n w: number,\n h: number,\n points: Point[]\n) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport const getNodeClasses = (node: Node, extra?: string) =>\n (node.look === 'handDrawn' ? 'rough-node' : 'node') + ' ' + node.cssClasses + ' ' + (extra || '');\n\nexport function createPathFromPoints(points: Point[]) {\n const pointStrings = points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`);\n pointStrings.push('Z');\n return pointStrings.join(' ');\n}\n\nexport function generateFullSineWavePoints(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n amplitude: number,\n numCycles: number\n) {\n const points = [];\n const steps = 50; // Number of segments to create a smooth curve\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n\n // Calculate frequency and phase shift\n const frequency = (2 * Math.PI) / cycleLength;\n const midY = y1 + deltaY / 2;\n\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n\n points.push({ x, y });\n }\n\n return points;\n}\n\n/**\n * @param centerX - x-coordinate of center of circle\n * @param centerY - y-coordinate of center of circle\n * @param radius - radius of circle\n * @param numPoints - total points required\n * @param startAngle - angle where arc will start\n * @param endAngle - angle where arc will end\n */\nexport function generateCirclePoints(\n centerX: number,\n centerY: number,\n radius: number,\n numPoints: number,\n startAngle: number,\n endAngle: number\n) {\n const points = [];\n\n // Convert angles to radians\n const startAngleRad = (startAngle * Math.PI) / 180;\n const endAngleRad = (endAngle * Math.PI) / 180;\n\n // Calculate the angle range in radians\n const angleRange = endAngleRad - startAngleRad;\n\n // Calculate the angle step\n const angleStep = angleRange / (numPoints - 1);\n\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n\n return points;\n}\n", "const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // https://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n", "import { getEffectiveHtmlLabels } from '../../config.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { createText } from '../createText.js';\n\n/**\n * @param {import('../../types.js').D3Selection} element - The parent element to which the label will be appended.\n * @param {string | [string] | undefined} _vertexText - The text content of the label.\n * @param {string} style\n * @param {boolean} [isTitle] - If `true`, style this as a title label, else as a normal label.\n * @param {boolean} [isNode] - If `true`, style this as a node label, else as an edge label.\n * @deprecated svg-util/createText instead\n *\n * @example\n *\n * If `getEffectiveHtmlLabels(getConfig())` is `true`, you must reset the width\n * and height of the created label after creation, like this:\n *\n * ```js\n * const labelElement = await createLabel(parent, ... );\n * let slBox = labelElement.getBBox();\n * if (useHtmlLabels) {\n * const div = labelElement.children[0];\n * const dv = select(labelElement);\n * slBox = div.getBoundingClientRect();\n * dv.attr('width', slBox.width);\n * dv.attr('height', slBox.height);\n * }\n * parent.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n * ```\n */\nconst createLabel = async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') {\n vertexText = vertexText[0];\n }\n\n const config = getConfig();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY,\n },\n config\n );\n};\n\nexport default createLabel;\n", "export const createRoundedRectPathD = (\n x: number,\n y: number,\n totalWidth: number,\n totalHeight: number,\n radius: number\n) =>\n [\n 'M',\n x + radius,\n y, // Move to the first point\n 'H',\n x + totalWidth - radius, // Draw horizontal line to the beginning of the right corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius, // Draw arc to the right top corner\n 'V',\n y + totalHeight - radius, // Draw vertical line down to the beginning of the right bottom corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight, // Draw arc to the right bottom corner\n 'H',\n x + radius, // Draw horizontal line to the beginning of the left bottom corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius, // Draw arc to the left bottom corner\n 'V',\n y + radius, // Draw vertical line up to the beginning of the left top corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y, // Draw arc to the left top corner\n 'Z', // Close the path\n ].join(' ');\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../../config.js';\nimport { log } from '../../logger.js';\nimport { getSubGraphTitleMargins } from '../../utils/subGraphTitleMargins.js';\nimport { select } from 'd3';\nimport rough from 'roughjs';\nimport { createText } from '../createText.ts';\nimport intersectRect from '../rendering-elements/intersect/intersect-rect.js';\nimport createLabel from './createLabel.js';\nimport { createRoundedRectPathD } from './shapes/roundedRectPath.ts';\nimport { styles2String, userNodeOverrides } from './shapes/handDrawnShapeStyles.js';\n\nconst rect = async (parent, node) => {\n log.info('Creating subgraph rect for ', node.id, node);\n const siteConfig = getConfig();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster ' + node.cssClasses)\n .attr('id', node.id)\n .attr('data-look', node.look);\n\n const useHtmlLabels = getEffectiveHtmlLabels(siteConfig);\n\n // Create the label and insert it after the rect\n const labelEl = shapeSvg.insert('g').attr('class', 'cluster-label ');\n\n let text;\n if (node.labelType === 'markdown') {\n text = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width,\n });\n } else {\n text = await createLabel(labelEl, node.label, node.labelStyle || '', false, true);\n }\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n let rect;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed,\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughNode;\n }, ':first-child');\n // Should we affect the options instead of doing this?\n rect.select('path:nth-child(2)').attr('style', borderStyles.join(';'));\n rect.select('path').attr('style', backgroundStyles.join(';').replace('fill', 'stroke'));\n } else {\n // add the rect\n rect = shapeSvg.insert('rect', ':first-child');\n // center the rect around its coordinate\n rect\n .attr('style', nodeStyles)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n 'transform',\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n\n if (labelStyles) {\n const span = labelEl.select('span');\n if (span) {\n span.attr('style', labelStyles);\n }\n }\n // Center the label\n\n const rectBox = rect.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n // Used by layout engine to position subgraph in parent\n node.offsetY = bbox.height - node.padding / 2;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: bbox };\n};\n\n/**\n * Non visible cluster where the note is group with its\n *\n * @param {any} parent\n * @param {any} node\n * @returns {any} ShapeSvg\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n};\n\nconst roundedWithTitle = async (parent, node) => {\n const siteConfig = getConfig();\n\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } =\n themeVariables;\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.cssClasses)\n .attr('id', node.id)\n .attr('data-id', node.id)\n .attr('data-look', node.look);\n\n // add the rect\n const outerRectG = shapeSvg.insert('g', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n let innerRect = shapeSvg.append('rect');\n\n const text = await createLabel(label, node.label, node.labelStyle, undefined, true);\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Rounded With Title\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width =\n (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n\n const height = node.height + padding;\n // const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n\n // add the rect\n let rect;\n if (node.look === 'handDrawn') {\n const isAlt = node.cssClasses.includes('statediagram-cluster-alt');\n const rc = rough.svg(shapeSvg);\n const roughOuterNode =\n node.rx || node.ry\n ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: 'solid',\n stroke: nodeBorder,\n seed: handDrawnSeed,\n })\n : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? 'hachure' : 'solid',\n stroke: nodeBorder,\n seed: handDrawnSeed,\n });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect = outerRectG.insert('rect', ':first-child');\n const outerRectClass = 'outer';\n\n // center the rect around its coordinate\n rect\n .attr('class', outerRectClass)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('data-look', node.look);\n innerRect\n .attr('class', 'inner')\n .attr('x', x)\n .attr('y', innerY)\n .attr('width', width)\n .attr('height', innerHeight);\n }\n\n label.attr(\n 'transform',\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (getEffectiveHtmlLabels(siteConfig) ? 0 : 3)})`\n );\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n // Used by layout engine to position subgraph in parent\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: bbox };\n};\nconst kanbanSection = async (parent, node) => {\n log.info('Creating subgraph rect for ', node.id, node);\n const siteConfig = getConfig();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster ' + node.cssClasses)\n .attr('id', node.id)\n .attr('data-look', node.look);\n\n const useHtmlLabels = getEffectiveHtmlLabels(siteConfig);\n\n // Create the label and insert it after the rect\n const labelEl = shapeSvg.insert('g').attr('class', 'cluster-label ');\n\n const text = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width,\n });\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n let rect;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed,\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughNode;\n }, ':first-child');\n // Should we affect the options instead of doing this?\n rect.select('path:nth-child(2)').attr('style', borderStyles.join(';'));\n rect.select('path').attr('style', backgroundStyles.join(';').replace('fill', 'stroke'));\n } else {\n // add the rect\n rect = shapeSvg.insert('rect', ':first-child');\n // center the rect around its coordinate\n rect\n .attr('style', nodeStyles)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n 'transform',\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n\n if (labelStyles) {\n const span = labelEl.select('span');\n if (span) {\n span.attr('style', labelStyles);\n }\n }\n // Center the label\n\n const rectBox = rect.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n // Used by layout engine to position subgraph in parent\n node.offsetY = bbox.height - node.padding / 2;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: bbox };\n};\nconst divider = (parent, node) => {\n const siteConfig = getConfig();\n\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.cssClasses)\n .attr('id', node.id)\n .attr('data-look', node.look);\n\n // add the rect\n const outerRectG = shapeSvg.insert('g', ':first-child');\n\n const padding = 0 * node.padding;\n\n const width = node.width + padding;\n\n node.diff = -node.padding;\n\n const height = node.height + padding;\n // const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n\n // add the rect\n let rect;\n if (node.look === 'handDrawn') {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: 'lightgrey',\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed,\n });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n } else {\n rect = outerRectG.insert('rect', ':first-child');\n const outerRectClass = 'divider';\n\n // center the rect around its coordinate\n rect\n .attr('class', outerRectClass)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('data-look', node.look);\n }\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n // Used by layout engine to position subgraph in parent\n node.offsetY = 0;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: {} };\n};\n\nconst squareRect = rect;\nconst shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection,\n};\n\nlet clusterElems = new Map();\n\n/**\n * @typedef {keyof typeof shapes} ClusterShapeID\n */\n\n/**\n * @param {import('../types.js').ClusterNode} node - Shape defaults to 'rect'\n */\nexport const insertCluster = async (elem, node) => {\n const shape = node.shape || 'rect';\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n};\n\nexport const getClusterTitleWidth = (elem, node) => {\n // TODO: Doesn't this need an `await`?\n const label = createLabel(elem, node.label, node.labelStyle, undefined, true);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = new Map();\n};\n\nexport const positionCluster = (node) => {\n log.info(\n 'Position cluster (' +\n node.id +\n ', ' +\n node.x +\n ', ' +\n node.y +\n ') (' +\n node?.width +\n ', ' +\n node?.height +\n ')',\n clusterElems.get(node.id)\n );\n const el = clusterElems.get(node.id);\n el.cluster.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n", "function intersectNode(node, point) {\n return node.intersect(point);\n}\n\nexport default intersectNode;\n", "function intersectEllipse(node, rx, ry, point) {\n // Formulae from: https://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n", "import intersectEllipse from './intersect-ellipse.js';\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n", "/**\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n const a1 = p2.y - p1.y;\n const b1 = p1.x - p2.x;\n const c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n const r3 = a1 * q1.x + b1 * q1.y + c1;\n const r4 = a1 * q2.x + b1 * q2.y + c1;\n\n const epsilon = 1e-6;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n const a2 = q2.y - q1.y;\n const b2 = q1.x - q2.x;\n const c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n const r1 = a2 * p1.x + b2 * p1.y + c2;\n const r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n const denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n const offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n let num = b1 * c2 - b2 * c1;\n const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n }\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n", "import intersectLine from './intersect-line.js';\n\n/**\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\n * that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n\n let intersections = [];\n\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n\nexport default intersectPolygon;\n", "/*\n * Borrowed with love from dagre-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n", "import { log } from '../../../logger.js';\nimport { updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function anchor(parent: D3Selection, node: Node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = 'anchor';\n }\n const shapeSvg = parent\n .insert('g')\n .attr('class', cssClasses)\n .attr('id', node.domId || node.id);\n\n const radius = 1;\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: 'black', stroke: 'none', fillStyle: 'solid' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, ':first-child');\n circleElem.attr('class', 'anchor').attr('style', handleUndefinedAttr(cssStyles));\n\n updateNodeBounds(node, circleElem);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, radius, point);\n return intersect.circle(node, radius, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nfunction generateArcPoints(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n rx: number,\n ry: number,\n clockwise: boolean\n) {\n const numPoints = 20;\n // Calculate midpoint\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n\n // Calculate the angle of the line connecting the points\n const angle = Math.atan2(y2 - y1, x2 - x1);\n\n // Calculate transformed coordinates for the ellipse\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n\n // Scale to unit circle\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n\n // Calculate the distance between points on the unit circle\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n\n // Check if the ellipse can be drawn with the given radii\n if (distance > 1) {\n throw new Error('The given radii are too small to create an arc between the points.');\n }\n\n // Calculate the distance from the midpoint to the center of the ellipse\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n\n // Calculate the center of the ellipse\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n\n // Calculate the start and end angles on the ellipse\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n\n // Adjust angles for clockwise/counterclockwise\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n\n // Generate points\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle);\n const y = centerY + ry * Math.sin(angle);\n points.push({ x, y });\n }\n\n return points;\n}\n\nexport async function bowTieRect(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding + 20;\n const h = bbox.height + node.padding;\n\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n\n // let shape: d3.Selection;\n const { cssStyles } = node;\n\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true),\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, ':first-child');\n\n bowTieRectShape.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n bowTieRectShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n bowTieRectShape.selectAll('path').attr('style', nodeStyles);\n }\n\n bowTieRectShape.attr('transform', `translate(${rx / 2}, 0)`);\n\n updateNodeBounds(node, bowTieRectShape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import type { D3Selection } from '../../../types.js';\n\nexport function insertPolygonShape(\n parent: D3Selection,\n w: number,\n h: number,\n points: { x: number; y: number }[]\n) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\n\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport { createPathFromPoints } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\n// const createPathFromPoints = (points: { x: number; y: number }[]): string => {\n// const pointStrings = points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`);\n// pointStrings.push('Z');\n// return pointStrings.join(' ');\n// };\n\nexport async function card(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const h = bbox.height + node.padding;\n const padding = 12;\n const w = bbox.width + node.padding + padding;\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + padding, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + padding },\n { x: left + padding, y: top },\n ];\n\n let polygon: D3Selection | Awaited>;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { createPathFromPoints, getNodeClasses } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function choice(parent: D3Selection, node: Node) {\n const { nodeStyles } = styles2String(node);\n node.label = '';\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n const { cssStyles } = node;\n\n const s = Math.max(28, node.width ?? 0);\n\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, ':first-child');\n\n if (cssStyles && node.look !== 'handDrawn') {\n choiceShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n choiceShape.selectAll('path').attr('style', nodeStyles);\n }\n\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport type { Bounds, D3Selection, Point } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { MindmapOptions, Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, labelHelper, updateNodeBounds } from './util.js';\n\nexport async function circle(\n parent: D3Selection,\n node: Node,\n options?: MindmapOptions | ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const padding = options?.padding ?? halfPadding;\n const radius = bbox.width / 2 + padding;\n let circleElem;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options);\n\n circleElem = shapeSvg.insert(() => roughNode, ':first-child');\n circleElem.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg\n .insert('circle', ':first-child')\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('r', radius)\n .attr('cx', 0)\n .attr('cy', 0);\n }\n\n updateNodeBounds(node, circleElem);\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n const radius = bounds.width / 2;\n return intersect.circle(bounds, radius, point);\n };\n node.intersect = function (point) {\n log.info('Circle intersect', node, radius, point);\n return intersect.circle(node, radius, point);\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { getNodeClasses, updateNodeBounds } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\nfunction createLine(r: number) {\n const xAxis45 = Math.cos(Math.PI / 4); // cosine of 45 degrees\n const yAxis45 = Math.sin(Math.PI / 4); // sine of 45 degrees\n const lineLength = r * 2;\n\n const pointQ1 = { x: (lineLength / 2) * xAxis45, y: (lineLength / 2) * yAxis45 }; // Quadrant I\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: (lineLength / 2) * yAxis45 }; // Quadrant II\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 }; // Quadrant III\n const pointQ4 = { x: (lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 }; // Quadrant IV\n\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n\nexport function crossedCircle(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = '';\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n\n const crossedCircle = shapeSvg.insert(() => circleNode, ':first-child');\n crossedCircle.insert(() => lineNode);\n\n if (cssStyles && node.look !== 'handDrawn') {\n crossedCircle.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n crossedCircle.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, crossedCircle);\n\n node.intersect = function (point) {\n log.info('crossedCircle intersect', node, { radius, point });\n const pos = intersect.circle(node, radius, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nfunction generateCirclePoints(\n centerX: number,\n centerY: number,\n radius: number,\n numPoints = 100,\n startAngle = 0,\n endAngle = 180\n) {\n const points = [];\n\n // Convert angles to radians\n const startAngleRad = (startAngle * Math.PI) / 180;\n const endAngleRad = (endAngle * Math.PI) / 180;\n\n // Calculate the angle range in radians\n const angleRange = endAngleRad - startAngleRad;\n\n // Calculate the angle step\n const angleStep = angleRange / (numPoints - 1);\n\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n\n return points;\n}\n\nexport async function curlyBraceLeft(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n\n const { cssStyles } = node;\n\n const points = [\n ...generateCirclePoints(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n ];\n\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius },\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: 'none' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace('Z', '');\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert('g', ':first-child');\n curlyBraceLeftShape.insert(() => rectShape, ':first-child').attr('stroke-opacity', 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, ':first-child');\n curlyBraceLeftShape.attr('class', 'text');\n\n if (cssStyles && node.look !== 'handDrawn') {\n curlyBraceLeftShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n curlyBraceLeftShape.selectAll('path').attr('style', nodeStyles);\n }\n\n curlyBraceLeftShape.attr('transform', `translate(${radius}, 0)`);\n\n label.attr(\n 'transform',\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, curlyBraceLeftShape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, rectPoints, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nfunction generateCirclePoints(\n centerX: number,\n centerY: number,\n radius: number,\n numPoints = 100,\n startAngle = 0,\n endAngle = 180\n) {\n const points = [];\n\n // Convert angles to radians\n const startAngleRad = (startAngle * Math.PI) / 180;\n const endAngleRad = (endAngle * Math.PI) / 180;\n\n // Calculate the angle range in radians\n const angleRange = endAngleRad - startAngleRad;\n\n // Calculate the angle step\n const angleStep = angleRange / (numPoints - 1);\n\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n\n return points;\n}\n\nexport async function curlyBraceRight(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n\n const { cssStyles } = node;\n\n const points = [\n ...generateCirclePoints(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n ];\n\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius },\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: 'none' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace('Z', '');\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert('g', ':first-child');\n curlyBraceRightShape.insert(() => rectShape, ':first-child').attr('stroke-opacity', 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, ':first-child');\n curlyBraceRightShape.attr('class', 'text');\n\n if (cssStyles && node.look !== 'handDrawn') {\n curlyBraceRightShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n curlyBraceRightShape.selectAll('path').attr('style', nodeStyles);\n }\n\n curlyBraceRightShape.attr('transform', `translate(${-radius}, 0)`);\n\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, curlyBraceRightShape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, rectPoints, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nfunction generateCirclePoints(\n centerX: number,\n centerY: number,\n radius: number,\n numPoints = 100,\n startAngle = 0,\n endAngle = 180\n) {\n const points = [];\n\n // Convert angles to radians\n const startAngleRad = (startAngle * Math.PI) / 180;\n const endAngleRad = (endAngle * Math.PI) / 180;\n\n // Calculate the angle range in radians\n const angleRange = endAngleRad - startAngleRad;\n\n // Calculate the angle step\n const angleStep = angleRange / (numPoints - 1);\n\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n\n return points;\n}\n\nexport async function curlyBraces(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n\n const { cssStyles } = node;\n\n const leftCurlyBracePoints = [\n ...generateCirclePoints(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n ];\n\n const rightCurlyBracePoints = [\n ...generateCirclePoints(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270),\n ];\n\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270),\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: 'none' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace('Z', '');\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace('Z', '');\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert('g', ':first-child');\n curlyBracesShape.insert(() => rectShape, ':first-child').attr('stroke-opacity', 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, ':first-child');\n curlyBracesShape.insert(() => rightCurlyBraceNode, ':first-child');\n curlyBracesShape.attr('class', 'text');\n\n if (cssStyles && node.look !== 'handDrawn') {\n curlyBracesShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n curlyBracesShape.selectAll('path').attr('style', nodeStyles);\n }\n\n curlyBracesShape.attr('transform', `translate(${radius - radius / 4}, 0)`);\n\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, curlyBracesShape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, rectPoints, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n createPathFromPoints,\n generateCirclePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function curvedTrapezoid(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 80,\n minHeight = 20;\n const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const totalWidth = w,\n totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90),\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n polygon.attr('transform', `translate(${-w / 2}, ${-h / 2})`);\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport const createCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n ].join(' ');\n};\nexport const createOuterCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n ].join(' ');\n};\nexport const createInnerCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(' ');\n};\nexport async function cylinder(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + node.padding, node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\n\n let cylinder: D3Selection | D3Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: 'none' }));\n\n cylinder = shapeSvg.insert(() => innerLine, ':first-child');\n cylinder = shapeSvg.insert(() => outerNode, ':first-child');\n cylinder.attr('class', 'basic label-container');\n if (cssStyles) {\n cylinder.attr('style', cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder = shapeSvg\n .insert('path', ':first-child')\n .attr('d', pathData)\n .attr('class', 'basic label-container')\n .attr('style', handleUndefinedAttr(cssStyles))\n .attr('style', nodeStyles);\n }\n\n cylinder.attr('label-offset-y', ry);\n cylinder.attr('transform', `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n\n updateNodeBounds(node, cylinder);\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n\n if (\n rx != 0 &&\n (Math.abs(x) < (node.width ?? 0) / 2 ||\n (Math.abs(x) == (node.width ?? 0) / 2 &&\n Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry))\n ) {\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function dividedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const rectOffset = h * 0.2;\n\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 2;\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const pts = [\n { x, y: y + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset },\n ];\n\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n\n const polygon = shapeSvg.insert(() => poly, ':first-child');\n polygon.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport async function doublecircle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const gap = 5;\n const outerRadius = bbox.width / 2 + halfPadding + gap;\n const innerRadius = bbox.width / 2 + halfPadding;\n\n let circleGroup;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n\n circleGroup = shapeSvg.insert('g', ':first-child');\n // circleGroup = circleGroup.insert(() => outerRoughNode, ':first-child');\n circleGroup\n .attr('class', handleUndefinedAttr(node.cssClasses))\n .attr('style', handleUndefinedAttr(cssStyles));\n\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert('g', ':first-child');\n\n const outerCircle = circleGroup.insert('circle', ':first-child');\n const innerCircle = circleGroup.insert('circle');\n circleGroup.attr('class', 'basic label-container').attr('style', nodeStyles);\n\n outerCircle\n .attr('class', 'outer-circle')\n .attr('style', nodeStyles)\n .attr('r', outerRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n\n innerCircle\n .attr('class', 'inner-circle')\n .attr('style', nodeStyles)\n .attr('r', innerRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n }\n\n updateNodeBounds(node, circleGroup);\n\n node.intersect = function (point) {\n log.info('DoubleCircle intersect', node, outerRadius, point);\n return intersect.circle(node, outerRadius, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function filledCircle(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = '';\n node.labelStyle = labelStyles;\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: 'solid' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n }\n\n const circleNode = rc.circle(0, 0, radius * 2, options);\n\n const filledCircle = shapeSvg.insert(() => circleNode, ':first-child');\n\n filledCircle.selectAll('path').attr('style', `fill: ${nodeBorder} !important;`);\n\n if (cssStyles && cssStyles.length > 0 && node.look !== 'handDrawn') {\n filledCircle.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n filledCircle.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, filledCircle);\n\n node.intersect = function (point) {\n log.info('filledCircle intersect', node, { radius, point });\n const pos = intersect.circle(node, radius, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { createPathFromPoints } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function flippedTriangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 },\n ];\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n const flippedTriangle = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-h / 2}, ${h / 2})`);\n\n if (cssStyles && node.look !== 'handDrawn') {\n flippedTriangle.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n flippedTriangle.selectChildren('path').attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, flippedTriangle);\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n\n node.intersect = function (point) {\n log.info('Triangle intersect', node, points, point);\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function forkJoin(\n parent: D3Selection,\n node: Node,\n { dir, config: { state, themeVariables } }: ShapeRenderOptions\n) {\n const { nodeStyles } = styles2String(node);\n node.label = '';\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n\n if (dir === 'LR') {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n\n const x = (-1 * width) / 2;\n const y = (-1 * height) / 2;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor,\n });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const roughNode = rc.rectangle(x, y, width, height, options);\n\n const shape = shapeSvg.insert(() => roughNode, ':first-child');\n\n if (cssStyles && node.look !== 'handDrawn') {\n shape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n shape.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, shape);\n const padding = state?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n createPathFromPoints,\n generateCirclePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function halfRoundedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 80,\n minHeight = 50;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n // label.attr(\n // 'transform',\n // `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n // );\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n log.info('Pill intersect', node, { radius, point });\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport const createHexagonPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n m: number\n): string => {\n return [\n `M${x + m},${y}`,\n `L${x + width - m},${y}`,\n `L${x + width},${y - height / 2}`,\n `L${x + width - m},${y - height}`,\n `L${x + m},${y - height}`,\n `L${x},${y - height / 2}`,\n 'Z',\n ].join(' ');\n};\n\nexport async function hexagon(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n let polygon: D3Selection | Awaited>;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createHexagonPathD(0, 0, w, h, m);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function hourglass(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = '';\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h },\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n polygon.attr('transform', `translate(${-w / 2}, ${-h / 2})`);\n\n updateNodeBounds(node, polygon);\n\n // label.attr('transform', `translate(${-bbox.width / 2}, ${(h/2)})`); // To transform text below hourglass shape\n\n node.intersect = function (point) {\n log.info('Pill intersect', node, { points });\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport { getIconSVG } from '../../icons.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { compileStyles, styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function icon(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables, flowchart } }: ShapeRenderOptions\n) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, 'icon-shape default');\n\n const topLabel = node.pos === 't';\n\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n\n const x = -width / 2;\n const y = -height / 2;\n\n const labelPadding = node.label ? 8 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: 'none', fill: 'none' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const iconNode = rc.rectangle(x, y, width, height, options);\n\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'transparent',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => iconNode, ':first-child');\n const outerShape = shapeSvg.insert(() => outerNode);\n\n if (node.icon) {\n const iconElem = shapeSvg.append('g');\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: '',\n })}`\n );\n const iconBBox = iconElem.node()!.getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n 'transform',\n `translate(${-iconWidth / 2 - iconX},${\n topLabel\n ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY\n : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY\n })`\n );\n iconElem.attr('style', `color: ${stylesMap.get('stroke') ?? nodeBorder};`);\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n if (!node.label) {\n return intersect.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height },\n ];\n }\n\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport { getIconSVG } from '../../icons.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { compileStyles, styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function iconCircle(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables, flowchart } }: ShapeRenderOptions\n) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, 'icon-shape default');\n\n const padding = 20;\n const labelPadding = node.label ? 8 : 0;\n\n const topLabel = node.pos === 't';\n\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const fill = stylesMap.get('fill');\n options.stroke = fill ?? mainBkg;\n\n const iconElem = shapeSvg.append('g');\n if (node.icon) {\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: '',\n })}`\n );\n }\n const iconBBox = iconElem.node()!.getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n\n const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n const iconNode = rc.circle(0, 0, diameter, options);\n\n const outerWidth = Math.max(diameter, bbox.width);\n const outerHeight = diameter + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'transparent',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => iconNode, ':first-child');\n const outerShape = shapeSvg.insert(() => outerNode);\n iconElem.attr(\n 'transform',\n `translate(${-iconWidth / 2 - iconX},${\n topLabel\n ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY\n : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY\n })`\n );\n iconElem.attr('style', `color: ${stylesMap.get('stroke') ?? nodeBorder};`);\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n const pos = intersect.rect(node, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport { getIconSVG } from '../../icons.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { compileStyles, styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function iconRounded(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables, flowchart } }: ShapeRenderOptions\n) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n 'icon-shape default'\n );\n\n const topLabel = node.pos === 't';\n\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n\n const x = -width / 2;\n const y = -height / 2;\n\n const labelPadding = node.label ? 8 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const fill = stylesMap.get('fill');\n options.stroke = fill ?? mainBkg;\n\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'transparent',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => iconNode, ':first-child').attr('class', 'icon-shape2');\n const outerShape = shapeSvg.insert(() => outerNode);\n\n if (node.icon) {\n const iconElem = shapeSvg.append('g');\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: '',\n })}`\n );\n const iconBBox = iconElem.node()!.getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n 'transform',\n `translate(${-iconWidth / 2 - iconX},${\n topLabel\n ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY\n : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY\n })`\n );\n iconElem.attr('style', `color: ${stylesMap.get('stroke') ?? nodeBorder};`);\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n if (!node.label) {\n return intersect.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height },\n ];\n }\n\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport { getIconSVG } from '../../icons.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { compileStyles, styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function iconSquare(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables, flowchart } }: ShapeRenderOptions\n) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n 'icon-shape default'\n );\n\n const topLabel = node.pos === 't';\n\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n\n const x = -width / 2;\n const y = -height / 2;\n\n const labelPadding = node.label ? 8 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const fill = stylesMap.get('fill');\n options.stroke = fill ?? mainBkg;\n\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'transparent',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => iconNode, ':first-child');\n const outerShape = shapeSvg.insert(() => outerNode);\n\n if (node.icon) {\n const iconElem = shapeSvg.append('g');\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: '',\n })}`\n );\n const iconBBox = iconElem.node()!.getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n 'transform',\n `translate(${-iconWidth / 2 - iconX},${\n topLabel\n ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY\n : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY\n })`\n );\n iconElem.attr('style', `color: ${stylesMap.get('stroke') ?? nodeBorder};`);\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n if (!node.label) {\n return intersect.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height },\n ];\n }\n\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function imageSquare(\n parent: D3Selection,\n node: Node,\n { config: { flowchart } }: ShapeRenderOptions\n) {\n const img = new Image();\n img.src = node?.img ?? '';\n await img.decode();\n\n const imageNaturalWidth = Number(img.naturalWidth.toString().replace('px', ''));\n const imageNaturalHeight = Number(img.naturalHeight.toString().replace('px', ''));\n node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n\n const { labelStyles } = styles2String(node);\n\n node.labelStyle = labelStyles;\n\n const defaultWidth = flowchart?.wrappingWidth;\n node.defaultWidth = flowchart?.wrappingWidth;\n\n const imageRawWidth = Math.max(\n node.label ? (defaultWidth ?? 0) : 0,\n node?.assetWidth ?? imageNaturalWidth\n );\n\n const imageWidth =\n node.constraint === 'on'\n ? node?.assetHeight\n ? node.assetHeight * node.imageAspectRatio\n : imageRawWidth\n : imageRawWidth;\n\n const imageHeight =\n node.constraint === 'on'\n ? imageWidth / node.imageAspectRatio\n : (node?.assetHeight ?? imageNaturalHeight);\n node.width = Math.max(imageWidth, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, 'image-shape default');\n\n const topLabel = node.pos === 't';\n\n const x = -imageWidth / 2;\n const y = -imageHeight / 2;\n\n const labelPadding = node.label ? 8 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n\n const outerWidth = Math.max(imageWidth, bbox.width);\n const outerHeight = imageHeight + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'none',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => imageNode, ':first-child');\n const outerShape = shapeSvg.insert(() => outerNode);\n\n if (node.img) {\n const image = shapeSvg.append('image');\n\n // Set the image attributes\n image.attr('href', node.img);\n image.attr('width', imageWidth);\n image.attr('height', imageHeight);\n image.attr('preserveAspectRatio', 'none');\n\n image.attr(\n 'transform',\n `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n );\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel\n ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2\n : imageHeight / 2 - bbox.height / 2 + labelPadding / 2\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n if (!node.label) {\n return intersect.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n ];\n } else {\n points = [\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n ];\n }\n\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\n// export const createInvertedTrapezoidPathD = (\n// x: number,\n// y: number,\n// width: number,\n// height: number\n// ): string => {\n// return [\n// `M${x + height / 6},${y}`,\n// `L${x + width - height / 6},${y}`,\n// `L${x + width + (2 * height) / 6},${y - height}`,\n// `L${x - (2 * height) / 6},${y - height}`,\n// 'Z',\n// ].join(' ');\n// };\n\nexport async function inv_trapezoid(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w + (3 * h) / 6, y: -h },\n { x: (-3 * h) / 6, y: -h },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n // const pathData = createInvertedTrapezoidPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node, RectOptions } from '../../types.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { userNodeOverrides, styles2String } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { Bounds, Point } from '../../../types.js';\n\nexport async function drawRect(\n parent: D3Selection,\n node: Node,\n options: RectOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n // console.log('IPI labelStyles:', labelStyles);\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n // log.info('IPI node = ', node);\n\n let rect;\n let { rx, ry } = node;\n const { cssStyles } = node;\n\n //use options rx, ry overrides if present\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const roughNode =\n rx || ry\n ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options)\n : rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n rect = shapeSvg.insert(() => roughNode, ':first-child');\n rect.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n } else {\n rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('rx', handleUndefinedAttr(rx))\n .attr('ry', handleUndefinedAttr(ry))\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n }\n\n updateNodeBounds(node, rect);\n\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n return intersect.rect(bounds, point);\n };\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions } from '../../types.js';\nimport { drawRect } from './drawRect.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function roundedRect(\n parent: D3Selection,\n node: Node\n) {\n const options = {\n rx: 5,\n ry: 5,\n classes: '',\n labelPaddingX: (node?.padding || 0) * 1,\n labelPaddingY: (node?.padding || 0) * 1,\n } as RectOptions;\n\n return drawRect(parent, node, options);\n}\n\nexport async function labelRect(parent: D3Selection, node: Node) {\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, 'label');\n\n // log.trace('Classes = ', node.class);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Hide the rect we are only after the label\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect.attr('width', totalWidth).attr('height', totalHeight);\n shapeSvg.attr('class', 'label edgeLabel');\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n // if (node.props) {\n // const propKeys = new Set(Object.keys(node.props));\n // if (node.props.borders) {\n // applyNodePropertyBorders(rect, node.borders, totalWidth, totalHeight);\n // propKeys.delete('borders');\n // }\n // propKeys.forEach((propKey) => {\n // log.warn(`Unknown node property ${propKey}`);\n // });\n // }\n\n updateNodeBounds(node, rect);\n // node.width = 1;\n // node.height = 1;\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function lean_left(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w + (3 * h) / 6, y: 0 },\n { x: w, y: -h },\n { x: -(3 * h) / 6, y: -h },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n // const pathData = createLeanLeftPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function lean_right(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: (-3 * h) / 6, y: 0 },\n { x: w, y: 0 },\n { x: w + (3 * h) / 6, y: -h },\n { x: 0, y: -h },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { getNodeClasses, updateNodeBounds } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport { createPathFromPoints } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function lightningBolt(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = '';\n node.labelStyle = labelStyles;\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n const { cssStyles } = node;\n const width = Math.max(35, node?.width ?? 0);\n const height = Math.max(35, node?.height ?? 0);\n const gap = 7;\n\n const points = [\n { x: width, y: 0 },\n { x: 0, y: height + gap / 2 },\n { x: width - 2 * gap, y: height + gap / 2 },\n { x: 0, y: 2 * height },\n { x: width, y: height - gap / 2 },\n { x: 2 * gap, y: height - gap / 2 },\n ];\n\n // @ts-expect-error shapeSvg d3 class is incorrect?\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const linePath = createPathFromPoints(points);\n const lineNode = rc.path(linePath, options);\n\n const lightningBolt = shapeSvg.insert(() => lineNode, ':first-child');\n\n if (cssStyles && node.look !== 'handDrawn') {\n lightningBolt.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n lightningBolt.selectAll('path').attr('style', nodeStyles);\n }\n\n lightningBolt.attr('transform', `translate(-${width / 2},${-height})`);\n\n updateNodeBounds(node, lightningBolt);\n\n node.intersect = function (point) {\n log.info('lightningBolt intersect', node, point);\n const pos = intersect.polygon(node, points, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport const createCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number,\n outerOffset: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n ].join(' ');\n};\nexport const createOuterCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number,\n outerOffset: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n ].join(' ');\n};\nexport const createInnerCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(' ');\n};\nexport async function linedCylinder(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + (node.padding ?? 0), node.height ?? 0);\n const outerOffset = h * 0.1; // 10% of height\n\n let cylinder: typeof shapeSvg | D3Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry, outerOffset);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, options);\n\n const innerLineEl = shapeSvg.insert(() => innerLine, ':first-child');\n innerLineEl.attr('class', 'line');\n cylinder = shapeSvg.insert(() => outerNode, ':first-child');\n cylinder.attr('class', 'basic label-container');\n if (cssStyles) {\n cylinder.attr('style', cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry, outerOffset);\n cylinder = shapeSvg\n .insert('path', ':first-child')\n .attr('d', pathData)\n .attr('class', 'basic label-container')\n .attr('style', handleUndefinedAttr(cssStyles))\n .attr('style', nodeStyles);\n }\n\n // find label and move it down\n cylinder.attr('label-offset-y', ry);\n cylinder.attr('transform', `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n\n updateNodeBounds(node, cylinder);\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n );\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n\n if (\n rx != 0 &&\n (Math.abs(x) < (node.width ?? 0) / 2 ||\n (Math.abs(x) == (node.width ?? 0) / 2 &&\n Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry))\n ) {\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n generateFullSineWavePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function linedWaveEdgedRect(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2 - (w / 2) * 0.1, y: -finalH / 2 },\n { x: -w / 2 - (w / 2) * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - (w / 2) * 0.1,\n finalH / 2,\n w / 2 + (w / 2) * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + (w / 2) * 0.1, y: -finalH / 2 },\n { x: -w / 2 - (w / 2) * 0.1, y: -finalH / 2 },\n { x: -w / 2, y: -finalH / 2 },\n { x: -w / 2, y: (finalH / 2) * 1.1 },\n { x: -w / 2, y: -finalH / 2 },\n ];\n\n const poly = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n\n const waveEdgeRect = shapeSvg.insert(() => poly, ':first-child');\n\n waveEdgeRect.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', nodeStyles);\n }\n\n waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) + ((w / 2) * 0.1) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, getNodeClasses, updateNodeBounds, createPathFromPoints } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function multiRect(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y },\n { x, y },\n { x, y: y + rectOffset },\n ];\n\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y },\n { x, y },\n ];\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, { ...options, fill: 'none' });\n\n const multiRect = shapeSvg.insert(() => innerNode, ':first-child');\n multiRect.insert(() => outerNode, ':first-child');\n\n multiRect.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n multiRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n multiRect.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, multiRect);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, outerPathPoints, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n createPathFromPoints,\n generateFullSineWavePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function multiWaveEdgedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset = 5;\n\n const { cssStyles } = node;\n\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset,\n y + finalH + rectOffset,\n x + w - rectOffset,\n y + finalH + rectOffset,\n waveAmplitude,\n 0.8\n );\n\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + finalH + rectOffset },\n ...wavePoints,\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y },\n { x, y },\n { x, y: y + rectOffset },\n ];\n\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y },\n { x, y },\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, options);\n\n const shape = shapeSvg.insert(() => outerNode, ':first-child');\n shape.insert(() => innerNode);\n\n shape.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n shape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n shape.selectAll('path').attr('style', nodeStyles);\n }\n\n shape.attr('transform', `translate(0,${-waveAmplitude / 2})`);\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, shape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, outerPathPoints, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\nimport { getConfig } from '../../../config.js';\nimport { getEffectiveHtmlLabels } from '../../../config.js';\n\nexport async function note(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig());\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n\n // add the rect\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n fill: themeVariables.noteBkgColor,\n stroke: themeVariables.noteBorderColor,\n });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n const rect = shapeSvg.insert(() => noteShapeNode, ':first-child');\n rect.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n rect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n rect.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\nimport type { Bounds, Point } from '../../../types.js';\n\nexport const createDecisionBoxPathD = (x: number, y: number, size: number): string => {\n return [\n `M${x + size / 2},${y}`,\n `L${x + size},${y - size / 2}`,\n `L${x + size / 2},${y - size}`,\n `L${x},${y - size / 2}`,\n 'Z',\n ].join(' ');\n};\n\nexport async function question(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const adjustment = 0.5;\n\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-s / 2 + adjustment}, ${s / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n polygon.attr('transform', `translate(${-s / 2 + adjustment}, ${s / 2})`);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n const s = bounds.width;\n\n // Define polygon points\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n // Calculate the intersection point\n const res = intersect.polygon(bounds, points, point);\n\n return { x: res.x - 0.5, y: res.y - 0.5 }; // Adjusted result\n };\n\n node.intersect = function (point) {\n // @ts-ignore TODO fix this (KNSV)\n return this.calcIntersect(node as Bounds, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function rect_left_inv_arrow(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n\n const x = -w / 2;\n const y = -h / 2;\n const notch = y / 2;\n\n const points = [\n { x: x + notch, y },\n { x: x, y: 0 },\n { x: x + notch, y: -y },\n { x: -x, y: -y },\n { x: -x, y },\n ];\n\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => roughNode, ':first-child');\n\n polygon.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectAll('path').attr('style', cssStyles);\n }\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectAll('path').attr('style', nodeStyles);\n }\n\n polygon.attr('transform', `translate(${-notch / 2},0)`);\n\n label.attr(\n 'transform',\n `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import type { Node } from '../../types.js';\nimport { select } from 'd3';\nimport { updateNodeBounds } from './util.js';\nimport createLabel from '../createLabel.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { log } from '../../../logger.js';\nimport type { D3Selection } from '../../../types.js';\nimport { getEffectiveHtmlLabels } from '../../../config.js';\n\nexport async function rectWithTitle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n let classes;\n if (!node.cssClasses) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.cssClasses;\n }\n\n // Add outer g element\n const shapeSvg = parent\n // @ts-ignore - d3 typings are not correct\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const g = shapeSvg.insert('g');\n\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', nodeStyles);\n\n const description = node.description;\n\n const title = node.label;\n\n const text = await createLabel(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', description);\n const textRows = description || [];\n const titleBox = text.getBBox();\n const descr = await createLabel(\n label,\n Array.isArray(textRows) ? textRows.join('
') : textRows,\n node.labelStyle,\n true,\n true\n );\n\n //if (evaluate(getConfig()?.flowchart?.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n // }\n\n const halfPadding = (node.padding || 0) / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node()!.getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect;\n let innerLine;\n if (node.look === 'handDrawn') {\n // @ts-ignore No typings for rough\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n\n innerLine = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughLine;\n }, ':first-child');\n rect = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughNode;\n }, ':first-child');\n } else {\n rect = g.insert('rect', ':first-child');\n innerLine = g.insert('line');\n rect\n .attr('class', 'outer title-state')\n .attr('style', nodeStyles)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + (node.padding || 0))\n .attr('height', bbox.height + (node.padding || 0));\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport async function roundedRect(\n parent: D3Selection,\n node: Node\n) {\n const options = {\n rx: 5,\n ry: 5,\n classes: '',\n labelPaddingX: (node?.padding || 0) * 1,\n labelPaddingY: (node?.padding || 0) * 1,\n } as RectOptions;\n\n return drawRect(parent, node, options);\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport async function shadedProcess(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = node?.padding ?? 0;\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x, y },\n { x: x + w + 8, y },\n { x: x + w + 8, y: y + h },\n { x: x - 8, y: y + h },\n { x: x - 8, y: y },\n { x, y },\n { x, y: y + h },\n ];\n\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n\n const rect = shapeSvg.insert(() => roughNode, ':first-child');\n\n rect.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n\n if (nodeStyles && node.look !== 'handDrawn') {\n rect.selectAll('path').attr('style', nodeStyles);\n }\n\n if (cssStyles && node.look !== 'handDrawn') {\n rect.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function slopedRect(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 },\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n polygon.attr('transform', `translate(0, ${h / 4})`);\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport async function squareRect(parent: D3Selection, node: Node) {\n const options = {\n rx: 0,\n ry: 0,\n classes: '',\n labelPaddingX: node.labelPaddingX ?? (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1,\n } as RectOptions;\n return drawRect(parent, node, options);\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n generateCirclePoints,\n createPathFromPoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport const createStadiumPathD = (\n x: number,\n y: number,\n totalWidth: number,\n totalHeight: number\n) => {\n const radius = totalHeight / 2;\n return [\n 'M',\n x + radius,\n y, // Move to the start of the top-left arc\n 'H',\n x + totalWidth - radius, // Draw horizontal line to the start of the top-right arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius, // Draw top-right arc\n 'H',\n x, // Draw horizontal line to the start of the bottom-right arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight, // Draw bottom-right arc\n 'H',\n x + radius, // Draw horizontal line to the start of the bottom-left arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + radius, // Draw bottom-left arc\n 'Z', // Close the path\n ].join(' ');\n};\n\nexport async function stadium(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n const radius = h / 2;\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2 + radius, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2 - radius, 0, radius, 50, 270, 450),\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport async function state(parent: D3Selection, node: Node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: 'flowchart-node',\n } as RectOptions;\n return drawRect(parent, node, options);\n}\n", "import rough from 'roughjs';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function stateEnd(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder } = themeVariables;\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const roughNode = rc.circle(0, 0, 14, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2,\n });\n const innerFill = stateBorder ?? nodeBorder;\n const roughInnerNode = rc.circle(0, 0, 5, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: 'solid',\n });\n const circle = shapeSvg.insert(() => roughNode, ':first-child');\n circle.insert(() => roughInnerNode);\n\n if (cssStyles) {\n circle.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles) {\n circle.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { solidStateFill } from './handDrawnShapeStyles.js';\nimport { updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function stateStart(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const { lineColor } = themeVariables;\n\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let circle: D3Selection | D3Selection;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle = shapeSvg.insert(() => roughNode);\n // center the circle around its coordinate\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n } else {\n circle = shapeSvg.insert('circle', ':first-child');\n // center the circle around its coordinate\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n }\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport const createSubroutinePathD = (\n x: number,\n y: number,\n width: number,\n height: number\n): string => {\n const offset = 8;\n return [\n `M${x - offset},${y}`,\n `H${x + width + offset}`,\n `V${y + height}`,\n `H${x - offset}`,\n `V${y}`,\n 'M',\n x,\n y,\n 'H',\n x + width,\n 'V',\n y + height,\n 'H',\n x,\n 'Z',\n ].join(' ');\n};\n\nexport async function subroutine(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = (node?.padding || 0) / 2;\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n const l1 = rc.line(x, y, x, y + h, options);\n const l2 = rc.line(x + w, y, x + w, y + h, options);\n\n shapeSvg.insert(() => l1, ':first-child');\n shapeSvg.insert(() => l2, ':first-child');\n const rect = shapeSvg.insert(() => roughNode, ':first-child');\n const { cssStyles } = node;\n rect.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr('style', nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, getNodeClasses, updateNodeBounds, createPathFromPoints } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function taggedRect(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const tagWidth = 0.2 * h;\n const tagHeight = 0.2 * h;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h },\n ];\n\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight },\n ];\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: 'solid' });\n\n const taggedRect = shapeSvg.insert(() => tagNode, ':first-child');\n taggedRect.insert(() => rectNode, ':first-child');\n\n taggedRect.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n taggedRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n taggedRect.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, taggedRect);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, rectPoints, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n generateFullSineWavePoints,\n createPathFromPoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function taggedWaveEdgedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2 - (w / 2) * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - (w / 2) * 0.1,\n finalH / 2,\n w / 2 + (w / 2) * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n\n { x: w / 2 + (w / 2) * 0.1, y: -finalH / 2 },\n { x: -w / 2 - (w / 2) * 0.1, y: -finalH / 2 },\n ];\n\n const x = -w / 2 + (w / 2) * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.4 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.3,\n x + w - tagWidth,\n (y + h) * 1.5,\n -h * 0.03,\n 0.5\n ),\n ];\n\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: 'solid',\n });\n\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, ':first-child');\n waveEdgeRect.insert(() => waveEdgeRectNode, ':first-child');\n\n waveEdgeRect.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', nodeStyles);\n }\n\n waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function text(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = Math.max(bbox.width + node.padding, node?.width || 0);\n const totalHeight = Math.max(bbox.height + node.padding, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'text')\n .attr('style', nodeStyles)\n .attr('rx', 0)\n .attr('ry', 0)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, getNodeClasses, updateNodeBounds } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport const createCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n};\n\nexport const createOuterCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`,\n ].join(' ');\n};\nexport const createInnerCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(' ');\n};\n\nexport async function tiltedCylinder(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const labelPadding = node.look === 'neo' ? halfPadding * 2 : halfPadding;\n const h = bbox.height + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = bbox.width + rx + labelPadding;\n const { cssStyles } = node;\n\n let cylinder: D3Selection | D3Selection;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: 'none' }));\n cylinder = shapeSvg.insert(() => innerLine, ':first-child');\n cylinder = shapeSvg.insert(() => outerNode, ':first-child');\n cylinder.attr('class', 'basic label-container');\n if (cssStyles) {\n cylinder.attr('style', cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder = shapeSvg\n .insert('path', ':first-child')\n .attr('d', pathData)\n .attr('class', 'basic label-container')\n .attr('style', handleUndefinedAttr(cssStyles))\n .attr('style', nodeStyles);\n cylinder.attr('class', 'basic label-container');\n\n if (cssStyles) {\n cylinder.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles) {\n cylinder.selectAll('path').attr('style', nodeStyles);\n }\n }\n\n cylinder.attr('label-offset-x', rx);\n cylinder.attr('transform', `translate(${-w / 2}, ${h / 2} )`);\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, cylinder);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n\n if (\n ry != 0 &&\n (Math.abs(y) < (node.height ?? 0) / 2 ||\n (Math.abs(y) == (node.height ?? 0) / 2 &&\n Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx))\n ) {\n let x = rx * rx * (1 - (y * y) / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n\n pos.x += x;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\n// export const createTrapezoidPathD = (\n// x: number,\n// y: number,\n// width: number,\n// height: number\n// ): string => {\n// return [\n// `M${x - (2 * height) / 6},${y}`,\n// `L${x + width + (2 * height) / 6},${y}`,\n// `L${x + width - height / 6},${y - height}`,\n// `L${x + height / 6},${y - height}`,\n// 'Z',\n// ].join(' ');\n// };\n\nexport async function trapezoid(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-3 * h) / 6, y: 0 },\n { x: w + (3 * h) / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function trapezoidalPentagon(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 60,\n minHeight = 20;\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: (-w / 2) * 0.8, y: -h / 2 },\n { x: (w / 2) * 0.8, y: -h / 2 },\n { x: w / 2, y: (-h / 2) * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: (-h / 2) * 0.6 },\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { createPathFromPoints } from './util.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport type { D3Selection } from '../../../types.js';\nimport { getEffectiveHtmlLabels } from '../../../config.js';\n\nexport async function triangle(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig());\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h },\n ];\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n const polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-h / 2}, ${h / 2})`);\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n\n node.intersect = function (point) {\n log.info('Triangle intersect', node, points, point);\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n generateFullSineWavePoints,\n createPathFromPoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function waveEdgedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n\n // To maintain minimum width\n const minWidth = 70;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 },\n ];\n\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, ':first-child');\n\n waveEdgeRect.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', nodeStyles);\n }\n\n waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n createPathFromPoints,\n generateFullSineWavePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function waveRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const minWidth = 100; // Minimum width\n const minHeight = 50; // Minimum height\n\n const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n\n const aspectRatio = baseWidth / baseHeight;\n\n let w = baseWidth;\n let h = baseHeight;\n\n if (w > h * aspectRatio) {\n h = w / aspectRatio;\n } else {\n w = h * aspectRatio;\n }\n\n w = Math.max(w, minWidth);\n h = Math.max(h, minHeight);\n\n const waveAmplitude = Math.min(h * 0.2, h / 4);\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1),\n ];\n\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n\n const waveRect = shapeSvg.insert(() => waveRectNode, ':first-child');\n\n waveRect.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n waveRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n waveRect.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, waveRect);\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, getNodeClasses, updateNodeBounds } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function windowPane(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset },\n ];\n\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const no = rc.path(path, options);\n\n const windowPane = shapeSvg.insert(() => no, ':first-child');\n windowPane.attr('transform', `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n\n windowPane.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n windowPane.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n windowPane.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, windowPane);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, outerPathPoints, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { userNodeOverrides, styles2String } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { drawRect } from './drawRect.js';\nimport { getConfig } from '../../../config.js';\nimport type { EntityNode } from '../../../diagrams/er/erTypes.js';\nimport { createText } from '../../createText.js';\nimport { evaluate, parseGenericTypes } from '../../../diagrams/common/common.js';\nimport { select } from 'd3';\nimport { calculateTextWidth } from '../../../utils.js';\nimport type { MermaidConfig } from '../../../config.type.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function erBox(parent: D3Selection, node: Node) {\n // Treat node as entityNode for certain entityNode checks\n const entityNode = node as unknown as EntityNode;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\n\n // Background shapes are drawn to fill in the background color and cover up the ER diagram edge markers.\n // Draw background shape once.\n if (node.look === 'handDrawn') {\n const { themeVariables } = getConfig();\n const { background } = themeVariables;\n const backgroundNode = {\n ...node,\n id: node.id + '-background',\n look: 'default',\n cssStyles: ['stroke: none', `fill: ${background}`],\n };\n await erBox(parent, backgroundNode);\n }\n\n const config = getConfig();\n node.useHtmlLabels = config.htmlLabels;\n let PADDING = config.er?.diagramPadding ?? 10;\n let TEXT_PADDING = config.er?.entityPadding ?? 6;\n\n const { cssStyles } = node;\n const { labelStyles, nodeStyles } = styles2String(node);\n\n // Draw rect if no attributes are found\n if (entityNode.attributes.length === 0 && node.label) {\n const options = {\n rx: 0,\n ry: 0,\n labelPaddingX: PADDING,\n labelPaddingY: PADDING * 1.5,\n classes: '',\n };\n // Set minimum width\n if (\n calculateTextWidth(node.label, config) + options.labelPaddingX * 2 <\n config.er!.minEntityWidth!\n ) {\n node.width = config.er!.minEntityWidth;\n }\n const shapeSvg = await drawRect(parent, node, options);\n\n // drawRect doesn't center non-htmlLabels correctly as of now, so translate label\n if (!evaluate(config.htmlLabels)) {\n const textElement = shapeSvg.select('text');\n const bbox = (textElement.node() as SVGTextElement)?.getBBox();\n textElement.attr('transform', `translate(${-bbox.width / 2}, 0)`);\n }\n return shapeSvg;\n }\n\n if (!config.htmlLabels) {\n PADDING *= 1.25;\n TEXT_PADDING *= 1.25;\n }\n\n let cssClasses = getNodeClasses(node);\n if (!cssClasses) {\n cssClasses = 'node default';\n }\n\n const shapeSvg = parent\n // @ts-ignore Ignore .insert on SVGAElement\n .insert('g')\n .attr('class', cssClasses)\n .attr('id', node.domId || node.id);\n\n const nameBBox = await addText(shapeSvg, node.label ?? '', config, 0, 0, ['name'], labelStyles);\n nameBBox.height += TEXT_PADDING;\n let yOffset = 0;\n const yOffsets = [];\n const rows = [];\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeysWidth = 0;\n let maxCommentWidth = 0;\n let keysPresent = true;\n let commentPresent = true;\n for (const attribute of entityNode.attributes) {\n const typeBBox = await addText(\n shapeSvg,\n attribute.type,\n config,\n 0,\n yOffset,\n ['attribute-type'],\n labelStyles\n );\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n const nameBBox = await addText(\n shapeSvg,\n attribute.name,\n config,\n 0,\n yOffset,\n ['attribute-name'],\n labelStyles\n );\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width + PADDING);\n const keysBBox = await addText(\n shapeSvg,\n attribute.keys.join(),\n config,\n 0,\n yOffset,\n ['attribute-keys'],\n labelStyles\n );\n maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n const commentBBox = await addText(\n shapeSvg,\n attribute.comment,\n config,\n 0,\n yOffset,\n ['attribute-comment'],\n labelStyles\n );\n maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n\n const rowHeight =\n Math.max(typeBBox.height, nameBBox.height, keysBBox.height, commentBBox.height) +\n TEXT_PADDING;\n rows.push({ yOffset, rowHeight });\n yOffset += rowHeight;\n }\n let totalWidthSections = 4;\n\n if (maxKeysWidth <= PADDING) {\n keysPresent = false;\n maxKeysWidth = 0;\n totalWidthSections--;\n }\n if (maxCommentWidth <= PADDING) {\n commentPresent = false;\n maxCommentWidth = 0;\n totalWidthSections--;\n }\n\n const shapeBBox = shapeSvg.node()!.getBBox();\n // Add extra padding to attribute components to accommodate for difference in width\n if (\n nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) >\n 0\n ) {\n const difference =\n nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n maxTypeWidth += difference / totalWidthSections;\n maxNameWidth += difference / totalWidthSections;\n if (maxKeysWidth > 0) {\n maxKeysWidth += difference / totalWidthSections;\n }\n if (maxCommentWidth > 0) {\n maxCommentWidth += difference / totalWidthSections;\n }\n }\n\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n let totalShapeBBoxHeight = 0;\n if (rows.length > 0) {\n totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0);\n }\n const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0);\n const x = -w / 2;\n const y = -h / 2;\n\n // Translate attribute text labels\n shapeSvg.selectAll('g:not(:first-child)').each((_: any, i: number, nodes: any) => {\n const text = select(nodes[i]);\n const transform = text.attr('transform');\n let translateX = 0;\n let translateY = 0;\n\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n if (text.attr('class').includes('attribute-name')) {\n translateX += maxTypeWidth;\n } else if (text.attr('class').includes('attribute-keys')) {\n translateX += maxTypeWidth + maxNameWidth;\n } else if (text.attr('class').includes('attribute-comment')) {\n translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n }\n }\n }\n\n text.attr(\n 'transform',\n `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n );\n });\n // Center the name\n shapeSvg\n .select('.name')\n .attr('transform', 'translate(' + -nameBBox.width / 2 + ', ' + (y + TEXT_PADDING / 2) + ')');\n\n // Draw shape\n const roughRect = rc.rectangle(x, y, w, h, options);\n const rect = shapeSvg.insert(() => roughRect, ':first-child').attr('style', cssStyles!.join(''));\n\n const { themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder } = themeVariables;\n\n yOffsets.push(0);\n // Draw row rects\n for (const [i, row] of rows.entries()) {\n const contentRowIndex = i + 1; // Adjusted index to skip the header (name) row\n const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0;\n const roughRect = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, {\n ...options,\n fill: isEven ? rowEven : rowOdd,\n stroke: nodeBorder,\n });\n shapeSvg\n .insert(() => roughRect, 'g.label')\n .attr('style', cssStyles!.join(''))\n .attr('class', `row-rect-${isEven ? 'even' : 'odd'}`);\n }\n\n // Draw divider lines\n // Name line\n let roughLine = rc.line(x, nameBBox.height + y, w + x, nameBBox.height + y, options);\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n // First line\n roughLine = rc.line(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, options);\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n // Second line\n if (keysPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n }\n // Third line\n if (commentPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n }\n\n // Attribute divider lines\n for (const yOffset of yOffsets) {\n roughLine = rc.line(\n x,\n nameBBox.height + y + yOffset,\n w + x,\n nameBBox.height + y + yOffset,\n options\n );\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n }\n\n updateNodeBounds(node, rect);\n\n if (nodeStyles && node.look !== 'handDrawn') {\n const allStyle = nodeStyles.split(';');\n const strokeStyles = allStyle\n ?.filter((e) => {\n return e.includes('stroke');\n })\n ?.map((s) => `${s}`)\n .join('; ');\n shapeSvg.selectAll('path').attr('style', strokeStyles ?? '');\n shapeSvg.selectAll('.row-rect-even path').attr('style', nodeStyles);\n }\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n return shapeSvg;\n}\n\n// Helper function to add label text g with translate position and style\nasync function addText(\n shapeSvg: D3Selection,\n labelText: string,\n config: MermaidConfig,\n translateX = 0,\n translateY = 0,\n classes: string[] = [],\n style = ''\n) {\n const label = shapeSvg\n .insert('g')\n .attr('class', `label ${classes.join(' ')}`)\n .attr('transform', `translate(${translateX}, ${translateY})`)\n .attr('style', style);\n\n // Return types need to be parsed\n if (labelText !== parseGenericTypes(labelText)) {\n labelText = parseGenericTypes(labelText);\n // Work around\n labelText = labelText.replaceAll('<', '<').replaceAll('>', '>');\n }\n\n const text = label.node()!.appendChild(\n await createText(\n label,\n labelText,\n {\n width: calculateTextWidth(labelText, config) + 100,\n style,\n useHtmlLabels: config.htmlLabels,\n },\n config\n )\n );\n // Undo work around now that text passed through correctly\n if (labelText.includes('<') || labelText.includes('>')) {\n let child = text.children[0];\n child.textContent = child.textContent.replaceAll('<', '<').replaceAll('>', '>');\n while (child.childNodes[0]) {\n child = child.childNodes[0];\n // Replace its text content\n child.textContent = child.textContent.replaceAll('<', '<').replaceAll('>', '>');\n }\n }\n\n let bbox = text.getBBox();\n if (evaluate(config.htmlLabels)) {\n const div = text.children[0];\n div.style.textAlign = 'start';\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n return bbox;\n}\n", "import { select } from 'd3';\nimport { getConfig } from '../../config.js';\nimport { getNodeClasses } from '../../rendering-util/rendering-elements/shapes/util.js';\nimport { calculateTextWidth, decodeEntities } from '../../utils.js';\nimport type { ClassMember, ClassNode } from './classTypes.js';\nimport { sanitizeText } from '../../diagram-api/diagramAPI.js';\nimport { createText } from '../../rendering-util/createText.js';\nimport { evaluate, hasKatex } from '../common/common.js';\nimport type { Node } from '../../rendering-util/types.js';\nimport type { MermaidConfig } from '../../config.type.js';\nimport type { D3Selection } from '../../types.js';\n\n// Creates the shapeSvg and inserts text\nexport async function textHelper(\n parent: D3Selection,\n node: any,\n config: MermaidConfig,\n useHtmlLabels: boolean,\n GAP = config.class!.padding ?? 12\n) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent\n // @ts-ignore: Ignore error for using .insert on SVGAElement\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId || node.id);\n\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n\n annotationGroup = shapeSvg.insert('g').attr('class', 'annotation-group text');\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText(annotationGroup, { text: `\u00AB${annotation}\u00BB` } as unknown as ClassMember, 0);\n\n const annotationGroupBBox = annotationGroup.node()!.getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n\n labelGroup = shapeSvg.insert('g').attr('class', 'label-group text');\n await addText(labelGroup, node, 0, ['font-weight: bolder']);\n const labelGroupBBox = labelGroup.node()!.getBBox();\n labelGroupHeight = labelGroupBBox.height;\n\n membersGroup = shapeSvg.insert('g').attr('class', 'members-group text');\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node()!.getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n\n methodsGroup = shapeSvg.insert('g').attr('class', 'methods-group text');\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n\n let bbox = shapeSvg.node()!.getBBox();\n\n // Center annotation\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node()!.getBBox();\n annotationGroup.attr('transform', `translate(${-annotationGroupBBox.width / 2})`);\n }\n\n // Adjust label\n labelGroup.attr('transform', `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n\n bbox = shapeSvg.node()!.getBBox();\n\n membersGroup.attr(\n 'transform',\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node()!.getBBox();\n methodsGroup.attr(\n 'transform',\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n\n bbox = shapeSvg.node()!.getBBox();\n\n return { shapeSvg, bbox };\n}\n\n// Modified version of labelHelper() to help create and place text for classes\nasync function addText(\n parentGroup: D3Selection,\n node: Node | ClassNode | ClassMember,\n yOffset: number,\n styles: string[] = []\n) {\n const textEl = parentGroup.insert('g').attr('class', 'label').attr('style', styles.join('; '));\n const config = getConfig();\n let useHtmlLabels =\n 'useHtmlLabels' in node ? node.useHtmlLabels : (evaluate(config.htmlLabels) ?? true);\n\n let textContent = '';\n // Support regular node type (.label) and classNodes (.text)\n if ('text' in node) {\n textContent = node.text;\n } else {\n textContent = node.label!;\n }\n\n // createText() will cause unwanted behavior because of classDiagram syntax so workarounds are needed\n\n if (!useHtmlLabels && textContent.startsWith('\\\\')) {\n textContent = textContent.substring(1);\n }\n\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n\n const text = await createText(\n textEl,\n sanitizeText(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50, // Add room for error when splitting text into multiple lines\n classes: 'markdown-node-label',\n useHtmlLabels,\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n\n if (!useHtmlLabels) {\n // Undo font-weight normal\n if (styles.includes('font-weight: bolder')) {\n select(text).selectAll('tspan').attr('font-weight', '');\n }\n\n numberOfLines = text.children.length;\n\n const textChild = text.children[0];\n if (text.textContent === '' || text.textContent.includes('>')) {\n textChild.textContent =\n textContent[0] +\n textContent.substring(1).replaceAll('>', '>').replaceAll('<', '<').trim();\n\n // Text was improperly removed due to spaces (preserve one space if present)\n const preserveSpace = textContent[1] === ' ';\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + ' ' + textChild.textContent.substring(1);\n }\n }\n\n // To support empty boxes\n if (textChild.textContent === 'undefined') {\n textChild.textContent = '';\n }\n\n // Get the bounding box after the text update\n bbox = text.getBBox();\n } else {\n const div = text.children[0];\n const dv = select(text);\n\n numberOfLines = div.innerHTML.split('
').length;\n // Katex math support\n if (div.innerHTML.includes('')) {\n numberOfLines += div.innerHTML.split('').length - 1;\n }\n\n // Support images\n const images = div.getElementsByTagName('img');\n if (images) {\n const noImgText = textContent.replace(/]*>/g, '').trim() === '';\n await Promise.all(\n [...images].map(\n (img) =>\n new Promise((res) => {\n function setupImage() {\n img.style.display = 'flex';\n img.style.flexDirection = 'column';\n\n if (noImgText) {\n // default size if no text\n const bodyFontSize =\n config.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + 'px';\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = '100%';\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener('error', setupImage);\n img.addEventListener('load', setupImage);\n })\n )\n );\n }\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center text and offset by yOffset\n textEl.attr('transform', 'translate(0,' + (-bbox.height / (2 * numberOfLines) + yOffset) + ')');\n return bbox.height;\n}\n", "import { updateNodeBounds } from './util.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport { select } from 'd3';\nimport type { Node } from '../../types.js';\nimport type { ClassNode } from '../../../diagrams/class/classTypes.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport intersect from '../intersect/index.js';\nimport { textHelper } from '../../../diagrams/class/shapeUtil.js';\nimport { evaluate } from '../../../diagrams/common/common.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function classBox(parent: D3Selection, node: Node) {\n const config = getConfig();\n const PADDING = config.class!.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n // Treat node as classNode\n const classNode = node as unknown as ClassNode;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n node.cssStyles = classNode.styles || '';\n\n const styles = classNode.styles?.join(';') || nodeStyles || '';\n\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll('!important', '').split(';');\n }\n\n const renderExtraBox =\n classNode.members.length === 0 &&\n classNode.methods.length === 0 &&\n !config.class?.hideEmptyMembersBox;\n\n // Setup roughjs\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const w = bbox.width;\n let h = bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n const x = -w / 2;\n const y = -h / 2;\n\n // Create and center rectangle\n const roughRect = rc.rectangle(\n x - PADDING,\n y -\n PADDING -\n (renderExtraBox\n ? PADDING\n : classNode.members.length === 0 && classNode.methods.length === 0\n ? -PADDING / 2\n : 0),\n w + 2 * PADDING,\n h +\n 2 * PADDING +\n (renderExtraBox\n ? PADDING * 2\n : classNode.members.length === 0 && classNode.methods.length === 0\n ? -PADDING\n : 0),\n options\n );\n\n const rect = shapeSvg.insert(() => roughRect, ':first-child');\n rect.attr('class', 'basic label-container');\n const rectBBox = rect.node()!.getBBox();\n\n // Rect is centered so now adjust labels.\n // TODO: Fix types\n shapeSvg.selectAll('.text').each((_: any, i: number, nodes: any) => {\n const text = select(nodes[i]);\n // Get the current transform attribute\n const transform = text.attr('transform');\n // Initialize variables for the translation values\n let translateY = 0;\n // Check if the transform attribute exists\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n // Add to the y value\n let newTranslateY =\n translateY +\n y +\n PADDING -\n (renderExtraBox\n ? PADDING\n : classNode.members.length === 0 && classNode.methods.length === 0\n ? -PADDING / 2\n : 0);\n if (!useHtmlLabels) {\n // Fix so non html labels are better centered.\n // BBox of text seems to be slightly different when calculated so we offset\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (\n text.attr('class').includes('label-group') ||\n text.attr('class').includes('annotation-group')\n ) {\n newTranslateX = -text.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll('text').each(function (_: any, i: number, nodes: any) {\n if (window.getComputedStyle(nodes[i]).textAnchor === 'middle') {\n newTranslateX = 0;\n }\n });\n }\n // Set the updated transform attribute\n text.attr('transform', `translate(${newTranslateX}, ${newTranslateY})`);\n });\n\n // Render divider lines.\n const annotationGroupHeight =\n (shapeSvg.select('.annotation-group').node() as SVGGraphicsElement).getBBox().height -\n (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight =\n (shapeSvg.select('.label-group').node() as SVGGraphicsElement).getBBox().height -\n (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight =\n (shapeSvg.select('.members-group').node() as SVGGraphicsElement).getBBox().height -\n (renderExtraBox ? PADDING / 2 : 0) || 0;\n // First line (under label)\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr('class', 'divider').attr('style', styles);\n }\n\n // Second line (under members)\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + PADDING + GAP * 2,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr('class', 'divider').attr('style', styles);\n }\n\n /// Apply styles ///\n if (classNode.look !== 'handDrawn') {\n shapeSvg.selectAll('path').attr('style', styles);\n }\n // Apply other styles like stroke-width and stroke-dasharray to border (not background of shape)\n rect.select(':nth-child(2)').attr('style', styles);\n // Divider lines\n shapeSvg.selectAll('.divider').select('path').attr('style', styles);\n // Text elements\n if (node.labelStyle) {\n shapeSvg.selectAll('span').attr('style', node.labelStyle);\n } else {\n shapeSvg.selectAll('span').attr('style', styles);\n }\n // SVG text uses fill not color\n if (!useHtmlLabels) {\n // We just want to apply color to the text\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace('color', 'fill');\n shapeSvg.selectAll('tspan').attr('style', colorStyle);\n } else if (labelStyles) {\n const match = colorRegex.exec(labelStyles);\n if (match) {\n const colorStyle = match[0].replace('color', 'fill');\n shapeSvg.selectAll('tspan').attr('style', colorStyle);\n }\n }\n }\n\n updateNodeBounds(node, rect);\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { getNodeClasses, updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { calculateTextWidth, decodeEntities } from '../../../utils.js';\nimport { getConfig, sanitizeText } from '../../../diagram-api/diagramAPI.js';\nimport { createText } from '../../createText.js';\nimport { select } from 'd3';\nimport type { Requirement, Element } from '../../../diagrams/requirement/types.js';\n\nexport async function requirementBox(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const requirementNode = node as unknown as Requirement;\n const elementNode = node as unknown as Element;\n const padding = 20;\n const gap = 20;\n const isRequirementNode = 'verifyMethod' in node;\n const classes = getNodeClasses(node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId ?? node.id);\n\n let typeHeight;\n if (isRequirementNode) {\n typeHeight = await addText(\n shapeSvg,\n `<<${requirementNode.type}>>`,\n 0,\n node.labelStyle\n );\n } else {\n typeHeight = await addText(shapeSvg, '<<Element>>', 0, node.labelStyle);\n }\n\n let accumulativeHeight = typeHeight;\n const nameHeight = await addText(\n shapeSvg,\n requirementNode.name,\n accumulativeHeight,\n node.labelStyle + '; font-weight: bold;'\n );\n accumulativeHeight += nameHeight + gap;\n\n // Requirement\n if (isRequirementNode) {\n const idHeight = await addText(\n shapeSvg,\n `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n\n accumulativeHeight += idHeight;\n const textHeight = await addText(\n shapeSvg,\n `${requirementNode.text ? `Text: ${requirementNode.text}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += textHeight;\n const riskHeight = await addText(\n shapeSvg,\n `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += riskHeight;\n await addText(\n shapeSvg,\n `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n } else {\n // Element\n const typeHeight = await addText(\n shapeSvg,\n `${elementNode.type ? `Type: ${elementNode.type}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += typeHeight;\n await addText(\n shapeSvg,\n `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n }\n\n const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n // Setup roughjs\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n // Create and center rectangle\n const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n const rect = shapeSvg.insert(() => roughRect, ':first-child');\n rect.attr('class', 'basic label-container').attr('style', nodeStyles);\n\n // Re-translate labels now that rect is centered\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n shapeSvg.selectAll('.label').each((_: any, i: number, nodes: any) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const text = select(nodes[i]);\n\n const transform = text.attr('transform');\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n }\n }\n\n const newTranslateY = translateY - totalHeight / 2;\n let newTranslateX = x + padding / 2;\n\n // Keep type and name labels centered.\n if (i === 0 || i === 1) {\n newTranslateX = translateX;\n }\n // Set the updated transform attribute\n text.attr('transform', `translate(${newTranslateX}, ${newTranslateY + padding})`);\n });\n\n // Insert divider line if there is body text\n if (accumulativeHeight > typeHeight + nameHeight + gap) {\n const roughLine = rc.line(\n x,\n y + typeHeight + nameHeight + gap,\n x + totalWidth,\n y + typeHeight + nameHeight + gap,\n options\n );\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n\nasync function addText(\n parentGroup: D3Selection,\n inputText: string,\n yOffset: number,\n style = ''\n) {\n if (inputText === '') {\n return 0;\n }\n const textEl = parentGroup.insert('g').attr('class', 'label').attr('style', style);\n const config = getConfig();\n const useHtmlLabels = config.htmlLabels ?? true;\n\n const text = await createText(\n textEl,\n sanitizeText(decodeEntities(inputText)),\n {\n width: calculateTextWidth(inputText, config) + 50, // Add room for error when splitting text into multiple lines\n classes: 'markdown-node-label',\n useHtmlLabels,\n style,\n },\n config\n );\n let bbox;\n\n if (!useHtmlLabels) {\n const textChild = text.children[0];\n for (const child of textChild.children) {\n child.textContent = child.textContent.replaceAll('>', '>').replaceAll('<', '<');\n if (style) {\n child.setAttribute('style', style);\n }\n }\n // Get the bounding box after the text update\n bbox = text.getBBox();\n // Add extra height so it is similar to the html labels\n bbox.height += 6;\n } else {\n const div = text.children[0];\n const dv = select(text);\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center text and offset by yOffset\n textEl.attr('transform', `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n return bbox.height;\n}\n", "import { labelHelper, insertLabel, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node, KanbanNode, ShapeRenderOptions } from '../../types.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { userNodeOverrides, styles2String } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nconst colorFromPriority = (priority: NonNullable) => {\n switch (priority) {\n case 'Very High':\n return 'red';\n case 'High':\n return 'orange';\n case 'Medium':\n return null; // no stroke\n case 'Low':\n return 'blue';\n case 'Very Low':\n return 'lightblue';\n }\n};\nexport async function kanbanItem(\n parent: D3Selection,\n // Omit the 'shape' prop since otherwise, it causes a TypeScript circular dependency error\n kanbanNode: Omit | Omit,\n { config }: ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || '';\n\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n\n const {\n shapeSvg,\n bbox,\n label: labelElTitle,\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n\n let ticketUrl = '';\n let link;\n\n if ('ticket' in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace('#TICKET#', kanbanNode.ticket);\n link = shapeSvg\n .insert('svg:a', ':first-child')\n .attr('class', 'kanban-ticket-link')\n .attr('xlink:href', ticketUrl)\n .attr('target', '_blank');\n }\n\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || '',\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false,\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n ('ticket' in kanbanNode && kanbanNode.ticket) || '',\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n ('ticket' in kanbanNode && kanbanNode.ticket) || '',\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n ('assigned' in kanbanNode && kanbanNode.assigned) || '',\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight =\n Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n 'transform',\n 'translate(' + (padding - totalWidth / 2) + ', ' + (-heightAdj - bbox.height / 2) + ')'\n );\n labelEl.attr(\n 'transform',\n 'translate(' + (padding - totalWidth / 2) + ', ' + (-heightAdj + bbox.height / 2) + ')'\n );\n labelElAssigned.attr(\n 'transform',\n 'translate(' +\n (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) +\n ', ' +\n (-heightAdj + bbox.height / 2) +\n ')'\n );\n\n let rect;\n\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n\n if (kanbanNode.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(kanbanNode, {});\n\n const roughNode =\n rx || ry\n ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options)\n : rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n rect = shapeSvg.insert(() => roughNode, ':first-child');\n rect.attr('class', 'basic label-container').attr('style', cssStyles ? cssStyles : null);\n } else {\n rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container __APA__')\n .attr('style', nodeStyles)\n .attr('rx', rx ?? 5)\n .attr('ry', ry ?? 5)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n const priority = 'priority' in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append('line');\n const lineX = x + 2;\n\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line\n .attr('x1', lineX)\n .attr('y1', y1)\n .attr('x2', lineX)\n .attr('y2', y2)\n\n .attr('stroke-width', '4')\n .attr('stroke', colorFromPriority(priority));\n }\n }\n\n updateNodeBounds(kanbanNode, rect);\n kanbanNode.height = totalHeight;\n\n kanbanNode.intersect = function (point) {\n return intersect.rect(kanbanNode, point);\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { Bounds, Point } from '../../../types.js';\n\nexport async function bang(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n\n const w = bbox.width + 10 * halfPadding;\n const h = bbox.height + 8 * halfPadding;\n const r = 0.15 * w;\n const { cssStyles } = node;\n\n const minWidth = bbox.width + 20;\n const minHeight = bbox.height + 20;\n const effectiveWidth = Math.max(w, minWidth);\n const effectiveHeight = Math.max(h, minHeight);\n\n label.attr('transform', `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n\n let bangElem;\n const path = `M0 0 \n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1}\n\n a${r},${r} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n H0 V0 Z`;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n bangElem = shapeSvg.insert(() => roughNode, ':first-child');\n bangElem.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n } else {\n bangElem = shapeSvg\n .insert('path', ':first-child')\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('d', path);\n }\n\n // Translate the path (center the shape)\n bangElem.attr('transform', `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`);\n\n updateNodeBounds(node, bangElem);\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n return intersect.rect(bounds, point);\n };\n node.intersect = function (point) {\n log.info('Bang intersect', node, point);\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport type { Bounds, D3Selection, Point } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { Node } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, labelHelper, updateNodeBounds } from './util.js';\n\nexport async function cloud(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n\n const w = bbox.width + 2 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n\n // Cloud radii\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n\n const { cssStyles } = node;\n let cloudElem;\n\n // Cloud path\n const path = `M0 0 \n a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},0\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n H0 V0 Z`;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n cloudElem = shapeSvg.insert(() => roughNode, ':first-child');\n cloudElem.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n } else {\n cloudElem = shapeSvg\n .insert('path', ':first-child')\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('d', path);\n }\n\n label.attr('transform', `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n\n // Center the shape\n cloudElem.attr('transform', `translate(${-w / 2}, ${-h / 2})`);\n\n updateNodeBounds(node, cloudElem);\n\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n return intersect.rect(bounds, point);\n };\n node.intersect = function (point) {\n log.info('Cloud intersect', node, point);\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import type { Bounds, D3Selection, Point } from '../../../types.js';\nimport type { Node } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, labelHelper, updateNodeBounds } from './util.js';\n\nexport async function defaultMindmapNode(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n\n const w = bbox.width + 8 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const rd = 5;\n\n const rectPath = `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - 2 * rd}\n q0,${rd} -${rd},${rd}\n h${-w + 2 * rd}\n q-${rd},0 -${rd},-${rd}\n Z\n `;\n\n const bg = shapeSvg\n .append('path')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + node.type)\n .attr('style', nodeStyles)\n .attr('d', rectPath);\n\n shapeSvg\n .append('line')\n .attr('class', 'node-line-')\n .attr('x1', -w / 2)\n .attr('y1', h / 2)\n .attr('x2', w / 2)\n .attr('y2', h / 2);\n\n label.attr('transform', `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n shapeSvg.append(() => label.node());\n\n updateNodeBounds(node, bg);\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n return intersect.rect(bounds, point);\n };\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { circle } from './circle.js';\nimport type { Node, MindmapOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function mindmapCircle(\n parent: D3Selection,\n node: Node\n) {\n const options = {\n padding: node.padding ?? 0,\n } as MindmapOptions;\n return circle(parent, node, options);\n}\n", "import type { Entries } from 'type-fest';\nimport type { D3Selection, MaybePromise } from '../../types.js';\nimport type { Node, ShapeRenderOptions } from '../types.js';\nimport { anchor } from './shapes/anchor.js';\nimport { bowTieRect } from './shapes/bowTieRect.js';\nimport { card } from './shapes/card.js';\nimport { choice } from './shapes/choice.js';\nimport { circle } from './shapes/circle.js';\nimport { crossedCircle } from './shapes/crossedCircle.js';\nimport { curlyBraceLeft } from './shapes/curlyBraceLeft.js';\nimport { curlyBraceRight } from './shapes/curlyBraceRight.js';\nimport { curlyBraces } from './shapes/curlyBraces.js';\nimport { curvedTrapezoid } from './shapes/curvedTrapezoid.js';\nimport { cylinder } from './shapes/cylinder.js';\nimport { dividedRectangle } from './shapes/dividedRect.js';\nimport { doublecircle } from './shapes/doubleCircle.js';\nimport { filledCircle } from './shapes/filledCircle.js';\nimport { flippedTriangle } from './shapes/flippedTriangle.js';\nimport { forkJoin } from './shapes/forkJoin.js';\nimport { halfRoundedRectangle } from './shapes/halfRoundedRectangle.js';\nimport { hexagon } from './shapes/hexagon.js';\nimport { hourglass } from './shapes/hourglass.js';\nimport { icon } from './shapes/icon.js';\nimport { iconCircle } from './shapes/iconCircle.js';\nimport { iconRounded } from './shapes/iconRounded.js';\nimport { iconSquare } from './shapes/iconSquare.js';\nimport { imageSquare } from './shapes/imageSquare.js';\nimport { inv_trapezoid } from './shapes/invertedTrapezoid.js';\nimport { labelRect } from './shapes/labelRect.js';\nimport { lean_left } from './shapes/leanLeft.js';\nimport { lean_right } from './shapes/leanRight.js';\nimport { lightningBolt } from './shapes/lightningBolt.js';\nimport { linedCylinder } from './shapes/linedCylinder.js';\nimport { linedWaveEdgedRect } from './shapes/linedWaveEdgedRect.js';\nimport { multiRect } from './shapes/multiRect.js';\nimport { multiWaveEdgedRectangle } from './shapes/multiWaveEdgedRectangle.js';\nimport { note } from './shapes/note.js';\nimport { question } from './shapes/question.js';\nimport { rect_left_inv_arrow } from './shapes/rectLeftInvArrow.js';\nimport { rectWithTitle } from './shapes/rectWithTitle.js';\nimport { roundedRect } from './shapes/roundedRect.js';\nimport { shadedProcess } from './shapes/shadedProcess.js';\nimport { slopedRect } from './shapes/slopedRect.js';\nimport { squareRect } from './shapes/squareRect.js';\nimport { stadium } from './shapes/stadium.js';\nimport { state } from './shapes/state.js';\nimport { stateEnd } from './shapes/stateEnd.js';\nimport { stateStart } from './shapes/stateStart.js';\nimport { subroutine } from './shapes/subroutine.js';\nimport { taggedRect } from './shapes/taggedRect.js';\nimport { taggedWaveEdgedRectangle } from './shapes/taggedWaveEdgedRectangle.js';\nimport { text } from './shapes/text.js';\nimport { tiltedCylinder } from './shapes/tiltedCylinder.js';\nimport { trapezoid } from './shapes/trapezoid.js';\nimport { trapezoidalPentagon } from './shapes/trapezoidalPentagon.js';\nimport { triangle } from './shapes/triangle.js';\nimport { waveEdgedRectangle } from './shapes/waveEdgedRectangle.js';\nimport { waveRectangle } from './shapes/waveRectangle.js';\nimport { windowPane } from './shapes/windowPane.js';\nimport { erBox } from './shapes/erBox.js';\nimport { classBox } from './shapes/classBox.js';\nimport { requirementBox } from './shapes/requirementBox.js';\nimport { kanbanItem } from './shapes/kanbanItem.js';\nimport { bang } from './shapes/bang.js';\nimport { cloud } from './shapes/cloud.js';\nimport { defaultMindmapNode } from './shapes/defaultMindmapNode.js';\nimport { mindmapCircle } from './shapes/mindmapCircle.js';\n\ntype ShapeHandler = (\n parent: D3Selection,\n node: Node,\n options: ShapeRenderOptions\n) => MaybePromise>;\n\nexport interface ShapeDefinition {\n semanticName: string;\n name: string;\n shortName: string;\n description: string;\n /**\n * Aliases can include descriptive names, other short names, etc.\n */\n aliases?: string[];\n /**\n * These are names used by mermaid before the introduction of new shapes. These will not be in standard formats, and shouldn't be used by the users\n */\n internalAliases?: string[];\n handler: ShapeHandler;\n}\n\nexport const shapesDefs = [\n {\n semanticName: 'Process',\n name: 'Rectangle',\n shortName: 'rect',\n description: 'Standard process shape',\n aliases: ['proc', 'process', 'rectangle'],\n internalAliases: ['squareRect'],\n handler: squareRect,\n },\n {\n semanticName: 'Event',\n name: 'Rounded Rectangle',\n shortName: 'rounded',\n description: 'Represents an event',\n aliases: ['event'],\n internalAliases: ['roundedRect'],\n handler: roundedRect,\n },\n {\n semanticName: 'Terminal Point',\n name: 'Stadium',\n shortName: 'stadium',\n description: 'Terminal point',\n aliases: ['terminal', 'pill'],\n handler: stadium,\n },\n {\n semanticName: 'Subprocess',\n name: 'Framed Rectangle',\n shortName: 'fr-rect',\n description: 'Subprocess',\n aliases: ['subprocess', 'subproc', 'framed-rectangle', 'subroutine'],\n handler: subroutine,\n },\n {\n semanticName: 'Database',\n name: 'Cylinder',\n shortName: 'cyl',\n description: 'Database storage',\n aliases: ['db', 'database', 'cylinder'],\n handler: cylinder,\n },\n {\n semanticName: 'Start',\n name: 'Circle',\n shortName: 'circle',\n description: 'Starting point',\n aliases: ['circ'],\n handler: circle,\n },\n {\n semanticName: 'Bang',\n name: 'Bang',\n shortName: 'bang',\n description: 'Bang',\n aliases: ['bang'],\n handler: bang,\n },\n {\n semanticName: 'Cloud',\n name: 'Cloud',\n shortName: 'cloud',\n description: 'cloud',\n aliases: ['cloud'],\n handler: cloud,\n },\n {\n semanticName: 'Decision',\n name: 'Diamond',\n shortName: 'diam',\n description: 'Decision-making step',\n aliases: ['decision', 'diamond', 'question'],\n handler: question,\n },\n {\n semanticName: 'Prepare Conditional',\n name: 'Hexagon',\n shortName: 'hex',\n description: 'Preparation or condition step',\n aliases: ['hexagon', 'prepare'],\n handler: hexagon,\n },\n {\n semanticName: 'Data Input/Output',\n name: 'Lean Right',\n shortName: 'lean-r',\n description: 'Represents input or output',\n aliases: ['lean-right', 'in-out'],\n internalAliases: ['lean_right'],\n handler: lean_right,\n },\n {\n semanticName: 'Data Input/Output',\n name: 'Lean Left',\n shortName: 'lean-l',\n description: 'Represents output or input',\n aliases: ['lean-left', 'out-in'],\n internalAliases: ['lean_left'],\n handler: lean_left,\n },\n {\n semanticName: 'Priority Action',\n name: 'Trapezoid Base Bottom',\n shortName: 'trap-b',\n description: 'Priority action',\n aliases: ['priority', 'trapezoid-bottom', 'trapezoid'],\n handler: trapezoid,\n },\n {\n semanticName: 'Manual Operation',\n name: 'Trapezoid Base Top',\n shortName: 'trap-t',\n description: 'Represents a manual task',\n aliases: ['manual', 'trapezoid-top', 'inv-trapezoid'],\n internalAliases: ['inv_trapezoid'],\n handler: inv_trapezoid,\n },\n {\n semanticName: 'Stop',\n name: 'Double Circle',\n shortName: 'dbl-circ',\n description: 'Represents a stop point',\n aliases: ['double-circle'],\n internalAliases: ['doublecircle'],\n handler: doublecircle,\n },\n {\n semanticName: 'Text Block',\n name: 'Text Block',\n shortName: 'text',\n description: 'Text block',\n handler: text,\n },\n {\n semanticName: 'Card',\n name: 'Notched Rectangle',\n shortName: 'notch-rect',\n description: 'Represents a card',\n aliases: ['card', 'notched-rectangle'],\n handler: card,\n },\n {\n semanticName: 'Lined/Shaded Process',\n name: 'Lined Rectangle',\n shortName: 'lin-rect',\n description: 'Lined process shape',\n aliases: ['lined-rectangle', 'lined-process', 'lin-proc', 'shaded-process'],\n handler: shadedProcess,\n },\n {\n semanticName: 'Start',\n name: 'Small Circle',\n shortName: 'sm-circ',\n description: 'Small starting point',\n aliases: ['start', 'small-circle'],\n internalAliases: ['stateStart'],\n handler: stateStart,\n },\n {\n semanticName: 'Stop',\n name: 'Framed Circle',\n shortName: 'fr-circ',\n description: 'Stop point',\n aliases: ['stop', 'framed-circle'],\n internalAliases: ['stateEnd'],\n handler: stateEnd,\n },\n {\n semanticName: 'Fork/Join',\n name: 'Filled Rectangle',\n shortName: 'fork',\n description: 'Fork or join in process flow',\n aliases: ['join'],\n internalAliases: ['forkJoin'],\n handler: forkJoin,\n },\n {\n semanticName: 'Collate',\n name: 'Hourglass',\n shortName: 'hourglass',\n description: 'Represents a collate operation',\n aliases: ['hourglass', 'collate'],\n handler: hourglass,\n },\n {\n semanticName: 'Comment',\n name: 'Curly Brace',\n shortName: 'brace',\n description: 'Adds a comment',\n aliases: ['comment', 'brace-l'],\n handler: curlyBraceLeft,\n },\n {\n semanticName: 'Comment Right',\n name: 'Curly Brace',\n shortName: 'brace-r',\n description: 'Adds a comment',\n handler: curlyBraceRight,\n },\n {\n semanticName: 'Comment with braces on both sides',\n name: 'Curly Braces',\n shortName: 'braces',\n description: 'Adds a comment',\n handler: curlyBraces,\n },\n {\n semanticName: 'Com Link',\n name: 'Lightning Bolt',\n shortName: 'bolt',\n description: 'Communication link',\n aliases: ['com-link', 'lightning-bolt'],\n handler: lightningBolt,\n },\n {\n semanticName: 'Document',\n name: 'Document',\n shortName: 'doc',\n description: 'Represents a document',\n aliases: ['doc', 'document'],\n handler: waveEdgedRectangle,\n },\n {\n semanticName: 'Delay',\n name: 'Half-Rounded Rectangle',\n shortName: 'delay',\n description: 'Represents a delay',\n aliases: ['half-rounded-rectangle'],\n handler: halfRoundedRectangle,\n },\n {\n semanticName: 'Direct Access Storage',\n name: 'Horizontal Cylinder',\n shortName: 'h-cyl',\n description: 'Direct access storage',\n aliases: ['das', 'horizontal-cylinder'],\n handler: tiltedCylinder,\n },\n {\n semanticName: 'Disk Storage',\n name: 'Lined Cylinder',\n shortName: 'lin-cyl',\n description: 'Disk storage',\n aliases: ['disk', 'lined-cylinder'],\n handler: linedCylinder,\n },\n {\n semanticName: 'Display',\n name: 'Curved Trapezoid',\n shortName: 'curv-trap',\n description: 'Represents a display',\n aliases: ['curved-trapezoid', 'display'],\n handler: curvedTrapezoid,\n },\n {\n semanticName: 'Divided Process',\n name: 'Divided Rectangle',\n shortName: 'div-rect',\n description: 'Divided process shape',\n aliases: ['div-proc', 'divided-rectangle', 'divided-process'],\n handler: dividedRectangle,\n },\n {\n semanticName: 'Extract',\n name: 'Triangle',\n shortName: 'tri',\n description: 'Extraction process',\n aliases: ['extract', 'triangle'],\n handler: triangle,\n },\n {\n semanticName: 'Internal Storage',\n name: 'Window Pane',\n shortName: 'win-pane',\n description: 'Internal storage',\n aliases: ['internal-storage', 'window-pane'],\n handler: windowPane,\n },\n {\n semanticName: 'Junction',\n name: 'Filled Circle',\n shortName: 'f-circ',\n description: 'Junction point',\n aliases: ['junction', 'filled-circle'],\n handler: filledCircle,\n },\n {\n semanticName: 'Loop Limit',\n name: 'Trapezoidal Pentagon',\n shortName: 'notch-pent',\n description: 'Loop limit step',\n aliases: ['loop-limit', 'notched-pentagon'],\n handler: trapezoidalPentagon,\n },\n {\n semanticName: 'Manual File',\n name: 'Flipped Triangle',\n shortName: 'flip-tri',\n description: 'Manual file operation',\n aliases: ['manual-file', 'flipped-triangle'],\n handler: flippedTriangle,\n },\n {\n semanticName: 'Manual Input',\n name: 'Sloped Rectangle',\n shortName: 'sl-rect',\n description: 'Manual input step',\n aliases: ['manual-input', 'sloped-rectangle'],\n handler: slopedRect,\n },\n {\n semanticName: 'Multi-Document',\n name: 'Stacked Document',\n shortName: 'docs',\n description: 'Multiple documents',\n aliases: ['documents', 'st-doc', 'stacked-document'],\n handler: multiWaveEdgedRectangle,\n },\n {\n semanticName: 'Multi-Process',\n name: 'Stacked Rectangle',\n shortName: 'st-rect',\n description: 'Multiple processes',\n aliases: ['procs', 'processes', 'stacked-rectangle'],\n handler: multiRect,\n },\n {\n semanticName: 'Stored Data',\n name: 'Bow Tie Rectangle',\n shortName: 'bow-rect',\n description: 'Stored data',\n aliases: ['stored-data', 'bow-tie-rectangle'],\n handler: bowTieRect,\n },\n {\n semanticName: 'Summary',\n name: 'Crossed Circle',\n shortName: 'cross-circ',\n description: 'Summary',\n aliases: ['summary', 'crossed-circle'],\n handler: crossedCircle,\n },\n {\n semanticName: 'Tagged Document',\n name: 'Tagged Document',\n shortName: 'tag-doc',\n description: 'Tagged document',\n aliases: ['tag-doc', 'tagged-document'],\n handler: taggedWaveEdgedRectangle,\n },\n {\n semanticName: 'Tagged Process',\n name: 'Tagged Rectangle',\n shortName: 'tag-rect',\n description: 'Tagged process',\n aliases: ['tagged-rectangle', 'tag-proc', 'tagged-process'],\n handler: taggedRect,\n },\n {\n semanticName: 'Paper Tape',\n name: 'Flag',\n shortName: 'flag',\n description: 'Paper tape',\n aliases: ['paper-tape'],\n handler: waveRectangle,\n },\n {\n semanticName: 'Odd',\n name: 'Odd',\n shortName: 'odd',\n description: 'Odd shape',\n internalAliases: ['rect_left_inv_arrow'],\n handler: rect_left_inv_arrow,\n },\n {\n semanticName: 'Lined Document',\n name: 'Lined Document',\n shortName: 'lin-doc',\n description: 'Lined document',\n aliases: ['lined-document'],\n handler: linedWaveEdgedRect,\n },\n] as const satisfies ShapeDefinition[];\n\nconst generateShapeMap = () => {\n // These are the shapes that didn't have documentation present\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n\n // Rectangles\n rectWithTitle,\n labelRect,\n\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n\n // Kanban diagram\n kanbanItem,\n\n //Mindmap diagram\n mindmapCircle,\n defaultMindmapNode,\n // class diagram\n classBox,\n\n // er diagram\n erBox,\n\n // Requirement diagram\n requirementBox,\n } as const;\n\n const entries = [\n ...(Object.entries(undocumentedShapes) as Entries),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...('aliases' in shape ? shape.aliases : []),\n ...('internalAliases' in shape ? shape.internalAliases : []),\n ];\n return aliases.map((alias) => [alias, shape.handler] as const);\n }),\n ];\n return Object.fromEntries(entries) as Record<\n (typeof entries)[number][0],\n (typeof entries)[number][1]\n > satisfies Record;\n};\n\nexport const shapes = generateShapeMap();\n\nexport function isValidShape(shape: string): shape is ShapeID {\n return shape in shapes;\n}\n\nexport type ShapeID = keyof typeof shapes;\n", "import { log } from '../../logger.js';\nimport { shapes } from './shapes.js';\nimport type { Node, NonClusterNode, ShapeRenderOptions } from '../types.js';\nimport type { SVGGroup } from '../../mermaid.js';\nimport type { D3Selection } from '../../types.js';\nimport type { graphlib } from 'dagre-d3-es';\n\ntype ShapeHandler = (typeof shapes)[keyof typeof shapes];\ntype NodeElement = D3Selection | Awaited>;\n\nconst nodeElems = new Map();\n\nexport async function insertNode(\n elem: SVGGroup,\n node: NonClusterNode,\n renderOptions: ShapeRenderOptions\n) {\n let newEl: NodeElement | undefined;\n let el;\n\n //special check for rect shape (with or without rounded corners)\n if (node.shape === 'rect') {\n if (node.rx && node.ry) {\n node.shape = 'roundedRect';\n } else {\n node.shape = 'squareRect';\n }\n }\n\n const shapeHandler = node.shape ? shapes[node.shape] : undefined;\n\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n\n if (node.link) {\n // Add link when appropriate\n let target;\n if (renderOptions.config.securityLevel === 'sandbox') {\n target = '_top';\n } else if (node.linkTarget) {\n target = node.linkTarget || '_blank';\n }\n newEl = elem\n .insert('svg:a')\n .attr('xlink:href', node.link)\n .attr('target', target ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n\n nodeElems.set(node.id, newEl);\n\n if (node.haveCallback) {\n newEl.attr('class', newEl.attr('class') + ' clickable');\n }\n return newEl;\n}\n\nexport const setNodeElem = (elem: NodeElement, node: Pick) => {\n nodeElems.set(node.id, elem);\n};\n\nexport const clear = () => {\n nodeElems.clear();\n};\n\nexport const positionNode = (node: ReturnType) => {\n const el = nodeElems.get(node.id)!;\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n"], - "mappings": "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CAAC,SAAU,gBAAiB,eAAe,EACpD,gBAAiB,CAAC,eAAe,EACjC,QAASC,EACX,EACA,CACE,aAAc,OACd,KAAM,gBACN,UAAW,WACX,YAAa,0BACb,QAAS,CAAC,eAAe,EACzB,gBAAiB,CAAC,cAAc,EAChC,QAASC,EACX,EACA,CACE,aAAc,aACd,KAAM,aACN,UAAW,OACX,YAAa,aACb,QAASC,EACX,EACA,CACE,aAAc,OACd,KAAM,oBACN,UAAW,aACX,YAAa,oBACb,QAAS,CAAC,OAAQ,mBAAmB,EACrC,QAASC,EACX,EACA,CACE,aAAc,uBACd,KAAM,kBACN,UAAW,WACX,YAAa,sBACb,QAAS,CAAC,kBAAmB,gBAAiB,WAAY,gBAAgB,EAC1E,QAASC,EACX,EACA,CACE,aAAc,QACd,KAAM,eACN,UAAW,UACX,YAAa,uBACb,QAAS,CAAC,QAAS,cAAc,EACjC,gBAAiB,CAAC,YAAY,EAC9B,QAASC,EACX,EACA,CACE,aAAc,OACd,KAAM,gBACN,UAAW,UACX,YAAa,aACb,QAAS,CAAC,OAAQ,eAAe,EACjC,gBAAiB,CAAC,UAAU,EAC5B,QAASC,EACX,EACA,CACE,aAAc,YACd,KAAM,mBACN,UAAW,OACX,YAAa,+BACb,QAAS,CAAC,MAAM,EAChB,gBAAiB,CAAC,UAAU,EAC5B,QAASC,EACX,EACA,CACE,aAAc,UACd,KAAM,YACN,UAAW,YACX,YAAa,iCACb,QAAS,CAAC,YAAa,SAAS,EAChC,QAASC,EACX,EACA,CACE,aAAc,UACd,KAAM,cACN,UAAW,QACX,YAAa,iBACb,QAAS,CAAC,UAAW,SAAS,EAC9B,QAASC,EACX,EACA,CACE,aAAc,gBACd,KAAM,cACN,UAAW,UACX,YAAa,iBACb,QAASC,EACX,EACA,CACE,aAAc,oCACd,KAAM,eACN,UAAW,SACX,YAAa,iBACb,QAASC,EACX,EACA,CACE,aAAc,WACd,KAAM,iBACN,UAAW,OACX,YAAa,qBACb,QAAS,CAAC,WAAY,gBAAgB,EACtC,QAASC,EACX,EACA,CACE,aAAc,WACd,KAAM,WACN,UAAW,MACX,YAAa,wBACb,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", - "names": ["labelHelper", "__name", "parent", "node", "_classes", "cssClasses", "useHtmlLabels", "evaluate", "getConfig", "shapeSvg", "labelEl", "handleUndefinedAttr", "label", "addBackground", "isMarkdown", "text", "createText", "sanitizeText", "decodeEntities", "bbox", "halfPadding", "div", "dv", "select_default", "configureLabelImages", "insertLabel", "options", "getEffectiveHtmlLabels", "updateNodeBounds", "element", "getNodeClasses", "__name", "node", "extra", "createPathFromPoints", "points", "pointStrings", "p", "i", "generateFullSineWavePoints", "x1", "y1", "x2", "y2", "amplitude", "numCycles", "deltaX", "deltaY", "cycleLength", "frequency", "midY", "t", "x", "y", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "startAngleRad", "angleStep", "angle", "intersectRect", "__name", "node", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "createLabel", "__name", "element", "_vertexText", "style", "isTitle", "isNode", "vertexText", "config", "getConfig", "useHtmlLabels", "getEffectiveHtmlLabels", "createText", "createLabel_default", "createRoundedRectPathD", "__name", "x", "y", "totalWidth", "totalHeight", "radius", "rect", "__name", "parent", "node", "log", "siteConfig", "getConfig", "themeVariables", "handDrawnSeed", "clusterBkg", "clusterBorder", "labelStyles", "nodeStyles", "borderStyles", "backgroundStyles", "styles2String", "shapeSvg", "useHtmlLabels", "getEffectiveHtmlLabels", "labelEl", "text", "createText", "createLabel_default", "bbox", "div", "dv", "select_default", "width", "height", "x", "y", "rc", "at", "options", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "subGraphTitleTopMargin", "getSubGraphTitleMargins", "span", "rectBox", "point", "intersect_rect_default", "noteGroup", "padding", "halfPadding", "roundedWithTitle", "altBackground", "compositeBackground", "compositeTitleBackground", "nodeBorder", "outerRectG", "label", "innerRect", "innerHeight", "innerY", "isAlt", "roughOuterNode", "roughInnerNode", "kanbanSection", "divider", "squareRect", "shapes", "clusterElems", "insertCluster", "elem", "shape", "cluster", "clear", "__name", "clusterElems", "intersectNode", "node", "point", "__name", "intersect_node_default", "intersectEllipse", "node", "rx", "ry", "point", "cx", "cy", "px", "py", "det", "dx", "dy", "__name", "intersect_ellipse_default", "intersectCircle", "node", "rx", "point", "intersect_ellipse_default", "__name", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "b1", "c1", "r3", "r4", "epsilon", "sameSign", "a2", "b2", "c2", "r1", "r2", "denom", "offset", "num", "x", "y", "__name", "intersect_line_default", "intersectPolygon", "node", "polyPoints", "point", "x1", "y1", "intersections", "minX", "minY", "entry", "left", "top", "i", "p1", "p2", "intersect", "intersect_line_default", "p", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "__name", "intersect_polygon_default", "intersect_default", "intersect_node_default", "intersect_circle_default", "intersect_ellipse_default", "intersect_polygon_default", "intersect_rect_default", "anchor", "parent", "node", "labelStyles", "styles2String", "classes", "getNodeClasses", "cssClasses", "shapeSvg", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "roughNode", "circleElem", "handleUndefinedAttr", "updateNodeBounds", "point", "log", "intersect_default", "__name", "generateArcPoints", "x1", "y1", "x2", "y2", "rx", "ry", "clockwise", "midX", "midY", "angle", "dx", "dy", "transformedX", "transformedY", "distance", "scaledCenterDistance", "centerX", "centerY", "startAngle", "angleRange", "points", "i", "t", "x", "y", "__name", "bowTieRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rc", "at", "options", "userNodeOverrides", "bowTieRectPath", "createPathFromPoints", "bowTieRectShapePath", "bowTieRectShape", "updateNodeBounds", "point", "intersect_default", "insertPolygonShape", "parent", "w", "points", "d", "__name", "card", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "h", "padding", "w", "left", "right", "top", "bottom", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "choice", "parent", "node", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "cssStyles", "s", "points", "rc", "at", "options", "userNodeOverrides", "choicePath", "createPathFromPoints", "roughNode", "choiceShape", "point", "intersect_default", "__name", "circle", "parent", "node", "options", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "labelHelper", "getNodeClasses", "padding", "radius", "circleElem", "cssStyles", "rc", "at", "userNodeOverrides", "roughNode", "handleUndefinedAttr", "updateNodeBounds", "bounds", "point", "intersect_default", "log", "__name", "createLine", "r", "xAxis45", "yAxis45", "lineLength", "pointQ1", "pointQ2", "pointQ3", "pointQ4", "__name", "crossedCircle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "circleNode", "linePath", "lineNode", "updateNodeBounds", "point", "log", "intersect_default", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "points", "startAngleRad", "angleStep", "i", "angle", "x", "y", "__name", "curlyBraceLeft", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rectPoints", "rc", "at", "options", "userNodeOverrides", "newCurlyBracePath", "createPathFromPoints", "curlyBraceLeftNode", "rectPath", "rectShape", "curlyBraceLeftShape", "updateNodeBounds", "point", "intersect_default", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "points", "startAngleRad", "angleStep", "i", "angle", "x", "y", "__name", "curlyBraceRight", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rectPoints", "rc", "at", "options", "userNodeOverrides", "newCurlyBracePath", "createPathFromPoints", "curlyBraceRightNode", "rectPath", "rectShape", "curlyBraceRightShape", "updateNodeBounds", "point", "intersect_default", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "points", "startAngleRad", "angleStep", "i", "angle", "x", "y", "__name", "curlyBraces", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "leftCurlyBracePoints", "rightCurlyBracePoints", "rectPoints", "rc", "at", "options", "userNodeOverrides", "newLeftCurlyBracePath", "createPathFromPoints", "leftCurlyBraceNode", "newRightCurlyBracePath", "rightCurlyBraceNode", "rectPath", "rectShape", "curlyBracesShape", "updateNodeBounds", "point", "intersect_default", "curvedTrapezoid", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "minWidth", "minHeight", "w", "h", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "totalWidth", "totalHeight", "rw", "tw", "points", "generateCirclePoints", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "createCylinderPathD", "__name", "x", "y", "width", "height", "rx", "ry", "createOuterCylinderPathD", "createInnerCylinderPathD", "cylinder", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rc", "at", "outerPathData", "innerPathData", "outerNode", "userNodeOverrides", "innerLine", "pathData", "handleUndefinedAttr", "updateNodeBounds", "point", "pos", "intersect_default", "dividedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "rectOffset", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pts", "poly", "p", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "doublecircle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "labelHelper", "getNodeClasses", "outerRadius", "innerRadius", "circleGroup", "cssStyles", "rc", "at", "outerOptions", "userNodeOverrides", "innerOptions", "outerRoughNode", "innerRoughNode", "handleUndefinedAttr", "outerCircle", "innerCircle", "updateNodeBounds", "point", "log", "intersect_default", "__name", "filledCircle", "parent", "node", "themeVariables", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "radius", "cssStyles", "rc", "at", "nodeBorder", "options", "userNodeOverrides", "circleNode", "updateNodeBounds", "point", "log", "intersect_default", "__name", "flippedTriangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "tw", "points", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "updateNodeBounds", "point", "log", "intersect_default", "__name", "forkJoin", "parent", "node", "dir", "state", "themeVariables", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "cssStyles", "width", "height", "x", "y", "rc", "at", "options", "userNodeOverrides", "roughNode", "shape", "updateNodeBounds", "padding", "point", "intersect_default", "__name", "halfRoundedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "minWidth", "minHeight", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateCirclePoints", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "log", "intersect_default", "__name", "createHexagonPathD", "__name", "x", "y", "width", "height", "m", "hexagon", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "f", "h", "w", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "hourglass", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "log", "intersect_default", "__name", "icon", "parent", "node", "themeVariables", "flowchart", "labelStyles", "styles2String", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "shapeSvg", "bbox", "label", "labelHelper", "topLabel", "height", "width", "nodeBorder", "stylesMap", "compileStyles", "x", "y", "labelPadding", "rc", "at", "options", "userNodeOverrides", "iconNode", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "updateNodeBounds", "point", "log", "intersect_default", "dx", "dy", "nodeHeight", "points", "__name", "iconCircle", "parent", "node", "themeVariables", "flowchart", "labelStyles", "styles2String", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "shapeSvg", "bbox", "label", "labelHelper", "padding", "labelPadding", "topLabel", "nodeBorder", "mainBkg", "stylesMap", "compileStyles", "rc", "at", "options", "userNodeOverrides", "fill", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "diameter", "iconNode", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "updateNodeBounds", "point", "log", "intersect_default", "__name", "iconRounded", "parent", "node", "themeVariables", "flowchart", "labelStyles", "styles2String", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "topLabel", "height", "width", "nodeBorder", "mainBkg", "stylesMap", "compileStyles", "x", "y", "labelPadding", "rc", "at", "options", "userNodeOverrides", "fill", "iconNode", "createRoundedRectPathD", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "updateNodeBounds", "point", "log", "intersect_default", "dx", "dy", "nodeHeight", "points", "__name", "iconSquare", "parent", "node", "themeVariables", "flowchart", "labelStyles", "styles2String", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "topLabel", "height", "width", "nodeBorder", "mainBkg", "stylesMap", "compileStyles", "x", "y", "labelPadding", "rc", "at", "options", "userNodeOverrides", "fill", "iconNode", "createRoundedRectPathD", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "updateNodeBounds", "point", "log", "intersect_default", "dx", "dy", "nodeHeight", "points", "__name", "imageSquare", "parent", "node", "flowchart", "img", "imageNaturalWidth", "imageNaturalHeight", "labelStyles", "styles2String", "defaultWidth", "imageRawWidth", "imageWidth", "imageHeight", "shapeSvg", "bbox", "label", "labelHelper", "topLabel", "x", "y", "labelPadding", "rc", "at", "options", "userNodeOverrides", "imageNode", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "image", "updateNodeBounds", "point", "log", "intersect_default", "dx", "dy", "nodeHeight", "points", "__name", "inv_trapezoid", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "drawRect", "parent", "node", "options", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "x", "y", "rect", "rx", "ry", "cssStyles", "rc", "at", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "handleUndefinedAttr", "updateNodeBounds", "bounds", "point", "intersect_default", "__name", "labelRect", "parent", "node", "shapeSvg", "bbox", "label", "labelHelper", "rect", "updateNodeBounds", "point", "intersect_default", "__name", "lean_left", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "lean_right", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "lightningBolt", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "cssStyles", "width", "height", "gap", "points", "rc", "at", "options", "userNodeOverrides", "linePath", "createPathFromPoints", "lineNode", "updateNodeBounds", "point", "log", "intersect_default", "__name", "createCylinderPathD", "__name", "x", "y", "width", "height", "rx", "ry", "outerOffset", "createOuterCylinderPathD", "createInnerCylinderPathD", "linedCylinder", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "cylinder", "cssStyles", "rc", "at", "outerPathData", "innerPathData", "options", "userNodeOverrides", "outerNode", "innerLine", "pathData", "handleUndefinedAttr", "updateNodeBounds", "point", "pos", "intersect_default", "linedWaveEdgedRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "waveAmplitude", "finalH", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateFullSineWavePoints", "poly", "p", "waveEdgeRect", "updateNodeBounds", "point", "intersect_default", "__name", "multiRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "rectOffset", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "outerPathPoints", "innerPathPoints", "outerPath", "createPathFromPoints", "outerNode", "innerPath", "innerNode", "updateNodeBounds", "point", "intersect_default", "__name", "multiWaveEdgedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "waveAmplitude", "finalH", "x", "y", "rectOffset", "cssStyles", "wavePoints", "generateFullSineWavePoints", "lastWavePoint", "outerPathPoints", "innerPathPoints", "rc", "at", "options", "userNodeOverrides", "outerPath", "createPathFromPoints", "outerNode", "innerPath", "innerNode", "shape", "updateNodeBounds", "point", "intersect_default", "__name", "note", "parent", "node", "themeVariables", "labelStyles", "nodeStyles", "styles2String", "getEffectiveHtmlLabels", "getConfig", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "noteShapeNode", "rect", "updateNodeBounds", "point", "intersect_default", "__name", "createDecisionBoxPathD", "__name", "x", "y", "size", "question", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "s", "adjustment", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "bounds", "point", "res", "intersect_default", "rect_left_inv_arrow", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "x", "y", "notch", "points", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "rectWithTitle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "classes", "shapeSvg", "g", "label", "description", "title", "text", "createLabel_default", "bbox", "getEffectiveHtmlLabels", "getConfig", "div", "dv", "select_default", "log", "textRows", "titleBox", "descr", "halfPadding", "totalWidth", "totalHeight", "x", "y", "rect", "innerLine", "rc", "at", "options", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "roughLine", "updateNodeBounds", "point", "intersect_default", "__name", "roundedRect", "parent", "node", "options", "drawRect", "__name", "shadedProcess", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "halfPadding", "w", "h", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "roughNode", "p", "rect", "handleUndefinedAttr", "updateNodeBounds", "point", "intersect_default", "__name", "slopedRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "squareRect", "parent", "node", "options", "drawRect", "__name", "stadium", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "h", "w", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateCirclePoints", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "state", "parent", "node", "drawRect", "__name", "stateEnd", "parent", "node", "themeVariables", "labelStyles", "nodeStyles", "styles2String", "cssStyles", "lineColor", "stateBorder", "nodeBorder", "shapeSvg", "rc", "at", "options", "userNodeOverrides", "roughNode", "innerFill", "roughInnerNode", "circle", "updateNodeBounds", "point", "intersect_default", "__name", "stateStart", "parent", "node", "themeVariables", "lineColor", "shapeSvg", "circle", "roughNode", "at", "solidStateFill", "updateNodeBounds", "point", "intersect_default", "__name", "subroutine", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "halfPadding", "w", "h", "x", "y", "points", "rc", "at", "options", "userNodeOverrides", "roughNode", "l1", "l2", "rect", "cssStyles", "handleUndefinedAttr", "updateNodeBounds", "el", "insertPolygonShape", "point", "intersect_default", "__name", "taggedRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "x", "y", "tagWidth", "tagHeight", "cssStyles", "rc", "at", "options", "userNodeOverrides", "rectPoints", "tagPoints", "rectPath", "createPathFromPoints", "rectNode", "tagPath", "tagNode", "updateNodeBounds", "point", "intersect_default", "__name", "taggedWaveEdgedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "waveAmplitude", "tagWidth", "tagHeight", "finalH", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateFullSineWavePoints", "x", "y", "tagPoints", "waveEdgeRectPath", "createPathFromPoints", "waveEdgeRectNode", "taggedWaveEdgeRectPath", "taggedWaveEdgeRectNode", "waveEdgeRect", "updateNodeBounds", "point", "intersect_default", "__name", "text", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "x", "y", "rect", "updateNodeBounds", "point", "intersect_default", "__name", "createCylinderPathD", "__name", "x", "y", "width", "height", "rx", "ry", "createOuterCylinderPathD", "createInnerCylinderPathD", "tiltedCylinder", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "halfPadding", "labelHelper", "getNodeClasses", "labelPadding", "h", "w", "cssStyles", "cylinder", "rc", "at", "outerPathData", "innerPathData", "outerNode", "userNodeOverrides", "innerLine", "pathData", "handleUndefinedAttr", "updateNodeBounds", "point", "pos", "intersect_default", "trapezoid", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "trapezoidalPentagon", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "minWidth", "minHeight", "w", "h", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "triangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "useHtmlLabels", "getEffectiveHtmlLabels", "getConfig", "w", "h", "tw", "points", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "polygon", "updateNodeBounds", "point", "log", "intersect_default", "__name", "waveEdgedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "waveAmplitude", "finalH", "cssStyles", "widthDif", "extraW", "rc", "at", "options", "userNodeOverrides", "points", "generateFullSineWavePoints", "waveEdgeRectPath", "createPathFromPoints", "waveEdgeRectNode", "waveEdgeRect", "updateNodeBounds", "point", "intersect_default", "__name", "waveRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "minWidth", "minHeight", "baseWidth", "baseHeight", "aspectRatio", "w", "h", "waveAmplitude", "finalH", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateFullSineWavePoints", "waveRectPath", "createPathFromPoints", "waveRectNode", "waveRect", "updateNodeBounds", "point", "intersect_default", "__name", "windowPane", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "rectOffset", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "outerPathPoints", "path", "no", "updateNodeBounds", "point", "intersect_default", "__name", "erBox", "parent", "node", "entityNode", "themeVariables", "getConfig", "background", "backgroundNode", "config", "PADDING", "TEXT_PADDING", "cssStyles", "labelStyles", "nodeStyles", "styles2String", "options", "calculateTextWidth", "shapeSvg", "drawRect", "evaluate", "textElement", "bbox", "cssClasses", "getNodeClasses", "nameBBox", "addText", "yOffset", "yOffsets", "rows", "maxTypeWidth", "maxNameWidth", "maxKeysWidth", "maxCommentWidth", "keysPresent", "commentPresent", "attribute", "typeBBox", "keysBBox", "commentBBox", "rowHeight", "totalWidthSections", "shapeBBox", "difference", "maxWidth", "rc", "at", "userNodeOverrides", "totalShapeBBoxHeight", "sum", "row", "w", "h", "x", "y", "_", "i", "nodes", "text", "select_default", "transform", "translateX", "translateY", "translate", "roughRect", "rect", "rowEven", "rowOdd", "nodeBorder", "isEven", "roughLine", "updateNodeBounds", "strokeStyles", "e", "s", "point", "intersect_default", "__name", "labelText", "classes", "style", "label", "parseGenericTypes", "createText", "child", "div", "dv", "textHelper", "parent", "node", "config", "useHtmlLabels", "GAP", "TEXT_PADDING", "shapeSvg", "getNodeClasses", "annotationGroup", "labelGroup", "membersGroup", "methodsGroup", "annotationGroupHeight", "labelGroupHeight", "membersGroupHeight", "annotation", "addText", "labelGroupBBox", "yOffset", "member", "height", "methodsYOffset", "method", "bbox", "annotationGroupBBox", "__name", "parentGroup", "styles", "textEl", "getConfig", "evaluate", "textContent", "hasKatex", "text", "createText", "sanitizeText", "decodeEntities", "calculateTextWidth", "numberOfLines", "div", "dv", "select_default", "images", "noImgText", "img", "res", "setupImage", "bodyFontSize", "width", "textChild", "classBox", "parent", "node", "config", "getConfig", "PADDING", "GAP", "useHtmlLabels", "evaluate", "classNode", "shapeSvg", "bbox", "textHelper", "labelStyles", "nodeStyles", "styles2String", "styles", "renderExtraBox", "rc", "at", "options", "userNodeOverrides", "w", "h", "x", "y", "roughRect", "rect", "rectBBox", "_", "i", "nodes", "text", "select_default", "transform", "translateY", "translate", "newTranslateY", "newTranslateX", "annotationGroupHeight", "labelGroupHeight", "membersGroupHeight", "roughLine", "colorRegex", "match", "colorStyle", "updateNodeBounds", "point", "intersect_default", "__name", "requirementBox", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "requirementNode", "elementNode", "padding", "gap", "isRequirementNode", "classes", "getNodeClasses", "shapeSvg", "typeHeight", "addText", "accumulativeHeight", "nameHeight", "idHeight", "textHeight", "riskHeight", "totalWidth", "totalHeight", "x", "rc", "at", "options", "userNodeOverrides", "roughRect", "rect", "_", "i", "nodes", "text", "select_default", "transform", "translateX", "translateY", "translate", "newTranslateY", "newTranslateX", "roughLine", "updateNodeBounds", "point", "intersect_default", "__name", "parentGroup", "inputText", "yOffset", "style", "textEl", "config", "getConfig", "useHtmlLabels", "createText", "sanitizeText", "decodeEntities", "calculateTextWidth", "bbox", "div", "dv", "textChild", "child", "colorFromPriority", "__name", "priority", "kanbanItem", "parent", "kanbanNode", "config", "labelStyles", "nodeStyles", "styles2String", "labelPaddingX", "orgWidth", "shapeSvg", "bbox", "labelElTitle", "labelHelper", "getNodeClasses", "padding", "ticketUrl", "link", "options", "labelEl", "bbox2", "insertLabel", "labelElAssigned", "bboxAssigned", "labelPaddingY", "totalWidth", "heightAdj", "totalHeight", "x", "y", "rect", "rx", "ry", "cssStyles", "rc", "at", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "line", "lineX", "y1", "y2", "updateNodeBounds", "point", "intersect_default", "bang", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "getNodeClasses", "w", "h", "r", "cssStyles", "minWidth", "minHeight", "effectiveWidth", "effectiveHeight", "bangElem", "path", "rc", "at", "options", "userNodeOverrides", "roughNode", "handleUndefinedAttr", "updateNodeBounds", "bounds", "point", "intersect_default", "log", "__name", "cloud", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "getNodeClasses", "w", "h", "r1", "r2", "r3", "r4", "cssStyles", "cloudElem", "path", "rc", "at", "options", "userNodeOverrides", "roughNode", "handleUndefinedAttr", "updateNodeBounds", "bounds", "point", "intersect_default", "log", "__name", "defaultMindmapNode", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "getNodeClasses", "w", "h", "rd", "rectPath", "bg", "updateNodeBounds", "bounds", "point", "intersect_default", "__name", "mindmapCircle", "parent", "node", "options", "circle", "__name", "shapesDefs", "squareRect", "roundedRect", "stadium", "subroutine", "cylinder", "circle", "bang", "cloud", "question", "hexagon", "lean_right", "lean_left", "trapezoid", "inv_trapezoid", "doublecircle", "text", "card", "shadedProcess", "stateStart", "stateEnd", "forkJoin", "hourglass", "curlyBraceLeft", "curlyBraceRight", "curlyBraces", "lightningBolt", "waveEdgedRectangle", "halfRoundedRectangle", "tiltedCylinder", "linedCylinder", "curvedTrapezoid", "dividedRectangle", "triangle", "windowPane", "filledCircle", "trapezoidalPentagon", "flippedTriangle", "slopedRect", "multiWaveEdgedRectangle", "multiRect", "bowTieRect", "crossedCircle", "taggedWaveEdgedRectangle", "taggedRect", "waveRectangle", "rect_left_inv_arrow", "linedWaveEdgedRect", "generateShapeMap", "__name", "entries", "state", "choice", "note", "rectWithTitle", "labelRect", "iconSquare", "iconCircle", "icon", "iconRounded", "imageSquare", "anchor", "kanbanItem", "mindmapCircle", "defaultMindmapNode", "classBox", "erBox", "requirementBox", "shape", "alias", "shapes", "isValidShape", "nodeElems", "insertNode", "elem", "node", "renderOptions", "newEl", "el", "shapeHandler", "shapes", "target", "__name", "setNodeElem", "clear", "positionNode", "log", "padding", "diff"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-C62D2QBJ.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-C62D2QBJ.mjs new file mode 100644 index 0000000..0cf4ccc --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-C62D2QBJ.mjs @@ -0,0 +1 @@ +import{a as e,b as n,c as s,d as o,e as u,g as d,m as l,r as c,t as m}from"./chunk-4R4BOZG6.mjs";import{a as t}from"./chunk-AQ6EADP3.mjs";var v=class extends m{static{t(this,"PieTokenBuilder")}static{e(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},C=class extends c{static{t(this,"PieValueConverter")}static{e(this,"PieValueConverter")}runCustomConverter(a,r,i){if(a.name==="PIE_SECTION_LABEL")return r.replace(/"/g,"").trim()}},P={parser:{TokenBuilder:e(()=>new v,"TokenBuilder"),ValueConverter:e(()=>new C,"ValueConverter")}};function p(a=u){let r=o(s(a),d),i=o(n({shared:r}),l,P);return r.ServiceRegistry.register(i),{shared:r,Pie:i}}t(p,"createPieServices");e(p,"createPieServices");export{P as a,p as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-C62D2QBJ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-C62D2QBJ.mjs.map new file mode 100644 index 0000000..4d9ddc7 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-C62D2QBJ.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-MZUSXYTE.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n EmptyFileSystem,\n MermaidGeneratedSharedModule,\n PieGrammarGeneratedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/pie/tokenBuilder.ts\nvar PieTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"PieTokenBuilder\");\n }\n constructor() {\n super([\"pie\", \"showData\"]);\n }\n};\n\n// src/language/pie/valueConverter.ts\nvar PieValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"PieValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name !== \"PIE_SECTION_LABEL\") {\n return void 0;\n }\n return input.replace(/\"/g, \"\").trim();\n }\n};\n\n// src/language/pie/module.ts\nvar PieModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new PieTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new PieValueConverter(), \"ValueConverter\")\n }\n};\nfunction createPieServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Pie = inject(\n createDefaultCoreModule({ shared }),\n PieGrammarGeneratedModule,\n PieModule\n );\n shared.ServiceRegistry.register(Pie);\n return { shared, Pie };\n}\n__name(createPieServices, \"createPieServices\");\n\nexport {\n PieModule,\n createPieServices\n};\n"], + "mappings": "0IAcA,IAAIA,EAAkB,cAAcC,CAA4B,CAdhE,MAcgE,CAAAC,EAAA,wBAC9D,MAAO,CACLA,EAAO,KAAM,iBAAiB,CAChC,CACA,aAAc,CACZ,MAAM,CAAC,MAAO,UAAU,CAAC,CAC3B,CACF,EAGIC,EAAoB,cAAcC,CAA8B,CAxBpE,MAwBoE,CAAAF,EAAA,0BAClE,MAAO,CACLA,EAAO,KAAM,mBAAmB,CAClC,CACA,mBAAmBG,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,oBAGlB,OAAOC,EAAM,QAAQ,KAAM,EAAE,EAAE,KAAK,CACtC,CACF,EAGIE,EAAY,CACd,OAAQ,CACN,aAA8BN,EAAO,IAAM,IAAIF,EAAmB,cAAc,EAChF,eAAgCE,EAAO,IAAM,IAAIC,EAAqB,gBAAgB,CACxF,CACF,EACA,SAASM,EAAkBC,EAAUC,EAAiB,CACpD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAMH,EACVI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAG,EAC5B,CAAE,OAAAJ,EAAQ,IAAAI,CAAI,CACvB,CAZSd,EAAAO,EAAA,qBAaTP,EAAOO,EAAmB,mBAAmB", + "names": ["PieTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "PieValueConverter", "AbstractMermaidValueConverter", "rule", "input", "_cstNode", "PieModule", "createPieServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Pie", "createDefaultCoreModule", "PieGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-CEXFNPSA.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-CEXFNPSA.mjs new file mode 100644 index 0000000..3e49740 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-CEXFNPSA.mjs @@ -0,0 +1 @@ +import{a as r,b as o,c as s,d as n,e as u,g as l,p as d,r as c,t as T}from"./chunk-4R4BOZG6.mjs";import{a}from"./chunk-AQ6EADP3.mjs";var V=class extends c{static{a(this,"TreeViewValueConverter")}static{r(this,"TreeViewValueConverter")}runCustomConverter(t,e,i){if(t.name==="INDENTATION")return e?.length||0;if(t.name==="STRING2")return e.substring(1,e.length-1)}},m=class extends T{static{a(this,"TreeViewTokenBuilder")}static{r(this,"TreeViewTokenBuilder")}constructor(){super(["treeView-beta"])}},v={parser:{TokenBuilder:r(()=>new m,"TokenBuilder"),ValueConverter:r(()=>new V,"ValueConverter")}};function w(t=u){let e=n(s(t),l),i=n(o({shared:e}),d,v);return e.ServiceRegistry.register(i),{shared:e,TreeView:i}}a(w,"createTreeViewServices");r(w,"createTreeViewServices");export{v as a,w as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-CEXFNPSA.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-CEXFNPSA.mjs.map new file mode 100644 index 0000000..ddf81c2 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-CEXFNPSA.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-WCWK7LTN.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n EmptyFileSystem,\n MermaidGeneratedSharedModule,\n TreeViewGrammarGeneratedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/treeView/valueConverter.ts\nvar TreeViewValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"TreeViewValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name === \"INDENTATION\") {\n return input?.length || 0;\n } else if (rule.name === \"STRING2\") {\n return input.substring(1, input.length - 1);\n }\n return void 0;\n }\n};\n\n// src/language/treeView/tokenBuilder.ts\nvar TreeViewTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"TreeViewTokenBuilder\");\n }\n constructor() {\n super([\"treeView-beta\"]);\n }\n};\n\n// src/language/treeView/module.ts\nvar TreeViewModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new TreeViewTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new TreeViewValueConverter(), \"ValueConverter\")\n }\n};\nfunction createTreeViewServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const TreeView = inject(\n createDefaultCoreModule({ shared }),\n TreeViewGrammarGeneratedModule,\n TreeViewModule\n );\n shared.ServiceRegistry.register(TreeView);\n return { shared, TreeView };\n}\n__name(createTreeViewServices, \"createTreeViewServices\");\n\nexport {\n TreeViewModule,\n createTreeViewServices\n};\n"], + "mappings": "qIAcA,IAAIA,EAAyB,cAAcC,CAA8B,CAdzE,MAcyE,CAAAC,EAAA,+BACvE,MAAO,CACLA,EAAO,KAAM,wBAAwB,CACvC,CACA,mBAAmBC,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,cAChB,OAAOC,GAAO,QAAU,EACnB,GAAID,EAAK,OAAS,UACvB,OAAOC,EAAM,UAAU,EAAGA,EAAM,OAAS,CAAC,CAG9C,CACF,EAGIE,EAAuB,cAAcC,CAA4B,CA7BrE,MA6BqE,CAAAL,EAAA,6BACnE,MAAO,CACLA,EAAO,KAAM,sBAAsB,CACrC,CACA,aAAc,CACZ,MAAM,CAAC,eAAe,CAAC,CACzB,CACF,EAGIM,EAAiB,CACnB,OAAQ,CACN,aAA8BN,EAAO,IAAM,IAAII,EAAwB,cAAc,EACrF,eAAgCJ,EAAO,IAAM,IAAIF,EAA0B,gBAAgB,CAC7F,CACF,EACA,SAASS,EAAuBC,EAAUC,EAAiB,CACzD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAWH,EACfI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAQ,EACjC,CAAE,OAAAJ,EAAQ,SAAAI,CAAS,CAC5B,CAZSd,EAAAO,EAAA,0BAaTP,EAAOO,EAAwB,wBAAwB", + "names": ["TreeViewValueConverter", "AbstractMermaidValueConverter", "__name", "rule", "input", "_cstNode", "TreeViewTokenBuilder", "AbstractMermaidTokenBuilder", "TreeViewModule", "createTreeViewServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "TreeView", "createDefaultCoreModule", "TreeViewGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-F3E5R7LK.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-F3E5R7LK.mjs deleted file mode 100644 index dd5be1a..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-F3E5R7LK.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as d,b as n,c as t,d as i,e as v,f as e,g as u,m as l,p as s,q as c}from"./chunk-GAX3EE6F.mjs";import{a}from"./chunk-VELTKBKT.mjs";var R=class extends c{static{a(this,"RadarTokenBuilder")}static{e(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},M={parser:{TokenBuilder:e(()=>new R,"TokenBuilder"),ValueConverter:e(()=>new s,"ValueConverter")}};function p(m=i){let r=t(n(m),u),o=t(d({shared:r}),l,M);return r.ServiceRegistry.register(o),{shared:r,Radar:o}}a(p,"createRadarServices");e(p,"createRadarServices");export{M as a,p as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-F3E5R7LK.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-F3E5R7LK.mjs.map deleted file mode 100644 index 3096aa0..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-F3E5R7LK.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-L3YUKLVL.mjs"], - "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n MermaidGeneratedSharedModule,\n RadarGrammarGeneratedModule,\n __name\n} from \"./chunk-XZSTWKYB.mjs\";\n\n// src/language/radar/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/radar/tokenBuilder.ts\nvar RadarTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"RadarTokenBuilder\");\n }\n constructor() {\n super([\"radar-beta\"]);\n }\n};\n\n// src/language/radar/module.ts\nvar RadarModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new RadarTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createRadarServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Radar = inject(\n createDefaultCoreModule({ shared }),\n RadarGrammarGeneratedModule,\n RadarModule\n );\n shared.ServiceRegistry.register(Radar);\n return { shared, Radar };\n}\n__name(createRadarServices, \"createRadarServices\");\n\nexport {\n RadarModule,\n createRadarServices\n};\n"], - "mappings": "4IAiBA,IAAIA,EAAoB,cAAcC,CAA4B,CAjBlE,MAiBkE,CAAAC,EAAA,0BAChE,MAAO,CACLA,EAAO,KAAM,mBAAmB,CAClC,CACA,aAAc,CACZ,MAAM,CAAC,YAAY,CAAC,CACtB,CACF,EAGIC,EAAc,CAChB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAqB,cAAc,EAClF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAoBC,EAAUC,EAAiB,CACtD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAQH,EACZI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAK,EAC9B,CAAE,OAAAJ,EAAQ,MAAAI,CAAM,CACzB,CAZSV,EAAAG,EAAA,uBAaTH,EAAOG,EAAqB,qBAAqB", - "names": ["RadarTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "RadarModule", "CommonValueConverter", "createRadarServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Radar", "createDefaultCoreModule", "RadarGrammarGeneratedModule"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-GAX3EE6F.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-GAX3EE6F.mjs deleted file mode 100644 index 1ade3ee..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-GAX3EE6F.mjs +++ /dev/null @@ -1,159 +0,0 @@ -import{A as Oe,B as mu,C as tr,D as At,G as im,I as Ft,L as Ge,M as bn,O as Go,R as Hs,S as sm,a as We,b as Or,c as ut,d as Ve,e as $e,g as Lr,i as Ks,j as _n,k as gr,l as Ke,m as nn,n as D,o as vt,p as ot,q as Dr,r as ft,s as _,t as dt,w as nm,x as G,y as pt,z as Se}from"./chunk-H3VCZNTA.mjs";import{d as ee}from"./chunk-QU3B7NT4.mjs";import{M as hu,d as rm,e as mr,z as Qe}from"./chunk-JIN56HTB.mjs";import{a as s,b as nE,c as X,d as rn,e as ae,f as du,g as pu}from"./chunk-VELTKBKT.mjs";var sl={};rn(sl,{AnnotatedTextEdit:()=>Xr,ChangeAnnotation:()=>ii,ChangeAnnotationIdentifier:()=>ct,CodeAction:()=>xd,CodeActionContext:()=>Rd,CodeActionKind:()=>Td,CodeActionTriggerKind:()=>za,CodeDescription:()=>Yf,CodeLens:()=>Ed,Color:()=>Qc,ColorInformation:()=>jf,ColorPresentation:()=>Bf,Command:()=>si,CompletionItem:()=>ad,CompletionItemKind:()=>ed,CompletionItemLabelDetails:()=>sd,CompletionItemTag:()=>rd,CompletionList:()=>od,CreateFile:()=>ss,DeleteFile:()=>os,Diagnostic:()=>Fa,DiagnosticRelatedInformation:()=>Zc,DiagnosticSeverity:()=>Kf,DiagnosticTag:()=>Hf,DocumentHighlight:()=>dd,DocumentHighlightKind:()=>fd,DocumentLink:()=>Ad,DocumentSymbol:()=>yd,DocumentUri:()=>Uf,EOL:()=>IA,FoldingRange:()=>Vf,FoldingRangeKind:()=>Wf,FormattingOptions:()=>vd,Hover:()=>cd,InlayHint:()=>bd,InlayHintKind:()=>nl,InlayHintLabelPart:()=>il,InlineCompletionContext:()=>Fd,InlineCompletionItem:()=>Od,InlineCompletionList:()=>Ld,InlineCompletionTriggerKind:()=>Dd,InlineValueContext:()=>_d,InlineValueEvaluatableExpression:()=>Id,InlineValueText:()=>Nd,InlineValueVariableLookup:()=>wd,InsertReplaceEdit:()=>nd,InsertTextFormat:()=>td,InsertTextMode:()=>id,Location:()=>Ma,LocationLink:()=>zf,MarkedString:()=>qa,MarkupContent:()=>cs,MarkupKind:()=>rl,OptionalVersionedTextDocumentIdentifier:()=>Ua,ParameterInformation:()=>ld,Position:()=>ce,Range:()=>ie,RenameFile:()=>as,SelectedCompletionInfo:()=>Md,SelectionRange:()=>$d,SemanticTokenModifiers:()=>kd,SemanticTokenTypes:()=>Sd,SemanticTokens:()=>Cd,SignatureInformation:()=>ud,StringValue:()=>Pd,SymbolInformation:()=>md,SymbolKind:()=>pd,SymbolTag:()=>hd,TextDocument:()=>Ud,TextDocumentEdit:()=>Ga,TextDocumentIdentifier:()=>Jf,TextDocumentItem:()=>Zf,TextEdit:()=>Ar,URI:()=>Jc,VersionedTextDocumentIdentifier:()=>Qf,WorkspaceChange:()=>Xf,WorkspaceEdit:()=>el,WorkspaceFolder:()=>Gd,WorkspaceSymbol:()=>gd,integer:()=>qf,uinteger:()=>Da});var Uf,Jc,qf,Da,ce,ie,Ma,zf,Qc,jf,Bf,Wf,Vf,Zc,Kf,Hf,Yf,Fa,si,Ar,ii,ct,Xr,Ga,ss,as,os,el,is,tl,Xf,Jf,Qf,Ua,Zf,rl,cs,ed,td,rd,nd,id,sd,ad,od,qa,cd,ld,ud,fd,dd,pd,hd,md,gd,yd,Td,za,Rd,xd,Ed,vd,Ad,$d,Sd,kd,Cd,Nd,wd,Id,_d,nl,il,bd,Pd,Od,Ld,Dd,Md,Fd,Gd,IA,Ud,qd,g,ls=nE(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}s(e,"is"),t.is=e})(Uf||(Uf={}));(function(t){function e(r){return typeof r=="string"}s(e,"is"),t.is=e})(Jc||(Jc={}));(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}s(e,"is"),t.is=e})(qf||(qf={}));(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}s(e,"is"),t.is=e})(Da||(Da={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=Da.MAX_VALUE),i===Number.MAX_VALUE&&(i=Da.MAX_VALUE),{line:n,character:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&g.uinteger(i.line)&&g.uinteger(i.character)}s(r,"is"),t.is=r})(ce||(ce={}));(function(t){function e(n,i,a,o){if(g.uinteger(n)&&g.uinteger(i)&&g.uinteger(a)&&g.uinteger(o))return{start:ce.create(n,i),end:ce.create(a,o)};if(ce.is(n)&&ce.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${o}]`)}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&ce.is(i.start)&&ce.is(i.end)}s(r,"is"),t.is=r})(ie||(ie={}));(function(t){function e(n,i){return{uri:n,range:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&ie.is(i.range)&&(g.string(i.uri)||g.undefined(i.uri))}s(r,"is"),t.is=r})(Ma||(Ma={}));(function(t){function e(n,i,a,o){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:o}}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&ie.is(i.targetRange)&&g.string(i.targetUri)&&ie.is(i.targetSelectionRange)&&(ie.is(i.originSelectionRange)||g.undefined(i.originSelectionRange))}s(r,"is"),t.is=r})(zf||(zf={}));(function(t){function e(n,i,a,o){return{red:n,green:i,blue:a,alpha:o}}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&g.numberRange(i.red,0,1)&&g.numberRange(i.green,0,1)&&g.numberRange(i.blue,0,1)&&g.numberRange(i.alpha,0,1)}s(r,"is"),t.is=r})(Qc||(Qc={}));(function(t){function e(n,i){return{range:n,color:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&ie.is(i.range)&&Qc.is(i.color)}s(r,"is"),t.is=r})(jf||(jf={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&g.string(i.label)&&(g.undefined(i.textEdit)||Ar.is(i))&&(g.undefined(i.additionalTextEdits)||g.typedArray(i.additionalTextEdits,Ar.is))}s(r,"is"),t.is=r})(Bf||(Bf={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(Wf||(Wf={}));(function(t){function e(n,i,a,o,c,l){let u={startLine:n,endLine:i};return g.defined(a)&&(u.startCharacter=a),g.defined(o)&&(u.endCharacter=o),g.defined(c)&&(u.kind=c),g.defined(l)&&(u.collapsedText=l),u}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&g.uinteger(i.startLine)&&g.uinteger(i.startLine)&&(g.undefined(i.startCharacter)||g.uinteger(i.startCharacter))&&(g.undefined(i.endCharacter)||g.uinteger(i.endCharacter))&&(g.undefined(i.kind)||g.string(i.kind))}s(r,"is"),t.is=r})(Vf||(Vf={}));(function(t){function e(n,i){return{location:n,message:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&Ma.is(i.location)&&g.string(i.message)}s(r,"is"),t.is=r})(Zc||(Zc={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(Kf||(Kf={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(Hf||(Hf={}));(function(t){function e(r){let n=r;return g.objectLiteral(n)&&g.string(n.href)}s(e,"is"),t.is=e})(Yf||(Yf={}));(function(t){function e(n,i,a,o,c,l){let u={range:n,message:i};return g.defined(a)&&(u.severity=a),g.defined(o)&&(u.code=o),g.defined(c)&&(u.source=c),g.defined(l)&&(u.relatedInformation=l),u}s(e,"create"),t.create=e;function r(n){var i;let a=n;return g.defined(a)&&ie.is(a.range)&&g.string(a.message)&&(g.number(a.severity)||g.undefined(a.severity))&&(g.integer(a.code)||g.string(a.code)||g.undefined(a.code))&&(g.undefined(a.codeDescription)||g.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(g.string(a.source)||g.undefined(a.source))&&(g.undefined(a.relatedInformation)||g.typedArray(a.relatedInformation,Zc.is))}s(r,"is"),t.is=r})(Fa||(Fa={}));(function(t){function e(n,i,...a){let o={title:n,command:i};return g.defined(a)&&a.length>0&&(o.arguments=a),o}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&g.string(i.title)&&g.string(i.command)}s(r,"is"),t.is=r})(si||(si={}));(function(t){function e(a,o){return{range:a,newText:o}}s(e,"replace"),t.replace=e;function r(a,o){return{range:{start:a,end:a},newText:o}}s(r,"insert"),t.insert=r;function n(a){return{range:a,newText:""}}s(n,"del"),t.del=n;function i(a){let o=a;return g.objectLiteral(o)&&g.string(o.newText)&&ie.is(o.range)}s(i,"is"),t.is=i})(Ar||(Ar={}));(function(t){function e(n,i,a){let o={label:n};return i!==void 0&&(o.needsConfirmation=i),a!==void 0&&(o.description=a),o}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&g.string(i.label)&&(g.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(g.string(i.description)||i.description===void 0)}s(r,"is"),t.is=r})(ii||(ii={}));(function(t){function e(r){let n=r;return g.string(n)}s(e,"is"),t.is=e})(ct||(ct={}));(function(t){function e(a,o,c){return{range:a,newText:o,annotationId:c}}s(e,"replace"),t.replace=e;function r(a,o,c){return{range:{start:a,end:a},newText:o,annotationId:c}}s(r,"insert"),t.insert=r;function n(a,o){return{range:a,newText:"",annotationId:o}}s(n,"del"),t.del=n;function i(a){let o=a;return Ar.is(o)&&(ii.is(o.annotationId)||ct.is(o.annotationId))}s(i,"is"),t.is=i})(Xr||(Xr={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&Ua.is(i.textDocument)&&Array.isArray(i.edits)}s(r,"is"),t.is=r})(Ga||(Ga={}));(function(t){function e(n,i,a){let o={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(o.options=i),a!==void 0&&(o.annotationId=a),o}s(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&g.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||g.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||g.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||ct.is(i.annotationId))}s(r,"is"),t.is=r})(ss||(ss={}));(function(t){function e(n,i,a,o){let c={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(c.options=a),o!==void 0&&(c.annotationId=o),c}s(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&g.string(i.oldUri)&&g.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||g.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||g.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||ct.is(i.annotationId))}s(r,"is"),t.is=r})(as||(as={}));(function(t){function e(n,i,a){let o={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(o.options=i),a!==void 0&&(o.annotationId=a),o}s(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&g.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||g.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||g.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||ct.is(i.annotationId))}s(r,"is"),t.is=r})(os||(os={}));(function(t){function e(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>g.string(i.kind)?ss.is(i)||as.is(i)||os.is(i):Ga.is(i)))}s(e,"is"),t.is=e})(el||(el={}));is=class{static{s(this,"TextEditChangeImpl")}constructor(e,r){this.edits=e,this.changeAnnotations=r}insert(e,r,n){let i,a;if(n===void 0?i=Ar.insert(e,r):ct.is(n)?(a=n,i=Xr.insert(e,r,n)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(n),i=Xr.insert(e,r,a)),this.edits.push(i),a!==void 0)return a}replace(e,r,n){let i,a;if(n===void 0?i=Ar.replace(e,r):ct.is(n)?(a=n,i=Xr.replace(e,r,n)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(n),i=Xr.replace(e,r,a)),this.edits.push(i),a!==void 0)return a}delete(e,r){let n,i;if(r===void 0?n=Ar.del(e):ct.is(r)?(i=r,n=Xr.del(e,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Xr.del(e,i)),this.edits.push(n),i!==void 0)return i}add(e){this.edits.push(e)}all(){return this.edits}clear(){this.edits.splice(0,this.edits.length)}assertChangeAnnotations(e){if(e===void 0)throw new Error("Text edit change is not configured to manage change annotations.")}},tl=class{static{s(this,"ChangeAnnotations")}constructor(e){this._annotations=e===void 0?Object.create(null):e,this._counter=0,this._size=0}all(){return this._annotations}get size(){return this._size}manage(e,r){let n;if(ct.is(e)?n=e:(n=this.nextId(),r=e),this._annotations[n]!==void 0)throw new Error(`Id ${n} is already in use.`);if(r===void 0)throw new Error(`No annotation provided for id ${n}`);return this._annotations[n]=r,this._size++,n}nextId(){return this._counter++,this._counter.toString()}},Xf=class{static{s(this,"WorkspaceChange")}constructor(e){this._textEditChanges=Object.create(null),e!==void 0?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new tl(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(r=>{if(Ga.is(r)){let n=new is(r.edits,this._changeAnnotations);this._textEditChanges[r.textDocument.uri]=n}})):e.changes&&Object.keys(e.changes).forEach(r=>{let n=new is(e.changes[r]);this._textEditChanges[r]=n})):this._workspaceEdit={}}get edit(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit}getTextEditChange(e){if(Ua.is(e)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let r={uri:e.uri,version:e.version},n=this._textEditChanges[r.uri];if(!n){let i=[],a={textDocument:r,edits:i};this._workspaceEdit.documentChanges.push(a),n=new is(i,this._changeAnnotations),this._textEditChanges[r.uri]=n}return n}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");let r=this._textEditChanges[e];if(!r){let n=[];this._workspaceEdit.changes[e]=n,r=new is(n),this._textEditChanges[e]=r}return r}}initDocumentChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new tl,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())}initChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))}createFile(e,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let i;ii.is(r)||ct.is(r)?i=r:n=r;let a,o;if(i===void 0?a=ss.create(e,n):(o=ct.is(i)?i:this._changeAnnotations.manage(i),a=ss.create(e,n,o)),this._workspaceEdit.documentChanges.push(a),o!==void 0)return o}renameFile(e,r,n,i){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let a;ii.is(n)||ct.is(n)?a=n:i=n;let o,c;if(a===void 0?o=as.create(e,r,i):(c=ct.is(a)?a:this._changeAnnotations.manage(a),o=as.create(e,r,i,c)),this._workspaceEdit.documentChanges.push(o),c!==void 0)return c}deleteFile(e,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let i;ii.is(r)||ct.is(r)?i=r:n=r;let a,o;if(i===void 0?a=os.create(e,n):(o=ct.is(i)?i:this._changeAnnotations.manage(i),a=os.create(e,n,o)),this._workspaceEdit.documentChanges.push(a),o!==void 0)return o}};(function(t){function e(n){return{uri:n}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&g.string(i.uri)}s(r,"is"),t.is=r})(Jf||(Jf={}));(function(t){function e(n,i){return{uri:n,version:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&g.string(i.uri)&&g.integer(i.version)}s(r,"is"),t.is=r})(Qf||(Qf={}));(function(t){function e(n,i){return{uri:n,version:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&g.string(i.uri)&&(i.version===null||g.integer(i.version))}s(r,"is"),t.is=r})(Ua||(Ua={}));(function(t){function e(n,i,a,o){return{uri:n,languageId:i,version:a,text:o}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&g.string(i.uri)&&g.string(i.languageId)&&g.integer(i.version)&&g.string(i.text)}s(r,"is"),t.is=r})(Zf||(Zf={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}s(e,"is"),t.is=e})(rl||(rl={}));(function(t){function e(r){let n=r;return g.objectLiteral(r)&&rl.is(n.kind)&&g.string(n.value)}s(e,"is"),t.is=e})(cs||(cs={}));(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(ed||(ed={}));(function(t){t.PlainText=1,t.Snippet=2})(td||(td={}));(function(t){t.Deprecated=1})(rd||(rd={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}s(e,"create"),t.create=e;function r(n){let i=n;return i&&g.string(i.newText)&&ie.is(i.insert)&&ie.is(i.replace)}s(r,"is"),t.is=r})(nd||(nd={}));(function(t){t.asIs=1,t.adjustIndentation=2})(id||(id={}));(function(t){function e(r){let n=r;return n&&(g.string(n.detail)||n.detail===void 0)&&(g.string(n.description)||n.description===void 0)}s(e,"is"),t.is=e})(sd||(sd={}));(function(t){function e(r){return{label:r}}s(e,"create"),t.create=e})(ad||(ad={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}s(e,"create"),t.create=e})(od||(od={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}s(e,"fromPlainText"),t.fromPlainText=e;function r(n){let i=n;return g.string(i)||g.objectLiteral(i)&&g.string(i.language)&&g.string(i.value)}s(r,"is"),t.is=r})(qa||(qa={}));(function(t){function e(r){let n=r;return!!n&&g.objectLiteral(n)&&(cs.is(n.contents)||qa.is(n.contents)||g.typedArray(n.contents,qa.is))&&(r.range===void 0||ie.is(r.range))}s(e,"is"),t.is=e})(cd||(cd={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}s(e,"create"),t.create=e})(ld||(ld={}));(function(t){function e(r,n,...i){let a={label:r};return g.defined(n)&&(a.documentation=n),g.defined(i)?a.parameters=i:a.parameters=[],a}s(e,"create"),t.create=e})(ud||(ud={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(fd||(fd={}));(function(t){function e(r,n){let i={range:r};return g.number(n)&&(i.kind=n),i}s(e,"create"),t.create=e})(dd||(dd={}));(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(pd||(pd={}));(function(t){t.Deprecated=1})(hd||(hd={}));(function(t){function e(r,n,i,a,o){let c={name:r,kind:n,location:{uri:a,range:i}};return o&&(c.containerName=o),c}s(e,"create"),t.create=e})(md||(md={}));(function(t){function e(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}s(e,"create"),t.create=e})(gd||(gd={}));(function(t){function e(n,i,a,o,c,l){let u={name:n,detail:i,kind:a,range:o,selectionRange:c};return l!==void 0&&(u.children=l),u}s(e,"create"),t.create=e;function r(n){let i=n;return i&&g.string(i.name)&&g.number(i.kind)&&ie.is(i.range)&&ie.is(i.selectionRange)&&(i.detail===void 0||g.string(i.detail))&&(i.deprecated===void 0||g.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}s(r,"is"),t.is=r})(yd||(yd={}));(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(Td||(Td={}));(function(t){t.Invoked=1,t.Automatic=2})(za||(za={}));(function(t){function e(n,i,a){let o={diagnostics:n};return i!=null&&(o.only=i),a!=null&&(o.triggerKind=a),o}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&g.typedArray(i.diagnostics,Fa.is)&&(i.only===void 0||g.typedArray(i.only,g.string))&&(i.triggerKind===void 0||i.triggerKind===za.Invoked||i.triggerKind===za.Automatic)}s(r,"is"),t.is=r})(Rd||(Rd={}));(function(t){function e(n,i,a){let o={title:n},c=!0;return typeof i=="string"?(c=!1,o.kind=i):si.is(i)?o.command=i:o.edit=i,c&&a!==void 0&&(o.kind=a),o}s(e,"create"),t.create=e;function r(n){let i=n;return i&&g.string(i.title)&&(i.diagnostics===void 0||g.typedArray(i.diagnostics,Fa.is))&&(i.kind===void 0||g.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||si.is(i.command))&&(i.isPreferred===void 0||g.boolean(i.isPreferred))&&(i.edit===void 0||el.is(i.edit))}s(r,"is"),t.is=r})(xd||(xd={}));(function(t){function e(n,i){let a={range:n};return g.defined(i)&&(a.data=i),a}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&ie.is(i.range)&&(g.undefined(i.command)||si.is(i.command))}s(r,"is"),t.is=r})(Ed||(Ed={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&g.uinteger(i.tabSize)&&g.boolean(i.insertSpaces)}s(r,"is"),t.is=r})(vd||(vd={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&ie.is(i.range)&&(g.undefined(i.target)||g.string(i.target))}s(r,"is"),t.is=r})(Ad||(Ad={}));(function(t){function e(n,i){return{range:n,parent:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&ie.is(i.range)&&(i.parent===void 0||t.is(i.parent))}s(r,"is"),t.is=r})($d||($d={}));(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(Sd||(Sd={}));(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(kd||(kd={}));(function(t){function e(r){let n=r;return g.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}s(e,"is"),t.is=e})(Cd||(Cd={}));(function(t){function e(n,i){return{range:n,text:i}}s(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&ie.is(i.range)&&g.string(i.text)}s(r,"is"),t.is=r})(Nd||(Nd={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}s(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&ie.is(i.range)&&g.boolean(i.caseSensitiveLookup)&&(g.string(i.variableName)||i.variableName===void 0)}s(r,"is"),t.is=r})(wd||(wd={}));(function(t){function e(n,i){return{range:n,expression:i}}s(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&ie.is(i.range)&&(g.string(i.expression)||i.expression===void 0)}s(r,"is"),t.is=r})(Id||(Id={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}s(e,"create"),t.create=e;function r(n){let i=n;return g.defined(i)&&ie.is(n.stoppedLocation)}s(r,"is"),t.is=r})(_d||(_d={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}s(e,"is"),t.is=e})(nl||(nl={}));(function(t){function e(n){return{value:n}}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&(i.tooltip===void 0||g.string(i.tooltip)||cs.is(i.tooltip))&&(i.location===void 0||Ma.is(i.location))&&(i.command===void 0||si.is(i.command))}s(r,"is"),t.is=r})(il||(il={}));(function(t){function e(n,i,a){let o={position:n,label:i};return a!==void 0&&(o.kind=a),o}s(e,"create"),t.create=e;function r(n){let i=n;return g.objectLiteral(i)&&ce.is(i.position)&&(g.string(i.label)||g.typedArray(i.label,il.is))&&(i.kind===void 0||nl.is(i.kind))&&i.textEdits===void 0||g.typedArray(i.textEdits,Ar.is)&&(i.tooltip===void 0||g.string(i.tooltip)||cs.is(i.tooltip))&&(i.paddingLeft===void 0||g.boolean(i.paddingLeft))&&(i.paddingRight===void 0||g.boolean(i.paddingRight))}s(r,"is"),t.is=r})(bd||(bd={}));(function(t){function e(r){return{kind:"snippet",value:r}}s(e,"createSnippet"),t.createSnippet=e})(Pd||(Pd={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}s(e,"create"),t.create=e})(Od||(Od={}));(function(t){function e(r){return{items:r}}s(e,"create"),t.create=e})(Ld||(Ld={}));(function(t){t.Invoked=0,t.Automatic=1})(Dd||(Dd={}));(function(t){function e(r,n){return{range:r,text:n}}s(e,"create"),t.create=e})(Md||(Md={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}s(e,"create"),t.create=e})(Fd||(Fd={}));(function(t){function e(r){let n=r;return g.objectLiteral(n)&&Jc.is(n.uri)&&g.string(n.name)}s(e,"is"),t.is=e})(Gd||(Gd={}));IA=[` -`,`\r -`,"\r"];(function(t){function e(a,o,c,l){return new qd(a,o,c,l)}s(e,"create"),t.create=e;function r(a){let o=a;return!!(g.defined(o)&&g.string(o.uri)&&(g.undefined(o.languageId)||g.string(o.languageId))&&g.uinteger(o.lineCount)&&g.func(o.getText)&&g.func(o.positionAt)&&g.func(o.offsetAt))}s(r,"is"),t.is=r;function n(a,o){let c=a.getText(),l=i(o,(d,h)=>{let m=d.range.start.line-h.range.start.line;return m===0?d.range.start.character-h.range.start.character:m}),u=c.length;for(let d=l.length-1;d>=0;d--){let h=l[d],m=a.offsetAt(h.range.start),y=a.offsetAt(h.range.end);if(y<=u)c=c.substring(0,m)+h.newText+c.substring(y,c.length);else throw new Error("Overlapping edit");u=m}return c}s(n,"applyEdits"),t.applyEdits=n;function i(a,o){if(a.length<=1)return a;let c=a.length/2|0,l=a.slice(0,c),u=a.slice(c);i(l,o),i(u,o);let d=0,h=0,m=0;for(;d0&&e.push(r.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return ce.create(0,e);for(;ne?i=o:n=o+1}let a=n-1;return ce.create(a,e-r[a])}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line],i=e.line+1"u"}s(n,"undefined"),t.undefined=n;function i(y){return y===!0||y===!1}s(i,"boolean"),t.boolean=i;function a(y){return e.call(y)==="[object String]"}s(a,"string"),t.string=a;function o(y){return e.call(y)==="[object Number]"}s(o,"number"),t.number=o;function c(y,C,w){return e.call(y)==="[object Number]"&&C<=y&&y<=w}s(c,"numberRange"),t.numberRange=c;function l(y){return e.call(y)==="[object Number]"&&-2147483648<=y&&y<=2147483647}s(l,"integer"),t.integer=l;function u(y){return e.call(y)==="[object Number]"&&0<=y&&y<=2147483647}s(u,"uinteger"),t.uinteger=u;function d(y){return e.call(y)==="[object Function]"}s(d,"func"),t.func=d;function h(y){return y!==null&&typeof y=="object"}s(h,"objectLiteral"),t.objectLiteral=h;function m(y,C){return Array.isArray(y)&&y.every(C)}s(m,"typedArray"),t.typedArray=m})(g||(g={}))});var En=X(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});var Yd;function Xd(){if(Yd===void 0)throw new Error("No runtime abstraction layer installed");return Yd}s(Xd,"RAL");(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");Yd=r}s(e,"install"),t.install=e})(Xd||(Xd={}));Jd.default=Xd});var ds=X(gt=>{"use strict";Object.defineProperty(gt,"__esModule",{value:!0});gt.stringArray=gt.array=gt.func=gt.error=gt.number=gt.string=gt.boolean=void 0;function zA(t){return t===!0||t===!1}s(zA,"boolean");gt.boolean=zA;function Xg(t){return typeof t=="string"||t instanceof String}s(Xg,"string");gt.string=Xg;function jA(t){return typeof t=="number"||t instanceof Number}s(jA,"number");gt.number=jA;function BA(t){return t instanceof Error}s(BA,"error");gt.error=BA;function WA(t){return typeof t=="function"}s(WA,"func");gt.func=WA;function Jg(t){return Array.isArray(t)}s(Jg,"array");gt.array=Jg;function VA(t){return Jg(t)&&t.every(e=>Xg(e))}s(VA,"stringArray");gt.stringArray=VA});var ui=X(ps=>{"use strict";Object.defineProperty(ps,"__esModule",{value:!0});ps.Emitter=ps.Event=void 0;var KA=En(),Qg;(function(t){let e={dispose(){}};t.None=function(){return e}})(Qg||(ps.Event=Qg={}));var Qd=class{static{s(this,"CallbackList")}add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:s(()=>this.remove(e,r),"dispose")})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,a=this._callbacks.length;i{this._callbacks||(this._callbacks=new Qd),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:s(()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};ps.Emitter=ul;ul._noop=function(){}});var Ya=X(hs=>{"use strict";Object.defineProperty(hs,"__esModule",{value:!0});hs.CancellationTokenSource=hs.CancellationToken=void 0;var HA=En(),YA=ds(),Zd=ui(),fl;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Zd.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:Zd.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||YA.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}s(e,"is"),t.is=e})(fl||(hs.CancellationToken=fl={}));var XA=Object.freeze(function(t,e){let r=(0,HA.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),dl=class{static{s(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?XA:(this._emitter||(this._emitter=new Zd.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},ep=class{static{s(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new dl),this._token}cancel(){this._token?this._token.cancel():this._token=fl.Cancelled}dispose(){this._token?this._token instanceof dl&&this._token.dispose():this._token=fl.None}};hs.CancellationTokenSource=ep});var wp=X(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});j.Message=j.NotificationType9=j.NotificationType8=j.NotificationType7=j.NotificationType6=j.NotificationType5=j.NotificationType4=j.NotificationType3=j.NotificationType2=j.NotificationType1=j.NotificationType0=j.NotificationType=j.RequestType9=j.RequestType8=j.RequestType7=j.RequestType6=j.RequestType5=j.RequestType4=j.RequestType3=j.RequestType2=j.RequestType1=j.RequestType=j.RequestType0=j.AbstractMessageSignature=j.ParameterStructures=j.ResponseError=j.ErrorCodes=void 0;var mi=ds(),sp;(function(t){t.ParseError=-32700,t.InvalidRequest=-32600,t.MethodNotFound=-32601,t.InvalidParams=-32602,t.InternalError=-32603,t.jsonrpcReservedErrorRangeStart=-32099,t.serverErrorStart=-32099,t.MessageWriteError=-32099,t.MessageReadError=-32098,t.PendingResponseRejected=-32097,t.ConnectionInactive=-32096,t.ServerNotInitialized=-32002,t.UnknownErrorCode=-32001,t.jsonrpcReservedErrorRangeEnd=-32e3,t.serverErrorEnd=-32e3})(sp||(j.ErrorCodes=sp={}));var ap=class t extends Error{static{s(this,"ResponseError")}constructor(e,r,n){super(r),this.code=mi.number(e)?e:sp.UnknownErrorCode,this.data=n,Object.setPrototypeOf(this,t.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};j.ResponseError=ap;var Ot=class t{static{s(this,"ParameterStructures")}constructor(e){this.kind=e}static is(e){return e===t.auto||e===t.byName||e===t.byPosition}toString(){return this.kind}};j.ParameterStructures=Ot;Ot.auto=new Ot("auto");Ot.byPosition=new Ot("byPosition");Ot.byName=new Ot("byName");var Ce=class{static{s(this,"AbstractMessageSignature")}constructor(e,r){this.method=e,this.numberOfParams=r}get parameterStructures(){return Ot.auto}};j.AbstractMessageSignature=Ce;var op=class extends Ce{static{s(this,"RequestType0")}constructor(e){super(e,0)}};j.RequestType0=op;var cp=class extends Ce{static{s(this,"RequestType")}constructor(e,r=Ot.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};j.RequestType=cp;var lp=class extends Ce{static{s(this,"RequestType1")}constructor(e,r=Ot.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};j.RequestType1=lp;var up=class extends Ce{static{s(this,"RequestType2")}constructor(e){super(e,2)}};j.RequestType2=up;var fp=class extends Ce{static{s(this,"RequestType3")}constructor(e){super(e,3)}};j.RequestType3=fp;var dp=class extends Ce{static{s(this,"RequestType4")}constructor(e){super(e,4)}};j.RequestType4=dp;var pp=class extends Ce{static{s(this,"RequestType5")}constructor(e){super(e,5)}};j.RequestType5=pp;var hp=class extends Ce{static{s(this,"RequestType6")}constructor(e){super(e,6)}};j.RequestType6=hp;var mp=class extends Ce{static{s(this,"RequestType7")}constructor(e){super(e,7)}};j.RequestType7=mp;var gp=class extends Ce{static{s(this,"RequestType8")}constructor(e){super(e,8)}};j.RequestType8=gp;var yp=class extends Ce{static{s(this,"RequestType9")}constructor(e){super(e,9)}};j.RequestType9=yp;var Tp=class extends Ce{static{s(this,"NotificationType")}constructor(e,r=Ot.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};j.NotificationType=Tp;var Rp=class extends Ce{static{s(this,"NotificationType0")}constructor(e){super(e,0)}};j.NotificationType0=Rp;var xp=class extends Ce{static{s(this,"NotificationType1")}constructor(e,r=Ot.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};j.NotificationType1=xp;var Ep=class extends Ce{static{s(this,"NotificationType2")}constructor(e){super(e,2)}};j.NotificationType2=Ep;var vp=class extends Ce{static{s(this,"NotificationType3")}constructor(e){super(e,3)}};j.NotificationType3=vp;var Ap=class extends Ce{static{s(this,"NotificationType4")}constructor(e){super(e,4)}};j.NotificationType4=Ap;var $p=class extends Ce{static{s(this,"NotificationType5")}constructor(e){super(e,5)}};j.NotificationType5=$p;var Sp=class extends Ce{static{s(this,"NotificationType6")}constructor(e){super(e,6)}};j.NotificationType6=Sp;var kp=class extends Ce{static{s(this,"NotificationType7")}constructor(e){super(e,7)}};j.NotificationType7=kp;var Cp=class extends Ce{static{s(this,"NotificationType8")}constructor(e){super(e,8)}};j.NotificationType8=Cp;var Np=class extends Ce{static{s(this,"NotificationType9")}constructor(e){super(e,9)}};j.NotificationType9=Np;var uy;(function(t){function e(i){let a=i;return a&&mi.string(a.method)&&(mi.string(a.id)||mi.number(a.id))}s(e,"isRequest"),t.isRequest=e;function r(i){let a=i;return a&&mi.string(a.method)&&i.id===void 0}s(r,"isNotification"),t.isNotification=r;function n(i){let a=i;return a&&(a.result!==void 0||!!a.error)&&(mi.string(a.id)||mi.number(a.id)||a.id===null)}s(n,"isResponse"),t.isResponse=n})(uy||(j.Message=uy={}))});var _p=X(vn=>{"use strict";var fy;Object.defineProperty(vn,"__esModule",{value:!0});vn.LRUCache=vn.LinkedMap=vn.Touch=void 0;var Tt;(function(t){t.None=0,t.First=1,t.AsOld=t.First,t.Last=2,t.AsNew=t.Last})(Tt||(vn.Touch=Tt={}));var Rl=class{static{s(this,"LinkedMap")}constructor(){this[fy]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,r=Tt.None){let n=this._map.get(e);if(n)return r!==Tt.None&&this.touch(n,r),n.value}set(e,r,n=Tt.None){let i=this._map.get(e);if(i)i.value=r,n!==Tt.None&&this.touch(i,n);else{switch(i={key:e,value:r,next:void 0,previous:void 0},n){case Tt.None:this.addItemLast(i);break;case Tt.First:this.addItemFirst(i);break;case Tt.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let r=this._map.get(e);if(r)return this._map.delete(e),this.removeItem(r),this._size--,r.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,r){let n=this._state,i=this._head;for(;i;){if(r?e.bind(r)(i.value,i.key,this):e(i.value,i.key,this),this._state!==n)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:s(()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:r.key,done:!1};return r=r.next,i}else return{value:void 0,done:!0}},"next")};return n}values(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:s(()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:r.value,done:!1};return r=r.next,i}else return{value:void 0,done:!0}},"next")};return n}entries(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:s(()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:[r.key,r.value],done:!1};return r=r.next,i}else return{value:void 0,done:!0}},"next")};return n}[(fy=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let r=this._head,n=this.size;for(;r&&n>e;)this._map.delete(r.key),r=r.next,n--;this._head=r,this._size=n,r&&(r.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{let r=e.next,n=e.previous;if(!r||!n)throw new Error("Invalid list");r.previous=n,n.next=r}e.next=void 0,e.previous=void 0,this._state++}touch(e,r){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(r!==Tt.First&&r!==Tt.Last)){if(r===Tt.First){if(e===this._head)return;let n=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(n.previous=i,i.next=n),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(r===Tt.Last){if(e===this._tail)return;let n=e.next,i=e.previous;e===this._head?(n.previous=void 0,this._head=n):(n.previous=i,i.next=n),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((r,n)=>{e.push([n,r])}),e}fromJSON(e){this.clear();for(let[r,n]of e)this.set(r,n)}};vn.LinkedMap=Rl;var Ip=class extends Rl{static{s(this,"LRUCache")}constructor(e,r=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,r),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,r=Tt.AsNew){return super.get(e,r)}peek(e){return super.get(e,Tt.None)}set(e,r){return super.set(e,r,Tt.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};vn.LRUCache=Ip});var py=X(xl=>{"use strict";Object.defineProperty(xl,"__esModule",{value:!0});xl.Disposable=void 0;var dy;(function(t){function e(r){return{dispose:r}}s(e,"create"),t.create=e})(dy||(xl.Disposable=dy={}))});var hy=X(Es=>{"use strict";Object.defineProperty(Es,"__esModule",{value:!0});Es.SharedArrayReceiverStrategy=Es.SharedArraySenderStrategy=void 0;var ZA=Ya(),ho;(function(t){t.Continue=0,t.Cancelled=1})(ho||(ho={}));var bp=class{static{s(this,"SharedArraySenderStrategy")}constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let r=new SharedArrayBuffer(4),n=new Int32Array(r,0,1);n[0]=ho.Continue,this.buffers.set(e.id,r),e.$cancellationData=r}async sendCancellation(e,r){let n=this.buffers.get(r);if(n===void 0)return;let i=new Int32Array(n,0,1);Atomics.store(i,0,ho.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};Es.SharedArraySenderStrategy=bp;var Pp=class{static{s(this,"SharedArrayBufferCancellationToken")}constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===ho.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},Op=class{static{s(this,"SharedArrayBufferCancellationTokenSource")}constructor(e){this.token=new Pp(e)}cancel(){}dispose(){}},Lp=class{static{s(this,"SharedArrayReceiverStrategy")}constructor(){this.kind="request"}createCancellationTokenSource(e){let r=e.$cancellationData;return r===void 0?new ZA.CancellationTokenSource:new Op(r)}};Es.SharedArrayReceiverStrategy=Lp});var Mp=X(El=>{"use strict";Object.defineProperty(El,"__esModule",{value:!0});El.Semaphore=void 0;var e$=En(),Dp=class{static{s(this,"Semaphore")}constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((r,n)=>{this._waiting.push({thunk:e,resolve:r,reject:n}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,e$.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let r=e.thunk();r instanceof Promise?r.then(n=>{this._active--,e.resolve(n),this.runNext()},n=>{this._active--,e.reject(n),this.runNext()}):(this._active--,e.resolve(r),this.runNext())}catch(r){this._active--,e.reject(r),this.runNext()}}};El.Semaphore=Dp});var gy=X(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});An.ReadableStreamMessageReader=An.AbstractMessageReader=An.MessageReader=void 0;var Gp=En(),vs=ds(),Fp=ui(),t$=Mp(),my;(function(t){function e(r){let n=r;return n&&vs.func(n.listen)&&vs.func(n.dispose)&&vs.func(n.onError)&&vs.func(n.onClose)&&vs.func(n.onPartialMessage)}s(e,"is"),t.is=e})(my||(An.MessageReader=my={}));var vl=class{static{s(this,"AbstractMessageReader")}constructor(){this.errorEmitter=new Fp.Emitter,this.closeEmitter=new Fp.Emitter,this.partialMessageEmitter=new Fp.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${vs.string(e.message)?e.message:"unknown"}`)}};An.AbstractMessageReader=vl;var Up;(function(t){function e(r){let n,i,a,o=new Map,c,l=new Map;if(r===void 0||typeof r=="string")n=r??"utf-8";else{if(n=r.charset??"utf-8",r.contentDecoder!==void 0&&(a=r.contentDecoder,o.set(a.name,a)),r.contentDecoders!==void 0)for(let u of r.contentDecoders)o.set(u.name,u);if(r.contentTypeDecoder!==void 0&&(c=r.contentTypeDecoder,l.set(c.name,c)),r.contentTypeDecoders!==void 0)for(let u of r.contentTypeDecoders)l.set(u.name,u)}return c===void 0&&(c=(0,Gp.default)().applicationJson.decoder,l.set(c.name,c)),{charset:n,contentDecoder:a,contentDecoders:o,contentTypeDecoder:c,contentTypeDecoders:l}}s(e,"fromOptions"),t.fromOptions=e})(Up||(Up={}));var qp=class extends vl{static{s(this,"ReadableStreamMessageReader")}constructor(e,r){super(),this.readable=e,this.options=Up.fromOptions(r),this.buffer=(0,Gp.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new t$.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let r=this.readable.onData(n=>{this.onData(n)});return this.readable.onError(n=>this.fireError(n)),this.readable.onClose(()=>this.fireClose()),r}onData(e){try{for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let n=this.buffer.tryReadHeaders(!0);if(!n)return;let i=n.get("content-length");if(!i){this.fireError(new Error(`Header must provide a Content-Length property. -${JSON.stringify(Object.fromEntries(n))}`));return}let a=parseInt(i);if(isNaN(a)){this.fireError(new Error(`Content-Length value must be a number. Got ${i}`));return}this.nextMessageLength=a}let r=this.buffer.tryReadBody(this.nextMessageLength);if(r===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let n=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(r):r,i=await this.options.contentTypeDecoder.decode(n,this.options);this.callback(i)}).catch(n=>{this.fireError(n)})}}catch(r){this.fireError(r)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,Gp.default)().timer.setTimeout((e,r)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:r}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};An.ReadableStreamMessageReader=qp});var Ey=X($n=>{"use strict";Object.defineProperty($n,"__esModule",{value:!0});$n.WriteableStreamMessageWriter=$n.AbstractMessageWriter=$n.MessageWriter=void 0;var yy=En(),mo=ds(),r$=Mp(),Ty=ui(),n$="Content-Length: ",Ry=`\r -`,xy;(function(t){function e(r){let n=r;return n&&mo.func(n.dispose)&&mo.func(n.onClose)&&mo.func(n.onError)&&mo.func(n.write)}s(e,"is"),t.is=e})(xy||($n.MessageWriter=xy={}));var Al=class{static{s(this,"AbstractMessageWriter")}constructor(){this.errorEmitter=new Ty.Emitter,this.closeEmitter=new Ty.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,r,n){this.errorEmitter.fire([this.asError(e),r,n])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:new Error(`Writer received error. Reason: ${mo.string(e.message)?e.message:"unknown"}`)}};$n.AbstractMessageWriter=Al;var zp;(function(t){function e(r){return r===void 0||typeof r=="string"?{charset:r??"utf-8",contentTypeEncoder:(0,yy.default)().applicationJson.encoder}:{charset:r.charset??"utf-8",contentEncoder:r.contentEncoder,contentTypeEncoder:r.contentTypeEncoder??(0,yy.default)().applicationJson.encoder}}s(e,"fromOptions"),t.fromOptions=e})(zp||(zp={}));var jp=class extends Al{static{s(this,"WriteableStreamMessageWriter")}constructor(e,r){super(),this.writable=e,this.options=zp.fromOptions(r),this.errorCount=0,this.writeSemaphore=new r$.Semaphore(1),this.writable.onError(n=>this.fireError(n)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(n=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(n):n).then(n=>{let i=[];return i.push(n$,n.byteLength.toString(),Ry),i.push(Ry),this.doWrite(e,i,n)},n=>{throw this.fireError(n),n}))}async doWrite(e,r,n){try{return await this.writable.write(r.join(""),"ascii"),this.writable.write(n)}catch(i){return this.handleError(i,e),Promise.reject(i)}}handleError(e,r){this.errorCount++,this.fireError(e,r,this.errorCount)}end(){this.writable.end()}};$n.WriteableStreamMessageWriter=jp});var vy=X($l=>{"use strict";Object.defineProperty($l,"__esModule",{value:!0});$l.AbstractMessageBuffer=void 0;var i$=13,s$=10,a$=`\r -`,Bp=class{static{s(this,"AbstractMessageBuffer")}constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let r=typeof e=="string"?this.fromString(e,this._encoding):e;this._chunks.push(r),this._totalLength+=r.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let r=0,n=0,i=0,a=0;e:for(;nthis._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){let a=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(a)}if(this._chunks[0].byteLength>e){let a=this._chunks[0],o=this.asNative(a,e);return this._chunks[0]=a.slice(e),this._totalLength-=e,o}let r=this.allocNative(e),n=0,i=0;for(;e>0;){let a=this._chunks[i];if(a.byteLength>e){let o=a.slice(0,e);r.set(o,n),n+=e,this._chunks[i]=a.slice(e),this._totalLength-=e,e-=e}else r.set(a,n),n+=a.byteLength,this._chunks.shift(),this._totalLength-=a.byteLength,e-=a.byteLength}return r}};$l.AbstractMessageBuffer=Bp});var Cy=X(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});J.createMessageConnection=J.ConnectionOptions=J.MessageStrategy=J.CancellationStrategy=J.CancellationSenderStrategy=J.CancellationReceiverStrategy=J.RequestCancellationReceiverStrategy=J.IdCancellationReceiverStrategy=J.ConnectionStrategy=J.ConnectionError=J.ConnectionErrors=J.LogTraceNotification=J.SetTraceNotification=J.TraceFormat=J.TraceValues=J.Trace=J.NullLogger=J.ProgressType=J.ProgressToken=void 0;var Ay=En(),Me=ds(),K=wp(),$y=_p(),go=ui(),Wp=Ya(),Ro;(function(t){t.type=new K.NotificationType("$/cancelRequest")})(Ro||(Ro={}));var Vp;(function(t){function e(r){return typeof r=="string"||typeof r=="number"}s(e,"is"),t.is=e})(Vp||(J.ProgressToken=Vp={}));var yo;(function(t){t.type=new K.NotificationType("$/progress")})(yo||(yo={}));var Kp=class{static{s(this,"ProgressType")}constructor(){}};J.ProgressType=Kp;var Hp;(function(t){function e(r){return Me.func(r)}s(e,"is"),t.is=e})(Hp||(Hp={}));J.NullLogger=Object.freeze({error:s(()=>{},"error"),warn:s(()=>{},"warn"),info:s(()=>{},"info"),log:s(()=>{},"log")});var fe;(function(t){t[t.Off=0]="Off",t[t.Messages=1]="Messages",t[t.Compact=2]="Compact",t[t.Verbose=3]="Verbose"})(fe||(J.Trace=fe={}));var Sy;(function(t){t.Off="off",t.Messages="messages",t.Compact="compact",t.Verbose="verbose"})(Sy||(J.TraceValues=Sy={}));(function(t){function e(n){if(!Me.string(n))return t.Off;switch(n=n.toLowerCase(),n){case"off":return t.Off;case"messages":return t.Messages;case"compact":return t.Compact;case"verbose":return t.Verbose;default:return t.Off}}s(e,"fromString"),t.fromString=e;function r(n){switch(n){case t.Off:return"off";case t.Messages:return"messages";case t.Compact:return"compact";case t.Verbose:return"verbose";default:return"off"}}s(r,"toString"),t.toString=r})(fe||(J.Trace=fe={}));var Bt;(function(t){t.Text="text",t.JSON="json"})(Bt||(J.TraceFormat=Bt={}));(function(t){function e(r){return Me.string(r)?(r=r.toLowerCase(),r==="json"?t.JSON:t.Text):t.Text}s(e,"fromString"),t.fromString=e})(Bt||(J.TraceFormat=Bt={}));var Yp;(function(t){t.type=new K.NotificationType("$/setTrace")})(Yp||(J.SetTraceNotification=Yp={}));var Sl;(function(t){t.type=new K.NotificationType("$/logTrace")})(Sl||(J.LogTraceNotification=Sl={}));var To;(function(t){t[t.Closed=1]="Closed",t[t.Disposed=2]="Disposed",t[t.AlreadyListening=3]="AlreadyListening"})(To||(J.ConnectionErrors=To={}));var As=class t extends Error{static{s(this,"ConnectionError")}constructor(e,r){super(r),this.code=e,Object.setPrototypeOf(this,t.prototype)}};J.ConnectionError=As;var Xp;(function(t){function e(r){let n=r;return n&&Me.func(n.cancelUndispatched)}s(e,"is"),t.is=e})(Xp||(J.ConnectionStrategy=Xp={}));var kl;(function(t){function e(r){let n=r;return n&&(n.kind===void 0||n.kind==="id")&&Me.func(n.createCancellationTokenSource)&&(n.dispose===void 0||Me.func(n.dispose))}s(e,"is"),t.is=e})(kl||(J.IdCancellationReceiverStrategy=kl={}));var Jp;(function(t){function e(r){let n=r;return n&&n.kind==="request"&&Me.func(n.createCancellationTokenSource)&&(n.dispose===void 0||Me.func(n.dispose))}s(e,"is"),t.is=e})(Jp||(J.RequestCancellationReceiverStrategy=Jp={}));var Cl;(function(t){t.Message=Object.freeze({createCancellationTokenSource(r){return new Wp.CancellationTokenSource}});function e(r){return kl.is(r)||Jp.is(r)}s(e,"is"),t.is=e})(Cl||(J.CancellationReceiverStrategy=Cl={}));var Nl;(function(t){t.Message=Object.freeze({sendCancellation(r,n){return r.sendNotification(Ro.type,{id:n})},cleanup(r){}});function e(r){let n=r;return n&&Me.func(n.sendCancellation)&&Me.func(n.cleanup)}s(e,"is"),t.is=e})(Nl||(J.CancellationSenderStrategy=Nl={}));var wl;(function(t){t.Message=Object.freeze({receiver:Cl.Message,sender:Nl.Message});function e(r){let n=r;return n&&Cl.is(n.receiver)&&Nl.is(n.sender)}s(e,"is"),t.is=e})(wl||(J.CancellationStrategy=wl={}));var Il;(function(t){function e(r){let n=r;return n&&Me.func(n.handleMessage)}s(e,"is"),t.is=e})(Il||(J.MessageStrategy=Il={}));var ky;(function(t){function e(r){let n=r;return n&&(wl.is(n.cancellationStrategy)||Xp.is(n.connectionStrategy)||Il.is(n.messageStrategy))}s(e,"is"),t.is=e})(ky||(J.ConnectionOptions=ky={}));var lr;(function(t){t[t.New=1]="New",t[t.Listening=2]="Listening",t[t.Closed=3]="Closed",t[t.Disposed=4]="Disposed"})(lr||(lr={}));function o$(t,e,r,n){let i=r!==void 0?r:J.NullLogger,a=0,o=0,c=0,l="2.0",u,d=new Map,h,m=new Map,y=new Map,C,w=new $y.LinkedMap,z=new Map,M=new Set,P=new Map,A=fe.Off,H=Bt.Text,U,me=lr.New,dr=new go.Emitter,Xe=new go.Emitter,Qt=new go.Emitter,Vt=new go.Emitter,S=new go.Emitter,T=n&&n.cancellationStrategy?n.cancellationStrategy:wl.Message;function L(p){if(p===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+p.toString()}s(L,"createRequestQueueKey");function O(p){return p===null?"res-unknown-"+(++c).toString():"res-"+p.toString()}s(O,"createResponseQueueKey");function R(){return"not-"+(++o).toString()}s(R,"createNotificationQueueKey");function E(p,v){K.Message.isRequest(v)?p.set(L(v.id),v):K.Message.isResponse(v)?p.set(O(v.id),v):p.set(R(),v)}s(E,"addMessageToQueue");function $(p){}s($,"cancelUndispatched");function b(){return me===lr.Listening}s(b,"isListening");function F(){return me===lr.Closed}s(F,"isClosed");function N(){return me===lr.Disposed}s(N,"isDisposed");function Y(){(me===lr.New||me===lr.Listening)&&(me=lr.Closed,Xe.fire(void 0))}s(Y,"closeHandler");function Q(p){dr.fire([p,void 0,void 0])}s(Q,"readErrorHandler");function Be(p){dr.fire(p)}s(Be,"writeErrorHandler"),t.onClose(Y),t.onError(Q),e.onClose(Y),e.onError(Be);function ue(){C||w.size===0||(C=(0,Ay.default)().timer.setImmediate(()=>{C=void 0,pr()}))}s(ue,"triggerMessageQueue");function be(p){K.Message.isRequest(p)?It(p):K.Message.isNotification(p)?xt(p):K.Message.isResponse(p)?en(p):Zt(p)}s(be,"handleMessage");function pr(){if(w.size===0)return;let p=w.shift();try{let v=n?.messageStrategy;Il.is(v)?v.handleMessage(p,be):be(p)}finally{ue()}}s(pr,"processMessageQueue");let rt=s(p=>{try{if(K.Message.isNotification(p)&&p.method===Ro.type.method){let v=p.params.id,I=L(v),q=w.get(I);if(K.Message.isRequest(q)){let ge=n?.connectionStrategy,Fe=ge&&ge.cancelUndispatched?ge.cancelUndispatched(q,$):void 0;if(Fe&&(Fe.error!==void 0||Fe.result!==void 0)){w.delete(I),P.delete(v),Fe.id=q.id,tn(Fe,p.method,Date.now()),e.write(Fe).catch(()=>i.error("Sending response for canceled message failed."));return}}let Ae=P.get(v);if(Ae!==void 0){Ae.cancel(),uu(p);return}else M.add(v)}E(w,p)}finally{ue()}},"callback");function It(p){if(N())return;function v(oe,Pe,he){let Je={jsonrpc:l,id:p.id};oe instanceof K.ResponseError?Je.error=oe.toJson():Je.result=oe===void 0?null:oe,tn(Je,Pe,he),e.write(Je).catch(()=>i.error("Sending response failed."))}s(v,"reply");function I(oe,Pe,he){let Je={jsonrpc:l,id:p.id,error:oe.toJson()};tn(Je,Pe,he),e.write(Je).catch(()=>i.error("Sending response failed."))}s(I,"replyError");function q(oe,Pe,he){oe===void 0&&(oe=null);let Je={jsonrpc:l,id:p.id,result:oe};tn(Je,Pe,he),e.write(Je).catch(()=>i.error("Sending response failed."))}s(q,"replySuccess"),Fo(p);let Ae=d.get(p.method),ge,Fe;Ae&&(ge=Ae.type,Fe=Ae.handler);let ze=Date.now();if(Fe||u){let oe=p.id??String(Date.now()),Pe=kl.is(T.receiver)?T.receiver.createCancellationTokenSource(oe):T.receiver.createCancellationTokenSource(p);p.id!==null&&M.has(p.id)&&Pe.cancel(),p.id!==null&&P.set(oe,Pe);try{let he;if(Fe)if(p.params===void 0){if(ge!==void 0&&ge.numberOfParams!==0){I(new K.ResponseError(K.ErrorCodes.InvalidParams,`Request ${p.method} defines ${ge.numberOfParams} params but received none.`),p.method,ze);return}he=Fe(Pe.token)}else if(Array.isArray(p.params)){if(ge!==void 0&&ge.parameterStructures===K.ParameterStructures.byName){I(new K.ResponseError(K.ErrorCodes.InvalidParams,`Request ${p.method} defines parameters by name but received parameters by position`),p.method,ze);return}he=Fe(...p.params,Pe.token)}else{if(ge!==void 0&&ge.parameterStructures===K.ParameterStructures.byPosition){I(new K.ResponseError(K.ErrorCodes.InvalidParams,`Request ${p.method} defines parameters by position but received parameters by name`),p.method,ze);return}he=Fe(p.params,Pe.token)}else u&&(he=u(p.method,p.params,Pe.token));let Je=he;he?Je.then?Je.then(Et=>{P.delete(oe),v(Et,p.method,ze)},Et=>{P.delete(oe),Et instanceof K.ResponseError?I(Et,p.method,ze):Et&&Me.string(Et.message)?I(new K.ResponseError(K.ErrorCodes.InternalError,`Request ${p.method} failed with message: ${Et.message}`),p.method,ze):I(new K.ResponseError(K.ErrorCodes.InternalError,`Request ${p.method} failed unexpectedly without providing any details.`),p.method,ze)}):(P.delete(oe),v(he,p.method,ze)):(P.delete(oe),q(he,p.method,ze))}catch(he){P.delete(oe),he instanceof K.ResponseError?v(he,p.method,ze):he&&Me.string(he.message)?I(new K.ResponseError(K.ErrorCodes.InternalError,`Request ${p.method} failed with message: ${he.message}`),p.method,ze):I(new K.ResponseError(K.ErrorCodes.InternalError,`Request ${p.method} failed unexpectedly without providing any details.`),p.method,ze)}}else I(new K.ResponseError(K.ErrorCodes.MethodNotFound,`Unhandled method ${p.method}`),p.method,ze)}s(It,"handleRequest");function en(p){if(!N())if(p.id===null)p.error?i.error(`Received response message without id: Error is: -${JSON.stringify(p.error,void 0,4)}`):i.error("Received response message without id. No further error information provided.");else{let v=p.id,I=z.get(v);if(Zx(p,I),I!==void 0){z.delete(v);try{if(p.error){let q=p.error;I.reject(new K.ResponseError(q.code,q.message,q.data))}else if(p.result!==void 0)I.resolve(p.result);else throw new Error("Should never happen.")}catch(q){q.message?i.error(`Response handler '${I.method}' failed with message: ${q.message}`):i.error(`Response handler '${I.method}' failed unexpectedly.`)}}}}s(en,"handleResponse");function xt(p){if(N())return;let v,I;if(p.method===Ro.type.method){let q=p.params.id;M.delete(q),uu(p);return}else{let q=m.get(p.method);q&&(I=q.handler,v=q.type)}if(I||h)try{if(uu(p),I)if(p.params===void 0)v!==void 0&&v.numberOfParams!==0&&v.parameterStructures!==K.ParameterStructures.byName&&i.error(`Notification ${p.method} defines ${v.numberOfParams} params but received none.`),I();else if(Array.isArray(p.params)){let q=p.params;p.method===yo.type.method&&q.length===2&&Vp.is(q[0])?I({token:q[0],value:q[1]}):(v!==void 0&&(v.parameterStructures===K.ParameterStructures.byName&&i.error(`Notification ${p.method} defines parameters by name but received parameters by position`),v.numberOfParams!==p.params.length&&i.error(`Notification ${p.method} defines ${v.numberOfParams} params but received ${q.length} arguments`)),I(...q))}else v!==void 0&&v.parameterStructures===K.ParameterStructures.byPosition&&i.error(`Notification ${p.method} defines parameters by position but received parameters by name`),I(p.params);else h&&h(p.method,p.params)}catch(q){q.message?i.error(`Notification handler '${p.method}' failed with message: ${q.message}`):i.error(`Notification handler '${p.method}' failed unexpectedly.`)}else Qt.fire(p)}s(xt,"handleNotification");function Zt(p){if(!p){i.error("Received empty message.");return}i.error(`Received message which is neither a response nor a notification message: -${JSON.stringify(p,null,4)}`);let v=p;if(Me.string(v.id)||Me.number(v.id)){let I=v.id,q=z.get(I);q&&q.reject(new Error("The received response has neither a result nor an error property."))}}s(Zt,"handleInvalidMessage");function at(p){if(p!=null)switch(A){case fe.Verbose:return JSON.stringify(p,null,4);case fe.Compact:return JSON.stringify(p);default:return}}s(at,"stringifyTrace");function er(p){if(!(A===fe.Off||!U))if(H===Bt.Text){let v;(A===fe.Verbose||A===fe.Compact)&&p.params&&(v=`Params: ${at(p.params)} - -`),U.log(`Sending request '${p.method} - (${p.id})'.`,v)}else Ai("send-request",p)}s(er,"traceSendingRequest");function Pr(p){if(!(A===fe.Off||!U))if(H===Bt.Text){let v;(A===fe.Verbose||A===fe.Compact)&&(p.params?v=`Params: ${at(p.params)} - -`:v=`No parameters provided. - -`),U.log(`Sending notification '${p.method}'.`,v)}else Ai("send-notification",p)}s(Pr,"traceSendingNotification");function tn(p,v,I){if(!(A===fe.Off||!U))if(H===Bt.Text){let q;(A===fe.Verbose||A===fe.Compact)&&(p.error&&p.error.data?q=`Error data: ${at(p.error.data)} - -`:p.result?q=`Result: ${at(p.result)} - -`:p.error===void 0&&(q=`No result returned. - -`)),U.log(`Sending response '${v} - (${p.id})'. Processing request took ${Date.now()-I}ms`,q)}else Ai("send-response",p)}s(tn,"traceSendingResponse");function Fo(p){if(!(A===fe.Off||!U))if(H===Bt.Text){let v;(A===fe.Verbose||A===fe.Compact)&&p.params&&(v=`Params: ${at(p.params)} - -`),U.log(`Received request '${p.method} - (${p.id})'.`,v)}else Ai("receive-request",p)}s(Fo,"traceReceivedRequest");function uu(p){if(!(A===fe.Off||!U||p.method===Sl.type.method))if(H===Bt.Text){let v;(A===fe.Verbose||A===fe.Compact)&&(p.params?v=`Params: ${at(p.params)} - -`:v=`No parameters provided. - -`),U.log(`Received notification '${p.method}'.`,v)}else Ai("receive-notification",p)}s(uu,"traceReceivedNotification");function Zx(p,v){if(!(A===fe.Off||!U))if(H===Bt.Text){let I;if((A===fe.Verbose||A===fe.Compact)&&(p.error&&p.error.data?I=`Error data: ${at(p.error.data)} - -`:p.result?I=`Result: ${at(p.result)} - -`:p.error===void 0&&(I=`No result returned. - -`)),v){let q=p.error?` Request failed: ${p.error.message} (${p.error.code}).`:"";U.log(`Received response '${v.method} - (${p.id})' in ${Date.now()-v.timerStart}ms.${q}`,I)}else U.log(`Received response ${p.id} without active response promise.`,I)}else Ai("receive-response",p)}s(Zx,"traceReceivedResponse");function Ai(p,v){if(!U||A===fe.Off)return;let I={isLSPMessage:!0,type:p,message:v,timestamp:Date.now()};U.log(I)}s(Ai,"logLSPMessage");function Ws(){if(F())throw new As(To.Closed,"Connection is closed.");if(N())throw new As(To.Disposed,"Connection is disposed.")}s(Ws,"throwIfClosedOrDisposed");function eE(){if(b())throw new As(To.AlreadyListening,"Connection is already listening")}s(eE,"throwIfListening");function tE(){if(!b())throw new Error("Call listen() first.")}s(tE,"throwIfNotListening");function Vs(p){return p===void 0?null:p}s(Vs,"undefinedToNull");function Zh(p){if(p!==null)return p}s(Zh,"nullToUndefined");function em(p){return p!=null&&!Array.isArray(p)&&typeof p=="object"}s(em,"isNamedParam");function fu(p,v){switch(p){case K.ParameterStructures.auto:return em(v)?Zh(v):[Vs(v)];case K.ParameterStructures.byName:if(!em(v))throw new Error("Received parameters by name but param is not an object literal.");return Zh(v);case K.ParameterStructures.byPosition:return[Vs(v)];default:throw new Error(`Unknown parameter structure ${p.toString()}`)}}s(fu,"computeSingleParam");function tm(p,v){let I,q=p.numberOfParams;switch(q){case 0:I=void 0;break;case 1:I=fu(p.parameterStructures,v[0]);break;default:I=[];for(let Ae=0;Ae{Ws();let I,q;if(Me.string(p)){I=p;let ge=v[0],Fe=0,ze=K.ParameterStructures.auto;K.ParameterStructures.is(ge)&&(Fe=1,ze=ge);let oe=v.length,Pe=oe-Fe;switch(Pe){case 0:q=void 0;break;case 1:q=fu(ze,v[Fe]);break;default:if(ze===K.ParameterStructures.byName)throw new Error(`Received ${Pe} parameters for 'by Name' notification parameter structure.`);q=v.slice(Fe,oe).map(he=>Vs(he));break}}else{let ge=v;I=p.method,q=tm(p,ge)}let Ae={jsonrpc:l,method:I,params:q};return Pr(Ae),e.write(Ae).catch(ge=>{throw i.error("Sending notification failed."),ge})},"sendNotification"),onNotification:s((p,v)=>{Ws();let I;return Me.func(p)?h=p:v&&(Me.string(p)?(I=p,m.set(p,{type:void 0,handler:v})):(I=p.method,m.set(p.method,{type:p,handler:v}))),{dispose:s(()=>{I!==void 0?m.delete(I):h=void 0},"dispose")}},"onNotification"),onProgress:s((p,v,I)=>{if(y.has(v))throw new Error(`Progress handler for token ${v} already registered`);return y.set(v,I),{dispose:s(()=>{y.delete(v)},"dispose")}},"onProgress"),sendProgress:s((p,v,I)=>$i.sendNotification(yo.type,{token:v,value:I}),"sendProgress"),onUnhandledProgress:Vt.event,sendRequest:s((p,...v)=>{Ws(),tE();let I,q,Ae;if(Me.string(p)){I=p;let oe=v[0],Pe=v[v.length-1],he=0,Je=K.ParameterStructures.auto;K.ParameterStructures.is(oe)&&(he=1,Je=oe);let Et=v.length;Wp.CancellationToken.is(Pe)&&(Et=Et-1,Ae=Pe);let hr=Et-he;switch(hr){case 0:q=void 0;break;case 1:q=fu(Je,v[he]);break;default:if(Je===K.ParameterStructures.byName)throw new Error(`Received ${hr} parameters for 'by Name' request parameter structure.`);q=v.slice(he,Et).map(rE=>Vs(rE));break}}else{let oe=v;I=p.method,q=tm(p,oe);let Pe=p.numberOfParams;Ae=Wp.CancellationToken.is(oe[Pe])?oe[Pe]:void 0}let ge=a++,Fe;Ae&&(Fe=Ae.onCancellationRequested(()=>{let oe=T.sender.sendCancellation($i,ge);return oe===void 0?(i.log(`Received no promise from cancellation strategy when cancelling id ${ge}`),Promise.resolve()):oe.catch(()=>{i.log(`Sending cancellation messages for id ${ge} failed`)})}));let ze={jsonrpc:l,id:ge,method:I,params:q};return er(ze),typeof T.sender.enableCancellation=="function"&&T.sender.enableCancellation(ze),new Promise(async(oe,Pe)=>{let he=s(hr=>{oe(hr),T.sender.cleanup(ge),Fe?.dispose()},"resolveWithCleanup"),Je=s(hr=>{Pe(hr),T.sender.cleanup(ge),Fe?.dispose()},"rejectWithCleanup"),Et={method:I,timerStart:Date.now(),resolve:he,reject:Je};try{await e.write(ze),z.set(ge,Et)}catch(hr){throw i.error("Sending request failed."),Et.reject(new K.ResponseError(K.ErrorCodes.MessageWriteError,hr.message?hr.message:"Unknown reason")),hr}})},"sendRequest"),onRequest:s((p,v)=>{Ws();let I=null;return Hp.is(p)?(I=void 0,u=p):Me.string(p)?(I=null,v!==void 0&&(I=p,d.set(p,{handler:v,type:void 0}))):v!==void 0&&(I=p.method,d.set(p.method,{type:p,handler:v})),{dispose:s(()=>{I!==null&&(I!==void 0?d.delete(I):u=void 0)},"dispose")}},"onRequest"),hasPendingResponse:s(()=>z.size>0,"hasPendingResponse"),trace:s(async(p,v,I)=>{let q=!1,Ae=Bt.Text;I!==void 0&&(Me.boolean(I)?q=I:(q=I.sendNotification||!1,Ae=I.traceFormat||Bt.Text)),A=p,H=Ae,A===fe.Off?U=void 0:U=v,q&&!F()&&!N()&&await $i.sendNotification(Yp.type,{value:fe.toString(p)})},"trace"),onError:dr.event,onClose:Xe.event,onUnhandledNotification:Qt.event,onDispose:S.event,end:s(()=>{e.end()},"end"),dispose:s(()=>{if(N())return;me=lr.Disposed,S.fire(void 0);let p=new K.ResponseError(K.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let v of z.values())v.reject(p);z=new Map,P=new Map,M=new Set,w=new $y.LinkedMap,Me.func(e.dispose)&&e.dispose(),Me.func(t.dispose)&&t.dispose()},"dispose"),listen:s(()=>{Ws(),eE(),me=lr.Listening,t.listen(rt)},"listen"),inspect:s(()=>{(0,Ay.default)().console.log("inspect")},"inspect")};return $i.onNotification(Sl.type,p=>{if(A===fe.Off||!U)return;let v=A===fe.Verbose||A===fe.Compact;U.log(p.message,v?p.verbose:void 0)}),$i.onNotification(yo.type,p=>{let v=y.get(p.token);v?v(p.value):Vt.fire(p)}),$i}s(o$,"createMessageConnection");J.createMessageConnection=o$});var _l=X(x=>{"use strict";Object.defineProperty(x,"__esModule",{value:!0});x.ProgressType=x.ProgressToken=x.createMessageConnection=x.NullLogger=x.ConnectionOptions=x.ConnectionStrategy=x.AbstractMessageBuffer=x.WriteableStreamMessageWriter=x.AbstractMessageWriter=x.MessageWriter=x.ReadableStreamMessageReader=x.AbstractMessageReader=x.MessageReader=x.SharedArrayReceiverStrategy=x.SharedArraySenderStrategy=x.CancellationToken=x.CancellationTokenSource=x.Emitter=x.Event=x.Disposable=x.LRUCache=x.Touch=x.LinkedMap=x.ParameterStructures=x.NotificationType9=x.NotificationType8=x.NotificationType7=x.NotificationType6=x.NotificationType5=x.NotificationType4=x.NotificationType3=x.NotificationType2=x.NotificationType1=x.NotificationType0=x.NotificationType=x.ErrorCodes=x.ResponseError=x.RequestType9=x.RequestType8=x.RequestType7=x.RequestType6=x.RequestType5=x.RequestType4=x.RequestType3=x.RequestType2=x.RequestType1=x.RequestType0=x.RequestType=x.Message=x.RAL=void 0;x.MessageStrategy=x.CancellationStrategy=x.CancellationSenderStrategy=x.CancellationReceiverStrategy=x.ConnectionError=x.ConnectionErrors=x.LogTraceNotification=x.SetTraceNotification=x.TraceFormat=x.TraceValues=x.Trace=void 0;var ve=wp();Object.defineProperty(x,"Message",{enumerable:!0,get:s(function(){return ve.Message},"get")});Object.defineProperty(x,"RequestType",{enumerable:!0,get:s(function(){return ve.RequestType},"get")});Object.defineProperty(x,"RequestType0",{enumerable:!0,get:s(function(){return ve.RequestType0},"get")});Object.defineProperty(x,"RequestType1",{enumerable:!0,get:s(function(){return ve.RequestType1},"get")});Object.defineProperty(x,"RequestType2",{enumerable:!0,get:s(function(){return ve.RequestType2},"get")});Object.defineProperty(x,"RequestType3",{enumerable:!0,get:s(function(){return ve.RequestType3},"get")});Object.defineProperty(x,"RequestType4",{enumerable:!0,get:s(function(){return ve.RequestType4},"get")});Object.defineProperty(x,"RequestType5",{enumerable:!0,get:s(function(){return ve.RequestType5},"get")});Object.defineProperty(x,"RequestType6",{enumerable:!0,get:s(function(){return ve.RequestType6},"get")});Object.defineProperty(x,"RequestType7",{enumerable:!0,get:s(function(){return ve.RequestType7},"get")});Object.defineProperty(x,"RequestType8",{enumerable:!0,get:s(function(){return ve.RequestType8},"get")});Object.defineProperty(x,"RequestType9",{enumerable:!0,get:s(function(){return ve.RequestType9},"get")});Object.defineProperty(x,"ResponseError",{enumerable:!0,get:s(function(){return ve.ResponseError},"get")});Object.defineProperty(x,"ErrorCodes",{enumerable:!0,get:s(function(){return ve.ErrorCodes},"get")});Object.defineProperty(x,"NotificationType",{enumerable:!0,get:s(function(){return ve.NotificationType},"get")});Object.defineProperty(x,"NotificationType0",{enumerable:!0,get:s(function(){return ve.NotificationType0},"get")});Object.defineProperty(x,"NotificationType1",{enumerable:!0,get:s(function(){return ve.NotificationType1},"get")});Object.defineProperty(x,"NotificationType2",{enumerable:!0,get:s(function(){return ve.NotificationType2},"get")});Object.defineProperty(x,"NotificationType3",{enumerable:!0,get:s(function(){return ve.NotificationType3},"get")});Object.defineProperty(x,"NotificationType4",{enumerable:!0,get:s(function(){return ve.NotificationType4},"get")});Object.defineProperty(x,"NotificationType5",{enumerable:!0,get:s(function(){return ve.NotificationType5},"get")});Object.defineProperty(x,"NotificationType6",{enumerable:!0,get:s(function(){return ve.NotificationType6},"get")});Object.defineProperty(x,"NotificationType7",{enumerable:!0,get:s(function(){return ve.NotificationType7},"get")});Object.defineProperty(x,"NotificationType8",{enumerable:!0,get:s(function(){return ve.NotificationType8},"get")});Object.defineProperty(x,"NotificationType9",{enumerable:!0,get:s(function(){return ve.NotificationType9},"get")});Object.defineProperty(x,"ParameterStructures",{enumerable:!0,get:s(function(){return ve.ParameterStructures},"get")});var Qp=_p();Object.defineProperty(x,"LinkedMap",{enumerable:!0,get:s(function(){return Qp.LinkedMap},"get")});Object.defineProperty(x,"LRUCache",{enumerable:!0,get:s(function(){return Qp.LRUCache},"get")});Object.defineProperty(x,"Touch",{enumerable:!0,get:s(function(){return Qp.Touch},"get")});var c$=py();Object.defineProperty(x,"Disposable",{enumerable:!0,get:s(function(){return c$.Disposable},"get")});var Ny=ui();Object.defineProperty(x,"Event",{enumerable:!0,get:s(function(){return Ny.Event},"get")});Object.defineProperty(x,"Emitter",{enumerable:!0,get:s(function(){return Ny.Emitter},"get")});var wy=Ya();Object.defineProperty(x,"CancellationTokenSource",{enumerable:!0,get:s(function(){return wy.CancellationTokenSource},"get")});Object.defineProperty(x,"CancellationToken",{enumerable:!0,get:s(function(){return wy.CancellationToken},"get")});var Iy=hy();Object.defineProperty(x,"SharedArraySenderStrategy",{enumerable:!0,get:s(function(){return Iy.SharedArraySenderStrategy},"get")});Object.defineProperty(x,"SharedArrayReceiverStrategy",{enumerable:!0,get:s(function(){return Iy.SharedArrayReceiverStrategy},"get")});var Zp=gy();Object.defineProperty(x,"MessageReader",{enumerable:!0,get:s(function(){return Zp.MessageReader},"get")});Object.defineProperty(x,"AbstractMessageReader",{enumerable:!0,get:s(function(){return Zp.AbstractMessageReader},"get")});Object.defineProperty(x,"ReadableStreamMessageReader",{enumerable:!0,get:s(function(){return Zp.ReadableStreamMessageReader},"get")});var eh=Ey();Object.defineProperty(x,"MessageWriter",{enumerable:!0,get:s(function(){return eh.MessageWriter},"get")});Object.defineProperty(x,"AbstractMessageWriter",{enumerable:!0,get:s(function(){return eh.AbstractMessageWriter},"get")});Object.defineProperty(x,"WriteableStreamMessageWriter",{enumerable:!0,get:s(function(){return eh.WriteableStreamMessageWriter},"get")});var l$=vy();Object.defineProperty(x,"AbstractMessageBuffer",{enumerable:!0,get:s(function(){return l$.AbstractMessageBuffer},"get")});var lt=Cy();Object.defineProperty(x,"ConnectionStrategy",{enumerable:!0,get:s(function(){return lt.ConnectionStrategy},"get")});Object.defineProperty(x,"ConnectionOptions",{enumerable:!0,get:s(function(){return lt.ConnectionOptions},"get")});Object.defineProperty(x,"NullLogger",{enumerable:!0,get:s(function(){return lt.NullLogger},"get")});Object.defineProperty(x,"createMessageConnection",{enumerable:!0,get:s(function(){return lt.createMessageConnection},"get")});Object.defineProperty(x,"ProgressToken",{enumerable:!0,get:s(function(){return lt.ProgressToken},"get")});Object.defineProperty(x,"ProgressType",{enumerable:!0,get:s(function(){return lt.ProgressType},"get")});Object.defineProperty(x,"Trace",{enumerable:!0,get:s(function(){return lt.Trace},"get")});Object.defineProperty(x,"TraceValues",{enumerable:!0,get:s(function(){return lt.TraceValues},"get")});Object.defineProperty(x,"TraceFormat",{enumerable:!0,get:s(function(){return lt.TraceFormat},"get")});Object.defineProperty(x,"SetTraceNotification",{enumerable:!0,get:s(function(){return lt.SetTraceNotification},"get")});Object.defineProperty(x,"LogTraceNotification",{enumerable:!0,get:s(function(){return lt.LogTraceNotification},"get")});Object.defineProperty(x,"ConnectionErrors",{enumerable:!0,get:s(function(){return lt.ConnectionErrors},"get")});Object.defineProperty(x,"ConnectionError",{enumerable:!0,get:s(function(){return lt.ConnectionError},"get")});Object.defineProperty(x,"CancellationReceiverStrategy",{enumerable:!0,get:s(function(){return lt.CancellationReceiverStrategy},"get")});Object.defineProperty(x,"CancellationSenderStrategy",{enumerable:!0,get:s(function(){return lt.CancellationSenderStrategy},"get")});Object.defineProperty(x,"CancellationStrategy",{enumerable:!0,get:s(function(){return lt.CancellationStrategy},"get")});Object.defineProperty(x,"MessageStrategy",{enumerable:!0,get:s(function(){return lt.MessageStrategy},"get")});var u$=En();x.RAL=u$.default});var by=X(ih=>{"use strict";Object.defineProperty(ih,"__esModule",{value:!0});var Cr=_l(),bl=class t extends Cr.AbstractMessageBuffer{static{s(this,"MessageBuffer")}constructor(e="utf-8"){super(e),this.asciiDecoder=new TextDecoder("ascii")}emptyBuffer(){return t.emptyBuffer}fromString(e,r){return new TextEncoder().encode(e)}toString(e,r){return r==="ascii"?this.asciiDecoder.decode(e):new TextDecoder(r).decode(e)}asNative(e,r){return r===void 0?e:e.slice(0,r)}allocNative(e){return new Uint8Array(e)}};bl.emptyBuffer=new Uint8Array(0);var th=class{static{s(this,"ReadableStreamWrapper")}constructor(e){this.socket=e,this._onData=new Cr.Emitter,this._messageListener=r=>{r.data.arrayBuffer().then(i=>{this._onData.fire(new Uint8Array(i))},()=>{(0,Cr.RAL)().console.error("Converting blob to array buffer failed.")})},this.socket.addEventListener("message",this._messageListener)}onClose(e){return this.socket.addEventListener("close",e),Cr.Disposable.create(()=>this.socket.removeEventListener("close",e))}onError(e){return this.socket.addEventListener("error",e),Cr.Disposable.create(()=>this.socket.removeEventListener("error",e))}onEnd(e){return this.socket.addEventListener("end",e),Cr.Disposable.create(()=>this.socket.removeEventListener("end",e))}onData(e){return this._onData.event(e)}},rh=class{static{s(this,"WritableStreamWrapper")}constructor(e){this.socket=e}onClose(e){return this.socket.addEventListener("close",e),Cr.Disposable.create(()=>this.socket.removeEventListener("close",e))}onError(e){return this.socket.addEventListener("error",e),Cr.Disposable.create(()=>this.socket.removeEventListener("error",e))}onEnd(e){return this.socket.addEventListener("end",e),Cr.Disposable.create(()=>this.socket.removeEventListener("end",e))}write(e,r){if(typeof e=="string"){if(r!==void 0&&r!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${r}`);this.socket.send(e)}else this.socket.send(e);return Promise.resolve()}end(){this.socket.close()}},f$=new TextEncoder,_y=Object.freeze({messageBuffer:Object.freeze({create:s(t=>new bl(t),"create")}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:s((t,e)=>{if(e.charset!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${e.charset}`);return Promise.resolve(f$.encode(JSON.stringify(t,void 0,0)))},"encode")}),decoder:Object.freeze({name:"application/json",decode:s((t,e)=>{if(!(t instanceof Uint8Array))throw new Error("In a Browser environments only Uint8Arrays are supported.");return Promise.resolve(JSON.parse(new TextDecoder(e.charset).decode(t)))},"decode")})}),stream:Object.freeze({asReadableStream:s(t=>new th(t),"asReadableStream"),asWritableStream:s(t=>new rh(t),"asWritableStream")}),console,timer:Object.freeze({setTimeout(t,e,...r){let n=setTimeout(t,e,...r);return{dispose:s(()=>clearTimeout(n),"dispose")}},setImmediate(t,...e){let r=setTimeout(t,0,...e);return{dispose:s(()=>clearTimeout(r),"dispose")}},setInterval(t,e,...r){let n=setInterval(t,e,...r);return{dispose:s(()=>clearInterval(n),"dispose")}}})});function nh(){return _y}s(nh,"RIL");(function(t){function e(){Cr.RAL.install(_y)}s(e,"install"),t.install=e})(nh||(nh={}));ih.default=nh});var gi=X(Wt=>{"use strict";var d$=Wt&&Wt.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:s(function(){return e[r]},"get")}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),p$=Wt&&Wt.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&d$(e,t,r)};Object.defineProperty(Wt,"__esModule",{value:!0});Wt.createMessageConnection=Wt.BrowserMessageWriter=Wt.BrowserMessageReader=void 0;var h$=by();h$.default.install();var $s=_l();p$(_l(),Wt);var sh=class extends $s.AbstractMessageReader{static{s(this,"BrowserMessageReader")}constructor(e){super(),this._onData=new $s.Emitter,this._messageListener=r=>{this._onData.fire(r.data)},e.addEventListener("error",r=>this.fireError(r)),e.onmessage=this._messageListener}listen(e){return this._onData.event(e)}};Wt.BrowserMessageReader=sh;var ah=class extends $s.AbstractMessageWriter{static{s(this,"BrowserMessageWriter")}constructor(e){super(),this.port=e,this.errorCount=0,e.addEventListener("error",r=>this.fireError(r))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(r){return this.handleError(r,e),Promise.reject(r)}}handleError(e,r){this.errorCount++,this.fireError(e,r,this.errorCount)}end(){}};Wt.BrowserMessageWriter=ah;function m$(t,e,r,n){return r===void 0&&(r=$s.NullLogger),$s.ConnectionStrategy.is(n)&&(n={connectionStrategy:n}),(0,$s.createMessageConnection)(t,e,r,n)}s(m$,"createMessageConnection");Wt.createMessageConnection=m$});var oh=X((OO,Py)=>{"use strict";Py.exports=gi()});var _e=X(Lt=>{"use strict";Object.defineProperty(Lt,"__esModule",{value:!0});Lt.ProtocolNotificationType=Lt.ProtocolNotificationType0=Lt.ProtocolRequestType=Lt.ProtocolRequestType0=Lt.RegistrationType=Lt.MessageDirection=void 0;var Ss=gi(),Oy;(function(t){t.clientToServer="clientToServer",t.serverToClient="serverToClient",t.both="both"})(Oy||(Lt.MessageDirection=Oy={}));var ch=class{static{s(this,"RegistrationType")}constructor(e){this.method=e}};Lt.RegistrationType=ch;var lh=class extends Ss.RequestType0{static{s(this,"ProtocolRequestType0")}constructor(e){super(e)}};Lt.ProtocolRequestType0=lh;var uh=class extends Ss.RequestType{static{s(this,"ProtocolRequestType")}constructor(e){super(e,Ss.ParameterStructures.byName)}};Lt.ProtocolRequestType=uh;var fh=class extends Ss.NotificationType0{static{s(this,"ProtocolNotificationType0")}constructor(e){super(e)}};Lt.ProtocolNotificationType0=fh;var dh=class extends Ss.NotificationType{static{s(this,"ProtocolNotificationType")}constructor(e){super(e,Ss.ParameterStructures.byName)}};Lt.ProtocolNotificationType=dh});var Pl=X(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.objectLiteral=Ye.typedArray=Ye.stringArray=Ye.array=Ye.func=Ye.error=Ye.number=Ye.string=Ye.boolean=void 0;function g$(t){return t===!0||t===!1}s(g$,"boolean");Ye.boolean=g$;function Ly(t){return typeof t=="string"||t instanceof String}s(Ly,"string");Ye.string=Ly;function y$(t){return typeof t=="number"||t instanceof Number}s(y$,"number");Ye.number=y$;function T$(t){return t instanceof Error}s(T$,"error");Ye.error=T$;function R$(t){return typeof t=="function"}s(R$,"func");Ye.func=R$;function Dy(t){return Array.isArray(t)}s(Dy,"array");Ye.array=Dy;function x$(t){return Dy(t)&&t.every(e=>Ly(e))}s(x$,"stringArray");Ye.stringArray=x$;function E$(t,e){return Array.isArray(t)&&t.every(e)}s(E$,"typedArray");Ye.typedArray=E$;function v$(t){return t!==null&&typeof t=="object"}s(v$,"objectLiteral");Ye.objectLiteral=v$});var Gy=X(Ol=>{"use strict";Object.defineProperty(Ol,"__esModule",{value:!0});Ol.ImplementationRequest=void 0;var My=_e(),Fy;(function(t){t.method="textDocument/implementation",t.messageDirection=My.MessageDirection.clientToServer,t.type=new My.ProtocolRequestType(t.method)})(Fy||(Ol.ImplementationRequest=Fy={}))});var zy=X(Ll=>{"use strict";Object.defineProperty(Ll,"__esModule",{value:!0});Ll.TypeDefinitionRequest=void 0;var Uy=_e(),qy;(function(t){t.method="textDocument/typeDefinition",t.messageDirection=Uy.MessageDirection.clientToServer,t.type=new Uy.ProtocolRequestType(t.method)})(qy||(Ll.TypeDefinitionRequest=qy={}))});var Wy=X(ks=>{"use strict";Object.defineProperty(ks,"__esModule",{value:!0});ks.DidChangeWorkspaceFoldersNotification=ks.WorkspaceFoldersRequest=void 0;var Dl=_e(),jy;(function(t){t.method="workspace/workspaceFolders",t.messageDirection=Dl.MessageDirection.serverToClient,t.type=new Dl.ProtocolRequestType0(t.method)})(jy||(ks.WorkspaceFoldersRequest=jy={}));var By;(function(t){t.method="workspace/didChangeWorkspaceFolders",t.messageDirection=Dl.MessageDirection.clientToServer,t.type=new Dl.ProtocolNotificationType(t.method)})(By||(ks.DidChangeWorkspaceFoldersNotification=By={}))});var Hy=X(Ml=>{"use strict";Object.defineProperty(Ml,"__esModule",{value:!0});Ml.ConfigurationRequest=void 0;var Vy=_e(),Ky;(function(t){t.method="workspace/configuration",t.messageDirection=Vy.MessageDirection.serverToClient,t.type=new Vy.ProtocolRequestType(t.method)})(Ky||(Ml.ConfigurationRequest=Ky={}))});var Jy=X(Cs=>{"use strict";Object.defineProperty(Cs,"__esModule",{value:!0});Cs.ColorPresentationRequest=Cs.DocumentColorRequest=void 0;var Fl=_e(),Yy;(function(t){t.method="textDocument/documentColor",t.messageDirection=Fl.MessageDirection.clientToServer,t.type=new Fl.ProtocolRequestType(t.method)})(Yy||(Cs.DocumentColorRequest=Yy={}));var Xy;(function(t){t.method="textDocument/colorPresentation",t.messageDirection=Fl.MessageDirection.clientToServer,t.type=new Fl.ProtocolRequestType(t.method)})(Xy||(Cs.ColorPresentationRequest=Xy={}))});var eT=X(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.FoldingRangeRefreshRequest=Ns.FoldingRangeRequest=void 0;var Gl=_e(),Qy;(function(t){t.method="textDocument/foldingRange",t.messageDirection=Gl.MessageDirection.clientToServer,t.type=new Gl.ProtocolRequestType(t.method)})(Qy||(Ns.FoldingRangeRequest=Qy={}));var Zy;(function(t){t.method="workspace/foldingRange/refresh",t.messageDirection=Gl.MessageDirection.serverToClient,t.type=new Gl.ProtocolRequestType0(t.method)})(Zy||(Ns.FoldingRangeRefreshRequest=Zy={}))});var nT=X(Ul=>{"use strict";Object.defineProperty(Ul,"__esModule",{value:!0});Ul.DeclarationRequest=void 0;var tT=_e(),rT;(function(t){t.method="textDocument/declaration",t.messageDirection=tT.MessageDirection.clientToServer,t.type=new tT.ProtocolRequestType(t.method)})(rT||(Ul.DeclarationRequest=rT={}))});var aT=X(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.SelectionRangeRequest=void 0;var iT=_e(),sT;(function(t){t.method="textDocument/selectionRange",t.messageDirection=iT.MessageDirection.clientToServer,t.type=new iT.ProtocolRequestType(t.method)})(sT||(ql.SelectionRangeRequest=sT={}))});var uT=X(Sn=>{"use strict";Object.defineProperty(Sn,"__esModule",{value:!0});Sn.WorkDoneProgressCancelNotification=Sn.WorkDoneProgressCreateRequest=Sn.WorkDoneProgress=void 0;var A$=gi(),zl=_e(),oT;(function(t){t.type=new A$.ProgressType;function e(r){return r===t.type}s(e,"is"),t.is=e})(oT||(Sn.WorkDoneProgress=oT={}));var cT;(function(t){t.method="window/workDoneProgress/create",t.messageDirection=zl.MessageDirection.serverToClient,t.type=new zl.ProtocolRequestType(t.method)})(cT||(Sn.WorkDoneProgressCreateRequest=cT={}));var lT;(function(t){t.method="window/workDoneProgress/cancel",t.messageDirection=zl.MessageDirection.clientToServer,t.type=new zl.ProtocolNotificationType(t.method)})(lT||(Sn.WorkDoneProgressCancelNotification=lT={}))});var hT=X(kn=>{"use strict";Object.defineProperty(kn,"__esModule",{value:!0});kn.CallHierarchyOutgoingCallsRequest=kn.CallHierarchyIncomingCallsRequest=kn.CallHierarchyPrepareRequest=void 0;var ws=_e(),fT;(function(t){t.method="textDocument/prepareCallHierarchy",t.messageDirection=ws.MessageDirection.clientToServer,t.type=new ws.ProtocolRequestType(t.method)})(fT||(kn.CallHierarchyPrepareRequest=fT={}));var dT;(function(t){t.method="callHierarchy/incomingCalls",t.messageDirection=ws.MessageDirection.clientToServer,t.type=new ws.ProtocolRequestType(t.method)})(dT||(kn.CallHierarchyIncomingCallsRequest=dT={}));var pT;(function(t){t.method="callHierarchy/outgoingCalls",t.messageDirection=ws.MessageDirection.clientToServer,t.type=new ws.ProtocolRequestType(t.method)})(pT||(kn.CallHierarchyOutgoingCallsRequest=pT={}))});var xT=X(Dt=>{"use strict";Object.defineProperty(Dt,"__esModule",{value:!0});Dt.SemanticTokensRefreshRequest=Dt.SemanticTokensRangeRequest=Dt.SemanticTokensDeltaRequest=Dt.SemanticTokensRequest=Dt.SemanticTokensRegistrationType=Dt.TokenFormat=void 0;var Qr=_e(),mT;(function(t){t.Relative="relative"})(mT||(Dt.TokenFormat=mT={}));var xo;(function(t){t.method="textDocument/semanticTokens",t.type=new Qr.RegistrationType(t.method)})(xo||(Dt.SemanticTokensRegistrationType=xo={}));var gT;(function(t){t.method="textDocument/semanticTokens/full",t.messageDirection=Qr.MessageDirection.clientToServer,t.type=new Qr.ProtocolRequestType(t.method),t.registrationMethod=xo.method})(gT||(Dt.SemanticTokensRequest=gT={}));var yT;(function(t){t.method="textDocument/semanticTokens/full/delta",t.messageDirection=Qr.MessageDirection.clientToServer,t.type=new Qr.ProtocolRequestType(t.method),t.registrationMethod=xo.method})(yT||(Dt.SemanticTokensDeltaRequest=yT={}));var TT;(function(t){t.method="textDocument/semanticTokens/range",t.messageDirection=Qr.MessageDirection.clientToServer,t.type=new Qr.ProtocolRequestType(t.method),t.registrationMethod=xo.method})(TT||(Dt.SemanticTokensRangeRequest=TT={}));var RT;(function(t){t.method="workspace/semanticTokens/refresh",t.messageDirection=Qr.MessageDirection.serverToClient,t.type=new Qr.ProtocolRequestType0(t.method)})(RT||(Dt.SemanticTokensRefreshRequest=RT={}))});var AT=X(jl=>{"use strict";Object.defineProperty(jl,"__esModule",{value:!0});jl.ShowDocumentRequest=void 0;var ET=_e(),vT;(function(t){t.method="window/showDocument",t.messageDirection=ET.MessageDirection.serverToClient,t.type=new ET.ProtocolRequestType(t.method)})(vT||(jl.ShowDocumentRequest=vT={}))});var kT=X(Bl=>{"use strict";Object.defineProperty(Bl,"__esModule",{value:!0});Bl.LinkedEditingRangeRequest=void 0;var $T=_e(),ST;(function(t){t.method="textDocument/linkedEditingRange",t.messageDirection=$T.MessageDirection.clientToServer,t.type=new $T.ProtocolRequestType(t.method)})(ST||(Bl.LinkedEditingRangeRequest=ST={}))});var OT=X(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.WillDeleteFilesRequest=Rt.DidDeleteFilesNotification=Rt.DidRenameFilesNotification=Rt.WillRenameFilesRequest=Rt.DidCreateFilesNotification=Rt.WillCreateFilesRequest=Rt.FileOperationPatternKind=void 0;var Xt=_e(),CT;(function(t){t.file="file",t.folder="folder"})(CT||(Rt.FileOperationPatternKind=CT={}));var NT;(function(t){t.method="workspace/willCreateFiles",t.messageDirection=Xt.MessageDirection.clientToServer,t.type=new Xt.ProtocolRequestType(t.method)})(NT||(Rt.WillCreateFilesRequest=NT={}));var wT;(function(t){t.method="workspace/didCreateFiles",t.messageDirection=Xt.MessageDirection.clientToServer,t.type=new Xt.ProtocolNotificationType(t.method)})(wT||(Rt.DidCreateFilesNotification=wT={}));var IT;(function(t){t.method="workspace/willRenameFiles",t.messageDirection=Xt.MessageDirection.clientToServer,t.type=new Xt.ProtocolRequestType(t.method)})(IT||(Rt.WillRenameFilesRequest=IT={}));var _T;(function(t){t.method="workspace/didRenameFiles",t.messageDirection=Xt.MessageDirection.clientToServer,t.type=new Xt.ProtocolNotificationType(t.method)})(_T||(Rt.DidRenameFilesNotification=_T={}));var bT;(function(t){t.method="workspace/didDeleteFiles",t.messageDirection=Xt.MessageDirection.clientToServer,t.type=new Xt.ProtocolNotificationType(t.method)})(bT||(Rt.DidDeleteFilesNotification=bT={}));var PT;(function(t){t.method="workspace/willDeleteFiles",t.messageDirection=Xt.MessageDirection.clientToServer,t.type=new Xt.ProtocolRequestType(t.method)})(PT||(Rt.WillDeleteFilesRequest=PT={}))});var GT=X(Cn=>{"use strict";Object.defineProperty(Cn,"__esModule",{value:!0});Cn.MonikerRequest=Cn.MonikerKind=Cn.UniquenessLevel=void 0;var LT=_e(),DT;(function(t){t.document="document",t.project="project",t.group="group",t.scheme="scheme",t.global="global"})(DT||(Cn.UniquenessLevel=DT={}));var MT;(function(t){t.$import="import",t.$export="export",t.local="local"})(MT||(Cn.MonikerKind=MT={}));var FT;(function(t){t.method="textDocument/moniker",t.messageDirection=LT.MessageDirection.clientToServer,t.type=new LT.ProtocolRequestType(t.method)})(FT||(Cn.MonikerRequest=FT={}))});var jT=X(Nn=>{"use strict";Object.defineProperty(Nn,"__esModule",{value:!0});Nn.TypeHierarchySubtypesRequest=Nn.TypeHierarchySupertypesRequest=Nn.TypeHierarchyPrepareRequest=void 0;var Is=_e(),UT;(function(t){t.method="textDocument/prepareTypeHierarchy",t.messageDirection=Is.MessageDirection.clientToServer,t.type=new Is.ProtocolRequestType(t.method)})(UT||(Nn.TypeHierarchyPrepareRequest=UT={}));var qT;(function(t){t.method="typeHierarchy/supertypes",t.messageDirection=Is.MessageDirection.clientToServer,t.type=new Is.ProtocolRequestType(t.method)})(qT||(Nn.TypeHierarchySupertypesRequest=qT={}));var zT;(function(t){t.method="typeHierarchy/subtypes",t.messageDirection=Is.MessageDirection.clientToServer,t.type=new Is.ProtocolRequestType(t.method)})(zT||(Nn.TypeHierarchySubtypesRequest=zT={}))});var VT=X(_s=>{"use strict";Object.defineProperty(_s,"__esModule",{value:!0});_s.InlineValueRefreshRequest=_s.InlineValueRequest=void 0;var Wl=_e(),BT;(function(t){t.method="textDocument/inlineValue",t.messageDirection=Wl.MessageDirection.clientToServer,t.type=new Wl.ProtocolRequestType(t.method)})(BT||(_s.InlineValueRequest=BT={}));var WT;(function(t){t.method="workspace/inlineValue/refresh",t.messageDirection=Wl.MessageDirection.serverToClient,t.type=new Wl.ProtocolRequestType0(t.method)})(WT||(_s.InlineValueRefreshRequest=WT={}))});var XT=X(wn=>{"use strict";Object.defineProperty(wn,"__esModule",{value:!0});wn.InlayHintRefreshRequest=wn.InlayHintResolveRequest=wn.InlayHintRequest=void 0;var bs=_e(),KT;(function(t){t.method="textDocument/inlayHint",t.messageDirection=bs.MessageDirection.clientToServer,t.type=new bs.ProtocolRequestType(t.method)})(KT||(wn.InlayHintRequest=KT={}));var HT;(function(t){t.method="inlayHint/resolve",t.messageDirection=bs.MessageDirection.clientToServer,t.type=new bs.ProtocolRequestType(t.method)})(HT||(wn.InlayHintResolveRequest=HT={}));var YT;(function(t){t.method="workspace/inlayHint/refresh",t.messageDirection=bs.MessageDirection.serverToClient,t.type=new bs.ProtocolRequestType0(t.method)})(YT||(wn.InlayHintRefreshRequest=YT={}))});var nR=X(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.DiagnosticRefreshRequest=Jt.WorkspaceDiagnosticRequest=Jt.DocumentDiagnosticRequest=Jt.DocumentDiagnosticReportKind=Jt.DiagnosticServerCancellationData=void 0;var rR=gi(),$$=Pl(),Ps=_e(),JT;(function(t){function e(r){let n=r;return n&&$$.boolean(n.retriggerRequest)}s(e,"is"),t.is=e})(JT||(Jt.DiagnosticServerCancellationData=JT={}));var QT;(function(t){t.Full="full",t.Unchanged="unchanged"})(QT||(Jt.DocumentDiagnosticReportKind=QT={}));var ZT;(function(t){t.method="textDocument/diagnostic",t.messageDirection=Ps.MessageDirection.clientToServer,t.type=new Ps.ProtocolRequestType(t.method),t.partialResult=new rR.ProgressType})(ZT||(Jt.DocumentDiagnosticRequest=ZT={}));var eR;(function(t){t.method="workspace/diagnostic",t.messageDirection=Ps.MessageDirection.clientToServer,t.type=new Ps.ProtocolRequestType(t.method),t.partialResult=new rR.ProgressType})(eR||(Jt.WorkspaceDiagnosticRequest=eR={}));var tR;(function(t){t.method="workspace/diagnostic/refresh",t.messageDirection=Ps.MessageDirection.serverToClient,t.type=new Ps.ProtocolRequestType0(t.method)})(tR||(Jt.DiagnosticRefreshRequest=tR={}))});var uR=X(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});qe.DidCloseNotebookDocumentNotification=qe.DidSaveNotebookDocumentNotification=qe.DidChangeNotebookDocumentNotification=qe.NotebookCellArrayChange=qe.DidOpenNotebookDocumentNotification=qe.NotebookDocumentSyncRegistrationType=qe.NotebookDocument=qe.NotebookCell=qe.ExecutionSummary=qe.NotebookCellKind=void 0;var Eo=(ls(),pu(sl)),ur=Pl(),Nr=_e(),ph;(function(t){t.Markup=1,t.Code=2;function e(r){return r===1||r===2}s(e,"is"),t.is=e})(ph||(qe.NotebookCellKind=ph={}));var hh;(function(t){function e(i,a){let o={executionOrder:i};return(a===!0||a===!1)&&(o.success=a),o}s(e,"create"),t.create=e;function r(i){let a=i;return ur.objectLiteral(a)&&Eo.uinteger.is(a.executionOrder)&&(a.success===void 0||ur.boolean(a.success))}s(r,"is"),t.is=r;function n(i,a){return i===a?!0:i==null||a===null||a===void 0?!1:i.executionOrder===a.executionOrder&&i.success===a.success}s(n,"equals"),t.equals=n})(hh||(qe.ExecutionSummary=hh={}));var Vl;(function(t){function e(a,o){return{kind:a,document:o}}s(e,"create"),t.create=e;function r(a){let o=a;return ur.objectLiteral(o)&&ph.is(o.kind)&&Eo.DocumentUri.is(o.document)&&(o.metadata===void 0||ur.objectLiteral(o.metadata))}s(r,"is"),t.is=r;function n(a,o){let c=new Set;return a.document!==o.document&&c.add("document"),a.kind!==o.kind&&c.add("kind"),a.executionSummary!==o.executionSummary&&c.add("executionSummary"),(a.metadata!==void 0||o.metadata!==void 0)&&!i(a.metadata,o.metadata)&&c.add("metadata"),(a.executionSummary!==void 0||o.executionSummary!==void 0)&&!hh.equals(a.executionSummary,o.executionSummary)&&c.add("executionSummary"),c}s(n,"diff"),t.diff=n;function i(a,o){if(a===o)return!0;if(a==null||o===null||o===void 0||typeof a!=typeof o||typeof a!="object")return!1;let c=Array.isArray(a),l=Array.isArray(o);if(c!==l)return!1;if(c&&l){if(a.length!==o.length)return!1;for(let u=0;u{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});Kl.InlineCompletionRequest=void 0;var fR=_e(),dR;(function(t){t.method="textDocument/inlineCompletion",t.messageDirection=fR.MessageDirection.clientToServer,t.type=new fR.ProtocolRequestType(t.method)})(dR||(Kl.InlineCompletionRequest=dR={}))});var kx=X(f=>{"use strict";Object.defineProperty(f,"__esModule",{value:!0});f.WorkspaceSymbolRequest=f.CodeActionResolveRequest=f.CodeActionRequest=f.DocumentSymbolRequest=f.DocumentHighlightRequest=f.ReferencesRequest=f.DefinitionRequest=f.SignatureHelpRequest=f.SignatureHelpTriggerKind=f.HoverRequest=f.CompletionResolveRequest=f.CompletionRequest=f.CompletionTriggerKind=f.PublishDiagnosticsNotification=f.WatchKind=f.RelativePattern=f.FileChangeType=f.DidChangeWatchedFilesNotification=f.WillSaveTextDocumentWaitUntilRequest=f.WillSaveTextDocumentNotification=f.TextDocumentSaveReason=f.DidSaveTextDocumentNotification=f.DidCloseTextDocumentNotification=f.DidChangeTextDocumentNotification=f.TextDocumentContentChangeEvent=f.DidOpenTextDocumentNotification=f.TextDocumentSyncKind=f.TelemetryEventNotification=f.LogMessageNotification=f.ShowMessageRequest=f.ShowMessageNotification=f.MessageType=f.DidChangeConfigurationNotification=f.ExitNotification=f.ShutdownRequest=f.InitializedNotification=f.InitializeErrorCodes=f.InitializeRequest=f.WorkDoneProgressOptions=f.TextDocumentRegistrationOptions=f.StaticRegistrationOptions=f.PositionEncodingKind=f.FailureHandlingKind=f.ResourceOperationKind=f.UnregistrationRequest=f.RegistrationRequest=f.DocumentSelector=f.NotebookCellTextDocumentFilter=f.NotebookDocumentFilter=f.TextDocumentFilter=void 0;f.MonikerRequest=f.MonikerKind=f.UniquenessLevel=f.WillDeleteFilesRequest=f.DidDeleteFilesNotification=f.WillRenameFilesRequest=f.DidRenameFilesNotification=f.WillCreateFilesRequest=f.DidCreateFilesNotification=f.FileOperationPatternKind=f.LinkedEditingRangeRequest=f.ShowDocumentRequest=f.SemanticTokensRegistrationType=f.SemanticTokensRefreshRequest=f.SemanticTokensRangeRequest=f.SemanticTokensDeltaRequest=f.SemanticTokensRequest=f.TokenFormat=f.CallHierarchyPrepareRequest=f.CallHierarchyOutgoingCallsRequest=f.CallHierarchyIncomingCallsRequest=f.WorkDoneProgressCancelNotification=f.WorkDoneProgressCreateRequest=f.WorkDoneProgress=f.SelectionRangeRequest=f.DeclarationRequest=f.FoldingRangeRefreshRequest=f.FoldingRangeRequest=f.ColorPresentationRequest=f.DocumentColorRequest=f.ConfigurationRequest=f.DidChangeWorkspaceFoldersNotification=f.WorkspaceFoldersRequest=f.TypeDefinitionRequest=f.ImplementationRequest=f.ApplyWorkspaceEditRequest=f.ExecuteCommandRequest=f.PrepareRenameRequest=f.RenameRequest=f.PrepareSupportDefaultBehavior=f.DocumentOnTypeFormattingRequest=f.DocumentRangesFormattingRequest=f.DocumentRangeFormattingRequest=f.DocumentFormattingRequest=f.DocumentLinkResolveRequest=f.DocumentLinkRequest=f.CodeLensRefreshRequest=f.CodeLensResolveRequest=f.CodeLensRequest=f.WorkspaceSymbolResolveRequest=void 0;f.InlineCompletionRequest=f.DidCloseNotebookDocumentNotification=f.DidSaveNotebookDocumentNotification=f.DidChangeNotebookDocumentNotification=f.NotebookCellArrayChange=f.DidOpenNotebookDocumentNotification=f.NotebookDocumentSyncRegistrationType=f.NotebookDocument=f.NotebookCell=f.ExecutionSummary=f.NotebookCellKind=f.DiagnosticRefreshRequest=f.WorkspaceDiagnosticRequest=f.DocumentDiagnosticRequest=f.DocumentDiagnosticReportKind=f.DiagnosticServerCancellationData=f.InlayHintRefreshRequest=f.InlayHintResolveRequest=f.InlayHintRequest=f.InlineValueRefreshRequest=f.InlineValueRequest=f.TypeHierarchySupertypesRequest=f.TypeHierarchySubtypesRequest=f.TypeHierarchyPrepareRequest=void 0;var k=_e(),hR=(ls(),pu(sl)),st=Pl(),S$=Gy();Object.defineProperty(f,"ImplementationRequest",{enumerable:!0,get:s(function(){return S$.ImplementationRequest},"get")});var k$=zy();Object.defineProperty(f,"TypeDefinitionRequest",{enumerable:!0,get:s(function(){return k$.TypeDefinitionRequest},"get")});var vx=Wy();Object.defineProperty(f,"WorkspaceFoldersRequest",{enumerable:!0,get:s(function(){return vx.WorkspaceFoldersRequest},"get")});Object.defineProperty(f,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:s(function(){return vx.DidChangeWorkspaceFoldersNotification},"get")});var C$=Hy();Object.defineProperty(f,"ConfigurationRequest",{enumerable:!0,get:s(function(){return C$.ConfigurationRequest},"get")});var Ax=Jy();Object.defineProperty(f,"DocumentColorRequest",{enumerable:!0,get:s(function(){return Ax.DocumentColorRequest},"get")});Object.defineProperty(f,"ColorPresentationRequest",{enumerable:!0,get:s(function(){return Ax.ColorPresentationRequest},"get")});var $x=eT();Object.defineProperty(f,"FoldingRangeRequest",{enumerable:!0,get:s(function(){return $x.FoldingRangeRequest},"get")});Object.defineProperty(f,"FoldingRangeRefreshRequest",{enumerable:!0,get:s(function(){return $x.FoldingRangeRefreshRequest},"get")});var N$=nT();Object.defineProperty(f,"DeclarationRequest",{enumerable:!0,get:s(function(){return N$.DeclarationRequest},"get")});var w$=aT();Object.defineProperty(f,"SelectionRangeRequest",{enumerable:!0,get:s(function(){return w$.SelectionRangeRequest},"get")});var Rh=uT();Object.defineProperty(f,"WorkDoneProgress",{enumerable:!0,get:s(function(){return Rh.WorkDoneProgress},"get")});Object.defineProperty(f,"WorkDoneProgressCreateRequest",{enumerable:!0,get:s(function(){return Rh.WorkDoneProgressCreateRequest},"get")});Object.defineProperty(f,"WorkDoneProgressCancelNotification",{enumerable:!0,get:s(function(){return Rh.WorkDoneProgressCancelNotification},"get")});var xh=hT();Object.defineProperty(f,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:s(function(){return xh.CallHierarchyIncomingCallsRequest},"get")});Object.defineProperty(f,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:s(function(){return xh.CallHierarchyOutgoingCallsRequest},"get")});Object.defineProperty(f,"CallHierarchyPrepareRequest",{enumerable:!0,get:s(function(){return xh.CallHierarchyPrepareRequest},"get")});var Ls=xT();Object.defineProperty(f,"TokenFormat",{enumerable:!0,get:s(function(){return Ls.TokenFormat},"get")});Object.defineProperty(f,"SemanticTokensRequest",{enumerable:!0,get:s(function(){return Ls.SemanticTokensRequest},"get")});Object.defineProperty(f,"SemanticTokensDeltaRequest",{enumerable:!0,get:s(function(){return Ls.SemanticTokensDeltaRequest},"get")});Object.defineProperty(f,"SemanticTokensRangeRequest",{enumerable:!0,get:s(function(){return Ls.SemanticTokensRangeRequest},"get")});Object.defineProperty(f,"SemanticTokensRefreshRequest",{enumerable:!0,get:s(function(){return Ls.SemanticTokensRefreshRequest},"get")});Object.defineProperty(f,"SemanticTokensRegistrationType",{enumerable:!0,get:s(function(){return Ls.SemanticTokensRegistrationType},"get")});var I$=AT();Object.defineProperty(f,"ShowDocumentRequest",{enumerable:!0,get:s(function(){return I$.ShowDocumentRequest},"get")});var _$=kT();Object.defineProperty(f,"LinkedEditingRangeRequest",{enumerable:!0,get:s(function(){return _$.LinkedEditingRangeRequest},"get")});var yi=OT();Object.defineProperty(f,"FileOperationPatternKind",{enumerable:!0,get:s(function(){return yi.FileOperationPatternKind},"get")});Object.defineProperty(f,"DidCreateFilesNotification",{enumerable:!0,get:s(function(){return yi.DidCreateFilesNotification},"get")});Object.defineProperty(f,"WillCreateFilesRequest",{enumerable:!0,get:s(function(){return yi.WillCreateFilesRequest},"get")});Object.defineProperty(f,"DidRenameFilesNotification",{enumerable:!0,get:s(function(){return yi.DidRenameFilesNotification},"get")});Object.defineProperty(f,"WillRenameFilesRequest",{enumerable:!0,get:s(function(){return yi.WillRenameFilesRequest},"get")});Object.defineProperty(f,"DidDeleteFilesNotification",{enumerable:!0,get:s(function(){return yi.DidDeleteFilesNotification},"get")});Object.defineProperty(f,"WillDeleteFilesRequest",{enumerable:!0,get:s(function(){return yi.WillDeleteFilesRequest},"get")});var Eh=GT();Object.defineProperty(f,"UniquenessLevel",{enumerable:!0,get:s(function(){return Eh.UniquenessLevel},"get")});Object.defineProperty(f,"MonikerKind",{enumerable:!0,get:s(function(){return Eh.MonikerKind},"get")});Object.defineProperty(f,"MonikerRequest",{enumerable:!0,get:s(function(){return Eh.MonikerRequest},"get")});var vh=jT();Object.defineProperty(f,"TypeHierarchyPrepareRequest",{enumerable:!0,get:s(function(){return vh.TypeHierarchyPrepareRequest},"get")});Object.defineProperty(f,"TypeHierarchySubtypesRequest",{enumerable:!0,get:s(function(){return vh.TypeHierarchySubtypesRequest},"get")});Object.defineProperty(f,"TypeHierarchySupertypesRequest",{enumerable:!0,get:s(function(){return vh.TypeHierarchySupertypesRequest},"get")});var Sx=VT();Object.defineProperty(f,"InlineValueRequest",{enumerable:!0,get:s(function(){return Sx.InlineValueRequest},"get")});Object.defineProperty(f,"InlineValueRefreshRequest",{enumerable:!0,get:s(function(){return Sx.InlineValueRefreshRequest},"get")});var Ah=XT();Object.defineProperty(f,"InlayHintRequest",{enumerable:!0,get:s(function(){return Ah.InlayHintRequest},"get")});Object.defineProperty(f,"InlayHintResolveRequest",{enumerable:!0,get:s(function(){return Ah.InlayHintResolveRequest},"get")});Object.defineProperty(f,"InlayHintRefreshRequest",{enumerable:!0,get:s(function(){return Ah.InlayHintRefreshRequest},"get")});var vo=nR();Object.defineProperty(f,"DiagnosticServerCancellationData",{enumerable:!0,get:s(function(){return vo.DiagnosticServerCancellationData},"get")});Object.defineProperty(f,"DocumentDiagnosticReportKind",{enumerable:!0,get:s(function(){return vo.DocumentDiagnosticReportKind},"get")});Object.defineProperty(f,"DocumentDiagnosticRequest",{enumerable:!0,get:s(function(){return vo.DocumentDiagnosticRequest},"get")});Object.defineProperty(f,"WorkspaceDiagnosticRequest",{enumerable:!0,get:s(function(){return vo.WorkspaceDiagnosticRequest},"get")});Object.defineProperty(f,"DiagnosticRefreshRequest",{enumerable:!0,get:s(function(){return vo.DiagnosticRefreshRequest},"get")});var wr=uR();Object.defineProperty(f,"NotebookCellKind",{enumerable:!0,get:s(function(){return wr.NotebookCellKind},"get")});Object.defineProperty(f,"ExecutionSummary",{enumerable:!0,get:s(function(){return wr.ExecutionSummary},"get")});Object.defineProperty(f,"NotebookCell",{enumerable:!0,get:s(function(){return wr.NotebookCell},"get")});Object.defineProperty(f,"NotebookDocument",{enumerable:!0,get:s(function(){return wr.NotebookDocument},"get")});Object.defineProperty(f,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:s(function(){return wr.NotebookDocumentSyncRegistrationType},"get")});Object.defineProperty(f,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:s(function(){return wr.DidOpenNotebookDocumentNotification},"get")});Object.defineProperty(f,"NotebookCellArrayChange",{enumerable:!0,get:s(function(){return wr.NotebookCellArrayChange},"get")});Object.defineProperty(f,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:s(function(){return wr.DidChangeNotebookDocumentNotification},"get")});Object.defineProperty(f,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:s(function(){return wr.DidSaveNotebookDocumentNotification},"get")});Object.defineProperty(f,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:s(function(){return wr.DidCloseNotebookDocumentNotification},"get")});var b$=pR();Object.defineProperty(f,"InlineCompletionRequest",{enumerable:!0,get:s(function(){return b$.InlineCompletionRequest},"get")});var mh;(function(t){function e(r){let n=r;return st.string(n)||st.string(n.language)||st.string(n.scheme)||st.string(n.pattern)}s(e,"is"),t.is=e})(mh||(f.TextDocumentFilter=mh={}));var gh;(function(t){function e(r){let n=r;return st.objectLiteral(n)&&(st.string(n.notebookType)||st.string(n.scheme)||st.string(n.pattern))}s(e,"is"),t.is=e})(gh||(f.NotebookDocumentFilter=gh={}));var yh;(function(t){function e(r){let n=r;return st.objectLiteral(n)&&(st.string(n.notebook)||gh.is(n.notebook))&&(n.language===void 0||st.string(n.language))}s(e,"is"),t.is=e})(yh||(f.NotebookCellTextDocumentFilter=yh={}));var Th;(function(t){function e(r){if(!Array.isArray(r))return!1;for(let n of r)if(!st.string(n)&&!mh.is(n)&&!yh.is(n))return!1;return!0}s(e,"is"),t.is=e})(Th||(f.DocumentSelector=Th={}));var mR;(function(t){t.method="client/registerCapability",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolRequestType(t.method)})(mR||(f.RegistrationRequest=mR={}));var gR;(function(t){t.method="client/unregisterCapability",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolRequestType(t.method)})(gR||(f.UnregistrationRequest=gR={}));var yR;(function(t){t.Create="create",t.Rename="rename",t.Delete="delete"})(yR||(f.ResourceOperationKind=yR={}));var TR;(function(t){t.Abort="abort",t.Transactional="transactional",t.TextOnlyTransactional="textOnlyTransactional",t.Undo="undo"})(TR||(f.FailureHandlingKind=TR={}));var RR;(function(t){t.UTF8="utf-8",t.UTF16="utf-16",t.UTF32="utf-32"})(RR||(f.PositionEncodingKind=RR={}));var xR;(function(t){function e(r){let n=r;return n&&st.string(n.id)&&n.id.length>0}s(e,"hasId"),t.hasId=e})(xR||(f.StaticRegistrationOptions=xR={}));var ER;(function(t){function e(r){let n=r;return n&&(n.documentSelector===null||Th.is(n.documentSelector))}s(e,"is"),t.is=e})(ER||(f.TextDocumentRegistrationOptions=ER={}));var vR;(function(t){function e(n){let i=n;return st.objectLiteral(i)&&(i.workDoneProgress===void 0||st.boolean(i.workDoneProgress))}s(e,"is"),t.is=e;function r(n){let i=n;return i&&st.boolean(i.workDoneProgress)}s(r,"hasWorkDoneProgress"),t.hasWorkDoneProgress=r})(vR||(f.WorkDoneProgressOptions=vR={}));var AR;(function(t){t.method="initialize",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(AR||(f.InitializeRequest=AR={}));var $R;(function(t){t.unknownProtocolVersion=1})($R||(f.InitializeErrorCodes=$R={}));var SR;(function(t){t.method="initialized",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType(t.method)})(SR||(f.InitializedNotification=SR={}));var kR;(function(t){t.method="shutdown",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType0(t.method)})(kR||(f.ShutdownRequest=kR={}));var CR;(function(t){t.method="exit",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType0(t.method)})(CR||(f.ExitNotification=CR={}));var NR;(function(t){t.method="workspace/didChangeConfiguration",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType(t.method)})(NR||(f.DidChangeConfigurationNotification=NR={}));var wR;(function(t){t.Error=1,t.Warning=2,t.Info=3,t.Log=4,t.Debug=5})(wR||(f.MessageType=wR={}));var IR;(function(t){t.method="window/showMessage",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolNotificationType(t.method)})(IR||(f.ShowMessageNotification=IR={}));var _R;(function(t){t.method="window/showMessageRequest",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolRequestType(t.method)})(_R||(f.ShowMessageRequest=_R={}));var bR;(function(t){t.method="window/logMessage",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolNotificationType(t.method)})(bR||(f.LogMessageNotification=bR={}));var PR;(function(t){t.method="telemetry/event",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolNotificationType(t.method)})(PR||(f.TelemetryEventNotification=PR={}));var OR;(function(t){t.None=0,t.Full=1,t.Incremental=2})(OR||(f.TextDocumentSyncKind=OR={}));var LR;(function(t){t.method="textDocument/didOpen",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType(t.method)})(LR||(f.DidOpenTextDocumentNotification=LR={}));var DR;(function(t){function e(n){let i=n;return i!=null&&typeof i.text=="string"&&i.range!==void 0&&(i.rangeLength===void 0||typeof i.rangeLength=="number")}s(e,"isIncremental"),t.isIncremental=e;function r(n){let i=n;return i!=null&&typeof i.text=="string"&&i.range===void 0&&i.rangeLength===void 0}s(r,"isFull"),t.isFull=r})(DR||(f.TextDocumentContentChangeEvent=DR={}));var MR;(function(t){t.method="textDocument/didChange",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType(t.method)})(MR||(f.DidChangeTextDocumentNotification=MR={}));var FR;(function(t){t.method="textDocument/didClose",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType(t.method)})(FR||(f.DidCloseTextDocumentNotification=FR={}));var GR;(function(t){t.method="textDocument/didSave",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType(t.method)})(GR||(f.DidSaveTextDocumentNotification=GR={}));var UR;(function(t){t.Manual=1,t.AfterDelay=2,t.FocusOut=3})(UR||(f.TextDocumentSaveReason=UR={}));var qR;(function(t){t.method="textDocument/willSave",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType(t.method)})(qR||(f.WillSaveTextDocumentNotification=qR={}));var zR;(function(t){t.method="textDocument/willSaveWaitUntil",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(zR||(f.WillSaveTextDocumentWaitUntilRequest=zR={}));var jR;(function(t){t.method="workspace/didChangeWatchedFiles",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolNotificationType(t.method)})(jR||(f.DidChangeWatchedFilesNotification=jR={}));var BR;(function(t){t.Created=1,t.Changed=2,t.Deleted=3})(BR||(f.FileChangeType=BR={}));var WR;(function(t){function e(r){let n=r;return st.objectLiteral(n)&&(hR.URI.is(n.baseUri)||hR.WorkspaceFolder.is(n.baseUri))&&st.string(n.pattern)}s(e,"is"),t.is=e})(WR||(f.RelativePattern=WR={}));var VR;(function(t){t.Create=1,t.Change=2,t.Delete=4})(VR||(f.WatchKind=VR={}));var KR;(function(t){t.method="textDocument/publishDiagnostics",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolNotificationType(t.method)})(KR||(f.PublishDiagnosticsNotification=KR={}));var HR;(function(t){t.Invoked=1,t.TriggerCharacter=2,t.TriggerForIncompleteCompletions=3})(HR||(f.CompletionTriggerKind=HR={}));var YR;(function(t){t.method="textDocument/completion",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(YR||(f.CompletionRequest=YR={}));var XR;(function(t){t.method="completionItem/resolve",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(XR||(f.CompletionResolveRequest=XR={}));var JR;(function(t){t.method="textDocument/hover",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(JR||(f.HoverRequest=JR={}));var QR;(function(t){t.Invoked=1,t.TriggerCharacter=2,t.ContentChange=3})(QR||(f.SignatureHelpTriggerKind=QR={}));var ZR;(function(t){t.method="textDocument/signatureHelp",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(ZR||(f.SignatureHelpRequest=ZR={}));var ex;(function(t){t.method="textDocument/definition",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(ex||(f.DefinitionRequest=ex={}));var tx;(function(t){t.method="textDocument/references",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(tx||(f.ReferencesRequest=tx={}));var rx;(function(t){t.method="textDocument/documentHighlight",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(rx||(f.DocumentHighlightRequest=rx={}));var nx;(function(t){t.method="textDocument/documentSymbol",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(nx||(f.DocumentSymbolRequest=nx={}));var ix;(function(t){t.method="textDocument/codeAction",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(ix||(f.CodeActionRequest=ix={}));var sx;(function(t){t.method="codeAction/resolve",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(sx||(f.CodeActionResolveRequest=sx={}));var ax;(function(t){t.method="workspace/symbol",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(ax||(f.WorkspaceSymbolRequest=ax={}));var ox;(function(t){t.method="workspaceSymbol/resolve",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(ox||(f.WorkspaceSymbolResolveRequest=ox={}));var cx;(function(t){t.method="textDocument/codeLens",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(cx||(f.CodeLensRequest=cx={}));var lx;(function(t){t.method="codeLens/resolve",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(lx||(f.CodeLensResolveRequest=lx={}));var ux;(function(t){t.method="workspace/codeLens/refresh",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolRequestType0(t.method)})(ux||(f.CodeLensRefreshRequest=ux={}));var fx;(function(t){t.method="textDocument/documentLink",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(fx||(f.DocumentLinkRequest=fx={}));var dx;(function(t){t.method="documentLink/resolve",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(dx||(f.DocumentLinkResolveRequest=dx={}));var px;(function(t){t.method="textDocument/formatting",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(px||(f.DocumentFormattingRequest=px={}));var hx;(function(t){t.method="textDocument/rangeFormatting",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(hx||(f.DocumentRangeFormattingRequest=hx={}));var mx;(function(t){t.method="textDocument/rangesFormatting",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(mx||(f.DocumentRangesFormattingRequest=mx={}));var gx;(function(t){t.method="textDocument/onTypeFormatting",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(gx||(f.DocumentOnTypeFormattingRequest=gx={}));var yx;(function(t){t.Identifier=1})(yx||(f.PrepareSupportDefaultBehavior=yx={}));var Tx;(function(t){t.method="textDocument/rename",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(Tx||(f.RenameRequest=Tx={}));var Rx;(function(t){t.method="textDocument/prepareRename",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(Rx||(f.PrepareRenameRequest=Rx={}));var xx;(function(t){t.method="workspace/executeCommand",t.messageDirection=k.MessageDirection.clientToServer,t.type=new k.ProtocolRequestType(t.method)})(xx||(f.ExecuteCommandRequest=xx={}));var Ex;(function(t){t.method="workspace/applyEdit",t.messageDirection=k.MessageDirection.serverToClient,t.type=new k.ProtocolRequestType("workspace/applyEdit")})(Ex||(f.ApplyWorkspaceEditRequest=Ex={}))});var Nx=X(Hl=>{"use strict";Object.defineProperty(Hl,"__esModule",{value:!0});Hl.createProtocolConnection=void 0;var Cx=gi();function P$(t,e,r,n){return Cx.ConnectionStrategy.is(n)&&(n={connectionStrategy:n}),(0,Cx.createMessageConnection)(t,e,r,n)}s(P$,"createProtocolConnection");Hl.createProtocolConnection=P$});var Ix=X(Mt=>{"use strict";var O$=Mt&&Mt.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:s(function(){return e[r]},"get")}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Yl=Mt&&Mt.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&O$(e,t,r)};Object.defineProperty(Mt,"__esModule",{value:!0});Mt.LSPErrorCodes=Mt.createProtocolConnection=void 0;Yl(gi(),Mt);Yl((ls(),pu(sl)),Mt);Yl(_e(),Mt);Yl(kx(),Mt);var L$=Nx();Object.defineProperty(Mt,"createProtocolConnection",{enumerable:!0,get:s(function(){return L$.createProtocolConnection},"get")});var wx;(function(t){t.lspReservedErrorRangeStart=-32899,t.RequestFailed=-32803,t.ServerCancelled=-32802,t.ContentModified=-32801,t.RequestCancelled=-32800,t.lspReservedErrorRangeEnd=-32800})(wx||(Mt.LSPErrorCodes=wx={}))});var bx=X(Ir=>{"use strict";var D$=Ir&&Ir.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:s(function(){return e[r]},"get")}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),_x=Ir&&Ir.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&D$(e,t,r)};Object.defineProperty(Ir,"__esModule",{value:!0});Ir.createProtocolConnection=void 0;var M$=oh();_x(oh(),Ir);_x(Ix(),Ir);function F$(t,e,r,n){return(0,M$.createMessageConnection)(t,e,r,n)}s(F$,"createProtocolConnection");Ir.createProtocolConnection=F$});var Ue={};rn(Ue,{AbstractAstReflection:()=>Pn,AbstractCstNode:()=>Ba,AbstractLangiumParser:()=>Wa,AbstractParserErrorMessageProvider:()=>ol,AbstractThreadedAsyncParser:()=>_h,AstUtils:()=>zo,BiMap:()=>di,Cancellation:()=>W,CompositeCstNodeImpl:()=>oi,ContextCache:()=>pi,CstNodeBuilder:()=>ja,CstUtils:()=>cc,DEFAULT_TOKENIZE_OPTIONS:()=>Xl,DONE_RESULT:()=>ht,DatatypeSymbol:()=>al,DefaultAstNodeDescriptionProvider:()=>lo,DefaultAstNodeLocator:()=>fo,DefaultAsyncParser:()=>_o,DefaultCommentProvider:()=>Io,DefaultConfigurationProvider:()=>po,DefaultDocumentBuilder:()=>Ao,DefaultDocumentValidator:()=>co,DefaultHydrator:()=>Po,DefaultIndexManager:()=>$o,DefaultJsonSerializer:()=>so,DefaultLangiumDocumentFactory:()=>Xa,DefaultLangiumDocuments:()=>Ja,DefaultLangiumProfiler:()=>Gh,DefaultLexer:()=>Ti,DefaultLexerErrorMessageProvider:()=>ko,DefaultLinker:()=>Qa,DefaultNameProvider:()=>Za,DefaultReferenceDescriptionProvider:()=>uo,DefaultReferences:()=>eo,DefaultScopeComputation:()=>to,DefaultScopeProvider:()=>io,DefaultServiceRegistry:()=>ao,DefaultTokenBuilder:()=>Jr,DefaultValueConverter:()=>li,DefaultWorkspaceLock:()=>bo,DefaultWorkspaceManager:()=>So,Deferred:()=>wt,Disposable:()=>In,DisposableCache:()=>Rs,DocumentCache:()=>gl,DocumentState:()=>Z,DocumentValidator:()=>Yt,EMPTY_SCOPE:()=>QA,EMPTY_STREAM:()=>an,EmptyFileSystem:()=>Fh,EmptyFileSystemProvider:()=>ru,ErrorWithLocation:()=>Hn,GrammarAST:()=>oa,GrammarUtils:()=>hc,IndentationAwareLexer:()=>Mh,IndentationAwareTokenBuilder:()=>tu,JSDocDocumentationProvider:()=>wo,LangiumCompletionParser:()=>Ka,LangiumParser:()=>Va,LangiumParserErrorMessageProvider:()=>fs,LeafCstNodeImpl:()=>ai,LexingMode:()=>Ri,MapScope:()=>np,Module:()=>Lh,MultiMap:()=>yt,MultiMapScope:()=>ro,OperationCancelled:()=>Ht,ParserWorker:()=>bh,ProfilingTask:()=>nu,Reduction:()=>Si,RefResolving:()=>fi,RegExpUtils:()=>fc,RootCstNodeImpl:()=>us,SimpleCache:()=>no,StreamImpl:()=>Ut,StreamScope:()=>Ts,TextDocument:()=>ms,TreeStreamImpl:()=>yr,URI:()=>tt,UriTrie:()=>ys,UriUtils:()=>je,VALIDATE_EACH_NODE:()=>oy,ValidationCategory:()=>yl,ValidationRegistry:()=>oo,ValueConverter:()=>Sr,WorkspaceCache:()=>xs,assertCondition:()=>dm,assertUnreachable:()=>xr,createCompletionParser:()=>Kd,createDefaultCoreModule:()=>Ph,createDefaultSharedCoreModule:()=>Oh,createGrammarConfig:()=>of,createLangiumParser:()=>Hd,createParser:()=>Ha,delayNextTick:()=>tp,diagnosticData:()=>hi,eagerLoad:()=>zx,getDiagnosticRange:()=>cy,indentationBuilderDefaultOptions:()=>Dh,inject:()=>eu,interruptAndCheck:()=>De,isAstNode:()=>Le,isAstNodeDescription:()=>gu,isAstNodeWithComment:()=>ip,isCompositeCstNode:()=>rr,isIMultiModeLexerDefinition:()=>Sh,isJSDoc:()=>wh,isLeafCstNode:()=>sn,isLinkingError:()=>On,isMultiReference:()=>Gt,isNamed:()=>sy,isOperationCancelled:()=>kr,isReference:()=>Ze,isRootCstNode:()=>Ys,isTokenTypeArray:()=>Jl,isTokenTypeDictionary:()=>$h,loadGrammarFromJson:()=>_r,parseJSDoc:()=>Nh,prepareLangiumParser:()=>Yg,setInterruptionPeriod:()=>ey,startCancelableOperation:()=>hl,stream:()=>te,toDiagnosticData:()=>ly,toDiagnosticSeverity:()=>Tl});var cc={};rn(cc,{DefaultNameRegexp:()=>oc,RangeComparison:()=>Rr,compareRange:()=>cm,findCommentNode:()=>qu,findDeclarationNodeAtOffset:()=>kE,findLeafNodeAtOffset:()=>zu,findLeafNodeBeforeOffset:()=>lm,flattenCst:()=>SE,getDatatypeNode:()=>$E,getInteriorNodes:()=>wE,getNextNode:()=>CE,getPreviousNode:()=>fm,getStartlineNode:()=>NE,inRange:()=>xu,isChildNode:()=>Uu,isCommentNode:()=>Gu,streamCst:()=>Vn,toDocumentSegment:()=>Kn,tokenToRange:()=>Di});function Le(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}s(Le,"isAstNode");function Ze(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"&&"ref"in t}s(Ze,"isReference");function Gt(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"&&"items"in t}s(Gt,"isMultiReference");function gu(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}s(gu,"isAstNodeDescription");function On(t){return typeof t=="object"&&t!==null&&typeof t.info=="object"&&typeof t.message=="string"}s(On,"isLinkingError");var Pn=class{static{s(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let r=this.types[e.container.$type];if(!r)throw new Error(`Type ${e.container.$type||"undefined"} not found.`);let n=r.properties[e.property]?.referenceType;if(!n)throw new Error(`Property ${e.property||"undefined"} of type ${e.container.$type} is not a reference.`);return n}getTypeMetaData(e){let r=this.types[e];return r||{name:e,properties:{},superTypes:[]}}isInstance(e,r){return Le(e)&&this.isSubtype(e.$type,r)}isSubtype(e,r){if(e===r)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[r];if(i!==void 0)return i;{let a=this.types[e],o=a?a.superTypes.some(c=>this.isSubtype(c,r)):!1;return n[r]=o,o}}getAllSubTypes(e){let r=this.allSubtypes[e];if(r)return r;{let n=this.getAllTypes(),i=[];for(let a of n)this.isSubtype(a,e)&&i.push(a);return this.allSubtypes[e]=i,i}}};function rr(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}s(rr,"isCompositeCstNode");function sn(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}s(sn,"isLeafCstNode");function Ys(t){return rr(t)&&typeof t.fullText=="string"}s(Ys,"isRootCstNode");var Ut=class t{static{s(this,"StreamImpl")}constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:s(()=>this.nextFn(e.state),"next"),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)r++,n=e.next();return r}toArray(){let e=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,r){let n=this.map(i=>[e?e(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(e){return new t(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return ht})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=sE(i.value)),a=!0;while(!i.done);return n}indexOf(e,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===e)return i;a=n.next(),i++}return-1}every(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(!e(n.value))return!1;n=r.next()}return!0}some(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return!0;n=r.next()}return!1}forEach(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)e(i.value,n),i=r.next(),n++}map(e){return new t(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?ht:{done:!1,value:e(i)}})}filter(e){return new t(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&e(n.value))return n;while(!n.done);return ht})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=e(i,a.value),a=n.next();return i}reduceRight(e,r){return this.recursiveReduce(this.iterator(),e,r)}recursiveReduce(e,r,n){let i=e.next();if(i.done)return n;let a=this.recursiveReduce(e,r,n);return a===void 0?i.value:r(a,i.value)}find(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return n.value;n=r.next()}}findIndex(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(e(i.value))return n;i=r.next(),n++}return-1}includes(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===e)return!0;n=r.next()}return!1}flatMap(e){return new t(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=e(i);if(Uo(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return ht})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let r=e>1?this.flat(e-1):this;return new t(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let o=n.iterator.next();if(o.done)n.iterator=void 0;else return o}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(Uo(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return ht})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(e=1){return new t(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>e?ht:this.nextFn(r.state)))}distinct(e){return new t(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=e?e(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return ht})}exclude(e,r){let n=new Set;for(let i of e){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};function sE(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}s(sE,"toString");function Uo(t){return!!t&&typeof t[Symbol.iterator]=="function"}s(Uo,"isIterable");var an=new Ut(()=>{},()=>ht),ht=Object.freeze({done:!0,value:void 0});function te(...t){if(t.length===1){let e=t[0];if(e instanceof Ut)return e;if(Uo(e))return new Ut(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new Ut(()=>({index:0}),r=>r.index1?new Ut(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let r=e.iterator.next();if(!r.done)return r;e.iterator=void 0}if(e.array){if(e.arrIndex({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[r(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let o=i.iterators[i.iterators.length-1].next();if(o.done)i.iterators.pop();else return i.iterators.push(r(o.value)[Symbol.iterator]()),o}return ht})}iterator(){let e={state:this.startFn(),next:s(()=>this.nextFn(e.state),"next"),prune:s(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}},Si;(function(t){function e(a){return a.reduce((o,c)=>o+c,0)}s(e,"sum"),t.sum=e;function r(a){return a.reduce((o,c)=>o*c,0)}s(r,"product"),t.product=r;function n(a){return a.reduce((o,c)=>Math.min(o,c))}s(n,"min"),t.min=n;function i(a){return a.reduce((o,c)=>Math.max(o,c))}s(i,"max"),t.max=i})(Si||(Si={}));var zo={};rn(zo,{assignMandatoryProperties:()=>Ru,copyAstNode:()=>Tu,findRootNode:()=>Ci,getContainerOfType:()=>Mr,getDocument:()=>mt,getReferenceNodes:()=>qo,hasContainerOfType:()=>aE,linkContentToContainer:()=>ki,streamAllContents:()=>nr,streamAst:()=>$t,streamContents:()=>Xs,streamReferences:()=>on});function ki(t,e={}){for(let[r,n]of Object.entries(t))r.startsWith("$")||(Array.isArray(n)?n.forEach((i,a)=>{Le(i)&&(i.$container=t,i.$containerProperty=r,i.$containerIndex=a,e.deep&&ki(i,e))}):Le(n)&&(n.$container=t,n.$containerProperty=r,e.deep&&ki(n,e)))}s(ki,"linkContentToContainer");function Mr(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}s(Mr,"getContainerOfType");function aE(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}s(aE,"hasContainerOfType");function mt(t){let r=Ci(t).$document;if(!r)throw new Error("AST node has no document.");return r}s(mt,"getDocument");function Ci(t){for(;t.$container;)t=t.$container;return t}s(Ci,"findRootNode");function qo(t){return Ze(t)?t.ref?[t.ref]:[]:Gt(t)?t.items.map(e=>e.ref):[]}s(qo,"getReferenceNodes");function Xs(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new Ut(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexXs(r,e))}s(nr,"streamAllContents");function $t(t,e){if(t){if(e?.range&&!yu(t,e.range))return new yr(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new yr(t,r=>Xs(r,e),{includeRoot:!0})}s($t,"streamAst");function yu(t,e){if(!e)return!0;let r=t.$cstNode?.range;return r?xu(r,e):!1}s(yu,"isAstNodeInRange");function on(t){return new Ut(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex_t,AbstractParserRule:()=>Js,AbstractRule:()=>Ni,AbstractType:()=>qt,Action:()=>cn,Alternatives:()=>Qs,ArrayLiteral:()=>jo,ArrayType:()=>Bo,Assignment:()=>ln,BooleanLiteral:()=>Wo,CharacterRange:()=>un,Condition:()=>fn,Conjunction:()=>Zs,CrossReference:()=>dn,Disjunction:()=>ea,EndOfFile:()=>Vo,Grammar:()=>Fr,GrammarImport:()=>Ko,Group:()=>Ln,InferredType:()=>Ho,InfixRule:()=>Tr,InfixRuleOperatorList:()=>ta,InfixRuleOperators:()=>Yo,Interface:()=>wi,Keyword:()=>Ii,LangiumGrammarAstReflection:()=>Li,LangiumGrammarTerminals:()=>oE,NamedArgument:()=>_i,NegatedToken:()=>Dn,Negation:()=>Xo,NumberLiteral:()=>Jo,Parameter:()=>bi,ParameterReference:()=>Qo,ParserRule:()=>ir,ReferenceType:()=>ra,RegexToken:()=>Mn,ReturnType:()=>Zo,RuleCall:()=>Fn,SimpleType:()=>Pi,StringLiteral:()=>ec,TerminalAlternatives:()=>Gn,TerminalElement:()=>bt,TerminalGroup:()=>Un,TerminalRule:()=>Gr,TerminalRuleCall:()=>qn,Type:()=>na,TypeAttribute:()=>zn,TypeDefinition:()=>jn,UnionType:()=>tc,UnorderedGroup:()=>ia,UntilToken:()=>Bn,ValueLiteral:()=>Wn,Wildcard:()=>Oi,isAbstractElement:()=>sa,isAbstractParserRule:()=>Ur,isAbstractRule:()=>cE,isAbstractType:()=>lE,isAction:()=>qr,isAlternatives:()=>rc,isArrayLiteral:()=>uE,isArrayType:()=>Eu,isAssignment:()=>sr,isBooleanLiteral:()=>vu,isCharacterRange:()=>Au,isCondition:()=>fE,isConjunction:()=>$u,isCrossReference:()=>ar,isDisjunction:()=>Su,isEndOfFile:()=>ku,isGrammar:()=>dE,isGrammarImport:()=>pE,isGroup:()=>pn,isInferredType:()=>aa,isInfixRule:()=>hn,isInfixRuleOperatorList:()=>hE,isInfixRuleOperators:()=>mE,isInterface:()=>Cu,isKeyword:()=>Kt,isNamedArgument:()=>gE,isNegatedToken:()=>Nu,isNegation:()=>wu,isNumberLiteral:()=>yE,isParameter:()=>TE,isParameterReference:()=>Iu,isParserRule:()=>nt,isReferenceType:()=>_u,isRegexToken:()=>bu,isReturnType:()=>Pu,isRuleCall:()=>or,isSimpleType:()=>nc,isStringLiteral:()=>RE,isTerminalAlternatives:()=>Ou,isTerminalElement:()=>xE,isTerminalGroup:()=>Lu,isTerminalRule:()=>St,isTerminalRuleCall:()=>ic,isType:()=>sc,isTypeAttribute:()=>EE,isTypeDefinition:()=>vE,isUnionType:()=>Du,isUnorderedGroup:()=>ac,isUntilToken:()=>Mu,isValueLiteral:()=>AE,isWildcard:()=>Fu,reflection:()=>B});var oE={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},_t={$type:"AbstractElement",cardinality:"cardinality"};function sa(t){return B.isInstance(t,_t.$type)}s(sa,"isAbstractElement");var Js={$type:"AbstractParserRule"};function Ur(t){return B.isInstance(t,Js.$type)}s(Ur,"isAbstractParserRule");var Ni={$type:"AbstractRule"};function cE(t){return B.isInstance(t,Ni.$type)}s(cE,"isAbstractRule");var qt={$type:"AbstractType"};function lE(t){return B.isInstance(t,qt.$type)}s(lE,"isAbstractType");var cn={$type:"Action",cardinality:"cardinality",feature:"feature",inferredType:"inferredType",operator:"operator",type:"type"};function qr(t){return B.isInstance(t,cn.$type)}s(qr,"isAction");var Qs={$type:"Alternatives",cardinality:"cardinality",elements:"elements"};function rc(t){return B.isInstance(t,Qs.$type)}s(rc,"isAlternatives");var jo={$type:"ArrayLiteral",elements:"elements"};function uE(t){return B.isInstance(t,jo.$type)}s(uE,"isArrayLiteral");var Bo={$type:"ArrayType",elementType:"elementType"};function Eu(t){return B.isInstance(t,Bo.$type)}s(Eu,"isArrayType");var ln={$type:"Assignment",cardinality:"cardinality",feature:"feature",operator:"operator",predicate:"predicate",terminal:"terminal"};function sr(t){return B.isInstance(t,ln.$type)}s(sr,"isAssignment");var Wo={$type:"BooleanLiteral",true:"true"};function vu(t){return B.isInstance(t,Wo.$type)}s(vu,"isBooleanLiteral");var un={$type:"CharacterRange",cardinality:"cardinality",left:"left",lookahead:"lookahead",parenthesized:"parenthesized",right:"right"};function Au(t){return B.isInstance(t,un.$type)}s(Au,"isCharacterRange");var fn={$type:"Condition"};function fE(t){return B.isInstance(t,fn.$type)}s(fE,"isCondition");var Zs={$type:"Conjunction",left:"left",right:"right"};function $u(t){return B.isInstance(t,Zs.$type)}s($u,"isConjunction");var dn={$type:"CrossReference",cardinality:"cardinality",deprecatedSyntax:"deprecatedSyntax",isMulti:"isMulti",terminal:"terminal",type:"type"};function ar(t){return B.isInstance(t,dn.$type)}s(ar,"isCrossReference");var ea={$type:"Disjunction",left:"left",right:"right"};function Su(t){return B.isInstance(t,ea.$type)}s(Su,"isDisjunction");var Vo={$type:"EndOfFile",cardinality:"cardinality"};function ku(t){return B.isInstance(t,Vo.$type)}s(ku,"isEndOfFile");var Fr={$type:"Grammar",imports:"imports",interfaces:"interfaces",isDeclared:"isDeclared",name:"name",rules:"rules",types:"types"};function dE(t){return B.isInstance(t,Fr.$type)}s(dE,"isGrammar");var Ko={$type:"GrammarImport",path:"path"};function pE(t){return B.isInstance(t,Ko.$type)}s(pE,"isGrammarImport");var Ln={$type:"Group",cardinality:"cardinality",elements:"elements",guardCondition:"guardCondition",predicate:"predicate"};function pn(t){return B.isInstance(t,Ln.$type)}s(pn,"isGroup");var Ho={$type:"InferredType",name:"name"};function aa(t){return B.isInstance(t,Ho.$type)}s(aa,"isInferredType");var Tr={$type:"InfixRule",call:"call",dataType:"dataType",inferredType:"inferredType",name:"name",operators:"operators",parameters:"parameters",returnType:"returnType"};function hn(t){return B.isInstance(t,Tr.$type)}s(hn,"isInfixRule");var ta={$type:"InfixRuleOperatorList",associativity:"associativity",operators:"operators"};function hE(t){return B.isInstance(t,ta.$type)}s(hE,"isInfixRuleOperatorList");var Yo={$type:"InfixRuleOperators",precedences:"precedences"};function mE(t){return B.isInstance(t,Yo.$type)}s(mE,"isInfixRuleOperators");var wi={$type:"Interface",attributes:"attributes",name:"name",superTypes:"superTypes"};function Cu(t){return B.isInstance(t,wi.$type)}s(Cu,"isInterface");var Ii={$type:"Keyword",cardinality:"cardinality",predicate:"predicate",value:"value"};function Kt(t){return B.isInstance(t,Ii.$type)}s(Kt,"isKeyword");var _i={$type:"NamedArgument",calledByName:"calledByName",parameter:"parameter",value:"value"};function gE(t){return B.isInstance(t,_i.$type)}s(gE,"isNamedArgument");var Dn={$type:"NegatedToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};function Nu(t){return B.isInstance(t,Dn.$type)}s(Nu,"isNegatedToken");var Xo={$type:"Negation",value:"value"};function wu(t){return B.isInstance(t,Xo.$type)}s(wu,"isNegation");var Jo={$type:"NumberLiteral",value:"value"};function yE(t){return B.isInstance(t,Jo.$type)}s(yE,"isNumberLiteral");var bi={$type:"Parameter",name:"name"};function TE(t){return B.isInstance(t,bi.$type)}s(TE,"isParameter");var Qo={$type:"ParameterReference",parameter:"parameter"};function Iu(t){return B.isInstance(t,Qo.$type)}s(Iu,"isParameterReference");var ir={$type:"ParserRule",dataType:"dataType",definition:"definition",entry:"entry",fragment:"fragment",inferredType:"inferredType",name:"name",parameters:"parameters",returnType:"returnType"};function nt(t){return B.isInstance(t,ir.$type)}s(nt,"isParserRule");var ra={$type:"ReferenceType",isMulti:"isMulti",referenceType:"referenceType"};function _u(t){return B.isInstance(t,ra.$type)}s(_u,"isReferenceType");var Mn={$type:"RegexToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",regex:"regex"};function bu(t){return B.isInstance(t,Mn.$type)}s(bu,"isRegexToken");var Zo={$type:"ReturnType",name:"name"};function Pu(t){return B.isInstance(t,Zo.$type)}s(Pu,"isReturnType");var Fn={$type:"RuleCall",arguments:"arguments",cardinality:"cardinality",predicate:"predicate",rule:"rule"};function or(t){return B.isInstance(t,Fn.$type)}s(or,"isRuleCall");var Pi={$type:"SimpleType",primitiveType:"primitiveType",stringType:"stringType",typeRef:"typeRef"};function nc(t){return B.isInstance(t,Pi.$type)}s(nc,"isSimpleType");var ec={$type:"StringLiteral",value:"value"};function RE(t){return B.isInstance(t,ec.$type)}s(RE,"isStringLiteral");var Gn={$type:"TerminalAlternatives",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};function Ou(t){return B.isInstance(t,Gn.$type)}s(Ou,"isTerminalAlternatives");var bt={$type:"TerminalElement",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};function xE(t){return B.isInstance(t,bt.$type)}s(xE,"isTerminalElement");var Un={$type:"TerminalGroup",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};function Lu(t){return B.isInstance(t,Un.$type)}s(Lu,"isTerminalGroup");var Gr={$type:"TerminalRule",definition:"definition",fragment:"fragment",hidden:"hidden",name:"name",type:"type"};function St(t){return B.isInstance(t,Gr.$type)}s(St,"isTerminalRule");var qn={$type:"TerminalRuleCall",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",rule:"rule"};function ic(t){return B.isInstance(t,qn.$type)}s(ic,"isTerminalRuleCall");var na={$type:"Type",name:"name",type:"type"};function sc(t){return B.isInstance(t,na.$type)}s(sc,"isType");var zn={$type:"TypeAttribute",defaultValue:"defaultValue",isOptional:"isOptional",name:"name",type:"type"};function EE(t){return B.isInstance(t,zn.$type)}s(EE,"isTypeAttribute");var jn={$type:"TypeDefinition"};function vE(t){return B.isInstance(t,jn.$type)}s(vE,"isTypeDefinition");var tc={$type:"UnionType",types:"types"};function Du(t){return B.isInstance(t,tc.$type)}s(Du,"isUnionType");var ia={$type:"UnorderedGroup",cardinality:"cardinality",elements:"elements"};function ac(t){return B.isInstance(t,ia.$type)}s(ac,"isUnorderedGroup");var Bn={$type:"UntilToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};function Mu(t){return B.isInstance(t,Bn.$type)}s(Mu,"isUntilToken");var Wn={$type:"ValueLiteral"};function AE(t){return B.isInstance(t,Wn.$type)}s(AE,"isValueLiteral");var Oi={$type:"Wildcard",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};function Fu(t){return B.isInstance(t,Oi.$type)}s(Fu,"isWildcard");var Li=class extends Pn{static{s(this,"LangiumGrammarAstReflection")}constructor(){super(...arguments),this.types={AbstractElement:{name:_t.$type,properties:{cardinality:{name:_t.cardinality}},superTypes:[]},AbstractParserRule:{name:Js.$type,properties:{},superTypes:[Ni.$type,qt.$type]},AbstractRule:{name:Ni.$type,properties:{},superTypes:[]},AbstractType:{name:qt.$type,properties:{},superTypes:[]},Action:{name:cn.$type,properties:{cardinality:{name:cn.cardinality},feature:{name:cn.feature},inferredType:{name:cn.inferredType},operator:{name:cn.operator},type:{name:cn.type,referenceType:qt.$type}},superTypes:[_t.$type]},Alternatives:{name:Qs.$type,properties:{cardinality:{name:Qs.cardinality},elements:{name:Qs.elements,defaultValue:[]}},superTypes:[_t.$type]},ArrayLiteral:{name:jo.$type,properties:{elements:{name:jo.elements,defaultValue:[]}},superTypes:[Wn.$type]},ArrayType:{name:Bo.$type,properties:{elementType:{name:Bo.elementType}},superTypes:[jn.$type]},Assignment:{name:ln.$type,properties:{cardinality:{name:ln.cardinality},feature:{name:ln.feature},operator:{name:ln.operator},predicate:{name:ln.predicate},terminal:{name:ln.terminal}},superTypes:[_t.$type]},BooleanLiteral:{name:Wo.$type,properties:{true:{name:Wo.true,defaultValue:!1}},superTypes:[fn.$type,Wn.$type]},CharacterRange:{name:un.$type,properties:{cardinality:{name:un.cardinality},left:{name:un.left},lookahead:{name:un.lookahead},parenthesized:{name:un.parenthesized,defaultValue:!1},right:{name:un.right}},superTypes:[bt.$type]},Condition:{name:fn.$type,properties:{},superTypes:[]},Conjunction:{name:Zs.$type,properties:{left:{name:Zs.left},right:{name:Zs.right}},superTypes:[fn.$type]},CrossReference:{name:dn.$type,properties:{cardinality:{name:dn.cardinality},deprecatedSyntax:{name:dn.deprecatedSyntax,defaultValue:!1},isMulti:{name:dn.isMulti,defaultValue:!1},terminal:{name:dn.terminal},type:{name:dn.type,referenceType:qt.$type}},superTypes:[_t.$type]},Disjunction:{name:ea.$type,properties:{left:{name:ea.left},right:{name:ea.right}},superTypes:[fn.$type]},EndOfFile:{name:Vo.$type,properties:{cardinality:{name:Vo.cardinality}},superTypes:[_t.$type]},Grammar:{name:Fr.$type,properties:{imports:{name:Fr.imports,defaultValue:[]},interfaces:{name:Fr.interfaces,defaultValue:[]},isDeclared:{name:Fr.isDeclared,defaultValue:!1},name:{name:Fr.name},rules:{name:Fr.rules,defaultValue:[]},types:{name:Fr.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:Ko.$type,properties:{path:{name:Ko.path}},superTypes:[]},Group:{name:Ln.$type,properties:{cardinality:{name:Ln.cardinality},elements:{name:Ln.elements,defaultValue:[]},guardCondition:{name:Ln.guardCondition},predicate:{name:Ln.predicate}},superTypes:[_t.$type]},InferredType:{name:Ho.$type,properties:{name:{name:Ho.name}},superTypes:[qt.$type]},InfixRule:{name:Tr.$type,properties:{call:{name:Tr.call},dataType:{name:Tr.dataType},inferredType:{name:Tr.inferredType},name:{name:Tr.name},operators:{name:Tr.operators},parameters:{name:Tr.parameters,defaultValue:[]},returnType:{name:Tr.returnType,referenceType:qt.$type}},superTypes:[Js.$type]},InfixRuleOperatorList:{name:ta.$type,properties:{associativity:{name:ta.associativity},operators:{name:ta.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:Yo.$type,properties:{precedences:{name:Yo.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:wi.$type,properties:{attributes:{name:wi.attributes,defaultValue:[]},name:{name:wi.name},superTypes:{name:wi.superTypes,defaultValue:[],referenceType:qt.$type}},superTypes:[qt.$type]},Keyword:{name:Ii.$type,properties:{cardinality:{name:Ii.cardinality},predicate:{name:Ii.predicate},value:{name:Ii.value}},superTypes:[_t.$type]},NamedArgument:{name:_i.$type,properties:{calledByName:{name:_i.calledByName,defaultValue:!1},parameter:{name:_i.parameter,referenceType:bi.$type},value:{name:_i.value}},superTypes:[]},NegatedToken:{name:Dn.$type,properties:{cardinality:{name:Dn.cardinality},lookahead:{name:Dn.lookahead},parenthesized:{name:Dn.parenthesized,defaultValue:!1},terminal:{name:Dn.terminal}},superTypes:[bt.$type]},Negation:{name:Xo.$type,properties:{value:{name:Xo.value}},superTypes:[fn.$type]},NumberLiteral:{name:Jo.$type,properties:{value:{name:Jo.value}},superTypes:[Wn.$type]},Parameter:{name:bi.$type,properties:{name:{name:bi.name}},superTypes:[]},ParameterReference:{name:Qo.$type,properties:{parameter:{name:Qo.parameter,referenceType:bi.$type}},superTypes:[fn.$type]},ParserRule:{name:ir.$type,properties:{dataType:{name:ir.dataType},definition:{name:ir.definition},entry:{name:ir.entry,defaultValue:!1},fragment:{name:ir.fragment,defaultValue:!1},inferredType:{name:ir.inferredType},name:{name:ir.name},parameters:{name:ir.parameters,defaultValue:[]},returnType:{name:ir.returnType,referenceType:qt.$type}},superTypes:[Js.$type]},ReferenceType:{name:ra.$type,properties:{isMulti:{name:ra.isMulti,defaultValue:!1},referenceType:{name:ra.referenceType}},superTypes:[jn.$type]},RegexToken:{name:Mn.$type,properties:{cardinality:{name:Mn.cardinality},lookahead:{name:Mn.lookahead},parenthesized:{name:Mn.parenthesized,defaultValue:!1},regex:{name:Mn.regex}},superTypes:[bt.$type]},ReturnType:{name:Zo.$type,properties:{name:{name:Zo.name}},superTypes:[]},RuleCall:{name:Fn.$type,properties:{arguments:{name:Fn.arguments,defaultValue:[]},cardinality:{name:Fn.cardinality},predicate:{name:Fn.predicate},rule:{name:Fn.rule,referenceType:Ni.$type}},superTypes:[_t.$type]},SimpleType:{name:Pi.$type,properties:{primitiveType:{name:Pi.primitiveType},stringType:{name:Pi.stringType},typeRef:{name:Pi.typeRef,referenceType:qt.$type}},superTypes:[jn.$type]},StringLiteral:{name:ec.$type,properties:{value:{name:ec.value}},superTypes:[Wn.$type]},TerminalAlternatives:{name:Gn.$type,properties:{cardinality:{name:Gn.cardinality},elements:{name:Gn.elements,defaultValue:[]},lookahead:{name:Gn.lookahead},parenthesized:{name:Gn.parenthesized,defaultValue:!1}},superTypes:[bt.$type]},TerminalElement:{name:bt.$type,properties:{cardinality:{name:bt.cardinality},lookahead:{name:bt.lookahead},parenthesized:{name:bt.parenthesized,defaultValue:!1}},superTypes:[_t.$type]},TerminalGroup:{name:Un.$type,properties:{cardinality:{name:Un.cardinality},elements:{name:Un.elements,defaultValue:[]},lookahead:{name:Un.lookahead},parenthesized:{name:Un.parenthesized,defaultValue:!1}},superTypes:[bt.$type]},TerminalRule:{name:Gr.$type,properties:{definition:{name:Gr.definition},fragment:{name:Gr.fragment,defaultValue:!1},hidden:{name:Gr.hidden,defaultValue:!1},name:{name:Gr.name},type:{name:Gr.type}},superTypes:[Ni.$type]},TerminalRuleCall:{name:qn.$type,properties:{cardinality:{name:qn.cardinality},lookahead:{name:qn.lookahead},parenthesized:{name:qn.parenthesized,defaultValue:!1},rule:{name:qn.rule,referenceType:Gr.$type}},superTypes:[bt.$type]},Type:{name:na.$type,properties:{name:{name:na.name},type:{name:na.type}},superTypes:[qt.$type]},TypeAttribute:{name:zn.$type,properties:{defaultValue:{name:zn.defaultValue},isOptional:{name:zn.isOptional,defaultValue:!1},name:{name:zn.name},type:{name:zn.type}},superTypes:[]},TypeDefinition:{name:jn.$type,properties:{},superTypes:[]},UnionType:{name:tc.$type,properties:{types:{name:tc.types,defaultValue:[]}},superTypes:[jn.$type]},UnorderedGroup:{name:ia.$type,properties:{cardinality:{name:ia.cardinality},elements:{name:ia.elements,defaultValue:[]}},superTypes:[_t.$type]},UntilToken:{name:Bn.$type,properties:{cardinality:{name:Bn.cardinality},lookahead:{name:Bn.lookahead},parenthesized:{name:Bn.parenthesized,defaultValue:!1},terminal:{name:Bn.terminal}},superTypes:[bt.$type]},ValueLiteral:{name:Wn.$type,properties:{},superTypes:[]},Wildcard:{name:Oi.$type,properties:{cardinality:{name:Oi.cardinality},lookahead:{name:Oi.lookahead},parenthesized:{name:Oi.parenthesized,defaultValue:!1}},superTypes:[bt.$type]}}}},B=new Li;function $E(t){let e=t,r=!1;for(;e;){let n=Mr(e.grammarSource,nt);if(n&&n.dataType)e=e.container,r=!0;else return r?e:void 0}}s($E,"getDatatypeNode");function Vn(t){return new yr(t,e=>rr(e)?e.content:[],{includeRoot:!0})}s(Vn,"streamCst");function SE(t){return Vn(t).filter(sn)}s(SE,"flattenCst");function Uu(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}s(Uu,"isChildNode");function Di(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}s(Di,"tokenToRange");function Kn(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}s(Kn,"toDocumentSegment");var Rr;(function(t){t[t.Before=0]="Before",t[t.After=1]="After",t[t.OverlapFront=2]="OverlapFront",t[t.OverlapBack=3]="OverlapBack",t[t.Inside=4]="Inside",t[t.Outside=5]="Outside"})(Rr||(Rr={}));function cm(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>=e.end.character)return Rr.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.lineRr.After}s(xu,"inRange");var oc=/^[\w\p{L}]$/u;function kE(t,e,r=oc){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return zu(t,e)}}s(kE,"findDeclarationNodeAtOffset");function qu(t,e){if(t){let r=fm(t,!0);if(r&&Gu(r,e))return r;if(Ys(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(Gu(a,e))return a}}}}s(qu,"findCommentNode");function Gu(t,e){return sn(t)&&e.includes(t.tokenType.name)}s(Gu,"isCommentNode");function zu(t,e){if(sn(t))return t;if(rr(t)){let r=um(t,e,!1);if(r)return zu(r,e)}}s(zu,"findLeafNodeAtOffset");function lm(t,e){if(sn(t))return t;if(rr(t)){let r=um(t,e,!0);if(r)return lm(r,e)}}s(lm,"findLeafNodeBeforeOffset");function um(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let o=Math.floor((n+i)/2),c=t.content[o];if(c.offset<=e&&c.end>e)return c;c.end<=e?(a=r?c:void 0,n=o+1):i=o-1}return a}s(um,"binarySearch");function fm(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t);for(;n>0;){n--;let i=r.content[n];if(e||!i.hidden)return i}t=r}}s(fm,"getPreviousNode");function CE(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;nnf,findNameAssignment:()=>dc,findNodeForKeyword:()=>tf,findNodeForProperty:()=>pa,findNodesForKeyword:()=>LE,findNodesForKeywordInternal:()=>rf,findNodesForProperty:()=>Zu,getActionAtElement:()=>xm,getActionType:()=>vm,getAllReachableRules:()=>da,getAllRulesUsedForCrossReferences:()=>OE,getCrossReferenceTerminal:()=>Ju,getEntryRule:()=>gm,getExplicitRuleType:()=>pc,getHiddenRules:()=>ym,getRuleType:()=>sf,getRuleTypeName:()=>UE,getTypeName:()=>gn,isArrayCardinality:()=>ME,isArrayOperator:()=>FE,isCommentTerminal:()=>Qu,isDataType:()=>GE,isDataTypeRule:()=>ha,isOptionalCardinality:()=>DE,terminalRegex:()=>Fi});var Hn=class extends Error{static{s(this,"ErrorWithLocation")}constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}};function xr(t,e="Error: Got unexpected value."){throw new Error(e)}s(xr,"assertUnreachable");function dm(t,e="Error: Condition is violated."){if(!t)throw new Error(e)}s(dm,"assertCondition");var fc={};rn(fc,{NEWLINE_REGEXP:()=>Vu,escapeRegExp:()=>mn,getTerminalParts:()=>PE,isMultilineComment:()=>Ku,isWhitespace:()=>fa,partialMatches:()=>Hu,partialRegExp:()=>mm,whitespaceCharacters:()=>hm});function V(t){return t.charCodeAt(0)}s(V,"cc");function lc(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}s(lc,"insertToSet");function Mi(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}s(Mi,"addFlag");function Yn(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}s(Yn,"ASSERT_EXISTS");function ca(){throw Error("Internal Error - Should never get here!")}s(ca,"ASSERT_NEVER_REACH_HERE");function ju(t){return t.type==="Character"}s(ju,"isCharacter");var la=[];for(let t=V("0");t<=V("9");t++)la.push(t);var ua=[V("_")].concat(la);for(let t=V("a");t<=V("z");t++)ua.push(t);for(let t=V("A");t<=V("Z");t++)ua.push(t);var Bu=[V(" "),V("\f"),V(` -`),V("\r"),V(" "),V("\v"),V(" "),V("\xA0"),V("\u1680"),V("\u2000"),V("\u2001"),V("\u2002"),V("\u2003"),V("\u2004"),V("\u2005"),V("\u2006"),V("\u2007"),V("\u2008"),V("\u2009"),V("\u200A"),V("\u2028"),V("\u2029"),V("\u202F"),V("\u205F"),V("\u3000"),V("\uFEFF")];var _E=/[0-9a-fA-F]/,uc=/[0-9]/,bE=/[1-9]/,Xn=class{static{s(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let r=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":Mi(n,"global");break;case"i":Mi(n,"ignoreCase");break;case"m":Mi(n,"multiLine");break;case"u":Mi(n,"unicode");break;case"y":Mi(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:r,loc:this.loc(0)}}disjunction(){let e=[],r=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(r)}}alternative(){let e=[],r=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(r)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let r;switch(this.popChar()){case"=":r="Lookahead";break;case"!":r="NegativeLookahead";break;case"<":{switch(this.popChar()){case"=":r="Lookbehind";break;case"!":r="NegativeLookbehind"}break}}Yn(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return ca()}quantifier(e=!1){let r,n=this.idx;switch(this.popChar()){case"*":r={atLeast:0,atMost:1/0};break;case"+":r={atLeast:1,atMost:1/0};break;case"?":r={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":r={atLeast:i,atMost:i};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),r={atLeast:i,atMost:a}):r={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&r===void 0)return;Yn(r);break}if(!(e===!0&&r===void 0)&&Yn(r))return this.peekChar(0)==="?"?(this.consumeChar("?"),r.greedy=!1):r.greedy=!0,r.type="Quantifier",r.loc=this.loc(n),r}atom(){let e,r=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Yn(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):ca()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[V(` -`),V("\r"),V("\u2028"),V("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,r=!1;switch(this.popChar()){case"d":e=la;break;case"D":e=la,r=!0;break;case"s":e=Bu;break;case"S":e=Bu,r=!0;break;case"w":e=ua;break;case"W":e=ua,r=!0;break}return Yn(e)?{type:"Set",value:e,complement:r}:ca()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=V("\f");break;case"n":e=V(` -`);break;case"r":e=V("\r");break;case"t":e=V(" ");break;case"v":e=V("\v");break}return Yn(e)?{type:"Character",value:e}:ca()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:V("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:V(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:V(e)}}}characterClass(){let e=[],r=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),r=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(ju(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),o=a.type==="Character";if(ju(a)){if(a.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}};var Er=class{static{s(this,"BaseRegExpVisitor")}visitChildren(e){for(let r in e){let n=e[r];e.hasOwnProperty(r)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Lookbehind":this.visitLookbehind(e);break;case"NegativeLookbehind":this.visitNegativeLookbehind(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitLookbehind(e){}visitNegativeLookbehind(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}};var Vu=/\r?\n/gm,pm=new Xn,Wu=class extends Er{static{s(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let r=String.fromCharCode(e.value);if(!this.multiline&&r===` -`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=mn(r);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let r=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(r);this.multiline=!!` -`.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},Jn=new Wu;function PE(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=pm.pattern(t),r=[];for(let n of e.value.value)Jn.reset(t),Jn.visit(n),r.push({start:Jn.startRegexp,end:Jn.endRegex});return r}catch{return[]}}s(PE,"getTerminalParts");function Ku(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),Jn.reset(t),Jn.visit(pm.pattern(t)),Jn.multiline}catch{return!1}}s(Ku,"isMultilineComment");var hm=`\f -\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");function fa(t){let e=typeof t=="string"?new RegExp(t):t;return hm.some(r=>e.test(r))}s(fa,"isWhitespace");function mn(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}s(mn,"escapeRegExp");function Hu(t,e){let r=mm(t),n=e.match(r);return!!n&&n[0].length>0}s(Hu,"partialMatches");function mm(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",o;function c(u){a+=r.substr(n,u),n+=u}s(c,"appendRaw");function l(u){a+="(?:"+r.substr(n,u)+"|$)",n+=u}for(s(l,"appendOptional");n",n)-n+1);break;default:l(2);break}break;case"[":o=/\[(?:\\.|.)*?\]/g,o.lastIndex=n,o=o.exec(r)||[],l(o[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":c(1);break;case"{":o=/\{\d+,?\d*\}/g,o.lastIndex=n,o=o.exec(r),o?c(o[0].length):l(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":o=n,n+=3,i(),a+=r.substr(o,n-o);break;case"<":switch(r[n+3]){case"=":case"!":o=n,n+=4,i(),a+=r.substr(o,n-o);break;default:c(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else c(1),a+=i()+"|$)";break;case")":return++n,a;default:l(1);break}return a}return s(i,"process"),new RegExp(i(),t.flags)}s(mm,"partialRegExp");function gm(t){return t.rules.find(e=>nt(e)&&e.entry)}s(gm,"getEntryRule");function ym(t){return t.rules.filter(e=>St(e)&&e.hidden)}s(ym,"getHiddenRules");function da(t,e){let r=new Set,n=gm(t);if(!n)return new Set(t.rules);let i=[n].concat(ym(t));for(let o of i)Tm(o,r,e);let a=new Set;for(let o of t.rules)(r.has(o.name)||St(o)&&o.hidden)&&a.add(o);return a}s(da,"getAllReachableRules");function Tm(t,e,r){e.add(t.name),nr(t).forEach(n=>{if(or(n)||r&&ic(n)){let i=n.rule.ref;i&&!e.has(i.name)&&Tm(i,e,r)}})}s(Tm,"ruleDfs");function OE(t){let e=new Set;return nr(t).forEach(r=>{ar(r)&&(nt(r.type.ref)&&e.add(r.type.ref),aa(r.type.ref)&&nt(r.type.ref.$container)&&e.add(r.type.ref.$container))}),e}s(OE,"getAllRulesUsedForCrossReferences");function Ju(t){if(t.terminal)return t.terminal;if(t.type.ref)return dc(t.type.ref)?.terminal}s(Ju,"getCrossReferenceTerminal");function Qu(t){return t.hidden&&!fa(Fi(t))}s(Qu,"isCommentTerminal");function Zu(t,e){return!t||!e?[]:ef(t,e,t.astNode,!0)}s(Zu,"findNodesForProperty");function pa(t,e,r){if(!t||!e)return;let n=ef(t,e,t.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}s(pa,"findNodeForProperty");function ef(t,e,r,n){if(!n){let i=Mr(t.grammarSource,sr);if(i&&i.feature===e)return[t]}return rr(t)&&t.astNode===r?t.content.flatMap(i=>ef(i,e,r,!1)):[]}s(ef,"findNodesForPropertyInternal");function LE(t,e){return t?rf(t,e,t?.astNode):[]}s(LE,"findNodesForKeyword");function tf(t,e,r){if(!t)return;let n=rf(t,e,t?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}s(tf,"findNodeForKeyword");function rf(t,e,r){if(t.astNode!==r)return[];if(Kt(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Vn(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let o=i.value;o.astNode===r?Kt(o.grammarSource)&&o.grammarSource.value===e&&a.push(o):n.prune()}while(!i.done);return a}s(rf,"findNodesForKeywordInternal");function nf(t){let e=t.astNode;for(;e===t.container?.astNode;){let r=Mr(t.grammarSource,sr);if(r)return r;t=t.container}}s(nf,"findAssignment");function dc(t){let e=t;return aa(e)&&(qr(e.$container)?e=e.$container.$container:Ur(e.$container)?e=e.$container:xr(e.$container)),Rm(t,e,new Map)}s(dc,"findNameAssignment");function Rm(t,e,r){function n(i,a){let o;return Mr(i,sr)||(o=Rm(a,a,r)),r.set(t,o),o}if(s(n,"go"),r.has(t))return r.get(t);r.set(t,void 0);for(let i of nr(e)){if(sr(i)&&i.feature.toLowerCase()==="name")return r.set(t,i),i;if(or(i)&&nt(i.rule.ref))return n(i,i.rule.ref);if(nc(i)&&i.typeRef?.ref)return n(i,i.typeRef.ref)}}s(Rm,"findNameAssignmentInternal");function xm(t){let e=t.$container;if(pn(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(qr(a))return a;{let o=nr(r[i]).find(qr);if(o)return o}}}if(sa(e))return xm(e)}s(xm,"getActionAtElement");function DE(t,e){return t==="?"||t==="*"||pn(e)&&!!e.guardCondition}s(DE,"isOptionalCardinality");function ME(t){return t==="*"||t==="+"}s(ME,"isArrayCardinality");function FE(t){return t==="+="}s(FE,"isArrayOperator");function ha(t){return Em(t,new Set)}s(ha,"isDataTypeRule");function Em(t,e){if(e.has(t))return!0;e.add(t);for(let r of nr(t))if(or(r)){if(!r.rule.ref||nt(r.rule.ref)&&!Em(r.rule.ref,e)||hn(r.rule.ref))return!1}else{if(sr(r))return!1;if(qr(r))return!1}return!!t.definition}s(Em,"isDataTypeRuleInternal");function GE(t){return Xu(t.type,new Set)}s(GE,"isDataType");function Xu(t,e){if(e.has(t))return!0;if(e.add(t),Eu(t))return!1;if(_u(t))return!1;if(Du(t))return t.types.every(r=>Xu(r,e));if(nc(t)){if(t.primitiveType!==void 0)return!0;if(t.stringType!==void 0)return!0;if(t.typeRef!==void 0){let r=t.typeRef.ref;return sc(r)?Xu(r.type,e):!1}else return!1}else return!1}s(Xu,"isDataTypeInternal");function pc(t){if(!St(t)){if(t.inferredType)return t.inferredType.name;if(t.dataType)return t.dataType;if(t.returnType){let e=t.returnType.ref;if(e)return e.name}}}s(pc,"getExplicitRuleType");function gn(t){if(Ur(t))return nt(t)&&ha(t)?t.name:pc(t)??t.name;if(Cu(t)||sc(t)||Pu(t))return t.name;if(qr(t)){let e=vm(t);if(e)return e}else if(aa(t))return t.name;throw new Error("Cannot get name of Unknown Type")}s(gn,"getTypeName");function vm(t){if(t.inferredType)return t.inferredType.name;if(t.type?.ref)return gn(t.type.ref)}s(vm,"getActionType");function UE(t){return St(t)?t.type?.name??"string":nt(t)&&ha(t)?t.name:pc(t)??t.name}s(UE,"getRuleTypeName");function sf(t){return St(t)?t.type?.name??"string":pc(t)??t.name}s(sf,"getRuleType");function Fi(t){let e={s:!1,i:!1,u:!1},r=Gi(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}s(Fi,"terminalRegex");var af=/[\s\S]/.source;function Gi(t,e){if(Ou(t))return qE(t);if(Lu(t))return zE(t);if(Au(t))return WE(t);if(ic(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return zr(Gi(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized})}else{if(Nu(t))return BE(t);if(Mu(t))return jE(t);if(bu(t)){let r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),i=t.regex.substring(r+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),zr(n,{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized,wrap:!1})}else{if(Fu(t))return zr(af,{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized});throw new Error(`Invalid terminal element: ${t?.$type}, ${t?.$cstNode?.text}`)}}}s(Gi,"abstractElementToRegex");function qE(t){return zr(t.elements.map(e=>Gi(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized,wrap:!1})}s(qE,"terminalAlternativesToRegex");function zE(t){return zr(t.elements.map(e=>Gi(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized,wrap:!1})}s(zE,"terminalGroupToRegex");function jE(t){return zr(`${af}*?${Gi(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized})}s(jE,"untilTokenToRegex");function BE(t){return zr(`(?!${Gi(t.terminal)})${af}*?`,{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized})}s(BE,"negateTokenToRegex");function WE(t){return t.right?zr(`[${Yu(t.left)}-${Yu(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized,wrap:!1}):zr(Yu(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,parenthesized:t.parenthesized,wrap:!1})}s(WE,"characterRangeToRegex");function Yu(t){return mn(t.value)}s(Yu,"keywordToRegex");function zr(t,e){return(e.parenthesized||e.lookahead||e.wrap!==!1)&&(t=`(${e.lookahead??(e.parenthesized?"":"?:")}${t})`),e.cardinality?`${t}${e.cardinality}`:t}s(zr,"withCardinality");function of(t){let e=[],r=t.Grammar;for(let n of r.rules)St(n)&&Qu(n)&&Ku(Fi(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:oc}}s(of,"createGrammarConfig");function Ui(t){console&&console.error&&console.error(`Error: ${t}`)}s(Ui,"PRINT_ERROR");function ma(t){console&&console.warn&&console.warn(`Warning: ${t}`)}s(ma,"PRINT_WARNING");function ga(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}s(ga,"timer");function ya(t){function e(){}s(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return s(n,"fakeAccess"),n(),n(),t;(0,eval)(t)}s(ya,"toFastProperties");function VE(t){return KE(t)?t.LABEL:t.name}s(VE,"tokenLabel");function KE(t){return pt(t.LABEL)&&t.LABEL!==""}s(KE,"hasTokenLabel");var zt=class{static{s(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),D(this.definition,r=>{r.accept(e)})}},de=class extends zt{static{s(this,"NonTerminal")}constructor(e){super([]),this.idx=1,ut(this,Ft(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},kt=class extends zt{static{s(this,"Rule")}constructor(e){super(e.definition),this.orgText="",ut(this,Ft(e,r=>r!==void 0))}},Re=class extends zt{static{s(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,ut(this,Ft(e,r=>r!==void 0))}},pe=class extends zt{static{s(this,"Option")}constructor(e){super(e.definition),this.idx=1,ut(this,Ft(e,r=>r!==void 0))}},xe=class extends zt{static{s(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,ut(this,Ft(e,r=>r!==void 0))}},Ee=class extends zt{static{s(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,ut(this,Ft(e,r=>r!==void 0))}},se=class extends zt{static{s(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,ut(this,Ft(e,r=>r!==void 0))}},ye=class extends zt{static{s(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,ut(this,Ft(e,r=>r!==void 0))}},Te=class extends zt{static{s(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,ut(this,Ft(e,r=>r!==void 0))}},re=class{static{s(this,"Terminal")}constructor(e){this.idx=1,ut(this,Ft(e,r=>r!==void 0))}accept(e){e.visit(this)}};function mc(t){return _(t,qi)}s(mc,"serializeGrammar");function qi(t){function e(r){return _(r,qi)}if(s(e,"convertDefinition"),t instanceof de){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return pt(t.label)&&(r.label=t.label),r}else{if(t instanceof Re)return{type:"Alternative",definition:e(t.definition)};if(t instanceof pe)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof xe)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Ee)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:qi(new re({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ye)return{type:"RepetitionWithSeparator",idx:t.idx,separator:qi(new re({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof se)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof Te)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof re){let r={type:"Terminal",name:t.terminalType.name,label:VE(t.terminalType),idx:t.idx};pt(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=tr(n)?n.source:n),r}else{if(t instanceof kt)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}s(qi,"serializeProduction");var Ct=class{static{s(this,"GAstVisitor")}visit(e){let r=e;switch(r.constructor){case de:return this.visitNonTerminal(r);case Re:return this.visitAlternative(r);case pe:return this.visitOption(r);case xe:return this.visitRepetitionMandatory(r);case Ee:return this.visitRepetitionMandatoryWithSeparator(r);case ye:return this.visitRepetitionWithSeparator(r);case se:return this.visitRepetition(r);case Te:return this.visitAlternation(r);case re:return this.visitTerminal(r);case kt:return this.visitRule(r);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}};function cf(t){return t instanceof Re||t instanceof pe||t instanceof se||t instanceof xe||t instanceof Ee||t instanceof ye||t instanceof re||t instanceof kt}s(cf,"isSequenceProd");function Qn(t,e=[]){return t instanceof pe||t instanceof se||t instanceof ye?!0:t instanceof Te?Go(t.definition,n=>Qn(n,e)):t instanceof de&&Oe(e,t)?!1:t instanceof zt?(t instanceof de&&e.push(t),vt(t.definition,n=>Qn(n,e))):!1}s(Qn,"isOptionalProd");function lf(t){return t instanceof Te}s(lf,"isBranchingProd");function Pt(t){if(t instanceof de)return"SUBRULE";if(t instanceof pe)return"OPTION";if(t instanceof Te)return"OR";if(t instanceof xe)return"AT_LEAST_ONE";if(t instanceof Ee)return"AT_LEAST_ONE_SEP";if(t instanceof ye)return"MANY_SEP";if(t instanceof se)return"MANY";if(t instanceof re)return"CONSUME";throw Error("non exhaustive match")}s(Pt,"getProductionDslName");var jr=class{static{s(this,"RestWalker")}walk(e,r=[]){D(e.definition,(n,i)=>{let a=Ke(e.definition,i+1);if(n instanceof de)this.walkProdRef(n,a,r);else if(n instanceof re)this.walkTerminal(n,a,r);else if(n instanceof Re)this.walkFlat(n,a,r);else if(n instanceof pe)this.walkOption(n,a,r);else if(n instanceof xe)this.walkAtLeastOne(n,a,r);else if(n instanceof Ee)this.walkAtLeastOneSep(n,a,r);else if(n instanceof ye)this.walkManySep(n,a,r);else if(n instanceof se)this.walkMany(n,a,r);else if(n instanceof Te)this.walkOr(n,a,r);else throw Error("non exhaustive match")})}walkTerminal(e,r,n){}walkProdRef(e,r,n){}walkFlat(e,r,n){let i=r.concat(n);this.walk(e,i)}walkOption(e,r,n){let i=r.concat(n);this.walk(e,i)}walkAtLeastOne(e,r,n){let i=[new pe({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=Am(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new pe({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=Am(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);D(e.definition,a=>{let o=new Re({definition:[a]});this.walk(o,i)})}};function Am(t,e,r){return[new pe({definition:[new re({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}s(Am,"restForRepetitionWithSeparator");function Zn(t){if(t instanceof de)return Zn(t.referencedRule);if(t instanceof re)return XE(t);if(cf(t))return HE(t);if(lf(t))return YE(t);throw Error("non exhaustive match")}s(Zn,"first");function HE(t){let e=[],r=t.definition,n=0,i=r.length>n,a,o=!0;for(;i&&o;)a=r[n],o=Qn(a),e=e.concat(Zn(a)),n=n+1,i=r.length>n;return Hs(e)}s(HE,"firstForSequence");function YE(t){let e=_(t.definition,r=>Zn(r));return Hs(Ve(e))}s(YE,"firstForBranching");function XE(t){return[t.terminalType]}s(XE,"firstForTerminal");var gc="_~IN~_";var uf=class extends jr{static{s(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,r,n){}walkProdRef(e,r,n){let i=JE(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),o=new Re({definition:a}),c=Zn(o);this.follows[i]=c}};function $m(t){let e={};return D(t,r=>{let n=new uf(r).startWalking();ut(e,n)}),e}s($m,"computeAllProdsFollows");function JE(t,e){return t.name+e+gc}s(JE,"buildBetweenProdsFollowPrefix");var yc={},QE=new Xn;function zi(t){let e=t.toString();if(yc.hasOwnProperty(e))return yc[e];{let r=QE.pattern(e);return yc[e]=r,r}}s(zi,"getRegExpAst");function Sm(){yc={}}s(Sm,"clearRegExpParserCache");var Cm="Complement Sets are not supported for first char optimization",Ta=`Unable to use "first char" lexer optimizations: -`;function Nm(t,e=!1){try{let r=zi(t);return ff(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===Cm)e&&ma(`${Ta} Unable to optimize: < ${t.toString()} > - Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Ui(`${Ta} - Failed parsing: < ${t.toString()} > - Using the @chevrotain/regexp-to-ast library - Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}s(Nm,"getOptimizedStartCodesIndices");function ff(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof l=="number")Tc(l,e,r);else{let u=l;if(r===!0)for(let d=u.from;d<=u.to;d++)Tc(d,e,r);else{for(let d=u.from;d<=u.to&&d=ji){let d=u.from>=ji?u.from:ji,h=u.to,m=vr(d),y=vr(h);for(let C=m;C<=y;C++)e[C]=C}}}});break;case"Group":ff(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}let c=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&df(o)===!1||o.type!=="Group"&&c===!1)break}break;default:throw Error("non exhaustive match!")}return Se(e)}s(ff,"firstCharOptimizedIndices");function Tc(t,e,r){let n=vr(t);e[n]=n,r===!0&&ZE(t,e)}s(Tc,"addOptimizedIdxToResult");function ZE(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=vr(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=vr(i.charCodeAt(0));e[a]=a}}}s(ZE,"handleIgnoreCase");function km(t,e){return Dr(t.value,r=>{if(typeof r=="number")return Oe(e,r);{let n=r;return Dr(e,i=>n.from<=i&&i<=n.to)!==void 0}})}s(km,"findCode");function df(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Qe(t.value)?vt(t.value,df):df(t.value):!1}s(df,"isWholeOptional");var pf=class extends Er{static{s(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return;case"Lookbehind":this.visitLookbehind(e);return;case"NegativeLookbehind":this.visitNegativeLookbehind(e);return}super.visitChildren(e)}}visitCharacter(e){Oe(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?km(e,this.targetCharCodes)===void 0&&(this.found=!0):km(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};function Rc(t,e){if(e instanceof RegExp){let r=zi(e),n=new pf(t);return n.visit(r),n.found}else return Dr(e,r=>Oe(t,r.charCodeAt(0)))!==void 0}s(Rc,"canMatchCharCode");var ei="PATTERN",Bi="defaultMode",xc="modes",mf=typeof new RegExp("(?:)").sticky=="boolean";function _m(t,e){e=Ks(e,{useSticky:mf,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:s((P,A)=>A(),"tracer")});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{Tv()});let n;r("Reject Lexer.NA",()=>{n=bn(t,P=>P[ei]===we.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=_(n,P=>{let A=P[ei];if(tr(A)){let H=A.source;return H.length===1&&H!=="^"&&H!=="$"&&H!=="."&&!A.ignoreCase?H:H.length===2&&H[0]==="\\"&&!Oe(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],H[1])?H[1]:e.useSticky?Im(A):wm(A)}else{if(mr(A))return i=!0,{exec:A};if(typeof A=="object")return i=!0,A;if(typeof A=="string"){if(A.length===1)return A;{let H=A.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),U=new RegExp(H);return e.useSticky?Im(U):wm(U)}}else throw Error("non exhaustive match")}})});let o,c,l,u,d;r("misc mapping",()=>{o=_(n,P=>P.tokenTypeIdx),c=_(n,P=>{let A=P.GROUP;if(A!==we.SKIPPED){if(pt(A))return A;if(At(A))return!1;throw Error("non exhaustive match")}}),l=_(n,P=>{let A=P.LONGER_ALT;if(A)return Qe(A)?_(A,U=>mu(n,U)):[mu(n,A)]}),u=_(n,P=>P.PUSH_MODE),d=_(n,P=>G(P,"POP_MODE"))});let h;r("Line Terminator Handling",()=>{let P=Gm(e.lineTerminatorCharacters);h=_(n,A=>!1),e.positionTracking!=="onlyOffset"&&(h=_(n,A=>G(A,"LINE_BREAKS")?!!A.LINE_BREAKS:Fm(A,P)===!1&&Rc(P,A.PATTERN)))});let m,y,C,w;r("Misc Mapping #2",()=>{m=_(n,Dm),y=_(a,gv),C=Ge(n,(P,A)=>{let H=A.GROUP;return pt(H)&&H!==we.SKIPPED&&(P[H]=[]),P},{}),w=_(a,(P,A)=>({pattern:a[A],longerAlt:l[A],canLineTerminator:h[A],isCustom:m[A],short:y[A],group:c[A],push:u[A],pop:d[A],tokenTypeIdx:o[A],tokenType:n[A]}))});let z=!0,M=[];return e.safeMode||r("First Char Optimization",()=>{M=Ge(n,(P,A,H)=>{if(typeof A.PATTERN=="string"){let U=A.PATTERN.charCodeAt(0),me=vr(U);hf(P,me,w[H])}else if(Qe(A.START_CHARS_HINT)){let U;D(A.START_CHARS_HINT,me=>{let dr=typeof me=="string"?me.charCodeAt(0):me,Xe=vr(dr);U!==Xe&&(U=Xe,hf(P,Xe,w[H]))})}else if(tr(A.PATTERN))if(A.PATTERN.unicode)z=!1,e.ensureOptimizations&&Ui(`${Ta} Unable to analyze < ${A.PATTERN.toString()} > pattern. - The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let U=Nm(A.PATTERN,e.ensureOptimizations);ee(U)&&(z=!1),D(U,me=>{hf(P,me,w[H])})}else e.ensureOptimizations&&Ui(`${Ta} TokenType: <${A.name}> is using a custom token pattern without providing parameter. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),z=!1;return P},[])}),{emptyGroups:C,patternIdxToConfig:w,charCodeToPatternIdxToConfig:M,hasCustom:i,canBeOptimized:z}}s(_m,"analyzeTokenTypes");function bm(t,e){let r=[],n=tv(t);r=r.concat(n.errors);let i=rv(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(ev(a)),r=r.concat(uv(a)),r=r.concat(fv(a,e)),r=r.concat(dv(a)),r}s(bm,"validatePatterns");function ev(t){let e=[],r=ot(t,n=>tr(n[ei]));return e=e.concat(iv(r)),e=e.concat(ov(r)),e=e.concat(cv(r)),e=e.concat(lv(r)),e=e.concat(sv(r)),e}s(ev,"validateRegExpPattern");function tv(t){let e=ot(t,i=>!G(i,ei)),r=_(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Ne.MISSING_PATTERN,tokenTypes:[i]})),n=_n(t,e);return{errors:r,valid:n}}s(tv,"findMissingPatterns");function rv(t){let e=ot(t,i=>{let a=i[ei];return!tr(a)&&!mr(a)&&!G(a,"exec")&&!pt(a)}),r=_(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Ne.INVALID_PATTERN,tokenTypes:[i]})),n=_n(t,e);return{errors:r,valid:n}}s(rv,"findInvalidPatterns");var nv=/[^\\][$]/;function iv(t){class e extends Er{static{s(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=ot(t,i=>{let a=i.PATTERN;try{let o=zi(a),c=new e;return c.visit(o),c.found}catch{return nv.test(a.source)}});return _(r,i=>({message:`Unexpected RegExp Anchor Error: - Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Ne.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}s(iv,"findEndOfInputAnchor");function sv(t){let e=ot(t,n=>n.PATTERN.test(""));return _(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Ne.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}s(sv,"findEmptyMatchRegExps");var av=/[^\\[][\^]|^\^/;function ov(t){class e extends Er{static{s(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=ot(t,i=>{let a=i.PATTERN;try{let o=zi(a),c=new e;return c.visit(o),c.found}catch{return av.test(a.source)}});return _(r,i=>({message:`Unexpected RegExp Anchor Error: - Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Ne.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}s(ov,"findStartOfInputAnchor");function cv(t){let e=ot(t,n=>{let i=n[ei];return i instanceof RegExp&&(i.multiline||i.global)});return _(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Ne.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}s(cv,"findUnsupportedFlags");function lv(t){let e=[],r=_(t,a=>Ge(t,(o,c)=>(a.PATTERN.source===c.PATTERN.source&&!Oe(e,c)&&c.PATTERN!==we.NA&&(e.push(c),o.push(c)),o),[]));r=Lr(r);let n=ot(r,a=>a.length>1);return _(n,a=>{let o=_(a,l=>l.name);return{message:`The same RegExp pattern ->${ft(a).PATTERN}<-has been used in all of the following Token Types: ${o.join(", ")} <-`,type:Ne.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}s(lv,"findDuplicatePatterns");function uv(t){let e=ot(t,n=>{if(!G(n,"GROUP"))return!1;let i=n.GROUP;return i!==we.SKIPPED&&i!==we.NA&&!pt(i)});return _(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Ne.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}s(uv,"findInvalidGroupType");function fv(t,e){let r=ot(t,i=>i.PUSH_MODE!==void 0&&!Oe(e,i.PUSH_MODE));return _(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Ne.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}s(fv,"findModesThatDoNotExist");function dv(t){let e=[],r=Ge(t,(n,i,a)=>{let o=i.PATTERN;return o===we.NA||(pt(o)?n.push({str:o,idx:a,tokenType:i}):tr(o)&&hv(o)&&n.push({str:o.source,idx:a,tokenType:i})),n},[]);return D(t,(n,i)=>{D(r,({str:a,idx:o,tokenType:c})=>{if(i${c.name}<- can never be matched. -Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:l,type:Ne.UNREACHABLE_PATTERN,tokenTypes:[n,c]})}})}),e}s(dv,"findUnreachablePatterns");function pv(t,e){if(tr(e)){if(mv(e))return!1;let r=e.exec(t);return r!==null&&r.index===0}else{if(mr(e))return e(t,0,[],{});if(G(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}s(pv,"tryToMatchStrToPattern");function hv(t){return Dr([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}s(hv,"noMetaChar");function mv(t){return/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\? property in its definition -`,type:Ne.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),G(t,xc)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+xc+`> property in its definition -`,type:Ne.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),G(t,xc)&&G(t,Bi)&&!G(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${Bi}: <${t.defaultMode}>which does not exist -`,type:Ne.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),G(t,xc)&&D(t.modes,(i,a)=>{D(i,(o,c)=>{if(At(o))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${c}> -`,type:Ne.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(G(o,"LONGER_ALT")){let l=Qe(o.LONGER_ALT)?o.LONGER_ALT:[o.LONGER_ALT];D(l,u=>{!At(u)&&!Oe(i,u)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${u.name}> on token <${o.name}> outside of mode <${a}> -`,type:Ne.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}s(Pm,"performRuntimeChecks");function Om(t,e,r){let n=[],i=!1,a=Lr(Ve(Se(t.modes))),o=bn(a,l=>l[ei]===we.NA),c=Gm(r);return e&&D(o,l=>{let u=Fm(l,c);if(u!==!1){let h={message:yv(l,u),type:u.issue,tokenType:l};n.push(h)}else G(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(i=!0):Rc(c,l.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:Ne.NO_LINE_BREAKS_FLAGS}),n}s(Om,"performWarningRuntimeChecks");function Lm(t){let e={},r=Or(t);return D(r,n=>{let i=t[n];if(Qe(i))e[n]=[];else throw Error("non exhaustive match")}),e}s(Lm,"cloneEmptyGroups");function Dm(t){let e=t.PATTERN;if(tr(e))return!1;if(mr(e))return!0;if(G(e,"exec"))return!0;if(pt(e))return!1;throw Error("non exhaustive match")}s(Dm,"isCustomPattern");function gv(t){return pt(t)&&t.length===1?t.charCodeAt(0):!1}s(gv,"isShortPattern");var Mm={test:s(function(t){let e=t.length;for(let r=this.lastIndex;r Token Type - Root cause: ${e.errMsg}. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Ne.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. - The problem is in the <${t.name}> Token Type - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}s(yv,"buildLineBreakIssueMessage");function Gm(t){return _(t,r=>pt(r)?r.charCodeAt(0):r)}s(Gm,"getCharCodes");function hf(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}s(hf,"addToMapOfArrays");var ji=256,Ec=[];function vr(t){return t255?255+~~(t/255):t}}s(Tv,"initCharCodeToOptimizedIndexMap");function Br(t,e){let r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}s(Br,"tokenStructuredMatcher");function Wi(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}s(Wi,"tokenStructuredMatcherNoCategories");var Um=1,zm={};function Wr(t){let e=Rv(t);xv(e),vv(e),Ev(e),D(e,r=>{r.isParent=r.categoryMatches.length>0})}s(Wr,"augmentTokenTypes");function Rv(t){let e=$e(t),r=t,n=!0;for(;n;){r=Lr(Ve(_(r,a=>a.CATEGORIES)));let i=_n(r,e);e=e.concat(i),ee(i)?n=!1:r=i}return e}s(Rv,"expandCategories");function xv(t){D(t,e=>{gf(e)||(zm[Um]=e,e.tokenTypeIdx=Um++),qm(e)&&!Qe(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),qm(e)||(e.CATEGORIES=[]),Av(e)||(e.categoryMatches=[]),$v(e)||(e.categoryMatchesMap={})})}s(xv,"assignTokenDefaultProps");function Ev(t){D(t,e=>{e.categoryMatches=[],D(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push(zm[n].tokenTypeIdx)})})}s(Ev,"assignCategoriesTokensProp");function vv(t){D(t,e=>{jm([],e)})}s(vv,"assignCategoriesMapProp");function jm(t,e){D(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),D(e.CATEGORIES,r=>{let n=t.concat(e);Oe(n,r)||jm(n,r)})}s(jm,"singleAssignCategoriesToksMap");function gf(t){return G(t,"tokenTypeIdx")}s(gf,"hasShortKeyProperty");function qm(t){return G(t,"CATEGORIES")}s(qm,"hasCategoriesProperty");function Av(t){return G(t,"categoryMatches")}s(Av,"hasExtendingTokensTypesProperty");function $v(t){return G(t,"categoryMatchesMap")}s($v,"hasExtendingTokensTypesMapProperty");function Bm(t){return G(t,"tokenTypeIdx")}s(Bm,"isTokenType");var Vi={buildUnableToPopLexerModeMessage(t){return`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(t,e,r,n,i,a){return`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`}};var Ne;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Ne||(Ne={}));var Ra={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:Vi,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Ra);var we=class{static{s(this,"Lexer")}constructor(e,r=Ra){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let o=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:c,value:l}=ga(a),u=c>10?console.warn:console.log;return this.traceInitIndent time: ${c}ms`),this.traceInitIndent--,l}else return a()},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=ut({},Ra,r);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Ra.lineTerminatorsPattern)this.config.lineTerminatorsPattern=Mm;else if(this.config.lineTerminatorCharacters===Ra.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Qe(e)?i={modes:{defaultMode:$e(e)},defaultMode:Bi}:(a=!1,i=$e(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Pm(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Om(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},D(i.modes,(c,l)=>{i.modes[l]=bn(c,u=>At(u))});let o=Or(i.modes);if(D(i.modes,(c,l)=>{this.TRACE_INIT(`Mode: <${l}> processing`,()=>{if(this.modes.push(l),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(bm(c,o))}),ee(this.lexerDefinitionErrors)){Wr(c);let u;this.TRACE_INIT("analyzeTokenTypes",()=>{u=_m(c,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[l]=u.patternIdxToConfig,this.charCodeToPatternIdxToConfig[l]=u.charCodeToPatternIdxToConfig,this.emptyGroups=ut({},this.emptyGroups,u.emptyGroups),this.hasCustom=u.hasCustom||this.hasCustom,this.canModeBeOptimized[l]=u.canBeOptimized}})}),this.defaultMode=i.defaultMode,!ee(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let l=_(this.lexerDefinitionErrors,u=>u.message).join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+l)}D(this.lexerDefinitionWarning,c=>{ma(c.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(mf?(this.chopInput=hu,this.match=this.matchWithTest):(this.updateLastIndex=We,this.match=this.matchWithExec),a&&(this.handleModes=We),this.trackStartLines===!1&&(this.computeNewColumn=hu),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=We),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let c=Ge(this.canModeBeOptimized,(l,u,d)=>(u===!1&&l.push(d),l),[]);if(r.ensureOptimizations&&!ee(c))throw Error(`Lexer Modes: < ${c.join(", ")} > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{Sm()}),this.TRACE_INIT("toFastProperties",()=>{ya(this)})})}tokenize(e,r=this.defaultMode){if(!ee(this.lexerDefinitionErrors)){let i=_(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+i)}return this.tokenizeInternal(e,r)}tokenizeInternal(e,r){let n,i,a,o,c,l,u,d,h,m,y,C,w,z,M,P,A=e,H=A.length,U=0,me=0,dr=this.hasCustom?0:Math.floor(e.length/10),Xe=new Array(dr),Qt=[],Vt=this.trackStartLines?1:void 0,S=this.trackStartLines?1:void 0,T=Lm(this.emptyGroups),L=this.trackStartLines,O=this.config.lineTerminatorsPattern,R=0,E=[],$=[],b=[],F=[];Object.freeze(F);let N;function Y(){return E}s(Y,"getPossiblePatternsSlow");function Q(rt){let It=vr(rt),en=$[It];return en===void 0?F:en}s(Q,"getPossiblePatternsOptimized");let Be=s(rt=>{if(b.length===1&&rt.tokenType.PUSH_MODE===void 0){let It=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(rt);Qt.push({offset:rt.startOffset,line:rt.startLine,column:rt.startColumn,length:rt.image.length,message:It})}else{b.pop();let It=gr(b);E=this.patternIdxToConfig[It],$=this.charCodeToPatternIdxToConfig[It],R=E.length;let en=this.canModeBeOptimized[It]&&this.config.safeMode===!1;$&&en?N=Q:N=Y}},"pop_mode");function ue(rt){b.push(rt),$=this.charCodeToPatternIdxToConfig[rt],E=this.patternIdxToConfig[rt],R=E.length,R=E.length;let It=this.canModeBeOptimized[rt]&&this.config.safeMode===!1;$&&It?N=Q:N=Y}s(ue,"push_mode"),ue.call(this,r);let be,pr=this.config.recoveryEnabled;for(;Ul.length){l=o,u=d,be=er;break}}}break}}if(l!==null){if(h=l.length,m=be.group,m!==void 0&&(y=be.tokenTypeIdx,C=this.createTokenInstance(l,U,y,be.tokenType,Vt,S,h),this.handlePayload(C,u),m===!1?me=this.addToken(Xe,me,C):T[m].push(C)),e=this.chopInput(e,h),U=U+h,S=this.computeNewColumn(S,h),L===!0&&be.canLineTerminator===!0){let xt=0,Zt,at;O.lastIndex=0;do Zt=O.test(l),Zt===!0&&(at=O.lastIndex-1,xt++);while(Zt===!0);xt!==0&&(Vt=Vt+xt,S=h-at,this.updateTokenEndLineColumnLocation(C,m,at,xt,Vt,S,h))}this.handleModes(be,Be,ue,C)}else{let xt=U,Zt=Vt,at=S,er=pr===!1;for(;er===!1&&U ${Vr(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t,ruleName:e}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",c=` -but found: '`+ft(e).image+"'";if(n)return a+n+c;{let l=Ge(t,(m,y)=>m.concat(y),[]),u=_(l,m=>`[${_(m,y=>Vr(y)).join(", ")}]`),h=`one of these possible Token sequences: -${_(u,(m,y)=>` ${y+1}. ${m}`).join(` -`)}`;return a+h+c}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:r,ruleName:n}){let i="Expecting: ",o=` -but found: '`+ft(e).image+"'";if(r)return i+r+o;{let l=`expecting at least one iteration which starts with one of these possible Token sequences:: - <${_(t,u=>`[${_(u,d=>Vr(d)).join(",")}]`).join(" ,")}>`;return i+l+o}}};Object.freeze(Hr);var Zm={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-"}},cr={buildDuplicateFoundError(t,e){function r(d){return d instanceof re?d.terminalType.name:d instanceof de?d.nonTerminalName:""}s(r,"getExtraProductionArgument");let n=t.name,i=ft(e),a=i.idx,o=Pt(i),c=r(i),l=a>0,u=`->${o}${l?a:""}<- ${c?`with argument: ->${c}<-`:""} - appears more than once (${e.length} times) in the top level rule: ->${n}<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return u=u.replace(/[ \t]+/g," "),u=u.replace(/\s\s+/g,` -`),u},buildNamespaceConflictError(t){return`Namespace conflict found in grammar. -The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>. -To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(t){let e=_(t.prefixPath,i=>Vr(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix -in inside <${t.topLevelRule.name}> Rule, -<${e}> may appears as a prefix path in all these alternatives. -See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`},buildAlternationAmbiguityError(t){let e=_(t.prefixPath,i=>Vr(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, -<${e}> may appears as a prefix path in all these alternatives. -`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n},buildEmptyRepetitionError(t){let e=Pt(t.repetition);return t.repetition.idx!==0&&(e+=t.repetition.idx),`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens. -This could lead to an infinite loop.`},buildTokenNameError(t){return"deprecated"},buildEmptyAlternationError(t){return`Ambiguous empty alternative: <${t.emptyChoiceIdx+1}> in inside <${t.topLevelRule.name}> Rule. -Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(t){return`An Alternation cannot have more than 256 alternatives: - inside <${t.topLevelRule.name}> Rule. - has ${t.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(t){let e=t.topLevelRule.name,r=_(t.leftRecursionPath,a=>a.name),n=`${e} --> ${r.concat([e]).join(" --> ")}`;return`Left Recursion found in grammar. -rule: <${e}> can be invoked from itself (directly or indirectly) -without consuming any Tokens. The grammar path that causes this is: - ${n} - To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(t){return"deprecated"},buildDuplicateRuleNameError(t){let e;return t.topLevelRule instanceof kt?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}};function eg(t,e){let r=new Tf(t,e);return r.resolveRefs(),r.errors}s(eg,"resolveGrammar");var Tf=class extends Ct{static{s(this,"GastRefResolverVisitor")}constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){D(Se(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let r=this.nameToTopRule[e.nonTerminalName];if(r)e.referencedRule=r;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:et.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}};var Rf=class extends jr{static{s(this,"AbstractNextPossibleTokensWalker")}constructor(e,r){super(),this.topProd=e,this.path=r,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=$e(this.path.ruleStack).reverse(),this.occurrenceStack=$e(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,r=[]){this.found||super.walk(e,r)}walkProdRef(e,r,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=r.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){ee(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},vc=class extends Rf{static{s(this,"NextAfterTokenWalker")}constructor(e,r){super(e,r),this.path=r,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,r,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=r.concat(n),a=new Re({definition:i});this.possibleTokTypes=Zn(a),this.found=!0}}},Ki=class extends jr{static{s(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,r){super(),this.topRule=e,this.occurrence=r,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},Ac=class extends Ki{static{s(this,"NextTerminalAfterManyWalker")}walkMany(e,r,n){if(e.idx===this.occurrence){let i=ft(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof re&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},Ea=class extends Ki{static{s(this,"NextTerminalAfterManySepWalker")}walkManySep(e,r,n){if(e.idx===this.occurrence){let i=ft(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof re&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},$c=class extends Ki{static{s(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=ft(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof re&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},va=class extends Ki{static{s(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=ft(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof re&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}};function Sc(t,e,r=[]){r=$e(r);let n=[],i=0;function a(c){return c.concat(Ke(t,i+1))}s(a,"remainingPathWith");function o(c){let l=Sc(a(c),e,r);return n.concat(l)}for(s(o,"getAlternativesForProd");r.length{ee(l.definition)===!1&&(n=o(l.definition))}),n;if(c instanceof re)r.push(c.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:Ke(t,i)}),n}s(Sc,"possiblePathsFrom");function kc(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],o="EXIT_ALTERNATIVE",c=!1,l=e.length,u=l-n-1,d=[],h=[];for(h.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!ee(h);){let m=h.pop();if(m===o){c&&gr(h).idx<=u&&h.pop();continue}let y=m.def,C=m.idx,w=m.ruleStack,z=m.occurrenceStack;if(ee(y))continue;let M=y[0];if(M===i){let P={idx:C,def:Ke(y),ruleStack:nn(w),occurrenceStack:nn(z)};h.push(P)}else if(M instanceof re)if(C=0;P--){let A=M.definition[P],H={idx:C,def:A.definition.concat(Ke(y)),ruleStack:w,occurrenceStack:z};h.push(H),h.push(o)}else if(M instanceof Re)h.push({idx:C,def:M.definition.concat(Ke(y)),ruleStack:w,occurrenceStack:z});else if(M instanceof kt)h.push(Cv(M,C,w,z));else throw Error("non exhaustive match")}return d}s(kc,"nextPossibleTokensAfter");function Cv(t,e,r,n){let i=$e(r);i.push(t.name);let a=$e(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}s(Cv,"expandTopLevelRule");var Ie;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(Ie||(Ie={}));function Aa(t){if(t instanceof pe||t==="Option")return Ie.OPTION;if(t instanceof se||t==="Repetition")return Ie.REPETITION;if(t instanceof xe||t==="RepetitionMandatory")return Ie.REPETITION_MANDATORY;if(t instanceof Ee||t==="RepetitionMandatoryWithSeparator")return Ie.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof ye||t==="RepetitionWithSeparator")return Ie.REPETITION_WITH_SEPARATOR;if(t instanceof Te||t==="Alternation")return Ie.ALTERNATION;throw Error("non exhaustive match")}s(Aa,"getProdType");function Nc(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=Aa(n);return a===Ie.ALTERNATION?Hi(e,r,i):Yi(e,r,a,i)}s(Nc,"getLookaheadPaths");function rg(t,e,r,n,i,a){let o=Hi(t,e,r),c=cg(o)?Wi:Br;return a(o,n,c,i)}s(rg,"buildLookaheadFuncForOr");function ng(t,e,r,n,i,a){let o=Yi(t,e,i,r),c=cg(o)?Wi:Br;return a(o[0],c,n)}s(ng,"buildLookaheadFuncForOptionalProd");function ig(t,e,r,n){let i=t.length,a=vt(t,o=>vt(o,c=>c.length===1));if(e)return function(o){let c=_(o,l=>l.GATE);for(let l=0;lVe(l)),c=Ge(o,(l,u,d)=>(D(u,h=>{G(l,h.tokenTypeIdx)||(l[h.tokenTypeIdx]=d),D(h.categoryMatches,m=>{G(l,m)||(l[m]=d)})}),l),{});return function(){let l=this.LA(1);return c[l.tokenTypeIdx]}}else return function(){for(let o=0;oa.length===1),i=t.length;if(n&&!r){let a=Ve(t);if(a.length===1&&ee(a[0].categoryMatches)){let c=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===c}}else{let o=Ge(a,(c,l,u)=>(c[l.tokenTypeIdx]=!0,D(l.categoryMatches,d=>{c[d]=!0}),c),[]);return function(){let c=this.LA(1);return o[c.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;aSc([o],1)),n=tg(r.length),i=_(r,o=>{let c={};return D(o,l=>{let u=xf(l.partialPath);D(u,d=>{c[d]=!0})}),c}),a=r;for(let o=1;o<=e;o++){let c=a;a=tg(c.length);for(let l=0;l{let M=xf(z.partialPath);D(M,P=>{i[l][P]=!0})})}}}}return n}s(ag,"lookAheadSequenceFromAlternatives");function Hi(t,e,r,n){let i=new Cc(t,Ie.ALTERNATION,n);return e.accept(i),ag(i.result,r)}s(Hi,"getLookaheadPathsForOr");function Yi(t,e,r,n){let i=new Cc(t,r);e.accept(i);let a=i.result,c=new Ef(e,t,r).startWalking(),l=new Re({definition:a}),u=new Re({definition:c});return ag([l,u],n)}s(Yi,"getLookaheadPathsForOptionalProd");function wc(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}s(og,"isStrictPrefixOfPath");function cg(t){return vt(t,e=>vt(e,r=>vt(r,n=>ee(n.categoryMatches))))}s(cg,"areTokenCategoriesNotUsed");function lg(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return _(e,r=>Object.assign({type:et.CUSTOM_LOOKAHEAD_VALIDATION},r))}s(lg,"validateLookahead");function ug(t,e,r,n){let i=dt(t,l=>wv(l,r)),a=Lv(t,e,r),o=dt(t,l=>bv(l,r)),c=dt(t,l=>_v(l,t,n,r));return i.concat(a,o,c)}s(ug,"validateGrammar");function wv(t,e){let r=new vf;t.accept(r);let n=r.allProductions,i=nm(n,Iv),a=Ft(i,c=>c.length>1);return _(Se(a),c=>{let l=ft(c),u=e.buildDuplicateFoundError(t,c),d=Pt(l),h={message:u,type:et.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:d,occurrence:l.idx},m=fg(l);return m&&(h.parameter=m),h})}s(wv,"validateDuplicateProductions");function Iv(t){return`${Pt(t)}_#_${t.idx}_#_${fg(t)}`}s(Iv,"identifyProductionForDuplicates");function fg(t){return t instanceof re?t.terminalType.name:t instanceof de?t.nonTerminalName:""}s(fg,"getExtraProductionArgument");var vf=class extends Ct{static{s(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};function _v(t,e,r,n){let i=[];if(Ge(e,(o,c)=>c.name===t.name?o+1:o,0)>1){let o=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:o,type:et.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}s(_v,"validateRuleDoesNotAlreadyExist");function dg(t,e,r){let n=[],i;return Oe(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:et.INVALID_RULE_OVERRIDE,ruleName:t})),n}s(dg,"validateRuleIsOverridden");function $f(t,e,r,n=[]){let i=[],a=Ic(e.definition);if(ee(a))return[];{let o=t.name;Oe(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:et.LEFT_RECURSION,ruleName:o});let l=_n(a,n.concat([t])),u=dt(l,d=>{let h=$e(n);return h.push(d),$f(t,d,r,h)});return i.concat(u)}}s($f,"validateNoLeftRecursion");function Ic(t){let e=[];if(ee(t))return e;let r=ft(t);if(r instanceof de)e.push(r.referencedRule);else if(r instanceof Re||r instanceof pe||r instanceof xe||r instanceof Ee||r instanceof ye||r instanceof se)e=e.concat(Ic(r.definition));else if(r instanceof Te)e=Ve(_(r.definition,a=>Ic(a.definition)));else if(!(r instanceof re))throw Error("non exhaustive match");let n=Qn(r),i=t.length>1;if(n&&i){let a=Ke(t);return e.concat(Ic(a))}else return e}s(Ic,"getFirstNoneTerminal");var $a=class extends Ct{static{s(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};function pg(t,e){let r=new $a;t.accept(r);let n=r.alternations;return dt(n,a=>{let o=nn(a.definition);return dt(o,(c,l)=>{let u=kc([c],[],Br,1);return ee(u)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:l}),type:et.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:l+1}]:[]})})}s(pg,"validateEmptyOrAlternative");function hg(t,e,r){let n=new $a;t.accept(n);let i=n.alternations;return i=bn(i,o=>o.ignoreAmbiguities===!0),dt(i,o=>{let c=o.idx,l=o.maxLookahead||e,u=Hi(c,t,l,o),d=Pv(u,o,t,r),h=Ov(u,o,t,r);return d.concat(h)})}s(hg,"validateAmbiguousAlternationAlternatives");var Af=class extends Ct{static{s(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};function bv(t,e){let r=new $a;t.accept(r);let n=r.alternations;return dt(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:et.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}s(bv,"validateTooManyAlts");function mg(t,e,r){let n=[];return D(t,i=>{let a=new Af;i.accept(a);let o=a.allProductions;D(o,c=>{let l=Aa(c),u=c.maxLookahead||e,d=c.idx,m=Yi(d,i,l,u)[0];if(ee(Ve(m))){let y=r.buildEmptyRepetitionError({topLevelRule:i,repetition:c});n.push({message:y,type:et.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}s(mg,"validateSomeNonEmptyLookaheadPath");function Pv(t,e,r,n){let i=[],a=Ge(t,(c,l,u)=>(e.definition[u].ignoreAmbiguities===!0||D(l,d=>{let h=[u];D(t,(m,y)=>{u!==y&&wc(m,d)&&e.definition[y].ignoreAmbiguities!==!0&&h.push(y)}),h.length>1&&!wc(i,d)&&(i.push(d),c.push({alts:h,path:d}))}),c),[]);return _(a,c=>{let l=_(c.alts,d=>d+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:c.path}),type:et.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:c.alts}})}s(Pv,"checkAlternativesAmbiguities");function Ov(t,e,r,n){let i=Ge(t,(o,c,l)=>{let u=_(c,d=>({idx:l,path:d}));return o.concat(u)},[]);return Lr(dt(i,o=>{if(e.definition[o.idx].ignoreAmbiguities===!0)return[];let l=o.idx,u=o.path,d=ot(i,m=>e.definition[m.idx].ignoreAmbiguities!==!0&&m.idx{let y=[m.idx+1,l+1],C=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:y,prefixPath:m.path}),type:et.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:C,alternatives:y}})}))}s(Ov,"checkPrefixAlternativesAmbiguities");function Lv(t,e,r){let n=[],i=_(e,a=>a.name);return D(t,a=>{let o=a.name;if(Oe(i,o)){let c=r.buildNamespaceConflictError(a);n.push({message:c,type:et.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:o})}}),n}s(Lv,"checkTerminalAndNoneTerminalsNameSpace");function gg(t){let e=Ks(t,{errMsgProvider:Zm}),r={};return D(t.rules,n=>{r[n.name]=n}),eg(r,e.errMsgProvider)}s(gg,"resolveGrammar");function yg(t){return t=Ks(t,{errMsgProvider:cr}),ug(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}s(yg,"validateGrammar");var Tg="MismatchedTokenException",Rg="NoViableAltException",xg="EarlyExitException",Eg="NotAllInputParsedException",vg=[Tg,Rg,xg,Eg];Object.freeze(vg);function Tn(t){return Oe(vg,t.name)}s(Tn,"isRecognitionException");var Xi=class extends Error{static{s(this,"RecognitionException")}constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},ti=class extends Xi{static{s(this,"MismatchedTokenException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=Tg}},Sa=class extends Xi{static{s(this,"NoViableAltException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=Rg}},ka=class extends Xi{static{s(this,"NotAllInputParsedException")}constructor(e,r){super(e,r),this.name=Eg}},Ca=class extends Xi{static{s(this,"EarlyExitException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=xg}};var Sf={},Cf="InRuleRecoveryException",kf=class extends Error{static{s(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=Cf}},_c=class{static{s(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=G(e,"recoveryEnabled")?e.recoveryEnabled:Nt.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Dv)}getTokenToInsert(e){let r=Kr(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,r,n,i){let a=this.findReSyncTokenType(),o=this.exportLexerState(),c=[],l=!1,u=this.LA(1),d=this.LA(1),h=s(()=>{let m=this.LA(0),y=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:u,previous:m,ruleName:this.getCurrRuleFullName()}),C=new ti(y,u,this.LA(0));C.resyncedTokens=nn(c),this.SAVE_ERROR(C)},"generateErrorMessage");for(;!l;)if(this.tokenMatcher(d,i)){h();return}else if(n.call(this)){h(),e.apply(this,r);return}else this.tokenMatcher(d,a)?l=!0:(d=this.SKIP_TOKEN(),this.addToResyncTokens(d,c));this.importLexerState(o)}shouldInRepetitionRecoveryBeTried(e,r,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))}getFollowsForInRuleRecovery(e,r){let n=this.getCurrentGrammarPath(e,r);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new kf("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||ee(r))return!1;let n=this.LA(1);return Dr(r,a=>this.tokenMatcher(n,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return Oe(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=Dr(e,a=>xa(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return Sf;let e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,r=this.RULE_OCCURRENCE_STACK;return _(e,(n,i)=>i===0?Sf:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=_(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return Ve(e)}getFollowSetFromFollowKey(e){if(e===Sf)return[jt];let r=e.ruleName+e.idxInCallingRule+gc+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,jt)||r.push(e),r}reSyncTo(e){let r=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return nn(r)}attemptInRepetitionRecovery(e,r,n,i,a,o,c){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=$e(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return _(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};function Dv(t,e,r,n,i,a,o){let c=this.getKeyForAutomaticLookahead(n,i),l=this.firstAfterRepMap[c];if(l===void 0){let m=this.getCurrRuleFullName(),y=this.getGAstProductions()[m];l=new a(y,i).startWalking(),this.firstAfterRepMap[c]=l}let u=l.token,d=l.occurrence,h=l.isEndOfRule;this.RULE_STACK.length===1&&h&&u===void 0&&(u=jt,d=1),!(u===void 0||d===void 0)&&this.shouldInRepetitionRecoveryBeTried(u,d,o)&&this.tryInRepetitionRecovery(t,e,r,u)}s(Dv,"attemptInRepetitionRecovery");function bc(t,e,r){return r|e|t}s(bc,"getKeyForAutomaticLookahead");var Yr=class{static{s(this,"LLkLookaheadStrategy")}constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:Nt.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(ee(r)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),a=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...r,...n,...i,...a]}return r}validateNoLeftRecursion(e){return dt(e,r=>$f(r,r,cr))}validateEmptyOrAlternatives(e){return dt(e,r=>pg(r,cr))}validateAmbiguousAlternationAlternatives(e,r){return dt(e,n=>hg(n,r,cr))}validateSomeNonEmptyLookaheadPath(e,r){return mg(e,r,cr)}buildLookaheadForAlternation(e){return rg(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,ig)}buildLookaheadForOptional(e){return ng(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,Aa(e.prodType),sg)}};var Oc=class{static{s(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=G(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Nt.dynamicTokensEnabled,this.maxLookahead=G(e,"maxLookahead")?e.maxLookahead:Nt.maxLookahead,this.lookaheadStrategy=G(e,"lookaheadStrategy")?e.lookaheadStrategy:new Yr({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){D(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:o,repetitionMandatoryWithSeparator:c,repetitionWithSeparator:l}=Mv(r);D(n,u=>{let d=u.idx===0?"":u.idx;this.TRACE_INIT(`${Pt(u)}${d}`,()=>{let h=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:u.idx,rule:r,maxLookahead:u.maxLookahead||this.maxLookahead,hasPredicates:u.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),m=bc(this.fullRuleNameToShort[r.name],256,u.idx);this.setLaFuncCache(m,h)})}),D(i,u=>{this.computeLookaheadFunc(r,u.idx,768,"Repetition",u.maxLookahead,Pt(u))}),D(a,u=>{this.computeLookaheadFunc(r,u.idx,512,"Option",u.maxLookahead,Pt(u))}),D(o,u=>{this.computeLookaheadFunc(r,u.idx,1024,"RepetitionMandatory",u.maxLookahead,Pt(u))}),D(c,u=>{this.computeLookaheadFunc(r,u.idx,1536,"RepetitionMandatoryWithSeparator",u.maxLookahead,Pt(u))}),D(l,u=>{this.computeLookaheadFunc(r,u.idx,1280,"RepetitionWithSeparator",u.maxLookahead,Pt(u))})})})}computeLookaheadFunc(e,r,n,i,a,o){this.TRACE_INIT(`${o}${r===0?"":r}`,()=>{let c=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),l=bc(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(l,c)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return bc(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},Nf=class extends Ct{static{s(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},Pc=new Nf;function Mv(t){Pc.reset(),t.accept(Pc);let e=Pc.dslMethods;return Pc.reset(),e}s(Mv,"collectMethods");function _f(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffseto.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: - ${a.join(` - -`).replace(/\n/g,` - `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}s(Sg,"createBaseSemanticVisitorConstructor");function kg(t,e,r){let n=s(function(){},"derivedConstructor");Pf(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return D(e,a=>{i[a]=Gv}),n.prototype=i,n.prototype.constructor=n,n}s(kg,"createBaseVisitorConstructorWithDefaults");var Of;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(Of||(Of={}));function Uv(t,e){return qv(t,e)}s(Uv,"validateVisitor");function qv(t,e){let r=ot(e,i=>mr(t[i])===!1),n=_(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:Of.MISSING_METHOD,methodName:i}));return Lr(n)}s(qv,"validateMissingCstMethods");var Fc=class{static{s(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=G(e,"nodeLocationTracking")?e.nodeLocationTracking:Nt.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=We,this.cstFinallyStateUpdate=We,this.cstPostTerminal=We,this.cstPostNonTerminal=We,this.cstPostRule=We;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=bf,this.setNodeLocationFromNode=bf,this.cstPostRule=We,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=We,this.setNodeLocationFromNode=We,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=_f,this.setNodeLocationFromNode=_f,this.cstPostRule=We,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=We,this.setNodeLocationFromNode=We,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=We,this.setNodeLocationFromNode=We,this.cstPostRule=We,this.setInitialNodeLocation=We;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let r={name:e,children:Object.create(null)};this.setInitialNodeLocation(r),this.CST_STACK.push(r)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN}cstPostTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];Ag(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];$g(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(At(this.baseCstVisitorConstructor)){let e=Sg(this.className,Or(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(At(this.baseCstVisitorWithDefaultsConstructor)){let e=kg(this.className,Or(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}};var Gc=class{static{s(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Ji}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Ji:this.tokVector[r]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}};var Uc=class{static{s(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,r,n){return this.consumeInternal(r,e,n)}subrule(e,r,n){return this.subruleInternal(r,e,n)}option(e,r){return this.optionInternal(r,e)}or(e,r){return this.orInternal(r,e)}many(e,r){return this.manyInternal(e,r)}atLeastOne(e,r){return this.atLeastOneInternal(e,r)}CONSUME(e,r){return this.consumeInternal(e,0,r)}CONSUME1(e,r){return this.consumeInternal(e,1,r)}CONSUME2(e,r){return this.consumeInternal(e,2,r)}CONSUME3(e,r){return this.consumeInternal(e,3,r)}CONSUME4(e,r){return this.consumeInternal(e,4,r)}CONSUME5(e,r){return this.consumeInternal(e,5,r)}CONSUME6(e,r){return this.consumeInternal(e,6,r)}CONSUME7(e,r){return this.consumeInternal(e,7,r)}CONSUME8(e,r){return this.consumeInternal(e,8,r)}CONSUME9(e,r){return this.consumeInternal(e,9,r)}SUBRULE(e,r){return this.subruleInternal(e,0,r)}SUBRULE1(e,r){return this.subruleInternal(e,1,r)}SUBRULE2(e,r){return this.subruleInternal(e,2,r)}SUBRULE3(e,r){return this.subruleInternal(e,3,r)}SUBRULE4(e,r){return this.subruleInternal(e,4,r)}SUBRULE5(e,r){return this.subruleInternal(e,5,r)}SUBRULE6(e,r){return this.subruleInternal(e,6,r)}SUBRULE7(e,r){return this.subruleInternal(e,7,r)}SUBRULE8(e,r){return this.subruleInternal(e,8,r)}SUBRULE9(e,r){return this.subruleInternal(e,9,r)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,r,n=Qi){if(Oe(this.definedRulesNames,e)){let o={message:cr.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:et.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(o)}this.definedRulesNames.push(e);let i=this.defineRule(e,r,n);return this[e]=i,i}OVERRIDE_RULE(e,r,n=Qi){let i=dg(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let a=this.defineRule(e,r,n);return this[e]=a,a}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(Tn(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return mc(Se(this.gastProductionsCache))}};var qc=class{static{s(this,"RecognizerEngine")}initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Wi,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},G(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if(Qe(e)){if(ee(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if(Qe(e))this.tokensMap=Ge(e,(a,o)=>(a[o.name]=o,a),{});else if(G(e,"modes")&&vt(Ve(Se(e.modes)),Bm)){let a=Ve(Se(e.modes)),o=Hs(a);this.tokensMap=Ge(o,(c,l)=>(c[l.name]=l,c),{})}else if(rm(e))this.tokensMap=$e(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=jt;let n=G(e,"modes")?Ve(Se(e.modes)):Se(e),i=vt(n,a=>ee(a.categoryMatches));this.tokenMatcher=i?Wi:Br,Wr(Se(this.tokensMap))}defineRule(e,r,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=G(n,"resyncEnabled")?n.resyncEnabled:Qi.resyncEnabled,a=G(n,"recoveryValueFunc")?n.recoveryValueFunc:Qi.recoveryValueFunc,o=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[o]=e,this.fullRuleNameToShort[e]=o;let c;return this.outputCst===!0?c=s(function(...d){try{this.ruleInvocationStateUpdate(o,e,this.subruleIdx),r.apply(this,d);let h=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(h),h}catch(h){return this.invokeRuleCatch(h,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):c=s(function(...d){try{return this.ruleInvocationStateUpdate(o,e,this.subruleIdx),r.apply(this,d)}catch(h){return this.invokeRuleCatch(h,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(c,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(Tn(e)){let o=e;if(a){let c=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(c))if(o.resyncedTokens=this.reSyncTo(c),this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];return l.recoveredNode=!0,l}else return n(e);else{if(this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];l.recoveredNode=!0,o.partialCstResult=l}throw o}}else{if(i)return this.moveToTerminatedState(),n(e);throw o}}else throw e}optionInternal(e,r){let n=this.getKeyForAutomaticLookahead(512,r);return this.optionInternalLogic(e,r,n)}optionInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof e!="function"){a=e.DEF;let o=e.GATE;if(o!==void 0){let c=i;i=s(()=>o.call(this)&&c.call(this),"lookAheadFunc")}}else a=e;if(i.call(this)===!0)return a.call(this)}atLeastOneInternal(e,r){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,r,n)}atLeastOneInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let o=r.GATE;if(o!==void 0){let c=i;i=s(()=>o.call(this)&&c.call(this),"lookAheadFunc")}}else a=r;if(i.call(this)===!0){let o=this.doSingleRepetition(a);for(;i.call(this)===!0&&o===!0;)o=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,Ie.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,$c)}atLeastOneSepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,r,n)}atLeastOneSepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let c=s(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,c,i,va],c,1536,e,va)}else throw this.raiseEarlyExitException(e,Ie.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)}manyInternal(e,r){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,r,n)}manyInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let c=r.GATE;if(c!==void 0){let l=i;i=s(()=>c.call(this)&&l.call(this),"lookaheadFunction")}}else a=r;let o=!0;for(;i.call(this)===!0&&o===!0;)o=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],i,768,e,Ac,o)}manySepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,r,n)}manySepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let c=s(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,c,i,Ea],c,1280,e,Ea)}}repetitionSepSecondInternal(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,1536,e,a)}doSingleRepetition(e){let r=this.getLexerPosition();return e.call(this),this.getLexerPosition()>r}orInternal(e,r){let n=this.getKeyForAutomaticLookahead(256,r),i=Qe(e)?e:e.DEF,o=this.getLaFuncFromCache(n).call(this,i);if(o!==void 0)return i[o].ALT.call(this);this.raiseNoAltException(r,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ka(r,e))}}subruleInternal(e,r,n){let i;try{let a=n!==void 0?n.ARGS:void 0;return this.subruleIdx=r,i=e.apply(this,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(a){throw this.subruleInternalError(a,n,e.ruleName)}}subruleInternalError(e,r,n){throw Tn(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,r,n){let i;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(a){i=this.consumeInternalRecovery(e,r,a)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,r,n){let i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new ti(i,r,a))}consumeInternalRecovery(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===Cf?n:a}}else throw n}saveRecogState(){let e=this.errors,r=$e(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),jt)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}};var zc=class{static{s(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=G(e,"errorMessageProvider")?e.errorMessageProvider:Nt.errorMessageProvider}SAVE_ERROR(e){if(Tn(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:$e(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return $e(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],c=Yi(e,a,r,this.maxLookahead)[0],l=[];for(let d=1;d<=this.maxLookahead;d++)l.push(this.LA(d));let u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:c,actual:l,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new Ca(u,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=Hi(e,i,this.maxLookahead),o=[];for(let u=1;u<=this.maxLookahead;u++)o.push(this.LA(u));let c=this.LA(0),l=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:o,previous:c,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new Sa(l,this.LA(1),c))}};var jc=class{static{s(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(At(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return kc([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=ft(e.ruleStack),i=this.getGAstProductions()[r];return new vc(i,e).startWalking()}};var Vc={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(Vc);var Cg=!0,Ng=Math.pow(2,8)-1,Ig=yn({name:"RECORDING_PHASE_TOKEN",pattern:we.NA});Wr([Ig]);var _g=Kr(Ig,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(_g);var jv={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},Bc=class{static{s(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let r=e>0?e:"";this[`CONSUME${r}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${r}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${r}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${r}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${r}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${r}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${r}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${r}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,r,n){return this.consumeInternalRecord(r,e,n)},this.subrule=function(e,r,n){return this.subruleInternalRecord(r,e,n)},this.option=function(e,r){return this.optionInternalRecord(r,e)},this.or=function(e,r){return this.orInternalRecord(r,e)},this.many=function(e,r){this.manyInternalRecord(e,r)},this.atLeastOne=function(e,r){this.atLeastOneInternalRecord(e,r)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let r=0;r<10;r++){let n=r>0?r:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,r){return()=>!0}LA_RECORD(e){return Ji}topLevelRuleRecord(e,r){try{let n=new kt({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}}optionInternalRecord(e,r){return wa.call(this,pe,e,r)}atLeastOneInternalRecord(e,r){wa.call(this,xe,r,e)}atLeastOneSepFirstInternalRecord(e,r){wa.call(this,Ee,r,e,Cg)}manyInternalRecord(e,r){wa.call(this,se,r,e)}manySepFirstInternalRecord(e,r){wa.call(this,ye,r,e,Cg)}orInternalRecord(e,r){return Bv.call(this,e,r)}subruleInternalRecord(e,r,n){if(Wc(r),!e||G(e,"ruleName")===!1){let c=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw c.KNOWN_RECORDER_ERROR=!0,c}let i=gr(this.recordingProdStack),a=e.ruleName,o=new de({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(o),this.outputCst?jv:Vc}consumeInternalRecord(e,r,n){if(Wc(r),!gf(e)){let o=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw o.KNOWN_RECORDER_ERROR=!0,o}let i=gr(this.recordingProdStack),a=new re({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),_g}};function wa(t,e,r,n=!1){Wc(r);let i=gr(this.recordingProdStack),a=mr(e)?e:e.DEF,o=new t({definition:[],idx:r});return n&&(o.separator=e.SEP),G(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),a.call(this),i.definition.push(o),this.recordingProdStack.pop(),Vc}s(wa,"recordProd");function Bv(t,e){Wc(e);let r=gr(this.recordingProdStack),n=Qe(t)===!1,i=n===!1?t:t.DEF,a=new Te({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});G(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let o=Go(i,c=>mr(c.GATE));return a.hasPredicates=o,r.definition.push(a),D(i,c=>{let l=new Re({definition:[]});a.definition.push(l),G(c,"IGNORE_AMBIGUITIES")?l.ignoreAmbiguities=c.IGNORE_AMBIGUITIES:G(c,"GATE")&&(l.ignoreAmbiguities=!0),this.recordingProdStack.push(l),c.ALT.call(this),this.recordingProdStack.pop()}),Vc}s(Bv,"recordOrProd");function wg(t){return t===0?"":`${t}`}s(wg,"getIdxSuffix");function Wc(t){if(t<0||t>Ng){let e=new Error(`Invalid DSL Method idx value: <${t}> - Idx value must be a none negative value smaller than ${Ng+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}s(Wc,"assertMethodIdxIsValid");var Kc=class{static{s(this,"PerformanceTracer")}initPerformanceTracer(e){if(G(e,"traceInitPerf")){let r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:1/0,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=Nt.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:a}=ga(r),o=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}};function bg(t,e){e.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]})})}s(bg,"applyMixins");var Ji=Kr(jt,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Ji);var Nt=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Hr,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),Qi=Object.freeze({recoveryValueFunc:s(()=>{},"recoveryValueFunc"),resyncEnabled:!0}),et;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",t[t.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(et||(et={}));function Hc(t=void 0){return function(){return t}}s(Hc,"EMPTY_ALT");var Ia=class t{static{s(this,"Parser")}static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{ya(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),D(this.definedRulesNames,i=>{let o=this[i].originalGrammarAction,c;this.TRACE_INIT(`${i} Rule`,()=>{c=this.topLevelRuleRecord(i,o)}),this.gastProductionsCache[i]=c})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=gg({rules:Se(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(ee(n)&&this.skipValidations===!1){let i=yg({rules:Se(this.gastProductionsCache),tokenTypes:Se(this.tokensMap),errMsgProvider:cr,grammarName:r}),a=lg({lookaheadStrategy:this.lookaheadStrategy,rules:Se(this.gastProductionsCache),tokenTypes:Se(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),ee(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=$m(Se(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:Se(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(Se(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ee(this.definitionErrors))throw e=_(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: - ${e.join(` -------------------------------- -`)}`)})}constructor(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),G(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=G(r,"skipValidations")?r.skipValidations:Nt.skipValidations}};Ia.DEFER_DEFINITION_ERRORS_HANDLING=!1;bg(Ia,[_c,Oc,Fc,Gc,qc,Uc,zc,jc,Bc,Kc]);var _a=class extends Ia{static{s(this,"EmbeddedActionsParser")}constructor(e,r=Nt){let n=$e(r);n.outputCst=!1,super(e,n)}};function ri(t,e,r){return`${t.name}_${e}_${r}`}s(ri,"buildATNKey");var Rn=1,Vv=2,Pg=4,Og=5;var ts=7,Kv=8,Hv=9,Yv=10,Xv=11,Lg=12,ba=class{static{s(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},Zi=class extends ba{static{s(this,"AtomTransition")}constructor(e,r){super(e),this.tokenType=r}},Pa=class extends ba{static{s(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},es=class extends ba{static{s(this,"RuleTransition")}constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}};function Dg(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};Jv(e,t);let r=t.length;for(let n=0;nMg(t,e,o));return rs(t,e,n,r,...i)}s(rA,"alternation");function nA(t,e,r){let n=it(t,e,r,{type:Rn});xn(t,n);let i=rs(t,e,n,r,ni(t,e,r));return iA(t,e,r,i)}s(nA,"option");function ni(t,e,r){let n=ot(_(r.definition,i=>Mg(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:aA(t,n)}s(ni,"block");function Fg(t,e,r,n,i){let a=n.left,o=n.right,c=it(t,e,r,{type:Xv});xn(t,c);let l=it(t,e,r,{type:Lg});return a.loopback=c,l.loopback=c,t.decisionMap[ri(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=c,He(o,c),i===void 0?(He(c,a),He(c,l)):(He(c,l),He(c,i.left),He(i.right,a)),{left:a,right:l}}s(Fg,"plus");function Gg(t,e,r,n,i){let a=n.left,o=n.right,c=it(t,e,r,{type:Yv});xn(t,c);let l=it(t,e,r,{type:Lg}),u=it(t,e,r,{type:Hv});return c.loopback=u,l.loopback=u,He(c,a),He(c,l),He(o,u),i!==void 0?(He(u,l),He(u,i.left),He(i.right,a)):He(u,c),t.decisionMap[ri(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=c,{left:c,right:l}}s(Gg,"star");function iA(t,e,r,n){let i=n.left,a=n.right;return He(i,a),t.decisionMap[ri(e,"Option",r.idx)]=i,n}s(iA,"optional");function xn(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}s(xn,"defineDecisionState");function rs(t,e,r,n,...i){let a=it(t,e,n,{type:Kv,start:r});r.end=a;for(let c of i)c!==void 0?(He(r,c.left),He(c.right,a)):He(r,a);let o={left:r,right:a};return t.decisionMap[ri(e,sA(n),n.idx)]=r,o}s(rs,"makeAlts");function sA(t){if(t instanceof Te)return"Alternation";if(t instanceof pe)return"Option";if(t instanceof se)return"Repetition";if(t instanceof ye)return"RepetitionWithSeparator";if(t instanceof xe)return"RepetitionMandatory";if(t instanceof Ee)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}s(sA,"getProdType");function aA(t,e){let r=e.length;for(let a=0;ae.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}};function Ff(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}s(Ff,"getATNConfigKey");function uA(t,e){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:t,decision:e,states:{}},r[i]=a),a}}s(uA,"createDFACache");var Yc=class{static{s(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,r){this.predicates[e]=r}toString(){let e="",r=this.predicates.length;for(let n=0;nconsole.log(n))}initialize(e){this.atn=Dg(e.rules),this.dfas=fA(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,o=this.dfas,c=this.logging,l=ri(n,"Alternation",r),d=this.atn.decisionMap[l].decision,h=_(Nc({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),m=>_(m,y=>y[0]));if(qg(h,!1)&&!a){let m=Ge(h,(y,C,w)=>(D(C,z=>{z&&(y[z.tokenTypeIdx]=w,D(z.categoryMatches,M=>{y[M]=w}))}),y),{});return i?function(y){var C;let w=this.LA(1),z=m[w.tokenTypeIdx];if(y!==void 0&&z!==void 0){let M=(C=y[z])===null||C===void 0?void 0:C.GATE;if(M!==void 0&&M.call(this)===!1)return}return z}:function(){let y=this.LA(1);return m[y.tokenTypeIdx]}}else return i?function(m){let y=new Yc,C=m===void 0?0:m.length;for(let z=0;z_(m,y=>y[0]));if(qg(h)&&h[0][0]&&!a){let m=h[0],y=Ve(m);if(y.length===1&&ee(y[0].categoryMatches)){let w=y[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===w}}else{let C=Ge(y,(w,z)=>(z!==void 0&&(w[z.tokenTypeIdx]=!0,D(z.categoryMatches,M=>{w[M]=!0})),w),{});return function(){let w=this.LA(1);return C[w.tokenTypeIdx]===!0}}}return function(){let m=Gf.call(this,o,d,Ug,c);return typeof m=="object"?!1:m===0}}};function qg(t,e=!0){let r=new Set;for(let n of t){let i=new Set;for(let a of n){if(a===void 0){if(e)break;return!1}let o=[a.tokenTypeIdx].concat(a.categoryMatches);for(let c of o)if(r.has(c)){if(!i.has(c))return!1}else r.add(c),i.add(c)}}return!0}s(qg,"isLL1Sequence");function fA(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nVr(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${gA(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, -<${e}> may appears as a prefix path in all these alternatives. -`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n}s(mA,"buildAmbiguityError");function gA(t){if(t instanceof de)return"SUBRULE";if(t instanceof pe)return"OPTION";if(t instanceof Te)return"OR";if(t instanceof xe)return"AT_LEAST_ONE";if(t instanceof Ee)return"AT_LEAST_ONE_SEP";if(t instanceof ye)return"MANY_SEP";if(t instanceof se)return"MANY";if(t instanceof re)return"CONSUME";throw Error("non exhaustive match")}s(gA,"getProductionDslName");function yA(t,e,r){let n=dt(e.configs.elements,a=>a.state.transitions),i=sm(n.filter(a=>a instanceof Zi).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}s(yA,"buildAdaptivePredictError");function TA(t,e){return t.edges[e.tokenTypeIdx]}s(TA,"getExistingTargetState");function RA(t,e,r){let n=new ns,i=[];for(let o of t.elements){if(r.is(o.alt)===!1)continue;if(o.state.type===ts){i.push(o);continue}let c=o.state.transitions.length;for(let l=0;l0&&!$A(a))for(let o of i)a.add(o);return a}s(RA,"computeReachSet");function xA(t,e){if(t instanceof Zi&&xa(e,t.tokenType))return t.target}s(xA,"getReachableTarget");function EA(t,e){let r;for(let n of t.elements)if(e.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}s(EA,"getUniqueAlt");function jg(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}s(jg,"newDFAState");function zg(t,e,r,n){return n=Bg(t,n),e.edges[r.tokenTypeIdx]=n,n}s(zg,"addDFAEdge");function Bg(t,e){if(e===Oa)return e;let r=e.configs.key,n=t.states[r];return n!==void 0?n:(e.configs.finalize(),t.states[r]=e,e)}s(Bg,"addDFAState");function vA(t){let e=new ns,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],o={state:i.pop(),alt:t.alt,stack:i};Xc(o,e)}else e.add(t);return}r.epsilonOnlyTransitions||e.add(t);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}s(NA,"hasConflictingAltSet");function wA(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}s(wA,"hasStateAssociatedWithOneAlt");ls();var ja=class{static{s(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]??this.rootNode}buildRootNode(e){return this.rootNode=new us(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new oi;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new ai(e.startOffset,e.image.length,Di(e),e.tokenType,!r);return n.grammarSource=r,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let r=e.container;if(r){let n=r.content.indexOf(e);n>=0&&r.content.splice(n,1)}}addHiddenNodes(e){let r=[];for(let a of e){let o=new ai(a.startOffset,a.image.length,Di(a),a.tokenType,!0);o.root=this.rootNode,r.push(o)}let n=this.current,i=!1;if(n.content.length>0){n.content.push(...r);return}for(;n.container;){let a=n.container.content.indexOf(n);if(a>0){n.container.content.splice(a,0,...r),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...r)}construct(e){let r=this.current;typeof e.$type=="string"&&!e.$infix&&(this.current.astNode=e),e.$cstNode=r;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}},Ba=class{static{s(this,"AbstractCstNode")}get hidden(){return!1}get astNode(){let e=typeof this._astNode?.$type=="string"?this._astNode:this.container?.astNode;if(!e)throw new Error("This node has no associated AST element");return e}set astNode(e){this._astNode=e}get text(){return this.root.fullText.substring(this.offset,this.end)}},ai=class extends Ba{static{s(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,r,n,i,a=!1){super(),this._hidden=a,this._offset=e,this._tokenType=i,this._length=r,this._range=n}},oi=class extends Ba{static{s(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new zd(this)}get offset(){return this.firstNonHiddenNode?.offset??0}get length(){return this.end-this.offset}get end(){return this.lastNonHiddenNode?.end??0}get range(){let e=this.firstNonHiddenNode,r=this.lastNonHiddenNode;if(e&&r){if(this._rangeCache===void 0){let{range:n}=e,{range:i}=r;this._rangeCache={start:n.start,end:i.end.line=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},zd=class t extends Array{static{s(this,"CstNodeContainer")}constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,t.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,r,...n){return this.addParents(n),super.splice(e,r,...n)}addParents(e){for(let r of e)r.container=this.parent}},us=class extends oi{static{s(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}};var al=Symbol("Datatype");function jd(t){return t.$type===al}s(jd,"isDataTypeNode");var Wg="\u200B",Vg=s(t=>t.endsWith(Wg)?t:t+Wg,"withRuleSuffix"),Wa=class{static{s(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition,n=e.LanguageMetaData.mode==="production";e.shared.profilers.LangiumProfiler?.isActive("parsing")?this.wrapper=new Bd(r,{...e.parser.ParserConfig,skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider},e.shared.profilers.LangiumProfiler.createTask("parsing",e.LanguageMetaData.languageId)):this.wrapper=new cl(r,{...e.parser.ParserConfig,skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider})}alternatives(e,r){this.wrapper.wrapOr(e,r)}optional(e,r){this.wrapper.wrapOption(e,r)}many(e,r){this.wrapper.wrapMany(e,r)}atLeastOne(e,r){this.wrapper.wrapAtLeastOne(e,r)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},Va=class extends Wa{static{s(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new ja,this.stack=[],this.assignmentMap=new Map,this.operatorPrecedence=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,r){let n=this.computeRuleType(e),i;hn(e)&&(i=e.name,this.registerPrecedenceMap(e));let a=this.wrapper.DEFINE_RULE(Vg(e.name),this.startImplementation(n,i,r).bind(this));return this.allRules.set(e.name,a),nt(e)&&e.entry&&(this.mainRule=a),a}registerPrecedenceMap(e){let r=e.name,n=new Map;for(let i=0;i0&&(r=this.construct()),r===void 0)throw new Error("No result from parser");if(this.stack.length>0)throw new Error("Parser stack is not empty after parsing");return r}startImplementation(e,r,n){return i=>{let a=!this.isRecording()&&e!==void 0;if(a){let o={$type:e};this.stack.push(o),e===al?o.value="":r!==void 0&&(o.$infixName=r)}return n(i),a?this.construct():void 0}}extractHiddenTokens(e){let r=this.lexerResult.hidden;if(!r.length)return[];let n=e.startOffset;for(let i=0;in)return r.splice(0,i);return r.splice(0,r.length)}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(a);let o=this.nodeBuilder.buildLeafNode(i,n),{assignment:c,crossRef:l}=this.getAssignment(n),u=this.current;if(c){let d=Kt(n)?i.image:this.converter.convert(i.image,o);this.assign(c.operator,c.feature,d,o,l)}else if(jd(u)){let d=i.image;Kt(n)||(d=this.converter.convert(d,o).toString()),u.value+=d}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i,a){let o;!this.isRecording()&&!n&&(o=this.nodeBuilder.buildCompositeNode(i));let c;try{c=this.wrapper.wrapSubrule(e,r,a)}finally{this.isRecording()||(c===void 0&&!n&&(c=this.construct()),c!==void 0&&o&&o.length>0&&this.performSubruleAssignment(c,i,o))}}performSubruleAssignment(e,r,n){let{assignment:i,crossRef:a}=this.getAssignment(r);if(i)this.assign(i.operator,i.feature,e,n,a);else if(!i){let o=this.current;if(jd(o))o.value+=e.toString();else if(typeof e=="object"&&e){let l=this.assignWithoutOverride(e,o);this.stack.pop(),this.stack.push(l)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(r.feature&&r.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode),this.nodeBuilder.buildCompositeNode(r).content.push(n.$cstNode);let a={$type:e};this.stack.push(a),this.assign(r.operator,r.feature,n,n.$cstNode)}else n.$type=e}}construct(){if(this.isRecording())return;let e=this.stack.pop();return this.nodeBuilder.construct(e),"$infixName"in e?this.constructInfix(e,this.operatorPrecedence.get(e.$infixName)):jd(e)?this.converter.convert(e.value,e.$cstNode):(Ru(this.astReflection,e),e)}constructInfix(e,r){let n=e.parts;if(!Array.isArray(n)||n.length===0)return;let i=e.operators;if(!Array.isArray(i)||n.length<2)return n[0];let a=0,o=-1;for(let w=0;wo?(o=M.precedence,a=w):M.precedence===o&&(M.rightAssoc||(a=w))}let c=i.slice(0,a),l=i.slice(a+1),u=n.slice(0,a+1),d=n.slice(a+1),h={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:u,operators:c},m={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:d,operators:l},y=this.constructInfix(h,r),C=this.constructInfix(m,r);return{$type:e.$type,$cstNode:e.$cstNode,left:y,operator:i[a],right:C}}getAssignment(e){if(!this.assignmentMap.has(e)){let r=Mr(e,sr);this.assignmentMap.set(e,{assignment:r,crossRef:r&&ar(r.terminal)?r.terminal.isMulti?"multi":"single":void 0})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let o=this.current,c;switch(a==="single"&&typeof n=="string"?c=this.linker.buildReference(o,r,i,n):a==="multi"&&typeof n=="string"?c=this.linker.buildMultiReference(o,r,i,n):c=n,e){case"=":{o[r]=c;break}case"?=":{o[r]=!0;break}case"+=":Array.isArray(o[r])||(o[r]=[]),o[r].push(c)}}assignWithoutOverride(e,r){for(let[i,a]of Object.entries(r)){let o=e[i];o===void 0?e[i]=a:Array.isArray(o)&&Array.isArray(a)&&(a.push(...o),e[i]=a)}let n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},ol=class{static{s(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return Hr.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return Hr.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return Hr.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return Hr.buildEarlyExitMessage(e)}},fs=class extends ol{static{s(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:r}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${r.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},Ka=class extends Wa{static{s(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let r=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=r.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,r){let n=this.wrapper.DEFINE_RULE(Vg(e.name),this.startImplementation(r).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return r=>{let n=this.keepStackSize();try{e(r)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,r,n){this.wrapper.wrapConsume(e,r),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,r,n,i,a){this.before(i),this.wrapper.wrapSubrule(e,r,a),this.after(i)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let r=this.elementStack.lastIndexOf(e);r>=0&&this.elementStack.splice(r)}}get currIdx(){return this.wrapper.currIdx}},_A={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new fs},cl=class extends _a{static{s(this,"ChevrotainWrapper")}constructor(e,r){let n=r&&"maxLookahead"in r;super(e,{..._A,lookaheadStrategy:n?new Yr({maxLookahead:r.maxLookahead}):new La({logging:r.skipValidations?()=>{}:void 0}),...r})}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,r,n){return this.RULE(e,r,n)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,r){return this.consume(e,r,void 0)}wrapSubrule(e,r,n){return this.subrule(e,r,{ARGS:[n]})}wrapOr(e,r){this.or(e,r)}wrapOption(e,r){this.option(e,r)}wrapMany(e,r){this.many(e,r)}wrapAtLeastOne(e,r){this.atLeastOne(e,r)}rule(e){return e.call(this,{})}},Bd=class extends cl{static{s(this,"ProfilerWrapper")}constructor(e,r,n){super(e,r),this.task=n}rule(e){this.task.start(),this.task.startSubTask(this.ruleName(e));try{return super.rule(e)}finally{this.task.stopSubTask(this.ruleName(e)),this.task.stop()}}ruleName(e){return e.ruleName}subrule(e,r,n){this.task.startSubTask(this.ruleName(r));try{return super.subrule(e,r,n)}finally{this.task.stopSubTask(this.ruleName(r))}}};function Ha(t,e,r){return bA({parser:e,tokens:r,ruleNames:new Map},t),e}s(Ha,"createParser");function bA(t,e){let r=da(e,!1),n=te(e.rules).filter(nt).filter(a=>r.has(a));for(let a of n){let o={...t,consume:1,optional:1,subrule:1,many:1,or:1};t.parser.rule(a,ci(o,a.definition))}let i=te(e.rules).filter(hn).filter(a=>r.has(a));for(let a of i)t.parser.rule(a,PA(t,a))}s(bA,"buildRules");function PA(t,e){let r=e.call.rule.ref;if(!r)throw new Error("Could not resolve reference to infix operator rule: "+e.call.rule.$refText);if(St(r))throw new Error("Cannot use terminal rule in infix expression");let n=e.operators.precedences.flatMap(y=>y.operators),i={$type:"Group",elements:[]},a={$container:i,$type:"Assignment",feature:"parts",operator:"+=",terminal:e.call},o={$container:i,$type:"Group",elements:[],cardinality:"*"};i.elements.push(a,o);let l={$container:o,$type:"Assignment",feature:"operators",operator:"+=",terminal:{$type:"Alternatives",elements:n}},u={...a,$container:o};o.elements.push(l,u);let h=n.map(y=>t.tokens[y.value]).map((y,C)=>({ALT:s(()=>t.parser.consume(C,y,l),"ALT")})),m;return y=>{m??(m=Vd(t,r)),t.parser.subrule(0,m,!1,a,y),t.parser.many(0,{DEF:s(()=>{t.parser.alternatives(0,h),t.parser.subrule(1,m,!1,u,y)},"DEF")})}}s(PA,"buildInfixRule");function ci(t,e,r=!1){let n;if(Kt(e))n=UA(t,e);else if(qr(e))n=OA(t,e);else if(sr(e))n=ci(t,e.terminal);else if(ar(e))n=Kg(t,e);else if(or(e))n=LA(t,e);else if(rc(e))n=MA(t,e);else if(ac(e))n=FA(t,e);else if(pn(e))n=GA(t,e);else if(ku(e)){let i=t.consume++;n=s(()=>t.parser.consume(i,jt,e),"method")}else throw new Hn(e.$cstNode,`Unexpected element type: ${e.$type}`);return Hg(t,r?void 0:ll(e),n,e.cardinality)}s(ci,"buildElement");function OA(t,e){let r=gn(e);return()=>t.parser.action(r,e)}s(OA,"buildAction");function LA(t,e){let r=e.rule.ref;if(Ur(r)){let n=t.subrule++,i=nt(r)&&r.fragment,a=e.arguments.length>0?DA(r,e.arguments):()=>({}),o;return c=>{o??(o=Vd(t,r)),t.parser.subrule(n,o,i,e,a(c))}}else if(St(r)){let n=t.consume++,i=Wd(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)xr(r);else throw new Hn(e.$cstNode,`Undefined rule: ${e.rule.$refText}`)}s(LA,"buildRuleCall");function DA(t,e){if(e.some(n=>n.calledByName)){let n=e.map(i=>({parameterName:i.parameter?.ref?.name,predicate:$r(i.value)}));return i=>{let a={};for(let{parameterName:o,predicate:c}of n)o&&(a[o]=c(i));return a}}else{let n=e.map(i=>$r(i.value));return i=>{let a={};for(let o=0;oe(n)||r(n)}else if($u(t)){let e=$r(t.left),r=$r(t.right);return n=>e(n)&&r(n)}else if(wu(t)){let e=$r(t.value);return r=>!e(r)}else if(Iu(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(vu(t)){let e=!!t.true;return()=>e}xr(t)}s($r,"buildPredicate");function MA(t,e){if(e.elements.length===1)return ci(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:ci(t,i,!0)},o=ll(i);o&&(a.GATE=$r(o)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let o={ALT:s(()=>a.ALT(i),"ALT")},c=a.GATE;return c&&(o.GATE=()=>c(i)),o}))}}s(MA,"buildAlternatives");function FA(t,e){if(e.elements.length===1)return ci(t,e.elements[0]);let r=[];for(let c of e.elements){let l={ALT:ci(t,c,!0)},u=ll(c);u&&(l.GATE=$r(u)),r.push(l)}let n=t.or++,i=s((c,l)=>{let u=l.getRuleStack().join("-");return`uGroup_${c}_${u}`},"idFunc"),a=s(c=>t.parser.alternatives(n,r.map((l,u)=>{let d={ALT:s(()=>!0,"ALT")},h=t.parser;d.ALT=()=>{if(l.ALT(c),!h.isRecording()){let y=i(n,h);h.unorderedGroups.get(y)||h.unorderedGroups.set(y,[]);let C=h.unorderedGroups.get(y);typeof C?.[u]>"u"&&(C[u]=!0)}};let m=l.GATE;return m?d.GATE=()=>m(c):d.GATE=()=>!h.unorderedGroups.get(i(n,h))?.[u],d})),"alternatives"),o=Hg(t,ll(e),a,"*");return c=>{o(c),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}s(FA,"buildUnorderedGroup");function GA(t,e){let r=e.elements.map(n=>ci(t,n));return n=>r.forEach(i=>i(n))}s(GA,"buildGroup");function ll(t){if(pn(t))return t.guardCondition}s(ll,"getGuardCondition");function Kg(t,e,r=e.terminal){if(r)if(or(r)&&nt(r.rule.ref)){let n=r.rule.ref,i=t.subrule++,a;return o=>{a??(a=Vd(t,n)),t.parser.subrule(i,a,!1,e,o)}}else if(or(r)&&St(r.rule.ref)){let n=t.consume++,i=Wd(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Kt(r)){let n=t.consume++,i=Wd(t,r.value);return()=>t.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let i=dc(e.type.ref)?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+gn(e.type.ref));return Kg(t,e,i)}}s(Kg,"buildCrossReference");function UA(t,e){let r=t.consume++,n=t.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>t.parser.consume(r,n,e)}s(UA,"buildKeyword");function Hg(t,e,r,n){let i=e&&$r(e);if(!n)if(i){let a=t.or++;return o=>t.parser.alternatives(a,[{ALT:s(()=>r(o),"ALT"),GATE:s(()=>i(o),"GATE")},{ALT:Hc(),GATE:s(()=>!i(o),"GATE")}])}else return r;if(n==="*"){let a=t.many++;return o=>t.parser.many(a,{DEF:s(()=>r(o),"DEF"),GATE:i?()=>i(o):void 0})}else if(n==="+"){let a=t.many++;if(i){let o=t.or++;return c=>t.parser.alternatives(o,[{ALT:s(()=>t.parser.atLeastOne(a,{DEF:s(()=>r(c),"DEF")}),"ALT"),GATE:s(()=>i(c),"GATE")},{ALT:Hc(),GATE:s(()=>!i(c),"GATE")}])}else return o=>t.parser.atLeastOne(a,{DEF:s(()=>r(o),"DEF")})}else if(n==="?"){let a=t.optional++;return o=>t.parser.optional(a,{DEF:s(()=>r(o),"DEF"),GATE:i?()=>i(o):void 0})}else xr(n)}s(Hg,"wrap");function Vd(t,e){let r=qA(t,e),n=t.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}s(Vd,"getRule");function qA(t,e){if(Ur(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!nt(n);)(pn(n)||rc(n)||ac(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,t.ruleNames.set(e,i),i}}s(qA,"getRuleName");function Wd(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}s(Wd,"getToken");function Kd(t){let e=t.Grammar,r=t.parser.Lexer,n=new Ka(t);return Ha(e,n,r.definition),n.finalize(),n}s(Kd,"createCompletionParser");function Hd(t){let e=Yg(t);return e.finalize(),e}s(Hd,"createLangiumParser");function Yg(t){let e=t.Grammar,r=t.parser.Lexer,n=new Va(t);return Ha(e,n,r.definition)}s(Yg,"prepareLangiumParser");var Jr=class{static{s(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,r){let n=te(da(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return a.push(...i),a}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(St).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=Fi(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n};return typeof n=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=fa(r)?we.SKIPPED:"hidden"),i}requiresCustomPattern(e){return!!(e.flags.includes("u")||e.flags.includes("s"))}regexPatternFunction(e){let r=new RegExp(e,e.flags+"y");return(n,i)=>(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Ur).flatMap(i=>nr(i).filter(Kt)).distinct(i=>i.value).toArray().sort((i,a)=>a.value.length-i.value.length).map(i=>this.buildKeywordToken(i,r,!!n?.caseInsensitive))}buildKeywordToken(e,r,n){let i=this.buildKeywordPattern(e,n),a={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,r)};return typeof i=="function"&&(a.LINE_BREAKS=!0),a}buildKeywordPattern(e,r){return r?new RegExp(mn(e.value),"i"):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&Hu("^"+a.source+"$",e.value)&&n.push(i),n},[])}};var li=class{static{s(this,"DefaultValueConverter")}convert(e,r){let n=r.grammarSource;if(ar(n)&&(n=Ju(n)),or(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,r)}return e}runConverter(e,r,n){switch(e.name.toUpperCase()){case"INT":return Sr.convertInt(r);case"STRING":return Sr.convertString(r);case"ID":return Sr.convertID(r)}switch(sf(e)?.toLowerCase()){case"number":return Sr.convertNumber(r);case"boolean":return Sr.convertBoolean(r);case"bigint":return Sr.convertBigint(r);case"date":return Sr.convertDate(r);default:return r}}},Sr;(function(t){function e(u){let d="";for(let h=1;h{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}s(tp,"delayNextTick");var pl=0,Zg=10;function hl(){return pl=performance.now(),new W.CancellationTokenSource}s(hl,"startCancelableOperation");function ey(t){Zg=t}s(ey,"setInterruptionPeriod");var Ht=Symbol("OperationCancelled");function kr(t){return t===Ht}s(kr,"isOperationCancelled");async function De(t){if(t===W.CancellationToken.None)return;let e=performance.now();if(e-pl>=Zg&&(pl=e,await tp(),pl=performance.now()),t.isCancellationRequested)throw Ht}s(De,"interruptAndCheck");var wt=class{static{s(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}};var ml=class t{static{s(this,"FullTextDocument")}constructor(e,r,n,i){this._uri=e,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let r=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(r,n)}return this._content}update(e,r){for(let n of e)if(t.isIncremental(n)){let i=ny(n.range),a=this.offsetAt(i.start),o=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(o,this._content.length);let c=Math.max(i.start.line,0),l=Math.max(i.end.line,0),u=this._lineOffsets,d=ty(n.text,!1,a);if(l-c===d.length)for(let m=0,y=d.length;me?i=o:n=o+1}let a=n-1;return e=this.ensureBeforeEOL(e,r[a]),{line:a,character:e-r[a]}}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line];if(e.character<=0)return n;let i=e.line+1r&&ry(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}},ms;(function(t){function e(i,a,o,c){return new ml(i,a,o,c)}s(e,"create"),t.create=e;function r(i,a,o){if(i instanceof ml)return i.update(a,o),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}s(r,"update"),t.update=r;function n(i,a){let o=i.getText(),c=rp(a.map(JA),(d,h)=>{let m=d.range.start.line-h.range.start.line;return m===0?d.range.start.character-h.range.start.character:m}),l=0,u=[];for(let d of c){let h=i.offsetAt(d.range.start);if(hl&&u.push(o.substring(l,h)),d.newText.length&&u.push(d.newText),l=i.offsetAt(d.range.end)}return u.push(o.substr(l)),u.join("")}s(n,"applyEdits"),t.applyEdits=n})(ms||(ms={}));function rp(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);rp(n,e),rp(i,e);let a=0,o=0,c=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}s(ny,"getWellformedRange");function JA(t){let e=ny(t.range);return e!==t.range?{newText:t.newText,range:e}:t}s(JA,"getWellformedEdit");var iy;(()=>{"use strict";var t={975:S=>{function T(R){if(typeof R!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(R))}s(T,"e");function L(R,E){for(var $,b="",F=0,N=-1,Y=0,Q=0;Q<=R.length;++Q){if(Q2){var Be=b.lastIndexOf("/");if(Be!==b.length-1){Be===-1?(b="",F=0):F=(b=b.slice(0,Be)).length-1-b.lastIndexOf("/"),N=Q,Y=0;continue}}else if(b.length===2||b.length===1){b="",F=0,N=Q,Y=0;continue}}E&&(b.length>0?b+="/..":b="..",F=2)}else b.length>0?b+="/"+R.slice(N+1,Q):b=R.slice(N+1,Q),F=Q-N-1;N=Q,Y=0}else $===46&&Y!==-1?++Y:Y=-1}return b}s(L,"r");var O={resolve:s(function(){for(var R,E="",$=!1,b=arguments.length-1;b>=-1&&!$;b--){var F;b>=0?F=arguments[b]:(R===void 0&&(R=process.cwd()),F=R),T(F),F.length!==0&&(E=F+"/"+E,$=F.charCodeAt(0)===47)}return E=L(E,!$),$?E.length>0?"/"+E:"/":E.length>0?E:"."},"resolve"),normalize:s(function(R){if(T(R),R.length===0)return".";var E=R.charCodeAt(0)===47,$=R.charCodeAt(R.length-1)===47;return(R=L(R,!E)).length!==0||E||(R="."),R.length>0&&$&&(R+="/"),E?"/"+R:R},"normalize"),isAbsolute:s(function(R){return T(R),R.length>0&&R.charCodeAt(0)===47},"isAbsolute"),join:s(function(){if(arguments.length===0)return".";for(var R,E=0;E0&&(R===void 0?R=$:R+="/"+$)}return R===void 0?".":O.normalize(R)},"join"),relative:s(function(R,E){if(T(R),T(E),R===E||(R=O.resolve(R))===(E=O.resolve(E)))return"";for(var $=1;$Q){if(E.charCodeAt(N+ue)===47)return E.slice(N+ue+1);if(ue===0)return E.slice(N+ue)}else F>Q&&(R.charCodeAt($+ue)===47?Be=ue:ue===0&&(Be=0));break}var be=R.charCodeAt($+ue);if(be!==E.charCodeAt(N+ue))break;be===47&&(Be=ue)}var pr="";for(ue=$+Be+1;ue<=b;++ue)ue!==b&&R.charCodeAt(ue)!==47||(pr.length===0?pr+="..":pr+="/..");return pr.length>0?pr+E.slice(N+Be):(N+=Be,E.charCodeAt(N)===47&&++N,E.slice(N))},"relative"),_makeLong:s(function(R){return R},"_makeLong"),dirname:s(function(R){if(T(R),R.length===0)return".";for(var E=R.charCodeAt(0),$=E===47,b=-1,F=!0,N=R.length-1;N>=1;--N)if((E=R.charCodeAt(N))===47){if(!F){b=N;break}}else F=!1;return b===-1?$?"/":".":$&&b===1?"//":R.slice(0,b)},"dirname"),basename:s(function(R,E){if(E!==void 0&&typeof E!="string")throw new TypeError('"ext" argument must be a string');T(R);var $,b=0,F=-1,N=!0;if(E!==void 0&&E.length>0&&E.length<=R.length){if(E.length===R.length&&E===R)return"";var Y=E.length-1,Q=-1;for($=R.length-1;$>=0;--$){var Be=R.charCodeAt($);if(Be===47){if(!N){b=$+1;break}}else Q===-1&&(N=!1,Q=$+1),Y>=0&&(Be===E.charCodeAt(Y)?--Y==-1&&(F=$):(Y=-1,F=Q))}return b===F?F=Q:F===-1&&(F=R.length),R.slice(b,F)}for($=R.length-1;$>=0;--$)if(R.charCodeAt($)===47){if(!N){b=$+1;break}}else F===-1&&(N=!1,F=$+1);return F===-1?"":R.slice(b,F)},"basename"),extname:s(function(R){T(R);for(var E=-1,$=0,b=-1,F=!0,N=0,Y=R.length-1;Y>=0;--Y){var Q=R.charCodeAt(Y);if(Q!==47)b===-1&&(F=!1,b=Y+1),Q===46?E===-1?E=Y:N!==1&&(N=1):E!==-1&&(N=-1);else if(!F){$=Y+1;break}}return E===-1||b===-1||N===0||N===1&&E===b-1&&E===$+1?"":R.slice(E,b)},"extname"),format:s(function(R){if(R===null||typeof R!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof R);return(function(E,$){var b=$.dir||$.root,F=$.base||($.name||"")+($.ext||"");return b?b===$.root?b+F:b+"/"+F:F})(0,R)},"format"),parse:s(function(R){T(R);var E={root:"",dir:"",base:"",ext:"",name:""};if(R.length===0)return E;var $,b=R.charCodeAt(0),F=b===47;F?(E.root="/",$=1):$=0;for(var N=-1,Y=0,Q=-1,Be=!0,ue=R.length-1,be=0;ue>=$;--ue)if((b=R.charCodeAt(ue))!==47)Q===-1&&(Be=!1,Q=ue+1),b===46?N===-1?N=ue:be!==1&&(be=1):N!==-1&&(be=-1);else if(!Be){Y=ue+1;break}return N===-1||Q===-1||be===0||be===1&&N===Q-1&&N===Y+1?Q!==-1&&(E.base=E.name=Y===0&&F?R.slice(1,Q):R.slice(Y,Q)):(Y===0&&F?(E.name=R.slice(1,N),E.base=R.slice(1,Q)):(E.name=R.slice(Y,N),E.base=R.slice(Y,Q)),E.ext=R.slice(N,Q)),Y>0?E.dir=R.slice(0,Y-1):F&&(E.dir="/"),E},"parse"),sep:"/",delimiter:":",win32:null,posix:null};O.posix=O,S.exports=O}},e={};function r(S){var T=e[S];if(T!==void 0)return T.exports;var L=e[S]={exports:{}};return t[S](L,L.exports,r),L.exports}s(r,"r"),r.d=(S,T)=>{for(var L in T)r.o(T,L)&&!r.o(S,L)&&Object.defineProperty(S,L,{enumerable:!0,get:T[L]})},r.o=(S,T)=>Object.prototype.hasOwnProperty.call(S,T),r.r=S=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(S,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(S,"__esModule",{value:!0})};var n={};let i;r.r(n),r.d(n,{URI:s(()=>m,"URI"),Utils:s(()=>Vt,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,o=/^\//,c=/^\/\//;function l(S,T){if(!S.scheme&&T)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${S.authority}", path: "${S.path}", query: "${S.query}", fragment: "${S.fragment}"}`);if(S.scheme&&!a.test(S.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(S.path){if(S.authority){if(!o.test(S.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(c.test(S.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}s(l,"a");let u="",d="/",h=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class m{static{s(this,"l")}static isUri(T){return T instanceof m||!!T&&typeof T.authority=="string"&&typeof T.fragment=="string"&&typeof T.path=="string"&&typeof T.query=="string"&&typeof T.scheme=="string"&&typeof T.fsPath=="string"&&typeof T.with=="function"&&typeof T.toString=="function"}scheme;authority;path;query;fragment;constructor(T,L,O,R,E,$=!1){typeof T=="object"?(this.scheme=T.scheme||u,this.authority=T.authority||u,this.path=T.path||u,this.query=T.query||u,this.fragment=T.fragment||u):(this.scheme=(function(b,F){return b||F?b:"file"})(T,$),this.authority=L||u,this.path=(function(b,F){switch(b){case"https":case"http":case"file":F?F[0]!==d&&(F=d+F):F=d}return F})(this.scheme,O||u),this.query=R||u,this.fragment=E||u,l(this,$))}get fsPath(){return P(this,!1)}with(T){if(!T)return this;let{scheme:L,authority:O,path:R,query:E,fragment:$}=T;return L===void 0?L=this.scheme:L===null&&(L=u),O===void 0?O=this.authority:O===null&&(O=u),R===void 0?R=this.path:R===null&&(R=u),E===void 0?E=this.query:E===null&&(E=u),$===void 0?$=this.fragment:$===null&&($=u),L===this.scheme&&O===this.authority&&R===this.path&&E===this.query&&$===this.fragment?this:new C(L,O,R,E,$)}static parse(T,L=!1){let O=h.exec(T);return O?new C(O[2]||u,me(O[4]||u),me(O[5]||u),me(O[7]||u),me(O[9]||u),L):new C(u,u,u,u,u)}static file(T){let L=u;if(i&&(T=T.replace(/\\/g,d)),T[0]===d&&T[1]===d){let O=T.indexOf(d,2);O===-1?(L=T.substring(2),T=d):(L=T.substring(2,O),T=T.substring(O)||d)}return new C("file",L,T,u,u)}static from(T){let L=new C(T.scheme,T.authority,T.path,T.query,T.fragment);return l(L,!0),L}toString(T=!1){return A(this,T)}toJSON(){return this}static revive(T){if(T){if(T instanceof m)return T;{let L=new C(T);return L._formatted=T.external,L._fsPath=T._sep===y?T.fsPath:null,L}}return T}}let y=i?1:void 0;class C extends m{static{s(this,"d")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=P(this,!1)),this._fsPath}toString(T=!1){return T?A(this,!0):(this._formatted||(this._formatted=A(this,!1)),this._formatted)}toJSON(){let T={$mid:1};return this._fsPath&&(T.fsPath=this._fsPath,T._sep=y),this._formatted&&(T.external=this._formatted),this.path&&(T.path=this.path),this.scheme&&(T.scheme=this.scheme),this.authority&&(T.authority=this.authority),this.query&&(T.query=this.query),this.fragment&&(T.fragment=this.fragment),T}}let w={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function z(S,T,L){let O,R=-1;for(let E=0;E=97&&$<=122||$>=65&&$<=90||$>=48&&$<=57||$===45||$===46||$===95||$===126||T&&$===47||L&&$===91||L&&$===93||L&&$===58)R!==-1&&(O+=encodeURIComponent(S.substring(R,E)),R=-1),O!==void 0&&(O+=S.charAt(E));else{O===void 0&&(O=S.substr(0,E));let b=w[$];b!==void 0?(R!==-1&&(O+=encodeURIComponent(S.substring(R,E)),R=-1),O+=b):R===-1&&(R=E)}}return R!==-1&&(O+=encodeURIComponent(S.substring(R))),O!==void 0?O:S}s(z,"m");function M(S){let T;for(let L=0;L1&&S.scheme==="file"?`//${S.authority}${S.path}`:S.path.charCodeAt(0)===47&&(S.path.charCodeAt(1)>=65&&S.path.charCodeAt(1)<=90||S.path.charCodeAt(1)>=97&&S.path.charCodeAt(1)<=122)&&S.path.charCodeAt(2)===58?T?S.path.substr(1):S.path[1].toLowerCase()+S.path.substr(2):S.path,i&&(L=L.replace(/\//g,"\\")),L}s(P,"v");function A(S,T){let L=T?M:z,O="",{scheme:R,authority:E,path:$,query:b,fragment:F}=S;if(R&&(O+=R,O+=":"),(E||R==="file")&&(O+=d,O+=d),E){let N=E.indexOf("@");if(N!==-1){let Y=E.substr(0,N);E=E.substr(N+1),N=Y.lastIndexOf(":"),N===-1?O+=L(Y,!1,!1):(O+=L(Y.substr(0,N),!1,!1),O+=":",O+=L(Y.substr(N+1),!1,!0)),O+="@"}E=E.toLowerCase(),N=E.lastIndexOf(":"),N===-1?O+=L(E,!1,!0):(O+=L(E.substr(0,N),!1,!0),O+=E.substr(N))}if($){if($.length>=3&&$.charCodeAt(0)===47&&$.charCodeAt(2)===58){let N=$.charCodeAt(1);N>=65&&N<=90&&($=`/${String.fromCharCode(N+32)}:${$.substr(3)}`)}else if($.length>=2&&$.charCodeAt(1)===58){let N=$.charCodeAt(0);N>=65&&N<=90&&($=`${String.fromCharCode(N+32)}:${$.substr(2)}`)}O+=L($,!0,!1)}return b&&(O+="?",O+=L(b,!1,!1)),F&&(O+="#",O+=T?F:z(F,!1,!1)),O}s(A,"b");function H(S){try{return decodeURIComponent(S)}catch{return S.length>3?S.substr(0,3)+H(S.substr(3)):S}}s(H,"C");let U=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function me(S){return S.match(U)?S.replace(U,(T=>H(T))):S}s(me,"w");var dr=r(975);let Xe=dr.posix||dr,Qt="/";var Vt;(function(S){S.joinPath=function(T,...L){return T.with({path:Xe.join(T.path,...L)})},S.resolvePath=function(T,...L){let O=T.path,R=!1;O[0]!==Qt&&(O=Qt+O,R=!0);let E=Xe.resolve(O,...L);return R&&E[0]===Qt&&!T.authority&&(E=E.substring(1)),T.with({path:E})},S.dirname=function(T){if(T.path.length===0||T.path===Qt)return T;let L=Xe.dirname(T.path);return L.length===1&&L.charCodeAt(0)===46&&(L=""),T.with({path:L})},S.basename=function(T){return Xe.basename(T.path)},S.extname=function(T){return Xe.extname(T.path)}})(Vt||(Vt={})),iy=n})();var{URI:tt,Utils:gs}=iy;var je;(function(t){t.basename=gs.basename,t.dirname=gs.dirname,t.extname=gs.extname,t.joinPath=gs.joinPath,t.resolvePath=gs.resolvePath;let e=typeof process=="object"&&process?.platform==="win32";function r(o,c){return o?.toString()===c?.toString()}s(r,"equals"),t.equals=r;function n(o,c){let l=typeof o=="string"?tt.parse(o).path:o.path,u=typeof c=="string"?tt.parse(c).path:c.path,d=l.split("/").filter(w=>w.length>0),h=u.split("/").filter(w=>w.length>0);if(e){let w=/^[A-Z]:$/;if(d[0]&&w.test(d[0])&&(d[0]=d[0].toLowerCase()),h[0]&&w.test(h[0])&&(h[0]=h[0].toLowerCase()),d[0]!==h[0])return u.substring(1)}let m=0;for(;m({name:i.name,uri:je.joinPath(tt.parse(r),i.name).toString(),element:i.element})):[]}all(){return this.collectValues(this.root)}findAll(e){let r=this.getNode(je.normalize(e),!1);return r?this.collectValues(r):[]}getNode(e,r){let n=e.split("/");e.charAt(e.length-1)==="/"&&n.pop();let i=this.root;for(let a of n){let o=i.children.get(a);if(!o)if(r)o={name:a,children:new Map,parent:i},i.children.set(a,o);else return;i=o}return i}collectValues(e){let r=[];e.element&&r.push(e.element);for(let n of e.children.values())r.push(...this.collectValues(n));return r}};var Z;(function(t){t[t.Changed=0]="Changed",t[t.Parsed=1]="Parsed",t[t.IndexedContent=2]="IndexedContent",t[t.ComputedScopes=3]="ComputedScopes",t[t.Linked=4]="Linked",t[t.IndexedReferences=5]="IndexedReferences",t[t.Validated=6]="Validated"})(Z||(Z={}));var Xa=class{static{s(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=W.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??tt.parse(e.uri),W.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromString(e,r,n){return W.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r,n){if(typeof r=="string"){let i=this.parse(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else if("$model"in r){let i={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(i,e)}else{let i=this.parse(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}async createAsync(e,r,n){if(typeof r=="string"){let i=await this.parseAsync(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else{let i=await this.parseAsync(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}createLangiumDocument(e,r,n,i){let a;if(n)a={parseResult:e,uri:r,state:Z.Parsed,references:[],textDocument:n};else{let o=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:Z.Parsed,references:[],get textDocument(){return o()}}}return e.value.$document=a,a}async update(e,r){let n=e.parseResult.value.$cstNode?.root.fullText,i=this.textDocuments?.get(e.uri.toString()),a=i?i.getText():await this.fileSystemProvider.readFile(e.uri);if(i)Object.defineProperty(e,"textDocument",{value:i});else{let o=this.createTextDocumentGetter(e.uri,a);Object.defineProperty(e,"textDocument",{get:o})}return n!==a&&(e.parseResult=await this.parseAsync(e.uri,a,r),e.parseResult.value.$document=e),e.state=Z.Parsed,e}parse(e,r,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r,n)}parseAsync(e,r,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r,n)}createTextDocumentGetter(e,r){let n=this.serviceRegistry,i;return()=>i??(i=ms.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},Ja=class{static{s(this,"DefaultLangiumDocuments")}constructor(e){this.documentTrie=new ys,this.services=e,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.documentBuilder=()=>e.workspace.DocumentBuilder}get all(){return te(this.documentTrie.all())}addDocument(e){let r=e.uri.toString();if(this.documentTrie.has(r))throw new Error(`A document with the URI '${r}' is already present.`);this.documentTrie.insert(r,e)}getDocument(e){let r=e.toString();return this.documentTrie.find(r)}getDocuments(e){let r=e.toString();return this.documentTrie.findAll(r)}async getOrCreateDocument(e,r){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,r),this.addDocument(n),n)}createDocument(e,r,n){if(n)return this.langiumDocumentFactory.fromString(r,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(r,e);return this.addDocument(i),i}}hasDocument(e){return this.documentTrie.has(e.toString())}invalidateDocument(e){let r=e.toString(),n=this.documentTrie.find(r);return n&&this.documentBuilder().resetToState(n,Z.Changed),n}deleteDocument(e){let r=e.toString(),n=this.documentTrie.find(r);return n&&(n.state=Z.Changed,this.documentTrie.delete(r)),n}deleteDocuments(e){let r=e.toString(),n=this.documentTrie.findAll(r);for(let i of n)i.state=Z.Changed;return this.documentTrie.delete(r),n}};var fi=Symbol("RefResolving"),Qa=class{static{s(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async link(e,r=W.CancellationToken.None){if(this.profiler?.isActive("linking")){let n=this.profiler.createTask("linking",this.languageId);n.start();try{for(let i of $t(e.parseResult.value))await De(r),on(i).forEach(a=>{let o=`${i.$type}:${a.property}`;n.startSubTask(o);try{this.doLink(a,e)}finally{n.stopSubTask(o)}})}finally{n.stop()}}else for(let n of $t(e.parseResult.value))await De(r),on(n).forEach(i=>this.doLink(i,e))}doLink(e,r){let n=e.reference;if("_ref"in n&&n._ref===void 0){n._ref=fi;try{let i=this.getCandidate(e);if(On(i))n._ref=i;else{n._nodeDescription=i;let a=this.loadAstNode(i);n._ref=a??this.createLinkingError(e,i)}}catch(i){console.error(`An error occurred while resolving reference to '${n.$refText}':`,i);let a=i.message??String(i);n._ref={info:e,message:`An error occurred while resolving reference to '${n.$refText}': ${a}`}}r.references.push(n)}else if("_items"in n&&n._items===void 0){n._items=fi;try{let i=this.getCandidates(e),a=[];if(On(i))n._linkingError=i;else for(let o of i){let c=this.loadAstNode(o);c&&a.push({ref:c,$nodeDescription:o})}n._items=a}catch(i){n._linkingError={info:e,message:`An error occurred while resolving reference to '${n.$refText}': ${i}`},n._items=[]}r.references.push(n)}}unlink(e){for(let r of e.references)"_ref"in r?(r._ref=void 0,delete r._nodeDescription):"_items"in r&&(r._items=void 0,delete r._linkingError);e.references=[]}getCandidate(e){return this.scopeProvider.getScope(e).getElement(e.reference.$refText)??this.createLinkingError(e)}getCandidates(e){let n=this.scopeProvider.getScope(e).getElements(e.reference.$refText).distinct(i=>`${i.documentUri}#${i.path}`).toArray();return n.length>0?n:this.createLinkingError(e)}buildReference(e,r,n,i){let a=this,o={$refNode:n,$refText:i,_ref:void 0,get ref(){if(Le(this._ref))return this._ref;if(gu(this._nodeDescription)){let c=a.loadAstNode(this._nodeDescription);this._ref=c??a.createLinkingError({reference:o,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){this._ref=fi;let c=Ci(e).$document,l=a.getLinkedNode({reference:o,container:e,property:r});if(l.error&&c&&c.state0))return this._linkingError=a.createLinkingError({reference:o,container:e,property:r})}};return o}throwCyclicReferenceError(e,r,n){throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(e)}/${r} (symbol '${n}')`)}getLinkedNode(e){try{let r=this.getCandidate(e);if(On(r))return{error:r};let n=this.loadAstNode(r);return n?{node:n,descr:r}:{descr:r,error:this.createLinkingError(e,r)}}catch(r){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,r);let n=r.message??String(r);return{error:{info:e,message:`An error occurred while resolving reference to '${e.reference.$refText}': ${n}`}}}}loadAstNode(e){if(e.node)return e.node;let r=this.langiumDocuments().getDocument(e.documentUri);if(r)return this.astNodeLocator.getAstNode(r.parseResult.value,e.path)}createLinkingError(e,r){let n=Ci(e.container).$document;n&&n.statear(r)&&r.isMulti)}findDeclarations(e){if(e){let r=nf(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(Ze(i)||Gt(i))return qo(i);if(Array.isArray(i)){for(let a of i)if((Ze(a)||Gt(a))&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return qo(a)}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||Uu(e,i)))return this.getSelfNodes(n)}}return[]}getSelfNodes(e){if(this.hasMultiReference){let r=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e)),n=this.getNodeFromReferenceDescription(r.head());if(n){for(let i of on(n))if(Gt(i.reference)&&i.reference.items.some(a=>a.ref===e))return i.reference.items.map(a=>a.ref)}return[e]}else return[e]}getNodeFromReferenceDescription(e){if(!e)return;let r=this.documents.getDocument(e.sourceUri);if(r)return this.nodeLocator.getAstNode(r.parseResult.value,e.sourcePath)}findDeclarationNodes(e){let r=this.findDeclarations(e),n=[];for(let i of r){let a=this.nameProvider.getNameNode(i)??i.$cstNode;a&&n.push(a)}return n}findReferences(e,r){let n=[];r.includeDeclaration&&n.push(...this.getSelfReferences(e));let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return r.documentUri&&(i=i.filter(a=>je.equals(a.sourceUri,r.documentUri))),n.push(...i),te(n)}getSelfReferences(e){let r=this.getSelfNodes(e),n=[];for(let i of r){let a=this.nameProvider.getNameNode(i);if(a){let o=mt(i),c=this.nodeLocator.getAstNodePath(i);n.push({sourceUri:o.uri,sourcePath:c,targetUri:o.uri,targetPath:c,segment:Kn(a),local:!0})}}return n}};var yt=class{static{s(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return Si.sum(te(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,r){if(r===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(r);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){return this.map.get(e)??[]}getStream(e){let r=this.map.get(e);return r?te(r):an}has(e,r){if(r===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(r)>=0:!1}}add(e,r){return this.map.has(e)?this.map.get(e).push(r):this.map.set(e,[r]),this}addAll(e,r){return this.map.has(e)?this.map.get(e).push(...r):this.map.set(e,Array.from(r)),this}forEach(e){this.map.forEach((r,n)=>r.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return te(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return te(this.map.keys())}values(){return te(this.map.values()).flat()}entriesGroupedByKey(){return te(this.map.entries())}},di=class{static{s(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[r,n]of e)this.set(r,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,r){return this.map.set(e,r),this.inverse.set(r,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let r=this.map.get(e);return r!==void 0?(this.map.delete(e),this.inverse.delete(r),!0):!1}};var to=class{static{s(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async collectExportedSymbols(e,r=W.CancellationToken.None){return this.collectExportedSymbolsForNode(e.parseResult.value,e,void 0,r)}async collectExportedSymbolsForNode(e,r,n=Xs,i=W.CancellationToken.None){let a=[];this.addExportedSymbol(e,a,r);for(let o of n(e))await De(i),this.addExportedSymbol(o,a,r);return a}addExportedSymbol(e,r,n){let i=this.nameProvider.getName(e);i&&r.push(this.descriptions.createDescription(e,i,n))}async collectLocalSymbols(e,r=W.CancellationToken.None){let n=e.parseResult.value,i=new yt;for(let a of nr(n))await De(r),this.addLocalSymbol(a,e,i);return i}addLocalSymbol(e,r,n){let i=e.$container;if(i){let a=this.nameProvider.getName(e);a&&n.add(i,this.descriptions.createDescription(e,a,r))}}};var Ts=class{static{s(this,"StreamScope")}constructor(e,r,n){this.elements=e,this.outerScope=r,this.caseInsensitive=n?.caseInsensitive??!1,this.concatOuterScope=n?.concatOuterScope??!0}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.caseInsensitive?this.elements.find(i=>i.name.toLowerCase()===r):this.elements.find(i=>i.name===e);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.caseInsensitive?this.elements.filter(i=>i.name.toLowerCase()===r):this.elements.filter(i=>i.name===e);return(this.concatOuterScope||n.isEmpty())&&this.outerScope?n.concat(this.outerScope.getElements(e)):n}},np=class{static{s(this,"MapScope")}constructor(e,r,n){this.elements=new Map,this.caseInsensitive=n?.caseInsensitive??!1,this.concatOuterScope=n?.concatOuterScope??!0;for(let i of e){let a=this.caseInsensitive?i.name.toLowerCase():i.name;this.elements.set(a,i)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r),i=n?[n]:[];return(this.concatOuterScope||i.length>0)&&this.outerScope?te(i).concat(this.outerScope.getElements(e)):te(i)}getAllElements(){let e=te(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},ro=class{static{s(this,"MultiMapScope")}constructor(e,r,n){this.elements=new yt,this.caseInsensitive=n?.caseInsensitive??!1,this.concatOuterScope=n?.concatOuterScope??!0;for(let i of e){let a=this.caseInsensitive?i.name.toLowerCase():i.name;this.elements.add(a,i)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r)[0];if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);return(this.concatOuterScope||n.length===0)&&this.outerScope?te(n).concat(this.outerScope.getElements(e)):te(n)}getAllElements(){let e=te(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},QA={getElement(){},getElements(){return an},getAllElements(){return an}};var Rs=class{static{s(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},no=class extends Rs{static{s(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,r){this.throwIfDisposed(),this.cache.set(e,r)}get(e,r){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(r){let n=r();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},pi=class extends Rs{static{s(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(r=>r)}has(e,r){return this.throwIfDisposed(),this.cacheForContext(e).has(r)}set(e,r,n){this.throwIfDisposed(),this.cacheForContext(e).set(r,n)}get(e,r,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(r))return i.get(r);if(n){let a=n();return i.set(r,a),a}else return}delete(e,r){return this.throwIfDisposed(),this.cacheForContext(e).delete(r)}clear(e){if(this.throwIfDisposed(),e){let r=this.converter(e);this.cache.delete(r)}else this.cache.clear()}cacheForContext(e){let r=this.converter(e),n=this.cache.get(r);return n||(n=new Map,this.cache.set(r,n)),n}},gl=class extends pi{static{s(this,"DocumentCache")}constructor(e,r){super(n=>n.toString()),r?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(r,n=>{this.clear(n.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{for(let a of i)this.clear(a)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{let a=n.concat(i);for(let o of a)this.clear(o)}))}},xs=class extends no{static{s(this,"WorkspaceCache")}constructor(e,r){super(),r?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(r,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}};var io=class{static{s(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new xs(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=mt(e.container).localSymbols;if(i){let o=e.container;do i.has(o)&&r.push(i.getStream(o).filter(c=>this.reflection.isSubtype(c.type,n))),o=o.$container;while(o)}let a=this.getGlobalScope(n,e);for(let o=r.length-1;o>=0;o--)a=this.createScope(r[o],a);return a}createScope(e,r,n){return new Ts(te(e),r,n)}createScopeForNodes(e,r,n){let i=te(e).map(a=>{let o=this.nameProvider.getName(a);if(o)return this.descriptions.createDescription(a,o)}).nonNullable();return new Ts(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new ro(this.indexManager.allElements(e)))}};function ip(t){return typeof t.$comment=="string"}s(ip,"isAstNodeWithComment");function ay(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}s(ay,"isIntermediateReference");var so=class{static{s(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,r){let n=r??{},i=r?.replacer,a=s((c,l)=>this.replacer(c,l,n),"defaultReplacer"),o=i?(c,l)=>i(c,l,a):a;try{return this.currentDocument=mt(e),JSON.stringify(e,o,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r){let n=r??{},i=JSON.parse(e);return this.linkNode(i,i,n),i}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:o,uriConverter:c}){if(!this.ignoreProperties.has(e))if(Ze(r)){let l=r.ref,u=n?r.$refText:void 0;if(l){let d=mt(l),h="";this.currentDocument&&this.currentDocument!==d&&(c?h=c(d.uri,l):h=d.uri.toString());let m=this.astNodeLocator.getAstNodePath(l);return{$ref:`${h}#${m}`,$refText:u}}else return{$error:r.error?.message??"Could not resolve reference",$refText:u}}else if(Gt(r)){let l=n?r.$refText:void 0,u=[];for(let d of r.items){let h=d.ref,m=mt(d.ref),y="";this.currentDocument&&this.currentDocument!==m&&(c?y=c(m.uri,h):y=m.uri.toString());let C=this.astNodeLocator.getAstNodePath(h);u.push(`${y}#${C}`)}return{$refs:u,$refText:l}}else if(Le(r)){let l;if(a&&(l=this.addAstNodeRegionWithAssignmentsTo({...r}),(!e||r.$document)&&l?.$textRegion&&(l.$textRegion.documentURI=this.currentDocument?.uri.toString())),i&&!e&&(l??(l={...r}),l.$sourceText=r.$cstNode?.text),o){l??(l={...r});let u=this.commentProvider.getComment(r);u&&(l.$comment=u.replace(/\r/g,""))}return l??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=s(n=>({offset:n.offset,end:n.end,length:n.length,range:n.range}),"createDocumentSegment");if(e.$cstNode){let n=e.$textRegion=r(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let o=Zu(e.$cstNode,a).map(r);o.length!==0&&(i[a]=o)}),e}}linkNode(e,r,n,i,a,o){for(let[l,u]of Object.entries(e))if(Array.isArray(u))for(let d=0;d{await this.handleException(()=>e.call(r,n,i,a),"An error occurred during validation",i,n)}}async handleException(e,r,n,i){try{await e()}catch(a){if(kr(a))throw a;console.error(`${r}:`,a),a instanceof Error&&a.stack&&console.error(a.stack);let o=a instanceof Error?a.message:String(a);n("error",`${r}: ${o}`,{node:i})}}addEntry(e,r){if(e==="AstNode"){this.entries.add("AstNode",r);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,r)}getChecks(e,r){let n=te(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}registerBeforeDocument(e,r=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",r))}registerAfterDocument(e,r=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",r))}wrapPreparationException(e,r,n){return async(i,a,o,c)=>{await this.handleException(()=>e.call(n,i,a,o,c),r,a,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}getAllValidationCategories(e){return this.knownCategories}};var oy=Object.freeze({validateNode:!0,validateChildren:!0}),co=class{static{s(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async validateDocument(e,r={},n=W.CancellationToken.None){let i=e.parseResult,a=[];if(await De(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(o=>o.data?.code===Yt.LexingError)||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(o=>o.data?.code===Yt.ParsingError))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(o=>o.data?.code===Yt.LinkingError))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(o){if(kr(o))throw o;console.error("An error occurred during validation:",o)}return await De(n),a}processLexingErrors(e,r,n){let i=[...e.lexerErrors,...e.lexerReport?.diagnostics??[]];for(let a of i){let o=a.severity??"error",c={severity:Tl(o),range:{start:{line:a.line-1,character:a.column-1},end:{line:a.line-1,character:a.column+a.length-1}},message:a.message,data:ly(o),source:this.getSource()};r.push(c)}}processParsingErrors(e,r,n){for(let i of e.parserErrors){let a;if(isNaN(i.token.startOffset)){if("previousToken"in i){let o=i.previousToken;if(isNaN(o.startOffset)){let c={line:0,character:0};a={start:c,end:c}}else{let c={line:o.endLine-1,character:o.endColumn};a={start:c,end:c}}}}else a=Di(i.token);if(a){let o={severity:Tl("error"),range:a,message:i.message,data:hi(Yt.ParsingError),source:this.getSource()};r.push(o)}}}processLinkingErrors(e,r,n){for(let i of e.references){let a=i.error;if(a){let o={node:a.info.container,range:i.$refNode?.range,property:a.info.property,index:a.info.index,data:{code:Yt.LinkingError,containerType:a.info.container.$type,property:a.info.property,refText:a.info.reference.$refText}};r.push(this.toDiagnostic("error",a.message,o))}}}async validateAst(e,r,n=W.CancellationToken.None){let i=[],a=s((o,c,l)=>{i.push(this.toDiagnostic(o,c,l))},"acceptor");return await this.validateAstBefore(e,r,a,n),await this.validateAstNodes(e,r,a,n),await this.validateAstAfter(e,r,a,n),i}async validateAstBefore(e,r,n,i=W.CancellationToken.None){let a=this.validationRegistry.checksBefore;for(let o of a)await De(i),await o(e,n,r.categories??[],i)}async validateAstNodes(e,r,n,i=W.CancellationToken.None){if(this.profiler?.isActive("validating")){let a=this.profiler.createTask("validating",this.languageId);a.start();try{let o=$t(e).iterator();for(let c of o){a.startSubTask(c.$type);let l=this.validateSingleNodeOptions(c,r);if(l.validateNode)try{let u=this.validationRegistry.getChecks(c.$type,r.categories);for(let d of u)await d(c,n,i)}finally{a.stopSubTask(c.$type)}l.validateChildren||o.prune()}}finally{a.stop()}}else{let a=$t(e).iterator();for(let o of a){await De(i);let c=this.validateSingleNodeOptions(o,r);if(c.validateNode){let l=this.validationRegistry.getChecks(o.$type,r.categories);for(let u of l)await u(o,n,i)}c.validateChildren||a.prune()}}}validateSingleNodeOptions(e,r){return oy}async validateAstAfter(e,r,n,i=W.CancellationToken.None){let a=this.validationRegistry.checksAfter;for(let o of a)await De(i),await o(e,n,r.categories??[],i)}toDiagnostic(e,r,n){return{message:r,range:cy(n),severity:Tl(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};function cy(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=pa(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=tf(t.node.$cstNode,t.keyword,t.index)),e??(e=t.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}s(cy,"getDiagnosticRange");function Tl(t){switch(t){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+t)}}s(Tl,"toDiagnosticSeverity");function ly(t){switch(t){case"error":return hi(Yt.LexingError);case"warning":return hi(Yt.LexingWarning);case"info":return hi(Yt.LexingInfo);case"hint":return hi(Yt.LexingHint);default:throw new Error("Invalid diagnostic severity: "+t)}}s(ly,"toDiagnosticData");var Yt;(function(t){t.LexingError="lexing-error",t.LexingWarning="lexing-warning",t.LexingInfo="lexing-info",t.LexingHint="lexing-hint",t.ParsingError="parsing-error",t.LinkingError="linking-error"})(Yt||(Yt={}));var lo=class{static{s(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n){let i=n??mt(e);r??(r=this.nameProvider.getName(e));let a=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${a} has no name.`);let o,c=s(()=>o??(o=Kn(this.nameProvider.getNameNode(e)??e.$cstNode)),"nameSegmentGetter");return{node:e,name:r,get nameSegment(){return c()},selectionSegment:Kn(e.$cstNode),type:e.$type,documentUri:i.uri,path:a}}},uo=class{static{s(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=W.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of $t(i))await De(r),on(a).forEach(o=>{o.reference.error||n.push(...this.createInfoDescriptions(o))});return n}createInfoDescriptions(e){let r=e.reference;if(r.error||!r.$refNode)return[];let n=[];Ze(r)&&r.$nodeDescription?n=[r.$nodeDescription]:Gt(r)&&(n=r.items.map(l=>l.$nodeDescription).filter(l=>l!==void 0));let i=mt(e.container).uri,a=this.nodeLocator.getAstNodePath(e.container),o=[],c=Kn(r.$refNode);for(let l of n)o.push({sourceUri:i,sourcePath:a,targetUri:l.documentUri,targetPath:l.path,segment:c,local:je.equals(l.documentUri,i)});return o}};var fo=class{static{s(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let r=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return r+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:r}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return r!==void 0?e+this.indexSeparator+r:e}getAstNode(e,r){return r.split(this.segmentSeparator).reduce((i,a)=>{if(!i||a.length===0)return i;let o=a.indexOf(this.indexSeparator);if(o>0){let c=a.substring(0,o),l=parseInt(a.substring(o+1));return i[c]?.[l]}return i[a]},e)}};var ke={};ae(ke,du(ui(),1));var po=class{static{s(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new wt,this.onConfigurationSectionUpdateEmitter=new ke.Emitter,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){this.workspaceConfig=e.capabilities.workspace?.configuration??!1}async initialized(e){if(this.workspaceConfig){if(e.register){let r=this.serviceRegistry.all;e.register({section:r.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let r=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(r);r.forEach((i,a)=>{this.updateSectionConfiguration(i.section,n[a])})}}this._ready.resolve()}updateConfiguration(e){typeof e.settings!="object"||e.settings===null||Object.entries(e.settings).forEach(([r,n])=>{this.updateSectionConfiguration(r,n),this.onConfigurationSectionUpdateEmitter.fire({section:r,configuration:n})})}updateSectionConfiguration(e,r){this.settings[e]=r}async getConfiguration(e,r){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][r]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}};var Ds=du(bx(),1);var In;(function(t){function e(r){return{dispose:s(async()=>await r(),"dispose")}}s(e,"create"),t.create=e})(In||(In={}));var Ao=class{static{s(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new yt,this.documentPhaseListeners=new yt,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=Z.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.fileSystemProvider=e.workspace.FileSystemProvider,this.workspaceManager=()=>e.workspace.WorkspaceManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=W.CancellationToken.None){for(let i of e){let a=i.uri.toString();if(i.state===Z.Validated){if(typeof r.validation=="boolean"&&r.validation)this.resetToState(i,Z.IndexedReferences);else if(typeof r.validation=="object"){let o=this.findMissingValidationCategories(i,r);o.length>0&&(this.buildState.set(a,{completed:!1,options:{validation:{categories:o}},result:this.buildState.get(a)?.result}),i.state=Z.IndexedReferences)}}else this.buildState.delete(a)}this.currentState=Z.Changed,await this.emitUpdate(e.map(i=>i.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=W.CancellationToken.None){this.currentState=Z.Changed;let i=[];for(let l of r){let u=this.langiumDocuments.deleteDocuments(l);for(let d of u)i.push(d.uri),this.cleanUpDeleted(d)}let a=(await Promise.all(e.map(l=>this.findChangedUris(l)))).flat();for(let l of a){let u=this.langiumDocuments.getDocument(l);u===void 0&&(u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},l),u.state=Z.Changed,this.langiumDocuments.addDocument(u)),this.resetToState(u,Z.Changed)}let o=te(a).concat(i).map(l=>l.toString()).toSet();this.langiumDocuments.all.filter(l=>!o.has(l.uri.toString())&&this.shouldRelink(l,o)).forEach(l=>this.resetToState(l,Z.ComputedScopes)),await this.emitUpdate(a,i),await De(n);let c=this.sortDocuments(this.langiumDocuments.all.filter(l=>l.state=1}findMissingValidationCategories(e,r){let n=this.buildState.get(e.uri.toString()),i=this.serviceRegistry.getServices(e.uri).validation.ValidationRegistry.getAllValidationCategories(e),a=n?.result?.validationChecks?new Set(n?.result?.validationChecks):n?.completed?i:new Set,o=r===void 0||r.validation===!0?i:typeof r.validation=="object"?r.validation.categories??i:[];return te(o).filter(c=>!a.has(c)).toArray()}async findChangedUris(e){if(this.langiumDocuments.getDocument(e)??this.textDocuments?.get(e))return[e];try{let n=await this.fileSystemProvider.stat(e);if(n.isDirectory)return await this.workspaceManager().searchFolder(e);if(this.workspaceManager().shouldIncludeEntry(n))return[e]}catch{}return[]}async emitUpdate(e,r){await Promise.all(this.updateListeners.map(n=>n(e,r)))}sortDocuments(e){let r=0,n=e.length-1;for(;r=0&&!this.hasTextDocument(e[n]);)n--;rn.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),In.create(()=>{let r=this.updateListeners.indexOf(e);r>=0&&this.updateListeners.splice(r,1)})}resetToState(e,r){switch(r){case Z.Changed:case Z.Parsed:this.indexManager.removeContent(e.uri);case Z.IndexedContent:e.localSymbols=void 0;case Z.ComputedScopes:this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e);case Z.Linked:this.indexManager.removeReferences(e.uri);case Z.IndexedReferences:e.diagnostics=void 0,this.buildState.delete(e.uri.toString());case Z.Validated:}e.state>r&&(e.state=r)}cleanUpDeleted(e){this.buildState.delete(e.uri.toString()),this.indexManager.remove(e.uri),e.state=Z.Changed}async buildDocuments(e,r,n){this.prepareBuild(e,r),await this.runCancelable(e,Z.Parsed,n,o=>this.langiumDocumentFactory.update(o,n)),await this.runCancelable(e,Z.IndexedContent,n,o=>this.indexManager.updateContent(o,n)),await this.runCancelable(e,Z.ComputedScopes,n,async o=>{let c=this.serviceRegistry.getServices(o.uri).references.ScopeComputation;o.localSymbols=await c.collectLocalSymbols(o,n)});let i=e.filter(o=>this.shouldLink(o));await this.runCancelable(i,Z.Linked,n,o=>this.serviceRegistry.getServices(o.uri).references.Linker.link(o,n)),await this.runCancelable(i,Z.IndexedReferences,n,o=>this.indexManager.updateReferences(o,n));let a=e.filter(o=>this.shouldValidate(o)?!0:(this.markAsCompleted(o),!1));await this.runCancelable(a,Z.Validated,n,async o=>{await this.validate(o,n),this.markAsCompleted(o)})}markAsCompleted(e){let r=this.buildState.get(e.uri.toString());r&&(r.completed=!0)}prepareBuild(e,r){for(let n of e){let i=n.uri.toString(),a=this.buildState.get(i);(!a||a.completed)&&this.buildState.set(i,{completed:!1,options:r,result:a?.result})}}async runCancelable(e,r,n,i){for(let o of e)o.stateo.state===r);await this.notifyBuildPhase(a,r,n),this.currentState=r}onBuildPhase(e,r){return this.buildPhaseListeners.add(e,r),In.create(()=>{this.buildPhaseListeners.delete(e,r)})}onDocumentPhase(e,r){return this.documentPhaseListeners.add(e,r),In.create(()=>{this.documentPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;return r&&"path"in r?i=r:n=r,n??(n=W.CancellationToken.None),i?this.awaitDocumentState(e,i,n):this.awaitBuilderState(e,n)}awaitDocumentState(e,r,n){let i=this.langiumDocuments.getDocument(r);if(i){if(i.state>=e)return Promise.resolve(r);if(n.isCancellationRequested)return Promise.reject(Ht);if(this.currentState>=e&&e>i.state)return Promise.reject(new Ds.ResponseError(Ds.LSPErrorCodes.RequestFailed,`Document state of ${r.toString()} is ${Z[i.state]}, requiring ${Z[e]}, but workspace state is already ${Z[this.currentState]}. Returning undefined.`))}else return Promise.reject(new Ds.ResponseError(Ds.LSPErrorCodes.ServerCancelled,`No document found for URI: ${r.toString()}`));return new Promise((a,o)=>{let c=this.onDocumentPhase(e,u=>{je.equals(u.uri,r)&&(c.dispose(),l.dispose(),a(u.uri))}),l=n.onCancellationRequested(()=>{c.dispose(),l.dispose(),o(Ht)})})}awaitBuilderState(e,r){return this.currentState>=e?Promise.resolve():r.isCancellationRequested?Promise.reject(Ht):new Promise((n,i)=>{let a=this.onBuildPhase(e,()=>{a.dispose(),o.dispose(),n()}),o=r.onCancellationRequested(()=>{a.dispose(),o.dispose(),i(Ht)})})}async notifyDocumentPhase(e,r,n){let a=this.documentPhaseListeners.get(r).slice();for(let o of a)try{await De(n),await o(e,n)}catch(c){if(!kr(c))throw c}}async notifyBuildPhase(e,r,n){if(e.length===0)return;let a=this.buildPhaseListeners.get(r).slice();for(let o of a)await De(n),await o(e,n)}shouldLink(e){return this.getBuildOptions(e).eagerLinking??!0}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,r){let n=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,i=this.getBuildOptions(e),a=typeof i.validation=="object"?{...i.validation}:{};a.categories=this.findMissingValidationCategories(e,i);let o=await n.validateDocument(e,a,r);e.diagnostics?e.diagnostics.push(...o):e.diagnostics=o;let c=this.buildState.get(e.uri.toString());c&&(c.result??(c.result={}),c.result.validationChecks?c.result.validationChecks=te(c.result.validationChecks).concat(a.categories).distinct().toArray():c.result.validationChecks=[...a.categories])}getBuildOptions(e){return this.buildState.get(e.uri.toString())?.options??{}}};var $o=class{static{s(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new pi,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=mt(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(o=>{je.equals(o.targetUri,n)&&o.targetPath===r&&i.push(o)})}),te(i)}allElements(e,r){let n=te(this.symbolIndex.keys());return r&&(n=n.filter(i=>!r||r.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,r){return r?this.symbolByTypeIndex.get(e,r,()=>(this.symbolIndex.get(e)??[]).filter(a=>this.astReflection.isSubtype(a.type,r))):this.symbolIndex.get(e)??[]}remove(e){this.removeContent(e),this.removeReferences(e)}removeContent(e){let r=e.toString();this.symbolIndex.delete(r),this.symbolByTypeIndex.clear(r)}removeReferences(e){let r=e.toString();this.referenceIndex.delete(r)}async updateContent(e,r=W.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.collectExportedSymbols(e,r),a=e.uri.toString();this.symbolIndex.set(a,i),this.symbolByTypeIndex.clear(a)}async updateReferences(e,r=W.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,r);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,r){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&r.has(i.targetUri.toString())):!1}};var So=class{static{s(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new wt,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){this.folders=e.workspaceFolders??void 0}initialized(e){return this.mutex.write(r=>this.initializeWorkspace(this.folders??[],r))}async initializeWorkspace(e,r=W.CancellationToken.None){let n=await this.performStartup(e);await De(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=[],n=s(o=>{r.push(o),this.langiumDocuments.hasDocument(o.uri)||this.langiumDocuments.addDocument(o)},"collector");await this.loadAdditionalDocuments(e,n);let i=[];await Promise.all(e.map(o=>this.getRootFolder(o)).map(async o=>this.traverseFolder(o,i)));let a=te(i).distinct(o=>o.toString()).filter(o=>!this.langiumDocuments.hasDocument(o));return await this.loadWorkspaceDocuments(a,n),this._ready.resolve(),r}async loadWorkspaceDocuments(e,r){await Promise.all(e.map(async n=>{let i=await this.langiumDocuments.getOrCreateDocument(n);r(i)}))}loadAdditionalDocuments(e,r){return Promise.resolve()}getRootFolder(e){return tt.parse(e.uri)}async traverseFolder(e,r){try{let n=await this.fileSystemProvider.readDirectory(e);await Promise.all(n.map(async i=>{this.shouldIncludeEntry(i)&&(i.isDirectory?await this.traverseFolder(i.uri,r):i.isFile&&r.push(i.uri))}))}catch(n){console.error("Failure to read directory content of "+e.toString(!0),n)}}async searchFolder(e){let r=[];return await this.traverseFolder(e,r),r}shouldIncludeEntry(e){let r=je.basename(e.uri);return r.startsWith(".")?!1:e.isDirectory?r!=="node_modules"&&r!=="out":e.isFile?this.serviceRegistry.hasServices(e.uri):!1}};var ko=class{static{s(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,r,n,i,a){return Vi.buildUnexpectedCharactersMessage(e,r,n,i,a)}buildUnableToPopLexerModeMessage(e){return Vi.buildUnableToPopLexerModeMessage(e)}},Xl={mode:"full"},Ti=class{static{s(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let r=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=$h(r)?Object.values(r):r,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new we(n,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,r=Xl){let n=this.chevrotainLexer.tokenize(e);return{tokens:n.tokens,errors:n.errors,hidden:n.groups.hidden??[],report:this.tokenBuilder.flushLexingReport?.(e)}}toTokenTypeDictionary(e){if($h(e))return e;let r=Sh(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}};function Jl(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}s(Jl,"isTokenTypeArray");function Sh(t){return t&&"modes"in t&&"defaultMode"in t}s(Sh,"isIMultiModeLexerDefinition");function $h(t){return!Jl(t)&&!Sh(t)}s($h,"isTokenTypeDictionary");ls();function Nh(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=ce.create(0,0));let a=Lx(t),o=Ih(n),c=U$({lines:a,position:i,options:o});return W$({index:0,tokens:c,position:i})}s(Nh,"parseJSDoc");function wh(t,e){let r=Ih(e),n=Lx(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],o=r.start,c=r.end;return!!o?.exec(i)&&!!c?.exec(a)}s(wh,"isJSDoc");function Lx(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(Vu)}s(Lx,"getLines");var Px=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,G$=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function U$(t){let e=[],r=t.position.line,n=t.position.character;for(let i=0;i=c.length){if(e.length>0){let d=ce.create(r,n);e.push({type:"break",content:"",range:ie.create(d,d)})}}else{Px.lastIndex=l;let d=Px.exec(c);if(d){let h=d[0],m=d[1],y=ce.create(r,n+l),C=ce.create(r,n+l+h.length);e.push({type:"tag",content:m,range:ie.create(y,C)}),l+=h.length,l=Ch(c,l)}if(l0&&e[e.length-1].type==="break"?e.slice(0,-1):e}s(U$,"tokenize");function q$(t,e,r,n){let i=[];if(t.length===0){let a=ce.create(r,n),o=ce.create(r,n+e.length);i.push({type:"text",content:e,range:ie.create(a,o)})}else{let a=0;for(let c of t){let l=c.index,u=e.substring(a,l);u.length>0&&i.push({type:"text",content:e.substring(a,l),range:ie.create(ce.create(r,a+n),ce.create(r,l+n))});let d=u.length+1,h=c[1];if(i.push({type:"inline-tag",content:h,range:ie.create(ce.create(r,a+d+n),ce.create(r,a+d+h.length+n))}),d+=h.length,c.length===4){d+=c[2].length;let m=c[3];i.push({type:"text",content:m,range:ie.create(ce.create(r,a+d+n),ce.create(r,a+d+m.length+n))})}else i.push({type:"text",content:"",range:ie.create(ce.create(r,a+d+n),ce.create(r,a+d+n))});a=l+c[0].length}let o=e.substring(a);o.length>0&&i.push({type:"text",content:o,range:ie.create(ce.create(r,a+n),ce.create(r,a+n+o.length))})}return i}s(q$,"buildInlineTokens");var z$=/\S/,j$=/\s*$/;function Ch(t,e){let r=t.substring(e).match(z$);return r?e+r.index:t.length}s(Ch,"skipWhitespace");function B$(t){let e=t.match(j$);if(e&&typeof e.index=="number")return e.index}s(B$,"lastCharacter");function W$(t){let e=ce.create(t.position.line,t.position.character);if(t.tokens.length===0)return new Ql([],ie.create(e,e));let r=[];for(;t.indexr.name===e)}getTags(e){return this.getAllTags().filter(r=>r.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let r of this.elements)if(e.length===0)e=r.toString();else{let n=r.toString();e+=Ox(e)+n}return e.trim()}toMarkdown(e){let r="";for(let n of this.elements)if(r.length===0)r=n.toMarkdown(e);else{let i=n.toMarkdown(e);r+=Ox(r)+i}return r.trim()}},Co=class{static{s(this,"JSDocTagImpl")}constructor(e,r,n,i){this.name=e,this.content=r,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,r=this.content.toString();return this.content.inlines.length===1?e=`${e} ${r}`:this.content.inlines.length>1&&(e=`${e} -${r}`),this.inline?`{${e}}`:e}toMarkdown(e){return e?.renderTag?.(this)??this.toMarkdownDefault(e)}toMarkdownDefault(e){let r=this.content.toMarkdown(e);if(this.inline){let a=Y$(this.name,r,e??{});if(typeof a=="string")return a}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${r}`:this.content.inlines.length>1&&(i=`${i} -${r}`),this.inline?`{${i}}`:i}};function Y$(t,e,r){if(t==="linkplain"||t==="linkcode"||t==="link"){let n=e.indexOf(" "),i=e;if(n>0){let o=Ch(e,n);i=e.substring(o),e=e.substring(0,n)}return(t==="linkcode"||t==="link"&&r.link==="code")&&(i=`\`${i}\``),r.renderLink?.(e,i)??X$(e,i)}}s(Y$,"renderInlineTag");function X$(t,e){try{return tt.parse(t,!0),`[${e}](${t})`}catch{return t}}s(X$,"renderLinkDefault");var No=class{static{s(this,"JSDocTextImpl")}constructor(e,r){this.inlines=e,this.range=r}toString(){let e="";for(let r=0;rn.range.start.line&&(e+=` -`)}return e}toMarkdown(e){let r="";for(let n=0;ni.range.start.line&&(r+=` -`)}return r}},Zl=class{static{s(this,"JSDocLineImpl")}constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}};function Ox(t){return t.endsWith(` -`)?` -`:` - -`}s(Ox,"fillNewlines");var wo=class{static{s(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&wh(r))return Nh(r).toMarkdown({renderLink:s((i,a)=>this.documentationLinkRenderer(e,i,a),"renderLink"),renderTag:s(i=>this.documentationTagRenderer(e,i),"renderTag")})}documentationLinkRenderer(e,r,n){let i=this.findNameInLocalSymbols(e,r)??this.findNameInGlobalScope(e,r);if(i&&i.nameSegment){let a=i.nameSegment.range.start.line+1,o=i.nameSegment.range.start.character+1,c=i.documentUri.with({fragment:`L${a},${o}`});return`[${n}](${c.toString()})`}else return}documentationTagRenderer(e,r){}findNameInLocalSymbols(e,r){let i=mt(e).localSymbols;if(!i)return;let a=e;do{let c=i.getStream(a).find(l=>l.name===r);if(c)return c;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}};var Io=class{static{s(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){return ip(e)?e.$comment:qu(e.$cstNode,this.grammarConfig().multilineCommentRules)?.text}};var _o=class{static{s(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,r){return Promise.resolve(this.syncParser.parse(e))}},_h=class{static{s(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new wt,a,o=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(c=>{let l=this.hydrator.hydrate(c);i.resolve(l)}).catch(c=>{i.reject(c)}).finally(()=>{o.dispose(),clearTimeout(a)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new wt;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(Ht)}),this.queue.push(r),r.promise}},bh=class{static{s(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new ke.Emitter,this.deferred=new wt,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(a=>{let o=a;this.deferred.resolve(o),this.unlock()}),n(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(Ht),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new wt,this.sendMessage(e),this.deferred.promise}};var bo=class{static{s(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new W.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=hl();return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n=W.CancellationToken.None){let i=new wt,a={action:r,deferred:i,cancellationToken:n};return e.push(a),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let a=await Promise.resolve().then(()=>r(i));n.resolve(a)}catch(a){kr(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}};var Po=class{static{s(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new di,this.tokenTypeIdMap=new di,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(r=>({...r,message:r.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of $t(e))r.set(i,{});if(e.$cstNode)for(let i of Vn(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let o=[];n[i]=o;for(let c of a)Le(c)?o.push(this.dehydrateAstNode(c,r)):Ze(c)?o.push(this.dehydrateReference(c,r)):o.push(c)}else Le(a)?n[i]=this.dehydrateAstNode(a,r):Ze(a)?n[i]=this.dehydrateReference(a,r):a!==void 0&&(n[i]=a);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return Ys(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),rr(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):sn(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of $t(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Vn(e.$cstNode)){let o;"fullText"in a?(o=new us(a.fullText),i=o):"content"in a?o=new oi:"tokenType"in a&&(o=this.hydrateCstLeafNode(a)),o&&(n.set(a,o),o.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let o=[];n[i]=o;for(let c of a)Le(c)?o.push(this.setParent(this.hydrateAstNode(c,r),n)):Ze(c)?o.push(this.hydrateReference(c,n,i,r)):o.push(c)}else Le(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):Ze(a)?n[i]=this.hydrateReference(a,n,i,r):a!==void 0&&(n[i]=a);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),rr(i))for(let a of e.content){let o=this.hydrateCstNode(a,r,n++);i.content.push(o)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,a=e.startLine,o=e.startColumn,c=e.endLine,l=e.endColumn,u=e.hidden;return new ai(n,i,{start:{line:a,character:o},end:{line:c,character:l}},r,u)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let r of $t(this.grammar))sa(r)&&this.grammarElementIdMap.set(r,e++)}};function Ph(t){return{documentation:{CommentProvider:s(e=>new Io(e),"CommentProvider"),DocumentationProvider:s(e=>new wo(e),"DocumentationProvider")},parser:{AsyncParser:s(e=>new _o(e),"AsyncParser"),GrammarConfig:s(e=>of(e),"GrammarConfig"),LangiumParser:s(e=>Hd(e),"LangiumParser"),CompletionParser:s(e=>Kd(e),"CompletionParser"),ValueConverter:s(()=>new li,"ValueConverter"),TokenBuilder:s(()=>new Jr,"TokenBuilder"),Lexer:s(e=>new Ti(e),"Lexer"),ParserErrorMessageProvider:s(()=>new fs,"ParserErrorMessageProvider"),LexerErrorMessageProvider:s(()=>new ko,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:s(()=>new fo,"AstNodeLocator"),AstNodeDescriptionProvider:s(e=>new lo(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:s(e=>new uo(e),"ReferenceDescriptionProvider")},references:{Linker:s(e=>new Qa(e),"Linker"),NameProvider:s(()=>new Za,"NameProvider"),ScopeProvider:s(e=>new io(e),"ScopeProvider"),ScopeComputation:s(e=>new to(e),"ScopeComputation"),References:s(e=>new eo(e),"References")},serializer:{Hydrator:s(e=>new Po(e),"Hydrator"),JsonSerializer:s(e=>new so(e),"JsonSerializer")},validation:{DocumentValidator:s(e=>new co(e),"DocumentValidator"),ValidationRegistry:s(e=>new oo(e),"ValidationRegistry")},shared:s(()=>t.shared,"shared")}}s(Ph,"createDefaultCoreModule");function Oh(t){return{ServiceRegistry:s(e=>new ao(e),"ServiceRegistry"),workspace:{LangiumDocuments:s(e=>new Ja(e),"LangiumDocuments"),LangiumDocumentFactory:s(e=>new Xa(e),"LangiumDocumentFactory"),DocumentBuilder:s(e=>new Ao(e),"DocumentBuilder"),IndexManager:s(e=>new $o(e),"IndexManager"),WorkspaceManager:s(e=>new So(e),"WorkspaceManager"),FileSystemProvider:s(e=>t.fileSystemProvider(e),"FileSystemProvider"),WorkspaceLock:s(()=>new bo,"WorkspaceLock"),ConfigurationProvider:s(e=>new po(e),"ConfigurationProvider")},profilers:{}}}s(Oh,"createDefaultSharedCoreModule");var Lh;(function(t){t.merge=(e,r)=>Oo(Oo({},e),r)})(Lh||(Lh={}));function eu(t,e,r,n,i,a,o,c,l){let u=[t,e,r,n,i,a,o,c,l].reduce(Oo,{});return jx(u)}s(eu,"inject");var qx=Symbol("isProxy");function zx(t){if(t&&t[qx])for(let e of Object.values(t))zx(e);return t}s(zx,"eagerLoad");function jx(t,e){let r=new Proxy({},{deleteProperty:s(()=>!1,"deleteProperty"),set:s(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:s((n,i)=>i===qx?!0:Ux(n,i,t,e||r),"get"),getOwnPropertyDescriptor:s((n,i)=>(Ux(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:s((n,i)=>i in t,"has"),ownKeys:s(()=>[...Object.getOwnPropertyNames(t)],"ownKeys")});return r}s(jx,"_inject");var Gx=Symbol();function Ux(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable. Cause: "+t[e]);if(t[e]===Gx)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=Gx;try{t[e]=typeof i=="function"?i(n):jx(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}s(Ux,"_resolve");function Oo(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!=null)if(typeof n=="object"){let i=t[r];typeof i=="object"&&i!==null?t[r]=Oo(i,n):t[r]=Oo({},n)}else t[r]=n}return t}s(Oo,"_merge");var Dh={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]},Ri;(function(t){t.REGULAR="indentation-sensitive",t.IGNORE_INDENTATION="ignore-indentation"})(Ri||(Ri={}));var tu=class extends Jr{static{s(this,"IndentationAwareTokenBuilder")}constructor(e=Dh){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options={...Dh,...e},this.indentTokenType=yn({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=yn({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,r){let n=super.buildTokens(e,r);if(!Jl(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:a,whitespaceTokenName:o,ignoreIndentationDelimiters:c}=this.options,l,u,d,h=[];for(let m of n){for(let[y,C]of c)m.name===y?m.PUSH_MODE=Ri.IGNORE_INDENTATION:m.name===C&&(m.POP_MODE=!0);m.name===a?l=m:m.name===i?u=m:m.name===o?d=m:h.push(m)}if(!l||!u||!d)throw new Error("Some indentation/whitespace tokens not found!");return c.length>0?{modes:{[Ri.REGULAR]:[l,u,...h,d],[Ri.IGNORE_INDENTATION]:[...h,d]},defaultMode:Ri.REGULAR}:[l,u,d,...h]}flushLexingReport(e){return{...super.flushLexingReport(e),remainingDedents:this.flushRemainingDedents(e)}}isStartOfLine(e,r){return r===0||`\r -`.includes(e[r-1])}matchWhitespace(e,r,n,i){this.whitespaceRegExp.lastIndex=r;let a=this.whitespaceRegExp.exec(e);return{currIndentLevel:a?.[0].length??0,prevIndentLevel:this.indentationStack.at(-1),match:a}}createIndentationTokenInstance(e,r,n,i){let a=this.getLineNumber(r,i);return Kr(e,n,i,i+n.length,a,a,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:a,prevIndentLevel:o,match:c}=this.matchWhitespace(e,r,n,i);return a<=o?null:(this.indentationStack.push(a),c)}dedentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:a,prevIndentLevel:o,match:c}=this.matchWhitespace(e,r,n,i);if(a>=o)return null;let l=this.indentationStack.lastIndexOf(a);if(l===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${a} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:c?.[0]?.length??0,line:this.getLineNumber(e,r),column:1}),null;let u=this.indentationStack.length-l-1,d=e.substring(0,r).match(/[\r\n]+$/)?.[0].length??1;for(let h=0;h1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},Mh=class extends Ti{static{s(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof tu)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=Xl){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:a,dedentTokenType:o}=this.indentationTokenBuilder,c=a.tokenTypeIdx,l=o.tokenTypeIdx,u=[],d=n.tokens.length-1;for(let h=0;h=0&&u.push(n.tokens[d]),n.tokens=u,n}};var le={};rn(le,{AstUtils:()=>zo,BiMap:()=>di,Cancellation:()=>W,ContextCache:()=>pi,CstUtils:()=>cc,DONE_RESULT:()=>ht,Deferred:()=>wt,Disposable:()=>In,DisposableCache:()=>Rs,DocumentCache:()=>gl,EMPTY_STREAM:()=>an,ErrorWithLocation:()=>Hn,GrammarUtils:()=>hc,MultiMap:()=>yt,OperationCancelled:()=>Ht,Reduction:()=>Si,RegExpUtils:()=>fc,SimpleCache:()=>no,StreamImpl:()=>Ut,TreeStreamImpl:()=>yr,URI:()=>tt,UriTrie:()=>ys,UriUtils:()=>je,WorkspaceCache:()=>xs,assertCondition:()=>dm,assertUnreachable:()=>xr,delayNextTick:()=>tp,interruptAndCheck:()=>De,isOperationCancelled:()=>kr,loadGrammarFromJson:()=>_r,setInterruptionPeriod:()=>ey,startCancelableOperation:()=>hl,stream:()=>te});ae(le,ke);var ru=class{static{s(this,"EmptyFileSystemProvider")}stat(e){throw new Error("No file system is available.")}statSync(e){throw new Error("No file system is available.")}async exists(){return!1}existsSync(){return!1}readBinary(){throw new Error("No file system is available.")}readBinarySync(){throw new Error("No file system is available.")}readFile(){throw new Error("No file system is available.")}readFileSync(){throw new Error("No file system is available.")}async readDirectory(){return[]}readDirectorySync(){return[]}},Fh={fileSystemProvider:s(()=>new ru,"fileSystemProvider")};var J$={Grammar:s(()=>{},"Grammar"),LanguageMetaData:s(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},Q$={AstReflection:s(()=>new Li,"AstReflection")};function Z$(){let t=eu(Oh(Fh),Q$),e=eu(Ph({shared:t}),J$);return t.ServiceRegistry.register(e),e}s(Z$,"createMinimalGrammarServices");function _r(t){let e=Z$(),r=e.serializer.JsonSerializer.deserialize(t);return e.shared.workspace.LangiumDocumentFactory.fromModel(r,tt.parse(`memory:/${r.name??"grammar"}.langium`)),r}s(_r,"loadGrammarFromJson");ae(Ue,le);var Gh=class{static{s(this,"DefaultLangiumProfiler")}constructor(e){this.activeCategories=new Set,this.allCategories=new Set(["validating","parsing","linking"]),this.activeCategories=e??new Set(this.allCategories),this.records=new yt}isActive(e){return this.activeCategories.has(e)}start(...e){e?e.forEach(r=>this.activeCategories.add(r)):this.activeCategories=new Set(this.allCategories)}stop(...e){e?e.forEach(r=>this.activeCategories.delete(r)):this.activeCategories.clear()}createTask(e,r){if(!this.isActive(e))throw new Error(`Category "${e}" is not active.`);return console.log(`Creating profiling task for '${e}.${r}'.`),new nu(n=>this.records.add(e,this.dumpRecord(e,n)),r)}dumpRecord(e,r){console.info(`Task ${e}.${r.identifier} executed in ${r.duration.toFixed(2)}ms and ended at ${r.date.toISOString()}`);let n=[];for(let o of r.entries.keys()){let c=r.entries.get(o),l=c.reduce((u,d)=>u+d);n.push({name:`${r.identifier}.${o}`,count:c.length,duration:l})}let i=r.duration-n.map(o=>o.duration).reduce((o,c)=>o+c,0);n.push({name:r.identifier,count:1,duration:i}),n.sort((o,c)=>c.duration-o.duration);function a(o){return Math.round(100*o)/100}return s(a,"Round"),console.table(n.map(o=>({Element:o.name,Count:o.count,"Self %":a(100*o.duration/r.duration),"Time (ms)":a(o.duration)}))),r}getRecords(...e){return e.length===0?this.records.values():this.records.entries().filter(r=>e.some(n=>n===r[0])).flatMap(r=>r[1])}},nu=class{static{s(this,"ProfilingTask")}constructor(e,r){this.stack=[],this.entries=new yt,this.addRecord=e,this.identifier=r}start(){if(this.startTime!==void 0)throw new Error(`Task "${this.identifier}" is already started.`);this.startTime=performance.now()}stop(){if(this.startTime===void 0)throw new Error(`Task "${this.identifier}" was not started.`);if(this.stack.length!==0)throw new Error(`Task "${this.identifier}" cannot be stopped before sub-task(s): ${this.stack.map(r=>r.id).join(", ")}.`);let e={identifier:this.identifier,date:new Date,duration:performance.now()-this.startTime,entries:this.entries};this.addRecord(e),this.startTime=void 0,this.entries.clear()}startSubTask(e){this.stack.push({id:e,start:performance.now(),content:0})}stopSubTask(e){let r=this.stack.pop();if(!r)throw new Error(`Task "${this.identifier}.${e}" was not started.`);if(r.id!==e)throw new Error(`Sub-Task "${r.id}" is not already stopped.`);let n=performance.now()-r.start;this.stack.at(-1)!==void 0&&(this.stack[this.stack.length-1].content+=n);let i=n-r.content;this.entries.add(e,i)}};var eS=Object.defineProperty,ne=s((t,e)=>eS(t,"name",{value:e,configurable:!0}),"__name"),Vh;(t=>{t.Terminals={ARROW_DIRECTION:/L|R|T|B/,ARROW_GROUP:/\{group\}/,ARROW_INTO:/<|>/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ARCH_ICON:/\([\w-:]+\)/,ARCH_TITLE:/\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[\w ]+)\]/}})(Vh||(Vh={}));var Kh;(t=>{t.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,REFERENCE:/\w([-\./\w]*[-\w])?/}})(Kh||(Kh={}));var Hh;(t=>{t.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(Hh||(Hh={}));var Yh;(t=>{t.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(Yh||(Yh={}));var Xh;(t=>{t.Terminals={NUMBER_PIE:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(Xh||(Xh={}));var Jh;(t=>{t.Terminals={GRATICULE:/circle|polygon/,BOOLEAN:/true|false/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NUMBER:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(Jh||(Jh={}));var Qh;(t=>{t.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,TREEMAP_KEYWORD:/treemap-beta|treemap/,CLASS_DEF:/classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/,STYLE_SEPARATOR:/:::/,SEPARATOR:/:/,COMMA:/,/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,ID2:/[a-zA-Z_][a-zA-Z0-9_]*/,NUMBER2:/[0-9_\.\,]+/,STRING2:/"[^"]*"|'[^']*'/}})(Qh||(Qh={}));var LM={...Vh.Terminals,...Kh.Terminals,...Hh.Terminals,...Yh.Terminals,...Xh.Terminals,...Jh.Terminals,...Qh.Terminals},Zr={$type:"Architecture",accDescr:"accDescr",accTitle:"accTitle",edges:"edges",groups:"groups",junctions:"junctions",services:"services",title:"title"};function tS(t){return fr.isInstance(t,Zr.$type)}s(tS,"isArchitecture");ne(tS,"isArchitecture");var iu={$type:"Axis",label:"label",name:"name"},cu={$type:"Branch",name:"name",order:"order"};function rS(t){return fr.isInstance(t,cu.$type)}s(rS,"isBranch");ne(rS,"isBranch");var Bx={$type:"Checkout",branch:"branch"},su={$type:"CherryPicking",id:"id",parent:"parent",tags:"tags"},Uh={$type:"ClassDefStatement",className:"className",styleText:"styleText"},Us={$type:"Commit",id:"id",message:"message",tags:"tags",type:"type"};function nS(t){return fr.isInstance(t,Us.$type)}s(nS,"isCommit");ne(nS,"isCommit");var au={$type:"Curve",entries:"entries",label:"label",name:"name"},Ms={$type:"Direction",accDescr:"accDescr",accTitle:"accTitle",dir:"dir",statements:"statements",title:"title"},br={$type:"Edge",lhsDir:"lhsDir",lhsGroup:"lhsGroup",lhsId:"lhsId",lhsInto:"lhsInto",rhsDir:"rhsDir",rhsGroup:"rhsGroup",rhsId:"rhsId",rhsInto:"rhsInto",title:"title"},qh={$type:"Entry",axis:"axis",value:"value"},Ei={$type:"GitGraph",accDescr:"accDescr",accTitle:"accTitle",statements:"statements",title:"title"};function iS(t){return fr.isInstance(t,Ei.$type)}s(iS,"isGitGraph");ne(iS,"isGitGraph");var Lo={$type:"Group",icon:"icon",id:"id",in:"in",title:"title"},Mo={$type:"Info",accDescr:"accDescr",accTitle:"accTitle",title:"title"};function sS(t){return fr.isInstance(t,Mo.$type)}s(sS,"isInfo");ne(sS,"isInfo");var Do={$type:"Item",classSelector:"classSelector",name:"name"},zh={$type:"Junction",id:"id",in:"in"},ou={$type:"Leaf",classSelector:"classSelector",name:"name",value:"value"},qs={$type:"Merge",branch:"branch",id:"id",tags:"tags",type:"type"};function aS(t){return fr.isInstance(t,qs.$type)}s(aS,"isMerge");ne(aS,"isMerge");var jh={$type:"Option",name:"name",value:"value"},zs={$type:"Packet",accDescr:"accDescr",accTitle:"accTitle",blocks:"blocks",title:"title"};function oS(t){return fr.isInstance(t,zs.$type)}s(oS,"isPacket");ne(oS,"isPacket");var js={$type:"PacketBlock",bits:"bits",end:"end",label:"label",start:"start"};function cS(t){return fr.isInstance(t,js.$type)}s(cS,"isPacketBlock");ne(cS,"isPacketBlock");var vi={$type:"Pie",accDescr:"accDescr",accTitle:"accTitle",sections:"sections",showData:"showData",title:"title"};function lS(t){return fr.isInstance(t,vi.$type)}s(lS,"isPie");ne(lS,"isPie");var lu={$type:"PieSection",label:"label",value:"value"};function uS(t){return fr.isInstance(t,lu.$type)}s(uS,"isPieSection");ne(uS,"isPieSection");var xi={$type:"Radar",accDescr:"accDescr",accTitle:"accTitle",axes:"axes",curves:"curves",options:"options",title:"title"},Bh={$type:"Section",classSelector:"classSelector",name:"name"},Fs={$type:"Service",icon:"icon",iconText:"iconText",id:"id",in:"in",title:"title"},Gs={$type:"Statement"},Bs={$type:"Treemap",accDescr:"accDescr",accTitle:"accTitle",title:"title",TreemapRows:"TreemapRows"};function fS(t){return fr.isInstance(t,Bs.$type)}s(fS,"isTreemap");ne(fS,"isTreemap");var Wh={$type:"TreemapRow",indent:"indent",item:"item"},Qx=class extends Pn{static{s(this,"MermaidAstReflection")}constructor(){super(...arguments),this.types={Architecture:{name:Zr.$type,properties:{accDescr:{name:Zr.accDescr},accTitle:{name:Zr.accTitle},edges:{name:Zr.edges,defaultValue:[]},groups:{name:Zr.groups,defaultValue:[]},junctions:{name:Zr.junctions,defaultValue:[]},services:{name:Zr.services,defaultValue:[]},title:{name:Zr.title}},superTypes:[]},Axis:{name:iu.$type,properties:{label:{name:iu.label},name:{name:iu.name}},superTypes:[]},Branch:{name:cu.$type,properties:{name:{name:cu.name},order:{name:cu.order}},superTypes:[Gs.$type]},Checkout:{name:Bx.$type,properties:{branch:{name:Bx.branch}},superTypes:[Gs.$type]},CherryPicking:{name:su.$type,properties:{id:{name:su.id},parent:{name:su.parent},tags:{name:su.tags,defaultValue:[]}},superTypes:[Gs.$type]},ClassDefStatement:{name:Uh.$type,properties:{className:{name:Uh.className},styleText:{name:Uh.styleText}},superTypes:[]},Commit:{name:Us.$type,properties:{id:{name:Us.id},message:{name:Us.message},tags:{name:Us.tags,defaultValue:[]},type:{name:Us.type}},superTypes:[Gs.$type]},Curve:{name:au.$type,properties:{entries:{name:au.entries,defaultValue:[]},label:{name:au.label},name:{name:au.name}},superTypes:[]},Direction:{name:Ms.$type,properties:{accDescr:{name:Ms.accDescr},accTitle:{name:Ms.accTitle},dir:{name:Ms.dir},statements:{name:Ms.statements,defaultValue:[]},title:{name:Ms.title}},superTypes:[Ei.$type]},Edge:{name:br.$type,properties:{lhsDir:{name:br.lhsDir},lhsGroup:{name:br.lhsGroup,defaultValue:!1},lhsId:{name:br.lhsId},lhsInto:{name:br.lhsInto,defaultValue:!1},rhsDir:{name:br.rhsDir},rhsGroup:{name:br.rhsGroup,defaultValue:!1},rhsId:{name:br.rhsId},rhsInto:{name:br.rhsInto,defaultValue:!1},title:{name:br.title}},superTypes:[]},Entry:{name:qh.$type,properties:{axis:{name:qh.axis,referenceType:iu.$type},value:{name:qh.value}},superTypes:[]},GitGraph:{name:Ei.$type,properties:{accDescr:{name:Ei.accDescr},accTitle:{name:Ei.accTitle},statements:{name:Ei.statements,defaultValue:[]},title:{name:Ei.title}},superTypes:[]},Group:{name:Lo.$type,properties:{icon:{name:Lo.icon},id:{name:Lo.id},in:{name:Lo.in},title:{name:Lo.title}},superTypes:[]},Info:{name:Mo.$type,properties:{accDescr:{name:Mo.accDescr},accTitle:{name:Mo.accTitle},title:{name:Mo.title}},superTypes:[]},Item:{name:Do.$type,properties:{classSelector:{name:Do.classSelector},name:{name:Do.name}},superTypes:[]},Junction:{name:zh.$type,properties:{id:{name:zh.id},in:{name:zh.in}},superTypes:[]},Leaf:{name:ou.$type,properties:{classSelector:{name:ou.classSelector},name:{name:ou.name},value:{name:ou.value}},superTypes:[Do.$type]},Merge:{name:qs.$type,properties:{branch:{name:qs.branch},id:{name:qs.id},tags:{name:qs.tags,defaultValue:[]},type:{name:qs.type}},superTypes:[Gs.$type]},Option:{name:jh.$type,properties:{name:{name:jh.name},value:{name:jh.value,defaultValue:!1}},superTypes:[]},Packet:{name:zs.$type,properties:{accDescr:{name:zs.accDescr},accTitle:{name:zs.accTitle},blocks:{name:zs.blocks,defaultValue:[]},title:{name:zs.title}},superTypes:[]},PacketBlock:{name:js.$type,properties:{bits:{name:js.bits},end:{name:js.end},label:{name:js.label},start:{name:js.start}},superTypes:[]},Pie:{name:vi.$type,properties:{accDescr:{name:vi.accDescr},accTitle:{name:vi.accTitle},sections:{name:vi.sections,defaultValue:[]},showData:{name:vi.showData,defaultValue:!1},title:{name:vi.title}},superTypes:[]},PieSection:{name:lu.$type,properties:{label:{name:lu.label},value:{name:lu.value}},superTypes:[]},Radar:{name:xi.$type,properties:{accDescr:{name:xi.accDescr},accTitle:{name:xi.accTitle},axes:{name:xi.axes,defaultValue:[]},curves:{name:xi.curves,defaultValue:[]},options:{name:xi.options,defaultValue:[]},title:{name:xi.title}},superTypes:[]},Section:{name:Bh.$type,properties:{classSelector:{name:Bh.classSelector},name:{name:Bh.name}},superTypes:[Do.$type]},Service:{name:Fs.$type,properties:{icon:{name:Fs.icon},iconText:{name:Fs.iconText},id:{name:Fs.id},in:{name:Fs.in},title:{name:Fs.title}},superTypes:[]},Statement:{name:Gs.$type,properties:{},superTypes:[]},Treemap:{name:Bs.$type,properties:{accDescr:{name:Bs.accDescr},accTitle:{name:Bs.accTitle},title:{name:Bs.title},TreemapRows:{name:Bs.TreemapRows,defaultValue:[]}},superTypes:[]},TreemapRow:{name:Wh.$type,properties:{indent:{name:Wh.indent},item:{name:Wh.item}},superTypes:[]}}}static{ne(this,"MermaidAstReflection")}},fr=new Qx,Wx,dS=ne(()=>Wx??(Wx=_r(`{"$type":"Grammar","isDeclared":true,"name":"ArchitectureGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[(?:\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'|[\\\\w ]+)\\\\]/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"ArchitectureGrammarGrammar"),Vx,pS=ne(()=>Vx??(Vx=_r(`{"$type":"Grammar","isDeclared":true,"name":"GitGraphGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"GitGraphGrammarGrammar"),Kx,hS=ne(()=>Kx??(Kx=_r(`{"$type":"Grammar","isDeclared":true,"name":"InfoGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"InfoGrammarGrammar"),Hx,mS=ne(()=>Hx??(Hx=_r(`{"$type":"Grammar","isDeclared":true,"name":"PacketGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PacketGrammarGrammar"),Yx,gS=ne(()=>Yx??(Yx=_r(`{"$type":"Grammar","isDeclared":true,"name":"PieGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PieGrammarGrammar"),Xx,yS=ne(()=>Xx??(Xx=_r(`{"$type":"Grammar","isDeclared":true,"name":"RadarGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}},"isMulti":false}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"types":[]}`)),"RadarGrammarGrammar"),Jx,TS=ne(()=>Jx??(Jx=_r(`{"$type":"Grammar","isDeclared":true,"name":"TreemapGrammar","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammarGrammar"),RS={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},xS={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ES={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},vS={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},AS={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},$S={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},SS={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},MM={AstReflection:ne(()=>new Qx,"AstReflection")},FM={Grammar:ne(()=>dS(),"Grammar"),LanguageMetaData:ne(()=>RS,"LanguageMetaData"),parser:{}},GM={Grammar:ne(()=>pS(),"Grammar"),LanguageMetaData:ne(()=>xS,"LanguageMetaData"),parser:{}},UM={Grammar:ne(()=>hS(),"Grammar"),LanguageMetaData:ne(()=>ES,"LanguageMetaData"),parser:{}},qM={Grammar:ne(()=>mS(),"Grammar"),LanguageMetaData:ne(()=>vS,"LanguageMetaData"),parser:{}},zM={Grammar:ne(()=>gS(),"Grammar"),LanguageMetaData:ne(()=>AS,"LanguageMetaData"),parser:{}},jM={Grammar:ne(()=>yS(),"Grammar"),LanguageMetaData:ne(()=>$S,"LanguageMetaData"),parser:{}},BM={Grammar:ne(()=>TS(),"Grammar"),LanguageMetaData:ne(()=>SS,"LanguageMetaData"),parser:{}},kS=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,CS=/accTitle[\t ]*:([^\n\r]*)/,NS=/title([\t ][^\n\r]*|)/,wS={ACC_DESCR:kS,ACC_TITLE:CS,TITLE:NS},IS=class extends li{static{s(this,"AbstractMermaidValueConverter")}static{ne(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){let n=this.runCommonConverter(t,e,r);return n===void 0&&(n=this.runCustomConverter(t,e,r)),n===void 0?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){let n=wS[t.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` -`)}}},VM=class extends IS{static{s(this,"CommonValueConverter")}static{ne(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},_S=class extends Jr{static{s(this,"AbstractMermaidTokenBuilder")}static{ne(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){let n=super.buildKeywordTokens(t,e,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},HM=class extends _S{static{s(this,"CommonTokenBuilder")}static{ne(this,"CommonTokenBuilder")}};export{Ph as a,Oh as b,eu as c,Fh as d,Ue as e,ne as f,MM as g,FM as h,GM as i,UM as j,qM as k,zM as l,jM as m,BM as n,IS as o,VM as p,_S as q}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-GAX3EE6F.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-GAX3EE6F.mjs.map deleted file mode 100644 index 7a6d2e7..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-GAX3EE6F.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js", "../../../../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js", "../../../../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/index.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/cst-utils.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/syntax-tree.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/stream.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/ast-utils.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/languages/generated/ast.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/grammar-utils.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/errors.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/regexp-utils.ts", "../../../../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.1.1/node_modules/@chevrotain/regexp-to-ast/src/utils.ts", "../../../../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.1.1/node_modules/@chevrotain/regexp-to-ast/src/character-classes.ts", "../../../../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.1.1/node_modules/@chevrotain/regexp-to-ast/src/regexp-parser.ts", "../../../../../node_modules/.pnpm/@chevrotain+regexp-to-ast@11.1.1/node_modules/@chevrotain/regexp-to-ast/src/base-regexp-visitor.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/languages/grammar-config.ts", "../../../../../node_modules/.pnpm/@chevrotain+utils@11.1.1/node_modules/@chevrotain/utils/src/print.ts", "../../../../../node_modules/.pnpm/@chevrotain+utils@11.1.1/node_modules/@chevrotain/utils/src/timer.ts", "../../../../../node_modules/.pnpm/@chevrotain+utils@11.1.1/node_modules/@chevrotain/utils/src/to-fast-properties.ts", "../../../../../node_modules/.pnpm/@chevrotain+gast@11.1.1/node_modules/@chevrotain/gast/src/model.ts", "../../../../../node_modules/.pnpm/@chevrotain+gast@11.1.1/node_modules/@chevrotain/gast/src/visitor.ts", "../../../../../node_modules/.pnpm/@chevrotain+gast@11.1.1/node_modules/@chevrotain/gast/src/helpers.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/rest.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/first.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/constants.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/follow.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/scan/reg_exp_parser.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/scan/reg_exp.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/scan/lexer.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/scan/tokens.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/scan/lexer_errors_public.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/scan/lexer_public.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/scan/tokens_public.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/errors_public.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/resolver.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/interpreter.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/lookahead.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/checks.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/gast/gast_resolver_public.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/exceptions_public.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/recoverable.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/keys.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/grammar/llk_lookahead.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/looksahead.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/cst/cst.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/lang/lang_extensions.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/cst/cst_visitor.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/tree_builder.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/lexer_adapter.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/recognizer_api.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/recognizer_engine.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/error_handler.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/context_assist.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/gast_recorder.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/traits/perf_tracer.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/utils/apply_mixins.ts", "../../../../../node_modules/.pnpm/chevrotain@11.1.1/node_modules/chevrotain/src/parse/parser/parser.ts", "../../../../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.1.1/node_modules/chevrotain-allstar/src/atn.ts", "../../../../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.1.1/node_modules/chevrotain-allstar/src/dfa.ts", "../../../../../node_modules/.pnpm/chevrotain-allstar@0.3.1_chevrotain@11.1.1/node_modules/chevrotain-allstar/src/all-star-lookahead.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/cst-node-builder.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/langium-parser.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/parser-builder-base.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/completion-parser-builder.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/langium-parser-builder.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/token-builder.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/value-converter.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/cancellation.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/promise-utils.ts", "../../../../../node_modules/.pnpm/vscode-languageserver-textdocument@1.0.12/node_modules/vscode-languageserver-textdocument/lib/esm/main.js", "webpack://LIB/node_modules/path-browserify/index.js", "webpack://LIB/webpack/bootstrap", "webpack://LIB/webpack/runtime/define%20property%20getters", "webpack://LIB/webpack/runtime/hasOwnProperty%20shorthand", "webpack://LIB/webpack/runtime/make%20namespace%20object", "webpack://LIB/src/platform.ts", "webpack://LIB/src/uri.ts", "webpack://LIB/src/utils.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/uri-utils.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/documents.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/references/linker.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/references/name-provider.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/references/references.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/collections.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/references/scope-computation.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/references/scope.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/caching.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/references/scope-provider.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/serializer/json-serializer.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/service-registry.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/validation/validation-registry.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/validation/document-validator.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/ast-descriptions.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/ast-node-locator.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/event.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/configuration.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/document-builder.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/disposable.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/index-manager.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/workspace-manager.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/lexer.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/documentation/jsdoc.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/documentation/documentation-provider.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/documentation/comment-provider.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/async-parser.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/workspace-lock.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/serializer/hydrator.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/default-module.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/dependency-injection.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/parser/indentation-aware.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/index.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/file-system-provider.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/utils/grammar-loader.ts", "../../../../../node_modules/.pnpm/langium@4.2.0/node_modules/langium/src/workspace/profiler.ts", "../../../../parser/dist/chunks/mermaid-parser.core/chunk-XZSTWKYB.mjs"], - "sourcesContent": ["/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nexport var DocumentUri;\n(function (DocumentUri) {\n function is(value) {\n return typeof value === 'string';\n }\n DocumentUri.is = is;\n})(DocumentUri || (DocumentUri = {}));\nexport var URI;\n(function (URI) {\n function is(value) {\n return typeof value === 'string';\n }\n URI.is = is;\n})(URI || (URI = {}));\nexport var integer;\n(function (integer) {\n integer.MIN_VALUE = -2147483648;\n integer.MAX_VALUE = 2147483647;\n function is(value) {\n return typeof value === 'number' && integer.MIN_VALUE <= value && value <= integer.MAX_VALUE;\n }\n integer.is = is;\n})(integer || (integer = {}));\nexport var uinteger;\n(function (uinteger) {\n uinteger.MIN_VALUE = 0;\n uinteger.MAX_VALUE = 2147483647;\n function is(value) {\n return typeof value === 'number' && uinteger.MIN_VALUE <= value && value <= uinteger.MAX_VALUE;\n }\n uinteger.is = is;\n})(uinteger || (uinteger = {}));\n/**\n * The Position namespace provides helper functions to work with\n * {@link Position} literals.\n */\nexport var Position;\n(function (Position) {\n /**\n * Creates a new Position literal from the given line and character.\n * @param line The position's line.\n * @param character The position's character.\n */\n function create(line, character) {\n if (line === Number.MAX_VALUE) {\n line = uinteger.MAX_VALUE;\n }\n if (character === Number.MAX_VALUE) {\n character = uinteger.MAX_VALUE;\n }\n return { line, character };\n }\n Position.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Position} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n Position.is = is;\n})(Position || (Position = {}));\n/**\n * The Range namespace provides helper functions to work with\n * {@link Range} literals.\n */\nexport var Range;\n(function (Range) {\n function create(one, two, three, four) {\n if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {\n return { start: Position.create(one, two), end: Position.create(three, four) };\n }\n else if (Position.is(one) && Position.is(two)) {\n return { start: one, end: two };\n }\n else {\n throw new Error(`Range#create called with invalid arguments[${one}, ${two}, ${three}, ${four}]`);\n }\n }\n Range.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Range} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n Range.is = is;\n})(Range || (Range = {}));\n/**\n * The Location namespace provides helper functions to work with\n * {@link Location} literals.\n */\nexport var Location;\n(function (Location) {\n /**\n * Creates a Location literal.\n * @param uri The location's uri.\n * @param range The location's range.\n */\n function create(uri, range) {\n return { uri, range };\n }\n Location.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Location} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n }\n Location.is = is;\n})(Location || (Location = {}));\n/**\n * The LocationLink namespace provides helper functions to work with\n * {@link LocationLink} literals.\n */\nexport var LocationLink;\n(function (LocationLink) {\n /**\n * Creates a LocationLink literal.\n * @param targetUri The definition's uri.\n * @param targetRange The full range of the definition.\n * @param targetSelectionRange The span of the symbol definition at the target.\n * @param originSelectionRange The span of the symbol being defined in the originating source file.\n */\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return { targetUri, targetRange, targetSelectionRange, originSelectionRange };\n }\n LocationLink.create = create;\n /**\n * Checks whether the given literal conforms to the {@link LocationLink} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri)\n && Range.is(candidate.targetSelectionRange)\n && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n LocationLink.is = is;\n})(LocationLink || (LocationLink = {}));\n/**\n * The Color namespace provides helper functions to work with\n * {@link Color} literals.\n */\nexport var Color;\n(function (Color) {\n /**\n * Creates a new Color literal.\n */\n function create(red, green, blue, alpha) {\n return {\n red,\n green,\n blue,\n alpha,\n };\n }\n Color.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Color} interface.\n */\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1)\n && Is.numberRange(candidate.green, 0, 1)\n && Is.numberRange(candidate.blue, 0, 1)\n && Is.numberRange(candidate.alpha, 0, 1);\n }\n Color.is = is;\n})(Color || (Color = {}));\n/**\n * The ColorInformation namespace provides helper functions to work with\n * {@link ColorInformation} literals.\n */\nexport var ColorInformation;\n(function (ColorInformation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(range, color) {\n return {\n range,\n color,\n };\n }\n ColorInformation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ColorInformation} interface.\n */\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color.is(candidate.color);\n }\n ColorInformation.is = is;\n})(ColorInformation || (ColorInformation = {}));\n/**\n * The Color namespace provides helper functions to work with\n * {@link ColorPresentation} literals.\n */\nexport var ColorPresentation;\n(function (ColorPresentation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(label, textEdit, additionalTextEdits) {\n return {\n label,\n textEdit,\n additionalTextEdits,\n };\n }\n ColorPresentation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ColorInformation} interface.\n */\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label)\n && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate))\n && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n ColorPresentation.is = is;\n})(ColorPresentation || (ColorPresentation = {}));\n/**\n * A set of predefined range kinds.\n */\nexport var FoldingRangeKind;\n(function (FoldingRangeKind) {\n /**\n * Folding range for a comment\n */\n FoldingRangeKind.Comment = 'comment';\n /**\n * Folding range for an import or include\n */\n FoldingRangeKind.Imports = 'imports';\n /**\n * Folding range for a region (e.g. `#region`)\n */\n FoldingRangeKind.Region = 'region';\n})(FoldingRangeKind || (FoldingRangeKind = {}));\n/**\n * The folding range namespace provides helper functions to work with\n * {@link FoldingRange} literals.\n */\nexport var FoldingRange;\n(function (FoldingRange) {\n /**\n * Creates a new FoldingRange literal.\n */\n function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) {\n const result = {\n startLine,\n endLine\n };\n if (Is.defined(startCharacter)) {\n result.startCharacter = startCharacter;\n }\n if (Is.defined(endCharacter)) {\n result.endCharacter = endCharacter;\n }\n if (Is.defined(kind)) {\n result.kind = kind;\n }\n if (Is.defined(collapsedText)) {\n result.collapsedText = collapsedText;\n }\n return result;\n }\n FoldingRange.create = create;\n /**\n * Checks whether the given literal conforms to the {@link FoldingRange} interface.\n */\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine)\n && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter))\n && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter))\n && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n FoldingRange.is = is;\n})(FoldingRange || (FoldingRange = {}));\n/**\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\n * {@link DiagnosticRelatedInformation} literals.\n */\nexport var DiagnosticRelatedInformation;\n(function (DiagnosticRelatedInformation) {\n /**\n * Creates a new DiagnosticRelatedInformation literal.\n */\n function create(location, message) {\n return {\n location,\n message\n };\n }\n DiagnosticRelatedInformation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DiagnosticRelatedInformation} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n DiagnosticRelatedInformation.is = is;\n})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\n/**\n * The diagnostic's severity.\n */\nexport var DiagnosticSeverity;\n(function (DiagnosticSeverity) {\n /**\n * Reports an error.\n */\n DiagnosticSeverity.Error = 1;\n /**\n * Reports a warning.\n */\n DiagnosticSeverity.Warning = 2;\n /**\n * Reports an information.\n */\n DiagnosticSeverity.Information = 3;\n /**\n * Reports a hint.\n */\n DiagnosticSeverity.Hint = 4;\n})(DiagnosticSeverity || (DiagnosticSeverity = {}));\n/**\n * The diagnostic tags.\n *\n * @since 3.15.0\n */\nexport var DiagnosticTag;\n(function (DiagnosticTag) {\n /**\n * Unused or unnecessary code.\n *\n * Clients are allowed to render diagnostics with this tag faded out instead of having\n * an error squiggle.\n */\n DiagnosticTag.Unnecessary = 1;\n /**\n * Deprecated or obsolete code.\n *\n * Clients are allowed to rendered diagnostics with this tag strike through.\n */\n DiagnosticTag.Deprecated = 2;\n})(DiagnosticTag || (DiagnosticTag = {}));\n/**\n * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes.\n *\n * @since 3.16.0\n */\nexport var CodeDescription;\n(function (CodeDescription) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.href);\n }\n CodeDescription.is = is;\n})(CodeDescription || (CodeDescription = {}));\n/**\n * The Diagnostic namespace provides helper functions to work with\n * {@link Diagnostic} literals.\n */\nexport var Diagnostic;\n(function (Diagnostic) {\n /**\n * Creates a new Diagnostic literal.\n */\n function create(range, message, severity, code, source, relatedInformation) {\n let result = { range, message };\n if (Is.defined(severity)) {\n result.severity = severity;\n }\n if (Is.defined(code)) {\n result.code = code;\n }\n if (Is.defined(source)) {\n result.source = source;\n }\n if (Is.defined(relatedInformation)) {\n result.relatedInformation = relatedInformation;\n }\n return result;\n }\n Diagnostic.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Diagnostic} interface.\n */\n function is(value) {\n var _a;\n let candidate = value;\n return Is.defined(candidate)\n && Range.is(candidate.range)\n && Is.string(candidate.message)\n && (Is.number(candidate.severity) || Is.undefined(candidate.severity))\n && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code))\n && (Is.undefined(candidate.codeDescription) || (Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)))\n && (Is.string(candidate.source) || Is.undefined(candidate.source))\n && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n Diagnostic.is = is;\n})(Diagnostic || (Diagnostic = {}));\n/**\n * The Command namespace provides helper functions to work with\n * {@link Command} literals.\n */\nexport var Command;\n(function (Command) {\n /**\n * Creates a new Command literal.\n */\n function create(title, command, ...args) {\n let result = { title, command };\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n return result;\n }\n Command.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Command} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n Command.is = is;\n})(Command || (Command = {}));\n/**\n * The TextEdit namespace provides helper function to create replace,\n * insert and delete edits more easily.\n */\nexport var TextEdit;\n(function (TextEdit) {\n /**\n * Creates a replace text edit.\n * @param range The range of text to be replaced.\n * @param newText The new text.\n */\n function replace(range, newText) {\n return { range, newText };\n }\n TextEdit.replace = replace;\n /**\n * Creates an insert text edit.\n * @param position The position to insert the text at.\n * @param newText The text to be inserted.\n */\n function insert(position, newText) {\n return { range: { start: position, end: position }, newText };\n }\n TextEdit.insert = insert;\n /**\n * Creates a delete text edit.\n * @param range The range of text to be deleted.\n */\n function del(range) {\n return { range, newText: '' };\n }\n TextEdit.del = del;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate)\n && Is.string(candidate.newText)\n && Range.is(candidate.range);\n }\n TextEdit.is = is;\n})(TextEdit || (TextEdit = {}));\nexport var ChangeAnnotation;\n(function (ChangeAnnotation) {\n function create(label, needsConfirmation, description) {\n const result = { label };\n if (needsConfirmation !== undefined) {\n result.needsConfirmation = needsConfirmation;\n }\n if (description !== undefined) {\n result.description = description;\n }\n return result;\n }\n ChangeAnnotation.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label) &&\n (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === undefined) &&\n (Is.string(candidate.description) || candidate.description === undefined);\n }\n ChangeAnnotation.is = is;\n})(ChangeAnnotation || (ChangeAnnotation = {}));\nexport var ChangeAnnotationIdentifier;\n(function (ChangeAnnotationIdentifier) {\n function is(value) {\n const candidate = value;\n return Is.string(candidate);\n }\n ChangeAnnotationIdentifier.is = is;\n})(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));\nexport var AnnotatedTextEdit;\n(function (AnnotatedTextEdit) {\n /**\n * Creates an annotated replace text edit.\n *\n * @param range The range of text to be replaced.\n * @param newText The new text.\n * @param annotation The annotation.\n */\n function replace(range, newText, annotation) {\n return { range, newText, annotationId: annotation };\n }\n AnnotatedTextEdit.replace = replace;\n /**\n * Creates an annotated insert text edit.\n *\n * @param position The position to insert the text at.\n * @param newText The text to be inserted.\n * @param annotation The annotation.\n */\n function insert(position, newText, annotation) {\n return { range: { start: position, end: position }, newText, annotationId: annotation };\n }\n AnnotatedTextEdit.insert = insert;\n /**\n * Creates an annotated delete text edit.\n *\n * @param range The range of text to be deleted.\n * @param annotation The annotation.\n */\n function del(range, annotation) {\n return { range, newText: '', annotationId: annotation };\n }\n AnnotatedTextEdit.del = del;\n function is(value) {\n const candidate = value;\n return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n AnnotatedTextEdit.is = is;\n})(AnnotatedTextEdit || (AnnotatedTextEdit = {}));\n/**\n * The TextDocumentEdit namespace provides helper function to create\n * an edit that manipulates a text document.\n */\nexport var TextDocumentEdit;\n(function (TextDocumentEdit) {\n /**\n * Creates a new `TextDocumentEdit`\n */\n function create(textDocument, edits) {\n return { textDocument, edits };\n }\n TextDocumentEdit.create = create;\n function is(value) {\n let candidate = value;\n return Is.defined(candidate)\n && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument)\n && Array.isArray(candidate.edits);\n }\n TextDocumentEdit.is = is;\n})(TextDocumentEdit || (TextDocumentEdit = {}));\nexport var CreateFile;\n(function (CreateFile) {\n function create(uri, options, annotation) {\n let result = {\n kind: 'create',\n uri\n };\n if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n CreateFile.create = create;\n function is(value) {\n let candidate = value;\n return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && (candidate.options === undefined ||\n ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n CreateFile.is = is;\n})(CreateFile || (CreateFile = {}));\nexport var RenameFile;\n(function (RenameFile) {\n function create(oldUri, newUri, options, annotation) {\n let result = {\n kind: 'rename',\n oldUri,\n newUri\n };\n if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n RenameFile.create = create;\n function is(value) {\n let candidate = value;\n return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === undefined ||\n ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n RenameFile.is = is;\n})(RenameFile || (RenameFile = {}));\nexport var DeleteFile;\n(function (DeleteFile) {\n function create(uri, options, annotation) {\n let result = {\n kind: 'delete',\n uri\n };\n if (options !== undefined && (options.recursive !== undefined || options.ignoreIfNotExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n DeleteFile.create = create;\n function is(value) {\n let candidate = value;\n return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && (candidate.options === undefined ||\n ((candidate.options.recursive === undefined || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === undefined || Is.boolean(candidate.options.ignoreIfNotExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n DeleteFile.is = is;\n})(DeleteFile || (DeleteFile = {}));\nexport var WorkspaceEdit;\n(function (WorkspaceEdit) {\n function is(value) {\n let candidate = value;\n return candidate &&\n (candidate.changes !== undefined || candidate.documentChanges !== undefined) &&\n (candidate.documentChanges === undefined || candidate.documentChanges.every((change) => {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n }\n else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n WorkspaceEdit.is = is;\n})(WorkspaceEdit || (WorkspaceEdit = {}));\nclass TextEditChangeImpl {\n constructor(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n insert(position, newText, annotation) {\n let edit;\n let id;\n if (annotation === undefined) {\n edit = TextEdit.insert(position, newText);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.insert(position, newText, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n }\n replace(range, newText, annotation) {\n let edit;\n let id;\n if (annotation === undefined) {\n edit = TextEdit.replace(range, newText);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range, newText, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.replace(range, newText, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n }\n delete(range, annotation) {\n let edit;\n let id;\n if (annotation === undefined) {\n edit = TextEdit.del(range);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.del(range, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n }\n add(edit) {\n this.edits.push(edit);\n }\n all() {\n return this.edits;\n }\n clear() {\n this.edits.splice(0, this.edits.length);\n }\n assertChangeAnnotations(value) {\n if (value === undefined) {\n throw new Error(`Text edit change is not configured to manage change annotations.`);\n }\n }\n}\n/**\n * A helper class\n */\nclass ChangeAnnotations {\n constructor(annotations) {\n this._annotations = annotations === undefined ? Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n all() {\n return this._annotations;\n }\n get size() {\n return this._size;\n }\n manage(idOrAnnotation, annotation) {\n let id;\n if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n id = idOrAnnotation;\n }\n else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n if (this._annotations[id] !== undefined) {\n throw new Error(`Id ${id} is already in use.`);\n }\n if (annotation === undefined) {\n throw new Error(`No annotation provided for id ${id}`);\n }\n this._annotations[id] = annotation;\n this._size++;\n return id;\n }\n nextId() {\n this._counter++;\n return this._counter.toString();\n }\n}\n/**\n * A workspace change helps constructing changes to a workspace.\n */\nexport class WorkspaceChange {\n constructor(workspaceEdit) {\n this._textEditChanges = Object.create(null);\n if (workspaceEdit !== undefined) {\n this._workspaceEdit = workspaceEdit;\n if (workspaceEdit.documentChanges) {\n this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);\n workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n workspaceEdit.documentChanges.forEach((change) => {\n if (TextDocumentEdit.is(change)) {\n const textEditChange = new TextEditChangeImpl(change.edits, this._changeAnnotations);\n this._textEditChanges[change.textDocument.uri] = textEditChange;\n }\n });\n }\n else if (workspaceEdit.changes) {\n Object.keys(workspaceEdit.changes).forEach((key) => {\n const textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n this._textEditChanges[key] = textEditChange;\n });\n }\n }\n else {\n this._workspaceEdit = {};\n }\n }\n /**\n * Returns the underlying {@link WorkspaceEdit} literal\n * use to be returned from a workspace edit operation like rename.\n */\n get edit() {\n this.initDocumentChanges();\n if (this._changeAnnotations !== undefined) {\n if (this._changeAnnotations.size === 0) {\n this._workspaceEdit.changeAnnotations = undefined;\n }\n else {\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n return this._workspaceEdit;\n }\n getTextEditChange(key) {\n if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n const textDocument = { uri: key.uri, version: key.version };\n let result = this._textEditChanges[textDocument.uri];\n if (!result) {\n const edits = [];\n const textDocumentEdit = {\n textDocument,\n edits\n };\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\n result = new TextEditChangeImpl(edits, this._changeAnnotations);\n this._textEditChanges[textDocument.uri] = result;\n }\n return result;\n }\n else {\n this.initChanges();\n if (this._workspaceEdit.changes === undefined) {\n throw new Error('Workspace edit is not configured for normal text edit changes.');\n }\n let result = this._textEditChanges[key];\n if (!result) {\n let edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n return result;\n }\n }\n initDocumentChanges() {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._changeAnnotations = new ChangeAnnotations();\n this._workspaceEdit.documentChanges = [];\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n initChanges() {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._workspaceEdit.changes = Object.create(null);\n }\n }\n createFile(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n let operation;\n let id;\n if (annotation === undefined) {\n operation = CreateFile.create(uri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = CreateFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n }\n renameFile(oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n let operation;\n let id;\n if (annotation === undefined) {\n operation = RenameFile.create(oldUri, newUri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = RenameFile.create(oldUri, newUri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n }\n deleteFile(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n let operation;\n let id;\n if (annotation === undefined) {\n operation = DeleteFile.create(uri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = DeleteFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n }\n}\n/**\n * The TextDocumentIdentifier namespace provides helper functions to work with\n * {@link TextDocumentIdentifier} literals.\n */\nexport var TextDocumentIdentifier;\n(function (TextDocumentIdentifier) {\n /**\n * Creates a new TextDocumentIdentifier literal.\n * @param uri The document's uri.\n */\n function create(uri) {\n return { uri };\n }\n TextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentIdentifier} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n TextDocumentIdentifier.is = is;\n})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\n/**\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link VersionedTextDocumentIdentifier} literals.\n */\nexport var VersionedTextDocumentIdentifier;\n(function (VersionedTextDocumentIdentifier) {\n /**\n * Creates a new VersionedTextDocumentIdentifier literal.\n * @param uri The document's uri.\n * @param version The document's version.\n */\n function create(uri, version) {\n return { uri, version };\n }\n VersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link VersionedTextDocumentIdentifier} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n VersionedTextDocumentIdentifier.is = is;\n})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\n/**\n * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link OptionalVersionedTextDocumentIdentifier} literals.\n */\nexport var OptionalVersionedTextDocumentIdentifier;\n(function (OptionalVersionedTextDocumentIdentifier) {\n /**\n * Creates a new OptionalVersionedTextDocumentIdentifier literal.\n * @param uri The document's uri.\n * @param version The document's version.\n */\n function create(uri, version) {\n return { uri, version };\n }\n OptionalVersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link OptionalVersionedTextDocumentIdentifier} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));\n }\n OptionalVersionedTextDocumentIdentifier.is = is;\n})(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));\n/**\n * The TextDocumentItem namespace provides helper functions to work with\n * {@link TextDocumentItem} literals.\n */\nexport var TextDocumentItem;\n(function (TextDocumentItem) {\n /**\n * Creates a new TextDocumentItem literal.\n * @param uri The document's uri.\n * @param languageId The document's language identifier.\n * @param version The document's version number.\n * @param text The document's text.\n */\n function create(uri, languageId, version, text) {\n return { uri, languageId, version, text };\n }\n TextDocumentItem.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentItem} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);\n }\n TextDocumentItem.is = is;\n})(TextDocumentItem || (TextDocumentItem = {}));\n/**\n * Describes the content type that a client supports in various\n * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\n *\n * Please note that `MarkupKinds` must not start with a `$`. This kinds\n * are reserved for internal usage.\n */\nexport var MarkupKind;\n(function (MarkupKind) {\n /**\n * Plain text is supported as a content format\n */\n MarkupKind.PlainText = 'plaintext';\n /**\n * Markdown is supported as a content format\n */\n MarkupKind.Markdown = 'markdown';\n /**\n * Checks whether the given value is a value of the {@link MarkupKind} type.\n */\n function is(value) {\n const candidate = value;\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\n }\n MarkupKind.is = is;\n})(MarkupKind || (MarkupKind = {}));\nexport var MarkupContent;\n(function (MarkupContent) {\n /**\n * Checks whether the given value conforms to the {@link MarkupContent} interface.\n */\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n MarkupContent.is = is;\n})(MarkupContent || (MarkupContent = {}));\n/**\n * The kind of a completion entry.\n */\nexport var CompletionItemKind;\n(function (CompletionItemKind) {\n CompletionItemKind.Text = 1;\n CompletionItemKind.Method = 2;\n CompletionItemKind.Function = 3;\n CompletionItemKind.Constructor = 4;\n CompletionItemKind.Field = 5;\n CompletionItemKind.Variable = 6;\n CompletionItemKind.Class = 7;\n CompletionItemKind.Interface = 8;\n CompletionItemKind.Module = 9;\n CompletionItemKind.Property = 10;\n CompletionItemKind.Unit = 11;\n CompletionItemKind.Value = 12;\n CompletionItemKind.Enum = 13;\n CompletionItemKind.Keyword = 14;\n CompletionItemKind.Snippet = 15;\n CompletionItemKind.Color = 16;\n CompletionItemKind.File = 17;\n CompletionItemKind.Reference = 18;\n CompletionItemKind.Folder = 19;\n CompletionItemKind.EnumMember = 20;\n CompletionItemKind.Constant = 21;\n CompletionItemKind.Struct = 22;\n CompletionItemKind.Event = 23;\n CompletionItemKind.Operator = 24;\n CompletionItemKind.TypeParameter = 25;\n})(CompletionItemKind || (CompletionItemKind = {}));\n/**\n * Defines whether the insert text in a completion item should be interpreted as\n * plain text or a snippet.\n */\nexport var InsertTextFormat;\n(function (InsertTextFormat) {\n /**\n * The primary text to be inserted is treated as a plain string.\n */\n InsertTextFormat.PlainText = 1;\n /**\n * The primary text to be inserted is treated as a snippet.\n *\n * A snippet can define tab stops and placeholders with `$1`, `$2`\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\n * the end of the snippet. Placeholders with equal identifiers are linked,\n * that is typing in one will update others too.\n *\n * See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax\n */\n InsertTextFormat.Snippet = 2;\n})(InsertTextFormat || (InsertTextFormat = {}));\n/**\n * Completion item tags are extra annotations that tweak the rendering of a completion\n * item.\n *\n * @since 3.15.0\n */\nexport var CompletionItemTag;\n(function (CompletionItemTag) {\n /**\n * Render a completion as obsolete, usually using a strike-out.\n */\n CompletionItemTag.Deprecated = 1;\n})(CompletionItemTag || (CompletionItemTag = {}));\n/**\n * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits.\n *\n * @since 3.16.0\n */\nexport var InsertReplaceEdit;\n(function (InsertReplaceEdit) {\n /**\n * Creates a new insert / replace edit\n */\n function create(newText, insert, replace) {\n return { newText, insert, replace };\n }\n InsertReplaceEdit.create = create;\n /**\n * Checks whether the given literal conforms to the {@link InsertReplaceEdit} interface.\n */\n function is(value) {\n const candidate = value;\n return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n }\n InsertReplaceEdit.is = is;\n})(InsertReplaceEdit || (InsertReplaceEdit = {}));\n/**\n * How whitespace and indentation is handled during completion\n * item insertion.\n *\n * @since 3.16.0\n */\nexport var InsertTextMode;\n(function (InsertTextMode) {\n /**\n * The insertion or replace strings is taken as it is. If the\n * value is multi line the lines below the cursor will be\n * inserted using the indentation defined in the string value.\n * The client will not apply any kind of adjustments to the\n * string.\n */\n InsertTextMode.asIs = 1;\n /**\n * The editor adjusts leading whitespace of new lines so that\n * they match the indentation up to the cursor of the line for\n * which the item is accepted.\n *\n * Consider a line like this: <2tabs><3tabs>foo. Accepting a\n * multi line completion item is indented using 2 tabs and all\n * following lines inserted will be indented using 2 tabs as well.\n */\n InsertTextMode.adjustIndentation = 2;\n})(InsertTextMode || (InsertTextMode = {}));\nexport var CompletionItemLabelDetails;\n(function (CompletionItemLabelDetails) {\n function is(value) {\n const candidate = value;\n return candidate && (Is.string(candidate.detail) || candidate.detail === undefined) &&\n (Is.string(candidate.description) || candidate.description === undefined);\n }\n CompletionItemLabelDetails.is = is;\n})(CompletionItemLabelDetails || (CompletionItemLabelDetails = {}));\n/**\n * The CompletionItem namespace provides functions to deal with\n * completion items.\n */\nexport var CompletionItem;\n(function (CompletionItem) {\n /**\n * Create a completion item and seed it with a label.\n * @param label The completion item's label\n */\n function create(label) {\n return { label };\n }\n CompletionItem.create = create;\n})(CompletionItem || (CompletionItem = {}));\n/**\n * The CompletionList namespace provides functions to deal with\n * completion lists.\n */\nexport var CompletionList;\n(function (CompletionList) {\n /**\n * Creates a new completion list.\n *\n * @param items The completion items.\n * @param isIncomplete The list is not complete.\n */\n function create(items, isIncomplete) {\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\n }\n CompletionList.create = create;\n})(CompletionList || (CompletionList = {}));\nexport var MarkedString;\n(function (MarkedString) {\n /**\n * Creates a marked string from plain text.\n *\n * @param plainText The plain text.\n */\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n }\n MarkedString.fromPlainText = fromPlainText;\n /**\n * Checks whether the given value conforms to the {@link MarkedString} type.\n */\n function is(value) {\n const candidate = value;\n return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value));\n }\n MarkedString.is = is;\n})(MarkedString || (MarkedString = {}));\nexport var Hover;\n(function (Hover) {\n /**\n * Checks whether the given value conforms to the {@link Hover} interface.\n */\n function is(value) {\n let candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) ||\n MarkedString.is(candidate.contents) ||\n Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === undefined || Range.is(value.range));\n }\n Hover.is = is;\n})(Hover || (Hover = {}));\n/**\n * The ParameterInformation namespace provides helper functions to work with\n * {@link ParameterInformation} literals.\n */\nexport var ParameterInformation;\n(function (ParameterInformation) {\n /**\n * Creates a new parameter information literal.\n *\n * @param label A label string.\n * @param documentation A doc string.\n */\n function create(label, documentation) {\n return documentation ? { label, documentation } : { label };\n }\n ParameterInformation.create = create;\n})(ParameterInformation || (ParameterInformation = {}));\n/**\n * The SignatureInformation namespace provides helper functions to work with\n * {@link SignatureInformation} literals.\n */\nexport var SignatureInformation;\n(function (SignatureInformation) {\n function create(label, documentation, ...parameters) {\n let result = { label };\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n }\n else {\n result.parameters = [];\n }\n return result;\n }\n SignatureInformation.create = create;\n})(SignatureInformation || (SignatureInformation = {}));\n/**\n * A document highlight kind.\n */\nexport var DocumentHighlightKind;\n(function (DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */\n DocumentHighlightKind.Text = 1;\n /**\n * Read-access of a symbol, like reading a variable.\n */\n DocumentHighlightKind.Read = 2;\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n DocumentHighlightKind.Write = 3;\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\n/**\n * DocumentHighlight namespace to provide helper functions to work with\n * {@link DocumentHighlight} literals.\n */\nexport var DocumentHighlight;\n(function (DocumentHighlight) {\n /**\n * Create a DocumentHighlight object.\n * @param range The range the highlight applies to.\n * @param kind The highlight kind\n */\n function create(range, kind) {\n let result = { range };\n if (Is.number(kind)) {\n result.kind = kind;\n }\n return result;\n }\n DocumentHighlight.create = create;\n})(DocumentHighlight || (DocumentHighlight = {}));\n/**\n * A symbol kind.\n */\nexport var SymbolKind;\n(function (SymbolKind) {\n SymbolKind.File = 1;\n SymbolKind.Module = 2;\n SymbolKind.Namespace = 3;\n SymbolKind.Package = 4;\n SymbolKind.Class = 5;\n SymbolKind.Method = 6;\n SymbolKind.Property = 7;\n SymbolKind.Field = 8;\n SymbolKind.Constructor = 9;\n SymbolKind.Enum = 10;\n SymbolKind.Interface = 11;\n SymbolKind.Function = 12;\n SymbolKind.Variable = 13;\n SymbolKind.Constant = 14;\n SymbolKind.String = 15;\n SymbolKind.Number = 16;\n SymbolKind.Boolean = 17;\n SymbolKind.Array = 18;\n SymbolKind.Object = 19;\n SymbolKind.Key = 20;\n SymbolKind.Null = 21;\n SymbolKind.EnumMember = 22;\n SymbolKind.Struct = 23;\n SymbolKind.Event = 24;\n SymbolKind.Operator = 25;\n SymbolKind.TypeParameter = 26;\n})(SymbolKind || (SymbolKind = {}));\n/**\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\n *\n * @since 3.16\n */\nexport var SymbolTag;\n(function (SymbolTag) {\n /**\n * Render a symbol as obsolete, usually using a strike-out.\n */\n SymbolTag.Deprecated = 1;\n})(SymbolTag || (SymbolTag = {}));\nexport var SymbolInformation;\n(function (SymbolInformation) {\n /**\n * Creates a new symbol information literal.\n *\n * @param name The name of the symbol.\n * @param kind The kind of the symbol.\n * @param range The range of the location of the symbol.\n * @param uri The resource of the location of symbol.\n * @param containerName The name of the symbol containing the symbol.\n */\n function create(name, kind, range, uri, containerName) {\n let result = {\n name,\n kind,\n location: { uri, range }\n };\n if (containerName) {\n result.containerName = containerName;\n }\n return result;\n }\n SymbolInformation.create = create;\n})(SymbolInformation || (SymbolInformation = {}));\nexport var WorkspaceSymbol;\n(function (WorkspaceSymbol) {\n /**\n * Create a new workspace symbol.\n *\n * @param name The name of the symbol.\n * @param kind The kind of the symbol.\n * @param uri The resource of the location of the symbol.\n * @param range An options range of the location.\n * @returns A WorkspaceSymbol.\n */\n function create(name, kind, uri, range) {\n return range !== undefined\n ? { name, kind, location: { uri, range } }\n : { name, kind, location: { uri } };\n }\n WorkspaceSymbol.create = create;\n})(WorkspaceSymbol || (WorkspaceSymbol = {}));\nexport var DocumentSymbol;\n(function (DocumentSymbol) {\n /**\n * Creates a new symbol information literal.\n *\n * @param name The name of the symbol.\n * @param detail The detail of the symbol.\n * @param kind The kind of the symbol.\n * @param range The range of the symbol.\n * @param selectionRange The selectionRange of the symbol.\n * @param children Children of the symbol.\n */\n function create(name, detail, kind, range, selectionRange, children) {\n let result = {\n name,\n detail,\n kind,\n range,\n selectionRange\n };\n if (children !== undefined) {\n result.children = children;\n }\n return result;\n }\n DocumentSymbol.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DocumentSymbol} interface.\n */\n function is(value) {\n let candidate = value;\n return candidate &&\n Is.string(candidate.name) && Is.number(candidate.kind) &&\n Range.is(candidate.range) && Range.is(candidate.selectionRange) &&\n (candidate.detail === undefined || Is.string(candidate.detail)) &&\n (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) &&\n (candidate.children === undefined || Array.isArray(candidate.children)) &&\n (candidate.tags === undefined || Array.isArray(candidate.tags));\n }\n DocumentSymbol.is = is;\n})(DocumentSymbol || (DocumentSymbol = {}));\n/**\n * A set of predefined code action kinds\n */\nexport var CodeActionKind;\n(function (CodeActionKind) {\n /**\n * Empty kind.\n */\n CodeActionKind.Empty = '';\n /**\n * Base kind for quickfix actions: 'quickfix'\n */\n CodeActionKind.QuickFix = 'quickfix';\n /**\n * Base kind for refactoring actions: 'refactor'\n */\n CodeActionKind.Refactor = 'refactor';\n /**\n * Base kind for refactoring extraction actions: 'refactor.extract'\n *\n * Example extract actions:\n *\n * - Extract method\n * - Extract function\n * - Extract variable\n * - Extract interface from class\n * - ...\n */\n CodeActionKind.RefactorExtract = 'refactor.extract';\n /**\n * Base kind for refactoring inline actions: 'refactor.inline'\n *\n * Example inline actions:\n *\n * - Inline function\n * - Inline variable\n * - Inline constant\n * - ...\n */\n CodeActionKind.RefactorInline = 'refactor.inline';\n /**\n * Base kind for refactoring rewrite actions: 'refactor.rewrite'\n *\n * Example rewrite actions:\n *\n * - Convert JavaScript function to class\n * - Add or remove parameter\n * - Encapsulate field\n * - Make method static\n * - Move method to base class\n * - ...\n */\n CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n /**\n * Base kind for source actions: `source`\n *\n * Source code actions apply to the entire file.\n */\n CodeActionKind.Source = 'source';\n /**\n * Base kind for an organize imports source action: `source.organizeImports`\n */\n CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n /**\n * Base kind for auto-fix source actions: `source.fixAll`.\n *\n * Fix all actions automatically fix errors that have a clear fix that do not require user input.\n * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\n *\n * @since 3.15.0\n */\n CodeActionKind.SourceFixAll = 'source.fixAll';\n})(CodeActionKind || (CodeActionKind = {}));\n/**\n * The reason why code actions were requested.\n *\n * @since 3.17.0\n */\nexport var CodeActionTriggerKind;\n(function (CodeActionTriggerKind) {\n /**\n * Code actions were explicitly requested by the user or by an extension.\n */\n CodeActionTriggerKind.Invoked = 1;\n /**\n * Code actions were requested automatically.\n *\n * This typically happens when current selection in a file changes, but can\n * also be triggered when file content changes.\n */\n CodeActionTriggerKind.Automatic = 2;\n})(CodeActionTriggerKind || (CodeActionTriggerKind = {}));\n/**\n * The CodeActionContext namespace provides helper functions to work with\n * {@link CodeActionContext} literals.\n */\nexport var CodeActionContext;\n(function (CodeActionContext) {\n /**\n * Creates a new CodeActionContext literal.\n */\n function create(diagnostics, only, triggerKind) {\n let result = { diagnostics };\n if (only !== undefined && only !== null) {\n result.only = only;\n }\n if (triggerKind !== undefined && triggerKind !== null) {\n result.triggerKind = triggerKind;\n }\n return result;\n }\n CodeActionContext.create = create;\n /**\n * Checks whether the given literal conforms to the {@link CodeActionContext} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is)\n && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string))\n && (candidate.triggerKind === undefined || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic);\n }\n CodeActionContext.is = is;\n})(CodeActionContext || (CodeActionContext = {}));\nexport var CodeAction;\n(function (CodeAction) {\n function create(title, kindOrCommandOrEdit, kind) {\n let result = { title };\n let checkKind = true;\n if (typeof kindOrCommandOrEdit === 'string') {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n }\n else if (Command.is(kindOrCommandOrEdit)) {\n result.command = kindOrCommandOrEdit;\n }\n else {\n result.edit = kindOrCommandOrEdit;\n }\n if (checkKind && kind !== undefined) {\n result.kind = kind;\n }\n return result;\n }\n CodeAction.create = create;\n function is(value) {\n let candidate = value;\n return candidate && Is.string(candidate.title) &&\n (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\n (candidate.kind === undefined || Is.string(candidate.kind)) &&\n (candidate.edit !== undefined || candidate.command !== undefined) &&\n (candidate.command === undefined || Command.is(candidate.command)) &&\n (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) &&\n (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit));\n }\n CodeAction.is = is;\n})(CodeAction || (CodeAction = {}));\n/**\n * The CodeLens namespace provides helper functions to work with\n * {@link CodeLens} literals.\n */\nexport var CodeLens;\n(function (CodeLens) {\n /**\n * Creates a new CodeLens literal.\n */\n function create(range, data) {\n let result = { range };\n if (Is.defined(data)) {\n result.data = data;\n }\n return result;\n }\n CodeLens.create = create;\n /**\n * Checks whether the given literal conforms to the {@link CodeLens} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n }\n CodeLens.is = is;\n})(CodeLens || (CodeLens = {}));\n/**\n * The FormattingOptions namespace provides helper functions to work with\n * {@link FormattingOptions} literals.\n */\nexport var FormattingOptions;\n(function (FormattingOptions) {\n /**\n * Creates a new FormattingOptions literal.\n */\n function create(tabSize, insertSpaces) {\n return { tabSize, insertSpaces };\n }\n FormattingOptions.create = create;\n /**\n * Checks whether the given literal conforms to the {@link FormattingOptions} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n FormattingOptions.is = is;\n})(FormattingOptions || (FormattingOptions = {}));\n/**\n * The DocumentLink namespace provides helper functions to work with\n * {@link DocumentLink} literals.\n */\nexport var DocumentLink;\n(function (DocumentLink) {\n /**\n * Creates a new DocumentLink literal.\n */\n function create(range, target, data) {\n return { range, target, data };\n }\n DocumentLink.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DocumentLink} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n }\n DocumentLink.is = is;\n})(DocumentLink || (DocumentLink = {}));\n/**\n * The SelectionRange namespace provides helper function to work with\n * SelectionRange literals.\n */\nexport var SelectionRange;\n(function (SelectionRange) {\n /**\n * Creates a new SelectionRange\n * @param range the range.\n * @param parent an optional parent.\n */\n function create(range, parent) {\n return { range, parent };\n }\n SelectionRange.create = create;\n function is(value) {\n let candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\n }\n SelectionRange.is = is;\n})(SelectionRange || (SelectionRange = {}));\n/**\n * A set of predefined token types. This set is not fixed\n * an clients can specify additional token types via the\n * corresponding client capabilities.\n *\n * @since 3.16.0\n */\nexport var SemanticTokenTypes;\n(function (SemanticTokenTypes) {\n SemanticTokenTypes[\"namespace\"] = \"namespace\";\n /**\n * Represents a generic type. Acts as a fallback for types which can't be mapped to\n * a specific type like class or enum.\n */\n SemanticTokenTypes[\"type\"] = \"type\";\n SemanticTokenTypes[\"class\"] = \"class\";\n SemanticTokenTypes[\"enum\"] = \"enum\";\n SemanticTokenTypes[\"interface\"] = \"interface\";\n SemanticTokenTypes[\"struct\"] = \"struct\";\n SemanticTokenTypes[\"typeParameter\"] = \"typeParameter\";\n SemanticTokenTypes[\"parameter\"] = \"parameter\";\n SemanticTokenTypes[\"variable\"] = \"variable\";\n SemanticTokenTypes[\"property\"] = \"property\";\n SemanticTokenTypes[\"enumMember\"] = \"enumMember\";\n SemanticTokenTypes[\"event\"] = \"event\";\n SemanticTokenTypes[\"function\"] = \"function\";\n SemanticTokenTypes[\"method\"] = \"method\";\n SemanticTokenTypes[\"macro\"] = \"macro\";\n SemanticTokenTypes[\"keyword\"] = \"keyword\";\n SemanticTokenTypes[\"modifier\"] = \"modifier\";\n SemanticTokenTypes[\"comment\"] = \"comment\";\n SemanticTokenTypes[\"string\"] = \"string\";\n SemanticTokenTypes[\"number\"] = \"number\";\n SemanticTokenTypes[\"regexp\"] = \"regexp\";\n SemanticTokenTypes[\"operator\"] = \"operator\";\n /**\n * @since 3.17.0\n */\n SemanticTokenTypes[\"decorator\"] = \"decorator\";\n})(SemanticTokenTypes || (SemanticTokenTypes = {}));\n/**\n * A set of predefined token modifiers. This set is not fixed\n * an clients can specify additional token types via the\n * corresponding client capabilities.\n *\n * @since 3.16.0\n */\nexport var SemanticTokenModifiers;\n(function (SemanticTokenModifiers) {\n SemanticTokenModifiers[\"declaration\"] = \"declaration\";\n SemanticTokenModifiers[\"definition\"] = \"definition\";\n SemanticTokenModifiers[\"readonly\"] = \"readonly\";\n SemanticTokenModifiers[\"static\"] = \"static\";\n SemanticTokenModifiers[\"deprecated\"] = \"deprecated\";\n SemanticTokenModifiers[\"abstract\"] = \"abstract\";\n SemanticTokenModifiers[\"async\"] = \"async\";\n SemanticTokenModifiers[\"modification\"] = \"modification\";\n SemanticTokenModifiers[\"documentation\"] = \"documentation\";\n SemanticTokenModifiers[\"defaultLibrary\"] = \"defaultLibrary\";\n})(SemanticTokenModifiers || (SemanticTokenModifiers = {}));\n/**\n * @since 3.16.0\n */\nexport var SemanticTokens;\n(function (SemanticTokens) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (candidate.resultId === undefined || typeof candidate.resultId === 'string') &&\n Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number');\n }\n SemanticTokens.is = is;\n})(SemanticTokens || (SemanticTokens = {}));\n/**\n * The InlineValueText namespace provides functions to deal with InlineValueTexts.\n *\n * @since 3.17.0\n */\nexport var InlineValueText;\n(function (InlineValueText) {\n /**\n * Creates a new InlineValueText literal.\n */\n function create(range, text) {\n return { range, text };\n }\n InlineValueText.create = create;\n function is(value) {\n const candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n }\n InlineValueText.is = is;\n})(InlineValueText || (InlineValueText = {}));\n/**\n * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups.\n *\n * @since 3.17.0\n */\nexport var InlineValueVariableLookup;\n(function (InlineValueVariableLookup) {\n /**\n * Creates a new InlineValueText literal.\n */\n function create(range, variableName, caseSensitiveLookup) {\n return { range, variableName, caseSensitiveLookup };\n }\n InlineValueVariableLookup.create = create;\n function is(value) {\n const candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup)\n && (Is.string(candidate.variableName) || candidate.variableName === undefined);\n }\n InlineValueVariableLookup.is = is;\n})(InlineValueVariableLookup || (InlineValueVariableLookup = {}));\n/**\n * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression.\n *\n * @since 3.17.0\n */\nexport var InlineValueEvaluatableExpression;\n(function (InlineValueEvaluatableExpression) {\n /**\n * Creates a new InlineValueEvaluatableExpression literal.\n */\n function create(range, expression) {\n return { range, expression };\n }\n InlineValueEvaluatableExpression.create = create;\n function is(value) {\n const candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range)\n && (Is.string(candidate.expression) || candidate.expression === undefined);\n }\n InlineValueEvaluatableExpression.is = is;\n})(InlineValueEvaluatableExpression || (InlineValueEvaluatableExpression = {}));\n/**\n * The InlineValueContext namespace provides helper functions to work with\n * {@link InlineValueContext} literals.\n *\n * @since 3.17.0\n */\nexport var InlineValueContext;\n(function (InlineValueContext) {\n /**\n * Creates a new InlineValueContext literal.\n */\n function create(frameId, stoppedLocation) {\n return { frameId, stoppedLocation };\n }\n InlineValueContext.create = create;\n /**\n * Checks whether the given literal conforms to the {@link InlineValueContext} interface.\n */\n function is(value) {\n const candidate = value;\n return Is.defined(candidate) && Range.is(value.stoppedLocation);\n }\n InlineValueContext.is = is;\n})(InlineValueContext || (InlineValueContext = {}));\n/**\n * Inlay hint kinds.\n *\n * @since 3.17.0\n */\nexport var InlayHintKind;\n(function (InlayHintKind) {\n /**\n * An inlay hint that for a type annotation.\n */\n InlayHintKind.Type = 1;\n /**\n * An inlay hint that is for a parameter.\n */\n InlayHintKind.Parameter = 2;\n function is(value) {\n return value === 1 || value === 2;\n }\n InlayHintKind.is = is;\n})(InlayHintKind || (InlayHintKind = {}));\nexport var InlayHintLabelPart;\n(function (InlayHintLabelPart) {\n function create(value) {\n return { value };\n }\n InlayHintLabelPart.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate)\n && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip))\n && (candidate.location === undefined || Location.is(candidate.location))\n && (candidate.command === undefined || Command.is(candidate.command));\n }\n InlayHintLabelPart.is = is;\n})(InlayHintLabelPart || (InlayHintLabelPart = {}));\nexport var InlayHint;\n(function (InlayHint) {\n function create(position, label, kind) {\n const result = { position, label };\n if (kind !== undefined) {\n result.kind = kind;\n }\n return result;\n }\n InlayHint.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.position)\n && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is))\n && (candidate.kind === undefined || InlayHintKind.is(candidate.kind))\n && (candidate.textEdits === undefined) || Is.typedArray(candidate.textEdits, TextEdit.is)\n && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip))\n && (candidate.paddingLeft === undefined || Is.boolean(candidate.paddingLeft))\n && (candidate.paddingRight === undefined || Is.boolean(candidate.paddingRight));\n }\n InlayHint.is = is;\n})(InlayHint || (InlayHint = {}));\nexport var StringValue;\n(function (StringValue) {\n function createSnippet(value) {\n return { kind: 'snippet', value };\n }\n StringValue.createSnippet = createSnippet;\n})(StringValue || (StringValue = {}));\nexport var InlineCompletionItem;\n(function (InlineCompletionItem) {\n function create(insertText, filterText, range, command) {\n return { insertText, filterText, range, command };\n }\n InlineCompletionItem.create = create;\n})(InlineCompletionItem || (InlineCompletionItem = {}));\nexport var InlineCompletionList;\n(function (InlineCompletionList) {\n function create(items) {\n return { items };\n }\n InlineCompletionList.create = create;\n})(InlineCompletionList || (InlineCompletionList = {}));\n/**\n * Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.\n *\n * @since 3.18.0\n * @proposed\n */\nexport var InlineCompletionTriggerKind;\n(function (InlineCompletionTriggerKind) {\n /**\n * Completion was triggered explicitly by a user gesture.\n */\n InlineCompletionTriggerKind.Invoked = 0;\n /**\n * Completion was triggered automatically while editing.\n */\n InlineCompletionTriggerKind.Automatic = 1;\n})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\nexport var SelectedCompletionInfo;\n(function (SelectedCompletionInfo) {\n function create(range, text) {\n return { range, text };\n }\n SelectedCompletionInfo.create = create;\n})(SelectedCompletionInfo || (SelectedCompletionInfo = {}));\nexport var InlineCompletionContext;\n(function (InlineCompletionContext) {\n function create(triggerKind, selectedCompletionInfo) {\n return { triggerKind, selectedCompletionInfo };\n }\n InlineCompletionContext.create = create;\n})(InlineCompletionContext || (InlineCompletionContext = {}));\nexport var WorkspaceFolder;\n(function (WorkspaceFolder) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n }\n WorkspaceFolder.is = is;\n})(WorkspaceFolder || (WorkspaceFolder = {}));\nexport const EOL = ['\\n', '\\r\\n', '\\r'];\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new ITextDocument literal from the given uri and content.\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's version.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ITextDocument} interface.\n */\n function is(value) {\n let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount)\n && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n TextDocument.is = is;\n function applyEdits(document, edits) {\n let text = document.getText();\n let sortedEdits = mergeSort(edits, (a, b) => {\n let diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = text.length;\n for (let i = sortedEdits.length - 1; i >= 0; i--) {\n let e = sortedEdits[i];\n let startOffset = document.offsetAt(e.range.start);\n let endOffset = document.offsetAt(e.range.end);\n if (endOffset <= lastModifiedOffset) {\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n }\n else {\n throw new Error('Overlapping edit');\n }\n lastModifiedOffset = startOffset;\n }\n return text;\n }\n TextDocument.applyEdits = applyEdits;\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n const p = (data.length / 2) | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n let ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n }\n})(TextDocument || (TextDocument = {}));\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nclass FullTextDocument {\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n let start = this.offsetAt(range.start);\n let end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = undefined;\n }\n getLineOffsets() {\n if (this._lineOffsets === undefined) {\n let lineOffsets = [];\n let text = this._content;\n let isLineStart = true;\n for (let i = 0; i < text.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n let ch = text.charAt(i);\n isLineStart = (ch === '\\r' || ch === '\\n');\n if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n i++;\n }\n }\n if (isLineStart && text.length > 0) {\n lineOffsets.push(text.length);\n }\n this._lineOffsets = lineOffsets;\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n let lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return Position.create(0, offset);\n }\n while (low < high) {\n let mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n let line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n }\n offsetAt(position) {\n let lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n let lineOffset = lineOffsets[position.line];\n let nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n}\nvar Is;\n(function (Is) {\n const toString = Object.prototype.toString;\n function defined(value) {\n return typeof value !== 'undefined';\n }\n Is.defined = defined;\n function undefined(value) {\n return typeof value === 'undefined';\n }\n Is.undefined = undefined;\n function boolean(value) {\n return value === true || value === false;\n }\n Is.boolean = boolean;\n function string(value) {\n return toString.call(value) === '[object String]';\n }\n Is.string = string;\n function number(value) {\n return toString.call(value) === '[object Number]';\n }\n Is.number = number;\n function numberRange(value, min, max) {\n return toString.call(value) === '[object Number]' && min <= value && value <= max;\n }\n Is.numberRange = numberRange;\n function integer(value) {\n return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647;\n }\n Is.integer = integer;\n function uinteger(value) {\n return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647;\n }\n Is.uinteger = uinteger;\n function func(value) {\n return toString.call(value) === '[object Function]';\n }\n Is.func = func;\n function objectLiteral(value) {\n // Strictly speaking class instances pass this check as well. Since the LSP\n // doesn't use classes we ignore this for now. If we do we need to add something\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n return value !== null && typeof value === 'object';\n }\n Is.objectLiteral = objectLiteral;\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n Is.typedArray = typedArray;\n})(Is || (Is = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event || (exports.Event = Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n // Defined by JSON RPC\n ErrorCodes.ParseError = -32700;\n ErrorCodes.InvalidRequest = -32600;\n ErrorCodes.MethodNotFound = -32601;\n ErrorCodes.InvalidParams = -32602;\n ErrorCodes.InternalError = -32603;\n /**\n * This is the start range of JSON RPC reserved error codes.\n * It doesn't denote a real error code. No application error codes should\n * be defined between the start and end range. For backwards\n * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n * are left in the range.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n /** @deprecated use jsonrpcReservedErrorRangeStart */\n ErrorCodes.serverErrorStart = -32099;\n /**\n * An error occurred when write a message to the transport layer.\n */\n ErrorCodes.MessageWriteError = -32099;\n /**\n * An error occurred when reading a message from the transport layer.\n */\n ErrorCodes.MessageReadError = -32098;\n /**\n * The connection got disposed or lost and all pending responses got\n * rejected.\n */\n ErrorCodes.PendingResponseRejected = -32097;\n /**\n * The connection is inactive and a use of it failed.\n */\n ErrorCodes.ConnectionInactive = -32096;\n /**\n * Error code indicating that a server received a notification or\n * request before the server has received the `initialize` request.\n */\n ErrorCodes.ServerNotInitialized = -32002;\n ErrorCodes.UnknownErrorCode = -32001;\n /**\n * This is the end range of JSON RPC reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n /** @deprecated use jsonrpcReservedErrorRangeEnd */\n ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n toJson() {\n const result = {\n code: this.code,\n message: this.message\n };\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n /**\n * Tests if the given message is a request message\n */\n function isRequest(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n }\n Message.isRequest = isRequest;\n /**\n * Tests if the given message is a notification message\n */\n function isNotification(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n }\n Message.isNotification = isNotification;\n /**\n * Tests if the given message is a response message\n */\n function isResponse(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n }\n Message.isResponse = isResponse;\n})(Message || (exports.Message = Message = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n Touch.None = 0;\n Touch.First = 1;\n Touch.AsOld = Touch.First;\n Touch.Last = 2;\n Touch.AsNew = Touch.Last;\n})(Touch || (exports.Touch = Touch = {}));\nclass LinkedMap {\n constructor() {\n this[_a] = 'LinkedMap';\n this._map = new Map();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = Touch.None) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = Touch.None) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case Touch.None:\n this.addItemLast(item);\n break;\n case Touch.First:\n this.addItemFirst(item);\n break;\n case Touch.Last:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return undefined;\n }\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n }\n else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n values() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n entries() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = undefined;\n }\n this._state++;\n }\n addItemFirst(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._tail = item;\n }\n else if (!this._head) {\n throw new Error('Invalid list');\n }\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._head = item;\n }\n else if (!this._tail) {\n throw new Error('Invalid list');\n }\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = undefined;\n this._tail = undefined;\n }\n else if (item === this._head) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.next) {\n throw new Error('Invalid list');\n }\n item.next.previous = undefined;\n this._head = item.next;\n }\n else if (item === this._tail) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.previous) {\n throw new Error('Invalid list');\n }\n item.previous.next = undefined;\n this._tail = item.previous;\n }\n else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error('Invalid list');\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = undefined;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n if ((touch !== Touch.First && touch !== Touch.Last)) {\n return;\n }\n if (touch === Touch.First) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item\n if (item === this._tail) {\n // previous must be defined since item was not head but is tail\n // So there are more than on item in the map\n previous.next = undefined;\n this._tail = previous;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n // Insert the node at head\n item.previous = undefined;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n }\n else if (touch === Touch.Last) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item.\n if (item === this._head) {\n // next must be defined since item was not tail but is head\n // So there are more than on item in the map\n next.previous = undefined;\n this._head = next;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n}\nexports.LinkedMap = LinkedMap;\nclass LRUCache extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get ratio() {\n return this._ratio;\n }\n set ratio(ratio) {\n this._ratio = Math.min(Math.max(0, ratio), 1);\n this.checkTrim();\n }\n get(key, touch = Touch.AsNew) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, Touch.None);\n }\n set(key, value) {\n super.set(key, value, Touch.Last);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n}\nexports.LRUCache = LRUCache;\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n function create(func) {\n return {\n dispose: func\n };\n }\n Disposable.create = create;\n})(Disposable || (exports.Disposable = Disposable = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = require(\"./cancellation\");\nvar CancellationState;\n(function (CancellationState) {\n CancellationState.Continue = 0;\n CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n constructor() {\n this.buffers = new Map();\n }\n enableCancellation(request) {\n if (request.id === null) {\n return;\n }\n const buffer = new SharedArrayBuffer(4);\n const data = new Int32Array(buffer, 0, 1);\n data[0] = CancellationState.Continue;\n this.buffers.set(request.id, buffer);\n request.$cancellationData = buffer;\n }\n async sendCancellation(_conn, id) {\n const buffer = this.buffers.get(id);\n if (buffer === undefined) {\n return;\n }\n const data = new Int32Array(buffer, 0, 1);\n Atomics.store(data, 0, CancellationState.Cancelled);\n }\n cleanup(id) {\n this.buffers.delete(id);\n }\n dispose() {\n this.buffers.clear();\n }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n constructor(buffer) {\n this.data = new Int32Array(buffer, 0, 1);\n }\n get isCancellationRequested() {\n return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n }\n get onCancellationRequested() {\n throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n }\n}\nclass SharedArrayBufferCancellationTokenSource {\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n}\nclass SharedArrayReceiverStrategy {\n constructor() {\n this.kind = 'request';\n }\n createCancellationTokenSource(request) {\n const buffer = request.$cancellationData;\n if (buffer === undefined) {\n return new cancellation_1.CancellationTokenSource();\n }\n return new SharedArrayBufferCancellationTokenSource(buffer);\n }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = require(\"./ral\");\nclass Semaphore {\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error('Capacity must be greater than 0');\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject) => {\n this._waiting.push({ thunk, resolve, reject });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n }\n else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n }\n catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n}\nexports.Semaphore = Semaphore;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n }\n MessageReader.is = is;\n})(MessageReader || (exports.MessageReader = MessageReader = {}));\nclass AbstractMessageReader {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n this.partialMessageEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error) {\n this.errorEmitter.fire(this.asError(error));\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n get onPartialMessage() {\n return this.partialMessageEmitter.event;\n }\n firePartialMessage(info) {\n this.partialMessageEmitter.fire(info);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n function fromOptions(options) {\n let charset;\n let result;\n let contentDecoder;\n const contentDecoders = new Map();\n let contentTypeDecoder;\n const contentTypeDecoders = new Map();\n if (options === undefined || typeof options === 'string') {\n charset = options ?? 'utf-8';\n }\n else {\n charset = options.charset ?? 'utf-8';\n if (options.contentDecoder !== undefined) {\n contentDecoder = options.contentDecoder;\n contentDecoders.set(contentDecoder.name, contentDecoder);\n }\n if (options.contentDecoders !== undefined) {\n for (const decoder of options.contentDecoders) {\n contentDecoders.set(decoder.name, decoder);\n }\n }\n if (options.contentTypeDecoder !== undefined) {\n contentTypeDecoder = options.contentTypeDecoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n if (options.contentTypeDecoders !== undefined) {\n for (const decoder of options.contentTypeDecoders) {\n contentTypeDecoders.set(decoder.name, decoder);\n }\n }\n }\n if (contentTypeDecoder === undefined) {\n contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n }\n ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n constructor(readable, options) {\n super();\n this.readable = readable;\n this.options = ResolvedMessageReaderOptions.fromOptions(options);\n this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n this._partialMessageTimeout = 10000;\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.readSemaphore = new semaphore_1.Semaphore(1);\n }\n set partialMessageTimeout(timeout) {\n this._partialMessageTimeout = timeout;\n }\n get partialMessageTimeout() {\n return this._partialMessageTimeout;\n }\n listen(callback) {\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.partialMessageTimer = undefined;\n this.callback = callback;\n const result = this.readable.onData((data) => {\n this.onData(data);\n });\n this.readable.onError((error) => this.fireError(error));\n this.readable.onClose(() => this.fireClose());\n return result;\n }\n onData(data) {\n try {\n this.buffer.append(data);\n while (true) {\n if (this.nextMessageLength === -1) {\n const headers = this.buffer.tryReadHeaders(true);\n if (!headers) {\n return;\n }\n const contentLength = headers.get('content-length');\n if (!contentLength) {\n this.fireError(new Error(`Header must provide a Content-Length property.\\n${JSON.stringify(Object.fromEntries(headers))}`));\n return;\n }\n const length = parseInt(contentLength);\n if (isNaN(length)) {\n this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`));\n return;\n }\n this.nextMessageLength = length;\n }\n const body = this.buffer.tryReadBody(this.nextMessageLength);\n if (body === undefined) {\n /** We haven't received the full message yet. */\n this.setPartialMessageTimer();\n return;\n }\n this.clearPartialMessageTimer();\n this.nextMessageLength = -1;\n // Make sure that we convert one received message after the\n // other. Otherwise it could happen that a decoding of a second\n // smaller message finished before the decoding of a first larger\n // message and then we would deliver the second message first.\n this.readSemaphore.lock(async () => {\n const bytes = this.options.contentDecoder !== undefined\n ? await this.options.contentDecoder.decode(body)\n : body;\n const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n this.callback(message);\n }).catch((error) => {\n this.fireError(error);\n });\n }\n }\n catch (error) {\n this.fireError(error);\n }\n }\n clearPartialMessageTimer() {\n if (this.partialMessageTimer) {\n this.partialMessageTimer.dispose();\n this.partialMessageTimer = undefined;\n }\n }\n setPartialMessageTimer() {\n this.clearPartialMessageTimer();\n if (this._partialMessageTimeout <= 0) {\n return;\n }\n this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n this.partialMessageTimer = undefined;\n if (token === this.messageToken) {\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n this.setPartialMessageTimer();\n }\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst semaphore_1 = require(\"./semaphore\");\nconst events_1 = require(\"./events\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n Is.func(candidate.onError) && Is.func(candidate.write);\n }\n MessageWriter.is = is;\n})(MessageWriter || (exports.MessageWriter = MessageWriter = {}));\nclass AbstractMessageWriter {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error, message, count) {\n this.errorEmitter.fire([this.asError(error), message, count]);\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n function fromOptions(options) {\n if (options === undefined || typeof options === 'string') {\n return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n }\n else {\n return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n }\n }\n ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n constructor(writable, options) {\n super();\n this.writable = writable;\n this.options = ResolvedMessageWriterOptions.fromOptions(options);\n this.errorCount = 0;\n this.writeSemaphore = new semaphore_1.Semaphore(1);\n this.writable.onError((error) => this.fireError(error));\n this.writable.onClose(() => this.fireClose());\n }\n async write(msg) {\n return this.writeSemaphore.lock(async () => {\n const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n if (this.options.contentEncoder !== undefined) {\n return this.options.contentEncoder.encode(buffer);\n }\n else {\n return buffer;\n }\n });\n return payload.then((buffer) => {\n const headers = [];\n headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n headers.push(CRLF);\n return this.doWrite(msg, headers, buffer);\n }, (error) => {\n this.fireError(error);\n throw error;\n });\n });\n }\n async doWrite(msg, headers, data) {\n try {\n await this.writable.write(headers.join(''), 'ascii');\n return this.writable.write(data);\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n this.writable.end();\n }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n this._encoding = encoding;\n this._chunks = [];\n this._totalLength = 0;\n }\n get encoding() {\n return this._encoding;\n }\n append(chunk) {\n const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n this._chunks.push(toAppend);\n this._totalLength += toAppend.byteLength;\n }\n tryReadHeaders(lowerCaseKeys = false) {\n if (this._chunks.length === 0) {\n return undefined;\n }\n let state = 0;\n let chunkIndex = 0;\n let offset = 0;\n let chunkBytesRead = 0;\n row: while (chunkIndex < this._chunks.length) {\n const chunk = this._chunks[chunkIndex];\n offset = 0;\n column: while (offset < chunk.length) {\n const value = chunk[offset];\n switch (value) {\n case CR:\n switch (state) {\n case 0:\n state = 1;\n break;\n case 2:\n state = 3;\n break;\n default:\n state = 0;\n }\n break;\n case LF:\n switch (state) {\n case 1:\n state = 2;\n break;\n case 3:\n state = 4;\n offset++;\n break row;\n default:\n state = 0;\n }\n break;\n default:\n state = 0;\n }\n offset++;\n }\n chunkBytesRead += chunk.byteLength;\n chunkIndex++;\n }\n if (state !== 4) {\n return undefined;\n }\n // The buffer contains the two CRLF at the end. So we will\n // have two empty lines after the split at the end as well.\n const buffer = this._read(chunkBytesRead + offset);\n const result = new Map();\n const headers = this.toString(buffer, 'ascii').split(CRLF);\n if (headers.length < 2) {\n return result;\n }\n for (let i = 0; i < headers.length - 2; i++) {\n const header = headers[i];\n const index = header.indexOf(':');\n if (index === -1) {\n throw new Error(`Message header must separate key and value using ':'\\n${header}`);\n }\n const key = header.substr(0, index);\n const value = header.substr(index + 1).trim();\n result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n }\n return result;\n }\n tryReadBody(length) {\n if (this._totalLength < length) {\n return undefined;\n }\n return this._read(length);\n }\n get numberOfBytes() {\n return this._totalLength;\n }\n _read(byteCount) {\n if (byteCount === 0) {\n return this.emptyBuffer();\n }\n if (byteCount > this._totalLength) {\n throw new Error(`Cannot read so many bytes!`);\n }\n if (this._chunks[0].byteLength === byteCount) {\n // super fast path, precisely first chunk must be returned\n const chunk = this._chunks[0];\n this._chunks.shift();\n this._totalLength -= byteCount;\n return this.asNative(chunk);\n }\n if (this._chunks[0].byteLength > byteCount) {\n // fast path, the reading is entirely within the first chunk\n const chunk = this._chunks[0];\n const result = this.asNative(chunk, byteCount);\n this._chunks[0] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n return result;\n }\n const result = this.allocNative(byteCount);\n let resultOffset = 0;\n let chunkIndex = 0;\n while (byteCount > 0) {\n const chunk = this._chunks[chunkIndex];\n if (chunk.byteLength > byteCount) {\n // this chunk will survive\n const chunkPart = chunk.slice(0, byteCount);\n result.set(chunkPart, resultOffset);\n resultOffset += byteCount;\n this._chunks[chunkIndex] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n byteCount -= byteCount;\n }\n else {\n // this chunk will be entirely read\n result.set(chunk, resultOffset);\n resultOffset += chunk.byteLength;\n this._chunks.shift();\n this._totalLength -= chunk.byteLength;\n byteCount -= chunk.byteLength;\n }\n }\n return result;\n }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst messages_1 = require(\"./messages\");\nconst linkedMap_1 = require(\"./linkedMap\");\nconst events_1 = require(\"./events\");\nconst cancellation_1 = require(\"./cancellation\");\nvar CancelNotification;\n(function (CancelNotification) {\n CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n function is(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n ProgressToken.is = is;\n})(ProgressToken || (exports.ProgressToken = ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n constructor() {\n }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n function is(value) {\n return Is.func(value);\n }\n StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n error: () => { },\n warn: () => { },\n info: () => { },\n log: () => { }\n});\nvar Trace;\n(function (Trace) {\n Trace[Trace[\"Off\"] = 0] = \"Off\";\n Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n /**\n * Turn tracing off.\n */\n TraceValues.Off = 'off';\n /**\n * Trace messages only.\n */\n TraceValues.Messages = 'messages';\n /**\n * Compact message tracing.\n */\n TraceValues.Compact = 'compact';\n /**\n * Verbose message tracing.\n */\n TraceValues.Verbose = 'verbose';\n})(TraceValues || (exports.TraceValues = TraceValues = {}));\n(function (Trace) {\n function fromString(value) {\n if (!Is.string(value)) {\n return Trace.Off;\n }\n value = value.toLowerCase();\n switch (value) {\n case 'off':\n return Trace.Off;\n case 'messages':\n return Trace.Messages;\n case 'compact':\n return Trace.Compact;\n case 'verbose':\n return Trace.Verbose;\n default:\n return Trace.Off;\n }\n }\n Trace.fromString = fromString;\n function toString(value) {\n switch (value) {\n case Trace.Off:\n return 'off';\n case Trace.Messages:\n return 'messages';\n case Trace.Compact:\n return 'compact';\n case Trace.Verbose:\n return 'verbose';\n default:\n return 'off';\n }\n }\n Trace.toString = toString;\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n TraceFormat[\"Text\"] = \"text\";\n TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\n(function (TraceFormat) {\n function fromString(value) {\n if (!Is.string(value)) {\n return TraceFormat.Text;\n }\n value = value.toLowerCase();\n if (value === 'json') {\n return TraceFormat.JSON;\n }\n else {\n return TraceFormat.Text;\n }\n }\n TraceFormat.fromString = fromString;\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification || (exports.SetTraceNotification = SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification || (exports.LogTraceNotification = LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n /**\n * The connection is closed.\n */\n ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n /**\n * The connection got disposed.\n */\n ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n /**\n * The connection is already in listening mode.\n */\n ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors || (exports.ConnectionErrors = ConnectionErrors = {}));\nclass ConnectionError extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.cancelUndispatched);\n }\n ConnectionStrategy.is = is;\n})(ConnectionStrategy || (exports.ConnectionStrategy = ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n CancellationReceiverStrategy.Message = Object.freeze({\n createCancellationTokenSource(_) {\n return new cancellation_1.CancellationTokenSource();\n }\n });\n function is(value) {\n return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n }\n CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n CancellationSenderStrategy.Message = Object.freeze({\n sendCancellation(conn, id) {\n return conn.sendNotification(CancelNotification.type, { id });\n },\n cleanup(_) { }\n });\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n }\n CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy || (exports.CancellationSenderStrategy = CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n CancellationStrategy.Message = Object.freeze({\n receiver: CancellationReceiverStrategy.Message,\n sender: CancellationSenderStrategy.Message\n });\n function is(value) {\n const candidate = value;\n return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n }\n CancellationStrategy.is = is;\n})(CancellationStrategy || (exports.CancellationStrategy = CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.handleMessage);\n }\n MessageStrategy.is = is;\n})(MessageStrategy || (exports.MessageStrategy = MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n }\n ConnectionOptions.is = is;\n})(ConnectionOptions || (exports.ConnectionOptions = ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n const logger = _logger !== undefined ? _logger : exports.NullLogger;\n let sequenceNumber = 0;\n let notificationSequenceNumber = 0;\n let unknownResponseSequenceNumber = 0;\n const version = '2.0';\n let starRequestHandler = undefined;\n const requestHandlers = new Map();\n let starNotificationHandler = undefined;\n const notificationHandlers = new Map();\n const progressHandlers = new Map();\n let timer;\n let messageQueue = new linkedMap_1.LinkedMap();\n let responsePromises = new Map();\n let knownCanceledRequests = new Set();\n let requestTokens = new Map();\n let trace = Trace.Off;\n let traceFormat = TraceFormat.Text;\n let tracer;\n let state = ConnectionState.New;\n const errorEmitter = new events_1.Emitter();\n const closeEmitter = new events_1.Emitter();\n const unhandledNotificationEmitter = new events_1.Emitter();\n const unhandledProgressEmitter = new events_1.Emitter();\n const disposeEmitter = new events_1.Emitter();\n const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n function createRequestQueueKey(id) {\n if (id === null) {\n throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n }\n return 'req-' + id.toString();\n }\n function createResponseQueueKey(id) {\n if (id === null) {\n return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n }\n else {\n return 'res-' + id.toString();\n }\n }\n function createNotificationQueueKey() {\n return 'not-' + (++notificationSequenceNumber).toString();\n }\n function addMessageToQueue(queue, message) {\n if (messages_1.Message.isRequest(message)) {\n queue.set(createRequestQueueKey(message.id), message);\n }\n else if (messages_1.Message.isResponse(message)) {\n queue.set(createResponseQueueKey(message.id), message);\n }\n else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n function cancelUndispatched(_message) {\n return undefined;\n }\n function isListening() {\n return state === ConnectionState.Listening;\n }\n function isClosed() {\n return state === ConnectionState.Closed;\n }\n function isDisposed() {\n return state === ConnectionState.Disposed;\n }\n function closeHandler() {\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\n state = ConnectionState.Closed;\n closeEmitter.fire(undefined);\n }\n // If the connection is disposed don't sent close events.\n }\n function readErrorHandler(error) {\n errorEmitter.fire([error, undefined, undefined]);\n }\n function writeErrorHandler(data) {\n errorEmitter.fire(data);\n }\n messageReader.onClose(closeHandler);\n messageReader.onError(readErrorHandler);\n messageWriter.onClose(closeHandler);\n messageWriter.onError(writeErrorHandler);\n function triggerMessageQueue() {\n if (timer || messageQueue.size === 0) {\n return;\n }\n timer = (0, ral_1.default)().timer.setImmediate(() => {\n timer = undefined;\n processMessageQueue();\n });\n }\n function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n handleRequest(message);\n }\n else if (messages_1.Message.isNotification(message)) {\n handleNotification(message);\n }\n else if (messages_1.Message.isResponse(message)) {\n handleResponse(message);\n }\n else {\n handleInvalidMessage(message);\n }\n }\n function processMessageQueue() {\n if (messageQueue.size === 0) {\n return;\n }\n const message = messageQueue.shift();\n try {\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n messageStrategy.handleMessage(message, handleMessage);\n }\n else {\n handleMessage(message);\n }\n }\n finally {\n triggerMessageQueue();\n }\n }\n const callback = (message) => {\n try {\n // We have received a cancellation message. Check if the message is still in the queue\n // and cancel it if allowed to do so.\n if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n const key = createRequestQueueKey(cancelId);\n const toCancel = messageQueue.get(key);\n if (messages_1.Message.isRequest(toCancel)) {\n const strategy = options?.connectionStrategy;\n const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n if (response && (response.error !== undefined || response.result !== undefined)) {\n messageQueue.delete(key);\n requestTokens.delete(cancelId);\n response.id = toCancel.id;\n traceSendingResponse(response, message.method, Date.now());\n messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n return;\n }\n }\n const cancellationToken = requestTokens.get(cancelId);\n // The request is already running. Cancel the token\n if (cancellationToken !== undefined) {\n cancellationToken.cancel();\n traceReceivedNotification(message);\n return;\n }\n else {\n // Remember the cancel but still queue the message to\n // clean up state in process message.\n knownCanceledRequests.add(cancelId);\n }\n }\n addMessageToQueue(messageQueue, message);\n }\n finally {\n triggerMessageQueue();\n }\n };\n function handleRequest(requestMessage) {\n if (isDisposed()) {\n // we return here silently since we fired an event when the\n // connection got disposed.\n return;\n }\n function reply(resultOrError, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id\n };\n if (resultOrError instanceof messages_1.ResponseError) {\n message.error = resultOrError.toJson();\n }\n else {\n message.result = resultOrError === undefined ? null : resultOrError;\n }\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replyError(error, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n error: error.toJson()\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replySuccess(result, method, startTime) {\n // The JSON RPC defines that a response must either have a result or an error\n // So we can't treat undefined as a valid response result.\n if (result === undefined) {\n result = null;\n }\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n result: result\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n traceReceivedRequest(requestMessage);\n const element = requestHandlers.get(requestMessage.method);\n let type;\n let requestHandler;\n if (element) {\n type = element.type;\n requestHandler = element.handler;\n }\n const startTime = Date.now();\n if (requestHandler || starRequestHandler) {\n const tokenKey = requestMessage.id ?? String(Date.now()); //\n const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n cancellationSource.cancel();\n }\n if (requestMessage.id !== null) {\n requestTokens.set(tokenKey, cancellationSource);\n }\n try {\n let handlerResult;\n if (requestHandler) {\n if (requestMessage.params === undefined) {\n if (type !== undefined && type.numberOfParams !== 0) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(cancellationSource.token);\n }\n else if (Array.isArray(requestMessage.params)) {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n }\n }\n else if (starRequestHandler) {\n handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n }\n const promise = handlerResult;\n if (!handlerResult) {\n requestTokens.delete(tokenKey);\n replySuccess(handlerResult, requestMessage.method, startTime);\n }\n else if (promise.then) {\n promise.then((resultOrError) => {\n requestTokens.delete(tokenKey);\n reply(resultOrError, requestMessage.method, startTime);\n }, error => {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n replyError(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n });\n }\n else {\n requestTokens.delete(tokenKey);\n reply(handlerResult, requestMessage.method, startTime);\n }\n }\n catch (error) {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n reply(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n }\n }\n function handleResponse(responseMessage) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n if (responseMessage.id === null) {\n if (responseMessage.error) {\n logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n }\n else {\n logger.error(`Received response message without id. No further error information provided.`);\n }\n }\n else {\n const key = responseMessage.id;\n const responsePromise = responsePromises.get(key);\n traceReceivedResponse(responseMessage, responsePromise);\n if (responsePromise !== undefined) {\n responsePromises.delete(key);\n try {\n if (responseMessage.error) {\n const error = responseMessage.error;\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n }\n else if (responseMessage.result !== undefined) {\n responsePromise.resolve(responseMessage.result);\n }\n else {\n throw new Error('Should never happen.');\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n }\n }\n }\n }\n }\n function handleNotification(message) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n let type = undefined;\n let notificationHandler;\n if (message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n knownCanceledRequests.delete(cancelId);\n traceReceivedNotification(message);\n return;\n }\n else {\n const element = notificationHandlers.get(message.method);\n if (element) {\n notificationHandler = element.handler;\n type = element.type;\n }\n }\n if (notificationHandler || starNotificationHandler) {\n try {\n traceReceivedNotification(message);\n if (notificationHandler) {\n if (message.params === undefined) {\n if (type !== undefined) {\n if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n }\n }\n notificationHandler();\n }\n else if (Array.isArray(message.params)) {\n // There are JSON-RPC libraries that send progress message as positional params although\n // specified as named. So convert them if this is the case.\n const params = message.params;\n if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n notificationHandler({ token: params[0], value: params[1] });\n }\n else {\n if (type !== undefined) {\n if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n }\n if (type.numberOfParams !== message.params.length) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n }\n }\n notificationHandler(...params);\n }\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n }\n notificationHandler(message.params);\n }\n }\n else if (starNotificationHandler) {\n starNotificationHandler(message.method, message.params);\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n }\n }\n }\n else {\n unhandledNotificationEmitter.fire(message);\n }\n }\n function handleInvalidMessage(message) {\n if (!message) {\n logger.error('Received empty message.');\n return;\n }\n logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n // Test whether we find an id to reject the promise\n const responseMessage = message;\n if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n const key = responseMessage.id;\n const responseHandler = responsePromises.get(key);\n if (responseHandler) {\n responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n }\n }\n }\n function stringifyTrace(params) {\n if (params === undefined || params === null) {\n return undefined;\n }\n switch (trace) {\n case Trace.Verbose:\n return JSON.stringify(params, null, 4);\n case Trace.Compact:\n return JSON.stringify(params);\n default:\n return undefined;\n }\n }\n function traceSendingRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('send-request', message);\n }\n }\n function traceSendingNotification(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Sending notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('send-notification', message);\n }\n }\n function traceSendingResponse(message, method, startTime) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n }\n else {\n logLSPMessage('send-response', message);\n }\n }\n function traceReceivedRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('receive-request', message);\n }\n }\n function traceReceivedNotification(message) {\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Received notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('receive-notification', message);\n }\n }\n function traceReceivedResponse(message, responsePromise) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n if (responsePromise) {\n const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n }\n else {\n tracer.log(`Received response ${message.id} without active response promise.`, data);\n }\n }\n else {\n logLSPMessage('receive-response', message);\n }\n }\n function logLSPMessage(type, message) {\n if (!tracer || trace === Trace.Off) {\n return;\n }\n const lspMessage = {\n isLSPMessage: true,\n type,\n message,\n timestamp: Date.now()\n };\n tracer.log(lspMessage);\n }\n function throwIfClosedOrDisposed() {\n if (isClosed()) {\n throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n }\n if (isDisposed()) {\n throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n }\n }\n function throwIfListening() {\n if (isListening()) {\n throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n }\n }\n function throwIfNotListening() {\n if (!isListening()) {\n throw new Error('Call listen() first.');\n }\n }\n function undefinedToNull(param) {\n if (param === undefined) {\n return null;\n }\n else {\n return param;\n }\n }\n function nullToUndefined(param) {\n if (param === null) {\n return undefined;\n }\n else {\n return param;\n }\n }\n function isNamedParam(param) {\n return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n }\n function computeSingleParam(parameterStructures, param) {\n switch (parameterStructures) {\n case messages_1.ParameterStructures.auto:\n if (isNamedParam(param)) {\n return nullToUndefined(param);\n }\n else {\n return [undefinedToNull(param)];\n }\n case messages_1.ParameterStructures.byName:\n if (!isNamedParam(param)) {\n throw new Error(`Received parameters by name but param is not an object literal.`);\n }\n return nullToUndefined(param);\n case messages_1.ParameterStructures.byPosition:\n return [undefinedToNull(param)];\n default:\n throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n }\n }\n function computeMessageParams(type, params) {\n let result;\n const numberOfParams = type.numberOfParams;\n switch (numberOfParams) {\n case 0:\n result = undefined;\n break;\n case 1:\n result = computeSingleParam(type.parameterStructures, params[0]);\n break;\n default:\n result = [];\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\n result.push(undefinedToNull(params[i]));\n }\n if (params.length < numberOfParams) {\n for (let i = params.length; i < numberOfParams; i++) {\n result.push(null);\n }\n }\n break;\n }\n return result;\n }\n const connection = {\n sendNotification: (type, ...args) => {\n throwIfClosedOrDisposed();\n let method;\n let messageParams;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n }\n const notificationMessage = {\n jsonrpc: version,\n method: method,\n params: messageParams\n };\n traceSendingNotification(notificationMessage);\n return messageWriter.write(notificationMessage).catch((error) => {\n logger.error(`Sending notification failed.`);\n throw error;\n });\n },\n onNotification: (type, handler) => {\n throwIfClosedOrDisposed();\n let method;\n if (Is.func(type)) {\n starNotificationHandler = type;\n }\n else if (handler) {\n if (Is.string(type)) {\n method = type;\n notificationHandlers.set(type, { type: undefined, handler });\n }\n else {\n method = type.method;\n notificationHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method !== undefined) {\n notificationHandlers.delete(method);\n }\n else {\n starNotificationHandler = undefined;\n }\n }\n };\n },\n onProgress: (_type, token, handler) => {\n if (progressHandlers.has(token)) {\n throw new Error(`Progress handler for token ${token} already registered`);\n }\n progressHandlers.set(token, handler);\n return {\n dispose: () => {\n progressHandlers.delete(token);\n }\n };\n },\n sendProgress: (_type, token, value) => {\n // This should not await but simple return to ensure that we don't have another\n // async scheduling. Otherwise one send could overtake another send.\n return connection.sendNotification(ProgressNotification.type, { token, value });\n },\n onUnhandledProgress: unhandledProgressEmitter.event,\n sendRequest: (type, ...args) => {\n throwIfClosedOrDisposed();\n throwIfNotListening();\n let method;\n let messageParams;\n let token = undefined;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n const last = args[args.length - 1];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n if (cancellation_1.CancellationToken.is(last)) {\n paramEnd = paramEnd - 1;\n token = last;\n }\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n const numberOfParams = type.numberOfParams;\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n }\n const id = sequenceNumber++;\n let disposable;\n if (token) {\n disposable = token.onCancellationRequested(() => {\n const p = cancellationStrategy.sender.sendCancellation(connection, id);\n if (p === undefined) {\n logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n return Promise.resolve();\n }\n else {\n return p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed`);\n });\n }\n });\n }\n const requestMessage = {\n jsonrpc: version,\n id: id,\n method: method,\n params: messageParams\n };\n traceSendingRequest(requestMessage);\n if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n cancellationStrategy.sender.enableCancellation(requestMessage);\n }\n return new Promise(async (resolve, reject) => {\n const resolveWithCleanup = (r) => {\n resolve(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const rejectWithCleanup = (r) => {\n reject(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n try {\n await messageWriter.write(requestMessage);\n responsePromises.set(id, responsePromise);\n }\n catch (error) {\n logger.error(`Sending request failed.`);\n // Writing the message failed. So we need to reject the promise.\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n throw error;\n }\n });\n },\n onRequest: (type, handler) => {\n throwIfClosedOrDisposed();\n let method = null;\n if (StarRequestHandler.is(type)) {\n method = undefined;\n starRequestHandler = type;\n }\n else if (Is.string(type)) {\n method = null;\n if (handler !== undefined) {\n method = type;\n requestHandlers.set(type, { handler: handler, type: undefined });\n }\n }\n else {\n if (handler !== undefined) {\n method = type.method;\n requestHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method === null) {\n return;\n }\n if (method !== undefined) {\n requestHandlers.delete(method);\n }\n else {\n starRequestHandler = undefined;\n }\n }\n };\n },\n hasPendingResponse: () => {\n return responsePromises.size > 0;\n },\n trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n let _sendNotification = false;\n let _traceFormat = TraceFormat.Text;\n if (sendNotificationOrTraceOptions !== undefined) {\n if (Is.boolean(sendNotificationOrTraceOptions)) {\n _sendNotification = sendNotificationOrTraceOptions;\n }\n else {\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n }\n }\n trace = _value;\n traceFormat = _traceFormat;\n if (trace === Trace.Off) {\n tracer = undefined;\n }\n else {\n tracer = _tracer;\n }\n if (_sendNotification && !isClosed() && !isDisposed()) {\n await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n }\n },\n onError: errorEmitter.event,\n onClose: closeEmitter.event,\n onUnhandledNotification: unhandledNotificationEmitter.event,\n onDispose: disposeEmitter.event,\n end: () => {\n messageWriter.end();\n },\n dispose: () => {\n if (isDisposed()) {\n return;\n }\n state = ConnectionState.Disposed;\n disposeEmitter.fire(undefined);\n const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n for (const promise of responsePromises.values()) {\n promise.reject(error);\n }\n responsePromises = new Map();\n requestTokens = new Map();\n knownCanceledRequests = new Set();\n messageQueue = new linkedMap_1.LinkedMap();\n // Test for backwards compatibility\n if (Is.func(messageWriter.dispose)) {\n messageWriter.dispose();\n }\n if (Is.func(messageReader.dispose)) {\n messageReader.dispose();\n }\n },\n listen: () => {\n throwIfClosedOrDisposed();\n throwIfListening();\n state = ConnectionState.Listening;\n messageReader.listen(callback);\n },\n inspect: () => {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.log('inspect');\n }\n };\n connection.onNotification(LogTraceNotification.type, (params) => {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n tracer.log(params.message, verbose ? params.verbose : undefined);\n });\n connection.onNotification(ProgressNotification.type, (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n handler(params.value);\n }\n else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst linkedMap_1 = require(\"./linkedMap\");\nObject.defineProperty(exports, \"LinkedMap\", { enumerable: true, get: function () { return linkedMap_1.LinkedMap; } });\nObject.defineProperty(exports, \"LRUCache\", { enumerable: true, get: function () { return linkedMap_1.LRUCache; } });\nObject.defineProperty(exports, \"Touch\", { enumerable: true, get: function () { return linkedMap_1.Touch; } });\nconst disposable_1 = require(\"./disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"./events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"./cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst sharedArrayCancellation_1 = require(\"./sharedArrayCancellation\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } });\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } });\nconst messageReader_1 = require(\"./messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"./messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst messageBuffer_1 = require(\"./messageBuffer\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", { enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } });\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressToken\", { enumerable: true, get: function () { return connection_1.ProgressToken; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nObject.defineProperty(exports, \"MessageStrategy\", { enumerable: true, get: function () { return connection_1.MessageStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst api_1 = require(\"../common/api\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n super(encoding);\n this.asciiDecoder = new TextDecoder('ascii');\n }\n emptyBuffer() {\n return MessageBuffer.emptyBuffer;\n }\n fromString(value, _encoding) {\n return (new TextEncoder()).encode(value);\n }\n toString(value, encoding) {\n if (encoding === 'ascii') {\n return this.asciiDecoder.decode(value);\n }\n else {\n return (new TextDecoder(encoding)).decode(value);\n }\n }\n asNative(buffer, length) {\n if (length === undefined) {\n return buffer;\n }\n else {\n return buffer.slice(0, length);\n }\n }\n allocNative(length) {\n return new Uint8Array(length);\n }\n}\nMessageBuffer.emptyBuffer = new Uint8Array(0);\nclass ReadableStreamWrapper {\n constructor(socket) {\n this.socket = socket;\n this._onData = new api_1.Emitter();\n this._messageListener = (event) => {\n const blob = event.data;\n blob.arrayBuffer().then((buffer) => {\n this._onData.fire(new Uint8Array(buffer));\n }, () => {\n (0, api_1.RAL)().console.error(`Converting blob to array buffer failed.`);\n });\n };\n this.socket.addEventListener('message', this._messageListener);\n }\n onClose(listener) {\n this.socket.addEventListener('close', listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener('close', listener));\n }\n onError(listener) {\n this.socket.addEventListener('error', listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener('error', listener));\n }\n onEnd(listener) {\n this.socket.addEventListener('end', listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener('end', listener));\n }\n onData(listener) {\n return this._onData.event(listener);\n }\n}\nclass WritableStreamWrapper {\n constructor(socket) {\n this.socket = socket;\n }\n onClose(listener) {\n this.socket.addEventListener('close', listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener('close', listener));\n }\n onError(listener) {\n this.socket.addEventListener('error', listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener('error', listener));\n }\n onEnd(listener) {\n this.socket.addEventListener('end', listener);\n return api_1.Disposable.create(() => this.socket.removeEventListener('end', listener));\n }\n write(data, encoding) {\n if (typeof data === 'string') {\n if (encoding !== undefined && encoding !== 'utf-8') {\n throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${encoding}`);\n }\n this.socket.send(data);\n }\n else {\n this.socket.send(data);\n }\n return Promise.resolve();\n }\n end() {\n this.socket.close();\n }\n}\nconst _textEncoder = new TextEncoder();\nconst _ril = Object.freeze({\n messageBuffer: Object.freeze({\n create: (encoding) => new MessageBuffer(encoding)\n }),\n applicationJson: Object.freeze({\n encoder: Object.freeze({\n name: 'application/json',\n encode: (msg, options) => {\n if (options.charset !== 'utf-8') {\n throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${options.charset}`);\n }\n return Promise.resolve(_textEncoder.encode(JSON.stringify(msg, undefined, 0)));\n }\n }),\n decoder: Object.freeze({\n name: 'application/json',\n decode: (buffer, options) => {\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`In a Browser environments only Uint8Arrays are supported.`);\n }\n return Promise.resolve(JSON.parse(new TextDecoder(options.charset).decode(buffer)));\n }\n })\n }),\n stream: Object.freeze({\n asReadableStream: (socket) => new ReadableStreamWrapper(socket),\n asWritableStream: (socket) => new WritableStreamWrapper(socket)\n }),\n console: console,\n timer: Object.freeze({\n setTimeout(callback, ms, ...args) {\n const handle = setTimeout(callback, ms, ...args);\n return { dispose: () => clearTimeout(handle) };\n },\n setImmediate(callback, ...args) {\n const handle = setTimeout(callback, 0, ...args);\n return { dispose: () => clearTimeout(handle) };\n },\n setInterval(callback, ms, ...args) {\n const handle = setInterval(callback, ms, ...args);\n return { dispose: () => clearInterval(handle) };\n },\n })\n});\nfunction RIL() {\n return _ril;\n}\n(function (RIL) {\n function install() {\n api_1.RAL.install(_ril);\n }\n RIL.install = install;\n})(RIL || (RIL = {}));\nexports.default = RIL;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.BrowserMessageWriter = exports.BrowserMessageReader = void 0;\nconst ril_1 = require(\"./ril\");\n// Install the browser runtime abstract.\nril_1.default.install();\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass BrowserMessageReader extends api_1.AbstractMessageReader {\n constructor(port) {\n super();\n this._onData = new api_1.Emitter();\n this._messageListener = (event) => {\n this._onData.fire(event.data);\n };\n port.addEventListener('error', (event) => this.fireError(event));\n port.onmessage = this._messageListener;\n }\n listen(callback) {\n return this._onData.event(callback);\n }\n}\nexports.BrowserMessageReader = BrowserMessageReader;\nclass BrowserMessageWriter extends api_1.AbstractMessageWriter {\n constructor(port) {\n super();\n this.port = port;\n this.errorCount = 0;\n port.addEventListener('error', (event) => this.fireError(event));\n }\n write(msg) {\n try {\n this.port.postMessage(msg);\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.BrowserMessageWriter = BrowserMessageWriter;\nfunction createMessageConnection(reader, writer, logger, options) {\n if (logger === undefined) {\n logger = api_1.NullLogger;\n }\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n", "/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/browser/main');", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolNotificationType = exports.ProtocolNotificationType0 = exports.ProtocolRequestType = exports.ProtocolRequestType0 = exports.RegistrationType = exports.MessageDirection = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nvar MessageDirection;\n(function (MessageDirection) {\n MessageDirection[\"clientToServer\"] = \"clientToServer\";\n MessageDirection[\"serverToClient\"] = \"serverToClient\";\n MessageDirection[\"both\"] = \"both\";\n})(MessageDirection || (exports.MessageDirection = MessageDirection = {}));\nclass RegistrationType {\n constructor(method) {\n this.method = method;\n }\n}\nexports.RegistrationType = RegistrationType;\nclass ProtocolRequestType0 extends vscode_jsonrpc_1.RequestType0 {\n constructor(method) {\n super(method);\n }\n}\nexports.ProtocolRequestType0 = ProtocolRequestType0;\nclass ProtocolRequestType extends vscode_jsonrpc_1.RequestType {\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n}\nexports.ProtocolRequestType = ProtocolRequestType;\nclass ProtocolNotificationType0 extends vscode_jsonrpc_1.NotificationType0 {\n constructor(method) {\n super(method);\n }\n}\nexports.ProtocolNotificationType0 = ProtocolNotificationType0;\nclass ProtocolNotificationType extends vscode_jsonrpc_1.NotificationType {\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n}\nexports.ProtocolNotificationType = ProtocolNotificationType;\n", "/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.objectLiteral = exports.typedArray = exports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\nfunction typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n}\nexports.typedArray = typedArray;\nfunction objectLiteral(value) {\n // Strictly speaking class instances pass this check as well. Since the LSP\n // doesn't use classes we ignore this for now. If we do we need to add something\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n return value !== null && typeof value === 'object';\n}\nexports.objectLiteral = objectLiteral;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImplementationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the implementation locations of a symbol at a given text\n * document position. The request's parameter is of type {@link TextDocumentPositionParams}\n * the response is of type {@link Definition} or a Thenable that resolves to such.\n */\nvar ImplementationRequest;\n(function (ImplementationRequest) {\n ImplementationRequest.method = 'textDocument/implementation';\n ImplementationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ImplementationRequest.type = new messages_1.ProtocolRequestType(ImplementationRequest.method);\n})(ImplementationRequest || (exports.ImplementationRequest = ImplementationRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeDefinitionRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocatioLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the type definition locations of a symbol at a given text\n * document position. The request's parameter is of type {@link TextDocumentPositionParams}\n * the response is of type {@link Definition} or a Thenable that resolves to such.\n */\nvar TypeDefinitionRequest;\n(function (TypeDefinitionRequest) {\n TypeDefinitionRequest.method = 'textDocument/typeDefinition';\n TypeDefinitionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeDefinitionRequest.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest.method);\n})(TypeDefinitionRequest || (exports.TypeDefinitionRequest = TypeDefinitionRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DidChangeWorkspaceFoldersNotification = exports.WorkspaceFoldersRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.\n */\nvar WorkspaceFoldersRequest;\n(function (WorkspaceFoldersRequest) {\n WorkspaceFoldersRequest.method = 'workspace/workspaceFolders';\n WorkspaceFoldersRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n WorkspaceFoldersRequest.type = new messages_1.ProtocolRequestType0(WorkspaceFoldersRequest.method);\n})(WorkspaceFoldersRequest || (exports.WorkspaceFoldersRequest = WorkspaceFoldersRequest = {}));\n/**\n * The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace\n * folder configuration changes.\n */\nvar DidChangeWorkspaceFoldersNotification;\n(function (DidChangeWorkspaceFoldersNotification) {\n DidChangeWorkspaceFoldersNotification.method = 'workspace/didChangeWorkspaceFolders';\n DidChangeWorkspaceFoldersNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeWorkspaceFoldersNotification.type = new messages_1.ProtocolNotificationType(DidChangeWorkspaceFoldersNotification.method);\n})(DidChangeWorkspaceFoldersNotification || (exports.DidChangeWorkspaceFoldersNotification = DidChangeWorkspaceFoldersNotification = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigurationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n//---- Get Configuration request ----\n/**\n * The 'workspace/configuration' request is sent from the server to the client to fetch a certain\n * configuration setting.\n *\n * This pull model replaces the old push model were the client signaled configuration change via an\n * event. If the server still needs to react to configuration changes (since the server caches the\n * result of `workspace/configuration` requests) the server should register for an empty configuration\n * change event and empty the cache if such an event is received.\n */\nvar ConfigurationRequest;\n(function (ConfigurationRequest) {\n ConfigurationRequest.method = 'workspace/configuration';\n ConfigurationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n ConfigurationRequest.type = new messages_1.ProtocolRequestType(ConfigurationRequest.method);\n})(ConfigurationRequest || (exports.ConfigurationRequest = ConfigurationRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ColorPresentationRequest = exports.DocumentColorRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to list all color symbols found in a given text document. The request's\n * parameter is of type {@link DocumentColorParams} the\n * response is of type {@link ColorInformation ColorInformation[]} or a Thenable\n * that resolves to such.\n */\nvar DocumentColorRequest;\n(function (DocumentColorRequest) {\n DocumentColorRequest.method = 'textDocument/documentColor';\n DocumentColorRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentColorRequest.type = new messages_1.ProtocolRequestType(DocumentColorRequest.method);\n})(DocumentColorRequest || (exports.DocumentColorRequest = DocumentColorRequest = {}));\n/**\n * A request to list all presentation for a color. The request's\n * parameter is of type {@link ColorPresentationParams} the\n * response is of type {@link ColorInformation ColorInformation[]} or a Thenable\n * that resolves to such.\n */\nvar ColorPresentationRequest;\n(function (ColorPresentationRequest) {\n ColorPresentationRequest.method = 'textDocument/colorPresentation';\n ColorPresentationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ColorPresentationRequest.type = new messages_1.ProtocolRequestType(ColorPresentationRequest.method);\n})(ColorPresentationRequest || (exports.ColorPresentationRequest = ColorPresentationRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FoldingRangeRefreshRequest = exports.FoldingRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide folding ranges in a document. The request's\n * parameter is of type {@link FoldingRangeParams}, the\n * response is of type {@link FoldingRangeList} or a Thenable\n * that resolves to such.\n */\nvar FoldingRangeRequest;\n(function (FoldingRangeRequest) {\n FoldingRangeRequest.method = 'textDocument/foldingRange';\n FoldingRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n FoldingRangeRequest.type = new messages_1.ProtocolRequestType(FoldingRangeRequest.method);\n})(FoldingRangeRequest || (exports.FoldingRangeRequest = FoldingRangeRequest = {}));\n/**\n * @since 3.18.0\n * @proposed\n */\nvar FoldingRangeRefreshRequest;\n(function (FoldingRangeRefreshRequest) {\n FoldingRangeRefreshRequest.method = `workspace/foldingRange/refresh`;\n FoldingRangeRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n FoldingRangeRefreshRequest.type = new messages_1.ProtocolRequestType0(FoldingRangeRefreshRequest.method);\n})(FoldingRangeRefreshRequest || (exports.FoldingRangeRefreshRequest = FoldingRangeRefreshRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeclarationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the type definition locations of a symbol at a given text\n * document position. The request's parameter is of type {@link TextDocumentPositionParams}\n * the response is of type {@link Declaration} or a typed array of {@link DeclarationLink}\n * or a Thenable that resolves to such.\n */\nvar DeclarationRequest;\n(function (DeclarationRequest) {\n DeclarationRequest.method = 'textDocument/declaration';\n DeclarationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DeclarationRequest.type = new messages_1.ProtocolRequestType(DeclarationRequest.method);\n})(DeclarationRequest || (exports.DeclarationRequest = DeclarationRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelectionRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide selection ranges in a document. The request's\n * parameter is of type {@link SelectionRangeParams}, the\n * response is of type {@link SelectionRange SelectionRange[]} or a Thenable\n * that resolves to such.\n */\nvar SelectionRangeRequest;\n(function (SelectionRangeRequest) {\n SelectionRangeRequest.method = 'textDocument/selectionRange';\n SelectionRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SelectionRangeRequest.type = new messages_1.ProtocolRequestType(SelectionRangeRequest.method);\n})(SelectionRangeRequest || (exports.SelectionRangeRequest = SelectionRangeRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkDoneProgressCancelNotification = exports.WorkDoneProgressCreateRequest = exports.WorkDoneProgress = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nconst messages_1 = require(\"./messages\");\nvar WorkDoneProgress;\n(function (WorkDoneProgress) {\n WorkDoneProgress.type = new vscode_jsonrpc_1.ProgressType();\n function is(value) {\n return value === WorkDoneProgress.type;\n }\n WorkDoneProgress.is = is;\n})(WorkDoneProgress || (exports.WorkDoneProgress = WorkDoneProgress = {}));\n/**\n * The `window/workDoneProgress/create` request is sent from the server to the client to initiate progress\n * reporting from the server.\n */\nvar WorkDoneProgressCreateRequest;\n(function (WorkDoneProgressCreateRequest) {\n WorkDoneProgressCreateRequest.method = 'window/workDoneProgress/create';\n WorkDoneProgressCreateRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n WorkDoneProgressCreateRequest.type = new messages_1.ProtocolRequestType(WorkDoneProgressCreateRequest.method);\n})(WorkDoneProgressCreateRequest || (exports.WorkDoneProgressCreateRequest = WorkDoneProgressCreateRequest = {}));\n/**\n * The `window/workDoneProgress/cancel` notification is sent from the client to the server to cancel a progress\n * initiated on the server side.\n */\nvar WorkDoneProgressCancelNotification;\n(function (WorkDoneProgressCancelNotification) {\n WorkDoneProgressCancelNotification.method = 'window/workDoneProgress/cancel';\n WorkDoneProgressCancelNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkDoneProgressCancelNotification.type = new messages_1.ProtocolNotificationType(WorkDoneProgressCancelNotification.method);\n})(WorkDoneProgressCancelNotification || (exports.WorkDoneProgressCancelNotification = WorkDoneProgressCancelNotification = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) TypeFox, Microsoft and others. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallHierarchyOutgoingCallsRequest = exports.CallHierarchyIncomingCallsRequest = exports.CallHierarchyPrepareRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to result a `CallHierarchyItem` in a document at a given position.\n * Can be used as an input to an incoming or outgoing call hierarchy.\n *\n * @since 3.16.0\n */\nvar CallHierarchyPrepareRequest;\n(function (CallHierarchyPrepareRequest) {\n CallHierarchyPrepareRequest.method = 'textDocument/prepareCallHierarchy';\n CallHierarchyPrepareRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyPrepareRequest.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest.method);\n})(CallHierarchyPrepareRequest || (exports.CallHierarchyPrepareRequest = CallHierarchyPrepareRequest = {}));\n/**\n * A request to resolve the incoming calls for a given `CallHierarchyItem`.\n *\n * @since 3.16.0\n */\nvar CallHierarchyIncomingCallsRequest;\n(function (CallHierarchyIncomingCallsRequest) {\n CallHierarchyIncomingCallsRequest.method = 'callHierarchy/incomingCalls';\n CallHierarchyIncomingCallsRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyIncomingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest.method);\n})(CallHierarchyIncomingCallsRequest || (exports.CallHierarchyIncomingCallsRequest = CallHierarchyIncomingCallsRequest = {}));\n/**\n * A request to resolve the outgoing calls for a given `CallHierarchyItem`.\n *\n * @since 3.16.0\n */\nvar CallHierarchyOutgoingCallsRequest;\n(function (CallHierarchyOutgoingCallsRequest) {\n CallHierarchyOutgoingCallsRequest.method = 'callHierarchy/outgoingCalls';\n CallHierarchyOutgoingCallsRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyOutgoingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest.method);\n})(CallHierarchyOutgoingCallsRequest || (exports.CallHierarchyOutgoingCallsRequest = CallHierarchyOutgoingCallsRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SemanticTokensRefreshRequest = exports.SemanticTokensRangeRequest = exports.SemanticTokensDeltaRequest = exports.SemanticTokensRequest = exports.SemanticTokensRegistrationType = exports.TokenFormat = void 0;\nconst messages_1 = require(\"./messages\");\n//------- 'textDocument/semanticTokens' -----\nvar TokenFormat;\n(function (TokenFormat) {\n TokenFormat.Relative = 'relative';\n})(TokenFormat || (exports.TokenFormat = TokenFormat = {}));\nvar SemanticTokensRegistrationType;\n(function (SemanticTokensRegistrationType) {\n SemanticTokensRegistrationType.method = 'textDocument/semanticTokens';\n SemanticTokensRegistrationType.type = new messages_1.RegistrationType(SemanticTokensRegistrationType.method);\n})(SemanticTokensRegistrationType || (exports.SemanticTokensRegistrationType = SemanticTokensRegistrationType = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRequest;\n(function (SemanticTokensRequest) {\n SemanticTokensRequest.method = 'textDocument/semanticTokens/full';\n SemanticTokensRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRequest.method);\n SemanticTokensRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensRequest || (exports.SemanticTokensRequest = SemanticTokensRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensDeltaRequest;\n(function (SemanticTokensDeltaRequest) {\n SemanticTokensDeltaRequest.method = 'textDocument/semanticTokens/full/delta';\n SemanticTokensDeltaRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensDeltaRequest.type = new messages_1.ProtocolRequestType(SemanticTokensDeltaRequest.method);\n SemanticTokensDeltaRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensDeltaRequest || (exports.SemanticTokensDeltaRequest = SemanticTokensDeltaRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRangeRequest;\n(function (SemanticTokensRangeRequest) {\n SemanticTokensRangeRequest.method = 'textDocument/semanticTokens/range';\n SemanticTokensRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensRangeRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest.method);\n SemanticTokensRangeRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensRangeRequest || (exports.SemanticTokensRangeRequest = SemanticTokensRangeRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRefreshRequest;\n(function (SemanticTokensRefreshRequest) {\n SemanticTokensRefreshRequest.method = `workspace/semanticTokens/refresh`;\n SemanticTokensRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n SemanticTokensRefreshRequest.type = new messages_1.ProtocolRequestType0(SemanticTokensRefreshRequest.method);\n})(SemanticTokensRefreshRequest || (exports.SemanticTokensRefreshRequest = SemanticTokensRefreshRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ShowDocumentRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to show a document. This request might open an\n * external program depending on the value of the URI to open.\n * For example a request to open `https://code.visualstudio.com/`\n * will very likely open the URI in a WEB browser.\n *\n * @since 3.16.0\n*/\nvar ShowDocumentRequest;\n(function (ShowDocumentRequest) {\n ShowDocumentRequest.method = 'window/showDocument';\n ShowDocumentRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowDocumentRequest.type = new messages_1.ProtocolRequestType(ShowDocumentRequest.method);\n})(ShowDocumentRequest || (exports.ShowDocumentRequest = ShowDocumentRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedEditingRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide ranges that can be edited together.\n *\n * @since 3.16.0\n */\nvar LinkedEditingRangeRequest;\n(function (LinkedEditingRangeRequest) {\n LinkedEditingRangeRequest.method = 'textDocument/linkedEditingRange';\n LinkedEditingRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n LinkedEditingRangeRequest.type = new messages_1.ProtocolRequestType(LinkedEditingRangeRequest.method);\n})(LinkedEditingRangeRequest || (exports.LinkedEditingRangeRequest = LinkedEditingRangeRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WillDeleteFilesRequest = exports.DidDeleteFilesNotification = exports.DidRenameFilesNotification = exports.WillRenameFilesRequest = exports.DidCreateFilesNotification = exports.WillCreateFilesRequest = exports.FileOperationPatternKind = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A pattern kind describing if a glob pattern matches a file a folder or\n * both.\n *\n * @since 3.16.0\n */\nvar FileOperationPatternKind;\n(function (FileOperationPatternKind) {\n /**\n * The pattern matches a file only.\n */\n FileOperationPatternKind.file = 'file';\n /**\n * The pattern matches a folder only.\n */\n FileOperationPatternKind.folder = 'folder';\n})(FileOperationPatternKind || (exports.FileOperationPatternKind = FileOperationPatternKind = {}));\n/**\n * The will create files request is sent from the client to the server before files are actually\n * created as long as the creation is triggered from within the client.\n *\n * The request can return a `WorkspaceEdit` which will be applied to workspace before the\n * files are created. Hence the `WorkspaceEdit` can not manipulate the content of the file\n * to be created.\n *\n * @since 3.16.0\n */\nvar WillCreateFilesRequest;\n(function (WillCreateFilesRequest) {\n WillCreateFilesRequest.method = 'workspace/willCreateFiles';\n WillCreateFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WillCreateFilesRequest.type = new messages_1.ProtocolRequestType(WillCreateFilesRequest.method);\n})(WillCreateFilesRequest || (exports.WillCreateFilesRequest = WillCreateFilesRequest = {}));\n/**\n * The did create files notification is sent from the client to the server when\n * files were created from within the client.\n *\n * @since 3.16.0\n */\nvar DidCreateFilesNotification;\n(function (DidCreateFilesNotification) {\n DidCreateFilesNotification.method = 'workspace/didCreateFiles';\n DidCreateFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCreateFilesNotification.type = new messages_1.ProtocolNotificationType(DidCreateFilesNotification.method);\n})(DidCreateFilesNotification || (exports.DidCreateFilesNotification = DidCreateFilesNotification = {}));\n/**\n * The will rename files request is sent from the client to the server before files are actually\n * renamed as long as the rename is triggered from within the client.\n *\n * @since 3.16.0\n */\nvar WillRenameFilesRequest;\n(function (WillRenameFilesRequest) {\n WillRenameFilesRequest.method = 'workspace/willRenameFiles';\n WillRenameFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WillRenameFilesRequest.type = new messages_1.ProtocolRequestType(WillRenameFilesRequest.method);\n})(WillRenameFilesRequest || (exports.WillRenameFilesRequest = WillRenameFilesRequest = {}));\n/**\n * The did rename files notification is sent from the client to the server when\n * files were renamed from within the client.\n *\n * @since 3.16.0\n */\nvar DidRenameFilesNotification;\n(function (DidRenameFilesNotification) {\n DidRenameFilesNotification.method = 'workspace/didRenameFiles';\n DidRenameFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidRenameFilesNotification.type = new messages_1.ProtocolNotificationType(DidRenameFilesNotification.method);\n})(DidRenameFilesNotification || (exports.DidRenameFilesNotification = DidRenameFilesNotification = {}));\n/**\n * The will delete files request is sent from the client to the server before files are actually\n * deleted as long as the deletion is triggered from within the client.\n *\n * @since 3.16.0\n */\nvar DidDeleteFilesNotification;\n(function (DidDeleteFilesNotification) {\n DidDeleteFilesNotification.method = 'workspace/didDeleteFiles';\n DidDeleteFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidDeleteFilesNotification.type = new messages_1.ProtocolNotificationType(DidDeleteFilesNotification.method);\n})(DidDeleteFilesNotification || (exports.DidDeleteFilesNotification = DidDeleteFilesNotification = {}));\n/**\n * The did delete files notification is sent from the client to the server when\n * files were deleted from within the client.\n *\n * @since 3.16.0\n */\nvar WillDeleteFilesRequest;\n(function (WillDeleteFilesRequest) {\n WillDeleteFilesRequest.method = 'workspace/willDeleteFiles';\n WillDeleteFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WillDeleteFilesRequest.type = new messages_1.ProtocolRequestType(WillDeleteFilesRequest.method);\n})(WillDeleteFilesRequest || (exports.WillDeleteFilesRequest = WillDeleteFilesRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MonikerRequest = exports.MonikerKind = exports.UniquenessLevel = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * Moniker uniqueness level to define scope of the moniker.\n *\n * @since 3.16.0\n */\nvar UniquenessLevel;\n(function (UniquenessLevel) {\n /**\n * The moniker is only unique inside a document\n */\n UniquenessLevel.document = 'document';\n /**\n * The moniker is unique inside a project for which a dump got created\n */\n UniquenessLevel.project = 'project';\n /**\n * The moniker is unique inside the group to which a project belongs\n */\n UniquenessLevel.group = 'group';\n /**\n * The moniker is unique inside the moniker scheme.\n */\n UniquenessLevel.scheme = 'scheme';\n /**\n * The moniker is globally unique\n */\n UniquenessLevel.global = 'global';\n})(UniquenessLevel || (exports.UniquenessLevel = UniquenessLevel = {}));\n/**\n * The moniker kind.\n *\n * @since 3.16.0\n */\nvar MonikerKind;\n(function (MonikerKind) {\n /**\n * The moniker represent a symbol that is imported into a project\n */\n MonikerKind.$import = 'import';\n /**\n * The moniker represents a symbol that is exported from a project\n */\n MonikerKind.$export = 'export';\n /**\n * The moniker represents a symbol that is local to a project (e.g. a local\n * variable of a function, a class not visible outside the project, ...)\n */\n MonikerKind.local = 'local';\n})(MonikerKind || (exports.MonikerKind = MonikerKind = {}));\n/**\n * A request to get the moniker of a symbol at a given text document position.\n * The request parameter is of type {@link TextDocumentPositionParams}.\n * The response is of type {@link Moniker Moniker[]} or `null`.\n */\nvar MonikerRequest;\n(function (MonikerRequest) {\n MonikerRequest.method = 'textDocument/moniker';\n MonikerRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n MonikerRequest.type = new messages_1.ProtocolRequestType(MonikerRequest.method);\n})(MonikerRequest || (exports.MonikerRequest = MonikerRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) TypeFox, Microsoft and others. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHierarchySubtypesRequest = exports.TypeHierarchySupertypesRequest = exports.TypeHierarchyPrepareRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to result a `TypeHierarchyItem` in a document at a given position.\n * Can be used as an input to a subtypes or supertypes type hierarchy.\n *\n * @since 3.17.0\n */\nvar TypeHierarchyPrepareRequest;\n(function (TypeHierarchyPrepareRequest) {\n TypeHierarchyPrepareRequest.method = 'textDocument/prepareTypeHierarchy';\n TypeHierarchyPrepareRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchyPrepareRequest.type = new messages_1.ProtocolRequestType(TypeHierarchyPrepareRequest.method);\n})(TypeHierarchyPrepareRequest || (exports.TypeHierarchyPrepareRequest = TypeHierarchyPrepareRequest = {}));\n/**\n * A request to resolve the supertypes for a given `TypeHierarchyItem`.\n *\n * @since 3.17.0\n */\nvar TypeHierarchySupertypesRequest;\n(function (TypeHierarchySupertypesRequest) {\n TypeHierarchySupertypesRequest.method = 'typeHierarchy/supertypes';\n TypeHierarchySupertypesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchySupertypesRequest.type = new messages_1.ProtocolRequestType(TypeHierarchySupertypesRequest.method);\n})(TypeHierarchySupertypesRequest || (exports.TypeHierarchySupertypesRequest = TypeHierarchySupertypesRequest = {}));\n/**\n * A request to resolve the subtypes for a given `TypeHierarchyItem`.\n *\n * @since 3.17.0\n */\nvar TypeHierarchySubtypesRequest;\n(function (TypeHierarchySubtypesRequest) {\n TypeHierarchySubtypesRequest.method = 'typeHierarchy/subtypes';\n TypeHierarchySubtypesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchySubtypesRequest.type = new messages_1.ProtocolRequestType(TypeHierarchySubtypesRequest.method);\n})(TypeHierarchySubtypesRequest || (exports.TypeHierarchySubtypesRequest = TypeHierarchySubtypesRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlineValueRefreshRequest = exports.InlineValueRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide inline values in a document. The request's parameter is of\n * type {@link InlineValueParams}, the response is of type\n * {@link InlineValue InlineValue[]} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlineValueRequest;\n(function (InlineValueRequest) {\n InlineValueRequest.method = 'textDocument/inlineValue';\n InlineValueRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InlineValueRequest.type = new messages_1.ProtocolRequestType(InlineValueRequest.method);\n})(InlineValueRequest || (exports.InlineValueRequest = InlineValueRequest = {}));\n/**\n * @since 3.17.0\n */\nvar InlineValueRefreshRequest;\n(function (InlineValueRefreshRequest) {\n InlineValueRefreshRequest.method = `workspace/inlineValue/refresh`;\n InlineValueRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n InlineValueRefreshRequest.type = new messages_1.ProtocolRequestType0(InlineValueRefreshRequest.method);\n})(InlineValueRefreshRequest || (exports.InlineValueRefreshRequest = InlineValueRefreshRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlayHintRefreshRequest = exports.InlayHintResolveRequest = exports.InlayHintRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide inlay hints in a document. The request's parameter is of\n * type {@link InlayHintsParams}, the response is of type\n * {@link InlayHint InlayHint[]} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlayHintRequest;\n(function (InlayHintRequest) {\n InlayHintRequest.method = 'textDocument/inlayHint';\n InlayHintRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InlayHintRequest.type = new messages_1.ProtocolRequestType(InlayHintRequest.method);\n})(InlayHintRequest || (exports.InlayHintRequest = InlayHintRequest = {}));\n/**\n * A request to resolve additional properties for an inlay hint.\n * The request's parameter is of type {@link InlayHint}, the response is\n * of type {@link InlayHint} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlayHintResolveRequest;\n(function (InlayHintResolveRequest) {\n InlayHintResolveRequest.method = 'inlayHint/resolve';\n InlayHintResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InlayHintResolveRequest.type = new messages_1.ProtocolRequestType(InlayHintResolveRequest.method);\n})(InlayHintResolveRequest || (exports.InlayHintResolveRequest = InlayHintResolveRequest = {}));\n/**\n * @since 3.17.0\n */\nvar InlayHintRefreshRequest;\n(function (InlayHintRefreshRequest) {\n InlayHintRefreshRequest.method = `workspace/inlayHint/refresh`;\n InlayHintRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n InlayHintRefreshRequest.type = new messages_1.ProtocolRequestType0(InlayHintRefreshRequest.method);\n})(InlayHintRefreshRequest || (exports.InlayHintRefreshRequest = InlayHintRefreshRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticRefreshRequest = exports.WorkspaceDiagnosticRequest = exports.DocumentDiagnosticRequest = exports.DocumentDiagnosticReportKind = exports.DiagnosticServerCancellationData = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nconst Is = require(\"./utils/is\");\nconst messages_1 = require(\"./messages\");\n/**\n * @since 3.17.0\n */\nvar DiagnosticServerCancellationData;\n(function (DiagnosticServerCancellationData) {\n function is(value) {\n const candidate = value;\n return candidate && Is.boolean(candidate.retriggerRequest);\n }\n DiagnosticServerCancellationData.is = is;\n})(DiagnosticServerCancellationData || (exports.DiagnosticServerCancellationData = DiagnosticServerCancellationData = {}));\n/**\n * The document diagnostic report kinds.\n *\n * @since 3.17.0\n */\nvar DocumentDiagnosticReportKind;\n(function (DocumentDiagnosticReportKind) {\n /**\n * A diagnostic report with a full\n * set of problems.\n */\n DocumentDiagnosticReportKind.Full = 'full';\n /**\n * A report indicating that the last\n * returned report is still accurate.\n */\n DocumentDiagnosticReportKind.Unchanged = 'unchanged';\n})(DocumentDiagnosticReportKind || (exports.DocumentDiagnosticReportKind = DocumentDiagnosticReportKind = {}));\n/**\n * The document diagnostic request definition.\n *\n * @since 3.17.0\n */\nvar DocumentDiagnosticRequest;\n(function (DocumentDiagnosticRequest) {\n DocumentDiagnosticRequest.method = 'textDocument/diagnostic';\n DocumentDiagnosticRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentDiagnosticRequest.type = new messages_1.ProtocolRequestType(DocumentDiagnosticRequest.method);\n DocumentDiagnosticRequest.partialResult = new vscode_jsonrpc_1.ProgressType();\n})(DocumentDiagnosticRequest || (exports.DocumentDiagnosticRequest = DocumentDiagnosticRequest = {}));\n/**\n * The workspace diagnostic request definition.\n *\n * @since 3.17.0\n */\nvar WorkspaceDiagnosticRequest;\n(function (WorkspaceDiagnosticRequest) {\n WorkspaceDiagnosticRequest.method = 'workspace/diagnostic';\n WorkspaceDiagnosticRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceDiagnosticRequest.type = new messages_1.ProtocolRequestType(WorkspaceDiagnosticRequest.method);\n WorkspaceDiagnosticRequest.partialResult = new vscode_jsonrpc_1.ProgressType();\n})(WorkspaceDiagnosticRequest || (exports.WorkspaceDiagnosticRequest = WorkspaceDiagnosticRequest = {}));\n/**\n * The diagnostic refresh request definition.\n *\n * @since 3.17.0\n */\nvar DiagnosticRefreshRequest;\n(function (DiagnosticRefreshRequest) {\n DiagnosticRefreshRequest.method = `workspace/diagnostic/refresh`;\n DiagnosticRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n DiagnosticRefreshRequest.type = new messages_1.ProtocolRequestType0(DiagnosticRefreshRequest.method);\n})(DiagnosticRefreshRequest || (exports.DiagnosticRefreshRequest = DiagnosticRefreshRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DidCloseNotebookDocumentNotification = exports.DidSaveNotebookDocumentNotification = exports.DidChangeNotebookDocumentNotification = exports.NotebookCellArrayChange = exports.DidOpenNotebookDocumentNotification = exports.NotebookDocumentSyncRegistrationType = exports.NotebookDocument = exports.NotebookCell = exports.ExecutionSummary = exports.NotebookCellKind = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst Is = require(\"./utils/is\");\nconst messages_1 = require(\"./messages\");\n/**\n * A notebook cell kind.\n *\n * @since 3.17.0\n */\nvar NotebookCellKind;\n(function (NotebookCellKind) {\n /**\n * A markup-cell is formatted source that is used for display.\n */\n NotebookCellKind.Markup = 1;\n /**\n * A code-cell is source code.\n */\n NotebookCellKind.Code = 2;\n function is(value) {\n return value === 1 || value === 2;\n }\n NotebookCellKind.is = is;\n})(NotebookCellKind || (exports.NotebookCellKind = NotebookCellKind = {}));\nvar ExecutionSummary;\n(function (ExecutionSummary) {\n function create(executionOrder, success) {\n const result = { executionOrder };\n if (success === true || success === false) {\n result.success = success;\n }\n return result;\n }\n ExecutionSummary.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && vscode_languageserver_types_1.uinteger.is(candidate.executionOrder) && (candidate.success === undefined || Is.boolean(candidate.success));\n }\n ExecutionSummary.is = is;\n function equals(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === undefined || other === null || other === undefined) {\n return false;\n }\n return one.executionOrder === other.executionOrder && one.success === other.success;\n }\n ExecutionSummary.equals = equals;\n})(ExecutionSummary || (exports.ExecutionSummary = ExecutionSummary = {}));\nvar NotebookCell;\n(function (NotebookCell) {\n function create(kind, document) {\n return { kind, document };\n }\n NotebookCell.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && NotebookCellKind.is(candidate.kind) && vscode_languageserver_types_1.DocumentUri.is(candidate.document) &&\n (candidate.metadata === undefined || Is.objectLiteral(candidate.metadata));\n }\n NotebookCell.is = is;\n function diff(one, two) {\n const result = new Set();\n if (one.document !== two.document) {\n result.add('document');\n }\n if (one.kind !== two.kind) {\n result.add('kind');\n }\n if (one.executionSummary !== two.executionSummary) {\n result.add('executionSummary');\n }\n if ((one.metadata !== undefined || two.metadata !== undefined) && !equalsMetadata(one.metadata, two.metadata)) {\n result.add('metadata');\n }\n if ((one.executionSummary !== undefined || two.executionSummary !== undefined) && !ExecutionSummary.equals(one.executionSummary, two.executionSummary)) {\n result.add('executionSummary');\n }\n return result;\n }\n NotebookCell.diff = diff;\n function equalsMetadata(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === undefined || other === null || other === undefined) {\n return false;\n }\n if (typeof one !== typeof other) {\n return false;\n }\n if (typeof one !== 'object') {\n return false;\n }\n const oneArray = Array.isArray(one);\n const otherArray = Array.isArray(other);\n if (oneArray !== otherArray) {\n return false;\n }\n if (oneArray && otherArray) {\n if (one.length !== other.length) {\n return false;\n }\n for (let i = 0; i < one.length; i++) {\n if (!equalsMetadata(one[i], other[i])) {\n return false;\n }\n }\n }\n if (Is.objectLiteral(one) && Is.objectLiteral(other)) {\n const oneKeys = Object.keys(one);\n const otherKeys = Object.keys(other);\n if (oneKeys.length !== otherKeys.length) {\n return false;\n }\n oneKeys.sort();\n otherKeys.sort();\n if (!equalsMetadata(oneKeys, otherKeys)) {\n return false;\n }\n for (let i = 0; i < oneKeys.length; i++) {\n const prop = oneKeys[i];\n if (!equalsMetadata(one[prop], other[prop])) {\n return false;\n }\n }\n }\n return true;\n }\n})(NotebookCell || (exports.NotebookCell = NotebookCell = {}));\nvar NotebookDocument;\n(function (NotebookDocument) {\n function create(uri, notebookType, version, cells) {\n return { uri, notebookType, version, cells };\n }\n NotebookDocument.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.uri) && vscode_languageserver_types_1.integer.is(candidate.version) && Is.typedArray(candidate.cells, NotebookCell.is);\n }\n NotebookDocument.is = is;\n})(NotebookDocument || (exports.NotebookDocument = NotebookDocument = {}));\nvar NotebookDocumentSyncRegistrationType;\n(function (NotebookDocumentSyncRegistrationType) {\n NotebookDocumentSyncRegistrationType.method = 'notebookDocument/sync';\n NotebookDocumentSyncRegistrationType.messageDirection = messages_1.MessageDirection.clientToServer;\n NotebookDocumentSyncRegistrationType.type = new messages_1.RegistrationType(NotebookDocumentSyncRegistrationType.method);\n})(NotebookDocumentSyncRegistrationType || (exports.NotebookDocumentSyncRegistrationType = NotebookDocumentSyncRegistrationType = {}));\n/**\n * A notification sent when a notebook opens.\n *\n * @since 3.17.0\n */\nvar DidOpenNotebookDocumentNotification;\n(function (DidOpenNotebookDocumentNotification) {\n DidOpenNotebookDocumentNotification.method = 'notebookDocument/didOpen';\n DidOpenNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidOpenNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidOpenNotebookDocumentNotification.method);\n DidOpenNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidOpenNotebookDocumentNotification || (exports.DidOpenNotebookDocumentNotification = DidOpenNotebookDocumentNotification = {}));\nvar NotebookCellArrayChange;\n(function (NotebookCellArrayChange) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && vscode_languageserver_types_1.uinteger.is(candidate.start) && vscode_languageserver_types_1.uinteger.is(candidate.deleteCount) && (candidate.cells === undefined || Is.typedArray(candidate.cells, NotebookCell.is));\n }\n NotebookCellArrayChange.is = is;\n function create(start, deleteCount, cells) {\n const result = { start, deleteCount };\n if (cells !== undefined) {\n result.cells = cells;\n }\n return result;\n }\n NotebookCellArrayChange.create = create;\n})(NotebookCellArrayChange || (exports.NotebookCellArrayChange = NotebookCellArrayChange = {}));\nvar DidChangeNotebookDocumentNotification;\n(function (DidChangeNotebookDocumentNotification) {\n DidChangeNotebookDocumentNotification.method = 'notebookDocument/didChange';\n DidChangeNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidChangeNotebookDocumentNotification.method);\n DidChangeNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidChangeNotebookDocumentNotification || (exports.DidChangeNotebookDocumentNotification = DidChangeNotebookDocumentNotification = {}));\n/**\n * A notification sent when a notebook document is saved.\n *\n * @since 3.17.0\n */\nvar DidSaveNotebookDocumentNotification;\n(function (DidSaveNotebookDocumentNotification) {\n DidSaveNotebookDocumentNotification.method = 'notebookDocument/didSave';\n DidSaveNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidSaveNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidSaveNotebookDocumentNotification.method);\n DidSaveNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidSaveNotebookDocumentNotification || (exports.DidSaveNotebookDocumentNotification = DidSaveNotebookDocumentNotification = {}));\n/**\n * A notification sent when a notebook closes.\n *\n * @since 3.17.0\n */\nvar DidCloseNotebookDocumentNotification;\n(function (DidCloseNotebookDocumentNotification) {\n DidCloseNotebookDocumentNotification.method = 'notebookDocument/didClose';\n DidCloseNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCloseNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidCloseNotebookDocumentNotification.method);\n DidCloseNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidCloseNotebookDocumentNotification || (exports.DidCloseNotebookDocumentNotification = DidCloseNotebookDocumentNotification = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlineCompletionRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide inline completions in a document. The request's parameter is of\n * type {@link InlineCompletionParams}, the response is of type\n * {@link InlineCompletion InlineCompletion[]} or a Thenable that resolves to such.\n *\n * @since 3.18.0\n * @proposed\n */\nvar InlineCompletionRequest;\n(function (InlineCompletionRequest) {\n InlineCompletionRequest.method = 'textDocument/inlineCompletion';\n InlineCompletionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InlineCompletionRequest.type = new messages_1.ProtocolRequestType(InlineCompletionRequest.method);\n})(InlineCompletionRequest || (exports.InlineCompletionRequest = InlineCompletionRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceSymbolRequest = exports.CodeActionResolveRequest = exports.CodeActionRequest = exports.DocumentSymbolRequest = exports.DocumentHighlightRequest = exports.ReferencesRequest = exports.DefinitionRequest = exports.SignatureHelpRequest = exports.SignatureHelpTriggerKind = exports.HoverRequest = exports.CompletionResolveRequest = exports.CompletionRequest = exports.CompletionTriggerKind = exports.PublishDiagnosticsNotification = exports.WatchKind = exports.RelativePattern = exports.FileChangeType = exports.DidChangeWatchedFilesNotification = exports.WillSaveTextDocumentWaitUntilRequest = exports.WillSaveTextDocumentNotification = exports.TextDocumentSaveReason = exports.DidSaveTextDocumentNotification = exports.DidCloseTextDocumentNotification = exports.DidChangeTextDocumentNotification = exports.TextDocumentContentChangeEvent = exports.DidOpenTextDocumentNotification = exports.TextDocumentSyncKind = exports.TelemetryEventNotification = exports.LogMessageNotification = exports.ShowMessageRequest = exports.ShowMessageNotification = exports.MessageType = exports.DidChangeConfigurationNotification = exports.ExitNotification = exports.ShutdownRequest = exports.InitializedNotification = exports.InitializeErrorCodes = exports.InitializeRequest = exports.WorkDoneProgressOptions = exports.TextDocumentRegistrationOptions = exports.StaticRegistrationOptions = exports.PositionEncodingKind = exports.FailureHandlingKind = exports.ResourceOperationKind = exports.UnregistrationRequest = exports.RegistrationRequest = exports.DocumentSelector = exports.NotebookCellTextDocumentFilter = exports.NotebookDocumentFilter = exports.TextDocumentFilter = void 0;\nexports.MonikerRequest = exports.MonikerKind = exports.UniquenessLevel = exports.WillDeleteFilesRequest = exports.DidDeleteFilesNotification = exports.WillRenameFilesRequest = exports.DidRenameFilesNotification = exports.WillCreateFilesRequest = exports.DidCreateFilesNotification = exports.FileOperationPatternKind = exports.LinkedEditingRangeRequest = exports.ShowDocumentRequest = exports.SemanticTokensRegistrationType = exports.SemanticTokensRefreshRequest = exports.SemanticTokensRangeRequest = exports.SemanticTokensDeltaRequest = exports.SemanticTokensRequest = exports.TokenFormat = exports.CallHierarchyPrepareRequest = exports.CallHierarchyOutgoingCallsRequest = exports.CallHierarchyIncomingCallsRequest = exports.WorkDoneProgressCancelNotification = exports.WorkDoneProgressCreateRequest = exports.WorkDoneProgress = exports.SelectionRangeRequest = exports.DeclarationRequest = exports.FoldingRangeRefreshRequest = exports.FoldingRangeRequest = exports.ColorPresentationRequest = exports.DocumentColorRequest = exports.ConfigurationRequest = exports.DidChangeWorkspaceFoldersNotification = exports.WorkspaceFoldersRequest = exports.TypeDefinitionRequest = exports.ImplementationRequest = exports.ApplyWorkspaceEditRequest = exports.ExecuteCommandRequest = exports.PrepareRenameRequest = exports.RenameRequest = exports.PrepareSupportDefaultBehavior = exports.DocumentOnTypeFormattingRequest = exports.DocumentRangesFormattingRequest = exports.DocumentRangeFormattingRequest = exports.DocumentFormattingRequest = exports.DocumentLinkResolveRequest = exports.DocumentLinkRequest = exports.CodeLensRefreshRequest = exports.CodeLensResolveRequest = exports.CodeLensRequest = exports.WorkspaceSymbolResolveRequest = void 0;\nexports.InlineCompletionRequest = exports.DidCloseNotebookDocumentNotification = exports.DidSaveNotebookDocumentNotification = exports.DidChangeNotebookDocumentNotification = exports.NotebookCellArrayChange = exports.DidOpenNotebookDocumentNotification = exports.NotebookDocumentSyncRegistrationType = exports.NotebookDocument = exports.NotebookCell = exports.ExecutionSummary = exports.NotebookCellKind = exports.DiagnosticRefreshRequest = exports.WorkspaceDiagnosticRequest = exports.DocumentDiagnosticRequest = exports.DocumentDiagnosticReportKind = exports.DiagnosticServerCancellationData = exports.InlayHintRefreshRequest = exports.InlayHintResolveRequest = exports.InlayHintRequest = exports.InlineValueRefreshRequest = exports.InlineValueRequest = exports.TypeHierarchySupertypesRequest = exports.TypeHierarchySubtypesRequest = exports.TypeHierarchyPrepareRequest = void 0;\nconst messages_1 = require(\"./messages\");\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst Is = require(\"./utils/is\");\nconst protocol_implementation_1 = require(\"./protocol.implementation\");\nObject.defineProperty(exports, \"ImplementationRequest\", { enumerable: true, get: function () { return protocol_implementation_1.ImplementationRequest; } });\nconst protocol_typeDefinition_1 = require(\"./protocol.typeDefinition\");\nObject.defineProperty(exports, \"TypeDefinitionRequest\", { enumerable: true, get: function () { return protocol_typeDefinition_1.TypeDefinitionRequest; } });\nconst protocol_workspaceFolder_1 = require(\"./protocol.workspaceFolder\");\nObject.defineProperty(exports, \"WorkspaceFoldersRequest\", { enumerable: true, get: function () { return protocol_workspaceFolder_1.WorkspaceFoldersRequest; } });\nObject.defineProperty(exports, \"DidChangeWorkspaceFoldersNotification\", { enumerable: true, get: function () { return protocol_workspaceFolder_1.DidChangeWorkspaceFoldersNotification; } });\nconst protocol_configuration_1 = require(\"./protocol.configuration\");\nObject.defineProperty(exports, \"ConfigurationRequest\", { enumerable: true, get: function () { return protocol_configuration_1.ConfigurationRequest; } });\nconst protocol_colorProvider_1 = require(\"./protocol.colorProvider\");\nObject.defineProperty(exports, \"DocumentColorRequest\", { enumerable: true, get: function () { return protocol_colorProvider_1.DocumentColorRequest; } });\nObject.defineProperty(exports, \"ColorPresentationRequest\", { enumerable: true, get: function () { return protocol_colorProvider_1.ColorPresentationRequest; } });\nconst protocol_foldingRange_1 = require(\"./protocol.foldingRange\");\nObject.defineProperty(exports, \"FoldingRangeRequest\", { enumerable: true, get: function () { return protocol_foldingRange_1.FoldingRangeRequest; } });\nObject.defineProperty(exports, \"FoldingRangeRefreshRequest\", { enumerable: true, get: function () { return protocol_foldingRange_1.FoldingRangeRefreshRequest; } });\nconst protocol_declaration_1 = require(\"./protocol.declaration\");\nObject.defineProperty(exports, \"DeclarationRequest\", { enumerable: true, get: function () { return protocol_declaration_1.DeclarationRequest; } });\nconst protocol_selectionRange_1 = require(\"./protocol.selectionRange\");\nObject.defineProperty(exports, \"SelectionRangeRequest\", { enumerable: true, get: function () { return protocol_selectionRange_1.SelectionRangeRequest; } });\nconst protocol_progress_1 = require(\"./protocol.progress\");\nObject.defineProperty(exports, \"WorkDoneProgress\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgress; } });\nObject.defineProperty(exports, \"WorkDoneProgressCreateRequest\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgressCreateRequest; } });\nObject.defineProperty(exports, \"WorkDoneProgressCancelNotification\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgressCancelNotification; } });\nconst protocol_callHierarchy_1 = require(\"./protocol.callHierarchy\");\nObject.defineProperty(exports, \"CallHierarchyIncomingCallsRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyIncomingCallsRequest; } });\nObject.defineProperty(exports, \"CallHierarchyOutgoingCallsRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyOutgoingCallsRequest; } });\nObject.defineProperty(exports, \"CallHierarchyPrepareRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyPrepareRequest; } });\nconst protocol_semanticTokens_1 = require(\"./protocol.semanticTokens\");\nObject.defineProperty(exports, \"TokenFormat\", { enumerable: true, get: function () { return protocol_semanticTokens_1.TokenFormat; } });\nObject.defineProperty(exports, \"SemanticTokensRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRequest; } });\nObject.defineProperty(exports, \"SemanticTokensDeltaRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensDeltaRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRangeRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRangeRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRefreshRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRefreshRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRegistrationType\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRegistrationType; } });\nconst protocol_showDocument_1 = require(\"./protocol.showDocument\");\nObject.defineProperty(exports, \"ShowDocumentRequest\", { enumerable: true, get: function () { return protocol_showDocument_1.ShowDocumentRequest; } });\nconst protocol_linkedEditingRange_1 = require(\"./protocol.linkedEditingRange\");\nObject.defineProperty(exports, \"LinkedEditingRangeRequest\", { enumerable: true, get: function () { return protocol_linkedEditingRange_1.LinkedEditingRangeRequest; } });\nconst protocol_fileOperations_1 = require(\"./protocol.fileOperations\");\nObject.defineProperty(exports, \"FileOperationPatternKind\", { enumerable: true, get: function () { return protocol_fileOperations_1.FileOperationPatternKind; } });\nObject.defineProperty(exports, \"DidCreateFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidCreateFilesNotification; } });\nObject.defineProperty(exports, \"WillCreateFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillCreateFilesRequest; } });\nObject.defineProperty(exports, \"DidRenameFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidRenameFilesNotification; } });\nObject.defineProperty(exports, \"WillRenameFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillRenameFilesRequest; } });\nObject.defineProperty(exports, \"DidDeleteFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidDeleteFilesNotification; } });\nObject.defineProperty(exports, \"WillDeleteFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillDeleteFilesRequest; } });\nconst protocol_moniker_1 = require(\"./protocol.moniker\");\nObject.defineProperty(exports, \"UniquenessLevel\", { enumerable: true, get: function () { return protocol_moniker_1.UniquenessLevel; } });\nObject.defineProperty(exports, \"MonikerKind\", { enumerable: true, get: function () { return protocol_moniker_1.MonikerKind; } });\nObject.defineProperty(exports, \"MonikerRequest\", { enumerable: true, get: function () { return protocol_moniker_1.MonikerRequest; } });\nconst protocol_typeHierarchy_1 = require(\"./protocol.typeHierarchy\");\nObject.defineProperty(exports, \"TypeHierarchyPrepareRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchyPrepareRequest; } });\nObject.defineProperty(exports, \"TypeHierarchySubtypesRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchySubtypesRequest; } });\nObject.defineProperty(exports, \"TypeHierarchySupertypesRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchySupertypesRequest; } });\nconst protocol_inlineValue_1 = require(\"./protocol.inlineValue\");\nObject.defineProperty(exports, \"InlineValueRequest\", { enumerable: true, get: function () { return protocol_inlineValue_1.InlineValueRequest; } });\nObject.defineProperty(exports, \"InlineValueRefreshRequest\", { enumerable: true, get: function () { return protocol_inlineValue_1.InlineValueRefreshRequest; } });\nconst protocol_inlayHint_1 = require(\"./protocol.inlayHint\");\nObject.defineProperty(exports, \"InlayHintRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintRequest; } });\nObject.defineProperty(exports, \"InlayHintResolveRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintResolveRequest; } });\nObject.defineProperty(exports, \"InlayHintRefreshRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintRefreshRequest; } });\nconst protocol_diagnostic_1 = require(\"./protocol.diagnostic\");\nObject.defineProperty(exports, \"DiagnosticServerCancellationData\", { enumerable: true, get: function () { return protocol_diagnostic_1.DiagnosticServerCancellationData; } });\nObject.defineProperty(exports, \"DocumentDiagnosticReportKind\", { enumerable: true, get: function () { return protocol_diagnostic_1.DocumentDiagnosticReportKind; } });\nObject.defineProperty(exports, \"DocumentDiagnosticRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.DocumentDiagnosticRequest; } });\nObject.defineProperty(exports, \"WorkspaceDiagnosticRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.WorkspaceDiagnosticRequest; } });\nObject.defineProperty(exports, \"DiagnosticRefreshRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.DiagnosticRefreshRequest; } });\nconst protocol_notebook_1 = require(\"./protocol.notebook\");\nObject.defineProperty(exports, \"NotebookCellKind\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCellKind; } });\nObject.defineProperty(exports, \"ExecutionSummary\", { enumerable: true, get: function () { return protocol_notebook_1.ExecutionSummary; } });\nObject.defineProperty(exports, \"NotebookCell\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCell; } });\nObject.defineProperty(exports, \"NotebookDocument\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookDocument; } });\nObject.defineProperty(exports, \"NotebookDocumentSyncRegistrationType\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookDocumentSyncRegistrationType; } });\nObject.defineProperty(exports, \"DidOpenNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidOpenNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"NotebookCellArrayChange\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCellArrayChange; } });\nObject.defineProperty(exports, \"DidChangeNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidChangeNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"DidSaveNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidSaveNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"DidCloseNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidCloseNotebookDocumentNotification; } });\nconst protocol_inlineCompletion_1 = require(\"./protocol.inlineCompletion\");\nObject.defineProperty(exports, \"InlineCompletionRequest\", { enumerable: true, get: function () { return protocol_inlineCompletion_1.InlineCompletionRequest; } });\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * The TextDocumentFilter namespace provides helper functions to work with\n * {@link TextDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar TextDocumentFilter;\n(function (TextDocumentFilter) {\n function is(value) {\n const candidate = value;\n return Is.string(candidate) || (Is.string(candidate.language) || Is.string(candidate.scheme) || Is.string(candidate.pattern));\n }\n TextDocumentFilter.is = is;\n})(TextDocumentFilter || (exports.TextDocumentFilter = TextDocumentFilter = {}));\n/**\n * The NotebookDocumentFilter namespace provides helper functions to work with\n * {@link NotebookDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar NotebookDocumentFilter;\n(function (NotebookDocumentFilter) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (Is.string(candidate.notebookType) || Is.string(candidate.scheme) || Is.string(candidate.pattern));\n }\n NotebookDocumentFilter.is = is;\n})(NotebookDocumentFilter || (exports.NotebookDocumentFilter = NotebookDocumentFilter = {}));\n/**\n * The NotebookCellTextDocumentFilter namespace provides helper functions to work with\n * {@link NotebookCellTextDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar NotebookCellTextDocumentFilter;\n(function (NotebookCellTextDocumentFilter) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate)\n && (Is.string(candidate.notebook) || NotebookDocumentFilter.is(candidate.notebook))\n && (candidate.language === undefined || Is.string(candidate.language));\n }\n NotebookCellTextDocumentFilter.is = is;\n})(NotebookCellTextDocumentFilter || (exports.NotebookCellTextDocumentFilter = NotebookCellTextDocumentFilter = {}));\n/**\n * The DocumentSelector namespace provides helper functions to work with\n * {@link DocumentSelector}s.\n */\nvar DocumentSelector;\n(function (DocumentSelector) {\n function is(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n for (let elem of value) {\n if (!Is.string(elem) && !TextDocumentFilter.is(elem) && !NotebookCellTextDocumentFilter.is(elem)) {\n return false;\n }\n }\n return true;\n }\n DocumentSelector.is = is;\n})(DocumentSelector || (exports.DocumentSelector = DocumentSelector = {}));\n/**\n * The `client/registerCapability` request is sent from the server to the client to register a new capability\n * handler on the client side.\n */\nvar RegistrationRequest;\n(function (RegistrationRequest) {\n RegistrationRequest.method = 'client/registerCapability';\n RegistrationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n RegistrationRequest.type = new messages_1.ProtocolRequestType(RegistrationRequest.method);\n})(RegistrationRequest || (exports.RegistrationRequest = RegistrationRequest = {}));\n/**\n * The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability\n * handler on the client side.\n */\nvar UnregistrationRequest;\n(function (UnregistrationRequest) {\n UnregistrationRequest.method = 'client/unregisterCapability';\n UnregistrationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n UnregistrationRequest.type = new messages_1.ProtocolRequestType(UnregistrationRequest.method);\n})(UnregistrationRequest || (exports.UnregistrationRequest = UnregistrationRequest = {}));\nvar ResourceOperationKind;\n(function (ResourceOperationKind) {\n /**\n * Supports creating new files and folders.\n */\n ResourceOperationKind.Create = 'create';\n /**\n * Supports renaming existing files and folders.\n */\n ResourceOperationKind.Rename = 'rename';\n /**\n * Supports deleting existing files and folders.\n */\n ResourceOperationKind.Delete = 'delete';\n})(ResourceOperationKind || (exports.ResourceOperationKind = ResourceOperationKind = {}));\nvar FailureHandlingKind;\n(function (FailureHandlingKind) {\n /**\n * Applying the workspace change is simply aborted if one of the changes provided\n * fails. All operations executed before the failing operation stay executed.\n */\n FailureHandlingKind.Abort = 'abort';\n /**\n * All operations are executed transactional. That means they either all\n * succeed or no changes at all are applied to the workspace.\n */\n FailureHandlingKind.Transactional = 'transactional';\n /**\n * If the workspace edit contains only textual file changes they are executed transactional.\n * If resource changes (create, rename or delete file) are part of the change the failure\n * handling strategy is abort.\n */\n FailureHandlingKind.TextOnlyTransactional = 'textOnlyTransactional';\n /**\n * The client tries to undo the operations already executed. But there is no\n * guarantee that this is succeeding.\n */\n FailureHandlingKind.Undo = 'undo';\n})(FailureHandlingKind || (exports.FailureHandlingKind = FailureHandlingKind = {}));\n/**\n * A set of predefined position encoding kinds.\n *\n * @since 3.17.0\n */\nvar PositionEncodingKind;\n(function (PositionEncodingKind) {\n /**\n * Character offsets count UTF-8 code units (e.g. bytes).\n */\n PositionEncodingKind.UTF8 = 'utf-8';\n /**\n * Character offsets count UTF-16 code units.\n *\n * This is the default and must always be supported\n * by servers\n */\n PositionEncodingKind.UTF16 = 'utf-16';\n /**\n * Character offsets count UTF-32 code units.\n *\n * Implementation note: these are the same as Unicode codepoints,\n * so this `PositionEncodingKind` may also be used for an\n * encoding-agnostic representation of character offsets.\n */\n PositionEncodingKind.UTF32 = 'utf-32';\n})(PositionEncodingKind || (exports.PositionEncodingKind = PositionEncodingKind = {}));\n/**\n * The StaticRegistrationOptions namespace provides helper functions to work with\n * {@link StaticRegistrationOptions} literals.\n */\nvar StaticRegistrationOptions;\n(function (StaticRegistrationOptions) {\n function hasId(value) {\n const candidate = value;\n return candidate && Is.string(candidate.id) && candidate.id.length > 0;\n }\n StaticRegistrationOptions.hasId = hasId;\n})(StaticRegistrationOptions || (exports.StaticRegistrationOptions = StaticRegistrationOptions = {}));\n/**\n * The TextDocumentRegistrationOptions namespace provides helper functions to work with\n * {@link TextDocumentRegistrationOptions} literals.\n */\nvar TextDocumentRegistrationOptions;\n(function (TextDocumentRegistrationOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.documentSelector === null || DocumentSelector.is(candidate.documentSelector));\n }\n TextDocumentRegistrationOptions.is = is;\n})(TextDocumentRegistrationOptions || (exports.TextDocumentRegistrationOptions = TextDocumentRegistrationOptions = {}));\n/**\n * The WorkDoneProgressOptions namespace provides helper functions to work with\n * {@link WorkDoneProgressOptions} literals.\n */\nvar WorkDoneProgressOptions;\n(function (WorkDoneProgressOptions) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (candidate.workDoneProgress === undefined || Is.boolean(candidate.workDoneProgress));\n }\n WorkDoneProgressOptions.is = is;\n function hasWorkDoneProgress(value) {\n const candidate = value;\n return candidate && Is.boolean(candidate.workDoneProgress);\n }\n WorkDoneProgressOptions.hasWorkDoneProgress = hasWorkDoneProgress;\n})(WorkDoneProgressOptions || (exports.WorkDoneProgressOptions = WorkDoneProgressOptions = {}));\n/**\n * The initialize request is sent from the client to the server.\n * It is sent once as the request after starting up the server.\n * The requests parameter is of type {@link InitializeParams}\n * the response if of type {@link InitializeResult} of a Thenable that\n * resolves to such.\n */\nvar InitializeRequest;\n(function (InitializeRequest) {\n InitializeRequest.method = 'initialize';\n InitializeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InitializeRequest.type = new messages_1.ProtocolRequestType(InitializeRequest.method);\n})(InitializeRequest || (exports.InitializeRequest = InitializeRequest = {}));\n/**\n * Known error codes for an `InitializeErrorCodes`;\n */\nvar InitializeErrorCodes;\n(function (InitializeErrorCodes) {\n /**\n * If the protocol version provided by the client can't be handled by the server.\n *\n * @deprecated This initialize error got replaced by client capabilities. There is\n * no version handshake in version 3.0x\n */\n InitializeErrorCodes.unknownProtocolVersion = 1;\n})(InitializeErrorCodes || (exports.InitializeErrorCodes = InitializeErrorCodes = {}));\n/**\n * The initialized notification is sent from the client to the\n * server after the client is fully initialized and the server\n * is allowed to send requests from the server to the client.\n */\nvar InitializedNotification;\n(function (InitializedNotification) {\n InitializedNotification.method = 'initialized';\n InitializedNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n InitializedNotification.type = new messages_1.ProtocolNotificationType(InitializedNotification.method);\n})(InitializedNotification || (exports.InitializedNotification = InitializedNotification = {}));\n//---- Shutdown Method ----\n/**\n * A shutdown request is sent from the client to the server.\n * It is sent once when the client decides to shutdown the\n * server. The only notification that is sent after a shutdown request\n * is the exit event.\n */\nvar ShutdownRequest;\n(function (ShutdownRequest) {\n ShutdownRequest.method = 'shutdown';\n ShutdownRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ShutdownRequest.type = new messages_1.ProtocolRequestType0(ShutdownRequest.method);\n})(ShutdownRequest || (exports.ShutdownRequest = ShutdownRequest = {}));\n//---- Exit Notification ----\n/**\n * The exit event is sent from the client to the server to\n * ask the server to exit its process.\n */\nvar ExitNotification;\n(function (ExitNotification) {\n ExitNotification.method = 'exit';\n ExitNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n ExitNotification.type = new messages_1.ProtocolNotificationType0(ExitNotification.method);\n})(ExitNotification || (exports.ExitNotification = ExitNotification = {}));\n/**\n * The configuration change notification is sent from the client to the server\n * when the client's configuration has changed. The notification contains\n * the changed configuration as defined by the language client.\n */\nvar DidChangeConfigurationNotification;\n(function (DidChangeConfigurationNotification) {\n DidChangeConfigurationNotification.method = 'workspace/didChangeConfiguration';\n DidChangeConfigurationNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeConfigurationNotification.type = new messages_1.ProtocolNotificationType(DidChangeConfigurationNotification.method);\n})(DidChangeConfigurationNotification || (exports.DidChangeConfigurationNotification = DidChangeConfigurationNotification = {}));\n//---- Message show and log notifications ----\n/**\n * The message type\n */\nvar MessageType;\n(function (MessageType) {\n /**\n * An error message.\n */\n MessageType.Error = 1;\n /**\n * A warning message.\n */\n MessageType.Warning = 2;\n /**\n * An information message.\n */\n MessageType.Info = 3;\n /**\n * A log message.\n */\n MessageType.Log = 4;\n /**\n * A debug message.\n *\n * @since 3.18.0\n */\n MessageType.Debug = 5;\n})(MessageType || (exports.MessageType = MessageType = {}));\n/**\n * The show message notification is sent from a server to a client to ask\n * the client to display a particular message in the user interface.\n */\nvar ShowMessageNotification;\n(function (ShowMessageNotification) {\n ShowMessageNotification.method = 'window/showMessage';\n ShowMessageNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowMessageNotification.type = new messages_1.ProtocolNotificationType(ShowMessageNotification.method);\n})(ShowMessageNotification || (exports.ShowMessageNotification = ShowMessageNotification = {}));\n/**\n * The show message request is sent from the server to the client to show a message\n * and a set of options actions to the user.\n */\nvar ShowMessageRequest;\n(function (ShowMessageRequest) {\n ShowMessageRequest.method = 'window/showMessageRequest';\n ShowMessageRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowMessageRequest.type = new messages_1.ProtocolRequestType(ShowMessageRequest.method);\n})(ShowMessageRequest || (exports.ShowMessageRequest = ShowMessageRequest = {}));\n/**\n * The log message notification is sent from the server to the client to ask\n * the client to log a particular message.\n */\nvar LogMessageNotification;\n(function (LogMessageNotification) {\n LogMessageNotification.method = 'window/logMessage';\n LogMessageNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n LogMessageNotification.type = new messages_1.ProtocolNotificationType(LogMessageNotification.method);\n})(LogMessageNotification || (exports.LogMessageNotification = LogMessageNotification = {}));\n//---- Telemetry notification\n/**\n * The telemetry event notification is sent from the server to the client to ask\n * the client to log telemetry data.\n */\nvar TelemetryEventNotification;\n(function (TelemetryEventNotification) {\n TelemetryEventNotification.method = 'telemetry/event';\n TelemetryEventNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n TelemetryEventNotification.type = new messages_1.ProtocolNotificationType(TelemetryEventNotification.method);\n})(TelemetryEventNotification || (exports.TelemetryEventNotification = TelemetryEventNotification = {}));\n/**\n * Defines how the host (editor) should sync\n * document changes to the language server.\n */\nvar TextDocumentSyncKind;\n(function (TextDocumentSyncKind) {\n /**\n * Documents should not be synced at all.\n */\n TextDocumentSyncKind.None = 0;\n /**\n * Documents are synced by always sending the full content\n * of the document.\n */\n TextDocumentSyncKind.Full = 1;\n /**\n * Documents are synced by sending the full content on open.\n * After that only incremental updates to the document are\n * send.\n */\n TextDocumentSyncKind.Incremental = 2;\n})(TextDocumentSyncKind || (exports.TextDocumentSyncKind = TextDocumentSyncKind = {}));\n/**\n * The document open notification is sent from the client to the server to signal\n * newly opened text documents. The document's truth is now managed by the client\n * and the server must not try to read the document's truth using the document's\n * uri. Open in this sense means it is managed by the client. It doesn't necessarily\n * mean that its content is presented in an editor. An open notification must not\n * be sent more than once without a corresponding close notification send before.\n * This means open and close notification must be balanced and the max open count\n * is one.\n */\nvar DidOpenTextDocumentNotification;\n(function (DidOpenTextDocumentNotification) {\n DidOpenTextDocumentNotification.method = 'textDocument/didOpen';\n DidOpenTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidOpenTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification.method);\n})(DidOpenTextDocumentNotification || (exports.DidOpenTextDocumentNotification = DidOpenTextDocumentNotification = {}));\nvar TextDocumentContentChangeEvent;\n(function (TextDocumentContentChangeEvent) {\n /**\n * Checks whether the information describes a delta event.\n */\n function isIncremental(event) {\n let candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n }\n TextDocumentContentChangeEvent.isIncremental = isIncremental;\n /**\n * Checks whether the information describes a full replacement event.\n */\n function isFull(event) {\n let candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n }\n TextDocumentContentChangeEvent.isFull = isFull;\n})(TextDocumentContentChangeEvent || (exports.TextDocumentContentChangeEvent = TextDocumentContentChangeEvent = {}));\n/**\n * The document change notification is sent from the client to the server to signal\n * changes to a text document.\n */\nvar DidChangeTextDocumentNotification;\n(function (DidChangeTextDocumentNotification) {\n DidChangeTextDocumentNotification.method = 'textDocument/didChange';\n DidChangeTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidChangeTextDocumentNotification.method);\n})(DidChangeTextDocumentNotification || (exports.DidChangeTextDocumentNotification = DidChangeTextDocumentNotification = {}));\n/**\n * The document close notification is sent from the client to the server when\n * the document got closed in the client. The document's truth now exists where\n * the document's uri points to (e.g. if the document's uri is a file uri the\n * truth now exists on disk). As with the open notification the close notification\n * is about managing the document's content. Receiving a close notification\n * doesn't mean that the document was open in an editor before. A close\n * notification requires a previous open notification to be sent.\n */\nvar DidCloseTextDocumentNotification;\n(function (DidCloseTextDocumentNotification) {\n DidCloseTextDocumentNotification.method = 'textDocument/didClose';\n DidCloseTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCloseTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidCloseTextDocumentNotification.method);\n})(DidCloseTextDocumentNotification || (exports.DidCloseTextDocumentNotification = DidCloseTextDocumentNotification = {}));\n/**\n * The document save notification is sent from the client to the server when\n * the document got saved in the client.\n */\nvar DidSaveTextDocumentNotification;\n(function (DidSaveTextDocumentNotification) {\n DidSaveTextDocumentNotification.method = 'textDocument/didSave';\n DidSaveTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidSaveTextDocumentNotification.method);\n})(DidSaveTextDocumentNotification || (exports.DidSaveTextDocumentNotification = DidSaveTextDocumentNotification = {}));\n/**\n * Represents reasons why a text document is saved.\n */\nvar TextDocumentSaveReason;\n(function (TextDocumentSaveReason) {\n /**\n * Manually triggered, e.g. by the user pressing save, by starting debugging,\n * or by an API call.\n */\n TextDocumentSaveReason.Manual = 1;\n /**\n * Automatic after a delay.\n */\n TextDocumentSaveReason.AfterDelay = 2;\n /**\n * When the editor lost focus.\n */\n TextDocumentSaveReason.FocusOut = 3;\n})(TextDocumentSaveReason || (exports.TextDocumentSaveReason = TextDocumentSaveReason = {}));\n/**\n * A document will save notification is sent from the client to the server before\n * the document is actually saved.\n */\nvar WillSaveTextDocumentNotification;\n(function (WillSaveTextDocumentNotification) {\n WillSaveTextDocumentNotification.method = 'textDocument/willSave';\n WillSaveTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n WillSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(WillSaveTextDocumentNotification.method);\n})(WillSaveTextDocumentNotification || (exports.WillSaveTextDocumentNotification = WillSaveTextDocumentNotification = {}));\n/**\n * A document will save request is sent from the client to the server before\n * the document is actually saved. The request can return an array of TextEdits\n * which will be applied to the text document before it is saved. Please note that\n * clients might drop results if computing the text edits took too long or if a\n * server constantly fails on this request. This is done to keep the save fast and\n * reliable.\n */\nvar WillSaveTextDocumentWaitUntilRequest;\n(function (WillSaveTextDocumentWaitUntilRequest) {\n WillSaveTextDocumentWaitUntilRequest.method = 'textDocument/willSaveWaitUntil';\n WillSaveTextDocumentWaitUntilRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WillSaveTextDocumentWaitUntilRequest.type = new messages_1.ProtocolRequestType(WillSaveTextDocumentWaitUntilRequest.method);\n})(WillSaveTextDocumentWaitUntilRequest || (exports.WillSaveTextDocumentWaitUntilRequest = WillSaveTextDocumentWaitUntilRequest = {}));\n/**\n * The watched files notification is sent from the client to the server when\n * the client detects changes to file watched by the language client.\n */\nvar DidChangeWatchedFilesNotification;\n(function (DidChangeWatchedFilesNotification) {\n DidChangeWatchedFilesNotification.method = 'workspace/didChangeWatchedFiles';\n DidChangeWatchedFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeWatchedFilesNotification.type = new messages_1.ProtocolNotificationType(DidChangeWatchedFilesNotification.method);\n})(DidChangeWatchedFilesNotification || (exports.DidChangeWatchedFilesNotification = DidChangeWatchedFilesNotification = {}));\n/**\n * The file event type\n */\nvar FileChangeType;\n(function (FileChangeType) {\n /**\n * The file got created.\n */\n FileChangeType.Created = 1;\n /**\n * The file got changed.\n */\n FileChangeType.Changed = 2;\n /**\n * The file got deleted.\n */\n FileChangeType.Deleted = 3;\n})(FileChangeType || (exports.FileChangeType = FileChangeType = {}));\nvar RelativePattern;\n(function (RelativePattern) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (vscode_languageserver_types_1.URI.is(candidate.baseUri) || vscode_languageserver_types_1.WorkspaceFolder.is(candidate.baseUri)) && Is.string(candidate.pattern);\n }\n RelativePattern.is = is;\n})(RelativePattern || (exports.RelativePattern = RelativePattern = {}));\nvar WatchKind;\n(function (WatchKind) {\n /**\n * Interested in create events.\n */\n WatchKind.Create = 1;\n /**\n * Interested in change events\n */\n WatchKind.Change = 2;\n /**\n * Interested in delete events\n */\n WatchKind.Delete = 4;\n})(WatchKind || (exports.WatchKind = WatchKind = {}));\n/**\n * Diagnostics notification are sent from the server to the client to signal\n * results of validation runs.\n */\nvar PublishDiagnosticsNotification;\n(function (PublishDiagnosticsNotification) {\n PublishDiagnosticsNotification.method = 'textDocument/publishDiagnostics';\n PublishDiagnosticsNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n PublishDiagnosticsNotification.type = new messages_1.ProtocolNotificationType(PublishDiagnosticsNotification.method);\n})(PublishDiagnosticsNotification || (exports.PublishDiagnosticsNotification = PublishDiagnosticsNotification = {}));\n/**\n * How a completion was triggered\n */\nvar CompletionTriggerKind;\n(function (CompletionTriggerKind) {\n /**\n * Completion was triggered by typing an identifier (24x7 code\n * complete), manual invocation (e.g Ctrl+Space) or via API.\n */\n CompletionTriggerKind.Invoked = 1;\n /**\n * Completion was triggered by a trigger character specified by\n * the `triggerCharacters` properties of the `CompletionRegistrationOptions`.\n */\n CompletionTriggerKind.TriggerCharacter = 2;\n /**\n * Completion was re-triggered as current completion list is incomplete\n */\n CompletionTriggerKind.TriggerForIncompleteCompletions = 3;\n})(CompletionTriggerKind || (exports.CompletionTriggerKind = CompletionTriggerKind = {}));\n/**\n * Request to request completion at a given text document position. The request's\n * parameter is of type {@link TextDocumentPosition} the response\n * is of type {@link CompletionItem CompletionItem[]} or {@link CompletionList}\n * or a Thenable that resolves to such.\n *\n * The request can delay the computation of the {@link CompletionItem.detail `detail`}\n * and {@link CompletionItem.documentation `documentation`} properties to the `completionItem/resolve`\n * request. However, properties that are needed for the initial sorting and filtering, like `sortText`,\n * `filterText`, `insertText`, and `textEdit`, must not be changed during resolve.\n */\nvar CompletionRequest;\n(function (CompletionRequest) {\n CompletionRequest.method = 'textDocument/completion';\n CompletionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CompletionRequest.type = new messages_1.ProtocolRequestType(CompletionRequest.method);\n})(CompletionRequest || (exports.CompletionRequest = CompletionRequest = {}));\n/**\n * Request to resolve additional information for a given completion item.The request's\n * parameter is of type {@link CompletionItem} the response\n * is of type {@link CompletionItem} or a Thenable that resolves to such.\n */\nvar CompletionResolveRequest;\n(function (CompletionResolveRequest) {\n CompletionResolveRequest.method = 'completionItem/resolve';\n CompletionResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CompletionResolveRequest.type = new messages_1.ProtocolRequestType(CompletionResolveRequest.method);\n})(CompletionResolveRequest || (exports.CompletionResolveRequest = CompletionResolveRequest = {}));\n/**\n * Request to request hover information at a given text document position. The request's\n * parameter is of type {@link TextDocumentPosition} the response is of\n * type {@link Hover} or a Thenable that resolves to such.\n */\nvar HoverRequest;\n(function (HoverRequest) {\n HoverRequest.method = 'textDocument/hover';\n HoverRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n HoverRequest.type = new messages_1.ProtocolRequestType(HoverRequest.method);\n})(HoverRequest || (exports.HoverRequest = HoverRequest = {}));\n/**\n * How a signature help was triggered.\n *\n * @since 3.15.0\n */\nvar SignatureHelpTriggerKind;\n(function (SignatureHelpTriggerKind) {\n /**\n * Signature help was invoked manually by the user or by a command.\n */\n SignatureHelpTriggerKind.Invoked = 1;\n /**\n * Signature help was triggered by a trigger character.\n */\n SignatureHelpTriggerKind.TriggerCharacter = 2;\n /**\n * Signature help was triggered by the cursor moving or by the document content changing.\n */\n SignatureHelpTriggerKind.ContentChange = 3;\n})(SignatureHelpTriggerKind || (exports.SignatureHelpTriggerKind = SignatureHelpTriggerKind = {}));\nvar SignatureHelpRequest;\n(function (SignatureHelpRequest) {\n SignatureHelpRequest.method = 'textDocument/signatureHelp';\n SignatureHelpRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SignatureHelpRequest.type = new messages_1.ProtocolRequestType(SignatureHelpRequest.method);\n})(SignatureHelpRequest || (exports.SignatureHelpRequest = SignatureHelpRequest = {}));\n/**\n * A request to resolve the definition location of a symbol at a given text\n * document position. The request's parameter is of type {@link TextDocumentPosition}\n * the response is of either type {@link Definition} or a typed array of\n * {@link DefinitionLink} or a Thenable that resolves to such.\n */\nvar DefinitionRequest;\n(function (DefinitionRequest) {\n DefinitionRequest.method = 'textDocument/definition';\n DefinitionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DefinitionRequest.type = new messages_1.ProtocolRequestType(DefinitionRequest.method);\n})(DefinitionRequest || (exports.DefinitionRequest = DefinitionRequest = {}));\n/**\n * A request to resolve project-wide references for the symbol denoted\n * by the given text document position. The request's parameter is of\n * type {@link ReferenceParams} the response is of type\n * {@link Location Location[]} or a Thenable that resolves to such.\n */\nvar ReferencesRequest;\n(function (ReferencesRequest) {\n ReferencesRequest.method = 'textDocument/references';\n ReferencesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ReferencesRequest.type = new messages_1.ProtocolRequestType(ReferencesRequest.method);\n})(ReferencesRequest || (exports.ReferencesRequest = ReferencesRequest = {}));\n/**\n * Request to resolve a {@link DocumentHighlight} for a given\n * text document position. The request's parameter is of type {@link TextDocumentPosition}\n * the request response is an array of type {@link DocumentHighlight}\n * or a Thenable that resolves to such.\n */\nvar DocumentHighlightRequest;\n(function (DocumentHighlightRequest) {\n DocumentHighlightRequest.method = 'textDocument/documentHighlight';\n DocumentHighlightRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentHighlightRequest.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest.method);\n})(DocumentHighlightRequest || (exports.DocumentHighlightRequest = DocumentHighlightRequest = {}));\n/**\n * A request to list all symbols found in a given text document. The request's\n * parameter is of type {@link TextDocumentIdentifier} the\n * response is of type {@link SymbolInformation SymbolInformation[]} or a Thenable\n * that resolves to such.\n */\nvar DocumentSymbolRequest;\n(function (DocumentSymbolRequest) {\n DocumentSymbolRequest.method = 'textDocument/documentSymbol';\n DocumentSymbolRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentSymbolRequest.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest.method);\n})(DocumentSymbolRequest || (exports.DocumentSymbolRequest = DocumentSymbolRequest = {}));\n/**\n * A request to provide commands for the given text document and range.\n */\nvar CodeActionRequest;\n(function (CodeActionRequest) {\n CodeActionRequest.method = 'textDocument/codeAction';\n CodeActionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeActionRequest.type = new messages_1.ProtocolRequestType(CodeActionRequest.method);\n})(CodeActionRequest || (exports.CodeActionRequest = CodeActionRequest = {}));\n/**\n * Request to resolve additional information for a given code action.The request's\n * parameter is of type {@link CodeAction} the response\n * is of type {@link CodeAction} or a Thenable that resolves to such.\n */\nvar CodeActionResolveRequest;\n(function (CodeActionResolveRequest) {\n CodeActionResolveRequest.method = 'codeAction/resolve';\n CodeActionResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeActionResolveRequest.type = new messages_1.ProtocolRequestType(CodeActionResolveRequest.method);\n})(CodeActionResolveRequest || (exports.CodeActionResolveRequest = CodeActionResolveRequest = {}));\n/**\n * A request to list project-wide symbols matching the query string given\n * by the {@link WorkspaceSymbolParams}. The response is\n * of type {@link SymbolInformation SymbolInformation[]} or a Thenable that\n * resolves to such.\n *\n * @since 3.17.0 - support for WorkspaceSymbol in the returned data. Clients\n * need to advertise support for WorkspaceSymbols via the client capability\n * `workspace.symbol.resolveSupport`.\n *\n */\nvar WorkspaceSymbolRequest;\n(function (WorkspaceSymbolRequest) {\n WorkspaceSymbolRequest.method = 'workspace/symbol';\n WorkspaceSymbolRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceSymbolRequest.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest.method);\n})(WorkspaceSymbolRequest || (exports.WorkspaceSymbolRequest = WorkspaceSymbolRequest = {}));\n/**\n * A request to resolve the range inside the workspace\n * symbol's location.\n *\n * @since 3.17.0\n */\nvar WorkspaceSymbolResolveRequest;\n(function (WorkspaceSymbolResolveRequest) {\n WorkspaceSymbolResolveRequest.method = 'workspaceSymbol/resolve';\n WorkspaceSymbolResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceSymbolResolveRequest.type = new messages_1.ProtocolRequestType(WorkspaceSymbolResolveRequest.method);\n})(WorkspaceSymbolResolveRequest || (exports.WorkspaceSymbolResolveRequest = WorkspaceSymbolResolveRequest = {}));\n/**\n * A request to provide code lens for the given text document.\n */\nvar CodeLensRequest;\n(function (CodeLensRequest) {\n CodeLensRequest.method = 'textDocument/codeLens';\n CodeLensRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeLensRequest.type = new messages_1.ProtocolRequestType(CodeLensRequest.method);\n})(CodeLensRequest || (exports.CodeLensRequest = CodeLensRequest = {}));\n/**\n * A request to resolve a command for a given code lens.\n */\nvar CodeLensResolveRequest;\n(function (CodeLensResolveRequest) {\n CodeLensResolveRequest.method = 'codeLens/resolve';\n CodeLensResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeLensResolveRequest.type = new messages_1.ProtocolRequestType(CodeLensResolveRequest.method);\n})(CodeLensResolveRequest || (exports.CodeLensResolveRequest = CodeLensResolveRequest = {}));\n/**\n * A request to refresh all code actions\n *\n * @since 3.16.0\n */\nvar CodeLensRefreshRequest;\n(function (CodeLensRefreshRequest) {\n CodeLensRefreshRequest.method = `workspace/codeLens/refresh`;\n CodeLensRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n CodeLensRefreshRequest.type = new messages_1.ProtocolRequestType0(CodeLensRefreshRequest.method);\n})(CodeLensRefreshRequest || (exports.CodeLensRefreshRequest = CodeLensRefreshRequest = {}));\n/**\n * A request to provide document links\n */\nvar DocumentLinkRequest;\n(function (DocumentLinkRequest) {\n DocumentLinkRequest.method = 'textDocument/documentLink';\n DocumentLinkRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentLinkRequest.type = new messages_1.ProtocolRequestType(DocumentLinkRequest.method);\n})(DocumentLinkRequest || (exports.DocumentLinkRequest = DocumentLinkRequest = {}));\n/**\n * Request to resolve additional information for a given document link. The request's\n * parameter is of type {@link DocumentLink} the response\n * is of type {@link DocumentLink} or a Thenable that resolves to such.\n */\nvar DocumentLinkResolveRequest;\n(function (DocumentLinkResolveRequest) {\n DocumentLinkResolveRequest.method = 'documentLink/resolve';\n DocumentLinkResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentLinkResolveRequest.type = new messages_1.ProtocolRequestType(DocumentLinkResolveRequest.method);\n})(DocumentLinkResolveRequest || (exports.DocumentLinkResolveRequest = DocumentLinkResolveRequest = {}));\n/**\n * A request to format a whole document.\n */\nvar DocumentFormattingRequest;\n(function (DocumentFormattingRequest) {\n DocumentFormattingRequest.method = 'textDocument/formatting';\n DocumentFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentFormattingRequest.method);\n})(DocumentFormattingRequest || (exports.DocumentFormattingRequest = DocumentFormattingRequest = {}));\n/**\n * A request to format a range in a document.\n */\nvar DocumentRangeFormattingRequest;\n(function (DocumentRangeFormattingRequest) {\n DocumentRangeFormattingRequest.method = 'textDocument/rangeFormatting';\n DocumentRangeFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentRangeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentRangeFormattingRequest.method);\n})(DocumentRangeFormattingRequest || (exports.DocumentRangeFormattingRequest = DocumentRangeFormattingRequest = {}));\n/**\n * A request to format ranges in a document.\n *\n * @since 3.18.0\n * @proposed\n */\nvar DocumentRangesFormattingRequest;\n(function (DocumentRangesFormattingRequest) {\n DocumentRangesFormattingRequest.method = 'textDocument/rangesFormatting';\n DocumentRangesFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentRangesFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentRangesFormattingRequest.method);\n})(DocumentRangesFormattingRequest || (exports.DocumentRangesFormattingRequest = DocumentRangesFormattingRequest = {}));\n/**\n * A request to format a document on type.\n */\nvar DocumentOnTypeFormattingRequest;\n(function (DocumentOnTypeFormattingRequest) {\n DocumentOnTypeFormattingRequest.method = 'textDocument/onTypeFormatting';\n DocumentOnTypeFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentOnTypeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest.method);\n})(DocumentOnTypeFormattingRequest || (exports.DocumentOnTypeFormattingRequest = DocumentOnTypeFormattingRequest = {}));\n//---- Rename ----------------------------------------------\nvar PrepareSupportDefaultBehavior;\n(function (PrepareSupportDefaultBehavior) {\n /**\n * The client's default behavior is to select the identifier\n * according the to language's syntax rule.\n */\n PrepareSupportDefaultBehavior.Identifier = 1;\n})(PrepareSupportDefaultBehavior || (exports.PrepareSupportDefaultBehavior = PrepareSupportDefaultBehavior = {}));\n/**\n * A request to rename a symbol.\n */\nvar RenameRequest;\n(function (RenameRequest) {\n RenameRequest.method = 'textDocument/rename';\n RenameRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n RenameRequest.type = new messages_1.ProtocolRequestType(RenameRequest.method);\n})(RenameRequest || (exports.RenameRequest = RenameRequest = {}));\n/**\n * A request to test and perform the setup necessary for a rename.\n *\n * @since 3.16 - support for default behavior\n */\nvar PrepareRenameRequest;\n(function (PrepareRenameRequest) {\n PrepareRenameRequest.method = 'textDocument/prepareRename';\n PrepareRenameRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n PrepareRenameRequest.type = new messages_1.ProtocolRequestType(PrepareRenameRequest.method);\n})(PrepareRenameRequest || (exports.PrepareRenameRequest = PrepareRenameRequest = {}));\n/**\n * A request send from the client to the server to execute a command. The request might return\n * a workspace edit which the client will apply to the workspace.\n */\nvar ExecuteCommandRequest;\n(function (ExecuteCommandRequest) {\n ExecuteCommandRequest.method = 'workspace/executeCommand';\n ExecuteCommandRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ExecuteCommandRequest.type = new messages_1.ProtocolRequestType(ExecuteCommandRequest.method);\n})(ExecuteCommandRequest || (exports.ExecuteCommandRequest = ExecuteCommandRequest = {}));\n/**\n * A request sent from the server to the client to modified certain resources.\n */\nvar ApplyWorkspaceEditRequest;\n(function (ApplyWorkspaceEditRequest) {\n ApplyWorkspaceEditRequest.method = 'workspace/applyEdit';\n ApplyWorkspaceEditRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n ApplyWorkspaceEditRequest.type = new messages_1.ProtocolRequestType('workspace/applyEdit');\n})(ApplyWorkspaceEditRequest || (exports.ApplyWorkspaceEditRequest = ApplyWorkspaceEditRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProtocolConnection = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nfunction createProtocolConnection(input, output, logger, options) {\n if (vscode_jsonrpc_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, vscode_jsonrpc_1.createMessageConnection)(input, output, logger, options);\n}\nexports.createProtocolConnection = createProtocolConnection;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LSPErrorCodes = exports.createProtocolConnection = void 0;\n__exportStar(require(\"vscode-jsonrpc\"), exports);\n__exportStar(require(\"vscode-languageserver-types\"), exports);\n__exportStar(require(\"./messages\"), exports);\n__exportStar(require(\"./protocol\"), exports);\nvar connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"createProtocolConnection\", { enumerable: true, get: function () { return connection_1.createProtocolConnection; } });\nvar LSPErrorCodes;\n(function (LSPErrorCodes) {\n /**\n * This is the start range of LSP reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n LSPErrorCodes.lspReservedErrorRangeStart = -32899;\n /**\n * A request failed but it was syntactically correct, e.g the\n * method name was known and the parameters were valid. The error\n * message should contain human readable information about why\n * the request failed.\n *\n * @since 3.17.0\n */\n LSPErrorCodes.RequestFailed = -32803;\n /**\n * The server cancelled the request. This error code should\n * only be used for requests that explicitly support being\n * server cancellable.\n *\n * @since 3.17.0\n */\n LSPErrorCodes.ServerCancelled = -32802;\n /**\n * The server detected that the content of a document got\n * modified outside normal conditions. A server should\n * NOT send this error code if it detects a content change\n * in it unprocessed messages. The result even computed\n * on an older state might still be useful for the client.\n *\n * If a client decides that a result is not of any use anymore\n * the client should cancel the request.\n */\n LSPErrorCodes.ContentModified = -32801;\n /**\n * The client has canceled a request and a server as detected\n * the cancel.\n */\n LSPErrorCodes.RequestCancelled = -32800;\n /**\n * This is the end range of LSP reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n LSPErrorCodes.lspReservedErrorRangeEnd = -32800;\n})(LSPErrorCodes || (exports.LSPErrorCodes = LSPErrorCodes = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProtocolConnection = void 0;\nconst browser_1 = require(\"vscode-jsonrpc/browser\");\n__exportStar(require(\"vscode-jsonrpc/browser\"), exports);\n__exportStar(require(\"../common/api\"), exports);\nfunction createProtocolConnection(reader, writer, logger, options) {\n return (0, browser_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createProtocolConnection = createProtocolConnection;\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n *\n * @module langium\n */\n\nexport * from './default-module.js';\nexport * from './dependency-injection.js';\nexport * from './service-registry.js';\nexport * from './services.js';\nexport * from './syntax-tree.js';\nexport * from './documentation/index.js';\nexport * from './languages/index.js';\nexport * from './parser/index.js';\nexport * from './references/index.js';\nexport * from './serializer/index.js';\nexport * from './utils/index.js';\nexport * from './validation/index.js';\nexport * from './workspace/index.js';\n\n// Export the Langium Grammar AST definitions in the `GrammarAST` namespace\nimport * as GrammarAST from './languages/generated/ast.js';\nimport type { Grammar } from './languages/generated/ast.js';\nexport type { Grammar };\nexport { GrammarAST };\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { IToken } from '@chevrotain/types';\nimport type { Range } from 'vscode-languageserver-types';\nimport type { CstNode, CompositeCstNode, LeafCstNode } from '../syntax-tree.js';\nimport type { DocumentSegment } from '../workspace/documents.js';\nimport type { Stream, TreeStream } from './stream.js';\nimport { isCompositeCstNode, isLeafCstNode, isRootCstNode } from '../syntax-tree.js';\nimport { TreeStreamImpl } from './stream.js';\nimport { getContainerOfType } from './ast-utils.js';\nimport { isParserRule } from '../languages/generated/ast.js';\n\n/**\n * Attempts to find the CST node that belongs to the datatype element that contains the given CST node.\n *\n * @param cstNode The CST node for which to find the datatype node.\n * @returns The CST node corresponding to the datatype element, or the undefined if no such element exists.\n */\nexport function getDatatypeNode(cstNode: CstNode): CstNode | undefined {\n let current: CstNode | undefined = cstNode;\n let found = false;\n while (current) {\n const definingRule = getContainerOfType(current.grammarSource, isParserRule);\n if (definingRule && definingRule.dataType) {\n // Go up the chain. This element might be part of a larger datatype rule\n current = current.container;\n found = true;\n } else if (found) {\n // The last datatype node is the one we are looking for\n return current;\n } else {\n // We haven't found any datatype node yet and we've reached a non-datatype rule\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Create a stream of all CST nodes that are directly and indirectly contained in the given root node,\n * including the root node itself.\n */\nexport function streamCst(node: CstNode): TreeStream {\n return new TreeStreamImpl(node, element => {\n if (isCompositeCstNode(element)) {\n return element.content;\n } else {\n return [];\n }\n }, { includeRoot: true });\n}\n\n/**\n * Create a stream of all leaf nodes that are directly and indirectly contained in the given root node.\n */\nexport function flattenCst(node: CstNode): Stream {\n return streamCst(node).filter(isLeafCstNode);\n}\n\n/**\n * Determines whether the specified cst node is a child of the specified parent node.\n */\nexport function isChildNode(child: CstNode, parent: CstNode): boolean {\n while (child.container) {\n child = child.container;\n if (child === parent) {\n return true;\n }\n }\n return false;\n}\n\nexport function tokenToRange(token: IToken): Range {\n // Chevrotain uses 1-based indices everywhere\n // So we subtract 1 from every value to align with the LSP\n return {\n start: {\n character: token.startColumn! - 1,\n line: token.startLine! - 1\n },\n end: {\n character: token.endColumn!, // endColumn uses the correct index\n line: token.endLine! - 1\n }\n };\n}\n\nexport function toDocumentSegment(node: CstNode): DocumentSegment;\nexport function toDocumentSegment(node?: CstNode): DocumentSegment | undefined;\nexport function toDocumentSegment(node?: CstNode): DocumentSegment | undefined {\n if (!node) {\n return undefined;\n }\n const { offset, end, range } = node;\n return {\n range,\n offset,\n end,\n length: end - offset\n };\n}\n\nexport enum RangeComparison {\n Before = 0,\n After = 1,\n OverlapFront = 2,\n OverlapBack = 3,\n Inside = 4,\n Outside = 5,\n}\n\nexport function compareRange(range: Range, to: Range): RangeComparison {\n if (range.end.line < to.start.line || (range.end.line === to.start.line && range.end.character <= to.start.character)) {\n return RangeComparison.Before;\n } else if (range.start.line > to.end.line || (range.start.line === to.end.line && range.start.character >= to.end.character)) {\n return RangeComparison.After;\n }\n const startInside = range.start.line > to.start.line || (range.start.line === to.start.line && range.start.character >= to.start.character);\n const endInside = range.end.line < to.end.line || (range.end.line === to.end.line && range.end.character <= to.end.character);\n if (startInside && endInside) {\n return RangeComparison.Inside;\n } else if (startInside) {\n return RangeComparison.OverlapBack;\n } else if (endInside) {\n return RangeComparison.OverlapFront;\n } else {\n return RangeComparison.Outside;\n }\n}\n\nexport function inRange(range: Range, to: Range): boolean {\n const comparison = compareRange(range, to);\n return comparison > RangeComparison.After;\n}\n\n// The \\p{L} regex matches any unicode letter character, i.e. characters from non-english alphabets\n// Together with \\w it matches any kind of character which can commonly appear in IDs\nexport const DefaultNameRegexp = /^[\\w\\p{L}]$/u;\n\n/**\n * Performs `findLeafNodeAtOffset` with a minor difference: When encountering a character that matches the `nameRegexp` argument,\n * it will instead return the leaf node at the `offset - 1` position.\n *\n * For LSP services, users expect that the declaration of an element is available if the cursor is directly after the element.\n */\nexport function findDeclarationNodeAtOffset(cstNode: CstNode | undefined, offset: number, nameRegexp = DefaultNameRegexp): LeafCstNode | undefined {\n if (cstNode) {\n if (offset > 0) {\n const localOffset = offset - cstNode.offset;\n const textAtOffset = cstNode.text.charAt(localOffset);\n if (!nameRegexp.test(textAtOffset)) {\n offset--;\n }\n }\n return findLeafNodeAtOffset(cstNode, offset);\n }\n return undefined;\n}\n\nexport function findCommentNode(cstNode: CstNode | undefined, commentNames: string[]): CstNode | undefined {\n if (cstNode) {\n const previous = getPreviousNode(cstNode, true);\n if (previous && isCommentNode(previous, commentNames)) {\n return previous;\n }\n if (isRootCstNode(cstNode)) {\n // Go from the first non-hidden node through all nodes in reverse order\n // We do this to find the comment node which directly precedes the root node\n const endIndex = cstNode.content.findIndex(e => !e.hidden);\n for (let i = endIndex - 1; i >= 0; i--) {\n const child = cstNode.content[i];\n if (isCommentNode(child, commentNames)) {\n return child;\n }\n }\n }\n }\n return undefined;\n}\n\nexport function isCommentNode(cstNode: CstNode, commentNames: string[]): boolean {\n return isLeafCstNode(cstNode) && commentNames.includes(cstNode.tokenType.name);\n}\n\n/**\n * Finds the leaf CST node at the specified 0-based string offset.\n * Note that the given offset will be within the range of the returned leaf node.\n *\n * If the offset does not point to a CST node (but just white space), this method will return `undefined`.\n *\n * @param node The CST node to search through.\n * @param offset The specified offset.\n * @returns The CST node at the specified offset.\n */\nexport function findLeafNodeAtOffset(node: CstNode, offset: number): LeafCstNode | undefined {\n if (isLeafCstNode(node)) {\n return node;\n } else if (isCompositeCstNode(node)) {\n const searchResult = binarySearch(node, offset, false);\n if (searchResult) {\n return findLeafNodeAtOffset(searchResult, offset);\n }\n }\n return undefined;\n}\n\n/**\n * Finds the leaf CST node at the specified 0-based string offset.\n * If no CST node exists at the specified position, it will return the leaf node before it.\n *\n * If there is no leaf node before the specified offset, this method will return `undefined`.\n *\n * @param node The CST node to search through.\n * @param offset The specified offset.\n * @returns The CST node closest to the specified offset.\n */\nexport function findLeafNodeBeforeOffset(node: CstNode, offset: number): LeafCstNode | undefined {\n if (isLeafCstNode(node)) {\n return node;\n } else if (isCompositeCstNode(node)) {\n const searchResult = binarySearch(node, offset, true);\n if (searchResult) {\n return findLeafNodeBeforeOffset(searchResult, offset);\n }\n }\n return undefined;\n}\n\nfunction binarySearch(node: CompositeCstNode, offset: number, closest: boolean): CstNode | undefined {\n let left = 0;\n let right = node.content.length - 1;\n let closestNode: CstNode | undefined = undefined;\n\n while (left <= right) {\n const middle = Math.floor((left + right) / 2);\n const middleNode = node.content[middle];\n\n if (middleNode.offset <= offset && middleNode.end > offset) {\n // Found an exact match\n return middleNode;\n }\n\n if (middleNode.end <= offset) {\n // Update the closest node (less than offset) and move to the right half\n closestNode = closest ? middleNode : undefined;\n left = middle + 1;\n } else {\n // Move to the left half\n right = middle - 1;\n }\n }\n\n return closestNode;\n}\n\nexport function getPreviousNode(node: CstNode, hidden = true): CstNode | undefined {\n while (node.container) {\n const parent = node.container;\n let index = parent.content.indexOf(node);\n while (index > 0) {\n index--;\n const previous = parent.content[index];\n if (hidden || !previous.hidden) {\n return previous;\n }\n }\n node = parent;\n }\n return undefined;\n}\n\nexport function getNextNode(node: CstNode, hidden = true): CstNode | undefined {\n while (node.container) {\n const parent = node.container;\n let index = parent.content.indexOf(node);\n const last = parent.content.length - 1;\n while (index < last) {\n index++;\n const next = parent.content[index];\n if (hidden || !next.hidden) {\n return next;\n }\n }\n node = parent;\n }\n return undefined;\n}\n\nexport function getStartlineNode(node: CstNode): CstNode {\n if (node.range.start.character === 0) {\n return node;\n }\n const line = node.range.start.line;\n let last = node;\n let index: number | undefined;\n while (node.container) {\n const parent = node.container;\n const selfIndex = index ?? parent.content.indexOf(node);\n if (selfIndex === 0) {\n node = parent;\n index = undefined;\n } else {\n index = selfIndex - 1;\n node = parent.content[index];\n }\n if (node.range.start.line !== line) {\n break;\n }\n last = node;\n }\n return last;\n}\n\nexport function getInteriorNodes(start: CstNode, end: CstNode): CstNode[] {\n const commonParent = getCommonParent(start, end);\n if (!commonParent) {\n return [];\n }\n return commonParent.parent.content.slice(commonParent.a + 1, commonParent.b);\n}\n\nfunction getCommonParent(a: CstNode, b: CstNode): CommonParent | undefined {\n const aParents = getParentChain(a);\n const bParents = getParentChain(b);\n let current: CommonParent | undefined;\n for (let i = 0; i < aParents.length && i < bParents.length; i++) {\n const aParent = aParents[i];\n const bParent = bParents[i];\n if (aParent.parent === bParent.parent) {\n current = {\n parent: aParent.parent,\n a: aParent.index,\n b: bParent.index\n };\n } else {\n break;\n }\n }\n return current;\n}\n\ninterface CommonParent {\n parent: CompositeCstNode\n a: number\n b: number\n}\n\nfunction getParentChain(node: CstNode): ParentLink[] {\n const chain: ParentLink[] = [];\n while (node.container) {\n const parent = node.container;\n const index = parent.content.indexOf(node);\n chain.push({\n parent,\n index\n });\n node = parent;\n }\n return chain.reverse();\n}\n\ninterface ParentLink {\n parent: CompositeCstNode\n index: number\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { TokenType } from 'chevrotain';\nimport type { URI } from './utils/uri-utils.js';\nimport type { AbstractElement } from './languages/generated/ast.js';\nimport type { DocumentSegment, LangiumDocument } from './workspace/documents.js';\n\n/**\n * A node in the Abstract Syntax Tree (AST).\n */\nexport interface AstNode {\n /** Every AST node has a type corresponding to what was specified in the grammar declaration. */\n readonly $type: string;\n /** The container node in the AST; every node except the root node has a container. */\n readonly $container?: AstNode;\n /** The property of the `$container` node that contains this node. This is either a direct reference or an array. */\n readonly $containerProperty?: string;\n /** In case `$containerProperty` is an array, the array index is stored here. */\n readonly $containerIndex?: number;\n /** The Concrete Syntax Tree (CST) node of the text range from which this node was parsed. */\n readonly $cstNode?: CstNode;\n /** The document containing the AST; only the root node has a direct reference to the document. */\n readonly $document?: LangiumDocument;\n}\n\nexport function isAstNode(obj: unknown): obj is AstNode {\n return typeof obj === 'object' && obj !== null && typeof (obj as AstNode).$type === 'string';\n}\n\nexport interface GenericAstNode extends AstNode {\n [key: string]: unknown\n}\n\ntype SpecificNodeProperties = keyof Omit;\n\n/**\n * The property names of a given AST node type.\n */\nexport type Properties = SpecificNodeProperties extends never ? string : SpecificNodeProperties\n\n/**\n * A cross-reference in the AST. Cross-references may or may not be successfully resolved.\n */\nexport interface Reference {\n /**\n * The target AST node of this reference. Accessing this property may trigger cross-reference\n * resolution by the `Linker` in case it has not been done yet. If the reference cannot be resolved,\n * the value is `undefined`.\n */\n readonly ref: T | undefined;\n\n /** If any problem occurred while resolving the reference, it is described by this property. */\n readonly error?: LinkingError;\n /** The CST node from which the reference was parsed */\n readonly $refNode?: CstNode;\n /** The actual text used to look up in the surrounding scope */\n readonly $refText: string;\n /** The node description for the AstNode returned by `ref` */\n readonly $nodeDescription?: AstNodeDescription;\n}\n\nexport interface MultiReference {\n /** The CST node from which the reference was parsed */\n readonly $refNode?: CstNode;\n /** The actual text used to look up in the surrounding scope */\n readonly $refText: string;\n /**\n * The resolved references. Accessing this property may trigger cross-reference\n * resolution by the `Linker` in case it has not been done yet.\n * If no references can be found, the array is empty (but not `undefined`)\n * and the `error` property is set.\n */\n readonly items: Array>;\n /** If any problem occurred while resolving the reference, it is described by this property. */\n readonly error?: LinkingError;\n}\n\n/**\n * Represents a single resolved reference of a {@link MultiReference} instance.\n */\nexport interface MultiReferenceItem {\n /** The node description for the AstNode returned by `ref` */\n readonly $nodeDescription?: AstNodeDescription;\n /**\n * The target AST node of this reference.\n */\n readonly ref: T;\n}\n\nexport function isReference(obj: unknown): obj is Reference {\n return typeof obj === 'object' && obj !== null && typeof (obj as Reference).$refText === 'string' && 'ref' in obj;\n}\n\nexport function isMultiReference(obj: unknown): obj is MultiReference {\n return typeof obj === 'object' && obj !== null && typeof (obj as Reference).$refText === 'string' && 'items' in obj;\n}\n\nexport type ResolvedReference = Reference & {\n readonly ref: T;\n}\n\n/**\n * A description of an AST node is used when constructing scopes and looking up cross-reference targets.\n */\nexport interface AstNodeDescription {\n /** The target node; should be present only for local references (linking to the same document). */\n node?: AstNode;\n /**\n * The document segment that represents the range of the name of the AST node.\n */\n nameSegment?: DocumentSegment;\n /**\n * The document segment that represents the full range of the AST node.\n */\n selectionSegment?: DocumentSegment;\n /** `$type` property value of the AST node */\n type: string;\n /** Name of the AST node; this is usually determined by the `NameProvider` service. */\n name: string;\n /** URI to the document containing the AST node */\n documentUri: URI;\n /** Navigation path inside the document */\n path: string;\n}\n\nexport function isAstNodeDescription(obj: unknown): obj is AstNodeDescription {\n return typeof obj === 'object' && obj !== null\n && typeof (obj as AstNodeDescription).name === 'string'\n && typeof (obj as AstNodeDescription).type === 'string'\n && typeof (obj as AstNodeDescription).path === 'string';\n}\n\n/**\n * Information about a cross-reference. This is used when traversing references in an AST or to describe\n * unresolved references.\n */\nexport interface ReferenceInfo {\n reference: Reference | MultiReference\n container: AstNode\n property: string\n index?: number\n}\n\n/**\n * Used to collect information when the `Linker` service fails to resolve a cross-reference.\n */\nexport interface LinkingError {\n message: string;\n info: ReferenceInfo;\n targetDescription?: AstNodeDescription;\n}\n\nexport function isLinkingError(obj: unknown): obj is LinkingError {\n return typeof obj === 'object' && obj !== null\n && typeof (obj as LinkingError).info === 'object'\n && typeof (obj as LinkingError).message === 'string';\n}\n\n/**\n * Service used for generic access to the structure of the AST. This service is shared between\n * all involved languages, so it operates on the superset of types of these languages.\n */\nexport interface AstReflection {\n readonly types: AstMetaData\n getAllTypes(): string[]\n getReferenceType(refInfo: ReferenceInfo): string\n getTypeMetaData(type: string): TypeMetaData\n isInstance(node: unknown, type: string): boolean\n isSubtype(subtype: string, supertype: string): boolean\n getAllSubTypes(type: string): string[]\n}\n\n/**\n * An abstract implementation of the {@link AstReflection} interface.\n * Serves to cache subtype computation results to improve performance throughout different parts of Langium.\n */\nexport abstract class AbstractAstReflection implements AstReflection {\n\n readonly types: AstMetaData;\n protected subtypes: Record> = {};\n protected allSubtypes: Record = {};\n\n getAllTypes(): string[] {\n return Object.keys(this.types);\n }\n\n getReferenceType(refInfo: ReferenceInfo): string {\n const metaData = this.types[refInfo.container.$type];\n if (!metaData) {\n throw new Error(`Type ${refInfo.container.$type || 'undefined'} not found.`);\n }\n const referenceType = metaData.properties[refInfo.property]?.referenceType;\n if (!referenceType) {\n throw new Error(`Property ${refInfo.property || 'undefined'} of type ${refInfo.container.$type} is not a reference.`);\n }\n return referenceType;\n }\n\n getTypeMetaData(type: string): TypeMetaData {\n const result = this.types[type];\n if (!result) {\n return {\n name: type,\n properties: {},\n superTypes: []\n };\n }\n return result;\n }\n\n isInstance(node: unknown, type: string): boolean {\n return isAstNode(node) && this.isSubtype(node.$type, type);\n }\n\n isSubtype(subtype: string, supertype: string): boolean {\n if (subtype === supertype) {\n return true;\n }\n let nested = this.subtypes[subtype];\n if (!nested) {\n nested = this.subtypes[subtype] = {};\n }\n const existing = nested[supertype];\n if (existing !== undefined) {\n return existing;\n } else {\n const metaData = this.types[subtype];\n const result = metaData ? metaData.superTypes.some(s => this.isSubtype(s, supertype)) : false;\n nested[supertype] = result;\n return result;\n }\n }\n\n getAllSubTypes(type: string): string[] {\n const existing = this.allSubtypes[type];\n if (existing) {\n return existing;\n } else {\n const allTypes = this.getAllTypes();\n const types: string[] = [];\n for (const possibleSubType of allTypes) {\n if (this.isSubtype(possibleSubType, type)) {\n types.push(possibleSubType);\n }\n }\n this.allSubtypes[type] = types;\n return types;\n }\n }\n}\n\n/**\n * A map of all AST node types and their meta data.\n */\nexport interface AstMetaData {\n [type: string]: TypeMetaData\n}\n\n/**\n * Represents runtime meta data about an AST node type.\n */\nexport interface TypeMetaData {\n /** The name of this AST node type. Corresponds to the `AstNode.$type` value. */\n name: string\n /** A list of properties with their relevant meta data. */\n properties: {\n [name: string]: PropertyMetaData\n }\n /** The super types of this AST node type. */\n superTypes: string[]\n}\n\n/**\n * Describes the meta data of a property of an AST node.\n */\nexport interface PropertyMetaData {\n /** The name of this property. */\n name: string\n /**\n * Indicates that the property is mandatory in the AST node.\n * For example, if an AST node contains an array, but no elements of this array have been parsed,\n * we still expect an empty array instead of `undefined`.\n */\n defaultValue?: PropertyType\n /**\n * If the property is a reference, this is the type of the reference target.\n */\n referenceType?: string\n}\n\n/**\n * Represents a default value for an AST property.\n */\nexport type PropertyType = number | string | boolean | PropertyType[];\n\n/**\n * A node in the Concrete Syntax Tree (CST).\n */\nexport interface CstNode extends DocumentSegment {\n /** The container node in the CST */\n readonly container?: CompositeCstNode;\n /** The actual text */\n readonly text: string;\n /** The root CST node */\n readonly root: RootCstNode;\n /** The grammar element from which this node was parsed */\n readonly grammarSource?: AbstractElement;\n /** The AST node created from this CST node */\n readonly astNode: AstNode;\n /** Whether the token is hidden, i.e. not explicitly part of the containing grammar rule */\n readonly hidden: boolean;\n}\n\n/**\n * A composite CST node contains other nodes, but no directly associated token.\n */\nexport interface CompositeCstNode extends CstNode {\n readonly content: CstNode[];\n}\n\nexport function isCompositeCstNode(node: unknown): node is CompositeCstNode {\n return typeof node === 'object' && node !== null && Array.isArray((node as CompositeCstNode).content);\n}\n\n/**\n * A leaf CST node corresponds to a token in the input token stream.\n */\nexport interface LeafCstNode extends CstNode {\n readonly tokenType: TokenType;\n}\n\nexport function isLeafCstNode(node: unknown): node is LeafCstNode {\n return typeof node === 'object' && node !== null && typeof (node as LeafCstNode).tokenType === 'object';\n}\n\nexport interface RootCstNode extends CompositeCstNode {\n readonly fullText: string\n}\n\nexport function isRootCstNode(node: unknown): node is RootCstNode {\n return isCompositeCstNode(node) && typeof (node as RootCstNode).fullText === 'string';\n}\n\n/**\n * Describes a union type including only names(!) of properties of type T whose property value is of a certain type K,\n * or 'never' in case of no such properties.\n * It evaluates the value type regardless of the property being optional or not by converting T to Required.\n * Note the '-?' in '[I in keyof T]-?:' that is required to map all optional but un-intended properties to 'never'.\n * Without that, optional props like those inherited from 'AstNode' would be mapped to 'never|undefined',\n * and the subsequent value mapping ('...[keyof T]') would yield 'undefined' instead of 'never' for AstNode types\n * not having any property matching type K, which in turn yields follow-up errors.\n */\ntype ExtractKeysOfValueType = { [I in keyof T]-?: Required[I] extends K ? I : never }[keyof T];\n\nexport type SingleCrossReferencesOfAstNodeType = ExtractKeysOfValueType;\nexport type MultiCrossReferencesOfAstNodeType = ExtractKeysOfValueType;\n/**\n * Describes a union type including only names(!) of the cross-reference properties of the given AstNode type.\n * Enhances compile-time validation of cross-reference distinctions, e.g. in scope providers\n * in combination with `assertUnreachable(context.property)`.\n */\nexport type CrossReferencesOfAstNodeType = SingleCrossReferencesOfAstNodeType | MultiCrossReferencesOfAstNodeType;\n\n/**\n * Represents the enumeration-like type, that lists all AstNode types of your grammar.\n */\nexport type AstTypeList = Record;\n\n/**\n * Describes a union type including of all AstNode types containing cross-references.\n * A is meant to be the interface `XXXAstType` fromm your generated `ast.ts` file.\n * Enhances compile-time validation of cross-reference distinctions, e.g. in scope providers\n * in combination with `assertUnreachable(context.container)`.\n */\nexport type AstNodeTypesWithCrossReferences
> = {\n [T in keyof A]-?: CrossReferencesOfAstNodeType extends never ? never : A[T]\n}[keyof A];\n\nexport type Mutable = {\n -readonly [P in keyof T]: T[P]\n};\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\n/**\n * A stream is a read-only sequence of values. While the contents of an array can be accessed\n * both sequentially and randomly (via index), a stream allows only sequential access.\n *\n * The advantage of this is that a stream can be evaluated lazily, so it does not require\n * to store intermediate values. This can boost performance when a large sequence is\n * processed via filtering, mapping etc. and accessed at most once. However, lazy\n * evaluation means that all processing is repeated when you access the sequence multiple\n * times; in such a case, it may be better to store the resulting sequence into an array.\n */\nexport interface Stream extends Iterable {\n\n /**\n * Returns an iterator for this stream. This is the same as calling the `Symbol.iterator` function property.\n */\n iterator(): IterableIterator;\n\n /**\n * Determines whether this stream contains no elements.\n */\n isEmpty(): boolean;\n\n /**\n * Determines the number of elements in this stream.\n */\n count(): number;\n\n /**\n * Collects all elements of this stream into an array.\n */\n toArray(): T[];\n\n /**\n * Collects all elements of this stream into a Set.\n */\n toSet(): Set;\n\n /**\n * Collects all elements of this stream into a Map, applying the provided functions to determine keys and values.\n *\n * @param keyFn The function to derive map keys. If omitted, the stream elements are used as keys.\n * @param valueFn The function to derive map values. If omitted, the stream elements are used as values.\n */\n toMap(keyFn?: (e: T) => K, valueFn?: (e: T) => V): Map;\n\n /**\n * Returns a string representation of a stream.\n */\n toString(): string;\n\n /**\n * Combines two streams by returning a new stream that yields all elements of this stream and the other stream.\n *\n * @param other Stream to be concatenated with this one.\n */\n concat(other: Iterable): Stream;\n\n /**\n * Adds all elements of the stream into a string, separated by the specified separator string.\n *\n * @param separator A string used to separate one element of the stream from the next in the resulting string.\n * If omitted, the steam elements are separated with a comma.\n */\n join(separator?: string): string\n\n /**\n * Returns the index of the first occurrence of a value in the stream, or -1 if it is not present.\n *\n * @param searchElement The value to locate in the array.\n * @param fromIndex The stream index at which to begin the search. If fromIndex is omitted, the search\n * starts at index 0.\n */\n indexOf(searchElement: T, fromIndex?: number): number;\n\n /**\n * Determines whether all members of the stream satisfy the specified test.\n *\n * @param predicate This method calls the predicate function for each element in the stream until the\n * predicate returns a value which is coercible to the Boolean value `false`, or until the end\n * of the stream.\n */\n every(predicate: (value: T) => value is S): this is Stream;\n every(predicate: (value: T) => unknown): boolean;\n\n /**\n * Determines whether any member of the stream satisfies the specified test.\n *\n * @param predicate This method calls the predicate function for each element in the stream until the\n * predicate returns a value which is coercible to the Boolean value `true`, or until the end\n * of the stream.\n */\n some(predicate: (value: T) => unknown): boolean;\n\n /**\n * Performs the specified action for each element in the stream.\n *\n * @param callbackfn Function called once for each element in the stream.\n */\n forEach(callbackfn: (value: T, index: number) => void): void;\n\n /**\n * Returns a stream that yields the results of calling the specified callback function on each element\n * of the stream. The function is called when the resulting stream elements are actually accessed, so\n * accessing the resulting stream multiple times means the function is also called multiple times for\n * each element of the stream.\n *\n * @param callbackfn Lazily evaluated function mapping stream elements.\n */\n map(callbackfn: (value: T) => U): Stream;\n\n /**\n * Returns the elements of the stream that meet the condition specified in a callback function.\n * The function is called when the resulting stream elements are actually accessed, so accessing the\n * resulting stream multiple times means the function is also called multiple times for each element\n * of the stream.\n *\n * @param predicate Lazily evaluated function checking a condition on stream elements.\n */\n filter(predicate: (value: T) => value is S): Stream;\n filter(predicate: (value: T) => unknown): Stream;\n\n /**\n * Returns the elements of the stream that are _non-nullable_, which means they are neither `undefined`\n * nor `null`.\n */\n nonNullable(): Stream>;\n\n /**\n * Calls the specified callback function for all elements in the stream. The return value of the\n * callback function is the accumulated result, and is provided as an argument in the next call to\n * the callback function.\n *\n * @param callbackfn This method calls the function once for each element in the stream, providing\n * the previous and current values of the reduction.\n * @param initialValue If specified, `initialValue` is used as the initial value to start the\n * accumulation. The first call to the function provides this value as an argument instead\n * of a stream value.\n */\n reduce(callbackfn: (previousValue: T, currentValue: T) => T): T | undefined;\n reduce(callbackfn: (previousValue: U, currentValue: T) => U, initialValue: U): U;\n\n /**\n * Calls the specified callback function for all elements in the stream, in descending order.\n * The return value of the callback function is the accumulated result, and is provided as an\n * argument in the next call to the callback function.\n *\n * @param callbackfn This method calls the function once for each element in the stream, providing\n * the previous and current values of the reduction.\n * @param initialValue If specified, `initialValue` is used as the initial value to start the\n * accumulation. The first call to the function provides this value as an argument instead\n * of an array value.\n */\n reduceRight(callbackfn: (previousValue: T, currentValue: T) => T): T | undefined;\n reduceRight(callbackfn: (previousValue: U, currentValue: T) => U, initialValue: U): U;\n\n /**\n * Returns the value of the first element in the stream that meets the condition, or `undefined`\n * if there is no such element.\n *\n * @param predicate This method calls `predicate` once for each element of the stream, in ascending\n * order, until it finds one where `predicate` returns a value which is coercible to the\n * Boolean value `true`.\n */\n find(predicate: (value: T) => value is S): S | undefined;\n find(predicate: (value: T) => unknown): T | undefined;\n\n /**\n * Returns the index of the first element in the stream that meets the condition, or `-1`\n * if there is no such element.\n *\n * @param predicate This method calls `predicate` once for each element of the stream, in ascending\n * order, until it finds one where `predicate` returns a value which is coercible to the\n * Boolean value `true`.\n */\n findIndex(predicate: (value: T) => unknown): number;\n\n /**\n * Determines whether the stream includes a certain element, returning `true` or `false` as appropriate.\n *\n * @param searchElement The element to search for.\n */\n includes(searchElement: T): boolean;\n\n /**\n * Calls a defined callback function on each element of the stream and then flattens the result into\n * a new stream. This is identical to a `map` followed by `flat` with depth 1.\n *\n * @param callbackfn Lazily evaluated function mapping stream elements.\n */\n flatMap(callbackfn: (value: T) => U | Iterable): Stream;\n\n /**\n * Returns a new stream with all sub-stream or sub-array elements concatenated into it recursively up\n * to the specified depth.\n *\n * @param depth The maximum recursion depth. Defaults to 1.\n */\n flat(depth?: D): FlatStream;\n\n /**\n * Returns the first element in the stream, or `undefined` if the stream is empty.\n */\n head(): T | undefined;\n\n /**\n * Returns a stream that skips the first `skipCount` elements from this stream.\n *\n * @param skipCount The number of elements to skip. If this is larger than the number of elements in\n * the stream, an empty stream is returned. Defaults to 1.\n */\n tail(skipCount?: number): Stream;\n\n /**\n * Returns a stream consisting of the elements of this stream, truncated to be no longer than `maxSize`\n * in length.\n *\n * @param maxSize The number of elements the stream should be limited to\n */\n limit(maxSize: number): Stream;\n\n /**\n * Returns a stream containing only the distinct elements from this stream.\n * Equality is determined with the same rules as a standard `Set`.\n *\n * @param by A function returning the key used to check equality with a previous stream element.\n * If omitted, the stream elements themselves are used for comparison.\n */\n distinct(by?: (element: T) => Key): Stream;\n\n /**\n * Returns a stream that contains all elements that don't exist in the {@link other} iterable.\n * Equality is determined with the same rules as a standard `Set`.\n * @param other The elements that should be exluded from this stream.\n * @param key A function returning the key used to check quality.\n * If omitted, the stream elements themselves are used for comparison.\n */\n exclude(other: Iterable, key?: (element: T) => Key): Stream;\n\n}\n\nexport type FlatStream = {\n 'done': Stream,\n 'recur': T extends Iterable\n ? FlatStream>\n : Stream\n}[Depth extends 0 ? 'done' : 'recur'];\n\nexport type MinusOne = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][N];\n\n/**\n * The default implementation of `Stream` works with two input functions:\n * - The first function creates the initial state of an iteration.\n * - The second function gets the current state as argument and returns an `IteratorResult`.\n */\nexport class StreamImpl implements Stream {\n protected readonly startFn: () => S;\n protected readonly nextFn: (state: S) => IteratorResult;\n\n constructor(startFn: () => S, nextFn: (state: S) => IteratorResult) {\n this.startFn = startFn;\n this.nextFn = nextFn;\n }\n\n iterator(): IterableIterator {\n const iterator = {\n state: this.startFn(),\n next: () => this.nextFn(iterator.state),\n [Symbol.iterator]: () => iterator\n };\n return iterator;\n }\n\n [Symbol.iterator](): Iterator {\n return this.iterator();\n }\n\n isEmpty(): boolean {\n const iterator = this.iterator();\n return Boolean(iterator.next().done);\n }\n\n count(): number {\n const iterator = this.iterator();\n let count = 0;\n let next = iterator.next();\n while (!next.done) {\n count++;\n next = iterator.next();\n }\n return count;\n }\n\n toArray(): T[] {\n const result: T[] = [];\n const iterator = this.iterator();\n let next: IteratorResult;\n do {\n next = iterator.next();\n if (next.value !== undefined) {\n result.push(next.value);\n }\n } while (!next.done);\n return result;\n }\n\n toSet(): Set {\n return new Set(this);\n }\n\n toMap(keyFn?: (e: T) => K, valueFn?: (e: T) => V): Map {\n const entryStream = this.map(element => <[K, V]>[\n keyFn ? keyFn(element) : element,\n valueFn ? valueFn(element) : element\n ]);\n return new Map(entryStream);\n }\n\n toString(): string {\n return this.join();\n }\n\n concat(other: Iterable): Stream {\n return new StreamImpl<{ first: S, firstDone: boolean, iterator: Iterator }, T | T2>(\n () => ({ first: this.startFn(), firstDone: false, iterator: other[Symbol.iterator]() }),\n state => {\n let result: IteratorResult;\n if (!state.firstDone) {\n do {\n result = this.nextFn(state.first);\n if (!result.done) {\n return result;\n }\n } while (!result.done);\n state.firstDone = true;\n }\n do {\n result = state.iterator.next();\n if (!result.done) {\n return result;\n }\n } while (!result.done);\n return DONE_RESULT;\n }\n );\n }\n\n join(separator = ','): string {\n const iterator = this.iterator();\n let value = '';\n let result: IteratorResult;\n let addSeparator = false;\n do {\n result = iterator.next();\n if (!result.done) {\n if (addSeparator) {\n value += separator;\n }\n value += toString(result.value);\n }\n addSeparator = true;\n } while (!result.done);\n return value;\n }\n\n indexOf(searchElement: T, fromIndex = 0): number {\n const iterator = this.iterator();\n let index = 0;\n let next = iterator.next();\n while (!next.done) {\n if (index >= fromIndex && next.value === searchElement) {\n return index;\n }\n next = iterator.next();\n index++;\n }\n return -1;\n }\n\n // In the following definition the '& this' part in the return type is important\n // _and_ the order within 'Stream & this' is crucial!\n // Otherwise Typescript would infer the type of 'this' as 'StreamImpl & Stream'\n // (or ' & Stream') and usages like\n // ```\n // const stream = new StreamImpl(...);\n // ... stream.every() & stream....\n // ```\n // cannot benefit from '', as Typescript would priorize the signatures\n // of 'StreamImpl' (i.e. those of 'Stream') over those of 'Stream'.\n // With the order of 'Stream & this' the signatures of 'Stream' get precedence.\n every(predicate: (value: T) => value is U): this is Stream & this;\n every(predicate: (value: T) => unknown): boolean;\n every(predicate: (value: T) => unknown): boolean {\n const iterator = this.iterator();\n let next = iterator.next();\n while (!next.done) {\n if (!predicate(next.value)) {\n return false;\n }\n next = iterator.next();\n }\n return true;\n }\n\n some(predicate: (value: T) => unknown): boolean {\n const iterator = this.iterator();\n let next = iterator.next();\n while (!next.done) {\n if (predicate(next.value)) {\n return true;\n }\n next = iterator.next();\n }\n return false;\n }\n\n forEach(callbackfn: (value: T, index: number) => void): void {\n const iterator = this.iterator();\n let index = 0;\n let next = iterator.next();\n while (!next.done) {\n callbackfn(next.value, index);\n next = iterator.next();\n index++;\n }\n }\n\n map(callbackfn: (value: T) => U): Stream {\n return new StreamImpl(\n this.startFn,\n (state) => {\n const { done, value } = this.nextFn(state);\n if (done) {\n return DONE_RESULT;\n } else {\n return { done: false, value: callbackfn(value) };\n }\n }\n );\n }\n\n // for remarks on the return type definition refer to 'every(...)'\n filter(predicate: (value: T) => value is U): Stream & this;\n filter(predicate: (value: T) => unknown): Stream & this;\n filter(predicate: (value: T) => unknown): Stream {\n return new StreamImpl(\n this.startFn,\n state => {\n let result: IteratorResult;\n do {\n result = this.nextFn(state);\n if (!result.done && predicate(result.value)) {\n return result;\n }\n } while (!result.done);\n return DONE_RESULT;\n }\n );\n }\n\n nonNullable(): Stream> {\n return this.filter(e => e !== undefined && e !== null) as Stream>;\n }\n\n reduce(callbackfn: (previousValue: T, currentValue: T) => T): T | undefined;\n reduce(callbackfn: (previousValue: U, currentValue: T) => U, initialValue: U): U;\n reduce(callbackfn: (previousValue: U | T, currentValue: T) => U, initialValue?: U): U | T | undefined {\n const iterator = this.iterator();\n let previousValue: U | T | undefined = initialValue;\n let next = iterator.next();\n while (!next.done) {\n if (previousValue === undefined) {\n previousValue = next.value;\n } else {\n previousValue = callbackfn(previousValue, next.value);\n }\n next = iterator.next();\n }\n return previousValue;\n }\n\n reduceRight(callbackfn: (previousValue: T, currentValue: T) => T): T | undefined;\n reduceRight(callbackfn: (previousValue: U, currentValue: T) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U | T, currentValue: T) => U, initialValue?: U): U | T | undefined {\n return this.recursiveReduce(this.iterator(), callbackfn, initialValue);\n }\n\n protected recursiveReduce(iterator: Iterator, callbackfn: (previousValue: U | T, currentValue: T) => U, initialValue?: U): U | T | undefined {\n const next = iterator.next();\n if (next.done) {\n return initialValue;\n }\n const previousValue = this.recursiveReduce(iterator, callbackfn, initialValue);\n if (previousValue === undefined) {\n return next.value;\n }\n return callbackfn(previousValue, next.value);\n }\n\n find(predicate: (value: T) => value is S): S | undefined;\n find(predicate: (value: T) => unknown): T | undefined;\n find(predicate: (value: T) => unknown): T | undefined {\n const iterator = this.iterator();\n let next = iterator.next();\n while (!next.done) {\n if (predicate(next.value)) {\n return next.value;\n }\n next = iterator.next();\n }\n return undefined;\n }\n\n findIndex(predicate: (value: T) => unknown): number {\n const iterator = this.iterator();\n let index = 0;\n let next = iterator.next();\n while (!next.done) {\n if (predicate(next.value)) {\n return index;\n }\n next = iterator.next();\n index++;\n }\n return -1;\n }\n\n includes(searchElement: T): boolean {\n const iterator = this.iterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value === searchElement) {\n return true;\n }\n next = iterator.next();\n }\n return false;\n }\n\n flatMap(callbackfn: (value: T) => U | Iterable): Stream {\n type FlatMapState = { this: S, iterator?: Iterator }\n return new StreamImpl(\n () => ({ this: this.startFn() }),\n (state) => {\n do {\n if (state.iterator) {\n const next = state.iterator.next();\n if (next.done) {\n state.iterator = undefined;\n } else {\n return next;\n }\n }\n const { done, value } = this.nextFn(state.this);\n if (!done) {\n const mapped = callbackfn(value);\n if (isIterable(mapped)) {\n state.iterator = mapped[Symbol.iterator]();\n } else {\n return { done: false, value: mapped };\n }\n }\n } while (state.iterator);\n return DONE_RESULT;\n }\n );\n }\n\n flat(depth?: D): FlatStream {\n if (depth === undefined) {\n depth = 1 as D;\n }\n if (depth <= 0) {\n return this as unknown as FlatStream;\n }\n const stream = depth > 1 ? this.flat(depth - 1) as unknown as StreamImpl : this;\n type FlatMapState = { this: S, iterator?: Iterator }\n return new StreamImpl(\n () => ({ this: stream.startFn() }),\n (state) => {\n do {\n if (state.iterator) {\n const next = state.iterator.next();\n if (next.done) {\n state.iterator = undefined;\n } else {\n return next;\n }\n }\n const { done, value } = stream.nextFn(state.this);\n if (!done) {\n if (isIterable(value)) {\n state.iterator = value[Symbol.iterator]() as Iterator;\n } else {\n return { done: false, value: value };\n }\n }\n } while (state.iterator);\n return DONE_RESULT;\n }\n ) as unknown as FlatStream;\n }\n\n head(): T | undefined {\n const iterator = this.iterator();\n const result = iterator.next();\n if (result.done) {\n return undefined;\n }\n return result.value;\n }\n\n tail(skipCount = 1): Stream {\n return new StreamImpl(\n () => {\n const state = this.startFn();\n for (let i = 0; i < skipCount; i++) {\n const next = this.nextFn(state);\n if (next.done) {\n return state;\n }\n }\n return state;\n },\n this.nextFn\n );\n }\n\n limit(maxSize: number): Stream {\n return new StreamImpl<{ size: number, state: S }, T>(\n () => ({ size: 0, state: this.startFn() }),\n state => {\n state.size++;\n if (state.size > maxSize) {\n return DONE_RESULT;\n }\n return this.nextFn(state.state);\n }\n );\n }\n\n distinct(by?: (element: T) => Key): Stream {\n return new StreamImpl<{ set: Set, internalState: S }, T>(\n () => ({ set: new Set(), internalState: this.startFn() }),\n state => {\n let result: IteratorResult;\n do {\n result = this.nextFn(state.internalState);\n if (!result.done) {\n const value = by ? by(result.value) : result.value;\n if (!state.set.has(value)) {\n state.set.add(value);\n return result;\n }\n }\n } while (!result.done);\n return DONE_RESULT;\n }\n );\n }\n\n exclude(other: Iterable, key?: (element: T) => Key): Stream {\n const otherKeySet = new Set();\n for (const item of other) {\n const value = key ? key(item) : item;\n otherKeySet.add(value);\n }\n return this.filter(e => {\n const ownKey = key ? key(e) : e;\n return !otherKeySet.has(ownKey);\n });\n }\n}\n\nfunction toString(item: unknown): string {\n if (typeof item === 'string') {\n return item as string;\n }\n if (typeof item === 'undefined') {\n return 'undefined';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (typeof (item as any).toString === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (item as any).toString();\n }\n return Object.prototype.toString.call(item);\n}\n\nfunction isIterable(obj: unknown): obj is Iterable {\n return !!obj && typeof (obj as Iterable)[Symbol.iterator] === 'function';\n}\n\n/**\n * An empty stream of any type.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const EMPTY_STREAM: Stream = new StreamImpl(() => undefined, () => DONE_RESULT);\n\n/**\n * Use this `IteratorResult` when implementing a `StreamImpl` to indicate that there are no more elements in the stream.\n */\nexport const DONE_RESULT: IteratorReturnResult = Object.freeze({ done: true, value: undefined });\n\n/**\n * Create a stream from one or more iterables or array-likes.\n */\nexport function stream(...collections: Array | ArrayLike>): Stream {\n if (collections.length === 1) {\n const collection = collections[0];\n if (collection instanceof StreamImpl) {\n return collection as Stream;\n }\n if (isIterable(collection)) {\n return new StreamImpl, T>(\n () => collection[Symbol.iterator](),\n (iterator) => iterator.next()\n );\n }\n if (typeof collection.length === 'number') {\n return new StreamImpl<{ index: number }, T>(\n () => ({ index: 0 }),\n (state) => {\n if (state.index < collection.length) {\n return { done: false, value: collection[state.index++] };\n } else {\n return DONE_RESULT;\n }\n }\n );\n }\n }\n if (collections.length > 1) {\n type State = { collIndex: number, iterator?: Iterator, array?: ArrayLike, arrIndex: number };\n return new StreamImpl(\n () => ({ collIndex: 0, arrIndex: 0 }),\n (state) => {\n do {\n if (state.iterator) {\n const next = state.iterator.next();\n if (!next.done) {\n return next;\n }\n state.iterator = undefined;\n }\n if (state.array) {\n if (state.arrIndex < state.array.length) {\n return { done: false, value: state.array[state.arrIndex++] };\n }\n state.array = undefined;\n state.arrIndex = 0;\n }\n if (state.collIndex < collections.length) {\n const collection = collections[state.collIndex++];\n if (isIterable(collection)) {\n state.iterator = collection[Symbol.iterator]();\n } else if (collection && typeof collection.length === 'number') {\n state.array = collection;\n }\n }\n } while (state.iterator || state.array || state.collIndex < collections.length);\n return DONE_RESULT;\n }\n );\n }\n return EMPTY_STREAM;\n}\n\n/**\n * A tree iterator adds the ability to prune the current iteration.\n */\nexport interface TreeIterator extends IterableIterator {\n /**\n * Skip the whole subtree below the last returned element. The iteration continues as if that\n * element had no children.\n */\n prune(): void\n}\n\n/**\n * A tree stream is used to stream the elements of a tree, for example an AST or CST.\n */\nexport interface TreeStream extends Stream {\n iterator(): TreeIterator\n}\n\n/**\n * The default implementation of `TreeStream` takes a root element and a function that computes the\n * children of its argument. Whether the root node included in the stream is controlled with the\n * `includeRoot` option, which defaults to `false`.\n */\nexport class TreeStreamImpl\n extends StreamImpl<{ iterators: Array>, pruned: boolean }, T>\n implements TreeStream {\n\n constructor(root: T, children: (node: T) => Iterable, options?: { includeRoot?: boolean }) {\n super(\n () => ({\n iterators: options?.includeRoot ? [[root][Symbol.iterator]()] : [children(root)[Symbol.iterator]()],\n pruned: false\n }),\n state => {\n if (state.pruned) {\n state.iterators.pop();\n state.pruned = false;\n }\n while (state.iterators.length > 0) {\n const iterator = state.iterators[state.iterators.length - 1];\n const next = iterator.next();\n if (next.done) {\n state.iterators.pop();\n } else {\n state.iterators.push(children(next.value)[Symbol.iterator]());\n return next;\n }\n }\n return DONE_RESULT;\n }\n );\n }\n\n override iterator(): TreeIterator {\n const iterator = {\n state: this.startFn(),\n next: () => this.nextFn(iterator.state),\n prune: () => {\n iterator.state.pruned = true;\n },\n [Symbol.iterator]: () => iterator\n };\n return iterator;\n }\n}\n\n/**\n * A set of utility functions that reduce a stream to a single value.\n */\nexport namespace Reduction {\n\n /**\n * Compute the sum of a number stream.\n */\n export function sum(stream: Stream): number {\n return stream.reduce((a, b) => a + b, 0);\n }\n\n /**\n * Compute the product of a number stream.\n */\n export function product(stream: Stream): number {\n return stream.reduce((a, b) => a * b, 0);\n }\n\n /**\n * Compute the minimum of a number stream. Returns `undefined` if the stream is empty.\n */\n export function min(stream: Stream): number | undefined {\n return stream.reduce((a, b) => Math.min(a, b));\n }\n\n /**\n * Compute the maximum of a number stream. Returns `undefined` if the stream is empty.\n */\n export function max(stream: Stream): number | undefined {\n return stream.reduce((a, b) => Math.max(a, b));\n }\n\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { Range } from 'vscode-languageserver-types';\nimport type { AstNode, AstReflection, CstNode, GenericAstNode, MultiReference, Mutable, PropertyType, Reference, ReferenceInfo } from '../syntax-tree.js';\nimport type { Stream, TreeStream } from './stream.js';\nimport type { LangiumDocument } from '../workspace/documents.js';\nimport { isAstNode, isMultiReference, isReference } from '../syntax-tree.js';\nimport { DONE_RESULT, StreamImpl, TreeStreamImpl } from './stream.js';\nimport { inRange } from './cst-utils.js';\n\n/**\n * Link the `$container` and other related properties of every AST node that is directly contained\n * in the given `node`.\n */\nexport function linkContentToContainer(node: AstNode, options: {\n /**\n * If true, the function will also link the content of the contained nodes.\n * Otherwise, only the immediate children of the given node are linked to their container.\n */\n deep?: boolean\n} = {}): void {\n for (const [name, value] of Object.entries(node)) {\n if (!name.startsWith('$')) {\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n if (isAstNode(item)) {\n (item as Mutable).$container = node;\n (item as Mutable).$containerProperty = name;\n (item as Mutable).$containerIndex = index;\n if (options.deep) {\n linkContentToContainer(item, options);\n }\n }\n });\n } else if (isAstNode(value)) {\n (value as Mutable).$container = node;\n (value as Mutable).$containerProperty = name;\n if (options.deep) {\n linkContentToContainer(value, options);\n }\n }\n }\n }\n}\n\n/**\n * Walk along the hierarchy of containers from the given AST node to the root and return the first\n * node that matches the type predicate. If the start node itself matches, it is returned.\n * If no container matches, `undefined` is returned.\n */\nexport function getContainerOfType(node: AstNode | undefined, typePredicate: (n: AstNode) => n is T): T | undefined {\n let item = node;\n while (item) {\n if (typePredicate(item)) {\n return item;\n }\n item = item.$container;\n }\n return undefined;\n}\n\n/**\n * Walk along the hierarchy of containers from the given AST node to the root and check for existence\n * of a container that matches the given predicate. The start node is included in the checks.\n */\nexport function hasContainerOfType(node: AstNode | undefined, predicate: (n: AstNode) => boolean): boolean {\n let item = node;\n while (item) {\n if (predicate(item)) {\n return true;\n }\n item = item.$container;\n }\n return false;\n}\n\n/**\n * Retrieve the document in which the given AST node is contained. A reference to the document is\n * usually held by the root node of the AST.\n *\n * @throws an error if the node is not contained in a document.\n */\nexport function getDocument(node: AstNode): LangiumDocument {\n const rootNode = findRootNode(node);\n const result = rootNode.$document;\n if (!result) {\n throw new Error('AST node has no document.');\n }\n return result as LangiumDocument;\n}\n\n/**\n * Returns the root node of the given AST node by following the `$container` references.\n */\nexport function findRootNode(node: AstNode): AstNode {\n while (node.$container) {\n node = node.$container;\n }\n return node;\n}\n\n/**\n * Returns all AST nodes that are referenced by the given reference or multi-reference.\n */\nexport function getReferenceNodes(reference: Reference | MultiReference): AstNode[] {\n if (isReference(reference)) {\n return reference.ref ? [reference.ref] : [];\n } else if (isMultiReference(reference)) {\n return reference.items.map(item => item.ref);\n }\n return [];\n}\n\nexport interface AstStreamOptions {\n /**\n * Optional target range that the nodes in the stream need to intersect\n */\n range?: Range\n}\n\n/**\n * Create a stream of all AST nodes that are directly contained in the given node. This includes\n * single-valued as well as multi-valued (array) properties.\n */\nexport function streamContents(node: AstNode, options?: AstStreamOptions): Stream {\n if (!node) {\n throw new Error('Node must be an AstNode.');\n }\n const range = options?.range;\n type State = { keys: string[], keyIndex: number, arrayIndex: number };\n return new StreamImpl(() => ({\n keys: Object.keys(node),\n keyIndex: 0,\n arrayIndex: 0\n }), state => {\n while (state.keyIndex < state.keys.length) {\n const property = state.keys[state.keyIndex];\n if (!property.startsWith('$')) {\n const value = (node as GenericAstNode)[property];\n if (isAstNode(value)) {\n state.keyIndex++;\n if (isAstNodeInRange(value, range)) {\n return { done: false, value };\n }\n } else if (Array.isArray(value)) {\n while (state.arrayIndex < value.length) {\n const index = state.arrayIndex++;\n const element = value[index];\n if (isAstNode(element) && isAstNodeInRange(element, range)) {\n return { done: false, value: element };\n }\n }\n state.arrayIndex = 0;\n }\n }\n state.keyIndex++;\n }\n return DONE_RESULT;\n });\n}\n\n/**\n * Create a stream of all AST nodes that are directly and indirectly contained in the given root node.\n * This does not include the root node itself.\n */\nexport function streamAllContents(root: AstNode, options?: AstStreamOptions): TreeStream {\n if (!root) {\n throw new Error('Root node must be an AstNode.');\n }\n return new TreeStreamImpl(root, node => streamContents(node, options));\n}\n\n/**\n * Create a stream of all AST nodes that are directly and indirectly contained in the given root node,\n * including the root node itself.\n */\nexport function streamAst(root: AstNode, options?: AstStreamOptions): TreeStream {\n if (!root) {\n throw new Error('Root node must be an AstNode.');\n } else if (options?.range && !isAstNodeInRange(root, options.range)) {\n // Return an empty stream if the root node isn't in range\n return new TreeStreamImpl(root, () => []);\n }\n return new TreeStreamImpl(root, node => streamContents(node, options), { includeRoot: true });\n}\n\nfunction isAstNodeInRange(astNode: AstNode, range?: Range): boolean {\n if (!range) {\n return true;\n }\n const nodeRange = astNode.$cstNode?.range;\n if (!nodeRange) {\n return false;\n }\n return inRange(nodeRange, range);\n}\n\n/**\n * Create a stream of all cross-references that are held by the given AST node. This includes\n * single-valued as well as multi-valued (array) properties.\n */\nexport function streamReferences(node: AstNode): Stream {\n type State = { keys: string[], keyIndex: number, arrayIndex: number };\n return new StreamImpl(() => ({\n keys: Object.keys(node),\n keyIndex: 0,\n arrayIndex: 0\n }), state => {\n while (state.keyIndex < state.keys.length) {\n const property = state.keys[state.keyIndex];\n if (!property.startsWith('$')) {\n const value = (node as GenericAstNode)[property];\n if (isReference(value) || isMultiReference(value)) {\n state.keyIndex++;\n return { done: false, value: { reference: value, container: node, property } };\n } else if (Array.isArray(value)) {\n while (state.arrayIndex < value.length) {\n const index = state.arrayIndex++;\n const element = value[index];\n if (isReference(element) || isMultiReference(value)) {\n return { done: false, value: { reference: element, container: node, property, index } };\n }\n }\n state.arrayIndex = 0;\n }\n }\n state.keyIndex++;\n }\n return DONE_RESULT;\n });\n}\n\n/**\n * Assigns all mandatory AST properties to the specified node.\n *\n * @param reflection Reflection object used to gather mandatory properties for the node.\n * @param node Specified node is modified in place and properties are directly assigned.\n */\nexport function assignMandatoryProperties(reflection: AstReflection, node: AstNode): void {\n const typeMetaData = reflection.getTypeMetaData(node.$type);\n const genericNode = node as GenericAstNode;\n for (const property of Object.values(typeMetaData.properties)) {\n // Only set the value if the property is not already set and if it has a default value\n if (property.defaultValue !== undefined && genericNode[property.name] === undefined) {\n genericNode[property.name] = copyDefaultValue(property.defaultValue);\n }\n }\n}\n\nfunction copyDefaultValue(propertyType: PropertyType): PropertyType {\n if (Array.isArray(propertyType)) {\n return [...propertyType.map(copyDefaultValue)];\n } else {\n return propertyType;\n }\n}\n\n/**\n * Creates a deep copy of the specified AST node.\n * The resulting copy will only contain semantically relevant information, such as the `$type` property and AST properties.\n *\n * @param node The AST node to deeply copy.\n * @param buildReference References are not copied, instead this function is called to rebuild them.\n * @param trace For the sake of tracking copied nodes and their originals a `trace` map can be provided (optional).\n */\nexport function copyAstNode(node: T, buildReference: (node: AstNode, property: string, refNode: CstNode | undefined, refText: string, origReference: Reference) => Reference, trace?: Map): T {\n const copy: GenericAstNode = { $type: node.$type };\n\n if (trace) {\n trace.set(node, copy);\n trace.set(copy, node);\n }\n\n for (const [name, value] of Object.entries(node)) {\n if (!name.startsWith('$')) {\n if (isAstNode(value)) {\n copy[name] = copyAstNode(value, buildReference, trace);\n } else if (isReference(value)) {\n copy[name] = buildReference(\n copy,\n name,\n value.$refNode,\n value.$refText,\n value\n );\n } else if (Array.isArray(value)) {\n const copiedArray: unknown[] = [];\n for (const element of value) {\n if (isAstNode(element)) {\n copiedArray.push(copyAstNode(element, buildReference, trace));\n } else if (isReference(element)) {\n copiedArray.push(\n buildReference(\n copy,\n name,\n element.$refNode,\n element.$refText,\n element\n )\n );\n } else {\n copiedArray.push(element);\n }\n }\n copy[name] = copiedArray;\n } else {\n copy[name] = value;\n }\n }\n }\n\n linkContentToContainer(copy, { deep: true });\n return copy as unknown as T;\n}\n\n/**\n * Recursively makes all properties of an AstNode optional, except for those\n * that start with a dollar sign ($) or are of type boolean or are of type array.\n * If the type is a Reference or an Array, it applies the transformation recursively\n * to the inner type.\n * Otherwise the type is returned as is.\n *\n * @template T - The type to be transformed.\n*/\nexport type DeepPartialAstNode =\n // if T is a Reference transform it to Reference>\n T extends Reference ? Reference> :\n // if T is an AstNode\n T extends AstNode ? {\n // transform the type of each property starting with '$' or with a boolean or array type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof T as K extends `$${string}` | (T[K] extends (boolean | any[]) ? K : never) ? K : never]: DeepPartialAstNode;\n } & {\n // force the property as optional and transform its type for each property not starting with '$' or with a type different from boolean or array type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof T as K extends `$${string}` ? never: T[K] extends (boolean | any[]) ? never : K]?: DeepPartialAstNode;\n } :\n // if T is an Array convert to Array>\n T extends Array ? Array> :\n // otherwise keep T as is\n T;\n", "/******************************************************************************\n * This file was generated by langium-cli 4.2.0.\n * DO NOT EDIT MANUALLY!\n ******************************************************************************/\n\n/* eslint-disable */\nimport * as langium from '../../syntax-tree.js';\n\nexport const LangiumGrammarTerminals = {\n ID: /\\^?[_a-zA-Z][\\w_]*/,\n STRING: /\"(\\\\.|[^\"\\\\])*\"|'(\\\\.|[^'\\\\])*'/,\n NUMBER: /NaN|-?((\\d*\\.\\d+|\\d+)([Ee][+-]?\\d+)?|Infinity)/,\n RegexLiteral: /\\/(?![*+?])(?:[^\\r\\n\\[/\\\\]|\\\\.|\\[(?:[^\\r\\n\\]\\\\]|\\\\.)*\\])+\\/[a-z]*/,\n WS: /\\s+/,\n ML_COMMENT: /\\/\\*[\\s\\S]*?\\*\\//,\n SL_COMMENT: /\\/\\/[^\\n\\r]*/,\n};\n\nexport type LangiumGrammarTerminalNames = keyof typeof LangiumGrammarTerminals;\n\nexport type LangiumGrammarKeywordNames =\n | \"!\"\n | \"&\"\n | \"(\"\n | \")\"\n | \"*\"\n | \"+\"\n | \"+=\"\n | \",\"\n | \"->\"\n | \".\"\n | \"..\"\n | \":\"\n | \";\"\n | \"<\"\n | \"=\"\n | \"=>\"\n | \">\"\n | \"?\"\n | \"?!\"\n | \"?;\n}\n\nexport const Action = {\n $type: 'Action',\n cardinality: 'cardinality',\n feature: 'feature',\n inferredType: 'inferredType',\n operator: 'operator',\n type: 'type'\n} as const;\n\nexport function isAction(item: unknown): item is Action {\n return reflection.isInstance(item, Action.$type);\n}\n\nexport interface Alternatives extends AbstractElement {\n readonly $type: 'Alternatives';\n elements: Array;\n}\n\nexport const Alternatives = {\n $type: 'Alternatives',\n cardinality: 'cardinality',\n elements: 'elements'\n} as const;\n\nexport function isAlternatives(item: unknown): item is Alternatives {\n return reflection.isInstance(item, Alternatives.$type);\n}\n\nexport interface ArrayLiteral extends langium.AstNode {\n readonly $container: ArrayLiteral | TypeAttribute;\n readonly $type: 'ArrayLiteral';\n elements: Array;\n}\n\nexport const ArrayLiteral = {\n $type: 'ArrayLiteral',\n elements: 'elements'\n} as const;\n\nexport function isArrayLiteral(item: unknown): item is ArrayLiteral {\n return reflection.isInstance(item, ArrayLiteral.$type);\n}\n\nexport interface ArrayType extends langium.AstNode {\n readonly $container: ArrayType | ReferenceType | Type | TypeAttribute | UnionType;\n readonly $type: 'ArrayType';\n elementType: TypeDefinition;\n}\n\nexport const ArrayType = {\n $type: 'ArrayType',\n elementType: 'elementType'\n} as const;\n\nexport function isArrayType(item: unknown): item is ArrayType {\n return reflection.isInstance(item, ArrayType.$type);\n}\n\nexport interface Assignment extends AbstractElement {\n readonly $type: 'Assignment';\n feature: FeatureName;\n operator: '+=' | '=' | '?=';\n predicate?: '->' | '=>';\n terminal: AbstractElement;\n}\n\nexport const Assignment = {\n $type: 'Assignment',\n cardinality: 'cardinality',\n feature: 'feature',\n operator: 'operator',\n predicate: 'predicate',\n terminal: 'terminal'\n} as const;\n\nexport function isAssignment(item: unknown): item is Assignment {\n return reflection.isInstance(item, Assignment.$type);\n}\n\nexport type Associativity = 'left' | 'right';\n\nexport interface BooleanLiteral extends langium.AstNode {\n readonly $container: ArrayLiteral | Conjunction | Disjunction | Group | NamedArgument | Negation | TypeAttribute;\n readonly $type: 'BooleanLiteral';\n true: boolean;\n}\n\nexport const BooleanLiteral = {\n $type: 'BooleanLiteral',\n true: 'true'\n} as const;\n\nexport function isBooleanLiteral(item: unknown): item is BooleanLiteral {\n return reflection.isInstance(item, BooleanLiteral.$type);\n}\n\nexport interface CharacterRange extends TerminalElement {\n readonly $type: 'CharacterRange';\n left: Keyword;\n right?: Keyword;\n}\n\nexport const CharacterRange = {\n $type: 'CharacterRange',\n cardinality: 'cardinality',\n left: 'left',\n lookahead: 'lookahead',\n parenthesized: 'parenthesized',\n right: 'right'\n} as const;\n\nexport function isCharacterRange(item: unknown): item is CharacterRange {\n return reflection.isInstance(item, CharacterRange.$type);\n}\n\nexport type Condition = BooleanLiteral | Conjunction | Disjunction | Negation | ParameterReference;\n\nexport const Condition = {\n $type: 'Condition'\n} as const;\n\nexport function isCondition(item: unknown): item is Condition {\n return reflection.isInstance(item, Condition.$type);\n}\n\nexport interface Conjunction extends langium.AstNode {\n readonly $container: Conjunction | Disjunction | Group | NamedArgument | Negation;\n readonly $type: 'Conjunction';\n left: Condition;\n right: Condition;\n}\n\nexport const Conjunction = {\n $type: 'Conjunction',\n left: 'left',\n right: 'right'\n} as const;\n\nexport function isConjunction(item: unknown): item is Conjunction {\n return reflection.isInstance(item, Conjunction.$type);\n}\n\nexport interface CrossReference extends AbstractElement {\n readonly $type: 'CrossReference';\n deprecatedSyntax: boolean;\n isMulti: boolean;\n terminal?: AbstractElement;\n type: langium.Reference;\n}\n\nexport const CrossReference = {\n $type: 'CrossReference',\n cardinality: 'cardinality',\n deprecatedSyntax: 'deprecatedSyntax',\n isMulti: 'isMulti',\n terminal: 'terminal',\n type: 'type'\n} as const;\n\nexport function isCrossReference(item: unknown): item is CrossReference {\n return reflection.isInstance(item, CrossReference.$type);\n}\n\nexport interface Disjunction extends langium.AstNode {\n readonly $container: Conjunction | Disjunction | Group | NamedArgument | Negation;\n readonly $type: 'Disjunction';\n left: Condition;\n right: Condition;\n}\n\nexport const Disjunction = {\n $type: 'Disjunction',\n left: 'left',\n right: 'right'\n} as const;\n\nexport function isDisjunction(item: unknown): item is Disjunction {\n return reflection.isInstance(item, Disjunction.$type);\n}\n\nexport interface EndOfFile extends AbstractElement {\n readonly $type: 'EndOfFile';\n}\n\nexport const EndOfFile = {\n $type: 'EndOfFile',\n cardinality: 'cardinality'\n} as const;\n\nexport function isEndOfFile(item: unknown): item is EndOfFile {\n return reflection.isInstance(item, EndOfFile.$type);\n}\n\nexport type FeatureName = 'assoc' | 'current' | 'entry' | 'extends' | 'false' | 'fragment' | 'grammar' | 'hidden' | 'import' | 'infer' | 'infers' | 'infix' | 'interface' | 'left' | 'on' | 'returns' | 'right' | 'terminal' | 'true' | 'type' | 'with' | PrimitiveType | string;\n\nexport interface Grammar extends langium.AstNode {\n readonly $type: 'Grammar';\n imports: Array;\n interfaces: Array;\n isDeclared: boolean;\n name?: string;\n rules: Array;\n types: Array;\n}\n\nexport const Grammar = {\n $type: 'Grammar',\n imports: 'imports',\n interfaces: 'interfaces',\n isDeclared: 'isDeclared',\n name: 'name',\n rules: 'rules',\n types: 'types'\n} as const;\n\nexport function isGrammar(item: unknown): item is Grammar {\n return reflection.isInstance(item, Grammar.$type);\n}\n\nexport interface GrammarImport extends langium.AstNode {\n readonly $container: Grammar;\n readonly $type: 'GrammarImport';\n path: string;\n}\n\nexport const GrammarImport = {\n $type: 'GrammarImport',\n path: 'path'\n} as const;\n\nexport function isGrammarImport(item: unknown): item is GrammarImport {\n return reflection.isInstance(item, GrammarImport.$type);\n}\n\nexport interface Group extends AbstractElement {\n readonly $type: 'Group';\n elements: Array;\n guardCondition?: Condition;\n predicate?: '->' | '=>';\n}\n\nexport const Group = {\n $type: 'Group',\n cardinality: 'cardinality',\n elements: 'elements',\n guardCondition: 'guardCondition',\n predicate: 'predicate'\n} as const;\n\nexport function isGroup(item: unknown): item is Group {\n return reflection.isInstance(item, Group.$type);\n}\n\nexport interface InferredType extends langium.AstNode {\n readonly $container: Action | InfixRule | ParserRule;\n readonly $type: 'InferredType';\n name: string;\n}\n\nexport const InferredType = {\n $type: 'InferredType',\n name: 'name'\n} as const;\n\nexport function isInferredType(item: unknown): item is InferredType {\n return reflection.isInstance(item, InferredType.$type);\n}\n\nexport interface InfixRule extends langium.AstNode {\n readonly $container: Grammar;\n readonly $type: 'InfixRule';\n call: RuleCall;\n dataType?: PrimitiveType;\n inferredType?: InferredType;\n name: string;\n operators: InfixRuleOperators;\n parameters: Array;\n returnType?: langium.Reference;\n}\n\nexport const InfixRule = {\n $type: 'InfixRule',\n call: 'call',\n dataType: 'dataType',\n inferredType: 'inferredType',\n name: 'name',\n operators: 'operators',\n parameters: 'parameters',\n returnType: 'returnType'\n} as const;\n\nexport function isInfixRule(item: unknown): item is InfixRule {\n return reflection.isInstance(item, InfixRule.$type);\n}\n\nexport interface InfixRuleOperatorList extends langium.AstNode {\n readonly $container: InfixRuleOperators;\n readonly $type: 'InfixRuleOperatorList';\n associativity?: Associativity;\n operators: Array;\n}\n\nexport const InfixRuleOperatorList = {\n $type: 'InfixRuleOperatorList',\n associativity: 'associativity',\n operators: 'operators'\n} as const;\n\nexport function isInfixRuleOperatorList(item: unknown): item is InfixRuleOperatorList {\n return reflection.isInstance(item, InfixRuleOperatorList.$type);\n}\n\nexport interface InfixRuleOperators extends langium.AstNode {\n readonly $container: InfixRule;\n readonly $type: 'InfixRuleOperators';\n precedences: Array;\n}\n\nexport const InfixRuleOperators = {\n $type: 'InfixRuleOperators',\n precedences: 'precedences'\n} as const;\n\nexport function isInfixRuleOperators(item: unknown): item is InfixRuleOperators {\n return reflection.isInstance(item, InfixRuleOperators.$type);\n}\n\nexport interface Interface extends langium.AstNode {\n readonly $container: Grammar;\n readonly $type: 'Interface';\n attributes: Array;\n name: string;\n superTypes: Array>;\n}\n\nexport const Interface = {\n $type: 'Interface',\n attributes: 'attributes',\n name: 'name',\n superTypes: 'superTypes'\n} as const;\n\nexport function isInterface(item: unknown): item is Interface {\n return reflection.isInstance(item, Interface.$type);\n}\n\nexport interface Keyword extends AbstractElement {\n readonly $container: CharacterRange | InfixRuleOperatorList;\n readonly $type: 'Keyword';\n predicate?: '->' | '=>';\n value: string;\n}\n\nexport const Keyword = {\n $type: 'Keyword',\n cardinality: 'cardinality',\n predicate: 'predicate',\n value: 'value'\n} as const;\n\nexport function isKeyword(item: unknown): item is Keyword {\n return reflection.isInstance(item, Keyword.$type);\n}\n\nexport interface NamedArgument extends langium.AstNode {\n readonly $container: RuleCall;\n readonly $type: 'NamedArgument';\n calledByName: boolean;\n parameter?: langium.Reference;\n value: Condition;\n}\n\nexport const NamedArgument = {\n $type: 'NamedArgument',\n calledByName: 'calledByName',\n parameter: 'parameter',\n value: 'value'\n} as const;\n\nexport function isNamedArgument(item: unknown): item is NamedArgument {\n return reflection.isInstance(item, NamedArgument.$type);\n}\n\nexport interface NegatedToken extends TerminalElement {\n readonly $type: 'NegatedToken';\n terminal: AbstractElement;\n}\n\nexport const NegatedToken = {\n $type: 'NegatedToken',\n cardinality: 'cardinality',\n lookahead: 'lookahead',\n parenthesized: 'parenthesized',\n terminal: 'terminal'\n} as const;\n\nexport function isNegatedToken(item: unknown): item is NegatedToken {\n return reflection.isInstance(item, NegatedToken.$type);\n}\n\nexport interface Negation extends langium.AstNode {\n readonly $container: Conjunction | Disjunction | Group | NamedArgument | Negation;\n readonly $type: 'Negation';\n value: Condition;\n}\n\nexport const Negation = {\n $type: 'Negation',\n value: 'value'\n} as const;\n\nexport function isNegation(item: unknown): item is Negation {\n return reflection.isInstance(item, Negation.$type);\n}\n\nexport interface NumberLiteral extends langium.AstNode {\n readonly $container: ArrayLiteral | TypeAttribute;\n readonly $type: 'NumberLiteral';\n value: number;\n}\n\nexport const NumberLiteral = {\n $type: 'NumberLiteral',\n value: 'value'\n} as const;\n\nexport function isNumberLiteral(item: unknown): item is NumberLiteral {\n return reflection.isInstance(item, NumberLiteral.$type);\n}\n\nexport interface Parameter extends langium.AstNode {\n readonly $container: InfixRule | ParserRule;\n readonly $type: 'Parameter';\n name: string;\n}\n\nexport const Parameter = {\n $type: 'Parameter',\n name: 'name'\n} as const;\n\nexport function isParameter(item: unknown): item is Parameter {\n return reflection.isInstance(item, Parameter.$type);\n}\n\nexport interface ParameterReference extends langium.AstNode {\n readonly $container: Conjunction | Disjunction | Group | NamedArgument | Negation;\n readonly $type: 'ParameterReference';\n parameter: langium.Reference;\n}\n\nexport const ParameterReference = {\n $type: 'ParameterReference',\n parameter: 'parameter'\n} as const;\n\nexport function isParameterReference(item: unknown): item is ParameterReference {\n return reflection.isInstance(item, ParameterReference.$type);\n}\n\nexport interface ParserRule extends langium.AstNode {\n readonly $container: Grammar;\n readonly $type: 'ParserRule';\n dataType?: PrimitiveType;\n definition: AbstractElement;\n entry: boolean;\n fragment: boolean;\n inferredType?: InferredType;\n name: string;\n parameters: Array;\n returnType?: langium.Reference;\n}\n\nexport const ParserRule = {\n $type: 'ParserRule',\n dataType: 'dataType',\n definition: 'definition',\n entry: 'entry',\n fragment: 'fragment',\n inferredType: 'inferredType',\n name: 'name',\n parameters: 'parameters',\n returnType: 'returnType'\n} as const;\n\nexport function isParserRule(item: unknown): item is ParserRule {\n return reflection.isInstance(item, ParserRule.$type);\n}\n\nexport type PrimitiveType = 'Date' | 'bigint' | 'boolean' | 'number' | 'string';\n\nexport interface ReferenceType extends langium.AstNode {\n readonly $container: ArrayType | ReferenceType | Type | TypeAttribute | UnionType;\n readonly $type: 'ReferenceType';\n isMulti: boolean;\n referenceType: TypeDefinition;\n}\n\nexport const ReferenceType = {\n $type: 'ReferenceType',\n isMulti: 'isMulti',\n referenceType: 'referenceType'\n} as const;\n\nexport function isReferenceType(item: unknown): item is ReferenceType {\n return reflection.isInstance(item, ReferenceType.$type);\n}\n\nexport interface RegexToken extends TerminalElement {\n readonly $type: 'RegexToken';\n regex: string;\n}\n\nexport const RegexToken = {\n $type: 'RegexToken',\n cardinality: 'cardinality',\n lookahead: 'lookahead',\n parenthesized: 'parenthesized',\n regex: 'regex'\n} as const;\n\nexport function isRegexToken(item: unknown): item is RegexToken {\n return reflection.isInstance(item, RegexToken.$type);\n}\n\nexport interface ReturnType extends langium.AstNode {\n readonly $container: TerminalRule;\n readonly $type: 'ReturnType';\n name: PrimitiveType | string;\n}\n\nexport const ReturnType = {\n $type: 'ReturnType',\n name: 'name'\n} as const;\n\nexport function isReturnType(item: unknown): item is ReturnType {\n return reflection.isInstance(item, ReturnType.$type);\n}\n\nexport interface RuleCall extends AbstractElement {\n readonly $container: InfixRule;\n readonly $type: 'RuleCall';\n arguments: Array;\n predicate?: '->' | '=>';\n rule: langium.Reference;\n}\n\nexport const RuleCall = {\n $type: 'RuleCall',\n arguments: 'arguments',\n cardinality: 'cardinality',\n predicate: 'predicate',\n rule: 'rule'\n} as const;\n\nexport function isRuleCall(item: unknown): item is RuleCall {\n return reflection.isInstance(item, RuleCall.$type);\n}\n\nexport interface SimpleType extends langium.AstNode {\n readonly $container: ArrayType | ReferenceType | Type | TypeAttribute | UnionType;\n readonly $type: 'SimpleType';\n primitiveType?: PrimitiveType;\n stringType?: string;\n typeRef?: langium.Reference;\n}\n\nexport const SimpleType = {\n $type: 'SimpleType',\n primitiveType: 'primitiveType',\n stringType: 'stringType',\n typeRef: 'typeRef'\n} as const;\n\nexport function isSimpleType(item: unknown): item is SimpleType {\n return reflection.isInstance(item, SimpleType.$type);\n}\n\nexport interface StringLiteral extends langium.AstNode {\n readonly $container: ArrayLiteral | TypeAttribute;\n readonly $type: 'StringLiteral';\n value: string;\n}\n\nexport const StringLiteral = {\n $type: 'StringLiteral',\n value: 'value'\n} as const;\n\nexport function isStringLiteral(item: unknown): item is StringLiteral {\n return reflection.isInstance(item, StringLiteral.$type);\n}\n\nexport interface TerminalAlternatives extends TerminalElement {\n readonly $type: 'TerminalAlternatives';\n elements: Array;\n}\n\nexport const TerminalAlternatives = {\n $type: 'TerminalAlternatives',\n cardinality: 'cardinality',\n elements: 'elements',\n lookahead: 'lookahead',\n parenthesized: 'parenthesized'\n} as const;\n\nexport function isTerminalAlternatives(item: unknown): item is TerminalAlternatives {\n return reflection.isInstance(item, TerminalAlternatives.$type);\n}\n\nexport interface TerminalElement extends AbstractElement {\n readonly $type: 'CharacterRange' | 'NegatedToken' | 'RegexToken' | 'TerminalAlternatives' | 'TerminalElement' | 'TerminalGroup' | 'TerminalRuleCall' | 'UntilToken' | 'Wildcard';\n lookahead?: '?!' | '?;\n}\n\nexport const TerminalGroup = {\n $type: 'TerminalGroup',\n cardinality: 'cardinality',\n elements: 'elements',\n lookahead: 'lookahead',\n parenthesized: 'parenthesized'\n} as const;\n\nexport function isTerminalGroup(item: unknown): item is TerminalGroup {\n return reflection.isInstance(item, TerminalGroup.$type);\n}\n\nexport interface TerminalRule extends langium.AstNode {\n readonly $container: Grammar;\n readonly $type: 'TerminalRule';\n definition: TerminalElement;\n fragment: boolean;\n hidden: boolean;\n name: string;\n type?: ReturnType;\n}\n\nexport const TerminalRule = {\n $type: 'TerminalRule',\n definition: 'definition',\n fragment: 'fragment',\n hidden: 'hidden',\n name: 'name',\n type: 'type'\n} as const;\n\nexport function isTerminalRule(item: unknown): item is TerminalRule {\n return reflection.isInstance(item, TerminalRule.$type);\n}\n\nexport interface TerminalRuleCall extends TerminalElement {\n readonly $type: 'TerminalRuleCall';\n rule: langium.Reference;\n}\n\nexport const TerminalRuleCall = {\n $type: 'TerminalRuleCall',\n cardinality: 'cardinality',\n lookahead: 'lookahead',\n parenthesized: 'parenthesized',\n rule: 'rule'\n} as const;\n\nexport function isTerminalRuleCall(item: unknown): item is TerminalRuleCall {\n return reflection.isInstance(item, TerminalRuleCall.$type);\n}\n\nexport interface Type extends langium.AstNode {\n readonly $container: Grammar;\n readonly $type: 'Type';\n name: string;\n type: TypeDefinition;\n}\n\nexport const Type = {\n $type: 'Type',\n name: 'name',\n type: 'type'\n} as const;\n\nexport function isType(item: unknown): item is Type {\n return reflection.isInstance(item, Type.$type);\n}\n\nexport interface TypeAttribute extends langium.AstNode {\n readonly $container: Interface;\n readonly $type: 'TypeAttribute';\n defaultValue?: ValueLiteral;\n isOptional: boolean;\n name: FeatureName;\n type: TypeDefinition;\n}\n\nexport const TypeAttribute = {\n $type: 'TypeAttribute',\n defaultValue: 'defaultValue',\n isOptional: 'isOptional',\n name: 'name',\n type: 'type'\n} as const;\n\nexport function isTypeAttribute(item: unknown): item is TypeAttribute {\n return reflection.isInstance(item, TypeAttribute.$type);\n}\n\nexport type TypeDefinition = ArrayType | ReferenceType | SimpleType | UnionType;\n\nexport const TypeDefinition = {\n $type: 'TypeDefinition'\n} as const;\n\nexport function isTypeDefinition(item: unknown): item is TypeDefinition {\n return reflection.isInstance(item, TypeDefinition.$type);\n}\n\nexport interface UnionType extends langium.AstNode {\n readonly $container: ArrayType | ReferenceType | Type | TypeAttribute | UnionType;\n readonly $type: 'UnionType';\n types: Array;\n}\n\nexport const UnionType = {\n $type: 'UnionType',\n types: 'types'\n} as const;\n\nexport function isUnionType(item: unknown): item is UnionType {\n return reflection.isInstance(item, UnionType.$type);\n}\n\nexport interface UnorderedGroup extends AbstractElement {\n readonly $type: 'UnorderedGroup';\n elements: Array;\n}\n\nexport const UnorderedGroup = {\n $type: 'UnorderedGroup',\n cardinality: 'cardinality',\n elements: 'elements'\n} as const;\n\nexport function isUnorderedGroup(item: unknown): item is UnorderedGroup {\n return reflection.isInstance(item, UnorderedGroup.$type);\n}\n\nexport interface UntilToken extends TerminalElement {\n readonly $type: 'UntilToken';\n terminal: AbstractElement;\n}\n\nexport const UntilToken = {\n $type: 'UntilToken',\n cardinality: 'cardinality',\n lookahead: 'lookahead',\n parenthesized: 'parenthesized',\n terminal: 'terminal'\n} as const;\n\nexport function isUntilToken(item: unknown): item is UntilToken {\n return reflection.isInstance(item, UntilToken.$type);\n}\n\nexport type ValueLiteral = ArrayLiteral | BooleanLiteral | NumberLiteral | StringLiteral;\n\nexport const ValueLiteral = {\n $type: 'ValueLiteral'\n} as const;\n\nexport function isValueLiteral(item: unknown): item is ValueLiteral {\n return reflection.isInstance(item, ValueLiteral.$type);\n}\n\nexport interface Wildcard extends TerminalElement {\n readonly $type: 'Wildcard';\n}\n\nexport const Wildcard = {\n $type: 'Wildcard',\n cardinality: 'cardinality',\n lookahead: 'lookahead',\n parenthesized: 'parenthesized'\n} as const;\n\nexport function isWildcard(item: unknown): item is Wildcard {\n return reflection.isInstance(item, Wildcard.$type);\n}\n\nexport type LangiumGrammarAstType = {\n AbstractElement: AbstractElement\n AbstractParserRule: AbstractParserRule\n AbstractRule: AbstractRule\n AbstractType: AbstractType\n Action: Action\n Alternatives: Alternatives\n ArrayLiteral: ArrayLiteral\n ArrayType: ArrayType\n Assignment: Assignment\n BooleanLiteral: BooleanLiteral\n CharacterRange: CharacterRange\n Condition: Condition\n Conjunction: Conjunction\n CrossReference: CrossReference\n Disjunction: Disjunction\n EndOfFile: EndOfFile\n Grammar: Grammar\n GrammarImport: GrammarImport\n Group: Group\n InferredType: InferredType\n InfixRule: InfixRule\n InfixRuleOperatorList: InfixRuleOperatorList\n InfixRuleOperators: InfixRuleOperators\n Interface: Interface\n Keyword: Keyword\n NamedArgument: NamedArgument\n NegatedToken: NegatedToken\n Negation: Negation\n NumberLiteral: NumberLiteral\n Parameter: Parameter\n ParameterReference: ParameterReference\n ParserRule: ParserRule\n ReferenceType: ReferenceType\n RegexToken: RegexToken\n ReturnType: ReturnType\n RuleCall: RuleCall\n SimpleType: SimpleType\n StringLiteral: StringLiteral\n TerminalAlternatives: TerminalAlternatives\n TerminalElement: TerminalElement\n TerminalGroup: TerminalGroup\n TerminalRule: TerminalRule\n TerminalRuleCall: TerminalRuleCall\n Type: Type\n TypeAttribute: TypeAttribute\n TypeDefinition: TypeDefinition\n UnionType: UnionType\n UnorderedGroup: UnorderedGroup\n UntilToken: UntilToken\n ValueLiteral: ValueLiteral\n Wildcard: Wildcard\n}\n\nexport class LangiumGrammarAstReflection extends langium.AbstractAstReflection {\n override readonly types = {\n AbstractElement: {\n name: AbstractElement.$type,\n properties: {\n cardinality: {\n name: AbstractElement.cardinality\n }\n },\n superTypes: []\n },\n AbstractParserRule: {\n name: AbstractParserRule.$type,\n properties: {\n },\n superTypes: [AbstractRule.$type, AbstractType.$type]\n },\n AbstractRule: {\n name: AbstractRule.$type,\n properties: {\n },\n superTypes: []\n },\n AbstractType: {\n name: AbstractType.$type,\n properties: {\n },\n superTypes: []\n },\n Action: {\n name: Action.$type,\n properties: {\n cardinality: {\n name: Action.cardinality\n },\n feature: {\n name: Action.feature\n },\n inferredType: {\n name: Action.inferredType\n },\n operator: {\n name: Action.operator\n },\n type: {\n name: Action.type,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractElement.$type]\n },\n Alternatives: {\n name: Alternatives.$type,\n properties: {\n cardinality: {\n name: Alternatives.cardinality\n },\n elements: {\n name: Alternatives.elements,\n defaultValue: []\n }\n },\n superTypes: [AbstractElement.$type]\n },\n ArrayLiteral: {\n name: ArrayLiteral.$type,\n properties: {\n elements: {\n name: ArrayLiteral.elements,\n defaultValue: []\n }\n },\n superTypes: [ValueLiteral.$type]\n },\n ArrayType: {\n name: ArrayType.$type,\n properties: {\n elementType: {\n name: ArrayType.elementType\n }\n },\n superTypes: [TypeDefinition.$type]\n },\n Assignment: {\n name: Assignment.$type,\n properties: {\n cardinality: {\n name: Assignment.cardinality\n },\n feature: {\n name: Assignment.feature\n },\n operator: {\n name: Assignment.operator\n },\n predicate: {\n name: Assignment.predicate\n },\n terminal: {\n name: Assignment.terminal\n }\n },\n superTypes: [AbstractElement.$type]\n },\n BooleanLiteral: {\n name: BooleanLiteral.$type,\n properties: {\n true: {\n name: BooleanLiteral.true,\n defaultValue: false\n }\n },\n superTypes: [Condition.$type, ValueLiteral.$type]\n },\n CharacterRange: {\n name: CharacterRange.$type,\n properties: {\n cardinality: {\n name: CharacterRange.cardinality\n },\n left: {\n name: CharacterRange.left\n },\n lookahead: {\n name: CharacterRange.lookahead\n },\n parenthesized: {\n name: CharacterRange.parenthesized,\n defaultValue: false\n },\n right: {\n name: CharacterRange.right\n }\n },\n superTypes: [TerminalElement.$type]\n },\n Condition: {\n name: Condition.$type,\n properties: {\n },\n superTypes: []\n },\n Conjunction: {\n name: Conjunction.$type,\n properties: {\n left: {\n name: Conjunction.left\n },\n right: {\n name: Conjunction.right\n }\n },\n superTypes: [Condition.$type]\n },\n CrossReference: {\n name: CrossReference.$type,\n properties: {\n cardinality: {\n name: CrossReference.cardinality\n },\n deprecatedSyntax: {\n name: CrossReference.deprecatedSyntax,\n defaultValue: false\n },\n isMulti: {\n name: CrossReference.isMulti,\n defaultValue: false\n },\n terminal: {\n name: CrossReference.terminal\n },\n type: {\n name: CrossReference.type,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractElement.$type]\n },\n Disjunction: {\n name: Disjunction.$type,\n properties: {\n left: {\n name: Disjunction.left\n },\n right: {\n name: Disjunction.right\n }\n },\n superTypes: [Condition.$type]\n },\n EndOfFile: {\n name: EndOfFile.$type,\n properties: {\n cardinality: {\n name: EndOfFile.cardinality\n }\n },\n superTypes: [AbstractElement.$type]\n },\n Grammar: {\n name: Grammar.$type,\n properties: {\n imports: {\n name: Grammar.imports,\n defaultValue: []\n },\n interfaces: {\n name: Grammar.interfaces,\n defaultValue: []\n },\n isDeclared: {\n name: Grammar.isDeclared,\n defaultValue: false\n },\n name: {\n name: Grammar.name\n },\n rules: {\n name: Grammar.rules,\n defaultValue: []\n },\n types: {\n name: Grammar.types,\n defaultValue: []\n }\n },\n superTypes: []\n },\n GrammarImport: {\n name: GrammarImport.$type,\n properties: {\n path: {\n name: GrammarImport.path\n }\n },\n superTypes: []\n },\n Group: {\n name: Group.$type,\n properties: {\n cardinality: {\n name: Group.cardinality\n },\n elements: {\n name: Group.elements,\n defaultValue: []\n },\n guardCondition: {\n name: Group.guardCondition\n },\n predicate: {\n name: Group.predicate\n }\n },\n superTypes: [AbstractElement.$type]\n },\n InferredType: {\n name: InferredType.$type,\n properties: {\n name: {\n name: InferredType.name\n }\n },\n superTypes: [AbstractType.$type]\n },\n InfixRule: {\n name: InfixRule.$type,\n properties: {\n call: {\n name: InfixRule.call\n },\n dataType: {\n name: InfixRule.dataType\n },\n inferredType: {\n name: InfixRule.inferredType\n },\n name: {\n name: InfixRule.name\n },\n operators: {\n name: InfixRule.operators\n },\n parameters: {\n name: InfixRule.parameters,\n defaultValue: []\n },\n returnType: {\n name: InfixRule.returnType,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractParserRule.$type]\n },\n InfixRuleOperatorList: {\n name: InfixRuleOperatorList.$type,\n properties: {\n associativity: {\n name: InfixRuleOperatorList.associativity\n },\n operators: {\n name: InfixRuleOperatorList.operators,\n defaultValue: []\n }\n },\n superTypes: []\n },\n InfixRuleOperators: {\n name: InfixRuleOperators.$type,\n properties: {\n precedences: {\n name: InfixRuleOperators.precedences,\n defaultValue: []\n }\n },\n superTypes: []\n },\n Interface: {\n name: Interface.$type,\n properties: {\n attributes: {\n name: Interface.attributes,\n defaultValue: []\n },\n name: {\n name: Interface.name\n },\n superTypes: {\n name: Interface.superTypes,\n defaultValue: [],\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractType.$type]\n },\n Keyword: {\n name: Keyword.$type,\n properties: {\n cardinality: {\n name: Keyword.cardinality\n },\n predicate: {\n name: Keyword.predicate\n },\n value: {\n name: Keyword.value\n }\n },\n superTypes: [AbstractElement.$type]\n },\n NamedArgument: {\n name: NamedArgument.$type,\n properties: {\n calledByName: {\n name: NamedArgument.calledByName,\n defaultValue: false\n },\n parameter: {\n name: NamedArgument.parameter,\n referenceType: Parameter.$type\n },\n value: {\n name: NamedArgument.value\n }\n },\n superTypes: []\n },\n NegatedToken: {\n name: NegatedToken.$type,\n properties: {\n cardinality: {\n name: NegatedToken.cardinality\n },\n lookahead: {\n name: NegatedToken.lookahead\n },\n parenthesized: {\n name: NegatedToken.parenthesized,\n defaultValue: false\n },\n terminal: {\n name: NegatedToken.terminal\n }\n },\n superTypes: [TerminalElement.$type]\n },\n Negation: {\n name: Negation.$type,\n properties: {\n value: {\n name: Negation.value\n }\n },\n superTypes: [Condition.$type]\n },\n NumberLiteral: {\n name: NumberLiteral.$type,\n properties: {\n value: {\n name: NumberLiteral.value\n }\n },\n superTypes: [ValueLiteral.$type]\n },\n Parameter: {\n name: Parameter.$type,\n properties: {\n name: {\n name: Parameter.name\n }\n },\n superTypes: []\n },\n ParameterReference: {\n name: ParameterReference.$type,\n properties: {\n parameter: {\n name: ParameterReference.parameter,\n referenceType: Parameter.$type\n }\n },\n superTypes: [Condition.$type]\n },\n ParserRule: {\n name: ParserRule.$type,\n properties: {\n dataType: {\n name: ParserRule.dataType\n },\n definition: {\n name: ParserRule.definition\n },\n entry: {\n name: ParserRule.entry,\n defaultValue: false\n },\n fragment: {\n name: ParserRule.fragment,\n defaultValue: false\n },\n inferredType: {\n name: ParserRule.inferredType\n },\n name: {\n name: ParserRule.name\n },\n parameters: {\n name: ParserRule.parameters,\n defaultValue: []\n },\n returnType: {\n name: ParserRule.returnType,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [AbstractParserRule.$type]\n },\n ReferenceType: {\n name: ReferenceType.$type,\n properties: {\n isMulti: {\n name: ReferenceType.isMulti,\n defaultValue: false\n },\n referenceType: {\n name: ReferenceType.referenceType\n }\n },\n superTypes: [TypeDefinition.$type]\n },\n RegexToken: {\n name: RegexToken.$type,\n properties: {\n cardinality: {\n name: RegexToken.cardinality\n },\n lookahead: {\n name: RegexToken.lookahead\n },\n parenthesized: {\n name: RegexToken.parenthesized,\n defaultValue: false\n },\n regex: {\n name: RegexToken.regex\n }\n },\n superTypes: [TerminalElement.$type]\n },\n ReturnType: {\n name: ReturnType.$type,\n properties: {\n name: {\n name: ReturnType.name\n }\n },\n superTypes: []\n },\n RuleCall: {\n name: RuleCall.$type,\n properties: {\n arguments: {\n name: RuleCall.arguments,\n defaultValue: []\n },\n cardinality: {\n name: RuleCall.cardinality\n },\n predicate: {\n name: RuleCall.predicate\n },\n rule: {\n name: RuleCall.rule,\n referenceType: AbstractRule.$type\n }\n },\n superTypes: [AbstractElement.$type]\n },\n SimpleType: {\n name: SimpleType.$type,\n properties: {\n primitiveType: {\n name: SimpleType.primitiveType\n },\n stringType: {\n name: SimpleType.stringType\n },\n typeRef: {\n name: SimpleType.typeRef,\n referenceType: AbstractType.$type\n }\n },\n superTypes: [TypeDefinition.$type]\n },\n StringLiteral: {\n name: StringLiteral.$type,\n properties: {\n value: {\n name: StringLiteral.value\n }\n },\n superTypes: [ValueLiteral.$type]\n },\n TerminalAlternatives: {\n name: TerminalAlternatives.$type,\n properties: {\n cardinality: {\n name: TerminalAlternatives.cardinality\n },\n elements: {\n name: TerminalAlternatives.elements,\n defaultValue: []\n },\n lookahead: {\n name: TerminalAlternatives.lookahead\n },\n parenthesized: {\n name: TerminalAlternatives.parenthesized,\n defaultValue: false\n }\n },\n superTypes: [TerminalElement.$type]\n },\n TerminalElement: {\n name: TerminalElement.$type,\n properties: {\n cardinality: {\n name: TerminalElement.cardinality\n },\n lookahead: {\n name: TerminalElement.lookahead\n },\n parenthesized: {\n name: TerminalElement.parenthesized,\n defaultValue: false\n }\n },\n superTypes: [AbstractElement.$type]\n },\n TerminalGroup: {\n name: TerminalGroup.$type,\n properties: {\n cardinality: {\n name: TerminalGroup.cardinality\n },\n elements: {\n name: TerminalGroup.elements,\n defaultValue: []\n },\n lookahead: {\n name: TerminalGroup.lookahead\n },\n parenthesized: {\n name: TerminalGroup.parenthesized,\n defaultValue: false\n }\n },\n superTypes: [TerminalElement.$type]\n },\n TerminalRule: {\n name: TerminalRule.$type,\n properties: {\n definition: {\n name: TerminalRule.definition\n },\n fragment: {\n name: TerminalRule.fragment,\n defaultValue: false\n },\n hidden: {\n name: TerminalRule.hidden,\n defaultValue: false\n },\n name: {\n name: TerminalRule.name\n },\n type: {\n name: TerminalRule.type\n }\n },\n superTypes: [AbstractRule.$type]\n },\n TerminalRuleCall: {\n name: TerminalRuleCall.$type,\n properties: {\n cardinality: {\n name: TerminalRuleCall.cardinality\n },\n lookahead: {\n name: TerminalRuleCall.lookahead\n },\n parenthesized: {\n name: TerminalRuleCall.parenthesized,\n defaultValue: false\n },\n rule: {\n name: TerminalRuleCall.rule,\n referenceType: TerminalRule.$type\n }\n },\n superTypes: [TerminalElement.$type]\n },\n Type: {\n name: Type.$type,\n properties: {\n name: {\n name: Type.name\n },\n type: {\n name: Type.type\n }\n },\n superTypes: [AbstractType.$type]\n },\n TypeAttribute: {\n name: TypeAttribute.$type,\n properties: {\n defaultValue: {\n name: TypeAttribute.defaultValue\n },\n isOptional: {\n name: TypeAttribute.isOptional,\n defaultValue: false\n },\n name: {\n name: TypeAttribute.name\n },\n type: {\n name: TypeAttribute.type\n }\n },\n superTypes: []\n },\n TypeDefinition: {\n name: TypeDefinition.$type,\n properties: {\n },\n superTypes: []\n },\n UnionType: {\n name: UnionType.$type,\n properties: {\n types: {\n name: UnionType.types,\n defaultValue: []\n }\n },\n superTypes: [TypeDefinition.$type]\n },\n UnorderedGroup: {\n name: UnorderedGroup.$type,\n properties: {\n cardinality: {\n name: UnorderedGroup.cardinality\n },\n elements: {\n name: UnorderedGroup.elements,\n defaultValue: []\n }\n },\n superTypes: [AbstractElement.$type]\n },\n UntilToken: {\n name: UntilToken.$type,\n properties: {\n cardinality: {\n name: UntilToken.cardinality\n },\n lookahead: {\n name: UntilToken.lookahead\n },\n parenthesized: {\n name: UntilToken.parenthesized,\n defaultValue: false\n },\n terminal: {\n name: UntilToken.terminal\n }\n },\n superTypes: [TerminalElement.$type]\n },\n ValueLiteral: {\n name: ValueLiteral.$type,\n properties: {\n },\n superTypes: []\n },\n Wildcard: {\n name: Wildcard.$type,\n properties: {\n cardinality: {\n name: Wildcard.cardinality\n },\n lookahead: {\n name: Wildcard.lookahead\n },\n parenthesized: {\n name: Wildcard.parenthesized,\n defaultValue: false\n }\n },\n superTypes: [TerminalElement.$type]\n }\n } as const satisfies langium.AstMetaData\n}\n\nexport const reflection = new LangiumGrammarAstReflection();\n", "/******************************************************************************\n * Copyright 2021-2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { assertUnreachable } from '../utils/errors.js';\nimport * as ast from '../languages/generated/ast.js';\nimport type { AstNode, CstNode } from '../syntax-tree.js';\nimport { isCompositeCstNode } from '../syntax-tree.js';\nimport { getContainerOfType, streamAllContents } from './ast-utils.js';\nimport { streamCst } from './cst-utils.js';\nimport { escapeRegExp, isWhitespace } from './regexp-utils.js';\n\n/**\n * Returns the entry rule of the given grammar, if any. If the grammar file does not contain an entry rule,\n * the result is `undefined`.\n */\nexport function getEntryRule(grammar: ast.Grammar): ast.ParserRule | undefined {\n return grammar.rules.find(e => ast.isParserRule(e) && e.entry) as ast.ParserRule;\n}\n\n/**\n * Returns all hidden terminal rules of the given grammar, if any.\n */\nexport function getHiddenRules(grammar: ast.Grammar): ast.AbstractRule[] {\n return grammar.rules.filter(e => ast.isTerminalRule(e) && e.hidden);\n}\n\n/**\n * Returns all rules that can be reached from the topmost rules of the specified grammar (entry and hidden terminal rules).\n *\n * @param grammar The grammar that contains all rules\n * @param allTerminals Whether or not to include terminals that are referenced only by other terminals\n * @returns A list of referenced parser and terminal rules. If the grammar contains no entry rule,\n * this function returns all rules of the specified grammar.\n */\nexport function getAllReachableRules(grammar: ast.Grammar, allTerminals: boolean): Set {\n const ruleNames = new Set();\n const entryRule = getEntryRule(grammar);\n if (!entryRule) {\n return new Set(grammar.rules);\n }\n\n const topMostRules = [entryRule as ast.AbstractRule].concat(getHiddenRules(grammar));\n for (const rule of topMostRules) {\n ruleDfs(rule, ruleNames, allTerminals);\n }\n\n const rules = new Set();\n for (const rule of grammar.rules) {\n if (ruleNames.has(rule.name) || (ast.isTerminalRule(rule) && rule.hidden)) {\n rules.add(rule);\n }\n }\n return rules;\n}\n\nfunction ruleDfs(rule: ast.AbstractRule, visitedSet: Set, allTerminals: boolean): void {\n visitedSet.add(rule.name);\n streamAllContents(rule).forEach(node => {\n if (ast.isRuleCall(node) || (allTerminals && ast.isTerminalRuleCall(node))) {\n const refRule = node.rule.ref;\n if (refRule && !visitedSet.has(refRule.name)) {\n ruleDfs(refRule, visitedSet, allTerminals);\n }\n }\n });\n}\n\n/**\n * Returns all parser rules which provide types which are used in the grammar as type in cross-references.\n * @param grammar the grammar to investigate\n * @returns the set of parser rules whose contributed types are used as type in cross-references\n */\nexport function getAllRulesUsedForCrossReferences(grammar: ast.Grammar): Set {\n const result = new Set();\n streamAllContents(grammar).forEach(node => {\n if (ast.isCrossReference(node)) {\n // the cross-reference refers directly to a parser rule (without \"returns\", without \"infers\")\n if (ast.isParserRule(node.type.ref)) {\n result.add(node.type.ref);\n }\n // the cross-reference refers to the explicitly inferred type of a parser rule\n if (ast.isInferredType(node.type.ref) && ast.isParserRule(node.type.ref.$container)) {\n result.add(node.type.ref.$container);\n }\n }\n });\n return result;\n}\n\n/**\n * Determines the grammar expression used to parse a cross-reference (usually a reference to a terminal rule).\n * A cross-reference can declare this expression explicitly in the form `[Type : Terminal]`, but if `Terminal`\n * is omitted, this function attempts to infer it from the name of the referenced `Type` (using `findNameAssignment`).\n *\n * Returns the grammar expression used to parse the given cross-reference, or `undefined` if it is not declared\n * and cannot be inferred.\n */\nexport function getCrossReferenceTerminal(crossRef: ast.CrossReference): ast.AbstractElement | undefined {\n if (crossRef.terminal) {\n return crossRef.terminal;\n } else if (crossRef.type.ref) {\n const nameAssigment = findNameAssignment(crossRef.type.ref);\n return nameAssigment?.terminal;\n }\n return undefined;\n}\n\n/**\n * Determines whether the given terminal rule represents a comment. This is true if the rule is marked\n * as `hidden` and it does not match white space. This means every hidden token (i.e. excluded from the AST)\n * that contains visible characters is considered a comment.\n */\nexport function isCommentTerminal(terminalRule: ast.TerminalRule): boolean {\n return terminalRule.hidden && !isWhitespace(terminalRegex(terminalRule));\n}\n\n/**\n * Find all CST nodes within the given node that contribute to the specified property.\n *\n * @param node A CST node in which to look for property assignments. If this is undefined, the result is an empty array.\n * @param property A property name of the constructed AST node. If this is undefined, the result is an empty array.\n */\nexport function findNodesForProperty(node: CstNode | undefined, property: string | undefined): CstNode[] {\n if (!node || !property) {\n return [];\n }\n return findNodesForPropertyInternal(node, property, node.astNode, true);\n}\n\n/**\n * Find a single CST node within the given node that contributes to the specified property.\n *\n * @param node A CST node in which to look for property assignments. If this is undefined, the result is `undefined`.\n * @param property A property name of the constructed AST node. If this is undefined, the result is `undefined`.\n * @param index If no index is specified or the index is less than zero, the first found node is returned. If the\n * specified index exceeds the number of assignments to the property, the last found node is returned. Otherwise,\n * the node with the specified index is returned.\n */\nexport function findNodeForProperty(node: CstNode | undefined, property: string | undefined, index?: number): CstNode | undefined {\n if (!node || !property) {\n return undefined;\n }\n const nodes = findNodesForPropertyInternal(node, property, node.astNode, true);\n if (nodes.length === 0) {\n return undefined;\n }\n if (index !== undefined) {\n index = Math.max(0, Math.min(index, nodes.length - 1));\n } else {\n index = 0;\n }\n return nodes[index];\n}\n\nfunction findNodesForPropertyInternal(node: CstNode, property: string, element: AstNode | undefined, first: boolean): CstNode[] {\n if (!first) {\n const nodeFeature = getContainerOfType(node.grammarSource, ast.isAssignment);\n if (nodeFeature && nodeFeature.feature === property) {\n return [node];\n }\n }\n if (isCompositeCstNode(node) && node.astNode === element) {\n return node.content.flatMap(e => findNodesForPropertyInternal(e, property, element, false));\n }\n return [];\n}\n\n/**\n * Find all CST nodes within the given node that correspond to the specified keyword.\n *\n * @param node A CST node in which to look for keywords. If this is undefined, the result is an empty array.\n * @param keyword A keyword as specified in the grammar.\n */\nexport function findNodesForKeyword(node: CstNode | undefined, keyword: string): CstNode[] {\n if (!node) {\n return [];\n }\n return findNodesForKeywordInternal(node, keyword, node?.astNode);\n}\n\n/**\n * Find a single CST node within the given node that corresponds to the specified keyword.\n *\n * @param node A CST node in which to look for keywords. If this is undefined, the result is `undefined`.\n * @param keyword A keyword as specified in the grammar.\n * @param index If no index is specified or the index is less than zero, the first found node is returned. If the\n * specified index exceeds the number of keyword occurrences, the last found node is returned. Otherwise,\n * the node with the specified index is returned.\n */\nexport function findNodeForKeyword(node: CstNode | undefined, keyword: string, index?: number): CstNode | undefined {\n if (!node) {\n return undefined;\n }\n const nodes = findNodesForKeywordInternal(node, keyword, node?.astNode);\n if (nodes.length === 0) {\n return undefined;\n }\n if (index !== undefined) {\n index = Math.max(0, Math.min(index, nodes.length - 1));\n } else {\n index = 0;\n }\n return nodes[index];\n}\n\nexport function findNodesForKeywordInternal(node: CstNode, keyword: string, element: AstNode | undefined): CstNode[] {\n if (node.astNode !== element) {\n return [];\n }\n if (ast.isKeyword(node.grammarSource) && node.grammarSource.value === keyword) {\n return [node];\n }\n const treeIterator = streamCst(node).iterator();\n let result: IteratorResult;\n const keywordNodes: CstNode[] = [];\n do {\n result = treeIterator.next();\n if (!result.done) {\n const childNode = result.value;\n if (childNode.astNode === element) {\n if (ast.isKeyword(childNode.grammarSource) && childNode.grammarSource.value === keyword) {\n keywordNodes.push(childNode);\n }\n } else {\n treeIterator.prune();\n }\n }\n } while (!result.done);\n return keywordNodes;\n}\n\n/**\n * If the given CST node was parsed in the context of a property assignment, the respective `Assignment` grammar\n * node is returned. If no assignment is found, the result is `undefined`.\n *\n * @param cstNode A CST node for which to find a property assignment.\n */\nexport function findAssignment(cstNode: CstNode): ast.Assignment | undefined {\n const astNode = cstNode.astNode;\n // Only search until the ast node of the parent cst node is no longer the original ast node\n // This would make us jump to a preceding rule call, which contains only unrelated assignments\n while (astNode === cstNode.container?.astNode) {\n const assignment = getContainerOfType(cstNode.grammarSource, ast.isAssignment);\n if (assignment) {\n return assignment;\n }\n cstNode = cstNode.container;\n }\n return undefined;\n}\n\n/**\n * Find an assignment to the `name` property for the given grammar type. This requires the `type` to be inferred\n * from a parser rule, and that rule must contain an assignment to the `name` property. In all other cases,\n * this function returns `undefined`.\n */\nexport function findNameAssignment(type: ast.AbstractType): ast.Assignment | undefined {\n let startNode: AstNode = type;\n if (ast.isInferredType(startNode)) {\n // for inferred types, the location to start searching for the name-assignment is different\n if (ast.isAction(startNode.$container)) {\n // a type which is explicitly inferred by an action: investigate the sibling of the Action node, i.e. start searching at the Action's parent\n startNode = startNode.$container.$container!;\n } else if (ast.isAbstractParserRule(startNode.$container)) {\n // investigate the parser rule with the explicitly inferred type\n startNode = startNode.$container;\n } else {\n assertUnreachable(startNode.$container);\n }\n }\n return findNameAssignmentInternal(type, startNode, new Map());\n}\n\nfunction findNameAssignmentInternal(type: ast.AbstractType, startNode: AstNode, cache: Map): ast.Assignment | undefined {\n // the cache is only required to prevent infinite loops\n function go(node: AstNode, refType: ast.AbstractType): ast.Assignment | undefined {\n let childAssignment: ast.Assignment | undefined = undefined;\n const parentAssignment = getContainerOfType(node, ast.isAssignment);\n // No parent assignment implies unassigned rule call\n if (!parentAssignment) {\n childAssignment = findNameAssignmentInternal(refType, refType, cache);\n }\n cache.set(type, childAssignment);\n return childAssignment;\n }\n\n if (cache.has(type)) {\n return cache.get(type);\n }\n cache.set(type, undefined);\n for (const node of streamAllContents(startNode)) {\n if (ast.isAssignment(node) && node.feature.toLowerCase() === 'name') {\n cache.set(type, node);\n return node;\n } else if (ast.isRuleCall(node) && ast.isParserRule(node.rule.ref)) {\n return go(node, node.rule.ref);\n } else if (ast.isSimpleType(node) && node.typeRef?.ref) {\n return go(node, node.typeRef.ref);\n }\n }\n return undefined;\n}\n\nexport function getActionAtElement(element: ast.AbstractElement): ast.Action | undefined {\n const parent = element.$container;\n if (ast.isGroup(parent)) {\n const elements = parent.elements;\n const index = elements.indexOf(element);\n for (let i = index - 1; i >= 0; i--) {\n const item = elements[i];\n if (ast.isAction(item)) {\n return item;\n } else {\n const action = streamAllContents(elements[i]).find(ast.isAction);\n if (action) {\n return action;\n }\n }\n }\n }\n if (ast.isAbstractElement(parent)) {\n return getActionAtElement(parent);\n } else {\n return undefined;\n }\n}\n\nexport type Cardinality = '?' | '*' | '+' | undefined;\nexport type Operator = '=' | '+=' | '?=' | undefined;\n\nexport function isOptionalCardinality(cardinality?: Cardinality, element?: ast.AbstractElement): boolean {\n return cardinality === '?' || cardinality === '*' || (ast.isGroup(element) && Boolean(element.guardCondition));\n}\n\nexport function isArrayCardinality(cardinality?: Cardinality): boolean {\n return cardinality === '*' || cardinality === '+';\n}\n\nexport function isArrayOperator(operator?: Operator): boolean {\n return operator === '+=';\n}\n\n/**\n * Determines whether the given parser rule is a _data type rule_, meaning that it has a\n * primitive return type like `number`, `boolean`, etc.\n */\nexport function isDataTypeRule(rule: ast.ParserRule): boolean {\n return isDataTypeRuleInternal(rule, new Set());\n}\n\nfunction isDataTypeRuleInternal(rule: ast.ParserRule, visited: Set): boolean {\n if (visited.has(rule)) {\n return true;\n } else {\n visited.add(rule);\n }\n for (const node of streamAllContents(rule)) {\n if (ast.isRuleCall(node)) {\n if (!node.rule.ref) {\n // RuleCall to unresolved rule. Don't assume `rule` is a DataType rule.\n return false;\n }\n if (ast.isParserRule(node.rule.ref) && !isDataTypeRuleInternal(node.rule.ref, visited)) {\n return false;\n }\n if (ast.isInfixRule(node.rule.ref)) {\n return false;\n }\n } else if (ast.isAssignment(node)) {\n return false;\n } else if (ast.isAction(node)) {\n return false;\n }\n }\n return Boolean(rule.definition);\n}\n\nexport function isDataType(type: ast.Type): boolean {\n return isDataTypeInternal(type.type, new Set());\n}\n\nfunction isDataTypeInternal(type: ast.TypeDefinition, visited: Set): boolean {\n if (visited.has(type)) {\n return true;\n } else {\n visited.add(type);\n }\n if (ast.isArrayType(type)) {\n return false;\n } else if (ast.isReferenceType(type)) {\n return false;\n } else if (ast.isUnionType(type)) {\n return type.types.every(e => isDataTypeInternal(e, visited));\n } else if (ast.isSimpleType(type)) {\n if (type.primitiveType !== undefined) {\n return true;\n } else if (type.stringType !== undefined) {\n return true;\n } else if (type.typeRef !== undefined) {\n const ref = type.typeRef.ref;\n if (ast.isType(ref)) {\n return isDataTypeInternal(ref.type, visited);\n } else {\n return false;\n }\n } else {\n return false;\n }\n } else {\n return false;\n }\n}\n\nexport function getExplicitRuleType(rule: ast.AbstractRule): string | undefined {\n if (ast.isTerminalRule(rule)) {\n return undefined;\n }\n if (rule.inferredType) {\n return rule.inferredType.name;\n } else if (rule.dataType) {\n return rule.dataType;\n } else if (rule.returnType) {\n const refType = rule.returnType.ref;\n if (refType) {\n return refType.name;\n }\n }\n return undefined;\n}\n\nexport function getTypeName(type: ast.AbstractType | ast.Action): string {\n if (ast.isAbstractParserRule(type)) {\n return ast.isParserRule(type) && isDataTypeRule(type) ? type.name : getExplicitRuleType(type) ?? type.name;\n } else if (ast.isInterface(type) || ast.isType(type) || ast.isReturnType(type)) {\n return type.name;\n } else if (ast.isAction(type)) {\n const actionType = getActionType(type);\n if (actionType) {\n return actionType;\n }\n } else if (ast.isInferredType(type)) {\n return type.name;\n }\n throw new Error('Cannot get name of Unknown Type');\n}\n\nexport function getActionType(action: ast.Action): string | undefined {\n if (action.inferredType) {\n return action.inferredType.name;\n } else if (action.type?.ref) {\n return getTypeName(action.type.ref);\n }\n return undefined; // not inferring and not referencing a valid type\n}\n\n/**\n * This function is used at development time (for code generation and the internal type system) to get the type of the AST node produced by the given rule.\n * For data type rules, the name of the rule is returned,\n * e.g. \"INT_value returns number: MY_INT;\" returns \"INT_value\".\n * @param rule the given rule\n * @returns the name of the AST node type of the rule\n */\nexport function getRuleTypeName(rule: ast.AbstractRule): string {\n if (ast.isTerminalRule(rule)) {\n return rule.type?.name ?? 'string';\n } else {\n return ast.isParserRule(rule) && isDataTypeRule(rule) ? rule.name : getExplicitRuleType(rule) ?? rule.name;\n }\n}\n\n/**\n * This function is used at runtime to get the actual type of the values produced by the given rule at runtime.\n * For data type rules, the name of the declared return type of the rule is returned (if any),\n * e.g. \"INT_value returns number: MY_INT;\" returns \"number\".\n * @param rule the given rule\n * @returns the name of the type of the produced values of the rule at runtime\n */\nexport function getRuleType(rule: ast.AbstractRule): string {\n if (ast.isTerminalRule(rule)) {\n return rule.type?.name ?? 'string';\n } else {\n return getExplicitRuleType(rule) ?? rule.name;\n }\n}\n\nexport function terminalRegex(terminalRule: ast.TerminalRule): RegExp {\n const flags: Flags = {\n s: false,\n i: false,\n u: false\n };\n const source = abstractElementToRegex(terminalRule.definition, flags);\n const flagText = Object.entries(flags).filter(([, value]) => value).map(([name]) => name).join('');\n return new RegExp(source, flagText);\n}\n\n// Using [\\s\\S]* allows to match everything, compared to . which doesn't match line terminators\nconst WILDCARD = /[\\s\\S]/.source;\n\ntype Flags = {\n s: boolean;\n i: boolean;\n u: boolean;\n}\n\nfunction abstractElementToRegex(element: ast.AbstractElement, flags?: Flags): string {\n if (ast.isTerminalAlternatives(element)) {\n return terminalAlternativesToRegex(element);\n } else if (ast.isTerminalGroup(element)) {\n return terminalGroupToRegex(element);\n } else if (ast.isCharacterRange(element)) {\n return characterRangeToRegex(element);\n } else if (ast.isTerminalRuleCall(element)) {\n const rule = element.rule.ref;\n if (!rule) {\n throw new Error('Missing rule reference.');\n }\n return withCardinality(abstractElementToRegex(rule.definition), {\n cardinality: element.cardinality,\n lookahead: element.lookahead,\n parenthesized: element.parenthesized\n });\n } else if (ast.isNegatedToken(element)) {\n return negateTokenToRegex(element);\n } else if (ast.isUntilToken(element)) {\n return untilTokenToRegex(element);\n } else if (ast.isRegexToken(element)) {\n const lastSlash = element.regex.lastIndexOf('/');\n const source = element.regex.substring(1, lastSlash);\n const regexFlags = element.regex.substring(lastSlash + 1);\n if (flags) {\n flags.i = regexFlags.includes('i');\n flags.s = regexFlags.includes('s');\n flags.u = regexFlags.includes('u');\n }\n return withCardinality(source, {\n cardinality: element.cardinality,\n lookahead: element.lookahead,\n parenthesized: element.parenthesized,\n wrap: false\n });\n } else if (ast.isWildcard(element)) {\n return withCardinality(WILDCARD, {\n cardinality: element.cardinality,\n lookahead: element.lookahead,\n parenthesized: element.parenthesized\n });\n } else {\n throw new Error(`Invalid terminal element: ${element?.$type}, ${element?.$cstNode?.text}`);\n }\n}\n\nfunction terminalAlternativesToRegex(alternatives: ast.TerminalAlternatives): string {\n return withCardinality(alternatives.elements.map(e => abstractElementToRegex(e)).join('|'), {\n cardinality: alternatives.cardinality,\n lookahead: alternatives.lookahead,\n parenthesized: alternatives.parenthesized,\n wrap: false // wrapping is not required for top level alternatives, and nested alternatives are already parenthesized according to the grammar\n });\n}\n\nfunction terminalGroupToRegex(group: ast.TerminalGroup): string {\n return withCardinality(group.elements.map(e => abstractElementToRegex(e)).join(''), {\n cardinality: group.cardinality,\n lookahead: group.lookahead,\n parenthesized: group.parenthesized,\n wrap: false // wrapping is not required for top level group, and nested group are already parenthesized according to the grammar\n });\n}\n\nfunction untilTokenToRegex(until: ast.UntilToken): string {\n return withCardinality(`${WILDCARD}*?${abstractElementToRegex(until.terminal)}`, {\n cardinality: until.cardinality,\n lookahead: until.lookahead,\n parenthesized: until.parenthesized\n });\n}\n\nfunction negateTokenToRegex(negate: ast.NegatedToken): string {\n return withCardinality(`(?!${abstractElementToRegex(negate.terminal)})${WILDCARD}*?`, {\n cardinality: negate.cardinality,\n lookahead: negate.lookahead,\n parenthesized: negate.parenthesized\n });\n}\n\nfunction characterRangeToRegex(range: ast.CharacterRange): string {\n if (range.right) {\n return withCardinality(`[${keywordToRegex(range.left)}-${keywordToRegex(range.right)}]`, {\n cardinality: range.cardinality,\n lookahead: range.lookahead,\n parenthesized: range.parenthesized,\n wrap: false\n });\n }\n return withCardinality(keywordToRegex(range.left), {\n cardinality: range.cardinality,\n lookahead: range.lookahead,\n parenthesized: range.parenthesized,\n wrap: false\n });\n}\n\nfunction keywordToRegex(keyword: ast.Keyword): string {\n return escapeRegExp(keyword.value);\n}\n\nfunction withCardinality(regex: string, options: {\n cardinality?: string\n parenthesized: boolean\n lookahead?: string\n wrap?: boolean\n}): string {\n if (options.parenthesized || options.lookahead || options.wrap !== false) {\n const groupConfig = options.lookahead ?? (options.parenthesized ? '' : '?:');\n regex = `(${groupConfig}${regex})`;\n }\n if (options.cardinality) {\n return `${regex}${options.cardinality}`;\n }\n return regex;\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { CstNode } from '../syntax-tree.js';\n\nexport class ErrorWithLocation extends Error {\n constructor(node: CstNode | undefined, message: string) {\n super(node ? `${message} at ${node.range.start.line}:${node.range.start.character}` : message);\n }\n}\n\nexport function assertUnreachable(_: never, message = 'Error: Got unexpected value.'): never {\n throw new Error(message);\n}\n\nexport function assertCondition(condition: boolean, message: string = 'Error: Condition is violated.'): asserts condition {\n if (!condition) {\n throw new Error(message);\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { Set, Group, Character, IRegExpAST } from '@chevrotain/regexp-to-ast';\nimport { RegExpParser, BaseRegExpVisitor } from '@chevrotain/regexp-to-ast';\n\nexport const NEWLINE_REGEXP = /\\r?\\n/gm;\n\nconst regexpParser = new RegExpParser();\n\n/**\n * This class is in charge of heuristically identifying start/end tokens of terminals.\n *\n * The way this works is by doing the following:\n * 1. Traverse the regular expression in the \"start state\"\n * 2. Add any encountered sets/single characters to the \"start regexp\"\n * 3. Once we encounter any variable-length content (i.e. with quantifiers such as +/?/*), we enter the \"end state\"\n * 4. In the end state, any sets/single characters are added to an \"end stack\".\n * 5. If we re-encounter any variable-length content we reset the end stack\n * 6. We continue visiting the regex until the end, reseting the end stack and rebuilding it as necessary\n *\n * After traversing a regular expression the `startRegexp/endRegexp` properties allow access to the stored start/end of the terminal\n */\nclass TerminalRegExpVisitor extends BaseRegExpVisitor {\n\n private isStarting = true;\n startRegexp: string;\n private endRegexpStack: string[] = [];\n multiline = false;\n regex: string;\n\n get endRegex(): string {\n return this.endRegexpStack.join('');\n }\n\n reset(regex: string): void {\n this.multiline = false;\n this.regex = regex;\n this.startRegexp = '';\n this.isStarting = true;\n this.endRegexpStack = [];\n }\n\n override visitGroup(node: Group) {\n if (node.quantifier) {\n this.isStarting = false;\n this.endRegexpStack = [];\n }\n }\n\n override visitCharacter(node: Character): void {\n const char = String.fromCharCode(node.value);\n if (!this.multiline && char === '\\n') {\n this.multiline = true;\n }\n if (node.quantifier) {\n this.isStarting = false;\n this.endRegexpStack = [];\n } else {\n const escapedChar = escapeRegExp(char);\n this.endRegexpStack.push(escapedChar);\n if (this.isStarting) {\n this.startRegexp += escapedChar;\n }\n }\n }\n\n override visitSet(node: Set): void {\n if (!this.multiline) {\n const set = this.regex.substring(node.loc.begin, node.loc.end);\n const regex = new RegExp(set);\n this.multiline = Boolean('\\n'.match(regex));\n }\n if (node.quantifier) {\n this.isStarting = false;\n this.endRegexpStack = [];\n } else {\n const set = this.regex.substring(node.loc.begin, node.loc.end);\n this.endRegexpStack.push(set);\n if (this.isStarting) {\n this.startRegexp += set;\n }\n }\n }\n\n override visitChildren(node: IRegExpAST): void {\n if (node.type === 'Group') {\n // Ignore children of groups with quantifier (+/*/?)\n // These groups are unrelated to start/end tokens of terminals\n const group = node as Group;\n if (group.quantifier) {\n return;\n }\n }\n super.visitChildren(node);\n }\n}\n\nconst visitor = new TerminalRegExpVisitor();\n\nexport function getTerminalParts(regexp: RegExp | string): Array<{ start: string, end: string }> {\n try {\n if (typeof regexp !== 'string') {\n regexp = regexp.source;\n }\n regexp = `/${regexp}/`;\n const pattern = regexpParser.pattern(regexp);\n const parts: Array<{ start: string, end: string }> = [];\n for (const alternative of pattern.value.value) {\n visitor.reset(regexp);\n visitor.visit(alternative);\n parts.push({\n start: visitor.startRegexp,\n end: visitor.endRegex\n });\n }\n return parts;\n } catch {\n return [];\n }\n}\n\nexport function isMultilineComment(regexp: RegExp | string): boolean {\n try {\n if (typeof regexp === 'string') {\n regexp = new RegExp(regexp);\n }\n regexp = regexp.toString();\n visitor.reset(regexp);\n // Parsing the pattern might fail (since it's user code)\n visitor.visit(regexpParser.pattern(regexp));\n return visitor.multiline;\n } catch {\n return false;\n }\n}\n\n/**\n * A set of all characters that are considered whitespace by the '\\s' RegExp character class.\n * Taken from [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions/Character_classes).\n */\nexport const whitespaceCharacters = (\n '\\f\\n\\r\\t\\v\\u0020\\u00a0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007' +\n '\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff').split('');\n\nexport function isWhitespace(value: RegExp | string): boolean {\n const regexp = typeof value === 'string' ? new RegExp(value) : value;\n return whitespaceCharacters.some((ws) => regexp.test(ws));\n}\n\nexport function escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Determines whether the given input has a partial match with the specified regex.\n * @param regex The regex to partially match against\n * @param input The input string\n * @returns Whether any match exists.\n */\nexport function partialMatches(regex: RegExp | string, input: string): boolean {\n const partial = partialRegExp(regex);\n const match = input.match(partial);\n return !!match && match[0].length > 0;\n}\n\n/**\n * Builds a partial regex from the input regex. A partial regex is able to match incomplete input strings. E.g.\n * a partial regex constructed from `/ab/` is able to match the string `a` without needing a following `b` character. However it won't match `b` alone.\n * @param regex The input regex to be converted.\n * @returns A partial regex constructed from the input regex.\n */\nexport function partialRegExp(regex: RegExp | string): RegExp {\n if (typeof regex === 'string') {\n regex = new RegExp(regex);\n }\n const re = regex, source = regex.source;\n let i = 0;\n\n function process() {\n let result = '',\n tmp;\n\n function appendRaw(nbChars: number) {\n result += source.substr(i, nbChars);\n i += nbChars;\n }\n\n function appendOptional(nbChars: number) {\n result += '(?:' + source.substr(i, nbChars) + '|$)';\n i += nbChars;\n }\n\n while (i < source.length) {\n switch (source[i]) {\n case '\\\\':\n switch (source[i + 1]) {\n case 'c':\n appendOptional(3);\n break;\n case 'x':\n appendOptional(4);\n break;\n case 'u':\n if (re.unicode) {\n if (source[i + 2] === '{') {\n appendOptional(source.indexOf('}', i) - i + 1);\n } else {\n appendOptional(6);\n }\n } else {\n appendOptional(2);\n }\n break;\n case 'p':\n case 'P':\n if (re.unicode) {\n appendOptional(source.indexOf('}', i) - i + 1);\n } else {\n appendOptional(2);\n }\n break;\n case 'k':\n appendOptional(source.indexOf('>', i) - i + 1);\n break;\n default:\n appendOptional(2);\n break;\n }\n break;\n\n case '[':\n tmp = /\\[(?:\\\\.|.)*?\\]/g;\n tmp.lastIndex = i;\n tmp = tmp.exec(source) || [];\n appendOptional(tmp[0].length);\n break;\n\n case '|':\n case '^':\n case '$':\n case '*':\n case '+':\n case '?':\n appendRaw(1);\n break;\n case '{':\n tmp = /\\{\\d+,?\\d*\\}/g;\n tmp.lastIndex = i;\n tmp = tmp.exec(source);\n if (tmp) {\n appendRaw(tmp[0].length);\n } else {\n appendOptional(1);\n }\n break;\n case '(':\n if (source[i + 1] === '?') {\n switch (source[i + 2]) {\n case ':':\n result += '(?:';\n i += 3;\n result += process() + '|$)';\n break;\n case '=':\n result += '(?=';\n i += 3;\n result += process() + ')';\n break;\n case '!':\n tmp = i;\n i += 3;\n process();\n result += source.substr(tmp, i - tmp);\n break;\n case '<':\n switch (source[i + 3]) {\n case '=':\n case '!':\n tmp = i;\n i += 4;\n process();\n result += source.substr(tmp, i - tmp);\n break;\n default:\n appendRaw(source.indexOf('>', i) - i + 1);\n result += process() + '|$)';\n break;\n }\n break;\n }\n } else {\n appendRaw(1);\n result += process() + '|$)';\n }\n break;\n case ')':\n ++i;\n return result;\n default:\n appendOptional(1);\n break;\n }\n }\n\n return result;\n }\n\n return new RegExp(process(), regex.flags);\n}\n", "import type { Character, IRegExpAST, RegExpFlags } from \"../types\";\n\nexport function cc(char: string): number {\n return char.charCodeAt(0);\n}\n\nexport function insertToSet(item: T | T[], set: T[]) {\n if (Array.isArray(item)) {\n item.forEach(function (subItem) {\n set.push(subItem);\n });\n } else {\n set.push(item);\n }\n}\n\nexport function addFlag(\n flagObj: RegExpFlags,\n flagKey: keyof Omit,\n) {\n if (flagObj[flagKey] === true) {\n throw \"duplicate flag \" + flagKey;\n }\n\n const x: boolean = flagObj[flagKey];\n flagObj[flagKey] = true;\n}\n\nexport function ASSERT_EXISTS(obj: any): obj is T {\n // istanbul ignore next\n if (obj === undefined) {\n throw Error(\"Internal Error - Should never get here!\");\n }\n return true;\n}\n\n// istanbul ignore next\nexport function ASSERT_NEVER_REACH_HERE(): any {\n throw Error(\"Internal Error - Should never get here!\");\n}\n\nexport function isCharacter(obj: { type: string }): obj is Character {\n return obj[\"type\"] === \"Character\";\n}\n", "import { cc } from \"./utils.js\";\n\nexport const digitsCharCodes: number[] = [];\nfor (let i = cc(\"0\"); i <= cc(\"9\"); i++) {\n digitsCharCodes.push(i);\n}\n\nexport const wordCharCodes: number[] = [cc(\"_\")].concat(digitsCharCodes);\nfor (let i = cc(\"a\"); i <= cc(\"z\"); i++) {\n wordCharCodes.push(i);\n}\n\nfor (let i = cc(\"A\"); i <= cc(\"Z\"); i++) {\n wordCharCodes.push(i);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes\nexport const whitespaceCodes: number[] = [\n cc(\" \"),\n cc(\"\\f\"),\n cc(\"\\n\"),\n cc(\"\\r\"),\n cc(\"\\t\"),\n cc(\"\\v\"),\n cc(\"\\t\"),\n cc(\"\\u00a0\"),\n cc(\"\\u1680\"),\n cc(\"\\u2000\"),\n cc(\"\\u2001\"),\n cc(\"\\u2002\"),\n cc(\"\\u2003\"),\n cc(\"\\u2004\"),\n cc(\"\\u2005\"),\n cc(\"\\u2006\"),\n cc(\"\\u2007\"),\n cc(\"\\u2008\"),\n cc(\"\\u2009\"),\n cc(\"\\u200a\"),\n cc(\"\\u2028\"),\n cc(\"\\u2029\"),\n cc(\"\\u202f\"),\n cc(\"\\u205f\"),\n cc(\"\\u3000\"),\n cc(\"\\ufeff\"),\n];\n", "import type {\n Alternative,\n Assertion,\n Atom,\n Character,\n Disjunction,\n Group,\n GroupBackReference,\n Location,\n Quantifier,\n Range,\n RegExpFlags,\n RegExpPattern,\n Set,\n Term,\n} from \"../types\";\nimport {\n addFlag,\n ASSERT_EXISTS,\n ASSERT_NEVER_REACH_HERE,\n cc,\n insertToSet,\n isCharacter,\n} from \"./utils.js\";\nimport {\n digitsCharCodes,\n whitespaceCodes,\n wordCharCodes,\n} from \"./character-classes.js\";\n\n// consts and utilities\nconst hexDigitPattern = /[0-9a-fA-F]/;\nconst decimalPattern = /[0-9]/;\nconst decimalPatternNoZero = /[1-9]/;\n\n// https://hackernoon.com/the-madness-of-parsing-real-world-javascript-regexps-d9ee336df983\n// https://www.ecma-international.org/ecma-262/8.0/index.html#prod-Pattern\nexport class RegExpParser {\n protected idx: number = 0;\n protected input: string = \"\";\n protected groupIdx: number = 0;\n\n protected saveState() {\n return {\n idx: this.idx,\n input: this.input,\n groupIdx: this.groupIdx,\n };\n }\n\n protected restoreState(newState: {\n idx: number;\n input: string;\n groupIdx: number;\n }) {\n this.idx = newState.idx;\n this.input = newState.input;\n this.groupIdx = newState.groupIdx;\n }\n\n public pattern(input: string): RegExpPattern {\n // parser state\n this.idx = 0;\n this.input = input;\n this.groupIdx = 0;\n\n this.consumeChar(\"/\");\n const value = this.disjunction();\n this.consumeChar(\"/\");\n\n const flags: RegExpFlags = {\n type: \"Flags\",\n loc: { begin: this.idx, end: input.length },\n global: false,\n ignoreCase: false,\n multiLine: false,\n unicode: false,\n sticky: false,\n };\n\n while (this.isRegExpFlag()) {\n switch (this.popChar()) {\n case \"g\":\n addFlag(flags, \"global\");\n break;\n case \"i\":\n addFlag(flags, \"ignoreCase\");\n break;\n case \"m\":\n addFlag(flags, \"multiLine\");\n break;\n case \"u\":\n addFlag(flags, \"unicode\");\n break;\n case \"y\":\n addFlag(flags, \"sticky\");\n break;\n }\n }\n\n if (this.idx !== this.input.length) {\n throw Error(\"Redundant input: \" + this.input.substring(this.idx));\n }\n return {\n type: \"Pattern\",\n flags: flags,\n value: value,\n loc: this.loc(0),\n };\n }\n\n protected disjunction(): Disjunction {\n const alts = [];\n const begin = this.idx;\n\n alts.push(this.alternative());\n\n while (this.peekChar() === \"|\") {\n this.consumeChar(\"|\");\n alts.push(this.alternative());\n }\n\n return { type: \"Disjunction\", value: alts, loc: this.loc(begin) };\n }\n\n protected alternative(): Alternative {\n const terms = [];\n const begin = this.idx;\n\n while (this.isTerm()) {\n terms.push(this.term());\n }\n\n return { type: \"Alternative\", value: terms, loc: this.loc(begin) };\n }\n\n protected term(): Term {\n if (this.isAssertion()) {\n return this.assertion();\n } else {\n return this.atom();\n }\n }\n\n protected assertion(): Assertion {\n const begin = this.idx;\n switch (this.popChar()) {\n case \"^\":\n return {\n type: \"StartAnchor\",\n loc: this.loc(begin),\n };\n case \"$\":\n return { type: \"EndAnchor\", loc: this.loc(begin) };\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.popChar()) {\n case \"b\":\n return {\n type: \"WordBoundary\",\n loc: this.loc(begin),\n };\n case \"B\":\n return {\n type: \"NonWordBoundary\",\n loc: this.loc(begin),\n };\n }\n /* c8 ignore next */\n throw Error(\"Invalid Assertion Escape\");\n // '(?=' or '(?!'\n case \"(\":\n this.consumeChar(\"?\");\n\n let type:\n | \"Lookahead\"\n | \"NegativeLookahead\"\n | \"Lookbehind\"\n | \"NegativeLookbehind\"\n | undefined;\n switch (this.popChar()) {\n case \"=\":\n type = \"Lookahead\";\n break;\n case \"!\":\n type = \"NegativeLookahead\";\n break;\n case \"<\": {\n switch (this.popChar()) {\n case \"=\":\n type = \"Lookbehind\";\n break;\n case \"!\":\n type = \"NegativeLookbehind\";\n }\n break;\n }\n }\n ASSERT_EXISTS(type);\n\n const disjunction = this.disjunction();\n\n this.consumeChar(\")\");\n\n return {\n type: type!,\n value: disjunction,\n loc: this.loc(begin),\n };\n }\n // istanbul ignore next\n return ASSERT_NEVER_REACH_HERE();\n }\n\n protected quantifier(\n isBacktracking: boolean = false,\n ): Quantifier | undefined {\n let range: Partial | undefined = undefined;\n const begin = this.idx;\n switch (this.popChar()) {\n case \"*\":\n range = {\n atLeast: 0,\n atMost: Infinity,\n };\n break;\n case \"+\":\n range = {\n atLeast: 1,\n atMost: Infinity,\n };\n break;\n case \"?\":\n range = {\n atLeast: 0,\n atMost: 1,\n };\n break;\n case \"{\":\n const atLeast = this.integerIncludingZero();\n switch (this.popChar()) {\n case \"}\":\n range = {\n atLeast: atLeast,\n atMost: atLeast,\n };\n break;\n case \",\":\n let atMost;\n if (this.isDigit()) {\n atMost = this.integerIncludingZero();\n range = {\n atLeast: atLeast,\n atMost: atMost,\n };\n } else {\n range = {\n atLeast: atLeast,\n atMost: Infinity,\n };\n }\n this.consumeChar(\"}\");\n break;\n }\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined;\n }\n ASSERT_EXISTS(range);\n break;\n }\n\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined;\n }\n\n // istanbul ignore else\n if (ASSERT_EXISTS(range)) {\n if (this.peekChar(0) === \"?\") {\n this.consumeChar(\"?\");\n range.greedy = false;\n } else {\n range.greedy = true;\n }\n\n range.type = \"Quantifier\";\n range.loc = this.loc(begin);\n return range as Quantifier;\n }\n }\n\n protected atom(): Atom {\n let atom: Omit | undefined;\n const begin = this.idx;\n switch (this.peekChar()) {\n case \".\":\n atom = this.dotAll();\n break;\n case \"\\\\\":\n atom = this.atomEscape();\n break;\n case \"[\":\n atom = this.characterClass();\n break;\n case \"(\":\n atom = this.group();\n break;\n }\n\n if (atom === undefined && this.isPatternCharacter()) {\n atom = this.patternCharacter();\n }\n\n // istanbul ignore else\n if (ASSERT_EXISTS(atom)) {\n atom.loc = this.loc(begin);\n\n if (this.isQuantifier()) {\n atom.quantifier = this.quantifier();\n }\n\n return atom;\n }\n\n // istanbul ignore next\n return ASSERT_NEVER_REACH_HERE();\n }\n\n protected dotAll(): Omit {\n this.consumeChar(\".\");\n return {\n type: \"Set\",\n complement: true,\n value: [cc(\"\\n\"), cc(\"\\r\"), cc(\"\\u2028\"), cc(\"\\u2029\")],\n };\n }\n\n protected atomEscape(): Omit {\n this.consumeChar(\"\\\\\");\n\n switch (this.peekChar()) {\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n return this.decimalEscapeAtom();\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape();\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom();\n case \"c\":\n return this.controlLetterEscapeAtom();\n case \"0\":\n return this.nulCharacterAtom();\n case \"x\":\n return this.hexEscapeSequenceAtom();\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom();\n default:\n return this.identityEscapeAtom();\n }\n }\n\n protected decimalEscapeAtom(): Omit {\n const value = this.positiveInteger();\n\n return { type: \"GroupBackReference\", value: value };\n }\n\n protected characterClassEscape(): Omit {\n let set: (number | Range)[] | undefined;\n let complement = false;\n switch (this.popChar()) {\n case \"d\":\n set = digitsCharCodes;\n break;\n case \"D\":\n set = digitsCharCodes;\n complement = true;\n break;\n case \"s\":\n set = whitespaceCodes;\n break;\n case \"S\":\n set = whitespaceCodes;\n complement = true;\n break;\n case \"w\":\n set = wordCharCodes;\n break;\n case \"W\":\n set = wordCharCodes;\n complement = true;\n break;\n }\n\n // istanbul ignore else\n if (ASSERT_EXISTS(set)) {\n return { type: \"Set\", value: set, complement: complement };\n }\n // istanbul ignore next\n return ASSERT_NEVER_REACH_HERE();\n }\n\n protected controlEscapeAtom(): Omit {\n let escapeCode;\n switch (this.popChar()) {\n case \"f\":\n escapeCode = cc(\"\\f\");\n break;\n case \"n\":\n escapeCode = cc(\"\\n\");\n break;\n case \"r\":\n escapeCode = cc(\"\\r\");\n break;\n case \"t\":\n escapeCode = cc(\"\\t\");\n break;\n case \"v\":\n escapeCode = cc(\"\\v\");\n break;\n }\n\n // istanbul ignore else\n if (ASSERT_EXISTS(escapeCode)) {\n return { type: \"Character\", value: escapeCode };\n }\n // istanbul ignore next\n return ASSERT_NEVER_REACH_HERE();\n }\n\n protected controlLetterEscapeAtom(): Omit {\n this.consumeChar(\"c\");\n const letter = this.popChar();\n if (/[a-zA-Z]/.test(letter) === false) {\n throw Error(\"Invalid \");\n }\n\n const letterCode = letter.toUpperCase().charCodeAt(0) - 64;\n return { type: \"Character\", value: letterCode };\n }\n\n protected nulCharacterAtom(): Omit {\n // TODO implement '[lookahead \u2209 DecimalDigit]'\n // TODO: for the deprecated octal escape sequence\n this.consumeChar(\"0\");\n return { type: \"Character\", value: cc(\"\\0\") };\n }\n\n protected hexEscapeSequenceAtom(): Omit {\n this.consumeChar(\"x\");\n return this.parseHexDigits(2);\n }\n\n protected regExpUnicodeEscapeSequenceAtom(): Omit {\n this.consumeChar(\"u\");\n return this.parseHexDigits(4);\n }\n\n protected identityEscapeAtom(): Omit {\n // TODO: implement \"SourceCharacter but not UnicodeIDContinue\"\n // // http://unicode.org/reports/tr31/#Specific_Character_Adjustments\n const escapedChar = this.popChar();\n return { type: \"Character\", value: cc(escapedChar) };\n }\n\n protected classPatternCharacterAtom(): Omit {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \"]\":\n throw Error(\"TBD\");\n default:\n const nextChar = this.popChar();\n return { type: \"Character\", value: cc(nextChar) };\n }\n }\n\n protected characterClass(): Omit {\n const set: (number | Range)[] = [];\n let complement = false;\n this.consumeChar(\"[\");\n if (this.peekChar(0) === \"^\") {\n this.consumeChar(\"^\");\n complement = true;\n }\n\n while (this.isClassAtom()) {\n const from = this.classAtom();\n const isFromSingleChar = from.type === \"Character\";\n if (isCharacter(from) && this.isRangeDash()) {\n this.consumeChar(\"-\");\n const to = this.classAtom();\n const isToSingleChar = to.type === \"Character\";\n\n // a range can only be used when both sides are single characters\n if (isCharacter(to)) {\n if (to.value < from.value) {\n throw Error(\"Range out of order in character class\");\n }\n set.push({ from: from.value, to: to.value });\n } else {\n // literal dash\n insertToSet(from.value, set);\n set.push(cc(\"-\"));\n insertToSet(to.value, set);\n }\n } else {\n insertToSet(from.value, set);\n }\n }\n\n this.consumeChar(\"]\");\n\n return { type: \"Set\", complement: complement, value: set };\n }\n\n protected classAtom(): Omit {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"]\":\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n throw Error(\"TBD\");\n case \"\\\\\":\n return this.classEscape();\n default:\n return this.classPatternCharacterAtom();\n }\n }\n\n protected classEscape(): Omit {\n this.consumeChar(\"\\\\\");\n switch (this.peekChar()) {\n // Matches a backspace.\n // (Not to be confused with \\b word boundary outside characterClass)\n case \"b\":\n this.consumeChar(\"b\");\n return { type: \"Character\", value: cc(\"\\u0008\") };\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape();\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom();\n case \"c\":\n return this.controlLetterEscapeAtom();\n case \"0\":\n return this.nulCharacterAtom();\n case \"x\":\n return this.hexEscapeSequenceAtom();\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom();\n default:\n return this.identityEscapeAtom();\n }\n }\n\n protected group(): Omit {\n let capturing = true;\n this.consumeChar(\"(\");\n switch (this.peekChar(0)) {\n case \"?\":\n this.consumeChar(\"?\");\n this.consumeChar(\":\");\n capturing = false;\n break;\n default:\n this.groupIdx++;\n break;\n }\n const value = this.disjunction();\n this.consumeChar(\")\");\n\n const groupAst: Omit = {\n type: \"Group\",\n capturing: capturing,\n value: value,\n };\n\n if (capturing) {\n groupAst[\"idx\"] = this.groupIdx;\n }\n\n return groupAst;\n }\n\n protected positiveInteger(): number {\n let number = this.popChar();\n\n // istanbul ignore next - can't ever get here due to previous lookahead checks\n // still implementing this error checking in case this ever changes.\n if (decimalPatternNoZero.test(number) === false) {\n throw Error(\"Expecting a positive integer\");\n }\n\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar();\n }\n\n return parseInt(number, 10);\n }\n\n protected integerIncludingZero(): number {\n let number = this.popChar();\n if (decimalPattern.test(number) === false) {\n throw Error(\"Expecting an integer\");\n }\n\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar();\n }\n\n return parseInt(number, 10);\n }\n\n protected patternCharacter(): Omit {\n const nextChar = this.popChar();\n switch (nextChar) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"^\":\n // istanbul ignore next\n case \"$\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \".\":\n // istanbul ignore next\n case \"*\":\n // istanbul ignore next\n case \"+\":\n // istanbul ignore next\n case \"?\":\n // istanbul ignore next\n case \"(\":\n // istanbul ignore next\n case \")\":\n // istanbul ignore next\n case \"[\":\n // istanbul ignore next\n case \"|\":\n // istanbul ignore next\n throw Error(\"TBD\");\n default:\n return { type: \"Character\", value: cc(nextChar) };\n }\n }\n protected isRegExpFlag(): boolean {\n switch (this.peekChar(0)) {\n case \"g\":\n case \"i\":\n case \"m\":\n case \"u\":\n case \"y\":\n return true;\n default:\n return false;\n }\n }\n\n protected isRangeDash(): boolean {\n return this.peekChar() === \"-\" && this.isClassAtom(1);\n }\n\n protected isDigit(): boolean {\n return decimalPattern.test(this.peekChar(0));\n }\n\n protected isClassAtom(howMuch = 0): boolean {\n switch (this.peekChar(howMuch)) {\n case \"]\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false;\n default:\n return true;\n }\n }\n\n protected isTerm() {\n return this.isAtom() || this.isAssertion();\n }\n\n protected isAtom(): boolean {\n if (this.isPatternCharacter()) {\n return true;\n }\n\n switch (this.peekChar(0)) {\n case \".\":\n case \"\\\\\": // atomEscape\n case \"[\": // characterClass\n // TODO: isAtom must be called before isAssertion - disambiguate\n case \"(\": // group\n return true;\n default:\n return false;\n }\n }\n\n protected isAssertion(): boolean {\n switch (this.peekChar(0)) {\n case \"^\":\n case \"$\":\n return true;\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.peekChar(1)) {\n case \"b\":\n case \"B\":\n return true;\n default:\n return false;\n }\n // '(?=' or '(?!' or `(?<=` or `(? {\n let hexString = \"\";\n for (let i = 0; i < howMany; i++) {\n const hexChar = this.popChar();\n if (hexDigitPattern.test(hexChar) === false) {\n throw Error(\"Expecting a HexDecimal digits\");\n }\n hexString += hexChar;\n }\n const charCode = parseInt(hexString, 16);\n return { type: \"Character\", value: charCode };\n }\n\n protected peekChar(howMuch = 0): string {\n return this.input[this.idx + howMuch];\n }\n\n protected popChar(): string {\n const nextChar = this.peekChar(0);\n this.consumeChar(undefined);\n return nextChar;\n }\n\n protected consumeChar(char: string | undefined): void {\n if (char !== undefined && this.input[this.idx] !== char) {\n throw Error(\n \"Expected: '\" +\n char +\n \"' but found: '\" +\n this.input[this.idx] +\n \"' at offset: \" +\n this.idx,\n );\n }\n\n if (this.idx >= this.input.length) {\n throw Error(\"Unexpected end of input\");\n }\n this.idx++;\n }\n\n protected loc(begin: number): Location {\n return { begin: begin, end: this.idx };\n }\n}\n", "import type {\n Alternative,\n Assertion,\n Character,\n Disjunction,\n Group,\n GroupBackReference,\n IRegExpAST,\n Quantifier,\n RegExpAstPart,\n RegExpFlags,\n RegExpPattern,\n Set,\n} from \"../types\";\n\nexport class BaseRegExpVisitor {\n public visitChildren(node: IRegExpAST) {\n for (const key in node) {\n const child = (node as any)[key];\n /* istanbul ignore else */\n if (node.hasOwnProperty(key)) {\n if (child.type !== undefined) {\n this.visit(child);\n } else if (Array.isArray(child)) {\n child.forEach((subChild) => {\n this.visit(subChild);\n }, this);\n }\n }\n }\n }\n\n public visit(node: RegExpAstPart): void {\n switch (node.type) {\n case \"Pattern\":\n this.visitPattern(node);\n break;\n case \"Flags\":\n this.visitFlags(node);\n break;\n case \"Disjunction\":\n this.visitDisjunction(node);\n break;\n case \"Alternative\":\n this.visitAlternative(node);\n break;\n case \"StartAnchor\":\n this.visitStartAnchor(node);\n break;\n case \"EndAnchor\":\n this.visitEndAnchor(node);\n break;\n case \"WordBoundary\":\n this.visitWordBoundary(node);\n break;\n case \"NonWordBoundary\":\n this.visitNonWordBoundary(node);\n break;\n case \"Lookahead\":\n this.visitLookahead(node);\n break;\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node);\n break;\n case \"Lookbehind\":\n this.visitLookbehind(node);\n break;\n case \"NegativeLookbehind\":\n this.visitNegativeLookbehind(node);\n break;\n case \"Character\":\n this.visitCharacter(node);\n break;\n case \"Set\":\n this.visitSet(node);\n break;\n case \"Group\":\n this.visitGroup(node);\n break;\n case \"GroupBackReference\":\n this.visitGroupBackReference(node);\n break;\n case \"Quantifier\":\n this.visitQuantifier(node);\n break;\n }\n\n this.visitChildren(node);\n }\n\n public visitPattern(node: RegExpPattern): void {}\n\n public visitFlags(node: RegExpFlags): void {}\n\n public visitDisjunction(node: Disjunction): void {}\n\n public visitAlternative(node: Alternative): void {}\n\n // Assertion\n public visitStartAnchor(node: Assertion): void {}\n\n public visitEndAnchor(node: Assertion): void {}\n\n public visitWordBoundary(node: Assertion): void {}\n\n public visitNonWordBoundary(node: Assertion): void {}\n\n public visitLookahead(node: Assertion): void {}\n\n public visitNegativeLookahead(node: Assertion): void {}\n\n public visitLookbehind(node: Assertion): void {}\n\n public visitNegativeLookbehind(node: Assertion): void {}\n\n // atoms\n public visitCharacter(node: Character): void {}\n\n public visitSet(node: Set): void {}\n\n public visitGroup(node: Group): void {}\n\n public visitGroupBackReference(node: GroupBackReference): void {}\n\n public visitQuantifier(node: Quantifier): void {}\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices } from '../services.js';\nimport { DefaultNameRegexp } from '../utils/cst-utils.js';\nimport { isCommentTerminal, terminalRegex } from '../utils/grammar-utils.js';\nimport { isMultilineComment } from '../utils/regexp-utils.js';\nimport { isTerminalRule } from './generated/ast.js';\n\nexport interface GrammarConfig {\n /**\n * Lists all rule names which are classified as multiline comment rules\n */\n multilineCommentRules: string[]\n /**\n * A regular expression which matches characters of names\n */\n nameRegexp: RegExp\n}\n\n/**\n * Create the default grammar configuration (used by `createDefaultModule`). This can be overridden in a\n * language-specific module.\n */\nexport function createGrammarConfig(services: LangiumCoreServices): GrammarConfig {\n const rules: string[] = [];\n const grammar = services.Grammar;\n for (const rule of grammar.rules) {\n if (isTerminalRule(rule) && isCommentTerminal(rule) && isMultilineComment(terminalRegex(rule))) {\n rules.push(rule.name);\n }\n }\n return {\n multilineCommentRules: rules,\n nameRegexp: DefaultNameRegexp\n };\n}\n", "export function PRINT_ERROR(msg: string) {\n /* istanbul ignore else - can't override global.console in node.js */\n if (console && console.error) {\n console.error(`Error: ${msg}`);\n }\n}\n\nexport function PRINT_WARNING(msg: string) {\n /* istanbul ignore else - can't override global.console in node.js*/\n if (console && console.warn) {\n // TODO: modify docs accordingly\n console.warn(`Warning: ${msg}`);\n }\n}\n", "export function timer(func: () => T): { time: number; value: T } {\n const start = new Date().getTime();\n const val = func();\n const end = new Date().getTime();\n const total = end - start;\n return { time: total, value: val };\n}\n", "// based on: https://github.com/petkaantonov/bluebird/blob/b97c0d2d487e8c5076e8bd897e0dcd4622d31846/src/util.js#L201-L216\nexport function toFastProperties(toBecomeFast: any) {\n function FakeConstructor() {}\n\n // If our object is used as a constructor, it would receive\n FakeConstructor.prototype = toBecomeFast;\n const fakeInstance = new (FakeConstructor as any)();\n\n function fakeAccess() {\n return typeof fakeInstance.bar;\n }\n\n // help V8 understand this is a \"real\" prototype by actually using\n // the fake instance.\n fakeAccess();\n fakeAccess();\n\n // Always true condition to suppress the Firefox warning of unreachable\n // code after a return statement.\n if (1) return toBecomeFast;\n\n // Eval prevents optimization of this method (even though this is dead code)\n // - https://esbuild.github.io/content-types/#direct-eval\n /* istanbul ignore next */\n // tslint:disable-next-line\n (0, eval)(toBecomeFast);\n}\n", "import { assign, forEach, isRegExp, isString, map, pickBy } from \"lodash-es\";\nimport type {\n IGASTVisitor,\n IProduction,\n IProductionWithOccurrence,\n ISerializedGast,\n TokenType,\n} from \"@chevrotain/types\";\n\n// TODO: duplicated code to avoid extracting another sub-package -- how to avoid?\nfunction tokenLabel(tokType: TokenType): string {\n if (hasTokenLabel(tokType)) {\n return tokType.LABEL;\n } else {\n return tokType.name;\n }\n}\n\n// TODO: duplicated code to avoid extracting another sub-package -- how to avoid?\nfunction hasTokenLabel(\n obj: TokenType,\n): obj is TokenType & Pick, \"LABEL\"> {\n return isString(obj.LABEL) && obj.LABEL !== \"\";\n}\n\nexport abstract class AbstractProduction\n implements IProduction\n{\n public get definition(): T[] {\n return this._definition;\n }\n public set definition(value: T[]) {\n this._definition = value;\n }\n\n constructor(protected _definition: T[]) {}\n\n accept(visitor: IGASTVisitor): void {\n visitor.visit(this);\n forEach(this.definition, (prod) => {\n prod.accept(visitor);\n });\n }\n}\n\nexport class NonTerminal\n extends AbstractProduction\n implements IProductionWithOccurrence\n{\n public nonTerminalName!: string;\n public label?: string;\n public referencedRule!: Rule;\n public idx: number = 1;\n\n constructor(options: {\n nonTerminalName: string;\n label?: string;\n referencedRule?: Rule;\n idx?: number;\n }) {\n super([]);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n\n set definition(definition: IProduction[]) {\n // immutable\n }\n\n get definition(): IProduction[] {\n if (this.referencedRule !== undefined) {\n return this.referencedRule.definition;\n }\n return [];\n }\n\n accept(visitor: IGASTVisitor): void {\n visitor.visit(this);\n // don't visit children of a reference, we will get cyclic infinite loops if we do so\n }\n}\n\nexport class Rule extends AbstractProduction {\n public name!: string;\n public orgText: string = \"\";\n\n constructor(options: {\n name: string;\n definition: IProduction[];\n orgText?: string;\n }) {\n super(options.definition);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n}\n\nexport class Alternative extends AbstractProduction {\n public ignoreAmbiguities: boolean = false;\n\n constructor(options: {\n definition: IProduction[];\n ignoreAmbiguities?: boolean;\n }) {\n super(options.definition);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n}\n\nexport class Option\n extends AbstractProduction\n implements IProductionWithOccurrence\n{\n public idx: number = 1;\n public maxLookahead?: number;\n\n constructor(options: {\n definition: IProduction[];\n idx?: number;\n maxLookahead?: number;\n }) {\n super(options.definition);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n}\n\nexport class RepetitionMandatory\n extends AbstractProduction\n implements IProductionWithOccurrence\n{\n public idx: number = 1;\n public maxLookahead?: number;\n\n constructor(options: {\n definition: IProduction[];\n idx?: number;\n maxLookahead?: number;\n }) {\n super(options.definition);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n}\n\nexport class RepetitionMandatoryWithSeparator\n extends AbstractProduction\n implements IProductionWithOccurrence\n{\n public separator!: TokenType;\n public idx: number = 1;\n public maxLookahead?: number;\n\n constructor(options: {\n definition: IProduction[];\n separator: TokenType;\n idx?: number;\n }) {\n super(options.definition);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n}\n\nexport class Repetition\n extends AbstractProduction\n implements IProductionWithOccurrence\n{\n public separator!: TokenType;\n public idx: number = 1;\n public maxLookahead?: number;\n\n constructor(options: {\n definition: IProduction[];\n idx?: number;\n maxLookahead?: number;\n }) {\n super(options.definition);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n}\n\nexport class RepetitionWithSeparator\n extends AbstractProduction\n implements IProductionWithOccurrence\n{\n public separator!: TokenType;\n public idx: number = 1;\n public maxLookahead?: number;\n\n constructor(options: {\n definition: IProduction[];\n separator: TokenType;\n idx?: number;\n }) {\n super(options.definition);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n}\n\nexport class Alternation\n extends AbstractProduction\n implements IProductionWithOccurrence\n{\n public idx: number = 1;\n public ignoreAmbiguities: boolean = false;\n public hasPredicates: boolean = false;\n public maxLookahead?: number;\n\n public get definition(): Alternative[] {\n return this._definition;\n }\n public set definition(value: Alternative[]) {\n this._definition = value;\n }\n\n constructor(options: {\n definition: Alternative[];\n idx?: number;\n ignoreAmbiguities?: boolean;\n hasPredicates?: boolean;\n maxLookahead?: number;\n }) {\n super(options.definition);\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n}\n\nexport class Terminal implements IProductionWithOccurrence {\n public terminalType!: TokenType;\n public label?: string;\n public idx: number = 1;\n\n constructor(options: {\n terminalType: TokenType;\n label?: string;\n idx?: number;\n }) {\n assign(\n this,\n pickBy(options, (v) => v !== undefined),\n );\n }\n\n accept(visitor: IGASTVisitor): void {\n visitor.visit(this);\n }\n}\n\nexport interface ISerializedBasic extends ISerializedGast {\n type:\n | \"Alternative\"\n | \"Option\"\n | \"RepetitionMandatory\"\n | \"Repetition\"\n | \"Alternation\";\n idx?: number;\n}\n\nexport interface ISerializedGastRule extends ISerializedGast {\n type: \"Rule\";\n name: string;\n orgText: string;\n}\n\nexport interface ISerializedNonTerminal extends ISerializedGast {\n type: \"NonTerminal\";\n name: string;\n label?: string;\n idx: number;\n}\n\nexport interface ISerializedTerminal extends ISerializedGast {\n type: \"Terminal\";\n name: string;\n terminalLabel?: string;\n label?: string;\n pattern?: string;\n idx: number;\n}\n\nexport interface ISerializedTerminalWithSeparator extends ISerializedGast {\n type: \"RepetitionMandatoryWithSeparator\" | \"RepetitionWithSeparator\";\n idx: number;\n separator: ISerializedTerminal;\n}\n\nexport type ISerializedGastAny =\n | ISerializedBasic\n | ISerializedGastRule\n | ISerializedNonTerminal\n | ISerializedTerminal\n | ISerializedTerminalWithSeparator;\n\nexport function serializeGrammar(topRules: Rule[]): ISerializedGast[] {\n return map(topRules, serializeProduction);\n}\n\nexport function serializeProduction(node: IProduction): ISerializedGast {\n function convertDefinition(definition: IProduction[]): ISerializedGast[] {\n return map(definition, serializeProduction);\n }\n /* istanbul ignore else */\n if (node instanceof NonTerminal) {\n const serializedNonTerminal: ISerializedNonTerminal = {\n type: \"NonTerminal\",\n name: node.nonTerminalName,\n idx: node.idx,\n };\n\n if (isString(node.label)) {\n serializedNonTerminal.label = node.label;\n }\n\n return serializedNonTerminal;\n } else if (node instanceof Alternative) {\n return {\n type: \"Alternative\",\n definition: convertDefinition(node.definition),\n };\n } else if (node instanceof Option) {\n return {\n type: \"Option\",\n idx: node.idx,\n definition: convertDefinition(node.definition),\n };\n } else if (node instanceof RepetitionMandatory) {\n return {\n type: \"RepetitionMandatory\",\n idx: node.idx,\n definition: convertDefinition(node.definition),\n };\n } else if (node instanceof RepetitionMandatoryWithSeparator) {\n return {\n type: \"RepetitionMandatoryWithSeparator\",\n idx: node.idx,\n separator: (\n serializeProduction(new Terminal({ terminalType: node.separator }))\n ),\n definition: convertDefinition(node.definition),\n };\n } else if (node instanceof RepetitionWithSeparator) {\n return {\n type: \"RepetitionWithSeparator\",\n idx: node.idx,\n separator: (\n serializeProduction(new Terminal({ terminalType: node.separator }))\n ),\n definition: convertDefinition(node.definition),\n };\n } else if (node instanceof Repetition) {\n return {\n type: \"Repetition\",\n idx: node.idx,\n definition: convertDefinition(node.definition),\n };\n } else if (node instanceof Alternation) {\n return {\n type: \"Alternation\",\n idx: node.idx,\n definition: convertDefinition(node.definition),\n };\n } else if (node instanceof Terminal) {\n const serializedTerminal = {\n type: \"Terminal\",\n name: node.terminalType.name,\n label: tokenLabel(node.terminalType),\n idx: node.idx,\n };\n\n if (isString(node.label)) {\n serializedTerminal.terminalLabel = node.label;\n }\n\n const pattern = node.terminalType.PATTERN;\n if (node.terminalType.PATTERN) {\n serializedTerminal.pattern = isRegExp(pattern)\n ? (pattern).source\n : pattern;\n }\n\n return serializedTerminal;\n } else if (node instanceof Rule) {\n return {\n type: \"Rule\",\n name: node.name,\n orgText: node.orgText,\n definition: convertDefinition(node.definition),\n };\n /* c8 ignore next 3 */\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n", "import {\n Alternation,\n Alternative,\n NonTerminal,\n Option,\n Repetition,\n RepetitionMandatory,\n RepetitionMandatoryWithSeparator,\n RepetitionWithSeparator,\n Rule,\n Terminal,\n} from \"./model.js\";\nimport type { IProduction } from \"@chevrotain/types\";\n\nexport abstract class GAstVisitor {\n public visit(node: IProduction): any {\n const nodeAny: any = node;\n switch (nodeAny.constructor) {\n case NonTerminal:\n return this.visitNonTerminal(nodeAny);\n case Alternative:\n return this.visitAlternative(nodeAny);\n case Option:\n return this.visitOption(nodeAny);\n case RepetitionMandatory:\n return this.visitRepetitionMandatory(nodeAny);\n case RepetitionMandatoryWithSeparator:\n return this.visitRepetitionMandatoryWithSeparator(nodeAny);\n case RepetitionWithSeparator:\n return this.visitRepetitionWithSeparator(nodeAny);\n case Repetition:\n return this.visitRepetition(nodeAny);\n case Alternation:\n return this.visitAlternation(nodeAny);\n case Terminal:\n return this.visitTerminal(nodeAny);\n case Rule:\n return this.visitRule(nodeAny);\n /* c8 ignore next 2 */\n default:\n throw Error(\"non exhaustive match\");\n }\n }\n\n /* c8 ignore next */\n public visitNonTerminal(node: NonTerminal): any {}\n\n /* c8 ignore next */\n public visitAlternative(node: Alternative): any {}\n\n /* c8 ignore next */\n public visitOption(node: Option): any {}\n\n /* c8 ignore next */\n public visitRepetition(node: Repetition): any {}\n\n /* c8 ignore next */\n public visitRepetitionMandatory(node: RepetitionMandatory): any {}\n\n /* c8 ignore next 3 */\n public visitRepetitionMandatoryWithSeparator(\n node: RepetitionMandatoryWithSeparator,\n ): any {}\n\n /* c8 ignore next */\n public visitRepetitionWithSeparator(node: RepetitionWithSeparator): any {}\n\n /* c8 ignore next */\n public visitAlternation(node: Alternation): any {}\n\n /* c8 ignore next */\n public visitTerminal(node: Terminal): any {}\n\n /* c8 ignore next */\n public visitRule(node: Rule): any {}\n}\n", "import { every, includes, some } from \"lodash-es\";\nimport {\n AbstractProduction,\n Alternation,\n Alternative,\n NonTerminal,\n Option,\n Repetition,\n RepetitionMandatory,\n RepetitionMandatoryWithSeparator,\n RepetitionWithSeparator,\n Rule,\n Terminal,\n} from \"./model.js\";\nimport type { IProduction, IProductionWithOccurrence } from \"@chevrotain/types\";\n\nexport function isSequenceProd(\n prod: IProduction,\n): prod is { definition: IProduction[] } & IProduction {\n return (\n prod instanceof Alternative ||\n prod instanceof Option ||\n prod instanceof Repetition ||\n prod instanceof RepetitionMandatory ||\n prod instanceof RepetitionMandatoryWithSeparator ||\n prod instanceof RepetitionWithSeparator ||\n prod instanceof Terminal ||\n prod instanceof Rule\n );\n}\n\nexport function isOptionalProd(\n prod: IProduction,\n alreadyVisited: NonTerminal[] = [],\n): boolean {\n const isDirectlyOptional =\n prod instanceof Option ||\n prod instanceof Repetition ||\n prod instanceof RepetitionWithSeparator;\n if (isDirectlyOptional) {\n return true;\n }\n\n // note that this can cause infinite loop if one optional empty TOP production has a cyclic dependency with another\n // empty optional top rule\n // may be indirectly optional ((A?B?C?) | (D?E?F?))\n if (prod instanceof Alternation) {\n // for OR its enough for just one of the alternatives to be optional\n return some((prod).definition, (subProd: IProduction) => {\n return isOptionalProd(subProd, alreadyVisited);\n });\n } else if (prod instanceof NonTerminal && includes(alreadyVisited, prod)) {\n // avoiding stack overflow due to infinite recursion\n return false;\n } else if (prod instanceof AbstractProduction) {\n if (prod instanceof NonTerminal) {\n alreadyVisited.push(prod);\n }\n return every(\n (prod).definition,\n (subProd: IProduction) => {\n return isOptionalProd(subProd, alreadyVisited);\n },\n );\n } else {\n return false;\n }\n}\n\nexport function isBranchingProd(\n prod: IProduction,\n): prod is { definition: IProduction[] } & IProduction {\n return prod instanceof Alternation;\n}\n\nexport function getProductionDslName(prod: IProductionWithOccurrence): string {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n return \"SUBRULE\";\n } else if (prod instanceof Option) {\n return \"OPTION\";\n } else if (prod instanceof Alternation) {\n return \"OR\";\n } else if (prod instanceof RepetitionMandatory) {\n return \"AT_LEAST_ONE\";\n } else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return \"AT_LEAST_ONE_SEP\";\n } else if (prod instanceof RepetitionWithSeparator) {\n return \"MANY_SEP\";\n } else if (prod instanceof Repetition) {\n return \"MANY\";\n } else if (prod instanceof Terminal) {\n return \"CONSUME\";\n /* c8 ignore next 3 */\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n", "import { drop, forEach } from \"lodash-es\";\nimport {\n Alternation,\n Alternative,\n NonTerminal,\n Option,\n Repetition,\n RepetitionMandatory,\n RepetitionMandatoryWithSeparator,\n RepetitionWithSeparator,\n Terminal,\n} from \"@chevrotain/gast\";\nimport { IProduction } from \"@chevrotain/types\";\n\n/**\n * A Grammar Walker that computes the \"remaining\" grammar \"after\" a productions in the grammar.\n */\nexport abstract class RestWalker {\n walk(prod: { definition: IProduction[] }, prevRest: any[] = []): void {\n forEach(prod.definition, (subProd: IProduction, index) => {\n const currRest = drop(prod.definition, index + 1);\n /* istanbul ignore else */\n if (subProd instanceof NonTerminal) {\n this.walkProdRef(subProd, currRest, prevRest);\n } else if (subProd instanceof Terminal) {\n this.walkTerminal(subProd, currRest, prevRest);\n } else if (subProd instanceof Alternative) {\n this.walkFlat(subProd, currRest, prevRest);\n } else if (subProd instanceof Option) {\n this.walkOption(subProd, currRest, prevRest);\n } else if (subProd instanceof RepetitionMandatory) {\n this.walkAtLeastOne(subProd, currRest, prevRest);\n } else if (subProd instanceof RepetitionMandatoryWithSeparator) {\n this.walkAtLeastOneSep(subProd, currRest, prevRest);\n } else if (subProd instanceof RepetitionWithSeparator) {\n this.walkManySep(subProd, currRest, prevRest);\n } else if (subProd instanceof Repetition) {\n this.walkMany(subProd, currRest, prevRest);\n } else if (subProd instanceof Alternation) {\n this.walkOr(subProd, currRest, prevRest);\n } else {\n throw Error(\"non exhaustive match\");\n }\n });\n }\n\n walkTerminal(\n terminal: Terminal,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {}\n\n walkProdRef(\n refProd: NonTerminal,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {}\n\n walkFlat(\n flatProd: Alternative,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // ABCDEF => after the D the rest is EF\n const fullOrRest = currRest.concat(prevRest);\n this.walk(flatProd, fullOrRest);\n }\n\n walkOption(\n optionProd: Option,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // ABC(DE)?F => after the (DE)? the rest is F\n const fullOrRest = currRest.concat(prevRest);\n this.walk(optionProd, fullOrRest);\n }\n\n walkAtLeastOne(\n atLeastOneProd: RepetitionMandatory,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // ABC(DE)+F => after the (DE)+ the rest is (DE)?F\n const fullAtLeastOneRest: IProduction[] = [\n new Option({ definition: atLeastOneProd.definition }),\n ].concat(currRest, prevRest);\n this.walk(atLeastOneProd, fullAtLeastOneRest);\n }\n\n walkAtLeastOneSep(\n atLeastOneSepProd: RepetitionMandatoryWithSeparator,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // ABC DE(,DE)* F => after the (,DE)+ the rest is (,DE)?F\n const fullAtLeastOneSepRest = restForRepetitionWithSeparator(\n atLeastOneSepProd,\n currRest,\n prevRest,\n );\n this.walk(atLeastOneSepProd, fullAtLeastOneSepRest);\n }\n\n walkMany(\n manyProd: Repetition,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // ABC(DE)*F => after the (DE)* the rest is (DE)?F\n const fullManyRest: IProduction[] = [\n new Option({ definition: manyProd.definition }),\n ].concat(currRest, prevRest);\n this.walk(manyProd, fullManyRest);\n }\n\n walkManySep(\n manySepProd: RepetitionWithSeparator,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // ABC (DE(,DE)*)? F => after the (,DE)* the rest is (,DE)?F\n const fullManySepRest = restForRepetitionWithSeparator(\n manySepProd,\n currRest,\n prevRest,\n );\n this.walk(manySepProd, fullManySepRest);\n }\n\n walkOr(\n orProd: Alternation,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // ABC(D|E|F)G => when finding the (D|E|F) the rest is G\n const fullOrRest = currRest.concat(prevRest);\n // walk all different alternatives\n forEach(orProd.definition, (alt) => {\n // wrapping each alternative in a single definition wrapper\n // to avoid errors in computing the rest of that alternative in the invocation to computeInProdFollows\n // (otherwise for OR([alt1,alt2]) alt2 will be considered in 'rest' of alt1\n const prodWrapper = new Alternative({ definition: [alt] });\n this.walk(prodWrapper, fullOrRest);\n });\n }\n}\n\nfunction restForRepetitionWithSeparator(\n repSepProd: RepetitionWithSeparator,\n currRest: IProduction[],\n prevRest: IProduction[],\n) {\n const repSepRest = [\n new Option({\n definition: [\n new Terminal({ terminalType: repSepProd.separator }) as IProduction,\n ].concat(repSepProd.definition),\n }) as IProduction,\n ];\n const fullRepSepRest: IProduction[] = repSepRest.concat(currRest, prevRest);\n return fullRepSepRest;\n}\n", "import { flatten, map, uniq } from \"lodash-es\";\nimport {\n isBranchingProd,\n isOptionalProd,\n isSequenceProd,\n NonTerminal,\n Terminal,\n} from \"@chevrotain/gast\";\nimport { IProduction, TokenType } from \"@chevrotain/types\";\n\nexport function first(prod: IProduction): TokenType[] {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n // this could in theory cause infinite loops if\n // (1) prod A refs prod B.\n // (2) prod B refs prod A\n // (3) AB can match the empty set\n // in other words a cycle where everything is optional so the first will keep\n // looking ahead for the next optional part and will never exit\n // currently there is no safeguard for this unique edge case because\n // (1) not sure a grammar in which this can happen is useful for anything (productive)\n return first((prod).referencedRule);\n } else if (prod instanceof Terminal) {\n return firstForTerminal(prod);\n } else if (isSequenceProd(prod)) {\n return firstForSequence(prod);\n } else if (isBranchingProd(prod)) {\n return firstForBranching(prod);\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n\nexport function firstForSequence(prod: {\n definition: IProduction[];\n}): TokenType[] {\n let firstSet: TokenType[] = [];\n const seq = prod.definition;\n let nextSubProdIdx = 0;\n let hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n let currSubProd;\n // so we enter the loop at least once (if the definition is not empty\n let isLastInnerProdOptional = true;\n // scan a sequence until it's end or until we have found a NONE optional production in it\n while (hasInnerProdsRemaining && isLastInnerProdOptional) {\n currSubProd = seq[nextSubProdIdx];\n isLastInnerProdOptional = isOptionalProd(currSubProd);\n firstSet = firstSet.concat(first(currSubProd));\n nextSubProdIdx = nextSubProdIdx + 1;\n hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n }\n\n return uniq(firstSet);\n}\n\nexport function firstForBranching(prod: {\n definition: IProduction[];\n}): TokenType[] {\n const allAlternativesFirsts: TokenType[][] = map(\n prod.definition,\n (innerProd) => {\n return first(innerProd);\n },\n );\n return uniq(flatten(allAlternativesFirsts));\n}\n\nexport function firstForTerminal(terminal: Terminal): TokenType[] {\n return [terminal.terminalType];\n}\n", "// TODO: can this be removed? where is it used?\nexport const IN = \"_~IN~_\";\n", "import { RestWalker } from \"./rest.js\";\nimport { first } from \"./first.js\";\nimport { assign, forEach } from \"lodash-es\";\nimport { IN } from \"../constants.js\";\nimport { Alternative, NonTerminal, Rule, Terminal } from \"@chevrotain/gast\";\nimport { IProduction, TokenType } from \"@chevrotain/types\";\n\n// This ResyncFollowsWalker computes all of the follows required for RESYNC\n// (skipping reference production).\nexport class ResyncFollowsWalker extends RestWalker {\n public follows: Record = {};\n\n constructor(private topProd: Rule) {\n super();\n }\n\n startWalking(): Record {\n this.walk(this.topProd);\n return this.follows;\n }\n\n walkTerminal(\n terminal: Terminal,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // do nothing! just like in the public sector after 13:00\n }\n\n walkProdRef(\n refProd: NonTerminal,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n const followName =\n buildBetweenProdsFollowPrefix(refProd.referencedRule, refProd.idx) +\n this.topProd.name;\n const fullRest: IProduction[] = currRest.concat(prevRest);\n const restProd = new Alternative({ definition: fullRest });\n const t_in_topProd_follows = first(restProd);\n this.follows[followName] = t_in_topProd_follows;\n }\n}\n\nexport function computeAllProdsFollows(\n topProductions: Rule[],\n): Record {\n const reSyncFollows = {};\n\n forEach(topProductions, (topProd) => {\n const currRefsFollow = new ResyncFollowsWalker(topProd).startWalking();\n assign(reSyncFollows, currRefsFollow);\n });\n return reSyncFollows;\n}\n\nexport function buildBetweenProdsFollowPrefix(\n inner: Rule,\n occurenceInParent: number,\n): string {\n return inner.name + occurenceInParent + IN;\n}\n\nexport function buildInProdFollowPrefix(terminal: Terminal): string {\n const terminalName = terminal.terminalType.name;\n return terminalName + terminal.idx + IN;\n}\n", "import {\n Alternative,\n Assertion,\n Atom,\n Disjunction,\n RegExpParser,\n RegExpPattern,\n} from \"@chevrotain/regexp-to-ast\";\n\nlet regExpAstCache: { [regex: string]: RegExpPattern } = {};\nconst regExpParser = new RegExpParser();\n\n// this should be moved to regexp-to-ast\nexport type ASTNode =\n | RegExpPattern\n | Disjunction\n | Alternative\n | Assertion\n | Atom;\n\nexport function getRegExpAst(regExp: RegExp): RegExpPattern {\n const regExpStr = regExp.toString();\n if (regExpAstCache.hasOwnProperty(regExpStr)) {\n return regExpAstCache[regExpStr];\n } else {\n const regExpAst = regExpParser.pattern(regExpStr);\n regExpAstCache[regExpStr] = regExpAst;\n return regExpAst;\n }\n}\n\nexport function clearRegExpParserCache() {\n regExpAstCache = {};\n}\n", "import {\n Alternative,\n Atom,\n BaseRegExpVisitor,\n Character,\n Disjunction,\n Group,\n Set,\n} from \"@chevrotain/regexp-to-ast\";\nimport { every, find, forEach, includes, isArray, values } from \"lodash-es\";\nimport { PRINT_ERROR, PRINT_WARNING } from \"@chevrotain/utils\";\nimport { ASTNode, getRegExpAst } from \"./reg_exp_parser.js\";\nimport { charCodeToOptimizedIndex, minOptimizationVal } from \"./lexer.js\";\n\nconst complementErrorMessage =\n \"Complement Sets are not supported for first char optimization\";\nexport const failedOptimizationPrefixMsg =\n 'Unable to use \"first char\" lexer optimizations:\\n';\n\nexport function getOptimizedStartCodesIndices(\n regExp: RegExp,\n ensureOptimizations = false,\n): number[] {\n try {\n const ast = getRegExpAst(regExp);\n const firstChars = firstCharOptimizedIndices(\n ast.value,\n {},\n ast.flags.ignoreCase,\n );\n return firstChars;\n } catch (e) {\n /* istanbul ignore next */\n // Testing this relies on the regexp-to-ast library having a bug... */\n // TODO: only the else branch needs to be ignored, try to fix with newer prettier / tsc\n if (e.message === complementErrorMessage) {\n if (ensureOptimizations) {\n PRINT_WARNING(\n `${failedOptimizationPrefixMsg}` +\n `\\tUnable to optimize: < ${regExp.toString()} >\\n` +\n \"\\tComplement Sets cannot be automatically optimized.\\n\" +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.\",\n );\n }\n } else {\n let msgSuffix = \"\";\n if (ensureOptimizations) {\n msgSuffix =\n \"\\n\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.\";\n }\n PRINT_ERROR(\n `${failedOptimizationPrefixMsg}\\n` +\n `\\tFailed parsing: < ${regExp.toString()} >\\n` +\n `\\tUsing the @chevrotain/regexp-to-ast library\\n` +\n \"\\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues\" +\n msgSuffix,\n );\n }\n }\n\n return [];\n}\n\nexport function firstCharOptimizedIndices(\n ast: ASTNode,\n result: { [charCode: number]: number },\n ignoreCase: boolean,\n): number[] {\n switch (ast.type) {\n case \"Disjunction\":\n for (let i = 0; i < ast.value.length; i++) {\n firstCharOptimizedIndices(ast.value[i], result, ignoreCase);\n }\n break;\n case \"Alternative\":\n const terms = ast.value;\n for (let i = 0; i < terms.length; i++) {\n const term = terms[i];\n\n // skip terms that cannot effect the first char results\n switch (term.type) {\n case \"EndAnchor\":\n // A group back reference cannot affect potential starting char.\n // because if a back reference is the first production than automatically\n // the group being referenced has had to come BEFORE so its codes have already been added\n case \"GroupBackReference\":\n // assertions do not affect potential starting codes\n case \"Lookahead\":\n case \"NegativeLookahead\":\n case \"Lookbehind\":\n case \"NegativeLookbehind\":\n case \"StartAnchor\":\n case \"WordBoundary\":\n case \"NonWordBoundary\":\n continue;\n }\n\n const atom = term;\n switch (atom.type) {\n case \"Character\":\n addOptimizedIdxToResult(atom.value, result, ignoreCase);\n break;\n case \"Set\":\n if (atom.complement === true) {\n throw Error(complementErrorMessage);\n }\n forEach(atom.value, (code) => {\n if (typeof code === \"number\") {\n addOptimizedIdxToResult(code, result, ignoreCase);\n } else {\n // range\n const range = code as any;\n // cannot optimize when ignoreCase is\n if (ignoreCase === true) {\n for (\n let rangeCode = range.from;\n rangeCode <= range.to;\n rangeCode++\n ) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n }\n // Optimization (2 orders of magnitude less work for very large ranges)\n else {\n // handle unoptimized values\n for (\n let rangeCode = range.from;\n rangeCode <= range.to && rangeCode < minOptimizationVal;\n rangeCode++\n ) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n\n // Less common charCode where we optimize for faster init time, by using larger \"buckets\"\n if (range.to >= minOptimizationVal) {\n const minUnOptVal =\n range.from >= minOptimizationVal\n ? range.from\n : minOptimizationVal;\n const maxUnOptVal = range.to;\n const minOptIdx = charCodeToOptimizedIndex(minUnOptVal);\n const maxOptIdx = charCodeToOptimizedIndex(maxUnOptVal);\n\n for (\n let currOptIdx = minOptIdx;\n currOptIdx <= maxOptIdx;\n currOptIdx++\n ) {\n result[currOptIdx] = currOptIdx;\n }\n }\n }\n }\n });\n break;\n case \"Group\":\n firstCharOptimizedIndices(atom.value, result, ignoreCase);\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"Non Exhaustive Match\");\n }\n\n // reached a mandatory production, no more **start** codes can be found on this alternative\n const isOptionalQuantifier =\n atom.quantifier !== undefined && atom.quantifier.atLeast === 0;\n if (\n // A group may be optional due to empty contents /(?:)/\n // or if everything inside it is optional /((a)?)/\n (atom.type === \"Group\" && isWholeOptional(atom) === false) ||\n // If this term is not a group it may only be optional if it has an optional quantifier\n (atom.type !== \"Group\" && isOptionalQuantifier === false)\n ) {\n break;\n }\n }\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"non exhaustive match!\");\n }\n\n // console.log(Object.keys(result).length)\n return values(result);\n}\n\nfunction addOptimizedIdxToResult(\n code: number,\n result: { [charCode: number]: number },\n ignoreCase: boolean,\n) {\n const optimizedCharIdx = charCodeToOptimizedIndex(code);\n result[optimizedCharIdx] = optimizedCharIdx;\n\n if (ignoreCase === true) {\n handleIgnoreCase(code, result);\n }\n}\n\nfunction handleIgnoreCase(\n code: number,\n result: { [charCode: number]: number },\n) {\n const char = String.fromCharCode(code);\n const upperChar = char.toUpperCase();\n /* istanbul ignore else */\n if (upperChar !== char) {\n const optimizedCharIdx = charCodeToOptimizedIndex(upperChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n } else {\n const lowerChar = char.toLowerCase();\n if (lowerChar !== char) {\n const optimizedCharIdx = charCodeToOptimizedIndex(\n lowerChar.charCodeAt(0),\n );\n result[optimizedCharIdx] = optimizedCharIdx;\n }\n }\n}\n\nfunction findCode(setNode: Set, targetCharCodes: number[]) {\n return find(setNode.value, (codeOrRange) => {\n if (typeof codeOrRange === \"number\") {\n return includes(targetCharCodes, codeOrRange);\n } else {\n // range\n const range = codeOrRange;\n return (\n find(\n targetCharCodes,\n (targetCode) => range.from <= targetCode && targetCode <= range.to,\n ) !== undefined\n );\n }\n });\n}\n\nfunction isWholeOptional(ast: any): boolean {\n const quantifier = (ast as Atom).quantifier;\n if (quantifier && quantifier.atLeast === 0) {\n return true;\n }\n\n if (!ast.value) {\n return false;\n }\n\n return isArray(ast.value)\n ? every(ast.value, isWholeOptional)\n : isWholeOptional(ast.value);\n}\n\nclass CharCodeFinder extends BaseRegExpVisitor {\n found: boolean = false;\n\n constructor(private targetCharCodes: number[]) {\n super();\n }\n\n visitChildren(node: ASTNode) {\n // No need to keep looking...\n if (this.found === true) {\n return;\n }\n\n // switch lookaheads / lookbehinds as they do not actually consume any characters thus\n // finding a charCode at lookahead context does not mean that regexp can actually contain it in a match.\n switch (node.type) {\n case \"Lookahead\":\n this.visitLookahead(node);\n return;\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node);\n return;\n case \"Lookbehind\":\n this.visitLookbehind(node);\n return;\n case \"NegativeLookbehind\":\n this.visitNegativeLookbehind(node);\n return;\n }\n\n super.visitChildren(node);\n }\n\n visitCharacter(node: Character) {\n if (includes(this.targetCharCodes, node.value)) {\n this.found = true;\n }\n }\n\n visitSet(node: Set) {\n if (node.complement) {\n if (findCode(node, this.targetCharCodes) === undefined) {\n this.found = true;\n }\n } else {\n if (findCode(node, this.targetCharCodes) !== undefined) {\n this.found = true;\n }\n }\n }\n}\n\nexport function canMatchCharCode(\n charCodes: number[],\n pattern: RegExp | string,\n) {\n if (pattern instanceof RegExp) {\n const ast = getRegExpAst(pattern);\n const charCodeFinder = new CharCodeFinder(charCodes);\n charCodeFinder.visit(ast);\n return charCodeFinder.found;\n } else {\n return (\n find(pattern, (char) => {\n return includes(charCodes, (char).charCodeAt(0));\n }) !== undefined\n );\n }\n}\n", "import { BaseRegExpVisitor } from \"@chevrotain/regexp-to-ast\";\nimport {\n IRegExpExec,\n Lexer,\n LexerDefinitionErrorType,\n} from \"./lexer_public.js\";\nimport {\n compact,\n defaults,\n difference,\n filter,\n find,\n first,\n flatten,\n forEach,\n has,\n includes,\n indexOf,\n isArray,\n isEmpty,\n isFunction,\n isRegExp,\n isString,\n isUndefined,\n keys,\n map,\n reduce,\n reject,\n values,\n} from \"lodash-es\";\nimport { PRINT_ERROR } from \"@chevrotain/utils\";\nimport {\n canMatchCharCode,\n failedOptimizationPrefixMsg,\n getOptimizedStartCodesIndices,\n} from \"./reg_exp.js\";\nimport {\n ILexerDefinitionError,\n ILineTerminatorsTester,\n IMultiModeLexerDefinition,\n IToken,\n TokenType,\n} from \"@chevrotain/types\";\nimport { getRegExpAst } from \"./reg_exp_parser.js\";\n\nconst PATTERN = \"PATTERN\";\nexport const DEFAULT_MODE = \"defaultMode\";\nexport const MODES = \"modes\";\n\nexport interface IPatternConfig {\n pattern: IRegExpExec | string;\n longerAlt: number[] | undefined;\n canLineTerminator: boolean;\n isCustom: boolean;\n short: number | false;\n group: string | undefined | false;\n push: string | undefined;\n pop: boolean;\n tokenType: TokenType;\n tokenTypeIdx: number;\n}\n\nexport interface IAnalyzeResult {\n patternIdxToConfig: IPatternConfig[];\n charCodeToPatternIdxToConfig: { [charCode: number]: IPatternConfig[] };\n emptyGroups: { [groupName: string]: IToken[] };\n hasCustom: boolean;\n canBeOptimized: boolean;\n}\n\nexport let SUPPORT_STICKY =\n typeof (new RegExp(\"(?:)\")).sticky === \"boolean\";\n\nexport function disableSticky() {\n SUPPORT_STICKY = false;\n}\n\nexport function enableSticky() {\n SUPPORT_STICKY = true;\n}\n\nexport function analyzeTokenTypes(\n tokenTypes: TokenType[],\n options: {\n positionTracking?: \"full\" | \"onlyStart\" | \"onlyOffset\";\n ensureOptimizations?: boolean;\n lineTerminatorCharacters?: (number | string)[];\n // TODO: should `useSticky` be an argument here?\n useSticky?: boolean;\n safeMode?: boolean;\n tracer?: (msg: string, action: () => void) => void;\n },\n): IAnalyzeResult {\n options = defaults(options, {\n useSticky: SUPPORT_STICKY,\n debug: false as boolean,\n safeMode: false as boolean,\n positionTracking: \"full\",\n lineTerminatorCharacters: [\"\\r\", \"\\n\"],\n tracer: (msg: string, action: Function) => action(),\n });\n\n const tracer = options.tracer!;\n\n tracer(\"initCharCodeToOptimizedIndexMap\", () => {\n initCharCodeToOptimizedIndexMap();\n });\n\n let onlyRelevantTypes: TokenType[];\n tracer(\"Reject Lexer.NA\", () => {\n onlyRelevantTypes = reject(tokenTypes, (currType) => {\n return currType[PATTERN] === Lexer.NA;\n });\n });\n\n let hasCustom = false;\n let allTransformedPatterns: (IRegExpExec | string)[];\n tracer(\"Transform Patterns\", () => {\n hasCustom = false;\n allTransformedPatterns = map(\n onlyRelevantTypes,\n (currType): IRegExpExec | string => {\n const currPattern = currType[PATTERN];\n\n /* istanbul ignore else */\n if (isRegExp(currPattern)) {\n const regExpSource = currPattern.source;\n if (\n regExpSource.length === 1 &&\n // only these regExp meta characters which can appear in a length one regExp\n regExpSource !== \"^\" &&\n regExpSource !== \"$\" &&\n regExpSource !== \".\" &&\n !currPattern.ignoreCase\n ) {\n return regExpSource;\n } else if (\n regExpSource.length === 2 &&\n regExpSource[0] === \"\\\\\" &&\n // not a meta character\n !includes(\n [\n \"d\",\n \"D\",\n \"s\",\n \"S\",\n \"t\",\n \"r\",\n \"n\",\n \"t\",\n \"0\",\n \"c\",\n \"b\",\n \"B\",\n \"f\",\n \"v\",\n \"w\",\n \"W\",\n ],\n regExpSource[1],\n )\n ) {\n // escaped meta Characters: /\\+/ /\\[/\n // or redundant escaping: /\\a/\n // without the escaping \"\\\"\n return regExpSource[1];\n } else {\n return options.useSticky\n ? addStickyFlag(currPattern)\n : addStartOfInput(currPattern);\n }\n } else if (isFunction(currPattern)) {\n hasCustom = true;\n // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object\n return { exec: currPattern };\n } else if (typeof currPattern === \"object\") {\n hasCustom = true;\n // ICustomPattern\n return currPattern;\n } else if (typeof currPattern === \"string\") {\n if (currPattern.length === 1) {\n return currPattern;\n } else {\n const escapedRegExpString = currPattern.replace(\n /[\\\\^$.*+?()[\\]{}|]/g,\n \"\\\\$&\",\n );\n const wrappedRegExp = new RegExp(escapedRegExpString);\n return options.useSticky\n ? addStickyFlag(wrappedRegExp)\n : addStartOfInput(wrappedRegExp);\n }\n } else {\n throw Error(\"non exhaustive match\");\n }\n },\n );\n });\n\n let patternIdxToType: number[];\n let patternIdxToGroup: (string | undefined | false)[];\n let patternIdxToLongerAltIdxArr: (number[] | undefined)[];\n let patternIdxToPushMode: (string | undefined)[];\n let patternIdxToPopMode: boolean[];\n tracer(\"misc mapping\", () => {\n patternIdxToType = map(\n onlyRelevantTypes,\n (currType) => currType.tokenTypeIdx!,\n );\n\n patternIdxToGroup = map(onlyRelevantTypes, (clazz: any) => {\n const groupName = clazz.GROUP;\n /* istanbul ignore next */\n if (groupName === Lexer.SKIPPED) {\n return undefined;\n } else if (isString(groupName)) {\n return groupName;\n } else if (isUndefined(groupName)) {\n return false;\n } else {\n throw Error(\"non exhaustive match\");\n }\n });\n\n patternIdxToLongerAltIdxArr = map(onlyRelevantTypes, (clazz: any) => {\n const longerAltType = clazz.LONGER_ALT;\n\n if (longerAltType) {\n const longerAltIdxArr = isArray(longerAltType)\n ? map(longerAltType, (type: any) => indexOf(onlyRelevantTypes, type))\n : [indexOf(onlyRelevantTypes, longerAltType)];\n return longerAltIdxArr;\n }\n });\n\n patternIdxToPushMode = map(\n onlyRelevantTypes,\n (clazz: any) => clazz.PUSH_MODE,\n );\n\n patternIdxToPopMode = map(onlyRelevantTypes, (clazz: any) =>\n has(clazz, \"POP_MODE\"),\n );\n });\n\n let patternIdxToCanLineTerminator: boolean[];\n tracer(\"Line Terminator Handling\", () => {\n const lineTerminatorCharCodes = getCharCodes(\n options.lineTerminatorCharacters!,\n );\n patternIdxToCanLineTerminator = map(onlyRelevantTypes, (tokType) => false);\n if (options.positionTracking !== \"onlyOffset\") {\n patternIdxToCanLineTerminator = map(onlyRelevantTypes, (tokType) => {\n if (has(tokType, \"LINE_BREAKS\")) {\n return !!tokType.LINE_BREAKS;\n } else {\n return (\n checkLineBreaksIssues(tokType, lineTerminatorCharCodes) === false &&\n canMatchCharCode(\n lineTerminatorCharCodes,\n tokType.PATTERN as RegExp | string,\n )\n );\n }\n });\n }\n });\n\n let patternIdxToIsCustom: boolean[];\n let patternIdxToShort: (number | false)[];\n let emptyGroups!: { [groupName: string]: IToken[] };\n let patternIdxToConfig!: IPatternConfig[];\n tracer(\"Misc Mapping #2\", () => {\n patternIdxToIsCustom = map(onlyRelevantTypes, isCustomPattern);\n patternIdxToShort = map(allTransformedPatterns, isShortPattern);\n\n emptyGroups = reduce(\n onlyRelevantTypes,\n (acc, clazz: any) => {\n const groupName = clazz.GROUP;\n if (isString(groupName) && !(groupName === Lexer.SKIPPED)) {\n acc[groupName] = [];\n }\n return acc;\n },\n {} as { [groupName: string]: IToken[] },\n );\n\n patternIdxToConfig = map(\n allTransformedPatterns,\n (x, idx): IPatternConfig => {\n return {\n pattern: allTransformedPatterns[idx],\n longerAlt: patternIdxToLongerAltIdxArr[idx],\n canLineTerminator: patternIdxToCanLineTerminator[idx],\n isCustom: patternIdxToIsCustom[idx],\n short: patternIdxToShort[idx],\n group: patternIdxToGroup[idx],\n push: patternIdxToPushMode[idx],\n pop: patternIdxToPopMode[idx],\n tokenTypeIdx: patternIdxToType[idx],\n tokenType: onlyRelevantTypes[idx],\n };\n },\n );\n });\n\n let canBeOptimized = true;\n let charCodeToPatternIdxToConfig: { [charCode: number]: IPatternConfig[] } =\n [];\n\n if (!options.safeMode) {\n tracer(\"First Char Optimization\", () => {\n charCodeToPatternIdxToConfig = reduce(\n onlyRelevantTypes,\n (result, currTokType, idx) => {\n if (typeof currTokType.PATTERN === \"string\") {\n const charCode = currTokType.PATTERN.charCodeAt(0);\n const optimizedIdx = charCodeToOptimizedIndex(charCode);\n addToMapOfArrays(result, optimizedIdx, patternIdxToConfig[idx]);\n } else if (isArray(currTokType.START_CHARS_HINT)) {\n let lastOptimizedIdx: number;\n forEach(currTokType.START_CHARS_HINT, (charOrInt) => {\n const charCode =\n typeof charOrInt === \"string\"\n ? charOrInt.charCodeAt(0)\n : charOrInt;\n const currOptimizedIdx = charCodeToOptimizedIndex(charCode);\n // Avoid adding the config multiple times\n /* istanbul ignore else */\n // - Difficult to check this scenario effects as it is only a performance\n // optimization that does not change correctness\n if (lastOptimizedIdx !== currOptimizedIdx) {\n lastOptimizedIdx = currOptimizedIdx;\n addToMapOfArrays(\n result,\n currOptimizedIdx,\n patternIdxToConfig[idx],\n );\n }\n });\n } else if (isRegExp(currTokType.PATTERN)) {\n if (currTokType.PATTERN.unicode) {\n canBeOptimized = false;\n if (options.ensureOptimizations) {\n PRINT_ERROR(\n `${failedOptimizationPrefixMsg}` +\n `\\tUnable to analyze < ${currTokType.PATTERN.toString()} > pattern.\\n` +\n \"\\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\\n\" +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE\",\n );\n }\n } else {\n const optimizedCodes = getOptimizedStartCodesIndices(\n currTokType.PATTERN,\n options.ensureOptimizations,\n );\n /* istanbul ignore if */\n // start code will only be empty given an empty regExp or failure of regexp-to-ast library\n // the first should be a different validation and the second cannot be tested.\n if (isEmpty(optimizedCodes)) {\n // we cannot understand what codes may start possible matches\n // The optimization correctness requires knowing start codes for ALL patterns.\n // Not actually sure this is an error, no debug message\n canBeOptimized = false;\n }\n forEach(optimizedCodes, (code) => {\n addToMapOfArrays(result, code, patternIdxToConfig[idx]);\n });\n }\n } else {\n if (options.ensureOptimizations) {\n PRINT_ERROR(\n `${failedOptimizationPrefixMsg}` +\n `\\tTokenType: <${currTokType.name}> is using a custom token pattern without providing parameter.\\n` +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE\",\n );\n }\n canBeOptimized = false;\n }\n\n return result;\n },\n [] as { [charCode: number]: IPatternConfig[] },\n );\n });\n }\n\n return {\n emptyGroups: emptyGroups,\n patternIdxToConfig: patternIdxToConfig,\n charCodeToPatternIdxToConfig: charCodeToPatternIdxToConfig,\n hasCustom: hasCustom,\n canBeOptimized: canBeOptimized,\n };\n}\n\nexport function validatePatterns(\n tokenTypes: TokenType[],\n validModesNames: string[],\n): ILexerDefinitionError[] {\n let errors: ILexerDefinitionError[] = [];\n\n const missingResult = findMissingPatterns(tokenTypes);\n errors = errors.concat(missingResult.errors);\n\n const invalidResult = findInvalidPatterns(missingResult.valid);\n const validTokenTypes = invalidResult.valid;\n errors = errors.concat(invalidResult.errors);\n\n errors = errors.concat(validateRegExpPattern(validTokenTypes));\n\n errors = errors.concat(findInvalidGroupType(validTokenTypes));\n\n errors = errors.concat(\n findModesThatDoNotExist(validTokenTypes, validModesNames),\n );\n\n errors = errors.concat(findUnreachablePatterns(validTokenTypes));\n\n return errors;\n}\n\nfunction validateRegExpPattern(\n tokenTypes: TokenType[],\n): ILexerDefinitionError[] {\n let errors: ILexerDefinitionError[] = [];\n const withRegExpPatterns = filter(tokenTypes, (currTokType) =>\n isRegExp(currTokType[PATTERN]),\n );\n\n errors = errors.concat(findEndOfInputAnchor(withRegExpPatterns));\n\n errors = errors.concat(findStartOfInputAnchor(withRegExpPatterns));\n\n errors = errors.concat(findUnsupportedFlags(withRegExpPatterns));\n\n errors = errors.concat(findDuplicatePatterns(withRegExpPatterns));\n\n errors = errors.concat(findEmptyMatchRegExps(withRegExpPatterns));\n\n return errors;\n}\n\nexport interface ILexerFilterResult {\n errors: ILexerDefinitionError[];\n valid: TokenType[];\n}\n\nexport function findMissingPatterns(\n tokenTypes: TokenType[],\n): ILexerFilterResult {\n const tokenTypesWithMissingPattern = filter(tokenTypes, (currType) => {\n return !has(currType, PATTERN);\n });\n\n const errors = map(tokenTypesWithMissingPattern, (currType) => {\n return {\n message:\n \"Token Type: ->\" +\n currType.name +\n \"<- missing static 'PATTERN' property\",\n type: LexerDefinitionErrorType.MISSING_PATTERN,\n tokenTypes: [currType],\n };\n });\n\n const valid = difference(tokenTypes, tokenTypesWithMissingPattern);\n return { errors, valid };\n}\n\nexport function findInvalidPatterns(\n tokenTypes: TokenType[],\n): ILexerFilterResult {\n const tokenTypesWithInvalidPattern = filter(tokenTypes, (currType) => {\n const pattern = currType[PATTERN];\n return (\n !isRegExp(pattern) &&\n !isFunction(pattern) &&\n !has(pattern, \"exec\") &&\n !isString(pattern)\n );\n });\n\n const errors = map(tokenTypesWithInvalidPattern, (currType) => {\n return {\n message:\n \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' can only be a RegExp, a\" +\n \" Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.\",\n type: LexerDefinitionErrorType.INVALID_PATTERN,\n tokenTypes: [currType],\n };\n });\n\n const valid = difference(tokenTypes, tokenTypesWithInvalidPattern);\n return { errors, valid };\n}\n\nconst end_of_input = /[^\\\\][$]/;\n\nexport function findEndOfInputAnchor(\n tokenTypes: TokenType[],\n): ILexerDefinitionError[] {\n class EndAnchorFinder extends BaseRegExpVisitor {\n found = false;\n\n visitEndAnchor(node: unknown) {\n this.found = true;\n }\n }\n\n const invalidRegex = filter(tokenTypes, (currType) => {\n const pattern = currType.PATTERN;\n\n try {\n const regexpAst = getRegExpAst(pattern as RegExp);\n const endAnchorVisitor = new EndAnchorFinder();\n endAnchorVisitor.visit(regexpAst);\n\n return endAnchorVisitor.found;\n } catch (e) {\n // old behavior in case of runtime exceptions with regexp-to-ast.\n /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/\n return end_of_input.test((pattern as RegExp).source);\n }\n });\n\n const errors = map(invalidRegex, (currType) => {\n return {\n message:\n \"Unexpected RegExp Anchor Error:\\n\" +\n \"\\tToken Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' cannot contain end of input anchor '$'\\n\" +\n \"\\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.EOI_ANCHOR_FOUND,\n tokenTypes: [currType],\n };\n });\n\n return errors;\n}\n\nexport function findEmptyMatchRegExps(\n tokenTypes: TokenType[],\n): ILexerDefinitionError[] {\n const matchesEmptyString = filter(tokenTypes, (currType) => {\n const pattern = currType.PATTERN as RegExp;\n return pattern.test(\"\");\n });\n\n const errors = map(matchesEmptyString, (currType) => {\n return {\n message:\n \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' must not match an empty string\",\n type: LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,\n tokenTypes: [currType],\n };\n });\n\n return errors;\n}\n\nconst start_of_input = /[^\\\\[][\\^]|^\\^/;\n\nexport function findStartOfInputAnchor(\n tokenTypes: TokenType[],\n): ILexerDefinitionError[] {\n class StartAnchorFinder extends BaseRegExpVisitor {\n found = false;\n\n visitStartAnchor(node: unknown) {\n this.found = true;\n }\n }\n\n const invalidRegex = filter(tokenTypes, (currType) => {\n const pattern = currType.PATTERN as RegExp;\n try {\n const regexpAst = getRegExpAst(pattern);\n const startAnchorVisitor = new StartAnchorFinder();\n startAnchorVisitor.visit(regexpAst);\n\n return startAnchorVisitor.found;\n } catch (e) {\n // old behavior in case of runtime exceptions with regexp-to-ast.\n /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/\n return start_of_input.test(pattern.source);\n }\n });\n\n const errors = map(invalidRegex, (currType) => {\n return {\n message:\n \"Unexpected RegExp Anchor Error:\\n\" +\n \"\\tToken Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' cannot contain start of input anchor '^'\\n\" +\n \"\\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.SOI_ANCHOR_FOUND,\n tokenTypes: [currType],\n };\n });\n\n return errors;\n}\n\nexport function findUnsupportedFlags(\n tokenTypes: TokenType[],\n): ILexerDefinitionError[] {\n const invalidFlags = filter(tokenTypes, (currType) => {\n const pattern = currType[PATTERN];\n return pattern instanceof RegExp && (pattern.multiline || pattern.global);\n });\n\n const errors = map(invalidFlags, (currType) => {\n return {\n message:\n \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' may NOT contain global('g') or multiline('m')\",\n type: LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,\n tokenTypes: [currType],\n };\n });\n\n return errors;\n}\n\n// This can only test for identical duplicate RegExps, not semantically equivalent ones.\nexport function findDuplicatePatterns(\n tokenTypes: TokenType[],\n): ILexerDefinitionError[] {\n const found: TokenType[] = [];\n let identicalPatterns = map(tokenTypes, (outerType: any) => {\n return reduce(\n tokenTypes,\n (result, innerType) => {\n if (\n outerType.PATTERN.source === (innerType.PATTERN as RegExp).source &&\n !includes(found, innerType) &&\n innerType.PATTERN !== Lexer.NA\n ) {\n // this avoids duplicates in the result, each Token Type may only appear in one \"set\"\n // in essence we are creating Equivalence classes on equality relation.\n found.push(innerType);\n result.push(innerType);\n return result;\n }\n return result;\n },\n [] as TokenType[],\n );\n });\n\n identicalPatterns = compact(identicalPatterns);\n\n const duplicatePatterns = filter(identicalPatterns, (currIdenticalSet) => {\n return currIdenticalSet.length > 1;\n });\n\n const errors = map(duplicatePatterns, (setOfIdentical: any) => {\n const tokenTypeNames = map(setOfIdentical, (currType: any) => {\n return currType.name;\n });\n\n const dupPatternSrc = (first(setOfIdentical)).PATTERN;\n return {\n message:\n `The same RegExp pattern ->${dupPatternSrc}<-` +\n `has been used in all of the following Token Types: ${tokenTypeNames.join(\n \", \",\n )} <-`,\n type: LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,\n tokenTypes: setOfIdentical,\n };\n });\n\n return errors;\n}\n\nexport function findInvalidGroupType(\n tokenTypes: TokenType[],\n): ILexerDefinitionError[] {\n const invalidTypes = filter(tokenTypes, (clazz: any) => {\n if (!has(clazz, \"GROUP\")) {\n return false;\n }\n const group = clazz.GROUP;\n\n return group !== Lexer.SKIPPED && group !== Lexer.NA && !isString(group);\n });\n\n const errors = map(invalidTypes, (currType) => {\n return {\n message:\n \"Token Type: ->\" +\n currType.name +\n \"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String\",\n type: LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,\n tokenTypes: [currType],\n };\n });\n\n return errors;\n}\n\nexport function findModesThatDoNotExist(\n tokenTypes: TokenType[],\n validModes: string[],\n): ILexerDefinitionError[] {\n const invalidModes = filter(tokenTypes, (clazz: any) => {\n return (\n clazz.PUSH_MODE !== undefined && !includes(validModes, clazz.PUSH_MODE)\n );\n });\n\n const errors = map(invalidModes, (tokType) => {\n const msg =\n `Token Type: ->${tokType.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${tokType.PUSH_MODE}<-` +\n `which does not exist`;\n return {\n message: msg,\n type: LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,\n tokenTypes: [tokType],\n };\n });\n\n return errors;\n}\n\nexport function findUnreachablePatterns(\n tokenTypes: TokenType[],\n): ILexerDefinitionError[] {\n const errors: ILexerDefinitionError[] = [];\n\n const canBeTested = reduce(\n tokenTypes,\n (result, tokType, idx) => {\n const pattern = tokType.PATTERN;\n\n if (pattern === Lexer.NA) {\n return result;\n }\n\n // a more comprehensive validation for all forms of regExps would require\n // deeper regExp analysis capabilities\n if (isString(pattern)) {\n result.push({ str: pattern, idx, tokenType: tokType });\n } else if (isRegExp(pattern) && noMetaChar(pattern)) {\n result.push({ str: pattern.source, idx, tokenType: tokType });\n }\n return result;\n },\n [] as { str: string; idx: number; tokenType: TokenType }[],\n );\n\n forEach(tokenTypes, (aTokType, aIdx) => {\n forEach(canBeTested, ({ str: bStr, idx: bIdx, tokenType: bTokType }) => {\n if (aIdx < bIdx && tryToMatchStrToPattern(bStr, aTokType.PATTERN)) {\n const msg =\n `Token: ->${bTokType.name}<- can never be matched.\\n` +\n `Because it appears AFTER the Token Type ->${aTokType.name}<-` +\n `in the lexer's definition.\\n` +\n `See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;\n errors.push({\n message: msg,\n type: LexerDefinitionErrorType.UNREACHABLE_PATTERN,\n tokenTypes: [aTokType, bTokType],\n });\n }\n });\n });\n\n return errors;\n}\n\nfunction tryToMatchStrToPattern(str: string, pattern: any): boolean {\n if (isRegExp(pattern)) {\n if (usesLookAheadOrBehind(pattern)) {\n // if lookahead or lookbehind assertions are used\n // we assume they would be responsible for disambiguating the match\n // The alternative is to risk false positive unreachable pattern errors.\n // e.g.: /(? regExp.source.indexOf(char) !== -1) === undefined\n );\n}\n\nfunction usesLookAheadOrBehind(regExp: RegExp): boolean {\n return /(\\(\\?=)|(\\(\\?!)|(\\(\\?<=)|(\\(\\? property in its definition\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE,\n });\n }\n if (!has(lexerDefinition, MODES)) {\n errors.push({\n message:\n \"A MultiMode Lexer cannot be initialized without a <\" +\n MODES +\n \"> property in its definition\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY,\n });\n }\n\n if (\n has(lexerDefinition, MODES) &&\n has(lexerDefinition, DEFAULT_MODE) &&\n !has(lexerDefinition.modes, lexerDefinition.defaultMode)\n ) {\n errors.push({\n message:\n `A MultiMode Lexer cannot be initialized with a ${DEFAULT_MODE}: <${lexerDefinition.defaultMode}>` +\n `which does not exist\\n`,\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST,\n });\n }\n\n if (has(lexerDefinition, MODES)) {\n forEach(lexerDefinition.modes, (currModeValue, currModeName) => {\n forEach(currModeValue, (currTokType, currIdx) => {\n if (isUndefined(currTokType)) {\n errors.push({\n message:\n `A Lexer cannot be initialized using an undefined Token Type. Mode:` +\n `<${currModeName}> at index: <${currIdx}>\\n`,\n type: LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED,\n });\n } else if (has(currTokType, \"LONGER_ALT\")) {\n const longerAlt = isArray(currTokType.LONGER_ALT)\n ? currTokType.LONGER_ALT\n : [currTokType.LONGER_ALT];\n forEach(longerAlt, (currLongerAlt) => {\n if (\n !isUndefined(currLongerAlt) &&\n !includes(currModeValue, currLongerAlt)\n ) {\n errors.push({\n message: `A MultiMode Lexer cannot be initialized with a longer_alt <${currLongerAlt.name}> on token <${currTokType.name}> outside of mode <${currModeName}>\\n`,\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE,\n });\n }\n });\n }\n });\n });\n }\n\n return errors;\n}\n\nexport function performWarningRuntimeChecks(\n lexerDefinition: IMultiModeLexerDefinition,\n trackLines: boolean,\n lineTerminatorCharacters: (number | string)[],\n): ILexerDefinitionError[] {\n const warnings = [];\n let hasAnyLineBreak = false;\n const allTokenTypes = compact(flatten(values(lexerDefinition.modes)));\n\n const concreteTokenTypes = reject(\n allTokenTypes,\n (currType) => currType[PATTERN] === Lexer.NA,\n );\n const terminatorCharCodes = getCharCodes(lineTerminatorCharacters);\n if (trackLines) {\n forEach(concreteTokenTypes, (tokType) => {\n const currIssue = checkLineBreaksIssues(tokType, terminatorCharCodes);\n if (currIssue !== false) {\n const message = buildLineBreakIssueMessage(tokType, currIssue);\n const warningDescriptor = {\n message,\n type: currIssue.issue,\n tokenType: tokType,\n };\n warnings.push(warningDescriptor);\n } else {\n // we don't want to attempt to scan if the user explicitly specified the line_breaks option.\n if (has(tokType, \"LINE_BREAKS\")) {\n if (tokType.LINE_BREAKS === true) {\n hasAnyLineBreak = true;\n }\n } else {\n if (\n canMatchCharCode(terminatorCharCodes, tokType.PATTERN as RegExp)\n ) {\n hasAnyLineBreak = true;\n }\n }\n }\n });\n }\n\n if (trackLines && !hasAnyLineBreak) {\n warnings.push({\n message:\n \"Warning: No LINE_BREAKS Found.\\n\" +\n \"\\tThis Lexer has been defined to track line and column information,\\n\" +\n \"\\tBut none of the Token Types can be identified as matching a line terminator.\\n\" +\n \"\\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \\n\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS,\n });\n }\n return warnings;\n}\n\nexport function cloneEmptyGroups(emptyGroups: {\n [groupName: string]: IToken;\n}): { [groupName: string]: IToken } {\n const clonedResult: any = {};\n const groupKeys = keys(emptyGroups);\n\n forEach(groupKeys, (currKey) => {\n const currGroupValue = emptyGroups[currKey];\n\n /* istanbul ignore else */\n if (isArray(currGroupValue)) {\n clonedResult[currKey] = [];\n } else {\n throw Error(\"non exhaustive match\");\n }\n });\n\n return clonedResult;\n}\n\n// TODO: refactor to avoid duplication\nexport function isCustomPattern(tokenType: TokenType): boolean {\n const pattern = tokenType.PATTERN;\n /* istanbul ignore else */\n if (isRegExp(pattern)) {\n return false;\n } else if (isFunction(pattern)) {\n // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object\n return true;\n } else if (has(pattern, \"exec\")) {\n // ICustomPattern\n return true;\n } else if (isString(pattern)) {\n return false;\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n\nexport function isShortPattern(pattern: any): number | false {\n if (isString(pattern) && pattern.length === 1) {\n return pattern.charCodeAt(0);\n } else {\n return false;\n }\n}\n\n/**\n * Faster than using a RegExp for default newline detection during lexing.\n */\nexport const LineTerminatorOptimizedTester: ILineTerminatorsTester = {\n // implements /\\n|\\r\\n?/g.test\n test: function (text) {\n const len = text.length;\n for (let i = this.lastIndex; i < len; i++) {\n const c = text.charCodeAt(i);\n if (c === 10) {\n this.lastIndex = i + 1;\n return true;\n } else if (c === 13) {\n if (text.charCodeAt(i + 1) === 10) {\n this.lastIndex = i + 2;\n } else {\n this.lastIndex = i + 1;\n }\n return true;\n }\n }\n return false;\n },\n\n lastIndex: 0,\n};\n\nfunction checkLineBreaksIssues(\n tokType: TokenType,\n lineTerminatorCharCodes: number[],\n):\n | {\n issue:\n | LexerDefinitionErrorType.IDENTIFY_TERMINATOR\n | LexerDefinitionErrorType.CUSTOM_LINE_BREAK;\n errMsg?: string;\n }\n | false {\n if (has(tokType, \"LINE_BREAKS\")) {\n // if the user explicitly declared the line_breaks option we will respect their choice\n // and assume it is correct.\n return false;\n } else {\n /* istanbul ignore else */\n if (isRegExp(tokType.PATTERN)) {\n try {\n // TODO: why is the casting suddenly needed?\n canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN as RegExp);\n } catch (e) {\n /* istanbul ignore next - to test this we would have to mock to throw an error */\n return {\n issue: LexerDefinitionErrorType.IDENTIFY_TERMINATOR,\n errMsg: (e as Error).message,\n };\n }\n return false;\n } else if (isString(tokType.PATTERN)) {\n // string literal patterns can always be analyzed to detect line terminator usage\n return false;\n } else if (isCustomPattern(tokType)) {\n // custom token types\n return { issue: LexerDefinitionErrorType.CUSTOM_LINE_BREAK };\n } else {\n throw Error(\"non exhaustive match\");\n }\n }\n}\n\nexport function buildLineBreakIssueMessage(\n tokType: TokenType,\n details: {\n issue:\n | LexerDefinitionErrorType.IDENTIFY_TERMINATOR\n | LexerDefinitionErrorType.CUSTOM_LINE_BREAK;\n errMsg?: string;\n },\n): string {\n /* istanbul ignore else */\n if (details.issue === LexerDefinitionErrorType.IDENTIFY_TERMINATOR) {\n return (\n \"Warning: unable to identify line terminator usage in pattern.\\n\" +\n `\\tThe problem is in the <${tokType.name}> Token Type\\n` +\n `\\t Root cause: ${details.errMsg}.\\n` +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR\"\n );\n } else if (details.issue === LexerDefinitionErrorType.CUSTOM_LINE_BREAK) {\n return (\n \"Warning: A Custom Token Pattern should specify the option.\\n\" +\n `\\tThe problem is in the <${tokType.name}> Token Type\\n` +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK\"\n );\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n\nfunction getCharCodes(charsOrCodes: (number | string)[]): number[] {\n const charCodes = map(charsOrCodes, (numOrString) => {\n if (isString(numOrString)) {\n return numOrString.charCodeAt(0);\n } else {\n return numOrString;\n }\n });\n\n return charCodes;\n}\n\nfunction addToMapOfArrays(\n map: Record,\n key: number,\n value: T,\n): void {\n if (map[key] === undefined) {\n map[key] = [value];\n } else {\n map[key].push(value);\n }\n}\n\nexport const minOptimizationVal = 256;\n\n/**\n * We are mapping charCode above ASCI (256) into buckets each in the size of 256.\n * This is because ASCI are the most common start chars so each one of those will get its own\n * possible token configs vector.\n *\n * Tokens starting with charCodes \"above\" ASCI are uncommon, so we can \"afford\"\n * to place these into buckets of possible token configs, What we gain from\n * this is avoiding the case of creating an optimization 'charCodeToPatternIdxToConfig'\n * which would contain 10,000+ arrays of small size (e.g unicode Identifiers scenario).\n * Our 'charCodeToPatternIdxToConfig' max size will now be:\n * 256 + (2^16 / 2^8) - 1 === 511\n *\n * note the hack for fast division integer part extraction\n * See: https://stackoverflow.com/a/4228528\n */\nlet charCodeToOptimizedIdxMap: number[] = [];\nexport function charCodeToOptimizedIndex(charCode: number): number {\n return charCode < minOptimizationVal\n ? charCode\n : charCodeToOptimizedIdxMap[charCode];\n}\n\n/**\n * This is a compromise between cold start / hot running performance\n * Creating this array takes ~3ms on a modern machine,\n * But if we perform the computation at runtime as needed the CSS Lexer benchmark\n * performance degrades by ~10%\n *\n * TODO: Perhaps it should be lazy initialized only if a charCode > 255 is used.\n */\nfunction initCharCodeToOptimizedIndexMap() {\n if (isEmpty(charCodeToOptimizedIdxMap)) {\n charCodeToOptimizedIdxMap = new Array(65536);\n for (let i = 0; i < 65536; i++) {\n charCodeToOptimizedIdxMap[i] = i > 255 ? 255 + ~~(i / 255) : i;\n }\n }\n}\n", "import {\n clone,\n compact,\n difference,\n flatten,\n forEach,\n has,\n includes,\n isArray,\n isEmpty,\n map,\n} from \"lodash-es\";\nimport { IToken, TokenType } from \"@chevrotain/types\";\n\nexport function tokenStructuredMatcher(\n tokInstance: IToken,\n tokConstructor: TokenType,\n) {\n const instanceType = tokInstance.tokenTypeIdx;\n if (instanceType === tokConstructor.tokenTypeIdx) {\n return true;\n } else {\n return (\n tokConstructor.isParent === true &&\n tokConstructor.categoryMatchesMap![instanceType] === true\n );\n }\n}\n\n// Optimized tokenMatcher in case our grammar does not use token categories\n// Being so tiny it is much more likely to be in-lined and this avoid the function call overhead\nexport function tokenStructuredMatcherNoCategories(\n token: IToken,\n tokType: TokenType,\n) {\n return token.tokenTypeIdx === tokType.tokenTypeIdx;\n}\n\nexport let tokenShortNameIdx = 1;\nexport const tokenIdxToClass: { [tokenIdx: number]: TokenType } = {};\n\nexport function augmentTokenTypes(tokenTypes: TokenType[]): void {\n // collect the parent Token Types as well.\n const tokenTypesAndParents = expandCategories(tokenTypes);\n\n // add required tokenType and categoryMatches properties\n assignTokenDefaultProps(tokenTypesAndParents);\n\n // fill up the categoryMatches\n assignCategoriesMapProp(tokenTypesAndParents);\n assignCategoriesTokensProp(tokenTypesAndParents);\n\n forEach(tokenTypesAndParents, (tokType) => {\n tokType.isParent = tokType.categoryMatches!.length > 0;\n });\n}\n\nexport function expandCategories(tokenTypes: TokenType[]): TokenType[] {\n let result = clone(tokenTypes);\n\n let categories = tokenTypes;\n let searching = true;\n while (searching) {\n categories = compact(\n flatten(map(categories, (currTokType) => currTokType.CATEGORIES)),\n );\n\n const newCategories = difference(categories, result);\n\n result = result.concat(newCategories);\n\n if (isEmpty(newCategories)) {\n searching = false;\n } else {\n categories = newCategories;\n }\n }\n return result;\n}\n\nexport function assignTokenDefaultProps(tokenTypes: TokenType[]): void {\n forEach(tokenTypes, (currTokType) => {\n if (!hasShortKeyProperty(currTokType)) {\n tokenIdxToClass[tokenShortNameIdx] = currTokType;\n (currTokType).tokenTypeIdx = tokenShortNameIdx++;\n }\n\n // CATEGORIES? : TokenType | TokenType[]\n if (\n hasCategoriesProperty(currTokType) &&\n !isArray(currTokType.CATEGORIES)\n // &&\n // !isUndefined(currTokType.CATEGORIES.PATTERN)\n ) {\n currTokType.CATEGORIES = [currTokType.CATEGORIES as unknown as TokenType];\n }\n\n if (!hasCategoriesProperty(currTokType)) {\n currTokType.CATEGORIES = [];\n }\n\n if (!hasExtendingTokensTypesProperty(currTokType)) {\n currTokType.categoryMatches = [];\n }\n\n if (!hasExtendingTokensTypesMapProperty(currTokType)) {\n currTokType.categoryMatchesMap = {};\n }\n });\n}\n\nexport function assignCategoriesTokensProp(tokenTypes: TokenType[]): void {\n forEach(tokenTypes, (currTokType) => {\n // avoid duplications\n currTokType.categoryMatches = [];\n forEach(currTokType.categoryMatchesMap!, (val, key) => {\n currTokType.categoryMatches!.push(\n tokenIdxToClass[key as unknown as number].tokenTypeIdx!,\n );\n });\n });\n}\n\nexport function assignCategoriesMapProp(tokenTypes: TokenType[]): void {\n forEach(tokenTypes, (currTokType) => {\n singleAssignCategoriesToksMap([], currTokType);\n });\n}\n\nexport function singleAssignCategoriesToksMap(\n path: TokenType[],\n nextNode: TokenType,\n): void {\n forEach(path, (pathNode) => {\n nextNode.categoryMatchesMap![pathNode.tokenTypeIdx!] = true;\n });\n\n forEach(nextNode.CATEGORIES, (nextCategory) => {\n const newPath = path.concat(nextNode);\n // avoids infinite loops due to cyclic categories.\n if (!includes(newPath, nextCategory)) {\n singleAssignCategoriesToksMap(newPath, nextCategory);\n }\n });\n}\n\nexport function hasShortKeyProperty(tokType: TokenType): boolean {\n return has(tokType, \"tokenTypeIdx\");\n}\n\nexport function hasCategoriesProperty(tokType: TokenType): boolean {\n return has(tokType, \"CATEGORIES\");\n}\n\nexport function hasExtendingTokensTypesProperty(tokType: TokenType): boolean {\n return has(tokType, \"categoryMatches\");\n}\n\nexport function hasExtendingTokensTypesMapProperty(\n tokType: TokenType,\n): boolean {\n return has(tokType, \"categoryMatchesMap\");\n}\n\nexport function isTokenType(tokType: TokenType): boolean {\n return has(tokType, \"tokenTypeIdx\");\n}\n", "import { ILexerErrorMessageProvider, IToken } from \"@chevrotain/types\";\n\nexport const defaultLexerErrorProvider: ILexerErrorMessageProvider = {\n buildUnableToPopLexerModeMessage(token: IToken): string {\n return `Unable to pop Lexer Mode after encountering Token ->${token.image}<- The Mode Stack is empty`;\n },\n\n buildUnexpectedCharactersMessage(\n fullText: string,\n startOffset: number,\n length: number,\n line?: number,\n column?: number,\n mode?: string,\n ): string {\n return (\n `unexpected character: ->${fullText.charAt(\n startOffset,\n )}<- at offset: ${startOffset},` + ` skipped ${length} characters.`\n );\n },\n};\n", "import {\n analyzeTokenTypes,\n charCodeToOptimizedIndex,\n cloneEmptyGroups,\n DEFAULT_MODE,\n IAnalyzeResult,\n IPatternConfig,\n LineTerminatorOptimizedTester,\n performRuntimeChecks,\n performWarningRuntimeChecks,\n SUPPORT_STICKY,\n validatePatterns,\n} from \"./lexer.js\";\nimport {\n assign,\n clone,\n forEach,\n identity,\n isArray,\n isEmpty,\n isUndefined,\n keys,\n last,\n map,\n noop,\n reduce,\n reject,\n} from \"lodash-es\";\nimport { PRINT_WARNING, timer, toFastProperties } from \"@chevrotain/utils\";\nimport { augmentTokenTypes } from \"./tokens.js\";\nimport {\n CustomPatternMatcherFunc,\n CustomPatternMatcherReturn,\n ILexerConfig,\n ILexerDefinitionError,\n ILexingError,\n IMultiModeLexerDefinition,\n IToken,\n TokenType,\n} from \"@chevrotain/types\";\nimport { defaultLexerErrorProvider } from \"./lexer_errors_public.js\";\nimport { clearRegExpParserCache } from \"./reg_exp_parser.js\";\n\nexport interface ILexingResult {\n tokens: IToken[];\n groups: { [groupName: string]: IToken[] };\n errors: ILexingError[];\n}\n\nexport enum LexerDefinitionErrorType {\n MISSING_PATTERN,\n INVALID_PATTERN,\n EOI_ANCHOR_FOUND,\n UNSUPPORTED_FLAGS_FOUND,\n DUPLICATE_PATTERNS_FOUND,\n INVALID_GROUP_TYPE_FOUND,\n PUSH_MODE_DOES_NOT_EXIST,\n MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE,\n MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY,\n MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST,\n LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED,\n SOI_ANCHOR_FOUND,\n EMPTY_MATCH_PATTERN,\n NO_LINE_BREAKS_FLAGS,\n UNREACHABLE_PATTERN,\n IDENTIFY_TERMINATOR,\n CUSTOM_LINE_BREAK,\n MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE,\n}\n\nexport interface IRegExpExec {\n exec: CustomPatternMatcherFunc;\n}\n\nconst DEFAULT_LEXER_CONFIG: Required = {\n deferDefinitionErrorsHandling: false,\n positionTracking: \"full\",\n lineTerminatorsPattern: /\\n|\\r\\n?/g,\n lineTerminatorCharacters: [\"\\n\", \"\\r\"],\n ensureOptimizations: false,\n safeMode: false,\n errorMessageProvider: defaultLexerErrorProvider,\n traceInitPerf: false,\n skipValidations: false,\n recoveryEnabled: true,\n};\n\nObject.freeze(DEFAULT_LEXER_CONFIG);\n\nexport class Lexer {\n public static SKIPPED =\n \"This marks a skipped Token pattern, this means each token identified by it will \" +\n \"be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.\";\n\n public static NA = /NOT_APPLICABLE/;\n public lexerDefinitionErrors: ILexerDefinitionError[] = [];\n public lexerDefinitionWarning: ILexerDefinitionError[] = [];\n\n protected patternIdxToConfig: Record = {};\n protected charCodeToPatternIdxToConfig: {\n [modeName: string]: { [charCode: number]: IPatternConfig[] };\n } = {};\n\n protected modes: string[] = [];\n protected defaultMode!: string;\n protected emptyGroups: { [groupName: string]: IToken } = {};\n\n private config: Required;\n private trackStartLines: boolean = true;\n private trackEndLines: boolean = true;\n private hasCustom: boolean = false;\n private canModeBeOptimized: Record = {};\n\n private traceInitPerf!: boolean | number;\n private traceInitMaxIdent!: number;\n private traceInitIndent: number;\n\n constructor(\n protected lexerDefinition: TokenType[] | IMultiModeLexerDefinition,\n config: ILexerConfig = DEFAULT_LEXER_CONFIG,\n ) {\n if (typeof config === \"boolean\") {\n throw Error(\n \"The second argument to the Lexer constructor is now an ILexerConfig Object.\\n\" +\n \"a boolean 2nd argument is no longer supported\",\n );\n }\n\n // todo: defaults func?\n this.config = assign({}, DEFAULT_LEXER_CONFIG, config) as any;\n\n const traceInitVal = this.config.traceInitPerf;\n if (traceInitVal === true) {\n this.traceInitMaxIdent = Infinity;\n this.traceInitPerf = true;\n } else if (typeof traceInitVal === \"number\") {\n this.traceInitMaxIdent = traceInitVal;\n this.traceInitPerf = true;\n }\n this.traceInitIndent = -1;\n\n this.TRACE_INIT(\"Lexer Constructor\", () => {\n let actualDefinition!: IMultiModeLexerDefinition;\n let hasOnlySingleMode = true;\n this.TRACE_INIT(\"Lexer Config handling\", () => {\n if (\n this.config.lineTerminatorsPattern ===\n DEFAULT_LEXER_CONFIG.lineTerminatorsPattern\n ) {\n // optimized built-in implementation for the defaults definition of lineTerminators\n this.config.lineTerminatorsPattern = LineTerminatorOptimizedTester;\n } else {\n if (\n this.config.lineTerminatorCharacters ===\n DEFAULT_LEXER_CONFIG.lineTerminatorCharacters\n ) {\n throw Error(\n \"Error: Missing property on the Lexer config.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS\",\n );\n }\n }\n\n if (config.safeMode && config.ensureOptimizations) {\n throw Error(\n '\"safeMode\" and \"ensureOptimizations\" flags are mutually exclusive.',\n );\n }\n\n this.trackStartLines = /full|onlyStart/i.test(\n this.config.positionTracking,\n );\n this.trackEndLines = /full/i.test(this.config.positionTracking);\n\n // Convert SingleModeLexerDefinition into a IMultiModeLexerDefinition.\n if (isArray(lexerDefinition)) {\n actualDefinition = {\n modes: { defaultMode: clone(lexerDefinition) },\n defaultMode: DEFAULT_MODE,\n };\n } else {\n // no conversion needed, input should already be a IMultiModeLexerDefinition\n hasOnlySingleMode = false;\n actualDefinition = clone(lexerDefinition);\n }\n });\n\n if (this.config.skipValidations === false) {\n this.TRACE_INIT(\"performRuntimeChecks\", () => {\n this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(\n performRuntimeChecks(\n actualDefinition,\n this.trackStartLines,\n this.config.lineTerminatorCharacters,\n ),\n );\n });\n\n this.TRACE_INIT(\"performWarningRuntimeChecks\", () => {\n this.lexerDefinitionWarning = this.lexerDefinitionWarning.concat(\n performWarningRuntimeChecks(\n actualDefinition,\n this.trackStartLines,\n this.config.lineTerminatorCharacters,\n ),\n );\n });\n }\n\n // for extra robustness to avoid throwing an none informative error message\n actualDefinition.modes = actualDefinition.modes\n ? actualDefinition.modes\n : {};\n\n // an error of undefined TokenTypes will be detected in \"performRuntimeChecks\" above.\n // this transformation is to increase robustness in the case of partially invalid lexer definition.\n forEach(actualDefinition.modes, (currModeValue, currModeName) => {\n actualDefinition.modes[currModeName] = reject(\n currModeValue,\n (currTokType) => isUndefined(currTokType),\n );\n });\n\n const allModeNames = keys(actualDefinition.modes);\n\n forEach(\n actualDefinition.modes,\n (currModDef: TokenType[], currModName) => {\n this.TRACE_INIT(`Mode: <${currModName}> processing`, () => {\n this.modes.push(currModName);\n\n if (this.config.skipValidations === false) {\n this.TRACE_INIT(`validatePatterns`, () => {\n this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(\n validatePatterns(currModDef, allModeNames),\n );\n });\n }\n\n // If definition errors were encountered, the analysis phase may fail unexpectedly/\n // Considering a lexer with definition errors may never be used, there is no point\n // to performing the analysis anyhow...\n if (isEmpty(this.lexerDefinitionErrors)) {\n augmentTokenTypes(currModDef);\n\n let currAnalyzeResult!: IAnalyzeResult;\n this.TRACE_INIT(`analyzeTokenTypes`, () => {\n currAnalyzeResult = analyzeTokenTypes(currModDef, {\n lineTerminatorCharacters:\n this.config.lineTerminatorCharacters,\n positionTracking: config.positionTracking,\n ensureOptimizations: config.ensureOptimizations,\n safeMode: config.safeMode,\n tracer: this.TRACE_INIT,\n });\n });\n\n this.patternIdxToConfig[currModName] =\n currAnalyzeResult.patternIdxToConfig;\n\n this.charCodeToPatternIdxToConfig[currModName] =\n currAnalyzeResult.charCodeToPatternIdxToConfig;\n\n this.emptyGroups = assign(\n {},\n this.emptyGroups,\n currAnalyzeResult.emptyGroups,\n ) as any;\n\n this.hasCustom = currAnalyzeResult.hasCustom || this.hasCustom;\n\n this.canModeBeOptimized[currModName] =\n currAnalyzeResult.canBeOptimized;\n }\n });\n },\n );\n\n this.defaultMode = actualDefinition.defaultMode;\n\n if (\n !isEmpty(this.lexerDefinitionErrors) &&\n !this.config.deferDefinitionErrorsHandling\n ) {\n const allErrMessages = map(this.lexerDefinitionErrors, (error) => {\n return error.message;\n });\n const allErrMessagesString = allErrMessages.join(\n \"-----------------------\\n\",\n );\n throw new Error(\n \"Errors detected in definition of Lexer:\\n\" + allErrMessagesString,\n );\n }\n\n // Only print warning if there are no errors, This will avoid pl\n forEach(this.lexerDefinitionWarning, (warningDescriptor) => {\n PRINT_WARNING(warningDescriptor.message);\n });\n\n this.TRACE_INIT(\"Choosing sub-methods implementations\", () => {\n // Choose the relevant internal implementations for this specific parser.\n // These implementations should be in-lined by the JavaScript engine\n // to provide optimal performance in each scenario.\n if (SUPPORT_STICKY) {\n this.chopInput = identity;\n this.match = this.matchWithTest;\n } else {\n this.updateLastIndex = noop;\n this.match = this.matchWithExec;\n }\n\n if (hasOnlySingleMode) {\n this.handleModes = noop;\n }\n\n if (this.trackStartLines === false) {\n this.computeNewColumn = identity;\n }\n\n if (this.trackEndLines === false) {\n this.updateTokenEndLineColumnLocation = noop;\n }\n\n if (/full/i.test(this.config.positionTracking)) {\n this.createTokenInstance = this.createFullToken;\n } else if (/onlyStart/i.test(this.config.positionTracking)) {\n this.createTokenInstance = this.createStartOnlyToken;\n } else if (/onlyOffset/i.test(this.config.positionTracking)) {\n this.createTokenInstance = this.createOffsetOnlyToken;\n } else {\n throw Error(\n `Invalid config option: \"${this.config.positionTracking}\"`,\n );\n }\n\n if (this.hasCustom) {\n this.addToken = this.addTokenUsingPush;\n this.handlePayload = this.handlePayloadWithCustom;\n } else {\n this.addToken = this.addTokenUsingMemberAccess;\n this.handlePayload = this.handlePayloadNoCustom;\n }\n });\n\n this.TRACE_INIT(\"Failed Optimization Warnings\", () => {\n const unOptimizedModes = reduce(\n this.canModeBeOptimized,\n (cannotBeOptimized, canBeOptimized, modeName) => {\n if (canBeOptimized === false) {\n cannotBeOptimized.push(modeName);\n }\n return cannotBeOptimized;\n },\n [] as string[],\n );\n\n if (config.ensureOptimizations && !isEmpty(unOptimizedModes)) {\n throw Error(\n `Lexer Modes: < ${unOptimizedModes.join(\n \", \",\n )} > cannot be optimized.\\n` +\n '\\t Disable the \"ensureOptimizations\" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\\n' +\n \"\\t Or inspect the console log for details on how to resolve these issues.\",\n );\n }\n });\n\n this.TRACE_INIT(\"clearRegExpParserCache\", () => {\n clearRegExpParserCache();\n });\n\n this.TRACE_INIT(\"toFastProperties\", () => {\n toFastProperties(this);\n });\n });\n }\n\n public tokenize(\n text: string,\n initialMode: string = this.defaultMode,\n ): ILexingResult {\n if (!isEmpty(this.lexerDefinitionErrors)) {\n const allErrMessages = map(this.lexerDefinitionErrors, (error) => {\n return error.message;\n });\n const allErrMessagesString = allErrMessages.join(\n \"-----------------------\\n\",\n );\n throw new Error(\n \"Unable to Tokenize because Errors detected in definition of Lexer:\\n\" +\n allErrMessagesString,\n );\n }\n\n return this.tokenizeInternal(text, initialMode);\n }\n\n // There is quite a bit of duplication between this and \"tokenizeInternalLazy\"\n // This is intentional due to performance considerations.\n // this method also used quite a bit of `!` none null assertions because it is too optimized\n // for `tsc` to always understand it is \"safe\"\n private tokenizeInternal(text: string, initialMode: string): ILexingResult {\n let i,\n j,\n k,\n matchAltImage,\n longerAlt,\n matchedImage: string | null,\n payload,\n altPayload,\n imageLength,\n group,\n tokType,\n newToken: IToken,\n errLength,\n droppedChar,\n msg,\n match;\n const orgText = text;\n const orgLength = orgText.length;\n let offset = 0;\n let matchedTokensIndex = 0;\n // initializing the tokensArray to the \"guessed\" size.\n // guessing too little will still reduce the number of array re-sizes on pushes.\n // guessing too large (Tested by guessing x4 too large) may cost a bit more of memory\n // but would still have a faster runtime by avoiding (All but one) array resizing.\n const guessedNumberOfTokens = this.hasCustom\n ? 0 // will break custom token pattern APIs the matchedTokens array will contain undefined elements.\n : Math.floor(text.length / 10);\n const matchedTokens = new Array(guessedNumberOfTokens);\n const errors: ILexingError[] = [];\n let line = this.trackStartLines ? 1 : undefined;\n let column = this.trackStartLines ? 1 : undefined;\n const groups: any = cloneEmptyGroups(this.emptyGroups);\n const trackLines = this.trackStartLines;\n const lineTerminatorPattern = this.config.lineTerminatorsPattern;\n\n let currModePatternsLength = 0;\n let patternIdxToConfig: IPatternConfig[] = [];\n let currCharCodeToPatternIdxToConfig: {\n [charCode: number]: IPatternConfig[];\n } = [];\n\n const modeStack: string[] = [];\n\n const emptyArray: IPatternConfig[] = [];\n Object.freeze(emptyArray);\n let getPossiblePatterns!: (charCode: number) => IPatternConfig[];\n\n function getPossiblePatternsSlow() {\n return patternIdxToConfig;\n }\n\n function getPossiblePatternsOptimized(charCode: number): IPatternConfig[] {\n const optimizedCharIdx = charCodeToOptimizedIndex(charCode);\n const possiblePatterns =\n currCharCodeToPatternIdxToConfig[optimizedCharIdx];\n if (possiblePatterns === undefined) {\n return emptyArray;\n } else {\n return possiblePatterns;\n }\n }\n\n const pop_mode = (popToken: IToken) => {\n // TODO: perhaps avoid this error in the edge case there is no more input?\n if (\n modeStack.length === 1 &&\n // if we have both a POP_MODE and a PUSH_MODE this is in-fact a \"transition\"\n // So no error should occur.\n popToken.tokenType.PUSH_MODE === undefined\n ) {\n // if we try to pop the last mode there lexer will no longer have ANY mode.\n // thus the pop is ignored, an error will be created and the lexer will continue parsing in the previous mode.\n const msg =\n this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(\n popToken,\n );\n\n errors.push({\n offset: popToken.startOffset,\n line: popToken.startLine,\n column: popToken.startColumn,\n length: popToken.image.length,\n message: msg,\n });\n } else {\n modeStack.pop();\n const newMode = last(modeStack)!;\n patternIdxToConfig = this.patternIdxToConfig[newMode];\n currCharCodeToPatternIdxToConfig =\n this.charCodeToPatternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n const modeCanBeOptimized =\n this.canModeBeOptimized[newMode] && this.config.safeMode === false;\n\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n } else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n };\n\n function push_mode(this: Lexer, newMode: string) {\n modeStack.push(newMode);\n currCharCodeToPatternIdxToConfig =\n this.charCodeToPatternIdxToConfig[newMode];\n\n patternIdxToConfig = this.patternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n\n currModePatternsLength = patternIdxToConfig.length;\n const modeCanBeOptimized =\n this.canModeBeOptimized[newMode] && this.config.safeMode === false;\n\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n } else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n\n // this pattern seems to avoid a V8 de-optimization, although that de-optimization does not\n // seem to matter performance wise.\n push_mode.call(this, initialMode);\n\n let currConfig!: IPatternConfig;\n\n const recoveryEnabled = this.config.recoveryEnabled;\n\n while (offset < orgLength) {\n matchedImage = null;\n\n const nextCharCode = orgText.charCodeAt(offset);\n const chosenPatternIdxToConfig = getPossiblePatterns(nextCharCode);\n const chosenPatternsLength = chosenPatternIdxToConfig.length;\n\n for (i = 0; i < chosenPatternsLength; i++) {\n currConfig = chosenPatternIdxToConfig[i];\n const currPattern = currConfig.pattern;\n payload = null;\n\n // manually in-lined because > 600 chars won't be in-lined in V8\n const singleCharCode = currConfig.short;\n if (singleCharCode !== false) {\n if (nextCharCode === singleCharCode) {\n // single character string\n matchedImage = currPattern as string;\n }\n } else if (currConfig.isCustom === true) {\n match = (currPattern as IRegExpExec).exec(\n orgText,\n offset,\n matchedTokens,\n groups,\n );\n if (match !== null) {\n matchedImage = match[0];\n if ((match as CustomPatternMatcherReturn).payload !== undefined) {\n payload = (match as CustomPatternMatcherReturn).payload;\n }\n } else {\n matchedImage = null;\n }\n } else {\n this.updateLastIndex(currPattern as RegExp, offset);\n matchedImage = this.match(currPattern as RegExp, text, offset);\n }\n\n if (matchedImage !== null) {\n // even though this pattern matched we must try a another longer alternative.\n // this can be used to prioritize keywords over identifiers\n longerAlt = currConfig.longerAlt;\n if (longerAlt !== undefined) {\n // TODO: micro optimize, avoid extra prop access\n // by saving/linking longerAlt on the original config?\n const longerAltLength = longerAlt.length;\n for (k = 0; k < longerAltLength; k++) {\n const longerAltConfig = patternIdxToConfig[longerAlt[k]];\n const longerAltPattern = longerAltConfig.pattern;\n altPayload = null;\n\n // single Char can never be a longer alt so no need to test it.\n // manually in-lined because > 600 chars won't be in-lined in V8\n if (longerAltConfig.isCustom === true) {\n match = (longerAltPattern as IRegExpExec).exec(\n orgText,\n offset,\n matchedTokens,\n groups,\n );\n if (match !== null) {\n matchAltImage = match[0];\n if (\n (match as CustomPatternMatcherReturn).payload !== undefined\n ) {\n altPayload = (match as CustomPatternMatcherReturn).payload;\n }\n } else {\n matchAltImage = null;\n }\n } else {\n this.updateLastIndex(longerAltPattern as RegExp, offset);\n matchAltImage = this.match(\n longerAltPattern as RegExp,\n text,\n offset,\n );\n }\n\n if (matchAltImage && matchAltImage.length > matchedImage.length) {\n matchedImage = matchAltImage;\n payload = altPayload;\n currConfig = longerAltConfig;\n // Exit the loop early after matching one of the longer alternatives\n // The first matched alternative takes precedence\n break;\n }\n }\n }\n break;\n }\n }\n\n // successful match\n if (matchedImage !== null) {\n imageLength = matchedImage.length;\n group = currConfig.group;\n if (group !== undefined) {\n tokType = currConfig.tokenTypeIdx;\n // TODO: \"offset + imageLength\" and the new column may be computed twice in case of \"full\" location information inside\n // createFullToken method\n newToken = this.createTokenInstance(\n matchedImage,\n offset,\n tokType,\n currConfig.tokenType,\n line,\n column,\n imageLength,\n );\n\n this.handlePayload(newToken, payload);\n\n // TODO: optimize NOOP in case there are no special groups?\n if (group === false) {\n matchedTokensIndex = this.addToken(\n matchedTokens,\n matchedTokensIndex,\n newToken,\n );\n } else {\n groups[group].push(newToken);\n }\n }\n text = this.chopInput(text, imageLength);\n offset = offset + imageLength;\n\n // TODO: with newlines the column may be assigned twice\n column = this.computeNewColumn(column!, imageLength);\n\n if (trackLines === true && currConfig.canLineTerminator === true) {\n let numOfLTsInMatch = 0;\n let foundTerminator;\n let lastLTEndOffset: number;\n lineTerminatorPattern.lastIndex = 0;\n do {\n foundTerminator = lineTerminatorPattern.test(matchedImage);\n if (foundTerminator === true) {\n lastLTEndOffset = lineTerminatorPattern.lastIndex - 1;\n numOfLTsInMatch++;\n }\n } while (foundTerminator === true);\n\n if (numOfLTsInMatch !== 0) {\n line = line! + numOfLTsInMatch;\n column = imageLength - lastLTEndOffset!;\n this.updateTokenEndLineColumnLocation(\n newToken!,\n group!,\n lastLTEndOffset!,\n numOfLTsInMatch,\n line,\n column,\n imageLength,\n );\n }\n }\n // will be NOOP if no modes present\n this.handleModes(currConfig, pop_mode, push_mode, newToken!);\n } else {\n // error recovery, drop characters until we identify a valid token's start point\n const errorStartOffset = offset;\n const errorLine = line;\n const errorColumn = column;\n let foundResyncPoint = recoveryEnabled === false;\n\n while (foundResyncPoint === false && offset < orgLength) {\n // Identity Func (when sticky flag is enabled)\n text = this.chopInput(text, 1);\n offset++;\n for (j = 0; j < currModePatternsLength; j++) {\n const currConfig = patternIdxToConfig[j];\n const currPattern = currConfig.pattern;\n\n // manually in-lined because > 600 chars won't be in-lined in V8\n const singleCharCode = currConfig.short;\n if (singleCharCode !== false) {\n if (orgText.charCodeAt(offset) === singleCharCode) {\n // single character string\n foundResyncPoint = true;\n }\n } else if (currConfig.isCustom === true) {\n foundResyncPoint =\n (currPattern as IRegExpExec).exec(\n orgText,\n offset,\n matchedTokens,\n groups,\n ) !== null;\n } else {\n this.updateLastIndex(currPattern as RegExp, offset);\n foundResyncPoint = (currPattern as RegExp).exec(text) !== null;\n }\n\n if (foundResyncPoint === true) {\n break;\n }\n }\n }\n\n errLength = offset - errorStartOffset;\n column = this.computeNewColumn(column!, errLength);\n // at this point we either re-synced or reached the end of the input text\n msg = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(\n orgText,\n errorStartOffset,\n errLength,\n errorLine,\n errorColumn,\n last(modeStack),\n );\n errors.push({\n offset: errorStartOffset,\n line: errorLine,\n column: errorColumn,\n length: errLength,\n message: msg,\n });\n\n if (recoveryEnabled === false) {\n break;\n }\n }\n }\n\n // if we do have custom patterns which push directly into the\n // TODO: custom tokens should not push directly??\n if (!this.hasCustom) {\n // if we guessed a too large size for the tokens array this will shrink it to the right size.\n matchedTokens.length = matchedTokensIndex;\n }\n\n return {\n tokens: matchedTokens,\n groups: groups,\n errors: errors,\n };\n }\n\n private handleModes(\n config: IPatternConfig,\n pop_mode: (tok: IToken) => void,\n push_mode: (this: Lexer, pushMode: string) => void,\n newToken: IToken,\n ) {\n if (config.pop === true) {\n // need to save the PUSH_MODE property as if the mode is popped\n // patternIdxToPopMode is updated to reflect the new mode after popping the stack\n const pushMode = config.push;\n pop_mode(newToken);\n if (pushMode !== undefined) {\n push_mode.call(this, pushMode);\n }\n } else if (config.push !== undefined) {\n push_mode.call(this, config.push);\n }\n }\n\n private chopInput(text: string, length: number): string {\n return text.substring(length);\n }\n\n private updateLastIndex(regExp: RegExp, newLastIndex: number): void {\n regExp.lastIndex = newLastIndex;\n }\n\n // TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler\n private updateTokenEndLineColumnLocation(\n newToken: IToken,\n group: string | false,\n lastLTIdx: number,\n numOfLTsInMatch: number,\n line: number,\n column: number,\n imageLength: number,\n ): void {\n let lastCharIsLT, fixForEndingInLT;\n if (group !== undefined) {\n // a none skipped multi line Token, need to update endLine/endColumn\n lastCharIsLT = lastLTIdx === imageLength - 1;\n fixForEndingInLT = lastCharIsLT ? -1 : 0;\n if (!(numOfLTsInMatch === 1 && lastCharIsLT === true)) {\n // if a token ends in a LT that last LT only affects the line numbering of following Tokens\n newToken.endLine = line + fixForEndingInLT;\n // the last LT in a token does not affect the endColumn either as the [columnStart ... columnEnd)\n // inclusive to exclusive range.\n newToken.endColumn = column - 1 + -fixForEndingInLT;\n }\n // else single LT in the last character of a token, no need to modify the endLine/EndColumn\n }\n }\n\n private computeNewColumn(oldColumn: number, imageLength: number) {\n return oldColumn + imageLength;\n }\n\n // Place holder, will be replaced by the correct variant according to the locationTracking option at runtime.\n /* istanbul ignore next - place holder */\n private createTokenInstance!: (...args: any[]) => IToken;\n\n private createOffsetOnlyToken(\n image: string,\n startOffset: number,\n tokenTypeIdx: number,\n tokenType: TokenType,\n ) {\n return {\n image,\n startOffset,\n tokenTypeIdx,\n tokenType,\n };\n }\n\n private createStartOnlyToken(\n image: string,\n startOffset: number,\n tokenTypeIdx: number,\n tokenType: TokenType,\n startLine: number,\n startColumn: number,\n ) {\n return {\n image,\n startOffset,\n startLine,\n startColumn,\n tokenTypeIdx,\n tokenType,\n };\n }\n\n private createFullToken(\n image: string,\n startOffset: number,\n tokenTypeIdx: number,\n tokenType: TokenType,\n startLine: number,\n startColumn: number,\n imageLength: number,\n ): IToken {\n return {\n image,\n startOffset,\n endOffset: startOffset + imageLength - 1,\n startLine,\n endLine: startLine,\n startColumn,\n endColumn: startColumn + imageLength - 1,\n tokenTypeIdx,\n tokenType,\n };\n }\n\n // Place holder, will be replaced by the correct variant according to the locationTracking option at runtime.\n /* istanbul ignore next - place holder */\n private addToken!: (\n tokenVector: IToken[],\n index: number,\n tokenToAdd: IToken,\n ) => number;\n\n private addTokenUsingPush(\n tokenVector: IToken[],\n index: number,\n tokenToAdd: IToken,\n ): number {\n tokenVector.push(tokenToAdd);\n return index;\n }\n\n private addTokenUsingMemberAccess(\n tokenVector: IToken[],\n index: number,\n tokenToAdd: IToken,\n ): number {\n tokenVector[index] = tokenToAdd;\n index++;\n return index;\n }\n\n // Place holder, will be replaced by the correct variant according to the hasCustom flag option at runtime.\n private handlePayload: (token: IToken, payload: any) => void;\n\n private handlePayloadNoCustom(token: IToken, payload: any): void {}\n\n private handlePayloadWithCustom(token: IToken, payload: any): void {\n if (payload !== null) {\n token.payload = payload;\n }\n }\n\n // place holder to be replaced with chosen alternative at runtime\n private match!: (\n pattern: RegExp,\n text: string,\n offset: number,\n ) => string | null;\n\n private matchWithTest(\n pattern: RegExp,\n text: string,\n offset: number,\n ): string | null {\n const found = pattern.test(text);\n if (found === true) {\n return text.substring(offset, pattern.lastIndex);\n }\n return null;\n }\n\n private matchWithExec(pattern: RegExp, text: string): string | null {\n const regExpArray = pattern.exec(text);\n return regExpArray !== null ? regExpArray[0] : null;\n }\n\n // Duplicated from the parser's perf trace trait to allow future extraction\n // of the lexer to a separate package.\n TRACE_INIT = (phaseDesc: string, phaseImpl: () => T): T => {\n // No need to optimize this using NOOP pattern because\n // It is not called in a hot spot...\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n const indent = new Array(this.traceInitIndent + 1).join(\"\\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(`${indent}--> <${phaseDesc}>`);\n }\n const { time, value } = timer(phaseImpl);\n /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */\n const traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(`${indent}<-- <${phaseDesc}> time: ${time}ms`);\n }\n this.traceInitIndent--;\n return value;\n } else {\n return phaseImpl();\n }\n };\n}\n", "import { has, isString, isUndefined } from \"lodash-es\";\nimport { Lexer } from \"./lexer_public.js\";\nimport { augmentTokenTypes, tokenStructuredMatcher } from \"./tokens.js\";\nimport { IToken, ITokenConfig, TokenType } from \"@chevrotain/types\";\n\nexport function tokenLabel(tokType: TokenType): string {\n if (hasTokenLabel(tokType)) {\n return tokType.LABEL;\n } else {\n return tokType.name;\n }\n}\n\nexport function tokenName(tokType: TokenType): string {\n return tokType.name;\n}\n\nexport function hasTokenLabel(\n obj: TokenType,\n): obj is TokenType & Pick, \"LABEL\"> {\n return isString(obj.LABEL) && obj.LABEL !== \"\";\n}\n\nconst PARENT = \"parent\";\nconst CATEGORIES = \"categories\";\nconst LABEL = \"label\";\nconst GROUP = \"group\";\nconst PUSH_MODE = \"push_mode\";\nconst POP_MODE = \"pop_mode\";\nconst LONGER_ALT = \"longer_alt\";\nconst LINE_BREAKS = \"line_breaks\";\nconst START_CHARS_HINT = \"start_chars_hint\";\n\nexport function createToken(config: ITokenConfig): TokenType {\n return createTokenInternal(config);\n}\n\nfunction createTokenInternal(config: ITokenConfig): TokenType {\n const pattern = config.pattern;\n\n const tokenType: TokenType = {};\n tokenType.name = config.name;\n\n if (!isUndefined(pattern)) {\n tokenType.PATTERN = pattern;\n }\n\n if (has(config, PARENT)) {\n throw (\n \"The parent property is no longer supported.\\n\" +\n \"See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.\"\n );\n }\n\n if (has(config, CATEGORIES)) {\n // casting to ANY as this will be fixed inside `augmentTokenTypes``\n tokenType.CATEGORIES = config[CATEGORIES];\n }\n\n augmentTokenTypes([tokenType]);\n\n if (has(config, LABEL)) {\n tokenType.LABEL = config[LABEL];\n }\n\n if (has(config, GROUP)) {\n tokenType.GROUP = config[GROUP];\n }\n\n if (has(config, POP_MODE)) {\n tokenType.POP_MODE = config[POP_MODE];\n }\n\n if (has(config, PUSH_MODE)) {\n tokenType.PUSH_MODE = config[PUSH_MODE];\n }\n\n if (has(config, LONGER_ALT)) {\n tokenType.LONGER_ALT = config[LONGER_ALT];\n }\n\n if (has(config, LINE_BREAKS)) {\n tokenType.LINE_BREAKS = config[LINE_BREAKS];\n }\n\n if (has(config, START_CHARS_HINT)) {\n tokenType.START_CHARS_HINT = config[START_CHARS_HINT];\n }\n\n return tokenType;\n}\n\nexport const EOF = createToken({ name: \"EOF\", pattern: Lexer.NA });\naugmentTokenTypes([EOF]);\n\nexport function createTokenInstance(\n tokType: TokenType,\n image: string,\n startOffset: number,\n endOffset: number,\n startLine: number,\n endLine: number,\n startColumn: number,\n endColumn: number,\n): IToken {\n return {\n image,\n startOffset,\n endOffset,\n startLine,\n endLine,\n startColumn,\n endColumn,\n tokenTypeIdx: (tokType).tokenTypeIdx,\n tokenType: tokType,\n };\n}\n\nexport function tokenMatcher(token: IToken, tokType: TokenType): boolean {\n return tokenStructuredMatcher(token, tokType);\n}\n", "import { hasTokenLabel, tokenLabel } from \"../scan/tokens_public.js\";\nimport { first, map, reduce } from \"lodash-es\";\nimport {\n Alternation,\n getProductionDslName,\n NonTerminal,\n Rule,\n Terminal,\n} from \"@chevrotain/gast\";\nimport {\n IParserErrorMessageProvider,\n IProductionWithOccurrence,\n TokenType,\n} from \"@chevrotain/types\";\nimport {\n IGrammarResolverErrorMessageProvider,\n IGrammarValidatorErrorMessageProvider,\n} from \"./grammar/types.js\";\n\nexport const defaultParserErrorProvider: IParserErrorMessageProvider = {\n buildMismatchTokenMessage({ expected, actual, previous, ruleName }): string {\n const hasLabel = hasTokenLabel(expected);\n const expectedMsg = hasLabel\n ? `--> ${tokenLabel(expected)} <--`\n : `token of type --> ${expected.name} <--`;\n\n const msg = `Expecting ${expectedMsg} but found --> '${actual.image}' <--`;\n\n return msg;\n },\n\n buildNotAllInputParsedMessage({ firstRedundant, ruleName }): string {\n return \"Redundant input, expecting EOF but found: \" + firstRedundant.image;\n },\n\n buildNoViableAltMessage({\n expectedPathsPerAlt,\n actual,\n previous,\n customUserDescription,\n ruleName,\n }): string {\n const errPrefix = \"Expecting: \";\n // TODO: issue: No Viable Alternative Error may have incomplete details. #502\n const actualText = first(actual)!.image;\n const errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n } else {\n const allLookAheadPaths = reduce(\n expectedPathsPerAlt,\n (result, currAltPaths) => result.concat(currAltPaths),\n [] as TokenType[][],\n );\n const nextValidTokenSequences = map(\n allLookAheadPaths,\n (currPath) =>\n `[${map(currPath, (currTokenType) => tokenLabel(currTokenType)).join(\n \", \",\n )}]`,\n );\n const nextValidSequenceItems = map(\n nextValidTokenSequences,\n (itemMsg, idx) => ` ${idx + 1}. ${itemMsg}`,\n );\n const calculatedDescription = `one of these possible Token sequences:\\n${nextValidSequenceItems.join(\n \"\\n\",\n )}`;\n\n return errPrefix + calculatedDescription + errSuffix;\n }\n },\n\n buildEarlyExitMessage({\n expectedIterationPaths,\n actual,\n customUserDescription,\n ruleName,\n }): string {\n const errPrefix = \"Expecting: \";\n // TODO: issue: No Viable Alternative Error may have incomplete details. #502\n const actualText = first(actual)!.image;\n const errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n } else {\n const nextValidTokenSequences = map(\n expectedIterationPaths,\n (currPath) =>\n `[${map(currPath, (currTokenType) => tokenLabel(currTokenType)).join(\n \",\",\n )}]`,\n );\n const calculatedDescription =\n `expecting at least one iteration which starts with one of these possible Token sequences::\\n ` +\n `<${nextValidTokenSequences.join(\" ,\")}>`;\n\n return errPrefix + calculatedDescription + errSuffix;\n }\n },\n};\n\nObject.freeze(defaultParserErrorProvider);\n\nexport const defaultGrammarResolverErrorProvider: IGrammarResolverErrorMessageProvider =\n {\n buildRuleNotFoundError(\n topLevelRule: Rule,\n undefinedRule: NonTerminal,\n ): string {\n const msg =\n \"Invalid grammar, reference to a rule which is not defined: ->\" +\n undefinedRule.nonTerminalName +\n \"<-\\n\" +\n \"inside top level rule: ->\" +\n topLevelRule.name +\n \"<-\";\n return msg;\n },\n };\n\nexport const defaultGrammarValidatorErrorProvider: IGrammarValidatorErrorMessageProvider =\n {\n buildDuplicateFoundError(\n topLevelRule: Rule,\n duplicateProds: IProductionWithOccurrence[],\n ): string {\n function getExtraProductionArgument(\n prod: IProductionWithOccurrence,\n ): string {\n if (prod instanceof Terminal) {\n return prod.terminalType.name;\n } else if (prod instanceof NonTerminal) {\n return prod.nonTerminalName;\n } else {\n return \"\";\n }\n }\n\n const topLevelName = topLevelRule.name;\n const duplicateProd = first(duplicateProds)!;\n const index = duplicateProd.idx;\n const dslName = getProductionDslName(duplicateProd);\n const extraArgument = getExtraProductionArgument(duplicateProd);\n\n const hasExplicitIndex = index > 0;\n let msg = `->${dslName}${hasExplicitIndex ? index : \"\"}<- ${\n extraArgument ? `with argument: ->${extraArgument}<-` : \"\"\n }\n appears more than once (${\n duplicateProds.length\n } times) in the top level rule: ->${topLevelName}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;\n\n // white space trimming time! better to trim afterwards as it allows to use WELL formatted multi line template strings...\n msg = msg.replace(/[ \\t]+/g, \" \");\n msg = msg.replace(/\\s\\s+/g, \"\\n\");\n\n return msg;\n },\n\n buildNamespaceConflictError(rule: Rule): string {\n const errMsg =\n `Namespace conflict found in grammar.\\n` +\n `The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${rule.name}>.\\n` +\n `To resolve this make sure each Terminal and Non-Terminal names are unique\\n` +\n `This is easy to accomplish by using the convention that Terminal names start with an uppercase letter\\n` +\n `and Non-Terminal names start with a lower case letter.`;\n\n return errMsg;\n },\n\n buildAlternationPrefixAmbiguityError(options: {\n topLevelRule: Rule;\n prefixPath: TokenType[];\n ambiguityIndices: number[];\n alternation: Alternation;\n }): string {\n const pathMsg = map(options.prefixPath, (currTok) =>\n tokenLabel(currTok),\n ).join(\", \");\n const occurrence =\n options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n const errMsg =\n `Ambiguous alternatives: <${options.ambiguityIndices.join(\n \" ,\",\n )}> due to common lookahead prefix\\n` +\n `in inside <${options.topLevelRule.name}> Rule,\\n` +\n `<${pathMsg}> may appears as a prefix path in all these alternatives.\\n` +\n `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\\n` +\n `For Further details.`;\n\n return errMsg;\n },\n\n buildAlternationAmbiguityError(options: {\n topLevelRule: Rule;\n prefixPath: TokenType[];\n ambiguityIndices: number[];\n alternation: Alternation;\n }): string {\n const pathMsg = map(options.prefixPath, (currtok) =>\n tokenLabel(currtok),\n ).join(\", \");\n const occurrence =\n options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n let currMessage =\n `Ambiguous Alternatives Detected: <${options.ambiguityIndices.join(\n \" ,\",\n )}> in ` +\n ` inside <${options.topLevelRule.name}> Rule,\\n` +\n `<${pathMsg}> may appears as a prefix path in all these alternatives.\\n`;\n\n currMessage =\n currMessage +\n `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\\n` +\n `For Further details.`;\n return currMessage;\n },\n\n buildEmptyRepetitionError(options: {\n topLevelRule: Rule;\n repetition: IProductionWithOccurrence;\n }): string {\n let dslName = getProductionDslName(options.repetition);\n if (options.repetition.idx !== 0) {\n dslName += options.repetition.idx;\n }\n\n const errMsg =\n `The repetition <${dslName}> within Rule <${options.topLevelRule.name}> can never consume any tokens.\\n` +\n `This could lead to an infinite loop.`;\n\n return errMsg;\n },\n\n // TODO: remove - `errors_public` from nyc.config.js exclude\n // once this method is fully removed from this file\n buildTokenNameError(options: {\n tokenType: TokenType;\n expectedPattern: RegExp;\n }): string {\n /* istanbul ignore next */\n return \"deprecated\";\n },\n\n buildEmptyAlternationError(options: {\n topLevelRule: Rule;\n alternation: Alternation;\n emptyChoiceIdx: number;\n }): string {\n const errMsg =\n `Ambiguous empty alternative: <${options.emptyChoiceIdx + 1}>` +\n ` in inside <${options.topLevelRule.name}> Rule.\\n` +\n `Only the last alternative may be an empty alternative.`;\n\n return errMsg;\n },\n\n buildTooManyAlternativesError(options: {\n topLevelRule: Rule;\n alternation: Alternation;\n }): string {\n const errMsg =\n `An Alternation cannot have more than 256 alternatives:\\n` +\n ` inside <${\n options.topLevelRule.name\n }> Rule.\\n has ${\n options.alternation.definition.length + 1\n } alternatives.`;\n\n return errMsg;\n },\n\n buildLeftRecursionError(options: {\n topLevelRule: Rule;\n leftRecursionPath: Rule[];\n }): string {\n const ruleName = options.topLevelRule.name;\n const pathNames = map(\n options.leftRecursionPath,\n (currRule) => currRule.name,\n );\n const leftRecursivePath = `${ruleName} --> ${pathNames\n .concat([ruleName])\n .join(\" --> \")}`;\n const errMsg =\n `Left Recursion found in grammar.\\n` +\n `rule: <${ruleName}> can be invoked from itself (directly or indirectly)\\n` +\n `without consuming any Tokens. The grammar path that causes this is: \\n ${leftRecursivePath}\\n` +\n ` To fix this refactor your grammar to remove the left recursion.\\n` +\n `see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;\n\n return errMsg;\n },\n\n // TODO: remove - `errors_public` from nyc.config.js exclude\n // once this method is fully removed from this file\n buildInvalidRuleNameError(options: {\n topLevelRule: Rule;\n expectedPattern: RegExp;\n }): string {\n /* istanbul ignore next */\n return \"deprecated\";\n },\n\n buildDuplicateRuleNameError(options: {\n topLevelRule: Rule | string;\n grammarName: string;\n }): string {\n let ruleName;\n if (options.topLevelRule instanceof Rule) {\n ruleName = options.topLevelRule.name;\n } else {\n ruleName = options.topLevelRule;\n }\n\n const errMsg = `Duplicate definition, rule: ->${ruleName}<- is already defined in the grammar: ->${options.grammarName}<-`;\n\n return errMsg;\n },\n };\n", "import {\n IParserUnresolvedRefDefinitionError,\n ParserDefinitionErrorType,\n} from \"../parser/parser.js\";\nimport { forEach, values } from \"lodash-es\";\nimport { GAstVisitor, NonTerminal, Rule } from \"@chevrotain/gast\";\nimport {\n IGrammarResolverErrorMessageProvider,\n IParserDefinitionError,\n} from \"./types.js\";\n\nexport function resolveGrammar(\n topLevels: Record,\n errMsgProvider: IGrammarResolverErrorMessageProvider,\n): IParserDefinitionError[] {\n const refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider);\n refResolver.resolveRefs();\n return refResolver.errors;\n}\n\nexport class GastRefResolverVisitor extends GAstVisitor {\n public errors: IParserUnresolvedRefDefinitionError[] = [];\n private currTopLevel: Rule;\n\n constructor(\n private nameToTopRule: Record,\n private errMsgProvider: IGrammarResolverErrorMessageProvider,\n ) {\n super();\n }\n\n public resolveRefs(): void {\n forEach(values(this.nameToTopRule), (prod) => {\n this.currTopLevel = prod;\n prod.accept(this);\n });\n }\n\n public visitNonTerminal(node: NonTerminal): void {\n const ref = this.nameToTopRule[node.nonTerminalName];\n\n if (!ref) {\n const msg = this.errMsgProvider.buildRuleNotFoundError(\n this.currTopLevel,\n node,\n );\n this.errors.push({\n message: msg,\n type: ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,\n ruleName: this.currTopLevel.name,\n unresolvedRefName: node.nonTerminalName,\n });\n } else {\n node.referencedRule = ref;\n }\n }\n}\n", "import {\n clone,\n drop,\n dropRight,\n first as _first,\n forEach,\n isEmpty,\n last,\n} from \"lodash-es\";\nimport { first } from \"./first.js\";\nimport { RestWalker } from \"./rest.js\";\nimport { TokenMatcher } from \"../parser/parser.js\";\nimport {\n Alternation,\n Alternative,\n NonTerminal,\n Option,\n Repetition,\n RepetitionMandatory,\n RepetitionMandatoryWithSeparator,\n RepetitionWithSeparator,\n Rule,\n Terminal,\n} from \"@chevrotain/gast\";\nimport {\n IGrammarPath,\n IProduction,\n ISyntacticContentAssistPath,\n IToken,\n ITokenGrammarPath,\n TokenType,\n} from \"@chevrotain/types\";\n\nexport abstract class AbstractNextPossibleTokensWalker extends RestWalker {\n protected possibleTokTypes: TokenType[] = [];\n protected ruleStack: string[];\n protected occurrenceStack: number[];\n\n protected nextProductionName = \"\";\n protected nextProductionOccurrence = 0;\n protected found = false;\n protected isAtEndOfPath = false;\n\n constructor(\n protected topProd: Rule,\n protected path: IGrammarPath,\n ) {\n super();\n }\n\n startWalking(): TokenType[] {\n this.found = false;\n\n if (this.path.ruleStack[0] !== this.topProd.name) {\n throw Error(\"The path does not start with the walker's top Rule!\");\n }\n\n // immutable for the win\n this.ruleStack = clone(this.path.ruleStack).reverse(); // intelij bug requires assertion\n this.occurrenceStack = clone(this.path.occurrenceStack).reverse(); // intelij bug requires assertion\n\n // already verified that the first production is valid, we now seek the 2nd production\n this.ruleStack.pop();\n this.occurrenceStack.pop();\n\n this.updateExpectedNext();\n this.walk(this.topProd);\n\n return this.possibleTokTypes;\n }\n\n walk(\n prod: { definition: IProduction[] },\n prevRest: IProduction[] = [],\n ): void {\n // stop scanning once we found the path\n if (!this.found) {\n super.walk(prod, prevRest);\n }\n }\n\n walkProdRef(\n refProd: NonTerminal,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n // found the next production, need to keep walking in it\n if (\n refProd.referencedRule.name === this.nextProductionName &&\n refProd.idx === this.nextProductionOccurrence\n ) {\n const fullRest = currRest.concat(prevRest);\n this.updateExpectedNext();\n this.walk(refProd.referencedRule, fullRest);\n }\n }\n\n updateExpectedNext(): void {\n // need to consume the Terminal\n if (isEmpty(this.ruleStack)) {\n // must reset nextProductionXXX to avoid walking down another Top Level production while what we are\n // really seeking is the last Terminal...\n this.nextProductionName = \"\";\n this.nextProductionOccurrence = 0;\n this.isAtEndOfPath = true;\n } else {\n this.nextProductionName = this.ruleStack.pop()!;\n this.nextProductionOccurrence = this.occurrenceStack.pop()!;\n }\n }\n}\n\nexport class NextAfterTokenWalker extends AbstractNextPossibleTokensWalker {\n private nextTerminalName = \"\";\n private nextTerminalOccurrence = 0;\n\n constructor(\n topProd: Rule,\n protected path: ITokenGrammarPath,\n ) {\n super(topProd, path);\n this.nextTerminalName = this.path.lastTok.name;\n this.nextTerminalOccurrence = this.path.lastTokOccurrence;\n }\n\n walkTerminal(\n terminal: Terminal,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (\n this.isAtEndOfPath &&\n terminal.terminalType.name === this.nextTerminalName &&\n terminal.idx === this.nextTerminalOccurrence &&\n !this.found\n ) {\n const fullRest = currRest.concat(prevRest);\n const restProd = new Alternative({ definition: fullRest });\n this.possibleTokTypes = first(restProd);\n this.found = true;\n }\n }\n}\n\nexport type AlternativesFirstTokens = TokenType[][];\n\nexport interface IFirstAfterRepetition {\n token: TokenType | undefined;\n occurrence: number | undefined;\n isEndOfRule: boolean | undefined;\n}\n\n/**\n * This walker only \"walks\" a single \"TOP\" level in the Grammar Ast, this means\n * it never \"follows\" production refs\n */\nexport class AbstractNextTerminalAfterProductionWalker extends RestWalker {\n protected result: IFirstAfterRepetition = {\n token: undefined,\n occurrence: undefined,\n isEndOfRule: undefined,\n };\n\n constructor(\n protected topRule: Rule,\n protected occurrence: number,\n ) {\n super();\n }\n\n startWalking(): IFirstAfterRepetition {\n this.walk(this.topRule);\n return this.result;\n }\n}\n\nexport class NextTerminalAfterManyWalker extends AbstractNextTerminalAfterProductionWalker {\n walkMany(\n manyProd: Repetition,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (manyProd.idx === this.occurrence) {\n const firstAfterMany = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterMany === undefined;\n if (firstAfterMany instanceof Terminal) {\n this.result.token = firstAfterMany.terminalType;\n this.result.occurrence = firstAfterMany.idx;\n }\n } else {\n super.walkMany(manyProd, currRest, prevRest);\n }\n }\n}\n\nexport class NextTerminalAfterManySepWalker extends AbstractNextTerminalAfterProductionWalker {\n walkManySep(\n manySepProd: RepetitionWithSeparator,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (manySepProd.idx === this.occurrence) {\n const firstAfterManySep = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterManySep === undefined;\n if (firstAfterManySep instanceof Terminal) {\n this.result.token = firstAfterManySep.terminalType;\n this.result.occurrence = firstAfterManySep.idx;\n }\n } else {\n super.walkManySep(manySepProd, currRest, prevRest);\n }\n }\n}\n\nexport class NextTerminalAfterAtLeastOneWalker extends AbstractNextTerminalAfterProductionWalker {\n walkAtLeastOne(\n atLeastOneProd: RepetitionMandatory,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (atLeastOneProd.idx === this.occurrence) {\n const firstAfterAtLeastOne = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterAtLeastOne === undefined;\n if (firstAfterAtLeastOne instanceof Terminal) {\n this.result.token = firstAfterAtLeastOne.terminalType;\n this.result.occurrence = firstAfterAtLeastOne.idx;\n }\n } else {\n super.walkAtLeastOne(atLeastOneProd, currRest, prevRest);\n }\n }\n}\n\n// TODO: reduce code duplication in the AfterWalkers\nexport class NextTerminalAfterAtLeastOneSepWalker extends AbstractNextTerminalAfterProductionWalker {\n walkAtLeastOneSep(\n atleastOneSepProd: RepetitionMandatoryWithSeparator,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (atleastOneSepProd.idx === this.occurrence) {\n const firstAfterfirstAfterAtLeastOneSep = _first(\n currRest.concat(prevRest),\n );\n this.result.isEndOfRule = firstAfterfirstAfterAtLeastOneSep === undefined;\n if (firstAfterfirstAfterAtLeastOneSep instanceof Terminal) {\n this.result.token = firstAfterfirstAfterAtLeastOneSep.terminalType;\n this.result.occurrence = firstAfterfirstAfterAtLeastOneSep.idx;\n }\n } else {\n super.walkAtLeastOneSep(atleastOneSepProd, currRest, prevRest);\n }\n }\n}\n\nexport interface PartialPathAndSuffixes {\n partialPath: TokenType[];\n suffixDef: IProduction[];\n}\n\nexport function possiblePathsFrom(\n targetDef: IProduction[],\n maxLength: number,\n currPath: TokenType[] = [],\n): PartialPathAndSuffixes[] {\n // avoid side effects\n currPath = clone(currPath);\n let result: PartialPathAndSuffixes[] = [];\n let i = 0;\n\n // TODO: avoid inner funcs\n function remainingPathWith(nextDef: IProduction[]) {\n return nextDef.concat(drop(targetDef, i + 1));\n }\n\n // TODO: avoid inner funcs\n function getAlternativesForProd(definition: IProduction[]) {\n const alternatives = possiblePathsFrom(\n remainingPathWith(definition),\n maxLength,\n currPath,\n );\n return result.concat(alternatives);\n }\n\n /**\n * Mandatory productions will halt the loop as the paths computed from their recursive calls will already contain the\n * following (rest) of the targetDef.\n *\n * For optional productions (Option/Repetition/...) the loop will continue to represent the paths that do not include the\n * the optional production.\n */\n while (currPath.length < maxLength && i < targetDef.length) {\n const prod = targetDef[i];\n\n /* istanbul ignore else */\n if (prod instanceof Alternative) {\n return getAlternativesForProd(prod.definition);\n } else if (prod instanceof NonTerminal) {\n return getAlternativesForProd(prod.definition);\n } else if (prod instanceof Option) {\n result = getAlternativesForProd(prod.definition);\n } else if (prod instanceof RepetitionMandatory) {\n const newDef = prod.definition.concat([\n new Repetition({\n definition: prod.definition,\n }),\n ]);\n return getAlternativesForProd(newDef);\n } else if (prod instanceof RepetitionMandatoryWithSeparator) {\n const newDef = [\n new Alternative({ definition: prod.definition }),\n new Repetition({\n definition: [new Terminal({ terminalType: prod.separator })].concat(\n prod.definition,\n ),\n }),\n ];\n return getAlternativesForProd(newDef);\n } else if (prod instanceof RepetitionWithSeparator) {\n const newDef = prod.definition.concat([\n new Repetition({\n definition: [new Terminal({ terminalType: prod.separator })].concat(\n prod.definition,\n ),\n }),\n ]);\n result = getAlternativesForProd(newDef);\n } else if (prod instanceof Repetition) {\n const newDef = prod.definition.concat([\n new Repetition({\n definition: prod.definition,\n }),\n ]);\n result = getAlternativesForProd(newDef);\n } else if (prod instanceof Alternation) {\n forEach(prod.definition, (currAlt) => {\n // TODO: this is a limited check for empty alternatives\n // It would prevent a common case of infinite loops during parser initialization.\n // However **in-directly** empty alternatives may still cause issues.\n if (isEmpty(currAlt.definition) === false) {\n result = getAlternativesForProd(currAlt.definition);\n }\n });\n return result;\n } else if (prod instanceof Terminal) {\n currPath.push(prod.terminalType);\n } else {\n throw Error(\"non exhaustive match\");\n }\n\n i++;\n }\n result.push({\n partialPath: currPath,\n suffixDef: drop(targetDef, i),\n });\n\n return result;\n}\n\ninterface IPathToExamine {\n idx: number;\n def: IProduction[];\n ruleStack: string[];\n occurrenceStack: number[];\n}\n\nexport function nextPossibleTokensAfter(\n initialDef: IProduction[],\n tokenVector: IToken[],\n tokMatcher: TokenMatcher,\n maxLookAhead: number,\n): ISyntacticContentAssistPath[] {\n const EXIT_NON_TERMINAL: any = \"EXIT_NONE_TERMINAL\";\n // to avoid creating a new Array each time.\n const EXIT_NON_TERMINAL_ARR = [EXIT_NON_TERMINAL];\n const EXIT_ALTERNATIVE: any = \"EXIT_ALTERNATIVE\";\n let foundCompletePath = false;\n\n const tokenVectorLength = tokenVector.length;\n const minimalAlternativesIndex = tokenVectorLength - maxLookAhead - 1;\n\n const result: ISyntacticContentAssistPath[] = [];\n\n const possiblePaths: IPathToExamine[] = [];\n possiblePaths.push({\n idx: -1,\n def: initialDef,\n ruleStack: [],\n occurrenceStack: [],\n });\n\n while (!isEmpty(possiblePaths)) {\n const currPath = possiblePaths.pop()!;\n\n // skip alternatives if no more results can be found (assuming deterministic grammar with fixed lookahead)\n if (currPath === EXIT_ALTERNATIVE) {\n if (\n foundCompletePath &&\n last(possiblePaths)!.idx <= minimalAlternativesIndex\n ) {\n // remove irrelevant alternative\n possiblePaths.pop();\n }\n continue;\n }\n\n const currDef = currPath.def;\n const currIdx = currPath.idx;\n const currRuleStack = currPath.ruleStack;\n const currOccurrenceStack = currPath.occurrenceStack;\n\n // For Example: an empty path could exist in a valid grammar in the case of an EMPTY_ALT\n if (isEmpty(currDef)) {\n continue;\n }\n\n const prod = currDef[0];\n /* istanbul ignore else */\n if (prod === EXIT_NON_TERMINAL) {\n const nextPath = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: dropRight(currRuleStack),\n occurrenceStack: dropRight(currOccurrenceStack),\n };\n possiblePaths.push(nextPath);\n } else if (prod instanceof Terminal) {\n /* istanbul ignore else */\n if (currIdx < tokenVectorLength - 1) {\n const nextIdx = currIdx + 1;\n const actualToken = tokenVector[nextIdx];\n if (tokMatcher!(actualToken, prod.terminalType)) {\n const nextPath = {\n idx: nextIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPath);\n }\n // end of the line\n } else if (currIdx === tokenVectorLength - 1) {\n // IGNORE ABOVE ELSE\n result.push({\n nextTokenType: prod.terminalType,\n nextTokenOccurrence: prod.idx,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n });\n foundCompletePath = true;\n } else {\n throw Error(\"non exhaustive match\");\n }\n } else if (prod instanceof NonTerminal) {\n const newRuleStack = clone(currRuleStack);\n newRuleStack.push(prod.nonTerminalName);\n\n const newOccurrenceStack = clone(currOccurrenceStack);\n newOccurrenceStack.push(prod.idx);\n\n const nextPath = {\n idx: currIdx,\n def: prod.definition.concat(EXIT_NON_TERMINAL_ARR, drop(currDef)),\n ruleStack: newRuleStack,\n occurrenceStack: newOccurrenceStack,\n };\n possiblePaths.push(nextPath);\n } else if (prod instanceof Option) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n const nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n\n const nextPathWith = {\n idx: currIdx,\n def: prod.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPathWith);\n } else if (prod instanceof RepetitionMandatory) {\n // TODO:(THE NEW operators here take a while...) (convert once?)\n const secondIteration = new Repetition({\n definition: prod.definition,\n idx: prod.idx,\n });\n const nextDef = prod.definition.concat([secondIteration], drop(currDef));\n const nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPath);\n } else if (prod instanceof RepetitionMandatoryWithSeparator) {\n // TODO:(THE NEW operators here take a while...) (convert once?)\n const separatorGast = new Terminal({\n terminalType: prod.separator,\n });\n const secondIteration = new Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx,\n });\n const nextDef = prod.definition.concat([secondIteration], drop(currDef));\n const nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPath);\n } else if (prod instanceof RepetitionWithSeparator) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n const nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n\n const separatorGast = new Terminal({\n terminalType: prod.separator,\n });\n const nthRepetition = new Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx,\n });\n const nextDef = prod.definition.concat([nthRepetition], drop(currDef));\n const nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPathWith);\n } else if (prod instanceof Repetition) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n const nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n\n // TODO: an empty repetition will cause infinite loops here, will the parser detect this in selfAnalysis?\n const nthRepetition = new Repetition({\n definition: prod.definition,\n idx: prod.idx,\n });\n const nextDef = prod.definition.concat([nthRepetition], drop(currDef));\n const nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(nextPathWith);\n } else if (prod instanceof Alternation) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n for (let i = prod.definition.length - 1; i >= 0; i--) {\n const currAlt: any = prod.definition[i];\n const currAltPath = {\n idx: currIdx,\n def: currAlt.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n };\n possiblePaths.push(currAltPath);\n possiblePaths.push(EXIT_ALTERNATIVE);\n }\n } else if (prod instanceof Alternative) {\n possiblePaths.push({\n idx: currIdx,\n def: prod.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack,\n });\n } else if (prod instanceof Rule) {\n // last because we should only encounter at most a single one of these per invocation.\n possiblePaths.push(\n expandTopLevelRule(prod, currIdx, currRuleStack, currOccurrenceStack),\n );\n } else {\n throw Error(\"non exhaustive match\");\n }\n }\n return result;\n}\n\nfunction expandTopLevelRule(\n topRule: Rule,\n currIdx: number,\n currRuleStack: string[],\n currOccurrenceStack: number[],\n): IPathToExamine {\n const newRuleStack = clone(currRuleStack);\n newRuleStack.push(topRule.name);\n\n const newCurrOccurrenceStack = clone(currOccurrenceStack);\n // top rule is always assumed to have been called with occurrence index 1\n newCurrOccurrenceStack.push(1);\n\n return {\n idx: currIdx,\n def: topRule.definition,\n ruleStack: newRuleStack,\n occurrenceStack: newCurrOccurrenceStack,\n };\n}\n", "import { every, flatten, forEach, has, isEmpty, map, reduce } from \"lodash-es\";\nimport { possiblePathsFrom } from \"./interpreter.js\";\nimport { RestWalker } from \"./rest.js\";\nimport { Predicate, TokenMatcher } from \"../parser/parser.js\";\nimport {\n tokenStructuredMatcher,\n tokenStructuredMatcherNoCategories,\n} from \"../../scan/tokens.js\";\nimport {\n Alternation,\n Alternative as AlternativeGAST,\n GAstVisitor,\n Option,\n Repetition,\n RepetitionMandatory,\n RepetitionMandatoryWithSeparator,\n RepetitionWithSeparator,\n} from \"@chevrotain/gast\";\nimport {\n BaseParser,\n IOrAlt,\n IProduction,\n IProductionWithOccurrence,\n LookaheadProductionType,\n LookaheadSequence,\n Rule,\n TokenType,\n} from \"@chevrotain/types\";\n\nexport enum PROD_TYPE {\n OPTION,\n REPETITION,\n REPETITION_MANDATORY,\n REPETITION_MANDATORY_WITH_SEPARATOR,\n REPETITION_WITH_SEPARATOR,\n ALTERNATION,\n}\n\nexport function getProdType(\n prod: IProduction | LookaheadProductionType,\n): PROD_TYPE {\n /* istanbul ignore else */\n if (prod instanceof Option || prod === \"Option\") {\n return PROD_TYPE.OPTION;\n } else if (prod instanceof Repetition || prod === \"Repetition\") {\n return PROD_TYPE.REPETITION;\n } else if (\n prod instanceof RepetitionMandatory ||\n prod === \"RepetitionMandatory\"\n ) {\n return PROD_TYPE.REPETITION_MANDATORY;\n } else if (\n prod instanceof RepetitionMandatoryWithSeparator ||\n prod === \"RepetitionMandatoryWithSeparator\"\n ) {\n return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR;\n } else if (\n prod instanceof RepetitionWithSeparator ||\n prod === \"RepetitionWithSeparator\"\n ) {\n return PROD_TYPE.REPETITION_WITH_SEPARATOR;\n } else if (prod instanceof Alternation || prod === \"Alternation\") {\n return PROD_TYPE.ALTERNATION;\n } else {\n throw Error(\"non exhaustive match\");\n }\n}\n\nexport function getLookaheadPaths(options: {\n occurrence: number;\n rule: Rule;\n prodType: LookaheadProductionType;\n maxLookahead: number;\n}): LookaheadSequence[] {\n const { occurrence, rule, prodType, maxLookahead } = options;\n const type = getProdType(prodType);\n if (type === PROD_TYPE.ALTERNATION) {\n return getLookaheadPathsForOr(occurrence, rule, maxLookahead);\n } else {\n return getLookaheadPathsForOptionalProd(\n occurrence,\n rule,\n type,\n maxLookahead,\n );\n }\n}\n\nexport function buildLookaheadFuncForOr(\n occurrence: number,\n ruleGrammar: Rule,\n maxLookahead: number,\n hasPredicates: boolean,\n dynamicTokensEnabled: boolean,\n laFuncBuilder: Function,\n): (orAlts?: IOrAlt[]) => number | undefined {\n const lookAheadPaths = getLookaheadPathsForOr(\n occurrence,\n ruleGrammar,\n maxLookahead,\n );\n\n const tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths)\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n\n return laFuncBuilder(\n lookAheadPaths,\n hasPredicates,\n tokenMatcher,\n dynamicTokensEnabled,\n );\n}\n\n/**\n * When dealing with an Optional production (OPTION/MANY/2nd iteration of AT_LEAST_ONE/...) we need to compare\n * the lookahead \"inside\" the production and the lookahead immediately \"after\" it in the same top level rule (context free).\n *\n * Example: given a production:\n * ABC(DE)?DF\n *\n * The optional '(DE)?' should only be entered if we see 'DE'. a single Token 'D' is not sufficient to distinguish between the two\n * alternatives.\n *\n * @returns A Lookahead function which will return true IFF the parser should parse the Optional production.\n */\nexport function buildLookaheadFuncForOptionalProd(\n occurrence: number,\n ruleGrammar: Rule,\n k: number,\n dynamicTokensEnabled: boolean,\n prodType: PROD_TYPE,\n lookaheadBuilder: (\n lookAheadSequence: LookaheadSequence,\n tokenMatcher: TokenMatcher,\n dynamicTokensEnabled: boolean,\n ) => () => boolean,\n): () => boolean {\n const lookAheadPaths = getLookaheadPathsForOptionalProd(\n occurrence,\n ruleGrammar,\n prodType,\n k,\n );\n\n const tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths)\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n\n return lookaheadBuilder(\n lookAheadPaths[0],\n tokenMatcher,\n dynamicTokensEnabled,\n );\n}\n\nexport type Alternative = TokenType[][];\n\nexport function buildAlternativesLookAheadFunc(\n alts: LookaheadSequence[],\n hasPredicates: boolean,\n tokenMatcher: TokenMatcher,\n dynamicTokensEnabled: boolean,\n): (orAlts: IOrAlt[]) => number | undefined {\n const numOfAlts = alts.length;\n const areAllOneTokenLookahead = every(alts, (currAlt) => {\n return every(currAlt, (currPath) => {\n return currPath.length === 1;\n });\n });\n\n // This version takes into account the predicates as well.\n if (hasPredicates) {\n /**\n * @returns {number} - The chosen alternative index\n */\n return function (\n this: BaseParser,\n orAlts: IOrAlt[],\n ): number | undefined {\n // unfortunately the predicates must be extracted every single time\n // as they cannot be cached due to references to parameters(vars) which are no longer valid.\n // note that in the common case of no predicates, no cpu time will be wasted on this (see else block)\n const predicates: (Predicate | undefined)[] = map(\n orAlts,\n (currAlt) => currAlt.GATE,\n );\n\n for (let t = 0; t < numOfAlts; t++) {\n const currAlt = alts[t];\n const currNumOfPaths = currAlt.length;\n\n const currPredicate = predicates[t];\n if (currPredicate !== undefined && currPredicate.call(this) === false) {\n // if the predicate does not match there is no point in checking the paths\n continue;\n }\n nextPath: for (let j = 0; j < currNumOfPaths; j++) {\n const currPath = currAlt[j];\n const currPathLength = currPath.length;\n for (let i = 0; i < currPathLength; i++) {\n const nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n // this will also work for an empty ALT as the loop will be skipped\n return t;\n }\n // none of the paths for the current alternative matched\n // try the next alternative\n }\n // none of the alternatives could be matched\n return undefined;\n };\n } else if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n // optimized (common) case of all the lookaheads paths requiring only\n // a single token lookahead. These Optimizations cannot work if dynamically defined Tokens are used.\n const singleTokenAlts = map(alts, (currAlt) => {\n return flatten(currAlt);\n });\n\n const choiceToAlt = reduce(\n singleTokenAlts,\n (result, currAlt, idx) => {\n forEach(currAlt, (currTokType) => {\n if (!has(result, currTokType.tokenTypeIdx!)) {\n result[currTokType.tokenTypeIdx!] = idx;\n }\n forEach(currTokType.categoryMatches!, (currExtendingType) => {\n if (!has(result, currExtendingType)) {\n result[currExtendingType] = idx;\n }\n });\n });\n return result;\n },\n {} as Record,\n );\n\n /**\n * @returns {number} - The chosen alternative index\n */\n return function (this: BaseParser): number {\n const nextToken = this.LA(1);\n return choiceToAlt[nextToken.tokenTypeIdx];\n };\n } else {\n // optimized lookahead without needing to check the predicates at all.\n // this causes code duplication which is intentional to improve performance.\n /**\n * @returns {number} - The chosen alternative index\n */\n return function (this: BaseParser): number | undefined {\n for (let t = 0; t < numOfAlts; t++) {\n const currAlt = alts[t];\n const currNumOfPaths = currAlt.length;\n nextPath: for (let j = 0; j < currNumOfPaths; j++) {\n const currPath = currAlt[j];\n const currPathLength = currPath.length;\n for (let i = 0; i < currPathLength; i++) {\n const nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n // this will also work for an empty ALT as the loop will be skipped\n return t;\n }\n // none of the paths for the current alternative matched\n // try the next alternative\n }\n // none of the alternatives could be matched\n return undefined;\n };\n }\n}\n\nexport function buildSingleAlternativeLookaheadFunction(\n alt: LookaheadSequence,\n tokenMatcher: TokenMatcher,\n dynamicTokensEnabled: boolean,\n): () => boolean {\n const areAllOneTokenLookahead = every(alt, (currPath) => {\n return currPath.length === 1;\n });\n\n const numOfPaths = alt.length;\n\n // optimized (common) case of all the lookaheads paths requiring only\n // a single token lookahead.\n if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n const singleTokensTypes = flatten(alt);\n\n if (\n singleTokensTypes.length === 1 &&\n isEmpty((singleTokensTypes[0]).categoryMatches)\n ) {\n const expectedTokenType = singleTokensTypes[0];\n const expectedTokenUniqueKey = (expectedTokenType).tokenTypeIdx;\n\n return function (this: BaseParser): boolean {\n return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey;\n };\n } else {\n const choiceToAlt = reduce(\n singleTokensTypes,\n (result, currTokType, idx) => {\n result[currTokType.tokenTypeIdx!] = true;\n forEach(currTokType.categoryMatches!, (currExtendingType) => {\n result[currExtendingType] = true;\n });\n return result;\n },\n [] as boolean[],\n );\n\n return function (this: BaseParser): boolean {\n const nextToken = this.LA(1);\n return choiceToAlt[nextToken.tokenTypeIdx] === true;\n };\n }\n } else {\n return function (this: BaseParser): boolean {\n nextPath: for (let j = 0; j < numOfPaths; j++) {\n const currPath = alt[j];\n const currPathLength = currPath.length;\n for (let i = 0; i < currPathLength; i++) {\n const nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n return true;\n }\n\n // none of the paths matched\n return false;\n };\n }\n}\n\nclass RestDefinitionFinderWalker extends RestWalker {\n private restDef: IProduction[];\n\n constructor(\n private topProd: Rule,\n private targetOccurrence: number,\n private targetProdType: PROD_TYPE,\n ) {\n super();\n }\n\n startWalking(): IProduction[] {\n this.walk(this.topProd);\n return this.restDef;\n }\n\n private checkIsTarget(\n node: IProductionWithOccurrence,\n expectedProdType: PROD_TYPE,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): boolean {\n if (\n node.idx === this.targetOccurrence &&\n this.targetProdType === expectedProdType\n ) {\n this.restDef = currRest.concat(prevRest);\n return true;\n }\n // performance optimization, do not iterate over the entire Grammar ast after we have found the target\n return false;\n }\n\n walkOption(\n optionProd: Option,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (!this.checkIsTarget(optionProd, PROD_TYPE.OPTION, currRest, prevRest)) {\n super.walkOption(optionProd, currRest, prevRest);\n }\n }\n\n walkAtLeastOne(\n atLeastOneProd: RepetitionMandatory,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (\n !this.checkIsTarget(\n atLeastOneProd,\n PROD_TYPE.REPETITION_MANDATORY,\n currRest,\n prevRest,\n )\n ) {\n super.walkOption(atLeastOneProd, currRest, prevRest);\n }\n }\n\n walkAtLeastOneSep(\n atLeastOneSepProd: RepetitionMandatoryWithSeparator,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (\n !this.checkIsTarget(\n atLeastOneSepProd,\n PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,\n currRest,\n prevRest,\n )\n ) {\n super.walkOption(atLeastOneSepProd, currRest, prevRest);\n }\n }\n\n walkMany(\n manyProd: Repetition,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (\n !this.checkIsTarget(manyProd, PROD_TYPE.REPETITION, currRest, prevRest)\n ) {\n super.walkOption(manyProd, currRest, prevRest);\n }\n }\n\n walkManySep(\n manySepProd: RepetitionWithSeparator,\n currRest: IProduction[],\n prevRest: IProduction[],\n ): void {\n if (\n !this.checkIsTarget(\n manySepProd,\n PROD_TYPE.REPETITION_WITH_SEPARATOR,\n currRest,\n prevRest,\n )\n ) {\n super.walkOption(manySepProd, currRest, prevRest);\n }\n }\n}\n\n/**\n * Returns the definition of a target production in a top level level rule.\n */\nclass InsideDefinitionFinderVisitor extends GAstVisitor {\n public result: IProduction[] = [];\n\n constructor(\n private targetOccurrence: number,\n private targetProdType: PROD_TYPE,\n private targetRef?: any,\n ) {\n super();\n }\n\n private checkIsTarget(\n node: { definition: IProduction[] } & IProductionWithOccurrence,\n expectedProdName: PROD_TYPE,\n ): void {\n if (\n node.idx === this.targetOccurrence &&\n this.targetProdType === expectedProdName &&\n (this.targetRef === undefined || node === this.targetRef)\n ) {\n this.result = node.definition;\n }\n }\n\n public visitOption(node: Option): void {\n this.checkIsTarget(node, PROD_TYPE.OPTION);\n }\n\n public visitRepetition(node: Repetition): void {\n this.checkIsTarget(node, PROD_TYPE.REPETITION);\n }\n\n public visitRepetitionMandatory(node: RepetitionMandatory): void {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY);\n }\n\n public visitRepetitionMandatoryWithSeparator(\n node: RepetitionMandatoryWithSeparator,\n ): void {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR);\n }\n\n public visitRepetitionWithSeparator(node: RepetitionWithSeparator): void {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_WITH_SEPARATOR);\n }\n\n public visitAlternation(node: Alternation): void {\n this.checkIsTarget(node, PROD_TYPE.ALTERNATION);\n }\n}\n\nfunction initializeArrayOfArrays(size: number): any[][] {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = [];\n }\n return result;\n}\n\n/**\n * A sort of hash function between a Path in the grammar and a string.\n * Note that this returns multiple \"hashes\" to support the scenario of token categories.\n * - A single path with categories may match multiple **actual** paths.\n */\nfunction pathToHashKeys(path: TokenType[]): string[] {\n let keys = [\"\"];\n for (let i = 0; i < path.length; i++) {\n const tokType = path[i];\n const longerKeys = [];\n for (let j = 0; j < keys.length; j++) {\n const currShorterKey = keys[j];\n longerKeys.push(currShorterKey + \"_\" + tokType.tokenTypeIdx);\n for (let t = 0; t < tokType.categoryMatches!.length; t++) {\n const categoriesKeySuffix = \"_\" + tokType.categoryMatches![t];\n longerKeys.push(currShorterKey + categoriesKeySuffix);\n }\n }\n keys = longerKeys;\n }\n return keys;\n}\n\n/**\n * Imperative style due to being called from a hot spot\n */\nfunction isUniquePrefixHash(\n altKnownPathsKeys: Record[],\n searchPathKeys: string[],\n idx: number,\n): boolean {\n for (\n let currAltIdx = 0;\n currAltIdx < altKnownPathsKeys.length;\n currAltIdx++\n ) {\n // We only want to test vs the other alternatives\n if (currAltIdx === idx) {\n continue;\n }\n const otherAltKnownPathsKeys = altKnownPathsKeys[currAltIdx];\n for (let searchIdx = 0; searchIdx < searchPathKeys.length; searchIdx++) {\n const searchKey = searchPathKeys[searchIdx];\n if (otherAltKnownPathsKeys[searchKey] === true) {\n return false;\n }\n }\n }\n // None of the SearchPathKeys were found in any of the other alternatives\n return true;\n}\n\nexport function lookAheadSequenceFromAlternatives(\n altsDefs: IProduction[],\n k: number,\n): LookaheadSequence[] {\n const partialAlts = map(altsDefs, (currAlt) =>\n possiblePathsFrom([currAlt], 1),\n );\n const finalResult = initializeArrayOfArrays(partialAlts.length);\n const altsHashes = map(partialAlts, (currAltPaths) => {\n const dict: { [key: string]: boolean } = {};\n forEach(currAltPaths, (item) => {\n const keys = pathToHashKeys(item.partialPath);\n forEach(keys, (currKey) => {\n dict[currKey] = true;\n });\n });\n return dict;\n });\n let newData = partialAlts;\n\n // maxLookahead loop\n for (let pathLength = 1; pathLength <= k; pathLength++) {\n const currDataset = newData;\n newData = initializeArrayOfArrays(currDataset.length);\n\n // alternatives loop\n for (let altIdx = 0; altIdx < currDataset.length; altIdx++) {\n const currAltPathsAndSuffixes = currDataset[altIdx];\n // paths in current alternative loop\n for (\n let currPathIdx = 0;\n currPathIdx < currAltPathsAndSuffixes.length;\n currPathIdx++\n ) {\n const currPathPrefix = currAltPathsAndSuffixes[currPathIdx].partialPath;\n const suffixDef = currAltPathsAndSuffixes[currPathIdx].suffixDef;\n const prefixKeys = pathToHashKeys(currPathPrefix);\n const isUnique = isUniquePrefixHash(altsHashes, prefixKeys, altIdx);\n // End of the line for this path.\n if (isUnique || isEmpty(suffixDef) || currPathPrefix.length === k) {\n const currAltResult = finalResult[altIdx];\n // TODO: Can we implement a containsPath using Maps/Dictionaries?\n if (containsPath(currAltResult, currPathPrefix) === false) {\n currAltResult.push(currPathPrefix);\n // Update all new keys for the current path.\n for (let j = 0; j < prefixKeys.length; j++) {\n const currKey = prefixKeys[j];\n altsHashes[altIdx][currKey] = true;\n }\n }\n }\n // Expand longer paths\n else {\n const newPartialPathsAndSuffixes = possiblePathsFrom(\n suffixDef,\n pathLength + 1,\n currPathPrefix,\n );\n newData[altIdx] = newData[altIdx].concat(newPartialPathsAndSuffixes);\n\n // Update keys for new known paths\n forEach(newPartialPathsAndSuffixes, (item) => {\n const prefixKeys = pathToHashKeys(item.partialPath);\n forEach(prefixKeys, (key) => {\n altsHashes[altIdx][key] = true;\n });\n });\n }\n }\n }\n }\n\n return finalResult;\n}\n\nexport function getLookaheadPathsForOr(\n occurrence: number,\n ruleGrammar: Rule,\n k: number,\n orProd?: Alternation,\n): LookaheadSequence[] {\n const visitor = new InsideDefinitionFinderVisitor(\n occurrence,\n PROD_TYPE.ALTERNATION,\n orProd,\n );\n ruleGrammar.accept(visitor);\n return lookAheadSequenceFromAlternatives(visitor.result, k);\n}\n\nexport function getLookaheadPathsForOptionalProd(\n occurrence: number,\n ruleGrammar: Rule,\n prodType: PROD_TYPE,\n k: number,\n): LookaheadSequence[] {\n const insideDefVisitor = new InsideDefinitionFinderVisitor(\n occurrence,\n prodType,\n );\n ruleGrammar.accept(insideDefVisitor);\n const insideDef = insideDefVisitor.result;\n\n const afterDefWalker = new RestDefinitionFinderWalker(\n ruleGrammar,\n occurrence,\n prodType,\n );\n const afterDef = afterDefWalker.startWalking();\n\n const insideFlat = new AlternativeGAST({ definition: insideDef });\n const afterFlat = new AlternativeGAST({ definition: afterDef });\n\n return lookAheadSequenceFromAlternatives([insideFlat, afterFlat], k);\n}\n\nexport function containsPath(\n alternative: Alternative,\n searchPath: TokenType[],\n): boolean {\n compareOtherPath: for (let i = 0; i < alternative.length; i++) {\n const otherPath = alternative[i];\n if (otherPath.length !== searchPath.length) {\n continue;\n }\n for (let j = 0; j < otherPath.length; j++) {\n const searchTok = searchPath[j];\n const otherTok = otherPath[j];\n\n const matchingTokens =\n searchTok === otherTok ||\n otherTok.categoryMatchesMap![searchTok.tokenTypeIdx!] !== undefined;\n if (matchingTokens === false) {\n continue compareOtherPath;\n }\n }\n return true;\n }\n\n return false;\n}\n\nexport function isStrictPrefixOfPath(\n prefix: TokenType[],\n other: TokenType[],\n): boolean {\n return (\n prefix.length < other.length &&\n every(prefix, (tokType, idx) => {\n const otherTokType = other[idx];\n return (\n tokType === otherTokType ||\n otherTokType.categoryMatchesMap![tokType.tokenTypeIdx!]\n );\n })\n );\n}\n\nexport function areTokenCategoriesNotUsed(\n lookAheadPaths: LookaheadSequence[],\n): boolean {\n return every(lookAheadPaths, (singleAltPaths) =>\n every(singleAltPaths, (singlePath) =>\n every(singlePath, (token) => isEmpty(token.categoryMatches!)),\n ),\n );\n}\n", "import {\n clone,\n compact,\n difference,\n drop,\n dropRight,\n filter,\n first,\n flatMap,\n flatten,\n forEach,\n groupBy,\n includes,\n isEmpty,\n map,\n pickBy,\n reduce,\n reject,\n values,\n} from \"lodash-es\";\nimport {\n IParserAmbiguousAlternativesDefinitionError,\n IParserDuplicatesDefinitionError,\n IParserEmptyAlternativeDefinitionError,\n ParserDefinitionErrorType,\n} from \"../parser/parser.js\";\nimport {\n Alternation,\n Alternative as AlternativeGAST,\n GAstVisitor,\n getProductionDslName,\n isOptionalProd,\n NonTerminal,\n Option,\n Repetition,\n RepetitionMandatory,\n RepetitionMandatoryWithSeparator,\n RepetitionWithSeparator,\n Terminal,\n} from \"@chevrotain/gast\";\nimport {\n Alternative,\n containsPath,\n getLookaheadPathsForOptionalProd,\n getLookaheadPathsForOr,\n getProdType,\n isStrictPrefixOfPath,\n} from \"./lookahead.js\";\nimport { nextPossibleTokensAfter } from \"./interpreter.js\";\nimport {\n ILookaheadStrategy,\n IProduction,\n IProductionWithOccurrence,\n Rule,\n TokenType,\n} from \"@chevrotain/types\";\nimport {\n IGrammarValidatorErrorMessageProvider,\n IParserDefinitionError,\n} from \"./types.js\";\nimport { tokenStructuredMatcher } from \"../../scan/tokens.js\";\n\nexport function validateLookahead(options: {\n lookaheadStrategy: ILookaheadStrategy;\n rules: Rule[];\n tokenTypes: TokenType[];\n grammarName: string;\n}): IParserDefinitionError[] {\n const lookaheadValidationErrorMessages = options.lookaheadStrategy.validate({\n rules: options.rules,\n tokenTypes: options.tokenTypes,\n grammarName: options.grammarName,\n });\n return map(lookaheadValidationErrorMessages, (errorMessage) => ({\n type: ParserDefinitionErrorType.CUSTOM_LOOKAHEAD_VALIDATION,\n ...errorMessage,\n }));\n}\n\nexport function validateGrammar(\n topLevels: Rule[],\n tokenTypes: TokenType[],\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n grammarName: string,\n): IParserDefinitionError[] {\n const duplicateErrors: IParserDefinitionError[] = flatMap(\n topLevels,\n (currTopLevel) =>\n validateDuplicateProductions(currTopLevel, errMsgProvider),\n );\n\n const termsNamespaceConflictErrors = checkTerminalAndNoneTerminalsNameSpace(\n topLevels,\n tokenTypes,\n errMsgProvider,\n );\n\n const tooManyAltsErrors = flatMap(topLevels, (curRule) =>\n validateTooManyAlts(curRule, errMsgProvider),\n );\n\n const duplicateRulesError = flatMap(topLevels, (curRule) =>\n validateRuleDoesNotAlreadyExist(\n curRule,\n topLevels,\n grammarName,\n errMsgProvider,\n ),\n );\n\n return duplicateErrors.concat(\n termsNamespaceConflictErrors,\n tooManyAltsErrors,\n duplicateRulesError,\n );\n}\n\nfunction validateDuplicateProductions(\n topLevelRule: Rule,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserDuplicatesDefinitionError[] {\n const collectorVisitor = new OccurrenceValidationCollector();\n topLevelRule.accept(collectorVisitor);\n const allRuleProductions = collectorVisitor.allProductions;\n\n const productionGroups = groupBy(\n allRuleProductions,\n identifyProductionForDuplicates,\n );\n\n const duplicates: any = pickBy(productionGroups, (currGroup) => {\n return currGroup.length > 1;\n });\n\n const errors = map(values(duplicates), (currDuplicates: any) => {\n const firstProd: any = first(currDuplicates);\n const msg = errMsgProvider.buildDuplicateFoundError(\n topLevelRule,\n currDuplicates,\n );\n const dslName = getProductionDslName(firstProd);\n const defError: IParserDuplicatesDefinitionError = {\n message: msg,\n type: ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,\n ruleName: topLevelRule.name,\n dslName: dslName,\n occurrence: firstProd.idx,\n };\n\n const param = getExtraProductionArgument(firstProd);\n if (param) {\n defError.parameter = param;\n }\n\n return defError;\n });\n return errors;\n}\n\nexport function identifyProductionForDuplicates(\n prod: IProductionWithOccurrence,\n): string {\n return `${getProductionDslName(prod)}_#_${\n prod.idx\n }_#_${getExtraProductionArgument(prod)}`;\n}\n\nfunction getExtraProductionArgument(prod: IProductionWithOccurrence): string {\n if (prod instanceof Terminal) {\n return prod.terminalType.name;\n } else if (prod instanceof NonTerminal) {\n return prod.nonTerminalName;\n } else {\n return \"\";\n }\n}\n\nexport class OccurrenceValidationCollector extends GAstVisitor {\n public allProductions: IProductionWithOccurrence[] = [];\n\n public visitNonTerminal(subrule: NonTerminal): void {\n this.allProductions.push(subrule);\n }\n\n public visitOption(option: Option): void {\n this.allProductions.push(option);\n }\n\n public visitRepetitionWithSeparator(manySep: RepetitionWithSeparator): void {\n this.allProductions.push(manySep);\n }\n\n public visitRepetitionMandatory(atLeastOne: RepetitionMandatory): void {\n this.allProductions.push(atLeastOne);\n }\n\n public visitRepetitionMandatoryWithSeparator(\n atLeastOneSep: RepetitionMandatoryWithSeparator,\n ): void {\n this.allProductions.push(atLeastOneSep);\n }\n\n public visitRepetition(many: Repetition): void {\n this.allProductions.push(many);\n }\n\n public visitAlternation(or: Alternation): void {\n this.allProductions.push(or);\n }\n\n public visitTerminal(terminal: Terminal): void {\n this.allProductions.push(terminal);\n }\n}\n\nexport function validateRuleDoesNotAlreadyExist(\n rule: Rule,\n allRules: Rule[],\n className: string,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserDefinitionError[] {\n const errors = [];\n const occurrences = reduce(\n allRules,\n (result, curRule) => {\n if (curRule.name === rule.name) {\n return result + 1;\n }\n return result;\n },\n 0,\n );\n if (occurrences > 1) {\n const errMsg = errMsgProvider.buildDuplicateRuleNameError({\n topLevelRule: rule,\n grammarName: className,\n });\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: rule.name,\n });\n }\n\n return errors;\n}\n\n// TODO: is there anyway to get only the rule names of rules inherited from the super grammars?\n// This is not part of the IGrammarErrorProvider because the validation cannot be performed on\n// The grammar structure, only at runtime.\nexport function validateRuleIsOverridden(\n ruleName: string,\n definedRulesNames: string[],\n className: string,\n): IParserDefinitionError[] {\n const errors = [];\n let errMsg;\n\n if (!includes(definedRulesNames, ruleName)) {\n errMsg =\n `Invalid rule override, rule: ->${ruleName}<- cannot be overridden in the grammar: ->${className}<-` +\n `as it is not defined in any of the super grammars `;\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,\n ruleName: ruleName,\n });\n }\n\n return errors;\n}\n\nexport function validateNoLeftRecursion(\n topRule: Rule,\n currRule: Rule,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n path: Rule[] = [],\n): IParserDefinitionError[] {\n const errors: IParserDefinitionError[] = [];\n const nextNonTerminals = getFirstNoneTerminal(currRule.definition);\n if (isEmpty(nextNonTerminals)) {\n return [];\n } else {\n const ruleName = topRule.name;\n const foundLeftRecursion = includes(nextNonTerminals, topRule);\n if (foundLeftRecursion) {\n errors.push({\n message: errMsgProvider.buildLeftRecursionError({\n topLevelRule: topRule,\n leftRecursionPath: path,\n }),\n type: ParserDefinitionErrorType.LEFT_RECURSION,\n ruleName: ruleName,\n });\n }\n\n // we are only looking for cyclic paths leading back to the specific topRule\n // other cyclic paths are ignored, we still need this difference to avoid infinite loops...\n const validNextSteps = difference(nextNonTerminals, path.concat([topRule]));\n const errorsFromNextSteps = flatMap(validNextSteps, (currRefRule) => {\n const newPath = clone(path);\n newPath.push(currRefRule);\n return validateNoLeftRecursion(\n topRule,\n currRefRule,\n errMsgProvider,\n newPath,\n );\n });\n\n return errors.concat(errorsFromNextSteps);\n }\n}\n\nexport function getFirstNoneTerminal(definition: IProduction[]): Rule[] {\n let result: Rule[] = [];\n if (isEmpty(definition)) {\n return result;\n }\n const firstProd = first(definition);\n\n /* istanbul ignore else */\n if (firstProd instanceof NonTerminal) {\n result.push(firstProd.referencedRule);\n } else if (\n firstProd instanceof AlternativeGAST ||\n firstProd instanceof Option ||\n firstProd instanceof RepetitionMandatory ||\n firstProd instanceof RepetitionMandatoryWithSeparator ||\n firstProd instanceof RepetitionWithSeparator ||\n firstProd instanceof Repetition\n ) {\n result = result.concat(\n getFirstNoneTerminal(firstProd.definition),\n );\n } else if (firstProd instanceof Alternation) {\n // each sub definition in alternation is a FLAT\n result = flatten(\n map(firstProd.definition, (currSubDef) =>\n getFirstNoneTerminal((currSubDef).definition),\n ),\n );\n } else if (firstProd instanceof Terminal) {\n // nothing to see, move along\n } else {\n throw Error(\"non exhaustive match\");\n }\n\n const isFirstOptional = isOptionalProd(firstProd);\n const hasMore = definition.length > 1;\n if (isFirstOptional && hasMore) {\n const rest = drop(definition);\n return result.concat(getFirstNoneTerminal(rest));\n } else {\n return result;\n }\n}\n\nclass OrCollector extends GAstVisitor {\n public alternations: Alternation[] = [];\n\n public visitAlternation(node: Alternation): void {\n this.alternations.push(node);\n }\n}\n\nexport function validateEmptyOrAlternative(\n topLevelRule: Rule,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserEmptyAlternativeDefinitionError[] {\n const orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n const ors = orCollector.alternations;\n\n const errors = flatMap(\n ors,\n (currOr) => {\n const exceptLast = dropRight(currOr.definition);\n return flatMap(exceptLast, (currAlternative, currAltIdx) => {\n const possibleFirstInAlt = nextPossibleTokensAfter(\n [currAlternative],\n [],\n tokenStructuredMatcher,\n 1,\n );\n if (isEmpty(possibleFirstInAlt)) {\n return [\n {\n message: errMsgProvider.buildEmptyAlternationError({\n topLevelRule: topLevelRule,\n alternation: currOr,\n emptyChoiceIdx: currAltIdx,\n }),\n type: ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx,\n alternative: currAltIdx + 1,\n },\n ];\n } else {\n return [];\n }\n });\n },\n );\n\n return errors;\n}\n\nexport function validateAmbiguousAlternationAlternatives(\n topLevelRule: Rule,\n globalMaxLookahead: number,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserAmbiguousAlternativesDefinitionError[] {\n const orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n let ors = orCollector.alternations;\n\n // New Handling of ignoring ambiguities\n // - https://github.com/chevrotain/chevrotain/issues/869\n ors = reject(ors, (currOr) => currOr.ignoreAmbiguities === true);\n\n const errors = flatMap(ors, (currOr: Alternation) => {\n const currOccurrence = currOr.idx;\n const actualMaxLookahead = currOr.maxLookahead || globalMaxLookahead;\n const alternatives = getLookaheadPathsForOr(\n currOccurrence,\n topLevelRule,\n actualMaxLookahead,\n currOr,\n );\n const altsAmbiguityErrors = checkAlternativesAmbiguities(\n alternatives,\n currOr,\n topLevelRule,\n errMsgProvider,\n );\n const altsPrefixAmbiguityErrors = checkPrefixAlternativesAmbiguities(\n alternatives,\n currOr,\n topLevelRule,\n errMsgProvider,\n );\n\n return altsAmbiguityErrors.concat(altsPrefixAmbiguityErrors);\n });\n\n return errors;\n}\n\nexport class RepetitionCollector extends GAstVisitor {\n public allProductions: (IProductionWithOccurrence & {\n maxLookahead?: number;\n })[] = [];\n\n public visitRepetitionWithSeparator(manySep: RepetitionWithSeparator): void {\n this.allProductions.push(manySep);\n }\n\n public visitRepetitionMandatory(atLeastOne: RepetitionMandatory): void {\n this.allProductions.push(atLeastOne);\n }\n\n public visitRepetitionMandatoryWithSeparator(\n atLeastOneSep: RepetitionMandatoryWithSeparator,\n ): void {\n this.allProductions.push(atLeastOneSep);\n }\n\n public visitRepetition(many: Repetition): void {\n this.allProductions.push(many);\n }\n}\n\nexport function validateTooManyAlts(\n topLevelRule: Rule,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserDefinitionError[] {\n const orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n const ors = orCollector.alternations;\n\n const errors = flatMap(ors, (currOr) => {\n if (currOr.definition.length > 255) {\n return [\n {\n message: errMsgProvider.buildTooManyAlternativesError({\n topLevelRule: topLevelRule,\n alternation: currOr,\n }),\n type: ParserDefinitionErrorType.TOO_MANY_ALTS,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx,\n },\n ];\n } else {\n return [];\n }\n });\n\n return errors;\n}\n\nexport function validateSomeNonEmptyLookaheadPath(\n topLevelRules: Rule[],\n maxLookahead: number,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserDefinitionError[] {\n const errors: IParserDefinitionError[] = [];\n forEach(topLevelRules, (currTopRule) => {\n const collectorVisitor = new RepetitionCollector();\n currTopRule.accept(collectorVisitor);\n const allRuleProductions = collectorVisitor.allProductions;\n forEach(allRuleProductions, (currProd) => {\n const prodType = getProdType(currProd);\n const actualMaxLookahead = currProd.maxLookahead || maxLookahead;\n const currOccurrence = currProd.idx;\n const paths = getLookaheadPathsForOptionalProd(\n currOccurrence,\n currTopRule,\n prodType,\n actualMaxLookahead,\n );\n const pathsInsideProduction = paths[0];\n if (isEmpty(flatten(pathsInsideProduction))) {\n const errMsg = errMsgProvider.buildEmptyRepetitionError({\n topLevelRule: currTopRule,\n repetition: currProd,\n });\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,\n ruleName: currTopRule.name,\n });\n }\n });\n });\n\n return errors;\n}\n\nexport interface IAmbiguityDescriptor {\n alts: number[];\n path: TokenType[];\n}\n\nfunction checkAlternativesAmbiguities(\n alternatives: Alternative[],\n alternation: Alternation,\n rule: Rule,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserAmbiguousAlternativesDefinitionError[] {\n const foundAmbiguousPaths: Alternative = [];\n const identicalAmbiguities = reduce(\n alternatives,\n (result, currAlt, currAltIdx) => {\n // ignore (skip) ambiguities with this alternative\n if (alternation.definition[currAltIdx].ignoreAmbiguities === true) {\n return result;\n }\n\n forEach(currAlt, (currPath) => {\n const altsCurrPathAppearsIn = [currAltIdx];\n forEach(alternatives, (currOtherAlt, currOtherAltIdx) => {\n if (\n currAltIdx !== currOtherAltIdx &&\n containsPath(currOtherAlt, currPath) &&\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation.definition[currOtherAltIdx].ignoreAmbiguities !== true\n ) {\n altsCurrPathAppearsIn.push(currOtherAltIdx);\n }\n });\n\n if (\n altsCurrPathAppearsIn.length > 1 &&\n !containsPath(foundAmbiguousPaths, currPath)\n ) {\n foundAmbiguousPaths.push(currPath);\n result.push({\n alts: altsCurrPathAppearsIn,\n path: currPath,\n });\n }\n });\n return result;\n },\n [] as { alts: number[]; path: TokenType[] }[],\n );\n\n const currErrors = map(identicalAmbiguities, (currAmbDescriptor) => {\n const ambgIndices = map(\n currAmbDescriptor.alts,\n (currAltIdx) => currAltIdx + 1,\n );\n\n const currMessage = errMsgProvider.buildAlternationAmbiguityError({\n topLevelRule: rule,\n alternation: alternation,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbDescriptor.path,\n });\n\n return {\n message: currMessage,\n type: ParserDefinitionErrorType.AMBIGUOUS_ALTS,\n ruleName: rule.name,\n occurrence: alternation.idx,\n alternatives: currAmbDescriptor.alts,\n };\n });\n\n return currErrors;\n}\n\nexport function checkPrefixAlternativesAmbiguities(\n alternatives: Alternative[],\n alternation: Alternation,\n rule: Rule,\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserAmbiguousAlternativesDefinitionError[] {\n // flatten\n const pathsAndIndices = reduce(\n alternatives,\n (result, currAlt, idx) => {\n const currPathsAndIdx = map(currAlt, (currPath) => {\n return { idx: idx, path: currPath };\n });\n return result.concat(currPathsAndIdx);\n },\n [] as { idx: number; path: TokenType[] }[],\n );\n\n const errors = compact(\n flatMap(pathsAndIndices, (currPathAndIdx) => {\n const alternativeGast = alternation.definition[currPathAndIdx.idx];\n // ignore (skip) ambiguities with this alternative\n if (alternativeGast.ignoreAmbiguities === true) {\n return [];\n }\n const targetIdx = currPathAndIdx.idx;\n const targetPath = currPathAndIdx.path;\n\n const prefixAmbiguitiesPathsAndIndices = filter(\n pathsAndIndices,\n (searchPathAndIdx) => {\n // prefix ambiguity can only be created from lower idx (higher priority) path\n return (\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation.definition[searchPathAndIdx.idx].ignoreAmbiguities !==\n true &&\n searchPathAndIdx.idx < targetIdx &&\n // checking for strict prefix because identical lookaheads\n // will be be detected using a different validation.\n isStrictPrefixOfPath(searchPathAndIdx.path, targetPath)\n );\n },\n );\n\n const currPathPrefixErrors = map(\n prefixAmbiguitiesPathsAndIndices,\n (currAmbPathAndIdx): IParserAmbiguousAlternativesDefinitionError => {\n const ambgIndices = [currAmbPathAndIdx.idx + 1, targetIdx + 1];\n const occurrence = alternation.idx === 0 ? \"\" : alternation.idx;\n\n const message = errMsgProvider.buildAlternationPrefixAmbiguityError({\n topLevelRule: rule,\n alternation: alternation,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbPathAndIdx.path,\n });\n return {\n message: message,\n type: ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS,\n ruleName: rule.name,\n occurrence: occurrence,\n alternatives: ambgIndices,\n };\n },\n );\n\n return currPathPrefixErrors;\n }),\n );\n\n return errors;\n}\n\nfunction checkTerminalAndNoneTerminalsNameSpace(\n topLevels: Rule[],\n tokenTypes: TokenType[],\n errMsgProvider: IGrammarValidatorErrorMessageProvider,\n): IParserDefinitionError[] {\n const errors: IParserDefinitionError[] = [];\n\n const tokenNames = map(tokenTypes, (currToken) => currToken.name);\n\n forEach(topLevels, (currRule) => {\n const currRuleName = currRule.name;\n if (includes(tokenNames, currRuleName)) {\n const errMsg = errMsgProvider.buildNamespaceConflictError(currRule);\n\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,\n ruleName: currRuleName,\n });\n }\n });\n\n return errors;\n}\n", "import { Rule } from \"@chevrotain/gast\";\nimport { defaults, forEach } from \"lodash-es\";\nimport { resolveGrammar as orgResolveGrammar } from \"../resolver.js\";\nimport { validateGrammar as orgValidateGrammar } from \"../checks.js\";\nimport {\n defaultGrammarResolverErrorProvider,\n defaultGrammarValidatorErrorProvider,\n} from \"../../errors_public.js\";\nimport { TokenType } from \"@chevrotain/types\";\nimport {\n IGrammarResolverErrorMessageProvider,\n IGrammarValidatorErrorMessageProvider,\n IParserDefinitionError,\n} from \"../types.js\";\n\ntype ResolveGrammarOpts = {\n rules: Rule[];\n errMsgProvider?: IGrammarResolverErrorMessageProvider;\n};\nexport function resolveGrammar(\n options: ResolveGrammarOpts,\n): IParserDefinitionError[] {\n const actualOptions: Required = defaults(options, {\n errMsgProvider: defaultGrammarResolverErrorProvider,\n });\n\n const topRulesTable: { [ruleName: string]: Rule } = {};\n forEach(options.rules, (rule) => {\n topRulesTable[rule.name] = rule;\n });\n return orgResolveGrammar(topRulesTable, actualOptions.errMsgProvider);\n}\n\nexport function validateGrammar(options: {\n rules: Rule[];\n tokenTypes: TokenType[];\n grammarName: string;\n errMsgProvider: IGrammarValidatorErrorMessageProvider;\n}): IParserDefinitionError[] {\n options = defaults(options, {\n errMsgProvider: defaultGrammarValidatorErrorProvider,\n });\n\n return orgValidateGrammar(\n options.rules,\n options.tokenTypes,\n options.errMsgProvider,\n options.grammarName,\n );\n}\n", "import { includes } from \"lodash-es\";\nimport {\n IRecognitionException,\n IRecognizerContext,\n IToken,\n} from \"@chevrotain/types\";\n\nconst MISMATCHED_TOKEN_EXCEPTION = \"MismatchedTokenException\";\nconst NO_VIABLE_ALT_EXCEPTION = \"NoViableAltException\";\nconst EARLY_EXIT_EXCEPTION = \"EarlyExitException\";\nconst NOT_ALL_INPUT_PARSED_EXCEPTION = \"NotAllInputParsedException\";\n\nconst RECOGNITION_EXCEPTION_NAMES = [\n MISMATCHED_TOKEN_EXCEPTION,\n NO_VIABLE_ALT_EXCEPTION,\n EARLY_EXIT_EXCEPTION,\n NOT_ALL_INPUT_PARSED_EXCEPTION,\n];\n\nObject.freeze(RECOGNITION_EXCEPTION_NAMES);\n\n// hacks to bypass no support for custom Errors in javascript/typescript\nexport function isRecognitionException(error: Error) {\n // can't do instanceof on hacked custom js exceptions\n return includes(RECOGNITION_EXCEPTION_NAMES, error.name);\n}\n\nabstract class RecognitionException\n extends Error\n implements IRecognitionException\n{\n context: IRecognizerContext;\n resyncedTokens: IToken[] = [];\n\n protected constructor(\n message: string,\n public token: IToken,\n ) {\n super(message);\n\n // fix prototype chain when typescript target is ES5\n Object.setPrototypeOf(this, new.target.prototype);\n\n /* istanbul ignore next - V8 workaround to remove constructor from stacktrace when typescript target is ES5 */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n\nexport class MismatchedTokenException extends RecognitionException {\n constructor(\n message: string,\n token: IToken,\n public previousToken: IToken,\n ) {\n super(message, token);\n this.name = MISMATCHED_TOKEN_EXCEPTION;\n }\n}\n\nexport class NoViableAltException extends RecognitionException {\n constructor(\n message: string,\n token: IToken,\n public previousToken: IToken,\n ) {\n super(message, token);\n this.name = NO_VIABLE_ALT_EXCEPTION;\n }\n}\n\nexport class NotAllInputParsedException extends RecognitionException {\n constructor(message: string, token: IToken) {\n super(message, token);\n this.name = NOT_ALL_INPUT_PARSED_EXCEPTION;\n }\n}\n\nexport class EarlyExitException extends RecognitionException {\n constructor(\n message: string,\n token: IToken,\n public previousToken: IToken,\n ) {\n super(message, token);\n this.name = EARLY_EXIT_EXCEPTION;\n }\n}\n", "import {\n createTokenInstance,\n EOF,\n tokenMatcher,\n} from \"../../../scan/tokens_public.js\";\nimport {\n AbstractNextTerminalAfterProductionWalker,\n IFirstAfterRepetition,\n} from \"../../grammar/interpreter.js\";\nimport {\n clone,\n dropRight,\n find,\n flatten,\n has,\n includes,\n isEmpty,\n map,\n} from \"lodash-es\";\nimport {\n IParserConfig,\n IToken,\n ITokenGrammarPath,\n TokenType,\n} from \"@chevrotain/types\";\nimport { MismatchedTokenException } from \"../../exceptions_public.js\";\nimport { IN } from \"../../constants.js\";\nimport { MixedInParser } from \"./parser_traits.js\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser.js\";\n\nexport const EOF_FOLLOW_KEY: any = {};\n\nexport interface IFollowKey {\n ruleName: string;\n idxInCallingRule: number;\n inRule: string;\n}\n\nexport const IN_RULE_RECOVERY_EXCEPTION = \"InRuleRecoveryException\";\n\nexport class InRuleRecoveryException extends Error {\n constructor(message: string) {\n super(message);\n this.name = IN_RULE_RECOVERY_EXCEPTION;\n }\n}\n\n/**\n * This trait is responsible for the error recovery and fault tolerant logic\n */\nexport class Recoverable {\n recoveryEnabled: boolean;\n firstAfterRepMap: Record;\n resyncFollows: Record;\n\n initRecoverable(config: IParserConfig) {\n this.firstAfterRepMap = {};\n this.resyncFollows = {};\n\n this.recoveryEnabled = has(config, \"recoveryEnabled\")\n ? (config.recoveryEnabled as boolean) // assumes end user provides the correct config value/type\n : DEFAULT_PARSER_CONFIG.recoveryEnabled;\n\n // performance optimization, NOOP will be inlined which\n // effectively means that this optional feature does not exist\n // when not used.\n if (this.recoveryEnabled) {\n this.attemptInRepetitionRecovery = attemptInRepetitionRecovery;\n }\n }\n\n public getTokenToInsert(tokType: TokenType): IToken {\n const tokToInsert = createTokenInstance(\n tokType,\n \"\",\n NaN,\n NaN,\n NaN,\n NaN,\n NaN,\n NaN,\n );\n tokToInsert.isInsertedInRecovery = true;\n return tokToInsert;\n }\n\n public canTokenTypeBeInsertedInRecovery(tokType: TokenType): boolean {\n return true;\n }\n\n public canTokenTypeBeDeletedInRecovery(tokType: TokenType): boolean {\n return true;\n }\n\n tryInRepetitionRecovery(\n this: MixedInParser,\n grammarRule: Function,\n grammarRuleArgs: any[],\n lookAheadFunc: () => boolean,\n expectedTokType: TokenType,\n ): void {\n // TODO: can the resyncTokenType be cached?\n const reSyncTokType = this.findReSyncTokenType();\n const savedLexerState = this.exportLexerState();\n const resyncedTokens: IToken[] = [];\n let passedResyncPoint = false;\n\n const nextTokenWithoutResync = this.LA(1);\n let currToken = this.LA(1);\n\n const generateErrorMessage = () => {\n const previousToken = this.LA(0);\n // we are preemptively re-syncing before an error has been detected, therefor we must reproduce\n // the error that would have been thrown\n const msg = this.errorMessageProvider.buildMismatchTokenMessage({\n expected: expectedTokType,\n actual: nextTokenWithoutResync,\n previous: previousToken,\n ruleName: this.getCurrRuleFullName(),\n });\n const error = new MismatchedTokenException(\n msg,\n nextTokenWithoutResync,\n this.LA(0),\n );\n // the first token here will be the original cause of the error, this is not part of the resyncedTokens property.\n error.resyncedTokens = dropRight(resyncedTokens);\n this.SAVE_ERROR(error);\n };\n\n while (!passedResyncPoint) {\n // re-synced to a point where we can safely exit the repetition/\n if (this.tokenMatcher(currToken, expectedTokType)) {\n generateErrorMessage();\n return; // must return here to avoid reverting the inputIdx\n } else if (lookAheadFunc.call(this)) {\n // we skipped enough tokens so we can resync right back into another iteration of the repetition grammar rule\n generateErrorMessage();\n // recursive invocation in other to support multiple re-syncs in the same top level repetition grammar rule\n grammarRule.apply(this, grammarRuleArgs);\n return; // must return here to avoid reverting the inputIdx\n } else if (this.tokenMatcher(currToken, reSyncTokType)) {\n passedResyncPoint = true;\n } else {\n currToken = this.SKIP_TOKEN();\n this.addToResyncTokens(currToken, resyncedTokens);\n }\n }\n\n // we were unable to find a CLOSER point to resync inside the Repetition, reset the state.\n // The parsing exception we were trying to prevent will happen in the NEXT parsing step. it may be handled by\n // \"between rules\" resync recovery later in the flow.\n this.importLexerState(savedLexerState);\n }\n\n shouldInRepetitionRecoveryBeTried(\n this: MixedInParser,\n expectTokAfterLastMatch: TokenType,\n nextTokIdx: number,\n notStuck: boolean | undefined,\n ): boolean {\n // Edge case of arriving from a MANY repetition which is stuck\n // Attempting recovery in this case could cause an infinite loop\n if (notStuck === false) {\n return false;\n }\n\n // no need to recover, next token is what we expect...\n if (this.tokenMatcher(this.LA(1), expectTokAfterLastMatch)) {\n return false;\n }\n\n // error recovery is disabled during backtracking as it can make the parser ignore a valid grammar path\n // and prefer some backtracking path that includes recovered errors.\n if (this.isBackTracking()) {\n return false;\n }\n\n // if we can perform inRule recovery (single token insertion or deletion) we always prefer that recovery algorithm\n // because if it works, it makes the least amount of changes to the input stream (greedy algorithm)\n //noinspection RedundantIfStatementJS\n if (\n this.canPerformInRuleRecovery(\n expectTokAfterLastMatch,\n this.getFollowsForInRuleRecovery(expectTokAfterLastMatch, nextTokIdx),\n )\n ) {\n return false;\n }\n\n return true;\n }\n\n // Error Recovery functionality\n getFollowsForInRuleRecovery(\n this: MixedInParser,\n tokType: TokenType,\n tokIdxInRule: number,\n ): TokenType[] {\n const grammarPath = this.getCurrentGrammarPath(tokType, tokIdxInRule);\n const follows = this.getNextPossibleTokenTypes(grammarPath);\n return follows;\n }\n\n tryInRuleRecovery(\n this: MixedInParser,\n expectedTokType: TokenType,\n follows: TokenType[],\n ): IToken {\n if (this.canRecoverWithSingleTokenInsertion(expectedTokType, follows)) {\n const tokToInsert = this.getTokenToInsert(expectedTokType);\n return tokToInsert;\n }\n\n if (this.canRecoverWithSingleTokenDeletion(expectedTokType)) {\n const nextTok = this.SKIP_TOKEN();\n this.consumeToken();\n return nextTok;\n }\n\n throw new InRuleRecoveryException(\"sad sad panda\");\n }\n\n canPerformInRuleRecovery(\n this: MixedInParser,\n expectedToken: TokenType,\n follows: TokenType[],\n ): boolean {\n return (\n this.canRecoverWithSingleTokenInsertion(expectedToken, follows) ||\n this.canRecoverWithSingleTokenDeletion(expectedToken)\n );\n }\n\n canRecoverWithSingleTokenInsertion(\n this: MixedInParser,\n expectedTokType: TokenType,\n follows: TokenType[],\n ): boolean {\n if (!this.canTokenTypeBeInsertedInRecovery(expectedTokType)) {\n return false;\n }\n\n // must know the possible following tokens to perform single token insertion\n if (isEmpty(follows)) {\n return false;\n }\n\n const mismatchedTok = this.LA(1);\n const isMisMatchedTokInFollows =\n find(follows, (possibleFollowsTokType: TokenType) => {\n return this.tokenMatcher(mismatchedTok, possibleFollowsTokType);\n }) !== undefined;\n\n return isMisMatchedTokInFollows;\n }\n\n canRecoverWithSingleTokenDeletion(\n this: MixedInParser,\n expectedTokType: TokenType,\n ): boolean {\n if (!this.canTokenTypeBeDeletedInRecovery(expectedTokType)) {\n return false;\n }\n\n const isNextTokenWhatIsExpected = this.tokenMatcher(\n this.LA(2),\n expectedTokType,\n );\n return isNextTokenWhatIsExpected;\n }\n\n isInCurrentRuleReSyncSet(\n this: MixedInParser,\n tokenTypeIdx: TokenType,\n ): boolean {\n const followKey = this.getCurrFollowKey();\n const currentRuleReSyncSet = this.getFollowSetFromFollowKey(followKey);\n return includes(currentRuleReSyncSet, tokenTypeIdx);\n }\n\n findReSyncTokenType(this: MixedInParser): TokenType {\n const allPossibleReSyncTokTypes = this.flattenFollowSet();\n // this loop will always terminate as EOF is always in the follow stack and also always (virtually) in the input\n let nextToken = this.LA(1);\n let k = 2;\n while (true) {\n const foundMatch = find(allPossibleReSyncTokTypes, (resyncTokType) => {\n const canMatch = tokenMatcher(nextToken, resyncTokType);\n return canMatch;\n });\n if (foundMatch !== undefined) {\n return foundMatch;\n }\n nextToken = this.LA(k);\n k++;\n }\n }\n\n getCurrFollowKey(this: MixedInParser): IFollowKey {\n // the length is at least one as we always add the ruleName to the stack before invoking the rule.\n if (this.RULE_STACK.length === 1) {\n return EOF_FOLLOW_KEY;\n }\n const currRuleShortName = this.getLastExplicitRuleShortName();\n const currRuleIdx = this.getLastExplicitRuleOccurrenceIndex();\n const prevRuleShortName = this.getPreviousExplicitRuleShortName();\n\n return {\n ruleName: this.shortRuleNameToFullName(currRuleShortName),\n idxInCallingRule: currRuleIdx,\n inRule: this.shortRuleNameToFullName(prevRuleShortName),\n };\n }\n\n buildFullFollowKeyStack(this: MixedInParser): IFollowKey[] {\n const explicitRuleStack = this.RULE_STACK;\n const explicitOccurrenceStack = this.RULE_OCCURRENCE_STACK;\n\n return map(explicitRuleStack, (ruleName, idx) => {\n if (idx === 0) {\n return EOF_FOLLOW_KEY;\n }\n return {\n ruleName: this.shortRuleNameToFullName(ruleName),\n idxInCallingRule: explicitOccurrenceStack[idx],\n inRule: this.shortRuleNameToFullName(explicitRuleStack[idx - 1]),\n };\n });\n }\n\n flattenFollowSet(this: MixedInParser): TokenType[] {\n const followStack = map(this.buildFullFollowKeyStack(), (currKey) => {\n return this.getFollowSetFromFollowKey(currKey);\n });\n return flatten(followStack);\n }\n\n getFollowSetFromFollowKey(\n this: MixedInParser,\n followKey: IFollowKey,\n ): TokenType[] {\n if (followKey === EOF_FOLLOW_KEY) {\n return [EOF];\n }\n\n const followName =\n followKey.ruleName + followKey.idxInCallingRule + IN + followKey.inRule;\n\n return this.resyncFollows[followName];\n }\n\n // It does not make any sense to include a virtual EOF token in the list of resynced tokens\n // as EOF does not really exist and thus does not contain any useful information (line/column numbers)\n addToResyncTokens(\n this: MixedInParser,\n token: IToken,\n resyncTokens: IToken[],\n ): IToken[] {\n if (!this.tokenMatcher(token, EOF)) {\n resyncTokens.push(token);\n }\n return resyncTokens;\n }\n\n reSyncTo(this: MixedInParser, tokType: TokenType): IToken[] {\n const resyncedTokens: IToken[] = [];\n let nextTok = this.LA(1);\n while (this.tokenMatcher(nextTok, tokType) === false) {\n nextTok = this.SKIP_TOKEN();\n this.addToResyncTokens(nextTok, resyncedTokens);\n }\n // the last token is not part of the error.\n return dropRight(resyncedTokens);\n }\n\n attemptInRepetitionRecovery(\n this: MixedInParser,\n prodFunc: Function,\n args: any[],\n lookaheadFunc: () => boolean,\n dslMethodIdx: number,\n prodOccurrence: number,\n nextToksWalker: typeof AbstractNextTerminalAfterProductionWalker,\n notStuck?: boolean,\n ): void {\n // by default this is a NO-OP\n // The actual implementation is with the function(not method) below\n }\n\n getCurrentGrammarPath(\n this: MixedInParser,\n tokType: TokenType,\n tokIdxInRule: number,\n ): ITokenGrammarPath {\n const pathRuleStack: string[] = this.getHumanReadableRuleStack();\n const pathOccurrenceStack: number[] = clone(this.RULE_OCCURRENCE_STACK);\n const grammarPath: any = {\n ruleStack: pathRuleStack,\n occurrenceStack: pathOccurrenceStack,\n lastTok: tokType,\n lastTokOccurrence: tokIdxInRule,\n };\n\n return grammarPath;\n }\n getHumanReadableRuleStack(this: MixedInParser): string[] {\n return map(this.RULE_STACK, (currShortName) =>\n this.shortRuleNameToFullName(currShortName),\n );\n }\n}\n\nexport function attemptInRepetitionRecovery(\n this: MixedInParser,\n prodFunc: Function,\n args: any[],\n lookaheadFunc: () => boolean,\n dslMethodIdx: number,\n prodOccurrence: number,\n nextToksWalker: typeof AbstractNextTerminalAfterProductionWalker,\n notStuck?: boolean,\n): void {\n const key = this.getKeyForAutomaticLookahead(dslMethodIdx, prodOccurrence);\n let firstAfterRepInfo = this.firstAfterRepMap[key];\n if (firstAfterRepInfo === undefined) {\n const currRuleName = this.getCurrRuleFullName();\n const ruleGrammar = this.getGAstProductions()[currRuleName];\n const walker: AbstractNextTerminalAfterProductionWalker =\n new nextToksWalker(ruleGrammar, prodOccurrence);\n firstAfterRepInfo = walker.startWalking();\n this.firstAfterRepMap[key] = firstAfterRepInfo;\n }\n\n let expectTokAfterLastMatch = firstAfterRepInfo.token;\n let nextTokIdx = firstAfterRepInfo.occurrence;\n const isEndOfRule = firstAfterRepInfo.isEndOfRule;\n\n // special edge case of a TOP most repetition after which the input should END.\n // this will force an attempt for inRule recovery in that scenario.\n if (\n this.RULE_STACK.length === 1 &&\n isEndOfRule &&\n expectTokAfterLastMatch === undefined\n ) {\n expectTokAfterLastMatch = EOF;\n nextTokIdx = 1;\n }\n\n // We don't have anything to re-sync to...\n // this condition was extracted from `shouldInRepetitionRecoveryBeTried` to act as a type-guard\n if (expectTokAfterLastMatch === undefined || nextTokIdx === undefined) {\n return;\n }\n\n if (\n this.shouldInRepetitionRecoveryBeTried(\n expectTokAfterLastMatch,\n nextTokIdx,\n notStuck,\n )\n ) {\n // TODO: performance optimization: instead of passing the original args here, we modify\n // the args param (or create a new one) and make sure the lookahead func is explicitly provided\n // to avoid searching the cache for it once more.\n this.tryInRepetitionRecovery(\n prodFunc,\n args,\n lookaheadFunc,\n expectTokAfterLastMatch,\n );\n }\n}\n", "// Lookahead keys are 32Bit integers in the form\n// TTTTTTTT-ZZZZZZZZZZZZ-YYYY-XXXXXXXX\n// XXXX -> Occurrence Index bitmap.\n// YYYY -> DSL Method Type bitmap.\n// ZZZZZZZZZZZZZZZ -> Rule short Index bitmap.\n// TTTTTTTTT -> alternation alternative index bitmap\n\nexport const BITS_FOR_METHOD_TYPE = 4;\nexport const BITS_FOR_OCCURRENCE_IDX = 8;\nexport const BITS_FOR_RULE_IDX = 12;\n// TODO: validation, this means that there may at most 2^8 --> 256 alternatives for an alternation.\nexport const BITS_FOR_ALT_IDX = 8;\n\n// short string used as part of mapping keys.\n// being short improves the performance when composing KEYS for maps out of these\n// The 5 - 8 bits (16 possible values, are reserved for the DSL method indices)\nexport const OR_IDX = 1 << BITS_FOR_OCCURRENCE_IDX;\nexport const OPTION_IDX = 2 << BITS_FOR_OCCURRENCE_IDX;\nexport const MANY_IDX = 3 << BITS_FOR_OCCURRENCE_IDX;\nexport const AT_LEAST_ONE_IDX = 4 << BITS_FOR_OCCURRENCE_IDX;\nexport const MANY_SEP_IDX = 5 << BITS_FOR_OCCURRENCE_IDX;\nexport const AT_LEAST_ONE_SEP_IDX = 6 << BITS_FOR_OCCURRENCE_IDX;\n\n// this actually returns a number, but it is always used as a string (object prop key)\nexport function getKeyForAutomaticLookahead(\n ruleIdx: number,\n dslMethodIdx: number,\n occurrence: number,\n): number {\n return occurrence | dslMethodIdx | ruleIdx;\n}\n\nconst BITS_START_FOR_ALT_IDX = 32 - BITS_FOR_ALT_IDX;\n", "import {\n ILookaheadStrategy,\n ILookaheadValidationError,\n IOrAlt,\n OptionalProductionType,\n Rule,\n TokenType,\n} from \"@chevrotain/types\";\nimport { flatMap, isEmpty } from \"lodash-es\";\nimport { defaultGrammarValidatorErrorProvider } from \"../errors_public.js\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser/parser.js\";\nimport {\n validateAmbiguousAlternationAlternatives,\n validateEmptyOrAlternative,\n validateNoLeftRecursion,\n validateSomeNonEmptyLookaheadPath,\n} from \"./checks.js\";\nimport {\n buildAlternativesLookAheadFunc,\n buildLookaheadFuncForOptionalProd,\n buildLookaheadFuncForOr,\n buildSingleAlternativeLookaheadFunction,\n getProdType,\n} from \"./lookahead.js\";\nimport { IParserDefinitionError } from \"./types.js\";\n\nexport class LLkLookaheadStrategy implements ILookaheadStrategy {\n readonly maxLookahead: number;\n\n constructor(options?: { maxLookahead?: number }) {\n this.maxLookahead =\n options?.maxLookahead ?? DEFAULT_PARSER_CONFIG.maxLookahead;\n }\n\n validate(options: {\n rules: Rule[];\n tokenTypes: TokenType[];\n grammarName: string;\n }): ILookaheadValidationError[] {\n const leftRecursionErrors = this.validateNoLeftRecursion(options.rules);\n\n if (isEmpty(leftRecursionErrors)) {\n const emptyAltErrors = this.validateEmptyOrAlternatives(options.rules);\n const ambiguousAltsErrors = this.validateAmbiguousAlternationAlternatives(\n options.rules,\n this.maxLookahead,\n );\n const emptyRepetitionErrors = this.validateSomeNonEmptyLookaheadPath(\n options.rules,\n this.maxLookahead,\n );\n const allErrors = [\n ...leftRecursionErrors,\n ...emptyAltErrors,\n ...ambiguousAltsErrors,\n ...emptyRepetitionErrors,\n ];\n return allErrors;\n }\n return leftRecursionErrors;\n }\n\n validateNoLeftRecursion(rules: Rule[]): IParserDefinitionError[] {\n return flatMap(rules, (currTopRule) =>\n validateNoLeftRecursion(\n currTopRule,\n currTopRule,\n defaultGrammarValidatorErrorProvider,\n ),\n );\n }\n\n validateEmptyOrAlternatives(rules: Rule[]): IParserDefinitionError[] {\n return flatMap(rules, (currTopRule) =>\n validateEmptyOrAlternative(\n currTopRule,\n defaultGrammarValidatorErrorProvider,\n ),\n );\n }\n\n validateAmbiguousAlternationAlternatives(\n rules: Rule[],\n maxLookahead: number,\n ): IParserDefinitionError[] {\n return flatMap(rules, (currTopRule) =>\n validateAmbiguousAlternationAlternatives(\n currTopRule,\n maxLookahead,\n defaultGrammarValidatorErrorProvider,\n ),\n );\n }\n\n validateSomeNonEmptyLookaheadPath(\n rules: Rule[],\n maxLookahead: number,\n ): IParserDefinitionError[] {\n return validateSomeNonEmptyLookaheadPath(\n rules,\n maxLookahead,\n defaultGrammarValidatorErrorProvider,\n );\n }\n\n buildLookaheadForAlternation(options: {\n prodOccurrence: number;\n rule: Rule;\n maxLookahead: number;\n hasPredicates: boolean;\n dynamicTokensEnabled: boolean;\n }): (orAlts?: IOrAlt[] | undefined) => number | undefined {\n return buildLookaheadFuncForOr(\n options.prodOccurrence,\n options.rule,\n options.maxLookahead,\n options.hasPredicates,\n options.dynamicTokensEnabled,\n buildAlternativesLookAheadFunc,\n );\n }\n\n buildLookaheadForOptional(options: {\n prodOccurrence: number;\n prodType: OptionalProductionType;\n rule: Rule;\n maxLookahead: number;\n dynamicTokensEnabled: boolean;\n }): () => boolean {\n return buildLookaheadFuncForOptionalProd(\n options.prodOccurrence,\n options.rule,\n options.maxLookahead,\n options.dynamicTokensEnabled,\n getProdType(options.prodType),\n buildSingleAlternativeLookaheadFunction,\n );\n }\n}\n", "import { forEach, has } from \"lodash-es\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser.js\";\nimport {\n ILookaheadStrategy,\n IParserConfig,\n OptionalProductionType,\n} from \"@chevrotain/types\";\nimport {\n AT_LEAST_ONE_IDX,\n AT_LEAST_ONE_SEP_IDX,\n getKeyForAutomaticLookahead,\n MANY_IDX,\n MANY_SEP_IDX,\n OPTION_IDX,\n OR_IDX,\n} from \"../../grammar/keys.js\";\nimport { MixedInParser } from \"./parser_traits.js\";\nimport {\n Alternation,\n GAstVisitor,\n getProductionDslName,\n Option,\n Repetition,\n RepetitionMandatory,\n RepetitionMandatoryWithSeparator,\n RepetitionWithSeparator,\n Rule,\n} from \"@chevrotain/gast\";\nimport { LLkLookaheadStrategy } from \"../../grammar/llk_lookahead.js\";\n\n/**\n * Trait responsible for the lookahead related utilities and optimizations.\n */\nexport class LooksAhead {\n maxLookahead: number;\n lookAheadFuncsCache: any;\n dynamicTokensEnabled: boolean;\n lookaheadStrategy: ILookaheadStrategy;\n\n initLooksAhead(config: IParserConfig) {\n this.dynamicTokensEnabled = has(config, \"dynamicTokensEnabled\")\n ? (config.dynamicTokensEnabled as boolean) // assumes end user provides the correct config value/type\n : DEFAULT_PARSER_CONFIG.dynamicTokensEnabled;\n\n this.maxLookahead = has(config, \"maxLookahead\")\n ? (config.maxLookahead as number) // assumes end user provides the correct config value/type\n : DEFAULT_PARSER_CONFIG.maxLookahead;\n\n this.lookaheadStrategy = has(config, \"lookaheadStrategy\")\n ? (config.lookaheadStrategy as ILookaheadStrategy) // assumes end user provides the correct config value/type\n : new LLkLookaheadStrategy({ maxLookahead: this.maxLookahead });\n\n this.lookAheadFuncsCache = new Map();\n }\n\n preComputeLookaheadFunctions(this: MixedInParser, rules: Rule[]): void {\n forEach(rules, (currRule) => {\n this.TRACE_INIT(`${currRule.name} Rule Lookahead`, () => {\n const {\n alternation,\n repetition,\n option,\n repetitionMandatory,\n repetitionMandatoryWithSeparator,\n repetitionWithSeparator,\n } = collectMethods(currRule);\n\n forEach(alternation, (currProd) => {\n const prodIdx = currProd.idx === 0 ? \"\" : currProd.idx;\n this.TRACE_INIT(`${getProductionDslName(currProd)}${prodIdx}`, () => {\n const laFunc = this.lookaheadStrategy.buildLookaheadForAlternation({\n prodOccurrence: currProd.idx,\n rule: currRule,\n maxLookahead: currProd.maxLookahead || this.maxLookahead,\n hasPredicates: currProd.hasPredicates,\n dynamicTokensEnabled: this.dynamicTokensEnabled,\n });\n\n const key = getKeyForAutomaticLookahead(\n this.fullRuleNameToShort[currRule.name],\n OR_IDX,\n currProd.idx,\n );\n this.setLaFuncCache(key, laFunc);\n });\n });\n\n forEach(repetition, (currProd) => {\n this.computeLookaheadFunc(\n currRule,\n currProd.idx,\n MANY_IDX,\n \"Repetition\",\n currProd.maxLookahead,\n getProductionDslName(currProd),\n );\n });\n\n forEach(option, (currProd) => {\n this.computeLookaheadFunc(\n currRule,\n currProd.idx,\n OPTION_IDX,\n \"Option\",\n currProd.maxLookahead,\n getProductionDslName(currProd),\n );\n });\n\n forEach(repetitionMandatory, (currProd) => {\n this.computeLookaheadFunc(\n currRule,\n currProd.idx,\n AT_LEAST_ONE_IDX,\n \"RepetitionMandatory\",\n currProd.maxLookahead,\n getProductionDslName(currProd),\n );\n });\n\n forEach(repetitionMandatoryWithSeparator, (currProd) => {\n this.computeLookaheadFunc(\n currRule,\n currProd.idx,\n AT_LEAST_ONE_SEP_IDX,\n \"RepetitionMandatoryWithSeparator\",\n currProd.maxLookahead,\n getProductionDslName(currProd),\n );\n });\n\n forEach(repetitionWithSeparator, (currProd) => {\n this.computeLookaheadFunc(\n currRule,\n currProd.idx,\n MANY_SEP_IDX,\n \"RepetitionWithSeparator\",\n currProd.maxLookahead,\n getProductionDslName(currProd),\n );\n });\n });\n });\n }\n\n computeLookaheadFunc(\n this: MixedInParser,\n rule: Rule,\n prodOccurrence: number,\n prodKey: number,\n prodType: OptionalProductionType,\n prodMaxLookahead: number | undefined,\n dslMethodName: string,\n ): void {\n this.TRACE_INIT(\n `${dslMethodName}${prodOccurrence === 0 ? \"\" : prodOccurrence}`,\n () => {\n const laFunc = this.lookaheadStrategy.buildLookaheadForOptional({\n prodOccurrence,\n rule,\n maxLookahead: prodMaxLookahead || this.maxLookahead,\n dynamicTokensEnabled: this.dynamicTokensEnabled,\n prodType,\n });\n const key = getKeyForAutomaticLookahead(\n this.fullRuleNameToShort[rule.name],\n prodKey,\n prodOccurrence,\n );\n this.setLaFuncCache(key, laFunc);\n },\n );\n }\n\n // this actually returns a number, but it is always used as a string (object prop key)\n getKeyForAutomaticLookahead(\n this: MixedInParser,\n dslMethodIdx: number,\n occurrence: number,\n ): number {\n const currRuleShortName: any = this.getLastExplicitRuleShortName();\n return getKeyForAutomaticLookahead(\n currRuleShortName,\n dslMethodIdx,\n occurrence,\n );\n }\n\n getLaFuncFromCache(this: MixedInParser, key: number): Function {\n return this.lookAheadFuncsCache.get(key);\n }\n\n /* istanbul ignore next */\n setLaFuncCache(this: MixedInParser, key: number, value: Function): void {\n this.lookAheadFuncsCache.set(key, value);\n }\n}\n\nclass DslMethodsCollectorVisitor extends GAstVisitor {\n public dslMethods: {\n option: Option[];\n alternation: Alternation[];\n repetition: Repetition[];\n repetitionWithSeparator: RepetitionWithSeparator[];\n repetitionMandatory: RepetitionMandatory[];\n repetitionMandatoryWithSeparator: RepetitionMandatoryWithSeparator[];\n } = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: [],\n };\n\n reset() {\n this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: [],\n };\n }\n\n public visitOption(option: Option): void {\n this.dslMethods.option.push(option);\n }\n\n public visitRepetitionWithSeparator(manySep: RepetitionWithSeparator): void {\n this.dslMethods.repetitionWithSeparator.push(manySep);\n }\n\n public visitRepetitionMandatory(atLeastOne: RepetitionMandatory): void {\n this.dslMethods.repetitionMandatory.push(atLeastOne);\n }\n\n public visitRepetitionMandatoryWithSeparator(\n atLeastOneSep: RepetitionMandatoryWithSeparator,\n ): void {\n this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep);\n }\n\n public visitRepetition(many: Repetition): void {\n this.dslMethods.repetition.push(many);\n }\n\n public visitAlternation(or: Alternation): void {\n this.dslMethods.alternation.push(or);\n }\n}\n\nconst collectorVisitor = new DslMethodsCollectorVisitor();\nexport function collectMethods(rule: Rule): {\n option: Option[];\n alternation: Alternation[];\n repetition: Repetition[];\n repetitionWithSeparator: RepetitionWithSeparator[];\n repetitionMandatory: RepetitionMandatory[];\n repetitionMandatoryWithSeparator: RepetitionMandatoryWithSeparator[];\n} {\n collectorVisitor.reset();\n rule.accept(collectorVisitor);\n const dslMethods = collectorVisitor.dslMethods;\n // avoid uncleaned references\n collectorVisitor.reset();\n return dslMethods;\n}\n", "import { CstNode, CstNodeLocation, IToken } from \"@chevrotain/types\";\n\n/**\n * This nodeLocation tracking is not efficient and should only be used\n * when error recovery is enabled or the Token Vector contains virtual Tokens\n * (e.g, Python Indent/Outdent)\n * As it executes the calculation for every single terminal/nonTerminal\n * and does not rely on the fact the token vector is **sorted**\n */\nexport function setNodeLocationOnlyOffset(\n currNodeLocation: CstNodeLocation,\n newLocationInfo: Required>,\n): void {\n // First (valid) update for this cst node\n if (isNaN(currNodeLocation.startOffset) === true) {\n // assumption1: Token location information is either NaN or a valid number\n // assumption2: Token location information is fully valid if it exist\n // (both start/end offsets exist and are numbers).\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n // Once the startOffset has been updated with a valid number it should never receive\n // any farther updates as the Token vector is sorted.\n // We still have to check this this condition for every new possible location info\n // because with error recovery enabled we may encounter invalid tokens (NaN location props)\n else if (currNodeLocation.endOffset! < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n}\n\n/**\n * This nodeLocation tracking is not efficient and should only be used\n * when error recovery is enabled or the Token Vector contains virtual Tokens\n * (e.g, Python Indent/Outdent)\n * As it executes the calculation for every single terminal/nonTerminal\n * and does not rely on the fact the token vector is **sorted**\n */\nexport function setNodeLocationFull(\n currNodeLocation: CstNodeLocation,\n newLocationInfo: CstNodeLocation,\n): void {\n // First (valid) update for this cst node\n if (isNaN(currNodeLocation.startOffset) === true) {\n // assumption1: Token location information is either NaN or a valid number\n // assumption2: Token location information is fully valid if it exist\n // (all start/end props exist and are numbers).\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.startColumn = newLocationInfo.startColumn;\n currNodeLocation.startLine = newLocationInfo.startLine;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n // Once the start props has been updated with a valid number it should never receive\n // any farther updates as the Token vector is sorted.\n // We still have to check this this condition for every new possible location info\n // because with error recovery enabled we may encounter invalid tokens (NaN location props)\n else if (currNodeLocation.endOffset! < newLocationInfo.endOffset! === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n}\n\nexport function addTerminalToCst(\n node: CstNode,\n token: IToken,\n tokenTypeName: string,\n): void {\n if (node.children[tokenTypeName] === undefined) {\n node.children[tokenTypeName] = [token];\n } else {\n node.children[tokenTypeName].push(token);\n }\n}\n\nexport function addNoneTerminalToCst(\n node: CstNode,\n ruleName: string,\n ruleResult: any,\n): void {\n if (node.children[ruleName] === undefined) {\n node.children[ruleName] = [ruleResult];\n } else {\n node.children[ruleName].push(ruleResult);\n }\n}\n", "const NAME = \"name\";\n\nexport function defineNameProp(obj: {}, nameValue: string): void {\n Object.defineProperty(obj, NAME, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: nameValue,\n });\n}\n", "import {\n compact,\n filter,\n forEach,\n isArray,\n isEmpty,\n isFunction,\n isUndefined,\n keys,\n map,\n} from \"lodash-es\";\nimport { defineNameProp } from \"../../lang/lang_extensions.js\";\nimport { CstNode, ICstVisitor } from \"@chevrotain/types\";\n\nexport function defaultVisit(ctx: any, param: IN): void {\n const childrenNames = keys(ctx);\n const childrenNamesLength = childrenNames.length;\n for (let i = 0; i < childrenNamesLength; i++) {\n const currChildName = childrenNames[i];\n const currChildArray = ctx[currChildName];\n const currChildArrayLength = currChildArray.length;\n for (let j = 0; j < currChildArrayLength; j++) {\n const currChild: any = currChildArray[j];\n // distinction between Tokens Children and CstNode children\n if (currChild.tokenTypeIdx === undefined) {\n this[currChild.name](currChild.children, param);\n }\n }\n }\n // defaultVisit does not support generic out param\n}\n\nexport function createBaseSemanticVisitorConstructor(\n grammarName: string,\n ruleNames: string[],\n): {\n new (...args: any[]): ICstVisitor;\n} {\n const derivedConstructor: any = function () {};\n\n // can be overwritten according to:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/\n // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname\n defineNameProp(derivedConstructor, grammarName + \"BaseSemantics\");\n\n const semanticProto = {\n visit: function (cstNode: CstNode | CstNode[], param: any) {\n // enables writing more concise visitor methods when CstNode has only a single child\n if (isArray(cstNode)) {\n // A CST Node's children dictionary can never have empty arrays as values\n // If a key is defined there will be at least one element in the corresponding value array.\n cstNode = cstNode[0];\n }\n\n // enables passing optional CstNodes concisely.\n if (isUndefined(cstNode)) {\n return undefined;\n }\n\n return this[cstNode.name](cstNode.children, param);\n },\n\n validateVisitor: function () {\n const semanticDefinitionErrors = validateVisitor(this, ruleNames);\n if (!isEmpty(semanticDefinitionErrors)) {\n const errorMessages = map(\n semanticDefinitionErrors,\n (currDefError) => currDefError.msg,\n );\n throw Error(\n `Errors Detected in CST Visitor <${this.constructor.name}>:\\n\\t` +\n `${errorMessages.join(\"\\n\\n\").replace(/\\n/g, \"\\n\\t\")}`,\n );\n }\n },\n };\n\n derivedConstructor.prototype = semanticProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n\n derivedConstructor._RULE_NAMES = ruleNames;\n\n return derivedConstructor;\n}\n\nexport function createBaseVisitorConstructorWithDefaults(\n grammarName: string,\n ruleNames: string[],\n baseConstructor: Function,\n): {\n new (...args: any[]): ICstVisitor;\n} {\n const derivedConstructor: any = function () {};\n\n // can be overwritten according to:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/\n // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname\n defineNameProp(derivedConstructor, grammarName + \"BaseSemanticsWithDefaults\");\n\n const withDefaultsProto = Object.create(baseConstructor.prototype);\n forEach(ruleNames, (ruleName) => {\n withDefaultsProto[ruleName] = defaultVisit;\n });\n\n derivedConstructor.prototype = withDefaultsProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n\n return derivedConstructor;\n}\n\nexport enum CstVisitorDefinitionError {\n REDUNDANT_METHOD,\n MISSING_METHOD,\n}\n\nexport interface IVisitorDefinitionError {\n msg: string;\n type: CstVisitorDefinitionError;\n methodName: string;\n}\n\nexport function validateVisitor(\n visitorInstance: ICstVisitor,\n ruleNames: string[],\n): IVisitorDefinitionError[] {\n const missingErrors = validateMissingCstMethods(visitorInstance, ruleNames);\n\n return missingErrors;\n}\n\nexport function validateMissingCstMethods(\n visitorInstance: ICstVisitor,\n ruleNames: string[],\n): IVisitorDefinitionError[] {\n const missingRuleNames = filter(ruleNames, (currRuleName) => {\n return isFunction((visitorInstance as any)[currRuleName]) === false;\n });\n\n const errors: IVisitorDefinitionError[] = map(\n missingRuleNames,\n (currRuleName) => {\n return {\n msg: `Missing visitor method: <${currRuleName}> on ${(\n visitorInstance.constructor.name\n )} CST Visitor.`,\n type: CstVisitorDefinitionError.MISSING_METHOD,\n methodName: currRuleName,\n };\n },\n );\n\n return compact(errors);\n}\n", "import {\n addNoneTerminalToCst,\n addTerminalToCst,\n setNodeLocationFull,\n setNodeLocationOnlyOffset,\n} from \"../../cst/cst.js\";\nimport { has, isUndefined, keys, noop } from \"lodash-es\";\nimport {\n createBaseSemanticVisitorConstructor,\n createBaseVisitorConstructorWithDefaults,\n} from \"../../cst/cst_visitor.js\";\nimport {\n CstNode,\n CstNodeLocation,\n ICstVisitor,\n IParserConfig,\n IToken,\n nodeLocationTrackingOptions,\n} from \"@chevrotain/types\";\nimport { MixedInParser } from \"./parser_traits.js\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser.js\";\n\n/**\n * This trait is responsible for the CST building logic.\n */\nexport class TreeBuilder {\n outputCst: boolean;\n CST_STACK: CstNode[];\n baseCstVisitorConstructor: Function;\n baseCstVisitorWithDefaultsConstructor: Function;\n\n // dynamically assigned Methods\n setNodeLocationFromNode: (\n nodeLocation: CstNodeLocation,\n locationInformation: CstNodeLocation,\n ) => void;\n setNodeLocationFromToken: (\n nodeLocation: CstNodeLocation,\n locationInformation: CstNodeLocation,\n ) => void;\n cstPostRule: (this: MixedInParser, ruleCstNode: CstNode) => void;\n\n setInitialNodeLocation: (cstNode: CstNode) => void;\n nodeLocationTracking: nodeLocationTrackingOptions;\n\n initTreeBuilder(this: MixedInParser, config: IParserConfig) {\n this.CST_STACK = [];\n\n // outputCst is no longer exposed/defined in the pubic API\n this.outputCst = (config as any).outputCst;\n\n this.nodeLocationTracking = has(config, \"nodeLocationTracking\")\n ? (config.nodeLocationTracking as nodeLocationTrackingOptions) // assumes end user provides the correct config value/type\n : DEFAULT_PARSER_CONFIG.nodeLocationTracking;\n\n if (!this.outputCst) {\n this.cstInvocationStateUpdate = noop;\n this.cstFinallyStateUpdate = noop;\n this.cstPostTerminal = noop;\n this.cstPostNonTerminal = noop;\n this.cstPostRule = noop;\n } else {\n if (/full/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = setNodeLocationFull;\n this.setNodeLocationFromNode = setNodeLocationFull;\n this.cstPostRule = noop;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery;\n } else {\n this.setNodeLocationFromToken = noop;\n this.setNodeLocationFromNode = noop;\n this.cstPostRule = this.cstPostRuleFull;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular;\n }\n } else if (/onlyOffset/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = setNodeLocationOnlyOffset;\n this.setNodeLocationFromNode = setNodeLocationOnlyOffset;\n this.cstPostRule = noop;\n this.setInitialNodeLocation =\n this.setInitialNodeLocationOnlyOffsetRecovery;\n } else {\n this.setNodeLocationFromToken = noop;\n this.setNodeLocationFromNode = noop;\n this.cstPostRule = this.cstPostRuleOnlyOffset;\n this.setInitialNodeLocation =\n this.setInitialNodeLocationOnlyOffsetRegular;\n }\n } else if (/none/i.test(this.nodeLocationTracking)) {\n this.setNodeLocationFromToken = noop;\n this.setNodeLocationFromNode = noop;\n this.cstPostRule = noop;\n this.setInitialNodeLocation = noop;\n } else {\n throw Error(\n `Invalid config option: \"${config.nodeLocationTracking}\"`,\n );\n }\n }\n }\n\n setInitialNodeLocationOnlyOffsetRecovery(\n this: MixedInParser,\n cstNode: any,\n ): void {\n cstNode.location = {\n startOffset: NaN,\n endOffset: NaN,\n };\n }\n\n setInitialNodeLocationOnlyOffsetRegular(\n this: MixedInParser,\n cstNode: any,\n ): void {\n cstNode.location = {\n // without error recovery the starting Location of a new CstNode is guaranteed\n // To be the next Token's startOffset (for valid inputs).\n // For invalid inputs there won't be any CSTOutput so this potential\n // inaccuracy does not matter\n startOffset: this.LA(1).startOffset,\n endOffset: NaN,\n };\n }\n\n setInitialNodeLocationFullRecovery(this: MixedInParser, cstNode: any): void {\n cstNode.location = {\n startOffset: NaN,\n startLine: NaN,\n startColumn: NaN,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN,\n };\n }\n\n /**\n * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work\n\n * @param cstNode\n */\n setInitialNodeLocationFullRegular(this: MixedInParser, cstNode: any): void {\n const nextToken = this.LA(1);\n cstNode.location = {\n startOffset: nextToken.startOffset,\n startLine: nextToken.startLine,\n startColumn: nextToken.startColumn,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN,\n };\n }\n\n cstInvocationStateUpdate(this: MixedInParser, fullRuleName: string): void {\n const cstNode: CstNode = {\n name: fullRuleName,\n children: Object.create(null),\n };\n\n this.setInitialNodeLocation(cstNode);\n this.CST_STACK.push(cstNode);\n }\n\n cstFinallyStateUpdate(this: MixedInParser): void {\n this.CST_STACK.pop();\n }\n\n cstPostRuleFull(this: MixedInParser, ruleCstNode: CstNode): void {\n // casts to `required` are safe because `cstPostRuleFull` should only be invoked when full location is enabled\n const prevToken = this.LA(0) as Required;\n const loc = ruleCstNode.location as Required;\n\n // If this condition is true it means we consumed at least one Token\n // In this CstNode.\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n loc.endLine = prevToken.endLine;\n loc.endColumn = prevToken.endColumn;\n }\n // \"empty\" CstNode edge case\n else {\n loc.startOffset = NaN;\n loc.startLine = NaN;\n loc.startColumn = NaN;\n }\n }\n\n cstPostRuleOnlyOffset(this: MixedInParser, ruleCstNode: CstNode): void {\n const prevToken = this.LA(0);\n // `location' is not null because `cstPostRuleOnlyOffset` will only be invoked when location tracking is enabled.\n const loc = ruleCstNode.location!;\n\n // If this condition is true it means we consumed at least one Token\n // In this CstNode.\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n }\n // \"empty\" CstNode edge case\n else {\n loc.startOffset = NaN;\n }\n }\n\n cstPostTerminal(\n this: MixedInParser,\n key: string,\n consumedToken: IToken,\n ): void {\n const rootCst = this.CST_STACK[this.CST_STACK.length - 1];\n addTerminalToCst(rootCst, consumedToken, key);\n // This is only used when **both** error recovery and CST Output are enabled.\n this.setNodeLocationFromToken(rootCst.location!, consumedToken);\n }\n\n cstPostNonTerminal(\n this: MixedInParser,\n ruleCstResult: CstNode,\n ruleName: string,\n ): void {\n const preCstNode = this.CST_STACK[this.CST_STACK.length - 1];\n addNoneTerminalToCst(preCstNode, ruleName, ruleCstResult);\n // This is only used when **both** error recovery and CST Output are enabled.\n this.setNodeLocationFromNode(preCstNode.location!, ruleCstResult.location!);\n }\n\n getBaseCstVisitorConstructor(\n this: MixedInParser,\n ): {\n new (...args: any[]): ICstVisitor;\n } {\n if (isUndefined(this.baseCstVisitorConstructor)) {\n const newBaseCstVisitorConstructor = createBaseSemanticVisitorConstructor(\n this.className,\n keys(this.gastProductionsCache),\n );\n this.baseCstVisitorConstructor = newBaseCstVisitorConstructor;\n return newBaseCstVisitorConstructor;\n }\n\n return this.baseCstVisitorConstructor;\n }\n\n getBaseCstVisitorConstructorWithDefaults(\n this: MixedInParser,\n ): {\n new (...args: any[]): ICstVisitor;\n } {\n if (isUndefined(this.baseCstVisitorWithDefaultsConstructor)) {\n const newConstructor = createBaseVisitorConstructorWithDefaults(\n this.className,\n keys(this.gastProductionsCache),\n this.getBaseCstVisitorConstructor(),\n );\n this.baseCstVisitorWithDefaultsConstructor = newConstructor;\n return newConstructor;\n }\n\n return this.baseCstVisitorWithDefaultsConstructor;\n }\n\n getLastExplicitRuleShortName(this: MixedInParser): number {\n const ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 1];\n }\n\n getPreviousExplicitRuleShortName(this: MixedInParser): number {\n const ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 2];\n }\n\n getLastExplicitRuleOccurrenceIndex(this: MixedInParser): number {\n const occurrenceStack = this.RULE_OCCURRENCE_STACK;\n return occurrenceStack[occurrenceStack.length - 1];\n }\n}\n", "import { END_OF_FILE } from \"../parser.js\";\nimport { IToken } from \"@chevrotain/types\";\nimport { MixedInParser } from \"./parser_traits.js\";\n\n/**\n * Trait responsible abstracting over the interaction with Lexer output (Token vector).\n *\n * This could be generalized to support other kinds of lexers, e.g.\n * - Just in Time Lexing / Lexer-Less parsing.\n * - Streaming Lexer.\n */\nexport class LexerAdapter {\n tokVector: IToken[];\n tokVectorLength: number;\n currIdx: number;\n\n initLexerAdapter() {\n this.tokVector = [];\n this.tokVectorLength = 0;\n this.currIdx = -1;\n }\n\n set input(newInput: IToken[]) {\n // @ts-ignore - `this parameter` not supported in setters/getters\n // - https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters\n if (this.selfAnalysisDone !== true) {\n throw Error(\n `Missing invocation at the end of the Parser's constructor.`,\n );\n }\n // @ts-ignore - `this parameter` not supported in setters/getters\n // - https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters\n this.reset();\n this.tokVector = newInput;\n this.tokVectorLength = newInput.length;\n }\n\n get input(): IToken[] {\n return this.tokVector;\n }\n\n // skips a token and returns the next token\n SKIP_TOKEN(this: MixedInParser): IToken {\n if (this.currIdx <= this.tokVector.length - 2) {\n this.consumeToken();\n return this.LA(1);\n } else {\n return END_OF_FILE;\n }\n }\n\n // Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers\n // or lexers dependent on parser context.\n LA(this: MixedInParser, howMuch: number): IToken {\n const soughtIdx = this.currIdx + howMuch;\n if (soughtIdx < 0 || this.tokVectorLength <= soughtIdx) {\n return END_OF_FILE;\n } else {\n return this.tokVector[soughtIdx];\n }\n }\n\n consumeToken(this: MixedInParser) {\n this.currIdx++;\n }\n\n exportLexerState(this: MixedInParser): number {\n return this.currIdx;\n }\n\n importLexerState(this: MixedInParser, newState: number) {\n this.currIdx = newState;\n }\n\n resetLexerState(this: MixedInParser): void {\n this.currIdx = -1;\n }\n\n moveToTerminatedState(this: MixedInParser): void {\n this.currIdx = this.tokVector.length - 1;\n }\n\n getLexerPosition(this: MixedInParser): number {\n return this.exportLexerState();\n }\n}\n", "import {\n AtLeastOneSepMethodOpts,\n ConsumeMethodOpts,\n DSLMethodOpts,\n DSLMethodOptsWithErr,\n GrammarAction,\n IOrAlt,\n IRuleConfig,\n ISerializedGast,\n IToken,\n ManySepMethodOpts,\n OrMethodOpts,\n SubruleMethodOpts,\n TokenType,\n} from \"@chevrotain/types\";\nimport { includes, values } from \"lodash-es\";\nimport { isRecognitionException } from \"../../exceptions_public.js\";\nimport { DEFAULT_RULE_CONFIG, ParserDefinitionErrorType } from \"../parser.js\";\nimport { defaultGrammarValidatorErrorProvider } from \"../../errors_public.js\";\nimport { validateRuleIsOverridden } from \"../../grammar/checks.js\";\nimport { MixedInParser } from \"./parser_traits.js\";\nimport { Rule, serializeGrammar } from \"@chevrotain/gast\";\nimport { IParserDefinitionError } from \"../../grammar/types.js\";\nimport { ParserMethodInternal } from \"../types.js\";\n\n/**\n * This trait is responsible for implementing the public API\n * for defining Chevrotain parsers, i.e:\n * - CONSUME\n * - RULE\n * - OPTION\n * - ...\n */\nexport class RecognizerApi {\n ACTION(this: MixedInParser, impl: () => T): T {\n return impl.call(this);\n }\n\n consume(\n this: MixedInParser,\n idx: number,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, idx, options);\n }\n\n subrule(\n this: MixedInParser,\n idx: number,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, idx, options);\n }\n\n option(\n this: MixedInParser,\n idx: number,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, idx);\n }\n\n or(\n this: MixedInParser,\n idx: number,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): any {\n return this.orInternal(altsOrOpts, idx);\n }\n\n many(\n this: MixedInParser,\n idx: number,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n return this.manyInternal(idx, actionORMethodDef);\n }\n\n atLeastOne(\n this: MixedInParser,\n idx: number,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n return this.atLeastOneInternal(idx, actionORMethodDef);\n }\n\n CONSUME(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 0, options);\n }\n\n CONSUME1(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 1, options);\n }\n\n CONSUME2(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 2, options);\n }\n\n CONSUME3(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 3, options);\n }\n\n CONSUME4(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 4, options);\n }\n\n CONSUME5(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 5, options);\n }\n\n CONSUME6(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 6, options);\n }\n\n CONSUME7(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 7, options);\n }\n\n CONSUME8(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 8, options);\n }\n\n CONSUME9(\n this: MixedInParser,\n tokType: TokenType,\n options?: ConsumeMethodOpts,\n ): IToken {\n return this.consumeInternal(tokType, 9, options);\n }\n\n SUBRULE(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 0, options);\n }\n\n SUBRULE1(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 1, options);\n }\n\n SUBRULE2(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 2, options);\n }\n\n SUBRULE3(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 3, options);\n }\n\n SUBRULE4(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 4, options);\n }\n\n SUBRULE5(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 5, options);\n }\n\n SUBRULE6(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 6, options);\n }\n\n SUBRULE7(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 7, options);\n }\n\n SUBRULE8(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 8, options);\n }\n\n SUBRULE9(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n options?: SubruleMethodOpts,\n ): R {\n return this.subruleInternal(ruleToCall, 9, options);\n }\n\n OPTION(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 0);\n }\n\n OPTION1(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 1);\n }\n\n OPTION2(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 2);\n }\n\n OPTION3(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 3);\n }\n\n OPTION4(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 4);\n }\n\n OPTION5(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 5);\n }\n\n OPTION6(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 6);\n }\n\n OPTION7(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 7);\n }\n\n OPTION8(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 8);\n }\n\n OPTION9(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): OUT | undefined {\n return this.optionInternal(actionORMethodDef, 9);\n }\n\n OR(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 0);\n }\n\n OR1(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 1);\n }\n\n OR2(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 2);\n }\n\n OR3(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 3);\n }\n\n OR4(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 4);\n }\n\n OR5(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 5);\n }\n\n OR6(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 6);\n }\n\n OR7(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 7);\n }\n\n OR8(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 8);\n }\n\n OR9(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n ): T {\n return this.orInternal(altsOrOpts, 9);\n }\n\n MANY(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(0, actionORMethodDef);\n }\n\n MANY1(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(1, actionORMethodDef);\n }\n\n MANY2(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(2, actionORMethodDef);\n }\n\n MANY3(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(3, actionORMethodDef);\n }\n\n MANY4(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(4, actionORMethodDef);\n }\n\n MANY5(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(5, actionORMethodDef);\n }\n\n MANY6(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(6, actionORMethodDef);\n }\n\n MANY7(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(7, actionORMethodDef);\n }\n\n MANY8(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(8, actionORMethodDef);\n }\n\n MANY9(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n this.manyInternal(9, actionORMethodDef);\n }\n\n MANY_SEP(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(0, options);\n }\n\n MANY_SEP1(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(1, options);\n }\n\n MANY_SEP2(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(2, options);\n }\n\n MANY_SEP3(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(3, options);\n }\n\n MANY_SEP4(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(4, options);\n }\n\n MANY_SEP5(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(5, options);\n }\n\n MANY_SEP6(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(6, options);\n }\n\n MANY_SEP7(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(7, options);\n }\n\n MANY_SEP8(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(8, options);\n }\n\n MANY_SEP9(this: MixedInParser, options: ManySepMethodOpts): void {\n this.manySepFirstInternal(9, options);\n }\n\n AT_LEAST_ONE(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(0, actionORMethodDef);\n }\n\n AT_LEAST_ONE1(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n return this.atLeastOneInternal(1, actionORMethodDef);\n }\n\n AT_LEAST_ONE2(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(2, actionORMethodDef);\n }\n\n AT_LEAST_ONE3(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(3, actionORMethodDef);\n }\n\n AT_LEAST_ONE4(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(4, actionORMethodDef);\n }\n\n AT_LEAST_ONE5(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(5, actionORMethodDef);\n }\n\n AT_LEAST_ONE6(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(6, actionORMethodDef);\n }\n\n AT_LEAST_ONE7(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(7, actionORMethodDef);\n }\n\n AT_LEAST_ONE8(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(8, actionORMethodDef);\n }\n\n AT_LEAST_ONE9(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n this.atLeastOneInternal(9, actionORMethodDef);\n }\n\n AT_LEAST_ONE_SEP(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(0, options);\n }\n\n AT_LEAST_ONE_SEP1(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(1, options);\n }\n\n AT_LEAST_ONE_SEP2(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(2, options);\n }\n\n AT_LEAST_ONE_SEP3(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(3, options);\n }\n\n AT_LEAST_ONE_SEP4(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(4, options);\n }\n\n AT_LEAST_ONE_SEP5(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(5, options);\n }\n\n AT_LEAST_ONE_SEP6(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(6, options);\n }\n\n AT_LEAST_ONE_SEP7(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(7, options);\n }\n\n AT_LEAST_ONE_SEP8(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(8, options);\n }\n\n AT_LEAST_ONE_SEP9(\n this: MixedInParser,\n options: AtLeastOneSepMethodOpts,\n ): void {\n this.atLeastOneSepFirstInternal(9, options);\n }\n\n RULE(\n this: MixedInParser,\n name: string,\n implementation: (...implArgs: any[]) => T,\n config: IRuleConfig = DEFAULT_RULE_CONFIG,\n ): (idxInCallingRule?: number, ...args: any[]) => T | any {\n if (includes(this.definedRulesNames, name)) {\n const errMsg =\n defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({\n topLevelRule: name,\n grammarName: this.className,\n });\n\n const error = {\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: name,\n };\n this.definitionErrors.push(error);\n }\n\n this.definedRulesNames.push(name);\n\n const ruleImplementation = this.defineRule(name, implementation, config);\n (this as any)[name] = ruleImplementation;\n return ruleImplementation;\n }\n\n OVERRIDE_RULE(\n this: MixedInParser,\n name: string,\n impl: (...implArgs: any[]) => T,\n config: IRuleConfig = DEFAULT_RULE_CONFIG,\n ): (idxInCallingRule?: number, ...args: any[]) => T {\n const ruleErrors: IParserDefinitionError[] = validateRuleIsOverridden(\n name,\n this.definedRulesNames,\n this.className,\n );\n this.definitionErrors = this.definitionErrors.concat(ruleErrors);\n\n const ruleImplementation = this.defineRule(name, impl, config);\n (this as any)[name] = ruleImplementation;\n return ruleImplementation;\n }\n\n BACKTRACK(\n this: MixedInParser,\n grammarRule: (...args: any[]) => T,\n args?: any[],\n ): () => boolean {\n return function () {\n // save org state\n this.isBackTrackingStack.push(1);\n const orgState = this.saveRecogState();\n try {\n grammarRule.apply(this, args);\n // if no exception was thrown we have succeed parsing the rule.\n return true;\n } catch (e) {\n if (isRecognitionException(e)) {\n return false;\n } else {\n throw e;\n }\n } finally {\n this.reloadRecogState(orgState);\n this.isBackTrackingStack.pop();\n }\n };\n }\n\n // GAST export APIs\n public getGAstProductions(this: MixedInParser): Record {\n return this.gastProductionsCache;\n }\n\n public getSerializedGastProductions(this: MixedInParser): ISerializedGast[] {\n return serializeGrammar(values(this.gastProductionsCache));\n }\n}\n", "import {\n AtLeastOneSepMethodOpts,\n ConsumeMethodOpts,\n DSLMethodOpts,\n DSLMethodOptsWithErr,\n GrammarAction,\n IOrAlt,\n IParserConfig,\n IRuleConfig,\n IToken,\n ManySepMethodOpts,\n OrMethodOpts,\n ParserMethod,\n SubruleMethodOpts,\n TokenType,\n TokenTypeDictionary,\n TokenVocabulary,\n} from \"@chevrotain/types\";\nimport {\n clone,\n every,\n flatten,\n has,\n isArray,\n isEmpty,\n isObject,\n reduce,\n uniq,\n values,\n} from \"lodash-es\";\nimport {\n AT_LEAST_ONE_IDX,\n AT_LEAST_ONE_SEP_IDX,\n BITS_FOR_METHOD_TYPE,\n BITS_FOR_OCCURRENCE_IDX,\n MANY_IDX,\n MANY_SEP_IDX,\n OPTION_IDX,\n OR_IDX,\n} from \"../../grammar/keys.js\";\nimport {\n isRecognitionException,\n MismatchedTokenException,\n NotAllInputParsedException,\n} from \"../../exceptions_public.js\";\nimport { PROD_TYPE } from \"../../grammar/lookahead.js\";\nimport {\n AbstractNextTerminalAfterProductionWalker,\n NextTerminalAfterAtLeastOneSepWalker,\n NextTerminalAfterAtLeastOneWalker,\n NextTerminalAfterManySepWalker,\n NextTerminalAfterManyWalker,\n} from \"../../grammar/interpreter.js\";\nimport { DEFAULT_RULE_CONFIG, IParserState, TokenMatcher } from \"../parser.js\";\nimport { IN_RULE_RECOVERY_EXCEPTION } from \"./recoverable.js\";\nimport { EOF } from \"../../../scan/tokens_public.js\";\nimport { MixedInParser } from \"./parser_traits.js\";\nimport {\n augmentTokenTypes,\n isTokenType,\n tokenStructuredMatcher,\n tokenStructuredMatcherNoCategories,\n} from \"../../../scan/tokens.js\";\nimport { Rule } from \"@chevrotain/gast\";\nimport { ParserMethodInternal } from \"../types.js\";\n\n/**\n * This trait is responsible for the runtime parsing engine\n * Used by the official API (recognizer_api.ts)\n */\nexport class RecognizerEngine {\n isBackTrackingStack: boolean[];\n className: string;\n RULE_STACK: number[];\n RULE_OCCURRENCE_STACK: number[];\n definedRulesNames: string[];\n tokensMap: { [fqn: string]: TokenType };\n gastProductionsCache: Record;\n shortRuleNameToFull: Record;\n fullRuleNameToShort: Record;\n // The shortName Index must be coded \"after\" the first 8bits to enable building unique lookahead keys\n ruleShortNameIdx: number;\n tokenMatcher: TokenMatcher;\n subruleIdx: number;\n\n initRecognizerEngine(\n tokenVocabulary: TokenVocabulary,\n config: IParserConfig,\n ) {\n this.className = this.constructor.name;\n // TODO: would using an ES6 Map or plain object be faster (CST building scenario)\n this.shortRuleNameToFull = {};\n this.fullRuleNameToShort = {};\n this.ruleShortNameIdx = 256;\n this.tokenMatcher = tokenStructuredMatcherNoCategories;\n this.subruleIdx = 0;\n\n this.definedRulesNames = [];\n this.tokensMap = {};\n this.isBackTrackingStack = [];\n this.RULE_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n this.gastProductionsCache = {};\n\n if (has(config, \"serializedGrammar\")) {\n throw Error(\n \"The Parser's configuration can no longer contain a property.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\\n\" +\n \"\\tFor Further details.\",\n );\n }\n\n if (isArray(tokenVocabulary)) {\n // This only checks for Token vocabularies provided as arrays.\n // That is good enough because the main objective is to detect users of pre-V4.0 APIs\n // rather than all edge cases of empty Token vocabularies.\n if (isEmpty(tokenVocabulary as any[])) {\n throw Error(\n \"A Token Vocabulary cannot be empty.\\n\" +\n \"\\tNote that the first argument for the parser constructor\\n\" +\n \"\\tis no longer a Token vector (since v4.0).\",\n );\n }\n\n if (typeof (tokenVocabulary as any[])[0].startOffset === \"number\") {\n throw Error(\n \"The Parser constructor no longer accepts a token vector as the first argument.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\\n\" +\n \"\\tFor Further details.\",\n );\n }\n }\n\n if (isArray(tokenVocabulary)) {\n this.tokensMap = reduce(\n tokenVocabulary,\n (acc, tokType: TokenType) => {\n acc[tokType.name] = tokType;\n return acc;\n },\n {} as { [tokenName: string]: TokenType },\n );\n } else if (\n has(tokenVocabulary, \"modes\") &&\n every(flatten(values((tokenVocabulary).modes)), isTokenType)\n ) {\n const allTokenTypes = flatten(values((tokenVocabulary).modes));\n const uniqueTokens = uniq(allTokenTypes);\n this.tokensMap = reduce(\n uniqueTokens,\n (acc, tokType: TokenType) => {\n acc[tokType.name] = tokType;\n return acc;\n },\n {} as { [tokenName: string]: TokenType },\n );\n } else if (isObject(tokenVocabulary)) {\n this.tokensMap = clone(tokenVocabulary as TokenTypeDictionary);\n } else {\n throw new Error(\n \" argument must be An Array of Token constructors,\" +\n \" A dictionary of Token constructors or an IMultiModeLexerDefinition\",\n );\n }\n\n // always add EOF to the tokenNames -> constructors map. it is useful to assure all the input has been\n // parsed with a clear error message (\"expecting EOF but found ...\")\n this.tokensMap[\"EOF\"] = EOF;\n\n const allTokenTypes = has(tokenVocabulary, \"modes\")\n ? flatten(values((tokenVocabulary).modes))\n : values(tokenVocabulary);\n const noTokenCategoriesUsed = every(allTokenTypes, (tokenConstructor) =>\n isEmpty(tokenConstructor.categoryMatches),\n );\n\n this.tokenMatcher = noTokenCategoriesUsed\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n\n // Because ES2015+ syntax should be supported for creating Token classes\n // We cannot assume that the Token classes were created using the \"extendToken\" utilities\n // Therefore we must augment the Token classes both on Lexer initialization and on Parser initialization\n augmentTokenTypes(values(this.tokensMap));\n }\n\n defineRule(\n this: MixedInParser,\n ruleName: string,\n impl: (...args: ARGS) => R,\n config: IRuleConfig,\n ): ParserMethodInternal {\n if (this.selfAnalysisDone) {\n throw Error(\n `Grammar rule <${ruleName}> may not be defined after the 'performSelfAnalysis' method has been called'\\n` +\n `Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`,\n );\n }\n const resyncEnabled: boolean = has(config, \"resyncEnabled\")\n ? (config.resyncEnabled as boolean) // assumes end user provides the correct config value/type\n : DEFAULT_RULE_CONFIG.resyncEnabled;\n const recoveryValueFunc = has(config, \"recoveryValueFunc\")\n ? (config.recoveryValueFunc as () => R) // assumes end user provides the correct config value/type\n : DEFAULT_RULE_CONFIG.recoveryValueFunc;\n\n // performance optimization: Use small integers as keys for the longer human readable \"full\" rule names.\n // this greatly improves Map access time (as much as 8% for some performance benchmarks).\n const shortName =\n this.ruleShortNameIdx << (BITS_FOR_METHOD_TYPE + BITS_FOR_OCCURRENCE_IDX);\n\n this.ruleShortNameIdx++;\n this.shortRuleNameToFull[shortName] = ruleName;\n this.fullRuleNameToShort[ruleName] = shortName;\n\n let invokeRuleWithTry: ParserMethod;\n\n // Micro optimization, only check the condition **once** on rule definition\n // instead of **every single** rule invocation.\n if (this.outputCst === true) {\n invokeRuleWithTry = function invokeRuleWithTry(\n this: MixedInParser,\n ...args: ARGS\n ): R {\n try {\n this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx);\n impl.apply(this, args);\n const cst = this.CST_STACK[this.CST_STACK.length - 1];\n this.cstPostRule(cst);\n return cst as unknown as R;\n } catch (e) {\n return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc) as R;\n } finally {\n this.ruleFinallyStateUpdate();\n }\n };\n } else {\n invokeRuleWithTry = function invokeRuleWithTryCst(\n this: MixedInParser,\n ...args: ARGS\n ): R {\n try {\n this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx);\n return impl.apply(this, args);\n } catch (e) {\n return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc) as R;\n } finally {\n this.ruleFinallyStateUpdate();\n }\n };\n }\n\n const wrappedGrammarRule: ParserMethodInternal = Object.assign(\n invokeRuleWithTry as any,\n { ruleName, originalGrammarAction: impl },\n );\n\n return wrappedGrammarRule;\n }\n\n invokeRuleCatch(\n this: MixedInParser,\n e: Error,\n resyncEnabledConfig: boolean,\n recoveryValueFunc: Function,\n ): unknown {\n const isFirstInvokedRule = this.RULE_STACK.length === 1;\n // note the reSync is always enabled for the first rule invocation, because we must always be able to\n // reSync with EOF and just output some INVALID ParseTree\n // during backtracking reSync recovery is disabled, otherwise we can't be certain the backtracking\n // path is really the most valid one\n const reSyncEnabled =\n resyncEnabledConfig && !this.isBackTracking() && this.recoveryEnabled;\n\n if (isRecognitionException(e)) {\n const recogError: any = e;\n if (reSyncEnabled) {\n const reSyncTokType = this.findReSyncTokenType();\n if (this.isInCurrentRuleReSyncSet(reSyncTokType)) {\n recogError.resyncedTokens = this.reSyncTo(reSyncTokType);\n if (this.outputCst) {\n const partialCstResult: any =\n this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n return partialCstResult;\n } else {\n return recoveryValueFunc(e);\n }\n } else {\n if (this.outputCst) {\n const partialCstResult: any =\n this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n recogError.partialCstResult = partialCstResult;\n }\n // to be handled Further up the call stack\n throw recogError;\n }\n } else if (isFirstInvokedRule) {\n // otherwise a Redundant input error will be created as well and we cannot guarantee that this is indeed the case\n this.moveToTerminatedState();\n // the parser should never throw one of its own errors outside its flow.\n // even if error recovery is disabled\n return recoveryValueFunc(e);\n } else {\n // to be recovered Further up the call stack\n throw recogError;\n }\n } else {\n // some other Error type which we don't know how to handle (for example a built in JavaScript Error)\n throw e;\n }\n }\n\n // Implementation of parsing DSL\n optionInternal(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n occurrence: number,\n ): OUT | undefined {\n const key = this.getKeyForAutomaticLookahead(OPTION_IDX, occurrence);\n return this.optionInternalLogic(actionORMethodDef, occurrence, key);\n }\n\n optionInternalLogic(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n occurrence: number,\n key: number,\n ): OUT | undefined {\n let lookAheadFunc = this.getLaFuncFromCache(key);\n let action: GrammarAction;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n const predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n const orgLookaheadFunction = lookAheadFunc;\n lookAheadFunc = () => {\n return predicate.call(this) && orgLookaheadFunction.call(this);\n };\n }\n } else {\n action = actionORMethodDef;\n }\n\n if (lookAheadFunc.call(this) === true) {\n return action.call(this);\n }\n return undefined;\n }\n\n atLeastOneInternal(\n this: MixedInParser,\n prodOccurrence: number,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n const laKey = this.getKeyForAutomaticLookahead(\n AT_LEAST_ONE_IDX,\n prodOccurrence,\n );\n return this.atLeastOneInternalLogic(\n prodOccurrence,\n actionORMethodDef,\n laKey,\n );\n }\n\n atLeastOneInternalLogic(\n this: MixedInParser,\n prodOccurrence: number,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n key: number,\n ): void {\n let lookAheadFunc = this.getLaFuncFromCache(key);\n let action;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n const predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n const orgLookaheadFunction = lookAheadFunc;\n lookAheadFunc = () => {\n return predicate.call(this) && orgLookaheadFunction.call(this);\n };\n }\n } else {\n action = actionORMethodDef;\n }\n\n if ((lookAheadFunc).call(this) === true) {\n let notStuck = this.doSingleRepetition(action);\n while (\n (lookAheadFunc).call(this) === true &&\n notStuck === true\n ) {\n notStuck = this.doSingleRepetition(action);\n }\n } else {\n throw this.raiseEarlyExitException(\n prodOccurrence,\n PROD_TYPE.REPETITION_MANDATORY,\n (>actionORMethodDef).ERR_MSG,\n );\n }\n\n // note that while it may seem that this can cause an error because by using a recursive call to\n // AT_LEAST_ONE we change the grammar to AT_LEAST_TWO, AT_LEAST_THREE ... , the possible recursive call\n // from the tryInRepetitionRecovery(...) will only happen IFF there really are TWO/THREE/.... items.\n\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(\n this.atLeastOneInternal,\n [prodOccurrence, actionORMethodDef],\n lookAheadFunc,\n AT_LEAST_ONE_IDX,\n prodOccurrence,\n NextTerminalAfterAtLeastOneWalker,\n );\n }\n\n atLeastOneSepFirstInternal(\n this: MixedInParser,\n prodOccurrence: number,\n options: AtLeastOneSepMethodOpts,\n ): void {\n const laKey = this.getKeyForAutomaticLookahead(\n AT_LEAST_ONE_SEP_IDX,\n prodOccurrence,\n );\n this.atLeastOneSepFirstInternalLogic(prodOccurrence, options, laKey);\n }\n\n atLeastOneSepFirstInternalLogic(\n this: MixedInParser,\n prodOccurrence: number,\n options: AtLeastOneSepMethodOpts,\n key: number,\n ): void {\n const action = options.DEF;\n const separator = options.SEP;\n\n const firstIterationLookaheadFunc = this.getLaFuncFromCache(key);\n\n // 1st iteration\n if (firstIterationLookaheadFunc.call(this) === true) {\n (>action).call(this);\n\n // TODO: Optimization can move this function construction into \"attemptInRepetitionRecovery\"\n // because it is only needed in error recovery scenarios.\n const separatorLookAheadFunc = () => {\n return this.tokenMatcher(this.LA(1), separator);\n };\n\n // 2nd..nth iterations\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n // No need for checking infinite loop here due to consuming the separator.\n (>action).call(this);\n }\n\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(\n this.repetitionSepSecondInternal,\n [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n NextTerminalAfterAtLeastOneSepWalker,\n ],\n separatorLookAheadFunc,\n AT_LEAST_ONE_SEP_IDX,\n prodOccurrence,\n NextTerminalAfterAtLeastOneSepWalker,\n );\n } else {\n throw this.raiseEarlyExitException(\n prodOccurrence,\n PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,\n options.ERR_MSG,\n );\n }\n }\n\n manyInternal(\n this: MixedInParser,\n prodOccurrence: number,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n const laKey = this.getKeyForAutomaticLookahead(MANY_IDX, prodOccurrence);\n return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n }\n\n manyInternalLogic(\n this: MixedInParser,\n prodOccurrence: number,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n key: number,\n ) {\n let lookaheadFunction = this.getLaFuncFromCache(key);\n let action;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n const predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n const orgLookaheadFunction = lookaheadFunction;\n lookaheadFunction = () => {\n return predicate.call(this) && orgLookaheadFunction.call(this);\n };\n }\n } else {\n action = actionORMethodDef;\n }\n\n let notStuck = true;\n while (lookaheadFunction.call(this) === true && notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(\n this.manyInternal,\n [prodOccurrence, actionORMethodDef],\n lookaheadFunction,\n MANY_IDX,\n prodOccurrence,\n NextTerminalAfterManyWalker,\n // The notStuck parameter is only relevant when \"attemptInRepetitionRecovery\"\n // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP]\n // An infinite loop cannot occur as:\n // - Either the lookahead is guaranteed to consume something (Single Token Separator)\n // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out).\n notStuck,\n );\n }\n\n manySepFirstInternal(\n this: MixedInParser,\n prodOccurrence: number,\n options: ManySepMethodOpts,\n ): void {\n const laKey = this.getKeyForAutomaticLookahead(\n MANY_SEP_IDX,\n prodOccurrence,\n );\n this.manySepFirstInternalLogic(prodOccurrence, options, laKey);\n }\n\n manySepFirstInternalLogic(\n this: MixedInParser,\n prodOccurrence: number,\n options: ManySepMethodOpts,\n key: number,\n ): void {\n const action = options.DEF;\n const separator = options.SEP;\n const firstIterationLaFunc = this.getLaFuncFromCache(key);\n\n // 1st iteration\n if (firstIterationLaFunc.call(this) === true) {\n action.call(this);\n\n const separatorLookAheadFunc = () => {\n return this.tokenMatcher(this.LA(1), separator);\n };\n // 2nd..nth iterations\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n // No need for checking infinite loop here due to consuming the separator.\n action.call(this);\n }\n\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(\n this.repetitionSepSecondInternal,\n [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n NextTerminalAfterManySepWalker,\n ],\n separatorLookAheadFunc,\n MANY_SEP_IDX,\n prodOccurrence,\n NextTerminalAfterManySepWalker,\n );\n }\n }\n\n repetitionSepSecondInternal(\n this: MixedInParser,\n prodOccurrence: number,\n separator: TokenType,\n separatorLookAheadFunc: () => boolean,\n action: GrammarAction,\n nextTerminalAfterWalker: typeof AbstractNextTerminalAfterProductionWalker,\n ): void {\n while (separatorLookAheadFunc()) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n action.call(this);\n }\n\n // we can only arrive to this function after an error\n // has occurred (hence the name 'second') so the following\n // IF will always be entered, its possible to remove it...\n // however it is kept to avoid confusion and be consistent.\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n /* istanbul ignore else */\n this.attemptInRepetitionRecovery(\n this.repetitionSepSecondInternal,\n [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n nextTerminalAfterWalker,\n ],\n separatorLookAheadFunc,\n AT_LEAST_ONE_SEP_IDX,\n prodOccurrence,\n nextTerminalAfterWalker,\n );\n }\n\n doSingleRepetition(this: MixedInParser, action: Function): any {\n const beforeIteration = this.getLexerPosition();\n action.call(this);\n const afterIteration = this.getLexerPosition();\n\n // This boolean will indicate if this repetition progressed\n // or if we are \"stuck\" (potential infinite loop in the repetition).\n return afterIteration > beforeIteration;\n }\n\n orInternal(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n occurrence: number,\n ): T {\n const laKey = this.getKeyForAutomaticLookahead(OR_IDX, occurrence);\n const alts = isArray(altsOrOpts) ? altsOrOpts : altsOrOpts.DEF;\n\n const laFunc = this.getLaFuncFromCache(laKey);\n const altIdxToTake = laFunc.call(this, alts);\n if (altIdxToTake !== undefined) {\n const chosenAlternative: any = alts[altIdxToTake];\n return chosenAlternative.ALT.call(this);\n }\n this.raiseNoAltException(\n occurrence,\n (altsOrOpts as OrMethodOpts).ERR_MSG,\n );\n }\n\n ruleFinallyStateUpdate(this: MixedInParser): void {\n this.RULE_STACK.pop();\n this.RULE_OCCURRENCE_STACK.pop();\n\n // NOOP when cst is disabled\n this.cstFinallyStateUpdate();\n\n if (this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) {\n const firstRedundantTok = this.LA(1);\n const errMsg = this.errorMessageProvider.buildNotAllInputParsedMessage({\n firstRedundant: firstRedundantTok,\n ruleName: this.getCurrRuleFullName(),\n });\n this.SAVE_ERROR(\n new NotAllInputParsedException(errMsg, firstRedundantTok),\n );\n }\n }\n\n subruleInternal(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n idx: number,\n options?: SubruleMethodOpts,\n ): R {\n let ruleResult;\n try {\n const args = options !== undefined ? options.ARGS : undefined;\n this.subruleIdx = idx;\n ruleResult = ruleToCall.apply(this, args);\n this.cstPostNonTerminal(\n ruleResult,\n options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : ruleToCall.ruleName,\n );\n return ruleResult;\n } catch (e) {\n throw this.subruleInternalError(e, options, ruleToCall.ruleName);\n }\n }\n\n subruleInternalError(\n this: MixedInParser,\n e: any,\n options: SubruleMethodOpts | undefined,\n ruleName: string,\n ): void {\n if (isRecognitionException(e) && e.partialCstResult !== undefined) {\n this.cstPostNonTerminal(\n e.partialCstResult,\n options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : ruleName,\n );\n\n delete e.partialCstResult;\n }\n throw e;\n }\n\n consumeInternal(\n this: MixedInParser,\n tokType: TokenType,\n idx: number,\n options: ConsumeMethodOpts | undefined,\n ): IToken {\n let consumedToken!: IToken;\n try {\n const nextToken = this.LA(1);\n if (this.tokenMatcher(nextToken, tokType) === true) {\n this.consumeToken();\n consumedToken = nextToken;\n } else {\n this.consumeInternalError(tokType, nextToken, options);\n }\n } catch (eFromConsumption) {\n consumedToken = this.consumeInternalRecovery(\n tokType,\n idx,\n eFromConsumption,\n );\n }\n\n this.cstPostTerminal(\n options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : tokType.name,\n consumedToken,\n );\n return consumedToken;\n }\n\n consumeInternalError(\n this: MixedInParser,\n tokType: TokenType,\n nextToken: IToken,\n options: ConsumeMethodOpts | undefined,\n ): void {\n let msg;\n const previousToken = this.LA(0);\n if (options !== undefined && options.ERR_MSG) {\n msg = options.ERR_MSG;\n } else {\n msg = this.errorMessageProvider.buildMismatchTokenMessage({\n expected: tokType,\n actual: nextToken,\n previous: previousToken,\n ruleName: this.getCurrRuleFullName(),\n });\n }\n throw this.SAVE_ERROR(\n new MismatchedTokenException(msg, nextToken, previousToken),\n );\n }\n\n consumeInternalRecovery(\n this: MixedInParser,\n tokType: TokenType,\n idx: number,\n eFromConsumption: Error,\n ): IToken {\n // no recovery allowed during backtracking, otherwise backtracking may recover invalid syntax and accept it\n // but the original syntax could have been parsed successfully without any backtracking + recovery\n if (\n this.recoveryEnabled &&\n // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions?\n eFromConsumption.name === \"MismatchedTokenException\" &&\n !this.isBackTracking()\n ) {\n const follows = this.getFollowsForInRuleRecovery(tokType, idx);\n try {\n return this.tryInRuleRecovery(tokType, follows);\n } catch (eFromInRuleRecovery) {\n if (eFromInRuleRecovery.name === IN_RULE_RECOVERY_EXCEPTION) {\n // failed in RuleRecovery.\n // throw the original error in order to trigger reSync error recovery\n throw eFromConsumption;\n } else {\n throw eFromInRuleRecovery;\n }\n }\n } else {\n throw eFromConsumption;\n }\n }\n\n saveRecogState(this: MixedInParser): IParserState {\n // errors is a getter which will clone the errors array\n const savedErrors = this.errors;\n const savedRuleStack = clone(this.RULE_STACK);\n return {\n errors: savedErrors,\n lexerState: this.exportLexerState(),\n RULE_STACK: savedRuleStack,\n CST_STACK: this.CST_STACK,\n };\n }\n\n reloadRecogState(this: MixedInParser, newState: IParserState) {\n this.errors = newState.errors;\n this.importLexerState(newState.lexerState);\n this.RULE_STACK = newState.RULE_STACK;\n }\n\n ruleInvocationStateUpdate(\n this: MixedInParser,\n shortName: number,\n fullName: string,\n idxInCallingRule: number,\n ): void {\n this.RULE_OCCURRENCE_STACK.push(idxInCallingRule);\n this.RULE_STACK.push(shortName);\n // NOOP when cst is disabled\n this.cstInvocationStateUpdate(fullName);\n }\n\n isBackTracking(this: MixedInParser): boolean {\n return this.isBackTrackingStack.length !== 0;\n }\n\n getCurrRuleFullName(this: MixedInParser): string {\n const shortName = this.getLastExplicitRuleShortName();\n return this.shortRuleNameToFull[shortName];\n }\n\n shortRuleNameToFullName(this: MixedInParser, shortName: number) {\n return this.shortRuleNameToFull[shortName];\n }\n\n public isAtEndOfInput(this: MixedInParser): boolean {\n return this.tokenMatcher(this.LA(1), EOF);\n }\n\n public reset(this: MixedInParser): void {\n this.resetLexerState();\n this.subruleIdx = 0;\n this.isBackTrackingStack = [];\n this.errors = [];\n this.RULE_STACK = [];\n // TODO: extract a specific reset for TreeBuilder trait\n this.CST_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n }\n}\n", "import {\n IParserConfig,\n IParserErrorMessageProvider,\n IRecognitionException,\n} from \"@chevrotain/types\";\nimport {\n EarlyExitException,\n isRecognitionException,\n NoViableAltException,\n} from \"../../exceptions_public.js\";\nimport { clone, has } from \"lodash-es\";\nimport {\n getLookaheadPathsForOptionalProd,\n getLookaheadPathsForOr,\n PROD_TYPE,\n} from \"../../grammar/lookahead.js\";\nimport { MixedInParser } from \"./parser_traits.js\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser.js\";\n\n/**\n * Trait responsible for runtime parsing errors.\n */\nexport class ErrorHandler {\n _errors: IRecognitionException[];\n errorMessageProvider: IParserErrorMessageProvider;\n\n initErrorHandler(config: IParserConfig) {\n this._errors = [];\n this.errorMessageProvider = has(config, \"errorMessageProvider\")\n ? (config.errorMessageProvider as IParserErrorMessageProvider) // assumes end user provides the correct config value/type\n : DEFAULT_PARSER_CONFIG.errorMessageProvider;\n }\n\n SAVE_ERROR(\n this: MixedInParser,\n error: IRecognitionException,\n ): IRecognitionException {\n if (isRecognitionException(error)) {\n error.context = {\n ruleStack: this.getHumanReadableRuleStack(),\n ruleOccurrenceStack: clone(this.RULE_OCCURRENCE_STACK),\n };\n this._errors.push(error);\n return error;\n } else {\n throw Error(\n \"Trying to save an Error which is not a RecognitionException\",\n );\n }\n }\n\n get errors(): IRecognitionException[] {\n return clone(this._errors);\n }\n\n set errors(newErrors: IRecognitionException[]) {\n this._errors = newErrors;\n }\n\n // TODO: consider caching the error message computed information\n raiseEarlyExitException(\n this: MixedInParser,\n occurrence: number,\n prodType: PROD_TYPE,\n userDefinedErrMsg: string | undefined,\n ): never {\n const ruleName = this.getCurrRuleFullName();\n const ruleGrammar = this.getGAstProductions()[ruleName];\n const lookAheadPathsPerAlternative = getLookaheadPathsForOptionalProd(\n occurrence,\n ruleGrammar,\n prodType,\n this.maxLookahead,\n );\n const insideProdPaths = lookAheadPathsPerAlternative[0];\n const actualTokens = [];\n for (let i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n const msg = this.errorMessageProvider.buildEarlyExitMessage({\n expectedIterationPaths: insideProdPaths,\n actual: actualTokens,\n previous: this.LA(0),\n customUserDescription: userDefinedErrMsg,\n ruleName: ruleName,\n });\n\n throw this.SAVE_ERROR(new EarlyExitException(msg, this.LA(1), this.LA(0)));\n }\n\n // TODO: consider caching the error message computed information\n raiseNoAltException(\n this: MixedInParser,\n occurrence: number,\n errMsgTypes: string | undefined,\n ): never {\n const ruleName = this.getCurrRuleFullName();\n const ruleGrammar = this.getGAstProductions()[ruleName];\n // TODO: getLookaheadPathsForOr can be slow for large enough maxLookahead and certain grammars, consider caching ?\n const lookAheadPathsPerAlternative = getLookaheadPathsForOr(\n occurrence,\n ruleGrammar,\n this.maxLookahead,\n );\n\n const actualTokens = [];\n for (let i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n const previousToken = this.LA(0);\n\n const errMsg = this.errorMessageProvider.buildNoViableAltMessage({\n expectedPathsPerAlt: lookAheadPathsPerAlternative,\n actual: actualTokens,\n previous: previousToken,\n customUserDescription: errMsgTypes,\n ruleName: this.getCurrRuleFullName(),\n });\n\n throw this.SAVE_ERROR(\n new NoViableAltException(errMsg, this.LA(1), previousToken),\n );\n }\n}\n", "import {\n ISyntacticContentAssistPath,\n IToken,\n ITokenGrammarPath,\n TokenType,\n} from \"@chevrotain/types\";\nimport {\n NextAfterTokenWalker,\n nextPossibleTokensAfter,\n} from \"../../grammar/interpreter.js\";\nimport { first, isUndefined } from \"lodash-es\";\nimport { MixedInParser } from \"./parser_traits.js\";\n\nexport class ContentAssist {\n initContentAssist() {}\n\n public computeContentAssist(\n this: MixedInParser,\n startRuleName: string,\n precedingInput: IToken[],\n ): ISyntacticContentAssistPath[] {\n const startRuleGast = this.gastProductionsCache[startRuleName];\n\n if (isUndefined(startRuleGast)) {\n throw Error(`Rule ->${startRuleName}<- does not exist in this grammar.`);\n }\n\n return nextPossibleTokensAfter(\n [startRuleGast],\n precedingInput,\n this.tokenMatcher,\n this.maxLookahead,\n );\n }\n\n // TODO: should this be a member method or a utility? it does not have any state or usage of 'this'...\n // TODO: should this be more explicitly part of the public API?\n public getNextPossibleTokenTypes(\n this: MixedInParser,\n grammarPath: ITokenGrammarPath,\n ): TokenType[] {\n const topRuleName = first(grammarPath.ruleStack)!;\n const gastProductions = this.getGAstProductions();\n const topProduction = gastProductions[topRuleName];\n const nextPossibleTokenTypes = new NextAfterTokenWalker(\n topProduction,\n grammarPath,\n ).startWalking();\n return nextPossibleTokenTypes;\n }\n}\n", "import {\n AtLeastOneSepMethodOpts,\n ConsumeMethodOpts,\n CstNode,\n DSLMethodOpts,\n DSLMethodOptsWithErr,\n GrammarAction,\n IOrAlt,\n IParserConfig,\n IProduction,\n IToken,\n ManySepMethodOpts,\n OrMethodOpts,\n SubruleMethodOpts,\n TokenType,\n} from \"@chevrotain/types\";\nimport {\n forEach,\n has,\n isArray,\n isFunction,\n last as peek,\n some,\n} from \"lodash-es\";\nimport { MixedInParser } from \"./parser_traits.js\";\nimport {\n Alternation,\n Alternative,\n NonTerminal,\n Option,\n Repetition,\n RepetitionMandatory,\n RepetitionMandatoryWithSeparator,\n RepetitionWithSeparator,\n Rule,\n Terminal,\n} from \"@chevrotain/gast\";\nimport { Lexer } from \"../../../scan/lexer_public.js\";\nimport {\n augmentTokenTypes,\n hasShortKeyProperty,\n} from \"../../../scan/tokens.js\";\nimport {\n createToken,\n createTokenInstance,\n} from \"../../../scan/tokens_public.js\";\nimport { END_OF_FILE } from \"../parser.js\";\nimport { BITS_FOR_OCCURRENCE_IDX } from \"../../grammar/keys.js\";\nimport { ParserMethodInternal } from \"../types.js\";\n\ntype ProdWithDef = IProduction & { definition?: IProduction[] };\nconst RECORDING_NULL_OBJECT = {\n description: \"This Object indicates the Parser is during Recording Phase\",\n};\nObject.freeze(RECORDING_NULL_OBJECT);\n\nconst HANDLE_SEPARATOR = true;\nconst MAX_METHOD_IDX = Math.pow(2, BITS_FOR_OCCURRENCE_IDX) - 1;\n\nconst RFT = createToken({ name: \"RECORDING_PHASE_TOKEN\", pattern: Lexer.NA });\naugmentTokenTypes([RFT]);\nconst RECORDING_PHASE_TOKEN = createTokenInstance(\n RFT,\n \"This IToken indicates the Parser is in Recording Phase\\n\\t\" +\n \"\" +\n \"See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\",\n // Using \"-1\" instead of NaN (as in EOF) because an actual number is less likely to\n // cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase.\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n);\nObject.freeze(RECORDING_PHASE_TOKEN);\n\nconst RECORDING_PHASE_CSTNODE: CstNode = {\n name:\n \"This CSTNode indicates the Parser is in Recording Phase\\n\\t\" +\n \"See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\",\n children: {},\n};\n\n/**\n * This trait handles the creation of the GAST structure for Chevrotain Grammars\n */\nexport class GastRecorder {\n recordingProdStack: ProdWithDef[];\n RECORDING_PHASE: boolean;\n\n initGastRecorder(this: MixedInParser, config: IParserConfig): void {\n this.recordingProdStack = [];\n this.RECORDING_PHASE = false;\n }\n\n enableRecording(this: MixedInParser): void {\n this.RECORDING_PHASE = true;\n\n this.TRACE_INIT(\"Enable Recording\", () => {\n /**\n * Warning Dark Voodoo Magic upcoming!\n * We are \"replacing\" the public parsing DSL methods API\n * With **new** alternative implementations on the Parser **instance**\n *\n * So far this is the only way I've found to avoid performance regressions during parsing time.\n * - Approx 30% performance regression was measured on Chrome 75 Canary when attempting to replace the \"internal\"\n * implementations directly instead.\n */\n for (let i = 0; i < 10; i++) {\n const idx = i > 0 ? i : \"\";\n this[`CONSUME${idx}` as \"CONSUME\"] = function (arg1, arg2) {\n return this.consumeInternalRecord(arg1, i, arg2);\n };\n this[`SUBRULE${idx}` as \"SUBRULE\"] = function (arg1, arg2) {\n return this.subruleInternalRecord(arg1, i, arg2) as any;\n };\n this[`OPTION${idx}` as \"OPTION\"] = function (arg1) {\n return this.optionInternalRecord(arg1, i);\n };\n this[`OR${idx}` as \"OR\"] = function (arg1) {\n return this.orInternalRecord(arg1, i);\n };\n this[`MANY${idx}` as \"MANY\"] = function (arg1) {\n this.manyInternalRecord(i, arg1);\n };\n this[`MANY_SEP${idx}` as \"MANY_SEP\"] = function (arg1) {\n this.manySepFirstInternalRecord(i, arg1);\n };\n this[`AT_LEAST_ONE${idx}` as \"AT_LEAST_ONE\"] = function (arg1) {\n this.atLeastOneInternalRecord(i, arg1);\n };\n this[`AT_LEAST_ONE_SEP${idx}` as \"AT_LEAST_ONE_SEP\"] = function (arg1) {\n this.atLeastOneSepFirstInternalRecord(i, arg1);\n };\n }\n\n // DSL methods with the idx(suffix) as an argument\n this[`consume`] = function (idx, arg1, arg2) {\n return this.consumeInternalRecord(arg1, idx, arg2);\n };\n this[`subrule`] = function (idx, arg1, arg2) {\n return this.subruleInternalRecord(arg1, idx, arg2) as any;\n };\n this[`option`] = function (idx, arg1) {\n return this.optionInternalRecord(arg1, idx);\n };\n this[`or`] = function (idx, arg1) {\n return this.orInternalRecord(arg1, idx);\n };\n this[`many`] = function (idx, arg1) {\n this.manyInternalRecord(idx, arg1);\n };\n this[`atLeastOne`] = function (idx, arg1) {\n this.atLeastOneInternalRecord(idx, arg1);\n };\n\n this.ACTION = this.ACTION_RECORD;\n this.BACKTRACK = this.BACKTRACK_RECORD;\n this.LA = this.LA_RECORD;\n });\n }\n\n disableRecording(this: MixedInParser) {\n this.RECORDING_PHASE = false;\n // By deleting these **instance** properties, any future invocation\n // will be deferred to the original methods on the **prototype** object\n // This seems to get rid of any incorrect optimizations that V8 may\n // do during the recording phase.\n this.TRACE_INIT(\"Deleting Recording methods\", () => {\n const that: any = this;\n\n for (let i = 0; i < 10; i++) {\n const idx = i > 0 ? i : \"\";\n delete that[`CONSUME${idx}`];\n delete that[`SUBRULE${idx}`];\n delete that[`OPTION${idx}`];\n delete that[`OR${idx}`];\n delete that[`MANY${idx}`];\n delete that[`MANY_SEP${idx}`];\n delete that[`AT_LEAST_ONE${idx}`];\n delete that[`AT_LEAST_ONE_SEP${idx}`];\n }\n\n delete that[`consume`];\n delete that[`subrule`];\n delete that[`option`];\n delete that[`or`];\n delete that[`many`];\n delete that[`atLeastOne`];\n\n delete that.ACTION;\n delete that.BACKTRACK;\n delete that.LA;\n });\n }\n\n // Parser methods are called inside an ACTION?\n // Maybe try/catch/finally on ACTIONS while disabling the recorders state changes?\n // @ts-expect-error -- noop place holder\n ACTION_RECORD(this: MixedInParser, impl: () => T): T {\n // NO-OP during recording\n }\n\n // Executing backtracking logic will break our recording logic assumptions\n BACKTRACK_RECORD(\n grammarRule: (...args: any[]) => T,\n args?: any[],\n ): () => boolean {\n return () => true;\n }\n\n // LA is part of the official API and may be used for custom lookahead logic\n // by end users who may forget to wrap it in ACTION or inside a GATE\n LA_RECORD(howMuch: number): IToken {\n // We cannot use the RECORD_PHASE_TOKEN here because someone may depend\n // On LA return EOF at the end of the input so an infinite loop may occur.\n return END_OF_FILE;\n }\n\n topLevelRuleRecord(name: string, def: Function): Rule {\n try {\n const newTopLevelRule = new Rule({ definition: [], name: name });\n newTopLevelRule.name = name;\n this.recordingProdStack.push(newTopLevelRule);\n def.call(this);\n this.recordingProdStack.pop();\n return newTopLevelRule;\n } catch (originalError) {\n if (originalError.KNOWN_RECORDER_ERROR !== true) {\n try {\n originalError.message =\n originalError.message +\n '\\n\\t This error was thrown during the \"grammar recording phase\" For more info see:\\n\\t' +\n \"https://chevrotain.io/docs/guide/internals.html#grammar-recording\";\n } catch (mutabilityError) {\n // We may not be able to modify the original error object\n throw originalError;\n }\n }\n throw originalError;\n }\n }\n\n // Implementation of parsing DSL\n optionInternalRecord(\n this: MixedInParser,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n occurrence: number,\n ): OUT {\n return recordProd.call(this, Option, actionORMethodDef, occurrence);\n }\n\n atLeastOneInternalRecord(\n this: MixedInParser,\n occurrence: number,\n actionORMethodDef: GrammarAction | DSLMethodOptsWithErr,\n ): void {\n recordProd.call(this, RepetitionMandatory, actionORMethodDef, occurrence);\n }\n\n atLeastOneSepFirstInternalRecord(\n this: MixedInParser,\n occurrence: number,\n options: AtLeastOneSepMethodOpts,\n ): void {\n recordProd.call(\n this,\n RepetitionMandatoryWithSeparator,\n options,\n occurrence,\n HANDLE_SEPARATOR,\n );\n }\n\n manyInternalRecord(\n this: MixedInParser,\n occurrence: number,\n actionORMethodDef: GrammarAction | DSLMethodOpts,\n ): void {\n recordProd.call(this, Repetition, actionORMethodDef, occurrence);\n }\n\n manySepFirstInternalRecord(\n this: MixedInParser,\n occurrence: number,\n options: ManySepMethodOpts,\n ): void {\n recordProd.call(\n this,\n RepetitionWithSeparator,\n options,\n occurrence,\n HANDLE_SEPARATOR,\n );\n }\n\n orInternalRecord(\n this: MixedInParser,\n altsOrOpts: IOrAlt[] | OrMethodOpts,\n occurrence: number,\n ): T {\n return recordOrProd.call(this, altsOrOpts, occurrence);\n }\n\n subruleInternalRecord(\n this: MixedInParser,\n ruleToCall: ParserMethodInternal,\n occurrence: number,\n options?: SubruleMethodOpts,\n ): R | CstNode {\n assertMethodIdxIsValid(occurrence);\n if (!ruleToCall || has(ruleToCall, \"ruleName\") === false) {\n const error: any = new Error(\n ` argument is invalid` +\n ` expecting a Parser method reference but got: <${JSON.stringify(\n ruleToCall,\n )}>` +\n `\\n inside top level rule: <${\n (this.recordingProdStack[0]).name\n }>`,\n );\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n\n const prevProd: any = peek(this.recordingProdStack);\n const ruleName = ruleToCall.ruleName;\n const newNoneTerminal = new NonTerminal({\n idx: occurrence,\n nonTerminalName: ruleName,\n label: options?.LABEL,\n // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created\n referencedRule: undefined,\n });\n prevProd.definition.push(newNoneTerminal);\n\n return this.outputCst\n ? RECORDING_PHASE_CSTNODE\n : RECORDING_NULL_OBJECT;\n }\n\n consumeInternalRecord(\n this: MixedInParser,\n tokType: TokenType,\n occurrence: number,\n options?: ConsumeMethodOpts,\n ): IToken {\n assertMethodIdxIsValid(occurrence);\n if (!hasShortKeyProperty(tokType)) {\n const error: any = new Error(\n ` argument is invalid` +\n ` expecting a TokenType reference but got: <${JSON.stringify(\n tokType,\n )}>` +\n `\\n inside top level rule: <${\n (this.recordingProdStack[0]).name\n }>`,\n );\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n const prevProd: any = peek(this.recordingProdStack);\n const newNoneTerminal = new Terminal({\n idx: occurrence,\n terminalType: tokType,\n label: options?.LABEL,\n });\n prevProd.definition.push(newNoneTerminal);\n\n return RECORDING_PHASE_TOKEN;\n }\n}\n\nfunction recordProd(\n prodConstructor: any,\n mainProdArg: any,\n occurrence: number,\n handleSep: boolean = false,\n): any {\n assertMethodIdxIsValid(occurrence);\n const prevProd: any = peek(this.recordingProdStack);\n const grammarAction = isFunction(mainProdArg) ? mainProdArg : mainProdArg.DEF;\n\n const newProd = new prodConstructor({ definition: [], idx: occurrence });\n if (handleSep) {\n newProd.separator = mainProdArg.SEP;\n }\n if (has(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n\n this.recordingProdStack.push(newProd);\n grammarAction.call(this);\n prevProd.definition.push(newProd);\n this.recordingProdStack.pop();\n\n return RECORDING_NULL_OBJECT;\n}\n\nfunction recordOrProd(mainProdArg: any, occurrence: number): any {\n assertMethodIdxIsValid(occurrence);\n const prevProd: any = peek(this.recordingProdStack);\n // Only an array of alternatives\n const hasOptions = isArray(mainProdArg) === false;\n const alts: IOrAlt[] =\n hasOptions === false ? mainProdArg : mainProdArg.DEF;\n\n const newOrProd = new Alternation({\n definition: [],\n idx: occurrence,\n ignoreAmbiguities: hasOptions && mainProdArg.IGNORE_AMBIGUITIES === true,\n });\n if (has(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newOrProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n\n const hasPredicates = some(alts, (currAlt: any) => isFunction(currAlt.GATE));\n newOrProd.hasPredicates = hasPredicates;\n\n prevProd.definition.push(newOrProd);\n\n forEach(alts, (currAlt) => {\n const currAltFlat = new Alternative({ definition: [] });\n newOrProd.definition.push(currAltFlat);\n if (has(currAlt, \"IGNORE_AMBIGUITIES\")) {\n currAltFlat.ignoreAmbiguities = currAlt.IGNORE_AMBIGUITIES as boolean; // assumes end user provides the correct config value/type\n }\n // **implicit** ignoreAmbiguities due to usage of gate\n else if (has(currAlt, \"GATE\")) {\n currAltFlat.ignoreAmbiguities = true;\n }\n this.recordingProdStack.push(currAltFlat);\n currAlt.ALT.call(this);\n this.recordingProdStack.pop();\n });\n return RECORDING_NULL_OBJECT;\n}\n\nfunction getIdxSuffix(idx: number): string {\n return idx === 0 ? \"\" : `${idx}`;\n}\n\nfunction assertMethodIdxIsValid(idx: number): void {\n if (idx < 0 || idx > MAX_METHOD_IDX) {\n const error: any = new Error(\n // The stack trace will contain all the needed details\n `Invalid DSL Method idx value: <${idx}>\\n\\t` +\n `Idx value must be a none negative value smaller than ${\n MAX_METHOD_IDX + 1\n }`,\n );\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n}\n", "import { IParserConfig } from \"@chevrotain/types\";\nimport { has } from \"lodash-es\";\nimport { timer } from \"@chevrotain/utils\";\nimport { MixedInParser } from \"./parser_traits.js\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser.js\";\n\n/**\n * Trait responsible for runtime parsing errors.\n */\nexport class PerformanceTracer {\n traceInitPerf: boolean | number;\n traceInitMaxIdent: number;\n traceInitIndent: number;\n\n initPerformanceTracer(config: IParserConfig) {\n if (has(config, \"traceInitPerf\")) {\n const userTraceInitPerf = config.traceInitPerf;\n const traceIsNumber = typeof userTraceInitPerf === \"number\";\n this.traceInitMaxIdent = traceIsNumber\n ? userTraceInitPerf\n : Infinity;\n this.traceInitPerf = traceIsNumber\n ? userTraceInitPerf > 0\n : (userTraceInitPerf as boolean); // assumes end user provides the correct config value/type\n } else {\n this.traceInitMaxIdent = 0;\n this.traceInitPerf = DEFAULT_PARSER_CONFIG.traceInitPerf;\n }\n\n this.traceInitIndent = -1;\n }\n\n TRACE_INIT(this: MixedInParser, phaseDesc: string, phaseImpl: () => T): T {\n // No need to optimize this using NOOP pattern because\n // It is not called in a hot spot...\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n const indent = new Array(this.traceInitIndent + 1).join(\"\\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(`${indent}--> <${phaseDesc}>`);\n }\n const { time, value } = timer(phaseImpl);\n /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */\n const traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(`${indent}<-- <${phaseDesc}> time: ${time}ms`);\n }\n this.traceInitIndent--;\n return value;\n } else {\n return phaseImpl();\n }\n }\n}\n", "export function applyMixins(derivedCtor: any, baseCtors: any[]) {\n baseCtors.forEach((baseCtor) => {\n const baseProto = baseCtor.prototype;\n Object.getOwnPropertyNames(baseProto).forEach((propName) => {\n if (propName === \"constructor\") {\n return;\n }\n\n const basePropDescriptor = Object.getOwnPropertyDescriptor(\n baseProto,\n propName,\n );\n // Handle Accessors\n if (\n basePropDescriptor &&\n (basePropDescriptor.get || basePropDescriptor.set)\n ) {\n Object.defineProperty(\n derivedCtor.prototype,\n propName,\n basePropDescriptor,\n );\n } else {\n derivedCtor.prototype[propName] = baseCtor.prototype[propName];\n }\n });\n });\n}\n", "import { clone, forEach, has, isEmpty, map, values } from \"lodash-es\";\nimport { toFastProperties } from \"@chevrotain/utils\";\nimport { computeAllProdsFollows } from \"../grammar/follow.js\";\nimport { createTokenInstance, EOF } from \"../../scan/tokens_public.js\";\nimport {\n defaultGrammarValidatorErrorProvider,\n defaultParserErrorProvider,\n} from \"../errors_public.js\";\nimport {\n resolveGrammar,\n validateGrammar,\n} from \"../grammar/gast/gast_resolver_public.js\";\nimport {\n CstNode,\n IParserConfig,\n IRecognitionException,\n IRuleConfig,\n IToken,\n TokenType,\n TokenVocabulary,\n} from \"@chevrotain/types\";\nimport { Recoverable } from \"./traits/recoverable.js\";\nimport { LooksAhead } from \"./traits/looksahead.js\";\nimport { TreeBuilder } from \"./traits/tree_builder.js\";\nimport { LexerAdapter } from \"./traits/lexer_adapter.js\";\nimport { RecognizerApi } from \"./traits/recognizer_api.js\";\nimport { RecognizerEngine } from \"./traits/recognizer_engine.js\";\n\nimport { ErrorHandler } from \"./traits/error_handler.js\";\nimport { MixedInParser } from \"./traits/parser_traits.js\";\nimport { ContentAssist } from \"./traits/context_assist.js\";\nimport { GastRecorder } from \"./traits/gast_recorder.js\";\nimport { PerformanceTracer } from \"./traits/perf_tracer.js\";\nimport { applyMixins } from \"./utils/apply_mixins.js\";\nimport { IParserDefinitionError } from \"../grammar/types.js\";\nimport { Rule } from \"@chevrotain/gast\";\nimport { IParserConfigInternal, ParserMethodInternal } from \"./types.js\";\nimport { validateLookahead } from \"../grammar/checks.js\";\n\nexport const END_OF_FILE = createTokenInstance(\n EOF,\n \"\",\n NaN,\n NaN,\n NaN,\n NaN,\n NaN,\n NaN,\n);\nObject.freeze(END_OF_FILE);\n\nexport type TokenMatcher = (token: IToken, tokType: TokenType) => boolean;\n\nexport const DEFAULT_PARSER_CONFIG: Required<\n Omit\n> = Object.freeze({\n recoveryEnabled: false,\n maxLookahead: 3,\n dynamicTokensEnabled: false,\n outputCst: true,\n errorMessageProvider: defaultParserErrorProvider,\n nodeLocationTracking: \"none\",\n traceInitPerf: false,\n skipValidations: false,\n});\n\nexport const DEFAULT_RULE_CONFIG: Required> = Object.freeze({\n recoveryValueFunc: () => undefined,\n resyncEnabled: true,\n});\n\nexport enum ParserDefinitionErrorType {\n INVALID_RULE_NAME = 0,\n DUPLICATE_RULE_NAME = 1,\n INVALID_RULE_OVERRIDE = 2,\n DUPLICATE_PRODUCTIONS = 3,\n UNRESOLVED_SUBRULE_REF = 4,\n LEFT_RECURSION = 5,\n NONE_LAST_EMPTY_ALT = 6,\n AMBIGUOUS_ALTS = 7,\n CONFLICT_TOKENS_RULES_NAMESPACE = 8,\n INVALID_TOKEN_NAME = 9,\n NO_NON_EMPTY_LOOKAHEAD = 10,\n AMBIGUOUS_PREFIX_ALTS = 11,\n TOO_MANY_ALTS = 12,\n CUSTOM_LOOKAHEAD_VALIDATION = 13,\n}\n\nexport interface IParserDuplicatesDefinitionError\n extends IParserDefinitionError {\n dslName: string;\n occurrence: number;\n parameter?: string;\n}\n\nexport interface IParserEmptyAlternativeDefinitionError\n extends IParserDefinitionError {\n occurrence: number;\n alternative: number;\n}\n\nexport interface IParserAmbiguousAlternativesDefinitionError\n extends IParserDefinitionError {\n occurrence: number | string;\n alternatives: number[];\n}\n\nexport interface IParserUnresolvedRefDefinitionError\n extends IParserDefinitionError {\n unresolvedRefName: string;\n}\n\nexport interface IParserState {\n errors: IRecognitionException[];\n lexerState: any;\n RULE_STACK: number[];\n CST_STACK: CstNode[];\n}\n\nexport type Predicate = () => boolean;\n\nexport function EMPTY_ALT(): () => undefined;\nexport function EMPTY_ALT(value: T): () => T;\nexport function EMPTY_ALT(value: any = undefined) {\n return function () {\n return value;\n };\n}\n\nexport class Parser {\n // Set this flag to true if you don't want the Parser to throw error when problems in it's definition are detected.\n // (normally during the parser's constructor).\n // This is a design time flag, it will not affect the runtime error handling of the parser, just design time errors,\n // for example: duplicate rule names, referencing an unresolved subrule, etc...\n // This flag should not be enabled during normal usage, it is used in special situations, for example when\n // needing to display the parser definition errors in some GUI(online playground).\n static DEFER_DEFINITION_ERRORS_HANDLING: boolean = false;\n\n /**\n * @deprecated use the **instance** method with the same name instead\n */\n static performSelfAnalysis(parserInstance: Parser): void {\n throw Error(\n \"The **static** `performSelfAnalysis` method has been deprecated.\" +\n \"\\t\\nUse the **instance** method with the same name instead.\",\n );\n }\n\n public performSelfAnalysis(this: MixedInParser): void {\n this.TRACE_INIT(\"performSelfAnalysis\", () => {\n let defErrorsMsgs;\n\n this.selfAnalysisDone = true;\n const className = this.className;\n\n this.TRACE_INIT(\"toFastProps\", () => {\n // Without this voodoo magic the parser would be x3-x4 slower\n // It seems it is better to invoke `toFastProperties` **before**\n // Any manipulations of the `this` object done during the recording phase.\n toFastProperties(this);\n });\n\n this.TRACE_INIT(\"Grammar Recording\", () => {\n try {\n this.enableRecording();\n // Building the GAST\n forEach(this.definedRulesNames, (currRuleName) => {\n const wrappedRule = (this as any)[\n currRuleName\n ] as ParserMethodInternal;\n const originalGrammarAction = wrappedRule[\"originalGrammarAction\"];\n let recordedRuleGast!: Rule;\n this.TRACE_INIT(`${currRuleName} Rule`, () => {\n recordedRuleGast = this.topLevelRuleRecord(\n currRuleName,\n originalGrammarAction,\n );\n });\n this.gastProductionsCache[currRuleName] = recordedRuleGast;\n });\n } finally {\n this.disableRecording();\n }\n });\n\n let resolverErrors: IParserDefinitionError[] = [];\n this.TRACE_INIT(\"Grammar Resolving\", () => {\n resolverErrors = resolveGrammar({\n rules: values(this.gastProductionsCache),\n });\n this.definitionErrors = this.definitionErrors.concat(resolverErrors);\n });\n\n this.TRACE_INIT(\"Grammar Validations\", () => {\n // only perform additional grammar validations IFF no resolving errors have occurred.\n // as unresolved grammar may lead to unhandled runtime exceptions in the follow up validations.\n if (isEmpty(resolverErrors) && this.skipValidations === false) {\n const validationErrors = validateGrammar({\n rules: values(this.gastProductionsCache),\n tokenTypes: values(this.tokensMap),\n errMsgProvider: defaultGrammarValidatorErrorProvider,\n grammarName: className,\n });\n const lookaheadValidationErrors = validateLookahead({\n lookaheadStrategy: this.lookaheadStrategy,\n rules: values(this.gastProductionsCache),\n tokenTypes: values(this.tokensMap),\n grammarName: className,\n });\n this.definitionErrors = this.definitionErrors.concat(\n validationErrors,\n lookaheadValidationErrors,\n );\n }\n });\n\n // this analysis may fail if the grammar is not perfectly valid\n if (isEmpty(this.definitionErrors)) {\n // The results of these computations are not needed unless error recovery is enabled.\n if (this.recoveryEnabled) {\n this.TRACE_INIT(\"computeAllProdsFollows\", () => {\n const allFollows = computeAllProdsFollows(\n values(this.gastProductionsCache),\n );\n this.resyncFollows = allFollows;\n });\n }\n\n this.TRACE_INIT(\"ComputeLookaheadFunctions\", () => {\n this.lookaheadStrategy.initialize?.({\n rules: values(this.gastProductionsCache),\n });\n this.preComputeLookaheadFunctions(values(this.gastProductionsCache));\n });\n }\n\n if (\n !Parser.DEFER_DEFINITION_ERRORS_HANDLING &&\n !isEmpty(this.definitionErrors)\n ) {\n defErrorsMsgs = map(\n this.definitionErrors,\n (defError) => defError.message,\n );\n throw new Error(\n `Parser Definition Errors detected:\\n ${defErrorsMsgs.join(\n \"\\n-------------------------------\\n\",\n )}`,\n );\n }\n });\n }\n\n definitionErrors: IParserDefinitionError[] = [];\n selfAnalysisDone = false;\n protected skipValidations: boolean;\n\n constructor(tokenVocabulary: TokenVocabulary, config: IParserConfig) {\n const that: MixedInParser = this as any;\n that.initErrorHandler(config);\n that.initLexerAdapter();\n that.initLooksAhead(config);\n that.initRecognizerEngine(tokenVocabulary, config);\n that.initRecoverable(config);\n that.initTreeBuilder(config);\n that.initContentAssist();\n that.initGastRecorder(config);\n that.initPerformanceTracer(config);\n\n if (has(config, \"ignoredIssues\")) {\n throw new Error(\n \"The IParserConfig property has been deprecated.\\n\\t\" +\n \"Please use the flag on the relevant DSL method instead.\\n\\t\" +\n \"See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\\n\\t\" +\n \"For further details.\",\n );\n }\n\n this.skipValidations = has(config, \"skipValidations\")\n ? (config.skipValidations as boolean) // casting assumes the end user passing the correct type\n : DEFAULT_PARSER_CONFIG.skipValidations;\n }\n}\n\napplyMixins(Parser, [\n Recoverable,\n LooksAhead,\n TreeBuilder,\n LexerAdapter,\n RecognizerEngine,\n RecognizerApi,\n ErrorHandler,\n ContentAssist,\n GastRecorder,\n PerformanceTracer,\n]);\n\nexport class CstParser extends Parser {\n constructor(\n tokenVocabulary: TokenVocabulary,\n config: IParserConfigInternal = DEFAULT_PARSER_CONFIG,\n ) {\n const configClone = clone(config);\n configClone.outputCst = true;\n super(tokenVocabulary, configClone);\n }\n}\n\nexport class EmbeddedActionsParser extends Parser {\n constructor(\n tokenVocabulary: TokenVocabulary,\n config: IParserConfigInternal = DEFAULT_PARSER_CONFIG,\n ) {\n const configClone = clone(config);\n configClone.outputCst = false;\n super(tokenVocabulary, configClone);\n }\n}\n", "/******************************************************************************\r\n * Copyright 2022 TypeFox GmbH\r\n * This program and the accompanying materials are made available under the\r\n * terms of the MIT License, which is available in the project root.\r\n ******************************************************************************/\r\n\r\nimport map from \"lodash-es/map.js\"\r\nimport filter from \"lodash-es/filter.js\"\r\nimport {\r\n IProduction,\r\n IProductionWithOccurrence,\r\n TokenType,\r\n Alternation,\r\n NonTerminal,\r\n Rule,\r\n Option,\r\n RepetitionMandatory,\r\n Repetition,\r\n Terminal,\r\n Alternative,\r\n RepetitionWithSeparator,\r\n RepetitionMandatoryWithSeparator,\r\n LookaheadProductionType\r\n} from \"chevrotain\"\r\n\r\nexport function buildATNKey(rule: Rule, type: LookaheadProductionType, occurrence: number): string {\r\n return `${rule.name}_${type}_${occurrence}`;\r\n}\r\n\r\nexport interface ATN {\r\n decisionMap: Record\r\n states: ATNState[]\r\n decisionStates: DecisionState[]\r\n ruleToStartState: Map\r\n ruleToStopState: Map\r\n}\r\n\r\nexport const ATN_INVALID_TYPE = 0\r\nexport const ATN_BASIC = 1\r\nexport const ATN_RULE_START = 2\r\nexport const ATN_PLUS_BLOCK_START = 4\r\nexport const ATN_STAR_BLOCK_START = 5\r\n// Currently unused as the ATN is not used for lexing\r\nexport const ATN_TOKEN_START = 6\r\nexport const ATN_RULE_STOP = 7\r\nexport const ATN_BLOCK_END = 8\r\nexport const ATN_STAR_LOOP_BACK = 9\r\nexport const ATN_STAR_LOOP_ENTRY = 10\r\nexport const ATN_PLUS_LOOP_BACK = 11\r\nexport const ATN_LOOP_END = 12\r\n\r\nexport type ATNState =\r\n | BasicState\r\n | BasicBlockStartState\r\n | PlusBlockStartState\r\n | PlusLoopbackState\r\n | StarBlockStartState\r\n | StarLoopbackState\r\n | StarLoopEntryState\r\n | BlockEndState\r\n | RuleStartState\r\n | RuleStopState\r\n | LoopEndState\r\n\r\nexport interface ATNBaseState {\r\n atn: ATN\r\n production: IProductionWithOccurrence\r\n stateNumber: number\r\n rule: Rule\r\n epsilonOnlyTransitions: boolean\r\n transitions: Transition[]\r\n nextTokenWithinRule: number[]\r\n}\r\n\r\nexport interface BasicState extends ATNBaseState {\r\n type: typeof ATN_BASIC\r\n}\r\n\r\nexport interface BlockStartState extends DecisionState {\r\n end: BlockEndState\r\n}\r\n\r\nexport interface BasicBlockStartState extends BlockStartState {\r\n type: typeof ATN_BASIC\r\n}\r\n\r\nexport interface PlusBlockStartState extends BlockStartState {\r\n loopback: PlusLoopbackState\r\n type: typeof ATN_PLUS_BLOCK_START\r\n}\r\n\r\nexport interface PlusLoopbackState extends DecisionState {\r\n type: typeof ATN_PLUS_LOOP_BACK\r\n}\r\n\r\nexport interface StarBlockStartState extends BlockStartState {\r\n type: typeof ATN_STAR_BLOCK_START\r\n}\r\n\r\nexport interface StarLoopbackState extends ATNBaseState {\r\n type: typeof ATN_STAR_LOOP_BACK\r\n}\r\n\r\nexport interface StarLoopEntryState extends DecisionState {\r\n loopback: StarLoopbackState\r\n type: typeof ATN_STAR_LOOP_ENTRY\r\n}\r\n\r\nexport interface BlockEndState extends ATNBaseState {\r\n start: BlockStartState\r\n type: typeof ATN_BLOCK_END\r\n}\r\n\r\nexport interface DecisionState extends ATNBaseState {\r\n decision: number\r\n}\r\n\r\nexport interface LoopEndState extends ATNBaseState {\r\n loopback: ATNState\r\n type: typeof ATN_LOOP_END\r\n}\r\n\r\nexport interface RuleStartState extends ATNBaseState {\r\n stop: RuleStopState\r\n type: typeof ATN_RULE_START\r\n}\r\n\r\nexport interface RuleStopState extends ATNBaseState {\r\n type: typeof ATN_RULE_STOP\r\n}\r\n\r\nexport interface Transition {\r\n target: ATNState\r\n isEpsilon(): boolean\r\n}\r\n\r\nexport abstract class AbstractTransition implements Transition {\r\n target: ATNState\r\n\r\n constructor(target: ATNState) {\r\n this.target = target\r\n }\r\n\r\n isEpsilon() {\r\n return false\r\n }\r\n}\r\n\r\nexport class AtomTransition extends AbstractTransition {\r\n tokenType: TokenType\r\n\r\n constructor(target: ATNState, tokenType: TokenType) {\r\n super(target)\r\n this.tokenType = tokenType\r\n }\r\n}\r\n\r\nexport class EpsilonTransition extends AbstractTransition {\r\n constructor(target: ATNState) {\r\n super(target)\r\n }\r\n\r\n isEpsilon() {\r\n return true\r\n }\r\n}\r\n\r\nexport class RuleTransition extends AbstractTransition {\r\n rule: Rule\r\n followState: ATNState\r\n\r\n constructor(ruleStart: RuleStartState, rule: Rule, followState: ATNState) {\r\n super(ruleStart)\r\n this.rule = rule\r\n this.followState = followState\r\n }\r\n\r\n isEpsilon() {\r\n return true\r\n }\r\n}\r\n\r\ninterface ATNHandle {\r\n left: ATNState\r\n right: ATNState\r\n}\r\n\r\nexport function createATN(rules: Rule[]): ATN {\r\n const atn: ATN = {\r\n decisionMap: {},\r\n decisionStates: [],\r\n ruleToStartState: new Map(),\r\n ruleToStopState: new Map(),\r\n states: []\r\n }\r\n createRuleStartAndStopATNStates(atn, rules)\r\n const ruleLength = rules.length\r\n for (let i = 0; i < ruleLength; i++) {\r\n const rule = rules[i]\r\n const ruleBlock = block(atn, rule, rule)\r\n if (ruleBlock === undefined) {\r\n continue\r\n }\r\n buildRuleHandle(atn, rule, ruleBlock)\r\n }\r\n return atn\r\n}\r\n\r\nfunction createRuleStartAndStopATNStates(atn: ATN, rules: Rule[]): void {\r\n const ruleLength = rules.length\r\n for (let i = 0; i < ruleLength; i++) {\r\n const rule = rules[i]\r\n const start = newState(atn, rule, undefined, {\r\n type: ATN_RULE_START\r\n })\r\n const stop = newState(atn, rule, undefined, {\r\n type: ATN_RULE_STOP\r\n })\r\n start.stop = stop\r\n atn.ruleToStartState.set(rule, start)\r\n atn.ruleToStopState.set(rule, stop)\r\n }\r\n}\r\n\r\nfunction atom(\r\n atn: ATN,\r\n rule: Rule,\r\n production: IProduction\r\n): ATNHandle | undefined {\r\n if (production instanceof Terminal) {\r\n return tokenRef(atn, rule, production.terminalType, production)\r\n } else if (production instanceof NonTerminal) {\r\n return ruleRef(atn, rule, production)\r\n } else if (production instanceof Alternation) {\r\n return alternation(atn, rule, production)\r\n } else if (production instanceof Option) {\r\n return option(atn, rule, production)\r\n } else if (production instanceof Repetition) {\r\n return repetition(atn, rule, production)\r\n } else if (production instanceof RepetitionWithSeparator) {\r\n return repetitionSep(atn, rule, production)\r\n } else if (production instanceof RepetitionMandatory) {\r\n return repetitionMandatory(atn, rule, production)\r\n } else if (production instanceof RepetitionMandatoryWithSeparator) {\r\n return repetitionMandatorySep(atn, rule, production)\r\n } else {\r\n return block(atn, rule, production as Alternative)\r\n }\r\n}\r\n\r\nfunction repetition(atn: ATN, rule: Rule, repetition: Repetition): ATNHandle {\r\n const starState = newState(atn, rule, repetition, {\r\n type: ATN_STAR_BLOCK_START\r\n })\r\n defineDecisionState(atn, starState)\r\n const handle = makeAlts(\r\n atn,\r\n rule,\r\n starState,\r\n repetition,\r\n block(atn, rule, repetition)\r\n )\r\n return star(atn, rule, repetition, handle)\r\n}\r\n\r\nfunction repetitionSep(\r\n atn: ATN,\r\n rule: Rule,\r\n repetition: RepetitionWithSeparator\r\n): ATNHandle {\r\n const starState = newState(atn, rule, repetition, {\r\n type: ATN_STAR_BLOCK_START\r\n })\r\n defineDecisionState(atn, starState)\r\n const handle = makeAlts(\r\n atn,\r\n rule,\r\n starState,\r\n repetition,\r\n block(atn, rule, repetition)\r\n )\r\n const sep = tokenRef(atn, rule, repetition.separator, repetition)\r\n return star(atn, rule, repetition, handle, sep)\r\n}\r\n\r\nfunction repetitionMandatory(\r\n atn: ATN,\r\n rule: Rule,\r\n repetition: RepetitionMandatory\r\n): ATNHandle {\r\n const plusState = newState(atn, rule, repetition, {\r\n type: ATN_PLUS_BLOCK_START\r\n })\r\n defineDecisionState(atn, plusState)\r\n const handle = makeAlts(\r\n atn,\r\n rule,\r\n plusState,\r\n repetition,\r\n block(atn, rule, repetition)\r\n )\r\n return plus(atn, rule, repetition, handle)\r\n}\r\n\r\nfunction repetitionMandatorySep(\r\n atn: ATN,\r\n rule: Rule,\r\n repetition: RepetitionMandatoryWithSeparator\r\n): ATNHandle {\r\n const plusState = newState(atn, rule, repetition, {\r\n type: ATN_PLUS_BLOCK_START\r\n })\r\n defineDecisionState(atn, plusState)\r\n const handle = makeAlts(\r\n atn,\r\n rule,\r\n plusState,\r\n repetition,\r\n block(atn, rule, repetition)\r\n )\r\n const sep = tokenRef(atn, rule, repetition.separator, repetition)\r\n return plus(atn, rule, repetition, handle, sep)\r\n}\r\n\r\nfunction alternation(\r\n atn: ATN,\r\n rule: Rule,\r\n alternation: Alternation\r\n): ATNHandle {\r\n const start = newState(atn, rule, alternation, {\r\n type: ATN_BASIC\r\n })\r\n defineDecisionState(atn, start)\r\n const alts = map(alternation.definition, (e) => atom(atn, rule, e))\r\n const handle = makeAlts(atn, rule, start, alternation, ...alts)\r\n return handle\r\n}\r\n\r\nfunction option(atn: ATN, rule: Rule, option: Option): ATNHandle {\r\n const start = newState(atn, rule, option, {\r\n type: ATN_BASIC\r\n })\r\n defineDecisionState(atn, start)\r\n const handle = makeAlts(atn, rule, start, option, block(atn, rule, option))\r\n return optional(atn, rule, option, handle)\r\n}\r\n\r\nfunction block(\r\n atn: ATN,\r\n rule: Rule,\r\n block: { definition: IProduction[] }\r\n): ATNHandle | undefined {\r\n const handles = filter(\r\n map(block.definition, (e) => atom(atn, rule, e)),\r\n (e) => e !== undefined\r\n ) as ATNHandle[]\r\n if (handles.length === 1) {\r\n return handles[0]\r\n } else if (handles.length === 0) {\r\n return undefined\r\n } else {\r\n return makeBlock(atn, handles)\r\n }\r\n}\r\n\r\nfunction plus(\r\n atn: ATN,\r\n rule: Rule,\r\n plus: IProductionWithOccurrence,\r\n handle: ATNHandle,\r\n sep?: ATNHandle\r\n): ATNHandle {\r\n const blkStart = handle.left as PlusBlockStartState\r\n const blkEnd = handle.right\r\n\r\n const loop = newState(atn, rule, plus, {\r\n type: ATN_PLUS_LOOP_BACK\r\n })\r\n defineDecisionState(atn, loop)\r\n const end = newState(atn, rule, plus, {\r\n type: ATN_LOOP_END\r\n })\r\n blkStart.loopback = loop\r\n end.loopback = loop\r\n atn.decisionMap[buildATNKey(rule, sep ? 'RepetitionMandatoryWithSeparator' : 'RepetitionMandatory', plus.idx)] = loop;\r\n epsilon(blkEnd, loop) // block can see loop back\r\n\r\n // Depending on whether we have a separator we put the exit transition at index 1 or 0\r\n // This influences the chosen option in the lookahead DFA\r\n if (sep === undefined) {\r\n epsilon(loop, blkStart) // loop back to start\r\n epsilon(loop, end) // exit\r\n } else {\r\n epsilon(loop, end) // exit\r\n // loop back to start with separator\r\n epsilon(loop, sep.left)\r\n epsilon(sep.right, blkStart)\r\n }\r\n\r\n return {\r\n left: blkStart,\r\n right: end\r\n }\r\n}\r\n\r\nfunction star(\r\n atn: ATN,\r\n rule: Rule,\r\n star: IProductionWithOccurrence,\r\n handle: ATNHandle,\r\n sep?: ATNHandle\r\n): ATNHandle {\r\n const start = handle.left\r\n const end = handle.right\r\n\r\n const entry = newState(atn, rule, star, {\r\n type: ATN_STAR_LOOP_ENTRY\r\n })\r\n defineDecisionState(atn, entry)\r\n const loopEnd = newState(atn, rule, star, {\r\n type: ATN_LOOP_END\r\n })\r\n const loop = newState(atn, rule, star, {\r\n type: ATN_STAR_LOOP_BACK\r\n })\r\n entry.loopback = loop\r\n loopEnd.loopback = loop\r\n\r\n epsilon(entry, start) // loop enter edge (alt 2)\r\n epsilon(entry, loopEnd) // bypass loop edge (alt 1)\r\n epsilon(end, loop) // block end hits loop back\r\n\r\n if (sep !== undefined) {\r\n epsilon(loop, loopEnd) // end loop\r\n // loop back to start of handle using separator\r\n epsilon(loop, sep.left)\r\n epsilon(sep.right, start)\r\n } else {\r\n epsilon(loop, entry) // loop back to entry/exit decision\r\n }\r\n\r\n atn.decisionMap[buildATNKey(rule, sep ? 'RepetitionWithSeparator' : 'Repetition', star.idx)] = entry;\r\n return {\r\n left: entry,\r\n right: loopEnd\r\n }\r\n}\r\n\r\nfunction optional(atn: ATN, rule: Rule, optional: Option, handle: ATNHandle): ATNHandle {\r\n const start = handle.left as DecisionState\r\n const end = handle.right\r\n\r\n epsilon(start, end)\r\n\r\n atn.decisionMap[buildATNKey(rule, 'Option', optional.idx)] = start;\r\n return handle\r\n}\r\n\r\nfunction defineDecisionState(atn: ATN, state: DecisionState): number {\r\n atn.decisionStates.push(state)\r\n state.decision = atn.decisionStates.length - 1\r\n return state.decision\r\n}\r\n\r\nfunction makeAlts(\r\n atn: ATN,\r\n rule: Rule,\r\n start: BlockStartState,\r\n production: IProductionWithOccurrence,\r\n ...alts: (ATNHandle | undefined)[]\r\n): ATNHandle {\r\n const end = newState(atn, rule, production, {\r\n type: ATN_BLOCK_END,\r\n start\r\n })\r\n start.end = end\r\n for (const alt of alts) {\r\n if (alt !== undefined) {\r\n // hook alts up to decision block\r\n epsilon(start, alt.left)\r\n epsilon(alt.right, end)\r\n } else {\r\n epsilon(start, end)\r\n }\r\n }\r\n\r\n const handle: ATNHandle = {\r\n left: start as ATNState,\r\n right: end\r\n }\r\n atn.decisionMap[buildATNKey(rule, getProdType(production), production.idx)] = start\r\n return handle\r\n}\r\n\r\nfunction getProdType(production: IProduction): LookaheadProductionType {\r\n if (production instanceof Alternation) {\r\n return 'Alternation';\r\n } else if (production instanceof Option) {\r\n return 'Option';\r\n } else if (production instanceof Repetition) {\r\n return 'Repetition';\r\n } else if (production instanceof RepetitionWithSeparator) {\r\n return 'RepetitionWithSeparator';\r\n } else if (production instanceof RepetitionMandatory) {\r\n return 'RepetitionMandatory';\r\n } else if (production instanceof RepetitionMandatoryWithSeparator) {\r\n return 'RepetitionMandatoryWithSeparator';\r\n } else {\r\n throw new Error('Invalid production type encountered');\r\n }\r\n}\r\n\r\nfunction makeBlock(atn: ATN, alts: ATNHandle[]): ATNHandle {\r\n const altsLength = alts.length\r\n for (let i = 0; i < altsLength - 1; i++) {\r\n const handle = alts[i]\r\n let transition: Transition | undefined\r\n if (handle.left.transitions.length === 1) {\r\n transition = handle.left.transitions[0]\r\n }\r\n const isRuleTransition = transition instanceof RuleTransition\r\n const ruleTransition = transition as RuleTransition\r\n const next = alts[i + 1].left\r\n if (\r\n handle.left.type === ATN_BASIC &&\r\n handle.right.type === ATN_BASIC &&\r\n transition !== undefined &&\r\n ((isRuleTransition && ruleTransition.followState === handle.right) ||\r\n transition.target === handle.right)\r\n ) {\r\n // we can avoid epsilon edge to next element\r\n if (isRuleTransition) {\r\n ruleTransition.followState = next\r\n } else {\r\n transition.target = next\r\n }\r\n removeState(atn, handle.right) // we skipped over this state\r\n } else {\r\n // need epsilon if previous block's right end node is complex\r\n epsilon(handle.right, next)\r\n }\r\n }\r\n\r\n const first = alts[0]\r\n const last = alts[altsLength - 1]\r\n return {\r\n left: first.left,\r\n right: last.right\r\n }\r\n}\r\n\r\nfunction tokenRef(\r\n atn: ATN,\r\n rule: Rule,\r\n tokenType: TokenType,\r\n production: IProductionWithOccurrence\r\n): ATNHandle {\r\n const left = newState(atn, rule, production, {\r\n type: ATN_BASIC\r\n })\r\n const right = newState(atn, rule, production, {\r\n type: ATN_BASIC\r\n })\r\n addTransition(left, new AtomTransition(right, tokenType))\r\n return {\r\n left,\r\n right\r\n }\r\n}\r\n\r\nfunction ruleRef(\r\n atn: ATN,\r\n currentRule: Rule,\r\n nonTerminal: NonTerminal\r\n): ATNHandle {\r\n const rule = nonTerminal.referencedRule\r\n const start = atn.ruleToStartState.get(rule)!\r\n const left = newState(atn, currentRule, nonTerminal, {\r\n type: ATN_BASIC\r\n })\r\n const right = newState(atn, currentRule, nonTerminal, {\r\n type: ATN_BASIC\r\n })\r\n\r\n const call = new RuleTransition(start, rule, right)\r\n addTransition(left, call)\r\n\r\n return {\r\n left,\r\n right\r\n }\r\n}\r\n\r\nfunction buildRuleHandle(atn: ATN, rule: Rule, block: ATNHandle): ATNHandle {\r\n const start = atn.ruleToStartState.get(rule)!\r\n epsilon(start, block.left)\r\n const stop = atn.ruleToStopState.get(rule)!\r\n epsilon(block.right, stop)\r\n const handle: ATNHandle = {\r\n left: start,\r\n right: stop\r\n }\r\n return handle\r\n}\r\n\r\nfunction epsilon(a: ATNBaseState, b: ATNBaseState): void {\r\n const transition = new EpsilonTransition(b as ATNState)\r\n addTransition(a, transition)\r\n}\r\n\r\nfunction newState(\r\n atn: ATN,\r\n rule: Rule,\r\n production: IProductionWithOccurrence | undefined,\r\n partial: Partial\r\n): T {\r\n const t: T = {\r\n atn,\r\n production,\r\n epsilonOnlyTransitions: false,\r\n rule,\r\n transitions: [],\r\n nextTokenWithinRule: [],\r\n stateNumber: atn.states.length,\r\n ...partial\r\n } as unknown as T\r\n atn.states.push(t)\r\n return t\r\n}\r\n\r\nfunction addTransition(state: ATNBaseState, transition: Transition) {\r\n // A single ATN state can only contain epsilon transitions or non-epsilon transitions\r\n // Because they are never mixed, only setting the property for the first transition is fine\r\n if (state.transitions.length === 0) {\r\n state.epsilonOnlyTransitions = transition.isEpsilon()\r\n }\r\n state.transitions.push(transition)\r\n}\r\n\r\nfunction removeState(atn: ATN, state: ATNState): void {\r\n atn.states.splice(atn.states.indexOf(state), 1)\r\n}\r\n", "/******************************************************************************\r\n * Copyright 2022 TypeFox GmbH\r\n * This program and the accompanying materials are made available under the\r\n * terms of the MIT License, which is available in the project root.\r\n ******************************************************************************/\r\n\r\nimport map from \"lodash-es/map.js\"\r\nimport { ATNState, DecisionState } from \"./atn.js\"\r\n\r\nexport interface DFA {\r\n start?: DFAState\r\n states: Record\r\n decision: number\r\n atnStartState: DecisionState\r\n}\r\n\r\nexport interface DFAState {\r\n configs: ATNConfigSet\r\n edges: Record\r\n isAcceptState: boolean\r\n prediction: number\r\n}\r\n\r\nexport const DFA_ERROR = {} as DFAState\r\n\r\nexport interface ATNConfig {\r\n state: ATNState\r\n alt: number\r\n stack: ATNState[]\r\n}\r\n\r\nexport class ATNConfigSet {\r\n private map: Record = {}\r\n private configs: ATNConfig[] = []\r\n\r\n uniqueAlt: number | undefined\r\n\r\n get size(): number {\r\n return this.configs.length\r\n }\r\n\r\n finalize(): void {\r\n // Empties the map to free up memory\r\n this.map = {}\r\n }\r\n\r\n add(config: ATNConfig): void {\r\n const key = getATNConfigKey(config)\r\n // Only add configs which don't exist in our map already\r\n // While this does not influence the actual algorithm, adding them anyway would massively increase memory consumption\r\n if (!(key in this.map)) {\r\n this.map[key] = this.configs.length\r\n this.configs.push(config)\r\n }\r\n }\r\n\r\n get elements(): readonly ATNConfig[] {\r\n return this.configs\r\n }\r\n\r\n get alts(): number[] {\r\n return map(this.configs, (e) => e.alt)\r\n }\r\n\r\n get key(): string {\r\n let value = \"\"\r\n for (const k in this.map) {\r\n value += k + \":\"\r\n }\r\n return value\r\n }\r\n}\r\n\r\nexport function getATNConfigKey(config: ATNConfig, alt = true) {\r\n return `${alt ? `a${config.alt}` : \"\"}s${\r\n config.state.stateNumber\r\n }:${config.stack.map((e) => e.stateNumber.toString()).join(\"_\")}`\r\n}\r\n", "/******************************************************************************\r\n * Copyright 2022 TypeFox GmbH\r\n * This program and the accompanying materials are made available under the\r\n * terms of the MIT License, which is available in the project root.\r\n ******************************************************************************/\r\n\r\nimport {\r\n IToken,\r\n TokenType,\r\n tokenMatcher,\r\n tokenLabel,\r\n Rule,\r\n IProductionWithOccurrence,\r\n NonTerminal,\r\n Alternation,\r\n Option,\r\n RepetitionMandatory,\r\n RepetitionMandatoryWithSeparator,\r\n RepetitionWithSeparator,\r\n Repetition,\r\n Terminal,\r\n BaseParser,\r\n LLkLookaheadStrategy,\r\n ILookaheadValidationError,\r\n IOrAlt,\r\n getLookaheadPaths,\r\n OptionalProductionType\r\n} from \"chevrotain\";\r\nimport {\r\n ATN,\r\n ATNState,\r\n ATN_RULE_STOP,\r\n AtomTransition,\r\n buildATNKey,\r\n createATN,\r\n DecisionState,\r\n EpsilonTransition,\r\n RuleTransition,\r\n Transition\r\n} from \"./atn.js\";\r\nimport {\r\n ATNConfig,\r\n ATNConfigSet,\r\n DFA,\r\n DFAState,\r\n DFA_ERROR,\r\n getATNConfigKey\r\n} from \"./dfa.js\";\r\nimport min from \"lodash-es/min.js\";\r\nimport flatMap from \"lodash-es/flatMap.js\";\r\nimport uniqBy from \"lodash-es/uniqBy.js\";\r\nimport map from \"lodash-es/map.js\";\r\nimport flatten from \"lodash-es/flatten.js\";\r\nimport forEach from \"lodash-es/forEach.js\";\r\nimport isEmpty from \"lodash-es/isEmpty.js\";\r\nimport reduce from \"lodash-es/reduce.js\";\r\n\r\ntype DFACache = (predicateSet: PredicateSet) => DFA\r\n\r\nexport type AmbiguityReport = (message: string) => void;\r\n\r\nfunction createDFACache(startState: DecisionState, decision: number): DFACache {\r\n const map: Record = {}\r\n return (predicateSet) => {\r\n const key = predicateSet.toString()\r\n let existing = map[key]\r\n if (existing !== undefined) {\r\n return existing\r\n } else {\r\n existing = {\r\n atnStartState: startState,\r\n decision,\r\n states: {}\r\n }\r\n map[key] = existing\r\n return existing\r\n }\r\n }\r\n}\r\n\r\nclass PredicateSet {\r\n private predicates: boolean[] = []\r\n\r\n is(index: number): boolean {\r\n return index >= this.predicates.length || this.predicates[index]\r\n }\r\n\r\n set(index: number, value: boolean) {\r\n this.predicates[index] = value\r\n }\r\n\r\n toString(): string {\r\n let value = \"\"\r\n const size = this.predicates.length\r\n for (let i = 0; i < size; i++) {\r\n value += this.predicates[i] === true ? \"1\" : \"0\"\r\n }\r\n return value\r\n }\r\n}\r\n\r\ninterface AdaptivePredictError {\r\n tokenPath: IToken[]\r\n possibleTokenTypes: TokenType[]\r\n actualToken: IToken\r\n}\r\n\r\nconst EMPTY_PREDICATES = new PredicateSet()\r\n\r\nexport interface LLStarLookaheadOptions {\r\n logging?: AmbiguityReport\r\n}\r\n\r\nexport class LLStarLookaheadStrategy extends LLkLookaheadStrategy {\r\n\r\n private atn: ATN;\r\n private dfas: DFACache[];\r\n private logging: AmbiguityReport;\r\n\r\n constructor(options?: LLStarLookaheadOptions) {\r\n super();\r\n this.logging = options?.logging ?? ((message) => console.log(message));\r\n }\r\n\r\n override initialize(options: { rules: Rule[] }): void {\r\n this.atn = createATN(options.rules);\r\n this.dfas = initATNSimulator(this.atn);\r\n }\r\n\r\n override validateAmbiguousAlternationAlternatives(): ILookaheadValidationError[] {\r\n return [];\r\n }\r\n\r\n override validateEmptyOrAlternatives(): ILookaheadValidationError[] {\r\n return [];\r\n }\r\n\r\n override buildLookaheadForAlternation(options: {\r\n prodOccurrence: number;\r\n rule: Rule;\r\n maxLookahead: number;\r\n hasPredicates: boolean;\r\n dynamicTokensEnabled: boolean\r\n }): (this: BaseParser, orAlts?: IOrAlt[] | undefined) => number | undefined {\r\n const { prodOccurrence, rule, hasPredicates, dynamicTokensEnabled } = options;\r\n const dfas = this.dfas;\r\n const logging = this.logging;\r\n const key = buildATNKey(rule, 'Alternation', prodOccurrence);\r\n const decisionState = this.atn.decisionMap[key];\r\n const decisionIndex = decisionState.decision;\r\n const partialAlts: (TokenType | undefined)[][] = map(\r\n getLookaheadPaths({\r\n maxLookahead: 1,\r\n occurrence: prodOccurrence,\r\n prodType: \"Alternation\",\r\n rule: rule\r\n }),\r\n (currAlt) => map(currAlt, (path) => path[0])\r\n )\r\n\r\n if (isLL1Sequence(partialAlts, false) && !dynamicTokensEnabled) {\r\n const choiceToAlt = reduce(\r\n partialAlts,\r\n (result, currAlt, idx) => {\r\n forEach(currAlt, (currTokType) => {\r\n if (currTokType) {\r\n result[currTokType.tokenTypeIdx!] = idx\r\n forEach(currTokType.categoryMatches!, (currExtendingType) => {\r\n result[currExtendingType] = idx\r\n })\r\n }\r\n })\r\n return result\r\n },\r\n {} as Record\r\n )\r\n\r\n if (hasPredicates) {\r\n return function (this: BaseParser, orAlts) {\r\n const nextToken = this.LA(1)\r\n const prediction: number | undefined = choiceToAlt[nextToken.tokenTypeIdx]\r\n if (orAlts !== undefined && prediction !== undefined) {\r\n const gate = orAlts[prediction]?.GATE\r\n if (gate !== undefined && gate.call(this) === false) {\r\n return undefined;\r\n }\r\n }\r\n return prediction\r\n }\r\n } else {\r\n return function (this: BaseParser): number | undefined {\r\n const nextToken = this.LA(1)\r\n return choiceToAlt[nextToken.tokenTypeIdx];\r\n }\r\n }\r\n } else if (hasPredicates) {\r\n return function (this: BaseParser, orAlts) {\r\n const predicates = new PredicateSet()\r\n const length = orAlts === undefined ? 0 : orAlts.length\r\n for (let i = 0; i < length; i++) {\r\n const gate = orAlts?.[i].GATE\r\n predicates.set(i, gate === undefined || gate.call(this))\r\n }\r\n const result = adaptivePredict.call(this, dfas, decisionIndex, predicates, logging);\r\n return typeof result === 'number' ? result : undefined;\r\n }\r\n } else {\r\n return function (this: BaseParser) {\r\n const result = adaptivePredict.call(this, dfas, decisionIndex, EMPTY_PREDICATES, logging);\r\n return typeof result === 'number' ? result : undefined;\r\n }\r\n }\r\n }\r\n\r\n override buildLookaheadForOptional(options: {\r\n prodOccurrence: number;\r\n prodType: OptionalProductionType;\r\n rule: Rule;\r\n maxLookahead: number;\r\n dynamicTokensEnabled: boolean\r\n }): (this: BaseParser) => boolean {\r\n const { prodOccurrence, rule, prodType, dynamicTokensEnabled } = options;\r\n const dfas = this.dfas;\r\n const logging = this.logging;\r\n const key = buildATNKey(rule, prodType, prodOccurrence);\r\n const decisionState = this.atn.decisionMap[key];\r\n const decisionIndex = decisionState.decision;\r\n const alts = map(\r\n getLookaheadPaths({\r\n maxLookahead: 1,\r\n occurrence: prodOccurrence,\r\n prodType,\r\n rule\r\n }),\r\n (e) => {\r\n return map(e, (g) => g[0])\r\n }\r\n )\r\n \r\n if (isLL1Sequence(alts) && alts[0][0] && !dynamicTokensEnabled) {\r\n const alt = alts[0]\r\n const singleTokensTypes = flatten(alt)\r\n \r\n if (\r\n singleTokensTypes.length === 1 &&\r\n isEmpty(singleTokensTypes[0].categoryMatches)\r\n ) {\r\n const expectedTokenType = singleTokensTypes[0]\r\n const expectedTokenUniqueKey = expectedTokenType.tokenTypeIdx\r\n \r\n return function (this: BaseParser): boolean {\r\n return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey\r\n }\r\n } else {\r\n const choiceToAlt = reduce(\r\n singleTokensTypes,\r\n (result, currTokType) => {\r\n if (currTokType !== undefined) {\r\n result[currTokType.tokenTypeIdx!] = true\r\n forEach(currTokType.categoryMatches, (currExtendingType) => {\r\n result[currExtendingType] = true\r\n })\r\n }\r\n return result\r\n },\r\n {} as Record\r\n )\r\n \r\n return function (this: BaseParser): boolean {\r\n const nextToken = this.LA(1)\r\n return choiceToAlt[nextToken.tokenTypeIdx] === true\r\n }\r\n }\r\n }\r\n return function (this: BaseParser) {\r\n const result = adaptivePredict.call(this, dfas, decisionIndex, EMPTY_PREDICATES, logging)\r\n return typeof result === \"object\" ? false : result === 0;\r\n }\r\n }\r\n\r\n}\r\n\r\nfunction isLL1Sequence(sequences: (TokenType | undefined)[][], allowEmpty = true): boolean {\r\n const fullSet = new Set()\r\n\r\n for (const alt of sequences) {\r\n const altSet = new Set()\r\n for (const tokType of alt) {\r\n if (tokType === undefined) {\r\n if (allowEmpty) {\r\n // Epsilon production encountered\r\n break\r\n } else {\r\n return false;\r\n }\r\n }\r\n const indices = [tokType.tokenTypeIdx!].concat(tokType.categoryMatches!)\r\n for (const index of indices) {\r\n if (fullSet.has(index)) {\r\n if (!altSet.has(index)) {\r\n return false\r\n }\r\n } else {\r\n fullSet.add(index)\r\n altSet.add(index)\r\n }\r\n }\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction initATNSimulator(atn: ATN): DFACache[] {\r\n const decisionLength = atn.decisionStates.length\r\n const decisionToDFA: DFACache[] = Array(decisionLength)\r\n for (let i = 0; i < decisionLength; i++) {\r\n decisionToDFA[i] = createDFACache(atn.decisionStates[i], i)\r\n }\r\n return decisionToDFA;\r\n}\r\n\r\nfunction adaptivePredict(\r\n this: BaseParser,\r\n dfaCaches: DFACache[],\r\n decision: number,\r\n predicateSet: PredicateSet,\r\n logging: AmbiguityReport\r\n): number | AdaptivePredictError {\r\n const dfa = dfaCaches[decision](predicateSet)\r\n let start = dfa.start\r\n if (start === undefined) {\r\n const closure = computeStartState(dfa.atnStartState as ATNState)\r\n start = addDFAState(dfa, newDFAState(closure))\r\n dfa.start = start\r\n }\r\n\r\n const alt = performLookahead.apply(this, [dfa, start, predicateSet, logging])\r\n return alt\r\n}\r\n\r\nfunction performLookahead(\r\n this: BaseParser,\r\n dfa: DFA,\r\n s0: DFAState,\r\n predicateSet: PredicateSet,\r\n logging: AmbiguityReport\r\n): number | AdaptivePredictError {\r\n let previousD = s0\r\n\r\n let i = 1\r\n const path: IToken[] = []\r\n let t = this.LA(i++)\r\n\r\n while (true) {\r\n let d = getExistingTargetState(previousD, t)\r\n if (d === undefined) {\r\n d = computeLookaheadTarget.apply(this, [dfa, previousD, t, i, predicateSet, logging])\r\n }\r\n\r\n if (d === DFA_ERROR) {\r\n return buildAdaptivePredictError(path, previousD, t)\r\n }\r\n\r\n if (d.isAcceptState === true) {\r\n return d.prediction\r\n }\r\n\r\n previousD = d\r\n path.push(t)\r\n t = this.LA(i++)\r\n }\r\n}\r\n\r\nfunction computeLookaheadTarget(\r\n this: BaseParser,\r\n dfa: DFA,\r\n previousD: DFAState,\r\n token: IToken,\r\n lookahead: number,\r\n predicateSet: PredicateSet,\r\n logging: AmbiguityReport\r\n): DFAState {\r\n const reach = computeReachSet(previousD.configs, token, predicateSet)\r\n if (reach.size === 0) {\r\n addDFAEdge(dfa, previousD, token, DFA_ERROR)\r\n return DFA_ERROR\r\n }\r\n\r\n let newState = newDFAState(reach)\r\n const predictedAlt = getUniqueAlt(reach, predicateSet)\r\n\r\n if (predictedAlt !== undefined) {\r\n newState.isAcceptState = true\r\n newState.prediction = predictedAlt\r\n newState.configs.uniqueAlt = predictedAlt\r\n } else if (hasConflictTerminatingPrediction(reach)) {\r\n const prediction = min(reach.alts)!\r\n newState.isAcceptState = true\r\n newState.prediction = prediction\r\n newState.configs.uniqueAlt = prediction\r\n reportLookaheadAmbiguity.apply(this, [dfa, lookahead, reach.alts, logging])\r\n }\r\n\r\n newState = addDFAEdge(dfa, previousD, token, newState)\r\n return newState\r\n}\r\n\r\nfunction reportLookaheadAmbiguity(\r\n this: BaseParser,\r\n dfa: DFA,\r\n lookahead: number,\r\n ambiguityIndices: number[],\r\n logging: AmbiguityReport\r\n) {\r\n const prefixPath: TokenType[] = []\r\n for (let i = 1; i <= lookahead; i++) {\r\n prefixPath.push(this.LA(i).tokenType)\r\n }\r\n const atnState = dfa.atnStartState\r\n const topLevelRule = atnState.rule\r\n const production = atnState.production\r\n const message = buildAmbiguityError({\r\n topLevelRule,\r\n ambiguityIndices,\r\n production,\r\n prefixPath\r\n })\r\n logging(message)\r\n}\r\n\r\nfunction buildAmbiguityError(options: {\r\n topLevelRule: Rule\r\n prefixPath: TokenType[]\r\n ambiguityIndices: number[]\r\n production: IProductionWithOccurrence\r\n}): string {\r\n const pathMsg = map(options.prefixPath, (currtok) =>\r\n tokenLabel(currtok)\r\n ).join(\", \")\r\n const occurrence =\r\n options.production.idx === 0 ? \"\" : options.production.idx\r\n let currMessage =\r\n `Ambiguous Alternatives Detected: <${options.ambiguityIndices.join(\r\n \", \"\r\n )}> in <${getProductionDslName(options.production)}${occurrence}>` +\r\n ` inside <${options.topLevelRule.name}> Rule,\\n` +\r\n `<${pathMsg}> may appears as a prefix path in all these alternatives.\\n`\r\n\r\n currMessage =\r\n currMessage +\r\n `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\\n` +\r\n `For Further details.`\r\n return currMessage\r\n}\r\n\r\nfunction getProductionDslName(prod: IProductionWithOccurrence): string {\r\n if (prod instanceof NonTerminal) {\r\n return \"SUBRULE\"\r\n } else if (prod instanceof Option) {\r\n return \"OPTION\"\r\n } else if (prod instanceof Alternation) {\r\n return \"OR\"\r\n } else if (prod instanceof RepetitionMandatory) {\r\n return \"AT_LEAST_ONE\"\r\n } else if (prod instanceof RepetitionMandatoryWithSeparator) {\r\n return \"AT_LEAST_ONE_SEP\"\r\n } else if (prod instanceof RepetitionWithSeparator) {\r\n return \"MANY_SEP\"\r\n } else if (prod instanceof Repetition) {\r\n return \"MANY\"\r\n } else if (prod instanceof Terminal) {\r\n return \"CONSUME\"\r\n } else {\r\n throw Error(\"non exhaustive match\")\r\n }\r\n}\r\n\r\nfunction buildAdaptivePredictError(\r\n path: IToken[],\r\n previous: DFAState,\r\n current: IToken\r\n): AdaptivePredictError {\r\n const nextTransitions = flatMap(\r\n previous.configs.elements,\r\n (e) => e.state.transitions\r\n )\r\n const nextTokenTypes = uniqBy(\r\n nextTransitions\r\n .filter((e): e is AtomTransition => e instanceof AtomTransition)\r\n .map((e) => e.tokenType),\r\n (e) => e.tokenTypeIdx\r\n )\r\n return {\r\n actualToken: current,\r\n possibleTokenTypes: nextTokenTypes,\r\n tokenPath: path\r\n }\r\n}\r\n\r\nfunction getExistingTargetState(\r\n state: DFAState,\r\n token: IToken\r\n): DFAState | undefined {\r\n return state.edges[token.tokenTypeIdx]\r\n}\r\n\r\nfunction computeReachSet(\r\n configs: ATNConfigSet,\r\n token: IToken,\r\n predicateSet: PredicateSet\r\n): ATNConfigSet {\r\n const intermediate = new ATNConfigSet()\r\n const skippedStopStates: ATNConfig[] = []\r\n\r\n for (const c of configs.elements) {\r\n if (predicateSet.is(c.alt) === false) {\r\n continue\r\n }\r\n if (c.state.type === ATN_RULE_STOP) {\r\n skippedStopStates.push(c)\r\n continue\r\n }\r\n const transitionLength = c.state.transitions.length\r\n for (let i = 0; i < transitionLength; i++) {\r\n const transition = c.state.transitions[i]\r\n const target = getReachableTarget(transition, token)\r\n if (target !== undefined) {\r\n intermediate.add({\r\n state: target,\r\n alt: c.alt,\r\n stack: c.stack\r\n })\r\n }\r\n }\r\n }\r\n\r\n let reach: ATNConfigSet | undefined\r\n\r\n if (skippedStopStates.length === 0 && intermediate.size === 1) {\r\n reach = intermediate\r\n }\r\n\r\n if (reach === undefined) {\r\n reach = new ATNConfigSet()\r\n for (const c of intermediate.elements) {\r\n closure(c, reach)\r\n }\r\n }\r\n\r\n if (skippedStopStates.length > 0 && !hasConfigInRuleStopState(reach)) {\r\n for (const c of skippedStopStates) {\r\n reach.add(c)\r\n }\r\n }\r\n\r\n return reach\r\n}\r\n\r\nfunction getReachableTarget(\r\n transition: Transition,\r\n token: IToken\r\n): ATNState | undefined {\r\n if (\r\n transition instanceof AtomTransition &&\r\n tokenMatcher(token, transition.tokenType)\r\n ) {\r\n return transition.target\r\n }\r\n return undefined\r\n}\r\n\r\nfunction getUniqueAlt(\r\n configs: ATNConfigSet,\r\n predicateSet: PredicateSet\r\n): number | undefined {\r\n let alt: number | undefined\r\n for (const c of configs.elements) {\r\n if (predicateSet.is(c.alt) === true) {\r\n if (alt === undefined) {\r\n alt = c.alt\r\n } else if (alt !== c.alt) {\r\n return undefined\r\n }\r\n }\r\n }\r\n return alt\r\n}\r\n\r\nfunction newDFAState(closure: ATNConfigSet): DFAState {\r\n return {\r\n configs: closure,\r\n edges: {},\r\n isAcceptState: false,\r\n prediction: -1\r\n }\r\n}\r\n\r\nfunction addDFAEdge(\r\n dfa: DFA,\r\n from: DFAState,\r\n token: IToken,\r\n to: DFAState\r\n): DFAState {\r\n to = addDFAState(dfa, to)\r\n from.edges[token.tokenTypeIdx] = to\r\n return to\r\n}\r\n\r\nfunction addDFAState(dfa: DFA, state: DFAState): DFAState {\r\n if (state === DFA_ERROR) {\r\n return state\r\n }\r\n // Repetitions have the same config set\r\n // Therefore, storing the key of the config in a map allows us to create a loop in our DFA\r\n const mapKey = state.configs.key\r\n const existing = dfa.states[mapKey]\r\n if (existing !== undefined) {\r\n return existing\r\n }\r\n state.configs.finalize()\r\n dfa.states[mapKey] = state\r\n return state\r\n}\r\n\r\nfunction computeStartState(atnState: ATNState): ATNConfigSet {\r\n const configs = new ATNConfigSet()\r\n\r\n const numberOfTransitions = atnState.transitions.length\r\n for (let i = 0; i < numberOfTransitions; i++) {\r\n const target = atnState.transitions[i].target\r\n const config: ATNConfig = {\r\n state: target,\r\n alt: i,\r\n stack: []\r\n }\r\n closure(config, configs)\r\n }\r\n\r\n return configs\r\n}\r\n\r\nfunction closure(config: ATNConfig, configs: ATNConfigSet): void {\r\n const p = config.state\r\n\r\n if (p.type === ATN_RULE_STOP) {\r\n if (config.stack.length > 0) {\r\n const atnStack = [...config.stack]\r\n const followState = atnStack.pop()!\r\n const followConfig: ATNConfig = {\r\n state: followState,\r\n alt: config.alt,\r\n stack: atnStack\r\n }\r\n closure(followConfig, configs)\r\n } else {\r\n // Dipping into outer context, simply add the config\r\n // This will stop computation once every config is at the rule stop state\r\n configs.add(config)\r\n }\r\n return\r\n }\r\n\r\n if (!p.epsilonOnlyTransitions) {\r\n configs.add(config)\r\n }\r\n\r\n const transitionLength = p.transitions.length\r\n for (let i = 0; i < transitionLength; i++) {\r\n const transition = p.transitions[i]\r\n const c = getEpsilonTarget(config, transition)\r\n\r\n if (c !== undefined) {\r\n closure(c, configs)\r\n }\r\n }\r\n}\r\n\r\nfunction getEpsilonTarget(\r\n config: ATNConfig,\r\n transition: Transition\r\n): ATNConfig | undefined {\r\n if (transition instanceof EpsilonTransition) {\r\n return {\r\n state: transition.target,\r\n alt: config.alt,\r\n stack: config.stack\r\n }\r\n } else if (transition instanceof RuleTransition) {\r\n const stack = [...config.stack, transition.followState]\r\n return {\r\n state: transition.target,\r\n alt: config.alt,\r\n stack\r\n }\r\n }\r\n return undefined\r\n}\r\n\r\nfunction hasConfigInRuleStopState(configs: ATNConfigSet): boolean {\r\n for (const c of configs.elements) {\r\n if (c.state.type === ATN_RULE_STOP) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n\r\nfunction allConfigsInRuleStopStates(configs: ATNConfigSet): boolean {\r\n for (const c of configs.elements) {\r\n if (c.state.type !== ATN_RULE_STOP) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction hasConflictTerminatingPrediction(configs: ATNConfigSet): boolean {\r\n if (allConfigsInRuleStopStates(configs)) {\r\n return true\r\n }\r\n const altSets = getConflictingAltSets(configs.elements)\r\n const heuristic =\r\n hasConflictingAltSet(altSets) && !hasStateAssociatedWithOneAlt(altSets)\r\n return heuristic\r\n}\r\n\r\nfunction getConflictingAltSets(\r\n configs: readonly ATNConfig[]\r\n): Map> {\r\n const configToAlts = new Map>()\r\n for (const c of configs) {\r\n const key = getATNConfigKey(c, false)\r\n let alts = configToAlts.get(key)\r\n if (alts === undefined) {\r\n alts = {}\r\n configToAlts.set(key, alts)\r\n }\r\n alts[c.alt] = true\r\n }\r\n return configToAlts\r\n}\r\n\r\nfunction hasConflictingAltSet(\r\n altSets: Map>\r\n): boolean {\r\n for (const value of Array.from(altSets.values())) {\r\n if (Object.keys(value).length > 1) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n\r\nfunction hasStateAssociatedWithOneAlt(\r\n altSets: Map>\r\n): boolean {\r\n for (const value of Array.from(altSets.values())) {\r\n if (Object.keys(value).length === 1) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { IToken, TokenType } from 'chevrotain';\nimport type { Range } from 'vscode-languageserver-types';\nimport type { AbstractElement } from '../languages/generated/ast.js';\nimport type { AstNode, CompositeCstNode, CstNode, LeafCstNode, RootCstNode } from '../syntax-tree.js';\nimport { Position } from 'vscode-languageserver-types';\nimport { tokenToRange } from '../utils/cst-utils.js';\n\nexport class CstNodeBuilder {\n\n private rootNode!: RootCstNodeImpl;\n private nodeStack: CompositeCstNodeImpl[] = [];\n\n get current(): CompositeCstNodeImpl {\n return this.nodeStack[this.nodeStack.length - 1] ?? this.rootNode;\n }\n\n buildRootNode(input: string): RootCstNode {\n this.rootNode = new RootCstNodeImpl(input);\n this.rootNode.root = this.rootNode;\n this.nodeStack = [this.rootNode];\n return this.rootNode;\n }\n\n buildCompositeNode(feature: AbstractElement): CompositeCstNode {\n const compositeNode = new CompositeCstNodeImpl();\n compositeNode.grammarSource = feature;\n compositeNode.root = this.rootNode;\n this.current.content.push(compositeNode);\n this.nodeStack.push(compositeNode);\n return compositeNode;\n }\n\n buildLeafNode(token: IToken, feature?: AbstractElement): LeafCstNode {\n const leafNode = new LeafCstNodeImpl(token.startOffset, token.image.length, tokenToRange(token), token.tokenType, !feature);\n leafNode.grammarSource = feature;\n leafNode.root = this.rootNode;\n this.current.content.push(leafNode);\n return leafNode;\n }\n\n removeNode(node: CstNode): void {\n const parent = node.container;\n if (parent) {\n const index = parent.content.indexOf(node);\n if (index >= 0) {\n parent.content.splice(index, 1);\n }\n }\n }\n\n addHiddenNodes(tokens: IToken[]): void {\n const nodes: LeafCstNode[] = [];\n for (const token of tokens) {\n const leafNode = new LeafCstNodeImpl(token.startOffset, token.image.length, tokenToRange(token), token.tokenType, true);\n leafNode.root = this.rootNode;\n nodes.push(leafNode);\n }\n let current: CompositeCstNode = this.current;\n let added = false;\n // If we are within a composite node, we add the hidden nodes to the content\n if (current.content.length > 0) {\n current.content.push(...nodes);\n return;\n }\n // Otherwise we are at a newly created node\n // Instead of adding the hidden nodes here, we search for the first parent node with content\n while (current.container) {\n const index = current.container.content.indexOf(current);\n if (index > 0) {\n // Add the hidden nodes before the current node\n current.container.content.splice(index, 0, ...nodes);\n added = true;\n break;\n }\n current = current.container;\n }\n // If we arrive at the root node, we add the hidden nodes at the beginning\n // This is the case if the hidden nodes are the first nodes in the tree\n if (!added) {\n this.rootNode.content.unshift(...nodes);\n }\n }\n\n construct(item: { $type: string | symbol | undefined, $cstNode: CstNode, $infix?: boolean }): void {\n const current: CstNode = this.current;\n // The specified item could be a datatype ($type is symbol), fragment ($type is undefined) or infix rule ($infix is true)\n // Only if the $type is a string, we actually assign the element\n if (typeof item.$type === 'string' && !item.$infix) {\n this.current.astNode = item;\n }\n item.$cstNode = current;\n const node = this.nodeStack.pop();\n // Empty composite nodes are not valid\n // Simply remove the node from the tree\n if (node?.content.length === 0) {\n this.removeNode(node);\n }\n }\n}\n\nexport abstract class AbstractCstNode implements CstNode {\n abstract get offset(): number;\n abstract get length(): number;\n abstract get end(): number;\n abstract get range(): Range;\n\n container?: CompositeCstNode;\n grammarSource?: AbstractElement;\n root: RootCstNode;\n private _astNode?: AstNode;\n\n get hidden(): boolean {\n return false;\n }\n\n get astNode(): AstNode {\n const node = typeof this._astNode?.$type === 'string' ? this._astNode : this.container?.astNode;\n if (!node) {\n throw new Error('This node has no associated AST element');\n }\n return node;\n }\n\n set astNode(value: AstNode | undefined) {\n this._astNode = value;\n }\n\n get text(): string {\n return this.root.fullText.substring(this.offset, this.end);\n }\n}\n\nexport class LeafCstNodeImpl extends AbstractCstNode implements LeafCstNode {\n get offset(): number {\n return this._offset;\n }\n\n get length(): number {\n return this._length;\n }\n\n get end(): number {\n return this._offset + this._length;\n }\n\n override get hidden(): boolean {\n return this._hidden;\n }\n\n get tokenType(): TokenType {\n return this._tokenType;\n }\n\n get range(): Range {\n return this._range;\n }\n\n private _hidden: boolean;\n private _offset: number;\n private _length: number;\n private _range: Range;\n private _tokenType: TokenType;\n\n constructor(offset: number, length: number, range: Range, tokenType: TokenType, hidden = false) {\n super();\n this._hidden = hidden;\n this._offset = offset;\n this._tokenType = tokenType;\n this._length = length;\n this._range = range;\n }\n}\n\nexport class CompositeCstNodeImpl extends AbstractCstNode implements CompositeCstNode {\n readonly content: CstNode[] = new CstNodeContainer(this);\n private _rangeCache?: Range;\n\n get offset(): number {\n return this.firstNonHiddenNode?.offset ?? 0;\n }\n\n get length(): number {\n return this.end - this.offset;\n }\n\n get end(): number {\n return this.lastNonHiddenNode?.end ?? 0;\n }\n\n get range(): Range {\n const firstNode = this.firstNonHiddenNode;\n const lastNode = this.lastNonHiddenNode;\n if (firstNode && lastNode) {\n if (this._rangeCache === undefined) {\n const { range: firstRange } = firstNode;\n const { range: lastRange } = lastNode;\n this._rangeCache = { start: firstRange.start, end: lastRange.end.line < firstRange.start.line ? firstRange.start : lastRange.end };\n }\n return this._rangeCache;\n } else {\n return { start: Position.create(0, 0), end: Position.create(0, 0) };\n }\n }\n\n private get firstNonHiddenNode(): CstNode | undefined {\n for (const child of this.content) {\n if (!child.hidden) {\n return child;\n }\n }\n return this.content[0];\n }\n\n private get lastNonHiddenNode(): CstNode | undefined {\n for (let i = this.content.length - 1; i >= 0; i--) {\n const child = this.content[i];\n if (!child.hidden) {\n return child;\n }\n }\n return this.content[this.content.length - 1];\n }\n}\n\nclass CstNodeContainer extends Array {\n readonly parent: CompositeCstNode;\n\n constructor(parent: CompositeCstNode) {\n super();\n this.parent = parent;\n Object.setPrototypeOf(this, CstNodeContainer.prototype);\n }\n\n override push(...items: CstNode[]): number {\n this.addParents(items);\n return super.push(...items);\n }\n\n override unshift(...items: CstNode[]): number {\n this.addParents(items);\n return super.unshift(...items);\n }\n\n override splice(start: number, count: number, ...items: CstNode[]): CstNode[] {\n this.addParents(items);\n return super.splice(start, count, ...items);\n }\n\n private addParents(items: CstNode[]): void {\n for (const item of items) {\n (item).container = this.parent;\n }\n }\n}\n\nexport class RootCstNodeImpl extends CompositeCstNodeImpl implements RootCstNode {\n private _text = '';\n\n override get text(): string {\n return this._text.substring(this.offset, this.end);\n }\n\n get fullText(): string {\n return this._text;\n }\n\n constructor(input?: string) {\n super();\n this._text = input ?? '';\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isInfixRule } from '../languages/generated/ast.js';\nimport type { AbstractElement, Action, Assignment, InfixRule, ParserRule } from '../languages/generated/ast.js';\nimport type { DSLMethodOpts, ILexingError, IOrAlt, IParserErrorMessageProvider, IRecognitionException, IToken, ParserMethod, SubruleMethodOpts, TokenType, TokenVocabulary, IRuleConfig } from 'chevrotain';\nimport type { Linker } from '../references/linker.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, AstReflection, CompositeCstNode, CstNode } from '../syntax-tree.js';\nimport type { Lexer, LexerResult } from './lexer.js';\nimport type { IParserConfig } from './parser-config.js';\nimport type { ValueConverter } from './value-converter.js';\nimport { defaultParserErrorProvider, EmbeddedActionsParser, LLkLookaheadStrategy } from 'chevrotain';\nimport { LLStarLookaheadStrategy } from 'chevrotain-allstar';\nimport { isAssignment, isCrossReference, isKeyword, isParserRule } from '../languages/generated/ast.js';\nimport { getTypeName, isDataTypeRule } from '../utils/grammar-utils.js';\nimport { assignMandatoryProperties, getContainerOfType, linkContentToContainer } from '../utils/ast-utils.js';\nimport { CstNodeBuilder } from './cst-node-builder.js';\nimport type { LexingReport } from './token-builder.js';\nimport type { ProfilingTask } from '../workspace/profiler.js';\n\nexport type ParseResult = {\n value: T,\n parserErrors: IRecognitionException[],\n lexerErrors: ILexingError[],\n lexerReport?: LexingReport\n}\n\nexport const DatatypeSymbol = Symbol('Datatype');\n\ninterface DataTypeNode {\n $cstNode: CompositeCstNode\n /** Instead of a string, this node is uniquely identified by the `Datatype` symbol */\n $type: symbol\n /** Used as a storage for all parsed terminals, keywords and sub-datatype rules */\n value: string\n}\n\ninterface InfixElement {\n $infixName: string;\n $type: string;\n $cstNode: CompositeCstNode;\n parts?: AstNode[];\n operators?: string[];\n}\n\nfunction isDataTypeNode(node: { $type: string | symbol | undefined }): node is DataTypeNode {\n return node.$type === DatatypeSymbol;\n}\n\ntype RuleResult = (args: Args) => any;\n\ntype Args = Record;\n\ntype RuleImpl = (args: Args) => any;\n\ninterface AssignmentElement {\n assignment?: Assignment\n crossRef?: 'single' | 'multi'\n}\n\n/**\n * Base interface for all parsers. Mainly used by the `parser-builder-base.ts` to perform work on different kinds of parsers.\n * The main use cases are:\n * * AST parser: Based on a string, create an AST for the current grammar\n * * Completion parser: Based on a partial string, identify the current position of the input within the grammar\n */\nexport interface BaseParser {\n /**\n * Adds a new parser rule to the parser\n */\n rule(rule: ParserRule | InfixRule, impl: RuleImpl): RuleResult;\n /**\n * Returns the executable rule function for the specified rule name\n */\n getRule(name: string): RuleResult | undefined;\n /**\n * Performs alternatives parsing (the `|` operation in EBNF/Langium)\n */\n alternatives(idx: number, choices: Array>): void;\n /**\n * Parses the callback as optional (the `?` operation in EBNF/Langium)\n */\n optional(idx: number, callback: DSLMethodOpts): void;\n /**\n * Parses the callback 0 or more times (the `*` operation in EBNF/Langium)\n */\n many(idx: number, callback: DSLMethodOpts): void;\n /**\n * Parses the callback 1 or more times (the `+` operation in EBNF/Langium)\n */\n atLeastOne(idx: number, callback: DSLMethodOpts): void;\n /**\n * Consumes a specific token type from the token input stream.\n * Requires a unique index within the rule for a specific token type.\n */\n consume(idx: number, tokenType: TokenType, feature: AbstractElement): void;\n /**\n * Invokes the executable function for a given parser rule.\n * Requires a unique index within the rule for a specific sub rule.\n * Arguments can be supplied to the rule invocation for semantic predicates\n */\n subrule(idx: number, rule: RuleResult, fragment: boolean, feature: AbstractElement, args: Args): void;\n /**\n * Executes a grammar action that modifies the currently active AST node\n */\n action($type: string, action: Action): void;\n /**\n * Whether the parser is currently actually in use or in \"recording mode\".\n * Recording mode is activated once when the parser is analyzing itself.\n * During this phase, no input exists and therefore no AST should be constructed\n */\n isRecording(): boolean;\n /**\n * Current state of the unordered groups\n */\n get unorderedGroups(): Map;\n /**\n * The rule stack indicates the indices of rules that are currently invoked,\n * in order of their invocation.\n */\n getRuleStack(): number[];\n}\n\nconst ruleSuffix = '\\u200B';\nconst withRuleSuffix = (name: string): string => name.endsWith(ruleSuffix) ? name : name + ruleSuffix;\n\nexport abstract class AbstractLangiumParser implements BaseParser {\n\n protected readonly lexer: Lexer;\n protected readonly wrapper: ChevrotainWrapper;\n protected _unorderedGroups: Map = new Map();\n\n protected allRules = new Map();\n protected mainRule!: RuleResult;\n\n constructor(services: LangiumCoreServices) {\n this.lexer = services.parser.Lexer;\n const tokens = this.lexer.definition;\n const production = services.LanguageMetaData.mode === 'production';\n if (services.shared.profilers.LangiumProfiler?.isActive('parsing')) {\n this.wrapper = new ProfilerWrapper(tokens, {\n ...services.parser.ParserConfig,\n skipValidations: production,\n errorMessageProvider: services.parser.ParserErrorMessageProvider\n }, services.shared.profilers.LangiumProfiler.createTask('parsing', services.LanguageMetaData.languageId));\n } else {\n this.wrapper = new ChevrotainWrapper(tokens, {\n ...services.parser.ParserConfig,\n skipValidations: production,\n errorMessageProvider: services.parser.ParserErrorMessageProvider\n });\n }\n }\n\n alternatives(idx: number, choices: Array>): void {\n this.wrapper.wrapOr(idx, choices);\n }\n\n optional(idx: number, callback: DSLMethodOpts): void {\n this.wrapper.wrapOption(idx, callback);\n }\n\n many(idx: number, callback: DSLMethodOpts): void {\n this.wrapper.wrapMany(idx, callback);\n }\n\n atLeastOne(idx: number, callback: DSLMethodOpts): void {\n this.wrapper.wrapAtLeastOne(idx, callback);\n }\n\n abstract rule(rule: ParserRule | InfixRule, impl: RuleImpl): RuleResult;\n abstract consume(idx: number, tokenType: TokenType, feature: AbstractElement): void;\n abstract subrule(idx: number, rule: RuleResult, fragment: boolean, feature: AbstractElement, args: Args): void;\n abstract action($type: string, action: Action): void;\n\n getRule(name: string): RuleResult | undefined {\n return this.allRules.get(name);\n }\n\n isRecording(): boolean {\n return this.wrapper.IS_RECORDING;\n }\n\n get unorderedGroups(): Map {\n return this._unorderedGroups;\n }\n\n getRuleStack(): number[] {\n return (this.wrapper as any).RULE_STACK;\n }\n\n finalize(): void {\n this.wrapper.wrapSelfAnalysis();\n }\n}\n\nexport interface ParserOptions {\n rule?: string\n}\n\ninterface OperatorPrecedence {\n precedence: number\n rightAssoc: boolean\n}\n\nexport class LangiumParser extends AbstractLangiumParser {\n private readonly linker: Linker;\n private readonly converter: ValueConverter;\n private readonly astReflection: AstReflection;\n private readonly nodeBuilder = new CstNodeBuilder();\n private lexerResult?: LexerResult;\n private stack: any[] = [];\n private assignmentMap = new Map();\n private operatorPrecedence = new Map>();\n\n private get current(): any {\n return this.stack[this.stack.length - 1];\n }\n\n constructor(services: LangiumCoreServices) {\n super(services);\n this.linker = services.references.Linker;\n this.converter = services.parser.ValueConverter;\n this.astReflection = services.shared.AstReflection;\n }\n\n rule(rule: ParserRule | InfixRule, impl: RuleImpl): RuleResult {\n const type = this.computeRuleType(rule);\n let infixName: string | undefined = undefined;\n if (isInfixRule(rule)) {\n infixName = rule.name;\n this.registerPrecedenceMap(rule);\n }\n const ruleMethod = this.wrapper.DEFINE_RULE(withRuleSuffix(rule.name), this.startImplementation(type, infixName, impl).bind(this));\n this.allRules.set(rule.name, ruleMethod);\n if (isParserRule(rule) && rule.entry) {\n this.mainRule = ruleMethod;\n }\n return ruleMethod;\n }\n\n private registerPrecedenceMap(rule: InfixRule): void {\n const name = rule.name;\n const map = new Map();\n for (let i = 0; i < rule.operators.precedences.length; i++) {\n const precedence = rule.operators.precedences[i];\n for (const keyword of precedence.operators) {\n map.set(keyword.value, {\n precedence: i,\n rightAssoc: precedence.associativity === 'right'\n });\n }\n }\n this.operatorPrecedence.set(name, map);\n }\n\n private computeRuleType(rule: ParserRule | InfixRule): string | symbol | undefined {\n if (isInfixRule(rule)) {\n return getTypeName(rule);\n } else if (rule.fragment) {\n return undefined;\n } else if (isDataTypeRule(rule)) {\n return DatatypeSymbol;\n } else {\n return getTypeName(rule);\n }\n }\n\n parse(input: string, options: ParserOptions = {}): ParseResult {\n this.nodeBuilder.buildRootNode(input);\n const lexerResult = this.lexerResult = this.lexer.tokenize(input);\n this.wrapper.input = lexerResult.tokens;\n const ruleMethod = options.rule ? this.allRules.get(options.rule) : this.mainRule;\n if (!ruleMethod) {\n throw new Error(options.rule ? `No rule found with name '${options.rule}'` : 'No main rule available.');\n }\n const result = this.doParse(ruleMethod);\n this.nodeBuilder.addHiddenNodes(lexerResult.hidden);\n this.unorderedGroups.clear();\n this.lexerResult = undefined;\n linkContentToContainer(result, { deep: true });\n return {\n value: result,\n lexerErrors: lexerResult.errors,\n lexerReport: lexerResult.report,\n parserErrors: this.wrapper.errors\n };\n }\n\n private doParse(rule: RuleResult): any {\n let result = this.wrapper.rule(rule);\n if (this.stack.length > 0) {\n // In case the parser throws on the entry rule, `construct` is not called\n // We need to call it manually here\n result = this.construct();\n }\n // Perform some sanity checking\n if (result === undefined) {\n throw new Error('No result from parser');\n } else if (this.stack.length > 0) {\n throw new Error('Parser stack is not empty after parsing');\n }\n return result;\n }\n\n private startImplementation($type: string | symbol | undefined, infixName: string | undefined, implementation: RuleImpl): RuleImpl {\n return (args) => {\n // Only create a new AST node in case the calling rule is not a fragment rule\n const createNode = !this.isRecording() && $type !== undefined;\n if (createNode) {\n const node: any = { $type };\n this.stack.push(node);\n if ($type === DatatypeSymbol) {\n node.value = '';\n } else if (infixName !== undefined) {\n node.$infixName = infixName;\n }\n }\n // Execute the actual rule implementation\n // The `implementation` never returns anything and only manipulates the parser state.\n implementation(args);\n // Once the rule implementation is done, we need to construct the AST node\n // If the implementation throws (likely a recognition error), we relay the construction to the `subrule` method\n return createNode ? this.construct() : undefined;\n };\n }\n\n private extractHiddenTokens(token: IToken): IToken[] {\n const hiddenTokens = this.lexerResult!.hidden;\n if (!hiddenTokens.length) {\n return [];\n }\n const offset = token.startOffset;\n for (let i = 0; i < hiddenTokens.length; i++) {\n const token = hiddenTokens[i];\n if (token.startOffset > offset) {\n return hiddenTokens.splice(0, i);\n }\n }\n return hiddenTokens.splice(0, hiddenTokens.length);\n }\n\n consume(idx: number, tokenType: TokenType, feature: AbstractElement): void {\n const token = this.wrapper.wrapConsume(idx, tokenType);\n if (!this.isRecording() && this.isValidToken(token)) {\n // Before inserting the current token into the CST, we want add the hidden tokens (i.e. comments)\n // These are located directly before the current token, but are not part of the token stream.\n // Adding the hidden tokens to the CST requires searching through the CST and finding the correct position.\n // Performing this work here is more efficient than doing it later on.\n const hiddenTokens = this.extractHiddenTokens(token);\n this.nodeBuilder.addHiddenNodes(hiddenTokens);\n const leafNode = this.nodeBuilder.buildLeafNode(token, feature);\n const { assignment, crossRef } = this.getAssignment(feature);\n const current = this.current;\n if (assignment) {\n const convertedValue = isKeyword(feature) ? token.image : this.converter.convert(token.image, leafNode);\n this.assign(assignment.operator, assignment.feature, convertedValue, leafNode, crossRef);\n } else if (isDataTypeNode(current)) {\n let text = token.image;\n if (!isKeyword(feature)) {\n text = this.converter.convert(text, leafNode).toString();\n }\n current.value += text;\n }\n }\n }\n\n /**\n * Most consumed parser tokens are valid. However there are two cases in which they are not valid:\n *\n * 1. They were inserted during error recovery by the parser. These tokens don't really exist and should not be further processed\n * 2. They contain invalid token ranges. This might include the special EOF token, or other tokens produced by invalid token builders.\n */\n private isValidToken(token: IToken): boolean {\n return !token.isInsertedInRecovery && !isNaN(token.startOffset) && typeof token.endOffset === 'number' && !isNaN(token.endOffset);\n }\n\n subrule(idx: number, rule: RuleResult, fragment: boolean, feature: AbstractElement, args: Args): void {\n let cstNode: CompositeCstNode | undefined;\n if (!this.isRecording() && !fragment) {\n // We only want to create a new CST node if the subrule actually creates a new AST node.\n // In other cases like calls of fragment rules the current CST/AST is populated further.\n // Note that skipping this initialization and leaving cstNode unassigned also skips the subrule assignment later on.\n // This is intended, as fragment rules only enrich the current AST node\n cstNode = this.nodeBuilder.buildCompositeNode(feature);\n }\n let result: any;\n try {\n result = this.wrapper.wrapSubrule(idx, rule, args);\n } finally {\n if (!this.isRecording()) {\n // Calling `subrule` on chevrotain parsers can result in a recognition error\n // This likely means that we encounter a syntax error in the input.\n // In this case, the result of the subrule is `undefined` and we need to call `construct` manually.\n if (result === undefined && !fragment) {\n result = this.construct();\n }\n // We want to perform the subrule assignment regardless of the recognition error\n // But only if the subrule call actually consumed any tokens\n if (result !== undefined && cstNode && cstNode.length > 0) {\n this.performSubruleAssignment(result, feature, cstNode);\n }\n }\n // We don't have a catch block in here because we want to propagate the recognition error to the caller\n // This results in much better error recovery and error messages from chevrotain\n }\n }\n\n private performSubruleAssignment(result: any, feature: AbstractElement, cstNode: CompositeCstNode): void {\n const { assignment, crossRef } = this.getAssignment(feature);\n if (assignment) {\n this.assign(assignment.operator, assignment.feature, result, cstNode, crossRef);\n } else if (!assignment) {\n // If we call a subrule without an assignment we either:\n // 1. append the result of the subrule (data type rule)\n // 2. override the current object with the newly parsed object\n // If the current element is an AST node and the result of the subrule\n // is a data type rule, we can safely discard the results.\n const current = this.current;\n if (isDataTypeNode(current)) {\n current.value += result.toString();\n } else if (typeof result === 'object' && result) {\n const object = this.assignWithoutOverride(result, current);\n const newItem = object;\n this.stack.pop();\n this.stack.push(newItem);\n }\n }\n }\n\n action($type: string, action: Action): void {\n if (!this.isRecording()) {\n let last = this.current;\n if (action.feature && action.operator) {\n last = this.construct();\n this.nodeBuilder.removeNode(last.$cstNode);\n const node = this.nodeBuilder.buildCompositeNode(action);\n node.content.push(last.$cstNode);\n const newItem = { $type };\n this.stack.push(newItem);\n this.assign(action.operator, action.feature, last, last.$cstNode);\n } else {\n last.$type = $type;\n }\n }\n }\n\n private construct(): unknown {\n if (this.isRecording()) {\n return undefined;\n }\n const obj = this.stack.pop();\n this.nodeBuilder.construct(obj);\n if ('$infixName' in obj) {\n return this.constructInfix(obj, this.operatorPrecedence.get(obj.$infixName)!);\n } else if (isDataTypeNode(obj)) {\n return this.converter.convert(obj.value, obj.$cstNode);\n } else {\n assignMandatoryProperties(this.astReflection, obj);\n }\n return obj;\n }\n\n private constructInfix(obj: InfixElement, precedence: Map): any {\n const parts = obj.parts;\n if (!Array.isArray(parts) || parts.length === 0) {\n // Likely the result of a syntax error, simply return undefined\n return undefined;\n }\n const operators = obj.operators;\n if (!Array.isArray(operators) || parts.length < 2) {\n // Captured just a single, non-binary expression\n // Simply return the expression as is.\n return parts[0];\n }\n // Find the operator with the lowest precedence (highest value in precedence map)\n let lowestPrecedenceIdx = 0;\n let lowestPrecedenceValue = -1;\n\n for (let i = 0; i < operators.length; i++) {\n const operator = operators[i];\n const opPrecedence = precedence.get(operator) ?? {\n precedence: Infinity,\n rightAssoc: false\n };\n\n // For equal precedence, use associativity to determine which operator to pick\n if (opPrecedence.precedence > lowestPrecedenceValue) {\n // Always pick operators with lower precedence (higher precedence value)\n lowestPrecedenceValue = opPrecedence.precedence;\n lowestPrecedenceIdx = i;\n } else if (opPrecedence.precedence === lowestPrecedenceValue) {\n // Check associativity when precedence is equal\n if (!opPrecedence.rightAssoc) {\n // For left associative operators (default), pick the leftmost one\n // This means choosing the rightmost equal-precedence operator when working backwards\n lowestPrecedenceIdx = i;\n }\n // For right associative operators with equal precedence,\n // we keep the previous (rightmost) index\n }\n }\n\n // Split the expression at the lowest precedence operator\n const leftOperators = operators.slice(0, lowestPrecedenceIdx);\n const rightOperators = operators.slice(lowestPrecedenceIdx + 1);\n\n const leftParts = parts.slice(0, lowestPrecedenceIdx + 1);\n const rightParts = parts.slice(lowestPrecedenceIdx + 1);\n\n // Create sub-expressions\n const leftInfix: InfixElement = {\n $infixName: obj.$infixName,\n $type: obj.$type,\n $cstNode: obj.$cstNode,\n parts: leftParts,\n operators: leftOperators\n };\n const rightInfix: InfixElement = {\n $infixName: obj.$infixName,\n $type: obj.$type,\n $cstNode: obj.$cstNode,\n parts: rightParts,\n operators: rightOperators\n };\n\n // Recursively build the left and right subtrees\n const leftTree = this.constructInfix(leftInfix, precedence);\n const rightTree = this.constructInfix(rightInfix, precedence);\n\n // Create the final binary expression\n return {\n $type: obj.$type,\n $cstNode: obj.$cstNode,\n left: leftTree,\n operator: operators[lowestPrecedenceIdx],\n right: rightTree\n };\n }\n\n private getAssignment(feature: AbstractElement): AssignmentElement {\n if (!this.assignmentMap.has(feature)) {\n const assignment = getContainerOfType(feature, isAssignment);\n this.assignmentMap.set(feature, {\n assignment: assignment,\n crossRef: assignment && isCrossReference(assignment.terminal) ? (assignment.terminal.isMulti ? 'multi' : 'single') : undefined\n });\n }\n return this.assignmentMap.get(feature)!;\n }\n\n private assign(operator: string, feature: string, value: unknown, cstNode: CstNode, crossRef?: 'multi' | 'single'): void {\n const obj = this.current;\n let item: unknown;\n if (crossRef === 'single' && typeof value === 'string') {\n item = this.linker.buildReference(obj, feature, cstNode, value);\n } else if (crossRef === 'multi' && typeof value === 'string') {\n item = this.linker.buildMultiReference(obj, feature, cstNode, value);\n } else {\n item = value;\n }\n switch (operator) {\n case '=': {\n obj[feature] = item;\n break;\n }\n case '?=': {\n obj[feature] = true;\n break;\n }\n case '+=': {\n if (!Array.isArray(obj[feature])) {\n obj[feature] = [];\n }\n obj[feature].push(item);\n }\n }\n }\n\n private assignWithoutOverride(target: any, source: any): any {\n for (const [name, existingValue] of Object.entries(source)) {\n const newValue = target[name];\n if (newValue === undefined) {\n target[name] = existingValue;\n } else if (Array.isArray(newValue) && Array.isArray(existingValue)) {\n existingValue.push(...newValue);\n target[name] = existingValue;\n }\n }\n // The target was parsed from a unassigned subrule\n // After the subrule construction, it received a cst node\n // This CST node will later be overriden by the cst node builder\n // To prevent references to stale AST nodes in the CST,\n // we need to remove the reference here\n const targetCstNode = target.$cstNode;\n if (targetCstNode) {\n targetCstNode.astNode = undefined;\n target.$cstNode = undefined;\n }\n return target;\n }\n\n get definitionErrors(): IParserDefinitionError[] {\n return this.wrapper.definitionErrors;\n }\n}\n\nexport interface IParserDefinitionError {\n message: string\n type: number\n ruleName?: string\n}\n\nexport abstract class AbstractParserErrorMessageProvider implements IParserErrorMessageProvider {\n\n buildMismatchTokenMessage(options: {\n expected: TokenType\n actual: IToken\n previous: IToken\n ruleName: string\n }): string {\n return defaultParserErrorProvider.buildMismatchTokenMessage(options);\n }\n\n buildNotAllInputParsedMessage(options: {\n firstRedundant: IToken\n ruleName: string\n }): string {\n return defaultParserErrorProvider.buildNotAllInputParsedMessage(options);\n }\n\n buildNoViableAltMessage(options: {\n expectedPathsPerAlt: TokenType[][][]\n actual: IToken[]\n previous: IToken\n customUserDescription: string\n ruleName: string\n }): string {\n return defaultParserErrorProvider.buildNoViableAltMessage(options);\n }\n\n buildEarlyExitMessage(options: {\n expectedIterationPaths: TokenType[][]\n actual: IToken[]\n previous: IToken\n customUserDescription: string\n ruleName: string\n }): string {\n return defaultParserErrorProvider.buildEarlyExitMessage(options);\n }\n\n}\n\nexport class LangiumParserErrorMessageProvider extends AbstractParserErrorMessageProvider {\n\n override buildMismatchTokenMessage({ expected, actual }: {\n expected: TokenType\n actual: IToken\n previous: IToken\n ruleName: string\n }): string {\n const expectedMsg = expected.LABEL\n ? '`' + expected.LABEL + '`'\n : expected.name.endsWith(':KW')\n ? `keyword '${expected.name.substring(0, expected.name.length - 3)}'`\n : `token of type '${expected.name}'`;\n return `Expecting ${expectedMsg} but found \\`${actual.image}\\`.`;\n }\n\n override buildNotAllInputParsedMessage({ firstRedundant }: {\n firstRedundant: IToken\n ruleName: string\n }): string {\n return `Expecting end of file but found \\`${firstRedundant.image}\\`.`;\n }\n}\n\nexport interface CompletionParserResult {\n tokens: IToken[]\n elementStack: AbstractElement[]\n tokenIndex: number\n}\n\nexport class LangiumCompletionParser extends AbstractLangiumParser {\n private tokens: IToken[] = [];\n\n private elementStack: AbstractElement[] = [];\n private lastElementStack: AbstractElement[] = [];\n private nextTokenIndex = 0;\n private stackSize = 0;\n\n action(): void {\n // NOOP\n }\n\n construct(): unknown {\n // NOOP\n return undefined;\n }\n\n parse(input: string): CompletionParserResult {\n this.resetState();\n const tokens = this.lexer.tokenize(input, { mode: 'partial' });\n this.tokens = tokens.tokens;\n this.wrapper.input = [...this.tokens];\n this.mainRule.call(this.wrapper, {});\n this.unorderedGroups.clear();\n return {\n tokens: this.tokens,\n elementStack: [...this.lastElementStack],\n tokenIndex: this.nextTokenIndex\n };\n }\n\n rule(rule: ParserRule, impl: RuleImpl): RuleResult {\n const ruleMethod = this.wrapper.DEFINE_RULE(withRuleSuffix(rule.name), this.startImplementation(impl).bind(this));\n this.allRules.set(rule.name, ruleMethod);\n if (rule.entry) {\n this.mainRule = ruleMethod;\n }\n return ruleMethod;\n }\n\n private resetState(): void {\n this.elementStack = [];\n this.lastElementStack = [];\n this.nextTokenIndex = 0;\n this.stackSize = 0;\n }\n\n private startImplementation(implementation: RuleImpl): RuleImpl {\n return (args) => {\n const size = this.keepStackSize();\n try {\n implementation(args);\n } finally {\n this.resetStackSize(size);\n }\n };\n }\n\n private removeUnexpectedElements(): void {\n this.elementStack.splice(this.stackSize);\n }\n\n keepStackSize(): number {\n const size = this.elementStack.length;\n this.stackSize = size;\n return size;\n }\n\n resetStackSize(size: number): void {\n this.removeUnexpectedElements();\n this.stackSize = size;\n }\n\n consume(idx: number, tokenType: TokenType, feature: AbstractElement): void {\n this.wrapper.wrapConsume(idx, tokenType);\n if (!this.isRecording()) {\n this.lastElementStack = [...this.elementStack, feature];\n this.nextTokenIndex = this.currIdx + 1;\n }\n }\n\n subrule(idx: number, rule: RuleResult, fragment: boolean, feature: AbstractElement, args: Args): void {\n this.before(feature);\n this.wrapper.wrapSubrule(idx, rule, args);\n this.after(feature);\n }\n\n before(element: AbstractElement): void {\n if (!this.isRecording()) {\n this.elementStack.push(element);\n }\n }\n\n after(element: AbstractElement): void {\n if (!this.isRecording()) {\n const index = this.elementStack.lastIndexOf(element);\n if (index >= 0) {\n this.elementStack.splice(index);\n }\n }\n }\n\n get currIdx(): number {\n return (this.wrapper as any).currIdx;\n }\n}\n\nconst defaultConfig: IParserConfig = {\n recoveryEnabled: true,\n nodeLocationTracking: 'full',\n skipValidations: true,\n errorMessageProvider: new LangiumParserErrorMessageProvider()\n};\n\n/**\n * This class wraps the embedded actions parser of chevrotain and exposes protected methods.\n * This way, we can build the `LangiumParser` as a composition.\n */\nclass ChevrotainWrapper extends EmbeddedActionsParser {\n\n // This array is set in the base implementation of Chevrotain.\n definitionErrors: IParserDefinitionError[];\n\n constructor(tokens: TokenVocabulary, config: IParserConfig) {\n const useDefaultLookahead = config && 'maxLookahead' in config;\n super(tokens, {\n ...defaultConfig,\n lookaheadStrategy: useDefaultLookahead\n ? new LLkLookaheadStrategy({ maxLookahead: config.maxLookahead })\n : new LLStarLookaheadStrategy({\n // If validations are skipped, don't log the lookahead warnings\n logging: config.skipValidations ? () => { } : undefined\n }),\n ...config,\n });\n }\n\n get IS_RECORDING(): boolean {\n return this.RECORDING_PHASE;\n }\n\n DEFINE_RULE(name: string, impl: RuleImpl, config?: IRuleConfig): RuleResult {\n return this.RULE(name, impl, config);\n }\n\n wrapSelfAnalysis(): void {\n this.performSelfAnalysis();\n }\n\n wrapConsume(idx: number, tokenType: TokenType): IToken {\n return this.consume(idx, tokenType, undefined);\n }\n\n wrapSubrule(idx: number, rule: RuleResult, args: Args): unknown {\n return this.subrule(idx, rule, {\n ARGS: [args]\n });\n }\n\n wrapOr(idx: number, choices: Array>): void {\n this.or(idx, choices);\n }\n\n wrapOption(idx: number, callback: DSLMethodOpts): void {\n this.option(idx, callback);\n }\n\n wrapMany(idx: number, callback: DSLMethodOpts): void {\n this.many(idx, callback);\n }\n\n wrapAtLeastOne(idx: number, callback: DSLMethodOpts): void {\n this.atLeastOne(idx, callback);\n }\n rule(rule: RuleResult): any {\n return rule.call(this, {});\n }\n}\n\nclass ProfilerWrapper extends ChevrotainWrapper {\n private readonly task: ProfilingTask;\n constructor(tokens: TokenVocabulary, config: IParserConfig, task: ProfilingTask) {\n super(tokens, config);\n this.task = task;\n }\n\n override rule(rule: RuleResult): any {\n this.task.start();\n this.task.startSubTask(this.ruleName(rule));\n try {\n return super.rule(rule);\n }\n finally {\n this.task.stopSubTask(this.ruleName(rule));\n this.task.stop();\n }\n }\n\n private ruleName(rule: any): string {\n return rule.ruleName as string;\n }\n protected override subrule(idx: number, ruleToCall: ParserMethod, options?: SubruleMethodOpts): R {\n this.task.startSubTask(this.ruleName(ruleToCall));\n try {\n return super.subrule(idx, ruleToCall, options);\n }\n finally {\n this.task.stopSubTask(this.ruleName(ruleToCall));\n }\n }\n}\n", "/******************************************************************************\n * Copyright 2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { IOrAlt, TokenType, TokenTypeDictionary } from 'chevrotain';\nimport type { AbstractElement, Action, Alternatives, Assignment, Condition, CrossReference, Grammar, Group, InfixRule, Keyword, NamedArgument, ParserRule, RuleCall, UnorderedGroup } from '../languages/generated/ast.js';\nimport type { BaseParser } from './langium-parser.js';\nimport type { AstNode } from '../syntax-tree.js';\nimport type { Cardinality } from '../utils/grammar-utils.js';\nimport { EMPTY_ALT, EOF } from 'chevrotain';\nimport { isAction, isAlternatives, isEndOfFile, isAssignment, isConjunction, isCrossReference, isDisjunction, isGroup, isKeyword, isNegation, isParameterReference, isParserRule, isRuleCall, isTerminalRule, isUnorderedGroup, isBooleanLiteral, isInfixRule, isAbstractParserRule } from '../languages/generated/ast.js';\nimport { assertUnreachable, ErrorWithLocation } from '../utils/errors.js';\nimport { stream } from '../utils/stream.js';\nimport { findNameAssignment, getAllReachableRules, getTypeName } from '../utils/grammar-utils.js';\n\ntype RuleContext = {\n optional: number,\n consume: number,\n subrule: number,\n many: number,\n or: number\n} & ParserContext;\n\ntype ParserContext = {\n parser: BaseParser\n tokens: TokenTypeDictionary\n ruleNames: Map\n}\n\ntype Rule = (args: Args) => unknown;\n\ntype Args = Record;\n\ntype Predicate = (args: Args) => boolean;\n\ntype Method = (args: Args) => void;\n\nexport function createParser(grammar: Grammar, parser: T, tokens: TokenTypeDictionary): T {\n const parserContext: ParserContext = {\n parser,\n tokens,\n ruleNames: new Map()\n };\n buildRules(parserContext, grammar);\n return parser;\n}\n\nfunction buildRules(parserContext: ParserContext, grammar: Grammar): void {\n const reachable = getAllReachableRules(grammar, false);\n const parserRules = stream(grammar.rules).filter(isParserRule).filter(rule => reachable.has(rule));\n for (const rule of parserRules) {\n const ctx: RuleContext = {\n ...parserContext,\n consume: 1,\n optional: 1,\n subrule: 1,\n many: 1,\n or: 1\n };\n parserContext.parser.rule(rule, buildElement(ctx, rule.definition));\n }\n const infixRules = stream(grammar.rules).filter(isInfixRule).filter(rule => reachable.has(rule));\n for (const rule of infixRules) {\n parserContext.parser.rule(rule, buildInfixRule(parserContext, rule));\n }\n}\n\nfunction buildInfixRule(ctx: ParserContext, rule: InfixRule): Method {\n const expressionRule = rule.call.rule.ref;\n if (!expressionRule) {\n throw new Error('Could not resolve reference to infix operator rule: ' + rule.call.rule.$refText);\n }\n if (isTerminalRule(expressionRule)) {\n throw new Error('Cannot use terminal rule in infix expression');\n }\n // We need to construct a bunch of synthetic grammar AST nodes here\n // This ensures that the CST and completion engine get populated as expected\n const allKeywords = rule.operators.precedences.flatMap(e => e.operators);\n // The outer group represents the first expression call and the whole (optional) loop\n const outerGroup: Group = {\n $type: 'Group',\n elements: []\n };\n const part1Assignment: Assignment = {\n $container: outerGroup,\n $type: 'Assignment',\n feature: 'parts',\n operator: '+=',\n terminal: rule.call\n };\n // The inner group represents the loop that contains the operator and expression call\n // It can be infinitely repeated\n const innerGroup: Group = {\n $container: outerGroup,\n $type: 'Group',\n elements: [],\n cardinality: '*'\n };\n outerGroup.elements.push(part1Assignment, innerGroup);\n // Store all operator keywords in one alternative/assignment\n const alternatives: Alternatives = {\n $type: 'Alternatives',\n elements: allKeywords\n };\n const operatorAssignment: Assignment = {\n $container: innerGroup,\n $type: 'Assignment',\n feature: 'operators',\n operator: '+=',\n terminal: alternatives\n };\n // We need a second assignment of the called expression here\n const part2Assignment: Assignment = {\n ...part1Assignment,\n $container: innerGroup\n };\n innerGroup.elements.push(operatorAssignment, part2Assignment);\n const tokens = allKeywords.map(e => ctx.tokens[e.value]);\n const orAlts: Array> = tokens.map((token, index) => ({\n ALT: () => ctx.parser.consume(index, token, operatorAssignment)\n }));\n let subrule: Rule;\n return (args) => {\n subrule ??= getRule(ctx, expressionRule);\n ctx.parser.subrule(0, subrule, false, part1Assignment, args);\n ctx.parser.many(0, {\n DEF: () => {\n ctx.parser.alternatives(0, orAlts);\n ctx.parser.subrule(1, subrule, false, part2Assignment, args);\n }\n });\n };\n}\n\nfunction buildElement(ctx: RuleContext, element: AbstractElement, ignoreGuard = false): Method {\n let method: Method;\n if (isKeyword(element)) {\n method = buildKeyword(ctx, element);\n } else if (isAction(element)) {\n method = buildAction(ctx, element);\n } else if (isAssignment(element)) {\n method = buildElement(ctx, element.terminal);\n } else if (isCrossReference(element)) {\n method = buildCrossReference(ctx, element);\n } else if (isRuleCall(element)) {\n method = buildRuleCall(ctx, element);\n } else if (isAlternatives(element)) {\n method = buildAlternatives(ctx, element);\n } else if (isUnorderedGroup(element)) {\n method = buildUnorderedGroup(ctx, element);\n } else if (isGroup(element)) {\n method = buildGroup(ctx, element);\n } else if(isEndOfFile(element)) {\n const idx = ctx.consume++;\n method = () => ctx.parser.consume(idx, EOF, element);\n } else {\n throw new ErrorWithLocation(element.$cstNode, `Unexpected element type: ${element.$type}`);\n }\n return wrap(ctx, ignoreGuard ? undefined : getGuardCondition(element), method, element.cardinality);\n}\n\nfunction buildAction(ctx: RuleContext, action: Action): Method {\n const actionType = getTypeName(action);\n return () => ctx.parser.action(actionType, action);\n}\n\nfunction buildRuleCall(ctx: RuleContext, ruleCall: RuleCall): Method {\n const rule = ruleCall.rule.ref;\n if (isAbstractParserRule(rule)) {\n const idx = ctx.subrule++;\n const fragment = isParserRule(rule) && rule.fragment;\n const predicate = ruleCall.arguments.length > 0 ? buildRuleCallPredicate(rule, ruleCall.arguments) : () => ({});\n let subrule: Rule;\n return (args) => {\n subrule ??= getRule(ctx, rule);\n ctx.parser.subrule(idx, subrule, fragment, ruleCall, predicate(args));\n };\n } else if (isTerminalRule(rule)) {\n const idx = ctx.consume++;\n const method = getToken(ctx, rule.name);\n return () => ctx.parser.consume(idx, method, ruleCall);\n } else if (!rule) {\n throw new ErrorWithLocation(ruleCall.$cstNode, `Undefined rule: ${ruleCall.rule.$refText}`);\n } else {\n assertUnreachable(rule);\n }\n}\n\nfunction buildRuleCallPredicate(rule: ParserRule | InfixRule, namedArgs: NamedArgument[]): (args: Args) => Args {\n const hasNamedArguments = namedArgs.some(arg => arg.calledByName);\n if (hasNamedArguments) {\n const namedPredicates = namedArgs.map(arg => ({\n parameterName: arg.parameter?.ref?.name,\n predicate: buildPredicate(arg.value)\n }));\n return (args) => {\n const ruleArgs: Args = {};\n for (const { parameterName, predicate } of namedPredicates) {\n if (parameterName) {\n ruleArgs[parameterName] = predicate(args);\n }\n }\n return ruleArgs;\n };\n } else {\n const predicates = namedArgs.map(arg => buildPredicate(arg.value));\n return (args) => {\n const ruleArgs: Args = {};\n for (let i = 0; i < predicates.length; i++) {\n if (i < rule.parameters.length) {\n const parameterName = rule.parameters[i].name;\n const predicate = predicates[i];\n ruleArgs[parameterName] = predicate(args);\n }\n }\n return ruleArgs;\n };\n }\n}\n\ninterface PredicatedMethod {\n ALT: Method,\n GATE?: Predicate\n}\n\nfunction buildPredicate(condition: Condition): Predicate {\n if (isDisjunction(condition)) {\n const left = buildPredicate(condition.left);\n const right = buildPredicate(condition.right);\n return (args) => (left(args) || right(args));\n } else if (isConjunction(condition)) {\n const left = buildPredicate(condition.left);\n const right = buildPredicate(condition.right);\n return (args) => (left(args) && right(args));\n } else if (isNegation(condition)) {\n const value = buildPredicate(condition.value);\n return (args) => !value(args);\n } else if (isParameterReference(condition)) {\n const name = condition.parameter.ref!.name;\n return (args) => args !== undefined && args[name] === true;\n } else if (isBooleanLiteral(condition)) {\n const value = Boolean(condition.true);\n return () => value;\n }\n assertUnreachable(condition);\n}\n\nfunction buildAlternatives(ctx: RuleContext, alternatives: Alternatives): Method {\n if (alternatives.elements.length === 1) {\n return buildElement(ctx, alternatives.elements[0]);\n } else {\n const methods: PredicatedMethod[] = [];\n\n for (const element of alternatives.elements) {\n const predicatedMethod: PredicatedMethod = {\n // Since we handle the guard condition in the alternative already\n // We can ignore the group guard condition inside\n ALT: buildElement(ctx, element, true)\n };\n const guard = getGuardCondition(element);\n if (guard) {\n predicatedMethod.GATE = buildPredicate(guard);\n }\n methods.push(predicatedMethod);\n }\n\n const idx = ctx.or++;\n return (args) => ctx.parser.alternatives(idx, methods.map(method => {\n const alt: IOrAlt = {\n ALT: () => method.ALT(args)\n };\n const gate = method.GATE;\n if (gate) {\n alt.GATE = () => gate(args);\n }\n return alt;\n }));\n }\n}\n\nfunction buildUnorderedGroup(ctx: RuleContext, group: UnorderedGroup): Method {\n if (group.elements.length === 1) {\n return buildElement(ctx, group.elements[0]);\n }\n const methods: PredicatedMethod[] = [];\n\n for (const element of group.elements) {\n const predicatedMethod: PredicatedMethod = {\n // Since we handle the guard condition in the alternative already\n // We can ignore the group guard condition inside\n ALT: buildElement(ctx, element, true)\n };\n const guard = getGuardCondition(element);\n if (guard) {\n predicatedMethod.GATE = buildPredicate(guard);\n }\n methods.push(predicatedMethod);\n }\n\n const orIdx = ctx.or++;\n\n const idFunc = (groupIdx: number, lParser: BaseParser) => {\n const stackId = lParser.getRuleStack().join('-');\n return `uGroup_${groupIdx}_${stackId}`;\n };\n const alternatives: Method = (args) => ctx.parser.alternatives(orIdx, methods.map((method, idx) => {\n const alt: IOrAlt = { ALT: () => true };\n const parser = ctx.parser;\n alt.ALT = () => {\n method.ALT(args);\n if (!parser.isRecording()) {\n const key = idFunc(orIdx, parser);\n if (!parser.unorderedGroups.get(key)) {\n // init after clear state\n parser.unorderedGroups.set(key, []);\n }\n const groupState = parser.unorderedGroups.get(key)!;\n if (typeof groupState?.[idx] === 'undefined') {\n // Not accessed yet\n groupState[idx] = true;\n }\n }\n };\n const gate = method.GATE;\n if (gate) {\n alt.GATE = () => gate(args);\n } else {\n alt.GATE = () => {\n const trackedAlternatives = parser.unorderedGroups.get(idFunc(orIdx, parser));\n const allow = !trackedAlternatives?.[idx];\n return allow;\n };\n }\n return alt;\n }));\n const wrapped = wrap(ctx, getGuardCondition(group), alternatives, '*');\n return (args) => {\n wrapped(args);\n if (!ctx.parser.isRecording()) {\n ctx.parser.unorderedGroups.delete(idFunc(orIdx, ctx.parser));\n }\n };\n}\n\nfunction buildGroup(ctx: RuleContext, group: Group): Method {\n const methods = group.elements.map(e => buildElement(ctx, e));\n return (args) => methods.forEach(method => method(args));\n}\n\nfunction getGuardCondition(element: AbstractElement): Condition | undefined {\n if (isGroup(element)) {\n return element.guardCondition;\n }\n return undefined;\n}\n\nfunction buildCrossReference(ctx: RuleContext, crossRef: CrossReference, terminal = crossRef.terminal): Method {\n if (!terminal) {\n if (!crossRef.type.ref) {\n throw new Error('Could not resolve reference to type: ' + crossRef.type.$refText);\n }\n const assignment = findNameAssignment(crossRef.type.ref);\n const assignTerminal = assignment?.terminal;\n if (!assignTerminal) {\n throw new Error('Could not find name assignment for type: ' + getTypeName(crossRef.type.ref));\n }\n return buildCrossReference(ctx, crossRef, assignTerminal);\n } else if (isRuleCall(terminal) && isParserRule(terminal.rule.ref)) {\n // The terminal is a data type rule here. Everything else will result in a validation error.\n const rule = terminal.rule.ref;\n const idx = ctx.subrule++;\n let subrule: Rule;\n return (args) => {\n subrule ??= getRule(ctx, rule);\n ctx.parser.subrule(idx, subrule, false, crossRef, args);\n };\n } else if (isRuleCall(terminal) && isTerminalRule(terminal.rule.ref)) {\n const idx = ctx.consume++;\n const terminalRule = getToken(ctx, terminal.rule.ref.name);\n return () => ctx.parser.consume(idx, terminalRule, crossRef);\n } else if (isKeyword(terminal)) {\n const idx = ctx.consume++;\n const keyword = getToken(ctx, terminal.value);\n return () => ctx.parser.consume(idx, keyword, crossRef);\n }\n else {\n throw new Error('Could not build cross reference parser');\n }\n}\n\nfunction buildKeyword(ctx: RuleContext, keyword: Keyword): Method {\n const idx = ctx.consume++;\n const token = ctx.tokens[keyword.value];\n if (!token) {\n throw new Error('Could not find token for keyword: ' + keyword.value);\n }\n return () => ctx.parser.consume(idx, token, keyword);\n}\n\nfunction wrap(ctx: RuleContext, guard: Condition | undefined, method: Method, cardinality: Cardinality): Method {\n const gate = guard && buildPredicate(guard);\n\n if (!cardinality) {\n if (gate) {\n const idx = ctx.or++;\n return (args) => ctx.parser.alternatives(idx, [\n {\n ALT: () => method(args),\n GATE: () => gate(args)\n },\n {\n ALT: EMPTY_ALT(),\n GATE: () => !gate(args)\n }\n ]);\n } else {\n return method;\n }\n }\n\n if (cardinality === '*') {\n const idx = ctx.many++;\n return (args) => ctx.parser.many(idx, {\n DEF: () => method(args),\n GATE: gate ? () => gate(args) : undefined\n });\n } else if (cardinality === '+') {\n const idx = ctx.many++;\n if (gate) {\n const orIdx = ctx.or++;\n // In the case of a guard condition for the `+` group\n // We combine it with an empty alternative\n // If the condition returns true, it needs to parse at least a single iteration\n // If its false, it is not allowed to parse anything\n return (args) => ctx.parser.alternatives(orIdx, [\n {\n ALT: () => ctx.parser.atLeastOne(idx, {\n DEF: () => method(args)\n }),\n GATE: () => gate(args)\n },\n {\n ALT: EMPTY_ALT(),\n GATE: () => !gate(args)\n }\n ]);\n } else {\n return (args) => ctx.parser.atLeastOne(idx, {\n DEF: () => method(args),\n });\n }\n } else if (cardinality === '?') {\n const idx = ctx.optional++;\n return (args) => ctx.parser.optional(idx, {\n DEF: () => method(args),\n GATE: gate ? () => gate(args) : undefined\n });\n } else {\n assertUnreachable(cardinality);\n }\n}\n\nfunction getRule(ctx: ParserContext, element: ParserRule | InfixRule | AbstractElement): Rule {\n const name = getRuleName(ctx, element);\n const rule = ctx.parser.getRule(name);\n if (!rule) throw new Error(`Rule \"${name}\" not found.\"`);\n return rule;\n}\n\nfunction getRuleName(ctx: ParserContext, element: ParserRule | InfixRule | AbstractElement): string {\n if (isAbstractParserRule(element)) {\n return element.name;\n } else if (ctx.ruleNames.has(element)) {\n return ctx.ruleNames.get(element)!;\n } else {\n let item: AstNode = element;\n let parent: AstNode = item.$container!;\n let ruleName: string = element.$type;\n while (!isParserRule(parent)) {\n if (isGroup(parent) || isAlternatives(parent) || isUnorderedGroup(parent)) {\n const index = parent.elements.indexOf(item as AbstractElement);\n ruleName = index.toString() + ':' + ruleName;\n }\n item = parent;\n parent = parent.$container!;\n }\n const rule = parent as ParserRule;\n ruleName = rule.name + ':' + ruleName;\n ctx.ruleNames.set(element, ruleName);\n return ruleName;\n }\n}\n\nfunction getToken(ctx: ParserContext, name: string): TokenType {\n const token = ctx.tokens[name];\n if (!token) throw new Error(`Token \"${name}\" not found.\"`);\n return token;\n}\n", "/******************************************************************************\n * Copyright 2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices } from '../services.js';\nimport { LangiumCompletionParser } from './langium-parser.js';\nimport { createParser } from './parser-builder-base.js';\n\nexport function createCompletionParser(services: LangiumCoreServices): LangiumCompletionParser {\n const grammar = services.Grammar;\n const lexer = services.parser.Lexer;\n const parser = new LangiumCompletionParser(services);\n createParser(grammar, parser, lexer.definition);\n parser.finalize();\n return parser;\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices } from '../services.js';\nimport { LangiumParser } from './langium-parser.js';\nimport { createParser } from './parser-builder-base.js';\n\n/**\n * Create and finalize a Langium parser. The parser rules are derived from the grammar, which is\n * available at `services.Grammar`.\n */\nexport function createLangiumParser(services: LangiumCoreServices): LangiumParser {\n const parser = prepareLangiumParser(services);\n parser.finalize();\n return parser;\n}\n\n/**\n * Create a Langium parser without finalizing it. This is used to extract more detailed error\n * information when the parser is initially validated.\n */\nexport function prepareLangiumParser(services: LangiumCoreServices): LangiumParser {\n const grammar = services.Grammar;\n const lexer = services.parser.Lexer;\n const parser = new LangiumParser(services);\n return createParser(grammar, parser, lexer.definition);\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { CustomPatternMatcherFunc, ILexingError, TokenPattern, TokenType, TokenVocabulary } from 'chevrotain';\nimport type { AbstractRule, Grammar, Keyword, TerminalRule } from '../languages/generated/ast.js';\nimport type { Stream } from '../utils/stream.js';\nimport { Lexer } from 'chevrotain';\nimport { isAbstractParserRule, isKeyword, isTerminalRule } from '../languages/generated/ast.js';\nimport { streamAllContents } from '../utils/ast-utils.js';\nimport { getAllReachableRules, terminalRegex } from '../utils/grammar-utils.js';\nimport { escapeRegExp, isWhitespace, partialMatches } from '../utils/regexp-utils.js';\nimport { stream } from '../utils/stream.js';\n\nexport interface TokenBuilderOptions {\n caseInsensitive?: boolean\n}\n\nexport interface TokenBuilder {\n buildTokens(grammar: Grammar, options?: TokenBuilderOptions): TokenVocabulary;\n /**\n * Produces a lexing report for the given text that was just tokenized using the tokens provided by this builder.\n *\n * @param text The text that was tokenized.\n */\n flushLexingReport?(text: string): LexingReport;\n}\n\n/**\n * A custom lexing report that can be produced by the token builder during the lexing process.\n * Adopters need to ensure that the any custom fields are serializable so they can be sent across worker threads.\n */\nexport interface LexingReport {\n diagnostics: LexingDiagnostic[];\n}\n\nexport type LexingDiagnosticSeverity = 'error' | 'warning' | 'info' | 'hint';\n\nexport interface LexingDiagnostic extends ILexingError {\n severity?: LexingDiagnosticSeverity;\n}\n\nexport class DefaultTokenBuilder implements TokenBuilder {\n /**\n * The list of diagnostics stored during the lexing process of a single text.\n */\n protected diagnostics: LexingDiagnostic[] = [];\n\n buildTokens(grammar: Grammar, options?: TokenBuilderOptions): TokenVocabulary {\n const reachableRules = stream(getAllReachableRules(grammar, false));\n const terminalTokens: TokenType[] = this.buildTerminalTokens(reachableRules);\n const tokens: TokenType[] = this.buildKeywordTokens(reachableRules, terminalTokens, options);\n\n // Add all terminals tokens to the end in the order they were defined\n // Chevrotain documentation recommends to add Whitespace-like tokens at the start\n // However, assuming the lexer is able to optimize the tokens, it should not matter\n tokens.push(...terminalTokens);\n // We don't need to add the EOF token explicitly.\n // It is automatically available at the end of the token stream.\n return tokens;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n flushLexingReport(text: string): LexingReport {\n return { diagnostics: this.popDiagnostics() };\n }\n\n protected popDiagnostics(): LexingDiagnostic[] {\n const diagnostics = [...this.diagnostics];\n this.diagnostics = [];\n return diagnostics;\n }\n\n protected buildTerminalTokens(rules: Stream): TokenType[] {\n return rules.filter(isTerminalRule).filter(e => !e.fragment)\n .map(terminal => this.buildTerminalToken(terminal)).toArray();\n }\n\n protected buildTerminalToken(terminal: TerminalRule): TokenType {\n const regex = terminalRegex(terminal);\n const pattern = this.requiresCustomPattern(regex) ? this.regexPatternFunction(regex) : regex;\n const tokenType: TokenType = {\n name: terminal.name,\n PATTERN: pattern,\n };\n if (typeof pattern === 'function') {\n tokenType.LINE_BREAKS = true;\n }\n if (terminal.hidden) {\n // Only skip tokens that are able to accept whitespace\n tokenType.GROUP = isWhitespace(regex) ? Lexer.SKIPPED : 'hidden';\n }\n return tokenType;\n }\n\n protected requiresCustomPattern(regex: RegExp): boolean {\n if (regex.flags.includes('u') || regex.flags.includes('s')) {\n // Unicode and dotall regexes are not supported by Chevrotain.\n return true;\n } else {\n return false;\n }\n }\n\n protected regexPatternFunction(regex: RegExp): CustomPatternMatcherFunc {\n const stickyRegex = new RegExp(regex, regex.flags + 'y');\n return (text, offset) => {\n stickyRegex.lastIndex = offset;\n const execResult = stickyRegex.exec(text);\n return execResult;\n };\n }\n\n protected buildKeywordTokens(rules: Stream, terminalTokens: TokenType[], options?: TokenBuilderOptions): TokenType[] {\n return rules\n // We filter by parser rules, since keywords in terminal rules get transformed into regex and are not actual tokens\n .filter(isAbstractParserRule)\n .flatMap(rule => streamAllContents(rule).filter(isKeyword))\n .distinct(e => e.value).toArray()\n // Sort keywords by descending length\n .sort((a, b) => b.value.length - a.value.length)\n .map(keyword => this.buildKeywordToken(keyword, terminalTokens, Boolean(options?.caseInsensitive)));\n }\n\n protected buildKeywordToken(keyword: Keyword, terminalTokens: TokenType[], caseInsensitive: boolean): TokenType {\n const keywordPattern = this.buildKeywordPattern(keyword, caseInsensitive);\n const tokenType: TokenType = {\n name: keyword.value,\n PATTERN: keywordPattern,\n LONGER_ALT: this.findLongerAlt(keyword, terminalTokens)\n };\n\n if (typeof keywordPattern === 'function') {\n tokenType.LINE_BREAKS = true;\n }\n\n return tokenType;\n }\n\n protected buildKeywordPattern(keyword: Keyword, caseInsensitive: boolean): TokenPattern {\n return caseInsensitive ?\n new RegExp(escapeRegExp(keyword.value), 'i') :\n keyword.value;\n }\n\n protected findLongerAlt(keyword: Keyword, terminalTokens: TokenType[]): TokenType[] {\n return terminalTokens.reduce((longerAlts: TokenType[], token) => {\n const pattern = token?.PATTERN as RegExp;\n if (pattern?.source && partialMatches('^' + pattern.source + '$', keyword.value)) {\n longerAlts.push(token);\n }\n return longerAlts;\n }, []);\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { AbstractElement, AbstractRule } from '../languages/generated/ast.js';\nimport type { CstNode } from '../syntax-tree.js';\nimport { isCrossReference, isRuleCall } from '../languages/generated/ast.js';\nimport { getCrossReferenceTerminal, getRuleType } from '../utils/grammar-utils.js';\n\n/**\n * Language-specific service for converting string values from the source text format into a value to be held in the AST.\n */\nexport interface ValueConverter {\n /**\n * Converts a string value from the source text format into a value to be held in the AST.\n */\n convert(input: string, cstNode: CstNode): ValueType;\n}\n\nexport type ValueType = string | number | boolean | bigint | Date;\n\nexport class DefaultValueConverter implements ValueConverter {\n\n convert(input: string, cstNode: CstNode): ValueType {\n let feature: AbstractElement | undefined = cstNode.grammarSource;\n if (isCrossReference(feature)) {\n feature = getCrossReferenceTerminal(feature);\n }\n if (isRuleCall(feature)) {\n const rule = feature.rule.ref;\n if (!rule) {\n throw new Error('This cst node was not parsed by a rule.');\n }\n return this.runConverter(rule, input, cstNode);\n }\n return input;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected runConverter(rule: AbstractRule, input: string, cstNode: CstNode): ValueType {\n switch (rule.name.toUpperCase()) {\n case 'INT': return ValueConverter.convertInt(input);\n case 'STRING': return ValueConverter.convertString(input);\n case 'ID': return ValueConverter.convertID(input);\n }\n switch (getRuleType(rule)?.toLowerCase()) {\n case 'number': return ValueConverter.convertNumber(input);\n case 'boolean': return ValueConverter.convertBoolean(input);\n case 'bigint': return ValueConverter.convertBigint(input);\n case 'date': return ValueConverter.convertDate(input);\n default: return input;\n }\n }\n}\n\nexport namespace ValueConverter {\n\n export function convertString(input: string): string {\n let result = '';\n for (let i = 1; i < input.length - 1; i++) {\n const c = input.charAt(i);\n if (c === '\\\\') {\n const c1 = input.charAt(++i);\n result += convertEscapeCharacter(c1);\n } else {\n result += c;\n }\n }\n return result;\n }\n\n function convertEscapeCharacter(char: string): string {\n switch (char) {\n case 'b': return '\\b';\n case 'f': return '\\f';\n case 'n': return '\\n';\n case 'r': return '\\r';\n case 't': return '\\t';\n case 'v': return '\\v';\n case '0': return '\\0';\n default: return char;\n }\n }\n\n export function convertID(input: string): string {\n if (input.charAt(0) === '^') {\n return input.substring(1);\n } else {\n return input;\n }\n }\n\n export function convertInt(input: string): number {\n return parseInt(input);\n }\n\n export function convertBigint(input: string): bigint {\n return BigInt(input);\n }\n\n export function convertDate(input: string): Date {\n return new Date(input);\n }\n\n export function convertNumber(input: string): number {\n return Number(input);\n }\n\n export function convertBoolean(input: string): boolean {\n return input.toLowerCase() === 'true';\n }\n\n}\n", "/******************************************************************************\n * Copyright 2024 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\n// eslint-disable-next-line no-restricted-imports\nexport * from 'vscode-jsonrpc/lib/common/cancellation.js';\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { CancellationToken, CancellationTokenSource, type AbstractCancellationTokenSource } from '../utils/cancellation.js';\n\nexport type MaybePromise = T | Promise\n\n/**\n * Delays the execution of the current code to the next tick of the event loop.\n * Don't call this method directly in a tight loop to prevent too many promises from being created.\n */\nexport function delayNextTick(): Promise {\n return new Promise(resolve => {\n // In case we are running in a non-node environment, `setImmediate` isn't available.\n // Using `setTimeout` of the browser API accomplishes the same result.\n if (typeof setImmediate === 'undefined') {\n setTimeout(resolve, 0);\n } else {\n setImmediate(resolve);\n }\n });\n}\n\nlet lastTick = 0;\nlet globalInterruptionPeriod = 10;\n\n/**\n * Reset the global interruption period and create a cancellation token source.\n */\nexport function startCancelableOperation(): AbstractCancellationTokenSource {\n lastTick = performance.now();\n return new CancellationTokenSource();\n}\n\n/**\n * Change the period duration for `interruptAndCheck` to the given number of milliseconds.\n * The default value is 10ms.\n */\nexport function setInterruptionPeriod(period: number): void {\n globalInterruptionPeriod = period;\n}\n\n/**\n * This symbol may be thrown in an asynchronous context by any Langium service that receives\n * a `CancellationToken`. This means that the promise returned by such a service is rejected with\n * this symbol as rejection reason.\n */\nexport const OperationCancelled = Symbol('OperationCancelled');\n\n/**\n * Use this in a `catch` block to check whether the thrown object indicates that the operation\n * has been cancelled.\n */\nexport function isOperationCancelled(err: unknown): err is typeof OperationCancelled {\n return err === OperationCancelled;\n}\n\n/**\n * This function does two things:\n * 1. Check the elapsed time since the last call to this function or to `startCancelableOperation`. If the predefined\n * period (configured with `setInterruptionPeriod`) is exceeded, execution is delayed with `delayNextTick`.\n * 2. If the predefined period is not met yet or execution is resumed after an interruption, the given cancellation\n * token is checked, and if cancellation is requested, `OperationCanceled` is thrown.\n *\n * All services in Langium that receive a `CancellationToken` may potentially call this function, so the\n * `CancellationToken` must be caught (with an `async` try-catch block or a `catch` callback attached to\n * the promise) to avoid that event being exposed as an error.\n */\nexport async function interruptAndCheck(token: CancellationToken): Promise {\n if (token === CancellationToken.None) {\n // Early exit in case cancellation was disabled by the caller\n return;\n }\n const current = performance.now();\n if (current - lastTick >= globalInterruptionPeriod) {\n lastTick = current;\n await delayNextTick();\n // prevent calling delayNextTick every iteration of loop\n // where delayNextTick takes up the majority or all of the\n // globalInterruptionPeriod itself\n lastTick = performance.now();\n }\n if (token.isCancellationRequested) {\n throw OperationCancelled;\n }\n}\n\n/**\n * Simple implementation of the deferred pattern.\n * An object that exposes a promise and functions to resolve and reject it.\n */\nexport class Deferred {\n resolve: (value: T) => this;\n reject: (err?: unknown) => this;\n\n promise = new Promise((resolve, reject) => {\n this.resolve = (arg) => {\n resolve(arg);\n return this;\n };\n this.reject = (err) => {\n reject(err);\n return this;\n };\n });\n}\n", "/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nclass FullTextDocument {\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n const start = this.offsetAt(range.start);\n const end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(changes, version) {\n for (const change of changes) {\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n const range = getWellformedRange(change.range);\n // update content\n const startOffset = this.offsetAt(range.start);\n const endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n const startLine = Math.max(range.start.line, 0);\n const endLine = Math.max(range.end.line, 0);\n let lineOffsets = this._lineOffsets;\n const addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (let i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets);\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n const diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (let i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n }\n getLineOffsets() {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n const lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n const line = low - 1;\n offset = this.ensureBeforeEOL(offset, lineOffsets[line]);\n return { line, character: offset - lineOffsets[line] };\n }\n offsetAt(position) {\n const lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n const lineOffset = lineOffsets[position.line];\n if (position.character <= 0) {\n return lineOffset;\n }\n const nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n const offset = Math.min(lineOffset + position.character, nextLineOffset);\n return this.ensureBeforeEOL(offset, lineOffset);\n }\n ensureBeforeEOL(offset, lineOffset) {\n while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) {\n offset--;\n }\n return offset;\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n static isIncremental(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n }\n static isFull(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n }\n}\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifying its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @param version the changes version for the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n const text = document.getText();\n const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a, b) => {\n const diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = 0;\n const spans = [];\n for (const e of sortedEdits) {\n const startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n})(TextDocument || (TextDocument = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n const p = (data.length / 2) | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n const ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n}\nfunction computeLineOffsets(text, isAtLineStart, textOffset = 0) {\n const result = isAtLineStart ? [textOffset] : [];\n for (let i = 0; i < text.length; i++) {\n const ch = text.charCodeAt(i);\n if (isEOL(ch)) {\n if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\nfunction isEOL(char) {\n return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */;\n}\nfunction getWellformedRange(range) {\n const start = range.start;\n const end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n}\nfunction getWellformedEdit(textEdit) {\n const range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range };\n }\n return textEdit;\n}\n", "// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))", "// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n\n// !!!!!\n// SEE https://github.com/microsoft/vscode/blob/master/src/vs/base/common/platform.ts\n// !!!!!\n\ndeclare const process: { platform: 'win32' };\ndeclare const navigator: { userAgent: string };\n\nexport let isWindows: boolean;\n\nif (typeof process === 'object') {\n\tisWindows = process.platform === 'win32';\n} else if (typeof navigator === 'object') {\n\tlet userAgent = navigator.userAgent;\n\tisWindows = userAgent.indexOf('Windows') >= 0;\n}\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n\nimport { CharCode } from './charCode'\nimport { isWindows } from './platform';\n\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\nconst _singleSlashStart = /^\\//;\nconst _doubleSlashStart = /^\\/\\//;\n\nfunction _validateUri(ret: URI, _strict?: boolean): void {\n\n\t// scheme, must be set\n\tif (!ret.scheme && _strict) {\n\t\tthrow new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\n\t}\n\n\t// scheme, https://tools.ietf.org/html/rfc3986#section-3.1\n\t// ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n\tif (ret.scheme && !_schemePattern.test(ret.scheme)) {\n\t\tthrow new Error('[UriError]: Scheme contains illegal characters.');\n\t}\n\n\t// path, http://tools.ietf.org/html/rfc3986#section-3.3\n\t// If a URI contains an authority component, then the path component\n\t// must either be empty or begin with a slash (\"/\") character. If a URI\n\t// does not contain an authority component, then the path cannot begin\n\t// with two slash characters (\"//\").\n\tif (ret.path) {\n\t\tif (ret.authority) {\n\t\t\tif (!_singleSlashStart.test(ret.path)) {\n\t\t\t\tthrow new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\n\t\t\t}\n\t\t} else {\n\t\t\tif (_doubleSlashStart.test(ret.path)) {\n\t\t\t\tthrow new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\n\t\t\t}\n\t\t}\n\t}\n}\n\n// for a while we allowed uris *without* schemes and this is the migration\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\n// back to the file-scheme. that should cause the least carnage and still be a\n// clear warning\nfunction _schemeFix(scheme: string, _strict: boolean): string {\n\tif (!scheme && !_strict) {\n\t\treturn 'file';\n\t}\n\treturn scheme;\n}\n\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\nfunction _referenceResolution(scheme: string, path: string): string {\n\n\t// the slash-character is our 'default base' as we don't\n\t// support constructing URIs relative to other URIs. This\n\t// also means that we alter and potentially break paths.\n\t// see https://tools.ietf.org/html/rfc3986#section-5.1.4\n\tswitch (scheme) {\n\t\tcase 'https':\n\t\tcase 'http':\n\t\tcase 'file':\n\t\t\tif (!path) {\n\t\t\t\tpath = _slash;\n\t\t\t} else if (path[0] !== _slash) {\n\t\t\t\tpath = _slash + path;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn path;\n}\n\nconst _empty = '';\nconst _slash = '/';\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n\n/**\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component parts\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * ```txt\n * foo://example.com:8042/over/there?name=ferret#nose\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\n * | | | | |\n * scheme authority path query fragment\n * | _____________________|__\n * / \\ / \\\n * urn:example:animal:ferret:nose\n * ```\n */\nexport class URI implements UriComponents {\n\n\tstatic isUri(thing: any): thing is URI {\n\t\tif (thing instanceof URI) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!thing) {\n\t\t\treturn false;\n\t\t}\n\t\treturn typeof (thing).authority === 'string'\n\t\t\t&& typeof (thing).fragment === 'string'\n\t\t\t&& typeof (thing).path === 'string'\n\t\t\t&& typeof (thing).query === 'string'\n\t\t\t&& typeof (thing).scheme === 'string'\n\t\t\t&& typeof (thing).fsPath === 'string'\n\t\t\t&& typeof (thing).with === 'function'\n\t\t\t&& typeof (thing).toString === 'function';\n\t}\n\n\t/**\n\t * scheme is the 'http' part of 'http://www.example.com/some/path?query#fragment'.\n\t * The part before the first colon.\n\t */\n\treadonly scheme: string;\n\n\t/**\n\t * authority is the 'www.example.com' part of 'http://www.example.com/some/path?query#fragment'.\n\t * The part between the first double slashes and the next slash.\n\t */\n\treadonly authority: string;\n\n\t/**\n\t * path is the '/some/path' part of 'http://www.example.com/some/path?query#fragment'.\n\t */\n\treadonly path: string;\n\n\t/**\n\t * query is the 'query' part of 'http://www.example.com/some/path?query#fragment'.\n\t */\n\treadonly query: string;\n\n\t/**\n\t * fragment is the 'fragment' part of 'http://www.example.com/some/path?query#fragment'.\n\t */\n\treadonly fragment: string;\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(scheme: string, authority?: string, path?: string, query?: string, fragment?: string, _strict?: boolean);\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(components: UriComponents);\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(schemeOrData: string | UriComponents, authority?: string, path?: string, query?: string, fragment?: string, _strict: boolean = false) {\n\n\t\tif (typeof schemeOrData === 'object') {\n\t\t\tthis.scheme = schemeOrData.scheme || _empty;\n\t\t\tthis.authority = schemeOrData.authority || _empty;\n\t\t\tthis.path = schemeOrData.path || _empty;\n\t\t\tthis.query = schemeOrData.query || _empty;\n\t\t\tthis.fragment = schemeOrData.fragment || _empty;\n\t\t\t// no validation because it's this URI\n\t\t\t// that creates uri components.\n\t\t\t// _validateUri(this);\n\t\t} else {\n\t\t\tthis.scheme = _schemeFix(schemeOrData, _strict);\n\t\t\tthis.authority = authority || _empty;\n\t\t\tthis.path = _referenceResolution(this.scheme, path || _empty);\n\t\t\tthis.query = query || _empty;\n\t\t\tthis.fragment = fragment || _empty;\n\n\t\t\t_validateUri(this, _strict);\n\t\t}\n\t}\n\n\t// ---- filesystem path -----------------------\n\n\t/**\n\t * Returns a string representing the corresponding file system path of this URI.\n\t * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\n\t * platform specific path separator.\n\t *\n\t * * Will *not* validate the path for invalid characters and semantics.\n\t * * Will *not* look at the scheme of this URI.\n\t * * The result shall *not* be used for display purposes but for accessing a file on disk.\n\t *\n\t *\n\t * The *difference* to `URI#path` is the use of the platform specific separator and the handling\n\t * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\n\t *\n\t * ```ts\n\t\tconst u = URI.parse('file://server/c$/folder/file.txt')\n\t\tu.authority === 'server'\n\t\tu.path === '/shares/c$/file.txt'\n\t\tu.fsPath === '\\\\server\\c$\\folder\\file.txt'\n\t```\n\t *\n\t * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\n\t * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\n\t * with URIs that represent files on disk (`file` scheme).\n\t */\n\tget fsPath(): string {\n\t\t// if (this.scheme !== 'file') {\n\t\t// \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\n\t\t// }\n\t\treturn uriToFsPath(this, false);\n\t}\n\n\t// ---- modify to new -------------------------\n\n\twith(change: { scheme?: string; authority?: string | null; path?: string | null; query?: string | null; fragment?: string | null }): URI {\n\n\t\tif (!change) {\n\t\t\treturn this;\n\t\t}\n\n\t\tlet { scheme, authority, path, query, fragment } = change;\n\t\tif (scheme === undefined) {\n\t\t\tscheme = this.scheme;\n\t\t} else if (scheme === null) {\n\t\t\tscheme = _empty;\n\t\t}\n\t\tif (authority === undefined) {\n\t\t\tauthority = this.authority;\n\t\t} else if (authority === null) {\n\t\t\tauthority = _empty;\n\t\t}\n\t\tif (path === undefined) {\n\t\t\tpath = this.path;\n\t\t} else if (path === null) {\n\t\t\tpath = _empty;\n\t\t}\n\t\tif (query === undefined) {\n\t\t\tquery = this.query;\n\t\t} else if (query === null) {\n\t\t\tquery = _empty;\n\t\t}\n\t\tif (fragment === undefined) {\n\t\t\tfragment = this.fragment;\n\t\t} else if (fragment === null) {\n\t\t\tfragment = _empty;\n\t\t}\n\n\t\tif (scheme === this.scheme\n\t\t\t&& authority === this.authority\n\t\t\t&& path === this.path\n\t\t\t&& query === this.query\n\t\t\t&& fragment === this.fragment) {\n\n\t\t\treturn this;\n\t\t}\n\n\t\treturn new Uri(scheme, authority, path, query, fragment);\n\t}\n\n\t// ---- parse & validate ------------------------\n\n\t/**\n\t * Creates a new URI from a string, e.g. `http://www.example.com/some/path`,\n\t * `file:///usr/home`, or `scheme:with/path`.\n\t *\n\t * @param value A string which represents an URI (see `URI#toString`).\n\t */\n\tstatic parse(value: string, _strict: boolean = false): URI {\n\t\tconst match = _regexp.exec(value);\n\t\tif (!match) {\n\t\t\treturn new Uri(_empty, _empty, _empty, _empty, _empty);\n\t\t}\n\t\treturn new Uri(\n\t\t\tmatch[2] || _empty,\n\t\t\tpercentDecode(match[4] || _empty),\n\t\t\tpercentDecode(match[5] || _empty),\n\t\t\tpercentDecode(match[7] || _empty),\n\t\t\tpercentDecode(match[9] || _empty),\n\t\t\t_strict\n\t\t);\n\t}\n\n\t/**\n\t * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\n\t * `/usr/home`, or `\\\\server\\share\\some\\path`.\n\t *\n\t * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\n\t * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\n\t * `URI.parse('file://' + path)` because the path might contain characters that are\n\t * interpreted (# and ?). See the following sample:\n\t * ```ts\n\tconst good = URI.file('/coding/c#/project1');\n\tgood.scheme === 'file';\n\tgood.path === '/coding/c#/project1';\n\tgood.fragment === '';\n\tconst bad = URI.parse('file://' + '/coding/c#/project1');\n\tbad.scheme === 'file';\n\tbad.path === '/coding/c'; // path is now broken\n\tbad.fragment === '/project1';\n\t```\n\t *\n\t * @param path A file system path (see `URI#fsPath`)\n\t */\n\tstatic file(path: string): URI {\n\n\t\tlet authority = _empty;\n\n\t\t// normalize to fwd-slashes on windows,\n\t\t// on other systems bwd-slashes are valid\n\t\t// filename character, eg /f\\oo/ba\\r.txt\n\t\tif (isWindows) {\n\t\t\tpath = path.replace(/\\\\/g, _slash);\n\t\t}\n\n\t\t// check for authority as used in UNC shares\n\t\t// or use the path as given\n\t\tif (path[0] === _slash && path[1] === _slash) {\n\t\t\tconst idx = path.indexOf(_slash, 2);\n\t\t\tif (idx === -1) {\n\t\t\t\tauthority = path.substring(2);\n\t\t\t\tpath = _slash;\n\t\t\t} else {\n\t\t\t\tauthority = path.substring(2, idx);\n\t\t\t\tpath = path.substring(idx) || _slash;\n\t\t\t}\n\t\t}\n\n\t\treturn new Uri('file', authority, path, _empty, _empty);\n\t}\n\n\tstatic from(components: { scheme: string; authority?: string; path?: string; query?: string; fragment?: string }): URI {\n\t\tconst result = new Uri(\n\t\t\tcomponents.scheme,\n\t\t\tcomponents.authority,\n\t\t\tcomponents.path,\n\t\t\tcomponents.query,\n\t\t\tcomponents.fragment,\n\t\t);\n\t\t_validateUri(result, true);\n\t\treturn result;\n\t}\n\n\t// ---- printing/externalize ---------------------------\n\n\t/**\n\t * Creates a string representation for this URI. It's guaranteed that calling\n\t * `URI.parse` with the result of this function creates an URI which is equal\n\t * to this URI.\n\t *\n\t * * The result shall *not* be used for display purposes but for externalization or transport.\n\t * * The result will be encoded using the percentage encoding and encoding happens mostly\n\t * ignore the scheme-specific encoding rules.\n\t *\n\t * @param skipEncoding Do not encode the result, default is `false`\n\t */\n\ttoString(skipEncoding: boolean = false): string {\n\t\treturn _asFormatted(this, skipEncoding);\n\t}\n\n\ttoJSON(): UriComponents {\n\t\treturn this;\n\t}\n\n\tstatic revive(data: UriComponents | URI): URI;\n\tstatic revive(data: UriComponents | URI | undefined): URI | undefined;\n\tstatic revive(data: UriComponents | URI | null): URI | null;\n\tstatic revive(data: UriComponents | URI | undefined | null): URI | undefined | null;\n\tstatic revive(data: UriComponents | URI | undefined | null): URI | undefined | null {\n\t\tif (!data) {\n\t\t\treturn data;\n\t\t} else if (data instanceof URI) {\n\t\t\treturn data;\n\t\t} else {\n\t\t\tconst result = new Uri(data);\n\t\t\tresult._formatted = (data).external;\n\t\t\tresult._fsPath = (data)._sep === _pathSepMarker ? (data).fsPath : null;\n\t\t\treturn result;\n\t\t}\n\t}\n}\n\nexport interface UriComponents {\n\tscheme: string;\n\tauthority: string;\n\tpath: string;\n\tquery: string;\n\tfragment: string;\n}\n\ninterface UriState extends UriComponents {\n\t$mid: number;\n\texternal: string;\n\tfsPath: string;\n\t_sep: 1 | undefined;\n}\n\nconst _pathSepMarker = isWindows ? 1 : undefined;\n\n// This class exists so that URI is compatible with vscode.Uri (API).\nclass Uri extends URI {\n\n\t_formatted: string | null = null;\n\t_fsPath: string | null = null;\n\n\toverride get fsPath(): string {\n\t\tif (!this._fsPath) {\n\t\t\tthis._fsPath = uriToFsPath(this, false);\n\t\t}\n\t\treturn this._fsPath;\n\t}\n\n\toverride toString(skipEncoding: boolean = false): string {\n\t\tif (!skipEncoding) {\n\t\t\tif (!this._formatted) {\n\t\t\t\tthis._formatted = _asFormatted(this, false);\n\t\t\t}\n\t\t\treturn this._formatted;\n\t\t} else {\n\t\t\t// we don't cache that\n\t\t\treturn _asFormatted(this, true);\n\t\t}\n\t}\n\n\toverride toJSON(): UriComponents {\n\t\tconst res = {\n\t\t\t$mid: 1\n\t\t};\n\t\t// cached state\n\t\tif (this._fsPath) {\n\t\t\tres.fsPath = this._fsPath;\n\t\t\tres._sep = _pathSepMarker;\n\t\t}\n\t\tif (this._formatted) {\n\t\t\tres.external = this._formatted;\n\t\t}\n\t\t// uri components\n\t\tif (this.path) {\n\t\t\tres.path = this.path;\n\t\t}\n\t\tif (this.scheme) {\n\t\t\tres.scheme = this.scheme;\n\t\t}\n\t\tif (this.authority) {\n\t\t\tres.authority = this.authority;\n\t\t}\n\t\tif (this.query) {\n\t\t\tres.query = this.query;\n\t\t}\n\t\tif (this.fragment) {\n\t\t\tres.fragment = this.fragment;\n\t\t}\n\t\treturn res;\n\t}\n}\n\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\nconst encodeTable: { [ch: number]: string } = {\n\t[CharCode.Colon]: '%3A', // gen-delims\n\t[CharCode.Slash]: '%2F',\n\t[CharCode.QuestionMark]: '%3F',\n\t[CharCode.Hash]: '%23',\n\t[CharCode.OpenSquareBracket]: '%5B',\n\t[CharCode.CloseSquareBracket]: '%5D',\n\t[CharCode.AtSign]: '%40',\n\n\t[CharCode.ExclamationMark]: '%21', // sub-delims\n\t[CharCode.DollarSign]: '%24',\n\t[CharCode.Ampersand]: '%26',\n\t[CharCode.SingleQuote]: '%27',\n\t[CharCode.OpenParen]: '%28',\n\t[CharCode.CloseParen]: '%29',\n\t[CharCode.Asterisk]: '%2A',\n\t[CharCode.Plus]: '%2B',\n\t[CharCode.Comma]: '%2C',\n\t[CharCode.Semicolon]: '%3B',\n\t[CharCode.Equals]: '%3D',\n\n\t[CharCode.Space]: '%20',\n};\n\nfunction encodeURIComponentFast(uriComponent: string, isPath: boolean, isAuthority: boolean): string {\n\tlet res: string | undefined = undefined;\n\tlet nativeEncodePos = -1;\n\n\tfor (let pos = 0; pos < uriComponent.length; pos++) {\n\t\tconst code = uriComponent.charCodeAt(pos);\n\n\t\t// unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\n\t\tif (\n\t\t\t(code >= CharCode.a && code <= CharCode.z)\n\t\t\t|| (code >= CharCode.A && code <= CharCode.Z)\n\t\t\t|| (code >= CharCode.Digit0 && code <= CharCode.Digit9)\n\t\t\t|| code === CharCode.Dash\n\t\t\t|| code === CharCode.Period\n\t\t\t|| code === CharCode.Underline\n\t\t\t|| code === CharCode.Tilde\n\t\t\t|| (isPath && code === CharCode.Slash)\n\t\t\t|| (isAuthority && code === CharCode.OpenSquareBracket)\n\t\t\t|| (isAuthority && code === CharCode.CloseSquareBracket)\n\t\t\t|| (isAuthority && code === CharCode.Colon)\n\t\t) {\n\t\t\t// check if we are delaying native encode\n\t\t\tif (nativeEncodePos !== -1) {\n\t\t\t\tres += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n\t\t\t\tnativeEncodePos = -1;\n\t\t\t}\n\t\t\t// check if we write into a new string (by default we try to return the param)\n\t\t\tif (res !== undefined) {\n\t\t\t\tres += uriComponent.charAt(pos);\n\t\t\t}\n\n\t\t} else {\n\t\t\t// encoding needed, we need to allocate a new string\n\t\t\tif (res === undefined) {\n\t\t\t\tres = uriComponent.substr(0, pos);\n\t\t\t}\n\n\t\t\t// check with default table first\n\t\t\tconst escaped = encodeTable[code];\n\t\t\tif (escaped !== undefined) {\n\n\t\t\t\t// check if we are delaying native encode\n\t\t\t\tif (nativeEncodePos !== -1) {\n\t\t\t\t\tres += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n\t\t\t\t\tnativeEncodePos = -1;\n\t\t\t\t}\n\n\t\t\t\t// append escaped variant to result\n\t\t\t\tres += escaped;\n\n\t\t\t} else if (nativeEncodePos === -1) {\n\t\t\t\t// use native encode only when needed\n\t\t\t\tnativeEncodePos = pos;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (nativeEncodePos !== -1) {\n\t\tres += encodeURIComponent(uriComponent.substring(nativeEncodePos));\n\t}\n\n\treturn res !== undefined ? res : uriComponent;\n}\n\nfunction encodeURIComponentMinimal(path: string): string {\n\tlet res: string | undefined = undefined;\n\tfor (let pos = 0; pos < path.length; pos++) {\n\t\tconst code = path.charCodeAt(pos);\n\t\tif (code === CharCode.Hash || code === CharCode.QuestionMark) {\n\t\t\tif (res === undefined) {\n\t\t\t\tres = path.substr(0, pos);\n\t\t\t}\n\t\t\tres += encodeTable[code];\n\t\t} else {\n\t\t\tif (res !== undefined) {\n\t\t\t\tres += path[pos];\n\t\t\t}\n\t\t}\n\t}\n\treturn res !== undefined ? res : path;\n}\n\n/**\n * Compute `fsPath` for the given uri\n */\nexport function uriToFsPath(uri: URI, keepDriveLetterCasing: boolean): string {\n\n\tlet value: string;\n\tif (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\n\t\t// unc path: file://shares/c$/far/boo\n\t\tvalue = `//${uri.authority}${uri.path}`;\n\t} else if (\n\t\turi.path.charCodeAt(0) === CharCode.Slash\n\t\t&& (uri.path.charCodeAt(1) >= CharCode.A && uri.path.charCodeAt(1) <= CharCode.Z || uri.path.charCodeAt(1) >= CharCode.a && uri.path.charCodeAt(1) <= CharCode.z)\n\t\t&& uri.path.charCodeAt(2) === CharCode.Colon\n\t) {\n\t\tif (!keepDriveLetterCasing) {\n\t\t\t// windows drive letter: file:///c:/far/boo\n\t\t\tvalue = uri.path[1].toLowerCase() + uri.path.substr(2);\n\t\t} else {\n\t\t\tvalue = uri.path.substr(1);\n\t\t}\n\t} else {\n\t\t// other path\n\t\tvalue = uri.path;\n\t}\n\tif (isWindows) {\n\t\tvalue = value.replace(/\\//g, '\\\\');\n\t}\n\treturn value;\n}\n\n/**\n * Create the external version of a uri\n */\nfunction _asFormatted(uri: URI, skipEncoding: boolean): string {\n\n\tconst encoder = !skipEncoding\n\t\t? encodeURIComponentFast\n\t\t: encodeURIComponentMinimal;\n\n\tlet res = '';\n\tlet { scheme, authority, path, query, fragment } = uri;\n\tif (scheme) {\n\t\tres += scheme;\n\t\tres += ':';\n\t}\n\tif (authority || scheme === 'file') {\n\t\tres += _slash;\n\t\tres += _slash;\n\t}\n\tif (authority) {\n\t\tlet idx = authority.indexOf('@');\n\t\tif (idx !== -1) {\n\t\t\t// @\n\t\t\tconst userinfo = authority.substr(0, idx);\n\t\t\tauthority = authority.substr(idx + 1);\n\t\t\tidx = userinfo.lastIndexOf(':');\n\t\t\tif (idx === -1) {\n\t\t\t\tres += encoder(userinfo, false, false);\n\t\t\t} else {\n\t\t\t\t// :@\n\t\t\t\tres += encoder(userinfo.substr(0, idx), false, false);\n\t\t\t\tres += ':';\n\t\t\t\tres += encoder(userinfo.substr(idx + 1), false, true);\n\t\t\t}\n\t\t\tres += '@';\n\t\t}\n\t\tauthority = authority.toLowerCase();\n\t\tidx = authority.lastIndexOf(':');\n\t\tif (idx === -1) {\n\t\t\tres += encoder(authority, false, true);\n\t\t} else {\n\t\t\t// :\n\t\t\tres += encoder(authority.substr(0, idx), false, true);\n\t\t\tres += authority.substr(idx);\n\t\t}\n\t}\n\tif (path) {\n\t\t// lower-case windows drive letters in /C:/fff or C:/fff\n\t\tif (path.length >= 3 && path.charCodeAt(0) === CharCode.Slash && path.charCodeAt(2) === CharCode.Colon) {\n\t\t\tconst code = path.charCodeAt(1);\n\t\t\tif (code >= CharCode.A && code <= CharCode.Z) {\n\t\t\t\tpath = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\n\t\t\t}\n\t\t} else if (path.length >= 2 && path.charCodeAt(1) === CharCode.Colon) {\n\t\t\tconst code = path.charCodeAt(0);\n\t\t\tif (code >= CharCode.A && code <= CharCode.Z) {\n\t\t\t\tpath = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\n\t\t\t}\n\t\t}\n\t\t// encode the rest of the path\n\t\tres += encoder(path, true, false);\n\t}\n\tif (query) {\n\t\tres += '?';\n\t\tres += encoder(query, false, false);\n\t}\n\tif (fragment) {\n\t\tres += '#';\n\t\tres += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment;\n\t}\n\treturn res;\n}\n\n// --- decode\n\nfunction decodeURIComponentGraceful(str: string): string {\n\ttry {\n\t\treturn decodeURIComponent(str);\n\t} catch {\n\t\tif (str.length > 3) {\n\t\t\treturn str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\n\t\t} else {\n\t\t\treturn str;\n\t\t}\n\t}\n}\n\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\n\nfunction percentDecode(str: string): string {\n\tif (!str.match(_rEncodedAsHex)) {\n\t\treturn str;\n\t}\n\treturn str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\n}\n\n/**\n * Mapped-type that replaces all occurrences of URI with UriComponents\n */\nexport type UriDto = { [K in keyof T]: T[K] extends URI\n\t? UriComponents\n\t: UriDto };\n", "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n'use strict';\n\nimport { CharCode } from './charCode';\nimport { URI } from './uri';\nimport * as nodePath from 'path';\n\nconst posixPath = nodePath.posix || nodePath;\nconst slash = '/';\n\nexport namespace Utils {\n\n /**\n * Joins one or more input paths to the path of URI. \n * '/' is used as the directory separation character. \n * \n * The resolved path will be normalized. That means:\n * - all '..' and '.' segments are resolved.\n * - multiple, sequential occurences of '/' are replaced by a single instance of '/'.\n * - trailing separators are preserved.\n * \n * @param uri The input URI.\n * @param paths The paths to be joined with the path of URI.\n * @returns A URI with the joined path. All other properties of the URI (scheme, authority, query, fragments, ...) will be taken from the input URI.\n */\n export function joinPath(uri: URI, ...paths: string[]): URI {\n return uri.with({ path: posixPath.join(uri.path, ...paths) });\n }\n\n\n /**\n * Resolves one or more paths against the path of a URI. \n * '/' is used as the directory separation character. \n * \n * The resolved path will be normalized. That means:\n * - all '..' and '.' segments are resolved. \n * - multiple, sequential occurences of '/' are replaced by a single instance of '/'.\n * - trailing separators are removed.\n * \n * @param uri The input URI.\n * @param paths The paths to resolve against the path of URI.\n * @returns A URI with the resolved path. All other properties of the URI (scheme, authority, query, fragments, ...) will be taken from the input URI.\n */\n export function resolvePath(uri: URI, ...paths: string[]): URI {\n let path = uri.path; \n let slashAdded = false;\n if (path[0] !== slash) {\n path = slash + path; // make the path abstract: for posixPath.resolve the first segments has to be absolute or cwd is used.\n slashAdded = true;\n }\n let resolvedPath = posixPath.resolve(path, ...paths);\n if (slashAdded && resolvedPath[0] === slash && !uri.authority) {\n resolvedPath = resolvedPath.substring(1);\n }\n return uri.with({ path: resolvedPath });\n }\n\n /**\n * Returns a URI where the path is the directory name of the input uri, similar to the Unix dirname command. \n * In the path, '/' is recognized as the directory separation character. Trailing directory separators are ignored.\n * The orignal URI is returned if the URIs path is empty or does not contain any path segments.\n * \n * @param uri The input URI.\n * @return The last segment of the URIs path.\n */\n export function dirname(uri: URI): URI {\n if (uri.path.length === 0 || uri.path === slash) {\n return uri;\n }\n let path = posixPath.dirname(uri.path);\n if (path.length === 1 && path.charCodeAt(0) === CharCode.Period) {\n path = '';\n }\n return uri.with({ path });\n }\n\n /**\n * Returns the last segment of the path of a URI, similar to the Unix basename command. \n * In the path, '/' is recognized as the directory separation character. Trailing directory separators are ignored.\n * The empty string is returned if the URIs path is empty or does not contain any path segments.\n * \n * @param uri The input URI.\n * @return The base name of the URIs path.\n */\n export function basename(uri: URI): string {\n return posixPath.basename(uri.path);\n }\n\n /**\n * Returns the extension name of the path of a URI, similar to the Unix extname command. \n * In the path, '/' is recognized as the directory separation character. Trailing directory separators are ignored.\n * The empty string is returned if the URIs path is empty or does not contain any path segments.\n * \n * @param uri The input URI.\n * @return The extension name of the URIs path.\n */\n export function extname(uri: URI): string {\n return posixPath.extname(uri.path);\n }\n}", "/******************************************************************************\n * Copyright 2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { URI, Utils } from 'vscode-uri';\n\nexport { URI };\n\nexport namespace UriUtils {\n\n export const basename = Utils.basename;\n export const dirname = Utils.dirname;\n export const extname = Utils.extname;\n export const joinPath = Utils.joinPath;\n export const resolvePath = Utils.resolvePath;\n\n const isWindows = typeof process === 'object' && process?.platform === 'win32';\n\n export function equals(a?: URI | string, b?: URI | string): boolean {\n return a?.toString() === b?.toString();\n }\n\n export function relative(from: URI | string, to: URI | string): string {\n const fromPath = typeof from === 'string' ? URI.parse(from).path : from.path;\n const toPath = typeof to === 'string' ? URI.parse(to).path : to.path;\n const fromParts = fromPath.split('/').filter(e => e.length > 0);\n const toParts = toPath.split('/').filter(e => e.length > 0);\n\n if (isWindows) {\n const upperCaseDriveLetter = /^[A-Z]:$/;\n if (fromParts[0] && upperCaseDriveLetter.test(fromParts[0])) {\n fromParts[0] = fromParts[0].toLowerCase();\n }\n if (toParts[0] && upperCaseDriveLetter.test(toParts[0])) {\n toParts[0] = toParts[0].toLowerCase();\n }\n if (fromParts[0] !== toParts[0]) {\n // in case of different drive letters, we cannot compute a relative path, so...\n return toPath.substring(1); // fall back to full 'to' path, drop the leading '/', keep everything else as is for good comparability\n }\n }\n\n let i = 0;\n for (; i < fromParts.length; i++) {\n if (fromParts[i] !== toParts[i]) {\n break;\n }\n }\n const backPart = '../'.repeat(fromParts.length - i);\n const toPart = toParts.slice(i).join('/');\n return backPart + toPart;\n }\n\n export function normalize(uri: URI | string): string {\n return URI.parse(uri.toString()).toString();\n }\n\n export function contains(parent: URI | string, child: URI | string): boolean {\n let parentPath = typeof parent === 'string' ? parent : parent.path;\n let childPath = typeof child === 'string' ? child : child.path;\n // Trim trailing slashes\n if (childPath.charAt(childPath.length - 1) === '/') {\n childPath = childPath.slice(0, -1);\n }\n if (parentPath.charAt(parentPath.length - 1) === '/') {\n parentPath = parentPath.slice(0, -1);\n }\n // If the paths are equal, simply return true\n if (childPath === parentPath) {\n return true;\n }\n // If the child path is shorter than the parent path, it can't be a child\n if (childPath.length < parentPath.length) {\n return false;\n }\n // If the path does not feature a slash after the parent path, it can't be a child\n if (childPath.charAt(parentPath.length) !== '/') {\n return false;\n }\n // Check if the child path starts with the parent path\n return childPath.startsWith(parentPath);\n }\n\n}\n\ninterface InternalUriTrieNode {\n name: string,\n children: Map>;\n parent?: InternalUriTrieNode;\n // If this element is set, the node represents a leaf in the trie\n element?: T;\n}\n\nexport interface UriTrieNode {\n name: string;\n uri: string;\n element?: T;\n}\n\n/**\n * A trie structure for URIs. It allows to insert, delete and find elements by their URI.\n * More specifically, it allows to efficiently find all elements that are children of a given URI.\n *\n * Unlike a regular trie, this implementation uses the name of the URI segments as keys.\n *\n * @see {@link https://en.wikipedia.org/wiki/Trie}\n */\nexport class UriTrie {\n\n protected readonly root: InternalUriTrieNode = { name: '', children: new Map() };\n\n protected normalizeUri(uri: URI | string): string {\n return UriUtils.normalize(uri);\n }\n\n clear(): void {\n this.root.children.clear();\n }\n\n insert(uri: URI | string, element: T): void {\n const node = this.getNode(this.normalizeUri(uri), true);\n node.element = element;\n }\n\n delete(uri: URI | string): void {\n const nodeToDelete = this.getNode(this.normalizeUri(uri), false);\n if (nodeToDelete?.parent) {\n nodeToDelete.parent.children.delete(nodeToDelete.name);\n }\n }\n\n has(uri: URI | string): boolean {\n return this.getNode(this.normalizeUri(uri), false)?.element !== undefined;\n }\n\n hasNode(uri: URI | string): boolean {\n return this.getNode(this.normalizeUri(uri), false) !== undefined;\n }\n\n find(uri: URI | string): T | undefined {\n return this.getNode(this.normalizeUri(uri), false)?.element;\n }\n\n findNode(uri: URI | string): UriTrieNode | undefined {\n const uriString = this.normalizeUri(uri);\n const node = this.getNode(uriString, false);\n if (!node) {\n return undefined;\n }\n return {\n name: node.name,\n uri: UriUtils.joinPath(URI.parse(uriString), node.name).toString(),\n element: node.element\n };\n }\n\n findChildren(uri: URI | string): Array> {\n const uriString = this.normalizeUri(uri);\n const node = this.getNode(uriString, false);\n if (!node) {\n return [];\n }\n return Array.from(node.children.values()).map(child => ({\n name: child.name,\n uri: UriUtils.joinPath(URI.parse(uriString), child.name).toString(),\n element: child.element\n }));\n }\n\n all(): T[] {\n return this.collectValues(this.root);\n }\n\n findAll(prefix: URI | string): T[] {\n const node = this.getNode(UriUtils.normalize(prefix), false);\n if (!node) {\n return [];\n }\n return this.collectValues(node);\n }\n\n protected getNode(uri: string, create: true): InternalUriTrieNode;\n protected getNode(uri: string, create: false): InternalUriTrieNode | undefined;\n protected getNode(uri: string, create: boolean): InternalUriTrieNode | undefined {\n const parts = uri.split('/');\n if (uri.charAt(uri.length - 1) === '/') {\n // Remove the last part if the URI ends with a slash\n parts.pop();\n }\n let current = this.root;\n for (const part of parts) {\n let child = current.children.get(part);\n if (!child) {\n if (create) {\n child = {\n name: part,\n children: new Map(),\n parent: current\n };\n current.children.set(part, child);\n } else {\n return undefined;\n }\n }\n current = child;\n }\n return current;\n }\n\n protected collectValues(node: InternalUriTrieNode): T[] {\n const result: T[] = [];\n if (node.element) {\n result.push(node.element);\n }\n for (const child of node.children.values()) {\n result.push(...this.collectValues(child));\n }\n return result;\n }\n\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\n/**\n * Re-export 'TextDocument' from 'vscode-languageserver-textdocument' for convenience,\n * including both type _and_ symbol (namespace), as we here and there also refer to the symbol,\n * the overhead is very small, just a few kilobytes.\n * Everything else of that package (at the time contributing) is also defined\n * in 'vscode-languageserver-protocol' or 'vscode-languageserver-types'.\n */\nexport { TextDocument } from 'vscode-languageserver-textdocument';\n\nimport type { Diagnostic, Range } from 'vscode-languageserver-types';\nimport type { FileSystemProvider } from './file-system-provider.js';\nimport type { ParseResult, ParserOptions } from '../parser/langium-parser.js';\nimport type { ServiceRegistry } from '../service-registry.js';\nimport type { LangiumSharedCoreServices } from '../services.js';\nimport type { AstNode, AstNodeDescription, MultiReference, Mutable, Reference } from '../syntax-tree.js';\nimport type { Stream } from '../utils/stream.js';\nimport { TextDocument } from './documents.js';\nimport { CancellationToken } from '../utils/cancellation.js';\nimport { stream } from '../utils/stream.js';\nimport { URI, UriTrie } from '../utils/uri-utils.js';\nimport type { DocumentBuilder } from './document-builder.js';\n\n/**\n * A Langium document holds the parse result (AST and CST) and any additional state that is derived\n * from the AST, e.g. the result of scope precomputation.\n */\nexport interface LangiumDocument {\n /** The Uniform Resource Identifier (URI) of the document */\n readonly uri: URI;\n /** The text document used to convert between offsets and positions */\n readonly textDocument: TextDocument;\n /** The current state of the document */\n state: DocumentState;\n /** The parse result holds the Abstract Syntax Tree (AST) and potentially also parser / lexer errors */\n parseResult: ParseResult;\n /** Result of the scope precomputation phase */\n localSymbols?: LocalSymbols;\n /** An array of all cross-references found in the AST while linking */\n references: Array;\n /** Result of the validation phase */\n diagnostics?: Diagnostic[]\n}\n\n/**\n * A document is subject to several phases that are run in predefined order. Any state value implies that\n * smaller state values are finished as well.\n */\nexport enum DocumentState {\n /**\n * The text content has changed and needs to be parsed again. The AST held by this outdated\n * document instance is no longer valid.\n */\n Changed = 0,\n /**\n * An AST has been created from the text content. The document structure can be traversed,\n * but cross-references cannot be resolved yet. If necessary, the structure can be manipulated\n * at this stage as a preprocessing step.\n */\n Parsed = 1,\n /**\n * The `IndexManager` service has processed AST nodes of this document. This means the\n * exported symbols are available in the global scope and can be resolved from other documents.\n */\n IndexedContent = 2,\n /**\n * The `ScopeComputation` service has processed this document. This means the document's locally accessible\n * symbols are captured in a `DocumentSymbols` table and can be looked up by the `ScopeProvider` service.\n * Once a document has reached this state, you may follow every reference - it will lazily\n * resolve its `ref` property and yield either the target AST node or `undefined` in case\n * the target is not in scope.\n */\n ComputedScopes = 3,\n /**\n * The `Linker` service has processed this document. All outgoing references have been\n * resolved or marked as erroneous.\n */\n Linked = 4,\n /**\n * The `IndexManager` service has processed AST node references of this document. This is\n * necessary to determine which documents are affected by a change in one of the workspace\n * documents.\n */\n IndexedReferences = 5,\n /**\n * The `DocumentValidator` service has processed this document. The language server listens\n * to the results of this phase and sends diagnostics to the client.\n */\n Validated = 6\n}\n\n/**\n * Result of the scope pre-computation phase performed by the `ScopeComputation` service.\n * It maps AST nodes of a document to their corresponding sets of symbols that are accessible\n * by those nodes/subtrees, provided any symbols corresponding specifically to those nodes/subtrees exist.\n * The sets of symbols are assumed to be un-ordered. Hence, no assumptions about the order of\n * symbols in the sets should be made. The default `ScopeComputation` implementation uses an\n * instance of `MultiMap`, which conforms to this interface.\n */\nexport interface LocalSymbols {\n has(node: AstNode): boolean\n getStream(key: AstNode): Stream\n}\n\nexport interface DocumentSegment {\n readonly range: Range\n readonly offset: number\n readonly length: number\n readonly end: number\n}\n\n/**\n * Surrogate definition of the `TextDocuments` interface from the `vscode-languageserver` package.\n * No implementation object is expected to be offered by `LangiumCoreServices`, but only by `LangiumLSPServices`.\n */\nexport type TextDocumentProvider = {\n get(uri: string | URI): TextDocument | undefined\n}\n\n/**\n * Shared service for creating `LangiumDocument` instances.\n *\n * Register a custom implementation if special (additional) behavior is required for your language(s).\n * Note: If you specialize {@link fromString} or {@link fromTextDocument} you probably might want to\n * specialize {@link update}, too!\n */\nexport interface LangiumDocumentFactory {\n /**\n * Create a Langium document from a `TextDocument` (usually associated with a file).\n */\n fromTextDocument(textDocument: TextDocument, uri?: URI, options?: ParserOptions): LangiumDocument;\n /**\n * Create a Langium document from a `TextDocument` asynchronously. This action can be cancelled if a cancellable parser implementation has been provided.\n */\n fromTextDocument(textDocument: TextDocument, uri: URI | undefined, cancellationToken: CancellationToken): Promise>;\n\n /**\n * Create an Langium document from an in-memory string.\n */\n fromString(text: string, uri: URI, options?: ParserOptions): LangiumDocument;\n /**\n * Create a Langium document from an in-memory string asynchronously. This action can be cancelled if a cancellable parser implementation has been provided.\n */\n fromString(text: string, uri: URI, cancellationToken: CancellationToken): Promise>;\n\n /**\n * Create an Langium document from a model that has been constructed in memory.\n */\n fromModel(model: T, uri: URI): LangiumDocument;\n\n /**\n * Create an Langium document from a specified `URI`. The factory will use the `FileSystemAccess` service to read the file.\n */\n fromUri(uri: URI, cancellationToken?: CancellationToken): Promise>;\n\n /**\n * Update the given document after changes in the corresponding textual representation.\n * Method is called by the document builder after it has been requested to build an existing\n * document and the document's state is {@link DocumentState.Changed}.\n * The text parsing is expected to be done the same way as in {@link fromTextDocument}\n * and {@link fromString}.\n */\n update(document: LangiumDocument, cancellationToken: CancellationToken): Promise>\n}\n\nexport class DefaultLangiumDocumentFactory implements LangiumDocumentFactory {\n\n protected readonly serviceRegistry: ServiceRegistry;\n protected readonly textDocuments?: TextDocumentProvider;\n protected readonly fileSystemProvider: FileSystemProvider;\n\n constructor(services: LangiumSharedCoreServices) {\n this.serviceRegistry = services.ServiceRegistry;\n this.textDocuments = services.workspace.TextDocuments;\n this.fileSystemProvider = services.workspace.FileSystemProvider;\n }\n\n async fromUri(uri: URI, cancellationToken = CancellationToken.None): Promise> {\n const content = await this.fileSystemProvider.readFile(uri);\n return this.createAsync(uri, content, cancellationToken);\n }\n\n fromTextDocument(textDocument: TextDocument, uri?: URI, options?: ParserOptions): LangiumDocument;\n fromTextDocument(textDocument: TextDocument, uri: URI | undefined, cancellationToken: CancellationToken): Promise>;\n fromTextDocument(textDocument: TextDocument, uri?: URI, token?: CancellationToken | ParserOptions): LangiumDocument | Promise> {\n uri = uri ?? URI.parse(textDocument.uri);\n if (CancellationToken.is(token)) {\n return this.createAsync(uri, textDocument, token);\n } else {\n return this.create(uri, textDocument, token);\n }\n }\n\n fromString(text: string, uri: URI, options?: ParserOptions): LangiumDocument;\n fromString(text: string, uri: URI, cancellationToken: CancellationToken): Promise>;\n fromString(text: string, uri: URI, token?: CancellationToken | ParserOptions): LangiumDocument | Promise> {\n if (CancellationToken.is(token)) {\n return this.createAsync(uri, text, token);\n } else {\n return this.create(uri, text, token);\n }\n }\n\n fromModel(model: T, uri: URI): LangiumDocument {\n return this.create(uri, { $model: model });\n }\n\n protected create(uri: URI, content: string | TextDocument | { $model: T }, options?: ParserOptions): LangiumDocument {\n if (typeof content === 'string') {\n const parseResult = this.parse(uri, content, options);\n return this.createLangiumDocument(parseResult, uri, undefined, content);\n\n } else if ('$model' in content) {\n const parseResult = { value: content.$model, parserErrors: [], lexerErrors: [] };\n return this.createLangiumDocument(parseResult, uri);\n\n } else {\n const parseResult = this.parse(uri, content.getText(), options);\n return this.createLangiumDocument(parseResult, uri, content);\n }\n }\n\n protected async createAsync(uri: URI, content: string | TextDocument, cancelToken: CancellationToken): Promise> {\n if (typeof content === 'string') {\n const parseResult = await this.parseAsync(uri, content, cancelToken);\n return this.createLangiumDocument(parseResult, uri, undefined, content);\n } else {\n const parseResult = await this.parseAsync(uri, content.getText(), cancelToken);\n return this.createLangiumDocument(parseResult, uri, content);\n }\n }\n\n /**\n * Create a LangiumDocument from a given parse result.\n *\n * A TextDocument is created on demand if it is not provided as argument here. Usually this\n * should not be necessary because the main purpose of the TextDocument is to convert between\n * text ranges and offsets, which is done solely in LSP request handling.\n *\n * With the introduction of {@link update} below this method is supposed to be mainly called\n * during workspace initialization and on addition/recognition of new files, while changes in\n * existing documents are processed via {@link update}.\n */\n protected createLangiumDocument(parseResult: ParseResult, uri: URI, textDocument?: TextDocument, text?: string): LangiumDocument {\n let document: LangiumDocument;\n if (textDocument) {\n document = {\n parseResult,\n uri,\n state: DocumentState.Parsed,\n references: [],\n textDocument\n };\n } else {\n const textDocumentGetter = this.createTextDocumentGetter(uri, text);\n document = {\n parseResult,\n uri,\n state: DocumentState.Parsed,\n references: [],\n get textDocument() {\n return textDocumentGetter();\n }\n };\n }\n (parseResult.value as Mutable).$document = document;\n return document;\n }\n\n async update(document: Mutable>, cancellationToken: CancellationToken): Promise> {\n // The CST full text property contains the original text that was used to create the AST.\n const oldText = document.parseResult.value.$cstNode?.root.fullText;\n const textDocument = this.textDocuments?.get(document.uri.toString());\n const text = textDocument ? textDocument.getText() : await this.fileSystemProvider.readFile(document.uri);\n\n if (textDocument) {\n Object.defineProperty(\n document,\n 'textDocument',\n {\n value: textDocument\n }\n );\n } else {\n const textDocumentGetter = this.createTextDocumentGetter(document.uri, text);\n Object.defineProperty(\n document,\n 'textDocument',\n {\n get: textDocumentGetter\n }\n );\n }\n\n // Some of these documents can be pretty large, so parsing them again can be quite expensive.\n // Therefore, we only parse if the text has actually changed.\n if (oldText !== text) {\n document.parseResult = await this.parseAsync(document.uri, text, cancellationToken);\n (document.parseResult.value as Mutable).$document = document;\n }\n document.state = DocumentState.Parsed;\n return document;\n }\n\n protected parse(uri: URI, text: string, options?: ParserOptions): ParseResult {\n const services = this.serviceRegistry.getServices(uri);\n return services.parser.LangiumParser.parse(text, options);\n }\n\n protected parseAsync(uri: URI, text: string, cancellationToken: CancellationToken): Promise> {\n const services = this.serviceRegistry.getServices(uri);\n return services.parser.AsyncParser.parse(text, cancellationToken);\n }\n\n protected createTextDocumentGetter(uri: URI, text?: string): () => TextDocument {\n const serviceRegistry = this.serviceRegistry;\n let textDoc: TextDocument | undefined = undefined;\n return () => {\n return textDoc ??= TextDocument.create(\n uri.toString(), serviceRegistry.getServices(uri).LanguageMetaData.languageId, 0, text ?? ''\n );\n };\n }\n}\n\n/**\n * Shared service for managing Langium documents.\n */\nexport interface LangiumDocuments {\n\n /**\n * A stream of all documents managed under this service.\n */\n readonly all: Stream\n\n /**\n * Manage a new document under this service.\n * @throws an error if a document with the same URI is already present.\n */\n addDocument(document: LangiumDocument): void;\n\n /**\n * Retrieve the document with the given URI, if present. Otherwise returns `undefined`.\n */\n getDocument(uri: URI): LangiumDocument | undefined;\n\n /**\n * If the given URI is a directory, all documents within this directory are retrieved.\n * If it is a file, just that single document is retrieved.\n */\n getDocuments(folder: URI): LangiumDocument[];\n\n /**\n * Retrieve the document with the given URI. If not present, a new one will be created using the file system access.\n * The new document will be added to the list of documents managed under this service.\n */\n getOrCreateDocument(uri: URI, cancellationToken?: CancellationToken): Promise;\n\n /**\n * Creates a new document with the given URI and text content.\n * The new document is automatically added to this service and can be retrieved using {@link getDocument}.\n *\n * @throws an error if a document with the same URI is already present.\n */\n createDocument(uri: URI, text: string): LangiumDocument;\n\n /**\n * Creates a new document with the given URI and text content asynchronously.\n * The process can be interrupted with a cancellation token.\n * The new document is automatically added to this service and can be retrieved using {@link getDocument}.\n *\n * @throws an error if a document with the same URI is already present.\n */\n createDocument(uri: URI, text: string, cancellationToken: CancellationToken): Promise;\n\n /**\n * Flag the document with the given URI as `Changed`, if present, meaning that its content\n * is no longer valid. The content (parseResult) stays untouched, while internal data may\n * be dropped to reduce memory footprint.\n *\n * @returns the affected {@link LangiumDocument} if existing for convenience\n *\n * @deprecated Since 4.2 use `DocumentBuilder.resetToState(DocumentState.Changed)` instead\n */\n invalidateDocument(uri: URI): LangiumDocument | undefined;\n\n /**\n * Returns `true` if a document with the given URI is managed under this service.\n */\n hasDocument(uri: URI): boolean;\n\n /**\n * Remove the document with the given URI, if present, and mark it as `Changed`, meaning\n * that its content is no longer valid. The next call to `getOrCreateDocument` with the same\n * URI will create a new document instance.\n *\n * @returns the affected {@link LangiumDocument} if existing for convenience\n */\n deleteDocument(uri: URI): LangiumDocument | undefined;\n /**\n * If the given URI is a directory, remove all documents within this directory.\n * If it is a file, just remove that single document from the documents.\n *\n * @returns the affected {@link LangiumDocument}s if existing for convenience\n */\n deleteDocuments(uri: URI): LangiumDocument[];\n}\n\nexport class DefaultLangiumDocuments implements LangiumDocuments {\n\n protected readonly services: LangiumSharedCoreServices;\n protected readonly langiumDocumentFactory: LangiumDocumentFactory;\n private documentBuilder: () => DocumentBuilder;\n\n protected readonly documentTrie = new UriTrie();\n\n constructor(services: LangiumSharedCoreServices) {\n this.services = services;\n this.langiumDocumentFactory = services.workspace.LangiumDocumentFactory;\n this.documentBuilder = () => services.workspace.DocumentBuilder;\n }\n\n get all(): Stream {\n return stream(this.documentTrie.all());\n }\n\n addDocument(document: LangiumDocument): void {\n const uriString = document.uri.toString();\n if (this.documentTrie.has(uriString)) {\n throw new Error(`A document with the URI '${uriString}' is already present.`);\n }\n this.documentTrie.insert(uriString, document);\n }\n\n getDocument(uri: URI): LangiumDocument | undefined {\n const uriString = uri.toString();\n return this.documentTrie.find(uriString);\n }\n\n getDocuments(folder: URI): LangiumDocument[] {\n const uriString = folder.toString();\n return this.documentTrie.findAll(uriString);\n }\n\n async getOrCreateDocument(uri: URI, cancellationToken?: CancellationToken): Promise {\n let document = this.getDocument(uri);\n if (document) {\n return document;\n }\n document = await this.langiumDocumentFactory.fromUri(uri, cancellationToken);\n this.addDocument(document);\n return document;\n }\n\n createDocument(uri: URI, text: string): LangiumDocument;\n createDocument(uri: URI, text: string, cancellationToken: CancellationToken): Promise;\n createDocument(uri: URI, text: string, cancellationToken?: CancellationToken): LangiumDocument | Promise {\n if (cancellationToken) {\n return this.langiumDocumentFactory.fromString(text, uri, cancellationToken).then(document => {\n this.addDocument(document);\n return document;\n });\n } else {\n const document = this.langiumDocumentFactory.fromString(text, uri);\n this.addDocument(document);\n return document;\n }\n }\n\n hasDocument(uri: URI): boolean {\n return this.documentTrie.has(uri.toString());\n }\n\n /**\n * @deprecated Since 4.2 use `DocumentBuilder.resetToState(DocumentState.Changed)` instead\n * TODO remove this for the next major release\n */\n invalidateDocument(uri: URI): LangiumDocument | undefined {\n const uriString = uri.toString();\n const langiumDoc = this.documentTrie.find(uriString);\n if (langiumDoc) {\n this.documentBuilder().resetToState(langiumDoc, DocumentState.Changed);\n }\n return langiumDoc;\n }\n\n deleteDocument(uri: URI): LangiumDocument | undefined {\n const uriString = uri.toString();\n const langiumDoc = this.documentTrie.find(uriString);\n if (langiumDoc) {\n langiumDoc.state = DocumentState.Changed;\n this.documentTrie.delete(uriString);\n }\n return langiumDoc;\n }\n\n deleteDocuments(folder: URI): LangiumDocument[] {\n const uriString = folder.toString();\n const langiumDocs = this.documentTrie.findAll(uriString);\n for (const langiumDoc of langiumDocs) {\n langiumDoc.state = DocumentState.Changed;\n }\n this.documentTrie.delete(uriString);\n return langiumDocs;\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, AstNodeDescription, AstReflection, CstNode, LinkingError, MultiReference, MultiReferenceItem, Reference, ReferenceInfo } from '../syntax-tree.js';\nimport type { AstNodeLocator } from '../workspace/ast-node-locator.js';\nimport type { LangiumDocument, LangiumDocuments } from '../workspace/documents.js';\nimport type { ScopeProvider } from './scope-provider.js';\nimport { CancellationToken } from '../utils/cancellation.js';\nimport { isAstNode, isAstNodeDescription, isLinkingError } from '../syntax-tree.js';\nimport { findRootNode, streamAst, streamReferences } from '../utils/ast-utils.js';\nimport { interruptAndCheck } from '../utils/promise-utils.js';\nimport { DocumentState } from '../workspace/documents.js';\nimport type { LangiumProfiler } from '../workspace/profiler.js';\n\n/**\n * Language-specific service for resolving cross-references in the AST.\n */\nexport interface Linker {\n\n /**\n * Links all cross-references within the specified document. The default implementation loads only target\n * elements from documents that are present in the `LangiumDocuments` service. The linked references are\n * stored in the document's `references` property.\n *\n * @param document A LangiumDocument that shall be linked.\n * @param cancelToken A token for cancelling the operation.\n *\n * @throws `OperationCancelled` if a cancellation event is detected\n */\n link(document: LangiumDocument, cancelToken?: CancellationToken): Promise;\n\n /**\n * Unlinks all references within the specified document and removes them from the list of `references`.\n *\n * @param document A LangiumDocument that shall be unlinked.\n */\n unlink(document: LangiumDocument): void;\n\n /**\n * Determines a candidate AST node description for linking the given reference.\n *\n * @param refInfo Information about the reference.\n */\n getCandidate(refInfo: ReferenceInfo): AstNodeDescription | LinkingError;\n\n /**\n * Determines a candidate AST node description for linking the given reference.\n *\n * @param node The AST node containing the reference.\n * @param refId The reference identifier used to build a scope.\n * @param reference The actual reference to resolve.\n */\n getCandidates(refInfo: ReferenceInfo): AstNodeDescription[] | LinkingError;\n\n /**\n * Creates a cross reference node being aware of its containing AstNode, the corresponding CstNode,\n * the cross reference text denoting the target AstNode being already extracted of the document text,\n * as well as the unique cross reference identifier.\n *\n * Default behavior:\n * - The returned Reference's 'ref' property pointing to the target AstNode is populated lazily on its\n * first visit.\n * - If the target AstNode cannot be resolved on the first visit, an error indicator will be installed\n * and further resolution attempts will *not* be performed.\n *\n * @param node The containing AST node\n * @param property The AST node property being referenced\n * @param refNode The corresponding CST node\n * @param refText The cross reference text denoting the target AstNode\n * @returns the desired Reference node, whose behavior wrt. resolving the cross reference is implementation specific.\n */\n buildReference(node: AstNode, property: string, refNode: CstNode | undefined, refText: string): Reference;\n\n buildMultiReference(node: AstNode, property: string, refNode: CstNode | undefined, refText: string): MultiReference;\n\n}\n\nexport const RefResolving = Symbol('RefResolving');\n\nexport interface DefaultReference extends Reference {\n _ref?: AstNode | LinkingError | typeof RefResolving;\n _nodeDescription?: AstNodeDescription;\n}\n\nexport interface DefaultMultiReference extends MultiReference {\n _items: MultiReferenceItem[] | typeof RefResolving | undefined;\n _linkingError?: LinkingError;\n}\n\nexport class DefaultLinker implements Linker {\n protected readonly reflection: AstReflection;\n protected readonly scopeProvider: ScopeProvider;\n protected readonly astNodeLocator: AstNodeLocator;\n protected readonly langiumDocuments: () => LangiumDocuments;\n protected readonly profiler: LangiumProfiler | undefined;\n protected readonly languageId: string;\n\n constructor(services: LangiumCoreServices) {\n this.reflection = services.shared.AstReflection;\n this.langiumDocuments = () => services.shared.workspace.LangiumDocuments;\n this.scopeProvider = services.references.ScopeProvider;\n this.astNodeLocator = services.workspace.AstNodeLocator;\n this.profiler = services.shared.profilers.LangiumProfiler;\n this.languageId = services.LanguageMetaData.languageId;\n }\n\n async link(document: LangiumDocument, cancelToken = CancellationToken.None): Promise {\n if (this.profiler?.isActive('linking')) {\n const task = this.profiler.createTask('linking', this.languageId);\n task.start();\n try {\n for (const node of streamAst(document.parseResult.value)) {\n await interruptAndCheck(cancelToken);\n streamReferences(node).forEach(ref => {\n const name = `${node.$type}:${ref.property}`;\n task.startSubTask(name);\n try {\n this.doLink(ref, document);\n } finally {\n task.stopSubTask(name);\n }\n });\n }\n } finally {\n task.stop();\n }\n }\n else {\n for (const node of streamAst(document.parseResult.value)) {\n await interruptAndCheck(cancelToken);\n streamReferences(node).forEach(ref => this.doLink(ref, document));\n }\n }\n }\n\n protected doLink(refInfo: ReferenceInfo, document: LangiumDocument): void {\n const ref = refInfo.reference as DefaultReference | DefaultMultiReference;\n // The reference may already have been resolved lazily by accessing its `ref` property.\n if ('_ref' in ref && ref._ref === undefined) {\n ref._ref = RefResolving;\n try {\n const description = this.getCandidate(refInfo);\n if (isLinkingError(description)) {\n ref._ref = description;\n } else {\n ref._nodeDescription = description;\n const linkedNode = this.loadAstNode(description);\n ref._ref = linkedNode ?? this.createLinkingError(refInfo, description);\n }\n } catch (err) {\n console.error(`An error occurred while resolving reference to '${ref.$refText}':`, err);\n const errorMessage = (err as Error).message ?? String(err);\n ref._ref = {\n info: refInfo,\n message: `An error occurred while resolving reference to '${ref.$refText}': ${errorMessage}`\n };\n }\n document.references.push(ref);\n } else if ('_items' in ref && ref._items === undefined) {\n ref._items = RefResolving;\n try {\n const descriptions = this.getCandidates(refInfo);\n const items: MultiReferenceItem[] = [];\n if (isLinkingError(descriptions)) {\n ref._linkingError = descriptions;\n } else {\n for (const description of descriptions) {\n const linkedNode = this.loadAstNode(description);\n if (linkedNode) {\n items.push({ ref: linkedNode, $nodeDescription: description });\n }\n }\n }\n ref._items = items;\n } catch (err) {\n ref._linkingError = {\n info: refInfo,\n message: `An error occurred while resolving reference to '${ref.$refText}': ${err}`\n };\n ref._items = [];\n }\n document.references.push(ref);\n }\n }\n\n unlink(document: LangiumDocument): void {\n for (const ref of document.references) {\n if ('_ref' in ref) {\n (ref as DefaultReference)._ref = undefined;\n delete (ref as DefaultReference)._nodeDescription;\n } else if ('_items' in ref) {\n (ref as DefaultMultiReference)._items = undefined;\n delete (ref as DefaultMultiReference)._linkingError;\n }\n }\n document.references = [];\n }\n\n getCandidate(refInfo: ReferenceInfo): AstNodeDescription | LinkingError {\n const scope = this.scopeProvider.getScope(refInfo);\n const description = scope.getElement(refInfo.reference.$refText);\n return description ?? this.createLinkingError(refInfo);\n }\n\n getCandidates(refInfo: ReferenceInfo): AstNodeDescription[] | LinkingError {\n const scope = this.scopeProvider.getScope(refInfo);\n const descriptions = scope.getElements(refInfo.reference.$refText).distinct(desc => `${desc.documentUri}#${desc.path}`).toArray();\n return descriptions.length > 0 ? descriptions : this.createLinkingError(refInfo);\n }\n\n buildReference(node: AstNode, property: string, refNode: CstNode | undefined, refText: string): Reference {\n // See behavior description in doc of Linker, update that on changes in here.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const linker = this;\n const reference: DefaultReference = {\n $refNode: refNode,\n $refText: refText,\n _ref: undefined,\n\n get ref() {\n if (isAstNode(this._ref)) {\n // Most frequent case: the target is already resolved.\n return this._ref;\n } else if (isAstNodeDescription(this._nodeDescription)) {\n // A candidate has been found before, but it is not loaded yet.\n const linkedNode = linker.loadAstNode(this._nodeDescription);\n this._ref = linkedNode ??\n linker.createLinkingError({ reference, container: node, property }, this._nodeDescription);\n } else if (this._ref === undefined) {\n // The reference has not been linked yet, so do that now.\n this._ref = RefResolving;\n const document = findRootNode(node).$document;\n const refData = linker.getLinkedNode({ reference, container: node, property });\n if (refData.error && document && document.state < DocumentState.ComputedScopes) {\n // Document scope is not ready, don't set `this._ref` so linker can retry later.\n return this._ref = undefined;\n }\n this._ref = refData.node ?? refData.error;\n this._nodeDescription = refData.descr;\n document?.references.push(this);\n } else if (this._ref === RefResolving) {\n linker.throwCyclicReferenceError(node, property, refText);\n }\n return isAstNode(this._ref) ? this._ref : undefined;\n },\n get $nodeDescription() {\n return this._nodeDescription;\n },\n get error() {\n return isLinkingError(this._ref) ? this._ref : undefined;\n }\n };\n return reference;\n }\n\n buildMultiReference(node: AstNode, property: string, refNode: CstNode | undefined, refText: string): MultiReference {\n // See behavior description in doc of Linker, update that on changes in here.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const linker = this;\n const reference: DefaultMultiReference = {\n $refNode: refNode,\n $refText: refText,\n _items: undefined,\n\n get items() {\n if (Array.isArray(this._items)) {\n return this._items;\n } else if (this._items === undefined) {\n this._items = RefResolving;\n const document = findRootNode(node).$document;\n const descriptions = linker.getCandidates({\n reference,\n container: node,\n property\n });\n const items: MultiReferenceItem[] = [];\n if (isLinkingError(descriptions)) {\n this._linkingError = descriptions;\n } else {\n for (const description of descriptions) {\n const linkedNode = linker.loadAstNode(description);\n if (linkedNode) {\n items.push({ ref: linkedNode, $nodeDescription: description });\n }\n }\n }\n this._items = items;\n document?.references.push(this);\n } else if (this._items === RefResolving) {\n linker.throwCyclicReferenceError(node, property, refText);\n }\n return Array.isArray(this._items) ? this._items : [];\n },\n get error() {\n if (this._linkingError) {\n return this._linkingError;\n }\n const refs = this.items;\n if (refs.length > 0) {\n return undefined;\n } else {\n return (this._linkingError = linker.createLinkingError({ reference, container: node, property }));\n }\n }\n };\n return reference;\n }\n\n protected throwCyclicReferenceError(node: AstNode, property: string, refText: string): never {\n throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(node)}/${property} (symbol '${refText}')`);\n }\n\n protected getLinkedNode(refInfo: ReferenceInfo): { node?: AstNode, descr?: AstNodeDescription, error?: LinkingError } {\n try {\n const description = this.getCandidate(refInfo);\n if (isLinkingError(description)) {\n return { error: description };\n }\n const linkedNode = this.loadAstNode(description);\n if (linkedNode) {\n return { node: linkedNode, descr: description };\n }\n else {\n return {\n descr: description,\n error:\n this.createLinkingError(refInfo, description)\n };\n }\n } catch (err) {\n console.error(`An error occurred while resolving reference to '${refInfo.reference.$refText}':`, err);\n const errorMessage = (err as Error).message ?? String(err);\n return {\n error: {\n info: refInfo,\n message: `An error occurred while resolving reference to '${refInfo.reference.$refText}': ${errorMessage}`\n }\n };\n }\n }\n\n protected loadAstNode(nodeDescription: AstNodeDescription): AstNode | undefined {\n if (nodeDescription.node) {\n return nodeDescription.node;\n }\n const doc = this.langiumDocuments().getDocument(nodeDescription.documentUri);\n if (!doc) {\n return undefined;\n }\n return this.astNodeLocator.getAstNode(doc.parseResult.value, nodeDescription.path);\n }\n\n protected createLinkingError(refInfo: ReferenceInfo, targetDescription?: AstNodeDescription): LinkingError {\n // Check whether the document is sufficiently processed by the DocumentBuilder. If not, this is a hint for a bug\n // in the language implementation.\n const document = findRootNode(refInfo.container).$document;\n if (document && document.state < DocumentState.ComputedScopes) {\n console.warn(`Attempted reference resolution before document reached ComputedScopes state (${document.uri}).`);\n }\n const referenceType = this.reflection.getReferenceType(refInfo);\n return {\n info: refInfo,\n message: `Could not resolve reference to ${referenceType} named '${refInfo.reference.$refText}'.`,\n targetDescription\n };\n }\n\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { AstNode, CstNode } from '../syntax-tree.js';\nimport { findNodeForProperty } from '../utils/grammar-utils.js';\n\nexport interface NamedAstNode extends AstNode {\n name: string;\n}\n\nexport function isNamed(node: AstNode): node is NamedAstNode {\n return typeof (node as NamedAstNode).name === 'string';\n}\n\n/**\n * Utility service for retrieving the `name` of an `AstNode` or the `CstNode` containing a `name`.\n */\nexport interface NameProvider {\n /**\n * Returns the `name` of a given AstNode.\n * @param node Specified `AstNode` whose name node shall be retrieved.\n */\n getName(node: AstNode): string | undefined;\n /**\n * Returns the `CstNode` which contains the parsed value of the `name` assignment.\n * @param node Specified `AstNode` whose name node shall be retrieved.\n */\n getNameNode(node: AstNode): CstNode | undefined;\n}\n\nexport class DefaultNameProvider implements NameProvider {\n getName(node: AstNode): string | undefined {\n if (isNamed(node)) {\n return node.name;\n }\n return undefined;\n }\n\n getNameNode(node: AstNode): CstNode | undefined {\n return findNodeForProperty(node.$cstNode, 'name');\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, CstNode, GenericAstNode } from '../syntax-tree.js';\nimport type { Stream } from '../utils/stream.js';\nimport type { ReferenceDescription } from '../workspace/ast-descriptions.js';\nimport type { AstNodeLocator } from '../workspace/ast-node-locator.js';\nimport type { IndexManager } from '../workspace/index-manager.js';\nimport type { NameProvider } from './name-provider.js';\nimport type { URI } from '../utils/uri-utils.js';\nimport { findAssignment } from '../utils/grammar-utils.js';\nimport { isMultiReference, isReference } from '../syntax-tree.js';\nimport { getDocument, getReferenceNodes, streamAst, streamReferences } from '../utils/ast-utils.js';\nimport { isChildNode, toDocumentSegment } from '../utils/cst-utils.js';\nimport { stream } from '../utils/stream.js';\nimport { UriUtils } from '../utils/uri-utils.js';\nimport { isCrossReference } from '../languages/generated/ast.js';\nimport type { LangiumDocuments } from '../workspace/documents.js';\n\n/**\n * Language-specific service for finding references and declaration of a given `CstNode`.\n */\nexport interface References {\n\n /**\n * If the CstNode is a reference node the target AstNodes will be returned.\n * If the CstNode is a significant node of the CstNode this AstNode will be returned.\n *\n * @param sourceCstNode CstNode that points to a AstNode\n */\n findDeclarations(sourceCstNode: CstNode): AstNode[];\n\n /**\n * If the CstNode is a reference node the target CstNodes will be returned.\n * If the CstNode is a significant node of the CstNode this CstNode will be returned.\n *\n * @param sourceCstNode CstNode that points to a AstNode\n */\n findDeclarationNodes(sourceCstNode: CstNode): CstNode[];\n\n /**\n * Finds all references to the target node as references (local references) or reference descriptions.\n *\n * @param targetNode Specified target node whose references should be returned\n */\n findReferences(targetNode: AstNode, options: FindReferencesOptions): Stream;\n}\n\nexport interface FindReferencesOptions {\n /**\n * When set, the `findReferences` method will only return references/declarations from the specified document.\n */\n documentUri?: URI;\n /**\n * Whether the returned list of references should include the declaration.\n */\n includeDeclaration?: boolean;\n}\n\nexport class DefaultReferences implements References {\n protected readonly nameProvider: NameProvider;\n protected readonly index: IndexManager;\n protected readonly nodeLocator: AstNodeLocator;\n protected readonly documents: LangiumDocuments;\n protected hasMultiReference: boolean;\n\n constructor(services: LangiumCoreServices) {\n this.nameProvider = services.references.NameProvider;\n this.index = services.shared.workspace.IndexManager;\n this.nodeLocator = services.workspace.AstNodeLocator;\n this.documents = services.shared.workspace.LangiumDocuments;\n this.hasMultiReference = streamAst(services.Grammar).some(node => isCrossReference(node) && node.isMulti);\n }\n\n findDeclarations(sourceCstNode: CstNode): AstNode[] {\n if (sourceCstNode) {\n const assignment = findAssignment(sourceCstNode);\n const nodeElem = sourceCstNode.astNode;\n if (assignment && nodeElem) {\n const reference = (nodeElem as GenericAstNode)[assignment.feature];\n\n if (isReference(reference) || isMultiReference(reference)) {\n return getReferenceNodes(reference);\n } else if (Array.isArray(reference)) {\n for (const ref of reference) {\n if ((isReference(ref) || isMultiReference(ref)) && ref.$refNode\n && ref.$refNode.offset <= sourceCstNode.offset\n && ref.$refNode.end >= sourceCstNode.end) {\n return getReferenceNodes(ref);\n }\n }\n }\n }\n if (nodeElem) {\n const nameNode = this.nameProvider.getNameNode(nodeElem);\n // Only return the targeted node in case the targeted cst node is the name node or part of it\n if (nameNode && (nameNode === sourceCstNode || isChildNode(sourceCstNode, nameNode))) {\n return this.getSelfNodes(nodeElem);\n }\n }\n }\n return [];\n }\n\n /**\n * Returns all self-references for the specified node.\n * Since the node can be part of a multi-reference, this method returns all nodes that are part of the same multi-reference.\n */\n protected getSelfNodes(node: AstNode): AstNode[] {\n if (!this.hasMultiReference) {\n return [node];\n } else {\n // In order to find all nodes that are part of the same multi-reference,\n // we need to find a reference that points to the node.\n // It will also point to the logical siblings of the node.\n const references = this.index.findAllReferences(node, this.nodeLocator.getAstNodePath(node));\n // We can simply use the first reference to find all logical siblings.\n // Looking through all references is not necessary and very inefficient.\n const headNode = this.getNodeFromReferenceDescription(references.head());\n if (headNode) {\n // We need to iterate over all references to find the one that points to the node.\n for (const ref of streamReferences(headNode)) {\n if (isMultiReference(ref.reference) && ref.reference.items.some(item => item.ref === node)) {\n // Once we found the reference, simply return all items of the multi-reference.\n return ref.reference.items.map(item => item.ref);\n }\n }\n }\n return [node];\n }\n }\n\n protected getNodeFromReferenceDescription(ref?: ReferenceDescription): AstNode | undefined {\n if (!ref) {\n return undefined;\n }\n const doc = this.documents.getDocument(ref.sourceUri);\n if (doc) {\n return this.nodeLocator.getAstNode(doc.parseResult.value, ref.sourcePath);\n }\n return undefined;\n }\n\n findDeclarationNodes(sourceCstNode: CstNode): CstNode[] {\n const astNodes = this.findDeclarations(sourceCstNode);\n const cstNodes: CstNode[] = [];\n for (const astNode of astNodes) {\n const cstNode = this.nameProvider.getNameNode(astNode) ?? astNode.$cstNode;\n if (cstNode) {\n cstNodes.push(cstNode);\n }\n }\n return cstNodes;\n }\n\n findReferences(targetNode: AstNode, options: FindReferencesOptions): Stream {\n const refs: ReferenceDescription[] = [];\n if (options.includeDeclaration) {\n refs.push(...this.getSelfReferences(targetNode));\n }\n let indexReferences = this.index.findAllReferences(targetNode, this.nodeLocator.getAstNodePath(targetNode));\n if (options.documentUri) {\n indexReferences = indexReferences.filter(ref => UriUtils.equals(ref.sourceUri, options.documentUri));\n }\n refs.push(...indexReferences);\n return stream(refs);\n }\n\n protected getSelfReferences(targetNode: AstNode): ReferenceDescription[] {\n const selfNodes = this.getSelfNodes(targetNode);\n const references: ReferenceDescription[] = [];\n for (const selfNode of selfNodes) {\n const nameNode = this.nameProvider.getNameNode(selfNode);\n if (nameNode) {\n const doc = getDocument(selfNode);\n const path = this.nodeLocator.getAstNodePath(selfNode);\n references.push({\n sourceUri: doc.uri,\n sourcePath: path,\n targetUri: doc.uri,\n targetPath: path,\n segment: toDocumentSegment(nameNode),\n local: true\n });\n }\n }\n return references;\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { Stream } from './stream.js';\nimport { EMPTY_STREAM, Reduction, stream } from './stream.js';\n\n/**\n * A multimap is a variation of a Map that has potentially multiple values for every key.\n */\nexport class MultiMap {\n\n private map = new Map();\n\n constructor()\n constructor(elements: Iterable<[K, V]>)\n constructor(elements?: Iterable<[K, V]>) {\n if (elements) {\n for (const [key, value] of elements) {\n this.add(key, value);\n }\n }\n }\n\n /**\n * The total number of values in the multimap.\n */\n get size(): number {\n return Reduction.sum(stream(this.map.values()).map(a => a.length));\n }\n\n /**\n * Clear all entries in the multimap.\n */\n clear(): void {\n this.map.clear();\n }\n\n /**\n * Operates differently depending on whether a `value` is given:\n * * With a value, this method deletes the specific key / value pair from the multimap.\n * * Without a value, all values associated with the given key are deleted.\n *\n * @returns `true` if a value existed and has been removed, or `false` if the specified\n * key / value does not exist.\n */\n delete(key: K, value?: V): boolean {\n if (value === undefined) {\n return this.map.delete(key);\n } else {\n const values = this.map.get(key);\n if (values) {\n const index = values.indexOf(value);\n if (index >= 0) {\n if (values.length === 1) {\n this.map.delete(key);\n } else {\n values.splice(index, 1);\n }\n return true;\n }\n }\n return false;\n }\n }\n\n /**\n * Returns an array of all values associated with the given key. If no value exists,\n * an empty array is returned.\n *\n * _Note:_ The returned array is assumed not to be modified. Use the `set` method to add a\n * value and `delete` to remove a value from the multimap.\n */\n get(key: K): readonly V[] {\n return this.map.get(key) ?? [];\n }\n\n /**\n * Returns a stream of all values associated with the given key. If no value exists,\n * {@link EMPTY_STREAM} is returned.\n */\n getStream(key: K): Stream {\n const values = this.map.get(key);\n return values ? stream(values) : EMPTY_STREAM;\n }\n\n /**\n * Operates differently depending on whether a `value` is given:\n * * With a value, this method returns `true` if the specific key / value pair is present in the multimap.\n * * Without a value, this method returns `true` if the given key is present in the multimap.\n */\n has(key: K, value?: V): boolean {\n if (value === undefined) {\n return this.map.has(key);\n } else {\n const values = this.map.get(key);\n if (values) {\n return values.indexOf(value) >= 0;\n }\n return false;\n }\n }\n\n /**\n * Add the given key / value pair to the multimap.\n */\n add(key: K, value: V): this {\n if (this.map.has(key)) {\n this.map.get(key)!.push(value);\n } else {\n this.map.set(key, [value]);\n }\n return this;\n }\n\n /**\n * Add the given set of key / value pairs to the multimap.\n */\n addAll(key: K, values: Iterable): this {\n if (this.map.has(key)) {\n this.map.get(key)!.push(...values);\n } else {\n this.map.set(key, Array.from(values));\n }\n return this;\n }\n\n /**\n * Invokes the given callback function for every key / value pair in the multimap.\n */\n forEach(callbackfn: (value: V, key: K, map: this) => void): void {\n this.map.forEach((array, key) =>\n array.forEach(value => callbackfn(value, key, this))\n );\n }\n\n /**\n * Returns an iterator of key, value pairs for every entry in the map.\n */\n [Symbol.iterator](): Iterator<[K, V]> {\n return this.entries().iterator();\n }\n\n /**\n * Returns a stream of key, value pairs for every entry in the map.\n */\n entries(): Stream<[K, V]> {\n return stream(this.map.entries())\n .flatMap(([key, array]) => array.map(value => [key, value] as [K, V]));\n }\n\n /**\n * Returns a stream of keys in the map.\n */\n keys(): Stream {\n return stream(this.map.keys());\n }\n\n /**\n * Returns a stream of values in the map.\n */\n values(): Stream {\n return stream(this.map.values()).flat();\n }\n\n /**\n * Returns a stream of key, value set pairs for every key in the map.\n */\n entriesGroupedByKey(): Stream<[K, V[]]> {\n return stream(this.map.entries());\n }\n\n}\n\nexport class BiMap {\n\n private map = new Map();\n private inverse = new Map();\n\n get size(): number {\n return this.map.size;\n }\n\n constructor()\n constructor(elements: Array<[K, V]>)\n constructor(elements?: Array<[K, V]>) {\n if (elements) {\n for (const [key, value] of elements) {\n this.set(key, value);\n }\n }\n }\n\n clear(): void {\n this.map.clear();\n this.inverse.clear();\n }\n\n set(key: K, value: V): this {\n this.map.set(key, value);\n this.inverse.set(value, key);\n return this;\n }\n\n get(key: K): V | undefined {\n return this.map.get(key);\n }\n\n getKey(value: V): K | undefined {\n return this.inverse.get(value);\n }\n\n delete(key: K): boolean {\n const value = this.map.get(key);\n if (value !== undefined) {\n this.map.delete(key);\n this.inverse.delete(value);\n return true;\n }\n return false;\n }\n}\n", "/******************************************************************************\n * Copyright 2021-2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, AstNodeDescription } from '../syntax-tree.js';\nimport { streamAllContents, streamContents } from '../utils/ast-utils.js';\nimport { CancellationToken } from '../utils/cancellation.js';\nimport { MultiMap } from '../utils/collections.js';\nimport { interruptAndCheck } from '../utils/promise-utils.js';\nimport type { AstNodeDescriptionProvider } from '../workspace/ast-descriptions.js';\nimport type { LangiumDocument, LocalSymbols } from '../workspace/documents.js';\nimport type { NameProvider } from './name-provider.js';\n\n/**\n * Language-specific service for precomputing global and local scopes. The service methods are executed\n * as the first and second phase in the `DocumentBuilder`.\n */\nexport interface ScopeComputation {\n\n /**\n * Creates descriptions of all AST nodes that shall be exported into the _global_ scope from the given\n * document. These descriptions are gathered by the `IndexManager` and stored in the global index so\n * they can be referenced from other documents.\n *\n * _Note:_ You should not resolve any cross-references in this service method. Cross-reference resolution\n * depends on the scope computation phase to be completed (`computeScope` method), which runs after the\n * initial indexing where this method is used.\n *\n * @param document The document from which to gather exported AST nodes.\n * @param cancelToken Indicates when to cancel the current operation.\n * @throws `OperationCanceled` if a user action occurs during execution\n */\n collectExportedSymbols(document: LangiumDocument, cancelToken?: CancellationToken): Promise;\n\n /**\n * Creates descriptions of the _local_ symbols being accessible within a document.\n * The result is a `LocalSymbols` table assigning sets of AST node descriptions to the corresponding\n * nodes/subtrees within the AST. The descriptions are considered in the default reference resolution\n * implementation, i.e. they are used by the `ScopeProvider` service to determine which symbols\n * are visible in the context of a specific cross-reference.\n *\n * _Note:_ You should not resolve any cross-references in this service method. Cross-reference\n * resolution depends on the scope computation phase to be completed.\n *\n * @param document The document for which to compute its local symbols.\n * @param cancelToken Indicates when to cancel the current operation.\n * @throws `OperationCanceled` if a user action occurs during execution\n */\n collectLocalSymbols(document: LangiumDocument, cancelToken?: CancellationToken): Promise;\n}\n\n/**\n * The default scope computation creates and collects descriptions of the AST nodes to be exported into the\n * _global_ scope from the given document. By default those are the document's root AST node and its directly\n * contained child nodes.\n *\n * Besides, it gathers all AST nodes that have a name (according to the `NameProvider` service) and that are to be\n * included in the local scope of their particular container nodes. They are collected in a `DocumentSymbols` table.\n * As a result, for every cross-reference in the AST, target elements from the same level (siblings) and further up\n * towards the root (parents and siblings of parents) are visible.\n * Elements being nested inside lower levels (children, children of siblings and parents' siblings)\n * are _invisible_ by default, but that can be changed by customizing this service.\n */\nexport class DefaultScopeComputation implements ScopeComputation {\n\n protected readonly nameProvider: NameProvider;\n protected readonly descriptions: AstNodeDescriptionProvider;\n\n constructor(services: LangiumCoreServices) {\n this.nameProvider = services.references.NameProvider;\n this.descriptions = services.workspace.AstNodeDescriptionProvider;\n }\n\n async collectExportedSymbols(document: LangiumDocument, cancelToken = CancellationToken.None): Promise {\n return this.collectExportedSymbolsForNode(document.parseResult.value, document, undefined, cancelToken);\n }\n\n /**\n * Creates {@link AstNodeDescription AstNodeDescriptions} for the given {@link AstNode parentNode} and its children.\n * The list of children to be considered is determined by the function parameter {@link children}.\n * By default only the direct children of {@link parentNode} are visited, nested nodes are not exported.\n *\n * @param parentNode AST node to be exported, i.e., of which an {@link AstNodeDescription} shall be added to the returned list.\n * @param document The document containing the AST node to be exported.\n * @param children A function called with {@link parentNode} as single argument and returning an {@link Iterable} supplying the children to be visited, which must be directly or transitively contained in {@link parentNode}.\n * @param cancelToken Indicates when to cancel the current operation.\n * @throws `OperationCancelled` if a user action occurs during execution.\n * @returns A list of {@link AstNodeDescription AstNodeDescriptions} to be published to index.\n */\n async collectExportedSymbolsForNode(parentNode: AstNode, document: LangiumDocument, children: (root: AstNode) => Iterable = streamContents, cancelToken: CancellationToken = CancellationToken.None): Promise {\n const exports: AstNodeDescription[] = [];\n\n this.addExportedSymbol(parentNode, exports, document);\n for (const node of children(parentNode)) {\n await interruptAndCheck(cancelToken);\n this.addExportedSymbol(node, exports, document);\n }\n return exports;\n }\n\n /**\n * Adds a single node to the list of exports if it has a name. Override this method to change how\n * symbols are exported, e.g. by modifying their exported name.\n */\n protected addExportedSymbol(node: AstNode, exports: AstNodeDescription[], document: LangiumDocument): void {\n const name = this.nameProvider.getName(node);\n if (name) {\n exports.push(this.descriptions.createDescription(node, name, document));\n }\n }\n\n // --- local symbols gathering ---\n\n async collectLocalSymbols(document: LangiumDocument, cancelToken = CancellationToken.None): Promise {\n const rootNode = document.parseResult.value;\n const symbols = new MultiMap();\n // Here we navigate the full AST - local scopes shall be available in the whole document\n for (const node of streamAllContents(rootNode)) {\n await interruptAndCheck(cancelToken);\n this.addLocalSymbol(node, document, symbols);\n }\n return symbols;\n }\n\n /**\n * Adds a single node to the local symbols of its containing document if it has a name.\n * The default implementation makes the node visible in the subtree of its container if it does have a container.\n * Override this method to change this, e.g. by increasing the visibility to a higher level in the AST.\n */\n protected addLocalSymbol(node: AstNode, document: LangiumDocument, symbols: MultiMap): void {\n const container = node.$container;\n if (container) {\n const name = this.nameProvider.getName(node);\n if (name) {\n symbols.add(container, this.descriptions.createDescription(node, name, document));\n }\n }\n }\n\n}\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { AstNodeDescription } from '../syntax-tree.js';\nimport { MultiMap } from '../utils/collections.js';\nimport type { Stream } from '../utils/stream.js';\nimport { EMPTY_STREAM, stream } from '../utils/stream.js';\n\n/**\n * A scope describes what target elements are visible from a specific cross-reference context.\n */\nexport interface Scope {\n\n /**\n * Find a target element matching the given name. If no element is found, `undefined` is returned.\n * If multiple matching elements are present, the selection of the returned element should be done\n * according to the semantics of your language. Usually it is the element that is most closely defined.\n *\n * @param name Name of the cross-reference target as it appears in the source text.\n */\n getElement(name: string): AstNodeDescription | undefined;\n\n /**\n * Finds all target elements matching the given name. If no element is found, an empty stream is returned.\n *\n * @param name Name of the cross-reference target as it appears in the source text.\n */\n getElements(name: string): Stream;\n\n /**\n * Create a stream of all elements in the scope. This is used to compute completion proposals to be\n * shown in the editor.\n */\n getAllElements(): Stream;\n\n}\n\nexport interface ScopeOptions {\n /**\n * Whether the scope should be case insensitive.\n * Defaults to `false`.\n */\n caseInsensitive?: boolean;\n /**\n * Whether the outer scope should be concatenated with the local scope when calling `getElements`.\n * Defaults to `true`.\n */\n concatOuterScope?: boolean;\n}\n\n/**\n * The default scope implementation is based on a `Stream`. It has an optional _outer scope_ describing\n * the next level of elements, which are queried when a target element is not found in the stream provided\n * to this scope.\n */\nexport class StreamScope implements Scope {\n readonly elements: Stream;\n readonly outerScope?: Scope;\n readonly caseInsensitive: boolean;\n readonly concatOuterScope: boolean;\n\n constructor(elements: Stream, outerScope?: Scope, options?: ScopeOptions) {\n this.elements = elements;\n this.outerScope = outerScope;\n this.caseInsensitive = options?.caseInsensitive ?? false;\n this.concatOuterScope = options?.concatOuterScope ?? true;\n }\n\n getAllElements(): Stream {\n if (this.outerScope) {\n return this.elements.concat(this.outerScope.getAllElements());\n } else {\n return this.elements;\n }\n }\n\n getElement(name: string): AstNodeDescription | undefined {\n const lowerCaseName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.caseInsensitive\n ? this.elements.find(e => e.name.toLowerCase() === lowerCaseName)\n : this.elements.find(e => e.name === name);\n if (local) {\n return local;\n }\n if (this.outerScope) {\n return this.outerScope.getElement(name);\n }\n return undefined;\n }\n\n getElements(name: string): Stream {\n const lowerCaseName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.caseInsensitive\n ? this.elements.filter(e => e.name.toLowerCase() === lowerCaseName)\n : this.elements.filter(e => e.name === name);\n if ((this.concatOuterScope || local.isEmpty()) && this.outerScope) {\n return local.concat(this.outerScope.getElements(name));\n } else {\n return local;\n }\n }\n}\n\nexport class MapScope implements Scope {\n readonly elements: Map;\n readonly outerScope?: Scope;\n readonly caseInsensitive: boolean;\n readonly concatOuterScope: boolean;\n\n constructor(elements: Iterable, outerScope?: Scope, options?: ScopeOptions) {\n this.elements = new Map();\n this.caseInsensitive = options?.caseInsensitive ?? false;\n this.concatOuterScope = options?.concatOuterScope ?? true;\n for (const element of elements) {\n const name = this.caseInsensitive\n ? element.name.toLowerCase()\n : element.name;\n this.elements.set(name, element);\n }\n this.outerScope = outerScope;\n }\n\n getElement(name: string): AstNodeDescription | undefined {\n const localName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.elements.get(localName);\n if (local) {\n return local;\n }\n if (this.outerScope) {\n return this.outerScope.getElement(name);\n }\n return undefined;\n }\n\n getElements(name: string): Stream {\n const localName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.elements.get(localName);\n const arr = local ? [local] : [];\n if ((this.concatOuterScope || arr.length > 0) && this.outerScope) {\n return stream(arr).concat(this.outerScope.getElements(name));\n } else {\n return stream(arr);\n }\n }\n\n getAllElements(): Stream {\n let elementStream = stream(this.elements.values());\n if (this.outerScope) {\n elementStream = elementStream.concat(this.outerScope.getAllElements());\n }\n return elementStream;\n }\n\n}\n\nexport class MultiMapScope implements Scope {\n readonly elements: MultiMap;\n readonly outerScope?: Scope;\n readonly caseInsensitive: boolean;\n readonly concatOuterScope: boolean;\n\n constructor(elements: Iterable, outerScope?: Scope, options?: ScopeOptions) {\n this.elements = new MultiMap();\n this.caseInsensitive = options?.caseInsensitive ?? false;\n this.concatOuterScope = options?.concatOuterScope ?? true;\n for (const element of elements) {\n const name = this.caseInsensitive\n ? element.name.toLowerCase()\n : element.name;\n this.elements.add(name, element);\n }\n this.outerScope = outerScope;\n }\n\n getElement(name: string): AstNodeDescription | undefined {\n const localName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.elements.get(localName)[0];\n if (local) {\n return local;\n }\n if (this.outerScope) {\n return this.outerScope.getElement(name);\n }\n return undefined;\n }\n\n getElements(name: string): Stream {\n const localName = this.caseInsensitive ? name.toLowerCase() : name;\n const local = this.elements.get(localName);\n if ((this.concatOuterScope || local.length === 0) && this.outerScope) {\n return stream(local).concat(this.outerScope.getElements(name));\n } else {\n return stream(local);\n }\n }\n\n getAllElements(): Stream {\n let elementStream = stream(this.elements.values());\n if (this.outerScope) {\n elementStream = elementStream.concat(this.outerScope.getAllElements());\n }\n return elementStream;\n }\n\n}\n\nexport const EMPTY_SCOPE: Scope = {\n getElement(): undefined {\n return undefined;\n },\n getElements(): Stream {\n return EMPTY_STREAM;\n },\n getAllElements(): Stream {\n return EMPTY_STREAM;\n }\n};\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { Disposable } from './disposable.js';\nimport type { URI } from './uri-utils.js';\nimport type { LangiumSharedCoreServices } from '../services.js';\nimport type { DocumentState } from '../workspace/documents.js';\n\nexport abstract class DisposableCache implements Disposable {\n\n protected toDispose: Disposable[] = [];\n protected isDisposed = false;\n\n onDispose(disposable: Disposable): void {\n this.toDispose.push(disposable);\n }\n\n dispose(): void {\n this.throwIfDisposed();\n this.clear();\n this.isDisposed = true;\n this.toDispose.forEach(disposable => disposable.dispose());\n }\n\n protected throwIfDisposed(): void {\n if (this.isDisposed) {\n throw new Error('This cache has already been disposed');\n }\n }\n\n abstract clear(): void;\n}\n\nexport class SimpleCache extends DisposableCache {\n protected readonly cache = new Map();\n\n has(key: K): boolean {\n this.throwIfDisposed();\n return this.cache.has(key);\n }\n\n set(key: K, value: V): void {\n this.throwIfDisposed();\n this.cache.set(key, value);\n }\n\n get(key: K): V | undefined;\n get(key: K, provider: () => V): V;\n get(key: K, provider?: () => V): V | undefined {\n this.throwIfDisposed();\n if (this.cache.has(key)) {\n return this.cache.get(key);\n } else if (provider) {\n const value = provider();\n this.cache.set(key, value);\n return value;\n } else {\n return undefined;\n }\n }\n\n delete(key: K): boolean {\n this.throwIfDisposed();\n return this.cache.delete(key);\n }\n\n clear(): void {\n this.throwIfDisposed();\n this.cache.clear();\n }\n}\n\nexport class ContextCache extends DisposableCache {\n\n private readonly cache = new Map>();\n private readonly converter: (input: Context) => ContextKey | Context;\n\n constructor(converter?: (input: Context) => ContextKey) {\n super();\n this.converter = converter ?? (value => value);\n }\n\n has(contextKey: Context, key: Key): boolean {\n this.throwIfDisposed();\n return this.cacheForContext(contextKey).has(key);\n }\n\n set(contextKey: Context, key: Key, value: Value): void {\n this.throwIfDisposed();\n this.cacheForContext(contextKey).set(key, value);\n }\n\n get(contextKey: Context, key: Key): Value | undefined;\n get(contextKey: Context, key: Key, provider: () => Value): Value;\n get(contextKey: Context, key: Key, provider?: () => Value): Value | undefined {\n this.throwIfDisposed();\n const contextCache = this.cacheForContext(contextKey);\n if (contextCache.has(key)) {\n return contextCache.get(key);\n } else if (provider) {\n const value = provider();\n contextCache.set(key, value);\n return value;\n } else {\n return undefined;\n }\n }\n\n delete(contextKey: Context, key: Key): boolean {\n this.throwIfDisposed();\n return this.cacheForContext(contextKey).delete(key);\n }\n\n clear(): void;\n clear(contextKey: Context): void;\n clear(contextKey?: Context): void {\n this.throwIfDisposed();\n if (contextKey) {\n const mapKey = this.converter(contextKey);\n this.cache.delete(mapKey);\n } else {\n this.cache.clear();\n }\n }\n\n protected cacheForContext(contextKey: Context): Map {\n const mapKey = this.converter(contextKey);\n let documentCache = this.cache.get(mapKey);\n if (!documentCache) {\n documentCache = new Map();\n this.cache.set(mapKey, documentCache);\n }\n return documentCache;\n }\n}\n\n/**\n * Every key/value pair in this cache is scoped to a document.\n * If this document is changed or deleted, all associated key/value pairs are deleted.\n */\nexport class DocumentCache extends ContextCache {\n\n /**\n * Creates a new document cache.\n *\n * @param sharedServices Service container instance to hook into document lifecycle events.\n * @param state Optional document state on which the cache should evict.\n * If not provided, the cache will evict on `DocumentBuilder#onUpdate`.\n * *Deleted* documents are considered in both cases.\n *\n * Providing a state here will use `DocumentBuilder#onDocumentPhase` instead,\n * which triggers on all documents that have been affected by this change, assuming that the\n * state is `DocumentState.Linked` or a later state.\n */\n constructor(sharedServices: LangiumSharedCoreServices, state?: DocumentState) {\n super(uri => uri.toString());\n if (state) {\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onDocumentPhase(state, document => {\n this.clear(document.uri.toString());\n }));\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((_changed, deleted) => {\n for (const uri of deleted) { // react only on deleted documents\n this.clear(uri);\n }\n }));\n } else {\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((changed, deleted) => {\n const allUris = changed.concat(deleted); // react on both changed and deleted documents\n for (const uri of allUris) {\n this.clear(uri);\n }\n }));\n }\n }\n}\n\n/**\n * Every key/value pair in this cache is scoped to the whole workspace.\n * If any document in the workspace is added, changed or deleted, the whole cache is evicted.\n */\nexport class WorkspaceCache extends SimpleCache {\n\n /**\n * Creates a new workspace cache.\n *\n * @param sharedServices Service container instance to hook into document lifecycle events.\n * @param state Optional document state on which the cache should evict.\n * If not provided, the cache will evict on `DocumentBuilder#onUpdate`.\n * *Deleted* documents are considered in both cases.\n */\n constructor(sharedServices: LangiumSharedCoreServices, state?: DocumentState) {\n super();\n if (state) {\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onBuildPhase(state, () => {\n this.clear();\n }));\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate((_changed, deleted) => {\n if (deleted.length > 0) { // react only on deleted documents\n this.clear();\n }\n }));\n } else {\n this.toDispose.push(sharedServices.workspace.DocumentBuilder.onUpdate(() => { // react on both changed and deleted documents\n this.clear();\n }));\n }\n }\n}\n", "/******************************************************************************\n * Copyright 2021-2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, AstNodeDescription, AstReflection, ReferenceInfo } from '../syntax-tree.js';\nimport type { Stream } from '../utils/stream.js';\nimport type { AstNodeDescriptionProvider } from '../workspace/ast-descriptions.js';\nimport type { IndexManager } from '../workspace/index-manager.js';\nimport type { NameProvider } from './name-provider.js';\nimport type { Scope, ScopeOptions} from './scope.js';\nimport { MultiMapScope, StreamScope } from './scope.js';\nimport { getDocument } from '../utils/ast-utils.js';\nimport { stream } from '../utils/stream.js';\nimport { WorkspaceCache } from '../utils/caching.js';\n\n/**\n * Language-specific service for determining the scope of target elements visible in a specific cross-reference context.\n */\nexport interface ScopeProvider {\n\n /**\n * Return a scope describing what elements are visible for the given AST node and cross-reference\n * identifier.\n *\n * @param context Information about the reference for which a scope is requested.\n */\n getScope(context: ReferenceInfo): Scope;\n\n}\n\nexport class DefaultScopeProvider implements ScopeProvider {\n\n protected readonly reflection: AstReflection;\n protected readonly nameProvider: NameProvider;\n protected readonly descriptions: AstNodeDescriptionProvider;\n protected readonly indexManager: IndexManager;\n\n protected readonly globalScopeCache: WorkspaceCache;\n\n constructor(services: LangiumCoreServices) {\n this.reflection = services.shared.AstReflection;\n this.nameProvider = services.references.NameProvider;\n this.descriptions = services.workspace.AstNodeDescriptionProvider;\n this.indexManager = services.shared.workspace.IndexManager;\n this.globalScopeCache = new WorkspaceCache(services.shared);\n }\n\n getScope(context: ReferenceInfo): Scope {\n const scopes: Array> = [];\n const referenceType = this.reflection.getReferenceType(context);\n\n const localSymbols = getDocument(context.container).localSymbols;\n if (localSymbols) {\n let currentNode: AstNode | undefined = context.container;\n do {\n if (localSymbols.has(currentNode)) {\n scopes.push(localSymbols.getStream(currentNode).filter(\n desc => this.reflection.isSubtype(desc.type, referenceType)));\n }\n currentNode = currentNode.$container;\n } while (currentNode);\n }\n\n let result: Scope = this.getGlobalScope(referenceType, context);\n for (let i = scopes.length - 1; i >= 0; i--) {\n result = this.createScope(scopes[i], result);\n }\n return result;\n }\n\n /**\n * Create a scope for the given collection of AST node descriptions.\n */\n protected createScope(elements: Iterable, outerScope?: Scope, options?: ScopeOptions): Scope {\n return new StreamScope(stream(elements), outerScope, options);\n }\n\n /**\n * Create a scope for the given collection of AST nodes, which need to be transformed into respective\n * descriptions first. This is done using the `NameProvider` and `AstNodeDescriptionProvider` services.\n */\n protected createScopeForNodes(elements: Iterable, outerScope?: Scope, options?: ScopeOptions): Scope {\n const s = stream(elements).map(e => {\n const name = this.nameProvider.getName(e);\n if (name) {\n return this.descriptions.createDescription(e, name);\n }\n return undefined;\n }).nonNullable();\n return new StreamScope(s, outerScope, options);\n }\n\n /**\n * Create a global scope filtered for the given reference type.\n */\n protected getGlobalScope(referenceType: string, _context: ReferenceInfo): Scope {\n return this.globalScopeCache.get(referenceType, () => new MultiMapScope(this.indexManager.allElements(referenceType)));\n }\n\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { URI } from 'vscode-uri';\nimport type { CommentProvider } from '../documentation/comment-provider.js';\nimport type { NameProvider } from '../references/name-provider.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, CstNode, GenericAstNode, MultiReference, MultiReferenceItem, Mutable, Reference } from '../syntax-tree.js';\nimport { isAstNode, isMultiReference, isReference } from '../syntax-tree.js';\nimport { getDocument } from '../utils/ast-utils.js';\nimport { findNodesForProperty } from '../utils/grammar-utils.js';\nimport type { AstNodeLocator } from '../workspace/ast-node-locator.js';\nimport type { DocumentSegment, LangiumDocument, LangiumDocuments } from '../workspace/documents.js';\n\nexport interface JsonSerializeOptions {\n /** The space parameter for `JSON.stringify`, controlling whether and how to pretty-print the output. */\n space?: string | number;\n /** Whether to include the `$refText` property for references (the name used to identify the target node). */\n refText?: boolean;\n /** Whether to include the `$sourceText` property, which holds the full source text from which an AST node was parsed. */\n sourceText?: boolean;\n /** Whether to include the `$textRegion` property, which holds information to trace AST node properties to their respective source text regions. */\n textRegions?: boolean;\n /** Whether to include the `$comment` property, which holds comments according to the CommentProvider service. */\n comments?: boolean;\n /** The replacer parameter for `JSON.stringify`; the default replacer given as parameter should be used to apply basic replacements. */\n replacer?: (key: string, value: unknown, defaultReplacer: (key: string, value: unknown) => unknown) => unknown\n /** Used to convert and serialize URIs when the target of a cross-reference is in a different document. */\n uriConverter?: (uri: URI, node: AstNode) => string\n}\n\nexport interface JsonDeserializeOptions {\n /** Used to parse and convert URIs when the target of a cross-reference is in a different document. */\n uriConverter?: (uri: string) => URI\n}\n\n/**\n * {@link AstNode}s that may carry information on their definition area within the DSL text.\n */\nexport interface AstNodeWithTextRegion extends AstNode {\n $sourceText?: string;\n $textRegion?: AstNodeRegionWithAssignments;\n}\n\n/**\n * {@link AstNode}s that may carry a semantically relevant comment.\n */\nexport interface AstNodeWithComment extends AstNode {\n $comment?: string;\n}\n\nexport function isAstNodeWithComment(node: AstNode): node is AstNodeWithComment {\n return typeof (node as AstNodeWithComment).$comment === 'string';\n}\n\n/**\n * A {@link DocumentSegment} representing the definition area of an AstNode within the DSL text.\n * Usually contains text region information on all assigned property values of the AstNode,\n * and may contain the defining file's URI as string.\n */\nexport interface AstNodeRegionWithAssignments extends DocumentSegment {\n /**\n * A record containing an entry for each assigned property of the AstNode.\n * The key is equal to the property name and the value is an array of the property values'\n * text regions, regardless of whether the property is a single value or list property.\n */\n assignments?: Record;\n /**\n * The AstNode defining file's URI as string\n */\n documentURI?: string;\n}\n\n/**\n * Utility service for transforming an `AstNode` into a JSON string and vice versa.\n */\nexport interface JsonSerializer {\n /**\n * Serialize an `AstNode` into a JSON `string`.\n * @param node The `AstNode` to be serialized.\n * @param options Serialization options\n */\n serialize(node: AstNode, options?: JsonSerializeOptions): string;\n /**\n * Deserialize (parse) a JSON `string` into an `AstNode`.\n */\n deserialize(content: string, options?: JsonDeserializeOptions): T;\n}\n\n/**\n * A cross-reference in the serialized JSON representation of an AstNode.\n */\ninterface IntermediateReference {\n /** URI pointing to the target element. This is either `#${path}` if the target is in the same document, or `${documentURI}#${path}` otherwise. */\n $ref?: string\n /** URI pointing to the target elements. This is the multi reference equivalent for {@link $ref}. */\n $refs?: string[]\n /** The actual text used to look up the reference target in the surrounding scope. */\n $refText?: string\n /** If any problem occurred while resolving the reference, it is described by this property. */\n $error?: string\n}\n\nfunction isIntermediateReference(obj: unknown): obj is IntermediateReference {\n return typeof obj === 'object' && !!obj && ('$ref' in obj || '$error' in obj);\n}\n\nexport class DefaultJsonSerializer implements JsonSerializer {\n\n /** The set of AstNode properties to be ignored by the serializer. */\n ignoreProperties = new Set(['$container', '$containerProperty', '$containerIndex', '$document', '$cstNode']);\n\n /** The document that is currently processed by the serializer; this is used by the replacer function. */\n protected currentDocument: LangiumDocument | undefined;\n\n protected readonly langiumDocuments: LangiumDocuments;\n protected readonly astNodeLocator: AstNodeLocator;\n protected readonly nameProvider: NameProvider;\n protected readonly commentProvider: CommentProvider;\n\n constructor(services: LangiumCoreServices) {\n this.langiumDocuments = services.shared.workspace.LangiumDocuments;\n this.astNodeLocator = services.workspace.AstNodeLocator;\n this.nameProvider = services.references.NameProvider;\n this.commentProvider = services.documentation.CommentProvider;\n }\n\n serialize(node: AstNode, options?: JsonSerializeOptions): string {\n const serializeOptions = options ?? {};\n const specificReplacer = options?.replacer;\n const defaultReplacer = (key: string, value: unknown) => this.replacer(key, value, serializeOptions);\n const replacer = specificReplacer ? (key: string, value: unknown) => specificReplacer(key, value, defaultReplacer) : defaultReplacer;\n\n try {\n this.currentDocument = getDocument(node);\n return JSON.stringify(node, replacer, options?.space);\n } finally {\n this.currentDocument = undefined;\n }\n }\n\n deserialize(content: string, options?: JsonDeserializeOptions): T {\n const deserializeOptions = options ?? {};\n const root = JSON.parse(content);\n this.linkNode(root, root, deserializeOptions);\n return root;\n }\n\n protected replacer(key: string, value: unknown, { refText, sourceText, textRegions, comments, uriConverter }: JsonSerializeOptions): unknown {\n if (this.ignoreProperties.has(key)) {\n return undefined;\n } else if (isReference(value)) {\n const refValue = value.ref;\n const $refText = refText ? value.$refText : undefined;\n if (refValue) {\n const targetDocument = getDocument(refValue);\n let targetUri = '';\n if (this.currentDocument && this.currentDocument !== targetDocument) {\n if (uriConverter) {\n targetUri = uriConverter(targetDocument.uri, refValue);\n } else {\n targetUri = targetDocument.uri.toString();\n }\n }\n const targetPath = this.astNodeLocator.getAstNodePath(refValue);\n return {\n $ref: `${targetUri}#${targetPath}`,\n $refText\n } satisfies IntermediateReference;\n } else {\n return {\n $error: value.error?.message ?? 'Could not resolve reference',\n $refText\n } satisfies IntermediateReference;\n }\n } else if (isMultiReference(value)) {\n const $refText = refText ? value.$refText : undefined;\n const $refs: string[] = [];\n for (const item of value.items) {\n const refValue = item.ref;\n const targetDocument = getDocument(item.ref);\n let targetUri = '';\n if (this.currentDocument && this.currentDocument !== targetDocument) {\n if (uriConverter) {\n targetUri = uriConverter(targetDocument.uri, refValue);\n } else {\n targetUri = targetDocument.uri.toString();\n }\n }\n const targetPath = this.astNodeLocator.getAstNodePath(refValue);\n $refs.push(`${targetUri}#${targetPath}`);\n }\n return {\n $refs,\n $refText\n } satisfies IntermediateReference;\n } else if (isAstNode(value)) {\n let astNode: AstNodeWithTextRegion | undefined = undefined;\n if (textRegions) {\n astNode = this.addAstNodeRegionWithAssignmentsTo({ ...value });\n if ((!key || value.$document) && astNode?.$textRegion) {\n // The document URI is added to the root node of the resulting JSON tree\n astNode.$textRegion.documentURI = this.currentDocument?.uri.toString();\n }\n }\n if (sourceText && !key) {\n astNode ??= { ...value };\n astNode.$sourceText = value.$cstNode?.text;\n }\n if (comments) {\n astNode ??= { ...value };\n const comment = this.commentProvider.getComment(value);\n if (comment) {\n (astNode as AstNodeWithComment).$comment = comment.replace(/\\r/g, '');\n }\n }\n return astNode ?? value;\n } else {\n return value;\n }\n }\n\n protected addAstNodeRegionWithAssignmentsTo(node: AstNodeWithTextRegion) {\n const createDocumentSegment: (cstNode: CstNode) => AstNodeRegionWithAssignments = cstNode => {\n offset: cstNode.offset,\n end: cstNode.end,\n length: cstNode.length,\n range: cstNode.range,\n };\n\n if (node.$cstNode) {\n const textRegion = node.$textRegion = createDocumentSegment(node.$cstNode);\n const assignments: Record = textRegion.assignments = {};\n\n Object.keys(node).filter(key => !key.startsWith('$')).forEach(key => {\n const propertyAssignments = findNodesForProperty(node.$cstNode, key).map(createDocumentSegment);\n if (propertyAssignments.length !== 0) {\n assignments[key] = propertyAssignments;\n }\n });\n\n return node;\n }\n return undefined;\n }\n\n protected linkNode(node: GenericAstNode, root: AstNode, options: JsonDeserializeOptions, container?: AstNode, containerProperty?: string, containerIndex?: number) {\n for (const [propertyName, item] of Object.entries(node)) {\n if (Array.isArray(item)) {\n for (let index = 0; index < item.length; index++) {\n const element = item[index];\n if (isIntermediateReference(element)) {\n item[index] = this.reviveReference(node, propertyName, root, element, options);\n } else if (isAstNode(element)) {\n this.linkNode(element as GenericAstNode, root, options, node, propertyName, index);\n }\n }\n } else if (isIntermediateReference(item)) {\n node[propertyName] = this.reviveReference(node, propertyName, root, item, options);\n } else if (isAstNode(item)) {\n this.linkNode(item as GenericAstNode, root, options, node, propertyName);\n }\n }\n const mutable = node as Mutable;\n mutable.$container = container;\n mutable.$containerProperty = containerProperty;\n mutable.$containerIndex = containerIndex;\n }\n\n protected reviveReference(container: AstNode, property: string, root: AstNode, reference: IntermediateReference, options: JsonDeserializeOptions): Reference | MultiReference | undefined {\n let refText = reference.$refText;\n let error = reference.$error;\n let ref: Mutable | Mutable | undefined;\n if (reference.$ref) {\n const refNode = this.getRefNode(root, reference.$ref, options.uriConverter);\n if (isAstNode(refNode)) {\n if (!refText) {\n refText = this.nameProvider.getName(refNode);\n }\n return {\n $refText: refText ?? '',\n ref: refNode\n };\n } else {\n error = refNode;\n }\n } else if (reference.$refs) {\n const refs: MultiReferenceItem[] = [];\n for (const refUri of reference.$refs) {\n const refNode = this.getRefNode(root, refUri, options.uriConverter);\n if (isAstNode(refNode)) {\n refs.push({ ref: refNode });\n }\n }\n if (refs.length === 0) {\n ref = {\n $refText: refText ?? '',\n items: refs\n };\n error ??= 'Could not resolve multi-reference';\n } else {\n return {\n $refText: refText ?? '',\n items: refs\n };\n }\n }\n if (error) {\n ref ??= {\n $refText: refText ?? '',\n ref: undefined\n };\n ref.error = {\n info: {\n container,\n property,\n reference: ref\n },\n message: error\n };\n return ref;\n } else {\n return undefined;\n }\n }\n\n protected getRefNode(root: AstNode, uri: string, uriConverter?: (uri: string) => URI): AstNode | string {\n try {\n const fragmentIndex = uri.indexOf('#');\n if (fragmentIndex === 0) {\n const node = this.astNodeLocator.getAstNode(root, uri.substring(1));\n if (!node) {\n return 'Could not resolve path: ' + uri;\n }\n return node;\n }\n if (fragmentIndex < 0) {\n const documentUri = uriConverter ? uriConverter(uri) : URI.parse(uri);\n const document = this.langiumDocuments.getDocument(documentUri);\n if (!document) {\n return 'Could not find document for URI: ' + uri;\n }\n return document.parseResult.value;\n }\n const documentUri = uriConverter ? uriConverter(uri.substring(0, fragmentIndex)) : URI.parse(uri.substring(0, fragmentIndex));\n const document = this.langiumDocuments.getDocument(documentUri);\n if (!document) {\n return 'Could not find document for URI: ' + uri;\n }\n if (fragmentIndex === uri.length - 1) {\n return document.parseResult.value;\n }\n const node = this.astNodeLocator.getAstNode(document.parseResult.value, uri.substring(fragmentIndex + 1));\n if (!node) {\n return 'Could not resolve URI: ' + uri;\n }\n return node;\n } catch (err) {\n return String(err);\n }\n }\n\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices, LangiumSharedCoreServices } from './services.js';\nimport type { TextDocumentProvider } from './workspace/documents.js';\nimport { UriUtils, type URI } from './utils/uri-utils.js';\n\n/**\n * The service registry provides access to the language-specific {@link LangiumCoreServices} optionally including LSP-related services.\n * These are resolved via the URI of a text document.\n */\nexport interface ServiceRegistry {\n\n /**\n * Register a language via its injected services.\n */\n register(language: LangiumCoreServices): void;\n\n /**\n * Retrieve the language-specific services for the given URI. In case only one language is\n * registered, it may be used regardless of the URI format.\n */\n getServices(uri: URI): LangiumCoreServices;\n\n /**\n * Check whether services are available for the given URI.\n */\n hasServices(uri: URI): boolean;\n\n /**\n * The full set of registered language services.\n */\n readonly all: readonly LangiumCoreServices[];\n}\n\n/**\n * Generic registry for Langium services, but capable of being used with extending service sets as well (such as the lsp-complete LangiumCoreServices set)\n */\nexport class DefaultServiceRegistry implements ServiceRegistry {\n\n protected readonly languageIdMap = new Map();\n protected readonly fileExtensionMap = new Map();\n protected readonly fileNameMap = new Map();\n\n /**\n * @deprecated Since 3.1.0. Use the new `fileExtensionMap` (or `languageIdMap`) property instead.\n */\n protected get map(): Map | undefined {\n return this.fileExtensionMap;\n }\n\n protected readonly textDocuments?: TextDocumentProvider;\n\n constructor(services?: LangiumSharedCoreServices) {\n this.textDocuments = services?.workspace.TextDocuments;\n }\n\n register(language: LangiumCoreServices): void {\n const data = language.LanguageMetaData;\n for (const ext of data.fileExtensions) {\n if (this.fileExtensionMap.has(ext)) {\n console.warn(`The file extension ${ext} is used by multiple languages. It is now assigned to '${data.languageId}'.`);\n }\n this.fileExtensionMap.set(ext, language);\n }\n if (data.fileNames) {\n for (const name of data.fileNames) {\n if (this.fileNameMap.has(name)) {\n console.warn(`The file name ${name} is used by multiple languages. It is now assigned to '${data.languageId}'.`);\n }\n this.fileNameMap.set(name, language);\n }\n }\n this.languageIdMap.set(data.languageId, language);\n }\n\n getServices(uri: URI): LangiumCoreServices {\n if (this.languageIdMap.size === 0) {\n throw new Error('The service registry is empty. Use `register` to register the services of a language.');\n }\n const languageId = this.textDocuments?.get(uri)?.languageId;\n if (languageId !== undefined) {\n const services = this.languageIdMap.get(languageId);\n if (services) {\n return services;\n }\n }\n const ext = UriUtils.extname(uri);\n const name = UriUtils.basename(uri);\n const services = this.fileNameMap.get(name) ?? this.fileExtensionMap.get(ext);\n\n if (!services) {\n if (languageId) {\n throw new Error(`The service registry contains no services for the extension '${ext}' for language '${languageId}'.`);\n } else {\n throw new Error(`The service registry contains no services for the extension '${ext}'.`);\n }\n }\n return services;\n }\n\n hasServices(uri: URI): boolean {\n try {\n this.getServices(uri);\n return true;\n } catch {\n return false;\n }\n }\n\n get all(): readonly LangiumCoreServices[] {\n return Array.from(this.languageIdMap.values());\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { CodeDescription, DiagnosticRelatedInformation, DiagnosticTag, integer, Range } from 'vscode-languageserver-types';\nimport { assertUnreachable } from '../index.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, AstReflection, Properties } from '../syntax-tree.js';\nimport type { CancellationToken } from '../utils/cancellation.js';\nimport { MultiMap } from '../utils/collections.js';\nimport type { MaybePromise } from '../utils/promise-utils.js';\nimport { isOperationCancelled } from '../utils/promise-utils.js';\nimport type { Stream } from '../utils/stream.js';\nimport { stream } from '../utils/stream.js';\nimport type { DocumentSegment, LangiumDocument } from '../workspace/documents.js';\n\nexport type DiagnosticInfo> = {\n /** The AST node to which the diagnostic is attached. */\n node: N;\n /** If a property name is given, the diagnostic is restricted to the corresponding text region. */\n property?: P;\n /** If the value of a keyword is given, the diagnostic will appear at its corresponding text region */\n keyword?: string;\n /** In case of a multi-value property (array), an index can be given to select a specific element. */\n index?: number;\n /** If you want to create a diagnostic independent to any property, use the range property. */\n range?: Range;\n /** The diagnostic's code, which usually appear in the user interface. */\n code?: integer | string;\n /** An optional property to describe the error code. */\n codeDescription?: CodeDescription;\n /** Additional metadata about the diagnostic. */\n tags?: DiagnosticTag[];\n /** An array of related diagnostic information, e.g. when symbol-names within a scope collide all definitions can be marked via this property. */\n relatedInformation?: DiagnosticRelatedInformation[];\n /** A data entry field that is preserved between a `textDocument/publishDiagnostics` notification and `textDocument/codeAction` request. */\n data?: unknown;\n}\n\n/**\n * Shape of information commonly used in the `data` field of diagnostics.\n */\nexport interface DiagnosticData {\n /** Diagnostic code for identifying which code action to apply. This code is _not_ shown in the user interface. */\n code: string\n /** Specifies where to apply the code action in the form of a `DocumentSegment`. */\n actionSegment?: DocumentSegment\n /** Specifies where to apply the code action in the form of a `Range`. */\n actionRange?: Range\n}\n\n/**\n * Create DiagnosticData for a given diagnostic code. The result can be put into the `data` field of a DiagnosticInfo.\n */\nexport function diagnosticData(code: string): DiagnosticData {\n return { code };\n}\n\nexport type ValidationSeverity = 'error' | 'warning' | 'info' | 'hint';\n\nexport type ValidationAcceptor = (severity: ValidationSeverity, message: string, info: DiagnosticInfo) => void\n\nexport type ValidationCheck = (node: T, accept: ValidationAcceptor, cancelToken: CancellationToken) => MaybePromise;\n\n/**\n * A utility type for describing functions which will be called once before or after all the AstNodes of an AST/Langium document are validated.\n *\n * The AST is represented by its root AstNode.\n *\n * The given validation acceptor helps to report some early or lately detected issues.\n *\n * The 'categories' indicate, which validation categories are executed for all the AstNodes.\n * This helps to tailor the preparations/tear-down logic to the actually executed checks on the nodes.\n *\n * It is recommended to support interrupts during long-running logic with 'interruptAndCheck(cancelToken)'.\n */\nexport type ValidationPreparation = (rootNode: AstNode, accept: ValidationAcceptor, categories: ValidationCategory[], cancelToken: CancellationToken) => MaybePromise;\n\n/**\n * A utility type for associating non-primitive AST types to corresponding validation checks. For example:\n *\n * ```ts\n * const checks: ValidationChecks = {\n * State: validator.checkStateNameStartsWithCapital\n * };\n * ```\n *\n * If an AST type does not extend AstNode, e.g. if it describes a union of string literals, that type's name must not occur as a key in objects of type `ValidationCheck<...>`.\n *\n * @param T a type definition mapping language specific type names (keys) to the corresponding types (values)\n */\nexport type ValidationChecks = {\n [K in keyof T]?: T[K] extends AstNode ? ValidationCheck | Array> : never\n} & {\n AstNode?: ValidationCheck | Array>;\n}\n\n/**\n * There are 3 pre-defined categories: `fast`, `slow` and `built-in`.\n *\n * `fast` checks can be executed after every document change (i.e. as the user is typing). If a check\n * is too slow it can delay the response to document changes, yielding bad user experience. By marking\n * it as `slow`, it will be skipped for normal as-you-type validation. Then it's up to you when to\n * schedule these long-running checks: after the fast checks are done, or after saving a document,\n * or with an explicit command, etc.\n *\n * `built-in` checks are errors produced by the lexer, the parser, or the linker. They cannot be used\n * for custom validation checks.\n *\n * You can also provide user-defined categories. These check will be skipped by default. Then it's up\n * to you to schedule these checks: after the fast checks are done, or after saving a document,\n * or with an explicit command, etc.\n */\nexport type ValidationCategory = 'fast' | 'slow' | 'built-in' | (string & {});\n\nexport namespace ValidationCategory {\n export const defaults: readonly ValidationCategory[] = ['fast', 'slow', 'built-in'];\n /**\n * @deprecated since 4.2 Use `ValidationCategory.defaults` instead,\n * since \"all\" does not include user-defined, custom validation categories.\n */\n export const all: readonly ValidationCategory[] = defaults;\n}\n\ntype ValidationCheckEntry = {\n check: ValidationCheck\n category: ValidationCategory\n}\n\n/**\n * Manages a set of `ValidationCheck`s to be applied when documents are validated.\n */\nexport class ValidationRegistry {\n protected readonly entries = new MultiMap();\n protected readonly knownCategories = new Set(ValidationCategory.defaults);\n\n protected readonly reflection: AstReflection;\n\n protected entriesBefore: ValidationPreparation[] = [];\n protected entriesAfter: ValidationPreparation[] = [];\n\n constructor(services: LangiumCoreServices) {\n this.reflection = services.shared.AstReflection;\n }\n\n /**\n * Register a set of validation checks. Each value in the record can be either a single validation check (i.e. a function)\n * or an array of validation checks.\n *\n * @param checksRecord Set of validation checks to register.\n * @param thisObj Optional object to be used as `this` when calling the validation check functions.\n * @param category Optional category for the validation checks (defaults to `'fast'`).\n */\n register(checksRecord: ValidationChecks, thisObj: ThisParameterType = this, category: ValidationCategory = 'fast'): void {\n if (category === 'built-in') {\n throw new Error(\"The 'built-in' category is reserved for lexer, parser, and linker errors.\");\n }\n this.knownCategories.add(category); // remember custom/user-defined categories\n for (const [type, ch] of Object.entries(checksRecord)) {\n const callbacks = ch as ValidationCheck | ValidationCheck[];\n if (Array.isArray(callbacks)) {\n for (const check of callbacks) {\n const entry: ValidationCheckEntry = {\n check: this.wrapValidationException(check, thisObj),\n category\n };\n this.addEntry(type, entry);\n }\n } else if (typeof callbacks === 'function') {\n const entry: ValidationCheckEntry = {\n check: this.wrapValidationException(callbacks, thisObj),\n category\n };\n this.addEntry(type, entry);\n } else {\n assertUnreachable(callbacks);\n }\n }\n }\n\n protected wrapValidationException(check: ValidationCheck, thisObj: unknown): ValidationCheck {\n return async (node, accept, cancelToken) => {\n await this.handleException(() => check.call(thisObj, node, accept, cancelToken), 'An error occurred during validation', accept, node);\n };\n }\n\n protected async handleException(functionality: () => MaybePromise, messageContext: string, accept: ValidationAcceptor, node: AstNode): Promise {\n try {\n await functionality();\n } catch (err) {\n if (isOperationCancelled(err)) {\n throw err;\n }\n console.error(`${messageContext}:`, err);\n if (err instanceof Error && err.stack) {\n console.error(err.stack);\n }\n const messageDetails = err instanceof Error ? err.message : String(err);\n accept('error', `${messageContext}: ${messageDetails}`, { node });\n }\n }\n\n protected addEntry(type: string, entry: ValidationCheckEntry): void {\n if (type === 'AstNode') {\n this.entries.add('AstNode', entry);\n return;\n }\n for (const subtype of this.reflection.getAllSubTypes(type)) {\n this.entries.add(subtype, entry);\n }\n }\n\n getChecks(type: string, categories?: ValidationCategory[]): Stream {\n let checks = stream(this.entries.get(type))\n .concat(this.entries.get('AstNode'));\n if (categories) {\n checks = checks.filter(entry => categories.includes(entry.category));\n }\n return checks.map(entry => entry.check);\n }\n\n /**\n * Register logic which will be executed once before validating all the nodes of an AST/Langium document.\n * This helps to prepare or initialize some information which are required or reusable for the following checks on the AstNodes.\n *\n * As an example, for validating unique fully-qualified names of nodes in the AST,\n * here the map for mapping names to nodes could be established.\n * During the usual checks on the nodes, they are put into this map with their name.\n *\n * Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation.\n * Therefore it is recommended to clear stored information\n * _before_ validating an AST to validate each AST unaffected from other ASTs\n * AND _after_ validating the AST to free memory by information which are no longer used.\n *\n * @param checkBefore a set-up function which will be called once before actually validating an AST\n * @param thisObj Optional object to be used as `this` when calling the validation check functions.\n */\n registerBeforeDocument(checkBefore: ValidationPreparation, thisObj: ThisParameterType = this): void {\n this.entriesBefore.push(this.wrapPreparationException(checkBefore, 'An error occurred during set-up of the validation', thisObj));\n }\n\n /**\n * Register logic which will be executed once after validating all the nodes of an AST/Langium document.\n * This helps to finally evaluate information which are collected during the checks on the AstNodes.\n *\n * As an example, for validating unique fully-qualified names of nodes in the AST,\n * here the map with all the collected nodes and their names is checked\n * and validation hints are created for all nodes with the same name.\n *\n * Note that this approach makes validations stateful, which is relevant e.g. when cancelling the validation.\n * Therefore it is recommended to clear stored information\n * _before_ validating an AST to validate each AST unaffected from other ASTs\n * AND _after_ validating the AST to free memory by information which are no longer used.\n *\n * @param checkBefore a set-up function which will be called once before actually validating an AST\n * @param thisObj Optional object to be used as `this` when calling the validation check functions.\n */\n registerAfterDocument(checkAfter: ValidationPreparation, thisObj: ThisParameterType = this): void {\n this.entriesAfter.push(this.wrapPreparationException(checkAfter, 'An error occurred during tear-down of the validation', thisObj));\n }\n\n protected wrapPreparationException(check: ValidationPreparation, messageContext: string, thisObj: unknown): ValidationPreparation {\n return async (rootNode, accept, categories, cancelToken) => {\n await this.handleException(() => check.call(thisObj, rootNode, accept, categories, cancelToken), messageContext, accept, rootNode);\n };\n }\n\n get checksBefore(): ValidationPreparation[] {\n return this.entriesBefore;\n }\n\n get checksAfter(): ValidationPreparation[] {\n return this.entriesAfter;\n }\n\n getAllValidationCategories(_document: LangiumDocument): ReadonlySet {\n return this.knownCategories;\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { MismatchedTokenException } from 'chevrotain';\nimport type { DiagnosticSeverity, Position, Range, Diagnostic } from 'vscode-languageserver-types';\nimport type { LanguageMetaData } from '../languages/language-meta-data.js';\nimport type { ParseResult } from '../parser/langium-parser.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, CstNode } from '../syntax-tree.js';\nimport type { LangiumDocument } from '../workspace/documents.js';\nimport type { DiagnosticData, DiagnosticInfo, ValidationAcceptor, ValidationCategory, ValidationRegistry, ValidationSeverity } from './validation-registry.js';\nimport { CancellationToken } from '../utils/cancellation.js';\nimport { findNodeForKeyword, findNodeForProperty } from '../utils/grammar-utils.js';\nimport { streamAst } from '../utils/ast-utils.js';\nimport { tokenToRange } from '../utils/cst-utils.js';\nimport { interruptAndCheck, isOperationCancelled } from '../utils/promise-utils.js';\nimport { diagnosticData } from './validation-registry.js';\nimport type { LexingDiagnostic, LexingDiagnosticSeverity } from '../parser/token-builder.js';\nimport type { LangiumProfiler } from '../workspace/profiler.js';\n\nexport interface ValidationOptions {\n /**\n * If this is set, only the checks associated with these categories are executed; otherwise\n * all checks are executed. The default category if not specified to the registry is `'fast'`.\n */\n categories?: ValidationCategory[];\n /** If true, no further diagnostics are reported if there are lexing errors. */\n stopAfterLexingErrors?: boolean\n /** If true, no further diagnostics are reported if there are parsing errors. Lexing errors are reported first. */\n stopAfterParsingErrors?: boolean\n /** If true, no further diagnostics are reported if there are linking errors. Lexing and parsing errors are reported first. */\n stopAfterLinkingErrors?: boolean\n}\n\n/**\n * Language-specific service for validating `LangiumDocument`s.\n */\nexport interface DocumentValidator {\n /**\n * Validates the whole specified document.\n *\n * @param document specified document to validate\n * @param options options to control the validation process\n * @param cancelToken allows to cancel the current operation\n * @throws `OperationCanceled` if a user action occurs during execution\n */\n validateDocument(document: LangiumDocument, options?: ValidationOptions, cancelToken?: CancellationToken): Promise;\n}\n\nexport interface ValidateSingleNodeOptions {\n validateNode: boolean;\n validateChildren: boolean;\n}\n\nexport const VALIDATE_EACH_NODE: ValidateSingleNodeOptions = Object.freeze({\n validateNode: true,\n validateChildren: true,\n});\n\nexport class DefaultDocumentValidator implements DocumentValidator {\n\n protected readonly validationRegistry: ValidationRegistry;\n protected readonly metadata: LanguageMetaData;\n protected readonly profiler: LangiumProfiler | undefined;\n protected readonly languageId: string;\n\n constructor(services: LangiumCoreServices) {\n this.validationRegistry = services.validation.ValidationRegistry;\n this.metadata = services.LanguageMetaData;\n this.profiler = services.shared.profilers.LangiumProfiler;\n this.languageId = services.LanguageMetaData.languageId;\n }\n\n async validateDocument(document: LangiumDocument, options: ValidationOptions = {}, cancelToken = CancellationToken.None): Promise {\n const parseResult = document.parseResult;\n const diagnostics: Diagnostic[] = [];\n\n await interruptAndCheck(cancelToken);\n\n if (!options.categories || options.categories.includes('built-in')) {\n this.processLexingErrors(parseResult, diagnostics, options);\n if (options.stopAfterLexingErrors && diagnostics.some(d => d.data?.code === DocumentValidator.LexingError)) {\n return diagnostics;\n }\n\n this.processParsingErrors(parseResult, diagnostics, options);\n if (options.stopAfterParsingErrors && diagnostics.some(d => d.data?.code === DocumentValidator.ParsingError)) {\n return diagnostics;\n }\n\n this.processLinkingErrors(document, diagnostics, options);\n if (options.stopAfterLinkingErrors && diagnostics.some(d => d.data?.code === DocumentValidator.LinkingError)) {\n return diagnostics;\n }\n }\n\n // Process custom validations\n try {\n diagnostics.push(...await this.validateAst(parseResult.value, options, cancelToken));\n } catch (err) {\n if (isOperationCancelled(err)) {\n throw err;\n }\n console.error('An error occurred during validation:', err);\n }\n\n await interruptAndCheck(cancelToken);\n\n return diagnostics;\n }\n\n protected processLexingErrors(parseResult: ParseResult, diagnostics: Diagnostic[], _options: ValidationOptions): void {\n const lexerDiagnostics = [...parseResult.lexerErrors, ...parseResult.lexerReport?.diagnostics ?? []] as LexingDiagnostic[];\n for (const lexerDiagnostic of lexerDiagnostics) {\n const severity = lexerDiagnostic.severity ?? 'error';\n const diagnostic: Diagnostic = {\n severity: toDiagnosticSeverity(severity),\n range: {\n start: {\n line: lexerDiagnostic.line! - 1,\n character: lexerDiagnostic.column! - 1\n },\n end: {\n line: lexerDiagnostic.line! - 1,\n character: lexerDiagnostic.column! + lexerDiagnostic.length - 1\n }\n },\n message: lexerDiagnostic.message,\n data: toDiagnosticData(severity),\n source: this.getSource()\n };\n diagnostics.push(diagnostic);\n }\n }\n\n protected processParsingErrors(parseResult: ParseResult, diagnostics: Diagnostic[], _options: ValidationOptions): void {\n for (const parserError of parseResult.parserErrors) {\n let range: Range | undefined = undefined;\n // We can run into the chevrotain error recovery here\n // The token contained in the parser error might be automatically inserted\n // In this case every position value will be `NaN`\n if (isNaN(parserError.token.startOffset)) {\n // Some special parser error types contain a `previousToken`\n // We can simply append our diagnostic to that token\n if ('previousToken' in parserError) {\n const token = (parserError as MismatchedTokenException).previousToken;\n if (!isNaN(token.startOffset)) {\n const position: Position = { line: token.endLine! - 1, character: token.endColumn! };\n range = { start: position, end: position};\n } else {\n // No valid prev token. Might be empty document or containing only hidden tokens.\n // Point to document start\n const position: Position = { line: 0, character: 0 };\n range = { start: position, end: position};\n }\n }\n } else {\n range = tokenToRange(parserError.token);\n }\n if (range) {\n const diagnostic: Diagnostic = {\n severity: toDiagnosticSeverity('error'),\n range,\n message: parserError.message,\n data: diagnosticData(DocumentValidator.ParsingError),\n source: this.getSource()\n };\n diagnostics.push(diagnostic);\n }\n }\n }\n\n protected processLinkingErrors(document: LangiumDocument, diagnostics: Diagnostic[], _options: ValidationOptions): void {\n for (const reference of document.references) {\n const linkingError = reference.error;\n if (linkingError) {\n const info: DiagnosticInfo = {\n node: linkingError.info.container,\n range: reference.$refNode?.range,\n property: linkingError.info.property,\n index: linkingError.info.index,\n data: {\n code: DocumentValidator.LinkingError,\n containerType: linkingError.info.container.$type,\n property: linkingError.info.property,\n refText: linkingError.info.reference.$refText\n } satisfies LinkingErrorData\n };\n diagnostics.push(this.toDiagnostic('error', linkingError.message, info));\n }\n }\n }\n\n protected async validateAst(rootNode: AstNode, options: ValidationOptions, cancelToken = CancellationToken.None): Promise {\n const validationItems: Diagnostic[] = [];\n const acceptor: ValidationAcceptor = (severity: ValidationSeverity, message: string, info: DiagnosticInfo) => {\n validationItems.push(this.toDiagnostic(severity, message, info));\n };\n\n await this.validateAstBefore(rootNode, options, acceptor, cancelToken);\n await this.validateAstNodes(rootNode, options, acceptor, cancelToken);\n await this.validateAstAfter(rootNode, options, acceptor, cancelToken);\n\n return validationItems;\n }\n\n protected async validateAstBefore(rootNode: AstNode, options: ValidationOptions, acceptor: ValidationAcceptor, cancelToken = CancellationToken.None): Promise {\n const checksBefore = this.validationRegistry.checksBefore;\n for (const checkBefore of checksBefore) {\n await interruptAndCheck(cancelToken);\n await checkBefore(rootNode, acceptor, options.categories ?? [], cancelToken);\n }\n }\n\n protected async validateAstNodes(rootNode: AstNode, options: ValidationOptions, acceptor: ValidationAcceptor, cancelToken = CancellationToken.None): Promise {\n if (this.profiler?.isActive('validating')) {\n const task = this.profiler.createTask('validating', this.languageId);\n task.start();\n try {\n const nodes = streamAst(rootNode).iterator();\n for (const node of nodes) {\n task.startSubTask(node.$type);\n const nodeOptions = this.validateSingleNodeOptions(node, options);\n if (nodeOptions.validateNode) {\n try {\n const checks = this.validationRegistry.getChecks(node.$type, options.categories);\n for (const check of checks) {\n await check(node, acceptor, cancelToken);\n }\n } finally {\n task.stopSubTask(node.$type);\n }\n }\n if (!nodeOptions.validateChildren) {\n nodes.prune();\n }\n }\n } finally {\n task.stop();\n }\n }\n else {\n const nodes = streamAst(rootNode).iterator();\n for (const node of nodes) {\n await interruptAndCheck(cancelToken);\n const nodeOptions = this.validateSingleNodeOptions(node, options);\n if (nodeOptions.validateNode) {\n const checks = this.validationRegistry.getChecks(node.$type, options.categories);\n for (const check of checks) {\n await check(node, acceptor, cancelToken);\n }\n }\n if (!nodeOptions.validateChildren) {\n nodes.prune();\n }\n }\n }\n }\n\n protected validateSingleNodeOptions(_node: AstNode, _options: ValidationOptions): ValidateSingleNodeOptions {\n return VALIDATE_EACH_NODE;\n }\n\n protected async validateAstAfter(rootNode: AstNode, options: ValidationOptions, acceptor: ValidationAcceptor, cancelToken = CancellationToken.None): Promise {\n const checksAfter = this.validationRegistry.checksAfter;\n for (const checkAfter of checksAfter) {\n await interruptAndCheck(cancelToken);\n await checkAfter(rootNode, acceptor, options.categories ?? [], cancelToken);\n }\n }\n\n protected toDiagnostic(severity: ValidationSeverity, message: string, info: DiagnosticInfo): Diagnostic {\n return {\n message,\n range: getDiagnosticRange(info),\n severity: toDiagnosticSeverity(severity),\n code: info.code,\n codeDescription: info.codeDescription,\n tags: info.tags,\n relatedInformation: info.relatedInformation,\n data: info.data,\n source: this.getSource()\n };\n }\n\n protected getSource(): string | undefined {\n return this.metadata.languageId;\n }\n}\n\nexport function getDiagnosticRange(info: DiagnosticInfo): Range {\n if (info.range) {\n return info.range;\n }\n let cstNode: CstNode | undefined;\n if (typeof info.property === 'string') {\n cstNode = findNodeForProperty(info.node.$cstNode, info.property, info.index);\n } else if (typeof info.keyword === 'string') {\n cstNode = findNodeForKeyword(info.node.$cstNode, info.keyword, info.index);\n }\n cstNode ??= info.node.$cstNode;\n if (!cstNode) {\n return {\n start: { line: 0, character: 0 },\n end: { line: 0, character: 0 }\n };\n }\n return cstNode.range;\n}\n\n/**\n * Transforms the diagnostic severity from the {@link LexingDiagnosticSeverity} format to LSP's `DiagnosticSeverity` format.\n *\n * @param severity The lexing diagnostic severity\n * @returns Diagnostic severity according to `vscode-languageserver-types/lib/esm/main.js#DiagnosticSeverity`\n */\nexport function toDiagnosticSeverity(severity: LexingDiagnosticSeverity): DiagnosticSeverity {\n switch (severity) {\n case 'error':\n return 1 satisfies typeof DiagnosticSeverity.Error;\n case 'warning':\n return 2 satisfies typeof DiagnosticSeverity.Warning;\n case 'info':\n return 3 satisfies typeof DiagnosticSeverity.Information;\n case 'hint':\n return 4 satisfies typeof DiagnosticSeverity.Hint;\n default:\n throw new Error('Invalid diagnostic severity: ' + severity);\n }\n}\n\nexport function toDiagnosticData(severity: LexingDiagnosticSeverity): DiagnosticData {\n switch (severity) {\n case 'error':\n return diagnosticData(DocumentValidator.LexingError);\n case 'warning':\n return diagnosticData(DocumentValidator.LexingWarning);\n case 'info':\n return diagnosticData(DocumentValidator.LexingInfo);\n case 'hint':\n return diagnosticData(DocumentValidator.LexingHint);\n default:\n throw new Error('Invalid diagnostic severity: ' + severity);\n }\n}\n\nexport namespace DocumentValidator {\n export const LexingError = 'lexing-error';\n export const LexingWarning = 'lexing-warning';\n export const LexingInfo = 'lexing-info';\n export const LexingHint = 'lexing-hint';\n export const ParsingError = 'parsing-error';\n export const LinkingError = 'linking-error';\n}\n\nexport interface LinkingErrorData extends DiagnosticData {\n containerType: string\n property: string\n refText: string\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { URI } from '../utils/uri-utils.js';\nimport type { NameProvider } from '../references/name-provider.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, AstNodeDescription, ReferenceInfo } from '../syntax-tree.js';\nimport type { AstNodeLocator } from './ast-node-locator.js';\nimport type { DocumentSegment, LangiumDocument } from './documents.js';\nimport { CancellationToken } from '../utils/cancellation.js';\nimport { isMultiReference, isReference } from '../syntax-tree.js';\nimport { getDocument, streamAst, streamReferences } from '../utils/ast-utils.js';\nimport { toDocumentSegment } from '../utils/cst-utils.js';\nimport { interruptAndCheck } from '../utils/promise-utils.js';\nimport { UriUtils } from '../utils/uri-utils.js';\n\n/**\n * Language-specific service for creating descriptions of AST nodes to be used for cross-reference resolutions.\n */\nexport interface AstNodeDescriptionProvider {\n\n /**\n * Create a description for the given AST node. This service method is typically used while indexing\n * the contents of a document and during scope computation.\n *\n * @param node An AST node.\n * @param name The name to be used to refer to the AST node. By default, this is determined by the\n * `NameProvider` service, but alternative names may be provided according to the semantics\n * of your language.\n * @param document The document containing the AST node. If omitted, it is taken from the root AST node.\n */\n createDescription(node: AstNode, name: string | undefined, document?: LangiumDocument): AstNodeDescription;\n\n}\n\nexport class DefaultAstNodeDescriptionProvider implements AstNodeDescriptionProvider {\n\n protected readonly astNodeLocator: AstNodeLocator;\n protected readonly nameProvider: NameProvider;\n\n constructor(services: LangiumCoreServices) {\n this.astNodeLocator = services.workspace.AstNodeLocator;\n this.nameProvider = services.references.NameProvider;\n }\n\n createDescription(node: AstNode, name: string | undefined, document?: LangiumDocument): AstNodeDescription {\n const doc = document ?? getDocument(node);\n name ??= this.nameProvider.getName(node);\n const path = this.astNodeLocator.getAstNodePath(node);\n if (!name) {\n throw new Error(`Node at path ${path} has no name.`);\n }\n let nameNodeSegment: DocumentSegment | undefined;\n const nameSegmentGetter = () => nameNodeSegment ??= toDocumentSegment(this.nameProvider.getNameNode(node) ?? node.$cstNode);\n return {\n node,\n name,\n get nameSegment() {\n return nameSegmentGetter();\n },\n selectionSegment: toDocumentSegment(node.$cstNode),\n type: node.$type,\n documentUri: doc.uri,\n path\n };\n }\n\n}\n\n/**\n * Describes a cross-reference within a document or between two documents.\n */\nexport interface ReferenceDescription {\n /** URI of the document that holds a reference */\n sourceUri: URI\n /** Path to AstNode that holds a reference */\n sourcePath: string\n /** Target document uri */\n targetUri: URI\n /** Path to the target AstNode inside the document */\n targetPath: string\n /** Segment of the reference text. */\n segment: DocumentSegment\n /** Marks a local reference i.e. a cross reference inside a document. */\n local?: boolean\n}\n\n/**\n * Language-specific service to create descriptions of all cross-references in a document. These are used by the `IndexManager`\n * to determine which documents are affected and should be rebuilt when a document is changed.\n */\nexport interface ReferenceDescriptionProvider {\n /**\n * Create descriptions of all cross-references found in the given document. These descriptions are\n * gathered by the `IndexManager` and stored in the global index so they can be considered when\n * a document change is reported by the client.\n *\n * @param document The document in which to gather cross-references.\n * @param cancelToken Indicates when to cancel the current operation.\n * @throws `OperationCanceled` if a user action occurs during execution\n */\n createDescriptions(document: LangiumDocument, cancelToken?: CancellationToken): Promise;\n}\n\nexport class DefaultReferenceDescriptionProvider implements ReferenceDescriptionProvider {\n\n protected readonly nodeLocator: AstNodeLocator;\n\n constructor(services: LangiumCoreServices) {\n this.nodeLocator = services.workspace.AstNodeLocator;\n }\n\n async createDescriptions(document: LangiumDocument, cancelToken = CancellationToken.None): Promise {\n const descr: ReferenceDescription[] = [];\n const rootNode = document.parseResult.value;\n for (const astNode of streamAst(rootNode)) {\n await interruptAndCheck(cancelToken);\n streamReferences(astNode).forEach(refInfo => {\n if (!refInfo.reference.error) {\n descr.push(...this.createInfoDescriptions(refInfo));\n }\n });\n }\n return descr;\n }\n\n protected createInfoDescriptions(refInfo: ReferenceInfo): ReferenceDescription[] {\n const reference = refInfo.reference;\n if (reference.error || !reference.$refNode) {\n return [];\n }\n let items: AstNodeDescription[] = [];\n if (isReference(reference) && reference.$nodeDescription) {\n items = [reference.$nodeDescription];\n } else if (isMultiReference(reference)) {\n items = reference.items.map(e => e.$nodeDescription).filter(e => e !== undefined);\n }\n const sourceUri = getDocument(refInfo.container).uri;\n const sourcePath = this.nodeLocator.getAstNodePath(refInfo.container);\n const descriptions: ReferenceDescription[] = [];\n const segment = toDocumentSegment(reference.$refNode);\n for (const item of items) {\n descriptions.push({\n sourceUri,\n sourcePath,\n targetUri: item.documentUri,\n targetPath: item.path,\n segment,\n local: UriUtils.equals(item.documentUri, sourceUri)\n });\n }\n return descriptions;\n }\n\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { AstNode } from '../syntax-tree.js';\n\n/**\n * Language-specific service for locating an `AstNode` in a document.\n */\nexport interface AstNodeLocator {\n\n /**\n * Creates a path represented by a `string` that identifies an `AstNode` inside its document.\n * It must be possible to retrieve exactly the same `AstNode` from the document using this path.\n *\n * @param node The `AstNode` for which to create the path.\n * @returns a path represented by a `string` that identifies `node` inside its document.\n * @see {@link getAstNode}\n */\n getAstNodePath(node: AstNode): string;\n\n /**\n * Locates an `AstNode` inside another node by following the given path.\n *\n * @param node Parent element.\n * @param path Describes how to locate the `AstNode` inside the given `node`.\n * @returns The `AstNode` located under the given path, or `undefined` if the path cannot be resolved.\n * @see {@link getAstNodePath}\n */\n getAstNode(node: AstNode, path: string): T | undefined;\n\n}\n\nexport class DefaultAstNodeLocator implements AstNodeLocator {\n protected segmentSeparator = '/';\n protected indexSeparator = '@';\n\n getAstNodePath(node: AstNode): string {\n if (node.$container) {\n const containerPath = this.getAstNodePath(node.$container);\n const newSegment = this.getPathSegment(node);\n const nodePath = containerPath + this.segmentSeparator + newSegment;\n return nodePath;\n }\n return '';\n }\n\n protected getPathSegment({ $containerProperty, $containerIndex }: AstNode): string {\n if (!$containerProperty) {\n throw new Error(\"Missing '$containerProperty' in AST node.\");\n }\n if ($containerIndex !== undefined) {\n return $containerProperty + this.indexSeparator + $containerIndex;\n }\n return $containerProperty;\n }\n\n getAstNode(node: AstNode, path: string): T | undefined {\n const segments = path.split(this.segmentSeparator);\n return segments.reduce((previousValue, currentValue) => {\n if (!previousValue || currentValue.length === 0) {\n return previousValue;\n }\n const propertyIndex = currentValue.indexOf(this.indexSeparator);\n if (propertyIndex > 0) {\n const property = currentValue.substring(0, propertyIndex);\n const arrayIndex = parseInt(currentValue.substring(propertyIndex + 1));\n const array = (previousValue as unknown as Record)[property];\n return array?.[arrayIndex];\n }\n return (previousValue as unknown as Record)[currentValue];\n }, node) as T;\n }\n\n}\n", "/******************************************************************************\n * Copyright 2024 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\n// eslint-disable-next-line no-restricted-imports\nexport * from 'vscode-jsonrpc/lib/common/events.js';\n", "/******************************************************************************\n * Copyright 2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { Emitter } from '../utils/event.js';\nimport type {\n ConfigurationItem,\n DidChangeConfigurationParams,\n DidChangeConfigurationRegistrationOptions,\n Disposable,\n Event,\n InitializeParams,\n InitializedParams\n} from 'vscode-languageserver-protocol';\nimport type { ServiceRegistry } from '../service-registry.js';\nimport type { LangiumSharedCoreServices } from '../services.js';\nimport { Deferred } from '../utils/promise-utils.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface ConfigurationProvider {\n\n /**\n * A promise that resolves when the configuration provider is ready to be used.\n */\n readonly ready: Promise;\n\n /**\n * When used in a language server context, this method is called when the server receives\n * the `initialize` request.\n */\n initialize(params: InitializeParams): void;\n\n /**\n * When used in a language server context, this method is called when the server receives\n * the `initialized` notification.\n */\n initialized(params: ConfigurationInitializedParams): Promise;\n\n /**\n * Returns a configuration value stored for the given language.\n *\n * @param language The language id\n * @param configuration Configuration name\n */\n getConfiguration(language: string, configuration: string): Promise;\n\n /**\n * Updates the cached configurations using the `change` notification parameters.\n *\n * @param change The parameters of a change configuration notification.\n * `settings` property of the change object could be expressed as `Record>`\n */\n updateConfiguration(change: DidChangeConfigurationParams): void;\n\n /**\n * Get notified after a configuration section has been updated.\n */\n onConfigurationSectionUpdate(callback: ConfigurationSectionUpdateListener): Disposable\n}\n\nexport interface ConfigurationInitializedParams extends InitializedParams {\n register?: (params: DidChangeConfigurationRegistrationOptions) => void,\n fetchConfiguration?: (configuration: ConfigurationItem[]) => Promise\n}\n\nexport interface ConfigurationSectionUpdate {\n /**\n * The name of the configuration section that has been updated.\n */\n section: string;\n\n /**\n * The updated configuration section.\n */\n configuration: any;\n}\n\nexport type ConfigurationSectionUpdateListener = (update: ConfigurationSectionUpdate) => void;\n\n/**\n * Base configuration provider for building up other configuration providers\n */\nexport class DefaultConfigurationProvider implements ConfigurationProvider {\n\n protected readonly serviceRegistry: ServiceRegistry;\n protected readonly _ready = new Deferred();\n protected readonly onConfigurationSectionUpdateEmitter = new Emitter();\n protected settings: Record> = {};\n protected workspaceConfig = false;\n\n constructor(services: LangiumSharedCoreServices) {\n this.serviceRegistry = services.ServiceRegistry;\n }\n\n get ready(): Promise {\n return this._ready.promise;\n }\n\n initialize(params: InitializeParams): void {\n this.workspaceConfig = params.capabilities.workspace?.configuration ?? false;\n }\n\n async initialized(params: ConfigurationInitializedParams): Promise {\n if (this.workspaceConfig) {\n if (params.register) {\n // params.register(...) is a function to be provided by the calling language server for the sake of\n // decoupling this implementation from the concrete LSP implementations, specifically the LSP Connection\n\n const languages = this.serviceRegistry.all;\n params.register({\n // Listen to configuration changes for all languages\n section: languages.map(lang => this.toSectionName(lang.LanguageMetaData.languageId))\n });\n }\n\n if (params.fetchConfiguration) {\n // params.fetchConfiguration(...) is a function to be provided by the calling language server for the sake of\n // decoupling this implementation from the concrete LSP implementations, specifically the LSP Connection\n const configToUpdate = this.serviceRegistry.all.map(lang => {\n // Fetch the configuration changes for all languages\n section: this.toSectionName(lang.LanguageMetaData.languageId)\n });\n\n // get workspace configurations (default scope URI)\n const configs = await params.fetchConfiguration(configToUpdate);\n configToUpdate.forEach((conf, idx) => {\n this.updateSectionConfiguration(conf.section!, configs[idx]);\n });\n }\n }\n this._ready.resolve();\n }\n\n /**\n * Updates the cached configurations using the `change` notification parameters.\n *\n * @param change The parameters of a change configuration notification.\n * `settings` property of the change object could be expressed as `Record>`\n */\n updateConfiguration(change: DidChangeConfigurationParams): void {\n if (typeof change.settings !== 'object' || change.settings === null) {\n return;\n }\n Object.entries(change.settings).forEach(([section, configuration]) => {\n this.updateSectionConfiguration(section, configuration);\n this.onConfigurationSectionUpdateEmitter.fire({ section, configuration });\n });\n }\n\n protected updateSectionConfiguration(section: string, configuration: any): void {\n this.settings[section] = configuration;\n }\n\n /**\n * Returns a configuration value stored for the given language.\n *\n * @param language The language id\n * @param configuration Configuration name\n */\n async getConfiguration(language: string, configuration: string): Promise {\n await this.ready;\n\n const sectionName = this.toSectionName(language);\n if (this.settings[sectionName]) {\n return this.settings[sectionName][configuration];\n }\n }\n\n protected toSectionName(languageId: string): string {\n return `${languageId}`;\n }\n\n get onConfigurationSectionUpdate(): Event {\n return this.onConfigurationSectionUpdateEmitter.event;\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { LSPErrorCodes, ResponseError } from 'vscode-languageserver-protocol';\nimport { CancellationToken } from '../utils/cancellation.js';\nimport { Disposable } from '../utils/disposable.js';\nimport type { ServiceRegistry } from '../service-registry.js';\nimport type { LangiumSharedCoreServices } from '../services.js';\nimport type { AstNode } from '../syntax-tree.js';\nimport type { MaybePromise } from '../utils/promise-utils.js';\nimport type { Deferred } from '../utils/promise-utils.js';\nimport type { ValidationOptions } from '../validation/document-validator.js';\nimport type { IndexManager } from '../workspace/index-manager.js';\nimport type { LangiumDocument, LangiumDocuments, LangiumDocumentFactory, TextDocumentProvider } from './documents.js';\nimport { MultiMap } from '../utils/collections.js';\nimport { OperationCancelled, interruptAndCheck, isOperationCancelled } from '../utils/promise-utils.js';\nimport { stream } from '../utils/stream.js';\nimport { UriUtils, type URI } from '../utils/uri-utils.js';\nimport type { ValidationCategory } from '../validation/validation-registry.js';\nimport { DocumentState } from './documents.js';\nimport type { FileSystemProvider } from './file-system-provider.js';\nimport type { WorkspaceManager } from './workspace-manager.js';\n\nexport interface BuildOptions {\n /**\n * Control the linking and references indexing phase with this option. The default if not specified is `true`.\n * If set to `false`, references can still be resolved - that's done lazily when you access the `ref` property of\n * a reference. But you won't get any diagnostics for linking errors and the references won't be considered\n * when updating other documents.\n */\n eagerLinking?: boolean\n\n /**\n * Control the validation phase with this option:\n * - `true` enables all validation checks and forces revalidating the documents\n * In order to include additional, custom validation categories, override `DefaultDocumentBuilder.getAllValidationCategories(...)`.\n * - `false` or `undefined` disables all validation checks\n * - An object runs only the necessary validation checks; the `categories` property restricts this to a specific subset (which might include custom categories as well).\n */\n validation?: boolean | ValidationOptions\n}\n\nexport interface DocumentBuildState {\n /** Whether a document has completed its last build process. */\n completed: boolean\n /** The options used for the last build process. */\n options: BuildOptions\n /** Additional information about the last build result. */\n result?: {\n validationChecks?: ValidationCategory[]\n }\n}\n\n/**\n * Shared-service for building and updating `LangiumDocument`s.\n */\nexport interface DocumentBuilder {\n\n /** The options used for rebuilding documents after an update. */\n updateBuildOptions: BuildOptions;\n\n /**\n * Execute all necessary build steps for the given documents.\n *\n * @param documents Set of documents to be built.\n * @param options Options for the document builder.\n * @param cancelToken Indicates when to cancel the current operation.\n * @throws `OperationCanceled` if a user action occurs during execution\n */\n build(documents: Array>, options?: BuildOptions, cancelToken?: CancellationToken): Promise;\n\n /**\n * This method is called when a document change is detected. It updates the state of all\n * affected documents, including those with references to the changed ones, so they are rebuilt.\n *\n * @param changed URIs of changed or created documents\n * @param deleted URIs of deleted documents\n * @param cancelToken allows to cancel the current operation\n * @throws `OperationCancelled` if cancellation is detected during execution\n */\n update(changed: URI[], deleted: URI[], cancelToken?: CancellationToken): Promise;\n\n /**\n * Notify the given callback when a document update was triggered, but before any document\n * is rebuilt. Listeners to this event should not perform any long-running task.\n */\n onUpdate(callback: DocumentUpdateListener): Disposable;\n\n /**\n * Reset the state of a document to the specified state, removing any derived data as needed.\n *\n * @param document The document to reset.\n * @param state The state to reset the document to.\n */\n resetToState(document: LangiumDocument, state: DocumentState): void;\n\n /**\n * Notify the given callback when a set of documents has been built reaching the specified target state.\n */\n onBuildPhase(targetState: DocumentState, callback: DocumentBuildListener): Disposable;\n\n /**\n * Notify the specified callback when a document has been built reaching the specified target state.\n * Unlike {@link onBuildPhase} the listener is called for every single document.\n *\n * There are two main advantages compared to {@link onBuildPhase}:\n * 1. If the build is cancelled, {@link onDocumentPhase} will still fire for documents that have reached a specific state.\n * Meanwhile, {@link onBuildPhase} won't fire for that state.\n * 2. The {@link DocumentBuilder} ensures that all {@link DocumentPhaseListener} instances are called for a built document.\n * Even if the build is cancelled before those listeners were called.\n */\n onDocumentPhase(targetState: DocumentState, callback: DocumentPhaseListener): Disposable;\n\n /**\n * Wait until the workspace has reached the specified state for all documents.\n *\n * @param state The desired state. The promise won't resolve until all documents have reached this state\n * @param cancelToken Optionally allows to cancel the wait operation, disposing any listeners in the process\n * @throws `OperationCancelled` if cancellation has been requested before the state has been reached\n */\n waitUntil(state: DocumentState, cancelToken?: CancellationToken): Promise;\n\n /**\n * Wait until the document specified by the {@link uri} has reached the specified state.\n *\n * @param state The desired state. The promise won't resolve until the document has reached this state.\n * @param uri The specified URI that points to the document. If the URI does not exist, the promise will resolve once the workspace has reached the specified state.\n * @param cancelToken Optionally allows to cancel the wait operation, disposing any listeners in the process.\n * @return The URI of the document that has reached the desired state, or `undefined` if the document does not exist.\n * @throws `OperationCancelled` if cancellation has been requested before the state has been reached\n */\n waitUntil(state: DocumentState, uri?: URI, cancelToken?: CancellationToken): Promise;\n}\n\nexport type DocumentUpdateListener = (changed: URI[], deleted: URI[]) => void | Promise\nexport type DocumentBuildListener = (built: LangiumDocument[], cancelToken: CancellationToken) => void | Promise\nexport type DocumentPhaseListener = (built: LangiumDocument, cancelToken: CancellationToken) => void | Promise\nexport class DefaultDocumentBuilder implements DocumentBuilder {\n\n updateBuildOptions: BuildOptions = {\n // Default: run only the built-in validation checks and those in the _fast_ category (includes those without category)\n validation: {\n categories: ['built-in', 'fast']\n }\n };\n\n protected readonly langiumDocuments: LangiumDocuments;\n protected readonly langiumDocumentFactory: LangiumDocumentFactory;\n protected readonly textDocuments: TextDocumentProvider | undefined;\n protected readonly indexManager: IndexManager;\n protected readonly fileSystemProvider: FileSystemProvider;\n protected readonly workspaceManager: () => WorkspaceManager;\n protected readonly serviceRegistry: ServiceRegistry;\n\n protected readonly updateListeners: DocumentUpdateListener[] = [];\n protected readonly buildPhaseListeners = new MultiMap();\n protected readonly documentPhaseListeners = new MultiMap();\n protected readonly buildState = new Map();\n protected readonly documentBuildWaiters = new Map>();\n protected currentState = DocumentState.Changed;\n\n constructor(services: LangiumSharedCoreServices) {\n this.langiumDocuments = services.workspace.LangiumDocuments;\n this.langiumDocumentFactory = services.workspace.LangiumDocumentFactory;\n this.textDocuments = services.workspace.TextDocuments;\n this.indexManager = services.workspace.IndexManager;\n this.fileSystemProvider = services.workspace.FileSystemProvider;\n this.workspaceManager = () => services.workspace.WorkspaceManager;\n this.serviceRegistry = services.ServiceRegistry;\n }\n\n async build(documents: Array>, options: BuildOptions = {}, cancelToken = CancellationToken.None): Promise {\n for (const document of documents) {\n const key = document.uri.toString();\n if (document.state === DocumentState.Validated) {\n if (typeof options.validation === 'boolean' && options.validation) {\n // Force re-running all validation checks\n this.resetToState(document, DocumentState.IndexedReferences);\n } else if (typeof options.validation === 'object') {\n // Validation with explicit options was requested for a document that has already been partly validated.\n // In this case, we need to execute only the missing validation categories.\n const categories = this.findMissingValidationCategories(document, options);\n if (categories.length > 0) {\n // Validate this document, since some of the requested validation categories are not executed yet.\n // In all other cases/else-branches, the document is not build at all.\n this.buildState.set(key, {\n completed: false,\n options: {\n validation: {\n categories\n }\n },\n result: this.buildState.get(key)?.result,\n });\n // Reset the state, but keep the existing validation markers of the already completed validation categories.\n document.state = DocumentState.IndexedReferences;\n }\n }\n } else {\n // Default: forget any previous build options\n this.buildState.delete(key);\n }\n }\n this.currentState = DocumentState.Changed;\n await this.emitUpdate(documents.map(e => e.uri), []);\n await this.buildDocuments(documents, options, cancelToken);\n }\n\n async update(changed: URI[], deleted: URI[], cancelToken = CancellationToken.None): Promise {\n this.currentState = DocumentState.Changed;\n // Remove all metadata of documents that are reported as deleted\n const deletedUris: URI[] = [];\n for (const deletedUri of deleted) {\n // Since the deleted URI might point to a directory, we delete all documents within\n const deletedDocs = this.langiumDocuments.deleteDocuments(deletedUri);\n for (const doc of deletedDocs) {\n deletedUris.push(doc.uri);\n this.cleanUpDeleted(doc);\n }\n }\n // Since the changed URI might point to a directory, we need to check all (nested) documents in that directory\n const changedUris = (await Promise.all(changed.map(uri => this.findChangedUris(uri)))).flat();\n // Set the state of all changed documents to `Changed` so they are completely rebuilt\n for (const changedUri of changedUris) {\n let changedDocument = this.langiumDocuments.getDocument(changedUri);\n if (changedDocument === undefined) {\n // We create an unparsed, invalid document.\n // This will be parsed as soon as we reach the first document builder phase.\n // This allows to cancel the parsing process later in case we need it.\n changedDocument = this.langiumDocumentFactory.fromModel({ $type: 'INVALID' }, changedUri);\n changedDocument.state = DocumentState.Changed; // required, since `langiumDocumentFactory.fromModel` marks the new document as `DocumentState.Parsed`\n this.langiumDocuments.addDocument(changedDocument);\n }\n this.resetToState(changedDocument, DocumentState.Changed);\n }\n // Set the state of all documents that should be relinked to `ComputedScopes` (if not already lower)\n const allChangedUris = stream(changedUris).concat(deletedUris).map(uri => uri.toString()).toSet();\n this.langiumDocuments.all\n .filter(doc => !allChangedUris.has(doc.uri.toString()) && this.shouldRelink(doc, allChangedUris))\n .forEach(doc => this.resetToState(doc, DocumentState.ComputedScopes));\n // Notify listeners of the update\n await this.emitUpdate(changedUris, deletedUris);\n // Only allow interrupting the execution after all state changes are done\n await interruptAndCheck(cancelToken);\n\n // Collect and sort all documents that we should rebuild\n const rebuildDocuments = this.sortDocuments(\n this.langiumDocuments.all\n .filter(doc =>\n // This includes those that were reported as changed and those that we selected for relinking\n doc.state < DocumentState.Validated\n // This includes those for which a previous build has been cancelled\n || !this.buildState.get(doc.uri.toString())?.completed\n // `updateBuildOptions` changed between the last build (which is completed) and the current build,\n // leading to incomplete results, e.g. some validation categories are requested, which are not executed during the last build\n || this.resultsAreIncomplete(doc, this.updateBuildOptions)\n )\n .toArray()\n );\n await this.buildDocuments(rebuildDocuments, this.updateBuildOptions, cancelToken);\n }\n\n protected resultsAreIncomplete(document: LangiumDocument, options: BuildOptions | undefined): boolean {\n return this.findMissingValidationCategories(document, options).length >= 1;\n }\n\n protected findMissingValidationCategories(document: LangiumDocument, options: BuildOptions | undefined): ValidationCategory[] {\n const state = this.buildState.get(document.uri.toString());\n const allCategories = this.serviceRegistry.getServices(document.uri).validation.ValidationRegistry.getAllValidationCategories(document);\n const executedCategories = state?.result?.validationChecks ? new Set(state?.result?.validationChecks) : state?.completed ? allCategories : new Set();\n const requestedCategories = (options === undefined || options.validation === true) ? allCategories\n : typeof options.validation === 'object' ? (options.validation.categories ?? allCategories) : [];\n return stream(requestedCategories).filter(requested => !executedCategories.has(requested)).toArray();\n }\n\n protected async findChangedUris(changed: URI): Promise {\n // Most common case is that the document/textDocument at the specified URI has changed\n const document = this.langiumDocuments.getDocument(changed) ?? this.textDocuments?.get(changed);\n if (document) {\n return [changed];\n }\n // If the document doesn't exist yet, we need to check what kind of file has changed\n try {\n const stat = await this.fileSystemProvider.stat(changed);\n if (stat.isDirectory) {\n // If a directory has changed, we need to check all documents in that directory\n const uris = await this.workspaceManager().searchFolder(changed);\n return uris;\n } else if (this.workspaceManager().shouldIncludeEntry(stat)) {\n // Return the changed URI if it's a file that we can handle\n return [changed];\n }\n } catch {\n // If we can't determine the file type, we discard the change\n }\n return [];\n }\n\n protected async emitUpdate(changed: URI[], deleted: URI[]): Promise {\n await Promise.all(this.updateListeners.map(listener => listener(changed, deleted)));\n }\n\n /**\n * Sort the given documents by priority. By default, documents with an open text document are prioritized.\n * This is useful to ensure that visible documents show their diagnostics before all other documents.\n *\n * This improves the responsiveness in large workspaces as users usually don't care about diagnostics\n * in files that are currently not opened in the editor.\n */\n protected sortDocuments(documents: LangiumDocument[]): LangiumDocument[] {\n let left = 0;\n let right = documents.length - 1;\n\n while (left < right) {\n while (left < documents.length && this.hasTextDocument(documents[left])) {\n left++;\n }\n\n while (right >= 0 && !this.hasTextDocument(documents[right])) {\n right--;\n }\n\n if (left < right) {\n [documents[left], documents[right]] = [documents[right], documents[left]];\n }\n }\n\n return documents;\n }\n\n private hasTextDocument(doc: LangiumDocument): boolean {\n return Boolean(this.textDocuments?.get(doc.uri));\n }\n\n /**\n * Check whether the given document should be relinked after changes were found in the given URIs.\n */\n protected shouldRelink(document: LangiumDocument, changedUris: Set): boolean {\n // Relink documents with linking errors -- maybe those references can be resolved now\n if (document.references.some(ref => ref.error !== undefined)) {\n return true;\n }\n // Check whether the document is affected by any of the changed URIs\n return this.indexManager.isAffected(document, changedUris);\n }\n\n onUpdate(callback: DocumentUpdateListener): Disposable {\n this.updateListeners.push(callback);\n return Disposable.create(() => {\n const index = this.updateListeners.indexOf(callback);\n if (index >= 0) {\n this.updateListeners.splice(index, 1);\n }\n });\n }\n\n resetToState(document: LangiumDocument, state: DocumentState): void {\n switch (state) {\n case DocumentState.Changed: {\n // Fall through\n }\n case DocumentState.Parsed:\n this.indexManager.removeContent(document.uri);\n // Fall through\n case DocumentState.IndexedContent:\n document.localSymbols = undefined;\n // Fall through\n case DocumentState.ComputedScopes: {\n const linker = this.serviceRegistry.getServices(document.uri).references.Linker;\n linker.unlink(document);\n // Fall through\n }\n case DocumentState.Linked:\n this.indexManager.removeReferences(document.uri);\n // Fall through\n case DocumentState.IndexedReferences:\n document.diagnostics = undefined;\n this.buildState.delete(document.uri.toString());\n // Fall through\n case DocumentState.Validated:\n // do nothing and keep the buildState\n }\n if (document.state > state) {\n document.state = state;\n }\n }\n\n protected cleanUpDeleted(document: LangiumDocument): void {\n this.buildState.delete(document.uri.toString());\n this.indexManager.remove(document.uri);\n // Since this method `cleanUpDeleted` is not available from outside, the following line is not necessary, since the state is already set before.\n // This line does not hurt and makes the code to be in sync with `resetToState`.\n // If `cleanUpDeleted` is called in custom document builders at some more places, this line becomes necessary.\n document.state = DocumentState.Changed;\n }\n\n /**\n * Build the given documents by stepping through all build phases. If a document's state indicates\n * that a certain build phase is already done, the phase is skipped for that document.\n *\n * @param documents The documents to build.\n * @param options the {@link BuildOptions} to use.\n * @param cancelToken A cancellation token that can be used to cancel the build.\n * @returns A promise that resolves when the build is done.\n */\n protected async buildDocuments(documents: LangiumDocument[], options: BuildOptions, cancelToken: CancellationToken): Promise {\n this.prepareBuild(documents, options);\n // 0. Parse content\n await this.runCancelable(documents, DocumentState.Parsed, cancelToken, doc =>\n this.langiumDocumentFactory.update(doc, cancelToken)\n );\n // 1. Index content: collect the documents' symbols being accessible by other documents\n await this.runCancelable(documents, DocumentState.IndexedContent, cancelToken, doc =>\n this.indexManager.updateContent(doc, cancelToken)\n );\n // 2. Local symbols: collect each documents' symbols being accessible within the document (only)\n await this.runCancelable(documents, DocumentState.ComputedScopes, cancelToken, async doc => {\n const scopeComputation = this.serviceRegistry.getServices(doc.uri).references.ScopeComputation;\n doc.localSymbols = await scopeComputation.collectLocalSymbols(doc, cancelToken);\n });\n // 3. Linking\n const toBeLinked = documents.filter(doc => this.shouldLink(doc));\n await this.runCancelable(toBeLinked, DocumentState.Linked, cancelToken, doc => {\n const linker = this.serviceRegistry.getServices(doc.uri).references.Linker;\n return linker.link(doc, cancelToken);\n });\n // 4. Index references\n await this.runCancelable(toBeLinked, DocumentState.IndexedReferences, cancelToken, doc =>\n this.indexManager.updateReferences(doc, cancelToken)\n );\n // 5. Validation\n const toBeValidated = documents.filter(doc => {\n if (this.shouldValidate(doc)) {\n return true; // the build state is marked as completed after finishing the validation for the current document\n } else {\n this.markAsCompleted(doc); // since the validation is skipped for this document, it is already completed now\n return false;\n }\n });\n await this.runCancelable(toBeValidated, DocumentState.Validated, cancelToken, async doc => {\n await this.validate(doc, cancelToken);\n this.markAsCompleted(doc);\n });\n }\n\n protected markAsCompleted(document: LangiumDocument): void {\n const state = this.buildState.get(document.uri.toString());\n if (state) {\n state.completed = true;\n }\n }\n\n /**\n * Runs prior to beginning the build process to update the {@link DocumentBuildState} for each document\n *\n * @param documents collection of documents to be built\n * @param options the {@link BuildOptions} to use\n */\n protected prepareBuild(documents: LangiumDocument[], options: BuildOptions): void {\n for (const doc of documents) {\n const key = doc.uri.toString();\n const state = this.buildState.get(key);\n if (\n !state // If the document has no previous build state, we set it.\n || state.completed // If it has one, but it's already marked as completed, we overwrite it.\n ) {\n this.buildState.set(key, {\n completed: false,\n options,\n result: state?.result\n });\n } else {\n // If the previous build was not completed, we keep its DocumentState and continue from the DocumentState where it was cancelled,\n // e.g. the previous build options are used, including the previously requested validation categories.\n }\n }\n }\n\n /**\n * Runs a cancelable operation on a set of documents to bring them to a specified {@link DocumentState}.\n *\n * @param documents The array of documents to process.\n * @param targetState The target {@link DocumentState} to bring the documents to.\n * @param cancelToken A token that can be used to cancel the operation.\n * @param callback A function to be called for each document.\n * @returns A promise that resolves when all documents have been processed or the operation is canceled.\n * @throws Will throw `OperationCancelled` if the operation is canceled via a `CancellationToken`.\n */\n protected async runCancelable(documents: LangiumDocument[], targetState: DocumentState, cancelToken: CancellationToken,\n callback: (document: LangiumDocument) => MaybePromise): Promise {\n for (const document of documents) {\n if (document.state < targetState) {\n await interruptAndCheck(cancelToken);\n await callback(document);\n document.state = targetState;\n await this.notifyDocumentPhase(document, targetState, cancelToken);\n }\n }\n\n // Do not use `filtered` here, as that will miss documents that have previously reached the current target state.\n // For example, this happens in case the cancellation triggers between the processing of two documents\n // or files that were picked up during the workspace initialization.\n const targetStateDocs = documents.filter(doc => doc.state === targetState);\n await this.notifyBuildPhase(targetStateDocs, targetState, cancelToken);\n this.currentState = targetState;\n }\n\n onBuildPhase(targetState: DocumentState, callback: DocumentBuildListener): Disposable {\n this.buildPhaseListeners.add(targetState, callback);\n return Disposable.create(() => {\n this.buildPhaseListeners.delete(targetState, callback);\n });\n }\n\n onDocumentPhase(targetState: DocumentState, callback: DocumentPhaseListener): Disposable {\n this.documentPhaseListeners.add(targetState, callback);\n return Disposable.create(() => {\n this.documentPhaseListeners.delete(targetState, callback);\n });\n }\n\n waitUntil(state: DocumentState, cancelToken?: CancellationToken): Promise;\n waitUntil(state: DocumentState, uri?: URI, cancelToken?: CancellationToken): Promise;\n waitUntil(state: DocumentState, uriOrToken?: URI | CancellationToken, cancelToken?: CancellationToken): Promise {\n let uri: URI | undefined = undefined;\n if (uriOrToken && 'path' in uriOrToken) {\n uri = uriOrToken;\n } else {\n cancelToken = uriOrToken;\n }\n cancelToken ??= CancellationToken.None;\n if (uri) {\n return this.awaitDocumentState(state, uri, cancelToken);\n\n } else {\n return this.awaitBuilderState(state, cancelToken);\n }\n }\n\n protected awaitDocumentState(state: DocumentState, uri: URI, cancelToken: CancellationToken): Promise {\n const document = this.langiumDocuments.getDocument(uri);\n if (!document) {\n return Promise.reject(\n new ResponseError(\n LSPErrorCodes.ServerCancelled,\n `No document found for URI: ${uri.toString()}`\n )\n );\n\n } else if (document.state >= state) {\n return Promise.resolve(uri);\n\n } else if (cancelToken.isCancellationRequested) {\n return Promise.reject(OperationCancelled);\n\n } else if (this.currentState >= state && state > document.state) {\n // this would imply that the document has been excluded from linking or validation, for example;\n // this should never occur, the LS need to make sure that the affected document is properly built,\n // alternatively, the build state requirement need to be relaxed.\n return Promise.reject(\n new ResponseError(\n LSPErrorCodes.RequestFailed,\n `Document state of ${uri.toString()} is ${DocumentState[document.state]}, requiring ${DocumentState[state]}, but workspace state is already ${DocumentState[this.currentState]}. Returning undefined.`\n )\n );\n }\n return new Promise((resolve, reject) => {\n const buildDisposable = this.onDocumentPhase(state, (doc) => {\n if (UriUtils.equals(doc.uri, uri)) {\n buildDisposable.dispose();\n cancelDisposable.dispose();\n resolve(doc.uri);\n }\n });\n const cancelDisposable = cancelToken!.onCancellationRequested(() => {\n buildDisposable.dispose();\n cancelDisposable.dispose();\n reject(OperationCancelled);\n });\n });\n }\n\n protected awaitBuilderState(state: DocumentState, cancelToken: CancellationToken): Promise {\n if (this.currentState >= state) {\n return Promise.resolve();\n } else if (cancelToken.isCancellationRequested) {\n return Promise.reject(OperationCancelled);\n }\n return new Promise((resolve, reject) => {\n const buildDisposable = this.onBuildPhase(state, () => {\n buildDisposable.dispose();\n cancelDisposable.dispose();\n resolve();\n });\n const cancelDisposable = cancelToken!.onCancellationRequested(() => {\n buildDisposable.dispose();\n cancelDisposable.dispose();\n reject(OperationCancelled);\n });\n });\n }\n\n protected async notifyDocumentPhase(document: LangiumDocument, state: DocumentState, cancelToken: CancellationToken): Promise {\n const listeners = this.documentPhaseListeners.get(state);\n const listenersCopy = listeners.slice();\n for (const listener of listenersCopy) {\n try {\n await interruptAndCheck(cancelToken);\n await listener(document, cancelToken);\n } catch (err) {\n // Ignore cancellation errors\n // We want to finish the listeners before throwing\n if (!isOperationCancelled(err)) {\n throw err;\n }\n }\n }\n }\n\n protected async notifyBuildPhase(documents: LangiumDocument[], state: DocumentState, cancelToken: CancellationToken): Promise {\n if (documents.length === 0) {\n // Don't notify when no document has been processed\n return;\n }\n const listeners = this.buildPhaseListeners.get(state);\n const listenersCopy = listeners.slice();\n for (const listener of listenersCopy) {\n await interruptAndCheck(cancelToken);\n await listener(documents, cancelToken);\n }\n }\n\n /**\n * Determine whether the given document should be linked during a build. The default\n * implementation checks the `eagerLinking` property of the build options. If it's set to `true`\n * or `undefined`, the document is included in the linking phase. This also affects the\n * references indexing phase, which depends on eager linking.\n */\n protected shouldLink(document: LangiumDocument): boolean {\n return this.getBuildOptions(document).eagerLinking ?? true;\n }\n\n /**\n * Determine whether the given document should be validated during a build. The default\n * implementation checks the `validation` property of the build options. If it's set to `true`\n * or a `ValidationOptions` object, the document is included in the validation phase.\n */\n protected shouldValidate(document: LangiumDocument): boolean {\n return Boolean(this.getBuildOptions(document).validation);\n }\n\n /**\n * Run validation checks on the given document and store the resulting diagnostics in the document.\n * If the document already contains diagnostics, the new ones are added to the list.\n */\n protected async validate(document: LangiumDocument, cancelToken: CancellationToken): Promise {\n const validator = this.serviceRegistry.getServices(document.uri).validation.DocumentValidator;\n const options = this.getBuildOptions(document);\n const validationOptions = typeof options.validation === 'object' ? { ...options.validation } : {};\n validationOptions.categories = this.findMissingValidationCategories(document, options); // execute only not-yet-executed categories\n const diagnostics = await validator.validateDocument(document, validationOptions, cancelToken);\n if (document.diagnostics) {\n document.diagnostics.push(...diagnostics); // keep diagnostics of previously executed categories\n } else {\n document.diagnostics = diagnostics;\n }\n\n // Store information about the executed validation in the build state\n const state = this.buildState.get(document.uri.toString());\n if (state) {\n state.result ??= {};\n if (state.result.validationChecks) {\n state.result.validationChecks = stream(state.result.validationChecks).concat(validationOptions.categories).distinct().toArray();\n } else {\n state.result.validationChecks = [...validationOptions.categories];\n }\n }\n }\n\n protected getBuildOptions(document: LangiumDocument): BuildOptions {\n return this.buildState.get(document.uri.toString())?.options ?? {};\n }\n\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nexport interface Disposable {\n /**\n * Dispose this object.\n */\n dispose(): void;\n}\n\nexport interface AsyncDisposable {\n /**\n * Dispose this object.\n */\n dispose(): Promise;\n}\n\nexport namespace Disposable {\n export function create(callback: () => Promise): AsyncDisposable;\n export function create(callback: () => void): Disposable;\n export function create(callback: () => void | Promise): Disposable | AsyncDisposable {\n return {\n dispose: async () => await callback()\n };\n }\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { ServiceRegistry } from '../service-registry.js';\nimport type { LangiumSharedCoreServices } from '../services.js';\nimport type { AstNode, AstNodeDescription, AstReflection } from '../syntax-tree.js';\nimport { getDocument } from '../utils/ast-utils.js';\nimport { ContextCache } from '../utils/caching.js';\nimport { CancellationToken } from '../utils/cancellation.js';\nimport type { Stream } from '../utils/stream.js';\nimport { stream } from '../utils/stream.js';\nimport type { URI } from '../utils/uri-utils.js';\nimport { UriUtils } from '../utils/uri-utils.js';\nimport type { ReferenceDescription } from './ast-descriptions.js';\nimport type { LangiumDocument, LangiumDocuments } from './documents.js';\n\n/**\n * The index manager is responsible for keeping metadata about symbols and cross-references\n * in the workspace. It is used to look up symbols in the global scope, mostly during linking\n * and completion. This service is shared between all languages of a language server.\n */\nexport interface IndexManager {\n\n /**\n * Remove the specified document URI from the index.\n * Necessary when documents are deleted and not referenceable anymore.\n *\n * @param uri The URI of the document for which index data shall be removed\n */\n remove(uri: URI): void;\n\n /**\n * Remove only the information about the exportable content of a document.\n */\n removeContent(uri: URI): void;\n\n /**\n * Remove only the information about the cross-references of a document.\n */\n removeReferences(uri: URI): void;\n\n /**\n * Update the information about the exportable content of a document inside the index.\n *\n * @param document Document to be updated\n * @param cancelToken Indicates when to cancel the current operation.\n * @throws `OperationCanceled` if a user action occurs during execution\n */\n updateContent(document: LangiumDocument, cancelToken?: CancellationToken): Promise;\n\n /**\n * Update the information about the cross-references of a document inside the index.\n *\n * @param document Document to be updated\n * @param cancelToken Indicates when to cancel the current operation.\n * @throws `OperationCanceled` if a user action occurs during execution\n */\n updateReferences(document: LangiumDocument, cancelToken?: CancellationToken): Promise;\n\n /**\n * Determine whether the given document could be affected by changes of the documents\n * identified by the given URIs (second parameter). The document is typically regarded as\n * affected if it contains a reference to any of the changed files.\n *\n * @param document Document to check whether it's affected\n * @param changedUris URIs of the changed documents\n */\n isAffected(document: LangiumDocument, changedUris: Set): boolean;\n\n /**\n * Compute a list of all exported elements, optionally filtered using a type identifier and document URIs.\n *\n * @param nodeType The type to filter with, or `undefined` to return descriptions of all types.\n * @param uris If specified, only returns elements from the given URIs.\n * @returns a `Stream` containing all globally visible nodes (of a given type).\n */\n allElements(nodeType?: string, uris?: Set): Stream;\n\n /**\n * Returns all known references that are pointing to the given `targetNode`.\n *\n * @param targetNode the `AstNode` to look up references for\n * @param astNodePath the path that points to the `targetNode` inside the document. See also `AstNodeLocator`\n *\n * @returns a `Stream` of references that are targeting the `targetNode`\n */\n findAllReferences(targetNode: AstNode, astNodePath: string): Stream;\n\n}\n\nexport class DefaultIndexManager implements IndexManager {\n\n protected readonly serviceRegistry: ServiceRegistry;\n protected readonly documents: LangiumDocuments;\n protected readonly astReflection: AstReflection;\n\n /**\n * The symbol index stores all `AstNodeDescription` items exported by a document.\n * The key used in this map is the string representation of the specific document URI.\n */\n protected readonly symbolIndex = new Map();\n /**\n * This is a cache for the `allElements()` method.\n * It caches the descriptions from `symbolIndex` grouped by types.\n */\n protected readonly symbolByTypeIndex = new ContextCache();\n /**\n * This index keeps track of all `ReferenceDescription` items exported by a document.\n * This is used to compute which elements are affected by a document change\n * and for finding references to an AST node.\n */\n protected readonly referenceIndex = new Map();\n\n constructor(services: LangiumSharedCoreServices) {\n this.documents = services.workspace.LangiumDocuments;\n this.serviceRegistry = services.ServiceRegistry;\n this.astReflection = services.AstReflection;\n }\n\n findAllReferences(targetNode: AstNode, astNodePath: string): Stream {\n const targetDocUri = getDocument(targetNode).uri;\n const result: ReferenceDescription[] = [];\n this.referenceIndex.forEach(docRefs => {\n docRefs.forEach(refDescr => {\n if (UriUtils.equals(refDescr.targetUri, targetDocUri) && refDescr.targetPath === astNodePath) {\n result.push(refDescr);\n }\n });\n });\n return stream(result);\n }\n\n allElements(nodeType?: string, uris?: Set): Stream {\n let documentUris = stream(this.symbolIndex.keys());\n if (uris) {\n documentUris = documentUris.filter(uri => !uris || uris.has(uri));\n }\n return documentUris\n .map(uri => this.getFileDescriptions(uri, nodeType))\n .flat();\n }\n\n protected getFileDescriptions(uri: string, nodeType?: string): AstNodeDescription[] {\n if (!nodeType) {\n return this.symbolIndex.get(uri) ?? [];\n }\n const descriptions = this.symbolByTypeIndex.get(uri, nodeType, () => {\n const allFileDescriptions = this.symbolIndex.get(uri) ?? [];\n return allFileDescriptions.filter(e => this.astReflection.isSubtype(e.type, nodeType));\n });\n return descriptions;\n }\n\n remove(uri: URI): void {\n this.removeContent(uri);\n this.removeReferences(uri);\n }\n\n removeContent(uri: URI): void {\n const uriString = uri.toString();\n this.symbolIndex.delete(uriString);\n this.symbolByTypeIndex.clear(uriString);\n }\n\n removeReferences(uri: URI): void {\n const uriString = uri.toString();\n this.referenceIndex.delete(uriString);\n }\n\n async updateContent(document: LangiumDocument, cancelToken = CancellationToken.None): Promise {\n const services = this.serviceRegistry.getServices(document.uri);\n const exports = await services.references.ScopeComputation.collectExportedSymbols(document, cancelToken);\n const uri = document.uri.toString();\n this.symbolIndex.set(uri, exports);\n this.symbolByTypeIndex.clear(uri);\n }\n\n async updateReferences(document: LangiumDocument, cancelToken = CancellationToken.None): Promise {\n const services = this.serviceRegistry.getServices(document.uri);\n const indexData = await services.workspace.ReferenceDescriptionProvider.createDescriptions(document, cancelToken);\n this.referenceIndex.set(document.uri.toString(), indexData);\n }\n\n isAffected(document: LangiumDocument, changedUris: Set): boolean {\n const references = this.referenceIndex.get(document.uri.toString());\n if (!references) {\n return false;\n }\n return references.some(ref => !ref.local && changedUris.has(ref.targetUri.toString()));\n }\n\n}\n", "/******************************************************************************\n * Copyright 2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { InitializeParams, InitializedParams } from 'vscode-languageserver-protocol';\nimport type { WorkspaceFolder } from 'vscode-languageserver-types';\nimport type { ServiceRegistry } from '../service-registry.js';\nimport type { LangiumSharedCoreServices } from '../services.js';\nimport { CancellationToken } from '../utils/cancellation.js';\nimport { Deferred, interruptAndCheck } from '../utils/promise-utils.js';\nimport { URI, UriUtils } from '../utils/uri-utils.js';\nimport type { BuildOptions, DocumentBuilder } from './document-builder.js';\nimport type { LangiumDocument, LangiumDocuments } from './documents.js';\nimport type { FileSystemNode, FileSystemProvider } from './file-system-provider.js';\nimport type { WorkspaceLock } from './workspace-lock.js';\nimport { stream, type Stream } from '../utils/stream.js';\n// export type WorkspaceFolder from 'vscode-languageserver-types' for convenience,\n// is supposed to avoid confusion as 'WorkspaceFolder' might accidentally be imported via 'vscode-languageclient'\nexport type { WorkspaceFolder };\n\n/**\n * The workspace manager is responsible for finding source files in the workspace.\n * This service is shared between all languages of a language server.\n */\nexport interface WorkspaceManager {\n\n /** The options used for the initial workspace build. */\n initialBuildOptions: BuildOptions | undefined;\n\n /**\n * A promise that resolves when the workspace manager is ready to be used.\n * Use this to ensure that the workspace manager has finished its initialization.\n */\n readonly ready: Promise;\n\n /**\n * The workspace folders of the current workspace.\n * Available only after the `ready` promise resolves.\n */\n get workspaceFolders(): readonly WorkspaceFolder[] | undefined;\n\n /**\n * When used in a language server context, this method is called when the server receives\n * the `initialize` request.\n */\n initialize(params: InitializeParams): void;\n\n /**\n * When used in a language server context, this method is called when the server receives\n * the `initialized` notification.\n */\n initialized(params: InitializedParams): Promise;\n\n /**\n * Does the initial indexing of workspace folders.\n * Collects information about exported and referenced AstNodes in\n * each language file and stores it locally.\n *\n * @param folders The set of workspace folders to be indexed.\n * @param cancelToken A cancellation token that can be used to cancel the operation.\n *\n * @throws OperationCancelled if a cancellation event has been detected\n */\n initializeWorkspace(folders: WorkspaceFolder[], cancelToken?: CancellationToken): Promise;\n\n /**\n * Searches for workspace files in the given folder and its subdirectories.\n * Note that this method does not create documents for the found files.\n * @param uri The URI of the folder to search in.\n * @returns A promise that resolves to an array of URIs of the found files.\n */\n searchFolder(uri: URI): Promise;\n\n /**\n * Determine whether the given file system node shall be included in the workspace.\n * @param entry The file system node to check.\n * @returns `true` if the entry shall be included, `false` otherwise.\n */\n shouldIncludeEntry(entry: FileSystemNode): boolean;\n\n}\n/**\n * The FileSelector provides file names and extensions used by this extension.\n */\nexport interface FileSelector {\n /** Allowed file extensions (e.g., [\"ts\", \"js\"]). */\n fileExtensions: string[];\n /** Allowed file names (e.g., [\"config\", \"settings\"]). */\n fileNames: string[];\n}\n\nexport class DefaultWorkspaceManager implements WorkspaceManager {\n\n initialBuildOptions: BuildOptions = {};\n\n protected readonly serviceRegistry: ServiceRegistry;\n protected readonly langiumDocuments: LangiumDocuments;\n protected readonly documentBuilder: DocumentBuilder;\n protected readonly fileSystemProvider: FileSystemProvider;\n protected readonly mutex: WorkspaceLock;\n protected readonly _ready = new Deferred();\n protected folders?: WorkspaceFolder[];\n\n constructor(services: LangiumSharedCoreServices) {\n this.serviceRegistry = services.ServiceRegistry;\n this.langiumDocuments = services.workspace.LangiumDocuments;\n this.documentBuilder = services.workspace.DocumentBuilder;\n this.fileSystemProvider = services.workspace.FileSystemProvider;\n this.mutex = services.workspace.WorkspaceLock;\n }\n\n get ready(): Promise {\n return this._ready.promise;\n }\n\n get workspaceFolders(): readonly WorkspaceFolder[] | undefined {\n return this.folders;\n }\n\n initialize(params: InitializeParams): void {\n this.folders = params.workspaceFolders ?? undefined;\n }\n\n initialized(_params: InitializedParams): Promise {\n // Initialize the workspace even if there are no workspace folders\n // We still want to load additional documents (language library or similar) during initialization\n return this.mutex.write(token => this.initializeWorkspace(this.folders ?? [], token));\n }\n\n async initializeWorkspace(folders: WorkspaceFolder[], cancelToken = CancellationToken.None): Promise {\n const documents = await this.performStartup(folders);\n // Only after creating all documents do we check whether we need to cancel the initialization\n // The document builder will later pick up on all unprocessed documents\n await interruptAndCheck(cancelToken);\n await this.documentBuilder.build(documents, this.initialBuildOptions, cancelToken);\n }\n\n /**\n * Performs the uninterruptable startup sequence of the workspace manager.\n * This methods loads all documents in the workspace and other documents and returns them.\n */\n protected async performStartup(folders: WorkspaceFolder[]): Promise {\n const documents: LangiumDocument[] = [];\n const collector = (document: LangiumDocument) => {\n documents.push(document);\n if (!this.langiumDocuments.hasDocument(document.uri)) {\n this.langiumDocuments.addDocument(document);\n }\n };\n // Even though we don't await the initialization of the workspace manager,\n // we can still assume that all library documents and file documents are loaded by the time we start building documents.\n // The mutex prevents anything from performing a workspace build until we check the cancellation token\n await this.loadAdditionalDocuments(folders, collector);\n const uris: URI[] = [];\n await Promise.all(\n folders.map(wf => this.getRootFolder(wf))\n .map(async entry => this.traverseFolder(entry, uris))\n );\n const uniqueUris = stream(uris)\n // Ensure that we only create one document per URI/file\n .distinct(uri => uri.toString())\n // Also ensure that the documents don't already exist\n .filter(uri => !this.langiumDocuments.hasDocument(uri));\n await this.loadWorkspaceDocuments(uniqueUris, collector);\n this._ready.resolve();\n return documents;\n }\n\n protected async loadWorkspaceDocuments(uris: Stream, collector: (document: LangiumDocument) => void): Promise {\n await Promise.all(uris.map(async uri => {\n const document = await this.langiumDocuments.getOrCreateDocument(uri);\n collector(document);\n }));\n }\n\n /**\n * Load all additional documents that shall be visible in the context of the given workspace\n * folders and add them to the collector. This can be used to include built-in libraries of\n * your language, which can be either loaded from provided files or constructed in memory.\n */\n protected loadAdditionalDocuments(_folders: WorkspaceFolder[], _collector: (document: LangiumDocument) => void): Promise {\n return Promise.resolve();\n }\n\n /**\n * Determine the root folder of the source documents in the given workspace folder.\n * The default implementation returns the URI of the workspace folder, but you can override\n * this to return a subfolder like `src` instead.\n */\n protected getRootFolder(workspaceFolder: WorkspaceFolder): URI {\n return URI.parse(workspaceFolder.uri);\n }\n\n /**\n * Traverse the file system folder identified by the given URI and its subfolders. All\n * contained files that match the file extensions are added to the `uris` array.\n */\n protected async traverseFolder(folderPath: URI, uris: URI[]): Promise {\n try {\n const content = await this.fileSystemProvider.readDirectory(folderPath);\n await Promise.all(content.map(async entry => {\n if (this.shouldIncludeEntry(entry)) {\n if (entry.isDirectory) {\n await this.traverseFolder(entry.uri, uris);\n } else if (entry.isFile) {\n uris.push(entry.uri);\n }\n }\n }));\n } catch (e) {\n console.error('Failure to read directory content of ' + folderPath.toString(true), e);\n }\n }\n\n async searchFolder(uri: URI): Promise {\n const uris: URI[] = [];\n await this.traverseFolder(uri, uris);\n return uris;\n }\n\n /**\n * Determine whether the given folder entry shall be included while indexing the workspace.\n */\n shouldIncludeEntry(entry: FileSystemNode): boolean {\n const name = UriUtils.basename(entry.uri);\n if (name.startsWith('.')) {\n return false;\n }\n if (entry.isDirectory) {\n return name !== 'node_modules' && name !== 'out';\n } else if (entry.isFile) {\n return this.serviceRegistry.hasServices(entry.uri);\n }\n return false;\n }\n\n}\n", "/******************************************************************************\n * Copyright 2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { ILexerErrorMessageProvider, ILexingError, IMultiModeLexerDefinition, IToken, TokenType, TokenTypeDictionary, TokenVocabulary } from 'chevrotain';\nimport type { LangiumCoreServices } from '../services.js';\nimport { Lexer as ChevrotainLexer, defaultLexerErrorProvider } from 'chevrotain';\nimport type { LexingReport, TokenBuilder } from './token-builder.js';\n\nexport class DefaultLexerErrorMessageProvider implements ILexerErrorMessageProvider {\n\n buildUnexpectedCharactersMessage(fullText: string, startOffset: number, length: number, line?: number, column?: number): string {\n return defaultLexerErrorProvider.buildUnexpectedCharactersMessage(fullText, startOffset, length, line, column);\n }\n\n buildUnableToPopLexerModeMessage(token: IToken): string {\n return defaultLexerErrorProvider.buildUnableToPopLexerModeMessage(token);\n }\n}\n\nexport interface LexerResult {\n /**\n * A list of all tokens that were lexed from the input.\n *\n * Note that Langium requires the optional properties\n * `startLine`, `startColumn`, `endOffset`, `endLine` and `endColumn` to be set on each token.\n */\n tokens: IToken[];\n /**\n * Contains hidden tokens, usually comments.\n */\n hidden: IToken[];\n errors: ILexingError[];\n report?: LexingReport;\n}\n\nexport type TokenizeMode = 'full' | 'partial';\n\nexport interface TokenizeOptions {\n mode?: TokenizeMode;\n}\n\nexport const DEFAULT_TOKENIZE_OPTIONS: TokenizeOptions = { mode: 'full' };\n\nexport interface Lexer {\n readonly definition: TokenTypeDictionary;\n tokenize(text: string, options?: TokenizeOptions): LexerResult;\n}\n\nexport class DefaultLexer implements Lexer {\n\n protected readonly tokenBuilder: TokenBuilder;\n protected readonly errorMessageProvider: ILexerErrorMessageProvider;\n protected tokenTypes: TokenTypeDictionary;\n protected chevrotainLexer: ChevrotainLexer;\n\n constructor(services: LangiumCoreServices) {\n this.errorMessageProvider = services.parser.LexerErrorMessageProvider;\n this.tokenBuilder = services.parser.TokenBuilder;\n const tokens = this.tokenBuilder.buildTokens(services.Grammar, {\n caseInsensitive: services.LanguageMetaData.caseInsensitive\n });\n this.tokenTypes = this.toTokenTypeDictionary(tokens);\n const lexerTokens = isTokenTypeDictionary(tokens) ? Object.values(tokens) : tokens;\n const production = services.LanguageMetaData.mode === 'production';\n this.chevrotainLexer = new ChevrotainLexer(lexerTokens, {\n positionTracking: 'full',\n skipValidations: production,\n errorMessageProvider: this.errorMessageProvider\n });\n }\n\n get definition(): TokenTypeDictionary {\n return this.tokenTypes;\n }\n\n tokenize(text: string, _options: TokenizeOptions = DEFAULT_TOKENIZE_OPTIONS): LexerResult {\n const chevrotainResult = this.chevrotainLexer.tokenize(text);\n return {\n tokens: chevrotainResult.tokens,\n errors: chevrotainResult.errors,\n hidden: chevrotainResult.groups.hidden ?? [],\n report: this.tokenBuilder.flushLexingReport?.(text)\n };\n }\n\n protected toTokenTypeDictionary(buildTokens: TokenVocabulary): TokenTypeDictionary {\n if (isTokenTypeDictionary(buildTokens)) return buildTokens;\n const tokens = isIMultiModeLexerDefinition(buildTokens) ? Object.values(buildTokens.modes).flat() : buildTokens;\n const res: TokenTypeDictionary = {};\n tokens.forEach(token => res[token.name] = token);\n return res;\n }\n}\n\n/**\n * Returns a check whether the given TokenVocabulary is TokenType array\n */\nexport function isTokenTypeArray(tokenVocabulary: TokenVocabulary): tokenVocabulary is TokenType[] {\n return Array.isArray(tokenVocabulary) && (tokenVocabulary.length === 0 || 'name' in tokenVocabulary[0]);\n}\n\n/**\n * Returns a check whether the given TokenVocabulary is IMultiModeLexerDefinition\n */\nexport function isIMultiModeLexerDefinition(tokenVocabulary: TokenVocabulary): tokenVocabulary is IMultiModeLexerDefinition {\n return tokenVocabulary && 'modes' in tokenVocabulary && 'defaultMode' in tokenVocabulary;\n}\n\n/**\n * Returns a check whether the given TokenVocabulary is TokenTypeDictionary\n */\nexport function isTokenTypeDictionary(tokenVocabulary: TokenVocabulary): tokenVocabulary is TokenTypeDictionary {\n return !isTokenTypeArray(tokenVocabulary) && !isIMultiModeLexerDefinition(tokenVocabulary);\n}\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { Position, Range } from 'vscode-languageserver-types';\nimport type { CstNode } from '../syntax-tree.js';\nimport { NEWLINE_REGEXP, escapeRegExp } from '../utils/regexp-utils.js';\nimport { URI } from '../utils/uri-utils.js';\n\nexport interface JSDocComment extends JSDocValue {\n readonly elements: JSDocElement[]\n getTag(name: string): JSDocTag | undefined\n getTags(name: string): JSDocTag[]\n}\n\nexport type JSDocElement = JSDocParagraph | JSDocTag;\n\nexport type JSDocInline = JSDocTag | JSDocLine;\n\nexport interface JSDocValue {\n /**\n * Represents the range that this JSDoc element occupies.\n * If the JSDoc was parsed from a `CstNode`, the range will represent the location in the source document.\n */\n readonly range: Range\n /**\n * Renders this JSDoc element to a plain text representation.\n */\n toString(): string\n /**\n * Renders this JSDoc element to a markdown representation.\n *\n * @param options Rendering options to customize the markdown result.\n */\n toMarkdown(options?: JSDocRenderOptions): string\n}\n\nexport interface JSDocParagraph extends JSDocValue {\n readonly inlines: JSDocInline[]\n}\n\nexport interface JSDocLine extends JSDocValue {\n readonly text: string\n}\n\nexport interface JSDocTag extends JSDocValue {\n readonly name: string\n readonly content: JSDocParagraph\n readonly inline: boolean\n}\n\nexport interface JSDocParseOptions {\n /**\n * The start symbol of your comment format. Defaults to `/**`.\n */\n readonly start?: RegExp | string\n /**\n * The symbol that start a line of your comment format. Defaults to `*`.\n */\n readonly line?: RegExp | string\n /**\n * The end symbol of your comment format. Defaults to `*\\/`.\n */\n readonly end?: RegExp | string\n}\n\nexport interface JSDocRenderOptions {\n /**\n * Determines the style for rendering tags. Defaults to `italic`.\n */\n tag?: 'plain' | 'italic' | 'bold' | 'bold-italic'\n /**\n * Determines the default for rendering `@link` tags. Defaults to `plain`.\n */\n link?: 'code' | 'plain'\n /**\n * Custom tag rendering function.\n * Return a markdown formatted tag or `undefined` to fall back to the default rendering.\n */\n renderTag?(tag: JSDocTag): string | undefined\n /**\n * Custom link rendering function. Accepts a link target and a display value for the link.\n * Return a markdown formatted link with the format `[$display]($link)` or `undefined` if the link is not a valid target.\n */\n renderLink?(link: string, display: string): string | undefined\n}\n\n/**\n * Parses a JSDoc from a `CstNode` containing a comment.\n *\n * @param node A `CstNode` from a parsed Langium document.\n * @param options Parsing options specialized to your language. See {@link JSDocParseOptions}.\n */\nexport function parseJSDoc(node: CstNode, options?: JSDocParseOptions): JSDocComment;\n/**\n * Parses a JSDoc from a string comment.\n *\n * @param content A string containing the source of the JSDoc comment.\n * @param start The start position the comment occupies in the source document.\n * @param options Parsing options specialized to your language. See {@link JSDocParseOptions}.\n */\nexport function parseJSDoc(content: string, start?: Position, options?: JSDocParseOptions): JSDocComment;\nexport function parseJSDoc(node: CstNode | string, start?: Position | JSDocParseOptions, options?: JSDocParseOptions): JSDocComment {\n let opts: JSDocParseOptions | undefined;\n let position: Position | undefined;\n if (typeof node === 'string') {\n position = start as Position | undefined;\n opts = options as JSDocParseOptions | undefined;\n } else {\n position = node.range.start;\n opts = start as JSDocParseOptions | undefined;\n }\n if (!position) {\n position = Position.create(0, 0);\n }\n\n const lines = getLines(node);\n const normalizedOptions = normalizeOptions(opts);\n\n const tokens = tokenize({\n lines,\n position,\n options: normalizedOptions\n });\n\n return parseJSDocComment({\n index: 0,\n tokens,\n position\n });\n}\n\nexport function isJSDoc(node: CstNode | string, options?: JSDocParseOptions): boolean {\n const normalizedOptions = normalizeOptions(options);\n const lines = getLines(node);\n if (lines.length === 0) {\n return false;\n }\n\n const first = lines[0];\n const last = lines[lines.length - 1];\n const firstRegex = normalizedOptions.start;\n const lastRegex = normalizedOptions.end;\n\n return Boolean(firstRegex?.exec(first)) && Boolean(lastRegex?.exec(last));\n}\n\nfunction getLines(node: CstNode | string): string[] {\n let content = '';\n if (typeof node === 'string') {\n content = node;\n } else {\n content = node.text;\n }\n const lines = content.split(NEWLINE_REGEXP);\n return lines;\n}\n\n// Tokenization\n\ninterface JSDocToken {\n type: 'text' | 'tag' | 'inline-tag' | 'break'\n content: string\n range: Range\n}\n\nconst tagRegex = /\\s*(@([\\p{L}][\\p{L}\\p{N}]*)?)/uy;\nconst inlineTagRegex = /\\{(@[\\p{L}][\\p{L}\\p{N}]*)(\\s*)([^\\r\\n}]+)?\\}/gu;\n\nfunction tokenize(context: TokenizationContext): JSDocToken[] {\n const tokens: JSDocToken[] = [];\n let currentLine = context.position.line;\n let currentCharacter = context.position.character;\n for (let i = 0; i < context.lines.length; i++) {\n const first = i === 0;\n const last = i === context.lines.length - 1;\n let line = context.lines[i];\n let index = 0;\n\n if (first && context.options.start) {\n const match = context.options.start?.exec(line);\n if (match) {\n index = match.index + match[0].length;\n }\n } else {\n const match = context.options.line?.exec(line);\n if (match) {\n index = match.index + match[0].length;\n }\n }\n if (last) {\n const match = context.options.end?.exec(line);\n if (match) {\n line = line.substring(0, match.index);\n }\n }\n\n line = line.substring(0, lastCharacter(line));\n const whitespaceEnd = skipWhitespace(line, index);\n\n if (whitespaceEnd >= line.length) {\n // Only create a break token when we already have previous tokens\n if (tokens.length > 0) {\n const position = Position.create(currentLine, currentCharacter);\n tokens.push({\n type: 'break',\n content: '',\n range: Range.create(position, position)\n });\n }\n } else {\n tagRegex.lastIndex = index;\n const tagMatch = tagRegex.exec(line);\n if (tagMatch) {\n const fullMatch = tagMatch[0];\n const value = tagMatch[1];\n const start = Position.create(currentLine, currentCharacter + index);\n const end = Position.create(currentLine, currentCharacter + index + fullMatch.length);\n tokens.push({\n type: 'tag',\n content: value,\n range: Range.create(start, end)\n });\n index += fullMatch.length;\n index = skipWhitespace(line, index);\n }\n\n if (index < line.length) {\n const rest = line.substring(index);\n const inlineTagMatches = Array.from(rest.matchAll(inlineTagRegex));\n tokens.push(...buildInlineTokens(inlineTagMatches, rest, currentLine, currentCharacter + index));\n }\n }\n\n currentLine++;\n currentCharacter = 0;\n }\n\n // Remove last break token if there is one\n if (tokens.length > 0 && tokens[tokens.length - 1].type === 'break') {\n return tokens.slice(0, -1);\n }\n\n return tokens;\n}\n\nfunction buildInlineTokens(tags: RegExpMatchArray[], line: string, lineIndex: number, characterIndex: number): JSDocToken[] {\n const tokens: JSDocToken[] = [];\n\n if (tags.length === 0) {\n const start = Position.create(lineIndex, characterIndex);\n const end = Position.create(lineIndex, characterIndex + line.length);\n tokens.push({\n type: 'text',\n content: line,\n range: Range.create(start, end)\n });\n } else {\n let lastIndex = 0;\n for (const match of tags) {\n const matchIndex = match.index!;\n const startContent = line.substring(lastIndex, matchIndex);\n if (startContent.length > 0) {\n tokens.push({\n type: 'text',\n content: line.substring(lastIndex, matchIndex),\n range: Range.create(\n Position.create(lineIndex, lastIndex + characterIndex),\n Position.create(lineIndex, matchIndex + characterIndex)\n )\n });\n }\n let offset = startContent.length + 1;\n const tagName = match[1];\n tokens.push({\n type: 'inline-tag',\n content: tagName,\n range: Range.create(\n Position.create(lineIndex, lastIndex + offset + characterIndex),\n Position.create(lineIndex, lastIndex + offset + tagName.length + characterIndex)\n )\n });\n offset += tagName.length;\n if (match.length === 4) {\n offset += match[2].length;\n const value = match[3];\n tokens.push({\n type: 'text',\n content: value,\n range: Range.create(\n Position.create(lineIndex, lastIndex + offset + characterIndex),\n Position.create(lineIndex, lastIndex + offset + value.length + characterIndex)\n )\n });\n } else {\n tokens.push({\n type: 'text',\n content: '',\n range: Range.create(\n Position.create(lineIndex, lastIndex + offset + characterIndex),\n Position.create(lineIndex, lastIndex + offset + characterIndex)\n )\n });\n }\n lastIndex = matchIndex + match[0].length;\n }\n const endContent = line.substring(lastIndex);\n if (endContent.length > 0) {\n tokens.push({\n type: 'text',\n content: endContent,\n range: Range.create(\n Position.create(lineIndex, lastIndex + characterIndex),\n Position.create(lineIndex, lastIndex + characterIndex + endContent.length)\n )\n });\n }\n }\n\n return tokens;\n}\n\nconst nonWhitespaceRegex = /\\S/;\nconst whitespaceEndRegex = /\\s*$/;\n\nfunction skipWhitespace(line: string, index: number): number {\n const match = line.substring(index).match(nonWhitespaceRegex);\n if (match) {\n return index + match.index!;\n } else {\n return line.length;\n }\n}\n\nfunction lastCharacter(line: string): number | undefined {\n const match = line.match(whitespaceEndRegex);\n if (match && typeof match.index === 'number') {\n return match.index;\n }\n return undefined;\n}\n\n// Parsing\n\nfunction parseJSDocComment(context: ParseContext): JSDocComment {\n const startPosition: Position = Position.create(context.position.line, context.position.character);\n if (context.tokens.length === 0) {\n return new JSDocCommentImpl([], Range.create(startPosition, startPosition));\n }\n const elements: JSDocElement[] = [];\n while (context.index < context.tokens.length) {\n const element = parseJSDocElement(context, elements[elements.length - 1]);\n if (element) {\n elements.push(element);\n }\n }\n const start = elements[0]?.range.start ?? startPosition;\n const end = elements[elements.length - 1]?.range.end ?? startPosition;\n return new JSDocCommentImpl(elements, Range.create(start, end));\n}\n\nfunction parseJSDocElement(context: ParseContext, last?: JSDocElement): JSDocElement | undefined {\n const next = context.tokens[context.index];\n if (next.type === 'tag') {\n return parseJSDocTag(context, false);\n } else if (next.type === 'text' || next.type === 'inline-tag') {\n return parseJSDocText(context);\n } else {\n appendEmptyLine(next, last);\n context.index++;\n return undefined;\n }\n}\n\nfunction appendEmptyLine(token: JSDocToken, element?: JSDocElement): void {\n if (element) {\n const line = new JSDocLineImpl('', token.range);\n if ('inlines' in element) {\n element.inlines.push(line);\n } else {\n element.content.inlines.push(line);\n }\n }\n}\n\nfunction parseJSDocText(context: ParseContext): JSDocParagraph {\n let token = context.tokens[context.index];\n const firstToken = token;\n let lastToken = token;\n const lines: JSDocInline[] = [];\n while (token && token.type !== 'break' && token.type !== 'tag') {\n lines.push(parseJSDocInline(context));\n lastToken = token;\n token = context.tokens[context.index];\n }\n return new JSDocTextImpl(lines, Range.create(firstToken.range.start, lastToken.range.end));\n}\n\nfunction parseJSDocInline(context: ParseContext): JSDocInline {\n const token = context.tokens[context.index];\n if (token.type === 'inline-tag') {\n return parseJSDocTag(context, true);\n } else {\n return parseJSDocLine(context);\n }\n}\n\nfunction parseJSDocTag(context: ParseContext, inline: boolean): JSDocTag {\n const tagToken = context.tokens[context.index++];\n const name = tagToken.content.substring(1);\n const nextToken = context.tokens[context.index];\n if (nextToken?.type === 'text') {\n if (inline) {\n const docLine = parseJSDocLine(context);\n return new JSDocTagImpl(\n name,\n new JSDocTextImpl([docLine], docLine.range),\n inline,\n Range.create(tagToken.range.start, docLine.range.end)\n );\n } else {\n const textDoc = parseJSDocText(context);\n return new JSDocTagImpl(\n name,\n textDoc,\n inline,\n Range.create(tagToken.range.start, textDoc.range.end)\n );\n }\n } else {\n const range = tagToken.range;\n return new JSDocTagImpl(name, new JSDocTextImpl([], range), inline, range);\n }\n}\n\nfunction parseJSDocLine(context: ParseContext): JSDocLine {\n const token = context.tokens[context.index++];\n return new JSDocLineImpl(token.content, token.range);\n}\n\ninterface NormalizedOptions {\n start?: RegExp\n end?: RegExp\n line?: RegExp\n}\n\ninterface TokenizationContext {\n position: Position\n lines: string[]\n options: NormalizedOptions\n}\n\ninterface ParseContext {\n position: Position\n tokens: JSDocToken[]\n index: number\n}\n\nfunction normalizeOptions(options?: JSDocParseOptions): NormalizedOptions {\n if (!options) {\n return normalizeOptions({\n start: '/**',\n end: '*/',\n line: '*'\n });\n }\n const { start, end, line } = options;\n return {\n start: normalizeOption(start, true),\n end: normalizeOption(end, false),\n line: normalizeOption(line, true)\n };\n}\n\nfunction normalizeOption(option: RegExp | string | undefined, start: boolean): RegExp | undefined {\n if (typeof option === 'string' || typeof option === 'object') {\n const escaped = typeof option === 'string' ? escapeRegExp(option) : option.source;\n if (start) {\n return new RegExp(`^\\\\s*${escaped}`);\n } else {\n return new RegExp(`\\\\s*${escaped}\\\\s*$`);\n }\n } else {\n return option;\n }\n}\n\nclass JSDocCommentImpl implements JSDocComment {\n\n readonly elements: JSDocElement[];\n readonly range: Range;\n\n constructor(elements: JSDocElement[], range: Range) {\n this.elements = elements;\n this.range = range;\n }\n\n getTag(name: string): JSDocTag | undefined {\n return this.getAllTags().find(e => e.name === name);\n }\n\n getTags(name: string): JSDocTag[] {\n return this.getAllTags().filter(e => e.name === name);\n }\n\n private getAllTags(): JSDocTag[] {\n return this.elements.filter(e => 'name' in e);\n }\n\n toString(): string {\n let value = '';\n for (const element of this.elements) {\n if (value.length === 0) {\n value = element.toString();\n } else {\n const text = element.toString();\n value += fillNewlines(value) + text;\n }\n }\n return value.trim();\n }\n\n toMarkdown(options?: JSDocRenderOptions): string {\n let value = '';\n for (const element of this.elements) {\n if (value.length === 0) {\n value = element.toMarkdown(options);\n } else {\n const text = element.toMarkdown(options);\n value += fillNewlines(value) + text;\n }\n }\n return value.trim();\n }\n}\n\nclass JSDocTagImpl implements JSDocTag {\n name: string;\n content: JSDocParagraph;\n range: Range;\n inline: boolean;\n\n constructor(name: string, content: JSDocParagraph, inline: boolean, range: Range) {\n this.name = name;\n this.content = content;\n this.inline = inline;\n this.range = range;\n }\n\n toString(): string {\n let text = `@${this.name}`;\n const content = this.content.toString();\n if (this.content.inlines.length === 1) {\n text = `${text} ${content}`;\n } else if (this.content.inlines.length > 1) {\n text = `${text}\\n${content}`;\n }\n if (this.inline) {\n // Inline tags are surrounded by curly braces\n return `{${text}}`;\n } else {\n return text;\n }\n }\n\n toMarkdown(options?: JSDocRenderOptions): string {\n return options?.renderTag?.(this) ?? this.toMarkdownDefault(options);\n }\n\n private toMarkdownDefault(options?: JSDocRenderOptions): string {\n const content = this.content.toMarkdown(options);\n if (this.inline) {\n const rendered = renderInlineTag(this.name, content, options ?? {});\n if (typeof rendered === 'string') {\n return rendered;\n }\n }\n let marker = '';\n if (options?.tag === 'italic' || options?.tag === undefined) {\n marker = '*';\n } else if (options?.tag === 'bold') {\n marker = '**';\n } else if (options?.tag === 'bold-italic') {\n marker = '***';\n }\n let text = `${marker}@${this.name}${marker}`;\n if (this.content.inlines.length === 1) {\n text = `${text} \u2014 ${content}`;\n } else if (this.content.inlines.length > 1) {\n text = `${text}\\n${content}`;\n }\n if (this.inline) {\n // Inline tags are surrounded by curly braces\n return `{${text}}`;\n } else {\n return text;\n }\n }\n}\n\nfunction renderInlineTag(tag: string, content: string, options: JSDocRenderOptions): string | undefined {\n if (tag === 'linkplain' || tag === 'linkcode' || tag === 'link') {\n const index = content.indexOf(' ');\n let display = content;\n if (index > 0) {\n const displayStart = skipWhitespace(content, index);\n display = content.substring(displayStart);\n content = content.substring(0, index);\n }\n if (tag === 'linkcode' || (tag === 'link' && options.link === 'code')) {\n // Surround the display value in a markdown inline code block\n display = `\\`${display}\\``;\n }\n const renderedLink = options.renderLink?.(content, display) ?? renderLinkDefault(content, display);\n return renderedLink;\n }\n return undefined;\n}\n\nfunction renderLinkDefault(content: string, display: string): string {\n try {\n URI.parse(content, true);\n return `[${display}](${content})`;\n } catch {\n return content;\n }\n}\n\nclass JSDocTextImpl implements JSDocParagraph {\n inlines: JSDocInline[];\n range: Range;\n\n constructor(lines: JSDocInline[], range: Range) {\n this.inlines = lines;\n this.range = range;\n }\n\n toString(): string {\n let text = '';\n for (let i = 0; i < this.inlines.length; i++) {\n const inline = this.inlines[i];\n const next = this.inlines[i + 1];\n text += inline.toString();\n if (next && next.range.start.line > inline.range.start.line) {\n text += '\\n';\n }\n }\n return text;\n }\n\n toMarkdown(options?: JSDocRenderOptions): string {\n let text = '';\n for (let i = 0; i < this.inlines.length; i++) {\n const inline = this.inlines[i];\n const next = this.inlines[i + 1];\n text += inline.toMarkdown(options);\n if (next && next.range.start.line > inline.range.start.line) {\n text += '\\n';\n }\n }\n return text;\n }\n}\n\nclass JSDocLineImpl implements JSDocLine {\n text: string;\n range: Range;\n\n constructor(text: string, range: Range) {\n this.text = text;\n this.range = range;\n }\n\n toString(): string {\n return this.text;\n }\n toMarkdown(): string {\n return this.text;\n }\n\n}\n\nfunction fillNewlines(text: string): string {\n if (text.endsWith('\\n')) {\n return '\\n';\n } else {\n return '\\n\\n';\n }\n}\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode, AstNodeDescription } from '../syntax-tree.js';\nimport type { IndexManager } from '../workspace/index-manager.js';\nimport type { CommentProvider } from './comment-provider.js';\nimport type { JSDocTag } from './jsdoc.js';\nimport { getDocument } from '../utils/ast-utils.js';\nimport { isJSDoc, parseJSDoc } from './jsdoc.js';\n\n/**\n * Provides documentation for AST nodes.\n */\nexport interface DocumentationProvider {\n /**\n * Returns a markdown documentation string for the specified AST node.\n *\n * The default implementation `JSDocDocumentationProvider` will inspect the comment associated with the specified node.\n */\n getDocumentation(node: AstNode): string | undefined;\n}\n\nexport class JSDocDocumentationProvider implements DocumentationProvider {\n\n protected readonly indexManager: IndexManager;\n protected readonly commentProvider: CommentProvider;\n\n constructor(services: LangiumCoreServices) {\n this.indexManager = services.shared.workspace.IndexManager;\n this.commentProvider = services.documentation.CommentProvider;\n }\n\n getDocumentation(node: AstNode): string | undefined {\n const comment = this.commentProvider.getComment(node);\n if (comment && isJSDoc(comment)) {\n const parsedJSDoc = parseJSDoc(comment);\n return parsedJSDoc.toMarkdown({\n renderLink: (link, display) => {\n return this.documentationLinkRenderer(node, link, display);\n },\n renderTag: (tag) => {\n return this.documentationTagRenderer(node, tag);\n }\n });\n }\n return undefined;\n }\n\n protected documentationLinkRenderer(node: AstNode, name: string, display: string): string | undefined {\n const description = this.findNameInLocalSymbols(node, name) ?? this.findNameInGlobalScope(node, name);\n if (description && description.nameSegment) {\n const line = description.nameSegment.range.start.line + 1;\n const character = description.nameSegment.range.start.character + 1;\n const uri = description.documentUri.with({ fragment: `L${line},${character}` });\n return `[${display}](${uri.toString()})`;\n } else {\n return undefined;\n }\n }\n\n protected documentationTagRenderer(_node: AstNode, _tag: JSDocTag): string | undefined {\n // Fall back to the default tag rendering\n return undefined;\n }\n\n protected findNameInLocalSymbols(node: AstNode, name: string): AstNodeDescription | undefined {\n const document = getDocument(node);\n const precomputed = document.localSymbols;\n if (!precomputed) {\n return undefined;\n }\n let currentNode: AstNode | undefined = node;\n do {\n const allDescriptions = precomputed.getStream(currentNode);\n const description = allDescriptions.find(e => e.name === name);\n if (description) {\n return description;\n }\n currentNode = currentNode.$container;\n } while (currentNode);\n\n return undefined;\n }\n\n protected findNameInGlobalScope(node: AstNode, name: string): AstNodeDescription | undefined {\n const description = this.indexManager.allElements().find(e => e.name === name);\n return description;\n }\n}\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { GrammarConfig } from '../languages/grammar-config.js';\nimport { isAstNodeWithComment } from '../serializer/json-serializer.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode } from '../syntax-tree.js';\nimport { findCommentNode } from '../utils/cst-utils.js';\n\n/**\n * Provides comments for AST nodes.\n */\nexport interface CommentProvider {\n /**\n * Returns the comment associated with the specified AST node.\n * @param node The AST node to get the comment for.\n * @returns The comment associated with the specified AST node or `undefined` if there is no comment.\n */\n getComment(node: AstNode): string | undefined;\n}\n\nexport class DefaultCommentProvider implements CommentProvider {\n protected readonly grammarConfig: () => GrammarConfig;\n constructor(services: LangiumCoreServices) {\n this.grammarConfig = () => services.parser.GrammarConfig;\n }\n getComment(node: AstNode): string | undefined {\n if(isAstNodeWithComment(node)) {\n return node.$comment;\n }\n return findCommentNode(node.$cstNode, this.grammarConfig().multilineCommentRules)?.text;\n }\n}\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { CancellationToken } from '../utils/cancellation.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport type { AstNode } from '../syntax-tree.js';\nimport type { LangiumParser, ParseResult } from './langium-parser.js';\nimport type { Hydrator } from '../serializer/hydrator.js';\nimport type { Event } from '../utils/event.js';\nimport { Deferred, OperationCancelled } from '../utils/promise-utils.js';\nimport { Emitter } from '../utils/event.js';\n\n/**\n * Async parser that allows cancellation of the current parsing process.\n *\n * @remarks\n * The sync parser implementation is blocking the event loop, which can become quite problematic for large files.\n * The default implementation is not actually async. It just wraps the sync parser in a promise. A real implementation would create worker threads or web workers to offload the parsing work.\n */\nexport interface AsyncParser {\n /**\n * Parses the given text and returns the parse result.\n *\n * @param text The text to parse.\n * @param cancelToken A cancellation token that can be used to cancel the parsing process.\n * @returns A promise that resolves to the parse result.\n *\n * @throws `OperationCancelled` if the parsing process is cancelled.\n */\n parse(text: string, cancelToken: CancellationToken): Promise>;\n}\n\n/**\n * Default implementation of the async parser which simply wraps the sync parser in a promise.\n *\n * @remarks\n * A real implementation would create worker threads or web workers to offload the parsing work.\n */\nexport class DefaultAsyncParser implements AsyncParser {\n\n protected readonly syncParser: LangiumParser;\n\n constructor(services: LangiumCoreServices) {\n this.syncParser = services.parser.LangiumParser;\n }\n\n parse(text: string, _cancelToken: CancellationToken): Promise> {\n return Promise.resolve(this.syncParser.parse(text));\n }\n}\n\nexport abstract class AbstractThreadedAsyncParser implements AsyncParser {\n\n /**\n * The thread count determines how many threads are used to parse files in parallel.\n * The default value is 8. Decreasing this value increases startup performance, but decreases parallel parsing performance.\n */\n protected threadCount = 8;\n /**\n * The termination delay determines how long the parser waits for a thread to finish after a cancellation request.\n * The default value is 200(ms).\n */\n protected terminationDelay = 200;\n protected workerPool: ParserWorker[] = [];\n protected queue: Array> = [];\n\n protected readonly hydrator: Hydrator;\n\n constructor(services: LangiumCoreServices) {\n this.hydrator = services.serializer.Hydrator;\n }\n\n protected initializeWorkers(): void {\n while (this.workerPool.length < this.threadCount) {\n const worker = this.createWorker();\n worker.onReady(() => {\n if (this.queue.length > 0) {\n const deferred = this.queue.shift();\n if (deferred) {\n worker.lock();\n deferred.resolve(worker);\n }\n }\n });\n this.workerPool.push(worker);\n }\n }\n\n async parse(text: string, cancelToken: CancellationToken): Promise> {\n const worker = await this.acquireParserWorker(cancelToken);\n const deferred = new Deferred>();\n let timeout: NodeJS.Timeout | undefined;\n // If the cancellation token is requested, we wait for a certain time before terminating the worker.\n // Since the cancellation token lives longer than the parsing process, we need to dispose the event listener.\n // Otherwise, we might accidentally terminate the worker after the parsing process has finished.\n const cancellation = cancelToken.onCancellationRequested(() => {\n timeout = setTimeout(() => {\n this.terminateWorker(worker);\n }, this.terminationDelay);\n });\n worker.parse(text).then(result => {\n const hydrated = this.hydrator.hydrate(result);\n deferred.resolve(hydrated);\n }).catch(err => {\n deferred.reject(err);\n }).finally(() => {\n cancellation.dispose();\n clearTimeout(timeout);\n });\n return deferred.promise;\n }\n\n protected terminateWorker(worker: ParserWorker): void {\n worker.terminate();\n const index = this.workerPool.indexOf(worker);\n if (index >= 0) {\n this.workerPool.splice(index, 1);\n }\n }\n\n protected async acquireParserWorker(cancelToken: CancellationToken): Promise {\n this.initializeWorkers();\n for (const worker of this.workerPool) {\n if (worker.ready) {\n worker.lock();\n return worker;\n }\n }\n const deferred = new Deferred();\n cancelToken.onCancellationRequested(() => {\n const index = this.queue.indexOf(deferred);\n if (index >= 0) {\n this.queue.splice(index, 1);\n }\n deferred.reject(OperationCancelled);\n });\n this.queue.push(deferred);\n return deferred.promise;\n }\n\n protected abstract createWorker(): ParserWorker;\n}\n\nexport type WorkerMessagePost = (message: unknown) => void;\nexport type WorkerMessageCallback = (cb: (message: unknown) => void) => void;\n\nexport class ParserWorker {\n\n protected readonly sendMessage: WorkerMessagePost;\n protected readonly _terminate: () => void;\n protected readonly onReadyEmitter = new Emitter();\n\n protected deferred = new Deferred();\n protected _ready = true;\n protected _parsing = false;\n\n get ready(): boolean {\n return this._ready;\n }\n\n get onReady(): Event {\n return this.onReadyEmitter.event;\n }\n\n constructor(sendMessage: WorkerMessagePost, onMessage: WorkerMessageCallback, onError: WorkerMessageCallback, terminate: () => void) {\n this.sendMessage = sendMessage;\n this._terminate = terminate;\n onMessage(result => {\n const parseResult = result as ParseResult;\n this.deferred.resolve(parseResult);\n this.unlock();\n });\n onError(error => {\n this.deferred.reject(error);\n this.unlock();\n });\n }\n\n terminate(): void {\n this.deferred.reject(OperationCancelled);\n this._terminate();\n }\n\n lock(): void {\n this._ready = false;\n }\n\n unlock(): void {\n this._parsing = false;\n this._ready = true;\n this.onReadyEmitter.fire();\n }\n\n parse(text: string): Promise {\n if (this._parsing) {\n throw new Error('Parser worker is busy');\n }\n this._parsing = true;\n this.deferred = new Deferred();\n this.sendMessage(text);\n return this.deferred.promise;\n }\n}\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { type AbstractCancellationTokenSource, CancellationToken, CancellationTokenSource } from '../utils/cancellation.js';\nimport { Deferred, isOperationCancelled, startCancelableOperation, type MaybePromise } from '../utils/promise-utils.js';\n\n/**\n * Utility service to execute mutually exclusive actions.\n */\nexport interface WorkspaceLock {\n /**\n * Performs a single async action, like initializing the workspace or processing document changes.\n * Only one action will be executed at a time.\n *\n * When another action is queued up, the token provided for the action will be cancelled.\n * Assuming the action makes use of this token, the next action only has to wait for the current action to finish cancellation.\n */\n write(action: (token: CancellationToken) => MaybePromise): Promise;\n\n /**\n * Performs a single action, like computing completion results or providing workspace symbols.\n * Read actions will only be executed after all write actions have finished. They will be executed in parallel if possible.\n *\n * If a write action is currently running, the read action will be queued up and executed afterwards.\n * If a new write action is queued up while a read action is waiting, the write action will receive priority and will be handled before the read action.\n *\n * Note that read actions are not allowed to modify anything in the workspace. Please use {@link write} instead.\n */\n read(action: () => MaybePromise): Promise;\n\n /**\n * Cancels the last queued write action. All previous write actions already have been cancelled.\n */\n cancelWrite(): void;\n}\n\ntype LockAction = (token: CancellationToken) => MaybePromise;\n\ninterface LockEntry {\n action: LockAction;\n deferred: Deferred;\n cancellationToken: CancellationToken;\n}\n\nexport class DefaultWorkspaceLock implements WorkspaceLock {\n\n private previousTokenSource: AbstractCancellationTokenSource = new CancellationTokenSource();\n private writeQueue: LockEntry[] = [];\n private readQueue: LockEntry[] = [];\n private done = true;\n\n write(action: (token: CancellationToken) => MaybePromise): Promise {\n this.cancelWrite();\n const tokenSource = startCancelableOperation();\n this.previousTokenSource = tokenSource;\n return this.enqueue(this.writeQueue, action, tokenSource.token);\n }\n\n read(action: () => MaybePromise): Promise {\n return this.enqueue(this.readQueue, action);\n }\n\n private enqueue(queue: LockEntry[], action: LockAction, cancellationToken = CancellationToken.None): Promise {\n const deferred = new Deferred();\n const entry: LockEntry = {\n action,\n deferred,\n cancellationToken\n };\n queue.push(entry);\n this.performNextOperation();\n return deferred.promise as Promise;\n }\n\n private async performNextOperation(): Promise {\n if (!this.done) {\n return;\n }\n const entries: LockEntry[] = [];\n if (this.writeQueue.length > 0) {\n // Just perform the next write action\n entries.push(this.writeQueue.shift()!);\n } else if (this.readQueue.length > 0) {\n // Empty the read queue and perform all actions in parallel\n entries.push(...this.readQueue.splice(0, this.readQueue.length));\n } else {\n return;\n }\n this.done = false;\n await Promise.all(entries.map(async ({ action, deferred, cancellationToken }) => {\n try {\n // Move the execution of the action to the next event loop tick via `Promise.resolve()`\n const result = await Promise.resolve().then(() => action(cancellationToken));\n deferred.resolve(result);\n } catch (err) {\n if (isOperationCancelled(err)) {\n // If the operation was cancelled, we don't want to reject the promise\n deferred.resolve(undefined);\n } else {\n deferred.reject(err);\n }\n }\n }));\n this.done = true;\n this.performNextOperation();\n }\n\n cancelWrite(): void {\n this.previousTokenSource.cancel();\n }\n}\n", "/******************************************************************************\n * Copyright 2024 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { TokenType } from 'chevrotain';\nimport { CompositeCstNodeImpl, LeafCstNodeImpl, RootCstNodeImpl } from '../parser/cst-node-builder.js';\nimport { isAbstractElement, type AbstractElement, type Grammar } from '../languages/generated/ast.js';\nimport type { Linker } from '../references/linker.js';\nimport type { Lexer } from '../parser/lexer.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport type { ParseResult } from '../parser/langium-parser.js';\nimport type { Reference, AstNode, CstNode, LeafCstNode, GenericAstNode, Mutable, RootCstNode } from '../syntax-tree.js';\nimport { isRootCstNode, isCompositeCstNode, isLeafCstNode, isAstNode, isReference } from '../syntax-tree.js';\nimport { streamAst } from '../utils/ast-utils.js';\nimport { BiMap } from '../utils/collections.js';\nimport { streamCst } from '../utils/cst-utils.js';\nimport type { LexingReport } from '../parser/token-builder.js';\n\n/**\n * The hydrator service is responsible for allowing AST parse results to be sent across worker threads.\n */\nexport interface Hydrator {\n /**\n * Converts a parse result to a plain object. The resulting object can be sent across worker threads.\n */\n dehydrate(result: ParseResult): ParseResult;\n /**\n * Converts a plain object to a parse result. The included AST node can then be used in the main thread.\n * Calling this method on objects that have not been dehydrated first will result in undefined behavior.\n */\n hydrate(result: ParseResult): ParseResult;\n}\n\nexport interface DehydrateContext {\n astNodes: Map;\n cstNodes: Map;\n}\n\nexport interface HydrateContext {\n astNodes: Map;\n cstNodes: Map;\n}\n\nexport class DefaultHydrator implements Hydrator {\n\n protected readonly grammar: Grammar;\n protected readonly lexer: Lexer;\n protected readonly linker: Linker;\n\n protected readonly grammarElementIdMap = new BiMap();\n protected readonly tokenTypeIdMap = new BiMap();\n\n constructor(services: LangiumCoreServices) {\n this.grammar = services.Grammar;\n this.lexer = services.parser.Lexer;\n this.linker = services.references.Linker;\n }\n\n dehydrate(result: ParseResult): ParseResult {\n return {\n lexerErrors: result.lexerErrors,\n lexerReport: result.lexerReport ? this.dehydrateLexerReport(result.lexerReport) : undefined,\n // We need to create shallow copies of the errors\n // The original errors inherit from the `Error` class, which is not transferable across worker threads\n parserErrors: result.parserErrors.map(e => ({ ...e, message: e.message })),\n value: this.dehydrateAstNode(result.value, this.createDehyrationContext(result.value))\n };\n }\n\n protected dehydrateLexerReport(lexerReport: LexingReport): LexingReport {\n // By default, lexer reports are serializable\n return lexerReport;\n }\n\n protected createDehyrationContext(node: AstNode): DehydrateContext {\n const astNodes = new Map();\n const cstNodes = new Map();\n for (const astNode of streamAst(node)) {\n astNodes.set(astNode, {});\n }\n if (node.$cstNode) {\n for (const cstNode of streamCst(node.$cstNode)) {\n cstNodes.set(cstNode, {});\n }\n }\n return {\n astNodes,\n cstNodes\n };\n }\n\n protected dehydrateAstNode(node: AstNode, context: DehydrateContext): object {\n const obj = context.astNodes.get(node) as Record;\n obj.$type = node.$type;\n obj.$containerIndex = node.$containerIndex;\n obj.$containerProperty = node.$containerProperty;\n if (node.$cstNode !== undefined) {\n obj.$cstNode = this.dehydrateCstNode(node.$cstNode, context);\n }\n for (const [name, value] of Object.entries(node)) {\n if (name.startsWith('$')) {\n continue;\n }\n if (Array.isArray(value)) {\n const arr: any[] = [];\n obj[name] = arr;\n for (const item of value) {\n if (isAstNode(item)) {\n arr.push(this.dehydrateAstNode(item, context));\n } else if (isReference(item)) {\n arr.push(this.dehydrateReference(item, context));\n } else {\n arr.push(item);\n }\n }\n } else if (isAstNode(value)) {\n obj[name] = this.dehydrateAstNode(value, context);\n } else if (isReference(value)) {\n obj[name] = this.dehydrateReference(value, context);\n } else if (value !== undefined) {\n obj[name] = value;\n }\n }\n return obj;\n }\n\n protected dehydrateReference(reference: Reference, context: DehydrateContext): any {\n const obj: Record = {};\n obj.$refText = reference.$refText;\n if (reference.$refNode) {\n obj.$refNode = context.cstNodes.get(reference.$refNode);\n }\n return obj;\n }\n\n protected dehydrateCstNode(node: CstNode, context: DehydrateContext): any {\n const cstNode = context.cstNodes.get(node) as Record;\n if (isRootCstNode(node)) {\n cstNode.fullText = node.fullText;\n } else {\n // Note: This returns undefined for hidden nodes (i.e. comments)\n cstNode.grammarSource = this.getGrammarElementId(node.grammarSource);\n }\n cstNode.hidden = node.hidden;\n cstNode.astNode = context.astNodes.get(node.astNode);\n if (isCompositeCstNode(node)) {\n cstNode.content = node.content.map(child => this.dehydrateCstNode(child, context));\n } else if (isLeafCstNode(node)) {\n cstNode.tokenType = node.tokenType.name;\n cstNode.offset = node.offset;\n cstNode.length = node.length;\n cstNode.startLine = node.range.start.line;\n cstNode.startColumn = node.range.start.character;\n cstNode.endLine = node.range.end.line;\n cstNode.endColumn = node.range.end.character;\n }\n return cstNode;\n }\n\n hydrate(result: ParseResult): ParseResult {\n const node = result.value;\n const context = this.createHydrationContext(node);\n if ('$cstNode' in node) {\n this.hydrateCstNode(node.$cstNode, context);\n }\n return {\n lexerErrors: result.lexerErrors,\n lexerReport: result.lexerReport,\n parserErrors: result.parserErrors,\n value: this.hydrateAstNode(node, context) as T\n };\n }\n\n protected createHydrationContext(node: any): HydrateContext {\n const astNodes = new Map();\n const cstNodes = new Map();\n for (const astNode of streamAst(node)) {\n astNodes.set(astNode, {} as AstNode);\n }\n let root: RootCstNode;\n if (node.$cstNode) {\n for (const cstNode of streamCst(node.$cstNode)) {\n let cst: Mutable | undefined;\n if ('fullText' in cstNode) {\n cst = new RootCstNodeImpl(cstNode.fullText as string);\n root = cst as RootCstNode;\n } else if ('content' in cstNode) {\n cst = new CompositeCstNodeImpl();\n } else if ('tokenType' in cstNode) {\n cst = this.hydrateCstLeafNode(cstNode);\n }\n if (cst) {\n cstNodes.set(cstNode, cst);\n cst.root = root!;\n }\n }\n }\n return {\n astNodes,\n cstNodes\n };\n }\n\n protected hydrateAstNode(node: any, context: HydrateContext): AstNode {\n const astNode = context.astNodes.get(node) as Mutable;\n astNode.$type = node.$type;\n astNode.$containerIndex = node.$containerIndex;\n astNode.$containerProperty = node.$containerProperty;\n if (node.$cstNode) {\n astNode.$cstNode = context.cstNodes.get(node.$cstNode);\n }\n for (const [name, value] of Object.entries(node)) {\n if (name.startsWith('$')) {\n continue;\n }\n if (Array.isArray(value)) {\n const arr: unknown[] = [];\n astNode[name] = arr;\n for (const item of value) {\n if (isAstNode(item)) {\n arr.push(this.setParent(this.hydrateAstNode(item, context), astNode));\n } else if (isReference(item)) {\n arr.push(this.hydrateReference(item, astNode, name, context));\n } else {\n arr.push(item);\n }\n }\n } else if (isAstNode(value)) {\n astNode[name] = this.setParent(this.hydrateAstNode(value, context), astNode);\n } else if (isReference(value)) {\n astNode[name] = this.hydrateReference(value, astNode, name, context);\n } else if (value !== undefined) {\n astNode[name] = value;\n }\n }\n return astNode;\n }\n\n protected setParent(node: any, parent: any): any {\n node.$container = parent as AstNode;\n return node;\n }\n\n protected hydrateReference(reference: any, node: AstNode, name: string, context: HydrateContext): Reference {\n return this.linker.buildReference(node, name, context.cstNodes.get(reference.$refNode)!, reference.$refText);\n }\n\n protected hydrateCstNode(cstNode: any, context: HydrateContext, num = 0): CstNode {\n const cstNodeObj = context.cstNodes.get(cstNode) as Mutable;\n if (typeof cstNode.grammarSource === 'number') {\n cstNodeObj.grammarSource = this.getGrammarElement(cstNode.grammarSource);\n }\n cstNodeObj.astNode = context.astNodes.get(cstNode.astNode)!;\n if (isCompositeCstNode(cstNodeObj)) {\n for (const child of cstNode.content) {\n const hydrated = this.hydrateCstNode(child, context, num++);\n cstNodeObj.content.push(hydrated);\n }\n }\n return cstNodeObj;\n }\n\n protected hydrateCstLeafNode(cstNode: any): LeafCstNode {\n const tokenType = this.getTokenType(cstNode.tokenType);\n const offset = cstNode.offset;\n const length = cstNode.length;\n const startLine = cstNode.startLine;\n const startColumn = cstNode.startColumn;\n const endLine = cstNode.endLine;\n const endColumn = cstNode.endColumn;\n const hidden = cstNode.hidden;\n const node = new LeafCstNodeImpl(\n offset,\n length,\n {\n start: {\n line: startLine,\n character: startColumn\n },\n end: {\n line: endLine,\n character: endColumn\n }\n },\n tokenType,\n hidden\n );\n return node;\n }\n\n protected getTokenType(name: string): TokenType {\n return this.lexer.definition[name];\n }\n\n protected getGrammarElementId(node: AbstractElement | undefined): number | undefined {\n if (!node) {\n return undefined;\n }\n if (this.grammarElementIdMap.size === 0) {\n this.createGrammarElementIdMap();\n }\n return this.grammarElementIdMap.get(node);\n }\n\n protected getGrammarElement(id: number): AbstractElement | undefined {\n if (this.grammarElementIdMap.size === 0) {\n this.createGrammarElementIdMap();\n }\n const element = this.grammarElementIdMap.getKey(id);\n return element;\n }\n\n protected createGrammarElementIdMap(): void {\n let id = 0;\n for (const element of streamAst(this.grammar)) {\n if (isAbstractElement(element)) {\n this.grammarElementIdMap.set(element, id++);\n }\n }\n }\n\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n******************************************************************************/\n\nimport type { Module } from './dependency-injection.js';\nimport type { LangiumDefaultCoreServices, LangiumDefaultSharedCoreServices, LangiumCoreServices, LangiumSharedCoreServices } from './services.js';\nimport type { FileSystemProvider } from './workspace/file-system-provider.js';\nimport { createGrammarConfig } from './languages/grammar-config.js';\nimport { createCompletionParser } from './parser/completion-parser-builder.js';\nimport { createLangiumParser } from './parser/langium-parser-builder.js';\nimport { DefaultTokenBuilder } from './parser/token-builder.js';\nimport { DefaultValueConverter } from './parser/value-converter.js';\nimport { DefaultLinker } from './references/linker.js';\nimport { DefaultNameProvider } from './references/name-provider.js';\nimport { DefaultReferences } from './references/references.js';\nimport { DefaultScopeComputation } from './references/scope-computation.js';\nimport { DefaultScopeProvider } from './references/scope-provider.js';\nimport { DefaultJsonSerializer } from './serializer/json-serializer.js';\nimport { DefaultServiceRegistry } from './service-registry.js';\nimport { DefaultDocumentValidator } from './validation/document-validator.js';\nimport { ValidationRegistry } from './validation/validation-registry.js';\nimport { DefaultAstNodeDescriptionProvider, DefaultReferenceDescriptionProvider } from './workspace/ast-descriptions.js';\nimport { DefaultAstNodeLocator } from './workspace/ast-node-locator.js';\nimport { DefaultConfigurationProvider } from './workspace/configuration.js';\nimport { DefaultDocumentBuilder } from './workspace/document-builder.js';\nimport { DefaultLangiumDocumentFactory, DefaultLangiumDocuments } from './workspace/documents.js';\nimport { DefaultIndexManager } from './workspace/index-manager.js';\nimport { DefaultWorkspaceManager } from './workspace/workspace-manager.js';\nimport { DefaultLexer, DefaultLexerErrorMessageProvider } from './parser/lexer.js';\nimport { JSDocDocumentationProvider } from './documentation/documentation-provider.js';\nimport { DefaultCommentProvider } from './documentation/comment-provider.js';\nimport { LangiumParserErrorMessageProvider } from './parser/langium-parser.js';\nimport { DefaultAsyncParser } from './parser/async-parser.js';\nimport { DefaultWorkspaceLock } from './workspace/workspace-lock.js';\nimport { DefaultHydrator } from './serializer/hydrator.js';\n\n/**\n * Context required for creating the default language-specific dependency injection module.\n */\nexport interface DefaultCoreModuleContext {\n shared: LangiumSharedCoreServices;\n}\n\n/**\n * Creates a dependency injection module configuring the default core services.\n * This is a set of services that are dedicated to a specific language.\n */\nexport function createDefaultCoreModule(context: DefaultCoreModuleContext): Module {\n return {\n documentation: {\n CommentProvider: (services) => new DefaultCommentProvider(services),\n DocumentationProvider: (services) => new JSDocDocumentationProvider(services)\n },\n parser: {\n AsyncParser: (services) => new DefaultAsyncParser(services),\n GrammarConfig: (services) => createGrammarConfig(services),\n LangiumParser: (services) => createLangiumParser(services),\n CompletionParser: (services) => createCompletionParser(services),\n ValueConverter: () => new DefaultValueConverter(),\n TokenBuilder: () => new DefaultTokenBuilder(),\n Lexer: (services) => new DefaultLexer(services),\n ParserErrorMessageProvider: () => new LangiumParserErrorMessageProvider(),\n LexerErrorMessageProvider: () => new DefaultLexerErrorMessageProvider()\n },\n workspace: {\n AstNodeLocator: () => new DefaultAstNodeLocator(),\n AstNodeDescriptionProvider: (services) => new DefaultAstNodeDescriptionProvider(services),\n ReferenceDescriptionProvider: (services) => new DefaultReferenceDescriptionProvider(services)\n },\n references: {\n Linker: (services) => new DefaultLinker(services),\n NameProvider: () => new DefaultNameProvider(),\n ScopeProvider: (services) => new DefaultScopeProvider(services),\n ScopeComputation: (services) => new DefaultScopeComputation(services),\n References: (services) => new DefaultReferences(services)\n },\n serializer: {\n Hydrator: (services) => new DefaultHydrator(services),\n JsonSerializer: (services) => new DefaultJsonSerializer(services)\n },\n validation: {\n DocumentValidator: (services) => new DefaultDocumentValidator(services),\n ValidationRegistry: (services) => new ValidationRegistry(services)\n },\n shared: () => context.shared\n };\n}\n\n/**\n * Context required for creating the default shared dependency injection module.\n */\nexport interface DefaultSharedCoreModuleContext {\n /**\n * Factory function to create a {@link FileSystemProvider}.\n *\n * Langium exposes an `EmptyFileSystem` and `NodeFileSystem`, exported through `langium/node`.\n * When running Langium as part of a vscode language server or a Node.js app, using the `NodeFileSystem` is recommended,\n * the `EmptyFileSystem` in every other use case.\n */\n fileSystemProvider: (services: LangiumSharedCoreServices) => FileSystemProvider;\n}\n\n/**\n * Creates a dependency injection module configuring the default shared core services.\n * This is the set of services that are shared between multiple languages.\n */\nexport function createDefaultSharedCoreModule(context: DefaultSharedCoreModuleContext): Module {\n return {\n ServiceRegistry: (services) => new DefaultServiceRegistry(services),\n workspace: {\n LangiumDocuments: (services) => new DefaultLangiumDocuments(services),\n LangiumDocumentFactory: (services) => new DefaultLangiumDocumentFactory(services),\n DocumentBuilder: (services) => new DefaultDocumentBuilder(services),\n IndexManager: (services) => new DefaultIndexManager(services),\n WorkspaceManager: (services) => new DefaultWorkspaceManager(services),\n FileSystemProvider: (services) => context.fileSystemProvider(services),\n WorkspaceLock: () => new DefaultWorkspaceLock(),\n ConfigurationProvider: (services) => new DefaultConfigurationProvider(services),\n },\n profilers: {}\n };\n}\n", "/******************************************************************************\n * Copyright 2021 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * A `Module` is a description of possibly grouped service factories.\n *\n * Given a type I = { group: { service: A } },\n * Module := { group: { service: (injector: I) => A } }\n *\n * Making `I` available during the creation of `I` allows us to create cyclic\n * dependencies.\n */\nexport type Module = {\n [K in keyof T]: Module | ((injector: I) => T[K])\n}\n\nexport namespace Module {\n /**\n * Merges two dependency injection modules into a new (third) one that is returned.\n * At that `m1` and `m2` stay unchanged. Therefore, `m1` is deep-copied first,\n * and m2 is merged onto the copy afterwards.\n *\n * Note that the leaf values of `m1` and `m2`, i.e. the service constructor functions,\n * cannot be copied generically, since they are functions. They are shared by the source and merged modules.\n *\n * @returns the merged module being a deep copy of `m1` with `m2` merged onto it.\n */\n export const merge = (m1: Module, m2: Module) => (_merge(_merge({}, m1), m2) as Module);\n}\n\n/**\n * Given a set of modules, the inject function returns a lazily evaluated injector\n * that injects dependencies into the requested service when it is requested the\n * first time. Subsequent requests will return the same service.\n *\n * In the case of cyclic dependencies, an Error will be thrown. This can be fixed\n * by injecting a provider `() => T` instead of a `T`.\n *\n * Please note that the arguments may be objects or arrays. However, the result will\n * be an object. Using it with for..of will have no effect.\n *\n * @param module1 first Module\n * @param module2 (optional) second Module\n * @param module3 (optional) third Module\n * @param module4 (optional) fourth Module\n * @param module5 (optional) fifth Module\n * @param module6 (optional) sixth Module\n * @param module7 (optional) seventh Module\n * @param module8 (optional) eighth Module\n * @param module9 (optional) ninth Module\n * @returns a new object of type I\n */\nexport function inject(\n module1: Module, module2?: Module, module3?: Module, module4?: Module, module5?: Module, module6?: Module, module7?: Module, module8?: Module, module9?: Module\n): I {\n const module = [module1, module2, module3, module4, module5, module6, module7, module8, module9].reduce(_merge, {}) as Module;\n return _inject(module);\n}\n\nconst isProxy = Symbol('isProxy');\n\n/**\n * Eagerly load all services in the given dependency injection container. This is sometimes\n * necessary because services can register event listeners in their constructors.\n */\nexport function eagerLoad(item: T): T {\n if (item && (item as any)[isProxy]) {\n for (const value of Object.values(item)) {\n eagerLoad(value);\n }\n }\n return item;\n}\n\n/**\n * Helper function that returns an injector by creating a proxy.\n * Invariant: injector is of type I. If injector is undefined, then T = I.\n */\nfunction _inject(module: Module, injector?: any): T {\n const proxy: any = new Proxy({} as any, {\n deleteProperty: () => false,\n set: () => {\n throw new Error('Cannot set property on injected service container');\n },\n get: (obj, prop) => {\n if (prop === isProxy) {\n return true;\n } else {\n return _resolve(obj, prop, module, injector || proxy);\n }\n },\n getOwnPropertyDescriptor: (obj, prop) => (_resolve(obj, prop, module, injector || proxy), Object.getOwnPropertyDescriptor(obj, prop)), // used by for..in\n has: (_, prop) => prop in module, // used by ..in..\n ownKeys: () => [...Object.getOwnPropertyNames(module)] // used by for..in\n });\n return proxy;\n}\n\n/**\n * Internally used to tag a requested dependency, directly before calling the factory.\n * This allows us to find cycles during instance creation.\n */\nconst __requested__ = Symbol();\n\n/**\n * Returns the value `obj[prop]`. If the value does not exist, yet, it is resolved from\n * the module description. The result of service factories is cached. Groups are\n * recursively proxied.\n *\n * @param obj an object holding all group proxies and services\n * @param prop the key of a value within obj\n * @param module an object containing groups and service factories\n * @param injector the first level proxy that provides access to all values\n * @returns the requested value `obj[prop]`\n * @throws Error if a dependency cycle is detected\n */\nfunction _resolve(obj: any, prop: string | symbol | number, module: Module, injector: I): T[keyof T] | undefined {\n if (prop in obj) {\n if (obj[prop] instanceof Error) {\n throw new Error('Construction failure. Please make sure that your dependencies are constructable. Cause: ' + obj[prop]);\n }\n if (obj[prop] === __requested__) {\n throw new Error('Cycle detected. Please make \"' + String(prop) + '\" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');\n }\n return obj[prop];\n } else if (prop in module) {\n const value: Module | ((injector: I) => T[keyof T]) = module[prop as keyof T];\n obj[prop] = __requested__;\n try {\n obj[prop] = (typeof value === 'function') ? value(injector) : _inject(value, injector);\n } catch (error) {\n obj[prop] = error instanceof Error ? error : undefined;\n throw error;\n }\n return obj[prop];\n } else {\n return undefined;\n }\n}\n\n/**\n * Performs a deep-merge of two modules by writing source entries into the target module.\n *\n * @param target the module which is written\n * @param source the module which is read\n * @returns the target module\n */\nfunction _merge(target: Module, source?: Module): Module {\n if (source) {\n for (const [key, sourceValue] of Object.entries(source)) {\n if (sourceValue !== undefined && sourceValue !== null) {\n if (typeof sourceValue === 'object') {\n const targetValue = target[key];\n\n if (typeof targetValue === 'object' && targetValue !== null) {\n // in case both values are real (non-null) objects merge them recursively\n target[key] = _merge(targetValue, sourceValue);\n } else {\n // in case 'target[key]' is not a non-null object\n // we overwrite any existing value with a deep copy of 'sourceValue'\n // by recursively calling this function with a new 'target' object to be populated\n // that is assigned to 'target[key]' afterwards\n target[key] = _merge({}, sourceValue);\n }\n } else {\n // in case 'sourceValue' is defined and assigned (non-null) but not an object\n // we assume it to be a service constructor function according to the Module type definition\n target[key] = sourceValue;\n // note the following for such service constructor functions:\n // 'target[key]' will now reference the same function object being referenced by 'source[key]'.\n // This is accepted here, since function objects cannot be safely copied in general.\n }\n }\n }\n }\n return target;\n}\n", "/******************************************************************************\n * Copyright 2024 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { CustomPatternMatcherFunc, TokenType, IToken, IMultiModeLexerDefinition, TokenVocabulary } from 'chevrotain';\nimport type { Grammar, TerminalRule } from '../languages/generated/ast.js';\nimport type { LexingReport, TokenBuilderOptions } from './token-builder.js';\nimport type { LexerResult, TokenizeOptions } from './lexer.js';\nimport type { LangiumCoreServices } from '../services.js';\nimport { createToken, createTokenInstance, Lexer } from 'chevrotain';\nimport { DefaultTokenBuilder } from './token-builder.js';\nimport { DEFAULT_TOKENIZE_OPTIONS, DefaultLexer, isTokenTypeArray } from './lexer.js';\n\ntype IndentationAwareDelimiter = [begin: TokenName, end: TokenName];\n\nexport interface IndentationTokenBuilderOptions {\n /**\n * The name of the token used to denote indentation in the grammar.\n * A possible definition in the grammar could look like this:\n * ```langium\n * terminal INDENT: ':synthetic-indent:';\n * ```\n *\n * @default 'INDENT'\n */\n indentTokenName: TerminalName;\n /**\n * The name of the token used to denote deindentation in the grammar.\n * A possible definition in the grammar could look like this:\n * ```langium\n * terminal DEDENT: ':synthetic-dedent:';\n * ```\n *\n * @default 'DEDENT'\n */\n dedentTokenName: TerminalName;\n /**\n * The name of the token used to denote whitespace other than indentation and newlines in the grammar.\n * A possible definition in the grammar could look like this:\n * ```langium\n * hidden terminal WS: /[ \\t]+/;\n * ```\n *\n * @default 'WS'\n */\n whitespaceTokenName: TerminalName;\n /**\n * The delimiter tokens inside of which indentation should be ignored and treated as normal whitespace.\n * For example, Python doesn't treat any whitespace between `(` and `)` as significant.\n *\n * Can be either terminal tokens or keyword tokens.\n *\n * @default []\n */\n ignoreIndentationDelimiters: Array>\n}\n\nexport const indentationBuilderDefaultOptions: IndentationTokenBuilderOptions = {\n indentTokenName: 'INDENT',\n dedentTokenName: 'DEDENT',\n whitespaceTokenName: 'WS',\n ignoreIndentationDelimiters: [],\n};\n\nexport enum LexingMode {\n REGULAR = 'indentation-sensitive',\n IGNORE_INDENTATION = 'ignore-indentation',\n}\n\nexport interface IndentationLexingReport extends LexingReport {\n /** Dedent tokens that are necessary to close the remaining indents. */\n remainingDedents: IToken[];\n}\n\n/**\n * A token builder that is sensitive to indentation in the input text.\n * It will generate tokens for indentation and dedentation based on the indentation level.\n *\n * The first generic parameter corresponds to the names of terminal tokens,\n * while the second one corresponds to the names of keyword tokens.\n * Both parameters are optional and can be imported from `./generated/ast.js`.\n *\n * Inspired by https://github.com/chevrotain/chevrotain/blob/master/examples/lexer/python_indentation/python_indentation.js\n */\nexport class IndentationAwareTokenBuilder extends DefaultTokenBuilder {\n /**\n * The stack stores all the previously matched indentation levels to understand how deeply the next tokens are nested.\n * The stack is valid for lexing\n */\n protected indentationStack: number[] = [0];\n\n readonly options: IndentationTokenBuilderOptions;\n\n /**\n * The token type to be used for indentation tokens\n */\n readonly indentTokenType: TokenType;\n\n /**\n * The token type to be used for dedentation tokens\n */\n readonly dedentTokenType: TokenType;\n\n /**\n * A regular expression to match a series of tabs and/or spaces.\n * Override this to customize what the indentation is allowed to consist of.\n */\n protected whitespaceRegExp = /[ \\t]+/y;\n\n constructor(options: Partial, NoInfer>> = indentationBuilderDefaultOptions as IndentationTokenBuilderOptions) {\n super();\n this.options = {\n ...indentationBuilderDefaultOptions as IndentationTokenBuilderOptions,\n ...options,\n };\n\n this.indentTokenType = createToken({\n name: this.options.indentTokenName,\n pattern: this.indentMatcher.bind(this),\n line_breaks: false,\n });\n\n this.dedentTokenType = createToken({\n name: this.options.dedentTokenName,\n pattern: this.dedentMatcher.bind(this),\n line_breaks: false,\n });\n }\n\n override buildTokens(grammar: Grammar, options?: TokenBuilderOptions | undefined): TokenVocabulary {\n const tokenTypes = super.buildTokens(grammar, options);\n if (!isTokenTypeArray(tokenTypes)) {\n throw new Error('Invalid tokens built by default builder');\n }\n\n const { indentTokenName, dedentTokenName, whitespaceTokenName, ignoreIndentationDelimiters } = this.options;\n\n // Rearrange tokens because whitespace (which is ignored) goes to the beginning by default, consuming indentation as well\n // Order should be: dedent, indent, spaces\n let dedent: TokenType | undefined;\n let indent: TokenType | undefined;\n let ws: TokenType | undefined;\n const otherTokens: TokenType[] = [];\n for (const tokenType of tokenTypes) {\n for (const [begin, end] of ignoreIndentationDelimiters) {\n if (tokenType.name === begin) {\n tokenType.PUSH_MODE = LexingMode.IGNORE_INDENTATION;\n } else if (tokenType.name === end) {\n tokenType.POP_MODE = true;\n }\n }\n if (tokenType.name === dedentTokenName) {\n dedent = tokenType;\n } else if (tokenType.name === indentTokenName) {\n indent = tokenType;\n } else if (tokenType.name === whitespaceTokenName) {\n ws = tokenType;\n } else {\n otherTokens.push(tokenType);\n }\n }\n if (!dedent || !indent || !ws) {\n throw new Error('Some indentation/whitespace tokens not found!');\n }\n\n if (ignoreIndentationDelimiters.length > 0) {\n const multiModeLexerDef: IMultiModeLexerDefinition = {\n modes: {\n [LexingMode.REGULAR]: [dedent, indent, ...otherTokens, ws],\n [LexingMode.IGNORE_INDENTATION]: [...otherTokens, ws],\n },\n defaultMode: LexingMode.REGULAR,\n };\n return multiModeLexerDef;\n } else {\n return [dedent, indent, ws, ...otherTokens];\n }\n }\n\n override flushLexingReport(text: string): IndentationLexingReport {\n const result = super.flushLexingReport(text);\n return {\n ...result,\n remainingDedents: this.flushRemainingDedents(text),\n };\n }\n\n /**\n * Helper function to check if the current position is the start of a new line.\n *\n * @param text The full input string.\n * @param offset The current position at which to check\n * @returns Whether the current position is the start of a new line\n */\n protected isStartOfLine(text: string, offset: number): boolean {\n return offset === 0 || '\\r\\n'.includes(text[offset - 1]);\n }\n\n /**\n * A helper function used in matching both indents and dedents.\n *\n * @param text The full input string.\n * @param offset The current position at which to attempt a match\n * @param tokens Previously scanned tokens\n * @param groups Token Groups\n * @returns The current and previous indentation levels and the matched whitespace\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected matchWhitespace(text: string, offset: number, tokens: IToken[], groups: Record): { currIndentLevel: number, prevIndentLevel: number, match: RegExpExecArray | null } {\n this.whitespaceRegExp.lastIndex = offset;\n const match = this.whitespaceRegExp.exec(text);\n return {\n currIndentLevel: match?.[0].length ?? 0,\n prevIndentLevel: this.indentationStack.at(-1)!,\n match,\n };\n }\n\n /**\n * Helper function to create an instance of an indentation token.\n *\n * @param tokenType Indent or dedent token type\n * @param text Full input string, used to calculate the line number\n * @param image The original image of the token (tabs or spaces)\n * @param offset Current position in the input string\n * @returns The indentation token instance\n */\n protected createIndentationTokenInstance(tokenType: TokenType, text: string, image: string, offset: number): IToken {\n const lineNumber = this.getLineNumber(text, offset);\n return createTokenInstance(\n tokenType,\n image,\n offset, offset + image.length,\n lineNumber, lineNumber,\n 1, image.length,\n );\n }\n\n /**\n * Helper function to get the line number at a given offset.\n *\n * @param text Full input string, used to calculate the line number\n * @param offset Current position in the input string\n * @returns The line number at the given offset\n */\n protected getLineNumber(text: string, offset: number): number {\n return text.substring(0, offset).split(/\\r\\n|\\r|\\n/).length;\n }\n\n /**\n * A custom pattern for matching indents\n *\n * @param text The full input string.\n * @param offset The offset at which to attempt a match\n * @param tokens Previously scanned tokens\n * @param groups Token Groups\n */\n protected indentMatcher(text: string, offset: number, tokens: IToken[], groups: Record): ReturnType {\n if (!this.isStartOfLine(text, offset)) {\n return null;\n }\n\n const { currIndentLevel, prevIndentLevel, match } = this.matchWhitespace(text, offset, tokens, groups);\n\n if (currIndentLevel <= prevIndentLevel) {\n // shallower indentation (should be matched by dedent)\n // or same indentation level (should be matched by whitespace and ignored)\n return null;\n }\n\n this.indentationStack.push(currIndentLevel);\n\n return match;\n }\n\n /**\n * A custom pattern for matching dedents\n *\n * @param text The full input string.\n * @param offset The offset at which to attempt a match\n * @param tokens Previously scanned tokens\n * @param groups Token Groups\n */\n protected dedentMatcher(text: string, offset: number, tokens: IToken[], groups: Record): ReturnType {\n if (!this.isStartOfLine(text, offset)) {\n return null;\n }\n\n const { currIndentLevel, prevIndentLevel, match } = this.matchWhitespace(text, offset, tokens, groups);\n\n if (currIndentLevel >= prevIndentLevel) {\n // bigger indentation (should be matched by indent)\n // or same indentation level (should be matched by whitespace and ignored)\n return null;\n }\n\n const matchIndentIndex = this.indentationStack.lastIndexOf(currIndentLevel);\n\n // Any dedent must match some previous indentation level.\n if (matchIndentIndex === -1) {\n this.diagnostics.push({\n severity: 'error',\n message: `Invalid dedent level ${currIndentLevel} at offset: ${offset}. Current indentation stack: ${this.indentationStack}`,\n offset,\n length: match?.[0]?.length ?? 0,\n line: this.getLineNumber(text, offset),\n column: 1\n });\n return null;\n }\n\n const numberOfDedents = this.indentationStack.length - matchIndentIndex - 1;\n const newlinesBeforeDedent = text.substring(0, offset).match(/[\\r\\n]+$/)?.[0].length ?? 1;\n\n for (let i = 0; i < numberOfDedents; i++) {\n const token = this.createIndentationTokenInstance(\n this.dedentTokenType,\n text,\n '', // Dedents are 0-width tokens\n offset - (newlinesBeforeDedent - 1), // Place the dedent after the first new line character\n );\n tokens.push(token);\n this.indentationStack.pop();\n }\n\n // Token already added, let the dedentation now be consumed as whitespace (if any) and ignored\n return null;\n }\n\n protected override buildTerminalToken(terminal: TerminalRule): TokenType {\n const tokenType = super.buildTerminalToken(terminal);\n const { indentTokenName, dedentTokenName, whitespaceTokenName } = this.options;\n\n if (tokenType.name === indentTokenName) {\n return this.indentTokenType;\n } else if (tokenType.name === dedentTokenName) {\n return this.dedentTokenType;\n } else if (tokenType.name === whitespaceTokenName) {\n return createToken({\n name: whitespaceTokenName,\n pattern: this.whitespaceRegExp,\n group: Lexer.SKIPPED,\n });\n }\n return tokenType;\n }\n\n /**\n * Resets the indentation stack between different runs of the lexer\n *\n * @param text Full text that was tokenized\n * @returns Remaining dedent tokens to match all previous indents at the end of the file\n */\n flushRemainingDedents(text: string): IToken[] {\n const remainingDedents: IToken[] = [];\n while (this.indentationStack.length > 1) {\n remainingDedents.push(\n this.createIndentationTokenInstance(this.dedentTokenType, text, '', text.length)\n );\n this.indentationStack.pop();\n }\n\n this.indentationStack = [0];\n return remainingDedents;\n }\n}\n\n/**\n * A lexer that is aware of indentation in the input text.\n * The only purpose of this lexer is to reset the internal state of the {@link IndentationAwareTokenBuilder}\n * between the tokenization of different text inputs.\n *\n * In your module, you can override the default lexer with this one as such:\n * ```ts\n * parser: {\n * TokenBuilder: () => new IndentationAwareTokenBuilder(),\n * Lexer: (services) => new IndentationAwareLexer(services),\n * }\n * ```\n */\nexport class IndentationAwareLexer extends DefaultLexer {\n\n protected readonly indentationTokenBuilder: IndentationAwareTokenBuilder;\n\n constructor(services: LangiumCoreServices) {\n super(services);\n if (services.parser.TokenBuilder instanceof IndentationAwareTokenBuilder) {\n this.indentationTokenBuilder = services.parser.TokenBuilder;\n } else {\n throw new Error('IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder');\n }\n }\n\n override tokenize(text: string, options: TokenizeOptions = DEFAULT_TOKENIZE_OPTIONS): LexerResult {\n const result = super.tokenize(text);\n\n // consuming all remaining dedents and remove them as they might not be serializable\n const report = result.report as IndentationLexingReport;\n if (options?.mode === 'full') {\n // auto-complete document with remaining dedents\n result.tokens.push(...report.remainingDedents);\n }\n report.remainingDedents = [];\n\n // remove any \"indent-dedent\" pair with an empty body as these are typically\n // added by comments or lines with just whitespace but have no real value\n const { indentTokenType, dedentTokenType } = this.indentationTokenBuilder;\n // Use tokenTypeIdx for fast comparison\n const indentTokenIdx = indentTokenType.tokenTypeIdx;\n const dedentTokenIdx = dedentTokenType.tokenTypeIdx;\n const cleanTokens: IToken[] = [];\n const length = result.tokens.length - 1;\n for (let i = 0; i < length; i++) {\n const token = result.tokens[i];\n const nextToken = result.tokens[i + 1];\n if (token.tokenTypeIdx === indentTokenIdx && nextToken.tokenTypeIdx === dedentTokenIdx) {\n i++;\n continue;\n }\n\n cleanTokens.push(token);\n }\n // Push last token separately\n if (length >= 0) {\n cleanTokens.push(result.tokens[length]);\n }\n result.tokens = cleanTokens;\n\n return result;\n }\n}\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nexport * from './caching.js';\nexport * from './event.js';\nexport * from './collections.js';\nexport * from './disposable.js';\nexport * from './errors.js';\nexport * from './grammar-loader.js';\nexport * from './promise-utils.js';\nexport * from './stream.js';\nexport * from './uri-utils.js';\n\nimport * as AstUtils from './ast-utils.js';\nimport * as Cancellation from './cancellation.js';\nimport * as CstUtils from './cst-utils.js';\nimport * as GrammarUtils from './grammar-utils.js';\nimport * as RegExpUtils from './regexp-utils.js';\nexport { AstUtils, Cancellation, CstUtils, GrammarUtils, RegExpUtils };\n", "/******************************************************************************\n * Copyright 2022 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport type { URI } from '../utils/uri-utils.js';\n\nexport interface FileSystemNode {\n readonly isFile: boolean;\n readonly isDirectory: boolean;\n readonly uri: URI;\n}\n\nexport type FileSystemFilter = (node: FileSystemNode) => boolean;\n\n/**\n * Provides methods to interact with an abstract file system. The default implementation is based on the node.js `fs` API.\n */\nexport interface FileSystemProvider {\n /**\n * Gets the status of a file or directory.\n * The status includes meta data such as whether the node is a file or directory.\n * @param uri The URI of the file or directory.\n */\n stat(uri: URI): Promise;\n /**\n * Gets the status of a file or directory synchronously.\n * The status includes meta data such as whether the node is a file or directory.\n * @param uri The URI of the file or directory.\n */\n statSync(uri: URI): FileSystemNode;\n /**\n * Checks if a file exists at the specified URI.\n * @returns `true` if a file exists at the specified URI, `false` otherwise.\n */\n exists(uri: URI): Promise;\n /**\n * Checks if a file exists at the specified URI synchronously.\n * @returns `true` if a file exists at the specified URI, `false` otherwise.\n */\n existsSync(uri: URI): boolean;\n /**\n * Reads a binary file asynchronously from a given URI.\n * @returns The binary content of the file with the specified URI.\n */\n readBinary(uri: URI): Promise;\n /**\n * Reads a binary file synchronously from a given URI.\n * @returns The binary content of the file with the specified URI.\n */\n readBinarySync(uri: URI): Uint8Array;\n /**\n * Reads a document asynchronously from a given URI.\n * @returns The string content of the file with the specified URI.\n */\n readFile(uri: URI): Promise;\n /**\n * Reads a document synchronously from a given URI.\n * @returns The string content of the file with the specified\n */\n readFileSync(uri: URI): string;\n /**\n * Reads the directory information for the given URI.\n * @returns The list of file system entries that are contained within the specified directory.\n */\n readDirectory(uri: URI): Promise;\n /**\n * Reads the directory information for the given URI synchronously.\n * @returns The list of file system entries that are contained within the specified directory.\n */\n readDirectorySync(uri: URI): FileSystemNode[];\n}\n\nexport class EmptyFileSystemProvider implements FileSystemProvider {\n\n stat(_uri: URI): Promise {\n throw new Error('No file system is available.');\n }\n\n statSync(_uri: URI): FileSystemNode {\n throw new Error('No file system is available.');\n }\n async exists(): Promise {\n return false;\n }\n\n existsSync(): boolean {\n return false;\n }\n\n readBinary(): Promise {\n throw new Error('No file system is available.');\n }\n\n readBinarySync(): Uint8Array {\n throw new Error('No file system is available.');\n }\n\n readFile(): Promise {\n throw new Error('No file system is available.');\n }\n\n readFileSync(): string {\n throw new Error('No file system is available.');\n }\n\n async readDirectory(): Promise {\n return [];\n }\n\n readDirectorySync(): FileSystemNode[] {\n return [];\n }\n\n}\n\nexport const EmptyFileSystem = {\n fileSystemProvider: () => new EmptyFileSystemProvider()\n};\n", "/******************************************************************************\n * Copyright 2023 TypeFox GmbH\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { createDefaultCoreModule, createDefaultSharedCoreModule } from '../default-module.js';\nimport type { Module } from '../dependency-injection.js';\nimport { inject } from '../dependency-injection.js';\nimport * as ast from '../languages/generated/ast.js';\nimport type { LangiumCoreServices, LangiumSharedCoreServices, PartialLangiumCoreServices, PartialLangiumSharedCoreServices } from '../services.js';\nimport type { Mutable } from '../syntax-tree.js';\nimport { EmptyFileSystem } from '../workspace/file-system-provider.js';\nimport { URI } from './uri-utils.js';\n\nconst minimalGrammarModule: Module = {\n Grammar: () => undefined as unknown as ast.Grammar,\n LanguageMetaData: () => ({\n caseInsensitive: false,\n fileExtensions: ['.langium'],\n languageId: 'langium'\n })\n};\n\nconst minimalSharedGrammarModule: Module = {\n AstReflection: () => new ast.LangiumGrammarAstReflection()\n};\n\nfunction createMinimalGrammarServices(): LangiumCoreServices {\n const shared = inject(\n createDefaultSharedCoreModule(EmptyFileSystem),\n minimalSharedGrammarModule\n );\n const grammar = inject(\n createDefaultCoreModule({ shared }),\n minimalGrammarModule\n );\n shared.ServiceRegistry.register(grammar);\n return grammar;\n}\n\n/**\n * Load a Langium grammar for your language from a JSON string. This is used by several services,\n * most notably the parser builder which interprets the grammar to create a parser.\n */\nexport function loadGrammarFromJson(json: string): ast.Grammar {\n const services = createMinimalGrammarServices();\n const astNode = services.serializer.JsonSerializer.deserialize(json) as Mutable;\n services.shared.workspace.LangiumDocumentFactory.fromModel(astNode, URI.parse(`memory:/${astNode.name ?? 'grammar'}.langium`));\n return astNode;\n}\n", "/******************************************************************************\n * Copyright 2025 Y. Daveluy\n * This program and the accompanying materials are made available under the\n * terms of the MIT License, which is available in the project root.\n ******************************************************************************/\n\nimport { MultiMap } from '../utils/collections.js';\nimport type { Stream } from '../utils/stream.js';\n\nexport type ProfilingCategory = 'validating' | 'parsing' | 'linking';\n\nexport interface LangiumProfiler {\n\n /**\n * Checks if the given category is active.\n * @param category The category to check.\n * @returns `true` if the category is active, `false` otherwise.\n */\n isActive(category: ProfilingCategory): boolean;\n\n /**\n * Starts the profiling for the given categories. If none are provided, all categories are started.\n * @param categories The categories to start profiling for.\n */\n start(...categories: ProfilingCategory[]): void;\n\n /**\n * Stops the profiling for the given categories. If none are provided, all categories are stopped.\n * @param categories The categories to stop profiling for.\n */\n stop(...categories: ProfilingCategory[]): void;\n\n /**\n * Creates a new {@link ProfilingTask} for the given category.\n * @param category The category to create the task for.\n * @param taskId The identifier of the task.\n */\n createTask(category: ProfilingCategory, taskId: string): ProfilingTask;\n\n /**\n * Gets the {@link ProfilingRecord}s for the given categories. If none are provided, all records are returned.\n * @param categories The categories to get the records for.\n * @returns A stream of profiling records.\n */\n getRecords(...categories: ProfilingCategory[]): Stream;\n}\n\nexport class DefaultLangiumProfiler implements LangiumProfiler {\n protected activeCategories: Set = new Set();\n protected readonly allCategories: ReadonlySet = new Set([ 'validating', 'parsing', 'linking' ]);\n protected readonly records: MultiMap;\n\n constructor(activeCategories?: Set) {\n this.activeCategories = activeCategories ?? new Set(this.allCategories);\n this.records = new MultiMap();\n }\n\n isActive(category: ProfilingCategory): boolean {\n return this.activeCategories.has(category);\n }\n\n start(...categories: ProfilingCategory[]): void {\n if (!categories) {\n // Create a new set with all categories (immutable copy)\n this.activeCategories = new Set(this.allCategories);\n }\n else {\n categories.forEach(category => this.activeCategories.add(category));\n }\n }\n\n stop(...categories: ProfilingCategory[]): void {\n if (!categories) {\n this.activeCategories.clear();\n } else {\n categories.forEach(category => this.activeCategories.delete(category));\n }\n }\n\n createTask(category: ProfilingCategory, taskId: string): ProfilingTask {\n if (!this.isActive(category)) {\n throw new Error(`Category \"${category}\" is not active.`);\n }\n console.log(`Creating profiling task for '${category}.${taskId}'.`);\n return new ProfilingTask((record: ProfilingRecord) => this.records.add(category, this.dumpRecord(category, record)), taskId);\n }\n\n protected dumpRecord(category: string, record: ProfilingRecord): ProfilingRecord {\n console.info(`Task ${category}.${record.identifier} executed in ${record.duration.toFixed(2)}ms and ended at ${record.date.toISOString()}`);\n\n const result: Array<{ name: string, count: number, duration: number }> = [];\n for (const key of record.entries.keys()) {\n const values = record.entries.get(key);\n const duration = values.reduce((p, c) => p + c);\n result.push({ name: `${record.identifier}.${key}`, count: values.length, duration: duration });\n }\n\n // sum all duration\n const taskInternalDuration = record.duration - result.map(r => r.duration).reduce((a, b) => a + b, 0);\n\n result.push({ name: record.identifier, count: 1, duration: taskInternalDuration });\n\n result.sort((a, b) => b.duration - a.duration);\n function Round(value: number) { return Math.round(100 * value) / 100; }\n console.table(result.map(e => { return { Element: e.name, Count: e.count, 'Self %': Round(100 * e.duration / record.duration), 'Time (ms)': Round(e.duration) }; }));\n return record;\n }\n\n getRecords(...categories: ProfilingCategory[]): Stream {\n if (categories.length === 0) {\n // return all records\n return this.records.values();\n } else {\n // return records for the given categories\n return this.records.entries().filter((e) => categories.some(c => c === e[0])).flatMap(e => e[1]);\n }\n }\n}\n\nexport interface ProfilingRecord {\n // the record identifier (e.g: the grammar name)\n identifier: string\n // the date at which the record is generated\n date: Date\n // the duration of the record\n duration: number\n // a list of sub-tasks(string) called during the recording with\n // for each sub-task the duration of each call.\n entries: MultiMap\n}\n\nexport class ProfilingTask {\n protected startTime?: number;\n protected readonly addRecord: (record: ProfilingRecord) => void;\n\n protected readonly identifier: string;\n protected readonly stack: Array<{ id: string, start: number, content: number }> = [];\n protected readonly entries = new MultiMap();\n\n constructor(addRecord: (record: ProfilingRecord) => void, identifier: string) {\n this.addRecord = addRecord;\n this.identifier = identifier;\n }\n\n start(): void {\n if (this.startTime !== undefined) {\n throw new Error(`Task \"${this.identifier}\" is already started.`);\n }\n this.startTime = performance.now();\n }\n\n stop(): void {\n if (this.startTime === undefined) {\n throw new Error(`Task \"${this.identifier}\" was not started.`);\n }\n if (this.stack.length !== 0) {\n throw new Error(`Task \"${this.identifier}\" cannot be stopped before sub-task(s): ${this.stack.map(s => s.id).join(', ')}.`);\n }\n const record: ProfilingRecord = {\n identifier: this.identifier,\n date: new Date(),\n duration: performance.now() - this.startTime,\n entries: this.entries\n };\n this.addRecord(record);\n this.startTime = undefined;\n this.entries.clear();\n }\n\n startSubTask(subTaskId: string): void {\n this.stack.push({ id: subTaskId, start: performance.now(), content: 0 });\n }\n\n stopSubTask(subTaskId: string): void {\n const subStack = this.stack.pop();\n if (!subStack) {\n throw new Error(`Task \"${this.identifier}.${subTaskId}\" was not started.`);\n }\n if (subStack.id !== subTaskId) {\n throw new Error(`Sub-Task \"${subStack.id}\" is not already stopped.`);\n }\n\n const duration = performance.now() - subStack.start;\n\n if (this.stack.at(-1) !== undefined) {\n this.stack[this.stack.length - 1].content += duration;\n }\n // we are interested here by the duration of the current sub-task without the duration of nested sub-tasks.\n const selfDuration = duration - subStack.content;\n this.entries.add(subTaskId, selfDuration);\n }\n}\n", "var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/language/generated/ast.ts\nimport * as langium from \"langium\";\nvar ArchitectureGrammar;\n((ArchitectureGrammar2) => {\n ArchitectureGrammar2.Terminals = {\n ARROW_DIRECTION: /L|R|T|B/,\n ARROW_GROUP: /\\{group\\}/,\n ARROW_INTO: /<|>/,\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n ID: /[\\w]([-\\w]*\\w)?/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/,\n ARCH_ICON: /\\([\\w-:]+\\)/,\n ARCH_TITLE: /\\[(?:\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'|[\\w ]+)\\]/\n };\n})(ArchitectureGrammar || (ArchitectureGrammar = {}));\nvar GitGraphGrammar;\n((GitGraphGrammar2) => {\n GitGraphGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n INT: /0|[1-9][0-9]*(?!\\.)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/,\n REFERENCE: /\\w([-\\./\\w]*[-\\w])?/\n };\n})(GitGraphGrammar || (GitGraphGrammar = {}));\nvar InfoGrammar;\n((InfoGrammar2) => {\n InfoGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(InfoGrammar || (InfoGrammar = {}));\nvar PacketGrammar;\n((PacketGrammar2) => {\n PacketGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n INT: /0|[1-9][0-9]*(?!\\.)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(PacketGrammar || (PacketGrammar = {}));\nvar PieGrammar;\n((PieGrammar2) => {\n PieGrammar2.Terminals = {\n NUMBER_PIE: /(?:-?[0-9]+\\.[0-9]+(?!\\.))|(?:-?(0|[1-9][0-9]*)(?!\\.))/,\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(PieGrammar || (PieGrammar = {}));\nvar RadarGrammar;\n((RadarGrammar2) => {\n RadarGrammar2.Terminals = {\n GRATICULE: /circle|polygon/,\n BOOLEAN: /true|false/,\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n NUMBER: /(?:[0-9]+\\.[0-9]+(?!\\.))|(?:0|[1-9][0-9]*(?!\\.))/,\n STRING: /\"([^\"\\\\]|\\\\.)*\"|'([^'\\\\]|\\\\.)*'/,\n ID: /[\\w]([-\\w]*\\w)?/,\n NEWLINE: /\\r?\\n/,\n WHITESPACE: /[\\t ]+/,\n YAML: /---[\\t ]*\\r?\\n(?:[\\S\\s]*?\\r?\\n)?---(?:\\r?\\n|(?!\\S))/,\n DIRECTIVE: /[\\t ]*%%{[\\S\\s]*?}%%(?:\\r?\\n|(?!\\S))/,\n SINGLE_LINE_COMMENT: /[\\t ]*%%[^\\n\\r]*/\n };\n})(RadarGrammar || (RadarGrammar = {}));\nvar TreemapGrammar;\n((TreemapGrammar2) => {\n TreemapGrammar2.Terminals = {\n ACC_DESCR: /[\\t ]*accDescr(?:[\\t ]*:([^\\n\\r]*?(?=%%)|[^\\n\\r]*)|\\s*{([^}]*)})/,\n ACC_TITLE: /[\\t ]*accTitle[\\t ]*:(?:[^\\n\\r]*?(?=%%)|[^\\n\\r]*)/,\n TITLE: /[\\t ]*title(?:[\\t ][^\\n\\r]*?(?=%%)|[\\t ][^\\n\\r]*|)/,\n TREEMAP_KEYWORD: /treemap-beta|treemap/,\n CLASS_DEF: /classDef\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\s+([^;\\r\\n]*))?(?:;)?/,\n STYLE_SEPARATOR: /:::/,\n SEPARATOR: /:/,\n COMMA: /,/,\n INDENTATION: /[ \\t]{1,}/,\n WS: /[ \\t]+/,\n ML_COMMENT: /\\%\\%[^\\n]*/,\n NL: /\\r?\\n/,\n ID2: /[a-zA-Z_][a-zA-Z0-9_]*/,\n NUMBER2: /[0-9_\\.\\,]+/,\n STRING2: /\"[^\"]*\"|'[^']*'/\n };\n})(TreemapGrammar || (TreemapGrammar = {}));\nvar MermaidTerminals = {\n ...ArchitectureGrammar.Terminals,\n ...GitGraphGrammar.Terminals,\n ...InfoGrammar.Terminals,\n ...PacketGrammar.Terminals,\n ...PieGrammar.Terminals,\n ...RadarGrammar.Terminals,\n ...TreemapGrammar.Terminals\n};\nvar Architecture = {\n $type: \"Architecture\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n edges: \"edges\",\n groups: \"groups\",\n junctions: \"junctions\",\n services: \"services\",\n title: \"title\"\n};\nfunction isArchitecture(item) {\n return reflection.isInstance(item, Architecture.$type);\n}\n__name(isArchitecture, \"isArchitecture\");\nvar Axis = {\n $type: \"Axis\",\n label: \"label\",\n name: \"name\"\n};\nvar Branch = {\n $type: \"Branch\",\n name: \"name\",\n order: \"order\"\n};\nfunction isBranch(item) {\n return reflection.isInstance(item, Branch.$type);\n}\n__name(isBranch, \"isBranch\");\nvar Checkout = {\n $type: \"Checkout\",\n branch: \"branch\"\n};\nvar CherryPicking = {\n $type: \"CherryPicking\",\n id: \"id\",\n parent: \"parent\",\n tags: \"tags\"\n};\nvar ClassDefStatement = {\n $type: \"ClassDefStatement\",\n className: \"className\",\n styleText: \"styleText\"\n};\nvar Commit = {\n $type: \"Commit\",\n id: \"id\",\n message: \"message\",\n tags: \"tags\",\n type: \"type\"\n};\nfunction isCommit(item) {\n return reflection.isInstance(item, Commit.$type);\n}\n__name(isCommit, \"isCommit\");\nvar Curve = {\n $type: \"Curve\",\n entries: \"entries\",\n label: \"label\",\n name: \"name\"\n};\nvar Direction = {\n $type: \"Direction\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n dir: \"dir\",\n statements: \"statements\",\n title: \"title\"\n};\nvar Edge = {\n $type: \"Edge\",\n lhsDir: \"lhsDir\",\n lhsGroup: \"lhsGroup\",\n lhsId: \"lhsId\",\n lhsInto: \"lhsInto\",\n rhsDir: \"rhsDir\",\n rhsGroup: \"rhsGroup\",\n rhsId: \"rhsId\",\n rhsInto: \"rhsInto\",\n title: \"title\"\n};\nvar Entry = {\n $type: \"Entry\",\n axis: \"axis\",\n value: \"value\"\n};\nvar GitGraph = {\n $type: \"GitGraph\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n statements: \"statements\",\n title: \"title\"\n};\nfunction isGitGraph(item) {\n return reflection.isInstance(item, GitGraph.$type);\n}\n__name(isGitGraph, \"isGitGraph\");\nvar Group = {\n $type: \"Group\",\n icon: \"icon\",\n id: \"id\",\n in: \"in\",\n title: \"title\"\n};\nvar Info = {\n $type: \"Info\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n title: \"title\"\n};\nfunction isInfo(item) {\n return reflection.isInstance(item, Info.$type);\n}\n__name(isInfo, \"isInfo\");\nvar Item = {\n $type: \"Item\",\n classSelector: \"classSelector\",\n name: \"name\"\n};\nvar Junction = {\n $type: \"Junction\",\n id: \"id\",\n in: \"in\"\n};\nvar Leaf = {\n $type: \"Leaf\",\n classSelector: \"classSelector\",\n name: \"name\",\n value: \"value\"\n};\nvar Merge = {\n $type: \"Merge\",\n branch: \"branch\",\n id: \"id\",\n tags: \"tags\",\n type: \"type\"\n};\nfunction isMerge(item) {\n return reflection.isInstance(item, Merge.$type);\n}\n__name(isMerge, \"isMerge\");\nvar Option = {\n $type: \"Option\",\n name: \"name\",\n value: \"value\"\n};\nvar Packet = {\n $type: \"Packet\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n blocks: \"blocks\",\n title: \"title\"\n};\nfunction isPacket(item) {\n return reflection.isInstance(item, Packet.$type);\n}\n__name(isPacket, \"isPacket\");\nvar PacketBlock = {\n $type: \"PacketBlock\",\n bits: \"bits\",\n end: \"end\",\n label: \"label\",\n start: \"start\"\n};\nfunction isPacketBlock(item) {\n return reflection.isInstance(item, PacketBlock.$type);\n}\n__name(isPacketBlock, \"isPacketBlock\");\nvar Pie = {\n $type: \"Pie\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n sections: \"sections\",\n showData: \"showData\",\n title: \"title\"\n};\nfunction isPie(item) {\n return reflection.isInstance(item, Pie.$type);\n}\n__name(isPie, \"isPie\");\nvar PieSection = {\n $type: \"PieSection\",\n label: \"label\",\n value: \"value\"\n};\nfunction isPieSection(item) {\n return reflection.isInstance(item, PieSection.$type);\n}\n__name(isPieSection, \"isPieSection\");\nvar Radar = {\n $type: \"Radar\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n axes: \"axes\",\n curves: \"curves\",\n options: \"options\",\n title: \"title\"\n};\nvar Section = {\n $type: \"Section\",\n classSelector: \"classSelector\",\n name: \"name\"\n};\nvar Service = {\n $type: \"Service\",\n icon: \"icon\",\n iconText: \"iconText\",\n id: \"id\",\n in: \"in\",\n title: \"title\"\n};\nvar Statement = {\n $type: \"Statement\"\n};\nvar Treemap = {\n $type: \"Treemap\",\n accDescr: \"accDescr\",\n accTitle: \"accTitle\",\n title: \"title\",\n TreemapRows: \"TreemapRows\"\n};\nfunction isTreemap(item) {\n return reflection.isInstance(item, Treemap.$type);\n}\n__name(isTreemap, \"isTreemap\");\nvar TreemapRow = {\n $type: \"TreemapRow\",\n indent: \"indent\",\n item: \"item\"\n};\nvar MermaidAstReflection = class extends langium.AbstractAstReflection {\n constructor() {\n super(...arguments);\n this.types = {\n Architecture: {\n name: Architecture.$type,\n properties: {\n accDescr: {\n name: Architecture.accDescr\n },\n accTitle: {\n name: Architecture.accTitle\n },\n edges: {\n name: Architecture.edges,\n defaultValue: []\n },\n groups: {\n name: Architecture.groups,\n defaultValue: []\n },\n junctions: {\n name: Architecture.junctions,\n defaultValue: []\n },\n services: {\n name: Architecture.services,\n defaultValue: []\n },\n title: {\n name: Architecture.title\n }\n },\n superTypes: []\n },\n Axis: {\n name: Axis.$type,\n properties: {\n label: {\n name: Axis.label\n },\n name: {\n name: Axis.name\n }\n },\n superTypes: []\n },\n Branch: {\n name: Branch.$type,\n properties: {\n name: {\n name: Branch.name\n },\n order: {\n name: Branch.order\n }\n },\n superTypes: [Statement.$type]\n },\n Checkout: {\n name: Checkout.$type,\n properties: {\n branch: {\n name: Checkout.branch\n }\n },\n superTypes: [Statement.$type]\n },\n CherryPicking: {\n name: CherryPicking.$type,\n properties: {\n id: {\n name: CherryPicking.id\n },\n parent: {\n name: CherryPicking.parent\n },\n tags: {\n name: CherryPicking.tags,\n defaultValue: []\n }\n },\n superTypes: [Statement.$type]\n },\n ClassDefStatement: {\n name: ClassDefStatement.$type,\n properties: {\n className: {\n name: ClassDefStatement.className\n },\n styleText: {\n name: ClassDefStatement.styleText\n }\n },\n superTypes: []\n },\n Commit: {\n name: Commit.$type,\n properties: {\n id: {\n name: Commit.id\n },\n message: {\n name: Commit.message\n },\n tags: {\n name: Commit.tags,\n defaultValue: []\n },\n type: {\n name: Commit.type\n }\n },\n superTypes: [Statement.$type]\n },\n Curve: {\n name: Curve.$type,\n properties: {\n entries: {\n name: Curve.entries,\n defaultValue: []\n },\n label: {\n name: Curve.label\n },\n name: {\n name: Curve.name\n }\n },\n superTypes: []\n },\n Direction: {\n name: Direction.$type,\n properties: {\n accDescr: {\n name: Direction.accDescr\n },\n accTitle: {\n name: Direction.accTitle\n },\n dir: {\n name: Direction.dir\n },\n statements: {\n name: Direction.statements,\n defaultValue: []\n },\n title: {\n name: Direction.title\n }\n },\n superTypes: [GitGraph.$type]\n },\n Edge: {\n name: Edge.$type,\n properties: {\n lhsDir: {\n name: Edge.lhsDir\n },\n lhsGroup: {\n name: Edge.lhsGroup,\n defaultValue: false\n },\n lhsId: {\n name: Edge.lhsId\n },\n lhsInto: {\n name: Edge.lhsInto,\n defaultValue: false\n },\n rhsDir: {\n name: Edge.rhsDir\n },\n rhsGroup: {\n name: Edge.rhsGroup,\n defaultValue: false\n },\n rhsId: {\n name: Edge.rhsId\n },\n rhsInto: {\n name: Edge.rhsInto,\n defaultValue: false\n },\n title: {\n name: Edge.title\n }\n },\n superTypes: []\n },\n Entry: {\n name: Entry.$type,\n properties: {\n axis: {\n name: Entry.axis,\n referenceType: Axis.$type\n },\n value: {\n name: Entry.value\n }\n },\n superTypes: []\n },\n GitGraph: {\n name: GitGraph.$type,\n properties: {\n accDescr: {\n name: GitGraph.accDescr\n },\n accTitle: {\n name: GitGraph.accTitle\n },\n statements: {\n name: GitGraph.statements,\n defaultValue: []\n },\n title: {\n name: GitGraph.title\n }\n },\n superTypes: []\n },\n Group: {\n name: Group.$type,\n properties: {\n icon: {\n name: Group.icon\n },\n id: {\n name: Group.id\n },\n in: {\n name: Group.in\n },\n title: {\n name: Group.title\n }\n },\n superTypes: []\n },\n Info: {\n name: Info.$type,\n properties: {\n accDescr: {\n name: Info.accDescr\n },\n accTitle: {\n name: Info.accTitle\n },\n title: {\n name: Info.title\n }\n },\n superTypes: []\n },\n Item: {\n name: Item.$type,\n properties: {\n classSelector: {\n name: Item.classSelector\n },\n name: {\n name: Item.name\n }\n },\n superTypes: []\n },\n Junction: {\n name: Junction.$type,\n properties: {\n id: {\n name: Junction.id\n },\n in: {\n name: Junction.in\n }\n },\n superTypes: []\n },\n Leaf: {\n name: Leaf.$type,\n properties: {\n classSelector: {\n name: Leaf.classSelector\n },\n name: {\n name: Leaf.name\n },\n value: {\n name: Leaf.value\n }\n },\n superTypes: [Item.$type]\n },\n Merge: {\n name: Merge.$type,\n properties: {\n branch: {\n name: Merge.branch\n },\n id: {\n name: Merge.id\n },\n tags: {\n name: Merge.tags,\n defaultValue: []\n },\n type: {\n name: Merge.type\n }\n },\n superTypes: [Statement.$type]\n },\n Option: {\n name: Option.$type,\n properties: {\n name: {\n name: Option.name\n },\n value: {\n name: Option.value,\n defaultValue: false\n }\n },\n superTypes: []\n },\n Packet: {\n name: Packet.$type,\n properties: {\n accDescr: {\n name: Packet.accDescr\n },\n accTitle: {\n name: Packet.accTitle\n },\n blocks: {\n name: Packet.blocks,\n defaultValue: []\n },\n title: {\n name: Packet.title\n }\n },\n superTypes: []\n },\n PacketBlock: {\n name: PacketBlock.$type,\n properties: {\n bits: {\n name: PacketBlock.bits\n },\n end: {\n name: PacketBlock.end\n },\n label: {\n name: PacketBlock.label\n },\n start: {\n name: PacketBlock.start\n }\n },\n superTypes: []\n },\n Pie: {\n name: Pie.$type,\n properties: {\n accDescr: {\n name: Pie.accDescr\n },\n accTitle: {\n name: Pie.accTitle\n },\n sections: {\n name: Pie.sections,\n defaultValue: []\n },\n showData: {\n name: Pie.showData,\n defaultValue: false\n },\n title: {\n name: Pie.title\n }\n },\n superTypes: []\n },\n PieSection: {\n name: PieSection.$type,\n properties: {\n label: {\n name: PieSection.label\n },\n value: {\n name: PieSection.value\n }\n },\n superTypes: []\n },\n Radar: {\n name: Radar.$type,\n properties: {\n accDescr: {\n name: Radar.accDescr\n },\n accTitle: {\n name: Radar.accTitle\n },\n axes: {\n name: Radar.axes,\n defaultValue: []\n },\n curves: {\n name: Radar.curves,\n defaultValue: []\n },\n options: {\n name: Radar.options,\n defaultValue: []\n },\n title: {\n name: Radar.title\n }\n },\n superTypes: []\n },\n Section: {\n name: Section.$type,\n properties: {\n classSelector: {\n name: Section.classSelector\n },\n name: {\n name: Section.name\n }\n },\n superTypes: [Item.$type]\n },\n Service: {\n name: Service.$type,\n properties: {\n icon: {\n name: Service.icon\n },\n iconText: {\n name: Service.iconText\n },\n id: {\n name: Service.id\n },\n in: {\n name: Service.in\n },\n title: {\n name: Service.title\n }\n },\n superTypes: []\n },\n Statement: {\n name: Statement.$type,\n properties: {},\n superTypes: []\n },\n Treemap: {\n name: Treemap.$type,\n properties: {\n accDescr: {\n name: Treemap.accDescr\n },\n accTitle: {\n name: Treemap.accTitle\n },\n title: {\n name: Treemap.title\n },\n TreemapRows: {\n name: Treemap.TreemapRows,\n defaultValue: []\n }\n },\n superTypes: []\n },\n TreemapRow: {\n name: TreemapRow.$type,\n properties: {\n indent: {\n name: TreemapRow.indent\n },\n item: {\n name: TreemapRow.item\n }\n },\n superTypes: []\n }\n };\n }\n static {\n __name(this, \"MermaidAstReflection\");\n }\n};\nvar reflection = new MermaidAstReflection();\n\n// src/language/generated/grammar.ts\nimport { loadGrammarFromJson } from \"langium\";\nvar loadedArchitectureGrammarGrammar;\nvar ArchitectureGrammarGrammar = /* @__PURE__ */ __name(() => loadedArchitectureGrammarGrammar ?? (loadedArchitectureGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"ArchitectureGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Architecture\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Keyword\",\"value\":\"architecture-beta\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Statement\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"groups\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"services\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"junctions\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"edges\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"LeftPort\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\":\"},{\"$type\":\"Assignment\",\"feature\":\"lhsDir\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"RightPort\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"rhsDir\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\":\"}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Arrow\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"lhsInto\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"--\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"-\"},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@29\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"-\"}]}]},{\"$type\":\"Assignment\",\"feature\":\"rhsInto\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Group\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"group\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"icon\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@28\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@29\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"in\"},{\"$type\":\"Assignment\",\"feature\":\"in\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Service\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"service\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"iconText\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@21\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"icon\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@28\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@29\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"in\"},{\"$type\":\"Assignment\",\"feature\":\"in\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Junction\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"junction\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"in\"},{\"$type\":\"Assignment\",\"feature\":\"in\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Edge\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"lhsId\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"lhsGroup\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"rhsId\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"rhsGroup\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"ARROW_DIRECTION\",\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"L\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"R\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"T\"},\"parenthesized\":false}],\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"B\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARROW_GROUP\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\{group\\\\\\\\}/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARROW_INTO\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/<|>/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@18\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARCH_ICON\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\([\\\\\\\\w-:]+\\\\\\\\)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ARCH_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\[(?:\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'|[\\\\\\\\w ]+)\\\\\\\\]/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false}],\"interfaces\":[],\"types\":[]}`)), \"ArchitectureGrammarGrammar\");\nvar loadedGitGraphGrammarGrammar;\nvar GitGraphGrammarGrammar = /* @__PURE__ */ __name(() => loadedGitGraphGrammarGrammar ?? (loadedGitGraphGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"GitGraphGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"GitGraph\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"gitGraph\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"gitGraph\"},{\"$type\":\"Keyword\",\"value\":\":\"}]},{\"$type\":\"Keyword\",\"value\":\"gitGraph:\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"gitGraph\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]},{\"$type\":\"Keyword\",\"value\":\":\"}]}]},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"statements\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Statement\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Direction\",\"definition\":{\"$type\":\"Assignment\",\"feature\":\"dir\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"LR\"},{\"$type\":\"Keyword\",\"value\":\"TB\"},{\"$type\":\"Keyword\",\"value\":\"BT\"}]}},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Commit\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"commit\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"id:\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"msg:\",\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"message\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"tag:\"},{\"$type\":\"Assignment\",\"feature\":\"tags\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"type:\"},{\"$type\":\"Assignment\",\"feature\":\"type\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"NORMAL\"},{\"$type\":\"Keyword\",\"value\":\"REVERSE\"},{\"$type\":\"Keyword\",\"value\":\"HIGHLIGHT\"}]}}]}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Branch\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"branch\"},{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@24\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"order:\"},{\"$type\":\"Assignment\",\"feature\":\"order\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Merge\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"merge\"},{\"$type\":\"Assignment\",\"feature\":\"branch\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@24\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}]}},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"id:\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"tag:\"},{\"$type\":\"Assignment\",\"feature\":\"tags\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"type:\"},{\"$type\":\"Assignment\",\"feature\":\"type\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"NORMAL\"},{\"$type\":\"Keyword\",\"value\":\"REVERSE\"},{\"$type\":\"Keyword\",\"value\":\"HIGHLIGHT\"}]}}]}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Checkout\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"checkout\"},{\"$type\":\"Keyword\",\"value\":\"switch\"}]},{\"$type\":\"Assignment\",\"feature\":\"branch\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@24\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"CherryPicking\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"cherry-pick\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"id:\"},{\"$type\":\"Assignment\",\"feature\":\"id\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"tag:\"},{\"$type\":\"Assignment\",\"feature\":\"tags\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"parent:\"},{\"$type\":\"Assignment\",\"feature\":\"parent\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"name\":\"REFERENCE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\w([-\\\\\\\\./\\\\\\\\w]*[-\\\\\\\\w])?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false}],\"interfaces\":[],\"types\":[]}`)), \"GitGraphGrammarGrammar\");\nvar loadedInfoGrammarGrammar;\nvar InfoGrammarGrammar = /* @__PURE__ */ __name(() => loadedInfoGrammarGrammar ?? (loadedInfoGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"InfoGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Info\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Keyword\",\"value\":\"info\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"showInfo\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[],\"cardinality\":\"*\"}],\"cardinality\":\"?\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[],\"cardinality\":\"?\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[],\"types\":[]}`)), \"InfoGrammarGrammar\");\nvar loadedPacketGrammarGrammar;\nvar PacketGrammarGrammar = /* @__PURE__ */ __name(() => loadedPacketGrammarGrammar ?? (loadedPacketGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"PacketGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Packet\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"packet\"},{\"$type\":\"Keyword\",\"value\":\"packet-beta\"}]},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"blocks\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"PacketBlock\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"start\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"-\"},{\"$type\":\"Assignment\",\"feature\":\"end\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}}],\"cardinality\":\"?\"}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"+\"},{\"$type\":\"Assignment\",\"feature\":\"bits\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}}]}]},{\"$type\":\"Keyword\",\"value\":\":\"},{\"$type\":\"Assignment\",\"feature\":\"label\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[],\"types\":[]}`)), \"PacketGrammarGrammar\");\nvar loadedPieGrammarGrammar;\nvar PieGrammarGrammar = /* @__PURE__ */ __name(() => loadedPieGrammarGrammar ?? (loadedPieGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"PieGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Pie\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Keyword\",\"value\":\"pie\"},{\"$type\":\"Assignment\",\"feature\":\"showData\",\"operator\":\"?=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"showData\"},\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"sections\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"PieSection\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"label\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\":\"},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT_PIE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/-?[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT_PIE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/-?(0|[1-9][0-9]*)(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER_PIE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[],\"types\":[]}`)), \"PieGrammarGrammar\");\nvar loadedRadarGrammarGrammar;\nvar RadarGrammarGrammar = /* @__PURE__ */ __name(() => loadedRadarGrammarGrammar ?? (loadedRadarGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"RadarGrammar\",\"imports\":[],\"rules\":[{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Radar\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"radar-beta\"},{\"$type\":\"Keyword\",\"value\":\"radar-beta:\"},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"radar-beta\"},{\"$type\":\"Keyword\",\"value\":\":\"}]}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"axis\"},{\"$type\":\"Assignment\",\"feature\":\"axes\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"axes\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"curve\"},{\"$type\":\"Assignment\",\"feature\":\"curves\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"curves\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"options\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"Assignment\",\"feature\":\"options\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Label\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\"[\"},{\"$type\":\"Assignment\",\"feature\":\"label\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@18\"},\"arguments\":[]}},{\"$type\":\"Keyword\",\"value\":\"]\"}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Axis\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Curve\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@1\"},\"arguments\":[],\"cardinality\":\"?\"},{\"$type\":\"Keyword\",\"value\":\"{\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]},{\"$type\":\"Keyword\",\"value\":\"}\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"Entries\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Assignment\",\"feature\":\"entries\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Assignment\",\"feature\":\"entries\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]}}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Assignment\",\"feature\":\"entries\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Keyword\",\"value\":\",\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"},{\"$type\":\"Assignment\",\"feature\":\"entries\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@5\"},\"arguments\":[]}}],\"cardinality\":\"*\"},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"*\"}]}]},\"entry\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"DetailedEntry\",\"returnType\":{\"$ref\":\"#/interfaces@0\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"axis\",\"operator\":\"=\",\"terminal\":{\"$type\":\"CrossReference\",\"type\":{\"$ref\":\"#/rules@2\"},\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]},\"deprecatedSyntax\":false,\"isMulti\":false}},{\"$type\":\"Keyword\",\"value\":\":\",\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"NumberEntry\",\"returnType\":{\"$ref\":\"#/interfaces@0\"},\"definition\":{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Option\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"showLegend\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"ticks\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"max\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"min\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}}]},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"Keyword\",\"value\":\"graticule\"}},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]}}]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"GRATICULE\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"circle\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"polygon\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"name\":\"EOL\",\"dataType\":\"string\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[],\"cardinality\":\"+\"},{\"$type\":\"EndOfFile\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@12\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@13\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@14\"},\"arguments\":[]}}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"FLOAT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9]+\\\\\\\\.[0-9]+(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INT\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/0|[1-9][0-9]*(?!\\\\\\\\.)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"number\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"parenthesized\":false},{\"$type\":\"TerminalRuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STRING\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"([^\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\"|'([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ID\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"string\"},\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\w]([-\\\\\\\\w]*\\\\\\\\w)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NEWLINE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WHITESPACE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"YAML\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/---[\\\\\\\\t ]*\\\\\\\\r?\\\\\\\\n(?:[\\\\\\\\S\\\\\\\\s]*?\\\\\\\\r?\\\\\\\\n)?---(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"DIRECTIVE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%{[\\\\\\\\S\\\\\\\\s]*?}%%(?:\\\\\\\\r?\\\\\\\\n|(?!\\\\\\\\S))/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"SINGLE_LINE_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*%%[^\\\\\\\\n\\\\\\\\r]*/\",\"parenthesized\":false},\"fragment\":false}],\"interfaces\":[{\"$type\":\"Interface\",\"name\":\"Entry\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"axis\",\"isOptional\":true,\"type\":{\"$type\":\"ReferenceType\",\"referenceType\":{\"$type\":\"SimpleType\",\"typeRef\":{\"$ref\":\"#/rules@2\"}},\"isMulti\":false}},{\"$type\":\"TypeAttribute\",\"name\":\"value\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"number\"},\"isOptional\":false}],\"superTypes\":[]}],\"types\":[]}`)), \"RadarGrammarGrammar\");\nvar loadedTreemapGrammarGrammar;\nvar TreemapGrammarGrammar = /* @__PURE__ */ __name(() => loadedTreemapGrammarGrammar ?? (loadedTreemapGrammarGrammar = loadGrammarFromJson(`{\"$type\":\"Grammar\",\"isDeclared\":true,\"name\":\"TreemapGrammar\",\"rules\":[{\"$type\":\"ParserRule\",\"fragment\":true,\"name\":\"TitleAndAccessibilities\",\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"accDescr\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@2\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"accTitle\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@3\"},\"arguments\":[]}},{\"$type\":\"Assignment\",\"feature\":\"title\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@4\"},\"arguments\":[]}}],\"cardinality\":\"+\"},\"entry\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"BOOLEAN\",\"type\":{\"$type\":\"ReturnType\",\"name\":\"boolean\"},\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"true\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"false\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_DESCR\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accDescr(?:[\\\\\\\\t ]*:([^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)|\\\\\\\\s*{([^}]*)})/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"ACC_TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*accTitle[\\\\\\\\t ]*:(?:[^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[^\\\\\\\\n\\\\\\\\r]*)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"TITLE\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[\\\\\\\\t ]*title(?:[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*?(?=%%)|[\\\\\\\\t ][^\\\\\\\\n\\\\\\\\r]*|)/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"entry\":true,\"name\":\"Treemap\",\"returnType\":{\"$ref\":\"#/interfaces@4\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@6\"},\"arguments\":[]},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@0\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"TreemapRows\",\"operator\":\"+=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@15\"},\"arguments\":[]}}],\"cardinality\":\"*\"}]},\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"TREEMAP_KEYWORD\",\"definition\":{\"$type\":\"TerminalAlternatives\",\"elements\":[{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"treemap-beta\"},\"parenthesized\":false},{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\"treemap\"},\"parenthesized\":false}],\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"CLASS_DEF\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/classDef\\\\\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\\\\\s+([^;\\\\\\\\r\\\\\\\\n]*))?(?:;)?/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"STYLE_SEPARATOR\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\":::\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"SEPARATOR\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\":\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"COMMA\",\"definition\":{\"$type\":\"CharacterRange\",\"left\":{\"$type\":\"Keyword\",\"value\":\",\"},\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"INDENTATION\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[ \\\\\\\\t]{1,}/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"WS\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[ \\\\\\\\t]+/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"ML_COMMENT\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\%\\\\\\\\%[^\\\\\\\\n]*/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"TerminalRule\",\"hidden\":true,\"name\":\"NL\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\\\\r?\\\\\\\\n/\",\"parenthesized\":false},\"fragment\":false},{\"$type\":\"ParserRule\",\"name\":\"TreemapRow\",\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"indent\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[]},\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"item\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@17\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@16\"},\"arguments\":[]}]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"ClassDef\",\"dataType\":\"string\",\"definition\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@7\"},\"arguments\":[]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Item\",\"returnType\":{\"$ref\":\"#/interfaces@0\"},\"definition\":{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@19\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@18\"},\"arguments\":[]}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Section\",\"returnType\":{\"$ref\":\"#/interfaces@1\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"classSelector\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]}}],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"ParserRule\",\"name\":\"Leaf\",\"returnType\":{\"$ref\":\"#/interfaces@2\"},\"definition\":{\"$type\":\"Group\",\"elements\":[{\"$type\":\"Assignment\",\"feature\":\"name\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@23\"},\"arguments\":[]}},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[],\"cardinality\":\"?\"},{\"$type\":\"Alternatives\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@9\"},\"arguments\":[]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@10\"},\"arguments\":[]}]},{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@11\"},\"arguments\":[],\"cardinality\":\"?\"},{\"$type\":\"Assignment\",\"feature\":\"value\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@22\"},\"arguments\":[]}},{\"$type\":\"Group\",\"elements\":[{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@8\"},\"arguments\":[]},{\"$type\":\"Assignment\",\"feature\":\"classSelector\",\"operator\":\"=\",\"terminal\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@20\"},\"arguments\":[]}}],\"cardinality\":\"?\"}]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"ID2\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[a-zA-Z_][a-zA-Z0-9_]*/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"TerminalRule\",\"name\":\"NUMBER2\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/[0-9_\\\\\\\\.\\\\\\\\,]+/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false},{\"$type\":\"ParserRule\",\"name\":\"MyNumber\",\"dataType\":\"number\",\"definition\":{\"$type\":\"RuleCall\",\"rule\":{\"$ref\":\"#/rules@21\"},\"arguments\":[]},\"entry\":false,\"fragment\":false,\"parameters\":[]},{\"$type\":\"TerminalRule\",\"name\":\"STRING2\",\"definition\":{\"$type\":\"RegexToken\",\"regex\":\"/\\\\\"[^\\\\\"]*\\\\\"|'[^']*'/\",\"parenthesized\":false},\"fragment\":false,\"hidden\":false}],\"interfaces\":[{\"$type\":\"Interface\",\"name\":\"Item\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"name\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"},\"isOptional\":false},{\"$type\":\"TypeAttribute\",\"name\":\"classSelector\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}}],\"superTypes\":[]},{\"$type\":\"Interface\",\"name\":\"Section\",\"superTypes\":[{\"$ref\":\"#/interfaces@0\"}],\"attributes\":[]},{\"$type\":\"Interface\",\"name\":\"Leaf\",\"superTypes\":[{\"$ref\":\"#/interfaces@0\"}],\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"value\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"number\"},\"isOptional\":false}]},{\"$type\":\"Interface\",\"name\":\"ClassDefStatement\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"className\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"},\"isOptional\":false},{\"$type\":\"TypeAttribute\",\"name\":\"styleText\",\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"},\"isOptional\":false}],\"superTypes\":[]},{\"$type\":\"Interface\",\"name\":\"Treemap\",\"attributes\":[{\"$type\":\"TypeAttribute\",\"name\":\"TreemapRows\",\"type\":{\"$type\":\"ArrayType\",\"elementType\":{\"$type\":\"SimpleType\",\"typeRef\":{\"$ref\":\"#/rules@15\"}}},\"isOptional\":false},{\"$type\":\"TypeAttribute\",\"name\":\"title\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}},{\"$type\":\"TypeAttribute\",\"name\":\"accTitle\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}},{\"$type\":\"TypeAttribute\",\"name\":\"accDescr\",\"isOptional\":true,\"type\":{\"$type\":\"SimpleType\",\"primitiveType\":\"string\"}}],\"superTypes\":[]}],\"imports\":[],\"types\":[],\"$comment\":\"/**\\\\n * Treemap grammar for Langium\\\\n * Converted from mindmap grammar\\\\n *\\\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\\\n * before the treemap keyword, allowing for empty lines and comments before the\\\\n * treemap declaration.\\\\n */\"}`)), \"TreemapGrammarGrammar\");\n\n// src/language/generated/module.ts\nvar ArchitectureGrammarLanguageMetaData = {\n languageId: \"architecture\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar GitGraphGrammarLanguageMetaData = {\n languageId: \"gitGraph\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar InfoGrammarLanguageMetaData = {\n languageId: \"info\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar PacketGrammarLanguageMetaData = {\n languageId: \"packet\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar PieGrammarLanguageMetaData = {\n languageId: \"pie\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar RadarGrammarLanguageMetaData = {\n languageId: \"radar\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar TreemapGrammarLanguageMetaData = {\n languageId: \"treemap\",\n fileExtensions: [\".mmd\", \".mermaid\"],\n caseInsensitive: false,\n mode: \"production\"\n};\nvar MermaidGeneratedSharedModule = {\n AstReflection: /* @__PURE__ */ __name(() => new MermaidAstReflection(), \"AstReflection\")\n};\nvar ArchitectureGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => ArchitectureGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => ArchitectureGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar GitGraphGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => GitGraphGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => GitGraphGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar InfoGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => InfoGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => InfoGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar PacketGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => PacketGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => PacketGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar PieGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => PieGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => PieGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar RadarGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => RadarGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => RadarGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\nvar TreemapGrammarGeneratedModule = {\n Grammar: /* @__PURE__ */ __name(() => TreemapGrammarGrammar(), \"Grammar\"),\n LanguageMetaData: /* @__PURE__ */ __name(() => TreemapGrammarLanguageMetaData, \"LanguageMetaData\"),\n parser: {}\n};\n\n// src/language/common/valueConverter.ts\nimport { DefaultValueConverter } from \"langium\";\n\n// src/language/common/matcher.ts\nvar accessibilityDescrRegex = /accDescr(?:[\\t ]*:([^\\n\\r]*)|\\s*{([^}]*)})/;\nvar accessibilityTitleRegex = /accTitle[\\t ]*:([^\\n\\r]*)/;\nvar titleRegex = /title([\\t ][^\\n\\r]*|)/;\n\n// src/language/common/valueConverter.ts\nvar rulesRegexes = {\n ACC_DESCR: accessibilityDescrRegex,\n ACC_TITLE: accessibilityTitleRegex,\n TITLE: titleRegex\n};\nvar AbstractMermaidValueConverter = class extends DefaultValueConverter {\n static {\n __name(this, \"AbstractMermaidValueConverter\");\n }\n runConverter(rule, input, cstNode) {\n let value = this.runCommonConverter(rule, input, cstNode);\n if (value === void 0) {\n value = this.runCustomConverter(rule, input, cstNode);\n }\n if (value === void 0) {\n return super.runConverter(rule, input, cstNode);\n }\n return value;\n }\n runCommonConverter(rule, input, _cstNode) {\n const regex = rulesRegexes[rule.name];\n if (regex === void 0) {\n return void 0;\n }\n const match = regex.exec(input);\n if (match === null) {\n return void 0;\n }\n if (match[1] !== void 0) {\n return match[1].trim().replace(/[\\t ]{2,}/gm, \" \");\n }\n if (match[2] !== void 0) {\n return match[2].replace(/^\\s*/gm, \"\").replace(/\\s+$/gm, \"\").replace(/[\\t ]{2,}/gm, \" \").replace(/[\\n\\r]{2,}/gm, \"\\n\");\n }\n return void 0;\n }\n};\nvar CommonValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"CommonValueConverter\");\n }\n runCustomConverter(_rule, _input, _cstNode) {\n return void 0;\n }\n};\n\n// src/language/common/tokenBuilder.ts\nimport { DefaultTokenBuilder } from \"langium\";\nvar AbstractMermaidTokenBuilder = class extends DefaultTokenBuilder {\n static {\n __name(this, \"AbstractMermaidTokenBuilder\");\n }\n constructor(keywords) {\n super();\n this.keywords = new Set(keywords);\n }\n buildKeywordTokens(rules, terminalTokens, options) {\n const tokenTypes = super.buildKeywordTokens(rules, terminalTokens, options);\n tokenTypes.forEach((tokenType) => {\n if (this.keywords.has(tokenType.name) && tokenType.PATTERN !== void 0) {\n tokenType.PATTERN = new RegExp(tokenType.PATTERN.toString() + \"(?:(?=%%)|(?!\\\\S))\");\n }\n });\n return tokenTypes;\n }\n};\nvar CommonTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"CommonTokenBuilder\");\n }\n};\n\nexport {\n __name,\n Architecture,\n isArchitecture,\n Branch,\n isBranch,\n Commit,\n isCommit,\n GitGraph,\n isGitGraph,\n Info,\n isInfo,\n Merge,\n isMerge,\n Packet,\n isPacket,\n PacketBlock,\n isPacketBlock,\n Pie,\n isPie,\n PieSection,\n isPieSection,\n Radar,\n Statement,\n Treemap,\n isTreemap,\n MermaidGeneratedSharedModule,\n ArchitectureGrammarGeneratedModule,\n GitGraphGrammarGeneratedModule,\n InfoGrammarGeneratedModule,\n PacketGrammarGeneratedModule,\n PieGrammarGeneratedModule,\n RadarGrammarGeneratedModule,\n TreemapGrammarGeneratedModule,\n AbstractMermaidValueConverter,\n CommonValueConverter,\n AbstractMermaidTokenBuilder,\n CommonTokenBuilder\n};\n"], - "mappings": "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", - "names": ["main_exports", "__export", "AnnotatedTextEdit", "ChangeAnnotation", "ChangeAnnotationIdentifier", "CodeAction", "CodeActionContext", "CodeActionKind", "CodeActionTriggerKind", "CodeDescription", "CodeLens", "Color", "ColorInformation", "ColorPresentation", "Command", "CompletionItem", "CompletionItemKind", "CompletionItemLabelDetails", "CompletionItemTag", "CompletionList", "CreateFile", "DeleteFile", "Diagnostic", "DiagnosticRelatedInformation", "DiagnosticSeverity", "DiagnosticTag", "DocumentHighlight", "DocumentHighlightKind", "DocumentLink", "DocumentSymbol", "DocumentUri", "EOL", "FoldingRange", "FoldingRangeKind", "FormattingOptions", "Hover", "InlayHint", "InlayHintKind", "InlayHintLabelPart", "InlineCompletionContext", "InlineCompletionItem", "InlineCompletionList", "InlineCompletionTriggerKind", "InlineValueContext", "InlineValueEvaluatableExpression", "InlineValueText", "InlineValueVariableLookup", "InsertReplaceEdit", "InsertTextFormat", "InsertTextMode", "Location", "LocationLink", "MarkedString", "MarkupContent", "MarkupKind", "OptionalVersionedTextDocumentIdentifier", "ParameterInformation", "Position", "Range", "RenameFile", "SelectedCompletionInfo", "SelectionRange", "SemanticTokenModifiers", "SemanticTokenTypes", "SemanticTokens", "SignatureInformation", "StringValue", "SymbolInformation", "SymbolKind", "SymbolTag", "TextDocument", "TextDocumentEdit", "TextDocumentIdentifier", "TextDocumentItem", "TextEdit", "URI", "VersionedTextDocumentIdentifier", "WorkspaceChange", "WorkspaceEdit", "WorkspaceFolder", "WorkspaceSymbol", "integer", "uinteger", "TextEditChangeImpl", "ChangeAnnotations", "FullTextDocument", "Is", "init_main", "__esmMin", "is", "value", "__name", "create", "line", "character", "candidate", "one", "two", "three", "four", "uri", "range", "targetUri", "targetRange", "targetSelectionRange", "originSelectionRange", "red", "green", "blue", "alpha", "color", "label", "textEdit", "additionalTextEdits", "startLine", "endLine", "startCharacter", "endCharacter", "kind", "collapsedText", "result", "location", "message", "severity", "code", "source", "relatedInformation", "_a", "title", "command", "args", "replace", "newText", "insert", "position", "del", "needsConfirmation", "description", "annotation", "textDocument", "edits", "options", "oldUri", "newUri", "change", "changeAnnotations", "edit", "id", "annotations", "idOrAnnotation", "workspaceEdit", "textEditChange", "key", "textDocumentEdit", "optionsOrAnnotation", "operation", "version", "languageId", "text", "items", "isIncomplete", "fromPlainText", "plainText", "documentation", "parameters", "name", "containerName", "detail", "selectionRange", "children", "diagnostics", "only", "triggerKind", "kindOrCommandOrEdit", "checkKind", "data", "tabSize", "insertSpaces", "target", "parent", "variableName", "caseSensitiveLookup", "expression", "frameId", "stoppedLocation", "createSnippet", "insertText", "filterText", "selectedCompletionInfo", "content", "applyEdits", "document", "sortedEdits", "mergeSort", "a", "b", "diff", "lastModifiedOffset", "i", "e", "startOffset", "endOffset", "compare", "p", "left", "right", "leftIdx", "rightIdx", "start", "end", "event", "lineOffsets", "isLineStart", "ch", "offset", "low", "high", "mid", "lineOffset", "nextLineOffset", "toString", "defined", "undefined", "boolean", "string", "number", "numberRange", "min", "max", "func", "objectLiteral", "typedArray", "check", "require_ral", "__commonJSMin", "exports", "_ral", "RAL", "__name", "install", "ral", "require_is", "__commonJSMin", "exports", "boolean", "value", "__name", "string", "number", "error", "func", "array", "stringArray", "elem", "require_events", "__commonJSMin", "exports", "ral_1", "Event", "_disposable", "CallbackList", "__name", "callback", "context", "bucket", "foundCallbackWithDifferentContext", "len", "args", "ret", "callbacks", "contexts", "i", "e", "Emitter", "_Emitter", "_options", "listener", "thisArgs", "disposables", "result", "event", "require_cancellation", "__commonJSMin", "exports", "ral_1", "Is", "events_1", "CancellationToken", "is", "value", "candidate", "__name", "shortcutEvent", "callback", "context", "handle", "MutableToken", "CancellationTokenSource", "require_messages", "__commonJSMin", "exports", "is", "ErrorCodes", "ResponseError", "_ResponseError", "__name", "code", "message", "data", "result", "ParameterStructures", "_ParameterStructures", "kind", "value", "AbstractMessageSignature", "method", "numberOfParams", "RequestType0", "RequestType", "_parameterStructures", "RequestType1", "RequestType2", "RequestType3", "RequestType4", "RequestType5", "RequestType6", "RequestType7", "RequestType8", "RequestType9", "NotificationType", "NotificationType0", "NotificationType1", "NotificationType2", "NotificationType3", "NotificationType4", "NotificationType5", "NotificationType6", "NotificationType7", "NotificationType8", "NotificationType9", "Message", "isRequest", "candidate", "isNotification", "isResponse", "require_linkedMap", "__commonJSMin", "exports", "_a", "Touch", "LinkedMap", "__name", "key", "touch", "item", "value", "callbackfn", "thisArg", "state", "current", "iterator", "result", "newSize", "currentSize", "next", "previous", "data", "LRUCache", "limit", "ratio", "require_disposable", "__commonJSMin", "exports", "Disposable", "create", "func", "__name", "require_sharedArrayCancellation", "__commonJSMin", "exports", "cancellation_1", "CancellationState", "SharedArraySenderStrategy", "__name", "request", "buffer", "data", "_conn", "id", "SharedArrayBufferCancellationToken", "SharedArrayBufferCancellationTokenSource", "SharedArrayReceiverStrategy", "require_semaphore", "__commonJSMin", "exports", "ral_1", "Semaphore", "__name", "capacity", "thunk", "resolve", "reject", "next", "result", "value", "err", "require_messageReader", "__commonJSMin", "exports", "ral_1", "Is", "events_1", "semaphore_1", "MessageReader", "is", "value", "candidate", "__name", "AbstractMessageReader", "error", "info", "ResolvedMessageReaderOptions", "fromOptions", "options", "charset", "result", "contentDecoder", "contentDecoders", "contentTypeDecoder", "contentTypeDecoders", "decoder", "ReadableStreamMessageReader", "readable", "timeout", "callback", "data", "headers", "contentLength", "length", "body", "bytes", "message", "token", "require_messageWriter", "__commonJSMin", "exports", "ral_1", "Is", "semaphore_1", "events_1", "ContentLength", "CRLF", "MessageWriter", "is", "value", "candidate", "__name", "AbstractMessageWriter", "error", "message", "count", "ResolvedMessageWriterOptions", "fromOptions", "options", "WriteableStreamMessageWriter", "writable", "msg", "buffer", "headers", "data", "require_messageBuffer", "__commonJSMin", "exports", "CR", "LF", "CRLF", "AbstractMessageBuffer", "__name", "encoding", "chunk", "toAppend", "lowerCaseKeys", "state", "chunkIndex", "offset", "chunkBytesRead", "row", "buffer", "result", "headers", "i", "header", "index", "key", "value", "length", "byteCount", "resultOffset", "chunkPart", "require_connection", "__commonJSMin", "exports", "ral_1", "Is", "messages_1", "linkedMap_1", "events_1", "cancellation_1", "CancelNotification", "ProgressToken", "is", "value", "__name", "ProgressNotification", "ProgressType", "StarRequestHandler", "Trace", "TraceValues", "fromString", "toString", "TraceFormat", "SetTraceNotification", "LogTraceNotification", "ConnectionErrors", "ConnectionError", "_ConnectionError", "code", "message", "ConnectionStrategy", "candidate", "IdCancellationReceiverStrategy", "RequestCancellationReceiverStrategy", "CancellationReceiverStrategy", "_", "CancellationSenderStrategy", "conn", "id", "CancellationStrategy", "MessageStrategy", "ConnectionOptions", "ConnectionState", "createMessageConnection", "messageReader", "messageWriter", "_logger", "options", "logger", "sequenceNumber", "notificationSequenceNumber", "unknownResponseSequenceNumber", "version", "starRequestHandler", "requestHandlers", "starNotificationHandler", "notificationHandlers", "progressHandlers", "timer", "messageQueue", "responsePromises", "knownCanceledRequests", "requestTokens", "trace", "traceFormat", "tracer", "state", "errorEmitter", "closeEmitter", "unhandledNotificationEmitter", "unhandledProgressEmitter", "disposeEmitter", "cancellationStrategy", "createRequestQueueKey", "createResponseQueueKey", "createNotificationQueueKey", "addMessageToQueue", "queue", "cancelUndispatched", "_message", "isListening", "isClosed", "isDisposed", "closeHandler", "readErrorHandler", "error", "writeErrorHandler", "data", "triggerMessageQueue", "processMessageQueue", "handleMessage", "handleRequest", "handleNotification", "handleResponse", "handleInvalidMessage", "messageStrategy", "callback", "cancelId", "key", "toCancel", "strategy", "response", "traceSendingResponse", "cancellationToken", "traceReceivedNotification", "requestMessage", "reply", "resultOrError", "method", "startTime", "replyError", "replySuccess", "result", "traceReceivedRequest", "element", "type", "requestHandler", "tokenKey", "cancellationSource", "handlerResult", "promise", "responseMessage", "responsePromise", "traceReceivedResponse", "notificationHandler", "params", "responseHandler", "stringifyTrace", "traceSendingRequest", "logLSPMessage", "traceSendingNotification", "lspMessage", "throwIfClosedOrDisposed", "throwIfListening", "throwIfNotListening", "undefinedToNull", "param", "nullToUndefined", "isNamedParam", "computeSingleParam", "parameterStructures", "computeMessageParams", "numberOfParams", "i", "connection", "args", "messageParams", "first", "paramStart", "paramEnd", "notificationMessage", "handler", "_type", "token", "last", "disposable", "p", "resolve", "reject", "resolveWithCleanup", "r", "rejectWithCleanup", "_value", "_tracer", "sendNotificationOrTraceOptions", "_sendNotification", "_traceFormat", "verbose", "require_api", "__commonJSMin", "exports", "messages_1", "__name", "linkedMap_1", "disposable_1", "events_1", "cancellation_1", "sharedArrayCancellation_1", "messageReader_1", "messageWriter_1", "messageBuffer_1", "connection_1", "ral_1", "require_ril", "__commonJSMin", "exports", "api_1", "MessageBuffer", "_MessageBuffer", "__name", "encoding", "value", "_encoding", "buffer", "length", "ReadableStreamWrapper", "socket", "event", "listener", "WritableStreamWrapper", "data", "_textEncoder", "_ril", "msg", "options", "callback", "ms", "args", "handle", "RIL", "install", "require_main", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "desc", "__name", "__exportStar", "p", "ril_1", "api_1", "BrowserMessageReader", "port", "event", "callback", "BrowserMessageWriter", "msg", "error", "createMessageConnection", "reader", "writer", "logger", "options", "require_browser", "__commonJSMin", "exports", "module", "require_messages", "__commonJSMin", "exports", "vscode_jsonrpc_1", "MessageDirection", "RegistrationType", "__name", "method", "ProtocolRequestType0", "ProtocolRequestType", "ProtocolNotificationType0", "ProtocolNotificationType", "require_is", "__commonJSMin", "exports", "boolean", "value", "__name", "string", "number", "error", "func", "array", "stringArray", "elem", "typedArray", "check", "objectLiteral", "require_protocol_implementation", "__commonJSMin", "exports", "messages_1", "ImplementationRequest", "require_protocol_typeDefinition", "__commonJSMin", "exports", "messages_1", "TypeDefinitionRequest", "require_protocol_workspaceFolder", "__commonJSMin", "exports", "messages_1", "WorkspaceFoldersRequest", "DidChangeWorkspaceFoldersNotification", "require_protocol_configuration", "__commonJSMin", "exports", "messages_1", "ConfigurationRequest", "require_protocol_colorProvider", "__commonJSMin", "exports", "messages_1", "DocumentColorRequest", "ColorPresentationRequest", "require_protocol_foldingRange", "__commonJSMin", "exports", "messages_1", "FoldingRangeRequest", "FoldingRangeRefreshRequest", "require_protocol_declaration", "__commonJSMin", "exports", "messages_1", "DeclarationRequest", "require_protocol_selectionRange", "__commonJSMin", "exports", "messages_1", "SelectionRangeRequest", "require_protocol_progress", "__commonJSMin", "exports", "vscode_jsonrpc_1", "messages_1", "WorkDoneProgress", "is", "value", "__name", "WorkDoneProgressCreateRequest", "WorkDoneProgressCancelNotification", "require_protocol_callHierarchy", "__commonJSMin", "exports", "messages_1", "CallHierarchyPrepareRequest", "CallHierarchyIncomingCallsRequest", "CallHierarchyOutgoingCallsRequest", "require_protocol_semanticTokens", "__commonJSMin", "exports", "messages_1", "TokenFormat", "SemanticTokensRegistrationType", "SemanticTokensRequest", "SemanticTokensDeltaRequest", "SemanticTokensRangeRequest", "SemanticTokensRefreshRequest", "require_protocol_showDocument", "__commonJSMin", "exports", "messages_1", "ShowDocumentRequest", "require_protocol_linkedEditingRange", "__commonJSMin", "exports", "messages_1", "LinkedEditingRangeRequest", "require_protocol_fileOperations", "__commonJSMin", "exports", "messages_1", "FileOperationPatternKind", "WillCreateFilesRequest", "DidCreateFilesNotification", "WillRenameFilesRequest", "DidRenameFilesNotification", "DidDeleteFilesNotification", "WillDeleteFilesRequest", "require_protocol_moniker", "__commonJSMin", "exports", "messages_1", "UniquenessLevel", "MonikerKind", "MonikerRequest", "require_protocol_typeHierarchy", "__commonJSMin", "exports", "messages_1", "TypeHierarchyPrepareRequest", "TypeHierarchySupertypesRequest", "TypeHierarchySubtypesRequest", "require_protocol_inlineValue", "__commonJSMin", "exports", "messages_1", "InlineValueRequest", "InlineValueRefreshRequest", "require_protocol_inlayHint", "__commonJSMin", "exports", "messages_1", "InlayHintRequest", "InlayHintResolveRequest", "InlayHintRefreshRequest", "require_protocol_diagnostic", "__commonJSMin", "exports", "vscode_jsonrpc_1", "Is", "messages_1", "DiagnosticServerCancellationData", "is", "value", "candidate", "__name", "DocumentDiagnosticReportKind", "DocumentDiagnosticRequest", "WorkspaceDiagnosticRequest", "DiagnosticRefreshRequest", "require_protocol_notebook", "__commonJSMin", "exports", "vscode_languageserver_types_1", "Is", "messages_1", "NotebookCellKind", "is", "value", "__name", "ExecutionSummary", "create", "executionOrder", "success", "result", "candidate", "equals", "one", "other", "NotebookCell", "kind", "document", "diff", "two", "equalsMetadata", "oneArray", "otherArray", "i", "oneKeys", "otherKeys", "prop", "NotebookDocument", "uri", "notebookType", "version", "cells", "NotebookDocumentSyncRegistrationType", "DidOpenNotebookDocumentNotification", "NotebookCellArrayChange", "start", "deleteCount", "DidChangeNotebookDocumentNotification", "DidSaveNotebookDocumentNotification", "DidCloseNotebookDocumentNotification", "require_protocol_inlineCompletion", "__commonJSMin", "exports", "messages_1", "InlineCompletionRequest", "require_protocol", "__commonJSMin", "exports", "messages_1", "vscode_languageserver_types_1", "Is", "protocol_implementation_1", "__name", "protocol_typeDefinition_1", "protocol_workspaceFolder_1", "protocol_configuration_1", "protocol_colorProvider_1", "protocol_foldingRange_1", "protocol_declaration_1", "protocol_selectionRange_1", "protocol_progress_1", "protocol_callHierarchy_1", "protocol_semanticTokens_1", "protocol_showDocument_1", "protocol_linkedEditingRange_1", "protocol_fileOperations_1", "protocol_moniker_1", "protocol_typeHierarchy_1", "protocol_inlineValue_1", "protocol_inlayHint_1", "protocol_diagnostic_1", "protocol_notebook_1", "protocol_inlineCompletion_1", "TextDocumentFilter", "is", "value", "candidate", "NotebookDocumentFilter", "NotebookCellTextDocumentFilter", "DocumentSelector", "elem", "RegistrationRequest", "UnregistrationRequest", "ResourceOperationKind", "FailureHandlingKind", "PositionEncodingKind", "StaticRegistrationOptions", "hasId", "TextDocumentRegistrationOptions", "WorkDoneProgressOptions", "hasWorkDoneProgress", "InitializeRequest", "InitializeErrorCodes", "InitializedNotification", "ShutdownRequest", "ExitNotification", "DidChangeConfigurationNotification", "MessageType", "ShowMessageNotification", "ShowMessageRequest", "LogMessageNotification", "TelemetryEventNotification", "TextDocumentSyncKind", "DidOpenTextDocumentNotification", "TextDocumentContentChangeEvent", "isIncremental", "event", "isFull", "DidChangeTextDocumentNotification", "DidCloseTextDocumentNotification", "DidSaveTextDocumentNotification", "TextDocumentSaveReason", "WillSaveTextDocumentNotification", "WillSaveTextDocumentWaitUntilRequest", "DidChangeWatchedFilesNotification", "FileChangeType", "RelativePattern", "WatchKind", "PublishDiagnosticsNotification", "CompletionTriggerKind", "CompletionRequest", "CompletionResolveRequest", "HoverRequest", "SignatureHelpTriggerKind", "SignatureHelpRequest", "DefinitionRequest", "ReferencesRequest", "DocumentHighlightRequest", "DocumentSymbolRequest", "CodeActionRequest", "CodeActionResolveRequest", "WorkspaceSymbolRequest", "WorkspaceSymbolResolveRequest", "CodeLensRequest", "CodeLensResolveRequest", "CodeLensRefreshRequest", "DocumentLinkRequest", "DocumentLinkResolveRequest", "DocumentFormattingRequest", "DocumentRangeFormattingRequest", "DocumentRangesFormattingRequest", "DocumentOnTypeFormattingRequest", "PrepareSupportDefaultBehavior", "RenameRequest", "PrepareRenameRequest", "ExecuteCommandRequest", "ApplyWorkspaceEditRequest", "require_connection", "__commonJSMin", "exports", "vscode_jsonrpc_1", "createProtocolConnection", "input", "output", "logger", "options", "__name", "require_api", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "desc", "__name", "__exportStar", "p", "connection_1", "LSPErrorCodes", "require_main", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "desc", "__name", "__exportStar", "p", "browser_1", "createProtocolConnection", "reader", "writer", "logger", "options", "lib_exports", "__export", "AbstractAstReflection", "AbstractCstNode", "AbstractLangiumParser", "AbstractParserErrorMessageProvider", "AbstractThreadedAsyncParser", "ast_utils_exports", "BiMap", "cancellation_exports", "CompositeCstNodeImpl", "ContextCache", "CstNodeBuilder", "cst_utils_exports", "DEFAULT_TOKENIZE_OPTIONS", "DONE_RESULT", "DatatypeSymbol", "DefaultAstNodeDescriptionProvider", "DefaultAstNodeLocator", "DefaultAsyncParser", "DefaultCommentProvider", "DefaultConfigurationProvider", "DefaultDocumentBuilder", "DefaultDocumentValidator", "DefaultHydrator", "DefaultIndexManager", "DefaultJsonSerializer", "DefaultLangiumDocumentFactory", "DefaultLangiumDocuments", "DefaultLangiumProfiler", "DefaultLexer", "DefaultLexerErrorMessageProvider", "DefaultLinker", "DefaultNameProvider", "DefaultReferenceDescriptionProvider", "DefaultReferences", "DefaultScopeComputation", "DefaultScopeProvider", "DefaultServiceRegistry", "DefaultTokenBuilder", "DefaultValueConverter", "DefaultWorkspaceLock", "DefaultWorkspaceManager", "Deferred", "Disposable", "DisposableCache", "DocumentCache", "DocumentState", "DocumentValidator", "EMPTY_SCOPE", "EMPTY_STREAM", "EmptyFileSystem", "EmptyFileSystemProvider", "ErrorWithLocation", "ast_exports", "grammar_utils_exports", "IndentationAwareLexer", "IndentationAwareTokenBuilder", "JSDocDocumentationProvider", "LangiumCompletionParser", "LangiumParser", "LangiumParserErrorMessageProvider", "LeafCstNodeImpl", "LexingMode", "MapScope", "Module", "MultiMap", "MultiMapScope", "OperationCancelled", "ParserWorker", "ProfilingTask", "Reduction", "RefResolving", "regexp_utils_exports", "RootCstNodeImpl", "SimpleCache", "StreamImpl", "StreamScope", "TextDocument", "TreeStreamImpl", "URI", "UriTrie", "UriUtils", "VALIDATE_EACH_NODE", "ValidationCategory", "ValidationRegistry", "ValueConverter", "WorkspaceCache", "assertCondition", "assertUnreachable", "createCompletionParser", "createDefaultCoreModule", "createDefaultSharedCoreModule", "createGrammarConfig", "createLangiumParser", "createParser", "delayNextTick", "diagnosticData", "eagerLoad", "getDiagnosticRange", "indentationBuilderDefaultOptions", "inject", "interruptAndCheck", "isAstNode", "isAstNodeDescription", "isAstNodeWithComment", "isCompositeCstNode", "isIMultiModeLexerDefinition", "isJSDoc", "isLeafCstNode", "isLinkingError", "isMultiReference", "isNamed", "isOperationCancelled", "isReference", "isRootCstNode", "isTokenTypeArray", "isTokenTypeDictionary", "loadGrammarFromJson", "parseJSDoc", "prepareLangiumParser", "setInterruptionPeriod", "startCancelableOperation", "stream", "toDiagnosticData", "toDiagnosticSeverity", "cst_utils_exports", "__export", "DefaultNameRegexp", "RangeComparison", "compareRange", "findCommentNode", "findDeclarationNodeAtOffset", "findLeafNodeAtOffset", "findLeafNodeBeforeOffset", "flattenCst", "getDatatypeNode", "getInteriorNodes", "getNextNode", "getPreviousNode", "getStartlineNode", "inRange", "isChildNode", "isCommentNode", "streamCst", "toDocumentSegment", "tokenToRange", "isAstNode", "obj", "__name", "isReference", "isMultiReference", "isAstNodeDescription", "isLinkingError", "AbstractAstReflection", "refInfo", "metaData", "referenceType", "type", "result", "node", "subtype", "supertype", "nested", "existing", "s", "allTypes", "types", "possibleSubType", "isCompositeCstNode", "isLeafCstNode", "isRootCstNode", "StreamImpl", "_StreamImpl", "__name", "startFn", "nextFn", "iterator", "count", "next", "result", "keyFn", "valueFn", "entryStream", "element", "other", "state", "DONE_RESULT", "separator", "value", "addSeparator", "toString", "searchElement", "fromIndex", "index", "predicate", "callbackfn", "done", "initialValue", "previousValue", "mapped", "isIterable", "depth", "stream", "skipCount", "i", "maxSize", "by", "key", "otherKeySet", "item", "e", "ownKey", "obj", "EMPTY_STREAM", "collections", "collection", "TreeStreamImpl", "root", "children", "options", "Reduction", "sum", "a", "b", "product", "min", "max", "ast_utils_exports", "__export", "assignMandatoryProperties", "copyAstNode", "findRootNode", "getContainerOfType", "getDocument", "getReferenceNodes", "hasContainerOfType", "linkContentToContainer", "streamAllContents", "streamAst", "streamContents", "streamReferences", "linkContentToContainer", "node", "options", "name", "value", "item", "index", "isAstNode", "__name", "getContainerOfType", "typePredicate", "hasContainerOfType", "predicate", "getDocument", "result", "findRootNode", "getReferenceNodes", "reference", "isReference", "isMultiReference", "streamContents", "range", "StreamImpl", "state", "property", "isAstNodeInRange", "element", "DONE_RESULT", "streamAllContents", "root", "TreeStreamImpl", "streamAst", "astNode", "nodeRange", "inRange", "streamReferences", "assignMandatoryProperties", "reflection", "typeMetaData", "genericNode", "copyDefaultValue", "propertyType", "copyAstNode", "buildReference", "trace", "copy", "copiedArray", "ast_exports", "__export", "AbstractElement", "AbstractParserRule", "AbstractRule", "AbstractType", "Action", "Alternatives", "ArrayLiteral", "ArrayType", "Assignment", "BooleanLiteral", "CharacterRange", "Condition", "Conjunction", "CrossReference", "Disjunction", "EndOfFile", "Grammar", "GrammarImport", "Group", "InferredType", "InfixRule", "InfixRuleOperatorList", "InfixRuleOperators", "Interface", "Keyword", "LangiumGrammarAstReflection", "LangiumGrammarTerminals", "NamedArgument", "NegatedToken", "Negation", "NumberLiteral", "Parameter", "ParameterReference", "ParserRule", "ReferenceType", "RegexToken", "ReturnType", "RuleCall", "SimpleType", "StringLiteral", "TerminalAlternatives", "TerminalElement", "TerminalGroup", "TerminalRule", "TerminalRuleCall", "Type", "TypeAttribute", "TypeDefinition", "UnionType", "UnorderedGroup", "UntilToken", "ValueLiteral", "Wildcard", "isAbstractElement", "isAbstractParserRule", "isAbstractRule", "isAbstractType", "isAction", "isAlternatives", "isArrayLiteral", "isArrayType", "isAssignment", "isBooleanLiteral", "isCharacterRange", "isCondition", "isConjunction", "isCrossReference", "isDisjunction", "isEndOfFile", "isGrammar", "isGrammarImport", "isGroup", "isInferredType", "isInfixRule", "isInfixRuleOperatorList", "isInfixRuleOperators", "isInterface", "isKeyword", "isNamedArgument", "isNegatedToken", "isNegation", "isNumberLiteral", "isParameter", "isParameterReference", "isParserRule", "isReferenceType", "isRegexToken", "isReturnType", "isRuleCall", "isSimpleType", "isStringLiteral", "isTerminalAlternatives", "isTerminalElement", "isTerminalGroup", "isTerminalRule", "isTerminalRuleCall", "isType", "isTypeAttribute", "isTypeDefinition", "isUnionType", "isUnorderedGroup", "isUntilToken", "isValueLiteral", "isWildcard", "reflection", "LangiumGrammarTerminals", "AbstractElement", "isAbstractElement", "item", "reflection", "__name", "AbstractParserRule", "isAbstractParserRule", "AbstractRule", "isAbstractRule", "AbstractType", "isAbstractType", "Action", "isAction", "Alternatives", "isAlternatives", "ArrayLiteral", "isArrayLiteral", "ArrayType", "isArrayType", "Assignment", "isAssignment", "BooleanLiteral", "isBooleanLiteral", "CharacterRange", "isCharacterRange", "Condition", "isCondition", "Conjunction", "isConjunction", "CrossReference", "isCrossReference", "Disjunction", "isDisjunction", "EndOfFile", "isEndOfFile", "Grammar", "isGrammar", "GrammarImport", "isGrammarImport", "Group", "isGroup", "InferredType", "isInferredType", "InfixRule", "isInfixRule", "InfixRuleOperatorList", "isInfixRuleOperatorList", "InfixRuleOperators", "isInfixRuleOperators", "Interface", "isInterface", "Keyword", "isKeyword", "NamedArgument", "isNamedArgument", "NegatedToken", "isNegatedToken", "Negation", "isNegation", "NumberLiteral", "isNumberLiteral", "Parameter", "isParameter", "ParameterReference", "isParameterReference", "ParserRule", "isParserRule", "ReferenceType", "isReferenceType", "RegexToken", "isRegexToken", "ReturnType", "isReturnType", "RuleCall", "isRuleCall", "SimpleType", "isSimpleType", "StringLiteral", "isStringLiteral", "TerminalAlternatives", "isTerminalAlternatives", "TerminalElement", "isTerminalElement", "TerminalGroup", "isTerminalGroup", "TerminalRule", "isTerminalRule", "TerminalRuleCall", "isTerminalRuleCall", "Type", "isType", "TypeAttribute", "isTypeAttribute", "TypeDefinition", "isTypeDefinition", "UnionType", "isUnionType", "UnorderedGroup", "isUnorderedGroup", "UntilToken", "isUntilToken", "ValueLiteral", "isValueLiteral", "Wildcard", "isWildcard", "LangiumGrammarAstReflection", "AbstractAstReflection", "getDatatypeNode", "cstNode", "current", "found", "definingRule", "getContainerOfType", "isParserRule", "__name", "streamCst", "node", "TreeStreamImpl", "element", "isCompositeCstNode", "flattenCst", "isLeafCstNode", "isChildNode", "child", "parent", "tokenToRange", "token", "toDocumentSegment", "offset", "end", "range", "RangeComparison", "compareRange", "to", "startInside", "endInside", "inRange", "DefaultNameRegexp", "findDeclarationNodeAtOffset", "nameRegexp", "localOffset", "textAtOffset", "findLeafNodeAtOffset", "findCommentNode", "commentNames", "previous", "getPreviousNode", "isCommentNode", "isRootCstNode", "endIndex", "e", "searchResult", "binarySearch", "findLeafNodeBeforeOffset", "closest", "left", "right", "closestNode", "middle", "middleNode", "hidden", "index", "getNextNode", "last", "next", "getStartlineNode", "line", "selfIndex", "getInteriorNodes", "start", "commonParent", "getCommonParent", "a", "b", "aParents", "getParentChain", "bParents", "i", "aParent", "bParent", "chain", "grammar_utils_exports", "__export", "findAssignment", "findNameAssignment", "findNodeForKeyword", "findNodeForProperty", "findNodesForKeyword", "findNodesForKeywordInternal", "findNodesForProperty", "getActionAtElement", "getActionType", "getAllReachableRules", "getAllRulesUsedForCrossReferences", "getCrossReferenceTerminal", "getEntryRule", "getExplicitRuleType", "getHiddenRules", "getRuleType", "getRuleTypeName", "getTypeName", "isArrayCardinality", "isArrayOperator", "isCommentTerminal", "isDataType", "isDataTypeRule", "isOptionalCardinality", "terminalRegex", "ErrorWithLocation", "__name", "node", "message", "assertUnreachable", "_", "assertCondition", "condition", "regexp_utils_exports", "__export", "NEWLINE_REGEXP", "escapeRegExp", "getTerminalParts", "isMultilineComment", "isWhitespace", "partialMatches", "partialRegExp", "whitespaceCharacters", "cc", "char", "__name", "insertToSet", "item", "set", "subItem", "addFlag", "flagObj", "flagKey", "x", "ASSERT_EXISTS", "obj", "ASSERT_NEVER_REACH_HERE", "isCharacter", "digitsCharCodes", "i", "cc", "wordCharCodes", "whitespaceCodes", "hexDigitPattern", "decimalPattern", "decimalPatternNoZero", "RegExpParser", "__name", "newState", "input", "value", "flags", "addFlag", "alts", "begin", "terms", "type", "ASSERT_EXISTS", "disjunction", "ASSERT_NEVER_REACH_HERE", "isBacktracking", "range", "atLeast", "atMost", "atom", "cc", "set", "complement", "digitsCharCodes", "whitespaceCodes", "wordCharCodes", "escapeCode", "letter", "escapedChar", "nextChar", "from", "isFromSingleChar", "isCharacter", "to", "isToSingleChar", "insertToSet", "capturing", "groupAst", "number", "howMuch", "prevState", "howMany", "hexString", "hexChar", "char", "BaseRegExpVisitor", "__name", "node", "key", "child", "subChild", "NEWLINE_REGEXP", "regexpParser", "RegExpParser", "TerminalRegExpVisitor", "BaseRegExpVisitor", "__name", "regex", "node", "char", "escapedChar", "escapeRegExp", "set", "visitor", "getTerminalParts", "regexp", "pattern", "parts", "alternative", "isMultilineComment", "whitespaceCharacters", "isWhitespace", "value", "ws", "partialMatches", "input", "partial", "partialRegExp", "match", "re", "source", "i", "process", "result", "tmp", "appendRaw", "nbChars", "appendOptional", "getEntryRule", "grammar", "isParserRule", "__name", "getHiddenRules", "isTerminalRule", "getAllReachableRules", "allTerminals", "ruleNames", "entryRule", "topMostRules", "rule", "ruleDfs", "rules", "visitedSet", "streamAllContents", "node", "isRuleCall", "isTerminalRuleCall", "refRule", "getAllRulesUsedForCrossReferences", "result", "isCrossReference", "isInferredType", "getCrossReferenceTerminal", "crossRef", "findNameAssignment", "isCommentTerminal", "terminalRule", "isWhitespace", "terminalRegex", "findNodesForProperty", "property", "findNodesForPropertyInternal", "findNodeForProperty", "index", "nodes", "element", "first", "nodeFeature", "getContainerOfType", "isAssignment", "isCompositeCstNode", "e", "findNodesForKeyword", "keyword", "findNodesForKeywordInternal", "findNodeForKeyword", "isKeyword", "treeIterator", "streamCst", "keywordNodes", "childNode", "findAssignment", "cstNode", "astNode", "assignment", "type", "startNode", "isAction", "isAbstractParserRule", "assertUnreachable", "findNameAssignmentInternal", "cache", "go", "refType", "childAssignment", "isSimpleType", "getActionAtElement", "parent", "isGroup", "elements", "item", "action", "isAbstractElement", "isOptionalCardinality", "cardinality", "isArrayCardinality", "isArrayOperator", "operator", "isDataTypeRule", "isDataTypeRuleInternal", "visited", "isInfixRule", "isDataType", "isDataTypeInternal", "isArrayType", "isReferenceType", "isUnionType", "ref", "isType", "getExplicitRuleType", "getTypeName", "isInterface", "isReturnType", "actionType", "getActionType", "getRuleTypeName", "getRuleType", "flags", "source", "abstractElementToRegex", "flagText", "value", "name", "WILDCARD", "isTerminalAlternatives", "terminalAlternativesToRegex", "isTerminalGroup", "terminalGroupToRegex", "isCharacterRange", "characterRangeToRegex", "withCardinality", "isNegatedToken", "negateTokenToRegex", "isUntilToken", "untilTokenToRegex", "isRegexToken", "lastSlash", "regexFlags", "isWildcard", "alternatives", "group", "until", "negate", "range", "keywordToRegex", "escapeRegExp", "regex", "options", "createGrammarConfig", "services", "rules", "grammar", "rule", "isTerminalRule", "isCommentTerminal", "isMultilineComment", "terminalRegex", "DefaultNameRegexp", "__name", "PRINT_ERROR", "msg", "__name", "PRINT_WARNING", "timer", "func", "start", "val", "__name", "toFastProperties", "toBecomeFast", "FakeConstructor", "__name", "fakeInstance", "fakeAccess", "tokenLabel", "tokType", "hasTokenLabel", "__name", "obj", "isString_default", "AbstractProduction", "value", "_definition", "visitor", "forEach_default", "prod", "NonTerminal", "options", "assign_default", "pickBy_default", "v", "definition", "Rule", "Alternative", "Option", "RepetitionMandatory", "RepetitionMandatoryWithSeparator", "Repetition", "RepetitionWithSeparator", "Alternation", "Terminal", "serializeGrammar", "topRules", "map_default", "serializeProduction", "node", "convertDefinition", "serializedNonTerminal", "serializedTerminal", "pattern", "isRegExp_default", "GAstVisitor", "__name", "node", "nodeAny", "NonTerminal", "Alternative", "Option", "RepetitionMandatory", "RepetitionMandatoryWithSeparator", "RepetitionWithSeparator", "Repetition", "Alternation", "Terminal", "Rule", "isSequenceProd", "prod", "Alternative", "Option", "Repetition", "RepetitionMandatory", "RepetitionMandatoryWithSeparator", "RepetitionWithSeparator", "Terminal", "Rule", "__name", "isOptionalProd", "alreadyVisited", "Alternation", "some_default", "subProd", "NonTerminal", "includes_default", "AbstractProduction", "every_default", "isBranchingProd", "getProductionDslName", "RestWalker", "__name", "prod", "prevRest", "forEach_default", "subProd", "index", "currRest", "drop_default", "NonTerminal", "Terminal", "Alternative", "Option", "RepetitionMandatory", "RepetitionMandatoryWithSeparator", "RepetitionWithSeparator", "Repetition", "Alternation", "terminal", "refProd", "flatProd", "fullOrRest", "optionProd", "atLeastOneProd", "fullAtLeastOneRest", "atLeastOneSepProd", "fullAtLeastOneSepRest", "restForRepetitionWithSeparator", "manyProd", "fullManyRest", "manySepProd", "fullManySepRest", "orProd", "alt", "prodWrapper", "repSepProd", "first", "prod", "NonTerminal", "Terminal", "firstForTerminal", "isSequenceProd", "firstForSequence", "isBranchingProd", "firstForBranching", "__name", "firstSet", "seq", "nextSubProdIdx", "hasInnerProdsRemaining", "currSubProd", "isLastInnerProdOptional", "isOptionalProd", "uniq_default", "allAlternativesFirsts", "map_default", "innerProd", "flatten_default", "terminal", "IN", "ResyncFollowsWalker", "RestWalker", "__name", "topProd", "terminal", "currRest", "prevRest", "refProd", "followName", "buildBetweenProdsFollowPrefix", "fullRest", "restProd", "Alternative", "t_in_topProd_follows", "first", "computeAllProdsFollows", "topProductions", "reSyncFollows", "forEach_default", "currRefsFollow", "assign_default", "inner", "occurenceInParent", "IN", "regExpAstCache", "regExpParser", "RegExpParser", "getRegExpAst", "regExp", "regExpStr", "regExpAst", "__name", "clearRegExpParserCache", "complementErrorMessage", "failedOptimizationPrefixMsg", "getOptimizedStartCodesIndices", "regExp", "ensureOptimizations", "ast", "getRegExpAst", "firstCharOptimizedIndices", "e", "PRINT_WARNING", "msgSuffix", "PRINT_ERROR", "__name", "result", "ignoreCase", "terms", "term", "atom", "addOptimizedIdxToResult", "forEach_default", "code", "range", "rangeCode", "minOptimizationVal", "minUnOptVal", "maxUnOptVal", "minOptIdx", "charCodeToOptimizedIndex", "maxOptIdx", "currOptIdx", "isOptionalQuantifier", "isWholeOptional", "values_default", "optimizedCharIdx", "handleIgnoreCase", "char", "upperChar", "lowerChar", "findCode", "setNode", "targetCharCodes", "find_default", "codeOrRange", "includes_default", "targetCode", "quantifier", "isArray_default", "every_default", "CharCodeFinder", "BaseRegExpVisitor", "node", "canMatchCharCode", "charCodes", "pattern", "charCodeFinder", "PATTERN", "DEFAULT_MODE", "MODES", "SUPPORT_STICKY", "analyzeTokenTypes", "tokenTypes", "options", "defaults_default", "SUPPORT_STICKY", "__name", "msg", "action", "tracer", "initCharCodeToOptimizedIndexMap", "onlyRelevantTypes", "reject_default", "currType", "PATTERN", "Lexer", "hasCustom", "allTransformedPatterns", "map_default", "currPattern", "isRegExp_default", "regExpSource", "includes_default", "addStickyFlag", "addStartOfInput", "isFunction_default", "escapedRegExpString", "wrappedRegExp", "patternIdxToType", "patternIdxToGroup", "patternIdxToLongerAltIdxArr", "patternIdxToPushMode", "patternIdxToPopMode", "clazz", "groupName", "isString_default", "isUndefined_default", "longerAltType", "isArray_default", "type", "indexOf_default", "has_default", "patternIdxToCanLineTerminator", "lineTerminatorCharCodes", "getCharCodes", "tokType", "checkLineBreaksIssues", "canMatchCharCode", "patternIdxToIsCustom", "patternIdxToShort", "emptyGroups", "patternIdxToConfig", "isCustomPattern", "isShortPattern", "reduce_default", "acc", "x", "idx", "canBeOptimized", "charCodeToPatternIdxToConfig", "result", "currTokType", "charCode", "optimizedIdx", "charCodeToOptimizedIndex", "addToMapOfArrays", "lastOptimizedIdx", "forEach_default", "charOrInt", "currOptimizedIdx", "PRINT_ERROR", "failedOptimizationPrefixMsg", "optimizedCodes", "getOptimizedStartCodesIndices", "isEmpty_default", "code", "validatePatterns", "validModesNames", "errors", "missingResult", "findMissingPatterns", "invalidResult", "findInvalidPatterns", "validTokenTypes", "validateRegExpPattern", "findInvalidGroupType", "findModesThatDoNotExist", "findUnreachablePatterns", "withRegExpPatterns", "filter_default", "findEndOfInputAnchor", "findStartOfInputAnchor", "findUnsupportedFlags", "findDuplicatePatterns", "findEmptyMatchRegExps", "tokenTypesWithMissingPattern", "LexerDefinitionErrorType", "valid", "difference_default", "tokenTypesWithInvalidPattern", "pattern", "end_of_input", "EndAnchorFinder", "BaseRegExpVisitor", "node", "invalidRegex", "regexpAst", "getRegExpAst", "endAnchorVisitor", "matchesEmptyString", "start_of_input", "StartAnchorFinder", "startAnchorVisitor", "invalidFlags", "found", "identicalPatterns", "outerType", "innerType", "compact_default", "duplicatePatterns", "currIdenticalSet", "setOfIdentical", "tokenTypeNames", "head_default", "invalidTypes", "group", "validModes", "invalidModes", "canBeTested", "noMetaChar", "aTokType", "aIdx", "bStr", "bIdx", "bTokType", "tryToMatchStrToPattern", "str", "usesLookAheadOrBehind", "regExpArray", "regExp", "find_default", "char", "flags", "performRuntimeChecks", "lexerDefinition", "trackLines", "lineTerminatorCharacters", "DEFAULT_MODE", "MODES", "currModeValue", "currModeName", "currIdx", "longerAlt", "currLongerAlt", "performWarningRuntimeChecks", "warnings", "hasAnyLineBreak", "allTokenTypes", "flatten_default", "values_default", "concreteTokenTypes", "terminatorCharCodes", "currIssue", "warningDescriptor", "buildLineBreakIssueMessage", "cloneEmptyGroups", "clonedResult", "groupKeys", "keys_default", "currKey", "currGroupValue", "tokenType", "LineTerminatorOptimizedTester", "text", "len", "i", "c", "e", "details", "charsOrCodes", "numOrString", "map", "key", "value", "minOptimizationVal", "charCodeToOptimizedIdxMap", "tokenStructuredMatcher", "tokInstance", "tokConstructor", "instanceType", "__name", "tokenStructuredMatcherNoCategories", "token", "tokType", "tokenShortNameIdx", "tokenIdxToClass", "augmentTokenTypes", "tokenTypes", "tokenTypesAndParents", "expandCategories", "assignTokenDefaultProps", "assignCategoriesMapProp", "assignCategoriesTokensProp", "forEach_default", "result", "clone_default", "categories", "searching", "compact_default", "flatten_default", "map_default", "currTokType", "newCategories", "difference_default", "isEmpty_default", "hasShortKeyProperty", "hasCategoriesProperty", "isArray_default", "hasExtendingTokensTypesProperty", "hasExtendingTokensTypesMapProperty", "val", "key", "singleAssignCategoriesToksMap", "path", "nextNode", "pathNode", "nextCategory", "newPath", "includes_default", "has_default", "isTokenType", "defaultLexerErrorProvider", "token", "fullText", "startOffset", "length", "line", "column", "mode", "LexerDefinitionErrorType", "DEFAULT_LEXER_CONFIG", "defaultLexerErrorProvider", "Lexer", "__name", "lexerDefinition", "config", "phaseDesc", "phaseImpl", "indent", "time", "value", "timer", "traceMethod", "assign_default", "traceInitVal", "actualDefinition", "hasOnlySingleMode", "LineTerminatorOptimizedTester", "isArray_default", "clone_default", "DEFAULT_MODE", "performRuntimeChecks", "performWarningRuntimeChecks", "forEach_default", "currModeValue", "currModeName", "reject_default", "currTokType", "isUndefined_default", "allModeNames", "keys_default", "currModDef", "currModName", "validatePatterns", "isEmpty_default", "augmentTokenTypes", "currAnalyzeResult", "analyzeTokenTypes", "allErrMessagesString", "map_default", "error", "warningDescriptor", "PRINT_WARNING", "SUPPORT_STICKY", "identity_default", "noop_default", "unOptimizedModes", "reduce_default", "cannotBeOptimized", "canBeOptimized", "modeName", "clearRegExpParserCache", "toFastProperties", "text", "initialMode", "i", "j", "k", "matchAltImage", "longerAlt", "matchedImage", "payload", "altPayload", "imageLength", "group", "tokType", "newToken", "errLength", "droppedChar", "msg", "match", "orgText", "orgLength", "offset", "matchedTokensIndex", "guessedNumberOfTokens", "matchedTokens", "errors", "line", "column", "groups", "cloneEmptyGroups", "trackLines", "lineTerminatorPattern", "currModePatternsLength", "patternIdxToConfig", "currCharCodeToPatternIdxToConfig", "modeStack", "emptyArray", "getPossiblePatterns", "getPossiblePatternsSlow", "getPossiblePatternsOptimized", "charCode", "optimizedCharIdx", "charCodeToOptimizedIndex", "possiblePatterns", "pop_mode", "popToken", "newMode", "last_default", "modeCanBeOptimized", "push_mode", "currConfig", "recoveryEnabled", "nextCharCode", "chosenPatternIdxToConfig", "chosenPatternsLength", "currPattern", "singleCharCode", "longerAltLength", "longerAltConfig", "longerAltPattern", "numOfLTsInMatch", "foundTerminator", "lastLTEndOffset", "errorStartOffset", "errorLine", "errorColumn", "foundResyncPoint", "pushMode", "length", "regExp", "newLastIndex", "lastLTIdx", "lastCharIsLT", "fixForEndingInLT", "oldColumn", "image", "startOffset", "tokenTypeIdx", "tokenType", "startLine", "startColumn", "tokenVector", "index", "tokenToAdd", "token", "pattern", "regExpArray", "tokenLabel", "tokType", "hasTokenLabel", "__name", "hasTokenLabel", "obj", "isString_default", "__name", "PARENT", "CATEGORIES", "LABEL", "GROUP", "PUSH_MODE", "POP_MODE", "LONGER_ALT", "LINE_BREAKS", "START_CHARS_HINT", "createToken", "config", "createTokenInternal", "pattern", "tokenType", "isUndefined_default", "has_default", "augmentTokenTypes", "EOF", "Lexer", "createTokenInstance", "tokType", "image", "startOffset", "endOffset", "startLine", "endLine", "startColumn", "endColumn", "tokenMatcher", "token", "tokenStructuredMatcher", "defaultParserErrorProvider", "expected", "actual", "previous", "ruleName", "hasTokenLabel", "tokenLabel", "firstRedundant", "expectedPathsPerAlt", "customUserDescription", "errPrefix", "errSuffix", "head_default", "allLookAheadPaths", "reduce_default", "result", "currAltPaths", "nextValidTokenSequences", "map_default", "currPath", "currTokenType", "calculatedDescription", "itemMsg", "idx", "expectedIterationPaths", "defaultGrammarResolverErrorProvider", "topLevelRule", "undefinedRule", "defaultGrammarValidatorErrorProvider", "duplicateProds", "getExtraProductionArgument", "prod", "Terminal", "NonTerminal", "__name", "topLevelName", "duplicateProd", "index", "dslName", "getProductionDslName", "extraArgument", "hasExplicitIndex", "msg", "rule", "options", "pathMsg", "currTok", "occurrence", "currtok", "currMessage", "pathNames", "currRule", "leftRecursivePath", "Rule", "resolveGrammar", "topLevels", "errMsgProvider", "refResolver", "GastRefResolverVisitor", "__name", "GAstVisitor", "nameToTopRule", "forEach_default", "values_default", "prod", "node", "ref", "msg", "ParserDefinitionErrorType", "AbstractNextPossibleTokensWalker", "RestWalker", "__name", "topProd", "path", "clone_default", "prod", "prevRest", "refProd", "currRest", "fullRest", "isEmpty_default", "NextAfterTokenWalker", "terminal", "restProd", "Alternative", "first", "AbstractNextTerminalAfterProductionWalker", "topRule", "occurrence", "NextTerminalAfterManyWalker", "manyProd", "firstAfterMany", "head_default", "Terminal", "NextTerminalAfterManySepWalker", "manySepProd", "firstAfterManySep", "NextTerminalAfterAtLeastOneWalker", "atLeastOneProd", "firstAfterAtLeastOne", "NextTerminalAfterAtLeastOneSepWalker", "atleastOneSepProd", "firstAfterfirstAfterAtLeastOneSep", "possiblePathsFrom", "targetDef", "maxLength", "currPath", "result", "remainingPathWith", "nextDef", "drop_default", "getAlternativesForProd", "definition", "alternatives", "NonTerminal", "Option", "RepetitionMandatory", "newDef", "Repetition", "RepetitionMandatoryWithSeparator", "RepetitionWithSeparator", "Alternation", "forEach_default", "currAlt", "nextPossibleTokensAfter", "initialDef", "tokenVector", "tokMatcher", "maxLookAhead", "EXIT_NON_TERMINAL", "EXIT_NON_TERMINAL_ARR", "EXIT_ALTERNATIVE", "foundCompletePath", "tokenVectorLength", "minimalAlternativesIndex", "possiblePaths", "last_default", "currDef", "currIdx", "currRuleStack", "currOccurrenceStack", "nextPath", "dropRight_default", "nextIdx", "actualToken", "newRuleStack", "newOccurrenceStack", "nextPathWithout", "nextPathWith", "secondIteration", "separatorGast", "nthRepetition", "i", "currAltPath", "Rule", "expandTopLevelRule", "newCurrOccurrenceStack", "PROD_TYPE", "getProdType", "prod", "Option", "Repetition", "RepetitionMandatory", "RepetitionMandatoryWithSeparator", "RepetitionWithSeparator", "Alternation", "__name", "getLookaheadPaths", "options", "occurrence", "rule", "prodType", "maxLookahead", "type", "getLookaheadPathsForOr", "getLookaheadPathsForOptionalProd", "buildLookaheadFuncForOr", "ruleGrammar", "hasPredicates", "dynamicTokensEnabled", "laFuncBuilder", "lookAheadPaths", "tokenMatcher", "areTokenCategoriesNotUsed", "tokenStructuredMatcherNoCategories", "tokenStructuredMatcher", "buildLookaheadFuncForOptionalProd", "k", "lookaheadBuilder", "buildAlternativesLookAheadFunc", "alts", "numOfAlts", "areAllOneTokenLookahead", "every_default", "currAlt", "currPath", "orAlts", "predicates", "map_default", "t", "currNumOfPaths", "currPredicate", "nextPath", "j", "currPathLength", "i", "nextToken", "singleTokenAlts", "flatten_default", "choiceToAlt", "reduce_default", "result", "idx", "forEach_default", "currTokType", "has_default", "currExtendingType", "buildSingleAlternativeLookaheadFunction", "alt", "numOfPaths", "singleTokensTypes", "isEmpty_default", "expectedTokenUniqueKey", "RestDefinitionFinderWalker", "RestWalker", "topProd", "targetOccurrence", "targetProdType", "node", "expectedProdType", "currRest", "prevRest", "optionProd", "atLeastOneProd", "atLeastOneSepProd", "manyProd", "manySepProd", "InsideDefinitionFinderVisitor", "GAstVisitor", "targetRef", "expectedProdName", "initializeArrayOfArrays", "size", "pathToHashKeys", "path", "keys", "tokType", "longerKeys", "currShorterKey", "categoriesKeySuffix", "isUniquePrefixHash", "altKnownPathsKeys", "searchPathKeys", "currAltIdx", "otherAltKnownPathsKeys", "searchIdx", "searchKey", "lookAheadSequenceFromAlternatives", "altsDefs", "partialAlts", "possiblePathsFrom", "finalResult", "altsHashes", "currAltPaths", "dict", "item", "currKey", "newData", "pathLength", "currDataset", "altIdx", "currAltPathsAndSuffixes", "currPathIdx", "currPathPrefix", "suffixDef", "prefixKeys", "currAltResult", "containsPath", "newPartialPathsAndSuffixes", "key", "orProd", "visitor", "insideDefVisitor", "insideDef", "afterDef", "insideFlat", "Alternative", "afterFlat", "alternative", "searchPath", "compareOtherPath", "otherPath", "searchTok", "otherTok", "isStrictPrefixOfPath", "prefix", "other", "otherTokType", "singleAltPaths", "singlePath", "token", "validateLookahead", "options", "lookaheadValidationErrorMessages", "map_default", "errorMessage", "ParserDefinitionErrorType", "__name", "validateGrammar", "topLevels", "tokenTypes", "errMsgProvider", "grammarName", "duplicateErrors", "flatMap_default", "currTopLevel", "validateDuplicateProductions", "termsNamespaceConflictErrors", "checkTerminalAndNoneTerminalsNameSpace", "tooManyAltsErrors", "curRule", "validateTooManyAlts", "duplicateRulesError", "validateRuleDoesNotAlreadyExist", "topLevelRule", "collectorVisitor", "OccurrenceValidationCollector", "allRuleProductions", "productionGroups", "groupBy_default", "identifyProductionForDuplicates", "duplicates", "pickBy_default", "currGroup", "values_default", "currDuplicates", "firstProd", "head_default", "msg", "dslName", "getProductionDslName", "defError", "param", "getExtraProductionArgument", "prod", "Terminal", "NonTerminal", "GAstVisitor", "subrule", "option", "manySep", "atLeastOne", "atLeastOneSep", "many", "or", "terminal", "rule", "allRules", "className", "errors", "reduce_default", "result", "errMsg", "validateRuleIsOverridden", "ruleName", "definedRulesNames", "includes_default", "validateNoLeftRecursion", "topRule", "currRule", "path", "nextNonTerminals", "getFirstNoneTerminal", "isEmpty_default", "validNextSteps", "difference_default", "errorsFromNextSteps", "currRefRule", "newPath", "clone_default", "definition", "Alternative", "Option", "RepetitionMandatory", "RepetitionMandatoryWithSeparator", "RepetitionWithSeparator", "Repetition", "Alternation", "flatten_default", "currSubDef", "isFirstOptional", "isOptionalProd", "hasMore", "rest", "drop_default", "OrCollector", "node", "validateEmptyOrAlternative", "orCollector", "ors", "currOr", "exceptLast", "dropRight_default", "currAlternative", "currAltIdx", "possibleFirstInAlt", "nextPossibleTokensAfter", "tokenStructuredMatcher", "validateAmbiguousAlternationAlternatives", "globalMaxLookahead", "reject_default", "currOccurrence", "actualMaxLookahead", "alternatives", "getLookaheadPathsForOr", "altsAmbiguityErrors", "checkAlternativesAmbiguities", "altsPrefixAmbiguityErrors", "checkPrefixAlternativesAmbiguities", "RepetitionCollector", "validateSomeNonEmptyLookaheadPath", "topLevelRules", "maxLookahead", "forEach_default", "currTopRule", "currProd", "prodType", "getProdType", "pathsInsideProduction", "getLookaheadPathsForOptionalProd", "alternation", "foundAmbiguousPaths", "identicalAmbiguities", "currAlt", "currPath", "altsCurrPathAppearsIn", "currOtherAlt", "currOtherAltIdx", "containsPath", "currAmbDescriptor", "ambgIndices", "pathsAndIndices", "idx", "currPathsAndIdx", "compact_default", "currPathAndIdx", "targetIdx", "targetPath", "prefixAmbiguitiesPathsAndIndices", "filter_default", "searchPathAndIdx", "isStrictPrefixOfPath", "currAmbPathAndIdx", "occurrence", "tokenNames", "currToken", "currRuleName", "resolveGrammar", "options", "actualOptions", "defaults_default", "defaultGrammarResolverErrorProvider", "topRulesTable", "forEach_default", "rule", "__name", "validateGrammar", "defaultGrammarValidatorErrorProvider", "MISMATCHED_TOKEN_EXCEPTION", "NO_VIABLE_ALT_EXCEPTION", "EARLY_EXIT_EXCEPTION", "NOT_ALL_INPUT_PARSED_EXCEPTION", "RECOGNITION_EXCEPTION_NAMES", "isRecognitionException", "error", "includes_default", "__name", "RecognitionException", "message", "token", "MismatchedTokenException", "previousToken", "NoViableAltException", "NotAllInputParsedException", "EarlyExitException", "EOF_FOLLOW_KEY", "IN_RULE_RECOVERY_EXCEPTION", "InRuleRecoveryException", "__name", "message", "Recoverable", "config", "has_default", "DEFAULT_PARSER_CONFIG", "attemptInRepetitionRecovery", "tokType", "tokToInsert", "createTokenInstance", "grammarRule", "grammarRuleArgs", "lookAheadFunc", "expectedTokType", "reSyncTokType", "savedLexerState", "resyncedTokens", "passedResyncPoint", "nextTokenWithoutResync", "currToken", "generateErrorMessage", "previousToken", "msg", "error", "MismatchedTokenException", "dropRight_default", "expectTokAfterLastMatch", "nextTokIdx", "notStuck", "tokIdxInRule", "grammarPath", "follows", "nextTok", "expectedToken", "isEmpty_default", "mismatchedTok", "find_default", "possibleFollowsTokType", "tokenTypeIdx", "followKey", "currentRuleReSyncSet", "includes_default", "allPossibleReSyncTokTypes", "nextToken", "k", "foundMatch", "resyncTokType", "tokenMatcher", "currRuleShortName", "currRuleIdx", "prevRuleShortName", "explicitRuleStack", "explicitOccurrenceStack", "map_default", "ruleName", "idx", "followStack", "currKey", "flatten_default", "EOF", "followName", "IN", "token", "resyncTokens", "prodFunc", "args", "lookaheadFunc", "dslMethodIdx", "prodOccurrence", "nextToksWalker", "pathRuleStack", "pathOccurrenceStack", "clone_default", "currShortName", "key", "firstAfterRepInfo", "currRuleName", "ruleGrammar", "isEndOfRule", "getKeyForAutomaticLookahead", "ruleIdx", "dslMethodIdx", "occurrence", "__name", "LLkLookaheadStrategy", "__name", "options", "_a", "DEFAULT_PARSER_CONFIG", "leftRecursionErrors", "isEmpty_default", "emptyAltErrors", "ambiguousAltsErrors", "emptyRepetitionErrors", "rules", "flatMap_default", "currTopRule", "validateNoLeftRecursion", "defaultGrammarValidatorErrorProvider", "validateEmptyOrAlternative", "maxLookahead", "validateAmbiguousAlternationAlternatives", "validateSomeNonEmptyLookaheadPath", "buildLookaheadFuncForOr", "buildAlternativesLookAheadFunc", "buildLookaheadFuncForOptionalProd", "getProdType", "buildSingleAlternativeLookaheadFunction", "LooksAhead", "__name", "config", "has_default", "DEFAULT_PARSER_CONFIG", "LLkLookaheadStrategy", "rules", "forEach_default", "currRule", "alternation", "repetition", "option", "repetitionMandatory", "repetitionMandatoryWithSeparator", "repetitionWithSeparator", "collectMethods", "currProd", "prodIdx", "getProductionDslName", "laFunc", "key", "getKeyForAutomaticLookahead", "rule", "prodOccurrence", "prodKey", "prodType", "prodMaxLookahead", "dslMethodName", "dslMethodIdx", "occurrence", "currRuleShortName", "value", "DslMethodsCollectorVisitor", "GAstVisitor", "manySep", "atLeastOne", "atLeastOneSep", "many", "or", "collectorVisitor", "dslMethods", "setNodeLocationOnlyOffset", "currNodeLocation", "newLocationInfo", "__name", "setNodeLocationFull", "addTerminalToCst", "node", "token", "tokenTypeName", "addNoneTerminalToCst", "ruleName", "ruleResult", "NAME", "defineNameProp", "obj", "nameValue", "__name", "defaultVisit", "ctx", "param", "childrenNames", "keys_default", "childrenNamesLength", "currChildName", "currChildArray", "currChildArrayLength", "j", "currChild", "__name", "createBaseSemanticVisitorConstructor", "grammarName", "ruleNames", "derivedConstructor", "defineNameProp", "semanticProto", "cstNode", "isArray_default", "isUndefined_default", "semanticDefinitionErrors", "validateVisitor", "isEmpty_default", "errorMessages", "map_default", "currDefError", "createBaseVisitorConstructorWithDefaults", "baseConstructor", "withDefaultsProto", "forEach_default", "ruleName", "CstVisitorDefinitionError", "visitorInstance", "validateMissingCstMethods", "missingRuleNames", "filter_default", "currRuleName", "isFunction_default", "errors", "compact_default", "TreeBuilder", "__name", "config", "has_default", "DEFAULT_PARSER_CONFIG", "noop_default", "setNodeLocationFull", "setNodeLocationOnlyOffset", "cstNode", "nextToken", "fullRuleName", "ruleCstNode", "prevToken", "loc", "key", "consumedToken", "rootCst", "addTerminalToCst", "ruleCstResult", "ruleName", "preCstNode", "addNoneTerminalToCst", "isUndefined_default", "newBaseCstVisitorConstructor", "createBaseSemanticVisitorConstructor", "keys_default", "newConstructor", "createBaseVisitorConstructorWithDefaults", "ruleStack", "occurrenceStack", "LexerAdapter", "__name", "newInput", "END_OF_FILE", "howMuch", "soughtIdx", "newState", "RecognizerApi", "__name", "impl", "idx", "tokType", "options", "ruleToCall", "actionORMethodDef", "altsOrOpts", "name", "implementation", "config", "DEFAULT_RULE_CONFIG", "includes_default", "error", "defaultGrammarValidatorErrorProvider", "ParserDefinitionErrorType", "ruleImplementation", "ruleErrors", "validateRuleIsOverridden", "grammarRule", "args", "orgState", "e", "isRecognitionException", "serializeGrammar", "values_default", "RecognizerEngine", "__name", "tokenVocabulary", "config", "tokenStructuredMatcherNoCategories", "has_default", "isArray_default", "isEmpty_default", "reduce_default", "acc", "tokType", "every_default", "flatten_default", "values_default", "isTokenType", "allTokenTypes", "uniqueTokens", "uniq_default", "isObject_default", "clone_default", "EOF", "noTokenCategoriesUsed", "tokenConstructor", "tokenStructuredMatcher", "augmentTokenTypes", "ruleName", "impl", "resyncEnabled", "DEFAULT_RULE_CONFIG", "recoveryValueFunc", "shortName", "invokeRuleWithTry", "args", "cst", "e", "resyncEnabledConfig", "isFirstInvokedRule", "reSyncEnabled", "isRecognitionException", "recogError", "reSyncTokType", "partialCstResult", "actionORMethodDef", "occurrence", "key", "lookAheadFunc", "action", "predicate", "orgLookaheadFunction", "prodOccurrence", "laKey", "notStuck", "PROD_TYPE", "NextTerminalAfterAtLeastOneWalker", "options", "separator", "separatorLookAheadFunc", "NextTerminalAfterAtLeastOneSepWalker", "lookaheadFunction", "NextTerminalAfterManyWalker", "NextTerminalAfterManySepWalker", "nextTerminalAfterWalker", "beforeIteration", "altsOrOpts", "alts", "altIdxToTake", "firstRedundantTok", "errMsg", "NotAllInputParsedException", "ruleToCall", "idx", "ruleResult", "consumedToken", "nextToken", "eFromConsumption", "msg", "previousToken", "MismatchedTokenException", "follows", "eFromInRuleRecovery", "IN_RULE_RECOVERY_EXCEPTION", "savedErrors", "savedRuleStack", "newState", "fullName", "idxInCallingRule", "ErrorHandler", "__name", "config", "has_default", "DEFAULT_PARSER_CONFIG", "error", "isRecognitionException", "clone_default", "newErrors", "occurrence", "prodType", "userDefinedErrMsg", "ruleName", "ruleGrammar", "insideProdPaths", "getLookaheadPathsForOptionalProd", "actualTokens", "i", "msg", "EarlyExitException", "errMsgTypes", "lookAheadPathsPerAlternative", "getLookaheadPathsForOr", "previousToken", "errMsg", "NoViableAltException", "ContentAssist", "__name", "startRuleName", "precedingInput", "startRuleGast", "isUndefined_default", "nextPossibleTokensAfter", "grammarPath", "topRuleName", "head_default", "topProduction", "NextAfterTokenWalker", "RECORDING_NULL_OBJECT", "HANDLE_SEPARATOR", "MAX_METHOD_IDX", "RFT", "createToken", "Lexer", "augmentTokenTypes", "RECORDING_PHASE_TOKEN", "createTokenInstance", "RECORDING_PHASE_CSTNODE", "GastRecorder", "__name", "config", "i", "idx", "arg1", "arg2", "that", "impl", "grammarRule", "args", "howMuch", "END_OF_FILE", "name", "def", "newTopLevelRule", "Rule", "originalError", "actionORMethodDef", "occurrence", "recordProd", "Option", "RepetitionMandatory", "options", "RepetitionMandatoryWithSeparator", "Repetition", "RepetitionWithSeparator", "altsOrOpts", "recordOrProd", "ruleToCall", "assertMethodIdxIsValid", "has_default", "error", "getIdxSuffix", "prevProd", "last_default", "ruleName", "newNoneTerminal", "NonTerminal", "tokType", "hasShortKeyProperty", "Terminal", "prodConstructor", "mainProdArg", "handleSep", "grammarAction", "isFunction_default", "newProd", "hasOptions", "isArray_default", "alts", "newOrProd", "Alternation", "hasPredicates", "some_default", "currAlt", "forEach_default", "currAltFlat", "Alternative", "PerformanceTracer", "__name", "config", "has_default", "userTraceInitPerf", "traceIsNumber", "DEFAULT_PARSER_CONFIG", "phaseDesc", "phaseImpl", "indent", "time", "value", "timer", "traceMethod", "applyMixins", "derivedCtor", "baseCtors", "baseCtor", "baseProto", "propName", "basePropDescriptor", "__name", "END_OF_FILE", "createTokenInstance", "EOF", "DEFAULT_PARSER_CONFIG", "defaultParserErrorProvider", "DEFAULT_RULE_CONFIG", "__name", "ParserDefinitionErrorType", "EMPTY_ALT", "value", "Parser", "_Parser", "parserInstance", "defErrorsMsgs", "className", "toFastProperties", "forEach_default", "currRuleName", "originalGrammarAction", "recordedRuleGast", "resolverErrors", "resolveGrammar", "values_default", "isEmpty_default", "validationErrors", "validateGrammar", "defaultGrammarValidatorErrorProvider", "lookaheadValidationErrors", "validateLookahead", "allFollows", "computeAllProdsFollows", "_b", "_a", "map_default", "defError", "tokenVocabulary", "config", "that", "has_default", "applyMixins", "Recoverable", "LooksAhead", "TreeBuilder", "LexerAdapter", "RecognizerEngine", "RecognizerApi", "ErrorHandler", "ContentAssist", "GastRecorder", "PerformanceTracer", "EmbeddedActionsParser", "Parser", "__name", "tokenVocabulary", "config", "DEFAULT_PARSER_CONFIG", "configClone", "clone_default", "buildATNKey", "rule", "type", "occurrence", "__name", "ATN_BASIC", "ATN_RULE_START", "ATN_PLUS_BLOCK_START", "ATN_STAR_BLOCK_START", "ATN_RULE_STOP", "ATN_BLOCK_END", "ATN_STAR_LOOP_BACK", "ATN_STAR_LOOP_ENTRY", "ATN_PLUS_LOOP_BACK", "ATN_LOOP_END", "AbstractTransition", "__name", "target", "AtomTransition", "tokenType", "EpsilonTransition", "RuleTransition", "ruleStart", "rule", "followState", "createATN", "rules", "atn", "createRuleStartAndStopATNStates", "ruleLength", "i", "ruleBlock", "block", "buildRuleHandle", "start", "newState", "ATN_RULE_START", "stop", "atom", "production", "Terminal", "tokenRef", "NonTerminal", "ruleRef", "Alternation", "alternation", "Option", "option", "Repetition", "repetition", "RepetitionWithSeparator", "repetitionSep", "RepetitionMandatory", "repetitionMandatory", "RepetitionMandatoryWithSeparator", "repetitionMandatorySep", "starState", "ATN_STAR_BLOCK_START", "defineDecisionState", "handle", "makeAlts", "star", "sep", "plusState", "ATN_PLUS_BLOCK_START", "plus", "ATN_BASIC", "alts", "map_default", "e", "optional", "handles", "filter_default", "makeBlock", "blkStart", "blkEnd", "loop", "end", "buildATNKey", "epsilon", "entry", "loopEnd", "state", "alt", "getProdType", "altsLength", "transition", "isRuleTransition", "ruleTransition", "next", "removeState", "first", "last", "left", "right", "addTransition", "currentRule", "nonTerminal", "call", "a", "b", "partial", "t", "DFA_ERROR", "ATNConfigSet", "__name", "config", "key", "getATNConfigKey", "map_default", "value", "k", "alt", "e", "createDFACache", "startState", "decision", "map", "predicateSet", "key", "existing", "__name", "PredicateSet", "index", "value", "size", "i", "EMPTY_PREDICATES", "LLStarLookaheadStrategy", "LLkLookaheadStrategy", "options", "_a", "message", "createATN", "initATNSimulator", "prodOccurrence", "rule", "hasPredicates", "dynamicTokensEnabled", "dfas", "logging", "buildATNKey", "decisionIndex", "partialAlts", "map_default", "getLookaheadPaths", "currAlt", "path", "isLL1Sequence", "choiceToAlt", "reduce_default", "result", "idx", "forEach_default", "currTokType", "currExtendingType", "orAlts", "nextToken", "prediction", "gate", "predicates", "length", "adaptivePredict", "prodType", "alts", "e", "g", "alt", "singleTokensTypes", "flatten_default", "isEmpty_default", "expectedTokenUniqueKey", "sequences", "allowEmpty", "fullSet", "altSet", "tokType", "indices", "atn", "decisionLength", "decisionToDFA", "dfaCaches", "dfa", "start", "closure", "computeStartState", "addDFAState", "newDFAState", "performLookahead", "s0", "previousD", "t", "d", "getExistingTargetState", "computeLookaheadTarget", "DFA_ERROR", "buildAdaptivePredictError", "token", "lookahead", "reach", "computeReachSet", "addDFAEdge", "newState", "predictedAlt", "getUniqueAlt", "hasConflictTerminatingPrediction", "min_default", "reportLookaheadAmbiguity", "ambiguityIndices", "prefixPath", "atnState", "topLevelRule", "production", "buildAmbiguityError", "pathMsg", "currtok", "tokenLabel", "occurrence", "currMessage", "getProductionDslName", "prod", "NonTerminal", "Option", "Alternation", "RepetitionMandatory", "RepetitionMandatoryWithSeparator", "RepetitionWithSeparator", "Repetition", "Terminal", "previous", "current", "nextTransitions", "flatMap_default", "nextTokenTypes", "uniqBy_default", "AtomTransition", "state", "configs", "intermediate", "ATNConfigSet", "skippedStopStates", "c", "ATN_RULE_STOP", "transitionLength", "transition", "target", "getReachableTarget", "hasConfigInRuleStopState", "tokenMatcher", "from", "to", "mapKey", "numberOfTransitions", "config", "p", "atnStack", "followConfig", "getEpsilonTarget", "EpsilonTransition", "RuleTransition", "stack", "allConfigsInRuleStopStates", "altSets", "getConflictingAltSets", "hasConflictingAltSet", "hasStateAssociatedWithOneAlt", "configToAlts", "getATNConfigKey", "init_main", "CstNodeBuilder", "__name", "input", "RootCstNodeImpl", "feature", "compositeNode", "CompositeCstNodeImpl", "token", "leafNode", "LeafCstNodeImpl", "tokenToRange", "node", "parent", "index", "tokens", "nodes", "current", "added", "item", "AbstractCstNode", "value", "offset", "length", "range", "tokenType", "hidden", "CstNodeContainer", "firstNode", "lastNode", "firstRange", "lastRange", "Position", "child", "i", "_CstNodeContainer", "items", "start", "count", "DatatypeSymbol", "isDataTypeNode", "node", "__name", "ruleSuffix", "withRuleSuffix", "name", "AbstractLangiumParser", "services", "tokens", "production", "ProfilerWrapper", "ChevrotainWrapper", "idx", "choices", "callback", "LangiumParser", "CstNodeBuilder", "rule", "impl", "type", "infixName", "isInfixRule", "ruleMethod", "isParserRule", "map", "precedence", "keyword", "getTypeName", "isDataTypeRule", "input", "options", "lexerResult", "result", "linkContentToContainer", "$type", "implementation", "args", "createNode", "token", "hiddenTokens", "offset", "tokenType", "feature", "leafNode", "assignment", "crossRef", "current", "convertedValue", "isKeyword", "text", "fragment", "cstNode", "newItem", "action", "last", "obj", "assignMandatoryProperties", "parts", "operators", "lowestPrecedenceIdx", "lowestPrecedenceValue", "i", "operator", "opPrecedence", "leftOperators", "rightOperators", "leftParts", "rightParts", "leftInfix", "rightInfix", "leftTree", "rightTree", "getContainerOfType", "isAssignment", "isCrossReference", "value", "item", "target", "source", "existingValue", "newValue", "targetCstNode", "AbstractParserErrorMessageProvider", "defaultParserErrorProvider", "LangiumParserErrorMessageProvider", "expected", "actual", "firstRedundant", "LangiumCompletionParser", "size", "element", "index", "defaultConfig", "EmbeddedActionsParser", "config", "useDefaultLookahead", "LLkLookaheadStrategy", "LLStarLookaheadStrategy", "task", "ruleToCall", "createParser", "grammar", "parser", "tokens", "buildRules", "__name", "parserContext", "reachable", "getAllReachableRules", "parserRules", "stream", "isParserRule", "rule", "ctx", "buildElement", "infixRules", "isInfixRule", "buildInfixRule", "expressionRule", "isTerminalRule", "allKeywords", "e", "outerGroup", "part1Assignment", "innerGroup", "operatorAssignment", "part2Assignment", "orAlts", "token", "index", "subrule", "args", "getRule", "element", "ignoreGuard", "method", "isKeyword", "buildKeyword", "isAction", "buildAction", "isAssignment", "isCrossReference", "buildCrossReference", "isRuleCall", "buildRuleCall", "isAlternatives", "buildAlternatives", "isUnorderedGroup", "buildUnorderedGroup", "isGroup", "buildGroup", "isEndOfFile", "idx", "EOF", "ErrorWithLocation", "wrap", "getGuardCondition", "action", "actionType", "getTypeName", "ruleCall", "isAbstractParserRule", "fragment", "predicate", "buildRuleCallPredicate", "getToken", "assertUnreachable", "namedArgs", "arg", "namedPredicates", "buildPredicate", "ruleArgs", "parameterName", "predicates", "i", "condition", "isDisjunction", "left", "right", "isConjunction", "isNegation", "value", "isParameterReference", "name", "isBooleanLiteral", "alternatives", "methods", "predicatedMethod", "guard", "alt", "gate", "group", "orIdx", "idFunc", "groupIdx", "lParser", "stackId", "key", "groupState", "wrapped", "crossRef", "terminal", "terminalRule", "keyword", "assignTerminal", "findNameAssignment", "cardinality", "EMPTY_ALT", "getRuleName", "item", "parent", "ruleName", "createCompletionParser", "services", "grammar", "lexer", "parser", "LangiumCompletionParser", "createParser", "__name", "createLangiumParser", "services", "parser", "prepareLangiumParser", "__name", "grammar", "lexer", "LangiumParser", "createParser", "DefaultTokenBuilder", "__name", "grammar", "options", "reachableRules", "stream", "getAllReachableRules", "terminalTokens", "tokens", "text", "diagnostics", "rules", "isTerminalRule", "e", "terminal", "regex", "terminalRegex", "pattern", "tokenType", "isWhitespace", "Lexer", "stickyRegex", "offset", "isAbstractParserRule", "rule", "streamAllContents", "isKeyword", "a", "b", "keyword", "caseInsensitive", "keywordPattern", "escapeRegExp", "longerAlts", "token", "partialMatches", "DefaultValueConverter", "__name", "input", "cstNode", "feature", "isCrossReference", "getCrossReferenceTerminal", "isRuleCall", "rule", "ValueConverter", "getRuleType", "convertString", "result", "i", "c", "c1", "convertEscapeCharacter", "char", "convertID", "convertInt", "convertBigint", "convertDate", "convertNumber", "convertBoolean", "cancellation_exports", "__reExport", "delayNextTick", "resolve", "__name", "lastTick", "globalInterruptionPeriod", "startCancelableOperation", "setInterruptionPeriod", "period", "OperationCancelled", "isOperationCancelled", "err", "interruptAndCheck", "token", "current", "Deferred", "reject", "arg", "FullTextDocument", "_FullTextDocument", "__name", "uri", "languageId", "version", "content", "range", "start", "end", "changes", "change", "getWellformedRange", "startOffset", "endOffset", "startLine", "endLine", "lineOffsets", "addedLineOffsets", "computeLineOffsets", "i", "len", "diff", "offset", "low", "high", "mid", "line", "position", "lineOffset", "nextLineOffset", "isEOL", "event", "candidate", "TextDocument", "create", "update", "document", "applyEdits", "edits", "text", "sortedEdits", "mergeSort", "getWellformedEdit", "a", "b", "lastModifiedOffset", "spans", "e", "data", "compare", "p", "left", "right", "leftIdx", "rightIdx", "isAtLineStart", "textOffset", "result", "ch", "char", "textEdit", "assertPath", "path", "TypeError", "JSON", "stringify", "normalizeStringPosix", "allowAboveRoot", "code", "res", "lastSegmentLength", "lastSlash", "dots", "i", "length", "charCodeAt", "lastSlashIndex", "lastIndexOf", "slice", "posix", "resolve", "__name", "cwd", "resolvedPath", "resolvedAbsolute", "arguments", "process", "normalize", "isAbsolute", "trailingSeparator", "join", "joined", "arg", "relative", "from", "to", "fromStart", "fromEnd", "fromLen", "toStart", "toLen", "lastCommonSep", "fromCode", "out", "_makeLong", "dirname", "hasRoot", "end", "matchedSlash", "basename", "ext", "start", "extIdx", "firstNonSlashEnd", "extname", "startDot", "startPart", "preDotState", "format", "pathObject", "sep", "dir", "root", "base", "name", "parse", "ret", "delimiter", "win32", "module", "exports", "__webpack_module_cache__", "__webpack_require__", "moduleId", "cachedModule", "__webpack_modules__", "d", "definition", "key", "o", "Object", "defineProperty", "enumerable", "get", "obj", "prop", "prototype", "hasOwnProperty", "call", "r", "Symbol", "toStringTag", "value", "isWindows", "l", "I", "platform", "navigator", "userAgent", "indexOf", "_schemePattern", "_singleSlashStart", "_doubleSlashStart", "_validateUri", "_strict", "scheme", "Error", "authority", "query", "fragment", "test", "_empty", "_slash", "_regexp", "URI", "thing", "fsPath", "with", "toString", "schemeOrData", "this", "uriToFsPath", "change", "Uri", "match", "exec", "percentDecode", "replace", "idx", "substring", "components", "result", "skipEncoding", "_asFormatted", "toJSON", "data", "_formatted", "external", "_fsPath", "_sep", "_pathSepMarker", "$mid", "encodeTable", "encodeURIComponentFast", "uriComponent", "isPath", "isAuthority", "nativeEncodePos", "pos", "encodeURIComponent", "charAt", "substr", "escaped", "encodeURIComponentMinimal", "uri", "keepDriveLetterCasing", "toLowerCase", "encoder", "userinfo", "String", "fromCharCode", "decodeURIComponentGraceful", "str", "decodeURIComponent", "_rEncodedAsHex", "x", "posixPath", "slash", "Utils", "t", "joinPath", "paths", "resolvePath", "slashAdded", "LIB", "UriUtils", "Utils", "isWindows", "equals", "a", "b", "__name", "relative", "from", "to", "fromPath", "URI", "toPath", "fromParts", "e", "toParts", "upperCaseDriveLetter", "i", "backPart", "toPart", "normalize", "uri", "contains", "parent", "child", "parentPath", "childPath", "UriTrie", "element", "node", "nodeToDelete", "uriString", "prefix", "create", "parts", "current", "part", "result", "DocumentState", "DefaultLangiumDocumentFactory", "__name", "services", "uri", "cancellationToken", "content", "textDocument", "token", "URI", "text", "model", "options", "parseResult", "cancelToken", "document", "textDocumentGetter", "oldText", "serviceRegistry", "textDoc", "TextDocument", "DefaultLangiumDocuments", "UriTrie", "stream", "uriString", "folder", "langiumDoc", "langiumDocs", "RefResolving", "DefaultLinker", "__name", "services", "document", "cancelToken", "task", "node", "streamAst", "interruptAndCheck", "streamReferences", "ref", "name", "refInfo", "description", "isLinkingError", "linkedNode", "err", "errorMessage", "descriptions", "items", "desc", "property", "refNode", "refText", "linker", "reference", "isAstNode", "isAstNodeDescription", "findRootNode", "refData", "DocumentState", "nodeDescription", "doc", "targetDescription", "referenceType", "isNamed", "node", "__name", "DefaultNameProvider", "findNodeForProperty", "DefaultReferences", "__name", "services", "streamAst", "node", "isCrossReference", "sourceCstNode", "assignment", "findAssignment", "nodeElem", "reference", "isReference", "isMultiReference", "getReferenceNodes", "ref", "nameNode", "isChildNode", "references", "headNode", "streamReferences", "item", "doc", "astNodes", "cstNodes", "astNode", "cstNode", "targetNode", "options", "refs", "indexReferences", "UriUtils", "stream", "selfNodes", "selfNode", "getDocument", "path", "toDocumentSegment", "MultiMap", "__name", "elements", "key", "value", "Reduction", "stream", "a", "values", "index", "EMPTY_STREAM", "callbackfn", "array", "BiMap", "DefaultScopeComputation", "__name", "services", "document", "cancelToken", "parentNode", "children", "streamContents", "exports", "node", "interruptAndCheck", "name", "rootNode", "symbols", "MultiMap", "streamAllContents", "container", "StreamScope", "__name", "elements", "outerScope", "options", "name", "lowerCaseName", "local", "e", "MapScope", "element", "localName", "arr", "stream", "elementStream", "MultiMapScope", "MultiMap", "EMPTY_SCOPE", "EMPTY_STREAM", "DisposableCache", "__name", "disposable", "SimpleCache", "key", "value", "provider", "ContextCache", "converter", "contextKey", "contextCache", "mapKey", "documentCache", "DocumentCache", "sharedServices", "state", "uri", "document", "_changed", "deleted", "changed", "allUris", "WorkspaceCache", "DefaultScopeProvider", "__name", "services", "WorkspaceCache", "context", "scopes", "referenceType", "localSymbols", "getDocument", "currentNode", "desc", "result", "i", "elements", "outerScope", "options", "StreamScope", "stream", "s", "e", "name", "_context", "MultiMapScope", "isAstNodeWithComment", "node", "__name", "isIntermediateReference", "obj", "DefaultJsonSerializer", "services", "options", "serializeOptions", "specificReplacer", "defaultReplacer", "key", "value", "replacer", "getDocument", "content", "deserializeOptions", "root", "refText", "sourceText", "textRegions", "comments", "uriConverter", "isReference", "refValue", "$refText", "targetDocument", "targetUri", "targetPath", "isMultiReference", "$refs", "item", "isAstNode", "astNode", "comment", "createDocumentSegment", "cstNode", "textRegion", "assignments", "propertyAssignments", "findNodesForProperty", "container", "containerProperty", "containerIndex", "propertyName", "index", "element", "mutable", "property", "reference", "error", "ref", "refNode", "refs", "refUri", "uri", "fragmentIndex", "documentUri", "URI", "document", "err", "DefaultServiceRegistry", "__name", "services", "language", "data", "ext", "name", "uri", "languageId", "UriUtils", "diagnosticData", "code", "__name", "ValidationCategory", "ValidationRegistry", "services", "MultiMap", "checksRecord", "thisObj", "category", "type", "ch", "callbacks", "check", "entry", "assertUnreachable", "node", "accept", "cancelToken", "functionality", "messageContext", "err", "isOperationCancelled", "messageDetails", "subtype", "categories", "checks", "stream", "checkBefore", "checkAfter", "rootNode", "_document", "VALIDATE_EACH_NODE", "DefaultDocumentValidator", "__name", "services", "document", "options", "cancelToken", "parseResult", "diagnostics", "interruptAndCheck", "d", "DocumentValidator", "err", "isOperationCancelled", "_options", "lexerDiagnostics", "lexerDiagnostic", "severity", "diagnostic", "toDiagnosticSeverity", "toDiagnosticData", "parserError", "range", "token", "position", "tokenToRange", "diagnosticData", "reference", "linkingError", "info", "rootNode", "validationItems", "acceptor", "message", "checksBefore", "checkBefore", "task", "nodes", "streamAst", "node", "nodeOptions", "checks", "check", "_node", "checksAfter", "checkAfter", "getDiagnosticRange", "cstNode", "findNodeForProperty", "findNodeForKeyword", "DefaultAstNodeDescriptionProvider", "__name", "services", "node", "name", "document", "doc", "getDocument", "path", "nameNodeSegment", "nameSegmentGetter", "toDocumentSegment", "DefaultReferenceDescriptionProvider", "cancelToken", "descr", "rootNode", "astNode", "streamAst", "interruptAndCheck", "streamReferences", "refInfo", "reference", "items", "isReference", "isMultiReference", "e", "sourceUri", "sourcePath", "descriptions", "segment", "item", "UriUtils", "DefaultAstNodeLocator", "__name", "node", "containerPath", "newSegment", "$containerProperty", "$containerIndex", "path", "previousValue", "currentValue", "propertyIndex", "property", "arrayIndex", "event_exports", "__reExport", "DefaultConfigurationProvider", "__name", "services", "Deferred", "params", "languages", "lang", "configToUpdate", "configs", "conf", "idx", "change", "section", "configuration", "language", "sectionName", "languageId", "import_vscode_languageserver_protocol", "Disposable", "create", "callback", "__name", "DefaultDocumentBuilder", "__name", "services", "MultiMap", "DocumentState", "documents", "options", "cancelToken", "document", "key", "categories", "e", "changed", "deleted", "deletedUris", "deletedUri", "deletedDocs", "doc", "changedUris", "uri", "changedUri", "changedDocument", "allChangedUris", "stream", "interruptAndCheck", "rebuildDocuments", "state", "allCategories", "executedCategories", "requestedCategories", "requested", "stat", "listener", "left", "right", "ref", "callback", "Disposable", "index", "scopeComputation", "toBeLinked", "toBeValidated", "targetState", "targetStateDocs", "uriOrToken", "OperationCancelled", "resolve", "reject", "buildDisposable", "UriUtils", "cancelDisposable", "listenersCopy", "err", "isOperationCancelled", "validator", "validationOptions", "diagnostics", "DefaultIndexManager", "__name", "services", "ContextCache", "targetNode", "astNodePath", "targetDocUri", "getDocument", "result", "docRefs", "refDescr", "UriUtils", "stream", "nodeType", "uris", "documentUris", "uri", "e", "uriString", "document", "cancelToken", "exports", "indexData", "changedUris", "references", "ref", "DefaultWorkspaceManager", "__name", "services", "Deferred", "params", "_params", "token", "folders", "cancelToken", "documents", "interruptAndCheck", "collector", "document", "uris", "wf", "entry", "uniqueUris", "stream", "uri", "_folders", "_collector", "workspaceFolder", "URI", "folderPath", "content", "e", "name", "UriUtils", "DefaultLexerErrorMessageProvider", "__name", "fullText", "startOffset", "length", "line", "column", "defaultLexerErrorProvider", "token", "DEFAULT_TOKENIZE_OPTIONS", "DefaultLexer", "services", "tokens", "lexerTokens", "isTokenTypeDictionary", "production", "Lexer", "text", "_options", "chevrotainResult", "buildTokens", "isIMultiModeLexerDefinition", "res", "isTokenTypeArray", "tokenVocabulary", "init_main", "parseJSDoc", "node", "start", "options", "opts", "position", "Position", "lines", "getLines", "normalizedOptions", "normalizeOptions", "tokens", "tokenize", "parseJSDocComment", "__name", "isJSDoc", "first", "last", "firstRegex", "lastRegex", "content", "NEWLINE_REGEXP", "tagRegex", "inlineTagRegex", "context", "currentLine", "currentCharacter", "line", "index", "match", "lastCharacter", "skipWhitespace", "Range", "tagMatch", "fullMatch", "value", "end", "rest", "inlineTagMatches", "buildInlineTokens", "tags", "lineIndex", "characterIndex", "lastIndex", "matchIndex", "startContent", "offset", "tagName", "endContent", "nonWhitespaceRegex", "whitespaceEndRegex", "startPosition", "JSDocCommentImpl", "elements", "element", "parseJSDocElement", "next", "parseJSDocTag", "parseJSDocText", "appendEmptyLine", "token", "JSDocLineImpl", "firstToken", "lastToken", "parseJSDocInline", "JSDocTextImpl", "parseJSDocLine", "inline", "tagToken", "name", "docLine", "JSDocTagImpl", "textDoc", "range", "normalizeOption", "option", "escaped", "escapeRegExp", "e", "text", "fillNewlines", "rendered", "renderInlineTag", "marker", "tag", "display", "displayStart", "renderLinkDefault", "URI", "i", "JSDocDocumentationProvider", "__name", "services", "node", "comment", "isJSDoc", "parseJSDoc", "link", "display", "tag", "name", "description", "line", "character", "uri", "_node", "_tag", "precomputed", "getDocument", "currentNode", "e", "DefaultCommentProvider", "__name", "services", "node", "isAstNodeWithComment", "findCommentNode", "DefaultAsyncParser", "__name", "services", "text", "_cancelToken", "AbstractThreadedAsyncParser", "worker", "deferred", "cancelToken", "Deferred", "timeout", "cancellation", "result", "hydrated", "err", "index", "OperationCancelled", "ParserWorker", "sendMessage", "onMessage", "onError", "terminate", "parseResult", "error", "DefaultWorkspaceLock", "__name", "action", "tokenSource", "startCancelableOperation", "queue", "cancellationToken", "deferred", "Deferred", "entry", "entries", "result", "err", "isOperationCancelled", "DefaultHydrator", "__name", "services", "BiMap", "result", "e", "lexerReport", "node", "astNodes", "cstNodes", "astNode", "streamAst", "cstNode", "streamCst", "context", "obj", "name", "value", "arr", "item", "isAstNode", "isReference", "reference", "isRootCstNode", "isCompositeCstNode", "child", "isLeafCstNode", "root", "cst", "RootCstNodeImpl", "CompositeCstNodeImpl", "parent", "num", "cstNodeObj", "hydrated", "tokenType", "offset", "length", "startLine", "startColumn", "endLine", "endColumn", "hidden", "LeafCstNodeImpl", "id", "element", "isAbstractElement", "createDefaultCoreModule", "context", "__name", "services", "DefaultCommentProvider", "JSDocDocumentationProvider", "DefaultAsyncParser", "createGrammarConfig", "createLangiumParser", "createCompletionParser", "DefaultValueConverter", "DefaultTokenBuilder", "DefaultLexer", "LangiumParserErrorMessageProvider", "DefaultLexerErrorMessageProvider", "DefaultAstNodeLocator", "DefaultAstNodeDescriptionProvider", "DefaultReferenceDescriptionProvider", "DefaultLinker", "DefaultNameProvider", "DefaultScopeProvider", "DefaultScopeComputation", "DefaultReferences", "DefaultHydrator", "DefaultJsonSerializer", "DefaultDocumentValidator", "ValidationRegistry", "createDefaultSharedCoreModule", "DefaultServiceRegistry", "DefaultLangiumDocuments", "DefaultLangiumDocumentFactory", "DefaultDocumentBuilder", "DefaultIndexManager", "DefaultWorkspaceManager", "DefaultWorkspaceLock", "DefaultConfigurationProvider", "Module", "m1", "m2", "_merge", "inject", "module1", "module2", "module3", "module4", "module5", "module6", "module7", "module8", "module9", "module", "_inject", "__name", "isProxy", "eagerLoad", "item", "value", "injector", "proxy", "obj", "prop", "_resolve", "_", "__requested__", "error", "target", "source", "key", "sourceValue", "targetValue", "indentationBuilderDefaultOptions", "LexingMode", "IndentationAwareTokenBuilder", "DefaultTokenBuilder", "__name", "options", "createToken", "grammar", "tokenTypes", "isTokenTypeArray", "indentTokenName", "dedentTokenName", "whitespaceTokenName", "ignoreIndentationDelimiters", "dedent", "indent", "ws", "otherTokens", "tokenType", "begin", "end", "text", "offset", "tokens", "groups", "match", "image", "lineNumber", "createTokenInstance", "currIndentLevel", "prevIndentLevel", "matchIndentIndex", "numberOfDedents", "newlinesBeforeDedent", "i", "token", "terminal", "Lexer", "remainingDedents", "IndentationAwareLexer", "DefaultLexer", "services", "DEFAULT_TOKENIZE_OPTIONS", "result", "report", "indentTokenType", "dedentTokenType", "indentTokenIdx", "dedentTokenIdx", "cleanTokens", "length", "nextToken", "utils_exports", "__export", "ast_utils_exports", "BiMap", "cancellation_exports", "ContextCache", "cst_utils_exports", "DONE_RESULT", "Deferred", "Disposable", "DisposableCache", "DocumentCache", "EMPTY_STREAM", "ErrorWithLocation", "grammar_utils_exports", "MultiMap", "OperationCancelled", "Reduction", "regexp_utils_exports", "SimpleCache", "StreamImpl", "TreeStreamImpl", "URI", "UriTrie", "UriUtils", "WorkspaceCache", "assertCondition", "assertUnreachable", "delayNextTick", "interruptAndCheck", "isOperationCancelled", "loadGrammarFromJson", "setInterruptionPeriod", "startCancelableOperation", "stream", "__reExport", "event_exports", "EmptyFileSystemProvider", "__name", "_uri", "EmptyFileSystem", "minimalGrammarModule", "__name", "minimalSharedGrammarModule", "LangiumGrammarAstReflection", "createMinimalGrammarServices", "shared", "inject", "createDefaultSharedCoreModule", "EmptyFileSystem", "grammar", "createDefaultCoreModule", "loadGrammarFromJson", "json", "services", "astNode", "URI", "__reExport", "lib_exports", "utils_exports", "DefaultLangiumProfiler", "__name", "activeCategories", "MultiMap", "category", "categories", "taskId", "ProfilingTask", "record", "result", "key", "values", "duration", "p", "c", "taskInternalDuration", "r", "a", "b", "Round", "value", "e", "addRecord", "identifier", "s", "subTaskId", "subStack", "selfDuration", "__defProp", "__name", "target", "value", "ArchitectureGrammar", "ArchitectureGrammar2", "GitGraphGrammar", "GitGraphGrammar2", "InfoGrammar", "InfoGrammar2", "PacketGrammar", "PacketGrammar2", "PieGrammar", "PieGrammar2", "RadarGrammar", "RadarGrammar2", "TreemapGrammar", "TreemapGrammar2", "MermaidTerminals", "Architecture", "isArchitecture", "item", "reflection", "Axis", "Branch", "isBranch", "Checkout", "CherryPicking", "ClassDefStatement", "Commit", "isCommit", "Curve", "Direction", "Edge", "Entry", "GitGraph", "isGitGraph", "Group", "Info", "isInfo", "Item", "Junction", "Leaf", "Merge", "isMerge", "Option", "Packet", "isPacket", "PacketBlock", "isPacketBlock", "Pie", "isPie", "PieSection", "isPieSection", "Radar", "Section", "Service", "Statement", "Treemap", "isTreemap", "TreemapRow", "MermaidAstReflection", "AbstractAstReflection", "loadedArchitectureGrammarGrammar", "ArchitectureGrammarGrammar", "loadGrammarFromJson", "loadedGitGraphGrammarGrammar", "GitGraphGrammarGrammar", "loadedInfoGrammarGrammar", "InfoGrammarGrammar", "loadedPacketGrammarGrammar", "PacketGrammarGrammar", "loadedPieGrammarGrammar", "PieGrammarGrammar", "loadedRadarGrammarGrammar", "RadarGrammarGrammar", "loadedTreemapGrammarGrammar", "TreemapGrammarGrammar", "ArchitectureGrammarLanguageMetaData", "GitGraphGrammarLanguageMetaData", "InfoGrammarLanguageMetaData", "PacketGrammarLanguageMetaData", "PieGrammarLanguageMetaData", "RadarGrammarLanguageMetaData", "TreemapGrammarLanguageMetaData", "MermaidGeneratedSharedModule", "ArchitectureGrammarGeneratedModule", "GitGraphGrammarGeneratedModule", "InfoGrammarGeneratedModule", "PacketGrammarGeneratedModule", "PieGrammarGeneratedModule", "RadarGrammarGeneratedModule", "TreemapGrammarGeneratedModule", "accessibilityDescrRegex", "accessibilityTitleRegex", "titleRegex", "rulesRegexes", "AbstractMermaidValueConverter", "DefaultValueConverter", "rule", "input", "cstNode", "_cstNode", "regex", "match", "CommonValueConverter", "_rule", "_input", "AbstractMermaidTokenBuilder", "DefaultTokenBuilder", "keywords", "rules", "terminalTokens", "options", "tokenTypes", "tokenType", "CommonTokenBuilder"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-H3VCZNTA.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-H3VCZNTA.mjs deleted file mode 100644 index 72d2ebd..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-H3VCZNTA.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import{a as hr,b as yr,c as C}from"./chunk-QU3B7NT4.mjs";import{A as st,B as I,C as nr,D as ir,E as _,F as G,G as lt,H as q,I as F,J as br,K as dt,L as B,M as L,N as xt,P as gt,Q as K,R as M,S as ct,a as et,b as P,c as Y,d as R,h as lr,j as ot,k as ft,l as W,m as dr,n as xr,o as at,p as Yr,q as gr,r as nt,s as it,u as mt,v as pt,w as ut,x as T,y as cr,z as s}from"./chunk-JIN56HTB.mjs";import{a as e}from"./chunk-VELTKBKT.mjs";function io(r){return I(r)?dt(r):hr(r)}e(io,"keys");var h=io;function mo(r,t){for(var o=-1,f=r==null?0:r.length;++o2?t[2]:void 0;for(a&&M(t[0],t[1],a)&&(f=1);++om))return!1;var u=n.get(r),l=n.get(t);if(u&&l)return u==t&&l==r;var d=-1,x=!0,E=o&Qf?new k:void 0;for(n.set(r,t),n.set(t,r);++dt}e(gn,"baseGt");var le=gn;function cn(r){return r&&r.length?er(r,L,le):void 0}e(cn,"max");var bn=cn;function hn(r,t,o,f){if(!R(r))return r;t=j(t,r);for(var a=-1,n=t.length,i=n-1,m=r;m!=null&&++a0&&o(m)?t>1?be(m,t-1,o,f,a):J(a,m):f||(a[a.length]=m)}return a}e(be,"baseFlatten");var U=be;function In(r){var t=r==null?0:r.length;return t?U(r,1):[]}e(In,"flatten");var Qr=In;function vn(r){return gt(xt(r,void 0,Qr),r+"")}e(vn,"flatRest");var he=vn;var Sn=he(function(r,t){return r==null?{}:xe(r,t)}),Tn=Sn;function wn(r,t,o,f){var a=-1,n=r==null?0:r.length;for(f&&n&&(o=r[++a]);++a-1}e(Fn,"arrayIncludes");var Kr=Fn;function Bn(r,t,o){for(var f=-1,a=r==null?0:r.length;++f=Gn){var u=t?null:ve(r);if(u)return rr(u);i=!1,a=V,p=new k}else p=t?[]:m;r:for(;++fa?0:a+t),o=o>a?a:o,o<0&&(o+=a),a=t>o?0:o-t>>>0,t>>>=0;for(var n=Array(a);++f=wi&&(n=V,i=!1,t=new k(t));r:for(;++a-1?a[n?t[i]:i]:void 0}}e(Di,"createFind");var Ne=Di;var Gi=Math.max;function Wi(r,t,o){var f=r==null?0:r.length;if(!f)return-1;var a=o==null?0:D(o);return a<0&&(a=Gi(f+a,0)),qr(r,g(t,3),a)}e(Wi,"findIndex");var Ue=Wi;var qi=Ne(Ue),Ki=qi;function ji(r){return r&&r.length?r[0]:void 0}e(ji,"head");var De=ji;function Hi(r,t){return U(Jr(r,t),1)}e(Hi,"flatMap");var zi=Hi;function Yi(r,t){return r==null?r:xr(r,Q(t),B)}e(Yi,"forIn");var Zi=Yi;function $i(r,t){return r&&X(r,Q(t))}e($i,"forOwn");var Ji=$i;var Xi=Object.prototype,Qi=Xi.hasOwnProperty,ki=Ce(function(r,t,o){Qi.call(r,o)?r[o].push(t):dr(r,o,[t])}),Vi=ki;var rm=Object.prototype,tm=rm.hasOwnProperty;function em(r,t){return r!=null&&tm.call(r,t)}e(em,"baseHas");var Ge=em;function om(r,t){return r!=null&&Nr(r,t,Ge)}e(om,"has");var fm=om;var am="[object String]";function nm(r){return typeof r=="string"||!s(r)&&T(r)&&Y(r)==am}e(nm,"isString");var pr=nm;var im=Math.max;function mm(r,t,o,f){r=I(r)?r:Xr(r),o=o&&!f?D(o):0;var a=r.length;return o<0&&(o=im(a+o,0)),pr(r)?o<=a&&r.indexOf(t,o)>-1:!!a&&or(r,t,o)>-1}e(mm,"includes");var pm=mm;var um=Math.max;function sm(r,t,o){var f=r==null?0:r.length;if(!f)return-1;var a=o==null?0:D(o);return a<0&&(a=um(f+a,0)),or(r,t,a)}e(sm,"indexOf");var lm=sm;var dm="[object RegExp]";function xm(r){return T(r)&&Y(r)==dm}e(xm,"baseIsRegExp");var We=xm;var qe=G&&G.isRegExp,gm=qe?_(qe):We,cm=gm;function bm(r,t){return rt||n&&i&&p&&!m&&!u||f&&i&&p||!o&&p||!a)return 1;if(!f&&!n&&!u&&r=m)return p;var u=o[f];return p*(u=="desc"?-1:1)}}return r.index-t.index}e(Pm,"compareMultiple");var ze=Pm;function Rm(r,t,o){t.length?t=S(t,function(n){return s(n)?function(i){return H(i,n.length===1?n[0]:n)}:n}):t=[L];var f=-1;t=S(t,_(g));var a=Gr(r,function(n,i,m){var p=S(t,function(u){return u(n)});return{criteria:p,index:++f,value:n}});return je(a,function(n,i){return ze(n,i,o)})}e(Rm,"baseOrderBy");var Ye=Rm;var Lm=Dr("length"),Ze=Lm;var Je="\\ud800-\\udfff",Mm="\\u0300-\\u036f",Cm="\\ufe20-\\ufe2f",_m="\\u20d0-\\u20ff",Fm=Mm+Cm+_m,Bm="\\ufe0e\\ufe0f",Nm="["+Je+"]",Vr="["+Fm+"]",rt="\\ud83c[\\udffb-\\udfff]",Um="(?:"+Vr+"|"+rt+")",Xe="[^"+Je+"]",Qe="(?:\\ud83c[\\udde6-\\uddff]){2}",ke="[\\ud800-\\udbff][\\udc00-\\udfff]",Dm="\\u200d",Ve=Um+"?",ro="["+Bm+"]?",Gm="(?:"+Dm+"(?:"+[Xe,Qe,ke].join("|")+")"+ro+Ve+")*",Wm=ro+Ve+Gm,qm="(?:"+[Xe+Vr+"?",Vr,Qe,ke,Nm].join("|")+")",$e=RegExp(rt+"(?="+rt+")|"+qm+Wm,"g");function Km(r){for(var t=$e.lastIndex=0;$e.test(r);)++t;return t}e(Km,"unicodeSize");var to=Km;function jm(r){return Re(r)?to(r):Ze(r)}e(jm,"stringSize");var eo=jm;var Hm=Math.ceil,zm=Math.max;function Ym(r,t,o,f){for(var a=-1,n=zm(Hm((t-r)/(o||1)),0),i=Array(n);n--;)i[f?n:++a]=r,r+=o;return i}e(Ym,"baseRange");var oo=Ym;function Zm(r){return function(t,o,f){return f&&typeof f!="number"&&M(t,o,f)&&(o=f=void 0),t=ar(t),o===void 0?(o=t,t=0):o=ar(o),f=f===void 0?t1&&M(r,t[0],t[1])?t=[]:o>2&&M(t[0],t[1],t[2])&&(t=[t[0]]),Ye(r,U(t,1),[])}),np=ap;function ip(r){return r&&r.length?fr(r):[]}e(ip,"uniq");var mp=ip;function pp(r,t){return r&&r.length?fr(r,g(t,2)):[]}e(pp,"uniqBy");var s0=pp;var up=0;function sp(r){var t=++up;return Br(r)+t}e(sp,"uniqueId");var lp=sp;function dp(r,t,o){for(var f=-1,a=r.length,n=t.length,i={};++f - * Build: `lodash modularize exports="es" -o ./` - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - *) -*/ diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-H3VCZNTA.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-H3VCZNTA.mjs.map deleted file mode 100644 index 48637c7..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-H3VCZNTA.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/keys.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayEach.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssign.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAssignIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayFilter.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/stubArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getSymbols.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copySymbols.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayPush.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getSymbolsIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_copySymbolsIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetAllKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getAllKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getAllKeysIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneDataView.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneRegExp.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cloneSymbol.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_initCloneByTag.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseClone.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/clone.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/defaults.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/last.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseForOwn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createBaseEach.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseEach.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castFunction.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/forEach.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFilter.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheAdd.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_SetCache.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arraySome.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cacheHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalArrays.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapToArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setToArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalByTag.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_equalObjects.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsEqualDeep.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsEqual.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsMatch.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isStrictComparable.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMatchData.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_matchesStrictComparable.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMatches.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSymbol.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKey.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_memoizeCapped.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stringToPath.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseToString.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toString.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castPath.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toKey.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGet.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/get.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHasIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hasPath.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/hasIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMatchesProperty.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseProperty.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePropertyDeep.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/property.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIteratee.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/filter.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/map.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseValues.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/values.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isUndefined.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/mapValues.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseExtremum.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGt.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/max.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePickBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePick.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isFlattenable.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFlatten.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatten.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_flatRest.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/pick.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayReduce.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseReduce.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/reduce.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFindIndex.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNaN.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_strictIndexOf.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIndexOf.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludes.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludesWith.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/noop.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUniq.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/union.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_trimmedEndIndex.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTrim.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toNumber.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toFinite.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toInteger.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/assign.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSlice.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hasUnicode.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/cloneDeep.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/compact.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayAggregator.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseAggregator.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createAggregator.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/now.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseDifference.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/difference.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/drop.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/dropRight.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayEvery.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseEvery.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/every.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createFind.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/findIndex.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/find.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/head.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/forIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/forOwn.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/groupBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/has.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isString.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/includes.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/indexOf.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsRegExp.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isRegExp.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseLt.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/min.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/minBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/negate.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/pickBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSortBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_compareAscending.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_compareMultiple.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseOrderBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_asciiSize.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_unicodeSize.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stringSize.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseRange.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createRange.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/range.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/reject.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/size.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSome.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/some.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/sortBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/uniq.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/uniqBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/uniqueId.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseZipObject.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/zipObject.js"], - "sourcesContent": ["import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n", "import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n", "import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n", "import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n", "import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n", "/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n", "import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n", "import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n", "import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n", "import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n", "import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nexport default defaults;\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n", "import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n", "import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n", "import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n", "import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n", "import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nexport default baseFilter;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n", "import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n", "import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n", "import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n", "import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n", "import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n", "import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n", "import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n", "import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n", "import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n", "import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n", "import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n", "import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n", "import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n", "import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n", "import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n", "import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nexport default baseValues;\n", "import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nexport default mapValues;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nexport default baseExtremum;\n", "/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nexport default baseGt;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nexport default max;\n", "import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n", "import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nexport default basePick;\n", "import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n", "import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n", "import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n", "import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n", "import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n", "/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nexport default baseReduce;\n", "import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n", "import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n", "import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n", "import assignValue from './_assignValue.js';\nimport copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport isArrayLike from './isArrayLike.js';\nimport isPrototype from './_isPrototype.js';\nimport keys from './keys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nexport default assign;\n", "/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n", "/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default compact;\n", "/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nexport default arrayAggregator;\n", "import baseEach from './_baseEach.js';\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nexport default baseAggregator;\n", "import arrayAggregator from './_arrayAggregator.js';\nimport baseAggregator from './_baseAggregator.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nexport default createAggregator;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseDifference;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nexport default difference;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nexport default drop;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default dropRight;\n", "/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nexport default arrayEvery;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nexport default baseEvery;\n", "import arrayEvery from './_arrayEvery.js';\nimport baseEvery from './_baseEvery.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default every;\n", "import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n", "import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n", "/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nexport default head;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nexport default flatMap;\n", "import baseFor from './_baseFor.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nexport default forIn;\n", "import baseForOwn from './_baseForOwn.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nexport default forOwn;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nexport default groupBy;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n", "import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n", "import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n", "import baseIndexOf from './_baseIndexOf.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport toInteger from './toInteger.js';\nimport values from './values.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nexport default includes;\n", "import baseIndexOf from './_baseIndexOf.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\nfunction indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n}\n\nexport default indexOf;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nexport default baseIsRegExp;\n", "import baseIsRegExp from './_baseIsRegExp.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nexport default isRegExp;\n", "/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nexport default baseLt;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nexport default min;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseLt from './_baseLt.js';\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nexport default minBy;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nexport default negate;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nexport default pickBy;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nexport default baseSortBy;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nexport default compareAscending;\n", "import compareAscending from './_compareAscending.js';\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nexport default compareMultiple;\n", "import arrayMap from './_arrayMap.js';\nimport baseGet from './_baseGet.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport baseSortBy from './_baseSortBy.js';\nimport baseUnary from './_baseUnary.js';\nimport compareMultiple from './_compareMultiple.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nexport default baseOrderBy;\n", "import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nexport default unicodeSize;\n", "import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nexport default stringSize;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n", "import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n", "import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport negate from './negate.js';\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nexport default reject;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nexport default size;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nexport default baseSome;\n", "import arraySome from './_arraySome.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseSome from './_baseSome.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default some;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseOrderBy from './_baseOrderBy.js';\nimport baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nexport default sortBy;\n", "import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n", "import toString from './toString.js';\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nexport default uniqueId;\n", "/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nexport default baseZipObject;\n", "import assignValue from './_assignValue.js';\nimport baseZipObject from './_baseZipObject.js';\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nexport default zipObject;\n"], - "mappings": "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", - "names": ["keys", "object", "isArrayLike_default", "arrayLikeKeys_default", "baseKeys_default", "__name", "keys_default", "arrayEach", "array", "iteratee", "index", "length", "__name", "arrayEach_default", "baseAssign", "object", "source", "copyObject_default", "keys_default", "__name", "baseAssign_default", "baseAssignIn", "object", "source", "copyObject_default", "keysIn_default", "__name", "baseAssignIn_default", "arrayFilter", "array", "predicate", "index", "length", "resIndex", "result", "value", "__name", "arrayFilter_default", "stubArray", "__name", "stubArray_default", "objectProto", "propertyIsEnumerable", "nativeGetSymbols", "getSymbols", "object", "arrayFilter_default", "symbol", "stubArray_default", "getSymbols_default", "copySymbols", "source", "object", "copyObject_default", "getSymbols_default", "__name", "copySymbols_default", "arrayPush", "array", "values", "index", "length", "offset", "__name", "arrayPush_default", "nativeGetSymbols", "getSymbolsIn", "object", "result", "arrayPush_default", "getSymbols_default", "getPrototype_default", "stubArray_default", "getSymbolsIn_default", "copySymbolsIn", "source", "object", "copyObject_default", "getSymbolsIn_default", "__name", "copySymbolsIn_default", "baseGetAllKeys", "object", "keysFunc", "symbolsFunc", "result", "isArray_default", "arrayPush_default", "__name", "baseGetAllKeys_default", "getAllKeys", "object", "baseGetAllKeys_default", "keys_default", "getSymbols_default", "__name", "getAllKeys_default", "getAllKeysIn", "object", "baseGetAllKeys_default", "keysIn_default", "getSymbolsIn_default", "__name", "getAllKeysIn_default", "objectProto", "hasOwnProperty", "initCloneArray", "array", "length", "result", "__name", "initCloneArray_default", "cloneDataView", "dataView", "isDeep", "buffer", "cloneArrayBuffer_default", "__name", "cloneDataView_default", "reFlags", "cloneRegExp", "regexp", "result", "__name", "cloneRegExp_default", "symbolProto", "Symbol_default", "symbolValueOf", "cloneSymbol", "symbol", "__name", "cloneSymbol_default", "boolTag", "dateTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "initCloneByTag", "object", "tag", "isDeep", "Ctor", "cloneArrayBuffer_default", "cloneDataView_default", "cloneTypedArray_default", "cloneRegExp_default", "cloneSymbol_default", "__name", "initCloneByTag_default", "mapTag", "baseIsMap", "value", "isObjectLike_default", "getTag_default", "__name", "baseIsMap_default", "nodeIsMap", "nodeUtil_default", "isMap", "baseUnary_default", "baseIsMap_default", "isMap_default", "setTag", "baseIsSet", "value", "isObjectLike_default", "getTag_default", "__name", "baseIsSet_default", "nodeIsSet", "nodeUtil_default", "isSet", "baseUnary_default", "baseIsSet_default", "isSet_default", "CLONE_DEEP_FLAG", "CLONE_FLAT_FLAG", "CLONE_SYMBOLS_FLAG", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "symbolTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "cloneableTags", "baseClone", "value", "bitmask", "customizer", "key", "object", "stack", "result", "isDeep", "isFlat", "isFull", "isObject_default", "isArr", "isArray_default", "initCloneArray_default", "copyArray_default", "tag", "getTag_default", "isFunc", "isBuffer_default", "cloneBuffer_default", "initCloneObject_default", "copySymbolsIn_default", "baseAssignIn_default", "copySymbols_default", "baseAssign_default", "initCloneByTag_default", "Stack_default", "stacked", "isSet_default", "subValue", "isMap_default", "keysFunc", "getAllKeysIn_default", "getAllKeys_default", "keysIn_default", "keys_default", "props", "arrayEach_default", "assignValue_default", "__name", "baseClone_default", "CLONE_SYMBOLS_FLAG", "clone", "value", "baseClone_default", "__name", "clone_default", "objectProto", "hasOwnProperty", "defaults", "baseRest_default", "object", "sources", "index", "length", "guard", "isIterateeCall_default", "source", "props", "keysIn_default", "propsIndex", "propsLength", "key", "value", "eq_default", "defaults_default", "last", "array", "length", "__name", "last_default", "baseForOwn", "object", "iteratee", "baseFor_default", "keys_default", "__name", "baseForOwn_default", "createBaseEach", "eachFunc", "fromRight", "collection", "iteratee", "isArrayLike_default", "length", "index", "iterable", "__name", "createBaseEach_default", "baseEach", "createBaseEach_default", "baseForOwn_default", "baseEach_default", "castFunction", "value", "identity_default", "__name", "castFunction_default", "forEach", "collection", "iteratee", "func", "isArray_default", "arrayEach_default", "baseEach_default", "castFunction_default", "__name", "forEach_default", "baseFilter", "collection", "predicate", "result", "baseEach_default", "value", "index", "__name", "baseFilter_default", "HASH_UNDEFINED", "setCacheAdd", "value", "__name", "setCacheAdd_default", "setCacheHas", "value", "__name", "setCacheHas_default", "SetCache", "values", "index", "length", "MapCache_default", "__name", "setCacheAdd_default", "setCacheHas_default", "SetCache_default", "arraySome", "array", "predicate", "index", "length", "__name", "arraySome_default", "cacheHas", "cache", "key", "__name", "cacheHas_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "equalArrays", "array", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "arrLength", "othLength", "arrStacked", "othStacked", "index", "result", "seen", "SetCache_default", "arrValue", "othValue", "compared", "arraySome_default", "othIndex", "cacheHas_default", "__name", "equalArrays_default", "mapToArray", "map", "index", "result", "value", "key", "__name", "mapToArray_default", "setToArray", "set", "index", "result", "value", "__name", "setToArray_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "boolTag", "dateTag", "errorTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "symbolProto", "Symbol_default", "symbolValueOf", "equalByTag", "object", "other", "tag", "bitmask", "customizer", "equalFunc", "stack", "Uint8Array_default", "eq_default", "convert", "mapToArray_default", "isPartial", "setToArray_default", "stacked", "result", "equalArrays_default", "__name", "equalByTag_default", "COMPARE_PARTIAL_FLAG", "objectProto", "hasOwnProperty", "equalObjects", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "objProps", "getAllKeys_default", "objLength", "othProps", "othLength", "index", "key", "objStacked", "othStacked", "result", "skipCtor", "objValue", "othValue", "compared", "objCtor", "othCtor", "__name", "equalObjects_default", "COMPARE_PARTIAL_FLAG", "argsTag", "arrayTag", "objectTag", "objectProto", "hasOwnProperty", "baseIsEqualDeep", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "objIsArr", "isArray_default", "othIsArr", "objTag", "getTag_default", "othTag", "objIsObj", "othIsObj", "isSameTag", "isBuffer_default", "Stack_default", "isTypedArray_default", "equalArrays_default", "equalByTag_default", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "equalObjects_default", "__name", "baseIsEqualDeep_default", "baseIsEqual", "value", "other", "bitmask", "customizer", "stack", "isObjectLike_default", "baseIsEqualDeep_default", "__name", "baseIsEqual_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseIsMatch", "object", "source", "matchData", "customizer", "index", "length", "noCustomizer", "data", "key", "objValue", "srcValue", "stack", "Stack_default", "result", "baseIsEqual_default", "__name", "baseIsMatch_default", "isStrictComparable", "value", "isObject_default", "__name", "isStrictComparable_default", "getMatchData", "object", "result", "keys_default", "length", "key", "value", "isStrictComparable_default", "__name", "getMatchData_default", "matchesStrictComparable", "key", "srcValue", "object", "__name", "matchesStrictComparable_default", "baseMatches", "source", "matchData", "getMatchData_default", "matchesStrictComparable_default", "object", "baseIsMatch_default", "__name", "baseMatches_default", "symbolTag", "isSymbol", "value", "isObjectLike_default", "baseGetTag_default", "__name", "isSymbol_default", "reIsDeepProp", "reIsPlainProp", "isKey", "value", "object", "isArray_default", "type", "isSymbol_default", "__name", "isKey_default", "MAX_MEMOIZE_SIZE", "memoizeCapped", "func", "result", "memoize_default", "key", "cache", "__name", "memoizeCapped_default", "rePropName", "reEscapeChar", "stringToPath", "memoizeCapped_default", "string", "result", "match", "number", "quote", "subString", "stringToPath_default", "arrayMap", "array", "iteratee", "index", "length", "result", "__name", "arrayMap_default", "INFINITY", "symbolProto", "Symbol_default", "symbolToString", "baseToString", "value", "isArray_default", "arrayMap_default", "isSymbol_default", "result", "__name", "baseToString_default", "toString", "value", "baseToString_default", "__name", "toString_default", "castPath", "value", "object", "isArray_default", "isKey_default", "stringToPath_default", "toString_default", "__name", "castPath_default", "INFINITY", "toKey", "value", "isSymbol_default", "result", "__name", "toKey_default", "baseGet", "object", "path", "castPath_default", "index", "length", "toKey_default", "__name", "baseGet_default", "get", "object", "path", "defaultValue", "result", "baseGet_default", "__name", "get_default", "baseHasIn", "object", "key", "__name", "baseHasIn_default", "hasPath", "object", "path", "hasFunc", "castPath_default", "index", "length", "result", "key", "toKey_default", "isLength_default", "isIndex_default", "isArray_default", "isArguments_default", "__name", "hasPath_default", "hasIn", "object", "path", "hasPath_default", "baseHasIn_default", "__name", "hasIn_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseMatchesProperty", "path", "srcValue", "isKey_default", "isStrictComparable_default", "matchesStrictComparable_default", "toKey_default", "object", "objValue", "get_default", "hasIn_default", "baseIsEqual_default", "__name", "baseMatchesProperty_default", "baseProperty", "key", "object", "__name", "baseProperty_default", "basePropertyDeep", "path", "object", "baseGet_default", "__name", "basePropertyDeep_default", "property", "path", "isKey_default", "baseProperty_default", "toKey_default", "basePropertyDeep_default", "__name", "property_default", "baseIteratee", "value", "identity_default", "isArray_default", "baseMatchesProperty_default", "baseMatches_default", "property_default", "__name", "baseIteratee_default", "filter", "collection", "predicate", "func", "isArray_default", "arrayFilter_default", "baseFilter_default", "baseIteratee_default", "__name", "filter_default", "baseMap", "collection", "iteratee", "index", "result", "isArrayLike_default", "baseEach_default", "value", "key", "__name", "baseMap_default", "map", "collection", "iteratee", "func", "isArray_default", "arrayMap_default", "baseMap_default", "baseIteratee_default", "__name", "map_default", "baseValues", "object", "props", "arrayMap_default", "key", "__name", "baseValues_default", "values", "object", "baseValues_default", "keys_default", "__name", "values_default", "isUndefined", "value", "__name", "isUndefined_default", "mapValues", "object", "iteratee", "result", "baseIteratee_default", "baseForOwn_default", "value", "key", "baseAssignValue_default", "__name", "mapValues_default", "baseExtremum", "array", "iteratee", "comparator", "index", "length", "value", "current", "computed", "isSymbol_default", "result", "__name", "baseExtremum_default", "baseGt", "value", "other", "__name", "baseGt_default", "max", "array", "baseExtremum_default", "identity_default", "baseGt_default", "__name", "max_default", "baseSet", "object", "path", "value", "customizer", "isObject_default", "castPath_default", "index", "length", "lastIndex", "nested", "key", "toKey_default", "newValue", "objValue", "isIndex_default", "assignValue_default", "__name", "baseSet_default", "basePickBy", "object", "paths", "predicate", "index", "length", "result", "path", "value", "baseGet_default", "baseSet_default", "castPath_default", "__name", "basePickBy_default", "basePick", "object", "paths", "basePickBy_default", "value", "path", "hasIn_default", "__name", "basePick_default", "spreadableSymbol", "Symbol_default", "isFlattenable", "value", "isArray_default", "isArguments_default", "__name", "isFlattenable_default", "baseFlatten", "array", "depth", "predicate", "isStrict", "result", "index", "length", "isFlattenable_default", "value", "arrayPush_default", "__name", "baseFlatten_default", "flatten", "array", "length", "baseFlatten_default", "__name", "flatten_default", "flatRest", "func", "setToString_default", "overRest_default", "flatten_default", "__name", "flatRest_default", "pick", "flatRest_default", "object", "paths", "basePick_default", "pick_default", "arrayReduce", "array", "iteratee", "accumulator", "initAccum", "index", "length", "__name", "arrayReduce_default", "baseReduce", "collection", "iteratee", "accumulator", "initAccum", "eachFunc", "value", "index", "__name", "baseReduce_default", "reduce", "collection", "iteratee", "accumulator", "func", "isArray_default", "arrayReduce_default", "baseReduce_default", "initAccum", "baseIteratee_default", "baseEach_default", "__name", "reduce_default", "baseFindIndex", "array", "predicate", "fromIndex", "fromRight", "length", "index", "__name", "baseFindIndex_default", "baseIsNaN", "value", "__name", "baseIsNaN_default", "strictIndexOf", "array", "value", "fromIndex", "index", "length", "__name", "strictIndexOf_default", "baseIndexOf", "array", "value", "fromIndex", "strictIndexOf_default", "baseFindIndex_default", "baseIsNaN_default", "__name", "baseIndexOf_default", "arrayIncludes", "array", "value", "length", "baseIndexOf_default", "__name", "arrayIncludes_default", "arrayIncludesWith", "array", "value", "comparator", "index", "length", "__name", "arrayIncludesWith_default", "noop", "__name", "noop_default", "INFINITY", "createSet", "Set_default", "setToArray_default", "values", "noop_default", "createSet_default", "LARGE_ARRAY_SIZE", "baseUniq", "array", "iteratee", "comparator", "index", "includes", "arrayIncludes_default", "length", "isCommon", "result", "seen", "arrayIncludesWith_default", "set", "createSet_default", "setToArray_default", "cacheHas_default", "SetCache_default", "outer", "value", "computed", "seenIndex", "__name", "baseUniq_default", "union", "baseRest_default", "arrays", "baseUniq_default", "baseFlatten_default", "isArrayLikeObject_default", "union_default", "reWhitespace", "trimmedEndIndex", "string", "index", "__name", "trimmedEndIndex_default", "reTrimStart", "baseTrim", "string", "trimmedEndIndex_default", "__name", "baseTrim_default", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "isSymbol_default", "isObject_default", "other", "baseTrim_default", "isBinary", "__name", "toNumber_default", "INFINITY", "MAX_INTEGER", "toFinite", "value", "toNumber_default", "sign", "__name", "toFinite_default", "toInteger", "value", "result", "toFinite_default", "remainder", "__name", "toInteger_default", "objectProto", "hasOwnProperty", "assign", "createAssigner_default", "object", "source", "isPrototype_default", "isArrayLike_default", "copyObject_default", "keys_default", "key", "assignValue_default", "assign_default", "baseSlice", "array", "start", "end", "index", "length", "result", "__name", "baseSlice_default", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsZWJ", "reHasUnicode", "hasUnicode", "string", "__name", "hasUnicode_default", "CLONE_DEEP_FLAG", "CLONE_SYMBOLS_FLAG", "cloneDeep", "value", "baseClone_default", "__name", "cloneDeep_default", "compact", "array", "index", "length", "resIndex", "result", "value", "__name", "compact_default", "arrayAggregator", "array", "setter", "iteratee", "accumulator", "index", "length", "value", "__name", "arrayAggregator_default", "baseAggregator", "collection", "setter", "iteratee", "accumulator", "baseEach_default", "value", "key", "__name", "baseAggregator_default", "createAggregator", "setter", "initializer", "collection", "iteratee", "func", "isArray_default", "arrayAggregator_default", "baseAggregator_default", "accumulator", "baseIteratee_default", "__name", "createAggregator_default", "now", "__name", "root_default", "now_default", "LARGE_ARRAY_SIZE", "baseDifference", "array", "values", "iteratee", "comparator", "index", "includes", "arrayIncludes_default", "isCommon", "length", "result", "valuesLength", "arrayMap_default", "baseUnary_default", "arrayIncludesWith_default", "cacheHas_default", "SetCache_default", "outer", "value", "computed", "valuesIndex", "__name", "baseDifference_default", "difference", "baseRest_default", "array", "values", "isArrayLikeObject_default", "baseDifference_default", "baseFlatten_default", "difference_default", "drop", "array", "n", "guard", "length", "toInteger_default", "baseSlice_default", "__name", "drop_default", "dropRight", "array", "n", "guard", "length", "toInteger_default", "baseSlice_default", "__name", "dropRight_default", "arrayEvery", "array", "predicate", "index", "length", "__name", "arrayEvery_default", "baseEvery", "collection", "predicate", "result", "baseEach_default", "value", "index", "__name", "baseEvery_default", "every", "collection", "predicate", "guard", "func", "isArray_default", "arrayEvery_default", "baseEvery_default", "isIterateeCall_default", "baseIteratee_default", "__name", "every_default", "createFind", "findIndexFunc", "collection", "predicate", "fromIndex", "iterable", "isArrayLike_default", "iteratee", "baseIteratee_default", "keys_default", "__name", "key", "index", "createFind_default", "nativeMax", "findIndex", "array", "predicate", "fromIndex", "length", "index", "toInteger_default", "baseFindIndex_default", "baseIteratee_default", "__name", "findIndex_default", "find", "createFind_default", "findIndex_default", "find_default", "head", "array", "__name", "head_default", "flatMap", "collection", "iteratee", "baseFlatten_default", "map_default", "__name", "flatMap_default", "forIn", "object", "iteratee", "baseFor_default", "castFunction_default", "keysIn_default", "__name", "forIn_default", "forOwn", "object", "iteratee", "baseForOwn_default", "castFunction_default", "__name", "forOwn_default", "objectProto", "hasOwnProperty", "groupBy", "createAggregator_default", "result", "value", "key", "baseAssignValue_default", "groupBy_default", "objectProto", "hasOwnProperty", "baseHas", "object", "key", "__name", "baseHas_default", "has", "object", "path", "hasPath_default", "baseHas_default", "__name", "has_default", "stringTag", "isString", "value", "isArray_default", "isObjectLike_default", "baseGetTag_default", "__name", "isString_default", "nativeMax", "includes", "collection", "value", "fromIndex", "guard", "isArrayLike_default", "values_default", "toInteger_default", "length", "isString_default", "baseIndexOf_default", "__name", "includes_default", "nativeMax", "indexOf", "array", "value", "fromIndex", "length", "index", "toInteger_default", "baseIndexOf_default", "__name", "indexOf_default", "regexpTag", "baseIsRegExp", "value", "isObjectLike_default", "baseGetTag_default", "__name", "baseIsRegExp_default", "nodeIsRegExp", "nodeUtil_default", "isRegExp", "baseUnary_default", "baseIsRegExp_default", "isRegExp_default", "baseLt", "value", "other", "__name", "baseLt_default", "min", "array", "baseExtremum_default", "identity_default", "baseLt_default", "__name", "min_default", "minBy", "array", "iteratee", "baseExtremum_default", "baseIteratee_default", "baseLt_default", "__name", "minBy_default", "FUNC_ERROR_TEXT", "negate", "predicate", "args", "__name", "negate_default", "pickBy", "object", "predicate", "props", "arrayMap_default", "getAllKeysIn_default", "prop", "baseIteratee_default", "basePickBy_default", "value", "path", "__name", "pickBy_default", "baseSortBy", "array", "comparer", "length", "__name", "baseSortBy_default", "compareAscending", "value", "other", "valIsDefined", "valIsNull", "valIsReflexive", "valIsSymbol", "isSymbol_default", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "__name", "compareAscending_default", "compareMultiple", "object", "other", "orders", "index", "objCriteria", "othCriteria", "length", "ordersLength", "result", "compareAscending_default", "order", "__name", "compareMultiple_default", "baseOrderBy", "collection", "iteratees", "orders", "arrayMap_default", "iteratee", "isArray_default", "value", "baseGet_default", "identity_default", "index", "baseUnary_default", "baseIteratee_default", "result", "baseMap_default", "key", "criteria", "baseSortBy_default", "object", "other", "compareMultiple_default", "__name", "baseOrderBy_default", "asciiSize", "baseProperty_default", "asciiSize_default", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsAstral", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsSymbol", "reUnicode", "unicodeSize", "string", "result", "__name", "unicodeSize_default", "stringSize", "string", "hasUnicode_default", "unicodeSize_default", "asciiSize_default", "__name", "stringSize_default", "nativeCeil", "nativeMax", "baseRange", "start", "end", "step", "fromRight", "index", "length", "result", "__name", "baseRange_default", "createRange", "fromRight", "start", "end", "step", "isIterateeCall_default", "toFinite_default", "baseRange_default", "__name", "createRange_default", "range", "createRange_default", "range_default", "reject", "collection", "predicate", "func", "isArray_default", "arrayFilter_default", "baseFilter_default", "negate_default", "baseIteratee_default", "__name", "reject_default", "mapTag", "setTag", "size", "collection", "isArrayLike_default", "isString_default", "stringSize_default", "tag", "getTag_default", "baseKeys_default", "__name", "size_default", "baseSome", "collection", "predicate", "result", "baseEach_default", "value", "index", "__name", "baseSome_default", "some", "collection", "predicate", "guard", "func", "isArray_default", "arraySome_default", "baseSome_default", "isIterateeCall_default", "baseIteratee_default", "__name", "some_default", "sortBy", "baseRest_default", "collection", "iteratees", "length", "isIterateeCall_default", "baseOrderBy_default", "baseFlatten_default", "sortBy_default", "uniq", "array", "baseUniq_default", "__name", "uniq_default", "uniqBy", "array", "iteratee", "baseUniq_default", "baseIteratee_default", "__name", "uniqBy_default", "idCounter", "uniqueId", "prefix", "id", "toString_default", "__name", "uniqueId_default", "baseZipObject", "props", "values", "assignFunc", "index", "length", "valsLength", "result", "value", "__name", "baseZipObject_default", "zipObject", "props", "values", "baseZipObject_default", "assignValue_default", "__name", "zipObject_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-HN6EAY2L.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-HN6EAY2L.mjs deleted file mode 100644 index 7f0afd4..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-HN6EAY2L.mjs +++ /dev/null @@ -1 +0,0 @@ -import{D as _,L as C,Q as N,b as a,n as u,p as g,z as b}from"./chunk-H3VCZNTA.mjs";import{d as y}from"./chunk-QU3B7NT4.mjs";import{O as f,e as E}from"./chunk-JIN56HTB.mjs";import{a as o}from"./chunk-VELTKBKT.mjs";var P="\0",l="\0",v="",m=class{static{o(this,"Graph")}constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=f(void 0),this._defaultEdgeLabelFn=f(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[l]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return E(e)||(e=f(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return a(this._nodes)}sources(){var e=this;return g(this.nodes(),function(t){return y(e._in[t])})}sinks(){var e=this;return g(this.nodes(),function(t){return y(e._out[t])})}setNodes(e,t){var s=arguments,i=this;return u(e,function(r){s.length>1?i.setNode(r,t):i.setNode(r)}),this}setNode(e,t){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=l,this._children[e]={},this._children[l][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var t=o(s=>this.removeEdge(this._edgeObjs[s]),"removeEdge");delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],u(this.children(e),s=>{this.setParent(s)}),delete this._children[e]),u(a(this._in[e]),t),delete this._in[e],delete this._preds[e],u(a(this._out[e]),t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(_(t))t=l;else{t+="";for(var s=t;!_(s);s=this.parent(s))if(s===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var t=this._parent[e];if(t!==l)return t}}children(e){if(_(e)&&(e=l),this._isCompound){var t=this._children[e];if(t)return a(t)}else{if(e===l)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var t=this._preds[e];if(t)return a(t)}successors(e){var t=this._sucs[e];if(t)return a(t)}neighbors(e){var t=this.predecessors(e);if(t)return N(t,this.successors(e))}isLeaf(e){var t;return this.isDirected()?t=this.successors(e):t=this.neighbors(e),t.length===0}filterNodes(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var s=this;u(this._nodes,function(n,h){e(h)&&t.setNode(h,n)}),u(this._edgeObjs,function(n){t.hasNode(n.v)&&t.hasNode(n.w)&&t.setEdge(n,s.edge(n))});var i={};function r(n){var h=s.parent(n);return h===void 0||t.hasNode(h)?(i[n]=h,h):h in i?i[h]:r(h)}return o(r,"findParent"),this._isCompound&&u(t.nodes(),function(n){t.setParent(n,r(n))}),t}setDefaultEdgeLabel(e){return E(e)||(e=f(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return b(this._edgeObjs)}setPath(e,t){var s=this,i=arguments;return C(e,function(r,n){return i.length>1?s.setEdge(r,n,t):s.setEdge(r,n),n}),this}setEdge(){var e,t,s,i,r=!1,n=arguments[0];typeof n=="object"&&n!==null&&"v"in n?(e=n.v,t=n.w,s=n.name,arguments.length===2&&(i=arguments[1],r=!0)):(e=n,t=arguments[1],s=arguments[3],arguments.length>2&&(i=arguments[2],r=!0)),e=""+e,t=""+t,_(s)||(s=""+s);var h=p(this._isDirected,e,t,s);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,h))return r&&(this._edgeLabels[h]=i),this;if(!_(s)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(t),this._edgeLabels[h]=r?i:this._defaultEdgeLabelFn(e,t,s);var c=D(this._isDirected,e,t,s);return e=c.v,t=c.w,Object.freeze(c),this._edgeObjs[h]=c,L(this._preds[t],e),L(this._sucs[e],t),this._in[t][h]=c,this._out[e][h]=c,this._edgeCount++,this}edge(e,t,s){var i=arguments.length===1?O(this._isDirected,arguments[0]):p(this._isDirected,e,t,s);return this._edgeLabels[i]}hasEdge(e,t,s){var i=arguments.length===1?O(this._isDirected,arguments[0]):p(this._isDirected,e,t,s);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,t,s){var i=arguments.length===1?O(this._isDirected,arguments[0]):p(this._isDirected,e,t,s),r=this._edgeObjs[i];return r&&(e=r.v,t=r.w,delete this._edgeLabels[i],delete this._edgeObjs[i],j(this._preds[t],e),j(this._sucs[e],t),delete this._in[t][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,t){var s=this._in[e];if(s){var i=b(s);return t?g(i,function(r){return r.v===t}):i}}outEdges(e,t){var s=this._out[e];if(s){var i=b(s);return t?g(i,function(r){return r.w===t}):i}}nodeEdges(e,t){var s=this.inEdges(e,t);if(s)return s.concat(this.outEdges(e,t))}};m.prototype._nodeCount=0;m.prototype._edgeCount=0;function L(d,e){d[e]?d[e]++:d[e]=1}o(L,"incrementOrInitEntry");function j(d,e){--d[e]||delete d[e]}o(j,"decrementOrRemoveEntry");function p(d,e,t,s){var i=""+e,r=""+t;if(!d&&i>r){var n=i;i=r,r=n}return i+v+r+v+(_(s)?P:s)}o(p,"edgeArgsToId");function D(d,e,t,s){var i=""+e,r=""+t;if(!d&&i>r){var n=i;i=r,r=n}var h={v:i,w:r};return s&&(h.name=s),h}o(D,"edgeArgsToObj");function O(d,e){return p(d,e.v,e.w,e.name)}o(O,"edgeObjToId");export{m as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-HN6EAY2L.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-HN6EAY2L.mjs.map deleted file mode 100644 index fab176b..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-HN6EAY2L.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/graphlib/graph.js"], - "sourcesContent": ["import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n/**\n * @typedef {string} NodeID ID of a node.\n */\n\n/**\n * @typedef {`${string}${typeof EDGE_KEY_DELIM}${string}${typeof EDGE_KEY_DELIM}${string}`} EdgeID ID of an edge.\n * @internal - All public APIs use {@link EdgeObj} instead to refer to edges.\n */\n\n/**\n * @typedef {object} EdgeObj\n * @property {NodeID} v the id of the source or tail node of an edge\n * @property {NodeID} w the id of the target or head node of an edge\n * @property {string | number} [name] Name of the edge. Needed to uniquely identify\n * multiple edges between the same pair of nodes in a multigraph.\n */\n\n/**\n * @template {unknown} T\n * @typedef {T[] | Record} Collection\n * Lodash object that can be iterated over with `_.each`.\n *\n * Beware, objects with `.length` are treated as arrays, see\n * https://lodash.com/docs/4.17.15#forEach\n */\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n/**\n * @typedef {object} GraphOptions\n * @property {boolean | undefined} [directed] - set to `true` to get a\n * directed graph and `false` to get an undirected graph.\n * An undirected graph does not treat the order of nodes in an edge as\n * significant.\n * In other words, `g.edge(\"a\", \"b\") === g.edge(\"b\", \"a\")` for\n * an undirected graph.\n * Default: `true`\n * @property {boolean | undefined} [multigraph] - set to `true` to allow a\n * graph to have multiple edges between the same pair of nodes.\n * Default: `false`.\n * @property {boolean | undefined} [compound] - set to `true` to allow a\n * graph to have compound nodes - nodes which can be the parent of other\n * nodes.\n * Default: `false`.\n */\n\n/**\n * Graphlib has a single graph type: {@link Graph}. To create a new instance:\n *\n * ```js\n * var g = new Graph();\n * ```\n *\n * By default this will create a directed graph that does not allow multi-edges\n * or compound nodes.\n * The following options can be used when constructing a new graph:\n *\n * * {@link GraphOptions#directed}: set to `true` to get a directed graph and `false` to get an\n * undirected graph.\n * An undirected graph does not treat the order of nodes in an edge as\n * significant. In other words,\n * `g.edge(\"a\", \"b\") === g.edge(\"b\", \"a\")` for an undirected graph.\n * Default: `true`.\n * * {@link GraphOptions#multigraph}: set to `true` to allow a graph to have multiple edges\n * between the same pair of nodes. Default: `false`.\n * * {@link GraphOptions#compound}: set to `true` to allow a graph to have compound nodes -\n * nodes which can be the parent of other nodes. Default: `false`.\n *\n * To set the options, pass in an options object to the `Graph` constructor.\n * For example, to create a directed compound multigraph:\n *\n * ```js\n * var g = new Graph({ directed: true, compound: true, multigraph: true });\n * ```\n *\n * ### Node and Edge Representation\n *\n * In graphlib, a node is represented by a user-supplied String id.\n * All node related functions use this String id as a way to uniquely identify\n * the node. Here is an example of interacting with nodes:\n *\n * ```js\n * var g = new Graph();\n * g.setNode(\"my-id\", \"my-label\");\n * g.node(\"my-id\"); // returns \"my-label\"\n * ```\n *\n * Edges in graphlib are identified by the nodes they connect. For example:\n *\n * ```js\n * var g = new Graph();\n * g.setEdge(\"source\", \"target\", \"my-label\");\n * g.edge(\"source\", \"target\"); // returns \"my-label\"\n * ```\n *\n * However, we need a way to uniquely identify an edge in a single object for\n * various edge queries (e.g. {@link Graph#outEdges}).\n * We use {@link EdgeObj}s for this purpose.\n * They consist of the following properties:\n *\n * * {@link EdgeObj#v}: the id of the source or tail node of an edge\n * * {@link EdgeObj#w}: the id of the target or head node of an edge\n * * {@link EdgeObj#name} (optional): the name that uniquely identifies a multiedge.\n *\n * Any edge function that takes an edge id will also work with an {@link EdgeObj}. For example:\n *\n * ```js\n * var g = new Graph();\n * g.setEdge(\"source\", \"target\", \"my-label\");\n * g.edge({ v: \"source\", w: \"target\" }); // returns \"my-label\"\n * ```\n *\n * ### Multigraphs\n *\n * A [multigraph](https://en.wikipedia.org/wiki/Multigraph) is a graph that can\n * have more than one edge between the same pair of nodes.\n * By default graphlib graphs are not multigraphs, but a multigraph can be\n * constructed by setting the {@link GraphOptions#multigraph} property to true:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * ```\n *\n * With multiple edges between two nodes we need some way to uniquely identify\n * each edge. We call this the {@link EdgeObj#name} property.\n * Here's an example of creating a couple of edges between the same nodes:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * g.setEdge(\"a\", \"b\", \"edge1-label\", \"edge1\");\n * g.setEdge(\"a\", \"b\", \"edge2-label\", \"edge2\");\n * g.edge(\"a\", \"b\", \"edge1\"); // returns \"edge1-label\"\n * g.edge(\"a\", \"b\", \"edge2\"); // returns \"edge2-label\"\n * g.edges(); // returns [{ v: \"a\", w: \"b\", name: \"edge1\" },\n * // { v: \"a\", w: \"b\", name: \"edge2\" }]\n * ```\n *\n * A multigraph still allows an edge with no name to be created:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * g.setEdge(\"a\", \"b\", \"my-label\");\n * g.edge({ v: \"a\", w: \"b\" }); // returns \"my-label\"\n * ```\n *\n * ### Compound Graphs\n *\n * A compound graph is one where a node can be the parent of other nodes.\n * The child nodes form a \"subgraph\".\n * Here's an example of constructing and interacting with a compound graph:\n *\n * ```js\n * var g = new Graph({ compound: true });\n * g.setParent(\"a\", \"parent\");\n * g.setParent(\"b\", \"parent\");\n * g.parent(\"a\"); // returns \"parent\"\n * g.parent(\"b\"); // returns \"parent\"\n * g.parent(\"parent\"); // returns undefined\n * ```\n *\n * ### Default Labels\n *\n * When a node or edge is created without a label, a default label can be assigned.\n * See {@link setDefaultNodeLabel} and {@link setDefaultEdgeLabel}.\n *\n * @template [GraphLabel=any] - Label of the graph.\n * @template [NodeLabel=any] - Label of a node.\n * Even though this is a \"label\", this could be any type that the user requires\n * (and may need to be an object for some layout/ranking algorithms in dagre).\n * @template [EdgeLabel=any] - Label of an edge.\n * Even though this is a \"label\", this could be any type that the user requires,\n * (and may need to be a object for ranking in dagre).\n */\nexport class Graph {\n /**\n * @param {GraphOptions} [opts] - Graph options.\n */\n constructor(opts = {}) {\n /**\n * @type {boolean}\n * @private\n */\n this._isDirected = Object.prototype.hasOwnProperty.call(opts, 'directed')\n ? opts.directed\n : true;\n /**\n * @type {boolean}\n * @private\n */\n this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, 'multigraph')\n ? opts.multigraph\n : false;\n /**\n * @type {boolean}\n * @private\n */\n this._isCompound = Object.prototype.hasOwnProperty.call(opts, 'compound')\n ? opts.compound\n : false;\n\n /**\n * @type {GraphLabel | undefined}\n * Label for the graph itself\n */\n this._label = undefined;\n\n /**\n * Default label to be set when creating a new node.\n *\n * @private\n * @type {(v: NodeID | number) => NodeLabel}\n */\n this._defaultNodeLabelFn = _.constant(undefined);\n\n /**\n * Default label to be set when creating a new edge\n *\n * @private\n * @type {(v: NodeID, w: NodeID, name: string | undefined) => EdgeLabel}\n */\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n /**\n * @type {Record}\n * @private\n *\n * v -> label\n */\n this._nodes = {};\n\n if (this._isCompound) {\n /**\n * @type {Record}\n * @private\n * v -> parent\n */\n this._parent = {};\n\n /**\n * @type {Record>}\n * @private\n * v -> children\n */\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n /**\n * @type {Record>}\n * @private\n * v -> edgeObj\n */\n this._in = {};\n\n /**\n * @type {Record>}\n * @private\n * u -> v -> Number\n */\n this._preds = {};\n\n /**\n * @type {Record>}\n * @private\n * v -> edgeObj\n */\n this._out = {};\n\n /**\n * @type {Record>}\n * @private\n * v -> w -> Number\n */\n this._sucs = {};\n\n /**\n * @type {Record}\n * @private\n * e -> edgeObj\n */\n this._edgeObjs = {};\n\n /**\n * @type {Record}\n * @private\n * e -> label\n */\n this._edgeLabels = {};\n }\n\n /* === Graph functions ========= */\n\n /**\n *\n * @returns {boolean} `true` if the graph is [directed](https://en.wikipedia.org/wiki/Directed_graph).\n * A directed graph treats the order of nodes in an edge as significant whereas an\n * [undirected](https://en.wikipedia.org/wiki/Graph_(mathematics)#Undirected_graph)\n * graph does not.\n * This example demonstrates the difference:\n *\n * @example\n *\n * ```js\n * var directed = new Graph({ directed: true });\n * directed.setEdge(\"a\", \"b\", \"my-label\");\n * directed.edge(\"a\", \"b\"); // returns \"my-label\"\n * directed.edge(\"b\", \"a\"); // returns undefined\n *\n * var undirected = new Graph({ directed: false });\n * undirected.setEdge(\"a\", \"b\", \"my-label\");\n * undirected.edge(\"a\", \"b\"); // returns \"my-label\"\n * undirected.edge(\"b\", \"a\"); // returns \"my-label\"\n * ```\n */\n isDirected() {\n return this._isDirected;\n }\n /**\n * @returns {boolean} `true` if the graph is a multigraph.\n */\n isMultigraph() {\n return this._isMultigraph;\n }\n /**\n * @returns {boolean} `true` if the graph is compound.\n */\n isCompound() {\n return this._isCompound;\n }\n\n /**\n * Sets the label for the graph to `label`.\n *\n * @param {GraphLabel} label - Label for the graph.\n * @returns {this}\n */\n setGraph(label) {\n this._label = label;\n return this;\n }\n\n /**\n * @returns {GraphLabel | undefined} the currently assigned label for the graph.\n * If no label has been assigned, returns `undefined`.\n *\n * @example\n *\n * ```js\n * var g = new Graph();\n * g.graph(); // returns undefined\n * g.setGraph(\"graph-label\");\n * g.graph(); // returns \"graph-label\"\n * ```\n */\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n\n /**\n * Sets a new default value that is assigned to nodes that are created without\n * a label.\n *\n * @param {typeof this._defaultNodeLabelFn | NodeLabel} newDefault - If a function,\n * it is called with the id of the node being created.\n * Otherwise, it is assigned as the label directly.\n * @returns {this}\n */\n setDefaultNodeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n\n /**\n * @returns {number} the number of nodes in the graph.\n */\n nodeCount() {\n return this._nodeCount;\n }\n\n /**\n * @returns {NodeID[]} the ids of the nodes in the graph.\n *\n * @remarks\n * Use {@link node()} to get the label for each node.\n * Takes `O(|V|)` time.\n */\n nodes() {\n return _.keys(this._nodes);\n }\n /**\n * @returns {NodeID[]} those nodes in the graph that have no in-edges.\n * @remarks Takes `O(|V|)` time.\n */\n sources() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._in[v]);\n });\n }\n /**\n * @returns {NodeID[]} those nodes in the graph that have no out-edges.\n * @remarks Takes `O(|V|)` time.\n */\n sinks() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._out[v]);\n });\n }\n\n /**\n * Invokes setNode method for each node in `vs` list.\n *\n * @param {Collection} vs - List of node IDs to create/set.\n * @param {NodeLabel} [value] - If set, update all nodes with this value.\n * @returns {this}\n * @remarks Complexity: O(|names|).\n */\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n\n /**\n * Creates or updates the value for the node `v` in the graph.\n *\n * @param {NodeID | number} v - ID of the node to create/set.\n * @param {NodeLabel} [value] - If supplied, it is set as the value for the node.\n * If not supplied and the node was created by this call then\n * {@link setDefaultNodeLabel} will be used to set the node's value.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n setNode(v, value) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n\n /**\n * Gets the label of node with specified name.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeLabel | undefined} the label assigned to the node with the id `v`\n * if it is in the graph.\n * Otherwise returns `undefined`.\n * @remarks Takes `O(1)` time.\n */\n node(v) {\n return this._nodes[v];\n }\n\n /**\n * Detects whether graph has a node with specified name or not.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {boolean} Returns `true` the graph has a node with the id.\n * @remarks Takes `O(1)` time.\n */\n hasNode(v) {\n return Object.prototype.hasOwnProperty.call(this._nodes, v);\n }\n\n /**\n * Remove the node with the id `v` in the graph or do nothing if the node is\n * not in the graph.\n *\n * If the node was removed this function also removes any incident edges.\n *\n * @param {NodeID | number} v - Node ID to remove.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(|E|)` time.\n */\n removeNode(v) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n var removeEdge = (e) => this.removeEdge(this._edgeObjs[e]);\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), (child) => {\n this.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n\n /**\n * Sets the parent for `v` to `parent` if it is defined or removes the parent\n * for `v` if `parent` is undefined.\n *\n * @param {NodeID | number} v - Node ID to set the parent for.\n * @param {NodeID | number} [parent] - Parent node ID. If not defined, removes the parent.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @throws if the graph is not compound.\n * @throws if setting the parent would create a cycle.\n * @remarks Takes `O(1)` time.\n */\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n // @ts-expect-error -- We coerced parent to a string above\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n\n /**\n * @private\n * @param {NodeID | number} v - Node ID.\n */\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n\n /**\n * Get parent node for node `v`.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID | undefined} the node that is a parent of node `v`\n * or `undefined` if node `v` does not have a parent or is not a member of\n * the graph.\n * Always returns `undefined` for graphs that are not compound.\n * @remarks Takes `O(1)` time.\n */\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n\n /**\n * Gets list of direct children of node v.\n *\n * @param {NodeID | number} [v] - Node ID. If not specified, gets nodes\n * with no parent (top-level nodes).\n * @returns {NodeID[] | undefined} all nodes that are children of node `v` or\n * `undefined` if node `v` is not in the graph.\n * Always returns `[]` for graphs that are not compound.\n * @remarks Takes `O(|V|)` time.\n */\n children(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are predecessors of the\n * specified node or `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link neighbors} instead.\n * Takes `O(|V|)` time.\n */\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are successors of the\n * specified node or `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link neighbors} instead.\n * Takes `O(|V|)` time.\n */\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are predecessors or\n * successors of the specified node\n * or `undefined` if node `v` is not in the graph.\n * @remarks Takes `O(|V|)` time.\n */\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {boolean} True if the node is a leaf (has no successors), false otherwise.\n */\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n\n /**\n * Creates new graph with nodes filtered via `filter`.\n * Edges incident to rejected node\n * are also removed.\n * \n * In case of compound graph, if parent is rejected by `filter`,\n * than all its children are rejected too.\n\n * @param {(v: NodeID) => boolean} filter - Function that returns `true` for nodes to keep.\n * @returns {Graph} A new graph containing only the nodes for which `filter` returns `true`.\n * @remarks Average-case complexity: O(|E|+|V|).\n */\n filterNodes(filter) {\n /**\n * @type {Graph}\n */\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function (e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n\n /* === Edge functions ========== */\n\n /**\n * Sets a new default value that is assigned to edges that are created without\n * a label.\n *\n * @param {typeof this._defaultEdgeLabelFn | EdgeLabel} newDefault - If a function,\n * it is called with the parameters `(v, w, name)`.\n * Otherwise, it is assigned as the label directly.\n * @returns {this}\n */\n setDefaultEdgeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n\n /**\n * @returns {number} the number of edges in the graph.\n * @remarks Complexity: O(1).\n */\n edgeCount() {\n return this._edgeCount;\n }\n\n /**\n * Gets edges of the graph.\n *\n * @returns {EdgeObj[]} the {@link EdgeObj} for each edge in the graph.\n *\n * @remarks\n * In case of compound graph subgraphs are not considered.\n * Use {@link edge()} to get the label for each edge.\n * Takes `O(|E|)` time.\n */\n edges() {\n return _.values(this._edgeObjs);\n }\n\n /**\n * Establish an edges path over the nodes in nodes list.\n *\n * If some edge is already exists, it will update its label, otherwise it will\n * create an edge between pair of nodes with label provided or default label\n * if no label provided.\n *\n * @param {Collection} vs - List of node IDs to create edges between.\n * @param {EdgeLabel} [value] - If set, update all edges with this value.\n * @returns {this}\n * @remarks Complexity: O(|nodes|).\n */\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n\n /**\n * Creates or updates the label for the edge (`v`, `w`) with the optionally\n * supplied `name`.\n *\n * @overload\n * @param {EdgeObj} arg0 - Edge object.\n * @param {EdgeLabel} [value] - If supplied, it is set as the label for the edge.\n * If not supplied and the edge was created by this call then\n * {@link setDefaultEdgeLabel} will be used to assign the edge's label.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n /**\n * Creates or updates the label for the edge (`v`, `w`) with the optionally\n * supplied `name`.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID. Number values will be coerced to strings.\n * @param {NodeID | number} w - Target node ID. Number values will be coerced to strings.\n * @param {EdgeLabel} [value] - If supplied, it is set as the label for the edge.\n * If not supplied and the edge was created by this call then\n * {@link setDefaultEdgeLabel} will be used to assign the edge's label.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!_.isUndefined(name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n\n /**\n * Gets the label for the specified edge.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {EdgeLabel | undefined} the label for the edge (`v`, `w`) if the\n * graph has an edge between `v` and `w` with the optional `name`.\n * Returned `undefined` if there is no such edge in the graph.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n /**\n * Gets the label for the specified edge.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {EdgeLabel | undefined} the label for the edge (`v`, `w`) if the\n * graph has an edge between `v` and `w` with the optional `name`.\n * Returned `undefined` if there is no such edge in the graph.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n\n /**\n * Detects whether the graph contains specified edge or not.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {boolean} `true` if the graph has an edge between `v` and `w`\n * with the optional `name`.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n /**\n * Detects whether the graph contains specified edge or not.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {boolean} `true` if the graph has an edge between `v` and `w`\n * with the optional `name`.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return Object.prototype.hasOwnProperty.call(this._edgeLabels, e);\n }\n\n /**\n * Removes the edge (`v`, `w`) if the graph has an edge between `v` and `w`\n * with the optional `name`. If not this function does nothing.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {this}\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n /**\n * Removes the edge (`v`, `w`) if the graph has an edge between `v` and `w`\n * with the optional `name`. If not this function does nothing.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {this}\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n\n /**\n * @param {NodeID | number} v - Target node ID.\n * @param {NodeID | number} [u] - Optionally filters edges down to just those\n * coming from node `u`.\n * @returns {EdgeObj[] | undefined} all edges that point to the node `v`.\n * Returns `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link nodeEdges} instead.\n * Takes `O(|E|)` time.\n */\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n\n /**\n * @param {NodeID | number} v - Target node ID.\n * @param {NodeID | number} [w] - Optionally filters edges down to just those\n * that point to `w`.\n * @returns {EdgeObj[] | undefined} all edges that point to the node `v`.\n * Returns `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link nodeEdges} instead.\n * Takes `O(|E|)` time.\n */\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n\n /**\n * @param {NodeID | number} v - Target Node ID.\n * @param {NodeID | number} [w] - If set, filters those edges down to just\n * those between nodes `v` and `w` regardless of direction\n * @returns {EdgeObj[] | undefined} all edges to or from node `v` regardless\n * of direction. Returns `undefined` if node `v` is not in the graph.\n * @remarks Takes `O(|E|)` time.\n */\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n/**\n * @param {Record} map - Object mapping node IDs to counts.\n * @param {NodeID | number} k - Node ID.\n */\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\n/**\n * @param {Record} map - Object mapping node IDs to counts.\n * @param {NodeID | number} k - Node ID.\n */\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj['v'] | number} v_ - Source node ID.\n * @param {EdgeObj['w'] | number} w_ - Target node ID.\n * @param {EdgeObj['name']} [name] - Edge name (for multiple edges between the same nodes).\n * @returns {EdgeID} Unique ID for the edge.\n */\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj['v'] | number} v_ - Source node ID.\n * @param {EdgeObj['w'] | number} w_ - Target node ID.\n * @param {EdgeObj['name']} [name] - Edge name (for multiple edges between the same nodes).\n * @returns {EdgeObj}\n */\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj} edgeObj - Edge object.\n * @returns {EdgeID} Unique ID for the edge.\n */\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n"], - "mappings": "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", - "names": ["DEFAULT_EDGE_NAME", "GRAPH_NODE", "EDGE_KEY_DELIM", "Graph", "__name", "opts", "constant_default", "label", "newDefault", "isFunction_default", "keys_default", "self", "filter_default", "v", "isEmpty_default", "vs", "value", "args", "forEach_default", "removeEdge", "e", "child", "parent", "isUndefined_default", "ancestor", "children", "predsV", "sucsV", "preds", "union_default", "neighbors", "filter", "copy", "parents", "findParent", "values_default", "reduce_default", "w", "name", "valueSpecified", "arg0", "edgeArgsToId", "edgeObj", "edgeArgsToObj", "incrementOrInitEntry", "edgeObjToId", "edge", "decrementOrRemoveEntry", "u", "inV", "edges", "outV", "inEdges", "map", "k", "isDirected", "v_", "w_", "tmp"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-YLHEXJF3.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-INKRHTLW.mjs similarity index 66% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-YLHEXJF3.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-INKRHTLW.mjs index c73c04c..c407e0e 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-YLHEXJF3.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-INKRHTLW.mjs @@ -1,14 +1,14 @@ -import{o as Se}from"./chunk-Q3CC2MQB.mjs";import{C as Q,E as we,F as ye,s as q,z as P}from"./chunk-3UWU4A3N.mjs";import{b as I,h as E}from"./chunk-MGPAVIPZ.mjs";import{a as c}from"./chunk-VELTKBKT.mjs";var it=Object.freeze({left:0,top:0,width:16,height:16}),L=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),K=Object.freeze({...it,...L}),Te=Object.freeze({...K,body:"",hidden:!1});var ot=Object.freeze({width:null,height:null}),Ie=Object.freeze({...ot,...L});var X=c((n,e,r,s="")=>{let t=n.split(":");if(n.slice(0,1)==="@"){if(t.length<2||t.length>3)return null;s=t.shift().slice(1)}if(t.length>3||!t.length)return null;if(t.length>1){let o=t.pop(),a=t.pop(),p={provider:t.length>0?t[0]:s,prefix:a,name:o};return e&&!O(p)?null:p}let l=t[0],i=l.split("-");if(i.length>1){let o={provider:s,prefix:i.shift(),name:i.join("-")};return e&&!O(o)?null:o}if(r&&s===""){let o={provider:s,prefix:"",name:l};return e&&!O(o,r)?null:o}return null},"stringToIcon"),O=c((n,e)=>n?!!((e&&n.prefix===""||n.prefix)&&n.name):!1,"validateIconName");function $e(n,e){let r={};!n.hFlip!=!e.hFlip&&(r.hFlip=!0),!n.vFlip!=!e.vFlip&&(r.vFlip=!0);let s=((n.rotate||0)+(e.rotate||0))%4;return s&&(r.rotate=s),r}c($e,"mergeIconTransformations");function J(n,e){let r=$e(n,e);for(let s in Te)s in L?s in n&&!(s in r)&&(r[s]=L[s]):s in e?r[s]=e[s]:s in n&&(r[s]=n[s]);return r}c(J,"mergeIconData");function Re(n,e){let r=n.icons,s=n.aliases||Object.create(null),t=Object.create(null);function l(i){if(r[i])return t[i]=[];if(!(i in t)){t[i]=null;let o=s[i]&&s[i].parent,a=o&&l(o);a&&(t[i]=[o].concat(a))}return t[i]}return c(l,"resolve"),(e||Object.keys(r).concat(Object.keys(s))).forEach(l),t}c(Re,"getIconsTree");function ze(n,e,r){let s=n.icons,t=n.aliases||Object.create(null),l={};function i(o){l=J(s[o]||t[o],l)}return c(i,"parse"),i(e),r.forEach(i),J(n,l)}c(ze,"internalGetIconData");function Y(n,e){if(n.icons[e])return ze(n,e,[]);let r=Re(n,[e])[e];return r?ze(n,e,r):null}c(Y,"getIconData");var lt=/(-?[0-9.]*[0-9]+[0-9.]*)/g,at=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function ee(n,e,r){if(e===1)return n;if(r=r||100,typeof n=="number")return Math.ceil(n*e*r)/r;if(typeof n!="string")return n;let s=n.split(lt);if(s===null||!s.length)return n;let t=[],l=s.shift(),i=at.test(l);for(;;){if(i){let o=parseFloat(l);isNaN(o)?t.push(l):t.push(Math.ceil(o*e*r)/r)}else t.push(l);if(l=s.shift(),l===void 0)return t.join("");i=!i}}c(ee,"calculateSize");function ct(n,e="defs"){let r="",s=n.indexOf("<"+e);for(;s>=0;){let t=n.indexOf(">",s),l=n.indexOf("",l);if(i===-1)break;r+=n.slice(t+1,l).trim(),n=n.slice(0,s).trim()+n.slice(i+1)}return{defs:r,content:n}}c(ct,"splitSVGDefs");function pt(n,e){return n?""+n+""+e:e}c(pt,"mergeDefsAndContent");function Me(n,e,r){let s=ct(n);return pt(s.defs,e+s.content+r)}c(Me,"wrapSVGContent");var ht=c(n=>n==="unset"||n==="undefined"||n==="none","isUnsetKeyword");function te(n,e){let r={...K,...n},s={...Ie,...e},t={left:r.left,top:r.top,width:r.width,height:r.height},l=r.body;[r,s].forEach(x=>{let b=[],A=x.hFlip,v=x.vFlip,S=x.rotate;A?v?S+=2:(b.push("translate("+(t.width+t.left).toString()+" "+(0-t.top).toString()+")"),b.push("scale(-1 1)"),t.top=t.left=0):v&&(b.push("translate("+(0-t.left).toString()+" "+(t.height+t.top).toString()+")"),b.push("scale(1 -1)"),t.top=t.left=0);let y;switch(S<0&&(S-=Math.floor(S/4)*4),S=S%4,S){case 1:y=t.height/2+t.top,b.unshift("rotate(90 "+y.toString()+" "+y.toString()+")");break;case 2:b.unshift("rotate(180 "+(t.width/2+t.left).toString()+" "+(t.height/2+t.top).toString()+")");break;case 3:y=t.width/2+t.left,b.unshift("rotate(-90 "+y.toString()+" "+y.toString()+")");break}S%2===1&&(t.left!==t.top&&(y=t.left,t.left=t.top,t.top=y),t.width!==t.height&&(y=t.width,t.width=t.height,t.height=y)),b.length&&(l=Me(l,'',""))});let i=s.width,o=s.height,a=t.width,p=t.height,h,u;i===null?(u=o===null?"1em":o==="auto"?p:o,h=ee(u,a/p)):(h=i==="auto"?a:i,u=o===null?ee(h,p/a):o==="auto"?p:o);let f={},g=c((x,b)=>{ht(b)||(f[x]=b.toString())},"setAttr");g("width",h),g("height",u);let d=[t.left,t.top,a,p];return f.viewBox=d.join(" "),{attributes:f,viewBox:d,body:l}}c(te,"iconToSVG");var ut=/\sid="(\S+)"/g,ft="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),gt=0;function ne(n,e=ft){let r=[],s;for(;s=ut.exec(n);)r.push(s[1]);if(!r.length)return n;let t="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(l=>{let i=typeof e=="function"?e(l):e+(gt++).toString(),o=l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");n=n.replace(new RegExp('([#;"])('+o+')([")]|\\.[a-z])',"g"),"$1"+i+t+"$3")}),n=n.replace(new RegExp(t,"g"),""),n}c(ne,"replaceIDs");function re(n,e){let r=n.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let s in e)r+=" "+s+'="'+e[s]+'"';return'"+n+""}c(re,"iconToHTML");var dt={body:'?',height:80,width:80},se=new Map,Ee=new Map,Un=c(n=>{for(let e of n){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(I.debug("Registering icon pack:",e.name),"loader"in e)Ee.set(e.name,e.loader);else if("icons"in e)se.set(e.name,e.icons);else throw I.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),Le=c(async(n,e)=>{let r=X(n,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${n}`);let s=r.prefix||e;if(!s)throw new Error(`Icon name must contain a prefix: ${n}`);let t=se.get(s);if(!t){let i=Ee.get(s);if(!i)throw new Error(`Icon set not found: ${r.prefix}`);try{t={...await i(),prefix:s},se.set(s,t)}catch(o){throw I.error(o),new Error(`Failed to load icon set: ${r.prefix}`)}}let l=Y(t,r.name);if(!l)throw new Error(`Icon not found: ${n}`);return l},"getRegisteredIconData"),Ae=c(async n=>{try{return await Le(n),!0}catch{return!1}},"isIconAvailable"),ve=c(async(n,e,r)=>{let s;try{s=await Le(n,e?.fallbackPrefix)}catch(i){I.error(i),s=dt}let t=te(s,e),l=re(ne(t.body),{...t.attributes,...r});return P(l,q())},"getIconSVG");function Ce(n){for(var e=[],r=1;r{let t=n.split(":");if(n.slice(0,1)==="@"){if(t.length<2||t.length>3)return null;s=t.shift().slice(1)}if(t.length>3||!t.length)return null;if(t.length>1){let o=t.pop(),a=t.pop(),p={provider:t.length>0?t[0]:s,prefix:a,name:o};return e&&!O(p)?null:p}let l=t[0],i=l.split("-");if(i.length>1){let o={provider:s,prefix:i.shift(),name:i.join("-")};return e&&!O(o)?null:o}if(r&&s===""){let o={provider:s,prefix:"",name:l};return e&&!O(o,r)?null:o}return null},"stringToIcon"),O=c((n,e)=>n?!!((e&&n.prefix===""||n.prefix)&&n.name):!1,"validateIconName");function $e(n,e){let r={};!n.hFlip!=!e.hFlip&&(r.hFlip=!0),!n.vFlip!=!e.vFlip&&(r.vFlip=!0);let s=((n.rotate||0)+(e.rotate||0))%4;return s&&(r.rotate=s),r}c($e,"mergeIconTransformations");function Y(n,e){let r=$e(n,e);for(let s in Te)s in L?s in n&&!(s in r)&&(r[s]=L[s]):s in e?r[s]=e[s]:s in n&&(r[s]=n[s]);return r}c(Y,"mergeIconData");function Re(n,e){let r=n.icons,s=n.aliases||Object.create(null),t=Object.create(null);function l(i){if(r[i])return t[i]=[];if(!(i in t)){t[i]=null;let o=s[i]&&s[i].parent,a=o&&l(o);a&&(t[i]=[o].concat(a))}return t[i]}return c(l,"resolve"),(e||Object.keys(r).concat(Object.keys(s))).forEach(l),t}c(Re,"getIconsTree");function Ee(n,e,r){let s=n.icons,t=n.aliases||Object.create(null),l={};function i(o){l=Y(s[o]||t[o],l)}return c(i,"parse"),i(e),r.forEach(i),Y(n,l)}c(Ee,"internalGetIconData");function ee(n,e){if(n.icons[e])return Ee(n,e,[]);let r=Re(n,[e])[e];return r?Ee(n,e,r):null}c(ee,"getIconData");var at=/(-?[0-9.]*[0-9]+[0-9.]*)/g,ct=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function te(n,e,r){if(e===1)return n;if(r=r||100,typeof n=="number")return Math.ceil(n*e*r)/r;if(typeof n!="string")return n;let s=n.split(at);if(s===null||!s.length)return n;let t=[],l=s.shift(),i=ct.test(l);for(;;){if(i){let o=parseFloat(l);isNaN(o)?t.push(l):t.push(Math.ceil(o*e*r)/r)}else t.push(l);if(l=s.shift(),l===void 0)return t.join("");i=!i}}c(te,"calculateSize");function pt(n,e="defs"){let r="",s=n.indexOf("<"+e);for(;s>=0;){let t=n.indexOf(">",s),l=n.indexOf("",l);if(i===-1)break;r+=n.slice(t+1,l).trim(),n=n.slice(0,s).trim()+n.slice(i+1)}return{defs:r,content:n}}c(pt,"splitSVGDefs");function ht(n,e){return n?""+n+""+e:e}c(ht,"mergeDefsAndContent");function ze(n,e,r){let s=pt(n);return ht(s.defs,e+s.content+r)}c(ze,"wrapSVGContent");var ut=c(n=>n==="unset"||n==="undefined"||n==="none","isUnsetKeyword");function ne(n,e){let r={...X,...n},s={...Ie,...e},t={left:r.left,top:r.top,width:r.width,height:r.height},l=r.body;[r,s].forEach(x=>{let b=[],A=x.hFlip,v=x.vFlip,S=x.rotate;A?v?S+=2:(b.push("translate("+(t.width+t.left).toString()+" "+(0-t.top).toString()+")"),b.push("scale(-1 1)"),t.top=t.left=0):v&&(b.push("translate("+(0-t.left).toString()+" "+(t.height+t.top).toString()+")"),b.push("scale(1 -1)"),t.top=t.left=0);let y;switch(S<0&&(S-=Math.floor(S/4)*4),S=S%4,S){case 1:y=t.height/2+t.top,b.unshift("rotate(90 "+y.toString()+" "+y.toString()+")");break;case 2:b.unshift("rotate(180 "+(t.width/2+t.left).toString()+" "+(t.height/2+t.top).toString()+")");break;case 3:y=t.width/2+t.left,b.unshift("rotate(-90 "+y.toString()+" "+y.toString()+")");break}S%2===1&&(t.left!==t.top&&(y=t.left,t.left=t.top,t.top=y),t.width!==t.height&&(y=t.width,t.width=t.height,t.height=y)),b.length&&(l=ze(l,'',""))});let i=s.width,o=s.height,a=t.width,p=t.height,h,u;i===null?(u=o===null?"1em":o==="auto"?p:o,h=te(u,a/p)):(h=i==="auto"?a:i,u=o===null?te(h,p/a):o==="auto"?p:o);let f={},g=c((x,b)=>{ut(b)||(f[x]=b.toString())},"setAttr");g("width",h),g("height",u);let d=[t.left,t.top,a,p];return f.viewBox=d.join(" "),{attributes:f,viewBox:d,body:l}}c(ne,"iconToSVG");var ft=/\sid="(\S+)"/g,gt="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),dt=0;function re(n,e=gt){let r=[],s;for(;s=ft.exec(n);)r.push(s[1]);if(!r.length)return n;let t="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(l=>{let i=typeof e=="function"?e(l):e+(dt++).toString(),o=l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");n=n.replace(new RegExp('([#;"])('+o+')([")]|\\.[a-z])',"g"),"$1"+i+t+"$3")}),n=n.replace(new RegExp(t,"g"),""),n}c(re,"replaceIDs");function se(n,e){let r=n.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let s in e)r+=" "+s+'="'+e[s]+'"';return'"+n+""}c(se,"iconToHTML");var mt={body:'?',height:80,width:80},ie=new Map,Me=new Map,Qn=c(n=>{for(let e of n){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(I.debug("Registering icon pack:",e.name),"loader"in e)Me.set(e.name,e.loader);else if("icons"in e)ie.set(e.name,e.icons);else throw I.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),Le=c(async(n,e)=>{let r=J(n,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${n}`);let s=r.prefix||e;if(!s)throw new Error(`Icon name must contain a prefix: ${n}`);let t=ie.get(s);if(!t){let i=Me.get(s);if(!i)throw new Error(`Icon set not found: ${r.prefix}`);try{t={...await i(),prefix:s},ie.set(s,t)}catch(o){throw I.error(o),new Error(`Failed to load icon set: ${r.prefix}`)}}let l=ee(t,r.name);if(!l)throw new Error(`Icon not found: ${n}`);return l},"getRegisteredIconData"),Ae=c(async n=>{try{return await Le(n),!0}catch{return!1}},"isIconAvailable"),ve=c(async(n,e,r)=>{let s;try{s=await Le(n,e?.fallbackPrefix)}catch(i){I.error(i),s=mt}let t=ne(s,e),l=se(re(t.body),{...t.attributes,...r});return P(l,q())},"getIconSVG");function Ce(n){for(var e=[],r=1;rnull,"exec")};function k(n,e=""){let r=typeof n=="string"?n:n.source,s={replace:c((t,l)=>{let i=typeof l=="string"?l:l.source;return i=i.replace(w.caret,"$1"),r=r.replace(t,i),s},"replace"),getRegex:c(()=>new RegExp(r,e),"getRegex")};return s}c(k,"h");var w={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:c(n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}#`),"headingBeginRegex"),htmlBeginRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},mt=/^(?:[ \t]*(?:\n|$))+/,kt=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,xt=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,F=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,bt=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ce=/(?:[*+-]|\d{1,9}[.)])/,qe=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Oe=k(qe).replace(/bull/g,ce).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),wt=k(qe).replace(/bull/g,ce).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),pe=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,yt=/^[^\n]+/,he=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,St=k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",he).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Tt=k(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,ce).getRegex(),N="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ue=/|$))/,It=k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",ue).replace("tag",N).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),We=k(pe).replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),$t=k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",We).getRegex(),fe={blockquote:$t,code:kt,def:St,fences:xt,heading:bt,hr:F,html:It,lheading:Oe,list:Tt,newline:mt,paragraph:We,table:B,text:yt},Pe=k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),Rt={...fe,lheading:wt,table:Pe,paragraph:k(pe).replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Pe).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex()},zt={...fe,html:k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ue).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:B,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:k(pe).replace("hr",F).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",Oe).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Mt=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Et=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Ge=/^( {2,}|\\)\n(?!\s*$)/,Lt=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,Ne=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,jt=k(Ne,"u").replace(/punct/g,V).getRegex(),_t=k(Ne,"u").replace(/punct/g,He).getRegex(),Ve="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Dt=k(Ve,"gu").replace(/notPunctSpace/g,Ze).replace(/punctSpace/g,ge).replace(/punct/g,V).getRegex(),Bt=k(Ve,"gu").replace(/notPunctSpace/g,Ct).replace(/punctSpace/g,vt).replace(/punct/g,He).getRegex(),Ft=k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ze).replace(/punctSpace/g,ge).replace(/punct/g,V).getRegex(),qt=k(/\\(punct)/,"gu").replace(/punct/g,V).getRegex(),Ot=k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Wt=k(ue).replace("(?:-->|$)","-->").getRegex(),Gt=k("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",Wt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),G=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,Zt=k(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",G).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ue=k(/^!?\[(label)\]\[(ref)\]/).replace("label",G).replace("ref",he).getRegex(),Qe=k(/^!?\[(ref)\](?:\[\])?/).replace("ref",he).getRegex(),Ht=k("reflink|nolink(?!\\()","g").replace("reflink",Ue).replace("nolink",Qe).getRegex(),de={_backpedal:B,anyPunctuation:qt,autolink:Ot,blockSkip:Pt,br:Ge,code:Et,del:B,emStrongLDelim:jt,emStrongRDelimAst:Dt,emStrongRDelimUnd:Ft,escape:Mt,link:Zt,nolink:Qe,punctuation:At,reflink:Ue,reflinkSearch:Ht,tag:Gt,text:Lt,url:B},Nt={...de,link:k(/^!?\[(label)\]\((.*?)\)/).replace("label",G).getRegex(),reflink:k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",G).getRegex()},ie={...de,emStrongRDelimAst:Bt,emStrongLDelim:_t,url:k(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},je=c(n=>Ut[n],"ke");function T(n,e){if(e){if(w.escapeTest.test(n))return n.replace(w.escapeReplace,je)}else if(w.escapeTestNoEncode.test(n))return n.replace(w.escapeReplaceNoEncode,je);return n}c(T,"w");function _e(n){try{n=encodeURI(n).replace(w.percentDecode,"%")}catch{return null}return n}c(_e,"J");function De(n,e){let r=n.replace(w.findPipe,(l,i,o)=>{let a=!1,p=i;for(;--p>=0&&o[p]==="\\";)a=!a;return a?"|":" |"}),s=r.split(w.splitPipe),t=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length0?-2:-1}c(Qt,"ge");function Be(n,e,r,s,t){let l=e.href,i=e.title||null,o=n[1].replace(t.other.outputLinkReplace,"$1");s.state.inLink=!0;let a={type:n[0].charAt(0)==="!"?"image":"link",raw:r,href:l,title:i,text:o,tokens:s.inlineTokens(o)};return s.state.inLink=!1,a}c(Be,"fe");function Kt(n,e,r){let s=n.match(r.other.indentCodeCompensation);if(s===null)return e;let t=s[1];return e.split(` +`)),i+=u+s[a+1]}),i}c(Ce,"dedent");function ce(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}c(ce,"L");var z=ce();function Fe(n){z=n}c(Fe,"G");var B={exec:c(()=>null,"exec")};function k(n,e=""){let r=typeof n=="string"?n:n.source,s={replace:c((t,l)=>{let i=typeof l=="string"?l:l.source;return i=i.replace(w.caret,"$1"),r=r.replace(t,i),s},"replace"),getRegex:c(()=>new RegExp(r,e),"getRegex")};return s}c(k,"h");var w={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:c(n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}#`),"headingBeginRegex"),htmlBeginRegex:c(n=>new RegExp(`^ {0,${Math.min(3,n-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},kt=/^(?:[ \t]*(?:\n|$))+/,xt=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,bt=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,F=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,wt=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,pe=/(?:[*+-]|\d{1,9}[.)])/,qe=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Oe=k(qe).replace(/bull/g,pe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),yt=k(qe).replace(/bull/g,pe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),he=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,St=/^[^\n]+/,ue=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Tt=k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",ue).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),It=k(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,pe).getRegex(),N="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",fe=/|$))/,$t=k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",fe).replace("tag",N).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ge=k(he).replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),Rt=k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ge).getRegex(),ge={blockquote:Rt,code:xt,def:Tt,fences:bt,heading:wt,hr:F,html:$t,lheading:Oe,list:It,newline:kt,paragraph:Ge,table:B,text:St},Pe=k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),Et={...ge,lheading:yt,table:Pe,paragraph:k(he).replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Pe).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex()},zt={...ge,html:k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",fe).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:B,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:k(he).replace("hr",F).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",Oe).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Mt=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Lt=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,We=/^( {2,}|\\)\n(?!\s*$)/,At=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,Ne=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Dt=k(Ne,"u").replace(/punct/g,Z).getRegex(),_t=k(Ne,"u").replace(/punct/g,He).getRegex(),Ze="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Bt=k(Ze,"gu").replace(/notPunctSpace/g,Ve).replace(/punctSpace/g,de).replace(/punct/g,Z).getRegex(),Ft=k(Ze,"gu").replace(/notPunctSpace/g,Pt).replace(/punctSpace/g,Ct).replace(/punct/g,He).getRegex(),qt=k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ve).replace(/punctSpace/g,de).replace(/punct/g,Z).getRegex(),Ot=k(/\\(punct)/,"gu").replace(/punct/g,Z).getRegex(),Gt=k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Wt=k(fe).replace("(?:-->|$)","-->").getRegex(),Vt=k("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",Wt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),W=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,Ht=k(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",W).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ue=k(/^!?\[(label)\]\[(ref)\]/).replace("label",W).replace("ref",ue).getRegex(),Qe=k(/^!?\[(ref)\](?:\[\])?/).replace("ref",ue).getRegex(),Nt=k("reflink|nolink(?!\\()","g").replace("reflink",Ue).replace("nolink",Qe).getRegex(),me={_backpedal:B,anyPunctuation:Ot,autolink:Gt,blockSkip:jt,br:We,code:Lt,del:B,emStrongLDelim:Dt,emStrongRDelimAst:Bt,emStrongRDelimUnd:qt,escape:Mt,link:Ht,nolink:Qe,punctuation:vt,reflink:Ue,reflinkSearch:Nt,tag:Vt,text:At,url:B},Zt={...me,link:k(/^!?\[(label)\]\((.*?)\)/).replace("label",W).getRegex(),reflink:k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",W).getRegex()},oe={...me,emStrongRDelimAst:Ft,emStrongLDelim:_t,url:k(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},je=c(n=>Qt[n],"ke");function T(n,e){if(e){if(w.escapeTest.test(n))return n.replace(w.escapeReplace,je)}else if(w.escapeTestNoEncode.test(n))return n.replace(w.escapeReplaceNoEncode,je);return n}c(T,"w");function De(n){try{n=encodeURI(n).replace(w.percentDecode,"%")}catch{return null}return n}c(De,"J");function _e(n,e){let r=n.replace(w.findPipe,(l,i,o)=>{let a=!1,p=i;for(;--p>=0&&o[p]==="\\";)a=!a;return a?"|":" |"}),s=r.split(w.splitPipe),t=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),e)if(s.length>e)s.splice(e);else for(;s.length0?-2:-1}c(Kt,"ge");function Be(n,e,r,s,t){let l=e.href,i=e.title||null,o=n[1].replace(t.other.outputLinkReplace,"$1");s.state.inLink=!0;let a={type:n[0].charAt(0)==="!"?"image":"link",raw:r,href:l,title:i,text:o,tokens:s.inlineTokens(o)};return s.state.inLink=!1,a}c(Be,"fe");function Xt(n,e,r){let s=n.match(r.other.indentCodeCompensation);if(s===null)return e;let t=s[1];return e.split(` `).map(l=>{let i=l.match(r.other.beginningSpace);if(i===null)return l;let[o]=i;return o.length>=t.length?l.slice(t.length):l}).join(` -`)}c(Kt,"Je");var Z=class{static{c(this,"y")}options;rules;lexer;constructor(n){this.options=n||M}space(n){let e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){let e=this.rules.block.code.exec(n);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:_(r,` -`)}}}fences(n){let e=this.rules.block.fences.exec(n);if(e){let r=e[0],s=Kt(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(n){let e=this.rules.block.heading.exec(n);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let s=_(r,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(r=s.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(n){let e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:_(e[0],` -`)}}blockquote(n){let e=this.rules.block.blockquote.exec(n);if(e){let r=_(e[0],` +`)}c(Xt,"Je");var V=class{static{c(this,"y")}options;rules;lexer;constructor(n){this.options=n||z}space(n){let e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){let e=this.rules.block.code.exec(n);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:D(r,` +`)}}}fences(n){let e=this.rules.block.fences.exec(n);if(e){let r=e[0],s=Xt(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:s}}}heading(n){let e=this.rules.block.heading.exec(n);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let s=D(r,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(r=s.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(n){let e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:D(e[0],` +`)}}blockquote(n){let e=this.rules.block.blockquote.exec(n);if(e){let r=D(e[0],` `).split(` `),s="",t="",l=[];for(;r.length>0;){let i=!1,o=[],a;for(a=0;a1,t={type:"list",raw:"",ordered:s,start:s?+r.slice(0,-1):"",loose:!1,items:[]};r=s?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=s?r:"[*+-]");let l=this.rules.other.listItemRegex(r),i=!1;for(;n;){let a=!1,p="",h="";if(!(e=l.exec(n))||this.rules.block.hr.test(n))break;p=e[0],n=n.substring(p.length);let u=e[2].split(` `,1)[0].replace(this.rules.other.listReplaceTabs,A=>" ".repeat(3*A.length)),f=n.split(` `,1)[0],g=!u.trim(),d=0;if(this.options.pedantic?(d=2,h=u.trimStart()):g?d=e[1].length+1:(d=e[2].search(this.rules.other.nonSpaceChar),d=d>4?1:d,h=u.slice(d),d+=e[1].length),g&&this.rules.other.blankLine.test(f)&&(p+=f+` -`,n=n.substring(f.length+1),a=!0),!a){let A=this.rules.other.nextBulletRegex(d),v=this.rules.other.hrRegex(d),S=this.rules.other.fencesBeginRegex(d),y=this.rules.other.headingBeginRegex(d),st=this.rules.other.htmlBeginRegex(d);for(;n;){let U=n.split(` -`,1)[0],C;if(f=U,this.options.pedantic?(f=f.replace(this.rules.other.listReplaceNesting," "),C=f):C=f.replace(this.rules.other.tabCharGlobal," "),S.test(f)||y.test(f)||st.test(f)||A.test(f)||v.test(f))break;if(C.search(this.rules.other.nonSpaceChar)>=d||!f.trim())h+=` +`,n=n.substring(f.length+1),a=!0),!a){let A=this.rules.other.nextBulletRegex(d),v=this.rules.other.hrRegex(d),S=this.rules.other.fencesBeginRegex(d),y=this.rules.other.headingBeginRegex(d),it=this.rules.other.htmlBeginRegex(d);for(;n;){let U=n.split(` +`,1)[0],C;if(f=U,this.options.pedantic?(f=f.replace(this.rules.other.listReplaceNesting," "),C=f):C=f.replace(this.rules.other.tabCharGlobal," "),S.test(f)||y.test(f)||it.test(f)||A.test(f)||v.test(f))break;if(C.search(this.rules.other.nonSpaceChar)>=d||!f.trim())h+=` `+C.slice(d);else{if(g||u.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||S.test(u)||y.test(u)||v.test(u))break;h+=` `+f}!g&&!f.trim()&&(g=!0),p+=U+` -`,n=n.substring(U.length+1),u=C.slice(d)}}t.loose||(i?t.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(i=!0));let x=null,b;this.options.gfm&&(x=this.rules.other.listIsTask.exec(h),x&&(b=x[0]!=="[ ] ",h=h.replace(this.rules.other.listReplaceTask,""))),t.items.push({type:"list_item",raw:p,task:!!x,checked:b,loose:!1,text:h,tokens:[]}),t.raw+=p}let o=t.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;t.raw=t.raw.trimEnd();for(let a=0;au.type==="space"),h=p.length>0&&p.some(u=>this.rules.other.anyLine.test(u.raw));t.loose=h}if(t.loose)for(let a=0;a({text:o,tokens:this.lexer.inline(o),header:!1,align:l.align[a]})));return l}}lheading(n){let e=this.rules.block.lheading.exec(n);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(n){let e=this.rules.block.paragraph.exec(n);if(e){let r=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(n){let e=this.rules.block.text.exec(n);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(n){let e=this.rules.inline.escape.exec(n);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(n){let e=this.rules.inline.tag.exec(n);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(n){let e=this.rules.inline.link.exec(n);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let l=_(r.slice(0,-1),"\\");if((r.length-l.length)%2===0)return}else{let l=Qt(e[2],"()");if(l===-2)return;if(l>-1){let i=(e[0].indexOf("!")===0?5:4)+e[1].length+l;e[2]=e[2].substring(0,l),e[0]=e[0].substring(0,i).trim(),e[3]=""}}let s=e[2],t="";if(this.options.pedantic){let l=this.rules.other.pedanticHrefTitle.exec(s);l&&(s=l[1],t=l[3])}else t=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?s=s.slice(1):s=s.slice(1,-1)),Be(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:t&&t.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(n,e){let r;if((r=this.rules.inline.reflink.exec(n))||(r=this.rules.inline.nolink.exec(n))){let s=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),t=e[s.toLowerCase()];if(!t){let l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return Be(r,t,r[0],this.lexer,this.rules)}}emStrong(n,e,r=""){let s=this.rules.inline.emStrongLDelim.exec(n);if(!(!s||s[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[2])||!r||this.rules.inline.punctuation.exec(r))){let t=[...s[0]].length-1,l,i,o=t,a=0,p=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,e=e.slice(-1*n.length+t);(s=p.exec(e))!=null;){if(l=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!l)continue;if(i=[...l].length,s[3]||s[4]){o+=i;continue}else if((s[5]||s[6])&&t%3&&!((t+i)%3)){a+=i;continue}if(o-=i,o>0)continue;i=Math.min(i,i+o+a);let h=[...s[0]][0].length,u=n.slice(0,t+s.index+h+i);if(Math.min(t,i)%2){let g=u.slice(1,-1);return{type:"em",raw:u,text:g,tokens:this.lexer.inlineTokens(g)}}let f=u.slice(2,-2);return{type:"strong",raw:u,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(n){let e=this.rules.inline.code.exec(n);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(r),t=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return s&&t&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(n){let e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n){let e=this.rules.inline.del.exec(n);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n){let e=this.rules.inline.autolink.exec(n);if(e){let r,s;return e[2]==="@"?(r=e[1],s="mailto:"+r):(r=e[1],s=r),{type:"link",raw:e[0],text:r,href:s,tokens:[{type:"text",raw:r,text:r}]}}}url(n){let e;if(e=this.rules.inline.url.exec(n)){let r,s;if(e[2]==="@")r=e[0],s="mailto:"+r;else{let t;do t=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(t!==e[0]);r=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:r,href:s,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(n){let e=this.rules.inline.text.exec(n);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},$=class oe{static{c(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||M,this.options.tokenizer=this.options.tokenizer||new Z,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:w,block:W.normal,inline:j.normal};this.options.pedantic?(r.block=W.pedantic,r.inline=j.pedantic):this.options.gfm&&(r.block=W.gfm,this.options.breaks?r.inline=j.breaks:r.inline=j.gfm),this.tokenizer.rules=r}static get rules(){return{block:W,inline:j}}static lex(e,r){return new oe(r).lex(e)}static lexInline(e,r){return new oe(r).inlineTokens(e)}lex(e){e=e.replace(w.carriageReturn,` +`,n=n.substring(U.length+1),u=C.slice(d)}}t.loose||(i?t.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(i=!0));let x=null,b;this.options.gfm&&(x=this.rules.other.listIsTask.exec(h),x&&(b=x[0]!=="[ ] ",h=h.replace(this.rules.other.listReplaceTask,""))),t.items.push({type:"list_item",raw:p,task:!!x,checked:b,loose:!1,text:h,tokens:[]}),t.raw+=p}let o=t.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;t.raw=t.raw.trimEnd();for(let a=0;au.type==="space"),h=p.length>0&&p.some(u=>this.rules.other.anyLine.test(u.raw));t.loose=h}if(t.loose)for(let a=0;a({text:o,tokens:this.lexer.inline(o),header:!1,align:l.align[a]})));return l}}lheading(n){let e=this.rules.block.lheading.exec(n);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(n){let e=this.rules.block.paragraph.exec(n);if(e){let r=e[1].charAt(e[1].length-1)===` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(n){let e=this.rules.block.text.exec(n);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(n){let e=this.rules.inline.escape.exec(n);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(n){let e=this.rules.inline.tag.exec(n);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(n){let e=this.rules.inline.link.exec(n);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let l=D(r.slice(0,-1),"\\");if((r.length-l.length)%2===0)return}else{let l=Kt(e[2],"()");if(l===-2)return;if(l>-1){let i=(e[0].indexOf("!")===0?5:4)+e[1].length+l;e[2]=e[2].substring(0,l),e[0]=e[0].substring(0,i).trim(),e[3]=""}}let s=e[2],t="";if(this.options.pedantic){let l=this.rules.other.pedanticHrefTitle.exec(s);l&&(s=l[1],t=l[3])}else t=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?s=s.slice(1):s=s.slice(1,-1)),Be(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:t&&t.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(n,e){let r;if((r=this.rules.inline.reflink.exec(n))||(r=this.rules.inline.nolink.exec(n))){let s=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),t=e[s.toLowerCase()];if(!t){let l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return Be(r,t,r[0],this.lexer,this.rules)}}emStrong(n,e,r=""){let s=this.rules.inline.emStrongLDelim.exec(n);if(!(!s||s[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[2])||!r||this.rules.inline.punctuation.exec(r))){let t=[...s[0]].length-1,l,i,o=t,a=0,p=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,e=e.slice(-1*n.length+t);(s=p.exec(e))!=null;){if(l=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!l)continue;if(i=[...l].length,s[3]||s[4]){o+=i;continue}else if((s[5]||s[6])&&t%3&&!((t+i)%3)){a+=i;continue}if(o-=i,o>0)continue;i=Math.min(i,i+o+a);let h=[...s[0]][0].length,u=n.slice(0,t+s.index+h+i);if(Math.min(t,i)%2){let g=u.slice(1,-1);return{type:"em",raw:u,text:g,tokens:this.lexer.inlineTokens(g)}}let f=u.slice(2,-2);return{type:"strong",raw:u,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(n){let e=this.rules.inline.code.exec(n);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(r),t=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return s&&t&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(n){let e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n){let e=this.rules.inline.del.exec(n);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n){let e=this.rules.inline.autolink.exec(n);if(e){let r,s;return e[2]==="@"?(r=e[1],s="mailto:"+r):(r=e[1],s=r),{type:"link",raw:e[0],text:r,href:s,tokens:[{type:"text",raw:r,text:r}]}}}url(n){let e;if(e=this.rules.inline.url.exec(n)){let r,s;if(e[2]==="@")r=e[0],s="mailto:"+r;else{let t;do t=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(t!==e[0]);r=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:r,href:s,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(n){let e=this.rules.inline.text.exec(n);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},$=class le{static{c(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||z,this.options.tokenizer=this.options.tokenizer||new V,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:w,block:G.normal,inline:j.normal};this.options.pedantic?(r.block=G.pedantic,r.inline=j.pedantic):this.options.gfm&&(r.block=G.gfm,this.options.breaks?r.inline=j.breaks:r.inline=j.gfm),this.tokenizer.rules=r}static get rules(){return{block:G,inline:j}}static lex(e,r){return new le(r).lex(e)}static lexInline(e,r){return new le(r).inlineTokens(e)}lex(e){e=e.replace(w.carriageReturn,` `),this.blockTokens(e,this.tokens);for(let r=0;r(t=i.call({lexer:this},e,r))?(e=e.substring(t.raw.length),r.push(t),!0):!1))continue;if(t=this.tokenizer.space(e)){e=e.substring(t.raw.length);let i=r.at(-1);t.raw.length===1&&i!==void 0?i.raw+=` `:r.push(t);continue}if(t=this.tokenizer.code(e)){e=e.substring(t.raw.length);let i=r.at(-1);i?.type==="paragraph"||i?.type==="text"?(i.raw+=(i.raw.endsWith(` `)?"":` @@ -42,7 +42,7 @@ ${h}`:h;let u=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo `+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):r.push(t),s=l.length!==e.length,e=e.substring(t.raw.length);continue}if(t=this.tokenizer.text(e)){e=e.substring(t.raw.length);let i=r.at(-1);i?.type==="text"?(i.raw+=(i.raw.endsWith(` `)?"":` `)+t.raw,i.text+=` -`+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):r.push(t);continue}if(e){let i="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(i);break}else throw new Error(i)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let s=e,t=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(t=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)o.includes(t[0].slice(t[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,t.index)+"["+"a".repeat(t[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(t=this.tokenizer.rules.inline.anyPunctuation.exec(s))!=null;)s=s.slice(0,t.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(t=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)s=s.slice(0,t.index)+"["+"a".repeat(t[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);s=this.options.hooks?.emStrongMask?.call({lexer:this},s)??s;let l=!1,i="";for(;e;){l||(i=""),l=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,r))?(e=e.substring(o.raw.length),r.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=r.at(-1);o.type==="text"&&p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):r.push(o);continue}if(o=this.tokenizer.emStrong(e,s,i)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),r.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),r.push(o);continue}let a=e;if(this.options.extensions?.startInline){let p=1/0,h=e.slice(1),u;this.options.extensions.startInline.forEach(f=>{u=f.call({lexer:this},h),typeof u=="number"&&u>=0&&(p=Math.min(p,u))}),p<1/0&&p>=0&&(a=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(a)){e=e.substring(o.raw.length),o.raw.slice(-1)!=="_"&&(i=o.raw.slice(-1)),l=!0;let p=r.at(-1);p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):r.push(o);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return r}},H=class{static{c(this,"P")}options;parser;constructor(n){this.options=n||M}space(n){return""}code({text:n,lang:e,escaped:r}){let s=(e||"").match(w.notSpaceStart)?.[0],t=n.replace(w.endingNewline,"")+` +`+t.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):r.push(t);continue}if(e){let i="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(i);break}else throw new Error(i)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let s=e,t=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(t=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)o.includes(t[0].slice(t[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,t.index)+"["+"a".repeat(t[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(t=this.tokenizer.rules.inline.anyPunctuation.exec(s))!=null;)s=s.slice(0,t.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(t=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)s=s.slice(0,t.index)+"["+"a".repeat(t[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);s=this.options.hooks?.emStrongMask?.call({lexer:this},s)??s;let l=!1,i="";for(;e;){l||(i=""),l=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,r))?(e=e.substring(o.raw.length),r.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=r.at(-1);o.type==="text"&&p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):r.push(o);continue}if(o=this.tokenizer.emStrong(e,s,i)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),r.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),r.push(o);continue}let a=e;if(this.options.extensions?.startInline){let p=1/0,h=e.slice(1),u;this.options.extensions.startInline.forEach(f=>{u=f.call({lexer:this},h),typeof u=="number"&&u>=0&&(p=Math.min(p,u))}),p<1/0&&p>=0&&(a=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(a)){e=e.substring(o.raw.length),o.raw.slice(-1)!=="_"&&(i=o.raw.slice(-1)),l=!0;let p=r.at(-1);p?.type==="text"?(p.raw+=o.raw,p.text+=o.text):r.push(o);continue}if(e){let p="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return r}},H=class{static{c(this,"P")}options;parser;constructor(n){this.options=n||z}space(n){return""}code({text:n,lang:e,escaped:r}){let s=(e||"").match(w.notSpaceStart)?.[0],t=n.replace(w.endingNewline,"")+` `;return s?'
'+(r?t:T(t,!0))+`
`:"
"+(r?t:T(t,!0))+`
`}blockquote({tokens:n}){return`
@@ -60,11 +60,11 @@ ${this.parser.parse(n)}
`}tablerow({text:n}){return` ${n} `}tablecell(n){let e=this.parser.parseInline(n.tokens),r=n.header?"th":"td";return(n.align?`<${r} align="${n.align}">`:`<${r}>`)+e+` -`}strong({tokens:n}){return`${this.parser.parseInline(n)}`}em({tokens:n}){return`${this.parser.parseInline(n)}`}codespan({text:n}){return`${T(n,!0)}`}br(n){return"
"}del({tokens:n}){return`${this.parser.parseInline(n)}`}link({href:n,title:e,tokens:r}){let s=this.parser.parseInline(r),t=_e(n);if(t===null)return s;n=t;let l='
",l}image({href:n,title:e,text:r,tokens:s}){s&&(r=this.parser.parseInline(s,this.parser.textRenderer));let t=_e(n);if(t===null)return T(r);n=t;let l=`${r}{let i=t[l].flat(1/0);r=r.concat(this.walkTokens(i,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...n){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(r=>{let s={...r};if(s.async=this.defaults.async||s.async||!1,r.extensions&&(r.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let l=e.renderers[t.name];l?e.renderers[t.name]=function(...i){let o=t.renderer.apply(this,i);return o===!1&&(o=l.apply(this,i)),o}:e.renderers[t.name]=t.renderer}if("tokenizer"in t){if(!t.level||t.level!=="block"&&t.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let l=e[t.level];l?l.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&(t.level==="block"?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:t.level==="inline"&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),s.extensions=e),r.renderer){let t=this.defaults.renderer||new H(this.defaults);for(let l in r.renderer){if(!(l in t))throw new Error(`renderer '${l}' does not exist`);if(["options","parser"].includes(l))continue;let i=l,o=r.renderer[i],a=t[i];t[i]=(...p)=>{let h=o.apply(t,p);return h===!1&&(h=a.apply(t,p)),h||""}}s.renderer=t}if(r.tokenizer){let t=this.defaults.tokenizer||new Z(this.defaults);for(let l in r.tokenizer){if(!(l in t))throw new Error(`tokenizer '${l}' does not exist`);if(["options","rules","lexer"].includes(l))continue;let i=l,o=r.tokenizer[i],a=t[i];t[i]=(...p)=>{let h=o.apply(t,p);return h===!1&&(h=a.apply(t,p)),h}}s.tokenizer=t}if(r.hooks){let t=this.defaults.hooks||new D;for(let l in r.hooks){if(!(l in t))throw new Error(`hook '${l}' does not exist`);if(["options","block"].includes(l))continue;let i=l,o=r.hooks[i],a=t[i];D.passThroughHooks.has(l)?t[i]=p=>{if(this.defaults.async&&D.passThroughHooksRespectAsync.has(l))return Promise.resolve(o.call(t,p)).then(u=>a.call(t,u));let h=o.call(t,p);return a.call(t,h)}:t[i]=(...p)=>{let h=o.apply(t,p);return h===!1&&(h=a.apply(t,p)),h}}s.hooks=t}if(r.walkTokens){let t=this.defaults.walkTokens,l=r.walkTokens;s.walkTokens=function(i){let o=[];return o.push(l.call(this,i)),t&&(o=o.concat(t.call(this,i))),o}}this.defaults={...this.defaults,...s}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,e){return $.lex(n,e??this.defaults)}parser(n,e){return R.parse(n,e??this.defaults)}parseMarkdown(n){return(e,r)=>{let s={...r},t={...this.defaults,...s},l=this.onError(!!t.silent,!!t.async);if(this.defaults.async===!0&&s.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));t.hooks&&(t.hooks.options=t,t.hooks.block=n);let i=t.hooks?t.hooks.provideLexer():n?$.lex:$.lexInline,o=t.hooks?t.hooks.provideParser():n?R.parse:R.parseInline;if(t.async)return Promise.resolve(t.hooks?t.hooks.preprocess(e):e).then(a=>i(a,t)).then(a=>t.hooks?t.hooks.processAllTokens(a):a).then(a=>t.walkTokens?Promise.all(this.walkTokens(a,t.walkTokens)).then(()=>a):a).then(a=>o(a,t)).then(a=>t.hooks?t.hooks.postprocess(a):a).catch(l);try{t.hooks&&(e=t.hooks.preprocess(e));let a=i(e,t);t.hooks&&(a=t.hooks.processAllTokens(a)),t.walkTokens&&this.walkTokens(a,t.walkTokens);let p=o(a,t);return t.hooks&&(p=t.hooks.postprocess(p)),p}catch(a){return l(a)}}}onError(n,e){return r=>{if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,n){let s="

An error occurred:

"+T(r.message+"",!0)+"
";return e?Promise.resolve(s):s}if(e)return Promise.reject(r);throw r}}},z=new Xt;function m(n,e){return z.parse(n,e)}c(m,"d");m.options=m.setOptions=function(n){return z.setOptions(n),m.defaults=z.defaults,Fe(m.defaults),m};m.getDefaults=ae;m.defaults=M;m.use=function(...n){return z.use(...n),m.defaults=z.defaults,Fe(m.defaults),m};m.walkTokens=function(n,e){return z.walkTokens(n,e)};m.parseInline=z.parseInline;m.Parser=R;m.parser=R.parse;m.Renderer=H;m.TextRenderer=me;m.Lexer=$;m.lexer=$.lex;m.Tokenizer=Z;m.Hooks=D;m.parse=m;var Yn=m.options,er=m.setOptions,tr=m.use,nr=m.walkTokens,rr=m.parseInline;var sr=R.parse,ir=$.lex;function Jt(n,{markdownAutoWrap:e}){let s=n.replace(//g,` +`}strong({tokens:n}){return`${this.parser.parseInline(n)}`}em({tokens:n}){return`${this.parser.parseInline(n)}`}codespan({text:n}){return`${T(n,!0)}`}br(n){return"
"}del({tokens:n}){return`${this.parser.parseInline(n)}`}link({href:n,title:e,tokens:r}){let s=this.parser.parseInline(r),t=De(n);if(t===null)return s;n=t;let l='
",l}image({href:n,title:e,text:r,tokens:s}){s&&(r=this.parser.parseInline(s,this.parser.textRenderer));let t=De(n);if(t===null)return T(r);n=t;let l=`${r}{let i=t[l].flat(1/0);r=r.concat(this.walkTokens(i,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...n){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(r=>{let s={...r};if(s.async=this.defaults.async||s.async||!1,r.extensions&&(r.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let l=e.renderers[t.name];l?e.renderers[t.name]=function(...i){let o=t.renderer.apply(this,i);return o===!1&&(o=l.apply(this,i)),o}:e.renderers[t.name]=t.renderer}if("tokenizer"in t){if(!t.level||t.level!=="block"&&t.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let l=e[t.level];l?l.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&(t.level==="block"?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:t.level==="inline"&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),s.extensions=e),r.renderer){let t=this.defaults.renderer||new H(this.defaults);for(let l in r.renderer){if(!(l in t))throw new Error(`renderer '${l}' does not exist`);if(["options","parser"].includes(l))continue;let i=l,o=r.renderer[i],a=t[i];t[i]=(...p)=>{let h=o.apply(t,p);return h===!1&&(h=a.apply(t,p)),h||""}}s.renderer=t}if(r.tokenizer){let t=this.defaults.tokenizer||new V(this.defaults);for(let l in r.tokenizer){if(!(l in t))throw new Error(`tokenizer '${l}' does not exist`);if(["options","rules","lexer"].includes(l))continue;let i=l,o=r.tokenizer[i],a=t[i];t[i]=(...p)=>{let h=o.apply(t,p);return h===!1&&(h=a.apply(t,p)),h}}s.tokenizer=t}if(r.hooks){let t=this.defaults.hooks||new _;for(let l in r.hooks){if(!(l in t))throw new Error(`hook '${l}' does not exist`);if(["options","block"].includes(l))continue;let i=l,o=r.hooks[i],a=t[i];_.passThroughHooks.has(l)?t[i]=p=>{if(this.defaults.async&&_.passThroughHooksRespectAsync.has(l))return Promise.resolve(o.call(t,p)).then(u=>a.call(t,u));let h=o.call(t,p);return a.call(t,h)}:t[i]=(...p)=>{let h=o.apply(t,p);return h===!1&&(h=a.apply(t,p)),h}}s.hooks=t}if(r.walkTokens){let t=this.defaults.walkTokens,l=r.walkTokens;s.walkTokens=function(i){let o=[];return o.push(l.call(this,i)),t&&(o=o.concat(t.call(this,i))),o}}this.defaults={...this.defaults,...s}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,e){return $.lex(n,e??this.defaults)}parser(n,e){return R.parse(n,e??this.defaults)}parseMarkdown(n){return(e,r)=>{let s={...r},t={...this.defaults,...s},l=this.onError(!!t.silent,!!t.async);if(this.defaults.async===!0&&s.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));t.hooks&&(t.hooks.options=t,t.hooks.block=n);let i=t.hooks?t.hooks.provideLexer():n?$.lex:$.lexInline,o=t.hooks?t.hooks.provideParser():n?R.parse:R.parseInline;if(t.async)return Promise.resolve(t.hooks?t.hooks.preprocess(e):e).then(a=>i(a,t)).then(a=>t.hooks?t.hooks.processAllTokens(a):a).then(a=>t.walkTokens?Promise.all(this.walkTokens(a,t.walkTokens)).then(()=>a):a).then(a=>o(a,t)).then(a=>t.hooks?t.hooks.postprocess(a):a).catch(l);try{t.hooks&&(e=t.hooks.preprocess(e));let a=i(e,t);t.hooks&&(a=t.hooks.processAllTokens(a)),t.walkTokens&&this.walkTokens(a,t.walkTokens);let p=o(a,t);return t.hooks&&(p=t.hooks.postprocess(p)),p}catch(a){return l(a)}}}onError(n,e){return r=>{if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,n){let s="

An error occurred:

"+T(r.message+"",!0)+"
";return e?Promise.resolve(s):s}if(e)return Promise.reject(r);throw r}}},E=new Jt;function m(n,e){return E.parse(n,e)}c(m,"d");m.options=m.setOptions=function(n){return E.setOptions(n),m.defaults=E.defaults,Fe(m.defaults),m};m.getDefaults=ce;m.defaults=z;m.use=function(...n){return E.use(...n),m.defaults=E.defaults,Fe(m.defaults),m};m.walkTokens=function(n,e){return E.walkTokens(n,e)};m.parseInline=E.parseInline;m.Parser=R;m.parser=R.parse;m.Renderer=H;m.TextRenderer=ke;m.Lexer=$;m.lexer=$.lex;m.Tokenizer=V;m.Hooks=_;m.parse=m;var er=m.options,tr=m.setOptions,nr=m.use,rr=m.walkTokens,sr=m.parseInline;var ir=R.parse,or=$.lex;function Yt(n,{markdownAutoWrap:e}){let s=n.replace(//g,` `).replace(/\n{2,}/g,` -`);return Ce(s)}c(Jt,"preprocessMarkdown");function Ke(n){return n.split(/\\n|\n|/gi).map(e=>e.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(r=>({content:r,type:"normal"}))??[])}c(Ke,"nonMarkdownToLines");function Xe(n,e={}){let r=Jt(n,e),s=m.lexer(r),t=[[]],l=0;function i(o,a="normal"){o.type==="text"?o.text.split(` -`).forEach((h,u)=>{u!==0&&(l++,t.push([])),h.split(" ").forEach(f=>{f=f.replace(/'/g,"'"),f&&t[l].push({content:f,type:a})})}):o.type==="strong"||o.type==="em"?o.tokens.forEach(p=>{i(p,o.type)}):o.type==="html"&&t[l].push({content:o.text,type:"normal"})}return c(i,"processNode"),s.forEach(o=>{o.type==="paragraph"?o.tokens?.forEach(a=>{i(a)}):o.type==="html"?t[l].push({content:o.text,type:"normal"}):t[l].push({content:o.raw,type:"normal"})}),t}c(Xe,"markdownToLines");function Je(n){return n?`

${n.replace(/\\n|\n/g,"
")}

`:""}c(Je,"nonMarkdownToHTML");function Ye(n,{markdownAutoWrap:e}={}){let r=m.lexer(n);function s(t){return t.type==="text"?e===!1?t.text.replace(/\n */g,"
").replace(/ /g," "):t.text.replace(/\n */g,"
"):t.type==="strong"?`${t.tokens?.map(s).join("")}`:t.type==="em"?`${t.tokens?.map(s).join("")}`:t.type==="paragraph"?`

${t.tokens?.map(s).join("")}

`:t.type==="space"?"":t.type==="html"?`${t.text}`:t.type==="escape"?t.text:(I.warn(`Unsupported markdown: ${t.type}`),t.raw)}return c(s,"output"),r.map(s).join("")}c(Ye,"markdownToHTML");function Yt(n){return Intl.Segmenter?[...new Intl.Segmenter().segment(n)].map(e=>e.segment):[...n]}c(Yt,"splitTextToChars");function en(n,e){let r=Yt(e.content);return et(n,[],r,e.type)}c(en,"splitWordToFitWidth");function et(n,e,r,s){if(r.length===0)return[{content:e.join(""),type:s},{content:"",type:s}];let[t,...l]=r,i=[...e,t];return n([{content:i.join(""),type:s}])?et(n,i,l,s):(e.length===0&&t&&(e.push(t),r.shift()),[{content:e.join(""),type:s},{content:r.join(""),type:s}])}c(et,"splitWordToFitWidthRecursion");function tt(n,e){if(n.some(({content:r})=>r.includes(` -`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return ke(n,e)}c(tt,"splitLineToFitWidth");function ke(n,e,r=[],s=[]){if(n.length===0)return s.length>0&&r.push(s),r.length>0?r:[];let t="";n[0].content===" "&&(t=" ",n.shift());let l=n.shift()??{content:" ",type:"normal"},i=[...s];if(t!==""&&i.push({content:t,type:"normal"}),i.push(l),e(i))return ke(n,e,r,i);if(s.length>0)r.push(s),n.unshift(l);else if(l.content){let[o,a]=en(e,l);r.push([o]),a.content&&n.unshift(a)}return ke(n,e,r)}c(ke,"splitLineToFitWidthRecursion");function nt(n,e){e&&n.attr("style",e)}c(nt,"applyStyle");var rt=16384;async function tn(n,e,r,s,t=!1,l=q()){let i=n.append("foreignObject");i.attr("width",`${Math.min(10*r,rt)}px`),i.attr("height",`${Math.min(10*r,rt)}px`);let o=i.append("xhtml:div"),a=Q(e.label)?await we(e.label.replace(ye.lineBreakRegex,` -`),l):P(e.label,l),p=e.isNode?"nodeLabel":"edgeLabel",h=o.append("span");h.html(a),nt(h,e.labelStyle),h.attr("class",`${p} ${s}`),nt(o,e.labelStyle),o.style("display","table-cell"),o.style("white-space","nowrap"),o.style("line-height","1.5"),r!==Number.POSITIVE_INFINITY&&(o.style("max-width",r+"px"),o.style("text-align","center")),o.attr("xmlns","http://www.w3.org/1999/xhtml"),t&&o.attr("class","labelBkg");let u=o.node().getBoundingClientRect();return u.width===r&&(o.style("display","table"),o.style("white-space","break-spaces"),o.style("width",r+"px"),u=o.node().getBoundingClientRect()),i.node()}c(tn,"addHtmlSpan");function xe(n,e,r,s=!1){let t=n.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em");return s&&t.attr("text-anchor","middle"),t}c(xe,"createTspan");function nn(n,e,r){let s=n.append("text"),t=xe(s,1,e);be(t,r);let l=t.node().getComputedTextLength();return s.remove(),l}c(nn,"computeWidthOfText");function Mr(n,e,r){let s=n.append("text"),t=xe(s,1,e);be(t,[{content:r,type:"normal"}]);let l=t.node()?.getBoundingClientRect();return l&&s.remove(),l}c(Mr,"computeDimensionOfText");function rn(n,e,r,s=!1,t=!1){let i=e.append("g"),o=i.insert("rect").attr("class","background").attr("style","stroke: none"),a=i.append("text").attr("y","-10.1");t&&a.attr("text-anchor","middle");let p=0;for(let h of r){let u=c(g=>nn(i,1.1,g)<=n,"checkWidth"),f=u(h)?[h]:tt(h,u);for(let g of f){let d=xe(a,p,1.1,t);be(d,g),p++}}if(s){let h=a.node().getBBox(),u=2;return o.attr("x",h.x-u).attr("y",h.y-u).attr("width",h.width+2*u).attr("height",h.height+2*u),i.node()}else return a.node()}c(rn,"createFormattedText");function be(n,e){n.text(""),e.forEach((r,s)=>{let t=n.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");s===0?t.text(r.content):t.text(" "+r.content)})}c(be,"updateTextContentAndStyles");async function sn(n,e={}){let r=[];n.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(t,l,i)=>(r.push((async()=>{let o=`${l}:${i}`;return await Ae(o)?await ve(o,void 0,{class:"label-icon"}):``})()),t));let s=await Promise.all(r);return n.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>s.shift()??"")}c(sn,"replaceIconSubstring");var Er=c(async(n,e="",{style:r="",isTitle:s=!1,classes:t="",useHtmlLabels:l=!0,markdown:i=!0,isNode:o=!0,width:a=200,addSvgBackground:p=!1}={},h)=>{if(I.debug("XYZ createText",e,r,s,t,l,o,"addSvgBackground: ",p),l){let u=i?Ye(e,h):Je(e),f=await sn(Se(u),h),g=e.replace(/\\\\/g,"\\"),d={isNode:o,label:Q(e)?g:f,labelStyle:r.replace("fill:","color:")};return await tn(n,d,a,t,p,h)}else{let u=e.replace(//g,"
"),f=i?Xe(u.replace("
","
"),h):Ke(u),g=rn(a,n,f,e?p:!1,!o);if(o){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let d=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");E(g).attr("style",d)}else{let d=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");E(g).select("rect").attr("style",d.replace(/background:/g,"fill:"));let x=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");E(g).select("text").attr("style",x)}return s?E(g).selectAll("tspan.text-outer-tspan").classed("title-row",!0):E(g).selectAll("tspan.text-outer-tspan").classed("row",!0),g}},"createText");export{dt as a,Un as b,ve as c,Ce as d,Mr as e,Er as f}; +`);return Ce(s)}c(Yt,"preprocessMarkdown");function Ke(n){return n.split(/\\n|\n|/gi).map(e=>e.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(r=>({content:r,type:"normal"}))??[])}c(Ke,"nonMarkdownToLines");function Xe(n,e={}){let r=Yt(n,e),s=m.lexer(r),t=[[]],l=0;function i(o,a="normal"){o.type==="text"?o.text.split(` +`).forEach((h,u)=>{u!==0&&(l++,t.push([])),h.split(" ").forEach(f=>{f=f.replace(/'/g,"'"),f&&t[l].push({content:f,type:a})})}):o.type==="strong"||o.type==="em"?o.tokens.forEach(p=>{i(p,o.type)}):o.type==="html"&&t[l].push({content:o.text,type:"normal"})}return c(i,"processNode"),s.forEach(o=>{o.type==="paragraph"?o.tokens?.forEach(a=>{i(a)}):o.type==="html"?t[l].push({content:o.text,type:"normal"}):t[l].push({content:o.raw,type:"normal"})}),t}c(Xe,"markdownToLines");function Je(n){return n?`

${n.replace(/\\n|\n/g,"
")}

`:""}c(Je,"nonMarkdownToHTML");function Ye(n,{markdownAutoWrap:e}={}){let r=m.lexer(n);function s(t){return t.type==="text"?e===!1?t.text.replace(/\n */g,"
").replace(/ /g," "):t.text.replace(/\n */g,"
"):t.type==="strong"?`${t.tokens?.map(s).join("")}`:t.type==="em"?`${t.tokens?.map(s).join("")}`:t.type==="paragraph"?`

${t.tokens?.map(s).join("")}

`:t.type==="space"?"":t.type==="html"?`${t.text}`:t.type==="escape"?t.text:(I.warn(`Unsupported markdown: ${t.type}`),t.raw)}return c(s,"output"),r.map(s).join("")}c(Ye,"markdownToHTML");function en(n){return Intl.Segmenter?[...new Intl.Segmenter().segment(n)].map(e=>e.segment):[...n]}c(en,"splitTextToChars");function tn(n,e){let r=en(e.content);return et(n,[],r,e.type)}c(tn,"splitWordToFitWidth");function et(n,e,r,s){if(r.length===0)return[{content:e.join(""),type:s},{content:"",type:s}];let[t,...l]=r,i=[...e,t];return n([{content:i.join(""),type:s}])?et(n,i,l,s):(e.length===0&&t&&(e.push(t),r.shift()),[{content:e.join(""),type:s},{content:r.join(""),type:s}])}c(et,"splitWordToFitWidthRecursion");function tt(n,e){if(n.some(({content:r})=>r.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return xe(n,e)}c(tt,"splitLineToFitWidth");function xe(n,e,r=[],s=[]){if(n.length===0)return s.length>0&&r.push(s),r.length>0?r:[];let t="";n[0].content===" "&&(t=" ",n.shift());let l=n.shift()??{content:" ",type:"normal"},i=[...s];if(t!==""&&i.push({content:t,type:"normal"}),i.push(l),e(i))return xe(n,e,r,i);if(s.length>0)r.push(s),n.unshift(l);else if(l.content){let[o,a]=tn(e,l);r.push([o]),a.content&&n.unshift(a)}return xe(n,e,r)}c(xe,"splitLineToFitWidthRecursion");function nt(n,e){e&&n.attr("style",e)}c(nt,"applyStyle");var rt=16384;async function nn(n,e,r,s,t=!1,l=q()){let i=n.append("foreignObject");i.attr("width",`${Math.min(10*r,rt)}px`),i.attr("height",`${Math.min(10*r,rt)}px`);let o=i.append("xhtml:div"),a=Q(e.label)?await ye(e.label.replace(Se.lineBreakRegex,` +`),l):P(e.label,l),p=e.isNode?"nodeLabel":"edgeLabel",h=o.append("span");h.html(a),nt(h,e.labelStyle),h.attr("class",`${p} ${s}`),nt(o,e.labelStyle),o.style("display","table-cell"),o.style("white-space","nowrap"),o.style("line-height","1.5"),r!==Number.POSITIVE_INFINITY&&(o.style("max-width",r+"px"),o.style("text-align","center")),o.attr("xmlns","http://www.w3.org/1999/xhtml"),t&&o.attr("class","labelBkg");let u=o.node().getBoundingClientRect();return u.width===r&&(o.style("display","table"),o.style("white-space","break-spaces"),o.style("width",r+"px"),u=o.node().getBoundingClientRect()),i.node()}c(nn,"addHtmlSpan");function be(n,e,r,s=!1){let t=n.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em");return s&&t.attr("text-anchor","middle"),t}c(be,"createTspan");function rn(n,e,r){let s=n.append("text"),t=be(s,1,e);we(t,r);let l=t.node().getComputedTextLength();return s.remove(),l}c(rn,"computeWidthOfText");function Mr(n,e,r){let s=n.append("text"),t=be(s,1,e);we(t,[{content:r,type:"normal"}]);let l=t.node()?.getBoundingClientRect();return l&&s.remove(),l}c(Mr,"computeDimensionOfText");function sn(n,e,r,s=!1,t=!1){let i=e.append("g"),o=i.insert("rect").attr("class","background").attr("style","stroke: none"),a=i.append("text").attr("y","-10.1");t&&a.attr("text-anchor","middle");let p=0;for(let h of r){let u=c(g=>rn(i,1.1,g)<=n,"checkWidth"),f=u(h)?[h]:tt(h,u);for(let g of f){let d=be(a,p,1.1,t);we(d,g),p++}}if(s){let h=a.node().getBBox(),u=2;return o.attr("x",h.x-u).attr("y",h.y-u).attr("width",h.width+2*u).attr("height",h.height+2*u),i.node()}else return a.node()}c(sn,"createFormattedText");function st(n){let e=/&(amp|lt|gt);/g;return n.replace(e,(r,s)=>{switch(s){case"amp":return"&";case"lt":return"<";case"gt":return">";default:return r}})}c(st,"decodeHTMLEntities");function we(n,e){n.text(""),e.forEach((r,s)=>{let t=n.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");s===0?t.text(st(r.content)):t.text(" "+st(r.content))})}c(we,"updateTextContentAndStyles");async function on(n,e={}){let r=[];n.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(t,l,i)=>(r.push((async()=>{let o=`${l}:${i}`;return await Ae(o)?await ve(o,void 0,{class:"label-icon"}):``})()),t));let s=await Promise.all(r);return n.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>s.shift()??"")}c(on,"replaceIconSubstring");var Lr=c(async(n,e="",{style:r="",isTitle:s=!1,classes:t="",useHtmlLabels:l=!0,markdown:i=!0,isNode:o=!0,width:a=200,addSvgBackground:p=!1}={},h)=>{if(I.debug("XYZ createText",e,r,s,t,l,o,"addSvgBackground: ",p),l){let u=i?Ye(e,h):Je(e),f=await on(K(u),h),g=e.replace(/\\\\/g,"\\"),d={isNode:o,label:Q(e)?g:f,labelStyle:r.replace("fill:","color:")};return await nn(n,d,a,t,p,h)}else{let u=K(e.replace(//g,"
")),f=i?Xe(u.replace("
","
"),h):Ke(u),g=sn(a,n,f,e?p:!1,!o);if(o){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let d=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");M(g).attr("style",d)}else{let d=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");M(g).select("rect").attr("style",d.replace(/background:/g,"fill:"));let x=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");M(g).select("text").attr("style",x)}return s?M(g).selectAll("tspan.text-outer-tspan").classed("title-row",!0):M(g).selectAll("tspan.text-outer-tspan").classed("row",!0),g}},"createText");export{mt as a,Qn as b,ve as c,Ce as d,Mr as e,Lr as f}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-YLHEXJF3.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-INKRHTLW.mjs.map similarity index 90% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-YLHEXJF3.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-INKRHTLW.mjs.map index 556c728..35aeffb 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-YLHEXJF3.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-INKRHTLW.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/defaults.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/customisations/defaults.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/name.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/transformations.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon/merge.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon-set/tree.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/icon-set/get-icon.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/size.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/defs.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/build.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/id.js", "../../../../../node_modules/.pnpm/@iconify+utils@3.0.2/node_modules/@iconify/utils/lib/svg/html.js", "../../../src/rendering-util/icons.ts", "../../../../../node_modules/.pnpm/ts-dedent@2.2.0/node_modules/ts-dedent/src/index.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/defaults.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/rules.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/helpers.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/Tokenizer.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/Lexer.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/Renderer.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/TextRenderer.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/Parser.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/Hooks.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/Instance.ts", "../../../../../node_modules/.pnpm/marked@16.3.0/node_modules/marked/src/marked.ts", "../../../src/rendering-util/handle-markdown-text.ts", "../../../src/rendering-util/splitText.ts", "../../../src/rendering-util/createText.ts"], - "sourcesContent": ["/**\n* Default values for dimensions\n*/\nconst defaultIconDimensions = Object.freeze({\n\tleft: 0,\n\ttop: 0,\n\twidth: 16,\n\theight: 16\n});\n/**\n* Default values for transformations\n*/\nconst defaultIconTransformations = Object.freeze({\n\trotate: 0,\n\tvFlip: false,\n\thFlip: false\n});\n/**\n* Default values for all optional IconifyIcon properties\n*/\nconst defaultIconProps = Object.freeze({\n\t...defaultIconDimensions,\n\t...defaultIconTransformations\n});\n/**\n* Default values for all properties used in ExtendedIconifyIcon\n*/\nconst defaultExtendedIconProps = Object.freeze({\n\t...defaultIconProps,\n\tbody: \"\",\n\thidden: false\n});\n\nexport { defaultExtendedIconProps, defaultIconDimensions, defaultIconProps, defaultIconTransformations };", "import { defaultIconTransformations } from \"../icon/defaults.js\";\n\n/**\n* Default icon customisations values\n*/\nconst defaultIconSizeCustomisations = Object.freeze({\n\twidth: null,\n\theight: null\n});\nconst defaultIconCustomisations = Object.freeze({\n\t...defaultIconSizeCustomisations,\n\t...defaultIconTransformations\n});\n\nexport { defaultIconCustomisations, defaultIconSizeCustomisations };", "/**\n* Expression to test part of icon name.\n*\n* Used when loading icons from Iconify API due to project naming convension.\n* Ignored when using custom icon sets - convension does not apply.\n*/\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n/**\n* Convert string icon name to IconifyIconName object.\n*/\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n\tconst colonSeparated = value.split(\":\");\n\tif (value.slice(0, 1) === \"@\") {\n\t\tif (colonSeparated.length < 2 || colonSeparated.length > 3) return null;\n\t\tprovider = colonSeparated.shift().slice(1);\n\t}\n\tif (colonSeparated.length > 3 || !colonSeparated.length) return null;\n\tif (colonSeparated.length > 1) {\n\t\tconst name$1 = colonSeparated.pop();\n\t\tconst prefix = colonSeparated.pop();\n\t\tconst result = {\n\t\t\tprovider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n\t\t\tprefix,\n\t\t\tname: name$1\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tconst name = colonSeparated[0];\n\tconst dashSeparated = name.split(\"-\");\n\tif (dashSeparated.length > 1) {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: dashSeparated.shift(),\n\t\t\tname: dashSeparated.join(\"-\")\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tif (allowSimpleName && provider === \"\") {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: \"\",\n\t\t\tname\n\t\t};\n\t\treturn validate && !validateIconName(result, allowSimpleName) ? null : result;\n\t}\n\treturn null;\n};\n/**\n* Check if icon is valid.\n*\n* This function is not part of stringToIcon because validation is not needed for most code.\n*/\nconst validateIconName = (icon, allowSimpleName) => {\n\tif (!icon) return false;\n\treturn !!((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\nexport { matchIconName, stringToIcon, validateIconName };", "/**\n* Merge transformations\n*/\nfunction mergeIconTransformations(obj1, obj2) {\n\tconst result = {};\n\tif (!obj1.hFlip !== !obj2.hFlip) result.hFlip = true;\n\tif (!obj1.vFlip !== !obj2.vFlip) result.vFlip = true;\n\tconst rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n\tif (rotate) result.rotate = rotate;\n\treturn result;\n}\n\nexport { mergeIconTransformations };", "import { defaultExtendedIconProps, defaultIconTransformations } from \"./defaults.js\";\nimport { mergeIconTransformations } from \"./transformations.js\";\n\n/**\n* Merge icon and alias\n*\n* Can also be used to merge default values and icon\n*/\nfunction mergeIconData(parent, child) {\n\tconst result = mergeIconTransformations(parent, child);\n\tfor (const key in defaultExtendedIconProps) if (key in defaultIconTransformations) {\n\t\tif (key in parent && !(key in result)) result[key] = defaultIconTransformations[key];\n\t} else if (key in child) result[key] = child[key];\n\telse if (key in parent) result[key] = parent[key];\n\treturn result;\n}\n\nexport { mergeIconData };", "/**\n* Resolve icon set icons\n*\n* Returns parent icon for each icon\n*/\nfunction getIconsTree(data, names) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tconst resolved = Object.create(null);\n\tfunction resolve(name) {\n\t\tif (icons[name]) return resolved[name] = [];\n\t\tif (!(name in resolved)) {\n\t\t\tresolved[name] = null;\n\t\t\tconst parent = aliases[name] && aliases[name].parent;\n\t\t\tconst value = parent && resolve(parent);\n\t\t\tif (value) resolved[name] = [parent].concat(value);\n\t\t}\n\t\treturn resolved[name];\n\t}\n\t(names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n\treturn resolved;\n}\n\nexport { getIconsTree };", "import { mergeIconData } from \"../icon/merge.js\";\nimport { getIconsTree } from \"./tree.js\";\n\n/**\n* Get icon data, using prepared aliases tree\n*/\nfunction internalGetIconData(data, name, tree) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tlet currentProps = {};\n\tfunction parse(name$1) {\n\t\tcurrentProps = mergeIconData(icons[name$1] || aliases[name$1], currentProps);\n\t}\n\tparse(name);\n\ttree.forEach(parse);\n\treturn mergeIconData(data, currentProps);\n}\n/**\n* Get data for icon\n*/\nfunction getIconData(data, name) {\n\tif (data.icons[name]) return internalGetIconData(data, name, []);\n\tconst tree = getIconsTree(data, [name])[name];\n\treturn tree ? internalGetIconData(data, name, tree) : null;\n}\n\nexport { getIconData, internalGetIconData };", "/**\n* Regular expressions for calculating dimensions\n*/\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n\tif (ratio === 1) return size;\n\tprecision = precision || 100;\n\tif (typeof size === \"number\") return Math.ceil(size * ratio * precision) / precision;\n\tif (typeof size !== \"string\") return size;\n\tconst oldParts = size.split(unitsSplit);\n\tif (oldParts === null || !oldParts.length) return size;\n\tconst newParts = [];\n\tlet code = oldParts.shift();\n\tlet isNumber = unitsTest.test(code);\n\twhile (true) {\n\t\tif (isNumber) {\n\t\t\tconst num = parseFloat(code);\n\t\t\tif (isNaN(num)) newParts.push(code);\n\t\t\telse newParts.push(Math.ceil(num * ratio * precision) / precision);\n\t\t} else newParts.push(code);\n\t\tcode = oldParts.shift();\n\t\tif (code === void 0) return newParts.join(\"\");\n\t\tisNumber = !isNumber;\n\t}\n}\n\nexport { calculateSize };", "function splitSVGDefs(content, tag = \"defs\") {\n\tlet defs = \"\";\n\tconst index = content.indexOf(\"<\" + tag);\n\twhile (index >= 0) {\n\t\tconst start = content.indexOf(\">\", index);\n\t\tconst end = content.indexOf(\"\", end);\n\t\tif (endEnd === -1) break;\n\t\tdefs += content.slice(start + 1, end).trim();\n\t\tcontent = content.slice(0, index).trim() + content.slice(endEnd + 1);\n\t}\n\treturn {\n\t\tdefs,\n\t\tcontent\n\t};\n}\n/**\n* Merge defs and content\n*/\nfunction mergeDefsAndContent(defs, content) {\n\treturn defs ? \"\" + defs + \"\" + content : content;\n}\n/**\n* Wrap SVG content, without wrapping definitions\n*/\nfunction wrapSVGContent(body, start, end) {\n\tconst split = splitSVGDefs(body);\n\treturn mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\nexport { mergeDefsAndContent, splitSVGDefs, wrapSVGContent };", "import { defaultIconProps } from \"../icon/defaults.js\";\nimport { defaultIconCustomisations } from \"../customisations/defaults.js\";\nimport { calculateSize } from \"./size.js\";\nimport { wrapSVGContent } from \"./defs.js\";\n\n/**\n* Check if value should be unset. Allows multiple keywords\n*/\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\n/**\n* Get SVG attributes and content from icon + customisations\n*\n* Does not generate style to make it compatible with frameworks that use objects for style, such as React.\n* Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon.\n*\n* Customisations should be normalised by platform specific parser.\n* Result should be converted to by platform specific parser.\n* Use replaceIDs to generate unique IDs for body.\n*/\nfunction iconToSVG(icon, customisations) {\n\tconst fullIcon = {\n\t\t...defaultIconProps,\n\t\t...icon\n\t};\n\tconst fullCustomisations = {\n\t\t...defaultIconCustomisations,\n\t\t...customisations\n\t};\n\tconst box = {\n\t\tleft: fullIcon.left,\n\t\ttop: fullIcon.top,\n\t\twidth: fullIcon.width,\n\t\theight: fullIcon.height\n\t};\n\tlet body = fullIcon.body;\n\t[fullIcon, fullCustomisations].forEach((props) => {\n\t\tconst transformations = [];\n\t\tconst hFlip = props.hFlip;\n\t\tconst vFlip = props.vFlip;\n\t\tlet rotation = props.rotate;\n\t\tif (hFlip) if (vFlip) rotation += 2;\n\t\telse {\n\t\t\ttransformations.push(\"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(-1 1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\telse if (vFlip) {\n\t\t\ttransformations.push(\"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(1 -1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\tlet tempValue;\n\t\tif (rotation < 0) rotation -= Math.floor(rotation / 4) * 4;\n\t\trotation = rotation % 4;\n\t\tswitch (rotation) {\n\t\t\tcase 1:\n\t\t\t\ttempValue = box.height / 2 + box.top;\n\t\t\t\ttransformations.unshift(\"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\ttransformations.unshift(\"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\ttempValue = box.width / 2 + box.left;\n\t\t\t\ttransformations.unshift(\"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t}\n\t\tif (rotation % 2 === 1) {\n\t\t\tif (box.left !== box.top) {\n\t\t\t\ttempValue = box.left;\n\t\t\t\tbox.left = box.top;\n\t\t\t\tbox.top = tempValue;\n\t\t\t}\n\t\t\tif (box.width !== box.height) {\n\t\t\t\ttempValue = box.width;\n\t\t\t\tbox.width = box.height;\n\t\t\t\tbox.height = tempValue;\n\t\t\t}\n\t\t}\n\t\tif (transformations.length) body = wrapSVGContent(body, \"\", \"\");\n\t});\n\tconst customisationsWidth = fullCustomisations.width;\n\tconst customisationsHeight = fullCustomisations.height;\n\tconst boxWidth = box.width;\n\tconst boxHeight = box.height;\n\tlet width;\n\tlet height;\n\tif (customisationsWidth === null) {\n\t\theight = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t\twidth = calculateSize(height, boxWidth / boxHeight);\n\t} else {\n\t\twidth = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n\t\theight = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t}\n\tconst attributes = {};\n\tconst setAttr = (prop, value) => {\n\t\tif (!isUnsetKeyword(value)) attributes[prop] = value.toString();\n\t};\n\tsetAttr(\"width\", width);\n\tsetAttr(\"height\", height);\n\tconst viewBox = [\n\t\tbox.left,\n\t\tbox.top,\n\t\tboxWidth,\n\t\tboxHeight\n\t];\n\tattributes.viewBox = viewBox.join(\" \");\n\treturn {\n\t\tattributes,\n\t\tviewBox,\n\t\tbody\n\t};\n}\n\nexport { iconToSVG, isUnsetKeyword };", "/**\n* IDs usage:\n*\n* id=\"{id}\"\n* xlink:href=\"#{id}\"\n* url(#{id})\n*\n* From SVG animations:\n*\n* begin=\"0;{id}.end\"\n* begin=\"{id}.end\"\n* begin=\"{id}.click\"\n*/\n/**\n* Regular expression for finding ids\n*/\nconst regex = /\\sid=\"(\\S+)\"/g;\n/**\n* New random-ish prefix for ids\n*\n* Do not use dash, it cannot be used in SVG 2 animations\n*/\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\n/**\n* Counter for ids, increasing with every replacement\n*/\nlet counter = 0;\n/**\n* Replace IDs in SVG output with unique IDs\n*/\nfunction replaceIDs(body, prefix = randomPrefix) {\n\tconst ids = [];\n\tlet match;\n\twhile (match = regex.exec(body)) ids.push(match[1]);\n\tif (!ids.length) return body;\n\tconst suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n\tids.forEach((id) => {\n\t\tconst newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n\t\tconst escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\t\tbody = body.replace(new RegExp(\"([#;\\\"])(\" + escapedID + \")([\\\")]|\\\\.[a-z])\", \"g\"), \"$1\" + newID + suffix + \"$3\");\n\t});\n\tbody = body.replace(new RegExp(suffix, \"g\"), \"\");\n\treturn body;\n}\n\nexport { replaceIDs };", "/**\n* Generate \n*/\nfunction iconToHTML(body, attributes) {\n\tlet renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : \" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\";\n\tfor (const attr in attributes) renderAttribsHTML += \" \" + attr + \"=\\\"\" + attributes[attr] + \"\\\"\";\n\treturn \"\" + body + \"\";\n}\n\nexport { iconToHTML };", "import type { ExtendedIconifyIcon, IconifyIcon, IconifyJSON } from '@iconify/types';\nimport type { IconifyIconCustomisations } from '@iconify/utils';\nimport { getIconData, iconToHTML, iconToSVG, replaceIDs, stringToIcon } from '@iconify/utils';\nimport { getConfig } from '../config.js';\nimport { sanitizeText } from '../diagrams/common/common.js';\nimport { log } from '../logger.js';\n\nexport interface AsyncIconLoader {\n name: string;\n loader: () => Promise;\n}\n\nexport interface SyncIconLoader {\n name: string;\n icons: IconifyJSON;\n}\n\nexport type IconLoader = AsyncIconLoader | SyncIconLoader;\n\nexport const unknownIcon: IconifyIcon = {\n body: '?',\n height: 80,\n width: 80,\n};\n\nconst iconsStore = new Map();\nconst loaderStore = new Map();\n\nexport const registerIconPacks = (iconLoaders: IconLoader[]) => {\n for (const iconLoader of iconLoaders) {\n if (!iconLoader.name) {\n throw new Error(\n 'Invalid icon loader. Must have a \"name\" property with non-empty string value.'\n );\n }\n log.debug('Registering icon pack:', iconLoader.name);\n if ('loader' in iconLoader) {\n loaderStore.set(iconLoader.name, iconLoader.loader);\n } else if ('icons' in iconLoader) {\n iconsStore.set(iconLoader.name, iconLoader.icons);\n } else {\n log.error('Invalid icon loader:', iconLoader);\n throw new Error('Invalid icon loader. Must have either \"icons\" or \"loader\" property.');\n }\n }\n};\n\nconst getRegisteredIconData = async (iconName: string, fallbackPrefix?: string) => {\n const data = stringToIcon(iconName, true, fallbackPrefix !== undefined);\n if (!data) {\n throw new Error(`Invalid icon name: ${iconName}`);\n }\n const prefix = data.prefix || fallbackPrefix;\n if (!prefix) {\n throw new Error(`Icon name must contain a prefix: ${iconName}`);\n }\n let icons = iconsStore.get(prefix);\n if (!icons) {\n const loader = loaderStore.get(prefix);\n if (!loader) {\n throw new Error(`Icon set not found: ${data.prefix}`);\n }\n try {\n const loaded = await loader();\n icons = { ...loaded, prefix };\n iconsStore.set(prefix, icons);\n } catch (e) {\n log.error(e);\n throw new Error(`Failed to load icon set: ${data.prefix}`);\n }\n }\n const iconData = getIconData(icons, data.name);\n if (!iconData) {\n throw new Error(`Icon not found: ${iconName}`);\n }\n return iconData;\n};\n\nexport const isIconAvailable = async (iconName: string) => {\n try {\n await getRegisteredIconData(iconName);\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getIconSVG = async (\n iconName: string,\n customisations?: IconifyIconCustomisations & { fallbackPrefix?: string },\n extraAttributes?: Record\n) => {\n let iconData: ExtendedIconifyIcon;\n try {\n iconData = await getRegisteredIconData(iconName, customisations?.fallbackPrefix);\n } catch (e) {\n log.error(e);\n iconData = unknownIcon;\n }\n const renderData = iconToSVG(iconData, customisations);\n const svg = iconToHTML(replaceIDs(renderData.body), {\n ...renderData.attributes,\n ...extraAttributes,\n });\n return sanitizeText(svg, getConfig());\n};\n", "export function dedent(\n templ: TemplateStringsArray | string,\n ...values: unknown[]\n): string {\n let strings = Array.from(typeof templ === 'string' ? [templ] : templ);\n\n // 1. Remove trailing whitespace.\n strings[strings.length - 1] = strings[strings.length - 1].replace(\n /\\r?\\n([\\t ]*)$/,\n '',\n );\n\n // 2. Find all line breaks to determine the highest common indentation level.\n const indentLengths = strings.reduce((arr, str) => {\n const matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n if (matches) {\n return arr.concat(\n matches.map((match) => match.match(/[\\t ]/g)?.length ?? 0),\n );\n }\n return arr;\n }, []);\n\n // 3. Remove the common indentation from all strings.\n if (indentLengths.length) {\n const pattern = new RegExp(`\\n[\\t ]{${Math.min(...indentLengths)}}`, 'g');\n\n strings = strings.map((str) => str.replace(pattern, '\\n'));\n }\n\n // 4. Remove leading whitespace.\n strings[0] = strings[0].replace(/^\\r?\\n/, '');\n\n // 5. Perform interpolation.\n let string = strings[0];\n\n values.forEach((value, i) => {\n // 5.1 Read current indentation level\n const endentations = string.match(/(?:^|\\n)( *)$/)\n const endentation = endentations ? endentations[1] : ''\n let indentedValue = value\n // 5.2 Add indentation to values with multiline strings\n if (typeof value === 'string' && value.includes('\\n')) {\n indentedValue = String(value)\n .split('\\n')\n .map((str, i) => {\n return i === 0 ? str : `${endentation}${str}`\n })\n .join('\\n');\n }\n\n string += indentedValue + strings[i + 1];\n });\n\n return string;\n}\n\nexport default dedent;\n", "import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport let _defaults: MarkedOptions = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n", "const noopTest = { exec: () => null } as unknown as RegExp;\n\nfunction edit(regex: string | RegExp, opt = '') {\n let source = typeof regex === 'string' ? regex : regex.source;\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(other.caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\n\nexport const other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceTabs: /^\\t+/,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] /,\n listReplaceTask: /^\\[[ xX]\\] +/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),\n};\n\n/**\n * Block-Level Grammar\n */\n\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/\\|table/g, '') // table not in commonmark\n .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\n\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\n\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit(\n '^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|\\\\n*|$)' // (4)\n+ '|\\\\n*|$)' // (5)\n+ '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n+ '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n+ ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n\ntype BlockKeys = keyof typeof blockNormal;\n\n/**\n * GFM Block Grammar\n */\n\nconst gfmTable = edit(\n '^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockGfm: Record = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nconst blockPedantic: Record = {\n ...blockNormal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n\n/**\n * Inline-Level Grammar\n */\n\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^\\[\\]]*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<(?! )[^<>]*?>/g;\n\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\n\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\nconst emStrongRDelimAstCore =\n '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\n\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit(\n '^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n+ '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\n\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit(\n '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst _inlineLabel = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`[^`]*`|[^\\[\\]\\\\`])*?/;\n\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\n\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n\ntype InlineKeys = keyof typeof inlineNormal;\n\n/**\n * Pedantic Inline Grammar\n */\n\nconst inlinePedantic: Record = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n\n/**\n * GFM Inline Grammar\n */\n\nconst inlineGfm: Record = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex(),\n};\n\n/**\n * exports\n */\n\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic,\n};\n\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic,\n};\n\nexport interface Rules {\n other: typeof other\n block: Record\n inline: Record\n}\n", "import { other } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeReplacements: { [index: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (other.escapeTest.test(html)) {\n return html.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html)) {\n return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(other.unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nexport function cleanUrl(href: string) {\n try {\n href = encodeURI(href).replace(other.percentDecode, '%');\n } catch {\n return null;\n }\n return href;\n}\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(other.splitPipe);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n\n return -1;\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n findClosingBracket,\n} from './helpers.ts';\nimport type { Rules } from './rules.ts';\nimport type { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens, Token } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer, rules: Rules): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n\n lexer.state.inLink = true;\n const token: Tokens.Link | Tokens.Image = {\n type: cap[0].charAt(0) === '!' ? 'image' : 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n}\n\nfunction indentCodeCompensation(raw: string, text: string, rules: Rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules!: Rules; // set by the lexer\n lexer!: _Lexer; // set by the lexer\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens: Token[] = [];\n\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(this.rules.other.blockquoteSetextReplace, '\\n $1')\n .replace(this.rules.other.blockquoteSetextReplace2, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n\n const lastToken = tokens.at(-1);\n\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n } else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken as Tokens.Blockquote;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken as Tokens.List;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1)!.raw.length).split('\\n');\n continue;\n }\n }\n\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n let line = cap[2].split('\\n', 1)[0].replace(this.rules.other.listReplaceTabs, (t: string) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = cap[2].search(this.rules.other.nonSpaceChar); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, ' ');\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.replace(this.rules.other.tabCharGlobal, ' ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n let istask: RegExpExecArray | null = null;\n let ischecked: boolean | undefined;\n // Check for task list items\n if (this.options.gfm) {\n istask = this.rules.other.listIsTask.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(this.rules.other.listReplaceTask, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n const lastItem = list.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n // not a list since there were no items\n return;\n }\n list.raw = list.raw.trimEnd();\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push('right');\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push('center');\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push('left');\n } else {\n item.align.push(null);\n }\n }\n\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n\n return item;\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: cap[1],\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex === -2) {\n // more open parens than closed\n return;\n }\n\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = this.rules.other.pedanticHrefTitle.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer, this.rules);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer, this.rules);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = [...rDelim].length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n\n autolink(src: string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[1];\n href = 'mailto:' + text;\n } else {\n text = cap[1];\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n url(src: string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[0];\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n inlineText(src: string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n escaped,\n };\n }\n }\n}\n", "import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { other, block, inline } from './rules.ts';\nimport type { Token, TokensList, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: { src: string, tokens: Token[] }[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n this.tokens = [] as unknown as TokensList;\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true,\n };\n\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal,\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline,\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src.replace(other.carriageReturn, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[];\n blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList;\n blockTokens(src: string, tokens: Token[] = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, ' ').replace(other.spaceLine, '');\n }\n\n while (src) {\n let token: Tokens.Generic | undefined;\n\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== undefined) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n lastToken.raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n tokens.push(token);\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match: RegExpExecArray | null = null;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index)\n + '[' + 'a'.repeat(match[0].length - 2) + ']'\n + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out blocks from extensions\n maskedSrc = this.options.hooks?.emStrongMask?.call({ lexer: this }, maskedSrc) ?? maskedSrc;\n\n let keepPrevChar = false;\n let prevChar = '';\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n let token: Tokens.Generic | undefined;\n\n // extensions\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === 'text' && lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape,\n} from './helpers.ts';\nimport { other } from './rules.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Tokens } from './Tokens.ts';\nimport type { _Parser } from './Parser.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n parser!: _Parser; // set by the parser\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(token: Tokens.Space): RendererOutput {\n return '' as RendererOutput;\n }\n\n code({ text, lang, escaped }: Tokens.Code): RendererOutput {\n const langString = (lang || '').match(other.notSpaceStart)?.[0];\n\n const code = text.replace(other.endingNewline, '') + '\\n';\n\n if (!langString) {\n return '
'\n        + (escaped ? code : escape(code, true))\n        + '
\\n' as RendererOutput;\n }\n\n return '
'\n      + (escaped ? code : escape(code, true))\n      + '
\\n' as RendererOutput;\n }\n\n blockquote({ tokens }: Tokens.Blockquote): RendererOutput {\n const body = this.parser.parse(tokens);\n return `
\\n${body}
\\n` as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n def(token: Tokens.Def): RendererOutput {\n return '' as RendererOutput;\n }\n\n heading({ tokens, depth }: Tokens.Heading): RendererOutput {\n return `${this.parser.parseInline(tokens)}\\n` as RendererOutput;\n }\n\n hr(token: Tokens.Hr): RendererOutput {\n return '
\\n' as RendererOutput;\n }\n\n list(token: Tokens.List): RendererOutput {\n const ordered = token.ordered;\n const start = token.start;\n\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n' as RendererOutput;\n }\n\n listitem(item: Tokens.ListItem): RendererOutput {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens[0]?.type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + escape(item.tokens[0].tokens[0].text);\n item.tokens[0].tokens[0].escaped = true;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n escaped: true,\n });\n }\n } else {\n itemBody += checkbox + ' ';\n }\n }\n\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n\n return `
  • ${itemBody}
  • \\n` as RendererOutput;\n }\n\n checkbox({ checked }: Tokens.Checkbox): RendererOutput {\n return '' as RendererOutput;\n }\n\n paragraph({ tokens }: Tokens.Paragraph): RendererOutput {\n return `

    ${this.parser.parseInline(tokens)}

    \\n` as RendererOutput;\n }\n\n table(token: Tokens.Table): RendererOutput {\n let header = '';\n\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell as ParserOutput });\n\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n\n body += this.tablerow({ text: cell as ParserOutput });\n }\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n' as RendererOutput;\n }\n\n tablerow({ text }: Tokens.TableRow): RendererOutput {\n return `\\n${text}\\n` as RendererOutput;\n }\n\n tablecell(token: Tokens.TableCell): RendererOutput {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n` as RendererOutput;\n }\n\n /**\n * span level renderer\n */\n strong({ tokens }: Tokens.Strong): RendererOutput {\n return `${this.parser.parseInline(tokens)}` as RendererOutput;\n }\n\n em({ tokens }: Tokens.Em): RendererOutput {\n return `${this.parser.parseInline(tokens)}` as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return `${escape(text, true)}` as RendererOutput;\n }\n\n br(token: Tokens.Br): RendererOutput {\n return '
    ' as RendererOutput;\n }\n\n del({ tokens }: Tokens.Del): RendererOutput {\n return `${this.parser.parseInline(tokens)}` as RendererOutput;\n }\n\n link({ href, title, tokens }: Tokens.Link): RendererOutput {\n const text = this.parser.parseInline(tokens) as string;\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text as RendererOutput;\n }\n href = cleanHref;\n let out = '
    ';\n return out as RendererOutput;\n }\n\n image({ href, title, text, tokens }: Tokens.Image): RendererOutput {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer) as string;\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escape(text) as RendererOutput;\n }\n href = cleanHref;\n\n let out = `\"${text}\"`;\n {\n // no need for block level renderers\n strong({ text }: Tokens.Strong): RendererOutput {\n return text as RendererOutput;\n }\n\n em({ text }: Tokens.Em): RendererOutput {\n return text as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return text as RendererOutput;\n }\n\n del({ text }: Tokens.Del): RendererOutput {\n return text as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n link({ text }: Tokens.Link): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n image({ text }: Tokens.Image): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n br(): RendererOutput {\n return '' as RendererOutput;\n }\n}\n", "import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport type { MarkedToken, Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): ParserOutput {\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken as Tokens.Generic;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'def', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n continue;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token);\n continue;\n }\n case 'table': {\n out += this.renderer.table(token);\n continue;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n continue;\n }\n case 'list': {\n out += this.renderer.list(token);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token);\n continue;\n }\n case 'def': {\n out += this.renderer.def(token);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = this.renderer.text(textToken) as string;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i] as Tokens.Text;\n body += ('\\n' + this.renderer.text(textToken));\n }\n if (top) {\n out += this.renderer.paragraph({\n type: 'paragraph',\n raw: body,\n text: body,\n tokens: [{ type: 'text', raw: body, text: body, escaped: true }],\n });\n } else {\n out += body;\n }\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out as ParserOutput;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer: _Renderer | _TextRenderer = this.renderer): ParserOutput {\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out as ParserOutput;\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n block?: boolean;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n 'emStrongMask',\n ]);\n\n static passThroughHooksRespectAsync = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: ParserOutput) {\n return html;\n }\n\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens: Token[] | TokensList) {\n return tokens;\n }\n\n /**\n * Mask contents that should not be interpreted as em/strong delimiters\n */\n emStrongMask(src: string) {\n return src;\n }\n\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse : _Parser.parseInline;\n }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, Tokens, TokensList } from './Tokens.ts';\n\nexport type MaybePromise = void | Promise;\n\ntype UnknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n let values: MaybePromise[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token as Tokens.Table;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token as Tokens.List;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token as Tokens.Generic;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity) as Token[] | TokensList;\n values = values.concat(this.walkTokens(tokens, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: MarkedOptions['extensions'] = this.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop as Exclude, 'options' | 'parser'>;\n const rendererFunc = pack.renderer[rendererProp] as GenericRendererFunction;\n const prevRenderer = renderer[rendererProp] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return (ret || '') as RendererOutput;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop as Exclude, 'options' | 'rules' | 'lexer'>;\n const tokenizerFunc = pack.tokenizer[tokenizerProp] as UnknownFunction;\n const prevTokenizer = tokenizer[tokenizerProp] as UnknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop as Exclude, 'options' | 'block'>;\n const hooksFunc = pack.hooks[hooksProp] as UnknownFunction;\n const prevHook = hooks[hooksProp] as UnknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg: unknown) => {\n if (this.defaults.async && _Hooks.passThroughHooksRespectAsync.has(prop)) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values: MaybePromise[] = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n lexer(src: string, options?: MarkedOptions) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n\n parser(tokens: Token[], options?: MarkedOptions) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n\n private parseMarkdown(blockType: boolean) {\n type overloadedParse = {\n (src: string, options: MarkedOptions & { async: true }): Promise;\n (src: string, options: MarkedOptions & { async: false }): ParserOutput;\n (src: string, options?: MarkedOptions | null): ParserOutput | Promise;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse: overloadedParse = (src: string, options?: MarkedOptions | null): any => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n\n const throwError = this.onError(!!opt.silent, !!opt.async);\n\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch(e) {\n return throwError(e as Error);\n }\n };\n\n return parse;\n }\n\n private onError(silent: boolean, async: boolean) {\n return (e: Error): string | Promise => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults,\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\nimport type { MaybePromise } from './Instance.ts';\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions.\n */\nexport function marked(src: string, options: MarkedOptions & { async: false }): string;\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\nexport function marked(src: string, options?: MarkedOptions | null): string | Promise;\nexport function marked(src: string, opt?: MarkedOptions | null): string | Promise {\n return markedInstance.parse(src, opt);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './Tokens.ts';\n", "import type { MarkedToken, Token } from 'marked';\nimport { marked } from 'marked';\nimport { dedent } from 'ts-dedent';\nimport type { MarkdownLine, MarkdownWordType } from './types.js';\nimport type { MermaidConfig } from '../config.type.js';\nimport { log } from '../logger.js';\n\n/**\n * @param markdown - markdown to process\n * @returns processed markdown\n */\nfunction preprocessMarkdown(markdown: string, { markdownAutoWrap }: MermaidConfig): string {\n //Replace
    with \\n\n const withoutBR = markdown.replace(//g, '\\n');\n // Replace multiple newlines with a single newline\n const withoutMultipleNewlines = withoutBR.replace(/\\n{2,}/g, '\\n');\n // Remove extra spaces at the beginning of each line\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n if (markdownAutoWrap === false) {\n // TODO: Disabling `markdownAutoWrap` is currently broken for `htmlLabels: false`,\n // since the code calls `splitWordToFitWidth` to split words even we can't\n // break on spaces.\n // return withoutExtraSpaces.replace(/ /g, '\\u00A0');\n }\n return withoutExtraSpaces;\n}\n\n/**\n * @param nonMarkdownText - Non-markdown text to split into plain-text formatted lines.\n * This treats new lines, `\\n`, and `
    ` as line breaks, and splits on spaces for words.\n * SVG tags are preserved as separate words to maintain proper formatting.\n */\nexport function nonMarkdownToLines(nonMarkdownText: string): MarkdownLine[] {\n return nonMarkdownText.split(/\\\\n|\\n|/gi).map(\n (line) =>\n line\n .trim()\n .match(/<[^>]+>|[^\\s<>]+/g) // keeps SVG tags intact and preserves space between tags and text\n ?.map((word) => ({ content: word, type: 'normal' })) ?? []\n );\n}\n\n/**\n * @param markdown - markdown to split into lines\n */\nexport function markdownToLines(markdown: string, config: MermaidConfig = {}): MarkdownLine[] {\n const preprocessedMarkdown = preprocessMarkdown(markdown, config);\n const nodes = marked.lexer(preprocessedMarkdown);\n const lines: MarkdownLine[] = [[]];\n let currentLine = 0;\n\n function processNode(node: MarkedToken, parentType: MarkdownWordType = 'normal') {\n if (node.type === 'text') {\n const textLines = node.text.split('\\n');\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(' ').forEach((word) => {\n word = word.replace(/'/g, `'`);\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === 'strong' || node.type === 'em') {\n node.tokens.forEach((contentNode) => {\n processNode(contentNode as MarkedToken, node.type);\n });\n } else if (node.type === 'html') {\n lines[currentLine].push({ content: node.text, type: 'normal' });\n }\n }\n\n nodes.forEach((treeNode) => {\n if (treeNode.type === 'paragraph') {\n treeNode.tokens?.forEach((contentNode) => {\n processNode(contentNode as MarkedToken);\n });\n } else if (treeNode.type === 'html') {\n lines[currentLine].push({ content: treeNode.text, type: 'normal' });\n } else {\n lines[currentLine].push({ content: treeNode.raw, type: 'normal' });\n }\n });\n\n return lines;\n}\n\n/**\n * Counterpart to {@link markdownToHTML} for non-markdown text.\n *\n * Non-markdown text is not wrapped normally, and users can use an explicit `\\n`\n * sequence to add a line break.\n *\n * @param text - Non-markdown text to convert to HTML.\n */\nexport function nonMarkdownToHTML(text: string) {\n if (!text) {\n return '';\n }\n /*\n * Edge labels may have double backgrounds if `addBackground` is `true`.\n * This `

    ` wrapper aligns with how {@link markdownToHTML} wraps its output, and\n * ensures both backgrounds are the same size.\n *\n * We can't set it for empty labels, otherwise it causes rendering changes.\n */\n return `

    ${\n /**\n * Replace new lines with
    tags.\n *\n * Unlike in markdown text, `\\n` sequences are treated as line breaks here.\n */\n text.replace(/\\\\n|\\n/g, '
    ')\n }

    `;\n}\n\nexport function markdownToHTML(markdown: string, { markdownAutoWrap }: MermaidConfig = {}) {\n const nodes = marked.lexer(markdown);\n\n function output(node: Token): string {\n if (node.type === 'text') {\n if (markdownAutoWrap === false) {\n return node.text.replace(/\\n */g, '
    ').replace(/ /g, ' ');\n }\n return node.text.replace(/\\n */g, '
    ');\n } else if (node.type === 'strong') {\n return `${node.tokens?.map(output).join('')}`;\n } else if (node.type === 'em') {\n return `${node.tokens?.map(output).join('')}`;\n } else if (node.type === 'paragraph') {\n return `

    ${node.tokens?.map(output).join('')}

    `;\n } else if (node.type === 'space') {\n return '';\n } else if (node.type === 'html') {\n return `${node.text}`;\n } else if (node.type === 'escape') {\n return node.text;\n }\n log.warn(`Unsupported markdown: ${node.type}`);\n return node.raw;\n }\n\n return nodes.map(output).join('');\n}\n", "import type { CheckFitFunction, MarkdownLine, MarkdownWord, MarkdownWordType } from './types.js';\n\n/**\n * Splits a string into graphemes if available, otherwise characters.\n */\nexport function splitTextToChars(text: string): string[] {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter().segment(text)].map((s) => s.segment);\n }\n return [...text];\n}\n\n/**\n * Splits a string into words by using `Intl.Segmenter` if available, or splitting by ' '.\n * `Intl.Segmenter` uses the default locale, which might be different across browsers.\n */\nexport function splitLineToWords(text: string): string[] {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter(undefined, { granularity: 'word' }).segment(text)].map(\n (s) => s.segment\n );\n }\n // Split by ' ' removes the ' 's from the result.\n const words = text.split(' ');\n // Add the ' 's back to the result.\n const wordsWithSpaces = words.flatMap((s) => [s, ' ']).filter((s) => s);\n // Remove last space.\n wordsWithSpaces.pop();\n return wordsWithSpaces;\n}\n\n/**\n * Splits a word into two parts, the first part fits the width and the remaining part.\n * @param checkFit - Function to check if word fits\n * @param word - Word to split\n * @returns [first part of word that fits, rest of word]\n */\nexport function splitWordToFitWidth(\n checkFit: CheckFitFunction,\n word: MarkdownWord\n): [MarkdownWord, MarkdownWord] {\n const characters = splitTextToChars(word.content);\n return splitWordToFitWidthRecursion(checkFit, [], characters, word.type);\n}\n\nfunction splitWordToFitWidthRecursion(\n checkFit: CheckFitFunction,\n usedChars: string[],\n remainingChars: string[],\n type: MarkdownWordType\n): [MarkdownWord, MarkdownWord] {\n if (remainingChars.length === 0) {\n return [\n { content: usedChars.join(''), type },\n { content: '', type },\n ];\n }\n const [nextChar, ...rest] = remainingChars;\n const newWord = [...usedChars, nextChar];\n if (checkFit([{ content: newWord.join(''), type }])) {\n return splitWordToFitWidthRecursion(checkFit, newWord, rest, type);\n }\n if (usedChars.length === 0 && nextChar) {\n // If the first character does not fit, split it anyway\n usedChars.push(nextChar);\n remainingChars.shift();\n }\n return [\n { content: usedChars.join(''), type },\n { content: remainingChars.join(''), type },\n ];\n}\n\n/**\n * Splits a line into multiple lines that satisfy the checkFit function.\n * @param line - Line to split\n * @param checkFit - Function to check if line fits\n * @returns Array of lines that fit\n */\nexport function splitLineToFitWidth(\n line: MarkdownLine,\n checkFit: CheckFitFunction\n): MarkdownLine[] {\n if (line.some(({ content }) => content.includes('\\n'))) {\n throw new Error('splitLineToFitWidth does not support newlines in the line');\n }\n return splitLineToFitWidthRecursion(line, checkFit);\n}\n\nfunction splitLineToFitWidthRecursion(\n words: MarkdownWord[],\n checkFit: CheckFitFunction,\n lines: MarkdownLine[] = [],\n newLine: MarkdownLine = []\n): MarkdownLine[] {\n // Return if there is nothing left to split\n if (words.length === 0) {\n // If there is a new line, add it to the lines\n if (newLine.length > 0) {\n lines.push(newLine);\n }\n return lines.length > 0 ? lines : [];\n }\n let joiner = '';\n if (words[0].content === ' ') {\n joiner = ' ';\n words.shift();\n }\n const nextWord: MarkdownWord = words.shift() ?? { content: ' ', type: 'normal' };\n const lineWithNextWord: MarkdownLine = [...newLine];\n if (joiner !== '') {\n lineWithNextWord.push({ content: joiner, type: 'normal' });\n }\n lineWithNextWord.push(nextWord);\n\n if (checkFit(lineWithNextWord)) {\n // nextWord fits, so we can add it to the new line and continue\n return splitLineToFitWidthRecursion(words, checkFit, lines, lineWithNextWord);\n }\n\n // nextWord doesn't fit, so we need to split it\n if (newLine.length > 0) {\n // There was text in newLine, so add it to lines and push nextWord back into words.\n lines.push(newLine);\n words.unshift(nextWord);\n } else if (nextWord.content) {\n // There was no text in newLine, so we need to split nextWord\n const [line, rest] = splitWordToFitWidth(checkFit, nextWord);\n lines.push([line]);\n if (rest.content) {\n words.unshift(rest);\n }\n }\n return splitLineToFitWidthRecursion(words, checkFit, lines);\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n// @ts-nocheck TODO: Fix types\nimport { select } from 'd3';\nimport type { MermaidConfig } from '../config.type.js';\nimport type { SVGGroup } from '../diagram-api/types.js';\nimport common, { hasKatex, renderKatexSanitized, sanitizeText } from '../diagrams/common/common.js';\nimport type { D3TSpanElement, D3TextElement } from '../diagrams/common/commonTypes.js';\nimport { log } from '../logger.js';\nimport {\n markdownToHTML,\n markdownToLines,\n nonMarkdownToHTML,\n nonMarkdownToLines,\n} from '../rendering-util/handle-markdown-text.js';\nimport { decodeEntities } from '../utils.js';\nimport { getIconSVG, isIconAvailable } from './icons.js';\nimport { splitLineToFitWidth } from './splitText.js';\nimport type { MarkdownLine, MarkdownWord } from './types.js';\nimport { getConfig } from '../config.js';\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\n// We assume that nobody will want to create labels larger than 16384 pixels wide\nconst maxSafeSizeForWidth = 16384;\n\nasync function addHtmlSpan(\n element,\n node,\n width,\n classes,\n addBackground = false,\n // TODO: Make config mandatory\n config: MermaidConfig = getConfig()\n) {\n const fo = element.append('foreignObject');\n // This is not the final width but used in order to make sure the foreign\n // object in firefox gets a width at all. The final width is fetched from the div\n fo.attr('width', `${Math.min(10 * width, maxSafeSizeForWidth)}px`);\n fo.attr('height', `${Math.min(10 * width, maxSafeSizeForWidth)}px`);\n\n const div = fo.append('xhtml:div');\n const sanitizedLabel = hasKatex(node.label)\n ? await renderKatexSanitized(node.label.replace(common.lineBreakRegex, '\\n'), config)\n : sanitizeText(node.label, config);\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n const span = div.append('span');\n span.html(sanitizedLabel);\n applyStyle(span, node.labelStyle);\n span.attr('class', `${labelClass} ${classes}`);\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'table-cell');\n div.style('white-space', 'nowrap');\n div.style('line-height', '1.5');\n if (width !== Number.POSITIVE_INFINITY) {\n div.style('max-width', width + 'px');\n div.style('text-align', 'center');\n }\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n if (addBackground) {\n div.attr('class', 'labelBkg');\n }\n\n let bbox = div.node().getBoundingClientRect();\n if (bbox.width === width) {\n div.style('display', 'table');\n div.style('white-space', 'break-spaces');\n div.style('width', width + 'px');\n bbox = div.node().getBoundingClientRect();\n }\n\n return fo.node();\n}\n\n/**\n * Creates a tspan element with the specified attributes for text positioning.\n *\n * @param textElement - The parent text element to append the tspan element.\n * @param lineIndex - The index of the current line in the structuredText array.\n * @param lineHeight - The line height value for the text.\n * @param centerText - The flag to determine if the text should be centered.\n * @returns The created tspan element.\n */\nfunction createTspan(textElement: any, lineIndex: number, lineHeight: number, centerText = false) {\n const tspan = textElement\n .append('tspan')\n .attr('class', 'text-outer-tspan')\n .attr('x', 0)\n .attr('y', lineIndex * lineHeight - 0.1 + 'em')\n .attr('dy', lineHeight + 'em');\n if (centerText) {\n tspan.attr('text-anchor', 'middle');\n }\n return tspan;\n}\n\nfunction computeWidthOfText(parentNode: any, lineHeight: number, line: MarkdownLine): number {\n const testElement = parentNode.append('text');\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, line);\n const textLength = testSpan.node().getComputedTextLength();\n testElement.remove();\n return textLength;\n}\n\nexport function computeDimensionOfText(\n parentNode: SVGGroup,\n lineHeight: number,\n text: string\n): DOMRect | undefined {\n const testElement: D3TextElement = parentNode.append('text');\n const testSpan: D3TSpanElement = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, [{ content: text, type: 'normal' }]);\n const textDimension: DOMRect | undefined = testSpan.node()?.getBoundingClientRect();\n if (textDimension) {\n testElement.remove();\n }\n return textDimension;\n}\n\n/**\n * Creates a formatted text element by breaking lines and applying styles based on\n * the given structuredText.\n *\n * @param width - The maximum allowed width of the text.\n * @param g - The parent group element to append the formatted text.\n * @param structuredText - The structured text data to format.\n * @param addBackground - Whether to add a background to the text.\n * @param centerText - The flag to determine if the text should be centered.\n */\nfunction createFormattedText(\n width: number,\n g: any,\n structuredText: MarkdownWord[][],\n addBackground = false,\n centerText = false\n) {\n const lineHeight = 1.1;\n const labelGroup = g.append('g');\n const bkg = labelGroup.insert('rect').attr('class', 'background').attr('style', 'stroke: none');\n const textElement = labelGroup.append('text').attr('y', '-10.1');\n if (centerText) {\n textElement.attr('text-anchor', 'middle');\n }\n let lineIndex = 0;\n for (const line of structuredText) {\n /**\n * Preprocess raw string content of line data\n * Creating an array of strings pre-split to satisfy width limit\n */\n const checkWidth = (line: MarkdownLine) =>\n computeWidthOfText(labelGroup, lineHeight, line) <= width;\n const linesUnderWidth = checkWidth(line) ? [line] : splitLineToFitWidth(line, checkWidth);\n /** Add each prepared line as a tspan to the parent node */\n for (const preparedLine of linesUnderWidth) {\n const tspan = createTspan(textElement, lineIndex, lineHeight, centerText);\n updateTextContentAndStyles(tspan, preparedLine);\n lineIndex++;\n }\n }\n if (addBackground) {\n const bbox = textElement.node().getBBox();\n const padding = 2;\n bkg\n .attr('x', bbox.x - padding)\n .attr('y', bbox.y - padding)\n .attr('width', bbox.width + 2 * padding)\n .attr('height', bbox.height + 2 * padding);\n\n return labelGroup.node();\n } else {\n return textElement.node();\n }\n}\n\n/**\n * Updates the text content and styles of the given tspan element based on the\n * provided wrappedLine data.\n *\n * @param tspan - The tspan element to update.\n * @param wrappedLine - The line data to apply to the tspan element.\n */\nfunction updateTextContentAndStyles(tspan: any, wrappedLine: MarkdownWord[]) {\n tspan.text('');\n\n wrappedLine.forEach((word, index) => {\n const innerTspan = tspan\n .append('tspan')\n .attr('font-style', word.type === 'em' ? 'italic' : 'normal')\n .attr('class', 'text-inner-tspan')\n .attr('font-weight', word.type === 'strong' ? 'bold' : 'normal');\n if (index === 0) {\n innerTspan.text(word.content);\n } else {\n // TODO: check what joiner to use.\n innerTspan.text(' ' + word.content);\n }\n });\n}\n\n/**\n * Convert fontawesome labels into fontawesome icons by using a regex pattern\n * @param text - The raw string to convert\n * @param config - Mermaid config\n * @returns string with fontawesome icons as svg if the icon is registered otherwise as i tags\n */\nexport async function replaceIconSubstring(\n text: string,\n // TODO: Make config mandatory\n config: MermaidConfig = {}\n): Promise {\n const pendingReplacements: Promise[] = [];\n // cspell: disable-next-line\n text.replace(/(fa[bklrs]?):fa-([\\w-]+)/g, (fullMatch, prefix, iconName) => {\n pendingReplacements.push(\n (async () => {\n const registeredIconName = `${prefix}:${iconName}`;\n if (await isIconAvailable(registeredIconName)) {\n return await getIconSVG(registeredIconName, undefined, { class: 'label-icon' });\n } else {\n return ``;\n }\n })()\n );\n return fullMatch;\n });\n\n const replacements = await Promise.all(pendingReplacements);\n // cspell: disable-next-line\n return text.replace(/(fa[bklrs]?):fa-([\\w-]+)/g, () => replacements.shift() ?? '');\n}\n\n// Note when using from flowcharts converting the API isNode means classes should be set accordingly. When using htmlLabels => to set classes to 'nodeLabel' when isNode=true otherwise 'edgeLabel'\n// When not using htmlLabels => to set classes to 'title-row' when isTitle=true otherwise 'title-row'\nexport const createText = async (\n el,\n text = '',\n {\n style = '',\n isTitle = false,\n classes = '',\n useHtmlLabels = true,\n markdown = true,\n isNode = true,\n /**\n * The width to wrap the text within. Set to `Number.POSITIVE_INFINITY` for no wrapping.\n */\n width = 200,\n addSvgBackground = false,\n } = {},\n config?: MermaidConfig\n) => {\n log.debug(\n 'XYZ createText',\n text,\n style,\n isTitle,\n classes,\n useHtmlLabels,\n isNode,\n 'addSvgBackground: ',\n addSvgBackground\n );\n if (useHtmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n\n const htmlText = markdown ? markdownToHTML(text, config) : nonMarkdownToHTML(text);\n const decodedReplacedText = await replaceIconSubstring(decodeEntities(htmlText), config);\n\n //for Katex the text could contain escaped characters, \\\\relax that should be transformed to \\relax\n const inputForKatex = text.replace(/\\\\\\\\/g, '\\\\');\n\n const node = {\n isNode,\n label: hasKatex(text) ? inputForKatex : decodedReplacedText,\n labelStyle: style.replace('fill:', 'color:'),\n };\n const vertexNode = await addHtmlSpan(el, node, width, classes, addSvgBackground, config);\n return vertexNode;\n } else {\n //sometimes the user might add br tags with 1 or more spaces in between, so we need to replace them with
    \n const sanitizeBR = text.replace(//g, '
    ');\n const structuredText = markdown\n ? markdownToLines(sanitizeBR.replace('
    ', '
    '), config)\n : nonMarkdownToLines(sanitizeBR);\n const svgLabel = createFormattedText(\n width,\n el,\n structuredText,\n text ? addSvgBackground : false,\n !isNode\n );\n if (isNode) {\n if (/stroke:/.exec(style)) {\n style = style.replace('stroke:', 'lineColor:');\n }\n\n const nodeLabelTextStyle = style\n .replace(/stroke:[^;]+;?/g, '')\n .replace(/stroke-width:[^;]+;?/g, '')\n .replace(/fill:[^;]+;?/g, '')\n .replace(/color:/g, 'fill:');\n select(svgLabel).attr('style', nodeLabelTextStyle);\n // svgLabel.setAttribute('style', style);\n } else {\n //On style, assume `stroke`, `stroke-width` are used for edge path, so remove them\n // remove `fill`\n // use `background` as `fill` for label rect,\n\n const edgeLabelRectStyle = style\n .replace(/stroke:[^;]+;?/g, '')\n .replace(/stroke-width:[^;]+;?/g, '')\n .replace(/fill:[^;]+;?/g, '')\n .replace(/background:/g, 'fill:');\n select(svgLabel)\n .select('rect')\n .attr('style', edgeLabelRectStyle.replace(/background:/g, 'fill:'));\n\n // for text, update fill color with `color`\n const edgeLabelTextStyle = style\n .replace(/stroke:[^;]+;?/g, '')\n .replace(/stroke-width:[^;]+;?/g, '')\n .replace(/fill:[^;]+;?/g, '')\n .replace(/color:/g, 'fill:');\n select(svgLabel).select('text').attr('style', edgeLabelTextStyle);\n }\n if (isTitle) {\n // I can't actually see the title-row/row class being used anywhere, but keeping it for backward compatibility\n select(svgLabel).selectAll('tspan.text-outer-tspan').classed('title-row', true);\n } else {\n select(svgLabel).selectAll('tspan.text-outer-tspan').classed('row', true);\n }\n return svgLabel;\n }\n};\n"], - "mappings": "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", - "names": ["defaultIconDimensions", "defaultIconTransformations", "defaultIconProps", "defaultExtendedIconProps", "defaultIconSizeCustomisations", "defaultIconCustomisations", "defaultIconTransformations", "stringToIcon", "__name", "value", "validate", "allowSimpleName", "provider", "colonSeparated", "name$1", "prefix", "result", "validateIconName", "name", "dashSeparated", "icon", "mergeIconTransformations", "obj1", "obj2", "result", "rotate", "__name", "mergeIconData", "parent", "child", "result", "mergeIconTransformations", "key", "defaultExtendedIconProps", "defaultIconTransformations", "__name", "getIconsTree", "data", "names", "icons", "aliases", "resolved", "resolve", "name", "parent", "value", "__name", "internalGetIconData", "data", "name", "tree", "icons", "aliases", "currentProps", "parse", "name$1", "mergeIconData", "__name", "getIconData", "getIconsTree", "unitsSplit", "unitsTest", "calculateSize", "size", "ratio", "precision", "oldParts", "newParts", "code", "isNumber", "num", "__name", "splitSVGDefs", "content", "tag", "defs", "index", "start", "end", "endEnd", "__name", "mergeDefsAndContent", "wrapSVGContent", "body", "split", "isUnsetKeyword", "__name", "value", "iconToSVG", "icon", "customisations", "fullIcon", "defaultIconProps", "fullCustomisations", "defaultIconCustomisations", "box", "body", "props", "transformations", "hFlip", "vFlip", "rotation", "tempValue", "wrapSVGContent", "customisationsWidth", "customisationsHeight", "boxWidth", "boxHeight", "width", "height", "calculateSize", "attributes", "setAttr", "prop", "viewBox", "regex", "randomPrefix", "counter", "replaceIDs", "body", "prefix", "ids", "match", "suffix", "id", "newID", "escapedID", "__name", "iconToHTML", "body", "attributes", "renderAttribsHTML", "attr", "__name", "unknownIcon", "iconsStore", "loaderStore", "registerIconPacks", "__name", "iconLoaders", "iconLoader", "log", "getRegisteredIconData", "iconName", "fallbackPrefix", "data", "stringToIcon", "prefix", "icons", "loader", "e", "iconData", "getIconData", "isIconAvailable", "getIconSVG", "customisations", "extraAttributes", "renderData", "iconToSVG", "svg", "iconToHTML", "replaceIDs", "sanitizeText", "getConfig", "dedent", "templ", "values", "_i", "strings", "indentLengths", "arr", "str", "matches", "match", "_a", "_b", "pattern_1", "string", "value", "i", "endentations", "endentation", "indentedValue", "__name", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "noopTest", "__name", "edit", "regex", "opt", "source", "obj", "name", "val", "valSource", "other", "bull", "indent", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheadingCore", "lheading", "lheadingGfm", "_paragraph", "blockText", "_blockLabel", "def", "list", "_tag", "_comment", "html", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "blockPedantic", "escape", "inlineCode", "br", "inlineText", "_punctuation", "_punctuationOrSpace", "_notPunctuationOrSpace", "punctuation", "_punctuationGfmStrongEm", "_punctuationOrSpaceGfmStrongEm", "_notPunctuationOrSpaceGfmStrongEm", "blockSkip", "emStrongLDelimCore", "emStrongLDelim", "emStrongLDelimGfm", "emStrongRDelimAstCore", "emStrongRDelimAst", "emStrongRDelimAstGfm", "emStrongRDelimUnd", "anyPunctuation", "autolink", "_inlineComment", "tag", "_inlineLabel", "link", "reflink", "nolink", "reflinkSearch", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "escapeReplacements", "getEscapeReplacement", "ch", "encode", "cleanUrl", "href", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "findClosingBracket", "b", "level", "outputLink", "cap", "raw", "lexer", "rules", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "src", "trimmed", "lines", "tokens", "inBlockquote", "currentLines", "currentRaw", "currentText", "top", "lastToken", "oldToken", "newText", "newToken", "isordered", "itemRegex", "endsWithBlankLine", "endEarly", "itemContents", "line", "t", "nextLine", "blankLine", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "htmlBeginRegex", "rawLine", "nextLineWithoutTabs", "istask", "ischecked", "lastItem", "spacers", "hasMultipleLineBreaks", "headers", "aligns", "rows", "item", "align", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "_Lexer", "__Lexer", "next", "lastParagraphClipped", "extTokenizer", "cutSrc", "startIndex", "tempSrc", "tempStart", "getStartIndex", "errMsg", "keepPrevChar", "_Renderer", "lang", "langString", "code", "depth", "ordered", "start", "body", "j", "type", "startAttr", "itemBody", "checkbox", "checked", "header", "k", "content", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "anyToken", "genericToken", "ret", "textToken", "renderer", "_Hooks", "markdown", "Marked", "args", "callback", "values", "tableToken", "listToken", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "blockType", "origOpt", "throwError", "parser", "e", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "preprocessMarkdown", "markdown", "markdownAutoWrap", "withoutMultipleNewlines", "dedent", "__name", "nonMarkdownToLines", "nonMarkdownText", "line", "word", "markdownToLines", "config", "preprocessedMarkdown", "nodes", "d", "lines", "currentLine", "processNode", "node", "parentType", "textLine", "index", "contentNode", "treeNode", "nonMarkdownToHTML", "text", "markdownToHTML", "output", "log", "splitTextToChars", "text", "s", "__name", "splitWordToFitWidth", "checkFit", "word", "characters", "splitTextToChars", "splitWordToFitWidthRecursion", "__name", "usedChars", "remainingChars", "type", "nextChar", "rest", "newWord", "splitLineToFitWidth", "line", "content", "splitLineToFitWidthRecursion", "words", "lines", "newLine", "joiner", "nextWord", "lineWithNextWord", "applyStyle", "dom", "styleFn", "__name", "maxSafeSizeForWidth", "addHtmlSpan", "element", "node", "width", "classes", "addBackground", "config", "getConfig", "fo", "div", "sanitizedLabel", "hasKatex", "renderKatexSanitized", "common_default", "sanitizeText", "labelClass", "span", "bbox", "createTspan", "textElement", "lineIndex", "lineHeight", "centerText", "tspan", "computeWidthOfText", "parentNode", "line", "testElement", "testSpan", "updateTextContentAndStyles", "textLength", "computeDimensionOfText", "text", "textDimension", "createFormattedText", "g", "structuredText", "labelGroup", "bkg", "checkWidth", "linesUnderWidth", "splitLineToFitWidth", "preparedLine", "padding", "wrappedLine", "word", "index", "innerTspan", "replaceIconSubstring", "pendingReplacements", "fullMatch", "prefix", "iconName", "registeredIconName", "isIconAvailable", "getIconSVG", "replacements", "createText", "el", "style", "isTitle", "useHtmlLabels", "markdown", "isNode", "addSvgBackground", "log", "htmlText", "markdownToHTML", "nonMarkdownToHTML", "decodedReplacedText", "decodeEntities", "inputForKatex", "sanitizeBR", "markdownToLines", "nonMarkdownToLines", "svgLabel", "nodeLabelTextStyle", "select_default", "edgeLabelRectStyle", "edgeLabelTextStyle"] + "sourcesContent": ["/**\n* Default values for dimensions\n*/\nconst defaultIconDimensions = Object.freeze({\n\tleft: 0,\n\ttop: 0,\n\twidth: 16,\n\theight: 16\n});\n/**\n* Default values for transformations\n*/\nconst defaultIconTransformations = Object.freeze({\n\trotate: 0,\n\tvFlip: false,\n\thFlip: false\n});\n/**\n* Default values for all optional IconifyIcon properties\n*/\nconst defaultIconProps = Object.freeze({\n\t...defaultIconDimensions,\n\t...defaultIconTransformations\n});\n/**\n* Default values for all properties used in ExtendedIconifyIcon\n*/\nconst defaultExtendedIconProps = Object.freeze({\n\t...defaultIconProps,\n\tbody: \"\",\n\thidden: false\n});\n\nexport { defaultExtendedIconProps, defaultIconDimensions, defaultIconProps, defaultIconTransformations };", "import { defaultIconTransformations } from \"../icon/defaults.js\";\n\n/**\n* Default icon customisations values\n*/\nconst defaultIconSizeCustomisations = Object.freeze({\n\twidth: null,\n\theight: null\n});\nconst defaultIconCustomisations = Object.freeze({\n\t...defaultIconSizeCustomisations,\n\t...defaultIconTransformations\n});\n\nexport { defaultIconCustomisations, defaultIconSizeCustomisations };", "/**\n* Expression to test part of icon name.\n*\n* Used when loading icons from Iconify API due to project naming convension.\n* Ignored when using custom icon sets - convension does not apply.\n*/\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n/**\n* Convert string icon name to IconifyIconName object.\n*/\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n\tconst colonSeparated = value.split(\":\");\n\tif (value.slice(0, 1) === \"@\") {\n\t\tif (colonSeparated.length < 2 || colonSeparated.length > 3) return null;\n\t\tprovider = colonSeparated.shift().slice(1);\n\t}\n\tif (colonSeparated.length > 3 || !colonSeparated.length) return null;\n\tif (colonSeparated.length > 1) {\n\t\tconst name$1 = colonSeparated.pop();\n\t\tconst prefix = colonSeparated.pop();\n\t\tconst result = {\n\t\t\tprovider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n\t\t\tprefix,\n\t\t\tname: name$1\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tconst name = colonSeparated[0];\n\tconst dashSeparated = name.split(\"-\");\n\tif (dashSeparated.length > 1) {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: dashSeparated.shift(),\n\t\t\tname: dashSeparated.join(\"-\")\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tif (allowSimpleName && provider === \"\") {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: \"\",\n\t\t\tname\n\t\t};\n\t\treturn validate && !validateIconName(result, allowSimpleName) ? null : result;\n\t}\n\treturn null;\n};\n/**\n* Check if icon is valid.\n*\n* This function is not part of stringToIcon because validation is not needed for most code.\n*/\nconst validateIconName = (icon, allowSimpleName) => {\n\tif (!icon) return false;\n\treturn !!((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\nexport { matchIconName, stringToIcon, validateIconName };", "/**\n* Merge transformations\n*/\nfunction mergeIconTransformations(obj1, obj2) {\n\tconst result = {};\n\tif (!obj1.hFlip !== !obj2.hFlip) result.hFlip = true;\n\tif (!obj1.vFlip !== !obj2.vFlip) result.vFlip = true;\n\tconst rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n\tif (rotate) result.rotate = rotate;\n\treturn result;\n}\n\nexport { mergeIconTransformations };", "import { defaultExtendedIconProps, defaultIconTransformations } from \"./defaults.js\";\nimport { mergeIconTransformations } from \"./transformations.js\";\n\n/**\n* Merge icon and alias\n*\n* Can also be used to merge default values and icon\n*/\nfunction mergeIconData(parent, child) {\n\tconst result = mergeIconTransformations(parent, child);\n\tfor (const key in defaultExtendedIconProps) if (key in defaultIconTransformations) {\n\t\tif (key in parent && !(key in result)) result[key] = defaultIconTransformations[key];\n\t} else if (key in child) result[key] = child[key];\n\telse if (key in parent) result[key] = parent[key];\n\treturn result;\n}\n\nexport { mergeIconData };", "/**\n* Resolve icon set icons\n*\n* Returns parent icon for each icon\n*/\nfunction getIconsTree(data, names) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tconst resolved = Object.create(null);\n\tfunction resolve(name) {\n\t\tif (icons[name]) return resolved[name] = [];\n\t\tif (!(name in resolved)) {\n\t\t\tresolved[name] = null;\n\t\t\tconst parent = aliases[name] && aliases[name].parent;\n\t\t\tconst value = parent && resolve(parent);\n\t\t\tif (value) resolved[name] = [parent].concat(value);\n\t\t}\n\t\treturn resolved[name];\n\t}\n\t(names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n\treturn resolved;\n}\n\nexport { getIconsTree };", "import { mergeIconData } from \"../icon/merge.js\";\nimport { getIconsTree } from \"./tree.js\";\n\n/**\n* Get icon data, using prepared aliases tree\n*/\nfunction internalGetIconData(data, name, tree) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tlet currentProps = {};\n\tfunction parse(name$1) {\n\t\tcurrentProps = mergeIconData(icons[name$1] || aliases[name$1], currentProps);\n\t}\n\tparse(name);\n\ttree.forEach(parse);\n\treturn mergeIconData(data, currentProps);\n}\n/**\n* Get data for icon\n*/\nfunction getIconData(data, name) {\n\tif (data.icons[name]) return internalGetIconData(data, name, []);\n\tconst tree = getIconsTree(data, [name])[name];\n\treturn tree ? internalGetIconData(data, name, tree) : null;\n}\n\nexport { getIconData, internalGetIconData };", "/**\n* Regular expressions for calculating dimensions\n*/\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n\tif (ratio === 1) return size;\n\tprecision = precision || 100;\n\tif (typeof size === \"number\") return Math.ceil(size * ratio * precision) / precision;\n\tif (typeof size !== \"string\") return size;\n\tconst oldParts = size.split(unitsSplit);\n\tif (oldParts === null || !oldParts.length) return size;\n\tconst newParts = [];\n\tlet code = oldParts.shift();\n\tlet isNumber = unitsTest.test(code);\n\twhile (true) {\n\t\tif (isNumber) {\n\t\t\tconst num = parseFloat(code);\n\t\t\tif (isNaN(num)) newParts.push(code);\n\t\t\telse newParts.push(Math.ceil(num * ratio * precision) / precision);\n\t\t} else newParts.push(code);\n\t\tcode = oldParts.shift();\n\t\tif (code === void 0) return newParts.join(\"\");\n\t\tisNumber = !isNumber;\n\t}\n}\n\nexport { calculateSize };", "function splitSVGDefs(content, tag = \"defs\") {\n\tlet defs = \"\";\n\tconst index = content.indexOf(\"<\" + tag);\n\twhile (index >= 0) {\n\t\tconst start = content.indexOf(\">\", index);\n\t\tconst end = content.indexOf(\"\", end);\n\t\tif (endEnd === -1) break;\n\t\tdefs += content.slice(start + 1, end).trim();\n\t\tcontent = content.slice(0, index).trim() + content.slice(endEnd + 1);\n\t}\n\treturn {\n\t\tdefs,\n\t\tcontent\n\t};\n}\n/**\n* Merge defs and content\n*/\nfunction mergeDefsAndContent(defs, content) {\n\treturn defs ? \"\" + defs + \"\" + content : content;\n}\n/**\n* Wrap SVG content, without wrapping definitions\n*/\nfunction wrapSVGContent(body, start, end) {\n\tconst split = splitSVGDefs(body);\n\treturn mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\nexport { mergeDefsAndContent, splitSVGDefs, wrapSVGContent };", "import { defaultIconProps } from \"../icon/defaults.js\";\nimport { defaultIconCustomisations } from \"../customisations/defaults.js\";\nimport { calculateSize } from \"./size.js\";\nimport { wrapSVGContent } from \"./defs.js\";\n\n/**\n* Check if value should be unset. Allows multiple keywords\n*/\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\n/**\n* Get SVG attributes and content from icon + customisations\n*\n* Does not generate style to make it compatible with frameworks that use objects for style, such as React.\n* Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon.\n*\n* Customisations should be normalised by platform specific parser.\n* Result should be converted to by platform specific parser.\n* Use replaceIDs to generate unique IDs for body.\n*/\nfunction iconToSVG(icon, customisations) {\n\tconst fullIcon = {\n\t\t...defaultIconProps,\n\t\t...icon\n\t};\n\tconst fullCustomisations = {\n\t\t...defaultIconCustomisations,\n\t\t...customisations\n\t};\n\tconst box = {\n\t\tleft: fullIcon.left,\n\t\ttop: fullIcon.top,\n\t\twidth: fullIcon.width,\n\t\theight: fullIcon.height\n\t};\n\tlet body = fullIcon.body;\n\t[fullIcon, fullCustomisations].forEach((props) => {\n\t\tconst transformations = [];\n\t\tconst hFlip = props.hFlip;\n\t\tconst vFlip = props.vFlip;\n\t\tlet rotation = props.rotate;\n\t\tif (hFlip) if (vFlip) rotation += 2;\n\t\telse {\n\t\t\ttransformations.push(\"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(-1 1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\telse if (vFlip) {\n\t\t\ttransformations.push(\"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(1 -1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\tlet tempValue;\n\t\tif (rotation < 0) rotation -= Math.floor(rotation / 4) * 4;\n\t\trotation = rotation % 4;\n\t\tswitch (rotation) {\n\t\t\tcase 1:\n\t\t\t\ttempValue = box.height / 2 + box.top;\n\t\t\t\ttransformations.unshift(\"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\ttransformations.unshift(\"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\ttempValue = box.width / 2 + box.left;\n\t\t\t\ttransformations.unshift(\"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t}\n\t\tif (rotation % 2 === 1) {\n\t\t\tif (box.left !== box.top) {\n\t\t\t\ttempValue = box.left;\n\t\t\t\tbox.left = box.top;\n\t\t\t\tbox.top = tempValue;\n\t\t\t}\n\t\t\tif (box.width !== box.height) {\n\t\t\t\ttempValue = box.width;\n\t\t\t\tbox.width = box.height;\n\t\t\t\tbox.height = tempValue;\n\t\t\t}\n\t\t}\n\t\tif (transformations.length) body = wrapSVGContent(body, \"\", \"\");\n\t});\n\tconst customisationsWidth = fullCustomisations.width;\n\tconst customisationsHeight = fullCustomisations.height;\n\tconst boxWidth = box.width;\n\tconst boxHeight = box.height;\n\tlet width;\n\tlet height;\n\tif (customisationsWidth === null) {\n\t\theight = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t\twidth = calculateSize(height, boxWidth / boxHeight);\n\t} else {\n\t\twidth = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n\t\theight = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t}\n\tconst attributes = {};\n\tconst setAttr = (prop, value) => {\n\t\tif (!isUnsetKeyword(value)) attributes[prop] = value.toString();\n\t};\n\tsetAttr(\"width\", width);\n\tsetAttr(\"height\", height);\n\tconst viewBox = [\n\t\tbox.left,\n\t\tbox.top,\n\t\tboxWidth,\n\t\tboxHeight\n\t];\n\tattributes.viewBox = viewBox.join(\" \");\n\treturn {\n\t\tattributes,\n\t\tviewBox,\n\t\tbody\n\t};\n}\n\nexport { iconToSVG, isUnsetKeyword };", "/**\n* IDs usage:\n*\n* id=\"{id}\"\n* xlink:href=\"#{id}\"\n* url(#{id})\n*\n* From SVG animations:\n*\n* begin=\"0;{id}.end\"\n* begin=\"{id}.end\"\n* begin=\"{id}.click\"\n*/\n/**\n* Regular expression for finding ids\n*/\nconst regex = /\\sid=\"(\\S+)\"/g;\n/**\n* New random-ish prefix for ids\n*\n* Do not use dash, it cannot be used in SVG 2 animations\n*/\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\n/**\n* Counter for ids, increasing with every replacement\n*/\nlet counter = 0;\n/**\n* Replace IDs in SVG output with unique IDs\n*/\nfunction replaceIDs(body, prefix = randomPrefix) {\n\tconst ids = [];\n\tlet match;\n\twhile (match = regex.exec(body)) ids.push(match[1]);\n\tif (!ids.length) return body;\n\tconst suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n\tids.forEach((id) => {\n\t\tconst newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n\t\tconst escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\t\tbody = body.replace(new RegExp(\"([#;\\\"])(\" + escapedID + \")([\\\")]|\\\\.[a-z])\", \"g\"), \"$1\" + newID + suffix + \"$3\");\n\t});\n\tbody = body.replace(new RegExp(suffix, \"g\"), \"\");\n\treturn body;\n}\n\nexport { replaceIDs };", "/**\n* Generate \n*/\nfunction iconToHTML(body, attributes) {\n\tlet renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : \" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\";\n\tfor (const attr in attributes) renderAttribsHTML += \" \" + attr + \"=\\\"\" + attributes[attr] + \"\\\"\";\n\treturn \"\" + body + \"\";\n}\n\nexport { iconToHTML };", "import type { ExtendedIconifyIcon, IconifyIcon, IconifyJSON } from '@iconify/types';\nimport type { IconifyIconCustomisations } from '@iconify/utils';\nimport { getIconData, iconToHTML, iconToSVG, replaceIDs, stringToIcon } from '@iconify/utils';\nimport { getConfig } from '../config.js';\nimport { sanitizeText } from '../diagrams/common/common.js';\nimport { log } from '../logger.js';\n\nexport interface AsyncIconLoader {\n name: string;\n loader: () => Promise;\n}\n\nexport interface SyncIconLoader {\n name: string;\n icons: IconifyJSON;\n}\n\nexport type IconLoader = AsyncIconLoader | SyncIconLoader;\n\nexport const unknownIcon: IconifyIcon = {\n body: '?',\n height: 80,\n width: 80,\n};\n\nconst iconsStore = new Map();\nconst loaderStore = new Map();\n\nexport const registerIconPacks = (iconLoaders: IconLoader[]) => {\n for (const iconLoader of iconLoaders) {\n if (!iconLoader.name) {\n throw new Error(\n 'Invalid icon loader. Must have a \"name\" property with non-empty string value.'\n );\n }\n log.debug('Registering icon pack:', iconLoader.name);\n if ('loader' in iconLoader) {\n loaderStore.set(iconLoader.name, iconLoader.loader);\n } else if ('icons' in iconLoader) {\n iconsStore.set(iconLoader.name, iconLoader.icons);\n } else {\n log.error('Invalid icon loader:', iconLoader);\n throw new Error('Invalid icon loader. Must have either \"icons\" or \"loader\" property.');\n }\n }\n};\n\nconst getRegisteredIconData = async (iconName: string, fallbackPrefix?: string) => {\n const data = stringToIcon(iconName, true, fallbackPrefix !== undefined);\n if (!data) {\n throw new Error(`Invalid icon name: ${iconName}`);\n }\n const prefix = data.prefix || fallbackPrefix;\n if (!prefix) {\n throw new Error(`Icon name must contain a prefix: ${iconName}`);\n }\n let icons = iconsStore.get(prefix);\n if (!icons) {\n const loader = loaderStore.get(prefix);\n if (!loader) {\n throw new Error(`Icon set not found: ${data.prefix}`);\n }\n try {\n const loaded = await loader();\n icons = { ...loaded, prefix };\n iconsStore.set(prefix, icons);\n } catch (e) {\n log.error(e);\n throw new Error(`Failed to load icon set: ${data.prefix}`);\n }\n }\n const iconData = getIconData(icons, data.name);\n if (!iconData) {\n throw new Error(`Icon not found: ${iconName}`);\n }\n return iconData;\n};\n\nexport const isIconAvailable = async (iconName: string) => {\n try {\n await getRegisteredIconData(iconName);\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getIconSVG = async (\n iconName: string,\n customisations?: IconifyIconCustomisations & { fallbackPrefix?: string },\n extraAttributes?: Record\n) => {\n let iconData: ExtendedIconifyIcon;\n try {\n iconData = await getRegisteredIconData(iconName, customisations?.fallbackPrefix);\n } catch (e) {\n log.error(e);\n iconData = unknownIcon;\n }\n const renderData = iconToSVG(iconData, customisations);\n const svg = iconToHTML(replaceIDs(renderData.body), {\n ...renderData.attributes,\n ...extraAttributes,\n });\n return sanitizeText(svg, getConfig());\n};\n", "export function dedent(\n templ: TemplateStringsArray | string,\n ...values: unknown[]\n): string {\n let strings = Array.from(typeof templ === 'string' ? [templ] : templ);\n\n // 1. Remove trailing whitespace.\n strings[strings.length - 1] = strings[strings.length - 1].replace(\n /\\r?\\n([\\t ]*)$/,\n '',\n );\n\n // 2. Find all line breaks to determine the highest common indentation level.\n const indentLengths = strings.reduce((arr, str) => {\n const matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n if (matches) {\n return arr.concat(\n matches.map((match) => match.match(/[\\t ]/g)?.length ?? 0),\n );\n }\n return arr;\n }, []);\n\n // 3. Remove the common indentation from all strings.\n if (indentLengths.length) {\n const pattern = new RegExp(`\\n[\\t ]{${Math.min(...indentLengths)}}`, 'g');\n\n strings = strings.map((str) => str.replace(pattern, '\\n'));\n }\n\n // 4. Remove leading whitespace.\n strings[0] = strings[0].replace(/^\\r?\\n/, '');\n\n // 5. Perform interpolation.\n let string = strings[0];\n\n values.forEach((value, i) => {\n // 5.1 Read current indentation level\n const endentations = string.match(/(?:^|\\n)( *)$/)\n const endentation = endentations ? endentations[1] : ''\n let indentedValue = value\n // 5.2 Add indentation to values with multiline strings\n if (typeof value === 'string' && value.includes('\\n')) {\n indentedValue = String(value)\n .split('\\n')\n .map((str, i) => {\n return i === 0 ? str : `${endentation}${str}`\n })\n .join('\\n');\n }\n\n string += indentedValue + strings[i + 1];\n });\n\n return string;\n}\n\nexport default dedent;\n", "import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults(): MarkedOptions {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport let _defaults: MarkedOptions = _getDefaults();\n\nexport function changeDefaults(newDefaults: MarkedOptions) {\n _defaults = newDefaults;\n}\n", "const noopTest = { exec: () => null } as unknown as RegExp;\n\nfunction edit(regex: string | RegExp, opt = '') {\n let source = typeof regex === 'string' ? regex : regex.source;\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(other.caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\n\nexport const other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceTabs: /^\\t+/,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] /,\n listReplaceTask: /^\\[[ xX]\\] +/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),\n};\n\n/**\n * Block-Level Grammar\n */\n\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/\\|table/g, '') // table not in commonmark\n .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\n\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\n\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit(\n '^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|\\\\n*|$)' // (4)\n+ '|\\\\n*|$)' // (5)\n+ '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n+ '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n+ ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n\ntype BlockKeys = keyof typeof blockNormal;\n\n/**\n * GFM Block Grammar\n */\n\nconst gfmTable = edit(\n '^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockGfm: Record = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nconst blockPedantic: Record = {\n ...blockNormal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n\n/**\n * Inline-Level Grammar\n */\n\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^\\[\\]]*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<(?! )[^<>]*?>/g;\n\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\n\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\nconst emStrongRDelimAstCore =\n '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\n\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit(\n '^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n+ '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\n\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit(\n '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst _inlineLabel = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`[^`]*`|[^\\[\\]\\\\`])*?/;\n\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\n\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n\ntype InlineKeys = keyof typeof inlineNormal;\n\n/**\n * Pedantic Inline Grammar\n */\n\nconst inlinePedantic: Record = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n\n/**\n * GFM Inline Grammar\n */\n\nconst inlineGfm: Record = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex(),\n};\n\n/**\n * exports\n */\n\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic,\n};\n\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic,\n};\n\nexport interface Rules {\n other: typeof other\n block: Record\n inline: Record\n}\n", "import { other } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeReplacements: { [index: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n if (encode) {\n if (other.escapeTest.test(html)) {\n return html.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html)) {\n return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nexport function unescape(html: string) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(other.unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nexport function cleanUrl(href: string) {\n try {\n href = encodeURI(href).replace(other.percentDecode, '%');\n } catch {\n return null;\n }\n return href;\n}\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(other.splitPipe);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n\n return -1;\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n findClosingBracket,\n} from './helpers.ts';\nimport type { Rules } from './rules.ts';\nimport type { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens, Token } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick, raw: string, lexer: _Lexer, rules: Rules): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n\n lexer.state.inLink = true;\n const token: Tokens.Link | Tokens.Image = {\n type: cap[0].charAt(0) === '!' ? 'image' : 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n}\n\nfunction indentCodeCompensation(raw: string, text: string, rules: Rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options: MarkedOptions;\n rules!: Rules; // set by the lexer\n lexer!: _Lexer; // set by the lexer\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens: Token[] = [];\n\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(this.rules.other.blockquoteSetextReplace, '\\n $1')\n .replace(this.rules.other.blockquoteSetextReplace2, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n\n const lastToken = tokens.at(-1);\n\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n } else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken as Tokens.Blockquote;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken as Tokens.List;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1)!.raw.length).split('\\n');\n continue;\n }\n }\n\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n let line = cap[2].split('\\n', 1)[0].replace(this.rules.other.listReplaceTabs, (t: string) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = cap[2].search(this.rules.other.nonSpaceChar); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, ' ');\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.replace(this.rules.other.tabCharGlobal, ' ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n let istask: RegExpExecArray | null = null;\n let ischecked: boolean | undefined;\n // Check for task list items\n if (this.options.gfm) {\n istask = this.rules.other.listIsTask.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(this.rules.other.listReplaceTask, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n const lastItem = list.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n // not a list since there were no items\n return;\n }\n list.raw = list.raw.trimEnd();\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token: Tokens.HTML = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n\n const item: Tokens.Table = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push('right');\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push('center');\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push('left');\n } else {\n item.align.push(null);\n }\n }\n\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n\n return item;\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: cap[1],\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex === -2) {\n // more open parens than closed\n return;\n }\n\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = this.rules.other.pedanticHrefTitle.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer, this.rules);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer, this.rules);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = [...rDelim].length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n\n del(src: string): Tokens.Del | undefined {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n\n autolink(src: string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[1];\n href = 'mailto:' + text;\n } else {\n text = cap[1];\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n url(src: string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[0];\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n inlineText(src: string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n escaped,\n };\n }\n }\n}\n", "import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { other, block, inline } from './rules.ts';\nimport type { Token, TokensList, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Block Lexer\n */\nexport class _Lexer {\n tokens: TokensList;\n options: MarkedOptions;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n private tokenizer: _Tokenizer;\n private inlineQueue: { src: string, tokens: Token[] }[];\n\n constructor(options?: MarkedOptions) {\n // TokenList cannot be created in one go\n this.tokens = [] as unknown as TokensList;\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true,\n };\n\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal,\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline,\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src: string, options?: MarkedOptions) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src.replace(other.carriageReturn, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[];\n blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList;\n blockTokens(src: string, tokens: Token[] = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, ' ').replace(other.spaceLine, '');\n }\n\n while (src) {\n let token: Tokens.Generic | undefined;\n\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== undefined) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n lastToken.raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n tokens.push(token);\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match: RegExpExecArray | null = null;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index)\n + '[' + 'a'.repeat(match[0].length - 2) + ']'\n + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out blocks from extensions\n maskedSrc = this.options.hooks?.emStrongMask?.call({ lexer: this }, maskedSrc) ?? maskedSrc;\n\n let keepPrevChar = false;\n let prevChar = '';\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n let token: Tokens.Generic | undefined;\n\n // extensions\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === 'text' && lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escape,\n} from './helpers.ts';\nimport { other } from './rules.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Tokens } from './Tokens.ts';\nimport type { _Parser } from './Parser.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer {\n options: MarkedOptions;\n parser!: _Parser; // set by the parser\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n space(token: Tokens.Space): RendererOutput {\n return '' as RendererOutput;\n }\n\n code({ text, lang, escaped }: Tokens.Code): RendererOutput {\n const langString = (lang || '').match(other.notSpaceStart)?.[0];\n\n const code = text.replace(other.endingNewline, '') + '\\n';\n\n if (!langString) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n' as RendererOutput;\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n' as RendererOutput;\n }\n\n blockquote({ tokens }: Tokens.Blockquote): RendererOutput {\n const body = this.parser.parse(tokens);\n return `
    \\n${body}
    \\n` as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n def(token: Tokens.Def): RendererOutput {\n return '' as RendererOutput;\n }\n\n heading({ tokens, depth }: Tokens.Heading): RendererOutput {\n return `${this.parser.parseInline(tokens)}\\n` as RendererOutput;\n }\n\n hr(token: Tokens.Hr): RendererOutput {\n return '
    \\n' as RendererOutput;\n }\n\n list(token: Tokens.List): RendererOutput {\n const ordered = token.ordered;\n const start = token.start;\n\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n' as RendererOutput;\n }\n\n listitem(item: Tokens.ListItem): RendererOutput {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens[0]?.type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + escape(item.tokens[0].tokens[0].text);\n item.tokens[0].tokens[0].escaped = true;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n escaped: true,\n });\n }\n } else {\n itemBody += checkbox + ' ';\n }\n }\n\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n\n return `
  • ${itemBody}
  • \\n` as RendererOutput;\n }\n\n checkbox({ checked }: Tokens.Checkbox): RendererOutput {\n return '' as RendererOutput;\n }\n\n paragraph({ tokens }: Tokens.Paragraph): RendererOutput {\n return `

    ${this.parser.parseInline(tokens)}

    \\n` as RendererOutput;\n }\n\n table(token: Tokens.Table): RendererOutput {\n let header = '';\n\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell as ParserOutput });\n\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n\n body += this.tablerow({ text: cell as ParserOutput });\n }\n if (body) body = `${body}`;\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n' as RendererOutput;\n }\n\n tablerow({ text }: Tokens.TableRow): RendererOutput {\n return `\\n${text}\\n` as RendererOutput;\n }\n\n tablecell(token: Tokens.TableCell): RendererOutput {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n` as RendererOutput;\n }\n\n /**\n * span level renderer\n */\n strong({ tokens }: Tokens.Strong): RendererOutput {\n return `${this.parser.parseInline(tokens)}` as RendererOutput;\n }\n\n em({ tokens }: Tokens.Em): RendererOutput {\n return `${this.parser.parseInline(tokens)}` as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return `${escape(text, true)}` as RendererOutput;\n }\n\n br(token: Tokens.Br): RendererOutput {\n return '
    ' as RendererOutput;\n }\n\n del({ tokens }: Tokens.Del): RendererOutput {\n return `${this.parser.parseInline(tokens)}` as RendererOutput;\n }\n\n link({ href, title, tokens }: Tokens.Link): RendererOutput {\n const text = this.parser.parseInline(tokens) as string;\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text as RendererOutput;\n }\n href = cleanHref;\n let out = '
    ';\n return out as RendererOutput;\n }\n\n image({ href, title, text, tokens }: Tokens.Image): RendererOutput {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer) as string;\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escape(text) as RendererOutput;\n }\n href = cleanHref;\n\n let out = `\"${text}\"`;\n {\n // no need for block level renderers\n strong({ text }: Tokens.Strong): RendererOutput {\n return text as RendererOutput;\n }\n\n em({ text }: Tokens.Em): RendererOutput {\n return text as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return text as RendererOutput;\n }\n\n del({ text }: Tokens.Del): RendererOutput {\n return text as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n link({ text }: Tokens.Link): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n image({ text }: Tokens.Image): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n br(): RendererOutput {\n return '' as RendererOutput;\n }\n}\n", "import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport type { MarkedToken, Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options: MarkedOptions;\n renderer: _Renderer;\n textRenderer: _TextRenderer;\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens: Token[], options?: MarkedOptions) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[], top = true): ParserOutput {\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken as Tokens.Generic;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'def', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n continue;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token);\n continue;\n }\n case 'table': {\n out += this.renderer.table(token);\n continue;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n continue;\n }\n case 'list': {\n out += this.renderer.list(token);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token);\n continue;\n }\n case 'def': {\n out += this.renderer.def(token);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = this.renderer.text(textToken) as string;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i] as Tokens.Text;\n body += ('\\n' + this.renderer.text(textToken));\n }\n if (top) {\n out += this.renderer.paragraph({\n type: 'paragraph',\n raw: body,\n text: body,\n tokens: [{ type: 'text', raw: body, text: body, escaped: true }],\n });\n } else {\n out += body;\n }\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out as ParserOutput;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer: _Renderer | _TextRenderer = this.renderer): ParserOutput {\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out as ParserOutput;\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport class _Hooks {\n options: MarkedOptions;\n block?: boolean;\n\n constructor(options?: MarkedOptions) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n 'emStrongMask',\n ]);\n\n static passThroughHooksRespectAsync = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: ParserOutput) {\n return html;\n }\n\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens: Token[] | TokensList) {\n return tokens;\n }\n\n /**\n * Mask contents that should not be interpreted as em/strong delimiters\n */\n emStrongMask(src: string) {\n return src;\n }\n\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse : _Parser.parseInline;\n }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, Tokens, TokensList } from './Tokens.ts';\n\nexport type MaybePromise = void | Promise;\n\ntype UnknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n\n constructor(...args: MarkedExtension[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n let values: MaybePromise[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token as Tokens.Table;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token as Tokens.List;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token as Tokens.Generic;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity) as Token[] | TokensList;\n values = values.concat(this.walkTokens(tokens, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension[]) {\n const extensions: MarkedOptions['extensions'] = this.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop as Exclude, 'options' | 'parser'>;\n const rendererFunc = pack.renderer[rendererProp] as GenericRendererFunction;\n const prevRenderer = renderer[rendererProp] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return (ret || '') as RendererOutput;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop as Exclude, 'options' | 'rules' | 'lexer'>;\n const tokenizerFunc = pack.tokenizer[tokenizerProp] as UnknownFunction;\n const prevTokenizer = tokenizer[tokenizerProp] as UnknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop as Exclude, 'options' | 'block'>;\n const hooksFunc = pack.hooks[hooksProp] as UnknownFunction;\n const prevHook = hooks[hooksProp] as UnknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg: unknown) => {\n if (this.defaults.async && _Hooks.passThroughHooksRespectAsync.has(prop)) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args: unknown[]) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values: MaybePromise[] = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n lexer(src: string, options?: MarkedOptions) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n\n parser(tokens: Token[], options?: MarkedOptions) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n\n private parseMarkdown(blockType: boolean) {\n type overloadedParse = {\n (src: string, options: MarkedOptions & { async: true }): Promise;\n (src: string, options: MarkedOptions & { async: false }): ParserOutput;\n (src: string, options?: MarkedOptions | null): ParserOutput | Promise;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse: overloadedParse = (src: string, options?: MarkedOptions | null): any => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n\n const throwError = this.onError(!!opt.silent, !!opt.async);\n\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch(e) {\n return throwError(e as Error);\n }\n };\n\n return parse;\n }\n\n private onError(silent: boolean, async: boolean) {\n return (e: Error): string | Promise => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '

    An error occurred:

    '\n          + escape(e.message + '', true)\n          + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults,\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\nimport type { MaybePromise } from './Instance.ts';\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\n\n/**\n * Compiles markdown to HTML.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions.\n */\nexport function marked(src: string, options: MarkedOptions & { async: false }): string;\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise;\nexport function marked(src: string, options?: MarkedOptions | null): string | Promise;\nexport function marked(src: string, opt?: MarkedOptions | null): string | Promise {\n return markedInstance.parse(src, opt);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './Tokens.ts';\n", "import type { MarkedToken, Token } from 'marked';\nimport { marked } from 'marked';\nimport { dedent } from 'ts-dedent';\nimport type { MarkdownLine, MarkdownWordType } from './types.js';\nimport type { MermaidConfig } from '../config.type.js';\nimport { log } from '../logger.js';\n\n/**\n * @param markdown - markdown to process\n * @returns processed markdown\n */\nfunction preprocessMarkdown(markdown: string, { markdownAutoWrap }: MermaidConfig): string {\n //Replace
    with \\n\n const withoutBR = markdown.replace(//g, '\\n');\n // Replace multiple newlines with a single newline\n const withoutMultipleNewlines = withoutBR.replace(/\\n{2,}/g, '\\n');\n // Remove extra spaces at the beginning of each line\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n if (markdownAutoWrap === false) {\n // TODO: Disabling `markdownAutoWrap` is currently broken for `htmlLabels: false`,\n // since the code calls `splitWordToFitWidth` to split words even we can't\n // break on spaces.\n // return withoutExtraSpaces.replace(/ /g, '\\u00A0');\n }\n return withoutExtraSpaces;\n}\n\n/**\n * @param nonMarkdownText - Non-markdown text to split into plain-text formatted lines.\n * This treats new lines, `\\n`, and `
    ` as line breaks, and splits on spaces for words.\n * SVG tags are preserved as separate words to maintain proper formatting.\n */\nexport function nonMarkdownToLines(nonMarkdownText: string): MarkdownLine[] {\n return nonMarkdownText.split(/\\\\n|\\n|/gi).map(\n (line) =>\n line\n .trim()\n .match(/<[^>]+>|[^\\s<>]+/g) // keeps SVG tags intact and preserves space between tags and text\n ?.map((word) => ({ content: word, type: 'normal' })) ?? []\n );\n}\n\n/**\n * @param markdown - markdown to split into lines\n */\nexport function markdownToLines(markdown: string, config: MermaidConfig = {}): MarkdownLine[] {\n const preprocessedMarkdown = preprocessMarkdown(markdown, config);\n const nodes = marked.lexer(preprocessedMarkdown);\n const lines: MarkdownLine[] = [[]];\n let currentLine = 0;\n\n function processNode(node: MarkedToken, parentType: MarkdownWordType = 'normal') {\n if (node.type === 'text') {\n const textLines = node.text.split('\\n');\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(' ').forEach((word) => {\n word = word.replace(/'/g, `'`);\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === 'strong' || node.type === 'em') {\n node.tokens.forEach((contentNode) => {\n processNode(contentNode as MarkedToken, node.type);\n });\n } else if (node.type === 'html') {\n lines[currentLine].push({ content: node.text, type: 'normal' });\n }\n }\n\n nodes.forEach((treeNode) => {\n if (treeNode.type === 'paragraph') {\n treeNode.tokens?.forEach((contentNode) => {\n processNode(contentNode as MarkedToken);\n });\n } else if (treeNode.type === 'html') {\n lines[currentLine].push({ content: treeNode.text, type: 'normal' });\n } else {\n lines[currentLine].push({ content: treeNode.raw, type: 'normal' });\n }\n });\n\n return lines;\n}\n\n/**\n * Counterpart to {@link markdownToHTML} for non-markdown text.\n *\n * Non-markdown text is not wrapped normally, and users can use an explicit `\\n`\n * sequence to add a line break.\n *\n * @param text - Non-markdown text to convert to HTML.\n */\nexport function nonMarkdownToHTML(text: string) {\n if (!text) {\n return '';\n }\n /*\n * Edge labels may have double backgrounds if `addBackground` is `true`.\n * This `

    ` wrapper aligns with how {@link markdownToHTML} wraps its output, and\n * ensures both backgrounds are the same size.\n *\n * We can't set it for empty labels, otherwise it causes rendering changes.\n */\n return `

    ${\n /**\n * Replace new lines with
    tags.\n *\n * Unlike in markdown text, `\\n` sequences are treated as line breaks here.\n */\n text.replace(/\\\\n|\\n/g, '
    ')\n }

    `;\n}\n\nexport function markdownToHTML(markdown: string, { markdownAutoWrap }: MermaidConfig = {}) {\n const nodes = marked.lexer(markdown);\n\n function output(node: Token): string {\n if (node.type === 'text') {\n if (markdownAutoWrap === false) {\n return node.text.replace(/\\n */g, '
    ').replace(/ /g, ' ');\n }\n return node.text.replace(/\\n */g, '
    ');\n } else if (node.type === 'strong') {\n return `${node.tokens?.map(output).join('')}`;\n } else if (node.type === 'em') {\n return `${node.tokens?.map(output).join('')}`;\n } else if (node.type === 'paragraph') {\n return `

    ${node.tokens?.map(output).join('')}

    `;\n } else if (node.type === 'space') {\n return '';\n } else if (node.type === 'html') {\n return `${node.text}`;\n } else if (node.type === 'escape') {\n return node.text;\n }\n log.warn(`Unsupported markdown: ${node.type}`);\n return node.raw;\n }\n\n return nodes.map(output).join('');\n}\n", "import type { CheckFitFunction, MarkdownLine, MarkdownWord, MarkdownWordType } from './types.js';\n\n/**\n * Splits a string into graphemes if available, otherwise characters.\n */\nexport function splitTextToChars(text: string): string[] {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter().segment(text)].map((s) => s.segment);\n }\n return [...text];\n}\n\n/**\n * Splits a string into words by using `Intl.Segmenter` if available, or splitting by ' '.\n * `Intl.Segmenter` uses the default locale, which might be different across browsers.\n */\nexport function splitLineToWords(text: string): string[] {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter(undefined, { granularity: 'word' }).segment(text)].map(\n (s) => s.segment\n );\n }\n // Split by ' ' removes the ' 's from the result.\n const words = text.split(' ');\n // Add the ' 's back to the result.\n const wordsWithSpaces = words.flatMap((s) => [s, ' ']).filter((s) => s);\n // Remove last space.\n wordsWithSpaces.pop();\n return wordsWithSpaces;\n}\n\n/**\n * Splits a word into two parts, the first part fits the width and the remaining part.\n * @param checkFit - Function to check if word fits\n * @param word - Word to split\n * @returns [first part of word that fits, rest of word]\n */\nexport function splitWordToFitWidth(\n checkFit: CheckFitFunction,\n word: MarkdownWord\n): [MarkdownWord, MarkdownWord] {\n const characters = splitTextToChars(word.content);\n return splitWordToFitWidthRecursion(checkFit, [], characters, word.type);\n}\n\nfunction splitWordToFitWidthRecursion(\n checkFit: CheckFitFunction,\n usedChars: string[],\n remainingChars: string[],\n type: MarkdownWordType\n): [MarkdownWord, MarkdownWord] {\n if (remainingChars.length === 0) {\n return [\n { content: usedChars.join(''), type },\n { content: '', type },\n ];\n }\n const [nextChar, ...rest] = remainingChars;\n const newWord = [...usedChars, nextChar];\n if (checkFit([{ content: newWord.join(''), type }])) {\n return splitWordToFitWidthRecursion(checkFit, newWord, rest, type);\n }\n if (usedChars.length === 0 && nextChar) {\n // If the first character does not fit, split it anyway\n usedChars.push(nextChar);\n remainingChars.shift();\n }\n return [\n { content: usedChars.join(''), type },\n { content: remainingChars.join(''), type },\n ];\n}\n\n/**\n * Splits a line into multiple lines that satisfy the checkFit function.\n * @param line - Line to split\n * @param checkFit - Function to check if line fits\n * @returns Array of lines that fit\n */\nexport function splitLineToFitWidth(\n line: MarkdownLine,\n checkFit: CheckFitFunction\n): MarkdownLine[] {\n if (line.some(({ content }) => content.includes('\\n'))) {\n throw new Error('splitLineToFitWidth does not support newlines in the line');\n }\n return splitLineToFitWidthRecursion(line, checkFit);\n}\n\nfunction splitLineToFitWidthRecursion(\n words: MarkdownWord[],\n checkFit: CheckFitFunction,\n lines: MarkdownLine[] = [],\n newLine: MarkdownLine = []\n): MarkdownLine[] {\n // Return if there is nothing left to split\n if (words.length === 0) {\n // If there is a new line, add it to the lines\n if (newLine.length > 0) {\n lines.push(newLine);\n }\n return lines.length > 0 ? lines : [];\n }\n let joiner = '';\n if (words[0].content === ' ') {\n joiner = ' ';\n words.shift();\n }\n const nextWord: MarkdownWord = words.shift() ?? { content: ' ', type: 'normal' };\n const lineWithNextWord: MarkdownLine = [...newLine];\n if (joiner !== '') {\n lineWithNextWord.push({ content: joiner, type: 'normal' });\n }\n lineWithNextWord.push(nextWord);\n\n if (checkFit(lineWithNextWord)) {\n // nextWord fits, so we can add it to the new line and continue\n return splitLineToFitWidthRecursion(words, checkFit, lines, lineWithNextWord);\n }\n\n // nextWord doesn't fit, so we need to split it\n if (newLine.length > 0) {\n // There was text in newLine, so add it to lines and push nextWord back into words.\n lines.push(newLine);\n words.unshift(nextWord);\n } else if (nextWord.content) {\n // There was no text in newLine, so we need to split nextWord\n const [line, rest] = splitWordToFitWidth(checkFit, nextWord);\n lines.push([line]);\n if (rest.content) {\n words.unshift(rest);\n }\n }\n return splitLineToFitWidthRecursion(words, checkFit, lines);\n}\n", "import { select } from 'd3';\nimport type { MermaidConfig } from '../config.type.js';\nimport type { SVGGroup } from '../diagram-api/types.js';\nimport common, { hasKatex, renderKatexSanitized, sanitizeText } from '../diagrams/common/common.js';\nimport type { D3TSpanElement, D3TextElement } from '../diagrams/common/commonTypes.js';\nimport { log } from '../logger.js';\nimport {\n markdownToHTML,\n markdownToLines,\n nonMarkdownToHTML,\n nonMarkdownToLines,\n} from '../rendering-util/handle-markdown-text.js';\nimport { decodeEntities } from '../utils.js';\nimport { getIconSVG, isIconAvailable } from './icons.js';\nimport { splitLineToFitWidth } from './splitText.js';\nimport type { MarkdownLine, MarkdownWord } from './types.js';\nimport { getConfig } from '../config.js';\nimport type { D3Selection } from '../types.js';\n\nfunction applyStyle(\n dom: d3.Selection,\n styleFn?: Parameters[1]\n) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\n// We assume that nobody will want to create labels larger than 16384 pixels wide\nconst maxSafeSizeForWidth = 16384;\n\nasync function addHtmlSpan(\n element: D3Selection,\n node: { label: string; labelStyle: string; isNode: boolean },\n width: number,\n classes: string,\n addBackground = false,\n // TODO: Make config mandatory\n config: MermaidConfig = getConfig()\n) {\n const fo = element.append('foreignObject');\n // This is not the final width but used in order to make sure the foreign\n // object in firefox gets a width at all. The final width is fetched from the div\n fo.attr('width', `${Math.min(10 * width, maxSafeSizeForWidth)}px`);\n fo.attr('height', `${Math.min(10 * width, maxSafeSizeForWidth)}px`);\n\n const div = fo.append('xhtml:div');\n const sanitizedLabel = hasKatex(node.label)\n ? await renderKatexSanitized(node.label.replace(common.lineBreakRegex, '\\n'), config)\n : sanitizeText(node.label, config);\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n const span = div.append('span');\n span.html(sanitizedLabel);\n applyStyle(span, node.labelStyle);\n span.attr('class', `${labelClass} ${classes}`);\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'table-cell');\n div.style('white-space', 'nowrap');\n div.style('line-height', '1.5');\n if (width !== Number.POSITIVE_INFINITY) {\n div.style('max-width', width + 'px');\n div.style('text-align', 'center');\n }\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n if (addBackground) {\n div.attr('class', 'labelBkg');\n }\n\n let bbox = div.node()!.getBoundingClientRect();\n if (bbox.width === width) {\n div.style('display', 'table');\n div.style('white-space', 'break-spaces');\n div.style('width', width + 'px');\n bbox = div.node()!.getBoundingClientRect();\n }\n\n return fo.node()!;\n}\n\n/**\n * Creates a tspan element with the specified attributes for text positioning.\n *\n * @param textElement - The parent text element to append the tspan element.\n * @param lineIndex - The index of the current line in the structuredText array.\n * @param lineHeight - The line height value for the text.\n * @param centerText - The flag to determine if the text should be centered.\n * @returns The created tspan element.\n */\nfunction createTspan(\n textElement: D3Selection,\n lineIndex: number,\n lineHeight: number,\n centerText = false\n) {\n const tspan = textElement\n .append('tspan')\n .attr('class', 'text-outer-tspan')\n .attr('x', 0)\n .attr('y', lineIndex * lineHeight - 0.1 + 'em')\n .attr('dy', lineHeight + 'em');\n if (centerText) {\n tspan.attr('text-anchor', 'middle');\n }\n return tspan;\n}\n\nfunction computeWidthOfText(\n parentNode: D3Selection,\n lineHeight: number,\n line: MarkdownLine\n): number {\n const testElement = parentNode.append('text');\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, line);\n const textLength = testSpan.node()!.getComputedTextLength();\n testElement.remove();\n return textLength;\n}\n\nexport function computeDimensionOfText(\n parentNode: SVGGroup,\n lineHeight: number,\n text: string\n): DOMRect | undefined {\n const testElement: D3TextElement = parentNode.append('text');\n const testSpan: D3TSpanElement = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, [{ content: text, type: 'normal' }]);\n const textDimension: DOMRect | undefined = testSpan.node()?.getBoundingClientRect();\n if (textDimension) {\n testElement.remove();\n }\n return textDimension;\n}\n\n/**\n * Creates a formatted text element by breaking lines and applying styles based on\n * the given structuredText.\n *\n * @param width - The maximum allowed width of the text.\n * @param g - The parent group element to append the formatted text.\n * @param structuredText - The structured text data to format.\n * @param addBackground - Whether to add a background to the text.\n * @param centerText - The flag to determine if the text should be centered.\n */\nfunction createFormattedText(\n width: number,\n g: D3Selection,\n structuredText: MarkdownWord[][],\n addBackground = false,\n centerText = false\n) {\n const lineHeight = 1.1;\n const labelGroup = g.append('g');\n const bkg = labelGroup.insert('rect').attr('class', 'background').attr('style', 'stroke: none');\n const textElement = labelGroup.append('text').attr('y', '-10.1');\n if (centerText) {\n textElement.attr('text-anchor', 'middle');\n }\n let lineIndex = 0;\n for (const line of structuredText) {\n /**\n * Preprocess raw string content of line data\n * Creating an array of strings pre-split to satisfy width limit\n */\n const checkWidth = (line: MarkdownLine) =>\n computeWidthOfText(labelGroup, lineHeight, line) <= width;\n const linesUnderWidth = checkWidth(line) ? [line] : splitLineToFitWidth(line, checkWidth);\n /** Add each prepared line as a tspan to the parent node */\n for (const preparedLine of linesUnderWidth) {\n const tspan = createTspan(textElement, lineIndex, lineHeight, centerText);\n updateTextContentAndStyles(tspan, preparedLine);\n lineIndex++;\n }\n }\n if (addBackground) {\n const bbox = textElement.node()!.getBBox();\n const padding = 2;\n bkg\n .attr('x', bbox.x - padding)\n .attr('y', bbox.y - padding)\n .attr('width', bbox.width + 2 * padding)\n .attr('height', bbox.height + 2 * padding);\n\n return labelGroup.node()!;\n } else {\n return textElement.node()!;\n }\n}\n\n/**\n * Our HTML code uses `.innerHTML` to apply the text,\n * however our plain text SVG code uses `.textContent` to apply the text,\n * which means that HTML entities are not decoded in SVG text.\n *\n * This means that we need to decode any HTML entities that `sanitizeText` encodes.\n *\n * TODO: If we're using `.textContent`, we can probably skip sanitization entirely.\n */\nfunction decodeHTMLEntities(text: string): string {\n // We only need to decode the few entries that `sanitizeText` encodes.\n const regex = /&(amp|lt|gt);/g;\n return text.replace(regex, (match, entity) => {\n switch (entity) {\n case 'amp':\n return '&';\n case 'lt':\n return '<';\n case 'gt':\n return '>';\n default:\n return match;\n }\n });\n}\n\n/**\n * Updates the text content and styles of the given tspan element based on the\n * provided wrappedLine data.\n *\n * @param tspan - The tspan element to update.\n * @param wrappedLine - The line data to apply to the tspan element.\n */\nfunction updateTextContentAndStyles(\n tspan: D3Selection,\n wrappedLine: MarkdownWord[]\n) {\n tspan.text('');\n\n wrappedLine.forEach((word, index) => {\n const innerTspan = tspan\n .append('tspan')\n .attr('font-style', word.type === 'em' ? 'italic' : 'normal')\n .attr('class', 'text-inner-tspan')\n .attr('font-weight', word.type === 'strong' ? 'bold' : 'normal');\n if (index === 0) {\n innerTspan.text(decodeHTMLEntities(word.content));\n } else {\n // TODO: check what joiner to use.\n innerTspan.text(' ' + decodeHTMLEntities(word.content));\n }\n });\n}\n\n/**\n * Convert fontawesome labels into fontawesome icons by using a regex pattern\n * @param text - The raw string to convert\n * @param config - Mermaid config\n * @returns string with fontawesome icons as svg if the icon is registered otherwise as i tags\n */\nexport async function replaceIconSubstring(\n text: string,\n // TODO: Make config mandatory\n config: MermaidConfig = {}\n): Promise {\n const pendingReplacements: Promise[] = [];\n // cspell: disable-next-line\n text.replace(/(fa[bklrs]?):fa-([\\w-]+)/g, (fullMatch, prefix, iconName) => {\n pendingReplacements.push(\n (async () => {\n const registeredIconName = `${prefix}:${iconName}`;\n if (await isIconAvailable(registeredIconName)) {\n return await getIconSVG(registeredIconName, undefined, { class: 'label-icon' });\n } else {\n return ``;\n }\n })()\n );\n return fullMatch;\n });\n\n const replacements = await Promise.all(pendingReplacements);\n // cspell: disable-next-line\n return text.replace(/(fa[bklrs]?):fa-([\\w-]+)/g, () => replacements.shift() ?? '');\n}\n\n// Note when using from flowcharts converting the API isNode means classes should be set accordingly. When using htmlLabels => to set classes to 'nodeLabel' when isNode=true otherwise 'edgeLabel'\n// When not using htmlLabels => to set classes to 'title-row' when isTitle=true otherwise 'title-row'\n/**\n * Creates a text element within the given SVG group element.\n *\n * If `markdown` is `true`, basic markdown syntax will be processed.\n * Otherwise, if:\n * - `useHtmlLabels` is `true`, the text will be sanitized and set in `` as HTML.\n * - `useHtmlLabels` is `false`, the text will be added as a `` element using `.text`\n *\n * @param el - The parent SVG `` element to append the text element to.\n * @param text - The text content to be displayed.\n * @param options - Optional options\n * @param config - Mermaid configuration object\n * @returns The created text element, either a `` or a `` element depending on the options.\n */\nexport const createText = async (\n el: D3Selection,\n text = '',\n {\n style = '',\n isTitle = false,\n classes = '',\n useHtmlLabels = true,\n markdown = true,\n isNode = true,\n /**\n * The width to wrap the text within. Set to `Number.POSITIVE_INFINITY` for no wrapping.\n */\n width = 200,\n addSvgBackground = false,\n } = {},\n config?: MermaidConfig\n) => {\n log.debug(\n 'XYZ createText',\n text,\n style,\n isTitle,\n classes,\n useHtmlLabels,\n isNode,\n 'addSvgBackground: ',\n addSvgBackground\n );\n if (useHtmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n\n const htmlText = markdown ? markdownToHTML(text, config) : nonMarkdownToHTML(text);\n const decodedReplacedText = await replaceIconSubstring(decodeEntities(htmlText), config);\n\n //for Katex the text could contain escaped characters, \\\\relax that should be transformed to \\relax\n const inputForKatex = text.replace(/\\\\\\\\/g, '\\\\');\n\n const node = {\n isNode,\n label: hasKatex(text) ? inputForKatex : decodedReplacedText,\n labelStyle: style.replace('fill:', 'color:'),\n };\n const vertexNode = await addHtmlSpan(el, node, width, classes, addSvgBackground, config);\n return vertexNode;\n } else {\n //sometimes the user might add br tags with 1 or more spaces in between, so we need to replace them with
    \n const sanitizeBR = decodeEntities(text.replace(//g, '
    '));\n const structuredText = markdown\n ? markdownToLines(sanitizeBR.replace('
    ', '
    '), config)\n : nonMarkdownToLines(sanitizeBR);\n const svgLabel = createFormattedText(\n width,\n el,\n structuredText,\n text ? addSvgBackground : false,\n !isNode\n );\n if (isNode) {\n if (/stroke:/.exec(style)) {\n style = style.replace('stroke:', 'lineColor:');\n }\n\n const nodeLabelTextStyle = style\n .replace(/stroke:[^;]+;?/g, '')\n .replace(/stroke-width:[^;]+;?/g, '')\n .replace(/fill:[^;]+;?/g, '')\n .replace(/color:/g, 'fill:');\n select(svgLabel).attr('style', nodeLabelTextStyle);\n // svgLabel.setAttribute('style', style);\n } else {\n //On style, assume `stroke`, `stroke-width` are used for edge path, so remove them\n // remove `fill`\n // use `background` as `fill` for label rect,\n\n const edgeLabelRectStyle = style\n .replace(/stroke:[^;]+;?/g, '')\n .replace(/stroke-width:[^;]+;?/g, '')\n .replace(/fill:[^;]+;?/g, '')\n .replace(/background:/g, 'fill:');\n select(svgLabel)\n .select('rect')\n .attr('style', edgeLabelRectStyle.replace(/background:/g, 'fill:'));\n\n // for text, update fill color with `color`\n const edgeLabelTextStyle = style\n .replace(/stroke:[^;]+;?/g, '')\n .replace(/stroke-width:[^;]+;?/g, '')\n .replace(/fill:[^;]+;?/g, '')\n .replace(/color:/g, 'fill:');\n select(svgLabel).select('text').attr('style', edgeLabelTextStyle);\n }\n if (isTitle) {\n // I can't actually see the title-row/row class being used anywhere, but keeping it for backward compatibility\n select(svgLabel).selectAll('tspan.text-outer-tspan').classed('title-row', true);\n } else {\n select(svgLabel).selectAll('tspan.text-outer-tspan').classed('row', true);\n }\n return svgLabel;\n }\n};\n"], + "mappings": "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", + "names": ["defaultIconDimensions", "defaultIconTransformations", "defaultIconProps", "defaultExtendedIconProps", "defaultIconSizeCustomisations", "defaultIconCustomisations", "defaultIconTransformations", "stringToIcon", "__name", "value", "validate", "allowSimpleName", "provider", "colonSeparated", "name$1", "prefix", "result", "validateIconName", "name", "dashSeparated", "icon", "mergeIconTransformations", "obj1", "obj2", "result", "rotate", "__name", "mergeIconData", "parent", "child", "result", "mergeIconTransformations", "key", "defaultExtendedIconProps", "defaultIconTransformations", "__name", "getIconsTree", "data", "names", "icons", "aliases", "resolved", "resolve", "name", "parent", "value", "__name", "internalGetIconData", "data", "name", "tree", "icons", "aliases", "currentProps", "parse", "name$1", "mergeIconData", "__name", "getIconData", "getIconsTree", "unitsSplit", "unitsTest", "calculateSize", "size", "ratio", "precision", "oldParts", "newParts", "code", "isNumber", "num", "__name", "splitSVGDefs", "content", "tag", "defs", "index", "start", "end", "endEnd", "__name", "mergeDefsAndContent", "wrapSVGContent", "body", "split", "isUnsetKeyword", "__name", "value", "iconToSVG", "icon", "customisations", "fullIcon", "defaultIconProps", "fullCustomisations", "defaultIconCustomisations", "box", "body", "props", "transformations", "hFlip", "vFlip", "rotation", "tempValue", "wrapSVGContent", "customisationsWidth", "customisationsHeight", "boxWidth", "boxHeight", "width", "height", "calculateSize", "attributes", "setAttr", "prop", "viewBox", "regex", "randomPrefix", "counter", "replaceIDs", "body", "prefix", "ids", "match", "suffix", "id", "newID", "escapedID", "__name", "iconToHTML", "body", "attributes", "renderAttribsHTML", "attr", "__name", "unknownIcon", "iconsStore", "loaderStore", "registerIconPacks", "__name", "iconLoaders", "iconLoader", "log", "getRegisteredIconData", "iconName", "fallbackPrefix", "data", "stringToIcon", "prefix", "icons", "loader", "e", "iconData", "getIconData", "isIconAvailable", "getIconSVG", "customisations", "extraAttributes", "renderData", "iconToSVG", "svg", "iconToHTML", "replaceIDs", "sanitizeText", "getConfig", "dedent", "templ", "values", "_i", "strings", "indentLengths", "arr", "str", "matches", "match", "_a", "_b", "pattern_1", "string", "value", "i", "endentations", "endentation", "indentedValue", "__name", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "noopTest", "__name", "edit", "regex", "opt", "source", "obj", "name", "val", "valSource", "other", "bull", "indent", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheadingCore", "lheading", "lheadingGfm", "_paragraph", "blockText", "_blockLabel", "def", "list", "_tag", "_comment", "html", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "blockPedantic", "escape", "inlineCode", "br", "inlineText", "_punctuation", "_punctuationOrSpace", "_notPunctuationOrSpace", "punctuation", "_punctuationGfmStrongEm", "_punctuationOrSpaceGfmStrongEm", "_notPunctuationOrSpaceGfmStrongEm", "blockSkip", "emStrongLDelimCore", "emStrongLDelim", "emStrongLDelimGfm", "emStrongRDelimAstCore", "emStrongRDelimAst", "emStrongRDelimAstGfm", "emStrongRDelimUnd", "anyPunctuation", "autolink", "_inlineComment", "tag", "_inlineLabel", "link", "reflink", "nolink", "reflinkSearch", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "escapeReplacements", "getEscapeReplacement", "ch", "encode", "cleanUrl", "href", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "findClosingBracket", "b", "level", "outputLink", "cap", "raw", "lexer", "rules", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "src", "trimmed", "lines", "tokens", "inBlockquote", "currentLines", "currentRaw", "currentText", "top", "lastToken", "oldToken", "newText", "newToken", "isordered", "itemRegex", "endsWithBlankLine", "endEarly", "itemContents", "line", "t", "nextLine", "blankLine", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "htmlBeginRegex", "rawLine", "nextLineWithoutTabs", "istask", "ischecked", "lastItem", "spacers", "hasMultipleLineBreaks", "headers", "aligns", "rows", "item", "align", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "_Lexer", "__Lexer", "next", "lastParagraphClipped", "extTokenizer", "cutSrc", "startIndex", "tempSrc", "tempStart", "getStartIndex", "errMsg", "keepPrevChar", "_Renderer", "lang", "langString", "code", "depth", "ordered", "start", "body", "j", "type", "startAttr", "itemBody", "checkbox", "checked", "header", "k", "content", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "anyToken", "genericToken", "ret", "textToken", "renderer", "_Hooks", "markdown", "Marked", "args", "callback", "values", "tableToken", "listToken", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "blockType", "origOpt", "throwError", "parser", "e", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "preprocessMarkdown", "markdown", "markdownAutoWrap", "withoutMultipleNewlines", "dedent", "__name", "nonMarkdownToLines", "nonMarkdownText", "line", "word", "markdownToLines", "config", "preprocessedMarkdown", "nodes", "d", "lines", "currentLine", "processNode", "node", "parentType", "textLine", "index", "contentNode", "treeNode", "nonMarkdownToHTML", "text", "markdownToHTML", "output", "log", "splitTextToChars", "text", "s", "__name", "splitWordToFitWidth", "checkFit", "word", "characters", "splitTextToChars", "splitWordToFitWidthRecursion", "__name", "usedChars", "remainingChars", "type", "nextChar", "rest", "newWord", "splitLineToFitWidth", "line", "content", "splitLineToFitWidthRecursion", "words", "lines", "newLine", "joiner", "nextWord", "lineWithNextWord", "applyStyle", "dom", "styleFn", "__name", "maxSafeSizeForWidth", "addHtmlSpan", "element", "node", "width", "classes", "addBackground", "config", "getConfig", "fo", "div", "sanitizedLabel", "hasKatex", "renderKatexSanitized", "common_default", "sanitizeText", "labelClass", "span", "bbox", "createTspan", "textElement", "lineIndex", "lineHeight", "centerText", "tspan", "computeWidthOfText", "parentNode", "line", "testElement", "testSpan", "updateTextContentAndStyles", "textLength", "computeDimensionOfText", "text", "textDimension", "createFormattedText", "g", "structuredText", "labelGroup", "bkg", "checkWidth", "linesUnderWidth", "splitLineToFitWidth", "preparedLine", "padding", "decodeHTMLEntities", "regex", "match", "entity", "wrappedLine", "word", "index", "innerTspan", "replaceIconSubstring", "pendingReplacements", "fullMatch", "prefix", "iconName", "registeredIconName", "isIconAvailable", "getIconSVG", "replacements", "createText", "el", "style", "isTitle", "useHtmlLabels", "markdown", "isNode", "addSvgBackground", "log", "htmlText", "markdownToHTML", "nonMarkdownToHTML", "decodedReplacedText", "decodeEntities", "inputForKatex", "sanitizeBR", "markdownToLines", "nonMarkdownToLines", "svgLabel", "nodeLabelTextStyle", "select_default", "edgeLabelRectStyle", "edgeLabelTextStyle"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-J5EP6P6S.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-J5EP6P6S.mjs new file mode 100644 index 0000000..545e693 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-J5EP6P6S.mjs @@ -0,0 +1 @@ +import{a as e,b as o,c as n,d as a,e as u,g as d,j as l,s,t as G}from"./chunk-4R4BOZG6.mjs";import{a as t}from"./chunk-AQ6EADP3.mjs";var p=class extends G{static{t(this,"GitGraphTokenBuilder")}static{e(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},h={parser:{TokenBuilder:e(()=>new p,"TokenBuilder"),ValueConverter:e(()=>new s,"ValueConverter")}};function m(c=u){let r=a(n(c),d),i=a(o({shared:r}),l,h);return r.ServiceRegistry.register(i),{shared:r,GitGraph:i}}t(m,"createGitGraphServices");e(m,"createGitGraphServices");export{h as a,m as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-J5EP6P6S.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-J5EP6P6S.mjs.map new file mode 100644 index 0000000..4bf64a9 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-J5EP6P6S.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-UIBZB4QT.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n EmptyFileSystem,\n GitGraphGrammarGeneratedModule,\n MermaidGeneratedSharedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/gitGraph/tokenBuilder.ts\nvar GitGraphTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"GitGraphTokenBuilder\");\n }\n constructor() {\n super([\"gitGraph\"]);\n }\n};\n\n// src/language/gitGraph/module.ts\nvar GitGraphModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new GitGraphTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createGitGraphServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const GitGraph = inject(\n createDefaultCoreModule({ shared }),\n GitGraphGrammarGeneratedModule,\n GitGraphModule\n );\n shared.ServiceRegistry.register(GitGraph);\n return { shared, GitGraph };\n}\n__name(createGitGraphServices, \"createGitGraphServices\");\n\nexport {\n GitGraphModule,\n createGitGraphServices\n};\n"], + "mappings": "qIAcA,IAAIA,EAAuB,cAAcC,CAA4B,CAdrE,MAcqE,CAAAC,EAAA,6BACnE,MAAO,CACLA,EAAO,KAAM,sBAAsB,CACrC,CACA,aAAc,CACZ,MAAM,CAAC,UAAU,CAAC,CACpB,CACF,EAGIC,EAAiB,CACnB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAwB,cAAc,EACrF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAuBC,EAAUC,EAAiB,CACzD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAWH,EACfI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAQ,EACjC,CAAE,OAAAJ,EAAQ,SAAAI,CAAS,CAC5B,CAZSV,EAAAG,EAAA,0BAaTH,EAAOG,EAAwB,wBAAwB", + "names": ["GitGraphTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "GitGraphModule", "CommonValueConverter", "createGitGraphServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "GitGraph", "createDefaultCoreModule", "GitGraphGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-JIN56HTB.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-JIN56HTB.mjs deleted file mode 100644 index ef69d1a..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-JIN56HTB.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as e}from"./chunk-VELTKBKT.mjs";var Sr=typeof global=="object"&&global&&global.Object===Object&&global,R=Sr;var Ir=typeof self=="object"&&self&&self.Object===Object&&self,Mr=R||Ir||Function("return this")(),d=Mr;var Er=d.Symbol,O=Er;var it=Object.prototype,Fr=it.hasOwnProperty,Lr=it.toString,F=O?O.toStringTag:void 0;function Dr(t){var r=Fr.call(t,F),o=t[F];try{t[F]=void 0;var a=!0}catch{}var n=Lr.call(t);return a&&(r?t[F]=o:delete t[F]),n}e(Dr,"getRawTag");var ft=Dr;var Gr=Object.prototype,Nr=Gr.toString;function zr(t){return Nr.call(t)}e(zr,"objectToString");var pt=zr;var Ur="[object Null]",Rr="[object Undefined]",ut=O?O.toStringTag:void 0;function Hr(t){return t==null?t===void 0?Rr:Ur:ut&&ut in Object(t)?ft(t):pt(t)}e(Hr,"baseGetTag");var y=Hr;function Br(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}e(Br,"isObject");var m=Br;var Vr="[object AsyncFunction]",Kr="[object Function]",qr="[object GeneratorFunction]",$r="[object Proxy]";function Xr(t){if(!m(t))return!1;var r=y(t);return r==Kr||r==qr||r==Vr||r==$r}e(Xr,"isFunction");var T=Xr;var Jr=d["__core-js_shared__"],H=Jr;var st=(function(){var t=/[^.]+$/.exec(H&&H.keys&&H.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();function Wr(t){return!!st&&st in t}e(Wr,"isMasked");var mt=Wr;var Yr=Function.prototype,Zr=Yr.toString;function Qr(t){if(t!=null){try{return Zr.call(t)}catch{}try{return t+""}catch{}}return""}e(Qr,"toSource");var lt=Qr;var kr=/[\\^$.*+?()[\]{}|]/g,te=/^\[object .+?Constructor\]$/,re=Function.prototype,ee=Object.prototype,oe=re.toString,ae=ee.hasOwnProperty,ne=RegExp("^"+oe.call(ae).replace(kr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ie(t){if(!m(t)||mt(t))return!1;var r=T(t)?ne:te;return r.test(lt(t))}e(ie,"baseIsNative");var ct=ie;function fe(t,r){return t?.[r]}e(fe,"getValue");var dt=fe;function pe(t,r){var o=dt(t,r);return ct(o)?o:void 0}e(pe,"getNative");var j=pe;var ue=j(Object,"create"),g=ue;function se(){this.__data__=g?g(null):{},this.size=0}e(se,"hashClear");var ht=se;function me(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}e(me,"hashDelete");var gt=me;var le="__lodash_hash_undefined__",ce=Object.prototype,de=ce.hasOwnProperty;function he(t){var r=this.__data__;if(g){var o=r[t];return o===le?void 0:o}return de.call(r,t)?r[t]:void 0}e(he,"hashGet");var yt=he;var ge=Object.prototype,ye=ge.hasOwnProperty;function be(t){var r=this.__data__;return g?r[t]!==void 0:ye.call(r,t)}e(be,"hashHas");var bt=be;var xe="__lodash_hash_undefined__";function ve(t,r){var o=this.__data__;return this.size+=this.has(t)?0:1,o[t]=g&&r===void 0?xe:r,this}e(ve,"hashSet");var xt=ve;function A(t){var r=-1,o=t==null?0:t.length;for(this.clear();++r-1}e(Pe,"listCacheHas");var Tt=Pe;function Se(t,r){var o=this.__data__,a=x(o,t);return a<0?(++this.size,o.push([t,r])):o[a][1]=r,this}e(Se,"listCacheSet");var jt=Se;function C(t){var r=-1,o=t==null?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=yo}e(bo,"isLength");var q=bo;function xo(t){return t!=null&&q(t.length)&&!T(t)}e(xo,"isArrayLike");var M=xo;function vo(t){return h(t)&&M(t)}e(vo,"isArrayLikeObject");var kt=vo;function _o(){return!1}e(_o,"stubFalse");var tr=_o;var or=typeof exports=="object"&&exports&&!exports.nodeType&&exports,rr=or&&typeof module=="object"&&module&&!module.nodeType&&module,Oo=rr&&rr.exports===or,er=Oo?d.Buffer:void 0,To=er?er.isBuffer:void 0,jo=To||tr,$=jo;var Ao="[object Object]",Co=Function.prototype,wo=Object.prototype,ar=Co.toString,Po=wo.hasOwnProperty,So=ar.call(Object);function Io(t){if(!h(t)||y(t)!=Ao)return!1;var r=V(t);if(r===null)return!0;var o=Po.call(r,"constructor")&&r.constructor;return typeof o=="function"&&o instanceof o&&ar.call(o)==So}e(Io,"isPlainObject");var nr=Io;var Mo="[object Arguments]",Eo="[object Array]",Fo="[object Boolean]",Lo="[object Date]",Do="[object Error]",Go="[object Function]",No="[object Map]",zo="[object Number]",Uo="[object Object]",Ro="[object RegExp]",Ho="[object Set]",Bo="[object String]",Vo="[object WeakMap]",Ko="[object ArrayBuffer]",qo="[object DataView]",$o="[object Float32Array]",Xo="[object Float64Array]",Jo="[object Int8Array]",Wo="[object Int16Array]",Yo="[object Int32Array]",Zo="[object Uint8Array]",Qo="[object Uint8ClampedArray]",ko="[object Uint16Array]",ta="[object Uint32Array]",u={};u[$o]=u[Xo]=u[Jo]=u[Wo]=u[Yo]=u[Zo]=u[Qo]=u[ko]=u[ta]=!0;u[Mo]=u[Eo]=u[Ko]=u[Fo]=u[qo]=u[Lo]=u[Do]=u[Go]=u[No]=u[zo]=u[Uo]=u[Ro]=u[Ho]=u[Bo]=u[Vo]=!1;function ra(t){return h(t)&&q(t.length)&&!!u[y(t)]}e(ra,"baseIsTypedArray");var ir=ra;function ea(t){return function(r){return t(r)}}e(ea,"baseUnary");var fr=ea;var pr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,z=pr&&typeof module=="object"&&module&&!module.nodeType&&module,oa=z&&z.exports===pr,ot=oa&&R.process,aa=(function(){try{var t=z&&z.require&&z.require("util").types;return t||ot&&ot.binding&&ot.binding("util")}catch{}})(),at=aa;var ur=at&&at.isTypedArray,na=ur?fr(ur):ir,X=na;function ia(t,r){if(!(r==="constructor"&&typeof t[r]=="function")&&r!="__proto__")return t[r]}e(ia,"safeGet");var U=ia;var fa=Object.prototype,pa=fa.hasOwnProperty;function ua(t,r,o){var a=t[r];(!(pa.call(t,r)&&b(a,o))||o===void 0&&!(r in t))&&I(t,r,o)}e(ua,"assignValue");var sr=ua;function sa(t,r,o,a){var n=!o;o||(o={});for(var f=-1,p=r.length;++f-1&&t%1==0&&t0){if(++r>=Sa)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}e(Ea,"shortOut");var jr=Ea;var Fa=jr(Tr),Ar=Fa;function La(t,r){return Ar(Or(t,r,Y),t+"")}e(La,"baseRest");var Cr=La;function Da(t,r,o){if(!m(o))return!1;var a=typeof r;return(a=="number"?M(o)&&J(r,o.length):a=="string"&&r in o)?b(o[r],t):!1}e(Da,"isIterateeCall");var wr=Da;function Ga(t){return Cr(function(r,o){var a=-1,n=o.length,f=n>1?o[n-1]:void 0,p=n>2?o[2]:void 0;for(f=t.length>3&&typeof f=="function"?(n--,f):void 0,p&&wr(o[0],o[1],p)&&(f=n<3?void 0:f,n=1),r=Object(r);++a true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n", "import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n", "import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n", "import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n", "import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n", "import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n", "import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n", "import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n", "import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n", "import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n", "import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n", "import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n"], - "mappings": "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", - "names": ["freeGlobal", "freeGlobal_default", "freeSelf", "root", "freeGlobal_default", "root_default", "Symbol", "root_default", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "Symbol_default", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "__name", "getRawTag_default", "objectProto", "nativeObjectToString", "objectToString", "value", "__name", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag", "Symbol_default", "baseGetTag", "value", "getRawTag_default", "objectToString_default", "__name", "baseGetTag_default", "isObject", "value", "type", "__name", "isObject_default", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "value", "isObject_default", "tag", "baseGetTag_default", "__name", "isFunction_default", "coreJsData", "root_default", "coreJsData_default", "maskSrcKey", "uid", "coreJsData_default", "isMasked", "func", "__name", "isMasked_default", "funcProto", "funcToString", "toSource", "func", "__name", "toSource_default", "reRegExpChar", "reIsHostCtor", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "reIsNative", "baseIsNative", "value", "isObject_default", "isMasked_default", "pattern", "isFunction_default", "toSource_default", "__name", "baseIsNative_default", "getValue", "object", "key", "__name", "getValue_default", "getNative", "object", "key", "value", "getValue_default", "baseIsNative_default", "__name", "getNative_default", "nativeCreate", "getNative_default", "nativeCreate_default", "hashClear", "nativeCreate_default", "__name", "hashClear_default", "hashDelete", "key", "result", "__name", "hashDelete_default", "HASH_UNDEFINED", "objectProto", "hasOwnProperty", "hashGet", "key", "data", "nativeCreate_default", "result", "__name", "hashGet_default", "objectProto", "hasOwnProperty", "hashHas", "key", "data", "nativeCreate_default", "__name", "hashHas_default", "HASH_UNDEFINED", "hashSet", "key", "value", "data", "nativeCreate_default", "__name", "hashSet_default", "Hash", "entries", "index", "length", "entry", "__name", "hashClear_default", "hashDelete_default", "hashGet_default", "hashHas_default", "hashSet_default", "Hash_default", "listCacheClear", "__name", "listCacheClear_default", "eq", "value", "other", "__name", "eq_default", "assocIndexOf", "array", "key", "length", "eq_default", "__name", "assocIndexOf_default", "arrayProto", "splice", "listCacheDelete", "key", "data", "index", "assocIndexOf_default", "lastIndex", "__name", "listCacheDelete_default", "listCacheGet", "key", "data", "index", "assocIndexOf_default", "__name", "listCacheGet_default", "listCacheHas", "key", "assocIndexOf_default", "__name", "listCacheHas_default", "listCacheSet", "key", "value", "data", "index", "assocIndexOf_default", "__name", "listCacheSet_default", "ListCache", "entries", "index", "length", "entry", "__name", "listCacheClear_default", "listCacheDelete_default", "listCacheGet_default", "listCacheHas_default", "listCacheSet_default", "ListCache_default", "Map", "getNative_default", "root_default", "Map_default", "mapCacheClear", "Hash_default", "Map_default", "ListCache_default", "__name", "mapCacheClear_default", "isKeyable", "value", "type", "__name", "isKeyable_default", "getMapData", "map", "key", "data", "isKeyable_default", "__name", "getMapData_default", "mapCacheDelete", "key", "result", "getMapData_default", "__name", "mapCacheDelete_default", "mapCacheGet", "key", "getMapData_default", "__name", "mapCacheGet_default", "mapCacheHas", "key", "getMapData_default", "__name", "mapCacheHas_default", "mapCacheSet", "key", "value", "data", "getMapData_default", "size", "__name", "mapCacheSet_default", "MapCache", "entries", "index", "length", "entry", "__name", "mapCacheClear_default", "mapCacheDelete_default", "mapCacheGet_default", "mapCacheHas_default", "mapCacheSet_default", "MapCache_default", "FUNC_ERROR_TEXT", "memoize", "func", "resolver", "memoized", "__name", "args", "key", "cache", "result", "MapCache_default", "memoize_default", "constant", "value", "__name", "constant_default", "stackClear", "ListCache_default", "__name", "stackClear_default", "stackDelete", "key", "data", "result", "__name", "stackDelete_default", "stackGet", "key", "__name", "stackGet_default", "stackHas", "key", "__name", "stackHas_default", "LARGE_ARRAY_SIZE", "stackSet", "key", "value", "data", "ListCache_default", "pairs", "Map_default", "MapCache_default", "__name", "stackSet_default", "Stack", "entries", "data", "ListCache_default", "__name", "stackClear_default", "stackDelete_default", "stackGet_default", "stackHas_default", "stackSet_default", "Stack_default", "defineProperty", "func", "getNative_default", "defineProperty_default", "baseAssignValue", "object", "key", "value", "defineProperty_default", "__name", "baseAssignValue_default", "assignMergeValue", "object", "key", "value", "eq_default", "baseAssignValue_default", "__name", "assignMergeValue_default", "createBaseFor", "fromRight", "object", "iteratee", "keysFunc", "index", "iterable", "props", "length", "key", "__name", "createBaseFor_default", "baseFor", "createBaseFor_default", "baseFor_default", "freeExports", "freeModule", "moduleExports", "Buffer", "root_default", "allocUnsafe", "cloneBuffer", "buffer", "isDeep", "length", "result", "__name", "cloneBuffer_default", "Uint8Array", "root_default", "Uint8Array_default", "cloneArrayBuffer", "arrayBuffer", "result", "Uint8Array_default", "__name", "cloneArrayBuffer_default", "cloneTypedArray", "typedArray", "isDeep", "buffer", "cloneArrayBuffer_default", "__name", "cloneTypedArray_default", "copyArray", "source", "array", "index", "length", "__name", "copyArray_default", "objectCreate", "baseCreate", "object", "__name", "proto", "isObject_default", "result", "baseCreate_default", "overArg", "func", "transform", "arg", "__name", "overArg_default", "getPrototype", "overArg_default", "getPrototype_default", "objectProto", "isPrototype", "value", "Ctor", "proto", "__name", "isPrototype_default", "initCloneObject", "object", "isPrototype_default", "baseCreate_default", "getPrototype_default", "__name", "initCloneObject_default", "isObjectLike", "value", "__name", "isObjectLike_default", "argsTag", "baseIsArguments", "value", "isObjectLike_default", "baseGetTag_default", "__name", "baseIsArguments_default", "objectProto", "hasOwnProperty", "propertyIsEnumerable", "isArguments", "baseIsArguments_default", "value", "isObjectLike_default", "isArguments_default", "isArray", "isArray_default", "MAX_SAFE_INTEGER", "isLength", "value", "__name", "isLength_default", "isArrayLike", "value", "isLength_default", "isFunction_default", "__name", "isArrayLike_default", "isArrayLikeObject", "value", "isObjectLike_default", "isArrayLike_default", "__name", "isArrayLikeObject_default", "stubFalse", "__name", "stubFalse_default", "freeExports", "freeModule", "moduleExports", "Buffer", "root_default", "nativeIsBuffer", "isBuffer", "stubFalse_default", "isBuffer_default", "objectTag", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "objectCtorString", "isPlainObject", "value", "isObjectLike_default", "baseGetTag_default", "proto", "getPrototype_default", "Ctor", "__name", "isPlainObject_default", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "value", "isObjectLike_default", "isLength_default", "baseGetTag_default", "__name", "baseIsTypedArray_default", "baseUnary", "func", "value", "__name", "baseUnary_default", "freeExports", "freeModule", "moduleExports", "freeProcess", "freeGlobal_default", "nodeUtil", "types", "nodeUtil_default", "nodeIsTypedArray", "nodeUtil_default", "isTypedArray", "baseUnary_default", "baseIsTypedArray_default", "isTypedArray_default", "safeGet", "object", "key", "__name", "safeGet_default", "objectProto", "hasOwnProperty", "assignValue", "object", "key", "value", "objValue", "eq_default", "baseAssignValue_default", "__name", "assignValue_default", "copyObject", "source", "props", "object", "customizer", "isNew", "index", "length", "key", "newValue", "baseAssignValue_default", "assignValue_default", "__name", "copyObject_default", "baseTimes", "n", "iteratee", "index", "result", "__name", "baseTimes_default", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "value", "length", "type", "__name", "isIndex_default", "objectProto", "hasOwnProperty", "arrayLikeKeys", "value", "inherited", "isArr", "isArray_default", "isArg", "isArguments_default", "isBuff", "isBuffer_default", "isType", "isTypedArray_default", "skipIndexes", "result", "baseTimes_default", "length", "key", "isIndex_default", "__name", "arrayLikeKeys_default", "nativeKeysIn", "object", "result", "key", "__name", "nativeKeysIn_default", "objectProto", "hasOwnProperty", "baseKeysIn", "object", "isObject_default", "nativeKeysIn_default", "isProto", "isPrototype_default", "result", "key", "__name", "baseKeysIn_default", "keysIn", "object", "isArrayLike_default", "arrayLikeKeys_default", "baseKeysIn_default", "__name", "keysIn_default", "toPlainObject", "value", "copyObject_default", "keysIn_default", "__name", "toPlainObject_default", "baseMergeDeep", "object", "source", "key", "srcIndex", "mergeFunc", "customizer", "stack", "objValue", "safeGet_default", "srcValue", "stacked", "assignMergeValue_default", "newValue", "isCommon", "isArr", "isArray_default", "isBuff", "isBuffer_default", "isTyped", "isTypedArray_default", "isArrayLikeObject_default", "copyArray_default", "cloneBuffer_default", "cloneTypedArray_default", "isPlainObject_default", "isArguments_default", "toPlainObject_default", "isObject_default", "isFunction_default", "initCloneObject_default", "__name", "baseMergeDeep_default", "baseMerge", "object", "source", "srcIndex", "customizer", "stack", "baseFor_default", "srcValue", "key", "Stack_default", "isObject_default", "baseMergeDeep_default", "newValue", "safeGet_default", "assignMergeValue_default", "keysIn_default", "__name", "baseMerge_default", "identity", "value", "__name", "identity_default", "apply", "func", "thisArg", "args", "__name", "apply_default", "nativeMax", "overRest", "func", "start", "transform", "args", "index", "length", "array", "otherArgs", "apply_default", "__name", "overRest_default", "baseSetToString", "defineProperty_default", "func", "string", "constant_default", "identity_default", "baseSetToString_default", "HOT_COUNT", "HOT_SPAN", "nativeNow", "shortOut", "func", "count", "lastCalled", "stamp", "remaining", "__name", "shortOut_default", "setToString", "shortOut_default", "baseSetToString_default", "setToString_default", "baseRest", "func", "start", "setToString_default", "overRest_default", "identity_default", "__name", "baseRest_default", "isIterateeCall", "value", "index", "object", "isObject_default", "type", "isArrayLike_default", "isIndex_default", "eq_default", "__name", "isIterateeCall_default", "createAssigner", "assigner", "baseRest_default", "object", "sources", "index", "length", "customizer", "guard", "isIterateeCall_default", "source", "__name", "createAssigner_default", "merge", "createAssigner_default", "object", "source", "srcIndex", "baseMerge_default", "merge_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-AEOMTBSW.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs similarity index 71% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-AEOMTBSW.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs index 9172689..d3a0cd6 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-AEOMTBSW.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs @@ -1 +1 @@ -import{a as r}from"./chunk-VELTKBKT.mjs";function c(i,e){i.accDescr&&e.setAccDescription?.(i.accDescr),i.accTitle&&e.setAccTitle?.(i.accTitle),i.title&&e.setDiagramTitle?.(i.title)}r(c,"populateCommonDb");export{c as a}; +import{a as r}from"./chunk-AQ6EADP3.mjs";function c(i,e){i.accDescr&&e.setAccDescription?.(i.accDescr),i.accTitle&&e.setAccTitle?.(i.accTitle),i.title&&e.setDiagramTitle?.(i.title)}r(c,"populateCommonDb");export{c as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-AEOMTBSW.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-AEOMTBSW.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-JVPIJFVP.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-JVPIJFVP.mjs deleted file mode 100644 index 8c22cb6..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-JVPIJFVP.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as n,b as s,c as o,d as u,e as v,f as e,g as d,l as c,o as l,q as m}from"./chunk-GAX3EE6F.mjs";import{a as t}from"./chunk-VELTKBKT.mjs";var C=class extends m{static{t(this,"PieTokenBuilder")}static{e(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},P=class extends l{static{t(this,"PieValueConverter")}static{e(this,"PieValueConverter")}runCustomConverter(a,r,i){if(a.name==="PIE_SECTION_LABEL")return r.replace(/"/g,"").trim()}},p={parser:{TokenBuilder:e(()=>new C,"TokenBuilder"),ValueConverter:e(()=>new P,"ValueConverter")}};function M(a=u){let r=o(s(a),d),i=o(n({shared:r}),c,p);return r.ServiceRegistry.register(i),{shared:r,Pie:i}}t(M,"createPieServices");e(M,"createPieServices");export{p as a,M as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-JVPIJFVP.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-JVPIJFVP.mjs.map deleted file mode 100644 index e79773f..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-JVPIJFVP.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-XIRO2GV7.mjs"], - "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n MermaidGeneratedSharedModule,\n PieGrammarGeneratedModule,\n __name\n} from \"./chunk-XZSTWKYB.mjs\";\n\n// src/language/pie/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/pie/tokenBuilder.ts\nvar PieTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"PieTokenBuilder\");\n }\n constructor() {\n super([\"pie\", \"showData\"]);\n }\n};\n\n// src/language/pie/valueConverter.ts\nvar PieValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"PieValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name !== \"PIE_SECTION_LABEL\") {\n return void 0;\n }\n return input.replace(/\"/g, \"\").trim();\n }\n};\n\n// src/language/pie/module.ts\nvar PieModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new PieTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new PieValueConverter(), \"ValueConverter\")\n }\n};\nfunction createPieServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Pie = inject(\n createDefaultCoreModule({ shared }),\n PieGrammarGeneratedModule,\n PieModule\n );\n shared.ServiceRegistry.register(Pie);\n return { shared, Pie };\n}\n__name(createPieServices, \"createPieServices\");\n\nexport {\n PieModule,\n createPieServices\n};\n"], - "mappings": "iJAiBA,IAAIA,EAAkB,cAAcC,CAA4B,CAjBhE,MAiBgE,CAAAC,EAAA,wBAC9D,MAAO,CACLA,EAAO,KAAM,iBAAiB,CAChC,CACA,aAAc,CACZ,MAAM,CAAC,MAAO,UAAU,CAAC,CAC3B,CACF,EAGIC,EAAoB,cAAcC,CAA8B,CA3BpE,MA2BoE,CAAAF,EAAA,0BAClE,MAAO,CACLA,EAAO,KAAM,mBAAmB,CAClC,CACA,mBAAmBG,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,oBAGlB,OAAOC,EAAM,QAAQ,KAAM,EAAE,EAAE,KAAK,CACtC,CACF,EAGIE,EAAY,CACd,OAAQ,CACN,aAA8BN,EAAO,IAAM,IAAIF,EAAmB,cAAc,EAChF,eAAgCE,EAAO,IAAM,IAAIC,EAAqB,gBAAgB,CACxF,CACF,EACA,SAASM,EAAkBC,EAAUC,EAAiB,CACpD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAMH,EACVI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAG,EAC5B,CAAE,OAAAJ,EAAQ,IAAAI,CAAI,CACvB,CAZSd,EAAAO,EAAA,qBAaTP,EAAOO,EAAmB,mBAAmB", - "names": ["PieTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "PieValueConverter", "AbstractMermaidValueConverter", "rule", "input", "_cstNode", "PieModule", "createPieServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Pie", "createDefaultCoreModule", "PieGrammarGeneratedModule"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-KGFNY3KK.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-KGFNY3KK.mjs new file mode 100644 index 0000000..a893e01 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-KGFNY3KK.mjs @@ -0,0 +1,62 @@ +import{a as D}from"./chunk-5IMINLNL.mjs";import{a as Ut,b as yt,d as v,e as P}from"./chunk-T2UQINTJ.mjs";import{a as zt,b as It}from"./chunk-UY5QBCOK.mjs";import{c as dt,f as rt}from"./chunk-INKRHTLW.mjs";import{k as wt,r as Nt,t as q}from"./chunk-QA3QBVWF.mjs";import{A as Vt,C as Lt,D as qt,_ as Z,ba as Rt,n as lt,t as ft,x as tt}from"./chunk-67TQ5CYL.mjs";import{b as Y,h as J}from"./chunk-7W6UQGC5.mjs";import{a as x}from"./chunk-AQ6EADP3.mjs";var G=x(async(d,t,c)=>{let h,a=t.useHtmlLabels||lt(Z()?.htmlLabels);c?h=c:h="node default";let o=d.insert("g").attr("class",h).attr("id",t.domId||t.id),f=o.insert("g").attr("class","label").attr("style",q(t.labelStyle)),i;t.label===void 0?i="":i=typeof t.label=="string"?t.label:t.label[0];let n=!!t.icon||!!t.img,r=t.labelType==="markdown",e=await rt(f,Vt(Nt(i),Z()),{useHtmlLabels:a,width:t.width||Z().flowchart?.wrappingWidth,classes:r?"markdown-node-label":"",style:t.labelStyle,addSvgBackground:n,markdown:r},Z()),s=e.getBBox(),p=(t?.padding??0)/2;if(a){let l=e.children[0],m=J(e);await zt(l,i),s=l.getBoundingClientRect(),m.attr("width",s.width),m.attr("height",s.height)}return a?f.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):f.attr("transform","translate(0, "+-s.height/2+")"),t.centerLabel&&f.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),f.insert("rect",":first-child"),{shapeSvg:o,bbox:s,halfPadding:p,label:f}},"labelHelper"),Gt=x(async(d,t,c)=>{let h=c.useHtmlLabels??tt(Z()),a=d.insert("g").attr("class","label").attr("style",c.labelStyle||""),o=await rt(a,Vt(Nt(t),Z()),{useHtmlLabels:h,width:c.width||Z()?.flowchart?.wrappingWidth,style:c.labelStyle,addSvgBackground:!!c.icon||!!c.img}),f=o.getBBox(),i=c.padding/2;if(tt(Z())){let n=o.children[0],r=J(o);f=n.getBoundingClientRect(),r.attr("width",f.width),r.attr("height",f.height)}return h?a.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):a.attr("transform","translate(0, "+-f.height/2+")"),c.centerLabel&&a.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),a.insert("rect",":first-child"),{shapeSvg:d,bbox:f,halfPadding:i,label:a}},"insertLabel"),k=x((d,t)=>{let c=t.node().getBBox();d.width=c.width,d.height=c.height},"updateNodeBounds");var T=x((d,t)=>(d.look==="handDrawn"?"rough-node":"node")+" "+d.cssClasses+" "+(t||""),"getNodeClasses");function I(d){let t=d.map((c,h)=>`${h===0?"M":"L"}${c.x},${c.y}`);return t.push("Z"),t.join(" ")}x(I,"createPathFromPoints");function at(d,t,c,h,a,o){let f=[],n=c-d,r=h-t,e=n/o,s=2*Math.PI/e,p=t+r/2;for(let l=0;l<=50;l++){let m=l/50,g=d+m*n,u=p+a*Math.sin(s*(g-d));f.push({x:g,y:u})}return f}x(at,"generateFullSineWavePoints");function $t(d,t,c,h,a,o){let f=[],i=a*Math.PI/180,e=(o*Math.PI/180-i)/(h-1);for(let s=0;sn.tagName==="path"),c=document.createElementNS("http://www.w3.org/2000/svg","path"),h=t.map(n=>n.getAttribute("d")).filter(n=>n!==null).join(" ");c.setAttribute("d",h);let a=t.find(n=>n.getAttribute("fill")!=="none"),o=t.find(n=>n.getAttribute("stroke")!=="none"),f=x((n,r)=>n?.getAttribute(r)??void 0,"getAttr");if(a){let n={fill:f(a,"fill"),"fill-opacity":f(a,"fill-opacity")??"1"};Object.entries(n).forEach(([r,e])=>{e&&c.setAttribute(r,e)})}if(o){let n={stroke:f(o,"stroke"),"stroke-width":f(o,"stroke-width")??"1","stroke-opacity":f(o,"stroke-opacity")??"1"};Object.entries(n).forEach(([r,e])=>{e&&c.setAttribute(r,e)})}let i=document.createElementNS("http://www.w3.org/2000/svg","g");return i.appendChild(c),i}x(Wt,"mergePaths");var Ps=x((d,t)=>{var c=d.x,h=d.y,a=t.x-c,o=t.y-h,f=d.width/2,i=d.height/2,n,r;return Math.abs(o)*f>Math.abs(a)*i?(o<0&&(i=-i),n=o===0?0:i*a/o,r=i):(a<0&&(f=-f),n=f,r=a===0?0:f*o/a),{x:c+n,y:h+r}},"intersectRect"),ut=Ps;var vs=x(async(d,t,c,h=!1,a=!1)=>{let o=t||"";typeof o=="object"&&(o=o[0]);let f=Z(),i=tt(f);return await rt(d,o,{style:c,isTitle:h,useHtmlLabels:i,markdown:!1,isNode:a,width:Number.POSITIVE_INFINITY},f)},"createLabel"),vt=vs;var it=x((d,t,c,h,a)=>["M",d+a,t,"H",d+c-a,"A",a,a,0,0,1,d+c,t+a,"V",t+h-a,"A",a,a,0,0,1,d+c-a,t+h,"H",d+a,"A",a,a,0,0,1,d,t+h-a,"V",t+a,"A",a,a,0,0,1,d+a,t,"Z"].join(" "),"createRoundedRectPathD");var Zt=x(async(d,t)=>{Y.info("Creating subgraph rect for ",t.id,t);let c=Z(),{themeVariables:h,handDrawnSeed:a}=c,{clusterBkg:o,clusterBorder:f}=h,{labelStyles:i,nodeStyles:n,borderStyles:r,backgroundStyles:e}=v(t),s=d.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=tt(c),l=s.insert("g").attr("class","cluster-label "),m;t.labelType==="markdown"?m=await rt(l,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}):m=await vt(l,t.label,t.labelStyle||"",!1,!0);let g=m.getBBox();if(tt(c)){let C=m.children[0],R=J(m);g=C.getBoundingClientRect(),R.attr("width",g.width),R.attr("height",g.height)}let u=t.width<=g.width+t.padding?g.width+t.padding:t.width;t.width<=g.width+t.padding?t.diff=(u-t.width)/2-t.padding:t.diff=-t.padding;let y=t.height,b=t.x-u/2,S=t.y-y/2;Y.trace("Data ",t,JSON.stringify(t));let N;if(t.look==="handDrawn"){let C=D.svg(s),R=P(t,{roughness:.7,fill:o,stroke:f,fillWeight:3,seed:a}),M=C.path(it(b,S,u,y,0),R);N=s.insert(()=>(Y.debug("Rough node insert CXC",M),M),":first-child"),N.select("path:nth-child(2)").attr("style",r.join(";")),N.select("path").attr("style",e.join(";").replace("fill","stroke"))}else N=s.insert("rect",":first-child"),N.attr("style",n).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",S).attr("width",u).attr("height",y);let{subGraphTitleTopMargin:w}=It(c);if(l.attr("transform",`translate(${t.x-g.width/2}, ${t.y-t.height/2+w})`),i){let C=l.select("span");C&&C.attr("style",i)}let B=N.node().getBBox();return t.offsetX=0,t.width=B.width,t.height=B.height,t.offsetY=g.height-t.padding/2,t.intersect=function(C){return ut(t,C)},{cluster:s,labelBBox:g}},"rect"),ks=x((d,t)=>{let c=d.insert("g").attr("class","note-cluster").attr("id",t.domId),h=c.insert("rect",":first-child"),a=0*t.padding,o=a/2;h.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-o).attr("y",t.y-t.height/2-o).attr("width",t.width+a).attr("height",t.height+a).attr("fill","none");let f=h.node().getBBox();return t.width=f.width,t.height=f.height,t.intersect=function(i){return ut(t,i)},{cluster:c,labelBBox:{width:0,height:0}}},"noteGroup"),Bs=x(async(d,t)=>{let c=Z(),{themeVariables:h,handDrawnSeed:a}=c,{altBackground:o,compositeBackground:f,compositeTitleBackground:i,nodeBorder:n}=h,r=d.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-id",t.id).attr("data-look",t.look),e=r.insert("g",":first-child"),s=r.insert("g").attr("class","cluster-label"),p=r.append("rect"),l=await vt(s,t.label,t.labelStyle,void 0,!0),m=l.getBBox();if(tt(c)){let M=l.children[0],E=J(l);m=M.getBoundingClientRect(),E.attr("width",m.width),E.attr("height",m.height)}let g=0*t.padding,u=g/2,y=(t.width<=m.width+t.padding?m.width+t.padding:t.width)+g;t.width<=m.width+t.padding?t.diff=(y-t.width)/2-t.padding:t.diff=-t.padding;let b=t.height+g,S=t.height+g-m.height-6,N=t.x-y/2,w=t.y-b/2;t.width=y;let B=t.y-t.height/2-u+m.height+2,C;if(t.look==="handDrawn"){let M=t.cssClasses.includes("statediagram-cluster-alt"),E=D.svg(r),H=t.rx||t.ry?E.path(it(N,w,y,b,10),{roughness:.7,fill:i,fillStyle:"solid",stroke:n,seed:a}):E.rectangle(N,w,y,b,{seed:a});C=r.insert(()=>H,":first-child");let W=E.rectangle(N,B,y,S,{fill:M?o:f,fillStyle:M?"hachure":"solid",stroke:n,seed:a});C=r.insert(()=>H,":first-child"),p=r.insert(()=>W)}else C=e.insert("rect",":first-child"),C.attr("class","outer").attr("x",N).attr("y",w).attr("width",y).attr("height",b).attr("data-look",t.look),p.attr("class","inner").attr("x",N).attr("y",B).attr("width",y).attr("height",S);s.attr("transform",`translate(${t.x-m.width/2}, ${w+1-(tt(c)?0:3)})`);let R=C.node().getBBox();return t.height=R.height,t.offsetX=0,t.offsetY=m.height-t.padding/2,t.labelBBox=m,t.intersect=function(M){return ut(t,M)},{cluster:r,labelBBox:m}},"roundedWithTitle"),Ts=x(async(d,t)=>{Y.info("Creating subgraph rect for ",t.id,t);let c=Z(),{themeVariables:h,handDrawnSeed:a}=c,{clusterBkg:o,clusterBorder:f}=h,{labelStyles:i,nodeStyles:n,borderStyles:r,backgroundStyles:e}=v(t),s=d.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=tt(c),l=s.insert("g").attr("class","cluster-label "),m=await rt(l,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}),g=m.getBBox();if(tt(c)){let C=m.children[0],R=J(m);g=C.getBoundingClientRect(),R.attr("width",g.width),R.attr("height",g.height)}let u=t.width<=g.width+t.padding?g.width+t.padding:t.width;t.width<=g.width+t.padding?t.diff=(u-t.width)/2-t.padding:t.diff=-t.padding;let y=t.height,b=t.x-u/2,S=t.y-y/2;Y.trace("Data ",t,JSON.stringify(t));let N;if(t.look==="handDrawn"){let C=D.svg(s),R=P(t,{roughness:.7,fill:o,stroke:f,fillWeight:4,seed:a}),M=C.path(it(b,S,u,y,t.rx),R);N=s.insert(()=>(Y.debug("Rough node insert CXC",M),M),":first-child"),N.select("path:nth-child(2)").attr("style",r.join(";")),N.select("path").attr("style",e.join(";").replace("fill","stroke"))}else N=s.insert("rect",":first-child"),N.attr("style",n).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",S).attr("width",u).attr("height",y);let{subGraphTitleTopMargin:w}=It(c);if(l.attr("transform",`translate(${t.x-g.width/2}, ${t.y-t.height/2+w})`),i){let C=l.select("span");C&&C.attr("style",i)}let B=N.node().getBBox();return t.offsetX=0,t.width=B.width,t.height=B.height,t.offsetY=g.height-t.padding/2,t.intersect=function(C){return ut(t,C)},{cluster:s,labelBBox:g}},"kanbanSection"),Cs=x((d,t)=>{let c=Z(),{themeVariables:h,handDrawnSeed:a}=c,{nodeBorder:o}=h,f=d.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-look",t.look),i=f.insert("g",":first-child"),n=0*t.padding,r=t.width+n;t.diff=-t.padding;let e=t.height+n,s=t.x-r/2,p=t.y-e/2;t.width=r;let l;if(t.look==="handDrawn"){let u=D.svg(f).rectangle(s,p,r,e,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:o,seed:a});l=f.insert(()=>u,":first-child")}else{l=i.insert("rect",":first-child");let g="outer";t.look,g="divider",l.attr("class",g).attr("x",s).attr("y",p).attr("width",r).attr("height",e).attr("data-look",t.look)}let m=l.node().getBBox();return t.height=m.height,t.offsetX=0,t.offsetY=0,t.intersect=function(g){return ut(t,g)},{cluster:f,labelBBox:{}}},"divider"),Rs=Zt,Gs={rect:Zt,squareRect:Rs,roundedWithTitle:Bs,noteGroup:ks,divider:Cs,kanbanSection:Ts},Jt=new Map,Rr=x(async(d,t)=>{let c=t.shape||"rect",h=await Gs[c](d,t);return Jt.set(t.id,h),h},"insertCluster");var Gr=x(()=>{Jt=new Map},"clear");function Ms(d,t){return d.intersect(t)}x(Ms,"intersectNode");var Kt=Ms;function Es(d,t,c,h){var a=d.x,o=d.y,f=a-h.x,i=o-h.y,n=Math.sqrt(t*t*i*i+c*c*f*f),r=Math.abs(t*c*f/n);h.x0}x(te,"sameSign");var ee=js;function As(d,t,c){let h=d.x,a=d.y,o=[],f=Number.POSITIVE_INFINITY,i=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(e){f=Math.min(f,e.x),i=Math.min(i,e.y)}):(f=Math.min(f,t.x),i=Math.min(i,t.y));let n=h-d.width/2-f,r=a-d.height/2-i;for(let e=0;e1&&o.sort(function(e,s){let p=e.x-c.x,l=e.y-c.y,m=Math.sqrt(p*p+l*l),g=s.x-c.x,u=s.y-c.y,y=Math.sqrt(g*g+u*u);return me,":first-child");return s.attr("class","anchor").attr("style",q(i)),k(t,s),t.intersect=function(p){return Y.info("Circle intersect",t,f,p),$.circle(t,f,p)},o}x(re,"anchor");function ie(d,t,c,h,a,o,f){let n=(d+c)/2,r=(t+h)/2,e=Math.atan2(h-t,c-d),s=(c-d)/2,p=(h-t)/2,l=s/a,m=p/o,g=Math.sqrt(l**2+m**2);if(g>1)throw new Error("The given radii are too small to create an arc between the points.");let u=Math.sqrt(1-g**2),y=n+u*o*Math.sin(e)*(f?-1:1),b=r-u*a*Math.cos(e)*(f?-1:1),S=Math.atan2((t-b)/o,(d-y)/a),w=Math.atan2((h-b)/o,(c-y)/a)-S;f&&w<0&&(w+=2*Math.PI),!f&&w>0&&(w-=2*Math.PI);let B=[];for(let C=0;C<20;C++){let R=C/19,M=S+R*w,E=y+a*Math.cos(M),H=b+o*Math.sin(M);B.push({x:E,y:H})}return B}x(ie,"generateArcPoints");function Os(d,t,c){let[h,a]=[t,c].sort((o,f)=>f-o);return a*(1-Math.sqrt(1-(d/h/2)**2))}x(Os,"calculateArcSagitta");async function oe(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?12:a,i=x(M=>M+f,"calcTotalHeight"),n=x(M=>{let E=M/2;return[E/(2.5+M/50),E]},"calcEllipseRadius"),{shapeSvg:r,bbox:e}=await G(d,t,T(t)),s=i(t?.height?t?.height:e.height),[p,l]=n(s),m=Os(s,p,l),u=(t?.width?t?.width:e.width)+o*2+m-m,y=s,{cssStyles:b}=t,S=[{x:u/2,y:-y/2},{x:-u/2,y:-y/2},...ie(-u/2,-y/2,-u/2,y/2,p,l,!1),{x:u/2,y:y/2},...ie(u/2,y/2,u/2,-y/2,p,l,!0)],N=D.svg(r),w=P(t,{});t.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let B=I(S),C=N.path(B,w),R=r.insert(()=>C,":first-child");return R.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",b),h&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",h),R.attr("transform",`translate(${p/2}, 0)`),k(t,R),t.intersect=function(M){return $.polygon(t,S,M)},r}x(oe,"bowTieRect");function et(d,t,c,h){return d.insert("polygon",":first-child").attr("points",h.map(function(a){return a.x+","+a.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+c/2+")")}x(et,"insertPolygonShape");var Et=12;async function ae(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?28:a,f=t.look==="neo"?24:a,{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=(t?.width??n.width)+(t.look==="neo"?o*2:o+Et),e=(t?.height??n.height)+(t.look==="neo"?f*2:f),s=0,p=r,l=-e,m=0,g=[{x:s+Et,y:l},{x:p,y:l},{x:p,y:m},{x:s,y:m},{x:s,y:l+Et},{x:s+Et,y:l}],u,{cssStyles:y}=t;if(t.look==="handDrawn"){let b=D.svg(i),S=P(t,{}),N=I(g),w=b.path(N,S);u=i.insert(()=>w,":first-child").attr("transform",`translate(${-r/2}, ${e/2})`),y&&u.attr("style",y)}else u=et(i,r,e,g);return h&&u.attr("style",h),k(t,u),t.intersect=function(b){return $.polygon(t,g,b)},i}x(ae,"card");function ne(d,t){let{nodeStyles:c}=v(t);t.label="";let h=d.insert("g").attr("class",T(t)).attr("id",t.domId??t.id),{cssStyles:a}=t,o=Math.max(28,t.width??0),f=[{x:0,y:o/2},{x:o/2,y:0},{x:0,y:-o/2},{x:-o/2,y:0}],i=D.svg(h),n=P(t,{});t.look!=="handDrawn"&&(n.roughness=0,n.fillStyle="solid");let r=I(f),e=i.path(r,n),s=h.insert(()=>e,":first-child");return a&&t.look!=="handDrawn"&&s.selectAll("path").attr("style",a),c&&t.look!=="handDrawn"&&s.selectAll("path").attr("style",c),t.width=28,t.height=28,t.intersect=function(p){return $.polygon(t,f,p)},h}x(ne,"choice");async function Ht(d,t,c){let{labelStyles:h,nodeStyles:a}=v(t);t.labelStyle=h;let{shapeSvg:o,bbox:f,halfPadding:i}=await G(d,t,T(t)),n=16,r=c?.padding??i,e=t.look==="neo"?f.width/2+n*2:f.width/2+r,s,{cssStyles:p}=t;if(t.look==="handDrawn"){let l=D.svg(o),m=P(t,{}),g=l.circle(0,0,e*2,m);s=o.insert(()=>g,":first-child"),s.attr("class","basic label-container").attr("style",q(p))}else s=o.insert("circle",":first-child").attr("class","basic label-container").attr("style",a).attr("r",e).attr("cx",0).attr("cy",0);return k(t,s),t.calcIntersect=function(l,m){let g=l.width/2;return $.circle(l,g,m)},t.intersect=function(l){return Y.info("Circle intersect",t,e,l),$.circle(t,e,l)},o}x(Ht,"circle");function Vs(d){let t=Math.cos(Math.PI/4),c=Math.sin(Math.PI/4),h=d*2,a={x:h/2*t,y:h/2*c},o={x:-(h/2)*t,y:h/2*c},f={x:-(h/2)*t,y:-(h/2)*c},i={x:h/2*t,y:-(h/2)*c};return`M ${o.x},${o.y} L ${i.x},${i.y} + M ${a.x},${a.y} L ${f.x},${f.y}`}x(Vs,"createLine");function le(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c,t.label="";let a=d.insert("g").attr("class",T(t)).attr("id",t.domId??t.id),o=Math.max(30,t?.width??0),{cssStyles:f}=t,i=D.svg(a),n=P(t,{});t.look!=="handDrawn"&&(n.roughness=0,n.fillStyle="solid");let r=i.circle(0,0,o*2,n),e=Vs(o),s=i.path(e,n),p=a.insert(()=>r,":first-child");return p.insert(()=>s),p.attr("class","outer-path"),f&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",f),h&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",h),k(t,p),t.intersect=function(l){return Y.info("crossedCircle intersect",t,{radius:o,point:l}),$.circle(t,o,l)},a}x(le,"crossedCircle");function xt(d,t,c,h=100,a=0,o=180){let f=[],i=a*Math.PI/180,e=(o*Math.PI/180-i)/(h-1);for(let s=0;sw,":first-child").attr("stroke-opacity",0),B.insert(()=>S,":first-child"),B.attr("class","text"),p&&t.look!=="handDrawn"&&B.selectAll("path").attr("style",p),h&&t.look!=="handDrawn"&&B.selectAll("path").attr("style",h),B.attr("transform",`translate(${s}, 0)`),f.attr("transform",`translate(${-r/2+s-(o.x-(o.left??0))},${-e/2+(t.padding??0)/2-(o.y-(o.top??0))})`),k(t,B),t.intersect=function(C){return $.polygon(t,m,C)},a}x(ce,"curlyBraceLeft");function bt(d,t,c,h=100,a=0,o=180){let f=[],i=a*Math.PI/180,e=(o*Math.PI/180-i)/(h-1);for(let s=0;sw,":first-child").attr("stroke-opacity",0),B.insert(()=>S,":first-child"),B.attr("class","text"),p&&t.look!=="handDrawn"&&B.selectAll("path").attr("style",p),h&&t.look!=="handDrawn"&&B.selectAll("path").attr("style",h),B.attr("transform",`translate(${-s}, 0)`),f.attr("transform",`translate(${-r/2+(t.padding??0)/2-(o.x-(o.left??0))},${-e/2+(t.padding??0)/2-(o.y-(o.top??0))})`),k(t,B),t.intersect=function(C){return $.polygon(t,m,C)},a}x(he,"curlyBraceRight");function st(d,t,c,h=100,a=0,o=180){let f=[],i=a*Math.PI/180,e=(o*Math.PI/180-i)/(h-1);for(let s=0;sM,":first-child").attr("stroke-opacity",0),E.insert(()=>N,":first-child"),E.insert(()=>C,":first-child"),E.attr("class","text"),p&&t.look!=="handDrawn"&&E.selectAll("path").attr("style",p),h&&t.look!=="handDrawn"&&E.selectAll("path").attr("style",h),E.attr("transform",`translate(${s-s/4}, 0)`),f.attr("transform",`translate(${-r/2+(t.padding??0)/2-(o.x-(o.left??0))},${-e/2+(t.padding??0)/2-(o.y-(o.top??0))})`),k(t,E),t.intersect=function(H){return $.polygon(t,g,H)},a}x(pe,"curlyBraces");async function me(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?12:a,i=20,n=5,{shapeSvg:r,bbox:e}=await G(d,t,T(t)),s=Math.max(i,(e.width+o*2)*1.25,t?.width??0),p=Math.max(n,e.height+f*2,t?.height??0),l=p/2,{cssStyles:m}=t,g=D.svg(r),u=P(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=s,b=p,S=y-l,N=b/4,w=[{x:S,y:0},{x:N,y:0},{x:0,y:b/2},{x:N,y:b},{x:S,y:b},...$t(-S,-b/2,l,50,270,90)],B=I(w),C=g.path(B,u),R=r.insert(()=>C,":first-child");return R.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&R.selectChildren("path").attr("style",m),h&&t.look!=="handDrawn"&&R.selectChildren("path").attr("style",h),R.attr("transform",`translate(${-s/2}, ${-p/2})`),k(t,R),t.intersect=function(M){return $.polygon(t,w,M)},r}x(me,"curvedTrapezoid");var Ls=x((d,t,c,h,a,o)=>[`M${d},${t+o}`,`a${a},${o} 0,0,0 ${c},0`,`a${a},${o} 0,0,0 ${-c},0`,`l0,${h}`,`a${a},${o} 0,0,0 ${c},0`,`l0,${-h}`].join(" "),"createCylinderPathD"),Is=x((d,t,c,h,a,o)=>[`M${d},${t+o}`,`M${d+c},${t+o}`,`a${a},${o} 0,0,0 ${-c},0`,`l0,${h}`,`a${a},${o} 0,0,0 ${c},0`,`l0,${-h}`].join(" "),"createOuterCylinderPathD"),Ws=x((d,t,c,h,a,o)=>[`M${d-c/2},${-h/2}`,`a${a},${o} 0,0,0 ${c},0`].join(" "),"createInnerCylinderPathD"),ge=8,fe=8;async function de(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?24:a,f=t.look==="neo"?24:a;if(t.width||t.height){let u=t.width??0;t.width=(t.width??0)-f,t.widthw,":first-child"),m=i.insert(()=>N,":first-child"),m.attr("class","basic label-container"),g&&m.attr("style",g)}else{let u=Ls(0,0,e,l,s,p);m=i.insert("path",":first-child").attr("d",u).attr("class","basic label-container outer-path").attr("style",q(g)).attr("style",h)}return m.attr("label-offset-y",p),m.attr("transform",`translate(${-e/2}, ${-(l/2+p)})`),k(t,m),r.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)+(t.padding??0)/1.5-(n.y-(n.top??0))})`),t.intersect=function(u){let y=$.rect(t,u),b=y.x-(t.x??0);if(s!=0&&(Math.abs(b)<(t.width??0)/2||Math.abs(b)==(t.width??0)/2&&Math.abs(y.y-(t.y??0))>(t.height??0)/2-p)){let S=p*p*(1-b*b/(s*s));S>0&&(S=Math.sqrt(S)),S=p-S,u.y-(t.y??0)>0&&(S=-S),y.y+=S}return y},i}x(de,"cylinder");async function ct(d,t,c){let{labelStyles:h,nodeStyles:a}=v(t);t.labelStyle=h;let{shapeSvg:o,bbox:f}=await G(d,t,T(t)),i=Math.max(f.width+c.labelPaddingX*2,t?.width||0),n=Math.max(f.height+c.labelPaddingY*2,t?.height||0),r=-i/2,e=-n/2,s,{rx:p,ry:l}=t,{cssStyles:m}=t;if(c?.rx&&c.ry&&(p=c.rx,l=c.ry),t.look==="handDrawn"){let g=D.svg(o),u=P(t,{}),y=p||l?g.path(it(r,e,i,n,p||0),u):g.rectangle(r,e,i,n,u);s=o.insert(()=>y,":first-child"),s.attr("class","basic label-container").attr("style",q(m))}else s=o.insert("rect",":first-child"),s.attr("class","basic label-container").attr("style",a).attr("rx",q(p)).attr("ry",q(l)).attr("x",r).attr("y",e).attr("width",i).attr("height",n);return k(t,s),t.calcIntersect=function(g,u){return $.rect(g,u)},t.intersect=function(g){return $.rect(t,g)},o}x(ct,"drawRect");async function ye(d,t){let{cssClasses:c,labelPaddingX:h,labelPaddingY:a,padding:o,width:f,height:i}=t,n={rx:0,ry:0,classes:c??"",labelPaddingX:h??(o??0)*2,labelPaddingY:a??o??0},r=await ct(d,t,n);if(t.look==="handDrawn"){let l=D.svg(r),m=P(t,{}),g=r.select(".basic.label-container > path:nth-child(2)"),u=g.node();if(!u)return r;let y=null;if(u instanceof SVGGraphicsElement)y=u.getBBox();else return r;return r.insert(()=>l.line(y.x,y.y,y.x+y.width,y.y,m),".basic.label-container g.label"),r.insert(()=>l.line(y.x,y.y+y.height,y.x+y.width,y.y+y.height,m),".basic.label-container g.label"),g.remove(),r}let e=r.select(".basic.label-container"),s=(Number(e.attr("width"))||f)??0,p=(Number(e.attr("height"))||i)??0;return s>0&&p>0&&e.attr("stroke-dasharray",`${s} ${p}`),r}x(ye,"datastore");async function ue(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.look==="neo"?16:t.padding??0,o=t.look==="neo"?16:t.padding??0,{shapeSvg:f,bbox:i,label:n}=await G(d,t,T(t)),r=i.width+a,e=i.height+o,s=e*.2,p=-r/2,l=-e/2-s/2,{cssStyles:m}=t,g=D.svg(f),u=P(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=[{x:p,y:l+s},{x:-p,y:l+s},{x:-p,y:-l},{x:p,y:-l},{x:p,y:l},{x:-p,y:l},{x:-p,y:l+s}],b=g.polygon(y.map(N=>[N.x,N.y]),u),S=f.insert(()=>b,":first-child");return S.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",m),h&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",h),n.attr("transform",`translate(${p+(t.padding??0)/2-(i.x-(i.left??0))}, ${l+s+(t.padding??0)/2-(i.y-(i.top??0))})`),k(t,S),t.intersect=function(N){return $.rect(t,N)},f}x(ue,"dividedRectangle");async function xe(d,t){let{labelStyles:c,nodeStyles:h}=v(t),a=t.look==="neo"?12:5;t.labelStyle=c;let o=t.padding??0,f=t.look==="neo"?16:o,{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=(t?.width?t?.width/2:n.width/2)+(f??0),e=r-a,s,{cssStyles:p}=t;if(t.look==="handDrawn"){let l=D.svg(i),m=P(t,{roughness:.2,strokeWidth:2.5}),g=P(t,{roughness:.2,strokeWidth:1.5}),u=l.circle(0,0,r*2,m),y=l.circle(0,0,e*2,g);s=i.insert("g",":first-child"),s.attr("class",q(t.cssClasses)).attr("style",q(p)),s.node()?.appendChild(u),s.node()?.appendChild(y)}else{s=i.insert("g",":first-child");let l=s.insert("circle",":first-child"),m=s.insert("circle");s.attr("class","basic label-container").attr("style",h),l.attr("class","outer-circle").attr("style",h).attr("r",r).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",h).attr("r",e).attr("cx",0).attr("cy",0)}return k(t,s),t.intersect=function(l){return Y.info("DoubleCircle intersect",t,r,l),$.circle(t,r,l)},i}x(xe,"doublecircle");function be(d,t,{config:{themeVariables:c}}){let{labelStyles:h,nodeStyles:a}=v(t);t.label="",t.labelStyle=h;let o=d.insert("g").attr("class",T(t)).attr("id",t.domId??t.id),f=7,{cssStyles:i}=t,n=D.svg(o),{nodeBorder:r}=c,e=P(t,{fillStyle:"solid"});t.look!=="handDrawn"&&(e.roughness=0);let s=n.circle(0,0,f*2,e),p=o.insert(()=>s,":first-child");return p.selectAll("path").attr("style",`fill: ${r} !important;`),i&&i.length>0&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",i),a&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",a),k(t,p),t.intersect=function(l){return Y.info("filledCircle intersect",t,{radius:f,point:l}),$.circle(t,f,l)},o}x(be,"filledCircle");var Se=10,we=10;async function Ne(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?a*2:a;(t.width||t.height)&&(t.height=t?.height??0,t.heighty,":first-child").attr("transform",`translate(${-e/2}, ${e/2})`).attr("class","outer-path");return l&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",l),h&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",h),t.width=r,t.height=e,k(t,b),n.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${-e/2+(t.padding??0)/2+(i.y-(i.top??0))})`),t.intersect=function(S){return Y.info("Triangle intersect",t,p,S),$.polygon(t,p,S)},f}x(Ne,"flippedTriangle");function $e(d,t,{dir:c,config:{state:h,themeVariables:a}}){let{nodeStyles:o}=v(t);t.label="";let f=d.insert("g").attr("class",T(t)).attr("id",t.domId??t.id),{cssStyles:i}=t,n=Math.max(70,t?.width??0),r=Math.max(10,t?.height??0);c==="LR"&&(n=Math.max(10,t?.width??0),r=Math.max(70,t?.height??0));let e=-1*n/2,s=-1*r/2,p=D.svg(f),l=P(t,{stroke:a.lineColor,fill:a.lineColor});t.look!=="handDrawn"&&(l.roughness=0,l.fillStyle="solid");let m=p.rectangle(e,s,n,r,l),g=f.insert(()=>m,":first-child");i&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",i),o&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",o),k(t,g);let u=h?.padding??0;return t.width&&t.height&&(t.width+=u/2||0,t.height+=u/2||0),t.intersect=function(y){return $.rect(t,y)},f}x($e,"forkJoin");async function De(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=15,o=10,f=t.look==="neo"?16:t.padding??0,i=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.height=(t?.height??0)-i*2,t.heightb,":first-child");return S.attr("class","basic label-container outer-path"),l&&t.look!=="handDrawn"&&S.selectChildren("path").attr("style",l),h&&t.look!=="handDrawn"&&S.selectChildren("path").attr("style",h),k(t,S),t.intersect=function(N){return Y.info("Pill intersect",t,{radius:p,point:N}),$.polygon(t,u,N)},n}x(De,"halfRoundedRectangle");var Xs=x((d,t,c,h,a)=>[`M${d+a},${t}`,`L${d+c-a},${t}`,`L${d+c},${t-h/2}`,`L${d+c-a},${t-h}`,`L${d+a},${t-h}`,`L${d},${t-h/2}`,"Z"].join(" "),"createHexagonPathD");async function Pe(d,t){let{labelStyles:c,nodeStyles:h}=v(t),a=t.look==="neo"?3.5:4;t.labelStyle=c;let o=t.padding??0,f=70,i=32,n=t.look==="neo"?f:o,r=t.look==="neo"?i:o;if(t.width||t.height){let S=(t.height??0)/a;t.width=(t?.width??0)-2*S-r,t.height=(t.height??0)-n}let{shapeSvg:e,bbox:s}=await G(d,t,T(t)),p=(t?.height?t?.height:s.height)+n,l=p/a,m=(t?.width?t?.width:s.width)+2*l+r,g=[{x:l,y:0},{x:m-l,y:0},{x:m,y:-p/2},{x:m-l,y:-p},{x:l,y:-p},{x:0,y:-p/2}],u,{cssStyles:y}=t;if(t.look==="handDrawn"){let b=D.svg(e),S=P(t,{}),N=Xs(0,0,m,p,l),w=b.path(N,S);u=e.insert(()=>w,":first-child").attr("transform",`translate(${-m/2}, ${p/2})`),y&&u.attr("style",y)}else u=et(e,m,p,g);return h&&u.attr("style",h),t.width=m,t.height=p,k(t,u),t.intersect=function(b){return $.polygon(t,g,b)},e}x(Pe,"hexagon");async function ve(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.label="",t.labelStyle=c;let{shapeSvg:a}=await G(d,t,T(t)),o=Math.max(30,t?.width??0),f=Math.max(30,t?.height??0),{cssStyles:i}=t,n=D.svg(a),r=P(t,{});t.look!=="handDrawn"&&(r.roughness=0,r.fillStyle="solid");let e=[{x:0,y:0},{x:o,y:0},{x:0,y:f},{x:o,y:f}],s=I(e),p=n.path(s,r),l=a.insert(()=>p,":first-child");return l.attr("class","basic label-container outer-path"),i&&t.look!=="handDrawn"&&l.selectChildren("path").attr("style",i),h&&t.look!=="handDrawn"&&l.selectChildren("path").attr("style",h),l.attr("transform",`translate(${-o/2}, ${-f/2})`),k(t,l),t.intersect=function(m){return Y.info("Pill intersect",t,{points:e}),$.polygon(t,e,m)},a}x(ve,"hourglass");async function ke(d,t,{config:{themeVariables:c,flowchart:h}}){let{labelStyles:a}=v(t);t.labelStyle=a;let o=t.assetHeight??48,f=t.assetWidth??48,i=Math.max(o,f),n=h?.wrappingWidth;t.width=Math.max(i,n??0);let{shapeSvg:r,bbox:e,label:s}=await G(d,t,"icon-shape default"),p=t.pos==="t",l=i,m=i,{nodeBorder:g}=c,{stylesMap:u}=yt(t),y=-m/2,b=-l/2,S=t.label?8:0,N=D.svg(r),w=P(t,{stroke:"none",fill:"none"});t.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let B=N.rectangle(y,b,m,l,w),C=Math.max(m,e.width),R=l+e.height+S,M=N.rectangle(-C/2,-R/2,C,R,{...w,fill:"transparent",stroke:"none"}),E=r.insert(()=>B,":first-child"),H=r.insert(()=>M);if(t.icon){let W=r.append("g");W.html(`${await dt(t.icon,{height:i,width:i,fallbackPrefix:""})}`);let j=W.node().getBBox(),V=j.width,O=j.height,A=j.x,L=j.y;W.attr("transform",`translate(${-V/2-A},${p?e.height/2+S/2-O/2-L:-e.height/2-S/2-O/2-L})`),W.attr("style",`color: ${u.get("stroke")??g};`)}return s.attr("transform",`translate(${-e.width/2-(e.x-(e.left??0))},${p?-R/2:R/2-e.height})`),E.attr("transform",`translate(0,${p?e.height/2+S/2:-e.height/2-S/2})`),k(t,H),t.intersect=function(W){if(Y.info("iconSquare intersect",t,W),!t.label)return $.rect(t,W);let j=t.x??0,V=t.y??0,O=t.height??0,A=[];return p?A=[{x:j-e.width/2,y:V-O/2},{x:j+e.width/2,y:V-O/2},{x:j+e.width/2,y:V-O/2+e.height+S},{x:j+m/2,y:V-O/2+e.height+S},{x:j+m/2,y:V+O/2},{x:j-m/2,y:V+O/2},{x:j-m/2,y:V-O/2+e.height+S},{x:j-e.width/2,y:V-O/2+e.height+S}]:A=[{x:j-m/2,y:V-O/2},{x:j+m/2,y:V-O/2},{x:j+m/2,y:V-O/2+l},{x:j+e.width/2,y:V-O/2+l},{x:j+e.width/2/2,y:V+O/2},{x:j-e.width/2,y:V+O/2},{x:j-e.width/2,y:V-O/2+l},{x:j-m/2,y:V-O/2+l}],$.polygon(t,A,W)},r}x(ke,"icon");async function Be(d,t,{config:{themeVariables:c,flowchart:h}}){let{labelStyles:a}=v(t);t.labelStyle=a;let o=t.assetHeight??48,f=t.assetWidth??48,i=Math.max(o,f),n=h?.wrappingWidth;t.width=Math.max(i,n??0);let{shapeSvg:r,bbox:e,label:s}=await G(d,t,"icon-shape default"),p=20,l=t.label?8:0,m=t.pos==="t",{nodeBorder:g,mainBkg:u}=c,{stylesMap:y}=yt(t),b=D.svg(r),S=P(t,{});t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let N=y.get("fill");S.stroke=N??u;let w=r.append("g");t.icon&&w.html(`${await dt(t.icon,{height:i,width:i,fallbackPrefix:""})}`);let B=w.node().getBBox(),C=B.width,R=B.height,M=B.x,E=B.y,H=Math.max(C,R)*Math.SQRT2+p*2,W=b.circle(0,0,H,S),j=Math.max(H,e.width),V=H+e.height+l,O=b.rectangle(-j/2,-V/2,j,V,{...S,fill:"transparent",stroke:"none"}),A=r.insert(()=>W,":first-child"),L=r.insert(()=>O);return w.attr("transform",`translate(${-C/2-M},${m?e.height/2+l/2-R/2-E:-e.height/2-l/2-R/2-E})`),w.attr("style",`color: ${y.get("stroke")??g};`),s.attr("transform",`translate(${-e.width/2-(e.x-(e.left??0))},${m?-V/2:V/2-e.height})`),A.attr("transform",`translate(0,${m?e.height/2+l/2:-e.height/2-l/2})`),k(t,L),t.intersect=function(X){return Y.info("iconSquare intersect",t,X),$.rect(t,X)},r}x(Be,"iconCircle");async function Te(d,t,{config:{themeVariables:c,flowchart:h}}){let{labelStyles:a}=v(t);t.labelStyle=a;let o=t.assetHeight??48,f=t.assetWidth??48,i=Math.max(o,f),n=h?.wrappingWidth;t.width=Math.max(i,n??0);let{shapeSvg:r,bbox:e,halfPadding:s,label:p}=await G(d,t,"icon-shape default"),l=t.pos==="t",m=i+s*2,g=i+s*2,{nodeBorder:u,mainBkg:y}=c,{stylesMap:b}=yt(t),S=-g/2,N=-m/2,w=t.label?8:0,B=D.svg(r),C=P(t,{});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let R=b.get("fill");C.stroke=R??y;let M=B.path(it(S,N,g,m,5),C),E=Math.max(g,e.width),H=m+e.height+w,W=B.rectangle(-E/2,-H/2,E,H,{...C,fill:"transparent",stroke:"none"}),j=r.insert(()=>M,":first-child").attr("class","icon-shape2"),V=r.insert(()=>W);if(t.icon){let O=r.append("g");O.html(`${await dt(t.icon,{height:i,width:i,fallbackPrefix:""})}`);let A=O.node().getBBox(),L=A.width,X=A.height,_=A.x,z=A.y;O.attr("transform",`translate(${-L/2-_},${l?e.height/2+w/2-X/2-z:-e.height/2-w/2-X/2-z})`),O.attr("style",`color: ${b.get("stroke")??u};`)}return p.attr("transform",`translate(${-e.width/2-(e.x-(e.left??0))},${l?-H/2:H/2-e.height})`),j.attr("transform",`translate(0,${l?e.height/2+w/2:-e.height/2-w/2})`),k(t,V),t.intersect=function(O){if(Y.info("iconSquare intersect",t,O),!t.label)return $.rect(t,O);let A=t.x??0,L=t.y??0,X=t.height??0,_=[];return l?_=[{x:A-e.width/2,y:L-X/2},{x:A+e.width/2,y:L-X/2},{x:A+e.width/2,y:L-X/2+e.height+w},{x:A+g/2,y:L-X/2+e.height+w},{x:A+g/2,y:L+X/2},{x:A-g/2,y:L+X/2},{x:A-g/2,y:L-X/2+e.height+w},{x:A-e.width/2,y:L-X/2+e.height+w}]:_=[{x:A-g/2,y:L-X/2},{x:A+g/2,y:L-X/2},{x:A+g/2,y:L-X/2+m},{x:A+e.width/2,y:L-X/2+m},{x:A+e.width/2/2,y:L+X/2},{x:A-e.width/2,y:L+X/2},{x:A-e.width/2,y:L-X/2+m},{x:A-g/2,y:L-X/2+m}],$.polygon(t,_,O)},r}x(Te,"iconRounded");async function Ce(d,t,{config:{themeVariables:c,flowchart:h}}){let{labelStyles:a}=v(t);t.labelStyle=a;let o=t.assetHeight??48,f=t.assetWidth??48,i=Math.max(o,f),n=h?.wrappingWidth;t.width=Math.max(i,n??0);let{shapeSvg:r,bbox:e,halfPadding:s,label:p}=await G(d,t,"icon-shape default"),l=t.pos==="t",m=i+s*2,g=i+s*2,{nodeBorder:u,mainBkg:y}=c,{stylesMap:b}=yt(t),S=-g/2,N=-m/2,w=t.label?8:0,B=D.svg(r),C=P(t,{});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let R=b.get("fill");C.stroke=R??y;let M=B.path(it(S,N,g,m,.1),C),E=Math.max(g,e.width),H=m+e.height+w,W=B.rectangle(-E/2,-H/2,E,H,{...C,fill:"transparent",stroke:"none"}),j=r.insert(()=>M,":first-child"),V=r.insert(()=>W);if(t.icon){let O=r.append("g");O.html(`${await dt(t.icon,{height:i,width:i,fallbackPrefix:""})}`);let A=O.node().getBBox(),L=A.width,X=A.height,_=A.x,z=A.y;O.attr("transform",`translate(${-L/2-_},${l?e.height/2+w/2-X/2-z:-e.height/2-w/2-X/2-z})`),O.attr("style",`color: ${b.get("stroke")??u};`)}return p.attr("transform",`translate(${-e.width/2-(e.x-(e.left??0))},${l?-H/2:H/2-e.height})`),j.attr("transform",`translate(0,${l?e.height/2+w/2:-e.height/2-w/2})`),k(t,V),t.intersect=function(O){if(Y.info("iconSquare intersect",t,O),!t.label)return $.rect(t,O);let A=t.x??0,L=t.y??0,X=t.height??0,_=[];return l?_=[{x:A-e.width/2,y:L-X/2},{x:A+e.width/2,y:L-X/2},{x:A+e.width/2,y:L-X/2+e.height+w},{x:A+g/2,y:L-X/2+e.height+w},{x:A+g/2,y:L+X/2},{x:A-g/2,y:L+X/2},{x:A-g/2,y:L-X/2+e.height+w},{x:A-e.width/2,y:L-X/2+e.height+w}]:_=[{x:A-g/2,y:L-X/2},{x:A+g/2,y:L-X/2},{x:A+g/2,y:L-X/2+m},{x:A+e.width/2,y:L-X/2+m},{x:A+e.width/2/2,y:L+X/2},{x:A-e.width/2,y:L+X/2},{x:A-e.width/2,y:L-X/2+m},{x:A-g/2,y:L-X/2+m}],$.polygon(t,_,O)},r}x(Ce,"iconSquare");async function Re(d,t,{config:{flowchart:c}}){let h=new Image;h.src=t?.img??"",await h.decode();let a=Number(h.naturalWidth.toString().replace("px","")),o=Number(h.naturalHeight.toString().replace("px",""));t.imageAspectRatio=a/o;let{labelStyles:f}=v(t);t.labelStyle=f;let i=c?.wrappingWidth;t.defaultWidth=c?.wrappingWidth;let n=Math.max(t.label?i??0:0,t?.assetWidth??a),r=t.constraint==="on"&&t?.assetHeight?t.assetHeight*t.imageAspectRatio:n,e=t.constraint==="on"?r/t.imageAspectRatio:t?.assetHeight??o;t.width=Math.max(r,i??0);let{shapeSvg:s,bbox:p,label:l}=await G(d,t,"image-shape default"),m=t.pos==="t",g=-r/2,u=-e/2,y=t.label?8:0,b=D.svg(s),S=P(t,{});t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let N=b.rectangle(g,u,r,e,S),w=Math.max(r,p.width),B=e+p.height+y,C=b.rectangle(-w/2,-B/2,w,B,{...S,fill:"none",stroke:"none"}),R=s.insert(()=>N,":first-child"),M=s.insert(()=>C);if(t.img){let E=s.append("image");E.attr("href",t.img),E.attr("width",r),E.attr("height",e),E.attr("preserveAspectRatio","none"),E.attr("transform",`translate(${-r/2},${m?B/2-e:-B/2})`)}return l.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${m?-e/2-p.height/2-y/2:e/2-p.height/2+y/2})`),R.attr("transform",`translate(0,${m?p.height/2+y/2:-p.height/2-y/2})`),k(t,M),t.intersect=function(E){if(Y.info("iconSquare intersect",t,E),!t.label)return $.rect(t,E);let H=t.x??0,W=t.y??0,j=t.height??0,V=[];return m?V=[{x:H-p.width/2,y:W-j/2},{x:H+p.width/2,y:W-j/2},{x:H+p.width/2,y:W-j/2+p.height+y},{x:H+r/2,y:W-j/2+p.height+y},{x:H+r/2,y:W+j/2},{x:H-r/2,y:W+j/2},{x:H-r/2,y:W-j/2+p.height+y},{x:H-p.width/2,y:W-j/2+p.height+y}]:V=[{x:H-r/2,y:W-j/2},{x:H+r/2,y:W-j/2},{x:H+r/2,y:W-j/2+e},{x:H+p.width/2,y:W-j/2+e},{x:H+p.width/2/2,y:W+j/2},{x:H-p.width/2,y:W+j/2},{x:H-p.width/2,y:W-j/2+e},{x:H-r/2,y:W-j/2+e}],$.polygon(t,V,E)},s}x(Re,"imageSquare");async function Ge(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=a,f=t.look==="neo"?a*2:a,{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=Math.max(n.width+(f??0)*2,t?.width??0),e=Math.max(n.height+(o??0)*2,t?.height??0),s=[{x:0,y:0},{x:r,y:0},{x:r+3*e/6,y:-e},{x:-3*e/6,y:-e}],p,{cssStyles:l}=t;if(t.look==="handDrawn"){let m=D.svg(i),g=P(t,{}),u=I(s),y=m.path(u,g);p=i.insert(()=>y,":first-child").attr("transform",`translate(${-r/2}, ${e/2})`),l&&p.attr("style",l)}else p=et(i,r,e,s);return h&&p.attr("style",h),t.width=r,t.height=e,k(t,p),t.intersect=function(m){return $.polygon(t,s,m)},i}x(Ge,"inv_trapezoid");async function Me(d,t){let{shapeSvg:c,bbox:h,label:a}=await G(d,t,"label"),o=c.insert("rect",":first-child");return o.attr("width",.1).attr("height",.1),c.attr("class","label edgeLabel"),a.attr("transform",`translate(${-(h.width/2)-(h.x-(h.left??0))}, ${-(h.height/2)-(h.y-(h.top??0))})`),k(t,o),t.intersect=function(n){return $.rect(t,n)},c}x(Me,"labelRect");async function Ee(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=a,f=t.look==="neo"?a*2:a,{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=(t?.height??n.height)+o,e=(t?.width??n.width)+f,s=[{x:0,y:0},{x:e+3*r/6,y:0},{x:e,y:-r},{x:-(3*r)/6,y:-r}],p,{cssStyles:l}=t;if(t.look==="handDrawn"){let m=D.svg(i),g=P(t,{}),u=I(s),y=m.path(u,g);p=i.insert(()=>y,":first-child").attr("transform",`translate(${-e/2}, ${r/2})`),l&&p.attr("style",l)}else p=et(i,e,r,s);return h&&p.attr("style",h),t.width=e,t.height=r,k(t,p),t.intersect=function(m){return $.polygon(t,s,m)},i}x(Ee,"lean_left");async function He(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=a,f=t.look==="neo"?a*2:a,{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=(t?.height??n.height)+o,e=(t?.width??n.width)+f,s=[{x:-3*r/6,y:0},{x:e,y:0},{x:e+3*r/6,y:-r},{x:0,y:-r}],p,{cssStyles:l}=t;if(t.look==="handDrawn"){let m=D.svg(i),g=P(t,{}),u=I(s),y=m.path(u,g);p=i.insert(()=>y,":first-child").attr("transform",`translate(${-e/2}, ${r/2})`),l&&p.attr("style",l)}else p=et(i,e,r,s);return h&&p.attr("style",h),t.width=e,t.height=r,k(t,p),t.intersect=function(m){return $.polygon(t,s,m)},i}x(He,"lean_right");function je(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.label="",t.labelStyle=c;let a=d.insert("g").attr("class",T(t)).attr("id",t.domId??t.id),{cssStyles:o}=t,f=Math.max(35,t?.width??0),i=Math.max(35,t?.height??0),n=7,r=[{x:f,y:0},{x:0,y:i+n/2},{x:f-2*n,y:i+n/2},{x:0,y:2*i},{x:f,y:i-n/2},{x:2*n,y:i-n/2}],e=D.svg(a),s=P(t,{});t.look!=="handDrawn"&&(s.roughness=0,s.fillStyle="solid");let p=I(r),l=e.path(p,s),m=a.insert(()=>l,":first-child");return m.attr("class","outer-path"),o&&t.look!=="handDrawn"&&m.selectAll("path").attr("style",o),h&&t.look!=="handDrawn"&&m.selectAll("path").attr("style",h),m.attr("transform",`translate(-${f/2},${-i})`),k(t,m),t.intersect=function(g){return Y.info("lightningBolt intersect",t,g),$.polygon(t,r,g)},a}x(je,"lightningBolt");var Ys=x((d,t,c,h,a,o,f)=>[`M${d},${t+o}`,`a${a},${o} 0,0,0 ${c},0`,`a${a},${o} 0,0,0 ${-c},0`,`l0,${h}`,`a${a},${o} 0,0,0 ${c},0`,`l0,${-h}`,`M${d},${t+o+f}`,`a${a},${o} 0,0,0 ${c},0`].join(" "),"createCylinderPathD"),Fs=x((d,t,c,h,a,o,f)=>[`M${d},${t+o}`,`M${d+c},${t+o}`,`a${a},${o} 0,0,0 ${-c},0`,`l0,${h}`,`a${a},${o} 0,0,0 ${c},0`,`l0,${-h}`,`M${d},${t+o+f}`,`a${a},${o} 0,0,0 ${c},0`].join(" "),"createOuterCylinderPathD"),_s=x((d,t,c,h,a,o)=>[`M${d-c/2},${-h/2}`,`a${a},${o} 0,0,0 ${c},0`].join(" "),"createInnerCylinderPathD"),Ae=10,Oe=10;async function Ve(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?24:a;if(t.width||t.height){let y=t.width??0;t.width=(t.width??0)-o,t.widthB,":first-child").attr("class","line"),g=i.insert(()=>w,":first-child"),g.attr("class","basic label-container"),u&&g.attr("style",u)}else{let y=Ys(0,0,e,l,s,p,m);g=i.insert("path",":first-child").attr("d",y).attr("class","basic label-container outer-path").attr("style",q(u)).attr("style",h)}return g.attr("label-offset-y",p),g.attr("transform",`translate(${-e/2}, ${-(l/2+p)})`),k(t,g),r.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)+p-(n.y-(n.top??0))})`),t.intersect=function(y){let b=$.rect(t,y),S=b.x-(t.x??0);if(s!=0&&(Math.abs(S)<(t.width??0)/2||Math.abs(S)==(t.width??0)/2&&Math.abs(b.y-(t.y??0))>(t.height??0)/2-p)){let N=p*p*(1-S*S/(s*s));N>0&&(N=Math.sqrt(N)),N=p-N,y.y-(t.y??0)>0&&(N=-N),b.y+=N}return b},i}x(Ve,"linedCylinder");async function Le(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?12:a;if(t.width||t.height){let N=t.width;t.width=(N??0)*10/11-o*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-f*2,t.height<10&&(t.height=10)}let{shapeSvg:i,bbox:n,label:r}=await G(d,t,T(t)),e=(t?.width?t?.width:n.width)+(o??0)*2,s=(t?.height?t?.height:n.height)+(f??0)*2,p=t.look==="neo"?s/4:s/8,l=s+p,{cssStyles:m}=t,g=D.svg(i),u=P(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=[{x:-e/2-e/2*.1,y:-l/2},{x:-e/2-e/2*.1,y:l/2},...at(-e/2-e/2*.1,l/2,e/2+e/2*.1,l/2,p,.8),{x:e/2+e/2*.1,y:-l/2},{x:-e/2-e/2*.1,y:-l/2},{x:-e/2,y:-l/2},{x:-e/2,y:l/2*1.1},{x:-e/2,y:-l/2}],b=g.polygon(y.map(N=>[N.x,N.y]),u),S=i.insert(()=>b,":first-child");return S.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",m),h&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",h),S.attr("transform",`translate(0,${-p/2})`),r.attr("transform",`translate(${-e/2+(t.padding??0)+e/2*.1/2-(n.x-(n.left??0))},${-s/2+(t.padding??0)-p/2-(n.y-(n.top??0))})`),k(t,S),t.intersect=function(N){return $.polygon(t,y,N)},i}x(Le,"linedWaveEdgedRect");async function Ie(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?12:a,i=t.look==="neo"?10:5;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-o*2-2*i,10),t.height=Math.max((t?.height??0)-f*2-2*i,10));let{shapeSvg:n,bbox:r,label:e}=await G(d,t,T(t)),s=(t?.width?t?.width:r.width)+o*2+2*i,p=(t?.height?t?.height:r.height)+f*2+2*i,l=s-2*i,m=p-2*i,g=-l/2,u=-m/2,{cssStyles:y}=t,b=D.svg(n),S=P(t,{}),N=[{x:g-i,y:u+i},{x:g-i,y:u+m+i},{x:g+l-i,y:u+m+i},{x:g+l-i,y:u+m},{x:g+l,y:u+m},{x:g+l,y:u+m-i},{x:g+l+i,y:u+m-i},{x:g+l+i,y:u-i},{x:g+i,y:u-i},{x:g+i,y:u},{x:g,y:u},{x:g,y:u+i}],w=[{x:g,y:u+i},{x:g+l-i,y:u+i},{x:g+l-i,y:u+m},{x:g+l,y:u+m},{x:g+l,y:u},{x:g,y:u}];t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let B=I(N),C=b.path(B,S),R=I(w),M=b.path(R,S);t.look!=="handDrawn"&&(C=Wt(C),M=Wt(M));let E=n.insert("g",":first-child");return E.insert(()=>C),E.insert(()=>M),E.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&E.selectAll("path").attr("style",y),h&&t.look!=="handDrawn"&&E.selectAll("path").attr("style",h),e.attr("transform",`translate(${-(r.width/2)-i-(r.x-(r.left??0))}, ${-(r.height/2)+i-(r.y-(r.top??0))})`),k(t,E),t.intersect=function(H){return $.polygon(t,N,H)},n}x(Ie,"multiRect");async function We(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let{shapeSvg:a,bbox:o,label:f}=await G(d,t,T(t)),i=t.padding??0,n=t.look==="neo"?16:i,r=t.look==="neo"?12:i,e=!0;(t.width||t.height)&&(e=!1,t.width=(t?.width??0)-n*2,t.height=(t?.height??0)-r*3);let s=Math.max(o.width,t?.width??0)+n*2,p=Math.max(o.height,t?.height??0)+r*3,l=t.look==="neo"?p/4:p/8,m=p+(e?l/2:-l/2),g=-s/2,u=-m/2,y=10,{cssStyles:b}=t,S=at(g-y,u+m+y,g+s-y,u+m+y,l,.8),N=S?.[S.length-1],w=[{x:g-y,y:u+y},{x:g-y,y:u+m+y},...S,{x:g+s-y,y:N.y-y},{x:g+s,y:N.y-y},{x:g+s,y:N.y-2*y},{x:g+s+y,y:N.y-2*y},{x:g+s+y,y:u-y},{x:g+y,y:u-y},{x:g+y,y:u},{x:g,y:u},{x:g,y:u+y}],B=[{x:g,y:u+y},{x:g+s-y,y:u+y},{x:g+s-y,y:N.y-y},{x:g+s,y:N.y-y},{x:g+s,y:u},{x:g,y:u}],C=D.svg(a),R=P(t,{});t.look!=="handDrawn"&&(R.roughness=0,R.fillStyle="solid");let M=I(w),E=C.path(M,R),H=I(B),W=C.path(H,R),j=a.insert(()=>E,":first-child");return j.insert(()=>W),j.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&j.selectAll("path").attr("style",b),h&&t.look!=="handDrawn"&&j.selectAll("path").attr("style",h),j.attr("transform",`translate(0,${-l/2})`),f.attr("transform",`translate(${-(o.width/2)-y-(o.x-(o.left??0))}, ${-(o.height/2)+y-l/2-(o.y-(o.top??0))})`),k(t,j),t.intersect=function(V){return $.polygon(t,w,V)},a}x(We,"multiWaveEdgedRectangle");async function Xe(d,t,{config:{themeVariables:c}}){let{labelStyles:h,nodeStyles:a}=v(t);t.labelStyle=h,t.useHtmlLabels||tt(ft())||(t.centerLabel=!0);let{shapeSvg:f,bbox:i,label:n}=await G(d,t,T(t)),r=Math.max(i.width+(t.padding??0)*2,t?.width??0),e=Math.max(i.height+(t.padding??0)*2,t?.height??0),s=-r/2,p=-e/2,{cssStyles:l}=t,m=D.svg(f),g=P(t,{fill:c.noteBkgColor,stroke:c.noteBorderColor});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let u=m.rectangle(s,p,r,e,g),y=f.insert(()=>u,":first-child");return y.attr("class","basic label-container outer-path"),n.attr("class","label noteLabel"),l&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",a),n.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${-(i.height/2)-(i.y-(i.top??0))})`),k(t,y),t.intersect=function(b){return $.rect(t,b)},f}x(Xe,"note");var qs=x((d,t,c)=>[`M${d+c/2},${t}`,`L${d+c},${t-c/2}`,`L${d+c/2},${t-c}`,`L${d},${t-c/2}`,"Z"].join(" "),"createDecisionBoxPathD");async function Ye(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let{shapeSvg:a,bbox:o}=await G(d,t,T(t)),f=o.width+(t.padding??0),i=o.height+(t.padding??0),n=f+i,r=.5,e=[{x:n/2,y:0},{x:n,y:-n/2},{x:n/2,y:-n},{x:0,y:-n/2}],s,{cssStyles:p}=t;if(t.look==="handDrawn"){let l=D.svg(a),m=P(t,{}),g=qs(0,0,n),u=l.path(g,m);s=a.insert(()=>u,":first-child").attr("transform",`translate(${-n/2+r}, ${n/2})`),p&&s.attr("style",p)}else s=et(a,n,n,e),s.attr("transform",`translate(${-n/2+r}, ${n/2})`);return h&&s.attr("style",h),k(t,s),t.calcIntersect=function(l,m){let g=l.width,u=[{x:g/2,y:0},{x:g,y:-g/2},{x:g/2,y:-g},{x:0,y:-g/2}],y=$.polygon(l,u,m);return{x:y.x-.5,y:y.y-.5}},t.intersect=function(l){return this.calcIntersect(t,l)},a}x(Ye,"question");async function Fe(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?21:a??0,f=t.look==="neo"?12:a??0,{shapeSvg:i,bbox:n,label:r}=await G(d,t,T(t)),e=(t?.width??n.width)+(t.look==="neo"?o*2:o),s=(t?.height??n.height)+(t.look==="neo"?f*2:f),p=-e/2,l=-s/2,m=l/2,g=[{x:p+m,y:l},{x:p,y:0},{x:p+m,y:-l},{x:-p,y:-l},{x:-p,y:l}],{cssStyles:u}=t,y=D.svg(i),b=P(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let S=I(g),N=y.path(S,b),w=i.insert(()=>N,":first-child");return w.attr("class","basic label-container outer-path"),u&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",u),h&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",h),w.attr("transform",`translate(${-m/2},0)`),r.attr("transform",`translate(${-m/2-n.width/2-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),k(t,w),t.intersect=function(B){return $.polygon(t,g,B)},i}x(Fe,"rect_left_inv_arrow");async function _e(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a;t.cssClasses?a="node "+t.cssClasses:a="node default";let o=d.insert("g").attr("class",a).attr("id",t.domId||t.id),f=o.insert("g"),i=o.insert("g").attr("class","label").attr("style",h),n=t.description,r=t.label,e=await vt(i,r,t.labelStyle,!0,!0),s={width:0,height:0};if(tt(Z())){let R=e.children[0],M=J(e);s=R.getBoundingClientRect(),M.attr("width",s.width),M.attr("height",s.height)}Y.info("Text 2",n);let p=n||[],l=e.getBBox(),m=await vt(i,Array.isArray(p)?p.join("
    "):p,t.labelStyle,!0,!0),g=m.children[0],u=J(m);s=g.getBoundingClientRect(),u.attr("width",s.width),u.attr("height",s.height);let y=(t.padding||0)/2;J(m).attr("transform","translate( "+(s.width>l.width?0:(l.width-s.width)/2)+", "+(l.height+y+5)+")"),J(e).attr("transform","translate( "+(s.width(Y.debug("Rough node insert CXC",E),H),":first-child"),B=o.insert(()=>(Y.debug("Rough node insert CXC",E),E),":first-child")}else B=f.insert("rect",":first-child"),C=f.insert("line"),B.attr("class","outer title-state").attr("style",h).attr("x",-s.width/2-y).attr("y",-s.height/2-y).attr("width",s.width+(t.padding||0)).attr("height",s.height+(t.padding||0)),C.attr("class","divider").attr("x1",-s.width/2-y).attr("x2",s.width/2+y).attr("y1",-s.height/2-y+l.height+y).attr("y2",-s.height/2-y+l.height+y);return k(t,B),t.intersect=function(R){return $.rect(t,R)},o}x(_e,"rectWithTitle");async function qe(d,t,{config:{themeVariables:c}}){let h=c?.radius??5,a={rx:h,ry:h,classes:"",labelPaddingX:(t?.padding??0)*1,labelPaddingY:(t?.padding??0)*1};return ct(d,t,a)}x(qe,"roundedRect");var Dt=8;async function ze(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.look==="neo"?16:t.padding??0,o=t.look==="neo"?12:t.padding??0,{shapeSvg:f,bbox:i,label:n}=await G(d,t,T(t)),r=(t?.width??i.width)+a*2+(t.look==="neo"?Dt:Dt*2),e=(t?.height??i.height)+o*2,s=r-Dt,p=e,l=Dt-r/2,m=-e/2,{cssStyles:g}=t,u=D.svg(f),y=P(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let b=[{x:l,y:m},{x:l+s,y:m},{x:l+s,y:m+p},{x:l-Dt,y:m+p},{x:l-Dt,y:m},{x:l,y:m},{x:l,y:m+p}],S=u.polygon(b.map(w=>[w.x,w.y]),y),N=f.insert(()=>S,":first-child");return N.attr("class","basic label-container outer-path").attr("style",q(g)),h&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",h),g&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",h),n.attr("transform",`translate(${Dt/2-i.width/2-(i.x-(i.left??0))}, ${-(i.height/2)-(i.y-(i.top??0))})`),k(t,N),t.intersect=function(w){return $.rect(t,w)},f}x(ze,"shadedProcess");async function Ue(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?12:a;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-o*2,10),t.height=Math.max((t?.height??0)/1.5-f*2,10));let{shapeSvg:i,bbox:n,label:r}=await G(d,t,T(t)),e=(t?.width?t?.width:n.width)+o*2,s=((t?.height?t?.height:n.height)+f*2)*1.5,p=e,l=s/1.5,m=-p/2,g=-l/2,{cssStyles:u}=t,y=D.svg(i),b=P(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let S=[{x:m,y:g},{x:m,y:g+l},{x:m+p,y:g+l},{x:m+p,y:g-l/2}],N=I(S),w=y.path(N,b),B=i.insert(()=>w,":first-child");return B.attr("class","basic label-container outer-path"),u&&t.look!=="handDrawn"&&B.selectChildren("path").attr("style",u),h&&t.look!=="handDrawn"&&B.selectChildren("path").attr("style",h),B.attr("transform",`translate(0, ${l/4})`),r.attr("transform",`translate(${-p/2+(t.padding??0)-(n.x-(n.left??0))}, ${-l/4+(t.padding??0)-(n.y-(n.top??0))})`),k(t,B),t.intersect=function(C){return $.polygon(t,S,C)},i}x(Ue,"slopedRect");async function Ze(d,t){let c=t.padding??0,h=t.look==="neo"?16:c*2,a=t.look==="neo"?12:c,o={rx:0,ry:0,classes:"",labelPaddingX:t.labelPaddingX??h,labelPaddingY:a};return ct(d,t,o)}x(Ze,"squareRect");async function Je(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?20:a,f=t.look==="neo"?12:a,{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=n.height+(t.look==="neo"?f*2:f),e=n.width+r/4+(t.look==="neo"?o*2:o),s=r/2,{cssStyles:p}=t,l=D.svg(i),m=P(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-e/2+s,y:-r/2},{x:e/2-s,y:-r/2},...$t(-e/2+s,0,s,50,90,270),{x:e/2-s,y:r/2},...$t(e/2-s,0,s,50,270,450)],u=I(g),y=l.path(u,m),b=i.insert(()=>y,":first-child");return b.attr("class","basic label-container outer-path"),p&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",p),h&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",h),k(t,b),t.intersect=function(S){return $.polygon(t,g,S)},i}x(Je,"stadium");async function Ke(d,t){let c={rx:t.look==="neo"?3:5,ry:t.look==="neo"?3:5,classes:"flowchart-node"};return ct(d,t,c)}x(Ke,"state");function Qe(d,t,{config:{themeVariables:c}}){let{labelStyles:h,nodeStyles:a}=v(t);t.labelStyle=h;let{cssStyles:o}=t,{lineColor:f,stateBorder:i,nodeBorder:n,nodeShadow:r}=c;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let e=d.insert("g").attr("class","node default").attr("id",t.domId??t.id),s=D.svg(e),p=P(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let l=s.circle(0,0,t.width,{...p,stroke:f,strokeWidth:2}),m=i??n,g=(t.width??0)*5/14,u=s.circle(0,0,g,{...p,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),y=e.insert(()=>l,":first-child");if(y.insert(()=>u),t.look!=="handDrawn"&&y.attr("class","outer-path"),o&&y.selectAll("path").attr("style",o),a&&y.selectAll("path").attr("style",a),t.width<25&&r&&t.look!=="handDrawn"){let b=d.node()?.ownerSVGElement?.id??"",S=b?`${b}-drop-shadow-small`:"drop-shadow-small";y.attr("style",`filter:url(#${S})`)}return k(t,y),t.intersect=function(b){return $.circle(t,(t.width??0)/2,b)},e}x(Qe,"stateEnd");function ts(d,t,{config:{themeVariables:c}}){let{lineColor:h,nodeShadow:a}=c;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let o=d.insert("g").attr("class","node default").attr("id",t.domId||t.id),f;if(t.look==="handDrawn"){let n=D.svg(o).circle(0,0,t.width,Ut(h));f=o.insert(()=>n),f.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14)}else f=o.insert("circle",":first-child"),f.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14);if(t.width<25&&a&&t.look!=="handDrawn"){let i=d.node()?.ownerSVGElement?.id??"",n=i?`${i}-drop-shadow-small`:"drop-shadow-small";f.attr("style",`filter:url(#${n})`)}return k(t,f),t.intersect=function(i){return $.circle(t,(t.width??7)/2,i)},o}x(ts,"stateStart");var kt=8;async function es(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t?.padding??8,o=t.look==="neo"?28:a,f=t.look==="neo"?12:a,{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=(t?.width??n.width)+2*kt+o,e=(t?.height??n.height)+f,s=r-2*kt,p=e,l=-r/2,m=-e/2,g=[{x:0,y:0},{x:s,y:0},{x:s,y:-p},{x:0,y:-p},{x:0,y:0},{x:-8,y:0},{x:s+8,y:0},{x:s+8,y:-p},{x:-8,y:-p},{x:-8,y:0}];if(t.look==="handDrawn"){let u=D.svg(i),y=P(t,{}),b=u.rectangle(l,m,s+16,p,y),S=u.line(l+kt,m,l+kt,m+p,y),N=u.line(l+kt+s,m,l+kt+s,m+p,y);i.insert(()=>S,":first-child"),i.insert(()=>N,":first-child");let w=i.insert(()=>b,":first-child"),{cssStyles:B}=t;w.attr("class","basic label-container").attr("style",q(B)),k(t,w)}else{let u=et(i,s,p,g);h&&u.attr("style",h),k(t,u)}return t.intersect=function(u){return $.polygon(t,g,u)},i}x(es,"subroutine");var Xt=.2;async function ss(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?12:a;(t.width||t.height)&&(t.height=Math.max((t?.height??0)-f*2,10),t.width=Math.max((t?.width??0)-o*2-Xt*(t.height+f*2),10));let{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=(t?.height?t?.height:n.height)+f*2,e=Xt*r,s=Xt*r,l=(t?.width?t?.width:n.width)+o*2+e-e,m=r,g=-l/2,u=-m/2,{cssStyles:y}=t,b=D.svg(i),S=P(t,{}),N=[{x:g-e/2,y:u},{x:g+l+e/2,y:u},{x:g+l+e/2,y:u+m},{x:g-e/2,y:u+m}],w=[{x:g+l-e/2,y:u+m},{x:g+l+e/2,y:u+m},{x:g+l+e/2,y:u+m-s}];t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let B=I(N),C=b.path(B,S),R=I(w),M=b.path(R,{...S,fillStyle:"solid"}),E=i.insert(()=>M,":first-child");return E.insert(()=>C,":first-child"),E.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&E.selectAll("path").attr("style",y),h&&t.look!=="handDrawn"&&E.selectAll("path").attr("style",h),k(t,E),t.intersect=function(H){return $.polygon(t,N,H)},i}x(ss,"taggedRect");async function rs(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let{shapeSvg:a,bbox:o,label:f}=await G(d,t,T(t)),i=Math.max(o.width+(t.padding??0)*2,t?.width??0),n=Math.max(o.height+(t.padding??0)*2,t?.height??0),r=n/8,e=.2*i,s=.2*n,p=n+r,{cssStyles:l}=t,m=D.svg(a),g=P(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let u=[{x:-i/2-i/2*.1,y:p/2},...at(-i/2-i/2*.1,p/2,i/2+i/2*.1,p/2,r,.8),{x:i/2+i/2*.1,y:-p/2},{x:-i/2-i/2*.1,y:-p/2}],y=-i/2+i/2*.1,b=-p/2-s*.4,S=[{x:y+i-e,y:(b+n)*1.3},{x:y+i,y:b+n-s},{x:y+i,y:(b+n)*.9},...at(y+i,(b+n)*1.25,y+i-e,(b+n)*1.3,-n*.02,.5)],N=I(u),w=m.path(N,g),B=I(S),C=m.path(B,{...g,fillStyle:"solid"}),R=a.insert(()=>C,":first-child");return R.insert(()=>w,":first-child"),R.attr("class","basic label-container outer-path"),l&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",l),h&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",h),R.attr("transform",`translate(0,${-r/2})`),f.attr("transform",`translate(${-i/2+(t.padding??0)-(o.x-(o.left??0))},${-n/2+(t.padding??0)-r/2-(o.y-(o.top??0))})`),k(t,R),t.intersect=function(M){return $.polygon(t,u,M)},a}x(rs,"taggedWaveEdgedRectangle");async function is(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let{shapeSvg:a,bbox:o}=await G(d,t,T(t)),f=Math.max(o.width+(t.padding??0),t?.width||0),i=Math.max(o.height+(t.padding??0),t?.height||0),n=-f/2,r=-i/2,e=a.insert("rect",":first-child");return e.attr("class","text").attr("style",h).attr("rx",0).attr("ry",0).attr("x",n).attr("y",r).attr("width",f).attr("height",i),k(t,e),t.intersect=function(s){return $.rect(t,s)},a}x(is,"text");var zs=x((d,t,c,h,a,o)=>`M${d},${t} + a${a},${o} 0,0,1 0,${-h} + l${c},0 + a${a},${o} 0,0,1 0,${h} + M${c},${-h} + a${a},${o} 0,0,0 0,${h} + l${-c},0`,"createCylinderPathD"),Us=x((d,t,c,h,a,o)=>[`M${d},${t}`,`M${d+c},${t}`,`a${a},${o} 0,0,0 0,${-h}`,`l${-c},0`,`a${a},${o} 0,0,0 0,${h}`,`l${c},0`].join(" "),"createOuterCylinderPathD"),Zs=x((d,t,c,h,a,o)=>[`M${d+c/2},${-h/2}`,`a${a},${o} 0,0,0 0,${h}`].join(" "),"createInnerCylinderPathD"),os=5,as=10;async function ns(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?12:a/2;if(t.width||t.height){let g=t.height??0;t.height=(t.height??0)-o,t.heightS,":first-child"),m=f.insert(()=>b,":first-child"),m.attr("class","basic label-container"),l&&m.attr("style",l)}else{let g=zs(0,0,p,r,s,e);m=f.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",q(l)).attr("style",h),m.attr("class","basic label-container outer-path"),l&&m.selectAll("path").attr("style",l),h&&m.selectAll("path").attr("style",h)}return m.attr("label-offset-x",s),m.attr("transform",`translate(${-p/2}, ${r/2} )`),n.attr("transform",`translate(${-(i.width/2)-s-(i.x-(i.left??0))}, ${-(i.height/2)-(i.y-(i.top??0))})`),k(t,m),t.intersect=function(g){let u=$.rect(t,g),y=u.y-(t.y??0);if(e!=0&&(Math.abs(y)<(t.height??0)/2||Math.abs(y)==(t.height??0)/2&&Math.abs(u.x-(t.x??0))>(t.width??0)/2-s)){let b=s*s*(1-y*y/(e*e));b!=0&&(b=Math.sqrt(Math.abs(b))),b=s-b,g.x-(t.x??0)>0&&(b=-b),u.x+=b}return u},f}x(ns,"tiltedCylinder");async function ls(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=(t.look==="neo",a),f=t.look==="neo"?a*2:a,{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=(t?.height??n.height)+o,e=(t?.width??n.width)+f,s=[{x:-3*r/6,y:0},{x:e+3*r/6,y:0},{x:e,y:-r},{x:0,y:-r}],p,{cssStyles:l}=t;if(t.look==="handDrawn"){let m=D.svg(i),g=P(t,{}),u=I(s),y=m.path(u,g);p=i.insert(()=>y,":first-child").attr("transform",`translate(${-e/2}, ${r/2})`),l&&p.attr("style",l)}else p=et(i,e,r,s);return h&&p.attr("style",h),t.width=e,t.height=r,k(t,p),t.intersect=function(m){return $.polygon(t,s,m)},i}x(ls,"trapezoid");async function cs(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?12:a,i=15,n=5;(t.width||t.height)&&(t.height=(t.height??0)-f*2,t.heightb,":first-child");return S.attr("class","basic label-container outer-path"),l&&t.look!=="handDrawn"&&S.selectChildren("path").attr("style",l),h&&t.look!=="handDrawn"&&S.selectChildren("path").attr("style",h),k(t,S),t.intersect=function(N){return $.polygon(t,u,N)},r}x(cs,"trapezoidalPentagon");var hs=10,ps=10;async function ms(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?a*2:a;(t.width||t.height)&&(t.width=((t?.width??0)-o)/2,t.widthb,":first-child").attr("transform",`translate(${-s/2}, ${s/2})`).attr("class","outer-path");return m&&t.look!=="handDrawn"&&S.selectChildren("path").attr("style",m),h&&t.look!=="handDrawn"&&S.selectChildren("path").attr("style",h),t.width=e,t.height=s,k(t,S),n.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${s/2-(i.height+(t.padding??0)/(r?2:1)-(i.y-(i.top??0)))})`),t.intersect=function(N){return Y.info("Triangle intersect",t,l,N),$.polygon(t,l,N)},f}x(ms,"triangle");async function gs(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?12:a,i=!0;(t.width||t.height)&&(i=!1,t.width=(t?.width??0)-o*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-f*2,t.height<10&&(t.height=10));let{shapeSvg:n,bbox:r,label:e}=await G(d,t,T(t)),s=(t?.width?t?.width:r.width)+(o??0)*2,p=(t?.height?t?.height:r.height)+(f??0)*2,l=t.look==="neo"?p/4:p/8,m=p+(i?l:-l),{cssStyles:g}=t,y=14-s,b=y>0?y/2:0,S=D.svg(n),N=P(t,{});t.look!=="handDrawn"&&(N.roughness=0,N.fillStyle="solid");let w=[{x:-s/2-b,y:m/2},...at(-s/2-b,m/2,s/2+b,m/2,l,.8),{x:s/2+b,y:-m/2},{x:-s/2-b,y:-m/2}],B=I(w),C=S.path(B,N),R=n.insert(()=>C,":first-child");return R.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",g),h&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",h),R.attr("transform",`translate(0,${-l/2})`),e.attr("transform",`translate(${-s/2+(t.padding??0)-(r.x-(r.left??0))},${-p/2+(t.padding??0)-l-(r.y-(r.top??0))})`),k(t,R),t.intersect=function(M){return $.polygon(t,w,M)},n}x(gs,"waveEdgedRectangle");async function fs(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.padding??0,o=t.look==="neo"?16:a,f=t.look==="neo"?20:a;if(t.width||t.height){t.width=t?.width??0,t.width<20&&(t.width=20),t.height=t?.height??0,t.height<10&&(t.height=10);let N=Math.min(t.height*.2,t.height/4);t.height=Math.ceil(t.height-f-N*(20/9)),t.width=t.width-o*2}let{shapeSvg:i,bbox:n}=await G(d,t,T(t)),r=(t?.width?t?.width:n.width)+o*2,e=(t?.height?t?.height:n.height)+f,s=e/8,p=e+s*2,{cssStyles:l}=t,m=D.svg(i),g=P(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let u=[{x:-r/2,y:p/2},...at(-r/2,p/2,r/2,p/2,s,1),{x:r/2,y:-p/2},...at(r/2,-p/2,-r/2,-p/2,s,-1)],y=I(u),b=m.path(y,g),S=i.insert(()=>b,":first-child");return S.attr("class","basic label-container"),l&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",l),h&&t.look!=="handDrawn"&&S.selectAll("path").attr("style",h),k(t,S),t.intersect=function(N){return $.polygon(t,u,N)},i}x(fs,"waveRectangle");var K=10;async function ds(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t.look==="neo"?16:t.padding??0,o=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2-K,10),t.height=Math.max((t?.height??0)-o*2-K,10));let{shapeSvg:f,bbox:i,label:n}=await G(d,t,T(t)),r=(t?.width?t?.width:i.width)+a*2+K,e=(t?.height?t?.height:i.height)+o*2+K,s=r-K,p=e-K,l=-s/2,m=-p/2,{cssStyles:g}=t,u=D.svg(f),y=P(t,{}),b=[{x:l-K,y:m-K},{x:l-K,y:m+p},{x:l+s,y:m+p},{x:l+s,y:m-K}],S=`M${l-K},${m-K} L${l+s},${m-K} L${l+s},${m+p} L${l-K},${m+p} L${l-K},${m-K} + M${l-K},${m} L${l+s},${m} + M${l},${m-K} L${l},${m+p}`;t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let N=u.path(S,y),w=f.insert(()=>N,":first-child");return w.attr("transform",`translate(${K/2}, ${K/2})`),w.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",g),h&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",h),n.attr("transform",`translate(${-(i.width/2)+K/2-(i.x-(i.left??0))}, ${-(i.height/2)+K/2-(i.y-(i.top??0))})`),k(t,w),t.intersect=function(B){return $.polygon(t,b,B)},f}x(ds,"windowPane");var ys=new Set(["redux-color","redux-dark-color"]),Js=new Set(["redux","redux-dark","redux-color","redux-dark-color"]);async function Yt(d,t){let c=t;c.alias&&(t.label=c.alias);let{theme:h,themeVariables:a}=ft(),{rowEven:o,rowOdd:f,nodeBorder:i,borderColorArray:n}=a;if(t.look==="handDrawn"){let{themeVariables:F}=ft(),{background:U}=F,Q={...t,id:t.id+"-background",domId:(t.domId||t.id)+"-background",look:"default",cssStyles:["stroke: none",`fill: ${U}`]};await Yt(d,Q)}let r=ft();t.useHtmlLabels=r.htmlLabels;let e=r.er?.diagramPadding??10,s=r.er?.entityPadding??6,{cssStyles:p}=t,{labelStyles:l,nodeStyles:m}=v(t);if(c.attributes.length===0&&t.label){let F={rx:0,ry:0,labelPaddingX:e,labelPaddingY:e*1.5,classes:""};wt(t.label,r)+F.labelPaddingX*20){let F=y.width+e*2-(w+B+C+R);w+=F/H,B+=F/H,C>0&&(C+=F/H),R>0&&(R+=F/H)}let j=w+B+C+R,V=D.svg(u),O=P(t,{});t.look!=="handDrawn"&&(O.roughness=0,O.fillStyle="solid");let A=0;N.length>0&&(A=N.reduce((F,U)=>F+(U?.rowHeight??0),0));let L=Math.max(W.width+e*2,t?.width||0,j),X=Math.max((A??0)+y.height,t?.height||0),_=-L/2,z=-X/2;if(u.selectAll("g:not(:first-child)").each((F,U,Q)=>{let ot=J(Q[U]),St=ot.attr("transform"),gt=0,_t=0;if(St){let Ot=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(St);Ot&&(gt=parseFloat(Ot[1]),_t=parseFloat(Ot[2]),ot.attr("class").includes("attribute-name")?gt+=w:ot.attr("class").includes("attribute-keys")?gt+=w+B:ot.attr("class").includes("attribute-comment")&&(gt+=w+B+C))}ot.attr("transform",`translate(${_+e/2+gt}, ${_t+z+y.height+s/2})`)}),u.select(".name").attr("transform","translate("+-y.width/2+", "+(z+s/2)+")"),h!=null&&ys.has(h)){let F=c.colorIndex??0;u.attr("data-color-id",`color-${F%n.length}`)}let Bt=V.rectangle(_,z,L,X,O),Pt=u.insert(()=>Bt,":first-child").attr("class","outer-path").attr("style",p.join(""));S.push(0);for(let[F,U]of N.entries()){let ot=(F+1)%2===0&&U.yOffset!==0,St=V.rectangle(_,y.height+z+U?.yOffset,L,U?.rowHeight,{...O,fill:ot?o:f,stroke:i});u.insert(()=>St,"g.label").attr("style",p.join("")).attr("class",`row-rect-${ot?"even":"odd"}`)}let ht=1e-4,nt=Ct(_,y.height+z,L+_,y.height+z,ht),pt=V.polygon(nt.map(F=>[F.x,F.y]),O);if(u.insert(()=>pt).attr("class","divider"),nt=Ct(w+_,y.height+z,w+_,X+z,ht),pt=V.polygon(nt.map(F=>[F.x,F.y]),O),u.insert(()=>pt).attr("class","divider"),M){let F=w+B+_;nt=Ct(F,y.height+z,F,X+z,ht),pt=V.polygon(nt.map(U=>[U.x,U.y]),O),u.insert(()=>pt).attr("class","divider")}if(E){let F=w+B+C+_;nt=Ct(F,y.height+z,F,X+z,ht),pt=V.polygon(nt.map(U=>[U.x,U.y]),O),u.insert(()=>pt).attr("class","divider")}for(let F of S){let U=y.height+z+F;nt=Ct(_,U,L+_,U,ht),pt=V.polygon(nt.map(Q=>[Q.x,Q.y]),O),u.insert(()=>pt).attr("class","divider")}if(k(t,Pt),m&&t.look!=="handDrawn")if(h!=null&&Js.has(h))u.selectAll("path").attr("style",m);else{let U=m.split(";")?.filter(Q=>Q.includes("stroke"))?.map(Q=>`${Q}`).join("; ");u.selectAll("path").attr("style",U??""),u.selectAll(".row-rect-even path").attr("style",m)}return t.intersect=function(F){return $.rect(t,F)},u}x(Yt,"erBox");async function Tt(d,t,c,h=0,a=0,o=[],f=""){let i=d.insert("g").attr("class",`label ${o.join(" ")}`).attr("transform",`translate(${h}, ${a})`).attr("style",f);t!==Lt(t)&&(t=Lt(t),t=t.replaceAll("<","<").replaceAll(">",">"));let n=i.node().appendChild(await rt(i,t,{width:wt(t,c)+100,style:f,useHtmlLabels:c.htmlLabels},c));if(t.includes("<")||t.includes(">")){let e=n.children[0];for(e.textContent=e.textContent.replaceAll("<","<").replaceAll(">",">");e.childNodes[0];)e=e.childNodes[0],e.textContent=e.textContent.replaceAll("<","<").replaceAll(">",">")}let r=n.getBBox();if(lt(c.htmlLabels)){let e=n.children[0];e.style.textAlign="start";let s=J(n);r=e.getBoundingClientRect(),s.attr("width",r.width),s.attr("height",r.height)}return r}x(Tt,"addText");function Ct(d,t,c,h,a){return d===c?[{x:d-a/2,y:t},{x:d+a/2,y:t},{x:c+a/2,y:h},{x:c-a/2,y:h}]:[{x:d,y:t-a/2},{x:d,y:t+a/2},{x:c,y:h+a/2},{x:c,y:h-a/2}]}x(Ct,"lineToPolygon");async function us(d,t,c,h,a=c.class.padding??12){let o=h?0:3,f=d.insert("g").attr("class",T(t)).attr("id",t.domId||t.id),i=null,n=null,r=null,e=null,s=0,p=0,l=0;if(i=f.insert("g").attr("class","annotation-group text"),t.annotations.length>0){let b=t.annotations[0];await jt(i,{text:`\xAB${b}\xBB`},0),s=i.node().getBBox().height}n=f.insert("g").attr("class","label-group text"),await jt(n,t,0,["font-weight: bolder"]);let m=n.node().getBBox();p=m.height,r=f.insert("g").attr("class","members-group text");let g=0;for(let b of t.members){let S=await jt(r,b,g,[b.parseClassifier()]);g+=S+o}l=r.node().getBBox().height,l<=0&&(l=a/2),e=f.insert("g").attr("class","methods-group text");let u=0;for(let b of t.methods){let S=await jt(e,b,u,[b.parseClassifier()]);u+=S+o}let y=f.node().getBBox();if(i!==null){let b=i.node().getBBox();i.attr("transform",`translate(${-b.width/2})`)}return n.attr("transform",`translate(${-m.width/2}, ${s})`),y=f.node().getBBox(),r.attr("transform",`translate(0, ${s+p+a*2})`),y=f.node().getBBox(),e.attr("transform",`translate(0, ${s+p+(l?l+a*4:a*2)})`),y=f.node().getBBox(),{shapeSvg:f,bbox:y}}x(us,"textHelper");async function jt(d,t,c,h=[]){let a=d.insert("g").attr("class","label").attr("style",h.join("; ")),o=ft(),f="useHtmlLabels"in t?t.useHtmlLabels:lt(o.htmlLabels)??!0,i="";"text"in t?i=t.text:i=t.label,!f&&i.startsWith("\\")&&(i=i.substring(1)),qt(i)&&(f=!0);let n=await rt(a,Rt(Nt(i)),{width:wt(i,o)+50,classes:"markdown-node-label",useHtmlLabels:f},o),r,e=1;if(f){let s=n.children[0],p=J(n);e=s.innerHTML.split("
    ").length,s.innerHTML.includes("")&&(e+=s.innerHTML.split("").length-1);let l=s.getElementsByTagName("img");if(l){let m=i.replace(/]*>/g,"").trim()==="";await Promise.all([...l].map(g=>new Promise(u=>{function y(){if(g.style.display="flex",g.style.flexDirection="column",m){let b=o.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,N=parseInt(b,10)*5+"px";g.style.minWidth=N,g.style.maxWidth=N}else g.style.width="100%";u(g)}x(y,"setupImage"),setTimeout(()=>{g.complete&&y()}),g.addEventListener("error",y),g.addEventListener("load",y)})))}r=s.getBoundingClientRect(),p.attr("width",r.width),p.attr("height",r.height)}else{h.includes("font-weight: bolder")&&J(n).selectAll("tspan").attr("font-weight",""),e=n.children.length;let s=n.children[0];(n.textContent===""||n.textContent.includes(">"))&&(s.textContent=i[0]+i.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),i[1]===" "&&(s.textContent=s.textContent[0]+" "+s.textContent.substring(1))),s.textContent==="undefined"&&(s.textContent=""),r=n.getBBox()}return a.attr("transform","translate(0,"+(-r.height/(2*e)+c)+")"),r.height}x(jt,"addText");async function xs(d,t){let c=Z(),{themeVariables:h}=c,{useGradient:a}=h,o=c.class.padding??12,f=o,i=t.useHtmlLabels??lt(c.htmlLabels)??!0,n=t;n.annotations=n.annotations??[],n.members=n.members??[],n.methods=n.methods??[];let{shapeSvg:r,bbox:e}=await us(d,t,c,i,f),{labelStyles:s,nodeStyles:p}=v(t);t.labelStyle=s,t.cssStyles=n.styles||"";let l=n.styles?.join(";")||p||"";t.cssStyles||(t.cssStyles=l.replaceAll("!important","").split(";"));let m=n.members.length===0&&n.methods.length===0&&!c.class?.hideEmptyMembersBox,g=D.svg(r),u=P(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=Math.max(t.width??0,e.width),b=Math.max(t.height??0,e.height),S=(t.height??0)>e.height;n.members.length===0&&n.methods.length===0?b+=f:n.members.length>0&&n.methods.length===0&&(b+=f*2);let N=-y/2,w=-b/2,B=m?o*2:n.members.length===0&&n.methods.length===0?-o:0;S&&(B=o*2);let C=g.rectangle(N-o,w-o-(m?o:n.members.length===0&&n.methods.length===0?-o/2:0),y+2*o,b+2*o+B,u),R=r.insert(()=>C,":first-child");R.attr("class","basic label-container outer-path");let M=R.node().getBBox(),E=r.select(".annotation-group").node().getBBox().height-(m?o/2:0)||0,H=r.select(".label-group").node().getBBox().height-(m?o/2:0)||0,W=r.select(".members-group").node().getBBox().height-(m?o/2:0)||0,j=(E+H+w+o-(w-o-(m?o:n.members.length===0&&n.methods.length===0?-o/2:0)))/2;if(r.selectAll(".text").each((V,O,A)=>{let L=J(A[O]),X=L.attr("transform"),_=0;if(X){let ht=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(X);ht&&(_=parseFloat(ht[2]))}let z=_+w+o-(m?o:n.members.length===0&&n.methods.length===0?-o/2:0);if(L.attr("class").includes("methods-group")){let Pt=Math.max(W,f/2);S?z=Math.max(j,E+H+Pt+w+f*2+o)+f*2:z=E+H+Pt+w+f*4+o}n.members.length===0&&n.methods.length===0&&c.class?.hideEmptyMembersBox&&(n.annotations.length>0?z=_-f:z=_),i||(z-=4);let Bt=N;(L.attr("class").includes("label-group")||L.attr("class").includes("annotation-group"))&&(Bt=-L.node()?.getBBox().width/2||0,r.selectAll("text").each(function(Pt,ht,nt){window.getComputedStyle(nt[ht]).textAnchor==="middle"&&(Bt=0)})),L.attr("transform",`translate(${Bt}, ${z})`)}),n.members.length>0||n.methods.length>0||m){let V=E+H+w+o,O=g.line(M.x,V,M.x+M.width,V+.001,u);r.insert(()=>O).attr("class",`divider${t.look==="neo"&&!a?" neo-line":""}`).attr("style",l)}if(m||n.members.length>0||n.methods.length>0){let V=E+H+W+w+f*2+o,O=g.line(M.x,S?Math.max(j,V):V,M.x+M.width,(S?Math.max(j,V):V)+.001,u);r.insert(()=>O).attr("class",`divider${t.look==="neo"&&!a?" neo-line":""}`).attr("style",l)}if(n.look!=="handDrawn"&&r.selectAll("path").attr("style",l),R.select(":nth-child(2)").attr("style",l),r.selectAll(".divider").select("path").attr("style",l),t.labelStyle?r.selectAll("span").attr("style",t.labelStyle):r.selectAll("span").attr("style",l),!i){let V=RegExp(/color\s*:\s*([^;]*)/),O=V.exec(l);if(O){let A=O[0].replace("color","fill");r.selectAll("tspan").attr("style",A)}else if(s){let A=V.exec(s);if(A){let L=A[0].replace("color","fill");r.selectAll("tspan").attr("style",L)}}}return k(t,R),t.intersect=function(V){return $.rect(t,V)},r}x(xs,"classBox");async function bs(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let a=t,o=t,f=20,i=20,n="verifyMethod"in t,r=T(t),{themeVariables:e}=Z(),{borderColorArray:s,requirementEdgeLabelBackground:p}=e,l=d.insert("g").attr("class",r).attr("id",t.domId??t.id),m;n?m=await mt(l,`<<${a.type}>>`,0,t.labelStyle):m=await mt(l,"<<Element>>",0,t.labelStyle);let g=m,u=await mt(l,a.name,g,t.labelStyle+"; font-weight: bold;");if(g+=u+i,n){let M=await mt(l,`${a.requirementId?`ID: ${a.requirementId}`:""}`,g,t.labelStyle);g+=M;let E=await mt(l,`${a.text?`Text: ${a.text}`:""}`,g,t.labelStyle);g+=E;let H=await mt(l,`${a.risk?`Risk: ${a.risk}`:""}`,g,t.labelStyle);g+=H,await mt(l,`${a.verifyMethod?`Verification: ${a.verifyMethod}`:""}`,g,t.labelStyle)}else{let M=await mt(l,`${o.type?`Type: ${o.type}`:""}`,g,t.labelStyle);g+=M,await mt(l,`${o.docRef?`Doc Ref: ${o.docRef}`:""}`,g,t.labelStyle)}let y=(l.node()?.getBBox().width??200)+f,b=(l.node()?.getBBox().height??200)+f,S=-y/2,N=-b/2,w=D.svg(l),B=P(t,{});t.look!=="handDrawn"&&(B.roughness=0,B.fillStyle="solid");let C=w.rectangle(S,N,y,b,B),R=l.insert(()=>C,":first-child");if(R.attr("class","basic label-container outer-path").attr("style",h),s?.length){let M=t.colorIndex??0;l.attr("data-color-id",`color-${M%s.length}`)}if(l.selectAll(".label").each((M,E,H)=>{let W=J(H[E]),j=W.attr("transform"),V=0,O=0;if(j){let _=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(j);_&&(V=parseFloat(_[1]),O=parseFloat(_[2]))}let A=O-b/2,L=S+f/2;(E===0||E===1)&&(L=V),W.attr("transform",`translate(${L}, ${A+f})`)}),g>m+u+i){let M=N+m+u+i,E;if(t.look==="neo"){let j=[[S,M],[S+y,M],[S+y,M+.001],[S,M+.001]];E=w.polygon(j,B)}else E=w.line(S,M,S+y,M,B);l.insert(()=>E).attr("class","divider")}return k(t,R),t.intersect=function(M){return $.rect(t,M)},h&&t.look!=="handDrawn"&&(p||s?.length)&&l.selectAll("path").attr("style",h),l}x(bs,"requirementBox");async function mt(d,t,c,h=""){if(t==="")return 0;let a=d.insert("g").attr("class","label").attr("style",h),o=Z(),f=o.htmlLabels??!0,i=await rt(a,Rt(Nt(t)),{width:wt(t,o)+50,classes:"markdown-node-label",useHtmlLabels:f,style:h},o),n;if(f){let r=i.children[0],e=J(i);n=r.getBoundingClientRect(),e.attr("width",n.width),e.attr("height",n.height)}else{let r=i.children[0];for(let e of r.children)h&&e.setAttribute("style",h);n=i.getBBox(),n.height+=6}return a.attr("transform",`translate(${-n.width/2},${-n.height/2+c})`),n.height}x(mt,"addText");var Ks=x(d=>{switch(d){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");async function Ss(d,t,{config:c}){let{labelStyles:h,nodeStyles:a}=v(t);t.labelStyle=h||"";let o=10,f=t.width;t.width=(t.width??200)-10;let{shapeSvg:i,bbox:n,label:r}=await G(d,t,T(t)),e=t.padding||10,s="",p;"ticket"in t&&t.ticket&&c?.kanban?.ticketBaseUrl&&(s=c?.kanban?.ticketBaseUrl.replace("#TICKET#",t.ticket),p=i.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",s).attr("target","_blank"));let l={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1},m,g;p?{label:m,bbox:g}=await Gt(p,"ticket"in t&&t.ticket||"",l):{label:m,bbox:g}=await Gt(i,"ticket"in t&&t.ticket||"",l);let{label:u,bbox:y}=await Gt(i,"assigned"in t&&t.assigned||"",l);t.width=f;let b=10,S=t?.width||0,N=Math.max(g.height,y.height)/2,w=Math.max(n.height+b*2,t?.height||0)+N,B=-S/2,C=-w/2;r.attr("transform","translate("+(e-S/2)+", "+(-N-n.height/2)+")"),m.attr("transform","translate("+(e-S/2)+", "+(-N+n.height/2)+")"),u.attr("transform","translate("+(e+S/2-y.width-2*o)+", "+(-N+n.height/2)+")");let R,{rx:M,ry:E}=t,{cssStyles:H}=t;if(t.look==="handDrawn"){let W=D.svg(i),j=P(t,{}),V=M||E?W.path(it(B,C,S,w,M||0),j):W.rectangle(B,C,S,w,j);R=i.insert(()=>V,":first-child"),R.attr("class","basic label-container").attr("style",H||null)}else{R=i.insert("rect",":first-child"),R.attr("class","basic label-container __APA__").attr("style",a).attr("rx",M??5).attr("ry",E??5).attr("x",B).attr("y",C).attr("width",S).attr("height",w);let W="priority"in t&&t.priority;if(W){let j=i.append("line"),V=B+2,O=C+Math.floor((M??0)/2),A=C+w-Math.floor((M??0)/2);j.attr("x1",V).attr("y1",O).attr("x2",V).attr("y2",A).attr("stroke-width","4").attr("stroke",Ks(W))}}return k(t,R),t.height=w,t.intersect=function(W){return $.rect(t,W)},i}x(Ss,"kanbanItem");async function ws(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let{shapeSvg:a,bbox:o,halfPadding:f,label:i}=await G(d,t,T(t)),n=o.width+10*f,r=o.height+8*f,e=.15*n,{cssStyles:s}=t,p=o.width+20,l=o.height+20,m=Math.max(n,p),g=Math.max(r,l);i.attr("transform",`translate(${-o.width/2}, ${-o.height/2})`);let u,y=`M0 0 + a${e},${e} 1 0,0 ${m*.25},${-1*g*.1} + a${e},${e} 1 0,0 ${m*.25},0 + a${e},${e} 1 0,0 ${m*.25},0 + a${e},${e} 1 0,0 ${m*.25},${g*.1} + + a${e},${e} 1 0,0 ${m*.15},${g*.33} + a${e*.8},${e*.8} 1 0,0 0,${g*.34} + a${e},${e} 1 0,0 ${-1*m*.15},${g*.33} + + a${e},${e} 1 0,0 ${-1*m*.25},${g*.15} + a${e},${e} 1 0,0 ${-1*m*.25},0 + a${e},${e} 1 0,0 ${-1*m*.25},0 + a${e},${e} 1 0,0 ${-1*m*.25},${-1*g*.15} + + a${e},${e} 1 0,0 ${-1*m*.1},${-1*g*.33} + a${e*.8},${e*.8} 1 0,0 0,${-1*g*.34} + a${e},${e} 1 0,0 ${m*.1},${-1*g*.33} + H0 V0 Z`;if(t.look==="handDrawn"){let b=D.svg(a),S=P(t,{}),N=b.path(y,S);u=a.insert(()=>N,":first-child"),u.attr("class","basic label-container").attr("style",q(s))}else u=a.insert("path",":first-child").attr("class","basic label-container").attr("style",h).attr("d",y);return u.attr("transform",`translate(${-m/2}, ${-g/2})`),k(t,u),t.calcIntersect=function(b,S){return $.rect(b,S)},t.intersect=function(b){return Y.info("Bang intersect",t,b),$.rect(t,b)},a}x(ws,"bang");async function Ns(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let{shapeSvg:a,bbox:o,halfPadding:f,label:i}=await G(d,t,T(t)),n=o.width+2*f,r=o.height+2*f,e=.15*n,s=.25*n,p=.35*n,l=.2*n,{cssStyles:m}=t,g,u=`M0 0 + a${e},${e} 0 0,1 ${n*.25},${-1*n*.1} + a${p},${p} 1 0,1 ${n*.4},${-1*n*.1} + a${s},${s} 1 0,1 ${n*.35},${n*.2} + + a${e},${e} 1 0,1 ${n*.15},${r*.35} + a${l},${l} 1 0,1 ${-1*n*.15},${r*.65} + + a${s},${e} 1 0,1 ${-1*n*.25},${n*.15} + a${p},${p} 1 0,1 ${-1*n*.5},0 + a${e},${e} 1 0,1 ${-1*n*.25},${-1*n*.15} + + a${e},${e} 1 0,1 ${-1*n*.1},${-1*r*.35} + a${l},${l} 1 0,1 ${n*.1},${-1*r*.65} + H0 V0 Z`;if(t.look==="handDrawn"){let y=D.svg(a),b=P(t,{}),S=y.path(u,b);g=a.insert(()=>S,":first-child"),g.attr("class","basic label-container").attr("style",q(m))}else g=a.insert("path",":first-child").attr("class","basic label-container").attr("style",h).attr("d",u);return i.attr("transform",`translate(${-o.width/2}, ${-o.height/2})`),g.attr("transform",`translate(${-n/2}, ${-r/2})`),k(t,g),t.calcIntersect=function(y,b){return $.rect(y,b)},t.intersect=function(y){return Y.info("Cloud intersect",t,y),$.rect(t,y)},a}x(Ns,"cloud");async function $s(d,t){let{labelStyles:c,nodeStyles:h}=v(t);t.labelStyle=c;let{shapeSvg:a,bbox:o,halfPadding:f,label:i}=await G(d,t,T(t)),n=o.width+8*f,r=o.height+2*f,e=5,s=t.look==="neo"?` + M${-n/2} ${r/2-e} + v${-r+2*e} + q0,-${e} ${e},-${e} + h${n-2*e} + q${e},0 ${e},${e} + v${r-e} + H${-n/2} + Z + `:` + M${-n/2} ${r/2-e} + v${-r+2*e} + q0,-${e} ${e},-${e} + h${n-2*e} + q${e},0 ${e},${e} + v${r-2*e} + q0,${e} ${-e},${e} + h${-(n-2*e)} + q${-e},0 ${-e},${-e} + Z + `;if(!t.domId)throw new Error(`defaultMindmapNode: node "${t.id}" is missing a domId \u2014 was render.ts domId prefixing skipped?`);let p=a.append("path").attr("id",t.domId).attr("class","node-bkg node-"+t.type).attr("style",h).attr("d",s);return a.append("line").attr("class","node-line-").attr("x1",-n/2).attr("y1",r/2).attr("x2",n/2).attr("y2",r/2),i.attr("transform",`translate(${-o.width/2}, ${-o.height/2})`),a.append(()=>i.node()),k(t,p),t.calcIntersect=function(l,m){return $.rect(l,m)},t.intersect=function(l){return $.rect(t,l)},a}x($s,"defaultMindmapNode");async function Ds(d,t){let c={padding:t.padding??0};return Ht(d,t,c)}x(Ds,"mindmapCircle");var Qs=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Ze},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:qe},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Je},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:es},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:de},{semanticName:"Data Store",name:"Data Store",shortName:"datastore",description:"Data flow diagram data store",aliases:["data-store"],handler:ye},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:Ht},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:ws},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Ns},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Ye},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:Pe},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:He},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:Ee},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:ls},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:Ge},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:xe},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:is},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:ae},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:ze},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:ts},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Qe},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:$e},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:ve},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:ce},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:he},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:pe},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:je},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:gs},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:De},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ns},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:Ve},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:me},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:ue},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:ms},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:ds},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:be},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:cs},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:Ne},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:Ue},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:We},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:Ie},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:oe},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:le},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:rs},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:ss},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:fs},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Fe},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Le}],tr=x(()=>{let t=[...Object.entries({state:Ke,choice:ne,note:Xe,rectWithTitle:_e,labelRect:Me,iconSquare:Ce,iconCircle:Be,icon:ke,iconRounded:Te,imageSquare:Re,anchor:re,kanbanItem:Ss,mindmapCircle:Ds,defaultMindmapNode:$s,classBox:xs,erBox:Yt,requirementBox:bs}),...Qs.flatMap(c=>[c.shortName,..."aliases"in c?c.aliases:[],..."internalAliases"in c?c.internalAliases:[]].map(a=>[a,c.handler]))];return Object.fromEntries(t)},"generateShapeMap"),Ft=tr();function Xg(d){return d in Ft}x(Xg,"isValidShape");var At=new Map;async function Ug(d,t,c){let h,a;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");let o=t.shape?Ft[t.shape]:void 0;if(!o)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let f;c.config.securityLevel==="sandbox"?f="_top":t.linkTarget&&(f=t.linkTarget||"_blank"),h=d.insert("svg:a").attr("xlink:href",t.link).attr("target",f??null),a=await o(h,t,c)}else a=await o(d,t,c),h=a;return h.attr("data-look",q(t.look)),t.tooltip&&a.attr("title",t.tooltip),At.set(t.id,h),t.haveCallback&&h.attr("class",h.attr("class")+" clickable"),h}x(Ug,"insertNode");var Zg=x((d,t)=>{At.set(t.id,d)},"setNodeElem"),Jg=x(()=>{At.clear()},"clear"),Kg=x(d=>{let t=At.get(d.id);Y.trace("Transforming node",d.diff,d,"translate("+(d.x-d.width/2-5)+", "+d.width/2+")");let c=8,h=d.diff||0;return d.clusterNode?t.attr("transform","translate("+(d.x+h-d.width/2)+", "+(d.y-d.height/2-c)+")"):t.attr("transform","translate("+d.x+", "+d.y+")"),h},"positionNode");export{G as a,k as b,vt as c,Xg as d,Rr as e,Gr as f,Ug as g,Zg as h,Jg as i,Kg as j}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-KGFNY3KK.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-KGFNY3KK.mjs.map new file mode 100644 index 0000000..b373926 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-KGFNY3KK.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/rendering-util/rendering-elements/shapes/util.ts", "../../../src/rendering-util/rendering-elements/intersect/intersect-rect.js", "../../../src/rendering-util/rendering-elements/createLabel.js", "../../../src/rendering-util/rendering-elements/shapes/roundedRectPath.ts", "../../../src/rendering-util/rendering-elements/clusters.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-node.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-ellipse.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-circle.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-line.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-polygon.js", "../../../src/rendering-util/rendering-elements/intersect/index.js", "../../../src/rendering-util/rendering-elements/shapes/anchor.ts", "../../../src/rendering-util/rendering-elements/shapes/bowTieRect.ts", "../../../src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts", "../../../src/rendering-util/rendering-elements/shapes/card.ts", "../../../src/rendering-util/rendering-elements/shapes/choice.ts", "../../../src/rendering-util/rendering-elements/shapes/circle.ts", "../../../src/rendering-util/rendering-elements/shapes/crossedCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts", "../../../src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts", "../../../src/rendering-util/rendering-elements/shapes/curlyBraces.ts", "../../../src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts", "../../../src/rendering-util/rendering-elements/shapes/cylinder.ts", "../../../src/rendering-util/rendering-elements/shapes/drawRect.ts", "../../../src/rendering-util/rendering-elements/shapes/datastore.ts", "../../../src/rendering-util/rendering-elements/shapes/dividedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/doubleCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/filledCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/flippedTriangle.ts", "../../../src/rendering-util/rendering-elements/shapes/forkJoin.ts", "../../../src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/hexagon.ts", "../../../src/rendering-util/rendering-elements/shapes/hourglass.ts", "../../../src/rendering-util/rendering-elements/shapes/icon.ts", "../../../src/rendering-util/rendering-elements/shapes/iconCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/iconRounded.ts", "../../../src/rendering-util/rendering-elements/shapes/iconSquare.ts", "../../../src/rendering-util/rendering-elements/shapes/imageSquare.ts", "../../../src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts", "../../../src/rendering-util/rendering-elements/shapes/labelRect.ts", "../../../src/rendering-util/rendering-elements/shapes/leanLeft.ts", "../../../src/rendering-util/rendering-elements/shapes/leanRight.ts", "../../../src/rendering-util/rendering-elements/shapes/lightningBolt.ts", "../../../src/rendering-util/rendering-elements/shapes/linedCylinder.ts", "../../../src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/multiRect.ts", "../../../src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/note.ts", "../../../src/rendering-util/rendering-elements/shapes/question.ts", "../../../src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts", "../../../src/rendering-util/rendering-elements/shapes/rectWithTitle.ts", "../../../src/rendering-util/rendering-elements/shapes/roundedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/shadedProcess.ts", "../../../src/rendering-util/rendering-elements/shapes/slopedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/squareRect.ts", "../../../src/rendering-util/rendering-elements/shapes/stadium.ts", "../../../src/rendering-util/rendering-elements/shapes/state.ts", "../../../src/rendering-util/rendering-elements/shapes/stateEnd.ts", "../../../src/rendering-util/rendering-elements/shapes/stateStart.ts", "../../../src/rendering-util/rendering-elements/shapes/subroutine.ts", "../../../src/rendering-util/rendering-elements/shapes/taggedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/text.ts", "../../../src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts", "../../../src/rendering-util/rendering-elements/shapes/trapezoid.ts", "../../../src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts", "../../../src/rendering-util/rendering-elements/shapes/triangle.ts", "../../../src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/waveRectangle.ts", "../../../src/rendering-util/rendering-elements/shapes/windowPane.ts", "../../../src/rendering-util/rendering-elements/shapes/erBox.ts", "../../../src/diagrams/class/shapeUtil.ts", "../../../src/rendering-util/rendering-elements/shapes/classBox.ts", "../../../src/rendering-util/rendering-elements/shapes/requirementBox.ts", "../../../src/rendering-util/rendering-elements/shapes/kanbanItem.ts", "../../../src/rendering-util/rendering-elements/shapes/bang.ts", "../../../src/rendering-util/rendering-elements/shapes/cloud.ts", "../../../src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts", "../../../src/rendering-util/rendering-elements/shapes/mindmapCircle.ts", "../../../src/rendering-util/rendering-elements/shapes.ts", "../../../src/rendering-util/rendering-elements/nodes.ts"], + "sourcesContent": ["import { createText } from '../../createText.js';\nimport type { Node } from '../../types.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport { evaluate, getEffectiveHtmlLabels } from '../../../config.js';\nimport { select } from 'd3';\nimport { sanitizeText } from '../../../diagrams/common/common.js';\nimport { decodeEntities, handleUndefinedAttr } from '../../../utils.js';\nimport type { D3Selection, Point } from '../../../types.js';\nimport { configureLabelImages } from './labelImageUtils.js';\n\nexport const labelHelper = async (\n parent: D3Selection,\n node: Node,\n _classes?: string\n) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig()?.htmlLabels);\n if (!_classes) {\n cssClasses = 'node default';\n } else {\n cssClasses = _classes;\n }\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', cssClasses)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const labelEl = shapeSvg\n .insert('g')\n .attr('class', 'label')\n .attr('style', handleUndefinedAttr(node.labelStyle));\n\n // Replace label with default value if undefined\n let label;\n if (node.label === undefined) {\n label = '';\n } else {\n label = typeof node.label === 'string' ? node.label : node.label[0];\n }\n\n const addBackground = !!node.icon || !!node.img;\n const isMarkdown = node.labelType === 'markdown';\n const text = await createText(\n labelEl,\n sanitizeText(decodeEntities(label), getConfig()),\n {\n useHtmlLabels,\n width: node.width || getConfig().flowchart?.wrappingWidth,\n classes: isMarkdown ? 'markdown-node-label' : '',\n style: node.labelStyle,\n addSvgBackground: addBackground,\n markdown: isMarkdown,\n },\n getConfig()\n );\n\n // Get the size of the label\n let bbox = text.getBBox();\n const halfPadding = (node?.padding ?? 0) / 2;\n\n if (useHtmlLabels) {\n const div = text.children[0] as HTMLDivElement;\n const dv = select(text);\n\n // if there are images, need to wait for them to load before getting the bounding box\n await configureLabelImages(div, label);\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center the label\n if (useHtmlLabels) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n } else {\n labelEl.attr('transform', 'translate(' + 0 + ', ' + -bbox.height / 2 + ')');\n }\n if (node.centerLabel) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n }\n labelEl.insert('rect', ':first-child');\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n};\nexport const insertLabel = async (\n parent: D3Selection,\n label: string,\n options: {\n labelStyle?: string | undefined;\n icon?: boolean | undefined;\n img?: string | undefined;\n useHtmlLabels?: boolean | undefined;\n padding: number;\n width?: number | undefined;\n centerLabel?: boolean | undefined;\n addSvgBackground?: boolean | undefined;\n }\n) => {\n const useHtmlLabels = options.useHtmlLabels ?? getEffectiveHtmlLabels(getConfig());\n\n // Create the label and insert it after the rect\n const labelEl = parent\n .insert('g')\n .attr('class', 'label')\n .attr('style', options.labelStyle || '');\n\n const text = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig()), {\n useHtmlLabels,\n width: options.width || getConfig()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img,\n });\n // Get the size of the label\n let bbox = text.getBBox();\n const halfPadding = options.padding / 2;\n\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = text.children[0];\n const dv = select(text);\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center the label\n if (useHtmlLabels) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n } else {\n labelEl.attr('transform', 'translate(' + 0 + ', ' + -bbox.height / 2 + ')');\n }\n if (options.centerLabel) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n }\n labelEl.insert('rect', ':first-child');\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n};\nexport const updateNodeBounds = (\n node: Node,\n // D3Selection is for the roughjs case, D3Selection is for the non-roughjs case\n element: D3Selection | D3Selection\n) => {\n const bbox = element.node()!.getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\n/**\n * @param parent - Parent element to append the polygon to\n * @param w - Width of the polygon\n * @param h - Height of the polygon\n * @param points - Array of points to create the polygon\n */\nexport function insertPolygonShape(\n parent: D3Selection,\n w: number,\n h: number,\n points: Point[]\n) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport const getNodeClasses = (node: Node, extra?: string) =>\n (node.look === 'handDrawn' ? 'rough-node' : 'node') + ' ' + node.cssClasses + ' ' + (extra || '');\n\nexport function createPathFromPoints(points: Point[]) {\n const pointStrings = points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`);\n pointStrings.push('Z');\n return pointStrings.join(' ');\n}\n\nexport function generateFullSineWavePoints(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n amplitude: number,\n numCycles: number\n) {\n const points = [];\n const steps = 50; // Number of segments to create a smooth curve\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n\n // Calculate frequency and phase shift\n const frequency = (2 * Math.PI) / cycleLength;\n const midY = y1 + deltaY / 2;\n\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n\n points.push({ x, y });\n }\n\n return points;\n}\n\n/**\n * @param centerX - x-coordinate of center of circle\n * @param centerY - y-coordinate of center of circle\n * @param radius - radius of circle\n * @param numPoints - total points required\n * @param startAngle - angle where arc will start\n * @param endAngle - angle where arc will end\n */\nexport function generateCirclePoints(\n centerX: number,\n centerY: number,\n radius: number,\n numPoints: number,\n startAngle: number,\n endAngle: number\n) {\n const points = [];\n\n // Convert angles to radians\n const startAngleRad = (startAngle * Math.PI) / 180;\n const endAngleRad = (endAngle * Math.PI) / 180;\n\n // Calculate the angle range in radians\n const angleRange = endAngleRad - startAngleRad;\n\n // Calculate the angle step\n const angleStep = angleRange / (numPoints - 1);\n\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n\n return points;\n}\n\nexport function mergePaths(roughElement: SVGElement) {\n // Get all paths generated by RoughJS\n // eslint-disable-next-line unicorn/prefer-spread\n const paths: SVGPathElement[] = Array.from(roughElement.childNodes).filter(\n (node): node is SVGPathElement => (node as Element).tagName === 'path'\n );\n\n // Create a new path element\n const mergedPath: SVGPathElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n\n // Combine all path data\n const combinedPathData: string = paths\n .map((path) => path.getAttribute('d'))\n .filter((d): d is string => d !== null)\n .join(' ');\n\n mergedPath.setAttribute('d', combinedPathData);\n\n // Find the fill path (usually the second path)\n const fillPath = paths.find((path) => path.getAttribute('fill') !== 'none');\n\n // Find the stroke path (usually the first path)\n const strokePath = paths.find((path) => path.getAttribute('stroke') !== 'none');\n\n // Helper function to safely get attribute\n const getAttr = (element: SVGPathElement | undefined, attr: string): string | undefined => {\n return element?.getAttribute(attr) ?? undefined;\n };\n\n // Apply the correct styles from respective paths\n if (fillPath) {\n const fillAttrs = {\n fill: getAttr(fillPath, 'fill'),\n 'fill-opacity': getAttr(fillPath, 'fill-opacity') ?? '1',\n };\n\n Object.entries(fillAttrs).forEach(([attr, value]) => {\n if (value) {\n mergedPath.setAttribute(attr, value);\n }\n });\n }\n\n if (strokePath) {\n const strokeAttrs = {\n stroke: getAttr(strokePath, 'stroke'),\n 'stroke-width': getAttr(strokePath, 'stroke-width') ?? '1',\n 'stroke-opacity': getAttr(strokePath, 'stroke-opacity') ?? '1',\n };\n\n Object.entries(strokeAttrs).forEach(([attr, value]) => {\n if (value) {\n mergedPath.setAttribute(attr, value);\n }\n });\n }\n\n // Create a group to hold our merged path\n const group: SVGGElement = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n group.appendChild(mergedPath);\n\n return group;\n}\n", "const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // https://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n", "import { getEffectiveHtmlLabels } from '../../config.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { createText } from '../createText.js';\n\n/**\n * @param {import('../../types.js').D3Selection} element - The parent element to which the label will be appended.\n * @param {string | [string] | undefined} _vertexText - The text content of the label.\n * @param {string} style\n * @param {boolean} [isTitle] - If `true`, style this as a title label, else as a normal label.\n * @param {boolean} [isNode] - If `true`, style this as a node label, else as an edge label.\n * @deprecated svg-util/createText instead\n *\n * @example\n *\n * If `getEffectiveHtmlLabels(getConfig())` is `true`, you must reset the width\n * and height of the created label after creation, like this:\n *\n * ```js\n * const labelElement = await createLabel(parent, ... );\n * let slBox = labelElement.getBBox();\n * if (useHtmlLabels) {\n * const div = labelElement.children[0];\n * const dv = select(labelElement);\n * slBox = div.getBoundingClientRect();\n * dv.attr('width', slBox.width);\n * dv.attr('height', slBox.height);\n * }\n * parent.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n * ```\n */\nconst createLabel = async (element, _vertexText, style, isTitle = false, isNode = false) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') {\n vertexText = vertexText[0];\n }\n\n const config = getConfig();\n const useHtmlLabels = getEffectiveHtmlLabels(config);\n\n return await createText(\n element,\n vertexText,\n {\n style,\n isTitle,\n useHtmlLabels,\n markdown: false,\n isNode,\n width: Number.POSITIVE_INFINITY,\n },\n config\n );\n};\n\nexport default createLabel;\n", "export const createRoundedRectPathD = (\n x: number,\n y: number,\n totalWidth: number,\n totalHeight: number,\n radius: number\n) =>\n [\n 'M',\n x + radius,\n y, // Move to the first point\n 'H',\n x + totalWidth - radius, // Draw horizontal line to the beginning of the right corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius, // Draw arc to the right top corner\n 'V',\n y + totalHeight - radius, // Draw vertical line down to the beginning of the right bottom corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight, // Draw arc to the right bottom corner\n 'H',\n x + radius, // Draw horizontal line to the beginning of the left bottom corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius, // Draw arc to the left bottom corner\n 'V',\n y + radius, // Draw vertical line up to the beginning of the left top corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y, // Draw arc to the left top corner\n 'Z', // Close the path\n ].join(' ');\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { getEffectiveHtmlLabels } from '../../config.js';\nimport { log } from '../../logger.js';\nimport { getSubGraphTitleMargins } from '../../utils/subGraphTitleMargins.js';\nimport { select } from 'd3';\nimport rough from 'roughjs';\nimport { createText } from '../createText.ts';\nimport intersectRect from '../rendering-elements/intersect/intersect-rect.js';\nimport createLabel from './createLabel.js';\nimport { createRoundedRectPathD } from './shapes/roundedRectPath.ts';\nimport { styles2String, userNodeOverrides } from './shapes/handDrawnShapeStyles.js';\n\nconst rect = async (parent, node) => {\n log.info('Creating subgraph rect for ', node.id, node);\n const siteConfig = getConfig();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster ' + node.cssClasses)\n .attr('id', node.domId)\n .attr('data-look', node.look);\n\n const useHtmlLabels = getEffectiveHtmlLabels(siteConfig);\n\n // Create the label and insert it after the rect\n const labelEl = shapeSvg.insert('g').attr('class', 'cluster-label ');\n\n let text;\n if (node.labelType === 'markdown') {\n text = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width,\n });\n } else {\n text = await createLabel(labelEl, node.label, node.labelStyle || '', false, true);\n }\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n let rect;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed,\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughNode;\n }, ':first-child');\n // Should we affect the options instead of doing this?\n rect.select('path:nth-child(2)').attr('style', borderStyles.join(';'));\n rect.select('path').attr('style', backgroundStyles.join(';').replace('fill', 'stroke'));\n } else {\n // add the rect\n rect = shapeSvg.insert('rect', ':first-child');\n // center the rect around its coordinate\n rect\n .attr('style', nodeStyles)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n 'transform',\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n\n if (labelStyles) {\n const span = labelEl.select('span');\n if (span) {\n span.attr('style', labelStyles);\n }\n }\n // Center the label\n\n const rectBox = rect.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n // Used by layout engine to position subgraph in parent\n node.offsetY = bbox.height - node.padding / 2;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: bbox };\n};\n\n/**\n * Non visible cluster where the note is group with its\n *\n * @param {any} parent\n * @param {any} node\n * @returns {any} ShapeSvg\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.domId);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n};\n\nconst roundedWithTitle = async (parent, node) => {\n const siteConfig = getConfig();\n\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } =\n themeVariables;\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.cssClasses)\n .attr('id', node.domId)\n .attr('data-id', node.id)\n .attr('data-look', node.look);\n\n // add the rect\n const outerRectG = shapeSvg.insert('g', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n let innerRect = shapeSvg.append('rect');\n\n const text = await createLabel(label, node.label, node.labelStyle, undefined, true);\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Rounded With Title\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width =\n (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n\n const height = node.height + padding;\n // const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n\n // add the rect\n let rect;\n if (node.look === 'handDrawn') {\n const isAlt = node.cssClasses.includes('statediagram-cluster-alt');\n const rc = rough.svg(shapeSvg);\n const roughOuterNode =\n node.rx || node.ry\n ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: 'solid',\n stroke: nodeBorder,\n seed: handDrawnSeed,\n })\n : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? 'hachure' : 'solid',\n stroke: nodeBorder,\n seed: handDrawnSeed,\n });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect = outerRectG.insert('rect', ':first-child');\n const outerRectClass = 'outer';\n\n // center the rect around its coordinate\n rect\n .attr('class', outerRectClass)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('data-look', node.look);\n innerRect\n .attr('class', 'inner')\n .attr('x', x)\n .attr('y', innerY)\n .attr('width', width)\n .attr('height', innerHeight);\n }\n\n label.attr(\n 'transform',\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (getEffectiveHtmlLabels(siteConfig) ? 0 : 3)})`\n );\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n // Used by layout engine to position subgraph in parent\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: bbox };\n};\nconst kanbanSection = async (parent, node) => {\n log.info('Creating subgraph rect for ', node.id, node);\n const siteConfig = getConfig();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster ' + node.cssClasses)\n .attr('id', node.domId)\n .attr('data-look', node.look);\n\n const useHtmlLabels = getEffectiveHtmlLabels(siteConfig);\n\n // Create the label and insert it after the rect\n const labelEl = shapeSvg.insert('g').attr('class', 'cluster-label ');\n\n const text = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width,\n });\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (getEffectiveHtmlLabels(siteConfig)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n let rect;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed,\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughNode;\n }, ':first-child');\n // Should we affect the options instead of doing this?\n rect.select('path:nth-child(2)').attr('style', borderStyles.join(';'));\n rect.select('path').attr('style', backgroundStyles.join(';').replace('fill', 'stroke'));\n } else {\n // add the rect\n rect = shapeSvg.insert('rect', ':first-child');\n // center the rect around its coordinate\n rect\n .attr('style', nodeStyles)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n 'transform',\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n\n if (labelStyles) {\n const span = labelEl.select('span');\n if (span) {\n span.attr('style', labelStyles);\n }\n }\n // Center the label\n\n const rectBox = rect.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n // Used by layout engine to position subgraph in parent\n node.offsetY = bbox.height - node.padding / 2;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: bbox };\n};\nconst divider = (parent, node) => {\n const siteConfig = getConfig();\n\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.cssClasses)\n .attr('id', node.domId)\n .attr('data-look', node.look);\n\n // add the rect\n const outerRectG = shapeSvg.insert('g', ':first-child');\n\n const padding = 0 * node.padding;\n\n const width = node.width + padding;\n\n node.diff = -node.padding;\n\n const height = node.height + padding;\n // const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n\n // add the rect\n let rect;\n if (node.look === 'handDrawn') {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: 'lightgrey',\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed,\n });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n } else {\n rect = outerRectG.insert('rect', ':first-child');\n let outerRectClass = 'outer';\n if (node.look === 'neo') {\n outerRectClass = 'divider';\n } else {\n outerRectClass = 'divider';\n }\n\n // center the rect around its coordinate\n rect\n .attr('class', outerRectClass)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('data-look', node.look);\n }\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n // Used by layout engine to position subgraph in parent\n node.offsetY = 0;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: {} };\n};\n\nconst squareRect = rect;\nconst shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection,\n};\n\nlet clusterElems = new Map();\n\n/**\n * @typedef {keyof typeof shapes} ClusterShapeID\n */\n\n/**\n * @param {import('../types.js').ClusterNode} node - Shape defaults to 'rect'\n */\nexport const insertCluster = async (elem, node) => {\n const shape = node.shape || 'rect';\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n};\n\nexport const getClusterTitleWidth = (elem, node) => {\n // TODO: Doesn't this need an `await`?\n const label = createLabel(elem, node.label, node.labelStyle, undefined, true);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = new Map();\n};\n\nexport const positionCluster = (node) => {\n log.info(\n 'Position cluster (' +\n node.id +\n ', ' +\n node.x +\n ', ' +\n node.y +\n ') (' +\n node?.width +\n ', ' +\n node?.height +\n ')',\n clusterElems.get(node.id)\n );\n const el = clusterElems.get(node.id);\n el.cluster.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n", "function intersectNode(node, point) {\n return node.intersect(point);\n}\n\nexport default intersectNode;\n", "function intersectEllipse(node, rx, ry, point) {\n // Formulae from: https://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n", "import intersectEllipse from './intersect-ellipse.js';\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n", "/**\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n const a1 = p2.y - p1.y;\n const b1 = p1.x - p2.x;\n const c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n const r3 = a1 * q1.x + b1 * q1.y + c1;\n const r4 = a1 * q2.x + b1 * q2.y + c1;\n\n const epsilon = 1e-6;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n const a2 = q2.y - q1.y;\n const b2 = q1.x - q2.x;\n const c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n const r1 = a2 * p1.x + b2 * p1.y + c2;\n const r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n const denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n const offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n let num = b1 * c2 - b2 * c1;\n const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n }\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n", "import intersectLine from './intersect-line.js';\n\n/**\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\n * that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n\n let intersections = [];\n\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n\nexport default intersectPolygon;\n", "/*\n * Borrowed with love from dagre-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n", "import { log } from '../../../logger.js';\nimport { updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function anchor(parent: D3Selection, node: Node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = 'anchor';\n }\n const shapeSvg = parent\n .insert('g')\n .attr('class', cssClasses)\n .attr('id', node.domId || node.id);\n\n const radius = 1;\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: 'black', stroke: 'none', fillStyle: 'solid' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, ':first-child');\n circleElem.attr('class', 'anchor').attr('style', handleUndefinedAttr(cssStyles));\n\n updateNodeBounds(node, circleElem);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, radius, point);\n return intersect.circle(node, radius, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nfunction generateArcPoints(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n rx: number,\n ry: number,\n clockwise: boolean\n) {\n const numPoints = 20;\n // Calculate midpoint\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n\n // Calculate the angle of the line connecting the points\n const angle = Math.atan2(y2 - y1, x2 - x1);\n\n // Calculate transformed coordinates for the ellipse\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n\n // Scale to unit circle\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n\n // Calculate the distance between points on the unit circle\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n\n // Check if the ellipse can be drawn with the given radii\n if (distance > 1) {\n throw new Error('The given radii are too small to create an arc between the points.');\n }\n\n // Calculate the distance from the midpoint to the center of the ellipse\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n\n // Calculate the center of the ellipse\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n\n // Calculate the start and end angles on the ellipse\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n\n // Adjust angles for clockwise/counterclockwise\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n\n // Generate points\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle);\n const y = centerY + ry * Math.sin(angle);\n points.push({ x, y });\n }\n\n return points;\n}\n\n/**\n * Calculates the sagitta of an arc of an ellipse given its chord and radii.\n *\n * @param chord - The chord of the arc (e.g. the line connecting the two points on the circle)\n * @param radiusX - The x-radius of the ellipse.\n * @param radiusY - The y-radius of the ellipse.\n */\nfunction calculateArcSagitta(chord: number, radiusX: number, radiusY: number) {\n const [semiMajorAxis, semiMinorAxis] = [radiusX, radiusY].sort((a, b) => b - a);\n return semiMinorAxis * (1 - Math.sqrt(1 - (chord / semiMajorAxis / 2) ** 2));\n}\n\nexport async function bowTieRect(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n\n const calcTotalHeight = (labelHeight: number) => labelHeight + labelPaddingY;\n const calcEllipseRadius = (totalHeight: number) => {\n const ry = totalHeight / 2;\n const rx = ry / (2.5 + totalHeight / 50);\n return [rx, ry];\n };\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalHeight = calcTotalHeight(node?.height ? node?.height : bbox.height);\n const [rx, ry] = calcEllipseRadius(totalHeight);\n const sagitta = calculateArcSagitta(totalHeight, rx, ry);\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + sagitta;\n\n const w = totalWidth - sagitta;\n const h = totalHeight;\n // let shape: d3.Selection;\n const { cssStyles } = node;\n\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true),\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, ':first-child');\n\n bowTieRectShape.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n bowTieRectShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n bowTieRectShape.selectAll('path').attr('style', nodeStyles);\n }\n\n bowTieRectShape.attr('transform', `translate(${rx / 2}, 0)`);\n\n updateNodeBounds(node, bowTieRectShape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import type { D3Selection } from '../../../types.js';\n\nexport function insertPolygonShape(\n parent: D3Selection,\n w: number,\n h: number,\n points: { x: number; y: number }[]\n) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\n\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport { createPathFromPoints } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\n// const createPathFromPoints = (points: { x: number; y: number }[]): string => {\n// const pointStrings = points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`);\n// pointStrings.push('Z');\n// return pointStrings.join(' ');\n// };\n\n/// Size of the notch on the top left corner\nconst NOTCH_SIZE = 12;\n\nexport async function card(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 28 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 24 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w =\n (node?.width ?? bbox.width) +\n (node.look === 'neo' ? labelPaddingX * 2 : labelPaddingX + NOTCH_SIZE);\n const h =\n (node?.height ?? bbox.height) + (node.look === 'neo' ? labelPaddingY * 2 : labelPaddingY);\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + NOTCH_SIZE, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + NOTCH_SIZE },\n { x: left + NOTCH_SIZE, y: top },\n ];\n\n let polygon: D3Selection | Awaited>;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { createPathFromPoints, getNodeClasses } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function choice(parent: D3Selection, node: Node) {\n const { nodeStyles } = styles2String(node);\n node.label = '';\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n const { cssStyles } = node;\n\n const s = Math.max(28, node.width ?? 0);\n\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, ':first-child');\n\n if (cssStyles && node.look !== 'handDrawn') {\n choiceShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n choiceShape.selectAll('path').attr('style', nodeStyles);\n }\n\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport type { Bounds, D3Selection, Point } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { MindmapOptions, Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, labelHelper, updateNodeBounds } from './util.js';\n\nexport async function circle(\n parent: D3Selection,\n node: Node,\n options?: MindmapOptions | ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n\n // Calculate radius based on look type\n const labelPadding = 16;\n const padding = options?.padding ?? halfPadding;\n const radius = node.look === 'neo' ? bbox.width / 2 + labelPadding * 2 : bbox.width / 2 + padding;\n\n let circleElem;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options);\n\n circleElem = shapeSvg.insert(() => roughNode, ':first-child');\n circleElem.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg\n .insert('circle', ':first-child')\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('r', radius)\n .attr('cx', 0)\n .attr('cy', 0);\n }\n\n updateNodeBounds(node, circleElem);\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n const radius = bounds.width / 2;\n return intersect.circle(bounds, radius, point);\n };\n node.intersect = function (point) {\n log.info('Circle intersect', node, radius, point);\n return intersect.circle(node, radius, point);\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { getNodeClasses, updateNodeBounds } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\nfunction createLine(r: number) {\n const xAxis45 = Math.cos(Math.PI / 4); // cosine of 45 degrees\n const yAxis45 = Math.sin(Math.PI / 4); // sine of 45 degrees\n const lineLength = r * 2;\n\n const pointQ1 = { x: (lineLength / 2) * xAxis45, y: (lineLength / 2) * yAxis45 }; // Quadrant I\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: (lineLength / 2) * yAxis45 }; // Quadrant II\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 }; // Quadrant III\n const pointQ4 = { x: (lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 }; // Quadrant IV\n\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n\nexport function crossedCircle(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = '';\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n\n const crossedCircle = shapeSvg.insert(() => circleNode, ':first-child');\n crossedCircle.insert(() => lineNode);\n crossedCircle.attr('class', 'outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n crossedCircle.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n crossedCircle.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, crossedCircle);\n\n node.intersect = function (point) {\n log.info('crossedCircle intersect', node, { radius, point });\n const pos = intersect.circle(node, radius, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nfunction generateCirclePoints(\n centerX: number,\n centerY: number,\n radius: number,\n numPoints = 100,\n startAngle = 0,\n endAngle = 180\n) {\n const points = [];\n\n // Convert angles to radians\n const startAngleRad = (startAngle * Math.PI) / 180;\n const endAngleRad = (endAngle * Math.PI) / 180;\n\n // Calculate the angle range in radians\n const angleRange = endAngleRad - startAngleRad;\n\n // Calculate the angle step\n const angleStep = angleRange / (numPoints - 1);\n\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n\n return points;\n}\n\nexport async function curlyBraceLeft(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const paddingX = node.look === 'neo' ? 18 : (node.padding ?? 0);\n const paddingY = node.look === 'neo' ? 12 : (node.padding ?? 0);\n const w = bbox.width + paddingX;\n const h = bbox.height + paddingY;\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n\n const points = [\n ...generateCirclePoints(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n ];\n\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius },\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: 'none' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace('Z', '');\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert('g', ':first-child');\n curlyBraceLeftShape.insert(() => rectShape, ':first-child').attr('stroke-opacity', 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, ':first-child');\n curlyBraceLeftShape.attr('class', 'text');\n\n if (cssStyles && node.look !== 'handDrawn') {\n curlyBraceLeftShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n curlyBraceLeftShape.selectAll('path').attr('style', nodeStyles);\n }\n\n curlyBraceLeftShape.attr('transform', `translate(${radius}, 0)`);\n\n label.attr(\n 'transform',\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, curlyBraceLeftShape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, rectPoints, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nfunction generateCirclePoints(\n centerX: number,\n centerY: number,\n radius: number,\n numPoints = 100,\n startAngle = 0,\n endAngle = 180\n) {\n const points = [];\n\n // Convert angles to radians\n const startAngleRad = (startAngle * Math.PI) / 180;\n const endAngleRad = (endAngle * Math.PI) / 180;\n\n // Calculate the angle range in radians\n const angleRange = endAngleRad - startAngleRad;\n\n // Calculate the angle step\n const angleStep = angleRange / (numPoints - 1);\n\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n\n return points;\n}\n\nexport async function curlyBraceRight(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node.look === 'neo' ? 18 : (node.padding ?? 0);\n const labelPaddingY = node.look === 'neo' ? 12 : (node.padding ?? 0);\n const w = bbox.width + (node.look === 'neo' ? labelPaddingX * 2 : labelPaddingX);\n const h = bbox.height + (node.look === 'neo' ? labelPaddingY * 2 : labelPaddingY);\n const radius = Math.max(5, h * 0.1);\n\n const { cssStyles } = node;\n\n const points = [\n ...generateCirclePoints(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n ];\n\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius },\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: 'none' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace('Z', '');\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert('g', ':first-child');\n curlyBraceRightShape.insert(() => rectShape, ':first-child').attr('stroke-opacity', 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, ':first-child');\n curlyBraceRightShape.attr('class', 'text');\n\n if (cssStyles && node.look !== 'handDrawn') {\n curlyBraceRightShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n curlyBraceRightShape.selectAll('path').attr('style', nodeStyles);\n }\n\n curlyBraceRightShape.attr('transform', `translate(${-radius}, 0)`);\n\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, curlyBraceRightShape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, rectPoints, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nfunction generateCirclePoints(\n centerX: number,\n centerY: number,\n radius: number,\n numPoints = 100,\n startAngle = 0,\n endAngle = 180\n) {\n const points = [];\n\n // Convert angles to radians\n const startAngleRad = (startAngle * Math.PI) / 180;\n const endAngleRad = (endAngle * Math.PI) / 180;\n\n // Calculate the angle range in radians\n const angleRange = endAngleRad - startAngleRad;\n\n // Calculate the angle step\n const angleStep = angleRange / (numPoints - 1);\n\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n\n return points;\n}\n\nexport async function curlyBraces(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node.look === 'neo' ? 18 : (node.padding ?? 0);\n const labelPaddingY = node.look === 'neo' ? 12 : (node.padding ?? 0);\n const w = bbox.width + (node.look === 'neo' ? labelPaddingX * 2 : labelPaddingX);\n const h = bbox.height + (node.look === 'neo' ? labelPaddingY * 2 : labelPaddingY);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n\n const leftCurlyBracePoints = [\n ...generateCirclePoints(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n ];\n\n const rightCurlyBracePoints = [\n ...generateCirclePoints(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270),\n ];\n\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270),\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: 'none' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace('Z', '');\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace('Z', '');\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert('g', ':first-child');\n curlyBracesShape.insert(() => rectShape, ':first-child').attr('stroke-opacity', 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, ':first-child');\n curlyBracesShape.insert(() => rightCurlyBraceNode, ':first-child');\n curlyBracesShape.attr('class', 'text');\n\n if (cssStyles && node.look !== 'handDrawn') {\n curlyBracesShape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n curlyBracesShape.selectAll('path').attr('style', nodeStyles);\n }\n\n curlyBracesShape.attr('transform', `translate(${radius - radius / 4}, 0)`);\n\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, curlyBracesShape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, rectPoints, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n createPathFromPoints,\n generateCirclePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function curvedTrapezoid(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n const minWidth = 20,\n minHeight = 5;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, (bbox.width + labelPaddingX * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + labelPaddingY * 2, node?.height ?? 0);\n const radius = h / 2;\n\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const totalWidth = w,\n totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90),\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n polygon.attr('transform', `translate(${-w / 2}, ${-h / 2})`);\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport const createCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n ].join(' ');\n};\nexport const createOuterCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n ].join(' ');\n};\nexport const createInnerCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(' ');\n};\n\nconst MIN_HEIGHT = 8;\nconst MIN_WIDTH = 8;\n\nexport async function cylinder(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 24 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 24 : nodePadding;\n\n if (node.width || node.height) {\n const originalWidth = node.width ?? 0;\n node.width = (node.width ?? 0) - labelPaddingY;\n if (node.width < MIN_WIDTH) {\n node.width = MIN_WIDTH;\n }\n\n const rx = originalWidth / 2;\n const ry = rx / (2.5 + originalWidth / 50);\n node.height = (node.height ?? 0) - labelPaddingX - ry * 3;\n\n if (node.height < MIN_HEIGHT) {\n node.height = MIN_HEIGHT;\n }\n }\n\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = (node.width ? node.width : bbox.width) + labelPaddingY;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = (node.height ? node.height : bbox.height) + labelPaddingX + ry;\n\n let cylinder: D3Selection | D3Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: 'none' }));\n\n cylinder = shapeSvg.insert(() => innerLine, ':first-child');\n cylinder = shapeSvg.insert(() => outerNode, ':first-child');\n cylinder.attr('class', 'basic label-container');\n if (cssStyles) {\n cylinder.attr('style', cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder = shapeSvg\n .insert('path', ':first-child')\n .attr('d', pathData)\n .attr('class', 'basic label-container outer-path')\n .attr('style', handleUndefinedAttr(cssStyles))\n .attr('style', nodeStyles);\n }\n\n cylinder.attr('label-offset-y', ry);\n cylinder.attr('transform', `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n\n updateNodeBounds(node, cylinder);\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n\n if (\n rx != 0 &&\n (Math.abs(x) < (node.width ?? 0) / 2 ||\n (Math.abs(x) == (node.width ?? 0) / 2 &&\n Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry))\n ) {\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node, RectOptions } from '../../types.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { userNodeOverrides, styles2String } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { Bounds, Point } from '../../../types.js';\n\nexport async function drawRect(\n parent: D3Selection,\n node: Node,\n options: RectOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n // console.log('IPI labelStyles:', labelStyles);\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n // log.info('IPI node = ', node);\n\n let rect;\n let { rx, ry } = node;\n const { cssStyles } = node;\n\n //use options rx, ry overrides if present\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const roughNode =\n rx || ry\n ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options)\n : rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n rect = shapeSvg.insert(() => roughNode, ':first-child');\n rect.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n } else {\n rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('rx', handleUndefinedAttr(rx))\n .attr('ry', handleUndefinedAttr(ry))\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n }\n\n updateNodeBounds(node, rect);\n\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n return intersect.rect(bounds, point);\n };\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\nimport { drawRect } from './drawRect.js';\nimport { userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\n\nexport async function datastore(parent: D3Selection, node: Node) {\n const { cssClasses, labelPaddingX, labelPaddingY, padding, width, height } = node;\n\n const rectOptions: RectOptions = {\n rx: 0,\n ry: 0,\n classes: cssClasses ?? '',\n labelPaddingX: labelPaddingX ?? (padding ?? 0) * 2,\n labelPaddingY: labelPaddingY ?? padding ?? 0,\n };\n\n const rect = await drawRect(parent, node, rectOptions);\n\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(rect);\n const nodeOverrideOptions = userNodeOverrides(node, {});\n\n const borderSelection = rect.select('.basic.label-container > path:nth-child(2)');\n const borderPath = borderSelection.node();\n if (!borderPath) {\n return rect;\n }\n\n let bbox: DOMRect | null = null;\n if (borderPath instanceof SVGGraphicsElement) {\n bbox = borderPath.getBBox();\n } else {\n return rect;\n }\n\n rect.insert(\n () => rc.line(bbox.x, bbox.y, bbox.x + bbox.width, bbox.y, nodeOverrideOptions),\n '.basic.label-container g.label'\n );\n rect.insert(\n () =>\n rc.line(\n bbox.x,\n bbox.y + bbox.height,\n bbox.x + bbox.width,\n bbox.y + bbox.height,\n nodeOverrideOptions\n ),\n '.basic.label-container g.label'\n );\n borderSelection.remove();\n return rect;\n }\n\n const selection = rect.select('.basic.label-container');\n const datastoreWidth = (Number(selection.attr('width')) || width) ?? 0;\n const datastoreHeight = (Number(selection.attr('height')) || height) ?? 0;\n if (datastoreWidth > 0 && datastoreHeight > 0) {\n selection.attr('stroke-dasharray', `${datastoreWidth} ${datastoreHeight}`);\n }\n\n return rect;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function dividedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const paddingX = node.look === 'neo' ? 16 : (node.padding ?? 0);\n const paddingY = node.look === 'neo' ? 16 : (node.padding ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + paddingX;\n const h = bbox.height + paddingY;\n const rectOffset = h * 0.2;\n\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 2;\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const pts = [\n { x, y: y + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset },\n ];\n\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n\n const polygon = shapeSvg.insert(() => poly, ':first-child');\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport async function doublecircle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n const gap = node.look === 'neo' ? 12 : 5;\n node.labelStyle = labelStyles;\n const padding = node.padding ?? 0;\n const labelPadding = node.look === 'neo' ? 16 : padding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const outerRadius = (node?.width ? node?.width / 2 : bbox.width / 2) + (labelPadding ?? 0);\n const innerRadius = outerRadius - gap;\n\n let circleGroup;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n\n circleGroup = shapeSvg.insert('g', ':first-child');\n // circleGroup = circleGroup.insert(() => outerRoughNode, ':first-child');\n circleGroup\n .attr('class', handleUndefinedAttr(node.cssClasses))\n .attr('style', handleUndefinedAttr(cssStyles));\n\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert('g', ':first-child');\n\n const outerCircle = circleGroup.insert('circle', ':first-child');\n const innerCircle = circleGroup.insert('circle');\n circleGroup.attr('class', 'basic label-container').attr('style', nodeStyles);\n\n outerCircle\n .attr('class', 'outer-circle')\n .attr('style', nodeStyles)\n .attr('r', outerRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n\n innerCircle\n .attr('class', 'inner-circle')\n .attr('style', nodeStyles)\n .attr('r', innerRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n }\n\n updateNodeBounds(node, circleGroup);\n\n node.intersect = function (point) {\n log.info('DoubleCircle intersect', node, outerRadius, point);\n return intersect.circle(node, outerRadius, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function filledCircle(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = '';\n node.labelStyle = labelStyles;\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: 'solid' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n }\n\n const circleNode = rc.circle(0, 0, radius * 2, options);\n\n const filledCircle = shapeSvg.insert(() => circleNode, ':first-child');\n\n filledCircle.selectAll('path').attr('style', `fill: ${nodeBorder} !important;`);\n\n if (cssStyles && cssStyles.length > 0 && node.look !== 'handDrawn') {\n filledCircle.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n filledCircle.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, filledCircle);\n\n node.intersect = function (point) {\n log.info('filledCircle intersect', node, { radius, point });\n const pos = intersect.circle(node, radius, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { createPathFromPoints } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nconst MIN_HEIGHT = 10;\nconst MIN_WIDTH = 10;\nexport async function flippedTriangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding;\n if (node.width || node.height) {\n node.height = node?.height ?? 0;\n if (node.height < MIN_HEIGHT) {\n node.height = MIN_HEIGHT;\n }\n\n node.width = (node?.width ?? 0) - labelPaddingX - labelPaddingX / 2;\n if (node.width < MIN_WIDTH) {\n node.width = MIN_WIDTH;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0);\n const h = node?.height ? node?.height : w + bbox.height;\n\n const tw = h;\n\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 },\n ];\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n const flippedTriangle = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-h / 2}, ${h / 2})`)\n .attr('class', 'outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n flippedTriangle.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n flippedTriangle.selectChildren('path').attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, flippedTriangle);\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n\n node.intersect = function (point) {\n log.info('Triangle intersect', node, points, point);\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function forkJoin(\n parent: D3Selection,\n node: Node,\n { dir, config: { state, themeVariables } }: ShapeRenderOptions\n) {\n const { nodeStyles } = styles2String(node);\n node.label = '';\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n\n if (dir === 'LR') {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n\n const x = (-1 * width) / 2;\n const y = (-1 * height) / 2;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor,\n });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const roughNode = rc.rectangle(x, y, width, height, options);\n\n const shape = shapeSvg.insert(() => roughNode, ':first-child');\n\n if (cssStyles && node.look !== 'handDrawn') {\n shape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n shape.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, shape);\n const padding = state?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n createPathFromPoints,\n generateCirclePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function halfRoundedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 15,\n minHeight = 10;\n\n const paddingX = node.look === 'neo' ? 16 : (node.padding ?? 0);\n const paddingY = node.look === 'neo' ? 12 : (node.padding ?? 0);\n\n if (node.width || node.height) {\n node.height = (node?.height ?? 0) - paddingY * 2;\n if (node.height < minHeight) {\n node.height = minHeight;\n }\n\n node.width = (node?.width ?? 0) - paddingX * 2;\n if (node.width < minWidth) {\n node.width = minWidth;\n }\n }\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = (node?.width ? node?.width : Math.max(minWidth, bbox.width)) + paddingX * 2;\n const h = (node?.height ? node?.height : Math.max(minHeight, bbox.height)) + paddingY * 2;\n const radius = h / 2;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n // label.attr(\n // 'transform',\n // `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n // );\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n log.info('Pill intersect', node, { radius, point });\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport const createHexagonPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n m: number\n): string => {\n return [\n `M${x + m},${y}`,\n `L${x + width - m},${y}`,\n `L${x + width},${y - height / 2}`,\n `L${x + width - m},${y - height}`,\n `L${x + m},${y - height}`,\n `L${x},${y - height / 2}`,\n 'Z',\n ].join(' ');\n};\n\nexport async function hexagon(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n const f = node.look === 'neo' ? 3.5 : 4;\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const wa = 70;\n const ha = 32;\n\n const labelPaddingX = node.look === 'neo' ? wa : nodePadding;\n const labelPaddingY = node.look === 'neo' ? ha : nodePadding;\n if (node.width || node.height) {\n const originalHeight = node.height ?? 0;\n const m = originalHeight / f;\n node.width = (node?.width ?? 0) - 2 * m - labelPaddingY;\n node.height = (node.height ?? 0) - labelPaddingX;\n }\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingX;\n const m = h / f;\n\n const w = (node?.width ? node?.width : bbox.width) + 2 * m + labelPaddingY;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n let polygon: D3Selection | Awaited>;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createHexagonPathD(0, 0, w, h, m);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function hourglass(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = '';\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h },\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n polygon.attr('transform', `translate(${-w / 2}, ${-h / 2})`);\n\n updateNodeBounds(node, polygon);\n\n // label.attr('transform', `translate(${-bbox.width / 2}, ${(h/2)})`); // To transform text below hourglass shape\n\n node.intersect = function (point) {\n log.info('Pill intersect', node, { points });\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport { getIconSVG } from '../../icons.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { compileStyles, styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function icon(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables, flowchart } }: ShapeRenderOptions\n) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, 'icon-shape default');\n\n const topLabel = node.pos === 't';\n\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n\n const x = -width / 2;\n const y = -height / 2;\n\n const labelPadding = node.label ? 8 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: 'none', fill: 'none' });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const iconNode = rc.rectangle(x, y, width, height, options);\n\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'transparent',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => iconNode, ':first-child');\n const outerShape = shapeSvg.insert(() => outerNode);\n\n if (node.icon) {\n const iconElem = shapeSvg.append('g');\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: '',\n })}`\n );\n const iconBBox = iconElem.node()!.getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n 'transform',\n `translate(${-iconWidth / 2 - iconX},${\n topLabel\n ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY\n : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY\n })`\n );\n iconElem.attr('style', `color: ${stylesMap.get('stroke') ?? nodeBorder};`);\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n if (!node.label) {\n return intersect.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height },\n ];\n }\n\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport { getIconSVG } from '../../icons.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { compileStyles, styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function iconCircle(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables, flowchart } }: ShapeRenderOptions\n) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, 'icon-shape default');\n\n const padding = 20;\n const labelPadding = node.label ? 8 : 0;\n\n const topLabel = node.pos === 't';\n\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const fill = stylesMap.get('fill');\n options.stroke = fill ?? mainBkg;\n\n const iconElem = shapeSvg.append('g');\n if (node.icon) {\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: '',\n })}`\n );\n }\n const iconBBox = iconElem.node()!.getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n\n const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n const iconNode = rc.circle(0, 0, diameter, options);\n\n const outerWidth = Math.max(diameter, bbox.width);\n const outerHeight = diameter + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'transparent',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => iconNode, ':first-child');\n const outerShape = shapeSvg.insert(() => outerNode);\n iconElem.attr(\n 'transform',\n `translate(${-iconWidth / 2 - iconX},${\n topLabel\n ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY\n : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY\n })`\n );\n iconElem.attr('style', `color: ${stylesMap.get('stroke') ?? nodeBorder};`);\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n const pos = intersect.rect(node, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport { getIconSVG } from '../../icons.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { compileStyles, styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function iconRounded(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables, flowchart } }: ShapeRenderOptions\n) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n 'icon-shape default'\n );\n\n const topLabel = node.pos === 't';\n\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n\n const x = -width / 2;\n const y = -height / 2;\n\n const labelPadding = node.label ? 8 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const fill = stylesMap.get('fill');\n options.stroke = fill ?? mainBkg;\n\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'transparent',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => iconNode, ':first-child').attr('class', 'icon-shape2');\n const outerShape = shapeSvg.insert(() => outerNode);\n\n if (node.icon) {\n const iconElem = shapeSvg.append('g');\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: '',\n })}`\n );\n const iconBBox = iconElem.node()!.getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n 'transform',\n `translate(${-iconWidth / 2 - iconX},${\n topLabel\n ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY\n : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY\n })`\n );\n iconElem.attr('style', `color: ${stylesMap.get('stroke') ?? nodeBorder};`);\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n if (!node.label) {\n return intersect.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height },\n ];\n }\n\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport { getIconSVG } from '../../icons.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { compileStyles, styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function iconSquare(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables, flowchart } }: ShapeRenderOptions\n) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n 'icon-shape default'\n );\n\n const topLabel = node.pos === 't';\n\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n\n const x = -width / 2;\n const y = -height / 2;\n\n const labelPadding = node.label ? 8 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const fill = stylesMap.get('fill');\n options.stroke = fill ?? mainBkg;\n\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'transparent',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => iconNode, ':first-child');\n const outerShape = shapeSvg.insert(() => outerNode);\n\n if (node.icon) {\n const iconElem = shapeSvg.append('g');\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: '',\n })}`\n );\n const iconBBox = iconElem.node()!.getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n 'transform',\n `translate(${-iconWidth / 2 - iconX},${\n topLabel\n ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY\n : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY\n })`\n );\n iconElem.attr('style', `color: ${stylesMap.get('stroke') ?? nodeBorder};`);\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n if (!node.label) {\n return intersect.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height },\n ];\n }\n\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function imageSquare(\n parent: D3Selection,\n node: Node,\n { config: { flowchart } }: ShapeRenderOptions\n) {\n const img = new Image();\n img.src = node?.img ?? '';\n await img.decode();\n\n const imageNaturalWidth = Number(img.naturalWidth.toString().replace('px', ''));\n const imageNaturalHeight = Number(img.naturalHeight.toString().replace('px', ''));\n node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n\n const { labelStyles } = styles2String(node);\n\n node.labelStyle = labelStyles;\n\n const defaultWidth = flowchart?.wrappingWidth;\n node.defaultWidth = flowchart?.wrappingWidth;\n\n const imageRawWidth = Math.max(\n node.label ? (defaultWidth ?? 0) : 0,\n node?.assetWidth ?? imageNaturalWidth\n );\n\n const imageWidth =\n node.constraint === 'on'\n ? node?.assetHeight\n ? node.assetHeight * node.imageAspectRatio\n : imageRawWidth\n : imageRawWidth;\n\n const imageHeight =\n node.constraint === 'on'\n ? imageWidth / node.imageAspectRatio\n : (node?.assetHeight ?? imageNaturalHeight);\n node.width = Math.max(imageWidth, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, 'image-shape default');\n\n const topLabel = node.pos === 't';\n\n const x = -imageWidth / 2;\n const y = -imageHeight / 2;\n\n const labelPadding = node.label ? 8 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n\n const outerWidth = Math.max(imageWidth, bbox.width);\n const outerHeight = imageHeight + bbox.height + labelPadding;\n\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: 'none',\n stroke: 'none',\n });\n\n const iconShape = shapeSvg.insert(() => imageNode, ':first-child');\n const outerShape = shapeSvg.insert(() => outerNode);\n\n if (node.img) {\n const image = shapeSvg.append('image');\n\n // Set the image attributes\n image.attr('href', node.img);\n image.attr('width', imageWidth);\n image.attr('height', imageHeight);\n image.attr('preserveAspectRatio', 'none');\n\n image.attr(\n 'transform',\n `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n );\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${\n topLabel\n ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2\n : imageHeight / 2 - bbox.height / 2 + labelPadding / 2\n })`\n );\n\n iconShape.attr(\n 'transform',\n `translate(${0},${\n topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2\n })`\n );\n\n updateNodeBounds(node, outerShape);\n\n node.intersect = function (point) {\n log.info('iconSquare intersect', node, point);\n if (!node.label) {\n return intersect.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n ];\n } else {\n points = [\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n ];\n }\n\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function inv_trapezoid(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = Math.max(bbox.width + (labelPaddingX ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (labelPaddingY ?? 0) * 2, node?.height ?? 0);\n\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w + (3 * h) / 6, y: -h },\n { x: (-3 * h) / 6, y: -h },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n // const pathData = createInvertedTrapezoidPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions } from '../../types.js';\nimport { drawRect } from './drawRect.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function roundedRect(\n parent: D3Selection,\n node: Node\n) {\n const options = {\n rx: 5,\n ry: 5,\n classes: '',\n labelPaddingX: (node?.padding || 0) * 1,\n labelPaddingY: (node?.padding || 0) * 1,\n } as RectOptions;\n\n return drawRect(parent, node, options);\n}\n\nexport async function labelRect(parent: D3Selection, node: Node) {\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, 'label');\n\n // log.trace('Classes = ', node.class);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Hide the rect we are only after the label\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect.attr('width', totalWidth).attr('height', totalHeight);\n shapeSvg.attr('class', 'label edgeLabel');\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n // if (node.props) {\n // const propKeys = new Set(Object.keys(node.props));\n // if (node.props.borders) {\n // applyNodePropertyBorders(rect, node.borders, totalWidth, totalHeight);\n // propKeys.delete('borders');\n // }\n // propKeys.forEach((propKey) => {\n // log.warn(`Unknown node property ${propKey}`);\n // });\n // }\n\n updateNodeBounds(node, rect);\n // node.width = 1;\n // node.height = 1;\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function lean_left(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n const points = [\n { x: 0, y: 0 },\n { x: w + (3 * h) / 6, y: 0 },\n { x: w, y: -h },\n { x: -(3 * h) / 6, y: -h },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n // const pathData = createLeanLeftPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function lean_right(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = nodePadding;\n const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n\n const points = [\n { x: (-3 * h) / 6, y: 0 },\n { x: w, y: 0 },\n { x: w + (3 * h) / 6, y: -h },\n { x: 0, y: -h },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { getNodeClasses, updateNodeBounds } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport { createPathFromPoints } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function lightningBolt(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = '';\n node.labelStyle = labelStyles;\n const shapeSvg = parent\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId ?? node.id);\n const { cssStyles } = node;\n const width = Math.max(35, node?.width ?? 0);\n const height = Math.max(35, node?.height ?? 0);\n const gap = 7;\n\n const points = [\n { x: width, y: 0 },\n { x: 0, y: height + gap / 2 },\n { x: width - 2 * gap, y: height + gap / 2 },\n { x: 0, y: 2 * height },\n { x: width, y: height - gap / 2 },\n { x: 2 * gap, y: height - gap / 2 },\n ];\n\n // @ts-expect-error shapeSvg d3 class is incorrect?\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const linePath = createPathFromPoints(points);\n const lineNode = rc.path(linePath, options);\n\n const lightningBolt = shapeSvg.insert(() => lineNode, ':first-child');\n lightningBolt.attr('class', 'outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n lightningBolt.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n lightningBolt.selectAll('path').attr('style', nodeStyles);\n }\n\n lightningBolt.attr('transform', `translate(-${width / 2},${-height})`);\n\n updateNodeBounds(node, lightningBolt);\n\n node.intersect = function (point) {\n log.info('lightningBolt intersect', node, point);\n const pos = intersect.polygon(node, points, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport const createCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number,\n outerOffset: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n ].join(' ');\n};\nexport const createOuterCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number,\n outerOffset: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n ].join(' ');\n};\nexport const createInnerCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(' ');\n};\n\nconst MIN_HEIGHT = 10;\nconst MIN_WIDTH = 10;\n\nexport async function linedCylinder(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 24 : nodePadding;\n\n if (node.width || node.height) {\n const originalWidth = node.width ?? 0;\n node.width = (node.width ?? 0) - labelPaddingX;\n if (node.width < MIN_WIDTH) {\n node.width = MIN_WIDTH;\n }\n\n const rx = originalWidth / 2;\n\n // based on this width, height is calculated\n const ry = rx / (2.5 + originalWidth / 50);\n node.height = (node.height ?? 0) - labelPaddingY - ry * 3;\n if (node.height < MIN_HEIGHT) {\n node.height = MIN_HEIGHT;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = (node?.height ? node?.height : bbox.height) + ry + labelPaddingY * 2;\n const outerOffset = h * 0.1; // 10% of height\n\n let cylinder: typeof shapeSvg | D3Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry, outerOffset);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, options);\n\n const innerLineEl = shapeSvg.insert(() => innerLine, ':first-child');\n innerLineEl.attr('class', 'line');\n cylinder = shapeSvg.insert(() => outerNode, ':first-child');\n cylinder.attr('class', 'basic label-container');\n if (cssStyles) {\n cylinder.attr('style', cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry, outerOffset);\n cylinder = shapeSvg\n .insert('path', ':first-child')\n .attr('d', pathData)\n .attr('class', 'basic label-container outer-path')\n .attr('style', handleUndefinedAttr(cssStyles))\n .attr('style', nodeStyles);\n }\n\n // find label and move it down\n cylinder.attr('label-offset-y', ry);\n cylinder.attr('transform', `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n\n updateNodeBounds(node, cylinder);\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n );\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n\n if (\n rx != 0 &&\n (Math.abs(x) < (node.width ?? 0) / 2 ||\n (Math.abs(x) == (node.width ?? 0) / 2 &&\n Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry))\n ) {\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n generateFullSineWavePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function linedWaveEdgedRect(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n if (node.width || node.height) {\n const originalWidth = node.width;\n node.width = ((originalWidth ?? 0) * 10) / 11 - labelPaddingX * 2;\n if (node.width < 10) {\n node.width = 10;\n }\n node.height = (node?.height ?? 0) - labelPaddingY * 2;\n if (node.height < 10) {\n node.height = 10;\n }\n }\n\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0) * 2;\n const h = (node?.height ? node?.height : bbox.height) + (labelPaddingY ?? 0) * 2;\n const waveAmplitude = node.look === 'neo' ? h / 4 : h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2 - (w / 2) * 0.1, y: -finalH / 2 },\n { x: -w / 2 - (w / 2) * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - (w / 2) * 0.1,\n finalH / 2,\n w / 2 + (w / 2) * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + (w / 2) * 0.1, y: -finalH / 2 },\n { x: -w / 2 - (w / 2) * 0.1, y: -finalH / 2 },\n { x: -w / 2, y: -finalH / 2 },\n { x: -w / 2, y: (finalH / 2) * 1.1 },\n { x: -w / 2, y: -finalH / 2 },\n ];\n\n const poly = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n\n const waveEdgeRect = shapeSvg.insert(() => poly, ':first-child');\n\n waveEdgeRect.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', nodeStyles);\n }\n\n waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) + ((w / 2) * 0.1) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n getNodeClasses,\n updateNodeBounds,\n createPathFromPoints,\n mergePaths,\n} from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function multiRect(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n const rectOffset = node.look === 'neo' ? 10 : 5;\n\n // If incoming height & width are present, subtract the padding from them\n // as labelHelper does not take padding into account\n // also check if the width or height is less than minimum default values (50),\n // if so set it to min value\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - labelPaddingX * 2 - 2 * rectOffset, 10);\n node.height = Math.max((node?.height ?? 0) - labelPaddingY * 2 - 2 * rectOffset, 10);\n }\n\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + 2 * rectOffset;\n const totalHeight =\n (node?.height ? node?.height : bbox.height) + labelPaddingY * 2 + 2 * rectOffset;\n\n const w = totalWidth - 2 * rectOffset;\n const h = totalHeight - 2 * rectOffset;\n\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y },\n { x, y },\n { x, y: y + rectOffset },\n ];\n\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y },\n { x, y },\n ];\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const outerPath = createPathFromPoints(outerPathPoints);\n let outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n let innerNode = rc.path(innerPath, options);\n\n if (node.look !== 'handDrawn') {\n outerNode = mergePaths(outerNode);\n innerNode = mergePaths(innerNode);\n }\n\n const multiRect = shapeSvg.insert('g', ':first-child');\n multiRect.insert(() => outerNode);\n multiRect.insert(() => innerNode);\n\n multiRect.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n multiRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n multiRect.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, multiRect);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, outerPathPoints, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n createPathFromPoints,\n generateFullSineWavePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function multiWaveEdgedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n let adjustFinalHeight = true;\n\n if (node.width || node.height) {\n adjustFinalHeight = false;\n node.width = (node?.width ?? 0) - labelPaddingX * 2;\n node.height = (node?.height ?? 0) - labelPaddingY * 3;\n }\n\n const w = Math.max(bbox.width, node?.width ?? 0) + labelPaddingX * 2;\n const h = Math.max(bbox.height, node?.height ?? 0) + labelPaddingY * 3;\n const waveAmplitude = node.look === 'neo' ? h / 4 : h / 8;\n const finalH = h + (adjustFinalHeight ? waveAmplitude / 2 : -waveAmplitude / 2);\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset = 10;\n\n const { cssStyles } = node;\n\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset,\n y + finalH + rectOffset,\n x + w - rectOffset,\n y + finalH + rectOffset,\n waveAmplitude,\n 0.8\n );\n\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + finalH + rectOffset },\n ...wavePoints,\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y },\n { x, y },\n { x, y: y + rectOffset },\n ];\n\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y },\n { x, y },\n ];\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, options);\n\n const shape = shapeSvg.insert(() => outerNode, ':first-child');\n shape.insert(() => innerNode);\n\n shape.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n shape.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n shape.selectAll('path').attr('style', nodeStyles);\n }\n\n shape.attr('transform', `translate(0,${-waveAmplitude / 2})`);\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, shape);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, outerPathPoints, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, labelHelper, updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\nimport { getConfig } from '../../../config.js';\nimport { getEffectiveHtmlLabels } from '../../../config.js';\n\nexport async function note(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const useHtmlLabels = node.useHtmlLabels || getEffectiveHtmlLabels(getConfig());\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n\n // add the rect\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n fill: themeVariables.noteBkgColor,\n stroke: themeVariables.noteBorderColor,\n });\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n const rect = shapeSvg.insert(() => noteShapeNode, ':first-child');\n rect.attr('class', 'basic label-container outer-path');\n label.attr('class', 'label noteLabel');\n\n if (cssStyles && node.look !== 'handDrawn') {\n rect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n rect.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\nimport type { Bounds, Point } from '../../../types.js';\n\nexport const createDecisionBoxPathD = (x: number, y: number, size: number): string => {\n return [\n `M${x + size / 2},${y}`,\n `L${x + size},${y - size / 2}`,\n `L${x + size / 2},${y - size}`,\n `L${x},${y - size / 2}`,\n 'Z',\n ].join(' ');\n};\n\nexport async function question(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const s = w + h;\n const adjustment = 0.5;\n\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-s / 2 + adjustment}, ${s / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n polygon.attr('transform', `translate(${-s / 2 + adjustment}, ${s / 2})`);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n const s = bounds.width;\n\n // Define polygon points\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n // Calculate the intersection point\n const res = intersect.polygon(bounds, points, point);\n\n return { x: res.x - 0.5, y: res.y - 0.5 }; // Adjusted result\n };\n\n node.intersect = function (point) {\n // @ts-ignore TODO fix this (KNSV)\n return this.calcIntersect(node as Bounds, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function rect_left_inv_arrow(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 21 : (nodePadding ?? 0);\n const labelPaddingY = node.look === 'neo' ? 12 : (nodePadding ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = (node?.width ?? bbox.width) + (node.look === 'neo' ? labelPaddingX * 2 : labelPaddingX);\n const h =\n (node?.height ?? bbox.height) + (node.look === 'neo' ? labelPaddingY * 2 : labelPaddingY);\n\n const x = -w / 2;\n const y = -h / 2;\n const notch = y / 2;\n\n const points = [\n { x: x + notch, y },\n { x: x, y: 0 },\n { x: x + notch, y: -y },\n { x: -x, y: -y },\n { x: -x, y },\n ];\n\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => roughNode, ':first-child');\n\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectAll('path').attr('style', cssStyles);\n }\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectAll('path').attr('style', nodeStyles);\n }\n\n polygon.attr('transform', `translate(${-notch / 2},0)`);\n\n label.attr(\n 'transform',\n `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import type { Node } from '../../types.js';\nimport { select } from 'd3';\nimport { updateNodeBounds } from './util.js';\nimport createLabel from '../createLabel.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { log } from '../../../logger.js';\nimport type { D3Selection } from '../../../types.js';\nimport { getEffectiveHtmlLabels } from '../../../config.js';\n\nexport async function rectWithTitle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n let classes;\n if (!node.cssClasses) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.cssClasses;\n }\n\n // Add outer g element\n const shapeSvg = parent\n // @ts-ignore - d3 typings are not correct\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const g = shapeSvg.insert('g');\n\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', nodeStyles);\n\n const description = node.description;\n\n const title = node.label;\n\n const text = await createLabel(label, title, node.labelStyle, true, true);\n let bbox = { width: 0, height: 0 };\n if (getEffectiveHtmlLabels(getConfig())) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', description);\n const textRows = description || [];\n const titleBox = text.getBBox();\n const descr = await createLabel(\n label,\n Array.isArray(textRows) ? textRows.join('
    ') : textRows,\n node.labelStyle,\n true,\n true\n );\n\n //if (evaluate(getConfig()?.flowchart?.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n // }\n\n const halfPadding = (node.padding || 0) / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node()!.getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect;\n let innerLine;\n if (node.look === 'handDrawn') {\n // @ts-ignore No typings for rough\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n\n innerLine = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughLine;\n }, ':first-child');\n rect = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughNode;\n }, ':first-child');\n } else {\n rect = g.insert('rect', ':first-child');\n innerLine = g.insert('line');\n rect\n .attr('class', 'outer title-state')\n .attr('style', nodeStyles)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + (node.padding || 0))\n .attr('height', bbox.height + (node.padding || 0));\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions, ShapeRenderOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport async function roundedRect(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const radius = themeVariables?.radius ?? 5;\n\n const options = {\n rx: radius,\n ry: radius,\n classes: '',\n labelPaddingX: (node?.padding ?? 0) * 1,\n labelPaddingY: (node?.padding ?? 0) * 1,\n } as RectOptions;\n\n return drawRect(parent, node, options);\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\n/// Width of the frame on the left of the shape\nconst FRAME_WIDTH = 8;\n\nexport async function shadedProcess(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const paddingX = node.look === 'neo' ? 16 : (node.padding ?? 0);\n const paddingY = node.look === 'neo' ? 12 : (node.padding ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth =\n (node?.width ?? bbox.width) +\n paddingX * 2 +\n (node.look === 'neo' ? FRAME_WIDTH : FRAME_WIDTH * 2);\n const totalHeight = (node?.height ?? bbox.height) + paddingY * 2;\n const w = totalWidth - FRAME_WIDTH;\n const h = totalHeight;\n const x = FRAME_WIDTH - totalWidth / 2;\n const y = -totalHeight / 2;\n\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x, y },\n { x: x + w, y },\n { x: x + w, y: y + h },\n { x: x - FRAME_WIDTH, y: y + h },\n { x: x - FRAME_WIDTH, y: y },\n { x, y },\n { x, y: y + h },\n ];\n\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n\n const rect = shapeSvg.insert(() => roughNode, ':first-child');\n\n rect\n .attr('class', 'basic label-container outer-path')\n .attr('style', handleUndefinedAttr(cssStyles));\n\n if (nodeStyles && node.look !== 'handDrawn') {\n rect.selectAll('path').attr('style', nodeStyles);\n }\n\n if (cssStyles && node.look !== 'handDrawn') {\n rect.selectAll('path').attr('style', nodeStyles);\n }\n\n // The inner main rect is centered at FRAME_WIDTH/2, not at 0.\n // Shift the label right by FRAME_WIDTH/2 so it's centered inside the main rect.\n label.attr(\n 'transform',\n `translate(${FRAME_WIDTH / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function slopedRect(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n\n // If incoming height & width are present, subtract the padding from them\n // as labelHelper does not take padding into account\n // also check if the width or height is less than minimum default values (50),\n // if so set it to min value\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - labelPaddingX * 2, 10);\n node.height = Math.max((node?.height ?? 0) / 1.5 - labelPaddingY * 2, 10);\n }\n\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const totalHeight = ((node?.height ? node?.height : bbox.height) + labelPaddingY * 2) * 1.5;\n\n const w = totalWidth;\n const h = totalHeight / 1.5;\n const x = -w / 2;\n const y = -h / 2;\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 },\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n polygon.attr('transform', `translate(0, ${h / 4})`);\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport async function squareRect(parent: D3Selection, node: Node) {\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding * 2;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n\n const options = {\n rx: 0,\n ry: 0,\n classes: '',\n labelPaddingX: node.labelPaddingX ?? labelPaddingX,\n labelPaddingY: labelPaddingY,\n } as RectOptions;\n return drawRect(parent, node, options);\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n generateCirclePoints,\n createPathFromPoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport const createStadiumPathD = (\n x: number,\n y: number,\n totalWidth: number,\n totalHeight: number\n) => {\n const radius = totalHeight / 2;\n return [\n 'M',\n x + radius,\n y, // Move to the start of the top-left arc\n 'H',\n x + totalWidth - radius, // Draw horizontal line to the start of the top-right arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius, // Draw top-right arc\n 'H',\n x, // Draw horizontal line to the start of the bottom-right arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight, // Draw bottom-right arc\n 'H',\n x + radius, // Draw horizontal line to the start of the bottom-left arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + radius, // Draw bottom-left arc\n 'Z', // Close the path\n ].join(' ');\n};\n\nexport async function stadium(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 20 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + (node.look === 'neo' ? labelPaddingY * 2 : labelPaddingY);\n const w = bbox.width + h / 4 + (node.look === 'neo' ? labelPaddingX * 2 : labelPaddingX);\n\n const radius = h / 2;\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2 + radius, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2 - radius, 0, radius, 50, 270, 450),\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import type { Node, RectOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport async function state(parent: D3Selection, node: Node) {\n const options = {\n rx: node.look === 'neo' ? 3 : 5,\n ry: node.look === 'neo' ? 3 : 5,\n classes: 'flowchart-node',\n } as RectOptions;\n return drawRect(parent, node, options);\n}\n", "import rough from 'roughjs';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function stateEnd(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder, nodeShadow } = themeVariables;\n\n // If incoming height & width are present, subtract the padding from them\n // as labelHelper does not take padding into account\n // also check if the width or height is less than minimum default values (50),\n // if so set it to min value\n if (node.width || node.height) {\n if ((node.width ?? 0) < 14) {\n node.width = 14;\n }\n\n if ((node.height ?? 0) < 14) {\n node.height = 14;\n }\n }\n\n if (!node.width) {\n node.width = 14;\n }\n\n if (!node.height) {\n node.height = 14;\n }\n\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId ?? node.id);\n\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const roughNode = rc.circle(0, 0, node.width, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2,\n });\n const innerFill = stateBorder ?? nodeBorder;\n const innerNodeRadius = ((node.width ?? 0) * 5) / 14;\n const roughInnerNode = rc.circle(0, 0, innerNodeRadius, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: 'solid',\n });\n const circle = shapeSvg.insert(() => roughNode, ':first-child');\n circle.insert(() => roughInnerNode);\n\n if (node.look !== 'handDrawn') {\n circle.attr('class', 'outer-path');\n }\n\n if (cssStyles) {\n circle.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles) {\n circle.selectAll('path').attr('style', nodeStyles);\n }\n\n if (node.width < 25 && nodeShadow && node.look !== 'handDrawn') {\n const svgId = parent.node()?.ownerSVGElement?.id ?? '';\n const filterId = svgId ? `${svgId}-drop-shadow-small` : 'drop-shadow-small';\n circle.attr('style', `filter:url(#${filterId})`);\n }\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, (node.width ?? 0) / 2, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport type { Node, ShapeRenderOptions } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { solidStateFill } from './handDrawnShapeStyles.js';\nimport { updateNodeBounds } from './util.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport function stateStart(\n parent: D3Selection,\n node: Node,\n { config: { themeVariables } }: ShapeRenderOptions\n) {\n const { lineColor, nodeShadow } = themeVariables;\n\n // If incoming height & width are present, subtract the padding from them\n // as labelHelper does not take padding into account\n // also check if the width or height is less than minimum default values (50),\n // if so set it to min value\n if (node.width || node.height) {\n if ((node.width ?? 0) < 14) {\n node.width = 14;\n }\n\n if ((node.height ?? 0) < 14) {\n node.height = 14;\n }\n }\n\n if (!node.width) {\n node.width = 14;\n }\n\n if (!node.height) {\n node.height = 14;\n }\n\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let circle: D3Selection | D3Selection;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, node.width, solidStateFill(lineColor));\n // @ts-ignore TODO: Fix typings\n circle = shapeSvg.insert(() => roughNode);\n // center the circle around its coordinate\n circle\n .attr('class', 'state-start')\n .attr('r', (node.width ?? 7) / 2)\n .attr('width', node.width ?? 14)\n .attr('height', node.height ?? 14);\n } else {\n circle = shapeSvg.insert('circle', ':first-child');\n // center the circle around its coordinate\n circle\n .attr('class', 'state-start')\n .attr('r', (node.width ?? 7) / 2)\n .attr('width', node.width ?? 14)\n .attr('height', node.height ?? 14);\n }\n\n if (node.width < 25 && nodeShadow && node.look !== 'handDrawn') {\n const svgId = parent.node()?.ownerSVGElement?.id ?? '';\n const filterId = svgId ? `${svgId}-drop-shadow-small` : 'drop-shadow-small';\n circle.attr('style', `filter:url(#${filterId})`);\n }\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, (node.width ?? 7) / 2, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport const createSubroutinePathD = (\n x: number,\n y: number,\n width: number,\n height: number\n): string => {\n const offset = 8;\n return [\n `M${x - offset},${y}`,\n `H${x + width + offset}`,\n `V${y + height}`,\n `H${x - offset}`,\n `V${y}`,\n 'M',\n x,\n y,\n 'H',\n x + width,\n 'V',\n y + height,\n 'H',\n x,\n 'Z',\n ].join(' ');\n};\n\n// width of the frame on the left and right side of the shape\nconst FRAME_WIDTH = 8;\n\nexport async function subroutine(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const nodePadding = node?.padding ?? 8;\n const labelPaddingX = node.look === 'neo' ? 28 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = (node?.width ?? bbox.width) + 2 * FRAME_WIDTH + labelPaddingX;\n const totalHeight = (node?.height ?? bbox.height) + labelPaddingY;\n\n const w = totalWidth - 2 * FRAME_WIDTH;\n const h = totalHeight;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const roughNode = rc.rectangle(x, y, w + 16, h, options);\n const l1 = rc.line(x + FRAME_WIDTH, y, x + FRAME_WIDTH, y + h, options);\n const l2 = rc.line(x + FRAME_WIDTH + w, y, x + FRAME_WIDTH + w, y + h, options);\n\n shapeSvg.insert(() => l1, ':first-child');\n shapeSvg.insert(() => l2, ':first-child');\n const rect = shapeSvg.insert(() => roughNode, ':first-child');\n const { cssStyles } = node;\n rect.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr('style', nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, getNodeClasses, updateNodeBounds, createPathFromPoints } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\n/// The width/height of the tag in comparison to the height of the node\nconst TAG_RATIO = 0.2;\n\nexport async function taggedRect(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n\n // If incoming height & width are present, subtract the padding from them\n // as labelHelper does not take padding into account\n // also check if the width or height is less than minimum default values (50),\n // if so set it to min value\n if (node.width || node.height) {\n node.height = Math.max((node?.height ?? 0) - labelPaddingY * 2, 10);\n node.width = Math.max(\n (node?.width ?? 0) - labelPaddingX * 2 - TAG_RATIO * (node.height + labelPaddingY * 2),\n 10\n );\n }\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalHeight = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const tagWidth = TAG_RATIO * totalHeight;\n const tagHeight = TAG_RATIO * totalHeight;\n const totalWidth = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2 + tagWidth;\n\n const w = totalWidth - tagWidth;\n const h = totalHeight;\n const x = -w / 2;\n const y = -h / 2;\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h },\n ];\n\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight },\n ];\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: 'solid' });\n\n const taggedRect = shapeSvg.insert(() => tagNode, ':first-child');\n taggedRect.insert(() => rectNode, ':first-child');\n\n taggedRect.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n taggedRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n taggedRect.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, taggedRect);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, rectPoints, point);\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n generateFullSineWavePoints,\n createPathFromPoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function taggedWaveEdgedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2 - (w / 2) * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - (w / 2) * 0.1,\n finalH / 2,\n w / 2 + (w / 2) * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n\n { x: w / 2 + (w / 2) * 0.1, y: -finalH / 2 },\n { x: -w / 2 - (w / 2) * 0.1, y: -finalH / 2 },\n ];\n\n const x = -w / 2 + (w / 2) * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.3 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.25,\n x + w - tagWidth,\n (y + h) * 1.3,\n -h * 0.02,\n 0.5\n ),\n ];\n\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: 'solid',\n });\n\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, ':first-child');\n waveEdgeRect.insert(() => waveEdgeRectNode, ':first-child');\n\n waveEdgeRect.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', nodeStyles);\n }\n\n waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function text(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0), node?.width || 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0), node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'text')\n .attr('style', nodeStyles)\n .attr('rx', 0)\n .attr('ry', 0)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, getNodeClasses, updateNodeBounds } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\n\nexport const createCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n};\n\nexport const createOuterCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`,\n ].join(' ');\n};\nexport const createInnerCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(' ');\n};\n\nconst MIN_HEIGHT = 5;\nconst MIN_WIDTH = 10;\n\nexport async function tiltedCylinder(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPadding = node.look === 'neo' ? 12 : nodePadding / 2;\n if (node.width || node.height) {\n const originalHeight = node.height ?? 0;\n node.height = (node.height ?? 0) - labelPadding;\n if (node.height < MIN_HEIGHT) {\n node.height = MIN_HEIGHT;\n }\n const ry = originalHeight / 2;\n // based on this height, width is calculated\n const rx = ry / (2.5 + originalHeight / 50);\n\n node.width = (node.width ?? 0) - labelPadding - rx * 3;\n if (node.width < MIN_WIDTH) {\n node.width = MIN_WIDTH;\n }\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const h = (node.height ? node.height : bbox.height) + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = (node.width ? node.width : bbox.width) + rx + labelPadding;\n const { cssStyles } = node;\n\n let cylinder: D3Selection | D3Selection;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: 'none' }));\n cylinder = shapeSvg.insert(() => innerLine, ':first-child');\n cylinder = shapeSvg.insert(() => outerNode, ':first-child');\n cylinder.attr('class', 'basic label-container');\n if (cssStyles) {\n cylinder.attr('style', cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder = shapeSvg\n .insert('path', ':first-child')\n .attr('d', pathData)\n .attr('class', 'basic label-container')\n .attr('style', handleUndefinedAttr(cssStyles))\n .attr('style', nodeStyles);\n cylinder.attr('class', 'basic label-container outer-path');\n\n if (cssStyles) {\n cylinder.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles) {\n cylinder.selectAll('path').attr('style', nodeStyles);\n }\n }\n\n cylinder.attr('label-offset-x', rx);\n cylinder.attr('transform', `translate(${-w / 2}, ${h / 2} )`);\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, cylinder);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n\n if (\n ry != 0 &&\n (Math.abs(y) < (node.height ?? 0) / 2 ||\n (Math.abs(y) == (node.height ?? 0) / 2 &&\n Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx))\n ) {\n let x = rx * rx * (1 - (y * y) / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n\n pos.x += x;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function trapezoid(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingY = node.look === 'neo' ? nodePadding : nodePadding;\n const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = (node?.height ?? bbox.height) + labelPaddingY;\n const w = (node?.width ?? bbox.width) + labelPaddingX;\n\n const points = [\n { x: (-3 * h) / 6, y: 0 },\n { x: w + (3 * h) / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n ];\n\n let polygon: typeof shapeSvg | ReturnType;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses, createPathFromPoints } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function trapezoidalPentagon(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n const minWidth = 15,\n minHeight = 5;\n if (node.width || node.height) {\n node.height = (node.height ?? 0) - labelPaddingY * 2;\n if (node.height < minHeight) {\n node.height = minHeight;\n }\n\n node.width = (node.width ?? 0) - labelPaddingX * 2;\n if (node.width < minWidth) {\n node.width = minWidth;\n }\n }\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n\n const { cssStyles } = node;\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: (-w / 2) * 0.8, y: -h / 2 },\n { x: (w / 2) * 0.8, y: -h / 2 },\n { x: w / 2, y: (-h / 2) * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: (-h / 2) * 0.6 },\n ];\n\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n\n const polygon = shapeSvg.insert(() => shapeNode, ':first-child');\n polygon.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { createPathFromPoints } from './util.js';\nimport { evaluate } from '../../../diagrams/common/common.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport type { D3Selection } from '../../../types.js';\n\nconst MIN_HEIGHT = 10;\nconst MIN_WIDTH = 10;\n\nexport async function triangle(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? nodePadding * 2 : nodePadding;\n if (node.width || node.height) {\n node.width = ((node?.width ?? 0) - labelPaddingX) / 2;\n if (node.width < MIN_WIDTH) {\n node.width = MIN_WIDTH;\n }\n node.height = node?.height ?? 0;\n if (node.height < MIN_HEIGHT) {\n node.height = MIN_HEIGHT;\n }\n }\n\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig().flowchart?.htmlLabels);\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX;\n const h = node?.height ? node?.height : w + bbox.height;\n const tw = h;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h },\n ];\n\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n\n const polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-h / 2}, ${h / 2})`)\n .attr('class', 'outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n polygon.selectChildren('path').attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n label.attr(\n 'transform',\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n\n node.intersect = function (point) {\n log.info('Triangle intersect', node, points, point);\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n generateFullSineWavePoints,\n createPathFromPoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function waveEdgedRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 12 : nodePadding;\n\n let adjustFinalHeight = true;\n if (node.width || node.height) {\n adjustFinalHeight = false;\n node.width = (node?.width ?? 0) - labelPaddingX * 2;\n if (node.width < 10) {\n node.width = 10;\n }\n node.height = (node?.height ?? 0) - labelPaddingY * 2;\n if (node.height < 10) {\n node.height = 10;\n }\n }\n\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = (node?.width ? node?.width : bbox.width) + (labelPaddingX ?? 0) * 2;\n const h = (node?.height ? node?.height : bbox.height) + (labelPaddingY ?? 0) * 2;\n const waveAmplitude = node.look === 'neo' ? h / 4 : h / 8;\n const finalH = h + (adjustFinalHeight ? waveAmplitude : -waveAmplitude);\n const { cssStyles } = node;\n\n // To maintain minimum width\n const minWidth = 14;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 },\n ];\n\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, ':first-child');\n\n waveEdgeRect.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n waveEdgeRect.selectAll('path').attr('style', nodeStyles);\n }\n\n waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n 'transform',\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import {\n labelHelper,\n updateNodeBounds,\n getNodeClasses,\n createPathFromPoints,\n generateFullSineWavePoints,\n} from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function waveRectangle(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const nodePadding = node.padding ?? 0;\n const labelPaddingX = node.look === 'neo' ? 16 : nodePadding;\n const labelPaddingY = node.look === 'neo' ? 20 : nodePadding;\n\n if (node.width || node.height) {\n node.width = node?.width ?? 0;\n if (node.width < 20) {\n node.width = 20;\n }\n\n node.height = node?.height ?? 0;\n if (node.height < 10) {\n node.height = 10;\n }\n\n // Adjust for wave amplitude\n const waveAmplitude = Math.min(node.height * 0.2, node.height / 4);\n node.height = Math.ceil(node.height - labelPaddingY - waveAmplitude * (20 / 9));\n node.width = node.width - labelPaddingX * 2;\n }\n\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY;\n\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1),\n ];\n\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n\n const waveRect = shapeSvg.insert(() => waveRectNode, ':first-child');\n\n waveRect.attr('class', 'basic label-container');\n\n if (cssStyles && node.look !== 'handDrawn') {\n waveRect.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n waveRect.selectAll('path').attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, waveRect);\n node.intersect = function (point) {\n const pos = intersect.polygon(node, points, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { labelHelper, getNodeClasses, updateNodeBounds } from './util.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport intersect from '../intersect/index.js';\nimport type { D3Selection } from '../../../types.js';\n\n/// Width of the frame on the top and left of the shape\nconst rectOffset = 10;\n\nexport async function windowPane(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const paddingX = node.look === 'neo' ? 16 : (node.padding ?? 0);\n const paddingY = node.look === 'neo' ? 12 : (node.padding ?? 0);\n\n // If incoming height & width are present, subtract the padding from them\n // as labelHelper does not take padding into account\n // also check if the width or height is less than minimum default values (50),\n // if so set it to min value\n if (node.width || node.height) {\n node.width = Math.max((node?.width ?? 0) - paddingX * 2 - rectOffset, 10);\n node.height = Math.max((node?.height ?? 0) - paddingY * 2 - rectOffset, 10);\n }\n\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = (node?.width ? node?.width : bbox.width) + paddingX * 2 + rectOffset;\n const totalHeight = (node?.height ? node?.height : bbox.height) + paddingY * 2 + rectOffset;\n\n const w = totalWidth - rectOffset;\n const h = totalHeight - rectOffset;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset },\n ];\n\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const no = rc.path(path, options);\n\n const windowPane = shapeSvg.insert(() => no, ':first-child');\n windowPane.attr('transform', `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n\n windowPane.attr('class', 'basic label-container outer-path');\n\n if (cssStyles && node.look !== 'handDrawn') {\n windowPane.selectAll('path').attr('style', cssStyles);\n }\n\n if (nodeStyles && node.look !== 'handDrawn') {\n windowPane.selectAll('path').attr('style', nodeStyles);\n }\n\n label.attr(\n 'transform',\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n\n updateNodeBounds(node, windowPane);\n\n node.intersect = function (point) {\n const pos = intersect.polygon(node, outerPathPoints, point);\n return pos;\n };\n\n return shapeSvg;\n}\n", "import { updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { userNodeOverrides, styles2String } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { drawRect } from './drawRect.js';\nimport { getConfig } from '../../../config.js';\nimport type { EntityNode } from '../../../diagrams/er/erTypes.js';\nimport { createText } from '../../createText.js';\nimport { evaluate, parseGenericTypes } from '../../../diagrams/common/common.js';\nimport { select } from 'd3';\nimport { calculateTextWidth } from '../../../utils.js';\nimport type { MermaidConfig } from '../../../config.type.js';\nimport type { D3Selection } from '../../../types.js';\n\nconst COLOR_THEMES = new Set(['redux-color', 'redux-dark-color']);\nconst REDUX_THEMES = new Set(['redux', 'redux-dark', 'redux-color', 'redux-dark-color']);\n\nexport async function erBox(parent: D3Selection, node: Node) {\n // Treat node as entityNode for certain entityNode checks\n const entityNode = node as unknown as EntityNode;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\n const { theme, themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder, borderColorArray } = themeVariables;\n\n // Background shapes are drawn to fill in the background color and cover up the ER diagram edge markers.\n // Draw background shape once.\n if (node.look === 'handDrawn') {\n const { themeVariables } = getConfig();\n const { background } = themeVariables;\n const backgroundNode = {\n ...node,\n id: node.id + '-background',\n domId: (node.domId || node.id) + '-background',\n look: 'default',\n cssStyles: ['stroke: none', `fill: ${background}`],\n };\n await erBox(parent, backgroundNode);\n }\n\n const config = getConfig();\n node.useHtmlLabels = config.htmlLabels;\n let PADDING = config.er?.diagramPadding ?? 10;\n let TEXT_PADDING = config.er?.entityPadding ?? 6;\n\n const { cssStyles } = node;\n const { labelStyles, nodeStyles } = styles2String(node);\n\n // Draw rect if no attributes are found\n if (entityNode.attributes.length === 0 && node.label) {\n const options = {\n rx: 0,\n ry: 0,\n labelPaddingX: PADDING,\n labelPaddingY: PADDING * 1.5,\n classes: '',\n };\n // Set minimum width\n if (\n calculateTextWidth(node.label, config) + options.labelPaddingX * 2 <\n config.er!.minEntityWidth!\n ) {\n node.width = config.er!.minEntityWidth;\n }\n const shapeSvg = await drawRect(parent, node, options);\n if (theme != null && COLOR_THEMES.has(theme)) {\n const colorIndex = entityNode.colorIndex ?? 0;\n shapeSvg.attr('data-color-id', `color-${colorIndex % borderColorArray.length}`);\n }\n\n // drawRect doesn't center non-htmlLabels correctly as of now, so translate label\n if (!evaluate(config.htmlLabels)) {\n const textElement = shapeSvg.select('text');\n const bbox = (textElement.node() as SVGTextElement)?.getBBox();\n textElement.attr('transform', `translate(${-bbox.width / 2}, 0)`);\n }\n return shapeSvg;\n }\n\n if (!config.htmlLabels) {\n PADDING *= 1.25;\n TEXT_PADDING *= 1.25;\n }\n\n let cssClasses = getNodeClasses(node);\n if (!cssClasses) {\n cssClasses = 'node default';\n }\n\n const shapeSvg = parent\n // @ts-ignore Ignore .insert on SVGAElement\n .insert('g')\n .attr('class', cssClasses)\n .attr('id', node.domId || node.id);\n\n const nameBBox = await addText(shapeSvg, node.label ?? '', config, 0, 0, ['name'], labelStyles);\n nameBBox.height += TEXT_PADDING;\n let yOffset = 0;\n const yOffsets = [];\n const rows = [];\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeysWidth = 0;\n let maxCommentWidth = 0;\n let keysPresent = true;\n let commentPresent = true;\n for (const attribute of entityNode.attributes) {\n const typeBBox = await addText(\n shapeSvg,\n attribute.type,\n config,\n 0,\n yOffset,\n ['attribute-type'],\n labelStyles\n );\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n const nameBBox = await addText(\n shapeSvg,\n attribute.name,\n config,\n 0,\n yOffset,\n ['attribute-name'],\n labelStyles\n );\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width + PADDING);\n const keysBBox = await addText(\n shapeSvg,\n attribute.keys.join(),\n config,\n 0,\n yOffset,\n ['attribute-keys'],\n labelStyles\n );\n maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n const commentBBox = await addText(\n shapeSvg,\n attribute.comment,\n config,\n 0,\n yOffset,\n ['attribute-comment'],\n labelStyles\n );\n maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n\n const rowHeight =\n Math.max(typeBBox.height, nameBBox.height, keysBBox.height, commentBBox.height) +\n TEXT_PADDING;\n rows.push({ yOffset, rowHeight });\n yOffset += rowHeight;\n }\n let totalWidthSections = 4;\n\n if (maxKeysWidth <= PADDING) {\n keysPresent = false;\n maxKeysWidth = 0;\n totalWidthSections--;\n }\n if (maxCommentWidth <= PADDING) {\n commentPresent = false;\n maxCommentWidth = 0;\n totalWidthSections--;\n }\n\n const shapeBBox = shapeSvg.node()!.getBBox();\n // Add extra padding to attribute components to accommodate for difference in width\n if (\n nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) >\n 0\n ) {\n const difference =\n nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n maxTypeWidth += difference / totalWidthSections;\n maxNameWidth += difference / totalWidthSections;\n if (maxKeysWidth > 0) {\n maxKeysWidth += difference / totalWidthSections;\n }\n if (maxCommentWidth > 0) {\n maxCommentWidth += difference / totalWidthSections;\n }\n }\n\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n let totalShapeBBoxHeight = 0;\n if (rows.length > 0) {\n totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0);\n }\n const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0);\n const x = -w / 2;\n const y = -h / 2;\n\n // Translate attribute text labels\n shapeSvg.selectAll('g:not(:first-child)').each((_: any, i: number, nodes: any) => {\n const text = select(nodes[i]);\n const transform = text.attr('transform');\n let translateX = 0;\n let translateY = 0;\n\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n if (text.attr('class').includes('attribute-name')) {\n translateX += maxTypeWidth;\n } else if (text.attr('class').includes('attribute-keys')) {\n translateX += maxTypeWidth + maxNameWidth;\n } else if (text.attr('class').includes('attribute-comment')) {\n translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n }\n }\n }\n\n text.attr(\n 'transform',\n `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n );\n });\n // Center the name\n shapeSvg\n .select('.name')\n .attr('transform', 'translate(' + -nameBBox.width / 2 + ', ' + (y + TEXT_PADDING / 2) + ')');\n\n if (theme != null && COLOR_THEMES.has(theme)) {\n const colorIndex = entityNode.colorIndex ?? 0;\n shapeSvg.attr('data-color-id', `color-${colorIndex % borderColorArray.length}`);\n }\n // Draw shape\n const roughRect = rc.rectangle(x, y, w, h, options);\n const rect = shapeSvg\n .insert(() => roughRect, ':first-child')\n .attr('class', 'outer-path')\n .attr('style', cssStyles!.join(''));\n\n yOffsets.push(0);\n // Draw row rects\n for (const [i, row] of rows.entries()) {\n const contentRowIndex = i + 1; // Adjusted index to skip the header (name) row\n const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0;\n const roughRect = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, {\n ...options,\n fill: isEven ? rowEven : rowOdd,\n stroke: nodeBorder,\n });\n shapeSvg\n .insert(() => roughRect, 'g.label')\n .attr('style', cssStyles!.join(''))\n .attr('class', `row-rect-${isEven ? 'even' : 'odd'}`);\n }\n\n // Draw divider lines\n // Name line\n const thickness = 0.0001;\n\n // 1. Top horizontal line\n let points = lineToPolygon(x, nameBBox.height + y, w + x, nameBBox.height + y, thickness);\n let roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n // First line\n points = lineToPolygon(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n // Second line\n if (keysPresent) {\n const xCoord = maxTypeWidth + maxNameWidth + x;\n points = lineToPolygon(xCoord, nameBBox.height + y, xCoord, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n }\n // Third line\n if (commentPresent) {\n const xCoord = maxTypeWidth + maxNameWidth + maxKeysWidth + x;\n points = lineToPolygon(xCoord, nameBBox.height + y, xCoord, h + y, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n }\n\n // Attribute divider lines\n for (const yOffset of yOffsets) {\n const yCoord = nameBBox.height + y + yOffset;\n points = lineToPolygon(x, yCoord, w + x, yCoord, thickness);\n roughLine = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n shapeSvg.insert(() => roughLine).attr('class', 'divider');\n }\n\n updateNodeBounds(node, rect);\n\n if (nodeStyles && node.look !== 'handDrawn') {\n if (theme != null && REDUX_THEMES.has(theme)) {\n shapeSvg.selectAll('path').attr('style', nodeStyles);\n } else {\n const allStyle = nodeStyles.split(';');\n const strokeStyles = allStyle\n ?.filter((e) => {\n return e.includes('stroke');\n })\n ?.map((s) => `${s}`)\n .join('; ');\n shapeSvg.selectAll('path').attr('style', strokeStyles ?? '');\n shapeSvg.selectAll('.row-rect-even path').attr('style', nodeStyles);\n }\n }\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n return shapeSvg;\n}\n\n// Helper function to add label text g with translate position and style\nasync function addText(\n shapeSvg: D3Selection,\n labelText: string,\n config: MermaidConfig,\n translateX = 0,\n translateY = 0,\n classes: string[] = [],\n style = ''\n) {\n const label = shapeSvg\n .insert('g')\n .attr('class', `label ${classes.join(' ')}`)\n .attr('transform', `translate(${translateX}, ${translateY})`)\n .attr('style', style);\n\n // Return types need to be parsed\n if (labelText !== parseGenericTypes(labelText)) {\n labelText = parseGenericTypes(labelText);\n // Work around\n labelText = labelText.replaceAll('<', '<').replaceAll('>', '>');\n }\n\n const text = label.node()!.appendChild(\n await createText(\n label,\n labelText,\n {\n width: calculateTextWidth(labelText, config) + 100,\n style,\n useHtmlLabels: config.htmlLabels,\n },\n config\n )\n );\n // Undo work around now that text passed through correctly\n if (labelText.includes('<') || labelText.includes('>')) {\n let child: Element | ChildNode = text.children[0];\n child.textContent = child.textContent!.replaceAll('<', '<').replaceAll('>', '>');\n while (child.childNodes[0]) {\n child = child.childNodes[0];\n // Replace its text content\n child.textContent = child.textContent!.replaceAll('<', '<').replaceAll('>', '>');\n }\n }\n\n let bbox = text.getBBox();\n if (evaluate(config.htmlLabels)) {\n const div = text.children[0] as HTMLDivElement;\n div.style.textAlign = 'start';\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n return bbox;\n}\n\nfunction lineToPolygon(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n thickness: number\n): { x: number; y: number }[] {\n if (x1 === x2) {\n // Vertical line\n return [\n { x: x1 - thickness / 2, y: y1 },\n { x: x1 + thickness / 2, y: y1 },\n { x: x2 + thickness / 2, y: y2 },\n { x: x2 - thickness / 2, y: y2 },\n ];\n }\n // Horizontal line (ER dividers are always axis-aligned)\n return [\n { x: x1, y: y1 - thickness / 2 },\n { x: x1, y: y1 + thickness / 2 },\n { x: x2, y: y2 + thickness / 2 },\n { x: x2, y: y2 - thickness / 2 },\n ];\n}\n", "import { select } from 'd3';\nimport { getConfig } from '../../config.js';\nimport { getNodeClasses } from '../../rendering-util/rendering-elements/shapes/util.js';\nimport { calculateTextWidth, decodeEntities } from '../../utils.js';\nimport type { ClassMember, ClassNode } from './classTypes.js';\nimport { sanitizeText } from '../../diagram-api/diagramAPI.js';\nimport { createText } from '../../rendering-util/createText.js';\nimport { evaluate, hasKatex } from '../common/common.js';\nimport type { Node } from '../../rendering-util/types.js';\nimport type { MermaidConfig } from '../../config.type.js';\nimport type { D3Selection } from '../../types.js';\n\n// Creates the shapeSvg and inserts text\nexport async function textHelper(\n parent: D3Selection,\n node: any,\n config: MermaidConfig,\n useHtmlLabels: boolean,\n GAP = config.class!.padding ?? 12\n) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent\n // @ts-ignore: Ignore error for using .insert on SVGAElement\n .insert('g')\n .attr('class', getNodeClasses(node))\n .attr('id', node.domId || node.id);\n\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n\n annotationGroup = shapeSvg.insert('g').attr('class', 'annotation-group text');\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText(annotationGroup, { text: `\u00AB${annotation}\u00BB` } as unknown as ClassMember, 0);\n\n const annotationGroupBBox = annotationGroup.node()!.getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n\n labelGroup = shapeSvg.insert('g').attr('class', 'label-group text');\n await addText(labelGroup, node, 0, ['font-weight: bolder']);\n const labelGroupBBox = labelGroup.node()!.getBBox();\n labelGroupHeight = labelGroupBBox.height;\n\n membersGroup = shapeSvg.insert('g').attr('class', 'members-group text');\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node()!.getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n\n methodsGroup = shapeSvg.insert('g').attr('class', 'methods-group text');\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n\n let bbox = shapeSvg.node()!.getBBox();\n\n // Center annotation\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node()!.getBBox();\n annotationGroup.attr('transform', `translate(${-annotationGroupBBox.width / 2})`);\n }\n\n // Adjust label\n labelGroup.attr('transform', `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n\n bbox = shapeSvg.node()!.getBBox();\n\n membersGroup.attr(\n 'transform',\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node()!.getBBox();\n methodsGroup.attr(\n 'transform',\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n\n bbox = shapeSvg.node()!.getBBox();\n\n return { shapeSvg, bbox };\n}\n\n// Modified version of labelHelper() to help create and place text for classes\nasync function addText(\n parentGroup: D3Selection,\n node: Node | ClassNode | ClassMember,\n yOffset: number,\n styles: string[] = []\n) {\n const textEl = parentGroup.insert('g').attr('class', 'label').attr('style', styles.join('; '));\n const config = getConfig();\n let useHtmlLabels =\n 'useHtmlLabels' in node ? node.useHtmlLabels : (evaluate(config.htmlLabels) ?? true);\n\n let textContent = '';\n // Support regular node type (.label) and classNodes (.text)\n if ('text' in node) {\n textContent = node.text;\n } else {\n textContent = node.label!;\n }\n\n // createText() will cause unwanted behavior because of classDiagram syntax so workarounds are needed\n\n if (!useHtmlLabels && textContent.startsWith('\\\\')) {\n textContent = textContent.substring(1);\n }\n\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n\n const text = await createText(\n textEl,\n sanitizeText(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50, // Add room for error when splitting text into multiple lines\n classes: 'markdown-node-label',\n useHtmlLabels,\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n\n if (!useHtmlLabels) {\n // Undo font-weight normal\n if (styles.includes('font-weight: bolder')) {\n select(text).selectAll('tspan').attr('font-weight', '');\n }\n\n numberOfLines = text.children.length;\n\n const textChild = text.children[0];\n if (text.textContent === '' || text.textContent!.includes('>')) {\n textChild.textContent =\n textContent[0] +\n textContent.substring(1).replaceAll('>', '>').replaceAll('<', '<').trim();\n\n // Text was improperly removed due to spaces (preserve one space if present)\n const preserveSpace = textContent[1] === ' ';\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + ' ' + textChild.textContent.substring(1);\n }\n }\n\n // To support empty boxes\n if (textChild.textContent === 'undefined') {\n textChild.textContent = '';\n }\n\n // Get the bounding box after the text update\n bbox = text.getBBox();\n } else {\n const div = text.children[0];\n const dv = select(text);\n\n numberOfLines = div.innerHTML.split('
    ').length;\n // Katex math support\n if (div.innerHTML.includes('')) {\n numberOfLines += div.innerHTML.split('').length - 1;\n }\n\n // Support images\n const images = div.getElementsByTagName('img');\n if (images) {\n const noImgText = textContent.replace(/]*>/g, '').trim() === '';\n await Promise.all(\n [...images].map(\n (img) =>\n new Promise((res) => {\n function setupImage() {\n img.style.display = 'flex';\n img.style.flexDirection = 'column';\n\n if (noImgText) {\n // default size if no text\n const bodyFontSize =\n config.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + 'px';\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = '100%';\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener('error', setupImage);\n img.addEventListener('load', setupImage);\n })\n )\n );\n }\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center text and offset by yOffset\n textEl.attr('transform', 'translate(0,' + (-bbox.height / (2 * numberOfLines) + yOffset) + ')');\n return bbox.height;\n}\n", "import { updateNodeBounds } from './util.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport { select } from 'd3';\nimport type { Node } from '../../types.js';\nimport type { ClassNode } from '../../../diagrams/class/classTypes.js';\nimport rough from 'roughjs';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport intersect from '../intersect/index.js';\nimport { textHelper } from '../../../diagrams/class/shapeUtil.js';\nimport { evaluate } from '../../../diagrams/common/common.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function classBox(parent: D3Selection, node: Node) {\n const config = getConfig();\n const { themeVariables } = config;\n const { useGradient } = themeVariables;\n const PADDING = config.class!.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n // Treat node as classNode\n const classNode = node as unknown as ClassNode;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n node.cssStyles = classNode.styles || '';\n\n const styles = classNode.styles?.join(';') || nodeStyles || '';\n\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll('!important', '').split(';');\n }\n\n const renderExtraBox =\n classNode.members.length === 0 &&\n classNode.methods.length === 0 &&\n !config.class?.hideEmptyMembersBox;\n\n // Setup roughjs\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n const w = Math.max(node.width ?? 0, bbox.width);\n let h = Math.max(node.height ?? 0, bbox.height);\n const nodeHeightGreater = (node.height ?? 0) > bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n\n const x = -w / 2;\n const y = -h / 2;\n let extraHeight = renderExtraBox\n ? PADDING * 2\n : classNode.members.length === 0 && classNode.methods.length === 0\n ? -PADDING\n : 0;\n if (nodeHeightGreater) {\n extraHeight = PADDING * 2;\n }\n\n // Create and center rectangle\n const roughRect = rc.rectangle(\n x - PADDING,\n y -\n PADDING -\n (renderExtraBox\n ? PADDING\n : classNode.members.length === 0 && classNode.methods.length === 0\n ? -PADDING / 2\n : 0),\n w + 2 * PADDING,\n h + 2 * PADDING + extraHeight,\n options\n );\n\n const rect = shapeSvg.insert(() => roughRect, ':first-child');\n rect.attr('class', 'basic label-container outer-path');\n const rectBBox = rect.node()!.getBBox();\n\n // Rect is centered so now adjust labels.\n const annotationGroupHeight =\n (shapeSvg.select('.annotation-group').node() as SVGGraphicsElement).getBBox().height -\n (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight =\n (shapeSvg.select('.label-group').node() as SVGGraphicsElement).getBBox().height -\n (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight =\n (shapeSvg.select('.members-group').node() as SVGGraphicsElement).getBBox().height -\n (renderExtraBox ? PADDING / 2 : 0) || 0;\n\n // Y value in the middle of the first line and remaining space.\n const methodsAreaPlacement =\n (annotationGroupHeight +\n labelGroupHeight +\n y +\n PADDING -\n (y -\n PADDING -\n (renderExtraBox\n ? PADDING\n : classNode.members.length === 0 && classNode.methods.length === 0\n ? -PADDING / 2\n : 0))) /\n 2;\n // Rect is centered so now adjust labels.\n // TODO: Fix types\n shapeSvg.selectAll('.text').each((_: any, i: number, nodes: any) => {\n const text = select(nodes[i]);\n // Get the current transform attribute\n const transform = text.attr('transform');\n // Initialize variables for the translation values\n let translateY = 0;\n // Check if the transform attribute exists\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n // Add to the y value\n let newTranslateY =\n translateY +\n y +\n PADDING -\n (renderExtraBox\n ? PADDING\n : classNode.members.length === 0 && classNode.methods.length === 0\n ? -PADDING / 2\n : 0);\n if (text.attr('class').includes('methods-group')) {\n const membersGroupHeightForMethods = Math.max(membersGroupHeight, GAP / 2);\n if (nodeHeightGreater) {\n newTranslateY =\n Math.max(\n methodsAreaPlacement,\n annotationGroupHeight +\n labelGroupHeight +\n membersGroupHeightForMethods +\n y +\n GAP * 2 +\n PADDING\n ) +\n GAP * 2;\n } else {\n newTranslateY =\n annotationGroupHeight +\n labelGroupHeight +\n membersGroupHeightForMethods +\n y +\n GAP * 4 +\n PADDING;\n }\n }\n if (\n classNode.members.length === 0 &&\n classNode.methods.length === 0 &&\n config.class?.hideEmptyMembersBox\n ) {\n if (classNode.annotations.length > 0) {\n newTranslateY = translateY - GAP;\n } else {\n newTranslateY = translateY;\n }\n }\n if (!useHtmlLabels) {\n // Fix so non html labels are better centered.\n // BBox of text seems to be slightly different when calculated so we offset\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (\n text.attr('class').includes('label-group') ||\n text.attr('class').includes('annotation-group')\n ) {\n newTranslateX = -text.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll('text').each(function (_: any, i: number, nodes: any) {\n if (window.getComputedStyle(nodes[i]).textAnchor === 'middle') {\n newTranslateX = 0;\n }\n });\n }\n // Set the updated transform attribute\n text.attr('transform', `translate(${newTranslateX}, ${newTranslateY})`);\n });\n\n // Render divider lines.\n // Line y-values are offset by 0.001 so gradient stroke can apply.\n // If y-values are the same then the height of the bounding box is zero and it doesn't work.\n // First line (under label)\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const firstLineY = annotationGroupHeight + labelGroupHeight + y + PADDING;\n const roughLine = rc.line(\n rectBBox.x,\n firstLineY,\n rectBBox.x + rectBBox.width,\n firstLineY + 0.001,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line\n .attr('class', `divider${node.look === 'neo' && !useGradient ? ' neo-line' : ''}`)\n .attr('style', styles);\n }\n\n // Second line (under members)\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const secondLineY =\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING;\n const roughLine = rc.line(\n rectBBox.x,\n nodeHeightGreater ? Math.max(methodsAreaPlacement, secondLineY) : secondLineY,\n rectBBox.x + rectBBox.width,\n (nodeHeightGreater ? Math.max(methodsAreaPlacement, secondLineY) : secondLineY) + 0.001,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line\n .attr('class', `divider${node.look === 'neo' && !useGradient ? ' neo-line' : ''}`)\n .attr('style', styles);\n }\n\n /// Apply styles ///\n if (classNode.look !== 'handDrawn') {\n shapeSvg.selectAll('path').attr('style', styles);\n }\n // Apply other styles like stroke-width and stroke-dasharray to border (not background of shape)\n rect.select(':nth-child(2)').attr('style', styles);\n // Divider lines\n shapeSvg.selectAll('.divider').select('path').attr('style', styles);\n // Text elements\n if (node.labelStyle) {\n shapeSvg.selectAll('span').attr('style', node.labelStyle);\n } else {\n shapeSvg.selectAll('span').attr('style', styles);\n }\n // SVG text uses fill not color\n if (!useHtmlLabels) {\n // We just want to apply color to the text\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace('color', 'fill');\n shapeSvg.selectAll('tspan').attr('style', colorStyle);\n } else if (labelStyles) {\n const match = colorRegex.exec(labelStyles);\n if (match) {\n const colorStyle = match[0].replace('color', 'fill');\n shapeSvg.selectAll('tspan').attr('style', colorStyle);\n }\n }\n }\n\n updateNodeBounds(node, rect);\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { getNodeClasses, updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { calculateTextWidth, decodeEntities } from '../../../utils.js';\nimport { getConfig, sanitizeText } from '../../../diagram-api/diagramAPI.js';\nimport { createText } from '../../createText.js';\nimport { select } from 'd3';\nimport type { Requirement, Element } from '../../../diagrams/requirement/types.js';\n\nexport async function requirementBox(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const requirementNode = node as unknown as Requirement;\n const elementNode = node as unknown as Element;\n const padding = 20;\n const gap = 20;\n const isRequirementNode = 'verifyMethod' in node;\n const classes = getNodeClasses(node);\n const { themeVariables } = getConfig();\n const { borderColorArray, requirementEdgeLabelBackground } = themeVariables;\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId ?? node.id);\n\n let typeHeight;\n if (isRequirementNode) {\n typeHeight = await addText(\n shapeSvg,\n `<<${requirementNode.type}>>`,\n 0,\n node.labelStyle\n );\n } else {\n typeHeight = await addText(shapeSvg, '<<Element>>', 0, node.labelStyle);\n }\n\n let accumulativeHeight = typeHeight;\n const nameHeight = await addText(\n shapeSvg,\n requirementNode.name,\n accumulativeHeight,\n node.labelStyle + '; font-weight: bold;'\n );\n accumulativeHeight += nameHeight + gap;\n\n // Requirement\n if (isRequirementNode) {\n const idHeight = await addText(\n shapeSvg,\n `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n\n accumulativeHeight += idHeight;\n const textHeight = await addText(\n shapeSvg,\n `${requirementNode.text ? `Text: ${requirementNode.text}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += textHeight;\n const riskHeight = await addText(\n shapeSvg,\n `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += riskHeight;\n await addText(\n shapeSvg,\n `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n } else {\n // Element\n const typeHeight = await addText(\n shapeSvg,\n `${elementNode.type ? `Type: ${elementNode.type}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += typeHeight;\n await addText(\n shapeSvg,\n `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : ''}`,\n accumulativeHeight,\n node.labelStyle\n );\n }\n\n const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n // Setup roughjs\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n if (node.look !== 'handDrawn') {\n options.roughness = 0;\n options.fillStyle = 'solid';\n }\n\n // Create and center rectangle\n const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n const rect = shapeSvg.insert(() => roughRect, ':first-child');\n rect.attr('class', 'basic label-container outer-path').attr('style', nodeStyles);\n\n if (borderColorArray?.length) {\n const colorIndex = node.colorIndex ?? 0;\n shapeSvg.attr('data-color-id', `color-${colorIndex % borderColorArray.length}`);\n }\n\n // Re-translate labels now that rect is centered\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n shapeSvg.selectAll('.label').each((_: any, i: number, nodes: any) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const text = select(nodes[i]);\n\n const transform = text.attr('transform');\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n }\n }\n\n const newTranslateY = translateY - totalHeight / 2;\n let newTranslateX = x + padding / 2;\n\n // Keep type and name labels centered.\n if (i === 0 || i === 1) {\n newTranslateX = translateX;\n }\n // Set the updated transform attribute\n text.attr('transform', `translate(${newTranslateX}, ${newTranslateY + padding})`);\n });\n\n // Insert divider line if there is body text\n if (accumulativeHeight > typeHeight + nameHeight + gap) {\n const lineY = y + typeHeight + nameHeight + gap;\n let roughLine: SVGGElement;\n if (node.look === 'neo') {\n const thickness = 0.001;\n const polygonPoints: [number, number][] = [\n [x, lineY],\n [x + totalWidth, lineY],\n [x + totalWidth, lineY + thickness],\n [x, lineY + thickness],\n ];\n roughLine = rc.polygon(polygonPoints, options);\n } else {\n roughLine = rc.line(x, lineY, x + totalWidth, lineY, options);\n }\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr('class', 'divider');\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n if (\n nodeStyles &&\n node.look !== 'handDrawn' &&\n (requirementEdgeLabelBackground || borderColorArray?.length)\n ) {\n shapeSvg.selectAll('path').attr('style', nodeStyles);\n }\n\n return shapeSvg;\n}\n\nasync function addText(\n parentGroup: D3Selection,\n inputText: string,\n yOffset: number,\n style = ''\n) {\n if (inputText === '') {\n return 0;\n }\n const textEl = parentGroup.insert('g').attr('class', 'label').attr('style', style);\n const config = getConfig();\n const useHtmlLabels = config.htmlLabels ?? true;\n\n const text = await createText(\n textEl,\n sanitizeText(decodeEntities(inputText)),\n {\n width: calculateTextWidth(inputText, config) + 50, // Add room for error when splitting text into multiple lines\n classes: 'markdown-node-label',\n useHtmlLabels,\n style,\n },\n config\n );\n let bbox;\n\n if (!useHtmlLabels) {\n const textChild = text.children[0];\n for (const child of textChild.children) {\n if (style) {\n child.setAttribute('style', style);\n }\n }\n // Get the bounding box after the style update\n bbox = text.getBBox();\n // Add extra height so it is similar to the html labels\n bbox.height += 6;\n } else {\n const div = text.children[0];\n const dv = select(text);\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center text and offset by yOffset\n textEl.attr('transform', `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n return bbox.height;\n}\n", "import { labelHelper, insertLabel, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node, KanbanNode, ShapeRenderOptions } from '../../types.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { userNodeOverrides, styles2String } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\n\nconst colorFromPriority = (priority: NonNullable) => {\n switch (priority) {\n case 'Very High':\n return 'red';\n case 'High':\n return 'orange';\n case 'Medium':\n return null; // no stroke\n case 'Low':\n return 'blue';\n case 'Very Low':\n return 'lightblue';\n }\n};\nexport async function kanbanItem(\n parent: D3Selection,\n // Omit the 'shape' prop since otherwise, it causes a TypeScript circular dependency error\n kanbanNode: Omit | Omit,\n { config }: ShapeRenderOptions\n) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || '';\n\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n\n const {\n shapeSvg,\n bbox,\n label: labelElTitle,\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n\n let ticketUrl = '';\n let link;\n\n if ('ticket' in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace('#TICKET#', kanbanNode.ticket);\n link = shapeSvg\n .insert('svg:a', ':first-child')\n .attr('class', 'kanban-ticket-link')\n .attr('xlink:href', ticketUrl)\n .attr('target', '_blank');\n }\n\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || '',\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false,\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n ('ticket' in kanbanNode && kanbanNode.ticket) || '',\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n ('ticket' in kanbanNode && kanbanNode.ticket) || '',\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n ('assigned' in kanbanNode && kanbanNode.assigned) || '',\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight =\n Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n 'transform',\n 'translate(' + (padding - totalWidth / 2) + ', ' + (-heightAdj - bbox.height / 2) + ')'\n );\n labelEl.attr(\n 'transform',\n 'translate(' + (padding - totalWidth / 2) + ', ' + (-heightAdj + bbox.height / 2) + ')'\n );\n labelElAssigned.attr(\n 'transform',\n 'translate(' +\n (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) +\n ', ' +\n (-heightAdj + bbox.height / 2) +\n ')'\n );\n\n let rect;\n\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n\n if (kanbanNode.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(kanbanNode, {});\n\n const roughNode =\n rx || ry\n ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options)\n : rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n rect = shapeSvg.insert(() => roughNode, ':first-child');\n rect.attr('class', 'basic label-container').attr('style', cssStyles ? cssStyles : null);\n } else {\n rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container __APA__')\n .attr('style', nodeStyles)\n .attr('rx', rx ?? 5)\n .attr('ry', ry ?? 5)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n const priority = 'priority' in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append('line');\n const lineX = x + 2;\n\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line\n .attr('x1', lineX)\n .attr('y1', y1)\n .attr('x2', lineX)\n .attr('y2', y2)\n\n .attr('stroke-width', '4')\n .attr('stroke', colorFromPriority(priority));\n }\n }\n\n updateNodeBounds(kanbanNode, rect);\n kanbanNode.height = totalHeight;\n\n kanbanNode.intersect = function (point) {\n return intersect.rect(kanbanNode, point);\n };\n\n return shapeSvg;\n}\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport type { D3Selection } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { Bounds, Point } from '../../../types.js';\n\nexport async function bang(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n\n const w = bbox.width + 10 * halfPadding;\n const h = bbox.height + 8 * halfPadding;\n const r = 0.15 * w;\n const { cssStyles } = node;\n\n const minWidth = bbox.width + 20;\n const minHeight = bbox.height + 20;\n const effectiveWidth = Math.max(w, minWidth);\n const effectiveHeight = Math.max(h, minHeight);\n\n label.attr('transform', `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n\n let bangElem;\n const path = `M0 0 \n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1}\n\n a${r},${r} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n H0 V0 Z`;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n bangElem = shapeSvg.insert(() => roughNode, ':first-child');\n bangElem.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n } else {\n bangElem = shapeSvg\n .insert('path', ':first-child')\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('d', path);\n }\n\n // Translate the path (center the shape)\n bangElem.attr('transform', `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`);\n\n updateNodeBounds(node, bangElem);\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n return intersect.rect(bounds, point);\n };\n node.intersect = function (point) {\n log.info('Bang intersect', node, point);\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import rough from 'roughjs';\nimport { log } from '../../../logger.js';\nimport type { Bounds, D3Selection, Point } from '../../../types.js';\nimport { handleUndefinedAttr } from '../../../utils.js';\nimport type { Node } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, labelHelper, updateNodeBounds } from './util.js';\n\nexport async function cloud(parent: D3Selection, node: Node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n\n const w = bbox.width + 2 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n\n // Cloud radii\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n\n const { cssStyles } = node;\n let cloudElem;\n\n // Cloud path\n const path = `M0 0 \n a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},0\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n H0 V0 Z`;\n\n if (node.look === 'handDrawn') {\n // @ts-expect-error -- Passing a D3.Selection seems to work for some reason\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n cloudElem = shapeSvg.insert(() => roughNode, ':first-child');\n cloudElem.attr('class', 'basic label-container').attr('style', handleUndefinedAttr(cssStyles));\n } else {\n cloudElem = shapeSvg\n .insert('path', ':first-child')\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('d', path);\n }\n\n label.attr('transform', `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n\n // Center the shape\n cloudElem.attr('transform', `translate(${-w / 2}, ${-h / 2})`);\n\n updateNodeBounds(node, cloudElem);\n\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n return intersect.rect(bounds, point);\n };\n node.intersect = function (point) {\n log.info('Cloud intersect', node, point);\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import type { Bounds, D3Selection, Point } from '../../../types.js';\nimport type { Node } from '../../types.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String } from './handDrawnShapeStyles.js';\nimport { getNodeClasses, labelHelper, updateNodeBounds } from './util.js';\n\nexport async function defaultMindmapNode(\n parent: D3Selection,\n node: Node\n) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n\n const w = bbox.width + 8 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const rd = 5;\n\n // Neo look: rounded top corners only, flat bottom edge (tab-like shape).\n const rectPath =\n node.look === 'neo'\n ? `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - rd}\n H${-w / 2}\n Z\n `\n : `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - 2 * rd}\n q0,${rd} ${-rd},${rd}\n h${-(w - 2 * rd)}\n q${-rd},0 ${-rd},${-rd}\n Z\n `;\n\n if (!node.domId) {\n throw new Error(\n `defaultMindmapNode: node \"${node.id}\" is missing a domId \u2014 was render.ts domId prefixing skipped?`\n );\n }\n\n const bg = shapeSvg\n .append('path')\n .attr('id', node.domId)\n .attr('class', 'node-bkg node-' + node.type)\n .attr('style', nodeStyles)\n .attr('d', rectPath);\n\n shapeSvg\n .append('line')\n .attr('class', 'node-line-')\n .attr('x1', -w / 2)\n .attr('y1', h / 2)\n .attr('x2', w / 2)\n .attr('y2', h / 2);\n\n label.attr('transform', `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n shapeSvg.append(() => label.node());\n\n updateNodeBounds(node, bg);\n node.calcIntersect = function (bounds: Bounds, point: Point) {\n return intersect.rect(bounds, point);\n };\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n", "import { circle } from './circle.js';\nimport type { Node, MindmapOptions } from '../../types.js';\nimport type { D3Selection } from '../../../types.js';\n\nexport async function mindmapCircle(\n parent: D3Selection,\n node: Node\n) {\n const options = {\n padding: node.padding ?? 0,\n } as MindmapOptions;\n return circle(parent, node, options);\n}\n", "import type { Entries } from 'type-fest';\nimport type { D3Selection, MaybePromise } from '../../types.js';\nimport type { Node, ShapeRenderOptions } from '../types.js';\nimport { anchor } from './shapes/anchor.js';\nimport { bowTieRect } from './shapes/bowTieRect.js';\nimport { card } from './shapes/card.js';\nimport { choice } from './shapes/choice.js';\nimport { circle } from './shapes/circle.js';\nimport { crossedCircle } from './shapes/crossedCircle.js';\nimport { curlyBraceLeft } from './shapes/curlyBraceLeft.js';\nimport { curlyBraceRight } from './shapes/curlyBraceRight.js';\nimport { curlyBraces } from './shapes/curlyBraces.js';\nimport { curvedTrapezoid } from './shapes/curvedTrapezoid.js';\nimport { cylinder } from './shapes/cylinder.js';\nimport { datastore } from './shapes/datastore.js';\nimport { dividedRectangle } from './shapes/dividedRect.js';\nimport { doublecircle } from './shapes/doubleCircle.js';\nimport { filledCircle } from './shapes/filledCircle.js';\nimport { flippedTriangle } from './shapes/flippedTriangle.js';\nimport { forkJoin } from './shapes/forkJoin.js';\nimport { halfRoundedRectangle } from './shapes/halfRoundedRectangle.js';\nimport { hexagon } from './shapes/hexagon.js';\nimport { hourglass } from './shapes/hourglass.js';\nimport { icon } from './shapes/icon.js';\nimport { iconCircle } from './shapes/iconCircle.js';\nimport { iconRounded } from './shapes/iconRounded.js';\nimport { iconSquare } from './shapes/iconSquare.js';\nimport { imageSquare } from './shapes/imageSquare.js';\nimport { inv_trapezoid } from './shapes/invertedTrapezoid.js';\nimport { labelRect } from './shapes/labelRect.js';\nimport { lean_left } from './shapes/leanLeft.js';\nimport { lean_right } from './shapes/leanRight.js';\nimport { lightningBolt } from './shapes/lightningBolt.js';\nimport { linedCylinder } from './shapes/linedCylinder.js';\nimport { linedWaveEdgedRect } from './shapes/linedWaveEdgedRect.js';\nimport { multiRect } from './shapes/multiRect.js';\nimport { multiWaveEdgedRectangle } from './shapes/multiWaveEdgedRectangle.js';\nimport { note } from './shapes/note.js';\nimport { question } from './shapes/question.js';\nimport { rect_left_inv_arrow } from './shapes/rectLeftInvArrow.js';\nimport { rectWithTitle } from './shapes/rectWithTitle.js';\nimport { roundedRect } from './shapes/roundedRect.js';\nimport { shadedProcess } from './shapes/shadedProcess.js';\nimport { slopedRect } from './shapes/slopedRect.js';\nimport { squareRect } from './shapes/squareRect.js';\nimport { stadium } from './shapes/stadium.js';\nimport { state } from './shapes/state.js';\nimport { stateEnd } from './shapes/stateEnd.js';\nimport { stateStart } from './shapes/stateStart.js';\nimport { subroutine } from './shapes/subroutine.js';\nimport { taggedRect } from './shapes/taggedRect.js';\nimport { taggedWaveEdgedRectangle } from './shapes/taggedWaveEdgedRectangle.js';\nimport { text } from './shapes/text.js';\nimport { tiltedCylinder } from './shapes/tiltedCylinder.js';\nimport { trapezoid } from './shapes/trapezoid.js';\nimport { trapezoidalPentagon } from './shapes/trapezoidalPentagon.js';\nimport { triangle } from './shapes/triangle.js';\nimport { waveEdgedRectangle } from './shapes/waveEdgedRectangle.js';\nimport { waveRectangle } from './shapes/waveRectangle.js';\nimport { windowPane } from './shapes/windowPane.js';\nimport { erBox } from './shapes/erBox.js';\nimport { classBox } from './shapes/classBox.js';\nimport { requirementBox } from './shapes/requirementBox.js';\nimport { kanbanItem } from './shapes/kanbanItem.js';\nimport { bang } from './shapes/bang.js';\nimport { cloud } from './shapes/cloud.js';\nimport { defaultMindmapNode } from './shapes/defaultMindmapNode.js';\nimport { mindmapCircle } from './shapes/mindmapCircle.js';\n\ntype ShapeHandler = (\n parent: D3Selection,\n node: Node,\n options: ShapeRenderOptions\n) => MaybePromise>;\n\nexport interface ShapeDefinition {\n semanticName: string;\n name: string;\n shortName: string;\n description: string;\n /**\n * Aliases can include descriptive names, other short names, etc.\n */\n aliases?: string[];\n /**\n * These are names used by mermaid before the introduction of new shapes. These will not be in standard formats, and shouldn't be used by the users\n */\n internalAliases?: string[];\n handler: ShapeHandler;\n}\n\nexport const shapesDefs = [\n {\n semanticName: 'Process',\n name: 'Rectangle',\n shortName: 'rect',\n description: 'Standard process shape',\n aliases: ['proc', 'process', 'rectangle'],\n internalAliases: ['squareRect'],\n handler: squareRect,\n },\n {\n semanticName: 'Event',\n name: 'Rounded Rectangle',\n shortName: 'rounded',\n description: 'Represents an event',\n aliases: ['event'],\n internalAliases: ['roundedRect'],\n handler: roundedRect,\n },\n {\n semanticName: 'Terminal Point',\n name: 'Stadium',\n shortName: 'stadium',\n description: 'Terminal point',\n aliases: ['terminal', 'pill'],\n handler: stadium,\n },\n {\n semanticName: 'Subprocess',\n name: 'Framed Rectangle',\n shortName: 'fr-rect',\n description: 'Subprocess',\n aliases: ['subprocess', 'subproc', 'framed-rectangle', 'subroutine'],\n handler: subroutine,\n },\n {\n semanticName: 'Database',\n name: 'Cylinder',\n shortName: 'cyl',\n description: 'Database storage',\n aliases: ['db', 'database', 'cylinder'],\n handler: cylinder,\n },\n {\n semanticName: 'Data Store',\n name: 'Data Store',\n shortName: 'datastore',\n description: 'Data flow diagram data store',\n aliases: ['data-store'],\n handler: datastore,\n },\n {\n semanticName: 'Start',\n name: 'Circle',\n shortName: 'circle',\n description: 'Starting point',\n aliases: ['circ'],\n handler: circle,\n },\n {\n semanticName: 'Bang',\n name: 'Bang',\n shortName: 'bang',\n description: 'Bang',\n aliases: ['bang'],\n handler: bang,\n },\n {\n semanticName: 'Cloud',\n name: 'Cloud',\n shortName: 'cloud',\n description: 'cloud',\n aliases: ['cloud'],\n handler: cloud,\n },\n {\n semanticName: 'Decision',\n name: 'Diamond',\n shortName: 'diam',\n description: 'Decision-making step',\n aliases: ['decision', 'diamond', 'question'],\n handler: question,\n },\n {\n semanticName: 'Prepare Conditional',\n name: 'Hexagon',\n shortName: 'hex',\n description: 'Preparation or condition step',\n aliases: ['hexagon', 'prepare'],\n handler: hexagon,\n },\n {\n semanticName: 'Data Input/Output',\n name: 'Lean Right',\n shortName: 'lean-r',\n description: 'Represents input or output',\n aliases: ['lean-right', 'in-out'],\n internalAliases: ['lean_right'],\n handler: lean_right,\n },\n {\n semanticName: 'Data Input/Output',\n name: 'Lean Left',\n shortName: 'lean-l',\n description: 'Represents output or input',\n aliases: ['lean-left', 'out-in'],\n internalAliases: ['lean_left'],\n handler: lean_left,\n },\n {\n semanticName: 'Priority Action',\n name: 'Trapezoid Base Bottom',\n shortName: 'trap-b',\n description: 'Priority action',\n aliases: ['priority', 'trapezoid-bottom', 'trapezoid'],\n handler: trapezoid,\n },\n {\n semanticName: 'Manual Operation',\n name: 'Trapezoid Base Top',\n shortName: 'trap-t',\n description: 'Represents a manual task',\n aliases: ['manual', 'trapezoid-top', 'inv-trapezoid'],\n internalAliases: ['inv_trapezoid'],\n handler: inv_trapezoid,\n },\n {\n semanticName: 'Stop',\n name: 'Double Circle',\n shortName: 'dbl-circ',\n description: 'Represents a stop point',\n aliases: ['double-circle'],\n internalAliases: ['doublecircle'],\n handler: doublecircle,\n },\n {\n semanticName: 'Text Block',\n name: 'Text Block',\n shortName: 'text',\n description: 'Text block',\n handler: text,\n },\n {\n semanticName: 'Card',\n name: 'Notched Rectangle',\n shortName: 'notch-rect',\n description: 'Represents a card',\n aliases: ['card', 'notched-rectangle'],\n handler: card,\n },\n {\n semanticName: 'Lined/Shaded Process',\n name: 'Lined Rectangle',\n shortName: 'lin-rect',\n description: 'Lined process shape',\n aliases: ['lined-rectangle', 'lined-process', 'lin-proc', 'shaded-process'],\n handler: shadedProcess,\n },\n {\n semanticName: 'Start',\n name: 'Small Circle',\n shortName: 'sm-circ',\n description: 'Small starting point',\n aliases: ['start', 'small-circle'],\n internalAliases: ['stateStart'],\n handler: stateStart,\n },\n {\n semanticName: 'Stop',\n name: 'Framed Circle',\n shortName: 'fr-circ',\n description: 'Stop point',\n aliases: ['stop', 'framed-circle'],\n internalAliases: ['stateEnd'],\n handler: stateEnd,\n },\n {\n semanticName: 'Fork/Join',\n name: 'Filled Rectangle',\n shortName: 'fork',\n description: 'Fork or join in process flow',\n aliases: ['join'],\n internalAliases: ['forkJoin'],\n handler: forkJoin,\n },\n {\n semanticName: 'Collate',\n name: 'Hourglass',\n shortName: 'hourglass',\n description: 'Represents a collate operation',\n aliases: ['hourglass', 'collate'],\n handler: hourglass,\n },\n {\n semanticName: 'Comment',\n name: 'Curly Brace',\n shortName: 'brace',\n description: 'Adds a comment',\n aliases: ['comment', 'brace-l'],\n handler: curlyBraceLeft,\n },\n {\n semanticName: 'Comment Right',\n name: 'Curly Brace',\n shortName: 'brace-r',\n description: 'Adds a comment',\n handler: curlyBraceRight,\n },\n {\n semanticName: 'Comment with braces on both sides',\n name: 'Curly Braces',\n shortName: 'braces',\n description: 'Adds a comment',\n handler: curlyBraces,\n },\n {\n semanticName: 'Com Link',\n name: 'Lightning Bolt',\n shortName: 'bolt',\n description: 'Communication link',\n aliases: ['com-link', 'lightning-bolt'],\n handler: lightningBolt,\n },\n {\n semanticName: 'Document',\n name: 'Document',\n shortName: 'doc',\n description: 'Represents a document',\n aliases: ['doc', 'document'],\n handler: waveEdgedRectangle,\n },\n {\n semanticName: 'Delay',\n name: 'Half-Rounded Rectangle',\n shortName: 'delay',\n description: 'Represents a delay',\n aliases: ['half-rounded-rectangle'],\n handler: halfRoundedRectangle,\n },\n {\n semanticName: 'Direct Access Storage',\n name: 'Horizontal Cylinder',\n shortName: 'h-cyl',\n description: 'Direct access storage',\n aliases: ['das', 'horizontal-cylinder'],\n handler: tiltedCylinder,\n },\n {\n semanticName: 'Disk Storage',\n name: 'Lined Cylinder',\n shortName: 'lin-cyl',\n description: 'Disk storage',\n aliases: ['disk', 'lined-cylinder'],\n handler: linedCylinder,\n },\n {\n semanticName: 'Display',\n name: 'Curved Trapezoid',\n shortName: 'curv-trap',\n description: 'Represents a display',\n aliases: ['curved-trapezoid', 'display'],\n handler: curvedTrapezoid,\n },\n {\n semanticName: 'Divided Process',\n name: 'Divided Rectangle',\n shortName: 'div-rect',\n description: 'Divided process shape',\n aliases: ['div-proc', 'divided-rectangle', 'divided-process'],\n handler: dividedRectangle,\n },\n {\n semanticName: 'Extract',\n name: 'Triangle',\n shortName: 'tri',\n description: 'Extraction process',\n aliases: ['extract', 'triangle'],\n handler: triangle,\n },\n {\n semanticName: 'Internal Storage',\n name: 'Window Pane',\n shortName: 'win-pane',\n description: 'Internal storage',\n aliases: ['internal-storage', 'window-pane'],\n handler: windowPane,\n },\n {\n semanticName: 'Junction',\n name: 'Filled Circle',\n shortName: 'f-circ',\n description: 'Junction point',\n aliases: ['junction', 'filled-circle'],\n handler: filledCircle,\n },\n {\n semanticName: 'Loop Limit',\n name: 'Trapezoidal Pentagon',\n shortName: 'notch-pent',\n description: 'Loop limit step',\n aliases: ['loop-limit', 'notched-pentagon'],\n handler: trapezoidalPentagon,\n },\n {\n semanticName: 'Manual File',\n name: 'Flipped Triangle',\n shortName: 'flip-tri',\n description: 'Manual file operation',\n aliases: ['manual-file', 'flipped-triangle'],\n handler: flippedTriangle,\n },\n {\n semanticName: 'Manual Input',\n name: 'Sloped Rectangle',\n shortName: 'sl-rect',\n description: 'Manual input step',\n aliases: ['manual-input', 'sloped-rectangle'],\n handler: slopedRect,\n },\n {\n semanticName: 'Multi-Document',\n name: 'Stacked Document',\n shortName: 'docs',\n description: 'Multiple documents',\n aliases: ['documents', 'st-doc', 'stacked-document'],\n handler: multiWaveEdgedRectangle,\n },\n {\n semanticName: 'Multi-Process',\n name: 'Stacked Rectangle',\n shortName: 'st-rect',\n description: 'Multiple processes',\n aliases: ['procs', 'processes', 'stacked-rectangle'],\n handler: multiRect,\n },\n {\n semanticName: 'Stored Data',\n name: 'Bow Tie Rectangle',\n shortName: 'bow-rect',\n description: 'Stored data',\n aliases: ['stored-data', 'bow-tie-rectangle'],\n handler: bowTieRect,\n },\n {\n semanticName: 'Summary',\n name: 'Crossed Circle',\n shortName: 'cross-circ',\n description: 'Summary',\n aliases: ['summary', 'crossed-circle'],\n handler: crossedCircle,\n },\n {\n semanticName: 'Tagged Document',\n name: 'Tagged Document',\n shortName: 'tag-doc',\n description: 'Tagged document',\n aliases: ['tag-doc', 'tagged-document'],\n handler: taggedWaveEdgedRectangle,\n },\n {\n semanticName: 'Tagged Process',\n name: 'Tagged Rectangle',\n shortName: 'tag-rect',\n description: 'Tagged process',\n aliases: ['tagged-rectangle', 'tag-proc', 'tagged-process'],\n handler: taggedRect,\n },\n {\n semanticName: 'Paper Tape',\n name: 'Flag',\n shortName: 'flag',\n description: 'Paper tape',\n aliases: ['paper-tape'],\n handler: waveRectangle,\n },\n {\n semanticName: 'Odd',\n name: 'Odd',\n shortName: 'odd',\n description: 'Odd shape',\n internalAliases: ['rect_left_inv_arrow'],\n handler: rect_left_inv_arrow,\n },\n {\n semanticName: 'Lined Document',\n name: 'Lined Document',\n shortName: 'lin-doc',\n description: 'Lined document',\n aliases: ['lined-document'],\n handler: linedWaveEdgedRect,\n },\n] as const satisfies ShapeDefinition[];\n\nconst generateShapeMap = () => {\n // These are the shapes that didn't have documentation present\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n\n // Rectangles\n rectWithTitle,\n labelRect,\n\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n\n // Kanban diagram\n kanbanItem,\n\n //Mindmap diagram\n mindmapCircle,\n defaultMindmapNode,\n // class diagram\n classBox,\n\n // er diagram\n erBox,\n\n // Requirement diagram\n requirementBox,\n } as const;\n\n const entries = [\n ...(Object.entries(undocumentedShapes) as Entries),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...('aliases' in shape ? shape.aliases : []),\n ...('internalAliases' in shape ? shape.internalAliases : []),\n ];\n return aliases.map((alias) => [alias, shape.handler] as const);\n }),\n ];\n return Object.fromEntries(entries) as Record<\n (typeof entries)[number][0],\n (typeof entries)[number][1]\n > satisfies Record;\n};\n\nexport const shapes = generateShapeMap();\n\nexport function isValidShape(shape: string): shape is ShapeID {\n return shape in shapes;\n}\n\nexport type ShapeID = keyof typeof shapes;\n", "import { log } from '../../logger.js';\nimport { shapes } from './shapes.js';\nimport type { Node, NonClusterNode, ShapeRenderOptions } from '../types.js';\nimport type { SVGGroup } from '../../mermaid.js';\nimport type { D3Selection } from '../../types.js';\nimport { handleUndefinedAttr } from '../../utils.js';\nimport type { graphlib } from 'dagre-d3-es';\n\ntype ShapeHandler = (typeof shapes)[keyof typeof shapes];\ntype NodeElement = D3Selection | Awaited>;\n\nconst nodeElems = new Map();\n\nexport async function insertNode(\n elem: SVGGroup,\n node: NonClusterNode,\n renderOptions: ShapeRenderOptions\n) {\n let newEl: NodeElement | undefined;\n let el;\n\n //special check for rect shape (with or without rounded corners)\n if (node.shape === 'rect') {\n if (node.rx && node.ry) {\n node.shape = 'roundedRect';\n } else {\n node.shape = 'squareRect';\n }\n }\n\n const shapeHandler = node.shape ? shapes[node.shape] : undefined;\n\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n\n if (node.link) {\n // Add link when appropriate\n let target;\n if (renderOptions.config.securityLevel === 'sandbox') {\n target = '_top';\n } else if (node.linkTarget) {\n target = node.linkTarget || '_blank';\n }\n newEl = elem\n .insert('svg:a')\n .attr('xlink:href', node.link)\n .attr('target', target ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n // Add data attributes for neo look support\n newEl.attr('data-look', handleUndefinedAttr(node.look));\n\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n\n nodeElems.set(node.id, newEl);\n\n if (node.haveCallback) {\n newEl.attr('class', newEl.attr('class') + ' clickable');\n }\n return newEl;\n}\n\nexport const setNodeElem = (elem: NodeElement, node: Pick) => {\n nodeElems.set(node.id, elem);\n};\n\nexport const clear = () => {\n nodeElems.clear();\n};\n\nexport const positionNode = (node: ReturnType) => {\n const el = nodeElems.get(node.id)!;\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n"], + "mappings": "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SC,EACX,EACA,CACE,aAAc,WACd,KAAM,iBACN,UAAW,OACX,YAAa,qBACb,QAAS,CAAC,WAAY,gBAAgB,EACtC,QAASC,EACX,EACA,CACE,aAAc,WACd,KAAM,WACN,UAAW,MACX,YAAa,wBACb,QAAS,CAAC,MAAO,UAAU,EAC3B,QAASC,EACX,EACA,CACE,aAAc,QACd,KAAM,yBACN,UAAW,QACX,YAAa,qBACb,QAAS,CAAC,wBAAwB,EAClC,QAASC,EACX,EACA,CACE,aAAc,wBACd,KAAM,sBACN,UAAW,QACX,YAAa,wBACb,QAAS,CAAC,MAAO,qBAAqB,EACtC,QAASC,EACX,EACA,CACE,aAAc,eACd,KAAM,iBACN,UAAW,UACX,YAAa,eACb,QAAS,CAAC,OAAQ,gBAAgB,EAClC,QAASC,EACX,EACA,CACE,aAAc,UACd,KAAM,mBACN,UAAW,YACX,YAAa,uBACb,QAAS,CAAC,mBAAoB,SAAS,EACvC,QAASC,EACX,EACA,CACE,aAAc,kBACd,KAAM,oBACN,UAAW,WACX,YAAa,wBACb,QAAS,CAAC,WAAY,oBAAqB,iBAAiB,EAC5D,QAASC,EACX,EACA,CACE,aAAc,UACd,KAAM,WACN,UAAW,MACX,YAAa,qBACb,QAAS,CAAC,UAAW,UAAU,EAC/B,QAASC,EACX,EACA,CACE,aAAc,mBACd,KAAM,cACN,UAAW,WACX,YAAa,mBACb,QAAS,CAAC,mBAAoB,aAAa,EAC3C,QAASC,EACX,EACA,CACE,aAAc,WACd,KAAM,gBACN,UAAW,SACX,YAAa,iBACb,QAAS,CAAC,WAAY,eAAe,EACrC,QAASC,EACX,EACA,CACE,aAAc,aACd,KAAM,uBACN,UAAW,aACX,YAAa,kBACb,QAAS,CAAC,aAAc,kBAAkB,EAC1C,QAASC,EACX,EACA,CACE,aAAc,cACd,KAAM,mBACN,UAAW,WACX,YAAa,wBACb,QAAS,CAAC,cAAe,kBAAkB,EAC3C,QAASC,EACX,EACA,CACE,aAAc,eACd,KAAM,mBACN,UAAW,UACX,YAAa,oBACb,QAAS,CAAC,eAAgB,kBAAkB,EAC5C,QAASC,EACX,EACA,CACE,aAAc,iBACd,KAAM,mBACN,UAAW,OACX,YAAa,qBACb,QAAS,CAAC,YAAa,SAAU,kBAAkB,EACnD,QAASC,EACX,EACA,CACE,aAAc,gBACd,KAAM,oBACN,UAAW,UACX,YAAa,qBACb,QAAS,CAAC,QAAS,YAAa,mBAAmB,EACnD,QAASC,EACX,EACA,CACE,aAAc,cACd,KAAM,oBACN,UAAW,WACX,YAAa,cACb,QAAS,CAAC,cAAe,mBAAmB,EAC5C,QAASC,EACX,EACA,CACE,aAAc,UACd,KAAM,iBACN,UAAW,aACX,YAAa,UACb,QAAS,CAAC,UAAW,gBAAgB,EACrC,QAASC,EACX,EACA,CACE,aAAc,kBACd,KAAM,kBACN,UAAW,UACX,YAAa,kBACb,QAAS,CAAC,UAAW,iBAAiB,EACtC,QAASC,EACX,EACA,CACE,aAAc,iBACd,KAAM,mBACN,UAAW,WACX,YAAa,iBACb,QAAS,CAAC,mBAAoB,WAAY,gBAAgB,EAC1D,QAASC,EACX,EACA,CACE,aAAc,aACd,KAAM,OACN,UAAW,OACX,YAAa,aACb,QAAS,CAAC,YAAY,EACtB,QAASC,EACX,EACA,CACE,aAAc,MACd,KAAM,MACN,UAAW,MACX,YAAa,YACb,gBAAiB,CAAC,qBAAqB,EACvC,QAASC,EACX,EACA,CACE,aAAc,iBACd,KAAM,iBACN,UAAW,UACX,YAAa,iBACb,QAAS,CAAC,gBAAgB,EAC1B,QAASC,EACX,CACF,EAEMC,GAAmBC,EAAA,IAAM,CAoC7B,IAAMC,EAAU,CACd,GAAI,OAAO,QAnCc,CAEzB,MAAAC,GACA,OAAAC,GACA,KAAAC,GAGA,cAAAC,GACA,UAAAC,GAGA,WAAAC,GACA,WAAAC,GACA,KAAAC,GACA,YAAAC,GACA,YAAAC,GACA,OAAAC,GAGA,WAAAC,GAGA,cAAAC,GACA,mBAAAC,GAEA,SAAAC,GAGA,MAAAC,GAGA,eAAAC,EACF,CAGuC,EACrC,GAAGpE,GAAW,QAASqE,GACL,CACdA,EAAM,UACN,GAAI,YAAaA,EAAQA,EAAM,QAAU,CAAC,EAC1C,GAAI,oBAAqBA,EAAQA,EAAM,gBAAkB,CAAC,CAC5D,EACe,IAAKC,GAAU,CAACA,EAAOD,EAAM,OAAO,CAAU,CAC9D,CACH,EACA,OAAO,OAAO,YAAYlB,CAAO,CAInC,EAnDyB,oBAqDZoB,GAAStB,GAAiB,EAEhC,SAASuB,GAAaH,EAAiC,CAC5D,OAAOA,KAASE,EAClB,CAFgBrB,EAAAsB,GAAA,gBChhBhB,IAAMC,GAAY,IAAI,IAEtB,eAAsBC,GACpBC,EACAC,EACAC,EACA,CACA,IAAIC,EACAC,EAGAH,EAAK,QAAU,SACbA,EAAK,IAAMA,EAAK,GAClBA,EAAK,MAAQ,cAEbA,EAAK,MAAQ,cAIjB,IAAMI,EAAeJ,EAAK,MAAQK,GAAOL,EAAK,KAAK,EAAI,OAEvD,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,kBAAkBJ,EAAK,KAAK,6BAA6B,EAG3E,GAAIA,EAAK,KAAM,CAEb,IAAIM,EACAL,EAAc,OAAO,gBAAkB,UACzCK,EAAS,OACAN,EAAK,aACdM,EAASN,EAAK,YAAc,UAE9BE,EAAQH,EACL,OAAoB,OAAO,EAC3B,KAAK,aAAcC,EAAK,IAAI,EAC5B,KAAK,SAAUM,GAAU,IAAI,EAChCH,EAAK,MAAMC,EAAaF,EAAOF,EAAMC,CAAa,CACpD,MACEE,EAAK,MAAMC,EAAaL,EAAMC,EAAMC,CAAa,EACjDC,EAAQC,EAGV,OAAAD,EAAM,KAAK,YAAaK,EAAoBP,EAAK,IAAI,CAAC,EAElDA,EAAK,SACPG,EAAG,KAAK,QAASH,EAAK,OAAO,EAG/BH,GAAU,IAAIG,EAAK,GAAIE,CAAK,EAExBF,EAAK,cACPE,EAAM,KAAK,QAASA,EAAM,KAAK,OAAO,EAAI,YAAY,EAEjDA,CACT,CArDsBM,EAAAV,GAAA,cAuDf,IAAMW,GAAcD,EAAA,CAACT,EAAmBC,IAA2B,CACxEH,GAAU,IAAIG,EAAK,GAAID,CAAI,CAC7B,EAF2B,eAIdW,GAAQF,EAAA,IAAM,CACzBX,GAAU,MAAM,CAClB,EAFqB,SAIRc,GAAeH,EAACR,GAA6C,CACxE,IAAMG,EAAKN,GAAU,IAAIG,EAAK,EAAE,EAChCY,EAAI,MACF,oBACAZ,EAAK,KACLA,EACA,cAAgBA,EAAK,EAAIA,EAAK,MAAQ,EAAI,GAAK,KAAOA,EAAK,MAAQ,EAAI,GACzE,EACA,IAAMa,EAAU,EACVC,EAAOd,EAAK,MAAQ,EAC1B,OAAIA,EAAK,YACPG,EAAG,KACD,YACA,cACGH,EAAK,EAAIc,EAAOd,EAAK,MAAQ,GAC9B,MACCA,EAAK,EAAIA,EAAK,OAAS,EAAIa,GAC5B,GACJ,EAEAV,EAAG,KAAK,YAAa,aAAeH,EAAK,EAAI,KAAOA,EAAK,EAAI,GAAG,EAE3Dc,CACT,EAvB4B", + "names": ["labelHelper", "__name", "parent", "node", "_classes", "cssClasses", "useHtmlLabels", "evaluate", "getConfig", "shapeSvg", "labelEl", "handleUndefinedAttr", "label", "addBackground", "isMarkdown", "text", "createText", "sanitizeText", "decodeEntities", "bbox", "halfPadding", "div", "dv", "select_default", "configureLabelImages", "insertLabel", "options", "getEffectiveHtmlLabels", "updateNodeBounds", "element", "getNodeClasses", "__name", "node", "extra", "createPathFromPoints", "points", "pointStrings", "p", "i", "generateFullSineWavePoints", "x1", "y1", "x2", "y2", "amplitude", "numCycles", "deltaX", "deltaY", "cycleLength", "frequency", "midY", "t", "x", "y", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "startAngleRad", "angleStep", "angle", "mergePaths", "roughElement", "paths", "mergedPath", "combinedPathData", "path", "d", "fillPath", "strokePath", "getAttr", "element", "attr", "fillAttrs", "value", "strokeAttrs", "group", "intersectRect", "__name", "node", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "createLabel", "__name", "element", "_vertexText", "style", "isTitle", "isNode", "vertexText", "config", "getConfig", "useHtmlLabels", "getEffectiveHtmlLabels", "createText", "createLabel_default", "createRoundedRectPathD", "__name", "x", "y", "totalWidth", "totalHeight", "radius", "rect", "__name", "parent", "node", "log", "siteConfig", "getConfig", "themeVariables", "handDrawnSeed", "clusterBkg", "clusterBorder", "labelStyles", "nodeStyles", "borderStyles", "backgroundStyles", "styles2String", "shapeSvg", "useHtmlLabels", "getEffectiveHtmlLabels", "labelEl", "text", "createText", "createLabel_default", "bbox", "div", "dv", "select_default", "width", "height", "x", "y", "rc", "at", "options", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "subGraphTitleTopMargin", "getSubGraphTitleMargins", "span", "rectBox", "point", "intersect_rect_default", "noteGroup", "padding", "halfPadding", "roundedWithTitle", "altBackground", "compositeBackground", "compositeTitleBackground", "nodeBorder", "outerRectG", "label", "innerRect", "innerHeight", "innerY", "isAlt", "roughOuterNode", "roughInnerNode", "kanbanSection", "divider", "outerRectClass", "squareRect", "shapes", "clusterElems", "insertCluster", "elem", "shape", "cluster", "clear", "__name", "clusterElems", "intersectNode", "node", "point", "__name", "intersect_node_default", "intersectEllipse", "node", "rx", "ry", "point", "cx", "cy", "px", "py", "det", "dx", "dy", "__name", "intersect_ellipse_default", "intersectCircle", "node", "rx", "point", "intersect_ellipse_default", "__name", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "b1", "c1", "r3", "r4", "epsilon", "sameSign", "a2", "b2", "c2", "r1", "r2", "denom", "offset", "num", "x", "y", "__name", "intersect_line_default", "intersectPolygon", "node", "polyPoints", "point", "x1", "y1", "intersections", "minX", "minY", "entry", "left", "top", "i", "p1", "p2", "intersect", "intersect_line_default", "p", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "__name", "intersect_polygon_default", "intersect_default", "intersect_node_default", "intersect_circle_default", "intersect_ellipse_default", "intersect_polygon_default", "intersect_rect_default", "anchor", "parent", "node", "labelStyles", "styles2String", "classes", "getNodeClasses", "cssClasses", "shapeSvg", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "roughNode", "circleElem", "handleUndefinedAttr", "updateNodeBounds", "point", "log", "intersect_default", "__name", "generateArcPoints", "x1", "y1", "x2", "y2", "rx", "ry", "clockwise", "midX", "midY", "angle", "dx", "dy", "transformedX", "transformedY", "distance", "scaledCenterDistance", "centerX", "centerY", "startAngle", "angleRange", "points", "i", "t", "x", "y", "__name", "calculateArcSagitta", "chord", "radiusX", "radiusY", "semiMajorAxis", "semiMinorAxis", "a", "b", "bowTieRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "calcTotalHeight", "labelHeight", "calcEllipseRadius", "totalHeight", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "sagitta", "w", "h", "cssStyles", "rc", "at", "options", "userNodeOverrides", "bowTieRectPath", "createPathFromPoints", "bowTieRectShapePath", "bowTieRectShape", "updateNodeBounds", "point", "intersect_default", "insertPolygonShape", "parent", "w", "h", "points", "d", "__name", "NOTCH_SIZE", "card", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "left", "right", "top", "bottom", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "choice", "parent", "node", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "cssStyles", "s", "points", "rc", "at", "options", "userNodeOverrides", "choicePath", "createPathFromPoints", "roughNode", "choiceShape", "point", "intersect_default", "__name", "circle", "parent", "node", "options", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "labelHelper", "getNodeClasses", "labelPadding", "padding", "radius", "circleElem", "cssStyles", "rc", "at", "userNodeOverrides", "roughNode", "handleUndefinedAttr", "updateNodeBounds", "bounds", "point", "intersect_default", "log", "__name", "createLine", "r", "xAxis45", "yAxis45", "lineLength", "pointQ1", "pointQ2", "pointQ3", "pointQ4", "__name", "crossedCircle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "circleNode", "linePath", "lineNode", "updateNodeBounds", "point", "log", "intersect_default", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "points", "startAngleRad", "angleStep", "i", "angle", "x", "y", "__name", "curlyBraceLeft", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "paddingX", "paddingY", "w", "h", "cssStyles", "rectPoints", "rc", "at", "options", "userNodeOverrides", "newCurlyBracePath", "createPathFromPoints", "curlyBraceLeftNode", "rectPath", "rectShape", "curlyBraceLeftShape", "updateNodeBounds", "point", "intersect_default", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "points", "startAngleRad", "angleStep", "i", "angle", "x", "y", "__name", "curlyBraceRight", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "labelPaddingX", "labelPaddingY", "w", "h", "cssStyles", "rectPoints", "rc", "at", "options", "userNodeOverrides", "newCurlyBracePath", "createPathFromPoints", "curlyBraceRightNode", "rectPath", "rectShape", "curlyBraceRightShape", "updateNodeBounds", "point", "intersect_default", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "points", "startAngleRad", "angleStep", "i", "angle", "x", "y", "__name", "curlyBraces", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "labelPaddingX", "labelPaddingY", "w", "h", "cssStyles", "leftCurlyBracePoints", "rightCurlyBracePoints", "rectPoints", "rc", "at", "options", "userNodeOverrides", "newLeftCurlyBracePath", "createPathFromPoints", "leftCurlyBraceNode", "newRightCurlyBracePath", "rightCurlyBraceNode", "rectPath", "rectShape", "curlyBracesShape", "updateNodeBounds", "point", "intersect_default", "curvedTrapezoid", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "minWidth", "minHeight", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "totalWidth", "totalHeight", "rw", "tw", "points", "generateCirclePoints", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "createCylinderPathD", "__name", "x", "y", "width", "height", "rx", "ry", "createOuterCylinderPathD", "createInnerCylinderPathD", "MIN_HEIGHT", "MIN_WIDTH", "cylinder", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "originalWidth", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rc", "at", "outerPathData", "innerPathData", "options", "userNodeOverrides", "outerNode", "innerLine", "pathData", "handleUndefinedAttr", "updateNodeBounds", "point", "pos", "intersect_default", "drawRect", "parent", "node", "options", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "x", "y", "rect", "rx", "ry", "cssStyles", "rc", "at", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "handleUndefinedAttr", "updateNodeBounds", "bounds", "point", "intersect_default", "__name", "datastore", "parent", "node", "cssClasses", "labelPaddingX", "labelPaddingY", "padding", "width", "height", "rectOptions", "rect", "drawRect", "rc", "at", "nodeOverrideOptions", "userNodeOverrides", "borderSelection", "borderPath", "bbox", "selection", "datastoreWidth", "datastoreHeight", "__name", "dividedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "paddingX", "paddingY", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "rectOffset", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pts", "poly", "p", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "doublecircle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "gap", "padding", "labelPadding", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "outerRadius", "innerRadius", "circleGroup", "cssStyles", "rc", "at", "outerOptions", "userNodeOverrides", "innerOptions", "outerRoughNode", "innerRoughNode", "handleUndefinedAttr", "outerCircle", "innerCircle", "updateNodeBounds", "point", "log", "intersect_default", "__name", "filledCircle", "parent", "node", "themeVariables", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "radius", "cssStyles", "rc", "at", "nodeBorder", "options", "userNodeOverrides", "circleNode", "updateNodeBounds", "point", "log", "intersect_default", "__name", "MIN_HEIGHT", "MIN_WIDTH", "flippedTriangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "tw", "points", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "updateNodeBounds", "point", "log", "intersect_default", "__name", "forkJoin", "parent", "node", "dir", "state", "themeVariables", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "cssStyles", "width", "height", "x", "y", "rc", "at", "options", "userNodeOverrides", "roughNode", "shape", "updateNodeBounds", "padding", "point", "intersect_default", "__name", "halfRoundedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "minWidth", "minHeight", "paddingX", "paddingY", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateCirclePoints", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "log", "intersect_default", "__name", "createHexagonPathD", "__name", "x", "y", "width", "height", "m", "hexagon", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "f", "nodePadding", "wa", "ha", "labelPaddingX", "labelPaddingY", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "h", "w", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "hourglass", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "log", "intersect_default", "__name", "icon", "parent", "node", "themeVariables", "flowchart", "labelStyles", "styles2String", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "shapeSvg", "bbox", "label", "labelHelper", "topLabel", "height", "width", "nodeBorder", "stylesMap", "compileStyles", "x", "y", "labelPadding", "rc", "at", "options", "userNodeOverrides", "iconNode", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "updateNodeBounds", "point", "log", "intersect_default", "dx", "dy", "nodeHeight", "points", "__name", "iconCircle", "parent", "node", "themeVariables", "flowchart", "labelStyles", "styles2String", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "shapeSvg", "bbox", "label", "labelHelper", "padding", "labelPadding", "topLabel", "nodeBorder", "mainBkg", "stylesMap", "compileStyles", "rc", "at", "options", "userNodeOverrides", "fill", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "diameter", "iconNode", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "updateNodeBounds", "point", "log", "intersect_default", "__name", "iconRounded", "parent", "node", "themeVariables", "flowchart", "labelStyles", "styles2String", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "topLabel", "height", "width", "nodeBorder", "mainBkg", "stylesMap", "compileStyles", "x", "y", "labelPadding", "rc", "at", "options", "userNodeOverrides", "fill", "iconNode", "createRoundedRectPathD", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "updateNodeBounds", "point", "log", "intersect_default", "dx", "dy", "nodeHeight", "points", "__name", "iconSquare", "parent", "node", "themeVariables", "flowchart", "labelStyles", "styles2String", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "topLabel", "height", "width", "nodeBorder", "mainBkg", "stylesMap", "compileStyles", "x", "y", "labelPadding", "rc", "at", "options", "userNodeOverrides", "fill", "iconNode", "createRoundedRectPathD", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "updateNodeBounds", "point", "log", "intersect_default", "dx", "dy", "nodeHeight", "points", "__name", "imageSquare", "parent", "node", "flowchart", "img", "imageNaturalWidth", "imageNaturalHeight", "labelStyles", "styles2String", "defaultWidth", "imageRawWidth", "imageWidth", "imageHeight", "shapeSvg", "bbox", "label", "labelHelper", "topLabel", "x", "y", "labelPadding", "rc", "at", "options", "userNodeOverrides", "imageNode", "outerWidth", "outerHeight", "outerNode", "iconShape", "outerShape", "image", "updateNodeBounds", "point", "log", "intersect_default", "dx", "dy", "nodeHeight", "points", "__name", "inv_trapezoid", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingY", "labelPaddingX", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "labelRect", "parent", "node", "shapeSvg", "bbox", "label", "labelHelper", "rect", "updateNodeBounds", "point", "intersect_default", "__name", "lean_left", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingY", "labelPaddingX", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "h", "w", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "lean_right", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingY", "labelPaddingX", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "h", "w", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "lightningBolt", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "getNodeClasses", "cssStyles", "width", "height", "gap", "points", "rc", "at", "options", "userNodeOverrides", "linePath", "createPathFromPoints", "lineNode", "updateNodeBounds", "point", "log", "intersect_default", "__name", "createCylinderPathD", "__name", "x", "y", "width", "height", "rx", "ry", "outerOffset", "createOuterCylinderPathD", "createInnerCylinderPathD", "MIN_HEIGHT", "MIN_WIDTH", "linedCylinder", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "originalWidth", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "cylinder", "cssStyles", "rc", "at", "outerPathData", "innerPathData", "options", "userNodeOverrides", "outerNode", "innerLine", "pathData", "handleUndefinedAttr", "updateNodeBounds", "point", "pos", "intersect_default", "linedWaveEdgedRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "originalWidth", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "waveAmplitude", "finalH", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateFullSineWavePoints", "poly", "p", "waveEdgeRect", "updateNodeBounds", "point", "intersect_default", "__name", "multiRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "rectOffset", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "w", "h", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "outerPathPoints", "innerPathPoints", "outerPath", "createPathFromPoints", "outerNode", "innerPath", "innerNode", "mergePaths", "updateNodeBounds", "point", "intersect_default", "__name", "multiWaveEdgedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "nodePadding", "labelPaddingX", "labelPaddingY", "adjustFinalHeight", "w", "h", "waveAmplitude", "finalH", "x", "y", "rectOffset", "cssStyles", "wavePoints", "generateFullSineWavePoints", "lastWavePoint", "outerPathPoints", "innerPathPoints", "rc", "at", "options", "userNodeOverrides", "outerPath", "createPathFromPoints", "outerNode", "innerPath", "innerNode", "shape", "updateNodeBounds", "point", "intersect_default", "__name", "note", "parent", "node", "themeVariables", "labelStyles", "nodeStyles", "styles2String", "getEffectiveHtmlLabels", "getConfig", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "noteShapeNode", "rect", "updateNodeBounds", "point", "intersect_default", "__name", "createDecisionBoxPathD", "__name", "x", "y", "size", "question", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "s", "adjustment", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "bounds", "point", "res", "intersect_default", "rect_left_inv_arrow", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "x", "y", "notch", "points", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "rectWithTitle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "classes", "shapeSvg", "g", "label", "description", "title", "text", "createLabel_default", "bbox", "getEffectiveHtmlLabels", "getConfig", "div", "dv", "select_default", "log", "textRows", "titleBox", "descr", "halfPadding", "totalWidth", "totalHeight", "x", "y", "rect", "innerLine", "rc", "at", "options", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "roughLine", "updateNodeBounds", "point", "intersect_default", "__name", "roundedRect", "parent", "node", "themeVariables", "radius", "options", "drawRect", "__name", "FRAME_WIDTH", "shadedProcess", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "paddingX", "paddingY", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "w", "h", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "roughNode", "p", "rect", "handleUndefinedAttr", "updateNodeBounds", "point", "intersect_default", "__name", "slopedRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "w", "h", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "squareRect", "parent", "node", "nodePadding", "labelPaddingX", "labelPaddingY", "options", "drawRect", "__name", "stadium", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "h", "w", "radius", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateCirclePoints", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "state", "parent", "node", "options", "drawRect", "__name", "stateEnd", "parent", "node", "themeVariables", "labelStyles", "nodeStyles", "styles2String", "cssStyles", "lineColor", "stateBorder", "nodeBorder", "nodeShadow", "shapeSvg", "rc", "at", "options", "userNodeOverrides", "roughNode", "innerFill", "innerNodeRadius", "roughInnerNode", "circle", "svgId", "filterId", "updateNodeBounds", "point", "intersect_default", "__name", "stateStart", "parent", "node", "themeVariables", "lineColor", "nodeShadow", "shapeSvg", "circle", "roughNode", "at", "solidStateFill", "svgId", "filterId", "updateNodeBounds", "point", "intersect_default", "__name", "FRAME_WIDTH", "subroutine", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "w", "h", "x", "y", "points", "rc", "at", "options", "userNodeOverrides", "roughNode", "l1", "l2", "rect", "cssStyles", "handleUndefinedAttr", "updateNodeBounds", "el", "insertPolygonShape", "point", "intersect_default", "__name", "TAG_RATIO", "taggedRect", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "totalHeight", "tagWidth", "tagHeight", "w", "h", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "rectPoints", "tagPoints", "rectPath", "createPathFromPoints", "rectNode", "tagPath", "tagNode", "updateNodeBounds", "point", "intersect_default", "__name", "taggedWaveEdgedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "waveAmplitude", "tagWidth", "tagHeight", "finalH", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateFullSineWavePoints", "x", "y", "tagPoints", "waveEdgeRectPath", "createPathFromPoints", "waveEdgeRectNode", "taggedWaveEdgeRectPath", "taggedWaveEdgeRectNode", "waveEdgeRect", "updateNodeBounds", "point", "intersect_default", "__name", "text", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "x", "y", "rect", "updateNodeBounds", "point", "intersect_default", "__name", "createCylinderPathD", "__name", "x", "y", "width", "height", "rx", "ry", "createOuterCylinderPathD", "createInnerCylinderPathD", "MIN_HEIGHT", "MIN_WIDTH", "tiltedCylinder", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPadding", "originalHeight", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "h", "w", "cssStyles", "cylinder", "rc", "at", "outerPathData", "innerPathData", "outerNode", "userNodeOverrides", "innerLine", "pathData", "handleUndefinedAttr", "updateNodeBounds", "point", "pos", "intersect_default", "trapezoid", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingY", "labelPaddingX", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "h", "w", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "__name", "trapezoidalPentagon", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "minWidth", "minHeight", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "pathData", "createPathFromPoints", "shapeNode", "polygon", "updateNodeBounds", "point", "intersect_default", "__name", "MIN_HEIGHT", "MIN_WIDTH", "triangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "useHtmlLabels", "evaluate", "getConfig", "w", "h", "tw", "points", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createPathFromPoints", "roughNode", "polygon", "updateNodeBounds", "point", "log", "intersect_default", "__name", "waveEdgedRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "adjustFinalHeight", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "w", "h", "waveAmplitude", "finalH", "cssStyles", "widthDif", "extraW", "rc", "at", "options", "userNodeOverrides", "points", "generateFullSineWavePoints", "waveEdgeRectPath", "createPathFromPoints", "waveEdgeRectNode", "waveEdgeRect", "updateNodeBounds", "point", "intersect_default", "__name", "waveRectangle", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "nodePadding", "labelPaddingX", "labelPaddingY", "waveAmplitude", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "finalH", "cssStyles", "rc", "at", "options", "userNodeOverrides", "points", "generateFullSineWavePoints", "waveRectPath", "createPathFromPoints", "waveRectNode", "waveRect", "updateNodeBounds", "point", "intersect_default", "__name", "rectOffset", "windowPane", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "paddingX", "paddingY", "shapeSvg", "bbox", "label", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "w", "h", "x", "y", "cssStyles", "rc", "at", "options", "userNodeOverrides", "outerPathPoints", "path", "no", "updateNodeBounds", "point", "intersect_default", "__name", "COLOR_THEMES", "REDUX_THEMES", "erBox", "parent", "node", "entityNode", "theme", "themeVariables", "getConfig", "rowEven", "rowOdd", "nodeBorder", "borderColorArray", "background", "backgroundNode", "config", "PADDING", "TEXT_PADDING", "cssStyles", "labelStyles", "nodeStyles", "styles2String", "options", "calculateTextWidth", "shapeSvg", "drawRect", "colorIndex", "evaluate", "textElement", "bbox", "cssClasses", "getNodeClasses", "nameBBox", "addText", "yOffset", "yOffsets", "rows", "maxTypeWidth", "maxNameWidth", "maxKeysWidth", "maxCommentWidth", "keysPresent", "commentPresent", "attribute", "typeBBox", "keysBBox", "commentBBox", "rowHeight", "totalWidthSections", "shapeBBox", "difference", "maxWidth", "rc", "at", "userNodeOverrides", "totalShapeBBoxHeight", "sum", "row", "w", "h", "x", "y", "_", "i", "nodes", "text", "select_default", "transform", "translateX", "translateY", "translate", "roughRect", "rect", "isEven", "thickness", "points", "lineToPolygon", "roughLine", "p", "xCoord", "yCoord", "updateNodeBounds", "strokeStyles", "e", "s", "point", "intersect_default", "__name", "labelText", "classes", "style", "label", "parseGenericTypes", "createText", "child", "div", "dv", "x1", "y1", "x2", "y2", "textHelper", "parent", "node", "config", "useHtmlLabels", "GAP", "TEXT_PADDING", "shapeSvg", "getNodeClasses", "annotationGroup", "labelGroup", "membersGroup", "methodsGroup", "annotationGroupHeight", "labelGroupHeight", "membersGroupHeight", "annotation", "addText", "labelGroupBBox", "yOffset", "member", "height", "methodsYOffset", "method", "bbox", "annotationGroupBBox", "__name", "parentGroup", "styles", "textEl", "getConfig", "evaluate", "textContent", "hasKatex", "text", "createText", "sanitizeText", "decodeEntities", "calculateTextWidth", "numberOfLines", "div", "dv", "select_default", "images", "noImgText", "img", "res", "setupImage", "bodyFontSize", "width", "textChild", "classBox", "parent", "node", "config", "getConfig", "themeVariables", "useGradient", "PADDING", "GAP", "useHtmlLabels", "evaluate", "classNode", "shapeSvg", "bbox", "textHelper", "labelStyles", "nodeStyles", "styles2String", "styles", "renderExtraBox", "rc", "at", "options", "userNodeOverrides", "w", "h", "nodeHeightGreater", "x", "y", "extraHeight", "roughRect", "rect", "rectBBox", "annotationGroupHeight", "labelGroupHeight", "membersGroupHeight", "methodsAreaPlacement", "_", "i", "nodes", "text", "select_default", "transform", "translateY", "translate", "newTranslateY", "membersGroupHeightForMethods", "newTranslateX", "firstLineY", "roughLine", "secondLineY", "colorRegex", "match", "colorStyle", "updateNodeBounds", "point", "intersect_default", "__name", "requirementBox", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "requirementNode", "elementNode", "padding", "gap", "isRequirementNode", "classes", "getNodeClasses", "themeVariables", "getConfig", "borderColorArray", "requirementEdgeLabelBackground", "shapeSvg", "typeHeight", "addText", "accumulativeHeight", "nameHeight", "idHeight", "textHeight", "riskHeight", "totalWidth", "totalHeight", "x", "y", "rc", "at", "options", "userNodeOverrides", "roughRect", "rect", "colorIndex", "_", "i", "nodes", "text", "select_default", "transform", "translateX", "translateY", "translate", "newTranslateY", "newTranslateX", "lineY", "roughLine", "polygonPoints", "updateNodeBounds", "point", "intersect_default", "__name", "parentGroup", "inputText", "yOffset", "style", "textEl", "config", "useHtmlLabels", "createText", "sanitizeText", "decodeEntities", "calculateTextWidth", "bbox", "div", "dv", "textChild", "child", "colorFromPriority", "__name", "priority", "kanbanItem", "parent", "kanbanNode", "config", "labelStyles", "nodeStyles", "styles2String", "labelPaddingX", "orgWidth", "shapeSvg", "bbox", "labelElTitle", "labelHelper", "getNodeClasses", "padding", "ticketUrl", "link", "options", "labelEl", "bbox2", "insertLabel", "labelElAssigned", "bboxAssigned", "labelPaddingY", "totalWidth", "heightAdj", "totalHeight", "x", "y", "rect", "rx", "ry", "cssStyles", "rc", "at", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "line", "lineX", "y1", "y2", "updateNodeBounds", "point", "intersect_default", "bang", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "getNodeClasses", "w", "h", "r", "cssStyles", "minWidth", "minHeight", "effectiveWidth", "effectiveHeight", "bangElem", "path", "rc", "at", "options", "userNodeOverrides", "roughNode", "handleUndefinedAttr", "updateNodeBounds", "bounds", "point", "intersect_default", "log", "__name", "cloud", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "getNodeClasses", "w", "h", "r1", "r2", "r3", "r4", "cssStyles", "cloudElem", "path", "rc", "at", "options", "userNodeOverrides", "roughNode", "handleUndefinedAttr", "updateNodeBounds", "bounds", "point", "intersect_default", "log", "__name", "defaultMindmapNode", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "label", "labelHelper", "getNodeClasses", "w", "h", "rd", "rectPath", "bg", "updateNodeBounds", "bounds", "point", "intersect_default", "__name", "mindmapCircle", "parent", "node", "options", "circle", "__name", "shapesDefs", "squareRect", "roundedRect", "stadium", "subroutine", "cylinder", "datastore", "circle", "bang", "cloud", "question", "hexagon", "lean_right", "lean_left", "trapezoid", "inv_trapezoid", "doublecircle", "text", "card", "shadedProcess", "stateStart", "stateEnd", "forkJoin", "hourglass", "curlyBraceLeft", "curlyBraceRight", "curlyBraces", "lightningBolt", "waveEdgedRectangle", "halfRoundedRectangle", "tiltedCylinder", "linedCylinder", "curvedTrapezoid", "dividedRectangle", "triangle", "windowPane", "filledCircle", "trapezoidalPentagon", "flippedTriangle", "slopedRect", "multiWaveEdgedRectangle", "multiRect", "bowTieRect", "crossedCircle", "taggedWaveEdgedRectangle", "taggedRect", "waveRectangle", "rect_left_inv_arrow", "linedWaveEdgedRect", "generateShapeMap", "__name", "entries", "state", "choice", "note", "rectWithTitle", "labelRect", "iconSquare", "iconCircle", "icon", "iconRounded", "imageSquare", "anchor", "kanbanItem", "mindmapCircle", "defaultMindmapNode", "classBox", "erBox", "requirementBox", "shape", "alias", "shapes", "isValidShape", "nodeElems", "insertNode", "elem", "node", "renderOptions", "newEl", "el", "shapeHandler", "shapes", "target", "handleUndefinedAttr", "__name", "setNodeElem", "clear", "positionNode", "log", "padding", "diff"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-KGYTTC2M.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-KGYTTC2M.mjs new file mode 100644 index 0000000..f50150f --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-KGYTTC2M.mjs @@ -0,0 +1 @@ +import{a as e,b as a,c as i,d as n,e as s,g as u,k as d,s as l,t as c}from"./chunk-4R4BOZG6.mjs";import{a as o}from"./chunk-AQ6EADP3.mjs";var m=class extends c{static{o(this,"InfoTokenBuilder")}static{e(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},v={parser:{TokenBuilder:e(()=>new m,"TokenBuilder"),ValueConverter:e(()=>new l,"ValueConverter")}};function I(f=s){let r=n(i(f),u),t=n(a({shared:r}),d,v);return r.ServiceRegistry.register(t),{shared:r,Info:t}}o(I,"createInfoServices");e(I,"createInfoServices");export{v as a,I as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-KGYTTC2M.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-KGYTTC2M.mjs.map new file mode 100644 index 0000000..5b8c1b9 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-KGYTTC2M.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-5DO6E6H7.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n EmptyFileSystem,\n InfoGrammarGeneratedModule,\n MermaidGeneratedSharedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/info/tokenBuilder.ts\nvar InfoTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"InfoTokenBuilder\");\n }\n constructor() {\n super([\"info\", \"showInfo\"]);\n }\n};\n\n// src/language/info/module.ts\nvar InfoModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new InfoTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createInfoServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Info = inject(\n createDefaultCoreModule({ shared }),\n InfoGrammarGeneratedModule,\n InfoModule\n );\n shared.ServiceRegistry.register(Info);\n return { shared, Info };\n}\n__name(createInfoServices, \"createInfoServices\");\n\nexport {\n InfoModule,\n createInfoServices\n};\n"], + "mappings": "0IAcA,IAAIA,EAAmB,cAAcC,CAA4B,CAdjE,MAciE,CAAAC,EAAA,yBAC/D,MAAO,CACLA,EAAO,KAAM,kBAAkB,CACjC,CACA,aAAc,CACZ,MAAM,CAAC,OAAQ,UAAU,CAAC,CAC5B,CACF,EAGIC,EAAa,CACf,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAoB,cAAc,EACjF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAmBC,EAAUC,EAAiB,CACrD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAOH,EACXI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAI,EAC7B,CAAE,OAAAJ,EAAQ,KAAAI,CAAK,CACxB,CAZSV,EAAAG,EAAA,sBAaTH,EAAOG,EAAoB,oBAAoB", + "names": ["InfoTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "InfoModule", "CommonValueConverter", "createInfoServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Info", "createDefaultCoreModule", "InfoGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-XBXGYYE5.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-KNLZD3CH.mjs similarity index 96% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-XBXGYYE5.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-KNLZD3CH.mjs index 4eb4a47..8ba7646 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-XBXGYYE5.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-KNLZD3CH.mjs @@ -1 +1 @@ -import{a as n,c as R}from"./chunk-VELTKBKT.mjs";var g=R(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0;e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;e.htmlCtrlEntityRegex=/&(newline|tab);/gi;e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;e.urlSchemeRegex=/^.+(:|:)/gim;e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;e.relativeFirstCharacters=[".","/"];e.BLANK_URL="about:blank"});var f=R(h=>{"use strict";Object.defineProperty(h,"__esModule",{value:!0});h.sanitizeUrl=void 0;var t=g();function v(r){return t.relativeFirstCharacters.indexOf(r[0])>-1}n(v,"isRelativeUrlWithoutProtocol");function x(r){var c=r.replace(t.ctrlCharactersRegex,"");return c.replace(t.htmlEntitiesRegex,function(a,i){return String.fromCharCode(i)})}n(x,"decodeHtmlCharacters");function C(r){return URL.canParse(r)}n(C,"isValidUrl");function d(r){try{return decodeURIComponent(r)}catch{return r}}n(d,"decodeURI");function p(r){if(!r)return t.BLANK_URL;var c,a=d(r.trim());do a=x(a).replace(t.htmlCtrlEntityRegex,"").replace(t.ctrlCharactersRegex,"").replace(t.whitespaceEscapeCharsRegex,"").trim(),a=d(a),c=a.match(t.ctrlCharactersRegex)||a.match(t.htmlEntitiesRegex)||a.match(t.htmlCtrlEntityRegex)||a.match(t.whitespaceEscapeCharsRegex);while(c&&c.length>0);var i=a;if(!i)return t.BLANK_URL;if(v(i))return i;var u=i.trimStart(),m=u.match(t.urlSchemeRegex);if(!m)return i;var l=m[0].toLowerCase().trim();if(t.invalidProtocolRegex.test(l))return t.BLANK_URL;var s=u.replace(/\\/g,"/");if(l==="mailto:"||l.includes("://"))return s;if(l==="http:"||l==="https:"){if(!C(s))return t.BLANK_URL;var o=new URL(s);return o.protocol=o.protocol.toLowerCase(),o.hostname=o.hostname.toLowerCase(),o.toString()}return s}n(p,"sanitizeUrl");h.sanitizeUrl=p});export{f as a}; +import{a as n,b as R}from"./chunk-AQ6EADP3.mjs";var g=R(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0;e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;e.htmlCtrlEntityRegex=/&(newline|tab);/gi;e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;e.urlSchemeRegex=/^.+(:|:)/gim;e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;e.relativeFirstCharacters=[".","/"];e.BLANK_URL="about:blank"});var f=R(h=>{"use strict";Object.defineProperty(h,"__esModule",{value:!0});h.sanitizeUrl=void 0;var t=g();function v(r){return t.relativeFirstCharacters.indexOf(r[0])>-1}n(v,"isRelativeUrlWithoutProtocol");function x(r){var c=r.replace(t.ctrlCharactersRegex,"");return c.replace(t.htmlEntitiesRegex,function(a,i){return String.fromCharCode(i)})}n(x,"decodeHtmlCharacters");function C(r){return URL.canParse(r)}n(C,"isValidUrl");function d(r){try{return decodeURIComponent(r)}catch{return r}}n(d,"decodeURI");function p(r){if(!r)return t.BLANK_URL;var c,a=d(r.trim());do a=x(a).replace(t.htmlCtrlEntityRegex,"").replace(t.ctrlCharactersRegex,"").replace(t.whitespaceEscapeCharsRegex,"").trim(),a=d(a),c=a.match(t.ctrlCharactersRegex)||a.match(t.htmlEntitiesRegex)||a.match(t.htmlCtrlEntityRegex)||a.match(t.whitespaceEscapeCharsRegex);while(c&&c.length>0);var i=a;if(!i)return t.BLANK_URL;if(v(i))return i;var u=i.trimStart(),m=u.match(t.urlSchemeRegex);if(!m)return i;var l=m[0].toLowerCase().trim();if(t.invalidProtocolRegex.test(l))return t.BLANK_URL;var s=u.replace(/\\/g,"/");if(l==="mailto:"||l.includes("://"))return s;if(l==="http:"||l==="https:"){if(!C(s))return t.BLANK_URL;var o=new URL(s);return o.protocol=o.protocol.toLowerCase(),o.hostname=o.hostname.toLowerCase(),o.toString()}return s}n(p,"sanitizeUrl");h.sanitizeUrl=p});export{f as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-XBXGYYE5.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-KNLZD3CH.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-XBXGYYE5.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-KNLZD3CH.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-KRXBNO2N.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-KRXBNO2N.mjs new file mode 100644 index 0000000..fc8560e --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-KRXBNO2N.mjs @@ -0,0 +1 @@ +import{A as I,B as A,C as Z,D as E,a as vr,b as F,c as N,e as _r,f as Q,g as wr,h as R,i as u,j as O,k as Y,l as _,m as br,n as Er,o as q,p as P,q as y,r as G,s as x,t as z,u as L,v as V,w as B,x as k,y as S,z as yr}from"./chunk-W44A43WB.mjs";import{a as s}from"./chunk-AQ6EADP3.mjs";function g(r,e,n,t){var o;do o=A(t);while(r.hasNode(o));return n.dummy=e,r.setNode(o,n),o}s(g,"addDummyNode");function xr(r){var e=new E().setGraph(r.graph());return u(r.nodes(),function(n){e.setNode(n,r.node(n))}),u(r.edges(),function(n){var t=e.edge(n.v,n.w)||{weight:0,minlen:1},o=r.edge(n);e.setEdge(n.v,n.w,{weight:t.weight+o.weight,minlen:Math.max(t.minlen,o.minlen)})}),e}s(xr,"simplify");function X(r){var e=new E({multigraph:r.isMultigraph()}).setGraph(r.graph());return u(r.nodes(),function(n){r.children(n).length||e.setNode(n,r.node(n))}),u(r.edges(),function(n){e.setEdge(n,r.edge(n))}),e}s(X,"asNonCompoundGraph");function $(r,e){var n=r.x,t=r.y,o=e.x-n,a=e.y-t,i=r.width/2,f=r.height/2;if(!o&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var d,c;return Math.abs(a)*i>Math.abs(o)*f?(a<0&&(f=-f),d=f*o/a,c=f):(o<0&&(i=-i),d=i,c=i*a/o),{x:n+d,y:t+c}}s($,"intersectRect");function C(r){var e=_(k(er(r)+1),function(){return[]});return u(r.nodes(),function(n){var t=r.node(n),o=t.rank;y(o)||(e[o][t.order]=n)}),e}s(C,"buildLayerMatrix");function kr(r){var e=L(_(r.nodes(),function(n){return r.node(n).rank}));u(r.nodes(),function(n){var t=r.node(n);q(t,"rank")&&(t.rank-=e)})}s(kr,"normalizeRanks");function gr(r){var e=L(_(r.nodes(),function(a){return r.node(a).rank})),n=[];u(r.nodes(),function(a){var i=r.node(a).rank-e;n[i]||(n[i]=[]),n[i].push(a)});var t=0,o=r.graph().nodeRankFactor;u(n,function(a,i){y(a)&&i%o!==0?--t:t&&u(a,function(f){r.node(f).rank+=t})})}s(gr,"removeEmptyRanks");function rr(r,e,n,t){var o={width:0,height:0};return arguments.length>=4&&(o.rank=n,o.order=t),g(r,"border",o,e)}s(rr,"addBorderNode");function er(r){return x(_(r.nodes(),function(e){var n=r.node(e).rank;if(!y(n))return n}))}s(er,"maxRank");function Nr(r,e){var n={lhs:[],rhs:[]};return u(r,function(t){e(t)?n.lhs.push(t):n.rhs.push(t)}),n}s(Nr,"partition");function Or(r,e){var n=Q();try{return e()}finally{console.log(r+" time: "+(Q()-n)+"ms")}}s(Or,"time");function Ir(r,e){return e()}s(Ir,"notime");function Lr(r){function e(n){var t=r.children(n),o=r.node(n);if(t.length&&u(t,e),Object.prototype.hasOwnProperty.call(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(var a=o.minRank,i=o.maxRank+1;a0;--f)if(i=e[f].dequeue(),i){t=t.concat(or(r,e,n,i,!0));break}}}return t}s(be,"doGreedyFAS");function or(r,e,n,t,o){var a=o?[]:void 0;return u(r.inEdges(t.v),function(i){var f=r.edge(i),d=r.node(i.v);o&&a.push({v:i.v,w:i.w}),d.out-=f,ar(e,n,d)}),u(r.outEdges(t.v),function(i){var f=r.edge(i),d=i.w,c=r.node(d);c.in-=f,ar(e,n,c)}),r.removeNode(t.v),a}s(or,"removeNode");function Ee(r,e){var n=new E,t=0,o=0;u(r.nodes(),function(f){n.setNode(f,{v:f,in:0,out:0})}),u(r.edges(),function(f){var d=n.edge(f.v,f.w)||0,c=e(f),h=d+c;n.setEdge(f.v,f.w,h),o=Math.max(o,n.node(f.v).out+=c),t=Math.max(t,n.node(f.w).in+=c)});var a=k(o+t+3).map(function(){return new H}),i=t+1;return u(n.nodes(),function(f){ar(a,i,n.node(f))}),{graph:n,buckets:a,zeroIdx:i}}s(Ee,"buildState");function ar(r,e,n){n.out?n.in?r[n.out-n.in+e].enqueue(n):r[r.length-1].enqueue(n):r[0].enqueue(n)}s(ar,"assignBucket");function Fr(r){var e=r.graph().acyclicer==="greedy"?Mr(r,n(r)):ye(r);u(e,function(t){var o=r.edge(t);r.removeEdge(t),o.forwardName=t.name,o.reversed=!0,r.setEdge(t.w,t.v,o,A("rev"))});function n(t){return function(o){return t.edge(o).weight}}s(n,"weightFn")}s(Fr,"run");function ye(r){var e=[],n={},t={};function o(a){Object.prototype.hasOwnProperty.call(t,a)||(t[a]=!0,n[a]=!0,u(r.outEdges(a),function(i){Object.prototype.hasOwnProperty.call(n,i.w)?e.push(i):o(i.w)}),delete n[a])}return s(o,"dfs"),u(r.nodes(),o),e}s(ye,"dfsFAS");function Gr(r){u(r.edges(),function(e){var n=r.edge(e);if(n.reversed){r.removeEdge(e);var t=n.forwardName;delete n.reversed,delete n.forwardName,r.setEdge(e.w,e.v,n,t)}})}s(Gr,"undo");function Br(r){r.graph().dummyChains=[],u(r.edges(),function(e){xe(r,e)})}s(Br,"run");function xe(r,e){var n=e.v,t=r.node(n).rank,o=e.w,a=r.node(o).rank,i=e.name,f=r.edge(e),d=f.labelRank;if(a!==t+1){r.removeEdge(e);var c=void 0,h,l;for(l=0,++t;ti.lim&&(f=i,d=!0);var c=O(e.edges(),function(h){return d===zr(r,r.node(h.v),f)&&d!==zr(r,r.node(h.w),f)});return V(c,function(h){return M(e,h)})}s(Xr,"enterEdge");function Hr(r,e,n,t){var o=n.v,a=n.w;r.removeEdge(o,a),r.setEdge(t.v,t.w,{}),dr(r),ur(r,e),je(r,e)}s(Hr,"exchangeEdges");function je(r,e){var n=Y(r.nodes(),function(o){return!e.node(o).parent}),t=fr(r,n);t=t.slice(1),u(t,function(o){var a=r.node(o).parent,i=e.edge(o,a),f=!1;i||(i=e.edge(a,o),f=!0),e.node(o).rank=e.node(a).rank+(f?i.minlen:-i.minlen)})}s(je,"updateRanks");function Te(r,e,n){return r.hasEdge(e,n)}s(Te,"isTreeEdge");function zr(r,e,n){return n.low<=e.lim&&e.lim<=n.lim}s(zr,"isDescendant");function cr(r){switch(r.graph().ranker){case"network-simplex":Jr(r);break;case"tight-tree":Se(r);break;case"longest-path":Re(r);break;default:Jr(r)}}s(cr,"rank");var Re=U;function Se(r){U(r),J(r)}s(Se,"tightTreeRanker");function Jr(r){T(r)}s(Jr,"networkSimplexRanker");function Kr(r){var e=g(r,"root",{},"_root"),n=Me(r),t=x(P(n))-1,o=2*t+1;r.graph().nestingRoot=e,u(r.edges(),function(i){r.edge(i).minlen*=o});var a=Fe(r)+1;u(r.children(),function(i){Qr(r,e,o,a,t,n,i)}),r.graph().nodeRankFactor=o}s(Kr,"run");function Qr(r,e,n,t,o,a,i){var f=r.children(i);if(!f.length){i!==e&&r.setEdge(e,i,{weight:0,minlen:n});return}var d=rr(r,"_bt"),c=rr(r,"_bb"),h=r.node(i);r.setParent(d,i),h.borderTop=d,r.setParent(c,i),h.borderBottom=c,u(f,function(l){Qr(r,e,n,t,o,a,l);var p=r.node(l),m=p.borderTop?p.borderTop:l,v=p.borderBottom?p.borderBottom:l,b=p.borderTop?t:2*t,D=m!==v?1:o-a[i]+1;r.setEdge(d,m,{weight:b,minlen:D,nestingEdge:!0}),r.setEdge(v,c,{weight:b,minlen:D,nestingEdge:!0})}),r.parent(i)||r.setEdge(e,d,{weight:0,minlen:o+a[i]})}s(Qr,"dfs");function Me(r){var e={};function n(t,o){var a=r.children(t);a&&a.length&&u(a,function(i){n(i,o+1)}),e[t]=o}return s(n,"dfs"),u(r.children(),function(t){n(t,1)}),e}s(Me,"treeDepths");function Fe(r){return S(r.edges(),function(e,n){return e+r.edge(n).weight},0)}s(Fe,"sumWeights");function Zr(r){var e=r.graph();r.removeNode(e.nestingRoot),delete e.nestingRoot,u(r.edges(),function(n){var t=r.edge(n);t.nestingEdge&&r.removeEdge(n)})}s(Zr,"cleanup");function $r(r,e,n){var t={},o;u(n,function(a){for(var i=r.parent(a),f,d;i;){if(f=r.parent(i),f?(d=t[f],t[f]=i):(d=o,o=i),d&&d!==i){e.setEdge(d,i);return}i=f}})}s($r,"addSubgraphConstraints");function re(r,e,n){var t=Ve(r),o=new E({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(a){return r.node(a)});return u(r.nodes(),function(a){var i=r.node(a),f=r.parent(a);(i.rank===e||i.minRank<=e&&e<=i.maxRank)&&(o.setNode(a),o.setParent(a,f||t),u(r[n](a),function(d){var c=d.v===a?d.w:d.v,h=o.edge(c,a),l=y(h)?0:h.weight;o.setEdge(c,a,{weight:r.edge(d).weight+l})}),Object.prototype.hasOwnProperty.call(i,"minRank")&&o.setNode(a,{borderLeft:i.borderLeft[e],borderRight:i.borderRight[e]}))}),o}s(re,"buildLayerGraph");function Ve(r){for(var e;r.hasNode(e=A("_root")););return e}s(Ve,"createRootNode");function ee(r,e){for(var n=0,t=1;t0;)h%2&&(l+=f[h+1]),h=h-1>>1,f[h]+=c.weight;d+=c.weight*l})),d}s(Be,"twoLayerCrossCount");function ne(r){var e={},n=O(r.nodes(),function(f){return!r.children(f).length}),t=x(_(n,function(f){return r.node(f).rank})),o=_(k(t+1),function(){return[]});function a(f){if(!q(e,f)){e[f]=!0;var d=r.node(f);o[d.rank].push(f),u(r.successors(f),a)}}s(a,"dfs");var i=I(n,function(f){return r.node(f).rank});return u(i,a),o}s(ne,"initOrder");function te(r,e){return _(e,function(n){var t=r.inEdges(n);if(t.length){var o=S(t,function(a,i){var f=r.edge(i),d=r.node(i.v);return{sum:a.sum+f.weight*d.order,weight:a.weight+f.weight}},{sum:0,weight:0});return{v:n,barycenter:o.sum/o.weight,weight:o.weight}}else return{v:n}})}s(te,"barycenter");function oe(r,e){var n={};u(r,function(o,a){var i=n[o.v]={indegree:0,in:[],out:[],vs:[o.v],i:a};y(o.barycenter)||(i.barycenter=o.barycenter,i.weight=o.weight)}),u(e.edges(),function(o){var a=n[o.v],i=n[o.w];!y(a)&&!y(i)&&(i.indegree++,a.out.push(n[o.w]))});var t=O(n,function(o){return!o.indegree});return Ae(t)}s(oe,"resolveConflicts");function Ae(r){var e=[];function n(a){return function(i){i.merged||(y(i.barycenter)||y(a.barycenter)||i.barycenter>=a.barycenter)&&De(a,i)}}s(n,"handleIn");function t(a){return function(i){i.in.push(a),--i.indegree===0&&r.push(i)}}for(s(t,"handleOut");r.length;){var o=r.pop();e.push(o),u(o.in.reverse(),n(o)),u(o.out,t(o))}return _(O(e,function(a){return!a.merged}),function(a){return B(a,["vs","i","barycenter","weight"])})}s(Ae,"doResolveConflicts");function De(r,e){var n=0,t=0;r.weight&&(n+=r.barycenter*r.weight,t+=r.weight),e.weight&&(n+=e.barycenter*e.weight,t+=e.weight),r.vs=e.vs.concat(r.vs),r.barycenter=n/t,r.weight=t,r.i=Math.min(e.i,r.i),e.merged=!0}s(De,"mergeEntries");function ie(r,e){var n=Nr(r,function(h){return Object.prototype.hasOwnProperty.call(h,"barycenter")}),t=n.lhs,o=I(n.rhs,function(h){return-h.i}),a=[],i=0,f=0,d=0;t.sort(Ye(!!e)),d=ae(a,o,d),u(t,function(h){d+=h.vs.length,a.push(h.vs),i+=h.barycenter*h.weight,f+=h.weight,d=ae(a,o,d)});var c={vs:N(a)};return f&&(c.barycenter=i/f,c.weight=f),c}s(ie,"sort");function ae(r,e,n){for(var t;e.length&&(t=R(e)).i<=n;)e.pop(),r.push(t.vs),n++;return n}s(ae,"consumeUnsortable");function Ye(r){return function(e,n){return e.barycentern.barycenter?1:r?n.i-e.i:e.i-n.i}}s(Ye,"compareWithBias");function hr(r,e,n,t){var o=r.children(e),a=r.node(e),i=a?a.borderLeft:void 0,f=a?a.borderRight:void 0,d={};i&&(o=O(o,function(v){return v!==i&&v!==f}));var c=te(r,o);u(c,function(v){if(r.children(v.v).length){var b=hr(r,v.v,n,t);d[v.v]=b,Object.prototype.hasOwnProperty.call(b,"barycenter")&&Ue(v,b)}});var h=oe(c,n);ze(h,d);var l=ie(h,t);if(i&&(l.vs=N([i,l.vs,f]),r.predecessors(i).length)){var p=r.node(r.predecessors(i)[0]),m=r.node(r.predecessors(f)[0]);Object.prototype.hasOwnProperty.call(l,"barycenter")||(l.barycenter=0,l.weight=0),l.barycenter=(l.barycenter*l.weight+p.order+m.order)/(l.weight+2),l.weight+=2}return l}s(hr,"sortSubgraph");function ze(r,e){u(r,function(n){n.vs=N(n.vs.map(function(t){return e[t]?e[t].vs:t}))})}s(ze,"expandSubgraphs");function Ue(r,e){y(r.barycenter)?(r.barycenter=e.barycenter,r.weight=e.weight):(r.barycenter=(r.barycenter*r.weight+e.barycenter*e.weight)/(r.weight+e.weight),r.weight+=e.weight)}s(Ue,"mergeBarycenters");function ue(r){var e=er(r),n=se(r,k(1,e+1),"inEdges"),t=se(r,k(e-1,-1,-1),"outEdges"),o=ne(r);fe(r,o);for(var a=Number.POSITIVE_INFINITY,i,f=0,d=0;d<4;++f,++d){We(f%2?n:t,f%4>=2),o=C(r);var c=ee(r,o);ci||f>e[d].lim));for(c=d,d=t;(d=r.parent(d))!==c;)a.push(d);return{path:o.concat(a.reverse()),lca:c}}s(qe,"findPath");function Xe(r){var e={},n=0;function t(o){var a=n;u(r.children(o),t),e[o]={low:a,lim:n++}}return s(t,"dfs"),u(r.children(),t),e}s(Xe,"postorder");function He(r,e){var n={};function t(o,a){var i=0,f=0,d=o.length,c=R(a);return u(a,function(h,l){var p=Ke(r,h),m=p?r.node(p).order:d;(p||h===c)&&(u(a.slice(f,l+1),function(v){u(r.predecessors(v),function(b){var D=r.node(b),mr=D.order;(mrc)&&ce(n,p,h)})})}s(t,"scan");function o(a,i){var f=-1,d,c=0;return u(i,function(h,l){if(r.node(h).dummy==="border"){var p=r.predecessors(h);p.length&&(d=r.node(p[0]).order,t(i,c,l,f,d),c=l,f=d)}t(i,c,i.length,d,a.length)}),i}return s(o,"visitLayer"),S(e,o),n}s(Je,"findType2Conflicts");function Ke(r,e){if(r.node(e).dummy)return Y(r.predecessors(e),function(n){return r.node(n).dummy})}s(Ke,"findOtherInnerSegmentNode");function ce(r,e,n){if(e>n){var t=e;e=n,n=t}Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,configurable:!0,value:{},writable:!0});var o=r[e];Object.defineProperty(o,n,{enumerable:!0,configurable:!0,value:!0,writable:!0})}s(ce,"addConflict");function Qe(r,e,n){if(e>n){var t=e;e=n,n=t}return!!r[e]&&Object.prototype.hasOwnProperty.call(r[e],n)}s(Qe,"hasConflict");function Ze(r,e,n,t){var o={},a={},i={};return u(e,function(f){u(f,function(d,c){o[d]=d,a[d]=d,i[d]=c})}),u(e,function(f){var d=-1;u(f,function(c){var h=t(c);if(h.length){h=I(h,function(b){return i[b]});for(var l=(h.length-1)/2,p=Math.floor(l),m=Math.ceil(l);p<=m;++p){var v=h[p];a[c]===c&&d{var t=n(" buildLayoutGraph",()=>bn(r));n(" runLayout",()=>un(t,n)),n(" updateInputGraph",()=>dn(r,t))})}s(fn,"layout");function un(r,e){e(" makeSpaceForEdgeLabels",()=>En(r)),e(" removeSelfEdges",()=>Ln(r)),e(" acyclic",()=>Fr(r)),e(" nestingGraph.run",()=>Kr(r)),e(" rank",()=>cr(X(r))),e(" injectEdgeLabelProxies",()=>yn(r)),e(" removeEmptyRanks",()=>gr(r)),e(" nestingGraph.cleanup",()=>Zr(r)),e(" normalizeRanks",()=>kr(r)),e(" assignRankMinMax",()=>xn(r)),e(" removeEdgeLabelProxies",()=>kn(r)),e(" normalize.run",()=>Br(r)),e(" parentDummyChains",()=>de(r)),e(" addBorderSegments",()=>Lr(r)),e(" order",()=>ue(r)),e(" insertSelfEdges",()=>Cn(r)),e(" adjustCoordinateSystem",()=>jr(r)),e(" position",()=>le(r)),e(" positionSelfEdges",()=>jn(r)),e(" removeBorderNodes",()=>Pn(r)),e(" normalize.undo",()=>Ar(r)),e(" fixupEdgeLabelCoords",()=>On(r)),e(" undoCoordinateSystem",()=>Tr(r)),e(" translateGraph",()=>gn(r)),e(" assignNodeIntersects",()=>Nn(r)),e(" reversePoints",()=>In(r)),e(" acyclic.undo",()=>Gr(r))}s(un,"runLayout");function dn(r,e){u(r.nodes(),function(n){var t=r.node(n),o=e.node(n);t&&(t.x=o.x,t.y=o.y,e.children(n).length&&(t.width=o.width,t.height=o.height))}),u(r.edges(),function(n){var t=r.edge(n),o=e.edge(n);t.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(t.x=o.x,t.y=o.y)}),r.graph().width=e.graph().width,r.graph().height=e.graph().height}s(dn,"updateInputGraph");var cn=["nodesep","edgesep","ranksep","marginx","marginy"],hn={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},ln=["acyclicer","ranker","rankdir","align"],pn=["width","height"],mn={width:0,height:0},vn=["minlen","weight","width","height","labeloffset"],_n={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},wn=["labelpos"];function bn(r){var e=new E({multigraph:!0,compound:!0}),n=pr(r.graph());return e.setGraph(z({},hn,lr(n,cn),B(n,ln))),u(r.nodes(),function(t){var o=pr(r.node(t));e.setNode(t,wr(lr(o,pn),mn)),e.setParent(t,r.parent(t))}),u(r.edges(),function(t){var o=pr(r.edge(t));e.setEdge(t,z({},_n,lr(o,vn),B(o,wn)))}),e}s(bn,"buildLayoutGraph");function En(r){var e=r.graph();e.ranksep/=2,u(r.edges(),function(n){var t=r.edge(n);t.minlen*=2,t.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?t.width+=t.labeloffset:t.height+=t.labeloffset)})}s(En,"makeSpaceForEdgeLabels");function yn(r){u(r.edges(),function(e){var n=r.edge(e);if(n.width&&n.height){var t=r.node(e.v),o=r.node(e.w),a={rank:(o.rank-t.rank)/2+t.rank,e};g(r,"edge-proxy",a,"_ep")}})}s(yn,"injectEdgeLabelProxies");function xn(r){var e=0;u(r.nodes(),function(n){var t=r.node(n);t.borderTop&&(t.minRank=r.node(t.borderTop).rank,t.maxRank=r.node(t.borderBottom).rank,e=x(e,t.maxRank))}),r.graph().maxRank=e}s(xn,"assignRankMinMax");function kn(r){u(r.nodes(),function(e){var n=r.node(e);n.dummy==="edge-proxy"&&(r.edge(n.e).labelRank=n.rank,r.removeNode(e))})}s(kn,"removeEdgeLabelProxies");function gn(r){var e=Number.POSITIVE_INFINITY,n=0,t=Number.POSITIVE_INFINITY,o=0,a=r.graph(),i=a.marginx||0,f=a.marginy||0;function d(c){var h=c.x,l=c.y,p=c.width,m=c.height;e=Math.min(e,h-p/2),n=Math.max(n,h+p/2),t=Math.min(t,l-m/2),o=Math.max(o,l+m/2)}s(d,"getExtremes"),u(r.nodes(),function(c){d(r.node(c))}),u(r.edges(),function(c){var h=r.edge(c);Object.prototype.hasOwnProperty.call(h,"x")&&d(h)}),e-=i,t-=f,u(r.nodes(),function(c){var h=r.node(c);h.x-=e,h.y-=t}),u(r.edges(),function(c){var h=r.edge(c);u(h.points,function(l){l.x-=e,l.y-=t}),Object.prototype.hasOwnProperty.call(h,"x")&&(h.x-=e),Object.prototype.hasOwnProperty.call(h,"y")&&(h.y-=t)}),a.width=n-e+i,a.height=o-t+f}s(gn,"translateGraph");function Nn(r){u(r.edges(),function(e){var n=r.edge(e),t=r.node(e.v),o=r.node(e.w),a,i;n.points?(a=n.points[0],i=n.points[n.points.length-1]):(n.points=[],a=o,i=t),n.points.unshift($(t,a)),n.points.push($(o,i))})}s(Nn,"assignNodeIntersects");function On(r){u(r.edges(),function(e){var n=r.edge(e);if(Object.prototype.hasOwnProperty.call(n,"x"))switch((n.labelpos==="l"||n.labelpos==="r")&&(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset;break}})}s(On,"fixupEdgeLabelCoords");function In(r){u(r.edges(),function(e){var n=r.edge(e);n.reversed&&n.points.reverse()})}s(In,"reversePointsForReversedEdges");function Pn(r){u(r.nodes(),function(e){if(r.children(e).length){var n=r.node(e),t=r.node(n.borderTop),o=r.node(n.borderBottom),a=r.node(R(n.borderLeft)),i=r.node(R(n.borderRight));n.width=Math.abs(i.x-a.x),n.height=Math.abs(o.y-t.y),n.x=a.x+n.width/2,n.y=t.y+n.height/2}}),u(r.nodes(),function(e){r.node(e).dummy==="border"&&r.removeNode(e)})}s(Pn,"removeBorderNodes");function Ln(r){u(r.edges(),function(e){if(e.v===e.w){var n=r.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e,label:r.edge(e)}),r.removeEdge(e)}})}s(Ln,"removeSelfEdges");function Cn(r){var e=C(r);u(e,function(n){var t=0;u(n,function(o,a){var i=r.node(o);i.order=a+t,u(i.selfEdges,function(f){g(r,"selfedge",{width:f.label.width,height:f.label.height,rank:i.rank,order:a+ ++t,e:f.e,label:f.label},"_se")}),delete i.selfEdges})})}s(Cn,"insertSelfEdges");function jn(r){u(r.nodes(),function(e){var n=r.node(e);if(n.dummy==="selfedge"){var t=r.node(n.e.v),o=t.x+t.width/2,a=t.y,i=n.x-o,f=t.height/2;r.setEdge(n.e,n.label),r.removeNode(e),n.label.points=[{x:o+2*i/3,y:a-f},{x:o+5*i/6,y:a-f},{x:o+i,y:a},{x:o+5*i/6,y:a+f},{x:o+2*i/3,y:a+f}],n.label.x=n.x,n.label.y=n.y}})}s(jn,"positionSelfEdges");function lr(r,e){return G(B(r,e),Number)}s(lr,"selectNumberAttrs");function pr(r){var e={};return u(r,function(n,t){e[t.toLowerCase()]=n}),e}s(pr,"canonicalize");export{fn as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-3YCYZ6SJ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-KRXBNO2N.mjs.map similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-3YCYZ6SJ.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-KRXBNO2N.mjs.map index d89a0d0..9ce416b 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-3YCYZ6SJ.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-KRXBNO2N.mjs.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/util.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/add-border-segments.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/coordinate-system.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/data/list.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/greedy-fas.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/acyclic.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/normalize.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/rank/util.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/graphlib/alg/topsort.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/graphlib/alg/dfs.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/graphlib/alg/postorder.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/graphlib/alg/preorder.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/rank/index.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/nesting-graph.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/cross-count.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/init-order.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/barycenter.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/sort.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/order/index.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/position/bk.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/position/index.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/dagre/layout.js"], "sourcesContent": ["import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\n\nexport {\n addDummyNode,\n simplify,\n asNonCompoundGraph,\n successorWeights,\n predecessorWeights,\n intersectRect,\n buildLayerMatrix,\n normalizeRanks,\n removeEmptyRanks,\n addBorderNode,\n maxRank,\n partition,\n time,\n notime,\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function (v) {\n simplified.setNode(v, g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen),\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function (v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function (e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function (v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function (e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function (v) {\n var preds = {};\n _.forEach(g.inEdges(v), function (e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error('Not possible to find intersection inside of the rectangle');\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function () {\n return [];\n });\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(\n _.map(g.nodes(), function (v) {\n return g.node(v).rank;\n }),\n );\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (_.has(node, 'rank')) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(\n _.map(g.nodes(), function (v) {\n return g.node(v).rank;\n }),\n );\n\n var layers = [];\n _.forEach(g.nodes(), function (v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function (vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function (v) {\n g.node(v).rank += delta;\n });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0,\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, 'border', node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(\n _.map(g.nodes(), function (v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }),\n );\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function (value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + ' time: ' + (_.now() - start) + 'ms');\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n", "import * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { addBorderSegments };\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (Object.prototype.hasOwnProperty.call(node, 'minRank')) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1; rank < maxRank; ++rank) {\n addBorderNode(g, 'borderLeft', '_bl', v, node, rank);\n addBorderNode(g, 'borderRight', '_br', v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, 'border', label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n", "import * as _ from 'lodash-es';\n\nexport { adjust, undo };\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === 'lr' || rankDir === 'rl') {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === 'bt' || rankDir === 'rl') {\n reverseY(g);\n }\n\n if (rankDir === 'lr' || rankDir === 'rl') {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function (v) {\n swapWidthHeightOne(g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n swapWidthHeightOne(g.edge(e));\n });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function (v) {\n reverseYOne(g.node(v));\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (Object.prototype.hasOwnProperty.call(edge, 'y')) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function (v) {\n swapXYOne(g.node(v));\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (Object.prototype.hasOwnProperty.call(edge, 'x')) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n", "/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nexport { List };\n\nclass List {\n constructor() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n }\n dequeue() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n }\n enqueue(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n }\n toString() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return '[' + strs.join(', ') + ']';\n }\n}\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== '_next' && k !== '_prev') {\n return v;\n }\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\nimport { List } from './data/list.js';\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nexport { greedyFAS };\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(\n _.map(results, function (e) {\n return g.outEdges(e.v, e.w);\n }),\n );\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n while ((entry = sources.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function (edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function (edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry['in'] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function (v) {\n fasGraph.setNode(v, { v: v, in: 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function (e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, (fasGraph.node(e.v).out += weight));\n maxIn = Math.max(maxIn, (fasGraph.node(e.w)['in'] += weight));\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function () {\n return new List();\n });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function (v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry['in']) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry['in'] + zeroIdx].enqueue(entry);\n }\n}\n", "import * as _ from 'lodash-es';\nimport { greedyFAS } from './greedy-fas.js';\n\nexport { run, undo };\n\nfunction run(g) {\n var fas = g.graph().acyclicer === 'greedy' ? greedyFAS(g, weightFn(g)) : dfsFAS(g);\n _.forEach(fas, function (e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId('rev'));\n });\n\n function weightFn(g) {\n return function (e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (Object.prototype.hasOwnProperty.call(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function (e) {\n if (Object.prototype.hasOwnProperty.call(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function (e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n", "/**\n * TypeScript type imports:\n *\n * @import { Graph } from '../graphlib/graph.js';\n */\nimport * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { run, undo };\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function (edge) {\n normalizeEdge(g, edge);\n });\n}\n\n/**\n * @param {Graph} g\n */\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n /**\n * @typedef {Object} Attrs\n * @property {number} width\n * @property {number} height\n * @property {ReturnType} edgeLabel\n * @property {any} edgeObj\n * @property {ReturnType[\"rank\"]} rank\n * @property {string} [dummy]\n * @property {ReturnType[\"labelpos\"]} [labelpos]\n */\n\n /** @type {Attrs | undefined} */\n var attrs = undefined;\n var dummy, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0,\n height: 0,\n edgeLabel: edgeLabel,\n edgeObj: e,\n rank: vRank,\n };\n dummy = util.addDummyNode(g, 'edge', attrs, '_d');\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = 'edge-label';\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function (v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === 'edge-label') {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { longestPath, slack };\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (Object.prototype.hasOwnProperty.call(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(\n _.map(g.outEdges(v), function (e) {\n return dfs(e.w) - g.edge(e).minlen;\n }),\n );\n\n if (\n rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null\n ) {\n // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport { slack } from './util.js';\n\nexport { feasibleTree };\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function (e) {\n var edgeV = e.v,\n w = v === edgeV ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function (e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function (v) {\n g.node(v).rank += delta;\n });\n}\n", "import * as _ from 'lodash-es';\nimport { PriorityQueue } from '../data/priority-queue.js';\n\n/**\n * @import { EdgeObj, Graph, NodeID } from '../graph.js';\n */\n\nexport { dijkstra };\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\n/**\n * @typedef {Object} PathEntry\n * @property {number} distance The sum of the weights from `source` to `v`\n * along the shortest path or `Number.POSITIVE_INFINITY` if there is no path\n * from `source`.\n * @property {NodeID} [predecessor] Can be used to walk the individual\n * elements of the path from `source` to `v` in reverse order.\n */\n\n/**\n * This function is an implementation of [Dijkstra's algorithm][] which finds\n * the shortest path from `source` to all other nodes in `g`. This\n * function returns\n *\n * [Dijkstra's algorithm]: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm\n *\n * @example\n *\n * ![](https://github.com/dagrejs/graphlib/wiki/images/dijkstra-source.png)\n * \n *\n * ```js\n * function weight(e) { return g.edge(e); }\n *\n * graphlib.alg.dijkstra(g, \"A\", weight);\n * // => { A: { distance: 0 },\n * // B: { distance: 6, predecessor: 'C' },\n * // C: { distance: 4, predecessor: 'A' },\n * // D: { distance: 2, predecessor: 'A' },\n * // E: { distance: 8, predecessor: 'F' },\n * // F: { distance: 4, predecessor: 'D' } }\n * ```\n *\n * @remarks It takes `O((|E| + |V|) * log |V|)` time.\n *\n * @param {Graph} g - Input graph.\n * @param {NodeID | number} source - The source node id. Converted to a string.\n * @param {(e: EdgeObj) => number} [weightFn] - Optional function that returns\n * the weight for edge `e`. If no `weightFn` is supplied then each edge is\n * assumed to have a weight of 1.\n * @param {(v: NodeID) => EdgeObj[]} [edgeFn] - Optional function that returns\n * the ids of all edges incident to the node `v` for the purposes of shortest\n * path traversal.\n * By default this function uses the {@link Graph.outEdges} function on the\n * supplied graph.\n * @returns {Record} a map of `v -> { distance, predecessor }`.\n * @throws {Error} If any of the traversed edges has a negative edge weight.\n */\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(\n g,\n String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn ||\n function (v) {\n return g.outEdges(v);\n },\n );\n}\n\n/**\n * @param {Graph} g - Input graph.\n * @param {NodeID} source - The source node id.\n * @param {(e: EdgeObj) => number} weightFn - Required weight function.\n * @param {(v: NodeID) => EdgeObj[]} edgeFn - Required edge function.\n */\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n /** @type {Record} */\n var results = {};\n var pq = new PriorityQueue();\n /** @type {NodeID} */\n var v;\n /** @type {PathEntry} */\n var vEntry;\n\n /** @param {EdgeObj} edge */\n var updateNeighbors = function (edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\n 'dijkstra does not allow negative edge weights. ' +\n 'Bad edge: ' +\n edge +\n ' Weight: ' +\n weight,\n );\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function (v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n", "import * as _ from 'lodash-es';\n\n/**\n * @import { Graph, EdgeObj, NodeID } from '../graph.js';\n * @import { PathEntry } from './dijkstra.js';\n */\n\nexport { floydWarshall };\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\n/**\n * This function is an implementation of the [Floyd-Warshall algorithm][],\n * which finds the shortest path from each node to every other reachable node\n * in the graph. It is similar to {@link dijkstraAll}, but\n * it handles negative edge weights and is more efficient for some types of\n * graphs.\n *\n * [Floyd-Warshall algorithm]: https://en.wikipedia.org/wiki/Floyd-Warshall_algorithm\n *\n * @remarks This algorithm takes `O(|V|^3)` time.\n *\n * @example\n *\n * ![](https://github.com/dagrejs/graphlib/wiki/images/dijkstra-source.png)\n *\n * ```js\n * function weight(e) { return g.edge(e); }\n *\n * graphlib.alg.floydWarshall(g, function(e) { return g.edge(e); });\n *\n * // => { A:\n * // { A: { distance: 0 },\n * // B: { distance: 6, predecessor: 'C' },\n * // C: { distance: 4, predecessor: 'A' },\n * // D: { distance: 2, predecessor: 'A' },\n * // E: { distance: 8, predecessor: 'F' },\n * // F: { distance: 4, predecessor: 'D' } },\n * // B:\n * // { A: { distance: Infinity },\n * // B: { distance: 0 },\n * // C: { distance: Infinity },\n * // D: { distance: Infinity },\n * // E: { distance: 6, predecessor: 'B' },\n * // F: { distance: Infinity } },\n * // C: { ... },\n * // D: { ... },\n * // E: { ... },\n * // F: { ... } }\n * ```\n *\n * @param {Graph} g - The graph to analyze.\n * @param {(e: EdgeObj) => number} [weightFn] - Optional function that returns\n * the weight for edge `e`. If no `weightFn` is supplied then each edge is\n * assumed to have a weight of 1.\n * @param {(v: NodeID) => EdgeObj[]} [edgeFn] - Optional function that returns\n * the ids of all edges incident to the node `v` for the purposes of shortest\n * path traversal.\n * By default this function uses the {@link Graph.outEdges} function on the\n * supplied graph.\n * @returns {Record>} a map of\n * `source -> { target -> { distance, predecessor }`.\n */\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(\n g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn ||\n function (v) {\n return g.outEdges(v);\n },\n );\n}\n\n/**\n * @param {Graph} g - Input graph.\n * @param {(e: EdgeObj) => number} weightFn - Required weight function.\n * @param {(v: NodeID) => EdgeObj[]} edgeFn - Required edge function.\n */\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n /** @type {Record>} */\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function (v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function (w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function (edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function (k) {\n var rowK = results[k];\n nodes.forEach(function (i) {\n var rowI = results[i];\n nodes.forEach(function (j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n", "import * as _ from 'lodash-es';\n\n/**\n * @import { Graph, NodeID } from '../graph.js';\n */\n\nexport { topsort, CycleException };\n\ntopsort.CycleException = CycleException;\n\n/**\n * An implementation of [topological sorting](https://en.wikipedia.org/wiki/Topological_sorting).\n *\n * @remarks Takes `O(|V| + |E|)` time.\n *\n * @example\n *\n * ![](https://github.com/dagrejs/graphlib/wiki/images/topsort.png)\n *\n * ```js\n * graphlib.alg.topsort(g)\n * // [ '1', '2', '3', '4' ] or [ '1', '3', '2', '4' ]\n * ```\n *\n * @param {Graph} g - The graph to sort.\n * @returns {NodeID[]} an array of nodes\n * such that for each edge `u -> v`, `u` appears before `v` in the array.\n * @throws {CycleException} If the graph has a cycle so that it is impossible\n * to generate a topological sort.\n */\nfunction topsort(g) {\n /** @type {Record} */\n var visited = {};\n /** @type {Record} */\n var stack = {};\n /** @type {NodeID[]} */\n var results = [];\n\n /**\n * @param {NodeID} node - Node to recursively visit.\n */\n function visit(node) {\n if (Object.prototype.hasOwnProperty.call(stack, node)) {\n throw new CycleException();\n }\n\n if (!Object.prototype.hasOwnProperty.call(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\n/**\n * @class\n */\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing\n", "import * as _ from 'lodash-es';\n\n/**\n * @import { Graph, NodeID } from '../graph.js';\n */\n\nexport { dfs };\n\n/**\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * @param {Graph} g - Input graph.\n * @param {NodeID[] | NodeID} vs - Starting node or array of nodes.\n * @param {'post' | 'pre'} order - The order to use. Must be one of \"pre\" or \"post\".\n * @returns {NodeID[]} The nodes in the order they were visited.\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n /** @type {Parameters[4]} */\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n /** @type {Parameters[5]} */\n var acc = [];\n /** @type {Parameters[3]} */\n var visited = {};\n _.each(vs, function (v) {\n if (!g.hasNode(v)) {\n throw new Error('Graph does not have node: ' + v);\n }\n\n doDfs(g, v, order === 'post', visited, navigation, acc);\n });\n return acc;\n}\n\n/**\n * @param {Graph} g - Input graph.\n * @param {NodeID} v - The node to visit.\n * @param {boolean} postorder - Whether to do postorder traversal.\n * @param {Record} visited - Visited nodes.\n * @param {(node: NodeID) => (NodeID[] | undefined)} navigation - Function to get\n * neighbors/successors.\n * @param {NodeID[]} acc - Accumulator for visited nodes.\n */\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!Object.prototype.hasOwnProperty.call(visited, v)) {\n visited[v] = true;\n\n if (!postorder) {\n acc.push(v);\n }\n _.each(navigation(v), function (w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) {\n acc.push(v);\n }\n }\n}\n", "import { dfs } from './dfs.js';\n\nexport { postorder };\n\n/**\n * This function performs a [postorder traversal][] of the graph `g` starting\n * at the nodes `vs`. For each node visited, `v`, the function `callback(v)`\n * is called.\n *\n * [postorder traversal]: https://en.wikipedia.org/wiki/Tree_traversal#Depth-first\n *\n * @example\n *\n * ![](https://github.com/dagrejs/graphlib/wiki/images/preorder.png)\n *\n * ```js\n * graphlib.alg.postorder(g, \"A\");\n * // => One of:\n * // [ \"B\", \"D\", \"E\", C\", \"A\" ]\n * // [ \"B\", \"E\", \"D\", C\", \"A\" ]\n * // [ \"D\", \"E\", \"C\", B\", \"A\" ]\n * // [ \"E\", \"D\", \"C\", B\", \"A\" ]\n * ```\n *\n * @param {Parameters[0]} g - The graph to traverse.\n * @param {Parameters[1]} vs - Nodes to start the traversal from.\n * @returns {ReturnType} The nodes in the order they were visited.\n */\nfunction postorder(g, vs) {\n return dfs(g, vs, 'post');\n}\n", "import { dfs } from './dfs.js';\n\nexport { preorder };\n\n/**\n * This function performs a [preorder traversal][] of the graph `g` starting\n * at the nodes `vs`. For each node visited, `v`, the function `callback(v)`\n * is called.\n *\n * [preorder traversal]: https://en.wikipedia.org/wiki/Tree_traversal#Depth-first\n *\n * @example\n *\n * ![](https://github.com/dagrejs/graphlib/wiki/images/preorder.png)\n * \n *\n * ```js\n * graphlib.alg.preorder(g, \"A\");\n * // => One of:\n * // [ \"A\", \"B\", \"C\", \"D\", \"E\" ]\n * // [ \"A\", \"B\", \"C\", \"E\", \"D\" ]\n * // [ \"A\", \"C\", \"D\", \"E\", \"B\" ]\n * // [ \"A\", \"C\", \"E\", \"D\", \"B\" ]\n * ```\n *\n * @param {Parameters[0]} g - The graph to traverse.\n * @param {Parameters[1]} vs - Nodes to start the traversal from.\n * @returns {ReturnType} The nodes in the order they were visited.\n */\nfunction preorder(g, vs) {\n return dfs(g, vs, 'pre');\n}\n", "import * as _ from 'lodash-es';\nimport * as alg from '../../graphlib/alg/index.js';\nimport { simplify } from '../util.js';\nimport { feasibleTree } from './feasible-tree.js';\nimport { longestPath, slack } from './util.js';\n\nexport { networkSimplex };\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n longestPath(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = alg.postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function (v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function (e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function (w) {\n if (!Object.prototype.hasOwnProperty.call(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function (e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function (edge) {\n return (\n flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel)\n );\n });\n\n return _.minBy(candidates, function (edge) {\n return slack(g, edge);\n });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function (v) {\n return !g.node(v).parent;\n });\n var vs = alg.preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function (v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n", "import { feasibleTree } from './feasible-tree.js';\nimport { networkSimplex } from './network-simplex.js';\nimport { longestPath } from './util.js';\n\nexport { rank };\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch (g.graph().ranker) {\n case 'network-simplex':\n networkSimplexRanker(g);\n break;\n case 'tight-tree':\n tightTreeRanker(g);\n break;\n case 'longest-path':\n longestPathRanker(g);\n break;\n default:\n networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n", "import * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { run, cleanup };\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, 'root', {}, '_root');\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function (e) {\n g.edge(e).minlen *= nodeSep;\n });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function (child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, '_bt');\n var bottom = util.addBorderNode(g, '_bb');\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function (child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true,\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true,\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function (child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function (v) {\n dfs(v, 1);\n });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(\n g.edges(),\n function (acc, e) {\n return acc + g.edge(e).weight;\n },\n 0,\n );\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { addSubgraphConstraints };\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function (v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\n\nexport { buildLayerGraph };\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true })\n .setGraph({ root: root })\n .setDefaultNodeLabel(function (v) {\n return g.node(v);\n });\n\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || (node.minRank <= rank && rank <= node.maxRank)) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function (e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (Object.prototype.hasOwnProperty.call(node, 'minRank')) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank],\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId('_root'))));\n return v;\n}\n", "import * as _ from 'lodash-es';\n\nexport { crossCount };\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(\n southLayer,\n _.map(southLayer, function (v, i) {\n return i;\n }),\n );\n var southEntries = _.flatten(\n _.map(northLayer, function (v) {\n return _.sortBy(\n _.map(g.outEdges(v), function (e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }),\n 'pos',\n );\n }),\n );\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function () {\n return 0;\n });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(\n // @ts-expect-error\n southEntries.forEach(function (entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }),\n );\n\n return cc;\n}\n", "import * as _ from 'lodash-es';\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nexport function initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function (v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(\n _.map(simpleNodes, function (v) {\n return g.node(v).rank;\n }),\n );\n var layers = _.map(_.range(maxRank + 1), function () {\n return [];\n });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function (v) {\n return g.node(v).rank;\n });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n", "import * as _ from 'lodash-es';\n\nexport { barycenter };\n\nfunction barycenter(g, movable) {\n return _.map(movable, function (v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(\n inV,\n function (acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + edge.weight * nodeU.order,\n weight: acc.weight + edge.weight,\n };\n },\n { sum: 0, weight: 0 },\n );\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight,\n };\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { resolveConflicts };\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function (entry, i) {\n var tmp = (mappedEntries[entry.v] = {\n indegree: 0,\n in: [],\n out: [],\n vs: [entry.v],\n i: i,\n });\n if (!_.isUndefined(entry.barycenter)) {\n // @ts-expect-error\n tmp.barycenter = entry.barycenter;\n // @ts-expect-error\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function (e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function (entry) {\n // @ts-expect-error\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function (uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (\n _.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter\n ) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function (wEntry) {\n wEntry['in'].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry['in'].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(\n _.filter(entries, function (entry) {\n return !entry.merged;\n }),\n function (entry) {\n return _.pick(entry, ['vs', 'i', 'barycenter', 'weight']);\n },\n );\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n", "import * as _ from 'lodash-es';\nimport * as util from '../util.js';\n\nexport { sort };\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function (entry) {\n return Object.prototype.hasOwnProperty.call(entry, 'barycenter');\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function (entry) {\n return -entry.i;\n }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function (entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n", "import * as _ from 'lodash-es';\nimport { barycenter } from './barycenter.js';\nimport { resolveConflicts } from './resolve-conflicts.js';\nimport { sort } from './sort.js';\n\nexport { sortSubgraph };\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight : undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function (w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function (entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (Object.prototype.hasOwnProperty.call(subgraphResult, 'barycenter')) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br]);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!Object.prototype.hasOwnProperty.call(result, 'barycenter')) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter =\n (result.barycenter * result.weight + blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function (entry) {\n entry.vs = _.flatten(\n entry.vs.map(function (v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }),\n );\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter =\n (target.barycenter * target.weight + other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport * as util from '../util.js';\nimport { addSubgraphConstraints } from './add-subgraph-constraints.js';\nimport { buildLayerGraph } from './build-layer-graph.js';\nimport { crossCount } from './cross-count.js';\nimport { initOrder } from './init-order.js';\nimport { sortSubgraph } from './sort-subgraph.js';\n\nexport { order };\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), 'inEdges'),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), 'outEdges');\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function (rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function (lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function (v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function (layer) {\n _.forEach(layer, function (v, i) {\n g.node(v).order = i;\n });\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { parentDummyChains };\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function (v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca && g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (\n pathIdx < path.length - 1 &&\n g.node((pathV = path[pathIdx + 1])).minRank <= node.rank\n ) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent && (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport * as util from '../util.js';\n\n/*\n * This module provides coordinate assignment based on Brandes and K\u00F6pf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nexport {\n positionX,\n findType1Conflicts,\n findType2Conflicts,\n addConflict,\n hasConflict,\n verticalAlignment,\n horizontalCompaction,\n alignCoordinates,\n findSmallestWidthAlignment,\n balance,\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n /** @type {{[nodeId: string | number]: {[nodeId: string | number]: true}}} */\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function (v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i + 1), function (scanNode) {\n _.forEach(g.predecessors(scanNode), function (u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) && !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n // @ts-expect-error\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n /** @type {{[nodeId: string | number]: {[nodeId: string | number]: true}}} */\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function (i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function (u) {\n var uNode = g.node(u);\n if (uNode.dummy && (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function (v, southLookahead) {\n if (g.node(v).dummy === 'border') {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n // @ts-expect-error\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function (u) {\n return g.node(u).dummy;\n });\n }\n}\n\n/**\n * Sets `conflicts[v][w] = true`, creating objects if needed.\n *\n * @param {{[nodeId: string | number]: {[nodeId: string | number]: true}}} conflicts - Object to set.\n * @param {string | number} v - First Node ID\n * @param {string | number} w - Second Node ID\n */\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n if (!Object.prototype.hasOwnProperty.call(conflicts, v)) {\n // can't use conflicts[v] = {} since it's unsafe if v = `__proto__`\n Object.defineProperty(conflicts, v, {\n enumerable: true,\n configurable: true,\n value: {},\n writable: true,\n });\n }\n var conflictsV = conflicts[v];\n Object.defineProperty(conflictsV, w, {\n enumerable: true,\n configurable: true,\n value: true,\n writable: true,\n });\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return !!conflicts[v] && Object.prototype.hasOwnProperty.call(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function (layer) {\n _.forEach(layer, function (v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function (layer) {\n var prevIdx = -1;\n _.forEach(layer, function (v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function (w) {\n return pos[w];\n });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v && prevIdx < pos[w] && !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n /** @type {Record} */\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? 'borderLeft' : 'borderRight';\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function (acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function (acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function (v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function (layer) {\n var u;\n _.forEach(layer, function (v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach(['u', 'd'], function (vert) {\n _.forEach(['l', 'r'], function (horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === 'l' ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function (x) {\n return x + delta;\n });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function (ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(findType1Conflicts(g, layering), findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach(['u', 'd'], function (vert) {\n adjustedLayering = vert === 'u' ? layering : _.values(layering).reverse();\n _.forEach(['l', 'r'], function (horiz) {\n if (horiz === 'r') {\n adjustedLayering = _.map(adjustedLayering, function (inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === 'u' ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, horiz === 'r');\n if (horiz === 'r') {\n xs = _.mapValues(xs, function (x) {\n return -x;\n });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function (g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (Object.prototype.hasOwnProperty.call(vLabel, 'labelpos')) {\n switch (vLabel.labelpos.toLowerCase()) {\n case 'l':\n delta = -vLabel.width / 2;\n break;\n case 'r':\n delta = vLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (Object.prototype.hasOwnProperty.call(wLabel, 'labelpos')) {\n switch (wLabel.labelpos.toLowerCase()) {\n case 'l':\n delta = wLabel.width / 2;\n break;\n case 'r':\n delta = -wLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n", "import * as _ from 'lodash-es';\nimport * as util from '../util.js';\nimport { positionX } from './bk.js';\n\nexport { position };\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forOwn(positionX(g), function (x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function (layer) {\n var maxHeight = _.max(\n _.map(layer, function (v) {\n return g.node(v).height;\n }),\n );\n _.forEach(layer, function (v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\nimport { addBorderSegments } from './add-border-segments.js';\nimport * as coordinateSystem from './coordinate-system.js';\nimport * as acyclic from './acyclic.js';\nimport * as normalize from './normalize.js';\nimport { rank } from './rank/index.js';\nimport * as nestingGraph from './nesting-graph.js';\nimport { order } from './order/index.js';\nimport { parentDummyChains } from './parent-dummy-chains.js';\nimport { position } from './position/index.js';\nimport * as util from './util.js';\n\nexport { layout };\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time('layout', () => {\n var layoutGraph = time(' buildLayoutGraph', () => buildLayoutGraph(g));\n time(' runLayout', () => runLayout(layoutGraph, time));\n time(' updateInputGraph', () => updateInputGraph(g, layoutGraph));\n });\n}\n\nfunction runLayout(g, time) {\n time(' makeSpaceForEdgeLabels', () => makeSpaceForEdgeLabels(g));\n time(' removeSelfEdges', () => removeSelfEdges(g));\n time(' acyclic', () => acyclic.run(g));\n time(' nestingGraph.run', () => nestingGraph.run(g));\n time(' rank', () => rank(util.asNonCompoundGraph(g)));\n time(' injectEdgeLabelProxies', () => injectEdgeLabelProxies(g));\n time(' removeEmptyRanks', () => util.removeEmptyRanks(g));\n time(' nestingGraph.cleanup', () => nestingGraph.cleanup(g));\n time(' normalizeRanks', () => util.normalizeRanks(g));\n time(' assignRankMinMax', () => assignRankMinMax(g));\n time(' removeEdgeLabelProxies', () => removeEdgeLabelProxies(g));\n time(' normalize.run', () => normalize.run(g));\n time(' parentDummyChains', () => parentDummyChains(g));\n time(' addBorderSegments', () => addBorderSegments(g));\n time(' order', () => order(g));\n time(' insertSelfEdges', () => insertSelfEdges(g));\n time(' adjustCoordinateSystem', () => coordinateSystem.adjust(g));\n time(' position', () => position(g));\n time(' positionSelfEdges', () => positionSelfEdges(g));\n time(' removeBorderNodes', () => removeBorderNodes(g));\n time(' normalize.undo', () => normalize.undo(g));\n time(' fixupEdgeLabelCoords', () => fixupEdgeLabelCoords(g));\n time(' undoCoordinateSystem', () => coordinateSystem.undo(g));\n time(' translateGraph', () => translateGraph(g));\n time(' assignNodeIntersects', () => assignNodeIntersects(g));\n time(' reversePoints', () => reversePointsForReversedEdges(g));\n time(' acyclic.undo', () => acyclic.undo(g));\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function (v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function (e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (Object.prototype.hasOwnProperty.call(layoutLabel, 'x')) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = ['nodesep', 'edgesep', 'ranksep', 'marginx', 'marginy'];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: 'tb' };\nvar graphAttrs = ['acyclicer', 'ranker', 'rankdir', 'align'];\nvar nodeNumAttrs = ['width', 'height'];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset'];\nvar edgeDefaults = {\n minlen: 1,\n weight: 1,\n width: 0,\n height: 0,\n labeloffset: 10,\n labelpos: 'r',\n};\nvar edgeAttrs = ['labelpos'];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(\n _.merge({}, graphDefaults, selectNumberAttrs(graph, graphNumAttrs), _.pick(graph, graphAttrs)),\n );\n\n _.forEach(inputGraph.nodes(), function (v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function (e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(\n e,\n _.merge({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), _.pick(edge, edgeAttrs)),\n );\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== 'c') {\n if (graph.rankdir === 'TB' || graph.rankdir === 'BT') {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, 'edge-proxy', label, '_ep');\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n // @ts-expect-error\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.dummy === 'edge-proxy') {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function (v) {\n getExtremes(g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (Object.prototype.hasOwnProperty.call(edge, 'x')) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function (p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (Object.prototype.hasOwnProperty.call(edge, 'x')) {\n edge.x -= minX;\n }\n if (Object.prototype.hasOwnProperty.call(edge, 'y')) {\n edge.y -= minY;\n }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (Object.prototype.hasOwnProperty.call(edge, 'x')) {\n if (edge.labelpos === 'l' || edge.labelpos === 'r') {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case 'l':\n edge.x -= edge.width / 2 + edge.labeloffset;\n break;\n case 'r':\n edge.x += edge.width / 2 + edge.labeloffset;\n break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function (v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function (v) {\n if (g.node(v).dummy === 'border') {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function (e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function (layer) {\n var orderShift = 0;\n _.forEach(layer, function (v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function (selfEdge) {\n util.addDummyNode(\n g,\n 'selfedge',\n {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + ++orderShift,\n e: selfEdge.e,\n label: selfEdge.label,\n },\n '_se',\n );\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.dummy === 'selfedge') {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + (2 * dx) / 3, y: y - dy },\n { x: x + (5 * dx) / 6, y: y - dy },\n { x: x + dx, y: y },\n { x: x + (5 * dx) / 6, y: y + dy },\n { x: x + (2 * dx) / 3, y: y + dy },\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function (v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n"], - "mappings": "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", + "mappings": "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", "names": ["addDummyNode", "g", "type", "attrs", "name", "v", "uniqueId_default", "__name", "simplify", "simplified", "Graph", "forEach_default", "e", "simpleLabel", "label", "asNonCompoundGraph", "intersectRect", "rect", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "__name", "buildLayerMatrix", "g", "layering", "map_default", "range_default", "maxRank", "forEach_default", "v", "node", "rank", "isUndefined_default", "normalizeRanks", "min", "min_default", "has_default", "removeEmptyRanks", "offset", "layers", "delta", "nodeRankFactor", "vs", "addBorderNode", "prefix", "order", "addDummyNode", "max_default", "partition", "collection", "fn", "result", "value", "time", "name", "start", "now_default", "notime", "addBorderSegments", "g", "dfs", "v", "children", "node", "forEach_default", "rank", "maxRank", "addBorderNode", "__name", "prop", "prefix", "sg", "sgNode", "label", "prev", "curr", "addDummyNode", "adjust", "g", "rankDir", "swapWidthHeight", "__name", "undo", "reverseY", "swapXY", "forEach_default", "v", "swapWidthHeightOne", "attrs", "w", "reverseYOne", "edge", "swapXYOne", "x", "List", "__name", "sentinel", "entry", "unlink", "strs", "curr", "filterOutLinks", "k", "v", "DEFAULT_WEIGHT_FN", "constant_default", "greedyFAS", "g", "weightFn", "state", "buildState", "results", "doGreedyFAS", "flatten_default", "map_default", "e", "__name", "buckets", "zeroIdx", "sources", "sinks", "entry", "removeNode", "i", "collectPredecessors", "forEach_default", "edge", "weight", "uEntry", "assignBucket", "w", "wEntry", "fasGraph", "Graph", "maxIn", "maxOut", "v", "prevWeight", "edgeWeight", "range_default", "List", "run", "g", "fas", "greedyFAS", "weightFn", "dfsFAS", "forEach_default", "e", "label", "uniqueId_default", "__name", "stack", "visited", "dfs", "v", "undo", "forwardName", "run", "g", "forEach_default", "edge", "normalizeEdge", "__name", "v", "vRank", "w", "wRank", "name", "edgeLabel", "labelRank", "attrs", "dummy", "i", "addDummyNode", "undo", "node", "origLabel", "longestPath", "g", "visited", "dfs", "v", "label", "rank", "min_default", "map_default", "e", "__name", "forEach_default", "slack", "feasibleTree", "g", "t", "Graph", "start", "size", "edge", "delta", "tightTree", "findMinSlackEdge", "slack", "shiftRanks", "__name", "dfs", "v", "forEach_default", "e", "edgeV", "w", "minBy_default", "DEFAULT_WEIGHT_FUNC", "constant_default", "DEFAULT_WEIGHT_FUNC", "constant_default", "topsort", "CycleException", "g", "visited", "stack", "results", "visit", "node", "forEach_default", "__name", "size_default", "dfs", "g", "vs", "order", "isArray_default", "navigation", "acc", "visited", "forEach_default", "v", "doDfs", "__name", "postorder", "w", "postorder", "g", "vs", "dfs", "__name", "preorder", "g", "vs", "dfs", "__name", "networkSimplex", "initLowLimValues", "initCutValues", "calcCutValue", "leaveEdge", "enterEdge", "exchangeEdges", "g", "simplify", "longestPath", "t", "feasibleTree", "e", "f", "__name", "vs", "postorder", "forEach_default", "v", "assignCutValue", "child", "childLab", "parent", "childIsTail", "graphEdge", "cutValue", "isOutEdge", "other", "pointsToHead", "otherWeight", "isTreeEdge", "otherCutValue", "tree", "root", "dfsAssignLowLim", "visited", "nextLim", "low", "label", "w", "find_default", "edge", "vLabel", "wLabel", "tailLabel", "flip", "candidates", "filter_default", "isDescendant", "minBy_default", "slack", "updateRanks", "preorder", "flipped", "u", "rootLabel", "rank", "g", "networkSimplexRanker", "tightTreeRanker", "longestPathRanker", "__name", "longestPath", "feasibleTree", "networkSimplex", "run", "g", "root", "addDummyNode", "depths", "treeDepths", "height", "max_default", "values_default", "nodeSep", "forEach_default", "e", "weight", "sumWeights", "child", "dfs", "__name", "v", "children", "top", "addBorderNode", "bottom", "label", "childNode", "childTop", "childBottom", "thisWeight", "minlen", "depth", "reduce_default", "acc", "cleanup", "graphLabel", "edge", "addSubgraphConstraints", "g", "cg", "vs", "prev", "rootPrev", "forEach_default", "v", "child", "parent", "prevChild", "__name", "buildLayerGraph", "g", "rank", "relationship", "root", "createRootNode", "result", "Graph", "v", "forEach_default", "node", "parent", "e", "u", "edge", "weight", "isUndefined_default", "__name", "uniqueId_default", "crossCount", "g", "layering", "cc", "i", "twoLayerCrossCount", "__name", "northLayer", "southLayer", "southPos", "zipObject_default", "map_default", "v", "southEntries", "flatten_default", "sortBy_default", "e", "firstIndex", "treeSize", "tree", "forEach_default", "entry", "index", "weightSum", "initOrder", "g", "visited", "simpleNodes", "filter_default", "v", "maxRank", "max_default", "map_default", "layers", "range_default", "dfs", "has_default", "node", "forEach_default", "__name", "orderedVs", "sortBy_default", "barycenter", "g", "movable", "map_default", "v", "inV", "result", "reduce_default", "acc", "e", "edge", "nodeU", "__name", "resolveConflicts", "entries", "cg", "mappedEntries", "forEach_default", "entry", "i", "tmp", "isUndefined_default", "e", "entryV", "entryW", "sourceSet", "filter_default", "doResolveConflicts", "__name", "handleIn", "vEntry", "uEntry", "mergeEntries", "handleOut", "wEntry", "map_default", "pick_default", "target", "source", "sum", "weight", "sort", "entries", "biasRight", "parts", "partition", "entry", "sortable", "unsortable", "sortBy_default", "vs", "sum", "weight", "vsIndex", "compareWithBias", "consumeUnsortable", "forEach_default", "result", "flatten_default", "__name", "index", "last", "last_default", "bias", "entryV", "entryW", "sortSubgraph", "g", "v", "cg", "biasRight", "movable", "node", "bl", "br", "subgraphs", "filter_default", "w", "barycenters", "barycenter", "forEach_default", "entry", "subgraphResult", "mergeBarycenters", "entries", "resolveConflicts", "expandSubgraphs", "result", "sort", "flatten_default", "blPred", "brPred", "__name", "target", "other", "isUndefined_default", "order", "g", "maxRank", "downLayerGraphs", "buildLayerGraphs", "range_default", "upLayerGraphs", "layering", "initOrder", "assignOrder", "bestCC", "best", "i", "lastBest", "sweepLayerGraphs", "buildLayerMatrix", "cc", "crossCount", "cloneDeep_default", "__name", "ranks", "relationship", "map_default", "rank", "buildLayerGraph", "layerGraphs", "biasRight", "cg", "Graph", "forEach_default", "lg", "root", "sorted", "sortSubgraph", "v", "addSubgraphConstraints", "layer", "parentDummyChains", "g", "postorderNums", "postorder", "forEach_default", "v", "node", "edgeObj", "pathData", "findPath", "path", "lca", "pathIdx", "pathV", "ascending", "__name", "w", "vPath", "wPath", "low", "lim", "parent", "result", "dfs", "findType1Conflicts", "g", "layering", "conflicts", "visitLayer", "prevLayer", "layer", "k0", "scanPos", "prevLayerLength", "lastNode", "last_default", "forEach_default", "v", "i", "w", "findOtherInnerSegmentNode", "k1", "scanNode", "u", "uLabel", "uPos", "addConflict", "__name", "reduce_default", "findType2Conflicts", "scan", "south", "southPos", "southEnd", "prevNorthBorder", "nextNorthBorder", "range_default", "uNode", "north", "prevNorthPos", "nextNorthPos", "southLookahead", "predecessors", "find_default", "tmp", "conflictsV", "hasConflict", "verticalAlignment", "neighborFn", "root", "align", "pos", "order", "prevIdx", "ws", "sortBy_default", "mp", "il", "horizontalCompaction", "reverseSep", "xs", "blockG", "buildBlockGraph", "borderType", "iterate", "setXsFunc", "nextNodesFunc", "stack", "elem", "visited", "pass1", "acc", "e", "pass2", "min", "node", "blockGraph", "Graph", "graphLabel", "sepFn", "sep", "vRoot", "uRoot", "prevMax", "findSmallestWidthAlignment", "xss", "minBy_default", "values_default", "max", "forIn_default", "x", "halfWidth", "width", "alignCoordinates", "alignTo", "alignToVals", "alignToMin", "min_default", "alignToMax", "max_default", "vert", "horiz", "alignment", "delta", "xsVals", "mapValues_default", "balance", "ignore", "map_default", "positionX", "buildLayerMatrix", "merge_default", "adjustedLayering", "inner", "smallestWidth", "nodeSep", "edgeSep", "vLabel", "wLabel", "sum", "position", "g", "asNonCompoundGraph", "positionY", "forOwn_default", "positionX", "x", "v", "__name", "layering", "buildLayerMatrix", "rankSep", "prevY", "forEach_default", "layer", "maxHeight", "max_default", "map_default", "layout", "g", "opts", "time", "notime", "layoutGraph", "buildLayoutGraph", "runLayout", "updateInputGraph", "__name", "makeSpaceForEdgeLabels", "removeSelfEdges", "run", "rank", "asNonCompoundGraph", "injectEdgeLabelProxies", "removeEmptyRanks", "cleanup", "normalizeRanks", "assignRankMinMax", "removeEdgeLabelProxies", "parentDummyChains", "addBorderSegments", "order", "insertSelfEdges", "adjust", "position", "positionSelfEdges", "removeBorderNodes", "undo", "fixupEdgeLabelCoords", "translateGraph", "assignNodeIntersects", "reversePointsForReversedEdges", "inputGraph", "forEach_default", "v", "inputLabel", "layoutLabel", "e", "graphNumAttrs", "graphDefaults", "graphAttrs", "nodeNumAttrs", "nodeDefaults", "edgeNumAttrs", "edgeDefaults", "edgeAttrs", "Graph", "graph", "canonicalize", "merge_default", "selectNumberAttrs", "pick_default", "node", "defaults_default", "edge", "w", "label", "addDummyNode", "maxRank", "max_default", "minX", "maxX", "minY", "maxY", "graphLabel", "marginX", "marginY", "getExtremes", "attrs", "x", "y", "h", "p", "nodeV", "nodeW", "p1", "p2", "intersectRect", "b", "l", "last_default", "r", "layers", "buildLayerMatrix", "layer", "orderShift", "i", "selfEdge", "selfNode", "dx", "dy", "obj", "mapValues_default", "newAttrs", "k"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-LCXTWHL2.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-LCXTWHL2.mjs new file mode 100644 index 0000000..4024110 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-LCXTWHL2.mjs @@ -0,0 +1,231 @@ +import{a as Qt}from"./chunk-6764PJDD.mjs";import{a as te}from"./chunk-ZXARS5L4.mjs";import{b as Zt}from"./chunk-VU6ZFW4Y.mjs";import{g as Jt,p as qt}from"./chunk-QA3QBVWF.mjs";import{G as Y,S as Ut,T as Ht,U as jt,V as Wt,W as zt,X as Kt,Y as Xt,_ as L}from"./chunk-67TQ5CYL.mjs";import{b as _}from"./chunk-7W6UQGC5.mjs";import{a as c}from"./chunk-AQ6EADP3.mjs";var Ct=(function(){var t=c(function(F,o,d,n){for(d=d||{},n=F.length;n--;d[F[n]]=o);return d},"o"),e=[1,2],s=[1,3],a=[1,4],r=[2,4],u=[1,9],S=[1,11],f=[1,16],p=[1,17],m=[1,18],E=[1,19],b=[1,33],I=[1,20],D=[1,21],h=[1,22],R=[1,23],x=[1,24],G=[1,26],N=[1,27],$=[1,28],v=[1,29],Z=[1,30],st=[1,31],it=[1,32],rt=[1,35],nt=[1,36],at=[1,37],ot=[1,38],K=[1,34],g=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],lt=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],Ft=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],Et={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:c(function(o,d,n,y,T,i,X){var l=i.length-1;switch(T){case 3:return y.setRootDoc(i[l]),i[l];break;case 4:this.$=[];break;case 5:i[l]!="nl"&&(i[l-1].push(i[l]),this.$=i[l-1]);break;case 6:case 7:this.$=i[l];break;case 8:this.$="nl";break;case 12:this.$=i[l];break;case 13:let ct=i[l-1];ct.description=y.trimColon(i[l]),this.$=ct;break;case 14:this.$={stmt:"relation",state1:i[l-2],state2:i[l]};break;case 15:let dt=y.trimColon(i[l]);this.$={stmt:"relation",state1:i[l-3],state2:i[l-1],description:dt};break;case 19:this.$={stmt:"state",id:i[l-3],type:"default",description:"",doc:i[l-1]};break;case 20:var P=i[l],M=i[l-2].trim();if(i[l].match(":")){var tt=i[l].split(":");P=tt[0],M=[M,tt[1]]}this.$={stmt:"state",id:P,type:"default",description:M};break;case 21:this.$={stmt:"state",id:i[l-3],type:"default",description:i[l-5],doc:i[l-1]};break;case 22:this.$={stmt:"state",id:i[l],type:"fork"};break;case 23:this.$={stmt:"state",id:i[l],type:"join"};break;case 24:this.$={stmt:"state",id:i[l],type:"choice"};break;case 25:this.$={stmt:"state",id:y.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:i[l-1].trim(),note:{position:i[l-2].trim(),text:i[l].trim()}};break;case 29:this.$=i[l].trim(),y.setAccTitle(this.$);break;case 30:case 31:this.$=i[l].trim(),y.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:i[l-3],url:i[l-2],tooltip:i[l-1]};break;case 33:this.$={stmt:"click",id:i[l-3],url:i[l-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:i[l-1].trim(),classes:i[l].trim()};break;case 36:this.$={stmt:"style",id:i[l-1].trim(),styleClass:i[l].trim()};break;case 37:this.$={stmt:"applyClass",id:i[l-1].trim(),styleClass:i[l].trim()};break;case 38:y.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:y.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:y.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:y.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:i[l].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:i[l-2].trim(),classes:[i[l].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:i[l-2].trim(),classes:[i[l].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:s,6:a},{1:[3]},{3:5,4:e,5:s,6:a},{3:6,4:e,5:s,6:a},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],r,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:u,5:S,8:8,9:10,10:12,11:13,12:14,13:15,16:f,17:p,19:m,22:E,24:b,25:I,26:D,27:h,28:R,29:x,32:25,33:G,35:N,37:$,38:v,41:Z,45:st,48:it,51:rt,52:nt,53:at,54:ot,57:K},t(g,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:f,17:p,19:m,22:E,24:b,25:I,26:D,27:h,28:R,29:x,32:25,33:G,35:N,37:$,38:v,41:Z,45:st,48:it,51:rt,52:nt,53:at,54:ot,57:K},t(g,[2,7]),t(g,[2,8]),t(g,[2,9]),t(g,[2,10]),t(g,[2,11]),t(g,[2,12],{14:[1,40],15:[1,41]}),t(g,[2,16]),{18:[1,42]},t(g,[2,18],{20:[1,43]}),{23:[1,44]},t(g,[2,22]),t(g,[2,23]),t(g,[2,24]),t(g,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(g,[2,28]),{34:[1,49]},{36:[1,50]},t(g,[2,31]),{13:51,24:b,57:K},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(lt,[2,44],{58:[1,56]}),t(lt,[2,45],{58:[1,57]}),t(g,[2,38]),t(g,[2,39]),t(g,[2,40]),t(g,[2,41]),t(g,[2,6]),t(g,[2,13]),{13:58,24:b,57:K},t(g,[2,17]),t(Ft,r,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(g,[2,29]),t(g,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(g,[2,14],{14:[1,71]}),{4:u,5:S,8:8,9:10,10:12,11:13,12:14,13:15,16:f,17:p,19:m,21:[1,72],22:E,24:b,25:I,26:D,27:h,28:R,29:x,32:25,33:G,35:N,37:$,38:v,41:Z,45:st,48:it,51:rt,52:nt,53:at,54:ot,57:K},t(g,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(g,[2,34]),t(g,[2,35]),t(g,[2,36]),t(g,[2,37]),t(lt,[2,46]),t(lt,[2,47]),t(g,[2,15]),t(g,[2,19]),t(Ft,r,{7:78}),t(g,[2,26]),t(g,[2,27]),{5:[1,79]},{5:[1,80]},{4:u,5:S,8:8,9:10,10:12,11:13,12:14,13:15,16:f,17:p,19:m,21:[1,81],22:E,24:b,25:I,26:D,27:h,28:R,29:x,32:25,33:G,35:N,37:$,38:v,41:Z,45:st,48:it,51:rt,52:nt,53:at,54:ot,57:K},t(g,[2,32]),t(g,[2,33]),t(g,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:c(function(o,d){if(d.recoverable)this.trace(o);else{var n=new Error(o);throw n.hash=d,n}},"parseError"),parse:c(function(o){var d=this,n=[0],y=[],T=[null],i=[],X=this.table,l="",P=0,M=0,tt=0,ct=2,dt=1,ke=i.slice.call(arguments,1),k=Object.create(this.lexer),H={yy:{}};for(var bt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,bt)&&(H.yy[bt]=this.yy[bt]);k.setInput(o,H.yy),H.yy.lexer=k,H.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var kt=k.yylloc;i.push(kt);var De=k.options&&k.options.ranges;typeof H.yy.parseError=="function"?this.parseError=H.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Me(O){n.length=n.length-2*O,T.length=T.length-O,i.length=i.length-O}c(Me,"popStack");function xe(){var O;return O=y.pop()||k.lex()||dt,typeof O!="number"&&(O instanceof Array&&(y=O,O=y.pop()),O=d.symbols_[O]||O),O}c(xe,"lex");for(var A,Dt,j,w,Be,xt,J={},ht,B,Vt,ut;;){if(j=n[n.length-1],this.defaultActions[j]?w=this.defaultActions[j]:((A===null||typeof A>"u")&&(A=xe()),w=X[j]&&X[j][A]),typeof w>"u"||!w.length||!w[0]){var At="";ut=[];for(ht in X[j])this.terminals_[ht]&&ht>ct&&ut.push("'"+this.terminals_[ht]+"'");k.showPosition?At="Parse error on line "+(P+1)+`: +`+k.showPosition()+` +Expecting `+ut.join(", ")+", got '"+(this.terminals_[A]||A)+"'":At="Parse error on line "+(P+1)+": Unexpected "+(A==dt?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(At,{text:k.match,token:this.terminals_[A]||A,line:k.yylineno,loc:kt,expected:ut})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+j+", token: "+A);switch(w[0]){case 1:n.push(A),T.push(k.yytext),i.push(k.yylloc),n.push(w[1]),A=null,Dt?(A=Dt,Dt=null):(M=k.yyleng,l=k.yytext,P=k.yylineno,kt=k.yylloc,tt>0&&tt--);break;case 2:if(B=this.productions_[w[1]][1],J.$=T[T.length-B],J._$={first_line:i[i.length-(B||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(B||1)].first_column,last_column:i[i.length-1].last_column},De&&(J._$.range=[i[i.length-(B||1)].range[0],i[i.length-1].range[1]]),xt=this.performAction.apply(J,[l,M,P,H.yy,w[1],T,i].concat(ke)),typeof xt<"u")return xt;B&&(n=n.slice(0,-1*B*2),T=T.slice(0,-1*B),i=i.slice(0,-1*B)),n.push(this.productions_[w[1]][0]),T.push(J.$),i.push(J._$),Vt=X[n[n.length-2]][n[n.length-1]],n.push(Vt);break;case 3:return!0}}return!0},"parse")},be=(function(){var F={EOF:1,parseError:c(function(d,n){if(this.yy.parser)this.yy.parser.parseError(d,n);else throw new Error(d)},"parseError"),setInput:c(function(o,d){return this.yy=d||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:c(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var d=o.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:c(function(o){var d=o.length,n=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d),this.offset-=d;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===y.length?this.yylloc.first_column:0)+y[y.length-n.length].length-n[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-d]),this.yyleng=this.yytext.length,this},"unput"),more:c(function(){return this._more=!0,this},"more"),reject:c(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:c(function(o){this.unput(this.match.slice(o))},"less"),pastInput:c(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:c(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:c(function(){var o=this.pastInput(),d=new Array(o.length+1).join("-");return o+this.upcomingInput()+` +`+d+"^"},"showPosition"),test_match:c(function(o,d){var n,y,T;if(this.options.backtrack_lexer&&(T={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(T.yylloc.range=this.yylloc.range.slice(0))),y=o[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],n=this.performAction.call(this,this.yy,this,d,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var i in T)this[i]=T[i];return!1}return!1},"test_match"),next:c(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,d,n,y;this._more||(this.yytext="",this.match="");for(var T=this._currentRules(),i=0;id[0].length)){if(d=n,y=i,this.options.backtrack_lexer){if(o=this.test_match(n,T[i]),o!==!1)return o;if(this._backtrack){d=!1;continue}else return!1}else if(!this.options.flex)break}return d?(o=this.test_match(d,T[y]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:c(function(){var d=this.next();return d||this.lex()},"lex"),begin:c(function(d){this.conditionStack.push(d)},"begin"),popState:c(function(){var d=this.conditionStack.length-1;return d>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:c(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:c(function(d){return d=this.conditionStack.length-1-Math.abs(d||0),d>=0?this.conditionStack[d]:"INITIAL"},"topState"),pushState:c(function(d){this.begin(d)},"pushState"),stateStackSize:c(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:c(function(d,n,y,T){function i(){let l=n.yytext.indexOf("%%");if(l===0)return!1;if(l>0){let P=n.yytext.slice(0,l),M=n.yytext.slice(l);M&&d.lexer.unput(M),n.yytext=P}return!0}c(i,"processId");var X=T;switch(y){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:break;case 13:return this.pushState("SCALE"),17;break;case 14:return 18;case 15:this.popState();break;case 16:return this.begin("acc_title"),33;break;case 17:return this.popState(),"acc_title_value";break;case 18:return this.begin("acc_descr"),35;break;case 19:return this.popState(),"acc_descr_value";break;case 20:this.begin("acc_descr_multiline");break;case 21:this.popState();break;case 22:return"acc_descr_multiline_value";case 23:return this.pushState("CLASSDEF"),41;break;case 24:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 25:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 26:return this.popState(),43;break;case 27:return this.pushState("CLASS"),48;break;case 28:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 29:return this.popState(),50;break;case 30:return this.pushState("STYLE"),45;break;case 31:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 32:return this.popState(),47;break;case 33:return this.pushState("SCALE"),17;break;case 34:return 18;case 35:this.popState();break;case 36:this.pushState("STATE");break;case 37:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),25;break;case 38:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),26;break;case 39:return this.popState(),n.yytext=n.yytext.slice(0,-10).trim(),27;break;case 40:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),25;break;case 41:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),26;break;case 42:return this.popState(),n.yytext=n.yytext.slice(0,-10).trim(),27;break;case 43:return 51;case 44:return 52;case 45:return 53;case 46:return 54;case 47:this.pushState("STATE_STRING");break;case 48:return this.pushState("STATE_ID"),"AS";break;case 49:if(!i())return;return this.popState(),"ID";break;case 50:this.popState();break;case 51:return"STATE_DESCR";case 52:return 19;case 53:this.popState();break;case 54:return this.popState(),this.pushState("struct"),20;break;case 55:return this.popState(),21;break;case 56:break;case 57:return this.begin("NOTE"),29;break;case 58:return this.popState(),this.pushState("NOTE_ID"),59;break;case 59:return this.popState(),this.pushState("NOTE_ID"),60;break;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 62:break;case 63:return"NOTE_TEXT";case 64:if(!i())return;return this.popState(),"ID";break;case 65:if(!i())return;return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 66:return this.popState(),n.yytext=n.yytext.substr(2).trim(),31;break;case 67:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),31;break;case 68:return 6;case 69:return 6;case 70:return 16;case 71:return 57;case 72:return i()?24:void 0;case 73:return n.yytext=n.yytext.trim(),14;break;case 74:return 15;case 75:return 28;case 76:return 58;case 77:return 5;case 78:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/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]*?\n\s*end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:(?:[^:\n;]|:[^:\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[10,11,12],inclusive:!1},struct:{rules:[10,11,12,23,27,30,36,43,44,45,46,55,56,57,71,72,73,74,75,76],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[32],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[31],inclusive:!1},CLASS_STYLE:{rules:[29],inclusive:!1},CLASS:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[26],inclusive:!1},CLASSDEF:{rules:[24,25],inclusive:!1},acc_descr_multiline:{rules:[21,22],inclusive:!1},acc_descr:{rules:[19],inclusive:!1},acc_title:{rules:[17],inclusive:!1},SCALE:{rules:[14,15,34,35],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[49],inclusive:!1},STATE_STRING:{rules:[50,51],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[10,11,12,37,38,39,40,41,42,47,48,52,53,54],inclusive:!1},ID:{rules:[10,11,12],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,12,13,16,18,20,23,27,30,33,36,54,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}};return F})();Et.lexer=be;function _t(){this.yy={}}return c(_t,"Parser"),_t.prototype=Et,Et.Parser=_t,new _t})();Ct.parser=Ct;var Ye=Ct;var V="state",W="root",et="relation",ee="classDef",se="style",ie="applyClass",z="default",St="divider",Lt="fill:none",It="fill: #333";var Rt="markdown",Nt="normal",pt="rect",ft="rectWithTitle",re="stateStart",ne="stateEnd",vt="divider",Ot="roundedWithTitle",ae="note",oe="noteGroup",q="statediagram",Ae="state",le=`${q}-${Ae}`,wt="transition",Ce="note",Le="note-edge",ce=`${wt} ${Le}`,de=`${q}-${Ce}`,Ie="cluster",he=`${q}-${Ie}`,Re="cluster-alt",ue=`${q}-${Re}`,Gt="parent",$t="note",Se="state",gt="----",pe=`${gt}${$t}`,Pt=`${gt}${Gt}`;var Bt=c((t,e="TB")=>{if(!t.doc)return e;let s=e;for(let a of t.doc)a.stmt==="dir"&&(s=a.value);return s},"getDir"),Ne=c(function(t,e){return e.db.getClasses()},"getClasses"),ve=c(async function(t,e,s,a){_.info("REF0:"),_.info("Drawing state diagram (v2)",e);let{securityLevel:r,state:u,layout:S}=L();a.db.extract(a.db.getRootDocV2());let f=a.db.getData(),p=Qt(e,r);f.type=a.type,f.layoutAlgorithm=S,f.nodeSpacing=u?.nodeSpacing||50,f.rankSpacing=u?.rankSpacing||50,L().look==="neo"?f.markers=["barbNeo"]:f.markers=["barb"],f.diagramId=e,await Zt(f,p);let E=8;try{(typeof a.db.getLinks=="function"?a.db.getLinks():new Map).forEach((I,D)=>{let h=typeof D=="string"?D:typeof D?.id=="string"?D.id:"";if(!h){_.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(D));return}let R=p.node()?.querySelectorAll("g"),x;if(R?.forEach(v=>{v.textContent?.trim()===h&&(x=v)}),!x){_.warn("\u26A0\uFE0F Could not find node matching text:",h);return}let G=x.parentNode;if(!G){_.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",h);return}let N=document.createElementNS("http://www.w3.org/2000/svg","a"),$=I.url.replace(/^"+|"+$/g,"");if(N.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",$),N.setAttribute("target","_blank"),I.tooltip){let v=I.tooltip.replace(/^"+|"+$/g,"");N.setAttribute("title",v)}G.replaceChild(N,x),N.appendChild(x),_.info("\u{1F517} Wrapped node in
    tag for:",h,I.url)})}catch(b){_.error("\u274C Error injecting clickable links:",b)}qt.insertTitle(p,"statediagramTitleText",u?.titleTopMargin??25,a.db.getDiagramTitle()),te(p,E,q,u?.useMaxWidth??!0)},"draw"),qe={getClasses:Ne,draw:ve,getDir:Bt};var mt=new Map,U=0;function Yt(t="",e=0,s="",a=gt){let r=s!==null&&s.length>0?`${a}${s}`:"";return`${Se}-${t}${r}-${e}`}c(Yt,"stateDomId");var Oe=c((t,e,s,a,r,u,S,f)=>{_.trace("items",e),e.forEach(p=>{switch(p.stmt){case V:Q(t,p,s,a,r,u,S,f);break;case z:Q(t,p,s,a,r,u,S,f);break;case et:{Q(t,p.state1,s,a,r,u,S,f),Q(t,p.state2,s,a,r,u,S,f);let m=S==="neo",E={id:"edge"+U,start:p.state1.id,end:p.state2.id,arrowhead:"normal",arrowTypeEnd:m?"arrow_barb_neo":"arrow_barb",style:Lt,labelStyle:"",label:Y.sanitizeText(p.description??"",L()),arrowheadStyle:It,labelpos:"c",labelType:Rt,thickness:Nt,classes:wt,look:S};r.push(E),U++}break}})},"setupDoc"),fe=c((t,e="TB")=>{let s=e;if(t.doc)for(let a of t.doc)a.stmt==="dir"&&(s=a.value);return s},"getDir");function yt(t,e,s){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(r=>{let u=s.get(r);u&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...u.styles])}));let a=t.find(r=>r.id===e.id);a?Object.assign(a,e):t.push(e)}c(yt,"insertOrUpdateNode");function we(t){return t?.classes?.join(" ")??""}c(we,"getClassesFromDbInfo");function Ge(t){return t?.styles??[]}c(Ge,"getStylesFromDbInfo");var Q=c((t,e,s,a,r,u,S,f)=>{let p=e.id,m=s.get(p),E=we(m),b=Ge(m),I=L();if(_.info("dataFetcher parsedItem",e,m,b),p!=="root"){let D=pt;e.start===!0?D=re:e.start===!1&&(D=ne),e.type!==z&&(D=e.type),mt.get(p)||mt.set(p,{id:p,shape:D,description:Y.sanitizeText(p,I),cssClasses:`${E} ${le}`,cssStyles:b});let h=mt.get(p);e.description&&(Array.isArray(h.description)?(h.shape=ft,h.description.push(e.description)):h.description?.length&&h.description.length>0?(h.shape=ft,h.description===p?h.description=[e.description]:h.description=[h.description,e.description]):(h.shape=pt,h.description=e.description),h.description=Y.sanitizeTextOrArray(h.description,I)),h.description?.length===1&&h.shape===ft&&(h.type==="group"?h.shape=Ot:h.shape=pt),!h.type&&e.doc&&(_.info("Setting cluster for XCX",p,fe(e)),h.type="group",h.isGroup=!0,h.dir=fe(e),h.shape=e.type===St?vt:Ot,h.cssClasses=`${h.cssClasses} ${he} ${u?ue:""}`);let R={labelStyle:"",shape:h.shape,label:h.description,cssClasses:h.cssClasses,cssCompiledStyles:[],cssStyles:h.cssStyles,id:p,dir:h.dir,domId:Yt(p,U),type:h.type,isGroup:h.type==="group",padding:8,rx:10,ry:10,look:S,labelType:"markdown"};if(R.shape===vt&&(R.label=""),t&&t.id!=="root"&&(_.trace("Setting node ",p," to be child of its parent ",t.id),R.parentId=t.id),R.centerLabel=!0,e.note){let x={labelStyle:"",shape:ae,label:e.note.text,labelType:"markdown",cssClasses:de,cssStyles:[],cssCompiledStyles:[],id:p+pe+"-"+U,domId:Yt(p,U,$t),type:h.type,isGroup:h.type==="group",padding:I.flowchart?.padding,look:S,position:e.note.position},G=p+Pt,N={labelStyle:"",shape:oe,label:e.note.text,cssClasses:h.cssClasses,cssStyles:[],id:p+Pt,domId:Yt(p,U,Gt),type:"group",isGroup:!0,padding:16,look:S,position:e.note.position};U++,N.id=G,x.parentId=G,yt(a,N,f),yt(a,x,f),yt(a,R,f);let $=p,v=x.id;e.note.position==="left of"&&($=x.id,v=p),r.push({id:$+"-"+v,start:$,end:v,arrowhead:"none",arrowTypeEnd:"",style:Lt,labelStyle:"",classes:ce,arrowheadStyle:It,labelpos:"c",labelType:Rt,thickness:Nt,look:S})}else yt(a,R,f)}e.doc&&(_.trace("Adding nodes children "),Oe(e,e.doc,s,a,r,!u,S,f))},"dataFetcher"),ye=c(()=>{mt.clear(),U=0},"reset");var C={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},Te=c(()=>new Map,"newClassesList"),Ee=c(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),Tt=c(t=>JSON.parse(JSON.stringify(t)),"clone"),_e=class{constructor(e){this.version=e;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=Te();this.documents={root:Ee()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.getAccTitle=jt;this.setAccTitle=Ht;this.getAccDescription=zt;this.setAccDescription=Wt;this.setDiagramTitle=Kt;this.getDiagramTitle=Xt;this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{c(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(e){this.clear(!0);for(let r of Array.isArray(e)?e:e.doc)switch(r.stmt){case V:this.addState(r.id.trim(),r.type,r.doc,r.description,r.note);break;case et:this.addRelation(r.state1,r.state2,r.description);break;case ee:this.addStyleClass(r.id.trim(),r.classes);break;case se:this.handleStyleDef(r);break;case ie:this.setCssClass(r.id.trim(),r.styleClass);break;case"click":this.addLink(r.id,r.url,r.tooltip);break}let s=this.getStates(),a=L();ye(),Q(void 0,this.getRootDocV2(),s,this.nodes,this.edges,!0,a.look,this.classes);for(let r of this.nodes)if(Array.isArray(r.label)){if(r.description=r.label.slice(1),r.isGroup&&r.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${r.id}]`);r.label=r.label[0]}}handleStyleDef(e){let s=e.id.trim().split(","),a=e.styleClass.split(",");for(let r of s){let u=this.getState(r);if(!u){let S=r.trim();this.addState(S),u=this.getState(S)}u&&(u.styles=a.map(S=>S.replace(/;/g,"")?.trim()))}}setRootDoc(e){_.info("Setting root doc",e),this.rootDoc=e,this.version===1?this.extract(e):this.extract(this.getRootDocV2())}docTranslator(e,s,a){if(s.stmt===et){this.docTranslator(e,s.state1,!0),this.docTranslator(e,s.state2,!1);return}if(s.stmt===V&&(s.id===C.START_NODE?(s.id=e.id+(a?"_start":"_end"),s.start=a):s.id=s.id.trim()),s.stmt!==W&&s.stmt!==V||!s.doc)return;let r=[],u=[];for(let S of s.doc)if(S.type===St){let f=Tt(S);f.doc=Tt(u),r.push(f),u=[]}else u.push(S);if(r.length>0&&u.length>0){let S={stmt:V,id:Jt(),type:"divider",doc:Tt(u)};r.push(Tt(S)),s.doc=r}s.doc.forEach(S=>this.docTranslator(s,S,!0))}getRootDocV2(){return this.docTranslator({id:W,stmt:W},{id:W,stmt:W,doc:this.rootDoc},!0),{id:W,doc:this.rootDoc}}addState(e,s=z,a=void 0,r=void 0,u=void 0,S=void 0,f=void 0,p=void 0){let m=e?.trim();if(!this.currentDocument.states.has(m))_.info("Adding state ",m,r),this.currentDocument.states.set(m,{stmt:V,id:m,descriptions:[],type:s,doc:a,note:u,classes:[],styles:[],textStyles:[]});else{let E=this.currentDocument.states.get(m);if(!E)throw new Error(`State not found: ${m}`);E.doc||(E.doc=a),E.type||(E.type=s)}if(r&&(_.info("Setting state description",m,r),(Array.isArray(r)?r:[r]).forEach(b=>this.addDescription(m,b.trim()))),u){let E=this.currentDocument.states.get(m);if(!E)throw new Error(`State not found: ${m}`);E.note=u,E.note.text=Y.sanitizeText(E.note.text,L())}S&&(_.info("Setting state classes",m,S),(Array.isArray(S)?S:[S]).forEach(b=>this.setCssClass(m,b.trim()))),f&&(_.info("Setting state styles",m,f),(Array.isArray(f)?f:[f]).forEach(b=>this.setStyle(m,b.trim()))),p&&(_.info("Setting state styles",m,f),(Array.isArray(p)?p:[p]).forEach(b=>this.setTextStyle(m,b.trim())))}clear(e){this.nodes=[],this.edges=[],this.documents={root:Ee()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=Te(),e||(this.links=new Map,Ut())}getState(e){return this.currentDocument.states.get(e)}getStates(){return this.currentDocument.states}logDocuments(){_.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(e,s,a){this.links.set(e,{url:s,tooltip:a}),_.warn("Adding link",e,s,a)}getLinks(){return this.links}startIdIfNeeded(e=""){return e===C.START_NODE?(this.startEndCount++,`${C.START_TYPE}${this.startEndCount}`):e}startTypeIfNeeded(e="",s=z){return e===C.START_NODE?C.START_TYPE:s}endIdIfNeeded(e=""){return e===C.END_NODE?(this.startEndCount++,`${C.END_TYPE}${this.startEndCount}`):e}endTypeIfNeeded(e="",s=z){return e===C.END_NODE?C.END_TYPE:s}addRelationObjs(e,s,a=""){let r=this.startIdIfNeeded(e.id.trim()),u=this.startTypeIfNeeded(e.id.trim(),e.type),S=this.startIdIfNeeded(s.id.trim()),f=this.startTypeIfNeeded(s.id.trim(),s.type);this.addState(r,u,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.addState(S,f,s.doc,s.description,s.note,s.classes,s.styles,s.textStyles),this.currentDocument.relations.push({id1:r,id2:S,relationTitle:Y.sanitizeText(a,L())})}addRelation(e,s,a){if(typeof e=="object"&&typeof s=="object")this.addRelationObjs(e,s,a);else if(typeof e=="string"&&typeof s=="string"){let r=this.startIdIfNeeded(e.trim()),u=this.startTypeIfNeeded(e),S=this.endIdIfNeeded(s.trim()),f=this.endTypeIfNeeded(s);this.addState(r,u),this.addState(S,f),this.currentDocument.relations.push({id1:r,id2:S,relationTitle:a?Y.sanitizeText(a,L()):void 0})}}addDescription(e,s){let a=this.currentDocument.states.get(e),r=s.startsWith(":")?s.replace(":","").trim():s;a?.descriptions?.push(Y.sanitizeText(r,L()))}cleanupLabel(e){return e.startsWith(":")?e.slice(2).trim():e.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(e,s=""){this.classes.has(e)||this.classes.set(e,{id:e,styles:[],textStyles:[]});let a=this.classes.get(e);s&&a&&s.split(C.STYLECLASS_SEP).forEach(r=>{let u=r.replace(/([^;]*);/,"$1").trim();if(RegExp(C.COLOR_KEYWORD).exec(r)){let f=u.replace(C.FILL_KEYWORD,C.BG_FILL).replace(C.COLOR_KEYWORD,C.FILL_KEYWORD);a.textStyles.push(f)}a.styles.push(u)})}getClasses(){return this.classes}setCssClass(e,s){e.split(",").forEach(a=>{let r=this.getState(a);if(!r){let u=a.trim();this.addState(u),r=this.getState(u)}r?.classes?.push(s)})}setStyle(e,s){this.getState(e)?.styles?.push(s)}setTextStyle(e,s){this.getState(e)?.textStyles?.push(s)}getDirectionStatement(){return this.rootDoc.find(e=>e.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(e){let s=this.getDirectionStatement();s?s.value=e:this.rootDoc.unshift({stmt:"dir",value:e})}trimColon(e){return e.startsWith(":")?e.slice(1).trim():e.trim()}getData(){let e=L();return{nodes:this.nodes,edges:this.edges,other:{},config:e,direction:Bt(this.getRootDocV2())}}getConfig(){return L().state}};var Pe=c(t=>` +defs [id$="-barbEnd"] { + fill: ${t.transitionColor}; + stroke: ${t.transitionColor}; + } +g.stateGroup text { + fill: ${t.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${t.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${t.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.stateGroup line { + stroke: ${t.lineColor}; + stroke-width: ${t.strokeWidth||1}; +} + +.transition { + stroke: ${t.transitionColor}; + stroke-width: ${t.strokeWidth||1}; + fill: none; +} + +.stateGroup .composit { + fill: ${t.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + + text { + fill: ${t.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${t.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; +} +.edgeLabel .label text { + fill: ${t.transitionLabelColor||t.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${t.transitionLabelColor||t.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${t.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node .fork-join { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node circle.state-end { + fill: ${t.innerEndBackground}; + stroke: ${t.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${t.compositeBackground||t.background}; + // stroke: ${t.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${t.stateBkg||t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: ${t.strokeWidth||1}px; +} +.node polygon { + fill: ${t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder};; + stroke-width: ${t.strokeWidth||1}px; +} +[id$="-barbEnd"] { + fill: ${t.lineColor}; +} + +.statediagram-cluster rect { + fill: ${t.compositeTitleBackground}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: ${t.strokeWidth||1}px; +} + +.cluster-label, .nodeLabel { + color: ${t.stateLabelColor}; + // line-height: 1; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${t.stateBorder||t.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${t.compositeBackground||t.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${t.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${t.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${t.noteTextColor}; +} + +[id$="-dependencyStart"], [id$="-dependencyEnd"] { + fill: ${t.lineColor}; + stroke: ${t.lineColor}; + stroke-width: ${t.strokeWidth||1}; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} + +[data-look="neo"].statediagram-cluster rect { + fill: ${t.mainBkg}; + stroke: ${t.useGradient?"url("+t.svgId+"-gradient)":t.stateBorder||t.nodeBorder}; + stroke-width: ${t.strokeWidth??1}; +} +[data-look="neo"].statediagram-cluster rect.outer { + rx: ${t.radius}px; + ry: ${t.radius}px; + filter: ${t.dropShadow?t.dropShadow.replace("url(#drop-shadow)",`url(${t.svgId}-drop-shadow)`):"none"} +} +`,"getStyles"),gs=Pe;export{Ye as a,qe as b,_e as c,gs as d}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-LCXTWHL2.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-LCXTWHL2.mjs.map new file mode 100644 index 0000000..de0fb25 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-LCXTWHL2.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/state/parser/stateDiagram.jison", "../../../src/diagrams/state/stateCommon.ts", "../../../src/diagrams/state/stateRenderer-v3-unified.ts", "../../../src/diagrams/state/dataFetcher.ts", "../../../src/diagrams/state/stateDb.ts", "../../../src/diagrams/state/styles.js"], + "sourcesContent": ["/* 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,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,16],$V7=[1,17],$V8=[1,18],$V9=[1,19],$Va=[1,33],$Vb=[1,20],$Vc=[1,21],$Vd=[1,22],$Ve=[1,23],$Vf=[1,24],$Vg=[1,26],$Vh=[1,27],$Vi=[1,28],$Vj=[1,29],$Vk=[1,30],$Vl=[1,31],$Vm=[1,32],$Vn=[1,35],$Vo=[1,36],$Vp=[1,37],$Vq=[1,38],$Vr=[1,34],$Vs=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],$Vt=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],$Vu=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"classDefStatement\":10,\"styleStatement\":11,\"cssClassStatement\":12,\"idStatement\":13,\"DESCR\":14,\"-->\":15,\"HIDE_EMPTY\":16,\"scale\":17,\"WIDTH\":18,\"COMPOSIT_STATE\":19,\"STRUCT_START\":20,\"STRUCT_STOP\":21,\"STATE_DESCR\":22,\"AS\":23,\"ID\":24,\"FORK\":25,\"JOIN\":26,\"CHOICE\":27,\"CONCURRENT\":28,\"note\":29,\"notePosition\":30,\"NOTE_TEXT\":31,\"direction\":32,\"acc_title\":33,\"acc_title_value\":34,\"acc_descr\":35,\"acc_descr_value\":36,\"acc_descr_multiline_value\":37,\"CLICK\":38,\"STRING\":39,\"HREF\":40,\"classDef\":41,\"CLASSDEF_ID\":42,\"CLASSDEF_STYLEOPTS\":43,\"DEFAULT\":44,\"style\":45,\"STYLE_IDS\":46,\"STYLEDEF_STYLEOPTS\":47,\"class\":48,\"CLASSENTITY_IDS\":49,\"STYLECLASS\":50,\"direction_tb\":51,\"direction_bt\":52,\"direction_rl\":53,\"direction_lr\":54,\"eol\":55,\";\":56,\"EDGE_STATE\":57,\"STYLE_SEPARATOR\":58,\"left_of\":59,\"right_of\":60,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",6:\"SD\",14:\"DESCR\",15:\"-->\",16:\"HIDE_EMPTY\",17:\"scale\",18:\"WIDTH\",19:\"COMPOSIT_STATE\",20:\"STRUCT_START\",21:\"STRUCT_STOP\",22:\"STATE_DESCR\",23:\"AS\",24:\"ID\",25:\"FORK\",26:\"JOIN\",27:\"CHOICE\",28:\"CONCURRENT\",29:\"note\",31:\"NOTE_TEXT\",33:\"acc_title\",34:\"acc_title_value\",35:\"acc_descr\",36:\"acc_descr_value\",37:\"acc_descr_multiline_value\",38:\"CLICK\",39:\"STRING\",40:\"HREF\",41:\"classDef\",42:\"CLASSDEF_ID\",43:\"CLASSDEF_STYLEOPTS\",44:\"DEFAULT\",45:\"style\",46:\"STYLE_IDS\",47:\"STYLEDEF_STYLEOPTS\",48:\"class\",49:\"CLASSENTITY_IDS\",50:\"STYLECLASS\",51:\"direction_tb\",52:\"direction_bt\",53:\"direction_rl\",54:\"direction_lr\",56:\";\",57:\"EDGE_STATE\",58:\"STYLE_SEPARATOR\",59:\"left_of\",60:\"right_of\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n /* console.log('--> Root document', $$[$0]); */ yy.setRootDoc($$[$0]); return $$[$0]; \nbreak;\ncase 4:\n /*console.log('empty document'); */ this.$ = [] \nbreak;\ncase 5:\n\n if($$[$0] !='nl'){\n /* console.log(' document: 1: ', $$[$0-1], ' pushing 2: ', $$[$0]); */\n $$[$0-1].push($$[$0]); this.$ = $$[$0-1]\n }\n /* console.log('Got document',$$[$0-1], $$[$0]); */\n \nbreak;\ncase 6: case 7:\n this.$ = $$[$0] \nbreak;\ncase 8:\n this.$='nl';\nbreak;\ncase 12:\n /* console.log('got id', $$[$0]); */\n this.$=$$[$0];\n\t \nbreak;\ncase 13:\n\n const stateStmt = $$[$0-1];\n stateStmt.description = yy.trimColon($$[$0]);\n this.$ = stateStmt;\n\t \nbreak;\ncase 14:\n\n /* console.info('got ids: 1: ', $$[$0-2], ' 2:', $$[$0-1],' 3: ', $$[$0]); */\n // console.log(' idStatement --> idStatement : state1 =', $$[$0-2], ' state2 =', $$[$0]);\n this.$={ stmt: 'relation', state1: $$[$0-2], state2: $$[$0]};\n \nbreak;\ncase 15:\n\n const relDescription = yy.trimColon($$[$0]);\n /* console.log(' idStatement --> idStatement DESCR : state1 =', $$[$0-3], ' state2stmt =', $$[$0-1], ' description: ', relDescription); */\n this.$={ stmt: 'relation', state1: $$[$0-3], state2: $$[$0-1], description: relDescription};\n \nbreak;\ncase 19:\n\n // console.log('Adding document for state without id ', $$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 21:\n\n // console.log('state with id ', $$[$0-3],' document = ', $$[$0-1], );\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 23:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 24:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\n \nbreak;\ncase 25:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 26:\n\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 29:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 30: case 31:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 32:\n\n this.$ = {\n stmt: \"click\",\n id: $$[$0-3],\n url: $$[$0-2],\n tooltip: $$[$0-1]\n };\n \nbreak;\ncase 33:\n\n this.$ = {\n stmt: \"click\",\n id: $$[$0-3],\n url: $$[$0-1],\n tooltip: \"\"\n };\n \nbreak;\ncase 34: case 35:\n\n this.$ = { stmt: 'classDef', id: $$[$0-1].trim(), classes: $$[$0].trim() };\n \nbreak;\ncase 36:\n\n this.$ = { stmt: 'style', id: $$[$0-1].trim(), styleClass: $$[$0].trim() };\n \nbreak;\ncase 37:\n\n //console.log('apply class: id(s): ',$$[$0-1], ' style class: ', $$[$0]);\n this.$={ stmt: 'applyClass', id: $$[$0-1].trim(), styleClass: $$[$0].trim() };\n \nbreak;\ncase 38:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 39:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 40:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 41:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 44: case 45:\n /* console.log('idStatement id: ', $$[$0]); */\n this.$={ stmt: 'state', id: $$[$0].trim(), type: 'default', description: '' };\n \nbreak;\ncase 46:\n /*console.log('idStatement ID STYLE_SEPARATOR ID'); */\n this.$={ stmt: 'state', id: $$[$0-2].trim(), classes: [$$[$0].trim()], type: 'default', description: '' };\n \nbreak;\ncase 47:\n /*console.log('idStatement EDGE_STATE STYLE_SEPARATOR ID'); */\n this.$={ stmt: 'state', id: $$[$0-2].trim(), classes: [$$[$0].trim()], type: 'default', description: '' };\n \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:12,11:13,12:14,13:15,16:$V6,17:$V7,19:$V8,22:$V9,24:$Va,25:$Vb,26:$Vc,27:$Vd,28:$Ve,29:$Vf,32:25,33:$Vg,35:$Vh,37:$Vi,38:$Vj,41:$Vk,45:$Vl,48:$Vm,51:$Vn,52:$Vo,53:$Vp,54:$Vq,57:$Vr},o($Vs,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:$V6,17:$V7,19:$V8,22:$V9,24:$Va,25:$Vb,26:$Vc,27:$Vd,28:$Ve,29:$Vf,32:25,33:$Vg,35:$Vh,37:$Vi,38:$Vj,41:$Vk,45:$Vl,48:$Vm,51:$Vn,52:$Vo,53:$Vp,54:$Vq,57:$Vr},o($Vs,[2,7]),o($Vs,[2,8]),o($Vs,[2,9]),o($Vs,[2,10]),o($Vs,[2,11]),o($Vs,[2,12],{14:[1,40],15:[1,41]}),o($Vs,[2,16]),{18:[1,42]},o($Vs,[2,18],{20:[1,43]}),{23:[1,44]},o($Vs,[2,22]),o($Vs,[2,23]),o($Vs,[2,24]),o($Vs,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},o($Vs,[2,28]),{34:[1,49]},{36:[1,50]},o($Vs,[2,31]),{13:51,24:$Va,57:$Vr},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},o($Vt,[2,44],{58:[1,56]}),o($Vt,[2,45],{58:[1,57]}),o($Vs,[2,38]),o($Vs,[2,39]),o($Vs,[2,40]),o($Vs,[2,41]),o($Vs,[2,6]),o($Vs,[2,13]),{13:58,24:$Va,57:$Vr},o($Vs,[2,17]),o($Vu,$V3,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},o($Vs,[2,29]),o($Vs,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},o($Vs,[2,14],{14:[1,71]}),{4:$V4,5:$V5,8:8,9:10,10:12,11:13,12:14,13:15,16:$V6,17:$V7,19:$V8,21:[1,72],22:$V9,24:$Va,25:$Vb,26:$Vc,27:$Vd,28:$Ve,29:$Vf,32:25,33:$Vg,35:$Vh,37:$Vi,38:$Vj,41:$Vk,45:$Vl,48:$Vm,51:$Vn,52:$Vo,53:$Vp,54:$Vq,57:$Vr},o($Vs,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},o($Vs,[2,34]),o($Vs,[2,35]),o($Vs,[2,36]),o($Vs,[2,37]),o($Vt,[2,46]),o($Vt,[2,47]),o($Vs,[2,15]),o($Vs,[2,19]),o($Vu,$V3,{7:78}),o($Vs,[2,26]),o($Vs,[2,27]),{5:[1,79]},{5:[1,80]},{4:$V4,5:$V5,8:8,9:10,10:12,11:13,12:14,13:15,16:$V6,17:$V7,19:$V8,21:[1,81],22:$V9,24:$Va,25:$Vb,26:$Vc,27:$Vd,28:$Ve,29:$Vf,32:25,33:$Vg,35:$Vh,37:$Vi,38:$Vj,41:$Vk,45:$Vl,48:$Vm,51:$Vn,52:$Vo,53:$Vp,54:$Vq,57:$Vr},o($Vs,[2,32]),o($Vs,[2,33]),o($Vs,[2,21])],\ndefaultActions: {5:[2,1],6:[2,2],47:[2,48],48:[2,49]},\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\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) {\nfunction processId() {\n const idx = yy_.yytext.indexOf('%%');\n if (idx === 0) {\n return false;\n }\n if (idx > 0) {\n const before = yy_.yytext.slice(0, idx);\n const after = yy_.yytext.slice(idx);\n\n if (after) {\n yy.lexer.unput(after);\n }\n yy_.yytext = before;\n }\n return true;\n}\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 38;\nbreak;\ncase 1:return 40;\nbreak;\ncase 2:return 39; \nbreak;\ncase 3:return 44;\nbreak;\ncase 4:return 51;\nbreak;\ncase 5:return 52;\nbreak;\ncase 6:return 53;\nbreak;\ncase 7:return 54;\nbreak;\ncase 8:return 5;\nbreak;\ncase 9:/* skip all whitespace */\nbreak;\ncase 10:/* skip same-line whitespace */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12:/* skip comments */\nbreak;\ncase 13: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 17; \nbreak;\ncase 14:return 18;\nbreak;\ncase 15: this.popState(); \nbreak;\ncase 16: this.begin(\"acc_title\");return 33; \nbreak;\ncase 17: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 18: this.begin(\"acc_descr\");return 35; \nbreak;\ncase 19: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 20: this.begin(\"acc_descr_multiline\"); \nbreak;\ncase 21: this.popState(); \nbreak;\ncase 22:return \"acc_descr_multiline_value\";\nbreak;\ncase 23: this.pushState('CLASSDEF'); return 41; \nbreak;\ncase 24: this.popState(); this.pushState('CLASSDEFID'); return 'DEFAULT_CLASSDEF_ID' \nbreak;\ncase 25: this.popState(); this.pushState('CLASSDEFID'); return 42 \nbreak;\ncase 26: this.popState(); return 43 \nbreak;\ncase 27: this.pushState('CLASS'); return 48; \nbreak;\ncase 28: this.popState(); this.pushState('CLASS_STYLE'); return 49 \nbreak;\ncase 29: this.popState(); return 50 \nbreak;\ncase 30: this.pushState('STYLE'); return 45; \nbreak;\ncase 31: this.popState(); this.pushState('STYLEDEF_STYLES'); return 46 \nbreak;\ncase 32: this.popState(); return 47 \nbreak;\ncase 33: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 17; \nbreak;\ncase 34:return 18;\nbreak;\ncase 35:this.popState();\nbreak;\ncase 36: /* console.log('Starting STATE '); */ this.pushState('STATE'); \nbreak;\ncase 37:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 25;\nbreak;\ncase 38:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 26;\nbreak;\ncase 39:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 27;\nbreak;\ncase 40:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 25;\nbreak;\ncase 41:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 26;\nbreak;\ncase 42:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 27;\nbreak;\ncase 43: return 51;\nbreak;\ncase 44: return 52;\nbreak;\ncase 45: return 53;\nbreak;\ncase 46: return 54;\nbreak;\ncase 47: /* console.log('Starting STATE_STRING'); */ this.pushState(\"STATE_STRING\"); \nbreak;\ncase 48: this.pushState('STATE_ID'); /* console.log('pushState(STATE_ID)'); */ return \"AS\"; \nbreak;\ncase 49: if (!processId()) return; this.popState(); /* console.log('STATE_ID', yy_.yytext); */ return \"ID\"; \nbreak;\ncase 50: this.popState(); \nbreak;\ncase 51: /* console.log('Long description:', yy_.yytext); */ return \"STATE_DESCR\"; \nbreak;\ncase 52: /* console.log('COMPOSIT_STATE', yy_.yytext); */ return 19; \nbreak;\ncase 53: this.popState(); \nbreak;\ncase 54: this.popState(); this.pushState('struct'); /* console.log('begin struct', yy_.yytext); */ return 20; \nbreak;\ncase 55: /*console.log('Ending struct');*/ this.popState(); return 21;\nbreak;\ncase 56:/* nothing */\nbreak;\ncase 57: this.begin('NOTE'); return 29; \nbreak;\ncase 58: this.popState(); this.pushState('NOTE_ID'); return 59; \nbreak;\ncase 59: this.popState(); this.pushState('NOTE_ID'); return 60; \nbreak;\ncase 60: this.popState(); this.pushState('FLOATING_NOTE'); \nbreak;\ncase 61: this.popState(); this.pushState('FLOATING_NOTE_ID'); return \"AS\"; \nbreak;\ncase 62:/**/\nbreak;\ncase 63: /* console.log('Floating note text: ', yy_.yytext); */ return \"NOTE_TEXT\"; \nbreak;\ncase 64: if (!processId()) return; this.popState(); /* console.log('Floating note ID', yy_.yytext);*/ return \"ID\"; \nbreak;\ncase 65: if (!processId()) return; this.popState(); this.pushState('NOTE_TEXT'); /*console.log('Got ID for note', yy_.yytext);*/ return 24; \nbreak;\ncase 66: this.popState(); /* console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim(); return 31; \nbreak;\ncase 67: this.popState(); /* console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim(); return 31; \nbreak;\ncase 68: /* console.log('Got state diagram', yy_.yytext,'#'); */ return 6; \nbreak;\ncase 69: /* console.log('Got state diagram', yy_.yytext,'#'); */ return 6; \nbreak;\ncase 70: /* console.log('HIDE_EMPTY', yy_.yytext,'#'); */ return 16; \nbreak;\ncase 71: /* console.log('EDGE_STATE=',yy_.yytext); */ return 57; \nbreak;\ncase 72: if (!processId()) return; /* console.log('=>ID=',yy_.yytext); */ return 24; \nbreak;\ncase 73: yy_.yytext = yy_.yytext.trim(); /* console.log('Descr = ', yy_.yytext); */ return 14; \nbreak;\ncase 74:return 15;\nbreak;\ncase 75:return 28;\nbreak;\ncase 76:return 58;\nbreak;\ncase 77:return 5;\nbreak;\ncase 78:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:click\\b)/i,/^(?:href\\b)/i,/^(?:\"[^\"]*\")/i,/^(?:default\\b)/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:classDef\\s+)/i,/^(?:DEFAULT\\s+)/i,/^(?:\\w+\\s+)/i,/^(?:[^\\n]*)/i,/^(?:class\\s+)/i,/^(?:(\\w+)+((,\\s*\\w+)*))/i,/^(?:[^\\n]*)/i,/^(?:style\\s+)/i,/^(?:[\\w,]+\\s+)/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]*?\\n\\s*end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:(?:[^:\\n;]|:[^:\\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[10,11,12],\"inclusive\":false},\"struct\":{\"rules\":[10,11,12,23,27,30,36,43,44,45,46,55,56,57,71,72,73,74,75,76],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[64],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[61,62,63],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[66,67],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[65],\"inclusive\":false},\"NOTE\":{\"rules\":[58,59,60],\"inclusive\":false},\"STYLEDEF_STYLEOPTS\":{\"rules\":[],\"inclusive\":false},\"STYLEDEF_STYLES\":{\"rules\":[32],\"inclusive\":false},\"STYLE_IDS\":{\"rules\":[],\"inclusive\":false},\"STYLE\":{\"rules\":[31],\"inclusive\":false},\"CLASS_STYLE\":{\"rules\":[29],\"inclusive\":false},\"CLASS\":{\"rules\":[28],\"inclusive\":false},\"CLASSDEFID\":{\"rules\":[26],\"inclusive\":false},\"CLASSDEF\":{\"rules\":[24,25],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[21,22],\"inclusive\":false},\"acc_descr\":{\"rules\":[19],\"inclusive\":false},\"acc_title\":{\"rules\":[17],\"inclusive\":false},\"SCALE\":{\"rules\":[14,15,34,35],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[49],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[50,51],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[10,11,12,37,38,39,40,41,42,47,48,52,53,54],\"inclusive\":false},\"ID\":{\"rules\":[10,11,12],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,11,12,13,16,18,20,23,27,30,33,36,54,57,68,69,70,71,72,73,74,76,77,78],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "/**\n * Constants common to all State Diagram code\n */\n\n// default diagram direction\nexport const DEFAULT_DIAGRAM_DIRECTION = 'TB';\n\n// default direction for any nested documents (composites)\nexport const DEFAULT_NESTED_DOC_DIR = 'TB';\n\n// parsed statement type for a direction\nexport const STMT_DIRECTION = 'dir';\n\n// parsed statement type for a state\nexport const STMT_STATE = 'state';\n\n// parsed statement type for a root\nexport const STMT_ROOT = 'root';\n\n// parsed statement type for a relation\nexport const STMT_RELATION = 'relation';\n// parsed statement type for a classDef\nexport const STMT_CLASSDEF = 'classDef';\nexport const STMT_STYLEDEF = 'style';\n// parsed statement type for applyClass\nexport const STMT_APPLYCLASS = 'applyClass';\n\nexport const DEFAULT_STATE_TYPE = 'default';\nexport const DIVIDER_TYPE = 'divider';\n\n// Graph edge settings\nexport const G_EDGE_STYLE = 'fill:none';\nexport const G_EDGE_ARROWHEADSTYLE = 'fill: #333';\nexport const G_EDGE_LABELPOS = 'c';\nexport const G_EDGE_LABELTYPE = 'markdown';\nexport const G_EDGE_THICKNESS = 'normal';\n\nexport const SHAPE_STATE = 'rect';\nexport const SHAPE_STATE_WITH_DESC = 'rectWithTitle';\nexport const SHAPE_START = 'stateStart';\nexport const SHAPE_END = 'stateEnd';\nexport const SHAPE_DIVIDER = 'divider';\nexport const SHAPE_GROUP = 'roundedWithTitle';\nexport const SHAPE_NOTE = 'note';\nexport const SHAPE_NOTEGROUP = 'noteGroup';\n\n// CSS classes\nexport const CSS_DIAGRAM = 'statediagram';\nexport const CSS_STATE = 'state';\nexport const CSS_DIAGRAM_STATE = `${CSS_DIAGRAM}-${CSS_STATE}`;\nexport const CSS_EDGE = 'transition';\nexport const CSS_NOTE = 'note';\nexport const CSS_NOTE_EDGE = 'note-edge';\nexport const CSS_EDGE_NOTE_EDGE = `${CSS_EDGE} ${CSS_NOTE_EDGE}`;\nexport const CSS_DIAGRAM_NOTE = `${CSS_DIAGRAM}-${CSS_NOTE}`;\nexport const CSS_CLUSTER = 'cluster';\nexport const CSS_DIAGRAM_CLUSTER = `${CSS_DIAGRAM}-${CSS_CLUSTER}`;\nexport const CSS_CLUSTER_ALT = 'cluster-alt';\nexport const CSS_DIAGRAM_CLUSTER_ALT = `${CSS_DIAGRAM}-${CSS_CLUSTER_ALT}`;\n\nexport const PARENT = 'parent';\nexport const NOTE = 'note';\nexport const DOMID_STATE = 'state';\nexport const DOMID_TYPE_SPACER = '----';\nexport const NOTE_ID = `${DOMID_TYPE_SPACER}${NOTE}`;\nexport const PARENT_ID = `${DOMID_TYPE_SPACER}${PARENT}`;\n// --------------------------------------\n\nexport default {\n DEFAULT_DIAGRAM_DIRECTION,\n DEFAULT_NESTED_DOC_DIR,\n STMT_STATE,\n STMT_RELATION,\n STMT_CLASSDEF,\n STMT_STYLEDEF,\n STMT_APPLYCLASS,\n DEFAULT_STATE_TYPE,\n DIVIDER_TYPE,\n G_EDGE_STYLE,\n G_EDGE_ARROWHEADSTYLE,\n G_EDGE_LABELPOS,\n G_EDGE_LABELTYPE,\n G_EDGE_THICKNESS,\n CSS_EDGE,\n CSS_DIAGRAM,\n SHAPE_STATE,\n SHAPE_STATE_WITH_DESC,\n SHAPE_START,\n SHAPE_END,\n SHAPE_DIVIDER,\n SHAPE_GROUP,\n SHAPE_NOTE,\n SHAPE_NOTEGROUP,\n CSS_STATE,\n CSS_DIAGRAM_STATE,\n CSS_NOTE,\n CSS_NOTE_EDGE,\n CSS_EDGE_NOTE_EDGE,\n CSS_DIAGRAM_NOTE,\n CSS_CLUSTER,\n CSS_DIAGRAM_CLUSTER,\n CSS_CLUSTER_ALT,\n CSS_DIAGRAM_CLUSTER_ALT,\n PARENT,\n NOTE,\n DOMID_STATE,\n DOMID_TYPE_SPACER,\n NOTE_ID,\n PARENT_ID,\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\nimport { CSS_DIAGRAM, DEFAULT_NESTED_DOC_DIR } from './stateCommon.js';\n\n/**\n * Get the direction from the statement items.\n * Look through all of the documents (docs) in the parsedItems\n * Because is a _document_ direction, the default direction is not necessarily the same as the overall default _diagram_ direction.\n * @param parsedItem - the parsed statement item to look through\n * @param defaultDir - the direction to use if none is found\n * @returns The direction to use\n */\nexport const getDir = (parsedItem: any, defaultDir = DEFAULT_NESTED_DOC_DIR) => {\n if (!parsedItem.doc) {\n return defaultDir;\n }\n\n let dir = defaultDir;\n\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === 'dir') {\n dir = parsedItemDoc.value;\n }\n }\n\n return dir;\n};\n\nexport const getClasses = function (\n text: string,\n diagramObj: any\n): Map {\n return diagramObj.db.getClasses();\n};\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing state diagram (v2)', id);\n const { securityLevel, state: conf, layout } = getConfig();\n // Extracting the data from the parsed structure into a more usable form\n // Not related to the refactoring, but this is the first step in the rendering process\n diag.db.extract(diag.db.getRootDocV2());\n\n //const DIR = getDir(diag.db.getRootDocV2());\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n const data4Layout = diag.db.getData() as LayoutData;\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, securityLevel);\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = layout;\n\n // TODO: Should we move these two to baseConfig? These types are not there in StateConfig.\n\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n const config = getConfig();\n if (config.look === 'neo') {\n data4Layout.markers = ['barbNeo'];\n } else {\n data4Layout.markers = ['barb'];\n }\n data4Layout.diagramId = id;\n // console.log('REF1:', data4Layout);\n await render(data4Layout, svg);\n const padding = 8;\n\n // Inject clickable links after nodes are rendered\n try {\n const links: Map =\n typeof diag.db.getLinks === 'function' ? diag.db.getLinks() : new Map();\n\n type StateKey = string | { id: string };\n\n links.forEach((linkInfo, key: StateKey) => {\n const stateId = typeof key === 'string' ? key : typeof key?.id === 'string' ? key.id : '';\n\n if (!stateId) {\n log.warn('\u26A0\uFE0F Invalid or missing stateId from key:', JSON.stringify(key));\n return;\n }\n\n const allNodes = svg.node()?.querySelectorAll('g');\n let matchedElem: SVGGElement | undefined;\n\n allNodes?.forEach((g: SVGGElement) => {\n const text = g.textContent?.trim();\n if (text === stateId) {\n matchedElem = g;\n }\n });\n\n if (!matchedElem) {\n log.warn('\u26A0\uFE0F Could not find node matching text:', stateId);\n return;\n }\n\n const parent = matchedElem.parentNode;\n if (!parent) {\n log.warn('\u26A0\uFE0F Node has no parent, cannot wrap:', stateId);\n return;\n }\n\n const a = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n const cleanedUrl = linkInfo.url.replace(/^\"+|\"+$/g, ''); // remove leading/trailing quotes\n a.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', cleanedUrl);\n a.setAttribute('target', '_blank');\n if (linkInfo.tooltip) {\n const tooltip = linkInfo.tooltip.replace(/^\"+|\"+$/g, '');\n a.setAttribute('title', tooltip);\n }\n\n parent.replaceChild(a, matchedElem);\n a.appendChild(matchedElem);\n\n log.info('\uD83D\uDD17 Wrapped node in tag for:', stateId, linkInfo.url);\n });\n } catch (err) {\n log.error('\u274C Error injecting clickable links:', err);\n }\n\n utils.insertTitle(\n svg,\n 'statediagramTitleText',\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n setupViewPortForSVG(svg, padding, CSS_DIAGRAM, conf?.useMaxWidth ?? true);\n};\n\nexport default {\n getClasses,\n draw,\n getDir,\n};\n", "import type { MermaidConfig } from '../../config.type.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport common from '../common/common.js';\nimport {\n CSS_DIAGRAM_CLUSTER,\n CSS_DIAGRAM_CLUSTER_ALT,\n CSS_DIAGRAM_NOTE,\n CSS_DIAGRAM_STATE,\n CSS_EDGE,\n CSS_EDGE_NOTE_EDGE,\n DEFAULT_NESTED_DOC_DIR,\n DEFAULT_STATE_TYPE,\n DIVIDER_TYPE,\n DOMID_STATE,\n DOMID_TYPE_SPACER,\n G_EDGE_ARROWHEADSTYLE,\n G_EDGE_LABELPOS,\n G_EDGE_LABELTYPE,\n G_EDGE_STYLE,\n G_EDGE_THICKNESS,\n NOTE,\n NOTE_ID,\n PARENT,\n PARENT_ID,\n SHAPE_DIVIDER,\n SHAPE_END,\n SHAPE_GROUP,\n SHAPE_NOTE,\n SHAPE_NOTEGROUP,\n SHAPE_START,\n SHAPE_STATE,\n SHAPE_STATE_WITH_DESC,\n STMT_RELATION,\n STMT_STATE,\n} from './stateCommon.js';\nimport type { Edge, NodeData, StateStmt, Stmt, StyleClass } from './stateDb.js';\n\n// List of nodes created from the parsed diagram statement items\nconst nodeDb = new Map();\n\nlet graphItemCount = 0; // used to construct ids, etc.\n\n/**\n * Create a standard string for the dom ID of an item.\n * If a type is given, insert that before the counter, preceded by the type spacer\n *\n */\nexport function stateDomId(\n itemId = '',\n counter = 0,\n type: string | null = '',\n typeSpacer = DOMID_TYPE_SPACER\n) {\n const typeStr = type !== null && type.length > 0 ? `${typeSpacer}${type}` : '';\n return `${DOMID_STATE}-${itemId}${typeStr}-${counter}`;\n}\n\nconst setupDoc = (\n parentParsedItem: StateStmt | undefined,\n doc: Stmt[],\n diagramStates: Map,\n nodes: NodeData[],\n edges: Edge[],\n altFlag: boolean,\n look: MermaidConfig['look'],\n classes: Map\n) => {\n // graphItemCount = 0;\n log.trace('items', doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n dataFetcher(parentParsedItem, item, diagramStates, nodes, edges, altFlag, look, classes);\n break;\n case DEFAULT_STATE_TYPE:\n dataFetcher(parentParsedItem, item, diagramStates, nodes, edges, altFlag, look, classes);\n break;\n case STMT_RELATION:\n {\n dataFetcher(\n parentParsedItem,\n item.state1,\n diagramStates,\n nodes,\n edges,\n altFlag,\n look,\n classes\n );\n dataFetcher(\n parentParsedItem,\n item.state2,\n diagramStates,\n nodes,\n edges,\n altFlag,\n look,\n classes\n );\n const isNeo = look === 'neo';\n const edgeData = {\n id: 'edge' + graphItemCount,\n start: item.state1.id,\n end: item.state2.id,\n arrowhead: 'normal',\n arrowTypeEnd: isNeo ? 'arrow_barb_neo' : 'arrow_barb',\n style: G_EDGE_STYLE,\n labelStyle: '',\n label: common.sanitizeText(item.description ?? '', getConfig()),\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n classes: CSS_EDGE,\n look,\n };\n edges.push(edgeData);\n graphItemCount++;\n }\n break;\n }\n });\n};\n\n/**\n * Get the direction from the statement items.\n * Look through all of the documents (docs) in the parsedItems\n * Because is a _document_ direction, the default direction is not necessarily the same as the overall default _diagram_ direction.\n * @param parsedItem - the parsed statement item to look through\n * @param defaultDir - the direction to use if none is found\n */\nconst getDir = (parsedItem: { doc?: Stmt[] }, defaultDir = DEFAULT_NESTED_DOC_DIR) => {\n let dir = defaultDir;\n if (parsedItem.doc) {\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === 'dir') {\n dir = parsedItemDoc.value;\n }\n }\n }\n return dir;\n};\n\nfunction insertOrUpdateNode(\n nodes: NodeData[],\n nodeData: NodeData,\n classes: Map\n) {\n if (!nodeData.id || nodeData.id === '' || nodeData.id === '') {\n return;\n }\n\n //Populate node style attributes if nodeData has classes defined\n if (nodeData.cssClasses) {\n if (!Array.isArray(nodeData.cssCompiledStyles)) {\n nodeData.cssCompiledStyles = [];\n }\n\n nodeData.cssClasses.split(' ').forEach((cssClass) => {\n const classDef = classes.get(cssClass);\n if (classDef) {\n nodeData.cssCompiledStyles = [...(nodeData.cssCompiledStyles ?? []), ...classDef.styles];\n }\n });\n }\n const existingNodeData = nodes.find((node) => node.id === nodeData.id);\n if (existingNodeData) {\n //update the existing nodeData\n Object.assign(existingNodeData, nodeData);\n } else {\n nodes.push(nodeData);\n }\n}\n/**\n * Get classes from the db for the info item.\n * If there aren't any or if dbInfoItem isn't defined, return an empty string.\n * Else create 1 string from the list of classes found\n *\n */\nfunction getClassesFromDbInfo(dbInfoItem?: StateStmt): string {\n return dbInfoItem?.classes?.join(' ') ?? '';\n}\n\nfunction getStylesFromDbInfo(dbInfoItem?: StateStmt): string[] {\n return dbInfoItem?.styles ?? [];\n}\n\nexport const dataFetcher = (\n parent: StateStmt | undefined,\n parsedItem: StateStmt,\n diagramStates: Map,\n nodes: NodeData[],\n edges: Edge[],\n altFlag: boolean,\n look: MermaidConfig['look'],\n classes: Map\n) => {\n const itemId = parsedItem.id;\n const dbState = diagramStates.get(itemId);\n const classStr = getClassesFromDbInfo(dbState);\n const style = getStylesFromDbInfo(dbState);\n const config = getConfig();\n\n log.info('dataFetcher parsedItem', parsedItem, dbState, style);\n\n if (itemId !== 'root') {\n let shape = SHAPE_STATE;\n // The if === true / false can be removed if we can guarantee that the parsedItem.start is always a boolean\n if (parsedItem.start === true) {\n shape = SHAPE_START;\n } else if (parsedItem.start === false) {\n shape = SHAPE_END;\n }\n if (parsedItem.type !== DEFAULT_STATE_TYPE) {\n shape = parsedItem.type;\n }\n\n // Add the node to our list (nodeDb)\n if (!nodeDb.get(itemId)) {\n nodeDb.set(itemId, {\n id: itemId,\n shape,\n description: common.sanitizeText(itemId, config),\n cssClasses: `${classStr} ${CSS_DIAGRAM_STATE}`,\n cssStyles: style,\n });\n }\n\n const newNode = nodeDb.get(itemId)!;\n\n // Save data for description and group so that for instance a statement without description overwrites\n // one with description @todo TODO What does this mean? If important, add a test for it\n\n // Build of the array of description strings\n if (parsedItem.description) {\n if (Array.isArray(newNode.description)) {\n // There already is an array of strings,add to it\n newNode.shape = SHAPE_STATE_WITH_DESC;\n newNode.description.push(parsedItem.description);\n } else {\n if (newNode.description?.length && newNode.description.length > 0) {\n // if there is a description already transform it to an array\n newNode.shape = SHAPE_STATE_WITH_DESC;\n if (newNode.description === itemId) {\n // If the previous description was this, remove it\n newNode.description = [parsedItem.description];\n } else {\n newNode.description = [newNode.description, parsedItem.description];\n }\n } else {\n newNode.shape = SHAPE_STATE;\n newNode.description = parsedItem.description;\n }\n }\n newNode.description = common.sanitizeTextOrArray(newNode.description, config);\n }\n\n // If there's only 1 description entry, just use a regular state shape\n if (newNode.description?.length === 1 && newNode.shape === SHAPE_STATE_WITH_DESC) {\n if (newNode.type === 'group') {\n newNode.shape = SHAPE_GROUP;\n } else {\n newNode.shape = SHAPE_STATE;\n }\n }\n\n // group\n if (!newNode.type && parsedItem.doc) {\n log.info('Setting cluster for XCX', itemId, getDir(parsedItem));\n newNode.type = 'group';\n newNode.isGroup = true;\n newNode.dir = getDir(parsedItem);\n newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP;\n newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${altFlag ? CSS_DIAGRAM_CLUSTER_ALT : ''}`;\n }\n\n // This is what will be added to the graph\n const nodeData: NodeData = {\n labelStyle: '',\n shape: newNode.shape,\n label: newNode.description,\n cssClasses: newNode.cssClasses,\n cssCompiledStyles: [],\n cssStyles: newNode.cssStyles,\n id: itemId,\n dir: newNode.dir,\n domId: stateDomId(itemId, graphItemCount),\n type: newNode.type,\n isGroup: newNode.type === 'group',\n padding: 8,\n rx: 10,\n ry: 10,\n look,\n labelType: 'markdown',\n };\n\n // Clear the label for dividers who have no description\n if (nodeData.shape === SHAPE_DIVIDER) {\n nodeData.label = '';\n }\n\n if (parent && parent.id !== 'root') {\n log.trace('Setting node ', itemId, ' to be child of its parent ', parent.id);\n nodeData.parentId = parent.id;\n }\n\n nodeData.centerLabel = true;\n\n if (parsedItem.note) {\n // Todo: set random id\n const noteData: NodeData = {\n labelStyle: '',\n shape: SHAPE_NOTE,\n label: parsedItem.note.text,\n labelType: 'markdown',\n cssClasses: CSS_DIAGRAM_NOTE,\n // useHtmlLabels: false,\n cssStyles: [],\n cssCompiledStyles: [],\n id: itemId + NOTE_ID + '-' + graphItemCount,\n domId: stateDomId(itemId, graphItemCount, NOTE),\n type: newNode.type,\n isGroup: newNode.type === 'group',\n padding: config.flowchart?.padding,\n look,\n position: parsedItem.note.position,\n };\n const parentNodeId = itemId + PARENT_ID;\n const groupData = {\n labelStyle: '',\n shape: SHAPE_NOTEGROUP,\n label: parsedItem.note.text,\n cssClasses: newNode.cssClasses,\n cssStyles: [],\n id: itemId + PARENT_ID,\n domId: stateDomId(itemId, graphItemCount, PARENT),\n type: 'group',\n isGroup: true,\n padding: 16, //getConfig().flowchart.padding\n look,\n position: parsedItem.note.position,\n };\n graphItemCount++;\n\n //add parent id to groupData\n groupData.id = parentNodeId;\n //add parent id to noteData\n noteData.parentId = parentNodeId;\n //nodeData.parentId = parentNodeId;\n\n //insert groupData\n insertOrUpdateNode(nodes, groupData, classes);\n //insert noteData\n insertOrUpdateNode(nodes, noteData, classes);\n //insert nodeData\n insertOrUpdateNode(nodes, nodeData, classes);\n\n let from = itemId;\n let to = noteData.id;\n\n if (parsedItem.note.position === 'left of') {\n from = noteData.id;\n to = itemId;\n }\n\n edges.push({\n id: from + '-' + to,\n start: from,\n end: to,\n arrowhead: 'none',\n arrowTypeEnd: '',\n style: G_EDGE_STYLE,\n labelStyle: '',\n classes: CSS_EDGE_NOTE_EDGE,\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n look,\n });\n } else {\n insertOrUpdateNode(nodes, nodeData, classes);\n }\n }\n if (parsedItem.doc) {\n log.trace('Adding nodes children ');\n setupDoc(parsedItem, parsedItem.doc, diagramStates, nodes, edges, !altFlag, look, classes);\n }\n};\n\nexport const reset = () => {\n nodeDb.clear();\n graphItemCount = 0;\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport { generateId } from '../../utils.js';\nimport common from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport { dataFetcher, reset as resetDataFetcher } from './dataFetcher.js';\nimport { getDir } from './stateRenderer-v3-unified.js';\nimport {\n DEFAULT_DIAGRAM_DIRECTION,\n DEFAULT_STATE_TYPE,\n DIVIDER_TYPE,\n STMT_APPLYCLASS,\n STMT_CLASSDEF,\n STMT_RELATION,\n STMT_ROOT,\n STMT_DIRECTION,\n STMT_STATE,\n STMT_STYLEDEF,\n} from './stateCommon.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\nconst CONSTANTS = {\n START_NODE: '[*]',\n START_TYPE: 'start',\n END_NODE: '[*]',\n END_TYPE: 'end',\n COLOR_KEYWORD: 'color',\n FILL_KEYWORD: 'fill',\n BG_FILL: 'bgFill',\n STYLECLASS_SEP: ',',\n} as const;\n\ninterface BaseStmt {\n stmt:\n | 'applyClass'\n | 'classDef'\n | 'dir'\n | 'relation'\n | 'state'\n | 'style'\n | 'root'\n | 'default'\n | 'click';\n}\n\ninterface ApplyClassStmt extends BaseStmt {\n stmt: 'applyClass';\n id: string;\n styleClass: string;\n}\n\ninterface ClassDefStmt extends BaseStmt {\n stmt: 'classDef';\n id: string;\n classes: string;\n}\n\ninterface DirectionStmt extends BaseStmt {\n stmt: 'dir';\n value: 'TB' | 'BT' | 'RL' | 'LR';\n}\n\ninterface RelationStmt extends BaseStmt {\n stmt: 'relation';\n state1: StateStmt;\n state2: StateStmt;\n description?: string;\n}\n\nexport interface StateStmt extends BaseStmt {\n stmt: 'state' | 'default';\n id: string;\n type: 'default' | 'fork' | 'join' | 'choice' | 'divider' | 'start' | 'end';\n description?: string;\n descriptions?: string[];\n doc?: Stmt[];\n note?: Note;\n start?: boolean;\n classes?: string[];\n styles?: string[];\n textStyles?: string[];\n}\n\ninterface StyleStmt extends BaseStmt {\n stmt: 'style';\n id: string;\n styleClass: string;\n}\n\nexport interface RootStmt {\n id: 'root';\n stmt: 'root';\n doc?: Stmt[];\n}\n\nexport interface ClickStmt extends BaseStmt {\n stmt: 'click';\n id: string;\n url: string;\n tooltip: string;\n}\n\ninterface Note {\n position?: 'left of' | 'right of';\n text: string;\n}\n\nexport type Stmt =\n | ApplyClassStmt\n | ClassDefStmt\n | DirectionStmt\n | RelationStmt\n | StateStmt\n | StyleStmt\n | RootStmt\n | ClickStmt;\n\ninterface DiagramEdge {\n id1: string;\n id2: string;\n relationTitle?: string;\n}\n\ninterface Document {\n relations: DiagramEdge[];\n states: Map;\n documents: Record;\n}\n\nexport interface StyleClass {\n id: string;\n styles: string[];\n textStyles: string[];\n}\n\nexport interface NodeData {\n labelStyle?: string;\n shape: string;\n label?: string | string[];\n cssClasses: string;\n cssCompiledStyles?: string[];\n cssStyles: string[];\n id: string;\n dir?: string;\n domId?: string;\n type?: string;\n isGroup?: boolean;\n padding?: number;\n rx?: number;\n ry?: number;\n look?: MermaidConfig['look'];\n parentId?: string;\n centerLabel?: boolean;\n position?: string;\n description?: string | string[];\n labelType?: string;\n}\n\nexport interface Edge {\n id: string;\n start: string;\n end: string;\n arrowhead: string;\n arrowTypeEnd: string;\n style: string;\n labelStyle: string;\n label?: string;\n arrowheadStyle: string;\n labelpos: string;\n labelType: string;\n thickness: string;\n classes: string;\n look: MermaidConfig['look'];\n}\n\n/**\n * Returns a new list of classes.\n * In the future, this can be replaced with a class common to all diagrams.\n * ClassDef information = \\{ id: id, styles: [], textStyles: [] \\}\n */\nconst newClassesList = (): Map => new Map();\nconst newDoc = (): Document => ({\n relations: [],\n states: new Map(),\n documents: {},\n});\nconst clone = (o: T): T => JSON.parse(JSON.stringify(o));\n\nexport class StateDB {\n private nodes: NodeData[] = [];\n private edges: Edge[] = [];\n private rootDoc: Stmt[] = [];\n private classes = newClassesList();\n private documents = { root: newDoc() };\n private currentDocument = this.documents.root;\n private startEndCount = 0;\n private dividerCnt = 0;\n private links = new Map();\n\n static readonly relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n } as const;\n\n constructor(private version: 1 | 2) {\n this.clear();\n // Bind methods used by JISON\n this.setRootDoc = this.setRootDoc.bind(this);\n this.getDividerId = this.getDividerId.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.trimColon = this.trimColon.bind(this);\n }\n\n /**\n * Convert all of the statements (stmts) that were parsed into states and relationships.\n * This is done because a state diagram may have nested sections,\n * where each section is a 'document' and has its own set of statements.\n * Ex: the section within a fork has its own statements, and incoming and outgoing statements\n * refer to the fork as a whole (document).\n * See the parser grammar: the definition of a document is a document then a 'line', where a line can be a statement.\n * This will push the statement into the list of statements for the current document.\n */\n extract(statements: Stmt[] | { doc: Stmt[] }) {\n this.clear(true);\n for (const item of Array.isArray(statements) ? statements : statements.doc) {\n switch (item.stmt) {\n case STMT_STATE:\n this.addState(item.id.trim(), item.type, item.doc, item.description, item.note);\n break;\n case STMT_RELATION:\n this.addRelation(item.state1, item.state2, item.description);\n break;\n case STMT_CLASSDEF:\n this.addStyleClass(item.id.trim(), item.classes);\n break;\n case STMT_STYLEDEF:\n this.handleStyleDef(item);\n break;\n case STMT_APPLYCLASS:\n this.setCssClass(item.id.trim(), item.styleClass);\n break;\n case 'click':\n this.addLink(item.id, item.url, item.tooltip);\n break;\n }\n }\n const diagramStates = this.getStates();\n const config = getConfig();\n\n resetDataFetcher();\n dataFetcher(\n undefined,\n this.getRootDocV2() as StateStmt,\n diagramStates,\n this.nodes,\n this.edges,\n true,\n config.look,\n this.classes\n );\n\n // Process node labels\n for (const node of this.nodes) {\n if (!Array.isArray(node.label)) {\n continue;\n }\n\n node.description = node.label.slice(1);\n if (node.isGroup && node.description.length > 0) {\n throw new Error(\n `Group nodes can only have label. Remove the additional description for node [${node.id}]`\n );\n }\n node.label = node.label[0];\n }\n }\n\n private handleStyleDef(item: StyleStmt) {\n const ids = item.id.trim().split(',');\n const styles = item.styleClass.split(',');\n\n for (const id of ids) {\n let state = this.getState(id);\n if (!state) {\n const trimmedId = id.trim();\n this.addState(trimmedId);\n state = this.getState(trimmedId);\n }\n if (state) {\n state.styles = styles.map((s) => s.replace(/;/g, '')?.trim());\n }\n }\n }\n\n setRootDoc(o: Stmt[]) {\n log.info('Setting root doc', o);\n this.rootDoc = o;\n if (this.version === 1) {\n this.extract(o);\n } else {\n this.extract(this.getRootDocV2());\n }\n }\n\n docTranslator(parent: RootStmt | StateStmt, node: Stmt, first: boolean) {\n if (node.stmt === STMT_RELATION) {\n this.docTranslator(parent, node.state1, true);\n this.docTranslator(parent, node.state2, false);\n return;\n }\n\n if (node.stmt === STMT_STATE) {\n if (node.id === CONSTANTS.START_NODE) {\n node.id = parent.id + (first ? '_start' : '_end');\n node.start = first;\n } else {\n // This is just a plain state, not a start or end\n node.id = node.id.trim();\n }\n }\n\n if ((node.stmt !== STMT_ROOT && node.stmt !== STMT_STATE) || !node.doc) {\n return;\n }\n\n const doc = [];\n // Check for concurrency\n let currentDoc = [];\n for (const stmt of node.doc) {\n if ((stmt as StateStmt).type === DIVIDER_TYPE) {\n const newNode = clone(stmt as StateStmt);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(stmt);\n }\n }\n\n // If any divider was encountered\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: STMT_STATE,\n id: generateId(),\n type: 'divider',\n doc: clone(currentDoc),\n } satisfies StateStmt;\n doc.push(clone(newNode));\n node.doc = doc;\n }\n\n node.doc.forEach((docNode) => this.docTranslator(node, docNode, true));\n }\n\n private getRootDocV2() {\n this.docTranslator(\n { id: STMT_ROOT, stmt: STMT_ROOT },\n { id: STMT_ROOT, stmt: STMT_ROOT, doc: this.rootDoc },\n true\n );\n return { id: STMT_ROOT, doc: this.rootDoc };\n }\n\n /**\n * Function called by parser when a node definition has been found.\n *\n * @param descr - description for the state. Can be a string or a list or strings\n * @param classes - class styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 class, convert it to an array of that 1 class.\n * @param styles - styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 style, convert it to an array of that 1 style.\n * @param textStyles - text styles to apply to this state. Can be a string (1 text test) or an array of text styles. If it's just 1 text style, convert it to an array of that 1 text style.\n */\n addState(\n id: string,\n type: StateStmt['type'] = DEFAULT_STATE_TYPE,\n doc: Stmt[] | undefined = undefined,\n descr: string | string[] | undefined = undefined,\n note: Note | undefined = undefined,\n classes: string | string[] | undefined = undefined,\n styles: string | string[] | undefined = undefined,\n textStyles: string | string[] | undefined = undefined\n ) {\n const trimmedId = id?.trim();\n if (!this.currentDocument.states.has(trimmedId)) {\n log.info('Adding state ', trimmedId, descr);\n this.currentDocument.states.set(trimmedId, {\n stmt: STMT_STATE,\n id: trimmedId,\n descriptions: [],\n type,\n doc,\n note,\n classes: [],\n styles: [],\n textStyles: [],\n });\n } else {\n const state = this.currentDocument.states.get(trimmedId);\n if (!state) {\n throw new Error(`State not found: ${trimmedId}`);\n }\n if (!state.doc) {\n state.doc = doc;\n }\n if (!state.type) {\n state.type = type;\n }\n }\n\n if (descr) {\n log.info('Setting state description', trimmedId, descr);\n const descriptions = Array.isArray(descr) ? descr : [descr];\n descriptions.forEach((des) => this.addDescription(trimmedId, des.trim()));\n }\n\n if (note) {\n const doc2 = this.currentDocument.states.get(trimmedId);\n if (!doc2) {\n throw new Error(`State not found: ${trimmedId}`);\n }\n doc2.note = note;\n doc2.note.text = common.sanitizeText(doc2.note.text, getConfig());\n }\n\n if (classes) {\n log.info('Setting state classes', trimmedId, classes);\n const classesList = Array.isArray(classes) ? classes : [classes];\n classesList.forEach((cssClass) => this.setCssClass(trimmedId, cssClass.trim()));\n }\n\n if (styles) {\n log.info('Setting state styles', trimmedId, styles);\n const stylesList = Array.isArray(styles) ? styles : [styles];\n stylesList.forEach((style) => this.setStyle(trimmedId, style.trim()));\n }\n\n if (textStyles) {\n log.info('Setting state styles', trimmedId, styles);\n const textStylesList = Array.isArray(textStyles) ? textStyles : [textStyles];\n textStylesList.forEach((textStyle) => this.setTextStyle(trimmedId, textStyle.trim()));\n }\n }\n\n clear(saveCommon?: boolean) {\n this.nodes = [];\n this.edges = [];\n this.documents = { root: newDoc() };\n this.currentDocument = this.documents.root;\n\n // number of start and end nodes; used to construct ids\n this.startEndCount = 0;\n this.classes = newClassesList();\n if (!saveCommon) {\n this.links = new Map(); // <-- add here\n commonClear();\n }\n }\n\n getState(id: string) {\n return this.currentDocument.states.get(id);\n }\n\n getStates() {\n return this.currentDocument.states;\n }\n\n logDocuments() {\n log.info('Documents = ', this.documents);\n }\n\n getRelations() {\n return this.currentDocument.relations;\n }\n\n /**\n * Adds a clickable link to a state.\n */\n addLink(stateId: string, url: string, tooltip: string): void {\n this.links.set(stateId, { url, tooltip });\n log.warn('Adding link', stateId, url, tooltip);\n }\n\n /**\n * Get all registered links.\n */\n getLinks(): Map {\n return this.links;\n }\n\n /**\n * If the id is a start node ( [*] ), then return a new id constructed from\n * the start node name and the current start node count.\n * else return the given id\n */\n startIdIfNeeded(id = '') {\n if (id === CONSTANTS.START_NODE) {\n this.startEndCount++;\n return `${CONSTANTS.START_TYPE}${this.startEndCount}`;\n }\n return id;\n }\n\n /**\n * If the id is a start node ( [*] ), then return the start type ('start')\n * else return the given type\n */\n startTypeIfNeeded(id = '', type: StateStmt['type'] = DEFAULT_STATE_TYPE) {\n return id === CONSTANTS.START_NODE ? CONSTANTS.START_TYPE : type;\n }\n\n /**\n * If the id is an end node ( [*] ), then return a new id constructed from\n * the end node name and the current start_end node count.\n * else return the given id\n */\n endIdIfNeeded(id = '') {\n if (id === CONSTANTS.END_NODE) {\n this.startEndCount++;\n return `${CONSTANTS.END_TYPE}${this.startEndCount}`;\n }\n return id;\n }\n\n /**\n * If the id is an end node ( [*] ), then return the end type\n * else return the given type\n *\n */\n endTypeIfNeeded(id = '', type: StateStmt['type'] = DEFAULT_STATE_TYPE) {\n return id === CONSTANTS.END_NODE ? CONSTANTS.END_TYPE : type;\n }\n\n addRelationObjs(item1: StateStmt, item2: StateStmt, relationTitle = '') {\n const id1 = this.startIdIfNeeded(item1.id.trim());\n const type1 = this.startTypeIfNeeded(item1.id.trim(), item1.type);\n const id2 = this.startIdIfNeeded(item2.id.trim());\n const type2 = this.startTypeIfNeeded(item2.id.trim(), item2.type);\n this.addState(\n id1,\n type1,\n item1.doc,\n item1.description,\n item1.note,\n item1.classes,\n item1.styles,\n item1.textStyles\n );\n this.addState(\n id2,\n type2,\n item2.doc,\n item2.description,\n item2.note,\n item2.classes,\n item2.styles,\n item2.textStyles\n );\n this.currentDocument.relations.push({\n id1,\n id2,\n relationTitle: common.sanitizeText(relationTitle, getConfig()),\n });\n }\n\n /**\n * Add a relation between two items. The items may be full objects or just the string id of a state.\n */\n addRelation(item1: string | StateStmt, item2: string | StateStmt, title?: string) {\n if (typeof item1 === 'object' && typeof item2 === 'object') {\n this.addRelationObjs(item1, item2, title);\n } else if (typeof item1 === 'string' && typeof item2 === 'string') {\n const id1 = this.startIdIfNeeded(item1.trim());\n const type1 = this.startTypeIfNeeded(item1);\n const id2 = this.endIdIfNeeded(item2.trim());\n const type2 = this.endTypeIfNeeded(item2);\n\n this.addState(id1, type1);\n this.addState(id2, type2);\n this.currentDocument.relations.push({\n id1,\n id2,\n relationTitle: title ? common.sanitizeText(title, getConfig()) : undefined,\n });\n }\n }\n\n addDescription(id: string, descr: string) {\n const theState = this.currentDocument.states.get(id);\n const _descr = descr.startsWith(':') ? descr.replace(':', '').trim() : descr;\n theState?.descriptions?.push(common.sanitizeText(_descr, getConfig()));\n }\n\n cleanupLabel(label: string) {\n return label.startsWith(':') ? label.slice(2).trim() : label.trim();\n }\n\n getDividerId() {\n this.dividerCnt++;\n return `divider-id-${this.dividerCnt}`;\n }\n\n /**\n * Called when the parser comes across a (style) class definition\n * @example classDef my-style fill:#f96;\n *\n * @param id - the id of this (style) class\n * @param styleAttributes - the string with 1 or more style attributes (each separated by a comma)\n */\n addStyleClass(id: string, styleAttributes = '') {\n // create a new style class object with this id\n if (!this.classes.has(id)) {\n this.classes.set(id, { id, styles: [], textStyles: [] });\n }\n const foundClass = this.classes.get(id);\n if (styleAttributes && foundClass) {\n styleAttributes.split(CONSTANTS.STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, '$1').trim();\n if (RegExp(CONSTANTS.COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(CONSTANTS.FILL_KEYWORD, CONSTANTS.BG_FILL);\n const newStyle2 = newStyle1.replace(CONSTANTS.COLOR_KEYWORD, CONSTANTS.FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n }\n\n getClasses() {\n return this.classes;\n }\n\n /**\n * Add a (style) class or css class to a state with the given id.\n * If the state isn't already in the list of known states, add it.\n * Might be called by parser when a style class or CSS class should be applied to a state\n *\n * @param itemIds - The id or a list of ids of the item(s) to apply the css class to\n * @param cssClassName - CSS class name\n */\n setCssClass(itemIds: string, cssClassName: string) {\n itemIds.split(',').forEach((id) => {\n let foundState = this.getState(id);\n if (!foundState) {\n const trimmedId = id.trim();\n this.addState(trimmedId);\n foundState = this.getState(trimmedId);\n }\n foundState?.classes?.push(cssClassName);\n });\n }\n\n /**\n * Add a style to a state with the given id.\n * @example style stateId fill:#f9f,stroke:#333,stroke-width:4px\n * where 'style' is the keyword\n * stateId is the id of a state\n * the rest of the string is the styleText (all of the attributes to be applied to the state)\n *\n * @param itemId - The id of item to apply the style to\n * @param styleText - the text of the attributes for the style\n */\n setStyle(itemId: string, styleText: string) {\n this.getState(itemId)?.styles?.push(styleText);\n }\n\n /**\n * Add a text style to a state with the given id\n *\n * @param itemId - The id of item to apply the css class to\n * @param cssClassName - CSS class name\n */\n setTextStyle(itemId: string, cssClassName: string) {\n this.getState(itemId)?.textStyles?.push(cssClassName);\n }\n\n /**\n * Finds the direction statement in the root document.\n * @returns the direction statement if present\n */\n private getDirectionStatement() {\n return this.rootDoc.find((doc): doc is DirectionStmt => doc.stmt === STMT_DIRECTION);\n }\n\n getDirection() {\n return this.getDirectionStatement()?.value ?? DEFAULT_DIAGRAM_DIRECTION;\n }\n\n setDirection(dir: DirectionStmt['value']) {\n const doc = this.getDirectionStatement();\n if (doc) {\n doc.value = dir;\n } else {\n this.rootDoc.unshift({ stmt: STMT_DIRECTION, value: dir });\n }\n }\n\n trimColon(str: string) {\n return str.startsWith(':') ? str.slice(1).trim() : str.trim();\n }\n\n getData() {\n const config = getConfig();\n return {\n nodes: this.nodes,\n edges: this.edges,\n other: {},\n config,\n direction: getDir(this.getRootDocV2()),\n };\n }\n\n getConfig() {\n return getConfig().state;\n }\n\n getAccTitle = getAccTitle;\n setAccTitle = setAccTitle;\n getAccDescription = getAccDescription;\n setAccDescription = setAccDescription;\n setDiagramTitle = setDiagramTitle;\n getDiagramTitle = getDiagramTitle;\n}\n", "const getStyles = (options) =>\n `\ndefs [id$=\"-barbEnd\"] {\n fill: ${options.transitionColor};\n stroke: ${options.transitionColor};\n }\ng.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: ${options.strokeWidth || 1};\n}\n\n.transition {\n stroke: ${options.transitionColor};\n stroke-width: ${options.strokeWidth || 1};\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: ${options.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${options.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel {\n background-color: ${options.edgeLabelBackground};\n p {\n background-color: ${options.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n}\n.edgeLabel .label text {\n fill: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${options.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${options.innerEndBackground};\n stroke: ${options.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${options.compositeBackground || options.background};\n // stroke: ${options.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.stateBkg || options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: ${options.strokeWidth || 1}px;\n}\n.node polygon {\n fill: ${options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};;\n stroke-width: ${options.strokeWidth || 1}px;\n}\n[id$=\"-barbEnd\"] {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.compositeTitleBackground};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: ${options.strokeWidth || 1}px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.stateLabelColor};\n // line-height: 1;\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.stateBorder || options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.compositeBackground || options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${options.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${options.noteTextColor};\n}\n\n[id$=\"-dependencyStart\"], [id$=\"-dependencyEnd\"] {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: ${options.strokeWidth || 1};\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n\n[data-look=\"neo\"].statediagram-cluster rect {\n fill: ${options.mainBkg};\n stroke: ${options.useGradient ? 'url(' + options.svgId + '-gradient)' : options.stateBorder || options.nodeBorder};\n stroke-width: ${options.strokeWidth ?? 1};\n}\n[data-look=\"neo\"].statediagram-cluster rect.outer {\n rx: ${options.radius}px;\n ry: ${options.radius}px;\n filter: ${options.dropShadow ? options.dropShadow.replace('url(#drop-shadow)', `url(${options.svgId}-drop-shadow)`) : 'none'}\n}\n`;\n\n// todo: change composit to composite\n// cspell:ignore composit\n\nexport default getStyles;\n"], + "mappings": "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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "stateStmt", "relDescription", "id", "description", "parts", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "processId", "idx", "before", "after", "YYSTATE", "Parser", "stateDiagram_default", "parser", "STMT_STATE", "STMT_ROOT", "STMT_RELATION", "STMT_CLASSDEF", "STMT_STYLEDEF", "STMT_APPLYCLASS", "DEFAULT_STATE_TYPE", "DIVIDER_TYPE", "G_EDGE_STYLE", "G_EDGE_ARROWHEADSTYLE", "G_EDGE_LABELTYPE", "G_EDGE_THICKNESS", "SHAPE_STATE", "SHAPE_STATE_WITH_DESC", "SHAPE_START", "SHAPE_END", "SHAPE_DIVIDER", "SHAPE_GROUP", "SHAPE_NOTE", "SHAPE_NOTEGROUP", "CSS_DIAGRAM", "CSS_STATE", "CSS_DIAGRAM_STATE", "CSS_EDGE", "CSS_NOTE", "CSS_NOTE_EDGE", "CSS_EDGE_NOTE_EDGE", "CSS_DIAGRAM_NOTE", "CSS_CLUSTER", "CSS_DIAGRAM_CLUSTER", "CSS_CLUSTER_ALT", "CSS_DIAGRAM_CLUSTER_ALT", "PARENT", "NOTE", "DOMID_STATE", "DOMID_TYPE_SPACER", "NOTE_ID", "PARENT_ID", "getDir", "__name", "parsedItem", "defaultDir", "dir", "parsedItemDoc", "getClasses", "text", "diagramObj", "draw", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "data4Layout", "svg", "getDiagramElement", "render", "padding", "linkInfo", "key", "stateId", "allNodes", "matchedElem", "g", "parent", "a", "cleanedUrl", "tooltip", "err", "utils_default", "setupViewPortForSVG", "CSS_DIAGRAM", "stateRenderer_v3_unified_default", "nodeDb", "graphItemCount", "stateDomId", "itemId", "counter", "type", "typeSpacer", "DOMID_TYPE_SPACER", "typeStr", "DOMID_STATE", "__name", "setupDoc", "parentParsedItem", "doc", "diagramStates", "nodes", "edges", "altFlag", "look", "classes", "log", "item", "STMT_STATE", "dataFetcher", "DEFAULT_STATE_TYPE", "STMT_RELATION", "isNeo", "edgeData", "G_EDGE_STYLE", "common_default", "getConfig", "G_EDGE_ARROWHEADSTYLE", "G_EDGE_LABELTYPE", "G_EDGE_THICKNESS", "CSS_EDGE", "getDir", "parsedItem", "defaultDir", "dir", "parsedItemDoc", "insertOrUpdateNode", "nodeData", "cssClass", "classDef", "existingNodeData", "node", "getClassesFromDbInfo", "dbInfoItem", "getStylesFromDbInfo", "parent", "dbState", "classStr", "style", "config", "shape", "SHAPE_STATE", "SHAPE_START", "SHAPE_END", "CSS_DIAGRAM_STATE", "newNode", "SHAPE_STATE_WITH_DESC", "SHAPE_GROUP", "DIVIDER_TYPE", "SHAPE_DIVIDER", "CSS_DIAGRAM_CLUSTER", "CSS_DIAGRAM_CLUSTER_ALT", "noteData", "SHAPE_NOTE", "CSS_DIAGRAM_NOTE", "NOTE_ID", "NOTE", "parentNodeId", "PARENT_ID", "groupData", "SHAPE_NOTEGROUP", "PARENT", "from", "to", "CSS_EDGE_NOTE_EDGE", "reset", "CONSTANTS", "newClassesList", "__name", "newDoc", "clone", "o", "StateDB", "version", "getAccTitle", "setAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "statements", "item", "STMT_STATE", "STMT_RELATION", "STMT_CLASSDEF", "STMT_STYLEDEF", "STMT_APPLYCLASS", "diagramStates", "config", "getConfig", "reset", "dataFetcher", "node", "ids", "styles", "id", "state", "trimmedId", "s", "log", "parent", "first", "STMT_ROOT", "doc", "currentDoc", "stmt", "DIVIDER_TYPE", "newNode", "generateId", "docNode", "type", "DEFAULT_STATE_TYPE", "descr", "note", "classes", "textStyles", "des", "doc2", "common_default", "cssClass", "style", "textStyle", "saveCommon", "clear", "stateId", "url", "tooltip", "item1", "item2", "relationTitle", "id1", "type1", "id2", "type2", "title", "theState", "_descr", "label", "styleAttributes", "foundClass", "attrib", "fixedAttrib", "newStyle2", "itemIds", "cssClassName", "foundState", "itemId", "styleText", "dir", "str", "getDir", "getStyles", "__name", "options", "styles_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-W2A4CRWB.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-LII3EMHJ.mjs similarity index 90% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-W2A4CRWB.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-LII3EMHJ.mjs index d63172d..8668003 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-W2A4CRWB.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-LII3EMHJ.mjs @@ -1 +1 @@ -import{a as c}from"./chunk-XBXGYYE5.mjs";import{y as p}from"./chunk-3UWU4A3N.mjs";import{h as l}from"./chunk-MGPAVIPZ.mjs";import{a as o,f as m}from"./chunk-VELTKBKT.mjs";var a=m(c(),1);var x=o((r,t)=>{let e=r.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(let n in t.attrs)e.attr(n,t.attrs[n]);return t.class&&e.attr("class",t.class),e},"drawRect"),g=o((r,t)=>{let e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};x(r,e).lower()},"drawBackgroundRect"),f=o((r,t)=>{let e=t.text.replace(p," "),n=r.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),t.class&&n.attr("class",t.class);let s=n.append("tspan");return s.attr("x",t.x+t.textMargin*2),s.text(e),n},"drawText"),E=o((r,t,e,n)=>{let s=r.append("image");s.attr("x",t),s.attr("y",e);let i=(0,a.sanitizeUrl)(n);s.attr("xlink:href",i)},"drawImage"),h=o((r,t,e,n)=>{let s=r.append("use");s.attr("x",t),s.attr("y",e);let i=(0,a.sanitizeUrl)(n);s.attr("xlink:href",`#${i}`)},"drawEmbeddedImage"),u=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),G=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),T=o(()=>{let r=l(".mermaidTooltip");return r.empty()&&(r=l("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),r},"createTooltip");export{x as a,g as b,f as c,E as d,h as e,u as f,G as g,T as h}; +import{a as c}from"./chunk-KNLZD3CH.mjs";import{z as p}from"./chunk-67TQ5CYL.mjs";import{h as l}from"./chunk-7W6UQGC5.mjs";import{a as o,d as m}from"./chunk-AQ6EADP3.mjs";var a=m(c(),1);var x=o((r,t)=>{let e=r.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(let n in t.attrs)e.attr(n,t.attrs[n]);return t.class&&e.attr("class",t.class),e},"drawRect"),g=o((r,t)=>{let e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};x(r,e).lower()},"drawBackgroundRect"),f=o((r,t)=>{let e=t.text.replace(p," "),n=r.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),t.class&&n.attr("class",t.class);let s=n.append("tspan");return s.attr("x",t.x+t.textMargin*2),s.text(e),n},"drawText"),E=o((r,t,e,n)=>{let s=r.append("image");s.attr("x",t),s.attr("y",e);let i=(0,a.sanitizeUrl)(n);s.attr("xlink:href",i)},"drawImage"),h=o((r,t,e,n)=>{let s=r.append("use");s.attr("x",t),s.attr("y",e);let i=(0,a.sanitizeUrl)(n);s.attr("xlink:href",`#${i}`)},"drawEmbeddedImage"),u=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),G=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),T=o(()=>{let r=l(".mermaidTooltip");return r.empty()&&(r=l("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),r},"createTooltip");export{x as a,g as b,f as c,E as d,h as e,u as f,G as g,T as h}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-W2A4CRWB.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-LII3EMHJ.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-W2A4CRWB.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-LII3EMHJ.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-D4HHKWPY.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-LRIF4GLE.mjs similarity index 59% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-D4HHKWPY.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-LRIF4GLE.mjs index 40413a5..421dba2 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-D4HHKWPY.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-LRIF4GLE.mjs @@ -1 +1 @@ -import{Y as s}from"./chunk-3UWU4A3N.mjs";import{h as e}from"./chunk-MGPAVIPZ.mjs";import{a as n}from"./chunk-VELTKBKT.mjs";var d=n(t=>{let{securityLevel:m}=s(),o=e("body");if(m==="sandbox"){let c=e(`#i${t}`).node()?.contentDocument??document;o=e(c.body)}return o.select(`#${t}`)},"selectSvgElement");export{d as a}; +import{_ as s}from"./chunk-67TQ5CYL.mjs";import{h as e}from"./chunk-7W6UQGC5.mjs";import{a as n}from"./chunk-AQ6EADP3.mjs";var d=n(t=>{let{securityLevel:m}=s(),o=e("body");if(m==="sandbox"){let c=e(`#i${t}`).node()?.contentDocument??document;o=e(c.body)}return o.select(`#${t}`)},"selectSvgElement");export{d as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-D4HHKWPY.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-LRIF4GLE.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-D4HHKWPY.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-LRIF4GLE.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-MFSPT3DZ.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-MFSPT3DZ.mjs deleted file mode 100644 index 1416859..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-MFSPT3DZ.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a,b as i,c as n,d as u,e as m,f as e,g as d,j as s,p as l,q as c}from"./chunk-GAX3EE6F.mjs";import{a as o}from"./chunk-VELTKBKT.mjs";var v=class extends c{static{o(this,"InfoTokenBuilder")}static{e(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},I={parser:{TokenBuilder:e(()=>new v,"TokenBuilder"),ValueConverter:e(()=>new l,"ValueConverter")}};function M(f=u){let r=n(i(f),d),t=n(a({shared:r}),s,I);return r.ServiceRegistry.register(t),{shared:r,Info:t}}o(M,"createInfoServices");e(M,"createInfoServices");export{I as a,M as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-MFSPT3DZ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-MFSPT3DZ.mjs.map deleted file mode 100644 index 2d0a521..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-MFSPT3DZ.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-EGIJ26TM.mjs"], - "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n InfoGrammarGeneratedModule,\n MermaidGeneratedSharedModule,\n __name\n} from \"./chunk-XZSTWKYB.mjs\";\n\n// src/language/info/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/info/tokenBuilder.ts\nvar InfoTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"InfoTokenBuilder\");\n }\n constructor() {\n super([\"info\", \"showInfo\"]);\n }\n};\n\n// src/language/info/module.ts\nvar InfoModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new InfoTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createInfoServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Info = inject(\n createDefaultCoreModule({ shared }),\n InfoGrammarGeneratedModule,\n InfoModule\n );\n shared.ServiceRegistry.register(Info);\n return { shared, Info };\n}\n__name(createInfoServices, \"createInfoServices\");\n\nexport {\n InfoModule,\n createInfoServices\n};\n"], - "mappings": "4IAiBA,IAAIA,EAAmB,cAAcC,CAA4B,CAjBjE,MAiBiE,CAAAC,EAAA,yBAC/D,MAAO,CACLA,EAAO,KAAM,kBAAkB,CACjC,CACA,aAAc,CACZ,MAAM,CAAC,OAAQ,UAAU,CAAC,CAC5B,CACF,EAGIC,EAAa,CACf,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAoB,cAAc,EACjF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAmBC,EAAUC,EAAiB,CACrD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAOH,EACXI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAI,EAC7B,CAAE,OAAAJ,EAAQ,KAAAI,CAAK,CACxB,CAZSV,EAAAG,EAAA,sBAaTH,EAAOG,EAAoB,oBAAoB", - "names": ["InfoTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "InfoModule", "CommonValueConverter", "createInfoServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Info", "createDefaultCoreModule", "InfoGrammarGeneratedModule"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-NHJX6F6M.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-NHJX6F6M.mjs deleted file mode 100644 index 631766c..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-NHJX6F6M.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as o,b as n,c as a,d as u,e as p,f as e,g as d,i as G,p as l,q as s}from"./chunk-GAX3EE6F.mjs";import{a as t}from"./chunk-VELTKBKT.mjs";var m=class extends s{static{t(this,"GitGraphTokenBuilder")}static{e(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},h={parser:{TokenBuilder:e(()=>new m,"TokenBuilder"),ValueConverter:e(()=>new l,"ValueConverter")}};function v(c=u){let r=a(n(c),d),i=a(o({shared:r}),G,h);return r.ServiceRegistry.register(i),{shared:r,GitGraph:i}}t(v,"createGitGraphServices");e(v,"createGitGraphServices");export{h as a,v as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-NHJX6F6M.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-NHJX6F6M.mjs.map deleted file mode 100644 index 4711e08..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-NHJX6F6M.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-7E7YKBS2.mjs"], - "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n GitGraphGrammarGeneratedModule,\n MermaidGeneratedSharedModule,\n __name\n} from \"./chunk-XZSTWKYB.mjs\";\n\n// src/language/gitGraph/module.ts\nimport {\n inject,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n EmptyFileSystem\n} from \"langium\";\n\n// src/language/gitGraph/tokenBuilder.ts\nvar GitGraphTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"GitGraphTokenBuilder\");\n }\n constructor() {\n super([\"gitGraph\"]);\n }\n};\n\n// src/language/gitGraph/module.ts\nvar GitGraphModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new GitGraphTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createGitGraphServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const GitGraph = inject(\n createDefaultCoreModule({ shared }),\n GitGraphGrammarGeneratedModule,\n GitGraphModule\n );\n shared.ServiceRegistry.register(GitGraph);\n return { shared, GitGraph };\n}\n__name(createGitGraphServices, \"createGitGraphServices\");\n\nexport {\n GitGraphModule,\n createGitGraphServices\n};\n"], - "mappings": "iJAiBA,IAAIA,EAAuB,cAAcC,CAA4B,CAjBrE,MAiBqE,CAAAC,EAAA,6BACnE,MAAO,CACLA,EAAO,KAAM,sBAAsB,CACrC,CACA,aAAc,CACZ,MAAM,CAAC,UAAU,CAAC,CACpB,CACF,EAGIC,EAAiB,CACnB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAwB,cAAc,EACrF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAuBC,EAAUC,EAAiB,CACzD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAWH,EACfI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAQ,EACjC,CAAE,OAAAJ,EAAQ,SAAAI,CAAS,CAC5B,CAZSV,EAAAG,EAAA,0BAaTH,EAAOG,EAAwB,wBAAwB", - "names": ["GitGraphTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "GitGraphModule", "CommonValueConverter", "createGitGraphServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "GitGraph", "createDefaultCoreModule", "GitGraphGrammarGeneratedModule"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-Q3CC2MQB.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-Q3CC2MQB.mjs deleted file mode 100644 index 4306ebf..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-Q3CC2MQB.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{a as at}from"./chunk-XBXGYYE5.mjs";import{F as v,H as m,K as L,a as w,k as B}from"./chunk-3UWU4A3N.mjs";import{$ as K,G as R,J as F,K as O,L as _,M as k,N,O as j,P as A,Q as H,R as z,S as I,T as U,U as X,V as Y,W as J,X as V,Y as q,Z as G,_ as Z,b as d,h as D}from"./chunk-MGPAVIPZ.mjs";import{T as Q,k as b}from"./chunk-JIN56HTB.mjs";import{a,f as st}from"./chunk-VELTKBKT.mjs";var nt=st(at(),1);var ct="\u200B",ut={curveBasis:_,curveBasisClosed:k,curveBasisOpen:N,curveBumpX:F,curveBumpY:O,curveBundle:j,curveCardinalClosed:H,curveCardinalOpen:z,curveCardinal:A,curveCatmullRomClosed:U,curveCatmullRomOpen:X,curveCatmullRom:I,curveLinear:R,curveLinearClosed:Y,curveMonotoneX:J,curveMonotoneY:V,curveNatural:q,curveStep:G,curveStepAfter:K,curveStepBefore:Z},lt=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,ft=a(function(e,t){let r=rt(e,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(u=>u.args);B(s),n=w(n,[...s])}else n=r.args;if(!n)return;let i=L(e,t),o="config";return n[o]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[o],delete n[o]),n},"detectInit"),rt=a(function(e,t=null){try{let r=new RegExp(`[%]{2}(?![{]${lt.source})(?=[}][%]{2}).* -`,"ig");e=e.trim().replace(r,"").replace(/'/gm,'"'),d.debug(`Detecting diagram directive${t!==null?" type:"+t:""} based on the text:${e}`);let n,i=[];for(;(n=m.exec(e))!==null;)if(n.index===m.lastIndex&&m.lastIndex++,n&&!t||t&&n[1]?.match(t)||t&&n[2]?.match(t)){let o=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:o,args:s})}return i.length===0?{type:e,args:null}:i.length===1?i[0]:i}catch(r){return d.error(`ERROR: ${r.message} - Unable to parse directive type: '${t}' based on the text: '${e}'`),{type:void 0,args:null}}},"detectDirective"),zt=a(function(e){return e.replace(m,"")},"removeDirectives"),gt=a(function(e,t){for(let[r,n]of t.entries())if(n.match(e))return r;return-1},"isSubstringInArray");function dt(e,t){if(!e)return t;let r=`curve${e.charAt(0).toUpperCase()+e.slice(1)}`;return ut[r]??t}a(dt,"interpolateToCurve");function ht(e,t){let r=e.trim();if(r)return t.securityLevel!=="loose"?(0,nt.sanitizeUrl)(r):r}a(ht,"formatUrl");var mt=a((e,...t)=>{let r=e.split("."),n=r.length-1,i=r[n],o=window;for(let s=0;s{r+=it(i,t),t=i});let n=r/2;return T(e,n)}a(pt,"traverseEdge");function xt(e){return e.length===1?e[0]:pt(e)}a(xt,"calcLabelPosition");var tt=a((e,t=2)=>{let r=Math.pow(10,t);return Math.round(e*r)/r},"roundNumber"),T=a((e,t)=>{let r,n=t;for(let i of e){if(r){let o=it(i,r);if(o===0)return r;if(o=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:tt((1-s)*r.x+s*i.x,5),y:tt((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),yt=a((e,t,r)=>{d.info(`our points ${JSON.stringify(t)}`),t[0]!==r&&(t=t.reverse());let i=T(t,25),o=e?10:5,s=Math.atan2(t[0].y-i.y,t[0].x-i.x),u={x:0,y:0};return u.x=Math.sin(s)*o+(t[0].x+i.x)/2,u.y=-Math.cos(s)*o+(t[0].y+i.y)/2,u},"calcCardinalityPosition");function vt(e,t,r){let n=structuredClone(r);d.info("our points",n),t!=="start_left"&&t!=="start_right"&&n.reverse();let i=25+e,o=T(n,i),s=10+e*.5,u=Math.atan2(n[0].y-o.y,n[0].x-o.x),c={x:0,y:0};return t==="start_left"?(c.x=Math.sin(u+Math.PI)*s+(n[0].x+o.x)/2,c.y=-Math.cos(u+Math.PI)*s+(n[0].y+o.y)/2):t==="end_right"?(c.x=Math.sin(u-Math.PI)*s+(n[0].x+o.x)/2-5,c.y=-Math.cos(u-Math.PI)*s+(n[0].y+o.y)/2-5):t==="end_left"?(c.x=Math.sin(u)*s+(n[0].x+o.x)/2-5,c.y=-Math.cos(u)*s+(n[0].y+o.y)/2-5):(c.x=Math.sin(u)*s+(n[0].x+o.x)/2,c.y=-Math.cos(u)*s+(n[0].y+o.y)/2),c}a(vt,"calcTerminalLabelPosition");function bt(e){let t="",r="";for(let n of e)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":t=t+n+";");return{style:t,labelStyle:r}}a(bt,"getStylesFromArray");var et=0,Ct=a(()=>(et++,"id-"+Math.random().toString(36).substr(2,12)+"-"+et),"generateId");function Mt(e){let t="",r="0123456789abcdef",n=r.length;for(let i=0;iMt(e.length),"random"),Pt=a(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),Tt=a(function(e,t){let r=t.text.replace(v.lineBreakRegex," "),[,n]=$(t.fontSize),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.style("text-anchor",t.anchor),i.style("font-family",t.fontFamily),i.style("font-size",n),i.style("font-weight",t.fontWeight),i.attr("fill",t.fill),t.class!==void 0&&i.attr("class",t.class);let o=i.append("tspan");return o.attr("x",t.x+t.textMargin*2),o.attr("fill",t.fill),o.text(r),i},"drawSimpleText"),St=b((e,t,r)=>{if(!e||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},r),v.lineBreakRegex.test(e)))return e;let n=e.split(" ").filter(Boolean),i=[],o="";return n.forEach((s,u)=>{let c=M(`${s} `,r),l=M(o,r);if(c>t){let{hyphenatedStrings:h,remainingWord:f}=$t(s,t,"-",r);i.push(o,...h),o=f}else l+c>=t?(i.push(o),o=s):o=[o,s].filter(Boolean).join(" ");u+1===n.length&&i.push(o)}),i.filter(s=>s!=="").join(r.joinWith)},(e,t,r)=>`${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),$t=b((e,t,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...e],o=[],s="";return i.forEach((u,c)=>{let l=`${s}${u}`;if(M(l,n)>=t){let x=c+1,h=i.length===x,f=`${l}${r}`;o.push(h?l:f),s=""}else s=l}),{hyphenatedStrings:o,remainingWord:s}},(e,t,r="-",n)=>`${e}${t}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);function Wt(e,t){return S(e,t).height}a(Wt,"calculateTextHeight");function M(e,t){return S(e,t).width}a(M,"calculateTextWidth");var S=b((e,t)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=t;if(!e)return{width:0,height:0};let[,o]=$(r),s=["sans-serif",n],u=e.split(v.lineBreakRegex),c=[],l=D("body");if(!l.remove)return{width:0,height:0,lineHeight:0};let p=l.append("svg");for(let h of s){let f=0,g={width:0,height:0,lineHeight:0};for(let ot of u){let W=Pt();W.text=ot||ct;let E=Tt(p,W).style("font-size",o).style("font-weight",i).style("font-family",h),y=(E._groups||E)[0][0].getBBox();if(y.width===0&&y.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,y.width)),f=Math.round(y.height),g.height+=f,g.lineHeight=Math.round(Math.max(g.lineHeight,f))}c.push(g)}p.remove();let x=isNaN(c[1].height)||isNaN(c[1].width)||isNaN(c[1].lineHeight)||c[0].height>c[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1;return c[x]},(e,t)=>`${e}${t.fontSize}${t.fontWeight}${t.fontFamily}`),P=class{constructor(t=!1,r){this.count=0;this.count=r?r.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{a(this,"InitIDGenerator")}},C,Et=a(function(e){return C=C||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),C.innerHTML=e,unescape(C.textContent)},"entityDecode");function It(e){return"str"in e}a(It,"isDetailedError");var Bt=a((e,t,r,n)=>{if(!n)return;let i=e.node()?.getBBox();i&&e.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",t)},"insertTitle"),$=a(e=>{if(typeof e=="number")return[e,e+"px"];let t=parseInt(e??"",10);return Number.isNaN(t)?[void 0,void 0]:e===String(t)?[t,e+"px"]:[t,e]},"parseFontSize");function Lt(e,t){return Q({},e,t)}a(Lt,"cleanAndMerge");var Ut={assignWithDepth:w,wrapLabel:St,calculateTextHeight:Wt,calculateTextWidth:M,calculateTextDimensions:S,cleanAndMerge:Lt,detectInit:ft,detectDirective:rt,isSubstringInArray:gt,interpolateToCurve:dt,calcLabelPosition:xt,calcCardinalityPosition:yt,calcTerminalLabelPosition:vt,formatUrl:ht,getStylesFromArray:bt,generateId:Ct,random:wt,runFunc:mt,entityDecode:Et,insertTitle:Bt,isLabelCoordinateInPath:Dt,parseFontSize:$,InitIDGenerator:P},Xt=a(function(e){let t=e;return t=t.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),t},"encodeEntities"),Yt=a(function(e){return e.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities");var Jt=a((e,t,{counter:r=0,prefix:n,suffix:i},o)=>o||`${n?`${n}_`:""}${e}_${t}_${r}${i?`_${i}`:""}`,"getEdgeId");function Vt(e){return e??null}a(Vt,"handleUndefinedAttr");function Dt(e,t){let r=Math.round(e.x),n=Math.round(e.y),i=t.replace(/(\d+\.\d+)/g,o=>Math.round(parseFloat(o)).toString());return i.includes(r.toString())||i.includes(n.toString())}a(Dt,"isLabelCoordinateInPath");export{ct as a,zt as b,dt as c,bt as d,Ct as e,wt as f,St as g,Wt as h,M as i,It as j,$ as k,Lt as l,Ut as m,Xt as n,Yt as o,Jt as p,Vt as q}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-Q3CC2MQB.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-Q3CC2MQB.mjs.map deleted file mode 100644 index 7bfeb74..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-Q3CC2MQB.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/utils.ts"], - "sourcesContent": ["import { sanitizeUrl } from '@braintree/sanitize-url';\nimport type { BaseType, CurveFactory } from 'd3';\nimport {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select,\n} from 'd3';\nimport common from './diagrams/common/common.js';\nimport { sanitizeDirective } from './utils/sanitizeDirective.js';\nimport { log } from './logger.js';\nimport { detectType } from './diagram-api/detectType.js';\nimport assignWithDepth from './assignWithDepth.js';\nimport type { MermaidConfig } from './config.type.js';\nimport memoize from 'lodash-es/memoize.js';\nimport merge from 'lodash-es/merge.js';\nimport { directiveRegex } from './diagram-api/regexes.js';\nimport type { D3Element, Point, TextDimensionConfig, TextDimensions } from './types.js';\n\nexport const ZERO_WIDTH_SPACE = '\\u200b';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBumpX: curveBumpX,\n curveBumpY: curveBumpY,\n curveBundle: curveBundle,\n curveCardinalClosed: curveCardinalClosed,\n curveCardinalOpen: curveCardinalOpen,\n curveCardinal: curveCardinal,\n curveCatmullRomClosed: curveCatmullRomClosed,\n curveCatmullRomOpen: curveCatmullRomOpen,\n curveCatmullRom: curveCatmullRom,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore,\n} as const;\n\nconst directiveWithoutOpen =\n /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\n/**\n * Detects the init config object from the text\n *\n * @param text - The text defining the graph. For example:\n *\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * Or\n *\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param config - Optional mermaid configuration object.\n * @returns The json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function (\n text: string,\n config?: MermaidConfig\n): MermaidConfig | undefined {\n const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results: MermaidConfig & { config?: unknown } = {};\n\n if (Array.isArray(inits)) {\n const args = inits.map((init) => init.args);\n sanitizeDirective(args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args as MermaidConfig;\n }\n\n if (!results) {\n return;\n }\n\n let type = detectType(text, config);\n\n // Move the `config` value to appropriate diagram type value\n const prop = 'config';\n if (results[prop] !== undefined) {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type as keyof MermaidConfig] = results[prop];\n delete results[prop];\n }\n\n return results;\n};\n\ninterface Directive {\n type?: string;\n args?: unknown;\n}\n/**\n * Detects the directive from the text.\n *\n * Text can be single line or multiline. If type is null or omitted,\n * the first directive encountered in text will be returned\n *\n * ```mermaid\n * graph LR\n * %%{someDirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param text - The text defining the graph\n * @param type - The directive to return (default: `null`)\n * @returns An object or Array representing the directive(s) matched by the input type.\n * If a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function (\n text: string,\n type: string | RegExp | null = null\n): Directive | Directive[] {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text.trim().replace(commentWithoutDirectives, '').replace(/'/gm, '\"');\n log.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match: RegExpExecArray | null;\n const result: Directive[] = [];\n while ((match = directiveRegex.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directiveRegex.lastIndex) {\n directiveRegex.lastIndex++;\n }\n if ((match && !type) || (type && match[1]?.match(type)) || (type && match[2]?.match(type))) {\n const type = match[1] ? match[1] : match[2];\n const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n return { type: text, args: null };\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log.error(\n `ERROR: ${\n (error as Error).message\n } - Unable to parse directive type: '${type}' based on the text: '${text}'`\n );\n return { type: undefined, args: null };\n }\n};\n\nexport const removeDirectives = function (text: string): string {\n return text.replace(directiveRegex, '');\n};\n\n/**\n * Detects whether a substring in present in a given array\n *\n * @param str - The substring to detect\n * @param arr - The array to search\n * @returns The array index containing the substring or -1 if not present\n */\nexport const isSubstringInArray = function (str: string, arr: string[]): number {\n for (const [i, element] of arr.entries()) {\n if (element.match(str)) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Returns a d3 curve given a curve name\n *\n * @param interpolate - The interpolation name\n * @param defaultCurve - The default curve to return\n * @returns The curve factory to use\n */\nexport function interpolateToCurve(\n interpolate: string | undefined,\n defaultCurve: CurveFactory\n): CurveFactory {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n\n // @ts-ignore TODO: Fix issue with curve type\n return d3CurveTypes[curveName as keyof typeof d3CurveTypes] ?? defaultCurve;\n}\n\n/**\n * Formats a URL string\n *\n * @param linkStr - String of the URL\n * @param config - Configuration passed to MermaidJS\n * @returns The formatted URL or `undefined`.\n */\nexport function formatUrl(linkStr: string, config: MermaidConfig): string | undefined {\n const url = linkStr.trim();\n\n if (!url) {\n return undefined;\n }\n\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n}\n\n/**\n * Runs a function\n *\n * @param functionName - A dot separated path to the function relative to the `window`\n * @param params - Parameters to pass to the function\n */\nexport const runFunc = (functionName: string, ...params: unknown[]) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i] as keyof typeof obj];\n if (!obj) {\n log.error(`Function name: ${functionName} not found in window`);\n return;\n }\n }\n\n obj[fnName as keyof typeof obj](...params);\n};\n\n/**\n * Finds the distance between two points using the Distance Formula\n *\n * @param p1 - The first point\n * @param p2 - The second point\n * @returns The distance between the two points.\n */\nfunction distance(p1?: Point, p2?: Point): number {\n if (!p1 || !p2) {\n return 0;\n }\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\n/**\n * TODO: Give this a description\n *\n * @param points - List of points\n */\nfunction traverseEdge(points: Point[]): Point {\n let prevPoint: Point | undefined;\n let totalDistance = 0;\n\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n const remainingDistance = totalDistance / 2;\n return calculatePoint(points, remainingDistance);\n}\n\n/**\n * {@inheritdoc traverseEdge}\n */\nfunction calcLabelPosition(points: Point[]): Point {\n if (points.length === 1) {\n return points[0];\n }\n return traverseEdge(points);\n}\n\nexport const roundNumber = (num: number, precision = 2) => {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n};\n\nexport const calculatePoint = (points: Point[], distanceToTraverse: number): Point => {\n let prevPoint: Point | undefined = undefined;\n let remainingDistance = distanceToTraverse;\n for (const point of points) {\n if (prevPoint) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance === 0) {\n return prevPoint;\n }\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n return prevPoint;\n }\n if (distanceRatio >= 1) {\n return { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n return {\n x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),\n y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5),\n };\n }\n }\n }\n prevPoint = point;\n }\n throw new Error('Could not find a suitable point for the given distance');\n};\n\nconst calcCardinalityPosition = (\n isRelationTypePresent: boolean,\n points: Point[],\n initialPosition: Point\n) => {\n log.info(`our points ${JSON.stringify(points)}`);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n const d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but perpendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\n/**\n * Calculates the terminal label position.\n *\n * @param terminalMarkerSize - Terminal marker size.\n * @param position - Position of label relative to points.\n * @param _points - Array of points.\n * @returns - The `cardinalityPosition`.\n */\nfunction calcTerminalLabelPosition(\n terminalMarkerSize: number,\n position: 'start_left' | 'start_right' | 'end_left' | 'end_right',\n _points: Point[]\n): Point {\n const points = structuredClone(_points);\n log.info('our points', points);\n if (position !== 'start_left' && position !== 'start_right') {\n points.reverse();\n }\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n const d = 10 + terminalMarkerSize * 0.5;\n //Calculate Angle for x and y axis\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n\n const cardinalityPosition: Point = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but perpendicular and with offset-distance\n\n if (position === 'start_left') {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n } else if (position === 'end_right') {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n } else if (position === 'end_left') {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n } else {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n }\n return cardinalityPosition;\n}\n\n/**\n * Gets styles from an array of declarations\n *\n * @param arr - Declarations\n * @returns The styles grouped as strings\n */\nexport function getStylesFromArray(arr: string[]): { style: string; labelStyle: string } {\n let style = '';\n let labelStyle = '';\n\n for (const element of arr) {\n if (element !== undefined) {\n // add text properties to label style definition\n if (element.startsWith('color:') || element.startsWith('text-align:')) {\n labelStyle = labelStyle + element + ';';\n } else {\n style = style + element + ';';\n }\n }\n }\n\n return { style, labelStyle };\n}\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;\n};\n\n/**\n * Generates a random hexadecimal id of the given length.\n *\n * @param length - Length of string.\n * @returns The generated string.\n */\nfunction makeRandomHex(length: number): string {\n let result = '';\n const characters = '0123456789abcdef';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = (options: { length: number }) => {\n return makeRandomHex(options.length);\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined,\n text: '',\n };\n};\n\n/**\n * Adds text to an element\n *\n * @param elem - SVG Element to add text to\n * @param textData - Text options.\n * @returns Text element with given styling and content\n */\nexport const drawSimpleText = function (\n elem: SVGElement,\n textData: {\n text: string;\n x: number;\n y: number;\n anchor: 'start' | 'middle' | 'end';\n fontFamily: string;\n fontSize: string | number;\n fontWeight: string | number;\n fill: string;\n class: string | undefined;\n textMargin: number;\n }\n): SVGTextElement {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const [, _fontSizePx] = parseFontSize(textData.fontSize);\n\n const textElem = elem.append('text') as any;\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', _fontSizePx);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n\n if (textData.class !== undefined) {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\ninterface WrapLabelConfig {\n fontSize: number;\n fontFamily: string;\n fontWeight: number;\n joinWith: string;\n}\n\nexport const wrapLabel: (label: string, maxWidth: number, config: WrapLabelConfig) => string =\n memoize(\n (label: string, maxWidth: number, config: WrapLabelConfig): string => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
    ' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ').filter(Boolean);\n const completedLines: string[] = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}${maxWidth}${config.fontSize}${config.fontWeight}${config.fontFamily}${config.joinWith}`\n );\n\ninterface BreakStringOutput {\n hyphenatedStrings: string[];\n remainingWord: string;\n}\n\nconst breakString: (\n word: string,\n maxWidth: number,\n hyphenCharacter: string,\n config: WrapLabelConfig\n) => BreakStringOutput = memoize(\n (\n word: string,\n maxWidth: number,\n hyphenCharacter = '-',\n config: WrapLabelConfig\n ): BreakStringOutput => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = [...word];\n const lines: string[] = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}${maxWidth}${hyphenCharacter}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and both the statically\n * configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text has greater height, we extend the height, so it's value won't overflow.\n *\n * @param text - The text to measure\n * @param config - The config for fontSize, fontFamily, and fontWeight all impacting the\n * resulting size\n * @returns The height for the given text\n */\nexport function calculateTextHeight(\n text: Parameters[0],\n config: Parameters[1]\n): ReturnType['height'] {\n return calculateTextDimensions(text, config).height;\n}\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @param text - The text to calculate the width of\n * @param config - The config for fontSize, fontFamily, and fontWeight all impacting the\n * resulting size\n * @returns The width for the given text\n */\nexport function calculateTextWidth(\n text: Parameters[0],\n config: Parameters[1]\n): ReturnType['width'] {\n return calculateTextDimensions(text, config).width;\n}\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and\n * margins.\n *\n * @param text - The text to calculate the width of\n * @param config - The config for fontSize, fontFamily, fontWeight, and margin all impacting\n * the resulting size\n * @returns The dimensions for the given text\n */\nexport const calculateTextDimensions: (\n text: string,\n config: TextDimensionConfig\n) => TextDimensions = memoize(\n (text: string, config: TextDimensionConfig): TextDimensions => {\n const { fontSize = 12, fontFamily = 'Arial', fontWeight = 400 } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n const [, _fontSizePx] = parseFontSize(fontSize);\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n const dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (const fontFamily of fontFamilies) {\n let cHeight = 0;\n const dim = { width: 0, height: 0, lineHeight: 0 };\n for (const line of lines) {\n const textObj = getTextObj();\n textObj.text = line || ZERO_WIDTH_SPACE;\n // @ts-ignore TODO: Fix D3 types\n const textElem = drawSimpleText(g, textObj)\n // @ts-ignore TODO: Fix D3 types\n .style('font-size', _fontSizePx)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n const bBox = (textElem._groups || textElem)[0][0].getBBox();\n if (bBox.width === 0 && bBox.height === 0) {\n throw new Error('svg element not in render tree');\n }\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cHeight = Math.round(bBox.height);\n dim.height += cHeight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cHeight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n const index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\n\nexport class InitIDGenerator {\n private count = 0;\n public next: () => number;\n constructor(deterministic = false, seed?: string) {\n // TODO: Seed is only used for length?\n // v11: Use the actual value of seed string to generate an initial value for count.\n this.count = seed ? seed.length : 0;\n this.next = deterministic ? () => this.count++ : () => Date.now();\n }\n}\n\nlet decoder: HTMLDivElement;\n\n/**\n * Decodes HTML, source: {@link https://github.com/shrpne/entity-decode/blob/v2.0.1/browser.js}\n *\n * @param html - HTML as a string\n * @returns Unescaped HTML\n */\nexport const entityDecode = function (html: string): string {\n decoder = decoder || document.createElement('div');\n // Escape HTML before decoding for HTML Entities\n html = escape(html).replace(/%26/g, '&').replace(/%23/g, '#').replace(/%3B/g, ';');\n decoder.innerHTML = html;\n\n return unescape(decoder.textContent!);\n};\n\nexport interface DetailedError {\n str: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n hash: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error?: any;\n message?: string;\n}\n\n/** @param error - The error to check */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isDetailedError(error: any): error is DetailedError {\n return 'str' in error;\n}\n\n/** @param error - The error to convert to an error message */\nexport function getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n\n/**\n * Appends element with the given title and css class.\n *\n * @param parent - d3 svg object to append title to\n * @param cssClass - CSS class for the element containing the title\n * @param titleTopMargin - Margin in pixels between title and rest of the graph\n * @param title - The title. If empty, returns immediately.\n */\nexport const insertTitle = (\n parent: D3Element,\n cssClass: string,\n titleTopMargin: number,\n title?: string\n): void => {\n if (!title) {\n return;\n }\n const bounds = parent.node()?.getBBox();\n if (!bounds) {\n return;\n }\n parent\n .append('text')\n .text(title)\n .attr('text-anchor', 'middle')\n .attr('x', bounds.x + bounds.width / 2)\n .attr('y', -titleTopMargin)\n .attr('class', cssClass);\n};\n\n/**\n * Parses a raw fontSize configuration value into a number and string value.\n *\n * @param fontSize - a string or number font size configuration value\n *\n * @returns parsed number and string style font size values, or nulls if a number value can't\n * be parsed from an input string.\n */\nexport const parseFontSize = (fontSize: string | number | undefined): [number?, string?] => {\n // if the font size is a number, assume a px string representation\n if (typeof fontSize === 'number') {\n return [fontSize, fontSize + 'px'];\n }\n\n const fontSizeNumber = parseInt(fontSize ?? '', 10);\n if (Number.isNaN(fontSizeNumber)) {\n // if a number value can't be parsed, return null for both values\n return [undefined, undefined];\n } else if (fontSize === String(fontSizeNumber)) {\n // if a string input doesn't contain any units, assume px units\n return [fontSizeNumber, fontSize + 'px'];\n } else {\n return [fontSizeNumber, fontSize];\n }\n};\n\nexport function cleanAndMerge(defaultData: T, data?: Partial): T {\n return merge({}, defaultData, data);\n}\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n cleanAndMerge,\n detectInit,\n detectDirective,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n runFunc,\n entityDecode,\n insertTitle,\n isLabelCoordinateInPath,\n parseFontSize,\n InitIDGenerator,\n};\n\n/**\n * @param text - text to be encoded\n * @returns\n */\nexport const encodeEntities = function (text: string): string {\n let txt = text;\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function (s): string {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function (s): string {\n return s.substring(0, s.length - 1);\n });\n\n txt = txt.replace(/#\\w+;/g, function (s) {\n const innerTxt = s.substring(1, s.length - 1);\n\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return '\uFB02\u00B0\u00B0' + innerTxt + '\u00B6\u00DF';\n } else {\n return '\uFB02\u00B0' + innerTxt + '\u00B6\u00DF';\n }\n });\n\n return txt;\n};\n\n/**\n *\n * @param text - text to be decoded\n * @returns\n */\nexport const decodeEntities = function (text: string): string {\n return text.replace(/\uFB02\u00B0\u00B0/g, '&#').replace(/\uFB02\u00B0/g, '&').replace(/\u00B6\u00DF/g, ';');\n};\n\nexport const isString = (value: unknown): value is string => {\n return typeof value === 'string';\n};\n\nexport const getEdgeId = (\n from: string,\n to: string,\n {\n counter = 0,\n prefix,\n suffix,\n }: {\n counter?: number;\n prefix?: string;\n suffix?: string;\n },\n id?: string\n) => {\n if (id) {\n return id;\n }\n return `${prefix ? `${prefix}_` : ''}${from}_${to}_${counter}${suffix ? `_${suffix}` : ''}`;\n};\n\n/**\n * D3's `selection.attr` method doesn't officially support `undefined`.\n *\n * However, it seems if you do pass `undefined`, it seems to be treated as `null`\n * (e.g. it removes the attribute).\n */\nexport function handleUndefinedAttr(\n attrValue: Parameters['attr']>[1] | undefined\n) {\n return attrValue ?? null;\n}\n\n/**\n * Checks if the x or y coordinate of the edge label\n * appears in the given SVG path data string.\n *\n * @param point - The Point object with x and y properties to check.\n * @param dAttr - SVG path data string (the 'd' attribute of an SVG path element).\n * @returns - True if the rounded x or y coordinate of the edge label is found\n * in the sanitized path data string; otherwise, false.\n */\nexport function isLabelCoordinateInPath(point: Point, dAttr: string) {\n const roundedX = Math.round(point.x);\n const roundedY = Math.round(point.y);\n\n const sanitizedD = dAttr.replace(/(\\d+\\.\\d+)/g, (match) =>\n Math.round(parseFloat(match)).toString()\n );\n\n return sanitizedD.includes(roundedX.toString()) || sanitizedD.includes(roundedY.toString());\n}\n"], - "mappings": "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", - "names": ["import_sanitize_url", "ZERO_WIDTH_SPACE", "d3CurveTypes", "basis_default", "basisClosed_default", "basisOpen_default", "bumpX", "bumpY", "bundle_default", "cardinalClosed_default", "cardinalOpen_default", "cardinal_default", "catmullRomClosed_default", "catmullRomOpen_default", "catmullRom_default", "linear_default", "linearClosed_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "directiveWithoutOpen", "detectInit", "__name", "text", "config", "inits", "detectDirective", "results", "args", "init", "sanitizeDirective", "assignWithDepth_default", "type", "detectType", "prop", "commentWithoutDirectives", "log", "match", "result", "directiveRegex", "error", "removeDirectives", "isSubstringInArray", "str", "arr", "i", "element", "interpolateToCurve", "interpolate", "defaultCurve", "curveName", "formatUrl", "linkStr", "url", "runFunc", "functionName", "params", "arrPaths", "len", "fnName", "obj", "distance", "p1", "p2", "traverseEdge", "points", "prevPoint", "totalDistance", "point", "remainingDistance", "calculatePoint", "calcLabelPosition", "roundNumber", "num", "precision", "factor", "distanceToTraverse", "vectorDistance", "distanceRatio", "calcCardinalityPosition", "isRelationTypePresent", "initialPosition", "center", "d", "angle", "cardinalityPosition", "calcTerminalLabelPosition", "terminalMarkerSize", "position", "_points", "distanceToCardinalityPoint", "getStylesFromArray", "style", "labelStyle", "cnt", "generateId", "makeRandomHex", "length", "characters", "charactersLength", "random", "options", "getTextObj", "drawSimpleText", "elem", "textData", "nText", "common_default", "_fontSizePx", "parseFontSize", "textElem", "span", "wrapLabel", "memoize_default", "label", "maxWidth", "words", "completedLines", "nextLine", "word", "index", "wordLength", "calculateTextWidth", "nextLineLength", "hyphenatedStrings", "remainingWord", "breakString", "line", "hyphenCharacter", "lines", "currentLine", "character", "currentCharacter", "isLastLine", "hyphenatedNextLine", "calculateTextHeight", "calculateTextDimensions", "fontSize", "fontFamily", "fontWeight", "fontFamilies", "dims", "body", "select_default", "g", "cHeight", "dim", "textObj", "bBox", "InitIDGenerator", "deterministic", "seed", "decoder", "entityDecode", "html", "isDetailedError", "insertTitle", "__name", "parent", "cssClass", "titleTopMargin", "title", "bounds", "parseFontSize", "fontSize", "fontSizeNumber", "cleanAndMerge", "defaultData", "data", "merge_default", "utils_default", "assignWithDepth_default", "wrapLabel", "calculateTextHeight", "calculateTextWidth", "calculateTextDimensions", "detectInit", "detectDirective", "isSubstringInArray", "interpolateToCurve", "calcLabelPosition", "calcCardinalityPosition", "calcTerminalLabelPosition", "formatUrl", "getStylesFromArray", "generateId", "random", "runFunc", "entityDecode", "isLabelCoordinateInPath", "InitIDGenerator", "encodeEntities", "text", "txt", "s", "innerTxt", "decodeEntities", "getEdgeId", "__name", "from", "to", "counter", "prefix", "suffix", "id", "handleUndefinedAttr", "attrValue", "isLabelCoordinateInPath", "point", "dAttr", "roundedX", "roundedY", "sanitizedD", "match"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-QA3QBVWF.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-QA3QBVWF.mjs new file mode 100644 index 0000000..2cdc9b7 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-QA3QBVWF.mjs @@ -0,0 +1,2 @@ +import{a as Ct}from"./chunk-KNLZD3CH.mjs";import{G as j,I as D,L as gt,a as ot,k as xt}from"./chunk-67TQ5CYL.mjs";import{$ as Ft,G as lt,J as dt,K as ht,L as bt,M as wt,N as At,O as Ot,P as St,Q as Bt,R as Pt,S as Mt,T as Wt,U as Et,V as Dt,W as Lt,X as It,Y as Tt,Z as Rt,_ as $t,b as P,h as yt}from"./chunk-7W6UQGC5.mjs";import{a as f,d as Qt}from"./chunk-AQ6EADP3.mjs";var Jt=Qt(Ct(),1);function Nt(t){return Number.isSafeInteger(t)&&t>=0}f(Nt,"isLength");function U(t){return t!=null&&typeof t!="function"&&Nt(t.length)}f(U,"isArrayLike");function kt(t){return t==="__proto__"}f(kt,"isUnsafeProperty");function d(t){return t==null||typeof t!="object"&&typeof t!="function"}f(d,"isPrimitive");function H(t){return Object.getOwnPropertySymbols(t).filter(r=>Object.prototype.propertyIsEnumerable.call(t,r))}f(H,"getSymbols");function l(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}f(l,"getTag");var L="[object RegExp]",h="[object String]",w="[object Number]",A="[object Boolean]",O="[object Arguments]",I="[object Symbol]",T="[object Date]",R="[object Map]",$="[object Set]",q="[object Array]";var F="[object ArrayBuffer]",M="[object Object]";var N="[object DataView]",K="[object Uint8Array]",V="[object Uint8ClampedArray]",X="[object Uint16Array]",Y="[object Uint32Array]";var J="[object Int8Array]",Z="[object Int16Array]",v="[object Int32Array]";var G="[object Float32Array]",Q="[object Float64Array]";function W(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}f(W,"isTypedArray");function zt(t,r){return E(t,void 0,t,new Map,r)}f(zt,"cloneDeepWith");function E(t,r,o,e=new Map,i=void 0){let s=i?.(t,r,o,e);if(s!==void 0)return s;if(d(t))return t;if(e.has(t))return e.get(t);if(Array.isArray(t)){let n=new Array(t.length);e.set(t,n);for(let a=0;a{let n=r?.(o,e,i,s);if(n!==void 0)return n;if(typeof t=="object"){if(l(t)===M&&typeof t.constructor!="function"){let a={};return s.set(t,a),u(a,t,i,s),a}switch(Object.prototype.toString.call(t)){case w:case h:case A:{let a=new t.constructor(t?.valueOf());return u(a,t),a}case O:{let a={};return u(a,t),a.length=t.length,a[Symbol.iterator]=t[Symbol.iterator],a}default:return}}})}f(_t,"cloneDeepWith");function nt(t){return _t(t)}f(nt,"cloneDeep");function k(t){return t!==null&&typeof t=="object"&&l(t)==="[object Arguments]"}f(k,"isArguments");function z(t){return typeof t=="object"&&t!==null}f(z,"isObjectLike");function jt(t){return z(t)&&U(t)}f(jt,"isArrayLikeObject");function Ut(t){return Array.isArray(t)}f(Ut,"isArray");function S(t,r){if(typeof t!="function"||r!=null&&typeof r!="function")throw new TypeError("Expected a function");let o=f(function(...i){let s=r?r.apply(this,i):i[0],n=o.cache;if(n.has(s))return n.get(s);let a=t.apply(this,i);return o.cache=n.set(s,a)||n,a},"memoized"),e=S.Cache||Map;return o.cache=new e,o}f(S,"memoize");S.Cache=Map;function Ht(){}f(Ht,"noop");function qt(t){let r=t?.constructor,o=typeof r=="function"?r.prototype:Object.prototype;return t===o}f(qt,"isPrototype");function b(t){return W(t)}f(b,"isTypedArray");function rr(t){if(d(t))return t;let r=l(t);if(!er(t))return{};if(Ut(t)){let e=Array.from(t);return t.length>0&&typeof t[0]=="string"&&Object.hasOwn(t,"index")&&(e.index=t.index,e.input=t.input),e}if(b(t)){let e=t,i=e.constructor;return new i(e.buffer,e.byteOffset,e.length)}if(r===F)return new ArrayBuffer(t.byteLength);if(r===N){let e=t,i=e.buffer,s=e.byteOffset,n=e.byteLength,a=new ArrayBuffer(n),p=new Uint8Array(i,s,n);return new Uint8Array(a).set(p),new DataView(a)}if(r===A||r===w||r===h){let e=t.constructor,i=new e(t.valueOf());return r===h?nr(i,t):it(i,t),i}if(r===T)return new Date(Number(t));if(r===L){let e=t,i=new RegExp(e.source,e.flags);return i.lastIndex=e.lastIndex,i}if(r===I)return Object(Symbol.prototype.valueOf.call(t));if(r===R){let e=t,i=new Map;return e.forEach((s,n)=>{i.set(n,s)}),i}if(r===$){let e=t,i=new Set;return e.forEach(s=>{i.add(s)}),i}if(r===O){let e=t,i={};return it(i,e),i.length=e.length,i[Symbol.iterator]=e[Symbol.iterator],i}let o={};return ir(o,t),it(o,t),or(o,t),o}f(rr,"clone");function er(t){switch(l(t)){case O:case q:case F:case N:case A:case T:case G:case Q:case J:case Z:case v:case R:case w:case M:case L:case $:case h:case I:case K:case V:case X:case Y:return!0;default:return!1}}f(er,"isCloneableObject");function it(t,r){for(let o in r)Object.hasOwn(r,o)&&(t[o]=r[o])}f(it,"copyOwnProperties");function or(t,r){let o=Object.getOwnPropertySymbols(r);for(let e=0;e=o)&&(t[e]=r[e])}f(nr,"cloneStringObjectProperties");function ir(t,r){let o=Object.getPrototypeOf(r);o!==null&&typeof r.constructor=="function"&&Object.setPrototypeOf(t,o)}f(ir,"copyPrototype");function C(t){if(typeof t!="object"||t==null)return!1;if(Object.getPrototypeOf(t)===null)return!0;if(Object.prototype.toString.call(t)!=="[object Object]"){let o=t[Symbol.toStringTag];return o==null||!Object.getOwnPropertyDescriptor(t,Symbol.toStringTag)?.writable?!1:t.toString()===`[object ${o}]`}let r=t;for(;Object.getPrototypeOf(r)!==null;)r=Object.getPrototypeOf(r);return Object.getPrototypeOf(t)===r}f(C,"isPlainObject");function Kt(t){if(d(t))return t;if(Array.isArray(t)||W(t)||t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer)return t.slice(0);let r=Object.getPrototypeOf(t);if(r==null)return Object.assign(Object.create(r),t);let o=r.constructor;if(t instanceof Date||t instanceof Map||t instanceof Set)return new o(t);if(t instanceof RegExp){let e=new o(t);return e.lastIndex=t.lastIndex,e}if(t instanceof DataView)return new o(t.buffer.slice(0));if(t instanceof Error){let e;return t instanceof AggregateError?e=new o(t.errors,t.message,{cause:t.cause}):e=new o(t.message,{cause:t.cause}),e.stack=t.stack,Object.assign(e,t),e}if(typeof File<"u"&&t instanceof File)return new o([t],t.name,{type:t.type,lastModified:t.lastModified});if(typeof t=="object"){let e=Object.create(r);return Object.assign(e,t)}return t}f(Kt,"clone");function Vt(t,...r){let o=r.slice(0,-1),e=r[r.length-1],i=t;for(let s=0;s"u"||!Buffer.isBuffer(t))&&!b(t)&&!k(t)?!1:t.length===0;if(typeof t=="object"){if(t instanceof Map||t instanceof Set)return t.size===0;let r=Object.keys(t);return qt(t)?r.filter(o=>o!=="constructor").length===0:r.length===0}return!0}f(fr,"isEmpty");var sr="\u200B",ar={curveBasis:bt,curveBasisClosed:wt,curveBasisOpen:At,curveBumpX:dt,curveBumpY:ht,curveBundle:Ot,curveCardinalClosed:Bt,curveCardinalOpen:Pt,curveCardinal:St,curveCatmullRomClosed:Wt,curveCatmullRomOpen:Et,curveCatmullRom:Mt,curveLinear:lt,curveLinearClosed:Dt,curveMonotoneX:Lt,curveMonotoneY:It,curveNatural:Tt,curveStep:Rt,curveStepAfter:Ft,curveStepBefore:$t},pr=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,cr=f(function(t,r){let o=Zt(t,/(?:init\b)|(?:initialize\b)/),e={};if(Array.isArray(o)){let n=o.map(a=>a.args);xt(n),e=ot(e,[...n])}else e=o.args;if(!e)return;let i=gt(t,r),s="config";return e[s]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),e[i]=e[s],delete e[s]),e},"detectInit"),Zt=f(function(t,r=null){try{let o=new RegExp(`[%]{2}(?![{]${pr.source})(?=[}][%]{2}).* +`,"ig");t=t.trim().replace(o,"").replace(/'/gm,'"'),P.debug(`Detecting diagram directive${r!==null?" type:"+r:""} based on the text:${t}`);let e,i=[];for(;(e=D.exec(t))!==null;)if(e.index===D.lastIndex&&D.lastIndex++,e&&!r||r&&e[1]?.match(r)||r&&e[2]?.match(r)){let s=e[1]?e[1]:e[2],n=e[3]?e[3].trim():e[4]?JSON.parse(e[4].trim()):null;i.push({type:s,args:n})}return i.length===0?{type:t,args:null}:i.length===1?i[0]:i}catch(o){return P.error(`ERROR: ${o.message} - Unable to parse directive type: '${r}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),Bo=f(function(t){return t.replace(D,"")},"removeDirectives"),mr=f(function(t,r){for(let[o,e]of r.entries())if(e.match(t))return o;return-1},"isSubstringInArray");function ur(t,r){if(!t)return r;let o=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return ar[o]??r}f(ur,"interpolateToCurve");function xr(t,r){let o=t.trim();if(o)return r.securityLevel!=="loose"?(0,Jt.sanitizeUrl)(o):o}f(xr,"formatUrl");var gr=f((t,...r)=>{let o=t.split("."),e=o.length-1,i=o[e],s=window;for(let n=0;n{o+=vt(i,r),r=i});let e=o/2;return at(t,e)}f(yr,"traverseEdge");function lr(t){return t.length===1?t[0]:yr(t)}f(lr,"calcLabelPosition");var Xt=f((t,r=2)=>{let o=Math.pow(10,r);return Math.round(t*o)/o},"roundNumber"),at=f((t,r)=>{let o,e=r;for(let i of t){if(o){let s=vt(i,o);if(s===0)return o;if(s=1)return{x:i.x,y:i.y};if(n>0&&n<1)return{x:Xt((1-n)*o.x+n*i.x,5),y:Xt((1-n)*o.y+n*i.y,5)}}}o=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),dr=f((t,r,o)=>{P.info(`our points ${JSON.stringify(r)}`),r[0]!==o&&(r=r.reverse());let i=at(r,25),s=t?10:5,n=Math.atan2(r[0].y-i.y,r[0].x-i.x),a={x:0,y:0};return a.x=Math.sin(n)*s+(r[0].x+i.x)/2,a.y=-Math.cos(n)*s+(r[0].y+i.y)/2,a},"calcCardinalityPosition");function hr(t,r,o){let e=structuredClone(o);P.info("our points",e),r!=="start_left"&&r!=="start_right"&&e.reverse();let i=25+t,s=at(e,i),n=10+t*.5,a=Math.atan2(e[0].y-s.y,e[0].x-s.x),p={x:0,y:0};return r==="start_left"?(p.x=Math.sin(a+Math.PI)*n+(e[0].x+s.x)/2,p.y=-Math.cos(a+Math.PI)*n+(e[0].y+s.y)/2):r==="end_right"?(p.x=Math.sin(a-Math.PI)*n+(e[0].x+s.x)/2-5,p.y=-Math.cos(a-Math.PI)*n+(e[0].y+s.y)/2-5):r==="end_left"?(p.x=Math.sin(a)*n+(e[0].x+s.x)/2-5,p.y=-Math.cos(a)*n+(e[0].y+s.y)/2-5):(p.x=Math.sin(a)*n+(e[0].x+s.x)/2,p.y=-Math.cos(a)*n+(e[0].y+s.y)/2),p}f(hr,"calcTerminalLabelPosition");function br(t){let r="",o="";for(let e of t)e!==void 0&&(e.startsWith("color:")||e.startsWith("text-align:")?o=o+e+";":r=r+e+";");return{style:r,labelStyle:o}}f(br,"getStylesFromArray");var Yt=0,wr=f(()=>(Yt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Yt),"generateId");function Ar(t){let r="",o="0123456789abcdef",e=o.length;for(let i=0;iAr(t.length),"random"),Sr=f(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),Br=f(function(t,r){let o=r.text.replace(j.lineBreakRegex," "),[,e]=ct(r.fontSize),i=t.append("text");i.attr("x",r.x),i.attr("y",r.y),i.style("text-anchor",r.anchor),i.style("font-family",r.fontFamily),i.style("font-size",e),i.style("font-weight",r.fontWeight),i.attr("fill",r.fill),r.class!==void 0&&i.attr("class",r.class);let s=i.append("tspan");return s.attr("x",r.x+r.textMargin*2),s.attr("fill",r.fill),s.text(o),i},"drawSimpleText"),Pr=S((t,r,o)=>{if(!t||(o=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},o),j.lineBreakRegex.test(t)))return t;let e=t.split(" ").filter(Boolean),i=[],s="";return e.forEach((n,a)=>{let p=et(`${n} `,o),c=et(s,o);if(p>r){let{hyphenatedStrings:y,remainingWord:g}=Mr(n,r,"-",o);i.push(s,...y),s=g}else c+p>=r?(i.push(s),s=n):s=[s,n].filter(Boolean).join(" ");a+1===e.length&&i.push(s)}),i.filter(n=>n!=="").join(o.joinWith)},(t,r,o)=>`${t}${r}${o.fontSize}${o.fontWeight}${o.fontFamily}${o.joinWith}`),Mr=S((t,r,o="-",e)=>{e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},e);let i=[...t],s=[],n="";return i.forEach((a,p)=>{let c=`${n}${a}`;if(et(c,e)>=r){let m=p+1,y=i.length===m,g=`${c}${o}`;s.push(y?c:g),n=""}else n=c}),{hyphenatedStrings:s,remainingWord:n}},(t,r,o="-",e)=>`${t}${r}${o}${e.fontSize}${e.fontWeight}${e.fontFamily}`);function Wr(t,r){return pt(t,r).height}f(Wr,"calculateTextHeight");function et(t,r){return pt(t,r).width}f(et,"calculateTextWidth");var pt=S((t,r)=>{let{fontSize:o=12,fontFamily:e="Arial",fontWeight:i=400}=r;if(!t)return{width:0,height:0};let[,s]=ct(o),n=["sans-serif",e],a=t.split(j.lineBreakRegex),p=[],c=yt("body");if(!c.remove)return{width:0,height:0,lineHeight:0};let x=c.append("svg");for(let y of n){let g=0,B={width:0,height:0,lineHeight:0};for(let Gt of a){let mt=Sr();mt.text=Gt||sr;let ut=Br(x,mt).style("font-size",s).style("font-weight",i).style("font-family",y),_=(ut._groups||ut)[0][0].getBBox();if(_.width===0&&_.height===0)throw new Error("svg element not in render tree");B.width=Math.round(Math.max(B.width,_.width)),g=Math.round(_.height),B.height+=g,B.lineHeight=Math.round(Math.max(B.lineHeight,g))}p.push(B)}x.remove();let m=isNaN(p[1].height)||isNaN(p[1].width)||isNaN(p[1].lineHeight)||p[0].height>p[1].height&&p[0].width>p[1].width&&p[0].lineHeight>p[1].lineHeight?0:1;return p[m]},(t,r)=>`${t}${r.fontSize}${r.fontWeight}${r.fontFamily}`),st=class{constructor(r=!1,o){this.count=0;this.count=o?o.length:0,this.next=r?()=>this.count++:()=>Date.now()}static{f(this,"InitIDGenerator")}},rt,Er=f(function(t){return rt=rt||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),rt.innerHTML=t,unescape(rt.textContent)},"entityDecode");function Po(t){return"str"in t}f(Po,"isDetailedError");var Dr=f((t,r,o,e)=>{if(!e)return;let i=t.node()?.getBBox();i&&t.append("text").text(e).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-o).attr("class",r)},"insertTitle"),ct=f(t=>{if(typeof t=="number")return[t,t+"px"];let r=parseInt(t??"",10);return Number.isNaN(r)?[void 0,void 0]:t===String(r)?[r,t+"px"]:[r,t]},"parseFontSize");function Lr(t,r){return ft({},t,r)}f(Lr,"cleanAndMerge");var Mo={assignWithDepth:ot,wrapLabel:Pr,calculateTextHeight:Wr,calculateTextWidth:et,calculateTextDimensions:pt,cleanAndMerge:Lr,detectInit:cr,detectDirective:Zt,isSubstringInArray:mr,interpolateToCurve:ur,calcLabelPosition:lr,calcCardinalityPosition:dr,calcTerminalLabelPosition:hr,formatUrl:xr,getStylesFromArray:br,generateId:wr,random:Or,runFunc:gr,entityDecode:Er,insertTitle:Dr,isLabelCoordinateInPath:Ir,parseFontSize:ct,InitIDGenerator:st},Wo=f(function(t){let r=t;return r=r.replace(/style.*:\S*#.*;/g,function(o){return o.substring(0,o.length-1)}),r=r.replace(/classDef.*:\S*#.*;/g,function(o){return o.substring(0,o.length-1)}),r=r.replace(/#\w+;/g,function(o){let e=o.substring(1,o.length-1);return/^\+?\d+$/.test(e)?"\uFB02\xB0\xB0"+e+"\xB6\xDF":"\uFB02\xB0"+e+"\xB6\xDF"}),r},"encodeEntities"),Eo=f(function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities");var Do=f((t,r,{counter:o=0,prefix:e,suffix:i},s)=>s||`${e?`${e}_`:""}${t}_${r}_${o}${i?`_${i}`:""}`,"getEdgeId");function Lo(t){return t??null}f(Lo,"handleUndefinedAttr");function Ir(t,r){let o=Math.round(t.x),e=Math.round(t.y),i=r.replace(/(\d+\.\d+)/g,s=>Math.round(parseFloat(s)).toString());return i.includes(o.toString())||i.includes(e.toString())}f(Ir,"isLabelCoordinateInPath");export{rr as a,fr as b,sr as c,Bo as d,ur as e,br as f,wr as g,Or as h,Pr as i,Wr as j,et as k,pt as l,Po as m,ct as n,Lr as o,Mo as p,Wo as q,Eo as r,Do as s,Lo as t}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-QA3QBVWF.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-QA3QBVWF.mjs.map new file mode 100644 index 0000000..2de88ae --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-QA3QBVWF.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/utils.ts", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/predicate/isLength.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/predicate/isPrimitive.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/_internal/tags.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/object/cloneDeepWith.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/object/cloneDeep.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/predicate/isArray.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/function/memoize.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/function/noop.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/object/clone.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/object/clone.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/object/mergeWith.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/object/merge.mjs", "../../../../../node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs"], + "sourcesContent": ["import { sanitizeUrl } from '@braintree/sanitize-url';\nimport type { BaseType, CurveFactory } from 'd3';\nimport {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select,\n} from 'd3';\nimport common from './diagrams/common/common.js';\nimport { sanitizeDirective } from './utils/sanitizeDirective.js';\nimport { log } from './logger.js';\nimport { detectType } from './diagram-api/detectType.js';\nimport assignWithDepth from './assignWithDepth.js';\nimport type { MermaidConfig } from './config.type.js';\nimport { memoize, merge } from 'es-toolkit/compat';\nimport { directiveRegex } from './diagram-api/regexes.js';\nimport type { D3Element, Point, TextDimensionConfig, TextDimensions } from './types.js';\n\nexport const ZERO_WIDTH_SPACE = '\\u200b';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBumpX: curveBumpX,\n curveBumpY: curveBumpY,\n curveBundle: curveBundle,\n curveCardinalClosed: curveCardinalClosed,\n curveCardinalOpen: curveCardinalOpen,\n curveCardinal: curveCardinal,\n curveCatmullRomClosed: curveCatmullRomClosed,\n curveCatmullRomOpen: curveCatmullRomOpen,\n curveCatmullRom: curveCatmullRom,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore,\n} as const;\n\nconst directiveWithoutOpen =\n /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\n/**\n * Detects the init config object from the text\n *\n * @param text - The text defining the graph. For example:\n *\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * Or\n *\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param config - Optional mermaid configuration object.\n * @returns The json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function (\n text: string,\n config?: MermaidConfig\n): MermaidConfig | undefined {\n const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results: MermaidConfig & { config?: unknown } = {};\n\n if (Array.isArray(inits)) {\n const args = inits.map((init) => init.args);\n sanitizeDirective(args);\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args as MermaidConfig;\n }\n\n if (!results) {\n return;\n }\n\n let type = detectType(text, config);\n\n // Move the `config` value to appropriate diagram type value\n const prop = 'config';\n if (results[prop] !== undefined) {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type as keyof MermaidConfig] = results[prop];\n delete results[prop];\n }\n\n return results;\n};\n\ninterface Directive {\n type?: string;\n args?: unknown;\n}\n/**\n * Detects the directive from the text.\n *\n * Text can be single line or multiline. If type is null or omitted,\n * the first directive encountered in text will be returned\n *\n * ```mermaid\n * graph LR\n * %%{someDirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param text - The text defining the graph\n * @param type - The directive to return (default: `null`)\n * @returns An object or Array representing the directive(s) matched by the input type.\n * If a single directive was found, that directive object will be returned.\n */\nexport const detectDirective = function (\n text: string,\n type: string | RegExp | null = null\n): Directive | Directive[] {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text.trim().replace(commentWithoutDirectives, '').replace(/'/gm, '\"');\n log.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match: RegExpExecArray | null;\n const result: Directive[] = [];\n while ((match = directiveRegex.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directiveRegex.lastIndex) {\n directiveRegex.lastIndex++;\n }\n if ((match && !type) || (type && match[1]?.match(type)) || (type && match[2]?.match(type))) {\n const type = match[1] ? match[1] : match[2];\n const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n return { type: text, args: null };\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log.error(\n `ERROR: ${\n (error as Error).message\n } - Unable to parse directive type: '${type}' based on the text: '${text}'`\n );\n return { type: undefined, args: null };\n }\n};\n\nexport const removeDirectives = function (text: string): string {\n return text.replace(directiveRegex, '');\n};\n\n/**\n * Detects whether a substring in present in a given array\n *\n * @param str - The substring to detect\n * @param arr - The array to search\n * @returns The array index containing the substring or -1 if not present\n */\nexport const isSubstringInArray = function (str: string, arr: string[]): number {\n for (const [i, element] of arr.entries()) {\n if (element.match(str)) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Returns a d3 curve given a curve name\n *\n * @param interpolate - The interpolation name\n * @param defaultCurve - The default curve to return\n * @returns The curve factory to use\n */\nexport function interpolateToCurve(\n interpolate: string | undefined,\n defaultCurve: CurveFactory\n): CurveFactory {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n\n // @ts-ignore TODO: Fix issue with curve type\n return d3CurveTypes[curveName as keyof typeof d3CurveTypes] ?? defaultCurve;\n}\n\n/**\n * Formats a URL string\n *\n * @param linkStr - String of the URL\n * @param config - Configuration passed to MermaidJS\n * @returns The formatted URL or `undefined`.\n */\nexport function formatUrl(linkStr: string, config: MermaidConfig): string | undefined {\n const url = linkStr.trim();\n\n if (!url) {\n return undefined;\n }\n\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n}\n\n/**\n * Runs a function\n *\n * @param functionName - A dot separated path to the function relative to the `window`\n * @param params - Parameters to pass to the function\n */\nexport const runFunc = (functionName: string, ...params: unknown[]) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i] as keyof typeof obj];\n if (!obj) {\n log.error(`Function name: ${functionName} not found in window`);\n return;\n }\n }\n\n obj[fnName as keyof typeof obj](...params);\n};\n\n/**\n * Finds the distance between two points using the Distance Formula\n *\n * @param p1 - The first point\n * @param p2 - The second point\n * @returns The distance between the two points.\n */\nfunction distance(p1?: Point, p2?: Point): number {\n if (!p1 || !p2) {\n return 0;\n }\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\n/**\n * TODO: Give this a description\n *\n * @param points - List of points\n */\nfunction traverseEdge(points: Point[]): Point {\n let prevPoint: Point | undefined;\n let totalDistance = 0;\n\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n const remainingDistance = totalDistance / 2;\n return calculatePoint(points, remainingDistance);\n}\n\n/**\n * {@inheritdoc traverseEdge}\n */\nfunction calcLabelPosition(points: Point[]): Point {\n if (points.length === 1) {\n return points[0];\n }\n return traverseEdge(points);\n}\n\nexport const roundNumber = (num: number, precision = 2) => {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n};\n\nexport const calculatePoint = (points: Point[], distanceToTraverse: number): Point => {\n let prevPoint: Point | undefined = undefined;\n let remainingDistance = distanceToTraverse;\n for (const point of points) {\n if (prevPoint) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance === 0) {\n return prevPoint;\n }\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n return prevPoint;\n }\n if (distanceRatio >= 1) {\n return { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n return {\n x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),\n y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5),\n };\n }\n }\n }\n prevPoint = point;\n }\n throw new Error('Could not find a suitable point for the given distance');\n};\n\nconst calcCardinalityPosition = (\n isRelationTypePresent: boolean,\n points: Point[],\n initialPosition: Point\n) => {\n log.info(`our points ${JSON.stringify(points)}`);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n const d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but perpendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\n/**\n * Calculates the terminal label position.\n *\n * @param terminalMarkerSize - Terminal marker size.\n * @param position - Position of label relative to points.\n * @param _points - Array of points.\n * @returns - The `cardinalityPosition`.\n */\nfunction calcTerminalLabelPosition(\n terminalMarkerSize: number,\n position: 'start_left' | 'start_right' | 'end_left' | 'end_right',\n _points: Point[]\n): Point {\n const points = structuredClone(_points);\n log.info('our points', points);\n if (position !== 'start_left' && position !== 'start_right') {\n points.reverse();\n }\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n const d = 10 + terminalMarkerSize * 0.5;\n //Calculate Angle for x and y axis\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n\n const cardinalityPosition: Point = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but perpendicular and with offset-distance\n\n if (position === 'start_left') {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n } else if (position === 'end_right') {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n } else if (position === 'end_left') {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n } else {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n }\n return cardinalityPosition;\n}\n\n/**\n * Gets styles from an array of declarations\n *\n * @param arr - Declarations\n * @returns The styles grouped as strings\n */\nexport function getStylesFromArray(arr: string[]): { style: string; labelStyle: string } {\n let style = '';\n let labelStyle = '';\n\n for (const element of arr) {\n if (element !== undefined) {\n // add text properties to label style definition\n if (element.startsWith('color:') || element.startsWith('text-align:')) {\n labelStyle = labelStyle + element + ';';\n } else {\n style = style + element + ';';\n }\n }\n }\n\n return { style, labelStyle };\n}\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;\n};\n\n/**\n * Generates a random hexadecimal id of the given length.\n *\n * @param length - Length of string.\n * @returns The generated string.\n */\nfunction makeRandomHex(length: number): string {\n let result = '';\n const characters = '0123456789abcdef';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = (options: { length: number }) => {\n return makeRandomHex(options.length);\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined,\n text: '',\n };\n};\n\n/**\n * Adds text to an element\n *\n * @param elem - SVG Element to add text to\n * @param textData - Text options.\n * @returns Text element with given styling and content\n */\nexport const drawSimpleText = function (\n elem: SVGElement,\n textData: {\n text: string;\n x: number;\n y: number;\n anchor: 'start' | 'middle' | 'end';\n fontFamily: string;\n fontSize: string | number;\n fontWeight: string | number;\n fill: string;\n class: string | undefined;\n textMargin: number;\n }\n): SVGTextElement {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const [, _fontSizePx] = parseFontSize(textData.fontSize);\n\n const textElem = elem.append('text') as any;\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', _fontSizePx);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n\n if (textData.class !== undefined) {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\ninterface WrapLabelConfig {\n fontSize: number;\n fontFamily: string;\n fontWeight: number;\n joinWith: string;\n}\n\nexport const wrapLabel: (label: string, maxWidth: number, config: WrapLabelConfig) => string =\n memoize(\n (label: string, maxWidth: number, config: WrapLabelConfig): string => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
    ' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ').filter(Boolean);\n const completedLines: string[] = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}${maxWidth}${config.fontSize}${config.fontWeight}${config.fontFamily}${config.joinWith}`\n );\n\ninterface BreakStringOutput {\n hyphenatedStrings: string[];\n remainingWord: string;\n}\n\nconst breakString: (\n word: string,\n maxWidth: number,\n hyphenCharacter: string,\n config: WrapLabelConfig\n) => BreakStringOutput = memoize(\n (\n word: string,\n maxWidth: number,\n hyphenCharacter = '-',\n config: WrapLabelConfig\n ): BreakStringOutput => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = [...word];\n const lines: string[] = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}${maxWidth}${hyphenCharacter}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and both the statically\n * configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text has greater height, we extend the height, so it's value won't overflow.\n *\n * @param text - The text to measure\n * @param config - The config for fontSize, fontFamily, and fontWeight all impacting the\n * resulting size\n * @returns The height for the given text\n */\nexport function calculateTextHeight(\n text: Parameters[0],\n config: Parameters[1]\n): ReturnType['height'] {\n return calculateTextDimensions(text, config).height;\n}\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @param text - The text to calculate the width of\n * @param config - The config for fontSize, fontFamily, and fontWeight all impacting the\n * resulting size\n * @returns The width for the given text\n */\nexport function calculateTextWidth(\n text: Parameters[0],\n config: Parameters[1]\n): ReturnType['width'] {\n return calculateTextDimensions(text, config).width;\n}\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and\n * margins.\n *\n * @param text - The text to calculate the width of\n * @param config - The config for fontSize, fontFamily, fontWeight, and margin all impacting\n * the resulting size\n * @returns The dimensions for the given text\n */\nexport const calculateTextDimensions: (\n text: string,\n config: TextDimensionConfig\n) => TextDimensions = memoize(\n (text: string, config: TextDimensionConfig): TextDimensions => {\n const { fontSize = 12, fontFamily = 'Arial', fontWeight = 400 } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n const [, _fontSizePx] = parseFontSize(fontSize);\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n const dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (const fontFamily of fontFamilies) {\n let cHeight = 0;\n const dim = { width: 0, height: 0, lineHeight: 0 };\n for (const line of lines) {\n const textObj = getTextObj();\n textObj.text = line || ZERO_WIDTH_SPACE;\n // @ts-ignore TODO: Fix D3 types\n const textElem = drawSimpleText(g, textObj)\n // @ts-ignore TODO: Fix D3 types\n .style('font-size', _fontSizePx)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n const bBox = (textElem._groups || textElem)[0][0].getBBox();\n if (bBox.width === 0 && bBox.height === 0) {\n throw new Error('svg element not in render tree');\n }\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cHeight = Math.round(bBox.height);\n dim.height += cHeight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cHeight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n const index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\n\nexport class InitIDGenerator {\n private count = 0;\n public next: () => number;\n constructor(deterministic = false, seed?: string) {\n // TODO: Seed is only used for length?\n // v11: Use the actual value of seed string to generate an initial value for count.\n this.count = seed ? seed.length : 0;\n this.next = deterministic ? () => this.count++ : () => Date.now();\n }\n}\n\nlet decoder: HTMLDivElement;\n\n/**\n * Decodes HTML, source: {@link https://github.com/shrpne/entity-decode/blob/v2.0.1/browser.js}\n *\n * @param html - HTML as a string\n * @returns Unescaped HTML\n */\nexport const entityDecode = function (html: string): string {\n decoder = decoder || document.createElement('div');\n // Escape HTML before decoding for HTML Entities\n html = escape(html).replace(/%26/g, '&').replace(/%23/g, '#').replace(/%3B/g, ';');\n decoder.innerHTML = html;\n\n return unescape(decoder.textContent!);\n};\n\nexport interface DetailedError {\n str: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n hash: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error?: any;\n message?: string;\n}\n\n/** @param error - The error to check */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isDetailedError(error: any): error is DetailedError {\n return 'str' in error;\n}\n\n/** @param error - The error to convert to an error message */\nexport function getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n\n/**\n * Appends element with the given title and css class.\n *\n * @param parent - d3 svg object to append title to\n * @param cssClass - CSS class for the element containing the title\n * @param titleTopMargin - Margin in pixels between title and rest of the graph\n * @param title - The title. If empty, returns immediately.\n */\nexport const insertTitle = (\n parent: D3Element,\n cssClass: string,\n titleTopMargin: number,\n title?: string\n): void => {\n if (!title) {\n return;\n }\n const bounds = parent.node()?.getBBox();\n if (!bounds) {\n return;\n }\n parent\n .append('text')\n .text(title)\n .attr('text-anchor', 'middle')\n .attr('x', bounds.x + bounds.width / 2)\n .attr('y', -titleTopMargin)\n .attr('class', cssClass);\n};\n\n/**\n * Parses a raw fontSize configuration value into a number and string value.\n *\n * @param fontSize - a string or number font size configuration value\n *\n * @returns parsed number and string style font size values, or nulls if a number value can't\n * be parsed from an input string.\n */\nexport const parseFontSize = (fontSize: string | number | undefined): [number?, string?] => {\n // if the font size is a number, assume a px string representation\n if (typeof fontSize === 'number') {\n return [fontSize, fontSize + 'px'];\n }\n\n const fontSizeNumber = parseInt(fontSize ?? '', 10);\n if (Number.isNaN(fontSizeNumber)) {\n // if a number value can't be parsed, return null for both values\n return [undefined, undefined];\n } else if (fontSize === String(fontSizeNumber)) {\n // if a string input doesn't contain any units, assume px units\n return [fontSizeNumber, fontSize + 'px'];\n } else {\n return [fontSizeNumber, fontSize];\n }\n};\n\nexport function cleanAndMerge(defaultData: T, data?: Partial): T {\n return merge({}, defaultData, data);\n}\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n cleanAndMerge,\n detectInit,\n detectDirective,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n runFunc,\n entityDecode,\n insertTitle,\n isLabelCoordinateInPath,\n parseFontSize,\n InitIDGenerator,\n};\n\n/**\n * @param text - text to be encoded\n * @returns\n */\nexport const encodeEntities = function (text: string): string {\n let txt = text;\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function (s): string {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function (s): string {\n return s.substring(0, s.length - 1);\n });\n\n txt = txt.replace(/#\\w+;/g, function (s) {\n const innerTxt = s.substring(1, s.length - 1);\n\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return '\uFB02\u00B0\u00B0' + innerTxt + '\u00B6\u00DF';\n } else {\n return '\uFB02\u00B0' + innerTxt + '\u00B6\u00DF';\n }\n });\n\n return txt;\n};\n\n/**\n * Partially reverts encoding done via {@link encodeEntities}\n *\n * @param text - text to be decoded\n * @returns\n */\nexport const decodeEntities = function (text: string): string {\n return text.replace(/\uFB02\u00B0\u00B0/g, '&#').replace(/\uFB02\u00B0/g, '&').replace(/\u00B6\u00DF/g, ';');\n};\n\nexport const isString = (value: unknown): value is string => {\n return typeof value === 'string';\n};\n\nexport const getEdgeId = (\n from: string,\n to: string,\n {\n counter = 0,\n prefix,\n suffix,\n }: {\n counter?: number;\n prefix?: string;\n suffix?: string;\n },\n id?: string\n) => {\n if (id) {\n return id;\n }\n return `${prefix ? `${prefix}_` : ''}${from}_${to}_${counter}${suffix ? `_${suffix}` : ''}`;\n};\n\n/**\n * D3's `selection.attr` method doesn't officially support `undefined`.\n *\n * However, it seems if you do pass `undefined`, it seems to be treated as `null`\n * (e.g. it removes the attribute).\n */\nexport function handleUndefinedAttr(\n attrValue: Parameters['attr']>[1] | undefined\n) {\n return attrValue ?? null;\n}\n\n/**\n * Checks if the x or y coordinate of the edge label\n * appears in the given SVG path data string.\n *\n * @param point - The Point object with x and y properties to check.\n * @param dAttr - SVG path data string (the 'd' attribute of an SVG path element).\n * @returns - True if the rounded x or y coordinate of the edge label is found\n * in the sanitized path data string; otherwise, false.\n */\nexport function isLabelCoordinateInPath(point: Point, dAttr: string) {\n const roundedX = Math.round(point.x);\n const roundedY = Math.round(point.y);\n\n const sanitizedD = dAttr.replace(/(\\d+\\.\\d+)/g, (match) =>\n Math.round(parseFloat(match)).toString()\n );\n\n return sanitizedD.includes(roundedX.toString()) || sanitizedD.includes(roundedY.toString());\n}\n", "function isLength(value) {\n return Number.isSafeInteger(value) && value >= 0;\n}\n\nexport { isLength };\n", "import { isLength } from '../../predicate/isLength.mjs';\n\nfunction isArrayLike(value) {\n return value != null && typeof value !== 'function' && isLength(value.length);\n}\n\nexport { isArrayLike };\n", "function isUnsafeProperty(key) {\n return key === '__proto__';\n}\n\nexport { isUnsafeProperty };\n", "function isPrimitive(value) {\n return value == null || (typeof value !== 'object' && typeof value !== 'function');\n}\n\nexport { isPrimitive };\n", "function getSymbols(object) {\n return Object.getOwnPropertySymbols(object).filter(symbol => Object.prototype.propertyIsEnumerable.call(object, symbol));\n}\n\nexport { getSymbols };\n", "function getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\n\nexport { getTag };\n", "const regexpTag = '[object RegExp]';\nconst stringTag = '[object String]';\nconst numberTag = '[object Number]';\nconst booleanTag = '[object Boolean]';\nconst argumentsTag = '[object Arguments]';\nconst symbolTag = '[object Symbol]';\nconst dateTag = '[object Date]';\nconst mapTag = '[object Map]';\nconst setTag = '[object Set]';\nconst arrayTag = '[object Array]';\nconst functionTag = '[object Function]';\nconst arrayBufferTag = '[object ArrayBuffer]';\nconst objectTag = '[object Object]';\nconst errorTag = '[object Error]';\nconst dataViewTag = '[object DataView]';\nconst uint8ArrayTag = '[object Uint8Array]';\nconst uint8ClampedArrayTag = '[object Uint8ClampedArray]';\nconst uint16ArrayTag = '[object Uint16Array]';\nconst uint32ArrayTag = '[object Uint32Array]';\nconst bigUint64ArrayTag = '[object BigUint64Array]';\nconst int8ArrayTag = '[object Int8Array]';\nconst int16ArrayTag = '[object Int16Array]';\nconst int32ArrayTag = '[object Int32Array]';\nconst bigInt64ArrayTag = '[object BigInt64Array]';\nconst float32ArrayTag = '[object Float32Array]';\nconst float64ArrayTag = '[object Float64Array]';\n\nexport { argumentsTag, arrayBufferTag, arrayTag, bigInt64ArrayTag, bigUint64ArrayTag, booleanTag, dataViewTag, dateTag, errorTag, float32ArrayTag, float64ArrayTag, functionTag, int16ArrayTag, int32ArrayTag, int8ArrayTag, mapTag, numberTag, objectTag, regexpTag, setTag, stringTag, symbolTag, uint16ArrayTag, uint32ArrayTag, uint8ArrayTag, uint8ClampedArrayTag };\n", "function isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexport { isTypedArray };\n", "import { getSymbols } from '../compat/_internal/getSymbols.mjs';\nimport { getTag } from '../compat/_internal/getTag.mjs';\nimport { uint32ArrayTag, uint16ArrayTag, uint8ClampedArrayTag, uint8ArrayTag, symbolTag, stringTag, setTag, regexpTag, objectTag, numberTag, mapTag, int32ArrayTag, int16ArrayTag, int8ArrayTag, float64ArrayTag, float32ArrayTag, dateTag, booleanTag, dataViewTag, arrayBufferTag, arrayTag, argumentsTag } from '../compat/_internal/tags.mjs';\nimport { isPrimitive } from '../predicate/isPrimitive.mjs';\nimport { isTypedArray } from '../predicate/isTypedArray.mjs';\n\nfunction cloneDeepWith(obj, cloneValue) {\n return cloneDeepWithImpl(obj, undefined, obj, new Map(), cloneValue);\n}\nfunction cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = new Map(), cloneValue = undefined) {\n const cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack);\n if (cloned !== undefined) {\n return cloned;\n }\n if (isPrimitive(valueToClone)) {\n return valueToClone;\n }\n if (stack.has(valueToClone)) {\n return stack.get(valueToClone);\n }\n if (Array.isArray(valueToClone)) {\n const result = new Array(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n if (Object.hasOwn(valueToClone, 'index')) {\n result.index = valueToClone.index;\n }\n if (Object.hasOwn(valueToClone, 'input')) {\n result.input = valueToClone.input;\n }\n return result;\n }\n if (valueToClone instanceof Date) {\n return new Date(valueToClone.getTime());\n }\n if (valueToClone instanceof RegExp) {\n const result = new RegExp(valueToClone.source, valueToClone.flags);\n result.lastIndex = valueToClone.lastIndex;\n return result;\n }\n if (valueToClone instanceof Map) {\n const result = new Map();\n stack.set(valueToClone, result);\n for (const [key, value] of valueToClone) {\n result.set(key, cloneDeepWithImpl(value, key, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (valueToClone instanceof Set) {\n const result = new Set();\n stack.set(valueToClone, result);\n for (const value of valueToClone) {\n result.add(cloneDeepWithImpl(value, undefined, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(valueToClone)) {\n return valueToClone.subarray();\n }\n if (isTypedArray(valueToClone)) {\n const result = new (Object.getPrototypeOf(valueToClone).constructor)(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n return result;\n }\n if (valueToClone instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer !== 'undefined' && valueToClone instanceof SharedArrayBuffer)) {\n return valueToClone.slice(0);\n }\n if (valueToClone instanceof DataView) {\n const result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength);\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof File !== 'undefined' && valueToClone instanceof File) {\n const result = new File([valueToClone], valueToClone.name, {\n type: valueToClone.type,\n });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof Blob !== 'undefined' && valueToClone instanceof Blob) {\n const result = new Blob([valueToClone], { type: valueToClone.type });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Error) {\n const result = structuredClone(valueToClone);\n stack.set(valueToClone, result);\n result.message = valueToClone.message;\n result.name = valueToClone.name;\n result.stack = valueToClone.stack;\n result.cause = valueToClone.cause;\n result.constructor = valueToClone.constructor;\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Boolean) {\n const result = new Boolean(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Number) {\n const result = new Number(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof String) {\n const result = new String(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof valueToClone === 'object' && isCloneableObject(valueToClone)) {\n const result = Object.create(Object.getPrototypeOf(valueToClone));\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n return valueToClone;\n}\nfunction copyProperties(target, source, objectToClone = target, stack, cloneValue) {\n const keys = [...Object.keys(source), ...getSymbols(source)];\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n if (descriptor == null || descriptor.writable) {\n target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue);\n }\n }\n}\nfunction isCloneableObject(object) {\n switch (getTag(object)) {\n case argumentsTag:\n case arrayTag:\n case arrayBufferTag:\n case dataViewTag:\n case booleanTag:\n case dateTag:\n case float32ArrayTag:\n case float64ArrayTag:\n case int8ArrayTag:\n case int16ArrayTag:\n case int32ArrayTag:\n case mapTag:\n case numberTag:\n case objectTag:\n case regexpTag:\n case setTag:\n case stringTag:\n case symbolTag:\n case uint8ArrayTag:\n case uint8ClampedArrayTag:\n case uint16ArrayTag:\n case uint32ArrayTag: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n\nexport { cloneDeepWith, cloneDeepWithImpl, copyProperties };\n", "import { cloneDeepWith as cloneDeepWith$1, copyProperties } from '../../object/cloneDeepWith.mjs';\nimport { getTag } from '../_internal/getTag.mjs';\nimport { objectTag, argumentsTag, booleanTag, stringTag, numberTag } from '../_internal/tags.mjs';\n\nfunction cloneDeepWith(obj, customizer) {\n return cloneDeepWith$1(obj, (value, key, object, stack) => {\n const cloned = customizer?.(value, key, object, stack);\n if (cloned !== undefined) {\n return cloned;\n }\n if (typeof obj !== 'object') {\n return undefined;\n }\n if (getTag(obj) === objectTag && typeof obj.constructor !== 'function') {\n const result = {};\n stack.set(obj, result);\n copyProperties(result, obj, object, stack);\n return result;\n }\n switch (Object.prototype.toString.call(obj)) {\n case numberTag:\n case stringTag:\n case booleanTag: {\n const result = new obj.constructor(obj?.valueOf());\n copyProperties(result, obj);\n return result;\n }\n case argumentsTag: {\n const result = {};\n copyProperties(result, obj);\n result.length = obj.length;\n result[Symbol.iterator] = obj[Symbol.iterator];\n return result;\n }\n default: {\n return undefined;\n }\n }\n });\n}\n\nexport { cloneDeepWith };\n", "import { cloneDeepWith } from './cloneDeepWith.mjs';\n\nfunction cloneDeep(obj) {\n return cloneDeepWith(obj);\n}\n\nexport { cloneDeep };\n", "import { getTag } from '../_internal/getTag.mjs';\n\nfunction isArguments(value) {\n return value !== null && typeof value === 'object' && getTag(value) === '[object Arguments]';\n}\n\nexport { isArguments };\n", "function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\n\nexport { isObjectLike };\n", "import { isArrayLike } from './isArrayLike.mjs';\nimport { isObjectLike } from './isObjectLike.mjs';\n\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport { isArrayLikeObject };\n", "function isArray(value) {\n return Array.isArray(value);\n}\n\nexport { isArray };\n", "function memoize(func, resolver) {\n if (typeof func !== 'function' || (resolver != null && typeof resolver !== 'function')) {\n throw new TypeError('Expected a function');\n }\n const memoized = function (...args) {\n const key = resolver ? resolver.apply(this, args) : args[0];\n const cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n const CacheConstructor = memoize.Cache || Map;\n memoized.cache = new CacheConstructor();\n return memoized;\n}\nmemoize.Cache = Map;\n\nexport { memoize };\n", "function noop() { }\n\nexport { noop };\n", "function isPrototype(value) {\n const constructor = value?.constructor;\n const prototype = typeof constructor === 'function' ? constructor.prototype : Object.prototype;\n return value === prototype;\n}\n\nexport { isPrototype };\n", "import { isTypedArray as isTypedArray$1 } from '../../predicate/isTypedArray.mjs';\n\nfunction isTypedArray(x) {\n return isTypedArray$1(x);\n}\n\nexport { isTypedArray };\n", "import { isPrimitive } from '../../predicate/isPrimitive.mjs';\nimport { getTag } from '../_internal/getTag.mjs';\nimport { arrayBufferTag, dataViewTag, booleanTag, numberTag, stringTag, dateTag, regexpTag, symbolTag, mapTag, setTag, argumentsTag, uint32ArrayTag, uint16ArrayTag, uint8ClampedArrayTag, uint8ArrayTag, objectTag, int32ArrayTag, int16ArrayTag, int8ArrayTag, float64ArrayTag, float32ArrayTag, arrayTag } from '../_internal/tags.mjs';\nimport { isArray } from '../predicate/isArray.mjs';\nimport { isTypedArray } from '../predicate/isTypedArray.mjs';\n\nfunction clone(obj) {\n if (isPrimitive(obj)) {\n return obj;\n }\n const tag = getTag(obj);\n if (!isCloneableObject(obj)) {\n return {};\n }\n if (isArray(obj)) {\n const result = Array.from(obj);\n if (obj.length > 0 && typeof obj[0] === 'string' && Object.hasOwn(obj, 'index')) {\n result.index = obj.index;\n result.input = obj.input;\n }\n return result;\n }\n if (isTypedArray(obj)) {\n const typedArray = obj;\n const Ctor = typedArray.constructor;\n return new Ctor(typedArray.buffer, typedArray.byteOffset, typedArray.length);\n }\n if (tag === arrayBufferTag) {\n return new ArrayBuffer(obj.byteLength);\n }\n if (tag === dataViewTag) {\n const dataView = obj;\n const buffer = dataView.buffer;\n const byteOffset = dataView.byteOffset;\n const byteLength = dataView.byteLength;\n const clonedBuffer = new ArrayBuffer(byteLength);\n const srcView = new Uint8Array(buffer, byteOffset, byteLength);\n const destView = new Uint8Array(clonedBuffer);\n destView.set(srcView);\n return new DataView(clonedBuffer);\n }\n if (tag === booleanTag || tag === numberTag || tag === stringTag) {\n const Ctor = obj.constructor;\n const clone = new Ctor(obj.valueOf());\n if (tag === stringTag) {\n cloneStringObjectProperties(clone, obj);\n }\n else {\n copyOwnProperties(clone, obj);\n }\n return clone;\n }\n if (tag === dateTag) {\n return new Date(Number(obj));\n }\n if (tag === regexpTag) {\n const regExp = obj;\n const clone = new RegExp(regExp.source, regExp.flags);\n clone.lastIndex = regExp.lastIndex;\n return clone;\n }\n if (tag === symbolTag) {\n return Object(Symbol.prototype.valueOf.call(obj));\n }\n if (tag === mapTag) {\n const map = obj;\n const result = new Map();\n map.forEach((obj, key) => {\n result.set(key, obj);\n });\n return result;\n }\n if (tag === setTag) {\n const set = obj;\n const result = new Set();\n set.forEach(obj => {\n result.add(obj);\n });\n return result;\n }\n if (tag === argumentsTag) {\n const args = obj;\n const result = {};\n copyOwnProperties(result, args);\n result.length = args.length;\n result[Symbol.iterator] = args[Symbol.iterator];\n return result;\n }\n const result = {};\n copyPrototype(result, obj);\n copyOwnProperties(result, obj);\n copySymbolProperties(result, obj);\n return result;\n}\nfunction isCloneableObject(object) {\n switch (getTag(object)) {\n case argumentsTag:\n case arrayTag:\n case arrayBufferTag:\n case dataViewTag:\n case booleanTag:\n case dateTag:\n case float32ArrayTag:\n case float64ArrayTag:\n case int8ArrayTag:\n case int16ArrayTag:\n case int32ArrayTag:\n case mapTag:\n case numberTag:\n case objectTag:\n case regexpTag:\n case setTag:\n case stringTag:\n case symbolTag:\n case uint8ArrayTag:\n case uint8ClampedArrayTag:\n case uint16ArrayTag:\n case uint32ArrayTag: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\nfunction copyOwnProperties(target, source) {\n for (const key in source) {\n if (Object.hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n}\nfunction copySymbolProperties(target, source) {\n const symbols = Object.getOwnPropertySymbols(source);\n for (let i = 0; i < symbols.length; i++) {\n const symbol = symbols[i];\n if (Object.prototype.propertyIsEnumerable.call(source, symbol)) {\n target[symbol] = source[symbol];\n }\n }\n}\nfunction cloneStringObjectProperties(target, source) {\n const stringLength = source.valueOf().length;\n for (const key in source) {\n if (Object.hasOwn(source, key) && (Number.isNaN(Number(key)) || Number(key) >= stringLength)) {\n target[key] = source[key];\n }\n }\n}\nfunction copyPrototype(target, source) {\n const proto = Object.getPrototypeOf(source);\n if (proto !== null) {\n const Ctor = source.constructor;\n if (typeof Ctor === 'function') {\n Object.setPrototypeOf(target, proto);\n }\n }\n}\n\nexport { clone };\n", "function isPlainObject(object) {\n if (typeof object !== 'object') {\n return false;\n }\n if (object == null) {\n return false;\n }\n if (Object.getPrototypeOf(object) === null) {\n return true;\n }\n if (Object.prototype.toString.call(object) !== '[object Object]') {\n const tag = object[Symbol.toStringTag];\n if (tag == null) {\n return false;\n }\n const isTagReadonly = !Object.getOwnPropertyDescriptor(object, Symbol.toStringTag)?.writable;\n if (isTagReadonly) {\n return false;\n }\n return object.toString() === `[object ${tag}]`;\n }\n let proto = object;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(object) === proto;\n}\n\nexport { isPlainObject };\n", "import { isPrimitive } from '../predicate/isPrimitive.mjs';\nimport { isTypedArray } from '../predicate/isTypedArray.mjs';\n\nfunction clone(obj) {\n if (isPrimitive(obj)) {\n return obj;\n }\n if (Array.isArray(obj) ||\n isTypedArray(obj) ||\n obj instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer !== 'undefined' && obj instanceof SharedArrayBuffer)) {\n return obj.slice(0);\n }\n const prototype = Object.getPrototypeOf(obj);\n if (prototype == null) {\n return Object.assign(Object.create(prototype), obj);\n }\n const Constructor = prototype.constructor;\n if (obj instanceof Date || obj instanceof Map || obj instanceof Set) {\n return new Constructor(obj);\n }\n if (obj instanceof RegExp) {\n const newRegExp = new Constructor(obj);\n newRegExp.lastIndex = obj.lastIndex;\n return newRegExp;\n }\n if (obj instanceof DataView) {\n return new Constructor(obj.buffer.slice(0));\n }\n if (obj instanceof Error) {\n let newError;\n if (obj instanceof AggregateError) {\n newError = new Constructor(obj.errors, obj.message, { cause: obj.cause });\n }\n else {\n newError = new Constructor(obj.message, { cause: obj.cause });\n }\n newError.stack = obj.stack;\n Object.assign(newError, obj);\n return newError;\n }\n if (typeof File !== 'undefined' && obj instanceof File) {\n const newFile = new Constructor([obj], obj.name, { type: obj.type, lastModified: obj.lastModified });\n return newFile;\n }\n if (typeof obj === 'object') {\n const newObject = Object.create(prototype);\n return Object.assign(newObject, obj);\n }\n return obj;\n}\n\nexport { clone };\n", "import { cloneDeep } from './cloneDeep.mjs';\nimport { isUnsafeProperty } from '../../_internal/isUnsafeProperty.mjs';\nimport { clone } from '../../object/clone.mjs';\nimport { isPrimitive } from '../../predicate/isPrimitive.mjs';\nimport { getSymbols } from '../_internal/getSymbols.mjs';\nimport { isArguments } from '../predicate/isArguments.mjs';\nimport { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs';\nimport { isObjectLike } from '../predicate/isObjectLike.mjs';\nimport { isPlainObject } from '../predicate/isPlainObject.mjs';\nimport { isTypedArray } from '../predicate/isTypedArray.mjs';\n\nfunction mergeWith(object, ...otherArgs) {\n const sources = otherArgs.slice(0, -1);\n const merge = otherArgs[otherArgs.length - 1];\n let result = object;\n for (let i = 0; i < sources.length; i++) {\n const source = sources[i];\n result = mergeWithDeep(result, source, merge, new Map());\n }\n return result;\n}\nfunction mergeWithDeep(target, source, merge, stack) {\n if (isPrimitive(target)) {\n target = Object(target);\n }\n if (source == null || typeof source !== 'object') {\n return target;\n }\n if (stack.has(source)) {\n return clone(stack.get(source));\n }\n stack.set(source, target);\n if (Array.isArray(source)) {\n source = source.slice();\n for (let i = 0; i < source.length; i++) {\n source[i] = source[i] ?? undefined;\n }\n }\n const sourceKeys = [...Object.keys(source), ...getSymbols(source)];\n for (let i = 0; i < sourceKeys.length; i++) {\n const key = sourceKeys[i];\n if (isUnsafeProperty(key)) {\n continue;\n }\n let sourceValue = source[key];\n let targetValue = target[key];\n if (isArguments(sourceValue)) {\n sourceValue = { ...sourceValue };\n }\n if (isArguments(targetValue)) {\n targetValue = { ...targetValue };\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(sourceValue)) {\n sourceValue = cloneDeep(sourceValue);\n }\n if (Array.isArray(sourceValue)) {\n if (Array.isArray(targetValue)) {\n const cloned = [];\n const targetKeys = Reflect.ownKeys(targetValue);\n for (let i = 0; i < targetKeys.length; i++) {\n const targetKey = targetKeys[i];\n cloned[targetKey] = targetValue[targetKey];\n }\n targetValue = cloned;\n }\n else if (isArrayLikeObject(targetValue)) {\n const cloned = [];\n for (let i = 0; i < targetValue.length; i++) {\n cloned[i] = targetValue[i];\n }\n targetValue = cloned;\n }\n else {\n targetValue = [];\n }\n }\n const merged = merge(targetValue, sourceValue, key, target, source, stack);\n if (merged !== undefined) {\n target[key] = merged;\n }\n else if (Array.isArray(sourceValue)) {\n target[key] = mergeWithDeep(targetValue, sourceValue, merge, stack);\n }\n else if (isObjectLike(targetValue) &&\n isObjectLike(sourceValue) &&\n (isPlainObject(targetValue) ||\n isPlainObject(sourceValue) ||\n isTypedArray(targetValue) ||\n isTypedArray(sourceValue))) {\n target[key] = mergeWithDeep(targetValue, sourceValue, merge, stack);\n }\n else if (targetValue == null && isPlainObject(sourceValue)) {\n target[key] = mergeWithDeep({}, sourceValue, merge, stack);\n }\n else if (targetValue == null && isTypedArray(sourceValue)) {\n target[key] = cloneDeep(sourceValue);\n }\n else if (targetValue === undefined || sourceValue !== undefined) {\n target[key] = sourceValue;\n }\n }\n return target;\n}\n\nexport { mergeWith };\n", "import { mergeWith } from './mergeWith.mjs';\nimport { noop } from '../../function/noop.mjs';\n\nfunction merge(object, ...sources) {\n return mergeWith(object, ...sources, noop);\n}\n\nexport { merge };\n", "import { isArguments } from './isArguments.mjs';\nimport { isArrayLike } from './isArrayLike.mjs';\nimport { isTypedArray } from './isTypedArray.mjs';\nimport { isPrototype } from '../_internal/isPrototype.mjs';\n\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value)) {\n if (typeof value.splice !== 'function' &&\n typeof value !== 'string' &&\n (typeof Buffer === 'undefined' || !Buffer.isBuffer(value)) &&\n !isTypedArray(value) &&\n !isArguments(value)) {\n return false;\n }\n return value.length === 0;\n }\n if (typeof value === 'object') {\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n const keys = Object.keys(value);\n if (isPrototype(value)) {\n return keys.filter(x => x !== 'constructor').length === 0;\n }\n return keys.length === 0;\n }\n return true;\n}\n\nexport { isEmpty };\n"], + "mappings": "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", + "names": ["import_sanitize_url", "isLength", "value", "__name", "isArrayLike", "value", "isLength", "__name", "isUnsafeProperty", "key", "__name", "isPrimitive", "value", "__name", "getSymbols", "object", "symbol", "__name", "getTag", "value", "__name", "regexpTag", "stringTag", "numberTag", "booleanTag", "argumentsTag", "symbolTag", "dateTag", "mapTag", "setTag", "arrayTag", "arrayBufferTag", "objectTag", "dataViewTag", "uint8ArrayTag", "uint8ClampedArrayTag", "uint16ArrayTag", "uint32ArrayTag", "int8ArrayTag", "int16ArrayTag", "int32ArrayTag", "float32ArrayTag", "float64ArrayTag", "isTypedArray", "x", "__name", "cloneDeepWith", "obj", "cloneValue", "cloneDeepWithImpl", "__name", "valueToClone", "keyToClone", "objectToClone", "stack", "cloned", "isPrimitive", "result", "i", "key", "value", "isTypedArray", "copyProperties", "isCloneableObject", "target", "source", "keys", "getSymbols", "descriptor", "object", "getTag", "argumentsTag", "arrayTag", "arrayBufferTag", "dataViewTag", "booleanTag", "dateTag", "float32ArrayTag", "float64ArrayTag", "int8ArrayTag", "int16ArrayTag", "int32ArrayTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "symbolTag", "uint8ArrayTag", "uint8ClampedArrayTag", "uint16ArrayTag", "uint32ArrayTag", "cloneDeepWith", "obj", "customizer", "value", "key", "object", "stack", "cloned", "getTag", "objectTag", "result", "copyProperties", "numberTag", "stringTag", "booleanTag", "argumentsTag", "__name", "cloneDeep", "obj", "cloneDeepWith", "__name", "isArguments", "value", "getTag", "__name", "isObjectLike", "value", "__name", "isArrayLikeObject", "value", "isObjectLike", "isArrayLike", "__name", "isArray", "value", "__name", "memoize", "func", "resolver", "memoized", "__name", "args", "key", "cache", "result", "CacheConstructor", "noop", "__name", "isPrototype", "value", "constructor", "prototype", "__name", "isTypedArray", "x", "__name", "clone", "obj", "isPrimitive", "tag", "getTag", "isCloneableObject", "isArray", "result", "isTypedArray", "typedArray", "Ctor", "arrayBufferTag", "dataViewTag", "dataView", "buffer", "byteOffset", "byteLength", "clonedBuffer", "srcView", "booleanTag", "numberTag", "stringTag", "cloneStringObjectProperties", "copyOwnProperties", "dateTag", "regexpTag", "regExp", "symbolTag", "mapTag", "map", "key", "setTag", "set", "argumentsTag", "args", "copyPrototype", "copySymbolProperties", "__name", "object", "arrayTag", "float32ArrayTag", "float64ArrayTag", "int8ArrayTag", "int16ArrayTag", "int32ArrayTag", "objectTag", "uint8ArrayTag", "uint8ClampedArrayTag", "uint16ArrayTag", "uint32ArrayTag", "target", "source", "symbols", "i", "symbol", "stringLength", "proto", "isPlainObject", "object", "tag", "proto", "__name", "clone", "obj", "isPrimitive", "isTypedArray", "prototype", "Constructor", "newRegExp", "newError", "newObject", "__name", "mergeWith", "object", "otherArgs", "sources", "merge", "result", "i", "source", "mergeWithDeep", "__name", "target", "stack", "isPrimitive", "clone", "sourceKeys", "getSymbols", "key", "isUnsafeProperty", "sourceValue", "targetValue", "isArguments", "cloneDeep", "cloned", "targetKeys", "targetKey", "isArrayLikeObject", "merged", "isObjectLike", "isPlainObject", "isTypedArray", "merge", "object", "sources", "mergeWith", "noop", "__name", "isEmpty", "value", "isArrayLike", "isTypedArray", "isArguments", "keys", "isPrototype", "x", "__name", "ZERO_WIDTH_SPACE", "d3CurveTypes", "basis_default", "basisClosed_default", "basisOpen_default", "bumpX", "bumpY", "bundle_default", "cardinalClosed_default", "cardinalOpen_default", "cardinal_default", "catmullRomClosed_default", "catmullRomOpen_default", "catmullRom_default", "linear_default", "linearClosed_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "directiveWithoutOpen", "detectInit", "__name", "text", "config", "inits", "detectDirective", "results", "args", "init", "sanitizeDirective", "assignWithDepth_default", "type", "detectType", "prop", "commentWithoutDirectives", "log", "match", "result", "directiveRegex", "error", "removeDirectives", "isSubstringInArray", "str", "arr", "i", "element", "interpolateToCurve", "interpolate", "defaultCurve", "curveName", "formatUrl", "linkStr", "url", "runFunc", "functionName", "params", "arrPaths", "len", "fnName", "obj", "distance", "p1", "p2", "traverseEdge", "points", "prevPoint", "totalDistance", "point", "remainingDistance", "calculatePoint", "calcLabelPosition", "roundNumber", "num", "precision", "factor", "distanceToTraverse", "vectorDistance", "distanceRatio", "calcCardinalityPosition", "isRelationTypePresent", "initialPosition", "center", "d", "angle", "cardinalityPosition", "calcTerminalLabelPosition", "terminalMarkerSize", "position", "_points", "distanceToCardinalityPoint", "getStylesFromArray", "style", "labelStyle", "cnt", "generateId", "makeRandomHex", "length", "characters", "charactersLength", "random", "options", "getTextObj", "drawSimpleText", "elem", "textData", "nText", "common_default", "_fontSizePx", "parseFontSize", "textElem", "span", "wrapLabel", "memoize", "label", "maxWidth", "words", "completedLines", "nextLine", "word", "index", "wordLength", "calculateTextWidth", "nextLineLength", "hyphenatedStrings", "remainingWord", "breakString", "line", "hyphenCharacter", "lines", "currentLine", "character", "currentCharacter", "isLastLine", "hyphenatedNextLine", "calculateTextHeight", "calculateTextDimensions", "fontSize", "fontFamily", "fontWeight", "fontFamilies", "dims", "body", "select_default", "g", "cHeight", "dim", "textObj", "bBox", "InitIDGenerator", "deterministic", "seed", "decoder", "entityDecode", "html", "isDetailedError", "insertTitle", "__name", "parent", "cssClass", "titleTopMargin", "title", "bounds", "parseFontSize", "fontSize", "fontSizeNumber", "cleanAndMerge", "defaultData", "data", "merge", "utils_default", "assignWithDepth_default", "wrapLabel", "calculateTextHeight", "calculateTextWidth", "calculateTextDimensions", "detectInit", "detectDirective", "isSubstringInArray", "interpolateToCurve", "calcLabelPosition", "calcCardinalityPosition", "calcTerminalLabelPosition", "formatUrl", "getStylesFromArray", "generateId", "random", "runFunc", "entityDecode", "isLabelCoordinateInPath", "InitIDGenerator", "encodeEntities", "text", "txt", "s", "innerTxt", "decodeEntities", "getEdgeId", "__name", "from", "to", "counter", "prefix", "suffix", "id", "handleUndefinedAttr", "attrValue", "isLabelCoordinateInPath", "point", "dAttr", "roundedX", "roundedY", "sanitizedD", "match"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-QU3B7NT4.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-QU3B7NT4.mjs deleted file mode 100644 index 9276f13..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-QU3B7NT4.mjs +++ /dev/null @@ -1 +0,0 @@ -import{B as v,D as P,G as S,a as e,c as y,f as i,g as a,i as f,t as b,v as n,y as j,z as d}from"./chunk-JIN56HTB.mjs";import{a as m}from"./chunk-VELTKBKT.mjs";var C=b(Object.keys,Object),T=C;var V=Object.prototype,D=V.hasOwnProperty;function K(r){if(!n(r))return T(r);var t=[];for(var o in Object(r))D.call(r,o)&&o!="constructor"&&t.push(o);return t}m(K,"baseKeys");var O=K;var N=a(e,"DataView"),s=N;var W=a(e,"Promise"),c=W;var B=a(e,"Set"),g=B;var z=a(e,"WeakMap"),u=z;var M="[object Map]",E="[object Object]",h="[object Promise]",x="[object Set]",k="[object WeakMap]",l="[object DataView]",G=i(s),L=i(f),q=i(c),F=i(g),H=i(u),p=y;(s&&p(new s(new ArrayBuffer(1)))!=l||f&&p(new f)!=M||c&&p(c.resolve())!=h||g&&p(new g)!=x||u&&p(new u)!=k)&&(p=m(function(r){var t=y(r),o=t==E?r.constructor:void 0,w=o?i(o):"";if(w)switch(w){case G:return l;case L:return M;case q:return h;case F:return x;case H:return k}return t},"getTag"));var A=p;var I="[object Map]",J="[object Set]",Q=Object.prototype,R=Q.hasOwnProperty;function U(r){if(r==null)return!0;if(v(r)&&(d(r)||typeof r=="string"||typeof r.splice=="function"||P(r)||S(r)||j(r)))return!r.length;var t=A(r);if(t==I||t==J)return!r.size;if(n(r))return!O(r).length;for(var o in r)if(R.call(r,o))return!1;return!0}m(U,"isEmpty");var Cr=U;export{O as a,g as b,A as c,Cr as d}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-QU3B7NT4.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-QU3B7NT4.mjs.map deleted file mode 100644 index 84af37f..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-QU3B7NT4.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_DataView.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Promise.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Set.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_WeakMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getTag.js", "../../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isEmpty.js"], - "sourcesContent": ["import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n"], - "mappings": "+JAGA,IAAIA,EAAaC,EAAQ,OAAO,KAAM,MAAM,EAErCC,EAAQF,ECDf,IAAIG,EAAc,OAAO,UAGrBC,EAAiBD,EAAY,eASjC,SAASE,EAASC,EAAQ,CACxB,GAAI,CAACC,EAAYD,CAAM,EACrB,OAAOE,EAAWF,CAAM,EAE1B,IAAIG,EAAS,CAAC,EACd,QAASC,KAAO,OAAOJ,CAAM,EACvBF,EAAe,KAAKE,EAAQI,CAAG,GAAKA,GAAO,eAC7CD,EAAO,KAAKC,CAAG,EAGnB,OAAOD,CACT,CAXSE,EAAAN,EAAA,YAaT,IAAOO,EAAQP,ECzBf,IAAIQ,EAAWC,EAAUC,EAAM,UAAU,EAElCC,EAAQH,ECFf,IAAII,EAAUC,EAAUC,EAAM,SAAS,EAEhCC,EAAQH,ECFf,IAAII,EAAMC,EAAUC,EAAM,KAAK,EAExBC,EAAQH,ECFf,IAAII,EAAUC,EAAUC,EAAM,SAAS,EAEhCC,EAAQH,ECGf,IAAII,EAAS,eACTC,EAAY,kBACZC,EAAa,mBACbC,EAAS,eACTC,EAAa,mBAEbC,EAAc,oBAGdC,EAAqBC,EAASC,CAAQ,EACtCC,EAAgBF,EAASG,CAAG,EAC5BC,EAAoBJ,EAASK,CAAO,EACpCC,EAAgBN,EAASO,CAAG,EAC5BC,EAAoBR,EAASS,CAAO,EASpCC,EAASC,GAGRV,GAAYS,EAAO,IAAIT,EAAS,IAAI,YAAY,CAAC,CAAC,CAAC,GAAKH,GACxDK,GAAOO,EAAO,IAAIP,CAAG,GAAKV,GAC1BY,GAAWK,EAAOL,EAAQ,QAAQ,CAAC,GAAKV,GACxCY,GAAOG,EAAO,IAAIH,CAAG,GAAKX,GAC1Ba,GAAWC,EAAO,IAAID,CAAO,GAAKZ,KACrCa,EAASE,EAAA,SAASC,EAAO,CACvB,IAAIC,EAASH,EAAWE,CAAK,EACzBE,EAAOD,GAAUpB,EAAYmB,EAAM,YAAc,OACjDG,EAAaD,EAAOf,EAASe,CAAI,EAAI,GAEzC,GAAIC,EACF,OAAQA,EAAY,CAClB,KAAKjB,EAAoB,OAAOD,EAChC,KAAKI,EAAe,OAAOT,EAC3B,KAAKW,EAAmB,OAAOT,EAC/B,KAAKW,EAAe,OAAOV,EAC3B,KAAKY,EAAmB,OAAOX,CACjC,CAEF,OAAOiB,CACT,EAfS,WAkBX,IAAOG,EAAQP,EC/Cf,IAAIQ,EAAS,eACTC,EAAS,eAGTC,EAAc,OAAO,UAGrBC,EAAiBD,EAAY,eAmCjC,SAASE,EAAQC,EAAO,CACtB,GAAIA,GAAS,KACX,MAAO,GAET,GAAIC,EAAYD,CAAK,IAChBE,EAAQF,CAAK,GAAK,OAAOA,GAAS,UAAY,OAAOA,EAAM,QAAU,YACpEG,EAASH,CAAK,GAAKI,EAAaJ,CAAK,GAAKK,EAAYL,CAAK,GAC/D,MAAO,CAACA,EAAM,OAEhB,IAAIM,EAAMC,EAAOP,CAAK,EACtB,GAAIM,GAAOX,GAAUW,GAAOV,EAC1B,MAAO,CAACI,EAAM,KAEhB,GAAIQ,EAAYR,CAAK,EACnB,MAAO,CAACS,EAAST,CAAK,EAAE,OAE1B,QAASU,KAAOV,EACd,GAAIF,EAAe,KAAKE,EAAOU,CAAG,EAChC,MAAO,GAGX,MAAO,EACT,CAtBSC,EAAAZ,EAAA,WAwBT,IAAOa,GAAQb", - "names": ["nativeKeys", "overArg_default", "nativeKeys_default", "objectProto", "hasOwnProperty", "baseKeys", "object", "isPrototype_default", "nativeKeys_default", "result", "key", "__name", "baseKeys_default", "DataView", "getNative_default", "root_default", "DataView_default", "Promise", "getNative_default", "root_default", "Promise_default", "Set", "getNative_default", "root_default", "Set_default", "WeakMap", "getNative_default", "root_default", "WeakMap_default", "mapTag", "objectTag", "promiseTag", "setTag", "weakMapTag", "dataViewTag", "dataViewCtorString", "toSource_default", "DataView_default", "mapCtorString", "Map_default", "promiseCtorString", "Promise_default", "setCtorString", "Set_default", "weakMapCtorString", "WeakMap_default", "getTag", "baseGetTag_default", "__name", "value", "result", "Ctor", "ctorString", "getTag_default", "mapTag", "setTag", "objectProto", "hasOwnProperty", "isEmpty", "value", "isArrayLike_default", "isArray_default", "isBuffer_default", "isTypedArray_default", "isArguments_default", "tag", "getTag_default", "isPrototype_default", "baseKeys_default", "key", "__name", "isEmpty_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-RERM46MO.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-RERM46MO.mjs new file mode 100644 index 0000000..3491dc1 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-RERM46MO.mjs @@ -0,0 +1 @@ +import{a as t,b as u,c as n,d as s,e as o,g as l,h as d,r as h,t as m}from"./chunk-4R4BOZG6.mjs";import{a}from"./chunk-AQ6EADP3.mjs";var A=class extends m{static{a(this,"ArchitectureTokenBuilder")}static{t(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},C=class extends h{static{a(this,"ArchitectureValueConverter")}static{t(this,"ArchitectureValueConverter")}runCustomConverter(c,r,i){if(c.name==="ARCH_ICON")return r.replace(/[()]/g,"").trim();if(c.name==="ARCH_TEXT_ICON")return r.replace(/["()]/g,"");if(c.name==="ARCH_TITLE"){let e=r.replace(/^\[|]$/g,"").trim();return(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1),e=e.replace(/\\"/g,'"').replace(/\\'/g,"'")),e.trim()}}},v={parser:{TokenBuilder:t(()=>new A,"TokenBuilder"),ValueConverter:t(()=>new C,"ValueConverter")}};function p(c=o){let r=s(n(c),l),i=s(u({shared:r}),d,v);return r.ServiceRegistry.register(i),{shared:r,Architecture:i}}a(p,"createArchitectureServices");t(p,"createArchitectureServices");export{v as a,p as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-RERM46MO.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-RERM46MO.mjs.map new file mode 100644 index 0000000..dad72ba --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-RERM46MO.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-4EGX6M5U.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n ArchitectureGrammarGeneratedModule,\n EmptyFileSystem,\n MermaidGeneratedSharedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/architecture/tokenBuilder.ts\nvar ArchitectureTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"ArchitectureTokenBuilder\");\n }\n constructor() {\n super([\"architecture\"]);\n }\n};\n\n// src/language/architecture/valueConverter.ts\nvar ArchitectureValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"ArchitectureValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name === \"ARCH_ICON\") {\n return input.replace(/[()]/g, \"\").trim();\n } else if (rule.name === \"ARCH_TEXT_ICON\") {\n return input.replace(/[\"()]/g, \"\");\n } else if (rule.name === \"ARCH_TITLE\") {\n let result = input.replace(/^\\[|]$/g, \"\").trim();\n if (result.startsWith('\"') && result.endsWith('\"') || result.startsWith(\"'\") && result.endsWith(\"'\")) {\n result = result.slice(1, -1);\n result = result.replace(/\\\\\"/g, '\"').replace(/\\\\'/g, \"'\");\n }\n return result.trim();\n }\n return void 0;\n }\n};\n\n// src/language/architecture/module.ts\nvar ArchitectureModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new ArchitectureTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new ArchitectureValueConverter(), \"ValueConverter\")\n }\n};\nfunction createArchitectureServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Architecture = inject(\n createDefaultCoreModule({ shared }),\n ArchitectureGrammarGeneratedModule,\n ArchitectureModule\n );\n shared.ServiceRegistry.register(Architecture);\n return { shared, Architecture };\n}\n__name(createArchitectureServices, \"createArchitectureServices\");\n\nexport {\n ArchitectureModule,\n createArchitectureServices\n};\n"], + "mappings": "qIAcA,IAAIA,EAA2B,cAAcC,CAA4B,CAdzE,MAcyE,CAAAC,EAAA,iCACvE,MAAO,CACLA,EAAO,KAAM,0BAA0B,CACzC,CACA,aAAc,CACZ,MAAM,CAAC,cAAc,CAAC,CACxB,CACF,EAGIC,EAA6B,cAAcC,CAA8B,CAxB7E,MAwB6E,CAAAF,EAAA,mCAC3E,MAAO,CACLA,EAAO,KAAM,4BAA4B,CAC3C,CACA,mBAAmBG,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,YAChB,OAAOC,EAAM,QAAQ,QAAS,EAAE,EAAE,KAAK,EAClC,GAAID,EAAK,OAAS,iBACvB,OAAOC,EAAM,QAAQ,SAAU,EAAE,EAC5B,GAAID,EAAK,OAAS,aAAc,CACrC,IAAIG,EAASF,EAAM,QAAQ,UAAW,EAAE,EAAE,KAAK,EAC/C,OAAIE,EAAO,WAAW,GAAG,GAAKA,EAAO,SAAS,GAAG,GAAKA,EAAO,WAAW,GAAG,GAAKA,EAAO,SAAS,GAAG,KACjGA,EAASA,EAAO,MAAM,EAAG,EAAE,EAC3BA,EAASA,EAAO,QAAQ,OAAQ,GAAG,EAAE,QAAQ,OAAQ,GAAG,GAEnDA,EAAO,KAAK,CACrB,CAEF,CACF,EAGIC,EAAqB,CACvB,OAAQ,CACN,aAA8BP,EAAO,IAAM,IAAIF,EAA4B,cAAc,EACzF,eAAgCE,EAAO,IAAM,IAAIC,EAA8B,gBAAgB,CACjG,CACF,EACA,SAASO,EAA2BC,EAAUC,EAAiB,CAC7D,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAeH,EACnBI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAY,EACrC,CAAE,OAAAJ,EAAQ,aAAAI,CAAa,CAChC,CAZSf,EAAAQ,EAAA,8BAaTR,EAAOQ,EAA4B,4BAA4B", + "names": ["ArchitectureTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "ArchitectureValueConverter", "AbstractMermaidValueConverter", "rule", "input", "_cstNode", "result", "ArchitectureModule", "createArchitectureServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Architecture", "createDefaultCoreModule", "ArchitectureGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-RG4AUYOV.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-RG4AUYOV.mjs new file mode 100644 index 0000000..7d45a79 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-RG4AUYOV.mjs @@ -0,0 +1,206 @@ +import{a as ot}from"./chunk-AZZRMDJM.mjs";import{h as it}from"./chunk-LII3EMHJ.mjs";import{a as at}from"./chunk-6764PJDD.mjs";import{a as ut}from"./chunk-ZXARS5L4.mjs";import{b as nt,c as lt}from"./chunk-VU6ZFW4Y.mjs";import{p as ee,s as rt}from"./chunk-QA3QBVWF.mjs";import{A as He,C as V,G as v,S as qe,T as Je,U as Ze,V as $e,W as et,X as tt,Y as st,_ as F,y as Xe}from"./chunk-67TQ5CYL.mjs";import{b as Z,h as $}from"./chunk-7W6UQGC5.mjs";import{a as g}from"./chunk-AQ6EADP3.mjs";var Ve=(function(){var t=g(function(O,c,h,d){for(h=h||{},d=O.length;d--;h[O[d]]=c);return h},"o"),i=[1,18],r=[1,19],a=[1,20],n=[1,41],o=[1,26],u=[1,42],p=[1,24],m=[1,25],f=[1,32],_=[1,33],fe=[1,34],k=[1,45],me=[1,35],Ae=[1,36],ke=[1,37],Ce=[1,38],ye=[1,27],Ee=[1,28],Te=[1,29],De=[1,30],Fe=[1,31],C=[1,44],y=[1,46],E=[1,43],T=[1,47],Be=[1,9],b=[1,8,9],se=[1,58],ie=[1,59],re=[1,60],ae=[1,61],ne=[1,62],Ne=[1,63],Se=[1,64],N=[1,8,9,41],Pe=[1,77],R=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],le=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],ue=[13,60,86,100,102,103],U=[13,60,73,74,86,100,102,103],Re=[13,60,68,69,70,71,72,86,100,102,103],oe=[1,103],z=[1,121],Y=[1,117],K=[1,113],j=[1,119],W=[1,114],Q=[1,115],X=[1,116],H=[1,118],q=[1,120],Ge=[22,50,60,61,82,86,87,88,89,90],Ue=[1,128],ce=[12,39],_e=[1,8,9,39,41,44,46],he=[1,8,9,22],ze=[1,153],Ye=[1,8,9,61],L=[1,8,9,22,50,60,61,82,86,87,88,89,90],xe={trace:g(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"ANNOTATION_START",47:"ANNOTATION_END",48:"CLASS",50:"SPACE",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:g(function(c,h,d,l,A,e,J){var s=e.length-1;switch(A){case 8:this.$=e[s-1];break;case 9:case 10:case 13:case 15:this.$=e[s];break;case 11:case 14:this.$=e[s-2]+"."+e[s];break;case 12:case 16:this.$=e[s-1]+e[s];break;case 17:case 18:this.$=e[s-1]+"~"+e[s]+"~";break;case 19:l.addRelation(e[s]);break;case 20:e[s-1].title=l.cleanupLabel(e[s]),l.addRelation(e[s-1]);break;case 31:this.$=e[s].trim(),l.setAccTitle(this.$);break;case 32:case 33:this.$=e[s].trim(),l.setAccDescription(this.$);break;case 34:l.addClassesToNamespace(e[s-3],e[s-1][0],e[s-1][1]),l.popNamespace();break;case 35:l.addClassesToNamespace(e[s-4],e[s-1][0],e[s-1][1]),l.popNamespace();break;case 36:this.$=l.addNamespace(e[s]);break;case 37:this.$=l.addNamespace(e[s-1],e[s]);break;case 38:this.$=[[e[s]],[]];break;case 39:this.$=[[e[s-1]],[]];break;case 40:e[s][0].unshift(e[s-2]),this.$=e[s];break;case 41:this.$=[[],[e[s]]];break;case 42:this.$=[[],[e[s-1]]];break;case 43:e[s][1].unshift(e[s-2]),this.$=e[s];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=e[s];break;case 48:l.setCssClass(e[s-2],e[s]);break;case 49:l.addMembers(e[s-3],e[s-1]);break;case 51:l.setCssClass(e[s-5],e[s-3]),l.addMembers(e[s-5],e[s-1]);break;case 52:l.addAnnotation(e[s-3],e[s-1]);break;case 53:l.addAnnotation(e[s-6],e[s-4]),l.addMembers(e[s-6],e[s-1]);break;case 54:l.addAnnotation(e[s-5],e[s-3]);break;case 55:this.$=e[s],l.addClass(e[s]);break;case 56:this.$=e[s-1],l.addClass(e[s-1]),l.setClassLabel(e[s-1],e[s]);break;case 60:l.addAnnotation(e[s],e[s-2]);break;case 61:case 74:this.$=[e[s]];break;case 62:e[s].push(e[s-1]),this.$=e[s];break;case 63:break;case 64:l.addMember(e[s-1],l.cleanupLabel(e[s]));break;case 65:break;case 66:break;case 67:this.$={id1:e[s-2],id2:e[s],relation:e[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 68:this.$={id1:e[s-3],id2:e[s],relation:e[s-1],relationTitle1:e[s-2],relationTitle2:"none"};break;case 69:this.$={id1:e[s-3],id2:e[s],relation:e[s-2],relationTitle1:"none",relationTitle2:e[s-1]};break;case 70:this.$={id1:e[s-4],id2:e[s],relation:e[s-2],relationTitle1:e[s-3],relationTitle2:e[s-1]};break;case 71:this.$=l.addNote(e[s],e[s-1]);break;case 72:this.$=l.addNote(e[s]);break;case 73:this.$=e[s-2],l.defineClass(e[s-1],e[s]);break;case 75:this.$=e[s-2].concat([e[s]]);break;case 76:l.setDirection("TB");break;case 77:l.setDirection("BT");break;case 78:l.setDirection("RL");break;case 79:l.setDirection("LR");break;case 80:this.$={type1:e[s-2],type2:e[s],lineType:e[s-1]};break;case 81:this.$={type1:"none",type2:e[s],lineType:e[s-1]};break;case 82:this.$={type1:e[s-1],type2:"none",lineType:e[s]};break;case 83:this.$={type1:"none",type2:"none",lineType:e[s]};break;case 84:this.$=l.relationType.AGGREGATION;break;case 85:this.$=l.relationType.EXTENSION;break;case 86:this.$=l.relationType.COMPOSITION;break;case 87:this.$=l.relationType.DEPENDENCY;break;case 88:this.$=l.relationType.LOLLIPOP;break;case 89:this.$=l.lineType.LINE;break;case 90:this.$=l.lineType.DOTTED_LINE;break;case 91:case 97:this.$=e[s-2],l.setClickEvent(e[s-1],e[s]);break;case 92:case 98:this.$=e[s-3],l.setClickEvent(e[s-2],e[s-1]),l.setTooltip(e[s-2],e[s]);break;case 93:this.$=e[s-2],l.setLink(e[s-1],e[s]);break;case 94:this.$=e[s-3],l.setLink(e[s-2],e[s-1],e[s]);break;case 95:this.$=e[s-3],l.setLink(e[s-2],e[s-1]),l.setTooltip(e[s-2],e[s]);break;case 96:this.$=e[s-4],l.setLink(e[s-3],e[s-2],e[s]),l.setTooltip(e[s-3],e[s-1]);break;case 99:this.$=e[s-3],l.setClickEvent(e[s-2],e[s-1],e[s]);break;case 100:this.$=e[s-4],l.setClickEvent(e[s-3],e[s-2],e[s-1]),l.setTooltip(e[s-3],e[s]);break;case 101:this.$=e[s-3],l.setLink(e[s-2],e[s]);break;case 102:this.$=e[s-4],l.setLink(e[s-3],e[s-1],e[s]);break;case 103:this.$=e[s-4],l.setLink(e[s-3],e[s-1]),l.setTooltip(e[s-3],e[s]);break;case 104:this.$=e[s-5],l.setLink(e[s-4],e[s-2],e[s]),l.setTooltip(e[s-4],e[s-1]);break;case 105:this.$=e[s-2],l.setCssStyle(e[s-1],e[s]);break;case 106:l.setCssClass(e[s-1],e[s]);break;case 107:this.$=[e[s]];break;case 108:e[s-2].push(e[s]),this.$=e[s-2];break;case 110:this.$=e[s-1]+e[s];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:i,35:r,37:a,38:22,42:n,43:23,46:o,48:u,51:p,52:m,54:f,56:_,57:fe,60:k,62:me,63:Ae,64:ke,65:Ce,75:ye,76:Ee,78:Te,82:De,83:Fe,86:C,100:y,102:E,103:T},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(Be,[2,5],{8:[1,48]}),{8:[1,49]},t(b,[2,19],{22:[1,50]}),t(b,[2,21]),t(b,[2,22]),t(b,[2,23]),t(b,[2,24]),t(b,[2,25]),t(b,[2,26]),t(b,[2,27]),t(b,[2,28]),t(b,[2,29]),t(b,[2,30]),{34:[1,51]},{36:[1,52]},t(b,[2,33]),t(b,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:se,69:ie,70:re,71:ae,72:ne,73:Ne,74:Se}),{39:[1,65]},t(N,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),t(b,[2,65]),t(b,[2,66]),{16:69,60:k,86:C,100:y,102:E},{16:39,17:40,19:70,60:k,86:C,100:y,102:E,103:T},{16:39,17:40,19:71,60:k,86:C,100:y,102:E,103:T},{16:39,17:40,19:72,60:k,86:C,100:y,102:E,103:T},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:k,86:C,100:y,102:E,103:T},{13:Pe,55:76},{58:78,60:[1,79]},t(b,[2,76]),t(b,[2,77]),t(b,[2,78]),t(b,[2,79]),t(R,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:k,86:C,100:y,102:E,103:T}),t(R,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:k,86:C,100:y,102:E,103:T},{16:39,17:40,19:87,60:k,86:C,100:y,102:E,103:T},t(le,[2,133]),t(le,[2,134]),t(le,[2,135]),t(le,[2,136]),t([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),t(Be,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:i,35:r,37:a,42:n,46:o,48:u,51:p,52:m,54:f,56:_,57:fe,60:k,62:me,63:Ae,64:ke,65:Ce,75:ye,76:Ee,78:Te,82:De,83:Fe,86:C,100:y,102:E,103:T}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:i,35:r,37:a,38:22,42:n,43:23,46:o,48:u,51:p,52:m,54:f,56:_,57:fe,60:k,62:me,63:Ae,64:ke,65:Ce,75:ye,76:Ee,78:Te,82:De,83:Fe,86:C,100:y,102:E,103:T},t(b,[2,20]),t(b,[2,31]),t(b,[2,32]),{13:[1,91],16:39,17:40,19:90,60:k,86:C,100:y,102:E,103:T},{53:92,66:56,67:57,68:se,69:ie,70:re,71:ae,72:ne,73:Ne,74:Se},t(b,[2,64]),{67:93,73:Ne,74:Se},t(ue,[2,83],{66:94,68:se,69:ie,70:re,71:ae,72:ne}),t(U,[2,84]),t(U,[2,85]),t(U,[2,86]),t(U,[2,87]),t(U,[2,88]),t(Re,[2,89]),t(Re,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:n,43:23,48:u,54:f,56:_},{16:100,60:k,86:C,100:y,102:E},{41:[1,102],45:101,51:oe},{16:104,60:k,86:C,100:y,102:E},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:z,50:Y,59:110,60:K,82:j,84:111,85:112,86:W,87:Q,88:X,89:H,90:q},{60:[1,122]},{13:Pe,55:123},t(N,[2,72]),t(N,[2,138]),{22:z,50:Y,59:124,60:K,61:[1,125],82:j,84:111,85:112,86:W,87:Q,88:X,89:H,90:q},t(Ge,[2,74]),{16:39,17:40,19:126,60:k,86:C,100:y,102:E,103:T},t(R,[2,16]),t(R,[2,17]),t(R,[2,18]),{11:127,12:Ue,39:[2,36]},t(ce,[2,9],{16:85,17:86,15:130,18:[1,129],60:k,86:C,100:y,102:E,103:T}),t(ce,[2,10]),t(_e,[2,55],{11:131,12:Ue}),t(Be,[2,7]),{9:[1,132]},t(he,[2,67]),{16:39,17:40,19:133,60:k,86:C,100:y,102:E,103:T},{13:[1,135],16:39,17:40,19:134,60:k,86:C,100:y,102:E,103:T},t(ue,[2,82],{66:136,68:se,69:ie,70:re,71:ae,72:ne}),t(ue,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:n,43:23,48:u,54:f,56:_},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},t(N,[2,48],{39:[1,142]}),{41:[1,143]},t(N,[2,50]),{41:[2,61],45:144,51:oe},{47:[1,145]},{16:39,17:40,19:146,60:k,86:C,100:y,102:E,103:T},t(b,[2,91],{13:[1,147]}),t(b,[2,93],{13:[1,149],77:[1,148]}),t(b,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},t(b,[2,105],{61:ze}),t(Ye,[2,107],{85:154,22:z,50:Y,60:K,82:j,86:W,87:Q,88:X,89:H,90:q}),t(L,[2,109]),t(L,[2,111]),t(L,[2,112]),t(L,[2,113]),t(L,[2,114]),t(L,[2,115]),t(L,[2,116]),t(L,[2,117]),t(L,[2,118]),t(L,[2,119]),t(b,[2,106]),t(N,[2,71]),t(b,[2,73],{61:ze}),{60:[1,155]},t(R,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:k,86:C,100:y,102:E,103:T},t(ce,[2,12]),t(_e,[2,56]),{1:[2,4]},t(he,[2,69]),t(he,[2,68]),{16:39,17:40,19:158,60:k,86:C,100:y,102:E,103:T},t(ue,[2,80]),t(N,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:n,43:23,48:u,54:f,56:_},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:n,43:23,48:u,54:f,56:_},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:n,43:23,48:u,54:f,56:_},{45:163,51:oe},t(N,[2,49]),{41:[2,62]},t(N,[2,52],{39:[1,164]}),t(b,[2,60]),t(b,[2,92]),t(b,[2,94]),t(b,[2,95],{77:[1,165]}),t(b,[2,98]),t(b,[2,99],{13:[1,166]}),t(b,[2,101],{13:[1,168],77:[1,167]}),{22:z,50:Y,60:K,82:j,84:169,85:112,86:W,87:Q,88:X,89:H,90:q},t(L,[2,110]),t(Ge,[2,75]),{14:[1,170]},t(ce,[2,11]),t(he,[2,70]),t(N,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:oe},t(b,[2,96]),t(b,[2,100]),t(b,[2,102]),t(b,[2,103],{77:[1,174]}),t(Ye,[2,108],{85:154,22:z,50:Y,60:K,82:j,86:W,87:Q,88:X,89:H,90:q}),t(_e,[2,8]),t(N,[2,51]),{41:[1,175]},t(N,[2,54]),t(b,[2,104]),t(N,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:g(function(c,h){if(h.recoverable)this.trace(c);else{var d=new Error(c);throw d.hash=h,d}},"parseError"),parse:g(function(c){var h=this,d=[0],l=[],A=[null],e=[],J=this.table,s="",pe=0,Ke=0,je=0,gt=2,We=1,bt=e.slice.call(arguments,1),D=Object.create(this.lexer),M={yy:{}};for(var ve in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ve)&&(M.yy[ve]=this.yy[ve]);D.setInput(c,M.yy),M.yy.lexer=D,M.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Ie=D.yylloc;e.push(Ie);var ft=D.options&&D.options.ranges;typeof M.yy.parseError=="function"?this.parseError=M.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Et(S){d.length=d.length-2*S,A.length=A.length-S,e.length=e.length-S}g(Et,"popStack");function mt(){var S;return S=l.pop()||D.lex()||We,typeof S!="number"&&(S instanceof Array&&(l=S,S=l.pop()),S=h.symbols_[S]||S),S}g(mt,"lex");for(var B,Oe,w,x,Tt,Me,G={},de,I,Qe,ge;;){if(w=d[d.length-1],this.defaultActions[w]?x=this.defaultActions[w]:((B===null||typeof B>"u")&&(B=mt()),x=J[w]&&J[w][B]),typeof x>"u"||!x.length||!x[0]){var we="";ge=[];for(de in J[w])this.terminals_[de]&&de>gt&&ge.push("'"+this.terminals_[de]+"'");D.showPosition?we="Parse error on line "+(pe+1)+`: +`+D.showPosition()+` +Expecting `+ge.join(", ")+", got '"+(this.terminals_[B]||B)+"'":we="Parse error on line "+(pe+1)+": Unexpected "+(B==We?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(we,{text:D.match,token:this.terminals_[B]||B,line:D.yylineno,loc:Ie,expected:ge})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+B);switch(x[0]){case 1:d.push(B),A.push(D.yytext),e.push(D.yylloc),d.push(x[1]),B=null,Oe?(B=Oe,Oe=null):(Ke=D.yyleng,s=D.yytext,pe=D.yylineno,Ie=D.yylloc,je>0&&je--);break;case 2:if(I=this.productions_[x[1]][1],G.$=A[A.length-I],G._$={first_line:e[e.length-(I||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(I||1)].first_column,last_column:e[e.length-1].last_column},ft&&(G._$.range=[e[e.length-(I||1)].range[0],e[e.length-1].range[1]]),Me=this.performAction.apply(G,[s,Ke,pe,M.yy,x[1],A,e].concat(bt)),typeof Me<"u")return Me;I&&(d=d.slice(0,-1*I*2),A=A.slice(0,-1*I),e=e.slice(0,-1*I)),d.push(this.productions_[x[1]][0]),A.push(G.$),e.push(G._$),Qe=J[d[d.length-2]][d[d.length-1]],d.push(Qe);break;case 3:return!0}}return!0},"parse")},dt=(function(){var O={EOF:1,parseError:g(function(h,d){if(this.yy.parser)this.yy.parser.parseError(h,d);else throw new Error(h)},"parseError"),setInput:g(function(c,h){return this.yy=h||this.yy||{},this._input=c,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:g(function(){var c=this._input[0];this.yytext+=c,this.yyleng++,this.offset++,this.match+=c,this.matched+=c;var h=c.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),c},"input"),unput:g(function(c){var h=c.length,d=c.split(/(?:\r\n?|\n)/g);this._input=c+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),d.length-1&&(this.yylineno-=d.length-1);var A=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:d?(d.length===l.length?this.yylloc.first_column:0)+l[l.length-d.length].length-d[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:g(function(){return this._more=!0,this},"more"),reject:g(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:g(function(c){this.unput(this.match.slice(c))},"less"),pastInput:g(function(){var c=this.matched.substr(0,this.matched.length-this.match.length);return(c.length>20?"...":"")+c.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:g(function(){var c=this.match;return c.length<20&&(c+=this._input.substr(0,20-c.length)),(c.substr(0,20)+(c.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:g(function(){var c=this.pastInput(),h=new Array(c.length+1).join("-");return c+this.upcomingInput()+` +`+h+"^"},"showPosition"),test_match:g(function(c,h){var d,l,A;if(this.options.backtrack_lexer&&(A={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(A.yylloc.range=this.yylloc.range.slice(0))),l=c[0].match(/(?:\r\n?|\n).*/g),l&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+c[0].length},this.yytext+=c[0],this.match+=c[0],this.matches=c,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(c[0].length),this.matched+=c[0],d=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),d)return d;if(this._backtrack){for(var e in A)this[e]=A[e];return!1}return!1},"test_match"),next:g(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var c,h,d,l;this._more||(this.yytext="",this.match="");for(var A=this._currentRules(),e=0;eh[0].length)){if(h=d,l=e,this.options.backtrack_lexer){if(c=this.test_match(d,A[e]),c!==!1)return c;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(c=this.test_match(h,A[l]),c!==!1?c:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:g(function(){var h=this.next();return h||this.lex()},"lex"),begin:g(function(h){this.conditionStack.push(h)},"begin"),popState:g(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:g(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:g(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:g(function(h){this.begin(h)},"pushState"),stateStackSize:g(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:g(function(h,d,l,A){var e=A;switch(l){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:this.popState(),this.less(0);break;case 34:return this.popState(),41;break;case 35:return"EOF_IN_STRUCT";case 36:return 8;case 37:break;case 38:return"EDGE_STATE";case 39:return this.begin("class"),48;break;case 40:return this.popState(),8;break;case 41:break;case 42:return this.popState(),this.popState(),41;break;case 43:return this.begin("class-body"),39;break;case 44:return this.popState(),41;break;case 45:return"EOF_IN_STRUCT";case 46:return"EDGE_STATE";case 47:return"OPEN_IN_STRUCT";case 48:break;case 49:return"MEMBER";case 50:return 83;case 51:return 75;case 52:return 76;case 53:return 78;case 54:return 54;case 55:return 56;case 56:return 46;case 57:return 47;case 58:return 81;case 59:this.popState();break;case 60:return"GENERICTYPE";case 61:this.begin("generic");break;case 62:this.popState();break;case 63:return"BQUOTE_STR";case 64:this.begin("bqstring");break;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 77;case 69:return 69;case 70:return 69;case 71:return 71;case 72:return 71;case 73:return 70;case 74:return 68;case 75:return 72;case 76:return 73;case 77:return 74;case 78:return 22;case 79:return 44;case 80:return 100;case 81:return 18;case 82:return"PLUS";case 83:return 87;case 84:return 61;case 85:return 89;case 86:return 89;case 87:return 90;case 88:return"EQUALS";case 89:return"EQUALS";case 90:return 60;case 91:return 12;case 92:return 14;case 93:return"PUNCTUATION";case 94:return 86;case 95:return 102;case 96:return 50;case 97:return 50;case 98:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{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)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,29,34,35,36,37,38,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},namespace:{rules:[26,29,30,31,32,33,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},"class-body":{rules:[26,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},class:{rules:[26,40,41,42,43,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr:{rules:[9,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_title:{rules:[7,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_args:{rules:[22,23,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_name:{rules:[19,20,21,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},href:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},struct:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},generic:{rules:[26,50,51,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},bqstring:{rules:[26,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},string:{rules:[24,25,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,39,50,51,52,53,54,55,56,57,58,61,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],inclusive:!0}}};return O})();xe.lexer=dt;function Le(){this.yy={}}return g(Le,"Parser"),Le.prototype=xe,xe.Parser=Le,new Le})();Ve.parser=Ve;var Dt=Ve;var ct=["#","+","~","-",""],te=class{static{g(this,"ClassMember")}constructor(i,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let a=He(i,F());this.parseMember(a)}getDisplayDetails(){let i=this.visibility+V(this.id);this.memberType==="method"&&(i+=`(${V(this.parameters.trim())})`,this.returnType&&(i+=" : "+V(this.returnType))),i=i.trim();let r=this.parseClassifier();return{displayText:i,cssStyle:r}}parseMember(i){let r="";if(this.memberType==="method"){let o=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(i);if(o){let u=o[1]?o[1].trim():"";if(ct.includes(u)&&(this.visibility=u),this.id=o[2],this.parameters=o[3]?o[3].trim():"",r=o[4]?o[4].trim():"",this.returnType=o[5]?o[5].trim():"",r===""){let p=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(p)&&(r=p,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let n=i.length,o=i.substring(0,1),u=i.substring(n-1);ct.includes(o)&&(this.visibility=o),/[$*]/.exec(u)&&(r=u),this.id=i.substring(this.visibility===""?0:1,r===""?n:n-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let a=`${this.visibility?"\\"+this.visibility:""}${V(this.id)}${this.memberType==="method"?`(${V(this.parameters)})${this.returnType?" : "+V(this.returnType):""}`:""}`;this.text=a.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}};var be="classId-",ht=0,P=g(t=>v.sanitizeText(t,F()),"sanitizeText"),pt=class t{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=new Map;this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.namespaceStack=[];this.diagramId="";this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=g(i=>{let r=it();$(i).select("svg").selectAll("g").filter(function(){return $(this).attr("title")!==null}).on("mouseover",o=>{let u=$(o.currentTarget),p=u.attr("title");if(!p)return;let m=o.currentTarget.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.html(Xe.sanitize(p)).style("left",`${window.scrollX+m.left+m.width/2}px`).style("top",`${window.scrollY+m.bottom+4}px`),u.classed("hover",!0)}).on("mouseout",o=>{r.transition().duration(500).style("opacity",0),$(o.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=Je;this.getAccTitle=Ze;this.setAccDescription=$e;this.getAccDescription=et;this.setDiagramTitle=tt;this.getDiagramTitle=st;this.getConfig=g(()=>F().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.popNamespace=this.popNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{g(this,"ClassDB")}splitClassNameAndType(i){let r=v.sanitizeText(i,F()),a="",n=r;if(r.indexOf("~")>0){let o=r.split("~");n=P(o[0]),a=P(o[1])}return{className:n,type:a}}setClassLabel(i,r){let a=v.sanitizeText(i,F());r&&(r=P(r));let{className:n}=this.splitClassNameAndType(a);this.classes.get(n).label=r,this.classes.get(n).text=`${r}${this.classes.get(n).type?`<${this.classes.get(n).type}>`:""}`}addClass(i){let r=v.sanitizeText(i,F()),{className:a,type:n}=this.splitClassNameAndType(r);if(this.classes.has(a))return;let o=v.sanitizeText(a,F());this.classes.set(o,{id:o,type:n,label:o,text:`${o}${n?`<${n}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:be+o+"-"+ht}),ht++}addInterface(i,r){let a={id:`interface${this.interfaces.length}`,label:i,classId:r};this.interfaces.push(a)}setDiagramId(i){this.diagramId=i}lookUpDomId(i){let r=v.sanitizeText(i,F());if(this.classes.has(r)){let a=this.classes.get(r).domId;return this.diagramId?`${this.diagramId}-${a}`:a}throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=new Map,this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.namespaceStack=[],this.diagramId="",this.direction="TB",qe()}getClass(i){return this.classes.get(i)}getClasses(){return this.classes}getRelations(){return this.relations}getNote(i){let r=typeof i=="number"?`note${i}`:i;return this.notes.get(r)}getNotes(){return this.notes}addRelation(i){Z.debug("Adding relation: "+JSON.stringify(i));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];i.relation.type1===this.relationType.LOLLIPOP&&!r.includes(i.relation.type2)?(this.addClass(i.id2),this.addInterface(i.id1,i.id2),i.id1=`interface${this.interfaces.length-1}`):i.relation.type2===this.relationType.LOLLIPOP&&!r.includes(i.relation.type1)?(this.addClass(i.id1),this.addInterface(i.id2,i.id1),i.id2=`interface${this.interfaces.length-1}`):(this.addClass(i.id1),this.addClass(i.id2)),i.id1=this.splitClassNameAndType(i.id1).className,i.id2=this.splitClassNameAndType(i.id2).className,i.relationTitle1=v.sanitizeText(i.relationTitle1.trim(),F()),i.relationTitle2=v.sanitizeText(i.relationTitle2.trim(),F()),this.relations.push(i)}addAnnotation(i,r){let a=this.splitClassNameAndType(i).className;this.classes.get(a).annotations.push(r)}addMember(i,r){this.addClass(i);let a=this.splitClassNameAndType(i).className,n=this.classes.get(a);if(typeof r=="string"){let o=r.trim();o.startsWith("<<")&&o.endsWith(">>")?n.annotations.push(P(o.substring(2,o.length-2))):o.indexOf(")")>0?n.methods.push(new te(o,"method")):o&&n.members.push(new te(o,"attribute"))}}addMembers(i,r){Array.isArray(r)&&(r.reverse(),r.forEach(a=>this.addMember(i,a)))}addNote(i,r){let a=this.notes.size,n={id:`note${a}`,class:r,text:i,index:a};return this.notes.set(n.id,n),n.id}cleanupLabel(i){return i.startsWith(":")&&(i=i.substring(1)),P(i.trim())}setCssClass(i,r){i.split(",").forEach(a=>{let n=a;/\d/.exec(a[0])&&(n=be+n);let o=this.classes.get(n);o&&(o.cssClasses+=" "+r)})}defineClass(i,r){for(let a of i){let n=this.styleClasses.get(a);n===void 0&&(n={id:a,styles:[],textStyles:[]},this.styleClasses.set(a,n)),r&&r.forEach(o=>{if(/color/.exec(o)){let u=o.replace("fill","bgFill");n.textStyles.push(u)}n.styles.push(o)}),this.classes.forEach(o=>{o.cssClasses.includes(a)&&o.styles.push(...r.flatMap(u=>u.split(",")))})}}setTooltip(i,r){i.split(",").forEach(a=>{r!==void 0&&(this.classes.get(a).tooltip=P(r))})}getTooltip(i,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(i).tooltip:this.classes.get(i).tooltip}setLink(i,r,a){let n=F();i.split(",").forEach(o=>{let u=o;/\d/.exec(o[0])&&(u=be+u);let p=this.classes.get(u);p&&(p.link=ee.formatUrl(r,n),n.securityLevel==="sandbox"?p.linkTarget="_top":typeof a=="string"?p.linkTarget=P(a):p.linkTarget="_blank")}),this.setCssClass(i,"clickable")}setClickEvent(i,r,a){i.split(",").forEach(n=>{this.setClickFunc(n,r,a),this.classes.get(n).haveCallback=!0}),this.setCssClass(i,"clickable")}setClickFunc(i,r,a){let n=v.sanitizeText(i,F());if(F().securityLevel!=="loose"||r===void 0)return;let u=n;if(this.classes.has(u)){let p=[];if(typeof a=="string"){p=a.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let m=0;m{let m=this.lookUpDomId(u),f=document.querySelector(`[id="${m}"]`);f!==null&&f.addEventListener("click",()=>{ee.runFunc(r,...p)},!1)})}}bindFunctions(i){this.functions.forEach(r=>{r(i)})}escapeHtml(i){return i.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}getDirection(){return this.direction}setDirection(i){this.direction=i}static resolveQualifiedId(i,r){let a=r.at(-1);return a?`${a}.${i}`:i}static getAncestorIds(i){let r=i.split("."),a=new Array(r.length);a[0]=r[0];for(let n=1;n0?o[u-1]:void 0,f=u===o.length-1,_=f&&r?r:n[u];this.namespaces.has(p)?f&&(this.namespaces.get(p).explicit=!0):this.namespaces.set(p,this.createNamespaceNode(p,_,m,f)),m&&this.linkParentChild(m,p)}return a}popNamespace(){this.namespaceStack.pop()}getNamespace(i){return this.namespaces.get(i)}getNamespaces(){return this.namespaces}addClassesToNamespace(i,r,a){if(this.namespaces.has(i)){for(let n of r){let{className:o}=this.splitClassNameAndType(n),u=this.getClass(o);u.parent=i,this.namespaces.get(i).classes.set(o,u)}for(let n of a){let o=this.getNote(n);o.parent=i,this.namespaces.get(i).notes.set(n,o)}}}setCssStyle(i,r){let a=this.classes.get(i);if(!(!r||!a))for(let n of r)n.includes(",")?a.styles.push(...n.split(",")):a.styles.push(n)}getArrowMarker(i){let r;switch(i){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}resolveExplicitAncestor(i){let r=i;for(;r;){let a=this.namespaces.get(r);if(!a)return;if(a.explicit)return r;r=a.parent}}getData(){let i=[],r=[],a=F(),n=a.class?.hierarchicalNamespaces??!0;for(let u of this.namespaces.values()){if(!n&&!u.explicit)continue;let p={id:u.id,label:n?u.label:u.id,isGroup:!0,padding:a.class.padding??16,shape:"rect",cssStyles:[],look:a.look,parentId:n?u.parent:void 0};i.push(p)}for(let u of this.classes.values()){let p=n?u.parent:this.resolveExplicitAncestor(u.parent),m={...u,type:void 0,isGroup:!1,parentId:p,look:a.look};i.push(m)}for(let u of this.notes.values()){let p=n?u.parent:this.resolveExplicitAncestor(u.parent),m={id:u.id,label:u.text,isGroup:!1,shape:"note",padding:a.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${a.themeVariables.noteBkgColor}`,`stroke: ${a.themeVariables.noteBorderColor}`],look:a.look,parentId:p,labelType:"markdown"};i.push(m);let f=this.classes.get(u.class)?.id;if(f){let _={id:`edgeNote${u.index}`,start:u.id,end:f,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:a.look};r.push(_)}}for(let u of this.interfaces){let p={id:u.id,label:u.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:a.look};i.push(p)}let o=0;for(let u of this.relations){o++;let p={id:rt(u.id1,u.id2,{prefix:"id",counter:o}),start:u.id1,end:u.id2,type:"normal",label:u.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(u.relation.type1),arrowTypeEnd:this.getArrowMarker(u.relation.type2),startLabelRight:u.relationTitle1==="none"?"":u.relationTitle1,endLabelLeft:u.relationTitle2==="none"?"":u.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:u.style||"",pattern:u.relation.lineType==1?"dashed":"solid",look:a.look,labelType:"markdown"};r.push(p)}return{nodes:i,edges:r,other:{},config:a,direction:this.getDirection()}}};var At=g(t=>`g.classGroup text { + fill: ${t.nodeBorder||t.classText}; + stroke: none; + font-family: ${t.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + + .cluster-label text { + fill: ${t.titleColor}; + } + .cluster-label span { + color: ${t.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .cluster rect { + fill: ${t.clusterBkg}; + stroke: ${t.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${t.titleColor}; + } + + .cluster span { + color: ${t.titleColor}; + } + +.nodeLabel, .edgeLabel { + color: ${t.classText}; +} + +.noteLabel .nodeLabel, .noteLabel .edgeLabel { + color: ${t.noteTextColor}; +} +.edgeLabel .label rect { + fill: ${t.mainBkg}; +} +.label text { + fill: ${t.classText}; +} + +.labelBkg { + background: ${t.mainBkg}; +} +.edgeLabel .label span { + background: ${t.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: ${t.strokeWidth}; + } + + +.divider { + stroke: ${t.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.classGroup line { + stroke: ${t.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${t.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${t.lineColor}; + stroke-width: ${t.strokeWidth}; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +[id$="-compositionStart"], .composition { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-compositionEnd"], .composition { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-dependencyStart"], .dependency { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-dependencyEnd"], .dependency { + fill: ${t.lineColor} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-extensionStart"], .extension { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-extensionEnd"], .extension { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-aggregationStart"], .aggregation { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-aggregationEnd"], .aggregation { + fill: transparent !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-lollipopStart"], .lollipop { + fill: ${t.mainBkg} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +[id$="-lollipopEnd"], .lollipop { + fill: ${t.mainBkg} !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} + +.edgeLabel[data-look="neo"] { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; +} + ${ot()} +`,"getStyles"),Yt=At;var kt=g((t,i="TB")=>{if(!t.doc)return i;let r=i;for(let a of t.doc)a.stmt==="dir"&&(r=a.value);return r},"getDir"),Ct=g(function(t,i){return i.db.getClasses()},"getClasses"),yt=g(async function(t,i,r,a){Z.info("REF0:"),Z.info("Drawing class diagram (v3)",i);let{securityLevel:n,state:o,layout:u}=F();a.db.setDiagramId(i);let p=a.db.getData(),m=at(i,n);p.type=a.type,p.layoutAlgorithm=lt(u),p.nodeSpacing=o?.nodeSpacing||50,p.rankSpacing=o?.rankSpacing||50,p.markers=["aggregation","extension","composition","dependency","lollipop"],p.diagramId=i,await nt(p,m);let f=8;ee.insertTitle(m,"classDiagramTitleText",o?.titleTopMargin??25,a.db.getDiagramTitle()),ut(m,f,"classDiagram",o?.useMaxWidth??!0)},"draw"),Zt={getClasses:Ct,draw:yt,getDir:kt};export{Dt as a,pt as b,Yt as c,Zt as d}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-RG4AUYOV.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-RG4AUYOV.mjs.map new file mode 100644 index 0000000..16b0e58 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-RG4AUYOV.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/class/parser/classDiagram.jison", "../../../src/diagrams/class/classTypes.ts", "../../../src/diagrams/class/classDb.ts", "../../../src/diagrams/class/styles.js", "../../../src/diagrams/class/classRenderer-v3-unified.ts"], + "sourcesContent": ["/* 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,18],$V1=[1,19],$V2=[1,20],$V3=[1,41],$V4=[1,26],$V5=[1,42],$V6=[1,24],$V7=[1,25],$V8=[1,32],$V9=[1,33],$Va=[1,34],$Vb=[1,45],$Vc=[1,35],$Vd=[1,36],$Ve=[1,37],$Vf=[1,38],$Vg=[1,27],$Vh=[1,28],$Vi=[1,29],$Vj=[1,30],$Vk=[1,31],$Vl=[1,44],$Vm=[1,46],$Vn=[1,43],$Vo=[1,47],$Vp=[1,9],$Vq=[1,8,9],$Vr=[1,58],$Vs=[1,59],$Vt=[1,60],$Vu=[1,61],$Vv=[1,62],$Vw=[1,63],$Vx=[1,64],$Vy=[1,8,9,41],$Vz=[1,77],$VA=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],$VB=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],$VC=[13,60,86,100,102,103],$VD=[13,60,73,74,86,100,102,103],$VE=[13,60,68,69,70,71,72,86,100,102,103],$VF=[1,103],$VG=[1,121],$VH=[1,117],$VI=[1,113],$VJ=[1,119],$VK=[1,114],$VL=[1,115],$VM=[1,116],$VN=[1,118],$VO=[1,120],$VP=[22,50,60,61,82,86,87,88,89,90],$VQ=[1,128],$VR=[12,39],$VS=[1,8,9,39,41,44,46],$VT=[1,8,9,22],$VU=[1,153],$VV=[1,8,9,61],$VW=[1,8,9,22,50,60,61,82,86,87,88,89,90];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"statements\":5,\"graphConfig\":6,\"CLASS_DIAGRAM\":7,\"NEWLINE\":8,\"EOF\":9,\"statement\":10,\"classLabel\":11,\"SQS\":12,\"STR\":13,\"SQE\":14,\"namespaceName\":15,\"alphaNumToken\":16,\"classLiteralName\":17,\"DOT\":18,\"className\":19,\"GENERICTYPE\":20,\"relationStatement\":21,\"LABEL\":22,\"namespaceStatement\":23,\"classStatement\":24,\"memberStatement\":25,\"annotationStatement\":26,\"clickStatement\":27,\"styleStatement\":28,\"cssClassStatement\":29,\"noteStatement\":30,\"classDefStatement\":31,\"direction\":32,\"acc_title\":33,\"acc_title_value\":34,\"acc_descr\":35,\"acc_descr_value\":36,\"acc_descr_multiline_value\":37,\"namespaceIdentifier\":38,\"STRUCT_START\":39,\"classStatements\":40,\"STRUCT_STOP\":41,\"NAMESPACE\":42,\"classIdentifier\":43,\"STYLE_SEPARATOR\":44,\"members\":45,\"ANNOTATION_START\":46,\"ANNOTATION_END\":47,\"CLASS\":48,\"emptyBody\":49,\"SPACE\":50,\"MEMBER\":51,\"SEPARATOR\":52,\"relation\":53,\"NOTE_FOR\":54,\"noteText\":55,\"NOTE\":56,\"CLASSDEF\":57,\"classList\":58,\"stylesOpt\":59,\"ALPHA\":60,\"COMMA\":61,\"direction_tb\":62,\"direction_bt\":63,\"direction_rl\":64,\"direction_lr\":65,\"relationType\":66,\"lineType\":67,\"AGGREGATION\":68,\"EXTENSION\":69,\"COMPOSITION\":70,\"DEPENDENCY\":71,\"LOLLIPOP\":72,\"LINE\":73,\"DOTTED_LINE\":74,\"CALLBACK\":75,\"LINK\":76,\"LINK_TARGET\":77,\"CLICK\":78,\"CALLBACK_NAME\":79,\"CALLBACK_ARGS\":80,\"HREF\":81,\"STYLE\":82,\"CSSCLASS\":83,\"style\":84,\"styleComponent\":85,\"NUM\":86,\"COLON\":87,\"UNIT\":88,\"BRKT\":89,\"PCT\":90,\"commentToken\":91,\"textToken\":92,\"graphCodeTokens\":93,\"textNoTagsToken\":94,\"TAGSTART\":95,\"TAGEND\":96,\"==\":97,\"--\":98,\"DEFAULT\":99,\"MINUS\":100,\"keywords\":101,\"UNICODE_TEXT\":102,\"BQUOTE_STR\":103,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",7:\"CLASS_DIAGRAM\",8:\"NEWLINE\",9:\"EOF\",12:\"SQS\",13:\"STR\",14:\"SQE\",18:\"DOT\",20:\"GENERICTYPE\",22:\"LABEL\",33:\"acc_title\",34:\"acc_title_value\",35:\"acc_descr\",36:\"acc_descr_value\",37:\"acc_descr_multiline_value\",39:\"STRUCT_START\",41:\"STRUCT_STOP\",42:\"NAMESPACE\",44:\"STYLE_SEPARATOR\",46:\"ANNOTATION_START\",47:\"ANNOTATION_END\",48:\"CLASS\",50:\"SPACE\",51:\"MEMBER\",52:\"SEPARATOR\",54:\"NOTE_FOR\",56:\"NOTE\",57:\"CLASSDEF\",60:\"ALPHA\",61:\"COMMA\",62:\"direction_tb\",63:\"direction_bt\",64:\"direction_rl\",65:\"direction_lr\",68:\"AGGREGATION\",69:\"EXTENSION\",70:\"COMPOSITION\",71:\"DEPENDENCY\",72:\"LOLLIPOP\",73:\"LINE\",74:\"DOTTED_LINE\",75:\"CALLBACK\",76:\"LINK\",77:\"LINK_TARGET\",78:\"CLICK\",79:\"CALLBACK_NAME\",80:\"CALLBACK_ARGS\",81:\"HREF\",82:\"STYLE\",83:\"CSSCLASS\",86:\"NUM\",87:\"COLON\",88:\"UNIT\",89:\"BRKT\",90:\"PCT\",93:\"graphCodeTokens\",95:\"TAGSTART\",96:\"TAGEND\",97:\"==\",98:\"--\",99:\"DEFAULT\",100:\"MINUS\",101:\"keywords\",102:\"UNICODE_TEXT\",103:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 8:\n this.$=$$[$0-1]; \nbreak;\ncase 9: case 10: case 13: case 15:\n this.$=$$[$0]; \nbreak;\ncase 11: case 14:\n this.$=$$[$0-2]+'.'+$$[$0]; \nbreak;\ncase 12: case 16:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 17: case 18:\n this.$=$$[$0-1]+'~'+$$[$0]+'~'; \nbreak;\ncase 19:\n yy.addRelation($$[$0]); \nbreak;\ncase 20:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 31:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 32: case 33:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 34:\n yy.addClassesToNamespace($$[$0-3], $$[$0-1][0], $$[$0-1][1]); yy.popNamespace(); \nbreak;\ncase 35:\n yy.addClassesToNamespace($$[$0-4], $$[$0-1][0], $$[$0-1][1]); yy.popNamespace(); \nbreak;\ncase 36:\n this.$=yy.addNamespace($$[$0]); \nbreak;\ncase 37:\n this.$=yy.addNamespace($$[$0-1], $$[$0]); \nbreak;\ncase 38:\nthis.$=[[$$[$0]], []]\nbreak;\ncase 39:\nthis.$=[[$$[$0-1]], []]\nbreak;\ncase 40:\n$$[$0][0].unshift($$[$0-2]); this.$=$$[$0]\nbreak;\ncase 41:\nthis.$=[[], [$$[$0]]]\nbreak;\ncase 42:\nthis.$=[[], [$$[$0-1]]]\nbreak;\ncase 43:\n$$[$0][1].unshift($$[$0-2]); this.$=$$[$0]\nbreak;\ncase 44: case 45:\nthis.$=[[], []]\nbreak;\ncase 46:\nthis.$=$$[$0]\nbreak;\ncase 48:\nyy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 49:\nyy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 51:\nyy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 52:\nyy.addAnnotation($$[$0-3], $$[$0-1]);\nbreak;\ncase 53:\nyy.addAnnotation($$[$0-6], $$[$0-4]);yy.addMembers($$[$0-6],$$[$0-1]);\nbreak;\ncase 54:\nyy.addAnnotation($$[$0-5], $$[$0-3]);\nbreak;\ncase 55:\nthis.$=$$[$0]; yy.addClass($$[$0]);\nbreak;\ncase 56:\nthis.$=$$[$0-1]; yy.addClass($$[$0-1]);yy.setClassLabel($$[$0-1], $$[$0]);\nbreak;\ncase 60:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 61: case 74:\n this.$ = [$$[$0]]; \nbreak;\ncase 62:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 63:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 64:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 65:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 66:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 67:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 68:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 69:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 70:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 71:\n this.$ = yy.addNote($$[$0], $$[$0-1]); \nbreak;\ncase 72:\n this.$ = yy.addNote($$[$0]); \nbreak;\ncase 73:\nthis.$ = $$[$0-2];yy.defineClass($$[$0-1],$$[$0]);\nbreak;\ncase 75:\n this.$ = $$[$0-2].concat([$$[$0]]); \nbreak;\ncase 76:\n yy.setDirection('TB');\nbreak;\ncase 77:\n yy.setDirection('BT');\nbreak;\ncase 78:\n yy.setDirection('RL');\nbreak;\ncase 79:\n yy.setDirection('LR');\nbreak;\ncase 80:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 81:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 82:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 83:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 84:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 85:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 86:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 87:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 88:\n this.$=yy.relationType.LOLLIPOP;\nbreak;\ncase 89:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 90:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 91: case 97:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 92: case 98:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 93:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 94:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 95:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 96:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 99:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 100:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 101:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0]);\nbreak;\ncase 102:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-1], $$[$0]);\nbreak;\ncase 103:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 104:\nthis.$ = $$[$0-5];yy.setLink($$[$0-4], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-4], $$[$0-1]);\nbreak;\ncase 105:\nthis.$ = $$[$0-2];yy.setCssStyle($$[$0-1],$$[$0]);\nbreak;\ncase 106:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\ncase 107:\nthis.$ = [$$[$0]]\nbreak;\ncase 108:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 110:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:$V0,35:$V1,37:$V2,38:22,42:$V3,43:23,46:$V4,48:$V5,51:$V6,52:$V7,54:$V8,56:$V9,57:$Va,60:$Vb,62:$Vc,63:$Vd,64:$Ve,65:$Vf,75:$Vg,76:$Vh,78:$Vi,82:$Vj,83:$Vk,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},o($Vp,[2,5],{8:[1,48]}),{8:[1,49]},o($Vq,[2,19],{22:[1,50]}),o($Vq,[2,21]),o($Vq,[2,22]),o($Vq,[2,23]),o($Vq,[2,24]),o($Vq,[2,25]),o($Vq,[2,26]),o($Vq,[2,27]),o($Vq,[2,28]),o($Vq,[2,29]),o($Vq,[2,30]),{34:[1,51]},{36:[1,52]},o($Vq,[2,33]),o($Vq,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:$Vr,69:$Vs,70:$Vt,71:$Vu,72:$Vv,73:$Vw,74:$Vx}),{39:[1,65]},o($Vy,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),o($Vq,[2,65]),o($Vq,[2,66]),{16:69,60:$Vb,86:$Vl,100:$Vm,102:$Vn},{16:39,17:40,19:70,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{16:39,17:40,19:71,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{16:39,17:40,19:72,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{13:$Vz,55:76},{58:78,60:[1,79]},o($Vq,[2,76]),o($Vq,[2,77]),o($Vq,[2,78]),o($Vq,[2,79]),o($VA,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo}),o($VA,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{16:39,17:40,19:87,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VB,[2,133]),o($VB,[2,134]),o($VB,[2,135]),o($VB,[2,136]),o([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),o($Vp,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:$V0,35:$V1,37:$V2,42:$V3,46:$V4,48:$V5,51:$V6,52:$V7,54:$V8,56:$V9,57:$Va,60:$Vb,62:$Vc,63:$Vd,64:$Ve,65:$Vf,75:$Vg,76:$Vh,78:$Vi,82:$Vj,83:$Vk,86:$Vl,100:$Vm,102:$Vn,103:$Vo}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:$V0,35:$V1,37:$V2,38:22,42:$V3,43:23,46:$V4,48:$V5,51:$V6,52:$V7,54:$V8,56:$V9,57:$Va,60:$Vb,62:$Vc,63:$Vd,64:$Ve,65:$Vf,75:$Vg,76:$Vh,78:$Vi,82:$Vj,83:$Vk,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($Vq,[2,20]),o($Vq,[2,31]),o($Vq,[2,32]),{13:[1,91],16:39,17:40,19:90,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{53:92,66:56,67:57,68:$Vr,69:$Vs,70:$Vt,71:$Vu,72:$Vv,73:$Vw,74:$Vx},o($Vq,[2,64]),{67:93,73:$Vw,74:$Vx},o($VC,[2,83],{66:94,68:$Vr,69:$Vs,70:$Vt,71:$Vu,72:$Vv}),o($VD,[2,84]),o($VD,[2,85]),o($VD,[2,86]),o($VD,[2,87]),o($VD,[2,88]),o($VE,[2,89]),o($VE,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:$V3,43:23,48:$V5,54:$V8,56:$V9},{16:100,60:$Vb,86:$Vl,100:$Vm,102:$Vn},{41:[1,102],45:101,51:$VF},{16:104,60:$Vb,86:$Vl,100:$Vm,102:$Vn},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:$VG,50:$VH,59:110,60:$VI,82:$VJ,84:111,85:112,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO},{60:[1,122]},{13:$Vz,55:123},o($Vy,[2,72]),o($Vy,[2,138]),{22:$VG,50:$VH,59:124,60:$VI,61:[1,125],82:$VJ,84:111,85:112,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO},o($VP,[2,74]),{16:39,17:40,19:126,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VA,[2,16]),o($VA,[2,17]),o($VA,[2,18]),{11:127,12:$VQ,39:[2,36]},o($VR,[2,9],{16:85,17:86,15:130,18:[1,129],60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo}),o($VR,[2,10]),o($VS,[2,55],{11:131,12:$VQ}),o($Vp,[2,7]),{9:[1,132]},o($VT,[2,67]),{16:39,17:40,19:133,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{13:[1,135],16:39,17:40,19:134,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VC,[2,82],{66:136,68:$Vr,69:$Vs,70:$Vt,71:$Vu,72:$Vv}),o($VC,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:$V3,43:23,48:$V5,54:$V8,56:$V9},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},o($Vy,[2,48],{39:[1,142]}),{41:[1,143]},o($Vy,[2,50]),{41:[2,61],45:144,51:$VF},{47:[1,145]},{16:39,17:40,19:146,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($Vq,[2,91],{13:[1,147]}),o($Vq,[2,93],{13:[1,149],77:[1,148]}),o($Vq,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},o($Vq,[2,105],{61:$VU}),o($VV,[2,107],{85:154,22:$VG,50:$VH,60:$VI,82:$VJ,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO}),o($VW,[2,109]),o($VW,[2,111]),o($VW,[2,112]),o($VW,[2,113]),o($VW,[2,114]),o($VW,[2,115]),o($VW,[2,116]),o($VW,[2,117]),o($VW,[2,118]),o($VW,[2,119]),o($Vq,[2,106]),o($Vy,[2,71]),o($Vq,[2,73],{61:$VU}),{60:[1,155]},o($VA,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VR,[2,12]),o($VS,[2,56]),{1:[2,4]},o($VT,[2,69]),o($VT,[2,68]),{16:39,17:40,19:158,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VC,[2,80]),o($Vy,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:$V3,43:23,48:$V5,54:$V8,56:$V9},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:$V3,43:23,48:$V5,54:$V8,56:$V9},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:$V3,43:23,48:$V5,54:$V8,56:$V9},{45:163,51:$VF},o($Vy,[2,49]),{41:[2,62]},o($Vy,[2,52],{39:[1,164]}),o($Vq,[2,60]),o($Vq,[2,92]),o($Vq,[2,94]),o($Vq,[2,95],{77:[1,165]}),o($Vq,[2,98]),o($Vq,[2,99],{13:[1,166]}),o($Vq,[2,101],{13:[1,168],77:[1,167]}),{22:$VG,50:$VH,60:$VI,82:$VJ,84:169,85:112,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO},o($VW,[2,110]),o($VP,[2,75]),{14:[1,170]},o($VR,[2,11]),o($VT,[2,70]),o($Vy,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:$VF},o($Vq,[2,96]),o($Vq,[2,100]),o($Vq,[2,102]),o($Vq,[2,103],{77:[1,174]}),o($VV,[2,108],{85:154,22:$VG,50:$VH,60:$VI,82:$VJ,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO}),o($VS,[2,8]),o($Vy,[2,51]),{41:[1,175]},o($Vy,[2,54]),o($Vq,[2,104]),o($Vy,[2,53])],\ndefaultActions: {2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},\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\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:return 62;\nbreak;\ncase 1:return 63;\nbreak;\ncase 2:return 64;\nbreak;\ncase 3:return 65;\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6: this.begin(\"acc_title\");return 33; \nbreak;\ncase 7: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 8: this.begin(\"acc_descr\");return 35; \nbreak;\ncase 9: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 10: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 11: this.popState(); \nbreak;\ncase 12:return \"acc_descr_multiline_value\";\nbreak;\ncase 13:return 8;\nbreak;\ncase 14:/* skip whitespace */\nbreak;\ncase 15:return 7;\nbreak;\ncase 16:return 7;\nbreak;\ncase 17:return 'EDGE_STATE';\nbreak;\ncase 18:this.begin(\"callback_name\");\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 21:return 79;\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 80;\nbreak;\ncase 24:this.popState();\nbreak;\ncase 25:return \"STR\";\nbreak;\ncase 26:this.begin(\"string\");\nbreak;\ncase 27:return 82;\nbreak;\ncase 28:return 57;\nbreak;\ncase 29: this.begin('namespace'); return 42; \nbreak;\ncase 30: this.popState(); return 8; \nbreak;\ncase 31:/* skip whitespace */\nbreak;\ncase 32: this.begin(\"namespace-body\"); return 39;\nbreak;\ncase 33: this.popState(); this.less(0); \nbreak;\ncase 34: this.popState(); return 41; \nbreak;\ncase 35:return \"EOF_IN_STRUCT\";\nbreak;\ncase 36:return 8;\nbreak;\ncase 37:/* skip whitespace */\nbreak;\ncase 38:return 'EDGE_STATE';\nbreak;\ncase 39: this.begin('class'); return 48;\nbreak;\ncase 40: this.popState(); return 8; \nbreak;\ncase 41:/* skip whitespace */\nbreak;\ncase 42: this.popState(); this.popState(); return 41;\nbreak;\ncase 43: this.begin(\"class-body\"); return 39;\nbreak;\ncase 44: this.popState(); return 41; \nbreak;\ncase 45:return \"EOF_IN_STRUCT\";\nbreak;\ncase 46: return 'EDGE_STATE';\nbreak;\ncase 47:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 48:/* nothing */\nbreak;\ncase 49: return \"MEMBER\";\nbreak;\ncase 50:return 83;\nbreak;\ncase 51:return 75;\nbreak;\ncase 52:return 76;\nbreak;\ncase 53:return 78;\nbreak;\ncase 54:return 54;\nbreak;\ncase 55:return 56;\nbreak;\ncase 56:return 46;\nbreak;\ncase 57:return 47;\nbreak;\ncase 58:return 81;\nbreak;\ncase 59:this.popState();\nbreak;\ncase 60:return \"GENERICTYPE\";\nbreak;\ncase 61:this.begin(\"generic\");\nbreak;\ncase 62:this.popState();\nbreak;\ncase 63:return \"BQUOTE_STR\";\nbreak;\ncase 64:this.begin(\"bqstring\");\nbreak;\ncase 65:return 77;\nbreak;\ncase 66:return 77;\nbreak;\ncase 67:return 77;\nbreak;\ncase 68:return 77;\nbreak;\ncase 69:return 69;\nbreak;\ncase 70:return 69;\nbreak;\ncase 71:return 71;\nbreak;\ncase 72:return 71;\nbreak;\ncase 73:return 70;\nbreak;\ncase 74:return 68;\nbreak;\ncase 75:return 72;\nbreak;\ncase 76:return 73;\nbreak;\ncase 77:return 74;\nbreak;\ncase 78:return 22;\nbreak;\ncase 79:return 44;\nbreak;\ncase 80:return 100;\nbreak;\ncase 81:return 18;\nbreak;\ncase 82:return 'PLUS';\nbreak;\ncase 83:return 87;\nbreak;\ncase 84:return 61;\nbreak;\ncase 85:return 89;\nbreak;\ncase 86:return 89;\nbreak;\ncase 87:return 90;\nbreak;\ncase 88:return 'EQUALS';\nbreak;\ncase 89:return 'EQUALS';\nbreak;\ncase 90:return 60;\nbreak;\ncase 91:return 12;\nbreak;\ncase 92:return 14;\nbreak;\ncase 93:return 'PUNCTUATION';\nbreak;\ncase 94:return 86;\nbreak;\ncase 95:return 102;\nbreak;\ncase 96:return 50;\nbreak;\ncase 97:return 50;\nbreak;\ncase 98:return 9;\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:\\[\\*\\])/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[\"])/,/^(?:style\\b)/,/^(?:classDef\\b)/,/^(?:namespace\\b)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:[}])/,/^(?:$)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:\\[\\*\\])/,/^(?:class\\b)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\\[\\*\\])/,/^(?:[{])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:note for\\b)/,/^(?:note\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:\\s*\\(\\))/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{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)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"namespace-body\":{\"rules\":[26,29,34,35,36,37,38,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"namespace\":{\"rules\":[26,29,30,31,32,33,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"class-body\":{\"rules\":[26,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"class\":{\"rules\":[26,40,41,42,43,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[11,12,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"acc_descr\":{\"rules\":[9,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"acc_title\":{\"rules\":[7,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"callback_args\":{\"rules\":[22,23,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"callback_name\":{\"rules\":[19,20,21,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"href\":{\"rules\":[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"struct\":{\"rules\":[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"generic\":{\"rules\":[26,50,51,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"bqstring\":{\"rules\":[26,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"string\":{\"rules\":[24,25,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,39,50,51,52,53,54,55,56,57,58,61,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],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { parseGenericTypes, sanitizeText } from '../common/common.js';\n\nexport interface ClassNode {\n id: string;\n type: string;\n label: string;\n shape: 'classBox';\n text: string;\n cssClasses: string;\n methods: ClassMember[];\n members: ClassMember[];\n annotations: string[];\n domId: string;\n styles: string[];\n parent?: string;\n link?: string;\n linkTarget?: string;\n haveCallback?: boolean;\n tooltip?: string;\n look?: string;\n}\n\nexport type Visibility = '#' | '+' | '~' | '-' | '';\nexport const visibilityValues = ['#', '+', '~', '-', ''];\n\n/**\n * Parses and stores class diagram member variables/methods.\n *\n */\nexport class ClassMember {\n id!: string;\n cssStyle!: string;\n memberType!: 'method' | 'attribute';\n visibility!: Visibility;\n text: string;\n /**\n * denote if static or to determine which css class to apply to the node\n * @defaultValue ''\n */\n classifier!: string;\n /**\n * parameters for method\n * @defaultValue ''\n */\n parameters!: string;\n /**\n * return type for method\n * @defaultValue ''\n */\n returnType!: string;\n\n constructor(input: string, memberType: 'method' | 'attribute') {\n this.memberType = memberType;\n this.visibility = '';\n this.classifier = '';\n this.text = '';\n const sanitizedInput = sanitizeText(input, getConfig());\n this.parseMember(sanitizedInput);\n }\n\n getDisplayDetails() {\n let displayText = this.visibility + parseGenericTypes(this.id);\n if (this.memberType === 'method') {\n displayText += `(${parseGenericTypes(this.parameters.trim())})`;\n if (this.returnType) {\n displayText += ' : ' + parseGenericTypes(this.returnType);\n }\n }\n\n displayText = displayText.trim();\n const cssStyle = this.parseClassifier();\n\n return {\n displayText,\n cssStyle,\n };\n }\n\n parseMember(input: string) {\n let potentialClassifier = '';\n\n if (this.memberType === 'method') {\n const methodRegEx = /([#+~-])?(.+)\\((.*)\\)([\\s$*])?(.*)([$*])?/;\n const match = methodRegEx.exec(input);\n if (match) {\n const detectedVisibility = match[1] ? match[1].trim() : '';\n\n if (visibilityValues.includes(detectedVisibility)) {\n this.visibility = detectedVisibility as Visibility;\n }\n\n this.id = match[2];\n this.parameters = match[3] ? match[3].trim() : '';\n potentialClassifier = match[4] ? match[4].trim() : '';\n this.returnType = match[5] ? match[5].trim() : '';\n\n if (potentialClassifier === '') {\n const lastChar = this.returnType.substring(this.returnType.length - 1);\n if (/[$*]/.exec(lastChar)) {\n potentialClassifier = lastChar;\n this.returnType = this.returnType.substring(0, this.returnType.length - 1);\n }\n }\n }\n } else {\n const length = input.length;\n const firstChar = input.substring(0, 1);\n const lastChar = input.substring(length - 1);\n\n if (visibilityValues.includes(firstChar)) {\n this.visibility = firstChar as Visibility;\n }\n\n if (/[$*]/.exec(lastChar)) {\n potentialClassifier = lastChar;\n }\n\n this.id = input.substring(\n this.visibility === '' ? 0 : 1,\n potentialClassifier === '' ? length : length - 1\n );\n }\n\n this.classifier = potentialClassifier;\n // Preserve one space only\n this.id = this.id.startsWith(' ') ? ' ' + this.id.trim() : this.id.trim();\n\n const combinedText = `${this.visibility ? '\\\\' + this.visibility : ''}${parseGenericTypes(this.id)}${this.memberType === 'method' ? `(${parseGenericTypes(this.parameters)})${this.returnType ? ' : ' + parseGenericTypes(this.returnType) : ''}` : ''}`;\n this.text = combinedText.replaceAll('<', '<').replaceAll('>', '>');\n if (this.text.startsWith('\\\\<')) {\n this.text = this.text.replace('\\\\<', '~');\n }\n }\n\n parseClassifier() {\n switch (this.classifier) {\n case '*':\n return 'font-style:italic;';\n case '$':\n return 'text-decoration:underline;';\n default:\n return '';\n }\n }\n}\n\nexport interface ClassNote {\n id: string;\n class: string;\n text: string;\n index: number;\n parent?: string;\n}\n\nexport interface ClassRelation {\n id1: string;\n id2: string;\n relationTitle1: string;\n relationTitle2: string;\n type: string;\n title: string;\n text: string;\n style: string[];\n relation: {\n type1: number;\n type2: number;\n lineType: number;\n };\n}\n\nexport interface Interface {\n id: string;\n label: string;\n classId: string;\n}\n\nexport interface NamespaceNode {\n id: string;\n label: string;\n domId: string;\n classes: ClassMap;\n notes: ClassNoteMap;\n children: NamespaceMap;\n parent?: string;\n /**\n * True if this namespace was explicitly declared by the user (e.g. `namespace A.B { ... }`).\n * False for intermediate ancestors auto-created when parsing a dotted name.\n * Used by compact (non-hierarchical) rendering mode to only emit declared namespaces.\n */\n explicit: boolean;\n}\n\nexport interface StyleClass {\n id: string;\n styles: string[];\n textStyles: string[];\n}\n\nexport type ClassMap = Map;\nexport type ClassNoteMap = Map;\nexport type NamespaceMap = Map;\n", "import { select } from 'd3';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport common from '../common/common.js';\nimport utils, { getEdgeId } from '../../utils.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport { createTooltip } from '../common/svgDrawCommon.js';\nimport { ClassMember } from './classTypes.js';\nimport type {\n ClassRelation,\n ClassNode,\n ClassNote,\n ClassNoteMap,\n ClassMap,\n NamespaceMap,\n NamespaceNode,\n StyleClass,\n Interface,\n} from './classTypes.js';\nimport type { Node, Edge } from '../../rendering-util/types.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport DOMPurify from 'dompurify';\n\nconst MERMAID_DOM_ID_PREFIX = 'classId-';\nlet classCounter = 0;\n\nconst sanitizeText = (txt: string) => common.sanitizeText(txt, getConfig());\n\nexport class ClassDB implements DiagramDB {\n private relations: ClassRelation[] = [];\n private classes: ClassMap = new Map();\n private readonly styleClasses = new Map();\n private notes: ClassNoteMap = new Map();\n private interfaces: Interface[] = [];\n // private static classCounter = 0;\n private namespaces = new Map();\n private namespaceCounter = 0;\n private namespaceStack: string[] = [];\n private diagramId = '';\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n private functions: Function[] = [];\n\n constructor() {\n this.functions.push(this.setupToolTips.bind(this));\n this.clear();\n\n // Needed for JISON since it only supports direct properties\n this.addRelation = this.addRelation.bind(this);\n this.addClassesToNamespace = this.addClassesToNamespace.bind(this);\n this.addNamespace = this.addNamespace.bind(this);\n this.popNamespace = this.popNamespace.bind(this);\n this.setCssClass = this.setCssClass.bind(this);\n this.addMembers = this.addMembers.bind(this);\n this.addClass = this.addClass.bind(this);\n this.setClassLabel = this.setClassLabel.bind(this);\n this.addAnnotation = this.addAnnotation.bind(this);\n this.addMember = this.addMember.bind(this);\n this.cleanupLabel = this.cleanupLabel.bind(this);\n this.addNote = this.addNote.bind(this);\n this.defineClass = this.defineClass.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.setLink = this.setLink.bind(this);\n this.bindFunctions = this.bindFunctions.bind(this);\n this.clear = this.clear.bind(this);\n\n this.setTooltip = this.setTooltip.bind(this);\n this.setClickEvent = this.setClickEvent.bind(this);\n this.setCssStyle = this.setCssStyle.bind(this);\n }\n\n private splitClassNameAndType(_id: string) {\n const id = common.sanitizeText(_id, getConfig());\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n const split = id.split('~');\n className = sanitizeText(split[0]);\n genericType = sanitizeText(split[1]);\n }\n\n return { className: className, type: genericType };\n }\n\n public setClassLabel(_id: string, label: string) {\n const id = common.sanitizeText(_id, getConfig());\n if (label) {\n label = sanitizeText(label);\n }\n\n const { className } = this.splitClassNameAndType(id);\n this.classes.get(className)!.label = label;\n this.classes.get(className)!.text =\n `${label}${this.classes.get(className)!.type ? `<${this.classes.get(className)!.type}>` : ''}`;\n }\n\n /**\n * Function called by parser when a node definition has been found.\n *\n * @param id - ID of the class to add\n * @public\n */\n public addClass(_id: string) {\n const id = common.sanitizeText(_id, getConfig());\n const { className, type } = this.splitClassNameAndType(id);\n // Only add class if not exists\n if (this.classes.has(className)) {\n return;\n }\n // alert('Adding class: ' + className);\n const name = common.sanitizeText(className, getConfig());\n // alert('Adding class after: ' + name);\n this.classes.set(name, {\n id: name,\n type: type,\n label: name,\n text: `${name}${type ? `<${type}>` : ''}`,\n shape: 'classBox',\n cssClasses: 'default',\n methods: [],\n members: [],\n annotations: [],\n styles: [],\n domId: MERMAID_DOM_ID_PREFIX + name + '-' + classCounter,\n });\n\n classCounter++;\n }\n\n private addInterface(label: string, classId: string) {\n const classInterface: Interface = {\n id: `interface${this.interfaces.length}`,\n label,\n classId,\n };\n\n this.interfaces.push(classInterface);\n }\n\n /**\n * Sets the diagram's SVG element ID, used to prefix domIds for uniqueness\n * across multiple diagrams on the same page.\n */\n public setDiagramId(svgElementId: string) {\n this.diagramId = svgElementId;\n }\n\n /**\n * Function to lookup domId from id in the graph definition.\n * When diagramId is set, returns the prefixed version for DOM uniqueness.\n *\n * @param id - class ID to lookup\n * @public\n */\n public lookUpDomId(_id: string): string {\n const id = common.sanitizeText(_id, getConfig());\n if (this.classes.has(id)) {\n const domId = this.classes.get(id)!.domId;\n return this.diagramId ? `${this.diagramId}-${domId}` : domId;\n }\n throw new Error('Class not found: ' + id);\n }\n\n public clear() {\n this.relations = [];\n this.classes = new Map();\n this.notes = new Map();\n this.interfaces = [];\n this.functions = [];\n this.functions.push(this.setupToolTips.bind(this));\n this.namespaces = new Map();\n this.namespaceCounter = 0;\n this.namespaceStack = [];\n this.diagramId = '';\n this.direction = 'TB';\n commonClear();\n }\n\n public getClass(id: string): ClassNode {\n return this.classes.get(id)!;\n }\n\n public getClasses(): ClassMap {\n return this.classes;\n }\n\n public getRelations(): ClassRelation[] {\n return this.relations;\n }\n\n public getNote(id: string | number): ClassNote {\n const key = typeof id === 'number' ? `note${id}` : id;\n return this.notes.get(key)!;\n }\n\n public getNotes(): ClassNoteMap {\n return this.notes;\n }\n\n public addRelation(classRelation: ClassRelation) {\n log.debug('Adding relation: ' + JSON.stringify(classRelation));\n // Due to relationType cannot just check if it is equal to 'none' or it complains, can fix this later\n const invalidTypes = [\n this.relationType.LOLLIPOP,\n this.relationType.AGGREGATION,\n this.relationType.COMPOSITION,\n this.relationType.DEPENDENCY,\n this.relationType.EXTENSION,\n ];\n\n if (\n classRelation.relation.type1 === this.relationType.LOLLIPOP &&\n !invalidTypes.includes(classRelation.relation.type2)\n ) {\n this.addClass(classRelation.id2);\n this.addInterface(classRelation.id1, classRelation.id2);\n classRelation.id1 = `interface${this.interfaces.length - 1}`;\n } else if (\n classRelation.relation.type2 === this.relationType.LOLLIPOP &&\n !invalidTypes.includes(classRelation.relation.type1)\n ) {\n this.addClass(classRelation.id1);\n this.addInterface(classRelation.id2, classRelation.id1);\n classRelation.id2 = `interface${this.interfaces.length - 1}`;\n } else {\n this.addClass(classRelation.id1);\n this.addClass(classRelation.id2);\n }\n\n classRelation.id1 = this.splitClassNameAndType(classRelation.id1).className;\n classRelation.id2 = this.splitClassNameAndType(classRelation.id2).className;\n\n classRelation.relationTitle1 = common.sanitizeText(\n classRelation.relationTitle1.trim(),\n getConfig()\n );\n\n classRelation.relationTitle2 = common.sanitizeText(\n classRelation.relationTitle2.trim(),\n getConfig()\n );\n\n this.relations.push(classRelation);\n }\n\n /**\n * Adds an annotation to the specified class Annotations mark special properties of the given type\n * (like 'interface' or 'service')\n *\n * @param className - The class name\n * @param annotation - The name of the annotation without any brackets\n * @public\n */\n public addAnnotation(className: string, annotation: string) {\n const validatedClassName = this.splitClassNameAndType(className).className;\n this.classes.get(validatedClassName)!.annotations.push(annotation);\n }\n\n /**\n * Adds a member to the specified class\n *\n * @param className - The class name\n * @param member - The full name of the member. If the member is enclosed in `<>` it is\n * treated as an annotation If the member is ending with a closing bracket ) it is treated as a\n * method Otherwise the member will be treated as a normal property\n * @public\n */\n public addMember(className: string, member: string) {\n this.addClass(className);\n\n const validatedClassName = this.splitClassNameAndType(className).className;\n const theClass = this.classes.get(validatedClassName)!;\n\n if (typeof member === 'string') {\n // Member can contain white spaces, we trim them out\n const memberString = member.trim();\n\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\n // its an annotation\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(')') > 0) {\n //its a method\n theClass.methods.push(new ClassMember(memberString, 'method'));\n } else if (memberString) {\n theClass.members.push(new ClassMember(memberString, 'attribute'));\n }\n }\n }\n\n public addMembers(className: string, members: string[]) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => this.addMember(className, member));\n }\n }\n\n public addNote(text: string, className: string): string {\n const index = this.notes.size;\n const note = {\n id: `note${index}`,\n class: className,\n text: text,\n index: index,\n };\n this.notes.set(note.id, note);\n return note.id;\n }\n\n public cleanupLabel(label: string): string {\n if (label.startsWith(':')) {\n label = label.substring(1);\n }\n return sanitizeText(label.trim());\n }\n\n /**\n * Called by parser when assigning cssClass to a class\n *\n * @param ids - Comma separated list of ids\n * @param className - Class to add\n */\n public setCssClass(ids: string, className: string) {\n ids.split(',').forEach((_id) => {\n let id = _id;\n if (/\\d/.exec(_id[0])) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n const classNode = this.classes.get(id);\n if (classNode) {\n classNode.cssClasses += ' ' + className;\n }\n });\n }\n\n public defineClass(ids: string[], style: string[]) {\n for (const id of ids) {\n let styleClass = this.styleClasses.get(id);\n if (styleClass === undefined) {\n styleClass = { id, styles: [], textStyles: [] };\n this.styleClasses.set(id, styleClass);\n }\n\n if (style) {\n style.forEach((s) => {\n if (/color/.exec(s)) {\n const newStyle = s.replace('fill', 'bgFill'); // .replace('color', 'fill');\n styleClass.textStyles.push(newStyle);\n }\n styleClass.styles.push(s);\n });\n }\n\n this.classes.forEach((value) => {\n if (value.cssClasses.includes(id)) {\n value.styles.push(...style.flatMap((s) => s.split(',')));\n }\n });\n }\n }\n\n /**\n * Called by parser when a tooltip is found, e.g. a clickable element.\n *\n * @param ids - Comma separated list of ids\n * @param tooltip - Tooltip to add\n */\n public setTooltip(ids: string, tooltip?: string) {\n ids.split(',').forEach((id) => {\n if (tooltip !== undefined) {\n this.classes.get(id)!.tooltip = sanitizeText(tooltip);\n }\n });\n }\n\n public getTooltip(id: string, namespace?: string): string | undefined {\n if (namespace && this.namespaces.has(namespace)) {\n return this.namespaces.get(namespace)!.classes.get(id)!.tooltip;\n }\n\n return this.classes.get(id)!.tooltip;\n }\n\n /**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids - Comma separated list of ids\n * @param linkStr - URL to create a link for\n * @param target - Target of the link, _blank by default as originally defined in the svgDraw.js file\n */\n public setLink(ids: string, linkStr: string, target: string) {\n const config = getConfig();\n ids.split(',').forEach((_id) => {\n let id = _id;\n if (/\\d/.exec(_id[0])) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n const theClass = this.classes.get(id);\n if (theClass) {\n theClass.link = utils.formatUrl(linkStr, config);\n if (config.securityLevel === 'sandbox') {\n theClass.linkTarget = '_top';\n } else if (typeof target === 'string') {\n theClass.linkTarget = sanitizeText(target);\n } else {\n theClass.linkTarget = '_blank';\n }\n }\n });\n this.setCssClass(ids, 'clickable');\n }\n\n /**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids - Comma separated list of ids\n * @param functionName - Function to be called on click\n * @param functionArgs - Function args the function should be called with\n */\n public setClickEvent(ids: string, functionName: string, functionArgs: string) {\n ids.split(',').forEach((id) => {\n this.setClickFunc(id, functionName, functionArgs);\n this.classes.get(id)!.haveCallback = true;\n });\n this.setCssClass(ids, 'clickable');\n }\n\n private setClickFunc(_domId: string, functionName: string, functionArgs: string) {\n const domId = common.sanitizeText(_domId, getConfig());\n const config = getConfig();\n if (config.securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n\n const id = domId;\n if (this.classes.has(id)) {\n let argList: string[] = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.startsWith('\"') && item.endsWith('\"')) {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n this.functions.push(() => {\n const elemId = this.lookUpDomId(id);\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n () => {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n }\n\n public bindFunctions(element: Element) {\n this.functions.forEach((fun) => {\n fun(element);\n });\n }\n\n public readonly lineType = {\n LINE: 0,\n DOTTED_LINE: 1,\n };\n\n public readonly relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n LOLLIPOP: 4,\n };\n\n // Utility function to escape HTML meta-characters\n private escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n\n private readonly setupToolTips = (element: Element) => {\n const tooltipElem = createTooltip();\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g').filter(function () {\n return select(this).attr('title') !== null;\n });\n\n nodes\n .on('mouseover', (event: MouseEvent) => {\n const el = select(event.currentTarget as HTMLElement);\n const title = el.attr('title');\n if (!title) {\n return;\n }\n\n const rect = (event.currentTarget as Element).getBoundingClientRect();\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem\n .html(DOMPurify.sanitize(title))\n .style('left', `${window.scrollX + rect.left + rect.width / 2}px`)\n .style('top', `${window.scrollY + rect.bottom + 4}px`);\n\n el.classed('hover', true);\n })\n .on('mouseout', (event: MouseEvent) => {\n tooltipElem.transition().duration(500).style('opacity', 0);\n select(event.currentTarget as HTMLElement).classed('hover', false);\n });\n };\n\n private direction = 'TB';\n public getDirection() {\n return this.direction;\n }\n public setDirection(dir: string) {\n this.direction = dir;\n }\n\n private static resolveQualifiedId(id: string, stack: string[]): string {\n const prefix = stack.at(-1);\n return prefix ? `${prefix}.${id}` : id;\n }\n\n private static getAncestorIds(qualifiedId: string): string[] {\n const parts = qualifiedId.split('.');\n const ids: string[] = new Array(parts.length);\n ids[0] = parts[0];\n for (let i = 1; i < parts.length; i++) {\n ids[i] = `${ids[i - 1]}.${parts[i]}`;\n }\n return ids;\n }\n\n private createNamespaceNode(\n id: string,\n label: string,\n parentId?: string,\n explicit = false\n ): NamespaceNode {\n return {\n id,\n label,\n classes: new Map(),\n notes: new Map(),\n children: new Map(),\n domId: MERMAID_DOM_ID_PREFIX + id + '-' + this.namespaceCounter++,\n parent: parentId,\n explicit,\n };\n }\n\n private linkParentChild(parentId: string, childId: string) {\n const parent = this.namespaces.get(parentId);\n const child = this.namespaces.get(childId);\n if (!parent || !child) {\n return;\n }\n if (!parent.children.has(childId)) {\n parent.children.set(childId, child);\n }\n child.parent ??= parentId;\n }\n\n public addNamespace(id: string, label?: string): string {\n const qualifiedId = ClassDB.resolveQualifiedId(id, this.namespaceStack);\n // Push first \u2014 grammar guarantees a matching popNamespace in all cases, including re-declarations\n this.namespaceStack.push(qualifiedId);\n\n if (this.namespaces.has(qualifiedId)) {\n const existing = this.namespaces.get(qualifiedId)!;\n // Re-declaration promotes an auto-created ancestor to explicit\n existing.explicit = true;\n if (label) {\n existing.label = label;\n }\n return qualifiedId;\n }\n\n const parts = qualifiedId.split('.');\n const ancestorIds = ClassDB.getAncestorIds(qualifiedId);\n for (let i = 0; i < ancestorIds.length; i++) {\n const currentId = ancestorIds[i];\n const parentId = i > 0 ? ancestorIds[i - 1] : undefined;\n const isLeaf = i === ancestorIds.length - 1;\n const nodeLabel = isLeaf && label ? label : parts[i];\n\n if (!this.namespaces.has(currentId)) {\n this.namespaces.set(\n currentId,\n this.createNamespaceNode(currentId, nodeLabel, parentId, isLeaf)\n );\n } else if (isLeaf) {\n this.namespaces.get(currentId)!.explicit = true;\n }\n if (parentId) {\n this.linkParentChild(parentId, currentId);\n }\n }\n\n return qualifiedId;\n }\n\n public popNamespace() {\n this.namespaceStack.pop();\n }\n\n public getNamespace(name: string): NamespaceNode {\n return this.namespaces.get(name)!;\n }\n\n public getNamespaces(): NamespaceMap {\n return this.namespaces;\n }\n\n /**\n * Function called by parser when a namespace definition has been found.\n *\n * @param id - ID of the namespace to add\n * @param classNames - IDs of the class to add\n * @param noteNames - IDs of the notes to add\n * @public\n */\n public addClassesToNamespace(id: string, classNames: string[], noteNames: string[]) {\n if (!this.namespaces.has(id)) {\n return;\n }\n for (const name of classNames) {\n const { className } = this.splitClassNameAndType(name);\n const classNode = this.getClass(className);\n classNode.parent = id;\n this.namespaces.get(id)!.classes.set(className, classNode);\n }\n for (const noteName of noteNames) {\n const noteNode = this.getNote(noteName);\n noteNode.parent = id;\n this.namespaces.get(id)!.notes.set(noteName, noteNode);\n }\n }\n\n public setCssStyle(id: string, styles: string[]) {\n const thisClass = this.classes.get(id);\n if (!styles || !thisClass) {\n return;\n }\n for (const s of styles) {\n if (s.includes(',')) {\n thisClass.styles.push(...s.split(','));\n } else {\n thisClass.styles.push(s);\n }\n }\n }\n\n /**\n * Gets the arrow marker for a type index\n *\n * @param type - The type to look for\n * @returns The arrow marker\n */\n private getArrowMarker(type: number) {\n let marker;\n switch (type) {\n case 0:\n marker = 'aggregation';\n break;\n case 1:\n marker = 'extension';\n break;\n case 2:\n marker = 'composition';\n break;\n case 3:\n marker = 'dependency';\n break;\n case 4:\n marker = 'lollipop';\n break;\n default:\n marker = 'none';\n }\n return marker;\n }\n\n /**\n * Walks up the namespace tree from the given id and returns the nearest ancestor\n * (or the id itself) that is marked as explicit. Used by compact rendering mode\n * to reassign children to the nearest user-declared namespace.\n */\n private resolveExplicitAncestor(id: string | undefined): string | undefined {\n let current = id;\n while (current) {\n const ns = this.namespaces.get(current);\n if (!ns) {\n return undefined;\n }\n if (ns.explicit) {\n return current;\n }\n current = ns.parent;\n }\n return undefined;\n }\n\n public getData() {\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n const config = getConfig();\n const hierarchical = config.class?.hierarchicalNamespaces ?? true;\n\n for (const namespace of this.namespaces.values()) {\n if (!hierarchical && !namespace.explicit) {\n continue;\n }\n const node: Node = {\n id: namespace.id,\n label: hierarchical ? namespace.label : namespace.id,\n isGroup: true,\n padding: config.class!.padding ?? 16,\n // parent node must be one of [rect, roundedWithTitle, noteGroup, divider]\n shape: 'rect',\n cssStyles: [],\n look: config.look,\n parentId: hierarchical ? namespace.parent : undefined,\n };\n nodes.push(node);\n }\n\n for (const classNode of this.classes.values()) {\n const parentId = hierarchical\n ? classNode.parent\n : this.resolveExplicitAncestor(classNode.parent);\n const node: Node = {\n ...classNode,\n type: undefined,\n isGroup: false,\n parentId,\n look: config.look,\n };\n nodes.push(node);\n }\n\n for (const note of this.notes.values()) {\n const noteParentId = hierarchical ? note.parent : this.resolveExplicitAncestor(note.parent);\n const noteNode: Node = {\n id: note.id,\n label: note.text,\n isGroup: false,\n shape: 'note',\n padding: config.class!.padding ?? 6,\n cssStyles: [\n 'text-align: left',\n 'white-space: nowrap',\n `fill: ${config.themeVariables.noteBkgColor}`,\n `stroke: ${config.themeVariables.noteBorderColor}`,\n ],\n look: config.look,\n parentId: noteParentId,\n labelType: 'markdown',\n };\n nodes.push(noteNode);\n\n const noteClassId = this.classes.get(note.class)?.id;\n\n if (noteClassId) {\n const edge: Edge = {\n id: `edgeNote${note.index}`,\n start: note.id,\n end: noteClassId,\n type: 'normal',\n thickness: 'normal',\n classes: 'relation',\n arrowTypeStart: 'none',\n arrowTypeEnd: 'none',\n arrowheadStyle: '',\n labelStyle: [''],\n style: ['fill: none'],\n pattern: 'dotted',\n look: config.look,\n };\n edges.push(edge);\n }\n }\n\n for (const _interface of this.interfaces) {\n const interfaceNode: Node = {\n id: _interface.id,\n label: _interface.label,\n isGroup: false,\n shape: 'rect',\n cssStyles: ['opacity: 0;'],\n look: config.look,\n };\n nodes.push(interfaceNode);\n }\n\n let cnt = 0;\n for (const classRelation of this.relations) {\n cnt++;\n const edge: Edge = {\n id: getEdgeId(classRelation.id1, classRelation.id2, {\n prefix: 'id',\n counter: cnt,\n }),\n start: classRelation.id1,\n end: classRelation.id2,\n type: 'normal',\n label: classRelation.title,\n labelpos: 'c',\n thickness: 'normal',\n classes: 'relation',\n arrowTypeStart: this.getArrowMarker(classRelation.relation.type1),\n arrowTypeEnd: this.getArrowMarker(classRelation.relation.type2),\n startLabelRight:\n classRelation.relationTitle1 === 'none' ? '' : classRelation.relationTitle1,\n endLabelLeft: classRelation.relationTitle2 === 'none' ? '' : classRelation.relationTitle2,\n arrowheadStyle: '',\n labelStyle: ['display: inline-block'],\n style: classRelation.style || '',\n pattern: classRelation.relation.lineType == 1 ? 'dashed' : 'solid',\n look: config.look,\n labelType: 'markdown',\n };\n edges.push(edge);\n }\n\n return { nodes, edges, other: {}, config, direction: this.getDirection() };\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setAccDescription = setAccDescription;\n public getAccDescription = getAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getConfig = () => getConfig().class;\n}\n", "import { getIconStyles } from '../globalStyles.js';\n\nconst getStyles = (options) =>\n `g.classGroup text {\n fill: ${options.nodeBorder || options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span {\n color: ${options.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span {\n color: ${options.titleColor};\n }\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n\n.noteLabel .nodeLabel, .noteLabel .edgeLabel {\n color: ${options.noteTextColor};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n\n.labelBkg {\n background: ${options.mainBkg};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: ${options.strokeWidth};\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: ${options.strokeWidth};\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n[id$=\"-compositionStart\"], .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-compositionEnd\"], .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-dependencyStart\"], .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-dependencyEnd\"], .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-extensionStart\"], .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-extensionEnd\"], .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-aggregationStart\"], .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-aggregationEnd\"], .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-lollipopStart\"], .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$=\"-lollipopEnd\"], .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n\n.edgeLabel[data-look=\"neo\"] {\n background-color: ${options.edgeLabelBackground};\n p {\n background-color: ${options.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n}\n ${getIconStyles()}\n`;\n\nexport default getStyles;\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\n\n/**\n * Get the direction from the statement items.\n * Look through all of the documents (docs) in the parsedItems\n * Because is a _document_ direction, the default direction is not necessarily the same as the overall default _diagram_ direction.\n * @param parsedItem - the parsed statement item to look through\n * @param defaultDir - the direction to use if none is found\n * @returns The direction to use\n */\nexport const getDir = (parsedItem: any, defaultDir = 'TB') => {\n if (!parsedItem.doc) {\n return defaultDir;\n }\n\n let dir = defaultDir;\n\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === 'dir') {\n dir = parsedItemDoc.value;\n }\n }\n\n return dir;\n};\n\nexport const getClasses = function (\n text: string,\n diagramObj: any\n): Map {\n return diagramObj.db.getClasses();\n};\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing class diagram (v3)', id);\n const { securityLevel, state: conf, layout } = getConfig();\n // Extracting the data from the parsed structure into a more usable form\n // Not related to the refactoring, but this is the first step in the rendering process\n // diag.db.extract(diag.db.getRootDocV2());\n\n // Set the diagram ID for DOM element uniqueness across multiple diagrams\n diag.db.setDiagramId(id);\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n const data4Layout = diag.db.getData() as LayoutData;\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, securityLevel);\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n data4Layout.markers = ['aggregation', 'extension', 'composition', 'dependency', 'lollipop'];\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n const padding = 8;\n utils.insertTitle(\n svg,\n 'classDiagramTitleText',\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n\n setupViewPortForSVG(svg, padding, 'classDiagram', conf?.useMaxWidth ?? true);\n};\n\nexport default {\n getClasses,\n draw,\n getDir,\n};\n"], + "mappings": "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AG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GA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,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,UAAY,CAAC,MAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,UAAY,CAAC,MAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,cAAgB,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,cAAgB,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EA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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "classDiagram_default", "parser", "visibilityValues", "ClassMember", "__name", "input", "memberType", "sanitizedInput", "sanitizeText", "getConfig", "displayText", "parseGenericTypes", "cssStyle", "potentialClassifier", "match", "detectedVisibility", "lastChar", "length", "firstChar", "combinedText", "MERMAID_DOM_ID_PREFIX", "classCounter", "sanitizeText", "__name", "txt", "common_default", "getConfig", "ClassDB", "_ClassDB", "element", "tooltipElem", "createTooltip", "select_default", "event", "el", "title", "rect", "purify", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "_id", "id", "genericType", "className", "split", "label", "type", "name", "classId", "classInterface", "svgElementId", "domId", "clear", "key", "classRelation", "log", "invalidTypes", "annotation", "validatedClassName", "member", "theClass", "memberString", "ClassMember", "members", "text", "index", "note", "ids", "classNode", "style", "styleClass", "s", "newStyle", "value", "tooltip", "namespace", "linkStr", "target", "config", "utils_default", "functionName", "functionArgs", "_domId", "argList", "i", "item", "elemId", "elem", "fun", "str", "dir", "stack", "prefix", "qualifiedId", "parts", "parentId", "explicit", "childId", "parent", "child", "existing", "ancestorIds", "currentId", "isLeaf", "nodeLabel", "classNames", "noteNames", "noteName", "noteNode", "styles", "thisClass", "marker", "current", "ns", "nodes", "edges", "hierarchical", "node", "noteParentId", "noteClassId", "edge", "_interface", "interfaceNode", "cnt", "getEdgeId", "getStyles", "__name", "options", "getIconStyles", "styles_default", "getDir", "__name", "parsedItem", "defaultDir", "dir", "parsedItemDoc", "getClasses", "text", "diagramObj", "draw", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "render", "padding", "utils_default", "setupViewPortForSVG", "classRenderer_v3_unified_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-RKZBBQEN.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-RKZBBQEN.mjs new file mode 100644 index 0000000..da70213 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-RKZBBQEN.mjs @@ -0,0 +1 @@ +import{a as o,b as s,c as l,d as n,e as d,g as m,o as c,r as p,t as T}from"./chunk-4R4BOZG6.mjs";import{a as i}from"./chunk-AQ6EADP3.mjs";var u=class extends T{static{i(this,"TreemapTokenBuilder")}static{o(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},v=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,g=class extends p{static{i(this,"TreemapValueConverter")}static{o(this,"TreemapValueConverter")}runCustomConverter(r,e,t){if(r.name==="NUMBER2")return parseFloat(e.replace(/,/g,""));if(r.name==="SEPARATOR")return e.substring(1,e.length-1);if(r.name==="STRING2")return e.substring(1,e.length-1);if(r.name==="INDENTATION")return e.length;if(r.name==="ClassDef"){if(typeof e!="string")return e;let a=v.exec(e);if(a)return{$type:"ClassDefStatement",className:a[1],styleText:a[2]||void 0}}}};function f(r){let e=r.validation.TreemapValidator,t=r.validation.ValidationRegistry;if(t){let a={Treemap:e.checkSingleRoot.bind(e)};t.register(a,e)}}i(f,"registerValidationChecks");o(f,"registerValidationChecks");var h=class{static{i(this,"TreemapValidator")}static{o(this,"TreemapValidator")}checkSingleRoot(r,e){let t;for(let a of r.TreemapRows)a.item&&(t===void 0&&a.indent===void 0?t=0:a.indent===void 0?e("error","Multiple root nodes are not allowed in a treemap.",{node:a,property:"item"}):t!==void 0&&t>=parseInt(a.indent,10)&&e("error","Multiple root nodes are not allowed in a treemap.",{node:a,property:"item"}))}},C={parser:{TokenBuilder:o(()=>new u,"TokenBuilder"),ValueConverter:o(()=>new g,"ValueConverter")},validation:{TreemapValidator:o(()=>new h,"TreemapValidator")}};function V(r=d){let e=n(l(r),m),t=n(s({shared:e}),c,C);return e.ServiceRegistry.register(t),f(t),{shared:e,Treemap:t}}i(V,"createTreemapServices");o(V,"createTreemapServices");export{C as a,V as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-RKZBBQEN.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-RKZBBQEN.mjs.map new file mode 100644 index 0000000..21e78d2 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-RKZBBQEN.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-BR22UD5L.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n EmptyFileSystem,\n MermaidGeneratedSharedModule,\n TreemapGrammarGeneratedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/treemap/tokenBuilder.ts\nvar TreemapTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"TreemapTokenBuilder\");\n }\n constructor() {\n super([\"treemap\"]);\n }\n};\n\n// src/language/treemap/valueConverter.ts\nvar classDefRegex = /classDef\\s+([A-Z_a-z]\\w+)(?:\\s+([^\\n\\r;]*))?;?/;\nvar TreemapValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"TreemapValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name === \"NUMBER2\") {\n return parseFloat(input.replace(/,/g, \"\"));\n } else if (rule.name === \"SEPARATOR\") {\n return input.substring(1, input.length - 1);\n } else if (rule.name === \"STRING2\") {\n return input.substring(1, input.length - 1);\n } else if (rule.name === \"INDENTATION\") {\n return input.length;\n } else if (rule.name === \"ClassDef\") {\n if (typeof input !== \"string\") {\n return input;\n }\n const match = classDefRegex.exec(input);\n if (match) {\n return {\n $type: \"ClassDefStatement\",\n className: match[1],\n styleText: match[2] || void 0\n };\n }\n }\n return void 0;\n }\n};\n\n// src/language/treemap/treemap-validator.ts\nfunction registerValidationChecks(services) {\n const validator = services.validation.TreemapValidator;\n const registry = services.validation.ValidationRegistry;\n if (registry) {\n const checks = {\n Treemap: validator.checkSingleRoot.bind(validator)\n // Remove unused validation for TreemapRow\n };\n registry.register(checks, validator);\n }\n}\n__name(registerValidationChecks, \"registerValidationChecks\");\nvar TreemapValidator = class {\n static {\n __name(this, \"TreemapValidator\");\n }\n /**\n * Validates that a treemap has only one root node.\n * A root node is defined as a node that has no indentation.\n */\n checkSingleRoot(doc, accept) {\n let rootNodeIndentation;\n for (const row of doc.TreemapRows) {\n if (!row.item) {\n continue;\n }\n if (rootNodeIndentation === void 0 && // Check if this is a root node (no indentation)\n row.indent === void 0) {\n rootNodeIndentation = 0;\n } else if (row.indent === void 0) {\n accept(\"error\", \"Multiple root nodes are not allowed in a treemap.\", {\n node: row,\n property: \"item\"\n });\n } else if (rootNodeIndentation !== void 0 && rootNodeIndentation >= parseInt(row.indent, 10)) {\n accept(\"error\", \"Multiple root nodes are not allowed in a treemap.\", {\n node: row,\n property: \"item\"\n });\n }\n }\n }\n};\n\n// src/language/treemap/module.ts\nvar TreemapModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new TreemapTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new TreemapValueConverter(), \"ValueConverter\")\n },\n validation: {\n TreemapValidator: /* @__PURE__ */ __name(() => new TreemapValidator(), \"TreemapValidator\")\n }\n};\nfunction createTreemapServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Treemap = inject(\n createDefaultCoreModule({ shared }),\n TreemapGrammarGeneratedModule,\n TreemapModule\n );\n shared.ServiceRegistry.register(Treemap);\n registerValidationChecks(Treemap);\n return { shared, Treemap };\n}\n__name(createTreemapServices, \"createTreemapServices\");\n\nexport {\n TreemapModule,\n createTreemapServices\n};\n"], + "mappings": "0IAcA,IAAIA,EAAsB,cAAcC,CAA4B,CAdpE,MAcoE,CAAAC,EAAA,4BAClE,MAAO,CACLA,EAAO,KAAM,qBAAqB,CACpC,CACA,aAAc,CACZ,MAAM,CAAC,SAAS,CAAC,CACnB,CACF,EAGIC,EAAgB,iDAChBC,EAAwB,cAAcC,CAA8B,CAzBxE,MAyBwE,CAAAH,EAAA,8BACtE,MAAO,CACLA,EAAO,KAAM,uBAAuB,CACtC,CACA,mBAAmBI,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,UAChB,OAAO,WAAWC,EAAM,QAAQ,KAAM,EAAE,CAAC,EACpC,GAAID,EAAK,OAAS,YACvB,OAAOC,EAAM,UAAU,EAAGA,EAAM,OAAS,CAAC,EACrC,GAAID,EAAK,OAAS,UACvB,OAAOC,EAAM,UAAU,EAAGA,EAAM,OAAS,CAAC,EACrC,GAAID,EAAK,OAAS,cACvB,OAAOC,EAAM,OACR,GAAID,EAAK,OAAS,WAAY,CACnC,GAAI,OAAOC,GAAU,SACnB,OAAOA,EAET,IAAME,EAAQN,EAAc,KAAKI,CAAK,EACtC,GAAIE,EACF,MAAO,CACL,MAAO,oBACP,UAAWA,EAAM,CAAC,EAClB,UAAWA,EAAM,CAAC,GAAK,MACzB,CAEJ,CAEF,CACF,EAGA,SAASC,EAAyBC,EAAU,CAC1C,IAAMC,EAAYD,EAAS,WAAW,iBAChCE,EAAWF,EAAS,WAAW,mBACrC,GAAIE,EAAU,CACZ,IAAMC,EAAS,CACb,QAASF,EAAU,gBAAgB,KAAKA,CAAS,CAEnD,EACAC,EAAS,SAASC,EAAQF,CAAS,CACrC,CACF,CAVSV,EAAAQ,EAAA,4BAWTR,EAAOQ,EAA0B,0BAA0B,EAC3D,IAAIK,EAAmB,KAAM,CApE7B,MAoE6B,CAAAb,EAAA,yBAC3B,MAAO,CACLA,EAAO,KAAM,kBAAkB,CACjC,CAKA,gBAAgBc,EAAKC,EAAQ,CAC3B,IAAIC,EACJ,QAAWC,KAAOH,EAAI,YACfG,EAAI,OAGLD,IAAwB,QAC5BC,EAAI,SAAW,OACbD,EAAsB,EACbC,EAAI,SAAW,OACxBF,EAAO,QAAS,oDAAqD,CACnE,KAAME,EACN,SAAU,MACZ,CAAC,EACQD,IAAwB,QAAUA,GAAuB,SAASC,EAAI,OAAQ,EAAE,GACzFF,EAAO,QAAS,oDAAqD,CACnE,KAAME,EACN,SAAU,MACZ,CAAC,EAGP,CACF,EAGIC,EAAgB,CAClB,OAAQ,CACN,aAA8BlB,EAAO,IAAM,IAAIF,EAAuB,cAAc,EACpF,eAAgCE,EAAO,IAAM,IAAIE,EAAyB,gBAAgB,CAC5F,EACA,WAAY,CACV,iBAAkCF,EAAO,IAAM,IAAIa,EAAoB,kBAAkB,CAC3F,CACF,EACA,SAASM,EAAsBC,EAAUC,EAAiB,CACxD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAUH,EACdI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAO,EACvClB,EAAyBkB,CAAO,EACzB,CAAE,OAAAJ,EAAQ,QAAAI,CAAQ,CAC3B,CAbS1B,EAAAmB,EAAA,yBAcTnB,EAAOmB,EAAuB,uBAAuB", + "names": ["TreemapTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "classDefRegex", "TreemapValueConverter", "AbstractMermaidValueConverter", "rule", "input", "_cstNode", "match", "registerValidationChecks", "services", "validator", "registry", "checks", "TreemapValidator", "doc", "accept", "rootNodeIndentation", "row", "TreemapModule", "createTreemapServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Treemap", "createDefaultCoreModule", "TreemapGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-RLI5ZMPA.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-RLI5ZMPA.mjs new file mode 100644 index 0000000..94a4567 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-RLI5ZMPA.mjs @@ -0,0 +1 @@ +import{a as r,b as l,c,d,e as v,g as u,i as E,s as m,t as S}from"./chunk-4R4BOZG6.mjs";import{a as i}from"./chunk-AQ6EADP3.mjs";var k=class extends S{static{i(this,"EventModelingTokenBuilder")}static{r(this,"EventModelingTokenBuilder")}constructor(){super(["eventmodeling"])}},y=new Set(["cmd","command"]),h=new Set(["evt","event"]),s=new Set(["rmo","readmodel"]),M=new Set(["pcr","processor"]),T=new Set(["ui"]);function g(e){let t=e.validation.EventModelingValidator,o=e.validation.ValidationRegistry;if(o){let n={EmTimeFrame:t.checkSourceFrameTypes.bind(t),EmResetFrame:t.checkSourceFrameTypes.bind(t)};o.register(n,t)}}i(g,"registerValidationChecks");r(g,"registerValidationChecks");var C=class{static{i(this,"EventModelingValidator")}static{r(this,"EventModelingValidator")}checkSourceFrameTypes(e,t){e.sourceFrames.length!==0&&(y.has(e.modelEntityType)?this.validateSources(e,new Set([...T,...M]),"command","ui or processor",t):h.has(e.modelEntityType)?this.validateSources(e,y,"event","command",t):s.has(e.modelEntityType)?this.validateSources(e,h,"read model","event",t):M.has(e.modelEntityType)?this.validateSources(e,s,"processor","read model",t):T.has(e.modelEntityType)&&this.validateSources(e,s,"ui","read model",t))}validateSources(e,t,o,n,p){for(let V of e.sourceFrames){let a=V.ref;a!==void 0&&!t.has(a.modelEntityType)&&p("error",`A ${o} can only receive input from a ${n}, not from '${a.modelEntityType}'.`,{node:e,property:"sourceFrames"})}}},w={parser:{TokenBuilder:r(()=>new k,"TokenBuilder"),ValueConverter:r(()=>new m,"ValueConverter")},validation:{EventModelingValidator:r(()=>new C,"EventModelingValidator")}};function F(e=v){let t=d(c(e),u),o=d(l({shared:t}),E,w);return t.ServiceRegistry.register(o),g(o),{shared:t,EventModel:o}}i(F,"createEventModelingServices");r(F,"createEventModelingServices");export{w as a,F as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-RLI5ZMPA.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-RLI5ZMPA.mjs.map new file mode 100644 index 0000000..94a56f7 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-RLI5ZMPA.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-N66VUXT2.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n EmptyFileSystem,\n EventModelingGeneratedModule,\n MermaidGeneratedSharedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/eventmodeling/tokenBuilder.ts\nvar EventModelingTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"EventModelingTokenBuilder\");\n }\n constructor() {\n super([\"eventmodeling\"]);\n }\n};\n\n// src/language/eventmodeling/event-modeling-validator.ts\nvar COMMAND_TYPES = /* @__PURE__ */ new Set([\"cmd\", \"command\"]);\nvar EVENT_TYPES = /* @__PURE__ */ new Set([\"evt\", \"event\"]);\nvar READMODEL_TYPES = /* @__PURE__ */ new Set([\"rmo\", \"readmodel\"]);\nvar PROCESSOR_TYPES = /* @__PURE__ */ new Set([\"pcr\", \"processor\"]);\nvar UI_TYPES = /* @__PURE__ */ new Set([\"ui\"]);\nfunction registerValidationChecks(services) {\n const validator = services.validation.EventModelingValidator;\n const registry = services.validation.ValidationRegistry;\n if (registry) {\n const checks = {\n EmTimeFrame: validator.checkSourceFrameTypes.bind(validator),\n EmResetFrame: validator.checkSourceFrameTypes.bind(validator)\n };\n registry.register(checks, validator);\n }\n}\n__name(registerValidationChecks, \"registerValidationChecks\");\nvar EventModelingValidator = class {\n static {\n __name(this, \"EventModelingValidator\");\n }\n checkSourceFrameTypes(frame, accept) {\n if (frame.sourceFrames.length === 0) {\n return;\n }\n if (COMMAND_TYPES.has(frame.modelEntityType)) {\n this.validateSources(\n frame,\n /* @__PURE__ */ new Set([...UI_TYPES, ...PROCESSOR_TYPES]),\n \"command\",\n \"ui or processor\",\n accept\n );\n } else if (EVENT_TYPES.has(frame.modelEntityType)) {\n this.validateSources(frame, COMMAND_TYPES, \"event\", \"command\", accept);\n } else if (READMODEL_TYPES.has(frame.modelEntityType)) {\n this.validateSources(frame, EVENT_TYPES, \"read model\", \"event\", accept);\n } else if (PROCESSOR_TYPES.has(frame.modelEntityType)) {\n this.validateSources(frame, READMODEL_TYPES, \"processor\", \"read model\", accept);\n } else if (UI_TYPES.has(frame.modelEntityType)) {\n this.validateSources(frame, READMODEL_TYPES, \"ui\", \"read model\", accept);\n }\n }\n validateSources(frame, allowedSourceTypes, targetLabel, expectedSourceLabel, accept) {\n for (const sourceRef of frame.sourceFrames) {\n const source = sourceRef.ref;\n if (source !== void 0 && !allowedSourceTypes.has(source.modelEntityType)) {\n accept(\n \"error\",\n `A ${targetLabel} can only receive input from a ${expectedSourceLabel}, not from '${source.modelEntityType}'.`,\n { node: frame, property: \"sourceFrames\" }\n );\n }\n }\n }\n};\n\n// src/language/eventmodeling/module.ts\nvar EventModelingModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new EventModelingTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n },\n validation: {\n EventModelingValidator: /* @__PURE__ */ __name(() => new EventModelingValidator(), \"EventModelingValidator\")\n }\n};\nfunction createEventModelingServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const EventModel = inject(\n createDefaultCoreModule({ shared }),\n EventModelingGeneratedModule,\n EventModelingModule\n );\n shared.ServiceRegistry.register(EventModel);\n registerValidationChecks(EventModel);\n return { shared, EventModel };\n}\n__name(createEventModelingServices, \"createEventModelingServices\");\n\nexport {\n EventModelingModule,\n createEventModelingServices\n};\n"], + "mappings": "gIAcA,IAAIA,EAA4B,cAAcC,CAA4B,CAd1E,MAc0E,CAAAC,EAAA,kCACxE,MAAO,CACLA,EAAO,KAAM,2BAA2B,CAC1C,CACA,aAAc,CACZ,MAAM,CAAC,eAAe,CAAC,CACzB,CACF,EAGIC,EAAgC,IAAI,IAAI,CAAC,MAAO,SAAS,CAAC,EAC1DC,EAA8B,IAAI,IAAI,CAAC,MAAO,OAAO,CAAC,EACtDC,EAAkC,IAAI,IAAI,CAAC,MAAO,WAAW,CAAC,EAC9DC,EAAkC,IAAI,IAAI,CAAC,MAAO,WAAW,CAAC,EAC9DC,EAA2B,IAAI,IAAI,CAAC,IAAI,CAAC,EAC7C,SAASC,EAAyBC,EAAU,CAC1C,IAAMC,EAAYD,EAAS,WAAW,uBAChCE,EAAWF,EAAS,WAAW,mBACrC,GAAIE,EAAU,CACZ,IAAMC,EAAS,CACb,YAAaF,EAAU,sBAAsB,KAAKA,CAAS,EAC3D,aAAcA,EAAU,sBAAsB,KAAKA,CAAS,CAC9D,EACAC,EAAS,SAASC,EAAQF,CAAS,CACrC,CACF,CAVSR,EAAAM,EAAA,4BAWTN,EAAOM,EAA0B,0BAA0B,EAC3D,IAAIK,EAAyB,KAAM,CAzCnC,MAyCmC,CAAAX,EAAA,+BACjC,MAAO,CACLA,EAAO,KAAM,wBAAwB,CACvC,CACA,sBAAsBY,EAAOC,EAAQ,CAC/BD,EAAM,aAAa,SAAW,IAG9BX,EAAc,IAAIW,EAAM,eAAe,EACzC,KAAK,gBACHA,EACgB,IAAI,IAAI,CAAC,GAAGP,EAAU,GAAGD,CAAe,CAAC,EACzD,UACA,kBACAS,CACF,EACSX,EAAY,IAAIU,EAAM,eAAe,EAC9C,KAAK,gBAAgBA,EAAOX,EAAe,QAAS,UAAWY,CAAM,EAC5DV,EAAgB,IAAIS,EAAM,eAAe,EAClD,KAAK,gBAAgBA,EAAOV,EAAa,aAAc,QAASW,CAAM,EAC7DT,EAAgB,IAAIQ,EAAM,eAAe,EAClD,KAAK,gBAAgBA,EAAOT,EAAiB,YAAa,aAAcU,CAAM,EACrER,EAAS,IAAIO,EAAM,eAAe,GAC3C,KAAK,gBAAgBA,EAAOT,EAAiB,KAAM,aAAcU,CAAM,EAE3E,CACA,gBAAgBD,EAAOE,EAAoBC,EAAaC,EAAqBH,EAAQ,CACnF,QAAWI,KAAaL,EAAM,aAAc,CAC1C,IAAMM,EAASD,EAAU,IACrBC,IAAW,QAAU,CAACJ,EAAmB,IAAII,EAAO,eAAe,GACrEL,EACE,QACA,KAAKE,CAAW,kCAAkCC,CAAmB,eAAeE,EAAO,eAAe,KAC1G,CAAE,KAAMN,EAAO,SAAU,cAAe,CAC1C,CAEJ,CACF,CACF,EAGIO,EAAsB,CACxB,OAAQ,CACN,aAA8BnB,EAAO,IAAM,IAAIF,EAA6B,cAAc,EAC1F,eAAgCE,EAAO,IAAM,IAAIoB,EAAwB,gBAAgB,CAC3F,EACA,WAAY,CACV,uBAAwCpB,EAAO,IAAM,IAAIW,EAA0B,wBAAwB,CAC7G,CACF,EACA,SAASU,EAA4BC,EAAUC,EAAiB,CAC9D,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAaH,EACjBI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAU,EAC1CtB,EAAyBsB,CAAU,EAC5B,CAAE,OAAAJ,EAAQ,WAAAI,CAAW,CAC9B,CAbS5B,EAAAqB,EAAA,+BAcTrB,EAAOqB,EAA6B,6BAA6B", + "names": ["EventModelingTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "COMMAND_TYPES", "EVENT_TYPES", "READMODEL_TYPES", "PROCESSOR_TYPES", "UI_TYPES", "registerValidationChecks", "services", "validator", "registry", "checks", "EventModelingValidator", "frame", "accept", "allowedSourceTypes", "targetLabel", "expectedSourceLabel", "sourceRef", "source", "EventModelingModule", "CommonValueConverter", "createEventModelingServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "EventModel", "createDefaultCoreModule", "EventModelingGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-SK62O5VA.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-SK62O5VA.mjs deleted file mode 100644 index f2628ed..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-SK62O5VA.mjs +++ /dev/null @@ -1 +0,0 @@ -import{b as g,c as y,d,e as u}from"./chunk-5YHUCXBM.mjs";import{a as l,e as p,g as f}from"./chunk-BDKIFH7H.mjs";import{c as m}from"./chunk-Q3CC2MQB.mjs";import{F as s,s as a}from"./chunk-3UWU4A3N.mjs";import{b as i}from"./chunk-MGPAVIPZ.mjs";import{a as t}from"./chunk-VELTKBKT.mjs";var L={common:s,getConfig:a,insertCluster:p,insertEdge:d,insertEdgeLabel:g,insertMarkers:u,insertNode:f,interpolateToCurve:m,labelHelper:l,log:i,positionEdgeLabel:y};var o={},c=t(r=>{for(let e of r)o[e.name]=e},"registerLayoutLoaders"),h=t(()=>{c([{name:"dagre",loader:t(async()=>await import("./dagre-GNUAUHNH.mjs"),"loader")},{name:"cose-bilkent",loader:t(async()=>await import("./cose-bilkent-PNC4W37J.mjs"),"loader")}])},"registerDefaultLayoutLoaders");h();var S=t(async(r,e)=>{if(!(r.layoutAlgorithm in o))throw new Error(`Unknown layout algorithm: ${r.layoutAlgorithm}`);let n=o[r.layoutAlgorithm];return(await n.loader()).render(r,e,L,{algorithm:n.algorithm})},"render"),V=t((r="",{fallback:e="dagre"}={})=>{if(r in o)return r;if(e in o)return i.warn(`Layout algorithm ${r} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${r} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm");export{c as a,S as b,V as c}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-SK62O5VA.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-SK62O5VA.mjs.map deleted file mode 100644 index d097eff..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-SK62O5VA.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/internals.ts", "../../../src/rendering-util/render.ts"], - "sourcesContent": ["import { getConfig } from './config.js';\nimport common from './diagrams/common/common.js';\nimport { log } from './logger.js';\nimport { insertCluster } from './rendering-util/rendering-elements/clusters.js';\nimport {\n insertEdge,\n insertEdgeLabel,\n positionEdgeLabel,\n} from './rendering-util/rendering-elements/edges.js';\nimport insertMarkers from './rendering-util/rendering-elements/markers.js';\nimport { insertNode } from './rendering-util/rendering-elements/nodes.js';\nimport { labelHelper } from './rendering-util/rendering-elements/shapes/util.js';\nimport { interpolateToCurve } from './utils.js';\n\n/**\n * Internal helpers for mermaid\n * @deprecated - This should not be used by external packages, as the definitions will change without notice.\n */\nexport const internalHelpers = {\n common,\n getConfig,\n insertCluster,\n insertEdge,\n insertEdgeLabel,\n insertMarkers,\n insertNode,\n interpolateToCurve,\n labelHelper,\n log,\n positionEdgeLabel,\n};\n\nexport type InternalHelpers = typeof internalHelpers;\n", "import type { SVG } from '../diagram-api/types.js';\nimport type { InternalHelpers } from '../internals.js';\nimport { internalHelpers } from '../internals.js';\nimport { log } from '../logger.js';\nimport type { LayoutData } from './types.js';\n\n// console.log('MUST be removed, this only for keeping dev server working');\n// import tmp from './layout-algorithms/dagre/index.js';\n\nexport interface RenderOptions {\n algorithm?: string;\n}\n\nexport interface LayoutAlgorithm {\n render(\n layoutData: LayoutData,\n svg: SVG,\n helpers: InternalHelpers,\n options?: RenderOptions\n ): Promise;\n}\n\nexport type LayoutLoader = () => Promise;\nexport interface LayoutLoaderDefinition {\n name: string;\n loader: LayoutLoader;\n algorithm?: string;\n}\n\nconst layoutAlgorithms: Record = {};\n\nexport const registerLayoutLoaders = (loaders: LayoutLoaderDefinition[]) => {\n for (const loader of loaders) {\n layoutAlgorithms[loader.name] = loader;\n }\n};\n\n// TODO: Should we load dagre without lazy loading?\nconst registerDefaultLayoutLoaders = () => {\n registerLayoutLoaders([\n {\n name: 'dagre',\n loader: async () => await import('./layout-algorithms/dagre/index.js'),\n },\n ...(injected.includeLargeFeatures\n ? [\n {\n name: 'cose-bilkent',\n loader: async () => await import('./layout-algorithms/cose-bilkent/index.js'),\n },\n ]\n : []),\n ]);\n};\n\nregisterDefaultLayoutLoaders();\n\nexport const render = async (data4Layout: LayoutData, svg: SVG) => {\n if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) {\n throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`);\n }\n\n const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm];\n const layoutRenderer = await layoutDefinition.loader();\n return layoutRenderer.render(data4Layout, svg, internalHelpers, {\n algorithm: layoutDefinition.algorithm,\n });\n};\n\n/**\n * Get the registered layout algorithm. If the algorithm is not registered, use the fallback algorithm.\n */\nexport const getRegisteredLayoutAlgorithm = (algorithm = '', { fallback = 'dagre' } = {}) => {\n if (algorithm in layoutAlgorithms) {\n return algorithm;\n }\n if (fallback in layoutAlgorithms) {\n log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`);\n return fallback;\n }\n throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`);\n};\n"], - "mappings": "2RAkBO,IAAMA,EAAkB,CAC7B,OAAAC,EACA,UAAAC,EACA,cAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,cAAAC,EACA,WAAAC,EACA,mBAAAC,EACA,YAAAC,EACA,IAAAC,EACA,kBAAAC,CACF,ECDA,IAAMC,EAA2D,CAAC,EAErDC,EAAwBC,EAACC,GAAsC,CAC1E,QAAWC,KAAUD,EACnBH,EAAiBI,EAAO,IAAI,EAAIA,CAEpC,EAJqC,yBAO/BC,EAA+BH,EAAA,IAAM,CACzCD,EAAsB,CACpB,CACE,KAAM,QACN,OAAQC,EAAA,SAAY,KAAM,QAAO,sBAAoC,EAA7D,SACV,EAGM,CACE,KAAM,eACN,OAAQA,EAAA,SAAY,KAAM,QAAO,6BAA2C,EAApE,SACV,CAGR,CAAC,CACH,EAfqC,gCAiBrCG,EAA6B,EAEtB,IAAMC,EAASJ,EAAA,MAAOK,EAAyBC,IAAa,CACjE,GAAI,EAAED,EAAY,mBAAmBP,GACnC,MAAM,IAAI,MAAM,6BAA6BO,EAAY,eAAe,EAAE,EAG5E,IAAME,EAAmBT,EAAiBO,EAAY,eAAe,EAErE,OADuB,MAAME,EAAiB,OAAO,GAC/B,OAAOF,EAAaC,EAAKE,EAAiB,CAC9D,UAAWD,EAAiB,SAC9B,CAAC,CACH,EAVsB,UAeTE,EAA+BT,EAAA,CAACU,EAAY,GAAI,CAAE,SAAAC,EAAW,OAAQ,EAAI,CAAC,IAAM,CAC3F,GAAID,KAAaZ,EACf,OAAOY,EAET,GAAIC,KAAYb,EACd,OAAAc,EAAI,KAAK,oBAAoBF,CAAS,6BAA6BC,CAAQ,eAAe,EACnFA,EAET,MAAM,IAAI,MAAM,0BAA0BD,CAAS,QAAQC,CAAQ,sBAAsB,CAC3F,EAT4C", - "names": ["internalHelpers", "common_default", "getConfig", "insertCluster", "insertEdge", "insertEdgeLabel", "markers_default", "insertNode", "interpolateToCurve", "labelHelper", "log", "positionEdgeLabel", "layoutAlgorithms", "registerLayoutLoaders", "__name", "loaders", "loader", "registerDefaultLayoutLoaders", "render", "data4Layout", "svg", "layoutDefinition", "internalHelpers", "getRegisteredLayoutAlgorithm", "algorithm", "fallback", "log"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-SYGLAQYM.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-SYGLAQYM.mjs deleted file mode 100644 index d5a0fb7..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-SYGLAQYM.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as u,b as n,c as s,d as o,e as A,f as t,g as l,h as d,o as h,q as m}from"./chunk-GAX3EE6F.mjs";import{a}from"./chunk-VELTKBKT.mjs";var C=class extends m{static{a(this,"ArchitectureTokenBuilder")}static{t(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},v=class extends h{static{a(this,"ArchitectureValueConverter")}static{t(this,"ArchitectureValueConverter")}runCustomConverter(c,r,i){if(c.name==="ARCH_ICON")return r.replace(/[()]/g,"").trim();if(c.name==="ARCH_TEXT_ICON")return r.replace(/["()]/g,"");if(c.name==="ARCH_TITLE"){let e=r.replace(/^\[|]$/g,"").trim();return(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1),e=e.replace(/\\"/g,'"').replace(/\\'/g,"'")),e.trim()}}},f={parser:{TokenBuilder:t(()=>new C,"TokenBuilder"),ValueConverter:t(()=>new v,"ValueConverter")}};function p(c=o){let r=s(n(c),l),i=s(u({shared:r}),d,f);return r.ServiceRegistry.register(i),{shared:r,Architecture:i}}a(p,"createArchitectureServices");t(p,"createArchitectureServices");export{f as a,p as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-SYGLAQYM.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-SYGLAQYM.mjs.map deleted file mode 100644 index 0d693a4..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-SYGLAQYM.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-R5LLSJPH.mjs"], - "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n ArchitectureGrammarGeneratedModule,\n MermaidGeneratedSharedModule,\n __name\n} from \"./chunk-XZSTWKYB.mjs\";\n\n// src/language/architecture/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/architecture/tokenBuilder.ts\nvar ArchitectureTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"ArchitectureTokenBuilder\");\n }\n constructor() {\n super([\"architecture\"]);\n }\n};\n\n// src/language/architecture/valueConverter.ts\nvar ArchitectureValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"ArchitectureValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name === \"ARCH_ICON\") {\n return input.replace(/[()]/g, \"\").trim();\n } else if (rule.name === \"ARCH_TEXT_ICON\") {\n return input.replace(/[\"()]/g, \"\");\n } else if (rule.name === \"ARCH_TITLE\") {\n let result = input.replace(/^\\[|]$/g, \"\").trim();\n if (result.startsWith('\"') && result.endsWith('\"') || result.startsWith(\"'\") && result.endsWith(\"'\")) {\n result = result.slice(1, -1);\n result = result.replace(/\\\\\"/g, '\"').replace(/\\\\'/g, \"'\");\n }\n return result.trim();\n }\n return void 0;\n }\n};\n\n// src/language/architecture/module.ts\nvar ArchitectureModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new ArchitectureTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new ArchitectureValueConverter(), \"ValueConverter\")\n }\n};\nfunction createArchitectureServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Architecture = inject(\n createDefaultCoreModule({ shared }),\n ArchitectureGrammarGeneratedModule,\n ArchitectureModule\n );\n shared.ServiceRegistry.register(Architecture);\n return { shared, Architecture };\n}\n__name(createArchitectureServices, \"createArchitectureServices\");\n\nexport {\n ArchitectureModule,\n createArchitectureServices\n};\n"], - "mappings": "4IAiBA,IAAIA,EAA2B,cAAcC,CAA4B,CAjBzE,MAiByE,CAAAC,EAAA,iCACvE,MAAO,CACLA,EAAO,KAAM,0BAA0B,CACzC,CACA,aAAc,CACZ,MAAM,CAAC,cAAc,CAAC,CACxB,CACF,EAGIC,EAA6B,cAAcC,CAA8B,CA3B7E,MA2B6E,CAAAF,EAAA,mCAC3E,MAAO,CACLA,EAAO,KAAM,4BAA4B,CAC3C,CACA,mBAAmBG,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,YAChB,OAAOC,EAAM,QAAQ,QAAS,EAAE,EAAE,KAAK,EAClC,GAAID,EAAK,OAAS,iBACvB,OAAOC,EAAM,QAAQ,SAAU,EAAE,EAC5B,GAAID,EAAK,OAAS,aAAc,CACrC,IAAIG,EAASF,EAAM,QAAQ,UAAW,EAAE,EAAE,KAAK,EAC/C,OAAIE,EAAO,WAAW,GAAG,GAAKA,EAAO,SAAS,GAAG,GAAKA,EAAO,WAAW,GAAG,GAAKA,EAAO,SAAS,GAAG,KACjGA,EAASA,EAAO,MAAM,EAAG,EAAE,EAC3BA,EAASA,EAAO,QAAQ,OAAQ,GAAG,EAAE,QAAQ,OAAQ,GAAG,GAEnDA,EAAO,KAAK,CACrB,CAEF,CACF,EAGIC,EAAqB,CACvB,OAAQ,CACN,aAA8BP,EAAO,IAAM,IAAIF,EAA4B,cAAc,EACzF,eAAgCE,EAAO,IAAM,IAAIC,EAA8B,gBAAgB,CACjG,CACF,EACA,SAASO,EAA2BC,EAAUC,EAAiB,CAC7D,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAeH,EACnBI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAY,EACrC,CAAE,OAAAJ,EAAQ,aAAAI,CAAa,CAChC,CAZSf,EAAAQ,EAAA,8BAaTR,EAAOQ,EAA4B,4BAA4B", - "names": ["ArchitectureTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "ArchitectureValueConverter", "AbstractMermaidValueConverter", "rule", "input", "_cstNode", "result", "ArchitectureModule", "createArchitectureServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Architecture", "createDefaultCoreModule", "ArchitectureGrammarGeneratedModule"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-D2KP3OBD.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-T2UQINTJ.mjs similarity index 93% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-D2KP3OBD.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-T2UQINTJ.mjs index d84147e..6cc5216 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-D2KP3OBD.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-T2UQINTJ.mjs @@ -1 +1 @@ -import{Y as c}from"./chunk-3UWU4A3N.mjs";import{a as i}from"./chunk-VELTKBKT.mjs";var u=i(t=>{let{handDrawnSeed:s}=c();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:s}},"solidStateFill"),p=i(t=>{let s=h([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:s,stylesArray:[...s]}},"compileStyles"),h=i(t=>{let s=new Map;return t.forEach(o=>{let[n,r]=o.split(":");s.set(n.trim(),r?.trim())}),s},"styles2Map"),g=i(t=>t==="color"||t==="font-size"||t==="font-family"||t==="font-weight"||t==="font-style"||t==="text-decoration"||t==="text-align"||t==="text-transform"||t==="line-height"||t==="letter-spacing"||t==="word-spacing"||t==="text-shadow"||t==="text-overflow"||t==="white-space"||t==="word-wrap"||t==="word-break"||t==="overflow-wrap"||t==="hyphens","isLabelStyle"),m=i(t=>{let{stylesArray:s}=p(t),o=[],n=[],r=[],l=[];return s.forEach(e=>{let a=e[0];g(a)?o.push(e.join(":")+" !important"):(n.push(e.join(":")+" !important"),a.includes("stroke")&&r.push(e.join(":")+" !important"),a==="fill"&&l.push(e.join(":")+" !important"))}),{labelStyles:o.join(";"),nodeStyles:n.join(";"),stylesArray:s,borderStyles:r,backgroundStyles:l}},"styles2String"),S=i((t,s)=>{let{themeVariables:o,handDrawnSeed:n}=c(),{nodeBorder:r,mainBkg:l}=o,{stylesMap:e}=p(t);return Object.assign({roughness:.7,fill:e.get("fill")||l,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:e.get("stroke")||r,seed:n,strokeWidth:e.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:d(e.get("stroke-dasharray"))},s)},"userNodeOverrides"),d=i(t=>{if(!t)return[0,0];let s=t.trim().split(/\s+/).map(Number);if(s.length===1){let r=isNaN(s[0])?0:s[0];return[r,r]}let o=isNaN(s[0])?0:s[0],n=isNaN(s[1])?0:s[1];return[o,n]},"getStrokeDashArray");export{u as a,p as b,g as c,m as d,S as e}; +import{_ as c}from"./chunk-67TQ5CYL.mjs";import{a as i}from"./chunk-AQ6EADP3.mjs";var u=i(t=>{let{handDrawnSeed:s}=c();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:s}},"solidStateFill"),p=i(t=>{let s=h([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:s,stylesArray:[...s]}},"compileStyles"),h=i(t=>{let s=new Map;return t.forEach(o=>{let[n,r]=o.split(":");s.set(n.trim(),r?.trim())}),s},"styles2Map"),g=i(t=>t==="color"||t==="font-size"||t==="font-family"||t==="font-weight"||t==="font-style"||t==="text-decoration"||t==="text-align"||t==="text-transform"||t==="line-height"||t==="letter-spacing"||t==="word-spacing"||t==="text-shadow"||t==="text-overflow"||t==="white-space"||t==="word-wrap"||t==="word-break"||t==="overflow-wrap"||t==="hyphens","isLabelStyle"),m=i(t=>{let{stylesArray:s}=p(t),o=[],n=[],r=[],l=[];return s.forEach(e=>{let a=e[0];g(a)?o.push(e.join(":")+" !important"):(n.push(e.join(":")+" !important"),a.includes("stroke")&&r.push(e.join(":")+" !important"),a==="fill"&&l.push(e.join(":")+" !important"))}),{labelStyles:o.join(";"),nodeStyles:n.join(";"),stylesArray:s,borderStyles:r,backgroundStyles:l}},"styles2String"),S=i((t,s)=>{let{themeVariables:o,handDrawnSeed:n}=c(),{nodeBorder:r,mainBkg:l}=o,{stylesMap:e}=p(t);return Object.assign({roughness:.7,fill:e.get("fill")||l,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:e.get("stroke")||r,seed:n,strokeWidth:e.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:d(e.get("stroke-dasharray"))},s)},"userNodeOverrides"),d=i(t=>{if(!t)return[0,0];let s=t.trim().split(/\s+/).map(Number);if(s.length===1){let r=isNaN(s[0])?0:s[0];return[r,r]}let o=isNaN(s[0])?0:s[0],n=isNaN(s[1])?0:s[1];return[o,n]},"getStrokeDashArray");export{u as a,p as b,g as c,m as d,S as e}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-D2KP3OBD.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-T2UQINTJ.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-D2KP3OBD.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-T2UQINTJ.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-TU3PZOEN.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs similarity index 66% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-TU3PZOEN.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs index bd1c0d5..0a9ebe6 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-TU3PZOEN.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs @@ -1 +1 @@ -import{a as i}from"./chunk-VELTKBKT.mjs";var s=class{constructor(t){this.init=t;this.records=this.init()}static{i(this,"ImperativeState")}reset(){this.records=this.init()}};export{s as a}; +import{a as i}from"./chunk-AQ6EADP3.mjs";var s=class{constructor(t){this.init=t;this.records=this.init()}static{i(this,"ImperativeState")}reset(){this.records=this.init()}};export{s as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-TU3PZOEN.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-TU3PZOEN.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-TFLKLN34.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-TFLKLN34.mjs deleted file mode 100644 index 2b10ac9..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-TFLKLN34.mjs +++ /dev/null @@ -1,189 +0,0 @@ -import{a as lt}from"./chunk-KSICW3F5.mjs";import{h as tt}from"./chunk-W2A4CRWB.mjs";import{a as it}from"./chunk-TBF5ZNIQ.mjs";import{a as nt}from"./chunk-T4EQAHMB.mjs";import{b as rt,c as at}from"./chunk-SK62O5VA.mjs";import{m as ee,p as st}from"./chunk-Q3CC2MQB.mjs";import{B as V,F as L,Q as Xe,R as He,S as qe,T as Je,U as Ze,V as $e,W as et,Y as D,x as Qe,z as We}from"./chunk-3UWU4A3N.mjs";import{b as Z,h as $}from"./chunk-MGPAVIPZ.mjs";import{a as d}from"./chunk-VELTKBKT.mjs";var we=(function(){var s=d(function(O,o,c,p){for(c=c||{},p=O.length;p--;c[O[p]]=o);return c},"o"),i=[1,18],a=[1,19],l=[1,20],u=[1,41],r=[1,42],g=[1,26],b=[1,24],A=[1,25],F=[1,32],N=[1,33],ge=[1,34],m=[1,45],be=[1,35],fe=[1,36],Ae=[1,37],me=[1,38],ke=[1,27],Ce=[1,28],ye=[1,29],Ee=[1,30],Te=[1,31],k=[1,44],C=[1,46],y=[1,43],E=[1,47],De=[1,9],h=[1,8,9],se=[1,58],ie=[1,59],re=[1,60],ae=[1,61],ne=[1,62],Fe=[1,63],Be=[1,64],I=[1,8,9,41],Ve=[1,76],R=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],le=[1,8,9,12,13,18,20,22,39,41,44,50,60,68,69,70,71,72,73,74,79,81,86,100,102,103],ue=[13,60,86,100,102,103],U=[13,60,73,74,86,100,102,103],Pe=[13,60,68,69,70,71,72,86,100,102,103],Ne=[1,101],z=[1,118],Y=[1,114],K=[1,110],j=[1,116],Q=[1,111],W=[1,112],X=[1,113],H=[1,115],q=[1,117],Re=[22,48,60,61,82,86,87,88,89,90],_e=[1,8,9,39,41,44],oe=[1,8,9,22],Ge=[1,147],Ue=[1,8,9,61],x=[1,8,9,22,48,60,61,82,86,87,88,89,90],Se={trace:d(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,emptyBody:47,SPACE:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",48:"SPACE",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[43,2],[43,3],[47,0],[47,2],[47,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:d(function(o,c,p,n,f,e,J){var t=e.length-1;switch(f){case 8:this.$=e[t-1];break;case 9:case 10:case 13:case 15:this.$=e[t];break;case 11:case 14:this.$=e[t-2]+"."+e[t];break;case 12:case 16:this.$=e[t-1]+e[t];break;case 17:case 18:this.$=e[t-1]+"~"+e[t]+"~";break;case 19:n.addRelation(e[t]);break;case 20:e[t-1].title=n.cleanupLabel(e[t]),n.addRelation(e[t-1]);break;case 31:this.$=e[t].trim(),n.setAccTitle(this.$);break;case 32:case 33:this.$=e[t].trim(),n.setAccDescription(this.$);break;case 34:n.addClassesToNamespace(e[t-3],e[t-1][0],e[t-1][1]);break;case 35:n.addClassesToNamespace(e[t-4],e[t-1][0],e[t-1][1]);break;case 36:this.$=e[t],n.addNamespace(e[t]);break;case 37:this.$=[[e[t]],[]];break;case 38:this.$=[[e[t-1]],[]];break;case 39:e[t][0].unshift(e[t-2]),this.$=e[t];break;case 40:this.$=[[],[e[t]]];break;case 41:this.$=[[],[e[t-1]]];break;case 42:e[t][1].unshift(e[t-2]),this.$=e[t];break;case 44:n.setCssClass(e[t-2],e[t]);break;case 45:n.addMembers(e[t-3],e[t-1]);break;case 47:n.setCssClass(e[t-5],e[t-3]),n.addMembers(e[t-5],e[t-1]);break;case 48:this.$=e[t],n.addClass(e[t]);break;case 49:this.$=e[t-1],n.addClass(e[t-1]),n.setClassLabel(e[t-1],e[t]);break;case 53:n.addAnnotation(e[t],e[t-2]);break;case 54:case 67:this.$=[e[t]];break;case 55:e[t].push(e[t-1]),this.$=e[t];break;case 56:break;case 57:n.addMember(e[t-1],n.cleanupLabel(e[t]));break;case 58:break;case 59:break;case 60:this.$={id1:e[t-2],id2:e[t],relation:e[t-1],relationTitle1:"none",relationTitle2:"none"};break;case 61:this.$={id1:e[t-3],id2:e[t],relation:e[t-1],relationTitle1:e[t-2],relationTitle2:"none"};break;case 62:this.$={id1:e[t-3],id2:e[t],relation:e[t-2],relationTitle1:"none",relationTitle2:e[t-1]};break;case 63:this.$={id1:e[t-4],id2:e[t],relation:e[t-2],relationTitle1:e[t-3],relationTitle2:e[t-1]};break;case 64:this.$=n.addNote(e[t],e[t-1]);break;case 65:this.$=n.addNote(e[t]);break;case 66:this.$=e[t-2],n.defineClass(e[t-1],e[t]);break;case 68:this.$=e[t-2].concat([e[t]]);break;case 69:n.setDirection("TB");break;case 70:n.setDirection("BT");break;case 71:n.setDirection("RL");break;case 72:n.setDirection("LR");break;case 73:this.$={type1:e[t-2],type2:e[t],lineType:e[t-1]};break;case 74:this.$={type1:"none",type2:e[t],lineType:e[t-1]};break;case 75:this.$={type1:e[t-1],type2:"none",lineType:e[t]};break;case 76:this.$={type1:"none",type2:"none",lineType:e[t]};break;case 77:this.$=n.relationType.AGGREGATION;break;case 78:this.$=n.relationType.EXTENSION;break;case 79:this.$=n.relationType.COMPOSITION;break;case 80:this.$=n.relationType.DEPENDENCY;break;case 81:this.$=n.relationType.LOLLIPOP;break;case 82:this.$=n.lineType.LINE;break;case 83:this.$=n.lineType.DOTTED_LINE;break;case 84:case 90:this.$=e[t-2],n.setClickEvent(e[t-1],e[t]);break;case 85:case 91:this.$=e[t-3],n.setClickEvent(e[t-2],e[t-1]),n.setTooltip(e[t-2],e[t]);break;case 86:this.$=e[t-2],n.setLink(e[t-1],e[t]);break;case 87:this.$=e[t-3],n.setLink(e[t-2],e[t-1],e[t]);break;case 88:this.$=e[t-3],n.setLink(e[t-2],e[t-1]),n.setTooltip(e[t-2],e[t]);break;case 89:this.$=e[t-4],n.setLink(e[t-3],e[t-2],e[t]),n.setTooltip(e[t-3],e[t-1]);break;case 92:this.$=e[t-3],n.setClickEvent(e[t-2],e[t-1],e[t]);break;case 93:this.$=e[t-4],n.setClickEvent(e[t-3],e[t-2],e[t-1]),n.setTooltip(e[t-3],e[t]);break;case 94:this.$=e[t-3],n.setLink(e[t-2],e[t]);break;case 95:this.$=e[t-4],n.setLink(e[t-3],e[t-1],e[t]);break;case 96:this.$=e[t-4],n.setLink(e[t-3],e[t-1]),n.setTooltip(e[t-3],e[t]);break;case 97:this.$=e[t-5],n.setLink(e[t-4],e[t-2],e[t]),n.setTooltip(e[t-4],e[t-1]);break;case 98:this.$=e[t-2],n.setCssStyle(e[t-1],e[t]);break;case 99:n.setCssClass(e[t-1],e[t]);break;case 100:this.$=[e[t]];break;case 101:e[t-2].push(e[t]),this.$=e[t-2];break;case 103:this.$=e[t-1]+e[t];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:i,35:a,37:l,38:22,42:u,43:23,46:r,49:g,51:b,52:A,54:F,56:N,57:ge,60:m,62:be,63:fe,64:Ae,65:me,75:ke,76:Ce,78:ye,82:Ee,83:Te,86:k,100:C,102:y,103:E},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},s(De,[2,5],{8:[1,48]}),{8:[1,49]},s(h,[2,19],{22:[1,50]}),s(h,[2,21]),s(h,[2,22]),s(h,[2,23]),s(h,[2,24]),s(h,[2,25]),s(h,[2,26]),s(h,[2,27]),s(h,[2,28]),s(h,[2,29]),s(h,[2,30]),{34:[1,51]},{36:[1,52]},s(h,[2,33]),s(h,[2,56],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:se,69:ie,70:re,71:ae,72:ne,73:Fe,74:Be}),{39:[1,65]},s(I,[2,43],{39:[1,67],44:[1,66]}),s(h,[2,58]),s(h,[2,59]),{16:68,60:m,86:k,100:C,102:y},{16:39,17:40,19:69,60:m,86:k,100:C,102:y,103:E},{16:39,17:40,19:70,60:m,86:k,100:C,102:y,103:E},{16:39,17:40,19:71,60:m,86:k,100:C,102:y,103:E},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:m,86:k,100:C,102:y,103:E},{13:Ve,55:75},{58:77,60:[1,78]},s(h,[2,69]),s(h,[2,70]),s(h,[2,71]),s(h,[2,72]),s(R,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:m,86:k,100:C,102:y,103:E}),s(R,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:m,86:k,100:C,102:y,103:E},{16:39,17:40,19:86,60:m,86:k,100:C,102:y,103:E},s(le,[2,126]),s(le,[2,127]),s(le,[2,128]),s(le,[2,129]),s([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,130]),s(De,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:87,33:i,35:a,37:l,42:u,46:r,49:g,51:b,52:A,54:F,56:N,57:ge,60:m,62:be,63:fe,64:Ae,65:me,75:ke,76:Ce,78:ye,82:Ee,83:Te,86:k,100:C,102:y,103:E}),{5:88,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:i,35:a,37:l,38:22,42:u,43:23,46:r,49:g,51:b,52:A,54:F,56:N,57:ge,60:m,62:be,63:fe,64:Ae,65:me,75:ke,76:Ce,78:ye,82:Ee,83:Te,86:k,100:C,102:y,103:E},s(h,[2,20]),s(h,[2,31]),s(h,[2,32]),{13:[1,90],16:39,17:40,19:89,60:m,86:k,100:C,102:y,103:E},{53:91,66:56,67:57,68:se,69:ie,70:re,71:ae,72:ne,73:Fe,74:Be},s(h,[2,57]),{67:92,73:Fe,74:Be},s(ue,[2,76],{66:93,68:se,69:ie,70:re,71:ae,72:ne}),s(U,[2,77]),s(U,[2,78]),s(U,[2,79]),s(U,[2,80]),s(U,[2,81]),s(Pe,[2,82]),s(Pe,[2,83]),{8:[1,95],24:96,30:97,40:94,43:23,46:r,54:F,56:N},{16:98,60:m,86:k,100:C,102:y},{41:[1,100],45:99,51:Ne},{50:[1,102]},{13:[1,103]},{13:[1,104]},{79:[1,105],81:[1,106]},{22:z,48:Y,59:107,60:K,82:j,84:108,85:109,86:Q,87:W,88:X,89:H,90:q},{60:[1,119]},{13:Ve,55:120},s(I,[2,65]),s(I,[2,131]),{22:z,48:Y,59:121,60:K,61:[1,122],82:j,84:108,85:109,86:Q,87:W,88:X,89:H,90:q},s(Re,[2,67]),{16:39,17:40,19:123,60:m,86:k,100:C,102:y,103:E},s(R,[2,16]),s(R,[2,17]),s(R,[2,18]),{39:[2,36]},{15:125,16:84,17:85,18:[1,124],39:[2,9],60:m,86:k,100:C,102:y,103:E},{39:[2,10]},s(_e,[2,48],{11:126,12:[1,127]}),s(De,[2,7]),{9:[1,128]},s(oe,[2,60]),{16:39,17:40,19:129,60:m,86:k,100:C,102:y,103:E},{13:[1,131],16:39,17:40,19:130,60:m,86:k,100:C,102:y,103:E},s(ue,[2,75],{66:132,68:se,69:ie,70:re,71:ae,72:ne}),s(ue,[2,74]),{41:[1,133]},{24:96,30:97,40:134,43:23,46:r,54:F,56:N},{8:[1,135],41:[2,37]},{8:[1,136],41:[2,40]},s(I,[2,44],{39:[1,137]}),{41:[1,138]},s(I,[2,46]),{41:[2,54],45:139,51:Ne},{16:39,17:40,19:140,60:m,86:k,100:C,102:y,103:E},s(h,[2,84],{13:[1,141]}),s(h,[2,86],{13:[1,143],77:[1,142]}),s(h,[2,90],{13:[1,144],80:[1,145]}),{13:[1,146]},s(h,[2,98],{61:Ge}),s(Ue,[2,100],{85:148,22:z,48:Y,60:K,82:j,86:Q,87:W,88:X,89:H,90:q}),s(x,[2,102]),s(x,[2,104]),s(x,[2,105]),s(x,[2,106]),s(x,[2,107]),s(x,[2,108]),s(x,[2,109]),s(x,[2,110]),s(x,[2,111]),s(x,[2,112]),s(h,[2,99]),s(I,[2,64]),s(h,[2,66],{61:Ge}),{60:[1,149]},s(R,[2,14]),{15:150,16:84,17:85,60:m,86:k,100:C,102:y,103:E},{39:[2,12]},s(_e,[2,49]),{13:[1,151]},{1:[2,4]},s(oe,[2,62]),s(oe,[2,61]),{16:39,17:40,19:152,60:m,86:k,100:C,102:y,103:E},s(ue,[2,73]),s(h,[2,34]),{41:[1,153]},{24:96,30:97,40:154,41:[2,38],43:23,46:r,54:F,56:N},{24:96,30:97,40:155,41:[2,41],43:23,46:r,54:F,56:N},{45:156,51:Ne},s(I,[2,45]),{41:[2,55]},s(h,[2,53]),s(h,[2,85]),s(h,[2,87]),s(h,[2,88],{77:[1,157]}),s(h,[2,91]),s(h,[2,92],{13:[1,158]}),s(h,[2,94],{13:[1,160],77:[1,159]}),{22:z,48:Y,60:K,82:j,84:161,85:109,86:Q,87:W,88:X,89:H,90:q},s(x,[2,103]),s(Re,[2,68]),{39:[2,11]},{14:[1,162]},s(oe,[2,63]),s(h,[2,35]),{41:[2,39]},{41:[2,42]},{41:[1,163]},s(h,[2,89]),s(h,[2,93]),s(h,[2,95]),s(h,[2,96],{77:[1,164]}),s(Ue,[2,101],{85:148,22:z,48:Y,60:K,82:j,86:Q,87:W,88:X,89:H,90:q}),s(_e,[2,8]),s(I,[2,47]),s(h,[2,97])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,36],85:[2,10],125:[2,12],128:[2,4],139:[2,55],150:[2,11],154:[2,39],155:[2,42]},parseError:d(function(o,c){if(c.recoverable)this.trace(o);else{var p=new Error(o);throw p.hash=c,p}},"parseError"),parse:d(function(o){var c=this,p=[0],n=[],f=[null],e=[],J=this.table,t="",ce=0,ze=0,Ye=0,pt=2,Ke=1,dt=e.slice.call(arguments,1),T=Object.create(this.lexer),M={yy:{}};for(var Le in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Le)&&(M.yy[Le]=this.yy[Le]);T.setInput(o,M.yy),M.yy.lexer=T,M.yy.parser=this,typeof T.yylloc>"u"&&(T.yylloc={});var ve=T.yylloc;e.push(ve);var gt=T.options&&T.options.ranges;typeof M.yy.parseError=="function"?this.parseError=M.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ct(_){p.length=p.length-2*_,f.length=f.length-_,e.length=e.length-_}d(Ct,"popStack");function bt(){var _;return _=n.pop()||T.lex()||Ke,typeof _!="number"&&(_ instanceof Array&&(n=_,_=n.pop()),_=c.symbols_[_]||_),_}d(bt,"lex");for(var B,Ie,w,S,yt,Oe,G={},he,v,je,pe;;){if(w=p[p.length-1],this.defaultActions[w]?S=this.defaultActions[w]:((B===null||typeof B>"u")&&(B=bt()),S=J[w]&&J[w][B]),typeof S>"u"||!S.length||!S[0]){var Me="";pe=[];for(he in J[w])this.terminals_[he]&&he>pt&&pe.push("'"+this.terminals_[he]+"'");T.showPosition?Me="Parse error on line "+(ce+1)+`: -`+T.showPosition()+` -Expecting `+pe.join(", ")+", got '"+(this.terminals_[B]||B)+"'":Me="Parse error on line "+(ce+1)+": Unexpected "+(B==Ke?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(Me,{text:T.match,token:this.terminals_[B]||B,line:T.yylineno,loc:ve,expected:pe})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+B);switch(S[0]){case 1:p.push(B),f.push(T.yytext),e.push(T.yylloc),p.push(S[1]),B=null,Ie?(B=Ie,Ie=null):(ze=T.yyleng,t=T.yytext,ce=T.yylineno,ve=T.yylloc,Ye>0&&Ye--);break;case 2:if(v=this.productions_[S[1]][1],G.$=f[f.length-v],G._$={first_line:e[e.length-(v||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(v||1)].first_column,last_column:e[e.length-1].last_column},gt&&(G._$.range=[e[e.length-(v||1)].range[0],e[e.length-1].range[1]]),Oe=this.performAction.apply(G,[t,ze,ce,M.yy,S[1],f,e].concat(dt)),typeof Oe<"u")return Oe;v&&(p=p.slice(0,-1*v*2),f=f.slice(0,-1*v),e=e.slice(0,-1*v)),p.push(this.productions_[S[1]][0]),f.push(G.$),e.push(G._$),je=J[p[p.length-2]][p[p.length-1]],p.push(je);break;case 3:return!0}}return!0},"parse")},ht=(function(){var O={EOF:1,parseError:d(function(c,p){if(this.yy.parser)this.yy.parser.parseError(c,p);else throw new Error(c)},"parseError"),setInput:d(function(o,c){return this.yy=c||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:d(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var c=o.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:d(function(o){var c=o.length,p=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),p.length-1&&(this.yylineno-=p.length-1);var f=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:p?(p.length===n.length?this.yylloc.first_column:0)+n[n.length-p.length].length-p[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[f[0],f[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:d(function(){return this._more=!0,this},"more"),reject:d(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:d(function(o){this.unput(this.match.slice(o))},"less"),pastInput:d(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:d(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:d(function(){var o=this.pastInput(),c=new Array(o.length+1).join("-");return o+this.upcomingInput()+` -`+c+"^"},"showPosition"),test_match:d(function(o,c){var p,n,f;if(this.options.backtrack_lexer&&(f={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(f.yylloc.range=this.yylloc.range.slice(0))),n=o[0].match(/(?:\r\n?|\n).*/g),n&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],p=this.performAction.call(this,this.yy,this,c,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),p)return p;if(this._backtrack){for(var e in f)this[e]=f[e];return!1}return!1},"test_match"),next:d(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,c,p,n;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),e=0;ec[0].length)){if(c=p,n=e,this.options.backtrack_lexer){if(o=this.test_match(p,f[e]),o!==!1)return o;if(this._backtrack){c=!1;continue}else return!1}else if(!this.options.flex)break}return c?(o=this.test_match(c,f[n]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:d(function(){var c=this.next();return c||this.lex()},"lex"),begin:d(function(c){this.conditionStack.push(c)},"begin"),popState:d(function(){var c=this.conditionStack.length-1;return c>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:d(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:d(function(c){return c=this.conditionStack.length-1-Math.abs(c||0),c>=0?this.conditionStack[c]:"INITIAL"},"topState"),pushState:d(function(c){this.begin(c)},"pushState"),stateStackSize:d(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:d(function(c,p,n,f){var e=f;switch(n){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:return this.popState(),41;break;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;break;case 39:return this.popState(),8;break;case 40:break;case 41:return this.popState(),this.popState(),41;break;case 42:return this.begin("class-body"),39;break;case 43:return this.popState(),41;break;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;case 48:return"MEMBER";case 49:return 83;case 50:return 75;case 51:return 76;case 52:return 78;case 53:return 54;case 54:return 56;case 55:return 49;case 56:return 50;case 57:return 81;case 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 77;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 69;case 69:return 69;case 70:return 71;case 71:return 71;case 72:return 70;case 73:return 68;case 74:return 72;case 75:return 73;case 76:return 74;case 77:return 22;case 78:return 44;case 79:return 100;case 80:return 18;case 81:return"PLUS";case 82:return 87;case 83:return 61;case 84:return 89;case 85:return 89;case 86:return 90;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 60;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 86;case 94:return 102;case 95:return 48;case 96:return 48;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{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)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,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],inclusive:!0}}};return O})();Se.lexer=ht;function xe(){this.yy={}}return d(xe,"Parser"),xe.prototype=Se,Se.Parser=xe,new xe})();we.parser=we;var Et=we;var ut=["#","+","~","-",""],te=class{static{d(this,"ClassMember")}constructor(i,a){this.memberType=a,this.visibility="",this.classifier="",this.text="";let l=We(i,D());this.parseMember(l)}getDisplayDetails(){let i=this.visibility+V(this.id);this.memberType==="method"&&(i+=`(${V(this.parameters.trim())})`,this.returnType&&(i+=" : "+V(this.returnType))),i=i.trim();let a=this.parseClassifier();return{displayText:i,cssStyle:a}}parseMember(i){let a="";if(this.memberType==="method"){let r=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(i);if(r){let g=r[1]?r[1].trim():"";if(ut.includes(g)&&(this.visibility=g),this.id=r[2],this.parameters=r[3]?r[3].trim():"",a=r[4]?r[4].trim():"",this.returnType=r[5]?r[5].trim():"",a===""){let b=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(b)&&(a=b,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let u=i.length,r=i.substring(0,1),g=i.substring(u-1);ut.includes(r)&&(this.visibility=r),/[$*]/.exec(g)&&(a=g),this.id=i.substring(this.visibility===""?0:1,a===""?u:u-1)}this.classifier=a,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let l=`${this.visibility?"\\"+this.visibility:""}${V(this.id)}${this.memberType==="method"?`(${V(this.parameters)})${this.returnType?" : "+V(this.returnType):""}`:""}`;this.text=l.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}};var de="classId-",ot=0,P=d(s=>L.sanitizeText(s,D()),"sanitizeText"),ct=class{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=new Map;this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=d(i=>{let a=tt();$(i).select("svg").selectAll("g").filter(function(){return $(this).attr("title")!==null}).on("mouseover",r=>{let g=$(r.currentTarget),b=g.attr("title");if(!b)return;let A=r.currentTarget.getBoundingClientRect();a.transition().duration(200).style("opacity",".9"),a.html(Qe.sanitize(b)).style("left",`${window.scrollX+A.left+A.width/2}px`).style("top",`${window.scrollY+A.bottom+4}px`),g.classed("hover",!0)}).on("mouseout",r=>{a.transition().duration(500).style("opacity",0),$(r.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=He;this.getAccTitle=qe;this.setAccDescription=Je;this.getAccDescription=Ze;this.setDiagramTitle=$e;this.getDiagramTitle=et;this.getConfig=d(()=>D().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{d(this,"ClassDB")}splitClassNameAndType(i){let a=L.sanitizeText(i,D()),l="",u=a;if(a.indexOf("~")>0){let r=a.split("~");u=P(r[0]),l=P(r[1])}return{className:u,type:l}}setClassLabel(i,a){let l=L.sanitizeText(i,D());a&&(a=P(a));let{className:u}=this.splitClassNameAndType(l);this.classes.get(u).label=a,this.classes.get(u).text=`${a}${this.classes.get(u).type?`<${this.classes.get(u).type}>`:""}`}addClass(i){let a=L.sanitizeText(i,D()),{className:l,type:u}=this.splitClassNameAndType(a);if(this.classes.has(l))return;let r=L.sanitizeText(l,D());this.classes.set(r,{id:r,type:u,label:r,text:`${r}${u?`<${u}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:de+r+"-"+ot}),ot++}addInterface(i,a){let l={id:`interface${this.interfaces.length}`,label:i,classId:a};this.interfaces.push(l)}lookUpDomId(i){let a=L.sanitizeText(i,D());if(this.classes.has(a))return this.classes.get(a).domId;throw new Error("Class not found: "+a)}clear(){this.relations=[],this.classes=new Map,this.notes=new Map,this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",Xe()}getClass(i){return this.classes.get(i)}getClasses(){return this.classes}getRelations(){return this.relations}getNote(i){let a=typeof i=="number"?`note${i}`:i;return this.notes.get(a)}getNotes(){return this.notes}addRelation(i){Z.debug("Adding relation: "+JSON.stringify(i));let a=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];i.relation.type1===this.relationType.LOLLIPOP&&!a.includes(i.relation.type2)?(this.addClass(i.id2),this.addInterface(i.id1,i.id2),i.id1=`interface${this.interfaces.length-1}`):i.relation.type2===this.relationType.LOLLIPOP&&!a.includes(i.relation.type1)?(this.addClass(i.id1),this.addInterface(i.id2,i.id1),i.id2=`interface${this.interfaces.length-1}`):(this.addClass(i.id1),this.addClass(i.id2)),i.id1=this.splitClassNameAndType(i.id1).className,i.id2=this.splitClassNameAndType(i.id2).className,i.relationTitle1=L.sanitizeText(i.relationTitle1.trim(),D()),i.relationTitle2=L.sanitizeText(i.relationTitle2.trim(),D()),this.relations.push(i)}addAnnotation(i,a){let l=this.splitClassNameAndType(i).className;this.classes.get(l).annotations.push(a)}addMember(i,a){this.addClass(i);let l=this.splitClassNameAndType(i).className,u=this.classes.get(l);if(typeof a=="string"){let r=a.trim();r.startsWith("<<")&&r.endsWith(">>")?u.annotations.push(P(r.substring(2,r.length-2))):r.indexOf(")")>0?u.methods.push(new te(r,"method")):r&&u.members.push(new te(r,"attribute"))}}addMembers(i,a){Array.isArray(a)&&(a.reverse(),a.forEach(l=>this.addMember(i,l)))}addNote(i,a){let l=this.notes.size,u={id:`note${l}`,class:a,text:i,index:l};return this.notes.set(u.id,u),u.id}cleanupLabel(i){return i.startsWith(":")&&(i=i.substring(1)),P(i.trim())}setCssClass(i,a){i.split(",").forEach(l=>{let u=l;/\d/.exec(l[0])&&(u=de+u);let r=this.classes.get(u);r&&(r.cssClasses+=" "+a)})}defineClass(i,a){for(let l of i){let u=this.styleClasses.get(l);u===void 0&&(u={id:l,styles:[],textStyles:[]},this.styleClasses.set(l,u)),a&&a.forEach(r=>{if(/color/.exec(r)){let g=r.replace("fill","bgFill");u.textStyles.push(g)}u.styles.push(r)}),this.classes.forEach(r=>{r.cssClasses.includes(l)&&r.styles.push(...a.flatMap(g=>g.split(",")))})}}setTooltip(i,a){i.split(",").forEach(l=>{a!==void 0&&(this.classes.get(l).tooltip=P(a))})}getTooltip(i,a){return a&&this.namespaces.has(a)?this.namespaces.get(a).classes.get(i).tooltip:this.classes.get(i).tooltip}setLink(i,a,l){let u=D();i.split(",").forEach(r=>{let g=r;/\d/.exec(r[0])&&(g=de+g);let b=this.classes.get(g);b&&(b.link=ee.formatUrl(a,u),u.securityLevel==="sandbox"?b.linkTarget="_top":typeof l=="string"?b.linkTarget=P(l):b.linkTarget="_blank")}),this.setCssClass(i,"clickable")}setClickEvent(i,a,l){i.split(",").forEach(u=>{this.setClickFunc(u,a,l),this.classes.get(u).haveCallback=!0}),this.setCssClass(i,"clickable")}setClickFunc(i,a,l){let u=L.sanitizeText(i,D());if(D().securityLevel!=="loose"||a===void 0)return;let g=u;if(this.classes.has(g)){let b=this.lookUpDomId(g),A=[];if(typeof l=="string"){A=l.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let F=0;F{let F=document.querySelector(`[id="${b}"]`);F!==null&&F.addEventListener("click",()=>{ee.runFunc(a,...A)},!1)})}}bindFunctions(i){this.functions.forEach(a=>{a(i)})}escapeHtml(i){return i.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}getDirection(){return this.direction}setDirection(i){this.direction=i}addNamespace(i){this.namespaces.has(i)||(this.namespaces.set(i,{id:i,classes:new Map,notes:new Map,children:new Map,domId:de+i+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(i){return this.namespaces.get(i)}getNamespaces(){return this.namespaces}addClassesToNamespace(i,a,l){if(this.namespaces.has(i)){for(let u of a){let{className:r}=this.splitClassNameAndType(u),g=this.getClass(r);g.parent=i,this.namespaces.get(i).classes.set(r,g)}for(let u of l){let r=this.getNote(u);r.parent=i,this.namespaces.get(i).notes.set(u,r)}}}setCssStyle(i,a){let l=this.classes.get(i);if(!(!a||!l))for(let u of a)u.includes(",")?l.styles.push(...u.split(",")):l.styles.push(u)}getArrowMarker(i){let a;switch(i){case 0:a="aggregation";break;case 1:a="extension";break;case 2:a="composition";break;case 3:a="dependency";break;case 4:a="lollipop";break;default:a="none"}return a}getData(){let i=[],a=[],l=D();for(let r of this.namespaces.values()){let g={id:r.id,label:r.id,isGroup:!0,padding:l.class.padding??16,shape:"rect",cssStyles:[],look:l.look};i.push(g)}for(let r of this.classes.values()){let g={...r,type:void 0,isGroup:!1,parentId:r.parent,look:l.look};i.push(g)}for(let r of this.notes.values()){let g={id:r.id,label:r.text,isGroup:!1,shape:"note",padding:l.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${l.themeVariables.noteBkgColor}`,`stroke: ${l.themeVariables.noteBorderColor}`],look:l.look,parentId:r.parent,labelType:"markdown"};i.push(g);let b=this.classes.get(r.class)?.id;if(b){let A={id:`edgeNote${r.index}`,start:r.id,end:b,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:l.look};a.push(A)}}for(let r of this.interfaces){let g={id:r.id,label:r.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:l.look};i.push(g)}let u=0;for(let r of this.relations){u++;let g={id:st(r.id1,r.id2,{prefix:"id",counter:u}),start:r.id1,end:r.id2,type:"normal",label:r.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(r.relation.type1),arrowTypeEnd:this.getArrowMarker(r.relation.type2),startLabelRight:r.relationTitle1==="none"?"":r.relationTitle1,endLabelLeft:r.relationTitle2==="none"?"":r.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:r.style||"",pattern:r.relation.lineType==1?"dashed":"solid",look:l.look,labelType:"markdown"};a.push(g)}return{nodes:i,edges:a,other:{},config:l,direction:this.getDirection()}}};var ft=d(s=>`g.classGroup text { - fill: ${s.nodeBorder||s.classText}; - stroke: none; - font-family: ${s.fontFamily}; - font-size: 10px; - - .title { - font-weight: bolder; - } - -} - - .cluster-label text { - fill: ${s.titleColor}; - } - .cluster-label span { - color: ${s.titleColor}; - } - .cluster-label span p { - background-color: transparent; - } - - .cluster rect { - fill: ${s.clusterBkg}; - stroke: ${s.clusterBorder}; - stroke-width: 1px; - } - - .cluster text { - fill: ${s.titleColor}; - } - - .cluster span { - color: ${s.titleColor}; - } - -.nodeLabel, .edgeLabel { - color: ${s.classText}; -} -.edgeLabel .label rect { - fill: ${s.mainBkg}; -} -.label text { - fill: ${s.classText}; -} - -.labelBkg { - background: ${s.mainBkg}; -} -.edgeLabel .label span { - background: ${s.mainBkg}; -} - -.classTitle { - font-weight: bolder; -} -.node rect, - .node circle, - .node ellipse, - .node polygon, - .node path { - fill: ${s.mainBkg}; - stroke: ${s.nodeBorder}; - stroke-width: 1px; - } - - -.divider { - stroke: ${s.nodeBorder}; - stroke-width: 1; -} - -g.clickable { - cursor: pointer; -} - -g.classGroup rect { - fill: ${s.mainBkg}; - stroke: ${s.nodeBorder}; -} - -g.classGroup line { - stroke: ${s.nodeBorder}; - stroke-width: 1; -} - -.classLabel .box { - stroke: none; - stroke-width: 0; - fill: ${s.mainBkg}; - opacity: 0.5; -} - -.classLabel .label { - fill: ${s.nodeBorder}; - font-size: 10px; -} - -.relation { - stroke: ${s.lineColor}; - stroke-width: 1; - fill: none; -} - -.dashed-line{ - stroke-dasharray: 3; -} - -.dotted-line{ - stroke-dasharray: 1 2; -} - -#compositionStart, .composition { - fill: ${s.lineColor} !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#compositionEnd, .composition { - fill: ${s.lineColor} !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#dependencyStart, .dependency { - fill: ${s.lineColor} !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#dependencyStart, .dependency { - fill: ${s.lineColor} !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#extensionStart, .extension { - fill: transparent !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#extensionEnd, .extension { - fill: transparent !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#aggregationStart, .aggregation { - fill: transparent !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#aggregationEnd, .aggregation { - fill: transparent !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#lollipopStart, .lollipop { - fill: ${s.mainBkg} !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -#lollipopEnd, .lollipop { - fill: ${s.mainBkg} !important; - stroke: ${s.lineColor} !important; - stroke-width: 1; -} - -.edgeTerminals { - font-size: 11px; - line-height: initial; -} - -.classTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${s.textColor}; -} - ${lt()} -`,"getStyles"),Ut=ft;var At=d((s,i="TB")=>{if(!s.doc)return i;let a=i;for(let l of s.doc)l.stmt==="dir"&&(a=l.value);return a},"getDir"),mt=d(function(s,i){return i.db.getClasses()},"getClasses"),kt=d(async function(s,i,a,l){Z.info("REF0:"),Z.info("Drawing class diagram (v3)",i);let{securityLevel:u,state:r,layout:g}=D(),b=l.db.getData(),A=it(i,u);b.type=l.type,b.layoutAlgorithm=at(g),b.nodeSpacing=r?.nodeSpacing||50,b.rankSpacing=r?.rankSpacing||50,b.markers=["aggregation","extension","composition","dependency","lollipop"],b.diagramId=i,await rt(b,A);let F=8;ee.insertTitle(A,"classDiagramTitleText",r?.titleTopMargin??25,l.db.getDiagramTitle()),nt(A,F,"classDiagram",r?.useMaxWidth??!0)},"draw"),qt={getClasses:mt,draw:kt,getDir:At};export{Et as a,ct as b,Ut as c,qt as d}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-TFLKLN34.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-TFLKLN34.mjs.map deleted file mode 100644 index fa56f83..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-TFLKLN34.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/class/parser/classDiagram.jison", "../../../src/diagrams/class/classTypes.ts", "../../../src/diagrams/class/classDb.ts", "../../../src/diagrams/class/styles.js", "../../../src/diagrams/class/classRenderer-v3-unified.ts"], - "sourcesContent": ["/* 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,18],$V1=[1,19],$V2=[1,20],$V3=[1,41],$V4=[1,42],$V5=[1,26],$V6=[1,24],$V7=[1,25],$V8=[1,32],$V9=[1,33],$Va=[1,34],$Vb=[1,45],$Vc=[1,35],$Vd=[1,36],$Ve=[1,37],$Vf=[1,38],$Vg=[1,27],$Vh=[1,28],$Vi=[1,29],$Vj=[1,30],$Vk=[1,31],$Vl=[1,44],$Vm=[1,46],$Vn=[1,43],$Vo=[1,47],$Vp=[1,9],$Vq=[1,8,9],$Vr=[1,58],$Vs=[1,59],$Vt=[1,60],$Vu=[1,61],$Vv=[1,62],$Vw=[1,63],$Vx=[1,64],$Vy=[1,8,9,41],$Vz=[1,76],$VA=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],$VB=[1,8,9,12,13,18,20,22,39,41,44,50,60,68,69,70,71,72,73,74,79,81,86,100,102,103],$VC=[13,60,86,100,102,103],$VD=[13,60,73,74,86,100,102,103],$VE=[13,60,68,69,70,71,72,86,100,102,103],$VF=[1,101],$VG=[1,118],$VH=[1,114],$VI=[1,110],$VJ=[1,116],$VK=[1,111],$VL=[1,112],$VM=[1,113],$VN=[1,115],$VO=[1,117],$VP=[22,48,60,61,82,86,87,88,89,90],$VQ=[1,8,9,39,41,44],$VR=[1,8,9,22],$VS=[1,147],$VT=[1,8,9,61],$VU=[1,8,9,22,48,60,61,82,86,87,88,89,90];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"statements\":5,\"graphConfig\":6,\"CLASS_DIAGRAM\":7,\"NEWLINE\":8,\"EOF\":9,\"statement\":10,\"classLabel\":11,\"SQS\":12,\"STR\":13,\"SQE\":14,\"namespaceName\":15,\"alphaNumToken\":16,\"classLiteralName\":17,\"DOT\":18,\"className\":19,\"GENERICTYPE\":20,\"relationStatement\":21,\"LABEL\":22,\"namespaceStatement\":23,\"classStatement\":24,\"memberStatement\":25,\"annotationStatement\":26,\"clickStatement\":27,\"styleStatement\":28,\"cssClassStatement\":29,\"noteStatement\":30,\"classDefStatement\":31,\"direction\":32,\"acc_title\":33,\"acc_title_value\":34,\"acc_descr\":35,\"acc_descr_value\":36,\"acc_descr_multiline_value\":37,\"namespaceIdentifier\":38,\"STRUCT_START\":39,\"classStatements\":40,\"STRUCT_STOP\":41,\"NAMESPACE\":42,\"classIdentifier\":43,\"STYLE_SEPARATOR\":44,\"members\":45,\"CLASS\":46,\"emptyBody\":47,\"SPACE\":48,\"ANNOTATION_START\":49,\"ANNOTATION_END\":50,\"MEMBER\":51,\"SEPARATOR\":52,\"relation\":53,\"NOTE_FOR\":54,\"noteText\":55,\"NOTE\":56,\"CLASSDEF\":57,\"classList\":58,\"stylesOpt\":59,\"ALPHA\":60,\"COMMA\":61,\"direction_tb\":62,\"direction_bt\":63,\"direction_rl\":64,\"direction_lr\":65,\"relationType\":66,\"lineType\":67,\"AGGREGATION\":68,\"EXTENSION\":69,\"COMPOSITION\":70,\"DEPENDENCY\":71,\"LOLLIPOP\":72,\"LINE\":73,\"DOTTED_LINE\":74,\"CALLBACK\":75,\"LINK\":76,\"LINK_TARGET\":77,\"CLICK\":78,\"CALLBACK_NAME\":79,\"CALLBACK_ARGS\":80,\"HREF\":81,\"STYLE\":82,\"CSSCLASS\":83,\"style\":84,\"styleComponent\":85,\"NUM\":86,\"COLON\":87,\"UNIT\":88,\"BRKT\":89,\"PCT\":90,\"commentToken\":91,\"textToken\":92,\"graphCodeTokens\":93,\"textNoTagsToken\":94,\"TAGSTART\":95,\"TAGEND\":96,\"==\":97,\"--\":98,\"DEFAULT\":99,\"MINUS\":100,\"keywords\":101,\"UNICODE_TEXT\":102,\"BQUOTE_STR\":103,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",7:\"CLASS_DIAGRAM\",8:\"NEWLINE\",9:\"EOF\",12:\"SQS\",13:\"STR\",14:\"SQE\",18:\"DOT\",20:\"GENERICTYPE\",22:\"LABEL\",33:\"acc_title\",34:\"acc_title_value\",35:\"acc_descr\",36:\"acc_descr_value\",37:\"acc_descr_multiline_value\",39:\"STRUCT_START\",41:\"STRUCT_STOP\",42:\"NAMESPACE\",44:\"STYLE_SEPARATOR\",46:\"CLASS\",48:\"SPACE\",49:\"ANNOTATION_START\",50:\"ANNOTATION_END\",51:\"MEMBER\",52:\"SEPARATOR\",54:\"NOTE_FOR\",56:\"NOTE\",57:\"CLASSDEF\",60:\"ALPHA\",61:\"COMMA\",62:\"direction_tb\",63:\"direction_bt\",64:\"direction_rl\",65:\"direction_lr\",68:\"AGGREGATION\",69:\"EXTENSION\",70:\"COMPOSITION\",71:\"DEPENDENCY\",72:\"LOLLIPOP\",73:\"LINE\",74:\"DOTTED_LINE\",75:\"CALLBACK\",76:\"LINK\",77:\"LINK_TARGET\",78:\"CLICK\",79:\"CALLBACK_NAME\",80:\"CALLBACK_ARGS\",81:\"HREF\",82:\"STYLE\",83:\"CSSCLASS\",86:\"NUM\",87:\"COLON\",88:\"UNIT\",89:\"BRKT\",90:\"PCT\",93:\"graphCodeTokens\",95:\"TAGSTART\",96:\"TAGEND\",97:\"==\",98:\"--\",99:\"DEFAULT\",100:\"MINUS\",101:\"keywords\",102:\"UNICODE_TEXT\",103:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[43,2],[43,3],[47,0],[47,2],[47,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 8:\n this.$=$$[$0-1]; \nbreak;\ncase 9: case 10: case 13: case 15:\n this.$=$$[$0]; \nbreak;\ncase 11: case 14:\n this.$=$$[$0-2]+'.'+$$[$0]; \nbreak;\ncase 12: case 16:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 17: case 18:\n this.$=$$[$0-1]+'~'+$$[$0]+'~'; \nbreak;\ncase 19:\n yy.addRelation($$[$0]); \nbreak;\ncase 20:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 31:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 32: case 33:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 34:\n yy.addClassesToNamespace($$[$0-3], $$[$0-1][0], $$[$0-1][1]); \nbreak;\ncase 35:\n yy.addClassesToNamespace($$[$0-4], $$[$0-1][0], $$[$0-1][1]); \nbreak;\ncase 36:\n this.$=$$[$0]; yy.addNamespace($$[$0]); \nbreak;\ncase 37:\nthis.$=[[$$[$0]], []]\nbreak;\ncase 38:\nthis.$=[[$$[$0-1]], []]\nbreak;\ncase 39:\n$$[$0][0].unshift($$[$0-2]); this.$=$$[$0]\nbreak;\ncase 40:\nthis.$=[[], [$$[$0]]]\nbreak;\ncase 41:\nthis.$=[[], [$$[$0-1]]]\nbreak;\ncase 42:\n$$[$0][1].unshift($$[$0-2]); this.$=$$[$0]\nbreak;\ncase 44:\nyy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 45:\nyy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 47:\nyy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 48:\nthis.$=$$[$0]; yy.addClass($$[$0]);\nbreak;\ncase 49:\nthis.$=$$[$0-1]; yy.addClass($$[$0-1]);yy.setClassLabel($$[$0-1], $$[$0]);\nbreak;\ncase 53:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 54: case 67:\n this.$ = [$$[$0]]; \nbreak;\ncase 55:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 56:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 57:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 58:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 59:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 60:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 61:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 62:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 63:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 64:\n this.$ = yy.addNote($$[$0], $$[$0-1]); \nbreak;\ncase 65:\n this.$ = yy.addNote($$[$0]); \nbreak;\ncase 66:\nthis.$ = $$[$0-2];yy.defineClass($$[$0-1],$$[$0]);\nbreak;\ncase 68:\n this.$ = $$[$0-2].concat([$$[$0]]); \nbreak;\ncase 69:\n yy.setDirection('TB');\nbreak;\ncase 70:\n yy.setDirection('BT');\nbreak;\ncase 71:\n yy.setDirection('RL');\nbreak;\ncase 72:\n yy.setDirection('LR');\nbreak;\ncase 73:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 74:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 75:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 76:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 77:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 78:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 79:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 80:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 81:\n this.$=yy.relationType.LOLLIPOP;\nbreak;\ncase 82:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 83:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 84: case 90:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 85: case 91:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 86:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 87:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 88:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 89:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 92:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 93:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 94:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0]);\nbreak;\ncase 95:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-1], $$[$0]);\nbreak;\ncase 96:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 97:\nthis.$ = $$[$0-5];yy.setLink($$[$0-4], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-4], $$[$0-1]);\nbreak;\ncase 98:\nthis.$ = $$[$0-2];yy.setCssStyle($$[$0-1],$$[$0]);\nbreak;\ncase 99:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\ncase 100:\nthis.$ = [$$[$0]]\nbreak;\ncase 101:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 103:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:$V0,35:$V1,37:$V2,38:22,42:$V3,43:23,46:$V4,49:$V5,51:$V6,52:$V7,54:$V8,56:$V9,57:$Va,60:$Vb,62:$Vc,63:$Vd,64:$Ve,65:$Vf,75:$Vg,76:$Vh,78:$Vi,82:$Vj,83:$Vk,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},o($Vp,[2,5],{8:[1,48]}),{8:[1,49]},o($Vq,[2,19],{22:[1,50]}),o($Vq,[2,21]),o($Vq,[2,22]),o($Vq,[2,23]),o($Vq,[2,24]),o($Vq,[2,25]),o($Vq,[2,26]),o($Vq,[2,27]),o($Vq,[2,28]),o($Vq,[2,29]),o($Vq,[2,30]),{34:[1,51]},{36:[1,52]},o($Vq,[2,33]),o($Vq,[2,56],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:$Vr,69:$Vs,70:$Vt,71:$Vu,72:$Vv,73:$Vw,74:$Vx}),{39:[1,65]},o($Vy,[2,43],{39:[1,67],44:[1,66]}),o($Vq,[2,58]),o($Vq,[2,59]),{16:68,60:$Vb,86:$Vl,100:$Vm,102:$Vn},{16:39,17:40,19:69,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{16:39,17:40,19:70,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{16:39,17:40,19:71,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{13:$Vz,55:75},{58:77,60:[1,78]},o($Vq,[2,69]),o($Vq,[2,70]),o($Vq,[2,71]),o($Vq,[2,72]),o($VA,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo}),o($VA,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{16:39,17:40,19:86,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VB,[2,126]),o($VB,[2,127]),o($VB,[2,128]),o($VB,[2,129]),o([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,130]),o($Vp,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:87,33:$V0,35:$V1,37:$V2,42:$V3,46:$V4,49:$V5,51:$V6,52:$V7,54:$V8,56:$V9,57:$Va,60:$Vb,62:$Vc,63:$Vd,64:$Ve,65:$Vf,75:$Vg,76:$Vh,78:$Vi,82:$Vj,83:$Vk,86:$Vl,100:$Vm,102:$Vn,103:$Vo}),{5:88,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:$V0,35:$V1,37:$V2,38:22,42:$V3,43:23,46:$V4,49:$V5,51:$V6,52:$V7,54:$V8,56:$V9,57:$Va,60:$Vb,62:$Vc,63:$Vd,64:$Ve,65:$Vf,75:$Vg,76:$Vh,78:$Vi,82:$Vj,83:$Vk,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($Vq,[2,20]),o($Vq,[2,31]),o($Vq,[2,32]),{13:[1,90],16:39,17:40,19:89,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{53:91,66:56,67:57,68:$Vr,69:$Vs,70:$Vt,71:$Vu,72:$Vv,73:$Vw,74:$Vx},o($Vq,[2,57]),{67:92,73:$Vw,74:$Vx},o($VC,[2,76],{66:93,68:$Vr,69:$Vs,70:$Vt,71:$Vu,72:$Vv}),o($VD,[2,77]),o($VD,[2,78]),o($VD,[2,79]),o($VD,[2,80]),o($VD,[2,81]),o($VE,[2,82]),o($VE,[2,83]),{8:[1,95],24:96,30:97,40:94,43:23,46:$V4,54:$V8,56:$V9},{16:98,60:$Vb,86:$Vl,100:$Vm,102:$Vn},{41:[1,100],45:99,51:$VF},{50:[1,102]},{13:[1,103]},{13:[1,104]},{79:[1,105],81:[1,106]},{22:$VG,48:$VH,59:107,60:$VI,82:$VJ,84:108,85:109,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO},{60:[1,119]},{13:$Vz,55:120},o($Vy,[2,65]),o($Vy,[2,131]),{22:$VG,48:$VH,59:121,60:$VI,61:[1,122],82:$VJ,84:108,85:109,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO},o($VP,[2,67]),{16:39,17:40,19:123,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VA,[2,16]),o($VA,[2,17]),o($VA,[2,18]),{39:[2,36]},{15:125,16:84,17:85,18:[1,124],39:[2,9],60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{39:[2,10]},o($VQ,[2,48],{11:126,12:[1,127]}),o($Vp,[2,7]),{9:[1,128]},o($VR,[2,60]),{16:39,17:40,19:129,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{13:[1,131],16:39,17:40,19:130,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VC,[2,75],{66:132,68:$Vr,69:$Vs,70:$Vt,71:$Vu,72:$Vv}),o($VC,[2,74]),{41:[1,133]},{24:96,30:97,40:134,43:23,46:$V4,54:$V8,56:$V9},{8:[1,135],41:[2,37]},{8:[1,136],41:[2,40]},o($Vy,[2,44],{39:[1,137]}),{41:[1,138]},o($Vy,[2,46]),{41:[2,54],45:139,51:$VF},{16:39,17:40,19:140,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($Vq,[2,84],{13:[1,141]}),o($Vq,[2,86],{13:[1,143],77:[1,142]}),o($Vq,[2,90],{13:[1,144],80:[1,145]}),{13:[1,146]},o($Vq,[2,98],{61:$VS}),o($VT,[2,100],{85:148,22:$VG,48:$VH,60:$VI,82:$VJ,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO}),o($VU,[2,102]),o($VU,[2,104]),o($VU,[2,105]),o($VU,[2,106]),o($VU,[2,107]),o($VU,[2,108]),o($VU,[2,109]),o($VU,[2,110]),o($VU,[2,111]),o($VU,[2,112]),o($Vq,[2,99]),o($Vy,[2,64]),o($Vq,[2,66],{61:$VS}),{60:[1,149]},o($VA,[2,14]),{15:150,16:84,17:85,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},{39:[2,12]},o($VQ,[2,49]),{13:[1,151]},{1:[2,4]},o($VR,[2,62]),o($VR,[2,61]),{16:39,17:40,19:152,60:$Vb,86:$Vl,100:$Vm,102:$Vn,103:$Vo},o($VC,[2,73]),o($Vq,[2,34]),{41:[1,153]},{24:96,30:97,40:154,41:[2,38],43:23,46:$V4,54:$V8,56:$V9},{24:96,30:97,40:155,41:[2,41],43:23,46:$V4,54:$V8,56:$V9},{45:156,51:$VF},o($Vy,[2,45]),{41:[2,55]},o($Vq,[2,53]),o($Vq,[2,85]),o($Vq,[2,87]),o($Vq,[2,88],{77:[1,157]}),o($Vq,[2,91]),o($Vq,[2,92],{13:[1,158]}),o($Vq,[2,94],{13:[1,160],77:[1,159]}),{22:$VG,48:$VH,60:$VI,82:$VJ,84:161,85:109,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO},o($VU,[2,103]),o($VP,[2,68]),{39:[2,11]},{14:[1,162]},o($VR,[2,63]),o($Vq,[2,35]),{41:[2,39]},{41:[2,42]},{41:[1,163]},o($Vq,[2,89]),o($Vq,[2,93]),o($Vq,[2,95]),o($Vq,[2,96],{77:[1,164]}),o($VT,[2,101],{85:148,22:$VG,48:$VH,60:$VI,82:$VJ,86:$VK,87:$VL,88:$VM,89:$VN,90:$VO}),o($VQ,[2,8]),o($Vy,[2,47]),o($Vq,[2,97])],\ndefaultActions: {2:[2,1],3:[2,2],4:[2,3],83:[2,36],85:[2,10],125:[2,12],128:[2,4],139:[2,55],150:[2,11],154:[2,39],155:[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\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:return 62;\nbreak;\ncase 1:return 63;\nbreak;\ncase 2:return 64;\nbreak;\ncase 3:return 65;\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6: this.begin(\"acc_title\");return 33; \nbreak;\ncase 7: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 8: this.begin(\"acc_descr\");return 35; \nbreak;\ncase 9: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 10: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 11: this.popState(); \nbreak;\ncase 12:return \"acc_descr_multiline_value\";\nbreak;\ncase 13:return 8;\nbreak;\ncase 14:/* skip whitespace */\nbreak;\ncase 15:return 7;\nbreak;\ncase 16:return 7;\nbreak;\ncase 17:return 'EDGE_STATE';\nbreak;\ncase 18:this.begin(\"callback_name\");\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 21:return 79;\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 80;\nbreak;\ncase 24:this.popState();\nbreak;\ncase 25:return \"STR\";\nbreak;\ncase 26:this.begin(\"string\");\nbreak;\ncase 27:return 82;\nbreak;\ncase 28:return 57;\nbreak;\ncase 29: this.begin('namespace'); return 42; \nbreak;\ncase 30: this.popState(); return 8; \nbreak;\ncase 31:/* skip whitespace */\nbreak;\ncase 32: this.begin(\"namespace-body\"); return 39;\nbreak;\ncase 33: this.popState(); return 41; \nbreak;\ncase 34:return \"EOF_IN_STRUCT\";\nbreak;\ncase 35:return 8;\nbreak;\ncase 36:/* skip whitespace */\nbreak;\ncase 37:return 'EDGE_STATE';\nbreak;\ncase 38: this.begin('class'); return 46;\nbreak;\ncase 39: this.popState(); return 8; \nbreak;\ncase 40:/* skip whitespace */\nbreak;\ncase 41: this.popState(); this.popState(); return 41;\nbreak;\ncase 42: this.begin(\"class-body\"); return 39;\nbreak;\ncase 43: this.popState(); return 41; \nbreak;\ncase 44:return \"EOF_IN_STRUCT\";\nbreak;\ncase 45: return 'EDGE_STATE';\nbreak;\ncase 46:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 47:/* nothing */\nbreak;\ncase 48: return \"MEMBER\";\nbreak;\ncase 49:return 83;\nbreak;\ncase 50:return 75;\nbreak;\ncase 51:return 76;\nbreak;\ncase 52:return 78;\nbreak;\ncase 53:return 54;\nbreak;\ncase 54:return 56;\nbreak;\ncase 55:return 49;\nbreak;\ncase 56:return 50;\nbreak;\ncase 57:return 81;\nbreak;\ncase 58:this.popState();\nbreak;\ncase 59:return \"GENERICTYPE\";\nbreak;\ncase 60:this.begin(\"generic\");\nbreak;\ncase 61:this.popState();\nbreak;\ncase 62:return \"BQUOTE_STR\";\nbreak;\ncase 63:this.begin(\"bqstring\");\nbreak;\ncase 64:return 77;\nbreak;\ncase 65:return 77;\nbreak;\ncase 66:return 77;\nbreak;\ncase 67:return 77;\nbreak;\ncase 68:return 69;\nbreak;\ncase 69:return 69;\nbreak;\ncase 70:return 71;\nbreak;\ncase 71:return 71;\nbreak;\ncase 72:return 70;\nbreak;\ncase 73:return 68;\nbreak;\ncase 74:return 72;\nbreak;\ncase 75:return 73;\nbreak;\ncase 76:return 74;\nbreak;\ncase 77:return 22;\nbreak;\ncase 78:return 44;\nbreak;\ncase 79:return 100;\nbreak;\ncase 80:return 18;\nbreak;\ncase 81:return 'PLUS';\nbreak;\ncase 82:return 87;\nbreak;\ncase 83:return 61;\nbreak;\ncase 84:return 89;\nbreak;\ncase 85:return 89;\nbreak;\ncase 86:return 90;\nbreak;\ncase 87:return 'EQUALS';\nbreak;\ncase 88:return 'EQUALS';\nbreak;\ncase 89:return 60;\nbreak;\ncase 90:return 12;\nbreak;\ncase 91:return 14;\nbreak;\ncase 92:return 'PUNCTUATION';\nbreak;\ncase 93:return 86;\nbreak;\ncase 94:return 102;\nbreak;\ncase 95:return 48;\nbreak;\ncase 96:return 48;\nbreak;\ncase 97:return 9;\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:\\[\\*\\])/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[\"])/,/^(?:style\\b)/,/^(?:classDef\\b)/,/^(?:namespace\\b)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:\\[\\*\\])/,/^(?:class\\b)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\\[\\*\\])/,/^(?:[{])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:note for\\b)/,/^(?:note\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:\\s*\\(\\))/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{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)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"namespace-body\":{\"rules\":[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"namespace\":{\"rules\":[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"class-body\":{\"rules\":[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"class\":{\"rules\":[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"acc_descr\":{\"rules\":[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"acc_title\":{\"rules\":[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"callback_args\":{\"rules\":[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"callback_name\":{\"rules\":[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"href\":{\"rules\":[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"struct\":{\"rules\":[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"generic\":{\"rules\":[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"bqstring\":{\"rules\":[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"string\":{\"rules\":[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,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],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { parseGenericTypes, sanitizeText } from '../common/common.js';\n\nexport interface ClassNode {\n id: string;\n type: string;\n label: string;\n shape: 'classBox';\n text: string;\n cssClasses: string;\n methods: ClassMember[];\n members: ClassMember[];\n annotations: string[];\n domId: string;\n styles: string[];\n parent?: string;\n link?: string;\n linkTarget?: string;\n haveCallback?: boolean;\n tooltip?: string;\n look?: string;\n}\n\nexport type Visibility = '#' | '+' | '~' | '-' | '';\nexport const visibilityValues = ['#', '+', '~', '-', ''];\n\n/**\n * Parses and stores class diagram member variables/methods.\n *\n */\nexport class ClassMember {\n id!: string;\n cssStyle!: string;\n memberType!: 'method' | 'attribute';\n visibility!: Visibility;\n text: string;\n /**\n * denote if static or to determine which css class to apply to the node\n * @defaultValue ''\n */\n classifier!: string;\n /**\n * parameters for method\n * @defaultValue ''\n */\n parameters!: string;\n /**\n * return type for method\n * @defaultValue ''\n */\n returnType!: string;\n\n constructor(input: string, memberType: 'method' | 'attribute') {\n this.memberType = memberType;\n this.visibility = '';\n this.classifier = '';\n this.text = '';\n const sanitizedInput = sanitizeText(input, getConfig());\n this.parseMember(sanitizedInput);\n }\n\n getDisplayDetails() {\n let displayText = this.visibility + parseGenericTypes(this.id);\n if (this.memberType === 'method') {\n displayText += `(${parseGenericTypes(this.parameters.trim())})`;\n if (this.returnType) {\n displayText += ' : ' + parseGenericTypes(this.returnType);\n }\n }\n\n displayText = displayText.trim();\n const cssStyle = this.parseClassifier();\n\n return {\n displayText,\n cssStyle,\n };\n }\n\n parseMember(input: string) {\n let potentialClassifier = '';\n\n if (this.memberType === 'method') {\n const methodRegEx = /([#+~-])?(.+)\\((.*)\\)([\\s$*])?(.*)([$*])?/;\n const match = methodRegEx.exec(input);\n if (match) {\n const detectedVisibility = match[1] ? match[1].trim() : '';\n\n if (visibilityValues.includes(detectedVisibility)) {\n this.visibility = detectedVisibility as Visibility;\n }\n\n this.id = match[2];\n this.parameters = match[3] ? match[3].trim() : '';\n potentialClassifier = match[4] ? match[4].trim() : '';\n this.returnType = match[5] ? match[5].trim() : '';\n\n if (potentialClassifier === '') {\n const lastChar = this.returnType.substring(this.returnType.length - 1);\n if (/[$*]/.exec(lastChar)) {\n potentialClassifier = lastChar;\n this.returnType = this.returnType.substring(0, this.returnType.length - 1);\n }\n }\n }\n } else {\n const length = input.length;\n const firstChar = input.substring(0, 1);\n const lastChar = input.substring(length - 1);\n\n if (visibilityValues.includes(firstChar)) {\n this.visibility = firstChar as Visibility;\n }\n\n if (/[$*]/.exec(lastChar)) {\n potentialClassifier = lastChar;\n }\n\n this.id = input.substring(\n this.visibility === '' ? 0 : 1,\n potentialClassifier === '' ? length : length - 1\n );\n }\n\n this.classifier = potentialClassifier;\n // Preserve one space only\n this.id = this.id.startsWith(' ') ? ' ' + this.id.trim() : this.id.trim();\n\n const combinedText = `${this.visibility ? '\\\\' + this.visibility : ''}${parseGenericTypes(this.id)}${this.memberType === 'method' ? `(${parseGenericTypes(this.parameters)})${this.returnType ? ' : ' + parseGenericTypes(this.returnType) : ''}` : ''}`;\n this.text = combinedText.replaceAll('<', '<').replaceAll('>', '>');\n if (this.text.startsWith('\\\\<')) {\n this.text = this.text.replace('\\\\<', '~');\n }\n }\n\n parseClassifier() {\n switch (this.classifier) {\n case '*':\n return 'font-style:italic;';\n case '$':\n return 'text-decoration:underline;';\n default:\n return '';\n }\n }\n}\n\nexport interface ClassNote {\n id: string;\n class: string;\n text: string;\n index: number;\n parent?: string;\n}\n\nexport interface ClassRelation {\n id1: string;\n id2: string;\n relationTitle1: string;\n relationTitle2: string;\n type: string;\n title: string;\n text: string;\n style: string[];\n relation: {\n type1: number;\n type2: number;\n lineType: number;\n };\n}\n\nexport interface Interface {\n id: string;\n label: string;\n classId: string;\n}\n\nexport interface NamespaceNode {\n id: string;\n domId: string;\n classes: ClassMap;\n notes: ClassNoteMap;\n children: NamespaceMap;\n}\n\nexport interface StyleClass {\n id: string;\n styles: string[];\n textStyles: string[];\n}\n\nexport type ClassMap = Map;\nexport type ClassNoteMap = Map;\nexport type NamespaceMap = Map;\n", "import { select } from 'd3';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport common from '../common/common.js';\nimport utils, { getEdgeId } from '../../utils.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport { createTooltip } from '../common/svgDrawCommon.js';\nimport { ClassMember } from './classTypes.js';\nimport type {\n ClassRelation,\n ClassNode,\n ClassNote,\n ClassNoteMap,\n ClassMap,\n NamespaceMap,\n NamespaceNode,\n StyleClass,\n Interface,\n} from './classTypes.js';\nimport type { Node, Edge } from '../../rendering-util/types.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport DOMPurify from 'dompurify';\n\nconst MERMAID_DOM_ID_PREFIX = 'classId-';\nlet classCounter = 0;\n\nconst sanitizeText = (txt: string) => common.sanitizeText(txt, getConfig());\n\nexport class ClassDB implements DiagramDB {\n private relations: ClassRelation[] = [];\n private classes: ClassMap = new Map();\n private readonly styleClasses = new Map();\n private notes: ClassNoteMap = new Map();\n private interfaces: Interface[] = [];\n // private static classCounter = 0;\n private namespaces = new Map();\n private namespaceCounter = 0;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n private functions: Function[] = [];\n\n constructor() {\n this.functions.push(this.setupToolTips.bind(this));\n this.clear();\n\n // Needed for JISON since it only supports direct properties\n this.addRelation = this.addRelation.bind(this);\n this.addClassesToNamespace = this.addClassesToNamespace.bind(this);\n this.addNamespace = this.addNamespace.bind(this);\n this.setCssClass = this.setCssClass.bind(this);\n this.addMembers = this.addMembers.bind(this);\n this.addClass = this.addClass.bind(this);\n this.setClassLabel = this.setClassLabel.bind(this);\n this.addAnnotation = this.addAnnotation.bind(this);\n this.addMember = this.addMember.bind(this);\n this.cleanupLabel = this.cleanupLabel.bind(this);\n this.addNote = this.addNote.bind(this);\n this.defineClass = this.defineClass.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.setLink = this.setLink.bind(this);\n this.bindFunctions = this.bindFunctions.bind(this);\n this.clear = this.clear.bind(this);\n\n this.setTooltip = this.setTooltip.bind(this);\n this.setClickEvent = this.setClickEvent.bind(this);\n this.setCssStyle = this.setCssStyle.bind(this);\n }\n\n private splitClassNameAndType(_id: string) {\n const id = common.sanitizeText(_id, getConfig());\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n const split = id.split('~');\n className = sanitizeText(split[0]);\n genericType = sanitizeText(split[1]);\n }\n\n return { className: className, type: genericType };\n }\n\n public setClassLabel(_id: string, label: string) {\n const id = common.sanitizeText(_id, getConfig());\n if (label) {\n label = sanitizeText(label);\n }\n\n const { className } = this.splitClassNameAndType(id);\n this.classes.get(className)!.label = label;\n this.classes.get(className)!.text =\n `${label}${this.classes.get(className)!.type ? `<${this.classes.get(className)!.type}>` : ''}`;\n }\n\n /**\n * Function called by parser when a node definition has been found.\n *\n * @param id - ID of the class to add\n * @public\n */\n public addClass(_id: string) {\n const id = common.sanitizeText(_id, getConfig());\n const { className, type } = this.splitClassNameAndType(id);\n // Only add class if not exists\n if (this.classes.has(className)) {\n return;\n }\n // alert('Adding class: ' + className);\n const name = common.sanitizeText(className, getConfig());\n // alert('Adding class after: ' + name);\n this.classes.set(name, {\n id: name,\n type: type,\n label: name,\n text: `${name}${type ? `<${type}>` : ''}`,\n shape: 'classBox',\n cssClasses: 'default',\n methods: [],\n members: [],\n annotations: [],\n styles: [],\n domId: MERMAID_DOM_ID_PREFIX + name + '-' + classCounter,\n });\n\n classCounter++;\n }\n\n private addInterface(label: string, classId: string) {\n const classInterface: Interface = {\n id: `interface${this.interfaces.length}`,\n label,\n classId,\n };\n\n this.interfaces.push(classInterface);\n }\n\n /**\n * Function to lookup domId from id in the graph definition.\n *\n * @param id - class ID to lookup\n * @public\n */\n public lookUpDomId(_id: string): string {\n const id = common.sanitizeText(_id, getConfig());\n if (this.classes.has(id)) {\n return this.classes.get(id)!.domId;\n }\n throw new Error('Class not found: ' + id);\n }\n\n public clear() {\n this.relations = [];\n this.classes = new Map();\n this.notes = new Map();\n this.interfaces = [];\n this.functions = [];\n this.functions.push(this.setupToolTips.bind(this));\n this.namespaces = new Map();\n this.namespaceCounter = 0;\n this.direction = 'TB';\n commonClear();\n }\n\n public getClass(id: string): ClassNode {\n return this.classes.get(id)!;\n }\n\n public getClasses(): ClassMap {\n return this.classes;\n }\n\n public getRelations(): ClassRelation[] {\n return this.relations;\n }\n\n public getNote(id: string | number): ClassNote {\n const key = typeof id === 'number' ? `note${id}` : id;\n return this.notes.get(key)!;\n }\n\n public getNotes(): ClassNoteMap {\n return this.notes;\n }\n\n public addRelation(classRelation: ClassRelation) {\n log.debug('Adding relation: ' + JSON.stringify(classRelation));\n // Due to relationType cannot just check if it is equal to 'none' or it complains, can fix this later\n const invalidTypes = [\n this.relationType.LOLLIPOP,\n this.relationType.AGGREGATION,\n this.relationType.COMPOSITION,\n this.relationType.DEPENDENCY,\n this.relationType.EXTENSION,\n ];\n\n if (\n classRelation.relation.type1 === this.relationType.LOLLIPOP &&\n !invalidTypes.includes(classRelation.relation.type2)\n ) {\n this.addClass(classRelation.id2);\n this.addInterface(classRelation.id1, classRelation.id2);\n classRelation.id1 = `interface${this.interfaces.length - 1}`;\n } else if (\n classRelation.relation.type2 === this.relationType.LOLLIPOP &&\n !invalidTypes.includes(classRelation.relation.type1)\n ) {\n this.addClass(classRelation.id1);\n this.addInterface(classRelation.id2, classRelation.id1);\n classRelation.id2 = `interface${this.interfaces.length - 1}`;\n } else {\n this.addClass(classRelation.id1);\n this.addClass(classRelation.id2);\n }\n\n classRelation.id1 = this.splitClassNameAndType(classRelation.id1).className;\n classRelation.id2 = this.splitClassNameAndType(classRelation.id2).className;\n\n classRelation.relationTitle1 = common.sanitizeText(\n classRelation.relationTitle1.trim(),\n getConfig()\n );\n\n classRelation.relationTitle2 = common.sanitizeText(\n classRelation.relationTitle2.trim(),\n getConfig()\n );\n\n this.relations.push(classRelation);\n }\n\n /**\n * Adds an annotation to the specified class Annotations mark special properties of the given type\n * (like 'interface' or 'service')\n *\n * @param className - The class name\n * @param annotation - The name of the annotation without any brackets\n * @public\n */\n public addAnnotation(className: string, annotation: string) {\n const validatedClassName = this.splitClassNameAndType(className).className;\n this.classes.get(validatedClassName)!.annotations.push(annotation);\n }\n\n /**\n * Adds a member to the specified class\n *\n * @param className - The class name\n * @param member - The full name of the member. If the member is enclosed in `<>` it is\n * treated as an annotation If the member is ending with a closing bracket ) it is treated as a\n * method Otherwise the member will be treated as a normal property\n * @public\n */\n public addMember(className: string, member: string) {\n this.addClass(className);\n\n const validatedClassName = this.splitClassNameAndType(className).className;\n const theClass = this.classes.get(validatedClassName)!;\n\n if (typeof member === 'string') {\n // Member can contain white spaces, we trim them out\n const memberString = member.trim();\n\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\n // its an annotation\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(')') > 0) {\n //its a method\n theClass.methods.push(new ClassMember(memberString, 'method'));\n } else if (memberString) {\n theClass.members.push(new ClassMember(memberString, 'attribute'));\n }\n }\n }\n\n public addMembers(className: string, members: string[]) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => this.addMember(className, member));\n }\n }\n\n public addNote(text: string, className: string): string {\n const index = this.notes.size;\n const note = {\n id: `note${index}`,\n class: className,\n text: text,\n index: index,\n };\n this.notes.set(note.id, note);\n return note.id;\n }\n\n public cleanupLabel(label: string): string {\n if (label.startsWith(':')) {\n label = label.substring(1);\n }\n return sanitizeText(label.trim());\n }\n\n /**\n * Called by parser when assigning cssClass to a class\n *\n * @param ids - Comma separated list of ids\n * @param className - Class to add\n */\n public setCssClass(ids: string, className: string) {\n ids.split(',').forEach((_id) => {\n let id = _id;\n if (/\\d/.exec(_id[0])) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n const classNode = this.classes.get(id);\n if (classNode) {\n classNode.cssClasses += ' ' + className;\n }\n });\n }\n\n public defineClass(ids: string[], style: string[]) {\n for (const id of ids) {\n let styleClass = this.styleClasses.get(id);\n if (styleClass === undefined) {\n styleClass = { id, styles: [], textStyles: [] };\n this.styleClasses.set(id, styleClass);\n }\n\n if (style) {\n style.forEach((s) => {\n if (/color/.exec(s)) {\n const newStyle = s.replace('fill', 'bgFill'); // .replace('color', 'fill');\n styleClass.textStyles.push(newStyle);\n }\n styleClass.styles.push(s);\n });\n }\n\n this.classes.forEach((value) => {\n if (value.cssClasses.includes(id)) {\n value.styles.push(...style.flatMap((s) => s.split(',')));\n }\n });\n }\n }\n\n /**\n * Called by parser when a tooltip is found, e.g. a clickable element.\n *\n * @param ids - Comma separated list of ids\n * @param tooltip - Tooltip to add\n */\n public setTooltip(ids: string, tooltip?: string) {\n ids.split(',').forEach((id) => {\n if (tooltip !== undefined) {\n this.classes.get(id)!.tooltip = sanitizeText(tooltip);\n }\n });\n }\n\n public getTooltip(id: string, namespace?: string): string | undefined {\n if (namespace && this.namespaces.has(namespace)) {\n return this.namespaces.get(namespace)!.classes.get(id)!.tooltip;\n }\n\n return this.classes.get(id)!.tooltip;\n }\n\n /**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids - Comma separated list of ids\n * @param linkStr - URL to create a link for\n * @param target - Target of the link, _blank by default as originally defined in the svgDraw.js file\n */\n public setLink(ids: string, linkStr: string, target: string) {\n const config = getConfig();\n ids.split(',').forEach((_id) => {\n let id = _id;\n if (/\\d/.exec(_id[0])) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n const theClass = this.classes.get(id);\n if (theClass) {\n theClass.link = utils.formatUrl(linkStr, config);\n if (config.securityLevel === 'sandbox') {\n theClass.linkTarget = '_top';\n } else if (typeof target === 'string') {\n theClass.linkTarget = sanitizeText(target);\n } else {\n theClass.linkTarget = '_blank';\n }\n }\n });\n this.setCssClass(ids, 'clickable');\n }\n\n /**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids - Comma separated list of ids\n * @param functionName - Function to be called on click\n * @param functionArgs - Function args the function should be called with\n */\n public setClickEvent(ids: string, functionName: string, functionArgs: string) {\n ids.split(',').forEach((id) => {\n this.setClickFunc(id, functionName, functionArgs);\n this.classes.get(id)!.haveCallback = true;\n });\n this.setCssClass(ids, 'clickable');\n }\n\n private setClickFunc(_domId: string, functionName: string, functionArgs: string) {\n const domId = common.sanitizeText(_domId, getConfig());\n const config = getConfig();\n if (config.securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n\n const id = domId;\n if (this.classes.has(id)) {\n const elemId = this.lookUpDomId(id);\n let argList: string[] = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.startsWith('\"') && item.endsWith('\"')) {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(elemId);\n }\n\n this.functions.push(() => {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n () => {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n }\n\n public bindFunctions(element: Element) {\n this.functions.forEach((fun) => {\n fun(element);\n });\n }\n\n public readonly lineType = {\n LINE: 0,\n DOTTED_LINE: 1,\n };\n\n public readonly relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n LOLLIPOP: 4,\n };\n\n // Utility function to escape HTML meta-characters\n private escapeHtml(str: string): string {\n return str\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n\n private readonly setupToolTips = (element: Element) => {\n const tooltipElem = createTooltip();\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g').filter(function () {\n return select(this).attr('title') !== null;\n });\n\n nodes\n .on('mouseover', (event: MouseEvent) => {\n const el = select(event.currentTarget as HTMLElement);\n const title = el.attr('title');\n if (!title) {\n return;\n }\n\n const rect = (event.currentTarget as Element).getBoundingClientRect();\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem\n .html(DOMPurify.sanitize(title))\n .style('left', `${window.scrollX + rect.left + rect.width / 2}px`)\n .style('top', `${window.scrollY + rect.bottom + 4}px`);\n\n el.classed('hover', true);\n })\n .on('mouseout', (event: MouseEvent) => {\n tooltipElem.transition().duration(500).style('opacity', 0);\n select(event.currentTarget as HTMLElement).classed('hover', false);\n });\n };\n\n private direction = 'TB';\n public getDirection() {\n return this.direction;\n }\n public setDirection(dir: string) {\n this.direction = dir;\n }\n\n /**\n * Function called by parser when a namespace definition has been found.\n *\n * @param id - ID of the namespace to add\n * @public\n */\n public addNamespace(id: string) {\n if (this.namespaces.has(id)) {\n return;\n }\n\n this.namespaces.set(id, {\n id: id,\n classes: new Map(),\n notes: new Map(),\n children: new Map(),\n domId: MERMAID_DOM_ID_PREFIX + id + '-' + this.namespaceCounter,\n });\n\n this.namespaceCounter++;\n }\n\n public getNamespace(name: string): NamespaceNode {\n return this.namespaces.get(name)!;\n }\n\n public getNamespaces(): NamespaceMap {\n return this.namespaces;\n }\n\n /**\n * Function called by parser when a namespace definition has been found.\n *\n * @param id - ID of the namespace to add\n * @param classNames - IDs of the class to add\n * @param noteNames - IDs of the notes to add\n * @public\n */\n public addClassesToNamespace(id: string, classNames: string[], noteNames: string[]) {\n if (!this.namespaces.has(id)) {\n return;\n }\n for (const name of classNames) {\n const { className } = this.splitClassNameAndType(name);\n const classNode = this.getClass(className);\n classNode.parent = id;\n this.namespaces.get(id)!.classes.set(className, classNode);\n }\n for (const noteName of noteNames) {\n const noteNode = this.getNote(noteName);\n noteNode.parent = id;\n this.namespaces.get(id)!.notes.set(noteName, noteNode);\n }\n }\n\n public setCssStyle(id: string, styles: string[]) {\n const thisClass = this.classes.get(id);\n if (!styles || !thisClass) {\n return;\n }\n for (const s of styles) {\n if (s.includes(',')) {\n thisClass.styles.push(...s.split(','));\n } else {\n thisClass.styles.push(s);\n }\n }\n }\n\n /**\n * Gets the arrow marker for a type index\n *\n * @param type - The type to look for\n * @returns The arrow marker\n */\n private getArrowMarker(type: number) {\n let marker;\n switch (type) {\n case 0:\n marker = 'aggregation';\n break;\n case 1:\n marker = 'extension';\n break;\n case 2:\n marker = 'composition';\n break;\n case 3:\n marker = 'dependency';\n break;\n case 4:\n marker = 'lollipop';\n break;\n default:\n marker = 'none';\n }\n return marker;\n }\n\n public getData() {\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n const config = getConfig();\n\n for (const namespace of this.namespaces.values()) {\n const node: Node = {\n id: namespace.id,\n label: namespace.id,\n isGroup: true,\n padding: config.class!.padding ?? 16,\n // parent node must be one of [rect, roundedWithTitle, noteGroup, divider]\n shape: 'rect',\n cssStyles: [],\n look: config.look,\n };\n nodes.push(node);\n }\n\n for (const classNode of this.classes.values()) {\n const node: Node = {\n ...classNode,\n type: undefined,\n isGroup: false,\n parentId: classNode.parent,\n look: config.look,\n };\n nodes.push(node);\n }\n\n for (const note of this.notes.values()) {\n const noteNode: Node = {\n id: note.id,\n label: note.text,\n isGroup: false,\n shape: 'note',\n padding: config.class!.padding ?? 6,\n cssStyles: [\n 'text-align: left',\n 'white-space: nowrap',\n `fill: ${config.themeVariables.noteBkgColor}`,\n `stroke: ${config.themeVariables.noteBorderColor}`,\n ],\n look: config.look,\n parentId: note.parent,\n labelType: 'markdown',\n };\n nodes.push(noteNode);\n\n const noteClassId = this.classes.get(note.class)?.id;\n\n if (noteClassId) {\n const edge: Edge = {\n id: `edgeNote${note.index}`,\n start: note.id,\n end: noteClassId,\n type: 'normal',\n thickness: 'normal',\n classes: 'relation',\n arrowTypeStart: 'none',\n arrowTypeEnd: 'none',\n arrowheadStyle: '',\n labelStyle: [''],\n style: ['fill: none'],\n pattern: 'dotted',\n look: config.look,\n };\n edges.push(edge);\n }\n }\n\n for (const _interface of this.interfaces) {\n const interfaceNode: Node = {\n id: _interface.id,\n label: _interface.label,\n isGroup: false,\n shape: 'rect',\n cssStyles: ['opacity: 0;'],\n look: config.look,\n };\n nodes.push(interfaceNode);\n }\n\n let cnt = 0;\n for (const classRelation of this.relations) {\n cnt++;\n const edge: Edge = {\n id: getEdgeId(classRelation.id1, classRelation.id2, {\n prefix: 'id',\n counter: cnt,\n }),\n start: classRelation.id1,\n end: classRelation.id2,\n type: 'normal',\n label: classRelation.title,\n labelpos: 'c',\n thickness: 'normal',\n classes: 'relation',\n arrowTypeStart: this.getArrowMarker(classRelation.relation.type1),\n arrowTypeEnd: this.getArrowMarker(classRelation.relation.type2),\n startLabelRight:\n classRelation.relationTitle1 === 'none' ? '' : classRelation.relationTitle1,\n endLabelLeft: classRelation.relationTitle2 === 'none' ? '' : classRelation.relationTitle2,\n arrowheadStyle: '',\n labelStyle: ['display: inline-block'],\n style: classRelation.style || '',\n pattern: classRelation.relation.lineType == 1 ? 'dashed' : 'solid',\n look: config.look,\n labelType: 'markdown',\n };\n edges.push(edge);\n }\n\n return { nodes, edges, other: {}, config, direction: this.getDirection() };\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setAccDescription = setAccDescription;\n public getAccDescription = getAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getConfig = () => getConfig().class;\n}\n", "import { getIconStyles } from '../globalStyles.js';\n\nconst getStyles = (options) =>\n `g.classGroup text {\n fill: ${options.nodeBorder || options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span {\n color: ${options.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span {\n color: ${options.titleColor};\n }\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n\n.labelBkg {\n background: ${options.mainBkg};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n ${getIconStyles()}\n`;\n\nexport default getStyles;\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\n\n/**\n * Get the direction from the statement items.\n * Look through all of the documents (docs) in the parsedItems\n * Because is a _document_ direction, the default direction is not necessarily the same as the overall default _diagram_ direction.\n * @param parsedItem - the parsed statement item to look through\n * @param defaultDir - the direction to use if none is found\n * @returns The direction to use\n */\nexport const getDir = (parsedItem: any, defaultDir = 'TB') => {\n if (!parsedItem.doc) {\n return defaultDir;\n }\n\n let dir = defaultDir;\n\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === 'dir') {\n dir = parsedItemDoc.value;\n }\n }\n\n return dir;\n};\n\nexport const getClasses = function (\n text: string,\n diagramObj: any\n): Map {\n return diagramObj.db.getClasses();\n};\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing class diagram (v3)', id);\n const { securityLevel, state: conf, layout } = getConfig();\n // Extracting the data from the parsed structure into a more usable form\n // Not related to the refactoring, but this is the first step in the rendering process\n // diag.db.extract(diag.db.getRootDocV2());\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n const data4Layout = diag.db.getData() as LayoutData;\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, securityLevel);\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n data4Layout.markers = ['aggregation', 'extension', 'composition', 'dependency', 'lollipop'];\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n const padding = 8;\n utils.insertTitle(\n svg,\n 'classDiagramTitleText',\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n\n setupViewPortForSVG(svg, padding, 'classDiagram', conf?.useMaxWidth ?? true);\n};\n\nexport default {\n getClasses,\n draw,\n getDir,\n};\n"], - "mappings": "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,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC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G,EAAE,EAAE,UAAY,EAAK,EAAE,UAAY,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,aAAa,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,MAAQ,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,oBAAsB,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,UAAY,CAAC,MAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,UAAY,CAAC,MAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,cAAgB,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,cAAgB,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,KAAO,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,OAAS,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,QAAU,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,SAAW,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,OAAS,CAAC,MAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,QAAU,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "classDiagram_default", "parser", "visibilityValues", "ClassMember", "__name", "input", "memberType", "sanitizedInput", "sanitizeText", "getConfig", "displayText", "parseGenericTypes", "cssStyle", "potentialClassifier", "match", "detectedVisibility", "lastChar", "length", "firstChar", "combinedText", "MERMAID_DOM_ID_PREFIX", "classCounter", "sanitizeText", "__name", "txt", "common_default", "getConfig", "ClassDB", "element", "tooltipElem", "createTooltip", "select_default", "event", "el", "title", "rect", "purify", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "_id", "id", "genericType", "className", "split", "label", "type", "name", "classId", "classInterface", "clear", "key", "classRelation", "log", "invalidTypes", "annotation", "validatedClassName", "member", "theClass", "memberString", "ClassMember", "members", "text", "index", "note", "ids", "classNode", "style", "styleClass", "s", "newStyle", "value", "tooltip", "namespace", "linkStr", "target", "config", "utils_default", "functionName", "functionArgs", "_domId", "domId", "elemId", "argList", "i", "item", "elem", "fun", "str", "dir", "classNames", "noteNames", "noteName", "noteNode", "styles", "thisClass", "marker", "nodes", "edges", "node", "noteClassId", "edge", "_interface", "interfaceNode", "cnt", "getEdgeId", "getStyles", "__name", "options", "getIconStyles", "styles_default", "getDir", "__name", "parsedItem", "defaultDir", "dir", "parsedItemDoc", "getClasses", "text", "diagramObj", "draw", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "render", "padding", "utils_default", "setupViewPortForSVG", "classRenderer_v3_unified_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-TJ4WWVTA.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-TJ4WWVTA.mjs deleted file mode 100644 index 41c3704..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-TJ4WWVTA.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import{f as t}from"./chunk-GAX3EE6F.mjs";import{a as n}from"./chunk-VELTKBKT.mjs";var i={},m={info:t(async()=>{let{createInfoServices:e}=await import("./info-3K5VOQVL-GYCQBKJT.mjs"),r=e().Info.parser.LangiumParser;i.info=r},"info"),packet:t(async()=>{let{createPacketServices:e}=await import("./packet-RMMSAZCW-74OXTHQQ.mjs"),r=e().Packet.parser.LangiumParser;i.packet=r},"packet"),pie:t(async()=>{let{createPieServices:e}=await import("./pie-UPGHQEXC-SNR2CZVS.mjs"),r=e().Pie.parser.LangiumParser;i.pie=r},"pie"),architecture:t(async()=>{let{createArchitectureServices:e}=await import("./architecture-PBZL5I3N-X3DJOG6M.mjs"),r=e().Architecture.parser.LangiumParser;i.architecture=r},"architecture"),gitGraph:t(async()=>{let{createGitGraphServices:e}=await import("./gitGraph-HDMCJU4V-C6Y2HLJ7.mjs"),r=e().GitGraph.parser.LangiumParser;i.gitGraph=r},"gitGraph"),radar:t(async()=>{let{createRadarServices:e}=await import("./radar-KQ55EAFF-DTKK6RDY.mjs"),r=e().Radar.parser.LangiumParser;i.radar=r},"radar"),treemap:t(async()=>{let{createTreemapServices:e}=await import("./treemap-KZPCXAKY-RU5UWGQG.mjs"),r=e().Treemap.parser.LangiumParser;i.treemap=r},"treemap")};async function p(e,r){let s=m[e];if(!s)throw new Error(`Unknown diagram type: ${e}`);i[e]||await s();let o=i[e].parse(r);if(o.lexerErrors.length>0||o.parserErrors.length>0)throw new u(o);return o.value}n(p,"parse");t(p,"parse");var u=class extends Error{static{n(this,"MermaidParseError")}constructor(e){let r=e.lexerErrors.map(a=>{let o=a.line!==void 0&&!isNaN(a.line)?a.line:"?",c=a.column!==void 0&&!isNaN(a.column)?a.column:"?";return`Lexer error on line ${o}, column ${c}: ${a.message}`}).join(` -`),s=e.parserErrors.map(a=>{let o=a.token.startLine!==void 0&&!isNaN(a.token.startLine)?a.token.startLine:"?",c=a.token.startColumn!==void 0&&!isNaN(a.token.startColumn)?a.token.startColumn:"?";return`Parse error on line ${o}, column ${c}: ${a.message}`}).join(` -`);super(`Parsing failed: ${r} ${s}`),this.result=e}static{t(this,"MermaidParseError")}};export{p as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-TJ4WWVTA.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-TJ4WWVTA.mjs.map deleted file mode 100644 index d7a4eb1..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-TJ4WWVTA.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../parser/dist/mermaid-parser.core.mjs"], - "sourcesContent": ["import {\n GitGraphModule,\n createGitGraphServices\n} from \"./chunks/mermaid-parser.core/chunk-7E7YKBS2.mjs\";\nimport {\n InfoModule,\n createInfoServices\n} from \"./chunks/mermaid-parser.core/chunk-EGIJ26TM.mjs\";\nimport {\n PacketModule,\n createPacketServices\n} from \"./chunks/mermaid-parser.core/chunk-C72U2L5F.mjs\";\nimport {\n PieModule,\n createPieServices\n} from \"./chunks/mermaid-parser.core/chunk-XIRO2GV7.mjs\";\nimport {\n ArchitectureModule,\n createArchitectureServices\n} from \"./chunks/mermaid-parser.core/chunk-R5LLSJPH.mjs\";\nimport {\n RadarModule,\n createRadarServices\n} from \"./chunks/mermaid-parser.core/chunk-L3YUKLVL.mjs\";\nimport {\n TreemapModule,\n createTreemapServices\n} from \"./chunks/mermaid-parser.core/chunk-OZEHJAEY.mjs\";\nimport {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n Architecture,\n ArchitectureGrammarGeneratedModule,\n Branch,\n Commit,\n CommonTokenBuilder,\n CommonValueConverter,\n GitGraph,\n GitGraphGrammarGeneratedModule,\n Info,\n InfoGrammarGeneratedModule,\n Merge,\n MermaidGeneratedSharedModule,\n Packet,\n PacketBlock,\n PacketGrammarGeneratedModule,\n Pie,\n PieGrammarGeneratedModule,\n PieSection,\n Radar,\n RadarGrammarGeneratedModule,\n Statement,\n Treemap,\n TreemapGrammarGeneratedModule,\n __name,\n isArchitecture,\n isBranch,\n isCommit,\n isGitGraph,\n isInfo,\n isMerge,\n isPacket,\n isPacketBlock,\n isPie,\n isPieSection,\n isTreemap\n} from \"./chunks/mermaid-parser.core/chunk-XZSTWKYB.mjs\";\n\n// src/parse.ts\nvar parsers = {};\nvar initializers = {\n info: /* @__PURE__ */ __name(async () => {\n const { createInfoServices: createInfoServices2 } = await import(\"./chunks/mermaid-parser.core/info-3K5VOQVL.mjs\");\n const parser = createInfoServices2().Info.parser.LangiumParser;\n parsers.info = parser;\n }, \"info\"),\n packet: /* @__PURE__ */ __name(async () => {\n const { createPacketServices: createPacketServices2 } = await import(\"./chunks/mermaid-parser.core/packet-RMMSAZCW.mjs\");\n const parser = createPacketServices2().Packet.parser.LangiumParser;\n parsers.packet = parser;\n }, \"packet\"),\n pie: /* @__PURE__ */ __name(async () => {\n const { createPieServices: createPieServices2 } = await import(\"./chunks/mermaid-parser.core/pie-UPGHQEXC.mjs\");\n const parser = createPieServices2().Pie.parser.LangiumParser;\n parsers.pie = parser;\n }, \"pie\"),\n architecture: /* @__PURE__ */ __name(async () => {\n const { createArchitectureServices: createArchitectureServices2 } = await import(\"./chunks/mermaid-parser.core/architecture-PBZL5I3N.mjs\");\n const parser = createArchitectureServices2().Architecture.parser.LangiumParser;\n parsers.architecture = parser;\n }, \"architecture\"),\n gitGraph: /* @__PURE__ */ __name(async () => {\n const { createGitGraphServices: createGitGraphServices2 } = await import(\"./chunks/mermaid-parser.core/gitGraph-HDMCJU4V.mjs\");\n const parser = createGitGraphServices2().GitGraph.parser.LangiumParser;\n parsers.gitGraph = parser;\n }, \"gitGraph\"),\n radar: /* @__PURE__ */ __name(async () => {\n const { createRadarServices: createRadarServices2 } = await import(\"./chunks/mermaid-parser.core/radar-KQ55EAFF.mjs\");\n const parser = createRadarServices2().Radar.parser.LangiumParser;\n parsers.radar = parser;\n }, \"radar\"),\n treemap: /* @__PURE__ */ __name(async () => {\n const { createTreemapServices: createTreemapServices2 } = await import(\"./chunks/mermaid-parser.core/treemap-KZPCXAKY.mjs\");\n const parser = createTreemapServices2().Treemap.parser.LangiumParser;\n parsers.treemap = parser;\n }, \"treemap\")\n};\nasync function parse(diagramType, text) {\n const initializer = initializers[diagramType];\n if (!initializer) {\n throw new Error(`Unknown diagram type: ${diagramType}`);\n }\n if (!parsers[diagramType]) {\n await initializer();\n }\n const parser = parsers[diagramType];\n const result = parser.parse(text);\n if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) {\n throw new MermaidParseError(result);\n }\n return result.value;\n}\n__name(parse, \"parse\");\nvar MermaidParseError = class extends Error {\n constructor(result) {\n const lexerErrors = result.lexerErrors.map((err) => {\n const line = err.line !== void 0 && !isNaN(err.line) ? err.line : \"?\";\n const column = err.column !== void 0 && !isNaN(err.column) ? err.column : \"?\";\n return `Lexer error on line ${line}, column ${column}: ${err.message}`;\n }).join(\"\\n\");\n const parserErrors = result.parserErrors.map((err) => {\n const line = err.token.startLine !== void 0 && !isNaN(err.token.startLine) ? err.token.startLine : \"?\";\n const column = err.token.startColumn !== void 0 && !isNaN(err.token.startColumn) ? err.token.startColumn : \"?\";\n return `Parse error on line ${line}, column ${column}: ${err.message}`;\n }).join(\"\\n\");\n super(`Parsing failed: ${lexerErrors} ${parserErrors}`);\n this.result = result;\n }\n static {\n __name(this, \"MermaidParseError\");\n }\n};\nexport {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n Architecture,\n ArchitectureGrammarGeneratedModule as ArchitectureGeneratedModule,\n ArchitectureModule,\n Branch,\n Commit,\n CommonTokenBuilder,\n CommonValueConverter,\n GitGraph,\n GitGraphGrammarGeneratedModule as GitGraphGeneratedModule,\n GitGraphModule,\n Info,\n InfoGrammarGeneratedModule as InfoGeneratedModule,\n InfoModule,\n Merge,\n MermaidGeneratedSharedModule,\n MermaidParseError,\n Packet,\n PacketBlock,\n PacketGrammarGeneratedModule as PacketGeneratedModule,\n PacketModule,\n Pie,\n PieGrammarGeneratedModule as PieGeneratedModule,\n PieModule,\n PieSection,\n Radar,\n RadarGrammarGeneratedModule as RadarGeneratedModule,\n RadarModule,\n Statement,\n Treemap,\n TreemapGrammarGeneratedModule as TreemapGeneratedModule,\n TreemapModule,\n createArchitectureServices,\n createGitGraphServices,\n createInfoServices,\n createPacketServices,\n createPieServices,\n createRadarServices,\n createTreemapServices,\n isArchitecture,\n isBranch,\n isCommit,\n isGitGraph,\n isInfo,\n isMerge,\n isPacket,\n isPacketBlock,\n isPie,\n isPieSection,\n isTreemap,\n parse\n};\n"], - "mappings": "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", - "names": ["parsers", "initializers", "__name", "createInfoServices2", "parser", "createPacketServices2", "createPieServices2", "createArchitectureServices2", "createGitGraphServices2", "createRadarServices2", "createTreemapServices2", "parse", "diagramType", "text", "initializer", "result", "MermaidParseError", "lexerErrors", "err", "line", "column", "parserErrors"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-UP6H54XL.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-UP6H54XL.mjs new file mode 100644 index 0000000..3d829ca --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-UP6H54XL.mjs @@ -0,0 +1 @@ +import{a as r,b as l,c as s,d,e as n,g as u,q as i,r as c}from"./chunk-4R4BOZG6.mjs";import{a as o}from"./chunk-AQ6EADP3.mjs";var m=class extends c{static{o(this,"WardleyValueConverter")}static{r(this,"WardleyValueConverter")}runCustomConverter(t,e,a){switch(t.name.toUpperCase()){case"LINK_LABEL":return e.substring(1).trim();default:return}}},v={parser:{ValueConverter:r(()=>new m,"ValueConverter")}};function y(t=n){let e=d(s(t),u),a=d(l({shared:e}),i,v);return e.ServiceRegistry.register(a),{shared:e,Wardley:a}}o(y,"createWardleyServices");r(y,"createWardleyServices");export{v as a,y as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-UP6H54XL.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-UP6H54XL.mjs.map new file mode 100644 index 0000000..9afbaf1 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-UP6H54XL.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-PUPMXCY4.mjs"], + "sourcesContent": ["import {\n AbstractMermaidValueConverter,\n EmptyFileSystem,\n MermaidGeneratedSharedModule,\n WardleyGrammarGeneratedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/wardley/valueConverter.ts\nvar WardleyValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"WardleyValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n switch (rule.name.toUpperCase()) {\n case \"LINK_LABEL\":\n return input.substring(1).trim();\n default:\n return void 0;\n }\n }\n};\n\n// src/language/wardley/module.ts\nvar WardleyModule = {\n parser: {\n ValueConverter: /* @__PURE__ */ __name(() => new WardleyValueConverter(), \"ValueConverter\")\n }\n};\nfunction createWardleyServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Wardley = inject(\n createDefaultCoreModule({ shared }),\n WardleyGrammarGeneratedModule,\n WardleyModule\n );\n shared.ServiceRegistry.register(Wardley);\n return { shared, Wardley };\n}\n__name(createWardleyServices, \"createWardleyServices\");\n\nexport {\n WardleyModule,\n createWardleyServices\n};\n"], + "mappings": "8HAaA,IAAIA,EAAwB,cAAcC,CAA8B,CAbxE,MAawE,CAAAC,EAAA,8BACtE,MAAO,CACLA,EAAO,KAAM,uBAAuB,CACtC,CACA,mBAAmBC,EAAMC,EAAOC,EAAU,CACxC,OAAQF,EAAK,KAAK,YAAY,EAAG,CAC/B,IAAK,aACH,OAAOC,EAAM,UAAU,CAAC,EAAE,KAAK,EACjC,QACE,MACJ,CACF,CACF,EAGIE,EAAgB,CAClB,OAAQ,CACN,eAAgCJ,EAAO,IAAM,IAAIF,EAAyB,gBAAgB,CAC5F,CACF,EACA,SAASO,EAAsBC,EAAUC,EAAiB,CACxD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAUH,EACdI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAO,EAChC,CAAE,OAAAJ,EAAQ,QAAAI,CAAQ,CAC3B,CAZSZ,EAAAK,EAAA,yBAaTL,EAAOK,EAAuB,uBAAuB", + "names": ["WardleyValueConverter", "AbstractMermaidValueConverter", "__name", "rule", "input", "_cstNode", "WardleyModule", "createWardleyServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Wardley", "createDefaultCoreModule", "WardleyGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-UXSXWOXI.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-UXSXWOXI.mjs new file mode 100644 index 0000000..ee21739 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-UXSXWOXI.mjs @@ -0,0 +1 @@ +import{a as e,b as c,c as n,d as a,e as i,g as u,l as d,s as l,t as s}from"./chunk-4R4BOZG6.mjs";import{a as t}from"./chunk-AQ6EADP3.mjs";var m=class extends s{static{t(this,"PacketTokenBuilder")}static{e(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},v={parser:{TokenBuilder:e(()=>new m,"TokenBuilder"),ValueConverter:e(()=>new l,"ValueConverter")}};function p(k=i){let r=a(n(k),u),o=a(c({shared:r}),d,v);return r.ServiceRegistry.register(o),{shared:r,Packet:o}}t(p,"createPacketServices");e(p,"createPacketServices");export{v as a,p as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-UXSXWOXI.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-UXSXWOXI.mjs.map new file mode 100644 index 0000000..6a85f82 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-UXSXWOXI.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-MPE355IW.mjs"], + "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n EmptyFileSystem,\n MermaidGeneratedSharedModule,\n PacketGrammarGeneratedModule,\n __name,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject,\n lib_exports\n} from \"./chunk-NNHCCRGN.mjs\";\n\n// src/language/packet/tokenBuilder.ts\nvar PacketTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"PacketTokenBuilder\");\n }\n constructor() {\n super([\"packet\"]);\n }\n};\n\n// src/language/packet/module.ts\nvar PacketModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new PacketTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createPacketServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Packet = inject(\n createDefaultCoreModule({ shared }),\n PacketGrammarGeneratedModule,\n PacketModule\n );\n shared.ServiceRegistry.register(Packet);\n return { shared, Packet };\n}\n__name(createPacketServices, \"createPacketServices\");\n\nexport {\n PacketModule,\n createPacketServices\n};\n"], + "mappings": "0IAcA,IAAIA,EAAqB,cAAcC,CAA4B,CAdnE,MAcmE,CAAAC,EAAA,2BACjE,MAAO,CACLA,EAAO,KAAM,oBAAoB,CACnC,CACA,aAAc,CACZ,MAAM,CAAC,QAAQ,CAAC,CAClB,CACF,EAGIC,EAAe,CACjB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAsB,cAAc,EACnF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAqBC,EAAUC,EAAiB,CACvD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAASH,EACbI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAM,EAC/B,CAAE,OAAAJ,EAAQ,OAAAI,CAAO,CAC1B,CAZSV,EAAAG,EAAA,wBAaTH,EAAOG,EAAsB,sBAAsB", + "names": ["PacketTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "PacketModule", "CommonValueConverter", "createPacketServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Packet", "createDefaultCoreModule", "PacketGrammarGeneratedModule"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-XODN6PIJ.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-UY5QBCOK.mjs similarity index 86% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-XODN6PIJ.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-UY5QBCOK.mjs index 76ccb14..6b71d3f 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-XODN6PIJ.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-UY5QBCOK.mjs @@ -1 +1 @@ -import{k as p}from"./chunk-Q3CC2MQB.mjs";import{Y as s,j as m}from"./chunk-3UWU4A3N.mjs";import{a as o}from"./chunk-VELTKBKT.mjs";var d=o(({flowchart:n})=>{let i=n?.subGraphTitleMargin?.top??0,e=n?.subGraphTitleMargin?.bottom??0,r=i+e;return{subGraphTitleTopMargin:i,subGraphTitleBottomMargin:e,subGraphTitleTotalMargin:r}},"getSubGraphTitleMargins");async function G(n,i){let e=n.getElementsByTagName("img");if(!e||e.length===0)return;let r=i.replace(/]*>/g,"").trim()==="";await Promise.all([...e].map(t=>new Promise(g=>{function a(){if(t.style.display="flex",t.style.flexDirection="column",r){let c=s().fontSize?s().fontSize:window.getComputedStyle(document.body).fontSize,u=5,[f=m.fontSize]=p(c),l=f*u+"px";t.style.minWidth=l,t.style.maxWidth=l}else t.style.width="100%";g(t)}o(a,"setupImage"),setTimeout(()=>{t.complete&&a()}),t.addEventListener("error",a),t.addEventListener("load",a)})))}o(G,"configureLabelImages");export{G as a,d as b}; +import{n as p}from"./chunk-QA3QBVWF.mjs";import{_ as s,j as m}from"./chunk-67TQ5CYL.mjs";import{a as o}from"./chunk-AQ6EADP3.mjs";var d=o(({flowchart:n})=>{let i=n?.subGraphTitleMargin?.top??0,e=n?.subGraphTitleMargin?.bottom??0,r=i+e;return{subGraphTitleTopMargin:i,subGraphTitleBottomMargin:e,subGraphTitleTotalMargin:r}},"getSubGraphTitleMargins");async function G(n,i){let e=n.getElementsByTagName("img");if(!e||e.length===0)return;let r=i.replace(/]*>/g,"").trim()==="";await Promise.all([...e].map(t=>new Promise(g=>{function a(){if(t.style.display="flex",t.style.flexDirection="column",r){let c=s().fontSize?s().fontSize:window.getComputedStyle(document.body).fontSize,u=5,[f=m.fontSize]=p(c),l=f*u+"px";t.style.minWidth=l,t.style.maxWidth=l}else t.style.width="100%";g(t)}o(a,"setupImage"),setTimeout(()=>{t.complete&&a()}),t.addEventListener("error",a),t.addEventListener("load",a)})))}o(G,"configureLabelImages");export{G as a,d as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-XODN6PIJ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-UY5QBCOK.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-XODN6PIJ.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-UY5QBCOK.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-VELTKBKT.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-VELTKBKT.mjs deleted file mode 100644 index 34f8f24..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-VELTKBKT.mjs +++ /dev/null @@ -1 +0,0 @@ -var h=Object.create;var e=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var m=(a,b)=>e(a,"name",{value:b,configurable:!0});var n=(a,b)=>()=>(a&&(b=a(a=0)),b);var o=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),p=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0})},f=(a,b,c,g)=>{if(b&&typeof b=="object"||typeof b=="function")for(let d of j(b))!l.call(a,d)&&d!==c&&e(a,d,{get:()=>b[d],enumerable:!(g=i(b,d))||g.enumerable});return a},q=(a,b,c)=>(f(a,b,"default"),c&&f(c,b,"default")),r=(a,b,c)=>(c=a!=null?h(k(a)):{},f(b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c,a)),s=a=>f(e({},"__esModule",{value:!0}),a);export{m as a,n as b,o as c,p as d,q as e,r as f,s as g}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-VU6ZFW4Y.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-VU6ZFW4Y.mjs new file mode 100644 index 0000000..98a262d --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-VU6ZFW4Y.mjs @@ -0,0 +1 @@ +import{b as c,c as y,d as u,e as h}from"./chunk-7J6CGLKN.mjs";import{a as f,e as g,g as L}from"./chunk-KGFNY3KK.mjs";import{e as m}from"./chunk-QA3QBVWF.mjs";import{G as l,t as p}from"./chunk-67TQ5CYL.mjs";import{b as i}from"./chunk-7W6UQGC5.mjs";import{a as o}from"./chunk-AQ6EADP3.mjs";var w={common:l,getConfig:p,insertCluster:g,insertEdge:u,insertEdgeLabel:c,insertMarkers:h,insertNode:L,interpolateToCurve:m,labelHelper:f,log:i,positionEdgeLabel:y};var a={},H=o(t=>{for(let r of t)a[r.name]=r},"registerLayoutLoaders"),S=o(()=>{H([{name:"dagre",loader:o(async()=>await import("./dagre-ND4H6XIP.mjs"),"loader")},{name:"cose-bilkent",loader:o(async()=>await import("./cose-bilkent-UX7MHV2Q.mjs"),"loader")}])},"registerDefaultLayoutLoaders");S();var P=o(async(t,r)=>{if(!(t.layoutAlgorithm in a))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);if(t.diagramId)for(let e of t.nodes){let A=e.domId||e.id;e.domId=`${t.diagramId}-${A}`}let n=a[t.layoutAlgorithm],x=await n.loader(),{theme:d,themeVariables:D}=t.config,{useGradient:F,gradientStart:$,gradientStop:I}=D,s=r.attr("id");if(r.append("defs").append("filter").attr("id",`${s}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${d?.includes("dark")?"#FFFFFF":"#000000"}`),r.append("defs").append("filter").attr("id",`${s}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${d?.includes("dark")?"#FFFFFF":"#000000"}`),F){let e=r.append("linearGradient").attr("id",r.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");e.append("svg:stop").attr("offset","0%").attr("stop-color",$).attr("stop-opacity",1),e.append("svg:stop").attr("offset","100%").attr("stop-color",I).attr("stop-opacity",1)}return x.render(t,r,w,{algorithm:n.algorithm})},"render"),M=o((t="",{fallback:r="dagre"}={})=>{if(t in a)return t;if(r in a)return i.warn(`Layout algorithm ${t} is not registered. Using ${r} as fallback.`),r;throw new Error(`Both layout algorithms ${t} and ${r} are not registered.`)},"getRegisteredLayoutAlgorithm");export{H as a,P as b,M as c}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-VU6ZFW4Y.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-VU6ZFW4Y.mjs.map new file mode 100644 index 0000000..c7d6d48 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-VU6ZFW4Y.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/internals.ts", "../../../src/rendering-util/render.ts"], + "sourcesContent": ["import { getConfig } from './config.js';\nimport common from './diagrams/common/common.js';\nimport { log } from './logger.js';\nimport { insertCluster } from './rendering-util/rendering-elements/clusters.js';\nimport {\n insertEdge,\n insertEdgeLabel,\n positionEdgeLabel,\n} from './rendering-util/rendering-elements/edges.js';\nimport insertMarkers from './rendering-util/rendering-elements/markers.js';\nimport { insertNode } from './rendering-util/rendering-elements/nodes.js';\nimport { labelHelper } from './rendering-util/rendering-elements/shapes/util.js';\nimport { interpolateToCurve } from './utils.js';\n\n/**\n * Internal helpers for mermaid\n * @deprecated - This should not be used by external packages, as the definitions will change without notice.\n */\nexport const internalHelpers = {\n common,\n getConfig,\n insertCluster,\n insertEdge,\n insertEdgeLabel,\n insertMarkers,\n insertNode,\n interpolateToCurve,\n labelHelper,\n log,\n positionEdgeLabel,\n};\n\nexport type InternalHelpers = typeof internalHelpers;\n", "import type { SVG } from '../diagram-api/types.js';\nimport type { InternalHelpers } from '../internals.js';\nimport { internalHelpers } from '../internals.js';\nimport { log } from '../logger.js';\nimport type { LayoutData } from './types.js';\n\n// console.log('MUST be removed, this only for keeping dev server working');\n// import tmp from './layout-algorithms/dagre/index.js';\n\nexport interface RenderOptions {\n algorithm?: string;\n}\n\nexport interface LayoutAlgorithm {\n render(\n layoutData: LayoutData,\n svg: SVG,\n helpers: InternalHelpers,\n options?: RenderOptions\n ): Promise;\n}\n\nexport type LayoutLoader = () => Promise;\nexport interface LayoutLoaderDefinition {\n name: string;\n loader: LayoutLoader;\n algorithm?: string;\n}\n\nconst layoutAlgorithms: Record = {};\n\nexport const registerLayoutLoaders = (loaders: LayoutLoaderDefinition[]) => {\n for (const loader of loaders) {\n layoutAlgorithms[loader.name] = loader;\n }\n};\n\n// TODO: Should we load dagre without lazy loading?\nconst registerDefaultLayoutLoaders = () => {\n registerLayoutLoaders([\n {\n name: 'dagre',\n loader: async () => await import('./layout-algorithms/dagre/index.js'),\n },\n ...(injected.includeLargeFeatures\n ? [\n {\n name: 'cose-bilkent',\n loader: async () => await import('./layout-algorithms/cose-bilkent/index.js'),\n },\n ]\n : []),\n ]);\n};\n\nregisterDefaultLayoutLoaders();\n\nexport const render = async (data4Layout: LayoutData, svg: SVG) => {\n if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) {\n throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`);\n }\n\n // Prefix all node domIds with the diagram's SVG element ID to ensure uniqueness\n // across multiple diagrams on the same page.\n if (data4Layout.diagramId) {\n for (const node of data4Layout.nodes) {\n const originalDomId = node.domId || node.id;\n node.domId = `${data4Layout.diagramId}-${originalDomId}`;\n }\n }\n\n const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm];\n const layoutRenderer = await layoutDefinition.loader();\n\n const { theme, themeVariables } = data4Layout.config;\n const { useGradient, gradientStart, gradientStop } = themeVariables;\n\n const svgId = svg.attr('id');\n\n svg\n .append('defs')\n .append('filter')\n .attr('id', `${svgId}-drop-shadow`)\n .attr('height', '130%')\n .attr('width', '130%')\n .append('feDropShadow')\n .attr('dx', '4')\n .attr('dy', '4')\n .attr('stdDeviation', 0)\n .attr('flood-opacity', '0.06')\n .attr('flood-color', `${theme?.includes('dark') ? '#FFFFFF' : '#000000'}`);\n\n svg\n .append('defs')\n .append('filter')\n .attr('id', `${svgId}-drop-shadow-small`)\n .attr('height', '150%')\n .attr('width', '150%')\n .append('feDropShadow')\n .attr('dx', '2')\n .attr('dy', '2')\n .attr('stdDeviation', 0)\n .attr('flood-opacity', '0.06')\n .attr('flood-color', `${theme?.includes('dark') ? '#FFFFFF' : '#000000'}`);\n\n if (useGradient) {\n const gradient = svg\n .append('linearGradient')\n .attr('id', svg.attr('id') + '-gradient')\n .attr('gradientUnits', 'objectBoundingBox')\n .attr('x1', '0%')\n .attr('y1', '0%')\n .attr('x2', '100%')\n .attr('y2', '0%');\n\n gradient\n .append('svg:stop')\n .attr('offset', '0%')\n .attr('stop-color', gradientStart)\n .attr('stop-opacity', 1);\n\n gradient\n .append('svg:stop')\n .attr('offset', '100%')\n .attr('stop-color', gradientStop)\n .attr('stop-opacity', 1);\n }\n\n return layoutRenderer.render(data4Layout, svg, internalHelpers, {\n algorithm: layoutDefinition.algorithm,\n });\n};\n\n/**\n * Get the registered layout algorithm. If the algorithm is not registered, use the fallback algorithm.\n */\nexport const getRegisteredLayoutAlgorithm = (algorithm = '', { fallback = 'dagre' } = {}) => {\n if (algorithm in layoutAlgorithms) {\n return algorithm;\n }\n if (fallback in layoutAlgorithms) {\n log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`);\n return fallback;\n }\n throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`);\n};\n"], + "mappings": "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", + "names": ["internalHelpers", "common_default", "getConfig", "insertCluster", "insertEdge", "insertEdgeLabel", "markers_default", "insertNode", "interpolateToCurve", "labelHelper", "log", "positionEdgeLabel", "layoutAlgorithms", "registerLayoutLoaders", "__name", "loaders", "loader", "registerDefaultLayoutLoaders", "render", "data4Layout", "svg", "node", "originalDomId", "layoutDefinition", "layoutRenderer", "theme", "themeVariables", "useGradient", "gradientStart", "gradientStop", "svgId", "gradient", "internalHelpers", "getRegisteredLayoutAlgorithm", "algorithm", "fallback", "log"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-W44A43WB.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-W44A43WB.mjs new file mode 100644 index 0000000..8b8f872 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-W44A43WB.mjs @@ -0,0 +1,14 @@ +import{a as o}from"./chunk-AQ6EADP3.mjs";var $a=typeof global=="object"&&global&&global.Object===Object&&global,$r=$a;var Ya=typeof self=="object"&&self&&self.Object===Object&&self,Va=$r||Ya||Function("return this")(),b=Va;var Za=b.Symbol,v=Za;var Kt=Object.prototype,Ja=Kt.hasOwnProperty,Xa=Kt.toString,Nr=v?v.toStringTag:void 0;function Qa(r){var t=Ja.call(r,Nr),e=r[Nr];try{r[Nr]=void 0;var a=!0}catch{}var f=Xa.call(r);return a&&(t?r[Nr]=e:delete r[Nr]),f}o(Qa,"getRawTag");var Wt=Qa;var ka=Object.prototype,rf=ka.toString;function tf(r){return rf.call(r)}o(tf,"objectToString");var Ht=tf;var ef="[object Null]",of="[object Undefined]",zt=v?v.toStringTag:void 0;function af(r){return r==null?r===void 0?of:ef:zt&&zt in Object(r)?Wt(r):Ht(r)}o(af,"baseGetTag");var C=af;function ff(r){return r!=null&&typeof r=="object"}o(ff,"isObjectLike");var _=ff;var nf="[object Symbol]";function sf(r){return typeof r=="symbol"||_(r)&&C(r)==nf}o(sf,"isSymbol");var M=sf;function pf(r,t){for(var e=-1,a=r==null?0:r.length,f=Array(a);++e0){if(++t>=Xf)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}o(rn,"shortOut");var pe=rn;function tn(r){return function(){return r}}o(tn,"constant");var V=tn;var en=(function(){try{var r=j(Object,"defineProperty");return r({},"",{}),r}catch{}})(),hr=en;var on=hr?function(r,t){return hr(r,"toString",{configurable:!0,enumerable:!1,value:V(t),writable:!0})}:E,ue=on;var an=pe(ue),Jr=an;function fn(r,t){for(var e=-1,a=r==null?0:r.length;++e-1}o(mn,"arrayIncludes");var ce=mn;var ln=9007199254740991,dn=/^(?:0|[1-9]\d*)$/;function cn(r,t){var e=typeof r;return t=t??ln,!!t&&(e=="number"||e!="symbol"&&dn.test(r))&&r>-1&&r%1==0&&r-1&&r%1==0&&r<=An}o(Tn,"isLength");var gr=Tn;function wn(r){return r!=null&&gr(r.length)&&!U(r)}o(wn,"isArrayLike");var O=wn;function Sn(r,t,e){if(!g(e))return!1;var a=typeof t;return(a=="number"?O(e)&&Z(t,e.length):a=="string"&&t in e)?R(e[t],r):!1}o(Sn,"isIterateeCall");var q=Sn;function Pn(r){return Q(function(t,e){var a=-1,f=e.length,n=f>1?e[f-1]:void 0,i=f>2?e[2]:void 0;for(n=r.length>3&&typeof n=="function"?(f--,n):void 0,i&&q(e[0],e[1],i)&&(n=f<3?void 0:n,f=1),t=Object(t);++a-1}o(Ji,"listCacheHas");var Be=Ji;function Xi(r,t){var e=this.__data__,a=er(e,r);return a<0?(++this.size,e.push([r,t])):e[a][1]=t,this}o(Xi,"listCacheSet");var De=Xi;function vr(r){var t=-1,e=r==null?0:r.length;for(this.clear();++t0&&e(s)?t>1?Xe(s,t-1,e,a,f):Ar(f,s):a||(f[f.length]=s)}return f}o(Xe,"baseFlatten");var Tr=Xe;function _s(r){var t=r==null?0:r.length;return t?Tr(r,1):[]}o(_s,"flatten");var Mt=_s;function vs(r){return Jr(kr(r,void 0,Mt),r+"")}o(vs,"flatRest");var Qe=vs;var Os=tt(Object.getPrototypeOf,Object),wr=Os;var As="[object Object]",Ts=Function.prototype,ws=Object.prototype,ke=Ts.toString,Ss=ws.hasOwnProperty,Ps=ke.call(Object);function Cs(r){if(!_(r)||C(r)!=As)return!1;var t=wr(r);if(t===null)return!0;var e=Ss.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&ke.call(e)==Ps}o(Cs,"isPlainObject");var ro=Cs;var Is="\\ud800-\\udfff",Es="\\u0300-\\u036f",js="\\ufe20-\\ufe2f",Ls="\\u20d0-\\u20ff",Ms=Es+js+Ls,Fs="\\ufe0e\\ufe0f",Rs="\\u200d",Ns=RegExp("["+Rs+Is+Ms+Fs+"]");function Bs(r){return Ns.test(r)}o(Bs,"hasUnicode");var to=Bs;function Ds(r,t,e,a){var f=-1,n=r==null?0:r.length;for(a&&n&&(e=r[++f]);++fs))return!1;var u=n.get(r),m=n.get(t);if(u&&m)return u==t&&m==r;var d=-1,c=!0,w=e&Du?new xt:void 0;for(n.set(r,t),n.set(t,r);++d2?t[2]:void 0;for(f&&q(t[0],t[1],f)&&(a=1);++e-1?f[n?t[i]:i]:void 0}}o(Vm,"createFind");var ca=Vm;var Zm=Math.max;function Jm(r,t,e){var a=r==null?0:r.length;if(!a)return-1;var f=e==null?0:re(e);return f<0&&(f=Zm(a+f,0)),Qr(r,S(t,3),f)}o(Jm,"findIndex");var xa=Jm;var Xm=ca(xa),Qm=Xm;function km(r,t){var e=-1,a=O(r)?Array(r.length):[];return pr(r,function(f,n,i){a[++e]=t(f,n,i)}),a}o(km,"baseMap");var St=km;function rl(r,t){var e=l(r)?G:St;return e(r,S(t,3))}o(rl,"map");var tl=rl;function el(r,t){return r==null?r:jr(r,Mr(t),L)}o(el,"forIn");var ol=el;function al(r,t){return r&&Lr(r,Mr(t))}o(al,"forOwn");var fl=al;function nl(r,t){return r>t}o(nl,"baseGt");var ha=nl;var il=Object.prototype,sl=il.hasOwnProperty;function pl(r,t){return r!=null&&sl.call(r,t)}o(pl,"baseHas");var ga=pl;function ul(r,t){return r!=null&&Ot(r,t,ga)}o(ul,"has");var ml=ul;var ll="[object String]";function dl(r){return typeof r=="string"||!l(r)&&_(r)&&C(r)==ll}o(dl,"isString");var ba=dl;function cl(r,t){return G(t,function(e){return r[e]})}o(cl,"baseValues");var ya=cl;function xl(r){return r==null?[]:ya(r,y(r))}o(xl,"values");var Kr=xl;var hl="[object Map]",gl="[object Set]",bl=Object.prototype,yl=bl.hasOwnProperty;function _l(r){if(r==null)return!0;if(O(r)&&(l(r)||typeof r=="string"||typeof r.splice=="function"||B(r)||tr(r)||N(r)))return!r.length;var t=F(r);if(t==hl||t==gl)return!r.size;if(k(r))return!br(r).length;for(var e in r)if(yl.call(r,e))return!1;return!0}o(_l,"isEmpty");var Pt=_l;function vl(r){return r===void 0}o(vl,"isUndefined");var ur=vl;function Ol(r,t){return rt||n&&i&&p&&!s&&!u||a&&i&&p||!e&&p||!f)return 1;if(!a&&!n&&!u&&r=s)return p;var u=e[a];return p*(u=="desc"?-1:1)}}return r.index-t.index}o(Dl,"compareMultiple");var Ta=Dl;function Gl(r,t,e){t.length?t=G(t,function(n){return l(n)?function(i){return ir(i,n.length===1?n[0]:n)}:n}):t=[E];var a=-1;t=G(t,rr(S));var f=St(r,function(n,i,s){var p=G(t,function(u){return u(n)});return{criteria:p,index:++a,value:n}});return Oa(f,function(n,i){return Ta(n,i,e)})}o(Gl,"baseOrderBy");var wa=Gl;var Ul=Tt("length"),Sa=Ul;var Ca="\\ud800-\\udfff",Kl="\\u0300-\\u036f",Wl="\\ufe20-\\ufe2f",Hl="\\u20d0-\\u20ff",zl=Kl+Wl+Hl,ql="\\ufe0e\\ufe0f",$l="["+Ca+"]",Rt="["+zl+"]",Nt="\\ud83c[\\udffb-\\udfff]",Yl="(?:"+Rt+"|"+Nt+")",Ia="[^"+Ca+"]",Ea="(?:\\ud83c[\\udde6-\\uddff]){2}",ja="[\\ud800-\\udbff][\\udc00-\\udfff]",Vl="\\u200d",La=Yl+"?",Ma="["+ql+"]?",Zl="(?:"+Vl+"(?:"+[Ia,Ea,ja].join("|")+")"+Ma+La+")*",Jl=Ma+La+Zl,Xl="(?:"+[Ia+Rt+"?",Rt,Ea,ja,$l].join("|")+")",Pa=RegExp(Nt+"(?="+Nt+")|"+Xl+Jl,"g");function Ql(r){for(var t=Pa.lastIndex=0;Pa.test(r);)++t;return t}o(Ql,"unicodeSize");var Fa=Ql;function kl(r){return to(r)?Fa(r):Sa(r)}o(kl,"stringSize");var Ra=kl;function rd(r,t){return va(r,t,function(e,a){return At(r,a)})}o(rd,"basePick");var Na=rd;var td=Qe(function(r,t){return r==null?{}:Na(r,t)}),ed=td;var od=Math.ceil,ad=Math.max;function fd(r,t,e,a){for(var f=-1,n=ad(od((t-r)/(e||1)),0),i=Array(n);n--;)i[a?n:++f]=r,r+=e;return i}o(fd,"baseRange");var Ba=fd;function nd(r){return function(t,e,a){return a&&typeof a!="number"&&q(t,e,a)&&(e=a=void 0),t=xr(t),e===void 0?(e=t,t=0):e=xr(e),a=a===void 0?t1&&q(r,t[0],t[1])?t=[]:e>2&&q(t[0],t[1],t[2])&&(t=[t[0]]),wa(r,Tr(t,1),[])}),hd=xd;var gd=1/0,bd=sr&&1/Er(new sr([,-0]))[1]==gd?function(r){return new sr(r)}:se,Ua=bd;var yd=200;function _d(r,t,e){var a=-1,f=ce,n=r.length,i=!0,s=[],p=s;if(e)i=!1,f=la;else if(n>=yd){var u=t?null:Ua(r);if(u)return Er(u);i=!1,f=ht,p=new xt}else p=t?[]:s;r:for(;++a1?f.setNode(n,e):f.setNode(n)}),this}setNode(t,e){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=cr,this._children[t]={},this._children[cr][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var e=o(a=>this.removeEdge(this._edgeObjs[a]),"removeEdge");delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],D(this.children(t),a=>{this.setParent(a)}),delete this._children[t]),D(y(this._in[t]),e),delete this._in[t],delete this._preds[t],D(y(this._out[t]),e),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(ur(e))e=cr;else{e+="";for(var a=e;!ur(a);a=this.parent(a))if(a===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==cr)return e}}children(t){if(ur(t)&&(t=cr),this._isCompound){var e=this._children[t];if(e)return y(e)}else{if(t===cr)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return y(e)}successors(t){var e=this._sucs[t];if(e)return y(e)}neighbors(t){var e=this.predecessors(t);if(e)return Dt(e,this.successors(t))}isLeaf(t){var e;return this.isDirected()?e=this.successors(t):e=this.neighbors(t),e.length===0}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var a=this;D(this._nodes,function(i,s){t(s)&&e.setNode(s,i)}),D(this._edgeObjs,function(i){e.hasNode(i.v)&&e.hasNode(i.w)&&e.setEdge(i,a.edge(i))});var f={};function n(i){var s=a.parent(i);return s===void 0||e.hasNode(s)?(f[i]=s,s):s in f?f[s]:n(s)}return o(n,"findParent"),this._isCompound&&D(e.nodes(),function(i){e.setParent(i,n(i))}),e}setDefaultEdgeLabel(t){return U(t)||(t=V(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return Kr(this._edgeObjs)}setPath(t,e){var a=this,f=arguments;return Bt(t,function(n,i){return f.length>1?a.setEdge(n,i,e):a.setEdge(n,i),i}),this}setEdge(){var t,e,a,f,n=!1,i=arguments[0];typeof i=="object"&&i!==null&&"v"in i?(t=i.v,e=i.w,a=i.name,arguments.length===2&&(f=arguments[1],n=!0)):(t=i,e=arguments[1],a=arguments[3],arguments.length>2&&(f=arguments[2],n=!0)),t=""+t,e=""+e,ur(a)||(a=""+a);var s=Wr(this._isDirected,t,e,a);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,s))return n&&(this._edgeLabels[s]=f),this;if(!ur(a)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[s]=n?f:this._defaultEdgeLabelFn(t,e,a);var p=Ed(this._isDirected,t,e,a);return t=p.v,e=p.w,Object.freeze(p),this._edgeObjs[s]=p,za(this._preds[e],t),za(this._sucs[t],e),this._in[e][s]=p,this._out[t][s]=p,this._edgeCount++,this}edge(t,e,a){var f=arguments.length===1?Gt(this._isDirected,arguments[0]):Wr(this._isDirected,t,e,a);return this._edgeLabels[f]}hasEdge(t,e,a){var f=arguments.length===1?Gt(this._isDirected,arguments[0]):Wr(this._isDirected,t,e,a);return Object.prototype.hasOwnProperty.call(this._edgeLabels,f)}removeEdge(t,e,a){var f=arguments.length===1?Gt(this._isDirected,arguments[0]):Wr(this._isDirected,t,e,a),n=this._edgeObjs[f];return n&&(t=n.v,e=n.w,delete this._edgeLabels[f],delete this._edgeObjs[f],qa(this._preds[e],t),qa(this._sucs[t],e),delete this._in[e][f],delete this._out[t][f],this._edgeCount--),this}inEdges(t,e){var a=this._in[t];if(a){var f=Kr(a);return e?Fr(f,function(n){return n.v===e}):f}}outEdges(t,e){var a=this._out[t];if(a){var f=Kr(a);return e?Fr(f,function(n){return n.w===e}):f}}nodeEdges(t,e){var a=this.inEdges(t,e);if(a)return a.concat(this.outEdges(t,e))}};Hr.prototype._nodeCount=0;Hr.prototype._edgeCount=0;function za(r,t){r[t]?r[t]++:r[t]=1}o(za,"incrementOrInitEntry");function qa(r,t){--r[t]||delete r[t]}o(qa,"decrementOrRemoveEntry");function Wr(r,t,e,a){var f=""+t,n=""+e;if(!r&&f>n){var i=f;f=n,n=i}return f+Ha+n+Ha+(ur(a)?Id:a)}o(Wr,"edgeArgsToId");function Ed(r,t,e,a){var f=""+t,n=""+e;if(!r&&f>n){var i=f;f=n,n=i}var s={v:f,w:n};return a&&(s.name=a),s}o(Ed,"edgeArgsToObj");function Gt(r,t){return Wr(r,t.v,t.w,t.name)}o(Gt,"edgeObjToId");export{l as a,V as b,Mt as c,Pu as d,ju as e,Lm as f,Rm as g,Hm as h,D as i,Fr as j,Qm as k,tl as l,ol as m,fl as n,ml as o,Kr as p,ur as q,Tl as r,Pl as s,Il as t,jl as u,Ml as v,ed as w,sd as x,Bt as y,cd as z,hd as A,Td as B,Pd as C,Hr as D}; +/*! Bundled license information: + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" --repo lodash/lodash#4.18.1 -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) +*/ diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-W44A43WB.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-W44A43WB.mjs.map new file mode 100644 index 0000000..97f7932 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-W44A43WB.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_trimmedEndIndex.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseTrim.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObject.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toNumber.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toFinite.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toInteger.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/identity.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseCreate.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_apply.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/noop.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_copyArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_shortOut.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/constant.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_defineProperty.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSetToString.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setToString.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayEach.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFindIndex.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNaN.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_strictIndexOf.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIndexOf.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludes.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignValue.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/eq.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_assignValue.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_copyObject.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_overRest.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseRest.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isLength.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isIterateeCall.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createAssigner.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/keys.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeysIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseKeysIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/keysIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isKey.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Map.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/memoize.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_memoizeCapped.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringToPath.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toString.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castPath.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_toKey.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/get.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isFlattenable.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFlatten.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/flatten.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_flatRest.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getPrototype.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isPlainObject.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicode.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayReduce.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseAssign.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cloneBuffer.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_copySymbols.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getSymbolsIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_copySymbolsIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeysIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Set.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_initCloneArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cloneArrayBuffer.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cloneDataView.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cloneRegExp.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cloneSymbol.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cloneTypedArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_initCloneByTag.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_initCloneObject.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseClone.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/clone.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setCacheAdd.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setCacheHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_SetCache.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arraySome.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cacheHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalArrays.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapToArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setToArray.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalByTag.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalObjects.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqualDeep.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqual.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMatch.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isStrictComparable.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getMatchData.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_matchesStrictComparable.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseMatches.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseHasIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasPath.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/hasIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseMatchesProperty.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseProperty.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePropertyDeep.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/property.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIteratee.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createBaseFor.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFor.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseForOwn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createBaseEach.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseEach.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/now.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/defaults.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_assignMergeValue.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArrayLikeObject.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_safeGet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toPlainObject.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseMergeDeep.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseMerge.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludesWith.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/last.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castFunction.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/forEach.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFilter.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/filter.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createFind.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/findIndex.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/find.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseMap.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/map.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/forIn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/forOwn.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGt.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseHas.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/has.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isString.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseValues.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/values.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isEmpty.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isUndefined.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseLt.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/mapValues.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseExtremum.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/max.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/merge.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/min.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/minBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePickBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSortBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_compareAscending.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_compareMultiple.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseOrderBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiSize.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeSize.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringSize.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePick.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/pick.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseRange.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createRange.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/range.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseReduce.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/reduce.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/size.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/sortBy.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createSet.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseUniq.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/union.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/uniqueId.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseZipObject.js", "../../../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/zipObject.js", "../../../../../node_modules/.pnpm/dagre-d3-es@7.0.14/node_modules/dagre-d3-es/src/graphlib/graph.js"], + "sourcesContent": ["/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n", "import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n", "import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n", "import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n", "/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n", "import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n", "import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n", "import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n", "import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n", "import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n", "import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n", "import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n", "import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n", "import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n", "import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n", "import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n", "import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n", "import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n", "import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n", "import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n", "import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n", "import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n", "/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n", "import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n", "import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n", "import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n", "import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n", "import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n", "import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n", "import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n", "import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n", "import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n", "import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n", "import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n", "import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n", "import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n", "import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n", "import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n", "import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nexport default defaults;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n", "import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n", "import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n", "import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n", "import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n", "import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nexport default baseFilter;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n", "import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n", "import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n", "import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n", "import baseFor from './_baseFor.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nexport default forIn;\n", "import baseForOwn from './_baseForOwn.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nexport default forOwn;\n", "/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nexport default baseGt;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n", "import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n", "import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nexport default baseValues;\n", "import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n", "/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nexport default baseLt;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nexport default mapValues;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nexport default baseExtremum;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nexport default max;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nexport default min;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseLt from './_baseLt.js';\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nexport default minBy;\n", "import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nexport default baseSortBy;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nexport default compareAscending;\n", "import compareAscending from './_compareAscending.js';\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nexport default compareMultiple;\n", "import arrayMap from './_arrayMap.js';\nimport baseGet from './_baseGet.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport baseSortBy from './_baseSortBy.js';\nimport baseUnary from './_baseUnary.js';\nimport compareMultiple from './_compareMultiple.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n };\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nexport default baseOrderBy;\n", "import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nexport default unicodeSize;\n", "import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nexport default stringSize;\n", "import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nexport default basePick;\n", "import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n", "import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n", "import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n", "/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nexport default baseReduce;\n", "import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nexport default size;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseOrderBy from './_baseOrderBy.js';\nimport baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nexport default sortBy;\n", "import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n", "import toString from './toString.js';\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nexport default uniqueId;\n", "/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nexport default baseZipObject;\n", "import assignValue from './_assignValue.js';\nimport baseZipObject from './_baseZipObject.js';\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nexport default zipObject;\n", "import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n/**\n * @typedef {string} NodeID ID of a node.\n */\n\n/**\n * @typedef {`${string}${typeof EDGE_KEY_DELIM}${string}${typeof EDGE_KEY_DELIM}${string}`} EdgeID ID of an edge.\n * @internal - All public APIs use {@link EdgeObj} instead to refer to edges.\n */\n\n/**\n * @typedef {object} EdgeObj\n * @property {NodeID} v the id of the source or tail node of an edge\n * @property {NodeID} w the id of the target or head node of an edge\n * @property {string | number} [name] Name of the edge. Needed to uniquely identify\n * multiple edges between the same pair of nodes in a multigraph.\n */\n\n/**\n * @template {unknown} T\n * @typedef {T[] | Record} Collection\n * Lodash object that can be iterated over with `_.each`.\n *\n * Beware, objects with `.length` are treated as arrays, see\n * https://lodash.com/docs/4.17.15#forEach\n */\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n/**\n * @typedef {object} GraphOptions\n * @property {boolean | undefined} [directed] - set to `true` to get a\n * directed graph and `false` to get an undirected graph.\n * An undirected graph does not treat the order of nodes in an edge as\n * significant.\n * In other words, `g.edge(\"a\", \"b\") === g.edge(\"b\", \"a\")` for\n * an undirected graph.\n * Default: `true`\n * @property {boolean | undefined} [multigraph] - set to `true` to allow a\n * graph to have multiple edges between the same pair of nodes.\n * Default: `false`.\n * @property {boolean | undefined} [compound] - set to `true` to allow a\n * graph to have compound nodes - nodes which can be the parent of other\n * nodes.\n * Default: `false`.\n */\n\n/**\n * Graphlib has a single graph type: {@link Graph}. To create a new instance:\n *\n * ```js\n * var g = new Graph();\n * ```\n *\n * By default this will create a directed graph that does not allow multi-edges\n * or compound nodes.\n * The following options can be used when constructing a new graph:\n *\n * * {@link GraphOptions#directed}: set to `true` to get a directed graph and `false` to get an\n * undirected graph.\n * An undirected graph does not treat the order of nodes in an edge as\n * significant. In other words,\n * `g.edge(\"a\", \"b\") === g.edge(\"b\", \"a\")` for an undirected graph.\n * Default: `true`.\n * * {@link GraphOptions#multigraph}: set to `true` to allow a graph to have multiple edges\n * between the same pair of nodes. Default: `false`.\n * * {@link GraphOptions#compound}: set to `true` to allow a graph to have compound nodes -\n * nodes which can be the parent of other nodes. Default: `false`.\n *\n * To set the options, pass in an options object to the `Graph` constructor.\n * For example, to create a directed compound multigraph:\n *\n * ```js\n * var g = new Graph({ directed: true, compound: true, multigraph: true });\n * ```\n *\n * ### Node and Edge Representation\n *\n * In graphlib, a node is represented by a user-supplied String id.\n * All node related functions use this String id as a way to uniquely identify\n * the node. Here is an example of interacting with nodes:\n *\n * ```js\n * var g = new Graph();\n * g.setNode(\"my-id\", \"my-label\");\n * g.node(\"my-id\"); // returns \"my-label\"\n * ```\n *\n * Edges in graphlib are identified by the nodes they connect. For example:\n *\n * ```js\n * var g = new Graph();\n * g.setEdge(\"source\", \"target\", \"my-label\");\n * g.edge(\"source\", \"target\"); // returns \"my-label\"\n * ```\n *\n * However, we need a way to uniquely identify an edge in a single object for\n * various edge queries (e.g. {@link Graph#outEdges}).\n * We use {@link EdgeObj}s for this purpose.\n * They consist of the following properties:\n *\n * * {@link EdgeObj#v}: the id of the source or tail node of an edge\n * * {@link EdgeObj#w}: the id of the target or head node of an edge\n * * {@link EdgeObj#name} (optional): the name that uniquely identifies a multiedge.\n *\n * Any edge function that takes an edge id will also work with an {@link EdgeObj}. For example:\n *\n * ```js\n * var g = new Graph();\n * g.setEdge(\"source\", \"target\", \"my-label\");\n * g.edge({ v: \"source\", w: \"target\" }); // returns \"my-label\"\n * ```\n *\n * ### Multigraphs\n *\n * A [multigraph](https://en.wikipedia.org/wiki/Multigraph) is a graph that can\n * have more than one edge between the same pair of nodes.\n * By default graphlib graphs are not multigraphs, but a multigraph can be\n * constructed by setting the {@link GraphOptions#multigraph} property to true:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * ```\n *\n * With multiple edges between two nodes we need some way to uniquely identify\n * each edge. We call this the {@link EdgeObj#name} property.\n * Here's an example of creating a couple of edges between the same nodes:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * g.setEdge(\"a\", \"b\", \"edge1-label\", \"edge1\");\n * g.setEdge(\"a\", \"b\", \"edge2-label\", \"edge2\");\n * g.edge(\"a\", \"b\", \"edge1\"); // returns \"edge1-label\"\n * g.edge(\"a\", \"b\", \"edge2\"); // returns \"edge2-label\"\n * g.edges(); // returns [{ v: \"a\", w: \"b\", name: \"edge1\" },\n * // { v: \"a\", w: \"b\", name: \"edge2\" }]\n * ```\n *\n * A multigraph still allows an edge with no name to be created:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * g.setEdge(\"a\", \"b\", \"my-label\");\n * g.edge({ v: \"a\", w: \"b\" }); // returns \"my-label\"\n * ```\n *\n * ### Compound Graphs\n *\n * A compound graph is one where a node can be the parent of other nodes.\n * The child nodes form a \"subgraph\".\n * Here's an example of constructing and interacting with a compound graph:\n *\n * ```js\n * var g = new Graph({ compound: true });\n * g.setParent(\"a\", \"parent\");\n * g.setParent(\"b\", \"parent\");\n * g.parent(\"a\"); // returns \"parent\"\n * g.parent(\"b\"); // returns \"parent\"\n * g.parent(\"parent\"); // returns undefined\n * ```\n *\n * ### Default Labels\n *\n * When a node or edge is created without a label, a default label can be assigned.\n * See {@link setDefaultNodeLabel} and {@link setDefaultEdgeLabel}.\n *\n * @template [GraphLabel=any] - Label of the graph.\n * @template [NodeLabel=any] - Label of a node.\n * Even though this is a \"label\", this could be any type that the user requires\n * (and may need to be an object for some layout/ranking algorithms in dagre).\n * @template [EdgeLabel=any] - Label of an edge.\n * Even though this is a \"label\", this could be any type that the user requires,\n * (and may need to be a object for ranking in dagre).\n */\nexport class Graph {\n /**\n * @param {GraphOptions} [opts] - Graph options.\n */\n constructor(opts = {}) {\n /**\n * @type {boolean}\n * @private\n */\n this._isDirected = Object.prototype.hasOwnProperty.call(opts, 'directed')\n ? opts.directed\n : true;\n /**\n * @type {boolean}\n * @private\n */\n this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, 'multigraph')\n ? opts.multigraph\n : false;\n /**\n * @type {boolean}\n * @private\n */\n this._isCompound = Object.prototype.hasOwnProperty.call(opts, 'compound')\n ? opts.compound\n : false;\n\n /**\n * @type {GraphLabel | undefined}\n * Label for the graph itself\n */\n this._label = undefined;\n\n /**\n * Default label to be set when creating a new node.\n *\n * @private\n * @type {(v: NodeID | number) => NodeLabel}\n */\n this._defaultNodeLabelFn = _.constant(undefined);\n\n /**\n * Default label to be set when creating a new edge\n *\n * @private\n * @type {(v: NodeID, w: NodeID, name: string | undefined) => EdgeLabel}\n */\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n /**\n * @type {Record}\n * @private\n *\n * v -> label\n */\n this._nodes = {};\n\n if (this._isCompound) {\n /**\n * @type {Record}\n * @private\n * v -> parent\n */\n this._parent = {};\n\n /**\n * @type {Record>}\n * @private\n * v -> children\n */\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n /**\n * @type {Record>}\n * @private\n * v -> edgeObj\n */\n this._in = {};\n\n /**\n * @type {Record>}\n * @private\n * u -> v -> Number\n */\n this._preds = {};\n\n /**\n * @type {Record>}\n * @private\n * v -> edgeObj\n */\n this._out = {};\n\n /**\n * @type {Record>}\n * @private\n * v -> w -> Number\n */\n this._sucs = {};\n\n /**\n * @type {Record}\n * @private\n * e -> edgeObj\n */\n this._edgeObjs = {};\n\n /**\n * @type {Record}\n * @private\n * e -> label\n */\n this._edgeLabels = {};\n }\n\n /* === Graph functions ========= */\n\n /**\n *\n * @returns {boolean} `true` if the graph is [directed](https://en.wikipedia.org/wiki/Directed_graph).\n * A directed graph treats the order of nodes in an edge as significant whereas an\n * [undirected](https://en.wikipedia.org/wiki/Graph_(mathematics)#Undirected_graph)\n * graph does not.\n * This example demonstrates the difference:\n *\n * @example\n *\n * ```js\n * var directed = new Graph({ directed: true });\n * directed.setEdge(\"a\", \"b\", \"my-label\");\n * directed.edge(\"a\", \"b\"); // returns \"my-label\"\n * directed.edge(\"b\", \"a\"); // returns undefined\n *\n * var undirected = new Graph({ directed: false });\n * undirected.setEdge(\"a\", \"b\", \"my-label\");\n * undirected.edge(\"a\", \"b\"); // returns \"my-label\"\n * undirected.edge(\"b\", \"a\"); // returns \"my-label\"\n * ```\n */\n isDirected() {\n return this._isDirected;\n }\n /**\n * @returns {boolean} `true` if the graph is a multigraph.\n */\n isMultigraph() {\n return this._isMultigraph;\n }\n /**\n * @returns {boolean} `true` if the graph is compound.\n */\n isCompound() {\n return this._isCompound;\n }\n\n /**\n * Sets the label for the graph to `label`.\n *\n * @param {GraphLabel} label - Label for the graph.\n * @returns {this}\n */\n setGraph(label) {\n this._label = label;\n return this;\n }\n\n /**\n * @returns {GraphLabel | undefined} the currently assigned label for the graph.\n * If no label has been assigned, returns `undefined`.\n *\n * @example\n *\n * ```js\n * var g = new Graph();\n * g.graph(); // returns undefined\n * g.setGraph(\"graph-label\");\n * g.graph(); // returns \"graph-label\"\n * ```\n */\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n\n /**\n * Sets a new default value that is assigned to nodes that are created without\n * a label.\n *\n * @param {typeof this._defaultNodeLabelFn | NodeLabel} newDefault - If a function,\n * it is called with the id of the node being created.\n * Otherwise, it is assigned as the label directly.\n * @returns {this}\n */\n setDefaultNodeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n\n /**\n * @returns {number} the number of nodes in the graph.\n */\n nodeCount() {\n return this._nodeCount;\n }\n\n /**\n * @returns {NodeID[]} the ids of the nodes in the graph.\n *\n * @remarks\n * Use {@link node()} to get the label for each node.\n * Takes `O(|V|)` time.\n */\n nodes() {\n return _.keys(this._nodes);\n }\n /**\n * @returns {NodeID[]} those nodes in the graph that have no in-edges.\n * @remarks Takes `O(|V|)` time.\n */\n sources() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._in[v]);\n });\n }\n /**\n * @returns {NodeID[]} those nodes in the graph that have no out-edges.\n * @remarks Takes `O(|V|)` time.\n */\n sinks() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._out[v]);\n });\n }\n\n /**\n * Invokes setNode method for each node in `vs` list.\n *\n * @param {Collection} vs - List of node IDs to create/set.\n * @param {NodeLabel} [value] - If set, update all nodes with this value.\n * @returns {this}\n * @remarks Complexity: O(|names|).\n */\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n\n /**\n * Creates or updates the value for the node `v` in the graph.\n *\n * @param {NodeID | number} v - ID of the node to create/set.\n * @param {NodeLabel} [value] - If supplied, it is set as the value for the node.\n * If not supplied and the node was created by this call then\n * {@link setDefaultNodeLabel} will be used to set the node's value.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n setNode(v, value) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n\n /**\n * Gets the label of node with specified name.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeLabel | undefined} the label assigned to the node with the id `v`\n * if it is in the graph.\n * Otherwise returns `undefined`.\n * @remarks Takes `O(1)` time.\n */\n node(v) {\n return this._nodes[v];\n }\n\n /**\n * Detects whether graph has a node with specified name or not.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {boolean} Returns `true` the graph has a node with the id.\n * @remarks Takes `O(1)` time.\n */\n hasNode(v) {\n return Object.prototype.hasOwnProperty.call(this._nodes, v);\n }\n\n /**\n * Remove the node with the id `v` in the graph or do nothing if the node is\n * not in the graph.\n *\n * If the node was removed this function also removes any incident edges.\n *\n * @param {NodeID | number} v - Node ID to remove.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(|E|)` time.\n */\n removeNode(v) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n var removeEdge = (e) => this.removeEdge(this._edgeObjs[e]);\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), (child) => {\n this.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n\n /**\n * Sets the parent for `v` to `parent` if it is defined or removes the parent\n * for `v` if `parent` is undefined.\n *\n * @param {NodeID | number} v - Node ID to set the parent for.\n * @param {NodeID | number} [parent] - Parent node ID. If not defined, removes the parent.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @throws if the graph is not compound.\n * @throws if setting the parent would create a cycle.\n * @remarks Takes `O(1)` time.\n */\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n // @ts-expect-error -- We coerced parent to a string above\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n\n /**\n * @private\n * @param {NodeID | number} v - Node ID.\n */\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n\n /**\n * Get parent node for node `v`.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID | undefined} the node that is a parent of node `v`\n * or `undefined` if node `v` does not have a parent or is not a member of\n * the graph.\n * Always returns `undefined` for graphs that are not compound.\n * @remarks Takes `O(1)` time.\n */\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n\n /**\n * Gets list of direct children of node v.\n *\n * @param {NodeID | number} [v] - Node ID. If not specified, gets nodes\n * with no parent (top-level nodes).\n * @returns {NodeID[] | undefined} all nodes that are children of node `v` or\n * `undefined` if node `v` is not in the graph.\n * Always returns `[]` for graphs that are not compound.\n * @remarks Takes `O(|V|)` time.\n */\n children(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are predecessors of the\n * specified node or `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link neighbors} instead.\n * Takes `O(|V|)` time.\n */\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are successors of the\n * specified node or `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link neighbors} instead.\n * Takes `O(|V|)` time.\n */\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are predecessors or\n * successors of the specified node\n * or `undefined` if node `v` is not in the graph.\n * @remarks Takes `O(|V|)` time.\n */\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {boolean} True if the node is a leaf (has no successors), false otherwise.\n */\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n\n /**\n * Creates new graph with nodes filtered via `filter`.\n * Edges incident to rejected node\n * are also removed.\n * \n * In case of compound graph, if parent is rejected by `filter`,\n * than all its children are rejected too.\n\n * @param {(v: NodeID) => boolean} filter - Function that returns `true` for nodes to keep.\n * @returns {Graph} A new graph containing only the nodes for which `filter` returns `true`.\n * @remarks Average-case complexity: O(|E|+|V|).\n */\n filterNodes(filter) {\n /**\n * @type {Graph}\n */\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function (e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n\n /* === Edge functions ========== */\n\n /**\n * Sets a new default value that is assigned to edges that are created without\n * a label.\n *\n * @param {typeof this._defaultEdgeLabelFn | EdgeLabel} newDefault - If a function,\n * it is called with the parameters `(v, w, name)`.\n * Otherwise, it is assigned as the label directly.\n * @returns {this}\n */\n setDefaultEdgeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n\n /**\n * @returns {number} the number of edges in the graph.\n * @remarks Complexity: O(1).\n */\n edgeCount() {\n return this._edgeCount;\n }\n\n /**\n * Gets edges of the graph.\n *\n * @returns {EdgeObj[]} the {@link EdgeObj} for each edge in the graph.\n *\n * @remarks\n * In case of compound graph subgraphs are not considered.\n * Use {@link edge()} to get the label for each edge.\n * Takes `O(|E|)` time.\n */\n edges() {\n return _.values(this._edgeObjs);\n }\n\n /**\n * Establish an edges path over the nodes in nodes list.\n *\n * If some edge is already exists, it will update its label, otherwise it will\n * create an edge between pair of nodes with label provided or default label\n * if no label provided.\n *\n * @param {Collection} vs - List of node IDs to create edges between.\n * @param {EdgeLabel} [value] - If set, update all edges with this value.\n * @returns {this}\n * @remarks Complexity: O(|nodes|).\n */\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n\n /**\n * Creates or updates the label for the edge (`v`, `w`) with the optionally\n * supplied `name`.\n *\n * @overload\n * @param {EdgeObj} arg0 - Edge object.\n * @param {EdgeLabel} [value] - If supplied, it is set as the label for the edge.\n * If not supplied and the edge was created by this call then\n * {@link setDefaultEdgeLabel} will be used to assign the edge's label.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n /**\n * Creates or updates the label for the edge (`v`, `w`) with the optionally\n * supplied `name`.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID. Number values will be coerced to strings.\n * @param {NodeID | number} w - Target node ID. Number values will be coerced to strings.\n * @param {EdgeLabel} [value] - If supplied, it is set as the label for the edge.\n * If not supplied and the edge was created by this call then\n * {@link setDefaultEdgeLabel} will be used to assign the edge's label.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!_.isUndefined(name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n\n /**\n * Gets the label for the specified edge.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {EdgeLabel | undefined} the label for the edge (`v`, `w`) if the\n * graph has an edge between `v` and `w` with the optional `name`.\n * Returned `undefined` if there is no such edge in the graph.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n /**\n * Gets the label for the specified edge.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {EdgeLabel | undefined} the label for the edge (`v`, `w`) if the\n * graph has an edge between `v` and `w` with the optional `name`.\n * Returned `undefined` if there is no such edge in the graph.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n\n /**\n * Detects whether the graph contains specified edge or not.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {boolean} `true` if the graph has an edge between `v` and `w`\n * with the optional `name`.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n /**\n * Detects whether the graph contains specified edge or not.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {boolean} `true` if the graph has an edge between `v` and `w`\n * with the optional `name`.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return Object.prototype.hasOwnProperty.call(this._edgeLabels, e);\n }\n\n /**\n * Removes the edge (`v`, `w`) if the graph has an edge between `v` and `w`\n * with the optional `name`. If not this function does nothing.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {this}\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n /**\n * Removes the edge (`v`, `w`) if the graph has an edge between `v` and `w`\n * with the optional `name`. If not this function does nothing.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {this}\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n\n /**\n * @param {NodeID | number} v - Target node ID.\n * @param {NodeID | number} [u] - Optionally filters edges down to just those\n * coming from node `u`.\n * @returns {EdgeObj[] | undefined} all edges that point to the node `v`.\n * Returns `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link nodeEdges} instead.\n * Takes `O(|E|)` time.\n */\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n\n /**\n * @param {NodeID | number} v - Target node ID.\n * @param {NodeID | number} [w] - Optionally filters edges down to just those\n * that point to `w`.\n * @returns {EdgeObj[] | undefined} all edges that point to the node `v`.\n * Returns `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link nodeEdges} instead.\n * Takes `O(|E|)` time.\n */\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n\n /**\n * @param {NodeID | number} v - Target Node ID.\n * @param {NodeID | number} [w] - If set, filters those edges down to just\n * those between nodes `v` and `w` regardless of direction\n * @returns {EdgeObj[] | undefined} all edges to or from node `v` regardless\n * of direction. Returns `undefined` if node `v` is not in the graph.\n * @remarks Takes `O(|E|)` time.\n */\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n/**\n * @param {Record} map - Object mapping node IDs to counts.\n * @param {NodeID | number} k - Node ID.\n */\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\n/**\n * @param {Record} map - Object mapping node IDs to counts.\n * @param {NodeID | number} k - Node ID.\n */\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj['v'] | number} v_ - Source node ID.\n * @param {EdgeObj['w'] | number} w_ - Target node ID.\n * @param {EdgeObj['name']} [name] - Edge name (for multiple edges between the same nodes).\n * @returns {EdgeID} Unique ID for the edge.\n */\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj['v'] | number} v_ - Source node ID.\n * @param {EdgeObj['w'] | number} w_ - Target node ID.\n * @param {EdgeObj['name']} [name] - Edge name (for multiple edges between the same nodes).\n * @returns {EdgeObj}\n */\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj} edgeObj - Edge object.\n * @returns {EdgeID} Unique ID for the edge.\n */\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n"], + "mappings": "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", + "names": ["freeGlobal", "freeGlobal_default", "freeSelf", "root", "freeGlobal_default", "root_default", "Symbol", "root_default", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "Symbol_default", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "__name", "getRawTag_default", "objectProto", "nativeObjectToString", "objectToString", "value", "__name", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag", "Symbol_default", "baseGetTag", "value", "getRawTag_default", "objectToString_default", "__name", "baseGetTag_default", "isObjectLike", "value", "__name", "isObjectLike_default", "symbolTag", "isSymbol", "value", "isObjectLike_default", "baseGetTag_default", "__name", "isSymbol_default", "arrayMap", "array", "iteratee", "index", "length", "result", "__name", "arrayMap_default", "isArray", "isArray_default", "INFINITY", "symbolProto", "Symbol_default", "symbolToString", "baseToString", "value", "isArray_default", "arrayMap_default", "isSymbol_default", "result", "__name", "baseToString_default", "reWhitespace", "trimmedEndIndex", "string", "index", "__name", "trimmedEndIndex_default", "reTrimStart", "baseTrim", "string", "trimmedEndIndex_default", "__name", "baseTrim_default", "isObject", "value", "type", "__name", "isObject_default", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "isSymbol_default", "isObject_default", "other", "baseTrim_default", "isBinary", "__name", "toNumber_default", "INFINITY", "MAX_INTEGER", "toFinite", "value", "toNumber_default", "sign", "__name", "toFinite_default", "toInteger", "value", "result", "toFinite_default", "remainder", "__name", "toInteger_default", "identity", "value", "__name", "identity_default", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "value", "isObject_default", "tag", "baseGetTag_default", "__name", "isFunction_default", "coreJsData", "root_default", "coreJsData_default", "maskSrcKey", "uid", "coreJsData_default", "isMasked", "func", "__name", "isMasked_default", "funcProto", "funcToString", "toSource", "func", "__name", "toSource_default", "reRegExpChar", "reIsHostCtor", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "reIsNative", "baseIsNative", "value", "isObject_default", "isMasked_default", "pattern", "isFunction_default", "toSource_default", "__name", "baseIsNative_default", "getValue", "object", "key", "__name", "getValue_default", "getNative", "object", "key", "value", "getValue_default", "baseIsNative_default", "__name", "getNative_default", "WeakMap", "getNative_default", "root_default", "WeakMap_default", "objectCreate", "baseCreate", "object", "__name", "proto", "isObject_default", "result", "baseCreate_default", "apply", "func", "thisArg", "args", "__name", "apply_default", "noop", "__name", "noop_default", "copyArray", "source", "array", "index", "length", "__name", "copyArray_default", "HOT_COUNT", "HOT_SPAN", "nativeNow", "shortOut", "func", "count", "lastCalled", "stamp", "remaining", "__name", "shortOut_default", "constant", "value", "__name", "constant_default", "defineProperty", "func", "getNative_default", "defineProperty_default", "baseSetToString", "defineProperty_default", "func", "string", "constant_default", "identity_default", "baseSetToString_default", "setToString", "shortOut_default", "baseSetToString_default", "setToString_default", "arrayEach", "array", "iteratee", "index", "length", "__name", "arrayEach_default", "baseFindIndex", "array", "predicate", "fromIndex", "fromRight", "length", "index", "__name", "baseFindIndex_default", "baseIsNaN", "value", "__name", "baseIsNaN_default", "strictIndexOf", "array", "value", "fromIndex", "index", "length", "__name", "strictIndexOf_default", "baseIndexOf", "array", "value", "fromIndex", "strictIndexOf_default", "baseFindIndex_default", "baseIsNaN_default", "__name", "baseIndexOf_default", "arrayIncludes", "array", "value", "length", "baseIndexOf_default", "__name", "arrayIncludes_default", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "value", "length", "type", "__name", "isIndex_default", "baseAssignValue", "object", "key", "value", "defineProperty_default", "__name", "baseAssignValue_default", "eq", "value", "other", "__name", "eq_default", "objectProto", "hasOwnProperty", "assignValue", "object", "key", "value", "objValue", "eq_default", "baseAssignValue_default", "__name", "assignValue_default", "copyObject", "source", "props", "object", "customizer", "isNew", "index", "length", "key", "newValue", "baseAssignValue_default", "assignValue_default", "__name", "copyObject_default", "nativeMax", "overRest", "func", "start", "transform", "args", "index", "length", "array", "otherArgs", "apply_default", "__name", "overRest_default", "baseRest", "func", "start", "setToString_default", "overRest_default", "identity_default", "__name", "baseRest_default", "MAX_SAFE_INTEGER", "isLength", "value", "__name", "isLength_default", "isArrayLike", "value", "isLength_default", "isFunction_default", "__name", "isArrayLike_default", "isIterateeCall", "value", "index", "object", "isObject_default", "type", "isArrayLike_default", "isIndex_default", "eq_default", "__name", "isIterateeCall_default", "createAssigner", "assigner", "baseRest_default", "object", "sources", "index", "length", "customizer", "guard", "isIterateeCall_default", "source", "__name", "createAssigner_default", "objectProto", "isPrototype", "value", "Ctor", "proto", "__name", "isPrototype_default", "baseTimes", "n", "iteratee", "index", "result", "__name", "baseTimes_default", "argsTag", "baseIsArguments", "value", "isObjectLike_default", "baseGetTag_default", "__name", "baseIsArguments_default", "objectProto", "hasOwnProperty", "propertyIsEnumerable", "isArguments", "baseIsArguments_default", "value", "isObjectLike_default", "isArguments_default", "stubFalse", "__name", "stubFalse_default", "freeExports", "freeModule", "moduleExports", "Buffer", "root_default", "nativeIsBuffer", "isBuffer", "stubFalse_default", "isBuffer_default", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "value", "isObjectLike_default", "isLength_default", "baseGetTag_default", "__name", "baseIsTypedArray_default", "baseUnary", "func", "value", "__name", "baseUnary_default", "freeExports", "freeModule", "moduleExports", "freeProcess", "freeGlobal_default", "nodeUtil", "types", "nodeUtil_default", "nodeIsTypedArray", "nodeUtil_default", "isTypedArray", "baseUnary_default", "baseIsTypedArray_default", "isTypedArray_default", "objectProto", "hasOwnProperty", "arrayLikeKeys", "value", "inherited", "isArr", "isArray_default", "isArg", "isArguments_default", "isBuff", "isBuffer_default", "isType", "isTypedArray_default", "skipIndexes", "result", "baseTimes_default", "length", "key", "isIndex_default", "__name", "arrayLikeKeys_default", "overArg", "func", "transform", "arg", "__name", "overArg_default", "nativeKeys", "overArg_default", "nativeKeys_default", "objectProto", "hasOwnProperty", "baseKeys", "object", "isPrototype_default", "nativeKeys_default", "result", "key", "__name", "baseKeys_default", "keys", "object", "isArrayLike_default", "arrayLikeKeys_default", "baseKeys_default", "__name", "keys_default", "nativeKeysIn", "object", "result", "key", "__name", "nativeKeysIn_default", "objectProto", "hasOwnProperty", "baseKeysIn", "object", "isObject_default", "nativeKeysIn_default", "isProto", "isPrototype_default", "result", "key", "__name", "baseKeysIn_default", "keysIn", "object", "isArrayLike_default", "arrayLikeKeys_default", "baseKeysIn_default", "__name", "keysIn_default", "reIsDeepProp", "reIsPlainProp", "isKey", "value", "object", "isArray_default", "type", "isSymbol_default", "__name", "isKey_default", "nativeCreate", "getNative_default", "nativeCreate_default", "hashClear", "nativeCreate_default", "__name", "hashClear_default", "hashDelete", "key", "result", "__name", "hashDelete_default", "HASH_UNDEFINED", "objectProto", "hasOwnProperty", "hashGet", "key", "data", "nativeCreate_default", "result", "__name", "hashGet_default", "objectProto", "hasOwnProperty", "hashHas", "key", "data", "nativeCreate_default", "__name", "hashHas_default", "HASH_UNDEFINED", "hashSet", "key", "value", "data", "nativeCreate_default", "__name", "hashSet_default", "Hash", "entries", "index", "length", "entry", "__name", "hashClear_default", "hashDelete_default", "hashGet_default", "hashHas_default", "hashSet_default", "Hash_default", "listCacheClear", "__name", "listCacheClear_default", "assocIndexOf", "array", "key", "length", "eq_default", "__name", "assocIndexOf_default", "arrayProto", "splice", "listCacheDelete", "key", "data", "index", "assocIndexOf_default", "lastIndex", "__name", "listCacheDelete_default", "listCacheGet", "key", "data", "index", "assocIndexOf_default", "__name", "listCacheGet_default", "listCacheHas", "key", "assocIndexOf_default", "__name", "listCacheHas_default", "listCacheSet", "key", "value", "data", "index", "assocIndexOf_default", "__name", "listCacheSet_default", "ListCache", "entries", "index", "length", "entry", "__name", "listCacheClear_default", "listCacheDelete_default", "listCacheGet_default", "listCacheHas_default", "listCacheSet_default", "ListCache_default", "Map", "getNative_default", "root_default", "Map_default", "mapCacheClear", "Hash_default", "Map_default", "ListCache_default", "__name", "mapCacheClear_default", "isKeyable", "value", "type", "__name", "isKeyable_default", "getMapData", "map", "key", "data", "isKeyable_default", "__name", "getMapData_default", "mapCacheDelete", "key", "result", "getMapData_default", "__name", "mapCacheDelete_default", "mapCacheGet", "key", "getMapData_default", "__name", "mapCacheGet_default", "mapCacheHas", "key", "getMapData_default", "__name", "mapCacheHas_default", "mapCacheSet", "key", "value", "data", "getMapData_default", "size", "__name", "mapCacheSet_default", "MapCache", "entries", "index", "length", "entry", "__name", "mapCacheClear_default", "mapCacheDelete_default", "mapCacheGet_default", "mapCacheHas_default", "mapCacheSet_default", "MapCache_default", "FUNC_ERROR_TEXT", "memoize", "func", "resolver", "memoized", "__name", "args", "key", "cache", "result", "MapCache_default", "memoize_default", "MAX_MEMOIZE_SIZE", "memoizeCapped", "func", "result", "memoize_default", "key", "cache", "__name", "memoizeCapped_default", "rePropName", "reEscapeChar", "stringToPath", "memoizeCapped_default", "string", "result", "match", "number", "quote", "subString", "stringToPath_default", "toString", "value", "baseToString_default", "__name", "toString_default", "castPath", "value", "object", "isArray_default", "isKey_default", "stringToPath_default", "toString_default", "__name", "castPath_default", "INFINITY", "toKey", "value", "isSymbol_default", "result", "__name", "toKey_default", "baseGet", "object", "path", "castPath_default", "index", "length", "toKey_default", "__name", "baseGet_default", "get", "object", "path", "defaultValue", "result", "baseGet_default", "__name", "get_default", "arrayPush", "array", "values", "index", "length", "offset", "__name", "arrayPush_default", "spreadableSymbol", "Symbol_default", "isFlattenable", "value", "isArray_default", "isArguments_default", "__name", "isFlattenable_default", "baseFlatten", "array", "depth", "predicate", "isStrict", "result", "index", "length", "isFlattenable_default", "value", "arrayPush_default", "__name", "baseFlatten_default", "flatten", "array", "length", "baseFlatten_default", "__name", "flatten_default", "flatRest", "func", "setToString_default", "overRest_default", "flatten_default", "__name", "flatRest_default", "getPrototype", "overArg_default", "getPrototype_default", "objectTag", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "objectCtorString", "isPlainObject", "value", "isObjectLike_default", "baseGetTag_default", "proto", "getPrototype_default", "Ctor", "__name", "isPlainObject_default", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsZWJ", "reHasUnicode", "hasUnicode", "string", "__name", "hasUnicode_default", "arrayReduce", "array", "iteratee", "accumulator", "initAccum", "index", "length", "__name", "arrayReduce_default", "stackClear", "ListCache_default", "__name", "stackClear_default", "stackDelete", "key", "data", "result", "__name", "stackDelete_default", "stackGet", "key", "__name", "stackGet_default", "stackHas", "key", "__name", "stackHas_default", "LARGE_ARRAY_SIZE", "stackSet", "key", "value", "data", "ListCache_default", "pairs", "Map_default", "MapCache_default", "__name", "stackSet_default", "Stack", "entries", "data", "ListCache_default", "__name", "stackClear_default", "stackDelete_default", "stackGet_default", "stackHas_default", "stackSet_default", "Stack_default", "baseAssign", "object", "source", "copyObject_default", "keys_default", "__name", "baseAssign_default", "baseAssignIn", "object", "source", "copyObject_default", "keysIn_default", "__name", "baseAssignIn_default", "freeExports", "freeModule", "moduleExports", "Buffer", "root_default", "allocUnsafe", "cloneBuffer", "buffer", "isDeep", "length", "result", "__name", "cloneBuffer_default", "arrayFilter", "array", "predicate", "index", "length", "resIndex", "result", "value", "__name", "arrayFilter_default", "stubArray", "__name", "stubArray_default", "objectProto", "propertyIsEnumerable", "nativeGetSymbols", "getSymbols", "object", "arrayFilter_default", "symbol", "stubArray_default", "getSymbols_default", "copySymbols", "source", "object", "copyObject_default", "getSymbols_default", "__name", "copySymbols_default", "nativeGetSymbols", "getSymbolsIn", "object", "result", "arrayPush_default", "getSymbols_default", "getPrototype_default", "stubArray_default", "getSymbolsIn_default", "copySymbolsIn", "source", "object", "copyObject_default", "getSymbolsIn_default", "__name", "copySymbolsIn_default", "baseGetAllKeys", "object", "keysFunc", "symbolsFunc", "result", "isArray_default", "arrayPush_default", "__name", "baseGetAllKeys_default", "getAllKeys", "object", "baseGetAllKeys_default", "keys_default", "getSymbols_default", "__name", "getAllKeys_default", "getAllKeysIn", "object", "baseGetAllKeys_default", "keysIn_default", "getSymbolsIn_default", "__name", "getAllKeysIn_default", "DataView", "getNative_default", "root_default", "DataView_default", "Promise", "getNative_default", "root_default", "Promise_default", "Set", "getNative_default", "root_default", "Set_default", "mapTag", "objectTag", "promiseTag", "setTag", "weakMapTag", "dataViewTag", "dataViewCtorString", "toSource_default", "DataView_default", "mapCtorString", "Map_default", "promiseCtorString", "Promise_default", "setCtorString", "Set_default", "weakMapCtorString", "WeakMap_default", "getTag", "baseGetTag_default", "__name", "value", "result", "Ctor", "ctorString", "getTag_default", "objectProto", "hasOwnProperty", "initCloneArray", "array", "length", "result", "__name", "initCloneArray_default", "Uint8Array", "root_default", "Uint8Array_default", "cloneArrayBuffer", "arrayBuffer", "result", "Uint8Array_default", "__name", "cloneArrayBuffer_default", "cloneDataView", "dataView", "isDeep", "buffer", "cloneArrayBuffer_default", "__name", "cloneDataView_default", "reFlags", "cloneRegExp", "regexp", "result", "__name", "cloneRegExp_default", "symbolProto", "Symbol_default", "symbolValueOf", "cloneSymbol", "symbol", "__name", "cloneSymbol_default", "cloneTypedArray", "typedArray", "isDeep", "buffer", "cloneArrayBuffer_default", "__name", "cloneTypedArray_default", "boolTag", "dateTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "initCloneByTag", "object", "tag", "isDeep", "Ctor", "cloneArrayBuffer_default", "cloneDataView_default", "cloneTypedArray_default", "cloneRegExp_default", "cloneSymbol_default", "__name", "initCloneByTag_default", "initCloneObject", "object", "isPrototype_default", "baseCreate_default", "getPrototype_default", "__name", "initCloneObject_default", "mapTag", "baseIsMap", "value", "isObjectLike_default", "getTag_default", "__name", "baseIsMap_default", "nodeIsMap", "nodeUtil_default", "isMap", "baseUnary_default", "baseIsMap_default", "isMap_default", "setTag", "baseIsSet", "value", "isObjectLike_default", "getTag_default", "__name", "baseIsSet_default", "nodeIsSet", "nodeUtil_default", "isSet", "baseUnary_default", "baseIsSet_default", "isSet_default", "CLONE_DEEP_FLAG", "CLONE_FLAT_FLAG", "CLONE_SYMBOLS_FLAG", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "symbolTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "cloneableTags", "baseClone", "value", "bitmask", "customizer", "key", "object", "stack", "result", "isDeep", "isFlat", "isFull", "isObject_default", "isArr", "isArray_default", "initCloneArray_default", "copyArray_default", "tag", "getTag_default", "isFunc", "isBuffer_default", "cloneBuffer_default", "initCloneObject_default", "copySymbolsIn_default", "baseAssignIn_default", "copySymbols_default", "baseAssign_default", "initCloneByTag_default", "Stack_default", "stacked", "isSet_default", "subValue", "isMap_default", "keysFunc", "getAllKeysIn_default", "getAllKeys_default", "keysIn_default", "keys_default", "props", "arrayEach_default", "assignValue_default", "__name", "baseClone_default", "CLONE_SYMBOLS_FLAG", "clone", "value", "baseClone_default", "__name", "clone_default", "CLONE_DEEP_FLAG", "CLONE_SYMBOLS_FLAG", "cloneDeep", "value", "baseClone_default", "__name", "cloneDeep_default", "HASH_UNDEFINED", "setCacheAdd", "value", "__name", "setCacheAdd_default", "setCacheHas", "value", "__name", "setCacheHas_default", "SetCache", "values", "index", "length", "MapCache_default", "__name", "setCacheAdd_default", "setCacheHas_default", "SetCache_default", "arraySome", "array", "predicate", "index", "length", "__name", "arraySome_default", "cacheHas", "cache", "key", "__name", "cacheHas_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "equalArrays", "array", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "arrLength", "othLength", "arrStacked", "othStacked", "index", "result", "seen", "SetCache_default", "arrValue", "othValue", "compared", "arraySome_default", "othIndex", "cacheHas_default", "__name", "equalArrays_default", "mapToArray", "map", "index", "result", "value", "key", "__name", "mapToArray_default", "setToArray", "set", "index", "result", "value", "__name", "setToArray_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "boolTag", "dateTag", "errorTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "symbolProto", "Symbol_default", "symbolValueOf", "equalByTag", "object", "other", "tag", "bitmask", "customizer", "equalFunc", "stack", "Uint8Array_default", "eq_default", "convert", "mapToArray_default", "isPartial", "setToArray_default", "stacked", "result", "equalArrays_default", "__name", "equalByTag_default", "COMPARE_PARTIAL_FLAG", "objectProto", "hasOwnProperty", "equalObjects", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "objProps", "getAllKeys_default", "objLength", "othProps", "othLength", "index", "key", "objStacked", "othStacked", "result", "skipCtor", "objValue", "othValue", "compared", "objCtor", "othCtor", "__name", "equalObjects_default", "COMPARE_PARTIAL_FLAG", "argsTag", "arrayTag", "objectTag", "objectProto", "hasOwnProperty", "baseIsEqualDeep", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "objIsArr", "isArray_default", "othIsArr", "objTag", "getTag_default", "othTag", "objIsObj", "othIsObj", "isSameTag", "isBuffer_default", "Stack_default", "isTypedArray_default", "equalArrays_default", "equalByTag_default", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "equalObjects_default", "__name", "baseIsEqualDeep_default", "baseIsEqual", "value", "other", "bitmask", "customizer", "stack", "isObjectLike_default", "baseIsEqualDeep_default", "__name", "baseIsEqual_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseIsMatch", "object", "source", "matchData", "customizer", "index", "length", "noCustomizer", "data", "key", "objValue", "srcValue", "stack", "Stack_default", "result", "baseIsEqual_default", "__name", "baseIsMatch_default", "isStrictComparable", "value", "isObject_default", "__name", "isStrictComparable_default", "getMatchData", "object", "result", "keys_default", "length", "key", "value", "isStrictComparable_default", "__name", "getMatchData_default", "matchesStrictComparable", "key", "srcValue", "object", "__name", "matchesStrictComparable_default", "baseMatches", "source", "matchData", "getMatchData_default", "matchesStrictComparable_default", "object", "baseIsMatch_default", "__name", "baseMatches_default", "baseHasIn", "object", "key", "__name", "baseHasIn_default", "hasPath", "object", "path", "hasFunc", "castPath_default", "index", "length", "result", "key", "toKey_default", "isLength_default", "isIndex_default", "isArray_default", "isArguments_default", "__name", "hasPath_default", "hasIn", "object", "path", "hasPath_default", "baseHasIn_default", "__name", "hasIn_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseMatchesProperty", "path", "srcValue", "isKey_default", "isStrictComparable_default", "matchesStrictComparable_default", "toKey_default", "object", "objValue", "get_default", "hasIn_default", "baseIsEqual_default", "__name", "baseMatchesProperty_default", "baseProperty", "key", "object", "__name", "baseProperty_default", "basePropertyDeep", "path", "object", "baseGet_default", "__name", "basePropertyDeep_default", "property", "path", "isKey_default", "baseProperty_default", "toKey_default", "basePropertyDeep_default", "__name", "property_default", "baseIteratee", "value", "identity_default", "isArray_default", "baseMatchesProperty_default", "baseMatches_default", "property_default", "__name", "baseIteratee_default", "createBaseFor", "fromRight", "object", "iteratee", "keysFunc", "index", "iterable", "props", "length", "key", "__name", "createBaseFor_default", "baseFor", "createBaseFor_default", "baseFor_default", "baseForOwn", "object", "iteratee", "baseFor_default", "keys_default", "__name", "baseForOwn_default", "createBaseEach", "eachFunc", "fromRight", "collection", "iteratee", "isArrayLike_default", "length", "index", "iterable", "__name", "createBaseEach_default", "baseEach", "createBaseEach_default", "baseForOwn_default", "baseEach_default", "now", "__name", "root_default", "now_default", "objectProto", "hasOwnProperty", "defaults", "baseRest_default", "object", "sources", "index", "length", "guard", "isIterateeCall_default", "source", "props", "keysIn_default", "propsIndex", "propsLength", "key", "value", "eq_default", "defaults_default", "assignMergeValue", "object", "key", "value", "eq_default", "baseAssignValue_default", "__name", "assignMergeValue_default", "isArrayLikeObject", "value", "isObjectLike_default", "isArrayLike_default", "__name", "isArrayLikeObject_default", "safeGet", "object", "key", "__name", "safeGet_default", "toPlainObject", "value", "copyObject_default", "keysIn_default", "__name", "toPlainObject_default", "baseMergeDeep", "object", "source", "key", "srcIndex", "mergeFunc", "customizer", "stack", "objValue", "safeGet_default", "srcValue", "stacked", "assignMergeValue_default", "newValue", "isCommon", "isArr", "isArray_default", "isBuff", "isBuffer_default", "isTyped", "isTypedArray_default", "isArrayLikeObject_default", "copyArray_default", "cloneBuffer_default", "cloneTypedArray_default", "isPlainObject_default", "isArguments_default", "toPlainObject_default", "isObject_default", "isFunction_default", "initCloneObject_default", "__name", "baseMergeDeep_default", "baseMerge", "object", "source", "srcIndex", "customizer", "stack", "baseFor_default", "srcValue", "key", "Stack_default", "isObject_default", "baseMergeDeep_default", "newValue", "safeGet_default", "assignMergeValue_default", "keysIn_default", "__name", "baseMerge_default", "arrayIncludesWith", "array", "value", "comparator", "index", "length", "__name", "arrayIncludesWith_default", "last", "array", "length", "__name", "last_default", "castFunction", "value", "identity_default", "__name", "castFunction_default", "forEach", "collection", "iteratee", "func", "isArray_default", "arrayEach_default", "baseEach_default", "castFunction_default", "__name", "forEach_default", "baseFilter", "collection", "predicate", "result", "baseEach_default", "value", "index", "__name", "baseFilter_default", "filter", "collection", "predicate", "func", "isArray_default", "arrayFilter_default", "baseFilter_default", "baseIteratee_default", "__name", "filter_default", "createFind", "findIndexFunc", "collection", "predicate", "fromIndex", "iterable", "isArrayLike_default", "iteratee", "baseIteratee_default", "keys_default", "__name", "key", "index", "createFind_default", "nativeMax", "findIndex", "array", "predicate", "fromIndex", "length", "index", "toInteger_default", "baseFindIndex_default", "baseIteratee_default", "__name", "findIndex_default", "find", "createFind_default", "findIndex_default", "find_default", "baseMap", "collection", "iteratee", "index", "result", "isArrayLike_default", "baseEach_default", "value", "key", "__name", "baseMap_default", "map", "collection", "iteratee", "func", "isArray_default", "arrayMap_default", "baseMap_default", "baseIteratee_default", "__name", "map_default", "forIn", "object", "iteratee", "baseFor_default", "castFunction_default", "keysIn_default", "__name", "forIn_default", "forOwn", "object", "iteratee", "baseForOwn_default", "castFunction_default", "__name", "forOwn_default", "baseGt", "value", "other", "__name", "baseGt_default", "objectProto", "hasOwnProperty", "baseHas", "object", "key", "__name", "baseHas_default", "has", "object", "path", "hasPath_default", "baseHas_default", "__name", "has_default", "stringTag", "isString", "value", "isArray_default", "isObjectLike_default", "baseGetTag_default", "__name", "isString_default", "baseValues", "object", "props", "arrayMap_default", "key", "__name", "baseValues_default", "values", "object", "baseValues_default", "keys_default", "__name", "values_default", "mapTag", "setTag", "objectProto", "hasOwnProperty", "isEmpty", "value", "isArrayLike_default", "isArray_default", "isBuffer_default", "isTypedArray_default", "isArguments_default", "tag", "getTag_default", "isPrototype_default", "baseKeys_default", "key", "__name", "isEmpty_default", "isUndefined", "value", "__name", "isUndefined_default", "baseLt", "value", "other", "__name", "baseLt_default", "mapValues", "object", "iteratee", "result", "baseIteratee_default", "baseForOwn_default", "value", "key", "baseAssignValue_default", "__name", "mapValues_default", "baseExtremum", "array", "iteratee", "comparator", "index", "length", "value", "current", "computed", "isSymbol_default", "result", "__name", "baseExtremum_default", "max", "array", "baseExtremum_default", "identity_default", "baseGt_default", "__name", "max_default", "merge", "createAssigner_default", "object", "source", "srcIndex", "baseMerge_default", "merge_default", "min", "array", "baseExtremum_default", "identity_default", "baseLt_default", "__name", "min_default", "minBy", "array", "iteratee", "baseExtremum_default", "baseIteratee_default", "baseLt_default", "__name", "minBy_default", "baseSet", "object", "path", "value", "customizer", "isObject_default", "castPath_default", "index", "length", "lastIndex", "nested", "key", "toKey_default", "newValue", "objValue", "isIndex_default", "assignValue_default", "__name", "baseSet_default", "basePickBy", "object", "paths", "predicate", "index", "length", "result", "path", "value", "baseGet_default", "baseSet_default", "castPath_default", "__name", "basePickBy_default", "baseSortBy", "array", "comparer", "length", "__name", "baseSortBy_default", "compareAscending", "value", "other", "valIsDefined", "valIsNull", "valIsReflexive", "valIsSymbol", "isSymbol_default", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "__name", "compareAscending_default", "compareMultiple", "object", "other", "orders", "index", "objCriteria", "othCriteria", "length", "ordersLength", "result", "compareAscending_default", "order", "__name", "compareMultiple_default", "baseOrderBy", "collection", "iteratees", "orders", "arrayMap_default", "iteratee", "isArray_default", "value", "baseGet_default", "identity_default", "index", "baseUnary_default", "baseIteratee_default", "result", "baseMap_default", "key", "criteria", "baseSortBy_default", "object", "other", "compareMultiple_default", "__name", "baseOrderBy_default", "asciiSize", "baseProperty_default", "asciiSize_default", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsAstral", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsSymbol", "reUnicode", "unicodeSize", "string", "result", "__name", "unicodeSize_default", "stringSize", "string", "hasUnicode_default", "unicodeSize_default", "asciiSize_default", "__name", "stringSize_default", "basePick", "object", "paths", "basePickBy_default", "value", "path", "hasIn_default", "__name", "basePick_default", "pick", "flatRest_default", "object", "paths", "basePick_default", "pick_default", "nativeCeil", "nativeMax", "baseRange", "start", "end", "step", "fromRight", "index", "length", "result", "__name", "baseRange_default", "createRange", "fromRight", "start", "end", "step", "isIterateeCall_default", "toFinite_default", "baseRange_default", "__name", "createRange_default", "range", "createRange_default", "range_default", "baseReduce", "collection", "iteratee", "accumulator", "initAccum", "eachFunc", "value", "index", "__name", "baseReduce_default", "reduce", "collection", "iteratee", "accumulator", "func", "isArray_default", "arrayReduce_default", "baseReduce_default", "initAccum", "baseIteratee_default", "baseEach_default", "__name", "reduce_default", "mapTag", "setTag", "size", "collection", "isArrayLike_default", "isString_default", "stringSize_default", "tag", "getTag_default", "baseKeys_default", "__name", "size_default", "sortBy", "baseRest_default", "collection", "iteratees", "length", "isIterateeCall_default", "baseOrderBy_default", "baseFlatten_default", "sortBy_default", "INFINITY", "createSet", "Set_default", "setToArray_default", "values", "noop_default", "createSet_default", "LARGE_ARRAY_SIZE", "baseUniq", "array", "iteratee", "comparator", "index", "includes", "arrayIncludes_default", "length", "isCommon", "result", "seen", "arrayIncludesWith_default", "set", "createSet_default", "setToArray_default", "cacheHas_default", "SetCache_default", "outer", "value", "computed", "seenIndex", "__name", "baseUniq_default", "union", "baseRest_default", "arrays", "baseUniq_default", "baseFlatten_default", "isArrayLikeObject_default", "union_default", "idCounter", "uniqueId", "prefix", "id", "toString_default", "__name", "uniqueId_default", "baseZipObject", "props", "values", "assignFunc", "index", "length", "valsLength", "result", "value", "__name", "baseZipObject_default", "zipObject", "props", "values", "baseZipObject_default", "assignValue_default", "__name", "zipObject_default", "DEFAULT_EDGE_NAME", "GRAPH_NODE", "EDGE_KEY_DELIM", "Graph", "__name", "opts", "constant_default", "label", "newDefault", "isFunction_default", "keys_default", "self", "filter_default", "v", "isEmpty_default", "vs", "value", "args", "forEach_default", "removeEdge", "e", "child", "parent", "isUndefined_default", "ancestor", "children", "predsV", "sucsV", "preds", "union_default", "neighbors", "filter", "copy", "parents", "findParent", "values_default", "reduce_default", "w", "name", "valueSpecified", "arg0", "edgeArgsToId", "edgeObj", "edgeArgsToObj", "incrementOrInitEntry", "edgeObjToId", "edge", "decrementOrRemoveEntry", "u", "inV", "edges", "outV", "inEdges", "map", "k", "isDirected", "v_", "w_", "tmp"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-ZX4KS3OZ.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-ZX4KS3OZ.mjs deleted file mode 100644 index df0266a..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-ZX4KS3OZ.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as s,b as l,c as n,d,e as u,f as o,g as m,n as c,o as p,q as T}from"./chunk-GAX3EE6F.mjs";import{a as i}from"./chunk-VELTKBKT.mjs";var v=class extends T{static{i(this,"TreemapTokenBuilder")}static{o(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},g=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,h=class extends p{static{i(this,"TreemapValueConverter")}static{o(this,"TreemapValueConverter")}runCustomConverter(r,e,t){if(r.name==="NUMBER2")return parseFloat(e.replace(/,/g,""));if(r.name==="SEPARATOR")return e.substring(1,e.length-1);if(r.name==="STRING2")return e.substring(1,e.length-1);if(r.name==="INDENTATION")return e.length;if(r.name==="ClassDef"){if(typeof e!="string")return e;let a=g.exec(e);if(a)return{$type:"ClassDefStatement",className:a[1],styleText:a[2]||void 0}}}};function f(r){let e=r.validation.TreemapValidator,t=r.validation.ValidationRegistry;if(t){let a={Treemap:e.checkSingleRoot.bind(e)};t.register(a,e)}}i(f,"registerValidationChecks");o(f,"registerValidationChecks");var C=class{static{i(this,"TreemapValidator")}static{o(this,"TreemapValidator")}checkSingleRoot(r,e){let t;for(let a of r.TreemapRows)a.item&&(t===void 0&&a.indent===void 0?t=0:a.indent===void 0?e("error","Multiple root nodes are not allowed in a treemap.",{node:a,property:"item"}):t!==void 0&&t>=parseInt(a.indent,10)&&e("error","Multiple root nodes are not allowed in a treemap.",{node:a,property:"item"}))}},V={parser:{TokenBuilder:o(()=>new v,"TokenBuilder"),ValueConverter:o(()=>new h,"ValueConverter")},validation:{TreemapValidator:o(()=>new C,"TreemapValidator")}};function M(r=d){let e=n(l(r),m),t=n(s({shared:e}),c,V);return e.ServiceRegistry.register(t),f(t),{shared:e,Treemap:t}}i(M,"createTreemapServices");o(M,"createTreemapServices");export{V as a,M as b}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-ZX4KS3OZ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-ZX4KS3OZ.mjs.map deleted file mode 100644 index d0c75b7..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-ZX4KS3OZ.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../parser/dist/chunks/mermaid-parser.core/chunk-OZEHJAEY.mjs"], - "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n MermaidGeneratedSharedModule,\n TreemapGrammarGeneratedModule,\n __name\n} from \"./chunk-XZSTWKYB.mjs\";\n\n// src/language/treemap/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/treemap/tokenBuilder.ts\nvar TreemapTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"TreemapTokenBuilder\");\n }\n constructor() {\n super([\"treemap\"]);\n }\n};\n\n// src/language/treemap/valueConverter.ts\nvar classDefRegex = /classDef\\s+([A-Z_a-z]\\w+)(?:\\s+([^\\n\\r;]*))?;?/;\nvar TreemapValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"TreemapValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name === \"NUMBER2\") {\n return parseFloat(input.replace(/,/g, \"\"));\n } else if (rule.name === \"SEPARATOR\") {\n return input.substring(1, input.length - 1);\n } else if (rule.name === \"STRING2\") {\n return input.substring(1, input.length - 1);\n } else if (rule.name === \"INDENTATION\") {\n return input.length;\n } else if (rule.name === \"ClassDef\") {\n if (typeof input !== \"string\") {\n return input;\n }\n const match = classDefRegex.exec(input);\n if (match) {\n return {\n $type: \"ClassDefStatement\",\n className: match[1],\n styleText: match[2] || void 0\n };\n }\n }\n return void 0;\n }\n};\n\n// src/language/treemap/treemap-validator.ts\nfunction registerValidationChecks(services) {\n const validator = services.validation.TreemapValidator;\n const registry = services.validation.ValidationRegistry;\n if (registry) {\n const checks = {\n Treemap: validator.checkSingleRoot.bind(validator)\n // Remove unused validation for TreemapRow\n };\n registry.register(checks, validator);\n }\n}\n__name(registerValidationChecks, \"registerValidationChecks\");\nvar TreemapValidator = class {\n static {\n __name(this, \"TreemapValidator\");\n }\n /**\n * Validates that a treemap has only one root node.\n * A root node is defined as a node that has no indentation.\n */\n checkSingleRoot(doc, accept) {\n let rootNodeIndentation;\n for (const row of doc.TreemapRows) {\n if (!row.item) {\n continue;\n }\n if (rootNodeIndentation === void 0 && // Check if this is a root node (no indentation)\n row.indent === void 0) {\n rootNodeIndentation = 0;\n } else if (row.indent === void 0) {\n accept(\"error\", \"Multiple root nodes are not allowed in a treemap.\", {\n node: row,\n property: \"item\"\n });\n } else if (rootNodeIndentation !== void 0 && rootNodeIndentation >= parseInt(row.indent, 10)) {\n accept(\"error\", \"Multiple root nodes are not allowed in a treemap.\", {\n node: row,\n property: \"item\"\n });\n }\n }\n }\n};\n\n// src/language/treemap/module.ts\nvar TreemapModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new TreemapTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new TreemapValueConverter(), \"ValueConverter\")\n },\n validation: {\n TreemapValidator: /* @__PURE__ */ __name(() => new TreemapValidator(), \"TreemapValidator\")\n }\n};\nfunction createTreemapServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Treemap = inject(\n createDefaultCoreModule({ shared }),\n TreemapGrammarGeneratedModule,\n TreemapModule\n );\n shared.ServiceRegistry.register(Treemap);\n registerValidationChecks(Treemap);\n return { shared, Treemap };\n}\n__name(createTreemapServices, \"createTreemapServices\");\n\nexport {\n TreemapModule,\n createTreemapServices\n};\n"], - "mappings": "4IAiBA,IAAIA,EAAsB,cAAcC,CAA4B,CAjBpE,MAiBoE,CAAAC,EAAA,4BAClE,MAAO,CACLA,EAAO,KAAM,qBAAqB,CACpC,CACA,aAAc,CACZ,MAAM,CAAC,SAAS,CAAC,CACnB,CACF,EAGIC,EAAgB,iDAChBC,EAAwB,cAAcC,CAA8B,CA5BxE,MA4BwE,CAAAH,EAAA,8BACtE,MAAO,CACLA,EAAO,KAAM,uBAAuB,CACtC,CACA,mBAAmBI,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,UAChB,OAAO,WAAWC,EAAM,QAAQ,KAAM,EAAE,CAAC,EACpC,GAAID,EAAK,OAAS,YACvB,OAAOC,EAAM,UAAU,EAAGA,EAAM,OAAS,CAAC,EACrC,GAAID,EAAK,OAAS,UACvB,OAAOC,EAAM,UAAU,EAAGA,EAAM,OAAS,CAAC,EACrC,GAAID,EAAK,OAAS,cACvB,OAAOC,EAAM,OACR,GAAID,EAAK,OAAS,WAAY,CACnC,GAAI,OAAOC,GAAU,SACnB,OAAOA,EAET,IAAME,EAAQN,EAAc,KAAKI,CAAK,EACtC,GAAIE,EACF,MAAO,CACL,MAAO,oBACP,UAAWA,EAAM,CAAC,EAClB,UAAWA,EAAM,CAAC,GAAK,MACzB,CAEJ,CAEF,CACF,EAGA,SAASC,EAAyBC,EAAU,CAC1C,IAAMC,EAAYD,EAAS,WAAW,iBAChCE,EAAWF,EAAS,WAAW,mBACrC,GAAIE,EAAU,CACZ,IAAMC,EAAS,CACb,QAASF,EAAU,gBAAgB,KAAKA,CAAS,CAEnD,EACAC,EAAS,SAASC,EAAQF,CAAS,CACrC,CACF,CAVSV,EAAAQ,EAAA,4BAWTR,EAAOQ,EAA0B,0BAA0B,EAC3D,IAAIK,EAAmB,KAAM,CAvE7B,MAuE6B,CAAAb,EAAA,yBAC3B,MAAO,CACLA,EAAO,KAAM,kBAAkB,CACjC,CAKA,gBAAgBc,EAAKC,EAAQ,CAC3B,IAAIC,EACJ,QAAWC,KAAOH,EAAI,YACfG,EAAI,OAGLD,IAAwB,QAC5BC,EAAI,SAAW,OACbD,EAAsB,EACbC,EAAI,SAAW,OACxBF,EAAO,QAAS,oDAAqD,CACnE,KAAME,EACN,SAAU,MACZ,CAAC,EACQD,IAAwB,QAAUA,GAAuB,SAASC,EAAI,OAAQ,EAAE,GACzFF,EAAO,QAAS,oDAAqD,CACnE,KAAME,EACN,SAAU,MACZ,CAAC,EAGP,CACF,EAGIC,EAAgB,CAClB,OAAQ,CACN,aAA8BlB,EAAO,IAAM,IAAIF,EAAuB,cAAc,EACpF,eAAgCE,EAAO,IAAM,IAAIE,EAAyB,gBAAgB,CAC5F,EACA,WAAY,CACV,iBAAkCF,EAAO,IAAM,IAAIa,EAAoB,kBAAkB,CAC3F,CACF,EACA,SAASM,EAAsBC,EAAUC,EAAiB,CACxD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAUH,EACdI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAO,EACvClB,EAAyBkB,CAAO,EACzB,CAAE,OAAAJ,EAAQ,QAAAI,CAAQ,CAC3B,CAbS1B,EAAAmB,EAAA,yBAcTnB,EAAOmB,EAAuB,uBAAuB", - "names": ["TreemapTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "classDefRegex", "TreemapValueConverter", "AbstractMermaidValueConverter", "rule", "input", "_cstNode", "match", "registerValidationChecks", "services", "validator", "registry", "checks", "TreemapValidator", "doc", "accept", "rootNodeIndentation", "row", "TreemapModule", "createTreemapServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Treemap", "createDefaultCoreModule", "TreemapGrammarGeneratedModule"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-T4EQAHMB.mjs b/assets/mermaid/chunks/mermaid.esm.min/chunk-ZXARS5L4.mjs similarity index 77% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-T4EQAHMB.mjs rename to assets/mermaid/chunks/mermaid.esm.min/chunk-ZXARS5L4.mjs index 1082ecc..64dadb2 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/chunk-T4EQAHMB.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/chunk-ZXARS5L4.mjs @@ -1 +1 @@ -import{N as c}from"./chunk-3UWU4A3N.mjs";import{b as h}from"./chunk-MGPAVIPZ.mjs";import{a as i}from"./chunk-VELTKBKT.mjs";var y=i((t,e,o,n)=>{t.attr("class",o);let{width:r,height:m,x:s,y:b}=w(t,e);c(t,m,r,n);let u=x(s,b,r,m,e);t.attr("viewBox",u),h.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),w=i((t,e)=>{let o=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:o.width+e*2,height:o.height+e*2,x:o.x,y:o.y}},"calculateDimensionsWithPadding"),x=i((t,e,o,n,r)=>`${t-r} ${e-r} ${o} ${n}`,"createViewBox");export{y as a}; +import{O as c}from"./chunk-67TQ5CYL.mjs";import{b as h}from"./chunk-7W6UQGC5.mjs";import{a as i}from"./chunk-AQ6EADP3.mjs";var y=i((t,e,o,n)=>{t.attr("class",o);let{width:r,height:m,x:s,y:b}=w(t,e);c(t,m,r,n);let u=x(s,b,r,m,e);t.attr("viewBox",u),h.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),w=i((t,e)=>{let o=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:o.width+e*2,height:o.height+e*2,x:o.x,y:o.y}},"calculateDimensionsWithPadding"),x=i((t,e,o,n,r)=>`${t-r} ${e-r} ${o} ${n}`,"createViewBox");export{y as a}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/chunk-T4EQAHMB.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/chunk-ZXARS5L4.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/chunk-T4EQAHMB.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/chunk-ZXARS5L4.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-JG6F6YBT.mjs b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-JG6F6YBT.mjs deleted file mode 100644 index f94b2a6..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-JG6F6YBT.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a,b as o,c as e,d as t}from"./chunk-TFLKLN34.mjs";import"./chunk-KSICW3F5.mjs";import"./chunk-W2A4CRWB.mjs";import"./chunk-TBF5ZNIQ.mjs";import"./chunk-T4EQAHMB.mjs";import"./chunk-SK62O5VA.mjs";import"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import"./chunk-3UWU4A3N.mjs";import"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as i}from"./chunk-VELTKBKT.mjs";var n={parser:a,get db(){return new o},renderer:t,styles:e,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-KGZ6W3CR.mjs b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-KGZ6W3CR.mjs new file mode 100644 index 0000000..d3b18d8 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-KGZ6W3CR.mjs @@ -0,0 +1 @@ +import{a,b as o,c as e,d as t}from"./chunk-RG4AUYOV.mjs";import"./chunk-AZZRMDJM.mjs";import"./chunk-LII3EMHJ.mjs";import"./chunk-6764PJDD.mjs";import"./chunk-ZXARS5L4.mjs";import"./chunk-VU6ZFW4Y.mjs";import"./chunk-7J6CGLKN.mjs";import"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-5VCL7Z4A.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import"./chunk-67TQ5CYL.mjs";import"./chunk-7W6UQGC5.mjs";import{a as i}from"./chunk-AQ6EADP3.mjs";var n={parser:a,get db(){return new o},renderer:t,styles:e,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-JG6F6YBT.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-KGZ6W3CR.mjs.map similarity index 93% rename from assets/mermaid/chunks/mermaid.esm.min/classDiagram-JG6F6YBT.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/classDiagram-KGZ6W3CR.mjs.map index e85555f..bb1e2a9 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-JG6F6YBT.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-KGZ6W3CR.mjs.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../src/diagrams/class/classDiagram.ts"], "sourcesContent": ["import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/classDiagram.jison';\nimport { ClassDB } from './classDb.js';\nimport styles from './styles.js';\nimport renderer from './classRenderer-v3-unified.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new ClassDB();\n },\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n },\n};\n"], - "mappings": "+kBAOO,IAAMA,EAA6B,CACxC,OAAAC,EACA,IAAI,IAAK,CACP,OAAO,IAAIC,CACb,EACA,SAAAC,EACA,OAAAC,EACA,KAAMC,EAACC,GAAQ,CACRA,EAAI,QACPA,EAAI,MAAQ,CAAC,GAEfA,EAAI,MAAM,oBAAsBA,EAAI,mBACtC,EALM,OAMR", + "mappings": "kjBAOO,IAAMA,EAA6B,CACxC,OAAAC,EACA,IAAI,IAAK,CACP,OAAO,IAAIC,CACb,EACA,SAAAC,EACA,OAAAC,EACA,KAAMC,EAACC,GAAQ,CACRA,EAAI,QACPA,EAAI,MAAQ,CAAC,GAEfA,EAAI,MAAM,oBAAsBA,EAAI,mBACtC,EALM,OAMR", "names": ["diagram", "classDiagram_default", "ClassDB", "classRenderer_v3_unified_default", "styles_default", "__name", "cnf"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-72OJOZXJ.mjs b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-72OJOZXJ.mjs new file mode 100644 index 0000000..d3b18d8 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-72OJOZXJ.mjs @@ -0,0 +1 @@ +import{a,b as o,c as e,d as t}from"./chunk-RG4AUYOV.mjs";import"./chunk-AZZRMDJM.mjs";import"./chunk-LII3EMHJ.mjs";import"./chunk-6764PJDD.mjs";import"./chunk-ZXARS5L4.mjs";import"./chunk-VU6ZFW4Y.mjs";import"./chunk-7J6CGLKN.mjs";import"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-5VCL7Z4A.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import"./chunk-67TQ5CYL.mjs";import"./chunk-7W6UQGC5.mjs";import{a as i}from"./chunk-AQ6EADP3.mjs";var n={parser:a,get db(){return new o},renderer:t,styles:e,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-CFK7UN3Z.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-72OJOZXJ.mjs.map similarity index 93% rename from assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-CFK7UN3Z.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-72OJOZXJ.mjs.map index a13f2df..5d9cd60 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-CFK7UN3Z.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-72OJOZXJ.mjs.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../src/diagrams/class/classDiagram-v2.ts"], "sourcesContent": ["import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/classDiagram.jison';\nimport { ClassDB } from './classDb.js';\nimport styles from './styles.js';\nimport renderer from './classRenderer-v3-unified.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new ClassDB();\n },\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n },\n};\n"], - "mappings": "+kBAOO,IAAMA,EAA6B,CACxC,OAAAC,EACA,IAAI,IAAK,CACP,OAAO,IAAIC,CACb,EACA,SAAAC,EACA,OAAAC,EACA,KAAMC,EAACC,GAAQ,CACRA,EAAI,QACPA,EAAI,MAAQ,CAAC,GAEfA,EAAI,MAAM,oBAAsBA,EAAI,mBACtC,EALM,OAMR", + "mappings": "kjBAOO,IAAMA,EAA6B,CACxC,OAAAC,EACA,IAAI,IAAK,CACP,OAAO,IAAIC,CACb,EACA,SAAAC,EACA,OAAAC,EACA,KAAMC,EAACC,GAAQ,CACRA,EAAI,QACPA,EAAI,MAAQ,CAAC,GAEfA,EAAI,MAAM,oBAAsBA,EAAI,mBACtC,EALM,OAMR", "names": ["diagram", "classDiagram_default", "ClassDB", "classRenderer_v3_unified_default", "styles_default", "__name", "cnf"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-CFK7UN3Z.mjs b/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-CFK7UN3Z.mjs deleted file mode 100644 index f94b2a6..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/classDiagram-v2-CFK7UN3Z.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a,b as o,c as e,d as t}from"./chunk-TFLKLN34.mjs";import"./chunk-KSICW3F5.mjs";import"./chunk-W2A4CRWB.mjs";import"./chunk-TBF5ZNIQ.mjs";import"./chunk-T4EQAHMB.mjs";import"./chunk-SK62O5VA.mjs";import"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import"./chunk-3UWU4A3N.mjs";import"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as i}from"./chunk-VELTKBKT.mjs";var n={parser:a,get db(){return new o},renderer:t,styles:e,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-PNC4W37J.mjs b/assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-UX7MHV2Q.mjs similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-PNC4W37J.mjs rename to assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-UX7MHV2Q.mjs index b0d588d..27a14f6 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-PNC4W37J.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-UX7MHV2Q.mjs @@ -1 +1 @@ -import{a as $}from"./chunk-7RZVMHOQ.mjs";import{b as B,h as it}from"./chunk-MGPAVIPZ.mjs";import{a as A,c as Q,f as ft}from"./chunk-VELTKBKT.mjs";var q=Q((k,K)=>{"use strict";A((function(M,v){typeof k=="object"&&typeof K=="object"?K.exports=v():typeof define=="function"&&define.amd?define([],v):typeof k=="object"?k.layoutBase=v():M.layoutBase=v()}),"webpackUniversalModuleDefinition")(k,function(){return(function(m){var M={};function v(n){if(M[n])return M[n].exports;var e=M[n]={i:n,l:!1,exports:{}};return m[n].call(e.exports,e,e.exports,v),e.l=!0,e.exports}return A(v,"__webpack_require__"),v.m=m,v.c=M,v.i=function(n){return n},v.d=function(n,e,t){v.o(n,e)||Object.defineProperty(n,e,{configurable:!1,enumerable:!0,get:t})},v.n=function(n){var e=n&&n.__esModule?A(function(){return n.default},"getDefault"):A(function(){return n},"getModuleExports");return v.d(e,"a",e),e},v.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},v.p="",v(v.s=26)})([(function(m,M,v){"use strict";function n(){}A(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,m.exports=n}),(function(m,M,v){"use strict";var n=v(2),e=v(8),t=v(9);function r(u,o,p){n.call(this,p),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=p,this.bendpoints=[],this.source=u,this.target=o}A(r,"LEdge"),r.prototype=Object.create(n.prototype);for(var a in n)r[a]=n[a];r.prototype.getSource=function(){return this.source},r.prototype.getTarget=function(){return this.target},r.prototype.isInterGraph=function(){return this.isInterGraph},r.prototype.getLength=function(){return this.length},r.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},r.prototype.getBendpoints=function(){return this.bendpoints},r.prototype.getLca=function(){return this.lca},r.prototype.getSourceInLca=function(){return this.sourceInLca},r.prototype.getTargetInLca=function(){return this.targetInLca},r.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},r.prototype.getOtherEndInGraph=function(u,o){for(var p=this.getOtherEnd(u),i=o.getGraphManager().getRoot();;){if(p.getOwner()==o)return p;if(p.getOwner()==i)break;p=p.getOwner().getParent()}return null},r.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=e.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=t.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=t.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},r.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=t.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=t.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},m.exports=r}),(function(m,M,v){"use strict";function n(e){this.vGraphObject=e}A(n,"LGraphObject"),m.exports=n}),(function(m,M,v){"use strict";var n=v(2),e=v(10),t=v(13),r=v(0),a=v(16),u=v(4);function o(i,h,l,d){l==null&&d==null&&(d=h),n.call(this,d),i.graphManager!=null&&(i=i.graphManager),this.estimatedSize=e.MIN_VALUE,this.inclusionTreeDepth=e.MAX_VALUE,this.vGraphObject=d,this.edges=[],this.graphManager=i,l!=null&&h!=null?this.rect=new t(h.x,h.y,l.width,l.height):this.rect=new t}A(o,"LNode"),o.prototype=Object.create(n.prototype);for(var p in n)o[p]=n[p];o.prototype.getEdges=function(){return this.edges},o.prototype.getChild=function(){return this.child},o.prototype.getOwner=function(){return this.owner},o.prototype.getWidth=function(){return this.rect.width},o.prototype.setWidth=function(i){this.rect.width=i},o.prototype.getHeight=function(){return this.rect.height},o.prototype.setHeight=function(i){this.rect.height=i},o.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},o.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},o.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},o.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},o.prototype.getRect=function(){return this.rect},o.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},o.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},o.prototype.setRect=function(i,h){this.rect.x=i.x,this.rect.y=i.y,this.rect.width=h.width,this.rect.height=h.height},o.prototype.setCenter=function(i,h){this.rect.x=i-this.rect.width/2,this.rect.y=h-this.rect.height/2},o.prototype.setLocation=function(i,h){this.rect.x=i,this.rect.y=h},o.prototype.moveBy=function(i,h){this.rect.x+=i,this.rect.y+=h},o.prototype.getEdgeListToNode=function(i){var h=[],l,d=this;return d.edges.forEach(function(y){if(y.target==i){if(y.source!=d)throw"Incorrect edge source!";h.push(y)}}),h},o.prototype.getEdgesBetween=function(i){var h=[],l,d=this;return d.edges.forEach(function(y){if(!(y.source==d||y.target==d))throw"Incorrect edge source and/or target";(y.target==i||y.source==i)&&h.push(y)}),h},o.prototype.getNeighborsList=function(){var i=new Set,h=this;return h.edges.forEach(function(l){if(l.source==h)i.add(l.target);else{if(l.target!=h)throw"Incorrect incidency!";i.add(l.source)}}),i},o.prototype.withChildren=function(){var i=new Set,h,l;if(i.add(this),this.child!=null)for(var d=this.child.getNodes(),y=0;yh&&(this.rect.x-=(this.labelWidth-h)/2,this.setWidth(this.labelWidth)),this.labelHeight>l&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-l)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-l),this.setHeight(this.labelHeight))}}},o.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==e.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},o.prototype.transform=function(i){var h=this.rect.x;h>r.WORLD_BOUNDARY?h=r.WORLD_BOUNDARY:h<-r.WORLD_BOUNDARY&&(h=-r.WORLD_BOUNDARY);var l=this.rect.y;l>r.WORLD_BOUNDARY?l=r.WORLD_BOUNDARY:l<-r.WORLD_BOUNDARY&&(l=-r.WORLD_BOUNDARY);var d=new u(h,l),y=i.inverseTransformPoint(d);this.setLocation(y.x,y.y)},o.prototype.getLeft=function(){return this.rect.x},o.prototype.getRight=function(){return this.rect.x+this.rect.width},o.prototype.getTop=function(){return this.rect.y},o.prototype.getBottom=function(){return this.rect.y+this.rect.height},o.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},m.exports=o}),(function(m,M,v){"use strict";function n(e,t){e==null&&t==null?(this.x=0,this.y=0):(this.x=e,this.y=t)}A(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(e){this.x=e},n.prototype.setY=function(e){this.y=e},n.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},m.exports=n}),(function(m,M,v){"use strict";var n=v(2),e=v(10),t=v(0),r=v(6),a=v(3),u=v(1),o=v(13),p=v(12),i=v(11);function h(d,y,T){n.call(this,T),this.estimatedSize=e.MIN_VALUE,this.margin=t.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=d,y!=null&&y instanceof r?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}A(h,"LGraph"),h.prototype=Object.create(n.prototype);for(var l in n)h[l]=n[l];h.prototype.getNodes=function(){return this.nodes},h.prototype.getEdges=function(){return this.edges},h.prototype.getGraphManager=function(){return this.graphManager},h.prototype.getParent=function(){return this.parent},h.prototype.getLeft=function(){return this.left},h.prototype.getRight=function(){return this.right},h.prototype.getTop=function(){return this.top},h.prototype.getBottom=function(){return this.bottom},h.prototype.isConnected=function(){return this.isConnected},h.prototype.add=function(d,y,T){if(y==null&&T==null){var c=d;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(c)>-1)throw"Node already in graph!";return c.owner=this,this.getNodes().push(c),c}else{var D=d;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(T)>-1))throw"Source or target not in graph!";if(!(y.owner==T.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=T.owner?null:(D.source=y,D.target=T,D.isInterGraph=!1,this.getEdges().push(D),y.edges.push(D),T!=y&&T.edges.push(D),D)}},h.prototype.remove=function(d){var y=d;if(d instanceof a){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var T=y.edges.slice(),c,D=T.length,E=0;E-1&&g>-1))throw"Source and/or target doesn't know this edge!";c.source.edges.splice(s,1),c.target!=c.source&&c.target.edges.splice(g,1);var O=c.source.owner.getEdges().indexOf(c);if(O==-1)throw"Not in owner's edge list!";c.source.owner.getEdges().splice(O,1)}},h.prototype.updateLeftTop=function(){for(var d=e.MAX_VALUE,y=e.MAX_VALUE,T,c,D,E=this.getNodes(),O=E.length,s=0;sT&&(d=T),y>c&&(y=c)}return d==e.MAX_VALUE?null:(E[0].getParent().paddingLeft!=null?D=E[0].getParent().paddingLeft:D=this.margin,this.left=y-D,this.top=d-D,new p(this.left,this.top))},h.prototype.updateBounds=function(d){for(var y=e.MAX_VALUE,T=-e.MAX_VALUE,c=e.MAX_VALUE,D=-e.MAX_VALUE,E,O,s,g,f,L=this.nodes,N=L.length,I=0;IE&&(y=E),Ts&&(c=s),DE&&(y=E),Ts&&(c=s),D=this.nodes.length){var N=0;T.forEach(function(I){I.owner==d&&N++}),N==this.nodes.length&&(this.isConnected=!0)}},m.exports=h}),(function(m,M,v){"use strict";var n,e=v(1);function t(r){n=v(5),this.layout=r,this.graphs=[],this.edges=[]}A(t,"LGraphManager"),t.prototype.addRoot=function(){var r=this.layout.newGraph(),a=this.layout.newNode(null),u=this.add(r,a);return this.setRootGraph(u),this.rootGraph},t.prototype.add=function(r,a,u,o,p){if(u==null&&o==null&&p==null){if(r==null)throw"Graph is null!";if(a==null)throw"Parent node is null!";if(this.graphs.indexOf(r)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(r),r.parent!=null)throw"Already has a parent!";if(a.child!=null)throw"Already has a child!";return r.parent=a,a.child=r,r}else{p=u,o=a,u=r;var i=o.getOwner(),h=p.getOwner();if(!(i!=null&&i.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(h!=null&&h.getGraphManager()==this))throw"Target not in this graph mgr!";if(i==h)return u.isInterGraph=!1,i.add(u,o,p);if(u.isInterGraph=!0,u.source=o,u.target=p,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},t.prototype.remove=function(r){if(r instanceof n){var a=r;if(a.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(a==this.rootGraph||a.parent!=null&&a.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(a.getEdges());for(var o,p=u.length,i=0;i=r.getRight()?a[0]+=Math.min(r.getX()-t.getX(),t.getRight()-r.getRight()):r.getX()<=t.getX()&&r.getRight()>=t.getRight()&&(a[0]+=Math.min(t.getX()-r.getX(),r.getRight()-t.getRight())),t.getY()<=r.getY()&&t.getBottom()>=r.getBottom()?a[1]+=Math.min(r.getY()-t.getY(),t.getBottom()-r.getBottom()):r.getY()<=t.getY()&&r.getBottom()>=t.getBottom()&&(a[1]+=Math.min(t.getY()-r.getY(),r.getBottom()-t.getBottom()));var p=Math.abs((r.getCenterY()-t.getCenterY())/(r.getCenterX()-t.getCenterX()));r.getCenterY()===t.getCenterY()&&r.getCenterX()===t.getCenterX()&&(p=1);var i=p*a[0],h=a[1]/p;a[0]i)return a[0]=u,a[1]=l,a[2]=p,a[3]=L,!1;if(op)return a[0]=h,a[1]=o,a[2]=g,a[3]=i,!1;if(up?(a[0]=y,a[1]=T,C=!0):(a[0]=d,a[1]=l,C=!0):S===F&&(u>p?(a[0]=h,a[1]=l,C=!0):(a[0]=c,a[1]=T,C=!0)),-_===F?p>u?(a[2]=f,a[3]=L,G=!0):(a[2]=g,a[3]=s,G=!0):_===F&&(p>u?(a[2]=O,a[3]=s,G=!0):(a[2]=N,a[3]=L,G=!0)),C&&G)return!1;if(u>p?o>i?(w=this.getCardinalDirection(S,F,4),x=this.getCardinalDirection(_,F,2)):(w=this.getCardinalDirection(-S,F,3),x=this.getCardinalDirection(-_,F,1)):o>i?(w=this.getCardinalDirection(-S,F,1),x=this.getCardinalDirection(-_,F,3)):(w=this.getCardinalDirection(S,F,2),x=this.getCardinalDirection(_,F,4)),!C)switch(w){case 1:Y=l,P=u+-E/F,a[0]=P,a[1]=Y;break;case 2:P=c,Y=o+D*F,a[0]=P,a[1]=Y;break;case 3:Y=T,P=u+E/F,a[0]=P,a[1]=Y;break;case 4:P=y,Y=o+-D*F,a[0]=P,a[1]=Y;break}if(!G)switch(x){case 1:U=s,X=p+-R/F,a[2]=X,a[3]=U;break;case 2:X=N,U=i+I*F,a[2]=X,a[3]=U;break;case 3:U=L,X=p+R/F,a[2]=X,a[3]=U;break;case 4:X=f,U=i+-I*F,a[2]=X,a[3]=U;break}}return!1},e.getCardinalDirection=function(t,r,a){return t>r?a:1+a%4},e.getIntersection=function(t,r,a,u){if(u==null)return this.getIntersection2(t,r,a);var o=t.x,p=t.y,i=r.x,h=r.y,l=a.x,d=a.y,y=u.x,T=u.y,c=void 0,D=void 0,E=void 0,O=void 0,s=void 0,g=void 0,f=void 0,L=void 0,N=void 0;return E=h-p,s=o-i,f=i*p-o*h,O=T-d,g=l-y,L=y*d-l*T,N=E*g-O*s,N===0?null:(c=(s*L-g*f)/N,D=(O*f-E*L)/N,new n(c,D))},e.angleOfVector=function(t,r,a,u){var o=void 0;return t!==a?(o=Math.atan((u-r)/(a-t)),a0?1:e<0?-1:0},n.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},n.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},m.exports=n}),(function(m,M,v){"use strict";function n(){}A(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,m.exports=n}),(function(m,M,v){"use strict";var n=(function(){function o(p,i){for(var h=0;h"u"?"undefined":n(t);return t==null||r!="object"&&r!="function"},m.exports=e}),(function(m,M,v){"use strict";function n(l){if(Array.isArray(l)){for(var d=0,y=Array(l.length);d0&&d;){for(E.push(s[0]);E.length>0&&d;){var g=E[0];E.splice(0,1),D.add(g);for(var f=g.getEdges(),c=0;c-1&&s.splice(R,1)}D=new Set,O=new Map}}return l},h.prototype.createDummyNodesForBendpoints=function(l){for(var d=[],y=l.source,T=this.graphManager.calcLowestCommonAncestor(l.source,l.target),c=0;c0){for(var T=this.edgeToDummyNodes.get(y),c=0;c=0&&d.splice(L,1);var N=O.getNeighborsList();N.forEach(function(C){if(y.indexOf(C)<0){var G=T.get(C),S=G-1;S==1&&g.push(C),T.set(C,S)}})}y=y.concat(g),(d.length==1||d.length==2)&&(c=!0,D=d[0])}return D},h.prototype.setGraphManager=function(l){this.graphManager=l},m.exports=h}),(function(m,M,v){"use strict";function n(){}A(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},m.exports=n}),(function(m,M,v){"use strict";var n=v(4);function e(t,r){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}A(e,"Transform"),e.prototype.getWorldOrgX=function(){return this.lworldOrgX},e.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},e.prototype.getWorldOrgY=function(){return this.lworldOrgY},e.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},e.prototype.getWorldExtX=function(){return this.lworldExtX},e.prototype.setWorldExtX=function(t){this.lworldExtX=t},e.prototype.getWorldExtY=function(){return this.lworldExtY},e.prototype.setWorldExtY=function(t){this.lworldExtY=t},e.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},e.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},e.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},e.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},e.prototype.getDeviceExtX=function(){return this.ldeviceExtX},e.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},e.prototype.getDeviceExtY=function(){return this.ldeviceExtY},e.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},e.prototype.transformX=function(t){var r=0,a=this.lworldExtX;return a!=0&&(r=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/a),r},e.prototype.transformY=function(t){var r=0,a=this.lworldExtY;return a!=0&&(r=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/a),r},e.prototype.inverseTransformX=function(t){var r=0,a=this.ldeviceExtX;return a!=0&&(r=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/a),r},e.prototype.inverseTransformY=function(t){var r=0,a=this.ldeviceExtY;return a!=0&&(r=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/a),r},e.prototype.inverseTransformPoint=function(t){var r=new n(this.inverseTransformX(t.x),this.inverseTransformY(t.y));return r},m.exports=e}),(function(m,M,v){"use strict";function n(i){if(Array.isArray(i)){for(var h=0,l=Array(i.length);ht.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*t.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(i-t.ADAPTATION_LOWER_NODE_LIMIT)/(t.ADAPTATION_UPPER_NODE_LIMIT-t.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-t.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=t.MAX_NODE_DISPLACEMENT_INCREMENTAL):(i>t.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(t.COOLING_ADAPTATION_FACTOR,1-(i-t.ADAPTATION_LOWER_NODE_LIMIT)/(t.ADAPTATION_UPPER_NODE_LIMIT-t.ADAPTATION_LOWER_NODE_LIMIT)*(1-t.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=t.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},o.prototype.calcSpringForces=function(){for(var i=this.getAllEdges(),h,l=0;l0&&arguments[0]!==void 0?arguments[0]:!0,h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,l,d,y,T,c=this.getAllNodes(),D;if(this.useFRGridVariant)for(this.totalIterations%t.GRID_CALCULATION_CHECK_PERIOD==1&&i&&this.updateGrid(),D=new Set,l=0;lE||D>E)&&(i.gravitationForceX=-this.gravityConstant*y,i.gravitationForceY=-this.gravityConstant*T)):(E=h.getEstimatedSize()*this.compoundGravityRangeFactor,(c>E||D>E)&&(i.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,i.gravitationForceY=-this.gravityConstant*T*this.compoundGravityConstant))},o.prototype.isConverged=function(){var i,h=!1;return this.totalIterations>this.maxIterations/3&&(h=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),i=this.totalDisplacement=c.length||E>=c[0].length)){for(var O=0;Oo},"_defaultCompareFunction")}]),a})();m.exports=r}),(function(m,M,v){"use strict";var n=(function(){function r(a,u){for(var o=0;o2&&arguments[2]!==void 0?arguments[2]:1,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;e(this,r),this.sequence1=a,this.sequence2=u,this.match_score=o,this.mismatch_penalty=p,this.gap_penalty=i,this.iMax=a.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var h=0;h=0;a--){var u=this.listeners[a];u.event===t&&u.callback===r&&this.listeners.splice(a,1)}},e.emit=function(t,r){for(var a=0;a{"use strict";A((function(M,v){typeof Z=="object"&&typeof z=="object"?z.exports=v(q()):typeof define=="function"&&define.amd?define(["layout-base"],v):typeof Z=="object"?Z.coseBase=v(q()):M.coseBase=v(M.layoutBase)}),"webpackUniversalModuleDefinition")(Z,function(m){return(function(M){var v={};function n(e){if(v[e])return v[e].exports;var t=v[e]={i:e,l:!1,exports:{}};return M[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return A(n,"__webpack_require__"),n.m=M,n.c=v,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?A(function(){return e.default},"getDefault"):A(function(){return e},"getModuleExports");return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=7)})([(function(M,v){M.exports=m}),(function(M,v,n){"use strict";var e=n(0).FDLayoutConstants;function t(){}A(t,"CoSEConstants");for(var r in e)t[r]=e[r];t.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,t.DEFAULT_RADIAL_SEPARATION=e.DEFAULT_EDGE_LENGTH,t.DEFAULT_COMPONENT_SEPERATION=60,t.TILE=!0,t.TILING_PADDING_VERTICAL=10,t.TILING_PADDING_HORIZONTAL=10,t.TREE_REDUCTION_ON_INCREMENTAL=!1,M.exports=t}),(function(M,v,n){"use strict";var e=n(0).FDLayoutEdge;function t(a,u,o){e.call(this,a,u,o)}A(t,"CoSEEdge"),t.prototype=Object.create(e.prototype);for(var r in e)t[r]=e[r];M.exports=t}),(function(M,v,n){"use strict";var e=n(0).LGraph;function t(a,u,o){e.call(this,a,u,o)}A(t,"CoSEGraph"),t.prototype=Object.create(e.prototype);for(var r in e)t[r]=e[r];M.exports=t}),(function(M,v,n){"use strict";var e=n(0).LGraphManager;function t(a){e.call(this,a)}A(t,"CoSEGraphManager"),t.prototype=Object.create(e.prototype);for(var r in e)t[r]=e[r];M.exports=t}),(function(M,v,n){"use strict";var e=n(0).FDLayoutNode,t=n(0).IMath;function r(u,o,p,i){e.call(this,u,o,p,i)}A(r,"CoSENode"),r.prototype=Object.create(e.prototype);for(var a in e)r[a]=e[a];r.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*t.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*t.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},r.prototype.propogateDisplacementToChildren=function(u,o){for(var p=this.getChild().getNodes(),i,h=0;h0)this.positionNodesRadially(s);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var g=new Set(this.getAllNodes()),f=this.nodesWithGravity.filter(function(L){return g.has(L)});this.graphManager.setAllNodesToApplyGravitation(f),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},E.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%p.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var s=new Set(this.getAllNodes()),g=this.nodesWithGravity.filter(function(N){return s.has(N)});this.graphManager.setAllNodesToApplyGravitation(g),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=p.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=p.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var f=!this.isTreeGrowing&&!this.isGrowthFinished,L=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(f,L),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},E.prototype.getPositionsData=function(){for(var s=this.graphManager.getAllNodes(),g={},f=0;f1){var C;for(C=0;CL&&(L=Math.floor(R.y)),I=Math.floor(R.x+o.DEFAULT_COMPONENT_SEPERATION)}this.transform(new l(i.WORLD_CENTER_X-R.x/2,i.WORLD_CENTER_Y-R.y/2))},E.radialLayout=function(s,g,f){var L=Math.max(this.maxDiagonalInTree(s),o.DEFAULT_RADIAL_SEPARATION);E.branchRadialLayout(g,null,0,359,0,L);var N=c.calculateBounds(s),I=new D;I.setDeviceOrgX(N.getMinX()),I.setDeviceOrgY(N.getMinY()),I.setWorldOrgX(f.x),I.setWorldOrgY(f.y);for(var R=0;R1;){var b=U[0];U.splice(0,1);var V=w.indexOf(b);V>=0&&w.splice(V,1),Y--,x--}g!=null?X=(w.indexOf(U[0])+1)%Y:X=0;for(var H=Math.abs(L-f)/x,W=X;P!=x;W=++W%Y){var et=w[W].getOtherEnd(s);if(et!=g){var rt=(f+P*H)%360,gt=(rt+H)%360;E.branchRadialLayout(et,s,rt,gt,N+I,I),P++}}},E.maxDiagonalInTree=function(s){for(var g=y.MIN_VALUE,f=0;fg&&(g=N)}return g},E.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},E.prototype.groupZeroDegreeMembers=function(){var s=this,g={};this.memberGroups={},this.idToDummyNode={};for(var f=[],L=this.graphManager.getAllNodes(),N=0;N"u"&&(g[C]=[]),g[C]=g[C].concat(I)}Object.keys(g).forEach(function(G){if(g[G].length>1){var S="DummyCompound_"+G;s.memberGroups[S]=g[G];var _=g[G][0].getParent(),F=new a(s.graphManager);F.id=S,F.paddingLeft=_.paddingLeft||0,F.paddingRight=_.paddingRight||0,F.paddingBottom=_.paddingBottom||0,F.paddingTop=_.paddingTop||0,s.idToDummyNode[S]=F;var w=s.getGraphManager().add(s.newGraph(),F),x=_.getChild();x.add(F);for(var P=0;P=0;s--){var g=this.compoundOrder[s],f=g.id,L=g.paddingLeft,N=g.paddingTop;this.adjustLocations(this.tiledMemberPack[f],g.rect.x,g.rect.y,L,N)}},E.prototype.repopulateZeroDegreeMembers=function(){var s=this,g=this.tiledZeroDegreePack;Object.keys(g).forEach(function(f){var L=s.idToDummyNode[f],N=L.paddingLeft,I=L.paddingTop;s.adjustLocations(g[f],L.rect.x,L.rect.y,N,I)})},E.prototype.getToBeTiled=function(s){var g=s.id;if(this.toBeTiled[g]!=null)return this.toBeTiled[g];var f=s.getChild();if(f==null)return this.toBeTiled[g]=!1,!1;for(var L=f.getNodes(),N=0;N0)return this.toBeTiled[g]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[g]=!1,!1}return this.toBeTiled[g]=!0,!0},E.prototype.getNodeDegree=function(s){for(var g=s.id,f=s.getEdges(),L=0,N=0;NG&&(G=_.rect.height)}f+=G+s.verticalPadding}},E.prototype.tileCompoundMembers=function(s,g){var f=this;this.tiledMemberPack=[],Object.keys(s).forEach(function(L){var N=g[L];f.tiledMemberPack[L]=f.tileNodes(s[L],N.paddingLeft+N.paddingRight),N.rect.width=f.tiledMemberPack[L].width,N.rect.height=f.tiledMemberPack[L].height})},E.prototype.tileNodes=function(s,g){var f=o.TILING_PADDING_VERTICAL,L=o.TILING_PADDING_HORIZONTAL,N={rows:[],rowWidth:[],rowHeight:[],width:0,height:g,verticalPadding:f,horizontalPadding:L};s.sort(function(C,G){return C.rect.width*C.rect.height>G.rect.width*G.rect.height?-1:C.rect.width*C.rect.height0&&(R+=s.horizontalPadding),s.rowWidth[f]=R,s.width0&&(C+=s.verticalPadding);var G=0;C>s.rowHeight[f]&&(G=s.rowHeight[f],s.rowHeight[f]=C,G=s.rowHeight[f]-G),s.height+=G,s.rows[f].push(g)},E.prototype.getShortestRowIndex=function(s){for(var g=-1,f=Number.MAX_VALUE,L=0;Lf&&(g=L,f=s.rowWidth[L]);return g},E.prototype.canAddHorizontal=function(s,g,f){var L=this.getShortestRowIndex(s);if(L<0)return!0;var N=s.rowWidth[L];if(N+s.horizontalPadding+g<=s.width)return!0;var I=0;s.rowHeight[L]0&&(I=f+s.verticalPadding-s.rowHeight[L]);var R;s.width-N>=g+s.horizontalPadding?R=(s.height+I)/(N+g+s.horizontalPadding):R=(s.height+I)/s.width,I=f+s.verticalPadding;var C;return s.widthI&&g!=f){L.splice(-1,1),s.rows[f].push(N),s.rowWidth[g]=s.rowWidth[g]-I,s.rowWidth[f]=s.rowWidth[f]+I,s.width=s.rowWidth[instance.getLongestRowIndex(s)];for(var R=Number.MIN_VALUE,C=0;CR&&(R=L[C].height);g>0&&(R+=s.verticalPadding);var G=s.rowHeight[g]+s.rowHeight[f];s.rowHeight[g]=R,s.rowHeight[f]0)for(var x=N;x<=I;x++)w[0]+=this.grid[x][R-1].length+this.grid[x][R].length-1;if(I0)for(var x=R;x<=C;x++)w[3]+=this.grid[N-1][x].length+this.grid[N][x].length-1;for(var P=y.MAX_VALUE,Y,X,U=0;U{"use strict";A((function(M,v){typeof j=="object"&&typeof tt=="object"?tt.exports=v(J()):typeof define=="function"&&define.amd?define(["cose-base"],v):typeof j=="object"?j.cytoscapeCoseBilkent=v(J()):M.cytoscapeCoseBilkent=v(M.coseBase)}),"webpackUniversalModuleDefinition")(j,function(m){return(function(M){var v={};function n(e){if(v[e])return v[e].exports;var t=v[e]={i:e,l:!1,exports:{}};return M[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return A(n,"__webpack_require__"),n.m=M,n.c=v,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?A(function(){return e.default},"getDefault"):A(function(){return e},"getModuleExports");return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)})([(function(M,v){M.exports=m}),(function(M,v,n){"use strict";var e=n(0).layoutBase.LayoutConstants,t=n(0).layoutBase.FDLayoutConstants,r=n(0).CoSEConstants,a=n(0).CoSELayout,u=n(0).CoSENode,o=n(0).layoutBase.PointD,p=n(0).layoutBase.DimensionD,i={ready:A(function(){},"ready"),stop:A(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function h(T,c){var D={};for(var E in T)D[E]=T[E];for(var E in c)D[E]=c[E];return D}A(h,"extend");function l(T){this.options=h(i,T),d(this.options)}A(l,"_CoSELayout");var d=A(function(c){c.nodeRepulsion!=null&&(r.DEFAULT_REPULSION_STRENGTH=t.DEFAULT_REPULSION_STRENGTH=c.nodeRepulsion),c.idealEdgeLength!=null&&(r.DEFAULT_EDGE_LENGTH=t.DEFAULT_EDGE_LENGTH=c.idealEdgeLength),c.edgeElasticity!=null&&(r.DEFAULT_SPRING_STRENGTH=t.DEFAULT_SPRING_STRENGTH=c.edgeElasticity),c.nestingFactor!=null&&(r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=c.nestingFactor),c.gravity!=null&&(r.DEFAULT_GRAVITY_STRENGTH=t.DEFAULT_GRAVITY_STRENGTH=c.gravity),c.numIter!=null&&(r.MAX_ITERATIONS=t.MAX_ITERATIONS=c.numIter),c.gravityRange!=null&&(r.DEFAULT_GRAVITY_RANGE_FACTOR=t.DEFAULT_GRAVITY_RANGE_FACTOR=c.gravityRange),c.gravityCompound!=null&&(r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.DEFAULT_COMPOUND_GRAVITY_STRENGTH=c.gravityCompound),c.gravityRangeCompound!=null&&(r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=c.gravityRangeCompound),c.initialEnergyOnIncremental!=null&&(r.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.DEFAULT_COOLING_FACTOR_INCREMENTAL=c.initialEnergyOnIncremental),c.quality=="draft"?e.QUALITY=0:c.quality=="proof"?e.QUALITY=2:e.QUALITY=1,r.NODE_DIMENSIONS_INCLUDE_LABELS=t.NODE_DIMENSIONS_INCLUDE_LABELS=e.NODE_DIMENSIONS_INCLUDE_LABELS=c.nodeDimensionsIncludeLabels,r.DEFAULT_INCREMENTAL=t.DEFAULT_INCREMENTAL=e.DEFAULT_INCREMENTAL=!c.randomize,r.ANIMATE=t.ANIMATE=e.ANIMATE=c.animate,r.TILE=c.tile,r.TILING_PADDING_VERTICAL=typeof c.tilingPaddingVertical=="function"?c.tilingPaddingVertical.call():c.tilingPaddingVertical,r.TILING_PADDING_HORIZONTAL=typeof c.tilingPaddingHorizontal=="function"?c.tilingPaddingHorizontal.call():c.tilingPaddingHorizontal},"getUserOptions");l.prototype.run=function(){var T,c,D=this.options,E=this.idToLNode={},O=this.layout=new a,s=this;s.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var g=O.newGraphManager();this.gm=g;var f=this.options.eles.nodes(),L=this.options.eles.edges();this.root=g.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(f),O);for(var N=0;N0){var C;C=D.getGraphManager().add(D.newGraph(),f),this.processChildrenList(C,g,D)}}},l.prototype.stop=function(){return this.stopped=!0,this};var y=A(function(c){c("layout","cose-bilkent",l)},"register");typeof cytoscape<"u"&&y(cytoscape),M.exports=y})])})});var ot=ft(nt(),1);$.use(ot.default);function ct(m,M){m.forEach(v=>{let n={id:v.id,labelText:v.label,height:v.height,width:v.width,padding:v.padding??0};Object.keys(v).forEach(e=>{["id","label","height","width","padding","x","y"].includes(e)||(n[e]=v[e])}),M.add({group:"nodes",data:n,position:{x:v.x??0,y:v.y??0}})})}A(ct,"addNodes");function pt(m,M){m.forEach(v=>{let n={id:v.id,source:v.start,target:v.end};Object.keys(v).forEach(e=>{["id","start","end"].includes(e)||(n[e]=v[e])}),M.add({group:"edges",data:n})})}A(pt,"addEdges");function st(m){return new Promise(M=>{let v=it("body").append("div").attr("id","cy").attr("style","display:none"),n=$({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});v.remove(),ct(m.nodes,n),pt(m.edges,n),n.nodes().forEach(function(t){t.layoutDimensions=()=>{let r=t.data();return{w:r.width,h:r.height}}});let e={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(e).run(),n.ready(t=>{B.info("Cytoscape ready",t),M(n)})})}A(st,"createCytoscapeInstance");function at(m){return m.nodes().map(M=>{let v=M.data(),n=M.position(),e={id:v.id,x:n.x,y:n.y};return Object.keys(v).forEach(t=>{t!=="id"&&(e[t]=v[t])}),e})}A(at,"extractPositionedNodes");function ht(m){return m.edges().map(M=>{let v=M.data(),n=M._private.rscratch,e={id:v.id,source:v.source,target:v.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(v).forEach(t=>{["id","source","target"].includes(t)||(e[t]=v[t])}),e})}A(ht,"extractPositionedEdges");async function lt(m,M){B.debug("Starting cose-bilkent layout algorithm");try{dt(m);let v=await st(m),n=at(v),e=ht(v);return B.debug(`Layout completed: ${n.length} nodes, ${e.length} edges`),{nodes:n,edges:e}}catch(v){throw B.error("Error in cose-bilkent layout algorithm:",v),v}}A(lt,"executeCoseBilkentLayout");function dt(m){if(!m)throw new Error("Layout data is required");if(!m.config)throw new Error("Configuration is required in layout data");if(!m.rootNode)throw new Error("Root node is required");if(!m.nodes||!Array.isArray(m.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(m.edges))throw new Error("Edges array is required in layout data");return!0}A(dt,"validateLayoutData");var ut=A(async(m,M,{insertCluster:v,insertEdge:n,insertEdgeLabel:e,insertMarkers:t,insertNode:r,log:a,positionEdgeLabel:u},{algorithm:o})=>{let p={},i={},h=M.select("g");t(h,m.markers,m.type,m.diagramId);let l=h.insert("g").attr("class","subgraphs"),d=h.insert("g").attr("class","edgePaths"),y=h.insert("g").attr("class","edgeLabels"),T=h.insert("g").attr("class","nodes");a.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(m.nodes.map(async E=>{if(E.isGroup){let O={...E};i[E.id]=O,p[E.id]=O,await v(l,E)}else{let O={...E};p[E.id]=O;let s=await r(T,E,{config:m.config,dir:m.direction||"TB"}),g=s.node().getBBox();O.width=g.width,O.height=g.height,O.domId=s,a.debug(`Node ${E.id} dimensions: ${g.width}x${g.height}`)}})),a.debug("Running cose-bilkent layout algorithm");let c={...m,nodes:m.nodes.map(E=>{let O=p[E.id];return{...E,width:O.width,height:O.height}})},D=await lt(c,m.config);a.debug("Positioning nodes based on layout results"),D.nodes.forEach(E=>{let O=p[E.id];O?.domId&&(O.domId.attr("transform",`translate(${E.x}, ${E.y})`),O.x=E.x,O.y=E.y,a.debug(`Positioned node ${O.id} at center (${E.x}, ${E.y})`))}),D.edges.forEach(E=>{let O=m.edges.find(s=>s.id===E.id);O&&(O.points=[{x:E.startX,y:E.startY},{x:E.midX,y:E.midY},{x:E.endX,y:E.endY}])}),a.debug("Inserting and positioning edges"),await Promise.all(m.edges.map(async E=>{let O=await e(y,E),s=p[E.start??""],g=p[E.end??""];if(s&&g){let f=D.edges.find(L=>L.id===E.id);if(f){a.debug("APA01 positionedEdge",f);let L={...E},N=n(d,L,i,m.type,s,g,m.diagramId);u(L,N)}else{let L={...E,points:[{x:s.x||0,y:s.y||0},{x:g.x||0,y:g.y||0}]},N=n(d,L,i,m.type,s,g,m.diagramId);u(L,N)}}})),a.debug("Cose-bilkent rendering completed")},"render");var xt=ut;export{xt as render}; +import{a as $}from"./chunk-3SSMPTDK.mjs";import{b as B,h as it}from"./chunk-7W6UQGC5.mjs";import{a as A,b as Q,d as ft}from"./chunk-AQ6EADP3.mjs";var q=Q((k,K)=>{"use strict";A((function(M,v){typeof k=="object"&&typeof K=="object"?K.exports=v():typeof define=="function"&&define.amd?define([],v):typeof k=="object"?k.layoutBase=v():M.layoutBase=v()}),"webpackUniversalModuleDefinition")(k,function(){return(function(m){var M={};function v(n){if(M[n])return M[n].exports;var e=M[n]={i:n,l:!1,exports:{}};return m[n].call(e.exports,e,e.exports,v),e.l=!0,e.exports}return A(v,"__webpack_require__"),v.m=m,v.c=M,v.i=function(n){return n},v.d=function(n,e,t){v.o(n,e)||Object.defineProperty(n,e,{configurable:!1,enumerable:!0,get:t})},v.n=function(n){var e=n&&n.__esModule?A(function(){return n.default},"getDefault"):A(function(){return n},"getModuleExports");return v.d(e,"a",e),e},v.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},v.p="",v(v.s=26)})([(function(m,M,v){"use strict";function n(){}A(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,m.exports=n}),(function(m,M,v){"use strict";var n=v(2),e=v(8),t=v(9);function r(u,o,p){n.call(this,p),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=p,this.bendpoints=[],this.source=u,this.target=o}A(r,"LEdge"),r.prototype=Object.create(n.prototype);for(var a in n)r[a]=n[a];r.prototype.getSource=function(){return this.source},r.prototype.getTarget=function(){return this.target},r.prototype.isInterGraph=function(){return this.isInterGraph},r.prototype.getLength=function(){return this.length},r.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},r.prototype.getBendpoints=function(){return this.bendpoints},r.prototype.getLca=function(){return this.lca},r.prototype.getSourceInLca=function(){return this.sourceInLca},r.prototype.getTargetInLca=function(){return this.targetInLca},r.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},r.prototype.getOtherEndInGraph=function(u,o){for(var p=this.getOtherEnd(u),i=o.getGraphManager().getRoot();;){if(p.getOwner()==o)return p;if(p.getOwner()==i)break;p=p.getOwner().getParent()}return null},r.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=e.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=t.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=t.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},r.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=t.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=t.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},m.exports=r}),(function(m,M,v){"use strict";function n(e){this.vGraphObject=e}A(n,"LGraphObject"),m.exports=n}),(function(m,M,v){"use strict";var n=v(2),e=v(10),t=v(13),r=v(0),a=v(16),u=v(4);function o(i,h,l,d){l==null&&d==null&&(d=h),n.call(this,d),i.graphManager!=null&&(i=i.graphManager),this.estimatedSize=e.MIN_VALUE,this.inclusionTreeDepth=e.MAX_VALUE,this.vGraphObject=d,this.edges=[],this.graphManager=i,l!=null&&h!=null?this.rect=new t(h.x,h.y,l.width,l.height):this.rect=new t}A(o,"LNode"),o.prototype=Object.create(n.prototype);for(var p in n)o[p]=n[p];o.prototype.getEdges=function(){return this.edges},o.prototype.getChild=function(){return this.child},o.prototype.getOwner=function(){return this.owner},o.prototype.getWidth=function(){return this.rect.width},o.prototype.setWidth=function(i){this.rect.width=i},o.prototype.getHeight=function(){return this.rect.height},o.prototype.setHeight=function(i){this.rect.height=i},o.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},o.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},o.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},o.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},o.prototype.getRect=function(){return this.rect},o.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},o.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},o.prototype.setRect=function(i,h){this.rect.x=i.x,this.rect.y=i.y,this.rect.width=h.width,this.rect.height=h.height},o.prototype.setCenter=function(i,h){this.rect.x=i-this.rect.width/2,this.rect.y=h-this.rect.height/2},o.prototype.setLocation=function(i,h){this.rect.x=i,this.rect.y=h},o.prototype.moveBy=function(i,h){this.rect.x+=i,this.rect.y+=h},o.prototype.getEdgeListToNode=function(i){var h=[],l,d=this;return d.edges.forEach(function(y){if(y.target==i){if(y.source!=d)throw"Incorrect edge source!";h.push(y)}}),h},o.prototype.getEdgesBetween=function(i){var h=[],l,d=this;return d.edges.forEach(function(y){if(!(y.source==d||y.target==d))throw"Incorrect edge source and/or target";(y.target==i||y.source==i)&&h.push(y)}),h},o.prototype.getNeighborsList=function(){var i=new Set,h=this;return h.edges.forEach(function(l){if(l.source==h)i.add(l.target);else{if(l.target!=h)throw"Incorrect incidency!";i.add(l.source)}}),i},o.prototype.withChildren=function(){var i=new Set,h,l;if(i.add(this),this.child!=null)for(var d=this.child.getNodes(),y=0;yh&&(this.rect.x-=(this.labelWidth-h)/2,this.setWidth(this.labelWidth)),this.labelHeight>l&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-l)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-l),this.setHeight(this.labelHeight))}}},o.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==e.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},o.prototype.transform=function(i){var h=this.rect.x;h>r.WORLD_BOUNDARY?h=r.WORLD_BOUNDARY:h<-r.WORLD_BOUNDARY&&(h=-r.WORLD_BOUNDARY);var l=this.rect.y;l>r.WORLD_BOUNDARY?l=r.WORLD_BOUNDARY:l<-r.WORLD_BOUNDARY&&(l=-r.WORLD_BOUNDARY);var d=new u(h,l),y=i.inverseTransformPoint(d);this.setLocation(y.x,y.y)},o.prototype.getLeft=function(){return this.rect.x},o.prototype.getRight=function(){return this.rect.x+this.rect.width},o.prototype.getTop=function(){return this.rect.y},o.prototype.getBottom=function(){return this.rect.y+this.rect.height},o.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},m.exports=o}),(function(m,M,v){"use strict";function n(e,t){e==null&&t==null?(this.x=0,this.y=0):(this.x=e,this.y=t)}A(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(e){this.x=e},n.prototype.setY=function(e){this.y=e},n.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},m.exports=n}),(function(m,M,v){"use strict";var n=v(2),e=v(10),t=v(0),r=v(6),a=v(3),u=v(1),o=v(13),p=v(12),i=v(11);function h(d,y,T){n.call(this,T),this.estimatedSize=e.MIN_VALUE,this.margin=t.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=d,y!=null&&y instanceof r?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}A(h,"LGraph"),h.prototype=Object.create(n.prototype);for(var l in n)h[l]=n[l];h.prototype.getNodes=function(){return this.nodes},h.prototype.getEdges=function(){return this.edges},h.prototype.getGraphManager=function(){return this.graphManager},h.prototype.getParent=function(){return this.parent},h.prototype.getLeft=function(){return this.left},h.prototype.getRight=function(){return this.right},h.prototype.getTop=function(){return this.top},h.prototype.getBottom=function(){return this.bottom},h.prototype.isConnected=function(){return this.isConnected},h.prototype.add=function(d,y,T){if(y==null&&T==null){var c=d;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(c)>-1)throw"Node already in graph!";return c.owner=this,this.getNodes().push(c),c}else{var D=d;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(T)>-1))throw"Source or target not in graph!";if(!(y.owner==T.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=T.owner?null:(D.source=y,D.target=T,D.isInterGraph=!1,this.getEdges().push(D),y.edges.push(D),T!=y&&T.edges.push(D),D)}},h.prototype.remove=function(d){var y=d;if(d instanceof a){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var T=y.edges.slice(),c,D=T.length,E=0;E-1&&g>-1))throw"Source and/or target doesn't know this edge!";c.source.edges.splice(s,1),c.target!=c.source&&c.target.edges.splice(g,1);var O=c.source.owner.getEdges().indexOf(c);if(O==-1)throw"Not in owner's edge list!";c.source.owner.getEdges().splice(O,1)}},h.prototype.updateLeftTop=function(){for(var d=e.MAX_VALUE,y=e.MAX_VALUE,T,c,D,E=this.getNodes(),O=E.length,s=0;sT&&(d=T),y>c&&(y=c)}return d==e.MAX_VALUE?null:(E[0].getParent().paddingLeft!=null?D=E[0].getParent().paddingLeft:D=this.margin,this.left=y-D,this.top=d-D,new p(this.left,this.top))},h.prototype.updateBounds=function(d){for(var y=e.MAX_VALUE,T=-e.MAX_VALUE,c=e.MAX_VALUE,D=-e.MAX_VALUE,E,O,s,g,f,L=this.nodes,N=L.length,I=0;IE&&(y=E),Ts&&(c=s),DE&&(y=E),Ts&&(c=s),D=this.nodes.length){var N=0;T.forEach(function(I){I.owner==d&&N++}),N==this.nodes.length&&(this.isConnected=!0)}},m.exports=h}),(function(m,M,v){"use strict";var n,e=v(1);function t(r){n=v(5),this.layout=r,this.graphs=[],this.edges=[]}A(t,"LGraphManager"),t.prototype.addRoot=function(){var r=this.layout.newGraph(),a=this.layout.newNode(null),u=this.add(r,a);return this.setRootGraph(u),this.rootGraph},t.prototype.add=function(r,a,u,o,p){if(u==null&&o==null&&p==null){if(r==null)throw"Graph is null!";if(a==null)throw"Parent node is null!";if(this.graphs.indexOf(r)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(r),r.parent!=null)throw"Already has a parent!";if(a.child!=null)throw"Already has a child!";return r.parent=a,a.child=r,r}else{p=u,o=a,u=r;var i=o.getOwner(),h=p.getOwner();if(!(i!=null&&i.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(h!=null&&h.getGraphManager()==this))throw"Target not in this graph mgr!";if(i==h)return u.isInterGraph=!1,i.add(u,o,p);if(u.isInterGraph=!0,u.source=o,u.target=p,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},t.prototype.remove=function(r){if(r instanceof n){var a=r;if(a.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(a==this.rootGraph||a.parent!=null&&a.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(a.getEdges());for(var o,p=u.length,i=0;i=r.getRight()?a[0]+=Math.min(r.getX()-t.getX(),t.getRight()-r.getRight()):r.getX()<=t.getX()&&r.getRight()>=t.getRight()&&(a[0]+=Math.min(t.getX()-r.getX(),r.getRight()-t.getRight())),t.getY()<=r.getY()&&t.getBottom()>=r.getBottom()?a[1]+=Math.min(r.getY()-t.getY(),t.getBottom()-r.getBottom()):r.getY()<=t.getY()&&r.getBottom()>=t.getBottom()&&(a[1]+=Math.min(t.getY()-r.getY(),r.getBottom()-t.getBottom()));var p=Math.abs((r.getCenterY()-t.getCenterY())/(r.getCenterX()-t.getCenterX()));r.getCenterY()===t.getCenterY()&&r.getCenterX()===t.getCenterX()&&(p=1);var i=p*a[0],h=a[1]/p;a[0]i)return a[0]=u,a[1]=l,a[2]=p,a[3]=L,!1;if(op)return a[0]=h,a[1]=o,a[2]=g,a[3]=i,!1;if(up?(a[0]=y,a[1]=T,C=!0):(a[0]=d,a[1]=l,C=!0):S===F&&(u>p?(a[0]=h,a[1]=l,C=!0):(a[0]=c,a[1]=T,C=!0)),-_===F?p>u?(a[2]=f,a[3]=L,G=!0):(a[2]=g,a[3]=s,G=!0):_===F&&(p>u?(a[2]=O,a[3]=s,G=!0):(a[2]=N,a[3]=L,G=!0)),C&&G)return!1;if(u>p?o>i?(w=this.getCardinalDirection(S,F,4),x=this.getCardinalDirection(_,F,2)):(w=this.getCardinalDirection(-S,F,3),x=this.getCardinalDirection(-_,F,1)):o>i?(w=this.getCardinalDirection(-S,F,1),x=this.getCardinalDirection(-_,F,3)):(w=this.getCardinalDirection(S,F,2),x=this.getCardinalDirection(_,F,4)),!C)switch(w){case 1:Y=l,P=u+-E/F,a[0]=P,a[1]=Y;break;case 2:P=c,Y=o+D*F,a[0]=P,a[1]=Y;break;case 3:Y=T,P=u+E/F,a[0]=P,a[1]=Y;break;case 4:P=y,Y=o+-D*F,a[0]=P,a[1]=Y;break}if(!G)switch(x){case 1:U=s,X=p+-R/F,a[2]=X,a[3]=U;break;case 2:X=N,U=i+I*F,a[2]=X,a[3]=U;break;case 3:U=L,X=p+R/F,a[2]=X,a[3]=U;break;case 4:X=f,U=i+-I*F,a[2]=X,a[3]=U;break}}return!1},e.getCardinalDirection=function(t,r,a){return t>r?a:1+a%4},e.getIntersection=function(t,r,a,u){if(u==null)return this.getIntersection2(t,r,a);var o=t.x,p=t.y,i=r.x,h=r.y,l=a.x,d=a.y,y=u.x,T=u.y,c=void 0,D=void 0,E=void 0,O=void 0,s=void 0,g=void 0,f=void 0,L=void 0,N=void 0;return E=h-p,s=o-i,f=i*p-o*h,O=T-d,g=l-y,L=y*d-l*T,N=E*g-O*s,N===0?null:(c=(s*L-g*f)/N,D=(O*f-E*L)/N,new n(c,D))},e.angleOfVector=function(t,r,a,u){var o=void 0;return t!==a?(o=Math.atan((u-r)/(a-t)),a0?1:e<0?-1:0},n.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},n.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},m.exports=n}),(function(m,M,v){"use strict";function n(){}A(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,m.exports=n}),(function(m,M,v){"use strict";var n=(function(){function o(p,i){for(var h=0;h"u"?"undefined":n(t);return t==null||r!="object"&&r!="function"},m.exports=e}),(function(m,M,v){"use strict";function n(l){if(Array.isArray(l)){for(var d=0,y=Array(l.length);d0&&d;){for(E.push(s[0]);E.length>0&&d;){var g=E[0];E.splice(0,1),D.add(g);for(var f=g.getEdges(),c=0;c-1&&s.splice(R,1)}D=new Set,O=new Map}}return l},h.prototype.createDummyNodesForBendpoints=function(l){for(var d=[],y=l.source,T=this.graphManager.calcLowestCommonAncestor(l.source,l.target),c=0;c0){for(var T=this.edgeToDummyNodes.get(y),c=0;c=0&&d.splice(L,1);var N=O.getNeighborsList();N.forEach(function(C){if(y.indexOf(C)<0){var G=T.get(C),S=G-1;S==1&&g.push(C),T.set(C,S)}})}y=y.concat(g),(d.length==1||d.length==2)&&(c=!0,D=d[0])}return D},h.prototype.setGraphManager=function(l){this.graphManager=l},m.exports=h}),(function(m,M,v){"use strict";function n(){}A(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},m.exports=n}),(function(m,M,v){"use strict";var n=v(4);function e(t,r){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}A(e,"Transform"),e.prototype.getWorldOrgX=function(){return this.lworldOrgX},e.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},e.prototype.getWorldOrgY=function(){return this.lworldOrgY},e.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},e.prototype.getWorldExtX=function(){return this.lworldExtX},e.prototype.setWorldExtX=function(t){this.lworldExtX=t},e.prototype.getWorldExtY=function(){return this.lworldExtY},e.prototype.setWorldExtY=function(t){this.lworldExtY=t},e.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},e.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},e.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},e.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},e.prototype.getDeviceExtX=function(){return this.ldeviceExtX},e.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},e.prototype.getDeviceExtY=function(){return this.ldeviceExtY},e.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},e.prototype.transformX=function(t){var r=0,a=this.lworldExtX;return a!=0&&(r=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/a),r},e.prototype.transformY=function(t){var r=0,a=this.lworldExtY;return a!=0&&(r=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/a),r},e.prototype.inverseTransformX=function(t){var r=0,a=this.ldeviceExtX;return a!=0&&(r=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/a),r},e.prototype.inverseTransformY=function(t){var r=0,a=this.ldeviceExtY;return a!=0&&(r=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/a),r},e.prototype.inverseTransformPoint=function(t){var r=new n(this.inverseTransformX(t.x),this.inverseTransformY(t.y));return r},m.exports=e}),(function(m,M,v){"use strict";function n(i){if(Array.isArray(i)){for(var h=0,l=Array(i.length);ht.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*t.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(i-t.ADAPTATION_LOWER_NODE_LIMIT)/(t.ADAPTATION_UPPER_NODE_LIMIT-t.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-t.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=t.MAX_NODE_DISPLACEMENT_INCREMENTAL):(i>t.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(t.COOLING_ADAPTATION_FACTOR,1-(i-t.ADAPTATION_LOWER_NODE_LIMIT)/(t.ADAPTATION_UPPER_NODE_LIMIT-t.ADAPTATION_LOWER_NODE_LIMIT)*(1-t.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=t.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},o.prototype.calcSpringForces=function(){for(var i=this.getAllEdges(),h,l=0;l0&&arguments[0]!==void 0?arguments[0]:!0,h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,l,d,y,T,c=this.getAllNodes(),D;if(this.useFRGridVariant)for(this.totalIterations%t.GRID_CALCULATION_CHECK_PERIOD==1&&i&&this.updateGrid(),D=new Set,l=0;lE||D>E)&&(i.gravitationForceX=-this.gravityConstant*y,i.gravitationForceY=-this.gravityConstant*T)):(E=h.getEstimatedSize()*this.compoundGravityRangeFactor,(c>E||D>E)&&(i.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,i.gravitationForceY=-this.gravityConstant*T*this.compoundGravityConstant))},o.prototype.isConverged=function(){var i,h=!1;return this.totalIterations>this.maxIterations/3&&(h=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),i=this.totalDisplacement=c.length||E>=c[0].length)){for(var O=0;Oo},"_defaultCompareFunction")}]),a})();m.exports=r}),(function(m,M,v){"use strict";var n=(function(){function r(a,u){for(var o=0;o2&&arguments[2]!==void 0?arguments[2]:1,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;e(this,r),this.sequence1=a,this.sequence2=u,this.match_score=o,this.mismatch_penalty=p,this.gap_penalty=i,this.iMax=a.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var h=0;h=0;a--){var u=this.listeners[a];u.event===t&&u.callback===r&&this.listeners.splice(a,1)}},e.emit=function(t,r){for(var a=0;a{"use strict";A((function(M,v){typeof Z=="object"&&typeof z=="object"?z.exports=v(q()):typeof define=="function"&&define.amd?define(["layout-base"],v):typeof Z=="object"?Z.coseBase=v(q()):M.coseBase=v(M.layoutBase)}),"webpackUniversalModuleDefinition")(Z,function(m){return(function(M){var v={};function n(e){if(v[e])return v[e].exports;var t=v[e]={i:e,l:!1,exports:{}};return M[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return A(n,"__webpack_require__"),n.m=M,n.c=v,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?A(function(){return e.default},"getDefault"):A(function(){return e},"getModuleExports");return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=7)})([(function(M,v){M.exports=m}),(function(M,v,n){"use strict";var e=n(0).FDLayoutConstants;function t(){}A(t,"CoSEConstants");for(var r in e)t[r]=e[r];t.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,t.DEFAULT_RADIAL_SEPARATION=e.DEFAULT_EDGE_LENGTH,t.DEFAULT_COMPONENT_SEPERATION=60,t.TILE=!0,t.TILING_PADDING_VERTICAL=10,t.TILING_PADDING_HORIZONTAL=10,t.TREE_REDUCTION_ON_INCREMENTAL=!1,M.exports=t}),(function(M,v,n){"use strict";var e=n(0).FDLayoutEdge;function t(a,u,o){e.call(this,a,u,o)}A(t,"CoSEEdge"),t.prototype=Object.create(e.prototype);for(var r in e)t[r]=e[r];M.exports=t}),(function(M,v,n){"use strict";var e=n(0).LGraph;function t(a,u,o){e.call(this,a,u,o)}A(t,"CoSEGraph"),t.prototype=Object.create(e.prototype);for(var r in e)t[r]=e[r];M.exports=t}),(function(M,v,n){"use strict";var e=n(0).LGraphManager;function t(a){e.call(this,a)}A(t,"CoSEGraphManager"),t.prototype=Object.create(e.prototype);for(var r in e)t[r]=e[r];M.exports=t}),(function(M,v,n){"use strict";var e=n(0).FDLayoutNode,t=n(0).IMath;function r(u,o,p,i){e.call(this,u,o,p,i)}A(r,"CoSENode"),r.prototype=Object.create(e.prototype);for(var a in e)r[a]=e[a];r.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*t.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*t.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},r.prototype.propogateDisplacementToChildren=function(u,o){for(var p=this.getChild().getNodes(),i,h=0;h0)this.positionNodesRadially(s);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var g=new Set(this.getAllNodes()),f=this.nodesWithGravity.filter(function(L){return g.has(L)});this.graphManager.setAllNodesToApplyGravitation(f),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},E.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%p.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var s=new Set(this.getAllNodes()),g=this.nodesWithGravity.filter(function(N){return s.has(N)});this.graphManager.setAllNodesToApplyGravitation(g),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=p.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=p.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var f=!this.isTreeGrowing&&!this.isGrowthFinished,L=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(f,L),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},E.prototype.getPositionsData=function(){for(var s=this.graphManager.getAllNodes(),g={},f=0;f1){var C;for(C=0;CL&&(L=Math.floor(R.y)),I=Math.floor(R.x+o.DEFAULT_COMPONENT_SEPERATION)}this.transform(new l(i.WORLD_CENTER_X-R.x/2,i.WORLD_CENTER_Y-R.y/2))},E.radialLayout=function(s,g,f){var L=Math.max(this.maxDiagonalInTree(s),o.DEFAULT_RADIAL_SEPARATION);E.branchRadialLayout(g,null,0,359,0,L);var N=c.calculateBounds(s),I=new D;I.setDeviceOrgX(N.getMinX()),I.setDeviceOrgY(N.getMinY()),I.setWorldOrgX(f.x),I.setWorldOrgY(f.y);for(var R=0;R1;){var b=U[0];U.splice(0,1);var V=w.indexOf(b);V>=0&&w.splice(V,1),Y--,x--}g!=null?X=(w.indexOf(U[0])+1)%Y:X=0;for(var H=Math.abs(L-f)/x,W=X;P!=x;W=++W%Y){var et=w[W].getOtherEnd(s);if(et!=g){var rt=(f+P*H)%360,gt=(rt+H)%360;E.branchRadialLayout(et,s,rt,gt,N+I,I),P++}}},E.maxDiagonalInTree=function(s){for(var g=y.MIN_VALUE,f=0;fg&&(g=N)}return g},E.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},E.prototype.groupZeroDegreeMembers=function(){var s=this,g={};this.memberGroups={},this.idToDummyNode={};for(var f=[],L=this.graphManager.getAllNodes(),N=0;N"u"&&(g[C]=[]),g[C]=g[C].concat(I)}Object.keys(g).forEach(function(G){if(g[G].length>1){var S="DummyCompound_"+G;s.memberGroups[S]=g[G];var _=g[G][0].getParent(),F=new a(s.graphManager);F.id=S,F.paddingLeft=_.paddingLeft||0,F.paddingRight=_.paddingRight||0,F.paddingBottom=_.paddingBottom||0,F.paddingTop=_.paddingTop||0,s.idToDummyNode[S]=F;var w=s.getGraphManager().add(s.newGraph(),F),x=_.getChild();x.add(F);for(var P=0;P=0;s--){var g=this.compoundOrder[s],f=g.id,L=g.paddingLeft,N=g.paddingTop;this.adjustLocations(this.tiledMemberPack[f],g.rect.x,g.rect.y,L,N)}},E.prototype.repopulateZeroDegreeMembers=function(){var s=this,g=this.tiledZeroDegreePack;Object.keys(g).forEach(function(f){var L=s.idToDummyNode[f],N=L.paddingLeft,I=L.paddingTop;s.adjustLocations(g[f],L.rect.x,L.rect.y,N,I)})},E.prototype.getToBeTiled=function(s){var g=s.id;if(this.toBeTiled[g]!=null)return this.toBeTiled[g];var f=s.getChild();if(f==null)return this.toBeTiled[g]=!1,!1;for(var L=f.getNodes(),N=0;N0)return this.toBeTiled[g]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[g]=!1,!1}return this.toBeTiled[g]=!0,!0},E.prototype.getNodeDegree=function(s){for(var g=s.id,f=s.getEdges(),L=0,N=0;NG&&(G=_.rect.height)}f+=G+s.verticalPadding}},E.prototype.tileCompoundMembers=function(s,g){var f=this;this.tiledMemberPack=[],Object.keys(s).forEach(function(L){var N=g[L];f.tiledMemberPack[L]=f.tileNodes(s[L],N.paddingLeft+N.paddingRight),N.rect.width=f.tiledMemberPack[L].width,N.rect.height=f.tiledMemberPack[L].height})},E.prototype.tileNodes=function(s,g){var f=o.TILING_PADDING_VERTICAL,L=o.TILING_PADDING_HORIZONTAL,N={rows:[],rowWidth:[],rowHeight:[],width:0,height:g,verticalPadding:f,horizontalPadding:L};s.sort(function(C,G){return C.rect.width*C.rect.height>G.rect.width*G.rect.height?-1:C.rect.width*C.rect.height0&&(R+=s.horizontalPadding),s.rowWidth[f]=R,s.width0&&(C+=s.verticalPadding);var G=0;C>s.rowHeight[f]&&(G=s.rowHeight[f],s.rowHeight[f]=C,G=s.rowHeight[f]-G),s.height+=G,s.rows[f].push(g)},E.prototype.getShortestRowIndex=function(s){for(var g=-1,f=Number.MAX_VALUE,L=0;Lf&&(g=L,f=s.rowWidth[L]);return g},E.prototype.canAddHorizontal=function(s,g,f){var L=this.getShortestRowIndex(s);if(L<0)return!0;var N=s.rowWidth[L];if(N+s.horizontalPadding+g<=s.width)return!0;var I=0;s.rowHeight[L]0&&(I=f+s.verticalPadding-s.rowHeight[L]);var R;s.width-N>=g+s.horizontalPadding?R=(s.height+I)/(N+g+s.horizontalPadding):R=(s.height+I)/s.width,I=f+s.verticalPadding;var C;return s.widthI&&g!=f){L.splice(-1,1),s.rows[f].push(N),s.rowWidth[g]=s.rowWidth[g]-I,s.rowWidth[f]=s.rowWidth[f]+I,s.width=s.rowWidth[instance.getLongestRowIndex(s)];for(var R=Number.MIN_VALUE,C=0;CR&&(R=L[C].height);g>0&&(R+=s.verticalPadding);var G=s.rowHeight[g]+s.rowHeight[f];s.rowHeight[g]=R,s.rowHeight[f]0)for(var x=N;x<=I;x++)w[0]+=this.grid[x][R-1].length+this.grid[x][R].length-1;if(I0)for(var x=R;x<=C;x++)w[3]+=this.grid[N-1][x].length+this.grid[N][x].length-1;for(var P=y.MAX_VALUE,Y,X,U=0;U{"use strict";A((function(M,v){typeof j=="object"&&typeof tt=="object"?tt.exports=v(J()):typeof define=="function"&&define.amd?define(["cose-base"],v):typeof j=="object"?j.cytoscapeCoseBilkent=v(J()):M.cytoscapeCoseBilkent=v(M.coseBase)}),"webpackUniversalModuleDefinition")(j,function(m){return(function(M){var v={};function n(e){if(v[e])return v[e].exports;var t=v[e]={i:e,l:!1,exports:{}};return M[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return A(n,"__webpack_require__"),n.m=M,n.c=v,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?A(function(){return e.default},"getDefault"):A(function(){return e},"getModuleExports");return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)})([(function(M,v){M.exports=m}),(function(M,v,n){"use strict";var e=n(0).layoutBase.LayoutConstants,t=n(0).layoutBase.FDLayoutConstants,r=n(0).CoSEConstants,a=n(0).CoSELayout,u=n(0).CoSENode,o=n(0).layoutBase.PointD,p=n(0).layoutBase.DimensionD,i={ready:A(function(){},"ready"),stop:A(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function h(T,c){var D={};for(var E in T)D[E]=T[E];for(var E in c)D[E]=c[E];return D}A(h,"extend");function l(T){this.options=h(i,T),d(this.options)}A(l,"_CoSELayout");var d=A(function(c){c.nodeRepulsion!=null&&(r.DEFAULT_REPULSION_STRENGTH=t.DEFAULT_REPULSION_STRENGTH=c.nodeRepulsion),c.idealEdgeLength!=null&&(r.DEFAULT_EDGE_LENGTH=t.DEFAULT_EDGE_LENGTH=c.idealEdgeLength),c.edgeElasticity!=null&&(r.DEFAULT_SPRING_STRENGTH=t.DEFAULT_SPRING_STRENGTH=c.edgeElasticity),c.nestingFactor!=null&&(r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=c.nestingFactor),c.gravity!=null&&(r.DEFAULT_GRAVITY_STRENGTH=t.DEFAULT_GRAVITY_STRENGTH=c.gravity),c.numIter!=null&&(r.MAX_ITERATIONS=t.MAX_ITERATIONS=c.numIter),c.gravityRange!=null&&(r.DEFAULT_GRAVITY_RANGE_FACTOR=t.DEFAULT_GRAVITY_RANGE_FACTOR=c.gravityRange),c.gravityCompound!=null&&(r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.DEFAULT_COMPOUND_GRAVITY_STRENGTH=c.gravityCompound),c.gravityRangeCompound!=null&&(r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=c.gravityRangeCompound),c.initialEnergyOnIncremental!=null&&(r.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.DEFAULT_COOLING_FACTOR_INCREMENTAL=c.initialEnergyOnIncremental),c.quality=="draft"?e.QUALITY=0:c.quality=="proof"?e.QUALITY=2:e.QUALITY=1,r.NODE_DIMENSIONS_INCLUDE_LABELS=t.NODE_DIMENSIONS_INCLUDE_LABELS=e.NODE_DIMENSIONS_INCLUDE_LABELS=c.nodeDimensionsIncludeLabels,r.DEFAULT_INCREMENTAL=t.DEFAULT_INCREMENTAL=e.DEFAULT_INCREMENTAL=!c.randomize,r.ANIMATE=t.ANIMATE=e.ANIMATE=c.animate,r.TILE=c.tile,r.TILING_PADDING_VERTICAL=typeof c.tilingPaddingVertical=="function"?c.tilingPaddingVertical.call():c.tilingPaddingVertical,r.TILING_PADDING_HORIZONTAL=typeof c.tilingPaddingHorizontal=="function"?c.tilingPaddingHorizontal.call():c.tilingPaddingHorizontal},"getUserOptions");l.prototype.run=function(){var T,c,D=this.options,E=this.idToLNode={},O=this.layout=new a,s=this;s.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var g=O.newGraphManager();this.gm=g;var f=this.options.eles.nodes(),L=this.options.eles.edges();this.root=g.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(f),O);for(var N=0;N0){var C;C=D.getGraphManager().add(D.newGraph(),f),this.processChildrenList(C,g,D)}}},l.prototype.stop=function(){return this.stopped=!0,this};var y=A(function(c){c("layout","cose-bilkent",l)},"register");typeof cytoscape<"u"&&y(cytoscape),M.exports=y})])})});var ot=ft(nt(),1);$.use(ot.default);function ct(m,M){m.forEach(v=>{let n={id:v.id,labelText:v.label,height:v.height,width:v.width,padding:v.padding??0};Object.keys(v).forEach(e=>{["id","label","height","width","padding","x","y"].includes(e)||(n[e]=v[e])}),M.add({group:"nodes",data:n,position:{x:v.x??0,y:v.y??0}})})}A(ct,"addNodes");function pt(m,M){m.forEach(v=>{let n={id:v.id,source:v.start,target:v.end};Object.keys(v).forEach(e=>{["id","start","end"].includes(e)||(n[e]=v[e])}),M.add({group:"edges",data:n})})}A(pt,"addEdges");function st(m){return new Promise(M=>{let v=it("body").append("div").attr("id","cy").attr("style","display:none"),n=$({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});v.remove(),ct(m.nodes,n),pt(m.edges,n),n.nodes().forEach(function(t){t.layoutDimensions=()=>{let r=t.data();return{w:r.width,h:r.height}}});let e={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(e).run(),n.ready(t=>{B.info("Cytoscape ready",t),M(n)})})}A(st,"createCytoscapeInstance");function at(m){return m.nodes().map(M=>{let v=M.data(),n=M.position(),e={id:v.id,x:n.x,y:n.y};return Object.keys(v).forEach(t=>{t!=="id"&&(e[t]=v[t])}),e})}A(at,"extractPositionedNodes");function ht(m){return m.edges().map(M=>{let v=M.data(),n=M._private.rscratch,e={id:v.id,source:v.source,target:v.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(v).forEach(t=>{["id","source","target"].includes(t)||(e[t]=v[t])}),e})}A(ht,"extractPositionedEdges");async function lt(m,M){B.debug("Starting cose-bilkent layout algorithm");try{dt(m);let v=await st(m),n=at(v),e=ht(v);return B.debug(`Layout completed: ${n.length} nodes, ${e.length} edges`),{nodes:n,edges:e}}catch(v){throw B.error("Error in cose-bilkent layout algorithm:",v),v}}A(lt,"executeCoseBilkentLayout");function dt(m){if(!m)throw new Error("Layout data is required");if(!m.config)throw new Error("Configuration is required in layout data");if(!m.rootNode)throw new Error("Root node is required");if(!m.nodes||!Array.isArray(m.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(m.edges))throw new Error("Edges array is required in layout data");return!0}A(dt,"validateLayoutData");var ut=A(async(m,M,{insertCluster:v,insertEdge:n,insertEdgeLabel:e,insertMarkers:t,insertNode:r,log:a,positionEdgeLabel:u},{algorithm:o})=>{let p={},i={},h=M.select("g");t(h,m.markers,m.type,m.diagramId);let l=h.insert("g").attr("class","subgraphs"),d=h.insert("g").attr("class","edgePaths"),y=h.insert("g").attr("class","edgeLabels"),T=h.insert("g").attr("class","nodes");a.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(m.nodes.map(async E=>{if(E.isGroup){let O={...E};i[E.id]=O,p[E.id]=O,await v(l,E)}else{let O={...E};p[E.id]=O;let s=await r(T,E,{config:m.config,dir:m.direction||"TB"}),g=s.node().getBBox();O.width=g.width,O.height=g.height,O.domId=s,a.debug(`Node ${E.id} dimensions: ${g.width}x${g.height}`)}})),a.debug("Running cose-bilkent layout algorithm");let c={...m,nodes:m.nodes.map(E=>{let O=p[E.id];return{...E,width:O.width,height:O.height}})},D=await lt(c,m.config);a.debug("Positioning nodes based on layout results"),D.nodes.forEach(E=>{let O=p[E.id];O?.domId&&(O.domId.attr("transform",`translate(${E.x}, ${E.y})`),O.x=E.x,O.y=E.y,a.debug(`Positioned node ${O.id} at center (${E.x}, ${E.y})`))}),D.edges.forEach(E=>{let O=m.edges.find(s=>s.id===E.id);O&&(O.points=[{x:E.startX,y:E.startY},{x:E.midX,y:E.midY},{x:E.endX,y:E.endY}])}),a.debug("Inserting and positioning edges"),await Promise.all(m.edges.map(async E=>{let O=await e(y,E),s=p[E.start??""],g=p[E.end??""];if(s&&g){let f=D.edges.find(L=>L.id===E.id);if(f){a.debug("APA01 positionedEdge",f);let L={...E},N=n(d,L,i,m.type,s,g,m.diagramId);u(L,N)}else{let L={...E,points:[{x:s.x||0,y:s.y||0},{x:g.x||0,y:g.y||0}]},N=n(d,L,i,m.type,s,g,m.diagramId);u(L,N)}}})),a.debug("Cose-bilkent rendering completed")},"render");var xt=ut;export{xt as render}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-PNC4W37J.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-UX7MHV2Q.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-PNC4W37J.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/cose-bilkent-UX7MHV2Q.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/dagre-GNUAUHNH.mjs b/assets/mermaid/chunks/mermaid.esm.min/dagre-GNUAUHNH.mjs deleted file mode 100644 index a73a06e..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/dagre-GNUAUHNH.mjs +++ /dev/null @@ -1,4 +0,0 @@ -import{a as z}from"./chunk-3YCYZ6SJ.mjs";import{a as C}from"./chunk-HN6EAY2L.mjs";import{a as R,b as M,c as F,d as U,e as Y}from"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import{b as G,e as A,f as _,g as H,h as j,i as V,j as O}from"./chunk-BDKIFH7H.mjs";import{b as T}from"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{Y as B}from"./chunk-3UWU4A3N.mjs";import{b as i}from"./chunk-MGPAVIPZ.mjs";import{D as y,e as q,s as k}from"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as g}from"./chunk-VELTKBKT.mjs";function h(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:re(e),edges:se(e)};return y(e.graph())||(t.value=q(e.graph())),t}g(h,"write");function re(e){return k(e.nodes(),function(t){var n=e.node(t),c=e.parent(t),s={v:t};return y(n)||(s.value=n),y(c)||(s.parent=c),s})}g(re,"writeNodes");function se(e){return k(e.edges(),function(t){var n=e.edge(t),c={v:t.v,w:t.w};return y(t.name)||(c.name=t.name),y(n)||(c.value=n),c})}g(se,"writeEdges");var a=new Map,v=new Map,W=new Map,Z=g(()=>{v.clear(),W.clear(),a.clear()},"clear"),J=g((e,t)=>{let n=v.get(t)||[];return i.trace("In isDescendant",t," ",e," = ",n.includes(e)),n.includes(e)},"isDescendant"),ce=g((e,t)=>{let n=v.get(t)||[];return i.info("Descendants of ",t," is ",n),i.info("Edge is ",e),e.v===t||e.w===t?!1:n?n.includes(e.v)||J(e.v,t)||J(e.w,t)||n.includes(e.w):(i.debug("Tilt, ",t,",not in descendants"),!1)},"edgeInCluster"),$=g((e,t,n,c)=>{i.warn("Copying children of ",e,"root",c,"data",t.node(e),c);let s=t.children(e)||[];e!==c&&s.push(e),i.warn("Copying (nodes) clusterId",e,"nodes",s),s.forEach(o=>{if(t.children(o).length>0)$(o,t,n,c);else{let l=t.node(o);i.info("cp ",o," to ",c," with parent ",e),n.setNode(o,l),c!==t.parent(o)&&(i.warn("Setting parent",o,t.parent(o)),n.setParent(o,t.parent(o))),e!==c&&o!==e?(i.debug("Setting parent",o,e),n.setParent(o,e)):(i.info("In copy ",e,"root",c,"data",t.node(e),c),i.debug("Not Setting parent for node=",o,"cluster!==rootId",e!==c,"node!==clusterId",o!==e));let u=t.edges(o);i.debug("Copying Edges",u),u.forEach(d=>{i.info("Edge",d);let m=t.edge(d.v,d.w,d.name);i.info("Edge data",m,c);try{ce(d,c)?(i.info("Copying as ",d.v,d.w,m,d.name),n.setEdge(d.v,d.w,m,d.name),i.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):i.info("Skipping copy of edge ",d.v,"-->",d.w," rootId: ",c," clusterId:",e)}catch(p){i.error(p)}})}i.debug("Removing node",o),t.removeNode(o)})},"copy"),L=g((e,t)=>{let n=t.children(e),c=[...n];for(let s of n)W.set(s,e),c=[...c,...L(s,t)];return c},"extractDescendants");var ae=g((e,t,n)=>{let c=e.edges().filter(d=>d.v===t||d.w===t),s=e.edges().filter(d=>d.v===n||d.w===n),o=c.map(d=>({v:d.v===t?n:d.v,w:d.w===t?t:d.w})),l=s.map(d=>({v:d.v,w:d.w}));return o.filter(d=>l.some(m=>d.v===m.v&&d.w===m.w))},"findCommonEdges"),x=g((e,t,n)=>{let c=t.children(e);if(i.trace("Searching children of id ",e,c),c.length<1)return e;let s;for(let o of c){let l=x(o,t,n),u=ae(t,n,l);if(l)if(u.length>0)s=l;else return l}return s},"findNonClusterChild"),Q=g(e=>!a.has(e)||!a.get(e).externalConnections?e:a.has(e)?a.get(e).id:e,"getAnchorId"),I=g((e,t)=>{if(!e||t>10){i.debug("Opting out, no graph ");return}else i.debug("Opting in, graph ");e.nodes().forEach(function(n){e.children(n).length>0&&(i.warn("Cluster identified",n," Replacement id in edges: ",x(n,e,n)),v.set(n,L(n,e)),a.set(n,{id:x(n,e,n),clusterData:e.node(n)}))}),e.nodes().forEach(function(n){let c=e.children(n),s=e.edges();c.length>0?(i.debug("Cluster identified",n,v),s.forEach(o=>{let l=J(o.v,n),u=J(o.w,n);l^u&&(i.warn("Edge: ",o," leaves cluster ",n),i.warn("Descendants of XXX ",n,": ",v.get(n)),a.get(n).externalConnections=!0)})):i.debug("Not a cluster ",n,v)});for(let n of a.keys()){let c=a.get(n).id,s=e.parent(c);s!==n&&a.has(s)&&!a.get(s).externalConnections&&(a.get(n).id=s)}e.edges().forEach(function(n){let c=e.edge(n);i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let s=n.v,o=n.w;if(i.warn("Fix XXX",a,"ids:",n.v,n.w,"Translating: ",a.get(n.v)," --- ",a.get(n.w)),a.get(n.v)||a.get(n.w)){if(i.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),s=Q(n.v),o=Q(n.w),e.removeEdge(n.v,n.w,n.name),s!==n.v){let l=e.parent(s);a.get(l).externalConnections=!0,c.fromCluster=n.v}if(o!==n.w){let l=e.parent(o);a.get(l).externalConnections=!0,c.toCluster=n.w}i.warn("Fix Replacing with XXX",s,o,n.name),e.setEdge(s,o,c,n.name)}}),i.warn("Adjusted Graph",h(e)),ee(e,0),i.trace(a)},"adjustClustersAndEdges"),ee=g((e,t)=>{if(i.warn("extractor - ",t,h(e),e.children("D")),t>10){i.error("Bailing out");return}let n=e.nodes(),c=!1;for(let s of n){let o=e.children(s);c=c||o.length>0}if(!c){i.debug("Done, no node has children",e.nodes());return}i.debug("Nodes = ",n,t);for(let s of n)if(i.debug("Extracting node",s,a,a.has(s)&&!a.get(s).externalConnections,!e.parent(s),e.node(s),e.children("D")," Depth ",t),!a.has(s))i.debug("Not a cluster",s,t);else if(!a.get(s).externalConnections&&e.children(s)&&e.children(s).length>0){i.warn("Cluster without external connections, without a parent and with children",s,t);let l=e.graph().rankdir==="TB"?"LR":"TB";a.get(s)?.clusterData?.dir&&(l=a.get(s).clusterData.dir,i.warn("Fixing dir",a.get(s).clusterData.dir,l));let u=new C({multigraph:!0,compound:!0}).setGraph({rankdir:l,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});i.warn("Old graph before copy",h(e)),$(s,e,u,s),e.setNode(s,{clusterNode:!0,id:s,clusterData:a.get(s).clusterData,label:a.get(s).label,graph:u}),i.warn("New graph after copy node: (",s,")",h(u)),i.debug("Old graph after copy",h(e))}else i.warn("Cluster ** ",s," **not meeting the criteria !externalConnections:",!a.get(s).externalConnections," no parent: ",!e.parent(s)," children ",e.children(s)&&e.children(s).length>0,e.children("D"),t),i.debug(a);n=e.nodes(),i.warn("New list of nodes",n);for(let s of n){let o=e.node(s);i.warn(" Now next level",s,o),o?.clusterNode&&ee(o.graph,t+1)}},"extractor"),ne=g((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(c=>{let s=e.children(c),o=ne(e,s);n=[...n,...o]}),n},"sorter"),te=g(e=>ne(e,e.children()),"sortNodesByHierarchy");var ie=g(async(e,t,n,c,s,o)=>{i.warn("Graph in recursive render:XAX",h(t),s);let l=t.graph().rankdir;i.trace("Dir in recursive render - dir:",l);let u=e.insert("g").attr("class","root");t.nodes()?i.info("Recursive render XXX",t.nodes()):i.info("No nodes found for",t),t.edges().length>0&&i.info("Recursive edges",t.edge(t.edges()[0]));let d=u.insert("g").attr("class","clusters"),m=u.insert("g").attr("class","edgePaths"),p=u.insert("g").attr("class","edgeLabels"),b=u.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(f){let r=t.node(f);if(s!==void 0){let w=JSON.parse(JSON.stringify(s.clusterData));i.trace(`Setting data for parent cluster XXX - Node.id = `,f,` - data=`,w.height,` -Parent cluster`,s.height),t.setNode(s.id,w),t.parent(f)||(i.trace("Setting parent",f,s.id),t.setParent(f,s.id,w))}if(i.info("(Insert) Node XXX"+f+": "+JSON.stringify(t.node(f))),r?.clusterNode){i.info("Cluster identified XBX",f,r.width,t.node(f));let{ranksep:w,nodesep:E}=t.graph();r.graph.setGraph({...r.graph.graph(),ranksep:w+25,nodesep:E});let N=await ie(b,r.graph,n,c,t.node(f),o),D=N.elem;G(r,D),r.diff=N.diff||0,i.info("New compound node after recursive render XAX",f,"width",r.width,"height",r.height),j(D,r)}else t.children(f).length>0?(i.trace("Cluster - the non recursive path XBX",f,r.id,r,r.width,"Graph:",t),i.trace(x(r.id,t)),a.set(r.id,{id:x(r.id,t),node:r})):(i.trace("Node - the non recursive path XAX",f,b,t.node(f),l),await H(b,t.node(f),{config:o,dir:l}))})),await g(async()=>{let f=t.edges().map(async function(r){let w=t.edge(r.v,r.w,r.name);i.info("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),i.info("Edge "+r.v+" -> "+r.w+": ",r," ",JSON.stringify(t.edge(r))),i.info("Fix",a,"ids:",r.v,r.w,"Translating: ",a.get(r.v),a.get(r.w)),await M(p,w)});await Promise.all(f)},"processEdges")(),i.info("Graph before layout:",JSON.stringify(h(t))),i.info("############################################# XXX"),i.info("### Layout ### XXX"),i.info("############################################# XXX"),z(t),i.info("Graph after layout:",JSON.stringify(h(t)));let P=0,{subGraphTitleTotalMargin:S}=T(o);return await Promise.all(te(t).map(async function(f){let r=t.node(f);if(i.info("Position XBX => "+f+": ("+r.x,","+r.y,") width: ",r.width," height: ",r.height),r?.clusterNode)r.y+=S,i.info("A tainted cluster node XBX1",f,r.id,r.width,r.height,r.x,r.y,t.parent(f)),a.get(r.id).node=r,O(r);else if(t.children(f).length>0){i.info("A pure cluster node XBX1",f,r.id,r.x,r.y,r.width,r.height,t.parent(f)),r.height+=S,t.node(r.parentId);let w=r?.padding/2||0,E=r?.labelBBox?.height||0,N=E-w||0;i.debug("OffsetY",N,"labelHeight",E,"halfPadding",w),await A(d,r),a.get(r.id).node=r}else{let w=t.node(r.parentId);r.y+=S/2,i.info("A regular node XBX1 - using the padding",r.id,"parent",r.parentId,r.width,r.height,r.x,r.y,"offsetY",r.offsetY,"parent",w,w?.offsetY,r),O(r)}})),t.edges().forEach(function(f){let r=t.edge(f);i.info("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(r),r),r.points.forEach(D=>D.y+=S/2);let w=t.node(f.v);var E=t.node(f.w);let N=U(m,r,a,n,w,E,c);F(r,N)}),t.nodes().forEach(function(f){let r=t.node(f);i.info(f,r.type,r.diff),r.isGroup&&(P=r.diff)}),i.warn("Returning from recursive render XAX",u,P),{elem:u,diff:P}},"recursiveRender"),Se=g(async(e,t)=>{let n=new C({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),c=t.select("g");Y(c,e.markers,e.type,e.diagramId),V(),R(),_(),Z(),e.nodes.forEach(o=>{n.setNode(o.id,{...o}),o.parentId&&n.setParent(o.id,o.parentId)}),i.debug("Edges:",e.edges),e.edges.forEach(o=>{if(o.start===o.end){let l=o.start,u=l+"---"+l+"---1",d=l+"---"+l+"---2",m=n.node(l);n.setNode(u,{domId:u,id:u,parentId:m.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),n.setParent(u,m.parentId),n.setNode(d,{domId:d,id:d,parentId:m.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),n.setParent(d,m.parentId);let p=structuredClone(o),b=structuredClone(o),X=structuredClone(o);p.label="",p.arrowTypeEnd="none",p.id=l+"-cyclic-special-1",b.arrowTypeStart="none",b.arrowTypeEnd="none",b.id=l+"-cyclic-special-mid",X.label="",m.isGroup&&(p.fromCluster=l,X.toCluster=l),X.id=l+"-cyclic-special-2",X.arrowTypeStart="none",n.setEdge(l,u,p,l+"-cyclic-special-0"),n.setEdge(u,d,b,l+"-cyclic-special-1"),n.setEdge(d,l,X,l+"-cyc{X.clear(),Q.clear(),c.clear()},"clear"),J=g((e,t)=>{let n=X.get(t)||[];return i.trace("In isDescendant",t," ",e," = ",n.includes(e)),n.includes(e)},"isDescendant"),ae=g((e,t)=>{let n=X.get(t)||[];return i.info("Descendants of ",t," is ",n),i.info("Edge is ",e),e.v===t||e.w===t?!1:n?n.includes(e.v)||J(e.v,t)||J(e.w,t)||n.includes(e.w):(i.debug("Tilt, ",t,",not in descendants"),!1)},"edgeInCluster"),Z=g((e,t,n,a)=>{i.warn("Copying children of ",e,"root",a,"data",t.node(e),a);let s=t.children(e)||[];e!==a&&s.push(e),i.warn("Copying (nodes) clusterId",e,"nodes",s),s.forEach(o=>{if(t.children(o).length>0)Z(o,t,n,a);else{let l=t.node(o);i.info("cp ",o," to ",a," with parent ",e),n.setNode(o,l),a!==t.parent(o)&&(i.warn("Setting parent",o,t.parent(o)),n.setParent(o,t.parent(o))),e!==a&&o!==e?(i.debug("Setting parent",o,e),n.setParent(o,e)):(i.info("In copy ",e,"root",a,"data",t.node(e),a),i.debug("Not Setting parent for node=",o,"cluster!==rootId",e!==a,"node!==clusterId",o!==e));let u=t.edges(o);i.debug("Copying Edges",u),u.forEach(d=>{i.info("Edge",d);let h=t.edge(d.v,d.w,d.name);i.info("Edge data",h,a);try{ae(d,a)?(i.info("Copying as ",d.v,d.w,h,d.name),n.setEdge(d.v,d.w,h,d.name),i.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):i.info("Skipping copy of edge ",d.v,"-->",d.w," rootId: ",a," clusterId:",e)}catch(m){i.error(m)}})}i.debug("Removing node",o),t.removeNode(o)})},"copy"),$=g((e,t)=>{let n=t.children(e),a=[...n];for(let s of n)Q.set(s,e),a=[...a,...$(s,t)];return a},"extractDescendants");var ce=g((e,t,n)=>{let a=e.edges().filter(d=>d.v===t||d.w===t),s=e.edges().filter(d=>d.v===n||d.w===n),o=a.map(d=>({v:d.v===t?n:d.v,w:d.w===t?t:d.w})),l=s.map(d=>({v:d.v,w:d.w}));return o.filter(d=>l.some(h=>d.v===h.v&&d.w===h.w))},"findCommonEdges"),x=g((e,t,n)=>{let a=t.children(e);if(i.trace("Searching children of id ",e,a),a.length<1)return e;let s;for(let o of a){let l=x(o,t,n),u=ce(t,n,l);if(l)if(u.length>0)s=l;else return l}return s},"findNonClusterChild"),K=g(e=>!c.has(e)||!c.get(e).externalConnections?e:c.has(e)?c.get(e).id:e,"getAnchorId"),I=g((e,t)=>{if(!e||t>10){i.debug("Opting out, no graph ");return}else i.debug("Opting in, graph ");e.nodes().forEach(function(n){e.children(n).length>0&&(i.warn("Cluster identified",n," Replacement id in edges: ",x(n,e,n)),X.set(n,$(n,e)),c.set(n,{id:x(n,e,n),clusterData:e.node(n)}))}),e.nodes().forEach(function(n){let a=e.children(n),s=e.edges();a.length>0?(i.debug("Cluster identified",n,X),s.forEach(o=>{let l=J(o.v,n),u=J(o.w,n);l^u&&(i.warn("Edge: ",o," leaves cluster ",n),i.warn("Descendants of XXX ",n,": ",X.get(n)),c.get(n).externalConnections=!0)})):i.debug("Not a cluster ",n,X)});for(let n of c.keys()){let a=c.get(n).id,s=e.parent(a);s!==n&&c.has(s)&&!c.get(s).externalConnections&&(c.get(n).id=s)}e.edges().forEach(function(n){let a=e.edge(n);i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let s=n.v,o=n.w;if(i.warn("Fix XXX",c,"ids:",n.v,n.w,"Translating: ",c.get(n.v)," --- ",c.get(n.w)),c.get(n.v)||c.get(n.w)){if(i.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),s=K(n.v),o=K(n.w),e.removeEdge(n.v,n.w,n.name),s!==n.v){let l=e.parent(s);c.get(l).externalConnections=!0,a.fromCluster=n.v}if(o!==n.w){let l=e.parent(o);c.get(l).externalConnections=!0,a.toCluster=n.w}i.warn("Fix Replacing with XXX",s,o,n.name),e.setEdge(s,o,a,n.name)}}),i.warn("Adjusted Graph",b(e)),ee(e,0),i.trace(c)},"adjustClustersAndEdges"),ee=g((e,t)=>{if(i.warn("extractor - ",t,b(e),e.children("D")),t>10){i.error("Bailing out");return}let n=e.nodes(),a=!1;for(let s of n){let o=e.children(s);a=a||o.length>0}if(!a){i.debug("Done, no node has children",e.nodes());return}i.debug("Nodes = ",n,t);for(let s of n)if(i.debug("Extracting node",s,c,c.has(s)&&!c.get(s).externalConnections,!e.parent(s),e.node(s),e.children("D")," Depth ",t),!c.has(s))i.debug("Not a cluster",s,t);else if(!c.get(s).externalConnections&&e.children(s)&&e.children(s).length>0){i.warn("Cluster without external connections, without a parent and with children",s,t);let l=e.graph().rankdir==="TB"?"LR":"TB";c.get(s)?.clusterData?.dir&&(l=c.get(s).clusterData.dir,i.warn("Fixing dir",c.get(s).clusterData.dir,l));let u=new C({multigraph:!0,compound:!0}).setGraph({rankdir:l,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});i.warn("Old graph before copy",b(e)),Z(s,e,u,s),e.setNode(s,{clusterNode:!0,id:s,clusterData:c.get(s).clusterData,label:c.get(s).label,graph:u}),i.warn("New graph after copy node: (",s,")",b(u)),i.debug("Old graph after copy",b(e))}else i.warn("Cluster ** ",s," **not meeting the criteria !externalConnections:",!c.get(s).externalConnections," no parent: ",!e.parent(s)," children ",e.children(s)&&e.children(s).length>0,e.children("D"),t),i.debug(c);n=e.nodes(),i.warn("New list of nodes",n);for(let s of n){let o=e.node(s);i.warn(" Now next level",s,o),o?.clusterNode&&ee(o.graph,t+1)}},"extractor"),ne=g((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(a=>{let s=e.children(a),o=ne(e,s);n=[...n,...o]}),n},"sorter"),te=g(e=>ne(e,e.children()),"sortNodesByHierarchy");var ie=g(async(e,t,n,a,s,o)=>{i.warn("Graph in recursive render:XAX",b(t),s);let l=t.graph().rankdir;i.trace("Dir in recursive render - dir:",l);let u=e.insert("g").attr("class","root");t.nodes()?i.info("Recursive render XXX",t.nodes()):i.info("No nodes found for",t),t.edges().length>0&&i.info("Recursive edges",t.edge(t.edges()[0]));let d=u.insert("g").attr("class","clusters"),h=u.insert("g").attr("class","edgePaths"),m=u.insert("g").attr("class","edgeLabels"),p=u.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(f){let r=t.node(f);if(s!==void 0){let w=JSON.parse(JSON.stringify(s.clusterData));i.trace(`Setting data for parent cluster XXX + Node.id = `,f,` + data=`,w.height,` +Parent cluster`,s.height),t.setNode(s.id,w),t.parent(f)||(i.trace("Setting parent",f,s.id),t.setParent(f,s.id,w))}if(i.info("(Insert) Node XXX"+f+": "+JSON.stringify(t.node(f))),r?.clusterNode){i.info("Cluster identified XBX",f,r.width,t.node(f));let{ranksep:w,nodesep:E}=t.graph();r.graph.setGraph({...r.graph.graph(),ranksep:w+25,nodesep:E});let N=await ie(p,r.graph,n,a,t.node(f),o),D=N.elem;G(r,D),r.diff=N.diff||0,i.info("New compound node after recursive render XAX",f,"width",r.width,"height",r.height),H(D,r)}else t.children(f).length>0?(i.trace("Cluster - the non recursive path XBX",f,r.id,r,r.width,"Graph:",t),i.trace(x(r.id,t)),c.set(r.id,{id:x(r.id,t),node:r})):(i.trace("Node - the non recursive path XAX",f,p,t.node(f),l),await Y(p,t.node(f),{config:o,dir:l}))})),await g(async()=>{let f=t.edges().map(async function(r){let w=t.edge(r.v,r.w,r.name);i.info("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),i.info("Edge "+r.v+" -> "+r.w+": ",r," ",JSON.stringify(t.edge(r))),i.info("Fix",c,"ids:",r.v,r.w,"Translating: ",c.get(r.v),c.get(r.w)),await L(m,w)});await Promise.all(f)},"processEdges")(),i.info("Graph before layout:",JSON.stringify(b(t))),i.info("############################################# XXX"),i.info("### Layout ### XXX"),i.info("############################################# XXX"),q(t),i.info("Graph after layout:",JSON.stringify(b(t)));let P=0,{subGraphTitleTotalMargin:S}=R(o);return await Promise.all(te(t).map(async function(f){let r=t.node(f);if(i.info("Position XBX => "+f+": ("+r.x,","+r.y,") width: ",r.width," height: ",r.height),r?.clusterNode)r.y+=S,i.info("A tainted cluster node XBX1",f,r.id,r.width,r.height,r.x,r.y,t.parent(f)),c.get(r.id).node=r,O(r);else if(t.children(f).length>0){i.info("A pure cluster node XBX1",f,r.id,r.x,r.y,r.width,r.height,t.parent(f)),r.height+=S,t.node(r.parentId);let w=r?.padding/2||0,E=r?.labelBBox?.height||0,N=E-w||0;i.debug("OffsetY",N,"labelHeight",E,"halfPadding",w),await T(d,r),c.get(r.id).node=r}else{let w=t.node(r.parentId);r.y+=S/2,i.info("A regular node XBX1 - using the padding",r.id,"parent",r.parentId,r.width,r.height,r.x,r.y,"offsetY",r.offsetY,"parent",w,w?.offsetY,r),O(r)}})),t.edges().forEach(function(f){let r=t.edge(f);i.info("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(r),r),r.points.forEach(D=>D.y+=S/2);let w=t.node(f.v);var E=t.node(f.w);let N=F(h,r,c,n,w,E,a);M(r,N)}),t.nodes().forEach(function(f){let r=t.node(f);i.info(f,r.type,r.diff),r.isGroup&&(P=r.diff)}),i.warn("Returning from recursive render XAX",u,P),{elem:u,diff:P}},"recursiveRender"),Se=g(async(e,t)=>{let n=new C({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=t.select("g");U(a,e.markers,e.type,e.diagramId),j(),_(),A(),W(),e.nodes.forEach(o=>{n.setNode(o.id,{...o}),o.parentId&&n.setParent(o.id,o.parentId)}),i.debug("Edges:",e.edges),e.edges.forEach(o=>{if(o.start===o.end){let l=o.start,u=l+"---"+l+"---1",d=l+"---"+l+"---2",h=n.node(l);n.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),n.setParent(u,h.parentId),n.setNode(d,{domId:d,id:d,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),n.setParent(d,h.parentId);let m=structuredClone(o),p=structuredClone(o),v=structuredClone(o);m.label="",m.arrowTypeEnd="none",m.endLabelLeft="",m.endLabelRight="",m.startLabelLeft="",m.id=l+"-cyclic-special-1",p.startLabelRight="",p.startLabelLeft="",p.endLabelLeft="",p.endLabelRight="",p.arrowTypeStart="none",p.arrowTypeEnd="none",p.id=l+"-cyclic-special-mid",v.label="",v.startLabelRight="",v.startLabelLeft="",v.arrowTypeStart="none",h.isGroup&&(m.fromCluster=l,v.toCluster=l),v.id=l+"-cyclic-special-2",v.arrowTypeStart="none",n.setEdge(l,u,m,l+"-cyclic-special-0"),n.setEdge(u,d,p,l+"-cyclic-special-1"),n.setEdge(d,l,v,l+"-cyc} options - The options used to create the graph.\n * @property {Array<{ v: NodeID; value?: NodeLabel; parent?: NodeID }>} nodes - The nodes in the graph.\n * @property {Array} edges - The edges in the graph.\n * @property {GraphLabel} [value] - The graph's value, if any.\n */\n\n/**\n * Creates a JSON representation of the graph that can be serialized to a\n * string with\n * [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify).\n * The graph can later be restored using {@link read}.\n *\n * @example\n *\n * ```js\n * var g = new graphlib.Graph();\n * g.setNode(\"a\", { label: \"node a\" });\n * g.setNode(\"b\", { label: \"node b\" });\n * g.setEdge(\"a\", \"b\", { label: \"edge a->b\" });\n * graphlib.json.write(g);\n * // Returns the object:\n * //\n * // {\n * // \"options\": {\n * // \"directed\": true,\n * // \"multigraph\": false,\n * // \"compound\": false\n * // },\n * // \"nodes\": [\n * // { \"v\": \"a\", \"value\": { \"label\": \"node a\" } },\n * // { \"v\": \"b\", \"value\": { \"label\": \"node b\" } }\n * // ],\n * // \"edges\": [\n * // { \"v\": \"a\", \"w\": \"b\", \"value\": { \"label\": \"edge a->b\" } }\n * // ]\n * // }\n * ```\n *\n * @template [GraphLabel=any] - Label of the graph.\n * @template [NodeLabel=any] - Label of a node.\n * @template [EdgeLabel=any] - Label of an edge.\n * @param {Graph} g - The graph to serialize.\n * @returns {GraphJSON} The JSON representation of the graph.\n */\nfunction write(g) {\n /** @type {GraphJSON} */\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound(),\n },\n nodes: writeNodes(g),\n edges: writeEdges(g),\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\n/**\n * @template NodeLabel - Label of a node.\n *\n * @param {Graph} g - The graph to serialize.\n * @returns {Array<{ v: NodeID; value?: NodeLabel; parent?: NodeID }>} The nodes in the graph.\n */\nfunction writeNodes(g) {\n return _.map(g.nodes(), function (v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n /** @type {{ v: NodeID; value?: NodeLabel; parent?: NodeID }} */\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\n/**\n * @template EdgeLabel - Label of a node.\n *\n * @param {Graph} g - The graph to serialize.\n * @returns {Array} The edges in the graph.\n */\nfunction writeEdges(g) {\n return _.map(g.edges(), function (e) {\n var edgeValue = g.edge(e);\n /** @type {EdgeObj & { value?: EdgeLabel }} */\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\n/**\n * Takes JSON as input and returns the graph representation.\n *\n * @example\n *\n * For example, if we have serialized the graph in {@link write}\n * to a string named `str`, we can restore it to a graph as follows:\n *\n * ```js\n * var g2 = graphlib.json.read(JSON.parse(str));\n * // or, in order to copy the graph\n * var g3 = graphlib.json.read(graphlib.json.write(g))\n *\n * g2.nodes();\n * // ['a', 'b']\n * g2.edges()\n * // [ { v: 'a', w: 'b' } ]\n * ```\n *\n * @template [GraphLabel=any] - Label of the graph.\n * @template [NodeLabel=any] - Label of a node.\n * @template [EdgeLabel=any] - Label of an edge.\n * @param {GraphJSON} json - The JSON representation of the graph.\n * @returns {Graph} The restored graph.\n */\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function (entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function (entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n", "/** Decorates with functions required by mermaids dagre-wrapper. */\nimport { log } from '../../../logger.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport * as graphlibJson from 'dagre-d3-es/src/graphlib/json.js';\n\nexport let clusterDb = new Map();\nlet descendants = new Map();\nlet parents = new Map();\n\nexport const clear = () => {\n descendants.clear();\n parents.clear();\n clusterDb.clear();\n};\n\nconst isDescendant = (id, ancestorId) => {\n const ancestorDescendants = descendants.get(ancestorId) || [];\n log.trace('In isDescendant', ancestorId, ' ', id, ' = ', ancestorDescendants.includes(id));\n return ancestorDescendants.includes(id);\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n const clusterDescendants = descendants.get(clusterId) || [];\n log.info('Descendants of ', clusterId, ' is ', clusterDescendants);\n log.info('Edge is ', edge);\n if (edge.v === clusterId || edge.w === clusterId) {\n return false;\n }\n\n if (!clusterDescendants) {\n log.debug('Tilt, ', clusterId, ',not in descendants');\n return false;\n }\n\n return (\n clusterDescendants.includes(edge.v) ||\n isDescendant(edge.v, clusterId) ||\n isDescendant(edge.w, clusterId) ||\n clusterDescendants.includes(edge.w)\n );\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn('Setting parent', node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach((edge) => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\n\nexport const extractDescendants = (id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n\n for (const child of children) {\n parents.set(child, id);\n res = [...res, ...extractDescendants(child, graph)];\n }\n\n return res;\n};\n\nexport const validate = (graph) => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (const edge of edges) {\n if (graph.children(edge.v).length > 0) {\n log.trace('The node ', edge.v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edge.w).length > 0) {\n log.trace('The node ', edge.w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\nconst findCommonEdges = (graph, id1, id2) => {\n const edges1 = graph.edges().filter((edge) => edge.v === id1 || edge.w === id1);\n const edges2 = graph.edges().filter((edge) => edge.v === id2 || edge.w === id2);\n const edges1Prim = edges1.map((edge) => {\n return { v: edge.v === id1 ? id2 : edge.v, w: edge.w === id1 ? id1 : edge.w };\n });\n const edges2Prim = edges2.map((edge) => {\n return { v: edge.v, w: edge.w };\n });\n const result = edges1Prim.filter((edgeIn1) => {\n return edges2Prim.some((edge) => edgeIn1.v === edge.v && edgeIn1.w === edge.w);\n });\n\n return result;\n};\n\nexport const findNonClusterChild = (id, graph, clusterId) => {\n const children = graph.children(id);\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n return id;\n }\n let reserve;\n for (const child of children) {\n const _id = findNonClusterChild(child, graph, clusterId);\n\n const commonEdges = findCommonEdges(graph, clusterId, _id);\n\n if (_id) {\n if (commonEdges.length > 0) {\n reserve = _id;\n } else {\n return _id;\n }\n }\n }\n return reserve;\n};\n\nconst getAnchorId = (id) => {\n if (!clusterDb.has(id)) {\n return id;\n }\n if (!clusterDb.get(id).externalConnections) {\n return id;\n }\n\n if (clusterDb.has(id)) {\n return clusterDb.get(id).id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph, id)\n );\n descendants.set(id, extractDescendants(id, graph));\n clusterDb.set(id, { id: findNonClusterChild(id, graph, id), clusterData: graph.node(id) });\n }\n });\n\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, descendants);\n edges.forEach((edge) => {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n\n if (d1 ^ d2) {\n log.warn('Edge: ', edge, ' leaves cluster ', id);\n log.warn('Descendants of XXX ', id, ': ', descendants.get(id));\n clusterDb.get(id).externalConnections = true;\n }\n });\n } else {\n log.debug('Not a cluster ', id, descendants);\n }\n });\n\n for (let id of clusterDb.keys()) {\n const nonClusterChild = clusterDb.get(id).id;\n const parent = graph.parent(nonClusterChild);\n\n if (parent !== id && clusterDb.has(parent) && !clusterDb.get(parent).externalConnections) {\n clusterDb.get(id).id = parent;\n }\n }\n\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n log.warn(\n 'Fix XXX',\n clusterDb,\n 'ids:',\n e.v,\n e.w,\n 'Translating: ',\n clusterDb.get(e.v),\n ' --- ',\n clusterDb.get(e.w)\n );\n if (clusterDb.get(e.v) || clusterDb.get(e.w)) {\n log.warn('Fixing and trying - removing XXX', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) {\n const parent = graph.parent(v);\n clusterDb.get(parent).externalConnections = true;\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n const parent = graph.parent(w);\n clusterDb.get(parent).externalConnections = true;\n edge.toCluster = e.w;\n }\n log.warn('Fix Replacing with XXX', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlibJson.write(graph));\n extractor(graph, 0);\n\n log.trace(clusterDb);\n};\n\nexport const extractor = (graph, depth) => {\n log.warn('extractor - ', depth, graphlibJson.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n let nodes = graph.nodes();\n let hasChildren = false;\n for (const node of nodes) {\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n log.debug('Nodes = ', nodes, depth);\n for (const node of nodes) {\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb.has(node) && !clusterDb.get(node).externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n if (!clusterDb.has(node)) {\n log.debug('Not a cluster', node, depth);\n } else if (\n !clusterDb.get(node).externalConnections &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.warn(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB';\n if (clusterDb.get(node)?.clusterData?.dir) {\n dir = clusterDb.get(node).clusterData.dir;\n log.warn('Fixing dir', clusterDb.get(node).clusterData.dir, dir);\n }\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: dir,\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n log.warn('Old graph before copy', graphlibJson.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb.get(node).clusterData,\n label: clusterDb.get(node).label,\n graph: clusterGraph,\n });\n log.warn('New graph after copy node: (', node, ')', graphlibJson.write(clusterGraph));\n log.debug('Old graph after copy', graphlibJson.write(graph));\n } else {\n log.warn(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb.get(node).externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.warn('New list of nodes', nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n log.warn(' Now next level', node, data);\n if (data?.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) {\n return [];\n }\n let result = Object.assign([], nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = [...result, ...sorted];\n });\n\n return result;\n};\n\nexport const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\n", "import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js';\nimport * as graphlibJson from 'dagre-d3-es/src/graphlib/json.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport insertMarkers from '../../rendering-elements/markers.js';\nimport { updateNodeBounds } from '../../rendering-elements/shapes/util.js';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild,\n sortNodesByHierarchy,\n} from './mermaid-graphlib.js';\nimport {\n insertNode,\n positionNode,\n clear as clearNodes,\n setNodeElem,\n} from '../../rendering-elements/nodes.js';\nimport { insertCluster, clear as clearClusters } from '../../rendering-elements/clusters.js';\nimport {\n insertEdgeLabel,\n positionEdgeLabel,\n insertEdge,\n clear as clearEdges,\n} from '../../rendering-elements/edges.js';\nimport { log } from '../../../logger.js';\nimport { getSubGraphTitleMargins } from '../../../utils/subGraphTitleMargins.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\n\nconst recursiveRender = async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {\n log.warn('Graph in recursive render:XAX', graphlibJson.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root');\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render XXX', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.info('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters');\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n await Promise.all(\n graph.nodes().map(async function (v) {\n const node = graph.node(v);\n if (parentCluster !== undefined) {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.trace(\n 'Setting data for parent cluster XXX\\n Node.id = ',\n v,\n '\\n data=',\n data.height,\n '\\nParent cluster',\n parentCluster.height\n );\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace('Setting parent', v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node?.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified XBX', v, node.width, graph.node(v));\n\n // `node.graph.setGraph` applies the graph configurations such as nodeSpacing to subgraphs as without this the default values would be used\n // We override only the `ranksep` and `nodesep` configurations to allow for setting subgraph spacing while avoiding overriding other properties\n const { ranksep, nodesep } = graph.graph();\n node.graph.setGraph({\n ...node.graph.graph(),\n ranksep: ranksep + 25,\n nodesep,\n });\n\n // \"o\" will contain the full cluster not just the children\n const o = await recursiveRender(\n nodes,\n node.graph,\n diagramType,\n id,\n graph.node(v),\n siteConfig\n );\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n // node.height = o.diff;\n node.diff = o.diff || 0;\n log.info(\n 'New compound node after recursive render XAX',\n v,\n 'width',\n // node,\n node.width,\n 'height',\n node.height\n // node.x,\n // node.y\n );\n setNodeElem(newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recursively\n // Render as before\n log.trace(\n 'Cluster - the non recursive path XBX',\n v,\n node.id,\n node,\n node.width,\n 'Graph:',\n graph\n );\n log.trace(findNonClusterChild(node.id, graph));\n clusterDb.set(node.id, { id: findNonClusterChild(node.id, graph), node });\n // insertCluster(clusters, graph.node(v));\n } else {\n log.trace('Node - the non recursive path XAX', v, nodes, graph.node(v), dir);\n await insertNode(nodes, graph.node(v), { config: siteConfig, dir });\n }\n }\n })\n );\n\n const processEdges = async () => {\n const edgePromises = graph.edges().map(async function (e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info(\n 'Fix',\n clusterDb,\n 'ids:',\n e.v,\n e.w,\n 'Translating: ',\n clusterDb.get(e.v),\n clusterDb.get(e.w)\n );\n await insertEdgeLabel(edgeLabels, edge);\n });\n\n await Promise.all(edgePromises);\n };\n\n await processEdges();\n\n log.info('Graph before layout:', JSON.stringify(graphlibJson.write(graph)));\n\n log.info('############################################# XXX');\n log.info('### Layout ### XXX');\n log.info('############################################# XXX');\n\n dagreLayout(graph);\n\n log.info('Graph after layout:', JSON.stringify(graphlibJson.write(graph)));\n // Move the nodes to the correct place\n let diff = 0;\n let { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n await Promise.all(\n sortNodesByHierarchy(graph).map(async function (v) {\n const node = graph.node(v);\n log.info(\n 'Position XBX => ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node?.clusterNode) {\n // Adjust for padding when on root level\n node.y += subGraphTitleTotalMargin;\n\n log.info(\n 'A tainted cluster node XBX1',\n v,\n node.id,\n node.width,\n node.height,\n node.x,\n node.y,\n graph.parent(v)\n );\n clusterDb.get(node.id).node = node;\n positionNode(node);\n } else {\n // A tainted cluster node\n if (graph.children(v).length > 0) {\n log.info(\n 'A pure cluster node XBX1',\n v,\n node.id,\n node.x,\n node.y,\n node.width,\n node.height,\n graph.parent(v)\n );\n node.height += subGraphTitleTotalMargin;\n graph.node(node.parentId);\n const halfPadding = node?.padding / 2 || 0;\n const labelHeight = node?.labelBBox?.height || 0;\n const offsetY = labelHeight - halfPadding || 0;\n log.debug('OffsetY', offsetY, 'labelHeight', labelHeight, 'halfPadding', halfPadding);\n await insertCluster(clusters, node);\n\n // A cluster in the non-recursive way\n clusterDb.get(node.id).node = node;\n } else {\n // Regular node\n const parent = graph.node(node.parentId);\n node.y += subGraphTitleTotalMargin / 2;\n log.info(\n 'A regular node XBX1 - using the padding',\n node.id,\n 'parent',\n node.parentId,\n node.width,\n node.height,\n node.x,\n node.y,\n 'offsetY',\n node.offsetY,\n 'parent',\n parent,\n parent?.offsetY,\n node\n );\n\n positionNode(node);\n }\n }\n })\n );\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n edge.points.forEach((point) => (point.y += subGraphTitleTotalMargin / 2));\n const startNode = graph.node(e.v);\n var endNode = graph.node(e.w);\n const paths = insertEdge(edgePaths, edge, clusterDb, diagramType, startNode, endNode, id);\n positionEdgeLabel(edge, paths);\n });\n\n graph.nodes().forEach(function (v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.isGroup) {\n diff = n.diff;\n }\n });\n log.warn('Returning from recursive render XAX', elem, diff);\n return { elem, diff };\n};\n\nexport const render = async (data4Layout, svg) => {\n const graph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: data4Layout.direction,\n nodesep:\n data4Layout.config?.nodeSpacing ||\n data4Layout.config?.flowchart?.nodeSpacing ||\n data4Layout.nodeSpacing,\n ranksep:\n data4Layout.config?.rankSpacing ||\n data4Layout.config?.flowchart?.rankSpacing ||\n data4Layout.rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n const element = svg.select('g');\n insertMarkers(element, data4Layout.markers, data4Layout.type, data4Layout.diagramId);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n data4Layout.nodes.forEach((node) => {\n graph.setNode(node.id, { ...node });\n if (node.parentId) {\n graph.setParent(node.id, node.parentId);\n }\n });\n\n log.debug('Edges:', data4Layout.edges);\n data4Layout.edges.forEach((edge) => {\n // Handle self-loops\n if (edge.start === edge.end) {\n const nodeId = edge.start;\n const specialId1 = nodeId + '---' + nodeId + '---1';\n const specialId2 = nodeId + '---' + nodeId + '---2';\n const node = graph.node(nodeId);\n graph.setNode(specialId1, {\n domId: specialId1,\n id: specialId1,\n parentId: node.parentId,\n labelStyle: '',\n label: '',\n padding: 0,\n shape: 'labelRect',\n // shape: 'rect',\n style: '',\n width: 10,\n height: 10,\n });\n graph.setParent(specialId1, node.parentId);\n graph.setNode(specialId2, {\n domId: specialId2,\n id: specialId2,\n parentId: node.parentId,\n labelStyle: '',\n padding: 0,\n // shape: 'rect',\n shape: 'labelRect',\n label: '',\n style: '',\n width: 10,\n height: 10,\n });\n graph.setParent(specialId2, node.parentId);\n\n const edge1 = structuredClone(edge);\n const edgeMid = structuredClone(edge);\n const edge2 = structuredClone(edge);\n edge1.label = '';\n edge1.arrowTypeEnd = 'none';\n edge1.id = nodeId + '-cyclic-special-1';\n edgeMid.arrowTypeStart = 'none';\n edgeMid.arrowTypeEnd = 'none';\n edgeMid.id = nodeId + '-cyclic-special-mid';\n edge2.label = '';\n if (node.isGroup) {\n edge1.fromCluster = nodeId;\n edge2.toCluster = nodeId;\n }\n edge2.id = nodeId + '-cyclic-special-2';\n edge2.arrowTypeStart = 'none';\n graph.setEdge(nodeId, specialId1, edge1, nodeId + '-cyclic-special-0');\n graph.setEdge(specialId1, specialId2, edgeMid, nodeId + '-cyclic-special-1');\n graph.setEdge(specialId2, nodeId, edge2, nodeId + '-cyc} options - The options used to create the graph.\n * @property {Array<{ v: NodeID; value?: NodeLabel; parent?: NodeID }>} nodes - The nodes in the graph.\n * @property {Array} edges - The edges in the graph.\n * @property {GraphLabel} [value] - The graph's value, if any.\n */\n\n/**\n * Creates a JSON representation of the graph that can be serialized to a\n * string with\n * [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify).\n * The graph can later be restored using {@link read}.\n *\n * @example\n *\n * ```js\n * var g = new graphlib.Graph();\n * g.setNode(\"a\", { label: \"node a\" });\n * g.setNode(\"b\", { label: \"node b\" });\n * g.setEdge(\"a\", \"b\", { label: \"edge a->b\" });\n * graphlib.json.write(g);\n * // Returns the object:\n * //\n * // {\n * // \"options\": {\n * // \"directed\": true,\n * // \"multigraph\": false,\n * // \"compound\": false\n * // },\n * // \"nodes\": [\n * // { \"v\": \"a\", \"value\": { \"label\": \"node a\" } },\n * // { \"v\": \"b\", \"value\": { \"label\": \"node b\" } }\n * // ],\n * // \"edges\": [\n * // { \"v\": \"a\", \"w\": \"b\", \"value\": { \"label\": \"edge a->b\" } }\n * // ]\n * // }\n * ```\n *\n * @template [GraphLabel=any] - Label of the graph.\n * @template [NodeLabel=any] - Label of a node.\n * @template [EdgeLabel=any] - Label of an edge.\n * @param {Graph} g - The graph to serialize.\n * @returns {GraphJSON} The JSON representation of the graph.\n */\nfunction write(g) {\n /** @type {GraphJSON} */\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound(),\n },\n nodes: writeNodes(g),\n edges: writeEdges(g),\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\n/**\n * @template NodeLabel - Label of a node.\n *\n * @param {Graph} g - The graph to serialize.\n * @returns {Array<{ v: NodeID; value?: NodeLabel; parent?: NodeID }>} The nodes in the graph.\n */\nfunction writeNodes(g) {\n return _.map(g.nodes(), function (v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n /** @type {{ v: NodeID; value?: NodeLabel; parent?: NodeID }} */\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\n/**\n * @template EdgeLabel - Label of a node.\n *\n * @param {Graph} g - The graph to serialize.\n * @returns {Array} The edges in the graph.\n */\nfunction writeEdges(g) {\n return _.map(g.edges(), function (e) {\n var edgeValue = g.edge(e);\n /** @type {EdgeObj & { value?: EdgeLabel }} */\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\n/**\n * Takes JSON as input and returns the graph representation.\n *\n * @example\n *\n * For example, if we have serialized the graph in {@link write}\n * to a string named `str`, we can restore it to a graph as follows:\n *\n * ```js\n * var g2 = graphlib.json.read(JSON.parse(str));\n * // or, in order to copy the graph\n * var g3 = graphlib.json.read(graphlib.json.write(g))\n *\n * g2.nodes();\n * // ['a', 'b']\n * g2.edges()\n * // [ { v: 'a', w: 'b' } ]\n * ```\n *\n * @template [GraphLabel=any] - Label of the graph.\n * @template [NodeLabel=any] - Label of a node.\n * @template [EdgeLabel=any] - Label of an edge.\n * @param {GraphJSON} json - The JSON representation of the graph.\n * @returns {Graph} The restored graph.\n */\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function (entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function (entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n", "/** Decorates with functions required by mermaids dagre-wrapper. */\nimport { log } from '../../../logger.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport * as graphlibJson from 'dagre-d3-es/src/graphlib/json.js';\n\nexport let clusterDb = new Map();\nlet descendants = new Map();\nlet parents = new Map();\n\nexport const clear = () => {\n descendants.clear();\n parents.clear();\n clusterDb.clear();\n};\n\nconst isDescendant = (id, ancestorId) => {\n const ancestorDescendants = descendants.get(ancestorId) || [];\n log.trace('In isDescendant', ancestorId, ' ', id, ' = ', ancestorDescendants.includes(id));\n return ancestorDescendants.includes(id);\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n const clusterDescendants = descendants.get(clusterId) || [];\n log.info('Descendants of ', clusterId, ' is ', clusterDescendants);\n log.info('Edge is ', edge);\n if (edge.v === clusterId || edge.w === clusterId) {\n return false;\n }\n\n if (!clusterDescendants) {\n log.debug('Tilt, ', clusterId, ',not in descendants');\n return false;\n }\n\n return (\n clusterDescendants.includes(edge.v) ||\n isDescendant(edge.v, clusterId) ||\n isDescendant(edge.w, clusterId) ||\n clusterDescendants.includes(edge.w)\n );\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn('Setting parent', node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach((edge) => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\n\nexport const extractDescendants = (id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n\n for (const child of children) {\n parents.set(child, id);\n res = [...res, ...extractDescendants(child, graph)];\n }\n\n return res;\n};\n\nexport const validate = (graph) => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (const edge of edges) {\n if (graph.children(edge.v).length > 0) {\n log.trace('The node ', edge.v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edge.w).length > 0) {\n log.trace('The node ', edge.w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\nconst findCommonEdges = (graph, id1, id2) => {\n const edges1 = graph.edges().filter((edge) => edge.v === id1 || edge.w === id1);\n const edges2 = graph.edges().filter((edge) => edge.v === id2 || edge.w === id2);\n const edges1Prim = edges1.map((edge) => {\n return { v: edge.v === id1 ? id2 : edge.v, w: edge.w === id1 ? id1 : edge.w };\n });\n const edges2Prim = edges2.map((edge) => {\n return { v: edge.v, w: edge.w };\n });\n const result = edges1Prim.filter((edgeIn1) => {\n return edges2Prim.some((edge) => edgeIn1.v === edge.v && edgeIn1.w === edge.w);\n });\n\n return result;\n};\n\nexport const findNonClusterChild = (id, graph, clusterId) => {\n const children = graph.children(id);\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n return id;\n }\n let reserve;\n for (const child of children) {\n const _id = findNonClusterChild(child, graph, clusterId);\n\n const commonEdges = findCommonEdges(graph, clusterId, _id);\n\n if (_id) {\n if (commonEdges.length > 0) {\n reserve = _id;\n } else {\n return _id;\n }\n }\n }\n return reserve;\n};\n\nconst getAnchorId = (id) => {\n if (!clusterDb.has(id)) {\n return id;\n }\n if (!clusterDb.get(id).externalConnections) {\n return id;\n }\n\n if (clusterDb.has(id)) {\n return clusterDb.get(id).id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph, id)\n );\n descendants.set(id, extractDescendants(id, graph));\n clusterDb.set(id, { id: findNonClusterChild(id, graph, id), clusterData: graph.node(id) });\n }\n });\n\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, descendants);\n edges.forEach((edge) => {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n\n if (d1 ^ d2) {\n log.warn('Edge: ', edge, ' leaves cluster ', id);\n log.warn('Descendants of XXX ', id, ': ', descendants.get(id));\n clusterDb.get(id).externalConnections = true;\n }\n });\n } else {\n log.debug('Not a cluster ', id, descendants);\n }\n });\n\n for (let id of clusterDb.keys()) {\n const nonClusterChild = clusterDb.get(id).id;\n const parent = graph.parent(nonClusterChild);\n\n if (parent !== id && clusterDb.has(parent) && !clusterDb.get(parent).externalConnections) {\n clusterDb.get(id).id = parent;\n }\n }\n\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n log.warn(\n 'Fix XXX',\n clusterDb,\n 'ids:',\n e.v,\n e.w,\n 'Translating: ',\n clusterDb.get(e.v),\n ' --- ',\n clusterDb.get(e.w)\n );\n if (clusterDb.get(e.v) || clusterDb.get(e.w)) {\n log.warn('Fixing and trying - removing XXX', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) {\n const parent = graph.parent(v);\n clusterDb.get(parent).externalConnections = true;\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n const parent = graph.parent(w);\n clusterDb.get(parent).externalConnections = true;\n edge.toCluster = e.w;\n }\n log.warn('Fix Replacing with XXX', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlibJson.write(graph));\n extractor(graph, 0);\n\n log.trace(clusterDb);\n};\n\nexport const extractor = (graph, depth) => {\n log.warn('extractor - ', depth, graphlibJson.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n let nodes = graph.nodes();\n let hasChildren = false;\n for (const node of nodes) {\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n log.debug('Nodes = ', nodes, depth);\n for (const node of nodes) {\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb.has(node) && !clusterDb.get(node).externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n if (!clusterDb.has(node)) {\n log.debug('Not a cluster', node, depth);\n } else if (\n !clusterDb.get(node).externalConnections &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.warn(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB';\n if (clusterDb.get(node)?.clusterData?.dir) {\n dir = clusterDb.get(node).clusterData.dir;\n log.warn('Fixing dir', clusterDb.get(node).clusterData.dir, dir);\n }\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: dir,\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n log.warn('Old graph before copy', graphlibJson.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb.get(node).clusterData,\n label: clusterDb.get(node).label,\n graph: clusterGraph,\n });\n log.warn('New graph after copy node: (', node, ')', graphlibJson.write(clusterGraph));\n log.debug('Old graph after copy', graphlibJson.write(graph));\n } else {\n log.warn(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb.get(node).externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.warn('New list of nodes', nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n log.warn(' Now next level', node, data);\n if (data?.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) {\n return [];\n }\n let result = Object.assign([], nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = [...result, ...sorted];\n });\n\n return result;\n};\n\nexport const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\n", "import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js';\nimport * as graphlibJson from 'dagre-d3-es/src/graphlib/json.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport insertMarkers from '../../rendering-elements/markers.js';\nimport { updateNodeBounds } from '../../rendering-elements/shapes/util.js';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild,\n sortNodesByHierarchy,\n} from './mermaid-graphlib.js';\nimport {\n insertNode,\n positionNode,\n clear as clearNodes,\n setNodeElem,\n} from '../../rendering-elements/nodes.js';\nimport { insertCluster, clear as clearClusters } from '../../rendering-elements/clusters.js';\nimport {\n insertEdgeLabel,\n positionEdgeLabel,\n insertEdge,\n clear as clearEdges,\n} from '../../rendering-elements/edges.js';\nimport { log } from '../../../logger.js';\nimport { getSubGraphTitleMargins } from '../../../utils/subGraphTitleMargins.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\n\nconst recursiveRender = async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {\n log.warn('Graph in recursive render:XAX', graphlibJson.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root');\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render XXX', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.info('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters');\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n await Promise.all(\n graph.nodes().map(async function (v) {\n const node = graph.node(v);\n if (parentCluster !== undefined) {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.trace(\n 'Setting data for parent cluster XXX\\n Node.id = ',\n v,\n '\\n data=',\n data.height,\n '\\nParent cluster',\n parentCluster.height\n );\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace('Setting parent', v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node?.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified XBX', v, node.width, graph.node(v));\n\n // `node.graph.setGraph` applies the graph configurations such as nodeSpacing to subgraphs as without this the default values would be used\n // We override only the `ranksep` and `nodesep` configurations to allow for setting subgraph spacing while avoiding overriding other properties\n const { ranksep, nodesep } = graph.graph();\n node.graph.setGraph({\n ...node.graph.graph(),\n ranksep: ranksep + 25,\n nodesep,\n });\n\n // \"o\" will contain the full cluster not just the children\n const o = await recursiveRender(\n nodes,\n node.graph,\n diagramType,\n id,\n graph.node(v),\n siteConfig\n );\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n // node.height = o.diff;\n node.diff = o.diff || 0;\n log.info(\n 'New compound node after recursive render XAX',\n v,\n 'width',\n // node,\n node.width,\n 'height',\n node.height\n // node.x,\n // node.y\n );\n setNodeElem(newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recursively\n // Render as before\n log.trace(\n 'Cluster - the non recursive path XBX',\n v,\n node.id,\n node,\n node.width,\n 'Graph:',\n graph\n );\n log.trace(findNonClusterChild(node.id, graph));\n clusterDb.set(node.id, { id: findNonClusterChild(node.id, graph), node });\n // insertCluster(clusters, graph.node(v));\n } else {\n log.trace('Node - the non recursive path XAX', v, nodes, graph.node(v), dir);\n await insertNode(nodes, graph.node(v), { config: siteConfig, dir });\n }\n }\n })\n );\n\n const processEdges = async () => {\n const edgePromises = graph.edges().map(async function (e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info(\n 'Fix',\n clusterDb,\n 'ids:',\n e.v,\n e.w,\n 'Translating: ',\n clusterDb.get(e.v),\n clusterDb.get(e.w)\n );\n await insertEdgeLabel(edgeLabels, edge);\n });\n\n await Promise.all(edgePromises);\n };\n\n await processEdges();\n\n log.info('Graph before layout:', JSON.stringify(graphlibJson.write(graph)));\n\n log.info('############################################# XXX');\n log.info('### Layout ### XXX');\n log.info('############################################# XXX');\n\n dagreLayout(graph);\n\n log.info('Graph after layout:', JSON.stringify(graphlibJson.write(graph)));\n // Move the nodes to the correct place\n let diff = 0;\n let { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n await Promise.all(\n sortNodesByHierarchy(graph).map(async function (v) {\n const node = graph.node(v);\n log.info(\n 'Position XBX => ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node?.clusterNode) {\n // Adjust for padding when on root level\n node.y += subGraphTitleTotalMargin;\n\n log.info(\n 'A tainted cluster node XBX1',\n v,\n node.id,\n node.width,\n node.height,\n node.x,\n node.y,\n graph.parent(v)\n );\n clusterDb.get(node.id).node = node;\n positionNode(node);\n } else {\n // A tainted cluster node\n if (graph.children(v).length > 0) {\n log.info(\n 'A pure cluster node XBX1',\n v,\n node.id,\n node.x,\n node.y,\n node.width,\n node.height,\n graph.parent(v)\n );\n node.height += subGraphTitleTotalMargin;\n graph.node(node.parentId);\n const halfPadding = node?.padding / 2 || 0;\n const labelHeight = node?.labelBBox?.height || 0;\n const offsetY = labelHeight - halfPadding || 0;\n log.debug('OffsetY', offsetY, 'labelHeight', labelHeight, 'halfPadding', halfPadding);\n await insertCluster(clusters, node);\n\n // A cluster in the non-recursive way\n clusterDb.get(node.id).node = node;\n } else {\n // Regular node\n const parent = graph.node(node.parentId);\n node.y += subGraphTitleTotalMargin / 2;\n log.info(\n 'A regular node XBX1 - using the padding',\n node.id,\n 'parent',\n node.parentId,\n node.width,\n node.height,\n node.x,\n node.y,\n 'offsetY',\n node.offsetY,\n 'parent',\n parent,\n parent?.offsetY,\n node\n );\n\n positionNode(node);\n }\n }\n })\n );\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n edge.points.forEach((point) => (point.y += subGraphTitleTotalMargin / 2));\n const startNode = graph.node(e.v);\n var endNode = graph.node(e.w);\n const paths = insertEdge(edgePaths, edge, clusterDb, diagramType, startNode, endNode, id);\n positionEdgeLabel(edge, paths);\n });\n\n graph.nodes().forEach(function (v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.isGroup) {\n diff = n.diff;\n }\n });\n log.warn('Returning from recursive render XAX', elem, diff);\n return { elem, diff };\n};\n\nexport const render = async (data4Layout, svg) => {\n const graph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: data4Layout.direction,\n nodesep:\n data4Layout.config?.nodeSpacing ||\n data4Layout.config?.flowchart?.nodeSpacing ||\n data4Layout.nodeSpacing,\n ranksep:\n data4Layout.config?.rankSpacing ||\n data4Layout.config?.flowchart?.rankSpacing ||\n data4Layout.rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n const element = svg.select('g');\n insertMarkers(element, data4Layout.markers, data4Layout.type, data4Layout.diagramId);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n data4Layout.nodes.forEach((node) => {\n graph.setNode(node.id, { ...node });\n if (node.parentId) {\n graph.setParent(node.id, node.parentId);\n }\n });\n\n log.debug('Edges:', data4Layout.edges);\n data4Layout.edges.forEach((edge) => {\n // Handle self-loops\n if (edge.start === edge.end) {\n const nodeId = edge.start;\n const specialId1 = nodeId + '---' + nodeId + '---1';\n const specialId2 = nodeId + '---' + nodeId + '---2';\n const node = graph.node(nodeId);\n graph.setNode(specialId1, {\n domId: specialId1,\n id: specialId1,\n parentId: node.parentId,\n labelStyle: '',\n label: '',\n padding: 0,\n shape: 'labelRect',\n // shape: 'rect',\n style: '',\n width: 10,\n height: 10,\n });\n graph.setParent(specialId1, node.parentId);\n graph.setNode(specialId2, {\n domId: specialId2,\n id: specialId2,\n parentId: node.parentId,\n labelStyle: '',\n padding: 0,\n // shape: 'rect',\n shape: 'labelRect',\n label: '',\n style: '',\n width: 10,\n height: 10,\n });\n graph.setParent(specialId2, node.parentId);\n\n const edge1 = structuredClone(edge);\n const edgeMid = structuredClone(edge);\n const edge2 = structuredClone(edge);\n edge1.label = '';\n edge1.arrowTypeEnd = 'none';\n edge1.endLabelLeft = '';\n edge1.endLabelRight = ''; // defensive\n edge1.startLabelLeft = ''; // defensive\n edge1.id = nodeId + '-cyclic-special-1';\n edgeMid.startLabelRight = '';\n edgeMid.startLabelLeft = ''; // defensive\n edgeMid.endLabelLeft = '';\n edgeMid.endLabelRight = ''; // defensive\n edgeMid.arrowTypeStart = 'none';\n edgeMid.arrowTypeEnd = 'none';\n edgeMid.id = nodeId + '-cyclic-special-mid';\n edge2.label = '';\n edge2.startLabelRight = '';\n edge2.startLabelLeft = ''; // defensive\n edge2.arrowTypeStart = 'none';\n if (node.isGroup) {\n edge1.fromCluster = nodeId;\n edge2.toCluster = nodeId;\n }\n edge2.id = nodeId + '-cyclic-special-2';\n edge2.arrowTypeStart = 'none';\n graph.setEdge(nodeId, specialId1, edge1, nodeId + '-cyclic-special-0');\n graph.setEdge(specialId1, specialId2, edgeMid, nodeId + '-cyclic-special-1');\n graph.setEdge(specialId2, nodeId, edge2, nodeId + '-cycR({...q,...C().radar}),"getConfig"),E=i(()=>g.axes,"getAxes"),H=i(()=>g.curves,"getCurves"),N=i(()=>g.options,"getOptions"),U=i(e=>{g.axes=e.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),X=i(e=>{g.curves=e.map(t=>({name:t.name,label:t.label??t.name,entries:Y(t.entries)}))},"setCurves"),Y=i(e=>{if(e[0].axis==null)return e.map(r=>r.value);let t=E();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(r=>{let a=e.find(o=>o.axis?.$refText===r.name);if(a===void 0)throw new Error("Missing entry for axis "+r.label);return a.value})},"computeCurveEntries"),Z=i(e=>{let t=e.reduce((r,a)=>(r[a.name]=a,r),{});g.options={showLegend:t.showLegend?.value??f.showLegend,ticks:t.ticks?.value??f.ticks,max:t.max?.value??f.max,min:t.min?.value??f.min,graticule:t.graticule?.value??f.graticule}},"setOptions"),J=i(()=>{S(),g=structuredClone(k)},"clear"),x={getAxes:E,getCurves:H,getOptions:N,setAxes:U,setCurves:X,setOptions:Z,getConfig:W,clear:J,setAccTitle:w,getAccTitle:M,setDiagramTitle:L,getDiagramTitle:T,getAccDescription:G,setAccDescription:O};var K=i(e=>{V(e,x);let{axes:t,curves:r,options:a}=e;x.setAxes(t),x.setCurves(r),x.setOptions(a)},"populate"),I={parse:i(async e=>{let t=await j("radar",e);$.debug(t),K(t)},"parse")};var Q=i((e,t,r,a)=>{let o=a.db,s=o.getAxes(),m=o.getCurves(),n=o.getOptions(),l=o.getConfig(),c=o.getDiagramTitle(),d=P(t),p=tt(d,l),u=n.max??Math.max(...m.map(b=>Math.max(...b.entries))),h=n.min,y=Math.min(l.width,l.height)/2;rt(p,s,y,n.ticks,n.graticule),et(p,s,y,l),at(p,s,m,h,u,n.graticule,l),it(p,m,n.showLegend,l),p.append("text").attr("class","radarTitle").text(c).attr("x",0).attr("y",-l.height/2-l.marginTop)},"draw"),tt=i((e,t)=>{let r=t.width+t.marginLeft+t.marginRight,a=t.height+t.marginTop+t.marginBottom,o={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return A(e,a,r,t.useMaxWidth??!0),e.attr("viewBox",`0 0 ${r} ${a}`),e.append("g").attr("transform",`translate(${o.x}, ${o.y})`)},"drawFrame"),rt=i((e,t,r,a,o)=>{if(o==="circle")for(let s=0;s{let p=2*d*Math.PI/s-Math.PI/2,u=n*Math.cos(p),h=n*Math.sin(p);return`${u},${h}`}).join(" ");e.append("polygon").attr("points",l).attr("class","radarGraticule")}}},"drawGraticule"),et=i((e,t,r,a)=>{let o=t.length;for(let s=0;s{if(c.entries.length!==n)return;let p=c.entries.map((u,h)=>{let y=2*Math.PI*h/n-Math.PI/2,b=ot(u,a,o,l),_=b*Math.cos(y),z=b*Math.sin(y);return{x:_,y:z}});s==="circle"?e.append("path").attr("d",nt(p,m.curveTension)).attr("class",`radarCurve-${d}`):s==="polygon"&&e.append("polygon").attr("points",p.map(u=>`${u.x},${u.y}`).join(" ")).attr("class",`radarCurve-${d}`)})}i(at,"drawCurves");function ot(e,t,r,a){let o=Math.min(Math.max(e,t),r);return a*(o-t)/(r-t)}i(ot,"relativeRadius");function nt(e,t){let r=e.length,a=`M${e[0].x},${e[0].y}`;for(let o=0;o{let c=e.append("g").attr("transform",`translate(${o}, ${s+l*m})`);c.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${l}`),c.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(n.label)})}i(it,"drawLegend");var F={draw:Q};var st=i((e,t)=>{let r="";for(let a=0;a{let t=D(),r=C(),a=R(t,r.themeVariables),o=R(a.radar,e);return{themeVariables:a,radarOptions:o}},"buildRadarStyleOptions"),B=i(({radar:e}={})=>{let{themeVariables:t,radarOptions:r}=mt(e);return` + .radarTitle { + font-size: ${t.fontSize}; + color: ${t.titleColor}; + dominant-baseline: hanging; + text-anchor: middle; + } + .radarAxisLine { + stroke: ${r.axisColor}; + stroke-width: ${r.axisStrokeWidth}; + } + .radarAxisLabel { + dominant-baseline: middle; + text-anchor: middle; + font-size: ${r.axisLabelFontSize}px; + color: ${r.axisColor}; + } + .radarGraticule { + fill: ${r.graticuleColor}; + fill-opacity: ${r.graticuleOpacity}; + stroke: ${r.graticuleColor}; + stroke-width: ${r.graticuleStrokeWidth}; + } + .radarLegendText { + text-anchor: start; + font-size: ${r.legendFontSize}px; + dominant-baseline: hanging; + } + ${st(t,r)} + `},"styles");var Vt={parser:I,db:x,renderer:F,styles:B};export{Vt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-G7E7SVAT.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/diagram-3NCE3AQN.mjs.map similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/diagram-G7E7SVAT.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/diagram-3NCE3AQN.mjs.map index ab09408..765c1e9 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/diagram-G7E7SVAT.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-3NCE3AQN.mjs.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../src/diagrams/radar/db.ts", "../../../src/diagrams/radar/parser.ts", "../../../src/diagrams/radar/renderer.ts", "../../../src/diagrams/radar/styles.ts", "../../../src/diagrams/radar/diagram.ts"], "sourcesContent": ["import { getConfig as commonGetConfig } from '../../config.js';\nimport type { RadarDiagramConfig } from '../../config.type.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type {\n Axis,\n Curve,\n Option,\n Entry,\n} from '../../../../parser/dist/src/language/generated/ast.js';\nimport type { RadarAxis, RadarCurve, RadarOptions, RadarDB, RadarData } from './types.js';\n\nconst defaultOptions: RadarOptions = {\n showLegend: true,\n ticks: 5,\n max: null,\n min: 0,\n graticule: 'circle',\n};\n\nconst defaultRadarData: RadarData = {\n axes: [],\n curves: [],\n options: defaultOptions,\n};\n\nlet data: RadarData = structuredClone(defaultRadarData);\n\nconst DEFAULT_RADAR_CONFIG: Required = DEFAULT_CONFIG.radar;\n\nconst getConfig = (): Required => {\n const config = cleanAndMerge({\n ...DEFAULT_RADAR_CONFIG,\n ...commonGetConfig().radar,\n });\n return config;\n};\n\nconst getAxes = (): RadarAxis[] => data.axes;\nconst getCurves = (): RadarCurve[] => data.curves;\nconst getOptions = (): RadarOptions => data.options;\n\nconst setAxes = (axes: Axis[]) => {\n data.axes = axes.map((axis) => {\n return {\n name: axis.name,\n label: axis.label ?? axis.name,\n };\n });\n};\n\nconst setCurves = (curves: Curve[]) => {\n data.curves = curves.map((curve) => {\n return {\n name: curve.name,\n label: curve.label ?? curve.name,\n entries: computeCurveEntries(curve.entries),\n };\n });\n};\n\nconst computeCurveEntries = (entries: Entry[]): number[] => {\n // If entries have axis reference, we must order them according to the axes\n if (entries[0].axis == undefined) {\n return entries.map((entry) => entry.value);\n }\n const axes = getAxes();\n if (axes.length === 0) {\n throw new Error('Axes must be populated before curves for reference entries');\n }\n return axes.map((axis) => {\n const entry = entries.find((entry) => entry.axis?.$refText === axis.name);\n if (entry === undefined) {\n throw new Error('Missing entry for axis ' + axis.label);\n }\n return entry.value;\n });\n};\n\nconst setOptions = (options: Option[]) => {\n // Create a map from option names to option objects for quick lookup\n const optionMap = options.reduce(\n (acc, option) => {\n acc[option.name] = option;\n return acc;\n },\n {} as Record\n );\n\n data.options = {\n showLegend: (optionMap.showLegend?.value as boolean) ?? defaultOptions.showLegend,\n ticks: (optionMap.ticks?.value as number) ?? defaultOptions.ticks,\n max: (optionMap.max?.value as number) ?? defaultOptions.max,\n min: (optionMap.min?.value as number) ?? defaultOptions.min,\n graticule: (optionMap.graticule?.value as 'circle' | 'polygon') ?? defaultOptions.graticule,\n };\n};\n\nconst clear = () => {\n commonClear();\n data = structuredClone(defaultRadarData);\n};\n\nexport const db: RadarDB = {\n getAxes,\n getCurves,\n getOptions,\n setAxes,\n setCurves,\n setOptions,\n getConfig,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n};\n", "import type { Radar } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { db } from './db.js';\n\nconst populate = (ast: Radar) => {\n populateCommonDb(ast, db);\n const { axes, curves, options } = ast;\n // Here we can add specific logic between the AST and the DB\n db.setAxes(axes);\n db.setCurves(curves);\n db.setOptions(options);\n};\n\nexport const parser: ParserDefinition = {\n parse: async (input: string): Promise => {\n const ast: Radar = await parse('radar', input);\n log.debug(ast);\n populate(ast);\n },\n};\n", "import type { Diagram } from '../../Diagram.js';\nimport type { RadarDiagramConfig } from '../../config.type.js';\nimport type { DiagramRenderer, DrawDefinition, SVG, SVGGroup } from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { RadarDB, RadarAxis, RadarCurve } from './types.js';\n\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n const db = diagram.db as RadarDB;\n const axes = db.getAxes();\n const curves = db.getCurves();\n const options = db.getOptions();\n const config = db.getConfig();\n const title = db.getDiagramTitle();\n\n const svg: SVG = selectSvgElement(id);\n\n // \uD83D\uDDBC\uFE0F Draw the main frame\n const g = drawFrame(svg, config);\n\n // The maximum value for the radar chart is the 'max' option if it exists,\n // otherwise it is the maximum value of the curves\n const maxValue: number =\n options.max ?? Math.max(...curves.map((curve) => Math.max(...curve.entries)));\n const minValue: number = options.min;\n const radius = Math.min(config.width, config.height) / 2;\n\n // \uD83D\uDD78\uFE0F Draw graticule\n drawGraticule(g, axes, radius, options.ticks, options.graticule);\n\n // \uD83E\uDE93 Draw the axes\n drawAxes(g, axes, radius, config);\n\n // \uD83D\uDCCA Draw the curves\n drawCurves(g, axes, curves, minValue, maxValue, options.graticule, config);\n\n // \uD83C\uDFF7 Draw Legend\n drawLegend(g, curves, options.showLegend, config);\n\n // \uD83C\uDFF7 Draw Title\n g.append('text')\n .attr('class', 'radarTitle')\n .text(title)\n .attr('x', 0)\n .attr('y', -config.height / 2 - config.marginTop);\n};\n\n// Returns a g element to center the radar chart\n// it is of type SVGElement\nconst drawFrame = (svg: SVG, config: Required): SVGGroup => {\n const totalWidth = config.width + config.marginLeft + config.marginRight;\n const totalHeight = config.height + config.marginTop + config.marginBottom;\n const center = {\n x: config.marginLeft + config.width / 2,\n y: config.marginTop + config.height / 2,\n };\n configureSvgSize(svg, totalHeight, totalWidth, config.useMaxWidth ?? true);\n\n svg.attr('viewBox', `0 0 ${totalWidth} ${totalHeight}`);\n // g element to center the radar chart\n return svg.append('g').attr('transform', `translate(${center.x}, ${center.y})`);\n};\n\nconst drawGraticule = (\n g: SVGGroup,\n axes: RadarAxis[],\n radius: number,\n ticks: number,\n graticule: string\n) => {\n if (graticule === 'circle') {\n // Draw a circle for each tick\n for (let i = 0; i < ticks; i++) {\n const r = (radius * (i + 1)) / ticks;\n g.append('circle').attr('r', r).attr('class', 'radarGraticule');\n }\n } else if (graticule === 'polygon') {\n // Draw a polygon\n const numAxes = axes.length;\n for (let i = 0; i < ticks; i++) {\n const r = (radius * (i + 1)) / ticks;\n const points = axes\n .map((_, j) => {\n const angle = (2 * j * Math.PI) / numAxes - Math.PI / 2;\n const x = r * Math.cos(angle);\n const y = r * Math.sin(angle);\n return `${x},${y}`;\n })\n .join(' ');\n g.append('polygon').attr('points', points).attr('class', 'radarGraticule');\n }\n }\n};\n\nconst drawAxes = (\n g: SVGGroup,\n axes: RadarAxis[],\n radius: number,\n config: Required\n) => {\n const numAxes = axes.length;\n\n for (let i = 0; i < numAxes; i++) {\n const label = axes[i].label;\n const angle = (2 * i * Math.PI) / numAxes - Math.PI / 2;\n g.append('line')\n .attr('x1', 0)\n .attr('y1', 0)\n .attr('x2', radius * config.axisScaleFactor * Math.cos(angle))\n .attr('y2', radius * config.axisScaleFactor * Math.sin(angle))\n .attr('class', 'radarAxisLine');\n g.append('text')\n .text(label)\n .attr('x', radius * config.axisLabelFactor * Math.cos(angle))\n .attr('y', radius * config.axisLabelFactor * Math.sin(angle))\n .attr('class', 'radarAxisLabel');\n }\n};\n\nfunction drawCurves(\n g: SVGGroup,\n axes: RadarAxis[],\n curves: RadarCurve[],\n minValue: number,\n maxValue: number,\n graticule: string,\n config: Required\n) {\n const numAxes = axes.length;\n const radius = Math.min(config.width, config.height) / 2;\n\n curves.forEach((curve, index) => {\n if (curve.entries.length !== numAxes) {\n // Skip curves that do not have an entry for each axis.\n return;\n }\n // Compute points for the curve.\n const points = curve.entries.map((entry, i) => {\n const angle = (2 * Math.PI * i) / numAxes - Math.PI / 2;\n const r = relativeRadius(entry, minValue, maxValue, radius);\n const x = r * Math.cos(angle);\n const y = r * Math.sin(angle);\n return { x, y };\n });\n\n if (graticule === 'circle') {\n // Draw a closed curve through the points.\n g.append('path')\n .attr('d', closedRoundCurve(points, config.curveTension))\n .attr('class', `radarCurve-${index}`);\n } else if (graticule === 'polygon') {\n // Draw a polygon for each curve.\n g.append('polygon')\n .attr('points', points.map((p) => `${p.x},${p.y}`).join(' '))\n .attr('class', `radarCurve-${index}`);\n }\n });\n}\n\nexport function relativeRadius(\n value: number,\n minValue: number,\n maxValue: number,\n radius: number\n): number {\n const clippedValue = Math.min(Math.max(value, minValue), maxValue);\n return (radius * (clippedValue - minValue)) / (maxValue - minValue);\n}\n\nexport function closedRoundCurve(points: { x: number; y: number }[], tension: number): string {\n // Catmull-Rom spline helper function\n const numPoints = points.length;\n let d = `M${points[0].x},${points[0].y}`;\n // For each segment from point i to point (i+1) mod n, compute control points.\n for (let i = 0; i < numPoints; i++) {\n const p0 = points[(i - 1 + numPoints) % numPoints];\n const p1 = points[i];\n const p2 = points[(i + 1) % numPoints];\n const p3 = points[(i + 2) % numPoints];\n // Calculate the control points for the cubic Bezier segment\n const cp1 = {\n x: p1.x + (p2.x - p0.x) * tension,\n y: p1.y + (p2.y - p0.y) * tension,\n };\n const cp2 = {\n x: p2.x - (p3.x - p1.x) * tension,\n y: p2.y - (p3.y - p1.y) * tension,\n };\n d += ` C${cp1.x},${cp1.y} ${cp2.x},${cp2.y} ${p2.x},${p2.y}`;\n }\n return `${d} Z`;\n}\n\nfunction drawLegend(\n g: SVGGroup,\n curves: RadarCurve[],\n showLegend: boolean,\n config: Required\n) {\n if (!showLegend) {\n return;\n }\n\n // Create a legend group and position it in the top-right corner of the chart.\n const legendX = ((config.width / 2 + config.marginRight) * 3) / 4;\n const legendY = (-(config.height / 2 + config.marginTop) * 3) / 4;\n const lineHeight = 20;\n\n curves.forEach((curve, index) => {\n const itemGroup = g\n .append('g')\n .attr('transform', `translate(${legendX}, ${legendY + index * lineHeight})`);\n\n // Draw a square marker for this curve.\n itemGroup\n .append('rect')\n .attr('width', 12)\n .attr('height', 12)\n .attr('class', `radarLegendBox-${index}`);\n\n // Draw the label text next to the marker.\n itemGroup\n .append('text')\n .attr('x', 16)\n .attr('y', 0)\n .attr('class', 'radarLegendText')\n .text(curve.label);\n });\n}\n\nexport const renderer: DiagramRenderer = { draw };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport type { RadarStyleOptions } from './types.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport { getConfig as getConfigAPI } from '../../config.js';\n\nconst genIndexStyles = (\n themeVariables: ReturnType,\n radarOptions: RadarStyleOptions\n) => {\n let sections = '';\n for (let i = 0; i < themeVariables.THEME_COLOR_LIMIT; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const indexColor = (themeVariables as any)[`cScale${i}`];\n sections += `\n\t\t.radarCurve-${i} {\n\t\t\tcolor: ${indexColor};\n\t\t\tfill: ${indexColor};\n\t\t\tfill-opacity: ${radarOptions.curveOpacity};\n\t\t\tstroke: ${indexColor};\n\t\t\tstroke-width: ${radarOptions.curveStrokeWidth};\n\t\t}\n\t\t.radarLegendBox-${i} {\n\t\t\tfill: ${indexColor};\n\t\t\tfill-opacity: ${radarOptions.curveOpacity};\n\t\t\tstroke: ${indexColor};\n\t\t}\n\t\t`;\n }\n return sections;\n};\n\nexport const buildRadarStyleOptions = (radar?: RadarStyleOptions) => {\n const defaultThemeVariables = getThemeVariables();\n const currentConfig = getConfigAPI();\n\n const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);\n const radarOptions: RadarStyleOptions = cleanAndMerge(themeVariables.radar, radar);\n\n return { themeVariables, radarOptions };\n};\n\nexport const styles: DiagramStylesProvider = ({ radar }: { radar?: RadarStyleOptions } = {}) => {\n const { themeVariables, radarOptions } = buildRadarStyleOptions(radar);\n return `\n\t.radarTitle {\n\t\tfont-size: ${themeVariables.fontSize};\n\t\tcolor: ${themeVariables.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${radarOptions.axisColor};\n\t\tstroke-width: ${radarOptions.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${radarOptions.axisLabelFontSize}px;\n\t\tcolor: ${radarOptions.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${radarOptions.graticuleColor};\n\t\tfill-opacity: ${radarOptions.graticuleOpacity};\n\t\tstroke: ${radarOptions.graticuleColor};\n\t\tstroke-width: ${radarOptions.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${radarOptions.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${genIndexStyles(themeVariables, radarOptions)}\n\t`;\n};\n\nexport default styles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { db } from './db.js';\nimport { parser } from './parser.js';\nimport { renderer } from './renderer.js';\nimport { styles } from './styles.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n};\n"], - "mappings": "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", + "mappings": "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", "names": ["defaultOptions", "defaultRadarData", "data", "DEFAULT_RADAR_CONFIG", "defaultConfig_default", "getConfig", "__name", "cleanAndMerge", "getAxes", "getCurves", "getOptions", "setAxes", "axes", "axis", "setCurves", "curves", "curve", "computeCurveEntries", "entries", "entry", "setOptions", "options", "optionMap", "acc", "option", "clear", "db", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "populate", "__name", "ast", "populateCommonDb", "db", "axes", "curves", "options", "parser", "input", "parse", "log", "draw", "__name", "_text", "id", "_version", "diagram", "db", "axes", "curves", "options", "config", "title", "svg", "selectSvgElement", "g", "drawFrame", "maxValue", "curve", "minValue", "radius", "drawGraticule", "drawAxes", "drawCurves", "drawLegend", "totalWidth", "totalHeight", "center", "configureSvgSize", "ticks", "graticule", "i", "r", "numAxes", "points", "_", "j", "angle", "x", "y", "label", "index", "entry", "relativeRadius", "closedRoundCurve", "p", "value", "clippedValue", "tension", "numPoints", "d", "p0", "p1", "p2", "p3", "cp1", "cp2", "showLegend", "legendX", "legendY", "lineHeight", "itemGroup", "renderer", "genIndexStyles", "__name", "themeVariables", "radarOptions", "sections", "i", "indexColor", "buildRadarStyleOptions", "radar", "defaultThemeVariables", "getThemeVariables", "currentConfig", "getConfig", "cleanAndMerge", "styles", "diagram", "parser", "db", "renderer", "styles"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-G7E7SVAT.mjs b/assets/mermaid/chunks/mermaid.esm.min/diagram-G7E7SVAT.mjs deleted file mode 100644 index 6e76d7b..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/diagram-G7E7SVAT.mjs +++ /dev/null @@ -1,43 +0,0 @@ -import{a as V}from"./chunk-AEOMTBSW.mjs";import{a as j}from"./chunk-TJ4WWVTA.mjs";import"./chunk-AHTCUU5T.mjs";import"./chunk-JVPIJFVP.mjs";import"./chunk-SYGLAQYM.mjs";import"./chunk-NHJX6F6M.mjs";import"./chunk-F3E5R7LK.mjs";import"./chunk-ZX4KS3OZ.mjs";import{a as P}from"./chunk-D4HHKWPY.mjs";import{l as R}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{N as A,Q as S,R as w,S as M,T as O,U as G,V as L,W as T,h as D,j as v,s as C}from"./chunk-3UWU4A3N.mjs";import{b as $}from"./chunk-MGPAVIPZ.mjs";import"./chunk-MFSPT3DZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as i}from"./chunk-VELTKBKT.mjs";var f={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},k={axes:[],curves:[],options:f},g=structuredClone(k),q=v.radar,W=i(()=>R({...q,...C().radar}),"getConfig"),E=i(()=>g.axes,"getAxes"),H=i(()=>g.curves,"getCurves"),N=i(()=>g.options,"getOptions"),U=i(e=>{g.axes=e.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),X=i(e=>{g.curves=e.map(t=>({name:t.name,label:t.label??t.name,entries:Y(t.entries)}))},"setCurves"),Y=i(e=>{if(e[0].axis==null)return e.map(r=>r.value);let t=E();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(r=>{let a=e.find(o=>o.axis?.$refText===r.name);if(a===void 0)throw new Error("Missing entry for axis "+r.label);return a.value})},"computeCurveEntries"),Z=i(e=>{let t=e.reduce((r,a)=>(r[a.name]=a,r),{});g.options={showLegend:t.showLegend?.value??f.showLegend,ticks:t.ticks?.value??f.ticks,max:t.max?.value??f.max,min:t.min?.value??f.min,graticule:t.graticule?.value??f.graticule}},"setOptions"),J=i(()=>{S(),g=structuredClone(k)},"clear"),x={getAxes:E,getCurves:H,getOptions:N,setAxes:U,setCurves:X,setOptions:Z,getConfig:W,clear:J,setAccTitle:w,getAccTitle:M,setDiagramTitle:L,getDiagramTitle:T,getAccDescription:G,setAccDescription:O};var K=i(e=>{V(e,x);let{axes:t,curves:r,options:a}=e;x.setAxes(t),x.setCurves(r),x.setOptions(a)},"populate"),I={parse:i(async e=>{let t=await j("radar",e);$.debug(t),K(t)},"parse")};var Q=i((e,t,r,a)=>{let o=a.db,s=o.getAxes(),m=o.getCurves(),n=o.getOptions(),l=o.getConfig(),c=o.getDiagramTitle(),d=P(t),p=tt(d,l),u=n.max??Math.max(...m.map(b=>Math.max(...b.entries))),h=n.min,y=Math.min(l.width,l.height)/2;rt(p,s,y,n.ticks,n.graticule),et(p,s,y,l),at(p,s,m,h,u,n.graticule,l),it(p,m,n.showLegend,l),p.append("text").attr("class","radarTitle").text(c).attr("x",0).attr("y",-l.height/2-l.marginTop)},"draw"),tt=i((e,t)=>{let r=t.width+t.marginLeft+t.marginRight,a=t.height+t.marginTop+t.marginBottom,o={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return A(e,a,r,t.useMaxWidth??!0),e.attr("viewBox",`0 0 ${r} ${a}`),e.append("g").attr("transform",`translate(${o.x}, ${o.y})`)},"drawFrame"),rt=i((e,t,r,a,o)=>{if(o==="circle")for(let s=0;s{let p=2*d*Math.PI/s-Math.PI/2,u=n*Math.cos(p),h=n*Math.sin(p);return`${u},${h}`}).join(" ");e.append("polygon").attr("points",l).attr("class","radarGraticule")}}},"drawGraticule"),et=i((e,t,r,a)=>{let o=t.length;for(let s=0;s{if(c.entries.length!==n)return;let p=c.entries.map((u,h)=>{let y=2*Math.PI*h/n-Math.PI/2,b=ot(u,a,o,l),_=b*Math.cos(y),z=b*Math.sin(y);return{x:_,y:z}});s==="circle"?e.append("path").attr("d",nt(p,m.curveTension)).attr("class",`radarCurve-${d}`):s==="polygon"&&e.append("polygon").attr("points",p.map(u=>`${u.x},${u.y}`).join(" ")).attr("class",`radarCurve-${d}`)})}i(at,"drawCurves");function ot(e,t,r,a){let o=Math.min(Math.max(e,t),r);return a*(o-t)/(r-t)}i(ot,"relativeRadius");function nt(e,t){let r=e.length,a=`M${e[0].x},${e[0].y}`;for(let o=0;o{let c=e.append("g").attr("transform",`translate(${o}, ${s+l*m})`);c.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${l}`),c.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(n.label)})}i(it,"drawLegend");var F={draw:Q};var st=i((e,t)=>{let r="";for(let a=0;a{let t=D(),r=C(),a=R(t,r.themeVariables),o=R(a.radar,e);return{themeVariables:a,radarOptions:o}},"buildRadarStyleOptions"),B=i(({radar:e}={})=>{let{themeVariables:t,radarOptions:r}=mt(e);return` - .radarTitle { - font-size: ${t.fontSize}; - color: ${t.titleColor}; - dominant-baseline: hanging; - text-anchor: middle; - } - .radarAxisLine { - stroke: ${r.axisColor}; - stroke-width: ${r.axisStrokeWidth}; - } - .radarAxisLabel { - dominant-baseline: middle; - text-anchor: middle; - font-size: ${r.axisLabelFontSize}px; - color: ${r.axisColor}; - } - .radarGraticule { - fill: ${r.graticuleColor}; - fill-opacity: ${r.graticuleOpacity}; - stroke: ${r.graticuleColor}; - stroke-width: ${r.graticuleStrokeWidth}; - } - .radarLegendText { - text-anchor: start; - font-size: ${r.legendFontSize}px; - dominant-baseline: hanging; - } - ${st(t,r)} - `},"styles");var Vt={parser:I,db:x,renderer:F,styles:B};export{Vt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-GF46GFSD.mjs b/assets/mermaid/chunks/mermaid.esm.min/diagram-GF46GFSD.mjs new file mode 100644 index 0000000..b56073e --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-GF46GFSD.mjs @@ -0,0 +1,24 @@ +import{a as de}from"./chunk-JQRUD6KW.mjs";import{a as me}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{a as fe}from"./chunk-LRIF4GLE.mjs";import{a as pe}from"./chunk-ZXARS5L4.mjs";import{c as ce,d as v}from"./chunk-T2UQINTJ.mjs";import{o as W}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{O as Z,S as ee,T as te,U as ae,V as re,W as se,X as le,Y as oe,h as K,j as Q,t as L}from"./chunk-67TQ5CYL.mjs";import{b as k,h as E,j as $,k as ne,l as ie,m as I}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as p}from"./chunk-AQ6EADP3.mjs";var F=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=te;this.getAccTitle=ae;this.setDiagramTitle=le;this.getDiagramTitle=oe;this.getAccDescription=se;this.setAccDescription=re}static{p(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let r=Q,i=L();return W({...r.treemap,...i.treemap??{}})}addNode(r,i){this.nodes.push(r),this.levels.set(r,i),i===0&&(this.outerNodes.push(r),this.root??=r)}getRoot(){return{name:"",children:this.outerNodes}}addClass(r,i){let l=this.classes.get(r)??{id:r,styles:[],textStyles:[]},o=i.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");o&&o.forEach(s=>{ce(s)&&(l?.textStyles?l.textStyles.push(s):l.textStyles=[s]),l?.styles?l.styles.push(s):l.styles=[s]}),this.classes.set(r,l)}getClasses(){return this.classes}getStylesForClass(r){return this.classes.get(r)?.styles??[]}clear(){ee(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function ge(m){if(!m.length)return[];let r=[],i=[];return m.forEach(l=>{let o={name:l.name,children:l.type==="Leaf"?void 0:[]};for(o.classSelector=l?.classSelector,l?.cssCompiledStyles&&(o.cssCompiledStyles=l.cssCompiledStyles),l.type==="Leaf"&&l.value!==void 0&&(o.value=l.value);i.length>0&&i[i.length-1].level>=l.level;)i.pop();if(i.length===0)r.push(o);else{let s=i[i.length-1].node;s.children?s.children.push(o):s.children=[o]}l.type!=="Leaf"&&i.push({node:o,level:l.level})}),r}p(ge,"buildHierarchy");var ve=p((m,r)=>{de(m,r);let i=[];for(let s of m.TreemapRows??[])s.$type==="ClassDefStatement"&&r.addClass(s.className??"",s.styleText??"");for(let s of m.TreemapRows??[]){let d=s.item;if(!d)continue;let f=s.indent?parseInt(s.indent):0,R=we(d),a=d.classSelector?r.getStylesForClass(d.classSelector):[],A=a.length>0?a:void 0,T={level:f,name:R,type:d.$type,value:d.value,classSelector:d.classSelector,cssCompiledStyles:A};i.push(T)}let l=ge(i),o=p((s,d)=>{for(let f of s)r.addNode(f,d),f.children&&f.children.length>0&&o(f.children,d+1)},"addNodesRecursively");o(l,0)},"populate"),we=p(m=>m.name?String(m.name):"","getItemName"),O={parser:{yy:void 0},parse:p(async m=>{try{let i=await me("treemap",m);k.debug("Treemap AST:",i);let l=O.parser?.yy;if(!(l instanceof F))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");ve(i,l)}catch(r){throw k.error("Error parsing treemap:",r),r}},"parse")};var Ne=10,P=10,B=25,Le=p((m,r,i,l)=>{let o=l.db,s=o.getConfig(),d=s.padding??Ne,f=o.getDiagramTitle(),R=o.getRoot(),{themeVariables:a}=L();if(!R)return;let A=f?30:0,T=fe(r),X=s.nodeWidth?s.nodeWidth*P:960,Y=s.nodeHeight?s.nodeHeight*P:500,G=X,q=Y+A;T.attr("viewBox",`0 0 ${G} ${q}`),Z(T,q,G,s.useMaxWidth);let C;try{let e=s.valueFormat||",";if(e==="$0,0")C=p(t=>"$"+$(",")(t),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){let t=/\.\d+/.exec(e),n=t?t[0]:"";C=p(g=>"$"+$(","+n)(g),"valueFormat")}else if(e.startsWith("$")){let t=e.substring(1);C=p(n=>"$"+$(t||"")(n),"valueFormat")}else C=$(e)}catch(e){k.error("Error creating format function:",e),C=$(",")}let V=I().range(["transparent",a.cScale0,a.cScale1,a.cScale2,a.cScale3,a.cScale4,a.cScale5,a.cScale6,a.cScale7,a.cScale8,a.cScale9,a.cScale10,a.cScale11]),ye=I().range(["transparent",a.cScalePeer0,a.cScalePeer1,a.cScalePeer2,a.cScalePeer3,a.cScalePeer4,a.cScalePeer5,a.cScalePeer6,a.cScalePeer7,a.cScalePeer8,a.cScalePeer9,a.cScalePeer10,a.cScalePeer11]),H=I().range([a.cScaleLabel0,a.cScaleLabel1,a.cScaleLabel2,a.cScaleLabel3,a.cScaleLabel4,a.cScaleLabel5,a.cScaleLabel6,a.cScaleLabel7,a.cScaleLabel8,a.cScaleLabel9,a.cScaleLabel10,a.cScaleLabel11]);f&&T.append("text").attr("x",G/2).attr("y",A/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(f);let U=T.append("g").attr("transform",`translate(0, ${A})`).attr("class","treemapContainer"),Se=ne(R).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),J=ie().size([X,Y]).paddingTop(e=>e.children&&e.children.length>0?B+P:0).paddingInner(d).paddingLeft(e=>e.children&&e.children.length>0?P:0).paddingRight(e=>e.children&&e.children.length>0?P:0).paddingBottom(e=>e.children&&e.children.length>0?P:0).round(!0)(Se),be=J.descendants().filter(e=>e.children&&e.children.length>0),z=U.selectAll(".treemapSection").data(be).enter().append("g").attr("class","treemapSection").attr("transform",e=>`translate(${e.x0},${e.y0})`);z.append("rect").attr("width",e=>e.x1-e.x0).attr("height",B).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",e=>e.depth===0?"display: none;":""),z.append("clipPath").attr("id",(e,t)=>`clip-section-${r}-${t}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-12)).attr("height",B),z.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class",(e,t)=>`treemapSection section${t}`).attr("fill",e=>V(e.data.name)).attr("fill-opacity",.6).attr("stroke",e=>ye(e.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",e=>{if(e.depth===0)return"display: none;";let t=v({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+";"+t.borderStyles.join(";")}),z.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",B/2).attr("dominant-baseline","middle").text(e=>e.depth===0?"":e.data.name).attr("font-weight","bold").attr("style",e=>{if(e.depth===0)return"display: none;";let t="dominant-baseline: middle; font-size: 12px; fill:"+H(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",n=v({cssCompiledStyles:e.data.cssCompiledStyles});return t+n.labelStyles.replace("color:","fill:")}).each(function(e){if(e.depth===0)return;let t=E(this),n=e.data.name;t.text(n);let g=e.x1-e.x0,y=6,S;s.showValues!==!1&&e.value?S=g-10-30-10-y:S=g-y-6;let u=Math.max(15,S),c=t.node();if(c.getComputedTextLength()>u){let h=n;for(;h.length>0;){if(h=n.substring(0,h.length-1),h.length===0){t.text("..."),c.getComputedTextLength()>u&&t.text("");break}if(t.text(h+"..."),c.getComputedTextLength()<=u)break}}}),s.showValues!==!1&&z.append("text").attr("class","treemapSectionValue").attr("x",e=>e.x1-e.x0-10).attr("y",B/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(e=>e.value?C(e.value):"").attr("font-style","italic").attr("style",e=>{if(e.depth===0)return"display: none;";let t="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+H(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",n=v({cssCompiledStyles:e.data.cssCompiledStyles});return t+n.labelStyles.replace("color:","fill:")});let xe=J.leaves(),j=U.selectAll(".treemapLeafGroup").data(xe).enter().append("g").attr("class",(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:""}x`).attr("transform",e=>`translate(${e.x0},${e.y0})`);j.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class","treemapLeaf").attr("fill",e=>e.parent?V(e.parent.data.name):V(e.data.name)).attr("style",e=>v({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",e=>e.parent?V(e.parent.data.name):V(e.data.name)).attr("stroke-width",3),j.append("clipPath").attr("id",(e,t)=>`clip-${r}-${t}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-4)).attr("height",e=>Math.max(0,e.y1-e.y0-4)),j.append("text").attr("class","treemapLabel").attr("x",e=>(e.x1-e.x0)/2).attr("y",e=>(e.y1-e.y0)/2).attr("style",e=>{let t="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+H(e.data.name)+";",n=v({cssCompiledStyles:e.data.cssCompiledStyles});return t+n.labelStyles.replace("color:","fill:")}).attr("clip-path",(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.data.name).each(function(e){let t=E(this),n=e.x1-e.x0,g=e.y1-e.y0,y=t.node(),S=4,w=n-2*S,u=g-2*S;if(w<10||u<10){t.style("display","none");return}let c=parseInt(t.style("font-size"),10),D=8,b=28,h=.6,x=6,M=2;for(;y.getComputedTextLength()>w&&c>D;)c--,t.style("font-size",`${c}px`);let N=Math.max(x,Math.min(b,Math.round(c*h))),_=c+M+N;for(;_>u&&c>D&&(c--,N=Math.max(x,Math.min(b,Math.round(c*h))),!(Nu;t.style("font-size",`${c}px`),(y.getComputedTextLength()>w||c(t.x1-t.x0)/2).attr("y",function(t){return(t.y1-t.y0)/2}).attr("style",t=>{let n="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+H(t.data.name)+";",g=v({cssCompiledStyles:t.data.cssCompiledStyles});return n+g.labelStyles.replace("color:","fill:")}).attr("clip-path",(t,n)=>`url(#clip-${r}-${n})`).text(t=>t.value?C(t.value):"").each(function(t){let n=E(this),g=this.parentNode;if(!g){n.style("display","none");return}let y=E(g).select(".treemapLabel");if(y.empty()||y.style("display")==="none"){n.style("display","none");return}let S=parseFloat(y.style("font-size")),w=28,u=.6,c=6,D=2,b=Math.max(c,Math.min(w,Math.round(S*u)));n.style("font-size",`${b}px`);let x=(t.y1-t.y0)/2+S/2+D;n.attr("y",x);let M=t.x1-t.x0,Ce=t.y1-t.y0-4,De=M-8;n.node().getComputedTextLength()>De||x+b>Ce||b{let r=K(),i=L(),l=W(r,i.themeVariables),o=W(Fe,m),s=o.titleColor??l.titleColor,d=o.labelColor??l.textColor,f=o.valueColor??l.textColor;return` + .treemapNode.section { + stroke: ${o.sectionStrokeColor}; + stroke-width: ${o.sectionStrokeWidth}; + fill: ${o.sectionFillColor}; + } + .treemapNode.leaf { + stroke: ${o.leafStrokeColor}; + stroke-width: ${o.leafStrokeWidth}; + fill: ${o.leafFillColor}; + } + .treemapLabel { + fill: ${d}; + font-size: ${o.labelFontSize}; + } + .treemapValue { + fill: ${f}; + font-size: ${o.valueFontSize}; + } + .treemapTitle { + fill: ${s}; + font-size: ${o.titleFontSize}; + } + `},"getStyles"),he=Pe;var ft={parser:O,get db(){return new F},renderer:ue,styles:he};export{ft as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-HOHITQNR.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/diagram-GF46GFSD.mjs.map similarity index 64% rename from assets/mermaid/chunks/mermaid.esm.min/diagram-HOHITQNR.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/diagram-GF46GFSD.mjs.map index edcbc3e..5065128 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/diagram-HOHITQNR.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-GF46GFSD.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/treemap/db.ts", "../../../src/diagrams/treemap/utils.ts", "../../../src/diagrams/treemap/parser.ts", "../../../src/diagrams/treemap/renderer.ts", "../../../src/diagrams/treemap/styles.ts", "../../../src/diagrams/treemap/diagram.ts"], - "sourcesContent": ["import type { DiagramDB } from '../../diagram-api/types.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport type { TreemapDiagramConfig, TreemapNode } from './types.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { isLabelStyle } from '../../rendering-util/rendering-elements/shapes/handDrawnShapeStyles.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nexport class TreeMapDB implements DiagramDB {\n private nodes: TreemapNode[] = [];\n private levels: Map = new Map();\n private outerNodes: TreemapNode[] = [];\n private classes: Map = new Map();\n private root?: TreemapNode;\n\n public getNodes() {\n return this.nodes;\n }\n\n public getConfig() {\n const defaultConfig = DEFAULT_CONFIG as unknown as { treemap: Required };\n const userConfig = commonGetConfig() as unknown as { treemap?: Partial };\n return cleanAndMerge({\n ...defaultConfig.treemap,\n ...(userConfig.treemap ?? {}),\n }) as Required;\n }\n\n public addNode(node: TreemapNode, level: number) {\n this.nodes.push(node);\n this.levels.set(node, level);\n if (level === 0) {\n this.outerNodes.push(node);\n this.root ??= node;\n }\n }\n\n public getRoot() {\n return { name: '', children: this.outerNodes };\n }\n\n public addClass(id: string, _style: string) {\n const styleClass = this.classes.get(id) ?? { id, styles: [], textStyles: [] };\n const styles = _style.replace(/\\\\,/g, '\u00A7\u00A7\u00A7').replace(/,/g, ';').replace(/\u00A7\u00A7\u00A7/g, ',').split(';');\n if (styles) {\n styles.forEach((s) => {\n if (isLabelStyle(s)) {\n if (styleClass?.textStyles) {\n styleClass.textStyles.push(s);\n } else {\n styleClass.textStyles = [s];\n }\n }\n if (styleClass?.styles) {\n styleClass.styles.push(s);\n } else {\n styleClass.styles = [s];\n }\n });\n }\n this.classes.set(id, styleClass);\n }\n\n public getClasses() {\n return this.classes;\n }\n\n public getStylesForClass(classSelector: string): string[] {\n return this.classes.get(classSelector)?.styles ?? [];\n }\n\n public clear() {\n commonClear();\n this.nodes = [];\n this.levels = new Map();\n this.outerNodes = [];\n this.classes = new Map();\n this.root = undefined;\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getAccDescription = getAccDescription;\n public setAccDescription = setAccDescription;\n}\n", "import type { TreemapNode } from './types.js';\n\n/**\n * Converts a flat array of treemap items into a hierarchical structure\n * @param items - Array of flat treemap items with level, name, type, and optional value\n * @returns A hierarchical tree structure\n */\nexport function buildHierarchy(\n items: {\n level: number;\n name: string;\n type: string;\n value?: number;\n classSelector?: string;\n cssCompiledStyles?: string[];\n }[]\n): TreemapNode[] {\n if (!items.length) {\n return [];\n }\n\n const root: TreemapNode[] = [];\n const stack: { node: TreemapNode; level: number }[] = [];\n\n items.forEach((item) => {\n const node: TreemapNode = {\n name: item.name,\n children: item.type === 'Leaf' ? undefined : [],\n };\n node.classSelector = item?.classSelector;\n if (item?.cssCompiledStyles) {\n node.cssCompiledStyles = item.cssCompiledStyles;\n }\n\n if (item.type === 'Leaf' && item.value !== undefined) {\n node.value = item.value;\n }\n\n // Find the right parent for this node\n while (stack.length > 0 && stack[stack.length - 1].level >= item.level) {\n stack.pop();\n }\n\n if (stack.length === 0) {\n // This is a root node\n root.push(node);\n } else {\n // Add as child to the parent\n const parent = stack[stack.length - 1].node;\n if (parent.children) {\n parent.children.push(node);\n } else {\n parent.children = [node];\n }\n }\n\n // Only add to stack if it can have children\n if (item.type !== 'Leaf') {\n stack.push({ node, level: item.level });\n }\n });\n\n return root;\n}\n", "import { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport type { TreemapNode, TreemapAst, TreemapDB } from './types.js';\nimport { buildHierarchy } from './utils.js';\nimport { TreeMapDB } from './db.js';\n\n/**\n * Populates the database with data from the Treemap AST\n * @param ast - The Treemap AST\n */\nconst populate = (ast: TreemapAst, db: TreemapDB) => {\n // We need to bypass the type checking for populateCommonDb\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n populateCommonDb(ast as any, db);\n\n const items: {\n level: number;\n name: string;\n type: string;\n value?: number;\n classSelector?: string;\n cssCompiledStyles?: string[];\n }[] = [];\n\n // Extract classes and styles from the treemap\n for (const row of ast.TreemapRows ?? []) {\n if (row.$type === 'ClassDefStatement') {\n db.addClass(row.className ?? '', row.styleText ?? '');\n }\n }\n\n // Extract data from each row in the treemap\n for (const row of ast.TreemapRows ?? []) {\n const item = row.item;\n\n if (!item) {\n continue;\n }\n\n const level = row.indent ? parseInt(row.indent) : 0;\n const name = getItemName(item);\n\n // Get styles as a string if they exist\n const styles = item.classSelector ? db.getStylesForClass(item.classSelector) : [];\n const cssCompiledStyles = styles.length > 0 ? styles : undefined;\n\n const itemData = {\n level,\n name,\n type: item.$type,\n value: item.value,\n classSelector: item.classSelector,\n cssCompiledStyles,\n };\n\n items.push(itemData);\n }\n\n // Convert flat structure to hierarchical\n const hierarchyNodes = buildHierarchy(items);\n\n // Add all nodes to the database\n const addNodesRecursively = (nodes: TreemapNode[], level: number) => {\n for (const node of nodes) {\n db.addNode(node, level);\n if (node.children && node.children.length > 0) {\n addNodesRecursively(node.children, level + 1);\n }\n }\n };\n\n addNodesRecursively(hierarchyNodes, 0);\n};\n\n/**\n * Gets the name of a treemap item\n * @param item - The treemap item\n * @returns The name of the item\n */\nconst getItemName = (item: { name?: string | number }): string => {\n return item.name ? String(item.name) : '';\n};\n\nexport const parser: ParserDefinition = {\n // @ts-expect-error - TreeMapDB is not assignable to DiagramDB\n parser: { yy: undefined },\n parse: async (text: string): Promise => {\n try {\n // Use a generic parse that accepts any diagram type\n\n const parseFunc = parse as (diagramType: string, text: string) => Promise;\n const ast = await parseFunc('treemap', text);\n log.debug('Treemap AST:', ast);\n const db = parser.parser?.yy;\n if (!(db instanceof TreeMapDB)) {\n throw new Error(\n 'parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.'\n );\n }\n populate(ast, db);\n } catch (error) {\n log.error('Error parsing treemap:', error);\n throw error;\n }\n },\n};\n", "import type { Diagram } from '../../Diagram.js';\nimport type {\n DiagramRenderer,\n DiagramStyleClassDef,\n DrawDefinition,\n} from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { TreemapDB, TreemapNode } from './types.js';\nimport { scaleOrdinal, treemap, hierarchy, format, select } from 'd3';\nimport { styles2String } from '../../rendering-util/rendering-elements/shapes/handDrawnShapeStyles.js';\nimport { getConfig } from '../../config.js';\nimport { log } from '../../logger.js';\nimport type { Node } from '../../rendering-util/types.js';\n\nconst DEFAULT_INNER_PADDING = 10; // Default for inner padding between cells/sections\nconst SECTION_INNER_PADDING = 10; // Default for inner padding between cells/sections\nconst SECTION_HEADER_HEIGHT = 25;\n\n/**\n * Draws the treemap diagram\n */\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n const treemapDb = diagram.db as TreemapDB;\n const config = treemapDb.getConfig();\n const treemapInnerPadding = config.padding ?? DEFAULT_INNER_PADDING;\n const title = treemapDb.getDiagramTitle();\n const root = treemapDb.getRoot();\n const { themeVariables } = getConfig();\n if (!root) {\n return;\n }\n\n // Define dimensions\n const titleHeight = title ? 30 : 0;\n\n const svg = selectSvgElement(id);\n // Use config dimensions or defaults\n const width = config.nodeWidth ? config.nodeWidth * SECTION_INNER_PADDING : 960;\n const height = config.nodeHeight ? config.nodeHeight * SECTION_INNER_PADDING : 500;\n\n const svgWidth = width;\n const svgHeight = height + titleHeight;\n\n // Set the SVG size\n svg.attr('viewBox', `0 0 ${svgWidth} ${svgHeight}`);\n configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);\n\n // Format for displaying values\n let valueFormat;\n try {\n // Handle special format patterns\n const formatStr = config.valueFormat || ',';\n\n // Handle special cases that aren't directly supported by D3 format\n if (formatStr === '$0,0') {\n // Currency with thousands separator\n valueFormat = (value: number) => '$' + format(',')(value);\n } else if (formatStr.startsWith('$') && formatStr.includes(',')) {\n // Other dollar formats with commas\n const precision = /\\.\\d+/.exec(formatStr);\n const precisionStr = precision ? precision[0] : '';\n valueFormat = (value: number) => '$' + format(',' + precisionStr)(value);\n } else if (formatStr.startsWith('$')) {\n // Simple dollar sign prefix\n const restOfFormat = formatStr.substring(1);\n valueFormat = (value: number) => '$' + format(restOfFormat || '')(value);\n } else {\n // Standard D3 format\n valueFormat = format(formatStr);\n }\n } catch (error) {\n log.error('Error creating format function:', error);\n // Fallback to default format\n valueFormat = format(',');\n }\n\n // Create color scale\n const colorScale = scaleOrdinal().range([\n 'transparent',\n themeVariables.cScale0,\n themeVariables.cScale1,\n themeVariables.cScale2,\n themeVariables.cScale3,\n themeVariables.cScale4,\n themeVariables.cScale5,\n themeVariables.cScale6,\n themeVariables.cScale7,\n themeVariables.cScale8,\n themeVariables.cScale9,\n themeVariables.cScale10,\n themeVariables.cScale11,\n ]);\n const colorScalePeer = scaleOrdinal().range([\n 'transparent',\n themeVariables.cScalePeer0,\n themeVariables.cScalePeer1,\n themeVariables.cScalePeer2,\n themeVariables.cScalePeer3,\n themeVariables.cScalePeer4,\n themeVariables.cScalePeer5,\n themeVariables.cScalePeer6,\n themeVariables.cScalePeer7,\n themeVariables.cScalePeer8,\n themeVariables.cScalePeer9,\n themeVariables.cScalePeer10,\n themeVariables.cScalePeer11,\n ]);\n const colorScaleLabel = scaleOrdinal().range([\n themeVariables.cScaleLabel0,\n themeVariables.cScaleLabel1,\n themeVariables.cScaleLabel2,\n themeVariables.cScaleLabel3,\n themeVariables.cScaleLabel4,\n themeVariables.cScaleLabel5,\n themeVariables.cScaleLabel6,\n themeVariables.cScaleLabel7,\n themeVariables.cScaleLabel8,\n themeVariables.cScaleLabel9,\n themeVariables.cScaleLabel10,\n themeVariables.cScaleLabel11,\n ]);\n\n // Draw the title if it exists\n if (title) {\n svg\n .append('text')\n .attr('x', svgWidth / 2)\n .attr('y', titleHeight / 2)\n .attr('class', 'treemapTitle')\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .text(title);\n }\n\n // Create a main container for the treemap, translated below the title\n const g = svg\n .append('g')\n .attr('transform', `translate(0, ${titleHeight})`)\n .attr('class', 'treemapContainer');\n\n // Create the hierarchical structure\n const hierarchyRoot = hierarchy(root)\n .sum((d) => d.value ?? 0)\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n // Create treemap layout\n const treemapLayout = treemap()\n .size([width, height])\n .paddingTop((d) =>\n d.children && d.children.length > 0 ? SECTION_HEADER_HEIGHT + SECTION_INNER_PADDING : 0\n )\n .paddingInner(treemapInnerPadding)\n .paddingLeft((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n .paddingRight((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n .paddingBottom((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n .round(true);\n\n // Apply the treemap layout to the hierarchy\n const treemapData = treemapLayout(hierarchyRoot);\n\n // Draw section nodes (branches - nodes with children)\n const branchNodes = treemapData.descendants().filter((d) => d.children && d.children.length > 0);\n const sections = g\n .selectAll('.treemapSection')\n .data(branchNodes)\n .enter()\n .append('g')\n .attr('class', 'treemapSection')\n .attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n // Add section header background\n sections\n .append('rect')\n .attr('width', (d) => d.x1 - d.x0)\n .attr('height', SECTION_HEADER_HEIGHT)\n .attr('class', 'treemapSectionHeader')\n .attr('fill', 'none')\n .attr('fill-opacity', 0.6)\n .attr('stroke-width', 0.6)\n .attr('style', (d) => {\n // Hide the label for the root section\n if (d.depth === 0) {\n return 'display: none;';\n }\n return '';\n });\n\n // Add clip paths for section headers to prevent text overflow\n sections\n .append('clipPath')\n .attr('id', (_d, i) => `clip-section-${id}-${i}`)\n .append('rect')\n .attr('width', (d) => Math.max(0, d.x1 - d.x0 - 12)) // 6px padding on each side\n .attr('height', SECTION_HEADER_HEIGHT);\n\n sections\n .append('rect')\n .attr('width', (d) => d.x1 - d.x0)\n .attr('height', (d) => d.y1 - d.y0)\n .attr('class', (_d, i) => {\n return `treemapSection section${i}`;\n })\n .attr('fill', (d) => colorScale(d.data.name))\n .attr('fill-opacity', 0.6)\n .attr('stroke', (d) => colorScalePeer(d.data.name))\n .attr('stroke-width', 2.0)\n .attr('stroke-opacity', 0.4)\n .attr('style', (d) => {\n // Hide the label for the root section\n if (d.depth === 0) {\n return 'display: none;';\n }\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return styles.nodeStyles + ';' + styles.borderStyles.join(';');\n });\n // Add section labels\n sections\n .append('text')\n .attr('class', 'treemapSectionLabel')\n .attr('x', 6) // Keep original left padding\n .attr('y', SECTION_HEADER_HEIGHT / 2)\n .attr('dominant-baseline', 'middle')\n .text((d) => (d.depth === 0 ? '' : d.data.name)) // Skip label for root section\n .attr('font-weight', 'bold')\n .attr('style', (d) => {\n // Hide the label for the root section\n if (d.depth === 0) {\n return 'display: none;';\n }\n const labelStyles =\n 'dominant-baseline: middle; font-size: 12px; fill:' +\n colorScaleLabel(d.data.name) +\n '; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;';\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n })\n .each(function (d) {\n // Skip processing for root section\n if (d.depth === 0) {\n return;\n }\n const self = select(this);\n const originalText = d.data.name;\n self.text(originalText);\n const totalHeaderWidth = d.x1 - d.x0;\n const labelXPosition = 6;\n let spaceForTextContent;\n if (config.showValues !== false && d.value) {\n const valueEndsAtXRelative = totalHeaderWidth - 10;\n const estimatedValueTextActualWidth = 30;\n const gapBetweenLabelAndValue = 10;\n const labelMustEndBeforeX =\n valueEndsAtXRelative - estimatedValueTextActualWidth - gapBetweenLabelAndValue;\n spaceForTextContent = labelMustEndBeforeX - labelXPosition;\n } else {\n const labelOwnRightPadding = 6;\n spaceForTextContent = totalHeaderWidth - labelXPosition - labelOwnRightPadding;\n }\n const minimumWidthToDisplay = 15;\n const actualAvailableWidth = Math.max(minimumWidthToDisplay, spaceForTextContent);\n const textNode = self.node()!;\n const currentTextContentLength = textNode.getComputedTextLength();\n if (currentTextContentLength > actualAvailableWidth) {\n const ellipsis = '...';\n let currentTruncatedText = originalText;\n while (currentTruncatedText.length > 0) {\n currentTruncatedText = originalText.substring(0, currentTruncatedText.length - 1);\n if (currentTruncatedText.length === 0) {\n self.text(ellipsis);\n if (textNode.getComputedTextLength() > actualAvailableWidth) {\n self.text('');\n }\n break;\n }\n self.text(currentTruncatedText + ellipsis);\n if (textNode.getComputedTextLength() <= actualAvailableWidth) {\n break;\n }\n }\n }\n });\n\n // Add section values if enabled\n if (config.showValues !== false) {\n sections\n .append('text')\n .attr('class', 'treemapSectionValue')\n .attr('x', (d) => d.x1 - d.x0 - 10)\n .attr('y', SECTION_HEADER_HEIGHT / 2)\n .attr('text-anchor', 'end')\n .attr('dominant-baseline', 'middle')\n .text((d) => (d.value ? valueFormat(d.value) : ''))\n .attr('font-style', 'italic')\n .attr('style', (d) => {\n // Hide the value for the root section\n if (d.depth === 0) {\n return 'display: none;';\n }\n const labelStyles =\n 'text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:' +\n colorScaleLabel(d.data.name) +\n '; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;';\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n });\n }\n\n // Draw the leaf nodes\n const leafNodes = treemapData.leaves();\n const cell = g\n .selectAll('.treemapLeafGroup')\n .data(leafNodes)\n .enter()\n .append('g')\n .attr('class', (d, i) => {\n return `treemapNode treemapLeafGroup leaf${i}${d.data.classSelector ? ` ${d.data.classSelector}` : ''}x`;\n })\n .attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n // Add rectangle for each leaf node\n cell\n .append('rect')\n .attr('width', (d) => d.x1 - d.x0)\n .attr('height', (d) => d.y1 - d.y0)\n .attr('class', 'treemapLeaf')\n .attr('fill', (d) => {\n // Leaves inherit color from their immediate parent section's name.\n // If a leaf is the root itself (no parent), it uses its own name.\n return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n })\n .attr('style', (d) => {\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return styles.nodeStyles;\n })\n .attr('fill-opacity', 0.3)\n .attr('stroke', (d) => {\n // Leaves inherit color from their immediate parent section's name.\n // If a leaf is the root itself (no parent), it uses its own name.\n return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n })\n .attr('stroke-width', 3.0);\n\n // Add clip paths to prevent text from extending outside nodes\n cell\n .append('clipPath')\n .attr('id', (_d, i) => `clip-${id}-${i}`)\n .append('rect')\n .attr('width', (d) => Math.max(0, d.x1 - d.x0 - 4))\n .attr('height', (d) => Math.max(0, d.y1 - d.y0 - 4));\n\n // Add node labels with clipping\n const leafLabels = cell\n .append('text')\n .attr('class', 'treemapLabel')\n .attr('x', (d) => (d.x1 - d.x0) / 2)\n .attr('y', (d) => (d.y1 - d.y0) / 2)\n // .style('fill', (d) => colorScaleLabel(d.data.name))\n .attr('style', (d) => {\n const labelStyles =\n 'text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:' +\n colorScaleLabel(d.data.name) +\n ';';\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n })\n .attr('clip-path', (_d, i) => `url(#clip-${id}-${i})`)\n .text((d) => d.data.name);\n\n leafLabels.each(function (d) {\n const self = select(this);\n const nodeWidth = d.x1 - d.x0;\n const nodeHeight = d.y1 - d.y0;\n const textNode = self.node()!;\n\n const padding = 4;\n const availableWidth = nodeWidth - 2 * padding;\n const availableHeight = nodeHeight - 2 * padding;\n\n if (availableWidth < 10 || availableHeight < 10) {\n self.style('display', 'none');\n return;\n }\n\n let currentLabelFontSize = parseInt(self.style('font-size'), 10);\n const minLabelFontSize = 8;\n const originalValueRelFontSize = 28; // Original font size of value, for max cap\n const valueScaleFactor = 0.6; // Value font size as a factor of label font size\n const minValueFontSize = 6;\n const spacingBetweenLabelAndValue = 2;\n\n // 1. Adjust label font size to fit width\n while (\n textNode.getComputedTextLength() > availableWidth &&\n currentLabelFontSize > minLabelFontSize\n ) {\n currentLabelFontSize--;\n self.style('font-size', `${currentLabelFontSize}px`);\n }\n\n // 2. Adjust both label and prospective value font size to fit combined height\n let prospectiveValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n );\n let combinedHeight =\n currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n\n while (combinedHeight > availableHeight && currentLabelFontSize > minLabelFontSize) {\n currentLabelFontSize--;\n prospectiveValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n );\n if (\n prospectiveValueFontSize < minValueFontSize &&\n currentLabelFontSize === minLabelFontSize\n ) {\n break;\n } // Avoid shrinking label if value is already at min\n self.style('font-size', `${currentLabelFontSize}px`);\n combinedHeight =\n currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n if (prospectiveValueFontSize <= minValueFontSize && combinedHeight > availableHeight) {\n // If value is at min and still doesn't fit, label might need to shrink more alone\n // This might lead to label being too small for its own text, checked next\n }\n }\n\n // Update label font size based on height adjustment\n self.style('font-size', `${currentLabelFontSize}px`);\n\n // 3. Final visibility check for the label\n if (\n textNode.getComputedTextLength() > availableWidth ||\n currentLabelFontSize < minLabelFontSize ||\n availableHeight < currentLabelFontSize\n ) {\n self.style('display', 'none');\n // If label is hidden, value will be hidden by its own .each() loop\n }\n });\n\n // Add node values with clipping\n if (config.showValues !== false) {\n const leafValues = cell\n .append('text')\n .attr('class', 'treemapValue')\n .attr('x', (d) => (d.x1 - d.x0) / 2)\n .attr('y', function (d) {\n // Y position calculated dynamically in leafValues.each based on final label metrics\n return (d.y1 - d.y0) / 2; // Placeholder, will be overwritten\n })\n .attr('style', (d) => {\n const labelStyles =\n 'text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:' +\n colorScaleLabel(d.data.name) +\n ';';\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n })\n\n .attr('clip-path', (_d, i) => `url(#clip-${id}-${i})`)\n .text((d) => (d.value ? valueFormat(d.value) : ''));\n\n leafValues.each(function (d) {\n const valueTextElement = select(this);\n const parentCellNode = this.parentNode as SVGGElement | null;\n\n if (!parentCellNode) {\n valueTextElement.style('display', 'none');\n return;\n }\n\n const labelElement = select(parentCellNode).select('.treemapLabel');\n\n if (labelElement.empty() || labelElement.style('display') === 'none') {\n valueTextElement.style('display', 'none');\n return;\n }\n\n const finalLabelFontSize = parseFloat(labelElement.style('font-size'));\n const originalValueFontSize = 28; // From initial style setting\n const valueScaleFactor = 0.6;\n const minValueFontSize = 6;\n const spacingBetweenLabelAndValue = 2;\n\n const actualValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueFontSize, Math.round(finalLabelFontSize * valueScaleFactor))\n );\n valueTextElement.style('font-size', `${actualValueFontSize}px`);\n\n const labelCenterY = (d.y1 - d.y0) / 2;\n const valueTopActualY = labelCenterY + finalLabelFontSize / 2 + spacingBetweenLabelAndValue;\n valueTextElement.attr('y', valueTopActualY);\n\n const nodeWidth = d.x1 - d.x0;\n const nodeTotalHeight = d.y1 - d.y0;\n const cellBottomPadding = 4;\n const maxValueBottomY = nodeTotalHeight - cellBottomPadding;\n const availableWidthForValue = nodeWidth - 2 * 4; // padding for value text\n\n if (\n valueTextElement.node()!.getComputedTextLength() > availableWidthForValue ||\n valueTopActualY + actualValueFontSize > maxValueBottomY ||\n actualValueFontSize < minValueFontSize\n ) {\n valueTextElement.style('display', 'none');\n } else {\n valueTextElement.style('display', null);\n }\n });\n }\n const diagramPadding = config.diagramPadding ?? 8;\n setupViewPortForSVG(svg, diagramPadding, 'flowchart', config?.useMaxWidth || false);\n};\n\nconst getClasses = function (\n _text: string,\n diagramObj: Pick\n): Map {\n return (diagramObj.db as TreemapDB).getClasses();\n};\nexport const renderer: DiagramRenderer = { draw, getClasses };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport type { TreemapStyleOptions } from './types.js';\n\nconst defaultTreemapStyleOptions: TreemapStyleOptions = {\n sectionStrokeColor: 'black',\n sectionStrokeWidth: '1',\n sectionFillColor: '#efefef',\n leafStrokeColor: 'black',\n leafStrokeWidth: '1',\n leafFillColor: '#efefef',\n labelColor: 'black',\n labelFontSize: '12px',\n valueFontSize: '10px',\n valueColor: 'black',\n titleColor: 'black',\n titleFontSize: '14px',\n};\n\nexport const getStyles: DiagramStylesProvider = ({\n treemap,\n}: { treemap?: TreemapStyleOptions } = {}) => {\n const options = cleanAndMerge(defaultTreemapStyleOptions, treemap);\n\n return `\n .treemapNode.section {\n stroke: ${options.sectionStrokeColor};\n stroke-width: ${options.sectionStrokeWidth};\n fill: ${options.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${options.leafStrokeColor};\n stroke-width: ${options.leafStrokeWidth};\n fill: ${options.leafFillColor};\n }\n .treemapLabel {\n fill: ${options.labelColor};\n font-size: ${options.labelFontSize};\n }\n .treemapValue {\n fill: ${options.valueColor};\n font-size: ${options.valueFontSize};\n }\n .treemapTitle {\n fill: ${options.titleColor};\n font-size: ${options.titleFontSize};\n }\n `;\n};\n\nexport default getStyles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { TreeMapDB } from './db.js';\nimport { parser } from './parser.js';\nimport { renderer } from './renderer.js';\nimport styles from './styles.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new TreeMapDB();\n },\n renderer,\n styles,\n};\n"], - "mappings": "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", - "names": ["TreeMapDB", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "__name", "defaultConfig", "defaultConfig_default", "userConfig", "getConfig", "cleanAndMerge", "node", "level", "id", "_style", "styleClass", "styles", "s", "isLabelStyle", "classSelector", "clear", "buildHierarchy", "items", "root", "stack", "item", "node", "parent", "__name", "populate", "__name", "ast", "db", "populateCommonDb", "items", "row", "item", "level", "name", "getItemName", "styles", "cssCompiledStyles", "itemData", "hierarchyNodes", "buildHierarchy", "addNodesRecursively", "nodes", "node", "parser", "text", "parse", "log", "TreeMapDB", "error", "DEFAULT_INNER_PADDING", "SECTION_INNER_PADDING", "SECTION_HEADER_HEIGHT", "draw", "__name", "_text", "id", "_version", "diagram", "treemapDb", "config", "treemapInnerPadding", "title", "root", "themeVariables", "getConfig", "titleHeight", "svg", "selectSvgElement", "width", "height", "svgWidth", "svgHeight", "configureSvgSize", "valueFormat", "formatStr", "value", "format", "precision", "precisionStr", "restOfFormat", "error", "log", "colorScale", "ordinal", "colorScalePeer", "colorScaleLabel", "g", "hierarchyRoot", "hierarchy", "d", "a", "b", "treemapData", "treemap_default", "branchNodes", "sections", "_d", "i", "styles", "styles2String", "labelStyles", "self", "select_default", "originalText", "totalHeaderWidth", "labelXPosition", "spaceForTextContent", "actualAvailableWidth", "textNode", "currentTruncatedText", "leafNodes", "cell", "nodeWidth", "nodeHeight", "padding", "availableWidth", "availableHeight", "currentLabelFontSize", "minLabelFontSize", "originalValueRelFontSize", "valueScaleFactor", "minValueFontSize", "spacingBetweenLabelAndValue", "prospectiveValueFontSize", "combinedHeight", "valueTextElement", "parentCellNode", "labelElement", "finalLabelFontSize", "originalValueFontSize", "actualValueFontSize", "valueTopActualY", "maxValueBottomY", "availableWidthForValue", "diagramPadding", "setupViewPortForSVG", "getClasses", "diagramObj", "renderer", "defaultTreemapStyleOptions", "getStyles", "__name", "treemap", "options", "cleanAndMerge", "styles_default", "diagram", "parser", "TreeMapDB", "renderer", "styles_default"] + "sourcesContent": ["import type { DiagramDB } from '../../diagram-api/types.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport type { TreemapDiagramConfig, TreemapNode } from './types.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { isLabelStyle } from '../../rendering-util/rendering-elements/shapes/handDrawnShapeStyles.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nexport class TreeMapDB implements DiagramDB {\n private nodes: TreemapNode[] = [];\n private levels: Map = new Map();\n private outerNodes: TreemapNode[] = [];\n private classes: Map = new Map();\n private root?: TreemapNode;\n\n public getNodes() {\n return this.nodes;\n }\n\n public getConfig() {\n const defaultConfig = DEFAULT_CONFIG as unknown as { treemap: Required };\n const userConfig = commonGetConfig() as unknown as { treemap?: Partial };\n return cleanAndMerge({\n ...defaultConfig.treemap,\n ...(userConfig.treemap ?? {}),\n }) as Required;\n }\n\n public addNode(node: TreemapNode, level: number) {\n this.nodes.push(node);\n this.levels.set(node, level);\n if (level === 0) {\n this.outerNodes.push(node);\n this.root ??= node;\n }\n }\n\n public getRoot() {\n return { name: '', children: this.outerNodes };\n }\n\n public addClass(id: string, _style: string) {\n const styleClass = this.classes.get(id) ?? { id, styles: [], textStyles: [] };\n const styles = _style.replace(/\\\\,/g, '\u00A7\u00A7\u00A7').replace(/,/g, ';').replace(/\u00A7\u00A7\u00A7/g, ',').split(';');\n if (styles) {\n styles.forEach((s) => {\n if (isLabelStyle(s)) {\n if (styleClass?.textStyles) {\n styleClass.textStyles.push(s);\n } else {\n styleClass.textStyles = [s];\n }\n }\n if (styleClass?.styles) {\n styleClass.styles.push(s);\n } else {\n styleClass.styles = [s];\n }\n });\n }\n this.classes.set(id, styleClass);\n }\n\n public getClasses() {\n return this.classes;\n }\n\n public getStylesForClass(classSelector: string): string[] {\n return this.classes.get(classSelector)?.styles ?? [];\n }\n\n public clear() {\n commonClear();\n this.nodes = [];\n this.levels = new Map();\n this.outerNodes = [];\n this.classes = new Map();\n this.root = undefined;\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getAccDescription = getAccDescription;\n public setAccDescription = setAccDescription;\n}\n", "import type { TreemapNode } from './types.js';\n\n/**\n * Converts a flat array of treemap items into a hierarchical structure\n * @param items - Array of flat treemap items with level, name, type, and optional value\n * @returns A hierarchical tree structure\n */\nexport function buildHierarchy(\n items: {\n level: number;\n name: string;\n type: string;\n value?: number;\n classSelector?: string;\n cssCompiledStyles?: string[];\n }[]\n): TreemapNode[] {\n if (!items.length) {\n return [];\n }\n\n const root: TreemapNode[] = [];\n const stack: { node: TreemapNode; level: number }[] = [];\n\n items.forEach((item) => {\n const node: TreemapNode = {\n name: item.name,\n children: item.type === 'Leaf' ? undefined : [],\n };\n node.classSelector = item?.classSelector;\n if (item?.cssCompiledStyles) {\n node.cssCompiledStyles = item.cssCompiledStyles;\n }\n\n if (item.type === 'Leaf' && item.value !== undefined) {\n node.value = item.value;\n }\n\n // Find the right parent for this node\n while (stack.length > 0 && stack[stack.length - 1].level >= item.level) {\n stack.pop();\n }\n\n if (stack.length === 0) {\n // This is a root node\n root.push(node);\n } else {\n // Add as child to the parent\n const parent = stack[stack.length - 1].node;\n if (parent.children) {\n parent.children.push(node);\n } else {\n parent.children = [node];\n }\n }\n\n // Only add to stack if it can have children\n if (item.type !== 'Leaf') {\n stack.push({ node, level: item.level });\n }\n });\n\n return root;\n}\n", "import { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport type { TreemapNode, TreemapAst, TreemapDB } from './types.js';\nimport { buildHierarchy } from './utils.js';\nimport { TreeMapDB } from './db.js';\n\n/**\n * Populates the database with data from the Treemap AST\n * @param ast - The Treemap AST\n */\nconst populate = (ast: TreemapAst, db: TreemapDB) => {\n // We need to bypass the type checking for populateCommonDb\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n populateCommonDb(ast as any, db);\n\n const items: {\n level: number;\n name: string;\n type: string;\n value?: number;\n classSelector?: string;\n cssCompiledStyles?: string[];\n }[] = [];\n\n // Extract classes and styles from the treemap\n for (const row of ast.TreemapRows ?? []) {\n if (row.$type === 'ClassDefStatement') {\n db.addClass(row.className ?? '', row.styleText ?? '');\n }\n }\n\n // Extract data from each row in the treemap\n for (const row of ast.TreemapRows ?? []) {\n const item = row.item;\n\n if (!item) {\n continue;\n }\n\n const level = row.indent ? parseInt(row.indent) : 0;\n const name = getItemName(item);\n\n // Get styles as a string if they exist\n const styles = item.classSelector ? db.getStylesForClass(item.classSelector) : [];\n const cssCompiledStyles = styles.length > 0 ? styles : undefined;\n\n const itemData = {\n level,\n name,\n type: item.$type,\n value: item.value,\n classSelector: item.classSelector,\n cssCompiledStyles,\n };\n\n items.push(itemData);\n }\n\n // Convert flat structure to hierarchical\n const hierarchyNodes = buildHierarchy(items);\n\n // Add all nodes to the database\n const addNodesRecursively = (nodes: TreemapNode[], level: number) => {\n for (const node of nodes) {\n db.addNode(node, level);\n if (node.children && node.children.length > 0) {\n addNodesRecursively(node.children, level + 1);\n }\n }\n };\n\n addNodesRecursively(hierarchyNodes, 0);\n};\n\n/**\n * Gets the name of a treemap item\n * @param item - The treemap item\n * @returns The name of the item\n */\nconst getItemName = (item: { name?: string | number }): string => {\n return item.name ? String(item.name) : '';\n};\n\nexport const parser: ParserDefinition = {\n // @ts-expect-error - TreeMapDB is not assignable to DiagramDB\n parser: { yy: undefined },\n parse: async (text: string): Promise => {\n try {\n // Use a generic parse that accepts any diagram type\n\n const parseFunc = parse as (diagramType: string, text: string) => Promise;\n const ast = await parseFunc('treemap', text);\n log.debug('Treemap AST:', ast);\n const db = parser.parser?.yy;\n if (!(db instanceof TreeMapDB)) {\n throw new Error(\n 'parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.'\n );\n }\n populate(ast, db);\n } catch (error) {\n log.error('Error parsing treemap:', error);\n throw error;\n }\n },\n};\n", "import type { Diagram } from '../../Diagram.js';\nimport type {\n DiagramRenderer,\n DiagramStyleClassDef,\n DrawDefinition,\n} from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { TreemapDB, TreemapNode } from './types.js';\nimport { scaleOrdinal, treemap, hierarchy, format, select } from 'd3';\nimport { styles2String } from '../../rendering-util/rendering-elements/shapes/handDrawnShapeStyles.js';\nimport { getConfig } from '../../config.js';\nimport { log } from '../../logger.js';\nimport type { Node } from '../../rendering-util/types.js';\n\nconst DEFAULT_INNER_PADDING = 10; // Default for inner padding between cells/sections\nconst SECTION_INNER_PADDING = 10; // Default for inner padding between cells/sections\nconst SECTION_HEADER_HEIGHT = 25;\n\n/**\n * Draws the treemap diagram\n */\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n const treemapDb = diagram.db as TreemapDB;\n const config = treemapDb.getConfig();\n const treemapInnerPadding = config.padding ?? DEFAULT_INNER_PADDING;\n const title = treemapDb.getDiagramTitle();\n const root = treemapDb.getRoot();\n const { themeVariables } = getConfig();\n if (!root) {\n return;\n }\n\n // Define dimensions\n const titleHeight = title ? 30 : 0;\n\n const svg = selectSvgElement(id);\n // Use config dimensions or defaults\n const width = config.nodeWidth ? config.nodeWidth * SECTION_INNER_PADDING : 960;\n const height = config.nodeHeight ? config.nodeHeight * SECTION_INNER_PADDING : 500;\n\n const svgWidth = width;\n const svgHeight = height + titleHeight;\n\n // Set the SVG size\n svg.attr('viewBox', `0 0 ${svgWidth} ${svgHeight}`);\n configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);\n\n // Format for displaying values\n let valueFormat;\n try {\n // Handle special format patterns\n const formatStr = config.valueFormat || ',';\n\n // Handle special cases that aren't directly supported by D3 format\n if (formatStr === '$0,0') {\n // Currency with thousands separator\n valueFormat = (value: number) => '$' + format(',')(value);\n } else if (formatStr.startsWith('$') && formatStr.includes(',')) {\n // Other dollar formats with commas\n const precision = /\\.\\d+/.exec(formatStr);\n const precisionStr = precision ? precision[0] : '';\n valueFormat = (value: number) => '$' + format(',' + precisionStr)(value);\n } else if (formatStr.startsWith('$')) {\n // Simple dollar sign prefix\n const restOfFormat = formatStr.substring(1);\n valueFormat = (value: number) => '$' + format(restOfFormat || '')(value);\n } else {\n // Standard D3 format\n valueFormat = format(formatStr);\n }\n } catch (error) {\n log.error('Error creating format function:', error);\n // Fallback to default format\n valueFormat = format(',');\n }\n\n // Create color scale\n const colorScale = scaleOrdinal().range([\n 'transparent',\n themeVariables.cScale0,\n themeVariables.cScale1,\n themeVariables.cScale2,\n themeVariables.cScale3,\n themeVariables.cScale4,\n themeVariables.cScale5,\n themeVariables.cScale6,\n themeVariables.cScale7,\n themeVariables.cScale8,\n themeVariables.cScale9,\n themeVariables.cScale10,\n themeVariables.cScale11,\n ]);\n const colorScalePeer = scaleOrdinal().range([\n 'transparent',\n themeVariables.cScalePeer0,\n themeVariables.cScalePeer1,\n themeVariables.cScalePeer2,\n themeVariables.cScalePeer3,\n themeVariables.cScalePeer4,\n themeVariables.cScalePeer5,\n themeVariables.cScalePeer6,\n themeVariables.cScalePeer7,\n themeVariables.cScalePeer8,\n themeVariables.cScalePeer9,\n themeVariables.cScalePeer10,\n themeVariables.cScalePeer11,\n ]);\n const colorScaleLabel = scaleOrdinal().range([\n themeVariables.cScaleLabel0,\n themeVariables.cScaleLabel1,\n themeVariables.cScaleLabel2,\n themeVariables.cScaleLabel3,\n themeVariables.cScaleLabel4,\n themeVariables.cScaleLabel5,\n themeVariables.cScaleLabel6,\n themeVariables.cScaleLabel7,\n themeVariables.cScaleLabel8,\n themeVariables.cScaleLabel9,\n themeVariables.cScaleLabel10,\n themeVariables.cScaleLabel11,\n ]);\n\n // Draw the title if it exists\n if (title) {\n svg\n .append('text')\n .attr('x', svgWidth / 2)\n .attr('y', titleHeight / 2)\n .attr('class', 'treemapTitle')\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .text(title);\n }\n\n // Create a main container for the treemap, translated below the title\n const g = svg\n .append('g')\n .attr('transform', `translate(0, ${titleHeight})`)\n .attr('class', 'treemapContainer');\n\n // Create the hierarchical structure\n const hierarchyRoot = hierarchy(root)\n .sum((d) => d.value ?? 0)\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n // Create treemap layout\n const treemapLayout = treemap()\n .size([width, height])\n .paddingTop((d) =>\n d.children && d.children.length > 0 ? SECTION_HEADER_HEIGHT + SECTION_INNER_PADDING : 0\n )\n .paddingInner(treemapInnerPadding)\n .paddingLeft((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n .paddingRight((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n .paddingBottom((d) => (d.children && d.children.length > 0 ? SECTION_INNER_PADDING : 0))\n .round(true);\n\n // Apply the treemap layout to the hierarchy\n const treemapData = treemapLayout(hierarchyRoot);\n\n // Draw section nodes (branches - nodes with children)\n const branchNodes = treemapData.descendants().filter((d) => d.children && d.children.length > 0);\n const sections = g\n .selectAll('.treemapSection')\n .data(branchNodes)\n .enter()\n .append('g')\n .attr('class', 'treemapSection')\n .attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n // Add section header background\n sections\n .append('rect')\n .attr('width', (d) => d.x1 - d.x0)\n .attr('height', SECTION_HEADER_HEIGHT)\n .attr('class', 'treemapSectionHeader')\n .attr('fill', 'none')\n .attr('fill-opacity', 0.6)\n .attr('stroke-width', 0.6)\n .attr('style', (d) => {\n // Hide the label for the root section\n if (d.depth === 0) {\n return 'display: none;';\n }\n return '';\n });\n\n // Add clip paths for section headers to prevent text overflow\n sections\n .append('clipPath')\n .attr('id', (_d, i) => `clip-section-${id}-${i}`)\n .append('rect')\n .attr('width', (d) => Math.max(0, d.x1 - d.x0 - 12)) // 6px padding on each side\n .attr('height', SECTION_HEADER_HEIGHT);\n\n sections\n .append('rect')\n .attr('width', (d) => d.x1 - d.x0)\n .attr('height', (d) => d.y1 - d.y0)\n .attr('class', (_d, i) => {\n return `treemapSection section${i}`;\n })\n .attr('fill', (d) => colorScale(d.data.name))\n .attr('fill-opacity', 0.6)\n .attr('stroke', (d) => colorScalePeer(d.data.name))\n .attr('stroke-width', 2.0)\n .attr('stroke-opacity', 0.4)\n .attr('style', (d) => {\n // Hide the label for the root section\n if (d.depth === 0) {\n return 'display: none;';\n }\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return styles.nodeStyles + ';' + styles.borderStyles.join(';');\n });\n // Add section labels\n sections\n .append('text')\n .attr('class', 'treemapSectionLabel')\n .attr('x', 6) // Keep original left padding\n .attr('y', SECTION_HEADER_HEIGHT / 2)\n .attr('dominant-baseline', 'middle')\n .text((d) => (d.depth === 0 ? '' : d.data.name)) // Skip label for root section\n .attr('font-weight', 'bold')\n .attr('style', (d) => {\n // Hide the label for the root section\n if (d.depth === 0) {\n return 'display: none;';\n }\n const labelStyles =\n 'dominant-baseline: middle; font-size: 12px; fill:' +\n colorScaleLabel(d.data.name) +\n '; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;';\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n })\n .each(function (d) {\n // Skip processing for root section\n if (d.depth === 0) {\n return;\n }\n const self = select(this);\n const originalText = d.data.name;\n self.text(originalText);\n const totalHeaderWidth = d.x1 - d.x0;\n const labelXPosition = 6;\n let spaceForTextContent;\n if (config.showValues !== false && d.value) {\n const valueEndsAtXRelative = totalHeaderWidth - 10;\n const estimatedValueTextActualWidth = 30;\n const gapBetweenLabelAndValue = 10;\n const labelMustEndBeforeX =\n valueEndsAtXRelative - estimatedValueTextActualWidth - gapBetweenLabelAndValue;\n spaceForTextContent = labelMustEndBeforeX - labelXPosition;\n } else {\n const labelOwnRightPadding = 6;\n spaceForTextContent = totalHeaderWidth - labelXPosition - labelOwnRightPadding;\n }\n const minimumWidthToDisplay = 15;\n const actualAvailableWidth = Math.max(minimumWidthToDisplay, spaceForTextContent);\n const textNode = self.node()!;\n const currentTextContentLength = textNode.getComputedTextLength();\n if (currentTextContentLength > actualAvailableWidth) {\n const ellipsis = '...';\n let currentTruncatedText = originalText;\n while (currentTruncatedText.length > 0) {\n currentTruncatedText = originalText.substring(0, currentTruncatedText.length - 1);\n if (currentTruncatedText.length === 0) {\n self.text(ellipsis);\n if (textNode.getComputedTextLength() > actualAvailableWidth) {\n self.text('');\n }\n break;\n }\n self.text(currentTruncatedText + ellipsis);\n if (textNode.getComputedTextLength() <= actualAvailableWidth) {\n break;\n }\n }\n }\n });\n\n // Add section values if enabled\n if (config.showValues !== false) {\n sections\n .append('text')\n .attr('class', 'treemapSectionValue')\n .attr('x', (d) => d.x1 - d.x0 - 10)\n .attr('y', SECTION_HEADER_HEIGHT / 2)\n .attr('text-anchor', 'end')\n .attr('dominant-baseline', 'middle')\n .text((d) => (d.value ? valueFormat(d.value) : ''))\n .attr('font-style', 'italic')\n .attr('style', (d) => {\n // Hide the value for the root section\n if (d.depth === 0) {\n return 'display: none;';\n }\n const labelStyles =\n 'text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:' +\n colorScaleLabel(d.data.name) +\n '; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;';\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n });\n }\n\n // Draw the leaf nodes\n const leafNodes = treemapData.leaves();\n const cell = g\n .selectAll('.treemapLeafGroup')\n .data(leafNodes)\n .enter()\n .append('g')\n .attr('class', (d, i) => {\n return `treemapNode treemapLeafGroup leaf${i}${d.data.classSelector ? ` ${d.data.classSelector}` : ''}x`;\n })\n .attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n // Add rectangle for each leaf node\n cell\n .append('rect')\n .attr('width', (d) => d.x1 - d.x0)\n .attr('height', (d) => d.y1 - d.y0)\n .attr('class', 'treemapLeaf')\n .attr('fill', (d) => {\n // Leaves inherit color from their immediate parent section's name.\n // If a leaf is the root itself (no parent), it uses its own name.\n return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n })\n .attr('style', (d) => {\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return styles.nodeStyles;\n })\n .attr('fill-opacity', 0.3)\n .attr('stroke', (d) => {\n // Leaves inherit color from their immediate parent section's name.\n // If a leaf is the root itself (no parent), it uses its own name.\n return d.parent ? colorScale(d.parent.data.name) : colorScale(d.data.name);\n })\n .attr('stroke-width', 3.0);\n\n // Add clip paths to prevent text from extending outside nodes\n cell\n .append('clipPath')\n .attr('id', (_d, i) => `clip-${id}-${i}`)\n .append('rect')\n .attr('width', (d) => Math.max(0, d.x1 - d.x0 - 4))\n .attr('height', (d) => Math.max(0, d.y1 - d.y0 - 4));\n\n // Add node labels with clipping\n const leafLabels = cell\n .append('text')\n .attr('class', 'treemapLabel')\n .attr('x', (d) => (d.x1 - d.x0) / 2)\n .attr('y', (d) => (d.y1 - d.y0) / 2)\n // .style('fill', (d) => colorScaleLabel(d.data.name))\n .attr('style', (d) => {\n const labelStyles =\n 'text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:' +\n colorScaleLabel(d.data.name) +\n ';';\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n })\n .attr('clip-path', (_d, i) => `url(#clip-${id}-${i})`)\n .text((d) => d.data.name);\n\n leafLabels.each(function (d) {\n const self = select(this);\n const nodeWidth = d.x1 - d.x0;\n const nodeHeight = d.y1 - d.y0;\n const textNode = self.node()!;\n\n const padding = 4;\n const availableWidth = nodeWidth - 2 * padding;\n const availableHeight = nodeHeight - 2 * padding;\n\n if (availableWidth < 10 || availableHeight < 10) {\n self.style('display', 'none');\n return;\n }\n\n let currentLabelFontSize = parseInt(self.style('font-size'), 10);\n const minLabelFontSize = 8;\n const originalValueRelFontSize = 28; // Original font size of value, for max cap\n const valueScaleFactor = 0.6; // Value font size as a factor of label font size\n const minValueFontSize = 6;\n const spacingBetweenLabelAndValue = 2;\n\n // 1. Adjust label font size to fit width\n while (\n textNode.getComputedTextLength() > availableWidth &&\n currentLabelFontSize > minLabelFontSize\n ) {\n currentLabelFontSize--;\n self.style('font-size', `${currentLabelFontSize}px`);\n }\n\n // 2. Adjust both label and prospective value font size to fit combined height\n let prospectiveValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n );\n let combinedHeight =\n currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n\n while (combinedHeight > availableHeight && currentLabelFontSize > minLabelFontSize) {\n currentLabelFontSize--;\n prospectiveValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueRelFontSize, Math.round(currentLabelFontSize * valueScaleFactor))\n );\n if (\n prospectiveValueFontSize < minValueFontSize &&\n currentLabelFontSize === minLabelFontSize\n ) {\n break;\n } // Avoid shrinking label if value is already at min\n self.style('font-size', `${currentLabelFontSize}px`);\n combinedHeight =\n currentLabelFontSize + spacingBetweenLabelAndValue + prospectiveValueFontSize;\n if (prospectiveValueFontSize <= minValueFontSize && combinedHeight > availableHeight) {\n // If value is at min and still doesn't fit, label might need to shrink more alone\n // This might lead to label being too small for its own text, checked next\n }\n }\n\n // Update label font size based on height adjustment\n self.style('font-size', `${currentLabelFontSize}px`);\n\n // 3. Final visibility check for the label\n if (\n textNode.getComputedTextLength() > availableWidth ||\n currentLabelFontSize < minLabelFontSize ||\n availableHeight < currentLabelFontSize\n ) {\n self.style('display', 'none');\n // If label is hidden, value will be hidden by its own .each() loop\n }\n });\n\n // Add node values with clipping\n if (config.showValues !== false) {\n const leafValues = cell\n .append('text')\n .attr('class', 'treemapValue')\n .attr('x', (d) => (d.x1 - d.x0) / 2)\n .attr('y', function (d) {\n // Y position calculated dynamically in leafValues.each based on final label metrics\n return (d.y1 - d.y0) / 2; // Placeholder, will be overwritten\n })\n .attr('style', (d) => {\n const labelStyles =\n 'text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:' +\n colorScaleLabel(d.data.name) +\n ';';\n const styles = styles2String({ cssCompiledStyles: d.data.cssCompiledStyles } as Node);\n return labelStyles + styles.labelStyles.replace('color:', 'fill:');\n })\n\n .attr('clip-path', (_d, i) => `url(#clip-${id}-${i})`)\n .text((d) => (d.value ? valueFormat(d.value) : ''));\n\n leafValues.each(function (d) {\n const valueTextElement = select(this);\n const parentCellNode = this.parentNode as SVGGElement | null;\n\n if (!parentCellNode) {\n valueTextElement.style('display', 'none');\n return;\n }\n\n const labelElement = select(parentCellNode).select('.treemapLabel');\n\n if (labelElement.empty() || labelElement.style('display') === 'none') {\n valueTextElement.style('display', 'none');\n return;\n }\n\n const finalLabelFontSize = parseFloat(labelElement.style('font-size'));\n const originalValueFontSize = 28; // From initial style setting\n const valueScaleFactor = 0.6;\n const minValueFontSize = 6;\n const spacingBetweenLabelAndValue = 2;\n\n const actualValueFontSize = Math.max(\n minValueFontSize,\n Math.min(originalValueFontSize, Math.round(finalLabelFontSize * valueScaleFactor))\n );\n valueTextElement.style('font-size', `${actualValueFontSize}px`);\n\n const labelCenterY = (d.y1 - d.y0) / 2;\n const valueTopActualY = labelCenterY + finalLabelFontSize / 2 + spacingBetweenLabelAndValue;\n valueTextElement.attr('y', valueTopActualY);\n\n const nodeWidth = d.x1 - d.x0;\n const nodeTotalHeight = d.y1 - d.y0;\n const cellBottomPadding = 4;\n const maxValueBottomY = nodeTotalHeight - cellBottomPadding;\n const availableWidthForValue = nodeWidth - 2 * 4; // padding for value text\n\n if (\n valueTextElement.node()!.getComputedTextLength() > availableWidthForValue ||\n valueTopActualY + actualValueFontSize > maxValueBottomY ||\n actualValueFontSize < minValueFontSize\n ) {\n valueTextElement.style('display', 'none');\n } else {\n valueTextElement.style('display', null);\n }\n });\n }\n const diagramPadding = config.diagramPadding ?? 8;\n setupViewPortForSVG(svg, diagramPadding, 'flowchart', config?.useMaxWidth || false);\n};\n\nconst getClasses = function (\n _text: string,\n diagramObj: Pick\n): Map {\n return (diagramObj.db as TreemapDB).getClasses();\n};\nexport const renderer: DiagramRenderer = { draw, getClasses };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport type { TreemapStyleOptions } from './types.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport { getConfig as getConfigAPI } from '../../config.js';\n\nconst defaultTreemapStyleOptions: TreemapStyleOptions = {\n sectionStrokeColor: 'black',\n sectionStrokeWidth: '1',\n sectionFillColor: '#efefef',\n leafStrokeColor: 'black',\n leafStrokeWidth: '1',\n leafFillColor: '#efefef',\n labelFontSize: '12px',\n valueFontSize: '10px',\n titleFontSize: '14px',\n};\n\nexport const getStyles: DiagramStylesProvider = ({\n treemap,\n}: { treemap?: TreemapStyleOptions } = {}) => {\n const defaultThemeVariables = getThemeVariables();\n const currentConfig = getConfigAPI();\n const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);\n\n const options = cleanAndMerge(defaultTreemapStyleOptions, treemap);\n\n const titleColor = options.titleColor ?? themeVariables.titleColor;\n const labelColor = options.labelColor ?? themeVariables.textColor;\n const valueColor = options.valueColor ?? themeVariables.textColor;\n\n return `\n .treemapNode.section {\n stroke: ${options.sectionStrokeColor};\n stroke-width: ${options.sectionStrokeWidth};\n fill: ${options.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${options.leafStrokeColor};\n stroke-width: ${options.leafStrokeWidth};\n fill: ${options.leafFillColor};\n }\n .treemapLabel {\n fill: ${labelColor};\n font-size: ${options.labelFontSize};\n }\n .treemapValue {\n fill: ${valueColor};\n font-size: ${options.valueFontSize};\n }\n .treemapTitle {\n fill: ${titleColor};\n font-size: ${options.titleFontSize};\n }\n `;\n};\n\nexport default getStyles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { TreeMapDB } from './db.js';\nimport { parser } from './parser.js';\nimport { renderer } from './renderer.js';\nimport styles from './styles.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new TreeMapDB();\n },\n renderer,\n styles,\n};\n"], + "mappings": "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", + "names": ["TreeMapDB", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "__name", "defaultConfig", "defaultConfig_default", "userConfig", "getConfig", "cleanAndMerge", "node", "level", "id", "_style", "styleClass", "styles", "isLabelStyle", "classSelector", "clear", "buildHierarchy", "items", "root", "stack", "item", "node", "parent", "__name", "populate", "__name", "ast", "db", "populateCommonDb", "items", "row", "item", "level", "name", "getItemName", "styles", "cssCompiledStyles", "itemData", "hierarchyNodes", "buildHierarchy", "addNodesRecursively", "nodes", "node", "parser", "text", "parse", "log", "TreeMapDB", "error", "DEFAULT_INNER_PADDING", "SECTION_INNER_PADDING", "SECTION_HEADER_HEIGHT", "draw", "__name", "_text", "id", "_version", "diagram", "treemapDb", "config", "treemapInnerPadding", "title", "root", "themeVariables", "getConfig", "titleHeight", "svg", "selectSvgElement", "width", "height", "svgWidth", "svgHeight", "configureSvgSize", "valueFormat", "formatStr", "value", "format", "precision", "precisionStr", "restOfFormat", "error", "log", "colorScale", "ordinal", "colorScalePeer", "colorScaleLabel", "g", "hierarchyRoot", "hierarchy", "d", "a", "b", "treemapData", "treemap_default", "branchNodes", "sections", "_d", "i", "styles", "styles2String", "labelStyles", "self", "select_default", "originalText", "totalHeaderWidth", "labelXPosition", "spaceForTextContent", "actualAvailableWidth", "textNode", "currentTruncatedText", "leafNodes", "cell", "nodeWidth", "nodeHeight", "padding", "availableWidth", "availableHeight", "currentLabelFontSize", "minLabelFontSize", "originalValueRelFontSize", "valueScaleFactor", "minValueFontSize", "spacingBetweenLabelAndValue", "prospectiveValueFontSize", "combinedHeight", "valueTextElement", "parentCellNode", "labelElement", "finalLabelFontSize", "originalValueFontSize", "actualValueFontSize", "valueTopActualY", "maxValueBottomY", "availableWidthForValue", "diagramPadding", "setupViewPortForSVG", "getClasses", "diagramObj", "renderer", "defaultTreemapStyleOptions", "getStyles", "__name", "treemap", "defaultThemeVariables", "getThemeVariables", "currentConfig", "getConfig", "themeVariables", "cleanAndMerge", "options", "titleColor", "labelColor", "valueColor", "styles_default", "diagram", "parser", "TreeMapDB", "renderer", "styles_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-HNR7UZ2L.mjs b/assets/mermaid/chunks/mermaid.esm.min/diagram-HNR7UZ2L.mjs new file mode 100644 index 0000000..ea8af99 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-HNR7UZ2L.mjs @@ -0,0 +1,3 @@ +import{a as X}from"./chunk-JQRUD6KW.mjs";import{a as K}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{i as y,l as L,o as V}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{A as v,S as A,T as $,U as O,V as W,W as H,X as N,Y as j,_ as F,ca as I,j as T,t as w}from"./chunk-67TQ5CYL.mjs";import{b as x,h as U}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import{f as G}from"./chunk-4R4BOZG6.mjs";import{a}from"./chunk-AQ6EADP3.mjs";var S="position frame",B="frame positioned",P="position relation",M="relation positioned";var Z=a(function(e){x.debug("options str",e)},"setOptions"),ee=a(function(){return{}},"getOptions"),te=a(function(){ne(),A()},"clear");function ne(){R={}}a(ne,"reset");var ie=T.eventmodeling,oe=a(()=>V({...ie,...w().eventmodeling}),"getConfig"),R={};function re(){let e=se,{ast:n}=R,t=_();if(!n)throw new Error("No data for EventModel");return n.frames.forEach((i,o)=>{let r=xe(i,n.dataEntities,t);e=C(e,{$kind:S,index:o,frame:i,textProps:r});let m;we(i)?(x.debug("source frame",i.sourceFrames),m=n.frames.filter(d=>i.sourceFrames.some(l=>l.$refText===d.name)),m.forEach(d=>{e=C(e,{$kind:P,index:o,frame:i,sourceFrame:d})})):e=C(e,{$kind:P,index:o,frame:i})}),e={...e,sortedSwimlanesArray:z(e.swimlanes)},e}a(re,"getState");function ae(e){R.ast=e}a(ae,"setAst");var s={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};function _(){return s}a(_,"getDiagramProps");var se={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function me(e){let n=e.split(".");if(n.length===2)return n[0]}a(me,"extractNamespace");function de(e){let n=e.split(".");return n.length===2?n[1]:e}a(de,"extractName");function le(e,n){if(!(!n||n.length===0))return Object.values(e).find(t=>t.namespace===n)}a(le,"findSwimlaneByNamespace");function D(e,n,t){return Math.max(n,...Object.keys(e).filter(i=>{let o=Number.parseInt(i);return o>n&&oNumber.parseInt(i)))+1}a(D,"findNextAvailableIndex");function ce(e,n){let t=me(e.entityIdentifier),i=le(n,t);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return i?{index:i.index,label:i.namespace||s.labelUiAutomation}:t?{index:D(n,0,100),label:s.labelUiAutomationPrefix+t}:{index:0,label:s.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return i?{index:i.index,label:i.namespace||s.labelCommandReadModel}:t?{index:D(n,100,200),label:s.labelCommandReadModelPrefix+t}:{index:100,label:s.labelCommandReadModel};case"evt":case"event":default:return i?{index:i.index,label:i.namespace||s.labelEvents}:t?{index:D(n,200,300),label:s.labelEventsPrefix+t}:{index:200,label:s.labelEvents}}}a(ce,"calculateSwimlaneProps");function ue(e){let{themeVariables:n}=w();switch(e.modelEntityType){case"ui":return{fill:n.emUiFill??"white",stroke:n.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:n.emProcessorFill??"#edb3f6",stroke:n.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:n.emReadModelFill??"#d3f1a2",stroke:n.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:n.emCommandFill??"#bcd6fe",stroke:n.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:n.emEventFill??"#ffb778",stroke:n.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}a(ue,"calculateEntityVisualProps");function xe(e,n,t){let i=w(),o=v(de(e.entityIdentifier)??"",i),r,m={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"
    "},l=`${y(o,t.textMaxWidth,m)}`;if(e.dataInlineValue&&(r=e.dataInlineValue,r=r.substring(r.indexOf("{")+1),r=r.substring(0,r.lastIndexOf("}")-1),r=v(r,i),r=y(r,t.textMaxWidth,m),r=r.replaceAll(" "," ")),e.dataReference){let b=n.find(E=>E.name===e.dataReference?.$refText);b&&(r=b.dataBlockValue,r=r.substring(r.indexOf(`{ +`)+2),r=r.substring(0,r.lastIndexOf("}")-1),r=v(r,i),r=y(r,t.textMaxWidth,m),r=r.replaceAll(" "," "),r+="
    ")}let c=r!==void 0;c&&(l+=`

    ${r}`);let f={fontSize:m.fontSize,fontWeight:m.fontWeight,fontFamily:m.fontFamily},u=L(l,f),g=c?u.width/3:u.width,p={content:l,width:g,height:u.height};return x.debug(`[${e.name}] ${e.entityIdentifier} text`,p),p}a(xe,"calculateTextProps");function fe(e,n){let t=n,i=ue(t.frame),o={width:t.textProps.width+2*s.boxTextPadding,height:t.textProps.height+2*s.boxTextPadding};return[{$kind:B,frame:t.frame,index:t.index,visual:i,dimension:o,textProps:t.textProps}]}a(fe,"decidePositionFrame");function pe(e,n,t){return n===void 0?s.contentStartX:n.index===e.index&&e.r?e.r+s.boxPadding:t===void 0?s.contentStartX:t.r-s.boxOverlap+s.boxPadding}a(pe,"calculateX");function ge(e,n){let t=[...e.map(i=>i.r),n];return Math.max(...t)}a(ge,"calculateMaxRight");function z(e){return Object.values(e).sort((n,t)=>n.index-t.index)}a(z,"sortedSwimlanesArray");function be(e,n){let t=n,i=ce(t.frame,e.swimlanes),o;i.index in e.swimlanes?o=e.swimlanes[i.index]:o={index:i.index,label:i.label,r:0,y:i.index*s.swimlaneMinHeight+s.swimlaneGap,height:s.swimlaneMinHeight,maxHeight:s.swimlaneMinHeight};let r=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,m=e.previousSwimlaneNumber!==void 0?e.swimlanes[e.previousSwimlaneNumber]:void 0,d={width:Math.max(s.boxMinWidth,Math.min(s.boxMaxWidth,t.dimension.width))+2*s.boxPadding,height:Math.max(s.boxMinHeight,Math.min(s.boxMaxHeight,t.dimension.height))+2*s.boxPadding},l=pe(o,m,r),c=l+d.width+s.boxPadding,f=ge(Object.values(e.swimlanes),c);o.r=l+d.width,o.maxHeight=Math.max(o.maxHeight,d.height),o.height=Math.max(s.swimlaneMinHeight,o.maxHeight)+2*s.swimlanePadding;let u={x:l,y:s.swimlanePadding+o.y,r:c,dimension:d,leftSibling:!1,swimlane:o,visual:t.visual,text:t.textProps.content,frame:t.frame,index:t.index},g={...e,boxes:[...e.boxes,u],swimlanes:{...e.swimlanes,[`${o.index}`]:o},previousSwimlaneNumber:i.index,previousFrame:t.frame,maxR:f},p=z(g.swimlanes);p.length>0&&(p[0].y=0);for(let b=1;b0}a(we,"hasSourceFrame");function Y(e,n){if(n!=null)return e.find(t=>t.frame.name===n.name)}a(Y,"findBoxByFrame");function ve(e,n,t){if(!(t<0))for(let i=t;i>=0;i--){let o=e[i];if(o.swimlane.index!==n)return o}}a(ve,"findBoxByLineIndex");function ye(e,n){let t=n;if(G(t.frame)||he(t.index,t.frame))return[];let i=Y(e.boxes,t.frame);if(i===void 0)throw new Error(`Target box not found for frame ${t.frame.name}`);let o;return t.sourceFrame?o=Y(e.boxes,t.sourceFrame):o=ve(e.boxes,i.swimlane.index,t.index-1),o===void 0?[]:[{$kind:M,frame:t.frame,index:t.index,sourceBox:o,targetBox:i}]}a(ye,"decidePositionRelation");function Pe(e,n){let t=n,i={visual:{fill:"none",stroke:"#000"},source:{x:t.sourceBox.x,y:t.sourceBox.y},target:{x:t.targetBox.x,y:t.targetBox.y},sourceBox:t.sourceBox,targetBox:t.targetBox};return{...e,relations:[...e.relations,i]}}a(Pe,"evolveRelationPositioned");var Ee={[S]:fe,[P]:ye},Fe={[B]:be,[M]:Pe};function Se(e,n){let t=Ee[n.$kind];if(t==null)return[];let i=t(e,n);return x.debug("decided events",i),i}a(Se,"decide");function Be(e,n){let t=n.reduce((i,o)=>{let r=Fe[o.$kind];return r==null?i:r(i,o)},e);return x.debug("evolve events",{state:e,newState:t,events:n}),t}a(Be,"evolve");function C(e,n){let t=Se(e,n);return Be(e,t)}a(C,"dispatch");var h={getConfig:oe,setOptions:Z,getOptions:ee,clear:te,setAccTitle:$,getAccTitle:O,getAccDescription:H,setAccDescription:W,setDiagramTitle:N,getDiagramTitle:j,setAst:ae,getDiagramProps:_,getState:re};var q={parse:a(async e=>{let n=await K("eventmodeling",e);x.debug(n),h.setAst(n),X(n,h)},"parse")};var Me=F(),De=Me?.eventmodeling;function Ce(e,n){return t=>{let i=t.swimlane.y+n.swimlanePadding,o=e.append("g").attr("class","em-box");o.append("rect").attr("x",t.x).attr("y",i).attr("rx","3").attr("width",t.dimension.width).attr("height",t.dimension.height).attr("stroke",t.visual.stroke).attr("fill",t.visual.fill),o.append("foreignObject").attr("x",t.x+n.boxPadding).attr("y",i+10).attr("width",t.dimension.width-2*n.boxPadding).attr("height",t.dimension.height-2*n.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(t.text)}}a(Ce,"renderD3Box");function Re(e,n){return e>n}a(Re,"dirUpwards");function ke(e,n,t,i){return o=>{let r=o.sourceBox.swimlane.y+n.swimlanePadding,m=o.targetBox.swimlane.y+n.swimlanePadding,d=Re(r,m),l=o.sourceBox.x+o.sourceBox.dimension.width*2/3,c=o.targetBox.x+o.targetBox.dimension.width/3,f,u;x.debug(`rendering relation up=${d} for `,{sourceBox:o.sourceBox,targetBox:o.targetBox}),d?(f=r,u=m+o.targetBox.dimension.height):(f=r+o.sourceBox.dimension.height,u=m);let g=i.emRelationStroke??o.visual.stroke;e.append("path").attr("class","em-relation").attr("fill",o.visual.fill).attr("stroke",g).attr("stroke-width","1").attr("marker-end",`url(#${t})`).attr("d",`M${l} ${f} L${c} ${u}`)}}a(ke,"renderD3Relation");function Te(e,n,t,i){return o=>{let r=e.append("g").attr("class","em-swimlane"),m=i.emSwimlaneBackgroundOdd??"rgb(250,250,250)",d=i.emSwimlaneBackgroundStroke??"rgb(240,240,240)";r.append("rect").attr("x",0).attr("y",o.y).attr("rx","3").attr("width",n+t.swimlanePadding).attr("height",o.height).attr("fill",m).attr("stroke",d),r.append("text").attr("font-weight",t.swimlaneTextFontWeight).attr("x",30).attr("y",o.y+30).text(o.label)}}a(Te,"renderD3Swimlane");var Ae=a(function(e,n,t,i){if(x.debug("in eventmodeling renderer",e+` +`,"id:",n,t),!De)throw new Error("EventModeling config not found");let o=i.db,{themeVariables:r,eventmodeling:m}=F(),d=U(`[id="${n}"]`),l=o.getDiagramProps(),c=o.getState(),f=`em-arrowhead-${n}`,u=r.emArrowhead??"#000000";c.sortedSwimlanesArray.forEach(Te(d,c.maxR,l,r)),c.boxes.forEach(Ce(d,l)),c.relations.forEach(ke(d,l,f,r)),d.append("defs").append("marker").attr("id",f).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",u),I(void 0,d,m?.padding??30,m?.useMaxWidth)},"draw"),J={draw:Ae};var $e=a(e=>"","getStyles"),Q=$e;var lt={parser:q,db:h,renderer:J,styles:Q};export{lt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-HNR7UZ2L.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/diagram-HNR7UZ2L.mjs.map new file mode 100644 index 0000000..bd17376 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-HNR7UZ2L.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/eventmodeling/types.ts", "../../../src/diagrams/eventmodeling/db.ts", "../../../src/diagrams/eventmodeling/parser.ts", "../../../src/diagrams/eventmodeling/renderer.ts", "../../../src/diagrams/eventmodeling/styles.js", "../../../src/diagrams/eventmodeling/diagram.ts"], + "sourcesContent": ["import type { EventModelingDiagramConfig } from '../../config.type.js';\nimport type { DiagramDBBase } from '../../diagram-api/types.js';\n\nimport type { EmFrame, EventModel } from '@mermaid-js/parser';\n\nexport interface EventModelingDB extends DiagramDBBase {\n setOptions: (rawOptString: string) => void;\n getOptions: () => any;\n\n setAst: (ast: EventModel) => void;\n\n getDiagramProps: () => DiagramProps;\n getState: () => Context;\n}\n\nexport interface DiagramProps {\n swimlaneMinHeight: number;\n swimlanePadding: number;\n swimlaneGap: number;\n boxPadding: number;\n boxOverlap: number;\n boxDefaultY: number;\n boxMinWidth: number;\n boxMaxWidth: number;\n boxMinHeight: number;\n boxMaxHeight: number;\n contentStartX: number;\n textMaxWidth: number;\n boxTextFontWeight: string;\n boxTextPadding: number;\n swimlaneTextFontWeight: string;\n labelUiAutomation: string;\n labelUiAutomationPrefix: string;\n labelCommandReadModel: string;\n labelCommandReadModelPrefix: string;\n labelEvents: string;\n labelEventsPrefix: string;\n}\n\n/**\n * Visual\n */\n\nexport interface Dimension {\n width: number;\n height: number;\n}\n\nexport interface Coordinate {\n x: number;\n y: number;\n}\n\nexport type Color = string;\n\nexport interface VisualProps {\n fill: Color;\n stroke: Color;\n}\n\nexport interface TextProps {\n content: string;\n width: number;\n height: number;\n}\n\nexport interface Box {\n r: number;\n x: number;\n /** This has no meaning for the time being. It is calculated from Swimlane.y ATM. */\n y: number;\n dimension: Dimension;\n leftSibling: boolean;\n swimlane: Swimlane;\n visual: VisualProps;\n text: string;\n frame: EmFrame;\n /** Line index */\n index: number;\n}\n\nexport interface SwimlaneProps {\n index: number;\n label: string;\n namespace?: string;\n}\n\nexport type Swimlane = {\n r: number;\n y: number;\n height: number;\n maxHeight: number;\n} & SwimlaneProps;\n\nexport interface Relation {\n visual: VisualProps;\n source: Coordinate;\n target: Coordinate;\n sourceBox: Box;\n targetBox: Box;\n}\n\nexport interface Context {\n boxes: Box[];\n swimlanes: Record;\n relations: Relation[];\n previousFrame?: EmFrame;\n previousSwimlaneNumber?: number;\n maxR: number;\n sortedSwimlanesArray: Swimlane[];\n}\n\n/**\n * Commands & Events\n */\n\nexport const PositionFrameKind = 'position frame';\nexport type PositionFrame = {\n index: number;\n frame: EmFrame;\n textProps: TextProps;\n} & CommandBase;\n\nexport const FramePositionedKind = 'frame positioned';\nexport type FramePositioned = {\n index: number;\n frame: EmFrame;\n visual: VisualProps;\n dimension: Dimension;\n textProps: TextProps;\n} & EventBase;\n\nexport const PositionRelationKind = 'position relation';\nexport type PositionRelation = {\n index: number;\n frame: EmFrame;\n sourceFrame?: EmFrame;\n} & CommandBase;\n\nexport const RelationPositionedKind = 'relation positioned';\nexport type RelationPositioned = {\n index: number;\n frame: EmFrame;\n sourceBox: Box;\n targetBox: Box;\n} & EventBase;\n\n/**\n * Decider & Event Sourcing support\n */\n\nexport type Command = PositionFrame | PositionRelation;\nexport type Event = FramePositioned | RelationPositioned;\nexport interface CommandBase {\n $kind: string;\n}\nexport interface EventBase {\n $kind: string;\n}\n\nexport type DecideFn = (state: Context, command: Command) => Event[];\nexport type EvolveFn = (state: Context, event: Event) => Context;\n\nexport type Deciders = Record;\nexport type Evolvers = Record;\n", "import { log } from '../../logger.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { wrapLabel, calculateTextDimensions } from '../../utils.js';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport type { TextDimensionConfig } from '../../types.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport { sanitizeText } from '../common/common.js';\n\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\n\nimport type { EventModelingDiagramConfig } from '../../config.type.js';\nimport type { EventModel } from '@mermaid-js/parser';\nimport type { EmFrame, EmDataEntity } from '@mermaid-js/parser';\nimport { isEmResetFrame } from '@mermaid-js/parser';\n\nimport type {\n EventModelingDB,\n Box,\n Relation,\n Swimlane,\n SwimlaneProps,\n VisualProps,\n Command,\n Event,\n Deciders,\n Evolvers,\n Context,\n PositionFrame,\n PositionRelation,\n FramePositioned,\n RelationPositioned,\n TextProps,\n DiagramProps,\n} from './types.js';\nimport {\n PositionFrameKind,\n PositionRelationKind,\n FramePositionedKind,\n RelationPositionedKind,\n} from './types.js';\n\nexport const setOptions = function (_rawOptString: string) {\n log.debug('options str', _rawOptString);\n};\n\nexport const getOptions = function () {\n return {};\n};\n\nexport const clear = function () {\n reset();\n commonClear();\n};\n\nfunction reset(): void {\n store = {};\n}\n\nexport const getDirection = function () {\n return 'LR';\n};\n\nconst DEFAULT_EVENTMODELING_CONFIG: Required =\n DEFAULT_CONFIG.eventmodeling;\nconst getConfig = (): Required => {\n const config = cleanAndMerge({\n ...DEFAULT_EVENTMODELING_CONFIG,\n ...commonGetConfig().eventmodeling,\n });\n return config;\n};\n\ninterface EmStore {\n ast?: EventModel;\n}\n\nlet store: EmStore = {};\n\nfunction getState(): Context {\n let state = initial;\n const { ast } = store;\n const diagramProps = getDiagramProps();\n\n if (!ast) {\n throw new Error('No data for EventModel');\n }\n\n ast.frames.forEach((frame: EmFrame, index: number) => {\n const textProps = calculateTextProps(frame, ast.dataEntities, diagramProps);\n\n state = dispatch(state, {\n $kind: PositionFrameKind,\n index,\n frame,\n textProps,\n });\n\n let sourceFrames = undefined;\n if (hasSourceFrame(frame)) {\n log.debug(`source frame`, frame.sourceFrames);\n sourceFrames = ast.frames.filter((currentFrame: EmFrame) => {\n //@ts-ignore: sf is Reference but Reference is present in 'langium' package not available in `mermaid` package directly. We might want to re-export it from `parser`.\n return frame.sourceFrames.some((sf) => sf.$refText === currentFrame.name);\n });\n\n sourceFrames.forEach((sourceFrame: EmFrame) => {\n state = dispatch(state, {\n $kind: PositionRelationKind,\n index,\n frame,\n sourceFrame,\n });\n });\n } else {\n state = dispatch(state, {\n $kind: PositionRelationKind,\n index,\n frame,\n });\n }\n });\n\n state = {\n ...state,\n sortedSwimlanesArray: sortedSwimlanesArray(state.swimlanes),\n };\n\n return state;\n}\n\nfunction setAst(ast: EventModel) {\n store.ast = ast;\n}\n\nconst diagramProps = {\n swimlaneMinHeight: 70,\n swimlanePadding: 15,\n swimlaneGap: 10,\n boxPadding: 10,\n boxOverlap: 90,\n boxDefaultY: 0,\n boxMinWidth: 80,\n boxMaxWidth: 450,\n boxMinHeight: 80,\n boxMaxHeight: 750,\n contentStartX: 250,\n textMaxWidth: 450 - 2 * 10,\n boxTextFontWeight: 'bold',\n boxTextPadding: 10,\n swimlaneTextFontWeight: 'bold',\n labelUiAutomation: 'UI/Automation',\n labelUiAutomationPrefix: 'UI/A: ',\n labelCommandReadModel: 'Command/Read Model',\n labelCommandReadModelPrefix: 'C/RM: ',\n labelEvents: 'Events',\n labelEventsPrefix: 'Stream: ',\n};\n\nfunction getDiagramProps(): DiagramProps {\n return diagramProps;\n}\n\nconst initial: Context = {\n boxes: [],\n swimlanes: {},\n relations: [],\n maxR: 0,\n sortedSwimlanesArray: [],\n};\n\nfunction extractNamespace(entityIdentifier: string): string | undefined {\n const spl = entityIdentifier.split('.');\n if (spl.length === 2) {\n return spl[0];\n }\n return undefined;\n}\n\nfunction extractName(entityIdentifier: string): string | undefined {\n const spl = entityIdentifier.split('.');\n if (spl.length === 2) {\n return spl[1];\n }\n return entityIdentifier;\n}\n\nfunction findSwimlaneByNamespace(\n swimlanes: Record,\n namespace: string | undefined\n): Swimlane | undefined {\n if (!namespace || namespace.length === 0) {\n return undefined;\n }\n return Object.values(swimlanes).find((swimlane) => swimlane.namespace === namespace);\n}\n\nfunction findNextAvailableIndex(\n swimlanes: Record,\n boundaryMin: number,\n boundaryMax: number\n): number {\n return (\n Math.max(\n boundaryMin,\n ...Object.keys(swimlanes)\n .filter((key) => {\n const index = Number.parseInt(key);\n return index > boundaryMin && index < boundaryMax;\n })\n .map((key) => Number.parseInt(key))\n ) + 1\n );\n}\n\nfunction calculateSwimlaneProps(\n frame: EmFrame,\n swimlanes: Record\n): SwimlaneProps {\n const namespace = extractNamespace(frame.entityIdentifier);\n const sw = findSwimlaneByNamespace(swimlanes, namespace);\n\n switch (frame.modelEntityType) {\n case 'ui':\n case 'pcr':\n case 'processor':\n if (sw) {\n return {\n index: sw.index,\n label: sw.namespace || diagramProps.labelUiAutomation,\n };\n } else if (namespace) {\n return {\n index: findNextAvailableIndex(swimlanes, 0, 100),\n label: diagramProps.labelUiAutomationPrefix + namespace,\n };\n }\n return { index: 0, label: diagramProps.labelUiAutomation };\n case 'rmo':\n case 'readmodel':\n case 'cmd':\n case 'command':\n if (sw) {\n return {\n index: sw.index,\n label: sw.namespace || diagramProps.labelCommandReadModel,\n };\n } else if (namespace) {\n return {\n index: findNextAvailableIndex(swimlanes, 100, 200),\n label: diagramProps.labelCommandReadModelPrefix + namespace,\n };\n }\n return { index: 100, label: diagramProps.labelCommandReadModel };\n case 'evt':\n case 'event':\n default:\n if (sw) {\n return {\n index: sw.index,\n label: sw.namespace || diagramProps.labelEvents,\n };\n } else if (namespace) {\n return {\n index: findNextAvailableIndex(swimlanes, 200, 300),\n label: diagramProps.labelEventsPrefix + namespace,\n };\n }\n return { index: 200, label: diagramProps.labelEvents };\n }\n}\n\nfunction calculateEntityVisualProps(frame: EmFrame): VisualProps {\n const { themeVariables } = commonGetConfig();\n switch (frame.modelEntityType) {\n case 'ui':\n return {\n fill: themeVariables.emUiFill ?? 'white',\n stroke: themeVariables.emUiStroke ?? '#dbdada',\n };\n case 'pcr':\n case 'processor':\n return {\n fill: themeVariables.emProcessorFill ?? '#edb3f6',\n stroke: themeVariables.emProcessorStroke ?? '#b88cbf',\n };\n case 'rmo':\n case 'readmodel':\n return {\n fill: themeVariables.emReadModelFill ?? '#d3f1a2',\n stroke: themeVariables.emReadModelStroke ?? '#a3b732',\n };\n case 'cmd':\n case 'command':\n return {\n fill: themeVariables.emCommandFill ?? '#bcd6fe',\n stroke: themeVariables.emCommandStroke ?? '#679ac3',\n };\n case 'evt':\n case 'event':\n return {\n fill: themeVariables.emEventFill ?? '#ffb778',\n stroke: themeVariables.emEventStroke ?? '#c19a0f',\n };\n default:\n return {\n fill: 'red',\n stroke: 'black',\n };\n }\n}\n\nfunction calculateTextProps(\n frame: EmFrame,\n dataEntities: EmDataEntity[],\n diagramProps: DiagramProps\n): TextProps {\n const config = commonGetConfig();\n const name = sanitizeText(extractName(frame.entityIdentifier) ?? '', config);\n let toHtml: string | undefined;\n\n const wrapLabelConfig = {\n fontSize: 16,\n fontWeight: 700,\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n joinWith: '
    ',\n };\n\n const wrappedName = wrapLabel(name, diagramProps.textMaxWidth, wrapLabelConfig);\n let content = `${wrappedName}`;\n\n if (frame.dataInlineValue) {\n toHtml = frame.dataInlineValue;\n toHtml = toHtml.substring(toHtml.indexOf('{') + 1);\n toHtml = toHtml.substring(0, toHtml.lastIndexOf('}') - 1);\n toHtml = sanitizeText(toHtml, config);\n toHtml = wrapLabel(toHtml, diagramProps.textMaxWidth, wrapLabelConfig);\n toHtml = toHtml.replaceAll(' ', ' ');\n }\n\n if (frame.dataReference) {\n const dataEntity = dataEntities.find(\n (dataEntity) => dataEntity.name === frame.dataReference?.$refText\n );\n\n if (dataEntity) {\n toHtml = dataEntity.dataBlockValue;\n toHtml = toHtml.substring(toHtml.indexOf('{\\n') + 2);\n toHtml = toHtml.substring(0, toHtml.lastIndexOf('}') - 1);\n toHtml = sanitizeText(toHtml, config);\n toHtml = wrapLabel(toHtml, diagramProps.textMaxWidth, wrapLabelConfig);\n toHtml = toHtml.replaceAll(' ', ' ');\n toHtml += `
    `;\n }\n }\n\n const hasRenderedData = toHtml !== undefined;\n\n if (hasRenderedData) {\n content += `

    ${toHtml}`;\n }\n\n const textDimensionConfig: TextDimensionConfig = {\n fontSize: wrapLabelConfig.fontSize,\n fontWeight: wrapLabelConfig.fontWeight,\n fontFamily: wrapLabelConfig.fontFamily,\n };\n const dimensions = calculateTextDimensions(content, textDimensionConfig);\n\n /** this is a temporal workaround until a more complex dimension calculation is in place */\n const calculatedWidthFix = hasRenderedData ? dimensions.width / 3 : dimensions.width;\n\n const props = {\n content,\n width: calculatedWidthFix,\n height: dimensions.height,\n };\n log.debug(`[${frame.name}] ${frame.entityIdentifier} text`, props);\n return props;\n}\n\nfunction decidePositionFrame(state: Context, _command: Command): Event[] {\n const command = _command as PositionFrame;\n\n const visual = calculateEntityVisualProps(command.frame);\n const dimension = {\n width: command.textProps.width + 2 * diagramProps.boxTextPadding,\n height: command.textProps.height + 2 * diagramProps.boxTextPadding,\n };\n\n const event: FramePositioned = {\n $kind: FramePositionedKind,\n frame: command.frame,\n index: command.index,\n visual: visual,\n dimension,\n textProps: command.textProps,\n };\n return [event];\n}\n\nfunction calculateX(\n swimlane: Partial,\n previousSwimlane: Swimlane | undefined,\n lastBox: Box | undefined\n): number {\n // log.debug(`calculateX`, { previousSwimlane,swimlane:event.swimlane,r: swimlane.r,lbr:lastBox?.r});\n if (previousSwimlane === undefined) {\n return diagramProps.contentStartX;\n }\n if (previousSwimlane.index === swimlane.index && swimlane.r) {\n return swimlane.r + diagramProps.boxPadding;\n }\n\n if (lastBox === undefined) {\n return diagramProps.contentStartX;\n }\n\n return lastBox.r - diagramProps.boxOverlap + diagramProps.boxPadding;\n}\n\nfunction calculateMaxRight(swimlanes: Swimlane[], swimlaneR: number): number {\n const rs = [...swimlanes.map((s) => s.r), swimlaneR];\n return Math.max(...rs);\n}\n\nfunction sortedSwimlanesArray(swimlanes: Record): Swimlane[] {\n return Object.values(swimlanes).sort((a, b) => a.index - b.index);\n}\n\nfunction evolveFramePositioned(state: Context, _event: Event): Context {\n const event: FramePositioned = _event as FramePositioned;\n\n const swimlaneProps = calculateSwimlaneProps(event.frame, state.swimlanes);\n\n let swimlane: Swimlane;\n if (swimlaneProps.index in state.swimlanes) {\n swimlane = state.swimlanes[swimlaneProps.index];\n } else {\n swimlane = {\n index: swimlaneProps.index,\n label: swimlaneProps.label,\n r: 0,\n y: swimlaneProps.index * diagramProps.swimlaneMinHeight + diagramProps.swimlaneGap,\n height: diagramProps.swimlaneMinHeight,\n maxHeight: diagramProps.swimlaneMinHeight,\n };\n }\n\n const lastBox = state.boxes.length > 0 ? state.boxes[state.boxes.length - 1] : undefined;\n const previousSwimlane =\n state.previousSwimlaneNumber !== undefined\n ? state.swimlanes[state.previousSwimlaneNumber]\n : undefined;\n\n const dimension = {\n width:\n Math.max(\n diagramProps.boxMinWidth,\n Math.min(diagramProps.boxMaxWidth, event.dimension.width)\n ) +\n 2 * diagramProps.boxPadding,\n height:\n Math.max(\n diagramProps.boxMinHeight,\n Math.min(diagramProps.boxMaxHeight, event.dimension.height)\n ) +\n 2 * diagramProps.boxPadding,\n };\n\n const x = calculateX(swimlane, previousSwimlane, lastBox);\n const r = x + dimension.width + diagramProps.boxPadding;\n const maxR = calculateMaxRight(Object.values(state.swimlanes), r);\n\n swimlane.r = x + dimension.width;\n swimlane.maxHeight = Math.max(swimlane.maxHeight, dimension.height);\n swimlane.height =\n Math.max(diagramProps.swimlaneMinHeight, swimlane.maxHeight) + 2 * diagramProps.swimlanePadding;\n\n const box: Box = {\n x,\n y: diagramProps.swimlanePadding + swimlane.y,\n // y: diagramProps.swimlanePadding + (swimlane.y || diagramProps.boxDefaultY),\n r,\n dimension,\n leftSibling: false,\n swimlane: swimlane,\n visual: event.visual,\n text: event.textProps.content,\n frame: event.frame,\n index: event.index,\n };\n\n const newState = {\n ...state,\n boxes: [...state.boxes, box],\n swimlanes: {\n ...state.swimlanes,\n [`${swimlane.index}`]: swimlane,\n },\n previousSwimlaneNumber: swimlaneProps.index,\n previousFrame: event.frame,\n maxR,\n };\n\n /** the following swimlane.y recalculation is suboptimal. Additionally\n * the value of Box.y is not taken into account in rendering time.\n * This is fine for the time being, but maybe needs improvement later on.\n */\n const swimlanes = sortedSwimlanesArray(newState.swimlanes);\n if (swimlanes.length > 0) {\n swimlanes[0].y = 0;\n }\n for (let i = 1; i < swimlanes.length; i++) {\n const sw = swimlanes[i];\n const prevSw = swimlanes[i - 1];\n\n sw.y = prevSw.y + prevSw.height + diagramProps.swimlaneGap;\n }\n\n return newState;\n}\n\nfunction isFirstFrame(index: number, frame: EmFrame): boolean {\n if (index === 0 && frame.sourceFrames.length === 0) {\n return true;\n }\n return false;\n}\n\nfunction hasSourceFrame(frame: EmFrame): boolean {\n return (\n frame.sourceFrames !== undefined && frame.sourceFrames !== null && frame.sourceFrames.length > 0\n );\n}\n\nfunction findBoxByFrame(boxes: Box[], frame: EmFrame | undefined): Box | undefined {\n if (frame === undefined || frame === null) {\n return undefined;\n }\n return boxes.find((box) => box.frame.name === frame.name);\n}\n\nfunction findBoxByLineIndex(\n boxes: Box[],\n targetSwimlane: number,\n lineIndex: number\n): Box | undefined {\n if (lineIndex < 0) {\n return undefined;\n }\n\n // boxes.find((box) => box.index === lineIndex);\n for (let i = lineIndex; i >= 0; i--) {\n const box = boxes[i];\n if (box.swimlane.index !== targetSwimlane) {\n return box;\n }\n }\n return undefined;\n}\n\nfunction decidePositionRelation(state: Context, _command: Command): Event[] {\n const command = _command as PositionRelation;\n\n if (isEmResetFrame(command.frame) || isFirstFrame(command.index, command.frame)) {\n return [];\n }\n\n const targetBox = findBoxByFrame(state.boxes, command.frame);\n\n if (targetBox === undefined) {\n throw new Error(`Target box not found for frame ${command.frame.name}`);\n }\n\n let sourceBox;\n if (command.sourceFrame) {\n sourceBox = findBoxByFrame(state.boxes, command.sourceFrame);\n } else {\n sourceBox = findBoxByLineIndex(state.boxes, targetBox.swimlane.index, command.index - 1);\n }\n\n if (sourceBox === undefined) {\n // Source box not found for frame ${command.frame.name}\n return [];\n }\n const event: RelationPositioned = {\n $kind: RelationPositionedKind,\n frame: command.frame,\n index: command.index,\n sourceBox,\n targetBox,\n };\n return [event];\n}\n\nfunction evolveRelationPositioned(state: Context, _event: Event): Context {\n const event = _event as RelationPositioned;\n\n const relation: Relation = {\n visual: {\n fill: 'none',\n stroke: '#000',\n },\n source: {\n x: event.sourceBox.x,\n y: event.sourceBox.y,\n },\n target: {\n x: event.targetBox.x,\n y: event.targetBox.y,\n },\n sourceBox: event.sourceBox,\n targetBox: event.targetBox,\n };\n\n const newState = {\n ...state,\n relations: [...state.relations, relation],\n };\n return newState;\n}\n\nconst deciders: Deciders = {\n [PositionFrameKind]: decidePositionFrame,\n [PositionRelationKind]: decidePositionRelation,\n};\n\nconst evolvers: Evolvers = {\n [FramePositionedKind]: evolveFramePositioned,\n [RelationPositionedKind]: evolveRelationPositioned,\n};\n\nfunction decide(state: Context, command: Command): Event[] {\n const fn = deciders[command.$kind];\n if (fn === undefined || fn === null) {\n return [];\n }\n\n const events = fn(state, command);\n log.debug(`decided events`, events);\n return events;\n}\n\nfunction evolve(state: Context, events: Event[]): Context {\n const newState = events.reduce((previousState, event) => {\n const fn = evolvers[event.$kind];\n if (fn === undefined || fn === null) {\n return previousState;\n }\n return fn(previousState, event);\n }, state);\n log.debug(`evolve events`, { state, newState, events });\n return newState;\n}\n\nfunction dispatch(state: Context, command: Command): Context {\n const events = decide(state, command);\n const newState = evolve(state, events);\n return newState;\n}\n\nexport const db: EventModelingDB = {\n getConfig,\n\n setOptions,\n getOptions,\n clear,\n\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle,\n\n setAst,\n\n getDiagramProps,\n getState,\n};\n", "import type { EventModel } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { db } from './db.js';\n\nexport const parser: ParserDefinition = {\n parse: async (input: string): Promise => {\n const ast: EventModel = await parse('eventmodeling', input);\n log.debug(ast);\n db.setAst(ast);\n populateCommonDb(ast as any, db);\n },\n};\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n describe('EventModeling Parser', () => {\n it('should parse simple model', () => {\n const result = parser.parse(`eventmodeling\n tf 01 evt Start\n\n `);\n expect(result !== undefined);\n });\n });\n}\n", "import type { BaseType, Selection } from 'd3';\nimport { select } from 'd3';\nimport { getConfig, setupGraphViewbox } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport type { DrawDefinition } from '../../diagram-api/types.js';\n\nimport type { EventModelingDB, Box, Relation, Swimlane, DiagramProps } from './types.js';\n\nconst DEFAULT_CONFIG = getConfig();\nconst DEFAULT_EVENTMODELING_CONFIG = DEFAULT_CONFIG?.eventmodeling;\n\nfunction renderD3Box(\n diagram: Selection,\n diagramProps: DiagramProps\n) {\n return (box: Box) => {\n const y = box.swimlane.y + diagramProps.swimlanePadding;\n\n const g = diagram.append('g').attr('class', 'em-box');\n\n g.append('rect')\n .attr('x', box.x)\n .attr('y', y)\n .attr('rx', '3')\n .attr('width', box.dimension.width)\n .attr('height', box.dimension.height)\n .attr('stroke', box.visual.stroke)\n .attr('fill', box.visual.fill);\n\n const f = g\n .append('foreignObject')\n .attr('x', box.x + diagramProps.boxPadding)\n .attr('y', y + 10)\n .attr('width', box.dimension.width - 2 * diagramProps.boxPadding)\n .attr('height', box.dimension.height - 2 * diagramProps.boxPadding);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('span')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .html(box.text);\n };\n}\n\nfunction dirUpwards(sourceY: number, targetY: number): boolean {\n return sourceY > targetY;\n}\n\nfunction renderD3Relation(\n diagram: Selection,\n diagramProps: DiagramProps,\n arrowheadId: string,\n themeVariables: Record\n) {\n return (relation: Relation) => {\n const sourceBoxY = relation.sourceBox.swimlane.y + diagramProps.swimlanePadding;\n const targetBoxY = relation.targetBox.swimlane.y + diagramProps.swimlanePadding;\n\n const upwards = dirUpwards(sourceBoxY, targetBoxY);\n\n const sourceX = relation.sourceBox.x + (relation.sourceBox.dimension.width * 2) / 3;\n const targetX = relation.targetBox.x + relation.targetBox.dimension.width / 3;\n\n let sourceY;\n let targetY;\n\n log.debug(`rendering relation up=${upwards} for `, {\n sourceBox: relation.sourceBox,\n targetBox: relation.targetBox,\n });\n if (upwards) {\n sourceY = sourceBoxY;\n targetY = targetBoxY + relation.targetBox.dimension.height;\n } else {\n sourceY = sourceBoxY + relation.sourceBox.dimension.height;\n targetY = targetBoxY;\n }\n\n const relationStroke = themeVariables.emRelationStroke ?? relation.visual.stroke;\n\n diagram\n .append('path')\n .attr('class', 'em-relation')\n .attr('fill', relation.visual.fill)\n .attr('stroke', relationStroke)\n .attr('stroke-width', '1')\n .attr('marker-end', `url(#${arrowheadId})`)\n .attr('d', `M${sourceX} ${sourceY} L${targetX} ${targetY}`);\n };\n}\n\nfunction renderD3Swimlane(\n diagram: Selection,\n maxR: number,\n diagramProps: DiagramProps,\n themeVariables: Record\n) {\n return (swimlane: Swimlane) => {\n const g = diagram.append('g').attr('class', 'em-swimlane');\n\n const oddBackground = themeVariables.emSwimlaneBackgroundOdd ?? 'rgb(250,250,250)';\n const backgroundStroke = themeVariables.emSwimlaneBackgroundStroke ?? 'rgb(240,240,240)';\n\n g.append('rect')\n .attr('x', 0)\n .attr('y', swimlane.y)\n .attr('rx', '3')\n .attr('width', maxR + diagramProps.swimlanePadding)\n .attr('height', swimlane.height)\n .attr('fill', oddBackground)\n .attr('stroke', backgroundStroke);\n\n g.append('text')\n .attr('font-weight', diagramProps.swimlaneTextFontWeight)\n .attr('x', 30)\n .attr('y', swimlane.y + 30)\n .text(swimlane.label);\n };\n}\n\nexport const draw: DrawDefinition = function (txt, id, ver, diagObj) {\n log.debug('in eventmodeling renderer', txt + '\\n', 'id:', id, ver);\n if (!DEFAULT_EVENTMODELING_CONFIG) {\n throw new Error('EventModeling config not found');\n }\n const db = diagObj.db as EventModelingDB;\n const { themeVariables, eventmodeling: config } = getConfig();\n\n const diagram: Selection = select(`[id=\"${id}\"]`);\n\n const diagramProps = db.getDiagramProps();\n const state = db.getState();\n\n const arrowheadId = `em-arrowhead-${id}`;\n const arrowheadColor = themeVariables.emArrowhead ?? '#000000';\n\n state.sortedSwimlanesArray.forEach(\n renderD3Swimlane(diagram, state.maxR, diagramProps, themeVariables)\n );\n state.boxes.forEach(renderD3Box(diagram, diagramProps));\n state.relations.forEach(renderD3Relation(diagram, diagramProps, arrowheadId, themeVariables));\n\n const marker = diagram\n .append('defs')\n .append('marker')\n .attr('id', arrowheadId)\n .attr('markerWidth', '10')\n .attr('markerHeight', '7')\n .attr('refX', '10')\n .attr('refY', '3.5')\n .attr('orient', 'auto');\n\n marker.append('polygon').attr('points', '0 0, 10 3.5, 0 7').attr('fill', arrowheadColor);\n\n setupGraphViewbox(undefined, diagram, config?.padding ?? 30, config?.useMaxWidth);\n};\n\nexport default {\n draw,\n};\n", "const getStyles = (_options) => ``;\n\nexport default getStyles;\n", "import { parser } from './parser.js';\nimport { db } from './db.js';\nimport renderer from './renderer.js';\nimport styles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer: renderer,\n styles: styles,\n};\n"], + "mappings": "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", + "names": ["PositionFrameKind", "FramePositionedKind", "PositionRelationKind", "RelationPositionedKind", "setOptions", "__name", "_rawOptString", "log", "getOptions", "clear", "reset", "store", "DEFAULT_EVENTMODELING_CONFIG", "defaultConfig_default", "getConfig", "__name", "cleanAndMerge", "store", "getState", "state", "initial", "ast", "diagramProps", "getDiagramProps", "frame", "index", "textProps", "calculateTextProps", "dispatch", "PositionFrameKind", "sourceFrames", "hasSourceFrame", "log", "currentFrame", "sf", "sourceFrame", "PositionRelationKind", "sortedSwimlanesArray", "setAst", "extractNamespace", "entityIdentifier", "spl", "extractName", "findSwimlaneByNamespace", "swimlanes", "namespace", "swimlane", "findNextAvailableIndex", "boundaryMin", "boundaryMax", "key", "calculateSwimlaneProps", "sw", "calculateEntityVisualProps", "themeVariables", "dataEntities", "config", "name", "sanitizeText", "toHtml", "wrapLabelConfig", "content", "wrapLabel", "dataEntity", "hasRenderedData", "textDimensionConfig", "dimensions", "calculateTextDimensions", "calculatedWidthFix", "props", "decidePositionFrame", "_command", "command", "visual", "dimension", "FramePositionedKind", "calculateX", "previousSwimlane", "lastBox", "calculateMaxRight", "swimlaneR", "rs", "s", "a", "b", "evolveFramePositioned", "_event", "event", "swimlaneProps", "x", "r", "maxR", "box", "newState", "i", "prevSw", "isFirstFrame", "findBoxByFrame", "boxes", "findBoxByLineIndex", "targetSwimlane", "lineIndex", "decidePositionRelation", "isEmResetFrame", "targetBox", "sourceBox", "RelationPositionedKind", "evolveRelationPositioned", "relation", "deciders", "evolvers", "decide", "fn", "events", "evolve", "previousState", "db", "setOptions", "getOptions", "clear", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "parser", "__name", "input", "ast", "parse", "log", "db", "populateCommonDb", "DEFAULT_CONFIG", "getConfig", "DEFAULT_EVENTMODELING_CONFIG", "renderD3Box", "diagram", "diagramProps", "box", "y", "g", "__name", "dirUpwards", "sourceY", "targetY", "renderD3Relation", "arrowheadId", "themeVariables", "relation", "sourceBoxY", "targetBoxY", "upwards", "sourceX", "targetX", "log", "relationStroke", "renderD3Swimlane", "maxR", "swimlane", "oddBackground", "backgroundStroke", "draw", "txt", "id", "ver", "diagObj", "db", "config", "select_default", "state", "arrowheadColor", "setupGraphViewbox", "renderer_default", "getStyles", "__name", "_options", "styles_default", "diagram", "parser", "db", "renderer_default", "styles_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-HOHITQNR.mjs b/assets/mermaid/chunks/mermaid.esm.min/diagram-HOHITQNR.mjs deleted file mode 100644 index d4e9c1f..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/diagram-HOHITQNR.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import{a as me}from"./chunk-AEOMTBSW.mjs";import{a as pe}from"./chunk-TJ4WWVTA.mjs";import"./chunk-AHTCUU5T.mjs";import"./chunk-JVPIJFVP.mjs";import"./chunk-SYGLAQYM.mjs";import"./chunk-NHJX6F6M.mjs";import"./chunk-F3E5R7LK.mjs";import"./chunk-ZX4KS3OZ.mjs";import{a as de}from"./chunk-D4HHKWPY.mjs";import{a as ce}from"./chunk-T4EQAHMB.mjs";import{c as ie,d as v}from"./chunk-D2KP3OBD.mjs";import{l as I}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{N as Q,Q as Z,R as ee,S as te,T as ae,U as re,V as le,W as se,j as K,s as j}from"./chunk-3UWU4A3N.mjs";import{b as M,h as V,j as L,k as oe,l as ne,m as _}from"./chunk-MGPAVIPZ.mjs";import"./chunk-MFSPT3DZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as p}from"./chunk-VELTKBKT.mjs";var $=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=ee;this.getAccTitle=te;this.setDiagramTitle=le;this.getDiagramTitle=se;this.getAccDescription=re;this.setAccDescription=ae}static{p(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let a=K,n=j();return I({...a.treemap,...n.treemap??{}})}addNode(a,n){this.nodes.push(a),this.levels.set(a,n),n===0&&(this.outerNodes.push(a),this.root??=a)}getRoot(){return{name:"",children:this.outerNodes}}addClass(a,n){let o=this.classes.get(a)??{id:a,styles:[],textStyles:[]},c=n.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");c&&c.forEach(l=>{ie(l)&&(o?.textStyles?o.textStyles.push(l):o.textStyles=[l]),o?.styles?o.styles.push(l):o.styles=[l]}),this.classes.set(a,o)}getClasses(){return this.classes}getStylesForClass(a){return this.classes.get(a)?.styles??[]}clear(){Z(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function fe(m){if(!m.length)return[];let a=[],n=[];return m.forEach(o=>{let c={name:o.name,children:o.type==="Leaf"?void 0:[]};for(c.classSelector=o?.classSelector,o?.cssCompiledStyles&&(c.cssCompiledStyles=o.cssCompiledStyles),o.type==="Leaf"&&o.value!==void 0&&(c.value=o.value);n.length>0&&n[n.length-1].level>=o.level;)n.pop();if(n.length===0)a.push(c);else{let l=n[n.length-1].node;l.children?l.children.push(c):l.children=[c]}o.type!=="Leaf"&&n.push({node:c,level:o.level})}),a}p(fe,"buildHierarchy");var De=p((m,a)=>{me(m,a);let n=[];for(let l of m.TreemapRows??[])l.$type==="ClassDefStatement"&&a.addClass(l.className??"",l.styleText??"");for(let l of m.TreemapRows??[]){let d=l.item;if(!d)continue;let g=l.indent?parseInt(l.indent):0,W=ve(d),r=d.classSelector?a.getStylesForClass(d.classSelector):[],P=r.length>0?r:void 0,T={level:g,name:W,type:d.$type,value:d.value,classSelector:d.classSelector,cssCompiledStyles:P};n.push(T)}let o=fe(n),c=p((l,d)=>{for(let g of l)a.addNode(g,d),g.children&&g.children.length>0&&c(g.children,d+1)},"addNodesRecursively");c(o,0)},"populate"),ve=p(m=>m.name?String(m.name):"","getItemName"),O={parser:{yy:void 0},parse:p(async m=>{try{let n=await pe("treemap",m);M.debug("Treemap AST:",n);let o=O.parser?.yy;if(!(o instanceof $))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");De(n,o)}catch(a){throw M.error("Error parsing treemap:",a),a}},"parse")};var we=10,F=10,E=25,Ne=p((m,a,n,o)=>{let c=o.db,l=c.getConfig(),d=l.padding??we,g=c.getDiagramTitle(),W=c.getRoot(),{themeVariables:r}=j();if(!W)return;let P=g?30:0,T=de(a),X=l.nodeWidth?l.nodeWidth*F:960,Y=l.nodeHeight?l.nodeHeight*F:500,G=X,q=Y+P;T.attr("viewBox",`0 0 ${G} ${q}`),Q(T,q,G,l.useMaxWidth);let C;try{let e=l.valueFormat||",";if(e==="$0,0")C=p(t=>"$"+L(",")(t),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){let t=/\.\d+/.exec(e),s=t?t[0]:"";C=p(f=>"$"+L(","+s)(f),"valueFormat")}else if(e.startsWith("$")){let t=e.substring(1);C=p(s=>"$"+L(t||"")(s),"valueFormat")}else C=L(e)}catch(e){M.error("Error creating format function:",e),C=L(",")}let A=_().range(["transparent",r.cScale0,r.cScale1,r.cScale2,r.cScale3,r.cScale4,r.cScale5,r.cScale6,r.cScale7,r.cScale8,r.cScale9,r.cScale10,r.cScale11]),he=_().range(["transparent",r.cScalePeer0,r.cScalePeer1,r.cScalePeer2,r.cScalePeer3,r.cScalePeer4,r.cScalePeer5,r.cScalePeer6,r.cScalePeer7,r.cScalePeer8,r.cScalePeer9,r.cScalePeer10,r.cScalePeer11]),B=_().range([r.cScaleLabel0,r.cScaleLabel1,r.cScaleLabel2,r.cScaleLabel3,r.cScaleLabel4,r.cScaleLabel5,r.cScaleLabel6,r.cScaleLabel7,r.cScaleLabel8,r.cScaleLabel9,r.cScaleLabel10,r.cScaleLabel11]);g&&T.append("text").attr("x",G/2).attr("y",P/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(g);let U=T.append("g").attr("transform",`translate(0, ${P})`).attr("class","treemapContainer"),ye=oe(W).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),J=ne().size([X,Y]).paddingTop(e=>e.children&&e.children.length>0?E+F:0).paddingInner(d).paddingLeft(e=>e.children&&e.children.length>0?F:0).paddingRight(e=>e.children&&e.children.length>0?F:0).paddingBottom(e=>e.children&&e.children.length>0?F:0).round(!0)(ye),Se=J.descendants().filter(e=>e.children&&e.children.length>0),k=U.selectAll(".treemapSection").data(Se).enter().append("g").attr("class","treemapSection").attr("transform",e=>`translate(${e.x0},${e.y0})`);k.append("rect").attr("width",e=>e.x1-e.x0).attr("height",E).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",e=>e.depth===0?"display: none;":""),k.append("clipPath").attr("id",(e,t)=>`clip-section-${a}-${t}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-12)).attr("height",E),k.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class",(e,t)=>`treemapSection section${t}`).attr("fill",e=>A(e.data.name)).attr("fill-opacity",.6).attr("stroke",e=>he(e.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",e=>{if(e.depth===0)return"display: none;";let t=v({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+";"+t.borderStyles.join(";")}),k.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",E/2).attr("dominant-baseline","middle").text(e=>e.depth===0?"":e.data.name).attr("font-weight","bold").attr("style",e=>{if(e.depth===0)return"display: none;";let t="dominant-baseline: middle; font-size: 12px; fill:"+B(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",s=v({cssCompiledStyles:e.data.cssCompiledStyles});return t+s.labelStyles.replace("color:","fill:")}).each(function(e){if(e.depth===0)return;let t=V(this),s=e.data.name;t.text(s);let f=e.x1-e.x0,y=6,S;l.showValues!==!1&&e.value?S=f-10-30-10-y:S=f-y-6;let u=Math.max(15,S),i=t.node();if(i.getComputedTextLength()>u){let h=s;for(;h.length>0;){if(h=s.substring(0,h.length-1),h.length===0){t.text("..."),i.getComputedTextLength()>u&&t.text("");break}if(t.text(h+"..."),i.getComputedTextLength()<=u)break}}}),l.showValues!==!1&&k.append("text").attr("class","treemapSectionValue").attr("x",e=>e.x1-e.x0-10).attr("y",E/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(e=>e.value?C(e.value):"").attr("font-style","italic").attr("style",e=>{if(e.depth===0)return"display: none;";let t="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+B(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",s=v({cssCompiledStyles:e.data.cssCompiledStyles});return t+s.labelStyles.replace("color:","fill:")});let be=J.leaves(),R=U.selectAll(".treemapLeafGroup").data(be).enter().append("g").attr("class",(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:""}x`).attr("transform",e=>`translate(${e.x0},${e.y0})`);R.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class","treemapLeaf").attr("fill",e=>e.parent?A(e.parent.data.name):A(e.data.name)).attr("style",e=>v({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",e=>e.parent?A(e.parent.data.name):A(e.data.name)).attr("stroke-width",3),R.append("clipPath").attr("id",(e,t)=>`clip-${a}-${t}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-4)).attr("height",e=>Math.max(0,e.y1-e.y0-4)),R.append("text").attr("class","treemapLabel").attr("x",e=>(e.x1-e.x0)/2).attr("y",e=>(e.y1-e.y0)/2).attr("style",e=>{let t="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+B(e.data.name)+";",s=v({cssCompiledStyles:e.data.cssCompiledStyles});return t+s.labelStyles.replace("color:","fill:")}).attr("clip-path",(e,t)=>`url(#clip-${a}-${t})`).text(e=>e.data.name).each(function(e){let t=V(this),s=e.x1-e.x0,f=e.y1-e.y0,y=t.node(),S=4,w=s-2*S,u=f-2*S;if(w<10||u<10){t.style("display","none");return}let i=parseInt(t.style("font-size"),10),D=8,b=28,h=.6,x=6,z=2;for(;y.getComputedTextLength()>w&&i>D;)i--,t.style("font-size",`${i}px`);let N=Math.max(x,Math.min(b,Math.round(i*h))),H=i+z+N;for(;H>u&&i>D&&(i--,N=Math.max(x,Math.min(b,Math.round(i*h))),!(Nu;t.style("font-size",`${i}px`),(y.getComputedTextLength()>w||i(t.x1-t.x0)/2).attr("y",function(t){return(t.y1-t.y0)/2}).attr("style",t=>{let s="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+B(t.data.name)+";",f=v({cssCompiledStyles:t.data.cssCompiledStyles});return s+f.labelStyles.replace("color:","fill:")}).attr("clip-path",(t,s)=>`url(#clip-${a}-${s})`).text(t=>t.value?C(t.value):"").each(function(t){let s=V(this),f=this.parentNode;if(!f){s.style("display","none");return}let y=V(f).select(".treemapLabel");if(y.empty()||y.style("display")==="none"){s.style("display","none");return}let S=parseFloat(y.style("font-size")),w=28,u=.6,i=6,D=2,b=Math.max(i,Math.min(w,Math.round(S*u)));s.style("font-size",`${b}px`);let x=(t.y1-t.y0)/2+S/2+D;s.attr("y",x);let z=t.x1-t.x0,Te=t.y1-t.y0-4,Ce=z-8;s.node().getComputedTextLength()>Ce||x+b>Te||b{let a=I($e,m);return` - .treemapNode.section { - stroke: ${a.sectionStrokeColor}; - stroke-width: ${a.sectionStrokeWidth}; - fill: ${a.sectionFillColor}; - } - .treemapNode.leaf { - stroke: ${a.leafStrokeColor}; - stroke-width: ${a.leafStrokeWidth}; - fill: ${a.leafFillColor}; - } - .treemapLabel { - fill: ${a.labelColor}; - font-size: ${a.labelFontSize}; - } - .treemapValue { - fill: ${a.valueColor}; - font-size: ${a.valueFontSize}; - } - .treemapTitle { - fill: ${a.titleColor}; - font-size: ${a.titleFontSize}; - } - `},"getStyles"),ue=Fe;var pt={parser:O,get db(){return new $},renderer:ge,styles:ue};export{pt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-QXG6HAR7.mjs b/assets/mermaid/chunks/mermaid.esm.min/diagram-QXG6HAR7.mjs new file mode 100644 index 0000000..f82c4a0 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-QXG6HAR7.mjs @@ -0,0 +1,24 @@ +import{a as A}from"./chunk-JQRUD6KW.mjs";import{a as j}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{a as E}from"./chunk-LRIF4GLE.mjs";import{o as b}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{O as x,S as B,T as C,U as S,V as $,W as v,X as T,Y as W,j as P,t as w}from"./chunk-67TQ5CYL.mjs";import{b as h}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as c}from"./chunk-AQ6EADP3.mjs";var O=P.packet,y=class{constructor(){this.packet=[];this.setAccTitle=C;this.getAccTitle=S;this.setDiagramTitle=T;this.getDiagramTitle=W;this.getAccDescription=v;this.setAccDescription=$}static{c(this,"PacketDB")}getConfig(){let t=b({...O,...w().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){B(),this.packet=[]}};var _=1e4,V=c((e,t)=>{A(e,t);let a=-1,o=[],s=1,{bitsPerRow:l}=t.getConfig();for(let{start:r,end:n,bits:d,label:p}of e.blocks){if(r!==void 0&&n!==void 0&&n{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*a)return[e,void 0];let o=t*a-1,s=t*a;return[{start:e.start,end:o,label:e.label,bits:o-e.start},{start:s,end:e.end,label:e.label,bits:e.end-s}]},"getNextFittingBlock"),D={parser:{yy:void 0},parse:c(async e=>{let t=await j("packet",e),a=D.parser?.yy;if(!(a instanceof y))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");h.debug(t),V(t,a)},"parse")};var L=c((e,t,a,o)=>{let s=o.db,l=s.getConfig(),{rowHeight:r,paddingY:n,bitWidth:d,bitsPerRow:p}=l,m=s.getPacket(),i=s.getDiagramTitle(),g=r+n,f=g*(m.length+1)-(i?0:r),k=d*p+2,u=E(t);u.attr("viewBox",`0 0 ${k} ${f}`),x(u,f,k,l.useMaxWidth);for(let[G,R]of m.entries())M(u,R,G,l);u.append("text").text(i).attr("x",k/2).attr("y",f-g/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),M=c((e,t,a,{rowHeight:o,paddingX:s,paddingY:l,bitWidth:r,bitsPerRow:n,showBits:d})=>{let p=e.append("g"),m=a*(o+l)+l;for(let i of t){let g=i.start%n*r+1,f=(i.end-i.start+1)*r-s;if(p.append("rect").attr("x",g).attr("y",m).attr("width",f).attr("height",o).attr("class","packetBlock"),p.append("text").attr("x",g+f/2).attr("y",m+o/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(i.label),!d)continue;let k=i.end===i.start,u=m-2;p.append("text").attr("x",g+(k?f/2:0)).attr("y",u).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(i.start),k||p.append("text").attr("x",g+f).attr("y",u).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(i.end)}},"drawWord"),F={draw:L};var N={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},z=c(({packet:e}={})=>{let t=b(N,e);return` + .packetByte { + font-size: ${t.byteFontSize}; + } + .packetByte.start { + fill: ${t.startByteColor}; + } + .packetByte.end { + fill: ${t.endByteColor}; + } + .packetLabel { + fill: ${t.labelColor}; + font-size: ${t.labelFontSize}; + } + .packetTitle { + fill: ${t.titleColor}; + font-size: ${t.titleFontSize}; + } + .packetBlock { + stroke: ${t.blockStrokeColor}; + stroke-width: ${t.blockStrokeWidth}; + fill: ${t.blockFillColor}; + } + `},"styles");var gt={parser:D,get db(){return new y},renderer:F,styles:z};export{gt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-SUXTHJMA.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/diagram-QXG6HAR7.mjs.map similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/diagram-SUXTHJMA.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/diagram-QXG6HAR7.mjs.map index 5b7d090..607bc39 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/diagram-SUXTHJMA.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-QXG6HAR7.mjs.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../src/diagrams/packet/db.ts", "../../../src/diagrams/packet/parser.ts", "../../../src/diagrams/packet/renderer.ts", "../../../src/diagrams/packet/styles.ts", "../../../src/diagrams/packet/diagram.ts"], "sourcesContent": ["import { getConfig as commonGetConfig } from '../../config.js';\nimport type { PacketDiagramConfig } from '../../config.type.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { PacketWord } from './types.js';\nconst DEFAULT_PACKET_CONFIG: Required = DEFAULT_CONFIG.packet;\n\nexport class PacketDB implements DiagramDB {\n private packet: PacketWord[] = [];\n\n public getConfig() {\n const config = cleanAndMerge({\n ...DEFAULT_PACKET_CONFIG,\n ...commonGetConfig().packet,\n });\n if (config.showBits) {\n config.paddingY += 10;\n }\n return config;\n }\n\n public getPacket() {\n return this.packet;\n }\n\n public pushWord(word: PacketWord) {\n if (word.length > 0) {\n this.packet.push(word);\n }\n }\n\n public clear() {\n commonClear();\n this.packet = [];\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getAccDescription = getAccDescription;\n public setAccDescription = setAccDescription;\n}\n", "import type { Packet } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { PacketDB } from './db.js';\nimport type { PacketBlock, PacketWord } from './types.js';\n\nconst maxPacketSize = 10_000;\n\nconst populate = (ast: Packet, db: PacketDB) => {\n populateCommonDb(ast, db);\n let lastBit = -1;\n let word: PacketWord = [];\n let row = 1;\n const { bitsPerRow } = db.getConfig();\n\n for (let { start, end, bits, label } of ast.blocks) {\n if (start !== undefined && end !== undefined && end < start) {\n throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`);\n }\n start ??= lastBit + 1;\n if (start !== lastBit + 1) {\n throw new Error(\n `Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${\n lastBit + 1\n }.`\n );\n }\n if (bits === 0) {\n throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`);\n }\n end ??= start + (bits ?? 1) - 1;\n bits ??= end - start + 1;\n lastBit = end;\n log.debug(`Packet block ${start} - ${lastBit} with label ${label}`);\n\n while (word.length <= bitsPerRow + 1 && db.getPacket().length < maxPacketSize) {\n const [block, nextBlock] = getNextFittingBlock({ start, end, bits, label }, row, bitsPerRow);\n word.push(block);\n if (block.end + 1 === row * bitsPerRow) {\n db.pushWord(word);\n word = [];\n row++;\n }\n if (!nextBlock) {\n break;\n }\n ({ start, end, bits, label } = nextBlock);\n }\n }\n db.pushWord(word);\n};\n\nconst getNextFittingBlock = (\n block: PacketBlock,\n row: number,\n bitsPerRow: number\n): [Required, PacketBlock | undefined] => {\n if (block.start === undefined) {\n throw new Error('start should have been set during first phase');\n }\n if (block.end === undefined) {\n throw new Error('end should have been set during first phase');\n }\n\n if (block.start > block.end) {\n throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`);\n }\n\n if (block.end + 1 <= row * bitsPerRow) {\n return [block as Required, undefined];\n }\n\n const rowEnd = row * bitsPerRow - 1;\n const rowStart = row * bitsPerRow;\n return [\n {\n start: block.start,\n end: rowEnd,\n label: block.label,\n bits: rowEnd - block.start,\n },\n {\n start: rowStart,\n end: block.end,\n label: block.label,\n bits: block.end - rowStart,\n },\n ];\n};\n\nexport const parser: ParserDefinition = {\n // @ts-expect-error - PacketDB is not assignable to DiagramDB\n parser: { yy: undefined },\n parse: async (input: string): Promise => {\n const ast: Packet = await parse('packet', input);\n const db = parser.parser?.yy;\n if (!(db instanceof PacketDB)) {\n throw new Error(\n 'parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.'\n );\n }\n log.debug(ast);\n populate(ast, db);\n },\n};\n", "import type { Diagram } from '../../Diagram.js';\nimport type { PacketDiagramConfig } from '../../config.type.js';\nimport type { DiagramRenderer, DrawDefinition, SVG, SVGGroup } from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { PacketDB, PacketWord } from './types.js';\n\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n const db = diagram.db as PacketDB;\n const config = db.getConfig();\n const { rowHeight, paddingY, bitWidth, bitsPerRow } = config;\n const words = db.getPacket();\n const title = db.getDiagramTitle();\n const totalRowHeight = rowHeight + paddingY;\n const svgHeight = totalRowHeight * (words.length + 1) - (title ? 0 : rowHeight);\n const svgWidth = bitWidth * bitsPerRow + 2;\n const svg: SVG = selectSvgElement(id);\n\n svg.attr('viewBox', `0 0 ${svgWidth} ${svgHeight}`);\n configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);\n\n for (const [word, packet] of words.entries()) {\n drawWord(svg, packet, word, config);\n }\n\n svg\n .append('text')\n .text(title)\n .attr('x', svgWidth / 2)\n .attr('y', svgHeight - totalRowHeight / 2)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .attr('class', 'packetTitle');\n};\n\nconst drawWord = (\n svg: SVG,\n word: PacketWord,\n rowNumber: number,\n { rowHeight, paddingX, paddingY, bitWidth, bitsPerRow, showBits }: Required\n) => {\n const group: SVGGroup = svg.append('g');\n const wordY = rowNumber * (rowHeight + paddingY) + paddingY;\n for (const block of word) {\n const blockX = (block.start % bitsPerRow) * bitWidth + 1;\n const width = (block.end - block.start + 1) * bitWidth - paddingX;\n // Block rectangle\n group\n .append('rect')\n .attr('x', blockX)\n .attr('y', wordY)\n .attr('width', width)\n .attr('height', rowHeight)\n .attr('class', 'packetBlock');\n\n // Block label\n group\n .append('text')\n .attr('x', blockX + width / 2)\n .attr('y', wordY + rowHeight / 2)\n .attr('class', 'packetLabel')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .text(block.label);\n\n if (!showBits) {\n continue;\n }\n // Start byte count\n const isSingleBlock = block.end === block.start;\n const bitNumberY = wordY - 2;\n group\n .append('text')\n .attr('x', blockX + (isSingleBlock ? width / 2 : 0))\n .attr('y', bitNumberY)\n .attr('class', 'packetByte start')\n .attr('dominant-baseline', 'auto')\n .attr('text-anchor', isSingleBlock ? 'middle' : 'start')\n .text(block.start);\n\n // Draw end byte count if it is not the same as start byte count\n if (!isSingleBlock) {\n group\n .append('text')\n .attr('x', blockX + width)\n .attr('y', bitNumberY)\n .attr('class', 'packetByte end')\n .attr('dominant-baseline', 'auto')\n .attr('text-anchor', 'end')\n .text(block.end);\n }\n }\n};\nexport const renderer: DiagramRenderer = { draw };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport type { PacketStyleOptions } from './types.js';\n\nconst defaultPacketStyleOptions: PacketStyleOptions = {\n byteFontSize: '10px',\n startByteColor: 'black',\n endByteColor: 'black',\n labelColor: 'black',\n labelFontSize: '12px',\n titleColor: 'black',\n titleFontSize: '14px',\n blockStrokeColor: 'black',\n blockStrokeWidth: '1',\n blockFillColor: '#efefef',\n};\n\nexport const styles: DiagramStylesProvider = ({ packet }: { packet?: PacketStyleOptions } = {}) => {\n const options = cleanAndMerge(defaultPacketStyleOptions, packet);\n\n return `\n\t.packetByte {\n\t\tfont-size: ${options.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${options.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${options.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${options.labelColor};\n\t\tfont-size: ${options.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${options.titleColor};\n\t\tfont-size: ${options.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${options.blockStrokeColor};\n\t\tstroke-width: ${options.blockStrokeWidth};\n\t\tfill: ${options.blockFillColor};\n\t}\n\t`;\n};\n\nexport default styles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { PacketDB } from './db.js';\nimport { parser } from './parser.js';\nimport { renderer } from './renderer.js';\nimport { styles } from './styles.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new PacketDB();\n },\n renderer,\n styles,\n};\n"], - "mappings": "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", + "mappings": "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", "names": ["DEFAULT_PACKET_CONFIG", "defaultConfig_default", "PacketDB", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "__name", "config", "cleanAndMerge", "getConfig", "word", "clear", "maxPacketSize", "populate", "__name", "ast", "db", "populateCommonDb", "lastBit", "word", "row", "bitsPerRow", "start", "end", "bits", "label", "log", "block", "nextBlock", "getNextFittingBlock", "rowEnd", "rowStart", "parser", "input", "parse", "PacketDB", "draw", "__name", "_text", "id", "_version", "diagram", "db", "config", "rowHeight", "paddingY", "bitWidth", "bitsPerRow", "words", "title", "totalRowHeight", "svgHeight", "svgWidth", "svg", "selectSvgElement", "configureSvgSize", "word", "packet", "drawWord", "rowNumber", "paddingX", "showBits", "group", "wordY", "block", "blockX", "width", "isSingleBlock", "bitNumberY", "renderer", "defaultPacketStyleOptions", "styles", "__name", "packet", "options", "cleanAndMerge", "diagram", "parser", "PacketDB", "renderer", "styles"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-SUXTHJMA.mjs b/assets/mermaid/chunks/mermaid.esm.min/diagram-SUXTHJMA.mjs deleted file mode 100644 index 20e2870..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/diagram-SUXTHJMA.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import{a as A}from"./chunk-AEOMTBSW.mjs";import{a as j}from"./chunk-TJ4WWVTA.mjs";import"./chunk-AHTCUU5T.mjs";import"./chunk-JVPIJFVP.mjs";import"./chunk-SYGLAQYM.mjs";import"./chunk-NHJX6F6M.mjs";import"./chunk-F3E5R7LK.mjs";import"./chunk-ZX4KS3OZ.mjs";import{a as E}from"./chunk-D4HHKWPY.mjs";import{l as b}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{N as x,Q as B,R as C,S,T as $,U as v,V as T,W,j as P,s as w}from"./chunk-3UWU4A3N.mjs";import{b as h}from"./chunk-MGPAVIPZ.mjs";import"./chunk-MFSPT3DZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as c}from"./chunk-VELTKBKT.mjs";var O=P.packet,y=class{constructor(){this.packet=[];this.setAccTitle=C;this.getAccTitle=S;this.setDiagramTitle=T;this.getDiagramTitle=W;this.getAccDescription=v;this.setAccDescription=$}static{c(this,"PacketDB")}getConfig(){let t=b({...O,...w().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){B(),this.packet=[]}};var _=1e4,V=c((e,t)=>{A(e,t);let a=-1,o=[],s=1,{bitsPerRow:l}=t.getConfig();for(let{start:r,end:n,bits:d,label:p}of e.blocks){if(r!==void 0&&n!==void 0&&n{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*a)return[e,void 0];let o=t*a-1,s=t*a;return[{start:e.start,end:o,label:e.label,bits:o-e.start},{start:s,end:e.end,label:e.label,bits:e.end-s}]},"getNextFittingBlock"),D={parser:{yy:void 0},parse:c(async e=>{let t=await j("packet",e),a=D.parser?.yy;if(!(a instanceof y))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");h.debug(t),V(t,a)},"parse")};var L=c((e,t,a,o)=>{let s=o.db,l=s.getConfig(),{rowHeight:r,paddingY:n,bitWidth:d,bitsPerRow:p}=l,m=s.getPacket(),i=s.getDiagramTitle(),g=r+n,f=g*(m.length+1)-(i?0:r),k=d*p+2,u=E(t);u.attr("viewBox",`0 0 ${k} ${f}`),x(u,f,k,l.useMaxWidth);for(let[G,R]of m.entries())M(u,R,G,l);u.append("text").text(i).attr("x",k/2).attr("y",f-g/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),M=c((e,t,a,{rowHeight:o,paddingX:s,paddingY:l,bitWidth:r,bitsPerRow:n,showBits:d})=>{let p=e.append("g"),m=a*(o+l)+l;for(let i of t){let g=i.start%n*r+1,f=(i.end-i.start+1)*r-s;if(p.append("rect").attr("x",g).attr("y",m).attr("width",f).attr("height",o).attr("class","packetBlock"),p.append("text").attr("x",g+f/2).attr("y",m+o/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(i.label),!d)continue;let k=i.end===i.start,u=m-2;p.append("text").attr("x",g+(k?f/2:0)).attr("y",u).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(i.start),k||p.append("text").attr("x",g+f).attr("y",u).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(i.end)}},"drawWord"),F={draw:L};var N={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},z=c(({packet:e}={})=>{let t=b(N,e);return` - .packetByte { - font-size: ${t.byteFontSize}; - } - .packetByte.start { - fill: ${t.startByteColor}; - } - .packetByte.end { - fill: ${t.endByteColor}; - } - .packetLabel { - fill: ${t.labelColor}; - font-size: ${t.labelFontSize}; - } - .packetTitle { - fill: ${t.titleColor}; - font-size: ${t.titleFontSize}; - } - .packetBlock { - stroke: ${t.blockStrokeColor}; - stroke-width: ${t.blockStrokeWidth}; - fill: ${t.blockFillColor}; - } - `},"styles");var gt={parser:D,get db(){return new y},renderer:F,styles:z};export{gt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-WEQXMOUZ.mjs b/assets/mermaid/chunks/mermaid.esm.min/diagram-WEQXMOUZ.mjs new file mode 100644 index 0000000..939b5c6 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-WEQXMOUZ.mjs @@ -0,0 +1,10 @@ +import{a as v}from"./chunk-T5OCTHI4.mjs";import{a as N}from"./chunk-JQRUD6KW.mjs";import{a as E}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{a as R}from"./chunk-LRIF4GLE.mjs";import{o as D}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{O as b,S as T,T as S,U as C,V as x,W as k,X as B,Y as G,j as u,t as y}from"./chunk-67TQ5CYL.mjs";import{b as h}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as r}from"./chunk-AQ6EADP3.mjs";var d=new v(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",children:[]}]})),I=r(()=>{d.reset(),T()},"clear"),P=r(()=>d.records.stack[0],"getRoot"),X=r(()=>d.records.cnt,"getCount"),z=u.treeView,F=r(()=>D(z,y().treeView),"getConfig"),H=r((e,t)=>{for(;e<=d.records.stack[d.records.stack.length-1].level;)d.records.stack.pop();let i={id:d.records.cnt++,level:e,name:t,children:[]};d.records.stack[d.records.stack.length-1].children.push(i),d.records.stack.push(i)},"addNode"),M={clear:I,addNode:H,getRoot:P,getCount:X,getConfig:F,getAccTitle:C,getAccDescription:k,getDiagramTitle:G,setAccDescription:x,setAccTitle:S,setDiagramTitle:B},w=M;var W=r(e=>{N(e,w),e.nodes.map(t=>w.addNode(t.indent?parseInt(t.indent):0,t.name))},"populate"),j={parse:r(async e=>{let t=await E("treeView",e);h.debug(t),W(t)},"parse")};var L=r((e,t,i,n,s)=>{let l=n.append("text").text(i.name).attr("dominant-baseline","middle").attr("class","treeView-node-label"),{height:c,width:o}=l.node().getBBox(),m=c+s.paddingY*2,a=o+s.paddingX*2;l.attr("x",e+s.paddingX),l.attr("y",t+m/2),i.BBox={x:e,y:t,width:a,height:m}},"positionLabel"),A=r((e,t,i,n,s,l)=>e.append("line").attr("x1",t).attr("y1",i).attr("x2",n).attr("y2",s).attr("stroke-width",l).attr("class","treeView-node-line"),"positionLine"),Y=r((e,t,i)=>{let n=0,s=0,l=r((o,m,a,g)=>{let f=g*(a.rowIndent+a.paddingX);L(f,n,m,o,a);let{height:p,width:V}=m.BBox;A(o,f-a.rowIndent,n+p/2,f,n+p/2,a.lineThickness),s=Math.max(s,f+V),n+=p},"drawNode"),c=r((o,m=0)=>{l(e,o,i,m),o.children.forEach(p=>{c(p,m+1)});let{x:a,y:g,height:f}=o.BBox;if(o.children.length){let{y:p,height:V}=o.children[o.children.length-1].BBox;A(e,a+i.paddingX,g+f,a+i.paddingX,p+V/2+i.lineThickness/2,i.lineThickness)}},"processNode");return c(t),{totalHeight:n,totalWidth:s}},"drawTree"),_=r((e,t,i,n)=>{h.debug(`Rendering treeView diagram +`+e);let s=n.db,l=s.getRoot(),c=s.getConfig(),o=R(t),m=o.append("g");m.attr("class","tree-view");let{totalHeight:a,totalWidth:g}=Y(m,l,c);o.attr("viewBox",`-${c.lineThickness/2} 0 ${g} ${a}`),b(o,a,g,c.useMaxWidth)},"draw"),O={draw:_},q=O;var U={labelFontSize:"16px",labelColor:"black",lineColor:"black"},J=r(({treeView:e})=>{let{labelFontSize:t,labelColor:i,lineColor:n}=D(U,e);return` + .treeView-node-label { + font-size: ${t}; + fill: ${i}; + } + .treeView-node-line { + stroke: ${n}; + } + `},"styles"),$=J;var Te={db:w,renderer:q,parser:j,styles:$};export{Te as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/diagram-WEQXMOUZ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/diagram-WEQXMOUZ.mjs.map new file mode 100644 index 0000000..88181d2 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/diagram-WEQXMOUZ.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/treeView/db.ts", "../../../src/diagrams/treeView/parser.ts", "../../../src/diagrams/treeView/renderer.ts", "../../../src/diagrams/treeView/styles.ts", "../../../src/diagrams/treeView/diagram.ts"], + "sourcesContent": ["import type { TreeViewDiagramConfig } from '../../config.type.js';\nimport type { TreeViewDB, Node } from './types.js';\nimport { getConfig as getCommonConfig } from '../../config.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { ImperativeState } from '../../utils/imperativeState.js';\n\ninterface TreeViewState {\n cnt: number;\n stack: Node[];\n}\n\nconst state = new ImperativeState(() => ({\n cnt: 1,\n stack: [\n {\n id: 0,\n level: -1,\n name: '/',\n children: [],\n },\n ],\n}));\n\nconst clear = () => {\n state.reset();\n commonClear();\n};\n\nconst getRoot = () => {\n return state.records.stack[0];\n};\n\nconst getCount = () => state.records.cnt;\n\nconst defaultConfig: Required = DEFAULT_CONFIG.treeView;\n\nconst getConfig = (): Required => {\n return cleanAndMerge(defaultConfig, getCommonConfig().treeView);\n};\n\nconst addNode = (level: number, name: string) => {\n while (level <= state.records.stack[state.records.stack.length - 1].level) {\n state.records.stack.pop();\n }\n const node = {\n id: state.records.cnt++,\n level,\n name,\n children: [],\n };\n state.records.stack[state.records.stack.length - 1].children.push(node);\n state.records.stack.push(node);\n};\n\nconst db: TreeViewDB = {\n clear,\n addNode,\n getRoot,\n getCount,\n getConfig,\n getAccTitle,\n getAccDescription,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n};\n\nexport default db;\n", "import type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport db from './db.js';\nimport { parse, type TreeView } from '@mermaid-js/parser';\n\nconst populate = (ast: TreeView) => {\n populateCommonDb(ast, db);\n ast.nodes.map((node) => db.addNode(node.indent ? parseInt(node.indent) : 0, node.name));\n};\n\nexport const parser: ParserDefinition = {\n parse: async (input: string): Promise => {\n const ast = await parse('treeView', input);\n log.debug(ast);\n populate(ast);\n },\n};\n", "import type { DiagramRenderer, DrawDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport type { D3SVGElement, TreeViewDB } from './types.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { TreeViewDiagramConfig } from '../../config.type.js';\nimport type { Node } from './types.js';\n\nconst positionLabel = (\n x: number,\n y: number,\n node: Node,\n domElem: D3SVGElement,\n config: Required\n) => {\n const label = domElem\n .append('text')\n .text(node.name)\n .attr('dominant-baseline', 'middle')\n .attr('class', 'treeView-node-label');\n const { height: labelHeight, width: labelWidth } = label.node()!.getBBox();\n const height = labelHeight + config.paddingY * 2;\n const width = labelWidth + config.paddingX * 2;\n label.attr('x', x + config.paddingX);\n label.attr('y', y + height / 2);\n node.BBox = {\n x,\n y,\n width,\n height,\n };\n};\n\nconst positionLine = (\n domElem: D3SVGElement,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n lineThickness: number\n) => {\n return domElem\n .append('line')\n .attr('x1', x1)\n .attr('y1', y1)\n .attr('x2', x2)\n .attr('y2', y2)\n .attr('stroke-width', lineThickness)\n .attr('class', 'treeView-node-line');\n};\n\nconst drawTree = (\n elem: D3SVGElement,\n root: Node,\n config: Required\n) => {\n let totalHeight = 0;\n let totalWidth = 0;\n const drawNode = (\n elem: D3SVGElement,\n node: Node,\n config: Required,\n depth: number\n ) => {\n const indent = depth * (config.rowIndent + config.paddingX);\n positionLabel(indent, totalHeight, node, elem, config);\n const { height, width } = node.BBox!;\n positionLine(\n elem,\n indent - config.rowIndent,\n totalHeight + height / 2,\n indent,\n totalHeight + height / 2,\n config.lineThickness\n );\n\n totalWidth = Math.max(totalWidth, indent + width);\n totalHeight += height;\n };\n\n const processNode = (node: Node, depth = 0) => {\n drawNode(elem, node, config, depth);\n node.children.forEach((child) => {\n processNode(child, depth + 1);\n });\n const { x, y, height } = node.BBox!;\n if (node.children.length) {\n const { y: endY, height: endHeight } = node.children[node.children.length - 1].BBox!;\n positionLine(\n elem,\n x + config.paddingX,\n y + height,\n x + config.paddingX,\n endY + endHeight / 2 + config.lineThickness / 2,\n config.lineThickness\n );\n }\n };\n\n processNode(root);\n return { totalHeight, totalWidth };\n};\n\nconst draw: DrawDefinition = (text, id, _ver, diagObj) => {\n log.debug('Rendering treeView diagram\\n' + text);\n\n const db = diagObj.db as TreeViewDB;\n const root = db.getRoot();\n const config = db.getConfig();\n\n const svg = selectSvgElement(id);\n const treeElem = svg.append('g');\n treeElem.attr('class', 'tree-view');\n\n const { totalHeight, totalWidth } = drawTree(treeElem, root, config);\n /* -${config.lineThickness/2} is required for a line with x coordinate = 0\n as there is overflow to the left due to the line being centered */\n svg.attr('viewBox', `-${config.lineThickness / 2} 0 ${totalWidth} ${totalHeight}`);\n configureSvgSize(svg, totalHeight, totalWidth, config.useMaxWidth);\n};\n\nconst renderer: DiagramRenderer = {\n draw,\n};\n\nexport default renderer;\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport type { TreeViewDiagramStyles } from './types.js';\n\nconst defaultTreeViewDiagramStyles: Required = {\n labelFontSize: '16px',\n labelColor: 'black',\n lineColor: 'black',\n};\n\nconst styles: DiagramStylesProvider = ({\n treeView,\n}: {\n treeView?: TreeViewDiagramStyles;\n}): string => {\n const { labelFontSize, labelColor, lineColor } = cleanAndMerge(\n defaultTreeViewDiagramStyles,\n treeView\n );\n return `\n .treeView-node-label {\n font-size: ${labelFontSize};\n fill: ${labelColor};\n }\n .treeView-node-line {\n stroke: ${lineColor};\n }\n `;\n};\n\nexport default styles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { parser } from './parser.js';\nimport db from './db.js';\nimport renderer from './renderer.js';\nimport styles from './styles.js';\n\nexport const diagram: DiagramDefinition = {\n db,\n renderer,\n parser,\n styles,\n};\n"], + "mappings": "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", + "names": ["state", "ImperativeState", "clear", "__name", "getRoot", "getCount", "defaultConfig", "defaultConfig_default", "getConfig", "cleanAndMerge", "addNode", "level", "name", "node", "db", "getAccTitle", "getAccDescription", "getDiagramTitle", "setAccDescription", "setAccTitle", "setDiagramTitle", "db_default", "populate", "__name", "ast", "populateCommonDb", "db_default", "node", "parser", "input", "parse", "log", "positionLabel", "__name", "x", "y", "node", "domElem", "config", "label", "labelHeight", "labelWidth", "height", "width", "positionLine", "x1", "y1", "x2", "y2", "lineThickness", "drawTree", "elem", "root", "totalHeight", "totalWidth", "drawNode", "depth", "indent", "processNode", "child", "endY", "endHeight", "draw", "text", "id", "_ver", "diagObj", "log", "db", "svg", "selectSvgElement", "treeElem", "configureSvgSize", "renderer", "renderer_default", "defaultTreeViewDiagramStyles", "styles", "__name", "treeView", "labelFontSize", "labelColor", "lineColor", "cleanAndMerge", "styles_default", "diagram", "db_default", "renderer_default", "parser", "styles_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L2NYR2MQ.mjs b/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L2NYR2MQ.mjs deleted file mode 100644 index a4c26c4..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L2NYR2MQ.mjs +++ /dev/null @@ -1,70 +0,0 @@ -import{a as Ke}from"./chunk-TBF5ZNIQ.mjs";import{a as Ze}from"./chunk-T4EQAHMB.mjs";import{b as je,c as Ue}from"./chunk-SK62O5VA.mjs";import"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import{m as Ge,p as ze}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{Q as Le,R as we,S as Ve,T as Me,U as Be,V as Fe,W as Ye,Y as w,b as ve,c as De}from"./chunk-3UWU4A3N.mjs";import{b as C,h as Pe}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as h,d as et}from"./chunk-VELTKBKT.mjs";var ge=(function(){var i=h(function(R,n,a,c){for(a=a||{},c=R.length;c--;a[R[c]]=n);return a},"o"),s=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],l=[1,10],d=[1,11],o=[1,12],u=[1,13],f=[1,23],y=[1,24],m=[1,25],V=[1,26],W=[1,27],T=[1,19],se=[1,28],Q=[1,29],S=[1,20],x=[1,18],M=[1,21],B=[1,22],re=[1,36],ne=[1,37],ae=[1,38],ce=[1,39],le=[1,40],F=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],O=[1,45],N=[1,46],Y=[1,55],P=[40,48,50,51,52,70,71],G=[1,66],z=[1,64],A=[1,61],K=[1,65],j=[1,67],X=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],_e=[65,66,67,68,69],me=[1,84],Ee=[1,83],Te=[1,81],Se=[1,82],Oe=[6,10,42,47],D=[6,10,13,41,42,47,48,49],q=[1,92],H=[1,91],J=[1,90],U=[19,58],Ne=[1,101],Ae=[1,100],oe=[19,58,60,62],he={trace:h(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,attributeKeyType:59,",":60,ATTRIBUTE_KEY:61,COMMENT:62,cardinality:63,relType:64,ZERO_OR_ONE:65,ZERO_OR_MORE:66,ONE_OR_MORE:67,ONLY_ONE:68,MD_PARENT:69,NON_IDENTIFYING:70,IDENTIFYING:71,WORD:72,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",60:",",61:"ATTRIBUTE_KEY",62:"COMMENT",65:"ZERO_OR_ONE",66:"ZERO_OR_MORE",67:"ONE_OR_MORE",68:"ONLY_ONE",69:"MD_PARENT",70:"NON_IDENTIFYING",71:"IDENTIFYING",72:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,1],[14,1]],performAction:h(function(n,a,c,r,p,e,Z){var t=e.length-1;switch(p){case 1:break;case 2:this.$=[];break;case 3:e[t-1].push(e[t]),this.$=e[t-1];break;case 4:case 5:this.$=e[t];break;case 6:case 7:this.$=[];break;case 8:r.addEntity(e[t-4]),r.addEntity(e[t-2]),r.addRelationship(e[t-4],e[t],e[t-2],e[t-3]);break;case 9:r.addEntity(e[t-8]),r.addEntity(e[t-4]),r.addRelationship(e[t-8],e[t],e[t-4],e[t-5]),r.setClass([e[t-8]],e[t-6]),r.setClass([e[t-4]],e[t-2]);break;case 10:r.addEntity(e[t-6]),r.addEntity(e[t-2]),r.addRelationship(e[t-6],e[t],e[t-2],e[t-3]),r.setClass([e[t-6]],e[t-4]);break;case 11:r.addEntity(e[t-6]),r.addEntity(e[t-4]),r.addRelationship(e[t-6],e[t],e[t-4],e[t-5]),r.setClass([e[t-4]],e[t-2]);break;case 12:r.addEntity(e[t-3]),r.addAttributes(e[t-3],e[t-1]);break;case 13:r.addEntity(e[t-5]),r.addAttributes(e[t-5],e[t-1]),r.setClass([e[t-5]],e[t-3]);break;case 14:r.addEntity(e[t-2]);break;case 15:r.addEntity(e[t-4]),r.setClass([e[t-4]],e[t-2]);break;case 16:r.addEntity(e[t]);break;case 17:r.addEntity(e[t-2]),r.setClass([e[t-2]],e[t]);break;case 18:r.addEntity(e[t-6],e[t-4]),r.addAttributes(e[t-6],e[t-1]);break;case 19:r.addEntity(e[t-8],e[t-6]),r.addAttributes(e[t-8],e[t-1]),r.setClass([e[t-8]],e[t-3]);break;case 20:r.addEntity(e[t-5],e[t-3]);break;case 21:r.addEntity(e[t-7],e[t-5]),r.setClass([e[t-7]],e[t-2]);break;case 22:r.addEntity(e[t-3],e[t-1]);break;case 23:r.addEntity(e[t-5],e[t-3]),r.setClass([e[t-5]],e[t]);break;case 24:case 25:this.$=e[t].trim(),r.setAccTitle(this.$);break;case 26:case 27:this.$=e[t].trim(),r.setAccDescription(this.$);break;case 32:r.setDirection("TB");break;case 33:r.setDirection("BT");break;case 34:r.setDirection("RL");break;case 35:r.setDirection("LR");break;case 36:this.$=e[t-3],r.addClass(e[t-2],e[t-1]);break;case 37:case 38:case 59:case 67:this.$=[e[t]];break;case 39:case 40:this.$=e[t-2].concat([e[t]]);break;case 41:this.$=e[t-2],r.setClass(e[t-1],e[t]);break;case 42:this.$=e[t-3],r.addCssStyles(e[t-2],e[t-1]);break;case 43:this.$=[e[t]];break;case 44:e[t-2].push(e[t]),this.$=e[t-2];break;case 46:this.$=e[t-1]+e[t];break;case 54:case 79:case 80:this.$=e[t].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 81:this.$=e[t];break;case 60:e[t].push(e[t-1]),this.$=e[t];break;case 61:this.$={type:e[t-1],name:e[t]};break;case 62:this.$={type:e[t-2],name:e[t-1],keys:e[t]};break;case 63:this.$={type:e[t-2],name:e[t-1],comment:e[t]};break;case 64:this.$={type:e[t-3],name:e[t-2],keys:e[t-1],comment:e[t]};break;case 65:case 66:case 69:this.$=e[t];break;case 68:e[t-2].push(e[t]),this.$=e[t-2];break;case 70:this.$=e[t].replace(/"/g,"");break;case 71:this.$={cardA:e[t],relType:e[t-1],cardB:e[t-2]};break;case 72:this.$=r.Cardinality.ZERO_OR_ONE;break;case 73:this.$=r.Cardinality.ZERO_OR_MORE;break;case 74:this.$=r.Cardinality.ONE_OR_MORE;break;case 75:this.$=r.Cardinality.ONLY_ONE;break;case 76:this.$=r.Cardinality.MD_PARENT;break;case 77:this.$=r.Identification.NON_IDENTIFYING;break;case 78:this.$=r.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},i(s,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:l,24:d,26:o,28:u,29:14,30:15,31:16,32:17,33:f,34:y,35:m,36:V,37:W,40:T,43:se,44:Q,48:S,50:x,51:M,52:B},i(s,[2,7],{1:[2,1]}),i(s,[2,3]),{9:30,11:9,22:l,24:d,26:o,28:u,29:14,30:15,31:16,32:17,33:f,34:y,35:m,36:V,37:W,40:T,43:se,44:Q,48:S,50:x,51:M,52:B},i(s,[2,5]),i(s,[2,6]),i(s,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:re,66:ne,67:ae,68:ce,69:le}),{23:[1,41]},{25:[1,42]},{27:[1,43]},i(s,[2,27]),i(s,[2,28]),i(s,[2,29]),i(s,[2,30]),i(s,[2,31]),i(F,[2,54]),i(F,[2,55]),i(F,[2,56]),i(F,[2,57]),i(F,[2,58]),i(s,[2,32]),i(s,[2,33]),i(s,[2,34]),i(s,[2,35]),{16:44,40:O,41:N},{16:47,40:O,41:N},{16:48,40:O,41:N},i(s,[2,4]),{11:49,40:T,48:S,50:x,51:M,52:B},{16:50,40:O,41:N},{18:51,19:[1,52],53:53,54:54,58:Y},{11:56,40:T,48:S,50:x,51:M,52:B},{64:57,70:[1,58],71:[1,59]},i(P,[2,72]),i(P,[2,73]),i(P,[2,74]),i(P,[2,75]),i(P,[2,76]),i(s,[2,24]),i(s,[2,25]),i(s,[2,26]),{13:G,38:60,41:z,42:A,45:62,46:63,48:K,49:j},i(X,[2,37]),i(X,[2,38]),{16:68,40:O,41:N,42:A},{13:G,38:69,41:z,42:A,45:62,46:63,48:K,49:j},{13:[1,70],15:[1,71]},i(s,[2,17],{63:35,12:72,17:[1,73],42:A,65:re,66:ne,67:ae,68:ce,69:le}),{19:[1,74]},i(s,[2,14]),{18:75,19:[2,59],53:53,54:54,58:Y},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:re,66:ne,67:ae,68:ce,69:le},i(_e,[2,77]),i(_e,[2,78]),{6:me,10:Ee,39:80,42:Te,47:Se},{40:[1,85],41:[1,86]},i(Oe,[2,43],{46:87,13:G,41:z,48:K,49:j}),i(D,[2,45]),i(D,[2,50]),i(D,[2,51]),i(D,[2,52]),i(D,[2,53]),i(s,[2,41],{42:A}),{6:me,10:Ee,39:88,42:Te,47:Se},{14:89,40:q,50:H,72:J},{16:93,40:O,41:N},{11:94,40:T,48:S,50:x,51:M,52:B},{18:95,19:[1,96],53:53,54:54,58:Y},i(s,[2,12]),{19:[2,60]},i(U,[2,61],{56:97,57:98,59:99,61:Ne,62:Ae}),i([19,58,61,62],[2,66]),i(s,[2,22],{15:[1,103],17:[1,102]}),i([40,48,50,51,52],[2,71]),i(s,[2,36]),{13:G,41:z,45:104,46:63,48:K,49:j},i(s,[2,47]),i(s,[2,48]),i(s,[2,49]),i(X,[2,39]),i(X,[2,40]),i(D,[2,46]),i(s,[2,42]),i(s,[2,8]),i(s,[2,79]),i(s,[2,80]),i(s,[2,81]),{13:[1,105],42:A},{13:[1,107],15:[1,106]},{19:[1,108]},i(s,[2,15]),i(U,[2,62],{57:109,60:[1,110],62:Ae}),i(U,[2,63]),i(oe,[2,67]),i(U,[2,70]),i(oe,[2,69]),{18:111,19:[1,112],53:53,54:54,58:Y},{16:113,40:O,41:N},i(Oe,[2,44],{46:87,13:G,41:z,48:K,49:j}),{14:114,40:q,50:H,72:J},{16:115,40:O,41:N},{14:116,40:q,50:H,72:J},i(s,[2,13]),i(U,[2,64]),{59:117,61:Ne},{19:[1,118]},i(s,[2,20]),i(s,[2,23],{17:[1,119],42:A}),i(s,[2,11]),{13:[1,120],42:A},i(s,[2,10]),i(oe,[2,68]),i(s,[2,18]),{18:121,19:[1,122],53:53,54:54,58:Y},{14:123,40:q,50:H,72:J},{19:[1,124]},i(s,[2,21]),i(s,[2,9]),i(s,[2,19])],defaultActions:{55:[2,65],75:[2,60]},parseError:h(function(n,a){if(a.recoverable)this.trace(n);else{var c=new Error(n);throw c.hash=a,c}},"parseError"),parse:h(function(n){var a=this,c=[0],r=[],p=[null],e=[],Z=this.table,t="",$=0,Re=0,Ce=0,qe=2,xe=1,He=e.slice.call(arguments,1),b=Object.create(this.lexer),I={yy:{}};for(var de in this.yy)Object.prototype.hasOwnProperty.call(this.yy,de)&&(I.yy[de]=this.yy[de]);b.setInput(n,I.yy),I.yy.lexer=b,I.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var pe=b.yylloc;e.push(pe);var Je=b.options&&b.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function rt(k){c.length=c.length-2*k,p.length=p.length-k,e.length=e.length-k}h(rt,"popStack");function $e(){var k;return k=r.pop()||b.lex()||xe,typeof k!="number"&&(k instanceof Array&&(r=k,k=r.pop()),k=a.symbols_[k]||k),k}h($e,"lex");for(var g,be,v,_,nt,fe,L={},ee,E,Ie,te;;){if(v=c[c.length-1],this.defaultActions[v]?_=this.defaultActions[v]:((g===null||typeof g>"u")&&(g=$e()),_=Z[v]&&Z[v][g]),typeof _>"u"||!_.length||!_[0]){var ye="";te=[];for(ee in Z[v])this.terminals_[ee]&&ee>qe&&te.push("'"+this.terminals_[ee]+"'");b.showPosition?ye="Parse error on line "+($+1)+`: -`+b.showPosition()+` -Expecting `+te.join(", ")+", got '"+(this.terminals_[g]||g)+"'":ye="Parse error on line "+($+1)+": Unexpected "+(g==xe?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(ye,{text:b.match,token:this.terminals_[g]||g,line:b.yylineno,loc:pe,expected:te})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+g);switch(_[0]){case 1:c.push(g),p.push(b.yytext),e.push(b.yylloc),c.push(_[1]),g=null,be?(g=be,be=null):(Re=b.yyleng,t=b.yytext,$=b.yylineno,pe=b.yylloc,Ce>0&&Ce--);break;case 2:if(E=this.productions_[_[1]][1],L.$=p[p.length-E],L._$={first_line:e[e.length-(E||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(E||1)].first_column,last_column:e[e.length-1].last_column},Je&&(L._$.range=[e[e.length-(E||1)].range[0],e[e.length-1].range[1]]),fe=this.performAction.apply(L,[t,Re,$,I.yy,_[1],p,e].concat(He)),typeof fe<"u")return fe;E&&(c=c.slice(0,-1*E*2),p=p.slice(0,-1*E),e=e.slice(0,-1*E)),c.push(this.productions_[_[1]][0]),p.push(L.$),e.push(L._$),Ie=Z[c[c.length-2]][c[c.length-1]],c.push(Ie);break;case 3:return!0}}return!0},"parse")},Xe=(function(){var R={EOF:1,parseError:h(function(a,c){if(this.yy.parser)this.yy.parser.parseError(a,c);else throw new Error(a)},"parseError"),setInput:h(function(n,a){return this.yy=a||this.yy||{},this._input=n,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:h(function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var a=n.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},"input"),unput:h(function(n){var a=n.length,c=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===r.length?this.yylloc.first_column:0)+r[r.length-c.length].length-c[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:h(function(){return this._more=!0,this},"more"),reject:h(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:h(function(n){this.unput(this.match.slice(n))},"less"),pastInput:h(function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:h(function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:h(function(){var n=this.pastInput(),a=new Array(n.length+1).join("-");return n+this.upcomingInput()+` -`+a+"^"},"showPosition"),test_match:h(function(n,a){var c,r,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),r=n[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+n[0].length},this.yytext+=n[0],this.match+=n[0],this.matches=n,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(n[0].length),this.matched+=n[0],c=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var e in p)this[e]=p[e];return!1}return!1},"test_match"),next:h(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var n,a,c,r;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),e=0;ea[0].length)){if(a=c,r=e,this.options.backtrack_lexer){if(n=this.test_match(c,p[e]),n!==!1)return n;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(n=this.test_match(a,p[r]),n!==!1?n:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:h(function(){var a=this.next();return a||this.lex()},"lex"),begin:h(function(a){this.conditionStack.push(a)},"begin"),popState:h(function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:h(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:h(function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},"topState"),pushState:h(function(a){this.begin(a)},"pushState"),stateStackSize:h(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:h(function(a,c,r,p){var e=p;switch(r){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 72;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 61;case 25:return 58;case 26:return 58;case 27:return 62;case 28:break;case 29:return this.popState(),19;break;case 30:return c.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 65;case 42:return 67;case 43:return 67;case 44:return 67;case 45:return 65;case 46:return 65;case 47:return 66;case 48:return 66;case 49:return 66;case 50:return 66;case 51:return 66;case 52:return 67;case 53:return 66;case 54:return 67;case 55:return 68;case 56:return 68;case 57:return 51;case 58:return 68;case 59:return 68;case 60:return 52;case 61:return 48;case 62:return 68;case 63:return 65;case 64:return 66;case 65:return 67;case 66:return 69;case 67:return 70;case 68:return 71;case 69:return 71;case 70:return 70;case 71:return 70;case 72:return 70;case 73:return 41;case 74:return 47;case 75:return 40;case 76:return c.yytext[0];case 77:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:[0-9]+\.[0-9]+)/i,/^(?:1(?=\s+[A-Za-z_"']))/i,/^(?:1(?=(--|\.\.|\.-|-\.)))/i,/^(?:1\b)/i,/^(?:[0-9]+)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:u(?=[\.\-\|]))/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,73,74],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,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,72,75,76,77],inclusive:!0}}};return R})();he.lexer=Xe;function ue(){this.yy={}}return h(ue,"Parser"),ue.prototype=he,he.Parser=ue,new ue})();ge.parser=ge;var We=ge;var ie=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=we;this.getAccTitle=Ve;this.setAccDescription=Me;this.getAccDescription=Be;this.setDiagramTitle=Fe;this.getDiagramTitle=Ye;this.getConfig=h(()=>w().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{h(this,"ErDB")}addEntity(s,l=""){return this.entities.has(s)?!this.entities.get(s)?.alias&&l&&(this.entities.get(s).alias=l,C.info(`Add alias '${l}' to entity '${s}'`)):(this.entities.set(s,{id:`entity-${s}-${this.entities.size}`,label:s,attributes:[],alias:l,shape:"erBox",look:w().look??"default",cssClasses:"default",cssStyles:[],labelType:"markdown"}),C.info("Added new entity :",s)),this.entities.get(s)}getEntity(s){return this.entities.get(s)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(s,l){let d=this.addEntity(s),o;for(o=l.length-1;o>=0;o--)l[o].keys||(l[o].keys=[]),l[o].comment||(l[o].comment=""),d.attributes.push(l[o]),C.debug("Added attribute ",l[o].name)}addRelationship(s,l,d,o){let u=this.entities.get(s),f=this.entities.get(d);if(!u||!f)return;let y={entityA:u.id,roleA:l,entityB:f.id,relSpec:o};this.relationships.push(y),C.debug("Added new relationship :",y)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(s){this.direction=s}getCompiledStyles(s){let l=[];for(let d of s){let o=this.classes.get(d);o?.styles&&(l=[...l,...o.styles??[]].map(u=>u.trim())),o?.textStyles&&(l=[...l,...o.textStyles??[]].map(u=>u.trim()))}return l}addCssStyles(s,l){for(let d of s){let o=this.entities.get(d);if(!l||!o)return;for(let u of l)o.cssStyles.push(u)}}addClass(s,l){s.forEach(d=>{let o=this.classes.get(d);o===void 0&&(o={id:d,styles:[],textStyles:[]},this.classes.set(d,o)),l&&l.forEach(function(u){if(/color/.exec(u)){let f=u.replace("fill","bgFill");o.textStyles.push(f)}o.styles.push(u)})})}setClass(s,l){for(let d of s){let o=this.entities.get(d);if(o)for(let u of l)o.cssClasses+=" "+u}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],Le()}getData(){let s=[],l=[],d=w();for(let u of this.entities.keys()){let f=this.entities.get(u);f&&(f.cssCompiledStyles=this.getCompiledStyles(f.cssClasses.split(" ")),s.push(f))}let o=0;for(let u of this.relationships){let f={id:ze(u.entityA,u.entityB,{prefix:"id",counter:o++}),type:"normal",curve:"basis",start:u.entityA,end:u.entityB,label:u.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:u.relSpec.cardB.toLowerCase(),arrowTypeEnd:u.relSpec.cardA.toLowerCase(),pattern:u.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:d.look,labelType:"markdown"};l.push(f)}return{nodes:s,edges:l,other:{},config:d,direction:"TB"}}};var ke={};et(ke,{draw:()=>tt});var tt=h(async function(i,s,l,d){C.info("REF0:"),C.info("Drawing er diagram (unified)",s);let{securityLevel:o,er:u,layout:f}=w(),y=d.db.getData(),m=Ke(s,o);y.type=d.type,y.layoutAlgorithm=Ue(f),y.config.flowchart.nodeSpacing=u?.nodeSpacing||140,y.config.flowchart.rankSpacing=u?.rankSpacing||80,y.direction=d.db.getDirection(),y.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],y.diagramId=s,await je(y,m),y.layoutAlgorithm==="elk"&&m.select(".edges").lower();let V=m.selectAll('[id*="-background"]');Array.from(V).length>0&&V.each(function(){let T=Pe(this),Q=T.attr("id").replace("-background",""),S=m.select(`#${CSS.escape(Q)}`);if(!S.empty()){let x=S.attr("transform");T.attr("transform",x)}});let W=8;Ge.insertTitle(m,"erDiagramTitleText",u?.titleTopMargin??25,d.db.getDiagramTitle()),Ze(m,W,"erDiagram",u?.useMaxWidth??!0)},"draw");var it=h((i,s)=>{let l=De,d=l(i,"r"),o=l(i,"g"),u=l(i,"b");return ve(d,o,u,s)},"fade"),st=h(i=>` - .entityBox { - fill: ${i.mainBkg}; - stroke: ${i.nodeBorder}; - } - - .relationshipLabelBox { - fill: ${i.tertiaryColor}; - opacity: 0.7; - background-color: ${i.tertiaryColor}; - rect { - opacity: 0.5; - } - } - - .labelBkg { - background-color: ${it(i.tertiaryColor,.5)}; - } - - .edgeLabel .label { - fill: ${i.nodeBorder}; - font-size: 14px; - } - - .label { - font-family: ${i.fontFamily}; - color: ${i.nodeTextColor||i.textColor}; - } - - .edge-pattern-dashed { - stroke-dasharray: 8,8; - } - - .node rect, - .node circle, - .node ellipse, - .node polygon - { - fill: ${i.mainBkg}; - stroke: ${i.nodeBorder}; - stroke-width: 1px; - } - - .relationshipLine { - stroke: ${i.lineColor}; - stroke-width: 1; - fill: none; - } - - .marker { - fill: none !important; - stroke: ${i.lineColor} !important; - stroke-width: 1; - } - - .edgeLabel { - background-color: ${i.edgeLabelBackground}; - } - .edgeLabel .label rect { - fill: ${i.edgeLabelBackground}; - } - .edgeLabel .label text { - fill: ${i.textColor}; - } -`,"getStyles"),Qe=st;var Ct={parser:We,get db(){return new ie},renderer:ke,styles:Qe};export{Ct as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L5TCEMPS.mjs b/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L5TCEMPS.mjs new file mode 100644 index 0000000..4ead19b --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L5TCEMPS.mjs @@ -0,0 +1,85 @@ +import{a as je}from"./chunk-6764PJDD.mjs";import{a as We}from"./chunk-ZXARS5L4.mjs";import{b as Ue,c as Ze}from"./chunk-VU6ZFW4Y.mjs";import"./chunk-7J6CGLKN.mjs";import"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-5VCL7Z4A.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import{p as Ge,s as Ke}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{S as Ve,T as we,U as Me,V as Be,W as Fe,X as Ye,Y as Pe,_ as M,b as De,c as Le}from"./chunk-67TQ5CYL.mjs";import{b as R,h as ze}from"./chunk-7W6UQGC5.mjs";import{a as h,c as it}from"./chunk-AQ6EADP3.mjs";var ke=(function(){var i=h(function(C,n,a,c){for(a=a||{},c=C.length;c--;a[C[c]]=n);return a},"o"),s=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],o=[1,10],u=[1,11],l=[1,12],p=[1,13],f=[1,23],d=[1,24],m=[1,25],W=[1,26],Q=[1,27],T=[1,19],X=[1,28],B=[1,29],L=[1,20],x=[1,18],S=[1,21],I=[1,22],ne=[1,36],ae=[1,37],oe=[1,38],ce=[1,39],le=[1,40],F=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],O=[1,45],N=[1,46],Y=[1,55],P=[40,48,50,51,52,70,71],z=[1,66],G=[1,64],A=[1,61],K=[1,65],j=[1,67],H=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],me=[65,66,67,68,69],Ee=[1,84],Te=[1,83],Se=[1,81],Oe=[1,82],Ne=[6,10,42,47],V=[6,10,13,41,42,47,48,49],q=[1,92],J=[1,91],$=[1,90],U=[19,58],Ae=[1,101],Ce=[1,100],he=[19,58,60,62],ue={trace:h(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,attributeKeyType:59,",":60,ATTRIBUTE_KEY:61,COMMENT:62,cardinality:63,relType:64,ZERO_OR_ONE:65,ZERO_OR_MORE:66,ONE_OR_MORE:67,ONLY_ONE:68,MD_PARENT:69,NON_IDENTIFYING:70,IDENTIFYING:71,WORD:72,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",60:",",61:"ATTRIBUTE_KEY",62:"COMMENT",65:"ZERO_OR_ONE",66:"ZERO_OR_MORE",67:"ONE_OR_MORE",68:"ONLY_ONE",69:"MD_PARENT",70:"NON_IDENTIFYING",71:"IDENTIFYING",72:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,1],[14,1]],performAction:h(function(n,a,c,r,b,e,Z){var t=e.length-1;switch(b){case 1:break;case 2:this.$=[];break;case 3:e[t-1].push(e[t]),this.$=e[t-1];break;case 4:case 5:this.$=e[t];break;case 6:case 7:this.$=[];break;case 8:r.addEntity(e[t-4]),r.addEntity(e[t-2]),r.addRelationship(e[t-4],e[t],e[t-2],e[t-3]);break;case 9:r.addEntity(e[t-8]),r.addEntity(e[t-4]),r.addRelationship(e[t-8],e[t],e[t-4],e[t-5]),r.setClass([e[t-8]],e[t-6]),r.setClass([e[t-4]],e[t-2]);break;case 10:r.addEntity(e[t-6]),r.addEntity(e[t-2]),r.addRelationship(e[t-6],e[t],e[t-2],e[t-3]),r.setClass([e[t-6]],e[t-4]);break;case 11:r.addEntity(e[t-6]),r.addEntity(e[t-4]),r.addRelationship(e[t-6],e[t],e[t-4],e[t-5]),r.setClass([e[t-4]],e[t-2]);break;case 12:r.addEntity(e[t-3]),r.addAttributes(e[t-3],e[t-1]);break;case 13:r.addEntity(e[t-5]),r.addAttributes(e[t-5],e[t-1]),r.setClass([e[t-5]],e[t-3]);break;case 14:r.addEntity(e[t-2]);break;case 15:r.addEntity(e[t-4]),r.setClass([e[t-4]],e[t-2]);break;case 16:r.addEntity(e[t]);break;case 17:r.addEntity(e[t-2]),r.setClass([e[t-2]],e[t]);break;case 18:r.addEntity(e[t-6],e[t-4]),r.addAttributes(e[t-6],e[t-1]);break;case 19:r.addEntity(e[t-8],e[t-6]),r.addAttributes(e[t-8],e[t-1]),r.setClass([e[t-8]],e[t-3]);break;case 20:r.addEntity(e[t-5],e[t-3]);break;case 21:r.addEntity(e[t-7],e[t-5]),r.setClass([e[t-7]],e[t-2]);break;case 22:r.addEntity(e[t-3],e[t-1]);break;case 23:r.addEntity(e[t-5],e[t-3]),r.setClass([e[t-5]],e[t]);break;case 24:case 25:this.$=e[t].trim(),r.setAccTitle(this.$);break;case 26:case 27:this.$=e[t].trim(),r.setAccDescription(this.$);break;case 32:r.setDirection("TB");break;case 33:r.setDirection("BT");break;case 34:r.setDirection("RL");break;case 35:r.setDirection("LR");break;case 36:this.$=e[t-3],r.addClass(e[t-2],e[t-1]);break;case 37:case 38:case 59:case 67:this.$=[e[t]];break;case 39:case 40:this.$=e[t-2].concat([e[t]]);break;case 41:this.$=e[t-2],r.setClass(e[t-1],e[t]);break;case 42:this.$=e[t-3],r.addCssStyles(e[t-2],e[t-1]);break;case 43:this.$=[e[t]];break;case 44:e[t-2].push(e[t]),this.$=e[t-2];break;case 46:this.$=e[t-1]+e[t];break;case 54:case 79:case 80:this.$=e[t].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 81:this.$=e[t];break;case 60:e[t].push(e[t-1]),this.$=e[t];break;case 61:this.$={type:e[t-1],name:e[t]};break;case 62:this.$={type:e[t-2],name:e[t-1],keys:e[t]};break;case 63:this.$={type:e[t-2],name:e[t-1],comment:e[t]};break;case 64:this.$={type:e[t-3],name:e[t-2],keys:e[t-1],comment:e[t]};break;case 65:case 66:case 69:this.$=e[t];break;case 68:e[t-2].push(e[t]),this.$=e[t-2];break;case 70:this.$=e[t].replace(/"/g,"");break;case 71:this.$={cardA:e[t],relType:e[t-1],cardB:e[t-2]};break;case 72:this.$=r.Cardinality.ZERO_OR_ONE;break;case 73:this.$=r.Cardinality.ZERO_OR_MORE;break;case 74:this.$=r.Cardinality.ONE_OR_MORE;break;case 75:this.$=r.Cardinality.ONLY_ONE;break;case 76:this.$=r.Cardinality.MD_PARENT;break;case 77:this.$=r.Identification.NON_IDENTIFYING;break;case 78:this.$=r.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},i(s,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:o,24:u,26:l,28:p,29:14,30:15,31:16,32:17,33:f,34:d,35:m,36:W,37:Q,40:T,43:X,44:B,48:L,50:x,51:S,52:I},i(s,[2,7],{1:[2,1]}),i(s,[2,3]),{9:30,11:9,22:o,24:u,26:l,28:p,29:14,30:15,31:16,32:17,33:f,34:d,35:m,36:W,37:Q,40:T,43:X,44:B,48:L,50:x,51:S,52:I},i(s,[2,5]),i(s,[2,6]),i(s,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:ne,66:ae,67:oe,68:ce,69:le}),{23:[1,41]},{25:[1,42]},{27:[1,43]},i(s,[2,27]),i(s,[2,28]),i(s,[2,29]),i(s,[2,30]),i(s,[2,31]),i(F,[2,54]),i(F,[2,55]),i(F,[2,56]),i(F,[2,57]),i(F,[2,58]),i(s,[2,32]),i(s,[2,33]),i(s,[2,34]),i(s,[2,35]),{16:44,40:O,41:N},{16:47,40:O,41:N},{16:48,40:O,41:N},i(s,[2,4]),{11:49,40:T,48:L,50:x,51:S,52:I},{16:50,40:O,41:N},{18:51,19:[1,52],53:53,54:54,58:Y},{11:56,40:T,48:L,50:x,51:S,52:I},{64:57,70:[1,58],71:[1,59]},i(P,[2,72]),i(P,[2,73]),i(P,[2,74]),i(P,[2,75]),i(P,[2,76]),i(s,[2,24]),i(s,[2,25]),i(s,[2,26]),{13:z,38:60,41:G,42:A,45:62,46:63,48:K,49:j},i(H,[2,37]),i(H,[2,38]),{16:68,40:O,41:N,42:A},{13:z,38:69,41:G,42:A,45:62,46:63,48:K,49:j},{13:[1,70],15:[1,71]},i(s,[2,17],{63:35,12:72,17:[1,73],42:A,65:ne,66:ae,67:oe,68:ce,69:le}),{19:[1,74]},i(s,[2,14]),{18:75,19:[2,59],53:53,54:54,58:Y},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:ne,66:ae,67:oe,68:ce,69:le},i(me,[2,77]),i(me,[2,78]),{6:Ee,10:Te,39:80,42:Se,47:Oe},{40:[1,85],41:[1,86]},i(Ne,[2,43],{46:87,13:z,41:G,48:K,49:j}),i(V,[2,45]),i(V,[2,50]),i(V,[2,51]),i(V,[2,52]),i(V,[2,53]),i(s,[2,41],{42:A}),{6:Ee,10:Te,39:88,42:Se,47:Oe},{14:89,40:q,50:J,72:$},{16:93,40:O,41:N},{11:94,40:T,48:L,50:x,51:S,52:I},{18:95,19:[1,96],53:53,54:54,58:Y},i(s,[2,12]),{19:[2,60]},i(U,[2,61],{56:97,57:98,59:99,61:Ae,62:Ce}),i([19,58,61,62],[2,66]),i(s,[2,22],{15:[1,103],17:[1,102]}),i([40,48,50,51,52],[2,71]),i(s,[2,36]),{13:z,41:G,45:104,46:63,48:K,49:j},i(s,[2,47]),i(s,[2,48]),i(s,[2,49]),i(H,[2,39]),i(H,[2,40]),i(V,[2,46]),i(s,[2,42]),i(s,[2,8]),i(s,[2,79]),i(s,[2,80]),i(s,[2,81]),{13:[1,105],42:A},{13:[1,107],15:[1,106]},{19:[1,108]},i(s,[2,15]),i(U,[2,62],{57:109,60:[1,110],62:Ce}),i(U,[2,63]),i(he,[2,67]),i(U,[2,70]),i(he,[2,69]),{18:111,19:[1,112],53:53,54:54,58:Y},{16:113,40:O,41:N},i(Ne,[2,44],{46:87,13:z,41:G,48:K,49:j}),{14:114,40:q,50:J,72:$},{16:115,40:O,41:N},{14:116,40:q,50:J,72:$},i(s,[2,13]),i(U,[2,64]),{59:117,61:Ae},{19:[1,118]},i(s,[2,20]),i(s,[2,23],{17:[1,119],42:A}),i(s,[2,11]),{13:[1,120],42:A},i(s,[2,10]),i(he,[2,68]),i(s,[2,18]),{18:121,19:[1,122],53:53,54:54,58:Y},{14:123,40:q,50:J,72:$},{19:[1,124]},i(s,[2,21]),i(s,[2,9]),i(s,[2,19])],defaultActions:{55:[2,65],75:[2,60]},parseError:h(function(n,a){if(a.recoverable)this.trace(n);else{var c=new Error(n);throw c.hash=a,c}},"parseError"),parse:h(function(n){var a=this,c=[0],r=[],b=[null],e=[],Z=this.table,t="",ee=0,Re=0,xe=0,Je=2,Ie=1,$e=e.slice.call(arguments,1),y=Object.create(this.lexer),v={yy:{}};for(var pe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,pe)&&(v.yy[pe]=this.yy[pe]);y.setInput(n,v.yy),v.yy.lexer=y,v.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var be=y.yylloc;e.push(be);var et=y.options&&y.options.ranges;typeof v.yy.parseError=="function"?this.parseError=v.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function at(k){c.length=c.length-2*k,b.length=b.length-k,e.length=e.length-k}h(at,"popStack");function tt(){var k;return k=r.pop()||y.lex()||Ie,typeof k!="number"&&(k instanceof Array&&(r=k,k=r.pop()),k=a.symbols_[k]||k),k}h(tt,"lex");for(var g,fe,D,_,ot,ye,w={},te,E,ve,ie;;){if(D=c[c.length-1],this.defaultActions[D]?_=this.defaultActions[D]:((g===null||typeof g>"u")&&(g=tt()),_=Z[D]&&Z[D][g]),typeof _>"u"||!_.length||!_[0]){var ge="";ie=[];for(te in Z[D])this.terminals_[te]&&te>Je&&ie.push("'"+this.terminals_[te]+"'");y.showPosition?ge="Parse error on line "+(ee+1)+`: +`+y.showPosition()+` +Expecting `+ie.join(", ")+", got '"+(this.terminals_[g]||g)+"'":ge="Parse error on line "+(ee+1)+": Unexpected "+(g==Ie?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(ge,{text:y.match,token:this.terminals_[g]||g,line:y.yylineno,loc:be,expected:ie})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+D+", token: "+g);switch(_[0]){case 1:c.push(g),b.push(y.yytext),e.push(y.yylloc),c.push(_[1]),g=null,fe?(g=fe,fe=null):(Re=y.yyleng,t=y.yytext,ee=y.yylineno,be=y.yylloc,xe>0&&xe--);break;case 2:if(E=this.productions_[_[1]][1],w.$=b[b.length-E],w._$={first_line:e[e.length-(E||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(E||1)].first_column,last_column:e[e.length-1].last_column},et&&(w._$.range=[e[e.length-(E||1)].range[0],e[e.length-1].range[1]]),ye=this.performAction.apply(w,[t,Re,ee,v.yy,_[1],b,e].concat($e)),typeof ye<"u")return ye;E&&(c=c.slice(0,-1*E*2),b=b.slice(0,-1*E),e=e.slice(0,-1*E)),c.push(this.productions_[_[1]][0]),b.push(w.$),e.push(w._$),ve=Z[c[c.length-2]][c[c.length-1]],c.push(ve);break;case 3:return!0}}return!0},"parse")},qe=(function(){var C={EOF:1,parseError:h(function(a,c){if(this.yy.parser)this.yy.parser.parseError(a,c);else throw new Error(a)},"parseError"),setInput:h(function(n,a){return this.yy=a||this.yy||{},this._input=n,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:h(function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var a=n.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},"input"),unput:h(function(n){var a=n.length,c=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===r.length?this.yylloc.first_column:0)+r[r.length-c.length].length-c[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:h(function(){return this._more=!0,this},"more"),reject:h(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:h(function(n){this.unput(this.match.slice(n))},"less"),pastInput:h(function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:h(function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:h(function(){var n=this.pastInput(),a=new Array(n.length+1).join("-");return n+this.upcomingInput()+` +`+a+"^"},"showPosition"),test_match:h(function(n,a){var c,r,b;if(this.options.backtrack_lexer&&(b={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(b.yylloc.range=this.yylloc.range.slice(0))),r=n[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+n[0].length},this.yytext+=n[0],this.match+=n[0],this.matches=n,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(n[0].length),this.matched+=n[0],c=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var e in b)this[e]=b[e];return!1}return!1},"test_match"),next:h(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var n,a,c,r;this._more||(this.yytext="",this.match="");for(var b=this._currentRules(),e=0;ea[0].length)){if(a=c,r=e,this.options.backtrack_lexer){if(n=this.test_match(c,b[e]),n!==!1)return n;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(n=this.test_match(a,b[r]),n!==!1?n:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:h(function(){var a=this.next();return a||this.lex()},"lex"),begin:h(function(a){this.conditionStack.push(a)},"begin"),popState:h(function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:h(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:h(function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},"topState"),pushState:h(function(a){this.begin(a)},"pushState"),stateStackSize:h(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:h(function(a,c,r,b){var e=b;switch(r){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 72;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 61;case 25:return 58;case 26:return 58;case 27:return 62;case 28:break;case 29:return this.popState(),19;break;case 30:return c.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 65;case 42:return 67;case 43:return 67;case 44:return 67;case 45:return 65;case 46:return 65;case 47:return 66;case 48:return 66;case 49:return 66;case 50:return 66;case 51:return 66;case 52:return 67;case 53:return 66;case 54:return 67;case 55:return 68;case 56:return 68;case 57:return 51;case 58:return 68;case 59:return 68;case 60:return 68;case 61:return 52;case 62:return 48;case 63:return 68;case 64:return 65;case 65:return 66;case 66:return 67;case 67:return 69;case 68:return 70;case 69:return 71;case 70:return 71;case 71:return 70;case 72:return 70;case 73:return 70;case 74:return 41;case 75:return 47;case 76:return 40;case 77:return c.yytext[0];case 78:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:[0-9]+\.[0-9]+)/i,/^(?:1(?=\s+[A-Za-z_"']))/i,/^(?:1(?=\s+[0-9]))/i,/^(?:1(?=(--|\.\.|\.-|-\.)))/i,/^(?:1\b)/i,/^(?:[0-9]+)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:u(?=[\.\-\|]))/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,74,75],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,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,72,73,76,77,78],inclusive:!0}}};return C})();ue.lexer=qe;function de(){this.yy={}}return h(de,"Parser"),de.prototype=ue,ue.Parser=de,new de})();ke.parser=ke;var Qe=ke;var se=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=we;this.getAccTitle=Me;this.setAccDescription=Be;this.getAccDescription=Fe;this.setDiagramTitle=Ye;this.getDiagramTitle=Pe;this.getConfig=h(()=>M().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{h(this,"ErDB")}addEntity(s,o=""){return this.entities.has(s)?!this.entities.get(s)?.alias&&o&&(this.entities.get(s).alias=o,R.info(`Add alias '${o}' to entity '${s}'`)):(this.entities.set(s,{id:`entity-${s}-${this.entities.size}`,label:s,attributes:[],alias:o,shape:"erBox",look:M().look??"default",cssClasses:"default",cssStyles:[],labelType:"markdown"}),R.info("Added new entity :",s)),this.entities.get(s)}getEntity(s){return this.entities.get(s)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(s,o){let u=this.addEntity(s),l;for(l=o.length-1;l>=0;l--)o[l].keys||(o[l].keys=[]),o[l].comment||(o[l].comment=""),u.attributes.push(o[l]),R.debug("Added attribute ",o[l].name)}addRelationship(s,o,u,l){let p=this.entities.get(s),f=this.entities.get(u);if(!p||!f)return;let d={entityA:p.id,roleA:o,entityB:f.id,relSpec:l};this.relationships.push(d),R.debug("Added new relationship :",d)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(s){this.direction=s}getCompiledStyles(s){let o=[];for(let u of s){let l=this.classes.get(u);l?.styles&&(o=[...o,...l.styles??[]].map(p=>p.trim())),l?.textStyles&&(o=[...o,...l.textStyles??[]].map(p=>p.trim()))}return o}addCssStyles(s,o){for(let u of s){let l=this.entities.get(u);if(!o||!l)return;for(let p of o)l.cssStyles.push(p)}}addClass(s,o){s.forEach(u=>{let l=this.classes.get(u);l===void 0&&(l={id:u,styles:[],textStyles:[]},this.classes.set(u,l)),o&&o.forEach(function(p){if(/color/.exec(p)){let f=p.replace("fill","bgFill");l.textStyles.push(f)}l.styles.push(p)})})}setClass(s,o){for(let u of s){let l=this.entities.get(u);if(l)for(let p of o)l.cssClasses+=" "+p}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],Ve()}getData(){let s=[],o=[],u=M(),l=0;for(let f of this.entities.keys()){let d=this.entities.get(f);d&&(d.cssCompiledStyles=this.getCompiledStyles(d.cssClasses.split(" ")),d.colorIndex=l++,s.push(d))}let p=0;for(let f of this.relationships){let d={id:Ke(f.entityA,f.entityB,{prefix:"id",counter:p++}),type:"normal",curve:"basis",start:f.entityA,end:f.entityB,label:f.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:f.relSpec.cardB.toLowerCase(),arrowTypeEnd:f.relSpec.cardA.toLowerCase(),pattern:f.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:u.look,labelType:"markdown"};o.push(d)}return{nodes:s,edges:o,other:{},config:u,direction:"TB"}}};var _e={};it(_e,{draw:()=>st});var st=h(async function(i,s,o,u){R.info("REF0:"),R.info("Drawing er diagram (unified)",s);let{securityLevel:l,er:p,layout:f}=M(),d=u.db.getData(),m=je(s,l);d.type=u.type,d.layoutAlgorithm=Ze(f),d.config.flowchart.nodeSpacing=p?.nodeSpacing||140,d.config.flowchart.rankSpacing=p?.rankSpacing||80,d.direction=u.db.getDirection();let{config:W}=d,{look:Q}=W;Q==="neo"?d.markers=["only_one_neo","zero_or_one_neo","one_or_more_neo","zero_or_more_neo"]:d.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],d.diagramId=s,await Ue(d,m),d.layoutAlgorithm==="elk"&&m.select(".edges").lower();let T=m.selectAll('[id*="-background"]');Array.from(T).length>0&&T.each(function(){let B=ze(this),x=B.attr("id").replace("-background",""),S=m.select(`#${CSS.escape(x)}`);if(!S.empty()){let I=S.attr("transform");B.attr("transform",I)}});let X=8;Ge.insertTitle(m,"erDiagramTitleText",p?.titleTopMargin??25,u.db.getDiagramTitle()),We(m,X,"erDiagram",p?.useMaxWidth??!0)},"draw");var Xe=h((i,s)=>{let o=Le,u=o(i,"r"),l=o(i,"g"),p=o(i,"b");return De(u,l,p,s)},"fade"),re=new Set(["redux-color","redux-dark-color"]),rt=h(i=>{let{theme:s,look:o,bkgColorArray:u,borderColorArray:l}=i;if(!re.has(s))return"";let p=u?.length>0,f="";for(let d=0;d{let{look:s,theme:o,erEdgeLabelBackground:u,strokeWidth:l}=i;return` + ${rt(i)} + .entityBox { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${i.tertiaryColor}; + opacity: 0.7; + background-color: ${i.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .labelBkg { + background-color: ${re.has(o)&&u?u:Xe(i.tertiaryColor,.5)}; + } + + .edgeLabel { + background-color: ${re.has(o)&&u?u:i.edgeLabelBackground}; + } + .edgeLabel .label rect { + fill: ${re.has(o)&&u?u:i.edgeLabelBackground}; + } + .edgeLabel .label text { + fill: ${i.textColor}; + } + + .edgeLabel .label { + fill: ${i.nodeBorder}; + font-size: 14px; + } + + .label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + + .edge-pattern-dashed { + stroke-dasharray: 8,8; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon + { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: ${s==="neo"?l:"1px"}; + } + + .relationshipLine { + stroke: ${i.lineColor}; + stroke-width: ${s==="neo"?l:"1px"}; + fill: none; + } + + .marker { + fill: none !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; + } + [data-look=neo].labelBkg { + background-color: ${Xe(i.tertiaryColor,.5)}; + } +`},"getStyles"),He=nt;var It={parser:Qe,get db(){return new se},renderer:_e,styles:He};export{It as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L2NYR2MQ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L5TCEMPS.mjs.map similarity index 69% rename from assets/mermaid/chunks/mermaid.esm.min/erDiagram-L2NYR2MQ.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/erDiagram-L5TCEMPS.mjs.map index cf18d35..938661d 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L2NYR2MQ.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/erDiagram-L5TCEMPS.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/er/parser/erDiagram.jison", "../../../src/diagrams/er/erDb.ts", "../../../src/diagrams/er/erRenderer-unified.ts", "../../../src/diagrams/er/styles.ts", "../../../src/diagrams/er/erDiagram.ts"], - "sourcesContent": ["/* 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,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],$V1=[1,10],$V2=[1,11],$V3=[1,12],$V4=[1,13],$V5=[1,23],$V6=[1,24],$V7=[1,25],$V8=[1,26],$V9=[1,27],$Va=[1,19],$Vb=[1,28],$Vc=[1,29],$Vd=[1,20],$Ve=[1,18],$Vf=[1,21],$Vg=[1,22],$Vh=[1,36],$Vi=[1,37],$Vj=[1,38],$Vk=[1,39],$Vl=[1,40],$Vm=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],$Vn=[1,45],$Vo=[1,46],$Vp=[1,55],$Vq=[40,48,50,51,52,70,71],$Vr=[1,66],$Vs=[1,64],$Vt=[1,61],$Vu=[1,65],$Vv=[1,67],$Vw=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],$Vx=[65,66,67,68,69],$Vy=[1,84],$Vz=[1,83],$VA=[1,81],$VB=[1,82],$VC=[6,10,42,47],$VD=[6,10,13,41,42,47,48,49],$VE=[1,92],$VF=[1,91],$VG=[1,90],$VH=[19,58],$VI=[1,101],$VJ=[1,100],$VK=[19,58,60,62];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NEWLINE\":10,\"entityName\":11,\"relSpec\":12,\"COLON\":13,\"role\":14,\"STYLE_SEPARATOR\":15,\"idList\":16,\"BLOCK_START\":17,\"attributes\":18,\"BLOCK_STOP\":19,\"SQS\":20,\"SQE\":21,\"title\":22,\"title_value\":23,\"acc_title\":24,\"acc_title_value\":25,\"acc_descr\":26,\"acc_descr_value\":27,\"acc_descr_multiline_value\":28,\"direction\":29,\"classDefStatement\":30,\"classStatement\":31,\"styleStatement\":32,\"direction_tb\":33,\"direction_bt\":34,\"direction_rl\":35,\"direction_lr\":36,\"CLASSDEF\":37,\"stylesOpt\":38,\"separator\":39,\"UNICODE_TEXT\":40,\"STYLE_TEXT\":41,\"COMMA\":42,\"CLASS\":43,\"STYLE\":44,\"style\":45,\"styleComponent\":46,\"SEMI\":47,\"NUM\":48,\"BRKT\":49,\"ENTITY_NAME\":50,\"DECIMAL_NUM\":51,\"ENTITY_ONE\":52,\"attribute\":53,\"attributeType\":54,\"attributeName\":55,\"attributeKeyTypeList\":56,\"attributeComment\":57,\"ATTRIBUTE_WORD\":58,\"attributeKeyType\":59,\",\":60,\"ATTRIBUTE_KEY\":61,\"COMMENT\":62,\"cardinality\":63,\"relType\":64,\"ZERO_OR_ONE\":65,\"ZERO_OR_MORE\":66,\"ONE_OR_MORE\":67,\"ONLY_ONE\":68,\"MD_PARENT\":69,\"NON_IDENTIFYING\":70,\"IDENTIFYING\":71,\"WORD\":72,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",8:\"SPACE\",10:\"NEWLINE\",13:\"COLON\",15:\"STYLE_SEPARATOR\",17:\"BLOCK_START\",19:\"BLOCK_STOP\",20:\"SQS\",21:\"SQE\",22:\"title\",23:\"title_value\",24:\"acc_title\",25:\"acc_title_value\",26:\"acc_descr\",27:\"acc_descr_value\",28:\"acc_descr_multiline_value\",33:\"direction_tb\",34:\"direction_bt\",35:\"direction_rl\",36:\"direction_lr\",37:\"CLASSDEF\",40:\"UNICODE_TEXT\",41:\"STYLE_TEXT\",42:\"COMMA\",43:\"CLASS\",44:\"STYLE\",47:\"SEMI\",48:\"NUM\",49:\"BRKT\",50:\"ENTITY_NAME\",51:\"DECIMAL_NUM\",52:\"ENTITY_ONE\",58:\"ATTRIBUTE_WORD\",60:\",\",61:\"ATTRIBUTE_KEY\",62:\"COMMENT\",65:\"ZERO_OR_ONE\",66:\"ZERO_OR_MORE\",67:\"ONE_OR_MORE\",68:\"ONLY_ONE\",69:\"MD_PARENT\",70:\"NON_IDENTIFYING\",71:\"IDENTIFYING\",72:\"WORD\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,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 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\n\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n \nbreak;\ncase 9:\n\n yy.addEntity($$[$0-8]);\n yy.addEntity($$[$0-4]);\n yy.addRelationship($$[$0-8], $$[$0], $$[$0-4], $$[$0-5]);\n yy.setClass([$$[$0-8]], $$[$0-6]);\n yy.setClass([$$[$0-4]], $$[$0-2]);\n \nbreak;\ncase 10:\n\n yy.addEntity($$[$0-6]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-6], $$[$0], $$[$0-2], $$[$0-3]);\n yy.setClass([$$[$0-6]], $$[$0-4]);\n \nbreak;\ncase 11:\n\n yy.addEntity($$[$0-6]);\n yy.addEntity($$[$0-4]);\n yy.addRelationship($$[$0-6], $$[$0], $$[$0-4], $$[$0-5]);\n yy.setClass([$$[$0-4]], $$[$0-2]);\n \nbreak;\ncase 12:\n\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n \nbreak;\ncase 13:\n\n yy.addEntity($$[$0-5]);\n yy.addAttributes($$[$0-5], $$[$0-1]);\n yy.setClass([$$[$0-5]], $$[$0-3]);\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0-4]); yy.setClass([$$[$0-4]], $$[$0-2]); \nbreak;\ncase 16:\n yy.addEntity($$[$0]); \nbreak;\ncase 17:\n yy.addEntity($$[$0-2]); yy.setClass([$$[$0-2]], $$[$0]); \nbreak;\ncase 18:\n\n yy.addEntity($$[$0-6], $$[$0-4]);\n yy.addAttributes($$[$0-6], $$[$0-1]);\n \nbreak;\ncase 19:\n\n yy.addEntity($$[$0-8], $$[$0-6]);\n yy.addAttributes($$[$0-8], $$[$0-1]);\n yy.setClass([$$[$0-8]], $$[$0-3]);\n\n \nbreak;\ncase 20:\n yy.addEntity($$[$0-5], $$[$0-3]); \nbreak;\ncase 21:\n yy.addEntity($$[$0-7], $$[$0-5]); yy.setClass([$$[$0-7]], $$[$0-2]); \nbreak;\ncase 22:\n yy.addEntity($$[$0-3], $$[$0-1]); \nbreak;\ncase 23:\n yy.addEntity($$[$0-5], $$[$0-3]); yy.setClass([$$[$0-5]], $$[$0]); \nbreak;\ncase 24: case 25:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 26: case 27:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 32:\n yy.setDirection('TB');\nbreak;\ncase 33:\n yy.setDirection('BT');\nbreak;\ncase 34:\n yy.setDirection('RL');\nbreak;\ncase 35:\n yy.setDirection('LR');\nbreak;\ncase 36:\nthis.$ = $$[$0-3];yy.addClass($$[$0-2],$$[$0-1]);\nbreak;\ncase 37: case 38: case 59: case 67:\n this.$ = [$$[$0]]; \nbreak;\ncase 39: case 40:\n this.$ = $$[$0-2].concat([$$[$0]]); \nbreak;\ncase 41:\nthis.$ = $$[$0-2];yy.setClass($$[$0-1], $$[$0]);\nbreak;\ncase 42:\n;this.$ = $$[$0-3];yy.addCssStyles($$[$0-2],$$[$0-1]);\nbreak;\ncase 43:\n this.$ = [$$[$0]] \nbreak;\ncase 44:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 46:\n this.$ = $$[$0-1] + $$[$0]; \nbreak;\ncase 54: case 79: case 80:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 55: case 56: case 57: case 58: case 81:\n this.$ = $$[$0]; \nbreak;\ncase 60:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 61:\n this.$ = { type: $$[$0-1], name: $$[$0] }; \nbreak;\ncase 62:\n this.$ = { type: $$[$0-2], name: $$[$0-1], keys: $$[$0] }; \nbreak;\ncase 63:\n this.$ = { type: $$[$0-2], name: $$[$0-1], comment: $$[$0] }; \nbreak;\ncase 64:\n this.$ = { type: $$[$0-3], name: $$[$0-2], keys: $$[$0-1], comment: $$[$0] }; \nbreak;\ncase 65: case 66: case 69:\n this.$=$$[$0]; \nbreak;\ncase 68:\n $$[$0-2].push($$[$0]); this.$ = $$[$0-2]; \nbreak;\ncase 70:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 71:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 72:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 73:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 74:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 75:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 76:\n this.$ = yy.Cardinality.MD_PARENT; \nbreak;\ncase 77:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 78:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:$V1,24:$V2,26:$V3,28:$V4,29:14,30:15,31:16,32:17,33:$V5,34:$V6,35:$V7,36:$V8,37:$V9,40:$Va,43:$Vb,44:$Vc,48:$Vd,50:$Ve,51:$Vf,52:$Vg},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:30,11:9,22:$V1,24:$V2,26:$V3,28:$V4,29:14,30:15,31:16,32:17,33:$V5,34:$V6,35:$V7,36:$V8,37:$V9,40:$Va,43:$Vb,44:$Vc,48:$Vd,50:$Ve,51:$Vf,52:$Vg},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:$Vh,66:$Vi,67:$Vj,68:$Vk,69:$Vl}),{23:[1,41]},{25:[1,42]},{27:[1,43]},o($V0,[2,27]),o($V0,[2,28]),o($V0,[2,29]),o($V0,[2,30]),o($V0,[2,31]),o($Vm,[2,54]),o($Vm,[2,55]),o($Vm,[2,56]),o($Vm,[2,57]),o($Vm,[2,58]),o($V0,[2,32]),o($V0,[2,33]),o($V0,[2,34]),o($V0,[2,35]),{16:44,40:$Vn,41:$Vo},{16:47,40:$Vn,41:$Vo},{16:48,40:$Vn,41:$Vo},o($V0,[2,4]),{11:49,40:$Va,48:$Vd,50:$Ve,51:$Vf,52:$Vg},{16:50,40:$Vn,41:$Vo},{18:51,19:[1,52],53:53,54:54,58:$Vp},{11:56,40:$Va,48:$Vd,50:$Ve,51:$Vf,52:$Vg},{64:57,70:[1,58],71:[1,59]},o($Vq,[2,72]),o($Vq,[2,73]),o($Vq,[2,74]),o($Vq,[2,75]),o($Vq,[2,76]),o($V0,[2,24]),o($V0,[2,25]),o($V0,[2,26]),{13:$Vr,38:60,41:$Vs,42:$Vt,45:62,46:63,48:$Vu,49:$Vv},o($Vw,[2,37]),o($Vw,[2,38]),{16:68,40:$Vn,41:$Vo,42:$Vt},{13:$Vr,38:69,41:$Vs,42:$Vt,45:62,46:63,48:$Vu,49:$Vv},{13:[1,70],15:[1,71]},o($V0,[2,17],{63:35,12:72,17:[1,73],42:$Vt,65:$Vh,66:$Vi,67:$Vj,68:$Vk,69:$Vl}),{19:[1,74]},o($V0,[2,14]),{18:75,19:[2,59],53:53,54:54,58:$Vp},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:$Vh,66:$Vi,67:$Vj,68:$Vk,69:$Vl},o($Vx,[2,77]),o($Vx,[2,78]),{6:$Vy,10:$Vz,39:80,42:$VA,47:$VB},{40:[1,85],41:[1,86]},o($VC,[2,43],{46:87,13:$Vr,41:$Vs,48:$Vu,49:$Vv}),o($VD,[2,45]),o($VD,[2,50]),o($VD,[2,51]),o($VD,[2,52]),o($VD,[2,53]),o($V0,[2,41],{42:$Vt}),{6:$Vy,10:$Vz,39:88,42:$VA,47:$VB},{14:89,40:$VE,50:$VF,72:$VG},{16:93,40:$Vn,41:$Vo},{11:94,40:$Va,48:$Vd,50:$Ve,51:$Vf,52:$Vg},{18:95,19:[1,96],53:53,54:54,58:$Vp},o($V0,[2,12]),{19:[2,60]},o($VH,[2,61],{56:97,57:98,59:99,61:$VI,62:$VJ}),o([19,58,61,62],[2,66]),o($V0,[2,22],{15:[1,103],17:[1,102]}),o([40,48,50,51,52],[2,71]),o($V0,[2,36]),{13:$Vr,41:$Vs,45:104,46:63,48:$Vu,49:$Vv},o($V0,[2,47]),o($V0,[2,48]),o($V0,[2,49]),o($Vw,[2,39]),o($Vw,[2,40]),o($VD,[2,46]),o($V0,[2,42]),o($V0,[2,8]),o($V0,[2,79]),o($V0,[2,80]),o($V0,[2,81]),{13:[1,105],42:$Vt},{13:[1,107],15:[1,106]},{19:[1,108]},o($V0,[2,15]),o($VH,[2,62],{57:109,60:[1,110],62:$VJ}),o($VH,[2,63]),o($VK,[2,67]),o($VH,[2,70]),o($VK,[2,69]),{18:111,19:[1,112],53:53,54:54,58:$Vp},{16:113,40:$Vn,41:$Vo},o($VC,[2,44],{46:87,13:$Vr,41:$Vs,48:$Vu,49:$Vv}),{14:114,40:$VE,50:$VF,72:$VG},{16:115,40:$Vn,41:$Vo},{14:116,40:$VE,50:$VF,72:$VG},o($V0,[2,13]),o($VH,[2,64]),{59:117,61:$VI},{19:[1,118]},o($V0,[2,20]),o($V0,[2,23],{17:[1,119],42:$Vt}),o($V0,[2,11]),{13:[1,120],42:$Vt},o($V0,[2,10]),o($VK,[2,68]),o($V0,[2,18]),{18:121,19:[1,122],53:53,54:54,58:$Vp},{14:123,40:$VE,50:$VF,72:$VG},{19:[1,124]},o($V0,[2,21]),o($V0,[2,9]),o($V0,[2,19])],\ndefaultActions: {55:[2,65],75:[2,60]},\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: this.begin(\"acc_title\");return 24; \nbreak;\ncase 1: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 2: this.begin(\"acc_descr\");return 26; \nbreak;\ncase 3: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 4: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 5: this.popState(); \nbreak;\ncase 6:return \"acc_descr_multiline_value\";\nbreak;\ncase 7:return 33;\nbreak;\ncase 8:return 34;\nbreak;\ncase 9:return 35;\nbreak;\ncase 10:return 36;\nbreak;\ncase 11:return 10;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 8;\nbreak;\ncase 14:return 50;\nbreak;\ncase 15:return 72;\nbreak;\ncase 16:return 4;\nbreak;\ncase 17: this.begin(\"block\"); return 17; \nbreak;\ncase 18:return 49;\nbreak;\ncase 19:return 49;\nbreak;\ncase 20:return 42;\nbreak;\ncase 21:return 15;\nbreak;\ncase 22:return 13;\nbreak;\ncase 23:/* skip whitespace in block */\nbreak;\ncase 24:return 61\nbreak;\ncase 25:return 58;\nbreak;\ncase 26:return 58;\nbreak;\ncase 27:return 62;\nbreak;\ncase 28:/* nothing */\nbreak;\ncase 29: this.popState(); return 19; \nbreak;\ncase 30:return yy_.yytext[0];\nbreak;\ncase 31:return 20;\nbreak;\ncase 32:return 21;\nbreak;\ncase 33: this.begin(\"style\"); return 44; \nbreak;\ncase 34: this.popState(); return 10; \nbreak;\ncase 35:/* skip whitespace in block */\nbreak;\ncase 36:return 13;\nbreak;\ncase 37:return 42;\nbreak;\ncase 38:return 49;\nbreak;\ncase 39: this.begin(\"style\"); return 37; \nbreak;\ncase 40:return 43;\nbreak;\ncase 41:return 65;\nbreak;\ncase 42:return 67;\nbreak;\ncase 43:return 67;\nbreak;\ncase 44:return 67;\nbreak;\ncase 45:return 65;\nbreak;\ncase 46:return 65;\nbreak;\ncase 47:return 66;\nbreak;\ncase 48:return 66;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 66;\nbreak;\ncase 51:return 66;\nbreak;\ncase 52:return 67;\nbreak;\ncase 53:return 66;\nbreak;\ncase 54:return 67;\nbreak;\ncase 55:return 68;\nbreak;\ncase 56:return 68;\nbreak;\ncase 57:return 51;\nbreak;\ncase 58:return 68;\nbreak;\ncase 59:return 68;\nbreak;\ncase 60:return 52;\nbreak;\ncase 61:return 48;\nbreak;\ncase 62:return 68;\nbreak;\ncase 63:return 65;\nbreak;\ncase 64:return 66;\nbreak;\ncase 65:return 67;\nbreak;\ncase 66:return 69;\nbreak;\ncase 67:return 70;\nbreak;\ncase 68:return 71;\nbreak;\ncase 69:return 71;\nbreak;\ncase 70:return 70;\nbreak;\ncase 71:return 70;\nbreak;\ncase 72:return 70;\nbreak;\ncase 73:return 41;\nbreak;\ncase 74:return 47;\nbreak;\ncase 75:return 40;\nbreak;\ncase 76:return yy_.yytext[0];\nbreak;\ncase 77:return 6;\nbreak;\n}\n},\nrules: [/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"%\\r\\n\\v\\b\\\\]+\")/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\\s+)/i,/^(?:\\b((?:PK)|(?:FK)|(?:UK))\\b)/i,/^(?:([^\\s]*)[~].*[~]([^\\s]*))/i,/^(?:([\\*A-Za-z_\\u00C0-\\uFFFF][A-Za-z0-9\\-\\_\\[\\]\\(\\)\\u00C0-\\uFFFF\\*]*))/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:style\\b)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\\b)/i,/^(?:class\\b)/i,/^(?:one or zero\\b)/i,/^(?:one or more\\b)/i,/^(?:one or many\\b)/i,/^(?:1\\+)/i,/^(?:\\|o\\b)/i,/^(?:zero or one\\b)/i,/^(?:zero or more\\b)/i,/^(?:zero or many\\b)/i,/^(?:0\\+)/i,/^(?:\\}o\\b)/i,/^(?:many\\(0\\))/i,/^(?:many\\(1\\))/i,/^(?:many\\b)/i,/^(?:\\}\\|)/i,/^(?:one\\b)/i,/^(?:only one\\b)/i,/^(?:[0-9]+\\.[0-9]+)/i,/^(?:1(?=\\s+[A-Za-z_\"']))/i,/^(?:1(?=(--|\\.\\.|\\.-|-\\.)))/i,/^(?:1\\b)/i,/^(?:[0-9]+)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:u(?=[\\.\\-\\|]))/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:to\\b)/i,/^(?:optionally to\\b)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:([^\\x00-\\x7F]|\\w|-|\\*)+)/i,/^(?:;)/i,/^(?:([^\\x00-\\x7F]|\\w|-|\\*|\\.)+)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"style\":{\"rules\":[34,35,36,37,38,73,74],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[5,6],\"inclusive\":false},\"acc_descr\":{\"rules\":[3],\"inclusive\":false},\"acc_title\":{\"rules\":[1],\"inclusive\":false},\"block\":{\"rules\":[23,24,25,26,27,28,29,30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,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,72,75,76,77],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { Edge, Node } from '../../rendering-util/types.js';\nimport type { EntityNode, Attribute, Relationship, EntityClass, RelSpec } from './erTypes.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport { getEdgeId } from '../../utils.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\n\nexport class ErDB implements DiagramDB {\n private entities = new Map();\n private relationships: Relationship[] = [];\n private classes = new Map();\n private direction = 'TB';\n\n private Cardinality = {\n ZERO_OR_ONE: 'ZERO_OR_ONE',\n ZERO_OR_MORE: 'ZERO_OR_MORE',\n ONE_OR_MORE: 'ONE_OR_MORE',\n ONLY_ONE: 'ONLY_ONE',\n MD_PARENT: 'MD_PARENT',\n };\n\n private Identification = {\n NON_IDENTIFYING: 'NON_IDENTIFYING',\n IDENTIFYING: 'IDENTIFYING',\n };\n\n constructor() {\n this.clear();\n this.addEntity = this.addEntity.bind(this);\n this.addAttributes = this.addAttributes.bind(this);\n this.addRelationship = this.addRelationship.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.addCssStyles = this.addCssStyles.bind(this);\n this.addClass = this.addClass.bind(this);\n this.setClass = this.setClass.bind(this);\n this.setAccTitle = this.setAccTitle.bind(this);\n this.setAccDescription = this.setAccDescription.bind(this);\n }\n\n /**\n * Add entity\n * @param name - The name of the entity\n * @param alias - The alias of the entity\n */\n public addEntity(name: string, alias = ''): EntityNode {\n if (!this.entities.has(name)) {\n this.entities.set(name, {\n id: `entity-${name}-${this.entities.size}`,\n label: name,\n attributes: [],\n alias,\n shape: 'erBox',\n look: getConfig().look ?? 'default',\n cssClasses: 'default',\n cssStyles: [],\n labelType: 'markdown',\n });\n log.info('Added new entity :', name);\n } else if (!this.entities.get(name)?.alias && alias) {\n this.entities.get(name)!.alias = alias;\n log.info(`Add alias '${alias}' to entity '${name}'`);\n }\n\n return this.entities.get(name)!;\n }\n\n public getEntity(name: string) {\n return this.entities.get(name);\n }\n\n public getEntities() {\n return this.entities;\n }\n\n public getClasses() {\n return this.classes;\n }\n\n public addAttributes(entityName: string, attribs: Attribute[]) {\n const entity = this.addEntity(entityName); // May do nothing (if entity has already been added)\n\n // Process attribs in reverse order due to effect of recursive construction (last attribute is first)\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n if (!attribs[i].keys) {\n attribs[i].keys = [];\n }\n if (!attribs[i].comment) {\n attribs[i].comment = '';\n }\n entity.attributes.push(attribs[i]);\n log.debug('Added attribute ', attribs[i].name);\n }\n }\n\n /**\n * Add a relationship\n *\n * @param entA - The first entity in the relationship\n * @param rolA - The role played by the first entity in relation to the second\n * @param entB - The second entity in the relationship\n * @param rSpec - The details of the relationship between the two entities\n */\n public addRelationship(entA: string, rolA: string, entB: string, rSpec: RelSpec) {\n const entityA = this.entities.get(entA);\n const entityB = this.entities.get(entB);\n if (!entityA || !entityB) {\n return;\n }\n\n const rel = {\n entityA: entityA.id,\n roleA: rolA,\n entityB: entityB.id,\n relSpec: rSpec,\n };\n\n this.relationships.push(rel);\n log.debug('Added new relationship :', rel);\n }\n\n public getRelationships() {\n return this.relationships;\n }\n\n public getDirection() {\n return this.direction;\n }\n\n public setDirection(dir: string) {\n this.direction = dir;\n }\n\n private getCompiledStyles(classDefs: string[]) {\n let compiledStyles: string[] = [];\n for (const customClass of classDefs) {\n const cssClass = this.classes.get(customClass);\n if (cssClass?.styles) {\n compiledStyles = [...compiledStyles, ...(cssClass.styles ?? [])].map((s) => s.trim());\n }\n if (cssClass?.textStyles) {\n compiledStyles = [...compiledStyles, ...(cssClass.textStyles ?? [])].map((s) => s.trim());\n }\n }\n return compiledStyles;\n }\n\n public addCssStyles(ids: string[], styles: string[]) {\n for (const id of ids) {\n const entity = this.entities.get(id);\n if (!styles || !entity) {\n return;\n }\n for (const style of styles) {\n entity.cssStyles!.push(style);\n }\n }\n }\n\n public addClass(ids: string[], style: string[]) {\n ids.forEach((id) => {\n let classNode = this.classes.get(id);\n if (classNode === undefined) {\n classNode = { id, styles: [], textStyles: [] };\n this.classes.set(id, classNode);\n }\n\n if (style) {\n style.forEach(function (s) {\n if (/color/.exec(s)) {\n const newStyle = s.replace('fill', 'bgFill');\n classNode.textStyles.push(newStyle);\n }\n classNode.styles.push(s);\n });\n }\n });\n }\n\n public setClass(ids: string[], classNames: string[]) {\n for (const id of ids) {\n const entity = this.entities.get(id);\n if (entity) {\n for (const className of classNames) {\n entity.cssClasses += ' ' + className;\n }\n }\n }\n }\n\n public clear() {\n this.entities = new Map();\n this.classes = new Map();\n this.relationships = [];\n commonClear();\n }\n\n public getData() {\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n const config = getConfig();\n\n for (const entityKey of this.entities.keys()) {\n const entityNode = this.entities.get(entityKey);\n if (entityNode) {\n entityNode.cssCompiledStyles = this.getCompiledStyles(entityNode.cssClasses!.split(' '));\n nodes.push(entityNode as unknown as Node);\n }\n }\n\n let count = 0;\n for (const relationship of this.relationships) {\n const edge: Edge = {\n id: getEdgeId(relationship.entityA, relationship.entityB, {\n prefix: 'id',\n counter: count++,\n }),\n type: 'normal',\n curve: 'basis',\n start: relationship.entityA,\n end: relationship.entityB,\n label: relationship.roleA,\n labelpos: 'c',\n thickness: 'normal',\n classes: 'relationshipLine',\n arrowTypeStart: relationship.relSpec.cardB.toLowerCase(),\n arrowTypeEnd: relationship.relSpec.cardA.toLowerCase(),\n pattern: relationship.relSpec.relType == 'IDENTIFYING' ? 'solid' : 'dashed',\n look: config.look,\n labelType: 'markdown',\n };\n edges.push(edge);\n }\n return { nodes, edges, other: {}, config, direction: 'TB' };\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setAccDescription = setAccDescription;\n public getAccDescription = getAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getConfig = () => getConfig().er;\n}\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\nimport { select } from 'd3';\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing er diagram (unified)', id);\n const { securityLevel, er: conf, layout } = getConfig();\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n const data4Layout = diag.db.getData() as LayoutData;\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, securityLevel);\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n\n // Workaround as when rendering and setting up the graph it uses flowchart spacing before data4Layout spacing?\n data4Layout.config.flowchart!.nodeSpacing = conf?.nodeSpacing || 140;\n data4Layout.config.flowchart!.rankSpacing = conf?.rankSpacing || 80;\n data4Layout.direction = diag.db.getDirection();\n\n data4Layout.markers = ['only_one', 'zero_or_one', 'one_or_more', 'zero_or_more'];\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n // Elk layout algorithm displays markers above nodes, so move edges to top so they are \"painted\" over by the nodes.\n if (data4Layout.layoutAlgorithm === 'elk') {\n svg.select('.edges').lower();\n }\n\n // Sets the background nodes to the same position as their original counterparts.\n // Background nodes are created when the look is handDrawn so the ER diagram markers do not show underneath.\n const backgroundNodes = svg.selectAll('[id*=\"-background\"]');\n // eslint-disable-next-line unicorn/prefer-spread\n if (Array.from(backgroundNodes).length > 0) {\n backgroundNodes.each(function (this: SVGElement) {\n const backgroundNode = select(this);\n const backgroundId = backgroundNode.attr('id');\n\n const nonBackgroundId = backgroundId.replace('-background', '');\n const nonBackgroundNode = svg.select(`#${CSS.escape(nonBackgroundId)}`);\n\n if (!nonBackgroundNode.empty()) {\n const transform = nonBackgroundNode.attr('transform');\n backgroundNode.attr('transform', transform);\n }\n });\n }\n\n const padding = 8;\n utils.insertTitle(\n svg,\n 'erDiagramTitleText',\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n\n setupViewPortForSVG(svg, padding, 'erDiagram', conf?.useMaxWidth ?? true);\n};\n", "import * as khroma from 'khroma';\nimport type { FlowChartStyleOptions } from '../flowchart/styles.js';\n\nconst fade = (color: string, opacity: number) => {\n // @ts-ignore TODO: incorrect types from khroma\n const channel = khroma.channel;\n\n const r = channel(color, 'r');\n const g = channel(color, 'g');\n const b = channel(color, 'b');\n\n // @ts-ignore incorrect types from khroma\n return khroma.rgba(r, g, b, opacity);\n};\n\nconst getStyles = (options: FlowChartStyleOptions) =>\n `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .labelBkg {\n background-color: ${fade(options.tertiaryColor, 0.5)};\n }\n\n .edgeLabel .label {\n fill: ${options.nodeBorder};\n font-size: 14px;\n }\n\n .label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .edge-pattern-dashed {\n stroke-dasharray: 8,8;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon\n {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n }\n\n .marker {\n fill: none !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n \n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n }\n .edgeLabel .label rect {\n fill: ${options.edgeLabelBackground};\n }\n .edgeLabel .label text {\n fill: ${options.textColor};\n }\n`;\n\nexport default getStyles;\n", "// @ts-ignore: TODO: Fix ts errors\nimport erParser from './parser/erDiagram.jison';\nimport { ErDB } from './erDb.js';\nimport * as renderer from './erRenderer-unified.js';\nimport erStyles from './styles.js';\n\nexport const diagram = {\n parser: erParser,\n get db() {\n return new ErDB();\n },\n renderer,\n styles: erStyles,\n};\n"], - "mappings": "gpBAyEA,IAAIA,IAAU,UAAU,CACxB,IAAIC,EAAEC,EAAA,SAASC,EAAEC,EAAEH,EAAEI,EAAE,CAAC,IAAIJ,EAAEA,GAAG,CAAC,EAAEI,EAAEF,EAAE,OAAOE,IAAIJ,EAAEE,EAAEE,CAAC,CAAC,EAAED,EAAE,CAAC,OAAOH,CAAC,EAAhE,KAAkEK,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,GAAG,GAAG,GAAG,EAAE,EACr1BpD,GAAS,CAAC,MAAOE,EAAA,UAAkB,CAAE,EAApB,SACrB,GAAI,CAAC,EACL,SAAU,CAAC,MAAQ,EAAE,MAAQ,EAAE,WAAa,EAAE,SAAW,EAAE,IAAM,EAAE,KAAO,EAAE,MAAQ,EAAE,UAAY,EAAE,QAAU,GAAG,WAAa,GAAG,QAAU,GAAG,MAAQ,GAAG,KAAO,GAAG,gBAAkB,GAAG,OAAS,GAAG,YAAc,GAAG,WAAa,GAAG,WAAa,GAAG,IAAM,GAAG,IAAM,GAAG,MAAQ,GAAG,YAAc,GAAG,UAAY,GAAG,gBAAkB,GAAG,UAAY,GAAG,gBAAkB,GAAG,0BAA4B,GAAG,UAAY,GAAG,kBAAoB,GAAG,eAAiB,GAAG,eAAiB,GAAG,aAAe,GAAG,aAAe,GAAG,aAAe,GAAG,aAAe,GAAG,SAAW,GAAG,UAAY,GAAG,UAAY,GAAG,aAAe,GAAG,WAAa,GAAG,MAAQ,GAAG,MAAQ,GAAG,MAAQ,GAAG,MAAQ,GAAG,eAAiB,GAAG,KAAO,GAAG,IAAM,GAAG,KAAO,GAAG,YAAc,GAAG,YAAc,GAAG,WAAa,GAAG,UAAY,GAAG,cAAgB,GAAG,cAAgB,GAAG,qBAAuB,GAAG,iBAAmB,GAAG,eAAiB,GAAG,iBAAmB,GAAG,IAAI,GAAG,cAAgB,GAAG,QAAU,GAAG,YAAc,GAAG,QAAU,GAAG,YAAc,GAAG,aAAe,GAAG,YAAc,GAAG,SAAW,GAAG,UAAY,GAAG,gBAAkB,GAAG,YAAc,GAAG,KAAO,GAAG,QAAU,EAAE,KAAO,CAAC,EACtmC,WAAY,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,kBAAkB,GAAG,cAAc,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,GAAG,kBAAkB,GAAG,YAAY,GAAG,kBAAkB,GAAG,4BAA4B,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,WAAW,GAAG,eAAe,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,iBAAiB,GAAG,IAAI,GAAG,gBAAgB,GAAG,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,WAAW,GAAG,YAAY,GAAG,kBAAkB,GAAG,cAAc,GAAG,MAAM,EAC9rB,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "erDiagram_default", "parser", "ErDB", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "__name", "getConfig", "name", "alias", "log", "entityName", "attribs", "entity", "i", "entA", "rolA", "entB", "rSpec", "entityA", "entityB", "rel", "dir", "classDefs", "compiledStyles", "customClass", "cssClass", "s", "ids", "styles", "id", "style", "classNode", "newStyle", "classNames", "className", "clear", "nodes", "edges", "config", "entityKey", "entityNode", "count", "relationship", "edge", "getEdgeId", "erRenderer_unified_exports", "__export", "draw", "draw", "__name", "text", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "render", "backgroundNodes", "backgroundNode", "select_default", "nonBackgroundId", "nonBackgroundNode", "transform", "padding", "utils_default", "setupViewPortForSVG", "fade", "__name", "color", "opacity", "channel", "channel_default", "r", "g", "b", "rgba_default", "getStyles", "options", "styles_default", "diagram", "erDiagram_default", "ErDB", "erRenderer_unified_exports", "styles_default"] + "sourcesContent": ["/* 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,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],$V1=[1,10],$V2=[1,11],$V3=[1,12],$V4=[1,13],$V5=[1,23],$V6=[1,24],$V7=[1,25],$V8=[1,26],$V9=[1,27],$Va=[1,19],$Vb=[1,28],$Vc=[1,29],$Vd=[1,20],$Ve=[1,18],$Vf=[1,21],$Vg=[1,22],$Vh=[1,36],$Vi=[1,37],$Vj=[1,38],$Vk=[1,39],$Vl=[1,40],$Vm=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],$Vn=[1,45],$Vo=[1,46],$Vp=[1,55],$Vq=[40,48,50,51,52,70,71],$Vr=[1,66],$Vs=[1,64],$Vt=[1,61],$Vu=[1,65],$Vv=[1,67],$Vw=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],$Vx=[65,66,67,68,69],$Vy=[1,84],$Vz=[1,83],$VA=[1,81],$VB=[1,82],$VC=[6,10,42,47],$VD=[6,10,13,41,42,47,48,49],$VE=[1,92],$VF=[1,91],$VG=[1,90],$VH=[19,58],$VI=[1,101],$VJ=[1,100],$VK=[19,58,60,62];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NEWLINE\":10,\"entityName\":11,\"relSpec\":12,\"COLON\":13,\"role\":14,\"STYLE_SEPARATOR\":15,\"idList\":16,\"BLOCK_START\":17,\"attributes\":18,\"BLOCK_STOP\":19,\"SQS\":20,\"SQE\":21,\"title\":22,\"title_value\":23,\"acc_title\":24,\"acc_title_value\":25,\"acc_descr\":26,\"acc_descr_value\":27,\"acc_descr_multiline_value\":28,\"direction\":29,\"classDefStatement\":30,\"classStatement\":31,\"styleStatement\":32,\"direction_tb\":33,\"direction_bt\":34,\"direction_rl\":35,\"direction_lr\":36,\"CLASSDEF\":37,\"stylesOpt\":38,\"separator\":39,\"UNICODE_TEXT\":40,\"STYLE_TEXT\":41,\"COMMA\":42,\"CLASS\":43,\"STYLE\":44,\"style\":45,\"styleComponent\":46,\"SEMI\":47,\"NUM\":48,\"BRKT\":49,\"ENTITY_NAME\":50,\"DECIMAL_NUM\":51,\"ENTITY_ONE\":52,\"attribute\":53,\"attributeType\":54,\"attributeName\":55,\"attributeKeyTypeList\":56,\"attributeComment\":57,\"ATTRIBUTE_WORD\":58,\"attributeKeyType\":59,\",\":60,\"ATTRIBUTE_KEY\":61,\"COMMENT\":62,\"cardinality\":63,\"relType\":64,\"ZERO_OR_ONE\":65,\"ZERO_OR_MORE\":66,\"ONE_OR_MORE\":67,\"ONLY_ONE\":68,\"MD_PARENT\":69,\"NON_IDENTIFYING\":70,\"IDENTIFYING\":71,\"WORD\":72,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",8:\"SPACE\",10:\"NEWLINE\",13:\"COLON\",15:\"STYLE_SEPARATOR\",17:\"BLOCK_START\",19:\"BLOCK_STOP\",20:\"SQS\",21:\"SQE\",22:\"title\",23:\"title_value\",24:\"acc_title\",25:\"acc_title_value\",26:\"acc_descr\",27:\"acc_descr_value\",28:\"acc_descr_multiline_value\",33:\"direction_tb\",34:\"direction_bt\",35:\"direction_rl\",36:\"direction_lr\",37:\"CLASSDEF\",40:\"UNICODE_TEXT\",41:\"STYLE_TEXT\",42:\"COMMA\",43:\"CLASS\",44:\"STYLE\",47:\"SEMI\",48:\"NUM\",49:\"BRKT\",50:\"ENTITY_NAME\",51:\"DECIMAL_NUM\",52:\"ENTITY_ONE\",58:\"ATTRIBUTE_WORD\",60:\",\",61:\"ATTRIBUTE_KEY\",62:\"COMMENT\",65:\"ZERO_OR_ONE\",66:\"ZERO_OR_MORE\",67:\"ONE_OR_MORE\",68:\"ONLY_ONE\",69:\"MD_PARENT\",70:\"NON_IDENTIFYING\",71:\"IDENTIFYING\",72:\"WORD\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,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 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\n\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n \nbreak;\ncase 9:\n\n yy.addEntity($$[$0-8]);\n yy.addEntity($$[$0-4]);\n yy.addRelationship($$[$0-8], $$[$0], $$[$0-4], $$[$0-5]);\n yy.setClass([$$[$0-8]], $$[$0-6]);\n yy.setClass([$$[$0-4]], $$[$0-2]);\n \nbreak;\ncase 10:\n\n yy.addEntity($$[$0-6]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-6], $$[$0], $$[$0-2], $$[$0-3]);\n yy.setClass([$$[$0-6]], $$[$0-4]);\n \nbreak;\ncase 11:\n\n yy.addEntity($$[$0-6]);\n yy.addEntity($$[$0-4]);\n yy.addRelationship($$[$0-6], $$[$0], $$[$0-4], $$[$0-5]);\n yy.setClass([$$[$0-4]], $$[$0-2]);\n \nbreak;\ncase 12:\n\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n \nbreak;\ncase 13:\n\n yy.addEntity($$[$0-5]);\n yy.addAttributes($$[$0-5], $$[$0-1]);\n yy.setClass([$$[$0-5]], $$[$0-3]);\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0-4]); yy.setClass([$$[$0-4]], $$[$0-2]); \nbreak;\ncase 16:\n yy.addEntity($$[$0]); \nbreak;\ncase 17:\n yy.addEntity($$[$0-2]); yy.setClass([$$[$0-2]], $$[$0]); \nbreak;\ncase 18:\n\n yy.addEntity($$[$0-6], $$[$0-4]);\n yy.addAttributes($$[$0-6], $$[$0-1]);\n \nbreak;\ncase 19:\n\n yy.addEntity($$[$0-8], $$[$0-6]);\n yy.addAttributes($$[$0-8], $$[$0-1]);\n yy.setClass([$$[$0-8]], $$[$0-3]);\n\n \nbreak;\ncase 20:\n yy.addEntity($$[$0-5], $$[$0-3]); \nbreak;\ncase 21:\n yy.addEntity($$[$0-7], $$[$0-5]); yy.setClass([$$[$0-7]], $$[$0-2]); \nbreak;\ncase 22:\n yy.addEntity($$[$0-3], $$[$0-1]); \nbreak;\ncase 23:\n yy.addEntity($$[$0-5], $$[$0-3]); yy.setClass([$$[$0-5]], $$[$0]); \nbreak;\ncase 24: case 25:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 26: case 27:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 32:\n yy.setDirection('TB');\nbreak;\ncase 33:\n yy.setDirection('BT');\nbreak;\ncase 34:\n yy.setDirection('RL');\nbreak;\ncase 35:\n yy.setDirection('LR');\nbreak;\ncase 36:\nthis.$ = $$[$0-3];yy.addClass($$[$0-2],$$[$0-1]);\nbreak;\ncase 37: case 38: case 59: case 67:\n this.$ = [$$[$0]]; \nbreak;\ncase 39: case 40:\n this.$ = $$[$0-2].concat([$$[$0]]); \nbreak;\ncase 41:\nthis.$ = $$[$0-2];yy.setClass($$[$0-1], $$[$0]);\nbreak;\ncase 42:\n;this.$ = $$[$0-3];yy.addCssStyles($$[$0-2],$$[$0-1]);\nbreak;\ncase 43:\n this.$ = [$$[$0]] \nbreak;\ncase 44:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 46:\n this.$ = $$[$0-1] + $$[$0]; \nbreak;\ncase 54: case 79: case 80:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 55: case 56: case 57: case 58: case 81:\n this.$ = $$[$0]; \nbreak;\ncase 60:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 61:\n this.$ = { type: $$[$0-1], name: $$[$0] }; \nbreak;\ncase 62:\n this.$ = { type: $$[$0-2], name: $$[$0-1], keys: $$[$0] }; \nbreak;\ncase 63:\n this.$ = { type: $$[$0-2], name: $$[$0-1], comment: $$[$0] }; \nbreak;\ncase 64:\n this.$ = { type: $$[$0-3], name: $$[$0-2], keys: $$[$0-1], comment: $$[$0] }; \nbreak;\ncase 65: case 66: case 69:\n this.$=$$[$0]; \nbreak;\ncase 68:\n $$[$0-2].push($$[$0]); this.$ = $$[$0-2]; \nbreak;\ncase 70:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 71:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 72:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 73:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 74:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 75:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 76:\n this.$ = yy.Cardinality.MD_PARENT; \nbreak;\ncase 77:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 78:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:$V1,24:$V2,26:$V3,28:$V4,29:14,30:15,31:16,32:17,33:$V5,34:$V6,35:$V7,36:$V8,37:$V9,40:$Va,43:$Vb,44:$Vc,48:$Vd,50:$Ve,51:$Vf,52:$Vg},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:30,11:9,22:$V1,24:$V2,26:$V3,28:$V4,29:14,30:15,31:16,32:17,33:$V5,34:$V6,35:$V7,36:$V8,37:$V9,40:$Va,43:$Vb,44:$Vc,48:$Vd,50:$Ve,51:$Vf,52:$Vg},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:$Vh,66:$Vi,67:$Vj,68:$Vk,69:$Vl}),{23:[1,41]},{25:[1,42]},{27:[1,43]},o($V0,[2,27]),o($V0,[2,28]),o($V0,[2,29]),o($V0,[2,30]),o($V0,[2,31]),o($Vm,[2,54]),o($Vm,[2,55]),o($Vm,[2,56]),o($Vm,[2,57]),o($Vm,[2,58]),o($V0,[2,32]),o($V0,[2,33]),o($V0,[2,34]),o($V0,[2,35]),{16:44,40:$Vn,41:$Vo},{16:47,40:$Vn,41:$Vo},{16:48,40:$Vn,41:$Vo},o($V0,[2,4]),{11:49,40:$Va,48:$Vd,50:$Ve,51:$Vf,52:$Vg},{16:50,40:$Vn,41:$Vo},{18:51,19:[1,52],53:53,54:54,58:$Vp},{11:56,40:$Va,48:$Vd,50:$Ve,51:$Vf,52:$Vg},{64:57,70:[1,58],71:[1,59]},o($Vq,[2,72]),o($Vq,[2,73]),o($Vq,[2,74]),o($Vq,[2,75]),o($Vq,[2,76]),o($V0,[2,24]),o($V0,[2,25]),o($V0,[2,26]),{13:$Vr,38:60,41:$Vs,42:$Vt,45:62,46:63,48:$Vu,49:$Vv},o($Vw,[2,37]),o($Vw,[2,38]),{16:68,40:$Vn,41:$Vo,42:$Vt},{13:$Vr,38:69,41:$Vs,42:$Vt,45:62,46:63,48:$Vu,49:$Vv},{13:[1,70],15:[1,71]},o($V0,[2,17],{63:35,12:72,17:[1,73],42:$Vt,65:$Vh,66:$Vi,67:$Vj,68:$Vk,69:$Vl}),{19:[1,74]},o($V0,[2,14]),{18:75,19:[2,59],53:53,54:54,58:$Vp},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:$Vh,66:$Vi,67:$Vj,68:$Vk,69:$Vl},o($Vx,[2,77]),o($Vx,[2,78]),{6:$Vy,10:$Vz,39:80,42:$VA,47:$VB},{40:[1,85],41:[1,86]},o($VC,[2,43],{46:87,13:$Vr,41:$Vs,48:$Vu,49:$Vv}),o($VD,[2,45]),o($VD,[2,50]),o($VD,[2,51]),o($VD,[2,52]),o($VD,[2,53]),o($V0,[2,41],{42:$Vt}),{6:$Vy,10:$Vz,39:88,42:$VA,47:$VB},{14:89,40:$VE,50:$VF,72:$VG},{16:93,40:$Vn,41:$Vo},{11:94,40:$Va,48:$Vd,50:$Ve,51:$Vf,52:$Vg},{18:95,19:[1,96],53:53,54:54,58:$Vp},o($V0,[2,12]),{19:[2,60]},o($VH,[2,61],{56:97,57:98,59:99,61:$VI,62:$VJ}),o([19,58,61,62],[2,66]),o($V0,[2,22],{15:[1,103],17:[1,102]}),o([40,48,50,51,52],[2,71]),o($V0,[2,36]),{13:$Vr,41:$Vs,45:104,46:63,48:$Vu,49:$Vv},o($V0,[2,47]),o($V0,[2,48]),o($V0,[2,49]),o($Vw,[2,39]),o($Vw,[2,40]),o($VD,[2,46]),o($V0,[2,42]),o($V0,[2,8]),o($V0,[2,79]),o($V0,[2,80]),o($V0,[2,81]),{13:[1,105],42:$Vt},{13:[1,107],15:[1,106]},{19:[1,108]},o($V0,[2,15]),o($VH,[2,62],{57:109,60:[1,110],62:$VJ}),o($VH,[2,63]),o($VK,[2,67]),o($VH,[2,70]),o($VK,[2,69]),{18:111,19:[1,112],53:53,54:54,58:$Vp},{16:113,40:$Vn,41:$Vo},o($VC,[2,44],{46:87,13:$Vr,41:$Vs,48:$Vu,49:$Vv}),{14:114,40:$VE,50:$VF,72:$VG},{16:115,40:$Vn,41:$Vo},{14:116,40:$VE,50:$VF,72:$VG},o($V0,[2,13]),o($VH,[2,64]),{59:117,61:$VI},{19:[1,118]},o($V0,[2,20]),o($V0,[2,23],{17:[1,119],42:$Vt}),o($V0,[2,11]),{13:[1,120],42:$Vt},o($V0,[2,10]),o($VK,[2,68]),o($V0,[2,18]),{18:121,19:[1,122],53:53,54:54,58:$Vp},{14:123,40:$VE,50:$VF,72:$VG},{19:[1,124]},o($V0,[2,21]),o($V0,[2,9]),o($V0,[2,19])],\ndefaultActions: {55:[2,65],75:[2,60]},\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: this.begin(\"acc_title\");return 24; \nbreak;\ncase 1: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 2: this.begin(\"acc_descr\");return 26; \nbreak;\ncase 3: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 4: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 5: this.popState(); \nbreak;\ncase 6:return \"acc_descr_multiline_value\";\nbreak;\ncase 7:return 33;\nbreak;\ncase 8:return 34;\nbreak;\ncase 9:return 35;\nbreak;\ncase 10:return 36;\nbreak;\ncase 11:return 10;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 8;\nbreak;\ncase 14:return 50;\nbreak;\ncase 15:return 72;\nbreak;\ncase 16:return 4;\nbreak;\ncase 17: this.begin(\"block\"); return 17; \nbreak;\ncase 18:return 49;\nbreak;\ncase 19:return 49;\nbreak;\ncase 20:return 42;\nbreak;\ncase 21:return 15;\nbreak;\ncase 22:return 13;\nbreak;\ncase 23:/* skip whitespace in block */\nbreak;\ncase 24:return 61\nbreak;\ncase 25:return 58;\nbreak;\ncase 26:return 58;\nbreak;\ncase 27:return 62;\nbreak;\ncase 28:/* nothing */\nbreak;\ncase 29: this.popState(); return 19; \nbreak;\ncase 30:return yy_.yytext[0];\nbreak;\ncase 31:return 20;\nbreak;\ncase 32:return 21;\nbreak;\ncase 33: this.begin(\"style\"); return 44; \nbreak;\ncase 34: this.popState(); return 10; \nbreak;\ncase 35:/* skip whitespace in block */\nbreak;\ncase 36:return 13;\nbreak;\ncase 37:return 42;\nbreak;\ncase 38:return 49;\nbreak;\ncase 39: this.begin(\"style\"); return 37; \nbreak;\ncase 40:return 43;\nbreak;\ncase 41:return 65;\nbreak;\ncase 42:return 67;\nbreak;\ncase 43:return 67;\nbreak;\ncase 44:return 67;\nbreak;\ncase 45:return 65;\nbreak;\ncase 46:return 65;\nbreak;\ncase 47:return 66;\nbreak;\ncase 48:return 66;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 66;\nbreak;\ncase 51:return 66;\nbreak;\ncase 52:return 67;\nbreak;\ncase 53:return 66;\nbreak;\ncase 54:return 67;\nbreak;\ncase 55:return 68;\nbreak;\ncase 56:return 68;\nbreak;\ncase 57:return 51;\nbreak;\ncase 58:return 68;\nbreak;\ncase 59:return 68;\nbreak;\ncase 60:return 68;\nbreak;\ncase 61:return 52;\nbreak;\ncase 62:return 48;\nbreak;\ncase 63:return 68;\nbreak;\ncase 64:return 65;\nbreak;\ncase 65:return 66;\nbreak;\ncase 66:return 67;\nbreak;\ncase 67:return 69;\nbreak;\ncase 68:return 70;\nbreak;\ncase 69:return 71;\nbreak;\ncase 70:return 71;\nbreak;\ncase 71:return 70;\nbreak;\ncase 72:return 70;\nbreak;\ncase 73:return 70;\nbreak;\ncase 74:return 41;\nbreak;\ncase 75:return 47;\nbreak;\ncase 76:return 40;\nbreak;\ncase 77:return yy_.yytext[0];\nbreak;\ncase 78:return 6;\nbreak;\n}\n},\nrules: [/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"%\\r\\n\\v\\b\\\\]+\")/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\\s+)/i,/^(?:\\b((?:PK)|(?:FK)|(?:UK))\\b)/i,/^(?:([^\\s]*)[~].*[~]([^\\s]*))/i,/^(?:([\\*A-Za-z_\\u00C0-\\uFFFF][A-Za-z0-9\\-\\_\\[\\]\\(\\)\\u00C0-\\uFFFF\\*]*))/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:style\\b)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\\b)/i,/^(?:class\\b)/i,/^(?:one or zero\\b)/i,/^(?:one or more\\b)/i,/^(?:one or many\\b)/i,/^(?:1\\+)/i,/^(?:\\|o\\b)/i,/^(?:zero or one\\b)/i,/^(?:zero or more\\b)/i,/^(?:zero or many\\b)/i,/^(?:0\\+)/i,/^(?:\\}o\\b)/i,/^(?:many\\(0\\))/i,/^(?:many\\(1\\))/i,/^(?:many\\b)/i,/^(?:\\}\\|)/i,/^(?:one\\b)/i,/^(?:only one\\b)/i,/^(?:[0-9]+\\.[0-9]+)/i,/^(?:1(?=\\s+[A-Za-z_\"']))/i,/^(?:1(?=\\s+[0-9]))/i,/^(?:1(?=(--|\\.\\.|\\.-|-\\.)))/i,/^(?:1\\b)/i,/^(?:[0-9]+)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:u(?=[\\.\\-\\|]))/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:to\\b)/i,/^(?:optionally to\\b)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:([^\\x00-\\x7F]|\\w|-|\\*)+)/i,/^(?:;)/i,/^(?:([^\\x00-\\x7F]|\\w|-|\\*|\\.)+)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"style\":{\"rules\":[34,35,36,37,38,74,75],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[5,6],\"inclusive\":false},\"acc_descr\":{\"rules\":[3],\"inclusive\":false},\"acc_title\":{\"rules\":[1],\"inclusive\":false},\"block\":{\"rules\":[23,24,25,26,27,28,29,30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,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,72,73,76,77,78],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { Edge, Node } from '../../rendering-util/types.js';\nimport type { EntityNode, Attribute, Relationship, EntityClass, RelSpec } from './erTypes.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport { getEdgeId } from '../../utils.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\n\nexport class ErDB implements DiagramDB {\n private entities = new Map();\n private relationships: Relationship[] = [];\n private classes = new Map();\n private direction = 'TB';\n\n private Cardinality = {\n ZERO_OR_ONE: 'ZERO_OR_ONE',\n ZERO_OR_MORE: 'ZERO_OR_MORE',\n ONE_OR_MORE: 'ONE_OR_MORE',\n ONLY_ONE: 'ONLY_ONE',\n MD_PARENT: 'MD_PARENT',\n };\n\n private Identification = {\n NON_IDENTIFYING: 'NON_IDENTIFYING',\n IDENTIFYING: 'IDENTIFYING',\n };\n\n constructor() {\n this.clear();\n this.addEntity = this.addEntity.bind(this);\n this.addAttributes = this.addAttributes.bind(this);\n this.addRelationship = this.addRelationship.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.addCssStyles = this.addCssStyles.bind(this);\n this.addClass = this.addClass.bind(this);\n this.setClass = this.setClass.bind(this);\n this.setAccTitle = this.setAccTitle.bind(this);\n this.setAccDescription = this.setAccDescription.bind(this);\n }\n\n /**\n * Add entity\n * @param name - The name of the entity\n * @param alias - The alias of the entity\n */\n public addEntity(name: string, alias = ''): EntityNode {\n if (!this.entities.has(name)) {\n this.entities.set(name, {\n id: `entity-${name}-${this.entities.size}`,\n label: name,\n attributes: [],\n alias,\n shape: 'erBox',\n look: getConfig().look ?? 'default',\n cssClasses: 'default',\n cssStyles: [],\n labelType: 'markdown',\n });\n log.info('Added new entity :', name);\n } else if (!this.entities.get(name)?.alias && alias) {\n this.entities.get(name)!.alias = alias;\n log.info(`Add alias '${alias}' to entity '${name}'`);\n }\n\n return this.entities.get(name)!;\n }\n\n public getEntity(name: string) {\n return this.entities.get(name);\n }\n\n public getEntities() {\n return this.entities;\n }\n\n public getClasses() {\n return this.classes;\n }\n\n public addAttributes(entityName: string, attribs: Attribute[]) {\n const entity = this.addEntity(entityName); // May do nothing (if entity has already been added)\n\n // Process attribs in reverse order due to effect of recursive construction (last attribute is first)\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n if (!attribs[i].keys) {\n attribs[i].keys = [];\n }\n if (!attribs[i].comment) {\n attribs[i].comment = '';\n }\n entity.attributes.push(attribs[i]);\n log.debug('Added attribute ', attribs[i].name);\n }\n }\n\n /**\n * Add a relationship\n *\n * @param entA - The first entity in the relationship\n * @param rolA - The role played by the first entity in relation to the second\n * @param entB - The second entity in the relationship\n * @param rSpec - The details of the relationship between the two entities\n */\n public addRelationship(entA: string, rolA: string, entB: string, rSpec: RelSpec) {\n const entityA = this.entities.get(entA);\n const entityB = this.entities.get(entB);\n if (!entityA || !entityB) {\n return;\n }\n\n const rel = {\n entityA: entityA.id,\n roleA: rolA,\n entityB: entityB.id,\n relSpec: rSpec,\n };\n\n this.relationships.push(rel);\n log.debug('Added new relationship :', rel);\n }\n\n public getRelationships() {\n return this.relationships;\n }\n\n public getDirection() {\n return this.direction;\n }\n\n public setDirection(dir: string) {\n this.direction = dir;\n }\n\n private getCompiledStyles(classDefs: string[]) {\n let compiledStyles: string[] = [];\n for (const customClass of classDefs) {\n const cssClass = this.classes.get(customClass);\n if (cssClass?.styles) {\n compiledStyles = [...compiledStyles, ...(cssClass.styles ?? [])].map((s) => s.trim());\n }\n if (cssClass?.textStyles) {\n compiledStyles = [...compiledStyles, ...(cssClass.textStyles ?? [])].map((s) => s.trim());\n }\n }\n return compiledStyles;\n }\n\n public addCssStyles(ids: string[], styles: string[]) {\n for (const id of ids) {\n const entity = this.entities.get(id);\n if (!styles || !entity) {\n return;\n }\n for (const style of styles) {\n entity.cssStyles!.push(style);\n }\n }\n }\n\n public addClass(ids: string[], style: string[]) {\n ids.forEach((id) => {\n let classNode = this.classes.get(id);\n if (classNode === undefined) {\n classNode = { id, styles: [], textStyles: [] };\n this.classes.set(id, classNode);\n }\n\n if (style) {\n style.forEach(function (s) {\n if (/color/.exec(s)) {\n const newStyle = s.replace('fill', 'bgFill');\n classNode.textStyles.push(newStyle);\n }\n classNode.styles.push(s);\n });\n }\n });\n }\n\n public setClass(ids: string[], classNames: string[]) {\n for (const id of ids) {\n const entity = this.entities.get(id);\n if (entity) {\n for (const className of classNames) {\n entity.cssClasses += ' ' + className;\n }\n }\n }\n }\n\n public clear() {\n this.entities = new Map();\n this.classes = new Map();\n this.relationships = [];\n commonClear();\n }\n\n public getData() {\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n const config = getConfig();\n\n let colorIndex = 0;\n for (const entityKey of this.entities.keys()) {\n const entityNode = this.entities.get(entityKey);\n if (entityNode) {\n entityNode.cssCompiledStyles = this.getCompiledStyles(entityNode.cssClasses!.split(' '));\n entityNode.colorIndex = colorIndex++;\n nodes.push(entityNode as unknown as Node);\n }\n }\n\n let count = 0;\n for (const relationship of this.relationships) {\n const edge: Edge = {\n id: getEdgeId(relationship.entityA, relationship.entityB, {\n prefix: 'id',\n counter: count++,\n }),\n type: 'normal',\n curve: 'basis',\n start: relationship.entityA,\n end: relationship.entityB,\n label: relationship.roleA,\n labelpos: 'c',\n thickness: 'normal',\n classes: 'relationshipLine',\n arrowTypeStart: relationship.relSpec.cardB.toLowerCase(),\n arrowTypeEnd: relationship.relSpec.cardA.toLowerCase(),\n pattern: relationship.relSpec.relType == 'IDENTIFYING' ? 'solid' : 'dashed',\n look: config.look,\n labelType: 'markdown',\n };\n edges.push(edge);\n }\n return { nodes, edges, other: {}, config, direction: 'TB' };\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setAccDescription = setAccDescription;\n public getAccDescription = getAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getConfig = () => getConfig().er;\n}\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\nimport { select } from 'd3';\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing er diagram (unified)', id);\n const { securityLevel, er: conf, layout } = getConfig();\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n const data4Layout = diag.db.getData() as LayoutData;\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, securityLevel);\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n\n // Workaround as when rendering and setting up the graph it uses flowchart spacing before data4Layout spacing?\n data4Layout.config.flowchart!.nodeSpacing = conf?.nodeSpacing || 140;\n data4Layout.config.flowchart!.rankSpacing = conf?.rankSpacing || 80;\n data4Layout.direction = diag.db.getDirection();\n const { config } = data4Layout;\n const { look } = config;\n\n if (look === 'neo') {\n data4Layout.markers = [\n 'only_one_neo',\n 'zero_or_one_neo',\n 'one_or_more_neo',\n 'zero_or_more_neo',\n ];\n } else {\n data4Layout.markers = ['only_one', 'zero_or_one', 'one_or_more', 'zero_or_more'];\n }\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n // Elk layout algorithm displays markers above nodes, so move edges to top so they are \"painted\" over by the nodes.\n if (data4Layout.layoutAlgorithm === 'elk') {\n svg.select('.edges').lower();\n }\n\n // Sets the background nodes to the same position as their original counterparts.\n // Background nodes are created when the look is handDrawn so the ER diagram markers do not show underneath.\n const backgroundNodes = svg.selectAll('[id*=\"-background\"]');\n // eslint-disable-next-line unicorn/prefer-spread\n if (Array.from(backgroundNodes).length > 0) {\n backgroundNodes.each(function (this: SVGElement) {\n const backgroundNode = select(this);\n const backgroundId = backgroundNode.attr('id');\n\n const nonBackgroundId = backgroundId.replace('-background', '');\n const nonBackgroundNode = svg.select(`#${CSS.escape(nonBackgroundId)}`);\n\n if (!nonBackgroundNode.empty()) {\n const transform = nonBackgroundNode.attr('transform');\n backgroundNode.attr('transform', transform);\n }\n });\n }\n\n const padding = 8;\n utils.insertTitle(\n svg,\n 'erDiagramTitleText',\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n\n setupViewPortForSVG(svg, padding, 'erDiagram', conf?.useMaxWidth ?? true);\n};\n", "import * as khroma from 'khroma';\nimport type { DiagramStylesProvider } from '../../diagram-api/types.js';\n\nconst fade = (color: string, opacity: number) => {\n // @ts-ignore TODO: incorrect types from khroma\n const channel = khroma.channel;\n\n const r = channel(color, 'r');\n const g = channel(color, 'g');\n const b = channel(color, 'b');\n\n // @ts-ignore incorrect types from khroma\n return khroma.rgba(r, g, b, opacity);\n};\nconst COLOR_THEMES = new Set(['redux-color', 'redux-dark-color']);\n\nconst genColor: DiagramStylesProvider = (options) => {\n const { theme, look, bkgColorArray, borderColorArray } = options;\n if (!COLOR_THEMES.has(theme)) {\n return '';\n }\n const hasBkgColors = bkgColorArray?.length > 0;\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n\n [data-look=\"${look}\"][data-color-id=\"color-${i}\"].node path {\n stroke: ${borderColorArray[i]};\n ${hasBkgColors ? `fill: ${bkgColorArray[i]};` : ''}\n }\n\n [data-look=\"${look}\"][data-color-id=\"color-${i}\"].node rect {\n stroke: ${borderColorArray[i]};\n ${hasBkgColors ? `fill: ${bkgColorArray[i]};` : ''}\n }\n `;\n }\n return sections;\n};\n\nconst getStyles: DiagramStylesProvider = (options) => {\n const { look, theme, erEdgeLabelBackground, strokeWidth } = options;\n return `\n ${genColor(options)}\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .labelBkg {\n background-color: ${COLOR_THEMES.has(theme) && erEdgeLabelBackground ? erEdgeLabelBackground : fade(options.tertiaryColor, 0.5)};\n }\n\n .edgeLabel {\n background-color: ${COLOR_THEMES.has(theme) && erEdgeLabelBackground ? erEdgeLabelBackground : options.edgeLabelBackground};\n }\n .edgeLabel .label rect {\n fill: ${COLOR_THEMES.has(theme) && erEdgeLabelBackground ? erEdgeLabelBackground : options.edgeLabelBackground};\n }\n .edgeLabel .label text {\n fill: ${options.textColor};\n }\n\n .edgeLabel .label {\n fill: ${options.nodeBorder};\n font-size: 14px;\n }\n\n .label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .edge-pattern-dashed {\n stroke-dasharray: 8,8;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon\n {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: ${look === 'neo' ? strokeWidth : '1px'};\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n stroke-width: ${look === 'neo' ? strokeWidth : '1px'};\n fill: none;\n }\n\n .marker {\n fill: none !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n [data-look=neo].labelBkg {\n background-color: ${fade(options.tertiaryColor, 0.5)};\n }\n`;\n};\n\nexport default getStyles;\n", "// @ts-ignore: TODO: Fix ts errors\nimport erParser from './parser/erDiagram.jison';\nimport { ErDB } from './erDb.js';\nimport * as renderer from './erRenderer-unified.js';\nimport erStyles from './styles.js';\n\nexport const diagram = {\n parser: erParser,\n get db() {\n return new ErDB();\n },\n renderer,\n styles: erStyles,\n};\n"], + "mappings": "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,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "erDiagram_default", "parser", "ErDB", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "__name", "getConfig", "name", "alias", "log", "entityName", "attribs", "entity", "i", "entA", "rolA", "entB", "rSpec", "entityA", "entityB", "rel", "dir", "classDefs", "compiledStyles", "customClass", "cssClass", "s", "ids", "styles", "id", "style", "classNode", "newStyle", "classNames", "className", "clear", "nodes", "edges", "config", "colorIndex", "entityKey", "entityNode", "count", "relationship", "edge", "getEdgeId", "erRenderer_unified_exports", "__export", "draw", "draw", "__name", "text", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "config", "look", "render", "backgroundNodes", "backgroundNode", "select_default", "nonBackgroundId", "nonBackgroundNode", "transform", "padding", "utils_default", "setupViewPortForSVG", "fade", "__name", "color", "opacity", "channel", "channel_default", "r", "g", "b", "rgba_default", "COLOR_THEMES", "genColor", "options", "theme", "look", "bkgColorArray", "borderColorArray", "hasBkgColors", "sections", "i", "getStyles", "erEdgeLabelBackground", "strokeWidth", "styles_default", "diagram", "erDiagram_default", "ErDB", "erRenderer_unified_exports", "styles_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/eventmodeling-FCH6USID-MREXMVOE.mjs b/assets/mermaid/chunks/mermaid.esm.min/eventmodeling-FCH6USID-MREXMVOE.mjs new file mode 100644 index 0000000..a070084 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/eventmodeling-FCH6USID-MREXMVOE.mjs @@ -0,0 +1 @@ +import{a as e,b as o}from"./chunk-RLI5ZMPA.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{e as EventModelingModule,o as createEventModelingServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/gitGraph-HDMCJU4V-C6Y2HLJ7.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/eventmodeling-FCH6USID-MREXMVOE.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/gitGraph-HDMCJU4V-C6Y2HLJ7.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/eventmodeling-FCH6USID-MREXMVOE.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs b/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs new file mode 100644 index 0000000..bb0a799 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs @@ -0,0 +1,162 @@ +import{a as o1}from"./chunk-AZZRMDJM.mjs";import{a as s1,b as i1}from"./chunk-7FYTHRHK.mjs";import{h as t1}from"./chunk-LII3EMHJ.mjs";import{a as n1}from"./chunk-6764PJDD.mjs";import{a as l1}from"./chunk-ZXARS5L4.mjs";import{b as a1,c as u1}from"./chunk-VU6ZFW4Y.mjs";import"./chunk-7J6CGLKN.mjs";import{d as r1}from"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-5VCL7Z4A.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import{p as Ge,s as Qe}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{$ as at,G as Yt,S as Ht,T as qt,U as Xt,V as Qt,W as Jt,X as Zt,Y as $t,_ as $,aa as e1,b as jt,c as zt,y as Kt}from"./chunk-67TQ5CYL.mjs";import{b as Q,h as Xe}from"./chunk-7W6UQGC5.mjs";import{a as g}from"./chunk-AQ6EADP3.mjs";var m1="flowchart-",Je=class{constructor(){this.vertexCounter=0;this.config=$();this.diagramId="";this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=qt;this.setAccDescription=Qt;this.setDiagramTitle=Zt;this.getAccTitle=Xt;this.getAccDescription=Jt;this.getDiagramTitle=$t;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{g(this,"FlowDB")}sanitizeText(i){return Yt.sanitizeText(i,this.config)}sanitizeNodeLabelType(i){switch(i){case"markdown":case"string":case"text":return i;default:return"markdown"}}setDiagramId(i){this.diagramId=i}lookUpDomId(i){for(let n of this.vertices.values())if(n.id===i)return this.diagramId?`${this.diagramId}-${n.domId}`:n.domId;return this.diagramId?`${this.diagramId}-${i}`:i}addVertex(i,n,r,a,c,p,o={},k){if(!i||i.trim().length===0)return;let u;if(k!==void 0){let E;k.includes(` +`)?E=k+` +`:E=`{ +`+k+` +}`,u=i1(E,{schema:s1})}let A=this.edges.find(E=>E.id===i);if(A){let E=u;E?.animate!==void 0&&(A.animate=E.animate),E?.animation!==void 0&&(A.animation=E.animation),E?.curve!==void 0&&(A.interpolate=E.curve);return}let F,b=this.vertices.get(i);if(b===void 0&&(n===void 0&&r===void 0&&a!==void 0&&a!==null&&Q.warn(`Style applied to unknown node "${i}". This may indicate a typo. The node will be created automatically.`),b={id:i,labelType:"text",domId:m1+i+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(i,b)),this.vertexCounter++,n!==void 0?(this.config=$(),F=this.sanitizeText(n.text.trim()),b.labelType=n.type,F.startsWith('"')&&F.endsWith('"')&&(F=F.substring(1,F.length-1)),b.text=F):b.text===void 0&&(b.text=i),r!==void 0&&(b.type=r),a?.forEach(E=>{b.styles.push(E)}),c?.forEach(E=>{b.classes.push(E)}),p!==void 0&&(b.dir=p),b.props===void 0?b.props=o:o!==void 0&&Object.assign(b.props,o),u!==void 0){if(u.shape){if(u.shape!==u.shape.toLowerCase()||u.shape.includes("_"))throw new Error(`No such shape: ${u.shape}. Shape names should be lowercase.`);if(!r1(u.shape))throw new Error(`No such shape: ${u.shape}.`);b.type=u?.shape}u?.label&&(b.text=u?.label,b.labelType=this.sanitizeNodeLabelType(u?.labelType)),u?.icon&&(b.icon=u?.icon,!u.label?.trim()&&b.text===i&&(b.text="")),u?.form&&(b.form=u?.form),u?.pos&&(b.pos=u?.pos),u?.img&&(b.img=u?.img,!u.label?.trim()&&b.text===i&&(b.text="")),u?.constraint&&(b.constraint=u.constraint),u.w&&(b.assetWidth=Number(u.w)),u.h&&(b.assetHeight=Number(u.h))}}addSingleLink(i,n,r,a){let o={start:i,end:n,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};Q.info("abc78 Got edge...",o);let k=r.text;if(k!==void 0&&(o.text=this.sanitizeText(k.text.trim()),o.text.startsWith('"')&&o.text.endsWith('"')&&(o.text=o.text.substring(1,o.text.length-1)),o.labelType=this.sanitizeNodeLabelType(k.type)),r!==void 0&&(o.type=r.type,o.stroke=r.stroke,o.length=r.length>10?10:r.length),a&&!this.edges.some(u=>u.id===a))o.id=a,o.isUserDefinedId=!0;else{let u=this.edges.filter(A=>A.start===o.start&&A.end===o.end);u.length===0?o.id=Qe(o.start,o.end,{counter:0,prefix:"L"}):o.id=Qe(o.start,o.end,{counter:u.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Q.info("Pushing edge..."),this.edges.push(o);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.`)}isLinkData(i){return i!==null&&typeof i=="object"&&"id"in i&&typeof i.id=="string"}addLink(i,n,r){let a=this.isLinkData(r)?r.id.replace("@",""):void 0;Q.info("addLink",i,n,a);for(let c of i)for(let p of n){let o=c===i[i.length-1],k=p===n[0];o&&k?this.addSingleLink(c,p,r,a):this.addSingleLink(c,p,r,void 0)}}updateLinkInterpolate(i,n){i.forEach(r=>{r==="default"?this.edges.defaultInterpolate=n:this.edges[r].interpolate=n})}updateLink(i,n){i.forEach(r=>{if(typeof r=="number"&&r>=this.edges.length)throw new Error(`The index ${r} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);r==="default"?this.edges.defaultStyle=n:(this.edges[r].style=n,(this.edges[r]?.style?.length??0)>0&&!this.edges[r]?.style?.some(a=>a?.startsWith("fill"))&&this.edges[r]?.style?.push("fill:none"))})}addClass(i,n){let r=n.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");i.split(",").forEach(a=>{let c=this.classes.get(a);c===void 0&&(c={id:a,styles:[],textStyles:[]},this.classes.set(a,c)),r?.forEach(p=>{if(/color/.exec(p)){let o=p.replace("fill","bgFill");c.textStyles.push(o)}c.styles.push(p)})})}setDirection(i){this.direction=i.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(i,n){for(let r of i.split(",")){let a=this.vertices.get(r);a&&a.classes.push(n);let c=this.edges.find(o=>o.id===r);c&&c.classes.push(n);let p=this.subGraphLookup.get(r);p&&p.classes.push(n)}}setTooltip(i,n){if(n!==void 0){n=this.sanitizeText(n);for(let r of i.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(r):r,n)}}setClickFun(i,n,r){if($().securityLevel!=="loose"||n===void 0)return;let a=[];if(typeof r=="string"){a=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let p=0;p{let p=this.lookUpDomId(i),o=document.querySelector(`[id="${p}"]`);o!==null&&o.addEventListener("click",()=>{Ge.runFunc(n,...a)},!1)}))}setLink(i,n,r){i.split(",").forEach(a=>{let c=this.vertices.get(a);c!==void 0&&(c.link=Ge.formatUrl(n,this.config),c.linkTarget=r)}),this.setClass(i,"clickable")}getTooltip(i){return this.tooltips.get(i)}setClickEvent(i,n,r){i.split(",").forEach(a=>{this.setClickFun(a,n,r)}),this.setClass(i,"clickable")}bindFunctions(i){this.funs.forEach(n=>{n(i)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(i){let n=t1();Xe(i).select("svg").selectAll("g.node").on("mouseover",c=>{let p=Xe(c.currentTarget),o=p.attr("title");if(o===null)return;let k=c.currentTarget?.getBoundingClientRect();n.transition().duration(200).style("opacity",".9"),n.text(p.attr("title")).style("left",window.scrollX+k.left+(k.right-k.left)/2+"px").style("top",window.scrollY+k.bottom+"px"),n.html(Kt.sanitize(o)),p.classed("hover",!0)}).on("mouseout",c=>{n.transition().duration(500).style("opacity",0),Xe(c.currentTarget).classed("hover",!1)})}clear(i="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.diagramId="",this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=i,this.config=$(),Ht()}setGen(i){this.version=i||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(i,n,r){let a=i.text.trim(),c=r.text;i===r&&/\s/.exec(r.text)&&(a=void 0);let o=g(b=>{let E={boolean:{},number:{},string:{}},B=[],L;return{nodeList:b.filter(function(Y){let de=typeof Y;return Y.stmt&&Y.stmt==="dir"?(L=Y.value,!1):Y.trim()===""?!1:de in E?E[de].hasOwnProperty(Y)?!1:E[de][Y]=!0:B.includes(Y)?!1:B.push(Y)}),dir:L}},"uniq")(n.flat()),k=o.nodeList,u=o.dir,A=$().flowchart??{};if(u=u??(A.inheritDir?this.getDirection()??$().direction??void 0:void 0),this.version==="gen-1")for(let b=0;b2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=n,this.subGraphs[n].id===i)return{result:!0,count:0};let a=0,c=1;for(;a=0){let o=this.indexNodes2(i,p);if(o.result)return{result:!0,count:c+o.count};c=c+o.count}a=a+1}return{result:!1,count:c}}getDepthFirstPos(i){return this.posCrossRef[i]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(i){let n=i.trim(),r="arrow_open";switch(n[0]){case"<":r="arrow_point",n=n.slice(1);break;case"x":r="arrow_cross",n=n.slice(1);break;case"o":r="arrow_circle",n=n.slice(1);break}let a="normal";return n.includes("=")&&(a="thick"),n.includes(".")&&(a="dotted"),{type:r,stroke:a}}countChar(i,n){let r=n.length,a=0;for(let c=0;c":a="arrow_point",n.startsWith("<")&&(a="double_"+a,r=r.slice(1));break;case"o":a="arrow_circle",n.startsWith("o")&&(a="double_"+a,r=r.slice(1));break}let c="normal",p=r.length-1;r.startsWith("=")&&(c="thick"),r.startsWith("~")&&(c="invisible");let o=this.countChar(".",r);return o&&(c="dotted",p=o),{type:a,stroke:c,length:p}}destructLink(i,n){let r=this.destructEndLink(i),a;if(n){if(a=this.destructStartLink(n),a.stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if(a.type==="arrow_open")a.type=r.type;else{if(a.type!==r.type)return{type:"INVALID",stroke:"INVALID"};a.type="double_"+a.type}return a.type==="double_arrow"&&(a.type="double_arrow_point"),a.length=r.length,a}return r}exists(i,n){for(let r of i)if(r.nodes.includes(n))return!0;return!1}makeUniq(i,n){let r=[];return i.nodes.forEach((a,c)=>{this.exists(n,a)||r.push(i.nodes[c])}),{nodes:r}}getTypeFromVertex(i){if(i.img)return"imageSquare";if(i.icon)return i.form==="circle"?"iconCircle":i.form==="square"?"iconSquare":i.form==="rounded"?"iconRounded":"icon";switch(i.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return i.type}}findNode(i,n){return i.find(r=>r.id===n)}destructEdgeType(i){let n="none",r="arrow_point";switch(i){case"arrow_point":case"arrow_circle":case"arrow_cross":r=i;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":n=i.replace("double_",""),r=n;break}return{arrowTypeStart:n,arrowTypeEnd:r}}addNodeFromVertex(i,n,r,a,c,p){let o=r.get(i.id),k=a.get(i.id)??!1,u=this.findNode(n,i.id);if(u)u.cssStyles=i.styles,u.cssCompiledStyles=this.getCompiledStyles(i.classes),u.cssClasses=i.classes.join(" ");else{let A={id:i.id,label:i.text,labelType:i.labelType,labelStyle:"",parentId:o,padding:c.flowchart?.padding||8,cssStyles:i.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...i.classes]),cssClasses:"default "+i.classes.join(" "),dir:i.dir,domId:i.domId,look:p,link:i.link,linkTarget:i.linkTarget,tooltip:this.getTooltip(i.id),icon:i.icon,pos:i.pos,img:i.img,assetWidth:i.assetWidth,assetHeight:i.assetHeight,constraint:i.constraint};k?n.push({...A,isGroup:!0,shape:"rect"}):n.push({...A,isGroup:!1,shape:this.getTypeFromVertex(i)})}}getCompiledStyles(i){let n=[];for(let r of i){let a=this.classes.get(r);a?.styles&&(n=[...n,...a.styles??[]].map(c=>c.trim())),a?.textStyles&&(n=[...n,...a.textStyles??[]].map(c=>c.trim()))}return n}getData(){let i=$(),n=[],r=[],a=this.getSubGraphs(),c=new Map,p=new Map;for(let u=a.length-1;u>=0;u--){let A=a[u];A.nodes.length>0&&p.set(A.id,!0);for(let F of A.nodes)c.set(F,A.id)}for(let u=a.length-1;u>=0;u--){let A=a[u];n.push({id:A.id,label:A.title,labelStyle:"",labelType:A.labelType,parentId:c.get(A.id),padding:8,cssCompiledStyles:this.getCompiledStyles(A.classes),cssClasses:A.classes.join(" "),shape:"rect",dir:A.dir,isGroup:!0,look:i.look})}this.getVertices().forEach(u=>{this.addNodeFromVertex(u,n,c,p,i,i.look||"classic")});let k=this.getEdges();return k.forEach((u,A)=>{let{arrowTypeStart:F,arrowTypeEnd:b}=this.destructEdgeType(u.type),E=[...k.defaultStyle??[]];u.style&&E.push(...u.style);let B={id:Qe(u.start,u.end,{counter:A,prefix:"L"},u.id),isUserDefinedId:u.isUserDefinedId,start:u.start,end:u.end,type:u.type??"normal",label:u.text,labelType:u.labelType,labelpos:"c",thickness:u.stroke,minlen:u.length,classes:u?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:u?.stroke==="invisible"||u?.type==="arrow_open"?"none":F,arrowTypeEnd:u?.stroke==="invisible"||u?.type==="arrow_open"?"none":b,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(u.classes),labelStyle:E,style:E,pattern:u.stroke,look:i.look,animate:u.animate,animation:u.animation,curve:u.interpolate||this.edges.defaultInterpolate||i.flowchart?.curve};r.push(B)}),{nodes:n,edges:r,other:{},config:i}}defaultConfig(){return e1.flowchart}};var y1=g(function(s,i){return i.db.getClasses()},"getClasses"),D1=g(async function(s,i,n,r){Q.info("REF0:"),Q.info("Drawing state diagram (v2)",i);let{securityLevel:a,flowchart:c,layout:p}=$();r.db.setDiagramId(i),Q.debug("Before getData: ");let o=r.db.getData();Q.debug("Data: ",o);let k=n1(i,a),u=r.db.getDirection();o.type=r.type,o.layoutAlgorithm=u1(p),o.layoutAlgorithm==="dagre"&&p==="elk"&&Q.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),o.direction=u,o.nodeSpacing=c?.nodeSpacing||50,o.rankSpacing=c?.rankSpacing||50,o.markers=["point","circle","cross"],o.diagramId=i,Q.debug("REF1:",o),await a1(o,k);let A=o.config.flowchart?.diagramPadding??8;Ge.insertTitle(k,"flowchartTitleText",c?.titleTopMargin||0,r.db.getDiagramTitle()),l1(k,A,"flowchart",c?.useMaxWidth||!1)},"draw"),c1={getClasses:y1,draw:D1};var ut=(function(){var s=g(function(be,h,d,f){for(d=d||{},f=be.length;f--;d[be[f]]=h);return d},"o"),i=[1,4],n=[1,3],r=[1,5],a=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],c=[2,2],p=[1,13],o=[1,14],k=[1,15],u=[1,16],A=[1,23],F=[1,25],b=[1,26],E=[1,27],B=[1,50],L=[1,49],Re=[1,29],Y=[1,30],de=[1,31],Pe=[1,32],Me=[1,33],v=[1,45],w=[1,47],I=[1,43],N=[1,48],R=[1,44],G=[1,51],P=[1,46],M=[1,52],O=[1,53],Oe=[1,34],Ue=[1,35],We=[1,36],je=[1,37],ze=[1,38],pe=[1,58],T=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],ee=[1,62],te=[1,61],se=[1,63],ye=[8,9,11,75,77,78],ot=[1,79],De=[1,92],Ce=[1,97],Ee=[1,96],Te=[1,93],Se=[1,89],xe=[1,95],Fe=[1,91],Be=[1,98],_e=[1,94],Le=[1,99],Ve=[1,90],ge=[8,9,10,11,40,75,77,78],W=[8,9,10,11,40,46,75,77,78],H=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],ct=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],ve=[44,60,89,102,105,106,109,111,114,115,116],ht=[1,122],dt=[1,123],Ke=[1,125],Ye=[1,124],pt=[44,60,62,74,89,102,105,106,109,111,114,115,116],ft=[1,134],bt=[1,148],gt=[1,149],kt=[1,150],At=[1,151],mt=[1,136],yt=[1,138],Dt=[1,142],Ct=[1,143],Et=[1,144],Tt=[1,145],St=[1,146],xt=[1,147],Ft=[1,152],Bt=[1,153],_t=[1,132],Lt=[1,133],Vt=[1,140],vt=[1,135],wt=[1,139],It=[1,137],Ze=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],Nt=[1,155],Rt=[1,157],_=[8,9,11],q=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],m=[1,177],j=[1,173],z=[1,174],y=[1,178],D=[1,175],C=[1,176],we=[77,116,119],S=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],Gt=[10,106],fe=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],ie=[1,248],re=[1,246],ne=[1,250],ae=[1,244],ue=[1,245],le=[1,247],oe=[1,249],ce=[1,251],Ie=[1,269],Pt=[8,9,11,106],Z=[8,9,10,11,60,84,105,106,109,110,111,112],$e={trace:g(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,direction_td:125,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr",125:"direction_td"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1],[33,1]],performAction:g(function(h,d,f,l,x,e,ke){var t=e.length-1;switch(x){case 2:this.$=[];break;case 3:(!Array.isArray(e[t])||e[t].length>0)&&e[t-1].push(e[t]),this.$=e[t-1];break;case 4:case 183:this.$=e[t];break;case 11:l.setDirection("TB"),this.$="TB";break;case 12:l.setDirection(e[t-1]),this.$=e[t-1];break;case 27:this.$=e[t-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=l.addSubGraph(e[t-6],e[t-1],e[t-4]);break;case 34:this.$=l.addSubGraph(e[t-3],e[t-1],e[t-3]);break;case 35:this.$=l.addSubGraph(void 0,e[t-1],void 0);break;case 37:this.$=e[t].trim(),l.setAccTitle(this.$);break;case 38:case 39:this.$=e[t].trim(),l.setAccDescription(this.$);break;case 43:this.$=e[t-1]+e[t];break;case 44:this.$=e[t];break;case 45:l.addVertex(e[t-1][e[t-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,e[t]),l.addLink(e[t-3].stmt,e[t-1],e[t-2]),this.$={stmt:e[t-1],nodes:e[t-1].concat(e[t-3].nodes)};break;case 46:l.addLink(e[t-2].stmt,e[t],e[t-1]),this.$={stmt:e[t],nodes:e[t].concat(e[t-2].nodes)};break;case 47:l.addLink(e[t-3].stmt,e[t-1],e[t-2]),this.$={stmt:e[t-1],nodes:e[t-1].concat(e[t-3].nodes)};break;case 48:this.$={stmt:e[t-1],nodes:e[t-1]};break;case 49:l.addVertex(e[t-1][e[t-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,e[t]),this.$={stmt:e[t-1],nodes:e[t-1],shapeData:e[t]};break;case 50:this.$={stmt:e[t],nodes:e[t]};break;case 51:this.$=[e[t]];break;case 52:l.addVertex(e[t-5][e[t-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,e[t-4]),this.$=e[t-5].concat(e[t]);break;case 53:this.$=e[t-4].concat(e[t]);break;case 54:this.$=e[t];break;case 55:this.$=e[t-2],l.setClass(e[t-2],e[t]);break;case 56:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"square");break;case 57:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"doublecircle");break;case 58:this.$=e[t-5],l.addVertex(e[t-5],e[t-2],"circle");break;case 59:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"ellipse");break;case 60:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"stadium");break;case 61:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"subroutine");break;case 62:this.$=e[t-7],l.addVertex(e[t-7],e[t-1],"rect",void 0,void 0,void 0,Object.fromEntries([[e[t-5],e[t-3]]]));break;case 63:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"cylinder");break;case 64:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"round");break;case 65:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"diamond");break;case 66:this.$=e[t-5],l.addVertex(e[t-5],e[t-2],"hexagon");break;case 67:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"odd");break;case 68:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"trapezoid");break;case 69:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"inv_trapezoid");break;case 70:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"lean_right");break;case 71:this.$=e[t-3],l.addVertex(e[t-3],e[t-1],"lean_left");break;case 72:this.$=e[t],l.addVertex(e[t]);break;case 73:e[t-1].text=e[t],this.$=e[t-1];break;case 74:case 75:e[t-2].text=e[t-1],this.$=e[t-2];break;case 76:this.$=e[t];break;case 77:var V=l.destructLink(e[t],e[t-2]);this.$={type:V.type,stroke:V.stroke,length:V.length,text:e[t-1]};break;case 78:var V=l.destructLink(e[t],e[t-2]);this.$={type:V.type,stroke:V.stroke,length:V.length,text:e[t-1],id:e[t-3]};break;case 79:this.$={text:e[t],type:"text"};break;case 80:this.$={text:e[t-1].text+""+e[t],type:e[t-1].type};break;case 81:this.$={text:e[t],type:"string"};break;case 82:this.$={text:e[t],type:"markdown"};break;case 83:var V=l.destructLink(e[t]);this.$={type:V.type,stroke:V.stroke,length:V.length};break;case 84:var V=l.destructLink(e[t]);this.$={type:V.type,stroke:V.stroke,length:V.length,id:e[t-1]};break;case 85:this.$=e[t-1];break;case 86:this.$={text:e[t],type:"text"};break;case 87:this.$={text:e[t-1].text+""+e[t],type:e[t-1].type};break;case 88:this.$={text:e[t],type:"string"};break;case 89:case 104:this.$={text:e[t],type:"markdown"};break;case 101:this.$={text:e[t],type:"text"};break;case 102:this.$={text:e[t-1].text+""+e[t],type:e[t-1].type};break;case 103:this.$={text:e[t],type:"text"};break;case 105:this.$=e[t-4],l.addClass(e[t-2],e[t]);break;case 106:this.$=e[t-4],l.setClass(e[t-2],e[t]);break;case 107:case 115:this.$=e[t-1],l.setClickEvent(e[t-1],e[t]);break;case 108:case 116:this.$=e[t-3],l.setClickEvent(e[t-3],e[t-2]),l.setTooltip(e[t-3],e[t]);break;case 109:this.$=e[t-2],l.setClickEvent(e[t-2],e[t-1],e[t]);break;case 110:this.$=e[t-4],l.setClickEvent(e[t-4],e[t-3],e[t-2]),l.setTooltip(e[t-4],e[t]);break;case 111:this.$=e[t-2],l.setLink(e[t-2],e[t]);break;case 112:this.$=e[t-4],l.setLink(e[t-4],e[t-2]),l.setTooltip(e[t-4],e[t]);break;case 113:this.$=e[t-4],l.setLink(e[t-4],e[t-2],e[t]);break;case 114:this.$=e[t-6],l.setLink(e[t-6],e[t-4],e[t]),l.setTooltip(e[t-6],e[t-2]);break;case 117:this.$=e[t-1],l.setLink(e[t-1],e[t]);break;case 118:this.$=e[t-3],l.setLink(e[t-3],e[t-2]),l.setTooltip(e[t-3],e[t]);break;case 119:this.$=e[t-3],l.setLink(e[t-3],e[t-2],e[t]);break;case 120:this.$=e[t-5],l.setLink(e[t-5],e[t-4],e[t]),l.setTooltip(e[t-5],e[t-2]);break;case 121:this.$=e[t-4],l.addVertex(e[t-2],void 0,void 0,e[t]);break;case 122:this.$=e[t-4],l.updateLink([e[t-2]],e[t]);break;case 123:this.$=e[t-4],l.updateLink(e[t-2],e[t]);break;case 124:this.$=e[t-8],l.updateLinkInterpolate([e[t-6]],e[t-2]),l.updateLink([e[t-6]],e[t]);break;case 125:this.$=e[t-8],l.updateLinkInterpolate(e[t-6],e[t-2]),l.updateLink(e[t-6],e[t]);break;case 126:this.$=e[t-6],l.updateLinkInterpolate([e[t-4]],e[t]);break;case 127:this.$=e[t-6],l.updateLinkInterpolate(e[t-4],e[t]);break;case 128:case 130:this.$=[e[t]];break;case 129:case 131:e[t-2].push(e[t]),this.$=e[t-2];break;case 133:this.$=e[t-1]+e[t];break;case 181:this.$=e[t];break;case 182:this.$=e[t-1]+""+e[t];break;case 184:this.$=e[t-1]+""+e[t];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break;case 189:this.$={stmt:"dir",value:"TD"};break}},"anonymous"),table:[{3:1,4:2,9:i,10:n,12:r},{1:[3]},s(a,c,{5:6}),{4:7,9:i,10:n,12:r},{4:8,9:i,10:n,12:r},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:p,9:o,10:k,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:A,33:24,34:F,36:b,38:E,42:28,43:39,44:B,45:40,47:41,60:L,84:Re,85:Y,86:de,87:Pe,88:Me,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O,121:Oe,122:Ue,123:We,124:je,125:ze},s(a,[2,9]),s(a,[2,10]),s(a,[2,11]),{8:[1,55],9:[1,56],10:pe,15:54,18:57},s(T,[2,3]),s(T,[2,4]),s(T,[2,5]),s(T,[2,6]),s(T,[2,7]),s(T,[2,8]),{8:ee,9:te,11:se,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:ee,9:te,11:se,21:68},{8:ee,9:te,11:se,21:69},{8:ee,9:te,11:se,21:70},{8:ee,9:te,11:se,21:71},{8:ee,9:te,11:se,21:72},{8:ee,9:te,10:[1,73],11:se,21:74},s(T,[2,36]),{35:[1,75]},{37:[1,76]},s(T,[2,39]),s(ye,[2,50],{18:77,39:78,10:pe,40:ot}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:De,44:Ce,60:Ee,80:[1,87],89:Te,95:[1,84],97:[1,85],101:86,105:Se,106:xe,109:Fe,111:Be,114:_e,115:Le,116:Ve,120:88},s(T,[2,185]),s(T,[2,186]),s(T,[2,187]),s(T,[2,188]),s(T,[2,189]),s(ge,[2,51]),s(ge,[2,54],{46:[1,100]}),s(W,[2,72],{113:113,29:[1,101],44:B,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:L,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:v,102:w,105:I,106:N,109:R,111:G,114:P,115:M,116:O}),s(H,[2,181]),s(H,[2,142]),s(H,[2,143]),s(H,[2,144]),s(H,[2,145]),s(H,[2,146]),s(H,[2,147]),s(H,[2,148]),s(H,[2,149]),s(H,[2,150]),s(H,[2,151]),s(H,[2,152]),s(a,[2,12]),s(a,[2,18]),s(a,[2,19]),{9:[1,114]},s(ct,[2,26],{18:115,10:pe}),s(T,[2,27]),{42:116,43:39,44:B,45:40,47:41,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},s(T,[2,40]),s(T,[2,41]),s(T,[2,42]),s(ve,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:ht,81:dt,116:Ke,119:Ye},{75:[1,126],77:[1,127]},s(pt,[2,83]),s(T,[2,28]),s(T,[2,29]),s(T,[2,30]),s(T,[2,31]),s(T,[2,32]),{10:ft,12:bt,14:gt,27:kt,28:128,32:At,44:mt,60:yt,75:Dt,80:[1,130],81:[1,131],83:141,84:Ct,85:Et,86:Tt,87:St,88:xt,89:Ft,90:Bt,91:129,105:_t,109:Lt,111:Vt,114:vt,115:wt,116:It},s(Ze,c,{5:154}),s(T,[2,37]),s(T,[2,38]),s(ye,[2,48],{44:Nt}),s(ye,[2,49],{18:156,10:pe,40:Rt}),s(ge,[2,44]),{44:B,47:158,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},{102:[1,159],103:160,105:[1,161]},{44:B,47:162,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},{44:B,47:163,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},s(_,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},s(_,[2,115],{120:168,10:[1,167],14:De,44:Ce,60:Ee,89:Te,105:Se,106:xe,109:Fe,111:Be,114:_e,115:Le,116:Ve}),s(_,[2,117],{10:[1,169]}),s(q,[2,183]),s(q,[2,170]),s(q,[2,171]),s(q,[2,172]),s(q,[2,173]),s(q,[2,174]),s(q,[2,175]),s(q,[2,176]),s(q,[2,177]),s(q,[2,178]),s(q,[2,179]),s(q,[2,180]),{44:B,47:170,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},{30:171,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:179,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:181,50:[1,180],67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:182,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:183,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:184,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{109:[1,185]},{30:186,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:187,65:[1,188],67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:189,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:190,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{30:191,67:m,80:j,81:z,82:172,116:y,117:D,118:C},s(H,[2,182]),s(a,[2,20]),s(ct,[2,25]),s(ye,[2,46],{39:192,18:193,10:pe,40:ot}),s(ve,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{77:[1,197],79:198,116:Ke,119:Ye},s(we,[2,79]),s(we,[2,81]),s(we,[2,82]),s(we,[2,168]),s(we,[2,169]),{76:199,79:121,80:ht,81:dt,116:Ke,119:Ye},s(pt,[2,84]),{8:ee,9:te,10:ft,11:se,12:bt,14:gt,21:201,27:kt,29:[1,200],32:At,44:mt,60:yt,75:Dt,83:141,84:Ct,85:Et,86:Tt,87:St,88:xt,89:Ft,90:Bt,91:202,105:_t,109:Lt,111:Vt,114:vt,115:wt,116:It},s(S,[2,101]),s(S,[2,103]),s(S,[2,104]),s(S,[2,157]),s(S,[2,158]),s(S,[2,159]),s(S,[2,160]),s(S,[2,161]),s(S,[2,162]),s(S,[2,163]),s(S,[2,164]),s(S,[2,165]),s(S,[2,166]),s(S,[2,167]),s(S,[2,90]),s(S,[2,91]),s(S,[2,92]),s(S,[2,93]),s(S,[2,94]),s(S,[2,95]),s(S,[2,96]),s(S,[2,97]),s(S,[2,98]),s(S,[2,99]),s(S,[2,100]),{6:11,7:12,8:p,9:o,10:k,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:A,32:[1,203],33:24,34:F,36:b,38:E,42:28,43:39,44:B,45:40,47:41,60:L,84:Re,85:Y,86:de,87:Pe,88:Me,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O,121:Oe,122:Ue,123:We,124:je,125:ze},{10:pe,18:204},{44:[1,205]},s(ge,[2,43]),{10:[1,206],44:B,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:113,114:P,115:M,116:O},{10:[1,207]},{10:[1,208],106:[1,209]},s(Gt,[2,128]),{10:[1,210],44:B,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:113,114:P,115:M,116:O},{10:[1,211],44:B,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:113,114:P,115:M,116:O},{80:[1,212]},s(_,[2,109],{10:[1,213]}),s(_,[2,111],{10:[1,214]}),{80:[1,215]},s(q,[2,184]),{80:[1,216],98:[1,217]},s(ge,[2,55],{113:113,44:B,60:L,89:v,102:w,105:I,106:N,109:R,111:G,114:P,115:M,116:O}),{31:[1,218],67:m,82:219,116:y,117:D,118:C},s(fe,[2,86]),s(fe,[2,88]),s(fe,[2,89]),s(fe,[2,153]),s(fe,[2,154]),s(fe,[2,155]),s(fe,[2,156]),{49:[1,220],67:m,82:219,116:y,117:D,118:C},{30:221,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{51:[1,222],67:m,82:219,116:y,117:D,118:C},{53:[1,223],67:m,82:219,116:y,117:D,118:C},{55:[1,224],67:m,82:219,116:y,117:D,118:C},{57:[1,225],67:m,82:219,116:y,117:D,118:C},{60:[1,226]},{64:[1,227],67:m,82:219,116:y,117:D,118:C},{66:[1,228],67:m,82:219,116:y,117:D,118:C},{30:229,67:m,80:j,81:z,82:172,116:y,117:D,118:C},{31:[1,230],67:m,82:219,116:y,117:D,118:C},{67:m,69:[1,231],71:[1,232],82:219,116:y,117:D,118:C},{67:m,69:[1,234],71:[1,233],82:219,116:y,117:D,118:C},s(ye,[2,45],{18:156,10:pe,40:Rt}),s(ye,[2,47],{44:Nt}),s(ve,[2,75]),s(ve,[2,74]),{62:[1,235],67:m,82:219,116:y,117:D,118:C},s(ve,[2,77]),s(we,[2,80]),{77:[1,236],79:198,116:Ke,119:Ye},{30:237,67:m,80:j,81:z,82:172,116:y,117:D,118:C},s(Ze,c,{5:238}),s(S,[2,102]),s(T,[2,35]),{43:239,44:B,45:40,47:41,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},{10:pe,18:240},{10:ie,60:re,84:ne,92:241,105:ae,107:242,108:243,109:ue,110:le,111:oe,112:ce},{10:ie,60:re,84:ne,92:252,104:[1,253],105:ae,107:242,108:243,109:ue,110:le,111:oe,112:ce},{10:ie,60:re,84:ne,92:254,104:[1,255],105:ae,107:242,108:243,109:ue,110:le,111:oe,112:ce},{105:[1,256]},{10:ie,60:re,84:ne,92:257,105:ae,107:242,108:243,109:ue,110:le,111:oe,112:ce},{44:B,47:258,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},s(_,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},s(_,[2,116]),s(_,[2,118],{10:[1,262]}),s(_,[2,119]),s(W,[2,56]),s(fe,[2,87]),s(W,[2,57]),{51:[1,263],67:m,82:219,116:y,117:D,118:C},s(W,[2,64]),s(W,[2,59]),s(W,[2,60]),s(W,[2,61]),{109:[1,264]},s(W,[2,63]),s(W,[2,65]),{66:[1,265],67:m,82:219,116:y,117:D,118:C},s(W,[2,67]),s(W,[2,68]),s(W,[2,70]),s(W,[2,69]),s(W,[2,71]),s([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),s(ve,[2,78]),{31:[1,266],67:m,82:219,116:y,117:D,118:C},{6:11,7:12,8:p,9:o,10:k,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:A,32:[1,267],33:24,34:F,36:b,38:E,42:28,43:39,44:B,45:40,47:41,60:L,84:Re,85:Y,86:de,87:Pe,88:Me,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O,121:Oe,122:Ue,123:We,124:je,125:ze},s(ge,[2,53]),{43:268,44:B,45:40,47:41,60:L,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},s(_,[2,121],{106:Ie}),s(Pt,[2,130],{108:270,10:ie,60:re,84:ne,105:ae,109:ue,110:le,111:oe,112:ce}),s(Z,[2,132]),s(Z,[2,134]),s(Z,[2,135]),s(Z,[2,136]),s(Z,[2,137]),s(Z,[2,138]),s(Z,[2,139]),s(Z,[2,140]),s(Z,[2,141]),s(_,[2,122],{106:Ie}),{10:[1,271]},s(_,[2,123],{106:Ie}),{10:[1,272]},s(Gt,[2,129]),s(_,[2,105],{106:Ie}),s(_,[2,106],{113:113,44:B,60:L,89:v,102:w,105:I,106:N,109:R,111:G,114:P,115:M,116:O}),s(_,[2,110]),s(_,[2,112],{10:[1,273]}),s(_,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:ee,9:te,11:se,21:278},s(T,[2,34]),s(ge,[2,52]),{10:ie,60:re,84:ne,105:ae,107:279,108:243,109:ue,110:le,111:oe,112:ce},s(Z,[2,133]),{14:De,44:Ce,60:Ee,89:Te,101:280,105:Se,106:xe,109:Fe,111:Be,114:_e,115:Le,116:Ve,120:88},{14:De,44:Ce,60:Ee,89:Te,101:281,105:Se,106:xe,109:Fe,111:Be,114:_e,115:Le,116:Ve,120:88},{98:[1,282]},s(_,[2,120]),s(W,[2,58]),{30:283,67:m,80:j,81:z,82:172,116:y,117:D,118:C},s(W,[2,66]),s(Ze,c,{5:284}),s(Pt,[2,131],{108:270,10:ie,60:re,84:ne,105:ae,109:ue,110:le,111:oe,112:ce}),s(_,[2,126],{120:168,10:[1,285],14:De,44:Ce,60:Ee,89:Te,105:Se,106:xe,109:Fe,111:Be,114:_e,115:Le,116:Ve}),s(_,[2,127],{120:168,10:[1,286],14:De,44:Ce,60:Ee,89:Te,105:Se,106:xe,109:Fe,111:Be,114:_e,115:Le,116:Ve}),s(_,[2,114]),{31:[1,287],67:m,82:219,116:y,117:D,118:C},{6:11,7:12,8:p,9:o,10:k,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:A,32:[1,288],33:24,34:F,36:b,38:E,42:28,43:39,44:B,45:40,47:41,60:L,84:Re,85:Y,86:de,87:Pe,88:Me,89:v,102:w,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O,121:Oe,122:Ue,123:We,124:je,125:ze},{10:ie,60:re,84:ne,92:289,105:ae,107:242,108:243,109:ue,110:le,111:oe,112:ce},{10:ie,60:re,84:ne,92:290,105:ae,107:242,108:243,109:ue,110:le,111:oe,112:ce},s(W,[2,62]),s(T,[2,33]),s(_,[2,124],{106:Ie}),s(_,[2,125],{106:Ie})],defaultActions:{},parseError:g(function(h,d){if(d.recoverable)this.trace(h);else{var f=new Error(h);throw f.hash=d,f}},"parseError"),parse:g(function(h){var d=this,f=[0],l=[],x=[null],e=[],ke=this.table,t="",V=0,Mt=0,Ot=0,b1=2,Ut=1,g1=e.slice.call(arguments,1),U=Object.create(this.lexer),Ae={yy:{}};for(var tt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,tt)&&(Ae.yy[tt]=this.yy[tt]);U.setInput(h,Ae.yy),Ae.yy.lexer=U,Ae.yy.parser=this,typeof U.yylloc>"u"&&(U.yylloc={});var st=U.yylloc;e.push(st);var k1=U.options&&U.options.ranges;typeof Ae.yy.parseError=="function"?this.parseError=Ae.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function T1(X){f.length=f.length-2*X,x.length=x.length-X,e.length=e.length-X}g(T1,"popStack");function A1(){var X;return X=l.pop()||U.lex()||Ut,typeof X!="number"&&(X instanceof Array&&(l=X,X=l.pop()),X=d.symbols_[X]||X),X}g(A1,"lex");for(var K,it,me,J,S1,rt,Ne={},He,he,Wt,qe;;){if(me=f[f.length-1],this.defaultActions[me]?J=this.defaultActions[me]:((K===null||typeof K>"u")&&(K=A1()),J=ke[me]&&ke[me][K]),typeof J>"u"||!J.length||!J[0]){var nt="";qe=[];for(He in ke[me])this.terminals_[He]&&He>b1&&qe.push("'"+this.terminals_[He]+"'");U.showPosition?nt="Parse error on line "+(V+1)+`: +`+U.showPosition()+` +Expecting `+qe.join(", ")+", got '"+(this.terminals_[K]||K)+"'":nt="Parse error on line "+(V+1)+": Unexpected "+(K==Ut?"end of input":"'"+(this.terminals_[K]||K)+"'"),this.parseError(nt,{text:U.match,token:this.terminals_[K]||K,line:U.yylineno,loc:st,expected:qe})}if(J[0]instanceof Array&&J.length>1)throw new Error("Parse Error: multiple actions possible at state: "+me+", token: "+K);switch(J[0]){case 1:f.push(K),x.push(U.yytext),e.push(U.yylloc),f.push(J[1]),K=null,it?(K=it,it=null):(Mt=U.yyleng,t=U.yytext,V=U.yylineno,st=U.yylloc,Ot>0&&Ot--);break;case 2:if(he=this.productions_[J[1]][1],Ne.$=x[x.length-he],Ne._$={first_line:e[e.length-(he||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(he||1)].first_column,last_column:e[e.length-1].last_column},k1&&(Ne._$.range=[e[e.length-(he||1)].range[0],e[e.length-1].range[1]]),rt=this.performAction.apply(Ne,[t,Mt,V,Ae.yy,J[1],x,e].concat(g1)),typeof rt<"u")return rt;he&&(f=f.slice(0,-1*he*2),x=x.slice(0,-1*he),e=e.slice(0,-1*he)),f.push(this.productions_[J[1]][0]),x.push(Ne.$),e.push(Ne._$),Wt=ke[f[f.length-2]][f[f.length-1]],f.push(Wt);break;case 3:return!0}}return!0},"parse")},f1=(function(){var be={EOF:1,parseError:g(function(d,f){if(this.yy.parser)this.yy.parser.parseError(d,f);else throw new Error(d)},"parseError"),setInput:g(function(h,d){return this.yy=d||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:g(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var d=h.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:g(function(h){var d=h.length,f=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d),this.offset-=d;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),f.length-1&&(this.yylineno-=f.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:f?(f.length===l.length?this.yylloc.first_column:0)+l[l.length-f.length].length-f[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-d]),this.yyleng=this.yytext.length,this},"unput"),more:g(function(){return this._more=!0,this},"more"),reject:g(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:g(function(h){this.unput(this.match.slice(h))},"less"),pastInput:g(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:g(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:g(function(){var h=this.pastInput(),d=new Array(h.length+1).join("-");return h+this.upcomingInput()+` +`+d+"^"},"showPosition"),test_match:g(function(h,d){var f,l,x;if(this.options.backtrack_lexer&&(x={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(x.yylloc.range=this.yylloc.range.slice(0))),l=h[0].match(/(?:\r\n?|\n).*/g),l&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+h[0].length},this.yytext+=h[0],this.match+=h[0],this.matches=h,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(h[0].length),this.matched+=h[0],f=this.performAction.call(this,this.yy,this,d,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),f)return f;if(this._backtrack){for(var e in x)this[e]=x[e];return!1}return!1},"test_match"),next:g(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var h,d,f,l;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),e=0;ed[0].length)){if(d=f,l=e,this.options.backtrack_lexer){if(h=this.test_match(f,x[e]),h!==!1)return h;if(this._backtrack){d=!1;continue}else return!1}else if(!this.options.flex)break}return d?(h=this.test_match(d,x[l]),h!==!1?h:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:g(function(){var d=this.next();return d||this.lex()},"lex"),begin:g(function(d){this.conditionStack.push(d)},"begin"),popState:g(function(){var d=this.conditionStack.length-1;return d>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:g(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:g(function(d){return d=this.conditionStack.length-1-Math.abs(d||0),d>=0?this.conditionStack[d]:"INITIAL"},"topState"),pushState:g(function(d){this.begin(d)},"pushState"),stateStackSize:g(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:g(function(d,f,l,x){var e=x;switch(l){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),f.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let ke=/\n\s*/g;return f.yytext=f.yytext.replace(ke,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return d.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return d.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return d.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 125;case 60:return 78;case 61:return 105;case 62:return 111;case 63:return 46;case 64:return 60;case 65:return 44;case 66:return 8;case 67:return 106;case 68:return 115;case 69:return this.popState(),77;break;case 70:return this.pushState("edgeText"),75;break;case 71:return 119;case 72:return this.popState(),77;break;case 73:return this.pushState("thickEdgeText"),75;break;case 74:return 119;case 75:return this.popState(),77;break;case 76:return this.pushState("dottedEdgeText"),75;break;case 77:return 119;case 78:return 77;case 79:return this.popState(),53;break;case 80:return"TEXT";case 81:return this.pushState("ellipseText"),52;break;case 82:return this.popState(),55;break;case 83:return this.pushState("text"),54;break;case 84:return this.popState(),57;break;case 85:return this.pushState("text"),56;break;case 86:return 58;case 87:return this.pushState("text"),67;break;case 88:return this.popState(),64;break;case 89:return this.pushState("text"),63;break;case 90:return this.popState(),49;break;case 91:return this.pushState("text"),48;break;case 92:return this.popState(),69;break;case 93:return this.popState(),71;break;case 94:return 117;case 95:return this.pushState("trapText"),68;break;case 96:return this.pushState("trapText"),70;break;case 97:return 118;case 98:return 67;case 99:return 90;case 100:return"SEP";case 101:return 89;case 102:return 115;case 103:return 111;case 104:return 44;case 105:return 109;case 106:return 114;case 107:return 116;case 108:return this.popState(),62;break;case 109:return this.pushState("text"),62;break;case 110:return this.popState(),51;break;case 111:return this.pushState("text"),50;break;case 112:return this.popState(),31;break;case 113:return this.pushState("text"),29;break;case 114:return this.popState(),66;break;case 115:return this.pushState("text"),65;break;case 116:return"TEXT";case 117:return"QUOTE";case 118:return 9;case 119:return 10;case 120:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?: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]*)/,/^(?:.*direction\s+TD[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-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])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},shapeData:{rules:[8,11,12,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},callbackargs:{rules:[17,18,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},callbackname:{rules:[14,15,16,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},href:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},click:{rules:[21,24,33,34,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},dottedEdgeText:{rules:[21,24,75,77,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},thickEdgeText:{rules:[21,24,72,74,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},edgeText:{rules:[21,24,69,71,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},trapText:{rules:[21,24,78,81,83,85,89,91,92,93,94,95,96,109,111,113,115],inclusive:!1},ellipseText:{rules:[21,24,78,79,80,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},text:{rules:[21,24,78,81,82,83,84,85,88,89,90,91,95,96,108,109,110,111,112,113,114,115,116],inclusive:!1},vertex:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_descr:{rules:[3,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_title:{rules:[1,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},md_string:{rules:[19,20,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},string:{rules:[21,22,23,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,75,76,78,81,83,85,86,87,89,91,95,96,97,98,99,100,101,102,103,104,105,106,107,109,111,113,115,117,118,119,120],inclusive:!0}}};return be})();$e.lexer=f1;function et(){this.yy={}}return g(et,"Parser"),et.prototype=$e,$e.Parser=et,new et})();ut.parser=ut;var lt=ut;var h1=Object.assign({},lt);h1.parse=s=>{let i=s.replace(/}\s*\n/g,`} +`);return lt.parse(i)};var d1=h1;var C1=g((s,i)=>{let n=zt,r=n(s,"r"),a=n(s,"g"),c=n(s,"b");return jt(r,a,c,i)},"fade"),E1=g(s=>`.label { + font-family: ${s.fontFamily}; + color: ${s.nodeTextColor||s.textColor}; + } + .cluster-label text { + fill: ${s.titleColor}; + } + .cluster-label span { + color: ${s.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .label text,span { + fill: ${s.nodeTextColor||s.textColor}; + color: ${s.nodeTextColor||s.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${s.mainBkg}; + stroke: ${s.nodeBorder}; + stroke-width: ${s.strokeWidth??1}px; + } + .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .katex path { + fill: #000; + stroke: #000; + stroke-width: 1px; + } + + .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + + .root .anchor path { + fill: ${s.lineColor} !important; + stroke-width: 0; + stroke: ${s.lineColor}; + } + + .arrowheadPath { + fill: ${s.arrowheadColor}; + } + + .edgePath .path { + stroke: ${s.lineColor}; + stroke-width: ${s.strokeWidth??2}px; + } + + .flowchart-link { + stroke: ${s.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${s.edgeLabelBackground}; + p { + background-color: ${s.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${s.edgeLabelBackground}; + fill: ${s.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${C1(s.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${s.clusterBkg}; + stroke: ${s.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${s.titleColor}; + } + + .cluster span { + color: ${s.titleColor}; + } + /* .cluster div { + color: ${s.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${s.fontFamily}; + font-size: 12px; + background: ${s.tertiaryColor}; + border: 1px solid ${s.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${s.textColor}; + } + + rect.text { + fill: none; + stroke-width: 0; + } + + .icon-shape, .image-shape { + background-color: ${s.edgeLabelBackground}; + p { + background-color: ${s.edgeLabelBackground}; + padding: 2px; + } + .label rect { + opacity: 0.5; + background-color: ${s.edgeLabelBackground}; + fill: ${s.edgeLabelBackground}; + } + text-align: center; + } + ${o1()} +`,"getStyles"),p1=E1;var ns={parser:d1,get db(){return new Je},renderer:c1,styles:p1,init:g(s=>{s.flowchart||(s.flowchart={}),s.layout&&at({layout:s.layout}),s.flowchart.arrowMarkerAbsolute=s.arrowMarkerAbsolute,at({flowchart:{arrowMarkerAbsolute:s.arrowMarkerAbsolute}})},"init")};export{ns as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs.map new file mode 100644 index 0000000..a296ec1 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/flowchart/flowDb.ts", "../../../src/diagrams/flowchart/flowRenderer-v3-unified.ts", "../../../src/diagrams/flowchart/parser/flow.jison", "../../../src/diagrams/flowchart/parser/flowParser.ts", "../../../src/diagrams/flowchart/styles.ts", "../../../src/diagrams/flowchart/flowDiagram.ts"], + "sourcesContent": ["import { select } from 'd3';\nimport * as yaml from 'js-yaml';\nimport { getConfig, defaultConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { isValidShape, type ShapeID } from '../../rendering-util/rendering-elements/shapes.js';\nimport type { Edge, Node } from '../../rendering-util/types.js';\nimport type { EdgeMetaData, NodeMetaData } from '../../types.js';\nimport utils, { getEdgeId } from '../../utils.js';\nimport common from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport { createTooltip } from '../common/svgDrawCommon.js';\nimport type {\n FlowClass,\n FlowEdge,\n FlowLink,\n FlowSubGraph,\n FlowText,\n FlowVertex,\n FlowVertexTypeParam,\n} from './types.js';\nimport DOMPurify from 'dompurify';\ninterface LinkData {\n id: string;\n}\n\nconst MERMAID_DOM_ID_PREFIX = 'flowchart-';\n\n// We are using arrow functions assigned to class instance fields instead of methods as they are required by flow JISON\nexport class FlowDB implements DiagramDB {\n private vertexCounter = 0;\n private config = getConfig();\n private diagramId = '';\n private vertices = new Map();\n private edges: FlowEdge[] & { defaultInterpolate?: string; defaultStyle?: string[] } = [];\n private classes = new Map();\n private subGraphs: FlowSubGraph[] = [];\n private subGraphLookup = new Map();\n private tooltips = new Map();\n private subCount = 0;\n private firstGraphFlag = true;\n private direction: string | undefined;\n private version: string | undefined; // As in graph\n private secCount = -1;\n private posCrossRef: number[] = [];\n\n // Functions to be run after graph rendering\n private funs: ((element: Element) => void)[] = []; // cspell:ignore funs\n\n constructor() {\n this.funs.push(this.setupToolTips.bind(this));\n\n // Needed for JISON since it only supports direct properties\n this.addVertex = this.addVertex.bind(this);\n this.firstGraph = this.firstGraph.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.addSubGraph = this.addSubGraph.bind(this);\n this.addLink = this.addLink.bind(this);\n this.setLink = this.setLink.bind(this);\n this.updateLink = this.updateLink.bind(this);\n this.addClass = this.addClass.bind(this);\n this.setClass = this.setClass.bind(this);\n this.destructLink = this.destructLink.bind(this);\n this.setClickEvent = this.setClickEvent.bind(this);\n this.setTooltip = this.setTooltip.bind(this);\n this.updateLinkInterpolate = this.updateLinkInterpolate.bind(this);\n this.setClickFun = this.setClickFun.bind(this);\n this.bindFunctions = this.bindFunctions.bind(this);\n\n this.lex = {\n firstGraph: this.firstGraph.bind(this),\n };\n\n this.clear();\n this.setGen('gen-2');\n }\n\n private sanitizeText(txt: string) {\n return common.sanitizeText(txt, this.config);\n }\n\n private sanitizeNodeLabelType(labelType?: string) {\n switch (labelType) {\n case 'markdown':\n case 'string':\n case 'text':\n return labelType;\n default:\n return 'markdown';\n }\n }\n\n /**\n * Sets the diagram's SVG element ID, used to prefix domIds for uniqueness\n * across multiple diagrams on the same page.\n */\n public setDiagramId(svgElementId: string) {\n this.diagramId = svgElementId;\n }\n\n /**\n * Function to lookup domId from id in the graph definition.\n * When diagramId is set, returns the prefixed version for DOM uniqueness.\n *\n * @param id - id of the node\n */\n public lookUpDomId(id: string) {\n for (const vertex of this.vertices.values()) {\n if (vertex.id === id) {\n return this.diagramId ? `${this.diagramId}-${vertex.domId}` : vertex.domId;\n }\n }\n return this.diagramId ? `${this.diagramId}-${id}` : id;\n }\n\n /**\n * Function called by parser when a node definition has been found\n */\n public addVertex(\n id: string,\n textObj: FlowText,\n type: FlowVertexTypeParam,\n style: string[],\n classes: string[],\n dir: string,\n props = {},\n metadata: any\n ) {\n if (!id || id.trim().length === 0) {\n return;\n }\n // Extract the metadata from the shapeData, the syntax for adding metadata for nodes and edges is the same\n // so at this point we don't know if it's a node or an edge, but we can still extract the metadata\n let doc;\n if (metadata !== undefined) {\n let yamlData;\n // detect if shapeData contains a newline character\n if (!metadata.includes('\\n')) {\n yamlData = '{\\n' + metadata + '\\n}';\n } else {\n yamlData = metadata + '\\n';\n }\n doc = yaml.load(yamlData, { schema: yaml.JSON_SCHEMA }) as NodeMetaData;\n }\n\n // Check if this is an edge\n const edge = this.edges.find((e) => e.id === id);\n if (edge) {\n const edgeDoc = doc as EdgeMetaData;\n if (edgeDoc?.animate !== undefined) {\n edge.animate = edgeDoc.animate;\n }\n if (edgeDoc?.animation !== undefined) {\n edge.animation = edgeDoc.animation;\n }\n if (edgeDoc?.curve !== undefined) {\n edge.interpolate = edgeDoc.curve;\n }\n return;\n }\n\n let txt;\n\n let vertex = this.vertices.get(id);\n if (vertex === undefined) {\n if (textObj === undefined && type === undefined && style !== undefined && style !== null) {\n log.warn(\n `Style applied to unknown node \"${id}\". This may indicate a typo. The node will be created automatically.`\n );\n }\n vertex = {\n id,\n labelType: 'text',\n domId: MERMAID_DOM_ID_PREFIX + id + '-' + this.vertexCounter,\n styles: [],\n classes: [],\n };\n this.vertices.set(id, vertex);\n }\n this.vertexCounter++;\n\n if (textObj !== undefined) {\n this.config = getConfig();\n txt = this.sanitizeText(textObj.text.trim());\n vertex.labelType = textObj.type;\n // strip quotes if string starts and ends with a quote\n if (txt.startsWith('\"') && txt.endsWith('\"')) {\n txt = txt.substring(1, txt.length - 1);\n }\n vertex.text = txt;\n } else {\n if (vertex.text === undefined) {\n vertex.text = id;\n }\n }\n if (type !== undefined) {\n vertex.type = type;\n }\n if (style !== undefined && style !== null) {\n style.forEach((s) => {\n vertex.styles.push(s);\n });\n }\n if (classes !== undefined && classes !== null) {\n classes.forEach((s) => {\n vertex.classes.push(s);\n });\n }\n if (dir !== undefined) {\n vertex.dir = dir;\n }\n if (vertex.props === undefined) {\n vertex.props = props;\n } else if (props !== undefined) {\n Object.assign(vertex.props, props);\n }\n\n if (doc !== undefined) {\n if (doc.shape) {\n if (doc.shape !== doc.shape.toLowerCase() || doc.shape.includes('_')) {\n throw new Error(`No such shape: ${doc.shape}. Shape names should be lowercase.`);\n } else if (!isValidShape(doc.shape)) {\n throw new Error(`No such shape: ${doc.shape}.`);\n }\n vertex.type = doc?.shape;\n }\n\n if (doc?.label) {\n vertex.text = doc?.label;\n vertex.labelType = this.sanitizeNodeLabelType(doc?.labelType);\n }\n if (doc?.icon) {\n vertex.icon = doc?.icon;\n if (!doc.label?.trim() && vertex.text === id) {\n vertex.text = '';\n }\n }\n if (doc?.form) {\n vertex.form = doc?.form;\n }\n if (doc?.pos) {\n vertex.pos = doc?.pos;\n }\n if (doc?.img) {\n vertex.img = doc?.img;\n if (!doc.label?.trim() && vertex.text === id) {\n vertex.text = '';\n }\n }\n if (doc?.constraint) {\n vertex.constraint = doc.constraint;\n }\n if (doc.w) {\n vertex.assetWidth = Number(doc.w);\n }\n if (doc.h) {\n vertex.assetHeight = Number(doc.h);\n }\n }\n }\n\n /**\n * Function called by parser when a link/edge definition has been found\n *\n */\n public addSingleLink(_start: string, _end: string, type: any, id?: string) {\n const start = _start;\n const end = _end;\n\n const edge: FlowEdge = {\n start: start,\n end: end,\n type: undefined,\n text: '',\n labelType: 'text',\n classes: [],\n isUserDefinedId: false,\n interpolate: this.edges.defaultInterpolate,\n };\n log.info('abc78 Got edge...', edge);\n const linkTextObj = type.text;\n\n if (linkTextObj !== undefined) {\n edge.text = this.sanitizeText(linkTextObj.text.trim());\n\n // strip quotes if string starts and ends with a quote\n if (edge.text.startsWith('\"') && edge.text.endsWith('\"')) {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n edge.labelType = this.sanitizeNodeLabelType(linkTextObj.type);\n }\n\n if (type !== undefined) {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length > 10 ? 10 : type.length;\n }\n if (id && !this.edges.some((e) => e.id === id)) {\n edge.id = id;\n edge.isUserDefinedId = true;\n } else {\n const existingLinks = this.edges.filter((e) => e.start === edge.start && e.end === edge.end);\n if (existingLinks.length === 0) {\n edge.id = getEdgeId(edge.start, edge.end, { counter: 0, prefix: 'L' });\n } else {\n edge.id = getEdgeId(edge.start, edge.end, {\n counter: existingLinks.length + 1,\n prefix: 'L',\n });\n }\n }\n\n if (this.edges.length < (this.config.maxEdges ?? 500)) {\n log.info('Pushing edge...');\n this.edges.push(edge);\n } else {\n throw new Error(\n `Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.\n\nInitialize mermaid with maxEdges set to a higher number to allow more edges.\nYou cannot set this config via configuration inside the diagram as it is a secure config.\nYou have to call mermaid.initialize.`\n );\n }\n }\n\n private isLinkData(value: unknown): value is LinkData {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'id' in value &&\n typeof (value as LinkData).id === 'string'\n );\n }\n\n public addLink(_start: string[], _end: string[], linkData: unknown) {\n const id = this.isLinkData(linkData) ? linkData.id.replace('@', '') : undefined;\n\n log.info('addLink', _start, _end, id);\n\n // for a group syntax like A e1@--> B & C, only the first edge should have a userDefined id\n // the rest of the edges should have auto generated ids\n for (const start of _start) {\n for (const end of _end) {\n //use the id only for last node in _start and first node in _end\n const isLastStart = start === _start[_start.length - 1];\n const isFirstEnd = end === _end[0];\n if (isLastStart && isFirstEnd) {\n this.addSingleLink(start, end, linkData, id);\n } else {\n this.addSingleLink(start, end, linkData, undefined);\n }\n }\n }\n }\n\n /**\n * Updates a link's line interpolation algorithm\n */\n public updateLinkInterpolate(positions: ('default' | number)[], interpolate: string) {\n positions.forEach((pos) => {\n if (pos === 'default') {\n this.edges.defaultInterpolate = interpolate;\n } else {\n this.edges[pos].interpolate = interpolate;\n }\n });\n }\n\n /**\n * Updates a link with a style\n *\n */\n public updateLink(positions: ('default' | number)[], style: string[]) {\n positions.forEach((pos) => {\n if (typeof pos === 'number' && pos >= this.edges.length) {\n throw new Error(\n `The index ${pos} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${\n this.edges.length - 1\n }. (Help: Ensure that the index is within the range of existing edges.)`\n );\n }\n if (pos === 'default') {\n this.edges.defaultStyle = style;\n } else {\n this.edges[pos].style = style;\n // if edges[pos].style does have fill not set, set it to none\n if (\n (this.edges[pos]?.style?.length ?? 0) > 0 &&\n !this.edges[pos]?.style?.some((s) => s?.startsWith('fill'))\n ) {\n this.edges[pos]?.style?.push('fill:none');\n }\n }\n });\n }\n\n public addClass(ids: string, _style: string[]) {\n const style = _style\n .join()\n .replace(/\\\\,/g, '\u00A7\u00A7\u00A7')\n .replace(/,/g, ';')\n .replace(/\u00A7\u00A7\u00A7/g, ',')\n .split(';');\n ids.split(',').forEach((id) => {\n let classNode = this.classes.get(id);\n if (classNode === undefined) {\n classNode = { id, styles: [], textStyles: [] };\n this.classes.set(id, classNode);\n }\n\n if (style !== undefined && style !== null) {\n style.forEach((s) => {\n if (/color/.exec(s)) {\n const newStyle = s.replace('fill', 'bgFill'); // .replace('color', 'fill');\n classNode.textStyles.push(newStyle);\n }\n classNode.styles.push(s);\n });\n }\n });\n }\n\n /**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n *\n */\n public setDirection(dir: string) {\n this.direction = dir.trim();\n\n if (/.*/.exec(this.direction)) {\n this.direction = 'LR';\n }\n if (/.*v/.exec(this.direction)) {\n this.direction = 'TB';\n }\n if (this.direction === 'TD') {\n this.direction = 'TB';\n }\n }\n\n /**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids - Comma separated list of ids\n * @param className - Class to add\n */\n public setClass(ids: string, className: string) {\n for (const id of ids.split(',')) {\n const vertex = this.vertices.get(id);\n if (vertex) {\n vertex.classes.push(className);\n }\n const edge = this.edges.find((e) => e.id === id);\n if (edge) {\n edge.classes.push(className);\n }\n const subGraph = this.subGraphLookup.get(id);\n if (subGraph) {\n subGraph.classes.push(className);\n }\n }\n }\n\n public setTooltip(ids: string, tooltip: string) {\n if (tooltip === undefined) {\n return;\n }\n tooltip = this.sanitizeText(tooltip);\n for (const id of ids.split(',')) {\n this.tooltips.set(this.version === 'gen-1' ? this.lookUpDomId(id) : id, tooltip);\n }\n }\n\n private setClickFun(id: string, functionName: string, functionArgs: string) {\n // if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n let argList: string[] = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.startsWith('\"') && item.endsWith('\"')) {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n const vertex = this.vertices.get(id);\n if (vertex) {\n vertex.haveCallback = true;\n this.funs.push(() => {\n // Defer lookUpDomId to bind time so it includes the diagramId prefix\n const domId = this.lookUpDomId(id);\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n () => {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n }\n\n /**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids - Comma separated list of ids\n * @param linkStr - URL to create a link for\n * @param target - Target attribute for the link\n */\n public setLink(ids: string, linkStr: string, target: string) {\n ids.split(',').forEach((id) => {\n const vertex = this.vertices.get(id);\n if (vertex !== undefined) {\n vertex.link = utils.formatUrl(linkStr, this.config);\n vertex.linkTarget = target;\n }\n });\n this.setClass(ids, 'clickable');\n }\n\n public getTooltip(id: string) {\n return this.tooltips.get(id);\n }\n\n /**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids - Comma separated list of ids\n * @param functionName - Function to be called on click\n * @param functionArgs - Arguments to be passed to the function\n */\n public setClickEvent(ids: string, functionName: string, functionArgs: string) {\n ids.split(',').forEach((id) => {\n this.setClickFun(id, functionName, functionArgs);\n });\n this.setClass(ids, 'clickable');\n }\n\n public bindFunctions(element: Element) {\n this.funs.forEach((fun) => {\n fun(element);\n });\n }\n public getDirection() {\n return this.direction?.trim();\n }\n /**\n * Retrieval function for fetching the found nodes after parsing has completed.\n *\n */\n public getVertices() {\n return this.vertices;\n }\n\n /**\n * Retrieval function for fetching the found links after parsing has completed.\n *\n */\n public getEdges() {\n return this.edges;\n }\n\n /**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n *\n */\n public getClasses() {\n return this.classes;\n }\n\n private setupToolTips(element: Element) {\n const tooltipElem = createTooltip();\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', (e: MouseEvent) => {\n const el = select(e.currentTarget as Element);\n const title = el.attr('title');\n\n // Don't try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = (e.currentTarget as Element)?.getBoundingClientRect();\n\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem\n .text(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.bottom + 'px');\n tooltipElem.html(DOMPurify.sanitize(title));\n el.classed('hover', true);\n })\n .on('mouseout', (e: MouseEvent) => {\n tooltipElem.transition().duration(500).style('opacity', 0);\n const el = select(e.currentTarget as Element);\n el.classed('hover', false);\n });\n }\n\n /**\n * Clears the internal graph db so that a new graph can be parsed.\n *\n */\n public clear(ver = 'gen-2') {\n this.vertices = new Map();\n this.classes = new Map();\n this.edges = [];\n this.funs = [this.setupToolTips.bind(this)];\n this.diagramId = '';\n this.subGraphs = [];\n this.subGraphLookup = new Map();\n this.subCount = 0;\n this.tooltips = new Map();\n this.firstGraphFlag = true;\n this.version = ver;\n this.config = getConfig();\n commonClear();\n }\n\n public setGen(ver: string) {\n this.version = ver || 'gen-2';\n }\n\n public defaultStyle() {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';\n }\n\n public addSubGraph(\n _id: { text: string },\n list: string[],\n _title: { text: string; type: string }\n ) {\n let id: string | undefined = _id.text.trim();\n let title = _title.text;\n if (_id === _title && /\\s/.exec(_title.text)) {\n id = undefined;\n }\n\n const uniq = (a: any[]) => {\n const prims: any = { boolean: {}, number: {}, string: {} };\n const objs: any[] = [];\n\n let dir: string | undefined;\n\n const nodeList = a.filter(function (item) {\n const type = typeof item;\n if (item.stmt && item.stmt === 'dir') {\n dir = item.value;\n return false;\n }\n if (item.trim() === '') {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true);\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList, dir };\n };\n\n const result = uniq(list.flat());\n const nodeList = result.nodeList;\n let dir = result.dir;\n const flowchartConfig = getConfig().flowchart ?? {};\n dir =\n dir ??\n (flowchartConfig.inheritDir\n ? (this.getDirection() ?? (getConfig() as any).direction ?? undefined)\n : undefined);\n\n if (this.version === 'gen-1') {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = this.lookUpDomId(nodeList[i]);\n }\n }\n\n id = id ?? 'subGraph' + this.subCount;\n title = title || '';\n title = this.sanitizeText(title);\n this.subCount = this.subCount + 1;\n\n const subGraph = {\n id: id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: this.sanitizeNodeLabelType(_title?.type),\n };\n\n log.info('Adding', subGraph.id, subGraph.nodes, subGraph.dir);\n\n // Remove the members in the new subgraph if they already belong to another subgraph\n subGraph.nodes = this.makeUniq(subGraph, this.subGraphs).nodes;\n this.subGraphs.push(subGraph);\n this.subGraphLookup.set(id, subGraph);\n return id;\n }\n\n private getPosForId(id: string) {\n for (const [i, subGraph] of this.subGraphs.entries()) {\n if (subGraph.id === id) {\n return i;\n }\n }\n return -1;\n }\n\n private indexNodes2(id: string, pos: number): { result: boolean; count: number } {\n const nodes = this.subGraphs[pos].nodes;\n this.secCount = this.secCount + 1;\n if (this.secCount > 2000) {\n return {\n result: false,\n count: 0,\n };\n }\n this.posCrossRef[this.secCount] = pos;\n // Check if match\n if (this.subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0,\n };\n }\n\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = this.getPosForId(nodes[count]);\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = this.indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count,\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n\n return {\n result: false,\n count: posCount,\n };\n }\n\n public getDepthFirstPos(pos: number) {\n return this.posCrossRef[pos];\n }\n public indexNodes() {\n this.secCount = -1;\n if (this.subGraphs.length > 0) {\n this.indexNodes2('none', this.subGraphs.length - 1);\n }\n }\n\n public getSubGraphs() {\n return this.subGraphs;\n }\n\n public firstGraph() {\n if (this.firstGraphFlag) {\n this.firstGraphFlag = false;\n return true;\n }\n return false;\n }\n\n private destructStartLink(_str: string): FlowLink {\n let str = _str.trim();\n let type = 'arrow_open';\n\n switch (str[0]) {\n case '<':\n type = 'arrow_point';\n str = str.slice(1);\n break;\n case 'x':\n type = 'arrow_cross';\n str = str.slice(1);\n break;\n case 'o':\n type = 'arrow_circle';\n str = str.slice(1);\n break;\n }\n\n let stroke = 'normal';\n\n if (str.includes('=')) {\n stroke = 'thick';\n }\n\n if (str.includes('.')) {\n stroke = 'dotted';\n }\n\n return { type, stroke };\n }\n\n private countChar(char: string, str: string) {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n }\n\n private destructEndLink(_str: string) {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = 'arrow_open';\n\n switch (str.slice(-1)) {\n case 'x':\n type = 'arrow_cross';\n if (str.startsWith('x')) {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n case '>':\n type = 'arrow_point';\n if (str.startsWith('<')) {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n case 'o':\n type = 'arrow_circle';\n if (str.startsWith('o')) {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n }\n\n let stroke = 'normal';\n let length = line.length - 1;\n\n if (line.startsWith('=')) {\n stroke = 'thick';\n }\n\n if (line.startsWith('~')) {\n stroke = 'invisible';\n }\n\n const dots = this.countChar('.', line);\n\n if (dots) {\n stroke = 'dotted';\n length = dots;\n }\n\n return { type, stroke, length };\n }\n\n public destructLink(_str: string, _startStr: string) {\n const info = this.destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = this.destructStartLink(_startStr);\n\n if (startInfo.stroke !== info.stroke) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n if (startInfo.type === 'arrow_open') {\n // -- xyz --> - take arrow type from ending\n startInfo.type = info.type;\n } else {\n // x-- xyz --> - not supported\n if (startInfo.type !== info.type) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n startInfo.type = 'double_' + startInfo.type;\n }\n\n if (startInfo.type === 'double_arrow') {\n startInfo.type = 'double_arrow_point';\n }\n\n startInfo.length = info.length;\n return startInfo;\n }\n\n return info;\n }\n\n // Todo optimizer this by caching existing nodes\n public exists(allSgs: FlowSubGraph[], _id: string) {\n for (const sg of allSgs) {\n if (sg.nodes.includes(_id)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Deletes an id from all subgraphs\n *\n */\n public makeUniq(sg: FlowSubGraph, allSubgraphs: FlowSubGraph[]) {\n const res: string[] = [];\n sg.nodes.forEach((_id, pos) => {\n if (!this.exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n }\n\n public lex: { firstGraph: typeof FlowDB.prototype.firstGraph };\n\n private getTypeFromVertex(vertex: FlowVertex): ShapeID {\n if (vertex.img) {\n return 'imageSquare';\n }\n if (vertex.icon) {\n if (vertex.form === 'circle') {\n return 'iconCircle';\n }\n if (vertex.form === 'square') {\n return 'iconSquare';\n }\n if (vertex.form === 'rounded') {\n return 'iconRounded';\n }\n return 'icon';\n }\n switch (vertex.type) {\n case 'square':\n case undefined:\n return 'squareRect';\n case 'round':\n return 'roundedRect';\n case 'ellipse':\n // @ts-expect-error -- Ellipses are broken, see https://github.com/mermaid-js/mermaid/issues/5976\n return 'ellipse';\n default:\n return vertex.type;\n }\n }\n\n private findNode(nodes: Node[], id: string) {\n return nodes.find((node) => node.id === id);\n }\n private destructEdgeType(type: string | undefined) {\n let arrowTypeStart = 'none';\n let arrowTypeEnd = 'arrow_point';\n switch (type) {\n case 'arrow_point':\n case 'arrow_circle':\n case 'arrow_cross':\n arrowTypeEnd = type;\n break;\n\n case 'double_arrow_point':\n case 'double_arrow_circle':\n case 'double_arrow_cross':\n arrowTypeStart = type.replace('double_', '');\n arrowTypeEnd = arrowTypeStart;\n break;\n }\n return { arrowTypeStart, arrowTypeEnd };\n }\n\n private addNodeFromVertex(\n vertex: FlowVertex,\n nodes: Node[],\n parentDB: Map,\n subGraphDB: Map,\n config: any,\n look: string\n ) {\n const parentId = parentDB.get(vertex.id);\n const isGroup = subGraphDB.get(vertex.id) ?? false;\n\n const node = this.findNode(nodes, vertex.id);\n if (node) {\n node.cssStyles = vertex.styles;\n node.cssCompiledStyles = this.getCompiledStyles(vertex.classes);\n node.cssClasses = vertex.classes.join(' ');\n } else {\n const baseNode = {\n id: vertex.id,\n label: vertex.text,\n labelType: vertex.labelType,\n labelStyle: '',\n parentId,\n padding: config.flowchart?.padding || 8,\n cssStyles: vertex.styles,\n cssCompiledStyles: this.getCompiledStyles(['default', 'node', ...vertex.classes]),\n cssClasses: 'default ' + vertex.classes.join(' '),\n dir: vertex.dir,\n domId: vertex.domId,\n look,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: this.getTooltip(vertex.id),\n icon: vertex.icon,\n pos: vertex.pos,\n img: vertex.img,\n assetWidth: vertex.assetWidth,\n assetHeight: vertex.assetHeight,\n constraint: vertex.constraint,\n };\n if (isGroup) {\n nodes.push({\n ...baseNode,\n isGroup: true,\n shape: 'rect',\n });\n } else {\n nodes.push({\n ...baseNode,\n isGroup: false,\n shape: this.getTypeFromVertex(vertex),\n });\n }\n }\n }\n\n private getCompiledStyles(classDefs: string[]) {\n let compiledStyles: string[] = [];\n for (const customClass of classDefs) {\n const cssClass = this.classes.get(customClass);\n if (cssClass?.styles) {\n compiledStyles = [...compiledStyles, ...(cssClass.styles ?? [])].map((s) => s.trim());\n }\n if (cssClass?.textStyles) {\n compiledStyles = [...compiledStyles, ...(cssClass.textStyles ?? [])].map((s) => s.trim());\n }\n }\n return compiledStyles;\n }\n\n public getData() {\n const config = getConfig();\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n\n const subGraphs = this.getSubGraphs();\n const parentDB = new Map();\n const subGraphDB = new Map();\n\n // Setup the subgraph data for adding nodes\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n const subGraph = subGraphs[i];\n if (subGraph.nodes.length > 0) {\n subGraphDB.set(subGraph.id, true);\n }\n for (const id of subGraph.nodes) {\n parentDB.set(id, subGraph.id);\n }\n }\n\n // Data is setup, add the nodes\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n const subGraph = subGraphs[i];\n nodes.push({\n id: subGraph.id,\n label: subGraph.title,\n labelStyle: '',\n labelType: subGraph.labelType,\n parentId: parentDB.get(subGraph.id),\n padding: 8,\n cssCompiledStyles: this.getCompiledStyles(subGraph.classes),\n cssClasses: subGraph.classes.join(' '),\n shape: 'rect',\n dir: subGraph.dir,\n isGroup: true,\n look: config.look,\n });\n }\n\n const n = this.getVertices();\n n.forEach((vertex) => {\n this.addNodeFromVertex(vertex, nodes, parentDB, subGraphDB, config, config.look || 'classic');\n });\n\n const e = this.getEdges();\n e.forEach((rawEdge, index) => {\n const { arrowTypeStart, arrowTypeEnd } = this.destructEdgeType(rawEdge.type);\n const styles = [...(e.defaultStyle ?? [])];\n\n if (rawEdge.style) {\n styles.push(...rawEdge.style);\n }\n const edge: Edge = {\n id: getEdgeId(rawEdge.start, rawEdge.end, { counter: index, prefix: 'L' }, rawEdge.id),\n isUserDefinedId: rawEdge.isUserDefinedId,\n start: rawEdge.start,\n end: rawEdge.end,\n type: rawEdge.type ?? 'normal',\n label: rawEdge.text,\n labelType: rawEdge.labelType,\n labelpos: 'c',\n thickness: rawEdge.stroke,\n minlen: rawEdge.length,\n classes:\n rawEdge?.stroke === 'invisible'\n ? ''\n : 'edge-thickness-normal edge-pattern-solid flowchart-link',\n arrowTypeStart:\n rawEdge?.stroke === 'invisible' || rawEdge?.type === 'arrow_open'\n ? 'none'\n : arrowTypeStart,\n arrowTypeEnd:\n rawEdge?.stroke === 'invisible' || rawEdge?.type === 'arrow_open' ? 'none' : arrowTypeEnd,\n arrowheadStyle: 'fill: #333',\n cssCompiledStyles: this.getCompiledStyles(rawEdge.classes),\n labelStyle: styles,\n style: styles,\n pattern: rawEdge.stroke,\n look: config.look,\n animate: rawEdge.animate,\n animation: rawEdge.animation,\n curve: rawEdge.interpolate || this.edges.defaultInterpolate || config.flowchart?.curve,\n };\n\n edges.push(edge);\n });\n\n return { nodes, edges, other: {}, config };\n }\n\n public defaultConfig() {\n return defaultConfig.flowchart;\n }\n public setAccTitle = setAccTitle;\n public setAccDescription = setAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getAccTitle = getAccTitle;\n public getAccDescription = getAccDescription;\n public getDiagramTitle = getDiagramTitle;\n}\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\n\nexport const getClasses = function (\n text: string,\n diagramObj: any\n): Map {\n return diagramObj.db.getClasses();\n};\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing state diagram (v2)', id);\n const { securityLevel, flowchart: conf, layout } = getConfig();\n\n // Set the diagram ID for DOM element uniqueness across multiple diagrams\n diag.db.setDiagramId(id);\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n log.debug('Before getData: ');\n const data4Layout = diag.db.getData() as LayoutData;\n log.debug('Data: ', data4Layout);\n // Create the root SVG\n const svg = getDiagramElement(id, securityLevel);\n const direction = diag.db.getDirection();\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n if (data4Layout.layoutAlgorithm === 'dagre' && layout === 'elk') {\n log.warn(\n 'flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback.'\n );\n }\n data4Layout.direction = direction;\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n data4Layout.markers = ['point', 'circle', 'cross'];\n\n data4Layout.diagramId = id;\n log.debug('REF1:', data4Layout);\n await render(data4Layout, svg);\n const padding = data4Layout.config.flowchart?.diagramPadding ?? 8;\n utils.insertTitle(\n svg,\n 'flowchartTitleText',\n conf?.titleTopMargin || 0,\n diag.db.getDiagramTitle()\n );\n setupViewPortForSVG(svg, padding, 'flowchart', conf?.useMaxWidth || false);\n};\n\nexport default {\n getClasses,\n draw,\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,3],$V2=[1,5],$V3=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],$V4=[2,2],$V5=[1,13],$V6=[1,14],$V7=[1,15],$V8=[1,16],$V9=[1,23],$Va=[1,25],$Vb=[1,26],$Vc=[1,27],$Vd=[1,50],$Ve=[1,49],$Vf=[1,29],$Vg=[1,30],$Vh=[1,31],$Vi=[1,32],$Vj=[1,33],$Vk=[1,45],$Vl=[1,47],$Vm=[1,43],$Vn=[1,48],$Vo=[1,44],$Vp=[1,51],$Vq=[1,46],$Vr=[1,52],$Vs=[1,53],$Vt=[1,34],$Vu=[1,35],$Vv=[1,36],$Vw=[1,37],$Vx=[1,38],$Vy=[1,58],$Vz=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],$VA=[1,62],$VB=[1,61],$VC=[1,63],$VD=[8,9,11,75,77,78],$VE=[1,79],$VF=[1,92],$VG=[1,97],$VH=[1,96],$VI=[1,93],$VJ=[1,89],$VK=[1,95],$VL=[1,91],$VM=[1,98],$VN=[1,94],$VO=[1,99],$VP=[1,90],$VQ=[8,9,10,11,40,75,77,78],$VR=[8,9,10,11,40,46,75,77,78],$VS=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],$VT=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],$VU=[44,60,89,102,105,106,109,111,114,115,116],$VV=[1,122],$VW=[1,123],$VX=[1,125],$VY=[1,124],$VZ=[44,60,62,74,89,102,105,106,109,111,114,115,116],$V_=[1,134],$V$=[1,148],$V01=[1,149],$V11=[1,150],$V21=[1,151],$V31=[1,136],$V41=[1,138],$V51=[1,142],$V61=[1,143],$V71=[1,144],$V81=[1,145],$V91=[1,146],$Va1=[1,147],$Vb1=[1,152],$Vc1=[1,153],$Vd1=[1,132],$Ve1=[1,133],$Vf1=[1,140],$Vg1=[1,135],$Vh1=[1,139],$Vi1=[1,137],$Vj1=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],$Vk1=[1,155],$Vl1=[1,157],$Vm1=[8,9,11],$Vn1=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],$Vo1=[1,177],$Vp1=[1,173],$Vq1=[1,174],$Vr1=[1,178],$Vs1=[1,175],$Vt1=[1,176],$Vu1=[77,116,119],$Vv1=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],$Vw1=[10,106],$Vx1=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],$Vy1=[1,248],$Vz1=[1,246],$VA1=[1,250],$VB1=[1,244],$VC1=[1,245],$VD1=[1,247],$VE1=[1,249],$VF1=[1,251],$VG1=[1,269],$VH1=[8,9,11,106],$VI1=[8,9,10,11,60,84,105,106,109,110,111,112];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"graphConfig\":4,\"document\":5,\"line\":6,\"statement\":7,\"SEMI\":8,\"NEWLINE\":9,\"SPACE\":10,\"EOF\":11,\"GRAPH\":12,\"NODIR\":13,\"DIR\":14,\"FirstStmtSeparator\":15,\"ending\":16,\"endToken\":17,\"spaceList\":18,\"spaceListNewline\":19,\"vertexStatement\":20,\"separator\":21,\"styleStatement\":22,\"linkStyleStatement\":23,\"classDefStatement\":24,\"classStatement\":25,\"clickStatement\":26,\"subgraph\":27,\"textNoTags\":28,\"SQS\":29,\"text\":30,\"SQE\":31,\"end\":32,\"direction\":33,\"acc_title\":34,\"acc_title_value\":35,\"acc_descr\":36,\"acc_descr_value\":37,\"acc_descr_multiline_value\":38,\"shapeData\":39,\"SHAPE_DATA\":40,\"link\":41,\"node\":42,\"styledVertex\":43,\"AMP\":44,\"vertex\":45,\"STYLE_SEPARATOR\":46,\"idString\":47,\"DOUBLECIRCLESTART\":48,\"DOUBLECIRCLEEND\":49,\"PS\":50,\"PE\":51,\"(-\":52,\"-)\":53,\"STADIUMSTART\":54,\"STADIUMEND\":55,\"SUBROUTINESTART\":56,\"SUBROUTINEEND\":57,\"VERTEX_WITH_PROPS_START\":58,\"NODE_STRING[field]\":59,\"COLON\":60,\"NODE_STRING[value]\":61,\"PIPE\":62,\"CYLINDERSTART\":63,\"CYLINDEREND\":64,\"DIAMOND_START\":65,\"DIAMOND_STOP\":66,\"TAGEND\":67,\"TRAPSTART\":68,\"TRAPEND\":69,\"INVTRAPSTART\":70,\"INVTRAPEND\":71,\"linkStatement\":72,\"arrowText\":73,\"TESTSTR\":74,\"START_LINK\":75,\"edgeText\":76,\"LINK\":77,\"LINK_ID\":78,\"edgeTextToken\":79,\"STR\":80,\"MD_STR\":81,\"textToken\":82,\"keywords\":83,\"STYLE\":84,\"LINKSTYLE\":85,\"CLASSDEF\":86,\"CLASS\":87,\"CLICK\":88,\"DOWN\":89,\"UP\":90,\"textNoTagsToken\":91,\"stylesOpt\":92,\"idString[vertex]\":93,\"idString[class]\":94,\"CALLBACKNAME\":95,\"CALLBACKARGS\":96,\"HREF\":97,\"LINK_TARGET\":98,\"STR[link]\":99,\"STR[tooltip]\":100,\"alphaNum\":101,\"DEFAULT\":102,\"numList\":103,\"INTERPOLATE\":104,\"NUM\":105,\"COMMA\":106,\"style\":107,\"styleComponent\":108,\"NODE_STRING\":109,\"UNIT\":110,\"BRKT\":111,\"PCT\":112,\"idStringToken\":113,\"MINUS\":114,\"MULT\":115,\"UNICODE_TEXT\":116,\"TEXT\":117,\"TAGSTART\":118,\"EDGE_TEXT\":119,\"alphaNumToken\":120,\"direction_tb\":121,\"direction_bt\":122,\"direction_rl\":123,\"direction_lr\":124,\"direction_td\":125,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",8:\"SEMI\",9:\"NEWLINE\",10:\"SPACE\",11:\"EOF\",12:\"GRAPH\",13:\"NODIR\",14:\"DIR\",27:\"subgraph\",29:\"SQS\",31:\"SQE\",32:\"end\",34:\"acc_title\",35:\"acc_title_value\",36:\"acc_descr\",37:\"acc_descr_value\",38:\"acc_descr_multiline_value\",40:\"SHAPE_DATA\",44:\"AMP\",46:\"STYLE_SEPARATOR\",48:\"DOUBLECIRCLESTART\",49:\"DOUBLECIRCLEEND\",50:\"PS\",51:\"PE\",52:\"(-\",53:\"-)\",54:\"STADIUMSTART\",55:\"STADIUMEND\",56:\"SUBROUTINESTART\",57:\"SUBROUTINEEND\",58:\"VERTEX_WITH_PROPS_START\",59:\"NODE_STRING[field]\",60:\"COLON\",61:\"NODE_STRING[value]\",62:\"PIPE\",63:\"CYLINDERSTART\",64:\"CYLINDEREND\",65:\"DIAMOND_START\",66:\"DIAMOND_STOP\",67:\"TAGEND\",68:\"TRAPSTART\",69:\"TRAPEND\",70:\"INVTRAPSTART\",71:\"INVTRAPEND\",74:\"TESTSTR\",75:\"START_LINK\",77:\"LINK\",78:\"LINK_ID\",80:\"STR\",81:\"MD_STR\",84:\"STYLE\",85:\"LINKSTYLE\",86:\"CLASSDEF\",87:\"CLASS\",88:\"CLICK\",89:\"DOWN\",90:\"UP\",93:\"idString[vertex]\",94:\"idString[class]\",95:\"CALLBACKNAME\",96:\"CALLBACKARGS\",97:\"HREF\",98:\"LINK_TARGET\",99:\"STR[link]\",100:\"STR[tooltip]\",102:\"DEFAULT\",104:\"INTERPOLATE\",105:\"NUM\",106:\"COMMA\",109:\"NODE_STRING\",110:\"UNIT\",111:\"BRKT\",112:\"PCT\",114:\"MINUS\",115:\"MULT\",116:\"UNICODE_TEXT\",117:\"TEXT\",118:\"TAGSTART\",119:\"EDGE_TEXT\",121:\"direction_tb\",122:\"direction_bt\",123:\"direction_rl\",124:\"direction_lr\",125:\"direction_td\"},\nproductions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,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 2:\n this.$ = [];\nbreak;\ncase 3:\n\n\t if(!Array.isArray($$[$0]) || $$[$0].length > 0){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 4: case 183:\nthis.$=$$[$0];\nbreak;\ncase 11:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 12:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 27:\n this.$=$$[$0-1].nodes\nbreak;\ncase 28: case 29: case 30: case 31: case 32:\nthis.$=[];\nbreak;\ncase 33:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 34:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 35:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 37:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 38: case 39:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 43:\n this.$ = $$[$0-1] + $$[$0]; \nbreak;\ncase 44:\n this.$ = $$[$0]; \nbreak;\ncase 45:\n /* console.warn('vs shapeData',$$[$0-3].stmt,$$[$0-1], $$[$0]);*/ yy.addVertex($$[$0-1][$$[$0-1].length-1],undefined,undefined,undefined, undefined,undefined, undefined,$$[$0]); yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 46:\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 47:\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 48:\n /*console.warn('vertexStatement: node spaceList', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 49:\n\n /*console.warn('vertexStatement: node shapeData', $$[$0-1][0], $$[$0]);*/\n yy.addVertex($$[$0-1][$$[$0-1].length-1],undefined,undefined,undefined, undefined,undefined, undefined,$$[$0]);\n this.$ = {stmt: $$[$0-1], nodes:$$[$0-1], shapeData: $$[$0]}\n \nbreak;\ncase 50:\n /* console.warn('vertexStatement: single node', $$[$0]); */ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 51:\n /*console.warn('nod', $$[$0]);*/ this.$ = [$$[$0]];\nbreak;\ncase 52:\n yy.addVertex($$[$0-5][$$[$0-5].length-1],undefined,undefined,undefined, undefined,undefined, undefined,$$[$0-4]); this.$ = $$[$0-5].concat($$[$0]); /*console.warn('pip2', $$[$0-5][0], $$[$0], this.$);*/ \nbreak;\ncase 53:\n this.$ = $$[$0-4].concat($$[$0]); /*console.warn('pip', $$[$0-4][0], $$[$0], this.$);*/ \nbreak;\ncase 54:\n /* console.warn('nodc', $$[$0]);*/ this.$ = $$[$0];\nbreak;\ncase 55:\nthis.$ = $$[$0-2];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 56:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'doublecircle');\nbreak;\ncase 58:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 62:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 66:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 71:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 72:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 73:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 74: case 75:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 76:\nthis.$ = $$[$0];\nbreak;\ncase 77:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 78:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1], \"id\": $$[$0-3]};\nbreak;\ncase 79:\nthis.$={text:$$[$0], type:'text'};\nbreak;\ncase 80:\nthis.$={text:$$[$0-1].text+''+$$[$0], type:$$[$0-1].type};\nbreak;\ncase 81:\nthis.$={text: $$[$0], type: 'string'};\nbreak;\ncase 82:\nthis.$={text:$$[$0], type:'markdown'};\nbreak;\ncase 83:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 84:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length, \"id\": $$[$0-1]};\nbreak;\ncase 85:\nthis.$ = $$[$0-1];\nbreak;\ncase 86:\n this.$={text:$$[$0], type: 'text'};\nbreak;\ncase 87:\n this.$={text:$$[$0-1].text+''+$$[$0], type: $$[$0-1].type};\nbreak;\ncase 88:\n this.$ = {text: $$[$0], type: 'string'};\nbreak;\ncase 89: case 104:\n this.$={text: $$[$0], type: 'markdown'};\nbreak;\ncase 101:\nthis.$={text:$$[$0], type: 'text'};\nbreak;\ncase 102:\nthis.$={text:$$[$0-1].text+''+$$[$0], type: $$[$0-1].type};\nbreak;\ncase 103:\n this.$={text: $$[$0], type: 'text'};\nbreak;\ncase 105:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 106:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 107: case 115:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 108: case 116:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 109:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 110:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 111:\nthis.$ = $$[$0-2];yy.setLink($$[$0-2], $$[$0]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.setLink($$[$0-4], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 113:\nthis.$ = $$[$0-4];yy.setLink($$[$0-4], $$[$0-2], $$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-6];yy.setLink($$[$0-6], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-6], $$[$0-2]);\nbreak;\ncase 117:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 118:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 119:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 120:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 121:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 122:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 123:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 124:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 125:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 126:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 127:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 128: case 130:\nthis.$ = [$$[$0]]\nbreak;\ncase 129: case 131:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 133:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 181:\nthis.$=$$[$0]\nbreak;\ncase 182:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 184:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 185:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 186:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 187:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 188:\n this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 189:\n this.$={stmt:'dir', value:'TD'};\nbreak;\n}\n},\ntable: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:$V5,9:$V6,10:$V7,11:$V8,20:17,22:18,23:19,24:20,25:21,26:22,27:$V9,33:24,34:$Va,36:$Vb,38:$Vc,42:28,43:39,44:$Vd,45:40,47:41,60:$Ve,84:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs,121:$Vt,122:$Vu,123:$Vv,124:$Vw,125:$Vx},o($V3,[2,9]),o($V3,[2,10]),o($V3,[2,11]),{8:[1,55],9:[1,56],10:$Vy,15:54,18:57},o($Vz,[2,3]),o($Vz,[2,4]),o($Vz,[2,5]),o($Vz,[2,6]),o($Vz,[2,7]),o($Vz,[2,8]),{8:$VA,9:$VB,11:$VC,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:$VA,9:$VB,11:$VC,21:68},{8:$VA,9:$VB,11:$VC,21:69},{8:$VA,9:$VB,11:$VC,21:70},{8:$VA,9:$VB,11:$VC,21:71},{8:$VA,9:$VB,11:$VC,21:72},{8:$VA,9:$VB,10:[1,73],11:$VC,21:74},o($Vz,[2,36]),{35:[1,75]},{37:[1,76]},o($Vz,[2,39]),o($VD,[2,50],{18:77,39:78,10:$Vy,40:$VE}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:$VF,44:$VG,60:$VH,80:[1,87],89:$VI,95:[1,84],97:[1,85],101:86,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP,120:88},o($Vz,[2,185]),o($Vz,[2,186]),o($Vz,[2,187]),o($Vz,[2,188]),o($Vz,[2,189]),o($VQ,[2,51]),o($VQ,[2,54],{46:[1,100]}),o($VR,[2,72],{113:113,29:[1,101],44:$Vd,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:$Ve,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,114:$Vq,115:$Vr,116:$Vs}),o($VS,[2,181]),o($VS,[2,142]),o($VS,[2,143]),o($VS,[2,144]),o($VS,[2,145]),o($VS,[2,146]),o($VS,[2,147]),o($VS,[2,148]),o($VS,[2,149]),o($VS,[2,150]),o($VS,[2,151]),o($VS,[2,152]),o($V3,[2,12]),o($V3,[2,18]),o($V3,[2,19]),{9:[1,114]},o($VT,[2,26],{18:115,10:$Vy}),o($Vz,[2,27]),{42:116,43:39,44:$Vd,45:40,47:41,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},o($Vz,[2,40]),o($Vz,[2,41]),o($Vz,[2,42]),o($VU,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:$VV,81:$VW,116:$VX,119:$VY},{75:[1,126],77:[1,127]},o($VZ,[2,83]),o($Vz,[2,28]),o($Vz,[2,29]),o($Vz,[2,30]),o($Vz,[2,31]),o($Vz,[2,32]),{10:$V_,12:$V$,14:$V01,27:$V11,28:128,32:$V21,44:$V31,60:$V41,75:$V51,80:[1,130],81:[1,131],83:141,84:$V61,85:$V71,86:$V81,87:$V91,88:$Va1,89:$Vb1,90:$Vc1,91:129,105:$Vd1,109:$Ve1,111:$Vf1,114:$Vg1,115:$Vh1,116:$Vi1},o($Vj1,$V4,{5:154}),o($Vz,[2,37]),o($Vz,[2,38]),o($VD,[2,48],{44:$Vk1}),o($VD,[2,49],{18:156,10:$Vy,40:$Vl1}),o($VQ,[2,44]),{44:$Vd,47:158,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},{102:[1,159],103:160,105:[1,161]},{44:$Vd,47:162,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},{44:$Vd,47:163,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},o($Vm1,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},o($Vm1,[2,115],{120:168,10:[1,167],14:$VF,44:$VG,60:$VH,89:$VI,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP}),o($Vm1,[2,117],{10:[1,169]}),o($Vn1,[2,183]),o($Vn1,[2,170]),o($Vn1,[2,171]),o($Vn1,[2,172]),o($Vn1,[2,173]),o($Vn1,[2,174]),o($Vn1,[2,175]),o($Vn1,[2,176]),o($Vn1,[2,177]),o($Vn1,[2,178]),o($Vn1,[2,179]),o($Vn1,[2,180]),{44:$Vd,47:170,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},{30:171,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:179,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:181,50:[1,180],67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:182,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:183,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:184,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{109:[1,185]},{30:186,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:187,65:[1,188],67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:189,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:190,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:191,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},o($VS,[2,182]),o($V3,[2,20]),o($VT,[2,25]),o($VD,[2,46],{39:192,18:193,10:$Vy,40:$VE}),o($VU,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{77:[1,197],79:198,116:$VX,119:$VY},o($Vu1,[2,79]),o($Vu1,[2,81]),o($Vu1,[2,82]),o($Vu1,[2,168]),o($Vu1,[2,169]),{76:199,79:121,80:$VV,81:$VW,116:$VX,119:$VY},o($VZ,[2,84]),{8:$VA,9:$VB,10:$V_,11:$VC,12:$V$,14:$V01,21:201,27:$V11,29:[1,200],32:$V21,44:$V31,60:$V41,75:$V51,83:141,84:$V61,85:$V71,86:$V81,87:$V91,88:$Va1,89:$Vb1,90:$Vc1,91:202,105:$Vd1,109:$Ve1,111:$Vf1,114:$Vg1,115:$Vh1,116:$Vi1},o($Vv1,[2,101]),o($Vv1,[2,103]),o($Vv1,[2,104]),o($Vv1,[2,157]),o($Vv1,[2,158]),o($Vv1,[2,159]),o($Vv1,[2,160]),o($Vv1,[2,161]),o($Vv1,[2,162]),o($Vv1,[2,163]),o($Vv1,[2,164]),o($Vv1,[2,165]),o($Vv1,[2,166]),o($Vv1,[2,167]),o($Vv1,[2,90]),o($Vv1,[2,91]),o($Vv1,[2,92]),o($Vv1,[2,93]),o($Vv1,[2,94]),o($Vv1,[2,95]),o($Vv1,[2,96]),o($Vv1,[2,97]),o($Vv1,[2,98]),o($Vv1,[2,99]),o($Vv1,[2,100]),{6:11,7:12,8:$V5,9:$V6,10:$V7,11:$V8,20:17,22:18,23:19,24:20,25:21,26:22,27:$V9,32:[1,203],33:24,34:$Va,36:$Vb,38:$Vc,42:28,43:39,44:$Vd,45:40,47:41,60:$Ve,84:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs,121:$Vt,122:$Vu,123:$Vv,124:$Vw,125:$Vx},{10:$Vy,18:204},{44:[1,205]},o($VQ,[2,43]),{10:[1,206],44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:113,114:$Vq,115:$Vr,116:$Vs},{10:[1,207]},{10:[1,208],106:[1,209]},o($Vw1,[2,128]),{10:[1,210],44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:113,114:$Vq,115:$Vr,116:$Vs},{10:[1,211],44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:113,114:$Vq,115:$Vr,116:$Vs},{80:[1,212]},o($Vm1,[2,109],{10:[1,213]}),o($Vm1,[2,111],{10:[1,214]}),{80:[1,215]},o($Vn1,[2,184]),{80:[1,216],98:[1,217]},o($VQ,[2,55],{113:113,44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,114:$Vq,115:$Vr,116:$Vs}),{31:[1,218],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($Vx1,[2,86]),o($Vx1,[2,88]),o($Vx1,[2,89]),o($Vx1,[2,153]),o($Vx1,[2,154]),o($Vx1,[2,155]),o($Vx1,[2,156]),{49:[1,220],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{30:221,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{51:[1,222],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{53:[1,223],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{55:[1,224],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{57:[1,225],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{60:[1,226]},{64:[1,227],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{66:[1,228],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{30:229,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{31:[1,230],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{67:$Vo1,69:[1,231],71:[1,232],82:219,116:$Vr1,117:$Vs1,118:$Vt1},{67:$Vo1,69:[1,234],71:[1,233],82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($VD,[2,45],{18:156,10:$Vy,40:$Vl1}),o($VD,[2,47],{44:$Vk1}),o($VU,[2,75]),o($VU,[2,74]),{62:[1,235],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($VU,[2,77]),o($Vu1,[2,80]),{77:[1,236],79:198,116:$VX,119:$VY},{30:237,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},o($Vj1,$V4,{5:238}),o($Vv1,[2,102]),o($Vz,[2,35]),{43:239,44:$Vd,45:40,47:41,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},{10:$Vy,18:240},{10:$Vy1,60:$Vz1,84:$VA1,92:241,105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{10:$Vy1,60:$Vz1,84:$VA1,92:252,104:[1,253],105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{10:$Vy1,60:$Vz1,84:$VA1,92:254,104:[1,255],105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{105:[1,256]},{10:$Vy1,60:$Vz1,84:$VA1,92:257,105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{44:$Vd,47:258,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},o($Vm1,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},o($Vm1,[2,116]),o($Vm1,[2,118],{10:[1,262]}),o($Vm1,[2,119]),o($VR,[2,56]),o($Vx1,[2,87]),o($VR,[2,57]),{51:[1,263],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($VR,[2,64]),o($VR,[2,59]),o($VR,[2,60]),o($VR,[2,61]),{109:[1,264]},o($VR,[2,63]),o($VR,[2,65]),{66:[1,265],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($VR,[2,67]),o($VR,[2,68]),o($VR,[2,70]),o($VR,[2,69]),o($VR,[2,71]),o([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),o($VU,[2,78]),{31:[1,266],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{6:11,7:12,8:$V5,9:$V6,10:$V7,11:$V8,20:17,22:18,23:19,24:20,25:21,26:22,27:$V9,32:[1,267],33:24,34:$Va,36:$Vb,38:$Vc,42:28,43:39,44:$Vd,45:40,47:41,60:$Ve,84:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs,121:$Vt,122:$Vu,123:$Vv,124:$Vw,125:$Vx},o($VQ,[2,53]),{43:268,44:$Vd,45:40,47:41,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},o($Vm1,[2,121],{106:$VG1}),o($VH1,[2,130],{108:270,10:$Vy1,60:$Vz1,84:$VA1,105:$VB1,109:$VC1,110:$VD1,111:$VE1,112:$VF1}),o($VI1,[2,132]),o($VI1,[2,134]),o($VI1,[2,135]),o($VI1,[2,136]),o($VI1,[2,137]),o($VI1,[2,138]),o($VI1,[2,139]),o($VI1,[2,140]),o($VI1,[2,141]),o($Vm1,[2,122],{106:$VG1}),{10:[1,271]},o($Vm1,[2,123],{106:$VG1}),{10:[1,272]},o($Vw1,[2,129]),o($Vm1,[2,105],{106:$VG1}),o($Vm1,[2,106],{113:113,44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,114:$Vq,115:$Vr,116:$Vs}),o($Vm1,[2,110]),o($Vm1,[2,112],{10:[1,273]}),o($Vm1,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:$VA,9:$VB,11:$VC,21:278},o($Vz,[2,34]),o($VQ,[2,52]),{10:$Vy1,60:$Vz1,84:$VA1,105:$VB1,107:279,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},o($VI1,[2,133]),{14:$VF,44:$VG,60:$VH,89:$VI,101:280,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP,120:88},{14:$VF,44:$VG,60:$VH,89:$VI,101:281,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP,120:88},{98:[1,282]},o($Vm1,[2,120]),o($VR,[2,58]),{30:283,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},o($VR,[2,66]),o($Vj1,$V4,{5:284}),o($VH1,[2,131],{108:270,10:$Vy1,60:$Vz1,84:$VA1,105:$VB1,109:$VC1,110:$VD1,111:$VE1,112:$VF1}),o($Vm1,[2,126],{120:168,10:[1,285],14:$VF,44:$VG,60:$VH,89:$VI,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP}),o($Vm1,[2,127],{120:168,10:[1,286],14:$VF,44:$VG,60:$VH,89:$VI,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP}),o($Vm1,[2,114]),{31:[1,287],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{6:11,7:12,8:$V5,9:$V6,10:$V7,11:$V8,20:17,22:18,23:19,24:20,25:21,26:22,27:$V9,32:[1,288],33:24,34:$Va,36:$Vb,38:$Vc,42:28,43:39,44:$Vd,45:40,47:41,60:$Ve,84:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs,121:$Vt,122:$Vu,123:$Vv,124:$Vw,125:$Vx},{10:$Vy1,60:$Vz1,84:$VA1,92:289,105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{10:$Vy1,60:$Vz1,84:$VA1,92:290,105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},o($VR,[2,62]),o($Vz,[2,33]),o($Vm1,[2,124],{106:$VG1}),o($Vm1,[2,125],{106:$VG1})],\ndefaultActions: {},\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\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(\"acc_title\");return 34; \nbreak;\ncase 1: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 2: this.begin(\"acc_descr\");return 36; \nbreak;\ncase 3: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 4: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 5: this.popState(); \nbreak;\ncase 6:return \"acc_descr_multiline_value\";\nbreak;\ncase 7:\n // console.log('=> shapeData', yy_.yytext);\n this.pushState(\"shapeData\"); yy_.yytext=\"\"; return 40 \nbreak;\ncase 8:\n // console.log('=> shapeDataStr', yy_.yytext);\n this.pushState(\"shapeDataStr\");\n return 40;\n \nbreak;\ncase 9:\n // console.log('shapeData <==', yy_.yytext);\n this.popState(); return 40\nbreak;\ncase 10:\n // console.log('shapeData', yy_.yytext);\n const re = /\\n\\s*/g;\n yy_.yytext = yy_.yytext.replace(re,\"
    \");\n return 40\nbreak;\ncase 11:\n // console.log('shapeData', yy_.yytext);\n return 40;\n \nbreak;\ncase 12:\n // console.log('<== root', yy_.yytext)\n this.popState();\n \nbreak;\ncase 13:this.begin(\"callbackname\");\nbreak;\ncase 14:this.popState();\nbreak;\ncase 15:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 16:return 95;\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 96;\nbreak;\ncase 19: return \"MD_STR\";\nbreak;\ncase 20: this.popState();\nbreak;\ncase 21: this.begin(\"md_string\");\nbreak;\ncase 22: return \"STR\"; \nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:this.pushState(\"string\");\nbreak;\ncase 25:return 84;\nbreak;\ncase 26:return 102;\nbreak;\ncase 27:return 85;\nbreak;\ncase 28:return 104;\nbreak;\ncase 29:return 86;\nbreak;\ncase 30:return 87;\nbreak;\ncase 31:return 97;\nbreak;\ncase 32:this.begin(\"click\");\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34:return 88;\nbreak;\ncase 35:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 36:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 37:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 38:return 27;\nbreak;\ncase 39:return 32;\nbreak;\ncase 40:return 98;\nbreak;\ncase 41:return 98;\nbreak;\ncase 42:return 98;\nbreak;\ncase 43:return 98;\nbreak;\ncase 44: this.popState(); return 13; \nbreak;\ncase 45: this.popState(); return 14; \nbreak;\ncase 46: this.popState(); return 14; \nbreak;\ncase 47: this.popState(); return 14; \nbreak;\ncase 48: this.popState(); return 14; \nbreak;\ncase 49: this.popState(); return 14; \nbreak;\ncase 50: this.popState(); return 14; \nbreak;\ncase 51: this.popState(); return 14; \nbreak;\ncase 52: this.popState(); return 14; \nbreak;\ncase 53: this.popState(); return 14; \nbreak;\ncase 54: this.popState(); return 14; \nbreak;\ncase 55:return 121;\nbreak;\ncase 56:return 122;\nbreak;\ncase 57:return 123;\nbreak;\ncase 58:return 124;\nbreak;\ncase 59:return 125;\nbreak;\ncase 60: return 78; \nbreak;\ncase 61:return 105;\nbreak;\ncase 62:return 111;\nbreak;\ncase 63:return 46;\nbreak;\ncase 64:return 60;\nbreak;\ncase 65:return 44;\nbreak;\ncase 66:return 8;\nbreak;\ncase 67:return 106;\nbreak;\ncase 68:return 115;\nbreak;\ncase 69: this.popState(); return 77; \nbreak;\ncase 70: this.pushState(\"edgeText\"); return 75; \nbreak;\ncase 71:return 119;\nbreak;\ncase 72: this.popState(); return 77; \nbreak;\ncase 73: this.pushState(\"thickEdgeText\"); return 75; \nbreak;\ncase 74:return 119;\nbreak;\ncase 75: this.popState(); return 77; \nbreak;\ncase 76: this.pushState(\"dottedEdgeText\"); return 75; \nbreak;\ncase 77:return 119;\nbreak;\ncase 78:return 77;\nbreak;\ncase 79: this.popState(); return 53; \nbreak;\ncase 80:return \"TEXT\"\nbreak;\ncase 81: this.pushState(\"ellipseText\"); return 52; \nbreak;\ncase 82: this.popState(); return 55; \nbreak;\ncase 83: this.pushState(\"text\"); return 54; \nbreak;\ncase 84: this.popState(); return 57; \nbreak;\ncase 85: this.pushState(\"text\"); return 56; \nbreak;\ncase 86: return 58; \nbreak;\ncase 87: this.pushState(\"text\"); return 67; \nbreak;\ncase 88: this.popState(); return 64; \nbreak;\ncase 89: this.pushState(\"text\") ;return 63; \nbreak;\ncase 90: this.popState(); return 49; \nbreak;\ncase 91: this.pushState(\"text\"); return 48; \nbreak;\ncase 92: this.popState(); return 69; \nbreak;\ncase 93: this.popState(); return 71; \nbreak;\ncase 94:return 117;\nbreak;\ncase 95: this.pushState(\"trapText\"); return 68; \nbreak;\ncase 96: this.pushState(\"trapText\"); return 70; \nbreak;\ncase 97:return 118;\nbreak;\ncase 98:return 67;\nbreak;\ncase 99:return 90;\nbreak;\ncase 100:return 'SEP';\nbreak;\ncase 101:return 89;\nbreak;\ncase 102:return 115;\nbreak;\ncase 103:return 111;\nbreak;\ncase 104:return 44;\nbreak;\ncase 105:\n return 109;\n\nbreak;\ncase 106:return 114\nbreak;\ncase 107:return 116;\nbreak;\ncase 108: this.popState(); return 62; \nbreak;\ncase 109: this.pushState(\"text\"); return 62; \nbreak;\ncase 110: this.popState(); return 51; \nbreak;\ncase 111: this.pushState(\"text\"); return 50; \nbreak;\ncase 112: this.popState(); return 31; \nbreak;\ncase 113: this.pushState(\"text\"); return 29; \nbreak;\ncase 114: this.popState(); return 66 \nbreak;\ncase 115: this.pushState(\"text\"); return 65 \nbreak;\ncase 116:return \"TEXT\";\nbreak;\ncase 117:return 'QUOTE';\nbreak;\ncase 118:return 9;\nbreak;\ncase 119:return 10;\nbreak;\ncase 120:return 11;\nbreak;\n}\n},\nrules: [/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:@\\{)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\\\"]+)/,/^(?:[^}^\"]+)/,/^(?:\\})/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:[^`\"]+)/,/^(?:[`][\"])/,/^(?:[\"][`])/,/^(?:[^\"]+)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s])/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:flowchart-elk\\b)/,/^(?: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]*)/,/^(?:.*direction\\s+TD[^\\n]*)/,/^(?:[^\\s\\\"]+@(?=[^\\{\\\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:[^=]|=(?!))/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:[^\\.]|\\.(?!))/,/^(?:\\s*~~[\\~]+\\s*)/,/^(?:[-/\\)][\\)])/,/^(?:[^\\(\\)\\[\\]\\{\\}]|!\\)+)/,/^(?:\\(-)/,/^(?:\\]\\))/,/^(?:\\(\\[)/,/^(?:\\]\\])/,/^(?:\\[\\[)/,/^(?:\\[\\|)/,/^(?:>)/,/^(?:\\)\\])/,/^(?:\\[\\()/,/^(?:\\)\\)\\))/,/^(?:\\(\\(\\()/,/^(?:[\\\\(?=\\])][\\]])/,/^(?:\\/(?=\\])\\])/,/^(?:\\/(?!\\])|\\\\(?!\\])|[^\\\\\\[\\]\\(\\)\\{\\}\\/]+)/,/^(?:\\[\\/)/,/^(?:\\[\\\\)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:\\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-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])/,/^(?:\\|)/,/^(?:\\|)/,/^(?:\\))/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:(\\}))/,/^(?:\\{)/,/^(?:[^\\[\\]\\(\\)\\{\\}\\|\\\"]+)/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"shapeDataEndBracket\":{\"rules\":[21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"shapeDataStr\":{\"rules\":[9,10,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"shapeData\":{\"rules\":[8,11,12,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"callbackargs\":{\"rules\":[17,18,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"callbackname\":{\"rules\":[14,15,16,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"href\":{\"rules\":[21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"click\":{\"rules\":[21,24,33,34,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"dottedEdgeText\":{\"rules\":[21,24,75,77,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"thickEdgeText\":{\"rules\":[21,24,72,74,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"edgeText\":{\"rules\":[21,24,69,71,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"trapText\":{\"rules\":[21,24,78,81,83,85,89,91,92,93,94,95,96,109,111,113,115],\"inclusive\":false},\"ellipseText\":{\"rules\":[21,24,78,79,80,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"text\":{\"rules\":[21,24,78,81,82,83,84,85,88,89,90,91,95,96,108,109,110,111,112,113,114,115,116],\"inclusive\":false},\"vertex\":{\"rules\":[21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"dir\":{\"rules\":[21,24,44,45,46,47,48,49,50,51,52,53,54,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[5,6,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"acc_descr\":{\"rules\":[3,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"acc_title\":{\"rules\":[1,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"md_string\":{\"rules\":[19,20,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"string\":{\"rules\":[21,22,23,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,75,76,78,81,83,85,86,87,89,91,95,96,97,98,99,100,101,102,103,104,105,106,107,109,111,113,115,117,118,119,120],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "// @ts-ignore: JISON doesn't support types\nimport flowJisonParser from './flow.jison';\n\nconst newParser = Object.assign({}, flowJisonParser);\n\nnewParser.parse = (src: string): unknown => {\n // remove the trailing whitespace after closing curly braces when ending a line break\n const newSrc = src.replace(/}\\s*\\n/g, '}\\n');\n return flowJisonParser.parse(newSrc);\n};\n\nexport default newParser;\n", "// import khroma from 'khroma';\nimport * as khroma from 'khroma';\nimport { getIconStyles } from '../globalStyles.js';\n\n/** Returns the styles given options */\nexport interface FlowChartStyleOptions {\n arrowheadColor: string;\n border2: string;\n clusterBkg: string;\n clusterBorder: string;\n edgeLabelBackground: string;\n fontFamily: string;\n lineColor: string;\n mainBkg: string;\n nodeBorder: string;\n nodeTextColor: string;\n tertiaryColor: string;\n textColor: string;\n titleColor: string;\n strokeWidth: string;\n}\n\nconst fade = (color: string, opacity: number) => {\n // @ts-ignore TODO: incorrect types from khroma\n const channel = khroma.channel;\n\n const r = channel(color, 'r');\n const g = channel(color, 'g');\n const b = channel(color, 'b');\n\n // @ts-ignore incorrect types from khroma\n return khroma.rgba(r, g, b, opacity);\n};\n\nconst getStyles = (options: FlowChartStyleOptions) =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span {\n color: ${options.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .label text,span {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: ${options.strokeWidth ?? 1}px;\n }\n .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .katex path {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n }\n\n .rough-node .label,.node .label, .image-shape .label, .icon-shape .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n\n .root .anchor path {\n fill: ${options.lineColor} !important;\n stroke-width: 0;\n stroke: ${options.lineColor};\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: ${options.strokeWidth ?? 2}px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n p {\n background-color: ${options.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color:\n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n\n rect.text {\n fill: none;\n stroke-width: 0;\n }\n\n .icon-shape, .image-shape {\n background-color: ${options.edgeLabelBackground};\n p {\n background-color: ${options.edgeLabelBackground};\n padding: 2px;\n }\n .label rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n ${getIconStyles()}\n`;\n\nexport default getStyles;\n", "import type { MermaidConfig } from '../../config.type.js';\nimport { setConfig } from '../../diagram-api/diagramAPI.js';\nimport { FlowDB } from './flowDb.js';\nimport renderer from './flowRenderer-v3-unified.js';\n// @ts-ignore: JISON doesn't support types\n//import flowParser from './parser/flow.jison';\nimport flowParser from './parser/flowParser.ts';\nimport flowStyles from './styles.js';\n\nexport const diagram = {\n parser: flowParser,\n get db() {\n return new FlowDB();\n },\n renderer,\n styles: flowStyles,\n init: (cnf: MermaidConfig) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n if (cnf.layout) {\n setConfig({ layout: cnf.layout });\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n setConfig({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } });\n },\n};\n"], + "mappings": "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EK,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,EAAK,CAAC,EAAE,EAAE,EAAE,EAAEC,EAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,EAAK,CAAC,EAAE,GAAG,EAAEC,EAAK,CAAC,EAAE,GAAG,EAAEC,EAAK,CAAC,EAAE,GAAG,EAAEC,EAAK,CAAC,EAAE,GAAG,EAAEC,EAAK,CAAC,EAAE,GAAG,EAAEC,EAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,GAAG,IAAI,GAAG,EAAEC,EAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAK,CAAC,GAAG,GAAG,EAAEC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,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GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,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", + "names": ["MERMAID_DOM_ID_PREFIX", "FlowDB", "getConfig", "setAccTitle", "setAccDescription", "setDiagramTitle", "getAccTitle", "getAccDescription", "getDiagramTitle", "__name", "txt", "common_default", "labelType", "svgElementId", "id", "vertex", "textObj", "type", "style", "classes", "dir", "props", "metadata", "doc", "yamlData", "load", "JSON_SCHEMA", "edge", "e", "edgeDoc", "log", "s", "isValidShape", "_start", "_end", "linkTextObj", "existingLinks", "getEdgeId", "value", "linkData", "start", "end", "isLastStart", "isFirstEnd", "positions", "interpolate", "pos", "ids", "_style", "classNode", "newStyle", "className", "subGraph", "tooltip", "functionName", "functionArgs", "argList", "i", "item", "domId", "elem", "utils_default", "linkStr", "target", "element", "fun", "tooltipElem", "createTooltip", "select_default", "el", "title", "rect", "purify", "ver", "clear", "_id", "list", "_title", "result", "a", "prims", "objs", "nodeList", "flowchartConfig", "nodes", "count", "posCount", "childPos", "res", "_str", "str", "stroke", "char", "length", "line", "dots", "_startStr", "info", "startInfo", "allSgs", "sg", "allSubgraphs", "node", "arrowTypeStart", "arrowTypeEnd", "parentDB", "subGraphDB", "config", "look", "parentId", "isGroup", "baseNode", "classDefs", "compiledStyles", "customClass", "cssClass", "edges", "subGraphs", "rawEdge", "index", "styles", "defaultConfig", "getClasses", "__name", "text", "diagramObj", "draw", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "data4Layout", "svg", "getDiagramElement", "direction", "getRegisteredLayoutAlgorithm", "render", "padding", "utils_default", "setupViewPortForSVG", "flowRenderer_v3_unified_default", "parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "$VZ", "$V_", "$V$", "$V01", "$V11", "$V21", "$V31", "$V41", "$V51", "$V61", "$V71", "$V81", "$V91", "$Va1", "$Vb1", "$Vc1", "$Vd1", "$Ve1", "$Vf1", "$Vg1", "$Vh1", "$Vi1", "$Vj1", "$Vk1", "$Vl1", "$Vm1", "$Vn1", "$Vo1", "$Vp1", "$Vq1", "$Vr1", "$Vs1", "$Vt1", "$Vu1", "$Vv1", "$Vw1", "$Vx1", "$Vy1", "$Vz1", "$VA1", "$VB1", "$VC1", "$VD1", "$VE1", "$VF1", "$VG1", "$VH1", "$VI1", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "inf", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "re", "Parser", "flow_default", "parser", "newParser", "flow_default", "src", "newSrc", "flowParser_default", "fade", "__name", "color", "opacity", "channel", "channel_default", "g", "b", "rgba_default", "getStyles", "options", "getIconStyles", "styles_default", "diagram", "flowParser_default", "FlowDB", "flowRenderer_v3_unified_default", "styles_default", "__name", "cnf", "setConfig"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs b/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs deleted file mode 100644 index 62398a6..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs +++ /dev/null @@ -1,162 +0,0 @@ -import{a as l1}from"./chunk-KSICW3F5.mjs";import{a as s1,b as i1}from"./chunk-NN2NZ22Q.mjs";import{h as t1}from"./chunk-W2A4CRWB.mjs";import{a as n1}from"./chunk-TBF5ZNIQ.mjs";import{a as o1}from"./chunk-T4EQAHMB.mjs";import{b as a1,c as u1}from"./chunk-SK62O5VA.mjs";import"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import{d as r1}from"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import{m as Pe,p as Qe}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{F as Yt,Q as Ht,R as qt,S as Xt,T as Qt,U as Jt,V as Zt,W as $t,Y as ee,Z as at,_ as e1,b as zt,c as Wt,x as Kt}from"./chunk-3UWU4A3N.mjs";import{b as J,h as De}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as g}from"./chunk-VELTKBKT.mjs";var m1="flowchart-",Je=class{constructor(){this.vertexCounter=0;this.config=ee();this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=qt;this.setAccDescription=Qt;this.setDiagramTitle=Zt;this.getAccTitle=Xt;this.getAccDescription=Jt;this.getDiagramTitle=$t;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{g(this,"FlowDB")}sanitizeText(i){return Yt.sanitizeText(i,this.config)}sanitizeNodeLabelType(i){switch(i){case"markdown":case"string":case"text":return i;default:return"markdown"}}lookUpDomId(i){for(let n of this.vertices.values())if(n.id===i)return n.domId;return i}addVertex(i,n,r,a,l,b,c={},k){if(!i||i.trim().length===0)return;let u;if(k!==void 0){let m;k.includes(` -`)?m=k+` -`:m=`{ -`+k+` -}`,u=i1(m,{schema:s1})}let A=this.edges.find(m=>m.id===i);if(A){let m=u;m?.animate!==void 0&&(A.animate=m.animate),m?.animation!==void 0&&(A.animation=m.animation),m?.curve!==void 0&&(A.interpolate=m.curve);return}let F,f=this.vertices.get(i);if(f===void 0&&(f={id:i,labelType:"text",domId:m1+i+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(i,f)),this.vertexCounter++,n!==void 0?(this.config=ee(),F=this.sanitizeText(n.text.trim()),f.labelType=n.type,F.startsWith('"')&&F.endsWith('"')&&(F=F.substring(1,F.length-1)),f.text=F):f.text===void 0&&(f.text=i),r!==void 0&&(f.type=r),a?.forEach(m=>{f.styles.push(m)}),l?.forEach(m=>{f.classes.push(m)}),b!==void 0&&(f.dir=b),f.props===void 0?f.props=c:c!==void 0&&Object.assign(f.props,c),u!==void 0){if(u.shape){if(u.shape!==u.shape.toLowerCase()||u.shape.includes("_"))throw new Error(`No such shape: ${u.shape}. Shape names should be lowercase.`);if(!r1(u.shape))throw new Error(`No such shape: ${u.shape}.`);f.type=u?.shape}u?.label&&(f.text=u?.label,f.labelType=this.sanitizeNodeLabelType(u?.labelType)),u?.icon&&(f.icon=u?.icon,!u.label?.trim()&&f.text===i&&(f.text="")),u?.form&&(f.form=u?.form),u?.pos&&(f.pos=u?.pos),u?.img&&(f.img=u?.img,!u.label?.trim()&&f.text===i&&(f.text="")),u?.constraint&&(f.constraint=u.constraint),u.w&&(f.assetWidth=Number(u.w)),u.h&&(f.assetHeight=Number(u.h))}}addSingleLink(i,n,r,a){let c={start:i,end:n,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};J.info("abc78 Got edge...",c);let k=r.text;if(k!==void 0&&(c.text=this.sanitizeText(k.text.trim()),c.text.startsWith('"')&&c.text.endsWith('"')&&(c.text=c.text.substring(1,c.text.length-1)),c.labelType=this.sanitizeNodeLabelType(k.type)),r!==void 0&&(c.type=r.type,c.stroke=r.stroke,c.length=r.length>10?10:r.length),a&&!this.edges.some(u=>u.id===a))c.id=a,c.isUserDefinedId=!0;else{let u=this.edges.filter(A=>A.start===c.start&&A.end===c.end);u.length===0?c.id=Qe(c.start,c.end,{counter:0,prefix:"L"}):c.id=Qe(c.start,c.end,{counter:u.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))J.info("Pushing edge..."),this.edges.push(c);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. - -Initialize mermaid with maxEdges set to a higher number to allow more edges. -You cannot set this config via configuration inside the diagram as it is a secure config. -You have to call mermaid.initialize.`)}isLinkData(i){return i!==null&&typeof i=="object"&&"id"in i&&typeof i.id=="string"}addLink(i,n,r){let a=this.isLinkData(r)?r.id.replace("@",""):void 0;J.info("addLink",i,n,a);for(let l of i)for(let b of n){let c=l===i[i.length-1],k=b===n[0];c&&k?this.addSingleLink(l,b,r,a):this.addSingleLink(l,b,r,void 0)}}updateLinkInterpolate(i,n){i.forEach(r=>{r==="default"?this.edges.defaultInterpolate=n:this.edges[r].interpolate=n})}updateLink(i,n){i.forEach(r=>{if(typeof r=="number"&&r>=this.edges.length)throw new Error(`The index ${r} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);r==="default"?this.edges.defaultStyle=n:(this.edges[r].style=n,(this.edges[r]?.style?.length??0)>0&&!this.edges[r]?.style?.some(a=>a?.startsWith("fill"))&&this.edges[r]?.style?.push("fill:none"))})}addClass(i,n){let r=n.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");i.split(",").forEach(a=>{let l=this.classes.get(a);l===void 0&&(l={id:a,styles:[],textStyles:[]},this.classes.set(a,l)),r?.forEach(b=>{if(/color/.exec(b)){let c=b.replace("fill","bgFill");l.textStyles.push(c)}l.styles.push(b)})})}setDirection(i){this.direction=i.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(i,n){for(let r of i.split(",")){let a=this.vertices.get(r);a&&a.classes.push(n);let l=this.edges.find(c=>c.id===r);l&&l.classes.push(n);let b=this.subGraphLookup.get(r);b&&b.classes.push(n)}}setTooltip(i,n){if(n!==void 0){n=this.sanitizeText(n);for(let r of i.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(r):r,n)}}setClickFun(i,n,r){let a=this.lookUpDomId(i);if(ee().securityLevel!=="loose"||n===void 0)return;let l=[];if(typeof r=="string"){l=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let c=0;c{let c=document.querySelector(`[id="${a}"]`);c!==null&&c.addEventListener("click",()=>{Pe.runFunc(n,...l)},!1)}))}setLink(i,n,r){i.split(",").forEach(a=>{let l=this.vertices.get(a);l!==void 0&&(l.link=Pe.formatUrl(n,this.config),l.linkTarget=r)}),this.setClass(i,"clickable")}getTooltip(i){return this.tooltips.get(i)}setClickEvent(i,n,r){i.split(",").forEach(a=>{this.setClickFun(a,n,r)}),this.setClass(i,"clickable")}bindFunctions(i){this.funs.forEach(n=>{n(i)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(i){let n=t1();De(i).select("svg").selectAll("g.node").on("mouseover",l=>{let b=De(l.currentTarget),c=b.attr("title");if(c===null)return;let k=l.currentTarget?.getBoundingClientRect();n.transition().duration(200).style("opacity",".9"),n.text(b.attr("title")).style("left",window.scrollX+k.left+(k.right-k.left)/2+"px").style("top",window.scrollY+k.bottom+"px"),n.html(Kt.sanitize(c)),b.classed("hover",!0)}).on("mouseout",l=>{n.transition().duration(500).style("opacity",0),De(l.currentTarget).classed("hover",!1)})}clear(i="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=i,this.config=ee(),Ht()}setGen(i){this.version=i||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(i,n,r){let a=i.text.trim(),l=r.text;i===r&&/\s/.exec(r.text)&&(a=void 0);let c=g(f=>{let m={boolean:{},number:{},string:{}},S=[],x;return{nodeList:f.filter(function(j){let Z=typeof j;return j.stmt&&j.stmt==="dir"?(x=j.value,!1):j.trim()===""?!1:Z in m?m[Z].hasOwnProperty(j)?!1:m[Z][j]=!0:S.includes(j)?!1:S.push(j)}),dir:x}},"uniq")(n.flat()),k=c.nodeList,u=c.dir,A=ee().flowchart??{};if(u=u??(A.inheritDir?this.getDirection()??ee().direction??void 0:void 0),this.version==="gen-1")for(let f=0;f2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=n,this.subGraphs[n].id===i)return{result:!0,count:0};let a=0,l=1;for(;a=0){let c=this.indexNodes2(i,b);if(c.result)return{result:!0,count:l+c.count};l=l+c.count}a=a+1}return{result:!1,count:l}}getDepthFirstPos(i){return this.posCrossRef[i]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(i){let n=i.trim(),r="arrow_open";switch(n[0]){case"<":r="arrow_point",n=n.slice(1);break;case"x":r="arrow_cross",n=n.slice(1);break;case"o":r="arrow_circle",n=n.slice(1);break}let a="normal";return n.includes("=")&&(a="thick"),n.includes(".")&&(a="dotted"),{type:r,stroke:a}}countChar(i,n){let r=n.length,a=0;for(let l=0;l":a="arrow_point",n.startsWith("<")&&(a="double_"+a,r=r.slice(1));break;case"o":a="arrow_circle",n.startsWith("o")&&(a="double_"+a,r=r.slice(1));break}let l="normal",b=r.length-1;r.startsWith("=")&&(l="thick"),r.startsWith("~")&&(l="invisible");let c=this.countChar(".",r);return c&&(l="dotted",b=c),{type:a,stroke:l,length:b}}destructLink(i,n){let r=this.destructEndLink(i),a;if(n){if(a=this.destructStartLink(n),a.stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if(a.type==="arrow_open")a.type=r.type;else{if(a.type!==r.type)return{type:"INVALID",stroke:"INVALID"};a.type="double_"+a.type}return a.type==="double_arrow"&&(a.type="double_arrow_point"),a.length=r.length,a}return r}exists(i,n){for(let r of i)if(r.nodes.includes(n))return!0;return!1}makeUniq(i,n){let r=[];return i.nodes.forEach((a,l)=>{this.exists(n,a)||r.push(i.nodes[l])}),{nodes:r}}getTypeFromVertex(i){if(i.img)return"imageSquare";if(i.icon)return i.form==="circle"?"iconCircle":i.form==="square"?"iconSquare":i.form==="rounded"?"iconRounded":"icon";switch(i.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return i.type}}findNode(i,n){return i.find(r=>r.id===n)}destructEdgeType(i){let n="none",r="arrow_point";switch(i){case"arrow_point":case"arrow_circle":case"arrow_cross":r=i;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":n=i.replace("double_",""),r=n;break}return{arrowTypeStart:n,arrowTypeEnd:r}}addNodeFromVertex(i,n,r,a,l,b){let c=r.get(i.id),k=a.get(i.id)??!1,u=this.findNode(n,i.id);if(u)u.cssStyles=i.styles,u.cssCompiledStyles=this.getCompiledStyles(i.classes),u.cssClasses=i.classes.join(" ");else{let A={id:i.id,label:i.text,labelType:i.labelType,labelStyle:"",parentId:c,padding:l.flowchart?.padding||8,cssStyles:i.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...i.classes]),cssClasses:"default "+i.classes.join(" "),dir:i.dir,domId:i.domId,look:b,link:i.link,linkTarget:i.linkTarget,tooltip:this.getTooltip(i.id),icon:i.icon,pos:i.pos,img:i.img,assetWidth:i.assetWidth,assetHeight:i.assetHeight,constraint:i.constraint};k?n.push({...A,isGroup:!0,shape:"rect"}):n.push({...A,isGroup:!1,shape:this.getTypeFromVertex(i)})}}getCompiledStyles(i){let n=[];for(let r of i){let a=this.classes.get(r);a?.styles&&(n=[...n,...a.styles??[]].map(l=>l.trim())),a?.textStyles&&(n=[...n,...a.textStyles??[]].map(l=>l.trim()))}return n}getData(){let i=ee(),n=[],r=[],a=this.getSubGraphs(),l=new Map,b=new Map;for(let u=a.length-1;u>=0;u--){let A=a[u];A.nodes.length>0&&b.set(A.id,!0);for(let F of A.nodes)l.set(F,A.id)}for(let u=a.length-1;u>=0;u--){let A=a[u];n.push({id:A.id,label:A.title,labelStyle:"",labelType:A.labelType,parentId:l.get(A.id),padding:8,cssCompiledStyles:this.getCompiledStyles(A.classes),cssClasses:A.classes.join(" "),shape:"rect",dir:A.dir,isGroup:!0,look:i.look})}this.getVertices().forEach(u=>{this.addNodeFromVertex(u,n,l,b,i,i.look||"classic")});let k=this.getEdges();return k.forEach((u,A)=>{let{arrowTypeStart:F,arrowTypeEnd:f}=this.destructEdgeType(u.type),m=[...k.defaultStyle??[]];u.style&&m.push(...u.style);let S={id:Qe(u.start,u.end,{counter:A,prefix:"L"},u.id),isUserDefinedId:u.isUserDefinedId,start:u.start,end:u.end,type:u.type??"normal",label:u.text,labelType:u.labelType,labelpos:"c",thickness:u.stroke,minlen:u.length,classes:u?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:u?.stroke==="invisible"||u?.type==="arrow_open"?"none":F,arrowTypeEnd:u?.stroke==="invisible"||u?.type==="arrow_open"?"none":f,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(u.classes),labelStyle:m,style:m,pattern:u.stroke,look:i.look,animate:u.animate,animation:u.animation,curve:u.interpolate||this.edges.defaultInterpolate||i.flowchart?.curve};r.push(S)}),{nodes:n,edges:r,other:{},config:i}}defaultConfig(){return e1.flowchart}};var y1=g(function(s,i){return i.db.getClasses()},"getClasses"),D1=g(async function(s,i,n,r){J.info("REF0:"),J.info("Drawing state diagram (v2)",i);let{securityLevel:a,flowchart:l,layout:b}=ee(),c;a==="sandbox"&&(c=De("#i"+i));let k=a==="sandbox"?c.nodes()[0].contentDocument:document;J.debug("Before getData: ");let u=r.db.getData();J.debug("Data: ",u);let A=n1(i,a),F=r.db.getDirection();u.type=r.type,u.layoutAlgorithm=u1(b),u.layoutAlgorithm==="dagre"&&b==="elk"&&J.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),u.direction=F,u.nodeSpacing=l?.nodeSpacing||50,u.rankSpacing=l?.rankSpacing||50,u.markers=["point","circle","cross"],u.diagramId=i,J.debug("REF1:",u),await a1(u,A);let f=u.config.flowchart?.diagramPadding??8;Pe.insertTitle(A,"flowchartTitleText",l?.titleTopMargin||0,r.db.getDiagramTitle()),o1(A,f,"flowchart",l?.useMaxWidth||!1);for(let m of u.nodes){let S=De(`#${i} [id="${m.id}"]`);if(!S||!m.link)continue;let x=k.createElementNS("http://www.w3.org/2000/svg","a");x.setAttributeNS("http://www.w3.org/2000/svg","class",m.cssClasses),x.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),a==="sandbox"?x.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):m.linkTarget&&x.setAttributeNS("http://www.w3.org/2000/svg","target",m.linkTarget);let pe=S.insert(function(){return x},":first-child"),j=S.select(".label-container");j&&pe.append(function(){return j.node()});let Z=S.select(".label");Z&&pe.append(function(){return Z.node()})}},"draw"),c1={getClasses:y1,draw:D1};var ut=(function(){var s=g(function(ge,h,d,p){for(d=d||{},p=ge.length;p--;d[ge[p]]=h);return d},"o"),i=[1,4],n=[1,3],r=[1,5],a=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],l=[2,2],b=[1,13],c=[1,14],k=[1,15],u=[1,16],A=[1,23],F=[1,25],f=[1,26],m=[1,27],S=[1,50],x=[1,49],pe=[1,29],j=[1,30],Z=[1,31],Me=[1,32],Oe=[1,33],V=[1,45],v=[1,47],I=[1,43],N=[1,48],R=[1,44],G=[1,51],P=[1,46],M=[1,52],O=[1,53],Ue=[1,34],je=[1,35],ze=[1,36],We=[1,37],Ke=[1,38],fe=[1,58],T=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],te=[1,62],se=[1,61],ie=[1,63],Ee=[8,9,11,75,77,78],lt=[1,79],Ce=[1,92],Se=[1,97],xe=[1,96],Te=[1,93],Fe=[1,89],Be=[1,95],_e=[1,91],we=[1,98],Le=[1,94],Ve=[1,99],ve=[1,90],ke=[8,9,10,11,40,75,77,78],z=[8,9,10,11,40,46,75,77,78],H=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],ct=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],Ie=[44,60,89,102,105,106,109,111,114,115,116],ht=[1,122],dt=[1,123],Ye=[1,125],He=[1,124],pt=[44,60,62,74,89,102,105,106,109,111,114,115,116],ft=[1,134],bt=[1,148],gt=[1,149],kt=[1,150],At=[1,151],mt=[1,136],yt=[1,138],Dt=[1,142],Et=[1,143],Ct=[1,144],St=[1,145],xt=[1,146],Tt=[1,147],Ft=[1,152],Bt=[1,153],_t=[1,132],wt=[1,133],Lt=[1,140],Vt=[1,135],vt=[1,139],It=[1,137],Ze=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],Nt=[1,155],Rt=[1,157],w=[8,9,11],q=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],y=[1,177],W=[1,173],K=[1,174],D=[1,178],E=[1,175],C=[1,176],Ne=[77,116,119],B=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],Gt=[10,106],be=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],re=[1,248],ne=[1,246],ae=[1,250],ue=[1,244],oe=[1,245],le=[1,247],ce=[1,249],he=[1,251],Re=[1,269],Pt=[8,9,11,106],$=[8,9,10,11,60,84,105,106,109,110,111,112],$e={trace:g(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,direction_td:125,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr",125:"direction_td"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1],[33,1]],performAction:g(function(h,d,p,o,_,e,Ae){var t=e.length-1;switch(_){case 2:this.$=[];break;case 3:(!Array.isArray(e[t])||e[t].length>0)&&e[t-1].push(e[t]),this.$=e[t-1];break;case 4:case 183:this.$=e[t];break;case 11:o.setDirection("TB"),this.$="TB";break;case 12:o.setDirection(e[t-1]),this.$=e[t-1];break;case 27:this.$=e[t-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=o.addSubGraph(e[t-6],e[t-1],e[t-4]);break;case 34:this.$=o.addSubGraph(e[t-3],e[t-1],e[t-3]);break;case 35:this.$=o.addSubGraph(void 0,e[t-1],void 0);break;case 37:this.$=e[t].trim(),o.setAccTitle(this.$);break;case 38:case 39:this.$=e[t].trim(),o.setAccDescription(this.$);break;case 43:this.$=e[t-1]+e[t];break;case 44:this.$=e[t];break;case 45:o.addVertex(e[t-1][e[t-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,e[t]),o.addLink(e[t-3].stmt,e[t-1],e[t-2]),this.$={stmt:e[t-1],nodes:e[t-1].concat(e[t-3].nodes)};break;case 46:o.addLink(e[t-2].stmt,e[t],e[t-1]),this.$={stmt:e[t],nodes:e[t].concat(e[t-2].nodes)};break;case 47:o.addLink(e[t-3].stmt,e[t-1],e[t-2]),this.$={stmt:e[t-1],nodes:e[t-1].concat(e[t-3].nodes)};break;case 48:this.$={stmt:e[t-1],nodes:e[t-1]};break;case 49:o.addVertex(e[t-1][e[t-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,e[t]),this.$={stmt:e[t-1],nodes:e[t-1],shapeData:e[t]};break;case 50:this.$={stmt:e[t],nodes:e[t]};break;case 51:this.$=[e[t]];break;case 52:o.addVertex(e[t-5][e[t-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,e[t-4]),this.$=e[t-5].concat(e[t]);break;case 53:this.$=e[t-4].concat(e[t]);break;case 54:this.$=e[t];break;case 55:this.$=e[t-2],o.setClass(e[t-2],e[t]);break;case 56:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"square");break;case 57:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"doublecircle");break;case 58:this.$=e[t-5],o.addVertex(e[t-5],e[t-2],"circle");break;case 59:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"ellipse");break;case 60:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"stadium");break;case 61:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"subroutine");break;case 62:this.$=e[t-7],o.addVertex(e[t-7],e[t-1],"rect",void 0,void 0,void 0,Object.fromEntries([[e[t-5],e[t-3]]]));break;case 63:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"cylinder");break;case 64:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"round");break;case 65:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"diamond");break;case 66:this.$=e[t-5],o.addVertex(e[t-5],e[t-2],"hexagon");break;case 67:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"odd");break;case 68:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"trapezoid");break;case 69:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"inv_trapezoid");break;case 70:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"lean_right");break;case 71:this.$=e[t-3],o.addVertex(e[t-3],e[t-1],"lean_left");break;case 72:this.$=e[t],o.addVertex(e[t]);break;case 73:e[t-1].text=e[t],this.$=e[t-1];break;case 74:case 75:e[t-2].text=e[t-1],this.$=e[t-2];break;case 76:this.$=e[t];break;case 77:var L=o.destructLink(e[t],e[t-2]);this.$={type:L.type,stroke:L.stroke,length:L.length,text:e[t-1]};break;case 78:var L=o.destructLink(e[t],e[t-2]);this.$={type:L.type,stroke:L.stroke,length:L.length,text:e[t-1],id:e[t-3]};break;case 79:this.$={text:e[t],type:"text"};break;case 80:this.$={text:e[t-1].text+""+e[t],type:e[t-1].type};break;case 81:this.$={text:e[t],type:"string"};break;case 82:this.$={text:e[t],type:"markdown"};break;case 83:var L=o.destructLink(e[t]);this.$={type:L.type,stroke:L.stroke,length:L.length};break;case 84:var L=o.destructLink(e[t]);this.$={type:L.type,stroke:L.stroke,length:L.length,id:e[t-1]};break;case 85:this.$=e[t-1];break;case 86:this.$={text:e[t],type:"text"};break;case 87:this.$={text:e[t-1].text+""+e[t],type:e[t-1].type};break;case 88:this.$={text:e[t],type:"string"};break;case 89:case 104:this.$={text:e[t],type:"markdown"};break;case 101:this.$={text:e[t],type:"text"};break;case 102:this.$={text:e[t-1].text+""+e[t],type:e[t-1].type};break;case 103:this.$={text:e[t],type:"text"};break;case 105:this.$=e[t-4],o.addClass(e[t-2],e[t]);break;case 106:this.$=e[t-4],o.setClass(e[t-2],e[t]);break;case 107:case 115:this.$=e[t-1],o.setClickEvent(e[t-1],e[t]);break;case 108:case 116:this.$=e[t-3],o.setClickEvent(e[t-3],e[t-2]),o.setTooltip(e[t-3],e[t]);break;case 109:this.$=e[t-2],o.setClickEvent(e[t-2],e[t-1],e[t]);break;case 110:this.$=e[t-4],o.setClickEvent(e[t-4],e[t-3],e[t-2]),o.setTooltip(e[t-4],e[t]);break;case 111:this.$=e[t-2],o.setLink(e[t-2],e[t]);break;case 112:this.$=e[t-4],o.setLink(e[t-4],e[t-2]),o.setTooltip(e[t-4],e[t]);break;case 113:this.$=e[t-4],o.setLink(e[t-4],e[t-2],e[t]);break;case 114:this.$=e[t-6],o.setLink(e[t-6],e[t-4],e[t]),o.setTooltip(e[t-6],e[t-2]);break;case 117:this.$=e[t-1],o.setLink(e[t-1],e[t]);break;case 118:this.$=e[t-3],o.setLink(e[t-3],e[t-2]),o.setTooltip(e[t-3],e[t]);break;case 119:this.$=e[t-3],o.setLink(e[t-3],e[t-2],e[t]);break;case 120:this.$=e[t-5],o.setLink(e[t-5],e[t-4],e[t]),o.setTooltip(e[t-5],e[t-2]);break;case 121:this.$=e[t-4],o.addVertex(e[t-2],void 0,void 0,e[t]);break;case 122:this.$=e[t-4],o.updateLink([e[t-2]],e[t]);break;case 123:this.$=e[t-4],o.updateLink(e[t-2],e[t]);break;case 124:this.$=e[t-8],o.updateLinkInterpolate([e[t-6]],e[t-2]),o.updateLink([e[t-6]],e[t]);break;case 125:this.$=e[t-8],o.updateLinkInterpolate(e[t-6],e[t-2]),o.updateLink(e[t-6],e[t]);break;case 126:this.$=e[t-6],o.updateLinkInterpolate([e[t-4]],e[t]);break;case 127:this.$=e[t-6],o.updateLinkInterpolate(e[t-4],e[t]);break;case 128:case 130:this.$=[e[t]];break;case 129:case 131:e[t-2].push(e[t]),this.$=e[t-2];break;case 133:this.$=e[t-1]+e[t];break;case 181:this.$=e[t];break;case 182:this.$=e[t-1]+""+e[t];break;case 184:this.$=e[t-1]+""+e[t];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break;case 189:this.$={stmt:"dir",value:"TD"};break}},"anonymous"),table:[{3:1,4:2,9:i,10:n,12:r},{1:[3]},s(a,l,{5:6}),{4:7,9:i,10:n,12:r},{4:8,9:i,10:n,12:r},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:b,9:c,10:k,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:A,33:24,34:F,36:f,38:m,42:28,43:39,44:S,45:40,47:41,60:x,84:pe,85:j,86:Z,87:Me,88:Oe,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O,121:Ue,122:je,123:ze,124:We,125:Ke},s(a,[2,9]),s(a,[2,10]),s(a,[2,11]),{8:[1,55],9:[1,56],10:fe,15:54,18:57},s(T,[2,3]),s(T,[2,4]),s(T,[2,5]),s(T,[2,6]),s(T,[2,7]),s(T,[2,8]),{8:te,9:se,11:ie,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:te,9:se,11:ie,21:68},{8:te,9:se,11:ie,21:69},{8:te,9:se,11:ie,21:70},{8:te,9:se,11:ie,21:71},{8:te,9:se,11:ie,21:72},{8:te,9:se,10:[1,73],11:ie,21:74},s(T,[2,36]),{35:[1,75]},{37:[1,76]},s(T,[2,39]),s(Ee,[2,50],{18:77,39:78,10:fe,40:lt}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:Ce,44:Se,60:xe,80:[1,87],89:Te,95:[1,84],97:[1,85],101:86,105:Fe,106:Be,109:_e,111:we,114:Le,115:Ve,116:ve,120:88},s(T,[2,185]),s(T,[2,186]),s(T,[2,187]),s(T,[2,188]),s(T,[2,189]),s(ke,[2,51]),s(ke,[2,54],{46:[1,100]}),s(z,[2,72],{113:113,29:[1,101],44:S,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:x,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:V,102:v,105:I,106:N,109:R,111:G,114:P,115:M,116:O}),s(H,[2,181]),s(H,[2,142]),s(H,[2,143]),s(H,[2,144]),s(H,[2,145]),s(H,[2,146]),s(H,[2,147]),s(H,[2,148]),s(H,[2,149]),s(H,[2,150]),s(H,[2,151]),s(H,[2,152]),s(a,[2,12]),s(a,[2,18]),s(a,[2,19]),{9:[1,114]},s(ct,[2,26],{18:115,10:fe}),s(T,[2,27]),{42:116,43:39,44:S,45:40,47:41,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},s(T,[2,40]),s(T,[2,41]),s(T,[2,42]),s(Ie,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:ht,81:dt,116:Ye,119:He},{75:[1,126],77:[1,127]},s(pt,[2,83]),s(T,[2,28]),s(T,[2,29]),s(T,[2,30]),s(T,[2,31]),s(T,[2,32]),{10:ft,12:bt,14:gt,27:kt,28:128,32:At,44:mt,60:yt,75:Dt,80:[1,130],81:[1,131],83:141,84:Et,85:Ct,86:St,87:xt,88:Tt,89:Ft,90:Bt,91:129,105:_t,109:wt,111:Lt,114:Vt,115:vt,116:It},s(Ze,l,{5:154}),s(T,[2,37]),s(T,[2,38]),s(Ee,[2,48],{44:Nt}),s(Ee,[2,49],{18:156,10:fe,40:Rt}),s(ke,[2,44]),{44:S,47:158,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},{102:[1,159],103:160,105:[1,161]},{44:S,47:162,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},{44:S,47:163,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},s(w,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},s(w,[2,115],{120:168,10:[1,167],14:Ce,44:Se,60:xe,89:Te,105:Fe,106:Be,109:_e,111:we,114:Le,115:Ve,116:ve}),s(w,[2,117],{10:[1,169]}),s(q,[2,183]),s(q,[2,170]),s(q,[2,171]),s(q,[2,172]),s(q,[2,173]),s(q,[2,174]),s(q,[2,175]),s(q,[2,176]),s(q,[2,177]),s(q,[2,178]),s(q,[2,179]),s(q,[2,180]),{44:S,47:170,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},{30:171,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:179,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:181,50:[1,180],67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:182,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:183,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:184,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{109:[1,185]},{30:186,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:187,65:[1,188],67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:189,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:190,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{30:191,67:y,80:W,81:K,82:172,116:D,117:E,118:C},s(H,[2,182]),s(a,[2,20]),s(ct,[2,25]),s(Ee,[2,46],{39:192,18:193,10:fe,40:lt}),s(Ie,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{77:[1,197],79:198,116:Ye,119:He},s(Ne,[2,79]),s(Ne,[2,81]),s(Ne,[2,82]),s(Ne,[2,168]),s(Ne,[2,169]),{76:199,79:121,80:ht,81:dt,116:Ye,119:He},s(pt,[2,84]),{8:te,9:se,10:ft,11:ie,12:bt,14:gt,21:201,27:kt,29:[1,200],32:At,44:mt,60:yt,75:Dt,83:141,84:Et,85:Ct,86:St,87:xt,88:Tt,89:Ft,90:Bt,91:202,105:_t,109:wt,111:Lt,114:Vt,115:vt,116:It},s(B,[2,101]),s(B,[2,103]),s(B,[2,104]),s(B,[2,157]),s(B,[2,158]),s(B,[2,159]),s(B,[2,160]),s(B,[2,161]),s(B,[2,162]),s(B,[2,163]),s(B,[2,164]),s(B,[2,165]),s(B,[2,166]),s(B,[2,167]),s(B,[2,90]),s(B,[2,91]),s(B,[2,92]),s(B,[2,93]),s(B,[2,94]),s(B,[2,95]),s(B,[2,96]),s(B,[2,97]),s(B,[2,98]),s(B,[2,99]),s(B,[2,100]),{6:11,7:12,8:b,9:c,10:k,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:A,32:[1,203],33:24,34:F,36:f,38:m,42:28,43:39,44:S,45:40,47:41,60:x,84:pe,85:j,86:Z,87:Me,88:Oe,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O,121:Ue,122:je,123:ze,124:We,125:Ke},{10:fe,18:204},{44:[1,205]},s(ke,[2,43]),{10:[1,206],44:S,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:113,114:P,115:M,116:O},{10:[1,207]},{10:[1,208],106:[1,209]},s(Gt,[2,128]),{10:[1,210],44:S,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:113,114:P,115:M,116:O},{10:[1,211],44:S,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:113,114:P,115:M,116:O},{80:[1,212]},s(w,[2,109],{10:[1,213]}),s(w,[2,111],{10:[1,214]}),{80:[1,215]},s(q,[2,184]),{80:[1,216],98:[1,217]},s(ke,[2,55],{113:113,44:S,60:x,89:V,102:v,105:I,106:N,109:R,111:G,114:P,115:M,116:O}),{31:[1,218],67:y,82:219,116:D,117:E,118:C},s(be,[2,86]),s(be,[2,88]),s(be,[2,89]),s(be,[2,153]),s(be,[2,154]),s(be,[2,155]),s(be,[2,156]),{49:[1,220],67:y,82:219,116:D,117:E,118:C},{30:221,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{51:[1,222],67:y,82:219,116:D,117:E,118:C},{53:[1,223],67:y,82:219,116:D,117:E,118:C},{55:[1,224],67:y,82:219,116:D,117:E,118:C},{57:[1,225],67:y,82:219,116:D,117:E,118:C},{60:[1,226]},{64:[1,227],67:y,82:219,116:D,117:E,118:C},{66:[1,228],67:y,82:219,116:D,117:E,118:C},{30:229,67:y,80:W,81:K,82:172,116:D,117:E,118:C},{31:[1,230],67:y,82:219,116:D,117:E,118:C},{67:y,69:[1,231],71:[1,232],82:219,116:D,117:E,118:C},{67:y,69:[1,234],71:[1,233],82:219,116:D,117:E,118:C},s(Ee,[2,45],{18:156,10:fe,40:Rt}),s(Ee,[2,47],{44:Nt}),s(Ie,[2,75]),s(Ie,[2,74]),{62:[1,235],67:y,82:219,116:D,117:E,118:C},s(Ie,[2,77]),s(Ne,[2,80]),{77:[1,236],79:198,116:Ye,119:He},{30:237,67:y,80:W,81:K,82:172,116:D,117:E,118:C},s(Ze,l,{5:238}),s(B,[2,102]),s(T,[2,35]),{43:239,44:S,45:40,47:41,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},{10:fe,18:240},{10:re,60:ne,84:ae,92:241,105:ue,107:242,108:243,109:oe,110:le,111:ce,112:he},{10:re,60:ne,84:ae,92:252,104:[1,253],105:ue,107:242,108:243,109:oe,110:le,111:ce,112:he},{10:re,60:ne,84:ae,92:254,104:[1,255],105:ue,107:242,108:243,109:oe,110:le,111:ce,112:he},{105:[1,256]},{10:re,60:ne,84:ae,92:257,105:ue,107:242,108:243,109:oe,110:le,111:ce,112:he},{44:S,47:258,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},s(w,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},s(w,[2,116]),s(w,[2,118],{10:[1,262]}),s(w,[2,119]),s(z,[2,56]),s(be,[2,87]),s(z,[2,57]),{51:[1,263],67:y,82:219,116:D,117:E,118:C},s(z,[2,64]),s(z,[2,59]),s(z,[2,60]),s(z,[2,61]),{109:[1,264]},s(z,[2,63]),s(z,[2,65]),{66:[1,265],67:y,82:219,116:D,117:E,118:C},s(z,[2,67]),s(z,[2,68]),s(z,[2,70]),s(z,[2,69]),s(z,[2,71]),s([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),s(Ie,[2,78]),{31:[1,266],67:y,82:219,116:D,117:E,118:C},{6:11,7:12,8:b,9:c,10:k,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:A,32:[1,267],33:24,34:F,36:f,38:m,42:28,43:39,44:S,45:40,47:41,60:x,84:pe,85:j,86:Z,87:Me,88:Oe,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O,121:Ue,122:je,123:ze,124:We,125:Ke},s(ke,[2,53]),{43:268,44:S,45:40,47:41,60:x,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O},s(w,[2,121],{106:Re}),s(Pt,[2,130],{108:270,10:re,60:ne,84:ae,105:ue,109:oe,110:le,111:ce,112:he}),s($,[2,132]),s($,[2,134]),s($,[2,135]),s($,[2,136]),s($,[2,137]),s($,[2,138]),s($,[2,139]),s($,[2,140]),s($,[2,141]),s(w,[2,122],{106:Re}),{10:[1,271]},s(w,[2,123],{106:Re}),{10:[1,272]},s(Gt,[2,129]),s(w,[2,105],{106:Re}),s(w,[2,106],{113:113,44:S,60:x,89:V,102:v,105:I,106:N,109:R,111:G,114:P,115:M,116:O}),s(w,[2,110]),s(w,[2,112],{10:[1,273]}),s(w,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:te,9:se,11:ie,21:278},s(T,[2,34]),s(ke,[2,52]),{10:re,60:ne,84:ae,105:ue,107:279,108:243,109:oe,110:le,111:ce,112:he},s($,[2,133]),{14:Ce,44:Se,60:xe,89:Te,101:280,105:Fe,106:Be,109:_e,111:we,114:Le,115:Ve,116:ve,120:88},{14:Ce,44:Se,60:xe,89:Te,101:281,105:Fe,106:Be,109:_e,111:we,114:Le,115:Ve,116:ve,120:88},{98:[1,282]},s(w,[2,120]),s(z,[2,58]),{30:283,67:y,80:W,81:K,82:172,116:D,117:E,118:C},s(z,[2,66]),s(Ze,l,{5:284}),s(Pt,[2,131],{108:270,10:re,60:ne,84:ae,105:ue,109:oe,110:le,111:ce,112:he}),s(w,[2,126],{120:168,10:[1,285],14:Ce,44:Se,60:xe,89:Te,105:Fe,106:Be,109:_e,111:we,114:Le,115:Ve,116:ve}),s(w,[2,127],{120:168,10:[1,286],14:Ce,44:Se,60:xe,89:Te,105:Fe,106:Be,109:_e,111:we,114:Le,115:Ve,116:ve}),s(w,[2,114]),{31:[1,287],67:y,82:219,116:D,117:E,118:C},{6:11,7:12,8:b,9:c,10:k,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:A,32:[1,288],33:24,34:F,36:f,38:m,42:28,43:39,44:S,45:40,47:41,60:x,84:pe,85:j,86:Z,87:Me,88:Oe,89:V,102:v,105:I,106:N,109:R,111:G,113:42,114:P,115:M,116:O,121:Ue,122:je,123:ze,124:We,125:Ke},{10:re,60:ne,84:ae,92:289,105:ue,107:242,108:243,109:oe,110:le,111:ce,112:he},{10:re,60:ne,84:ae,92:290,105:ue,107:242,108:243,109:oe,110:le,111:ce,112:he},s(z,[2,62]),s(T,[2,33]),s(w,[2,124],{106:Re}),s(w,[2,125],{106:Re})],defaultActions:{},parseError:g(function(h,d){if(d.recoverable)this.trace(h);else{var p=new Error(h);throw p.hash=d,p}},"parseError"),parse:g(function(h){var d=this,p=[0],o=[],_=[null],e=[],Ae=this.table,t="",L=0,Mt=0,Ot=0,b1=2,Ut=1,g1=e.slice.call(arguments,1),U=Object.create(this.lexer),me={yy:{}};for(var tt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,tt)&&(me.yy[tt]=this.yy[tt]);U.setInput(h,me.yy),me.yy.lexer=U,me.yy.parser=this,typeof U.yylloc>"u"&&(U.yylloc={});var st=U.yylloc;e.push(st);var k1=U.options&&U.options.ranges;typeof me.yy.parseError=="function"?this.parseError=me.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function S1(X){p.length=p.length-2*X,_.length=_.length-X,e.length=e.length-X}g(S1,"popStack");function A1(){var X;return X=o.pop()||U.lex()||Ut,typeof X!="number"&&(X instanceof Array&&(o=X,X=o.pop()),X=d.symbols_[X]||X),X}g(A1,"lex");for(var Y,it,ye,Q,x1,rt,Ge={},qe,de,jt,Xe;;){if(ye=p[p.length-1],this.defaultActions[ye]?Q=this.defaultActions[ye]:((Y===null||typeof Y>"u")&&(Y=A1()),Q=Ae[ye]&&Ae[ye][Y]),typeof Q>"u"||!Q.length||!Q[0]){var nt="";Xe=[];for(qe in Ae[ye])this.terminals_[qe]&&qe>b1&&Xe.push("'"+this.terminals_[qe]+"'");U.showPosition?nt="Parse error on line "+(L+1)+`: -`+U.showPosition()+` -Expecting `+Xe.join(", ")+", got '"+(this.terminals_[Y]||Y)+"'":nt="Parse error on line "+(L+1)+": Unexpected "+(Y==Ut?"end of input":"'"+(this.terminals_[Y]||Y)+"'"),this.parseError(nt,{text:U.match,token:this.terminals_[Y]||Y,line:U.yylineno,loc:st,expected:Xe})}if(Q[0]instanceof Array&&Q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ye+", token: "+Y);switch(Q[0]){case 1:p.push(Y),_.push(U.yytext),e.push(U.yylloc),p.push(Q[1]),Y=null,it?(Y=it,it=null):(Mt=U.yyleng,t=U.yytext,L=U.yylineno,st=U.yylloc,Ot>0&&Ot--);break;case 2:if(de=this.productions_[Q[1]][1],Ge.$=_[_.length-de],Ge._$={first_line:e[e.length-(de||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(de||1)].first_column,last_column:e[e.length-1].last_column},k1&&(Ge._$.range=[e[e.length-(de||1)].range[0],e[e.length-1].range[1]]),rt=this.performAction.apply(Ge,[t,Mt,L,me.yy,Q[1],_,e].concat(g1)),typeof rt<"u")return rt;de&&(p=p.slice(0,-1*de*2),_=_.slice(0,-1*de),e=e.slice(0,-1*de)),p.push(this.productions_[Q[1]][0]),_.push(Ge.$),e.push(Ge._$),jt=Ae[p[p.length-2]][p[p.length-1]],p.push(jt);break;case 3:return!0}}return!0},"parse")},f1=(function(){var ge={EOF:1,parseError:g(function(d,p){if(this.yy.parser)this.yy.parser.parseError(d,p);else throw new Error(d)},"parseError"),setInput:g(function(h,d){return this.yy=d||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:g(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var d=h.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:g(function(h){var d=h.length,p=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d),this.offset-=d;var o=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),p.length-1&&(this.yylineno-=p.length-1);var _=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:p?(p.length===o.length?this.yylloc.first_column:0)+o[o.length-p.length].length-p[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-d]),this.yyleng=this.yytext.length,this},"unput"),more:g(function(){return this._more=!0,this},"more"),reject:g(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:g(function(h){this.unput(this.match.slice(h))},"less"),pastInput:g(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:g(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:g(function(){var h=this.pastInput(),d=new Array(h.length+1).join("-");return h+this.upcomingInput()+` -`+d+"^"},"showPosition"),test_match:g(function(h,d){var p,o,_;if(this.options.backtrack_lexer&&(_={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_.yylloc.range=this.yylloc.range.slice(0))),o=h[0].match(/(?:\r\n?|\n).*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-o[o.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+h[0].length},this.yytext+=h[0],this.match+=h[0],this.matches=h,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(h[0].length),this.matched+=h[0],p=this.performAction.call(this,this.yy,this,d,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),p)return p;if(this._backtrack){for(var e in _)this[e]=_[e];return!1}return!1},"test_match"),next:g(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var h,d,p,o;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),e=0;e<_.length;e++)if(p=this._input.match(this.rules[_[e]]),p&&(!d||p[0].length>d[0].length)){if(d=p,o=e,this.options.backtrack_lexer){if(h=this.test_match(p,_[e]),h!==!1)return h;if(this._backtrack){d=!1;continue}else return!1}else if(!this.options.flex)break}return d?(h=this.test_match(d,_[o]),h!==!1?h:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:g(function(){var d=this.next();return d||this.lex()},"lex"),begin:g(function(d){this.conditionStack.push(d)},"begin"),popState:g(function(){var d=this.conditionStack.length-1;return d>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:g(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:g(function(d){return d=this.conditionStack.length-1-Math.abs(d||0),d>=0?this.conditionStack[d]:"INITIAL"},"topState"),pushState:g(function(d){this.begin(d)},"pushState"),stateStackSize:g(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:g(function(d,p,o,_){var e=_;switch(o){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),p.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let Ae=/\n\s*/g;return p.yytext=p.yytext.replace(Ae,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return d.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return d.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return d.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 125;case 60:return 78;case 61:return 105;case 62:return 111;case 63:return 46;case 64:return 60;case 65:return 44;case 66:return 8;case 67:return 106;case 68:return 115;case 69:return this.popState(),77;break;case 70:return this.pushState("edgeText"),75;break;case 71:return 119;case 72:return this.popState(),77;break;case 73:return this.pushState("thickEdgeText"),75;break;case 74:return 119;case 75:return this.popState(),77;break;case 76:return this.pushState("dottedEdgeText"),75;break;case 77:return 119;case 78:return 77;case 79:return this.popState(),53;break;case 80:return"TEXT";case 81:return this.pushState("ellipseText"),52;break;case 82:return this.popState(),55;break;case 83:return this.pushState("text"),54;break;case 84:return this.popState(),57;break;case 85:return this.pushState("text"),56;break;case 86:return 58;case 87:return this.pushState("text"),67;break;case 88:return this.popState(),64;break;case 89:return this.pushState("text"),63;break;case 90:return this.popState(),49;break;case 91:return this.pushState("text"),48;break;case 92:return this.popState(),69;break;case 93:return this.popState(),71;break;case 94:return 117;case 95:return this.pushState("trapText"),68;break;case 96:return this.pushState("trapText"),70;break;case 97:return 118;case 98:return 67;case 99:return 90;case 100:return"SEP";case 101:return 89;case 102:return 115;case 103:return 111;case 104:return 44;case 105:return 109;case 106:return 114;case 107:return 116;case 108:return this.popState(),62;break;case 109:return this.pushState("text"),62;break;case 110:return this.popState(),51;break;case 111:return this.pushState("text"),50;break;case 112:return this.popState(),31;break;case 113:return this.pushState("text"),29;break;case 114:return this.popState(),66;break;case 115:return this.pushState("text"),65;break;case 116:return"TEXT";case 117:return"QUOTE";case 118:return 9;case 119:return 10;case 120:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?: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]*)/,/^(?:.*direction\s+TD[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-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])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},shapeData:{rules:[8,11,12,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},callbackargs:{rules:[17,18,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},callbackname:{rules:[14,15,16,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},href:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},click:{rules:[21,24,33,34,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},dottedEdgeText:{rules:[21,24,75,77,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},thickEdgeText:{rules:[21,24,72,74,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},edgeText:{rules:[21,24,69,71,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},trapText:{rules:[21,24,78,81,83,85,89,91,92,93,94,95,96,109,111,113,115],inclusive:!1},ellipseText:{rules:[21,24,78,79,80,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},text:{rules:[21,24,78,81,82,83,84,85,88,89,90,91,95,96,108,109,110,111,112,113,114,115,116],inclusive:!1},vertex:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_descr:{rules:[3,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_title:{rules:[1,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},md_string:{rules:[19,20,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},string:{rules:[21,22,23,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,75,76,78,81,83,85,86,87,89,91,95,96,97,98,99,100,101,102,103,104,105,106,107,109,111,113,115,117,118,119,120],inclusive:!0}}};return ge})();$e.lexer=f1;function et(){this.yy={}}return g(et,"Parser"),et.prototype=$e,$e.Parser=et,new et})();ut.parser=ut;var ot=ut;var h1=Object.assign({},ot);h1.parse=s=>{let i=s.replace(/}\s*\n/g,`} -`);return ot.parse(i)};var d1=h1;var E1=g((s,i)=>{let n=Wt,r=n(s,"r"),a=n(s,"g"),l=n(s,"b");return zt(r,a,l,i)},"fade"),C1=g(s=>`.label { - font-family: ${s.fontFamily}; - color: ${s.nodeTextColor||s.textColor}; - } - .cluster-label text { - fill: ${s.titleColor}; - } - .cluster-label span { - color: ${s.titleColor}; - } - .cluster-label span p { - background-color: transparent; - } - - .label text,span { - fill: ${s.nodeTextColor||s.textColor}; - color: ${s.nodeTextColor||s.textColor}; - } - - .node rect, - .node circle, - .node ellipse, - .node polygon, - .node path { - fill: ${s.mainBkg}; - stroke: ${s.nodeBorder}; - stroke-width: 1px; - } - .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { - text-anchor: middle; - } - // .flowchart-label .text-outer-tspan { - // text-anchor: middle; - // } - // .flowchart-label .text-inner-tspan { - // text-anchor: start; - // } - - .node .katex path { - fill: #000; - stroke: #000; - stroke-width: 1px; - } - - .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { - text-align: center; - } - .node.clickable { - cursor: pointer; - } - - - .root .anchor path { - fill: ${s.lineColor} !important; - stroke-width: 0; - stroke: ${s.lineColor}; - } - - .arrowheadPath { - fill: ${s.arrowheadColor}; - } - - .edgePath .path { - stroke: ${s.lineColor}; - stroke-width: 2.0px; - } - - .flowchart-link { - stroke: ${s.lineColor}; - fill: none; - } - - .edgeLabel { - background-color: ${s.edgeLabelBackground}; - p { - background-color: ${s.edgeLabelBackground}; - } - rect { - opacity: 0.5; - background-color: ${s.edgeLabelBackground}; - fill: ${s.edgeLabelBackground}; - } - text-align: center; - } - - /* For html labels only */ - .labelBkg { - background-color: ${E1(s.edgeLabelBackground,.5)}; - // background-color: - } - - .cluster rect { - fill: ${s.clusterBkg}; - stroke: ${s.clusterBorder}; - stroke-width: 1px; - } - - .cluster text { - fill: ${s.titleColor}; - } - - .cluster span { - color: ${s.titleColor}; - } - /* .cluster div { - color: ${s.titleColor}; - } */ - - div.mermaidTooltip { - position: absolute; - text-align: center; - max-width: 200px; - padding: 2px; - font-family: ${s.fontFamily}; - font-size: 12px; - background: ${s.tertiaryColor}; - border: 1px solid ${s.border2}; - border-radius: 2px; - pointer-events: none; - z-index: 100; - } - - .flowchartTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${s.textColor}; - } - - rect.text { - fill: none; - stroke-width: 0; - } - - .icon-shape, .image-shape { - background-color: ${s.edgeLabelBackground}; - p { - background-color: ${s.edgeLabelBackground}; - padding: 2px; - } - .label rect { - opacity: 0.5; - background-color: ${s.edgeLabelBackground}; - fill: ${s.edgeLabelBackground}; - } - text-align: center; - } - ${l1()} -`,"getStyles"),p1=C1;var as={parser:d1,get db(){return new Je},renderer:c1,styles:p1,init:g(s=>{s.flowchart||(s.flowchart={}),s.layout&&at({layout:s.layout}),s.flowchart.arrowMarkerAbsolute=s.arrowMarkerAbsolute,at({flowchart:{arrowMarkerAbsolute:s.arrowMarkerAbsolute}})},"init")};export{as as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs.map deleted file mode 100644 index 41cc27b..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/flowchart/flowDb.ts", "../../../src/diagrams/flowchart/flowRenderer-v3-unified.ts", "../../../src/diagrams/flowchart/parser/flow.jison", "../../../src/diagrams/flowchart/parser/flowParser.ts", "../../../src/diagrams/flowchart/styles.ts", "../../../src/diagrams/flowchart/flowDiagram.ts"], - "sourcesContent": ["import { select } from 'd3';\nimport * as yaml from 'js-yaml';\nimport { getConfig, defaultConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { isValidShape, type ShapeID } from '../../rendering-util/rendering-elements/shapes.js';\nimport type { Edge, Node } from '../../rendering-util/types.js';\nimport type { EdgeMetaData, NodeMetaData } from '../../types.js';\nimport utils, { getEdgeId } from '../../utils.js';\nimport common from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport { createTooltip } from '../common/svgDrawCommon.js';\nimport type {\n FlowClass,\n FlowEdge,\n FlowLink,\n FlowSubGraph,\n FlowText,\n FlowVertex,\n FlowVertexTypeParam,\n} from './types.js';\nimport DOMPurify from 'dompurify';\ninterface LinkData {\n id: string;\n}\n\nconst MERMAID_DOM_ID_PREFIX = 'flowchart-';\n\n// We are using arrow functions assigned to class instance fields instead of methods as they are required by flow JISON\nexport class FlowDB implements DiagramDB {\n private vertexCounter = 0;\n private config = getConfig();\n private vertices = new Map();\n private edges: FlowEdge[] & { defaultInterpolate?: string; defaultStyle?: string[] } = [];\n private classes = new Map();\n private subGraphs: FlowSubGraph[] = [];\n private subGraphLookup = new Map();\n private tooltips = new Map();\n private subCount = 0;\n private firstGraphFlag = true;\n private direction: string | undefined;\n private version: string | undefined; // As in graph\n private secCount = -1;\n private posCrossRef: number[] = [];\n\n // Functions to be run after graph rendering\n private funs: ((element: Element) => void)[] = []; // cspell:ignore funs\n\n constructor() {\n this.funs.push(this.setupToolTips.bind(this));\n\n // Needed for JISON since it only supports direct properties\n this.addVertex = this.addVertex.bind(this);\n this.firstGraph = this.firstGraph.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.addSubGraph = this.addSubGraph.bind(this);\n this.addLink = this.addLink.bind(this);\n this.setLink = this.setLink.bind(this);\n this.updateLink = this.updateLink.bind(this);\n this.addClass = this.addClass.bind(this);\n this.setClass = this.setClass.bind(this);\n this.destructLink = this.destructLink.bind(this);\n this.setClickEvent = this.setClickEvent.bind(this);\n this.setTooltip = this.setTooltip.bind(this);\n this.updateLinkInterpolate = this.updateLinkInterpolate.bind(this);\n this.setClickFun = this.setClickFun.bind(this);\n this.bindFunctions = this.bindFunctions.bind(this);\n\n this.lex = {\n firstGraph: this.firstGraph.bind(this),\n };\n\n this.clear();\n this.setGen('gen-2');\n }\n\n private sanitizeText(txt: string) {\n return common.sanitizeText(txt, this.config);\n }\n\n private sanitizeNodeLabelType(labelType?: string) {\n switch (labelType) {\n case 'markdown':\n case 'string':\n case 'text':\n return labelType;\n default:\n return 'markdown';\n }\n }\n\n /**\n * Function to lookup domId from id in the graph definition.\n *\n * @param id - id of the node\n */\n public lookUpDomId(id: string) {\n for (const vertex of this.vertices.values()) {\n if (vertex.id === id) {\n return vertex.domId;\n }\n }\n return id;\n }\n\n /**\n * Function called by parser when a node definition has been found\n */\n public addVertex(\n id: string,\n textObj: FlowText,\n type: FlowVertexTypeParam,\n style: string[],\n classes: string[],\n dir: string,\n props = {},\n metadata: any\n ) {\n if (!id || id.trim().length === 0) {\n return;\n }\n // Extract the metadata from the shapeData, the syntax for adding metadata for nodes and edges is the same\n // so at this point we don't know if it's a node or an edge, but we can still extract the metadata\n let doc;\n if (metadata !== undefined) {\n let yamlData;\n // detect if shapeData contains a newline character\n if (!metadata.includes('\\n')) {\n yamlData = '{\\n' + metadata + '\\n}';\n } else {\n yamlData = metadata + '\\n';\n }\n doc = yaml.load(yamlData, { schema: yaml.JSON_SCHEMA }) as NodeMetaData;\n }\n\n // Check if this is an edge\n const edge = this.edges.find((e) => e.id === id);\n if (edge) {\n const edgeDoc = doc as EdgeMetaData;\n if (edgeDoc?.animate !== undefined) {\n edge.animate = edgeDoc.animate;\n }\n if (edgeDoc?.animation !== undefined) {\n edge.animation = edgeDoc.animation;\n }\n if (edgeDoc?.curve !== undefined) {\n edge.interpolate = edgeDoc.curve;\n }\n return;\n }\n\n let txt;\n\n let vertex = this.vertices.get(id);\n if (vertex === undefined) {\n vertex = {\n id,\n labelType: 'text',\n domId: MERMAID_DOM_ID_PREFIX + id + '-' + this.vertexCounter,\n styles: [],\n classes: [],\n };\n this.vertices.set(id, vertex);\n }\n this.vertexCounter++;\n\n if (textObj !== undefined) {\n this.config = getConfig();\n txt = this.sanitizeText(textObj.text.trim());\n vertex.labelType = textObj.type;\n // strip quotes if string starts and ends with a quote\n if (txt.startsWith('\"') && txt.endsWith('\"')) {\n txt = txt.substring(1, txt.length - 1);\n }\n vertex.text = txt;\n } else {\n if (vertex.text === undefined) {\n vertex.text = id;\n }\n }\n if (type !== undefined) {\n vertex.type = type;\n }\n if (style !== undefined && style !== null) {\n style.forEach((s) => {\n vertex.styles.push(s);\n });\n }\n if (classes !== undefined && classes !== null) {\n classes.forEach((s) => {\n vertex.classes.push(s);\n });\n }\n if (dir !== undefined) {\n vertex.dir = dir;\n }\n if (vertex.props === undefined) {\n vertex.props = props;\n } else if (props !== undefined) {\n Object.assign(vertex.props, props);\n }\n\n if (doc !== undefined) {\n if (doc.shape) {\n if (doc.shape !== doc.shape.toLowerCase() || doc.shape.includes('_')) {\n throw new Error(`No such shape: ${doc.shape}. Shape names should be lowercase.`);\n } else if (!isValidShape(doc.shape)) {\n throw new Error(`No such shape: ${doc.shape}.`);\n }\n vertex.type = doc?.shape;\n }\n\n if (doc?.label) {\n vertex.text = doc?.label;\n vertex.labelType = this.sanitizeNodeLabelType(doc?.labelType);\n }\n if (doc?.icon) {\n vertex.icon = doc?.icon;\n if (!doc.label?.trim() && vertex.text === id) {\n vertex.text = '';\n }\n }\n if (doc?.form) {\n vertex.form = doc?.form;\n }\n if (doc?.pos) {\n vertex.pos = doc?.pos;\n }\n if (doc?.img) {\n vertex.img = doc?.img;\n if (!doc.label?.trim() && vertex.text === id) {\n vertex.text = '';\n }\n }\n if (doc?.constraint) {\n vertex.constraint = doc.constraint;\n }\n if (doc.w) {\n vertex.assetWidth = Number(doc.w);\n }\n if (doc.h) {\n vertex.assetHeight = Number(doc.h);\n }\n }\n }\n\n /**\n * Function called by parser when a link/edge definition has been found\n *\n */\n public addSingleLink(_start: string, _end: string, type: any, id?: string) {\n const start = _start;\n const end = _end;\n\n const edge: FlowEdge = {\n start: start,\n end: end,\n type: undefined,\n text: '',\n labelType: 'text',\n classes: [],\n isUserDefinedId: false,\n interpolate: this.edges.defaultInterpolate,\n };\n log.info('abc78 Got edge...', edge);\n const linkTextObj = type.text;\n\n if (linkTextObj !== undefined) {\n edge.text = this.sanitizeText(linkTextObj.text.trim());\n\n // strip quotes if string starts and ends with a quote\n if (edge.text.startsWith('\"') && edge.text.endsWith('\"')) {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n edge.labelType = this.sanitizeNodeLabelType(linkTextObj.type);\n }\n\n if (type !== undefined) {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length > 10 ? 10 : type.length;\n }\n if (id && !this.edges.some((e) => e.id === id)) {\n edge.id = id;\n edge.isUserDefinedId = true;\n } else {\n const existingLinks = this.edges.filter((e) => e.start === edge.start && e.end === edge.end);\n if (existingLinks.length === 0) {\n edge.id = getEdgeId(edge.start, edge.end, { counter: 0, prefix: 'L' });\n } else {\n edge.id = getEdgeId(edge.start, edge.end, {\n counter: existingLinks.length + 1,\n prefix: 'L',\n });\n }\n }\n\n if (this.edges.length < (this.config.maxEdges ?? 500)) {\n log.info('Pushing edge...');\n this.edges.push(edge);\n } else {\n throw new Error(\n `Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.\n\nInitialize mermaid with maxEdges set to a higher number to allow more edges.\nYou cannot set this config via configuration inside the diagram as it is a secure config.\nYou have to call mermaid.initialize.`\n );\n }\n }\n\n private isLinkData(value: unknown): value is LinkData {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'id' in value &&\n typeof (value as LinkData).id === 'string'\n );\n }\n\n public addLink(_start: string[], _end: string[], linkData: unknown) {\n const id = this.isLinkData(linkData) ? linkData.id.replace('@', '') : undefined;\n\n log.info('addLink', _start, _end, id);\n\n // for a group syntax like A e1@--> B & C, only the first edge should have a userDefined id\n // the rest of the edges should have auto generated ids\n for (const start of _start) {\n for (const end of _end) {\n //use the id only for last node in _start and first node in _end\n const isLastStart = start === _start[_start.length - 1];\n const isFirstEnd = end === _end[0];\n if (isLastStart && isFirstEnd) {\n this.addSingleLink(start, end, linkData, id);\n } else {\n this.addSingleLink(start, end, linkData, undefined);\n }\n }\n }\n }\n\n /**\n * Updates a link's line interpolation algorithm\n */\n public updateLinkInterpolate(positions: ('default' | number)[], interpolate: string) {\n positions.forEach((pos) => {\n if (pos === 'default') {\n this.edges.defaultInterpolate = interpolate;\n } else {\n this.edges[pos].interpolate = interpolate;\n }\n });\n }\n\n /**\n * Updates a link with a style\n *\n */\n public updateLink(positions: ('default' | number)[], style: string[]) {\n positions.forEach((pos) => {\n if (typeof pos === 'number' && pos >= this.edges.length) {\n throw new Error(\n `The index ${pos} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${\n this.edges.length - 1\n }. (Help: Ensure that the index is within the range of existing edges.)`\n );\n }\n if (pos === 'default') {\n this.edges.defaultStyle = style;\n } else {\n this.edges[pos].style = style;\n // if edges[pos].style does have fill not set, set it to none\n if (\n (this.edges[pos]?.style?.length ?? 0) > 0 &&\n !this.edges[pos]?.style?.some((s) => s?.startsWith('fill'))\n ) {\n this.edges[pos]?.style?.push('fill:none');\n }\n }\n });\n }\n\n public addClass(ids: string, _style: string[]) {\n const style = _style\n .join()\n .replace(/\\\\,/g, '\u00A7\u00A7\u00A7')\n .replace(/,/g, ';')\n .replace(/\u00A7\u00A7\u00A7/g, ',')\n .split(';');\n ids.split(',').forEach((id) => {\n let classNode = this.classes.get(id);\n if (classNode === undefined) {\n classNode = { id, styles: [], textStyles: [] };\n this.classes.set(id, classNode);\n }\n\n if (style !== undefined && style !== null) {\n style.forEach((s) => {\n if (/color/.exec(s)) {\n const newStyle = s.replace('fill', 'bgFill'); // .replace('color', 'fill');\n classNode.textStyles.push(newStyle);\n }\n classNode.styles.push(s);\n });\n }\n });\n }\n\n /**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n *\n */\n public setDirection(dir: string) {\n this.direction = dir.trim();\n\n if (/.*/.exec(this.direction)) {\n this.direction = 'LR';\n }\n if (/.*v/.exec(this.direction)) {\n this.direction = 'TB';\n }\n if (this.direction === 'TD') {\n this.direction = 'TB';\n }\n }\n\n /**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids - Comma separated list of ids\n * @param className - Class to add\n */\n public setClass(ids: string, className: string) {\n for (const id of ids.split(',')) {\n const vertex = this.vertices.get(id);\n if (vertex) {\n vertex.classes.push(className);\n }\n const edge = this.edges.find((e) => e.id === id);\n if (edge) {\n edge.classes.push(className);\n }\n const subGraph = this.subGraphLookup.get(id);\n if (subGraph) {\n subGraph.classes.push(className);\n }\n }\n }\n\n public setTooltip(ids: string, tooltip: string) {\n if (tooltip === undefined) {\n return;\n }\n tooltip = this.sanitizeText(tooltip);\n for (const id of ids.split(',')) {\n this.tooltips.set(this.version === 'gen-1' ? this.lookUpDomId(id) : id, tooltip);\n }\n }\n\n private setClickFun(id: string, functionName: string, functionArgs: string) {\n const domId = this.lookUpDomId(id);\n // if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n let argList: string[] = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.startsWith('\"') && item.endsWith('\"')) {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n const vertex = this.vertices.get(id);\n if (vertex) {\n vertex.haveCallback = true;\n this.funs.push(() => {\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n () => {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n }\n\n /**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids - Comma separated list of ids\n * @param linkStr - URL to create a link for\n * @param target - Target attribute for the link\n */\n public setLink(ids: string, linkStr: string, target: string) {\n ids.split(',').forEach((id) => {\n const vertex = this.vertices.get(id);\n if (vertex !== undefined) {\n vertex.link = utils.formatUrl(linkStr, this.config);\n vertex.linkTarget = target;\n }\n });\n this.setClass(ids, 'clickable');\n }\n\n public getTooltip(id: string) {\n return this.tooltips.get(id);\n }\n\n /**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids - Comma separated list of ids\n * @param functionName - Function to be called on click\n * @param functionArgs - Arguments to be passed to the function\n */\n public setClickEvent(ids: string, functionName: string, functionArgs: string) {\n ids.split(',').forEach((id) => {\n this.setClickFun(id, functionName, functionArgs);\n });\n this.setClass(ids, 'clickable');\n }\n\n public bindFunctions(element: Element) {\n this.funs.forEach((fun) => {\n fun(element);\n });\n }\n public getDirection() {\n return this.direction?.trim();\n }\n /**\n * Retrieval function for fetching the found nodes after parsing has completed.\n *\n */\n public getVertices() {\n return this.vertices;\n }\n\n /**\n * Retrieval function for fetching the found links after parsing has completed.\n *\n */\n public getEdges() {\n return this.edges;\n }\n\n /**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n *\n */\n public getClasses() {\n return this.classes;\n }\n\n private setupToolTips(element: Element) {\n const tooltipElem = createTooltip();\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', (e: MouseEvent) => {\n const el = select(e.currentTarget as Element);\n const title = el.attr('title');\n\n // Don't try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = (e.currentTarget as Element)?.getBoundingClientRect();\n\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem\n .text(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.bottom + 'px');\n tooltipElem.html(DOMPurify.sanitize(title));\n el.classed('hover', true);\n })\n .on('mouseout', (e: MouseEvent) => {\n tooltipElem.transition().duration(500).style('opacity', 0);\n const el = select(e.currentTarget as Element);\n el.classed('hover', false);\n });\n }\n\n /**\n * Clears the internal graph db so that a new graph can be parsed.\n *\n */\n public clear(ver = 'gen-2') {\n this.vertices = new Map();\n this.classes = new Map();\n this.edges = [];\n this.funs = [this.setupToolTips.bind(this)];\n this.subGraphs = [];\n this.subGraphLookup = new Map();\n this.subCount = 0;\n this.tooltips = new Map();\n this.firstGraphFlag = true;\n this.version = ver;\n this.config = getConfig();\n commonClear();\n }\n\n public setGen(ver: string) {\n this.version = ver || 'gen-2';\n }\n\n public defaultStyle() {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';\n }\n\n public addSubGraph(\n _id: { text: string },\n list: string[],\n _title: { text: string; type: string }\n ) {\n let id: string | undefined = _id.text.trim();\n let title = _title.text;\n if (_id === _title && /\\s/.exec(_title.text)) {\n id = undefined;\n }\n\n const uniq = (a: any[]) => {\n const prims: any = { boolean: {}, number: {}, string: {} };\n const objs: any[] = [];\n\n let dir: string | undefined;\n\n const nodeList = a.filter(function (item) {\n const type = typeof item;\n if (item.stmt && item.stmt === 'dir') {\n dir = item.value;\n return false;\n }\n if (item.trim() === '') {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true);\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList, dir };\n };\n\n const result = uniq(list.flat());\n const nodeList = result.nodeList;\n let dir = result.dir;\n const flowchartConfig = getConfig().flowchart ?? {};\n dir =\n dir ??\n (flowchartConfig.inheritDir\n ? (this.getDirection() ?? (getConfig() as any).direction ?? undefined)\n : undefined);\n\n if (this.version === 'gen-1') {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = this.lookUpDomId(nodeList[i]);\n }\n }\n\n id = id ?? 'subGraph' + this.subCount;\n title = title || '';\n title = this.sanitizeText(title);\n this.subCount = this.subCount + 1;\n\n const subGraph = {\n id: id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: this.sanitizeNodeLabelType(_title?.type),\n };\n\n log.info('Adding', subGraph.id, subGraph.nodes, subGraph.dir);\n\n // Remove the members in the new subgraph if they already belong to another subgraph\n subGraph.nodes = this.makeUniq(subGraph, this.subGraphs).nodes;\n this.subGraphs.push(subGraph);\n this.subGraphLookup.set(id, subGraph);\n return id;\n }\n\n private getPosForId(id: string) {\n for (const [i, subGraph] of this.subGraphs.entries()) {\n if (subGraph.id === id) {\n return i;\n }\n }\n return -1;\n }\n\n private indexNodes2(id: string, pos: number): { result: boolean; count: number } {\n const nodes = this.subGraphs[pos].nodes;\n this.secCount = this.secCount + 1;\n if (this.secCount > 2000) {\n return {\n result: false,\n count: 0,\n };\n }\n this.posCrossRef[this.secCount] = pos;\n // Check if match\n if (this.subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0,\n };\n }\n\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = this.getPosForId(nodes[count]);\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = this.indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count,\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n\n return {\n result: false,\n count: posCount,\n };\n }\n\n public getDepthFirstPos(pos: number) {\n return this.posCrossRef[pos];\n }\n public indexNodes() {\n this.secCount = -1;\n if (this.subGraphs.length > 0) {\n this.indexNodes2('none', this.subGraphs.length - 1);\n }\n }\n\n public getSubGraphs() {\n return this.subGraphs;\n }\n\n public firstGraph() {\n if (this.firstGraphFlag) {\n this.firstGraphFlag = false;\n return true;\n }\n return false;\n }\n\n private destructStartLink(_str: string): FlowLink {\n let str = _str.trim();\n let type = 'arrow_open';\n\n switch (str[0]) {\n case '<':\n type = 'arrow_point';\n str = str.slice(1);\n break;\n case 'x':\n type = 'arrow_cross';\n str = str.slice(1);\n break;\n case 'o':\n type = 'arrow_circle';\n str = str.slice(1);\n break;\n }\n\n let stroke = 'normal';\n\n if (str.includes('=')) {\n stroke = 'thick';\n }\n\n if (str.includes('.')) {\n stroke = 'dotted';\n }\n\n return { type, stroke };\n }\n\n private countChar(char: string, str: string) {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n }\n\n private destructEndLink(_str: string) {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = 'arrow_open';\n\n switch (str.slice(-1)) {\n case 'x':\n type = 'arrow_cross';\n if (str.startsWith('x')) {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n case '>':\n type = 'arrow_point';\n if (str.startsWith('<')) {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n case 'o':\n type = 'arrow_circle';\n if (str.startsWith('o')) {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n }\n\n let stroke = 'normal';\n let length = line.length - 1;\n\n if (line.startsWith('=')) {\n stroke = 'thick';\n }\n\n if (line.startsWith('~')) {\n stroke = 'invisible';\n }\n\n const dots = this.countChar('.', line);\n\n if (dots) {\n stroke = 'dotted';\n length = dots;\n }\n\n return { type, stroke, length };\n }\n\n public destructLink(_str: string, _startStr: string) {\n const info = this.destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = this.destructStartLink(_startStr);\n\n if (startInfo.stroke !== info.stroke) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n if (startInfo.type === 'arrow_open') {\n // -- xyz --> - take arrow type from ending\n startInfo.type = info.type;\n } else {\n // x-- xyz --> - not supported\n if (startInfo.type !== info.type) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n startInfo.type = 'double_' + startInfo.type;\n }\n\n if (startInfo.type === 'double_arrow') {\n startInfo.type = 'double_arrow_point';\n }\n\n startInfo.length = info.length;\n return startInfo;\n }\n\n return info;\n }\n\n // Todo optimizer this by caching existing nodes\n public exists(allSgs: FlowSubGraph[], _id: string) {\n for (const sg of allSgs) {\n if (sg.nodes.includes(_id)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Deletes an id from all subgraphs\n *\n */\n public makeUniq(sg: FlowSubGraph, allSubgraphs: FlowSubGraph[]) {\n const res: string[] = [];\n sg.nodes.forEach((_id, pos) => {\n if (!this.exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n }\n\n public lex: { firstGraph: typeof FlowDB.prototype.firstGraph };\n\n private getTypeFromVertex(vertex: FlowVertex): ShapeID {\n if (vertex.img) {\n return 'imageSquare';\n }\n if (vertex.icon) {\n if (vertex.form === 'circle') {\n return 'iconCircle';\n }\n if (vertex.form === 'square') {\n return 'iconSquare';\n }\n if (vertex.form === 'rounded') {\n return 'iconRounded';\n }\n return 'icon';\n }\n switch (vertex.type) {\n case 'square':\n case undefined:\n return 'squareRect';\n case 'round':\n return 'roundedRect';\n case 'ellipse':\n // @ts-expect-error -- Ellipses are broken, see https://github.com/mermaid-js/mermaid/issues/5976\n return 'ellipse';\n default:\n return vertex.type;\n }\n }\n\n private findNode(nodes: Node[], id: string) {\n return nodes.find((node) => node.id === id);\n }\n private destructEdgeType(type: string | undefined) {\n let arrowTypeStart = 'none';\n let arrowTypeEnd = 'arrow_point';\n switch (type) {\n case 'arrow_point':\n case 'arrow_circle':\n case 'arrow_cross':\n arrowTypeEnd = type;\n break;\n\n case 'double_arrow_point':\n case 'double_arrow_circle':\n case 'double_arrow_cross':\n arrowTypeStart = type.replace('double_', '');\n arrowTypeEnd = arrowTypeStart;\n break;\n }\n return { arrowTypeStart, arrowTypeEnd };\n }\n\n private addNodeFromVertex(\n vertex: FlowVertex,\n nodes: Node[],\n parentDB: Map,\n subGraphDB: Map,\n config: any,\n look: string\n ) {\n const parentId = parentDB.get(vertex.id);\n const isGroup = subGraphDB.get(vertex.id) ?? false;\n\n const node = this.findNode(nodes, vertex.id);\n if (node) {\n node.cssStyles = vertex.styles;\n node.cssCompiledStyles = this.getCompiledStyles(vertex.classes);\n node.cssClasses = vertex.classes.join(' ');\n } else {\n const baseNode = {\n id: vertex.id,\n label: vertex.text,\n labelType: vertex.labelType,\n labelStyle: '',\n parentId,\n padding: config.flowchart?.padding || 8,\n cssStyles: vertex.styles,\n cssCompiledStyles: this.getCompiledStyles(['default', 'node', ...vertex.classes]),\n cssClasses: 'default ' + vertex.classes.join(' '),\n dir: vertex.dir,\n domId: vertex.domId,\n look,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: this.getTooltip(vertex.id),\n icon: vertex.icon,\n pos: vertex.pos,\n img: vertex.img,\n assetWidth: vertex.assetWidth,\n assetHeight: vertex.assetHeight,\n constraint: vertex.constraint,\n };\n if (isGroup) {\n nodes.push({\n ...baseNode,\n isGroup: true,\n shape: 'rect',\n });\n } else {\n nodes.push({\n ...baseNode,\n isGroup: false,\n shape: this.getTypeFromVertex(vertex),\n });\n }\n }\n }\n\n private getCompiledStyles(classDefs: string[]) {\n let compiledStyles: string[] = [];\n for (const customClass of classDefs) {\n const cssClass = this.classes.get(customClass);\n if (cssClass?.styles) {\n compiledStyles = [...compiledStyles, ...(cssClass.styles ?? [])].map((s) => s.trim());\n }\n if (cssClass?.textStyles) {\n compiledStyles = [...compiledStyles, ...(cssClass.textStyles ?? [])].map((s) => s.trim());\n }\n }\n return compiledStyles;\n }\n\n public getData() {\n const config = getConfig();\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n\n const subGraphs = this.getSubGraphs();\n const parentDB = new Map();\n const subGraphDB = new Map();\n\n // Setup the subgraph data for adding nodes\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n const subGraph = subGraphs[i];\n if (subGraph.nodes.length > 0) {\n subGraphDB.set(subGraph.id, true);\n }\n for (const id of subGraph.nodes) {\n parentDB.set(id, subGraph.id);\n }\n }\n\n // Data is setup, add the nodes\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n const subGraph = subGraphs[i];\n nodes.push({\n id: subGraph.id,\n label: subGraph.title,\n labelStyle: '',\n labelType: subGraph.labelType,\n parentId: parentDB.get(subGraph.id),\n padding: 8,\n cssCompiledStyles: this.getCompiledStyles(subGraph.classes),\n cssClasses: subGraph.classes.join(' '),\n shape: 'rect',\n dir: subGraph.dir,\n isGroup: true,\n look: config.look,\n });\n }\n\n const n = this.getVertices();\n n.forEach((vertex) => {\n this.addNodeFromVertex(vertex, nodes, parentDB, subGraphDB, config, config.look || 'classic');\n });\n\n const e = this.getEdges();\n e.forEach((rawEdge, index) => {\n const { arrowTypeStart, arrowTypeEnd } = this.destructEdgeType(rawEdge.type);\n const styles = [...(e.defaultStyle ?? [])];\n\n if (rawEdge.style) {\n styles.push(...rawEdge.style);\n }\n const edge: Edge = {\n id: getEdgeId(rawEdge.start, rawEdge.end, { counter: index, prefix: 'L' }, rawEdge.id),\n isUserDefinedId: rawEdge.isUserDefinedId,\n start: rawEdge.start,\n end: rawEdge.end,\n type: rawEdge.type ?? 'normal',\n label: rawEdge.text,\n labelType: rawEdge.labelType,\n labelpos: 'c',\n thickness: rawEdge.stroke,\n minlen: rawEdge.length,\n classes:\n rawEdge?.stroke === 'invisible'\n ? ''\n : 'edge-thickness-normal edge-pattern-solid flowchart-link',\n arrowTypeStart:\n rawEdge?.stroke === 'invisible' || rawEdge?.type === 'arrow_open'\n ? 'none'\n : arrowTypeStart,\n arrowTypeEnd:\n rawEdge?.stroke === 'invisible' || rawEdge?.type === 'arrow_open' ? 'none' : arrowTypeEnd,\n arrowheadStyle: 'fill: #333',\n cssCompiledStyles: this.getCompiledStyles(rawEdge.classes),\n labelStyle: styles,\n style: styles,\n pattern: rawEdge.stroke,\n look: config.look,\n animate: rawEdge.animate,\n animation: rawEdge.animation,\n curve: rawEdge.interpolate || this.edges.defaultInterpolate || config.flowchart?.curve,\n };\n\n edges.push(edge);\n });\n\n return { nodes, edges, other: {}, config };\n }\n\n public defaultConfig() {\n return defaultConfig.flowchart;\n }\n public setAccTitle = setAccTitle;\n public setAccDescription = setAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getAccTitle = getAccTitle;\n public getAccDescription = getAccDescription;\n public getDiagramTitle = getDiagramTitle;\n}\n", "import { select } from 'd3';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramStyleClassDef } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\n\nexport const getClasses = function (\n text: string,\n diagramObj: any\n): Map {\n return diagramObj.db.getClasses();\n};\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing state diagram (v2)', id);\n const { securityLevel, flowchart: conf, layout } = getConfig();\n\n // Handle root and document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n\n // @ts-ignore - document is always available\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n log.debug('Before getData: ');\n const data4Layout = diag.db.getData() as LayoutData;\n log.debug('Data: ', data4Layout);\n // Create the root SVG\n const svg = getDiagramElement(id, securityLevel);\n const direction = diag.db.getDirection();\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n if (data4Layout.layoutAlgorithm === 'dagre' && layout === 'elk') {\n log.warn(\n 'flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback.'\n );\n }\n data4Layout.direction = direction;\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n data4Layout.markers = ['point', 'circle', 'cross'];\n\n data4Layout.diagramId = id;\n log.debug('REF1:', data4Layout);\n await render(data4Layout, svg);\n const padding = data4Layout.config.flowchart?.diagramPadding ?? 8;\n utils.insertTitle(\n svg,\n 'flowchartTitleText',\n conf?.titleTopMargin || 0,\n diag.db.getDiagramTitle()\n );\n setupViewPortForSVG(svg, padding, 'flowchart', conf?.useMaxWidth || false);\n\n // If node has a link, wrap it in an anchor SVG object.\n for (const vertex of data4Layout.nodes) {\n const node = select(`#${id} [id=\"${vertex.id}\"]`);\n if (!node || !vertex.link) {\n continue;\n }\n const link = doc.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.cssClasses);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n if (securityLevel === 'sandbox') {\n link.setAttributeNS('http://www.w3.org/2000/svg', 'target', '_top');\n } else if (vertex.linkTarget) {\n link.setAttributeNS('http://www.w3.org/2000/svg', 'target', vertex.linkTarget);\n }\n\n const linkNode = node.insert(function () {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function () {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function () {\n return label.node();\n });\n }\n }\n};\n\nexport default {\n getClasses,\n draw,\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,3],$V2=[1,5],$V3=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],$V4=[2,2],$V5=[1,13],$V6=[1,14],$V7=[1,15],$V8=[1,16],$V9=[1,23],$Va=[1,25],$Vb=[1,26],$Vc=[1,27],$Vd=[1,50],$Ve=[1,49],$Vf=[1,29],$Vg=[1,30],$Vh=[1,31],$Vi=[1,32],$Vj=[1,33],$Vk=[1,45],$Vl=[1,47],$Vm=[1,43],$Vn=[1,48],$Vo=[1,44],$Vp=[1,51],$Vq=[1,46],$Vr=[1,52],$Vs=[1,53],$Vt=[1,34],$Vu=[1,35],$Vv=[1,36],$Vw=[1,37],$Vx=[1,38],$Vy=[1,58],$Vz=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],$VA=[1,62],$VB=[1,61],$VC=[1,63],$VD=[8,9,11,75,77,78],$VE=[1,79],$VF=[1,92],$VG=[1,97],$VH=[1,96],$VI=[1,93],$VJ=[1,89],$VK=[1,95],$VL=[1,91],$VM=[1,98],$VN=[1,94],$VO=[1,99],$VP=[1,90],$VQ=[8,9,10,11,40,75,77,78],$VR=[8,9,10,11,40,46,75,77,78],$VS=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],$VT=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],$VU=[44,60,89,102,105,106,109,111,114,115,116],$VV=[1,122],$VW=[1,123],$VX=[1,125],$VY=[1,124],$VZ=[44,60,62,74,89,102,105,106,109,111,114,115,116],$V_=[1,134],$V$=[1,148],$V01=[1,149],$V11=[1,150],$V21=[1,151],$V31=[1,136],$V41=[1,138],$V51=[1,142],$V61=[1,143],$V71=[1,144],$V81=[1,145],$V91=[1,146],$Va1=[1,147],$Vb1=[1,152],$Vc1=[1,153],$Vd1=[1,132],$Ve1=[1,133],$Vf1=[1,140],$Vg1=[1,135],$Vh1=[1,139],$Vi1=[1,137],$Vj1=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],$Vk1=[1,155],$Vl1=[1,157],$Vm1=[8,9,11],$Vn1=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],$Vo1=[1,177],$Vp1=[1,173],$Vq1=[1,174],$Vr1=[1,178],$Vs1=[1,175],$Vt1=[1,176],$Vu1=[77,116,119],$Vv1=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],$Vw1=[10,106],$Vx1=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],$Vy1=[1,248],$Vz1=[1,246],$VA1=[1,250],$VB1=[1,244],$VC1=[1,245],$VD1=[1,247],$VE1=[1,249],$VF1=[1,251],$VG1=[1,269],$VH1=[8,9,11,106],$VI1=[8,9,10,11,60,84,105,106,109,110,111,112];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"graphConfig\":4,\"document\":5,\"line\":6,\"statement\":7,\"SEMI\":8,\"NEWLINE\":9,\"SPACE\":10,\"EOF\":11,\"GRAPH\":12,\"NODIR\":13,\"DIR\":14,\"FirstStmtSeparator\":15,\"ending\":16,\"endToken\":17,\"spaceList\":18,\"spaceListNewline\":19,\"vertexStatement\":20,\"separator\":21,\"styleStatement\":22,\"linkStyleStatement\":23,\"classDefStatement\":24,\"classStatement\":25,\"clickStatement\":26,\"subgraph\":27,\"textNoTags\":28,\"SQS\":29,\"text\":30,\"SQE\":31,\"end\":32,\"direction\":33,\"acc_title\":34,\"acc_title_value\":35,\"acc_descr\":36,\"acc_descr_value\":37,\"acc_descr_multiline_value\":38,\"shapeData\":39,\"SHAPE_DATA\":40,\"link\":41,\"node\":42,\"styledVertex\":43,\"AMP\":44,\"vertex\":45,\"STYLE_SEPARATOR\":46,\"idString\":47,\"DOUBLECIRCLESTART\":48,\"DOUBLECIRCLEEND\":49,\"PS\":50,\"PE\":51,\"(-\":52,\"-)\":53,\"STADIUMSTART\":54,\"STADIUMEND\":55,\"SUBROUTINESTART\":56,\"SUBROUTINEEND\":57,\"VERTEX_WITH_PROPS_START\":58,\"NODE_STRING[field]\":59,\"COLON\":60,\"NODE_STRING[value]\":61,\"PIPE\":62,\"CYLINDERSTART\":63,\"CYLINDEREND\":64,\"DIAMOND_START\":65,\"DIAMOND_STOP\":66,\"TAGEND\":67,\"TRAPSTART\":68,\"TRAPEND\":69,\"INVTRAPSTART\":70,\"INVTRAPEND\":71,\"linkStatement\":72,\"arrowText\":73,\"TESTSTR\":74,\"START_LINK\":75,\"edgeText\":76,\"LINK\":77,\"LINK_ID\":78,\"edgeTextToken\":79,\"STR\":80,\"MD_STR\":81,\"textToken\":82,\"keywords\":83,\"STYLE\":84,\"LINKSTYLE\":85,\"CLASSDEF\":86,\"CLASS\":87,\"CLICK\":88,\"DOWN\":89,\"UP\":90,\"textNoTagsToken\":91,\"stylesOpt\":92,\"idString[vertex]\":93,\"idString[class]\":94,\"CALLBACKNAME\":95,\"CALLBACKARGS\":96,\"HREF\":97,\"LINK_TARGET\":98,\"STR[link]\":99,\"STR[tooltip]\":100,\"alphaNum\":101,\"DEFAULT\":102,\"numList\":103,\"INTERPOLATE\":104,\"NUM\":105,\"COMMA\":106,\"style\":107,\"styleComponent\":108,\"NODE_STRING\":109,\"UNIT\":110,\"BRKT\":111,\"PCT\":112,\"idStringToken\":113,\"MINUS\":114,\"MULT\":115,\"UNICODE_TEXT\":116,\"TEXT\":117,\"TAGSTART\":118,\"EDGE_TEXT\":119,\"alphaNumToken\":120,\"direction_tb\":121,\"direction_bt\":122,\"direction_rl\":123,\"direction_lr\":124,\"direction_td\":125,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",8:\"SEMI\",9:\"NEWLINE\",10:\"SPACE\",11:\"EOF\",12:\"GRAPH\",13:\"NODIR\",14:\"DIR\",27:\"subgraph\",29:\"SQS\",31:\"SQE\",32:\"end\",34:\"acc_title\",35:\"acc_title_value\",36:\"acc_descr\",37:\"acc_descr_value\",38:\"acc_descr_multiline_value\",40:\"SHAPE_DATA\",44:\"AMP\",46:\"STYLE_SEPARATOR\",48:\"DOUBLECIRCLESTART\",49:\"DOUBLECIRCLEEND\",50:\"PS\",51:\"PE\",52:\"(-\",53:\"-)\",54:\"STADIUMSTART\",55:\"STADIUMEND\",56:\"SUBROUTINESTART\",57:\"SUBROUTINEEND\",58:\"VERTEX_WITH_PROPS_START\",59:\"NODE_STRING[field]\",60:\"COLON\",61:\"NODE_STRING[value]\",62:\"PIPE\",63:\"CYLINDERSTART\",64:\"CYLINDEREND\",65:\"DIAMOND_START\",66:\"DIAMOND_STOP\",67:\"TAGEND\",68:\"TRAPSTART\",69:\"TRAPEND\",70:\"INVTRAPSTART\",71:\"INVTRAPEND\",74:\"TESTSTR\",75:\"START_LINK\",77:\"LINK\",78:\"LINK_ID\",80:\"STR\",81:\"MD_STR\",84:\"STYLE\",85:\"LINKSTYLE\",86:\"CLASSDEF\",87:\"CLASS\",88:\"CLICK\",89:\"DOWN\",90:\"UP\",93:\"idString[vertex]\",94:\"idString[class]\",95:\"CALLBACKNAME\",96:\"CALLBACKARGS\",97:\"HREF\",98:\"LINK_TARGET\",99:\"STR[link]\",100:\"STR[tooltip]\",102:\"DEFAULT\",104:\"INTERPOLATE\",105:\"NUM\",106:\"COMMA\",109:\"NODE_STRING\",110:\"UNIT\",111:\"BRKT\",112:\"PCT\",114:\"MINUS\",115:\"MULT\",116:\"UNICODE_TEXT\",117:\"TEXT\",118:\"TAGSTART\",119:\"EDGE_TEXT\",121:\"direction_tb\",122:\"direction_bt\",123:\"direction_rl\",124:\"direction_lr\",125:\"direction_td\"},\nproductions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,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 2:\n this.$ = [];\nbreak;\ncase 3:\n\n\t if(!Array.isArray($$[$0]) || $$[$0].length > 0){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 4: case 183:\nthis.$=$$[$0];\nbreak;\ncase 11:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 12:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 27:\n this.$=$$[$0-1].nodes\nbreak;\ncase 28: case 29: case 30: case 31: case 32:\nthis.$=[];\nbreak;\ncase 33:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 34:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 35:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 37:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 38: case 39:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 43:\n this.$ = $$[$0-1] + $$[$0]; \nbreak;\ncase 44:\n this.$ = $$[$0]; \nbreak;\ncase 45:\n /* console.warn('vs shapeData',$$[$0-3].stmt,$$[$0-1], $$[$0]);*/ yy.addVertex($$[$0-1][$$[$0-1].length-1],undefined,undefined,undefined, undefined,undefined, undefined,$$[$0]); yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 46:\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 47:\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 48:\n /*console.warn('vertexStatement: node spaceList', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 49:\n\n /*console.warn('vertexStatement: node shapeData', $$[$0-1][0], $$[$0]);*/\n yy.addVertex($$[$0-1][$$[$0-1].length-1],undefined,undefined,undefined, undefined,undefined, undefined,$$[$0]);\n this.$ = {stmt: $$[$0-1], nodes:$$[$0-1], shapeData: $$[$0]}\n \nbreak;\ncase 50:\n /* console.warn('vertexStatement: single node', $$[$0]); */ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 51:\n /*console.warn('nod', $$[$0]);*/ this.$ = [$$[$0]];\nbreak;\ncase 52:\n yy.addVertex($$[$0-5][$$[$0-5].length-1],undefined,undefined,undefined, undefined,undefined, undefined,$$[$0-4]); this.$ = $$[$0-5].concat($$[$0]); /*console.warn('pip2', $$[$0-5][0], $$[$0], this.$);*/ \nbreak;\ncase 53:\n this.$ = $$[$0-4].concat($$[$0]); /*console.warn('pip', $$[$0-4][0], $$[$0], this.$);*/ \nbreak;\ncase 54:\n /* console.warn('nodc', $$[$0]);*/ this.$ = $$[$0];\nbreak;\ncase 55:\nthis.$ = $$[$0-2];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 56:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'doublecircle');\nbreak;\ncase 58:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 62:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 66:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 71:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 72:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 73:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 74: case 75:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 76:\nthis.$ = $$[$0];\nbreak;\ncase 77:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 78:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1], \"id\": $$[$0-3]};\nbreak;\ncase 79:\nthis.$={text:$$[$0], type:'text'};\nbreak;\ncase 80:\nthis.$={text:$$[$0-1].text+''+$$[$0], type:$$[$0-1].type};\nbreak;\ncase 81:\nthis.$={text: $$[$0], type: 'string'};\nbreak;\ncase 82:\nthis.$={text:$$[$0], type:'markdown'};\nbreak;\ncase 83:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 84:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length, \"id\": $$[$0-1]};\nbreak;\ncase 85:\nthis.$ = $$[$0-1];\nbreak;\ncase 86:\n this.$={text:$$[$0], type: 'text'};\nbreak;\ncase 87:\n this.$={text:$$[$0-1].text+''+$$[$0], type: $$[$0-1].type};\nbreak;\ncase 88:\n this.$ = {text: $$[$0], type: 'string'};\nbreak;\ncase 89: case 104:\n this.$={text: $$[$0], type: 'markdown'};\nbreak;\ncase 101:\nthis.$={text:$$[$0], type: 'text'};\nbreak;\ncase 102:\nthis.$={text:$$[$0-1].text+''+$$[$0], type: $$[$0-1].type};\nbreak;\ncase 103:\n this.$={text: $$[$0], type: 'text'};\nbreak;\ncase 105:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 106:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 107: case 115:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 108: case 116:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 109:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 110:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 111:\nthis.$ = $$[$0-2];yy.setLink($$[$0-2], $$[$0]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.setLink($$[$0-4], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 113:\nthis.$ = $$[$0-4];yy.setLink($$[$0-4], $$[$0-2], $$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-6];yy.setLink($$[$0-6], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-6], $$[$0-2]);\nbreak;\ncase 117:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 118:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 119:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 120:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 121:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 122:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 123:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 124:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 125:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 126:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 127:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 128: case 130:\nthis.$ = [$$[$0]]\nbreak;\ncase 129: case 131:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 133:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 181:\nthis.$=$$[$0]\nbreak;\ncase 182:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 184:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 185:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 186:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 187:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 188:\n this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 189:\n this.$={stmt:'dir', value:'TD'};\nbreak;\n}\n},\ntable: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:$V5,9:$V6,10:$V7,11:$V8,20:17,22:18,23:19,24:20,25:21,26:22,27:$V9,33:24,34:$Va,36:$Vb,38:$Vc,42:28,43:39,44:$Vd,45:40,47:41,60:$Ve,84:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs,121:$Vt,122:$Vu,123:$Vv,124:$Vw,125:$Vx},o($V3,[2,9]),o($V3,[2,10]),o($V3,[2,11]),{8:[1,55],9:[1,56],10:$Vy,15:54,18:57},o($Vz,[2,3]),o($Vz,[2,4]),o($Vz,[2,5]),o($Vz,[2,6]),o($Vz,[2,7]),o($Vz,[2,8]),{8:$VA,9:$VB,11:$VC,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:$VA,9:$VB,11:$VC,21:68},{8:$VA,9:$VB,11:$VC,21:69},{8:$VA,9:$VB,11:$VC,21:70},{8:$VA,9:$VB,11:$VC,21:71},{8:$VA,9:$VB,11:$VC,21:72},{8:$VA,9:$VB,10:[1,73],11:$VC,21:74},o($Vz,[2,36]),{35:[1,75]},{37:[1,76]},o($Vz,[2,39]),o($VD,[2,50],{18:77,39:78,10:$Vy,40:$VE}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:$VF,44:$VG,60:$VH,80:[1,87],89:$VI,95:[1,84],97:[1,85],101:86,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP,120:88},o($Vz,[2,185]),o($Vz,[2,186]),o($Vz,[2,187]),o($Vz,[2,188]),o($Vz,[2,189]),o($VQ,[2,51]),o($VQ,[2,54],{46:[1,100]}),o($VR,[2,72],{113:113,29:[1,101],44:$Vd,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:$Ve,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,114:$Vq,115:$Vr,116:$Vs}),o($VS,[2,181]),o($VS,[2,142]),o($VS,[2,143]),o($VS,[2,144]),o($VS,[2,145]),o($VS,[2,146]),o($VS,[2,147]),o($VS,[2,148]),o($VS,[2,149]),o($VS,[2,150]),o($VS,[2,151]),o($VS,[2,152]),o($V3,[2,12]),o($V3,[2,18]),o($V3,[2,19]),{9:[1,114]},o($VT,[2,26],{18:115,10:$Vy}),o($Vz,[2,27]),{42:116,43:39,44:$Vd,45:40,47:41,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},o($Vz,[2,40]),o($Vz,[2,41]),o($Vz,[2,42]),o($VU,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:$VV,81:$VW,116:$VX,119:$VY},{75:[1,126],77:[1,127]},o($VZ,[2,83]),o($Vz,[2,28]),o($Vz,[2,29]),o($Vz,[2,30]),o($Vz,[2,31]),o($Vz,[2,32]),{10:$V_,12:$V$,14:$V01,27:$V11,28:128,32:$V21,44:$V31,60:$V41,75:$V51,80:[1,130],81:[1,131],83:141,84:$V61,85:$V71,86:$V81,87:$V91,88:$Va1,89:$Vb1,90:$Vc1,91:129,105:$Vd1,109:$Ve1,111:$Vf1,114:$Vg1,115:$Vh1,116:$Vi1},o($Vj1,$V4,{5:154}),o($Vz,[2,37]),o($Vz,[2,38]),o($VD,[2,48],{44:$Vk1}),o($VD,[2,49],{18:156,10:$Vy,40:$Vl1}),o($VQ,[2,44]),{44:$Vd,47:158,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},{102:[1,159],103:160,105:[1,161]},{44:$Vd,47:162,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},{44:$Vd,47:163,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},o($Vm1,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},o($Vm1,[2,115],{120:168,10:[1,167],14:$VF,44:$VG,60:$VH,89:$VI,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP}),o($Vm1,[2,117],{10:[1,169]}),o($Vn1,[2,183]),o($Vn1,[2,170]),o($Vn1,[2,171]),o($Vn1,[2,172]),o($Vn1,[2,173]),o($Vn1,[2,174]),o($Vn1,[2,175]),o($Vn1,[2,176]),o($Vn1,[2,177]),o($Vn1,[2,178]),o($Vn1,[2,179]),o($Vn1,[2,180]),{44:$Vd,47:170,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},{30:171,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:179,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:181,50:[1,180],67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:182,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:183,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:184,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{109:[1,185]},{30:186,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:187,65:[1,188],67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:189,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:190,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{30:191,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},o($VS,[2,182]),o($V3,[2,20]),o($VT,[2,25]),o($VD,[2,46],{39:192,18:193,10:$Vy,40:$VE}),o($VU,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{77:[1,197],79:198,116:$VX,119:$VY},o($Vu1,[2,79]),o($Vu1,[2,81]),o($Vu1,[2,82]),o($Vu1,[2,168]),o($Vu1,[2,169]),{76:199,79:121,80:$VV,81:$VW,116:$VX,119:$VY},o($VZ,[2,84]),{8:$VA,9:$VB,10:$V_,11:$VC,12:$V$,14:$V01,21:201,27:$V11,29:[1,200],32:$V21,44:$V31,60:$V41,75:$V51,83:141,84:$V61,85:$V71,86:$V81,87:$V91,88:$Va1,89:$Vb1,90:$Vc1,91:202,105:$Vd1,109:$Ve1,111:$Vf1,114:$Vg1,115:$Vh1,116:$Vi1},o($Vv1,[2,101]),o($Vv1,[2,103]),o($Vv1,[2,104]),o($Vv1,[2,157]),o($Vv1,[2,158]),o($Vv1,[2,159]),o($Vv1,[2,160]),o($Vv1,[2,161]),o($Vv1,[2,162]),o($Vv1,[2,163]),o($Vv1,[2,164]),o($Vv1,[2,165]),o($Vv1,[2,166]),o($Vv1,[2,167]),o($Vv1,[2,90]),o($Vv1,[2,91]),o($Vv1,[2,92]),o($Vv1,[2,93]),o($Vv1,[2,94]),o($Vv1,[2,95]),o($Vv1,[2,96]),o($Vv1,[2,97]),o($Vv1,[2,98]),o($Vv1,[2,99]),o($Vv1,[2,100]),{6:11,7:12,8:$V5,9:$V6,10:$V7,11:$V8,20:17,22:18,23:19,24:20,25:21,26:22,27:$V9,32:[1,203],33:24,34:$Va,36:$Vb,38:$Vc,42:28,43:39,44:$Vd,45:40,47:41,60:$Ve,84:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs,121:$Vt,122:$Vu,123:$Vv,124:$Vw,125:$Vx},{10:$Vy,18:204},{44:[1,205]},o($VQ,[2,43]),{10:[1,206],44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:113,114:$Vq,115:$Vr,116:$Vs},{10:[1,207]},{10:[1,208],106:[1,209]},o($Vw1,[2,128]),{10:[1,210],44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:113,114:$Vq,115:$Vr,116:$Vs},{10:[1,211],44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:113,114:$Vq,115:$Vr,116:$Vs},{80:[1,212]},o($Vm1,[2,109],{10:[1,213]}),o($Vm1,[2,111],{10:[1,214]}),{80:[1,215]},o($Vn1,[2,184]),{80:[1,216],98:[1,217]},o($VQ,[2,55],{113:113,44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,114:$Vq,115:$Vr,116:$Vs}),{31:[1,218],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($Vx1,[2,86]),o($Vx1,[2,88]),o($Vx1,[2,89]),o($Vx1,[2,153]),o($Vx1,[2,154]),o($Vx1,[2,155]),o($Vx1,[2,156]),{49:[1,220],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{30:221,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{51:[1,222],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{53:[1,223],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{55:[1,224],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{57:[1,225],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{60:[1,226]},{64:[1,227],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{66:[1,228],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{30:229,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},{31:[1,230],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{67:$Vo1,69:[1,231],71:[1,232],82:219,116:$Vr1,117:$Vs1,118:$Vt1},{67:$Vo1,69:[1,234],71:[1,233],82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($VD,[2,45],{18:156,10:$Vy,40:$Vl1}),o($VD,[2,47],{44:$Vk1}),o($VU,[2,75]),o($VU,[2,74]),{62:[1,235],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($VU,[2,77]),o($Vu1,[2,80]),{77:[1,236],79:198,116:$VX,119:$VY},{30:237,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},o($Vj1,$V4,{5:238}),o($Vv1,[2,102]),o($Vz,[2,35]),{43:239,44:$Vd,45:40,47:41,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},{10:$Vy,18:240},{10:$Vy1,60:$Vz1,84:$VA1,92:241,105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{10:$Vy1,60:$Vz1,84:$VA1,92:252,104:[1,253],105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{10:$Vy1,60:$Vz1,84:$VA1,92:254,104:[1,255],105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{105:[1,256]},{10:$Vy1,60:$Vz1,84:$VA1,92:257,105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{44:$Vd,47:258,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},o($Vm1,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},o($Vm1,[2,116]),o($Vm1,[2,118],{10:[1,262]}),o($Vm1,[2,119]),o($VR,[2,56]),o($Vx1,[2,87]),o($VR,[2,57]),{51:[1,263],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($VR,[2,64]),o($VR,[2,59]),o($VR,[2,60]),o($VR,[2,61]),{109:[1,264]},o($VR,[2,63]),o($VR,[2,65]),{66:[1,265],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},o($VR,[2,67]),o($VR,[2,68]),o($VR,[2,70]),o($VR,[2,69]),o($VR,[2,71]),o([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),o($VU,[2,78]),{31:[1,266],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{6:11,7:12,8:$V5,9:$V6,10:$V7,11:$V8,20:17,22:18,23:19,24:20,25:21,26:22,27:$V9,32:[1,267],33:24,34:$Va,36:$Vb,38:$Vc,42:28,43:39,44:$Vd,45:40,47:41,60:$Ve,84:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs,121:$Vt,122:$Vu,123:$Vv,124:$Vw,125:$Vx},o($VQ,[2,53]),{43:268,44:$Vd,45:40,47:41,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs},o($Vm1,[2,121],{106:$VG1}),o($VH1,[2,130],{108:270,10:$Vy1,60:$Vz1,84:$VA1,105:$VB1,109:$VC1,110:$VD1,111:$VE1,112:$VF1}),o($VI1,[2,132]),o($VI1,[2,134]),o($VI1,[2,135]),o($VI1,[2,136]),o($VI1,[2,137]),o($VI1,[2,138]),o($VI1,[2,139]),o($VI1,[2,140]),o($VI1,[2,141]),o($Vm1,[2,122],{106:$VG1}),{10:[1,271]},o($Vm1,[2,123],{106:$VG1}),{10:[1,272]},o($Vw1,[2,129]),o($Vm1,[2,105],{106:$VG1}),o($Vm1,[2,106],{113:113,44:$Vd,60:$Ve,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,114:$Vq,115:$Vr,116:$Vs}),o($Vm1,[2,110]),o($Vm1,[2,112],{10:[1,273]}),o($Vm1,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:$VA,9:$VB,11:$VC,21:278},o($Vz,[2,34]),o($VQ,[2,52]),{10:$Vy1,60:$Vz1,84:$VA1,105:$VB1,107:279,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},o($VI1,[2,133]),{14:$VF,44:$VG,60:$VH,89:$VI,101:280,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP,120:88},{14:$VF,44:$VG,60:$VH,89:$VI,101:281,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP,120:88},{98:[1,282]},o($Vm1,[2,120]),o($VR,[2,58]),{30:283,67:$Vo1,80:$Vp1,81:$Vq1,82:172,116:$Vr1,117:$Vs1,118:$Vt1},o($VR,[2,66]),o($Vj1,$V4,{5:284}),o($VH1,[2,131],{108:270,10:$Vy1,60:$Vz1,84:$VA1,105:$VB1,109:$VC1,110:$VD1,111:$VE1,112:$VF1}),o($Vm1,[2,126],{120:168,10:[1,285],14:$VF,44:$VG,60:$VH,89:$VI,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP}),o($Vm1,[2,127],{120:168,10:[1,286],14:$VF,44:$VG,60:$VH,89:$VI,105:$VJ,106:$VK,109:$VL,111:$VM,114:$VN,115:$VO,116:$VP}),o($Vm1,[2,114]),{31:[1,287],67:$Vo1,82:219,116:$Vr1,117:$Vs1,118:$Vt1},{6:11,7:12,8:$V5,9:$V6,10:$V7,11:$V8,20:17,22:18,23:19,24:20,25:21,26:22,27:$V9,32:[1,288],33:24,34:$Va,36:$Vb,38:$Vc,42:28,43:39,44:$Vd,45:40,47:41,60:$Ve,84:$Vf,85:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,102:$Vl,105:$Vm,106:$Vn,109:$Vo,111:$Vp,113:42,114:$Vq,115:$Vr,116:$Vs,121:$Vt,122:$Vu,123:$Vv,124:$Vw,125:$Vx},{10:$Vy1,60:$Vz1,84:$VA1,92:289,105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},{10:$Vy1,60:$Vz1,84:$VA1,92:290,105:$VB1,107:242,108:243,109:$VC1,110:$VD1,111:$VE1,112:$VF1},o($VR,[2,62]),o($Vz,[2,33]),o($Vm1,[2,124],{106:$VG1}),o($Vm1,[2,125],{106:$VG1})],\ndefaultActions: {},\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\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(\"acc_title\");return 34; \nbreak;\ncase 1: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 2: this.begin(\"acc_descr\");return 36; \nbreak;\ncase 3: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 4: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 5: this.popState(); \nbreak;\ncase 6:return \"acc_descr_multiline_value\";\nbreak;\ncase 7:\n // console.log('=> shapeData', yy_.yytext);\n this.pushState(\"shapeData\"); yy_.yytext=\"\"; return 40 \nbreak;\ncase 8:\n // console.log('=> shapeDataStr', yy_.yytext);\n this.pushState(\"shapeDataStr\");\n return 40;\n \nbreak;\ncase 9:\n // console.log('shapeData <==', yy_.yytext);\n this.popState(); return 40\nbreak;\ncase 10:\n // console.log('shapeData', yy_.yytext);\n const re = /\\n\\s*/g;\n yy_.yytext = yy_.yytext.replace(re,\"
    \");\n return 40\nbreak;\ncase 11:\n // console.log('shapeData', yy_.yytext);\n return 40;\n \nbreak;\ncase 12:\n // console.log('<== root', yy_.yytext)\n this.popState();\n \nbreak;\ncase 13:this.begin(\"callbackname\");\nbreak;\ncase 14:this.popState();\nbreak;\ncase 15:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 16:return 95;\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 96;\nbreak;\ncase 19: return \"MD_STR\";\nbreak;\ncase 20: this.popState();\nbreak;\ncase 21: this.begin(\"md_string\");\nbreak;\ncase 22: return \"STR\"; \nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:this.pushState(\"string\");\nbreak;\ncase 25:return 84;\nbreak;\ncase 26:return 102;\nbreak;\ncase 27:return 85;\nbreak;\ncase 28:return 104;\nbreak;\ncase 29:return 86;\nbreak;\ncase 30:return 87;\nbreak;\ncase 31:return 97;\nbreak;\ncase 32:this.begin(\"click\");\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34:return 88;\nbreak;\ncase 35:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 36:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 37:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 12;\nbreak;\ncase 38:return 27;\nbreak;\ncase 39:return 32;\nbreak;\ncase 40:return 98;\nbreak;\ncase 41:return 98;\nbreak;\ncase 42:return 98;\nbreak;\ncase 43:return 98;\nbreak;\ncase 44: this.popState(); return 13; \nbreak;\ncase 45: this.popState(); return 14; \nbreak;\ncase 46: this.popState(); return 14; \nbreak;\ncase 47: this.popState(); return 14; \nbreak;\ncase 48: this.popState(); return 14; \nbreak;\ncase 49: this.popState(); return 14; \nbreak;\ncase 50: this.popState(); return 14; \nbreak;\ncase 51: this.popState(); return 14; \nbreak;\ncase 52: this.popState(); return 14; \nbreak;\ncase 53: this.popState(); return 14; \nbreak;\ncase 54: this.popState(); return 14; \nbreak;\ncase 55:return 121;\nbreak;\ncase 56:return 122;\nbreak;\ncase 57:return 123;\nbreak;\ncase 58:return 124;\nbreak;\ncase 59:return 125;\nbreak;\ncase 60: return 78; \nbreak;\ncase 61:return 105;\nbreak;\ncase 62:return 111;\nbreak;\ncase 63:return 46;\nbreak;\ncase 64:return 60;\nbreak;\ncase 65:return 44;\nbreak;\ncase 66:return 8;\nbreak;\ncase 67:return 106;\nbreak;\ncase 68:return 115;\nbreak;\ncase 69: this.popState(); return 77; \nbreak;\ncase 70: this.pushState(\"edgeText\"); return 75; \nbreak;\ncase 71:return 119;\nbreak;\ncase 72: this.popState(); return 77; \nbreak;\ncase 73: this.pushState(\"thickEdgeText\"); return 75; \nbreak;\ncase 74:return 119;\nbreak;\ncase 75: this.popState(); return 77; \nbreak;\ncase 76: this.pushState(\"dottedEdgeText\"); return 75; \nbreak;\ncase 77:return 119;\nbreak;\ncase 78:return 77;\nbreak;\ncase 79: this.popState(); return 53; \nbreak;\ncase 80:return \"TEXT\"\nbreak;\ncase 81: this.pushState(\"ellipseText\"); return 52; \nbreak;\ncase 82: this.popState(); return 55; \nbreak;\ncase 83: this.pushState(\"text\"); return 54; \nbreak;\ncase 84: this.popState(); return 57; \nbreak;\ncase 85: this.pushState(\"text\"); return 56; \nbreak;\ncase 86: return 58; \nbreak;\ncase 87: this.pushState(\"text\"); return 67; \nbreak;\ncase 88: this.popState(); return 64; \nbreak;\ncase 89: this.pushState(\"text\") ;return 63; \nbreak;\ncase 90: this.popState(); return 49; \nbreak;\ncase 91: this.pushState(\"text\"); return 48; \nbreak;\ncase 92: this.popState(); return 69; \nbreak;\ncase 93: this.popState(); return 71; \nbreak;\ncase 94:return 117;\nbreak;\ncase 95: this.pushState(\"trapText\"); return 68; \nbreak;\ncase 96: this.pushState(\"trapText\"); return 70; \nbreak;\ncase 97:return 118;\nbreak;\ncase 98:return 67;\nbreak;\ncase 99:return 90;\nbreak;\ncase 100:return 'SEP';\nbreak;\ncase 101:return 89;\nbreak;\ncase 102:return 115;\nbreak;\ncase 103:return 111;\nbreak;\ncase 104:return 44;\nbreak;\ncase 105:\n return 109;\n\nbreak;\ncase 106:return 114\nbreak;\ncase 107:return 116;\nbreak;\ncase 108: this.popState(); return 62; \nbreak;\ncase 109: this.pushState(\"text\"); return 62; \nbreak;\ncase 110: this.popState(); return 51; \nbreak;\ncase 111: this.pushState(\"text\"); return 50; \nbreak;\ncase 112: this.popState(); return 31; \nbreak;\ncase 113: this.pushState(\"text\"); return 29; \nbreak;\ncase 114: this.popState(); return 66 \nbreak;\ncase 115: this.pushState(\"text\"); return 65 \nbreak;\ncase 116:return \"TEXT\";\nbreak;\ncase 117:return 'QUOTE';\nbreak;\ncase 118:return 9;\nbreak;\ncase 119:return 10;\nbreak;\ncase 120:return 11;\nbreak;\n}\n},\nrules: [/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:@\\{)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\\\"]+)/,/^(?:[^}^\"]+)/,/^(?:\\})/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:[^`\"]+)/,/^(?:[`][\"])/,/^(?:[\"][`])/,/^(?:[^\"]+)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s])/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:flowchart-elk\\b)/,/^(?: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]*)/,/^(?:.*direction\\s+TD[^\\n]*)/,/^(?:[^\\s\\\"]+@(?=[^\\{\\\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:[^=]|=(?!))/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:[^\\.]|\\.(?!))/,/^(?:\\s*~~[\\~]+\\s*)/,/^(?:[-/\\)][\\)])/,/^(?:[^\\(\\)\\[\\]\\{\\}]|!\\)+)/,/^(?:\\(-)/,/^(?:\\]\\))/,/^(?:\\(\\[)/,/^(?:\\]\\])/,/^(?:\\[\\[)/,/^(?:\\[\\|)/,/^(?:>)/,/^(?:\\)\\])/,/^(?:\\[\\()/,/^(?:\\)\\)\\))/,/^(?:\\(\\(\\()/,/^(?:[\\\\(?=\\])][\\]])/,/^(?:\\/(?=\\])\\])/,/^(?:\\/(?!\\])|\\\\(?!\\])|[^\\\\\\[\\]\\(\\)\\{\\}\\/]+)/,/^(?:\\[\\/)/,/^(?:\\[\\\\)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:\\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-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])/,/^(?:\\|)/,/^(?:\\|)/,/^(?:\\))/,/^(?:\\()/,/^(?:\\])/,/^(?:\\[)/,/^(?:(\\}))/,/^(?:\\{)/,/^(?:[^\\[\\]\\(\\)\\{\\}\\|\\\"]+)/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"shapeDataEndBracket\":{\"rules\":[21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"shapeDataStr\":{\"rules\":[9,10,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"shapeData\":{\"rules\":[8,11,12,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"callbackargs\":{\"rules\":[17,18,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"callbackname\":{\"rules\":[14,15,16,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"href\":{\"rules\":[21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"click\":{\"rules\":[21,24,33,34,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"dottedEdgeText\":{\"rules\":[21,24,75,77,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"thickEdgeText\":{\"rules\":[21,24,72,74,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"edgeText\":{\"rules\":[21,24,69,71,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"trapText\":{\"rules\":[21,24,78,81,83,85,89,91,92,93,94,95,96,109,111,113,115],\"inclusive\":false},\"ellipseText\":{\"rules\":[21,24,78,79,80,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"text\":{\"rules\":[21,24,78,81,82,83,84,85,88,89,90,91,95,96,108,109,110,111,112,113,114,115,116],\"inclusive\":false},\"vertex\":{\"rules\":[21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"dir\":{\"rules\":[21,24,44,45,46,47,48,49,50,51,52,53,54,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[5,6,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"acc_descr\":{\"rules\":[3,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"acc_title\":{\"rules\":[1,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"md_string\":{\"rules\":[19,20,21,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"string\":{\"rules\":[21,22,23,24,78,81,83,85,89,91,95,96,109,111,113,115],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,75,76,78,81,83,85,86,87,89,91,95,96,97,98,99,100,101,102,103,104,105,106,107,109,111,113,115,117,118,119,120],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "// @ts-ignore: JISON doesn't support types\nimport flowJisonParser from './flow.jison';\n\nconst newParser = Object.assign({}, flowJisonParser);\n\nnewParser.parse = (src: string): unknown => {\n // remove the trailing whitespace after closing curly braces when ending a line break\n const newSrc = src.replace(/}\\s*\\n/g, '}\\n');\n return flowJisonParser.parse(newSrc);\n};\n\nexport default newParser;\n", "// import khroma from 'khroma';\nimport * as khroma from 'khroma';\nimport { getIconStyles } from '../globalStyles.js';\n\n/** Returns the styles given options */\nexport interface FlowChartStyleOptions {\n arrowheadColor: string;\n border2: string;\n clusterBkg: string;\n clusterBorder: string;\n edgeLabelBackground: string;\n fontFamily: string;\n lineColor: string;\n mainBkg: string;\n nodeBorder: string;\n nodeTextColor: string;\n tertiaryColor: string;\n textColor: string;\n titleColor: string;\n}\n\nconst fade = (color: string, opacity: number) => {\n // @ts-ignore TODO: incorrect types from khroma\n const channel = khroma.channel;\n\n const r = channel(color, 'r');\n const g = channel(color, 'g');\n const b = channel(color, 'b');\n\n // @ts-ignore incorrect types from khroma\n return khroma.rgba(r, g, b, opacity);\n};\n\nconst getStyles = (options: FlowChartStyleOptions) =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span {\n color: ${options.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .label text,span {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .katex path {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n }\n\n .rough-node .label,.node .label, .image-shape .label, .icon-shape .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n\n .root .anchor path {\n fill: ${options.lineColor} !important;\n stroke-width: 0;\n stroke: ${options.lineColor};\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n p {\n background-color: ${options.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color:\n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n\n rect.text {\n fill: none;\n stroke-width: 0;\n }\n\n .icon-shape, .image-shape {\n background-color: ${options.edgeLabelBackground};\n p {\n background-color: ${options.edgeLabelBackground};\n padding: 2px;\n }\n .label rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n ${getIconStyles()}\n`;\n\nexport default getStyles;\n", "import type { MermaidConfig } from '../../config.type.js';\nimport { setConfig } from '../../diagram-api/diagramAPI.js';\nimport { FlowDB } from './flowDb.js';\nimport renderer from './flowRenderer-v3-unified.js';\n// @ts-ignore: JISON doesn't support types\n//import flowParser from './parser/flow.jison';\nimport flowParser from './parser/flowParser.ts';\nimport flowStyles from './styles.js';\n\nexport const diagram = {\n parser: flowParser,\n get db() {\n return new FlowDB();\n },\n renderer,\n styles: flowStyles,\n init: (cnf: MermaidConfig) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n if (cnf.layout) {\n setConfig({ layout: cnf.layout });\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n setConfig({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } });\n },\n};\n"], - "mappings": "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I,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,GAAK,CAAC,EAAE,GAAG,EAAEC,EAAK,CAAC,EAAE,EAAE,EAAE,EAAEC,EAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,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EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,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", - "names": ["MERMAID_DOM_ID_PREFIX", "FlowDB", "getConfig", "setAccTitle", "setAccDescription", "setDiagramTitle", "getAccTitle", "getAccDescription", "getDiagramTitle", "__name", "txt", "common_default", "labelType", "id", "vertex", "textObj", "type", "style", "classes", "dir", "props", "metadata", "doc", "yamlData", "load", "JSON_SCHEMA", "edge", "e", "edgeDoc", "s", "isValidShape", "_start", "_end", "log", "linkTextObj", "existingLinks", "getEdgeId", "value", "linkData", "start", "end", "isLastStart", "isFirstEnd", "positions", "interpolate", "pos", "ids", "_style", "classNode", "newStyle", "className", "subGraph", "tooltip", "functionName", "functionArgs", "domId", "argList", "i", "item", "elem", "utils_default", "linkStr", "target", "element", "fun", "tooltipElem", "createTooltip", "select_default", "el", "title", "rect", "purify", "ver", "clear", "_id", "list", "_title", "result", "a", "prims", "objs", "nodeList", "flowchartConfig", "nodes", "count", "posCount", "childPos", "res", "_str", "str", "stroke", "char", "length", "line", "dots", "_startStr", "info", "startInfo", "allSgs", "sg", "allSubgraphs", "node", "arrowTypeStart", "arrowTypeEnd", "parentDB", "subGraphDB", "config", "look", "parentId", "isGroup", "baseNode", "classDefs", "compiledStyles", "customClass", "cssClass", "edges", "subGraphs", "rawEdge", "index", "styles", "defaultConfig", "getClasses", "__name", "text", "diagramObj", "draw", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "sandboxElement", "select_default", "doc", "data4Layout", "svg", "getDiagramElement", "direction", "getRegisteredLayoutAlgorithm", "render", "padding", "utils_default", "setupViewPortForSVG", "vertex", "node", "link", "linkNode", "shape", "label", "flowRenderer_v3_unified_default", "parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "$VZ", "$V_", "$V$", "$V01", "$V11", "$V21", "$V31", "$V41", "$V51", "$V61", "$V71", "$V81", "$V91", "$Va1", "$Vb1", "$Vc1", "$Vd1", "$Ve1", "$Vf1", "$Vg1", "$Vh1", "$Vi1", "$Vj1", "$Vk1", "$Vl1", "$Vm1", "$Vn1", "$Vo1", "$Vp1", "$Vq1", "$Vr1", "$Vs1", "$Vt1", "$Vu1", "$Vv1", "$Vw1", "$Vx1", "$Vy1", "$Vz1", "$VA1", "$VB1", "$VC1", "$VD1", "$VE1", "$VF1", "$VG1", "$VH1", "$VI1", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "inf", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "re", "Parser", "flow_default", "parser", "newParser", "flow_default", "src", "newSrc", "flowParser_default", "fade", "__name", "color", "opacity", "channel", "channel_default", "g", "b", "rgba_default", "getStyles", "options", "getIconStyles", "styles_default", "diagram", "flowParser_default", "FlowDB", "flowRenderer_v3_unified_default", "styles_default", "__name", "cnf", "setConfig"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-CBGYKTO2.mjs b/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-CBGYKTO2.mjs deleted file mode 100644 index ec769bd..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-CBGYKTO2.mjs +++ /dev/null @@ -1,292 +0,0 @@ -import{m as Ee}from"./chunk-Q3CC2MQB.mjs";import{a as ei}from"./chunk-XBXGYYE5.mjs";import{F as ae,N as oe,Q as ce,R as le,S as ue,T as de,U as fe,V as he,W as me,Y as nt}from"./chunk-3UWU4A3N.mjs";import{A as Ce,B as At,C as Ot,D as Me,a as re,b as et,d as ke,e as ye,f as pe,g as ge,h as yt,i as xe,o as be,p as Et,q as Yt,r as $t,s as Lt,t as It,u as Te,v as ve,w as we,x as _e,y as De,z as Se}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as o,c as vt,f as ot}from"./chunk-VELTKBKT.mjs";var $e=vt((Wt,Pt)=>{"use strict";(function(t,n){typeof Wt=="object"&&typeof Pt<"u"?Pt.exports=n():typeof define=="function"&&define.amd?define(n):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=n()})(Wt,(function(){"use strict";var t="day";return function(n,r,a){var s=o(function(D){return D.add(4-D.isoWeekday(),t)},"a"),u=r.prototype;u.isoWeekYear=function(){return s(this).year()},u.isoWeek=function(D){if(!this.$utils().u(D))return this.add(7*(D-this.isoWeek()),t);var S,P,C,W,R=s(this),z=(S=this.isoWeekYear(),P=this.$u,C=(P?a.utc:a)().year(S).startOf("year"),W=4-C.isoWeekday(),C.isoWeekday()>4&&(W+=7),C.add(W,t));return R.diff(z,"week")+1},u.isoWeekday=function(D){return this.$utils().u(D)?this.day()||7:this.day(this.day()%7?D:D-7)};var x=u.startOf;u.startOf=function(D,S){var P=this.$utils(),C=!!P.u(S)||S;return P.p(D)==="isoweek"?C?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):x.bind(this)(D,S)}}}))});var Le=vt((Vt,Nt)=>{"use strict";(function(t,n){typeof Vt=="object"&&typeof Nt<"u"?Nt.exports=n():typeof define=="function"&&define.amd?define(n):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=n()})(Vt,(function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},n=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,a=/\d\d/,s=/\d\d?/,u=/\d*[^-_:/,()\s\d]+/,x={},D=o(function(v){return(v=+v)+(v>68?1900:2e3)},"a"),S=o(function(v){return function(k){this[v]=+k}},"f"),P=[/[+-]\d\d:?(\d\d)?|Z/,function(v){(this.zone||(this.zone={})).offset=(function(k){if(!k||k==="Z")return 0;var O=k.match(/([+-]|\d\d)/g),L=60*O[1]+(+O[2]||0);return L===0?0:O[0]==="+"?-L:L})(v)}],C=o(function(v){var k=x[v];return k&&(k.indexOf?k:k.s.concat(k.f))},"u"),W=o(function(v,k){var O,L=x.meridiem;if(L){for(var G=1;G<=24;G+=1)if(v.indexOf(L(G,0,k))>-1){O=G>12;break}}else O=v===(k?"pm":"PM");return O},"d"),R={A:[u,function(v){this.afternoon=W(v,!1)}],a:[u,function(v){this.afternoon=W(v,!0)}],Q:[r,function(v){this.month=3*(v-1)+1}],S:[r,function(v){this.milliseconds=100*+v}],SS:[a,function(v){this.milliseconds=10*+v}],SSS:[/\d{3}/,function(v){this.milliseconds=+v}],s:[s,S("seconds")],ss:[s,S("seconds")],m:[s,S("minutes")],mm:[s,S("minutes")],H:[s,S("hours")],h:[s,S("hours")],HH:[s,S("hours")],hh:[s,S("hours")],D:[s,S("day")],DD:[a,S("day")],Do:[u,function(v){var k=x.ordinal,O=v.match(/\d+/);if(this.day=O[0],k)for(var L=1;L<=31;L+=1)k(L).replace(/\[|\]/g,"")===v&&(this.day=L)}],w:[s,S("week")],ww:[a,S("week")],M:[s,S("month")],MM:[a,S("month")],MMM:[u,function(v){var k=C("months"),O=(C("monthsShort")||k.map((function(L){return L.slice(0,3)}))).indexOf(v)+1;if(O<1)throw new Error;this.month=O%12||O}],MMMM:[u,function(v){var k=C("months").indexOf(v)+1;if(k<1)throw new Error;this.month=k%12||k}],Y:[/[+-]?\d+/,S("year")],YY:[a,function(v){this.year=D(v)}],YYYY:[/\d{4}/,S("year")],Z:P,ZZ:P};function z(v){var k,O;k=v,O=x&&x.formats;for(var L=(v=k.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(I,f,y){var p=y&&y.toUpperCase();return f||O[y]||t[y]||O[p].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(T,g,c){return g||c.slice(1)}))}))).match(n),G=L.length,X=0;X-1)return new Date((h==="X"?1e3:1)*l);var i=z(h)(l),F=i.year,e=i.month,_=i.day,A=i.hours,Y=i.minutes,$=i.seconds,H=i.milliseconds,V=i.zone,N=i.week,U=new Date,st=_||(F||e?1:U.getDate()),rt=F||U.getFullYear(),lt=0;F&&!e||(lt=e>0?e-1:U.getMonth());var mt,kt=A||0,j=Y||0,at=$||0,K=H||0;return V?new Date(Date.UTC(rt,lt,st,kt,j,at,K+60*V.offset*1e3)):m?new Date(Date.UTC(rt,lt,st,kt,j,at,K)):(mt=new Date(rt,lt,st,kt,j,at,K),N&&(mt=w(mt).week(N).toDate()),mt)}catch{return new Date("")}})(E,M,b,O),this.init(),p&&p!==!0&&(this.$L=this.locale(p).$L),y&&E!=this.format(M)&&(this.$d=new Date("")),x={}}else if(M instanceof Array)for(var T=M.length,g=1;g<=T;g+=1){d[1]=M[g-1];var c=O.apply(this,d);if(c.isValid()){this.$d=c.$d,this.$L=c.$L,this.init();break}g===T&&(this.$d=new Date(""))}else G.call(this,X)}}}))});var Ie=vt((zt,Rt)=>{"use strict";(function(t,n){typeof zt=="object"&&typeof Rt<"u"?Rt.exports=n():typeof define=="function"&&define.amd?define(n):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=n()})(zt,(function(){"use strict";return function(t,n){var r=n.prototype,a=r.format;r.format=function(s){var u=this,x=this.$locale();if(!this.isValid())return a.bind(this)(s);var D=this.$utils(),S=(s||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(P){switch(P){case"Q":return Math.ceil((u.$M+1)/3);case"Do":return x.ordinal(u.$D);case"gggg":return u.weekYear();case"GGGG":return u.isoWeekYear();case"wo":return x.ordinal(u.week(),"W");case"w":case"ww":return D.s(u.week(),P==="w"?1:2,"0");case"W":case"WW":return D.s(u.isoWeek(),P==="W"?1:2,"0");case"k":case"kk":return D.s(String(u.$H===0?24:u.$H),P==="k"?1:2,"0");case"X":return Math.floor(u.$d.getTime()/1e3);case"x":return u.$d.getTime();case"z":return"["+u.offsetName()+"]";case"zzz":return"["+u.offsetName("long")+"]";default:return P}}));return a.bind(this)(S)}}}))});var qe=vt((ee,ie)=>{"use strict";(function(t,n){typeof ee=="object"&&typeof ie<"u"?ie.exports=n():typeof define=="function"&&define.amd?define(n):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_duration=n()})(ee,(function(){"use strict";var t,n,r=1e3,a=6e4,s=36e5,u=864e5,x=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,D=31536e6,S=2628e6,P=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,C={years:D,months:S,days:u,hours:s,minutes:a,seconds:r,milliseconds:1,weeks:6048e5},W=o(function(E){return E instanceof G},"c"),R=o(function(E,b,d){return new G(E,d,b.$l)},"f"),z=o(function(E){return n.p(E)+"s"},"m"),v=o(function(E){return E<0},"l"),k=o(function(E){return v(E)?Math.ceil(E):Math.floor(E)},"$"),O=o(function(E){return Math.abs(E)},"y"),L=o(function(E,b){return E?v(E)?{negative:!0,format:""+O(E)+b}:{negative:!1,format:""+E+b}:{negative:!1,format:""}},"v"),G=(function(){function E(d,M,I){var f=this;if(this.$d={},this.$l=I,d===void 0&&(this.$ms=0,this.parseFromMilliseconds()),M)return R(d*C[z(M)],this);if(typeof d=="number")return this.$ms=d,this.parseFromMilliseconds(),this;if(typeof d=="object")return Object.keys(d).forEach((function(T){f.$d[z(T)]=d[T]})),this.calMilliseconds(),this;if(typeof d=="string"){var y=d.match(P);if(y){var p=y.slice(2).map((function(T){return T!=null?Number(T):0}));return this.$d.years=p[0],this.$d.months=p[1],this.$d.weeks=p[2],this.$d.days=p[3],this.$d.hours=p[4],this.$d.minutes=p[5],this.$d.seconds=p[6],this.calMilliseconds(),this}}return this}o(E,"l");var b=E.prototype;return b.calMilliseconds=function(){var d=this;this.$ms=Object.keys(this.$d).reduce((function(M,I){return M+(d.$d[I]||0)*C[I]}),0)},b.parseFromMilliseconds=function(){var d=this.$ms;this.$d.years=k(d/D),d%=D,this.$d.months=k(d/S),d%=S,this.$d.days=k(d/u),d%=u,this.$d.hours=k(d/s),d%=s,this.$d.minutes=k(d/a),d%=a,this.$d.seconds=k(d/r),d%=r,this.$d.milliseconds=d},b.toISOString=function(){var d=L(this.$d.years,"Y"),M=L(this.$d.months,"M"),I=+this.$d.days||0;this.$d.weeks&&(I+=7*this.$d.weeks);var f=L(I,"D"),y=L(this.$d.hours,"H"),p=L(this.$d.minutes,"M"),T=this.$d.seconds||0;this.$d.milliseconds&&(T+=this.$d.milliseconds/1e3,T=Math.round(1e3*T)/1e3);var g=L(T,"S"),c=d.negative||M.negative||f.negative||y.negative||p.negative||g.negative,l=y.format||p.format||g.format?"T":"",h=(c?"-":"")+"P"+d.format+M.format+f.format+l+y.format+p.format+g.format;return h==="P"||h==="-P"?"P0D":h},b.toJSON=function(){return this.toISOString()},b.format=function(d){var M=d||"YYYY-MM-DDTHH:mm:ss",I={Y:this.$d.years,YY:n.s(this.$d.years,2,"0"),YYYY:n.s(this.$d.years,4,"0"),M:this.$d.months,MM:n.s(this.$d.months,2,"0"),D:this.$d.days,DD:n.s(this.$d.days,2,"0"),H:this.$d.hours,HH:n.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:n.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:n.s(this.$d.seconds,2,"0"),SSS:n.s(this.$d.milliseconds,3,"0")};return M.replace(x,(function(f,y){return y||String(I[f])}))},b.as=function(d){return this.$ms/C[z(d)]},b.get=function(d){var M=this.$ms,I=z(d);return I==="milliseconds"?M%=1e3:M=I==="weeks"?k(M/C[I]):this.$d[I],M||0},b.add=function(d,M,I){var f;return f=M?d*C[z(M)]:W(d)?d.$ms:R(d,this).$ms,R(this.$ms+f*(I?-1:1),this)},b.subtract=function(d,M){return this.add(d,M,!0)},b.locale=function(d){var M=this.clone();return M.$l=d,M},b.clone=function(){return R(this.$ms,this)},b.humanize=function(d){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!d)},b.valueOf=function(){return this.asMilliseconds()},b.milliseconds=function(){return this.get("milliseconds")},b.asMilliseconds=function(){return this.as("milliseconds")},b.seconds=function(){return this.get("seconds")},b.asSeconds=function(){return this.as("seconds")},b.minutes=function(){return this.get("minutes")},b.asMinutes=function(){return this.as("minutes")},b.hours=function(){return this.get("hours")},b.asHours=function(){return this.as("hours")},b.days=function(){return this.get("days")},b.asDays=function(){return this.as("days")},b.weeks=function(){return this.get("weeks")},b.asWeeks=function(){return this.as("weeks")},b.months=function(){return this.get("months")},b.asMonths=function(){return this.as("months")},b.years=function(){return this.get("years")},b.asYears=function(){return this.as("years")},E})(),X=o(function(E,b,d){return E.add(b.years()*d,"y").add(b.months()*d,"M").add(b.days()*d,"d").add(b.hours()*d,"h").add(b.minutes()*d,"m").add(b.seconds()*d,"s").add(b.milliseconds()*d,"ms")},"p");return function(E,b,d){t=d,n=d().$utils(),d.duration=function(f,y){var p=d.locale();return R(f,{$l:p},y)},d.isDuration=W;var M=b.prototype.add,I=b.prototype.subtract;b.prototype.add=function(f,y){return W(f)?X(this,f,1):M.bind(this)(f,y)},b.prototype.subtract=function(f,y){return W(f)?X(this,f,-1):I.bind(this)(f,y)}}}))});var Ft=(function(){var t=o(function(g,c,l,h){for(l=l||{},h=g.length;h--;l[g[h]]=c);return l},"o"),n=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],a=[1,27],s=[1,28],u=[1,29],x=[1,30],D=[1,31],S=[1,32],P=[1,33],C=[1,34],W=[1,9],R=[1,10],z=[1,11],v=[1,12],k=[1,13],O=[1,14],L=[1,15],G=[1,16],X=[1,19],E=[1,20],b=[1,21],d=[1,22],M=[1,23],I=[1,25],f=[1,35],y={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(c,l,h,m,w,i,F){var e=i.length-1;switch(w){case 1:return i[e-1];case 2:this.$=[];break;case 3:i[e-1].push(i[e]),this.$=i[e-1];break;case 4:case 5:this.$=i[e];break;case 6:case 7:this.$=[];break;case 8:m.setWeekday("monday");break;case 9:m.setWeekday("tuesday");break;case 10:m.setWeekday("wednesday");break;case 11:m.setWeekday("thursday");break;case 12:m.setWeekday("friday");break;case 13:m.setWeekday("saturday");break;case 14:m.setWeekday("sunday");break;case 15:m.setWeekend("friday");break;case 16:m.setWeekend("saturday");break;case 17:m.setDateFormat(i[e].substr(11)),this.$=i[e].substr(11);break;case 18:m.enableInclusiveEndDates(),this.$=i[e].substr(18);break;case 19:m.TopAxis(),this.$=i[e].substr(8);break;case 20:m.setAxisFormat(i[e].substr(11)),this.$=i[e].substr(11);break;case 21:m.setTickInterval(i[e].substr(13)),this.$=i[e].substr(13);break;case 22:m.setExcludes(i[e].substr(9)),this.$=i[e].substr(9);break;case 23:m.setIncludes(i[e].substr(9)),this.$=i[e].substr(9);break;case 24:m.setTodayMarker(i[e].substr(12)),this.$=i[e].substr(12);break;case 27:m.setDiagramTitle(i[e].substr(6)),this.$=i[e].substr(6);break;case 28:this.$=i[e].trim(),m.setAccTitle(this.$);break;case 29:case 30:this.$=i[e].trim(),m.setAccDescription(this.$);break;case 31:m.addSection(i[e].substr(8)),this.$=i[e].substr(8);break;case 33:m.addTask(i[e-1],i[e]),this.$="task";break;case 34:this.$=i[e-1],m.setClickEvent(i[e-1],i[e],null);break;case 35:this.$=i[e-2],m.setClickEvent(i[e-2],i[e-1],i[e]);break;case 36:this.$=i[e-2],m.setClickEvent(i[e-2],i[e-1],null),m.setLink(i[e-2],i[e]);break;case 37:this.$=i[e-3],m.setClickEvent(i[e-3],i[e-2],i[e-1]),m.setLink(i[e-3],i[e]);break;case 38:this.$=i[e-2],m.setClickEvent(i[e-2],i[e],null),m.setLink(i[e-2],i[e-1]);break;case 39:this.$=i[e-3],m.setClickEvent(i[e-3],i[e-1],i[e]),m.setLink(i[e-3],i[e-2]);break;case 40:this.$=i[e-1],m.setLink(i[e-1],i[e]);break;case 41:case 47:this.$=i[e-1]+" "+i[e];break;case 42:case 43:case 45:this.$=i[e-2]+" "+i[e-1]+" "+i[e];break;case 44:case 46:this.$=i[e-3]+" "+i[e-2]+" "+i[e-1]+" "+i[e];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(n,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:a,14:s,15:u,16:x,17:D,18:S,19:18,20:P,21:C,22:W,23:R,24:z,25:v,26:k,27:O,28:L,29:G,30:X,31:E,33:b,35:d,36:M,37:24,38:I,40:f},t(n,[2,7],{1:[2,1]}),t(n,[2,3]),{9:36,11:17,12:r,13:a,14:s,15:u,16:x,17:D,18:S,19:18,20:P,21:C,22:W,23:R,24:z,25:v,26:k,27:O,28:L,29:G,30:X,31:E,33:b,35:d,36:M,37:24,38:I,40:f},t(n,[2,5]),t(n,[2,6]),t(n,[2,17]),t(n,[2,18]),t(n,[2,19]),t(n,[2,20]),t(n,[2,21]),t(n,[2,22]),t(n,[2,23]),t(n,[2,24]),t(n,[2,25]),t(n,[2,26]),t(n,[2,27]),{32:[1,37]},{34:[1,38]},t(n,[2,30]),t(n,[2,31]),t(n,[2,32]),{39:[1,39]},t(n,[2,8]),t(n,[2,9]),t(n,[2,10]),t(n,[2,11]),t(n,[2,12]),t(n,[2,13]),t(n,[2,14]),t(n,[2,15]),t(n,[2,16]),{41:[1,40],43:[1,41]},t(n,[2,4]),t(n,[2,28]),t(n,[2,29]),t(n,[2,33]),t(n,[2,34],{42:[1,42],43:[1,43]}),t(n,[2,40],{41:[1,44]}),t(n,[2,35],{43:[1,45]}),t(n,[2,36]),t(n,[2,38],{42:[1,46]}),t(n,[2,37]),t(n,[2,39])],defaultActions:{},parseError:o(function(c,l){if(l.recoverable)this.trace(c);else{var h=new Error(c);throw h.hash=l,h}},"parseError"),parse:o(function(c){var l=this,h=[0],m=[],w=[null],i=[],F=this.table,e="",_=0,A=0,Y=0,$=2,H=1,V=i.slice.call(arguments,1),N=Object.create(this.lexer),U={yy:{}};for(var st in this.yy)Object.prototype.hasOwnProperty.call(this.yy,st)&&(U.yy[st]=this.yy[st]);N.setInput(c,U.yy),U.yy.lexer=N,U.yy.parser=this,typeof N.yylloc>"u"&&(N.yylloc={});var rt=N.yylloc;i.push(rt);var lt=N.options&&N.options.ranges;typeof U.yy.parseError=="function"?this.parseError=U.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function mt(q){h.length=h.length-2*q,w.length=w.length-q,i.length=i.length-q}o(mt,"popStack");function kt(){var q;return q=m.pop()||N.lex()||H,typeof q!="number"&&(q instanceof Array&&(m=q,q=m.pop()),q=l.symbols_[q]||q),q}o(kt,"lex");for(var j,at,K,Z,zi,Ct,ut={},bt,tt,se,Tt;;){if(K=h[h.length-1],this.defaultActions[K]?Z=this.defaultActions[K]:((j===null||typeof j>"u")&&(j=kt()),Z=F[K]&&F[K][j]),typeof Z>"u"||!Z.length||!Z[0]){var Mt="";Tt=[];for(bt in F[K])this.terminals_[bt]&&bt>$&&Tt.push("'"+this.terminals_[bt]+"'");N.showPosition?Mt="Parse error on line "+(_+1)+`: -`+N.showPosition()+` -Expecting `+Tt.join(", ")+", got '"+(this.terminals_[j]||j)+"'":Mt="Parse error on line "+(_+1)+": Unexpected "+(j==H?"end of input":"'"+(this.terminals_[j]||j)+"'"),this.parseError(Mt,{text:N.match,token:this.terminals_[j]||j,line:N.yylineno,loc:rt,expected:Tt})}if(Z[0]instanceof Array&&Z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+K+", token: "+j);switch(Z[0]){case 1:h.push(j),w.push(N.yytext),i.push(N.yylloc),h.push(Z[1]),j=null,at?(j=at,at=null):(A=N.yyleng,e=N.yytext,_=N.yylineno,rt=N.yylloc,Y>0&&Y--);break;case 2:if(tt=this.productions_[Z[1]][1],ut.$=w[w.length-tt],ut._$={first_line:i[i.length-(tt||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(tt||1)].first_column,last_column:i[i.length-1].last_column},lt&&(ut._$.range=[i[i.length-(tt||1)].range[0],i[i.length-1].range[1]]),Ct=this.performAction.apply(ut,[e,A,_,U.yy,Z[1],w,i].concat(V)),typeof Ct<"u")return Ct;tt&&(h=h.slice(0,-1*tt*2),w=w.slice(0,-1*tt),i=i.slice(0,-1*tt)),h.push(this.productions_[Z[1]][0]),w.push(ut.$),i.push(ut._$),se=F[h[h.length-2]][h[h.length-1]],h.push(se);break;case 3:return!0}}return!0},"parse")},p=(function(){var g={EOF:1,parseError:o(function(l,h){if(this.yy.parser)this.yy.parser.parseError(l,h);else throw new Error(l)},"parseError"),setInput:o(function(c,l){return this.yy=l||this.yy||{},this._input=c,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var c=this._input[0];this.yytext+=c,this.yyleng++,this.offset++,this.match+=c,this.matched+=c;var l=c.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),c},"input"),unput:o(function(c){var l=c.length,h=c.split(/(?:\r\n?|\n)/g);this._input=c+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var m=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),h.length-1&&(this.yylineno-=h.length-1);var w=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:h?(h.length===m.length?this.yylloc.first_column:0)+m[m.length-h.length].length-h[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[w[0],w[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(c){this.unput(this.match.slice(c))},"less"),pastInput:o(function(){var c=this.matched.substr(0,this.matched.length-this.match.length);return(c.length>20?"...":"")+c.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var c=this.match;return c.length<20&&(c+=this._input.substr(0,20-c.length)),(c.substr(0,20)+(c.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var c=this.pastInput(),l=new Array(c.length+1).join("-");return c+this.upcomingInput()+` -`+l+"^"},"showPosition"),test_match:o(function(c,l){var h,m,w;if(this.options.backtrack_lexer&&(w={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(w.yylloc.range=this.yylloc.range.slice(0))),m=c[0].match(/(?:\r\n?|\n).*/g),m&&(this.yylineno+=m.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:m?m[m.length-1].length-m[m.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+c[0].length},this.yytext+=c[0],this.match+=c[0],this.matches=c,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(c[0].length),this.matched+=c[0],h=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),h)return h;if(this._backtrack){for(var i in w)this[i]=w[i];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var c,l,h,m;this._more||(this.yytext="",this.match="");for(var w=this._currentRules(),i=0;il[0].length)){if(l=h,m=i,this.options.backtrack_lexer){if(c=this.test_match(h,w[i]),c!==!1)return c;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(c=this.test_match(l,w[m]),c!==!1?c:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var l=this.next();return l||this.lex()},"lex"),begin:o(function(l){this.conditionStack.push(l)},"begin"),popState:o(function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},"topState"),pushState:o(function(l){this.begin(l)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(l,h,m,w){var i=w;switch(m){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/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,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,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],inclusive:!0}}};return g})();y.lexer=p;function T(){this.yy={}}return o(T,"Parser"),T.prototype=y,y.Parser=T,new T})();Ft.parser=Ft;var Ye=Ft;var Fe=ot(ei(),1),Q=ot(re(),1),We=ot($e(),1),Pe=ot(Le(),1),Ve=ot(Ie(),1);Q.default.extend(We.default);Q.default.extend(Pe.default);Q.default.extend(Ve.default);var Ae={friday:5,saturday:6},J="",Gt="",Xt,Ut="",pt=[],gt=[],Zt=new Map,qt=[],Dt=[],ft="",Qt="",Ne=["active","done","crit","milestone","vert"],Kt=[],xt=!1,Jt=!1,te="sunday",St="saturday",Ht=0,ii=o(function(){qt=[],Dt=[],ft="",Kt=[],wt=0,Bt=void 0,_t=void 0,B=[],J="",Gt="",Qt="",Xt=void 0,Ut="",pt=[],gt=[],xt=!1,Jt=!1,Ht=0,Zt=new Map,ce(),te="sunday",St="saturday"},"clear"),ni=o(function(t){Gt=t},"setAxisFormat"),si=o(function(){return Gt},"getAxisFormat"),ri=o(function(t){Xt=t},"setTickInterval"),ai=o(function(){return Xt},"getTickInterval"),oi=o(function(t){Ut=t},"setTodayMarker"),ci=o(function(){return Ut},"getTodayMarker"),li=o(function(t){J=t},"setDateFormat"),ui=o(function(){xt=!0},"enableInclusiveEndDates"),di=o(function(){return xt},"endDatesAreInclusive"),fi=o(function(){Jt=!0},"enableTopAxis"),hi=o(function(){return Jt},"topAxisEnabled"),mi=o(function(t){Qt=t},"setDisplayMode"),ki=o(function(){return Qt},"getDisplayMode"),yi=o(function(){return J},"getDateFormat"),pi=o(function(t){pt=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),gi=o(function(){return pt},"getIncludes"),xi=o(function(t){gt=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),bi=o(function(){return gt},"getExcludes"),Ti=o(function(){return Zt},"getLinks"),vi=o(function(t){ft=t,qt.push(t)},"addSection"),wi=o(function(){return qt},"getSections"),_i=o(function(){let t=Oe(),n=10,r=0;for(;!t&&r{let S=D.trim();return S==="x"||S==="X"},"isTimestampFormat")(n)&&/^\d+$/.test(r))return new Date(Number(r));let u=/^after\s+(?[\d\w- ]+)/.exec(r);if(u!==null){let D=null;for(let P of u.groups.ids.split(" ")){let C=ct(P);C!==void 0&&(!D||C.endTime>D.endTime)&&(D=C)}if(D)return D.endTime;let S=new Date;return S.setHours(0,0,0,0),S}let x=(0,Q.default)(r,n.trim(),!0);if(x.isValid())return x.toDate();{et.debug("Invalid date:"+r),et.debug("With date format:"+n.trim());let D=new Date(r);if(D===void 0||isNaN(D.getTime())||D.getFullYear()<-1e4||D.getFullYear()>1e4)throw new Error("Invalid date:"+r);return D}},"getStartDate"),He=o(function(t){let n=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return n!==null?[Number.parseFloat(n[1]),n[2]]:[NaN,"ms"]},"parseDuration"),je=o(function(t,n,r,a=!1){r=r.trim();let u=/^until\s+(?[\d\w- ]+)/.exec(r);if(u!==null){let C=null;for(let R of u.groups.ids.split(" ")){let z=ct(R);z!==void 0&&(!C||z.startTime{window.open(r,"_self")}),Zt.set(a,r))}),Ge(t,"clickable")},"setLink"),Ge=o(function(t,n){t.split(",").forEach(function(r){let a=ct(r);a!==void 0&&a.classes.push(n)})},"setClass"),Ai=o(function(t,n,r){if(nt().securityLevel!=="loose"||n===void 0)return;let a=[];if(typeof r=="string"){a=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let u=0;u{Ee.runFunc(n,...a)})},"setClickFun"),Xe=o(function(t,n){Kt.push(function(){let r=document.querySelector(`[id="${t}"]`);r!==null&&r.addEventListener("click",function(){n()})},function(){let r=document.querySelector(`[id="${t}-text"]`);r!==null&&r.addEventListener("click",function(){n()})})},"pushFun"),Oi=o(function(t,n,r){t.split(",").forEach(function(a){Ai(a,n,r)}),Ge(t,"clickable")},"setClickEvent"),Fi=o(function(t){Kt.forEach(function(n){n(t)})},"bindFunctions"),Ue={getConfig:o(()=>nt().gantt,"getConfig"),clear:ii,setDateFormat:li,getDateFormat:yi,enableInclusiveEndDates:ui,endDatesAreInclusive:di,enableTopAxis:fi,topAxisEnabled:hi,setAxisFormat:ni,getAxisFormat:si,setTickInterval:ri,getTickInterval:ai,setTodayMarker:oi,getTodayMarker:ci,setAccTitle:le,getAccTitle:ue,setDiagramTitle:he,getDiagramTitle:me,setDisplayMode:mi,getDisplayMode:ki,setAccDescription:de,getAccDescription:fe,addSection:vi,getSections:wi,getTasks:_i,addTask:$i,findTaskById:ct,addTaskOrg:Li,setIncludes:pi,getIncludes:gi,setExcludes:xi,getExcludes:bi,setClickEvent:Oi,setLink:Ii,getLinks:Ti,bindFunctions:Fi,parseDuration:He,isInvalidDate:ze,setWeekday:Di,getWeekday:Si,setWeekend:Ci};function Ze(t,n,r){let a=!0;for(;a;)a=!1,r.forEach(function(s){let u="^\\s*"+s+"\\s*$",x=new RegExp(u);t[0].match(x)&&(n[s]=!0,t.shift(1),a=!0)})}o(Ze,"getTaskTags");var ht=ot(re(),1),Ke=ot(qe(),1);ht.default.extend(Ke.default);var Wi=o(function(){et.debug("Something is calling, setConf, remove the call")},"setConf"),Qe={monday:ve,tuesday:we,wednesday:_e,thursday:De,friday:Se,saturday:Ce,sunday:Te},Pi=o((t,n)=>{let r=[...t].map(()=>-1/0),a=[...t].sort((u,x)=>u.startTime-x.startTime||u.order-x.order),s=0;for(let u of a)for(let x=0;x=r[x]){r[x]=u.endTime,u.order=x+n,x>s&&(s=x);break}return s},"getMaxIntersections"),it,ne=1e4,Vi=o(function(t,n,r,a){let s=nt().gantt,u=nt().securityLevel,x;u==="sandbox"&&(x=yt("#i"+n));let D=u==="sandbox"?yt(x.nodes()[0].contentDocument.body):yt("body"),S=u==="sandbox"?x.nodes()[0].contentDocument:document,P=S.getElementById(n);it=P.parentElement.offsetWidth,it===void 0&&(it=1200),s.useWidth!==void 0&&(it=s.useWidth);let C=a.db.getTasks(),W=[];for(let f of C)W.push(f.type);W=I(W);let R={},z=2*s.topPadding;if(a.db.getDisplayMode()==="compact"||s.displayMode==="compact"){let f={};for(let p of C)f[p.section]===void 0?f[p.section]=[p]:f[p.section].push(p);let y=0;for(let p of Object.keys(f)){let T=Pi(f[p],y)+1;y+=T,z+=T*(s.barHeight+s.barGap),R[p]=T}}else{z+=C.length*(s.barHeight+s.barGap);for(let f of W)R[f]=C.filter(y=>y.type===f).length}P.setAttribute("viewBox","0 0 "+it+" "+z);let v=D.select(`[id="${n}"]`),k=Me().domain([ye(C,function(f){return f.startTime}),ke(C,function(f){return f.endTime})]).rangeRound([0,it-s.leftPadding-s.rightPadding]);function O(f,y){let p=f.startTime,T=y.startTime,g=0;return p>T?g=1:pe.vert===_.vert?0:e.vert?1:-1);let m=[...new Set(f.map(e=>e.order))].map(e=>f.find(_=>_.order===e));v.append("g").selectAll("rect").data(m).enter().append("rect").attr("x",0).attr("y",function(e,_){return _=e.order,_*y+p-2}).attr("width",function(){return l-s.rightPadding/2}).attr("height",y).attr("class",function(e){for(let[_,A]of W.entries())if(e.type===A)return"section section"+_%s.numberSectionStyles;return"section section0"}).enter();let w=v.append("g").selectAll("rect").data(f).enter(),i=a.db.getLinks();if(w.append("rect").attr("id",function(e){return e.id}).attr("rx",3).attr("ry",3).attr("x",function(e){return e.milestone?k(e.startTime)+T+.5*(k(e.endTime)-k(e.startTime))-.5*g:k(e.startTime)+T}).attr("y",function(e,_){return _=e.order,e.vert?s.gridLineStartPadding:_*y+p}).attr("width",function(e){return e.milestone?g:e.vert?.08*g:k(e.renderEndTime||e.endTime)-k(e.startTime)}).attr("height",function(e){return e.vert?C.length*(s.barHeight+s.barGap)+s.barHeight*2:g}).attr("transform-origin",function(e,_){return _=e.order,(k(e.startTime)+T+.5*(k(e.endTime)-k(e.startTime))).toString()+"px "+(_*y+p+.5*g).toString()+"px"}).attr("class",function(e){let _="task",A="";e.classes.length>0&&(A=e.classes.join(" "));let Y=0;for(let[H,V]of W.entries())e.type===V&&(Y=H%s.numberSectionStyles);let $="";return e.active?e.crit?$+=" activeCrit":$=" active":e.done?e.crit?$=" doneCrit":$=" done":e.crit&&($+=" crit"),$.length===0&&($=" task"),e.milestone&&($=" milestone "+$),e.vert&&($=" vert "+$),$+=Y,$+=" "+A,_+$}),w.append("text").attr("id",function(e){return e.id+"-text"}).text(function(e){return e.task}).attr("font-size",s.fontSize).attr("x",function(e){let _=k(e.startTime),A=k(e.renderEndTime||e.endTime);if(e.milestone&&(_+=.5*(k(e.endTime)-k(e.startTime))-.5*g,A=_+g),e.vert)return k(e.startTime)+T;let Y=this.getBBox().width;return Y>A-_?A+Y+1.5*s.leftPadding>l?_+T-5:A+T+5:(A-_)/2+_+T}).attr("y",function(e,_){return e.vert?s.gridLineStartPadding+C.length*(s.barHeight+s.barGap)+60:(_=e.order,_*y+s.barHeight/2+(s.fontSize/2-2)+p)}).attr("text-height",g).attr("class",function(e){let _=k(e.startTime),A=k(e.endTime);e.milestone&&(A=_+g);let Y=this.getBBox().width,$="";e.classes.length>0&&($=e.classes.join(" "));let H=0;for(let[N,U]of W.entries())e.type===U&&(H=N%s.numberSectionStyles);let V="";return e.active&&(e.crit?V="activeCritText"+H:V="activeText"+H),e.done?e.crit?V=V+" doneCritText"+H:V=V+" doneText"+H:e.crit&&(V=V+" critText"+H),e.milestone&&(V+=" milestoneText"),e.vert&&(V+=" vertText"),Y>A-_?A+Y+1.5*s.leftPadding>l?$+" taskTextOutsideLeft taskTextOutside"+H+" "+V:$+" taskTextOutsideRight taskTextOutside"+H+" "+V+" width-"+Y:$+" taskText taskText"+H+" "+V+" width-"+Y}),nt().securityLevel==="sandbox"){let e;e=yt("#i"+n);let _=e.nodes()[0].contentDocument;w.filter(function(A){return i.has(A.id)}).each(function(A){var Y=_.querySelector("#"+A.id),$=_.querySelector("#"+A.id+"-text");let H=Y.parentNode;var V=_.createElement("a");V.setAttribute("xlink:href",i.get(A.id)),V.setAttribute("target","_top"),H.appendChild(V),V.appendChild(Y),V.appendChild($)})}}o(G,"drawRects");function X(f,y,p,T,g,c,l,h){if(l.length===0&&h.length===0)return;let m,w;for(let{startTime:Y,endTime:$}of c)(m===void 0||Yw)&&(w=$);if(!m||!w)return;if((0,ht.default)(w).diff((0,ht.default)(m),"year")>5){et.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let i=a.db.getDateFormat(),F=[],e=null,_=(0,ht.default)(m);for(;_.valueOf()<=w;)a.db.isInvalidDate(_,i,l,h)?e?e.end=_:e={start:_,end:_}:e&&(F.push(e),e=null),_=_.add(1,"d");v.append("g").selectAll("rect").data(F).enter().append("rect").attr("id",Y=>"exclude-"+Y.start.format("YYYY-MM-DD")).attr("x",Y=>k(Y.start.startOf("day"))+p).attr("y",s.gridLineStartPadding).attr("width",Y=>k(Y.end.endOf("day"))-k(Y.start.startOf("day"))).attr("height",g-y-s.gridLineStartPadding).attr("transform-origin",function(Y,$){return(k(Y.start)+p+.5*(k(Y.end)-k(Y.start))).toString()+"px "+($*f+.5*g).toString()+"px"}).attr("class","exclude-range")}o(X,"drawExcludeDays");function E(f,y,p,T){if(p<=0||f>y)return 1/0;let g=y-f,c=ht.default.duration({[T??"day"]:p}).asMilliseconds();return c<=0?1/0:Math.ceil(g/c)}o(E,"getEstimatedTickCount");function b(f,y,p,T){let g=a.db.getDateFormat(),c=a.db.getAxisFormat(),l;c?l=c:g==="D"?l="%d":l=s.axisFormat??"%Y-%m-%d";let h=ge(k).tickSize(-T+y+s.gridLineStartPadding).tickFormat(Ot(l)),w=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(a.db.getTickInterval()||s.tickInterval);if(w!==null){let i=parseInt(w[1],10);if(isNaN(i)||i<=0)et.warn(`Invalid tick interval value: "${w[1]}". Skipping custom tick interval.`);else{let F=w[2],e=a.db.getWeekday()||s.weekday,_=k.domain(),A=_[0],Y=_[1],$=E(A,Y,i,F);if($>ne)et.warn(`The tick interval "${i}${F}" would generate ${$} ticks, which exceeds the maximum allowed (${ne}). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(F){case"millisecond":h.ticks(Et.every(i));break;case"second":h.ticks(Yt.every(i));break;case"minute":h.ticks($t.every(i));break;case"hour":h.ticks(Lt.every(i));break;case"day":h.ticks(It.every(i));break;case"week":h.ticks(Qe[e].every(i));break;case"month":h.ticks(At.every(i));break}}}if(v.append("g").attr("class","grid").attr("transform","translate("+f+", "+(T-50)+")").call(h).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),a.db.topAxisEnabled()||s.topAxis){let i=pe(k).tickSize(-T+y+s.gridLineStartPadding).tickFormat(Ot(l));if(w!==null){let F=parseInt(w[1],10);if(isNaN(F)||F<=0)et.warn(`Invalid tick interval value: "${w[1]}". Skipping custom tick interval.`);else{let e=w[2],_=a.db.getWeekday()||s.weekday,A=k.domain(),Y=A[0],$=A[1];if(E(Y,$,F,e)<=ne)switch(e){case"millisecond":i.ticks(Et.every(F));break;case"second":i.ticks(Yt.every(F));break;case"minute":i.ticks($t.every(F));break;case"hour":i.ticks(Lt.every(F));break;case"day":i.ticks(It.every(F));break;case"week":i.ticks(Qe[_].every(F));break;case"month":i.ticks(At.every(F));break}}}v.append("g").attr("class","grid").attr("transform","translate("+f+", "+y+")").call(i).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(b,"makeGrid");function d(f,y){let p=0,T=Object.keys(R).map(g=>[g,R[g]]);v.append("g").selectAll("text").data(T).enter().append(function(g){let c=g[0].split(ae.lineBreakRegex),l=-(c.length-1)/2,h=S.createElementNS("http://www.w3.org/2000/svg","text");h.setAttribute("dy",l+"em");for(let[m,w]of c.entries()){let i=S.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttribute("alignment-baseline","central"),i.setAttribute("x","10"),m>0&&i.setAttribute("dy","1em"),i.textContent=w,h.appendChild(i)}return h}).attr("x",10).attr("y",function(g,c){if(c>0)for(let l=0;l` - .mermaid-main-font { - font-family: ${t.fontFamily}; - } - - .exclude-range { - fill: ${t.excludeBkgColor}; - } - - .section { - stroke: none; - opacity: 0.2; - } - - .section0 { - fill: ${t.sectionBkgColor}; - } - - .section2 { - fill: ${t.sectionBkgColor2}; - } - - .section1, - .section3 { - fill: ${t.altSectionBkgColor}; - opacity: 0.2; - } - - .sectionTitle0 { - fill: ${t.titleColor}; - } - - .sectionTitle1 { - fill: ${t.titleColor}; - } - - .sectionTitle2 { - fill: ${t.titleColor}; - } - - .sectionTitle3 { - fill: ${t.titleColor}; - } - - .sectionTitle { - text-anchor: start; - font-family: ${t.fontFamily}; - } - - - /* Grid and axis */ - - .grid .tick { - stroke: ${t.gridColor}; - opacity: 0.8; - shape-rendering: crispEdges; - } - - .grid .tick text { - font-family: ${t.fontFamily}; - fill: ${t.textColor}; - } - - .grid path { - stroke-width: 0; - } - - - /* Today line */ - - .today { - fill: none; - stroke: ${t.todayLineColor}; - stroke-width: 2px; - } - - - /* Task styling */ - - /* Default task */ - - .task { - stroke-width: 2; - } - - .taskText { - text-anchor: middle; - font-family: ${t.fontFamily}; - } - - .taskTextOutsideRight { - fill: ${t.taskTextDarkColor}; - text-anchor: start; - font-family: ${t.fontFamily}; - } - - .taskTextOutsideLeft { - fill: ${t.taskTextDarkColor}; - text-anchor: end; - } - - - /* Special case clickable */ - - .task.clickable { - cursor: pointer; - } - - .taskText.clickable { - cursor: pointer; - fill: ${t.taskTextClickableColor} !important; - font-weight: bold; - } - - .taskTextOutsideLeft.clickable { - cursor: pointer; - fill: ${t.taskTextClickableColor} !important; - font-weight: bold; - } - - .taskTextOutsideRight.clickable { - cursor: pointer; - fill: ${t.taskTextClickableColor} !important; - font-weight: bold; - } - - - /* Specific task settings for the sections*/ - - .taskText0, - .taskText1, - .taskText2, - .taskText3 { - fill: ${t.taskTextColor}; - } - - .task0, - .task1, - .task2, - .task3 { - fill: ${t.taskBkgColor}; - stroke: ${t.taskBorderColor}; - } - - .taskTextOutside0, - .taskTextOutside2 - { - fill: ${t.taskTextOutsideColor}; - } - - .taskTextOutside1, - .taskTextOutside3 { - fill: ${t.taskTextOutsideColor}; - } - - - /* Active task */ - - .active0, - .active1, - .active2, - .active3 { - fill: ${t.activeTaskBkgColor}; - stroke: ${t.activeTaskBorderColor}; - } - - .activeText0, - .activeText1, - .activeText2, - .activeText3 { - fill: ${t.taskTextDarkColor} !important; - } - - - /* Completed task */ - - .done0, - .done1, - .done2, - .done3 { - stroke: ${t.doneTaskBorderColor}; - fill: ${t.doneTaskBkgColor}; - stroke-width: 2; - } - - .doneText0, - .doneText1, - .doneText2, - .doneText3 { - fill: ${t.taskTextDarkColor} !important; - } - - /* Done task text displayed outside the bar sits against the diagram background, - not against the done-task bar, so it must use the outside/contrast color. */ - .doneText0.taskTextOutsideLeft, - .doneText0.taskTextOutsideRight, - .doneText1.taskTextOutsideLeft, - .doneText1.taskTextOutsideRight, - .doneText2.taskTextOutsideLeft, - .doneText2.taskTextOutsideRight, - .doneText3.taskTextOutsideLeft, - .doneText3.taskTextOutsideRight { - fill: ${t.taskTextOutsideColor} !important; - } - - - /* Tasks on the critical line */ - - .crit0, - .crit1, - .crit2, - .crit3 { - stroke: ${t.critBorderColor}; - fill: ${t.critBkgColor}; - stroke-width: 2; - } - - .activeCrit0, - .activeCrit1, - .activeCrit2, - .activeCrit3 { - stroke: ${t.critBorderColor}; - fill: ${t.activeTaskBkgColor}; - stroke-width: 2; - } - - .doneCrit0, - .doneCrit1, - .doneCrit2, - .doneCrit3 { - stroke: ${t.critBorderColor}; - fill: ${t.doneTaskBkgColor}; - stroke-width: 2; - cursor: pointer; - shape-rendering: crispEdges; - } - - .milestone { - transform: rotate(45deg) scale(0.8,0.8); - } - - .milestoneText { - font-style: italic; - } - .doneCritText0, - .doneCritText1, - .doneCritText2, - .doneCritText3 { - fill: ${t.taskTextDarkColor} !important; - } - - /* Done-crit task text outside the bar \u2014 same reasoning as doneText above. */ - .doneCritText0.taskTextOutsideLeft, - .doneCritText0.taskTextOutsideRight, - .doneCritText1.taskTextOutsideLeft, - .doneCritText1.taskTextOutsideRight, - .doneCritText2.taskTextOutsideLeft, - .doneCritText2.taskTextOutsideRight, - .doneCritText3.taskTextOutsideLeft, - .doneCritText3.taskTextOutsideRight { - fill: ${t.taskTextOutsideColor} !important; - } - - .vert { - stroke: ${t.vertLineColor}; - } - - .vertText { - font-size: 15px; - text-anchor: middle; - fill: ${t.vertLineColor} !important; - } - - .activeCritText0, - .activeCritText1, - .activeCritText2, - .activeCritText3 { - fill: ${t.taskTextDarkColor} !important; - } - - .titleText { - text-anchor: middle; - font-size: 18px; - fill: ${t.titleColor||t.textColor}; - font-family: ${t.fontFamily}; - } -`,"getStyles"),ti=Ni;var hn={parser:Ye,db:Ue,renderer:Je,styles:ti};export{hn as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-CBGYKTO2.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-CBGYKTO2.mjs.map deleted file mode 100644 index 0ec65a8..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-CBGYKTO2.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isoWeek.js", "../../../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/customParseFormat.js", "../../../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/advancedFormat.js", "../../../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/duration.js", "../../../src/diagrams/gantt/parser/gantt.jison", "../../../src/diagrams/gantt/ganttDb.js", "../../../src/diagrams/gantt/ganttRenderer.js", "../../../src/diagrams/gantt/styles.js", "../../../src/diagrams/gantt/ganttDiagram.ts"], - "sourcesContent": ["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));", "!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));", "/* 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,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],$V1=[1,26],$V2=[1,27],$V3=[1,28],$V4=[1,29],$V5=[1,30],$V6=[1,31],$V7=[1,32],$V8=[1,33],$V9=[1,34],$Va=[1,9],$Vb=[1,10],$Vc=[1,11],$Vd=[1,12],$Ve=[1,13],$Vf=[1,14],$Vg=[1,15],$Vh=[1,16],$Vi=[1,19],$Vj=[1,20],$Vk=[1,21],$Vl=[1,22],$Vm=[1,23],$Vn=[1,25],$Vo=[1,35];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"gantt\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"weekday\":11,\"weekday_monday\":12,\"weekday_tuesday\":13,\"weekday_wednesday\":14,\"weekday_thursday\":15,\"weekday_friday\":16,\"weekday_saturday\":17,\"weekday_sunday\":18,\"weekend\":19,\"weekend_friday\":20,\"weekend_saturday\":21,\"dateFormat\":22,\"inclusiveEndDates\":23,\"topAxis\":24,\"axisFormat\":25,\"tickInterval\":26,\"excludes\":27,\"includes\":28,\"todayMarker\":29,\"title\":30,\"acc_title\":31,\"acc_title_value\":32,\"acc_descr\":33,\"acc_descr_value\":34,\"acc_descr_multiline_value\":35,\"section\":36,\"clickStatement\":37,\"taskTxt\":38,\"taskData\":39,\"click\":40,\"callbackname\":41,\"callbackargs\":42,\"href\":43,\"clickStatementDebug\":44,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"gantt\",6:\"EOF\",8:\"SPACE\",10:\"NL\",12:\"weekday_monday\",13:\"weekday_tuesday\",14:\"weekday_wednesday\",15:\"weekday_thursday\",16:\"weekday_friday\",17:\"weekday_saturday\",18:\"weekday_sunday\",20:\"weekend_friday\",21:\"weekend_saturday\",22:\"dateFormat\",23:\"inclusiveEndDates\",24:\"topAxis\",25:\"axisFormat\",26:\"tickInterval\",27:\"excludes\",28:\"includes\",29:\"todayMarker\",30:\"title\",31:\"acc_title\",32:\"acc_title_value\",33:\"acc_descr\",34:\"acc_descr_value\",35:\"acc_descr_multiline_value\",36:\"section\",38:\"taskTxt\",39:\"taskData\",40:\"click\",41:\"callbackname\",42:\"callbackargs\",43:\"href\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,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:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\n yy.setWeekday(\"monday\");\nbreak;\ncase 9:\n yy.setWeekday(\"tuesday\");\nbreak;\ncase 10:\n yy.setWeekday(\"wednesday\");\nbreak;\ncase 11:\n yy.setWeekday(\"thursday\");\nbreak;\ncase 12:\n yy.setWeekday(\"friday\");\nbreak;\ncase 13:\n yy.setWeekday(\"saturday\");\nbreak;\ncase 14:\n yy.setWeekday(\"sunday\");\nbreak;\ncase 15:\n yy.setWeekend(\"friday\");\nbreak;\ncase 16:\n yy.setWeekend(\"saturday\");\nbreak;\ncase 17:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 18:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 19:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 20:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 21:\nyy.setTickInterval($$[$0].substr(13));this.$=$$[$0].substr(13);\nbreak;\ncase 22:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 23:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 24:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 27:\nyy.setDiagramTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 28:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 29: case 30:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 31:\n yy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8); \nbreak;\ncase 33:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 34:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 35:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 36:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 37:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 38:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 39:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 40:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 41: case 47:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 42: case 43: case 45:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 44: case 46:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:$V1,13:$V2,14:$V3,15:$V4,16:$V5,17:$V6,18:$V7,19:18,20:$V8,21:$V9,22:$Va,23:$Vb,24:$Vc,25:$Vd,26:$Ve,27:$Vf,28:$Vg,29:$Vh,30:$Vi,31:$Vj,33:$Vk,35:$Vl,36:$Vm,37:24,38:$Vn,40:$Vo},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:36,11:17,12:$V1,13:$V2,14:$V3,15:$V4,16:$V5,17:$V6,18:$V7,19:18,20:$V8,21:$V9,22:$Va,23:$Vb,24:$Vc,25:$Vd,26:$Ve,27:$Vf,28:$Vg,29:$Vh,30:$Vi,31:$Vj,33:$Vk,35:$Vl,36:$Vm,37:24,38:$Vn,40:$Vo},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,17]),o($V0,[2,18]),o($V0,[2,19]),o($V0,[2,20]),o($V0,[2,21]),o($V0,[2,22]),o($V0,[2,23]),o($V0,[2,24]),o($V0,[2,25]),o($V0,[2,26]),o($V0,[2,27]),{32:[1,37]},{34:[1,38]},o($V0,[2,30]),o($V0,[2,31]),o($V0,[2,32]),{39:[1,39]},o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,11]),o($V0,[2,12]),o($V0,[2,13]),o($V0,[2,14]),o($V0,[2,15]),o($V0,[2,16]),{41:[1,40],43:[1,41]},o($V0,[2,4]),o($V0,[2,28]),o($V0,[2,29]),o($V0,[2,33]),o($V0,[2,34],{42:[1,42],43:[1,43]}),o($V0,[2,40],{41:[1,44]}),o($V0,[2,35],{43:[1,45]}),o($V0,[2,36]),o($V0,[2,38],{42:[1,46]}),o($V0,[2,37]),o($V0,[2,39])],\ndefaultActions: {},\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\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 'open_directive'; \nbreak;\ncase 1: this.begin(\"acc_title\");return 31; \nbreak;\ncase 2: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 3: this.begin(\"acc_descr\");return 33; \nbreak;\ncase 4: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 5: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 6: this.popState(); \nbreak;\ncase 7:return \"acc_descr_multiline_value\";\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* do nothing */\nbreak;\ncase 11:return 10;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:this.begin(\"href\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 43;\nbreak;\ncase 17:this.begin(\"callbackname\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 20:return 41;\nbreak;\ncase 21:this.popState();\nbreak;\ncase 22:return 42;\nbreak;\ncase 23:this.begin(\"click\");\nbreak;\ncase 24:this.popState();\nbreak;\ncase 25:return 40;\nbreak;\ncase 26:return 4;\nbreak;\ncase 27:return 22;\nbreak;\ncase 28:return 23;\nbreak;\ncase 29:return 24;\nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 26;\nbreak;\ncase 32:return 28;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 29;\nbreak;\ncase 35:return 12\nbreak;\ncase 36:return 13\nbreak;\ncase 37:return 14\nbreak;\ncase 38:return 15\nbreak;\ncase 39:return 16\nbreak;\ncase 40:return 17\nbreak;\ncase 41:return 18\nbreak;\ncase 42:return 20\nbreak;\ncase 43:return 21\nbreak;\ncase 44:return 'date';\nbreak;\ncase 45:return 30;\nbreak;\ncase 46:return 'accDescription'\nbreak;\ncase 47:return 36;\nbreak;\ncase 48:return 38;\nbreak;\ncase 49:return 39;\nbreak;\ncase 50:return ':';\nbreak;\ncase 51:return 6;\nbreak;\ncase 52:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/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,/^(?:tickInterval\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:weekday\\s+monday\\b)/i,/^(?:weekday\\s+tuesday\\b)/i,/^(?:weekday\\s+wednesday\\b)/i,/^(?:weekday\\s+thursday\\b)/i,/^(?:weekday\\s+friday\\b)/i,/^(?:weekday\\s+saturday\\b)/i,/^(?:weekday\\s+sunday\\b)/i,/^(?:weekend\\s+friday\\b)/i,/^(?:weekend\\s+saturday\\b)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^\\n]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:section\\s[^\\n]+)/i,/^(?:[^:\\n]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[6,7],\"inclusive\":false},\"acc_descr\":{\"rules\":[4],\"inclusive\":false},\"acc_title\":{\"rules\":[2],\"inclusive\":false},\"callbackargs\":{\"rules\":[21,22],\"inclusive\":false},\"callbackname\":{\"rules\":[18,19,20],\"inclusive\":false},\"href\":{\"rules\":[15,16],\"inclusive\":false},\"click\":{\"rules\":[24,25],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,5,8,9,10,11,12,13,14,17,23,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],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { sanitizeUrl } from '@braintree/sanitize-url';\nimport dayjs from 'dayjs';\nimport dayjsIsoWeek from 'dayjs/plugin/isoWeek.js';\nimport dayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport dayjsAdvancedFormat from 'dayjs/plugin/advancedFormat.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport utils from '../../utils.js';\n\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\n\ndayjs.extend(dayjsIsoWeek);\ndayjs.extend(dayjsCustomParseFormat);\ndayjs.extend(dayjsAdvancedFormat);\n\nconst WEEKEND_START_DAY = { friday: 5, saturday: 6 };\nlet dateFormat = '';\nlet axisFormat = '';\nlet tickInterval = undefined;\nlet todayMarker = '';\nlet includes = [];\nlet excludes = [];\nlet links = new Map();\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nlet displayMode = '';\nconst tags = ['active', 'done', 'crit', 'milestone', 'vert'];\nlet funs = [];\nlet inclusiveEndDates = false;\nlet topAxis = false;\nlet weekday = 'sunday';\nlet weekend = 'saturday';\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const clear = function () {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n displayMode = '';\n tickInterval = undefined;\n todayMarker = '';\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = new Map();\n commonClear();\n weekday = 'sunday';\n weekend = 'saturday';\n};\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function () {\n return axisFormat;\n};\n\nexport const setTickInterval = function (txt) {\n tickInterval = txt;\n};\n\nexport const getTickInterval = function () {\n return tickInterval;\n};\n\nexport const setTodayMarker = function (txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function () {\n return todayMarker;\n};\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function () {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function () {\n return inclusiveEndDates;\n};\n\nexport const enableTopAxis = function () {\n topAxis = true;\n};\n\nexport const topAxisEnabled = function () {\n return topAxis;\n};\n\nexport const setDisplayMode = function (txt) {\n displayMode = txt;\n};\n\nexport const getDisplayMode = function () {\n return displayMode;\n};\n\nexport const getDateFormat = function () {\n return dateFormat;\n};\n\nexport const setIncludes = function (txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getIncludes = function () {\n return includes;\n};\nexport const setExcludes = function (txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function () {\n return excludes;\n};\n\nexport const getLinks = function () {\n return links;\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsProcessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nexport const isInvalidDate = function (date, dateFormat, excludes, includes) {\n const formattedDate = date.format(dateFormat.trim());\n const dateOnly = date.format('YYYY-MM-DD');\n\n if (includes.includes(formattedDate) || includes.includes(dateOnly)) {\n return false;\n }\n if (\n excludes.includes('weekends') &&\n (date.isoWeekday() === WEEKEND_START_DAY[weekend] ||\n date.isoWeekday() === WEEKEND_START_DAY[weekend] + 1)\n ) {\n return true;\n }\n if (excludes.includes(date.format('dddd').toLowerCase())) {\n return true;\n }\n return excludes.includes(formattedDate) || excludes.includes(dateOnly);\n};\n\nexport const setWeekday = function (txt) {\n weekday = txt;\n};\n\nexport const getWeekday = function () {\n return weekday;\n};\n\nexport const setWeekend = function (startDay) {\n weekend = startDay;\n};\n\n/**\n * TODO: fully document what this function does and what types it accepts\n *\n * @param {object} task - The task to check.\n * @param {string | Date} task.startTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string | Date} task.endTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n */\nconst checkTaskDates = function (task, dateFormat, excludes, includes) {\n if (!excludes.length || task.manualEndTime) {\n return;\n }\n let startTime;\n if (task.startTime instanceof Date) {\n startTime = dayjs(task.startTime);\n } else {\n startTime = dayjs(task.startTime, dateFormat, true);\n }\n startTime = startTime.add(1, 'd');\n\n let originalEndTime;\n if (task.endTime instanceof Date) {\n originalEndTime = dayjs(task.endTime);\n } else {\n originalEndTime = dayjs(task.endTime, dateFormat, true);\n }\n const [fixedEndTime, renderEndTime] = fixTaskDates(\n startTime,\n originalEndTime,\n dateFormat,\n excludes,\n includes\n );\n task.endTime = fixedEndTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\n/**\n * TODO: what does this function do?\n *\n * @param {dayjs.Dayjs} startTime - The start time.\n * @param {dayjs.Dayjs} endTime - The original end time (will return a different end time if it's invalid).\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n * @returns {[endTime: dayjs.Dayjs, renderEndTime: Date | null]} The new `endTime`, and the end time to render.\n * `renderEndTime` may be `null` if `startTime` is newer than `endTime`.\n */\nconst fixTaskDates = function (startTime, endTime, dateFormat, excludes, includes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes, includes);\n if (invalid) {\n endTime = endTime.add(1, 'd');\n }\n startTime = startTime.add(1, 'd');\n }\n return [endTime, renderEndTime];\n};\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim();\n\n // Helper function to check if format is a timestamp format (x or X)\n const isTimestampFormat = (format) => {\n const trimmedFormat = format.trim();\n return trimmedFormat === 'x' || trimmedFormat === 'X';\n };\n\n // Handle timestamp formats (x, X) with numeric strings\n if (isTimestampFormat(dateFormat) && /^\\d+$/.test(str)) {\n return new Date(Number(str));\n }\n // Test for after\n const afterRePattern = /^after\\s+(?[\\d\\w- ]+)/;\n const afterStatement = afterRePattern.exec(str);\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestTask = null;\n for (const id of afterStatement.groups.ids.split(' ')) {\n let task = findTaskById(id);\n if (task !== undefined && (!latestTask || task.endTime > latestTask.endTime)) {\n latestTask = task;\n }\n }\n\n if (latestTask) {\n return latestTask.endTime;\n }\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n }\n\n // Check for actual date set using dayjs strict parsing\n let mDate = dayjs(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n log.debug('Invalid date:' + str);\n log.debug('With date format:' + dateFormat.trim());\n\n // Timestamp formats can fall back to new Date()\n const d = new Date(str);\n if (\n d === undefined ||\n isNaN(d.getTime()) ||\n // WebKit browsers can mis-parse invalid dates to be ridiculously\n // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304.\n // This can cause virtually infinite loops while rendering, so for the\n // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as\n // invalid.\n d.getFullYear() < -10000 ||\n d.getFullYear() > 10000\n ) {\n throw new Error('Invalid date:' + str);\n }\n return d;\n }\n};\n\n/**\n * Parse a string into the args for `dayjs.add()`.\n *\n * The string have to be compound by a value and a shorthand duration unit. For example `5d`\n * represents 5 days.\n *\n * Please be aware that 1 day may be 23 or 25 hours, if the user lives in an area\n * that has daylight savings time (or even 23.5/24.5 hours in Lord Howe Island!)\n *\n * Shorthand unit supported are:\n *\n * - `y` for years\n * - `M` for months\n * - `w` for weeks\n * - `d` for days\n * - `h` for hours\n * - `s` for seconds\n * - `ms` for milliseconds\n *\n * @param {string} str - A string representing the duration.\n * @returns {[value: number, unit: dayjs.ManipulateType]} Arguments to pass to `dayjs.add()`\n */\nconst parseDuration = function (str) {\n // cspell:disable-next-line\n const statement = /^(\\d+(?:\\.\\d+)?)([Mdhmswy]|ms)$/.exec(str.trim());\n if (statement !== null) {\n return [Number.parseFloat(statement[1]), statement[2]];\n }\n // NaN means an invalid duration\n return [NaN, 'ms'];\n};\n\nconst getEndDate = function (prevTime, dateFormat, str, inclusive = false) {\n str = str.trim();\n\n // test for until\n const untilRePattern = /^until\\s+(?[\\d\\w- ]+)/;\n const untilStatement = untilRePattern.exec(str);\n\n if (untilStatement !== null) {\n // check all until ids and take the earliest\n let earliestTask = null;\n for (const id of untilStatement.groups.ids.split(' ')) {\n let task = findTaskById(id);\n if (task !== undefined && (!earliestTask || task.startTime < earliestTask.startTime)) {\n earliestTask = task;\n }\n }\n\n if (earliestTask) {\n return earliestTask.startTime;\n }\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n }\n\n // check for actual date\n let parsedDate = dayjs(str, dateFormat.trim(), true);\n if (parsedDate.isValid()) {\n if (inclusive) {\n parsedDate = parsedDate.add(1, 'd');\n }\n return parsedDate.toDate();\n }\n\n let endTime = dayjs(prevTime);\n const [durationValue, durationUnit] = parseDuration(str);\n if (!Number.isNaN(durationValue)) {\n const newEndTime = endTime.add(durationValue, durationUnit);\n if (newEndTime.isValid()) {\n endTime = newEndTime;\n }\n }\n return endTime.toDate();\n};\n\nlet taskCnt = 0;\nconst parseId = function (idStr) {\n if (idStr === undefined) {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit, milestone, and vert\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = dayjs(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n\n return task;\n};\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit, milestone, and vert\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId,\n };\n task.endTime = {\n data: data[0],\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0],\n };\n task.endTime = {\n data: data[1],\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1],\n };\n task.endTime = {\n data: data[2],\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: [],\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.vert = taskInfo.vert;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n newTask.vert = taskInfo.vert;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = dayjs(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param _linkStr URL to create a link for\n */\nexport const setLink = function (ids, _linkStr) {\n let linkStr = _linkStr;\n if (getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n links.set(id, linkStr);\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function (id, functionName, functionArgs) {\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.startsWith('\"') && item.endsWith('\"')) {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the\n * task's assigned text\n *\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function (id, callbackFunction) {\n funs.push(\n function () {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n },\n function () {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n }\n );\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n *\n * @param element\n */\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport default {\n getConfig: () => getConfig().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTickInterval,\n getTickInterval,\n setTodayMarker,\n getTodayMarker,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n setDisplayMode,\n getDisplayMode,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n parseDuration,\n isInvalidDate,\n setWeekday,\n getWeekday,\n setWeekend,\n};\n\n/**\n * @param data\n * @param task\n * @param tags\n */\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function (t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n", "import dayjs from 'dayjs';\nimport dayjsDuration from 'dayjs/plugin/duration.js';\nimport { log } from '../../logger.js';\nimport {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n axisTop,\n timeFormat,\n timeMillisecond,\n timeSecond,\n timeMinute,\n timeHour,\n timeDay,\n timeMonday,\n timeTuesday,\n timeWednesday,\n timeThursday,\n timeFriday,\n timeSaturday,\n timeSunday,\n timeMonth,\n} from 'd3';\nimport common from '../common/common.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\n\ndayjs.extend(dayjsDuration);\n\nexport const setConf = function () {\n log.debug('Something is calling, setConf, remove the call');\n};\n\n/**\n * This will map any day of the week that can be set in the `weekday` option to\n * the corresponding d3-time function that is used to calculate the ticks.\n */\nconst mapWeekdayToTimeFunction = {\n monday: timeMonday,\n tuesday: timeTuesday,\n wednesday: timeWednesday,\n thursday: timeThursday,\n friday: timeFriday,\n saturday: timeSaturday,\n sunday: timeSunday,\n};\n\n/**\n * For this issue:\n * https://github.com/mermaid-js/mermaid/issues/1618\n *\n * Finds the number of intersections between tasks that happen at any point in time.\n * Used to figure out how many rows are needed to display the tasks when the display\n * mode is set to 'compact'.\n *\n * @param tasks\n * @param orderOffset\n */\nconst getMaxIntersections = (tasks, orderOffset) => {\n let timeline = [...tasks].map(() => -Infinity);\n let sorted = [...tasks].sort((a, b) => a.startTime - b.startTime || a.order - b.order);\n let maxIntersections = 0;\n for (const element of sorted) {\n for (let j = 0; j < timeline.length; j++) {\n if (element.startTime >= timeline[j]) {\n timeline[j] = element.endTime;\n element.order = j + orderOffset;\n if (j > maxIntersections) {\n maxIntersections = j;\n }\n break;\n }\n }\n }\n\n return maxIntersections;\n};\n\nlet w;\nconst MAX_TICK_COUNT = 10000;\nexport const draw = function (text, id, version, diagObj) {\n const conf = getConfig().gantt;\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (w === undefined) {\n w = 1200;\n }\n\n if (conf.useWidth !== undefined) {\n w = conf.useWidth;\n }\n\n const taskArray = diagObj.db.getTasks();\n\n // Set height based on number of tasks\n\n let categories = [];\n\n for (const element of taskArray) {\n categories.push(element.type);\n }\n\n categories = checkUnique(categories);\n const categoryHeights = {};\n\n let h = 2 * conf.topPadding;\n if (diagObj.db.getDisplayMode() === 'compact' || conf.displayMode === 'compact') {\n const categoryElements = {};\n for (const element of taskArray) {\n if (categoryElements[element.section] === undefined) {\n categoryElements[element.section] = [element];\n } else {\n categoryElements[element.section].push(element);\n }\n }\n\n let intersections = 0;\n for (const category of Object.keys(categoryElements)) {\n const categoryHeight = getMaxIntersections(categoryElements[category], intersections) + 1;\n intersections += categoryHeight;\n h += categoryHeight * (conf.barHeight + conf.barGap);\n categoryHeights[category] = categoryHeight;\n }\n } else {\n h += taskArray.length * (conf.barHeight + conf.barGap);\n for (const category of categories) {\n categoryHeights[category] = taskArray.filter((task) => task.type === category).length;\n }\n }\n\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = root.select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function (d) {\n return d.startTime;\n }),\n max(taskArray, function (d) {\n return d.endTime;\n }),\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n /**\n * @param a\n * @param b\n */\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGantt(taskArray, w, h);\n\n configureSvgSize(svg, h, w, conf.useMaxWidth);\n\n svg\n .append('text')\n .text(diagObj.db.getDiagramTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n /**\n * @param tasks\n * @param pageWidth\n * @param pageHeight\n */\n function makeGantt(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks,\n diagObj.db.getExcludes(),\n diagObj.db.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n /**\n * @param theArray\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param theBarHeight\n * @param theColorScale\n * @param w\n */\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Sort theArray so that tasks with `vert` come last\n theArray.sort((a, b) => (a.vert === b.vert ? 0 : a.vert ? 1 : -1));\n // Get unique task orders. Required to draw the background rects when display mode is compact.\n const uniqueTaskOrderIds = [...new Set(theArray.map((item) => item.order))];\n const uniqueTasks = uniqueTaskOrderIds.map((id) => theArray.find((item) => item.order === id));\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(uniqueTasks)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n })\n .enter();\n\n // Draw the rects representing the tasks\n const rectangles = svg.append('g').selectAll('rect').data(theArray).enter();\n\n const links = diagObj.db.getLinks();\n\n // Render the tasks with links\n // Render the other tasks\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n if (d.vert) {\n return conf.gridLineStartPadding;\n }\n return i * theGap + theTopPad;\n })\n .attr('width', function (d) {\n if (d.milestone) {\n return theBarHeight;\n }\n if (d.vert) {\n return 0.08 * theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', function (d) {\n if (d.vert) {\n return taskArray.length * (conf.barHeight + conf.barGap) + conf.barHeight * 2;\n }\n return theBarHeight;\n })\n .attr('transform-origin', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function (d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n if (d.vert) {\n taskClass = ' vert ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function (d) {\n return d.id + '-text';\n })\n .text(function (d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n endX = startX + theBarHeight;\n }\n\n if (d.vert) {\n return timeScale(d.startTime) + theSidePad;\n }\n\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n if (d.vert) {\n return conf.gridLineStartPadding + taskArray.length * (conf.barHeight + conf.barGap) + 60;\n }\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n if (d.vert) {\n taskType += ' vertText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n\n const securityLevel = getConfig().securityLevel;\n\n // Wrap the tasks in a tag for working links without javascript\n if (securityLevel === 'sandbox') {\n let sandboxElement;\n sandboxElement = select('#i' + id);\n const doc = sandboxElement.nodes()[0].contentDocument;\n\n rectangles\n .filter(function (d) {\n return links.has(d.id);\n })\n .each(function (o) {\n var taskRect = doc.querySelector('#' + o.id);\n var taskText = doc.querySelector('#' + o.id + '-text');\n const oldParent = taskRect.parentNode;\n var Link = doc.createElement('a');\n Link.setAttribute('xlink:href', links.get(o.id));\n Link.setAttribute('target', '_top');\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n /**\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param w\n * @param h\n * @param tasks\n * @param {unknown[]} excludes\n * @param {unknown[]} includes\n */\n function drawExcludeDays(theGap, theTopPad, theSidePad, w, h, tasks, excludes, includes) {\n if (excludes.length === 0 && includes.length === 0) {\n return;\n }\n\n let minTime;\n let maxTime;\n for (const { startTime, endTime } of tasks) {\n if (minTime === undefined || startTime < minTime) {\n minTime = startTime;\n }\n if (maxTime === undefined || endTime > maxTime) {\n maxTime = endTime;\n }\n }\n\n if (!minTime || !maxTime) {\n return;\n }\n\n if (dayjs(maxTime).diff(dayjs(minTime), 'year') > 5) {\n log.warn(\n 'The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.'\n );\n return;\n }\n\n const dateFormat = diagObj.db.getDateFormat();\n const excludeRanges = [];\n let range = null;\n let d = dayjs(minTime);\n while (d.valueOf() <= maxTime) {\n if (diagObj.db.isInvalidDate(d, dateFormat, excludes, includes)) {\n if (!range) {\n range = {\n start: d,\n end: d,\n };\n } else {\n range.end = d;\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d = d.add(1, 'd');\n }\n\n const rectangles = svg.append('g').selectAll('rect').data(excludeRanges).enter();\n\n rectangles\n .append('rect')\n .attr('id', (d) => 'exclude-' + d.start.format('YYYY-MM-DD'))\n .attr('x', (d) => timeScale(d.start.startOf('day')) + theSidePad)\n .attr('y', conf.gridLineStartPadding)\n .attr('width', (d) => timeScale(d.end.endOf('day')) - timeScale(d.start.startOf('day')))\n\n .attr('height', h - theTopPad - conf.gridLineStartPadding)\n .attr('transform-origin', function (d, i) {\n return (\n (\n timeScale(d.start) +\n theSidePad +\n 0.5 * (timeScale(d.end) - timeScale(d.start))\n ).toString() +\n 'px ' +\n (i * theGap + 0.5 * h).toString() +\n 'px'\n );\n })\n .attr('class', 'exclude-range');\n }\n\n /**\n * Calculates the estimated number of ticks based on the time domain and tick interval.\n * Returns the estimated number of ticks as a number.\n * @param {Date} minTime - The minimum time in the domain\n * @param {Date} maxTime - The maximum time in the domain\n * @param {number} every - The interval count (e.g., 1 for \"1second\")\n * @param {string} interval - The interval unit (e.g., \"second\", \"day\")\n * @returns {number} The estimated number of ticks\n */\n function getEstimatedTickCount(minTime, maxTime, every, interval) {\n if (every <= 0 || minTime > maxTime) {\n return Infinity;\n }\n const timeDiffMs = maxTime - minTime;\n const intervalMs = dayjs.duration({ [interval ?? 'day']: every }).asMilliseconds();\n if (intervalMs <= 0) {\n return Infinity;\n }\n return Math.ceil(timeDiffMs / intervalMs);\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function makeGrid(theSidePad, theTopPad, w, h) {\n const dateFormat = diagObj.db.getDateFormat();\n const userAxisFormat = diagObj.db.getAxisFormat();\n let axisFormat;\n if (userAxisFormat) {\n axisFormat = userAxisFormat;\n } else if (dateFormat === 'D') {\n axisFormat = '%d';\n } else {\n axisFormat = conf.axisFormat ?? '%Y-%m-%d';\n }\n\n let bottomXAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(axisFormat));\n\n const reTickInterval = /^([1-9]\\d*)(millisecond|second|minute|hour|day|week|month)$/;\n const resultTickInterval = reTickInterval.exec(\n diagObj.db.getTickInterval() || conf.tickInterval\n );\n\n if (resultTickInterval !== null) {\n const every = parseInt(resultTickInterval[1], 10);\n if (isNaN(every) || every <= 0) {\n log.warn(\n `Invalid tick interval value: \"${resultTickInterval[1]}\". Skipping custom tick interval.`\n );\n // Skip applying custom ticks\n } else {\n const interval = resultTickInterval[2];\n const weekday = diagObj.db.getWeekday() || conf.weekday;\n\n // Get the time domain to check tick count\n const domain = timeScale.domain();\n const minTime = domain[0];\n const maxTime = domain[1];\n const estimatedTicks = getEstimatedTickCount(minTime, maxTime, every, interval);\n\n if (estimatedTicks > MAX_TICK_COUNT) {\n log.warn(\n `The tick interval \"${every}${interval}\" would generate ${estimatedTicks} ticks, ` +\n `which exceeds the maximum allowed (${MAX_TICK_COUNT}). ` +\n `This may indicate an invalid date or time range. Skipping custom tick interval.`\n );\n // D3 will use its default automatic tick generation\n } else {\n switch (interval) {\n case 'millisecond':\n bottomXAxis.ticks(timeMillisecond.every(every));\n break;\n case 'second':\n bottomXAxis.ticks(timeSecond.every(every));\n break;\n case 'minute':\n bottomXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n bottomXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n bottomXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n bottomXAxis.ticks(mapWeekdayToTimeFunction[weekday].every(every));\n break;\n case 'month':\n bottomXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(bottomXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n\n if (diagObj.db.topAxisEnabled() || conf.topAxis) {\n let topXAxis = axisTop(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(axisFormat));\n\n if (resultTickInterval !== null) {\n const every = parseInt(resultTickInterval[1], 10);\n if (isNaN(every) || every <= 0) {\n log.warn(\n `Invalid tick interval value: \"${resultTickInterval[1]}\". Skipping custom tick interval.`\n );\n // Skip applying custom ticks\n } else {\n const interval = resultTickInterval[2];\n const weekday = diagObj.db.getWeekday() || conf.weekday;\n\n // Get the time domain to check tick count\n const domain = timeScale.domain();\n const minTime = domain[0];\n const maxTime = domain[1];\n const estimatedTicks = getEstimatedTickCount(minTime, maxTime, every, interval);\n\n // Only apply custom ticks if the count is reasonable\n if (estimatedTicks <= MAX_TICK_COUNT) {\n switch (interval) {\n case 'millisecond':\n topXAxis.ticks(timeMillisecond.every(every));\n break;\n case 'second':\n topXAxis.ticks(timeSecond.every(every));\n break;\n case 'minute':\n topXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n topXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n topXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n topXAxis.ticks(mapWeekdayToTimeFunction[weekday].every(every));\n break;\n case 'month':\n topXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + theTopPad + ')')\n .call(topXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10);\n // .attr('dy', '1em');\n }\n }\n\n /**\n * @param theGap\n * @param theTopPad\n */\n function vertLabels(theGap, theTopPad) {\n let prevGap = 0;\n\n const numOccurrences = Object.keys(categoryHeights).map((d) => [d, categoryHeights[d]]);\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurrences)\n .enter()\n .append(function (d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (const [j, row] of rows.entries()) {\n const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) {\n tspan.setAttribute('dy', '1em');\n }\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurrences[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('font-size', conf.sectionFontSize)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d[0] === category) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = diagObj.db.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n /**\n * From this stack exchange question:\n * http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n *\n * @param arr\n */\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n", "const getStyles = (options) =>\n `\n .mermaid-main-font {\n font-family: ${options.fontFamily};\n }\n\n .exclude-range {\n fill: ${options.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-family: ${options.fontFamily};\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n }\n\n .grid .tick text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: ${options.fontFamily};\n }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n font-family: ${options.fontFamily};\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n }\n\n\n /* Special case clickable */\n\n .task.clickable {\n cursor: pointer;\n }\n\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n /* Done task text displayed outside the bar sits against the diagram background,\n not against the done-task bar, so it must use the outside/contrast color. */\n .doneText0.taskTextOutsideLeft,\n .doneText0.taskTextOutsideRight,\n .doneText1.taskTextOutsideLeft,\n .doneText1.taskTextOutsideRight,\n .doneText2.taskTextOutsideLeft,\n .doneText2.taskTextOutsideRight,\n .doneText3.taskTextOutsideLeft,\n .doneText3.taskTextOutsideRight {\n fill: ${options.taskTextOutsideColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n /* Done-crit task text outside the bar \u2014 same reasoning as doneText above. */\n .doneCritText0.taskTextOutsideLeft,\n .doneCritText0.taskTextOutsideRight,\n .doneCritText1.taskTextOutsideLeft,\n .doneCritText1.taskTextOutsideRight,\n .doneCritText2.taskTextOutsideLeft,\n .doneCritText2.taskTextOutsideRight,\n .doneCritText3.taskTextOutsideLeft,\n .doneCritText3.taskTextOutsideRight {\n fill: ${options.taskTextOutsideColor} !important;\n }\n\n .vert {\n stroke: ${options.vertLineColor};\n }\n\n .vertText {\n font-size: 15px;\n text-anchor: middle;\n fill: ${options.vertLineColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.titleColor || options.textColor};\n font-family: ${options.fontFamily};\n }\n`;\n\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport ganttParser from './parser/gantt.jison';\nimport ganttDb from './ganttDb.js';\nimport ganttRenderer from './ganttRenderer.js';\nimport ganttStyles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n parser: ganttParser,\n db: ganttDb,\n renderer: ganttRenderer,\n styles: ganttStyles,\n};\n"], - "mappings": "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,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAE7B,EAAEK,EAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAE7B,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,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", - "names": ["require_isoWeek", "__commonJSMin", "exports", "module", "e", "t", "i", "s", "a", "__name", "d", "n", "o", "r", "u", "require_customParseFormat", "__commonJSMin", "exports", "module", "e", "t", "n", "r", "i", "o", "s", "a", "__name", "f", "h", "u", "d", "c", "l", "m", "M", "Y", "p", "v", "D", "w", "g", "y", "L", "require_advancedFormat", "__commonJSMin", "exports", "module", "e", "t", "n", "r", "s", "a", "require_duration", "__commonJSMin", "exports", "module", "s", "n", "i", "e", "r", "o", "u", "d", "a", "h", "c", "__name", "t", "g", "f", "m", "l", "$", "y", "v", "p", "parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "gantt_default", "parser", "import_sanitize_url", "import_dayjs", "import_isoWeek", "import_customParseFormat", "import_advancedFormat", "dayjs", "dayjsIsoWeek", "dayjsCustomParseFormat", "dayjsAdvancedFormat", "WEEKEND_START_DAY", "dateFormat", "axisFormat", "tickInterval", "todayMarker", "includes", "excludes", "links", "sections", "tasks", "currentSection", "displayMode", "tags", "funs", "inclusiveEndDates", "topAxis", "weekday", "weekend", "lastOrder", "clear", "__name", "taskCnt", "lastTask", "lastTaskID", "rawTasks", "setAxisFormat", "txt", "getAxisFormat", "setTickInterval", "getTickInterval", "setTodayMarker", "getTodayMarker", "setDateFormat", "enableInclusiveEndDates", "endDatesAreInclusive", "enableTopAxis", "topAxisEnabled", "setDisplayMode", "getDisplayMode", "getDateFormat", "setIncludes", "getIncludes", "setExcludes", "getExcludes", "getLinks", "addSection", "getSections", "getTasks", "allItemsProcessed", "compileTasks", "maxDepth", "iterationCount", "isInvalidDate", "date", "formattedDate", "dateOnly", "setWeekday", "getWeekday", "setWeekend", "startDay", "checkTaskDates", "task", "startTime", "originalEndTime", "fixedEndTime", "renderEndTime", "fixTaskDates", "endTime", "invalid", "getStartDate", "prevTime", "str", "format", "trimmedFormat", "afterStatement", "latestTask", "id", "findTaskById", "today", "mDate", "log", "d", "parseDuration", "statement", "getEndDate", "inclusive", "untilStatement", "earliestTask", "parsedDate", "durationValue", "durationUnit", "newEndTime", "parseId", "idStr", "compileData", "prevTask", "dataStr", "ds", "data", "getTaskTags", "i", "endTimeData", "parseData", "prevTaskId", "taskDb", "addTask", "descr", "rawTask", "taskInfo", "pos", "addTaskOrg", "newTask", "compileTask", "allProcessed", "setLink", "ids", "_linkStr", "linkStr", "getConfig", "pushFun", "setClass", "className", "setClickFun", "functionName", "functionArgs", "argList", "item", "utils_default", "callbackFunction", "elem", "setClickEvent", "bindFunctions", "element", "fun", "ganttDb_default", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "setAccDescription", "getAccDescription", "matchFound", "t", "pattern", "regex", "import_dayjs", "import_duration", "dayjs", "dayjsDuration", "setConf", "__name", "log", "mapWeekdayToTimeFunction", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "timeSunday", "getMaxIntersections", "tasks", "orderOffset", "timeline", "sorted", "a", "b", "maxIntersections", "element", "j", "w", "MAX_TICK_COUNT", "draw", "text", "id", "version", "diagObj", "conf", "getConfig", "securityLevel", "sandboxElement", "select_default", "root", "doc", "elem", "taskArray", "categories", "checkUnique", "categoryHeights", "h", "categoryElements", "intersections", "category", "categoryHeight", "task", "svg", "timeScale", "time", "min", "d", "max", "taskCompare", "taskA", "taskB", "result", "makeGantt", "configureSvgSize", "pageWidth", "pageHeight", "barHeight", "gap", "topPadding", "leftPadding", "colorScale", "linear", "hcl_default", "drawExcludeDays", "makeGrid", "drawRects", "vertLabels", "drawToday", "theArray", "theGap", "theTopPad", "theSidePad", "theBarHeight", "theColorScale", "uniqueTasks", "item", "i", "rectangles", "links", "res", "classStr", "secNum", "taskClass", "startX", "endX", "textWidth", "taskType", "o", "taskRect", "taskText", "oldParent", "Link", "excludes", "includes", "minTime", "maxTime", "startTime", "endTime", "dateFormat", "excludeRanges", "range", "getEstimatedTickCount", "every", "interval", "timeDiffMs", "intervalMs", "userAxisFormat", "axisFormat", "bottomXAxis", "axisBottom", "timeFormat", "resultTickInterval", "weekday", "domain", "estimatedTicks", "millisecond", "second", "timeMinute", "timeHour", "timeDay", "timeMonth", "topXAxis", "axisTop", "prevGap", "numOccurrences", "rows", "common_default", "dy", "svgLabel", "row", "tspan", "todayMarker", "todayG", "today", "todayLine", "arr", "hash", "l", "ganttRenderer_default", "getStyles", "__name", "options", "styles_default", "diagram", "gantt_default", "ganttDb_default", "ganttRenderer_default", "styles_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-JCBTUEKG.mjs b/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-JCBTUEKG.mjs new file mode 100644 index 0000000..899e921 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-JCBTUEKG.mjs @@ -0,0 +1,292 @@ +import{p as $e}from"./chunk-QA3QBVWF.mjs";import{a as ii}from"./chunk-KNLZD3CH.mjs";import{G as oe,O as ce,S as le,T as ue,U as de,V as fe,W as he,X as me,Y as ke,_ as nt}from"./chunk-67TQ5CYL.mjs";import{A as Me,B as Ot,C as Ft,D as Ee,a as ae,b as et,d as ye,e as pe,f as ge,g as xe,h as pt,i as be,o as Te,p as $t,q as Yt,r as Lt,s as It,t as At,u as ve,v as we,w as _e,x as De,y as Se,z as Ce}from"./chunk-7W6UQGC5.mjs";import{a as o,b as wt,d as ot}from"./chunk-AQ6EADP3.mjs";var Le=wt((Pt,Vt)=>{"use strict";(function(t,i){typeof Pt=="object"&&typeof Vt<"u"?Vt.exports=i():typeof define=="function"&&define.amd?define(i):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=i()})(Pt,(function(){"use strict";var t="day";return function(i,a,r){var s=o(function(D){return D.add(4-D.isoWeekday(),t)},"a"),u=a.prototype;u.isoWeekYear=function(){return s(this).year()},u.isoWeek=function(D){if(!this.$utils().u(D))return this.add(7*(D-this.isoWeek()),t);var S,P,C,W,R=s(this),z=(S=this.isoWeekYear(),P=this.$u,C=(P?r.utc:r)().year(S).startOf("year"),W=4-C.isoWeekday(),C.isoWeekday()>4&&(W+=7),C.add(W,t));return R.diff(z,"week")+1},u.isoWeekday=function(D){return this.$utils().u(D)?this.day()||7:this.day(this.day()%7?D:D-7)};var x=u.startOf;u.startOf=function(D,S){var P=this.$utils(),C=!!P.u(S)||S;return P.p(D)==="isoweek"?C?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):x.bind(this)(D,S)}}}))});var Ie=wt((Nt,zt)=>{"use strict";(function(t,i){typeof Nt=="object"&&typeof zt<"u"?zt.exports=i():typeof define=="function"&&define.amd?define(i):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=i()})(Nt,(function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},i=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,a=/\d/,r=/\d\d/,s=/\d\d?/,u=/\d*[^-_:/,()\s\d]+/,x={},D=o(function(v){return(v=+v)+(v>68?1900:2e3)},"a"),S=o(function(v){return function(k){this[v]=+k}},"f"),P=[/[+-]\d\d:?(\d\d)?|Z/,function(v){(this.zone||(this.zone={})).offset=(function(k){if(!k||k==="Z")return 0;var O=k.match(/([+-]|\d\d)/g),L=60*O[1]+(+O[2]||0);return L===0?0:O[0]==="+"?-L:L})(v)}],C=o(function(v){var k=x[v];return k&&(k.indexOf?k:k.s.concat(k.f))},"u"),W=o(function(v,k){var O,L=x.meridiem;if(L){for(var G=1;G<=24;G+=1)if(v.indexOf(L(G,0,k))>-1){O=G>12;break}}else O=v===(k?"pm":"PM");return O},"d"),R={A:[u,function(v){this.afternoon=W(v,!1)}],a:[u,function(v){this.afternoon=W(v,!0)}],Q:[a,function(v){this.month=3*(v-1)+1}],S:[a,function(v){this.milliseconds=100*+v}],SS:[r,function(v){this.milliseconds=10*+v}],SSS:[/\d{3}/,function(v){this.milliseconds=+v}],s:[s,S("seconds")],ss:[s,S("seconds")],m:[s,S("minutes")],mm:[s,S("minutes")],H:[s,S("hours")],h:[s,S("hours")],HH:[s,S("hours")],hh:[s,S("hours")],D:[s,S("day")],DD:[r,S("day")],Do:[u,function(v){var k=x.ordinal,O=v.match(/\d+/);if(this.day=O[0],k)for(var L=1;L<=31;L+=1)k(L).replace(/\[|\]/g,"")===v&&(this.day=L)}],w:[s,S("week")],ww:[r,S("week")],M:[s,S("month")],MM:[r,S("month")],MMM:[u,function(v){var k=C("months"),O=(C("monthsShort")||k.map((function(L){return L.slice(0,3)}))).indexOf(v)+1;if(O<1)throw new Error;this.month=O%12||O}],MMMM:[u,function(v){var k=C("months").indexOf(v)+1;if(k<1)throw new Error;this.month=k%12||k}],Y:[/[+-]?\d+/,S("year")],YY:[r,function(v){this.year=D(v)}],YYYY:[/\d{4}/,S("year")],Z:P,ZZ:P};function z(v){var k,O;k=v,O=x&&x.formats;for(var L=(v=k.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(I,f,y){var p=y&&y.toUpperCase();return f||O[y]||t[y]||O[p].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(T,g,c){return g||c.slice(1)}))}))).match(i),G=L.length,X=0;X-1)return new Date((h==="X"?1e3:1)*l);var n=z(h)(l),F=n.year,e=n.month,_=n.day,A=n.hours,$=n.minutes,Y=n.seconds,H=n.milliseconds,V=n.zone,N=n.week,U=new Date,st=_||(F||e?1:U.getDate()),rt=F||U.getFullYear(),lt=0;F&&!e||(lt=e>0?e-1:U.getMonth());var kt,yt=A||0,j=$||0,at=Y||0,K=H||0;return V?new Date(Date.UTC(rt,lt,st,yt,j,at,K+60*V.offset*1e3)):m?new Date(Date.UTC(rt,lt,st,yt,j,at,K)):(kt=new Date(rt,lt,st,yt,j,at,K),N&&(kt=w(kt).week(N).toDate()),kt)}catch{return new Date("")}})(E,M,b,O),this.init(),p&&p!==!0&&(this.$L=this.locale(p).$L),y&&E!=this.format(M)&&(this.$d=new Date("")),x={}}else if(M instanceof Array)for(var T=M.length,g=1;g<=T;g+=1){d[1]=M[g-1];var c=O.apply(this,d);if(c.isValid()){this.$d=c.$d,this.$L=c.$L,this.init();break}g===T&&(this.$d=new Date(""))}else G.call(this,X)}}}))});var Ae=wt((Rt,Ht)=>{"use strict";(function(t,i){typeof Rt=="object"&&typeof Ht<"u"?Ht.exports=i():typeof define=="function"&&define.amd?define(i):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=i()})(Rt,(function(){"use strict";return function(t,i){var a=i.prototype,r=a.format;a.format=function(s){var u=this,x=this.$locale();if(!this.isValid())return r.bind(this)(s);var D=this.$utils(),S=(s||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(P){switch(P){case"Q":return Math.ceil((u.$M+1)/3);case"Do":return x.ordinal(u.$D);case"gggg":return u.weekYear();case"GGGG":return u.isoWeekYear();case"wo":return x.ordinal(u.week(),"W");case"w":case"ww":return D.s(u.week(),P==="w"?1:2,"0");case"W":case"WW":return D.s(u.isoWeek(),P==="W"?1:2,"0");case"k":case"kk":return D.s(String(u.$H===0?24:u.$H),P==="k"?1:2,"0");case"X":return Math.floor(u.$d.getTime()/1e3);case"x":return u.$d.getTime();case"z":return"["+u.offsetName()+"]";case"zzz":return"["+u.offsetName("long")+"]";default:return P}}));return r.bind(this)(S)}}}))});var Qe=wt((ie,ne)=>{"use strict";(function(t,i){typeof ie=="object"&&typeof ne<"u"?ne.exports=i():typeof define=="function"&&define.amd?define(i):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_duration=i()})(ie,(function(){"use strict";var t,i,a=1e3,r=6e4,s=36e5,u=864e5,x=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,D=31536e6,S=2628e6,P=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,C={years:D,months:S,days:u,hours:s,minutes:r,seconds:a,milliseconds:1,weeks:6048e5},W=o(function(E){return E instanceof G},"c"),R=o(function(E,b,d){return new G(E,d,b.$l)},"f"),z=o(function(E){return i.p(E)+"s"},"m"),v=o(function(E){return E<0},"l"),k=o(function(E){return v(E)?Math.ceil(E):Math.floor(E)},"$"),O=o(function(E){return Math.abs(E)},"y"),L=o(function(E,b){return E?v(E)?{negative:!0,format:""+O(E)+b}:{negative:!1,format:""+E+b}:{negative:!1,format:""}},"v"),G=(function(){function E(d,M,I){var f=this;if(this.$d={},this.$l=I,d===void 0&&(this.$ms=0,this.parseFromMilliseconds()),M)return R(d*C[z(M)],this);if(typeof d=="number")return this.$ms=d,this.parseFromMilliseconds(),this;if(typeof d=="object")return Object.keys(d).forEach((function(T){f.$d[z(T)]=d[T]})),this.calMilliseconds(),this;if(typeof d=="string"){var y=d.match(P);if(y){var p=y.slice(2).map((function(T){return T!=null?Number(T):0}));return this.$d.years=p[0],this.$d.months=p[1],this.$d.weeks=p[2],this.$d.days=p[3],this.$d.hours=p[4],this.$d.minutes=p[5],this.$d.seconds=p[6],this.calMilliseconds(),this}}return this}o(E,"l");var b=E.prototype;return b.calMilliseconds=function(){var d=this;this.$ms=Object.keys(this.$d).reduce((function(M,I){return M+(d.$d[I]||0)*C[I]}),0)},b.parseFromMilliseconds=function(){var d=this.$ms;this.$d.years=k(d/D),d%=D,this.$d.months=k(d/S),d%=S,this.$d.days=k(d/u),d%=u,this.$d.hours=k(d/s),d%=s,this.$d.minutes=k(d/r),d%=r,this.$d.seconds=k(d/a),d%=a,this.$d.milliseconds=d},b.toISOString=function(){var d=L(this.$d.years,"Y"),M=L(this.$d.months,"M"),I=+this.$d.days||0;this.$d.weeks&&(I+=7*this.$d.weeks);var f=L(I,"D"),y=L(this.$d.hours,"H"),p=L(this.$d.minutes,"M"),T=this.$d.seconds||0;this.$d.milliseconds&&(T+=this.$d.milliseconds/1e3,T=Math.round(1e3*T)/1e3);var g=L(T,"S"),c=d.negative||M.negative||f.negative||y.negative||p.negative||g.negative,l=y.format||p.format||g.format?"T":"",h=(c?"-":"")+"P"+d.format+M.format+f.format+l+y.format+p.format+g.format;return h==="P"||h==="-P"?"P0D":h},b.toJSON=function(){return this.toISOString()},b.format=function(d){var M=d||"YYYY-MM-DDTHH:mm:ss",I={Y:this.$d.years,YY:i.s(this.$d.years,2,"0"),YYYY:i.s(this.$d.years,4,"0"),M:this.$d.months,MM:i.s(this.$d.months,2,"0"),D:this.$d.days,DD:i.s(this.$d.days,2,"0"),H:this.$d.hours,HH:i.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:i.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:i.s(this.$d.seconds,2,"0"),SSS:i.s(this.$d.milliseconds,3,"0")};return M.replace(x,(function(f,y){return y||String(I[f])}))},b.as=function(d){return this.$ms/C[z(d)]},b.get=function(d){var M=this.$ms,I=z(d);return I==="milliseconds"?M%=1e3:M=I==="weeks"?k(M/C[I]):this.$d[I],M||0},b.add=function(d,M,I){var f;return f=M?d*C[z(M)]:W(d)?d.$ms:R(d,this).$ms,R(this.$ms+f*(I?-1:1),this)},b.subtract=function(d,M){return this.add(d,M,!0)},b.locale=function(d){var M=this.clone();return M.$l=d,M},b.clone=function(){return R(this.$ms,this)},b.humanize=function(d){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!d)},b.valueOf=function(){return this.asMilliseconds()},b.milliseconds=function(){return this.get("milliseconds")},b.asMilliseconds=function(){return this.as("milliseconds")},b.seconds=function(){return this.get("seconds")},b.asSeconds=function(){return this.as("seconds")},b.minutes=function(){return this.get("minutes")},b.asMinutes=function(){return this.as("minutes")},b.hours=function(){return this.get("hours")},b.asHours=function(){return this.as("hours")},b.days=function(){return this.get("days")},b.asDays=function(){return this.as("days")},b.weeks=function(){return this.get("weeks")},b.asWeeks=function(){return this.as("weeks")},b.months=function(){return this.get("months")},b.asMonths=function(){return this.as("months")},b.years=function(){return this.get("years")},b.asYears=function(){return this.as("years")},E})(),X=o(function(E,b,d){return E.add(b.years()*d,"y").add(b.months()*d,"M").add(b.days()*d,"d").add(b.hours()*d,"h").add(b.minutes()*d,"m").add(b.seconds()*d,"s").add(b.milliseconds()*d,"ms")},"p");return function(E,b,d){t=d,i=d().$utils(),d.duration=function(f,y){var p=d.locale();return R(f,{$l:p},y)},d.isDuration=W;var M=b.prototype.add,I=b.prototype.subtract;b.prototype.add=function(f,y){return W(f)?X(this,f,1):M.bind(this)(f,y)},b.prototype.subtract=function(f,y){return W(f)?X(this,f,-1):I.bind(this)(f,y)}}}))});var Wt=(function(){var t=o(function(g,c,l,h){for(l=l||{},h=g.length;h--;l[g[h]]=c);return l},"o"),i=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],a=[1,26],r=[1,27],s=[1,28],u=[1,29],x=[1,30],D=[1,31],S=[1,32],P=[1,33],C=[1,34],W=[1,9],R=[1,10],z=[1,11],v=[1,12],k=[1,13],O=[1,14],L=[1,15],G=[1,16],X=[1,19],E=[1,20],b=[1,21],d=[1,22],M=[1,23],I=[1,25],f=[1,35],y={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(c,l,h,m,w,n,F){var e=n.length-1;switch(w){case 1:return n[e-1];case 2:this.$=[];break;case 3:n[e-1].push(n[e]),this.$=n[e-1];break;case 4:case 5:this.$=n[e];break;case 6:case 7:this.$=[];break;case 8:m.setWeekday("monday");break;case 9:m.setWeekday("tuesday");break;case 10:m.setWeekday("wednesday");break;case 11:m.setWeekday("thursday");break;case 12:m.setWeekday("friday");break;case 13:m.setWeekday("saturday");break;case 14:m.setWeekday("sunday");break;case 15:m.setWeekend("friday");break;case 16:m.setWeekend("saturday");break;case 17:m.setDateFormat(n[e].substr(11)),this.$=n[e].substr(11);break;case 18:m.enableInclusiveEndDates(),this.$=n[e].substr(18);break;case 19:m.TopAxis(),this.$=n[e].substr(8);break;case 20:m.setAxisFormat(n[e].substr(11)),this.$=n[e].substr(11);break;case 21:m.setTickInterval(n[e].substr(13)),this.$=n[e].substr(13);break;case 22:m.setExcludes(n[e].substr(9)),this.$=n[e].substr(9);break;case 23:m.setIncludes(n[e].substr(9)),this.$=n[e].substr(9);break;case 24:m.setTodayMarker(n[e].substr(12)),this.$=n[e].substr(12);break;case 27:m.setDiagramTitle(n[e].substr(6)),this.$=n[e].substr(6);break;case 28:this.$=n[e].trim(),m.setAccTitle(this.$);break;case 29:case 30:this.$=n[e].trim(),m.setAccDescription(this.$);break;case 31:m.addSection(n[e].substr(8)),this.$=n[e].substr(8);break;case 33:m.addTask(n[e-1],n[e]),this.$="task";break;case 34:this.$=n[e-1],m.setClickEvent(n[e-1],n[e],null);break;case 35:this.$=n[e-2],m.setClickEvent(n[e-2],n[e-1],n[e]);break;case 36:this.$=n[e-2],m.setClickEvent(n[e-2],n[e-1],null),m.setLink(n[e-2],n[e]);break;case 37:this.$=n[e-3],m.setClickEvent(n[e-3],n[e-2],n[e-1]),m.setLink(n[e-3],n[e]);break;case 38:this.$=n[e-2],m.setClickEvent(n[e-2],n[e],null),m.setLink(n[e-2],n[e-1]);break;case 39:this.$=n[e-3],m.setClickEvent(n[e-3],n[e-1],n[e]),m.setLink(n[e-3],n[e-2]);break;case 40:this.$=n[e-1],m.setLink(n[e-1],n[e]);break;case 41:case 47:this.$=n[e-1]+" "+n[e];break;case 42:case 43:case 45:this.$=n[e-2]+" "+n[e-1]+" "+n[e];break;case 44:case 46:this.$=n[e-3]+" "+n[e-2]+" "+n[e-1]+" "+n[e];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(i,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:a,13:r,14:s,15:u,16:x,17:D,18:S,19:18,20:P,21:C,22:W,23:R,24:z,25:v,26:k,27:O,28:L,29:G,30:X,31:E,33:b,35:d,36:M,37:24,38:I,40:f},t(i,[2,7],{1:[2,1]}),t(i,[2,3]),{9:36,11:17,12:a,13:r,14:s,15:u,16:x,17:D,18:S,19:18,20:P,21:C,22:W,23:R,24:z,25:v,26:k,27:O,28:L,29:G,30:X,31:E,33:b,35:d,36:M,37:24,38:I,40:f},t(i,[2,5]),t(i,[2,6]),t(i,[2,17]),t(i,[2,18]),t(i,[2,19]),t(i,[2,20]),t(i,[2,21]),t(i,[2,22]),t(i,[2,23]),t(i,[2,24]),t(i,[2,25]),t(i,[2,26]),t(i,[2,27]),{32:[1,37]},{34:[1,38]},t(i,[2,30]),t(i,[2,31]),t(i,[2,32]),{39:[1,39]},t(i,[2,8]),t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),t(i,[2,12]),t(i,[2,13]),t(i,[2,14]),t(i,[2,15]),t(i,[2,16]),{41:[1,40],43:[1,41]},t(i,[2,4]),t(i,[2,28]),t(i,[2,29]),t(i,[2,33]),t(i,[2,34],{42:[1,42],43:[1,43]}),t(i,[2,40],{41:[1,44]}),t(i,[2,35],{43:[1,45]}),t(i,[2,36]),t(i,[2,38],{42:[1,46]}),t(i,[2,37]),t(i,[2,39])],defaultActions:{},parseError:o(function(c,l){if(l.recoverable)this.trace(c);else{var h=new Error(c);throw h.hash=l,h}},"parseError"),parse:o(function(c){var l=this,h=[0],m=[],w=[null],n=[],F=this.table,e="",_=0,A=0,$=0,Y=2,H=1,V=n.slice.call(arguments,1),N=Object.create(this.lexer),U={yy:{}};for(var st in this.yy)Object.prototype.hasOwnProperty.call(this.yy,st)&&(U.yy[st]=this.yy[st]);N.setInput(c,U.yy),U.yy.lexer=N,U.yy.parser=this,typeof N.yylloc>"u"&&(N.yylloc={});var rt=N.yylloc;n.push(rt);var lt=N.options&&N.options.ranges;typeof U.yy.parseError=="function"?this.parseError=U.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function kt(q){h.length=h.length-2*q,w.length=w.length-q,n.length=n.length-q}o(kt,"popStack");function yt(){var q;return q=m.pop()||N.lex()||H,typeof q!="number"&&(q instanceof Array&&(m=q,q=m.pop()),q=l.symbols_[q]||q),q}o(yt,"lex");for(var j,at,K,Z,Hi,Mt,ut={},Tt,tt,re,vt;;){if(K=h[h.length-1],this.defaultActions[K]?Z=this.defaultActions[K]:((j===null||typeof j>"u")&&(j=yt()),Z=F[K]&&F[K][j]),typeof Z>"u"||!Z.length||!Z[0]){var Et="";vt=[];for(Tt in F[K])this.terminals_[Tt]&&Tt>Y&&vt.push("'"+this.terminals_[Tt]+"'");N.showPosition?Et="Parse error on line "+(_+1)+`: +`+N.showPosition()+` +Expecting `+vt.join(", ")+", got '"+(this.terminals_[j]||j)+"'":Et="Parse error on line "+(_+1)+": Unexpected "+(j==H?"end of input":"'"+(this.terminals_[j]||j)+"'"),this.parseError(Et,{text:N.match,token:this.terminals_[j]||j,line:N.yylineno,loc:rt,expected:vt})}if(Z[0]instanceof Array&&Z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+K+", token: "+j);switch(Z[0]){case 1:h.push(j),w.push(N.yytext),n.push(N.yylloc),h.push(Z[1]),j=null,at?(j=at,at=null):(A=N.yyleng,e=N.yytext,_=N.yylineno,rt=N.yylloc,$>0&&$--);break;case 2:if(tt=this.productions_[Z[1]][1],ut.$=w[w.length-tt],ut._$={first_line:n[n.length-(tt||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(tt||1)].first_column,last_column:n[n.length-1].last_column},lt&&(ut._$.range=[n[n.length-(tt||1)].range[0],n[n.length-1].range[1]]),Mt=this.performAction.apply(ut,[e,A,_,U.yy,Z[1],w,n].concat(V)),typeof Mt<"u")return Mt;tt&&(h=h.slice(0,-1*tt*2),w=w.slice(0,-1*tt),n=n.slice(0,-1*tt)),h.push(this.productions_[Z[1]][0]),w.push(ut.$),n.push(ut._$),re=F[h[h.length-2]][h[h.length-1]],h.push(re);break;case 3:return!0}}return!0},"parse")},p=(function(){var g={EOF:1,parseError:o(function(l,h){if(this.yy.parser)this.yy.parser.parseError(l,h);else throw new Error(l)},"parseError"),setInput:o(function(c,l){return this.yy=l||this.yy||{},this._input=c,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var c=this._input[0];this.yytext+=c,this.yyleng++,this.offset++,this.match+=c,this.matched+=c;var l=c.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),c},"input"),unput:o(function(c){var l=c.length,h=c.split(/(?:\r\n?|\n)/g);this._input=c+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var m=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),h.length-1&&(this.yylineno-=h.length-1);var w=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:h?(h.length===m.length?this.yylloc.first_column:0)+m[m.length-h.length].length-h[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[w[0],w[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(c){this.unput(this.match.slice(c))},"less"),pastInput:o(function(){var c=this.matched.substr(0,this.matched.length-this.match.length);return(c.length>20?"...":"")+c.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var c=this.match;return c.length<20&&(c+=this._input.substr(0,20-c.length)),(c.substr(0,20)+(c.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var c=this.pastInput(),l=new Array(c.length+1).join("-");return c+this.upcomingInput()+` +`+l+"^"},"showPosition"),test_match:o(function(c,l){var h,m,w;if(this.options.backtrack_lexer&&(w={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(w.yylloc.range=this.yylloc.range.slice(0))),m=c[0].match(/(?:\r\n?|\n).*/g),m&&(this.yylineno+=m.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:m?m[m.length-1].length-m[m.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+c[0].length},this.yytext+=c[0],this.match+=c[0],this.matches=c,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(c[0].length),this.matched+=c[0],h=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),h)return h;if(this._backtrack){for(var n in w)this[n]=w[n];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var c,l,h,m;this._more||(this.yytext="",this.match="");for(var w=this._currentRules(),n=0;nl[0].length)){if(l=h,m=n,this.options.backtrack_lexer){if(c=this.test_match(h,w[n]),c!==!1)return c;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(c=this.test_match(l,w[m]),c!==!1?c:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var l=this.next();return l||this.lex()},"lex"),begin:o(function(l){this.conditionStack.push(l)},"begin"),popState:o(function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},"topState"),pushState:o(function(l){this.begin(l)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(l,h,m,w){var n=w;switch(m){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/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,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,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],inclusive:!0}}};return g})();y.lexer=p;function T(){this.yy={}}return o(T,"Parser"),T.prototype=y,y.Parser=T,new T})();Wt.parser=Wt;var Ye=Wt;var We=ot(ii(),1),Q=ot(ae(),1),Pe=ot(Le(),1),Ve=ot(Ie(),1),Ne=ot(Ae(),1);Q.default.extend(Pe.default);Q.default.extend(Ve.default);Q.default.extend(Ne.default);var Oe={friday:5,saturday:6},J="",Xt="",Ut,Zt="",gt=[],xt=[],qt=new Map,Qt=[],St=[],ht="",Kt="",ze=["active","done","crit","milestone","vert"],Jt=[],dt="",bt=!1,te=!1,ee="sunday",Ct="saturday",jt=0,ni=o(function(){Qt=[],St=[],ht="",Jt=[],_t=0,Gt=void 0,Dt=void 0,B=[],J="",Xt="",Kt="",Ut=void 0,Zt="",gt=[],xt=[],bt=!1,te=!1,jt=0,qt=new Map,dt="",le(),ee="sunday",Ct="saturday"},"clear"),si=o(function(t){dt=t},"setDiagramId"),ri=o(function(t){Xt=t},"setAxisFormat"),ai=o(function(){return Xt},"getAxisFormat"),oi=o(function(t){Ut=t},"setTickInterval"),ci=o(function(){return Ut},"getTickInterval"),li=o(function(t){Zt=t},"setTodayMarker"),ui=o(function(){return Zt},"getTodayMarker"),di=o(function(t){J=t},"setDateFormat"),fi=o(function(){bt=!0},"enableInclusiveEndDates"),hi=o(function(){return bt},"endDatesAreInclusive"),mi=o(function(){te=!0},"enableTopAxis"),ki=o(function(){return te},"topAxisEnabled"),yi=o(function(t){Kt=t},"setDisplayMode"),pi=o(function(){return Kt},"getDisplayMode"),gi=o(function(){return J},"getDateFormat"),xi=o(function(t){gt=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),bi=o(function(){return gt},"getIncludes"),Ti=o(function(t){xt=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),vi=o(function(){return xt},"getExcludes"),wi=o(function(){return qt},"getLinks"),_i=o(function(t){ht=t,Qt.push(t)},"addSection"),Di=o(function(){return Qt},"getSections"),Si=o(function(){let t=Fe(),i=10,a=0;for(;!t&&aD))throw new Error("Failed to find a valid date that was not excluded by `excludes` after 10,000 iterations.");t=t.add(1,"d")}return[i,x]},"fixTaskDates"),Bt=o(function(t,i,a){if(a=a.trim(),o(D=>{let S=D.trim();return S==="x"||S==="X"},"isTimestampFormat")(i)&&/^\d+$/.test(a))return new Date(Number(a));let u=/^after\s+(?[\d\w- ]+)/.exec(a);if(u!==null){let D=null;for(let P of u.groups.ids.split(" ")){let C=ct(P);C!==void 0&&(!D||C.endTime>D.endTime)&&(D=C)}if(D)return D.endTime;let S=new Date;return S.setHours(0,0,0,0),S}let x=(0,Q.default)(a,i.trim(),!0);if(x.isValid())return x.toDate();{et.debug("Invalid date:"+a),et.debug("With date format:"+i.trim());let D=new Date(a);if(D===void 0||isNaN(D.getTime())||D.getFullYear()<-1e4||D.getFullYear()>1e4)throw new Error("Invalid date:"+a);return D}},"getStartDate"),je=o(function(t){let i=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return i!==null?[Number.parseFloat(i[1]),i[2]]:[NaN,"ms"]},"parseDuration"),Be=o(function(t,i,a,r=!1){a=a.trim();let u=/^until\s+(?[\d\w- ]+)/.exec(a);if(u!==null){let C=null;for(let R of u.groups.ids.split(" ")){let z=ct(R);z!==void 0&&(!C||z.startTime{window.open(a,"_self")}),qt.set(r,a))}),Xe(t,"clickable")},"setLink"),Xe=o(function(t,i){t.split(",").forEach(function(a){let r=ct(a);r!==void 0&&r.classes.push(i)})},"setClass"),Fi=o(function(t,i,a){if(nt().securityLevel!=="loose"||i===void 0)return;let r=[];if(typeof a=="string"){r=a.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let u=0;u{$e.runFunc(i,...r)})},"setClickFun"),Ue=o(function(t,i){Jt.push(function(){let a=dt?`${dt}-${t}`:t,r=document.querySelector(`[id="${a}"]`);r!==null&&r.addEventListener("click",function(){i()})},function(){let a=dt?`${dt}-${t}`:t,r=document.querySelector(`[id="${a}-text"]`);r!==null&&r.addEventListener("click",function(){i()})})},"pushFun"),Wi=o(function(t,i,a){t.split(",").forEach(function(r){Fi(r,i,a)}),Xe(t,"clickable")},"setClickEvent"),Pi=o(function(t){Jt.forEach(function(i){i(t)})},"bindFunctions"),Ze={getConfig:o(()=>nt().gantt,"getConfig"),clear:ni,setDateFormat:di,getDateFormat:gi,enableInclusiveEndDates:fi,endDatesAreInclusive:hi,enableTopAxis:mi,topAxisEnabled:ki,setAxisFormat:ri,getAxisFormat:ai,setTickInterval:oi,getTickInterval:ci,setTodayMarker:li,getTodayMarker:ui,setAccTitle:ue,getAccTitle:de,setDiagramTitle:me,getDiagramTitle:ke,setDiagramId:si,setDisplayMode:yi,getDisplayMode:pi,setAccDescription:fe,getAccDescription:he,addSection:_i,getSections:Di,getTasks:Si,addTask:Ii,findTaskById:ct,addTaskOrg:Ai,setIncludes:xi,getIncludes:bi,setExcludes:Ti,getExcludes:vi,setClickEvent:Wi,setLink:Oi,getLinks:wi,bindFunctions:Pi,parseDuration:je,isInvalidDate:Re,setWeekday:Ci,getWeekday:Mi,setWeekend:Ei};function qe(t,i,a){let r=!0;for(;r;)r=!1,a.forEach(function(s){let u="^\\s*"+s+"\\s*$",x=new RegExp(u);t[0].match(x)&&(i[s]=!0,t.shift(1),r=!0)})}o(qe,"getTaskTags");var mt=ot(ae(),1),Je=ot(Qe(),1);mt.default.extend(Je.default);var Vi=o(function(){et.debug("Something is calling, setConf, remove the call")},"setConf"),Ke={monday:we,tuesday:_e,wednesday:De,thursday:Se,friday:Ce,saturday:Me,sunday:ve},Ni=o((t,i)=>{let a=[...t].map(()=>-1/0),r=[...t].sort((u,x)=>u.startTime-x.startTime||u.order-x.order),s=0;for(let u of r)for(let x=0;x=a[x]){a[x]=u.endTime,u.order=x+i,x>s&&(s=x);break}return s},"getMaxIntersections"),it,se=1e4,zi=o(function(t,i,a,r){let s=nt().gantt;r.db.setDiagramId(i);let u=nt().securityLevel,x;u==="sandbox"&&(x=pt("#i"+i));let D=u==="sandbox"?pt(x.nodes()[0].contentDocument.body):pt("body"),S=u==="sandbox"?x.nodes()[0].contentDocument:document,P=S.getElementById(i);it=P.parentElement.offsetWidth,it===void 0&&(it=1200),s.useWidth!==void 0&&(it=s.useWidth);let C=r.db.getTasks(),W=[];for(let f of C)W.push(f.type);W=I(W);let R={},z=2*s.topPadding;if(r.db.getDisplayMode()==="compact"||s.displayMode==="compact"){let f={};for(let p of C)f[p.section]===void 0?f[p.section]=[p]:f[p.section].push(p);let y=0;for(let p of Object.keys(f)){let T=Ni(f[p],y)+1;y+=T,z+=T*(s.barHeight+s.barGap),R[p]=T}}else{z+=C.length*(s.barHeight+s.barGap);for(let f of W)R[f]=C.filter(y=>y.type===f).length}P.setAttribute("viewBox","0 0 "+it+" "+z);let v=D.select(`[id="${i}"]`),k=Ee().domain([pe(C,function(f){return f.startTime}),ye(C,function(f){return f.endTime})]).rangeRound([0,it-s.leftPadding-s.rightPadding]);function O(f,y){let p=f.startTime,T=y.startTime,g=0;return p>T?g=1:pe.vert===_.vert?0:e.vert?1:-1);let m=[...new Set(f.map(e=>e.order))].map(e=>f.find(_=>_.order===e));v.append("g").selectAll("rect").data(m).enter().append("rect").attr("x",0).attr("y",function(e,_){return _=e.order,_*y+p-2}).attr("width",function(){return l-s.rightPadding/2}).attr("height",y).attr("class",function(e){for(let[_,A]of W.entries())if(e.type===A)return"section section"+_%s.numberSectionStyles;return"section section0"}).enter();let w=v.append("g").selectAll("rect").data(f).enter(),n=r.db.getLinks();if(w.append("rect").attr("id",function(e){return i+"-"+e.id}).attr("rx",3).attr("ry",3).attr("x",function(e){return e.milestone?k(e.startTime)+T+.5*(k(e.endTime)-k(e.startTime))-.5*g:k(e.startTime)+T}).attr("y",function(e,_){return _=e.order,e.vert?s.gridLineStartPadding:_*y+p}).attr("width",function(e){return e.milestone?g:e.vert?.08*g:k(e.renderEndTime||e.endTime)-k(e.startTime)}).attr("height",function(e){return e.vert?C.length*(s.barHeight+s.barGap)+s.barHeight*2:g}).attr("transform-origin",function(e,_){return _=e.order,(k(e.startTime)+T+.5*(k(e.endTime)-k(e.startTime))).toString()+"px "+(_*y+p+.5*g).toString()+"px"}).attr("class",function(e){let _="task",A="";e.classes.length>0&&(A=e.classes.join(" "));let $=0;for(let[H,V]of W.entries())e.type===V&&($=H%s.numberSectionStyles);let Y="";return e.active?e.crit?Y+=" activeCrit":Y=" active":e.done?e.crit?Y=" doneCrit":Y=" done":e.crit&&(Y+=" crit"),Y.length===0&&(Y=" task"),e.milestone&&(Y=" milestone "+Y),e.vert&&(Y=" vert "+Y),Y+=$,Y+=" "+A,_+Y}),w.append("text").attr("id",function(e){return i+"-"+e.id+"-text"}).text(function(e){return e.task}).attr("font-size",s.fontSize).attr("x",function(e){let _=k(e.startTime),A=k(e.renderEndTime||e.endTime);if(e.milestone&&(_+=.5*(k(e.endTime)-k(e.startTime))-.5*g,A=_+g),e.vert)return k(e.startTime)+T;let $=this.getBBox().width;return $>A-_?A+$+1.5*s.leftPadding>l?_+T-5:A+T+5:(A-_)/2+_+T}).attr("y",function(e,_){return e.vert?s.gridLineStartPadding+C.length*(s.barHeight+s.barGap)+60:(_=e.order,_*y+s.barHeight/2+(s.fontSize/2-2)+p)}).attr("text-height",g).attr("class",function(e){let _=k(e.startTime),A=k(e.endTime);e.milestone&&(A=_+g);let $=this.getBBox().width,Y="";e.classes.length>0&&(Y=e.classes.join(" "));let H=0;for(let[N,U]of W.entries())e.type===U&&(H=N%s.numberSectionStyles);let V="";return e.active&&(e.crit?V="activeCritText"+H:V="activeText"+H),e.done?e.crit?V=V+" doneCritText"+H:V=V+" doneText"+H:e.crit&&(V=V+" critText"+H),e.milestone&&(V+=" milestoneText"),e.vert&&(V+=" vertText"),$>A-_?A+$+1.5*s.leftPadding>l?Y+" taskTextOutsideLeft taskTextOutside"+H+" "+V:Y+" taskTextOutsideRight taskTextOutside"+H+" "+V+" width-"+$:Y+" taskText taskText"+H+" "+V+" width-"+$}),nt().securityLevel==="sandbox"){let e;e=pt("#i"+i);let _=e.nodes()[0].contentDocument;w.filter(function(A){return n.has(A.id)}).each(function(A){var $=_.querySelector("#"+CSS.escape(i+"-"+A.id)),Y=_.querySelector("#"+CSS.escape(i+"-"+A.id+"-text"));let H=$.parentNode;var V=_.createElement("a");V.setAttribute("xlink:href",n.get(A.id)),V.setAttribute("target","_top"),H.appendChild(V),V.appendChild($),V.appendChild(Y)})}}o(G,"drawRects");function X(f,y,p,T,g,c,l,h){if(l.length===0&&h.length===0)return;let m,w;for(let{startTime:$,endTime:Y}of c)(m===void 0||$w)&&(w=Y);if(!m||!w)return;if((0,mt.default)(w).diff((0,mt.default)(m),"year")>5){et.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let n=r.db.getDateFormat(),F=[],e=null,_=(0,mt.default)(m);for(;_.valueOf()<=w;)r.db.isInvalidDate(_,n,l,h)?e?e.end=_:e={start:_,end:_}:e&&(F.push(e),e=null),_=_.add(1,"d");v.append("g").selectAll("rect").data(F).enter().append("rect").attr("id",$=>i+"-exclude-"+$.start.format("YYYY-MM-DD")).attr("x",$=>k($.start.startOf("day"))+p).attr("y",s.gridLineStartPadding).attr("width",$=>k($.end.endOf("day"))-k($.start.startOf("day"))).attr("height",g-y-s.gridLineStartPadding).attr("transform-origin",function($,Y){return(k($.start)+p+.5*(k($.end)-k($.start))).toString()+"px "+(Y*f+.5*g).toString()+"px"}).attr("class","exclude-range")}o(X,"drawExcludeDays");function E(f,y,p,T){if(p<=0||f>y)return 1/0;let g=y-f,c=mt.default.duration({[T??"day"]:p}).asMilliseconds();return c<=0?1/0:Math.ceil(g/c)}o(E,"getEstimatedTickCount");function b(f,y,p,T){let g=r.db.getDateFormat(),c=r.db.getAxisFormat(),l;c?l=c:g==="D"?l="%d":l=s.axisFormat??"%Y-%m-%d";let h=xe(k).tickSize(-T+y+s.gridLineStartPadding).tickFormat(Ft(l)),w=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(r.db.getTickInterval()||s.tickInterval);if(w!==null){let n=parseInt(w[1],10);if(isNaN(n)||n<=0)et.warn(`Invalid tick interval value: "${w[1]}". Skipping custom tick interval.`);else{let F=w[2],e=r.db.getWeekday()||s.weekday,_=k.domain(),A=_[0],$=_[1],Y=E(A,$,n,F);if(Y>se)et.warn(`The tick interval "${n}${F}" would generate ${Y} ticks, which exceeds the maximum allowed (${se}). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(F){case"millisecond":h.ticks($t.every(n));break;case"second":h.ticks(Yt.every(n));break;case"minute":h.ticks(Lt.every(n));break;case"hour":h.ticks(It.every(n));break;case"day":h.ticks(At.every(n));break;case"week":h.ticks(Ke[e].every(n));break;case"month":h.ticks(Ot.every(n));break}}}if(v.append("g").attr("class","grid").attr("transform","translate("+f+", "+(T-50)+")").call(h).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),r.db.topAxisEnabled()||s.topAxis){let n=ge(k).tickSize(-T+y+s.gridLineStartPadding).tickFormat(Ft(l));if(w!==null){let F=parseInt(w[1],10);if(isNaN(F)||F<=0)et.warn(`Invalid tick interval value: "${w[1]}". Skipping custom tick interval.`);else{let e=w[2],_=r.db.getWeekday()||s.weekday,A=k.domain(),$=A[0],Y=A[1];if(E($,Y,F,e)<=se)switch(e){case"millisecond":n.ticks($t.every(F));break;case"second":n.ticks(Yt.every(F));break;case"minute":n.ticks(Lt.every(F));break;case"hour":n.ticks(It.every(F));break;case"day":n.ticks(At.every(F));break;case"week":n.ticks(Ke[_].every(F));break;case"month":n.ticks(Ot.every(F));break}}}v.append("g").attr("class","grid").attr("transform","translate("+f+", "+y+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(b,"makeGrid");function d(f,y){let p=0,T=Object.keys(R).map(g=>[g,R[g]]);v.append("g").selectAll("text").data(T).enter().append(function(g){let c=g[0].split(oe.lineBreakRegex),l=-(c.length-1)/2,h=S.createElementNS("http://www.w3.org/2000/svg","text");h.setAttribute("dy",l+"em");for(let[m,w]of c.entries()){let n=S.createElementNS("http://www.w3.org/2000/svg","tspan");n.setAttribute("alignment-baseline","central"),n.setAttribute("x","10"),m>0&&n.setAttribute("dy","1em"),n.textContent=w,h.appendChild(n)}return h}).attr("x",10).attr("y",function(g,c){if(c>0)for(let l=0;l` + .mermaid-main-font { + font-family: ${t.fontFamily}; + } + + .exclude-range { + fill: ${t.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${t.sectionBkgColor}; + } + + .section2 { + fill: ${t.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${t.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${t.titleColor}; + } + + .sectionTitle1 { + fill: ${t.titleColor}; + } + + .sectionTitle2 { + fill: ${t.titleColor}; + } + + .sectionTitle3 { + fill: ${t.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: ${t.fontFamily}; + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${t.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${t.fontFamily}; + fill: ${t.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${t.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: ${t.fontFamily}; + } + + .taskTextOutsideRight { + fill: ${t.taskTextDarkColor}; + text-anchor: start; + font-family: ${t.fontFamily}; + } + + .taskTextOutsideLeft { + fill: ${t.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${t.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${t.taskBkgColor}; + stroke: ${t.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${t.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${t.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${t.activeTaskBkgColor}; + stroke: ${t.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${t.doneTaskBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${t.taskTextDarkColor} !important; + } + + /* Done task text displayed outside the bar sits against the diagram background, + not against the done-task bar, so it must use the outside/contrast color. */ + .doneText0.taskTextOutsideLeft, + .doneText0.taskTextOutsideRight, + .doneText1.taskTextOutsideLeft, + .doneText1.taskTextOutsideRight, + .doneText2.taskTextOutsideLeft, + .doneText2.taskTextOutsideRight, + .doneText3.taskTextOutsideLeft, + .doneText3.taskTextOutsideRight { + fill: ${t.taskTextOutsideColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${t.critBorderColor}; + fill: ${t.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + /* Done-crit task text outside the bar \u2014 same reasoning as doneText above. */ + .doneCritText0.taskTextOutsideLeft, + .doneCritText0.taskTextOutsideRight, + .doneCritText1.taskTextOutsideLeft, + .doneCritText1.taskTextOutsideRight, + .doneCritText2.taskTextOutsideLeft, + .doneCritText2.taskTextOutsideRight, + .doneCritText3.taskTextOutsideLeft, + .doneCritText3.taskTextOutsideRight { + fill: ${t.taskTextOutsideColor} !important; + } + + .vert { + stroke: ${t.vertLineColor}; + } + + .vertText { + font-size: 15px; + text-anchor: middle; + fill: ${t.vertLineColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.titleColor||t.textColor}; + font-family: ${t.fontFamily}; + } +`,"getStyles"),ei=Ri;var kn={parser:Ye,db:Ze,renderer:ti,styles:ei};export{kn as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-JCBTUEKG.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-JCBTUEKG.mjs.map new file mode 100644 index 0000000..d37d9a5 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/ganttDiagram-JCBTUEKG.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isoWeek.js", "../../../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/customParseFormat.js", "../../../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/advancedFormat.js", "../../../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/duration.js", "../../../src/diagrams/gantt/parser/gantt.jison", "../../../src/diagrams/gantt/ganttDb.js", "../../../src/diagrams/gantt/ganttRenderer.js", "../../../src/diagrams/gantt/styles.js", "../../../src/diagrams/gantt/ganttDiagram.ts"], + "sourcesContent": ["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));", "!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));", "/* 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,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],$V1=[1,26],$V2=[1,27],$V3=[1,28],$V4=[1,29],$V5=[1,30],$V6=[1,31],$V7=[1,32],$V8=[1,33],$V9=[1,34],$Va=[1,9],$Vb=[1,10],$Vc=[1,11],$Vd=[1,12],$Ve=[1,13],$Vf=[1,14],$Vg=[1,15],$Vh=[1,16],$Vi=[1,19],$Vj=[1,20],$Vk=[1,21],$Vl=[1,22],$Vm=[1,23],$Vn=[1,25],$Vo=[1,35];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"gantt\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"weekday\":11,\"weekday_monday\":12,\"weekday_tuesday\":13,\"weekday_wednesday\":14,\"weekday_thursday\":15,\"weekday_friday\":16,\"weekday_saturday\":17,\"weekday_sunday\":18,\"weekend\":19,\"weekend_friday\":20,\"weekend_saturday\":21,\"dateFormat\":22,\"inclusiveEndDates\":23,\"topAxis\":24,\"axisFormat\":25,\"tickInterval\":26,\"excludes\":27,\"includes\":28,\"todayMarker\":29,\"title\":30,\"acc_title\":31,\"acc_title_value\":32,\"acc_descr\":33,\"acc_descr_value\":34,\"acc_descr_multiline_value\":35,\"section\":36,\"clickStatement\":37,\"taskTxt\":38,\"taskData\":39,\"click\":40,\"callbackname\":41,\"callbackargs\":42,\"href\":43,\"clickStatementDebug\":44,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"gantt\",6:\"EOF\",8:\"SPACE\",10:\"NL\",12:\"weekday_monday\",13:\"weekday_tuesday\",14:\"weekday_wednesday\",15:\"weekday_thursday\",16:\"weekday_friday\",17:\"weekday_saturday\",18:\"weekday_sunday\",20:\"weekend_friday\",21:\"weekend_saturday\",22:\"dateFormat\",23:\"inclusiveEndDates\",24:\"topAxis\",25:\"axisFormat\",26:\"tickInterval\",27:\"excludes\",28:\"includes\",29:\"todayMarker\",30:\"title\",31:\"acc_title\",32:\"acc_title_value\",33:\"acc_descr\",34:\"acc_descr_value\",35:\"acc_descr_multiline_value\",36:\"section\",38:\"taskTxt\",39:\"taskData\",40:\"click\",41:\"callbackname\",42:\"callbackargs\",43:\"href\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,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:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\n yy.setWeekday(\"monday\");\nbreak;\ncase 9:\n yy.setWeekday(\"tuesday\");\nbreak;\ncase 10:\n yy.setWeekday(\"wednesday\");\nbreak;\ncase 11:\n yy.setWeekday(\"thursday\");\nbreak;\ncase 12:\n yy.setWeekday(\"friday\");\nbreak;\ncase 13:\n yy.setWeekday(\"saturday\");\nbreak;\ncase 14:\n yy.setWeekday(\"sunday\");\nbreak;\ncase 15:\n yy.setWeekend(\"friday\");\nbreak;\ncase 16:\n yy.setWeekend(\"saturday\");\nbreak;\ncase 17:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 18:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 19:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 20:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 21:\nyy.setTickInterval($$[$0].substr(13));this.$=$$[$0].substr(13);\nbreak;\ncase 22:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 23:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 24:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 27:\nyy.setDiagramTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 28:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 29: case 30:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 31:\n yy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8); \nbreak;\ncase 33:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 34:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 35:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 36:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 37:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 38:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 39:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 40:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 41: case 47:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 42: case 43: case 45:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 44: case 46:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:$V1,13:$V2,14:$V3,15:$V4,16:$V5,17:$V6,18:$V7,19:18,20:$V8,21:$V9,22:$Va,23:$Vb,24:$Vc,25:$Vd,26:$Ve,27:$Vf,28:$Vg,29:$Vh,30:$Vi,31:$Vj,33:$Vk,35:$Vl,36:$Vm,37:24,38:$Vn,40:$Vo},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:36,11:17,12:$V1,13:$V2,14:$V3,15:$V4,16:$V5,17:$V6,18:$V7,19:18,20:$V8,21:$V9,22:$Va,23:$Vb,24:$Vc,25:$Vd,26:$Ve,27:$Vf,28:$Vg,29:$Vh,30:$Vi,31:$Vj,33:$Vk,35:$Vl,36:$Vm,37:24,38:$Vn,40:$Vo},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,17]),o($V0,[2,18]),o($V0,[2,19]),o($V0,[2,20]),o($V0,[2,21]),o($V0,[2,22]),o($V0,[2,23]),o($V0,[2,24]),o($V0,[2,25]),o($V0,[2,26]),o($V0,[2,27]),{32:[1,37]},{34:[1,38]},o($V0,[2,30]),o($V0,[2,31]),o($V0,[2,32]),{39:[1,39]},o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,11]),o($V0,[2,12]),o($V0,[2,13]),o($V0,[2,14]),o($V0,[2,15]),o($V0,[2,16]),{41:[1,40],43:[1,41]},o($V0,[2,4]),o($V0,[2,28]),o($V0,[2,29]),o($V0,[2,33]),o($V0,[2,34],{42:[1,42],43:[1,43]}),o($V0,[2,40],{41:[1,44]}),o($V0,[2,35],{43:[1,45]}),o($V0,[2,36]),o($V0,[2,38],{42:[1,46]}),o($V0,[2,37]),o($V0,[2,39])],\ndefaultActions: {},\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\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 'open_directive'; \nbreak;\ncase 1: this.begin(\"acc_title\");return 31; \nbreak;\ncase 2: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 3: this.begin(\"acc_descr\");return 33; \nbreak;\ncase 4: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 5: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 6: this.popState(); \nbreak;\ncase 7:return \"acc_descr_multiline_value\";\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* do nothing */\nbreak;\ncase 11:return 10;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:this.begin(\"href\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 43;\nbreak;\ncase 17:this.begin(\"callbackname\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 20:return 41;\nbreak;\ncase 21:this.popState();\nbreak;\ncase 22:return 42;\nbreak;\ncase 23:this.begin(\"click\");\nbreak;\ncase 24:this.popState();\nbreak;\ncase 25:return 40;\nbreak;\ncase 26:return 4;\nbreak;\ncase 27:return 22;\nbreak;\ncase 28:return 23;\nbreak;\ncase 29:return 24;\nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 26;\nbreak;\ncase 32:return 28;\nbreak;\ncase 33:return 27;\nbreak;\ncase 34:return 29;\nbreak;\ncase 35:return 12\nbreak;\ncase 36:return 13\nbreak;\ncase 37:return 14\nbreak;\ncase 38:return 15\nbreak;\ncase 39:return 16\nbreak;\ncase 40:return 17\nbreak;\ncase 41:return 18\nbreak;\ncase 42:return 20\nbreak;\ncase 43:return 21\nbreak;\ncase 44:return 'date';\nbreak;\ncase 45:return 30;\nbreak;\ncase 46:return 'accDescription'\nbreak;\ncase 47:return 36;\nbreak;\ncase 48:return 38;\nbreak;\ncase 49:return 39;\nbreak;\ncase 50:return ':';\nbreak;\ncase 51:return 6;\nbreak;\ncase 52:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/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,/^(?:tickInterval\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:weekday\\s+monday\\b)/i,/^(?:weekday\\s+tuesday\\b)/i,/^(?:weekday\\s+wednesday\\b)/i,/^(?:weekday\\s+thursday\\b)/i,/^(?:weekday\\s+friday\\b)/i,/^(?:weekday\\s+saturday\\b)/i,/^(?:weekday\\s+sunday\\b)/i,/^(?:weekend\\s+friday\\b)/i,/^(?:weekend\\s+saturday\\b)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^\\n]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:section\\s[^\\n]+)/i,/^(?:[^:\\n]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[6,7],\"inclusive\":false},\"acc_descr\":{\"rules\":[4],\"inclusive\":false},\"acc_title\":{\"rules\":[2],\"inclusive\":false},\"callbackargs\":{\"rules\":[21,22],\"inclusive\":false},\"callbackname\":{\"rules\":[18,19,20],\"inclusive\":false},\"href\":{\"rules\":[15,16],\"inclusive\":false},\"click\":{\"rules\":[24,25],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,5,8,9,10,11,12,13,14,17,23,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],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { sanitizeUrl } from '@braintree/sanitize-url';\nimport dayjs from 'dayjs';\nimport dayjsIsoWeek from 'dayjs/plugin/isoWeek.js';\nimport dayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport dayjsAdvancedFormat from 'dayjs/plugin/advancedFormat.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport utils from '../../utils.js';\n\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\n\ndayjs.extend(dayjsIsoWeek);\ndayjs.extend(dayjsCustomParseFormat);\ndayjs.extend(dayjsAdvancedFormat);\n\nconst WEEKEND_START_DAY = { friday: 5, saturday: 6 };\nlet dateFormat = '';\nlet axisFormat = '';\nlet tickInterval = undefined;\nlet todayMarker = '';\nlet includes = [];\nlet excludes = [];\nlet links = new Map();\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nlet displayMode = '';\nconst tags = ['active', 'done', 'crit', 'milestone', 'vert'];\nlet funs = [];\nlet diagramId = '';\nlet inclusiveEndDates = false;\nlet topAxis = false;\nlet weekday = 'sunday';\nlet weekend = 'saturday';\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const clear = function () {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n displayMode = '';\n tickInterval = undefined;\n todayMarker = '';\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = new Map();\n diagramId = '';\n commonClear();\n weekday = 'sunday';\n weekend = 'saturday';\n};\n\nexport const setDiagramId = function (id) {\n diagramId = id;\n};\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function () {\n return axisFormat;\n};\n\nexport const setTickInterval = function (txt) {\n tickInterval = txt;\n};\n\nexport const getTickInterval = function () {\n return tickInterval;\n};\n\nexport const setTodayMarker = function (txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function () {\n return todayMarker;\n};\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function () {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function () {\n return inclusiveEndDates;\n};\n\nexport const enableTopAxis = function () {\n topAxis = true;\n};\n\nexport const topAxisEnabled = function () {\n return topAxis;\n};\n\nexport const setDisplayMode = function (txt) {\n displayMode = txt;\n};\n\nexport const getDisplayMode = function () {\n return displayMode;\n};\n\nexport const getDateFormat = function () {\n return dateFormat;\n};\n\nexport const setIncludes = function (txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getIncludes = function () {\n return includes;\n};\nexport const setExcludes = function (txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function () {\n return excludes;\n};\n\nexport const getLinks = function () {\n return links;\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsProcessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nexport const isInvalidDate = function (date, dateFormat, excludes, includes) {\n const formattedDate = date.format(dateFormat.trim());\n const dateOnly = date.format('YYYY-MM-DD');\n\n if (includes.includes(formattedDate) || includes.includes(dateOnly)) {\n return false;\n }\n if (\n excludes.includes('weekends') &&\n (date.isoWeekday() === WEEKEND_START_DAY[weekend] ||\n date.isoWeekday() === WEEKEND_START_DAY[weekend] + 1)\n ) {\n return true;\n }\n if (excludes.includes(date.format('dddd').toLowerCase())) {\n return true;\n }\n return excludes.includes(formattedDate) || excludes.includes(dateOnly);\n};\n\nexport const setWeekday = function (txt) {\n weekday = txt;\n};\n\nexport const getWeekday = function () {\n return weekday;\n};\n\nexport const setWeekend = function (startDay) {\n weekend = startDay;\n};\n\n/**\n * TODO: fully document what this function does and what types it accepts\n *\n * @param {object} task - The task to check.\n * @param {string | Date} task.startTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string | Date} task.endTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n */\nconst checkTaskDates = function (task, dateFormat, excludes, includes) {\n if (!excludes.length || task.manualEndTime) {\n return;\n }\n let startTime;\n if (task.startTime instanceof Date) {\n startTime = dayjs(task.startTime);\n } else {\n startTime = dayjs(task.startTime, dateFormat, true);\n }\n startTime = startTime.add(1, 'd');\n\n let originalEndTime;\n if (task.endTime instanceof Date) {\n originalEndTime = dayjs(task.endTime);\n } else {\n originalEndTime = dayjs(task.endTime, dateFormat, true);\n }\n const [fixedEndTime, renderEndTime] = fixTaskDates(\n startTime,\n originalEndTime,\n dateFormat,\n excludes,\n includes\n );\n task.endTime = fixedEndTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\n/**\n * TODO: what does this function do?\n *\n * @param {dayjs.Dayjs} startTime - The start time.\n * @param {dayjs.Dayjs} endTime - The original end time (will return a different end time if it's invalid).\n * @param {string} dateFormat - Dayjs date format string.\n * @param {string[]} excludes - Dates or days to exclude.\n * @param {string[]} includes - Dates to always include, even if they match the excludes.\n * @returns {[endTime: dayjs.Dayjs, renderEndTime: Date | null]} The new `endTime`, and the end time to render.\n * `renderEndTime` may be `null` if `startTime` is newer than `endTime`.\n * @throws {Error} If a valid end time cannot be found after 10,000 iterations.\n */\nconst fixTaskDates = function (startTime, endTime, dateFormat, excludes, includes) {\n let invalid = false;\n let renderEndTime = null;\n const maxEndTime = endTime.add(10000, 'd');\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes, includes);\n if (invalid) {\n endTime = endTime.add(1, 'd');\n if (endTime > maxEndTime) {\n throw new Error(\n 'Failed to find a valid date that was not excluded by `excludes` after 10,000 iterations.'\n );\n }\n }\n startTime = startTime.add(1, 'd');\n }\n return [endTime, renderEndTime];\n};\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim();\n\n // Helper function to check if format is a timestamp format (x or X)\n const isTimestampFormat = (format) => {\n const trimmedFormat = format.trim();\n return trimmedFormat === 'x' || trimmedFormat === 'X';\n };\n\n // Handle timestamp formats (x, X) with numeric strings\n if (isTimestampFormat(dateFormat) && /^\\d+$/.test(str)) {\n return new Date(Number(str));\n }\n // Test for after\n const afterRePattern = /^after\\s+(?[\\d\\w- ]+)/;\n const afterStatement = afterRePattern.exec(str);\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestTask = null;\n for (const id of afterStatement.groups.ids.split(' ')) {\n let task = findTaskById(id);\n if (task !== undefined && (!latestTask || task.endTime > latestTask.endTime)) {\n latestTask = task;\n }\n }\n\n if (latestTask) {\n return latestTask.endTime;\n }\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n }\n\n // Check for actual date set using dayjs strict parsing\n let mDate = dayjs(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n log.debug('Invalid date:' + str);\n log.debug('With date format:' + dateFormat.trim());\n\n // Timestamp formats can fall back to new Date()\n const d = new Date(str);\n if (\n d === undefined ||\n isNaN(d.getTime()) ||\n // WebKit browsers can mis-parse invalid dates to be ridiculously\n // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304.\n // This can cause virtually infinite loops while rendering, so for the\n // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as\n // invalid.\n d.getFullYear() < -10000 ||\n d.getFullYear() > 10000\n ) {\n throw new Error('Invalid date:' + str);\n }\n return d;\n }\n};\n\n/**\n * Parse a string into the args for `dayjs.add()`.\n *\n * The string have to be compound by a value and a shorthand duration unit. For example `5d`\n * represents 5 days.\n *\n * Please be aware that 1 day may be 23 or 25 hours, if the user lives in an area\n * that has daylight savings time (or even 23.5/24.5 hours in Lord Howe Island!)\n *\n * Shorthand unit supported are:\n *\n * - `y` for years\n * - `M` for months\n * - `w` for weeks\n * - `d` for days\n * - `h` for hours\n * - `s` for seconds\n * - `ms` for milliseconds\n *\n * @param {string} str - A string representing the duration.\n * @returns {[value: number, unit: dayjs.ManipulateType]} Arguments to pass to `dayjs.add()`\n */\nconst parseDuration = function (str) {\n // cspell:disable-next-line\n const statement = /^(\\d+(?:\\.\\d+)?)([Mdhmswy]|ms)$/.exec(str.trim());\n if (statement !== null) {\n return [Number.parseFloat(statement[1]), statement[2]];\n }\n // NaN means an invalid duration\n return [NaN, 'ms'];\n};\n\nconst getEndDate = function (prevTime, dateFormat, str, inclusive = false) {\n str = str.trim();\n\n // test for until\n const untilRePattern = /^until\\s+(?[\\d\\w- ]+)/;\n const untilStatement = untilRePattern.exec(str);\n\n if (untilStatement !== null) {\n // check all until ids and take the earliest\n let earliestTask = null;\n for (const id of untilStatement.groups.ids.split(' ')) {\n let task = findTaskById(id);\n if (task !== undefined && (!earliestTask || task.startTime < earliestTask.startTime)) {\n earliestTask = task;\n }\n }\n\n if (earliestTask) {\n return earliestTask.startTime;\n }\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return today;\n }\n\n // check for actual date\n let parsedDate = dayjs(str, dateFormat.trim(), true);\n if (parsedDate.isValid()) {\n if (inclusive) {\n parsedDate = parsedDate.add(1, 'd');\n }\n return parsedDate.toDate();\n }\n\n let endTime = dayjs(prevTime);\n const [durationValue, durationUnit] = parseDuration(str);\n if (!Number.isNaN(durationValue)) {\n const newEndTime = endTime.add(durationValue, durationUnit);\n if (newEndTime.isValid()) {\n endTime = newEndTime;\n }\n }\n return endTime.toDate();\n};\n\nlet taskCnt = 0;\nconst parseId = function (idStr) {\n if (idStr === undefined) {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit, milestone, and vert\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = dayjs(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n\n return task;\n};\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit, milestone, and vert\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId,\n };\n task.endTime = {\n data: data[0],\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0],\n };\n task.endTime = {\n data: data[1],\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1],\n };\n task.endTime = {\n data: data[2],\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: [],\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.vert = taskInfo.vert;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n newTask.vert = taskInfo.vert;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = dayjs(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param _linkStr URL to create a link for\n */\nexport const setLink = function (ids, _linkStr) {\n let linkStr = _linkStr;\n if (getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n links.set(id, linkStr);\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function (id, functionName, functionArgs) {\n if (getConfig().securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.startsWith('\"') && item.endsWith('\"')) {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the\n * task's assigned text\n *\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function (id, callbackFunction) {\n funs.push(\n function () {\n const prefixedId = diagramId ? `${diagramId}-${id}` : id;\n const elem = document.querySelector(`[id=\"${prefixedId}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n },\n function () {\n const prefixedId = diagramId ? `${diagramId}-${id}` : id;\n const elem = document.querySelector(`[id=\"${prefixedId}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n }\n );\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n *\n * @param element\n */\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport default {\n getConfig: () => getConfig().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTickInterval,\n getTickInterval,\n setTodayMarker,\n getTodayMarker,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n setDiagramId,\n setDisplayMode,\n getDisplayMode,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n parseDuration,\n isInvalidDate,\n setWeekday,\n getWeekday,\n setWeekend,\n};\n\n/**\n * @param data\n * @param task\n * @param tags\n */\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function (t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n", "import dayjs from 'dayjs';\nimport dayjsDuration from 'dayjs/plugin/duration.js';\nimport { log } from '../../logger.js';\nimport {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n axisTop,\n timeFormat,\n timeMillisecond,\n timeSecond,\n timeMinute,\n timeHour,\n timeDay,\n timeMonday,\n timeTuesday,\n timeWednesday,\n timeThursday,\n timeFriday,\n timeSaturday,\n timeSunday,\n timeMonth,\n} from 'd3';\nimport common from '../common/common.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\n\ndayjs.extend(dayjsDuration);\n\nexport const setConf = function () {\n log.debug('Something is calling, setConf, remove the call');\n};\n\n/**\n * This will map any day of the week that can be set in the `weekday` option to\n * the corresponding d3-time function that is used to calculate the ticks.\n */\nconst mapWeekdayToTimeFunction = {\n monday: timeMonday,\n tuesday: timeTuesday,\n wednesday: timeWednesday,\n thursday: timeThursday,\n friday: timeFriday,\n saturday: timeSaturday,\n sunday: timeSunday,\n};\n\n/**\n * For this issue:\n * https://github.com/mermaid-js/mermaid/issues/1618\n *\n * Finds the number of intersections between tasks that happen at any point in time.\n * Used to figure out how many rows are needed to display the tasks when the display\n * mode is set to 'compact'.\n *\n * @param tasks\n * @param orderOffset\n */\nconst getMaxIntersections = (tasks, orderOffset) => {\n let timeline = [...tasks].map(() => -Infinity);\n let sorted = [...tasks].sort((a, b) => a.startTime - b.startTime || a.order - b.order);\n let maxIntersections = 0;\n for (const element of sorted) {\n for (let j = 0; j < timeline.length; j++) {\n if (element.startTime >= timeline[j]) {\n timeline[j] = element.endTime;\n element.order = j + orderOffset;\n if (j > maxIntersections) {\n maxIntersections = j;\n }\n break;\n }\n }\n }\n\n return maxIntersections;\n};\n\nlet w;\nconst MAX_TICK_COUNT = 10000;\nexport const draw = function (text, id, version, diagObj) {\n const conf = getConfig().gantt;\n\n diagObj.db.setDiagramId(id);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (w === undefined) {\n w = 1200;\n }\n\n if (conf.useWidth !== undefined) {\n w = conf.useWidth;\n }\n\n const taskArray = diagObj.db.getTasks();\n\n // Set height based on number of tasks\n\n let categories = [];\n\n for (const element of taskArray) {\n categories.push(element.type);\n }\n\n categories = checkUnique(categories);\n const categoryHeights = {};\n\n let h = 2 * conf.topPadding;\n if (diagObj.db.getDisplayMode() === 'compact' || conf.displayMode === 'compact') {\n const categoryElements = {};\n for (const element of taskArray) {\n if (categoryElements[element.section] === undefined) {\n categoryElements[element.section] = [element];\n } else {\n categoryElements[element.section].push(element);\n }\n }\n\n let intersections = 0;\n for (const category of Object.keys(categoryElements)) {\n const categoryHeight = getMaxIntersections(categoryElements[category], intersections) + 1;\n intersections += categoryHeight;\n h += categoryHeight * (conf.barHeight + conf.barGap);\n categoryHeights[category] = categoryHeight;\n }\n } else {\n h += taskArray.length * (conf.barHeight + conf.barGap);\n for (const category of categories) {\n categoryHeights[category] = taskArray.filter((task) => task.type === category).length;\n }\n }\n\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = root.select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function (d) {\n return d.startTime;\n }),\n max(taskArray, function (d) {\n return d.endTime;\n }),\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n /**\n * @param a\n * @param b\n */\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGantt(taskArray, w, h);\n\n configureSvgSize(svg, h, w, conf.useMaxWidth);\n\n svg\n .append('text')\n .text(diagObj.db.getDiagramTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n /**\n * @param tasks\n * @param pageWidth\n * @param pageHeight\n */\n function makeGantt(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks,\n diagObj.db.getExcludes(),\n diagObj.db.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n /**\n * @param theArray\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param theBarHeight\n * @param theColorScale\n * @param w\n */\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Sort theArray so that tasks with `vert` come last\n theArray.sort((a, b) => (a.vert === b.vert ? 0 : a.vert ? 1 : -1));\n // Get unique task orders. Required to draw the background rects when display mode is compact.\n const uniqueTaskOrderIds = [...new Set(theArray.map((item) => item.order))];\n const uniqueTasks = uniqueTaskOrderIds.map((id) => theArray.find((item) => item.order === id));\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(uniqueTasks)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n })\n .enter();\n\n // Draw the rects representing the tasks\n const rectangles = svg.append('g').selectAll('rect').data(theArray).enter();\n\n const links = diagObj.db.getLinks();\n\n // Render the tasks with links\n // Render the other tasks\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return id + '-' + d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n if (d.vert) {\n return conf.gridLineStartPadding;\n }\n return i * theGap + theTopPad;\n })\n .attr('width', function (d) {\n if (d.milestone) {\n return theBarHeight;\n }\n if (d.vert) {\n return 0.08 * theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', function (d) {\n if (d.vert) {\n return taskArray.length * (conf.barHeight + conf.barGap) + conf.barHeight * 2;\n }\n return theBarHeight;\n })\n .attr('transform-origin', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function (d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n if (d.vert) {\n taskClass = ' vert ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function (d) {\n return id + '-' + d.id + '-text';\n })\n .text(function (d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n endX = startX + theBarHeight;\n }\n\n if (d.vert) {\n return timeScale(d.startTime) + theSidePad;\n }\n\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n if (d.vert) {\n return conf.gridLineStartPadding + taskArray.length * (conf.barHeight + conf.barGap) + 60;\n }\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n if (d.vert) {\n taskType += ' vertText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n\n const securityLevel = getConfig().securityLevel;\n\n // Wrap the tasks in a tag for working links without javascript\n if (securityLevel === 'sandbox') {\n let sandboxElement;\n sandboxElement = select('#i' + id);\n const doc = sandboxElement.nodes()[0].contentDocument;\n\n rectangles\n .filter(function (d) {\n return links.has(d.id);\n })\n .each(function (o) {\n var taskRect = doc.querySelector('#' + CSS.escape(id + '-' + o.id));\n var taskText = doc.querySelector('#' + CSS.escape(id + '-' + o.id + '-text'));\n const oldParent = taskRect.parentNode;\n var Link = doc.createElement('a');\n Link.setAttribute('xlink:href', links.get(o.id));\n Link.setAttribute('target', '_top');\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n /**\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param w\n * @param h\n * @param tasks\n * @param {unknown[]} excludes\n * @param {unknown[]} includes\n */\n function drawExcludeDays(theGap, theTopPad, theSidePad, w, h, tasks, excludes, includes) {\n if (excludes.length === 0 && includes.length === 0) {\n return;\n }\n\n let minTime;\n let maxTime;\n for (const { startTime, endTime } of tasks) {\n if (minTime === undefined || startTime < minTime) {\n minTime = startTime;\n }\n if (maxTime === undefined || endTime > maxTime) {\n maxTime = endTime;\n }\n }\n\n if (!minTime || !maxTime) {\n return;\n }\n\n if (dayjs(maxTime).diff(dayjs(minTime), 'year') > 5) {\n log.warn(\n 'The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.'\n );\n return;\n }\n\n const dateFormat = diagObj.db.getDateFormat();\n const excludeRanges = [];\n let range = null;\n let d = dayjs(minTime);\n while (d.valueOf() <= maxTime) {\n if (diagObj.db.isInvalidDate(d, dateFormat, excludes, includes)) {\n if (!range) {\n range = {\n start: d,\n end: d,\n };\n } else {\n range.end = d;\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d = d.add(1, 'd');\n }\n\n const rectangles = svg.append('g').selectAll('rect').data(excludeRanges).enter();\n\n rectangles\n .append('rect')\n .attr('id', (d) => id + '-exclude-' + d.start.format('YYYY-MM-DD'))\n .attr('x', (d) => timeScale(d.start.startOf('day')) + theSidePad)\n .attr('y', conf.gridLineStartPadding)\n .attr('width', (d) => timeScale(d.end.endOf('day')) - timeScale(d.start.startOf('day')))\n\n .attr('height', h - theTopPad - conf.gridLineStartPadding)\n .attr('transform-origin', function (d, i) {\n return (\n (\n timeScale(d.start) +\n theSidePad +\n 0.5 * (timeScale(d.end) - timeScale(d.start))\n ).toString() +\n 'px ' +\n (i * theGap + 0.5 * h).toString() +\n 'px'\n );\n })\n .attr('class', 'exclude-range');\n }\n\n /**\n * Calculates the estimated number of ticks based on the time domain and tick interval.\n * Returns the estimated number of ticks as a number.\n * @param {Date} minTime - The minimum time in the domain\n * @param {Date} maxTime - The maximum time in the domain\n * @param {number} every - The interval count (e.g., 1 for \"1second\")\n * @param {string} interval - The interval unit (e.g., \"second\", \"day\")\n * @returns {number} The estimated number of ticks\n */\n function getEstimatedTickCount(minTime, maxTime, every, interval) {\n if (every <= 0 || minTime > maxTime) {\n return Infinity;\n }\n const timeDiffMs = maxTime - minTime;\n const intervalMs = dayjs.duration({ [interval ?? 'day']: every }).asMilliseconds();\n if (intervalMs <= 0) {\n return Infinity;\n }\n return Math.ceil(timeDiffMs / intervalMs);\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function makeGrid(theSidePad, theTopPad, w, h) {\n const dateFormat = diagObj.db.getDateFormat();\n const userAxisFormat = diagObj.db.getAxisFormat();\n let axisFormat;\n if (userAxisFormat) {\n axisFormat = userAxisFormat;\n } else if (dateFormat === 'D') {\n axisFormat = '%d';\n } else {\n axisFormat = conf.axisFormat ?? '%Y-%m-%d';\n }\n\n let bottomXAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(axisFormat));\n\n const reTickInterval = /^([1-9]\\d*)(millisecond|second|minute|hour|day|week|month)$/;\n const resultTickInterval = reTickInterval.exec(\n diagObj.db.getTickInterval() || conf.tickInterval\n );\n\n if (resultTickInterval !== null) {\n const every = parseInt(resultTickInterval[1], 10);\n if (isNaN(every) || every <= 0) {\n log.warn(\n `Invalid tick interval value: \"${resultTickInterval[1]}\". Skipping custom tick interval.`\n );\n // Skip applying custom ticks\n } else {\n const interval = resultTickInterval[2];\n const weekday = diagObj.db.getWeekday() || conf.weekday;\n\n // Get the time domain to check tick count\n const domain = timeScale.domain();\n const minTime = domain[0];\n const maxTime = domain[1];\n const estimatedTicks = getEstimatedTickCount(minTime, maxTime, every, interval);\n\n if (estimatedTicks > MAX_TICK_COUNT) {\n log.warn(\n `The tick interval \"${every}${interval}\" would generate ${estimatedTicks} ticks, ` +\n `which exceeds the maximum allowed (${MAX_TICK_COUNT}). ` +\n `This may indicate an invalid date or time range. Skipping custom tick interval.`\n );\n // D3 will use its default automatic tick generation\n } else {\n switch (interval) {\n case 'millisecond':\n bottomXAxis.ticks(timeMillisecond.every(every));\n break;\n case 'second':\n bottomXAxis.ticks(timeSecond.every(every));\n break;\n case 'minute':\n bottomXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n bottomXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n bottomXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n bottomXAxis.ticks(mapWeekdayToTimeFunction[weekday].every(every));\n break;\n case 'month':\n bottomXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(bottomXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n\n if (diagObj.db.topAxisEnabled() || conf.topAxis) {\n let topXAxis = axisTop(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(axisFormat));\n\n if (resultTickInterval !== null) {\n const every = parseInt(resultTickInterval[1], 10);\n if (isNaN(every) || every <= 0) {\n log.warn(\n `Invalid tick interval value: \"${resultTickInterval[1]}\". Skipping custom tick interval.`\n );\n // Skip applying custom ticks\n } else {\n const interval = resultTickInterval[2];\n const weekday = diagObj.db.getWeekday() || conf.weekday;\n\n // Get the time domain to check tick count\n const domain = timeScale.domain();\n const minTime = domain[0];\n const maxTime = domain[1];\n const estimatedTicks = getEstimatedTickCount(minTime, maxTime, every, interval);\n\n // Only apply custom ticks if the count is reasonable\n if (estimatedTicks <= MAX_TICK_COUNT) {\n switch (interval) {\n case 'millisecond':\n topXAxis.ticks(timeMillisecond.every(every));\n break;\n case 'second':\n topXAxis.ticks(timeSecond.every(every));\n break;\n case 'minute':\n topXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n topXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n topXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n topXAxis.ticks(mapWeekdayToTimeFunction[weekday].every(every));\n break;\n case 'month':\n topXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + theTopPad + ')')\n .call(topXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10);\n // .attr('dy', '1em');\n }\n }\n\n /**\n * @param theGap\n * @param theTopPad\n */\n function vertLabels(theGap, theTopPad) {\n let prevGap = 0;\n\n const numOccurrences = Object.keys(categoryHeights).map((d) => [d, categoryHeights[d]]);\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurrences)\n .enter()\n .append(function (d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (const [j, row] of rows.entries()) {\n const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) {\n tspan.setAttribute('dy', '1em');\n }\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurrences[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('font-size', conf.sectionFontSize)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d[0] === category) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = diagObj.db.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n /**\n * From this stack exchange question:\n * http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n *\n * @param arr\n */\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n", "const getStyles = (options) =>\n `\n .mermaid-main-font {\n font-family: ${options.fontFamily};\n }\n\n .exclude-range {\n fill: ${options.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-family: ${options.fontFamily};\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n }\n\n .grid .tick text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: ${options.fontFamily};\n }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n font-family: ${options.fontFamily};\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n }\n\n\n /* Special case clickable */\n\n .task.clickable {\n cursor: pointer;\n }\n\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n /* Done task text displayed outside the bar sits against the diagram background,\n not against the done-task bar, so it must use the outside/contrast color. */\n .doneText0.taskTextOutsideLeft,\n .doneText0.taskTextOutsideRight,\n .doneText1.taskTextOutsideLeft,\n .doneText1.taskTextOutsideRight,\n .doneText2.taskTextOutsideLeft,\n .doneText2.taskTextOutsideRight,\n .doneText3.taskTextOutsideLeft,\n .doneText3.taskTextOutsideRight {\n fill: ${options.taskTextOutsideColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n /* Done-crit task text outside the bar \u2014 same reasoning as doneText above. */\n .doneCritText0.taskTextOutsideLeft,\n .doneCritText0.taskTextOutsideRight,\n .doneCritText1.taskTextOutsideLeft,\n .doneCritText1.taskTextOutsideRight,\n .doneCritText2.taskTextOutsideLeft,\n .doneCritText2.taskTextOutsideRight,\n .doneCritText3.taskTextOutsideLeft,\n .doneCritText3.taskTextOutsideRight {\n fill: ${options.taskTextOutsideColor} !important;\n }\n\n .vert {\n stroke: ${options.vertLineColor};\n }\n\n .vertText {\n font-size: 15px;\n text-anchor: middle;\n fill: ${options.vertLineColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.titleColor || options.textColor};\n font-family: ${options.fontFamily};\n }\n`;\n\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport ganttParser from './parser/gantt.jison';\nimport ganttDb from './ganttDb.js';\nimport ganttRenderer from './ganttRenderer.js';\nimport ganttStyles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n parser: ganttParser,\n db: ganttDb,\n renderer: ganttRenderer,\n styles: ganttStyles,\n};\n"], + "mappings": "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AE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAE7B,EAAEK,EAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAE7B,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAEK,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEL,EAAEK,EAAI,CAA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", + "names": ["require_isoWeek", "__commonJSMin", "exports", "module", "e", "t", "i", "s", "a", "__name", "d", "n", "o", "r", "u", "require_customParseFormat", "__commonJSMin", "exports", "module", "e", "t", "n", "i", "o", "s", "a", "__name", "f", "h", "u", "d", "r", "c", "l", "m", "M", "Y", "p", "v", "D", "w", "g", "y", "L", "require_advancedFormat", "__commonJSMin", "exports", "module", "e", "t", "r", "n", "s", "a", "require_duration", "__commonJSMin", "exports", "module", "s", "n", "i", "e", "r", "o", "u", "d", "a", "h", "c", "__name", "t", "g", "f", "m", "l", "$", "y", "v", "p", "parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "gantt_default", "parser", "import_sanitize_url", "import_dayjs", "import_isoWeek", "import_customParseFormat", "import_advancedFormat", "dayjs", "dayjsIsoWeek", "dayjsCustomParseFormat", "dayjsAdvancedFormat", "WEEKEND_START_DAY", "dateFormat", "axisFormat", "tickInterval", "todayMarker", "includes", "excludes", "links", "sections", "tasks", "currentSection", "displayMode", "tags", "funs", "diagramId", "inclusiveEndDates", "topAxis", "weekday", "weekend", "lastOrder", "clear", "__name", "taskCnt", "lastTask", "lastTaskID", "rawTasks", "setDiagramId", "id", "setAxisFormat", "txt", "getAxisFormat", "setTickInterval", "getTickInterval", "setTodayMarker", "getTodayMarker", "setDateFormat", "enableInclusiveEndDates", "endDatesAreInclusive", "enableTopAxis", "topAxisEnabled", "setDisplayMode", "getDisplayMode", "getDateFormat", "setIncludes", "getIncludes", "setExcludes", "getExcludes", "getLinks", "addSection", "getSections", "getTasks", "allItemsProcessed", "compileTasks", "maxDepth", "iterationCount", "isInvalidDate", "date", "formattedDate", "dateOnly", "setWeekday", "getWeekday", "setWeekend", "startDay", "checkTaskDates", "task", "startTime", "originalEndTime", "fixedEndTime", "renderEndTime", "fixTaskDates", "endTime", "invalid", "maxEndTime", "getStartDate", "prevTime", "str", "format", "trimmedFormat", "afterStatement", "latestTask", "findTaskById", "today", "mDate", "log", "d", "parseDuration", "statement", "getEndDate", "inclusive", "untilStatement", "earliestTask", "parsedDate", "durationValue", "durationUnit", "newEndTime", "parseId", "idStr", "compileData", "prevTask", "dataStr", "ds", "data", "getTaskTags", "i", "endTimeData", "parseData", "prevTaskId", "taskDb", "addTask", "descr", "rawTask", "taskInfo", "pos", "addTaskOrg", "newTask", "compileTask", "allProcessed", "setLink", "ids", "_linkStr", "linkStr", "getConfig", "pushFun", "setClass", "className", "setClickFun", "functionName", "functionArgs", "argList", "item", "utils_default", "callbackFunction", "prefixedId", "elem", "setClickEvent", "bindFunctions", "element", "fun", "ganttDb_default", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "setAccDescription", "getAccDescription", "matchFound", "t", "pattern", "regex", "import_dayjs", "import_duration", "dayjs", "dayjsDuration", "setConf", "__name", "log", "mapWeekdayToTimeFunction", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "timeSunday", "getMaxIntersections", "tasks", "orderOffset", "timeline", "sorted", "a", "b", "maxIntersections", "element", "j", "w", "MAX_TICK_COUNT", "draw", "text", "id", "version", "diagObj", "conf", "getConfig", "securityLevel", "sandboxElement", "select_default", "root", "doc", "elem", "taskArray", "categories", "checkUnique", "categoryHeights", "h", "categoryElements", "intersections", "category", "categoryHeight", "task", "svg", "timeScale", "time", "min", "d", "max", "taskCompare", "taskA", "taskB", "result", "makeGantt", "configureSvgSize", "pageWidth", "pageHeight", "barHeight", "gap", "topPadding", "leftPadding", "colorScale", "linear", "hcl_default", "drawExcludeDays", "makeGrid", "drawRects", "vertLabels", "drawToday", "theArray", "theGap", "theTopPad", "theSidePad", "theBarHeight", "theColorScale", "uniqueTasks", "item", "i", "rectangles", "links", "res", "classStr", "secNum", "taskClass", "startX", "endX", "textWidth", "taskType", "o", "taskRect", "taskText", "oldParent", "Link", "excludes", "includes", "minTime", "maxTime", "startTime", "endTime", "dateFormat", "excludeRanges", "range", "getEstimatedTickCount", "every", "interval", "timeDiffMs", "intervalMs", "userAxisFormat", "axisFormat", "bottomXAxis", "axisBottom", "timeFormat", "resultTickInterval", "weekday", "domain", "estimatedTicks", "millisecond", "second", "timeMinute", "timeHour", "timeDay", "timeMonth", "topXAxis", "axisTop", "prevGap", "numOccurrences", "rows", "common_default", "dy", "svgLabel", "row", "tspan", "todayMarker", "todayG", "today", "todayLine", "arr", "hash", "l", "ganttRenderer_default", "getStyles", "__name", "options", "styles_default", "diagram", "gantt_default", "ganttDb_default", "ganttRenderer_default", "styles_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/gitGraph-HDMCJU4V-C6Y2HLJ7.mjs b/assets/mermaid/chunks/mermaid.esm.min/gitGraph-HDMCJU4V-C6Y2HLJ7.mjs deleted file mode 100644 index bed3877..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/gitGraph-HDMCJU4V-C6Y2HLJ7.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as r,b as e}from"./chunk-NHJX6F6M.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import"./chunk-VELTKBKT.mjs";export{r as GitGraphModule,e as createGitGraphServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/gitGraph-WXDBUCRP-R675I2BI.mjs b/assets/mermaid/chunks/mermaid.esm.min/gitGraph-WXDBUCRP-R675I2BI.mjs new file mode 100644 index 0000000..0cda49b --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/gitGraph-WXDBUCRP-R675I2BI.mjs @@ -0,0 +1 @@ +import{a as r,b as e}from"./chunk-J5EP6P6S.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{r as GitGraphModule,e as createGitGraphServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/info-3K5VOQVL-GYCQBKJT.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/gitGraph-WXDBUCRP-R675I2BI.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/info-3K5VOQVL-GYCQBKJT.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/gitGraph-WXDBUCRP-R675I2BI.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-FCDOK2W6.mjs b/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-FCDOK2W6.mjs deleted file mode 100644 index 3b791d1..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-FCDOK2W6.mjs +++ /dev/null @@ -1,65 +0,0 @@ -import{a as Q}from"./chunk-AEOMTBSW.mjs";import{a as X}from"./chunk-TJ4WWVTA.mjs";import{a as ee}from"./chunk-TU3PZOEN.mjs";import"./chunk-AHTCUU5T.mjs";import"./chunk-JVPIJFVP.mjs";import"./chunk-SYGLAQYM.mjs";import"./chunk-NHJX6F6M.mjs";import"./chunk-F3E5R7LK.mjs";import"./chunk-ZX4KS3OZ.mjs";import{f as Z,l as U,m as J}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{F as B,Q as W,R as N,S as j,T as _,U as z,V as F,W as K,aa as V,j as H,s as S}from"./chunk-3UWU4A3N.mjs";import{b as $,h as Y}from"./chunk-MGPAVIPZ.mjs";import"./chunk-MFSPT3DZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as p}from"./chunk-VELTKBKT.mjs";var u={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4};var pe=H.gitGraph,M=p(()=>U({...pe,...S().gitGraph}),"getConfig"),i=new ee(()=>{let r=M(),e=r.mainBranchName,n=r.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:n}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});function q(){return Z({length:7})}p(q,"getID");function he(r,e){let n=Object.create(null);return r.reduce((o,t)=>{let a=e(t);return n[a]||(n[a]=!0,o.push(t)),o},[])}p(he,"uniqBy");var ge=p(function(r){i.records.direction=r},"setDirection"),fe=p(function(r){$.debug("options str",r),r=r?.trim(),r=r||"{}";try{i.records.options=JSON.parse(r)}catch(e){$.error("error while parsing gitGraph options",e.message)}},"setOptions"),le=p(function(){return i.records.options},"getOptions"),ye=p(function(r){let e=r.msg,n=r.id,o=r.type,t=r.tags;$.info("commit",e,n,o,t),$.debug("Entering commit:",e,n,o,t);let a=M();n=B.sanitizeText(n,a),e=B.sanitizeText(e,a),t=t?.map(m=>B.sanitizeText(m,a));let d={id:n||i.records.seq+"-"+q(),message:e,seq:i.records.seq++,type:o??u.NORMAL,tags:t??[],parents:i.records.head==null?[]:[i.records.head.id],branch:i.records.currBranch};i.records.head=d,$.info("main branch",a.mainBranchName),i.records.commits.has(d.id)&&$.warn(`Commit ID ${d.id} already exists`),i.records.commits.set(d.id,d),i.records.branches.set(i.records.currBranch,d.id),$.debug("in pushCommit "+d.id)},"commit"),xe=p(function(r){let e=r.name,n=r.order;if(e=B.sanitizeText(e,M()),i.records.branches.has(e))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`);i.records.branches.set(e,i.records.head!=null?i.records.head.id:null),i.records.branchConfig.set(e,{name:e,order:n}),re(e),$.debug("in createBranch")},"branch"),ue=p(r=>{let e=r.branch,n=r.id,o=r.type,t=r.tags,a=M();e=B.sanitizeText(e,a),n&&(n=B.sanitizeText(n,a));let d=i.records.branches.get(i.records.currBranch),m=i.records.branches.get(e),s=d?i.records.commits.get(d):void 0,h=m?i.records.commits.get(m):void 0;if(s&&h&&s.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(i.records.currBranch===e){let c=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw c.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},c}if(s===void 0||!s){let c=new Error(`Incorrect usage of "merge". Current branch (${i.records.currBranch})has no commits`);throw c.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},c}if(!i.records.branches.has(e)){let c=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw c.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},c}if(h===void 0||!h){let c=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw c.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},c}if(s===h){let c=new Error('Incorrect usage of "merge". Both branches have same head');throw c.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},c}if(n&&i.records.commits.has(n)){let c=new Error('Incorrect usage of "merge". Commit with id:'+n+" already exists, use different custom id");throw c.hash={text:`merge ${e} ${n} ${o} ${t?.join(" ")}`,token:`merge ${e} ${n} ${o} ${t?.join(" ")}`,expected:[`merge ${e} ${n}_UNIQUE ${o} ${t?.join(" ")}`]},c}let g=m||"",l={id:n||`${i.records.seq}-${q()}`,message:`merged branch ${e} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,g],branch:i.records.currBranch,type:u.MERGE,customType:o,customId:!!n,tags:t??[]};i.records.head=l,i.records.commits.set(l.id,l),i.records.branches.set(i.records.currBranch,l.id),$.debug(i.records.branches),$.debug("in mergeBranch")},"merge"),$e=p(function(r){let e=r.id,n=r.targetId,o=r.tags,t=r.parent;$.debug("Entering cherryPick:",e,n,o);let a=M();if(e=B.sanitizeText(e,a),n=B.sanitizeText(n,a),o=o?.map(s=>B.sanitizeText(s,a)),t=B.sanitizeText(t,a),!e||!i.records.commits.has(e)){let s=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw s.hash={text:`cherryPick ${e} ${n}`,token:`cherryPick ${e} ${n}`,expected:["cherry-pick abc"]},s}let d=i.records.commits.get(e);if(d===void 0||!d)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(t&&!(Array.isArray(d.parents)&&d.parents.includes(t)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let m=d.branch;if(d.type===u.MERGE&&!t)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!n||!i.records.commits.has(n)){if(m===i.records.currBranch){let l=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw l.hash={text:`cherryPick ${e} ${n}`,token:`cherryPick ${e} ${n}`,expected:["cherry-pick abc"]},l}let s=i.records.branches.get(i.records.currBranch);if(s===void 0||!s){let l=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw l.hash={text:`cherryPick ${e} ${n}`,token:`cherryPick ${e} ${n}`,expected:["cherry-pick abc"]},l}let h=i.records.commits.get(s);if(h===void 0||!h){let l=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw l.hash={text:`cherryPick ${e} ${n}`,token:`cherryPick ${e} ${n}`,expected:["cherry-pick abc"]},l}let g={id:i.records.seq+"-"+q(),message:`cherry-picked ${d?.message} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,d.id],branch:i.records.currBranch,type:u.CHERRY_PICK,tags:o?o.filter(Boolean):[`cherry-pick:${d.id}${d.type===u.MERGE?`|parent:${t}`:""}`]};i.records.head=g,i.records.commits.set(g.id,g),i.records.branches.set(i.records.currBranch,g.id),$.debug(i.records.branches),$.debug("in cherryPick")}},"cherryPick"),re=p(function(r){if(r=B.sanitizeText(r,M()),i.records.branches.has(r)){i.records.currBranch=r;let e=i.records.branches.get(i.records.currBranch);e===void 0||!e?i.records.head=null:i.records.head=i.records.commits.get(e)??null}else{let e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${r}")`);throw e.hash={text:`checkout ${r}`,token:`checkout ${r}`,expected:[`branch ${r}`]},e}},"checkout");function te(r,e,n){let o=r.indexOf(e);o===-1?r.push(n):r.splice(o,1,n)}p(te,"upsert");function ne(r){let e=r.reduce((t,a)=>t.seq>a.seq?t:a,r[0]),n="";r.forEach(function(t){t===e?n+=" *":n+=" |"});let o=[n,e.id,e.seq];for(let t in i.records.branches)i.records.branches.get(t)===e.id&&o.push(t);if($.debug(o.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let t=i.records.commits.get(e.parents[0]);te(r,e,t),e.parents[1]&&r.push(i.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let t=i.records.commits.get(e.parents[0]);te(r,e,t)}}r=he(r,t=>t.id),ne(r)}p(ne,"prettyPrintCommitHistory");var be=p(function(){$.debug(i.records.commits);let r=ae()[0];ne([r])},"prettyPrint"),Ce=p(function(){i.reset(),W()},"clear"),Be=p(function(){return[...i.records.branchConfig.values()].map((e,n)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${n}`)}).sort((e,n)=>(e.order??0)-(n.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),we=p(function(){return i.records.branches},"getBranches"),ke=p(function(){return i.records.commits},"getCommits"),ae=p(function(){let r=[...i.records.commits.values()];return r.forEach(function(e){$.debug(e.id)}),r.sort((e,n)=>e.seq-n.seq),r},"getCommitsArray"),Te=p(function(){return i.records.currBranch},"getCurrentBranch"),Ee=p(function(){return i.records.direction},"getDirection"),De=p(function(){return i.records.head},"getHead"),O={commitType:u,getConfig:M,setDirection:ge,setOptions:fe,getOptions:le,commit:ye,branch:xe,merge:ue,cherryPick:$e,checkout:re,prettyPrint:be,clear:Ce,getBranchesAsObjArray:Be,getBranches:we,getCommits:ke,getCommitsArray:ae,getCurrentBranch:Te,getDirection:Ee,getHead:De,setAccTitle:N,getAccTitle:j,getAccDescription:z,setAccDescription:_,setDiagramTitle:F,getDiagramTitle:K};var Me=p((r,e)=>{Q(r,e),r.dir&&e.setDirection(r.dir);for(let n of r.statements)Pe(n,e)},"populate"),Pe=p((r,e)=>{let o={Commit:p(t=>e.commit(Ge(t)),"Commit"),Branch:p(t=>e.branch(Le(t)),"Branch"),Merge:p(t=>e.merge(ve(t)),"Merge"),Checkout:p(t=>e.checkout(Oe(t)),"Checkout"),CherryPicking:p(t=>e.cherryPick(Re(t)),"CherryPicking")}[r.$type];o?o(r):$.error(`Unknown statement type: ${r.$type}`)},"parseStatement"),Ge=p(r=>({id:r.id,msg:r.message??"",type:r.type!==void 0?u[r.type]:u.NORMAL,tags:r.tags??void 0}),"parseCommit"),Le=p(r=>({name:r.name,order:r.order??0}),"parseBranch"),ve=p(r=>({branch:r.branch,id:r.id??"",type:r.type!==void 0?u[r.type]:void 0,tags:r.tags??void 0}),"parseMerge"),Oe=p(r=>r.branch,"parseCheckout"),Re=p(r=>({id:r.id,targetId:"",tags:r.tags?.length===0?void 0:r.tags,parent:r.parent}),"parseCherryPicking"),oe={parse:p(async r=>{let e=await X("gitGraph",r);$.debug(e),Me(e,O)},"parse")};var E=10,D=40,w=4,k=2,P=8,b=new Map,C=new Map,R=30,G=new Map,A=[],T=0,x="LR",Ae=p(()=>{b.clear(),C.clear(),G.clear(),T=0,A=[],x="LR"},"clear"),ie=p(r=>{let e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof r=="string"?r.split(/\\n|\n|/gi):r).forEach(o=>{let t=document.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),t.setAttribute("dy","1em"),t.setAttribute("x","0"),t.setAttribute("class","row"),t.textContent=o.trim(),e.appendChild(t)}),e},"drawText"),ce=p(r=>{let e,n,o;return x==="BT"?(n=p((t,a)=>t<=a,"comparisonFunc"),o=1/0):(n=p((t,a)=>t>=a,"comparisonFunc"),o=0),r.forEach(t=>{let a=x==="TB"||x=="BT"?C.get(t)?.y:C.get(t)?.x;a!==void 0&&n(a,o)&&(e=t,o=a)}),e},"findClosestParent"),Ie=p(r=>{let e="",n=1/0;return r.forEach(o=>{let t=C.get(o).y;t<=n&&(e=o,n=t)}),e||void 0},"findClosestParentBT"),qe=p((r,e,n)=>{let o=n,t=n,a=[];r.forEach(d=>{let m=e.get(d);if(!m)throw new Error(`Commit not found for key ${d}`);m.parents.length?(o=Se(m),t=Math.max(o,t)):a.push(m),We(m,o)}),o=t,a.forEach(d=>{Ne(d,o,n)}),r.forEach(d=>{let m=e.get(d);if(m?.parents.length){let s=Ie(m.parents);o=C.get(s).y-D,o<=t&&(t=o);let h=b.get(m.branch).pos,g=o-E;C.set(m.id,{x:h,y:g})}})},"setParallelBTPos"),He=p(r=>{let e=ce(r.parents.filter(o=>o!==null));if(!e)throw new Error(`Closest parent not found for commit ${r.id}`);let n=C.get(e)?.y;if(n===void 0)throw new Error(`Closest parent position not found for commit ${r.id}`);return n},"findClosestParentPos"),Se=p(r=>He(r)+D,"calculateCommitPosition"),We=p((r,e)=>{let n=b.get(r.branch);if(!n)throw new Error(`Branch not found for commit ${r.id}`);let o=n.pos,t=e+E;return C.set(r.id,{x:o,y:t}),{x:o,y:t}},"setCommitPosition"),Ne=p((r,e,n)=>{let o=b.get(r.branch);if(!o)throw new Error(`Branch not found for commit ${r.id}`);let t=e+n,a=o.pos;C.set(r.id,{x:a,y:t})},"setRootPosition"),je=p((r,e,n,o,t,a)=>{if(a===u.HIGHLIGHT)r.append("rect").attr("x",n.x-10).attr("y",n.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${t%P} ${o}-outer`),r.append("rect").attr("x",n.x-6).attr("y",n.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${t%P} ${o}-inner`);else if(a===u.CHERRY_PICK)r.append("circle").attr("cx",n.x).attr("cy",n.y).attr("r",10).attr("class",`commit ${e.id} ${o}`),r.append("circle").attr("cx",n.x-3).attr("cy",n.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${o}`),r.append("circle").attr("cx",n.x+3).attr("cy",n.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${o}`),r.append("line").attr("x1",n.x+3).attr("y1",n.y+1).attr("x2",n.x).attr("y2",n.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${o}`),r.append("line").attr("x1",n.x-3).attr("y1",n.y+1).attr("x2",n.x).attr("y2",n.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${o}`);else{let d=r.append("circle");if(d.attr("cx",n.x),d.attr("cy",n.y),d.attr("r",e.type===u.MERGE?9:10),d.attr("class",`commit ${e.id} commit${t%P}`),a===u.MERGE){let m=r.append("circle");m.attr("cx",n.x),m.attr("cy",n.y),m.attr("r",6),m.attr("class",`commit ${o} ${e.id} commit${t%P}`)}a===u.REVERSE&&r.append("path").attr("d",`M ${n.x-5},${n.y-5}L${n.x+5},${n.y+5}M${n.x-5},${n.y+5}L${n.x+5},${n.y-5}`).attr("class",`commit ${o} ${e.id} commit${t%P}`)}},"drawCommitBullet"),_e=p((r,e,n,o,t)=>{if(e.type!==u.CHERRY_PICK&&(e.customId&&e.type===u.MERGE||e.type!==u.MERGE)&&t.showCommitLabel){let a=r.append("g"),d=a.insert("rect").attr("class","commit-label-bkg"),m=a.append("text").attr("x",o).attr("y",n.y+25).attr("class","commit-label").text(e.id),s=m.node()?.getBBox();if(s&&(d.attr("x",n.posWithOffset-s.width/2-k).attr("y",n.y+13.5).attr("width",s.width+2*k).attr("height",s.height+2*k),x==="TB"||x==="BT"?(d.attr("x",n.x-(s.width+4*w+5)).attr("y",n.y-12),m.attr("x",n.x-(s.width+4*w)).attr("y",n.y+s.height-12)):m.attr("x",n.posWithOffset-s.width/2),t.rotateCommitLabel))if(x==="TB"||x==="BT")m.attr("transform","rotate(-45, "+n.x+", "+n.y+")"),d.attr("transform","rotate(-45, "+n.x+", "+n.y+")");else{let h=-7.5-(s.width+10)/25*9.5,g=10+s.width/25*8.5;a.attr("transform","translate("+h+", "+g+") rotate(-45, "+o+", "+n.y+")")}}},"drawCommitLabel"),ze=p((r,e,n,o)=>{if(e.tags.length>0){let t=0,a=0,d=0,m=[];for(let s of e.tags.reverse()){let h=r.insert("polygon"),g=r.append("circle"),l=r.append("text").attr("y",n.y-16-t).attr("class","tag-label").text(s),c=l.node()?.getBBox();if(!c)throw new Error("Tag bbox not found");a=Math.max(a,c.width),d=Math.max(d,c.height),l.attr("x",n.posWithOffset-c.width/2),m.push({tag:l,hole:g,rect:h,yOffset:t}),t+=20}for(let{tag:s,hole:h,rect:g,yOffset:l}of m){let c=d/2,y=n.y-19.2-l;if(g.attr("class","tag-label-bkg").attr("points",` - ${o-a/2-w/2},${y+k} - ${o-a/2-w/2},${y-k} - ${n.posWithOffset-a/2-w},${y-c-k} - ${n.posWithOffset+a/2+w},${y-c-k} - ${n.posWithOffset+a/2+w},${y+c+k} - ${n.posWithOffset-a/2-w},${y+c+k}`),h.attr("cy",y).attr("cx",o-a/2+w/2).attr("r",1.5).attr("class","tag-hole"),x==="TB"||x==="BT"){let f=o+l;g.attr("class","tag-label-bkg").attr("points",` - ${n.x},${f+2} - ${n.x},${f-2} - ${n.x+E},${f-c-2} - ${n.x+E+a+4},${f-c-2} - ${n.x+E+a+4},${f+c+2} - ${n.x+E},${f+c+2}`).attr("transform","translate(12,12) rotate(45, "+n.x+","+o+")"),h.attr("cx",n.x+w/2).attr("cy",f).attr("transform","translate(12,12) rotate(45, "+n.x+","+o+")"),s.attr("x",n.x+5).attr("y",f+3).attr("transform","translate(14,14) rotate(45, "+n.x+","+o+")")}}}},"drawCommitTags"),Fe=p(r=>{switch(r.customType??r.type){case u.NORMAL:return"commit-normal";case u.REVERSE:return"commit-reverse";case u.HIGHLIGHT:return"commit-highlight";case u.MERGE:return"commit-merge";case u.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),Ke=p((r,e,n,o)=>{let t={x:0,y:0};if(r.parents.length>0){let a=ce(r.parents);if(a){let d=o.get(a)??t;return e==="TB"?d.y+D:e==="BT"?(o.get(r.id)??t).y-D:d.x+D}}else return e==="TB"?R:e==="BT"?(o.get(r.id)??t).y-D:0;return 0},"calculatePosition"),Ve=p((r,e,n)=>{let o=x==="BT"&&n?e:e+E,t=x==="TB"||x==="BT"?o:b.get(r.branch)?.pos,a=x==="TB"||x==="BT"?b.get(r.branch)?.pos:o;if(a===void 0||t===void 0)throw new Error(`Position were undefined for commit ${r.id}`);return{x:a,y:t,posWithOffset:o}},"getCommitPosition"),se=p((r,e,n,o)=>{let t=r.append("g").attr("class","commit-bullets"),a=r.append("g").attr("class","commit-labels"),d=x==="TB"||x==="BT"?R:0,m=[...e.keys()],s=o.parallelCommits??!1,h=p((l,c)=>{let y=e.get(l)?.seq,f=e.get(c)?.seq;return y!==void 0&&f!==void 0?y-f:0},"sortKeys"),g=m.sort(h);x==="BT"&&(s&&qe(g,e,d),g=g.reverse()),g.forEach(l=>{let c=e.get(l);if(!c)throw new Error(`Commit not found for key ${l}`);s&&(d=Ke(c,x,d,C));let y=Ve(c,d,s);if(n){let f=Fe(c),v=c.customType??c.type,I=b.get(c.branch)?.index??0;je(t,c,y,f,I,v),_e(a,c,y,d,o),ze(a,c,y,d)}x==="TB"||x==="BT"?C.set(c.id,{x:y.x,y:y.posWithOffset}):C.set(c.id,{x:y.posWithOffset,y:y.y}),d=x==="BT"&&s?d+D:d+D+E,d>T&&(T=d)})},"drawCommits"),Ye=p((r,e,n,o,t)=>{let d=(x==="TB"||x==="BT"?n.xh.branch===d,"isOnBranchToGetCurve"),s=p(h=>h.seq>r.seq&&h.seqs(h)&&m(h))},"shouldRerouteArrow"),L=p((r,e,n=0)=>{let o=r+Math.abs(r-e)/2;if(n>5)return o;if(A.every(d=>Math.abs(d-o)>=10))return A.push(o),o;let a=Math.abs(r-e);return L(r,e-a/5,n+1)},"findLane"),Ze=p((r,e,n,o)=>{let t=C.get(e.id),a=C.get(n.id);if(t===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${n.id}`);let d=Ye(e,n,t,a,o),m="",s="",h=0,g=0,l=b.get(n.branch)?.index;n.type===u.MERGE&&e.id!==n.parents[0]&&(l=b.get(e.branch)?.index);let c;if(d){m="A 10 10, 0, 0, 0,",s="A 10 10, 0, 0, 1,",h=10,g=10;let y=t.ya.x&&(m="A 20 20, 0, 0, 0,",s="A 20 20, 0, 0, 1,",h=20,g=20,n.type===u.MERGE&&e.id!==n.parents[0]?c=`M ${t.x} ${t.y} L ${t.x} ${a.y-h} ${s} ${t.x-g} ${a.y} L ${a.x} ${a.y}`:c=`M ${t.x} ${t.y} L ${a.x+h} ${t.y} ${m} ${a.x} ${t.y+g} L ${a.x} ${a.y}`),t.x===a.x&&(c=`M ${t.x} ${t.y} L ${a.x} ${a.y}`)):x==="BT"?(t.xa.x&&(m="A 20 20, 0, 0, 0,",s="A 20 20, 0, 0, 1,",h=20,g=20,n.type===u.MERGE&&e.id!==n.parents[0]?c=`M ${t.x} ${t.y} L ${t.x} ${a.y+h} ${m} ${t.x-g} ${a.y} L ${a.x} ${a.y}`:c=`M ${t.x} ${t.y} L ${a.x+h} ${t.y} ${s} ${a.x} ${t.y-g} L ${a.x} ${a.y}`),t.x===a.x&&(c=`M ${t.x} ${t.y} L ${a.x} ${a.y}`)):(t.ya.y&&(n.type===u.MERGE&&e.id!==n.parents[0]?c=`M ${t.x} ${t.y} L ${a.x-h} ${t.y} ${m} ${a.x} ${t.y-g} L ${a.x} ${a.y}`:c=`M ${t.x} ${t.y} L ${t.x} ${a.y+h} ${s} ${t.x+g} ${a.y} L ${a.x} ${a.y}`),t.y===a.y&&(c=`M ${t.x} ${t.y} L ${a.x} ${a.y}`));if(c===void 0)throw new Error("Line definition not found");r.append("path").attr("d",c).attr("class","arrow arrow"+l%P)},"drawArrow"),Ue=p((r,e)=>{let n=r.append("g").attr("class","commit-arrows");[...e.keys()].forEach(o=>{let t=e.get(o);t.parents&&t.parents.length>0&&t.parents.forEach(a=>{Ze(n,e.get(a),t,e)})})},"drawArrows"),Je=p((r,e,n)=>{let o=r.append("g");e.forEach((t,a)=>{let d=a%P,m=b.get(t.name)?.pos;if(m===void 0)throw new Error(`Position not found for branch ${t.name}`);let s=o.append("line");s.attr("x1",0),s.attr("y1",m),s.attr("x2",T),s.attr("y2",m),s.attr("class","branch branch"+d),x==="TB"?(s.attr("y1",R),s.attr("x1",m),s.attr("y2",T),s.attr("x2",m)):x==="BT"&&(s.attr("y1",T),s.attr("x1",m),s.attr("y2",R),s.attr("x2",m)),A.push(m);let h=t.name,g=ie(h),l=o.insert("rect"),y=o.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+d);y.node().appendChild(g);let f=g.getBBox();l.attr("class","branchLabelBkg label"+d).attr("rx",4).attr("ry",4).attr("x",-f.width-4-(n.rotateCommitLabel===!0?30:0)).attr("y",-f.height/2+8).attr("width",f.width+18).attr("height",f.height+4),y.attr("transform","translate("+(-f.width-14-(n.rotateCommitLabel===!0?30:0))+", "+(m-f.height/2-1)+")"),x==="TB"?(l.attr("x",m-f.width/2-10).attr("y",0),y.attr("transform","translate("+(m-f.width/2-5)+", 0)")):x==="BT"?(l.attr("x",m-f.width/2-10).attr("y",T),y.attr("transform","translate("+(m-f.width/2-5)+", "+T+")")):l.attr("transform","translate(-19, "+(m-f.height/2)+")")})},"drawBranches"),Xe=p(function(r,e,n,o,t){return b.set(r,{pos:e,index:n}),e+=50+(t?40:0)+(x==="TB"||x==="BT"?o.width/2:0),e},"setBranchPosition"),Qe=p(function(r,e,n,o){Ae(),$.debug("in gitgraph renderer",r+` -`,"id:",e,n);let t=o.db;if(!t.getConfig){$.error("getConfig method is not available on db");return}let a=t.getConfig(),d=a.rotateCommitLabel??!1;G=t.getCommits();let m=t.getBranchesAsObjArray();x=t.getDirection();let s=Y(`[id="${e}"]`),h=0;m.forEach((g,l)=>{let c=ie(g.name),y=s.append("g"),f=y.insert("g").attr("class","branchLabel"),v=f.insert("g").attr("class","label branch-label");v.node()?.appendChild(c);let I=c.getBBox();h=Xe(g.name,h,l,I,d),v.remove(),f.remove(),y.remove()}),se(s,G,!1,a),a.showBranches&&Je(s,m,a),Ue(s,G),se(s,G,!0,a),J.insertTitle(s,"gitTitleText",a.titleTopMargin??0,t.getDiagramTitle()),V(void 0,s,a.diagramPadding,a.useMaxWidth)},"draw"),me={draw:Qe};var et=p(r=>` - .commit-id, - .commit-msg, - .branch-label { - fill: lightgrey; - color: lightgrey; - font-family: 'trebuchet ms', verdana, arial, sans-serif; - font-family: var(--mermaid-font-family); - } - ${[0,1,2,3,4,5,6,7].map(e=>` - .branch-label${e} { fill: ${r["gitBranchLabel"+e]}; } - .commit${e} { stroke: ${r["git"+e]}; fill: ${r["git"+e]}; } - .commit-highlight${e} { stroke: ${r["gitInv"+e]}; fill: ${r["gitInv"+e]}; } - .label${e} { fill: ${r["git"+e]}; } - .arrow${e} { stroke: ${r["git"+e]}; } - `).join(` -`)} - - .branch { - stroke-width: 1; - stroke: ${r.lineColor}; - stroke-dasharray: 2; - } - .commit-label { font-size: ${r.commitLabelFontSize}; fill: ${r.commitLabelColor};} - .commit-label-bkg { font-size: ${r.commitLabelFontSize}; fill: ${r.commitLabelBackground}; opacity: 0.5; } - .tag-label { font-size: ${r.tagLabelFontSize}; fill: ${r.tagLabelColor};} - .tag-label-bkg { fill: ${r.tagLabelBackground}; stroke: ${r.tagLabelBorder}; } - .tag-hole { fill: ${r.textColor}; } - - .commit-merge { - stroke: ${r.primaryColor}; - fill: ${r.primaryColor}; - } - .commit-reverse { - stroke: ${r.primaryColor}; - fill: ${r.primaryColor}; - stroke-width: 3; - } - .commit-highlight-outer { - } - .commit-highlight-inner { - stroke: ${r.primaryColor}; - fill: ${r.primaryColor}; - } - - .arrow { stroke-width: 8; stroke-linecap: round; fill: none} - .gitTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${r.textColor}; - } -`,"getStyles"),de=et;var vt={parser:oe,db:O,renderer:me,styles:de};export{vt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-FCDOK2W6.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-FCDOK2W6.mjs.map deleted file mode 100644 index 3315b15..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-FCDOK2W6.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/git/gitGraphTypes.ts", "../../../src/diagrams/git/gitGraphAst.ts", "../../../src/diagrams/git/gitGraphParser.ts", "../../../src/diagrams/git/gitGraphRenderer.ts", "../../../src/diagrams/git/styles.js", "../../../src/diagrams/git/gitGraphDiagram.ts"], - "sourcesContent": ["import type { GitGraphDiagramConfig } from '../../config.type.js';\nimport type { DiagramDBBase } from '../../diagram-api/types.js';\n\nexport const commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4,\n} as const;\n\nexport interface CommitDB {\n msg: string;\n id: string;\n type: number;\n tags?: string[];\n}\n\nexport interface BranchDB {\n name: string;\n order: number;\n}\n\nexport interface MergeDB {\n branch: string;\n id: string;\n type?: number;\n tags?: string[];\n}\n\nexport interface CherryPickDB {\n id: string;\n targetId: string;\n parent: string;\n tags?: string[];\n}\n\nexport interface Commit {\n id: string;\n message: string;\n seq: number;\n type: number;\n tags: string[];\n parents: string[];\n branch: string;\n customType?: number;\n customId?: boolean;\n}\n\nexport interface GitGraph {\n statements: Statement[];\n}\n\nexport type Statement = CommitAst | BranchAst | MergeAst | CheckoutAst | CherryPickingAst;\n\nexport interface CommitAst {\n $type: 'Commit';\n id: string;\n message?: string;\n tags?: string[];\n type?: 'NORMAL' | 'REVERSE' | 'HIGHLIGHT';\n}\n\nexport interface BranchAst {\n $type: 'Branch';\n name: string;\n order?: number;\n}\n\nexport interface MergeAst {\n $type: 'Merge';\n branch: string;\n id?: string;\n tags?: string[];\n type?: 'NORMAL' | 'REVERSE' | 'HIGHLIGHT';\n}\n\nexport interface CheckoutAst {\n $type: 'Checkout';\n branch: string;\n}\n\nexport interface CherryPickingAst {\n $type: 'CherryPicking';\n id: string;\n parent: string;\n tags?: string[];\n}\n\nexport interface GitGraphDB extends DiagramDBBase {\n commitType: typeof commitType;\n setDirection: (dir: DiagramOrientation) => void;\n setOptions: (rawOptString: string) => void;\n getOptions: () => any;\n commit: (commitDB: CommitDB) => void;\n branch: (branchDB: BranchDB) => void;\n merge: (mergeDB: MergeDB) => void;\n cherryPick: (cherryPickDB: CherryPickDB) => void;\n checkout: (branch: string) => void;\n prettyPrint: () => void;\n clear: () => void;\n getBranchesAsObjArray: () => { name: string }[];\n getBranches: () => Map;\n getCommits: () => Map;\n getCommitsArray: () => Commit[];\n getCurrentBranch: () => string;\n getDirection: () => DiagramOrientation;\n getHead: () => Commit | null;\n}\n\nexport interface GitGraphDBParseProvider extends Partial {\n commitType: typeof commitType;\n setDirection: (dir: DiagramOrientation) => void;\n commit: (commitDB: CommitDB) => void;\n branch: (branchDB: BranchDB) => void;\n merge: (mergeDB: MergeDB) => void;\n cherryPick: (cherryPickDB: CherryPickDB) => void;\n checkout: (branch: string) => void;\n}\n\nexport interface GitGraphDBRenderProvider extends Partial {\n prettyPrint: () => void;\n clear: () => void;\n getBranchesAsObjArray: () => { name: string }[];\n getBranches: () => Map;\n getCommits: () => Map;\n getCommitsArray: () => Commit[];\n getCurrentBranch: () => string;\n getDirection: () => DiagramOrientation;\n getHead: () => Commit | null;\n getDiagramTitle: () => string;\n}\n\nexport type DiagramOrientation = 'LR' | 'TB' | 'BT';\n", "import { log } from '../../logger.js';\nimport { cleanAndMerge, random } from '../../utils.js';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport common from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport type {\n DiagramOrientation,\n Commit,\n GitGraphDB,\n CommitDB,\n MergeDB,\n BranchDB,\n CherryPickDB,\n} from './gitGraphTypes.js';\nimport { commitType } from './gitGraphTypes.js';\nimport { ImperativeState } from '../../utils/imperativeState.js';\n\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\n\nimport type { GitGraphDiagramConfig } from '../../config.type.js';\ninterface GitGraphState {\n commits: Map;\n head: Commit | null;\n branchConfig: Map;\n branches: Map;\n currBranch: string;\n direction: DiagramOrientation;\n seq: number;\n options: any;\n}\n\nconst DEFAULT_GITGRAPH_CONFIG: Required = DEFAULT_CONFIG.gitGraph;\nconst getConfig = (): Required => {\n const config = cleanAndMerge({\n ...DEFAULT_GITGRAPH_CONFIG,\n ...commonGetConfig().gitGraph,\n });\n return config;\n};\n\nconst state = new ImperativeState(() => {\n const config = getConfig();\n const mainBranchName = config.mainBranchName;\n const mainBranchOrder = config.mainBranchOrder;\n return {\n mainBranchName,\n commits: new Map(),\n head: null,\n branchConfig: new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]),\n branches: new Map([[mainBranchName, null]]),\n currBranch: mainBranchName,\n direction: 'LR',\n seq: 0,\n options: {},\n };\n});\n\nfunction getID() {\n return random({ length: 7 });\n}\n\n/**\n * @param list - list of items\n * @param fn - function to get the key\n */\nfunction uniqBy(list: any[], fn: (item: any) => any) {\n const recordMap = Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n\nexport const setDirection = function (dir: DiagramOrientation) {\n state.records.direction = dir;\n};\n\nexport const setOptions = function (rawOptString: string) {\n log.debug('options str', rawOptString);\n rawOptString = rawOptString?.trim();\n rawOptString = rawOptString || '{}';\n try {\n state.records.options = JSON.parse(rawOptString);\n } catch (e: any) {\n log.error('error while parsing gitGraph options', e.message);\n }\n};\n\nexport const getOptions = function () {\n return state.records.options;\n};\n\nexport const commit = function (commitDB: CommitDB) {\n let msg = commitDB.msg;\n let id = commitDB.id;\n const type = commitDB.type;\n let tags = commitDB.tags;\n\n log.info('commit', msg, id, type, tags);\n log.debug('Entering commit:', msg, id, type, tags);\n const config = getConfig();\n id = common.sanitizeText(id, config);\n msg = common.sanitizeText(msg, config);\n tags = tags?.map((tag) => common.sanitizeText(tag, config));\n const newCommit: Commit = {\n id: id ? id : state.records.seq + '-' + getID(),\n message: msg,\n seq: state.records.seq++,\n type: type ?? commitType.NORMAL,\n tags: tags ?? [],\n parents: state.records.head == null ? [] : [state.records.head.id],\n branch: state.records.currBranch,\n };\n state.records.head = newCommit;\n log.info('main branch', config.mainBranchName);\n if (state.records.commits.has(newCommit.id)) {\n log.warn(`Commit ID ${newCommit.id} already exists`);\n }\n state.records.commits.set(newCommit.id, newCommit);\n state.records.branches.set(state.records.currBranch, newCommit.id);\n log.debug('in pushCommit ' + newCommit.id);\n};\n\nexport const branch = function (branchDB: BranchDB) {\n let name = branchDB.name;\n const order = branchDB.order;\n name = common.sanitizeText(name, getConfig());\n if (state.records.branches.has(name)) {\n throw new Error(\n `Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ${name}\")`\n );\n }\n\n state.records.branches.set(name, state.records.head != null ? state.records.head.id : null);\n state.records.branchConfig.set(name, { name, order });\n checkout(name);\n log.debug('in createBranch');\n};\n\nexport const merge = (mergeDB: MergeDB): void => {\n let otherBranch = mergeDB.branch;\n let customId = mergeDB.id;\n const overrideType = mergeDB.type;\n const customTags = mergeDB.tags;\n const config = getConfig();\n otherBranch = common.sanitizeText(otherBranch, config);\n if (customId) {\n customId = common.sanitizeText(customId, config);\n }\n const currentBranchCheck = state.records.branches.get(state.records.currBranch);\n const otherBranchCheck = state.records.branches.get(otherBranch);\n const currentCommit = currentBranchCheck\n ? state.records.commits.get(currentBranchCheck)\n : undefined;\n const otherCommit: Commit | undefined = otherBranchCheck\n ? state.records.commits.get(otherBranchCheck)\n : undefined;\n if (currentCommit && otherCommit && currentCommit.branch === otherBranch) {\n throw new Error(`Cannot merge branch '${otherBranch}' into itself.`);\n }\n if (state.records.currBranch === otherBranch) {\n const error: any = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['branch abc'],\n };\n throw error;\n }\n if (currentCommit === undefined || !currentCommit) {\n const error: any = new Error(\n `Incorrect usage of \"merge\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['commit'],\n };\n throw error;\n }\n if (!state.records.branches.has(otherBranch)) {\n const error: any = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + ') does not exist'\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [`branch ${otherBranch}`],\n };\n throw error;\n }\n if (otherCommit === undefined || !otherCommit) {\n const error: any = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + ') has no commits'\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['\"commit\"'],\n };\n throw error;\n }\n if (currentCommit === otherCommit) {\n const error: any = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['branch abc'],\n };\n throw error;\n }\n if (customId && state.records.commits.has(customId)) {\n const error: any = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' +\n customId +\n ' already exists, use different custom id'\n );\n error.hash = {\n text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(' ')}`,\n token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(' ')}`,\n expected: [\n `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(' ')}`,\n ],\n };\n\n throw error;\n }\n\n const verifiedBranch: string = otherBranchCheck ? otherBranchCheck : ''; //figure out a cleaner way to do this\n\n const commit = {\n id: customId || `${state.records.seq}-${getID()}`,\n message: `merged branch ${otherBranch} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, verifiedBranch],\n branch: state.records.currBranch,\n type: commitType.MERGE,\n customType: overrideType,\n customId: customId ? true : false,\n tags: customTags ?? [],\n } satisfies Commit;\n state.records.head = commit;\n state.records.commits.set(commit.id, commit);\n state.records.branches.set(state.records.currBranch, commit.id);\n log.debug(state.records.branches);\n log.debug('in mergeBranch');\n};\n\nexport const cherryPick = function (cherryPickDB: CherryPickDB) {\n let sourceId = cherryPickDB.id;\n let targetId = cherryPickDB.targetId;\n let tags = cherryPickDB.tags;\n let parentCommitId = cherryPickDB.parent;\n log.debug('Entering cherryPick:', sourceId, targetId, tags);\n const config = getConfig();\n sourceId = common.sanitizeText(sourceId, config);\n targetId = common.sanitizeText(targetId, config);\n\n tags = tags?.map((tag) => common.sanitizeText(tag, config));\n\n parentCommitId = common.sanitizeText(parentCommitId, config);\n\n if (!sourceId || !state.records.commits.has(sourceId)) {\n const error: any = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n\n const sourceCommit = state.records.commits.get(sourceId);\n if (sourceCommit === undefined || !sourceCommit) {\n throw new Error('Incorrect usage of \"cherryPick\". Source commit id should exist and provided');\n }\n if (\n parentCommitId &&\n !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))\n ) {\n const error = new Error(\n 'Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.'\n );\n throw error;\n }\n const sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType.MERGE && !parentCommitId) {\n const error = new Error(\n 'Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.'\n );\n throw error;\n }\n if (!targetId || !state.records.commits.has(targetId)) {\n // cherry-pick source commit to current branch\n\n if (sourceCommitBranch === state.records.currBranch) {\n const error: any = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n const currentCommitId = state.records.branches.get(state.records.currBranch);\n if (currentCommitId === undefined || !currentCommitId) {\n const error: any = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n\n const currentCommit = state.records.commits.get(currentCommitId);\n if (currentCommit === undefined || !currentCommit) {\n const error: any = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n const commit = {\n id: state.records.seq + '-' + getID(),\n message: `cherry-picked ${sourceCommit?.message} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, sourceCommit.id],\n branch: state.records.currBranch,\n type: commitType.CHERRY_PICK,\n tags: tags\n ? tags.filter(Boolean)\n : [\n `cherry-pick:${sourceCommit.id}${\n sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : ''\n }`,\n ],\n };\n\n state.records.head = commit;\n state.records.commits.set(commit.id, commit);\n state.records.branches.set(state.records.currBranch, commit.id);\n log.debug(state.records.branches);\n log.debug('in cherryPick');\n }\n};\nexport const checkout = function (branch: string) {\n branch = common.sanitizeText(branch, getConfig());\n if (!state.records.branches.has(branch)) {\n const error: any = new Error(\n `Trying to checkout branch which is not yet created. (Help try using \"branch ${branch}\")`\n );\n error.hash = {\n text: `checkout ${branch}`,\n token: `checkout ${branch}`,\n expected: [`branch ${branch}`],\n };\n throw error;\n } else {\n state.records.currBranch = branch;\n const id = state.records.branches.get(state.records.currBranch);\n if (id === undefined || !id) {\n state.records.head = null;\n } else {\n state.records.head = state.records.commits.get(id) ?? null;\n }\n }\n};\n\n/**\n * @param arr - array\n * @param key - key\n * @param newVal - new value\n */\nfunction upsert(arr: any[], key: any, newVal: any) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newVal);\n } else {\n arr.splice(index, 1, newVal);\n }\n}\n\nfunction prettyPrintCommitHistory(commitArr: Commit[]) {\n const commit = commitArr.reduce((out, commit) => {\n if (out.seq > commit.seq) {\n return out;\n }\n return commit;\n }, commitArr[0]);\n let line = '';\n commitArr.forEach(function (c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n const label = [line, commit.id, commit.seq];\n for (const branch in state.records.branches) {\n if (state.records.branches.get(branch) === commit.id) {\n label.push(branch);\n }\n }\n log.debug(label.join(' '));\n if (commit.parents && commit.parents.length == 2 && commit.parents[0] && commit.parents[1]) {\n const newCommit = state.records.commits.get(commit.parents[0]);\n upsert(commitArr, commit, newCommit);\n if (commit.parents[1]) {\n commitArr.push(state.records.commits.get(commit.parents[1])!);\n }\n } else if (commit.parents.length == 0) {\n return;\n } else {\n if (commit.parents[0]) {\n const newCommit = state.records.commits.get(commit.parents[0]);\n upsert(commitArr, commit, newCommit);\n }\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n\nexport const prettyPrint = function () {\n log.debug(state.records.commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\n\nexport const clear = function () {\n state.reset();\n commonClear();\n};\n\nexport const getBranchesAsObjArray = function () {\n const branchesArray = [...state.records.branchConfig.values()]\n .map((branchConfig, i) => {\n if (branchConfig.order !== null && branchConfig.order !== undefined) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`),\n };\n })\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\n .map(({ name }) => ({ name }));\n\n return branchesArray;\n};\n\nexport const getBranches = function () {\n return state.records.branches;\n};\nexport const getCommits = function () {\n return state.records.commits;\n};\nexport const getCommitsArray = function () {\n const commitArr = [...state.records.commits.values()];\n commitArr.forEach(function (o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n};\nexport const getCurrentBranch = function () {\n return state.records.currBranch;\n};\nexport const getDirection = function () {\n return state.records.direction;\n};\nexport const getHead = function () {\n return state.records.head;\n};\n\nexport const db: GitGraphDB = {\n commitType,\n getConfig,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle,\n};\n", "import type { GitGraph } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { db } from './gitGraphAst.js';\nimport { commitType } from './gitGraphTypes.js';\nimport type {\n CheckoutAst,\n CherryPickingAst,\n MergeAst,\n CommitAst,\n BranchAst,\n GitGraphDBParseProvider,\n CommitDB,\n BranchDB,\n MergeDB,\n CherryPickDB,\n} from './gitGraphTypes.js';\n\nconst populate = (ast: GitGraph, db: GitGraphDBParseProvider) => {\n populateCommonDb(ast, db);\n // @ts-ignore: this wont exist if the direction is not specified\n if (ast.dir) {\n // @ts-ignore: this wont exist if the direction is not specified\n db.setDirection(ast.dir);\n }\n for (const statement of ast.statements) {\n parseStatement(statement, db);\n }\n};\n\nconst parseStatement = (statement: any, db: GitGraphDBParseProvider) => {\n const parsers: Record void> = {\n Commit: (stmt) => db.commit(parseCommit(stmt)),\n Branch: (stmt) => db.branch(parseBranch(stmt)),\n Merge: (stmt) => db.merge(parseMerge(stmt)),\n Checkout: (stmt) => db.checkout(parseCheckout(stmt)),\n CherryPicking: (stmt) => db.cherryPick(parseCherryPicking(stmt)),\n };\n\n const parser = parsers[statement.$type];\n if (parser) {\n parser(statement);\n } else {\n log.error(`Unknown statement type: ${statement.$type}`);\n }\n};\n\nconst parseCommit = (commit: CommitAst): CommitDB => {\n const commitDB: CommitDB = {\n id: commit.id,\n msg: commit.message ?? '',\n type: commit.type !== undefined ? commitType[commit.type] : commitType.NORMAL,\n tags: commit.tags ?? undefined,\n };\n return commitDB;\n};\n\nconst parseBranch = (branch: BranchAst): BranchDB => {\n const branchDB: BranchDB = {\n name: branch.name,\n order: branch.order ?? 0,\n };\n return branchDB;\n};\n\nconst parseMerge = (merge: MergeAst): MergeDB => {\n const mergeDB: MergeDB = {\n branch: merge.branch,\n id: merge.id ?? '',\n type: merge.type !== undefined ? commitType[merge.type] : undefined,\n tags: merge.tags ?? undefined,\n };\n return mergeDB;\n};\n\nconst parseCheckout = (checkout: CheckoutAst): string => {\n const branch = checkout.branch;\n return branch;\n};\n\nconst parseCherryPicking = (cherryPicking: CherryPickingAst): CherryPickDB => {\n const cherryPickDB: CherryPickDB = {\n id: cherryPicking.id,\n targetId: '',\n tags: cherryPicking.tags?.length === 0 ? undefined : cherryPicking.tags,\n parent: cherryPicking.parent,\n };\n return cherryPickDB;\n};\n\nexport const parser: ParserDefinition = {\n parse: async (input: string): Promise => {\n const ast: GitGraph = await parse('gitGraph', input);\n log.debug(ast);\n populate(ast, db);\n },\n};\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n\n const mockDB: GitGraphDBParseProvider = {\n commitType: commitType,\n setDirection: vi.fn(),\n commit: vi.fn(),\n branch: vi.fn(),\n merge: vi.fn(),\n cherryPick: vi.fn(),\n checkout: vi.fn(),\n };\n\n describe('GitGraph Parser', () => {\n it('should parse a commit statement', () => {\n const commit = {\n $type: 'Commit',\n id: '1',\n message: 'test',\n tags: ['tag1', 'tag2'],\n type: 'NORMAL',\n };\n parseStatement(commit, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: '1',\n msg: 'test',\n tags: ['tag1', 'tag2'],\n type: 0,\n });\n });\n it('should parse a branch statement', () => {\n const branch = {\n $type: 'Branch',\n name: 'newBranch',\n order: 1,\n };\n parseStatement(branch, mockDB);\n expect(mockDB.branch).toHaveBeenCalledWith({ name: 'newBranch', order: 1 });\n });\n it('should parse a checkout statement', () => {\n const checkout = {\n $type: 'Checkout',\n branch: 'newBranch',\n };\n parseStatement(checkout, mockDB);\n expect(mockDB.checkout).toHaveBeenCalledWith('newBranch');\n });\n it('should parse a merge statement', () => {\n const merge = {\n $type: 'Merge',\n branch: 'newBranch',\n id: '1',\n tags: ['tag1', 'tag2'],\n type: 'NORMAL',\n };\n parseStatement(merge, mockDB);\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: 'newBranch',\n id: '1',\n tags: ['tag1', 'tag2'],\n type: 0,\n });\n });\n it('should parse a cherry picking statement', () => {\n const cherryPick = {\n $type: 'CherryPicking',\n id: '1',\n tags: ['tag1', 'tag2'],\n parent: '2',\n };\n parseStatement(cherryPick, mockDB);\n expect(mockDB.cherryPick).toHaveBeenCalledWith({\n id: '1',\n targetId: '',\n parent: '2',\n tags: ['tag1', 'tag2'],\n });\n });\n\n it('should parse a langium generated gitGraph ast', () => {\n const dummy: GitGraph = {\n $type: 'GitGraph',\n statements: [],\n accDescr: '',\n accTitle: '',\n title: '',\n };\n const gitGraphAst: GitGraph = {\n $type: 'GitGraph',\n statements: [\n {\n $container: dummy,\n $type: 'Commit',\n id: '1',\n message: 'test',\n tags: ['tag1', 'tag2'],\n type: 'NORMAL',\n },\n {\n $container: dummy,\n $type: 'Branch',\n name: 'newBranch',\n order: 1,\n },\n {\n $container: dummy,\n $type: 'Merge',\n branch: 'newBranch',\n id: '1',\n tags: ['tag1', 'tag2'],\n type: 'NORMAL',\n },\n {\n $container: dummy,\n $type: 'Checkout',\n branch: 'newBranch',\n },\n {\n $container: dummy,\n $type: 'CherryPicking',\n id: '1',\n tags: ['tag1', 'tag2'],\n parent: '2',\n },\n ],\n accDescr: '',\n accTitle: '',\n title: '',\n };\n\n populate(gitGraphAst, mockDB);\n\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: '1',\n msg: 'test',\n tags: ['tag1', 'tag2'],\n type: 0,\n });\n expect(mockDB.branch).toHaveBeenCalledWith({ name: 'newBranch', order: 1 });\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: 'newBranch',\n id: '1',\n tags: ['tag1', 'tag2'],\n type: 0,\n });\n expect(mockDB.checkout).toHaveBeenCalledWith('newBranch');\n });\n });\n}\n", "import { select } from 'd3';\nimport { setupGraphViewbox } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport utils from '../../utils.js';\nimport type { DrawDefinition } from '../../diagram-api/types.js';\nimport type d3 from 'd3';\nimport type { Commit, GitGraphDBRenderProvider, DiagramOrientation } from './gitGraphTypes.js';\nimport { commitType } from './gitGraphTypes.js';\nimport type { GitGraphDiagramConfig } from '../../config.type.js';\n\ninterface BranchPosition {\n pos: number;\n index: number;\n}\n\ninterface CommitPosition {\n x: number;\n y: number;\n}\n\ninterface CommitPositionOffset extends CommitPosition {\n posWithOffset: number;\n}\n\nconst LAYOUT_OFFSET = 10;\nconst COMMIT_STEP = 40;\nconst PX = 4;\nconst PY = 2;\n\nconst THEME_COLOR_LIMIT = 8;\nconst branchPos = new Map();\nconst commitPos = new Map();\nconst defaultPos = 30;\n\nlet allCommitsDict = new Map();\nlet lanes: number[] = [];\nlet maxPos = 0;\nlet dir: DiagramOrientation = 'LR';\n\nconst clear = () => {\n branchPos.clear();\n commitPos.clear();\n allCommitsDict.clear();\n maxPos = 0;\n lanes = [];\n dir = 'LR';\n};\n\nconst drawText = (txt: string | string[]) => {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n const rows = typeof txt === 'string' ? txt.split(/\\\\n|\\n|/gi) : txt;\n\n rows.forEach((row) => {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n tspan.setAttribute('class', 'row');\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n });\n\n return svgLabel;\n};\n\nconst findClosestParent = (parents: string[]): string | undefined => {\n let closestParent: string | undefined;\n let comparisonFunc;\n let targetPosition: number;\n if (dir === 'BT') {\n comparisonFunc = (a: number, b: number) => a <= b;\n targetPosition = Infinity;\n } else {\n comparisonFunc = (a: number, b: number) => a >= b;\n targetPosition = 0;\n }\n\n parents.forEach((parent) => {\n const parentPosition =\n dir === 'TB' || dir == 'BT' ? commitPos.get(parent)?.y : commitPos.get(parent)?.x;\n\n if (parentPosition !== undefined && comparisonFunc(parentPosition, targetPosition)) {\n closestParent = parent;\n targetPosition = parentPosition;\n }\n });\n\n return closestParent;\n};\n\nconst findClosestParentBT = (parents: string[]) => {\n let closestParent = '';\n let maxPosition = Infinity;\n\n parents.forEach((parent) => {\n const parentPosition = commitPos.get(parent)!.y;\n if (parentPosition <= maxPosition) {\n closestParent = parent;\n maxPosition = parentPosition;\n }\n });\n return closestParent || undefined;\n};\n\nconst setParallelBTPos = (\n sortedKeys: string[],\n commits: Map,\n defaultPos: number\n) => {\n let curPos = defaultPos;\n let maxPosition = defaultPos;\n const roots: Commit[] = [];\n\n sortedKeys.forEach((key) => {\n const commit = commits.get(key);\n if (!commit) {\n throw new Error(`Commit not found for key ${key}`);\n }\n\n if (commit.parents.length) {\n curPos = calculateCommitPosition(commit);\n maxPosition = Math.max(curPos, maxPosition);\n } else {\n roots.push(commit);\n }\n setCommitPosition(commit, curPos);\n });\n\n curPos = maxPosition;\n roots.forEach((commit) => {\n setRootPosition(commit, curPos, defaultPos);\n });\n sortedKeys.forEach((key) => {\n const commit = commits.get(key);\n\n if (commit?.parents.length) {\n const closestParent = findClosestParentBT(commit.parents)!;\n curPos = commitPos.get(closestParent)!.y - COMMIT_STEP;\n if (curPos <= maxPosition) {\n maxPosition = curPos;\n }\n const x = branchPos.get(commit.branch)!.pos;\n const y = curPos - LAYOUT_OFFSET;\n commitPos.set(commit.id, { x: x, y: y });\n }\n });\n};\n\nconst findClosestParentPos = (commit: Commit): number => {\n const closestParent = findClosestParent(commit.parents.filter((p) => p !== null));\n if (!closestParent) {\n throw new Error(`Closest parent not found for commit ${commit.id}`);\n }\n\n const closestParentPos = commitPos.get(closestParent)?.y;\n if (closestParentPos === undefined) {\n throw new Error(`Closest parent position not found for commit ${commit.id}`);\n }\n return closestParentPos;\n};\n\nconst calculateCommitPosition = (commit: Commit): number => {\n const closestParentPos = findClosestParentPos(commit);\n return closestParentPos + COMMIT_STEP;\n};\n\nconst setCommitPosition = (commit: Commit, curPos: number): CommitPosition => {\n const branch = branchPos.get(commit.branch);\n\n if (!branch) {\n throw new Error(`Branch not found for commit ${commit.id}`);\n }\n\n const x = branch.pos;\n const y = curPos + LAYOUT_OFFSET;\n commitPos.set(commit.id, { x, y });\n return { x, y };\n};\n\nconst setRootPosition = (commit: Commit, curPos: number, defaultPos: number) => {\n const branch = branchPos.get(commit.branch);\n if (!branch) {\n throw new Error(`Branch not found for commit ${commit.id}`);\n }\n\n const y = curPos + defaultPos;\n const x = branch.pos;\n commitPos.set(commit.id, { x, y });\n};\n\nconst drawCommitBullet = (\n gBullets: d3.Selection,\n commit: Commit,\n commitPosition: CommitPositionOffset,\n typeClass: string,\n branchIndex: number,\n commitSymbolType: number\n) => {\n if (commitSymbolType === commitType.HIGHLIGHT) {\n gBullets\n .append('rect')\n .attr('x', commitPosition.x - 10)\n .attr('y', commitPosition.y - 10)\n .attr('width', 20)\n .attr('height', 20)\n .attr(\n 'class',\n `commit ${commit.id} commit-highlight${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-outer`\n );\n gBullets\n .append('rect')\n .attr('x', commitPosition.x - 6)\n .attr('y', commitPosition.y - 6)\n .attr('width', 12)\n .attr('height', 12)\n .attr(\n 'class',\n `commit ${commit.id} commit${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets\n .append('circle')\n .attr('cx', commitPosition.x)\n .attr('cy', commitPosition.y)\n .attr('r', 10)\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('circle')\n .attr('cx', commitPosition.x - 3)\n .attr('cy', commitPosition.y + 2)\n .attr('r', 2.75)\n .attr('fill', '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('circle')\n .attr('cx', commitPosition.x + 3)\n .attr('cy', commitPosition.y + 2)\n .attr('r', 2.75)\n .attr('fill', '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('line')\n .attr('x1', commitPosition.x + 3)\n .attr('y1', commitPosition.y + 1)\n .attr('x2', commitPosition.x)\n .attr('y2', commitPosition.y - 5)\n .attr('stroke', '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('line')\n .attr('x1', commitPosition.x - 3)\n .attr('y1', commitPosition.y + 1)\n .attr('x2', commitPosition.x)\n .attr('y2', commitPosition.y - 5)\n .attr('stroke', '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n } else {\n const circle = gBullets.append('circle');\n circle.attr('cx', commitPosition.x);\n circle.attr('cy', commitPosition.y);\n circle.attr('r', commit.type === commitType.MERGE ? 9 : 10);\n circle.attr('class', `commit ${commit.id} commit${branchIndex % THEME_COLOR_LIMIT}`);\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append('circle');\n circle2.attr('cx', commitPosition.x);\n circle2.attr('cy', commitPosition.y);\n circle2.attr('r', 6);\n circle2.attr(\n 'class',\n `commit ${typeClass} ${commit.id} commit${branchIndex % THEME_COLOR_LIMIT}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append('path');\n cross\n .attr(\n 'd',\n `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${commitPosition.y + 5}M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${commitPosition.y - 5}`\n )\n .attr('class', `commit ${typeClass} ${commit.id} commit${branchIndex % THEME_COLOR_LIMIT}`);\n }\n }\n};\n\nconst drawCommitLabel = (\n gLabels: d3.Selection,\n commit: Commit,\n commitPosition: CommitPositionOffset,\n pos: number,\n gitGraphConfig: GitGraphDiagramConfig\n) => {\n if (\n commit.type !== commitType.CHERRY_PICK &&\n ((commit.customId && commit.type === commitType.MERGE) || commit.type !== commitType.MERGE) &&\n gitGraphConfig.showCommitLabel\n ) {\n const wrapper = gLabels.append('g');\n const labelBkg = wrapper.insert('rect').attr('class', 'commit-label-bkg');\n const text = wrapper\n .append('text')\n .attr('x', pos)\n .attr('y', commitPosition.y + 25)\n .attr('class', 'commit-label')\n .text(commit.id);\n const bbox = text.node()?.getBBox();\n\n if (bbox) {\n labelBkg\n .attr('x', commitPosition.posWithOffset - bbox.width / 2 - PY)\n .attr('y', commitPosition.y + 13.5)\n .attr('width', bbox.width + 2 * PY)\n .attr('height', bbox.height + 2 * PY);\n\n if (dir === 'TB' || dir === 'BT') {\n labelBkg\n .attr('x', commitPosition.x - (bbox.width + 4 * PX + 5))\n .attr('y', commitPosition.y - 12);\n text\n .attr('x', commitPosition.x - (bbox.width + 4 * PX))\n .attr('y', commitPosition.y + bbox.height - 12);\n } else {\n text.attr('x', commitPosition.posWithOffset - bbox.width / 2);\n }\n\n if (gitGraphConfig.rotateCommitLabel) {\n if (dir === 'TB' || dir === 'BT') {\n text.attr(\n 'transform',\n 'rotate(' + -45 + ', ' + commitPosition.x + ', ' + commitPosition.y + ')'\n );\n labelBkg.attr(\n 'transform',\n 'rotate(' + -45 + ', ' + commitPosition.x + ', ' + commitPosition.y + ')'\n );\n } else {\n const r_x = -7.5 - ((bbox.width + 10) / 25) * 9.5;\n const r_y = 10 + (bbox.width / 25) * 8.5;\n wrapper.attr(\n 'transform',\n 'translate(' +\n r_x +\n ', ' +\n r_y +\n ') rotate(' +\n -45 +\n ', ' +\n pos +\n ', ' +\n commitPosition.y +\n ')'\n );\n }\n }\n }\n }\n};\n\nconst drawCommitTags = (\n gLabels: d3.Selection,\n commit: Commit,\n commitPosition: CommitPositionOffset,\n pos: number\n) => {\n if (commit.tags.length > 0) {\n let yOffset = 0;\n let maxTagBboxWidth = 0;\n let maxTagBboxHeight = 0;\n const tagElements = [];\n\n for (const tagValue of commit.tags.reverse()) {\n const rect = gLabels.insert('polygon');\n const hole = gLabels.append('circle');\n const tag = gLabels\n .append('text')\n .attr('y', commitPosition.y - 16 - yOffset)\n .attr('class', 'tag-label')\n .text(tagValue);\n const tagBbox = tag.node()?.getBBox();\n if (!tagBbox) {\n throw new Error('Tag bbox not found');\n }\n\n maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width);\n maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height);\n\n tag.attr('x', commitPosition.posWithOffset - tagBbox.width / 2);\n\n tagElements.push({\n tag,\n hole,\n rect,\n yOffset,\n });\n\n yOffset += 20;\n }\n\n for (const { tag, hole, rect, yOffset } of tagElements) {\n const h2 = maxTagBboxHeight / 2;\n const ly = commitPosition.y - 19.2 - yOffset;\n rect.attr('class', 'tag-label-bkg').attr(\n 'points',\n `\n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} \n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h2 + PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h2 + PY}`\n );\n\n hole\n .attr('cy', ly)\n .attr('cx', pos - maxTagBboxWidth / 2 + PX / 2)\n .attr('r', 1.5)\n .attr('class', 'tag-hole');\n\n if (dir === 'TB' || dir === 'BT') {\n const yOrigin = pos + yOffset;\n\n rect\n .attr('class', 'tag-label-bkg')\n .attr(\n 'points',\n `\n ${commitPosition.x},${yOrigin + 2}\n ${commitPosition.x},${yOrigin - 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h2 + 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h2 + 2}`\n )\n .attr('transform', 'translate(12,12) rotate(45, ' + commitPosition.x + ',' + pos + ')');\n hole\n .attr('cx', commitPosition.x + PX / 2)\n .attr('cy', yOrigin)\n .attr('transform', 'translate(12,12) rotate(45, ' + commitPosition.x + ',' + pos + ')');\n tag\n .attr('x', commitPosition.x + 5)\n .attr('y', yOrigin + 3)\n .attr('transform', 'translate(14,14) rotate(45, ' + commitPosition.x + ',' + pos + ')');\n }\n }\n }\n};\n\nconst getCommitClassType = (commit: Commit): string => {\n const commitSymbolType = commit.customType ?? commit.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n return 'commit-normal';\n case commitType.REVERSE:\n return 'commit-reverse';\n case commitType.HIGHLIGHT:\n return 'commit-highlight';\n case commitType.MERGE:\n return 'commit-merge';\n case commitType.CHERRY_PICK:\n return 'commit-cherry-pick';\n default:\n return 'commit-normal';\n }\n};\n\nconst calculatePosition = (\n commit: Commit,\n dir: string,\n pos: number,\n commitPos: Map\n): number => {\n const defaultCommitPosition = { x: 0, y: 0 }; // Default position if commit is not found\n\n if (commit.parents.length > 0) {\n const closestParent = findClosestParent(commit.parents);\n if (closestParent) {\n const parentPosition = commitPos.get(closestParent) ?? defaultCommitPosition;\n\n if (dir === 'TB') {\n return parentPosition.y + COMMIT_STEP;\n } else if (dir === 'BT') {\n const currentPosition = commitPos.get(commit.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return parentPosition.x + COMMIT_STEP;\n }\n }\n } else {\n if (dir === 'TB') {\n return defaultPos;\n } else if (dir === 'BT') {\n const currentPosition = commitPos.get(commit.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return 0;\n }\n }\n return 0;\n};\n\nconst getCommitPosition = (\n commit: Commit,\n pos: number,\n isParallelCommits: boolean\n): CommitPositionOffset => {\n const posWithOffset = dir === 'BT' && isParallelCommits ? pos : pos + LAYOUT_OFFSET;\n const y = dir === 'TB' || dir === 'BT' ? posWithOffset : branchPos.get(commit.branch)?.pos;\n const x = dir === 'TB' || dir === 'BT' ? branchPos.get(commit.branch)?.pos : posWithOffset;\n if (x === undefined || y === undefined) {\n throw new Error(`Position were undefined for commit ${commit.id}`);\n }\n return { x, y, posWithOffset };\n};\n\nconst drawCommits = (\n svg: d3.Selection,\n commits: Map,\n modifyGraph: boolean,\n gitGraphConfig: GitGraphDiagramConfig\n) => {\n const gBullets = svg.append('g').attr('class', 'commit-bullets');\n const gLabels = svg.append('g').attr('class', 'commit-labels');\n let pos = dir === 'TB' || dir === 'BT' ? defaultPos : 0;\n const keys = [...commits.keys()];\n const isParallelCommits = gitGraphConfig.parallelCommits ?? false;\n\n const sortKeys = (a: string, b: string) => {\n const seqA = commits.get(a)?.seq;\n const seqB = commits.get(b)?.seq;\n return seqA !== undefined && seqB !== undefined ? seqA - seqB : 0;\n };\n\n let sortedKeys = keys.sort(sortKeys);\n if (dir === 'BT') {\n if (isParallelCommits) {\n setParallelBTPos(sortedKeys, commits, pos);\n }\n sortedKeys = sortedKeys.reverse();\n }\n\n sortedKeys.forEach((key) => {\n const commit = commits.get(key);\n if (!commit) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (isParallelCommits) {\n pos = calculatePosition(commit, dir, pos, commitPos);\n }\n\n const commitPosition = getCommitPosition(commit, pos, isParallelCommits);\n // Don't draw the commits now but calculate the positioning which is used by the branch lines etc.\n if (modifyGraph) {\n const typeClass = getCommitClassType(commit);\n const commitSymbolType = commit.customType ?? commit.type;\n const branchIndex = branchPos.get(commit.branch)?.index ?? 0;\n drawCommitBullet(gBullets, commit, commitPosition, typeClass, branchIndex, commitSymbolType);\n drawCommitLabel(gLabels, commit, commitPosition, pos, gitGraphConfig);\n drawCommitTags(gLabels, commit, commitPosition, pos);\n }\n if (dir === 'TB' || dir === 'BT') {\n commitPos.set(commit.id, { x: commitPosition.x, y: commitPosition.posWithOffset });\n } else {\n commitPos.set(commit.id, { x: commitPosition.posWithOffset, y: commitPosition.y });\n }\n pos = dir === 'BT' && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n};\n\nconst shouldRerouteArrow = (\n commitA: Commit,\n commitB: Commit,\n p1: CommitPosition,\n p2: CommitPosition,\n allCommits: Map\n) => {\n const commitBIsFurthest = dir === 'TB' || dir === 'BT' ? p1.x < p2.x : p1.y < p2.y;\n const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch;\n const isOnBranchToGetCurve = (x: Commit) => x.branch === branchToGetCurve;\n const isBetweenCommits = (x: Commit) => x.seq > commitA.seq && x.seq < commitB.seq;\n return [...allCommits.values()].some((commitX) => {\n return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX);\n });\n};\n\nconst findLane = (y1: number, y2: number, depth = 0): number => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n\n const ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n};\n\nconst drawArrow = (\n svg: d3.Selection,\n commitA: Commit,\n commitB: Commit,\n allCommits: Map\n) => {\n const p1 = commitPos.get(commitA.id); // arrowStart\n const p2 = commitPos.get(commitB.id); // arrowEnd\n if (p1 === undefined || p2 === undefined) {\n throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`);\n }\n const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p2, allCommits);\n // log.debug('drawArrow', p1, p2, arrowNeedsRerouting, commitA.id, commitB.id);\n\n // Lower-right quadrant logic; top-left is 0,0\n\n let arc = '';\n let arc2 = '';\n let radius = 0;\n let offset = 0;\n\n let colorClassNum = branchPos.get(commitB.branch)?.index;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n }\n\n let lineDef;\n if (arrowNeedsRerouting) {\n arc = 'A 10 10, 0, 0, 0,';\n arc2 = 'A 10 10, 0, 0, 1,';\n radius = 10;\n offset = 10;\n\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n\n const lineX = p1.x < p2.x ? findLane(p1.x, p2.x) : findLane(p2.x, p1.x);\n\n if (dir === 'TB') {\n if (p1.x < p2.x) {\n // Source commit is on branch position left of destination commit\n // so render arrow rightward with colour of destination branch\n\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc2} ${lineX} ${\n p1.y + offset\n } L ${lineX} ${p2.y - radius} ${arc} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n // Source commit is on branch position right of destination commit\n // so render arrow leftward with colour of source branch\n\n colorClassNum = branchPos.get(commitA.branch)?.index;\n\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === 'BT') {\n if (p1.x < p2.x) {\n // Source commit is on branch position left of destination commit\n // so render arrow rightward with colour of destination branch\n\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n // Source commit is on branch position right of destination commit\n // so render arrow leftward with colour of source branch\n\n colorClassNum = branchPos.get(commitA.branch)?.index;\n\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n // Source commit is on branch positioned above destination commit\n // so render arrow downward with colour of destination branch\n\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${\n p1.x + offset\n } ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n // Source commit is on branch positioned below destination commit\n // so render arrow upward with colour of source branch\n\n colorClassNum = branchPos.get(commitA.branch)?.index;\n\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${\n p1.x + offset\n } ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n }\n } else {\n arc = 'A 20 20, 0, 0, 0,';\n arc2 = 'A 20 20, 0, 0, 1,';\n radius = 20;\n offset = 20;\n\n if (dir === 'TB') {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${\n p1.y + offset\n } L ${p2.x} ${p2.y}`;\n }\n }\n\n if (p1.x > p2.x) {\n arc = 'A 20 20, 0, 0, 0,';\n arc2 = 'A 20 20, 0, 0, 1,';\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc2} ${p1.x - offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc} ${p2.x} ${\n p1.y + offset\n } L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === 'BT') {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${\n p1.y - offset\n } L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = 'A 20 20, 0, 0, 0,';\n arc2 = 'A 20 20, 0, 0, 1,';\n radius = 20;\n offset = 20;\n\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc} ${p1.x - offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc2} ${p2.x} ${\n p1.y - offset\n } L ${p2.x} ${p2.y}`;\n }\n }\n\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${\n p1.y + offset\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y > p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${\n p1.y - offset\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n }\n }\n\n if (p1.y === p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n if (lineDef === undefined) {\n throw new Error('Line definition not found');\n }\n svg\n .append('path')\n .attr('d', lineDef)\n .attr('class', 'arrow arrow' + (colorClassNum! % THEME_COLOR_LIMIT));\n};\n\nconst drawArrows = (\n svg: d3.Selection,\n commits: Map\n) => {\n const gArrows = svg.append('g').attr('class', 'commit-arrows');\n [...commits.keys()].forEach((key) => {\n const commit = commits.get(key);\n\n if (commit!.parents && commit!.parents.length > 0) {\n commit!.parents.forEach((parent) => {\n drawArrow(gArrows, commits.get(parent)!, commit!, commits);\n });\n }\n });\n};\n\nconst drawBranches = (\n svg: d3.Selection,\n branches: { name: string }[],\n gitGraphConfig: GitGraphDiagramConfig\n) => {\n const g = svg.append('g');\n branches.forEach((branch, index) => {\n const adjustIndexForTheme = index % THEME_COLOR_LIMIT;\n\n const pos = branchPos.get(branch.name)?.pos;\n if (pos === undefined) {\n throw new Error(`Position not found for branch ${branch.name}`);\n }\n const line = g.append('line');\n line.attr('x1', 0);\n line.attr('y1', pos);\n line.attr('x2', maxPos);\n line.attr('y2', pos);\n line.attr('class', 'branch branch' + adjustIndexForTheme);\n\n if (dir === 'TB') {\n line.attr('y1', defaultPos);\n line.attr('x1', pos);\n line.attr('y2', maxPos);\n line.attr('x2', pos);\n } else if (dir === 'BT') {\n line.attr('y1', maxPos);\n line.attr('x1', pos);\n line.attr('y2', defaultPos);\n line.attr('x2', pos);\n }\n lanes.push(pos);\n\n const name = branch.name;\n\n // Create the actual text element\n const labelElement = drawText(name);\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const bkg = g.insert('rect');\n const branchLabel = g.insert('g').attr('class', 'branchLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = branchLabel.insert('g').attr('class', 'label branch-label' + adjustIndexForTheme);\n\n label.node()!.appendChild(labelElement);\n const bbox = labelElement.getBBox();\n bkg\n .attr('class', 'branchLabelBkg label' + adjustIndexForTheme)\n .attr('rx', 4)\n .attr('ry', 4)\n .attr('x', -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0))\n .attr('y', -bbox.height / 2 + 8)\n .attr('width', bbox.width + 18)\n .attr('height', bbox.height + 4);\n label.attr(\n 'transform',\n 'translate(' +\n (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)) +\n ', ' +\n (pos - bbox.height / 2 - 1) +\n ')'\n );\n if (dir === 'TB') {\n bkg.attr('x', pos - bbox.width / 2 - 10).attr('y', 0);\n label.attr('transform', 'translate(' + (pos - bbox.width / 2 - 5) + ', ' + 0 + ')');\n } else if (dir === 'BT') {\n bkg.attr('x', pos - bbox.width / 2 - 10).attr('y', maxPos);\n label.attr('transform', 'translate(' + (pos - bbox.width / 2 - 5) + ', ' + maxPos + ')');\n } else {\n bkg.attr('transform', 'translate(' + -19 + ', ' + (pos - bbox.height / 2) + ')');\n }\n });\n};\n\nconst setBranchPosition = function (\n name: string,\n pos: number,\n index: number,\n bbox: DOMRect,\n rotateCommitLabel: boolean\n): number {\n branchPos.set(name, { pos, index });\n pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === 'TB' || dir === 'BT' ? bbox.width / 2 : 0);\n return pos;\n};\n\nexport const draw: DrawDefinition = function (txt, id, ver, diagObj) {\n clear();\n\n log.debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver);\n const db = diagObj.db as GitGraphDBRenderProvider;\n if (!db.getConfig) {\n log.error('getConfig method is not available on db');\n return;\n }\n const gitGraphConfig = db.getConfig();\n const rotateCommitLabel = gitGraphConfig.rotateCommitLabel ?? false;\n allCommitsDict = db.getCommits();\n const branches = db.getBranchesAsObjArray();\n dir = db.getDirection();\n const diagram = select(`[id=\"${id}\"]`);\n let pos = 0;\n\n branches.forEach((branch, index) => {\n const labelElement = drawText(branch.name);\n const g = diagram.append('g');\n const branchLabel = g.insert('g').attr('class', 'branchLabel');\n const label = branchLabel.insert('g').attr('class', 'label branch-label');\n label.node()?.appendChild(labelElement);\n const bbox = labelElement.getBBox();\n\n pos = setBranchPosition(branch.name, pos, index, bbox, rotateCommitLabel);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n\n drawCommits(diagram, allCommitsDict, false, gitGraphConfig);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram, branches, gitGraphConfig);\n }\n drawArrows(diagram, allCommitsDict);\n drawCommits(diagram, allCommitsDict, true, gitGraphConfig);\n\n utils.insertTitle(\n diagram,\n 'gitTitleText',\n gitGraphConfig.titleTopMargin ?? 0,\n db.getDiagramTitle()\n );\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(undefined, diagram, gitGraphConfig.diagramPadding, gitGraphConfig.useMaxWidth);\n};\n\nexport default {\n draw,\n};\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n\n describe('drawText', () => {\n it('should drawText', () => {\n const svgLabel = drawText('main');\n expect(svgLabel).toBeDefined();\n expect(svgLabel.children[0].innerHTML).toBe('main');\n });\n });\n\n describe('branchPosition', () => {\n const bbox: DOMRect = {\n x: 0,\n y: 0,\n width: 10,\n height: 10,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n toJSON: () => '',\n };\n\n it('should setBranchPositions LR with two branches', () => {\n dir = 'LR';\n\n const pos = setBranchPosition('main', 0, 0, bbox, true);\n expect(pos).toBe(90);\n expect(branchPos.get('main')).toEqual({ pos: 0, index: 0 });\n const posNext = setBranchPosition('develop', pos, 1, bbox, true);\n expect(posNext).toBe(180);\n expect(branchPos.get('develop')).toEqual({ pos: pos, index: 1 });\n });\n\n it('should setBranchPositions TB with two branches', () => {\n dir = 'TB';\n bbox.width = 34.9921875;\n\n const pos = setBranchPosition('main', 0, 0, bbox, true);\n expect(pos).toBe(107.49609375);\n expect(branchPos.get('main')).toEqual({ pos: 0, index: 0 });\n\n bbox.width = 56.421875;\n const posNext = setBranchPosition('develop', pos, 1, bbox, true);\n expect(posNext).toBe(225.70703125);\n expect(branchPos.get('develop')).toEqual({ pos: pos, index: 1 });\n });\n });\n\n describe('commitPosition', () => {\n const commits = new Map([\n [\n 'commitZero',\n {\n id: 'ZERO',\n message: '',\n seq: 0,\n type: commitType.NORMAL,\n tags: [],\n parents: [],\n branch: 'main',\n },\n ],\n [\n 'commitA',\n {\n id: 'A',\n message: '',\n seq: 1,\n type: commitType.NORMAL,\n tags: [],\n parents: ['ZERO'],\n branch: 'feature',\n },\n ],\n [\n 'commitB',\n {\n id: 'B',\n message: '',\n seq: 2,\n type: commitType.NORMAL,\n tags: [],\n parents: ['A'],\n branch: 'feature',\n },\n ],\n [\n 'commitM',\n {\n id: 'M',\n message: 'merged branch feature into main',\n seq: 3,\n type: commitType.MERGE,\n tags: [],\n parents: ['ZERO', 'B'],\n branch: 'main',\n customId: true,\n },\n ],\n [\n 'commitC',\n {\n id: 'C',\n message: '',\n seq: 4,\n type: commitType.NORMAL,\n tags: [],\n parents: ['ZERO'],\n branch: 'release',\n },\n ],\n [\n 'commit5_8928ea0',\n {\n id: '5-8928ea0',\n message: 'cherry-picked [object Object] into release',\n seq: 5,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: ['C', 'M'],\n branch: 'release',\n },\n ],\n [\n 'commitD',\n {\n id: 'D',\n message: '',\n seq: 6,\n type: commitType.NORMAL,\n tags: [],\n parents: ['5-8928ea0'],\n branch: 'release',\n },\n ],\n [\n 'commit7_ed848ba',\n {\n id: '7-ed848ba',\n message: 'cherry-picked [object Object] into release',\n seq: 7,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: ['D', 'M'],\n branch: 'release',\n },\n ],\n ]);\n let pos = 0;\n branchPos.set('main', { pos: 0, index: 0 });\n branchPos.set('feature', { pos: 107.49609375, index: 1 });\n branchPos.set('release', { pos: 224.03515625, index: 2 });\n\n describe('TB', () => {\n pos = 30;\n dir = 'TB';\n const expectedCommitPositionTB = new Map([\n ['commitZero', { x: 0, y: 40, posWithOffset: 40 }],\n ['commitA', { x: 107.49609375, y: 90, posWithOffset: 90 }],\n ['commitB', { x: 107.49609375, y: 140, posWithOffset: 140 }],\n ['commitM', { x: 0, y: 190, posWithOffset: 190 }],\n ['commitC', { x: 224.03515625, y: 240, posWithOffset: 240 }],\n ['commit5_8928ea0', { x: 224.03515625, y: 290, posWithOffset: 290 }],\n ['commitD', { x: 224.03515625, y: 340, posWithOffset: 340 }],\n ['commit7_ed848ba', { x: 224.03515625, y: 390, posWithOffset: 390 }],\n ]);\n commits.forEach((commit, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit, pos, false);\n expect(position).toEqual(expectedCommitPositionTB.get(key));\n pos += 50;\n });\n });\n });\n describe('LR', () => {\n let pos = 30;\n dir = 'LR';\n const expectedCommitPositionLR = new Map([\n ['commitZero', { x: 0, y: 40, posWithOffset: 40 }],\n ['commitA', { x: 107.49609375, y: 90, posWithOffset: 90 }],\n ['commitB', { x: 107.49609375, y: 140, posWithOffset: 140 }],\n ['commitM', { x: 0, y: 190, posWithOffset: 190 }],\n ['commitC', { x: 224.03515625, y: 240, posWithOffset: 240 }],\n ['commit5_8928ea0', { x: 224.03515625, y: 290, posWithOffset: 290 }],\n ['commitD', { x: 224.03515625, y: 340, posWithOffset: 340 }],\n ['commit7_ed848ba', { x: 224.03515625, y: 390, posWithOffset: 390 }],\n ]);\n commits.forEach((commit, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit, pos, false);\n expect(position).toEqual(expectedCommitPositionLR.get(key));\n pos += 50;\n });\n });\n });\n describe('getCommitClassType', () => {\n const expectedCommitClassType = new Map([\n ['commitZero', 'commit-normal'],\n ['commitA', 'commit-normal'],\n ['commitB', 'commit-normal'],\n ['commitM', 'commit-merge'],\n ['commitC', 'commit-normal'],\n ['commit5_8928ea0', 'commit-cherry-pick'],\n ['commitD', 'commit-normal'],\n ['commit7_ed848ba', 'commit-cherry-pick'],\n ]);\n commits.forEach((commit, key) => {\n it(`should give the correct class type for commit ${key}`, () => {\n const classType = getCommitClassType(commit);\n expect(classType).toBe(expectedCommitClassType.get(key));\n });\n });\n });\n });\n describe('building BT parallel commit diagram', () => {\n const commits = new Map([\n [\n '1-abcdefg',\n {\n id: '1-abcdefg',\n message: '',\n seq: 0,\n type: 0,\n tags: [],\n parents: [],\n branch: 'main',\n },\n ],\n [\n '2-abcdefg',\n {\n id: '2-abcdefg',\n message: '',\n seq: 1,\n type: 0,\n tags: [],\n parents: ['1-abcdefg'],\n branch: 'main',\n },\n ],\n [\n '3-abcdefg',\n {\n id: '3-abcdefg',\n message: '',\n seq: 2,\n type: 0,\n tags: [],\n parents: ['2-abcdefg'],\n branch: 'develop',\n },\n ],\n [\n '4-abcdefg',\n {\n id: '4-abcdefg',\n message: '',\n seq: 3,\n type: 0,\n tags: [],\n parents: ['3-abcdefg'],\n branch: 'develop',\n },\n ],\n [\n '5-abcdefg',\n {\n id: '5-abcdefg',\n message: '',\n seq: 4,\n type: 0,\n tags: [],\n parents: ['2-abcdefg'],\n branch: 'feature',\n },\n ],\n [\n '6-abcdefg',\n {\n id: '6-abcdefg',\n message: '',\n seq: 5,\n type: 0,\n tags: [],\n parents: ['5-abcdefg'],\n branch: 'feature',\n },\n ],\n [\n '7-abcdefg',\n {\n id: '7-abcdefg',\n message: '',\n seq: 6,\n type: 0,\n tags: [],\n parents: ['2-abcdefg'],\n branch: 'main',\n },\n ],\n [\n '8-abcdefg',\n {\n id: '8-abcdefg',\n message: '',\n seq: 7,\n type: 0,\n tags: [],\n parents: ['7-abcdefg'],\n branch: 'main',\n },\n ],\n ]);\n const expectedCommitPosition = new Map([\n ['1-abcdefg', { x: 0, y: 40 }],\n ['2-abcdefg', { x: 0, y: 90 }],\n ['3-abcdefg', { x: 107.49609375, y: 140 }],\n ['4-abcdefg', { x: 107.49609375, y: 190 }],\n ['5-abcdefg', { x: 225.70703125, y: 140 }],\n ['6-abcdefg', { x: 225.70703125, y: 190 }],\n ['7-abcdefg', { x: 0, y: 140 }],\n ['8-abcdefg', { x: 0, y: 190 }],\n ]);\n\n const expectedCommitPositionAfterParallel = new Map([\n ['1-abcdefg', { x: 0, y: 210 }],\n ['2-abcdefg', { x: 0, y: 160 }],\n ['3-abcdefg', { x: 107.49609375, y: 110 }],\n ['4-abcdefg', { x: 107.49609375, y: 60 }],\n ['5-abcdefg', { x: 225.70703125, y: 110 }],\n ['6-abcdefg', { x: 225.70703125, y: 60 }],\n ['7-abcdefg', { x: 0, y: 110 }],\n ['8-abcdefg', { x: 0, y: 60 }],\n ]);\n\n const expectedCommitCurrentPosition = new Map([\n ['1-abcdefg', 30],\n ['2-abcdefg', 80],\n ['3-abcdefg', 130],\n ['4-abcdefg', 180],\n ['5-abcdefg', 130],\n ['6-abcdefg', 180],\n ['7-abcdefg', 130],\n ['8-abcdefg', 180],\n ]);\n const sortedKeys = [...expectedCommitPosition.keys()];\n it('should get the correct commit position and current position', () => {\n dir = 'BT';\n let curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set('main', { pos: 0, index: 0 });\n branchPos.set('develop', { pos: 107.49609375, index: 1 });\n branchPos.set('feature', { pos: 225.70703125, index: 2 });\n commits.forEach((commit, key) => {\n if (commit.parents.length > 0) {\n curPos = calculateCommitPosition(commit);\n }\n const position = setCommitPosition(commit, curPos);\n expect(position).toEqual(expectedCommitPosition.get(key));\n expect(curPos).toEqual(expectedCommitCurrentPosition.get(key));\n });\n });\n\n it('should get the correct commit position after parallel commits', () => {\n commitPos.clear();\n branchPos.clear();\n dir = 'BT';\n const curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set('main', { pos: 0, index: 0 });\n branchPos.set('develop', { pos: 107.49609375, index: 1 });\n branchPos.set('feature', { pos: 225.70703125, index: 2 });\n setParallelBTPos(sortedKeys, commits, curPos);\n sortedKeys.forEach((commit) => {\n const position = commitPos.get(commit);\n expect(position).toEqual(expectedCommitPositionAfterParallel.get(commit));\n });\n });\n });\n it('add', () => {\n commitPos.set('parent1', { x: 1, y: 1 });\n commitPos.set('parent2', { x: 2, y: 2 });\n commitPos.set('parent3', { x: 3, y: 3 });\n dir = 'LR';\n const parents = ['parent1', 'parent2', 'parent3'];\n const closestParent = findClosestParent(parents);\n\n expect(closestParent).toBe('parent3');\n commitPos.clear();\n });\n}\n", "const getStyles = (options) =>\n `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0, 1, 2, 3, 4, 5, 6, 7]\n .map(\n (i) =>\n `\n .branch-label${i} { fill: ${options['gitBranchLabel' + i]}; }\n .commit${i} { stroke: ${options['git' + i]}; fill: ${options['git' + i]}; }\n .commit-highlight${i} { stroke: ${options['gitInv' + i]}; fill: ${options['gitInv' + i]}; }\n .label${i} { fill: ${options['git' + i]}; }\n .arrow${i} { stroke: ${options['git' + i]}; }\n `\n )\n .join('\\n')}\n\n .branch {\n stroke-width: 1;\n stroke: ${options.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${options.commitLabelColor};}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${\n options.commitLabelBackground\n }; opacity: 0.5; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${options.tagLabelBackground}; stroke: ${options.tagLabelBorder}; }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n .commit-reverse {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\n\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport { parser } from './gitGraphParser.js';\nimport { db } from './gitGraphAst.js';\nimport gitGraphRenderer from './gitGraphRenderer.js';\nimport gitGraphStyles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer: gitGraphRenderer,\n styles: gitGraphStyles,\n};\n"], - "mappings": "wtBAGO,IAAMA,EAAa,CACxB,OAAQ,EACR,QAAS,EACT,UAAW,EACX,MAAO,EACP,YAAa,CACf,EC8BA,IAAMC,GAA2DC,EAAe,SAC1EC,EAAYC,EAAA,IACDC,EAAc,CAC3B,GAAGJ,GACH,GAAGE,EAAgB,EAAE,QACvB,CAAC,EAJe,aAQZG,EAAQ,IAAIC,GAA+B,IAAM,CACrD,IAAMC,EAASL,EAAU,EACnBM,EAAiBD,EAAO,eACxBE,EAAkBF,EAAO,gBAC/B,MAAO,CACL,eAAAC,EACA,QAAS,IAAI,IACb,KAAM,KACN,aAAc,IAAI,IAAI,CAAC,CAACA,EAAgB,CAAE,KAAMA,EAAgB,MAAOC,CAAgB,CAAC,CAAC,CAAC,EAC1F,SAAU,IAAI,IAAI,CAAC,CAACD,EAAgB,IAAI,CAAC,CAAC,EAC1C,WAAYA,EACZ,UAAW,KACX,IAAK,EACL,QAAS,CAAC,CACZ,CACF,CAAC,EAED,SAASE,GAAQ,CACf,OAAOC,EAAO,CAAE,OAAQ,CAAE,CAAC,CAC7B,CAFSR,EAAAO,EAAA,SAQT,SAASE,GAAOC,EAAaC,EAAwB,CACnD,IAAMC,EAAY,OAAO,OAAO,IAAI,EACpC,OAAOF,EAAK,OAAO,CAACG,EAAKC,IAAS,CAChC,IAAMC,EAAMJ,EAAGG,CAAI,EACnB,OAAKF,EAAUG,CAAG,IAChBH,EAAUG,CAAG,EAAI,GACjBF,EAAI,KAAKC,CAAI,GAERD,CACT,EAAG,CAAC,CAAC,CACP,CAVSb,EAAAS,GAAA,UAYF,IAAMO,GAAehB,EAAA,SAAUiB,EAAyB,CAC7Df,EAAM,QAAQ,UAAYe,CAC5B,EAF4B,gBAIfC,GAAalB,EAAA,SAAUmB,EAAsB,CACxDC,EAAI,MAAM,cAAeD,CAAY,EACrCA,EAAeA,GAAc,KAAK,EAClCA,EAAeA,GAAgB,KAC/B,GAAI,CACFjB,EAAM,QAAQ,QAAU,KAAK,MAAMiB,CAAY,CACjD,OAAS,EAAQ,CACfC,EAAI,MAAM,uCAAwC,EAAE,OAAO,CAC7D,CACF,EAT0B,cAWbC,GAAarB,EAAA,UAAY,CACpC,OAAOE,EAAM,QAAQ,OACvB,EAF0B,cAIboB,GAAStB,EAAA,SAAUuB,EAAoB,CAClD,IAAIC,EAAMD,EAAS,IACfE,EAAKF,EAAS,GACZG,EAAOH,EAAS,KAClBI,EAAOJ,EAAS,KAEpBH,EAAI,KAAK,SAAUI,EAAKC,EAAIC,EAAMC,CAAI,EACtCP,EAAI,MAAM,mBAAoBI,EAAKC,EAAIC,EAAMC,CAAI,EACjD,IAAMvB,EAASL,EAAU,EACzB0B,EAAKG,EAAO,aAAaH,EAAIrB,CAAM,EACnCoB,EAAMI,EAAO,aAAaJ,EAAKpB,CAAM,EACrCuB,EAAOA,GAAM,IAAKE,GAAQD,EAAO,aAAaC,EAAKzB,CAAM,CAAC,EAC1D,IAAM0B,EAAoB,CACxB,GAAIL,GAAUvB,EAAM,QAAQ,IAAM,IAAMK,EAAM,EAC9C,QAASiB,EACT,IAAKtB,EAAM,QAAQ,MACnB,KAAMwB,GAAQK,EAAW,OACzB,KAAMJ,GAAQ,CAAC,EACf,QAASzB,EAAM,QAAQ,MAAQ,KAAO,CAAC,EAAI,CAACA,EAAM,QAAQ,KAAK,EAAE,EACjE,OAAQA,EAAM,QAAQ,UACxB,EACAA,EAAM,QAAQ,KAAO4B,EACrBV,EAAI,KAAK,cAAehB,EAAO,cAAc,EACzCF,EAAM,QAAQ,QAAQ,IAAI4B,EAAU,EAAE,GACxCV,EAAI,KAAK,aAAaU,EAAU,EAAE,iBAAiB,EAErD5B,EAAM,QAAQ,QAAQ,IAAI4B,EAAU,GAAIA,CAAS,EACjD5B,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,WAAY4B,EAAU,EAAE,EACjEV,EAAI,MAAM,iBAAmBU,EAAU,EAAE,CAC3C,EA7BsB,UA+BTE,GAAShC,EAAA,SAAUiC,EAAoB,CAClD,IAAIC,EAAOD,EAAS,KACdE,EAAQF,EAAS,MAEvB,GADAC,EAAON,EAAO,aAAaM,EAAMnC,EAAU,CAAC,EACxCG,EAAM,QAAQ,SAAS,IAAIgC,CAAI,EACjC,MAAM,IAAI,MACR,4HAA4HA,CAAI,IAClI,EAGFhC,EAAM,QAAQ,SAAS,IAAIgC,EAAMhC,EAAM,QAAQ,MAAQ,KAAOA,EAAM,QAAQ,KAAK,GAAK,IAAI,EAC1FA,EAAM,QAAQ,aAAa,IAAIgC,EAAM,CAAE,KAAAA,EAAM,MAAAC,CAAM,CAAC,EACpDC,GAASF,CAAI,EACbd,EAAI,MAAM,iBAAiB,CAC7B,EAdsB,UAgBTiB,GAAQrC,EAACsC,GAA2B,CAC/C,IAAIC,EAAcD,EAAQ,OACtBE,EAAWF,EAAQ,GACjBG,EAAeH,EAAQ,KACvBI,EAAaJ,EAAQ,KACrBlC,EAASL,EAAU,EACzBwC,EAAcX,EAAO,aAAaW,EAAanC,CAAM,EACjDoC,IACFA,EAAWZ,EAAO,aAAaY,EAAUpC,CAAM,GAEjD,IAAMuC,EAAqBzC,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,UAAU,EACxE0C,EAAmB1C,EAAM,QAAQ,SAAS,IAAIqC,CAAW,EACzDM,EAAgBF,EAClBzC,EAAM,QAAQ,QAAQ,IAAIyC,CAAkB,EAC5C,OACEG,EAAkCF,EACpC1C,EAAM,QAAQ,QAAQ,IAAI0C,CAAgB,EAC1C,OACJ,GAAIC,GAAiBC,GAAeD,EAAc,SAAWN,EAC3D,MAAM,IAAI,MAAM,wBAAwBA,CAAW,gBAAgB,EAErE,GAAIrC,EAAM,QAAQ,aAAeqC,EAAa,CAC5C,IAAMQ,EAAa,IAAI,MAAM,6DAA6D,EAC1F,MAAAA,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,YAAY,CACzB,EACMQ,CACR,CACA,GAAIF,IAAkB,QAAa,CAACA,EAAe,CACjD,IAAME,EAAa,IAAI,MACrB,+CAA+C7C,EAAM,QAAQ,UAAU,iBACzE,EACA,MAAA6C,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,QAAQ,CACrB,EACMQ,CACR,CACA,GAAI,CAAC7C,EAAM,QAAQ,SAAS,IAAIqC,CAAW,EAAG,CAC5C,IAAMQ,EAAa,IAAI,MACrB,oDAAsDR,EAAc,kBACtE,EACA,MAAAQ,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,UAAUA,CAAW,EAAE,CACpC,EACMQ,CACR,CACA,GAAID,IAAgB,QAAa,CAACA,EAAa,CAC7C,IAAMC,EAAa,IAAI,MACrB,oDAAsDR,EAAc,kBACtE,EACA,MAAAQ,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,UAAU,CACvB,EACMQ,CACR,CACA,GAAIF,IAAkBC,EAAa,CACjC,IAAMC,EAAa,IAAI,MAAM,0DAA0D,EACvF,MAAAA,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,YAAY,CACzB,EACMQ,CACR,CACA,GAAIP,GAAYtC,EAAM,QAAQ,QAAQ,IAAIsC,CAAQ,EAAG,CACnD,IAAMO,EAAa,IAAI,MACrB,8CACEP,EACA,0CACJ,EACA,MAAAO,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,IAAIC,CAAQ,IAAIC,CAAY,IAAIC,GAAY,KAAK,GAAG,CAAC,GAC/E,MAAO,SAASH,CAAW,IAAIC,CAAQ,IAAIC,CAAY,IAAIC,GAAY,KAAK,GAAG,CAAC,GAChF,SAAU,CACR,SAASH,CAAW,IAAIC,CAAQ,WAAWC,CAAY,IAAIC,GAAY,KAAK,GAAG,CAAC,EAClF,CACF,EAEMK,CACR,CAEA,IAAMC,EAAyBJ,GAAsC,GAE/DtB,EAAS,CACb,GAAIkB,GAAY,GAAGtC,EAAM,QAAQ,GAAG,IAAIK,EAAM,CAAC,GAC/C,QAAS,iBAAiBgC,CAAW,SAASrC,EAAM,QAAQ,UAAU,GACtE,IAAKA,EAAM,QAAQ,MACnB,QAASA,EAAM,QAAQ,MAAQ,KAAO,CAAC,EAAI,CAACA,EAAM,QAAQ,KAAK,GAAI8C,CAAc,EACjF,OAAQ9C,EAAM,QAAQ,WACtB,KAAM6B,EAAW,MACjB,WAAYU,EACZ,SAAU,EAAAD,EACV,KAAME,GAAc,CAAC,CACvB,EACAxC,EAAM,QAAQ,KAAOoB,EACrBpB,EAAM,QAAQ,QAAQ,IAAIoB,EAAO,GAAIA,CAAM,EAC3CpB,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,WAAYoB,EAAO,EAAE,EAC9DF,EAAI,MAAMlB,EAAM,QAAQ,QAAQ,EAChCkB,EAAI,MAAM,gBAAgB,CAC5B,EA3GqB,SA6GR6B,GAAajD,EAAA,SAAUkD,EAA4B,CAC9D,IAAIC,EAAWD,EAAa,GACxBE,EAAWF,EAAa,SACxBvB,EAAOuB,EAAa,KACpBG,EAAiBH,EAAa,OAClC9B,EAAI,MAAM,uBAAwB+B,EAAUC,EAAUzB,CAAI,EAC1D,IAAMvB,EAASL,EAAU,EAQzB,GAPAoD,EAAWvB,EAAO,aAAauB,EAAU/C,CAAM,EAC/CgD,EAAWxB,EAAO,aAAawB,EAAUhD,CAAM,EAE/CuB,EAAOA,GAAM,IAAKE,GAAQD,EAAO,aAAaC,EAAKzB,CAAM,CAAC,EAE1DiD,EAAiBzB,EAAO,aAAayB,EAAgBjD,CAAM,EAEvD,CAAC+C,GAAY,CAACjD,EAAM,QAAQ,QAAQ,IAAIiD,CAAQ,EAAG,CACrD,IAAMJ,EAAa,IAAI,MACrB,6EACF,EACA,MAAAA,EAAM,KAAO,CACX,KAAM,cAAcI,CAAQ,IAAIC,CAAQ,GACxC,MAAO,cAAcD,CAAQ,IAAIC,CAAQ,GACzC,SAAU,CAAC,iBAAiB,CAC9B,EACML,CACR,CAEA,IAAMO,EAAepD,EAAM,QAAQ,QAAQ,IAAIiD,CAAQ,EACvD,GAAIG,IAAiB,QAAa,CAACA,EACjC,MAAM,IAAI,MAAM,6EAA6E,EAE/F,GACED,GACA,EAAE,MAAM,QAAQC,EAAa,OAAO,GAAKA,EAAa,QAAQ,SAASD,CAAc,GAKrF,MAHc,IAAI,MAChB,wGACF,EAGF,IAAME,EAAqBD,EAAa,OACxC,GAAIA,EAAa,OAASvB,EAAW,OAAS,CAACsB,EAI7C,MAHc,IAAI,MAChB,uHACF,EAGF,GAAI,CAACD,GAAY,CAAClD,EAAM,QAAQ,QAAQ,IAAIkD,CAAQ,EAAG,CAGrD,GAAIG,IAAuBrD,EAAM,QAAQ,WAAY,CACnD,IAAM6C,EAAa,IAAI,MACrB,6EACF,EACA,MAAAA,EAAM,KAAO,CACX,KAAM,cAAcI,CAAQ,IAAIC,CAAQ,GACxC,MAAO,cAAcD,CAAQ,IAAIC,CAAQ,GACzC,SAAU,CAAC,iBAAiB,CAC9B,EACML,CACR,CACA,IAAMS,EAAkBtD,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,UAAU,EAC3E,GAAIsD,IAAoB,QAAa,CAACA,EAAiB,CACrD,IAAMT,EAAa,IAAI,MACrB,qDAAqD7C,EAAM,QAAQ,UAAU,iBAC/E,EACA,MAAA6C,EAAM,KAAO,CACX,KAAM,cAAcI,CAAQ,IAAIC,CAAQ,GACxC,MAAO,cAAcD,CAAQ,IAAIC,CAAQ,GACzC,SAAU,CAAC,iBAAiB,CAC9B,EACML,CACR,CAEA,IAAMF,EAAgB3C,EAAM,QAAQ,QAAQ,IAAIsD,CAAe,EAC/D,GAAIX,IAAkB,QAAa,CAACA,EAAe,CACjD,IAAME,EAAa,IAAI,MACrB,qDAAqD7C,EAAM,QAAQ,UAAU,iBAC/E,EACA,MAAA6C,EAAM,KAAO,CACX,KAAM,cAAcI,CAAQ,IAAIC,CAAQ,GACxC,MAAO,cAAcD,CAAQ,IAAIC,CAAQ,GACzC,SAAU,CAAC,iBAAiB,CAC9B,EACML,CACR,CACA,IAAMzB,EAAS,CACb,GAAIpB,EAAM,QAAQ,IAAM,IAAMK,EAAM,EACpC,QAAS,iBAAiB+C,GAAc,OAAO,SAASpD,EAAM,QAAQ,UAAU,GAChF,IAAKA,EAAM,QAAQ,MACnB,QAASA,EAAM,QAAQ,MAAQ,KAAO,CAAC,EAAI,CAACA,EAAM,QAAQ,KAAK,GAAIoD,EAAa,EAAE,EAClF,OAAQpD,EAAM,QAAQ,WACtB,KAAM6B,EAAW,YACjB,KAAMJ,EACFA,EAAK,OAAO,OAAO,EACnB,CACE,eAAe2B,EAAa,EAAE,GAC5BA,EAAa,OAASvB,EAAW,MAAQ,WAAWsB,CAAc,GAAK,EACzE,EACF,CACN,EAEAnD,EAAM,QAAQ,KAAOoB,EACrBpB,EAAM,QAAQ,QAAQ,IAAIoB,EAAO,GAAIA,CAAM,EAC3CpB,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,WAAYoB,EAAO,EAAE,EAC9DF,EAAI,MAAMlB,EAAM,QAAQ,QAAQ,EAChCkB,EAAI,MAAM,eAAe,CAC3B,CACF,EA3G0B,cA4GbgB,GAAWpC,EAAA,SAAUgC,EAAgB,CAEhD,GADAA,EAASJ,EAAO,aAAaI,EAAQjC,EAAU,CAAC,EAC3CG,EAAM,QAAQ,SAAS,IAAI8B,CAAM,EAU/B,CACL9B,EAAM,QAAQ,WAAa8B,EAC3B,IAAMP,EAAKvB,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,UAAU,EAC1DuB,IAAO,QAAa,CAACA,EACvBvB,EAAM,QAAQ,KAAO,KAErBA,EAAM,QAAQ,KAAOA,EAAM,QAAQ,QAAQ,IAAIuB,CAAE,GAAK,IAE1D,KAlByC,CACvC,IAAMsB,EAAa,IAAI,MACrB,+EAA+Ef,CAAM,IACvF,EACA,MAAAe,EAAM,KAAO,CACX,KAAM,YAAYf,CAAM,GACxB,MAAO,YAAYA,CAAM,GACzB,SAAU,CAAC,UAAUA,CAAM,EAAE,CAC/B,EACMe,CACR,CASF,EArBwB,YA4BxB,SAASU,GAAOC,EAAY3C,EAAU4C,EAAa,CACjD,IAAMC,EAAQF,EAAI,QAAQ3C,CAAG,EACzB6C,IAAU,GACZF,EAAI,KAAKC,CAAM,EAEfD,EAAI,OAAOE,EAAO,EAAGD,CAAM,CAE/B,CAPS3D,EAAAyD,GAAA,UAST,SAASI,GAAyBC,EAAqB,CACrD,IAAMxC,EAASwC,EAAU,OAAO,CAACjD,EAAKS,IAChCT,EAAI,IAAMS,EAAO,IACZT,EAEFS,EACNwC,EAAU,CAAC,CAAC,EACXC,EAAO,GACXD,EAAU,QAAQ,SAAUE,EAAG,CACzBA,IAAM1C,EACRyC,GAAQ,KAERA,GAAQ,IAEZ,CAAC,EACD,IAAME,EAAQ,CAACF,EAAMzC,EAAO,GAAIA,EAAO,GAAG,EAC1C,QAAWU,KAAU9B,EAAM,QAAQ,SAC7BA,EAAM,QAAQ,SAAS,IAAI8B,CAAM,IAAMV,EAAO,IAChD2C,EAAM,KAAKjC,CAAM,EAIrB,GADAZ,EAAI,MAAM6C,EAAM,KAAK,GAAG,CAAC,EACrB3C,EAAO,SAAWA,EAAO,QAAQ,QAAU,GAAKA,EAAO,QAAQ,CAAC,GAAKA,EAAO,QAAQ,CAAC,EAAG,CAC1F,IAAMQ,EAAY5B,EAAM,QAAQ,QAAQ,IAAIoB,EAAO,QAAQ,CAAC,CAAC,EAC7DmC,GAAOK,EAAWxC,EAAQQ,CAAS,EAC/BR,EAAO,QAAQ,CAAC,GAClBwC,EAAU,KAAK5D,EAAM,QAAQ,QAAQ,IAAIoB,EAAO,QAAQ,CAAC,CAAC,CAAE,CAEhE,KAAO,IAAIA,EAAO,QAAQ,QAAU,EAClC,OAEA,GAAIA,EAAO,QAAQ,CAAC,EAAG,CACrB,IAAMQ,EAAY5B,EAAM,QAAQ,QAAQ,IAAIoB,EAAO,QAAQ,CAAC,CAAC,EAC7DmC,GAAOK,EAAWxC,EAAQQ,CAAS,CACrC,EAEFgC,EAAYrD,GAAOqD,EAAYE,GAAMA,EAAE,EAAE,EACzCH,GAAyBC,CAAS,CACpC,CAtCS9D,EAAA6D,GAAA,4BAwCF,IAAMK,GAAclE,EAAA,UAAY,CACrCoB,EAAI,MAAMlB,EAAM,QAAQ,OAAO,EAC/B,IAAMiE,EAAOC,GAAgB,EAAE,CAAC,EAChCP,GAAyB,CAACM,CAAI,CAAC,CACjC,EAJ2B,eAMdE,GAAQrE,EAAA,UAAY,CAC/BE,EAAM,MAAM,EACZmE,EAAY,CACd,EAHqB,SAKRC,GAAwBtE,EAAA,UAAY,CAc/C,MAbsB,CAAC,GAAGE,EAAM,QAAQ,aAAa,OAAO,CAAC,EAC1D,IAAI,CAACqE,EAAcC,IACdD,EAAa,QAAU,MAAQA,EAAa,QAAU,OACjDA,EAEF,CACL,GAAGA,EACH,MAAO,WAAW,KAAKC,CAAC,EAAE,CAC5B,CACD,EACA,KAAK,CAACC,EAAGC,KAAOD,EAAE,OAAS,IAAMC,EAAE,OAAS,EAAE,EAC9C,IAAI,CAAC,CAAE,KAAAxC,CAAK,KAAO,CAAE,KAAAA,CAAK,EAAE,CAGjC,EAfqC,yBAiBxByC,GAAc3E,EAAA,UAAY,CACrC,OAAOE,EAAM,QAAQ,QACvB,EAF2B,eAGd0E,GAAa5E,EAAA,UAAY,CACpC,OAAOE,EAAM,QAAQ,OACvB,EAF0B,cAGbkE,GAAkBpE,EAAA,UAAY,CACzC,IAAM8D,EAAY,CAAC,GAAG5D,EAAM,QAAQ,QAAQ,OAAO,CAAC,EACpD,OAAA4D,EAAU,QAAQ,SAAUe,EAAG,CAC7BzD,EAAI,MAAMyD,EAAE,EAAE,CAChB,CAAC,EACDf,EAAU,KAAK,CAACW,EAAGC,IAAMD,EAAE,IAAMC,EAAE,GAAG,EAC/BZ,CACT,EAP+B,mBAQlBgB,GAAmB9E,EAAA,UAAY,CAC1C,OAAOE,EAAM,QAAQ,UACvB,EAFgC,oBAGnB6E,GAAe/E,EAAA,UAAY,CACtC,OAAOE,EAAM,QAAQ,SACvB,EAF4B,gBAGf8E,GAAUhF,EAAA,UAAY,CACjC,OAAOE,EAAM,QAAQ,IACvB,EAFuB,WAIV+E,EAAiB,CAC5B,WAAAlD,EACA,UAAAhC,EACA,aAAAiB,GACA,WAAAE,GACA,WAAAG,GACA,OAAAC,GACA,OAAAU,GACA,MAAAK,GACA,WAAAY,GACA,SAAAb,GAEA,YAAA8B,GACA,MAAAG,GACA,sBAAAC,GACA,YAAAK,GACA,WAAAC,GACA,gBAAAR,GACA,iBAAAU,GACA,aAAAC,GACA,QAAAC,GACA,YAAAE,EACA,YAAAC,EACA,kBAAAC,EACA,kBAAAC,EACA,gBAAAC,EACA,gBAAAC,CACF,ECxfA,IAAMC,GAAWC,EAAA,CAACC,EAAeC,IAAgC,CAC/DC,EAAiBF,EAAKC,CAAE,EAEpBD,EAAI,KAENC,EAAG,aAAaD,EAAI,GAAG,EAEzB,QAAWG,KAAaH,EAAI,WAC1BI,GAAeD,EAAWF,CAAE,CAEhC,EAViB,YAYXG,GAAiBL,EAAA,CAACI,EAAgBF,IAAgC,CAStE,IAAMI,EAR+C,CACnD,OAAQN,EAACO,GAASL,EAAG,OAAOM,GAAYD,CAAI,CAAC,EAArC,UACR,OAAQP,EAACO,GAASL,EAAG,OAAOO,GAAYF,CAAI,CAAC,EAArC,UACR,MAAOP,EAACO,GAASL,EAAG,MAAMQ,GAAWH,CAAI,CAAC,EAAnC,SACP,SAAUP,EAACO,GAASL,EAAG,SAASS,GAAcJ,CAAI,CAAC,EAAzC,YACV,cAAeP,EAACO,GAASL,EAAG,WAAWU,GAAmBL,CAAI,CAAC,EAAhD,gBACjB,EAEuBH,EAAU,KAAK,EAClCE,EACFA,EAAOF,CAAS,EAEhBS,EAAI,MAAM,2BAA2BT,EAAU,KAAK,EAAE,CAE1D,EAfuB,kBAiBjBI,GAAcR,EAACc,IACQ,CACzB,GAAIA,EAAO,GACX,IAAKA,EAAO,SAAW,GACvB,KAAMA,EAAO,OAAS,OAAYC,EAAWD,EAAO,IAAI,EAAIC,EAAW,OACvE,KAAMD,EAAO,MAAQ,MACvB,GANkB,eAUdL,GAAcT,EAACgB,IACQ,CACzB,KAAMA,EAAO,KACb,MAAOA,EAAO,OAAS,CACzB,GAJkB,eAQdN,GAAaV,EAACiB,IACO,CACvB,OAAQA,EAAM,OACd,GAAIA,EAAM,IAAM,GAChB,KAAMA,EAAM,OAAS,OAAYF,EAAWE,EAAM,IAAI,EAAI,OAC1D,KAAMA,EAAM,MAAQ,MACtB,GANiB,cAUbN,GAAgBX,EAACkB,GACNA,EAAS,OADJ,iBAKhBN,GAAqBZ,EAACmB,IACS,CACjC,GAAIA,EAAc,GAClB,SAAU,GACV,KAAMA,EAAc,MAAM,SAAW,EAAI,OAAYA,EAAc,KACnE,OAAQA,EAAc,MACxB,GANyB,sBAUdb,GAA2B,CACtC,MAAON,EAAA,MAAOoB,GAAiC,CAC7C,IAAMnB,EAAgB,MAAMoB,EAAM,WAAYD,CAAK,EACnDP,EAAI,MAAMZ,CAAG,EACbF,GAASE,EAAKC,CAAE,CAClB,EAJO,QAKT,EC1EA,IAAMoB,EAAgB,GAChBC,EAAc,GACdC,EAAK,EACLC,EAAK,EAELC,EAAoB,EACpBC,EAAY,IAAI,IAChBC,EAAY,IAAI,IAChBC,EAAa,GAEfC,EAAiB,IAAI,IACrBC,EAAkB,CAAC,EACnBC,EAAS,EACTC,EAA0B,KAExBC,GAAQC,EAAA,IAAM,CAClBR,EAAU,MAAM,EAChBC,EAAU,MAAM,EAChBE,EAAe,MAAM,EACrBE,EAAS,EACTD,EAAQ,CAAC,EACTE,EAAM,IACR,EAPc,SASRG,GAAWD,EAACE,GAA2B,CAC3C,IAAMC,EAAW,SAAS,gBAAgB,6BAA8B,MAAM,EAG9E,OAFa,OAAOD,GAAQ,SAAWA,EAAI,MAAM,qBAAqB,EAAIA,GAErE,QAASE,GAAQ,CACpB,IAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,OAAO,EAC5EA,EAAM,eAAe,uCAAwC,YAAa,UAAU,EACpFA,EAAM,aAAa,KAAM,KAAK,EAC9BA,EAAM,aAAa,IAAK,GAAG,EAC3BA,EAAM,aAAa,QAAS,KAAK,EACjCA,EAAM,YAAcD,EAAI,KAAK,EAC7BD,EAAS,YAAYE,CAAK,CAC5B,CAAC,EAEMF,CACT,EAfiB,YAiBXG,GAAoBN,EAACO,GAA0C,CACnE,IAAIC,EACAC,EACAC,EACJ,OAAIZ,IAAQ,MACVW,EAAiBT,EAAA,CAACW,EAAWC,IAAcD,GAAKC,EAA/B,kBACjBF,EAAiB,MAEjBD,EAAiBT,EAAA,CAACW,EAAWC,IAAcD,GAAKC,EAA/B,kBACjBF,EAAiB,GAGnBH,EAAQ,QAASM,GAAW,CAC1B,IAAMC,EACJhB,IAAQ,MAAQA,GAAO,KAAOL,EAAU,IAAIoB,CAAM,GAAG,EAAIpB,EAAU,IAAIoB,CAAM,GAAG,EAE9EC,IAAmB,QAAaL,EAAeK,EAAgBJ,CAAc,IAC/EF,EAAgBK,EAChBH,EAAiBI,EAErB,CAAC,EAEMN,CACT,EAvB0B,qBAyBpBO,GAAsBf,EAACO,GAAsB,CACjD,IAAIC,EAAgB,GAChBQ,EAAc,IAElB,OAAAT,EAAQ,QAASM,GAAW,CAC1B,IAAMC,EAAiBrB,EAAU,IAAIoB,CAAM,EAAG,EAC1CC,GAAkBE,IACpBR,EAAgBK,EAChBG,EAAcF,EAElB,CAAC,EACMN,GAAiB,MAC1B,EAZ4B,uBActBS,GAAmBjB,EAAA,CACvBkB,EACAC,EACAzB,IACG,CACH,IAAI0B,EAAS1B,EACTsB,EAActB,EACZ2B,EAAkB,CAAC,EAEzBH,EAAW,QAASI,GAAQ,CAC1B,IAAMC,EAASJ,EAAQ,IAAIG,CAAG,EAC9B,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,4BAA4BD,CAAG,EAAE,EAG/CC,EAAO,QAAQ,QACjBH,EAASI,GAAwBD,CAAM,EACvCP,EAAc,KAAK,IAAII,EAAQJ,CAAW,GAE1CK,EAAM,KAAKE,CAAM,EAEnBE,GAAkBF,EAAQH,CAAM,CAClC,CAAC,EAEDA,EAASJ,EACTK,EAAM,QAASE,GAAW,CACxBG,GAAgBH,EAAQH,EAAQ1B,CAAU,CAC5C,CAAC,EACDwB,EAAW,QAASI,GAAQ,CAC1B,IAAMC,EAASJ,EAAQ,IAAIG,CAAG,EAE9B,GAAIC,GAAQ,QAAQ,OAAQ,CAC1B,IAAMf,EAAgBO,GAAoBQ,EAAO,OAAO,EACxDH,EAAS3B,EAAU,IAAIe,CAAa,EAAG,EAAIpB,EACvCgC,GAAUJ,IACZA,EAAcI,GAEhB,IAAMO,EAAInC,EAAU,IAAI+B,EAAO,MAAM,EAAG,IAClCK,EAAIR,EAASjC,EACnBM,EAAU,IAAI8B,EAAO,GAAI,CAAE,EAAGI,EAAG,EAAGC,CAAE,CAAC,CACzC,CACF,CAAC,CACH,EA1CyB,oBA4CnBC,GAAuB7B,EAACuB,GAA2B,CACvD,IAAMf,EAAgBF,GAAkBiB,EAAO,QAAQ,OAAQO,GAAMA,IAAM,IAAI,CAAC,EAChF,GAAI,CAACtB,EACH,MAAM,IAAI,MAAM,uCAAuCe,EAAO,EAAE,EAAE,EAGpE,IAAMQ,EAAmBtC,EAAU,IAAIe,CAAa,GAAG,EACvD,GAAIuB,IAAqB,OACvB,MAAM,IAAI,MAAM,gDAAgDR,EAAO,EAAE,EAAE,EAE7E,OAAOQ,CACT,EAX6B,wBAavBP,GAA0BxB,EAACuB,GACNM,GAAqBN,CAAM,EAC1BnC,EAFI,2BAK1BqC,GAAoBzB,EAAA,CAACuB,EAAgBH,IAAmC,CAC5E,IAAMY,EAASxC,EAAU,IAAI+B,EAAO,MAAM,EAE1C,GAAI,CAACS,EACH,MAAM,IAAI,MAAM,+BAA+BT,EAAO,EAAE,EAAE,EAG5D,IAAMI,EAAIK,EAAO,IACXJ,EAAIR,EAASjC,EACnB,OAAAM,EAAU,IAAI8B,EAAO,GAAI,CAAE,EAAAI,EAAG,EAAAC,CAAE,CAAC,EAC1B,CAAE,EAAAD,EAAG,EAAAC,CAAE,CAChB,EAX0B,qBAapBF,GAAkB1B,EAAA,CAACuB,EAAgBH,EAAgB1B,IAAuB,CAC9E,IAAMsC,EAASxC,EAAU,IAAI+B,EAAO,MAAM,EAC1C,GAAI,CAACS,EACH,MAAM,IAAI,MAAM,+BAA+BT,EAAO,EAAE,EAAE,EAG5D,IAAMK,EAAIR,EAAS1B,EACbiC,EAAIK,EAAO,IACjBvC,EAAU,IAAI8B,EAAO,GAAI,CAAE,EAAAI,EAAG,EAAAC,CAAE,CAAC,CACnC,EATwB,mBAWlBK,GAAmBjC,EAAA,CACvBkC,EACAX,EACAY,EACAC,EACAC,EACAC,IACG,CACH,GAAIA,IAAqBC,EAAW,UAClCL,EACG,OAAO,MAAM,EACb,KAAK,IAAKC,EAAe,EAAI,EAAE,EAC/B,KAAK,IAAKA,EAAe,EAAI,EAAE,EAC/B,KAAK,QAAS,EAAE,EAChB,KAAK,SAAU,EAAE,EACjB,KACC,QACA,UAAUZ,EAAO,EAAE,oBAAoBc,EAAc9C,CAAiB,IAAI6C,CAAS,QACrF,EACFF,EACG,OAAO,MAAM,EACb,KAAK,IAAKC,EAAe,EAAI,CAAC,EAC9B,KAAK,IAAKA,EAAe,EAAI,CAAC,EAC9B,KAAK,QAAS,EAAE,EAChB,KAAK,SAAU,EAAE,EACjB,KACC,QACA,UAAUZ,EAAO,EAAE,UAAUc,EAAc9C,CAAiB,IAAI6C,CAAS,QAC3E,UACOE,IAAqBC,EAAW,YACzCL,EACG,OAAO,QAAQ,EACf,KAAK,KAAMC,EAAe,CAAC,EAC3B,KAAK,KAAMA,EAAe,CAAC,EAC3B,KAAK,IAAK,EAAE,EACZ,KAAK,QAAS,UAAUZ,EAAO,EAAE,IAAIa,CAAS,EAAE,EACnDF,EACG,OAAO,QAAQ,EACf,KAAK,KAAMC,EAAe,EAAI,CAAC,EAC/B,KAAK,KAAMA,EAAe,EAAI,CAAC,EAC/B,KAAK,IAAK,IAAI,EACd,KAAK,OAAQ,MAAM,EACnB,KAAK,QAAS,UAAUZ,EAAO,EAAE,IAAIa,CAAS,EAAE,EACnDF,EACG,OAAO,QAAQ,EACf,KAAK,KAAMC,EAAe,EAAI,CAAC,EAC/B,KAAK,KAAMA,EAAe,EAAI,CAAC,EAC/B,KAAK,IAAK,IAAI,EACd,KAAK,OAAQ,MAAM,EACnB,KAAK,QAAS,UAAUZ,EAAO,EAAE,IAAIa,CAAS,EAAE,EACnDF,EACG,OAAO,MAAM,EACb,KAAK,KAAMC,EAAe,EAAI,CAAC,EAC/B,KAAK,KAAMA,EAAe,EAAI,CAAC,EAC/B,KAAK,KAAMA,EAAe,CAAC,EAC3B,KAAK,KAAMA,EAAe,EAAI,CAAC,EAC/B,KAAK,SAAU,MAAM,EACrB,KAAK,QAAS,UAAUZ,EAAO,EAAE,IAAIa,CAAS,EAAE,EACnDF,EACG,OAAO,MAAM,EACb,KAAK,KAAMC,EAAe,EAAI,CAAC,EAC/B,KAAK,KAAMA,EAAe,EAAI,CAAC,EAC/B,KAAK,KAAMA,EAAe,CAAC,EAC3B,KAAK,KAAMA,EAAe,EAAI,CAAC,EAC/B,KAAK,SAAU,MAAM,EACrB,KAAK,QAAS,UAAUZ,EAAO,EAAE,IAAIa,CAAS,EAAE,MAC9C,CACL,IAAMI,EAASN,EAAS,OAAO,QAAQ,EAKvC,GAJAM,EAAO,KAAK,KAAML,EAAe,CAAC,EAClCK,EAAO,KAAK,KAAML,EAAe,CAAC,EAClCK,EAAO,KAAK,IAAKjB,EAAO,OAASgB,EAAW,MAAQ,EAAI,EAAE,EAC1DC,EAAO,KAAK,QAAS,UAAUjB,EAAO,EAAE,UAAUc,EAAc9C,CAAiB,EAAE,EAC/E+C,IAAqBC,EAAW,MAAO,CACzC,IAAME,EAAUP,EAAS,OAAO,QAAQ,EACxCO,EAAQ,KAAK,KAAMN,EAAe,CAAC,EACnCM,EAAQ,KAAK,KAAMN,EAAe,CAAC,EACnCM,EAAQ,KAAK,IAAK,CAAC,EACnBA,EAAQ,KACN,QACA,UAAUL,CAAS,IAAIb,EAAO,EAAE,UAAUc,EAAc9C,CAAiB,EAC3E,CACF,CACI+C,IAAqBC,EAAW,SACpBL,EAAS,OAAO,MAAM,EAEjC,KACC,IACA,KAAKC,EAAe,EAAI,CAAC,IAAIA,EAAe,EAAI,CAAC,IAAIA,EAAe,EAAI,CAAC,IAAIA,EAAe,EAAI,CAAC,IAAIA,EAAe,EAAI,CAAC,IAAIA,EAAe,EAAI,CAAC,IAAIA,EAAe,EAAI,CAAC,IAAIA,EAAe,EAAI,CAAC,EACnM,EACC,KAAK,QAAS,UAAUC,CAAS,IAAIb,EAAO,EAAE,UAAUc,EAAc9C,CAAiB,EAAE,CAEhG,CACF,EA5FyB,oBA8FnBmD,GAAkB1C,EAAA,CACtB2C,EACApB,EACAY,EACAS,EACAC,IACG,CACH,GACEtB,EAAO,OAASgB,EAAW,cACzBhB,EAAO,UAAYA,EAAO,OAASgB,EAAW,OAAUhB,EAAO,OAASgB,EAAW,QACrFM,EAAe,gBACf,CACA,IAAMC,EAAUH,EAAQ,OAAO,GAAG,EAC5BI,EAAWD,EAAQ,OAAO,MAAM,EAAE,KAAK,QAAS,kBAAkB,EAClEE,EAAOF,EACV,OAAO,MAAM,EACb,KAAK,IAAKF,CAAG,EACb,KAAK,IAAKT,EAAe,EAAI,EAAE,EAC/B,KAAK,QAAS,cAAc,EAC5B,KAAKZ,EAAO,EAAE,EACX0B,EAAOD,EAAK,KAAK,GAAG,QAAQ,EAElC,GAAIC,IACFF,EACG,KAAK,IAAKZ,EAAe,cAAgBc,EAAK,MAAQ,EAAI3D,CAAE,EAC5D,KAAK,IAAK6C,EAAe,EAAI,IAAI,EACjC,KAAK,QAASc,EAAK,MAAQ,EAAI3D,CAAE,EACjC,KAAK,SAAU2D,EAAK,OAAS,EAAI3D,CAAE,EAElCQ,IAAQ,MAAQA,IAAQ,MAC1BiD,EACG,KAAK,IAAKZ,EAAe,GAAKc,EAAK,MAAQ,EAAI5D,EAAK,EAAE,EACtD,KAAK,IAAK8C,EAAe,EAAI,EAAE,EAClCa,EACG,KAAK,IAAKb,EAAe,GAAKc,EAAK,MAAQ,EAAI5D,EAAG,EAClD,KAAK,IAAK8C,EAAe,EAAIc,EAAK,OAAS,EAAE,GAEhDD,EAAK,KAAK,IAAKb,EAAe,cAAgBc,EAAK,MAAQ,CAAC,EAG1DJ,EAAe,mBACjB,GAAI/C,IAAQ,MAAQA,IAAQ,KAC1BkD,EAAK,KACH,YACA,eAAyBb,EAAe,EAAI,KAAOA,EAAe,EAAI,GACxE,EACAY,EAAS,KACP,YACA,eAAyBZ,EAAe,EAAI,KAAOA,EAAe,EAAI,GACxE,MACK,CACL,IAAMe,EAAM,MAASD,EAAK,MAAQ,IAAM,GAAM,IACxCE,EAAM,GAAMF,EAAK,MAAQ,GAAM,IACrCH,EAAQ,KACN,YACA,aACEI,EACA,KACAC,EACA,iBAGAP,EACA,KACAT,EAAe,EACf,GACJ,CACF,CAGN,CACF,EAvEwB,mBAyElBiB,GAAiBpD,EAAA,CACrB2C,EACApB,EACAY,EACAS,IACG,CACH,GAAIrB,EAAO,KAAK,OAAS,EAAG,CAC1B,IAAI8B,EAAU,EACVC,EAAkB,EAClBC,EAAmB,EACjBC,EAAc,CAAC,EAErB,QAAWC,KAAYlC,EAAO,KAAK,QAAQ,EAAG,CAC5C,IAAMmC,EAAOf,EAAQ,OAAO,SAAS,EAC/BgB,EAAOhB,EAAQ,OAAO,QAAQ,EAC9BiB,EAAMjB,EACT,OAAO,MAAM,EACb,KAAK,IAAKR,EAAe,EAAI,GAAKkB,CAAO,EACzC,KAAK,QAAS,WAAW,EACzB,KAAKI,CAAQ,EACVI,EAAUD,EAAI,KAAK,GAAG,QAAQ,EACpC,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,oBAAoB,EAGtCP,EAAkB,KAAK,IAAIA,EAAiBO,EAAQ,KAAK,EACzDN,EAAmB,KAAK,IAAIA,EAAkBM,EAAQ,MAAM,EAE5DD,EAAI,KAAK,IAAKzB,EAAe,cAAgB0B,EAAQ,MAAQ,CAAC,EAE9DL,EAAY,KAAK,CACf,IAAAI,EACA,KAAAD,EACA,KAAAD,EACA,QAAAL,CACF,CAAC,EAEDA,GAAW,EACb,CAEA,OAAW,CAAE,IAAAO,EAAK,KAAAD,EAAM,KAAAD,EAAM,QAAAL,CAAQ,IAAKG,EAAa,CACtD,IAAMM,EAAKP,EAAmB,EACxBQ,EAAK5B,EAAe,EAAI,KAAOkB,EAkBrC,GAjBAK,EAAK,KAAK,QAAS,eAAe,EAAE,KAClC,SACA;AAAA,QACAd,EAAMU,EAAkB,EAAIjE,EAAK,CAAC,IAAI0E,EAAKzE,CAAE;AAAA,QAC7CsD,EAAMU,EAAkB,EAAIjE,EAAK,CAAC,IAAI0E,EAAKzE,CAAE;AAAA,QAC7C6C,EAAe,cAAgBmB,EAAkB,EAAIjE,CAAE,IAAI0E,EAAKD,EAAKxE,CAAE;AAAA,QACvE6C,EAAe,cAAgBmB,EAAkB,EAAIjE,CAAE,IAAI0E,EAAKD,EAAKxE,CAAE;AAAA,QACvE6C,EAAe,cAAgBmB,EAAkB,EAAIjE,CAAE,IAAI0E,EAAKD,EAAKxE,CAAE;AAAA,QACvE6C,EAAe,cAAgBmB,EAAkB,EAAIjE,CAAE,IAAI0E,EAAKD,EAAKxE,CAAE,EACzE,EAEAqE,EACG,KAAK,KAAMI,CAAE,EACb,KAAK,KAAMnB,EAAMU,EAAkB,EAAIjE,EAAK,CAAC,EAC7C,KAAK,IAAK,GAAG,EACb,KAAK,QAAS,UAAU,EAEvBS,IAAQ,MAAQA,IAAQ,KAAM,CAChC,IAAMkE,EAAUpB,EAAMS,EAEtBK,EACG,KAAK,QAAS,eAAe,EAC7B,KACC,SACA;AAAA,UACFvB,EAAe,CAAC,IAAI6B,EAAU,CAAC;AAAA,UAC/B7B,EAAe,CAAC,IAAI6B,EAAU,CAAC;AAAA,UAC/B7B,EAAe,EAAIhD,CAAa,IAAI6E,EAAUF,EAAK,CAAC;AAAA,UACpD3B,EAAe,EAAIhD,EAAgBmE,EAAkB,CAAC,IAAIU,EAAUF,EAAK,CAAC;AAAA,UAC1E3B,EAAe,EAAIhD,EAAgBmE,EAAkB,CAAC,IAAIU,EAAUF,EAAK,CAAC;AAAA,UAC1E3B,EAAe,EAAIhD,CAAa,IAAI6E,EAAUF,EAAK,CAAC,EACpD,EACC,KAAK,YAAa,+BAAiC3B,EAAe,EAAI,IAAMS,EAAM,GAAG,EACxFe,EACG,KAAK,KAAMxB,EAAe,EAAI9C,EAAK,CAAC,EACpC,KAAK,KAAM2E,CAAO,EAClB,KAAK,YAAa,+BAAiC7B,EAAe,EAAI,IAAMS,EAAM,GAAG,EACxFgB,EACG,KAAK,IAAKzB,EAAe,EAAI,CAAC,EAC9B,KAAK,IAAK6B,EAAU,CAAC,EACrB,KAAK,YAAa,+BAAiC7B,EAAe,EAAI,IAAMS,EAAM,GAAG,CAC1F,CACF,CACF,CACF,EAvFuB,kBAyFjBqB,GAAqBjE,EAACuB,GAA2B,CAErD,OADyBA,EAAO,YAAcA,EAAO,KAC3B,CACxB,KAAKgB,EAAW,OACd,MAAO,gBACT,KAAKA,EAAW,QACd,MAAO,iBACT,KAAKA,EAAW,UACd,MAAO,mBACT,KAAKA,EAAW,MACd,MAAO,eACT,KAAKA,EAAW,YACd,MAAO,qBACT,QACE,MAAO,eACX,CACF,EAhB2B,sBAkBrB2B,GAAoBlE,EAAA,CACxBuB,EACAzB,EACA8C,EACAnD,IACW,CACX,IAAM0E,EAAwB,CAAE,EAAG,EAAG,EAAG,CAAE,EAE3C,GAAI5C,EAAO,QAAQ,OAAS,EAAG,CAC7B,IAAMf,EAAgBF,GAAkBiB,EAAO,OAAO,EACtD,GAAIf,EAAe,CACjB,IAAMM,EAAiBrB,EAAU,IAAIe,CAAa,GAAK2D,EAEvD,OAAIrE,IAAQ,KACHgB,EAAe,EAAI1B,EACjBU,IAAQ,MACOL,EAAU,IAAI8B,EAAO,EAAE,GAAK4C,GAC7B,EAAI/E,EAEpB0B,EAAe,EAAI1B,CAE9B,CACF,KACE,QAAIU,IAAQ,KACHJ,EACEI,IAAQ,MACOL,EAAU,IAAI8B,EAAO,EAAE,GAAK4C,GAC7B,EAAI/E,EAEpB,EAGX,MAAO,EACT,EAjC0B,qBAmCpBgF,GAAoBpE,EAAA,CACxBuB,EACAqB,EACAyB,IACyB,CACzB,IAAMC,EAAgBxE,IAAQ,MAAQuE,EAAoBzB,EAAMA,EAAMzD,EAChEyC,EAAI9B,IAAQ,MAAQA,IAAQ,KAAOwE,EAAgB9E,EAAU,IAAI+B,EAAO,MAAM,GAAG,IACjFI,EAAI7B,IAAQ,MAAQA,IAAQ,KAAON,EAAU,IAAI+B,EAAO,MAAM,GAAG,IAAM+C,EAC7E,GAAI3C,IAAM,QAAaC,IAAM,OAC3B,MAAM,IAAI,MAAM,sCAAsCL,EAAO,EAAE,EAAE,EAEnE,MAAO,CAAE,EAAAI,EAAG,EAAAC,EAAG,cAAA0C,CAAc,CAC/B,EAZ0B,qBAcpBC,GAAcvE,EAAA,CAClBwE,EACArD,EACAsD,EACA5B,IACG,CACH,IAAMX,EAAWsC,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,gBAAgB,EACzD7B,EAAU6B,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,eAAe,EACzD5B,EAAM9C,IAAQ,MAAQA,IAAQ,KAAOJ,EAAa,EAChDgF,EAAO,CAAC,GAAGvD,EAAQ,KAAK,CAAC,EACzBkD,EAAoBxB,EAAe,iBAAmB,GAEtD8B,EAAW3E,EAAA,CAACW,EAAWC,IAAc,CACzC,IAAMgE,EAAOzD,EAAQ,IAAIR,CAAC,GAAG,IACvBkE,EAAO1D,EAAQ,IAAIP,CAAC,GAAG,IAC7B,OAAOgE,IAAS,QAAaC,IAAS,OAAYD,EAAOC,EAAO,CAClE,EAJiB,YAMb3D,EAAawD,EAAK,KAAKC,CAAQ,EAC/B7E,IAAQ,OACNuE,GACFpD,GAAiBC,EAAYC,EAASyB,CAAG,EAE3C1B,EAAaA,EAAW,QAAQ,GAGlCA,EAAW,QAASI,GAAQ,CAC1B,IAAMC,EAASJ,EAAQ,IAAIG,CAAG,EAC9B,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,4BAA4BD,CAAG,EAAE,EAE/C+C,IACFzB,EAAMsB,GAAkB3C,EAAQzB,EAAK8C,EAAKnD,CAAS,GAGrD,IAAM0C,EAAiBiC,GAAkB7C,EAAQqB,EAAKyB,CAAiB,EAEvE,GAAII,EAAa,CACf,IAAMrC,EAAY6B,GAAmB1C,CAAM,EACrCe,EAAmBf,EAAO,YAAcA,EAAO,KAC/Cc,EAAc7C,EAAU,IAAI+B,EAAO,MAAM,GAAG,OAAS,EAC3DU,GAAiBC,EAAUX,EAAQY,EAAgBC,EAAWC,EAAaC,CAAgB,EAC3FI,GAAgBC,EAASpB,EAAQY,EAAgBS,EAAKC,CAAc,EACpEO,GAAeT,EAASpB,EAAQY,EAAgBS,CAAG,CACrD,CACI9C,IAAQ,MAAQA,IAAQ,KAC1BL,EAAU,IAAI8B,EAAO,GAAI,CAAE,EAAGY,EAAe,EAAG,EAAGA,EAAe,aAAc,CAAC,EAEjF1C,EAAU,IAAI8B,EAAO,GAAI,CAAE,EAAGY,EAAe,cAAe,EAAGA,EAAe,CAAE,CAAC,EAEnFS,EAAM9C,IAAQ,MAAQuE,EAAoBzB,EAAMxD,EAAcwD,EAAMxD,EAAcD,EAC9EyD,EAAM/C,IACRA,EAAS+C,EAEb,CAAC,CACH,EAvDoB,eAyDdkC,GAAqB9E,EAAA,CACzB+E,EACAC,EACAC,EACAC,EACAC,IACG,CAEH,IAAMC,GADoBtF,IAAQ,MAAQA,IAAQ,KAAOmF,EAAG,EAAIC,EAAG,EAAID,EAAG,EAAIC,EAAG,GACpCF,EAAQ,OAASD,EAAQ,OAChEM,EAAuBrF,EAAC2B,GAAcA,EAAE,SAAWyD,EAA5B,wBACvBE,EAAmBtF,EAAC2B,GAAcA,EAAE,IAAMoD,EAAQ,KAAOpD,EAAE,IAAMqD,EAAQ,IAAtD,oBACzB,MAAO,CAAC,GAAGG,EAAW,OAAO,CAAC,EAAE,KAAMI,GAC7BD,EAAiBC,CAAO,GAAKF,EAAqBE,CAAO,CACjE,CACH,EAd2B,sBAgBrBC,EAAWxF,EAAA,CAACyF,EAAYC,EAAYC,EAAQ,IAAc,CAC9D,IAAMC,EAAYH,EAAK,KAAK,IAAIA,EAAKC,CAAE,EAAI,EAC3C,GAAIC,EAAQ,EACV,OAAOC,EAIT,GADWhG,EAAM,MAAOiG,GAAS,KAAK,IAAIA,EAAOD,CAAS,GAAK,EAAE,EAE/D,OAAAhG,EAAM,KAAKgG,CAAS,EACbA,EAET,IAAME,EAAO,KAAK,IAAIL,EAAKC,CAAE,EAC7B,OAAOF,EAASC,EAAIC,EAAKI,EAAO,EAAGH,EAAQ,CAAC,CAC9C,EAbiB,YAeXI,GAAY/F,EAAA,CAChBwE,EACAO,EACAC,EACAG,IACG,CACH,IAAMF,EAAKxF,EAAU,IAAIsF,EAAQ,EAAE,EAC7BG,EAAKzF,EAAU,IAAIuF,EAAQ,EAAE,EACnC,GAAIC,IAAO,QAAaC,IAAO,OAC7B,MAAM,IAAI,MAAM,0CAA0CH,EAAQ,EAAE,QAAQC,EAAQ,EAAE,EAAE,EAE1F,IAAMgB,EAAsBlB,GAAmBC,EAASC,EAASC,EAAIC,EAAIC,CAAU,EAK/Ec,EAAM,GACNC,EAAO,GACPC,EAAS,EACTC,EAAS,EAETC,EAAgB7G,EAAU,IAAIwF,EAAQ,MAAM,GAAG,MAC/CA,EAAQ,OAASzC,EAAW,OAASwC,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,IACvEqB,EAAgB7G,EAAU,IAAIuF,EAAQ,MAAM,GAAG,OAGjD,IAAIuB,EACJ,GAAIN,EAAqB,CACvBC,EAAM,oBACNC,EAAO,oBACPC,EAAS,GACTC,EAAS,GAET,IAAMG,EAAQtB,EAAG,EAAIC,EAAG,EAAIM,EAASP,EAAG,EAAGC,EAAG,CAAC,EAAIM,EAASN,EAAG,EAAGD,EAAG,CAAC,EAEhEuB,EAAQvB,EAAG,EAAIC,EAAG,EAAIM,EAASP,EAAG,EAAGC,EAAG,CAAC,EAAIM,EAASN,EAAG,EAAGD,EAAG,CAAC,EAElEnF,IAAQ,KACNmF,EAAG,EAAIC,EAAG,EAIZoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMuB,EAAQL,CAAM,IAAIlB,EAAG,CAAC,IAAIiB,CAAI,IAAIM,CAAK,IACtEvB,EAAG,EAAImB,CACT,MAAMI,CAAK,IAAItB,EAAG,EAAIiB,CAAM,IAAIF,CAAG,IAAIO,EAAQJ,CAAM,IAAIlB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAK/EmB,EAAgB7G,EAAU,IAAIuF,EAAQ,MAAM,GAAG,MAE/CuB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMuB,EAAQL,CAAM,IAAIlB,EAAG,CAAC,IAAIgB,CAAG,IAAIO,CAAK,IAAIvB,EAAG,EAAImB,CAAM,MAAMI,CAAK,IAAItB,EAAG,EAAIiB,CAAM,IAAID,CAAI,IAAIM,EAAQJ,CAAM,IAAIlB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAEjKpF,IAAQ,KACbmF,EAAG,EAAIC,EAAG,EAIZoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMuB,EAAQL,CAAM,IAAIlB,EAAG,CAAC,IAAIgB,CAAG,IAAIO,CAAK,IAAIvB,EAAG,EAAImB,CAAM,MAAMI,CAAK,IAAItB,EAAG,EAAIiB,CAAM,IAAID,CAAI,IAAIM,EAAQJ,CAAM,IAAIlB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAKxKmB,EAAgB7G,EAAU,IAAIuF,EAAQ,MAAM,GAAG,MAE/CuB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMuB,EAAQL,CAAM,IAAIlB,EAAG,CAAC,IAAIiB,CAAI,IAAIM,CAAK,IAAIvB,EAAG,EAAImB,CAAM,MAAMI,CAAK,IAAItB,EAAG,EAAIiB,CAAM,IAAIF,CAAG,IAAIO,EAAQJ,CAAM,IAAIlB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGtKD,EAAG,EAAIC,EAAG,EAIZoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIsB,EAAQJ,CAAM,IAAIF,CAAG,IAC5DhB,EAAG,EAAImB,CACT,IAAIG,CAAK,MAAMrB,EAAG,EAAIiB,CAAM,IAAII,CAAK,IAAIL,CAAI,IAAIhB,EAAG,CAAC,IAAIqB,EAAQH,CAAM,MAAMlB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAKzFmB,EAAgB7G,EAAU,IAAIuF,EAAQ,MAAM,GAAG,MAE/CuB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIsB,EAAQJ,CAAM,IAAID,CAAI,IAC7DjB,EAAG,EAAImB,CACT,IAAIG,CAAK,MAAMrB,EAAG,EAAIiB,CAAM,IAAII,CAAK,IAAIN,CAAG,IAAIf,EAAG,CAAC,IAAIqB,EAAQH,CAAM,MAAMlB,EAAG,CAAC,IAAIA,EAAG,CAAC,GAG9F,MACEe,EAAM,oBACNC,EAAO,oBACPC,EAAS,GACTC,EAAS,GAELtG,IAAQ,MACNmF,EAAG,EAAIC,EAAG,IACRF,EAAQ,OAASzC,EAAW,OAASwC,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEsB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIiB,CAAM,IAAIF,CAAG,IAAIhB,EAAG,EAAImB,CAAM,IAC5ElB,EAAG,CACL,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,GAElBoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIiB,CAAM,IAAIlB,EAAG,CAAC,IAAIiB,CAAI,IAAIhB,EAAG,CAAC,IACpED,EAAG,EAAImB,CACT,MAAMlB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAIlBD,EAAG,EAAIC,EAAG,IACZe,EAAM,oBACNC,EAAO,oBACPC,EAAS,GACTC,EAAS,GACLpB,EAAQ,OAASzC,EAAW,OAASwC,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEsB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIiB,CAAM,IAAID,CAAI,IAAIjB,EAAG,EAAImB,CAAM,IAC7ElB,EAAG,CACL,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,GAElBoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIiB,CAAM,IAAIlB,EAAG,CAAC,IAAIgB,CAAG,IAAIf,EAAG,CAAC,IACnED,EAAG,EAAImB,CACT,MAAMlB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGlBD,EAAG,IAAMC,EAAG,IACdoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,CAAC,IAAIA,EAAG,CAAC,KAEtCpF,IAAQ,MACbmF,EAAG,EAAIC,EAAG,IACRF,EAAQ,OAASzC,EAAW,OAASwC,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEsB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIiB,CAAM,IAAID,CAAI,IAAIjB,EAAG,EAAImB,CAAM,IAC7ElB,EAAG,CACL,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,GAElBoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIiB,CAAM,IAAIlB,EAAG,CAAC,IAAIgB,CAAG,IAAIf,EAAG,CAAC,IACnED,EAAG,EAAImB,CACT,MAAMlB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGlBD,EAAG,EAAIC,EAAG,IACZe,EAAM,oBACNC,EAAO,oBACPC,EAAS,GACTC,EAAS,GAELpB,EAAQ,OAASzC,EAAW,OAASwC,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEsB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIiB,CAAM,IAAIF,CAAG,IAAIhB,EAAG,EAAImB,CAAM,IAC5ElB,EAAG,CACL,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,GAElBoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIiB,CAAM,IAAIlB,EAAG,CAAC,IAAIiB,CAAI,IAAIhB,EAAG,CAAC,IACpED,EAAG,EAAImB,CACT,MAAMlB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAIlBD,EAAG,IAAMC,EAAG,IACdoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,CAAC,IAAIA,EAAG,CAAC,MAG3CD,EAAG,EAAIC,EAAG,IACRF,EAAQ,OAASzC,EAAW,OAASwC,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEsB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIiB,CAAM,IAAIlB,EAAG,CAAC,IAAIiB,CAAI,IAAIhB,EAAG,CAAC,IACpED,EAAG,EAAImB,CACT,MAAMlB,EAAG,CAAC,IAAIA,EAAG,CAAC,GAElBoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIiB,CAAM,IAAIF,CAAG,IAAIhB,EAAG,EAAImB,CAAM,IAC5ElB,EAAG,CACL,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGlBD,EAAG,EAAIC,EAAG,IACRF,EAAQ,OAASzC,EAAW,OAASwC,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEsB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIiB,CAAM,IAAIlB,EAAG,CAAC,IAAIgB,CAAG,IAAIf,EAAG,CAAC,IACnED,EAAG,EAAImB,CACT,MAAMlB,EAAG,CAAC,IAAIA,EAAG,CAAC,GAElBoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIiB,CAAM,IAAID,CAAI,IAAIjB,EAAG,EAAImB,CAAM,IAC7ElB,EAAG,CACL,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAIlBD,EAAG,IAAMC,EAAG,IACdoB,EAAU,KAAKrB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,CAAC,IAAIA,EAAG,CAAC,KAInD,GAAIoB,IAAY,OACd,MAAM,IAAI,MAAM,2BAA2B,EAE7C9B,EACG,OAAO,MAAM,EACb,KAAK,IAAK8B,CAAO,EACjB,KAAK,QAAS,cAAiBD,EAAiB9G,CAAkB,CACvE,EA/LkB,aAiMZkH,GAAazG,EAAA,CACjBwE,EACArD,IACG,CACH,IAAMuF,EAAUlC,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,eAAe,EAC7D,CAAC,GAAGrD,EAAQ,KAAK,CAAC,EAAE,QAASG,GAAQ,CACnC,IAAMC,EAASJ,EAAQ,IAAIG,CAAG,EAE1BC,EAAQ,SAAWA,EAAQ,QAAQ,OAAS,GAC9CA,EAAQ,QAAQ,QAASV,GAAW,CAClCkF,GAAUW,EAASvF,EAAQ,IAAIN,CAAM,EAAIU,EAASJ,CAAO,CAC3D,CAAC,CAEL,CAAC,CACH,EAdmB,cAgBbwF,GAAe3G,EAAA,CACnBwE,EACAoC,EACA/D,IACG,CACH,IAAMgE,EAAIrC,EAAI,OAAO,GAAG,EACxBoC,EAAS,QAAQ,CAAC5E,EAAQ8E,IAAU,CAClC,IAAMC,EAAsBD,EAAQvH,EAE9BqD,EAAMpD,EAAU,IAAIwC,EAAO,IAAI,GAAG,IACxC,GAAIY,IAAQ,OACV,MAAM,IAAI,MAAM,iCAAiCZ,EAAO,IAAI,EAAE,EAEhE,IAAMgF,EAAOH,EAAE,OAAO,MAAM,EAC5BG,EAAK,KAAK,KAAM,CAAC,EACjBA,EAAK,KAAK,KAAMpE,CAAG,EACnBoE,EAAK,KAAK,KAAMnH,CAAM,EACtBmH,EAAK,KAAK,KAAMpE,CAAG,EACnBoE,EAAK,KAAK,QAAS,gBAAkBD,CAAmB,EAEpDjH,IAAQ,MACVkH,EAAK,KAAK,KAAMtH,CAAU,EAC1BsH,EAAK,KAAK,KAAMpE,CAAG,EACnBoE,EAAK,KAAK,KAAMnH,CAAM,EACtBmH,EAAK,KAAK,KAAMpE,CAAG,GACV9C,IAAQ,OACjBkH,EAAK,KAAK,KAAMnH,CAAM,EACtBmH,EAAK,KAAK,KAAMpE,CAAG,EACnBoE,EAAK,KAAK,KAAMtH,CAAU,EAC1BsH,EAAK,KAAK,KAAMpE,CAAG,GAErBhD,EAAM,KAAKgD,CAAG,EAEd,IAAMqE,EAAOjF,EAAO,KAGdkF,EAAejH,GAASgH,CAAI,EAE5BE,EAAMN,EAAE,OAAO,MAAM,EAIrBO,EAHcP,EAAE,OAAO,GAAG,EAAE,KAAK,QAAS,aAAa,EAGnC,OAAO,GAAG,EAAE,KAAK,QAAS,qBAAuBE,CAAmB,EAE9FK,EAAM,KAAK,EAAG,YAAYF,CAAY,EACtC,IAAMjE,EAAOiE,EAAa,QAAQ,EAClCC,EACG,KAAK,QAAS,uBAAyBJ,CAAmB,EAC1D,KAAK,KAAM,CAAC,EACZ,KAAK,KAAM,CAAC,EACZ,KAAK,IAAK,CAAC9D,EAAK,MAAQ,GAAKJ,EAAe,oBAAsB,GAAO,GAAK,EAAE,EAChF,KAAK,IAAK,CAACI,EAAK,OAAS,EAAI,CAAC,EAC9B,KAAK,QAASA,EAAK,MAAQ,EAAE,EAC7B,KAAK,SAAUA,EAAK,OAAS,CAAC,EACjCmE,EAAM,KACJ,YACA,cACG,CAACnE,EAAK,MAAQ,IAAMJ,EAAe,oBAAsB,GAAO,GAAK,IACtE,MACCD,EAAMK,EAAK,OAAS,EAAI,GACzB,GACJ,EACInD,IAAQ,MACVqH,EAAI,KAAK,IAAKvE,EAAMK,EAAK,MAAQ,EAAI,EAAE,EAAE,KAAK,IAAK,CAAC,EACpDmE,EAAM,KAAK,YAAa,cAAgBxE,EAAMK,EAAK,MAAQ,EAAI,GAAK,MAAc,GACzEnD,IAAQ,MACjBqH,EAAI,KAAK,IAAKvE,EAAMK,EAAK,MAAQ,EAAI,EAAE,EAAE,KAAK,IAAKpD,CAAM,EACzDuH,EAAM,KAAK,YAAa,cAAgBxE,EAAMK,EAAK,MAAQ,EAAI,GAAK,KAAOpD,EAAS,GAAG,GAEvFsH,EAAI,KAAK,YAAa,mBAA6BvE,EAAMK,EAAK,OAAS,GAAK,GAAG,CAEnF,CAAC,CACH,EAxEqB,gBA0EfoE,GAAoBrH,EAAA,SACxBiH,EACArE,EACAkE,EACA7D,EACAqE,EACQ,CACR,OAAA9H,EAAU,IAAIyH,EAAM,CAAE,IAAArE,EAAK,MAAAkE,CAAM,CAAC,EAClClE,GAAO,IAAM0E,EAAoB,GAAK,IAAMxH,IAAQ,MAAQA,IAAQ,KAAOmD,EAAK,MAAQ,EAAI,GACrFL,CACT,EAV0B,qBAYb2E,GAAuBvH,EAAA,SAAUE,EAAKsH,EAAIC,EAAKC,EAAS,CACnE3H,GAAM,EAEN4H,EAAI,MAAM,uBAAwBzH,EAAM;AAAA,EAAM,MAAOsH,EAAIC,CAAG,EAC5D,IAAMG,EAAKF,EAAQ,GACnB,GAAI,CAACE,EAAG,UAAW,CACjBD,EAAI,MAAM,yCAAyC,EACnD,MACF,CACA,IAAM9E,EAAiB+E,EAAG,UAAU,EAC9BN,EAAoBzE,EAAe,mBAAqB,GAC9DlD,EAAiBiI,EAAG,WAAW,EAC/B,IAAMhB,EAAWgB,EAAG,sBAAsB,EAC1C9H,EAAM8H,EAAG,aAAa,EACtB,IAAMC,EAAUC,EAAO,QAAQN,CAAE,IAAI,EACjC5E,EAAM,EAEVgE,EAAS,QAAQ,CAAC5E,EAAQ8E,IAAU,CAClC,IAAMI,EAAejH,GAAS+B,EAAO,IAAI,EACnC6E,EAAIgB,EAAQ,OAAO,GAAG,EACtBE,EAAclB,EAAE,OAAO,GAAG,EAAE,KAAK,QAAS,aAAa,EACvDO,EAAQW,EAAY,OAAO,GAAG,EAAE,KAAK,QAAS,oBAAoB,EACxEX,EAAM,KAAK,GAAG,YAAYF,CAAY,EACtC,IAAMjE,EAAOiE,EAAa,QAAQ,EAElCtE,EAAMyE,GAAkBrF,EAAO,KAAMY,EAAKkE,EAAO7D,EAAMqE,CAAiB,EACxEF,EAAM,OAAO,EACbW,EAAY,OAAO,EACnBlB,EAAE,OAAO,CACX,CAAC,EAEDtC,GAAYsD,EAASlI,EAAgB,GAAOkD,CAAc,EACtDA,EAAe,cACjB8D,GAAakB,EAASjB,EAAU/D,CAAc,EAEhD4D,GAAWoB,EAASlI,CAAc,EAClC4E,GAAYsD,EAASlI,EAAgB,GAAMkD,CAAc,EAEzDmF,EAAM,YACJH,EACA,eACAhF,EAAe,gBAAkB,EACjC+E,EAAG,gBAAgB,CACrB,EAGAK,EAAkB,OAAWJ,EAAShF,EAAe,eAAgBA,EAAe,WAAW,CACjG,EA/CoC,QAiD7BqF,GAAQ,CACb,KAAAX,EACF,ECn7BA,IAAMY,GAAYC,EAACC,GACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASE,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACtB,IACEC,GACC;AAAA,uBACeA,CAAC,YAAYD,EAAQ,iBAAmBC,CAAC,CAAC;AAAA,iBAChDA,CAAC,cAAcD,EAAQ,MAAQC,CAAC,CAAC,WAAWD,EAAQ,MAAQC,CAAC,CAAC;AAAA,2BACpDA,CAAC,cAAcD,EAAQ,SAAWC,CAAC,CAAC,WAAWD,EAAQ,SAAWC,CAAC,CAAC;AAAA,gBAC/EA,CAAC,aAAaD,EAAQ,MAAQC,CAAC,CAAC;AAAA,gBAChCA,CAAC,cAAcD,EAAQ,MAAQC,CAAC,CAAC;AAAA,SAE7C,EACC,KAAK;AAAA,CAAI,CAAC;AAAA;AAAA;AAAA;AAAA,cAIDD,EAAQ,SAAS;AAAA;AAAA;AAAA,+BAGAA,EAAQ,mBAAmB,WAAWA,EAAQ,gBAAgB;AAAA,mCAC1DA,EAAQ,mBAAmB,WAC1DA,EAAQ,qBACV;AAAA,4BAC0BA,EAAQ,gBAAgB,WAAWA,EAAQ,aAAa;AAAA,2BACzDA,EAAQ,kBAAkB,aAAaA,EAAQ,cAAc;AAAA,sBAClEA,EAAQ,SAAS;AAAA;AAAA;AAAA,cAGzBA,EAAQ,YAAY;AAAA,YACtBA,EAAQ,YAAY;AAAA;AAAA;AAAA,cAGlBA,EAAQ,YAAY;AAAA,YACtBA,EAAQ,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMlBA,EAAQ,YAAY;AAAA,YACtBA,EAAQ,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOpBA,EAAQ,SAAS;AAAA;AAAA,EAxDX,aA4DXE,GAAQJ,GCrDR,IAAMK,GAA6B,CACxC,OAAAC,GACA,GAAAC,EACA,SAAUC,GACV,OAAQC,EACV", - "names": ["commitType", "DEFAULT_GITGRAPH_CONFIG", "defaultConfig_default", "getConfig", "__name", "cleanAndMerge", "state", "ImperativeState", "config", "mainBranchName", "mainBranchOrder", "getID", "random", "uniqBy", "list", "fn", "recordMap", "out", "item", "key", "setDirection", "dir", "setOptions", "rawOptString", "log", "getOptions", "commit", "commitDB", "msg", "id", "type", "tags", "common_default", "tag", "newCommit", "commitType", "branch", "branchDB", "name", "order", "checkout", "merge", "mergeDB", "otherBranch", "customId", "overrideType", "customTags", "currentBranchCheck", "otherBranchCheck", "currentCommit", "otherCommit", "error", "verifiedBranch", "cherryPick", "cherryPickDB", "sourceId", "targetId", "parentCommitId", "sourceCommit", "sourceCommitBranch", "currentCommitId", "upsert", "arr", "newVal", "index", "prettyPrintCommitHistory", "commitArr", "line", "c", "label", "prettyPrint", "node", "getCommitsArray", "clear", "getBranchesAsObjArray", "branchConfig", "i", "a", "b", "getBranches", "getCommits", "o", "getCurrentBranch", "getDirection", "getHead", "db", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "populate", "__name", "ast", "db", "populateCommonDb", "statement", "parseStatement", "parser", "stmt", "parseCommit", "parseBranch", "parseMerge", "parseCheckout", "parseCherryPicking", "log", "commit", "commitType", "branch", "merge", "checkout", "cherryPicking", "input", "parse", "LAYOUT_OFFSET", "COMMIT_STEP", "PX", "PY", "THEME_COLOR_LIMIT", "branchPos", "commitPos", "defaultPos", "allCommitsDict", "lanes", "maxPos", "dir", "clear", "__name", "drawText", "txt", "svgLabel", "row", "tspan", "findClosestParent", "parents", "closestParent", "comparisonFunc", "targetPosition", "a", "b", "parent", "parentPosition", "findClosestParentBT", "maxPosition", "setParallelBTPos", "sortedKeys", "commits", "curPos", "roots", "key", "commit", "calculateCommitPosition", "setCommitPosition", "setRootPosition", "x", "y", "findClosestParentPos", "p", "closestParentPos", "branch", "drawCommitBullet", "gBullets", "commitPosition", "typeClass", "branchIndex", "commitSymbolType", "commitType", "circle", "circle2", "drawCommitLabel", "gLabels", "pos", "gitGraphConfig", "wrapper", "labelBkg", "text", "bbox", "r_x", "r_y", "drawCommitTags", "yOffset", "maxTagBboxWidth", "maxTagBboxHeight", "tagElements", "tagValue", "rect", "hole", "tag", "tagBbox", "h2", "ly", "yOrigin", "getCommitClassType", "calculatePosition", "defaultCommitPosition", "getCommitPosition", "isParallelCommits", "posWithOffset", "drawCommits", "svg", "modifyGraph", "keys", "sortKeys", "seqA", "seqB", "shouldRerouteArrow", "commitA", "commitB", "p1", "p2", "allCommits", "branchToGetCurve", "isOnBranchToGetCurve", "isBetweenCommits", "commitX", "findLane", "y1", "y2", "depth", "candidate", "lane", "diff", "drawArrow", "arrowNeedsRerouting", "arc", "arc2", "radius", "offset", "colorClassNum", "lineDef", "lineY", "lineX", "drawArrows", "gArrows", "drawBranches", "branches", "g", "index", "adjustIndexForTheme", "line", "name", "labelElement", "bkg", "label", "setBranchPosition", "rotateCommitLabel", "draw", "id", "ver", "diagObj", "log", "db", "diagram", "select_default", "branchLabel", "utils_default", "setupGraphViewbox", "gitGraphRenderer_default", "getStyles", "__name", "options", "i", "styles_default", "diagram", "parser", "db", "gitGraphRenderer_default", "styles_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-S2ZK5IYY.mjs b/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-S2ZK5IYY.mjs new file mode 100644 index 0000000..80a76df --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-S2ZK5IYY.mjs @@ -0,0 +1,106 @@ +import{a as fe}from"./chunk-T5OCTHI4.mjs";import{a as pe}from"./chunk-JQRUD6KW.mjs";import{a as le}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{h as de,o as he,p as ge}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{G as E,S as te,T as re,U as ne,V as oe,W as ae,X as se,Y as ie,_ as S,ca as ce,j as ee,t as q}from"./chunk-67TQ5CYL.mjs";import{b as B,h as me}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as h}from"./chunk-AQ6EADP3.mjs";var $={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4};var De=ee.gitGraph,v=h(()=>he({...De,...q().gitGraph}),"getConfig"),m=new fe(()=>{let e=v(),t=e.mainBranchName,r=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:r}]]),branches:new Map([[t,null]]),currBranch:t,direction:"LR",seq:0,options:{}}});function Z(){return de({length:7})}h(Z,"getID");function Le(e,t){let r=Object.create(null);return e.reduce((a,s)=>{let c=t(s);return r[c]||(r[c]=!0,a.push(s)),a},[])}h(Le,"uniqBy");var Ge=h(function(e){m.records.direction=e},"setDirection"),Pe=h(function(e){B.debug("options str",e),e=e?.trim(),e=e||"{}";try{m.records.options=JSON.parse(e)}catch(t){B.error("error while parsing gitGraph options",t.message)}},"setOptions"),Oe=h(function(){return m.records.options},"getOptions"),Re=h(function(e){let t=e.msg,r=e.id,a=e.type,s=e.tags;B.info("commit",t,r,a,s),B.debug("Entering commit:",t,r,a,s);let c=v();r=E.sanitizeText(r,c),t=E.sanitizeText(t,c),s=s?.map(n=>E.sanitizeText(n,c));let o={id:r||m.records.seq+"-"+Z(),message:t,seq:m.records.seq++,type:a??$.NORMAL,tags:s??[],parents:m.records.head==null?[]:[m.records.head.id],branch:m.records.currBranch};m.records.head=o,B.info("main branch",c.mainBranchName),m.records.commits.has(o.id)&&B.warn(`Commit ID ${o.id} already exists`),m.records.commits.set(o.id,o),m.records.branches.set(m.records.currBranch,o.id),B.debug("in pushCommit "+o.id)},"commit"),ve=h(function(e){let t=e.name,r=e.order;if(t=E.sanitizeText(t,v()),m.records.branches.has(t))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);m.records.branches.set(t,m.records.head!=null?m.records.head.id:null),m.records.branchConfig.set(t,{name:t,order:r}),$e(t),B.debug("in createBranch")},"branch"),Ae=h(e=>{let t=e.branch,r=e.id,a=e.type,s=e.tags,c=v();t=E.sanitizeText(t,c),r&&(r=E.sanitizeText(r,c));let o=m.records.branches.get(m.records.currBranch),n=m.records.branches.get(t),d=o?m.records.commits.get(o):void 0,l=n?m.records.commits.get(n):void 0;if(d&&l&&d.branch===t)throw new Error(`Cannot merge branch '${t}' into itself.`);if(m.records.currBranch===t){let i=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw i.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},i}if(d===void 0||!d){let i=new Error(`Incorrect usage of "merge". Current branch (${m.records.currBranch})has no commits`);throw i.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["commit"]},i}if(!m.records.branches.has(t)){let i=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw i.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},i}if(l===void 0||!l){let i=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw i.hash={text:`merge ${t}`,token:`merge ${t}`,expected:['"commit"']},i}if(d===l){let i=new Error('Incorrect usage of "merge". Both branches have same head');throw i.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},i}if(r&&m.records.commits.has(r)){let i=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id");throw i.hash={text:`merge ${t} ${r} ${a} ${s?.join(" ")}`,token:`merge ${t} ${r} ${a} ${s?.join(" ")}`,expected:[`merge ${t} ${r}_UNIQUE ${a} ${s?.join(" ")}`]},i}let p=n||"",g={id:r||`${m.records.seq}-${Z()}`,message:`merged branch ${t} into ${m.records.currBranch}`,seq:m.records.seq++,parents:m.records.head==null?[]:[m.records.head.id,p],branch:m.records.currBranch,type:$.MERGE,customType:a,customId:!!r,tags:s??[]};m.records.head=g,m.records.commits.set(g.id,g),m.records.branches.set(m.records.currBranch,g.id),B.debug(m.records.branches),B.debug("in mergeBranch")},"merge"),Ie=h(function(e){let t=e.id,r=e.targetId,a=e.tags,s=e.parent;B.debug("Entering cherryPick:",t,r,a);let c=v();if(t=E.sanitizeText(t,c),r=E.sanitizeText(r,c),a=a?.map(d=>E.sanitizeText(d,c)),s=E.sanitizeText(s,c),!t||!m.records.commits.has(t)){let d=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw d.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},d}let o=m.records.commits.get(t);if(o===void 0||!o)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(s&&!(Array.isArray(o.parents)&&o.parents.includes(s)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let n=o.branch;if(o.type===$.MERGE&&!s)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!m.records.commits.has(r)){if(n===m.records.currBranch){let g=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw g.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},g}let d=m.records.branches.get(m.records.currBranch);if(d===void 0||!d){let g=new Error(`Incorrect usage of "cherry-pick". Current branch (${m.records.currBranch})has no commits`);throw g.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},g}let l=m.records.commits.get(d);if(l===void 0||!l){let g=new Error(`Incorrect usage of "cherry-pick". Current branch (${m.records.currBranch})has no commits`);throw g.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},g}let p={id:m.records.seq+"-"+Z(),message:`cherry-picked ${o?.message} into ${m.records.currBranch}`,seq:m.records.seq++,parents:m.records.head==null?[]:[m.records.head.id,o.id],branch:m.records.currBranch,type:$.CHERRY_PICK,tags:a?a.filter(Boolean):[`cherry-pick:${o.id}${o.type===$.MERGE?`|parent:${s}`:""}`]};m.records.head=p,m.records.commits.set(p.id,p),m.records.branches.set(m.records.currBranch,p.id),B.debug(m.records.branches),B.debug("in cherryPick")}},"cherryPick"),$e=h(function(e){if(e=E.sanitizeText(e,v()),m.records.branches.has(e)){m.records.currBranch=e;let t=m.records.branches.get(m.records.currBranch);t===void 0||!t?m.records.head=null:m.records.head=m.records.commits.get(t)??null}else{let t=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},"checkout");function ye(e,t,r){let a=e.indexOf(t);a===-1?e.push(r):e.splice(a,1,r)}h(ye,"upsert");function ue(e){let t=e.reduce((s,c)=>s.seq>c.seq?s:c,e[0]),r="";e.forEach(function(s){s===t?r+=" *":r+=" |"});let a=[r,t.id,t.seq];for(let s in m.records.branches)m.records.branches.get(s)===t.id&&a.push(s);if(B.debug(a.join(" ")),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let s=m.records.commits.get(t.parents[0]);ye(e,t,s),t.parents[1]&&e.push(m.records.commits.get(t.parents[1]))}else{if(t.parents.length==0)return;if(t.parents[0]){let s=m.records.commits.get(t.parents[0]);ye(e,t,s)}}e=Le(e,s=>s.id),ue(e)}h(ue,"prettyPrintCommitHistory");var He=h(function(){B.debug(m.records.commits);let e=xe()[0];ue([e])},"prettyPrint"),Se=h(function(){m.reset(),te()},"clear"),_e=h(function(){return[...m.records.branchConfig.values()].map((t,r)=>t.order!==null&&t.order!==void 0?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),qe=h(function(){return m.records.branches},"getBranches"),We=h(function(){return m.records.commits},"getCommits"),xe=h(function(){let e=[...m.records.commits.values()];return e.forEach(function(t){B.debug(t.id)}),e.sort((t,r)=>t.seq-r.seq),e},"getCommitsArray"),Ne=h(function(){return m.records.currBranch},"getCurrentBranch"),je=h(function(){return m.records.direction},"getDirection"),Fe=h(function(){return m.records.head},"getHead"),F={commitType:$,getConfig:v,setDirection:Ge,setOptions:Pe,getOptions:Oe,commit:Re,branch:ve,merge:Ae,cherryPick:Ie,checkout:$e,prettyPrint:He,clear:Se,getBranchesAsObjArray:_e,getBranches:qe,getCommits:We,getCommitsArray:xe,getCurrentBranch:Ne,getDirection:je,getHead:Fe,setAccTitle:re,getAccTitle:ne,getAccDescription:ae,setAccDescription:oe,setDiagramTitle:se,getDiagramTitle:ie};var ze=h((e,t)=>{pe(e,t),e.dir&&t.setDirection(e.dir);for(let r of e.statements)Ye(r,t)},"populate"),Ye=h((e,t)=>{let a={Commit:h(s=>t.commit(Ve(s)),"Commit"),Branch:h(s=>t.branch(Ke(s)),"Branch"),Merge:h(s=>t.merge(Ue(s)),"Merge"),Checkout:h(s=>t.checkout(Ze(s)),"Checkout"),CherryPicking:h(s=>t.cherryPick(Xe(s)),"CherryPicking")}[e.$type];a?a(e):B.error(`Unknown statement type: ${e.$type}`)},"parseStatement"),Ve=h(e=>({id:e.id,msg:e.message??"",type:e.type!==void 0?$[e.type]:$.NORMAL,tags:e.tags??void 0}),"parseCommit"),Ke=h(e=>({name:e.name,order:e.order??0}),"parseBranch"),Ue=h(e=>({branch:e.branch,id:e.id??"",type:e.type!==void 0?$[e.type]:void 0,tags:e.tags??void 0}),"parseMerge"),Ze=h(e=>e.branch,"parseCheckout"),Xe=h(e=>({id:e.id,targetId:"",tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),"parseCherryPicking"),be={parse:h(async e=>{let t=await le("gitGraph",e);B.debug(t),ze(t,F)},"parse")};var O=10,R=40,D=4,G=2,A=8,V=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),X=12,J=new Set(["redux-color","redux-dark-color"]),Je=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),I=h((e,t,r=!1)=>r&&e>0?(e-1)%(t-1)+1:e%t,"calcColorIndex"),w=new Map,T=new Map,z=30,W=new Map,Y=[],P=0,y="LR",Qe=h(()=>{w.clear(),T.clear(),W.clear(),P=0,Y=[],y="LR"},"clear"),Ce=h(e=>{let t=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof e=="string"?e.split(/\\n|\n|/gi):e).forEach(a=>{let s=document.createElementNS("http://www.w3.org/2000/svg","tspan");s.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),s.setAttribute("dy","1em"),s.setAttribute("x","0"),s.setAttribute("class","row"),s.textContent=a.trim(),t.appendChild(s)}),t},"drawText"),ke=h(e=>{let t,r,a;return y==="BT"?(r=h((s,c)=>s<=c,"comparisonFunc"),a=1/0):(r=h((s,c)=>s>=c,"comparisonFunc"),a=0),e.forEach(s=>{let c=y==="TB"||y=="BT"?T.get(s)?.y:T.get(s)?.x;c!==void 0&&r(c,a)&&(t=s,a=c)}),t},"findClosestParent"),et=h(e=>{let t="",r=1/0;return e.forEach(a=>{let s=T.get(a).y;s<=r&&(t=a,r=s)}),t||void 0},"findClosestParentBT"),tt=h((e,t,r)=>{let a=r,s=r,c=[];e.forEach(o=>{let n=t.get(o);if(!n)throw new Error(`Commit not found for key ${o}`);n.parents.length?(a=nt(n),s=Math.max(a,s)):c.push(n),ot(n,a)}),a=s,c.forEach(o=>{at(o,a,r)}),e.forEach(o=>{let n=t.get(o);if(n?.parents.length){let d=et(n.parents);a=T.get(d).y-R,a<=s&&(s=a);let l=w.get(n.branch).pos,p=a-O;T.set(n.id,{x:l,y:p})}})},"setParallelBTPos"),rt=h(e=>{let t=ke(e.parents.filter(a=>a!==null));if(!t)throw new Error(`Closest parent not found for commit ${e.id}`);let r=T.get(t)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${e.id}`);return r},"findClosestParentPos"),nt=h(e=>rt(e)+R,"calculateCommitPosition"),ot=h((e,t)=>{let r=w.get(e.branch);if(!r)throw new Error(`Branch not found for commit ${e.id}`);let a=r.pos,s=t+O;return T.set(e.id,{x:a,y:s}),{x:a,y:s}},"setCommitPosition"),at=h((e,t,r)=>{let a=w.get(e.branch);if(!a)throw new Error(`Branch not found for commit ${e.id}`);let s=t+r,c=a.pos;T.set(e.id,{x:c,y:s})},"setRootPosition"),st=h((e,t,r,a,s,c)=>{let{theme:o}=S(),n=V.has(o??""),d=J.has(o??""),l=Je.has(o??"");if(c===$.HIGHLIGHT)e.append("rect").attr("x",r.x-10+(n?3:0)).attr("y",r.y-10+(n?3:0)).attr("width",n?14:20).attr("height",n?14:20).attr("class",`commit ${t.id} commit-highlight${I(s,A,d)} ${a}-outer`),e.append("rect").attr("x",r.x-6+(n?2:0)).attr("y",r.y-6+(n?2:0)).attr("width",n?8:12).attr("height",n?8:12).attr("class",`commit ${t.id} commit${I(s,A,d)} ${a}-inner`);else if(c===$.CHERRY_PICK)e.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",n?7:10).attr("class",`commit ${t.id} ${a}`),e.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",n?2.5:2.75).attr("fill",l?"#000000":"#fff").attr("class",`commit ${t.id} ${a}`),e.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",n?2.5:2.75).attr("fill",l?"#000000":"#fff").attr("class",`commit ${t.id} ${a}`),e.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",l?"#000000":"#fff").attr("class",`commit ${t.id} ${a}`),e.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",l?"#000000":"#fff").attr("class",`commit ${t.id} ${a}`);else{let p=e.append("circle");if(p.attr("cx",r.x),p.attr("cy",r.y),p.attr("r",n?7:10),p.attr("class",`commit ${t.id} commit${I(s,A,d)}`),c===$.MERGE){let g=e.append("circle");g.attr("cx",r.x),g.attr("cy",r.y),g.attr("r",n?5:6),g.attr("class",`commit ${a} ${t.id} commit${I(s,A,d)}`)}if(c===$.REVERSE){let g=e.append("path"),i=n?4:5;g.attr("d",`M ${r.x-i},${r.y-i}L${r.x+i},${r.y+i}M${r.x-i},${r.y+i}L${r.x+i},${r.y-i}`).attr("class",`commit ${a} ${t.id} commit${I(s,A,d)}`)}}},"drawCommitBullet"),it=h((e,t,r,a,s)=>{if(t.type!==$.CHERRY_PICK&&(t.customId&&t.type===$.MERGE||t.type!==$.MERGE)&&s.showCommitLabel){let c=e.append("g"),o=c.insert("rect").attr("class","commit-label-bkg"),n=c.append("text").attr("x",a).attr("y",r.y+25).attr("class","commit-label").text(t.id),d=n.node()?.getBBox();if(d&&(o.attr("x",r.posWithOffset-d.width/2-G).attr("y",r.y+13.5).attr("width",d.width+2*G).attr("height",d.height+2*G),y==="TB"||y==="BT"?(o.attr("x",r.x-(d.width+4*D+5)).attr("y",r.y-12),n.attr("x",r.x-(d.width+4*D)).attr("y",r.y+d.height-12)):n.attr("x",r.posWithOffset-d.width/2),s.rotateCommitLabel))if(y==="TB"||y==="BT")n.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),o.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let l=-7.5-(d.width+10)/25*9.5,p=10+d.width/25*8.5;c.attr("transform","translate("+l+", "+p+") rotate(-45, "+a+", "+r.y+")")}}},"drawCommitLabel"),ct=h((e,t,r,a)=>{if(t.tags.length>0){let s=0,c=0,o=0,n=[];for(let d of t.tags.reverse()){let l=e.insert("polygon"),p=e.append("circle"),g=e.append("text").attr("y",r.y-16-s).attr("class","tag-label").text(d),i=g.node()?.getBBox();if(!i)throw new Error("Tag bbox not found");c=Math.max(c,i.width),o=Math.max(o,i.height),g.attr("x",r.posWithOffset-i.width/2),n.push({tag:g,hole:p,rect:l,yOffset:s}),s+=20}for(let{tag:d,hole:l,rect:p,yOffset:g}of n){let i=o/2,u=r.y-19.2-g;if(p.attr("class","tag-label-bkg").attr("points",` + ${a-c/2-D/2},${u+G} + ${a-c/2-D/2},${u-G} + ${r.posWithOffset-c/2-D},${u-i-G} + ${r.posWithOffset+c/2+D},${u-i-G} + ${r.posWithOffset+c/2+D},${u+i+G} + ${r.posWithOffset-c/2-D},${u+i+G}`),l.attr("cy",u).attr("cx",a-c/2+D/2).attr("r",1.5).attr("class","tag-hole"),y==="TB"||y==="BT"){let f=a+g;p.attr("class","tag-label-bkg").attr("points",` + ${r.x},${f+2} + ${r.x},${f-2} + ${r.x+O},${f-i-2} + ${r.x+O+c+4},${f-i-2} + ${r.x+O+c+4},${f+i+2} + ${r.x+O},${f+i+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+a+")"),l.attr("cx",r.x+D/2).attr("cy",f).attr("transform","translate(12,12) rotate(45, "+r.x+","+a+")"),d.attr("x",r.x+5).attr("y",f+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+a+")")}}}},"drawCommitTags"),mt=h(e=>{switch(e.customType??e.type){case $.NORMAL:return"commit-normal";case $.REVERSE:return"commit-reverse";case $.HIGHLIGHT:return"commit-highlight";case $.MERGE:return"commit-merge";case $.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),dt=h((e,t,r,a)=>{let s={x:0,y:0};if(e.parents.length>0){let c=ke(e.parents);if(c){let o=a.get(c)??s;return t==="TB"?o.y+R:t==="BT"?(a.get(e.id)??s).y-R:o.x+R}}else return t==="TB"?z:t==="BT"?(a.get(e.id)??s).y-R:0;return 0},"calculatePosition"),ht=h((e,t,r)=>{let a=y==="BT"&&r?t:t+O,s=w.get(e.branch)?.pos,c=y==="TB"||y==="BT"?w.get(e.branch)?.pos:a;if(c===void 0||s===void 0)throw new Error(`Position were undefined for commit ${e.id}`);let o=V.has(S().theme??""),n=y==="TB"||y==="BT"?a:s+(o?X/2+1:-2);return{x:c,y:n,posWithOffset:a}},"getCommitPosition"),Be=h((e,t,r,a)=>{let s=e.append("g").attr("class","commit-bullets"),c=e.append("g").attr("class","commit-labels"),o=y==="TB"||y==="BT"?z:0,n=[...t.keys()],d=a.parallelCommits??!1,l=h((g,i)=>{let u=t.get(g)?.seq,f=t.get(i)?.seq;return u!==void 0&&f!==void 0?u-f:0},"sortKeys"),p=n.sort(l);y==="BT"&&(d&&tt(p,t,o),p=p.reverse()),p.forEach(g=>{let i=t.get(g);if(!i)throw new Error(`Commit not found for key ${g}`);d&&(o=dt(i,y,o,T));let u=ht(i,o,d);if(r){let f=mt(i),x=i.customType??i.type,b=w.get(i.branch)?.index??0;st(s,i,u,f,b,x),it(c,i,u,o,a),ct(c,i,u,o)}y==="TB"||y==="BT"?T.set(i.id,{x:u.x,y:u.posWithOffset}):T.set(i.id,{x:u.posWithOffset,y:u.y}),o=y==="BT"&&d?o+R:o+R+O,o>P&&(P=o)})},"drawCommits"),gt=h((e,t,r,a,s)=>{let o=(y==="TB"||y==="BT"?r.xl.branch===o,"isOnBranchToGetCurve"),d=h(l=>l.seq>e.seq&&l.seqd(l)&&n(l))},"shouldRerouteArrow"),N=h((e,t,r=0)=>{let a=e+Math.abs(e-t)/2;if(r>5)return a;if(Y.every(o=>Math.abs(o-a)>=10))return Y.push(a),a;let c=Math.abs(e-t);return N(e,t-c/5,r+1)},"findLane"),lt=h((e,t,r,a)=>{let{theme:s}=S(),c=J.has(s??""),o=T.get(t.id),n=T.get(r.id);if(o===void 0||n===void 0)throw new Error(`Commit positions not found for commits ${t.id} and ${r.id}`);let d=gt(t,r,o,n,a),l="",p="",g=0,i=0,u=w.get(r.branch)?.index;r.type===$.MERGE&&t.id!==r.parents[0]&&(u=w.get(t.branch)?.index);let f;if(d){l="A 10 10, 0, 0, 0,",p="A 10 10, 0, 0, 1,",g=10,i=10;let x=o.yn.x&&(l="A 20 20, 0, 0, 0,",p="A 20 20, 0, 0, 1,",g=20,i=20,r.type===$.MERGE&&t.id!==r.parents[0]?f=`M ${o.x} ${o.y} L ${o.x} ${n.y-g} ${p} ${o.x-i} ${n.y} L ${n.x} ${n.y}`:f=`M ${o.x} ${o.y} L ${n.x+g} ${o.y} ${l} ${n.x} ${o.y+i} L ${n.x} ${n.y}`),o.x===n.x&&(f=`M ${o.x} ${o.y} L ${n.x} ${n.y}`)):y==="BT"?(o.xn.x&&(l="A 20 20, 0, 0, 0,",p="A 20 20, 0, 0, 1,",g=20,i=20,r.type===$.MERGE&&t.id!==r.parents[0]?f=`M ${o.x} ${o.y} L ${o.x} ${n.y+g} ${l} ${o.x-i} ${n.y} L ${n.x} ${n.y}`:f=`M ${o.x} ${o.y} L ${n.x+g} ${o.y} ${p} ${n.x} ${o.y-i} L ${n.x} ${n.y}`),o.x===n.x&&(f=`M ${o.x} ${o.y} L ${n.x} ${n.y}`)):(o.yn.y&&(r.type===$.MERGE&&t.id!==r.parents[0]?f=`M ${o.x} ${o.y} L ${n.x-g} ${o.y} ${l} ${n.x} ${o.y-i} L ${n.x} ${n.y}`:f=`M ${o.x} ${o.y} L ${o.x} ${n.y+g} ${p} ${o.x+i} ${n.y} L ${n.x} ${n.y}`),o.y===n.y&&(f=`M ${o.x} ${o.y} L ${n.x} ${n.y}`));if(f===void 0)throw new Error("Line definition not found");e.append("path").attr("d",f).attr("class","arrow arrow"+I(u,A,c))},"drawArrow"),pt=h((e,t)=>{let r=e.append("g").attr("class","commit-arrows");[...t.keys()].forEach(a=>{let s=t.get(a);s.parents&&s.parents.length>0&&s.parents.forEach(c=>{lt(r,t.get(c),s,t)})})},"drawArrows"),ft=h((e,t,r,a)=>{let{look:s,theme:c,themeVariables:o}=S(),{dropShadow:n,THEME_COLOR_LIMIT:d}=o,l=V.has(c??""),p=J.has(c??""),g=e.append("g");t.forEach((i,u)=>{let f=I(u,l?d:A,p),x=w.get(i.name)?.pos;if(x===void 0)throw new Error(`Position not found for branch ${i.name}`);let b=y==="TB"||y==="BT"?x:l?x+X/2+1:x-2,C=g.append("line");C.attr("x1",0),C.attr("y1",b),C.attr("x2",P),C.attr("y2",b),C.attr("class","branch branch"+f),y==="TB"?(C.attr("y1",z),C.attr("x1",x),C.attr("y2",P),C.attr("x2",x)):y==="BT"&&(C.attr("y1",P),C.attr("x1",x),C.attr("y2",z),C.attr("x2",x)),Y.push(b);let K=i.name,_=Ce(K),M=g.insert("rect"),L=g.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+f);L.node().appendChild(_);let k=_.getBBox(),Q=l?0:4,j=l?16:0,H=l?X:0;s==="neo"&&M.attr("data-look","neo"),M.attr("class","branchLabelBkg label"+f).attr("style",s==="neo"?`filter:${l?`url(#${a}-drop-shadow)`:n}`:"").attr("rx",Q).attr("ry",Q).attr("x",-k.width-4-(r.rotateCommitLabel===!0?30:0)).attr("y",-k.height/2+10).attr("width",k.width+18+j).attr("height",k.height+4+H),L.attr("transform","translate("+(-k.width-14-(r.rotateCommitLabel===!0?30:0)+j/2)+", "+(b-k.height/2-2)+")"),y==="TB"?(M.attr("x",x-k.width/2-10).attr("y",0),L.attr("transform","translate("+(x-k.width/2-5)+", 0)"),l&&(M.attr("transform",`translate(${-j/2-3}, ${-H-10})`),L.attr("transform","translate("+(x-k.width/2-5)+", "+(-H*2+7)+")"))):y==="BT"?(M.attr("x",x-k.width/2-10).attr("y",P),L.attr("transform","translate("+(x-k.width/2-5)+", "+P+")"),l&&(M.attr("transform",`translate(${-j/2-3}, ${H+10})`),L.attr("transform","translate("+(x-k.width/2-5)+", "+(P+H*2+4)+")"))):M.attr("transform","translate(-19, "+(b-12-H/2)+")")})},"drawBranches"),yt=h(function(e,t,r,a,s){return w.set(e,{pos:t,index:r}),t+=50+(s?40:0)+(y==="TB"||y==="BT"?a.width/2:0),t},"setBranchPosition"),$t=h(function(e,t,r,a){Qe(),B.debug("in gitgraph renderer",e+` +`,"id:",t,r);let s=a.db;if(!s.getConfig){B.error("getConfig method is not available on db");return}let c=s.getConfig(),o=c.rotateCommitLabel??!1;W=s.getCommits();let n=s.getBranchesAsObjArray();y=s.getDirection();let d=me(`[id="${t}"]`),{look:l,theme:p,themeVariables:g}=S(),{useGradient:i,gradientStart:u,gradientStop:f,filterColor:x}=g;if(i){let C=d.append("defs").append("linearGradient").attr("id",t+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");C.append("stop").attr("offset","0%").attr("stop-color",u).attr("stop-opacity",1),C.append("stop").attr("offset","100%").attr("stop-color",f).attr("stop-opacity",1)}l==="neo"&&V.has(p??"")&&d.append("defs").append("filter").attr("id",t+"-drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",x);let b=0;n.forEach((C,K)=>{let _=Ce(C.name),M=d.append("g"),U=M.insert("g").attr("class","branchLabel"),L=U.insert("g").attr("class","label branch-label");L.node()?.appendChild(_);let k=_.getBBox();b=yt(C.name,b,K,k,o),L.remove(),U.remove(),M.remove()}),Be(d,W,!1,c),c.showBranches&&ft(d,n,c,t),pt(d,W),Be(d,W,!0,c),ge.insertTitle(d,"gitTitleText",c.titleTopMargin??0,s.getDiagramTitle()),ce(void 0,d,c.diagramPadding,c.useMaxWidth)},"draw"),we={draw:$t};var Te=8,Ee=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),ut=new Set(["redux-color","redux-dark-color"]),xt=new Set(["neo","neo-dark"]),bt=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),Bt=new Set(["redux","redux-dark","redux-color","redux-dark-color","neo","neo-dark"]),Ct=h(e=>{let{svgId:t}=e,r="";if(e.useGradient&&t)for(let a=0;a{let t=q(),{theme:r,themeVariables:a}=t,{borderColorArray:s}=a,c=Ee.has(r);if(xt.has(r)){let o="";for(let n=0;n`${Array.from({length:e.THEME_COLOR_LIMIT},(t,r)=>r).map(t=>{let r=t%Te;return` + .branch-label${t} { fill: ${e["gitBranchLabel"+r]}; } + .commit${t} { stroke: ${e["git"+r]}; fill: ${e["git"+r]}; } + .commit-highlight${t} { stroke: ${e["gitInv"+r]}; fill: ${e["gitInv"+r]}; } + .label${t} { fill: ${e["git"+r]}; } + .arrow${t} { stroke: ${e["git"+r]}; } + `}).join(` +`)}`,"normalTheme"),Tt=h(e=>{let t=q(),{theme:r}=t,a=Bt.has(r);return` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + + ${a?kt(e):wt(e)} + + .branch { + stroke-width: ${e.strokeWidth}; + stroke: ${e.commitLineColor??e.lineColor}; + stroke-dasharray: ${a?"4 2":"2"}; + } + .commit-label { font-size: ${e.commitLabelFontSize}; fill: ${a?e.nodeBorder:e.commitLabelColor}; ${a?`font-weight:${e.noteFontWeight};`:""}} + .commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${a?"transparent":e.commitLabelBackground}; opacity: ${a?"":.5}; } + .tag-label { font-size: ${e.tagLabelFontSize}; fill: ${e.tagLabelColor};} + .tag-label-bkg { fill: ${a?e.mainBkg:e.tagLabelBackground}; stroke: ${a?e.nodeBorder:e.tagLabelBorder}; ${a?`filter:${e.dropShadow}`:""} } + .tag-hole { fill: ${e.textColor}; } + + .commit-merge { + stroke: ${a?e.mainBkg:e.primaryColor}; + fill: ${a?e.mainBkg:e.primaryColor}; + } + .commit-reverse { + stroke: ${a?e.mainBkg:e.primaryColor}; + fill: ${a?e.mainBkg:e.primaryColor}; + stroke-width: ${a?e.strokeWidth:3}; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${a?e.mainBkg:e.primaryColor}; + fill: ${a?e.mainBkg:e.primaryColor}; + } + + .arrow { + /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */ + stroke-width: ${Ee.has(r)?e.strokeWidth:8}; + stroke-linecap: round; + fill: none + } + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`},"getStyles"),Me=Tt;var or={parser:be,db:F,renderer:we,styles:Me};export{or as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-S2ZK5IYY.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-S2ZK5IYY.mjs.map new file mode 100644 index 0000000..7090054 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-S2ZK5IYY.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/git/gitGraphTypes.ts", "../../../src/diagrams/git/gitGraphAst.ts", "../../../src/diagrams/git/gitGraphParser.ts", "../../../src/diagrams/git/gitGraphRenderer.ts", "../../../src/diagrams/git/styles.js", "../../../src/diagrams/git/gitGraphDiagram.ts"], + "sourcesContent": ["import type { GitGraphDiagramConfig } from '../../config.type.js';\nimport type { DiagramDBBase } from '../../diagram-api/types.js';\n\nexport const commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4,\n} as const;\n\nexport interface CommitDB {\n msg: string;\n id: string;\n type: number;\n tags?: string[];\n}\n\nexport interface BranchDB {\n name: string;\n order: number;\n}\n\nexport interface MergeDB {\n branch: string;\n id: string;\n type?: number;\n tags?: string[];\n}\n\nexport interface CherryPickDB {\n id: string;\n targetId: string;\n parent: string;\n tags?: string[];\n}\n\nexport interface Commit {\n id: string;\n message: string;\n seq: number;\n type: number;\n tags: string[];\n parents: string[];\n branch: string;\n customType?: number;\n customId?: boolean;\n}\n\nexport interface GitGraph {\n statements: Statement[];\n}\n\nexport type Statement = CommitAst | BranchAst | MergeAst | CheckoutAst | CherryPickingAst;\n\nexport interface CommitAst {\n $type: 'Commit';\n id: string;\n message?: string;\n tags?: string[];\n type?: 'NORMAL' | 'REVERSE' | 'HIGHLIGHT';\n}\n\nexport interface BranchAst {\n $type: 'Branch';\n name: string;\n order?: number;\n}\n\nexport interface MergeAst {\n $type: 'Merge';\n branch: string;\n id?: string;\n tags?: string[];\n type?: 'NORMAL' | 'REVERSE' | 'HIGHLIGHT';\n}\n\nexport interface CheckoutAst {\n $type: 'Checkout';\n branch: string;\n}\n\nexport interface CherryPickingAst {\n $type: 'CherryPicking';\n id: string;\n parent: string;\n tags?: string[];\n}\n\nexport interface GitGraphDB extends DiagramDBBase {\n commitType: typeof commitType;\n setDirection: (dir: DiagramOrientation) => void;\n setOptions: (rawOptString: string) => void;\n getOptions: () => any;\n commit: (commitDB: CommitDB) => void;\n branch: (branchDB: BranchDB) => void;\n merge: (mergeDB: MergeDB) => void;\n cherryPick: (cherryPickDB: CherryPickDB) => void;\n checkout: (branch: string) => void;\n prettyPrint: () => void;\n clear: () => void;\n getBranchesAsObjArray: () => { name: string }[];\n getBranches: () => Map;\n getCommits: () => Map;\n getCommitsArray: () => Commit[];\n getCurrentBranch: () => string;\n getDirection: () => DiagramOrientation;\n getHead: () => Commit | null;\n}\n\nexport interface GitGraphDBParseProvider extends Partial {\n commitType: typeof commitType;\n setDirection: (dir: DiagramOrientation) => void;\n commit: (commitDB: CommitDB) => void;\n branch: (branchDB: BranchDB) => void;\n merge: (mergeDB: MergeDB) => void;\n cherryPick: (cherryPickDB: CherryPickDB) => void;\n checkout: (branch: string) => void;\n}\n\nexport interface GitGraphDBRenderProvider extends Partial {\n prettyPrint: () => void;\n clear: () => void;\n getBranchesAsObjArray: () => { name: string }[];\n getBranches: () => Map;\n getCommits: () => Map;\n getCommitsArray: () => Commit[];\n getCurrentBranch: () => string;\n getDirection: () => DiagramOrientation;\n getHead: () => Commit | null;\n getDiagramTitle: () => string;\n}\n\nexport type DiagramOrientation = 'LR' | 'TB' | 'BT';\n", "import { log } from '../../logger.js';\nimport { cleanAndMerge, random } from '../../utils.js';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport common from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport type {\n DiagramOrientation,\n Commit,\n GitGraphDB,\n CommitDB,\n MergeDB,\n BranchDB,\n CherryPickDB,\n} from './gitGraphTypes.js';\nimport { commitType } from './gitGraphTypes.js';\nimport { ImperativeState } from '../../utils/imperativeState.js';\n\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\n\nimport type { GitGraphDiagramConfig } from '../../config.type.js';\ninterface GitGraphState {\n commits: Map;\n head: Commit | null;\n branchConfig: Map;\n branches: Map;\n currBranch: string;\n direction: DiagramOrientation;\n seq: number;\n options: any;\n}\n\nconst DEFAULT_GITGRAPH_CONFIG: Required = DEFAULT_CONFIG.gitGraph;\nconst getConfig = (): Required => {\n const config = cleanAndMerge({\n ...DEFAULT_GITGRAPH_CONFIG,\n ...commonGetConfig().gitGraph,\n });\n return config;\n};\n\nconst state = new ImperativeState(() => {\n const config = getConfig();\n const mainBranchName = config.mainBranchName;\n const mainBranchOrder = config.mainBranchOrder;\n return {\n mainBranchName,\n commits: new Map(),\n head: null,\n branchConfig: new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]),\n branches: new Map([[mainBranchName, null]]),\n currBranch: mainBranchName,\n direction: 'LR',\n seq: 0,\n options: {},\n };\n});\n\nfunction getID() {\n return random({ length: 7 });\n}\n\n/**\n * @param list - list of items\n * @param fn - function to get the key\n */\nfunction uniqBy(list: any[], fn: (item: any) => any) {\n const recordMap = Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n\nexport const setDirection = function (dir: DiagramOrientation) {\n state.records.direction = dir;\n};\n\nexport const setOptions = function (rawOptString: string) {\n log.debug('options str', rawOptString);\n rawOptString = rawOptString?.trim();\n rawOptString = rawOptString || '{}';\n try {\n state.records.options = JSON.parse(rawOptString);\n } catch (e: any) {\n log.error('error while parsing gitGraph options', e.message);\n }\n};\n\nexport const getOptions = function () {\n return state.records.options;\n};\n\nexport const commit = function (commitDB: CommitDB) {\n let msg = commitDB.msg;\n let id = commitDB.id;\n const type = commitDB.type;\n let tags = commitDB.tags;\n\n log.info('commit', msg, id, type, tags);\n log.debug('Entering commit:', msg, id, type, tags);\n const config = getConfig();\n id = common.sanitizeText(id, config);\n msg = common.sanitizeText(msg, config);\n tags = tags?.map((tag) => common.sanitizeText(tag, config));\n const newCommit: Commit = {\n id: id ? id : state.records.seq + '-' + getID(),\n message: msg,\n seq: state.records.seq++,\n type: type ?? commitType.NORMAL,\n tags: tags ?? [],\n parents: state.records.head == null ? [] : [state.records.head.id],\n branch: state.records.currBranch,\n };\n state.records.head = newCommit;\n log.info('main branch', config.mainBranchName);\n if (state.records.commits.has(newCommit.id)) {\n log.warn(`Commit ID ${newCommit.id} already exists`);\n }\n state.records.commits.set(newCommit.id, newCommit);\n state.records.branches.set(state.records.currBranch, newCommit.id);\n log.debug('in pushCommit ' + newCommit.id);\n};\n\nexport const branch = function (branchDB: BranchDB) {\n let name = branchDB.name;\n const order = branchDB.order;\n name = common.sanitizeText(name, getConfig());\n if (state.records.branches.has(name)) {\n throw new Error(\n `Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ${name}\")`\n );\n }\n\n state.records.branches.set(name, state.records.head != null ? state.records.head.id : null);\n state.records.branchConfig.set(name, { name, order });\n checkout(name);\n log.debug('in createBranch');\n};\n\nexport const merge = (mergeDB: MergeDB): void => {\n let otherBranch = mergeDB.branch;\n let customId = mergeDB.id;\n const overrideType = mergeDB.type;\n const customTags = mergeDB.tags;\n const config = getConfig();\n otherBranch = common.sanitizeText(otherBranch, config);\n if (customId) {\n customId = common.sanitizeText(customId, config);\n }\n const currentBranchCheck = state.records.branches.get(state.records.currBranch);\n const otherBranchCheck = state.records.branches.get(otherBranch);\n const currentCommit = currentBranchCheck\n ? state.records.commits.get(currentBranchCheck)\n : undefined;\n const otherCommit: Commit | undefined = otherBranchCheck\n ? state.records.commits.get(otherBranchCheck)\n : undefined;\n if (currentCommit && otherCommit && currentCommit.branch === otherBranch) {\n throw new Error(`Cannot merge branch '${otherBranch}' into itself.`);\n }\n if (state.records.currBranch === otherBranch) {\n const error: any = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['branch abc'],\n };\n throw error;\n }\n if (currentCommit === undefined || !currentCommit) {\n const error: any = new Error(\n `Incorrect usage of \"merge\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['commit'],\n };\n throw error;\n }\n if (!state.records.branches.has(otherBranch)) {\n const error: any = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + ') does not exist'\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [`branch ${otherBranch}`],\n };\n throw error;\n }\n if (otherCommit === undefined || !otherCommit) {\n const error: any = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + ') has no commits'\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['\"commit\"'],\n };\n throw error;\n }\n if (currentCommit === otherCommit) {\n const error: any = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['branch abc'],\n };\n throw error;\n }\n if (customId && state.records.commits.has(customId)) {\n const error: any = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' +\n customId +\n ' already exists, use different custom id'\n );\n error.hash = {\n text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(' ')}`,\n token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(' ')}`,\n expected: [\n `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(' ')}`,\n ],\n };\n\n throw error;\n }\n\n const verifiedBranch: string = otherBranchCheck ? otherBranchCheck : ''; //figure out a cleaner way to do this\n\n const commit = {\n id: customId || `${state.records.seq}-${getID()}`,\n message: `merged branch ${otherBranch} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, verifiedBranch],\n branch: state.records.currBranch,\n type: commitType.MERGE,\n customType: overrideType,\n customId: customId ? true : false,\n tags: customTags ?? [],\n } satisfies Commit;\n state.records.head = commit;\n state.records.commits.set(commit.id, commit);\n state.records.branches.set(state.records.currBranch, commit.id);\n log.debug(state.records.branches);\n log.debug('in mergeBranch');\n};\n\nexport const cherryPick = function (cherryPickDB: CherryPickDB) {\n let sourceId = cherryPickDB.id;\n let targetId = cherryPickDB.targetId;\n let tags = cherryPickDB.tags;\n let parentCommitId = cherryPickDB.parent;\n log.debug('Entering cherryPick:', sourceId, targetId, tags);\n const config = getConfig();\n sourceId = common.sanitizeText(sourceId, config);\n targetId = common.sanitizeText(targetId, config);\n\n tags = tags?.map((tag) => common.sanitizeText(tag, config));\n\n parentCommitId = common.sanitizeText(parentCommitId, config);\n\n if (!sourceId || !state.records.commits.has(sourceId)) {\n const error: any = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n\n const sourceCommit = state.records.commits.get(sourceId);\n if (sourceCommit === undefined || !sourceCommit) {\n throw new Error('Incorrect usage of \"cherryPick\". Source commit id should exist and provided');\n }\n if (\n parentCommitId &&\n !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))\n ) {\n const error = new Error(\n 'Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.'\n );\n throw error;\n }\n const sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType.MERGE && !parentCommitId) {\n const error = new Error(\n 'Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.'\n );\n throw error;\n }\n if (!targetId || !state.records.commits.has(targetId)) {\n // cherry-pick source commit to current branch\n\n if (sourceCommitBranch === state.records.currBranch) {\n const error: any = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n const currentCommitId = state.records.branches.get(state.records.currBranch);\n if (currentCommitId === undefined || !currentCommitId) {\n const error: any = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n\n const currentCommit = state.records.commits.get(currentCommitId);\n if (currentCommit === undefined || !currentCommit) {\n const error: any = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n const commit = {\n id: state.records.seq + '-' + getID(),\n message: `cherry-picked ${sourceCommit?.message} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, sourceCommit.id],\n branch: state.records.currBranch,\n type: commitType.CHERRY_PICK,\n tags: tags\n ? tags.filter(Boolean)\n : [\n `cherry-pick:${sourceCommit.id}${\n sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : ''\n }`,\n ],\n };\n\n state.records.head = commit;\n state.records.commits.set(commit.id, commit);\n state.records.branches.set(state.records.currBranch, commit.id);\n log.debug(state.records.branches);\n log.debug('in cherryPick');\n }\n};\nexport const checkout = function (branch: string) {\n branch = common.sanitizeText(branch, getConfig());\n if (!state.records.branches.has(branch)) {\n const error: any = new Error(\n `Trying to checkout branch which is not yet created. (Help try using \"branch ${branch}\")`\n );\n error.hash = {\n text: `checkout ${branch}`,\n token: `checkout ${branch}`,\n expected: [`branch ${branch}`],\n };\n throw error;\n } else {\n state.records.currBranch = branch;\n const id = state.records.branches.get(state.records.currBranch);\n if (id === undefined || !id) {\n state.records.head = null;\n } else {\n state.records.head = state.records.commits.get(id) ?? null;\n }\n }\n};\n\n/**\n * @param arr - array\n * @param key - key\n * @param newVal - new value\n */\nfunction upsert(arr: any[], key: any, newVal: any) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newVal);\n } else {\n arr.splice(index, 1, newVal);\n }\n}\n\nfunction prettyPrintCommitHistory(commitArr: Commit[]) {\n const commit = commitArr.reduce((out, commit) => {\n if (out.seq > commit.seq) {\n return out;\n }\n return commit;\n }, commitArr[0]);\n let line = '';\n commitArr.forEach(function (c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n const label = [line, commit.id, commit.seq];\n for (const branch in state.records.branches) {\n if (state.records.branches.get(branch) === commit.id) {\n label.push(branch);\n }\n }\n log.debug(label.join(' '));\n if (commit.parents && commit.parents.length == 2 && commit.parents[0] && commit.parents[1]) {\n const newCommit = state.records.commits.get(commit.parents[0]);\n upsert(commitArr, commit, newCommit);\n if (commit.parents[1]) {\n commitArr.push(state.records.commits.get(commit.parents[1])!);\n }\n } else if (commit.parents.length == 0) {\n return;\n } else {\n if (commit.parents[0]) {\n const newCommit = state.records.commits.get(commit.parents[0]);\n upsert(commitArr, commit, newCommit);\n }\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n\nexport const prettyPrint = function () {\n log.debug(state.records.commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\n\nexport const clear = function () {\n state.reset();\n commonClear();\n};\n\nexport const getBranchesAsObjArray = function () {\n const branchesArray = [...state.records.branchConfig.values()]\n .map((branchConfig, i) => {\n if (branchConfig.order !== null && branchConfig.order !== undefined) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`),\n };\n })\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\n .map(({ name }) => ({ name }));\n\n return branchesArray;\n};\n\nexport const getBranches = function () {\n return state.records.branches;\n};\nexport const getCommits = function () {\n return state.records.commits;\n};\nexport const getCommitsArray = function () {\n const commitArr = [...state.records.commits.values()];\n commitArr.forEach(function (o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n};\nexport const getCurrentBranch = function () {\n return state.records.currBranch;\n};\nexport const getDirection = function () {\n return state.records.direction;\n};\nexport const getHead = function () {\n return state.records.head;\n};\n\nexport const db: GitGraphDB = {\n commitType,\n getConfig,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle,\n};\n", "import type { GitGraph } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport { db } from './gitGraphAst.js';\nimport { commitType } from './gitGraphTypes.js';\nimport type {\n CheckoutAst,\n CherryPickingAst,\n MergeAst,\n CommitAst,\n BranchAst,\n GitGraphDBParseProvider,\n CommitDB,\n BranchDB,\n MergeDB,\n CherryPickDB,\n} from './gitGraphTypes.js';\n\nconst populate = (ast: GitGraph, db: GitGraphDBParseProvider) => {\n populateCommonDb(ast, db);\n // @ts-ignore: this wont exist if the direction is not specified\n if (ast.dir) {\n // @ts-ignore: this wont exist if the direction is not specified\n db.setDirection(ast.dir);\n }\n for (const statement of ast.statements) {\n parseStatement(statement, db);\n }\n};\n\nconst parseStatement = (statement: any, db: GitGraphDBParseProvider) => {\n const parsers: Record void> = {\n Commit: (stmt) => db.commit(parseCommit(stmt)),\n Branch: (stmt) => db.branch(parseBranch(stmt)),\n Merge: (stmt) => db.merge(parseMerge(stmt)),\n Checkout: (stmt) => db.checkout(parseCheckout(stmt)),\n CherryPicking: (stmt) => db.cherryPick(parseCherryPicking(stmt)),\n };\n\n const parser = parsers[statement.$type];\n if (parser) {\n parser(statement);\n } else {\n log.error(`Unknown statement type: ${statement.$type}`);\n }\n};\n\nconst parseCommit = (commit: CommitAst): CommitDB => {\n const commitDB: CommitDB = {\n id: commit.id,\n msg: commit.message ?? '',\n type: commit.type !== undefined ? commitType[commit.type] : commitType.NORMAL,\n tags: commit.tags ?? undefined,\n };\n return commitDB;\n};\n\nconst parseBranch = (branch: BranchAst): BranchDB => {\n const branchDB: BranchDB = {\n name: branch.name,\n order: branch.order ?? 0,\n };\n return branchDB;\n};\n\nconst parseMerge = (merge: MergeAst): MergeDB => {\n const mergeDB: MergeDB = {\n branch: merge.branch,\n id: merge.id ?? '',\n type: merge.type !== undefined ? commitType[merge.type] : undefined,\n tags: merge.tags ?? undefined,\n };\n return mergeDB;\n};\n\nconst parseCheckout = (checkout: CheckoutAst): string => {\n const branch = checkout.branch;\n return branch;\n};\n\nconst parseCherryPicking = (cherryPicking: CherryPickingAst): CherryPickDB => {\n const cherryPickDB: CherryPickDB = {\n id: cherryPicking.id,\n targetId: '',\n tags: cherryPicking.tags?.length === 0 ? undefined : cherryPicking.tags,\n parent: cherryPicking.parent,\n };\n return cherryPickDB;\n};\n\nexport const parser: ParserDefinition = {\n parse: async (input: string): Promise => {\n const ast: GitGraph = await parse('gitGraph', input);\n log.debug(ast);\n populate(ast, db);\n },\n};\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n\n const mockDB: GitGraphDBParseProvider = {\n commitType: commitType,\n setDirection: vi.fn(),\n commit: vi.fn(),\n branch: vi.fn(),\n merge: vi.fn(),\n cherryPick: vi.fn(),\n checkout: vi.fn(),\n };\n\n describe('GitGraph Parser', () => {\n it('should parse a commit statement', () => {\n const commit = {\n $type: 'Commit',\n id: '1',\n message: 'test',\n tags: ['tag1', 'tag2'],\n type: 'NORMAL',\n };\n parseStatement(commit, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: '1',\n msg: 'test',\n tags: ['tag1', 'tag2'],\n type: 0,\n });\n });\n it('should parse a branch statement', () => {\n const branch = {\n $type: 'Branch',\n name: 'newBranch',\n order: 1,\n };\n parseStatement(branch, mockDB);\n expect(mockDB.branch).toHaveBeenCalledWith({ name: 'newBranch', order: 1 });\n });\n it('should parse a checkout statement', () => {\n const checkout = {\n $type: 'Checkout',\n branch: 'newBranch',\n };\n parseStatement(checkout, mockDB);\n expect(mockDB.checkout).toHaveBeenCalledWith('newBranch');\n });\n it('should parse a merge statement', () => {\n const merge = {\n $type: 'Merge',\n branch: 'newBranch',\n id: '1',\n tags: ['tag1', 'tag2'],\n type: 'NORMAL',\n };\n parseStatement(merge, mockDB);\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: 'newBranch',\n id: '1',\n tags: ['tag1', 'tag2'],\n type: 0,\n });\n });\n it('should parse a cherry picking statement', () => {\n const cherryPick = {\n $type: 'CherryPicking',\n id: '1',\n tags: ['tag1', 'tag2'],\n parent: '2',\n };\n parseStatement(cherryPick, mockDB);\n expect(mockDB.cherryPick).toHaveBeenCalledWith({\n id: '1',\n targetId: '',\n parent: '2',\n tags: ['tag1', 'tag2'],\n });\n });\n\n it('should parse a langium generated gitGraph ast', () => {\n const dummy: GitGraph = {\n $type: 'GitGraph',\n statements: [],\n accDescr: '',\n accTitle: '',\n title: '',\n };\n const gitGraphAst: GitGraph = {\n $type: 'GitGraph',\n statements: [\n {\n $container: dummy,\n $type: 'Commit',\n id: '1',\n message: 'test',\n tags: ['tag1', 'tag2'],\n type: 'NORMAL',\n },\n {\n $container: dummy,\n $type: 'Branch',\n name: 'newBranch',\n order: 1,\n },\n {\n $container: dummy,\n $type: 'Merge',\n branch: 'newBranch',\n id: '1',\n tags: ['tag1', 'tag2'],\n type: 'NORMAL',\n },\n {\n $container: dummy,\n $type: 'Checkout',\n branch: 'newBranch',\n },\n {\n $container: dummy,\n $type: 'CherryPicking',\n id: '1',\n tags: ['tag1', 'tag2'],\n parent: '2',\n },\n ],\n accDescr: '',\n accTitle: '',\n title: '',\n };\n\n populate(gitGraphAst, mockDB);\n\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: '1',\n msg: 'test',\n tags: ['tag1', 'tag2'],\n type: 0,\n });\n expect(mockDB.branch).toHaveBeenCalledWith({ name: 'newBranch', order: 1 });\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: 'newBranch',\n id: '1',\n tags: ['tag1', 'tag2'],\n type: 0,\n });\n expect(mockDB.checkout).toHaveBeenCalledWith('newBranch');\n });\n });\n}\n", "import { select } from 'd3';\nimport { getConfig, setupGraphViewbox } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport utils from '../../utils.js';\nimport type { DrawDefinition } from '../../diagram-api/types.js';\nimport type d3 from 'd3';\nimport type { Commit, GitGraphDBRenderProvider, DiagramOrientation } from './gitGraphTypes.js';\nimport { commitType } from './gitGraphTypes.js';\nimport type { GitGraphDiagramConfig } from '../../config.type.js';\n\ninterface BranchPosition {\n pos: number;\n index: number;\n}\n\ninterface CommitPosition {\n x: number;\n y: number;\n}\n\ninterface CommitPositionOffset extends CommitPosition {\n posWithOffset: number;\n}\n\nconst LAYOUT_OFFSET = 10;\nconst COMMIT_STEP = 40;\nconst PX = 4;\nconst PY = 2;\n\nconst THEME_COLOR_LIMIT = 8;\n\n/**\n * Themes that use redux-style geometry \u2014 smaller commit bullets, sharper label edges.\n * Note: neo themes are intentionally excluded; they use standard geometry.\n */\nconst REDUX_GEOMETRY_THEMES = new Set(['redux', 'redux-dark', 'redux-color', 'redux-dark-color']);\n\n/** Vertical padding inside the LR branch label rect for redux themes (`drawBranches` `labelPaddingY`). */\nconst REDUX_BRANCH_LABEL_PADDING_Y = 12;\n\n/**\n * Themes that use per-branch color cycling with a non-default first color\n * (avoidDefaultColor logic in calcColorIndex).\n */\nconst COLOR_THEMES = new Set(['redux-color', 'redux-dark-color']);\n\n/** Themes rendered on a dark background. */\nconst DARK_THEMES = new Set(['dark', 'redux-dark', 'redux-dark-color', 'neo-dark']);\n\n/**\n * Map a raw branch index to a CSS color-class index.\n * When avoidMainColor is true (redux-color / redux-dark-color themes only),\n * non-main branches cycle through 1\u2026(limit-1) so color 0 is never reused.\n * For all other themes the plain modulo is used.\n */\nexport const calcColorIndex = (\n rawIndex: number,\n limit: number,\n avoidDefaultColor = false\n): number => {\n if (avoidDefaultColor && rawIndex > 0) {\n return ((rawIndex - 1) % (limit - 1)) + 1;\n }\n return rawIndex % limit;\n};\nconst branchPos = new Map();\nconst commitPos = new Map();\nconst defaultPos = 30;\n\nlet allCommitsDict = new Map();\nlet lanes: number[] = [];\nlet maxPos = 0;\nlet dir: DiagramOrientation = 'LR';\n\nconst clear = () => {\n branchPos.clear();\n commitPos.clear();\n allCommitsDict.clear();\n maxPos = 0;\n lanes = [];\n dir = 'LR';\n};\n\nconst drawText = (txt: string | string[]) => {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n const rows = typeof txt === 'string' ? txt.split(/\\\\n|\\n|/gi) : txt;\n\n rows.forEach((row) => {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n tspan.setAttribute('class', 'row');\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n });\n\n return svgLabel;\n};\n\nconst findClosestParent = (parents: string[]): string | undefined => {\n let closestParent: string | undefined;\n let comparisonFunc;\n let targetPosition: number;\n if (dir === 'BT') {\n comparisonFunc = (a: number, b: number) => a <= b;\n targetPosition = Infinity;\n } else {\n comparisonFunc = (a: number, b: number) => a >= b;\n targetPosition = 0;\n }\n\n parents.forEach((parent) => {\n const parentPosition =\n dir === 'TB' || dir == 'BT' ? commitPos.get(parent)?.y : commitPos.get(parent)?.x;\n\n if (parentPosition !== undefined && comparisonFunc(parentPosition, targetPosition)) {\n closestParent = parent;\n targetPosition = parentPosition;\n }\n });\n\n return closestParent;\n};\n\nconst findClosestParentBT = (parents: string[]) => {\n let closestParent = '';\n let maxPosition = Infinity;\n\n parents.forEach((parent) => {\n const parentPosition = commitPos.get(parent)!.y;\n if (parentPosition <= maxPosition) {\n closestParent = parent;\n maxPosition = parentPosition;\n }\n });\n return closestParent || undefined;\n};\n\nconst setParallelBTPos = (\n sortedKeys: string[],\n commits: Map,\n defaultPos: number\n) => {\n let curPos = defaultPos;\n let maxPosition = defaultPos;\n const roots: Commit[] = [];\n\n sortedKeys.forEach((key) => {\n const commit = commits.get(key);\n if (!commit) {\n throw new Error(`Commit not found for key ${key}`);\n }\n\n if (commit.parents.length) {\n curPos = calculateCommitPosition(commit);\n maxPosition = Math.max(curPos, maxPosition);\n } else {\n roots.push(commit);\n }\n setCommitPosition(commit, curPos);\n });\n\n curPos = maxPosition;\n roots.forEach((commit) => {\n setRootPosition(commit, curPos, defaultPos);\n });\n sortedKeys.forEach((key) => {\n const commit = commits.get(key);\n\n if (commit?.parents.length) {\n const closestParent = findClosestParentBT(commit.parents)!;\n curPos = commitPos.get(closestParent)!.y - COMMIT_STEP;\n if (curPos <= maxPosition) {\n maxPosition = curPos;\n }\n const x = branchPos.get(commit.branch)!.pos;\n const y = curPos - LAYOUT_OFFSET;\n commitPos.set(commit.id, { x: x, y: y });\n }\n });\n};\n\nconst findClosestParentPos = (commit: Commit): number => {\n const closestParent = findClosestParent(commit.parents.filter((p) => p !== null));\n if (!closestParent) {\n throw new Error(`Closest parent not found for commit ${commit.id}`);\n }\n\n const closestParentPos = commitPos.get(closestParent)?.y;\n if (closestParentPos === undefined) {\n throw new Error(`Closest parent position not found for commit ${commit.id}`);\n }\n return closestParentPos;\n};\n\nconst calculateCommitPosition = (commit: Commit): number => {\n const closestParentPos = findClosestParentPos(commit);\n return closestParentPos + COMMIT_STEP;\n};\n\nconst setCommitPosition = (commit: Commit, curPos: number): CommitPosition => {\n const branch = branchPos.get(commit.branch);\n\n if (!branch) {\n throw new Error(`Branch not found for commit ${commit.id}`);\n }\n\n const x = branch.pos;\n const y = curPos + LAYOUT_OFFSET;\n commitPos.set(commit.id, { x, y });\n return { x, y };\n};\n\nconst setRootPosition = (commit: Commit, curPos: number, defaultPos: number) => {\n const branch = branchPos.get(commit.branch);\n if (!branch) {\n throw new Error(`Branch not found for commit ${commit.id}`);\n }\n\n const y = curPos + defaultPos;\n const x = branch.pos;\n commitPos.set(commit.id, { x, y });\n};\n\nconst drawCommitBullet = (\n gBullets: d3.Selection,\n commit: Commit,\n commitPosition: CommitPositionOffset,\n typeClass: string,\n branchIndex: number,\n commitSymbolType: number\n) => {\n const { theme } = getConfig();\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? '');\n const useColorTheme = COLOR_THEMES.has(theme ?? '');\n const isDark = DARK_THEMES.has(theme ?? '');\n if (commitSymbolType === commitType.HIGHLIGHT) {\n gBullets\n .append('rect')\n .attr('x', commitPosition.x - 10 + (useReduxGeometry ? 3 : 0))\n .attr('y', commitPosition.y - 10 + (useReduxGeometry ? 3 : 0))\n .attr('width', useReduxGeometry ? 14 : 20)\n .attr('height', useReduxGeometry ? 14 : 20)\n .attr(\n 'class',\n `commit ${commit.id} commit-highlight${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-outer`\n );\n gBullets\n .append('rect')\n .attr('x', commitPosition.x - 6 + (useReduxGeometry ? 2 : 0))\n .attr('y', commitPosition.y - 6 + (useReduxGeometry ? 2 : 0))\n .attr('width', useReduxGeometry ? 8 : 12)\n .attr('height', useReduxGeometry ? 8 : 12)\n .attr(\n 'class',\n `commit ${commit.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets\n .append('circle')\n .attr('cx', commitPosition.x)\n .attr('cy', commitPosition.y)\n .attr('r', useReduxGeometry ? 7 : 10)\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('circle')\n .attr('cx', commitPosition.x - 3)\n .attr('cy', commitPosition.y + 2)\n .attr('r', useReduxGeometry ? 2.5 : 2.75)\n .attr('fill', isDark ? '#000000' : '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('circle')\n .attr('cx', commitPosition.x + 3)\n .attr('cy', commitPosition.y + 2)\n .attr('r', useReduxGeometry ? 2.5 : 2.75)\n .attr('fill', isDark ? '#000000' : '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('line')\n .attr('x1', commitPosition.x + 3)\n .attr('y1', commitPosition.y + 1)\n .attr('x2', commitPosition.x)\n .attr('y2', commitPosition.y - 5)\n .attr('stroke', isDark ? '#000000' : '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('line')\n .attr('x1', commitPosition.x - 3)\n .attr('y1', commitPosition.y + 1)\n .attr('x2', commitPosition.x)\n .attr('y2', commitPosition.y - 5)\n .attr('stroke', isDark ? '#000000' : '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n } else {\n const circle = gBullets.append('circle');\n circle.attr('cx', commitPosition.x);\n circle.attr('cy', commitPosition.y);\n circle.attr('r', useReduxGeometry ? 7 : 10);\n circle.attr(\n 'class',\n `commit ${commit.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append('circle');\n circle2.attr('cx', commitPosition.x);\n circle2.attr('cy', commitPosition.y);\n circle2.attr('r', useReduxGeometry ? 5 : 6);\n circle2.attr(\n 'class',\n `commit ${typeClass} ${commit.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append('path');\n const constValue = useReduxGeometry ? 4 : 5;\n cross\n .attr(\n 'd',\n `M ${commitPosition.x - constValue},${commitPosition.y - constValue}L${commitPosition.x + constValue},${commitPosition.y + constValue}M${commitPosition.x - constValue},${commitPosition.y + constValue}L${commitPosition.x + constValue},${commitPosition.y - constValue}`\n )\n .attr(\n 'class',\n `commit ${typeClass} ${commit.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n }\n};\n\nconst drawCommitLabel = (\n gLabels: d3.Selection,\n commit: Commit,\n commitPosition: CommitPositionOffset,\n pos: number,\n gitGraphConfig: GitGraphDiagramConfig\n) => {\n if (\n commit.type !== commitType.CHERRY_PICK &&\n ((commit.customId && commit.type === commitType.MERGE) || commit.type !== commitType.MERGE) &&\n gitGraphConfig.showCommitLabel\n ) {\n const wrapper = gLabels.append('g');\n const labelBkg = wrapper.insert('rect').attr('class', 'commit-label-bkg');\n const text = wrapper\n .append('text')\n .attr('x', pos)\n .attr('y', commitPosition.y + 25)\n .attr('class', 'commit-label')\n .text(commit.id);\n const bbox = text.node()?.getBBox();\n\n if (bbox) {\n labelBkg\n .attr('x', commitPosition.posWithOffset - bbox.width / 2 - PY)\n .attr('y', commitPosition.y + 13.5)\n .attr('width', bbox.width + 2 * PY)\n .attr('height', bbox.height + 2 * PY);\n\n if (dir === 'TB' || dir === 'BT') {\n labelBkg\n .attr('x', commitPosition.x - (bbox.width + 4 * PX + 5))\n .attr('y', commitPosition.y - 12);\n text\n .attr('x', commitPosition.x - (bbox.width + 4 * PX))\n .attr('y', commitPosition.y + bbox.height - 12);\n } else {\n text.attr('x', commitPosition.posWithOffset - bbox.width / 2);\n }\n\n if (gitGraphConfig.rotateCommitLabel) {\n if (dir === 'TB' || dir === 'BT') {\n text.attr(\n 'transform',\n 'rotate(' + -45 + ', ' + commitPosition.x + ', ' + commitPosition.y + ')'\n );\n labelBkg.attr(\n 'transform',\n 'rotate(' + -45 + ', ' + commitPosition.x + ', ' + commitPosition.y + ')'\n );\n } else {\n const r_x = -7.5 - ((bbox.width + 10) / 25) * 9.5;\n const r_y = 10 + (bbox.width / 25) * 8.5;\n wrapper.attr(\n 'transform',\n 'translate(' +\n r_x +\n ', ' +\n r_y +\n ') rotate(' +\n -45 +\n ', ' +\n pos +\n ', ' +\n commitPosition.y +\n ')'\n );\n }\n }\n }\n }\n};\n\nconst drawCommitTags = (\n gLabels: d3.Selection,\n commit: Commit,\n commitPosition: CommitPositionOffset,\n pos: number\n) => {\n if (commit.tags.length > 0) {\n let yOffset = 0;\n let maxTagBboxWidth = 0;\n let maxTagBboxHeight = 0;\n const tagElements = [];\n\n for (const tagValue of commit.tags.reverse()) {\n const rect = gLabels.insert('polygon');\n const hole = gLabels.append('circle');\n const tag = gLabels\n .append('text')\n .attr('y', commitPosition.y - 16 - yOffset)\n .attr('class', 'tag-label')\n .text(tagValue);\n const tagBbox = tag.node()?.getBBox();\n if (!tagBbox) {\n throw new Error('Tag bbox not found');\n }\n\n maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width);\n maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height);\n\n tag.attr('x', commitPosition.posWithOffset - tagBbox.width / 2);\n\n tagElements.push({\n tag,\n hole,\n rect,\n yOffset,\n });\n\n yOffset += 20;\n }\n\n for (const { tag, hole, rect, yOffset } of tagElements) {\n const h2 = maxTagBboxHeight / 2;\n const ly = commitPosition.y - 19.2 - yOffset;\n rect.attr('class', 'tag-label-bkg').attr(\n 'points',\n `\n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} \n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h2 + PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h2 + PY}`\n );\n\n hole\n .attr('cy', ly)\n .attr('cx', pos - maxTagBboxWidth / 2 + PX / 2)\n .attr('r', 1.5)\n .attr('class', 'tag-hole');\n\n if (dir === 'TB' || dir === 'BT') {\n const yOrigin = pos + yOffset;\n\n rect\n .attr('class', 'tag-label-bkg')\n .attr(\n 'points',\n `\n ${commitPosition.x},${yOrigin + 2}\n ${commitPosition.x},${yOrigin - 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h2 + 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h2 + 2}`\n )\n .attr('transform', 'translate(12,12) rotate(45, ' + commitPosition.x + ',' + pos + ')');\n hole\n .attr('cx', commitPosition.x + PX / 2)\n .attr('cy', yOrigin)\n .attr('transform', 'translate(12,12) rotate(45, ' + commitPosition.x + ',' + pos + ')');\n tag\n .attr('x', commitPosition.x + 5)\n .attr('y', yOrigin + 3)\n .attr('transform', 'translate(14,14) rotate(45, ' + commitPosition.x + ',' + pos + ')');\n }\n }\n }\n};\n\nconst getCommitClassType = (commit: Commit): string => {\n const commitSymbolType = commit.customType ?? commit.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n return 'commit-normal';\n case commitType.REVERSE:\n return 'commit-reverse';\n case commitType.HIGHLIGHT:\n return 'commit-highlight';\n case commitType.MERGE:\n return 'commit-merge';\n case commitType.CHERRY_PICK:\n return 'commit-cherry-pick';\n default:\n return 'commit-normal';\n }\n};\n\nconst calculatePosition = (\n commit: Commit,\n dir: string,\n pos: number,\n commitPos: Map\n): number => {\n const defaultCommitPosition = { x: 0, y: 0 }; // Default position if commit is not found\n\n if (commit.parents.length > 0) {\n const closestParent = findClosestParent(commit.parents);\n if (closestParent) {\n const parentPosition = commitPos.get(closestParent) ?? defaultCommitPosition;\n\n if (dir === 'TB') {\n return parentPosition.y + COMMIT_STEP;\n } else if (dir === 'BT') {\n const currentPosition = commitPos.get(commit.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return parentPosition.x + COMMIT_STEP;\n }\n }\n } else {\n if (dir === 'TB') {\n return defaultPos;\n } else if (dir === 'BT') {\n const currentPosition = commitPos.get(commit.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return 0;\n }\n }\n return 0;\n};\n\nconst getCommitPosition = (\n commit: Commit,\n pos: number,\n isParallelCommits: boolean\n): CommitPositionOffset => {\n const posWithOffset = dir === 'BT' && isParallelCommits ? pos : pos + LAYOUT_OFFSET;\n const branchY = branchPos.get(commit.branch)?.pos;\n const x = dir === 'TB' || dir === 'BT' ? branchPos.get(commit.branch)?.pos : posWithOffset;\n if (x === undefined || branchY === undefined) {\n throw new Error(`Position were undefined for commit ${commit.id}`);\n }\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(getConfig().theme ?? '');\n const y =\n dir === 'TB' || dir === 'BT'\n ? posWithOffset\n : branchY + (useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : -2);\n return { x, y, posWithOffset };\n};\n\nconst drawCommits = (\n svg: d3.Selection,\n commits: Map,\n modifyGraph: boolean,\n gitGraphConfig: GitGraphDiagramConfig\n) => {\n const gBullets = svg.append('g').attr('class', 'commit-bullets');\n const gLabels = svg.append('g').attr('class', 'commit-labels');\n let pos = dir === 'TB' || dir === 'BT' ? defaultPos : 0;\n const keys = [...commits.keys()];\n const isParallelCommits = gitGraphConfig.parallelCommits ?? false;\n\n const sortKeys = (a: string, b: string) => {\n const seqA = commits.get(a)?.seq;\n const seqB = commits.get(b)?.seq;\n return seqA !== undefined && seqB !== undefined ? seqA - seqB : 0;\n };\n\n let sortedKeys = keys.sort(sortKeys);\n if (dir === 'BT') {\n if (isParallelCommits) {\n setParallelBTPos(sortedKeys, commits, pos);\n }\n sortedKeys = sortedKeys.reverse();\n }\n\n sortedKeys.forEach((key) => {\n const commit = commits.get(key);\n if (!commit) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (isParallelCommits) {\n pos = calculatePosition(commit, dir, pos, commitPos);\n }\n\n const commitPosition = getCommitPosition(commit, pos, isParallelCommits);\n // Don't draw the commits now but calculate the positioning which is used by the branch lines etc.\n if (modifyGraph) {\n const typeClass = getCommitClassType(commit);\n const commitSymbolType = commit.customType ?? commit.type;\n const branchIndex = branchPos.get(commit.branch)?.index ?? 0;\n drawCommitBullet(gBullets, commit, commitPosition, typeClass, branchIndex, commitSymbolType);\n drawCommitLabel(gLabels, commit, commitPosition, pos, gitGraphConfig);\n drawCommitTags(gLabels, commit, commitPosition, pos);\n }\n if (dir === 'TB' || dir === 'BT') {\n commitPos.set(commit.id, { x: commitPosition.x, y: commitPosition.posWithOffset });\n } else {\n commitPos.set(commit.id, { x: commitPosition.posWithOffset, y: commitPosition.y });\n }\n pos = dir === 'BT' && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n};\n\nconst shouldRerouteArrow = (\n commitA: Commit,\n commitB: Commit,\n p1: CommitPosition,\n p2: CommitPosition,\n allCommits: Map\n) => {\n const commitBIsFurthest = dir === 'TB' || dir === 'BT' ? p1.x < p2.x : p1.y < p2.y;\n const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch;\n const isOnBranchToGetCurve = (x: Commit) => x.branch === branchToGetCurve;\n const isBetweenCommits = (x: Commit) => x.seq > commitA.seq && x.seq < commitB.seq;\n return [...allCommits.values()].some((commitX) => {\n return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX);\n });\n};\n\nconst findLane = (y1: number, y2: number, depth = 0): number => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n\n const ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n};\n\nconst drawArrow = (\n svg: d3.Selection,\n commitA: Commit,\n commitB: Commit,\n allCommits: Map\n) => {\n const { theme: arrowTheme } = getConfig();\n const useColorTheme = COLOR_THEMES.has(arrowTheme ?? '');\n const p1 = commitPos.get(commitA.id); // arrowStart\n const p2 = commitPos.get(commitB.id); // arrowEnd\n if (p1 === undefined || p2 === undefined) {\n throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`);\n }\n const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p2, allCommits);\n // log.debug('drawArrow', p1, p2, arrowNeedsRerouting, commitA.id, commitB.id);\n\n // Lower-right quadrant logic; top-left is 0,0\n\n let arc = '';\n let arc2 = '';\n let radius = 0;\n let offset = 0;\n\n let colorClassNum = branchPos.get(commitB.branch)?.index;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n }\n\n let lineDef;\n if (arrowNeedsRerouting) {\n arc = 'A 10 10, 0, 0, 0,';\n arc2 = 'A 10 10, 0, 0, 1,';\n radius = 10;\n offset = 10;\n\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n\n const lineX = p1.x < p2.x ? findLane(p1.x, p2.x) : findLane(p2.x, p1.x);\n\n if (dir === 'TB') {\n if (p1.x < p2.x) {\n // Source commit is on branch position left of destination commit\n // so render arrow rightward with colour of destination branch\n\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc2} ${lineX} ${\n p1.y + offset\n } L ${lineX} ${p2.y - radius} ${arc} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n // Source commit is on branch position right of destination commit\n // so render arrow leftward with colour of source branch\n\n colorClassNum = branchPos.get(commitA.branch)?.index;\n\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === 'BT') {\n if (p1.x < p2.x) {\n // Source commit is on branch position left of destination commit\n // so render arrow rightward with colour of destination branch\n\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n // Source commit is on branch position right of destination commit\n // so render arrow leftward with colour of source branch\n\n colorClassNum = branchPos.get(commitA.branch)?.index;\n\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n // Source commit is on branch positioned above destination commit\n // so render arrow downward with colour of destination branch\n\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${\n p1.x + offset\n } ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n // Source commit is on branch positioned below destination commit\n // so render arrow upward with colour of source branch\n\n colorClassNum = branchPos.get(commitA.branch)?.index;\n\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${\n p1.x + offset\n } ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n }\n } else {\n arc = 'A 20 20, 0, 0, 0,';\n arc2 = 'A 20 20, 0, 0, 1,';\n radius = 20;\n offset = 20;\n\n if (dir === 'TB') {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${\n p1.y + offset\n } L ${p2.x} ${p2.y}`;\n }\n }\n\n if (p1.x > p2.x) {\n arc = 'A 20 20, 0, 0, 0,';\n arc2 = 'A 20 20, 0, 0, 1,';\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc2} ${p1.x - offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc} ${p2.x} ${\n p1.y + offset\n } L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === 'BT') {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${\n p1.y - offset\n } L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = 'A 20 20, 0, 0, 0,';\n arc2 = 'A 20 20, 0, 0, 1,';\n radius = 20;\n offset = 20;\n\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc} ${p1.x - offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc2} ${p2.x} ${\n p1.y - offset\n } L ${p2.x} ${p2.y}`;\n }\n }\n\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${\n p1.y + offset\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y > p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${\n p1.y - offset\n } L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${\n p2.y\n } L ${p2.x} ${p2.y}`;\n }\n }\n\n if (p1.y === p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n if (lineDef === undefined) {\n throw new Error('Line definition not found');\n }\n svg\n .append('path')\n .attr('d', lineDef)\n .attr(\n 'class',\n 'arrow arrow' + calcColorIndex(colorClassNum!, THEME_COLOR_LIMIT, useColorTheme)\n );\n};\n\nconst drawArrows = (\n svg: d3.Selection,\n commits: Map\n) => {\n const gArrows = svg.append('g').attr('class', 'commit-arrows');\n [...commits.keys()].forEach((key) => {\n const commit = commits.get(key);\n\n if (commit!.parents && commit!.parents.length > 0) {\n commit!.parents.forEach((parent) => {\n drawArrow(gArrows, commits.get(parent)!, commit!, commits);\n });\n }\n });\n};\n\nconst drawBranches = (\n svg: d3.Selection,\n branches: { name: string }[],\n gitGraphConfig: GitGraphDiagramConfig,\n id: string\n) => {\n const { look, theme, themeVariables } = getConfig();\n const { dropShadow, THEME_COLOR_LIMIT: themeColorLimit } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? '');\n const useColorTheme = COLOR_THEMES.has(theme ?? '');\n const g = svg.append('g');\n branches.forEach((branch, index) => {\n const adjustIndexForTheme = calcColorIndex(\n index,\n useReduxGeometry ? themeColorLimit : THEME_COLOR_LIMIT,\n useColorTheme\n );\n\n const pos = branchPos.get(branch.name)?.pos;\n if (pos === undefined) {\n throw new Error(`Position not found for branch ${branch.name}`);\n }\n // LR spine Y: bkg rect center, dotted line, and commits all sit here.\n // TB/BT use pos directly (their line attrs are overridden below).\n const spineY =\n dir === 'TB' || dir === 'BT'\n ? pos\n : useReduxGeometry\n ? pos + REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1\n : pos - 2;\n const line = g.append('line');\n line.attr('x1', 0);\n line.attr('y1', spineY);\n line.attr('x2', maxPos);\n line.attr('y2', spineY);\n line.attr('class', 'branch branch' + adjustIndexForTheme);\n\n if (dir === 'TB') {\n line.attr('y1', defaultPos);\n line.attr('x1', pos);\n line.attr('y2', maxPos);\n line.attr('x2', pos);\n } else if (dir === 'BT') {\n line.attr('y1', maxPos);\n line.attr('x1', pos);\n line.attr('y2', defaultPos);\n line.attr('x2', pos);\n }\n lanes.push(spineY);\n\n const name = branch.name;\n\n // Create the actual text element\n const labelElement = drawText(name);\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const bkg = g.insert('rect');\n const branchLabel = g.insert('g').attr('class', 'branchLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = branchLabel.insert('g').attr('class', 'label branch-label' + adjustIndexForTheme);\n\n label.node()!.appendChild(labelElement);\n const bbox = labelElement.getBBox();\n const borderRadius = useReduxGeometry ? 0 : 4;\n const labelPaddingX = useReduxGeometry ? 16 : 0;\n const labelPaddingY = useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y : 0;\n if (look === 'neo') {\n bkg.attr('data-look', `neo`);\n }\n\n bkg\n .attr('class', 'branchLabelBkg label' + adjustIndexForTheme)\n .attr(\n 'style',\n look === 'neo' ? `filter:${useReduxGeometry ? `url(#${id}-drop-shadow)` : dropShadow}` : ''\n )\n .attr('rx', borderRadius)\n .attr('ry', borderRadius)\n .attr('x', -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0))\n .attr('y', -bbox.height / 2 + 10)\n .attr('width', bbox.width + 18 + labelPaddingX)\n .attr('height', bbox.height + 4 + labelPaddingY);\n label.attr(\n 'transform',\n 'translate(' +\n (-bbox.width -\n 14 -\n (gitGraphConfig.rotateCommitLabel === true ? 30 : 0) +\n labelPaddingX / 2) +\n ', ' +\n (spineY - bbox.height / 2 - 2) +\n ')'\n );\n if (dir === 'TB') {\n bkg.attr('x', pos - bbox.width / 2 - 10).attr('y', 0);\n label.attr('transform', 'translate(' + (pos - bbox.width / 2 - 5) + ', ' + 0 + ')');\n if (useReduxGeometry) {\n bkg.attr('transform', `translate(${-labelPaddingX / 2 - 3}, ${-labelPaddingY - 10})`);\n label.attr(\n 'transform',\n 'translate(' + (pos - bbox.width / 2 - 5) + ', ' + (-labelPaddingY * 2 + 7) + ')'\n );\n }\n } else if (dir === 'BT') {\n bkg.attr('x', pos - bbox.width / 2 - 10).attr('y', maxPos);\n label.attr('transform', 'translate(' + (pos - bbox.width / 2 - 5) + ', ' + maxPos + ')');\n if (useReduxGeometry) {\n bkg.attr('transform', `translate(${-labelPaddingX / 2 - 3}, ${labelPaddingY + 10})`);\n label.attr(\n 'transform',\n 'translate(' + (pos - bbox.width / 2 - 5) + ', ' + (maxPos + labelPaddingY * 2 + 4) + ')'\n );\n }\n } else {\n bkg.attr('transform', 'translate(-19, ' + (spineY - 12 - labelPaddingY / 2) + ')');\n }\n });\n};\n\nconst setBranchPosition = function (\n name: string,\n pos: number,\n index: number,\n bbox: DOMRect,\n rotateCommitLabel: boolean\n): number {\n branchPos.set(name, { pos, index });\n pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === 'TB' || dir === 'BT' ? bbox.width / 2 : 0);\n return pos;\n};\n\nexport const draw: DrawDefinition = function (txt, id, ver, diagObj) {\n clear();\n\n log.debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver);\n const db = diagObj.db as GitGraphDBRenderProvider;\n if (!db.getConfig) {\n log.error('getConfig method is not available on db');\n return;\n }\n const gitGraphConfig = db.getConfig();\n const rotateCommitLabel = gitGraphConfig.rotateCommitLabel ?? false;\n allCommitsDict = db.getCommits();\n const branches = db.getBranchesAsObjArray();\n dir = db.getDirection();\n const diagram = select(`[id=\"${id}\"]`);\n\n // Add linearGradient for neo look \u2014 render.ts does this for layout-based diagrams,\n // but gitGraph uses its own draw function so we must define it here.\n const { look, theme, themeVariables } = getConfig();\n const { useGradient, gradientStart, gradientStop, filterColor } = themeVariables;\n if (useGradient) {\n const gradient = diagram\n .append('defs')\n .append('linearGradient')\n .attr('id', id + '-gradient')\n .attr('gradientUnits', 'objectBoundingBox')\n .attr('x1', '0%')\n .attr('y1', '0%')\n .attr('x2', '100%')\n .attr('y2', '0%');\n gradient\n .append('stop')\n .attr('offset', '0%')\n .attr('stop-color', gradientStart)\n .attr('stop-opacity', 1);\n gradient\n .append('stop')\n .attr('offset', '100%')\n .attr('stop-color', gradientStop)\n .attr('stop-opacity', 1);\n }\n\n // Add drop-shadow SVG filter for neo+redux look. Defined once on the root \n // with a diagram-unique ID to avoid collisions when multiple diagrams share the page.\n if (look === 'neo' && REDUX_GEOMETRY_THEMES.has(theme ?? '')) {\n diagram\n .append('defs')\n .append('filter')\n .attr('id', id + '-drop-shadow')\n .attr('height', '130%')\n .attr('width', '130%')\n .append('feDropShadow')\n .attr('dx', '4')\n .attr('dy', '4')\n .attr('stdDeviation', 0)\n .attr('flood-opacity', '0.06')\n .attr('flood-color', filterColor);\n }\n\n let pos = 0;\n\n branches.forEach((branch, index) => {\n const labelElement = drawText(branch.name);\n const g = diagram.append('g');\n const branchLabel = g.insert('g').attr('class', 'branchLabel');\n const label = branchLabel.insert('g').attr('class', 'label branch-label');\n label.node()?.appendChild(labelElement);\n const bbox = labelElement.getBBox();\n\n pos = setBranchPosition(branch.name, pos, index, bbox, rotateCommitLabel);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n\n drawCommits(diagram, allCommitsDict, false, gitGraphConfig);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram, branches, gitGraphConfig, id);\n }\n drawArrows(diagram, allCommitsDict);\n drawCommits(diagram, allCommitsDict, true, gitGraphConfig);\n\n utils.insertTitle(\n diagram,\n 'gitTitleText',\n gitGraphConfig.titleTopMargin ?? 0,\n db.getDiagramTitle()\n );\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(undefined, diagram, gitGraphConfig.diagramPadding, gitGraphConfig.useMaxWidth);\n};\n\nexport default {\n draw,\n};\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n\n describe('drawText', () => {\n it('should drawText', () => {\n const svgLabel = drawText('main');\n expect(svgLabel).toBeDefined();\n expect(svgLabel.children[0].innerHTML).toBe('main');\n });\n });\n\n describe('branchPosition', () => {\n const bbox: DOMRect = {\n x: 0,\n y: 0,\n width: 10,\n height: 10,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n toJSON: () => '',\n };\n\n it('should setBranchPositions LR with two branches', () => {\n dir = 'LR';\n\n const pos = setBranchPosition('main', 0, 0, bbox, true);\n expect(pos).toBe(90);\n expect(branchPos.get('main')).toEqual({ pos: 0, index: 0 });\n const posNext = setBranchPosition('develop', pos, 1, bbox, true);\n expect(posNext).toBe(180);\n expect(branchPos.get('develop')).toEqual({ pos: pos, index: 1 });\n });\n\n it('should setBranchPositions TB with two branches', () => {\n dir = 'TB';\n bbox.width = 34.9921875;\n\n const pos = setBranchPosition('main', 0, 0, bbox, true);\n expect(pos).toBe(107.49609375);\n expect(branchPos.get('main')).toEqual({ pos: 0, index: 0 });\n\n bbox.width = 56.421875;\n const posNext = setBranchPosition('develop', pos, 1, bbox, true);\n expect(posNext).toBe(225.70703125);\n expect(branchPos.get('develop')).toEqual({ pos: pos, index: 1 });\n });\n });\n\n describe('commitPosition', () => {\n const commits = new Map([\n [\n 'commitZero',\n {\n id: 'ZERO',\n message: '',\n seq: 0,\n type: commitType.NORMAL,\n tags: [],\n parents: [],\n branch: 'main',\n },\n ],\n [\n 'commitA',\n {\n id: 'A',\n message: '',\n seq: 1,\n type: commitType.NORMAL,\n tags: [],\n parents: ['ZERO'],\n branch: 'feature',\n },\n ],\n [\n 'commitB',\n {\n id: 'B',\n message: '',\n seq: 2,\n type: commitType.NORMAL,\n tags: [],\n parents: ['A'],\n branch: 'feature',\n },\n ],\n [\n 'commitM',\n {\n id: 'M',\n message: 'merged branch feature into main',\n seq: 3,\n type: commitType.MERGE,\n tags: [],\n parents: ['ZERO', 'B'],\n branch: 'main',\n customId: true,\n },\n ],\n [\n 'commitC',\n {\n id: 'C',\n message: '',\n seq: 4,\n type: commitType.NORMAL,\n tags: [],\n parents: ['ZERO'],\n branch: 'release',\n },\n ],\n [\n 'commit5_8928ea0',\n {\n id: '5-8928ea0',\n message: 'cherry-picked [object Object] into release',\n seq: 5,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: ['C', 'M'],\n branch: 'release',\n },\n ],\n [\n 'commitD',\n {\n id: 'D',\n message: '',\n seq: 6,\n type: commitType.NORMAL,\n tags: [],\n parents: ['5-8928ea0'],\n branch: 'release',\n },\n ],\n [\n 'commit7_ed848ba',\n {\n id: '7-ed848ba',\n message: 'cherry-picked [object Object] into release',\n seq: 7,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: ['D', 'M'],\n branch: 'release',\n },\n ],\n ]);\n let pos = 0;\n branchPos.set('main', { pos: 0, index: 0 });\n branchPos.set('feature', { pos: 107.49609375, index: 1 });\n branchPos.set('release', { pos: 224.03515625, index: 2 });\n\n describe('TB', () => {\n pos = 30;\n dir = 'TB';\n const expectedCommitPositionTB = new Map([\n ['commitZero', { x: 0, y: 40, posWithOffset: 40 }],\n ['commitA', { x: 107.49609375, y: 90, posWithOffset: 90 }],\n ['commitB', { x: 107.49609375, y: 140, posWithOffset: 140 }],\n ['commitM', { x: 0, y: 190, posWithOffset: 190 }],\n ['commitC', { x: 224.03515625, y: 240, posWithOffset: 240 }],\n ['commit5_8928ea0', { x: 224.03515625, y: 290, posWithOffset: 290 }],\n ['commitD', { x: 224.03515625, y: 340, posWithOffset: 340 }],\n ['commit7_ed848ba', { x: 224.03515625, y: 390, posWithOffset: 390 }],\n ]);\n commits.forEach((commit, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit, pos, false);\n expect(position).toEqual(expectedCommitPositionTB.get(key));\n pos += 50;\n });\n });\n });\n describe('LR', () => {\n let pos = 30;\n dir = 'LR';\n const expectedCommitPositionLR = new Map([\n ['commitZero', { x: 0, y: 40, posWithOffset: 40 }],\n ['commitA', { x: 107.49609375, y: 90, posWithOffset: 90 }],\n ['commitB', { x: 107.49609375, y: 140, posWithOffset: 140 }],\n ['commitM', { x: 0, y: 190, posWithOffset: 190 }],\n ['commitC', { x: 224.03515625, y: 240, posWithOffset: 240 }],\n ['commit5_8928ea0', { x: 224.03515625, y: 290, posWithOffset: 290 }],\n ['commitD', { x: 224.03515625, y: 340, posWithOffset: 340 }],\n ['commit7_ed848ba', { x: 224.03515625, y: 390, posWithOffset: 390 }],\n ]);\n commits.forEach((commit, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit, pos, false);\n expect(position).toEqual(expectedCommitPositionLR.get(key));\n pos += 50;\n });\n });\n });\n describe('getCommitClassType', () => {\n const expectedCommitClassType = new Map([\n ['commitZero', 'commit-normal'],\n ['commitA', 'commit-normal'],\n ['commitB', 'commit-normal'],\n ['commitM', 'commit-merge'],\n ['commitC', 'commit-normal'],\n ['commit5_8928ea0', 'commit-cherry-pick'],\n ['commitD', 'commit-normal'],\n ['commit7_ed848ba', 'commit-cherry-pick'],\n ]);\n commits.forEach((commit, key) => {\n it(`should give the correct class type for commit ${key}`, () => {\n const classType = getCommitClassType(commit);\n expect(classType).toBe(expectedCommitClassType.get(key));\n });\n });\n });\n });\n describe('building BT parallel commit diagram', () => {\n const commits = new Map([\n [\n '1-abcdefg',\n {\n id: '1-abcdefg',\n message: '',\n seq: 0,\n type: 0,\n tags: [],\n parents: [],\n branch: 'main',\n },\n ],\n [\n '2-abcdefg',\n {\n id: '2-abcdefg',\n message: '',\n seq: 1,\n type: 0,\n tags: [],\n parents: ['1-abcdefg'],\n branch: 'main',\n },\n ],\n [\n '3-abcdefg',\n {\n id: '3-abcdefg',\n message: '',\n seq: 2,\n type: 0,\n tags: [],\n parents: ['2-abcdefg'],\n branch: 'develop',\n },\n ],\n [\n '4-abcdefg',\n {\n id: '4-abcdefg',\n message: '',\n seq: 3,\n type: 0,\n tags: [],\n parents: ['3-abcdefg'],\n branch: 'develop',\n },\n ],\n [\n '5-abcdefg',\n {\n id: '5-abcdefg',\n message: '',\n seq: 4,\n type: 0,\n tags: [],\n parents: ['2-abcdefg'],\n branch: 'feature',\n },\n ],\n [\n '6-abcdefg',\n {\n id: '6-abcdefg',\n message: '',\n seq: 5,\n type: 0,\n tags: [],\n parents: ['5-abcdefg'],\n branch: 'feature',\n },\n ],\n [\n '7-abcdefg',\n {\n id: '7-abcdefg',\n message: '',\n seq: 6,\n type: 0,\n tags: [],\n parents: ['2-abcdefg'],\n branch: 'main',\n },\n ],\n [\n '8-abcdefg',\n {\n id: '8-abcdefg',\n message: '',\n seq: 7,\n type: 0,\n tags: [],\n parents: ['7-abcdefg'],\n branch: 'main',\n },\n ],\n ]);\n const expectedCommitPosition = new Map([\n ['1-abcdefg', { x: 0, y: 40 }],\n ['2-abcdefg', { x: 0, y: 90 }],\n ['3-abcdefg', { x: 107.49609375, y: 140 }],\n ['4-abcdefg', { x: 107.49609375, y: 190 }],\n ['5-abcdefg', { x: 225.70703125, y: 140 }],\n ['6-abcdefg', { x: 225.70703125, y: 190 }],\n ['7-abcdefg', { x: 0, y: 140 }],\n ['8-abcdefg', { x: 0, y: 190 }],\n ]);\n\n const expectedCommitPositionAfterParallel = new Map([\n ['1-abcdefg', { x: 0, y: 210 }],\n ['2-abcdefg', { x: 0, y: 160 }],\n ['3-abcdefg', { x: 107.49609375, y: 110 }],\n ['4-abcdefg', { x: 107.49609375, y: 60 }],\n ['5-abcdefg', { x: 225.70703125, y: 110 }],\n ['6-abcdefg', { x: 225.70703125, y: 60 }],\n ['7-abcdefg', { x: 0, y: 110 }],\n ['8-abcdefg', { x: 0, y: 60 }],\n ]);\n\n const expectedCommitCurrentPosition = new Map([\n ['1-abcdefg', 30],\n ['2-abcdefg', 80],\n ['3-abcdefg', 130],\n ['4-abcdefg', 180],\n ['5-abcdefg', 130],\n ['6-abcdefg', 180],\n ['7-abcdefg', 130],\n ['8-abcdefg', 180],\n ]);\n const sortedKeys = [...expectedCommitPosition.keys()];\n it('should get the correct commit position and current position', () => {\n dir = 'BT';\n let curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set('main', { pos: 0, index: 0 });\n branchPos.set('develop', { pos: 107.49609375, index: 1 });\n branchPos.set('feature', { pos: 225.70703125, index: 2 });\n commits.forEach((commit, key) => {\n if (commit.parents.length > 0) {\n curPos = calculateCommitPosition(commit);\n }\n const position = setCommitPosition(commit, curPos);\n expect(position).toEqual(expectedCommitPosition.get(key));\n expect(curPos).toEqual(expectedCommitCurrentPosition.get(key));\n });\n });\n\n it('should get the correct commit position after parallel commits', () => {\n commitPos.clear();\n branchPos.clear();\n dir = 'BT';\n const curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set('main', { pos: 0, index: 0 });\n branchPos.set('develop', { pos: 107.49609375, index: 1 });\n branchPos.set('feature', { pos: 225.70703125, index: 2 });\n setParallelBTPos(sortedKeys, commits, curPos);\n sortedKeys.forEach((commit) => {\n const position = commitPos.get(commit);\n expect(position).toEqual(expectedCommitPositionAfterParallel.get(commit));\n });\n });\n });\n it('add', () => {\n commitPos.set('parent1', { x: 1, y: 1 });\n commitPos.set('parent2', { x: 2, y: 2 });\n commitPos.set('parent3', { x: 3, y: 3 });\n dir = 'LR';\n const parents = ['parent1', 'parent2', 'parent3'];\n const closestParent = findClosestParent(parents);\n\n expect(closestParent).toBe('parent3');\n commitPos.clear();\n });\n}\n", "import * as configApi from '../../config.js';\nconst GIT_NAMED_COLOR_COUNT = 8;\n\nconst REDUX_GEOMETRY_THEMES = new Set(['redux', 'redux-dark', 'redux-color', 'redux-dark-color']);\nconst COLOR_THEMES = new Set(['redux-color', 'redux-dark-color']);\nconst NEO_THEMES = new Set(['neo', 'neo-dark']);\nconst DARK_THEMES = new Set(['dark', 'redux-dark', 'redux-dark-color', 'neo-dark']);\nconst NEO_COLOR_GEN_THEMES = new Set([\n 'redux',\n 'redux-dark',\n 'redux-color',\n 'redux-dark-color',\n 'neo',\n 'neo-dark',\n]);\n\nconst genGitGraphGradient = (options) => {\n const { svgId } = options;\n let sections = '';\n if (options.useGradient && svgId) {\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .label${i} { fill: ${options.mainBkg}; stroke: url(${svgId}-gradient); stroke-width: ${options.strokeWidth};}\n `;\n }\n }\n return sections;\n};\n\nconst genColor = (options) => {\n const config = configApi.getConfig();\n const { theme, themeVariables } = config;\n const { borderColorArray } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme);\n if (NEO_THEMES.has(theme)) {\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder};}\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n ${genGitGraphGradient(options)}`;\n } else {\n // Wrap index to stay within the range of defined git color variables (git0..git7).\n const ci = i % GIT_NAMED_COLOR_COUNT;\n sections += `\n .branch-label${i} { fill: ${options['gitBranchLabel' + ci]}; }\n .commit${i} { stroke: ${options['git' + ci]}; fill: ${options['git' + ci]}; }\n .commit-highlight${i} { stroke: ${options['gitInv' + ci]}; fill: ${options['gitInv' + ci]}; }\n .arrow${i} { stroke: ${options['git' + ci]}; }\n `;\n }\n }\n return sections;\n } else if (!COLOR_THEMES.has(theme)) {\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : ''} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : ''}}\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n `;\n }\n return sections;\n } else {\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : ''} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.mainBkg}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : ''} }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n `;\n } else {\n const colorIndex = i % borderColorArray.length;\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : ''} }\n .commit${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .commit-highlight${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .label${i} { fill: ${DARK_THEMES.has(theme) ? options.mainBkg : borderColorArray[colorIndex]}; stroke: ${borderColorArray[colorIndex]}; stroke-width: ${options.strokeWidth}; }\n .arrow${i} { stroke: ${borderColorArray[colorIndex]}; }\n `;\n }\n }\n return sections;\n }\n};\n\nconst normalTheme = (options) => {\n return `${Array.from({ length: options.THEME_COLOR_LIMIT }, (_, i) => i)\n .map((i) => {\n // Wrap index to stay within the range of defined git color variables (git0..git7).\n const ci = i % GIT_NAMED_COLOR_COUNT;\n return `\n .branch-label${i} { fill: ${options['gitBranchLabel' + ci]}; }\n .commit${i} { stroke: ${options['git' + ci]}; fill: ${options['git' + ci]}; }\n .commit-highlight${i} { stroke: ${options['gitInv' + ci]}; fill: ${options['gitInv' + ci]}; }\n .label${i} { fill: ${options['git' + ci]}; }\n .arrow${i} { stroke: ${options['git' + ci]}; }\n `;\n })\n .join('\\n')}`;\n};\nconst getStyles = (options) => {\n const config = configApi.getConfig();\n const { theme } = config;\n const useNeoColorGen = NEO_COLOR_GEN_THEMES.has(theme);\n\n return `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n \n ${useNeoColorGen ? genColor(options) : normalTheme(options)}\n\n .branch {\n stroke-width: ${options.strokeWidth};\n stroke: ${options.commitLineColor ?? options.lineColor};\n stroke-dasharray: ${useNeoColorGen ? '4 2' : '2'};\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? options.nodeBorder : options.commitLabelColor}; ${useNeoColorGen ? `font-weight:${options.noteFontWeight};` : ''}}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? 'transparent' : options.commitLabelBackground}; opacity: ${useNeoColorGen ? '' : 0.5}; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${useNeoColorGen ? options.mainBkg : options.tagLabelBackground}; stroke: ${useNeoColorGen ? options.nodeBorder : options.tagLabelBorder}; ${useNeoColorGen ? `filter:${options.dropShadow}` : ''} }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n .commit-reverse {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n stroke-width: ${useNeoColorGen ? options.strokeWidth : 3};\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n\n .arrow {\n /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */\n stroke-width: ${REDUX_GEOMETRY_THEMES.has(theme) ? options.strokeWidth : 8};\n stroke-linecap: round;\n fill: none\n }\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\n};\n\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport { parser } from './gitGraphParser.js';\nimport { db } from './gitGraphAst.js';\nimport gitGraphRenderer from './gitGraphRenderer.js';\nimport gitGraphStyles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer: gitGraphRenderer,\n styles: gitGraphStyles,\n};\n"], + "mappings": "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", + "names": ["commitType", "DEFAULT_GITGRAPH_CONFIG", "defaultConfig_default", "getConfig", "__name", "cleanAndMerge", "state", "ImperativeState", "config", "mainBranchName", "mainBranchOrder", "getID", "random", "uniqBy", "list", "fn", "recordMap", "out", "item", "key", "setDirection", "dir", "setOptions", "rawOptString", "log", "e", "getOptions", "commit", "commitDB", "msg", "id", "type", "tags", "common_default", "tag", "newCommit", "commitType", "branch", "branchDB", "name", "order", "checkout", "merge", "mergeDB", "otherBranch", "customId", "overrideType", "customTags", "currentBranchCheck", "otherBranchCheck", "currentCommit", "otherCommit", "error", "verifiedBranch", "cherryPick", "cherryPickDB", "sourceId", "targetId", "parentCommitId", "sourceCommit", "sourceCommitBranch", "currentCommitId", "upsert", "arr", "newVal", "index", "prettyPrintCommitHistory", "commitArr", "line", "c", "label", "prettyPrint", "node", "getCommitsArray", "clear", "getBranchesAsObjArray", "branchConfig", "i", "a", "b", "getBranches", "getCommits", "o", "getCurrentBranch", "getDirection", "getHead", "db", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "populate", "__name", "ast", "db", "populateCommonDb", "statement", "parseStatement", "parser", "stmt", "parseCommit", "parseBranch", "parseMerge", "parseCheckout", "parseCherryPicking", "log", "commit", "commitType", "branch", "merge", "checkout", "cherryPicking", "input", "parse", "LAYOUT_OFFSET", "COMMIT_STEP", "PX", "PY", "THEME_COLOR_LIMIT", "REDUX_GEOMETRY_THEMES", "REDUX_BRANCH_LABEL_PADDING_Y", "COLOR_THEMES", "DARK_THEMES", "calcColorIndex", "__name", "rawIndex", "limit", "avoidDefaultColor", "branchPos", "commitPos", "defaultPos", "allCommitsDict", "lanes", "maxPos", "dir", "clear", "drawText", "txt", "svgLabel", "row", "tspan", "findClosestParent", "parents", "closestParent", "comparisonFunc", "targetPosition", "a", "b", "parent", "parentPosition", "findClosestParentBT", "maxPosition", "setParallelBTPos", "sortedKeys", "commits", "curPos", "roots", "key", "commit", "calculateCommitPosition", "setCommitPosition", "setRootPosition", "x", "y", "findClosestParentPos", "p", "closestParentPos", "branch", "drawCommitBullet", "gBullets", "commitPosition", "typeClass", "branchIndex", "commitSymbolType", "theme", "getConfig", "useReduxGeometry", "useColorTheme", "isDark", "commitType", "circle", "circle2", "cross", "constValue", "drawCommitLabel", "gLabels", "pos", "gitGraphConfig", "wrapper", "labelBkg", "text", "bbox", "r_x", "r_y", "drawCommitTags", "yOffset", "maxTagBboxWidth", "maxTagBboxHeight", "tagElements", "tagValue", "rect", "hole", "tag", "tagBbox", "h2", "ly", "yOrigin", "getCommitClassType", "calculatePosition", "defaultCommitPosition", "getCommitPosition", "isParallelCommits", "posWithOffset", "branchY", "drawCommits", "svg", "modifyGraph", "keys", "sortKeys", "seqA", "seqB", "shouldRerouteArrow", "commitA", "commitB", "p1", "p2", "allCommits", "branchToGetCurve", "isOnBranchToGetCurve", "isBetweenCommits", "commitX", "findLane", "y1", "y2", "depth", "candidate", "lane", "diff", "drawArrow", "arrowTheme", "arrowNeedsRerouting", "arc", "arc2", "radius", "offset", "colorClassNum", "lineDef", "lineY", "lineX", "drawArrows", "gArrows", "drawBranches", "branches", "id", "look", "themeVariables", "dropShadow", "themeColorLimit", "index", "adjustIndexForTheme", "spineY", "line", "name", "labelElement", "bkg", "label", "borderRadius", "labelPaddingX", "labelPaddingY", "setBranchPosition", "rotateCommitLabel", "draw", "ver", "diagObj", "log", "db", "diagram", "select_default", "useGradient", "gradientStart", "gradientStop", "filterColor", "gradient", "g", "branchLabel", "utils_default", "setupGraphViewbox", "gitGraphRenderer_default", "GIT_NAMED_COLOR_COUNT", "REDUX_GEOMETRY_THEMES", "COLOR_THEMES", "NEO_THEMES", "DARK_THEMES", "NEO_COLOR_GEN_THEMES", "genGitGraphGradient", "__name", "options", "svgId", "sections", "i", "genColor", "config", "getConfig", "theme", "themeVariables", "borderColorArray", "useReduxGeometry", "ci", "colorIndex", "normalTheme", "_", "getStyles", "useNeoColorGen", "styles_default", "diagram", "parser", "db", "gitGraphRenderer_default", "styles_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/info-3K5VOQVL-GYCQBKJT.mjs b/assets/mermaid/chunks/mermaid.esm.min/info-3K5VOQVL-GYCQBKJT.mjs deleted file mode 100644 index c17e826..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/info-3K5VOQVL-GYCQBKJT.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as o,b as e}from"./chunk-MFSPT3DZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import"./chunk-VELTKBKT.mjs";export{o as InfoModule,e as createInfoServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/info-J43DQDTF-KCYPFFUO.mjs b/assets/mermaid/chunks/mermaid.esm.min/info-J43DQDTF-KCYPFFUO.mjs new file mode 100644 index 0000000..35a4675 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/info-J43DQDTF-KCYPFFUO.mjs @@ -0,0 +1 @@ +import{a as o,b as e}from"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{o as InfoModule,e as createInfoServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/packet-RMMSAZCW-74OXTHQQ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/info-J43DQDTF-KCYPFFUO.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/packet-RMMSAZCW-74OXTHQQ.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/info-J43DQDTF-KCYPFFUO.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/infoDiagram-3YFTVSEB.mjs b/assets/mermaid/chunks/mermaid.esm.min/infoDiagram-3YFTVSEB.mjs new file mode 100644 index 0000000..fcc00fa --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/infoDiagram-3YFTVSEB.mjs @@ -0,0 +1,2 @@ +import{a as s}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{a as p}from"./chunk-LRIF4GLE.mjs";import{O as n}from"./chunk-67TQ5CYL.mjs";import{b as o}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as r}from"./chunk-AQ6EADP3.mjs";var a={parse:r(async t=>{let e=await s("info",t);o.debug(e)},"parse")};var g={version:"11.15.0"},c=r(()=>g.version,"getVersion"),m={getVersion:c};var D=r((t,e,d)=>{o.debug(`rendering info diagram +`+t);let i=p(e);n(i,100,400,!0),i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${d}`)},"draw"),f={draw:D};var z={parser:a,db:m,renderer:f};export{z as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/infoDiagram-JC2SMEGH.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/infoDiagram-3YFTVSEB.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/infoDiagram-JC2SMEGH.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/infoDiagram-3YFTVSEB.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/infoDiagram-JC2SMEGH.mjs b/assets/mermaid/chunks/mermaid.esm.min/infoDiagram-JC2SMEGH.mjs deleted file mode 100644 index b136041..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/infoDiagram-JC2SMEGH.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{a as s}from"./chunk-TJ4WWVTA.mjs";import"./chunk-AHTCUU5T.mjs";import"./chunk-JVPIJFVP.mjs";import"./chunk-SYGLAQYM.mjs";import"./chunk-NHJX6F6M.mjs";import"./chunk-F3E5R7LK.mjs";import"./chunk-ZX4KS3OZ.mjs";import{a as p}from"./chunk-D4HHKWPY.mjs";import{N as n}from"./chunk-3UWU4A3N.mjs";import{b as o}from"./chunk-MGPAVIPZ.mjs";import"./chunk-MFSPT3DZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as r}from"./chunk-VELTKBKT.mjs";var a={parse:r(async t=>{let e=await s("info",t);o.debug(e)},"parse")};var g={version:"11.13.0"},c=r(()=>g.version,"getVersion"),m={getVersion:c};var D=r((t,e,d)=>{o.debug(`rendering info diagram -`+t);let i=p(e);n(i,100,400,!0),i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${d}`)},"draw"),f={draw:D};var z={parser:a,db:m,renderer:f};export{z as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-LCPTV24A.mjs b/assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-BNXS4ZKH.mjs similarity index 50% rename from assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-LCPTV24A.mjs rename to assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-BNXS4ZKH.mjs index f13977f..b637745 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-LCPTV24A.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-BNXS4ZKH.mjs @@ -1,9 +1,9 @@ -import{a as pt}from"./chunk-D4HHKWPY.mjs";import{a as ft}from"./chunk-IWDTEBJL.mjs";import{k as dt}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{F as st,N as rt,Q as at,R as ot,S as lt,T as ht,U as ct,V as tt,W as ut,Y as U}from"./chunk-3UWU4A3N.mjs";import"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as r}from"./chunk-VELTKBKT.mjs";var et=(function(){var e=r(function(N,t,n,i){for(n=n||{},i=N.length;i--;n[N[i]]=t);return n},"o"),h=[1,4],o=[1,14],a=[1,12],l=[1,13],f=[6,7,8],p=[1,20],d=[1,18],b=[1,19],u=[6,7,11],k=[1,6,13,14],g=[1,23],x=[1,24],_=[1,6,7,11,13,14],B={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:r(function(t,n,i,c,y,s,S){var w=s.length-1;switch(y){case 6:case 7:return c;case 15:c.addNode(s[w-1].length,s[w].trim());break;case 16:c.addNode(0,s[w].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:h},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:h},{6:o,7:[1,10],9:9,12:11,13:a,14:l},e(f,[2,3]),{1:[2,2]},e(f,[2,4]),e(f,[2,5]),{1:[2,6],6:o,12:15,13:a,14:l},{6:o,9:16,12:11,13:a,14:l},{6:p,7:d,10:17,11:b},e(u,[2,18],{14:[1,21]}),e(u,[2,16]),e(u,[2,17]),{6:p,7:d,10:22,11:b},{1:[2,7],6:o,12:15,13:a,14:l},e(k,[2,14],{7:g,11:x}),e(_,[2,8]),e(_,[2,9]),e(_,[2,10]),e(u,[2,15]),e(k,[2,13],{7:g,11:x}),e(_,[2,11]),e(_,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:r(function(t,n){if(n.recoverable)this.trace(t);else{var i=new Error(t);throw i.hash=n,i}},"parseError"),parse:r(function(t){var n=this,i=[0],c=[],y=[null],s=[],S=this.table,w="",A=0,v=0,E=0,D=2,P=1,Y=s.slice.call(arguments,1),m=Object.create(this.lexer),I={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(I.yy[G]=this.yy[G]);m.setInput(t,I.yy),I.yy.lexer=m,I.yy.parser=this,typeof m.yylloc>"u"&&(m.yylloc={});var R=m.yylloc;s.push(R);var K=m.options&&m.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Vt(T){i.length=i.length-2*T,y.length=y.length-T,s.length=s.length-T}r(Vt,"popStack");function It(){var T;return T=c.pop()||m.lex()||P,typeof T!="number"&&(T instanceof Array&&(c=T,T=c.pop()),T=n.symbols_[T]||T),T}r(It,"lex");for(var L,q,O,C,Gt,Q,j={},z,V,nt,H;;){if(O=i[i.length-1],this.defaultActions[O]?C=this.defaultActions[O]:((L===null||typeof L>"u")&&(L=It()),C=S[O]&&S[O][L]),typeof C>"u"||!C.length||!C[0]){var J="";H=[];for(z in S[O])this.terminals_[z]&&z>D&&H.push("'"+this.terminals_[z]+"'");m.showPosition?J="Parse error on line "+(A+1)+`: +import{a as pt}from"./chunk-LRIF4GLE.mjs";import{a as ft}from"./chunk-5IMINLNL.mjs";import{n as dt}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{G as st,O as rt,S as at,T as ot,U as lt,V as ht,W as ct,X as tt,Y as ut,_ as U}from"./chunk-67TQ5CYL.mjs";import"./chunk-7W6UQGC5.mjs";import{a as r}from"./chunk-AQ6EADP3.mjs";var et=(function(){var e=r(function(N,t,n,i){for(n=n||{},i=N.length;i--;n[N[i]]=t);return n},"o"),h=[1,4],o=[1,14],a=[1,12],l=[1,13],f=[6,7,8],p=[1,20],d=[1,18],b=[1,19],u=[6,7,11],k=[1,6,13,14],g=[1,23],x=[1,24],_=[1,6,7,11,13,14],B={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:r(function(t,n,i,c,y,s,S){var w=s.length-1;switch(y){case 6:case 7:return c;case 15:c.addNode(s[w-1].length,s[w].trim());break;case 16:c.addNode(0,s[w].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:h},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:h},{6:o,7:[1,10],9:9,12:11,13:a,14:l},e(f,[2,3]),{1:[2,2]},e(f,[2,4]),e(f,[2,5]),{1:[2,6],6:o,12:15,13:a,14:l},{6:o,9:16,12:11,13:a,14:l},{6:p,7:d,10:17,11:b},e(u,[2,18],{14:[1,21]}),e(u,[2,16]),e(u,[2,17]),{6:p,7:d,10:22,11:b},{1:[2,7],6:o,12:15,13:a,14:l},e(k,[2,14],{7:g,11:x}),e(_,[2,8]),e(_,[2,9]),e(_,[2,10]),e(u,[2,15]),e(k,[2,13],{7:g,11:x}),e(_,[2,11]),e(_,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:r(function(t,n){if(n.recoverable)this.trace(t);else{var i=new Error(t);throw i.hash=n,i}},"parseError"),parse:r(function(t){var n=this,i=[0],c=[],y=[null],s=[],S=this.table,w="",A=0,v=0,E=0,D=2,P=1,Y=s.slice.call(arguments,1),m=Object.create(this.lexer),I={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(I.yy[G]=this.yy[G]);m.setInput(t,I.yy),I.yy.lexer=m,I.yy.parser=this,typeof m.yylloc>"u"&&(m.yylloc={});var R=m.yylloc;s.push(R);var K=m.options&&m.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Vt(T){i.length=i.length-2*T,y.length=y.length-T,s.length=s.length-T}r(Vt,"popStack");function It(){var T;return T=c.pop()||m.lex()||P,typeof T!="number"&&(T instanceof Array&&(c=T,T=c.pop()),T=n.symbols_[T]||T),T}r(It,"lex");for(var L,q,O,C,Gt,Q,j={},z,V,nt,H;;){if(O=i[i.length-1],this.defaultActions[O]?C=this.defaultActions[O]:((L===null||typeof L>"u")&&(L=It()),C=S[O]&&S[O][L]),typeof C>"u"||!C.length||!C[0]){var J="";H=[];for(z in S[O])this.terminals_[z]&&z>D&&H.push("'"+this.terminals_[z]+"'");m.showPosition?J="Parse error on line "+(A+1)+`: `+m.showPosition()+` Expecting `+H.join(", ")+", got '"+(this.terminals_[L]||L)+"'":J="Parse error on line "+(A+1)+": Unexpected "+(L==P?"end of input":"'"+(this.terminals_[L]||L)+"'"),this.parseError(J,{text:m.match,token:this.terminals_[L]||L,line:m.yylineno,loc:R,expected:H})}if(C[0]instanceof Array&&C.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+L);switch(C[0]){case 1:i.push(L),y.push(m.yytext),s.push(m.yylloc),i.push(C[1]),L=null,q?(L=q,q=null):(v=m.yyleng,w=m.yytext,A=m.yylineno,R=m.yylloc,E>0&&E--);break;case 2:if(V=this.productions_[C[1]][1],j.$=y[y.length-V],j._$={first_line:s[s.length-(V||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(V||1)].first_column,last_column:s[s.length-1].last_column},K&&(j._$.range=[s[s.length-(V||1)].range[0],s[s.length-1].range[1]]),Q=this.performAction.apply(j,[w,v,A,I.yy,C[1],y,s].concat(Y)),typeof Q<"u")return Q;V&&(i=i.slice(0,-1*V*2),y=y.slice(0,-1*V),s=s.slice(0,-1*V)),i.push(this.productions_[C[1]][0]),y.push(j.$),s.push(j._$),nt=S[i[i.length-2]][i[i.length-1]],i.push(nt);break;case 3:return!0}}return!0},"parse")},M=(function(){var N={EOF:1,parseError:r(function(n,i){if(this.yy.parser)this.yy.parser.parseError(n,i);else throw new Error(n)},"parseError"),setInput:r(function(t,n){return this.yy=n||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:r(function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var n=t.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:r(function(t){var n=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var c=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var y=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===c.length?this.yylloc.first_column:0)+c[c.length-i.length].length-i[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(t){this.unput(this.match.slice(t))},"less"),pastInput:r(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var t=this.pastInput(),n=new Array(t.length+1).join("-");return t+this.upcomingInput()+` `+n+"^"},"showPosition"),test_match:r(function(t,n){var i,c,y;if(this.options.backtrack_lexer&&(y={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(y.yylloc.range=this.yylloc.range.slice(0))),c=t[0].match(/(?:\r\n?|\n).*/g),c&&(this.yylineno+=c.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:c?c[c.length-1].length-c[c.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in y)this[s]=y[s];return!1}return!1},"test_match"),next:r(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,n,i,c;this._more||(this.yytext="",this.match="");for(var y=this._currentRules(),s=0;sn[0].length)){if(n=i,c=s,this.options.backtrack_lexer){if(t=this.test_match(i,y[s]),t!==!1)return t;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(t=this.test_match(n,y[c]),t!==!1?t:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:r(function(){var n=this.next();return n||this.lex()},"lex"),begin:r(function(n){this.conditionStack.push(n)},"begin"),popState:r(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:r(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:r(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:r(function(n){this.begin(n)},"pushState"),stateStackSize:r(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:r(function(n,i,c,y){var s=y;switch(c){case 0:return 6;case 1:return 8;case 2:return 8;case 3:return 6;case 4:return 7;case 5:return 13;case 6:return 14;case 7:return 11}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:ishikawa-beta\b)/i,/^(?:ishikawa\b)/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:[^\n]+)/i,/^(?:$)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return N})();B.lexer=M;function $(){this.yy={}}return r($,"Parser"),$.prototype=B,B.Parser=$,new $})();et.parser=et;var yt=et;var Z=class{constructor(){this.stack=[];this.clear=this.clear.bind(this),this.addNode=this.addNode.bind(this),this.getRoot=this.getRoot.bind(this)}static{r(this,"IshikawaDB")}clear(){this.root=void 0,this.stack=[],this.baseLevel=void 0,at()}getRoot(){return this.root}addNode(h,o){let a=st.sanitizeText(o,U());if(!this.root){this.baseLevel=h,this.root={text:a,children:[]},this.stack=[{level:0,node:this.root}],tt(a);return}let l=h-(this.baseLevel??0);for(l<=0&&(l=1);this.stack.length>1&&this.stack[this.stack.length-1].level>=l;)this.stack.pop();let f=this.stack[this.stack.length-1].node,p={text:a,children:[]};f.children.push(p),this.stack.push({level:l,node:p})}getAccTitle(){return lt()}setAccTitle(h){ot(h)}getAccDescription(){return ct()}setAccDescription(h){ht(h)}getDiagramTitle(){return ut()}setDiagramTitle(h){tt(h)}};var Et=14,W=250,$t=30,At=60,Dt=5,xt=82*Math.PI/180,mt=Math.cos(xt),gt=Math.sin(xt),kt=r((e,h,o)=>{let a=e.node().getBBox(),l=a.width+h*2,f=a.height+h*2;rt(e,f,l,o),e.attr("viewBox",`${a.x-h} ${a.y-h} ${l} ${f}`)},"applyPaddedViewBox"),Lt=r((e,h,o,a)=>{let f=a.db.getRoot();if(!f)return;let p=U(),{look:d,handDrawnSeed:b,themeVariables:u}=p,k=dt(p.fontSize)[0]??Et,g=d==="handDrawn",x=f.children??[],_=p.ishikawa?.diagramPadding??20,B=p.ishikawa?.useMaxWidth??!1,M=pt(h),$=M.append("g").attr("class","ishikawa"),N=g?ft.svg(M.node()):void 0,t=N?{roughSvg:N,seed:b??0,lineColor:u?.lineColor??"#333",fillColor:u?.mainBkg??"#fff"}:void 0,n=`ishikawa-arrow-${h}`;g||$.append("defs").append("marker").attr("id",n).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 Z").attr("class","ishikawa-arrow");let i=0,c=W,y=g?void 0:F($,i,c,i,c,"ishikawa-spine");if(Nt($,i,c,f.text,k,t),!x.length){g&&F($,i,c,i,c,"ishikawa-spine",t),kt(M,_,B);return}i-=20;let s=x.filter((m,I)=>I%2===0),S=x.filter((m,I)=>I%2===1),w=bt(s),A=bt(S),v=w.total+A.total,E=W,D=W;if(v>0){let m=W*2,I=W*.3;E=Math.max(I,m*(w.total/v)),D=Math.max(I,m*(A.total/v))}let P=k*2;E=Math.max(E,w.max*P),D=Math.max(D,A.max*P),c=Math.max(E,W),y&&y.attr("y1",c).attr("y2",c),$.select(".ishikawa-head-group").attr("transform",`translate(0,${c})`);let Y=Math.ceil(x.length/2);for(let m=0;mMath.min(G,R.getBBox().x),1/0)}if(g)F($,i,c,0,c,"ishikawa-spine",t);else{y.attr("x1",i);let m=`url(#${n})`;$.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start",m)}kt(M,_,B)},"draw"),bt=r(e=>{let h=r(o=>o.children.reduce((a,l)=>a+1+h(l),0),"countDescendants");return e.reduce((o,a)=>{let l=h(a);return o.total+=l,o.max=Math.max(o.max,l),o},{total:0,max:0})},"sideStats"),Nt=r((e,h,o,a,l,f)=>{let p=Math.max(6,Math.floor(110/(l*.6))),d=e.append("g").attr("class","ishikawa-head-group").attr("transform",`translate(${h},${o})`),b=X(d,_t(a,p),0,0,"ishikawa-head-label","start",l),u=b.node().getBBox(),k=Math.max(60,u.width+6),g=Math.max(40,u.height*2+40),x=`M 0 ${-g/2} L 0 ${g/2} Q ${k*2.4} 0 0 ${-g/2} Z`;if(f){let _=f.roughSvg.path(x,{roughness:1.5,seed:f.seed,fill:f.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:f.lineColor,strokeWidth:2});d.insert(()=>_,":first-child").attr("class","ishikawa-head")}else d.insert("path",":first-child").attr("class","ishikawa-head").attr("d",x);b.attr("transform",`translate(${(k-u.width)/2-u.x+3},${-u.y-u.height/2})`)},"drawHead"),Tt=r((e,h)=>{let o=[],a=[],l=r((f,p,d)=>{let b=h===-1?[...f].reverse():f;for(let u of b){let k=o.length,g=u.children??[];o.push({depth:d,text:_t(u.text,15),parentIndex:p,childCount:g.length}),d%2===0?(a.push(k),g.length&&l(g,k,d+1)):(g.length&&l(g,k,d+1),a.push(k))}},"walk");return l(e,-1,2),{entries:o,yOrder:a}},"flattenTree"),Ct=r((e,h,o,a,l,f,p)=>{let d=e.append("g").attr("class","ishikawa-label-group"),u=X(d,h,o,a+11*l,"ishikawa-label cause","middle",f).node().getBBox();if(p){let k=p.roughSvg.rectangle(u.x-20,u.y-2,u.width+40,u.height+4,{roughness:1.5,seed:p.seed,fill:p.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:p.lineColor,strokeWidth:2});d.insert(()=>k,":first-child").attr("class","ishikawa-label-box")}else d.insert("rect",":first-child").attr("class","ishikawa-label-box").attr("x",u.x-20).attr("y",u.y-2).attr("width",u.width+40).attr("height",u.height+4)},"drawCauseLabel"),it=r((e,h,o,a,l,f)=>{let p=Math.sqrt(a*a+l*l);if(p===0)return;let d=a/p,b=l/p,u=6,k=-b*u,g=d*u,x=h,_=o,B=`M ${x} ${_} L ${x-d*u*2+k} ${_-b*u*2+g} L ${x-d*u*2-k} ${_-b*u*2-g} Z`,M=f.roughSvg.path(B,{roughness:1,seed:f.seed,fill:f.lineColor,fillStyle:"solid",stroke:f.lineColor,strokeWidth:1});e.append(()=>M)},"drawArrowMarker"),Bt=r((e,h,o,a,l,f,p,d)=>{let b=h.children??[],u=f*(b.length?1:.2),k=-mt*u,g=gt*u*l,x=o+k,_=a+g;if(F(e,o,a,x,_,"ishikawa-branch",d),d&&it(e,o,a,o-x,a-_,d),Ct(e,h.text,x,_,l,p,d),!b.length)return;let{entries:B,yOrder:M}=Tt(b,l),$=B.length,N=new Array($);for(let[y,s]of M.entries())N[s]=a+g*((y+1)/($+1));let t=new Map;t.set(-1,{x0:o,y0:a,x1:x,y1:_,childCount:b.length,childrenDrawn:0});let n=-mt,i=gt*l,c=l<0?"ishikawa-label up":"ishikawa-label down";for(let[y,s]of B.entries()){let S=N[y],w=t.get(s.parentIndex),A=e.append("g").attr("class","ishikawa-sub-group"),v=0,E=0,D=0;if(s.depth%2===0){let P=w.y1-w.y0;v=wt(w.x0,w.x1,P?(S-w.y0)/P:.5),E=S,D=v-(s.childCount>0?At+s.childCount*Dt:$t),F(A,v,S,D,S,"ishikawa-sub-branch",d),d&&it(A,v,S,1,0,d),X(A,s.text,D,S,"ishikawa-label align","end",p)}else{let P=w.childrenDrawn++;v=wt(w.x0,w.x1,(w.childCount-P)/(w.childCount+1)),E=w.y0,D=v+n*((S-E)/i),F(A,v,E,D,S,"ishikawa-sub-branch",d),d&&it(A,v,E,v-D,E-S,d),X(A,s.text,D,S,c,"end",p)}s.childCount>0&&t.set(y,{x0:v,y0:E,x1:D,y1:S,childCount:s.childCount,childrenDrawn:0})}},"drawBranch"),Mt=r(e=>e.split(/|\n/),"splitLines"),_t=r((e,h)=>{if(e.length<=h)return e;let o=[];for(let a of e.split(/\s+/)){let l=o.length-1;l>=0&&o[l].length+1+a.length<=h?o[l]+=" "+a:o.push(a)}return o.join(` +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:r(function(){var n=this.next();return n||this.lex()},"lex"),begin:r(function(n){this.conditionStack.push(n)},"begin"),popState:r(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:r(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:r(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:r(function(n){this.begin(n)},"pushState"),stateStackSize:r(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:r(function(n,i,c,y){var s=y;switch(c){case 0:return 6;case 1:return 8;case 2:return 8;case 3:return 6;case 4:return 7;case 5:return 13;case 6:return 14;case 7:return 11}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:ishikawa-beta\b)/i,/^(?:ishikawa\b)/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:[^\n]+)/i,/^(?:$)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return N})();B.lexer=M;function $(){this.yy={}}return r($,"Parser"),$.prototype=B,B.Parser=$,new $})();et.parser=et;var yt=et;var Z=class{constructor(){this.stack=[];this.clear=this.clear.bind(this),this.addNode=this.addNode.bind(this),this.getRoot=this.getRoot.bind(this)}static{r(this,"IshikawaDB")}clear(){this.root=void 0,this.stack=[],this.baseLevel=void 0,at()}getRoot(){return this.root}addNode(h,o){let a=st.sanitizeText(o,U());if(!this.root){this.root={text:a,children:[]},this.stack=[{level:0,node:this.root}],tt(a);return}this.baseLevel??=h;let l=h-this.baseLevel+1;for(l<=0&&(l=1);this.stack.length>1&&this.stack[this.stack.length-1].level>=l;)this.stack.pop();let f=this.stack[this.stack.length-1].node,p={text:a,children:[]};f.children.push(p),this.stack.push({level:l,node:p})}getAccTitle(){return lt()}setAccTitle(h){ot(h)}getAccDescription(){return ct()}setAccDescription(h){ht(h)}getDiagramTitle(){return ut()}setDiagramTitle(h){tt(h)}};var Et=14,W=250,$t=30,At=60,Dt=5,xt=82*Math.PI/180,mt=Math.cos(xt),gt=Math.sin(xt),kt=r((e,h,o)=>{let a=e.node().getBBox(),l=a.width+h*2,f=a.height+h*2;rt(e,f,l,o),e.attr("viewBox",`${a.x-h} ${a.y-h} ${l} ${f}`)},"applyPaddedViewBox"),Lt=r((e,h,o,a)=>{let f=a.db.getRoot();if(!f)return;let p=U(),{look:d,handDrawnSeed:b,themeVariables:u}=p,k=dt(p.fontSize)[0]??Et,g=d==="handDrawn",x=f.children??[],_=p.ishikawa?.diagramPadding??20,B=p.ishikawa?.useMaxWidth??!1,M=pt(h),$=M.append("g").attr("class","ishikawa"),N=g?ft.svg(M.node()):void 0,t=N?{roughSvg:N,seed:b??0,lineColor:u?.lineColor??"#333",fillColor:u?.mainBkg??"#fff"}:void 0,n=`ishikawa-arrow-${h}`;g||$.append("defs").append("marker").attr("id",n).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 Z").attr("class","ishikawa-arrow");let i=0,c=W,y=g?void 0:F($,i,c,i,c,"ishikawa-spine");if(Nt($,i,c,f.text,k,t),!x.length){g&&F($,i,c,i,c,"ishikawa-spine",t),kt(M,_,B);return}i-=20;let s=x.filter((m,I)=>I%2===0),S=x.filter((m,I)=>I%2===1),w=bt(s),A=bt(S),v=w.total+A.total,E=W,D=W;if(v>0){let m=W*2,I=W*.3;E=Math.max(I,m*(w.total/v)),D=Math.max(I,m*(A.total/v))}let P=k*2;E=Math.max(E,w.max*P),D=Math.max(D,A.max*P),c=Math.max(E,W),y&&y.attr("y1",c).attr("y2",c),$.select(".ishikawa-head-group").attr("transform",`translate(0,${c})`);let Y=Math.ceil(x.length/2);for(let m=0;mMath.min(G,R.getBBox().x),1/0)}if(g)F($,i,c,0,c,"ishikawa-spine",t);else{y.attr("x1",i);let m=`url(#${n})`;$.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start",m)}kt(M,_,B)},"draw"),bt=r(e=>{let h=r(o=>o.children.reduce((a,l)=>a+1+h(l),0),"countDescendants");return e.reduce((o,a)=>{let l=h(a);return o.total+=l,o.max=Math.max(o.max,l),o},{total:0,max:0})},"sideStats"),Nt=r((e,h,o,a,l,f)=>{let p=Math.max(6,Math.floor(110/(l*.6))),d=e.append("g").attr("class","ishikawa-head-group").attr("transform",`translate(${h},${o})`),b=X(d,_t(a,p),0,0,"ishikawa-head-label","start",l),u=b.node().getBBox(),k=Math.max(60,u.width+6),g=Math.max(40,u.height*2+40),x=`M 0 ${-g/2} L 0 ${g/2} Q ${k*2.4} 0 0 ${-g/2} Z`;if(f){let _=f.roughSvg.path(x,{roughness:1.5,seed:f.seed,fill:f.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:f.lineColor,strokeWidth:2});d.insert(()=>_,":first-child").attr("class","ishikawa-head")}else d.insert("path",":first-child").attr("class","ishikawa-head").attr("d",x);b.attr("transform",`translate(${(k-u.width)/2-u.x+3},${-u.y-u.height/2})`)},"drawHead"),Tt=r((e,h)=>{let o=[],a=[],l=r((f,p,d)=>{let b=h===-1?[...f].reverse():f;for(let u of b){let k=o.length,g=u.children??[];o.push({depth:d,text:_t(u.text,15),parentIndex:p,childCount:g.length}),d%2===0?(a.push(k),g.length&&l(g,k,d+1)):(g.length&&l(g,k,d+1),a.push(k))}},"walk");return l(e,-1,2),{entries:o,yOrder:a}},"flattenTree"),Ct=r((e,h,o,a,l,f,p)=>{let d=e.append("g").attr("class","ishikawa-label-group"),u=X(d,h,o,a+11*l,"ishikawa-label cause","middle",f).node().getBBox();if(p){let k=p.roughSvg.rectangle(u.x-20,u.y-2,u.width+40,u.height+4,{roughness:1.5,seed:p.seed,fill:p.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:p.lineColor,strokeWidth:2});d.insert(()=>k,":first-child").attr("class","ishikawa-label-box")}else d.insert("rect",":first-child").attr("class","ishikawa-label-box").attr("x",u.x-20).attr("y",u.y-2).attr("width",u.width+40).attr("height",u.height+4)},"drawCauseLabel"),it=r((e,h,o,a,l,f)=>{let p=Math.sqrt(a*a+l*l);if(p===0)return;let d=a/p,b=l/p,u=6,k=-b*u,g=d*u,x=h,_=o,B=`M ${x} ${_} L ${x-d*u*2+k} ${_-b*u*2+g} L ${x-d*u*2-k} ${_-b*u*2-g} Z`,M=f.roughSvg.path(B,{roughness:1,seed:f.seed,fill:f.lineColor,fillStyle:"solid",stroke:f.lineColor,strokeWidth:1});e.append(()=>M)},"drawArrowMarker"),Bt=r((e,h,o,a,l,f,p,d)=>{let b=h.children??[],u=f*(b.length?1:.2),k=-mt*u,g=gt*u*l,x=o+k,_=a+g;if(F(e,o,a,x,_,"ishikawa-branch",d),d&&it(e,o,a,o-x,a-_,d),Ct(e,h.text,x,_,l,p,d),!b.length)return;let{entries:B,yOrder:M}=Tt(b,l),$=B.length,N=new Array($);for(let[y,s]of M.entries())N[s]=a+g*((y+1)/($+1));let t=new Map;t.set(-1,{x0:o,y0:a,x1:x,y1:_,childCount:b.length,childrenDrawn:0});let n=-mt,i=gt*l,c=l<0?"ishikawa-label up":"ishikawa-label down";for(let[y,s]of B.entries()){let S=N[y],w=t.get(s.parentIndex),A=e.append("g").attr("class","ishikawa-sub-group"),v=0,E=0,D=0;if(s.depth%2===0){let P=w.y1-w.y0;v=wt(w.x0,w.x1,P?(S-w.y0)/P:.5),E=S,D=v-(s.childCount>0?At+s.childCount*Dt:$t),F(A,v,S,D,S,"ishikawa-sub-branch",d),d&&it(A,v,S,1,0,d),X(A,s.text,D,S,"ishikawa-label align","end",p)}else{let P=w.childrenDrawn++;v=wt(w.x0,w.x1,(w.childCount-P)/(w.childCount+1)),E=w.y0,D=v+n*((S-E)/i),F(A,v,E,D,S,"ishikawa-sub-branch",d),d&&it(A,v,E,v-D,E-S,d),X(A,s.text,D,S,c,"end",p)}s.childCount>0&&t.set(y,{x0:v,y0:E,x1:D,y1:S,childCount:s.childCount,childrenDrawn:0})}},"drawBranch"),Mt=r(e=>e.split(/|\n/),"splitLines"),_t=r((e,h)=>{if(e.length<=h)return e;let o=[];for(let a of e.split(/\s+/)){let l=o.length-1;l>=0&&o[l].length+1+a.length<=h?o[l]+=" "+a:o.push(a)}return o.join(` `)},"wrapText"),X=r((e,h,o,a,l,f,p)=>{let d=Mt(h),b=p*1.05,u=e.append("text").attr("class",l).attr("text-anchor",f).attr("x",o).attr("y",a-(d.length-1)*b/2);for(let[k,g]of d.entries())u.append("tspan").attr("x",o).attr("dy",k===0?0:b).text(g);return u},"drawMultilineText"),wt=r((e,h,o)=>e+(h-e)*o,"lerp"),F=r((e,h,o,a,l,f,p)=>{if(p){let d=p.roughSvg.line(h,o,a,l,{roughness:1.5,seed:p.seed,stroke:p.lineColor,strokeWidth:2});e.append(()=>d).attr("class",f);return}return e.append("line").attr("class",f).attr("x1",h).attr("y1",o).attr("x2",a).attr("y2",l)},"drawLine"),St={draw:Lt};var Pt=r(e=>` .ishikawa .ishikawa-spine, .ishikawa .ishikawa-branch, diff --git a/assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-LCPTV24A.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-BNXS4ZKH.mjs.map similarity index 72% rename from assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-LCPTV24A.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-BNXS4ZKH.mjs.map index ba0bf28..d575129 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-LCPTV24A.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-BNXS4ZKH.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/ishikawa/parser/ishikawa.jison", "../../../src/diagrams/ishikawa/ishikawaDb.ts", "../../../src/diagrams/ishikawa/ishikawaRenderer.ts", "../../../src/diagrams/ishikawa/ishikawaStyles.ts", "../../../src/diagrams/ishikawa/ishikawaDiagram.ts"], - "sourcesContent": ["/* 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,14],$V2=[1,12],$V3=[1,13],$V4=[6,7,8],$V5=[1,20],$V6=[1,18],$V7=[1,19],$V8=[6,7,11],$V9=[1,6,13,14],$Va=[1,23],$Vb=[1,24],$Vc=[1,6,7,11,13,14];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ishikawa\":4,\"spaceLines\":5,\"SPACELINE\":6,\"NL\":7,\"ISHIKAWA\":8,\"document\":9,\"stop\":10,\"EOF\":11,\"statement\":12,\"SPACELIST\":13,\"TEXT\":14,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"SPACELINE\",7:\"NL\",8:\"ISHIKAWA\",11:\"EOF\",13:\"SPACELIST\",14:\"TEXT\"},\nproductions_: [0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,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: case 7:\n return yy; \nbreak;\ncase 15:\n yy.addNode($$[$0-1].length, $$[$0].trim()); \nbreak;\ncase 16:\n yy.addNode(0, $$[$0].trim()); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],8:$V0},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:$V0},{6:$V1,7:[1,10],9:9,12:11,13:$V2,14:$V3},o($V4,[2,3]),{1:[2,2]},o($V4,[2,4]),o($V4,[2,5]),{1:[2,6],6:$V1,12:15,13:$V2,14:$V3},{6:$V1,9:16,12:11,13:$V2,14:$V3},{6:$V5,7:$V6,10:17,11:$V7},o($V8,[2,18],{14:[1,21]}),o($V8,[2,16]),o($V8,[2,17]),{6:$V5,7:$V6,10:22,11:$V7},{1:[2,7],6:$V1,12:15,13:$V2,14:$V3},o($V9,[2,14],{7:$Va,11:$Vb}),o($Vc,[2,8]),o($Vc,[2,9]),o($Vc,[2,10]),o($V8,[2,15]),o($V9,[2,13],{7:$Va,11:$Vb}),o($Vc,[2,11]),o($Vc,[2,12])],\ndefaultActions: {2:[2,1],6:[2,2]},\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\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 6; \nbreak;\ncase 1: return 8; \nbreak;\ncase 2: return 8; \nbreak;\ncase 3: return 6; \nbreak;\ncase 4: return 7; \nbreak;\ncase 5: return 13; \nbreak;\ncase 6: return 14; \nbreak;\ncase 7:return 11;\nbreak;\n}\n},\nrules: [/^(?:\\s*%%.*)/i,/^(?:ishikawa-beta\\b)/i,/^(?:ishikawa\\b)/i,/^(?:[\\s]+[\\n])/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:[^\\n]+)/i,/^(?:$)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport common from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { IshikawaNode } from './ishikawaTypes.js';\n\ninterface StackEntry {\n level: number;\n node: IshikawaNode;\n}\n\nexport class IshikawaDB implements DiagramDB {\n private root?: IshikawaNode;\n private stack: StackEntry[] = [];\n private baseLevel?: number;\n\n constructor() {\n this.clear = this.clear.bind(this);\n this.addNode = this.addNode.bind(this);\n this.getRoot = this.getRoot.bind(this);\n }\n\n clear(): void {\n this.root = undefined;\n this.stack = [];\n this.baseLevel = undefined;\n commonClear();\n }\n\n getRoot(): IshikawaNode | undefined {\n return this.root;\n }\n\n addNode(rawLevel: number, text: string): void {\n const label = common.sanitizeText(text, getConfig());\n\n if (!this.root) {\n this.baseLevel = rawLevel;\n this.root = { text: label, children: [] };\n this.stack = [{ level: 0, node: this.root }];\n setDiagramTitle(label);\n return;\n }\n\n let level = rawLevel - (this.baseLevel ?? 0);\n if (level <= 0) {\n level = 1;\n }\n\n // Pop stack until the top has a strictly lower level (= parent)\n while (this.stack.length > 1 && this.stack[this.stack.length - 1].level >= level) {\n this.stack.pop();\n }\n\n const parent = this.stack[this.stack.length - 1].node;\n const node: IshikawaNode = { text: label, children: [] };\n parent.children.push(node);\n this.stack.push({ level, node });\n }\n\n getAccTitle(): string {\n return getAccTitle();\n }\n\n setAccTitle(title: string): void {\n setAccTitle(title);\n }\n\n getAccDescription(): string {\n return getAccDescription();\n }\n\n setAccDescription(description: string): void {\n setAccDescription(description);\n }\n\n getDiagramTitle(): string {\n return getDiagramTitle();\n }\n\n setDiagramTitle(title: string): void {\n setDiagramTitle(title);\n }\n}\n", "// cspell:ignore lerp\nimport type { Diagram } from '../../Diagram.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramRenderer, DrawDefinition, SVG, SVGGroup } from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport { parseFontSize } from '../../utils.js';\nimport type { IshikawaDB } from './ishikawaDb.js';\nimport type { IshikawaNode } from './ishikawaTypes.js';\nimport rough from 'roughjs';\n\ninterface RoughContext {\n roughSvg: ReturnType;\n seed: number;\n lineColor: string;\n fillColor: string;\n}\n\nconst FONT_SIZE_DEFAULT = 14;\nconst SPINE_BASE_LENGTH = 250;\nconst BONE_STUB = 30;\nconst BONE_BASE = 60;\nconst BONE_PER_CHILD = 5;\nconst ANGLE = (82 * Math.PI) / 180;\nconst COS_A = Math.cos(ANGLE);\nconst SIN_A = Math.sin(ANGLE);\n\nconst applyPaddedViewBox = (svgEl: SVG, pad: number, maxW: boolean) => {\n const bbox = svgEl.node()!.getBBox();\n const w = bbox.width + pad * 2;\n const h = bbox.height + pad * 2;\n configureSvgSize(svgEl, h, w, maxW);\n svgEl.attr('viewBox', `${bbox.x - pad} ${bbox.y - pad} ${w} ${h}`);\n};\n\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n const db = diagram.db as IshikawaDB;\n const root = db.getRoot();\n if (!root) {\n return;\n }\n\n const drawConfig = getConfig();\n const { look, handDrawnSeed, themeVariables } = drawConfig;\n const fontSize = parseFontSize(drawConfig.fontSize)[0] ?? FONT_SIZE_DEFAULT;\n const isHandDrawn = look === 'handDrawn';\n\n const causes = root.children ?? [];\n const padding = drawConfig.ishikawa?.diagramPadding ?? 20;\n const useMaxWidth = drawConfig.ishikawa?.useMaxWidth ?? false;\n const svg = selectSvgElement(id);\n const g = svg.append('g').attr('class', 'ishikawa');\n\n const roughSvg = isHandDrawn ? rough.svg(svg.node()!) : undefined;\n const roughContext: RoughContext | undefined = roughSvg\n ? {\n roughSvg,\n seed: handDrawnSeed ?? 0,\n lineColor: themeVariables?.lineColor ?? '#333',\n fillColor: themeVariables?.mainBkg ?? '#fff',\n }\n : undefined;\n\n const markerId = `ishikawa-arrow-${id}`;\n if (!isHandDrawn) {\n g.append('defs')\n .append('marker')\n .attr('id', markerId)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerWidth', 6)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 10 0 L 0 5 L 10 10 Z')\n .attr('class', 'ishikawa-arrow');\n }\n\n let spineX = 0;\n let spineY = SPINE_BASE_LENGTH;\n\n // For handDrawn, defer spine drawing until coordinates are final\n const spineLine = isHandDrawn\n ? undefined\n : drawLine(g, spineX, spineY, spineX, spineY, 'ishikawa-spine');\n drawHead(g, spineX, spineY, root.text, fontSize, roughContext);\n\n if (!causes.length) {\n if (isHandDrawn) {\n drawLine(g, spineX, spineY, spineX, spineY, 'ishikawa-spine', roughContext);\n }\n applyPaddedViewBox(svg, padding, useMaxWidth);\n return;\n }\n\n spineX -= 20;\n\n const upperCauses = causes.filter((_, i) => i % 2 === 0);\n const lowerCauses = causes.filter((_, i) => i % 2 === 1);\n\n const upperStats = sideStats(upperCauses);\n const lowerStats = sideStats(lowerCauses);\n const descendantTotal = upperStats.total + lowerStats.total;\n\n let upperLen = SPINE_BASE_LENGTH;\n let lowerLen = SPINE_BASE_LENGTH;\n if (descendantTotal > 0) {\n const pool = SPINE_BASE_LENGTH * 2;\n const minLen = SPINE_BASE_LENGTH * 0.3;\n upperLen = Math.max(minLen, pool * (upperStats.total / descendantTotal));\n lowerLen = Math.max(minLen, pool * (lowerStats.total / descendantTotal));\n }\n\n const minSpacing = fontSize * 2;\n upperLen = Math.max(upperLen, upperStats.max * minSpacing);\n lowerLen = Math.max(lowerLen, lowerStats.max * minSpacing);\n\n spineY = Math.max(upperLen, SPINE_BASE_LENGTH);\n if (spineLine) {\n spineLine.attr('y1', spineY).attr('y2', spineY);\n }\n g.select('.ishikawa-head-group').attr('transform', `translate(0,${spineY})`);\n\n const pairCount = Math.ceil(causes.length / 2);\n for (let p = 0; p < pairCount; p++) {\n const pg = g.append('g').attr('class', 'ishikawa-pair');\n for (const [cause, dir, len] of [\n [causes[p * 2], -1, upperLen] as const,\n [causes[p * 2 + 1], 1, lowerLen] as const,\n ]) {\n if (cause) {\n drawBranch(pg, cause, spineX, spineY, dir, len, fontSize, roughContext);\n }\n }\n spineX = pg\n .selectAll('text')\n .nodes()\n .reduce((left, n) => Math.min(left, (n as SVGGraphicsElement).getBBox().x), Infinity);\n }\n\n if (isHandDrawn) {\n drawLine(g, spineX, spineY, 0, spineY, 'ishikawa-spine', roughContext);\n } else {\n spineLine!.attr('x1', spineX);\n const markerUrl = `url(#${markerId})`;\n g.selectAll('line.ishikawa-branch, line.ishikawa-sub-branch').attr('marker-start', markerUrl);\n }\n applyPaddedViewBox(svg, padding, useMaxWidth);\n};\n\nconst sideStats = (nodes: IshikawaNode[]) => {\n const countDescendants = (node: IshikawaNode): number =>\n node.children.reduce((sum, child) => sum + 1 + countDescendants(child), 0);\n\n return nodes.reduce(\n (stats, node) => {\n const descendants = countDescendants(node);\n stats.total += descendants;\n stats.max = Math.max(stats.max, descendants);\n return stats;\n },\n { total: 0, max: 0 }\n );\n};\n\nconst drawHead = (\n svg: SVGGroup,\n x: number,\n y: number,\n label: string,\n fontSize: number,\n roughContext?: RoughContext\n): void => {\n const maxChars = Math.max(6, Math.floor(110 / (fontSize * 0.6)));\n const headGroup = svg\n .append('g')\n .attr('class', 'ishikawa-head-group')\n .attr('transform', `translate(${x},${y})`);\n\n const textEl = drawMultilineText(\n headGroup,\n wrapText(label, maxChars),\n 0,\n 0,\n 'ishikawa-head-label',\n 'start',\n fontSize\n );\n const tb = textEl.node()!.getBBox();\n const w = Math.max(60, tb.width + 6);\n const h = Math.max(40, tb.height * 2 + 40);\n\n const headPath = `M 0 ${-h / 2} L 0 ${h / 2} Q ${w * 2.4} 0 0 ${-h / 2} Z`;\n if (roughContext) {\n const roughNode = roughContext.roughSvg.path(headPath, {\n roughness: 1.5,\n seed: roughContext.seed,\n fill: roughContext.fillColor,\n fillStyle: 'hachure',\n fillWeight: 2.5,\n hachureGap: 5,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n });\n headGroup.insert(() => roughNode, ':first-child').attr('class', 'ishikawa-head');\n } else {\n headGroup.insert('path', ':first-child').attr('class', 'ishikawa-head').attr('d', headPath);\n }\n textEl.attr('transform', `translate(${(w - tb.width) / 2 - tb.x + 3},${-tb.y - tb.height / 2})`);\n};\n\ninterface LabelEntry {\n text: string;\n depth: number;\n parentIndex: number;\n childCount: number;\n}\n\ninterface BoneInfo {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n childCount: number;\n childrenDrawn: number;\n}\n\n// Flatten children so we can assign Y positions without recursion when drawing.\n// Even depths are placed in pre-order (close to the spine), odd depths in post-order\n// to keep diagonal bones within their parent wedge.\nconst flattenTree = (children: IshikawaNode[], direction: 1 | -1) => {\n const entries: LabelEntry[] = [];\n const yOrder: number[] = [];\n const walk = (nodes: IshikawaNode[], pid: number, depth: number) => {\n const ordered = direction === -1 ? [...nodes].reverse() : nodes;\n for (const child of ordered) {\n const idx = entries.length;\n const gc = child.children ?? [];\n entries.push({\n depth,\n text: wrapText(child.text, 15),\n parentIndex: pid,\n childCount: gc.length,\n });\n if (depth % 2 === 0) {\n // Even-depth: pre-order (closer to spine)\n yOrder.push(idx);\n if (gc.length) {\n walk(gc, idx, depth + 1);\n }\n } else {\n // odd-depth: post-order (within parent diagonal)\n if (gc.length) {\n walk(gc, idx, depth + 1);\n }\n yOrder.push(idx);\n }\n }\n };\n walk(children, -1, 2);\n return { entries, yOrder };\n};\n\nconst drawCauseLabel = (\n svg: SVGGroup,\n text: string,\n x: number,\n y: number,\n direction: 1 | -1,\n fontSize: number,\n roughContext?: RoughContext\n) => {\n const lg = svg.append('g').attr('class', 'ishikawa-label-group');\n const lt = drawMultilineText(\n lg,\n text,\n x,\n y + 11 * direction,\n 'ishikawa-label cause',\n 'middle',\n fontSize\n );\n const tb = lt.node()!.getBBox();\n if (roughContext) {\n const roughNode = roughContext.roughSvg.rectangle(\n tb.x - 20,\n tb.y - 2,\n tb.width + 40,\n tb.height + 4,\n {\n roughness: 1.5,\n seed: roughContext.seed,\n fill: roughContext.fillColor,\n fillStyle: 'hachure',\n fillWeight: 2.5,\n hachureGap: 5,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n }\n );\n lg.insert(() => roughNode, ':first-child').attr('class', 'ishikawa-label-box');\n } else {\n lg.insert('rect', ':first-child')\n .attr('class', 'ishikawa-label-box')\n .attr('x', tb.x - 20)\n .attr('y', tb.y - 2)\n .attr('width', tb.width + 40)\n .attr('height', tb.height + 4);\n }\n};\n\n// Emulate arrow marker since rough.js does not support marker on line\nconst drawArrowMarker = (\n g: SVGGroup,\n x: number,\n y: number,\n dx: number,\n dy: number,\n roughContext: RoughContext\n) => {\n const len = Math.sqrt(dx * dx + dy * dy);\n if (len === 0) {\n return;\n }\n const ux = dx / len;\n const uy = dy / len;\n const s = 6;\n const px = -uy * s;\n const py = ux * s;\n const tipX = x;\n const tipY = y;\n const d = `M ${tipX} ${tipY} L ${tipX - ux * s * 2 + px} ${tipY - uy * s * 2 + py} L ${tipX - ux * s * 2 - px} ${tipY - uy * s * 2 - py} Z`;\n const roughNode = roughContext.roughSvg.path(d, {\n roughness: 1,\n seed: roughContext.seed,\n fill: roughContext.lineColor,\n fillStyle: 'solid',\n stroke: roughContext.lineColor,\n strokeWidth: 1,\n });\n g.append(() => roughNode);\n};\n\nconst drawBranch = (\n svg: SVGGroup,\n node: IshikawaNode,\n startX: number,\n startY: number,\n direction: 1 | -1,\n length: number,\n fontSize: number,\n roughContext?: RoughContext\n): void => {\n const children = node.children ?? [];\n const lineLen = length * (children.length ? 1 : 0.2);\n const dx = -COS_A * lineLen;\n const dy = SIN_A * lineLen * direction;\n const endX = startX + dx;\n const endY = startY + dy;\n\n drawLine(svg, startX, startY, endX, endY, 'ishikawa-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(svg, startX, startY, startX - endX, startY - endY, roughContext);\n }\n drawCauseLabel(svg, node.text, endX, endY, direction, fontSize, roughContext);\n\n if (!children.length) {\n return;\n }\n\n const { entries, yOrder } = flattenTree(children, direction);\n const entryCount = entries.length;\n const ys = new Array(entryCount);\n for (const [slot, entryIdx] of yOrder.entries()) {\n ys[entryIdx] = startY + dy * ((slot + 1) / (entryCount + 1));\n }\n\n const bones = new Map();\n bones.set(-1, {\n x0: startX,\n y0: startY,\n x1: endX,\n y1: endY,\n childCount: children.length,\n childrenDrawn: 0,\n });\n\n const diagonalX = -COS_A;\n const diagonalY = SIN_A * direction;\n const oddLabel = direction < 0 ? 'ishikawa-label up' : 'ishikawa-label down';\n\n for (const [i, e] of entries.entries()) {\n const y = ys[i];\n const par = bones.get(e.parentIndex)!;\n const grp = svg.append('g').attr('class', 'ishikawa-sub-group');\n\n let bx0 = 0;\n let by0 = 0;\n let bx1 = 0;\n\n if (e.depth % 2 === 0) {\n // Horizontal bone: attach to parent's diagonal at the target Y, extend left\n const dyP = par.y1 - par.y0;\n bx0 = lerp(par.x0, par.x1, dyP ? (y - par.y0) / dyP : 0.5);\n by0 = y;\n bx1 = bx0 - (e.childCount > 0 ? BONE_BASE + e.childCount * BONE_PER_CHILD : BONE_STUB);\n drawLine(grp, bx0, y, bx1, y, 'ishikawa-sub-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(grp, bx0, y, 1, 0, roughContext);\n }\n drawMultilineText(grp, e.text, bx1, y, 'ishikawa-label align', 'end', fontSize);\n } else {\n // Diagonal bone: start from evenly-spaced point on parent's horizontal, angle toward target Y\n const k = par.childrenDrawn++;\n bx0 = lerp(par.x0, par.x1, (par.childCount - k) / (par.childCount + 1));\n by0 = par.y0;\n bx1 = bx0 + diagonalX * ((y - by0) / diagonalY);\n drawLine(grp, bx0, by0, bx1, y, 'ishikawa-sub-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(grp, bx0, by0, bx0 - bx1, by0 - y, roughContext);\n }\n drawMultilineText(grp, e.text, bx1, y, oddLabel, 'end', fontSize);\n }\n\n if (e.childCount > 0) {\n bones.set(i, {\n x0: bx0,\n y0: by0,\n x1: bx1,\n y1: y,\n childCount: e.childCount,\n childrenDrawn: 0,\n });\n }\n }\n};\n\nconst splitLines = (text: string): string[] => text.split(/|\\n/);\n\nconst wrapText = (text: string, maxChars: number): string => {\n if (text.length <= maxChars) {\n return text;\n }\n const lines: string[] = [];\n for (const word of text.split(/\\s+/)) {\n const last = lines.length - 1;\n if (last >= 0 && lines[last].length + 1 + word.length <= maxChars) {\n lines[last] += ' ' + word;\n } else {\n lines.push(word);\n }\n }\n return lines.join('\\n');\n};\n\nconst drawMultilineText = (\n g: SVGGroup,\n text: string,\n x: number,\n y: number,\n cls: string,\n anchor: 'middle' | 'start' | 'end',\n fontSize: number\n) => {\n const lines = splitLines(text);\n const lh = fontSize * 1.05;\n const el = g\n .append('text')\n .attr('class', cls)\n .attr('text-anchor', anchor)\n .attr('x', x)\n .attr('y', y - ((lines.length - 1) * lh) / 2);\n for (const [i, line] of lines.entries()) {\n el.append('tspan')\n .attr('x', x)\n .attr('dy', i === 0 ? 0 : lh)\n .text(line);\n }\n return el;\n};\n\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\n\nconst drawLine = (\n g: SVGGroup,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n cls: string,\n roughContext?: RoughContext\n) => {\n if (roughContext) {\n const roughNode = roughContext.roughSvg.line(x1, y1, x2, y2, {\n roughness: 1.5,\n seed: roughContext.seed,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n });\n g.append(() => roughNode).attr('class', cls);\n return undefined;\n }\n return g\n .append('line')\n .attr('class', cls)\n .attr('x1', x1)\n .attr('y1', y1)\n .attr('x2', x2)\n .attr('y2', y2);\n};\n\nexport const renderer: DiagramRenderer = { draw };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\n\nconst getStyles: DiagramStylesProvider = (options) => `\n.ishikawa .ishikawa-spine,\n.ishikawa .ishikawa-branch,\n.ishikawa .ishikawa-sub-branch {\n stroke: ${options.lineColor};\n stroke-width: 2;\n fill: none;\n}\n\n.ishikawa .ishikawa-sub-branch {\n stroke-width: 1;\n}\n\n.ishikawa .ishikawa-arrow {\n fill: ${options.lineColor};\n}\n\n.ishikawa .ishikawa-head {\n fill: ${options.mainBkg};\n stroke: ${options.lineColor};\n stroke-width: 2;\n}\n\n.ishikawa .ishikawa-label-box {\n fill: ${options.mainBkg};\n stroke: ${options.lineColor};\n stroke-width: 2;\n}\n\n.ishikawa text {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor};\n}\n\n.ishikawa .ishikawa-head-label {\n font-weight: 600;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: 14px;\n}\n\n.ishikawa .ishikawa-label {\n text-anchor: end;\n}\n\n.ishikawa .ishikawa-label.cause {\n text-anchor: middle;\n dominant-baseline: middle;\n}\n\n.ishikawa .ishikawa-label.align {\n text-anchor: end;\n dominant-baseline: middle;\n}\n\n.ishikawa .ishikawa-label.up {\n dominant-baseline: baseline;\n}\n\n.ishikawa .ishikawa-label.down {\n dominant-baseline: hanging;\n}\n`;\n\nexport default getStyles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/ishikawa.jison';\nimport { IshikawaDB } from './ishikawaDb.js';\nimport { renderer } from './ishikawaRenderer.js';\nimport styles from './ishikawaStyles.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new IshikawaDB();\n },\n renderer,\n styles,\n};\n"], - "mappings": "+WAyEA,IAAIA,IAAU,UAAU,CACxB,IAAIC,EAAEC,EAAA,SAASC,EAAEC,EAAEH,EAAEI,EAAE,CAAC,IAAIJ,EAAEA,GAAG,CAAC,EAAEI,EAAEF,EAAE,OAAOE,IAAIJ,EAAEE,EAAEE,CAAC,CAAC,EAAED,EAAE,CAAC,OAAOH,CAAC,EAAhE,KAAkEK,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAClOlB,EAAS,CAAC,MAAOE,EAAA,UAAkB,CAAE,EAApB,SACrB,GAAI,CAAC,EACL,SAAU,CAAC,MAAQ,EAAE,MAAQ,EAAE,SAAW,EAAE,WAAa,EAAE,UAAY,EAAE,GAAK,EAAE,SAAW,EAAE,SAAW,EAAE,KAAO,GAAG,IAAM,GAAG,UAAY,GAAG,UAAY,GAAG,KAAO,GAAG,QAAU,EAAE,KAAO,CAAC,EACzL,WAAY,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,EAC1F,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EACrI,cAAeA,EAAA,SAAmBiB,EAAQC,EAAQC,EAAUC,EAAIC,EAAyBC,EAAiBC,EAAiB,CAG3H,IAAIC,EAAKF,EAAG,OAAS,EACrB,OAAQD,EAAS,CACjB,IAAK,GAAG,IAAK,GACZ,OAAOD,EAER,IAAK,IACJA,EAAG,QAAQE,EAAGE,EAAG,CAAC,EAAE,OAAQF,EAAGE,CAAE,EAAE,KAAK,CAAC,EAC1C,MACA,IAAK,IACJJ,EAAG,QAAQ,EAAGE,EAAGE,CAAE,EAAE,KAAK,CAAC,EAC5B,KACA,CACA,EAfe,aAgBf,MAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEpB,CAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEA,CAAG,EAAE,CAAC,EAAEC,EAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAER,EAAES,EAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAET,EAAES,EAAI,CAAC,EAAE,CAAC,CAAC,EAAET,EAAES,EAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEH,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,EAAEF,EAAI,EAAE,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,EAAEE,EAAI,EAAEC,EAAI,GAAG,GAAG,GAAGC,CAAG,EAAEZ,EAAEa,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEb,EAAEa,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEb,EAAEa,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEH,EAAI,EAAEC,EAAI,GAAG,GAAG,GAAGC,CAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEN,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAER,EAAEc,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEC,EAAI,GAAGC,CAAG,CAAC,EAAEhB,EAAEiB,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEjB,EAAEiB,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEjB,EAAEiB,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEjB,EAAEa,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEb,EAAEc,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEC,EAAI,GAAGC,CAAG,CAAC,EAAEhB,EAAEiB,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEjB,EAAEiB,EAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAC5gB,eAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAChC,WAAYhB,EAAA,SAAqByB,EAAKC,EAAM,CACxC,GAAIA,EAAK,YACL,KAAK,MAAMD,CAAG,MACX,CACH,IAAIE,EAAQ,IAAI,MAAMF,CAAG,EACzB,MAAAE,EAAM,KAAOD,EACPC,CACV,CACJ,EARY,cASZ,MAAO3B,EAAA,SAAe4B,EAAO,CACzB,IAAIC,EAAO,KAAMC,EAAQ,CAAC,CAAC,EAAGC,EAAS,CAAC,EAAGC,EAAS,CAAC,IAAI,EAAGC,EAAS,CAAC,EAAGC,EAAQ,KAAK,MAAOjB,EAAS,GAAIE,EAAW,EAAGD,EAAS,EAAGiB,EAAa,EAAGC,EAAS,EAAGC,EAAM,EAClKC,EAAOL,EAAO,MAAM,KAAK,UAAW,CAAC,EACrCM,EAAQ,OAAO,OAAO,KAAK,KAAK,EAChCC,EAAc,CAAE,GAAI,CAAC,CAAE,EAC3B,QAASvC,KAAK,KAAK,GACX,OAAO,UAAU,eAAe,KAAK,KAAK,GAAIA,CAAC,IAC/CuC,EAAY,GAAGvC,CAAC,EAAI,KAAK,GAAGA,CAAC,GAGrCsC,EAAM,SAASX,EAAOY,EAAY,EAAE,EACpCA,EAAY,GAAG,MAAQD,EACvBC,EAAY,GAAG,OAAS,KACpB,OAAOD,EAAM,OAAU,MACvBA,EAAM,OAAS,CAAC,GAEpB,IAAIE,EAAQF,EAAM,OAClBN,EAAO,KAAKQ,CAAK,EACjB,IAAIC,EAASH,EAAM,SAAWA,EAAM,QAAQ,OACxC,OAAOC,EAAY,GAAG,YAAe,WACrC,KAAK,WAAaA,EAAY,GAAG,WAEjC,KAAK,WAAa,OAAO,eAAe,IAAI,EAAE,WAElD,SAASG,GAASC,EAAG,CACjBd,EAAM,OAASA,EAAM,OAAS,EAAIc,EAClCZ,EAAO,OAASA,EAAO,OAASY,EAChCX,EAAO,OAASA,EAAO,OAASW,CACpC,CAJS5C,EAAA2C,GAAA,YAKD,SAASE,IAAM,CACf,IAAIC,EACJ,OAAAA,EAAQf,EAAO,IAAI,GAAKQ,EAAM,IAAI,GAAKF,EACnC,OAAOS,GAAU,WACbA,aAAiB,QACjBf,EAASe,EACTA,EAAQf,EAAO,IAAI,GAEvBe,EAAQjB,EAAK,SAASiB,CAAK,GAAKA,GAE7BA,CACX,CAXa9C,EAAA6C,GAAA,OAajB,QADIE,EAAQC,EAAgBC,EAAOC,EAAQC,GAAGC,EAAGC,EAAQ,CAAC,EAAGC,EAAGC,EAAKC,GAAUC,IAClE,CAUT,GATAR,EAAQnB,EAAMA,EAAM,OAAS,CAAC,EAC1B,KAAK,eAAemB,CAAK,EACzBC,EAAS,KAAK,eAAeD,CAAK,IAE9BF,IAAW,MAAQ,OAAOA,EAAU,OACpCA,EAASF,GAAI,GAEjBK,EAAShB,EAAMe,CAAK,GAAKf,EAAMe,CAAK,EAAEF,CAAM,GAE5C,OAAOG,EAAW,KAAe,CAACA,EAAO,QAAU,CAACA,EAAO,CAAC,EAAG,CAC/D,IAAIQ,EAAS,GACbD,EAAW,CAAC,EACZ,IAAKH,KAAKpB,EAAMe,CAAK,EACb,KAAK,WAAWK,CAAC,GAAKA,EAAIlB,GAC1BqB,EAAS,KAAK,IAAO,KAAK,WAAWH,CAAC,EAAI,GAAI,EAGlDf,EAAM,aACNmB,EAAS,wBAA0BvC,EAAW,GAAK;AAAA,EAAQoB,EAAM,aAAa,EAAI;AAAA,YAAiBkB,EAAS,KAAK,IAAI,EAAI,WAAc,KAAK,WAAWV,CAAM,GAAKA,GAAU,IAE5KW,EAAS,wBAA0BvC,EAAW,GAAK,iBAAmB4B,GAAUV,EAAM,eAAiB,KAAQ,KAAK,WAAWU,CAAM,GAAKA,GAAU,KAExJ,KAAK,WAAWW,EAAQ,CACpB,KAAMnB,EAAM,MACZ,MAAO,KAAK,WAAWQ,CAAM,GAAKA,EAClC,KAAMR,EAAM,SACZ,IAAKE,EACL,SAAUgB,CACd,CAAC,CACL,CACA,GAAIP,EAAO,CAAC,YAAa,OAASA,EAAO,OAAS,EAC9C,MAAM,IAAI,MAAM,oDAAsDD,EAAQ,YAAcF,CAAM,EAEtG,OAAQG,EAAO,CAAC,EAAG,CACnB,IAAK,GACDpB,EAAM,KAAKiB,CAAM,EACjBf,EAAO,KAAKO,EAAM,MAAM,EACxBN,EAAO,KAAKM,EAAM,MAAM,EACxBT,EAAM,KAAKoB,EAAO,CAAC,CAAC,EACpBH,EAAS,KACJC,GASDD,EAASC,EACTA,EAAiB,OATjB9B,EAASqB,EAAM,OACftB,EAASsB,EAAM,OACfpB,EAAWoB,EAAM,SACjBE,EAAQF,EAAM,OACVJ,EAAa,GACbA,KAMR,MACJ,IAAK,GAwBD,GAvBAoB,EAAM,KAAK,aAAaL,EAAO,CAAC,CAAC,EAAE,CAAC,EACpCG,EAAM,EAAIrB,EAAOA,EAAO,OAASuB,CAAG,EACpCF,EAAM,GAAK,CACP,WAAYpB,EAAOA,EAAO,QAAUsB,GAAO,EAAE,EAAE,WAC/C,UAAWtB,EAAOA,EAAO,OAAS,CAAC,EAAE,UACrC,aAAcA,EAAOA,EAAO,QAAUsB,GAAO,EAAE,EAAE,aACjD,YAAatB,EAAOA,EAAO,OAAS,CAAC,EAAE,WAC3C,EACIS,IACAW,EAAM,GAAG,MAAQ,CACbpB,EAAOA,EAAO,QAAUsB,GAAO,EAAE,EAAE,MAAM,CAAC,EAC1CtB,EAAOA,EAAO,OAAS,CAAC,EAAE,MAAM,CAAC,CACrC,GAEJmB,EAAI,KAAK,cAAc,MAAMC,EAAO,CAChCpC,EACAC,EACAC,EACAqB,EAAY,GACZU,EAAO,CAAC,EACRlB,EACAC,CACJ,EAAE,OAAOK,CAAI,CAAC,EACV,OAAOc,EAAM,IACb,OAAOA,EAEPG,IACAzB,EAAQA,EAAM,MAAM,EAAG,GAAKyB,EAAM,CAAC,EACnCvB,EAASA,EAAO,MAAM,EAAG,GAAKuB,CAAG,EACjCtB,EAASA,EAAO,MAAM,EAAG,GAAKsB,CAAG,GAErCzB,EAAM,KAAK,KAAK,aAAaoB,EAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1ClB,EAAO,KAAKqB,EAAM,CAAC,EACnBpB,EAAO,KAAKoB,EAAM,EAAE,EACpBG,GAAWtB,EAAMJ,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAEA,EAAMA,EAAM,OAAS,CAAC,CAAC,EACjEA,EAAM,KAAK0B,EAAQ,EACnB,MACJ,IAAK,GACD,MAAO,EACX,CACJ,CACA,MAAO,EACX,EA3IO,QA2IN,EAGGjB,GAAS,UAAU,CACvB,IAAIA,EAAS,CAEb,IAAI,EAEJ,WAAWvC,EAAA,SAAoByB,EAAKC,EAAM,CAClC,GAAI,KAAK,GAAG,OACR,KAAK,GAAG,OAAO,WAAWD,EAAKC,CAAI,MAEnC,OAAM,IAAI,MAAMD,CAAG,CAE3B,EANO,cASX,SAASzB,EAAA,SAAU4B,EAAOR,EAAI,CACtB,YAAK,GAAKA,GAAM,KAAK,IAAM,CAAC,EAC5B,KAAK,OAASQ,EACd,KAAK,MAAQ,KAAK,WAAa,KAAK,KAAO,GAC3C,KAAK,SAAW,KAAK,OAAS,EAC9B,KAAK,OAAS,KAAK,QAAU,KAAK,MAAQ,GAC1C,KAAK,eAAiB,CAAC,SAAS,EAChC,KAAK,OAAS,CACV,WAAY,EACZ,aAAc,EACd,UAAW,EACX,YAAa,CACjB,EACI,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAAC,EAAE,CAAC,GAE5B,KAAK,OAAS,EACP,IACX,EAlBK,YAqBT,MAAM5B,EAAA,UAAY,CACV,IAAI2D,EAAK,KAAK,OAAO,CAAC,EACtB,KAAK,QAAUA,EACf,KAAK,SACL,KAAK,SACL,KAAK,OAASA,EACd,KAAK,SAAWA,EAChB,IAAIC,EAAQD,EAAG,MAAM,iBAAiB,EACtC,OAAIC,GACA,KAAK,WACL,KAAK,OAAO,aAEZ,KAAK,OAAO,cAEZ,KAAK,QAAQ,QACb,KAAK,OAAO,MAAM,CAAC,IAGvB,KAAK,OAAS,KAAK,OAAO,MAAM,CAAC,EAC1BD,CACX,EApBE,SAuBN,MAAM3D,EAAA,SAAU2D,EAAI,CACZ,IAAIJ,EAAMI,EAAG,OACTC,EAAQD,EAAG,MAAM,eAAe,EAEpC,KAAK,OAASA,EAAK,KAAK,OACxB,KAAK,OAAS,KAAK,OAAO,OAAO,EAAG,KAAK,OAAO,OAASJ,CAAG,EAE5D,KAAK,QAAUA,EACf,IAAIM,EAAW,KAAK,MAAM,MAAM,eAAe,EAC/C,KAAK,MAAQ,KAAK,MAAM,OAAO,EAAG,KAAK,MAAM,OAAS,CAAC,EACvD,KAAK,QAAU,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAS,CAAC,EAEzDD,EAAM,OAAS,IACf,KAAK,UAAYA,EAAM,OAAS,GAEpC,IAAIR,EAAI,KAAK,OAAO,MAEpB,YAAK,OAAS,CACV,WAAY,KAAK,OAAO,WACxB,UAAW,KAAK,SAAW,EAC3B,aAAc,KAAK,OAAO,aAC1B,YAAaQ,GACRA,EAAM,SAAWC,EAAS,OAAS,KAAK,OAAO,aAAe,GAC5DA,EAASA,EAAS,OAASD,EAAM,MAAM,EAAE,OAASA,EAAM,CAAC,EAAE,OAChE,KAAK,OAAO,aAAeL,CACjC,EAEI,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAACH,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,KAAK,OAASG,CAAG,GAEvD,KAAK,OAAS,KAAK,OAAO,OACnB,IACX,EAhCE,SAmCN,KAAKvD,EAAA,UAAY,CACT,YAAK,MAAQ,GACN,IACX,EAHC,QAML,OAAOA,EAAA,UAAY,CACX,GAAI,KAAK,QAAQ,gBACb,KAAK,WAAa,OAElB,QAAO,KAAK,WAAW,0BAA4B,KAAK,SAAW,GAAK;AAAA,EAAqI,KAAK,aAAa,EAAG,CAC9N,KAAM,GACN,MAAO,KACP,KAAM,KAAK,QACf,CAAC,EAGL,OAAO,IACX,EAZG,UAeP,KAAKA,EAAA,SAAU4C,EAAG,CACV,KAAK,MAAM,KAAK,MAAM,MAAMA,CAAC,CAAC,CAClC,EAFC,QAKL,UAAU5C,EAAA,UAAY,CACd,IAAI8D,EAAO,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAS,KAAK,MAAM,MAAM,EACzE,OAAQA,EAAK,OAAS,GAAK,MAAM,IAAMA,EAAK,OAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,CAC7E,EAHM,aAMV,cAAc9D,EAAA,UAAY,CAClB,IAAI+D,EAAO,KAAK,MAChB,OAAIA,EAAK,OAAS,KACdA,GAAQ,KAAK,OAAO,OAAO,EAAG,GAAGA,EAAK,MAAM,IAExCA,EAAK,OAAO,EAAE,EAAE,GAAKA,EAAK,OAAS,GAAK,MAAQ,KAAK,QAAQ,MAAO,EAAE,CAClF,EANU,iBASd,aAAa/D,EAAA,UAAY,CACjB,IAAIgE,EAAM,KAAK,UAAU,EACrBC,EAAI,IAAI,MAAMD,EAAI,OAAS,CAAC,EAAE,KAAK,GAAG,EAC1C,OAAOA,EAAM,KAAK,cAAc,EAAI;AAAA,EAAOC,EAAI,GACnD,EAJS,gBAOb,WAAWjE,EAAA,SAASkE,EAAOC,EAAc,CACjC,IAAIrB,EACAc,EACAQ,EAwDJ,GAtDI,KAAK,QAAQ,kBAEbA,EAAS,CACL,SAAU,KAAK,SACf,OAAQ,CACJ,WAAY,KAAK,OAAO,WACxB,UAAW,KAAK,UAChB,aAAc,KAAK,OAAO,aAC1B,YAAa,KAAK,OAAO,WAC7B,EACA,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,QAAS,KAAK,QACd,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,GAAI,KAAK,GACT,eAAgB,KAAK,eAAe,MAAM,CAAC,EAC3C,KAAM,KAAK,IACf,EACI,KAAK,QAAQ,SACbA,EAAO,OAAO,MAAQ,KAAK,OAAO,MAAM,MAAM,CAAC,IAIvDR,EAAQM,EAAM,CAAC,EAAE,MAAM,iBAAiB,EACpCN,IACA,KAAK,UAAYA,EAAM,QAE3B,KAAK,OAAS,CACV,WAAY,KAAK,OAAO,UACxB,UAAW,KAAK,SAAW,EAC3B,aAAc,KAAK,OAAO,YAC1B,YAAaA,EACAA,EAAMA,EAAM,OAAS,CAAC,EAAE,OAASA,EAAMA,EAAM,OAAS,CAAC,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAE,OAC5E,KAAK,OAAO,YAAcM,EAAM,CAAC,EAAE,MACpD,EACA,KAAK,QAAUA,EAAM,CAAC,EACtB,KAAK,OAASA,EAAM,CAAC,EACrB,KAAK,QAAUA,EACf,KAAK,OAAS,KAAK,OAAO,OACtB,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAAC,KAAK,OAAQ,KAAK,QAAU,KAAK,MAAM,GAEhE,KAAK,MAAQ,GACb,KAAK,WAAa,GAClB,KAAK,OAAS,KAAK,OAAO,MAAMA,EAAM,CAAC,EAAE,MAAM,EAC/C,KAAK,SAAWA,EAAM,CAAC,EACvBpB,EAAQ,KAAK,cAAc,KAAK,KAAM,KAAK,GAAI,KAAMqB,EAAc,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,CAAC,EAClH,KAAK,MAAQ,KAAK,SAClB,KAAK,KAAO,IAEZrB,EACA,OAAOA,EACJ,GAAI,KAAK,WAAY,CAExB,QAAS7C,KAAKmE,EACV,KAAKnE,CAAC,EAAImE,EAAOnE,CAAC,EAEtB,MAAO,EACX,CACA,MAAO,EACX,EArEO,cAwEX,KAAKD,EAAA,UAAY,CACT,GAAI,KAAK,KACL,OAAO,KAAK,IAEX,KAAK,SACN,KAAK,KAAO,IAGhB,IAAI8C,EACAoB,EACAG,EACAC,EACC,KAAK,QACN,KAAK,OAAS,GACd,KAAK,MAAQ,IAGjB,QADIC,EAAQ,KAAK,cAAc,EACtBC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAE9B,GADAH,EAAY,KAAK,OAAO,MAAM,KAAK,MAAME,EAAMC,CAAC,CAAC,CAAC,EAC9CH,IAAc,CAACH,GAASG,EAAU,CAAC,EAAE,OAASH,EAAM,CAAC,EAAE,SAGvD,GAFAA,EAAQG,EACRC,EAAQE,EACJ,KAAK,QAAQ,gBAAiB,CAE9B,GADA1B,EAAQ,KAAK,WAAWuB,EAAWE,EAAMC,CAAC,CAAC,EACvC1B,IAAU,GACV,OAAOA,EACJ,GAAI,KAAK,WAAY,CACxBoB,EAAQ,GACR,QACJ,KAEI,OAAO,EAEf,SAAW,CAAC,KAAK,QAAQ,KACrB,MAIZ,OAAIA,GACApB,EAAQ,KAAK,WAAWoB,EAAOK,EAAMD,CAAK,CAAC,EACvCxB,IAAU,GACHA,EAGJ,IAEP,KAAK,SAAW,GACT,KAAK,IAEL,KAAK,WAAW,0BAA4B,KAAK,SAAW,GAAK;AAAA,EAA2B,KAAK,aAAa,EAAG,CACpH,KAAM,GACN,MAAO,KACP,KAAM,KAAK,QACf,CAAC,CAET,EAvDC,QA0DL,IAAI9C,EAAA,UAAgB,CACZ,IAAIoD,EAAI,KAAK,KAAK,EAClB,OAAIA,GAGO,KAAK,IAAI,CAExB,EAPA,OAUJ,MAAMpD,EAAA,SAAgByE,EAAW,CACzB,KAAK,eAAe,KAAKA,CAAS,CACtC,EAFE,SAKN,SAASzE,EAAA,UAAqB,CACtB,IAAI,EAAI,KAAK,eAAe,OAAS,EACrC,OAAI,EAAI,EACG,KAAK,eAAe,IAAI,EAExB,KAAK,eAAe,CAAC,CAEpC,EAPK,YAUT,cAAcA,EAAA,UAA0B,CAChC,OAAI,KAAK,eAAe,QAAU,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,EACzE,KAAK,WAAW,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,CAAC,EAAE,MAErE,KAAK,WAAW,QAAW,KAE1C,EANU,iBASd,SAASA,EAAA,SAAmB,EAAG,CAEvB,OADA,EAAI,KAAK,eAAe,OAAS,EAAI,KAAK,IAAI,GAAK,CAAC,EAChD,GAAK,EACE,KAAK,eAAe,CAAC,EAErB,SAEf,EAPK,YAUT,UAAUA,EAAA,SAAoByE,EAAW,CACjC,KAAK,MAAMA,CAAS,CACxB,EAFM,aAKV,eAAezE,EAAA,UAA0B,CACjC,OAAO,KAAK,eAAe,MAC/B,EAFW,kBAGf,QAAS,CAAC,mBAAmB,EAAI,EACjC,cAAeA,EAAA,SAAmBoB,EAAGsD,EAAIC,EAA0BC,EAAU,CAC7E,IAAIC,EAAQD,EACZ,OAAOD,EAA2B,CAClC,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,IAEf,IAAK,GAAG,MAAO,IAEf,IAAK,GAAE,MAAO,GAEd,CACA,EApBe,aAqBf,MAAO,CAAC,gBAAgB,wBAAwB,mBAAmB,kBAAkB,cAAc,cAAc,eAAe,SAAS,EACzI,WAAY,CAAC,QAAU,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,UAAY,EAAI,CAAC,CACnE,EACA,OAAOpC,CACP,GAAG,EACHzC,EAAO,MAAQyC,EACf,SAASuC,GAAU,CACjB,KAAK,GAAK,CAAC,CACb,CAFS,OAAA9E,EAAA8E,EAAA,UAGTA,EAAO,UAAYhF,EAAOA,EAAO,OAASgF,EACnC,IAAIA,CACX,GAAG,EACFhF,GAAO,OAASA,GAEhB,IAAOiF,GAAQC,GC7kBT,IAAMC,EAAN,KAAsC,CAK3C,aAAc,CAHd,KAAQ,MAAsB,CAAC,EAI7B,KAAK,MAAQ,KAAK,MAAM,KAAK,IAAI,EACjC,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,EACrC,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,CACvC,CA5BF,MAmB6C,CAAAC,EAAA,mBAW3C,OAAc,CACZ,KAAK,KAAO,OACZ,KAAK,MAAQ,CAAC,EACd,KAAK,UAAY,OACjBC,GAAY,CACd,CAEA,SAAoC,CAClC,OAAO,KAAK,IACd,CAEA,QAAQC,EAAkBC,EAAoB,CAC5C,IAAMC,EAAQC,GAAO,aAAaF,EAAMG,EAAU,CAAC,EAEnD,GAAI,CAAC,KAAK,KAAM,CACd,KAAK,UAAYJ,EACjB,KAAK,KAAO,CAAE,KAAME,EAAO,SAAU,CAAC,CAAE,EACxC,KAAK,MAAQ,CAAC,CAAE,MAAO,EAAG,KAAM,KAAK,IAAK,CAAC,EAC3CG,GAAgBH,CAAK,EACrB,MACF,CAEA,IAAII,EAAQN,GAAY,KAAK,WAAa,GAM1C,IALIM,GAAS,IACXA,EAAQ,GAIH,KAAK,MAAM,OAAS,GAAK,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAAE,OAASA,GACzE,KAAK,MAAM,IAAI,EAGjB,IAAMC,EAAS,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAAE,KAC3CC,EAAqB,CAAE,KAAMN,EAAO,SAAU,CAAC,CAAE,EACvDK,EAAO,SAAS,KAAKC,CAAI,EACzB,KAAK,MAAM,KAAK,CAAE,MAAAF,EAAO,KAAAE,CAAK,CAAC,CACjC,CAEA,aAAsB,CACpB,OAAOC,GAAY,CACrB,CAEA,YAAYC,EAAqB,CAC/BC,GAAYD,CAAK,CACnB,CAEA,mBAA4B,CAC1B,OAAOE,GAAkB,CAC3B,CAEA,kBAAkBC,EAA2B,CAC3CC,GAAkBD,CAAW,CAC/B,CAEA,iBAA0B,CACxB,OAAOE,GAAgB,CACzB,CAEA,gBAAgBL,EAAqB,CACnCL,GAAgBK,CAAK,CACvB,CACF,ECzEA,IAAMM,GAAoB,GACpBC,EAAoB,IACpBC,GAAY,GACZC,GAAY,GACZC,GAAiB,EACjBC,GAAS,GAAK,KAAK,GAAM,IACzBC,GAAQ,KAAK,IAAID,EAAK,EACtBE,GAAQ,KAAK,IAAIF,EAAK,EAEtBG,GAAqBC,EAAA,CAACC,EAAYC,EAAaC,IAAkB,CACrE,IAAMC,EAAOH,EAAM,KAAK,EAAG,QAAQ,EAC7BI,EAAID,EAAK,MAAQF,EAAM,EACvBI,EAAIF,EAAK,OAASF,EAAM,EAC9BK,GAAiBN,EAAOK,EAAGD,EAAGF,CAAI,EAClCF,EAAM,KAAK,UAAW,GAAGG,EAAK,EAAIF,CAAG,IAAIE,EAAK,EAAIF,CAAG,IAAIG,CAAC,IAAIC,CAAC,EAAE,CACnE,EAN2B,sBAQrBE,GAAuBR,EAAA,CAACS,EAAOC,EAAIC,EAAUC,IAAqB,CAEtE,IAAMC,EADKD,EAAQ,GACH,QAAQ,EACxB,GAAI,CAACC,EACH,OAGF,IAAMC,EAAaC,EAAU,EACvB,CAAE,KAAAC,EAAM,cAAAC,EAAe,eAAAC,CAAe,EAAIJ,EAC1CK,EAAWC,GAAcN,EAAW,QAAQ,EAAE,CAAC,GAAKvB,GACpD8B,EAAcL,IAAS,YAEvBM,EAAST,EAAK,UAAY,CAAC,EAC3BU,EAAUT,EAAW,UAAU,gBAAkB,GACjDU,EAAcV,EAAW,UAAU,aAAe,GAClDW,EAAMC,GAAiBhB,CAAE,EACzBiB,EAAIF,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,UAAU,EAE5CG,EAAWP,EAAcQ,GAAM,IAAIJ,EAAI,KAAK,CAAE,EAAI,OAClDK,EAAyCF,EAC3C,CACE,SAAAA,EACA,KAAMX,GAAiB,EACvB,UAAWC,GAAgB,WAAa,OACxC,UAAWA,GAAgB,SAAW,MACxC,EACA,OAEEa,EAAW,kBAAkBrB,CAAE,GAChCW,GACHM,EAAE,OAAO,MAAM,EACZ,OAAO,QAAQ,EACf,KAAK,KAAMI,CAAQ,EACnB,KAAK,UAAW,WAAW,EAC3B,KAAK,OAAQ,CAAC,EACd,KAAK,OAAQ,CAAC,EACd,KAAK,cAAe,CAAC,EACrB,KAAK,eAAgB,CAAC,EACtB,KAAK,SAAU,MAAM,EACrB,OAAO,MAAM,EACb,KAAK,IAAK,wBAAwB,EAClC,KAAK,QAAS,gBAAgB,EAGnC,IAAIC,EAAS,EACTC,EAASzC,EAGP0C,EAAYb,EACd,OACAc,EAASR,EAAGK,EAAQC,EAAQD,EAAQC,EAAQ,gBAAgB,EAGhE,GAFAG,GAAST,EAAGK,EAAQC,EAAQpB,EAAK,KAAMM,EAAUW,CAAY,EAEzD,CAACR,EAAO,OAAQ,CACdD,GACFc,EAASR,EAAGK,EAAQC,EAAQD,EAAQC,EAAQ,iBAAkBH,CAAY,EAE5E/B,GAAmB0B,EAAKF,EAASC,CAAW,EAC5C,MACF,CAEAQ,GAAU,GAEV,IAAMK,EAAcf,EAAO,OAAO,CAACgB,EAAGC,IAAMA,EAAI,IAAM,CAAC,EACjDC,EAAclB,EAAO,OAAO,CAACgB,EAAGC,IAAMA,EAAI,IAAM,CAAC,EAEjDE,EAAaC,GAAUL,CAAW,EAClCM,EAAaD,GAAUF,CAAW,EAClCI,EAAkBH,EAAW,MAAQE,EAAW,MAElDE,EAAWrD,EACXsD,EAAWtD,EACf,GAAIoD,EAAkB,EAAG,CACvB,IAAMG,EAAOvD,EAAoB,EAC3BwD,EAASxD,EAAoB,GACnCqD,EAAW,KAAK,IAAIG,EAAQD,GAAQN,EAAW,MAAQG,EAAgB,EACvEE,EAAW,KAAK,IAAIE,EAAQD,GAAQJ,EAAW,MAAQC,EAAgB,CACzE,CAEA,IAAMK,EAAa9B,EAAW,EAC9B0B,EAAW,KAAK,IAAIA,EAAUJ,EAAW,IAAMQ,CAAU,EACzDH,EAAW,KAAK,IAAIA,EAAUH,EAAW,IAAMM,CAAU,EAEzDhB,EAAS,KAAK,IAAIY,EAAUrD,CAAiB,EACzC0C,GACFA,EAAU,KAAK,KAAMD,CAAM,EAAE,KAAK,KAAMA,CAAM,EAEhDN,EAAE,OAAO,sBAAsB,EAAE,KAAK,YAAa,eAAeM,CAAM,GAAG,EAE3E,IAAMiB,EAAY,KAAK,KAAK5B,EAAO,OAAS,CAAC,EAC7C,QAAS6B,EAAI,EAAGA,EAAID,EAAWC,IAAK,CAClC,IAAMC,EAAKzB,EAAE,OAAO,GAAG,EAAE,KAAK,QAAS,eAAe,EACtD,OAAW,CAAC0B,EAAOC,EAAKC,CAAG,GAAK,CAC9B,CAACjC,EAAO6B,EAAI,CAAC,EAAG,GAAIN,CAAQ,EAC5B,CAACvB,EAAO6B,EAAI,EAAI,CAAC,EAAG,EAAGL,CAAQ,CACjC,EACMO,GACFG,GAAWJ,EAAIC,EAAOrB,EAAQC,EAAQqB,EAAKC,EAAKpC,EAAUW,CAAY,EAG1EE,EAASoB,EACN,UAAU,MAAM,EAChB,MAAM,EACN,OAAO,CAACK,EAAMC,IAAM,KAAK,IAAID,EAAOC,EAAyB,QAAQ,EAAE,CAAC,EAAG,GAAQ,CACxF,CAEA,GAAIrC,EACFc,EAASR,EAAGK,EAAQC,EAAQ,EAAGA,EAAQ,iBAAkBH,CAAY,MAChE,CACLI,EAAW,KAAK,KAAMF,CAAM,EAC5B,IAAM2B,EAAY,QAAQ5B,CAAQ,IAClCJ,EAAE,UAAU,gDAAgD,EAAE,KAAK,eAAgBgC,CAAS,CAC9F,CACA5D,GAAmB0B,EAAKF,EAASC,CAAW,CAC9C,EAlH6B,QAoHvBkB,GAAY1C,EAAC4D,GAA0B,CAC3C,IAAMC,EAAmB7D,EAAC8D,GACxBA,EAAK,SAAS,OAAO,CAACC,EAAKC,IAAUD,EAAM,EAAIF,EAAiBG,CAAK,EAAG,CAAC,EADlD,oBAGzB,OAAOJ,EAAM,OACX,CAACK,EAAOH,IAAS,CACf,IAAMI,EAAcL,EAAiBC,CAAI,EACzC,OAAAG,EAAM,OAASC,EACfD,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAKC,CAAW,EACpCD,CACT,EACA,CAAE,MAAO,EAAG,IAAK,CAAE,CACrB,CACF,EAbkB,aAeZ7B,GAAWpC,EAAA,CACfyB,EACA0C,EACAC,EACAC,EACAlD,EACAW,IACS,CACT,IAAMwC,EAAW,KAAK,IAAI,EAAG,KAAK,MAAM,KAAOnD,EAAW,GAAI,CAAC,EACzDoD,EAAY9C,EACf,OAAO,GAAG,EACV,KAAK,QAAS,qBAAqB,EACnC,KAAK,YAAa,aAAa0C,CAAC,IAAIC,CAAC,GAAG,EAErCI,EAASC,EACbF,EACAG,GAASL,EAAOC,CAAQ,EACxB,EACA,EACA,sBACA,QACAnD,CACF,EACMwD,EAAKH,EAAO,KAAK,EAAG,QAAQ,EAC5BnE,EAAI,KAAK,IAAI,GAAIsE,EAAG,MAAQ,CAAC,EAC7BrE,EAAI,KAAK,IAAI,GAAIqE,EAAG,OAAS,EAAI,EAAE,EAEnCC,EAAW,OAAO,CAACtE,EAAI,CAAC,QAAQA,EAAI,CAAC,MAAMD,EAAI,GAAG,QAAQ,CAACC,EAAI,CAAC,KACtE,GAAIwB,EAAc,CAChB,IAAM+C,EAAY/C,EAAa,SAAS,KAAK8C,EAAU,CACrD,UAAW,IACX,KAAM9C,EAAa,KACnB,KAAMA,EAAa,UACnB,UAAW,UACX,WAAY,IACZ,WAAY,EACZ,OAAQA,EAAa,UACrB,YAAa,CACf,CAAC,EACDyC,EAAU,OAAO,IAAMM,EAAW,cAAc,EAAE,KAAK,QAAS,eAAe,CACjF,MACEN,EAAU,OAAO,OAAQ,cAAc,EAAE,KAAK,QAAS,eAAe,EAAE,KAAK,IAAKK,CAAQ,EAE5FJ,EAAO,KAAK,YAAa,cAAcnE,EAAIsE,EAAG,OAAS,EAAIA,EAAG,EAAI,CAAC,IAAI,CAACA,EAAG,EAAIA,EAAG,OAAS,CAAC,GAAG,CACjG,EA5CiB,YAiEXG,GAAc9E,EAAA,CAAC+E,EAA0BC,IAAsB,CACnE,IAAMC,EAAwB,CAAC,EACzBC,EAAmB,CAAC,EACpBC,EAAOnF,EAAA,CAAC4D,EAAuBwB,EAAaC,IAAkB,CAClE,IAAMC,EAAUN,IAAc,GAAK,CAAC,GAAGpB,CAAK,EAAE,QAAQ,EAAIA,EAC1D,QAAWI,KAASsB,EAAS,CAC3B,IAAMC,EAAMN,EAAQ,OACdO,EAAKxB,EAAM,UAAY,CAAC,EAC9BiB,EAAQ,KAAK,CACX,MAAAI,EACA,KAAMX,GAASV,EAAM,KAAM,EAAE,EAC7B,YAAaoB,EACb,WAAYI,EAAG,MACjB,CAAC,EACGH,EAAQ,IAAM,GAEhBH,EAAO,KAAKK,CAAG,EACXC,EAAG,QACLL,EAAKK,EAAID,EAAKF,EAAQ,CAAC,IAIrBG,EAAG,QACLL,EAAKK,EAAID,EAAKF,EAAQ,CAAC,EAEzBH,EAAO,KAAKK,CAAG,EAEnB,CACF,EAzBa,QA0Bb,OAAAJ,EAAKJ,EAAU,GAAI,CAAC,EACb,CAAE,QAAAE,EAAS,OAAAC,CAAO,CAC3B,EA/BoB,eAiCdO,GAAiBzF,EAAA,CACrByB,EACAiE,EACAvB,EACAC,EACAY,EACA7D,EACAW,IACG,CACH,IAAM6D,EAAKlE,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,sBAAsB,EAUzDkD,EATKF,EACTkB,EACAD,EACAvB,EACAC,EAAI,GAAKY,EACT,uBACA,SACA7D,CACF,EACc,KAAK,EAAG,QAAQ,EAC9B,GAAIW,EAAc,CAChB,IAAM+C,EAAY/C,EAAa,SAAS,UACtC6C,EAAG,EAAI,GACPA,EAAG,EAAI,EACPA,EAAG,MAAQ,GACXA,EAAG,OAAS,EACZ,CACE,UAAW,IACX,KAAM7C,EAAa,KACnB,KAAMA,EAAa,UACnB,UAAW,UACX,WAAY,IACZ,WAAY,EACZ,OAAQA,EAAa,UACrB,YAAa,CACf,CACF,EACA6D,EAAG,OAAO,IAAMd,EAAW,cAAc,EAAE,KAAK,QAAS,oBAAoB,CAC/E,MACEc,EAAG,OAAO,OAAQ,cAAc,EAC7B,KAAK,QAAS,oBAAoB,EAClC,KAAK,IAAKhB,EAAG,EAAI,EAAE,EACnB,KAAK,IAAKA,EAAG,EAAI,CAAC,EAClB,KAAK,QAASA,EAAG,MAAQ,EAAE,EAC3B,KAAK,SAAUA,EAAG,OAAS,CAAC,CAEnC,EA9CuB,kBAiDjBiB,GAAkB5F,EAAA,CACtB2B,EACAwC,EACAC,EACAyB,EACAC,EACAhE,IACG,CACH,IAAMyB,EAAM,KAAK,KAAKsC,EAAKA,EAAKC,EAAKA,CAAE,EACvC,GAAIvC,IAAQ,EACV,OAEF,IAAMwC,EAAKF,EAAKtC,EACVyC,EAAKF,EAAKvC,EACV0C,EAAI,EACJC,EAAK,CAACF,EAAKC,EACXE,EAAKJ,EAAKE,EACVG,EAAOjC,EACPkC,EAAOjC,EACPkC,EAAI,KAAKF,CAAI,IAAIC,CAAI,MAAMD,EAAOL,EAAKE,EAAI,EAAIC,CAAE,IAAIG,EAAOL,EAAKC,EAAI,EAAIE,CAAE,MAAMC,EAAOL,EAAKE,EAAI,EAAIC,CAAE,IAAIG,EAAOL,EAAKC,EAAI,EAAIE,CAAE,KACjItB,EAAY/C,EAAa,SAAS,KAAKwE,EAAG,CAC9C,UAAW,EACX,KAAMxE,EAAa,KACnB,KAAMA,EAAa,UACnB,UAAW,QACX,OAAQA,EAAa,UACrB,YAAa,CACf,CAAC,EACDH,EAAE,OAAO,IAAMkD,CAAS,CAC1B,EA7BwB,mBA+BlBrB,GAAaxD,EAAA,CACjByB,EACAqC,EACAyC,EACAC,EACAxB,EACAyB,EACAtF,EACAW,IACS,CACT,IAAMiD,EAAWjB,EAAK,UAAY,CAAC,EAC7B4C,EAAUD,GAAU1B,EAAS,OAAS,EAAI,IAC1Cc,EAAK,CAAChG,GAAQ6G,EACdZ,EAAKhG,GAAQ4G,EAAU1B,EACvB2B,EAAOJ,EAASV,EAChBe,EAAOJ,EAASV,EAQtB,GANA3D,EAASV,EAAK8E,EAAQC,EAAQG,EAAMC,EAAM,kBAAmB9E,CAAY,EACrEA,GACF8D,GAAgBnE,EAAK8E,EAAQC,EAAQD,EAASI,EAAMH,EAASI,EAAM9E,CAAY,EAEjF2D,GAAehE,EAAKqC,EAAK,KAAM6C,EAAMC,EAAM5B,EAAW7D,EAAUW,CAAY,EAExE,CAACiD,EAAS,OACZ,OAGF,GAAM,CAAE,QAAAE,EAAS,OAAAC,CAAO,EAAIJ,GAAYC,EAAUC,CAAS,EACrD6B,EAAa5B,EAAQ,OACrB6B,EAAK,IAAI,MAAcD,CAAU,EACvC,OAAW,CAACE,EAAMC,CAAQ,IAAK9B,EAAO,QAAQ,EAC5C4B,EAAGE,CAAQ,EAAIR,EAASV,IAAOiB,EAAO,IAAMF,EAAa,IAG3D,IAAMI,EAAQ,IAAI,IAClBA,EAAM,IAAI,GAAI,CACZ,GAAIV,EACJ,GAAIC,EACJ,GAAIG,EACJ,GAAIC,EACJ,WAAY7B,EAAS,OACrB,cAAe,CACjB,CAAC,EAED,IAAMmC,EAAY,CAACrH,GACbsH,EAAYrH,GAAQkF,EACpBoC,EAAWpC,EAAY,EAAI,oBAAsB,sBAEvD,OAAW,CAACzC,EAAG8E,CAAC,IAAKpC,EAAQ,QAAQ,EAAG,CACtC,IAAMb,EAAI0C,EAAGvE,CAAC,EACR+E,EAAML,EAAM,IAAII,EAAE,WAAW,EAC7BE,EAAM9F,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,oBAAoB,EAE1D+F,EAAM,EACNC,EAAM,EACNC,EAAM,EAEV,GAAIL,EAAE,MAAQ,IAAM,EAAG,CAErB,IAAMM,EAAML,EAAI,GAAKA,EAAI,GACzBE,EAAMI,GAAKN,EAAI,GAAIA,EAAI,GAAIK,GAAOvD,EAAIkD,EAAI,IAAMK,EAAM,EAAG,EACzDF,EAAMrD,EACNsD,EAAMF,GAAOH,EAAE,WAAa,EAAI3H,GAAY2H,EAAE,WAAa1H,GAAiBF,IAC5E0C,EAASoF,EAAKC,EAAKpD,EAAGsD,EAAKtD,EAAG,sBAAuBtC,CAAY,EAC7DA,GACF8D,GAAgB2B,EAAKC,EAAKpD,EAAG,EAAG,EAAGtC,CAAY,EAEjD2C,EAAkB8C,EAAKF,EAAE,KAAMK,EAAKtD,EAAG,uBAAwB,MAAOjD,CAAQ,CAChF,KAAO,CAEL,IAAM0G,EAAIP,EAAI,gBACdE,EAAMI,GAAKN,EAAI,GAAIA,EAAI,IAAKA,EAAI,WAAaO,IAAMP,EAAI,WAAa,EAAE,EACtEG,EAAMH,EAAI,GACVI,EAAMF,EAAMN,IAAc9C,EAAIqD,GAAON,GACrChF,EAASoF,EAAKC,EAAKC,EAAKC,EAAKtD,EAAG,sBAAuBtC,CAAY,EAC/DA,GACF8D,GAAgB2B,EAAKC,EAAKC,EAAKD,EAAME,EAAKD,EAAMrD,EAAGtC,CAAY,EAEjE2C,EAAkB8C,EAAKF,EAAE,KAAMK,EAAKtD,EAAGgD,EAAU,MAAOjG,CAAQ,CAClE,CAEIkG,EAAE,WAAa,GACjBJ,EAAM,IAAI1E,EAAG,CACX,GAAIiF,EACJ,GAAIC,EACJ,GAAIC,EACJ,GAAItD,EACJ,WAAYiD,EAAE,WACd,cAAe,CACjB,CAAC,CAEL,CACF,EA5FmB,cA8FbS,GAAa9H,EAAC0F,GAA2BA,EAAK,MAAM,eAAe,EAAtD,cAEbhB,GAAW1E,EAAA,CAAC0F,EAAcpB,IAA6B,CAC3D,GAAIoB,EAAK,QAAUpB,EACjB,OAAOoB,EAET,IAAMqC,EAAkB,CAAC,EACzB,QAAWC,KAAQtC,EAAK,MAAM,KAAK,EAAG,CACpC,IAAMuC,EAAOF,EAAM,OAAS,EACxBE,GAAQ,GAAKF,EAAME,CAAI,EAAE,OAAS,EAAID,EAAK,QAAU1D,EACvDyD,EAAME,CAAI,GAAK,IAAMD,EAErBD,EAAM,KAAKC,CAAI,CAEnB,CACA,OAAOD,EAAM,KAAK;AAAA,CAAI,CACxB,EAdiB,YAgBXtD,EAAoBzE,EAAA,CACxB2B,EACA+D,EACAvB,EACAC,EACA8D,EACAC,EACAhH,IACG,CACH,IAAM4G,EAAQD,GAAWpC,CAAI,EACvB0C,EAAKjH,EAAW,KAChBkH,EAAK1G,EACR,OAAO,MAAM,EACb,KAAK,QAASuG,CAAG,EACjB,KAAK,cAAeC,CAAM,EAC1B,KAAK,IAAKhE,CAAC,EACX,KAAK,IAAKC,GAAM2D,EAAM,OAAS,GAAKK,EAAM,CAAC,EAC9C,OAAW,CAAC7F,EAAG+F,CAAI,IAAKP,EAAM,QAAQ,EACpCM,EAAG,OAAO,OAAO,EACd,KAAK,IAAKlE,CAAC,EACX,KAAK,KAAM5B,IAAM,EAAI,EAAI6F,CAAE,EAC3B,KAAKE,CAAI,EAEd,OAAOD,CACT,EAxB0B,qBA0BpBT,GAAO5H,EAAA,CAACuI,EAAWC,EAAWC,IAAcF,GAAKC,EAAID,GAAKE,EAAnD,QAEPtG,EAAWnC,EAAA,CACf2B,EACA+G,EACAC,EACAC,EACAC,EACAX,EACApG,IACG,CACH,GAAIA,EAAc,CAChB,IAAM+C,EAAY/C,EAAa,SAAS,KAAK4G,EAAIC,EAAIC,EAAIC,EAAI,CAC3D,UAAW,IACX,KAAM/G,EAAa,KACnB,OAAQA,EAAa,UACrB,YAAa,CACf,CAAC,EACDH,EAAE,OAAO,IAAMkD,CAAS,EAAE,KAAK,QAASqD,CAAG,EAC3C,MACF,CACA,OAAOvG,EACJ,OAAO,MAAM,EACb,KAAK,QAASuG,CAAG,EACjB,KAAK,KAAMQ,CAAE,EACb,KAAK,KAAMC,CAAE,EACb,KAAK,KAAMC,CAAE,EACb,KAAK,KAAMC,CAAE,CAClB,EA1BiB,YA4BJC,GAA4B,CAAE,KAAAtI,EAAK,EC9fhD,IAAMuI,GAAmCC,EAACC,GAAY;AAAA;AAAA;AAAA;AAAA,YAI1CA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUnBA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA,UAIjBA,EAAQ,OAAO;AAAA,YACbA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,UAKnBA,EAAQ,OAAO;AAAA,YACbA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKZA,EAAQ,UAAU;AAAA,eACpBA,EAAQ,QAAQ;AAAA,UACrBA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAhCc,aAiElCC,GAAQH,GC5DR,IAAMI,GAA6B,CACxC,OAAAC,GACA,IAAI,IAAK,CACP,OAAO,IAAIC,CACb,EACA,SAAAC,GACA,OAAAC,EACF", + "sourcesContent": ["/* 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,14],$V2=[1,12],$V3=[1,13],$V4=[6,7,8],$V5=[1,20],$V6=[1,18],$V7=[1,19],$V8=[6,7,11],$V9=[1,6,13,14],$Va=[1,23],$Vb=[1,24],$Vc=[1,6,7,11,13,14];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ishikawa\":4,\"spaceLines\":5,\"SPACELINE\":6,\"NL\":7,\"ISHIKAWA\":8,\"document\":9,\"stop\":10,\"EOF\":11,\"statement\":12,\"SPACELIST\":13,\"TEXT\":14,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"SPACELINE\",7:\"NL\",8:\"ISHIKAWA\",11:\"EOF\",13:\"SPACELIST\",14:\"TEXT\"},\nproductions_: [0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,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: case 7:\n return yy; \nbreak;\ncase 15:\n yy.addNode($$[$0-1].length, $$[$0].trim()); \nbreak;\ncase 16:\n yy.addNode(0, $$[$0].trim()); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],8:$V0},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:$V0},{6:$V1,7:[1,10],9:9,12:11,13:$V2,14:$V3},o($V4,[2,3]),{1:[2,2]},o($V4,[2,4]),o($V4,[2,5]),{1:[2,6],6:$V1,12:15,13:$V2,14:$V3},{6:$V1,9:16,12:11,13:$V2,14:$V3},{6:$V5,7:$V6,10:17,11:$V7},o($V8,[2,18],{14:[1,21]}),o($V8,[2,16]),o($V8,[2,17]),{6:$V5,7:$V6,10:22,11:$V7},{1:[2,7],6:$V1,12:15,13:$V2,14:$V3},o($V9,[2,14],{7:$Va,11:$Vb}),o($Vc,[2,8]),o($Vc,[2,9]),o($Vc,[2,10]),o($V8,[2,15]),o($V9,[2,13],{7:$Va,11:$Vb}),o($Vc,[2,11]),o($Vc,[2,12])],\ndefaultActions: {2:[2,1],6:[2,2]},\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\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 6; \nbreak;\ncase 1: return 8; \nbreak;\ncase 2: return 8; \nbreak;\ncase 3: return 6; \nbreak;\ncase 4: return 7; \nbreak;\ncase 5: return 13; \nbreak;\ncase 6: return 14; \nbreak;\ncase 7:return 11;\nbreak;\n}\n},\nrules: [/^(?:\\s*%%.*)/i,/^(?:ishikawa-beta\\b)/i,/^(?:ishikawa\\b)/i,/^(?:[\\s]+[\\n])/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:[^\\n]+)/i,/^(?:$)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport common from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { IshikawaNode } from './ishikawaTypes.js';\n\ninterface StackEntry {\n level: number;\n node: IshikawaNode;\n}\n\nexport class IshikawaDB implements DiagramDB {\n private root?: IshikawaNode;\n private stack: StackEntry[] = [];\n private baseLevel?: number;\n\n constructor() {\n this.clear = this.clear.bind(this);\n this.addNode = this.addNode.bind(this);\n this.getRoot = this.getRoot.bind(this);\n }\n\n clear(): void {\n this.root = undefined;\n this.stack = [];\n this.baseLevel = undefined;\n commonClear();\n }\n\n getRoot(): IshikawaNode | undefined {\n return this.root;\n }\n\n addNode(rawLevel: number, text: string): void {\n const label = common.sanitizeText(text, getConfig());\n\n if (!this.root) {\n this.root = { text: label, children: [] };\n this.stack = [{ level: 0, node: this.root }];\n setDiagramTitle(label);\n return;\n }\n\n // Set baseLevel from the first cause (not the effect/root line),\n // so that relative indentation between causes is preserved\n // even when the effect line is indented more than the causes.\n this.baseLevel ??= rawLevel;\n\n let level = rawLevel - this.baseLevel + 1;\n if (level <= 0) {\n level = 1;\n }\n\n // Pop stack until the top has a strictly lower level (= parent)\n while (this.stack.length > 1 && this.stack[this.stack.length - 1].level >= level) {\n this.stack.pop();\n }\n\n const parent = this.stack[this.stack.length - 1].node;\n const node: IshikawaNode = { text: label, children: [] };\n parent.children.push(node);\n this.stack.push({ level, node });\n }\n\n getAccTitle(): string {\n return getAccTitle();\n }\n\n setAccTitle(title: string): void {\n setAccTitle(title);\n }\n\n getAccDescription(): string {\n return getAccDescription();\n }\n\n setAccDescription(description: string): void {\n setAccDescription(description);\n }\n\n getDiagramTitle(): string {\n return getDiagramTitle();\n }\n\n setDiagramTitle(title: string): void {\n setDiagramTitle(title);\n }\n}\n", "// cspell:ignore lerp\nimport type { Diagram } from '../../Diagram.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramRenderer, DrawDefinition, SVG, SVGGroup } from '../../diagram-api/types.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport { parseFontSize } from '../../utils.js';\nimport type { IshikawaDB } from './ishikawaDb.js';\nimport type { IshikawaNode } from './ishikawaTypes.js';\nimport rough from 'roughjs';\n\ninterface RoughContext {\n roughSvg: ReturnType;\n seed: number;\n lineColor: string;\n fillColor: string;\n}\n\nconst FONT_SIZE_DEFAULT = 14;\nconst SPINE_BASE_LENGTH = 250;\nconst BONE_STUB = 30;\nconst BONE_BASE = 60;\nconst BONE_PER_CHILD = 5;\nconst ANGLE = (82 * Math.PI) / 180;\nconst COS_A = Math.cos(ANGLE);\nconst SIN_A = Math.sin(ANGLE);\n\nconst applyPaddedViewBox = (svgEl: SVG, pad: number, maxW: boolean) => {\n const bbox = svgEl.node()!.getBBox();\n const w = bbox.width + pad * 2;\n const h = bbox.height + pad * 2;\n configureSvgSize(svgEl, h, w, maxW);\n svgEl.attr('viewBox', `${bbox.x - pad} ${bbox.y - pad} ${w} ${h}`);\n};\n\nconst draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => {\n const db = diagram.db as IshikawaDB;\n const root = db.getRoot();\n if (!root) {\n return;\n }\n\n const drawConfig = getConfig();\n const { look, handDrawnSeed, themeVariables } = drawConfig;\n const fontSize = parseFontSize(drawConfig.fontSize)[0] ?? FONT_SIZE_DEFAULT;\n const isHandDrawn = look === 'handDrawn';\n\n const causes = root.children ?? [];\n const padding = drawConfig.ishikawa?.diagramPadding ?? 20;\n const useMaxWidth = drawConfig.ishikawa?.useMaxWidth ?? false;\n const svg = selectSvgElement(id);\n const g = svg.append('g').attr('class', 'ishikawa');\n\n const roughSvg = isHandDrawn ? rough.svg(svg.node()!) : undefined;\n const roughContext: RoughContext | undefined = roughSvg\n ? {\n roughSvg,\n seed: handDrawnSeed ?? 0,\n lineColor: themeVariables?.lineColor ?? '#333',\n fillColor: themeVariables?.mainBkg ?? '#fff',\n }\n : undefined;\n\n const markerId = `ishikawa-arrow-${id}`;\n if (!isHandDrawn) {\n g.append('defs')\n .append('marker')\n .attr('id', markerId)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerWidth', 6)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 10 0 L 0 5 L 10 10 Z')\n .attr('class', 'ishikawa-arrow');\n }\n\n let spineX = 0;\n let spineY = SPINE_BASE_LENGTH;\n\n // For handDrawn, defer spine drawing until coordinates are final\n const spineLine = isHandDrawn\n ? undefined\n : drawLine(g, spineX, spineY, spineX, spineY, 'ishikawa-spine');\n drawHead(g, spineX, spineY, root.text, fontSize, roughContext);\n\n if (!causes.length) {\n if (isHandDrawn) {\n drawLine(g, spineX, spineY, spineX, spineY, 'ishikawa-spine', roughContext);\n }\n applyPaddedViewBox(svg, padding, useMaxWidth);\n return;\n }\n\n spineX -= 20;\n\n const upperCauses = causes.filter((_, i) => i % 2 === 0);\n const lowerCauses = causes.filter((_, i) => i % 2 === 1);\n\n const upperStats = sideStats(upperCauses);\n const lowerStats = sideStats(lowerCauses);\n const descendantTotal = upperStats.total + lowerStats.total;\n\n let upperLen = SPINE_BASE_LENGTH;\n let lowerLen = SPINE_BASE_LENGTH;\n if (descendantTotal > 0) {\n const pool = SPINE_BASE_LENGTH * 2;\n const minLen = SPINE_BASE_LENGTH * 0.3;\n upperLen = Math.max(minLen, pool * (upperStats.total / descendantTotal));\n lowerLen = Math.max(minLen, pool * (lowerStats.total / descendantTotal));\n }\n\n const minSpacing = fontSize * 2;\n upperLen = Math.max(upperLen, upperStats.max * minSpacing);\n lowerLen = Math.max(lowerLen, lowerStats.max * minSpacing);\n\n spineY = Math.max(upperLen, SPINE_BASE_LENGTH);\n if (spineLine) {\n spineLine.attr('y1', spineY).attr('y2', spineY);\n }\n g.select('.ishikawa-head-group').attr('transform', `translate(0,${spineY})`);\n\n const pairCount = Math.ceil(causes.length / 2);\n for (let p = 0; p < pairCount; p++) {\n const pg = g.append('g').attr('class', 'ishikawa-pair');\n for (const [cause, dir, len] of [\n [causes[p * 2], -1, upperLen] as const,\n [causes[p * 2 + 1], 1, lowerLen] as const,\n ]) {\n if (cause) {\n drawBranch(pg, cause, spineX, spineY, dir, len, fontSize, roughContext);\n }\n }\n spineX = pg\n .selectAll('text')\n .nodes()\n .reduce((left, n) => Math.min(left, (n as SVGGraphicsElement).getBBox().x), Infinity);\n }\n\n if (isHandDrawn) {\n drawLine(g, spineX, spineY, 0, spineY, 'ishikawa-spine', roughContext);\n } else {\n spineLine!.attr('x1', spineX);\n const markerUrl = `url(#${markerId})`;\n g.selectAll('line.ishikawa-branch, line.ishikawa-sub-branch').attr('marker-start', markerUrl);\n }\n applyPaddedViewBox(svg, padding, useMaxWidth);\n};\n\nconst sideStats = (nodes: IshikawaNode[]) => {\n const countDescendants = (node: IshikawaNode): number =>\n node.children.reduce((sum, child) => sum + 1 + countDescendants(child), 0);\n\n return nodes.reduce(\n (stats, node) => {\n const descendants = countDescendants(node);\n stats.total += descendants;\n stats.max = Math.max(stats.max, descendants);\n return stats;\n },\n { total: 0, max: 0 }\n );\n};\n\nconst drawHead = (\n svg: SVGGroup,\n x: number,\n y: number,\n label: string,\n fontSize: number,\n roughContext?: RoughContext\n): void => {\n const maxChars = Math.max(6, Math.floor(110 / (fontSize * 0.6)));\n const headGroup = svg\n .append('g')\n .attr('class', 'ishikawa-head-group')\n .attr('transform', `translate(${x},${y})`);\n\n const textEl = drawMultilineText(\n headGroup,\n wrapText(label, maxChars),\n 0,\n 0,\n 'ishikawa-head-label',\n 'start',\n fontSize\n );\n const tb = textEl.node()!.getBBox();\n const w = Math.max(60, tb.width + 6);\n const h = Math.max(40, tb.height * 2 + 40);\n\n const headPath = `M 0 ${-h / 2} L 0 ${h / 2} Q ${w * 2.4} 0 0 ${-h / 2} Z`;\n if (roughContext) {\n const roughNode = roughContext.roughSvg.path(headPath, {\n roughness: 1.5,\n seed: roughContext.seed,\n fill: roughContext.fillColor,\n fillStyle: 'hachure',\n fillWeight: 2.5,\n hachureGap: 5,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n });\n headGroup.insert(() => roughNode, ':first-child').attr('class', 'ishikawa-head');\n } else {\n headGroup.insert('path', ':first-child').attr('class', 'ishikawa-head').attr('d', headPath);\n }\n textEl.attr('transform', `translate(${(w - tb.width) / 2 - tb.x + 3},${-tb.y - tb.height / 2})`);\n};\n\ninterface LabelEntry {\n text: string;\n depth: number;\n parentIndex: number;\n childCount: number;\n}\n\ninterface BoneInfo {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n childCount: number;\n childrenDrawn: number;\n}\n\n// Flatten children so we can assign Y positions without recursion when drawing.\n// Even depths are placed in pre-order (close to the spine), odd depths in post-order\n// to keep diagonal bones within their parent wedge.\nconst flattenTree = (children: IshikawaNode[], direction: 1 | -1) => {\n const entries: LabelEntry[] = [];\n const yOrder: number[] = [];\n const walk = (nodes: IshikawaNode[], pid: number, depth: number) => {\n const ordered = direction === -1 ? [...nodes].reverse() : nodes;\n for (const child of ordered) {\n const idx = entries.length;\n const gc = child.children ?? [];\n entries.push({\n depth,\n text: wrapText(child.text, 15),\n parentIndex: pid,\n childCount: gc.length,\n });\n if (depth % 2 === 0) {\n // Even-depth: pre-order (closer to spine)\n yOrder.push(idx);\n if (gc.length) {\n walk(gc, idx, depth + 1);\n }\n } else {\n // odd-depth: post-order (within parent diagonal)\n if (gc.length) {\n walk(gc, idx, depth + 1);\n }\n yOrder.push(idx);\n }\n }\n };\n walk(children, -1, 2);\n return { entries, yOrder };\n};\n\nconst drawCauseLabel = (\n svg: SVGGroup,\n text: string,\n x: number,\n y: number,\n direction: 1 | -1,\n fontSize: number,\n roughContext?: RoughContext\n) => {\n const lg = svg.append('g').attr('class', 'ishikawa-label-group');\n const lt = drawMultilineText(\n lg,\n text,\n x,\n y + 11 * direction,\n 'ishikawa-label cause',\n 'middle',\n fontSize\n );\n const tb = lt.node()!.getBBox();\n if (roughContext) {\n const roughNode = roughContext.roughSvg.rectangle(\n tb.x - 20,\n tb.y - 2,\n tb.width + 40,\n tb.height + 4,\n {\n roughness: 1.5,\n seed: roughContext.seed,\n fill: roughContext.fillColor,\n fillStyle: 'hachure',\n fillWeight: 2.5,\n hachureGap: 5,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n }\n );\n lg.insert(() => roughNode, ':first-child').attr('class', 'ishikawa-label-box');\n } else {\n lg.insert('rect', ':first-child')\n .attr('class', 'ishikawa-label-box')\n .attr('x', tb.x - 20)\n .attr('y', tb.y - 2)\n .attr('width', tb.width + 40)\n .attr('height', tb.height + 4);\n }\n};\n\n// Emulate arrow marker since rough.js does not support marker on line\nconst drawArrowMarker = (\n g: SVGGroup,\n x: number,\n y: number,\n dx: number,\n dy: number,\n roughContext: RoughContext\n) => {\n const len = Math.sqrt(dx * dx + dy * dy);\n if (len === 0) {\n return;\n }\n const ux = dx / len;\n const uy = dy / len;\n const s = 6;\n const px = -uy * s;\n const py = ux * s;\n const tipX = x;\n const tipY = y;\n const d = `M ${tipX} ${tipY} L ${tipX - ux * s * 2 + px} ${tipY - uy * s * 2 + py} L ${tipX - ux * s * 2 - px} ${tipY - uy * s * 2 - py} Z`;\n const roughNode = roughContext.roughSvg.path(d, {\n roughness: 1,\n seed: roughContext.seed,\n fill: roughContext.lineColor,\n fillStyle: 'solid',\n stroke: roughContext.lineColor,\n strokeWidth: 1,\n });\n g.append(() => roughNode);\n};\n\nconst drawBranch = (\n svg: SVGGroup,\n node: IshikawaNode,\n startX: number,\n startY: number,\n direction: 1 | -1,\n length: number,\n fontSize: number,\n roughContext?: RoughContext\n): void => {\n const children = node.children ?? [];\n const lineLen = length * (children.length ? 1 : 0.2);\n const dx = -COS_A * lineLen;\n const dy = SIN_A * lineLen * direction;\n const endX = startX + dx;\n const endY = startY + dy;\n\n drawLine(svg, startX, startY, endX, endY, 'ishikawa-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(svg, startX, startY, startX - endX, startY - endY, roughContext);\n }\n drawCauseLabel(svg, node.text, endX, endY, direction, fontSize, roughContext);\n\n if (!children.length) {\n return;\n }\n\n const { entries, yOrder } = flattenTree(children, direction);\n const entryCount = entries.length;\n const ys = new Array(entryCount);\n for (const [slot, entryIdx] of yOrder.entries()) {\n ys[entryIdx] = startY + dy * ((slot + 1) / (entryCount + 1));\n }\n\n const bones = new Map();\n bones.set(-1, {\n x0: startX,\n y0: startY,\n x1: endX,\n y1: endY,\n childCount: children.length,\n childrenDrawn: 0,\n });\n\n const diagonalX = -COS_A;\n const diagonalY = SIN_A * direction;\n const oddLabel = direction < 0 ? 'ishikawa-label up' : 'ishikawa-label down';\n\n for (const [i, e] of entries.entries()) {\n const y = ys[i];\n const par = bones.get(e.parentIndex)!;\n const grp = svg.append('g').attr('class', 'ishikawa-sub-group');\n\n let bx0 = 0;\n let by0 = 0;\n let bx1 = 0;\n\n if (e.depth % 2 === 0) {\n // Horizontal bone: attach to parent's diagonal at the target Y, extend left\n const dyP = par.y1 - par.y0;\n bx0 = lerp(par.x0, par.x1, dyP ? (y - par.y0) / dyP : 0.5);\n by0 = y;\n bx1 = bx0 - (e.childCount > 0 ? BONE_BASE + e.childCount * BONE_PER_CHILD : BONE_STUB);\n drawLine(grp, bx0, y, bx1, y, 'ishikawa-sub-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(grp, bx0, y, 1, 0, roughContext);\n }\n drawMultilineText(grp, e.text, bx1, y, 'ishikawa-label align', 'end', fontSize);\n } else {\n // Diagonal bone: start from evenly-spaced point on parent's horizontal, angle toward target Y\n const k = par.childrenDrawn++;\n bx0 = lerp(par.x0, par.x1, (par.childCount - k) / (par.childCount + 1));\n by0 = par.y0;\n bx1 = bx0 + diagonalX * ((y - by0) / diagonalY);\n drawLine(grp, bx0, by0, bx1, y, 'ishikawa-sub-branch', roughContext);\n if (roughContext) {\n drawArrowMarker(grp, bx0, by0, bx0 - bx1, by0 - y, roughContext);\n }\n drawMultilineText(grp, e.text, bx1, y, oddLabel, 'end', fontSize);\n }\n\n if (e.childCount > 0) {\n bones.set(i, {\n x0: bx0,\n y0: by0,\n x1: bx1,\n y1: y,\n childCount: e.childCount,\n childrenDrawn: 0,\n });\n }\n }\n};\n\nconst splitLines = (text: string): string[] => text.split(/|\\n/);\n\nconst wrapText = (text: string, maxChars: number): string => {\n if (text.length <= maxChars) {\n return text;\n }\n const lines: string[] = [];\n for (const word of text.split(/\\s+/)) {\n const last = lines.length - 1;\n if (last >= 0 && lines[last].length + 1 + word.length <= maxChars) {\n lines[last] += ' ' + word;\n } else {\n lines.push(word);\n }\n }\n return lines.join('\\n');\n};\n\nconst drawMultilineText = (\n g: SVGGroup,\n text: string,\n x: number,\n y: number,\n cls: string,\n anchor: 'middle' | 'start' | 'end',\n fontSize: number\n) => {\n const lines = splitLines(text);\n const lh = fontSize * 1.05;\n const el = g\n .append('text')\n .attr('class', cls)\n .attr('text-anchor', anchor)\n .attr('x', x)\n .attr('y', y - ((lines.length - 1) * lh) / 2);\n for (const [i, line] of lines.entries()) {\n el.append('tspan')\n .attr('x', x)\n .attr('dy', i === 0 ? 0 : lh)\n .text(line);\n }\n return el;\n};\n\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\n\nconst drawLine = (\n g: SVGGroup,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n cls: string,\n roughContext?: RoughContext\n) => {\n if (roughContext) {\n const roughNode = roughContext.roughSvg.line(x1, y1, x2, y2, {\n roughness: 1.5,\n seed: roughContext.seed,\n stroke: roughContext.lineColor,\n strokeWidth: 2,\n });\n g.append(() => roughNode).attr('class', cls);\n return undefined;\n }\n return g\n .append('line')\n .attr('class', cls)\n .attr('x1', x1)\n .attr('y1', y1)\n .attr('x2', x2)\n .attr('y2', y2);\n};\n\nexport const renderer: DiagramRenderer = { draw };\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\n\nconst getStyles: DiagramStylesProvider = (options) => `\n.ishikawa .ishikawa-spine,\n.ishikawa .ishikawa-branch,\n.ishikawa .ishikawa-sub-branch {\n stroke: ${options.lineColor};\n stroke-width: 2;\n fill: none;\n}\n\n.ishikawa .ishikawa-sub-branch {\n stroke-width: 1;\n}\n\n.ishikawa .ishikawa-arrow {\n fill: ${options.lineColor};\n}\n\n.ishikawa .ishikawa-head {\n fill: ${options.mainBkg};\n stroke: ${options.lineColor};\n stroke-width: 2;\n}\n\n.ishikawa .ishikawa-label-box {\n fill: ${options.mainBkg};\n stroke: ${options.lineColor};\n stroke-width: 2;\n}\n\n.ishikawa text {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor};\n}\n\n.ishikawa .ishikawa-head-label {\n font-weight: 600;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: 14px;\n}\n\n.ishikawa .ishikawa-label {\n text-anchor: end;\n}\n\n.ishikawa .ishikawa-label.cause {\n text-anchor: middle;\n dominant-baseline: middle;\n}\n\n.ishikawa .ishikawa-label.align {\n text-anchor: end;\n dominant-baseline: middle;\n}\n\n.ishikawa .ishikawa-label.up {\n dominant-baseline: baseline;\n}\n\n.ishikawa .ishikawa-label.down {\n dominant-baseline: hanging;\n}\n`;\n\nexport default getStyles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/ishikawa.jison';\nimport { IshikawaDB } from './ishikawaDb.js';\nimport { renderer } from './ishikawaRenderer.js';\nimport styles from './ishikawaStyles.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new IshikawaDB();\n },\n renderer,\n styles,\n};\n"], + "mappings": "kVAyEA,IAAIA,IAAU,UAAU,CACxB,IAAIC,EAAEC,EAAA,SAASC,EAAEC,EAAEH,EAAEI,EAAE,CAAC,IAAIJ,EAAEA,GAAG,CAAC,EAAEI,EAAEF,EAAE,OAAOE,IAAIJ,EAAEE,EAAEE,CAAC,CAAC,EAAED,EAAE,CAAC,OAAOH,CAAC,EAAhE,KAAkEK,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAClOlB,EAAS,CAAC,MAAOE,EAAA,UAAkB,CAAE,EAApB,SACrB,GAAI,CAAC,EACL,SAAU,CAAC,MAAQ,EAAE,MAAQ,EAAE,SAAW,EAAE,WAAa,EAAE,UAAY,EAAE,GAAK,EAAE,SAAW,EAAE,SAAW,EAAE,KAAO,GAAG,IAAM,GAAG,UAAY,GAAG,UAAY,GAAG,KAAO,GAAG,QAAU,EAAE,KAAO,CAAC,EACzL,WAAY,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,EAC1F,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EACrI,cAAeA,EAAA,SAAmBiB,EAAQC,EAAQC,EAAUC,EAAIC,EAAyBC,EAAiBC,EAAiB,CAG3H,IAAIC,EAAKF,EAAG,OAAS,EACrB,OAAQD,EAAS,CACjB,IAAK,GAAG,IAAK,GACZ,OAAOD,EAER,IAAK,IACJA,EAAG,QAAQE,EAAGE,EAAG,CAAC,EAAE,OAAQF,EAAGE,CAAE,EAAE,KAAK,CAAC,EAC1C,MACA,IAAK,IACJJ,EAAG,QAAQ,EAAGE,EAAGE,CAAE,EAAE,KAAK,CAAC,EAC5B,KACA,CACA,EAfe,aAgBf,MAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEpB,CAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEA,CAAG,EAAE,CAAC,EAAEC,EAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAER,EAAES,EAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAET,EAAES,EAAI,CAAC,EAAE,CAAC,CAAC,EAAET,EAAES,EAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEH,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,EAAEF,EAAI,EAAE,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,EAAEE,EAAI,EAAEC,EAAI,GAAG,GAAG,GAAGC,CAAG,EAAEZ,EAAEa,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEb,EAAEa,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEb,EAAEa,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEH,EAAI,EAAEC,EAAI,GAAG,GAAG,GAAGC,CAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEN,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,CAAG,EAAER,EAAEc,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEC,EAAI,GAAGC,CAAG,CAAC,EAAEhB,EAAEiB,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEjB,EAAEiB,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEjB,EAAEiB,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEjB,EAAEa,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEb,EAAEc,EAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEC,EAAI,GAAGC,CAAG,CAAC,EAAEhB,EAAEiB,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEjB,EAAEiB,EAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAC5gB,eAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAChC,WAAYhB,EAAA,SAAqByB,EAAKC,EAAM,CACxC,GAAIA,EAAK,YACL,KAAK,MAAMD,CAAG,MACX,CACH,IAAIE,EAAQ,IAAI,MAAMF,CAAG,EACzB,MAAAE,EAAM,KAAOD,EACPC,CACV,CACJ,EARY,cASZ,MAAO3B,EAAA,SAAe4B,EAAO,CACzB,IAAIC,EAAO,KAAMC,EAAQ,CAAC,CAAC,EAAGC,EAAS,CAAC,EAAGC,EAAS,CAAC,IAAI,EAAGC,EAAS,CAAC,EAAGC,EAAQ,KAAK,MAAOjB,EAAS,GAAIE,EAAW,EAAGD,EAAS,EAAGiB,EAAa,EAAGC,EAAS,EAAGC,EAAM,EAClKC,EAAOL,EAAO,MAAM,KAAK,UAAW,CAAC,EACrCM,EAAQ,OAAO,OAAO,KAAK,KAAK,EAChCC,EAAc,CAAE,GAAI,CAAC,CAAE,EAC3B,QAASvC,KAAK,KAAK,GACX,OAAO,UAAU,eAAe,KAAK,KAAK,GAAIA,CAAC,IAC/CuC,EAAY,GAAGvC,CAAC,EAAI,KAAK,GAAGA,CAAC,GAGrCsC,EAAM,SAASX,EAAOY,EAAY,EAAE,EACpCA,EAAY,GAAG,MAAQD,EACvBC,EAAY,GAAG,OAAS,KACpB,OAAOD,EAAM,OAAU,MACvBA,EAAM,OAAS,CAAC,GAEpB,IAAIE,EAAQF,EAAM,OAClBN,EAAO,KAAKQ,CAAK,EACjB,IAAIC,EAASH,EAAM,SAAWA,EAAM,QAAQ,OACxC,OAAOC,EAAY,GAAG,YAAe,WACrC,KAAK,WAAaA,EAAY,GAAG,WAEjC,KAAK,WAAa,OAAO,eAAe,IAAI,EAAE,WAElD,SAASG,GAASC,EAAG,CACjBd,EAAM,OAASA,EAAM,OAAS,EAAIc,EAClCZ,EAAO,OAASA,EAAO,OAASY,EAChCX,EAAO,OAASA,EAAO,OAASW,CACpC,CAJS5C,EAAA2C,GAAA,YAKD,SAASE,IAAM,CACf,IAAIC,EACJ,OAAAA,EAAQf,EAAO,IAAI,GAAKQ,EAAM,IAAI,GAAKF,EACnC,OAAOS,GAAU,WACbA,aAAiB,QACjBf,EAASe,EACTA,EAAQf,EAAO,IAAI,GAEvBe,EAAQjB,EAAK,SAASiB,CAAK,GAAKA,GAE7BA,CACX,CAXa9C,EAAA6C,GAAA,OAajB,QADIE,EAAQC,EAAgBC,EAAOC,EAAQC,GAAGC,EAAGC,EAAQ,CAAC,EAAGC,EAAGC,EAAKC,GAAUC,IAClE,CAUT,GATAR,EAAQnB,EAAMA,EAAM,OAAS,CAAC,EAC1B,KAAK,eAAemB,CAAK,EACzBC,EAAS,KAAK,eAAeD,CAAK,IAE9BF,IAAW,MAAQ,OAAOA,EAAU,OACpCA,EAASF,GAAI,GAEjBK,EAAShB,EAAMe,CAAK,GAAKf,EAAMe,CAAK,EAAEF,CAAM,GAE5C,OAAOG,EAAW,KAAe,CAACA,EAAO,QAAU,CAACA,EAAO,CAAC,EAAG,CAC/D,IAAIQ,EAAS,GACbD,EAAW,CAAC,EACZ,IAAKH,KAAKpB,EAAMe,CAAK,EACb,KAAK,WAAWK,CAAC,GAAKA,EAAIlB,GAC1BqB,EAAS,KAAK,IAAO,KAAK,WAAWH,CAAC,EAAI,GAAI,EAGlDf,EAAM,aACNmB,EAAS,wBAA0BvC,EAAW,GAAK;AAAA,EAAQoB,EAAM,aAAa,EAAI;AAAA,YAAiBkB,EAAS,KAAK,IAAI,EAAI,WAAc,KAAK,WAAWV,CAAM,GAAKA,GAAU,IAE5KW,EAAS,wBAA0BvC,EAAW,GAAK,iBAAmB4B,GAAUV,EAAM,eAAiB,KAAQ,KAAK,WAAWU,CAAM,GAAKA,GAAU,KAExJ,KAAK,WAAWW,EAAQ,CACpB,KAAMnB,EAAM,MACZ,MAAO,KAAK,WAAWQ,CAAM,GAAKA,EAClC,KAAMR,EAAM,SACZ,IAAKE,EACL,SAAUgB,CACd,CAAC,CACL,CACA,GAAIP,EAAO,CAAC,YAAa,OAASA,EAAO,OAAS,EAC9C,MAAM,IAAI,MAAM,oDAAsDD,EAAQ,YAAcF,CAAM,EAEtG,OAAQG,EAAO,CAAC,EAAG,CACnB,IAAK,GACDpB,EAAM,KAAKiB,CAAM,EACjBf,EAAO,KAAKO,EAAM,MAAM,EACxBN,EAAO,KAAKM,EAAM,MAAM,EACxBT,EAAM,KAAKoB,EAAO,CAAC,CAAC,EACpBH,EAAS,KACJC,GASDD,EAASC,EACTA,EAAiB,OATjB9B,EAASqB,EAAM,OACftB,EAASsB,EAAM,OACfpB,EAAWoB,EAAM,SACjBE,EAAQF,EAAM,OACVJ,EAAa,GACbA,KAMR,MACJ,IAAK,GAwBD,GAvBAoB,EAAM,KAAK,aAAaL,EAAO,CAAC,CAAC,EAAE,CAAC,EACpCG,EAAM,EAAIrB,EAAOA,EAAO,OAASuB,CAAG,EACpCF,EAAM,GAAK,CACP,WAAYpB,EAAOA,EAAO,QAAUsB,GAAO,EAAE,EAAE,WAC/C,UAAWtB,EAAOA,EAAO,OAAS,CAAC,EAAE,UACrC,aAAcA,EAAOA,EAAO,QAAUsB,GAAO,EAAE,EAAE,aACjD,YAAatB,EAAOA,EAAO,OAAS,CAAC,EAAE,WAC3C,EACIS,IACAW,EAAM,GAAG,MAAQ,CACbpB,EAAOA,EAAO,QAAUsB,GAAO,EAAE,EAAE,MAAM,CAAC,EAC1CtB,EAAOA,EAAO,OAAS,CAAC,EAAE,MAAM,CAAC,CACrC,GAEJmB,EAAI,KAAK,cAAc,MAAMC,EAAO,CAChCpC,EACAC,EACAC,EACAqB,EAAY,GACZU,EAAO,CAAC,EACRlB,EACAC,CACJ,EAAE,OAAOK,CAAI,CAAC,EACV,OAAOc,EAAM,IACb,OAAOA,EAEPG,IACAzB,EAAQA,EAAM,MAAM,EAAG,GAAKyB,EAAM,CAAC,EACnCvB,EAASA,EAAO,MAAM,EAAG,GAAKuB,CAAG,EACjCtB,EAASA,EAAO,MAAM,EAAG,GAAKsB,CAAG,GAErCzB,EAAM,KAAK,KAAK,aAAaoB,EAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1ClB,EAAO,KAAKqB,EAAM,CAAC,EACnBpB,EAAO,KAAKoB,EAAM,EAAE,EACpBG,GAAWtB,EAAMJ,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAEA,EAAMA,EAAM,OAAS,CAAC,CAAC,EACjEA,EAAM,KAAK0B,EAAQ,EACnB,MACJ,IAAK,GACD,MAAO,EACX,CACJ,CACA,MAAO,EACX,EA3IO,QA2IN,EAGGjB,GAAS,UAAU,CACvB,IAAIA,EAAS,CAEb,IAAI,EAEJ,WAAWvC,EAAA,SAAoByB,EAAKC,EAAM,CAClC,GAAI,KAAK,GAAG,OACR,KAAK,GAAG,OAAO,WAAWD,EAAKC,CAAI,MAEnC,OAAM,IAAI,MAAMD,CAAG,CAE3B,EANO,cASX,SAASzB,EAAA,SAAU4B,EAAOR,EAAI,CACtB,YAAK,GAAKA,GAAM,KAAK,IAAM,CAAC,EAC5B,KAAK,OAASQ,EACd,KAAK,MAAQ,KAAK,WAAa,KAAK,KAAO,GAC3C,KAAK,SAAW,KAAK,OAAS,EAC9B,KAAK,OAAS,KAAK,QAAU,KAAK,MAAQ,GAC1C,KAAK,eAAiB,CAAC,SAAS,EAChC,KAAK,OAAS,CACV,WAAY,EACZ,aAAc,EACd,UAAW,EACX,YAAa,CACjB,EACI,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAAC,EAAE,CAAC,GAE5B,KAAK,OAAS,EACP,IACX,EAlBK,YAqBT,MAAM5B,EAAA,UAAY,CACV,IAAI2D,EAAK,KAAK,OAAO,CAAC,EACtB,KAAK,QAAUA,EACf,KAAK,SACL,KAAK,SACL,KAAK,OAASA,EACd,KAAK,SAAWA,EAChB,IAAIC,EAAQD,EAAG,MAAM,iBAAiB,EACtC,OAAIC,GACA,KAAK,WACL,KAAK,OAAO,aAEZ,KAAK,OAAO,cAEZ,KAAK,QAAQ,QACb,KAAK,OAAO,MAAM,CAAC,IAGvB,KAAK,OAAS,KAAK,OAAO,MAAM,CAAC,EAC1BD,CACX,EApBE,SAuBN,MAAM3D,EAAA,SAAU2D,EAAI,CACZ,IAAIJ,EAAMI,EAAG,OACTC,EAAQD,EAAG,MAAM,eAAe,EAEpC,KAAK,OAASA,EAAK,KAAK,OACxB,KAAK,OAAS,KAAK,OAAO,OAAO,EAAG,KAAK,OAAO,OAASJ,CAAG,EAE5D,KAAK,QAAUA,EACf,IAAIM,EAAW,KAAK,MAAM,MAAM,eAAe,EAC/C,KAAK,MAAQ,KAAK,MAAM,OAAO,EAAG,KAAK,MAAM,OAAS,CAAC,EACvD,KAAK,QAAU,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAS,CAAC,EAEzDD,EAAM,OAAS,IACf,KAAK,UAAYA,EAAM,OAAS,GAEpC,IAAIR,EAAI,KAAK,OAAO,MAEpB,YAAK,OAAS,CACV,WAAY,KAAK,OAAO,WACxB,UAAW,KAAK,SAAW,EAC3B,aAAc,KAAK,OAAO,aAC1B,YAAaQ,GACRA,EAAM,SAAWC,EAAS,OAAS,KAAK,OAAO,aAAe,GAC5DA,EAASA,EAAS,OAASD,EAAM,MAAM,EAAE,OAASA,EAAM,CAAC,EAAE,OAChE,KAAK,OAAO,aAAeL,CACjC,EAEI,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAACH,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,KAAK,OAASG,CAAG,GAEvD,KAAK,OAAS,KAAK,OAAO,OACnB,IACX,EAhCE,SAmCN,KAAKvD,EAAA,UAAY,CACT,YAAK,MAAQ,GACN,IACX,EAHC,QAML,OAAOA,EAAA,UAAY,CACX,GAAI,KAAK,QAAQ,gBACb,KAAK,WAAa,OAElB,QAAO,KAAK,WAAW,0BAA4B,KAAK,SAAW,GAAK;AAAA,EAAqI,KAAK,aAAa,EAAG,CAC9N,KAAM,GACN,MAAO,KACP,KAAM,KAAK,QACf,CAAC,EAGL,OAAO,IACX,EAZG,UAeP,KAAKA,EAAA,SAAU4C,EAAG,CACV,KAAK,MAAM,KAAK,MAAM,MAAMA,CAAC,CAAC,CAClC,EAFC,QAKL,UAAU5C,EAAA,UAAY,CACd,IAAI8D,EAAO,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAS,KAAK,MAAM,MAAM,EACzE,OAAQA,EAAK,OAAS,GAAK,MAAM,IAAMA,EAAK,OAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,CAC7E,EAHM,aAMV,cAAc9D,EAAA,UAAY,CAClB,IAAI+D,EAAO,KAAK,MAChB,OAAIA,EAAK,OAAS,KACdA,GAAQ,KAAK,OAAO,OAAO,EAAG,GAAGA,EAAK,MAAM,IAExCA,EAAK,OAAO,EAAE,EAAE,GAAKA,EAAK,OAAS,GAAK,MAAQ,KAAK,QAAQ,MAAO,EAAE,CAClF,EANU,iBASd,aAAa/D,EAAA,UAAY,CACjB,IAAIgE,EAAM,KAAK,UAAU,EACrBC,EAAI,IAAI,MAAMD,EAAI,OAAS,CAAC,EAAE,KAAK,GAAG,EAC1C,OAAOA,EAAM,KAAK,cAAc,EAAI;AAAA,EAAOC,EAAI,GACnD,EAJS,gBAOb,WAAWjE,EAAA,SAASkE,EAAOC,EAAc,CACjC,IAAIrB,EACAc,EACAQ,EAwDJ,GAtDI,KAAK,QAAQ,kBAEbA,EAAS,CACL,SAAU,KAAK,SACf,OAAQ,CACJ,WAAY,KAAK,OAAO,WACxB,UAAW,KAAK,UAChB,aAAc,KAAK,OAAO,aAC1B,YAAa,KAAK,OAAO,WAC7B,EACA,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,QAAS,KAAK,QACd,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,GAAI,KAAK,GACT,eAAgB,KAAK,eAAe,MAAM,CAAC,EAC3C,KAAM,KAAK,IACf,EACI,KAAK,QAAQ,SACbA,EAAO,OAAO,MAAQ,KAAK,OAAO,MAAM,MAAM,CAAC,IAIvDR,EAAQM,EAAM,CAAC,EAAE,MAAM,iBAAiB,EACpCN,IACA,KAAK,UAAYA,EAAM,QAE3B,KAAK,OAAS,CACV,WAAY,KAAK,OAAO,UACxB,UAAW,KAAK,SAAW,EAC3B,aAAc,KAAK,OAAO,YAC1B,YAAaA,EACAA,EAAMA,EAAM,OAAS,CAAC,EAAE,OAASA,EAAMA,EAAM,OAAS,CAAC,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAE,OAC5E,KAAK,OAAO,YAAcM,EAAM,CAAC,EAAE,MACpD,EACA,KAAK,QAAUA,EAAM,CAAC,EACtB,KAAK,OAASA,EAAM,CAAC,EACrB,KAAK,QAAUA,EACf,KAAK,OAAS,KAAK,OAAO,OACtB,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAAC,KAAK,OAAQ,KAAK,QAAU,KAAK,MAAM,GAEhE,KAAK,MAAQ,GACb,KAAK,WAAa,GAClB,KAAK,OAAS,KAAK,OAAO,MAAMA,EAAM,CAAC,EAAE,MAAM,EAC/C,KAAK,SAAWA,EAAM,CAAC,EACvBpB,EAAQ,KAAK,cAAc,KAAK,KAAM,KAAK,GAAI,KAAMqB,EAAc,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,CAAC,EAClH,KAAK,MAAQ,KAAK,SAClB,KAAK,KAAO,IAEZrB,EACA,OAAOA,EACJ,GAAI,KAAK,WAAY,CAExB,QAAS7C,KAAKmE,EACV,KAAKnE,CAAC,EAAImE,EAAOnE,CAAC,EAEtB,MAAO,EACX,CACA,MAAO,EACX,EArEO,cAwEX,KAAKD,EAAA,UAAY,CACT,GAAI,KAAK,KACL,OAAO,KAAK,IAEX,KAAK,SACN,KAAK,KAAO,IAGhB,IAAI8C,EACAoB,EACAG,EACAC,EACC,KAAK,QACN,KAAK,OAAS,GACd,KAAK,MAAQ,IAGjB,QADIC,EAAQ,KAAK,cAAc,EACtBC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAE9B,GADAH,EAAY,KAAK,OAAO,MAAM,KAAK,MAAME,EAAMC,CAAC,CAAC,CAAC,EAC9CH,IAAc,CAACH,GAASG,EAAU,CAAC,EAAE,OAASH,EAAM,CAAC,EAAE,SAGvD,GAFAA,EAAQG,EACRC,EAAQE,EACJ,KAAK,QAAQ,gBAAiB,CAE9B,GADA1B,EAAQ,KAAK,WAAWuB,EAAWE,EAAMC,CAAC,CAAC,EACvC1B,IAAU,GACV,OAAOA,EACJ,GAAI,KAAK,WAAY,CACxBoB,EAAQ,GACR,QACJ,KAEI,OAAO,EAEf,SAAW,CAAC,KAAK,QAAQ,KACrB,MAIZ,OAAIA,GACApB,EAAQ,KAAK,WAAWoB,EAAOK,EAAMD,CAAK,CAAC,EACvCxB,IAAU,GACHA,EAGJ,IAEP,KAAK,SAAW,GACT,KAAK,IAEL,KAAK,WAAW,0BAA4B,KAAK,SAAW,GAAK;AAAA,EAA2B,KAAK,aAAa,EAAG,CACpH,KAAM,GACN,MAAO,KACP,KAAM,KAAK,QACf,CAAC,CAET,EAvDC,QA0DL,IAAI9C,EAAA,UAAgB,CACZ,IAAIoD,EAAI,KAAK,KAAK,EAClB,OAAIA,GAGO,KAAK,IAAI,CAExB,EAPA,OAUJ,MAAMpD,EAAA,SAAgByE,EAAW,CACzB,KAAK,eAAe,KAAKA,CAAS,CACtC,EAFE,SAKN,SAASzE,EAAA,UAAqB,CACtB,IAAI,EAAI,KAAK,eAAe,OAAS,EACrC,OAAI,EAAI,EACG,KAAK,eAAe,IAAI,EAExB,KAAK,eAAe,CAAC,CAEpC,EAPK,YAUT,cAAcA,EAAA,UAA0B,CAChC,OAAI,KAAK,eAAe,QAAU,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,EACzE,KAAK,WAAW,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,CAAC,EAAE,MAErE,KAAK,WAAW,QAAW,KAE1C,EANU,iBASd,SAASA,EAAA,SAAmB,EAAG,CAEvB,OADA,EAAI,KAAK,eAAe,OAAS,EAAI,KAAK,IAAI,GAAK,CAAC,EAChD,GAAK,EACE,KAAK,eAAe,CAAC,EAErB,SAEf,EAPK,YAUT,UAAUA,EAAA,SAAoByE,EAAW,CACjC,KAAK,MAAMA,CAAS,CACxB,EAFM,aAKV,eAAezE,EAAA,UAA0B,CACjC,OAAO,KAAK,eAAe,MAC/B,EAFW,kBAGf,QAAS,CAAC,mBAAmB,EAAI,EACjC,cAAeA,EAAA,SAAmBoB,EAAGsD,EAAIC,EAA0BC,EAAU,CAC7E,IAAIC,EAAQD,EACZ,OAAOD,EAA2B,CAClC,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,GAEf,IAAK,GAAG,MAAO,IAEf,IAAK,GAAG,MAAO,IAEf,IAAK,GAAE,MAAO,GAEd,CACA,EApBe,aAqBf,MAAO,CAAC,gBAAgB,wBAAwB,mBAAmB,kBAAkB,cAAc,cAAc,eAAe,SAAS,EACzI,WAAY,CAAC,QAAU,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,UAAY,EAAI,CAAC,CACnE,EACA,OAAOpC,CACP,GAAG,EACHzC,EAAO,MAAQyC,EACf,SAASuC,GAAU,CACjB,KAAK,GAAK,CAAC,CACb,CAFS,OAAA9E,EAAA8E,EAAA,UAGTA,EAAO,UAAYhF,EAAOA,EAAO,OAASgF,EACnC,IAAIA,CACX,GAAG,EACFhF,GAAO,OAASA,GAEhB,IAAOiF,GAAQC,GC7kBT,IAAMC,EAAN,KAAsC,CAK3C,aAAc,CAHd,KAAQ,MAAsB,CAAC,EAI7B,KAAK,MAAQ,KAAK,MAAM,KAAK,IAAI,EACjC,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,EACrC,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,CACvC,CA5BF,MAmB6C,CAAAC,EAAA,mBAW3C,OAAc,CACZ,KAAK,KAAO,OACZ,KAAK,MAAQ,CAAC,EACd,KAAK,UAAY,OACjBC,GAAY,CACd,CAEA,SAAoC,CAClC,OAAO,KAAK,IACd,CAEA,QAAQC,EAAkBC,EAAoB,CAC5C,IAAMC,EAAQC,GAAO,aAAaF,EAAMG,EAAU,CAAC,EAEnD,GAAI,CAAC,KAAK,KAAM,CACd,KAAK,KAAO,CAAE,KAAMF,EAAO,SAAU,CAAC,CAAE,EACxC,KAAK,MAAQ,CAAC,CAAE,MAAO,EAAG,KAAM,KAAK,IAAK,CAAC,EAC3CG,GAAgBH,CAAK,EACrB,MACF,CAKA,KAAK,YAAcF,EAEnB,IAAIM,EAAQN,EAAW,KAAK,UAAY,EAMxC,IALIM,GAAS,IACXA,EAAQ,GAIH,KAAK,MAAM,OAAS,GAAK,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAAE,OAASA,GACzE,KAAK,MAAM,IAAI,EAGjB,IAAMC,EAAS,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAAE,KAC3CC,EAAqB,CAAE,KAAMN,EAAO,SAAU,CAAC,CAAE,EACvDK,EAAO,SAAS,KAAKC,CAAI,EACzB,KAAK,MAAM,KAAK,CAAE,MAAAF,EAAO,KAAAE,CAAK,CAAC,CACjC,CAEA,aAAsB,CACpB,OAAOC,GAAY,CACrB,CAEA,YAAYC,EAAqB,CAC/BC,GAAYD,CAAK,CACnB,CAEA,mBAA4B,CAC1B,OAAOE,GAAkB,CAC3B,CAEA,kBAAkBC,EAA2B,CAC3CC,GAAkBD,CAAW,CAC/B,CAEA,iBAA0B,CACxB,OAAOE,GAAgB,CACzB,CAEA,gBAAgBL,EAAqB,CACnCL,GAAgBK,CAAK,CACvB,CACF,EC7EA,IAAMM,GAAoB,GACpBC,EAAoB,IACpBC,GAAY,GACZC,GAAY,GACZC,GAAiB,EACjBC,GAAS,GAAK,KAAK,GAAM,IACzBC,GAAQ,KAAK,IAAID,EAAK,EACtBE,GAAQ,KAAK,IAAIF,EAAK,EAEtBG,GAAqBC,EAAA,CAACC,EAAYC,EAAaC,IAAkB,CACrE,IAAMC,EAAOH,EAAM,KAAK,EAAG,QAAQ,EAC7BI,EAAID,EAAK,MAAQF,EAAM,EACvBI,EAAIF,EAAK,OAASF,EAAM,EAC9BK,GAAiBN,EAAOK,EAAGD,EAAGF,CAAI,EAClCF,EAAM,KAAK,UAAW,GAAGG,EAAK,EAAIF,CAAG,IAAIE,EAAK,EAAIF,CAAG,IAAIG,CAAC,IAAIC,CAAC,EAAE,CACnE,EAN2B,sBAQrBE,GAAuBR,EAAA,CAACS,EAAOC,EAAIC,EAAUC,IAAqB,CAEtE,IAAMC,EADKD,EAAQ,GACH,QAAQ,EACxB,GAAI,CAACC,EACH,OAGF,IAAMC,EAAaC,EAAU,EACvB,CAAE,KAAAC,EAAM,cAAAC,EAAe,eAAAC,CAAe,EAAIJ,EAC1CK,EAAWC,GAAcN,EAAW,QAAQ,EAAE,CAAC,GAAKvB,GACpD8B,EAAcL,IAAS,YAEvBM,EAAST,EAAK,UAAY,CAAC,EAC3BU,EAAUT,EAAW,UAAU,gBAAkB,GACjDU,EAAcV,EAAW,UAAU,aAAe,GAClDW,EAAMC,GAAiBhB,CAAE,EACzBiB,EAAIF,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,UAAU,EAE5CG,EAAWP,EAAcQ,GAAM,IAAIJ,EAAI,KAAK,CAAE,EAAI,OAClDK,EAAyCF,EAC3C,CACE,SAAAA,EACA,KAAMX,GAAiB,EACvB,UAAWC,GAAgB,WAAa,OACxC,UAAWA,GAAgB,SAAW,MACxC,EACA,OAEEa,EAAW,kBAAkBrB,CAAE,GAChCW,GACHM,EAAE,OAAO,MAAM,EACZ,OAAO,QAAQ,EACf,KAAK,KAAMI,CAAQ,EACnB,KAAK,UAAW,WAAW,EAC3B,KAAK,OAAQ,CAAC,EACd,KAAK,OAAQ,CAAC,EACd,KAAK,cAAe,CAAC,EACrB,KAAK,eAAgB,CAAC,EACtB,KAAK,SAAU,MAAM,EACrB,OAAO,MAAM,EACb,KAAK,IAAK,wBAAwB,EAClC,KAAK,QAAS,gBAAgB,EAGnC,IAAIC,EAAS,EACTC,EAASzC,EAGP0C,EAAYb,EACd,OACAc,EAASR,EAAGK,EAAQC,EAAQD,EAAQC,EAAQ,gBAAgB,EAGhE,GAFAG,GAAST,EAAGK,EAAQC,EAAQpB,EAAK,KAAMM,EAAUW,CAAY,EAEzD,CAACR,EAAO,OAAQ,CACdD,GACFc,EAASR,EAAGK,EAAQC,EAAQD,EAAQC,EAAQ,iBAAkBH,CAAY,EAE5E/B,GAAmB0B,EAAKF,EAASC,CAAW,EAC5C,MACF,CAEAQ,GAAU,GAEV,IAAMK,EAAcf,EAAO,OAAO,CAACgB,EAAGC,IAAMA,EAAI,IAAM,CAAC,EACjDC,EAAclB,EAAO,OAAO,CAACgB,EAAGC,IAAMA,EAAI,IAAM,CAAC,EAEjDE,EAAaC,GAAUL,CAAW,EAClCM,EAAaD,GAAUF,CAAW,EAClCI,EAAkBH,EAAW,MAAQE,EAAW,MAElDE,EAAWrD,EACXsD,EAAWtD,EACf,GAAIoD,EAAkB,EAAG,CACvB,IAAMG,EAAOvD,EAAoB,EAC3BwD,EAASxD,EAAoB,GACnCqD,EAAW,KAAK,IAAIG,EAAQD,GAAQN,EAAW,MAAQG,EAAgB,EACvEE,EAAW,KAAK,IAAIE,EAAQD,GAAQJ,EAAW,MAAQC,EAAgB,CACzE,CAEA,IAAMK,EAAa9B,EAAW,EAC9B0B,EAAW,KAAK,IAAIA,EAAUJ,EAAW,IAAMQ,CAAU,EACzDH,EAAW,KAAK,IAAIA,EAAUH,EAAW,IAAMM,CAAU,EAEzDhB,EAAS,KAAK,IAAIY,EAAUrD,CAAiB,EACzC0C,GACFA,EAAU,KAAK,KAAMD,CAAM,EAAE,KAAK,KAAMA,CAAM,EAEhDN,EAAE,OAAO,sBAAsB,EAAE,KAAK,YAAa,eAAeM,CAAM,GAAG,EAE3E,IAAMiB,EAAY,KAAK,KAAK5B,EAAO,OAAS,CAAC,EAC7C,QAAS6B,EAAI,EAAGA,EAAID,EAAWC,IAAK,CAClC,IAAMC,EAAKzB,EAAE,OAAO,GAAG,EAAE,KAAK,QAAS,eAAe,EACtD,OAAW,CAAC0B,EAAOC,EAAKC,CAAG,GAAK,CAC9B,CAACjC,EAAO6B,EAAI,CAAC,EAAG,GAAIN,CAAQ,EAC5B,CAACvB,EAAO6B,EAAI,EAAI,CAAC,EAAG,EAAGL,CAAQ,CACjC,EACMO,GACFG,GAAWJ,EAAIC,EAAOrB,EAAQC,EAAQqB,EAAKC,EAAKpC,EAAUW,CAAY,EAG1EE,EAASoB,EACN,UAAU,MAAM,EAChB,MAAM,EACN,OAAO,CAACK,EAAMC,IAAM,KAAK,IAAID,EAAOC,EAAyB,QAAQ,EAAE,CAAC,EAAG,GAAQ,CACxF,CAEA,GAAIrC,EACFc,EAASR,EAAGK,EAAQC,EAAQ,EAAGA,EAAQ,iBAAkBH,CAAY,MAChE,CACLI,EAAW,KAAK,KAAMF,CAAM,EAC5B,IAAM2B,EAAY,QAAQ5B,CAAQ,IAClCJ,EAAE,UAAU,gDAAgD,EAAE,KAAK,eAAgBgC,CAAS,CAC9F,CACA5D,GAAmB0B,EAAKF,EAASC,CAAW,CAC9C,EAlH6B,QAoHvBkB,GAAY1C,EAAC4D,GAA0B,CAC3C,IAAMC,EAAmB7D,EAAC8D,GACxBA,EAAK,SAAS,OAAO,CAACC,EAAKC,IAAUD,EAAM,EAAIF,EAAiBG,CAAK,EAAG,CAAC,EADlD,oBAGzB,OAAOJ,EAAM,OACX,CAACK,EAAOH,IAAS,CACf,IAAMI,EAAcL,EAAiBC,CAAI,EACzC,OAAAG,EAAM,OAASC,EACfD,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAKC,CAAW,EACpCD,CACT,EACA,CAAE,MAAO,EAAG,IAAK,CAAE,CACrB,CACF,EAbkB,aAeZ7B,GAAWpC,EAAA,CACfyB,EACA0C,EACAC,EACAC,EACAlD,EACAW,IACS,CACT,IAAMwC,EAAW,KAAK,IAAI,EAAG,KAAK,MAAM,KAAOnD,EAAW,GAAI,CAAC,EACzDoD,EAAY9C,EACf,OAAO,GAAG,EACV,KAAK,QAAS,qBAAqB,EACnC,KAAK,YAAa,aAAa0C,CAAC,IAAIC,CAAC,GAAG,EAErCI,EAASC,EACbF,EACAG,GAASL,EAAOC,CAAQ,EACxB,EACA,EACA,sBACA,QACAnD,CACF,EACMwD,EAAKH,EAAO,KAAK,EAAG,QAAQ,EAC5BnE,EAAI,KAAK,IAAI,GAAIsE,EAAG,MAAQ,CAAC,EAC7BrE,EAAI,KAAK,IAAI,GAAIqE,EAAG,OAAS,EAAI,EAAE,EAEnCC,EAAW,OAAO,CAACtE,EAAI,CAAC,QAAQA,EAAI,CAAC,MAAMD,EAAI,GAAG,QAAQ,CAACC,EAAI,CAAC,KACtE,GAAIwB,EAAc,CAChB,IAAM+C,EAAY/C,EAAa,SAAS,KAAK8C,EAAU,CACrD,UAAW,IACX,KAAM9C,EAAa,KACnB,KAAMA,EAAa,UACnB,UAAW,UACX,WAAY,IACZ,WAAY,EACZ,OAAQA,EAAa,UACrB,YAAa,CACf,CAAC,EACDyC,EAAU,OAAO,IAAMM,EAAW,cAAc,EAAE,KAAK,QAAS,eAAe,CACjF,MACEN,EAAU,OAAO,OAAQ,cAAc,EAAE,KAAK,QAAS,eAAe,EAAE,KAAK,IAAKK,CAAQ,EAE5FJ,EAAO,KAAK,YAAa,cAAcnE,EAAIsE,EAAG,OAAS,EAAIA,EAAG,EAAI,CAAC,IAAI,CAACA,EAAG,EAAIA,EAAG,OAAS,CAAC,GAAG,CACjG,EA5CiB,YAiEXG,GAAc9E,EAAA,CAAC+E,EAA0BC,IAAsB,CACnE,IAAMC,EAAwB,CAAC,EACzBC,EAAmB,CAAC,EACpBC,EAAOnF,EAAA,CAAC4D,EAAuBwB,EAAaC,IAAkB,CAClE,IAAMC,EAAUN,IAAc,GAAK,CAAC,GAAGpB,CAAK,EAAE,QAAQ,EAAIA,EAC1D,QAAWI,KAASsB,EAAS,CAC3B,IAAMC,EAAMN,EAAQ,OACdO,EAAKxB,EAAM,UAAY,CAAC,EAC9BiB,EAAQ,KAAK,CACX,MAAAI,EACA,KAAMX,GAASV,EAAM,KAAM,EAAE,EAC7B,YAAaoB,EACb,WAAYI,EAAG,MACjB,CAAC,EACGH,EAAQ,IAAM,GAEhBH,EAAO,KAAKK,CAAG,EACXC,EAAG,QACLL,EAAKK,EAAID,EAAKF,EAAQ,CAAC,IAIrBG,EAAG,QACLL,EAAKK,EAAID,EAAKF,EAAQ,CAAC,EAEzBH,EAAO,KAAKK,CAAG,EAEnB,CACF,EAzBa,QA0Bb,OAAAJ,EAAKJ,EAAU,GAAI,CAAC,EACb,CAAE,QAAAE,EAAS,OAAAC,CAAO,CAC3B,EA/BoB,eAiCdO,GAAiBzF,EAAA,CACrByB,EACAiE,EACAvB,EACAC,EACAY,EACA7D,EACAW,IACG,CACH,IAAM6D,EAAKlE,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,sBAAsB,EAUzDkD,EATKF,EACTkB,EACAD,EACAvB,EACAC,EAAI,GAAKY,EACT,uBACA,SACA7D,CACF,EACc,KAAK,EAAG,QAAQ,EAC9B,GAAIW,EAAc,CAChB,IAAM+C,EAAY/C,EAAa,SAAS,UACtC6C,EAAG,EAAI,GACPA,EAAG,EAAI,EACPA,EAAG,MAAQ,GACXA,EAAG,OAAS,EACZ,CACE,UAAW,IACX,KAAM7C,EAAa,KACnB,KAAMA,EAAa,UACnB,UAAW,UACX,WAAY,IACZ,WAAY,EACZ,OAAQA,EAAa,UACrB,YAAa,CACf,CACF,EACA6D,EAAG,OAAO,IAAMd,EAAW,cAAc,EAAE,KAAK,QAAS,oBAAoB,CAC/E,MACEc,EAAG,OAAO,OAAQ,cAAc,EAC7B,KAAK,QAAS,oBAAoB,EAClC,KAAK,IAAKhB,EAAG,EAAI,EAAE,EACnB,KAAK,IAAKA,EAAG,EAAI,CAAC,EAClB,KAAK,QAASA,EAAG,MAAQ,EAAE,EAC3B,KAAK,SAAUA,EAAG,OAAS,CAAC,CAEnC,EA9CuB,kBAiDjBiB,GAAkB5F,EAAA,CACtB2B,EACAwC,EACAC,EACAyB,EACAC,EACAhE,IACG,CACH,IAAMyB,EAAM,KAAK,KAAKsC,EAAKA,EAAKC,EAAKA,CAAE,EACvC,GAAIvC,IAAQ,EACV,OAEF,IAAMwC,EAAKF,EAAKtC,EACVyC,EAAKF,EAAKvC,EACV0C,EAAI,EACJC,EAAK,CAACF,EAAKC,EACXE,EAAKJ,EAAKE,EACVG,EAAOjC,EACPkC,EAAOjC,EACPkC,EAAI,KAAKF,CAAI,IAAIC,CAAI,MAAMD,EAAOL,EAAKE,EAAI,EAAIC,CAAE,IAAIG,EAAOL,EAAKC,EAAI,EAAIE,CAAE,MAAMC,EAAOL,EAAKE,EAAI,EAAIC,CAAE,IAAIG,EAAOL,EAAKC,EAAI,EAAIE,CAAE,KACjItB,EAAY/C,EAAa,SAAS,KAAKwE,EAAG,CAC9C,UAAW,EACX,KAAMxE,EAAa,KACnB,KAAMA,EAAa,UACnB,UAAW,QACX,OAAQA,EAAa,UACrB,YAAa,CACf,CAAC,EACDH,EAAE,OAAO,IAAMkD,CAAS,CAC1B,EA7BwB,mBA+BlBrB,GAAaxD,EAAA,CACjByB,EACAqC,EACAyC,EACAC,EACAxB,EACAyB,EACAtF,EACAW,IACS,CACT,IAAMiD,EAAWjB,EAAK,UAAY,CAAC,EAC7B4C,EAAUD,GAAU1B,EAAS,OAAS,EAAI,IAC1Cc,EAAK,CAAChG,GAAQ6G,EACdZ,EAAKhG,GAAQ4G,EAAU1B,EACvB2B,EAAOJ,EAASV,EAChBe,EAAOJ,EAASV,EAQtB,GANA3D,EAASV,EAAK8E,EAAQC,EAAQG,EAAMC,EAAM,kBAAmB9E,CAAY,EACrEA,GACF8D,GAAgBnE,EAAK8E,EAAQC,EAAQD,EAASI,EAAMH,EAASI,EAAM9E,CAAY,EAEjF2D,GAAehE,EAAKqC,EAAK,KAAM6C,EAAMC,EAAM5B,EAAW7D,EAAUW,CAAY,EAExE,CAACiD,EAAS,OACZ,OAGF,GAAM,CAAE,QAAAE,EAAS,OAAAC,CAAO,EAAIJ,GAAYC,EAAUC,CAAS,EACrD6B,EAAa5B,EAAQ,OACrB6B,EAAK,IAAI,MAAcD,CAAU,EACvC,OAAW,CAACE,EAAMC,CAAQ,IAAK9B,EAAO,QAAQ,EAC5C4B,EAAGE,CAAQ,EAAIR,EAASV,IAAOiB,EAAO,IAAMF,EAAa,IAG3D,IAAMI,EAAQ,IAAI,IAClBA,EAAM,IAAI,GAAI,CACZ,GAAIV,EACJ,GAAIC,EACJ,GAAIG,EACJ,GAAIC,EACJ,WAAY7B,EAAS,OACrB,cAAe,CACjB,CAAC,EAED,IAAMmC,EAAY,CAACrH,GACbsH,EAAYrH,GAAQkF,EACpBoC,EAAWpC,EAAY,EAAI,oBAAsB,sBAEvD,OAAW,CAACzC,EAAG8E,CAAC,IAAKpC,EAAQ,QAAQ,EAAG,CACtC,IAAMb,EAAI0C,EAAGvE,CAAC,EACR+E,EAAML,EAAM,IAAII,EAAE,WAAW,EAC7BE,EAAM9F,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,oBAAoB,EAE1D+F,EAAM,EACNC,EAAM,EACNC,EAAM,EAEV,GAAIL,EAAE,MAAQ,IAAM,EAAG,CAErB,IAAMM,EAAML,EAAI,GAAKA,EAAI,GACzBE,EAAMI,GAAKN,EAAI,GAAIA,EAAI,GAAIK,GAAOvD,EAAIkD,EAAI,IAAMK,EAAM,EAAG,EACzDF,EAAMrD,EACNsD,EAAMF,GAAOH,EAAE,WAAa,EAAI3H,GAAY2H,EAAE,WAAa1H,GAAiBF,IAC5E0C,EAASoF,EAAKC,EAAKpD,EAAGsD,EAAKtD,EAAG,sBAAuBtC,CAAY,EAC7DA,GACF8D,GAAgB2B,EAAKC,EAAKpD,EAAG,EAAG,EAAGtC,CAAY,EAEjD2C,EAAkB8C,EAAKF,EAAE,KAAMK,EAAKtD,EAAG,uBAAwB,MAAOjD,CAAQ,CAChF,KAAO,CAEL,IAAM0G,EAAIP,EAAI,gBACdE,EAAMI,GAAKN,EAAI,GAAIA,EAAI,IAAKA,EAAI,WAAaO,IAAMP,EAAI,WAAa,EAAE,EACtEG,EAAMH,EAAI,GACVI,EAAMF,EAAMN,IAAc9C,EAAIqD,GAAON,GACrChF,EAASoF,EAAKC,EAAKC,EAAKC,EAAKtD,EAAG,sBAAuBtC,CAAY,EAC/DA,GACF8D,GAAgB2B,EAAKC,EAAKC,EAAKD,EAAME,EAAKD,EAAMrD,EAAGtC,CAAY,EAEjE2C,EAAkB8C,EAAKF,EAAE,KAAMK,EAAKtD,EAAGgD,EAAU,MAAOjG,CAAQ,CAClE,CAEIkG,EAAE,WAAa,GACjBJ,EAAM,IAAI1E,EAAG,CACX,GAAIiF,EACJ,GAAIC,EACJ,GAAIC,EACJ,GAAItD,EACJ,WAAYiD,EAAE,WACd,cAAe,CACjB,CAAC,CAEL,CACF,EA5FmB,cA8FbS,GAAa9H,EAAC0F,GAA2BA,EAAK,MAAM,eAAe,EAAtD,cAEbhB,GAAW1E,EAAA,CAAC0F,EAAcpB,IAA6B,CAC3D,GAAIoB,EAAK,QAAUpB,EACjB,OAAOoB,EAET,IAAMqC,EAAkB,CAAC,EACzB,QAAWC,KAAQtC,EAAK,MAAM,KAAK,EAAG,CACpC,IAAMuC,EAAOF,EAAM,OAAS,EACxBE,GAAQ,GAAKF,EAAME,CAAI,EAAE,OAAS,EAAID,EAAK,QAAU1D,EACvDyD,EAAME,CAAI,GAAK,IAAMD,EAErBD,EAAM,KAAKC,CAAI,CAEnB,CACA,OAAOD,EAAM,KAAK;AAAA,CAAI,CACxB,EAdiB,YAgBXtD,EAAoBzE,EAAA,CACxB2B,EACA+D,EACAvB,EACAC,EACA8D,EACAC,EACAhH,IACG,CACH,IAAM4G,EAAQD,GAAWpC,CAAI,EACvB0C,EAAKjH,EAAW,KAChBkH,EAAK1G,EACR,OAAO,MAAM,EACb,KAAK,QAASuG,CAAG,EACjB,KAAK,cAAeC,CAAM,EAC1B,KAAK,IAAKhE,CAAC,EACX,KAAK,IAAKC,GAAM2D,EAAM,OAAS,GAAKK,EAAM,CAAC,EAC9C,OAAW,CAAC7F,EAAG+F,CAAI,IAAKP,EAAM,QAAQ,EACpCM,EAAG,OAAO,OAAO,EACd,KAAK,IAAKlE,CAAC,EACX,KAAK,KAAM5B,IAAM,EAAI,EAAI6F,CAAE,EAC3B,KAAKE,CAAI,EAEd,OAAOD,CACT,EAxB0B,qBA0BpBT,GAAO5H,EAAA,CAACuI,EAAWC,EAAWC,IAAcF,GAAKC,EAAID,GAAKE,EAAnD,QAEPtG,EAAWnC,EAAA,CACf2B,EACA+G,EACAC,EACAC,EACAC,EACAX,EACApG,IACG,CACH,GAAIA,EAAc,CAChB,IAAM+C,EAAY/C,EAAa,SAAS,KAAK4G,EAAIC,EAAIC,EAAIC,EAAI,CAC3D,UAAW,IACX,KAAM/G,EAAa,KACnB,OAAQA,EAAa,UACrB,YAAa,CACf,CAAC,EACDH,EAAE,OAAO,IAAMkD,CAAS,EAAE,KAAK,QAASqD,CAAG,EAC3C,MACF,CACA,OAAOvG,EACJ,OAAO,MAAM,EACb,KAAK,QAASuG,CAAG,EACjB,KAAK,KAAMQ,CAAE,EACb,KAAK,KAAMC,CAAE,EACb,KAAK,KAAMC,CAAE,EACb,KAAK,KAAMC,CAAE,CAClB,EA1BiB,YA4BJC,GAA4B,CAAE,KAAAtI,EAAK,EC9fhD,IAAMuI,GAAmCC,EAACC,GAAY;AAAA;AAAA;AAAA;AAAA,YAI1CA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUnBA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA,UAIjBA,EAAQ,OAAO;AAAA,YACbA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,UAKnBA,EAAQ,OAAO;AAAA,YACbA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKZA,EAAQ,UAAU;AAAA,eACpBA,EAAQ,QAAQ;AAAA,UACrBA,EAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAhCc,aAiElCC,GAAQH,GC5DR,IAAMI,GAA6B,CACxC,OAAAC,GACA,IAAI,IAAK,CACP,OAAO,IAAIC,CACb,EACA,SAAAC,GACA,OAAAC,EACF", "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "ishikawa_default", "parser", "IshikawaDB", "__name", "clear", "rawLevel", "text", "label", "common_default", "getConfig", "setDiagramTitle", "level", "parent", "node", "getAccTitle", "title", "setAccTitle", "getAccDescription", "description", "setAccDescription", "getDiagramTitle", "FONT_SIZE_DEFAULT", "SPINE_BASE_LENGTH", "BONE_STUB", "BONE_BASE", "BONE_PER_CHILD", "ANGLE", "COS_A", "SIN_A", "applyPaddedViewBox", "__name", "svgEl", "pad", "maxW", "bbox", "w", "h", "configureSvgSize", "draw", "_text", "id", "_version", "diagram", "root", "drawConfig", "getConfig", "look", "handDrawnSeed", "themeVariables", "fontSize", "parseFontSize", "isHandDrawn", "causes", "padding", "useMaxWidth", "svg", "selectSvgElement", "g", "roughSvg", "at", "roughContext", "markerId", "spineX", "spineY", "spineLine", "drawLine", "drawHead", "upperCauses", "_", "i", "lowerCauses", "upperStats", "sideStats", "lowerStats", "descendantTotal", "upperLen", "lowerLen", "pool", "minLen", "minSpacing", "pairCount", "p", "pg", "cause", "dir", "len", "drawBranch", "left", "n", "markerUrl", "nodes", "countDescendants", "node", "sum", "child", "stats", "descendants", "x", "y", "label", "maxChars", "headGroup", "textEl", "drawMultilineText", "wrapText", "tb", "headPath", "roughNode", "flattenTree", "children", "direction", "entries", "yOrder", "walk", "pid", "depth", "ordered", "idx", "gc", "drawCauseLabel", "text", "lg", "drawArrowMarker", "dx", "dy", "ux", "uy", "s", "px", "py", "tipX", "tipY", "d", "startX", "startY", "length", "lineLen", "endX", "endY", "entryCount", "ys", "slot", "entryIdx", "bones", "diagonalX", "diagonalY", "oddLabel", "e", "par", "grp", "bx0", "by0", "bx1", "dyP", "lerp", "k", "splitLines", "lines", "word", "last", "cls", "anchor", "lh", "el", "line", "a", "b", "t", "x1", "y1", "x2", "y2", "renderer", "getStyles", "__name", "options", "ishikawaStyles_default", "diagram", "ishikawa_default", "IshikawaDB", "renderer", "ishikawaStyles_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-FZRSWBTQ.mjs b/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-FZRSWBTQ.mjs deleted file mode 100644 index 6108b00..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-FZRSWBTQ.mjs +++ /dev/null @@ -1,139 +0,0 @@ -import{a as mt}from"./chunk-KSICW3F5.mjs";import{a as dt,b as pt,c as gt,f as U}from"./chunk-W2A4CRWB.mjs";import"./chunk-XBXGYYE5.mjs";import{N as at,Q as ot,R as lt,S as ct,T as ht,U as ut,V as yt,W as ft,Y as P}from"./chunk-3UWU4A3N.mjs";import{F as G,h as z}from"./chunk-MGPAVIPZ.mjs";import{a as i}from"./chunk-VELTKBKT.mjs";var Z=(function(){var t=i(function(h,n,a,o){for(a=a||{},o=h.length;o--;a[h[o]]=n);return a},"o"),e=[6,8,10,11,12,14,16,17,18],s=[1,9],c=[1,10],r=[1,11],d=[1,12],u=[1,13],f=[1,14],g={trace:i(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:i(function(n,a,o,y,p,l,v){var k=l.length-1;switch(p){case 1:return l[k-1];case 2:this.$=[];break;case 3:l[k-1].push(l[k]),this.$=l[k-1];break;case 4:case 5:this.$=l[k];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(l[k].substr(6)),this.$=l[k].substr(6);break;case 9:this.$=l[k].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=l[k].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(l[k].substr(8)),this.$=l[k].substr(8);break;case 13:y.addTask(l[k-1],l[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:s,12:c,14:r,16:d,17:u,18:f},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:s,12:c,14:r,16:d,17:u,18:f},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:i(function(n,a){if(a.recoverable)this.trace(n);else{var o=new Error(n);throw o.hash=a,o}},"parseError"),parse:i(function(n){var a=this,o=[0],y=[],p=[null],l=[],v=this.table,k="",E=0,nt=0,it=0,St=2,rt=1,Mt=l.slice.call(arguments,1),b=Object.create(this.lexer),A={yy:{}};for(var Y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y)&&(A.yy[Y]=this.yy[Y]);b.setInput(n,A.yy),A.yy.lexer=b,A.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var q=b.yylloc;l.push(q);var Ct=b.options&&b.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ut(w){o.length=o.length-2*w,p.length=p.length-w,l.length=l.length-w}i(Ut,"popStack");function Et(){var w;return w=y.pop()||b.lex()||rt,typeof w!="number"&&(w instanceof Array&&(y=w,w=y.pop()),w=a.symbols_[w]||w),w}i(Et,"lex");for(var _,D,F,T,Zt,H,V={},j,M,st,W;;){if(F=o[o.length-1],this.defaultActions[F]?T=this.defaultActions[F]:((_===null||typeof _>"u")&&(_=Et()),T=v[F]&&v[F][_]),typeof T>"u"||!T.length||!T[0]){var X="";W=[];for(j in v[F])this.terminals_[j]&&j>St&&W.push("'"+this.terminals_[j]+"'");b.showPosition?X="Parse error on line "+(E+1)+`: -`+b.showPosition()+` -Expecting `+W.join(", ")+", got '"+(this.terminals_[_]||_)+"'":X="Parse error on line "+(E+1)+": Unexpected "+(_==rt?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(X,{text:b.match,token:this.terminals_[_]||_,line:b.yylineno,loc:q,expected:W})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+F+", token: "+_);switch(T[0]){case 1:o.push(_),p.push(b.yytext),l.push(b.yylloc),o.push(T[1]),_=null,D?(_=D,D=null):(nt=b.yyleng,k=b.yytext,E=b.yylineno,q=b.yylloc,it>0&&it--);break;case 2:if(M=this.productions_[T[1]][1],V.$=p[p.length-M],V._$={first_line:l[l.length-(M||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(M||1)].first_column,last_column:l[l.length-1].last_column},Ct&&(V._$.range=[l[l.length-(M||1)].range[0],l[l.length-1].range[1]]),H=this.performAction.apply(V,[k,nt,E,A.yy,T[1],p,l].concat(Mt)),typeof H<"u")return H;M&&(o=o.slice(0,-1*M*2),p=p.slice(0,-1*M),l=l.slice(0,-1*M)),o.push(this.productions_[T[1]][0]),p.push(V.$),l.push(V._$),st=v[o[o.length-2]][o[o.length-1]],o.push(st);break;case 3:return!0}}return!0},"parse")},m=(function(){var h={EOF:1,parseError:i(function(a,o){if(this.yy.parser)this.yy.parser.parseError(a,o);else throw new Error(a)},"parseError"),setInput:i(function(n,a){return this.yy=a||this.yy||{},this._input=n,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:i(function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var a=n.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},"input"),unput:i(function(n){var a=n.length,o=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),o.length-1&&(this.yylineno-=o.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:o?(o.length===y.length?this.yylloc.first_column:0)+y[y.length-o.length].length-o[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:i(function(){return this._more=!0,this},"more"),reject:i(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:i(function(n){this.unput(this.match.slice(n))},"less"),pastInput:i(function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:i(function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:i(function(){var n=this.pastInput(),a=new Array(n.length+1).join("-");return n+this.upcomingInput()+` -`+a+"^"},"showPosition"),test_match:i(function(n,a){var o,y,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),y=n[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+n[0].length},this.yytext+=n[0],this.match+=n[0],this.matches=n,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(n[0].length),this.matched+=n[0],o=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o)return o;if(this._backtrack){for(var l in p)this[l]=p[l];return!1}return!1},"test_match"),next:i(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var n,a,o,y;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),l=0;la[0].length)){if(a=o,y=l,this.options.backtrack_lexer){if(n=this.test_match(o,p[l]),n!==!1)return n;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(n=this.test_match(a,p[y]),n!==!1?n:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:i(function(){var a=this.next();return a||this.lex()},"lex"),begin:i(function(a){this.conditionStack.push(a)},"begin"),popState:i(function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:i(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:i(function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},"topState"),pushState:i(function(a){this.begin(a)},"pushState"),stateStackSize:i(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:i(function(a,o,y,p){var l=p;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return h})();g.lexer=m;function x(){this.yy={}}return i(x,"Parser"),x.prototype=g,g.Parser=x,new x})();Z.parser=Z;var xt=Z;var L="",J=[],B=[],N=[],Pt=i(function(){J.length=0,B.length=0,L="",N.length=0,ot()},"clear"),It=i(function(t){L=t,J.push(t)},"addSection"),At=i(function(){return J},"getSections"),Ft=i(function(){let t=kt(),e=100,s=0;for(;!t&&s{s.people&&t.push(...s.people)}),[...new Set(t)].sort()},"updateActors"),Lt=i(function(t,e){let s=e.substr(1).split(":"),c=0,r=[];s.length===1?(c=Number(s[0]),r=[]):(c=Number(s[0]),r=s[1].split(","));let d=r.map(f=>f.trim()),u={section:L,type:L,people:d,task:t,score:c};N.push(u)},"addTask"),Rt=i(function(t){let e={section:L,type:L,description:t,task:t,classes:[]};B.push(e)},"addTaskOrg"),kt=i(function(){let t=i(function(s){return N[s].processed},"compileTask"),e=!0;for(let[s,c]of N.entries())t(s),e=e&&c.processed;return e},"compileTasks"),Bt=i(function(){return Vt()},"getActors"),K={getConfig:i(()=>P().journey,"getConfig"),clear:Pt,setDiagramTitle:yt,getDiagramTitle:ft,setAccTitle:lt,getAccTitle:ct,setAccDescription:ht,getAccDescription:ut,addSection:It,getSections:At,getTasks:Ft,addTask:Lt,addTaskOrg:Rt,getActors:Bt};var Nt=i(t=>`.label { - font-family: ${t.fontFamily}; - color: ${t.textColor}; - } - .mouth { - stroke: #666; - } - - line { - stroke: ${t.textColor} - } - - .legend { - fill: ${t.textColor}; - font-family: ${t.fontFamily}; - } - - .label text { - fill: #333; - } - .label { - color: ${t.textColor} - } - - .face { - ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"}; - stroke: #999; - } - - .node rect, - .node circle, - .node ellipse, - .node polygon, - .node path { - fill: ${t.mainBkg}; - stroke: ${t.nodeBorder}; - stroke-width: 1px; - } - - .node .label { - text-align: center; - } - .node.clickable { - cursor: pointer; - } - - .arrowheadPath { - fill: ${t.arrowheadColor}; - } - - .edgePath .path { - stroke: ${t.lineColor}; - stroke-width: 1.5px; - } - - .flowchart-link { - stroke: ${t.lineColor}; - fill: none; - } - - .edgeLabel { - background-color: ${t.edgeLabelBackground}; - rect { - opacity: 0.5; - } - text-align: center; - } - - .cluster rect { - } - - .cluster text { - fill: ${t.titleColor}; - } - - div.mermaidTooltip { - position: absolute; - text-align: center; - max-width: 200px; - padding: 2px; - font-family: ${t.fontFamily}; - font-size: 12px; - background: ${t.tertiaryColor}; - border: 1px solid ${t.border2}; - border-radius: 2px; - pointer-events: none; - z-index: 100; - } - - .task-type-0, .section-type-0 { - ${t.fillType0?`fill: ${t.fillType0}`:""}; - } - .task-type-1, .section-type-1 { - ${t.fillType0?`fill: ${t.fillType1}`:""}; - } - .task-type-2, .section-type-2 { - ${t.fillType0?`fill: ${t.fillType2}`:""}; - } - .task-type-3, .section-type-3 { - ${t.fillType0?`fill: ${t.fillType3}`:""}; - } - .task-type-4, .section-type-4 { - ${t.fillType0?`fill: ${t.fillType4}`:""}; - } - .task-type-5, .section-type-5 { - ${t.fillType0?`fill: ${t.fillType5}`:""}; - } - .task-type-6, .section-type-6 { - ${t.fillType0?`fill: ${t.fillType6}`:""}; - } - .task-type-7, .section-type-7 { - ${t.fillType0?`fill: ${t.fillType7}`:""}; - } - - .actor-0 { - ${t.actor0?`fill: ${t.actor0}`:""}; - } - .actor-1 { - ${t.actor1?`fill: ${t.actor1}`:""}; - } - .actor-2 { - ${t.actor2?`fill: ${t.actor2}`:""}; - } - .actor-3 { - ${t.actor3?`fill: ${t.actor3}`:""}; - } - .actor-4 { - ${t.actor4?`fill: ${t.actor4}`:""}; - } - .actor-5 { - ${t.actor5?`fill: ${t.actor5}`:""}; - } - ${mt()} -`,"getStyles"),bt=Nt;var Q=i(function(t,e){return dt(t,e)},"drawRect"),jt=i(function(t,e){let c=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),r=t.append("g");r.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),r.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function d(g){let m=G().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);g.append("path").attr("class","mouth").attr("d",m).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}i(d,"smile");function u(g){let m=G().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);g.append("path").attr("class","mouth").attr("d",m).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}i(u,"sad");function f(g){g.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return i(f,"ambivalent"),e.score>3?d(r):e.score<3?u(r):f(r),c},"drawFace"),vt=i(function(t,e){let s=t.append("circle");return s.attr("cx",e.cx),s.attr("cy",e.cy),s.attr("class","actor-"+e.pos),s.attr("fill",e.fill),s.attr("stroke",e.stroke),s.attr("r",e.r),s.class!==void 0&&s.attr("class",s.class),e.title!==void 0&&s.append("title").text(e.title),s},"drawCircle"),wt=i(function(t,e){return gt(t,e)},"drawText"),Wt=i(function(t,e){function s(r,d,u,f,g){return r+","+d+" "+(r+u)+","+d+" "+(r+u)+","+(d+f-g)+" "+(r+u-g*1.2)+","+(d+f)+" "+r+","+(d+f)}i(s,"genPoints");let c=t.append("polygon");c.attr("points",s(e.x,e.y,50,20,7)),c.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,wt(t,e)},"drawLabel"),zt=i(function(t,e,s){let c=t.append("g"),r=U();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=s.width*e.taskCount+s.diagramMarginX*(e.taskCount-1),r.height=s.height,r.class="journey-section section-type-"+e.num,r.rx=3,r.ry=3,Q(c,r),Tt(s)(e.text,c,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+e.num},s,e.colour)},"drawSection"),_t=-1,Ot=i(function(t,e,s){let c=e.x+s.width/2,r=t.append("g");_t++,r.append("line").attr("id","task"+_t).attr("x1",c).attr("y1",e.y).attr("x2",c).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),jt(r,{cx:c,cy:300+(5-e.score)*30,score:e.score});let u=U();u.x=e.x,u.y=e.y,u.fill=e.fill,u.width=s.width,u.height=s.height,u.class="task task-type-"+e.num,u.rx=3,u.ry=3,Q(r,u);let f=e.x+14;e.people.forEach(g=>{let m=e.actors[g].color,x={cx:f,cy:e.y,r:7,fill:m,stroke:"#000",title:g,pos:e.actors[g].position};vt(r,x),f+=10}),Tt(s)(e.task,r,u.x,u.y,u.width,u.height,{class:"task"},s,e.colour)},"drawTask"),Yt=i(function(t,e){pt(t,e)},"drawBackgroundRect"),Tt=(function(){function t(r,d,u,f,g,m,x,h){let n=d.append("text").attr("x",u+g/2).attr("y",f+m/2+5).style("font-color",h).style("text-anchor","middle").text(r);c(n,x)}i(t,"byText");function e(r,d,u,f,g,m,x,h,n){let{taskFontSize:a,taskFontFamily:o}=h,y=r.split(//gi);for(let p=0;p{let d=C[r].color,u={cx:20,cy:c,r:7,fill:d,stroke:"#000",pos:C[r].position};R.drawCircle(t,u);let f=t.append("text").attr("visibility","hidden").text(r),g=f.node().getBoundingClientRect().width;f.remove();let m=[];if(g<=s)m=[r];else{let x=r.split(" "),h="";f=t.append("text").attr("visibility","hidden"),x.forEach(n=>{let a=h?`${h} ${n}`:n;if(f.text(a),f.node().getBoundingClientRect().width>s){if(h&&m.push(h),h=n,f.text(n),f.node().getBoundingClientRect().width>s){let y="";for(let p of n)y+=p,f.text(y+"-"),f.node().getBoundingClientRect().width>s&&(m.push(y.slice(0,-1)+"-"),y=p);h=y}}else h=a}),h&&m.push(h),f.remove()}m.forEach((x,h)=>{let n={x:40,y:c+7+h*20,fill:"#666",text:x,textMargin:e.boxTextMargin??5},o=R.drawText(t,n).node().getBoundingClientRect().width;o>O&&o>e.leftMargin-o&&(O=o)}),c+=Math.max(20,m.length*20)})}i(Ht,"drawActorLegend");var S=P().journey,I=0,Xt=i(function(t,e,s,c){let r=P(),d=r.journey.titleColor,u=r.journey.titleFontSize,f=r.journey.titleFontFamily,g=r.securityLevel,m;g==="sandbox"&&(m=z("#i"+e));let x=g==="sandbox"?z(m.nodes()[0].contentDocument.body):z("body");$.init();let h=x.select("#"+e);R.initGraphics(h);let n=c.db.getTasks(),a=c.db.getDiagramTitle(),o=c.db.getActors();for(let E in C)delete C[E];let y=0;o.forEach(E=>{C[E]={color:S.actorColours[y%S.actorColours.length],position:y},y++}),Ht(h),I=S.leftMargin+O,$.insert(0,0,I,Object.keys(C).length*50),Gt(h,n,0);let p=$.getBounds();a&&h.append("text").text(a).attr("x",I).attr("font-size",u).attr("font-weight","bold").attr("y",25).attr("fill",d).attr("font-family",f);let l=p.stopy-p.starty+2*S.diagramMarginY,v=I+p.stopx+2*S.diagramMarginX;at(h,l,v,S.useMaxWidth),h.append("line").attr("x1",I).attr("y1",S.height*4).attr("x2",v-I-4).attr("y2",S.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let k=a?70:0;h.attr("viewBox",`${p.startx} -25 ${v} ${l+k}`),h.attr("preserveAspectRatio","xMinYMin meet"),h.attr("height",l+k+25)},"draw"),$={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:i(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:i(function(t,e,s,c){t[e]===void 0?t[e]=s:t[e]=c(s,t[e])},"updateVal"),updateBounds:i(function(t,e,s,c){let r=P().journey,d=this,u=0;function f(g){return i(function(x){u++;let h=d.sequenceItems.length-u+1;d.updateVal(x,"starty",e-h*r.boxMargin,Math.min),d.updateVal(x,"stopy",c+h*r.boxMargin,Math.max),d.updateVal($.data,"startx",t-h*r.boxMargin,Math.min),d.updateVal($.data,"stopx",s+h*r.boxMargin,Math.max),g!=="activation"&&(d.updateVal(x,"startx",t-h*r.boxMargin,Math.min),d.updateVal(x,"stopx",s+h*r.boxMargin,Math.max),d.updateVal($.data,"starty",e-h*r.boxMargin,Math.min),d.updateVal($.data,"stopy",c+h*r.boxMargin,Math.max))},"updateItemBounds")}i(f,"updateFn"),this.sequenceItems.forEach(f())},"updateBounds"),insert:i(function(t,e,s,c){let r=Math.min(t,s),d=Math.max(t,s),u=Math.min(e,c),f=Math.max(e,c);this.updateVal($.data,"startx",r,Math.min),this.updateVal($.data,"starty",u,Math.min),this.updateVal($.data,"stopx",d,Math.max),this.updateVal($.data,"stopy",f,Math.max),this.updateBounds(r,u,d,f)},"insert"),bumpVerticalPos:i(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:i(function(){return this.verticalPos},"getVerticalPos"),getBounds:i(function(){return this.data},"getBounds")},tt=S.sectionFills,$t=S.sectionColours,Gt=i(function(t,e,s){let c=P().journey,r="",d=c.height*2+c.diagramMarginY,u=s+d,f=0,g="#CCC",m="black",x=0;for(let[h,n]of e.entries()){if(r!==n.section){g=tt[f%tt.length],x=f%tt.length,m=$t[f%$t.length];let o=0,y=n.section;for(let l=h;l(C[y]&&(o[y]=C[y]),o),{});n.x=h*c.taskMargin+h*c.width+I,n.y=u,n.width=c.diagramMarginX,n.height=c.diagramMarginY,n.colour=m,n.fill=g,n.num=x,n.actors=a,R.drawTask(t,n,c),$.insert(n.x,n.y,n.x+n.width+c.taskMargin,450)}},"drawTasks"),et={setConf:Dt,draw:Xt};var be={parser:xt,db:K,renderer:et,styles:bt,init:i(t=>{et.setConf(t.journey),K.clear()},"init")};export{be as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-M6C3CM3L.mjs b/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-M6C3CM3L.mjs new file mode 100644 index 0000000..83a58eb --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-M6C3CM3L.mjs @@ -0,0 +1,139 @@ +import{a as xt}from"./chunk-AZZRMDJM.mjs";import{a as pt,b as gt,c as mt,f as U}from"./chunk-LII3EMHJ.mjs";import"./chunk-KNLZD3CH.mjs";import{O as ot,S as lt,T as ct,U as ht,V as ut,W as yt,X as ft,Y as dt,_ as P}from"./chunk-67TQ5CYL.mjs";import{F as G,h as z}from"./chunk-7W6UQGC5.mjs";import{a as s}from"./chunk-AQ6EADP3.mjs";var Z=(function(){var t=s(function(h,i,r,o){for(r=r||{},o=h.length;o--;r[h[o]]=i);return r},"o"),e=[6,8,10,11,12,14,16,17,18],a=[1,9],d=[1,10],n=[1,11],u=[1,12],p=[1,13],c=[1,14],g={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:s(function(i,r,o,y,f,l,_){var k=l.length-1;switch(f){case 1:return l[k-1];case 2:this.$=[];break;case 3:l[k-1].push(l[k]),this.$=l[k-1];break;case 4:case 5:this.$=l[k];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(l[k].substr(6)),this.$=l[k].substr(6);break;case 9:this.$=l[k].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=l[k].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(l[k].substr(8)),this.$=l[k].substr(8);break;case 13:y.addTask(l[k-1],l[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:a,12:d,14:n,16:u,17:p,18:c},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:a,12:d,14:n,16:u,17:p,18:c},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:s(function(i,r){if(r.recoverable)this.trace(i);else{var o=new Error(i);throw o.hash=r,o}},"parseError"),parse:s(function(i){var r=this,o=[0],y=[],f=[null],l=[],_=this.table,k="",E=0,it=0,rt=0,St=2,st=1,Mt=l.slice.call(arguments,1),b=Object.create(this.lexer),A={yy:{}};for(var Y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y)&&(A.yy[Y]=this.yy[Y]);b.setInput(i,A.yy),A.yy.lexer=b,A.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var q=b.yylloc;l.push(q);var Ct=b.options&&b.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ut(w){o.length=o.length-2*w,f.length=f.length-w,l.length=l.length-w}s(Ut,"popStack");function Et(){var w;return w=y.pop()||b.lex()||st,typeof w!="number"&&(w instanceof Array&&(y=w,w=y.pop()),w=r.symbols_[w]||w),w}s(Et,"lex");for(var v,D,F,T,Zt,H,V={},j,M,at,W;;){if(F=o[o.length-1],this.defaultActions[F]?T=this.defaultActions[F]:((v===null||typeof v>"u")&&(v=Et()),T=_[F]&&_[F][v]),typeof T>"u"||!T.length||!T[0]){var X="";W=[];for(j in _[F])this.terminals_[j]&&j>St&&W.push("'"+this.terminals_[j]+"'");b.showPosition?X="Parse error on line "+(E+1)+`: +`+b.showPosition()+` +Expecting `+W.join(", ")+", got '"+(this.terminals_[v]||v)+"'":X="Parse error on line "+(E+1)+": Unexpected "+(v==st?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(X,{text:b.match,token:this.terminals_[v]||v,line:b.yylineno,loc:q,expected:W})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+F+", token: "+v);switch(T[0]){case 1:o.push(v),f.push(b.yytext),l.push(b.yylloc),o.push(T[1]),v=null,D?(v=D,D=null):(it=b.yyleng,k=b.yytext,E=b.yylineno,q=b.yylloc,rt>0&&rt--);break;case 2:if(M=this.productions_[T[1]][1],V.$=f[f.length-M],V._$={first_line:l[l.length-(M||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(M||1)].first_column,last_column:l[l.length-1].last_column},Ct&&(V._$.range=[l[l.length-(M||1)].range[0],l[l.length-1].range[1]]),H=this.performAction.apply(V,[k,it,E,A.yy,T[1],f,l].concat(Mt)),typeof H<"u")return H;M&&(o=o.slice(0,-1*M*2),f=f.slice(0,-1*M),l=l.slice(0,-1*M)),o.push(this.productions_[T[1]][0]),f.push(V.$),l.push(V._$),at=_[o[o.length-2]][o[o.length-1]],o.push(at);break;case 3:return!0}}return!0},"parse")},m=(function(){var h={EOF:1,parseError:s(function(r,o){if(this.yy.parser)this.yy.parser.parseError(r,o);else throw new Error(r)},"parseError"),setInput:s(function(i,r){return this.yy=r||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:s(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var r=i.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:s(function(i){var r=i.length,o=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),o.length-1&&(this.yylineno-=o.length-1);var f=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:o?(o.length===y.length?this.yylloc.first_column:0)+y[y.length-o.length].length-o[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[f[0],f[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(i){this.unput(this.match.slice(i))},"less"),pastInput:s(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var i=this.pastInput(),r=new Array(i.length+1).join("-");return i+this.upcomingInput()+` +`+r+"^"},"showPosition"),test_match:s(function(i,r){var o,y,f;if(this.options.backtrack_lexer&&(f={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(f.yylloc.range=this.yylloc.range.slice(0))),y=i[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(i[0].length),this.matched+=i[0],o=this.performAction.call(this,this.yy,this,r,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o)return o;if(this._backtrack){for(var l in f)this[l]=f[l];return!1}return!1},"test_match"),next:s(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,r,o,y;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),l=0;lr[0].length)){if(r=o,y=l,this.options.backtrack_lexer){if(i=this.test_match(o,f[l]),i!==!1)return i;if(this._backtrack){r=!1;continue}else return!1}else if(!this.options.flex)break}return r?(i=this.test_match(r,f[y]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:s(function(){var r=this.next();return r||this.lex()},"lex"),begin:s(function(r){this.conditionStack.push(r)},"begin"),popState:s(function(){var r=this.conditionStack.length-1;return r>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:s(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:s(function(r){return r=this.conditionStack.length-1-Math.abs(r||0),r>=0?this.conditionStack[r]:"INITIAL"},"topState"),pushState:s(function(r){this.begin(r)},"pushState"),stateStackSize:s(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:s(function(r,o,y,f){var l=f;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return h})();g.lexer=m;function x(){this.yy={}}return s(x,"Parser"),x.prototype=g,g.Parser=x,new x})();Z.parser=Z;var kt=Z;var L="",J=[],B=[],N=[],Pt=s(function(){J.length=0,B.length=0,L="",N.length=0,lt()},"clear"),It=s(function(t){L=t,J.push(t)},"addSection"),At=s(function(){return J},"getSections"),Ft=s(function(){let t=bt(),e=100,a=0;for(;!t&&a{a.people&&t.push(...a.people)}),[...new Set(t)].sort()},"updateActors"),Lt=s(function(t,e){let a=e.substr(1).split(":"),d=0,n=[];a.length===1?(d=Number(a[0]),n=[]):(d=Number(a[0]),n=a[1].split(","));let u=n.map(c=>c.trim()),p={section:L,type:L,people:u,task:t,score:d};N.push(p)},"addTask"),Rt=s(function(t){let e={section:L,type:L,description:t,task:t,classes:[]};B.push(e)},"addTaskOrg"),bt=s(function(){let t=s(function(a){return N[a].processed},"compileTask"),e=!0;for(let[a,d]of N.entries())t(a),e=e&&d.processed;return e},"compileTasks"),Bt=s(function(){return Vt()},"getActors"),K={getConfig:s(()=>P().journey,"getConfig"),clear:Pt,setDiagramTitle:ft,getDiagramTitle:dt,setAccTitle:ct,getAccTitle:ht,setAccDescription:ut,getAccDescription:yt,addSection:It,getSections:At,getTasks:Ft,addTask:Lt,addTaskOrg:Rt,getActors:Bt};var Nt=s(t=>`.label { + font-family: ${t.fontFamily}; + color: ${t.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${t.textColor} + } + + .legend { + fill: ${t.textColor}; + font-family: ${t.fontFamily}; + } + + .label text { + fill: #333; + } + .label { + color: ${t.textColor} + } + + .face { + ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${t.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${t.fontFamily}; + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${t.fillType0?`fill: ${t.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${t.fillType0?`fill: ${t.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${t.fillType0?`fill: ${t.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${t.fillType0?`fill: ${t.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${t.fillType0?`fill: ${t.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${t.fillType0?`fill: ${t.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${t.fillType0?`fill: ${t.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${t.fillType0?`fill: ${t.fillType7}`:""}; + } + + .actor-0 { + ${t.actor0?`fill: ${t.actor0}`:""}; + } + .actor-1 { + ${t.actor1?`fill: ${t.actor1}`:""}; + } + .actor-2 { + ${t.actor2?`fill: ${t.actor2}`:""}; + } + .actor-3 { + ${t.actor3?`fill: ${t.actor3}`:""}; + } + .actor-4 { + ${t.actor4?`fill: ${t.actor4}`:""}; + } + .actor-5 { + ${t.actor5?`fill: ${t.actor5}`:""}; + } + ${xt()} +`,"getStyles"),_t=Nt;var tt=s(function(t,e){return pt(t,e)},"drawRect"),jt=s(function(t,e){let d=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),n=t.append("g");n.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),n.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function u(g){let m=G().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);g.append("path").attr("class","mouth").attr("d",m).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}s(u,"smile");function p(g){let m=G().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);g.append("path").attr("class","mouth").attr("d",m).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}s(p,"sad");function c(g){g.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s(c,"ambivalent"),e.score>3?u(n):e.score<3?p(n):c(n),d},"drawFace"),vt=s(function(t,e){let a=t.append("circle");return a.attr("cx",e.cx),a.attr("cy",e.cy),a.attr("class","actor-"+e.pos),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("r",e.r),a.class!==void 0&&a.attr("class",a.class),e.title!==void 0&&a.append("title").text(e.title),a},"drawCircle"),wt=s(function(t,e){return mt(t,e)},"drawText"),Wt=s(function(t,e){function a(n,u,p,c,g){return n+","+u+" "+(n+p)+","+u+" "+(n+p)+","+(u+c-g)+" "+(n+p-g*1.2)+","+(u+c)+" "+n+","+(u+c)}s(a,"genPoints");let d=t.append("polygon");d.attr("points",a(e.x,e.y,50,20,7)),d.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,wt(t,e)},"drawLabel"),zt=s(function(t,e,a){let d=t.append("g"),n=U();n.x=e.x,n.y=e.y,n.fill=e.fill,n.width=a.width*e.taskCount+a.diagramMarginX*(e.taskCount-1),n.height=a.height,n.class="journey-section section-type-"+e.num,n.rx=3,n.ry=3,tt(d,n),Tt(a)(e.text,d,n.x,n.y,n.width,n.height,{class:"journey-section section-type-"+e.num},a,e.colour)},"drawSection"),Q=-1,Ot=s(function(t,e,a,d){let n=e.x+a.width/2,u=t.append("g");Q++,u.append("line").attr("id",d+"-task"+Q).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),jt(u,{cx:n,cy:300+(5-e.score)*30,score:e.score});let c=U();c.x=e.x,c.y=e.y,c.fill=e.fill,c.width=a.width,c.height=a.height,c.class="task task-type-"+e.num,c.rx=3,c.ry=3,tt(u,c);let g=e.x+14;e.people.forEach(m=>{let x=e.actors[m].color,h={cx:g,cy:e.y,r:7,fill:x,stroke:"#000",title:m,pos:e.actors[m].position};vt(u,h),g+=10}),Tt(a)(e.task,u,c.x,c.y,c.width,c.height,{class:"task"},a,e.colour)},"drawTask"),Yt=s(function(t,e){gt(t,e)},"drawBackgroundRect"),Tt=(function(){function t(n,u,p,c,g,m,x,h){let i=u.append("text").attr("x",p+g/2).attr("y",c+m/2+5).style("font-color",h).style("text-anchor","middle").text(n);d(i,x)}s(t,"byText");function e(n,u,p,c,g,m,x,h,i){let{taskFontSize:r,taskFontFamily:o}=h,y=n.split(//gi);for(let f=0;f{let u=C[n].color,p={cx:20,cy:d,r:7,fill:u,stroke:"#000",pos:C[n].position};R.drawCircle(t,p);let c=t.append("text").attr("visibility","hidden").text(n),g=c.node().getBoundingClientRect().width;c.remove();let m=[];if(g<=a)m=[n];else{let x=n.split(" "),h="";c=t.append("text").attr("visibility","hidden"),x.forEach(i=>{let r=h?`${h} ${i}`:i;if(c.text(r),c.node().getBoundingClientRect().width>a){if(h&&m.push(h),h=i,c.text(i),c.node().getBoundingClientRect().width>a){let y="";for(let f of i)y+=f,c.text(y+"-"),c.node().getBoundingClientRect().width>a&&(m.push(y.slice(0,-1)+"-"),y=f);h=y}}else h=r}),h&&m.push(h),c.remove()}m.forEach((x,h)=>{let i={x:40,y:d+7+h*20,fill:"#666",text:x,textMargin:e.boxTextMargin??5},o=R.drawText(t,i).node().getBoundingClientRect().width;o>O&&o>e.leftMargin-o&&(O=o)}),d+=Math.max(20,m.length*20)})}s(Ht,"drawActorLegend");var S=P().journey,I=0,Xt=s(function(t,e,a,d){let n=P(),u=n.journey.titleColor,p=n.journey.titleFontSize,c=n.journey.titleFontFamily,g=n.securityLevel,m;g==="sandbox"&&(m=z("#i"+e));let x=g==="sandbox"?z(m.nodes()[0].contentDocument.body):z("body");$.init();let h=x.select("#"+e);R.initGraphics(h,e);let i=d.db.getTasks(),r=d.db.getDiagramTitle(),o=d.db.getActors();for(let E in C)delete C[E];let y=0;o.forEach(E=>{C[E]={color:S.actorColours[y%S.actorColours.length],position:y},y++}),Ht(h),I=S.leftMargin+O,$.insert(0,0,I,Object.keys(C).length*50),Gt(h,i,0,e);let f=$.getBounds();r&&h.append("text").text(r).attr("x",I).attr("font-size",p).attr("font-weight","bold").attr("y",25).attr("fill",u).attr("font-family",c);let l=f.stopy-f.starty+2*S.diagramMarginY,_=I+f.stopx+2*S.diagramMarginX;ot(h,l,_,S.useMaxWidth),h.append("line").attr("x1",I).attr("y1",S.height*4).attr("x2",_-I-4).attr("y2",S.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#"+e+"-arrowhead)");let k=r?70:0;h.attr("viewBox",`${f.startx} -25 ${_} ${l+k}`),h.attr("preserveAspectRatio","xMinYMin meet"),h.attr("height",l+k+25)},"draw"),$={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:s(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:s(function(t,e,a,d){t[e]===void 0?t[e]=a:t[e]=d(a,t[e])},"updateVal"),updateBounds:s(function(t,e,a,d){let n=P().journey,u=this,p=0;function c(g){return s(function(x){p++;let h=u.sequenceItems.length-p+1;u.updateVal(x,"starty",e-h*n.boxMargin,Math.min),u.updateVal(x,"stopy",d+h*n.boxMargin,Math.max),u.updateVal($.data,"startx",t-h*n.boxMargin,Math.min),u.updateVal($.data,"stopx",a+h*n.boxMargin,Math.max),g!=="activation"&&(u.updateVal(x,"startx",t-h*n.boxMargin,Math.min),u.updateVal(x,"stopx",a+h*n.boxMargin,Math.max),u.updateVal($.data,"starty",e-h*n.boxMargin,Math.min),u.updateVal($.data,"stopy",d+h*n.boxMargin,Math.max))},"updateItemBounds")}s(c,"updateFn"),this.sequenceItems.forEach(c())},"updateBounds"),insert:s(function(t,e,a,d){let n=Math.min(t,a),u=Math.max(t,a),p=Math.min(e,d),c=Math.max(e,d);this.updateVal($.data,"startx",n,Math.min),this.updateVal($.data,"starty",p,Math.min),this.updateVal($.data,"stopx",u,Math.max),this.updateVal($.data,"stopy",c,Math.max),this.updateBounds(n,p,u,c)},"insert"),bumpVerticalPos:s(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:s(function(){return this.verticalPos},"getVerticalPos"),getBounds:s(function(){return this.data},"getBounds")},et=S.sectionFills,$t=S.sectionColours,Gt=s(function(t,e,a,d){let n=P().journey,u="",p=n.height*2+n.diagramMarginY,c=a+p,g=0,m="#CCC",x="black",h=0;for(let[i,r]of e.entries()){if(u!==r.section){m=et[g%et.length],h=g%et.length,x=$t[g%$t.length];let y=0,f=r.section;for(let _=i;_(C[f]&&(y[f]=C[f]),y),{});r.x=i*n.taskMargin+i*n.width+I,r.y=c,r.width=n.diagramMarginX,r.height=n.diagramMarginY,r.colour=x,r.fill=m,r.num=h,r.actors=o,R.drawTask(t,r,n,d),$.insert(r.x,r.y,r.x+r.width+n.taskMargin,450)}},"drawTasks"),nt={setConf:Dt,draw:Xt};var be={parser:kt,db:K,renderer:nt,styles:_t,init:s(t=>{nt.setConf(t.journey),K.clear()},"init")};export{be as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-FZRSWBTQ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-M6C3CM3L.mjs.map similarity index 65% rename from assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-FZRSWBTQ.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-M6C3CM3L.mjs.map index a9c0c3c..ef12d5d 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-FZRSWBTQ.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/journeyDiagram-M6C3CM3L.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/user-journey/parser/journey.jison", "../../../src/diagrams/user-journey/journeyDb.js", "../../../src/diagrams/user-journey/styles.js", "../../../src/diagrams/user-journey/svgDraw.js", "../../../src/diagrams/user-journey/journeyRenderer.ts", "../../../src/diagrams/user-journey/journeyDiagram.ts"], - "sourcesContent": ["/* 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,8,10,11,12,14,16,17,18],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[1,14];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NEWLINE\":10,\"title\":11,\"acc_title\":12,\"acc_title_value\":13,\"acc_descr\":14,\"acc_descr_value\":15,\"acc_descr_multiline_value\":16,\"section\":17,\"taskName\":18,\"taskData\":19,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",8:\"SPACE\",10:\"NEWLINE\",11:\"title\",12:\"acc_title\",13:\"acc_title_value\",14:\"acc_descr\",15:\"acc_descr_value\",16:\"acc_descr_multiline_value\",17:\"section\",18:\"taskName\",19:\"taskData\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,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:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setDiagramTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 9:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 10: case 11:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 13:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,14:$V3,16:$V4,17:$V5,18:$V6},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:15,11:$V1,12:$V2,14:$V3,16:$V4,17:$V5,18:$V6},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),{13:[1,16]},{15:[1,17]},o($V0,[2,11]),o($V0,[2,12]),{19:[1,18]},o($V0,[2,4]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,13])],\ndefaultActions: {},\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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2:return 10;\nbreak;\ncase 3:/* skip whitespace */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5:return 4;\nbreak;\ncase 6:return 11;\nbreak;\ncase 7: this.begin(\"acc_title\");return 12; \nbreak;\ncase 8: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr\");return 14; \nbreak;\ncase 10: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 11: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 12: this.popState(); \nbreak;\ncase 13:return \"acc_descr_multiline_value\";\nbreak;\ncase 14:return 17;\nbreak;\ncase 15:return 18;\nbreak;\ncase 16:return 19;\nbreak;\ncase 17:return ':';\nbreak;\ncase 18:return 6;\nbreak;\ncase 19:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[12,13],\"inclusive\":false},\"acc_descr\":{\"rules\":[10],\"inclusive\":false},\"acc_title\":{\"rules\":[8],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport {\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../common/commonDb.js';\n\nlet currentSection = '';\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const clear = function () {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n rawTasks.length = 0;\n commonClear();\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nconst updateActors = function () {\n const tempActors = [];\n tasks.forEach((task) => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\n\nexport const addTask = function (descr, taskData) {\n const pieces = taskData.substr(1).split(':');\n\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(',');\n }\n const peopleList = peeps.map((s) => s.trim());\n\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score,\n };\n\n rawTasks.push(rawTask);\n};\n\nexport const addTaskOrg = function (descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\nconst getActors = function () {\n return updateActors();\n};\n\nexport default {\n getConfig: () => getConfig().journey,\n clear,\n setDiagramTitle,\n getDiagramTitle,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors,\n};\n", "import { getIconStyles } from '../globalStyles.js';\n\nconst getStyles = (options) =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n font-family: ${options.fontFamily};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n ${options.faceColor ? `fill: ${options.faceColor}` : 'fill: #FFF8DC'};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : ''};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : ''};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : ''};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : ''};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : ''};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : ''};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : ''};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : ''};\n }\n\n .actor-0 {\n ${options.actor0 ? `fill: ${options.actor0}` : ''};\n }\n .actor-1 {\n ${options.actor1 ? `fill: ${options.actor1}` : ''};\n }\n .actor-2 {\n ${options.actor2 ? `fill: ${options.actor2}` : ''};\n }\n .actor-3 {\n ${options.actor3 ? `fill: ${options.actor3}` : ''};\n }\n .actor-4 {\n ${options.actor4 ? `fill: ${options.actor4}` : ''};\n }\n .actor-5 {\n ${options.actor5 ? `fill: ${options.actor5}` : ''};\n }\n ${getIconStyles()}\n`;\n\nexport default getStyles;\n", "import { arc as d3arc } from 'd3';\nimport * as svgDrawCommon from '../common/svgDrawCommon.js';\n\nexport const drawRect = function (elem, rectData) {\n return svgDrawCommon.drawRect(elem, rectData);\n};\n\nexport const drawFace = function (element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n /** @param {any} face */\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n /** @param {any} face */\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n /** @param {any} face */\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function (element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('class', 'actor-' + circleData.pos);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (circleElement.class !== undefined) {\n circleElement.attr('class', circleElement.class);\n }\n\n if (circleData.title !== undefined) {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function (elem, textData) {\n return svgDrawCommon.drawText(elem, textData);\n};\n\nexport const drawLabel = function (elem, txtObject) {\n /**\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} cut\n */\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function (elem, section, conf) {\n const g = elem.append('g');\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n // section width covers all nested tasks\n rect.width =\n conf.width * section.taskCount + // width of the tasks\n conf.diagramMarginX * (section.taskCount - 1); // width of space between tasks\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem The HTML element\n * @param {any} task The task to render\n * @param {any} conf The global configuration\n */\nexport const drawTask = function (elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', 'task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score,\n });\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n let xPos = task.x + 14;\n task.people.forEach((person) => {\n const colour = task.actors[person].color;\n\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: '#000',\n title: person,\n pos: task.actors[person].position,\n };\n\n drawCircle(g, circle);\n xPos += 10;\n });\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem The html element\n * @param {any} bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n svgDrawCommon.drawBackgroundRect(elem, bounds);\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} colour\n */\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n * @param {any} colour\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(//gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function (graphics) {\n graphics\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n initGraphics,\n};\n", "// @ts-nocheck TODO: fix file\nimport { select } from 'd3';\nimport svgDraw from './svgDraw.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\n\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\nconst actors = {};\nlet maxWidth = 0;\n\n/** @param diagram - The diagram to draw to. */\nfunction drawActorLegend(diagram) {\n const conf = getConfig().journey;\n const maxLabelWidth = conf.maxLabelWidth;\n maxWidth = 0;\n let yPos = 60;\n\n Object.keys(actors).forEach((person) => {\n const colour = actors[person].color;\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: '#000',\n pos: actors[person].position,\n };\n svgDraw.drawCircle(diagram, circleData);\n\n // First, measure the full text width without wrapping.\n let measureText = diagram.append('text').attr('visibility', 'hidden').text(person);\n const fullTextWidth = measureText.node().getBoundingClientRect().width;\n measureText.remove();\n\n let lines = [];\n\n // If the text is naturally within the max width, use it as a single line.\n if (fullTextWidth <= maxLabelWidth) {\n lines = [person];\n } else {\n // Otherwise, wrap the text using the knuth-plass algorithm.\n const words = person.split(' '); // Split the text into words.\n let currentLine = '';\n measureText = diagram.append('text').attr('visibility', 'hidden');\n\n words.forEach((word) => {\n // check the width of the line with the new word.\n const testLine = currentLine ? `${currentLine} ${word}` : word;\n measureText.text(testLine);\n const textWidth = measureText.node().getBoundingClientRect().width;\n\n if (textWidth > maxLabelWidth) {\n // If adding the new word exceeds max width, push the current line.\n if (currentLine) {\n lines.push(currentLine);\n }\n currentLine = word; // Start a new line with the current word.\n\n // If the word itself is too long, break it with a hyphen.\n measureText.text(word);\n if (measureText.node().getBoundingClientRect().width > maxLabelWidth) {\n let brokenWord = '';\n for (const char of word) {\n brokenWord += char;\n measureText.text(brokenWord + '-');\n if (measureText.node().getBoundingClientRect().width > maxLabelWidth) {\n // Push the broken part with a hyphen.\n lines.push(brokenWord.slice(0, -1) + '-');\n brokenWord = char;\n }\n }\n currentLine = brokenWord;\n }\n } else {\n // If the line with the new word fits, add the new word to the current line.\n currentLine = testLine;\n }\n });\n\n // Push the last line.\n if (currentLine) {\n lines.push(currentLine);\n }\n measureText.remove(); // Remove the text element used for measuring.\n }\n\n lines.forEach((line, index) => {\n const labelData = {\n x: 40,\n y: yPos + 7 + index * 20,\n fill: '#666',\n text: line,\n textMargin: conf.boxTextMargin ?? 5,\n };\n\n // Draw the text and measure the width.\n const textElement = svgDraw.drawText(diagram, labelData);\n const lineWidth = textElement.node().getBoundingClientRect().width;\n\n // Use conf.leftMargin as the initial spacing baseline,\n // but expand maxWidth if the line is wider.\n if (lineWidth > maxWidth && lineWidth > conf.leftMargin - lineWidth) {\n maxWidth = lineWidth;\n }\n });\n\n yPos += Math.max(20, lines.length * 20);\n });\n}\n\n// TODO: Cleanup?\nconst conf = getConfig().journey;\nlet leftMargin = 0;\nexport const draw = function (text, id, version, diagObj) {\n const configObject = getConfig();\n const titleColor = configObject.journey.titleColor;\n const titleFontSize = configObject.journey.titleFontSize;\n const titleFontFamily = configObject.journey.titleFontFamily;\n\n const securityLevel = configObject.securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n // const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n bounds.init();\n const diagram = root.select('#' + id);\n\n svgDraw.initGraphics(diagram);\n\n const tasks = diagObj.db.getTasks();\n const title = diagObj.db.getDiagramTitle();\n\n const actorNames = diagObj.db.getActors();\n for (const member in actors) {\n delete actors[member];\n }\n let actorPos = 0;\n actorNames.forEach((actorName) => {\n actors[actorName] = {\n color: conf.actorColours[actorPos % conf.actorColours.length],\n position: actorPos,\n };\n actorPos++;\n });\n\n drawActorLegend(diagram);\n leftMargin = conf.leftMargin + maxWidth;\n bounds.insert(0, 0, leftMargin, Object.keys(actors).length * 50);\n drawTasks(diagram, tasks, 0);\n\n const box = bounds.getBounds();\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', leftMargin)\n .attr('font-size', titleFontSize)\n .attr('font-weight', 'bold')\n .attr('y', 25)\n .attr('fill', titleColor)\n .attr('font-family', titleFontFamily);\n }\n\n const height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n const width = leftMargin + box.stopx + 2 * conf.diagramMarginX;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n // Draw activity line\n diagram\n .append('line')\n .attr('x1', leftMargin)\n .attr('y1', conf.height * 4) // One section head + one task + margins\n .attr('x2', width - leftMargin - 4) // Subtract stroke width so arrow point is retained\n .attr('y2', conf.height * 4)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)');\n\n const extraVertForTitle = title ? 70 : 0;\n diagram.attr('viewBox', `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram.attr('preserveAspectRatio', 'xMinYMin meet');\n diagram.attr('height', height + extraVertForTitle + 25);\n};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n },\n verticalPos: 0,\n\n sequenceItems: [],\n init: function () {\n this.sequenceItems = [];\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n };\n this.verticalPos = 0;\n },\n updateVal: function (obj, key, val, fun) {\n if (obj[key] === undefined) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n const conf = getConfig().journey;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _self = this;\n let cnt = 0;\n /** @param type - Set to `activation` if activation */\n function updateFn(type?: 'activation') {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function () {\n return this.verticalPos;\n },\n getBounds: function () {\n return this.data;\n },\n};\n\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\n\nexport const drawTasks = function (diagram, tasks, verticalPos) {\n const conf = getConfig().journey;\n let lastSection = '';\n const sectionVHeight = conf.height * 2 + conf.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n\n let sectionNumber = 0;\n let fill = '#CCC';\n let colour = 'black';\n let num = 0;\n\n // Draw the tasks\n for (const [i, task] of tasks.entries()) {\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n\n // count how many consecutive tasks have the same section\n let taskInSectionCount = 0;\n const currentSection = task.section;\n for (let taskIndex = i; taskIndex < tasks.length; taskIndex++) {\n if (tasks[taskIndex].section == currentSection) {\n taskInSectionCount = taskInSectionCount + 1;\n } else {\n break;\n }\n }\n\n const section = {\n x: i * conf.taskMargin + i * conf.width + leftMargin,\n y: 50,\n text: task.section,\n fill,\n num,\n colour,\n taskCount: taskInSectionCount,\n };\n\n svgDraw.drawSection(diagram, section, conf);\n lastSection = task.section;\n sectionNumber++;\n }\n\n // Collect the actors involved in the task\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n\n return acc;\n }, {});\n\n // Add some rendering data to the object\n task.x = i * conf.taskMargin + i * conf.width + leftMargin;\n task.y = taskPos;\n task.width = conf.diagramMarginX;\n task.height = conf.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n\n // Draw the box with the attached line\n svgDraw.drawTask(diagram, task, conf);\n bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopY is the length of the descenders.\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/journey.jison';\nimport db from './journeyDb.js';\nimport styles from './styles.js';\nimport renderer from './journeyRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n renderer.setConf(cnf.journey);\n db.clear();\n },\n};\n"], - "mappings": "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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "journey_default", "parser", "currentSection", "sections", "tasks", "rawTasks", "clear", "__name", "addSection", "txt", "getSections", "getTasks", "allItemsProcessed", "compileTasks", "maxDepth", "iterationCount", "updateActors", "tempActors", "task", "addTask", "descr", "taskData", "pieces", "score", "peeps", "peopleList", "s", "rawTask", "addTaskOrg", "newTask", "compileTask", "pos", "allProcessed", "i", "getActors", "journeyDb_default", "getConfig", "setDiagramTitle", "getDiagramTitle", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "getStyles", "__name", "options", "getIconStyles", "styles_default", "drawRect", "__name", "elem", "rectData", "drawFace", "element", "faceData", "circleElement", "face", "smile", "arc", "arc_default", "sad", "ambivalent", "drawCircle", "circleData", "drawText", "textData", "drawLabel", "txtObject", "genPoints", "x", "y", "width", "height", "cut", "polygon", "drawSection", "section", "conf", "g", "rect", "getNoteRect", "_drawTextCandidateFunc", "taskCount", "drawTask", "task", "center", "xPos", "person", "colour", "circle", "drawBackgroundRect", "bounds", "byText", "content", "textAttrs", "text", "_setTextAttrs", "byTspan", "taskFontSize", "taskFontFamily", "lines", "i", "dy", "byFo", "body", "toText", "fromTextAttrsDict", "key", "initGraphics", "graphics", "svgDraw_default", "setConf", "__name", "cnf", "key", "conf", "actors", "maxWidth", "drawActorLegend", "diagram", "getConfig", "maxLabelWidth", "yPos", "person", "colour", "circleData", "svgDraw_default", "measureText", "fullTextWidth", "lines", "words", "currentLine", "word", "testLine", "brokenWord", "char", "line", "index", "labelData", "lineWidth", "leftMargin", "draw", "text", "id", "version", "diagObj", "configObject", "titleColor", "titleFontSize", "titleFontFamily", "securityLevel", "sandboxElement", "select_default", "root", "bounds", "tasks", "title", "actorNames", "member", "actorPos", "actorName", "drawTasks", "box", "height", "width", "configureSvgSize", "extraVertForTitle", "obj", "val", "fun", "startx", "starty", "stopx", "stopy", "_self", "cnt", "updateFn", "type", "item", "n", "_startx", "_stopx", "_starty", "_stopy", "bump", "fills", "textColours", "verticalPos", "lastSection", "sectionVHeight", "taskPos", "sectionNumber", "fill", "num", "i", "task", "taskInSectionCount", "currentSection", "taskIndex", "section", "taskActors", "acc", "journeyRenderer_default", "diagram", "journey_default", "journeyDb_default", "journeyRenderer_default", "styles_default", "__name", "cnf"] + "sourcesContent": ["/* 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,8,10,11,12,14,16,17,18],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[1,14];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NEWLINE\":10,\"title\":11,\"acc_title\":12,\"acc_title_value\":13,\"acc_descr\":14,\"acc_descr_value\":15,\"acc_descr_multiline_value\":16,\"section\":17,\"taskName\":18,\"taskData\":19,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",8:\"SPACE\",10:\"NEWLINE\",11:\"title\",12:\"acc_title\",13:\"acc_title_value\",14:\"acc_descr\",15:\"acc_descr_value\",16:\"acc_descr_multiline_value\",17:\"section\",18:\"taskName\",19:\"taskData\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,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:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setDiagramTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 9:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 10: case 11:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 13:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,14:$V3,16:$V4,17:$V5,18:$V6},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:15,11:$V1,12:$V2,14:$V3,16:$V4,17:$V5,18:$V6},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),{13:[1,16]},{15:[1,17]},o($V0,[2,11]),o($V0,[2,12]),{19:[1,18]},o($V0,[2,4]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,13])],\ndefaultActions: {},\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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2:return 10;\nbreak;\ncase 3:/* skip whitespace */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5:return 4;\nbreak;\ncase 6:return 11;\nbreak;\ncase 7: this.begin(\"acc_title\");return 12; \nbreak;\ncase 8: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr\");return 14; \nbreak;\ncase 10: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 11: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 12: this.popState(); \nbreak;\ncase 13:return \"acc_descr_multiline_value\";\nbreak;\ncase 14:return 17;\nbreak;\ncase 15:return 18;\nbreak;\ncase 16:return 19;\nbreak;\ncase 17:return ':';\nbreak;\ncase 18:return 6;\nbreak;\ncase 19:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[12,13],\"inclusive\":false},\"acc_descr\":{\"rules\":[10],\"inclusive\":false},\"acc_title\":{\"rules\":[8],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport {\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../common/commonDb.js';\n\nlet currentSection = '';\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const clear = function () {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n rawTasks.length = 0;\n commonClear();\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nconst updateActors = function () {\n const tempActors = [];\n tasks.forEach((task) => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\n\nexport const addTask = function (descr, taskData) {\n const pieces = taskData.substr(1).split(':');\n\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(',');\n }\n const peopleList = peeps.map((s) => s.trim());\n\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score,\n };\n\n rawTasks.push(rawTask);\n};\n\nexport const addTaskOrg = function (descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\nconst getActors = function () {\n return updateActors();\n};\n\nexport default {\n getConfig: () => getConfig().journey,\n clear,\n setDiagramTitle,\n getDiagramTitle,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors,\n};\n", "import { getIconStyles } from '../globalStyles.js';\n\nconst getStyles = (options) =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n font-family: ${options.fontFamily};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n ${options.faceColor ? `fill: ${options.faceColor}` : 'fill: #FFF8DC'};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : ''};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : ''};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : ''};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : ''};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : ''};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : ''};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : ''};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : ''};\n }\n\n .actor-0 {\n ${options.actor0 ? `fill: ${options.actor0}` : ''};\n }\n .actor-1 {\n ${options.actor1 ? `fill: ${options.actor1}` : ''};\n }\n .actor-2 {\n ${options.actor2 ? `fill: ${options.actor2}` : ''};\n }\n .actor-3 {\n ${options.actor3 ? `fill: ${options.actor3}` : ''};\n }\n .actor-4 {\n ${options.actor4 ? `fill: ${options.actor4}` : ''};\n }\n .actor-5 {\n ${options.actor5 ? `fill: ${options.actor5}` : ''};\n }\n ${getIconStyles()}\n`;\n\nexport default getStyles;\n", "import { arc as d3arc } from 'd3';\nimport * as svgDrawCommon from '../common/svgDrawCommon.js';\n\nexport const drawRect = function (elem, rectData) {\n return svgDrawCommon.drawRect(elem, rectData);\n};\n\nexport const drawFace = function (element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n /** @param {any} face */\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n /** @param {any} face */\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n /** @param {any} face */\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function (element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('class', 'actor-' + circleData.pos);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (circleElement.class !== undefined) {\n circleElement.attr('class', circleElement.class);\n }\n\n if (circleData.title !== undefined) {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function (elem, textData) {\n return svgDrawCommon.drawText(elem, textData);\n};\n\nexport const drawLabel = function (elem, txtObject) {\n /**\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} cut\n */\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function (elem, section, conf) {\n const g = elem.append('g');\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n // section width covers all nested tasks\n rect.width =\n conf.width * section.taskCount + // width of the tasks\n conf.diagramMarginX * (section.taskCount - 1); // width of space between tasks\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem The HTML element\n * @param {any} task The task to render\n * @param {any} conf The global configuration\n * @param {string} diagramId The diagram's SVG element ID for scoping\n */\nexport const drawTask = function (elem, task, conf, diagramId) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', diagramId + '-task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score,\n });\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n let xPos = task.x + 14;\n task.people.forEach((person) => {\n const colour = task.actors[person].color;\n\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: '#000',\n title: person,\n pos: task.actors[person].position,\n };\n\n drawCircle(g, circle);\n xPos += 10;\n });\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem The html element\n * @param {any} bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n svgDrawCommon.drawBackgroundRect(elem, bounds);\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} colour\n */\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n * @param {any} colour\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(//gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function (graphics, id) {\n taskCount = -1;\n graphics\n .append('defs')\n .append('marker')\n .attr('id', id + '-arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n initGraphics,\n};\n", "// @ts-nocheck TODO: fix file\nimport { select } from 'd3';\nimport svgDraw from './svgDraw.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\n\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\nconst actors = {};\nlet maxWidth = 0;\n\n/** @param diagram - The diagram to draw to. */\nfunction drawActorLegend(diagram) {\n const conf = getConfig().journey;\n const maxLabelWidth = conf.maxLabelWidth;\n maxWidth = 0;\n let yPos = 60;\n\n Object.keys(actors).forEach((person) => {\n const colour = actors[person].color;\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: '#000',\n pos: actors[person].position,\n };\n svgDraw.drawCircle(diagram, circleData);\n\n // First, measure the full text width without wrapping.\n let measureText = diagram.append('text').attr('visibility', 'hidden').text(person);\n const fullTextWidth = measureText.node().getBoundingClientRect().width;\n measureText.remove();\n\n let lines = [];\n\n // If the text is naturally within the max width, use it as a single line.\n if (fullTextWidth <= maxLabelWidth) {\n lines = [person];\n } else {\n // Otherwise, wrap the text using the knuth-plass algorithm.\n const words = person.split(' '); // Split the text into words.\n let currentLine = '';\n measureText = diagram.append('text').attr('visibility', 'hidden');\n\n words.forEach((word) => {\n // check the width of the line with the new word.\n const testLine = currentLine ? `${currentLine} ${word}` : word;\n measureText.text(testLine);\n const textWidth = measureText.node().getBoundingClientRect().width;\n\n if (textWidth > maxLabelWidth) {\n // If adding the new word exceeds max width, push the current line.\n if (currentLine) {\n lines.push(currentLine);\n }\n currentLine = word; // Start a new line with the current word.\n\n // If the word itself is too long, break it with a hyphen.\n measureText.text(word);\n if (measureText.node().getBoundingClientRect().width > maxLabelWidth) {\n let brokenWord = '';\n for (const char of word) {\n brokenWord += char;\n measureText.text(brokenWord + '-');\n if (measureText.node().getBoundingClientRect().width > maxLabelWidth) {\n // Push the broken part with a hyphen.\n lines.push(brokenWord.slice(0, -1) + '-');\n brokenWord = char;\n }\n }\n currentLine = brokenWord;\n }\n } else {\n // If the line with the new word fits, add the new word to the current line.\n currentLine = testLine;\n }\n });\n\n // Push the last line.\n if (currentLine) {\n lines.push(currentLine);\n }\n measureText.remove(); // Remove the text element used for measuring.\n }\n\n lines.forEach((line, index) => {\n const labelData = {\n x: 40,\n y: yPos + 7 + index * 20,\n fill: '#666',\n text: line,\n textMargin: conf.boxTextMargin ?? 5,\n };\n\n // Draw the text and measure the width.\n const textElement = svgDraw.drawText(diagram, labelData);\n const lineWidth = textElement.node().getBoundingClientRect().width;\n\n // Use conf.leftMargin as the initial spacing baseline,\n // but expand maxWidth if the line is wider.\n if (lineWidth > maxWidth && lineWidth > conf.leftMargin - lineWidth) {\n maxWidth = lineWidth;\n }\n });\n\n yPos += Math.max(20, lines.length * 20);\n });\n}\n\n// TODO: Cleanup?\nconst conf = getConfig().journey;\nlet leftMargin = 0;\nexport const draw = function (text, id, version, diagObj) {\n const configObject = getConfig();\n const titleColor = configObject.journey.titleColor;\n const titleFontSize = configObject.journey.titleFontSize;\n const titleFontFamily = configObject.journey.titleFontFamily;\n\n const securityLevel = configObject.securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n // const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n bounds.init();\n const diagram = root.select('#' + id);\n\n svgDraw.initGraphics(diagram, id);\n\n const tasks = diagObj.db.getTasks();\n const title = diagObj.db.getDiagramTitle();\n\n const actorNames = diagObj.db.getActors();\n for (const member in actors) {\n delete actors[member];\n }\n let actorPos = 0;\n actorNames.forEach((actorName) => {\n actors[actorName] = {\n color: conf.actorColours[actorPos % conf.actorColours.length],\n position: actorPos,\n };\n actorPos++;\n });\n\n drawActorLegend(diagram);\n leftMargin = conf.leftMargin + maxWidth;\n bounds.insert(0, 0, leftMargin, Object.keys(actors).length * 50);\n drawTasks(diagram, tasks, 0, id);\n\n const box = bounds.getBounds();\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', leftMargin)\n .attr('font-size', titleFontSize)\n .attr('font-weight', 'bold')\n .attr('y', 25)\n .attr('fill', titleColor)\n .attr('font-family', titleFontFamily);\n }\n\n const height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n const width = leftMargin + box.stopx + 2 * conf.diagramMarginX;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n // Draw activity line\n diagram\n .append('line')\n .attr('x1', leftMargin)\n .attr('y1', conf.height * 4) // One section head + one task + margins\n .attr('x2', width - leftMargin - 4) // Subtract stroke width so arrow point is retained\n .attr('y2', conf.height * 4)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#' + id + '-arrowhead)');\n\n const extraVertForTitle = title ? 70 : 0;\n diagram.attr('viewBox', `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram.attr('preserveAspectRatio', 'xMinYMin meet');\n diagram.attr('height', height + extraVertForTitle + 25);\n};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n },\n verticalPos: 0,\n\n sequenceItems: [],\n init: function () {\n this.sequenceItems = [];\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n };\n this.verticalPos = 0;\n },\n updateVal: function (obj, key, val, fun) {\n if (obj[key] === undefined) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n const conf = getConfig().journey;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _self = this;\n let cnt = 0;\n /** @param type - Set to `activation` if activation */\n function updateFn(type?: 'activation') {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function () {\n return this.verticalPos;\n },\n getBounds: function () {\n return this.data;\n },\n};\n\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\n\nexport const drawTasks = function (diagram, tasks, verticalPos, diagramId) {\n const conf = getConfig().journey;\n let lastSection = '';\n const sectionVHeight = conf.height * 2 + conf.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n\n let sectionNumber = 0;\n let fill = '#CCC';\n let colour = 'black';\n let num = 0;\n\n // Draw the tasks\n for (const [i, task] of tasks.entries()) {\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n\n // count how many consecutive tasks have the same section\n let taskInSectionCount = 0;\n const currentSection = task.section;\n for (let taskIndex = i; taskIndex < tasks.length; taskIndex++) {\n if (tasks[taskIndex].section == currentSection) {\n taskInSectionCount = taskInSectionCount + 1;\n } else {\n break;\n }\n }\n\n const section = {\n x: i * conf.taskMargin + i * conf.width + leftMargin,\n y: 50,\n text: task.section,\n fill,\n num,\n colour,\n taskCount: taskInSectionCount,\n };\n\n svgDraw.drawSection(diagram, section, conf);\n lastSection = task.section;\n sectionNumber++;\n }\n\n // Collect the actors involved in the task\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n\n return acc;\n }, {});\n\n // Add some rendering data to the object\n task.x = i * conf.taskMargin + i * conf.width + leftMargin;\n task.y = taskPos;\n task.width = conf.diagramMarginX;\n task.height = conf.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n\n // Draw the box with the attached line\n svgDraw.drawTask(diagram, task, conf, diagramId);\n bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopY is the length of the descenders.\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/journey.jison';\nimport db from './journeyDb.js';\nimport styles from './styles.js';\nimport renderer from './journeyRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n renderer.setConf(cnf.journey);\n db.clear();\n },\n};\n"], + "mappings": "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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "journey_default", "parser", "currentSection", "sections", "tasks", "rawTasks", "clear", "__name", "addSection", "txt", "getSections", "getTasks", "allItemsProcessed", "compileTasks", "maxDepth", "iterationCount", "updateActors", "tempActors", "task", "addTask", "descr", "taskData", "pieces", "score", "peeps", "peopleList", "s", "rawTask", "addTaskOrg", "newTask", "compileTask", "pos", "allProcessed", "i", "getActors", "journeyDb_default", "getConfig", "setDiagramTitle", "getDiagramTitle", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "getStyles", "__name", "options", "getIconStyles", "styles_default", "drawRect", "__name", "elem", "rectData", "drawFace", "element", "faceData", "circleElement", "face", "smile", "arc", "arc_default", "sad", "ambivalent", "drawCircle", "circleData", "drawText", "textData", "drawLabel", "txtObject", "genPoints", "x", "y", "width", "height", "cut", "polygon", "drawSection", "section", "conf", "g", "rect", "getNoteRect", "_drawTextCandidateFunc", "taskCount", "drawTask", "task", "diagramId", "center", "xPos", "person", "colour", "circle", "drawBackgroundRect", "bounds", "byText", "content", "textAttrs", "text", "_setTextAttrs", "byTspan", "taskFontSize", "taskFontFamily", "lines", "i", "dy", "byFo", "body", "toText", "fromTextAttrsDict", "key", "initGraphics", "graphics", "id", "svgDraw_default", "setConf", "__name", "cnf", "key", "conf", "actors", "maxWidth", "drawActorLegend", "diagram", "getConfig", "maxLabelWidth", "yPos", "person", "colour", "circleData", "svgDraw_default", "measureText", "fullTextWidth", "lines", "words", "currentLine", "word", "testLine", "brokenWord", "char", "line", "index", "labelData", "lineWidth", "leftMargin", "draw", "text", "id", "version", "diagObj", "configObject", "titleColor", "titleFontSize", "titleFontFamily", "securityLevel", "sandboxElement", "select_default", "root", "bounds", "tasks", "title", "actorNames", "member", "actorPos", "actorName", "drawTasks", "box", "height", "width", "configureSvgSize", "extraVertForTitle", "obj", "val", "fun", "startx", "starty", "stopx", "stopy", "_self", "cnt", "updateFn", "type", "item", "n", "_startx", "_stopx", "_starty", "_stopy", "bump", "fills", "textColours", "verticalPos", "diagramId", "lastSection", "sectionVHeight", "taskPos", "sectionNumber", "fill", "num", "task", "taskInSectionCount", "currentSection", "taskIndex", "section", "taskActors", "acc", "journeyRenderer_default", "diagram", "journey_default", "journeyDb_default", "journeyRenderer_default", "styles_default", "__name", "cnf"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/kanban-definition-ETIEC4YN.mjs b/assets/mermaid/chunks/mermaid.esm.min/kanban-definition-75IXJCU3.mjs similarity index 62% rename from assets/mermaid/chunks/mermaid.esm.min/kanban-definition-ETIEC4YN.mjs rename to assets/mermaid/chunks/mermaid.esm.min/kanban-definition-75IXJCU3.mjs index 2f5bda8..34659c4 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/kanban-definition-ETIEC4YN.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/kanban-definition-75IXJCU3.mjs @@ -1,14 +1,14 @@ -import{a as ke}from"./chunk-D4HHKWPY.mjs";import{a as ye}from"./chunk-KSICW3F5.mjs";import{a as de,b as pe}from"./chunk-NN2NZ22Q.mjs";import{e as fe,g as me,j as be}from"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{O as ue,Y as V,d as ge,e as te,f as ne,j as F,z as B}from"./chunk-3UWU4A3N.mjs";import{b as W}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as o}from"./chunk-VELTKBKT.mjs";var ie=(function(){var e=o(function(v,i,n,s){for(n=n||{},s=v.length;s--;n[v[s]]=i);return n},"o"),g=[1,4],p=[1,13],r=[1,12],d=[1,15],_=[1,16],b=[1,20],l=[1,19],L=[6,7,8],C=[1,26],u=[1,24],w=[1,25],k=[6,7,11],K=[1,31],N=[6,7,11,24],M=[1,6,13,16,17,20,23],y=[1,35],A=[1,36],O=[1,6,7,11,13,16,17,20,23],U=[1,38],T={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(i,n,s,a,h,t,R){var c=t.length-1;switch(h){case 6:case 7:return a;case 8:a.getLogger().trace("Stop NL ");break;case 9:a.getLogger().trace("Stop EOF ");break;case 11:a.getLogger().trace("Stop NL2 ");break;case 12:a.getLogger().trace("Stop EOF2 ");break;case 15:a.getLogger().info("Node: ",t[c-1].id),a.addNode(t[c-2].length,t[c-1].id,t[c-1].descr,t[c-1].type,t[c]);break;case 16:a.getLogger().info("Node: ",t[c].id),a.addNode(t[c-1].length,t[c].id,t[c].descr,t[c].type);break;case 17:a.getLogger().trace("Icon: ",t[c]),a.decorateNode({icon:t[c]});break;case 18:case 23:a.decorateNode({class:t[c]});break;case 19:a.getLogger().trace("SPACELIST");break;case 20:a.getLogger().trace("Node: ",t[c-1].id),a.addNode(0,t[c-1].id,t[c-1].descr,t[c-1].type,t[c]);break;case 21:a.getLogger().trace("Node: ",t[c].id),a.addNode(0,t[c].id,t[c].descr,t[c].type);break;case 22:a.decorateNode({icon:t[c]});break;case 27:a.getLogger().trace("node found ..",t[c-2]),this.$={id:t[c-1],descr:t[c-1],type:a.getType(t[c-2],t[c])};break;case 28:this.$={id:t[c],descr:t[c],type:0};break;case 29:a.getLogger().trace("node found ..",t[c-3]),this.$={id:t[c-3],descr:t[c-1],type:a.getType(t[c-2],t[c])};break;case 30:this.$=t[c-1]+t[c];break;case 31:this.$=t[c];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:g},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:g},{6:p,7:[1,10],9:9,12:11,13:r,14:14,16:d,17:_,18:17,19:18,20:b,23:l},e(L,[2,3]),{1:[2,2]},e(L,[2,4]),e(L,[2,5]),{1:[2,6],6:p,12:21,13:r,14:14,16:d,17:_,18:17,19:18,20:b,23:l},{6:p,9:22,12:11,13:r,14:14,16:d,17:_,18:17,19:18,20:b,23:l},{6:C,7:u,10:23,11:w},e(k,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:b,23:l}),e(k,[2,19]),e(k,[2,21],{15:30,24:K}),e(k,[2,22]),e(k,[2,23]),e(N,[2,25]),e(N,[2,26]),e(N,[2,28],{20:[1,32]}),{21:[1,33]},{6:C,7:u,10:34,11:w},{1:[2,7],6:p,12:21,13:r,14:14,16:d,17:_,18:17,19:18,20:b,23:l},e(M,[2,14],{7:y,11:A}),e(O,[2,8]),e(O,[2,9]),e(O,[2,10]),e(k,[2,16],{15:37,24:K}),e(k,[2,17]),e(k,[2,18]),e(k,[2,20],{24:U}),e(N,[2,31]),{21:[1,39]},{22:[1,40]},e(M,[2,13],{7:y,11:A}),e(O,[2,11]),e(O,[2,12]),e(k,[2,15],{24:U}),e(N,[2,30]),{22:[1,41]},e(N,[2,27]),e(N,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(i,n){if(n.recoverable)this.trace(i);else{var s=new Error(i);throw s.hash=n,s}},"parseError"),parse:o(function(i){var n=this,s=[0],a=[],h=[null],t=[],R=this.table,c="",z=0,ae=0,ce=0,xe=2,le=1,Le=t.slice.call(arguments,1),m=Object.create(this.lexer),P={yy:{}};for(var q in this.yy)Object.prototype.hasOwnProperty.call(this.yy,q)&&(P.yy[q]=this.yy[q]);m.setInput(i,P.yy),P.yy.lexer=m,P.yy.parser=this,typeof m.yylloc>"u"&&(m.yylloc={});var Q=m.yylloc;t.push(Q);var Oe=m.options&&m.options.ranges;typeof P.yy.parseError=="function"?this.parseError=P.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ue(S){s.length=s.length-2*S,h.length=h.length-S,t.length=t.length-S}o(Ue,"popStack");function ve(){var S;return S=a.pop()||m.lex()||le,typeof S!="number"&&(S instanceof Array&&(a=S,S=a.pop()),S=n.symbols_[S]||S),S}o(ve,"lex");for(var E,Z,j,D,He,$,G={},X,I,he,Y;;){if(j=s[s.length-1],this.defaultActions[j]?D=this.defaultActions[j]:((E===null||typeof E>"u")&&(E=ve()),D=R[j]&&R[j][E]),typeof D>"u"||!D.length||!D[0]){var ee="";Y=[];for(X in R[j])this.terminals_[X]&&X>xe&&Y.push("'"+this.terminals_[X]+"'");m.showPosition?ee="Parse error on line "+(z+1)+`: -`+m.showPosition()+` -Expecting `+Y.join(", ")+", got '"+(this.terminals_[E]||E)+"'":ee="Parse error on line "+(z+1)+": Unexpected "+(E==le?"end of input":"'"+(this.terminals_[E]||E)+"'"),this.parseError(ee,{text:m.match,token:this.terminals_[E]||E,line:m.yylineno,loc:Q,expected:Y})}if(D[0]instanceof Array&&D.length>1)throw new Error("Parse Error: multiple actions possible at state: "+j+", token: "+E);switch(D[0]){case 1:s.push(E),h.push(m.yytext),t.push(m.yylloc),s.push(D[1]),E=null,Z?(E=Z,Z=null):(ae=m.yyleng,c=m.yytext,z=m.yylineno,Q=m.yylloc,ce>0&&ce--);break;case 2:if(I=this.productions_[D[1]][1],G.$=h[h.length-I],G._$={first_line:t[t.length-(I||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(I||1)].first_column,last_column:t[t.length-1].last_column},Oe&&(G._$.range=[t[t.length-(I||1)].range[0],t[t.length-1].range[1]]),$=this.performAction.apply(G,[c,ae,z,P.yy,D[1],h,t].concat(Le)),typeof $<"u")return $;I&&(s=s.slice(0,-1*I*2),h=h.slice(0,-1*I),t=t.slice(0,-1*I)),s.push(this.productions_[D[1]][0]),h.push(G.$),t.push(G._$),he=R[s[s.length-2]][s[s.length-1]],s.push(he);break;case 3:return!0}}return!0},"parse")},J=(function(){var v={EOF:1,parseError:o(function(n,s){if(this.yy.parser)this.yy.parser.parseError(n,s);else throw new Error(n)},"parseError"),setInput:o(function(i,n){return this.yy=n||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var n=i.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:o(function(i){var n=i.length,s=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var h=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===a.length?this.yylloc.first_column:0)+a[a.length-s.length].length-s[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[h[0],h[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +import{a as ke}from"./chunk-LRIF4GLE.mjs";import{a as ye}from"./chunk-AZZRMDJM.mjs";import{a as de,b as pe}from"./chunk-7FYTHRHK.mjs";import{e as fe,g as me,j as be}from"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{A as B,P as ue,_ as V,d as ge,e as te,f as ne,j as F}from"./chunk-67TQ5CYL.mjs";import{b as W}from"./chunk-7W6UQGC5.mjs";import{a as o}from"./chunk-AQ6EADP3.mjs";var ie=(function(){var e=o(function(v,i,n,s){for(n=n||{},s=v.length;s--;n[v[s]]=i);return n},"o"),g=[1,4],p=[1,13],r=[1,12],d=[1,15],k=[1,16],y=[1,20],l=[1,19],L=[6,7,8],C=[1,26],u=[1,24],w=[1,25],E=[6,7,11],K=[1,31],N=[6,7,11,24],M=[1,6,13,16,17,20,23],f=[1,35],A=[1,36],O=[1,6,7,11,13,16,17,20,23],U=[1,38],T={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(i,n,s,a,h,t,R){var c=t.length-1;switch(h){case 6:case 7:return a;case 8:a.getLogger().trace("Stop NL ");break;case 9:a.getLogger().trace("Stop EOF ");break;case 11:a.getLogger().trace("Stop NL2 ");break;case 12:a.getLogger().trace("Stop EOF2 ");break;case 15:a.getLogger().info("Node: ",t[c-1].id),a.addNode(t[c-2].length,t[c-1].id,t[c-1].descr,t[c-1].type,t[c]);break;case 16:a.getLogger().info("Node: ",t[c].id),a.addNode(t[c-1].length,t[c].id,t[c].descr,t[c].type);break;case 17:a.getLogger().trace("Icon: ",t[c]),a.decorateNode({icon:t[c]});break;case 18:case 23:a.decorateNode({class:t[c]});break;case 19:a.getLogger().trace("SPACELIST");break;case 20:a.getLogger().trace("Node: ",t[c-1].id),a.addNode(0,t[c-1].id,t[c-1].descr,t[c-1].type,t[c]);break;case 21:a.getLogger().trace("Node: ",t[c].id),a.addNode(0,t[c].id,t[c].descr,t[c].type);break;case 22:a.decorateNode({icon:t[c]});break;case 27:a.getLogger().trace("node found ..",t[c-2]),this.$={id:t[c-1],descr:t[c-1],type:a.getType(t[c-2],t[c])};break;case 28:this.$={id:t[c],descr:t[c],type:0};break;case 29:a.getLogger().trace("node found ..",t[c-3]),this.$={id:t[c-3],descr:t[c-1],type:a.getType(t[c-2],t[c])};break;case 30:this.$=t[c-1]+t[c];break;case 31:this.$=t[c];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:g},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:g},{6:p,7:[1,10],9:9,12:11,13:r,14:14,16:d,17:k,18:17,19:18,20:y,23:l},e(L,[2,3]),{1:[2,2]},e(L,[2,4]),e(L,[2,5]),{1:[2,6],6:p,12:21,13:r,14:14,16:d,17:k,18:17,19:18,20:y,23:l},{6:p,9:22,12:11,13:r,14:14,16:d,17:k,18:17,19:18,20:y,23:l},{6:C,7:u,10:23,11:w},e(E,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:y,23:l}),e(E,[2,19]),e(E,[2,21],{15:30,24:K}),e(E,[2,22]),e(E,[2,23]),e(N,[2,25]),e(N,[2,26]),e(N,[2,28],{20:[1,32]}),{21:[1,33]},{6:C,7:u,10:34,11:w},{1:[2,7],6:p,12:21,13:r,14:14,16:d,17:k,18:17,19:18,20:y,23:l},e(M,[2,14],{7:f,11:A}),e(O,[2,8]),e(O,[2,9]),e(O,[2,10]),e(E,[2,16],{15:37,24:K}),e(E,[2,17]),e(E,[2,18]),e(E,[2,20],{24:U}),e(N,[2,31]),{21:[1,39]},{22:[1,40]},e(M,[2,13],{7:f,11:A}),e(O,[2,11]),e(O,[2,12]),e(E,[2,15],{24:U}),e(N,[2,30]),{22:[1,41]},e(N,[2,27]),e(N,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(i,n){if(n.recoverable)this.trace(i);else{var s=new Error(i);throw s.hash=n,s}},"parseError"),parse:o(function(i){var n=this,s=[0],a=[],h=[null],t=[],R=this.table,c="",z=0,ae=0,ce=0,xe=2,le=1,Le=t.slice.call(arguments,1),b=Object.create(this.lexer),P={yy:{}};for(var q in this.yy)Object.prototype.hasOwnProperty.call(this.yy,q)&&(P.yy[q]=this.yy[q]);b.setInput(i,P.yy),P.yy.lexer=b,P.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var Q=b.yylloc;t.push(Q);var Oe=b.options&&b.options.ranges;typeof P.yy.parseError=="function"?this.parseError=P.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ue(S){s.length=s.length-2*S,h.length=h.length-S,t.length=t.length-S}o(Ue,"popStack");function ve(){var S;return S=a.pop()||b.lex()||le,typeof S!="number"&&(S instanceof Array&&(a=S,S=a.pop()),S=n.symbols_[S]||S),S}o(ve,"lex");for(var _,Z,j,D,He,$,G={},X,I,he,Y;;){if(j=s[s.length-1],this.defaultActions[j]?D=this.defaultActions[j]:((_===null||typeof _>"u")&&(_=ve()),D=R[j]&&R[j][_]),typeof D>"u"||!D.length||!D[0]){var ee="";Y=[];for(X in R[j])this.terminals_[X]&&X>xe&&Y.push("'"+this.terminals_[X]+"'");b.showPosition?ee="Parse error on line "+(z+1)+`: +`+b.showPosition()+` +Expecting `+Y.join(", ")+", got '"+(this.terminals_[_]||_)+"'":ee="Parse error on line "+(z+1)+": Unexpected "+(_==le?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(ee,{text:b.match,token:this.terminals_[_]||_,line:b.yylineno,loc:Q,expected:Y})}if(D[0]instanceof Array&&D.length>1)throw new Error("Parse Error: multiple actions possible at state: "+j+", token: "+_);switch(D[0]){case 1:s.push(_),h.push(b.yytext),t.push(b.yylloc),s.push(D[1]),_=null,Z?(_=Z,Z=null):(ae=b.yyleng,c=b.yytext,z=b.yylineno,Q=b.yylloc,ce>0&&ce--);break;case 2:if(I=this.productions_[D[1]][1],G.$=h[h.length-I],G._$={first_line:t[t.length-(I||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(I||1)].first_column,last_column:t[t.length-1].last_column},Oe&&(G._$.range=[t[t.length-(I||1)].range[0],t[t.length-1].range[1]]),$=this.performAction.apply(G,[c,ae,z,P.yy,D[1],h,t].concat(Le)),typeof $<"u")return $;I&&(s=s.slice(0,-1*I*2),h=h.slice(0,-1*I),t=t.slice(0,-1*I)),s.push(this.productions_[D[1]][0]),h.push(G.$),t.push(G._$),he=R[s[s.length-2]][s[s.length-1]],s.push(he);break;case 3:return!0}}return!0},"parse")},J=(function(){var v={EOF:1,parseError:o(function(n,s){if(this.yy.parser)this.yy.parser.parseError(n,s);else throw new Error(n)},"parseError"),setInput:o(function(i,n){return this.yy=n||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var n=i.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:o(function(i){var n=i.length,s=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var h=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===a.length?this.yylloc.first_column:0)+a[a.length-s.length].length-s[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[h[0],h[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(i){this.unput(this.match.slice(i))},"less"),pastInput:o(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var i=this.pastInput(),n=new Array(i.length+1).join("-");return i+this.upcomingInput()+` `+n+"^"},"showPosition"),test_match:o(function(i,n){var s,a,h;if(this.options.backtrack_lexer&&(h={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(h.yylloc.range=this.yylloc.range.slice(0))),a=i[0].match(/(?:\r\n?|\n).*/g),a&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(i[0].length),this.matched+=i[0],s=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var t in h)this[t]=h[t];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,n,s,a;this._more||(this.yytext="",this.match="");for(var h=this._currentRules(),t=0;tn[0].length)){if(n=s,a=t,this.options.backtrack_lexer){if(i=this.test_match(s,h[t]),i!==!1)return i;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(i=this.test_match(n,h[a]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var n=this.next();return n||this.lex()},"lex"),begin:o(function(n){this.conditionStack.push(n)},"begin"),popState:o(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:o(function(n){this.begin(n)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(n,s,a,h){var t=h;switch(a){case 0:return this.pushState("shapeData"),s.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let R=/\n\s*/g;return s.yytext=s.yytext.replace(R,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return n.getLogger().trace("Found comment",s.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:n.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return n.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:n.getLogger().trace("end icon"),this.popState();break;case 16:return n.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return n.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return n.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return n.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:n.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return n.getLogger().trace("description:",s.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),n.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),n.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),n.getLogger().trace("node end ...",s.yytext),"NODE_DEND";break;case 36:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return n.getLogger().trace("Long description:",s.yytext),21;break;case 42:return n.getLogger().trace("Long description:",s.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return v})();T.lexer=J;function H(){this.yy={}}return o(H,"Parser"),H.prototype=T,T.Parser=H,new H})();ie.parser=ie;var Ee=ie;var x=[],se=[],re=0,oe={},Ce=o(()=>{x=[],se=[],re=0,oe={}},"clear"),Ie=o(e=>{if(x.length===0)return null;let g=x[0].level,p=null;for(let r=x.length-1;r>=0;r--)if(x[r].level===g&&!p&&(p=x[r]),x[r].levell.parentId===d.id);for(let l of b){let L={id:l.id,parentId:d.id,label:B(l.label??"",r),labelType:"markdown",isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};g.push(L)}}return{nodes:g,edges:e,other:{},config:V()}},"getData"),Ae=o((e,g,p,r,d)=>{let _=V(),b=_.mindmap?.padding??F.mindmap.padding;switch(r){case f.ROUNDED_RECT:case f.RECT:case f.HEXAGON:b*=2}let l={id:B(g,_)||"kbn"+re++,level:e,label:B(p,_),width:_.mindmap?.maxNodeWidth??F.mindmap.maxNodeWidth,padding:b,isGroup:!1};if(d!==void 0){let C;d.includes(` +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var n=this.next();return n||this.lex()},"lex"),begin:o(function(n){this.conditionStack.push(n)},"begin"),popState:o(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:o(function(n){this.begin(n)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(n,s,a,h){var t=h;switch(a){case 0:return this.pushState("shapeData"),s.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let R=/\n\s*/g;return s.yytext=s.yytext.replace(R,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return n.getLogger().trace("Found comment",s.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:n.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return n.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:n.getLogger().trace("end icon"),this.popState();break;case 16:return n.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return n.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return n.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return n.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:n.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return n.getLogger().trace("description:",s.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),n.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),n.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),n.getLogger().trace("node end ...",s.yytext),"NODE_DEND";break;case 36:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return n.getLogger().trace("Long description:",s.yytext),21;break;case 42:return n.getLogger().trace("Long description:",s.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return v})();T.lexer=J;function H(){this.yy={}}return o(H,"Parser"),H.prototype=T,T.Parser=H,new H})();ie.parser=ie;var Ee=ie;var x=[],se=[],re=0,oe={},Ce=o(()=>{x=[],se=[],re=0,oe={}},"clear"),Ie=o(e=>{if(x.length===0)return null;let g=x[0].level,p=null;for(let r=x.length-1;r>=0;r--)if(x[r].level===g&&!p&&(p=x[r]),x[r].levell.parentId===d.id);for(let l of y){let L={id:l.id,parentId:d.id,label:B(l.label??"",r),labelType:"markdown",isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};g.push(L)}}return{nodes:g,edges:e,other:{},config:V()}},"getData"),Ae=o((e,g,p,r,d)=>{let k=V(),y=k.mindmap?.padding??F.mindmap.padding;switch(r){case m.ROUNDED_RECT:case m.RECT:case m.HEXAGON:y*=2}let l={id:B(g,k)||"kbn"+re++,level:e,label:B(p,k),width:k.mindmap?.maxNodeWidth??F.mindmap.maxNodeWidth,padding:y,isGroup:!1};if(d!==void 0){let C;d.includes(` `)?C=d+` `:C=`{ `+d+` -}`;let u=pe(C,{schema:de});if(u.shape&&(u.shape!==u.shape.toLowerCase()||u.shape.includes("_")))throw new Error(`No such shape: ${u.shape}. Shape names should be lowercase.`);u?.shape&&u.shape==="kanbanItem"&&(l.shape=u?.shape),u?.label&&(l.label=u?.label),u?.icon&&(l.icon=u?.icon.toString()),u?.assigned&&(l.assigned=u?.assigned.toString()),u?.ticket&&(l.ticket=u?.ticket.toString()),u?.priority&&(l.priority=u?.priority)}let L=Ie(e);L?l.parentId=L.id||"kbn"+re++:se.push(l),x.push(l)},"addNode"),f={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Te=o((e,g)=>{switch(W.debug("In get type",e,g),e){case"[":return f.RECT;case"(":return g===")"?f.ROUNDED_RECT:f.CLOUD;case"((":return f.CIRCLE;case")":return f.CLOUD;case"))":return f.BANG;case"{{":return f.HEXAGON;default:return f.DEFAULT}},"getType"),Re=o((e,g)=>{oe[e]=g},"setElementForId"),Pe=o(e=>{if(!e)return;let g=V(),p=x[x.length-1];e.icon&&(p.icon=B(e.icon,g)),e.class&&(p.cssClasses=B(e.class,g))},"decorateNode"),je=o(e=>{switch(e){case f.DEFAULT:return"no-border";case f.RECT:return"rect";case f.ROUNDED_RECT:return"rounded-rect";case f.CIRCLE:return"circle";case f.CLOUD:return"cloud";case f.BANG:return"bang";case f.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),Be=o(()=>W,"getLogger"),Ve=o(e=>oe[e],"getElementById"),Me={clear:Ce,addNode:Ae,getSections:_e,getData:we,nodeType:f,getType:Te,setElementForId:Re,decorateNode:Pe,type2Str:je,getLogger:Be,getElementById:Ve},Se=Me;var Ge=o(async(e,g,p,r)=>{W.debug(`Rendering kanban diagram -`+e);let _=r.db.getData(),b=V();b.htmlLabels=!1;let l=ke(g),L=l.append("g");L.attr("class","sections");let C=l.append("g");C.attr("class","items");let u=_.nodes.filter(y=>y.isGroup),w=0,k=10,K=[],N=25;for(let y of u){let A=b?.kanban?.sectionWidth||200;w=w+1,y.x=A*w+(w-1)*k/2,y.width=A,y.y=0,y.height=A*3,y.rx=5,y.ry=5,y.cssClasses=y.cssClasses+" section-"+w;let O=await fe(L,y);N=Math.max(N,O?.labelBBox?.height),K.push(O)}let M=0;for(let y of u){let A=K[M];M=M+1;let O=b?.kanban?.sectionWidth||200,U=-O*3/2+N,T=U,J=_.nodes.filter(i=>i.parentId===y.id);for(let i of J){if(i.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");i.x=y.x,i.width=O-1.5*k;let s=(await me(C,i,{config:b})).node().getBBox();i.y=T+s.height/2,await be(i),T=i.y+s.height/2+k/2}let H=A.cluster.select("rect"),v=Math.max(T-U+3*k,50)+(N-25);H.attr("height",v)}ue(void 0,l,b.mindmap?.padding??F.kanban.padding,b.mindmap?.useMaxWidth??F.kanban.useMaxWidth)},"draw"),Ne={draw:Ge};var Fe=o(e=>{let g="";for(let r=0;re.darkMode?ne(r,d):te(r,d),"adjuster");for(let r=0;r{switch(W.debug("In get type",e,g),e){case"[":return m.RECT;case"(":return g===")"?m.ROUNDED_RECT:m.CLOUD;case"((":return m.CIRCLE;case")":return m.CLOUD;case"))":return m.BANG;case"{{":return m.HEXAGON;default:return m.DEFAULT}},"getType"),Re=o((e,g)=>{oe[e]=g},"setElementForId"),Pe=o(e=>{if(!e)return;let g=V(),p=x[x.length-1];e.icon&&(p.icon=B(e.icon,g)),e.class&&(p.cssClasses=B(e.class,g))},"decorateNode"),je=o(e=>{switch(e){case m.DEFAULT:return"no-border";case m.RECT:return"rect";case m.ROUNDED_RECT:return"rounded-rect";case m.CIRCLE:return"circle";case m.CLOUD:return"cloud";case m.BANG:return"bang";case m.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),Be=o(()=>W,"getLogger"),Ve=o(e=>oe[e],"getElementById"),Me={clear:Ce,addNode:Ae,getSections:_e,getData:we,nodeType:m,getType:Te,setElementForId:Re,decorateNode:Pe,type2Str:je,getLogger:Be,getElementById:Ve},Se=Me;var Ge=o(async(e,g,p,r)=>{W.debug(`Rendering kanban diagram +`+e);let k=r.db.getData(),y=V();y.htmlLabels=!1;let l=ke(g);for(let f of k.nodes)f.domId=`${g}-${f.id}`;let L=l.append("g");L.attr("class","sections");let C=l.append("g");C.attr("class","items");let u=k.nodes.filter(f=>f.isGroup),w=0,E=10,K=[],N=25;for(let f of u){let A=y?.kanban?.sectionWidth||200;w=w+1,f.x=A*w+(w-1)*E/2,f.width=A,f.y=0,f.height=A*3,f.rx=5,f.ry=5,f.cssClasses=f.cssClasses+" section-"+w;let O=await fe(L,f);N=Math.max(N,O?.labelBBox?.height),K.push(O)}let M=0;for(let f of u){let A=K[M];M=M+1;let O=y?.kanban?.sectionWidth||200,U=-O*3/2+N,T=U,J=k.nodes.filter(i=>i.parentId===f.id);for(let i of J){if(i.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");i.x=f.x,i.width=O-1.5*E;let s=(await me(C,i,{config:y})).node().getBBox();i.y=T+s.height/2,await be(i),T=i.y+s.height/2+E/2}let H=A.cluster.select("rect"),v=Math.max(T-U+3*E,50)+(N-25);H.attr("height",v)}ue(void 0,l,y.mindmap?.padding??F.kanban.padding,y.mindmap?.useMaxWidth??F.kanban.useMaxWidth)},"draw"),Ne={draw:Ge};var Fe=o(e=>{let g="";for(let r=0;re.darkMode?ne(r,d):te(r,d),"adjuster");for(let r=0;r 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,13],$V2=[1,12],$V3=[1,15],$V4=[1,16],$V5=[1,20],$V6=[1,19],$V7=[6,7,8],$V8=[1,26],$V9=[1,24],$Va=[1,25],$Vb=[6,7,11],$Vc=[1,31],$Vd=[6,7,11,24],$Ve=[1,6,13,16,17,20,23],$Vf=[1,35],$Vg=[1,36],$Vh=[1,6,7,11,13,16,17,20,23],$Vi=[1,38];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mindMap\":4,\"spaceLines\":5,\"SPACELINE\":6,\"NL\":7,\"KANBAN\":8,\"document\":9,\"stop\":10,\"EOF\":11,\"statement\":12,\"SPACELIST\":13,\"node\":14,\"shapeData\":15,\"ICON\":16,\"CLASS\":17,\"nodeWithId\":18,\"nodeWithoutId\":19,\"NODE_DSTART\":20,\"NODE_DESCR\":21,\"NODE_DEND\":22,\"NODE_ID\":23,\"SHAPE_DATA\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"SPACELINE\",7:\"NL\",8:\"KANBAN\",11:\"EOF\",13:\"SPACELIST\",16:\"ICON\",17:\"CLASS\",20:\"NODE_DSTART\",21:\"NODE_DESCR\",22:\"NODE_DEND\",23:\"NODE_ID\",24:\"SHAPE_DATA\"},\nproductions_: [0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,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: case 7:\n return yy; \nbreak;\ncase 8:\nyy.getLogger().trace('Stop NL ');\nbreak;\ncase 9:\nyy.getLogger().trace('Stop EOF ');\nbreak;\ncase 11:\nyy.getLogger().trace('Stop NL2 ');\nbreak;\ncase 12:\nyy.getLogger().trace('Stop EOF2 ');\nbreak;\ncase 15:\n yy.getLogger().info('Node: ',$$[$0-1].id);yy.addNode($$[$0-2].length, $$[$0-1].id, $$[$0-1].descr, $$[$0-1].type, $$[$0]); \nbreak;\ncase 16:\n yy.getLogger().info('Node: ',$$[$0].id);yy.addNode($$[$0-1].length, $$[$0].id, $$[$0].descr, $$[$0].type); \nbreak;\ncase 17:\n yy.getLogger().trace('Icon: ',$$[$0]);yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 18: case 23:\n yy.decorateNode({class: $$[$0]}); \nbreak;\ncase 19:\n yy.getLogger().trace('SPACELIST');\nbreak;\ncase 20:\n yy.getLogger().trace('Node: ',$$[$0-1].id);yy.addNode(0, $$[$0-1].id, $$[$0-1].descr, $$[$0-1].type, $$[$0]); \nbreak;\ncase 21:\n yy.getLogger().trace('Node: ',$$[$0].id);yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type); \nbreak;\ncase 22:\n yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 27:\n yy.getLogger().trace(\"node found ..\", $$[$0-2]); this.$ = { id: $$[$0-1], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\ncase 28:\n this.$ = { id: $$[$0], descr: $$[$0], type: 0 }; \nbreak;\ncase 29:\n yy.getLogger().trace(\"node found ..\", $$[$0-3]); this.$ = { id: $$[$0-3], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\ncase 30:\n this.$ = $$[$0-1] + $$[$0]; \nbreak;\ncase 31:\n this.$ = $$[$0]; \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],8:$V0},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:$V0},{6:$V1,7:[1,10],9:9,12:11,13:$V2,14:14,16:$V3,17:$V4,18:17,19:18,20:$V5,23:$V6},o($V7,[2,3]),{1:[2,2]},o($V7,[2,4]),o($V7,[2,5]),{1:[2,6],6:$V1,12:21,13:$V2,14:14,16:$V3,17:$V4,18:17,19:18,20:$V5,23:$V6},{6:$V1,9:22,12:11,13:$V2,14:14,16:$V3,17:$V4,18:17,19:18,20:$V5,23:$V6},{6:$V8,7:$V9,10:23,11:$Va},o($Vb,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:$V5,23:$V6}),o($Vb,[2,19]),o($Vb,[2,21],{15:30,24:$Vc}),o($Vb,[2,22]),o($Vb,[2,23]),o($Vd,[2,25]),o($Vd,[2,26]),o($Vd,[2,28],{20:[1,32]}),{21:[1,33]},{6:$V8,7:$V9,10:34,11:$Va},{1:[2,7],6:$V1,12:21,13:$V2,14:14,16:$V3,17:$V4,18:17,19:18,20:$V5,23:$V6},o($Ve,[2,14],{7:$Vf,11:$Vg}),o($Vh,[2,8]),o($Vh,[2,9]),o($Vh,[2,10]),o($Vb,[2,16],{15:37,24:$Vc}),o($Vb,[2,17]),o($Vb,[2,18]),o($Vb,[2,20],{24:$Vi}),o($Vd,[2,31]),{21:[1,39]},{22:[1,40]},o($Ve,[2,13],{7:$Vf,11:$Vg}),o($Vh,[2,11]),o($Vh,[2,12]),o($Vb,[2,15],{24:$Vi}),o($Vd,[2,30]),{22:[1,41]},o($Vd,[2,27]),o($Vd,[2,29])],\ndefaultActions: {2:[2,1],6:[2,2]},\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\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) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:\n // console.log('=> shapeData', yy_.yytext);\n this.pushState(\"shapeData\"); yy_.yytext=\"\"; return 24 \nbreak;\ncase 1:\n // console.log('=> shapeDataStr', yy_.yytext);\n this.pushState(\"shapeDataStr\");\n return 24;\n \nbreak;\ncase 2:\n // console.log('shapeData <==', yy_.yytext);\n this.popState(); return 24\nbreak;\ncase 3:\n // console.log('shapeData', yy_.yytext);\n const re = /\\n\\s*/g;\n yy_.yytext = yy_.yytext.replace(re,\"
    \");\n return 24\nbreak;\ncase 4:\n // console.log('shapeData', yy_.yytext);\n return 24;\n \nbreak;\ncase 5:\n // console.log('<== root', yy_.yytext)\n this.popState();\n \nbreak;\ncase 6:yy.getLogger().trace('Found comment',yy_.yytext); return 6;\nbreak;\ncase 7:return 8;\nbreak;\ncase 8: this.begin('CLASS'); \nbreak;\ncase 9: this.popState();return 17; \nbreak;\ncase 10: this.popState();\nbreak;\ncase 11: yy.getLogger().trace('Begin icon');this.begin('ICON'); \nbreak;\ncase 12:yy.getLogger().trace('SPACELINE');return 6 /* skip all whitespace */ ;\nbreak;\ncase 13:return 7;\nbreak;\ncase 14: return 16; \nbreak;\ncase 15:yy.getLogger().trace('end icon');this.popState();\nbreak;\ncase 16: yy.getLogger().trace('Exploding node'); this.begin('NODE');return 20; \nbreak;\ncase 17: yy.getLogger().trace('Cloud'); this.begin('NODE');return 20; \nbreak;\ncase 18: yy.getLogger().trace('Explosion Bang'); this.begin('NODE');return 20; \nbreak;\ncase 19: yy.getLogger().trace('Cloud Bang'); this.begin('NODE');return 20; \nbreak;\ncase 20: this.begin('NODE');return 20; \nbreak;\ncase 21: this.begin('NODE');return 20; \nbreak;\ncase 22: this.begin('NODE');return 20; \nbreak;\ncase 23: this.begin('NODE');return 20; \nbreak;\ncase 24:return 13 /* skip all whitespace */ ;\nbreak;\ncase 25:return 23;\nbreak;\ncase 26:return 11;\nbreak;\ncase 27: this.begin(\"NSTR2\");\nbreak;\ncase 28: return \"NODE_DESCR\";\nbreak;\ncase 29: this.popState();\nbreak;\ncase 30: yy.getLogger().trace('Starting NSTR');this.begin(\"NSTR\");\nbreak;\ncase 31: yy.getLogger().trace('description:', yy_.yytext); return \"NODE_DESCR\";\nbreak;\ncase 32:this.popState();\nbreak;\ncase 33:this.popState();yy.getLogger().trace('node end ))');return \"NODE_DEND\";\nbreak;\ncase 34:this.popState();yy.getLogger().trace('node end )');return \"NODE_DEND\";\nbreak;\ncase 35:this.popState();yy.getLogger().trace('node end ...',yy_.yytext);return \"NODE_DEND\";\nbreak;\ncase 36:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 37:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 38:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 39:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 40:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 41: yy.getLogger().trace('Long description:', yy_.yytext); return 21;\nbreak;\ncase 42: yy.getLogger().trace('Long description:', yy_.yytext); return 21;\nbreak;\n}\n},\nrules: [/^(?:@\\{)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\\\"]+)/i,/^(?:[^}^\"]+)/i,/^(?:\\})/i,/^(?:\\s*%%.*)/i,/^(?:kanban\\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\\n)/i,/^(?:::icon\\()/i,/^(?:[\\s]+[\\n])/i,/^(?:[\\n]+)/i,/^(?:[^\\)]+)/i,/^(?:\\))/i,/^(?:-\\))/i,/^(?:\\(-)/i,/^(?:\\)\\))/i,/^(?:\\))/i,/^(?:\\(\\()/i,/^(?:\\{\\{)/i,/^(?:\\()/i,/^(?:\\[)/i,/^(?:[\\s]+)/i,/^(?:[^\\(\\[\\n\\)\\{\\}@]+)/i,/^(?:$)/i,/^(?:[\"][`])/i,/^(?:[^`\"]+)/i,/^(?:[`][\"])/i,/^(?:[\"])/i,/^(?:[^\"]+)/i,/^(?:[\"])/i,/^(?:[\\)]\\))/i,/^(?:[\\)])/i,/^(?:[\\]])/i,/^(?:\\}\\})/i,/^(?:\\(-)/i,/^(?:-\\))/i,/^(?:\\(\\()/i,/^(?:\\()/i,/^(?:[^\\)\\]\\(\\}]+)/i,/^(?:.+(?!\\(\\())/i],\nconditions: {\"shapeDataEndBracket\":{\"rules\":[],\"inclusive\":false},\"shapeDataStr\":{\"rules\":[2,3],\"inclusive\":false},\"shapeData\":{\"rules\":[1,4,5],\"inclusive\":false},\"CLASS\":{\"rules\":[9,10],\"inclusive\":false},\"ICON\":{\"rules\":[14,15],\"inclusive\":false},\"NSTR2\":{\"rules\":[28,29],\"inclusive\":false},\"NSTR\":{\"rules\":[31,32],\"inclusive\":false},\"NODE\":{\"rules\":[27,30,33,34,35,36,37,38,39,40,41,42],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { D3Element } from '../../types.js';\nimport { sanitizeText } from '../../diagrams/common/common.js';\nimport { log } from '../../logger.js';\nimport type { Edge, KanbanNode } from '../../rendering-util/types.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { NodeMetaData } from '../../types.js';\nimport * as yaml from 'js-yaml';\n\nlet nodes: KanbanNode[] = [];\nlet sections: KanbanNode[] = [];\nlet cnt = 0;\nlet elements: Record = {};\n\nconst clear = () => {\n nodes = [];\n sections = [];\n cnt = 0;\n elements = {};\n};\n/*\n * if your level is the section level return null - then you do not belong to a level\n * otherwise return the current section\n */\nconst getSection = (level: number) => {\n if (nodes.length === 0) {\n // console.log('No nodes');\n return null;\n }\n const sectionLevel = nodes[0].level;\n let lastSection = null;\n for (let i = nodes.length - 1; i >= 0; i--) {\n if (nodes[i].level === sectionLevel && !lastSection) {\n lastSection = nodes[i];\n // console.log('lastSection found', lastSection);\n }\n // console.log('HERE', nodes[i].id, level, nodes[i].level, sectionLevel);\n if (nodes[i].level < sectionLevel) {\n throw new Error('Items without section detected, found section (\"' + nodes[i].label + '\")');\n }\n }\n if (level === lastSection?.level) {\n return null;\n }\n\n // No found\n return lastSection;\n};\n\nconst getSections = function () {\n return sections;\n};\n\nconst getData = function () {\n const edges = [] as Edge[];\n const _nodes: KanbanNode[] = [];\n\n const sections = getSections();\n const conf = getConfig();\n\n for (const section of sections) {\n const node = {\n id: section.id,\n label: sanitizeText(section.label ?? '', conf),\n labelType: 'markdown',\n isGroup: true,\n ticket: section.ticket,\n shape: 'kanbanSection',\n level: section.level,\n look: conf.look,\n } satisfies KanbanNode;\n _nodes.push(node);\n const children = nodes.filter((n) => n.parentId === section.id);\n\n for (const item of children) {\n const childNode = {\n id: item.id,\n parentId: section.id,\n label: sanitizeText(item.label ?? '', conf),\n labelType: 'markdown',\n isGroup: false,\n ticket: item?.ticket,\n priority: item?.priority,\n assigned: item?.assigned,\n icon: item?.icon,\n shape: 'kanbanItem',\n level: item.level,\n rx: 5,\n ry: 5,\n cssStyles: ['text-align: left'],\n } satisfies KanbanNode;\n _nodes.push(childNode);\n }\n }\n\n return { nodes: _nodes, edges, other: {}, config: getConfig() };\n};\n\nconst addNode = (level: number, id: string, descr: string, type: number, shapeData: string) => {\n const conf = getConfig();\n let padding: number = conf.mindmap?.padding ?? defaultConfig.mindmap.padding;\n switch (type) {\n case nodeType.ROUNDED_RECT:\n case nodeType.RECT:\n case nodeType.HEXAGON:\n padding *= 2;\n }\n\n const node: KanbanNode = {\n id: sanitizeText(id, conf) || 'kbn' + cnt++,\n level,\n label: sanitizeText(descr, conf),\n width: conf.mindmap?.maxNodeWidth ?? defaultConfig.mindmap.maxNodeWidth,\n padding,\n isGroup: false,\n } satisfies KanbanNode;\n\n if (shapeData !== undefined) {\n let yamlData;\n // detect if shapeData contains a newline character\n // console.log('shapeData', shapeData);\n if (!shapeData.includes('\\n')) {\n // console.log('yamlData shapeData has no new lines', shapeData);\n yamlData = '{\\n' + shapeData + '\\n}';\n } else {\n // console.log('yamlData shapeData has new lines', shapeData);\n yamlData = shapeData + '\\n';\n }\n const doc = yaml.load(yamlData, { schema: yaml.JSON_SCHEMA }) as NodeMetaData;\n // console.log('yamlData', doc);\n if (doc.shape && (doc.shape !== doc.shape.toLowerCase() || doc.shape.includes('_'))) {\n throw new Error(`No such shape: ${doc.shape}. Shape names should be lowercase.`);\n }\n\n // if shape is defined in the yaml data, use it if it is a valid shape kanbanItem\n if (doc?.shape && doc.shape === 'kanbanItem') {\n node.shape = doc?.shape;\n }\n if (doc?.label) {\n node.label = doc?.label;\n }\n if (doc?.icon) {\n node.icon = doc?.icon.toString();\n }\n if (doc?.assigned) {\n node.assigned = doc?.assigned.toString();\n }\n if (doc?.ticket) {\n node.ticket = doc?.ticket.toString();\n }\n\n if (doc?.priority) {\n node.priority = doc?.priority;\n }\n }\n\n const section = getSection(level);\n if (section) {\n // @ts-ignore false positive for section.id\n node.parentId = section.id || 'kbn' + cnt++;\n } else {\n sections.push(node);\n }\n nodes.push(node);\n};\n\nconst nodeType = {\n DEFAULT: 0,\n NO_BORDER: 0,\n ROUNDED_RECT: 1,\n RECT: 2,\n CIRCLE: 3,\n CLOUD: 4,\n BANG: 5,\n HEXAGON: 6,\n};\n\nconst getType = (startStr: string, endStr: string): number => {\n log.debug('In get type', startStr, endStr);\n switch (startStr) {\n case '[':\n return nodeType.RECT;\n case '(':\n return endStr === ')' ? nodeType.ROUNDED_RECT : nodeType.CLOUD;\n case '((':\n return nodeType.CIRCLE;\n case ')':\n return nodeType.CLOUD;\n case '))':\n return nodeType.BANG;\n case '{{':\n return nodeType.HEXAGON;\n default:\n return nodeType.DEFAULT;\n }\n};\n\nconst setElementForId = (id: number, element: D3Element) => {\n elements[id] = element;\n};\n\nconst decorateNode = (decoration?: { class?: string; icon?: string }) => {\n if (!decoration) {\n return;\n }\n const config = getConfig();\n const node = nodes[nodes.length - 1];\n if (decoration.icon) {\n node.icon = sanitizeText(decoration.icon, config);\n }\n if (decoration.class) {\n node.cssClasses = sanitizeText(decoration.class, config);\n }\n};\n\nconst type2Str = (type: number) => {\n switch (type) {\n case nodeType.DEFAULT:\n return 'no-border';\n case nodeType.RECT:\n return 'rect';\n case nodeType.ROUNDED_RECT:\n return 'rounded-rect';\n case nodeType.CIRCLE:\n return 'circle';\n case nodeType.CLOUD:\n return 'cloud';\n case nodeType.BANG:\n return 'bang';\n case nodeType.HEXAGON:\n return 'hexgon'; // cspell: disable-line\n default:\n return 'no-border';\n }\n};\n\n// Expose logger to grammar\nconst getLogger = () => log;\nconst getElementById = (id: number) => elements[id];\n\nconst db = {\n clear,\n addNode,\n getSections,\n getData,\n nodeType,\n getType,\n setElementForId,\n decorateNode,\n type2Str,\n getLogger,\n getElementById,\n} as const;\n\nexport default db;\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DrawDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport type { KanbanDB } from './kanbanTypes.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport { insertCluster } from '../../rendering-util/rendering-elements/clusters.js';\nimport { insertNode, positionNode } from '../../rendering-util/rendering-elements/nodes.js';\nimport type { ClusterNode } from '../../rendering-util/types.js';\n\nexport const draw: DrawDefinition = async (text, id, _version, diagObj) => {\n log.debug('Rendering kanban diagram\\n' + text);\n\n const db = diagObj.db as KanbanDB;\n const data4Layout = db.getData();\n\n const conf = getConfig();\n conf.htmlLabels = false;\n\n const svg = selectSvgElement(id);\n\n // Draw the graph and start with drawing the nodes without proper position\n // this gives us the size of the nodes and we can set the positions later\n\n const sectionsElem = svg.append('g');\n sectionsElem.attr('class', 'sections');\n const nodesElem = svg.append('g');\n nodesElem.attr('class', 'items');\n const sections = data4Layout.nodes.filter(\n // TODO: TypeScript 5.5 will infer this predicate automatically\n (node): node is typeof node & ClusterNode => node.isGroup\n );\n let cnt = 0;\n // TODO set padding\n const padding = 10;\n\n const sectionObjects = [];\n let maxLabelHeight = 25;\n for (const section of sections) {\n const WIDTH = conf?.kanban?.sectionWidth || 200;\n // const top = (-WIDTH * 3) / 2 + 25;\n // let y = top;\n cnt = cnt + 1;\n section.x = WIDTH * cnt + ((cnt - 1) * padding) / 2;\n section.width = WIDTH;\n section.y = 0;\n section.height = WIDTH * 3;\n section.rx = 5;\n section.ry = 5;\n\n // Todo, use theme variable THEME_COLOR_LIMIT instead of 10\n section.cssClasses = section.cssClasses + ' section-' + cnt;\n const sectionObj = await insertCluster(sectionsElem, section);\n maxLabelHeight = Math.max(maxLabelHeight, sectionObj?.labelBBox?.height);\n sectionObjects.push(sectionObj);\n }\n let i = 0;\n for (const section of sections) {\n const sectionObj = sectionObjects[i];\n i = i + 1;\n const WIDTH = conf?.kanban?.sectionWidth || 200;\n const top = (-WIDTH * 3) / 2 + maxLabelHeight;\n let y = top;\n const sectionItems = data4Layout.nodes.filter((node) => node.parentId === section.id);\n for (const item of sectionItems) {\n if (item.isGroup) {\n // Kanban diagrams should not have groups within groups\n // this should never happen\n throw new Error('Groups within groups are not allowed in Kanban diagrams');\n }\n item.x = section.x;\n item.width = WIDTH - 1.5 * padding;\n const nodeEl = await insertNode(nodesElem, item, { config: conf });\n const bbox = nodeEl.node()!.getBBox();\n item.y = y + bbox.height / 2;\n await positionNode(item);\n y = item.y + bbox.height / 2 + padding / 2;\n }\n const rect = sectionObj.cluster.select('rect');\n const height = Math.max(y - top + 3 * padding, 50) + (maxLabelHeight - 25);\n rect.attr('height', height);\n }\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(\n undefined,\n svg,\n conf.mindmap?.padding ?? defaultConfig.kanban.padding,\n conf.mindmap?.useMaxWidth ?? defaultConfig.kanban.useMaxWidth\n );\n};\n\nexport default {\n draw,\n};\n", "// @ts-expect-error Incorrect khroma types\nimport { darken, lighten, isDark } from 'khroma';\nimport type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { getIconStyles } from '../globalStyles.js';\n\nconst genSections: DiagramStylesProvider = (options) => {\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options['lineColor' + i] = options['lineColor' + i] || options['cScaleInv' + i];\n if (isDark(options['lineColor' + i])) {\n options['lineColor' + i] = lighten(options['lineColor' + i], 20);\n } else {\n options['lineColor' + i] = darken(options['lineColor' + i], 20);\n }\n }\n\n const adjuster = (color: string, level: number) =>\n options.darkMode ? darken(color, level) : lighten(color, level);\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = '' + (17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${\n i - 1\n } polygon, .section-${i - 1} path {\n fill: ${adjuster(options['cScale' + i], 10)};\n stroke: ${adjuster(options['cScale' + i], 10)};\n\n }\n .section-${i - 1} text {\n fill: ${options['cScaleLabel' + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options['cScaleLabel' + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options['cScale' + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options['cScaleInv' + i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.background};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .kanban-ticket-link {\n fill: ${options.background};\n stroke: ${options.nodeBorder};\n text-decoration: underline;\n }\n `;\n }\n return sections;\n};\n\n// TODO: These options seem incorrect.\nconst getStyles: DiagramStylesProvider = (options) =>\n `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .cluster-label, .label {\n color: ${options.textColor};\n fill: ${options.textColor};\n }\n .kanban-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n ${getIconStyles()}\n`;\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/kanban.jison';\nimport db from './kanbanDb.js';\nimport renderer from './kanbanRenderer.js';\nimport styles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n db,\n renderer,\n parser,\n styles,\n};\n"], - "mappings": "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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "re", "Parser", "kanban_default", "parser", "nodes", "sections", "cnt", "elements", "clear", "__name", "getSection", "level", "sectionLevel", "lastSection", "i", "getSections", "getData", "edges", "_nodes", "conf", "getConfig", "section", "node", "sanitizeText", "children", "n", "item", "childNode", "addNode", "id", "descr", "type", "shapeData", "padding", "defaultConfig_default", "nodeType", "yamlData", "doc", "load", "JSON_SCHEMA", "getType", "startStr", "endStr", "log", "setElementForId", "element", "decorateNode", "decoration", "config", "type2Str", "getLogger", "getElementById", "db", "kanbanDb_default", "draw", "__name", "text", "id", "_version", "diagObj", "log", "data4Layout", "conf", "getConfig", "svg", "selectSvgElement", "sectionsElem", "nodesElem", "sections", "node", "cnt", "padding", "sectionObjects", "maxLabelHeight", "section", "WIDTH", "sectionObj", "insertCluster", "i", "top", "y", "sectionItems", "item", "bbox", "insertNode", "positionNode", "rect", "height", "setupGraphViewbox", "defaultConfig_default", "kanbanRenderer_default", "genSections", "__name", "options", "sections", "i", "is_dark_default", "lighten_default", "darken_default", "adjuster", "color", "level", "sw", "getStyles", "getIconStyles", "styles_default", "diagram", "kanbanDb_default", "kanbanRenderer_default", "kanban_default", "styles_default"] + "sourcesContent": ["/* 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,13],$V2=[1,12],$V3=[1,15],$V4=[1,16],$V5=[1,20],$V6=[1,19],$V7=[6,7,8],$V8=[1,26],$V9=[1,24],$Va=[1,25],$Vb=[6,7,11],$Vc=[1,31],$Vd=[6,7,11,24],$Ve=[1,6,13,16,17,20,23],$Vf=[1,35],$Vg=[1,36],$Vh=[1,6,7,11,13,16,17,20,23],$Vi=[1,38];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mindMap\":4,\"spaceLines\":5,\"SPACELINE\":6,\"NL\":7,\"KANBAN\":8,\"document\":9,\"stop\":10,\"EOF\":11,\"statement\":12,\"SPACELIST\":13,\"node\":14,\"shapeData\":15,\"ICON\":16,\"CLASS\":17,\"nodeWithId\":18,\"nodeWithoutId\":19,\"NODE_DSTART\":20,\"NODE_DESCR\":21,\"NODE_DEND\":22,\"NODE_ID\":23,\"SHAPE_DATA\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"SPACELINE\",7:\"NL\",8:\"KANBAN\",11:\"EOF\",13:\"SPACELIST\",16:\"ICON\",17:\"CLASS\",20:\"NODE_DSTART\",21:\"NODE_DESCR\",22:\"NODE_DEND\",23:\"NODE_ID\",24:\"SHAPE_DATA\"},\nproductions_: [0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,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: case 7:\n return yy; \nbreak;\ncase 8:\nyy.getLogger().trace('Stop NL ');\nbreak;\ncase 9:\nyy.getLogger().trace('Stop EOF ');\nbreak;\ncase 11:\nyy.getLogger().trace('Stop NL2 ');\nbreak;\ncase 12:\nyy.getLogger().trace('Stop EOF2 ');\nbreak;\ncase 15:\n yy.getLogger().info('Node: ',$$[$0-1].id);yy.addNode($$[$0-2].length, $$[$0-1].id, $$[$0-1].descr, $$[$0-1].type, $$[$0]); \nbreak;\ncase 16:\n yy.getLogger().info('Node: ',$$[$0].id);yy.addNode($$[$0-1].length, $$[$0].id, $$[$0].descr, $$[$0].type); \nbreak;\ncase 17:\n yy.getLogger().trace('Icon: ',$$[$0]);yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 18: case 23:\n yy.decorateNode({class: $$[$0]}); \nbreak;\ncase 19:\n yy.getLogger().trace('SPACELIST');\nbreak;\ncase 20:\n yy.getLogger().trace('Node: ',$$[$0-1].id);yy.addNode(0, $$[$0-1].id, $$[$0-1].descr, $$[$0-1].type, $$[$0]); \nbreak;\ncase 21:\n yy.getLogger().trace('Node: ',$$[$0].id);yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type); \nbreak;\ncase 22:\n yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 27:\n yy.getLogger().trace(\"node found ..\", $$[$0-2]); this.$ = { id: $$[$0-1], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\ncase 28:\n this.$ = { id: $$[$0], descr: $$[$0], type: 0 }; \nbreak;\ncase 29:\n yy.getLogger().trace(\"node found ..\", $$[$0-3]); this.$ = { id: $$[$0-3], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\ncase 30:\n this.$ = $$[$0-1] + $$[$0]; \nbreak;\ncase 31:\n this.$ = $$[$0]; \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],8:$V0},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:$V0},{6:$V1,7:[1,10],9:9,12:11,13:$V2,14:14,16:$V3,17:$V4,18:17,19:18,20:$V5,23:$V6},o($V7,[2,3]),{1:[2,2]},o($V7,[2,4]),o($V7,[2,5]),{1:[2,6],6:$V1,12:21,13:$V2,14:14,16:$V3,17:$V4,18:17,19:18,20:$V5,23:$V6},{6:$V1,9:22,12:11,13:$V2,14:14,16:$V3,17:$V4,18:17,19:18,20:$V5,23:$V6},{6:$V8,7:$V9,10:23,11:$Va},o($Vb,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:$V5,23:$V6}),o($Vb,[2,19]),o($Vb,[2,21],{15:30,24:$Vc}),o($Vb,[2,22]),o($Vb,[2,23]),o($Vd,[2,25]),o($Vd,[2,26]),o($Vd,[2,28],{20:[1,32]}),{21:[1,33]},{6:$V8,7:$V9,10:34,11:$Va},{1:[2,7],6:$V1,12:21,13:$V2,14:14,16:$V3,17:$V4,18:17,19:18,20:$V5,23:$V6},o($Ve,[2,14],{7:$Vf,11:$Vg}),o($Vh,[2,8]),o($Vh,[2,9]),o($Vh,[2,10]),o($Vb,[2,16],{15:37,24:$Vc}),o($Vb,[2,17]),o($Vb,[2,18]),o($Vb,[2,20],{24:$Vi}),o($Vd,[2,31]),{21:[1,39]},{22:[1,40]},o($Ve,[2,13],{7:$Vf,11:$Vg}),o($Vh,[2,11]),o($Vh,[2,12]),o($Vb,[2,15],{24:$Vi}),o($Vd,[2,30]),{22:[1,41]},o($Vd,[2,27]),o($Vd,[2,29])],\ndefaultActions: {2:[2,1],6:[2,2]},\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\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) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:\n // console.log('=> shapeData', yy_.yytext);\n this.pushState(\"shapeData\"); yy_.yytext=\"\"; return 24 \nbreak;\ncase 1:\n // console.log('=> shapeDataStr', yy_.yytext);\n this.pushState(\"shapeDataStr\");\n return 24;\n \nbreak;\ncase 2:\n // console.log('shapeData <==', yy_.yytext);\n this.popState(); return 24\nbreak;\ncase 3:\n // console.log('shapeData', yy_.yytext);\n const re = /\\n\\s*/g;\n yy_.yytext = yy_.yytext.replace(re,\"
    \");\n return 24\nbreak;\ncase 4:\n // console.log('shapeData', yy_.yytext);\n return 24;\n \nbreak;\ncase 5:\n // console.log('<== root', yy_.yytext)\n this.popState();\n \nbreak;\ncase 6:yy.getLogger().trace('Found comment',yy_.yytext); return 6;\nbreak;\ncase 7:return 8;\nbreak;\ncase 8: this.begin('CLASS'); \nbreak;\ncase 9: this.popState();return 17; \nbreak;\ncase 10: this.popState();\nbreak;\ncase 11: yy.getLogger().trace('Begin icon');this.begin('ICON'); \nbreak;\ncase 12:yy.getLogger().trace('SPACELINE');return 6 /* skip all whitespace */ ;\nbreak;\ncase 13:return 7;\nbreak;\ncase 14: return 16; \nbreak;\ncase 15:yy.getLogger().trace('end icon');this.popState();\nbreak;\ncase 16: yy.getLogger().trace('Exploding node'); this.begin('NODE');return 20; \nbreak;\ncase 17: yy.getLogger().trace('Cloud'); this.begin('NODE');return 20; \nbreak;\ncase 18: yy.getLogger().trace('Explosion Bang'); this.begin('NODE');return 20; \nbreak;\ncase 19: yy.getLogger().trace('Cloud Bang'); this.begin('NODE');return 20; \nbreak;\ncase 20: this.begin('NODE');return 20; \nbreak;\ncase 21: this.begin('NODE');return 20; \nbreak;\ncase 22: this.begin('NODE');return 20; \nbreak;\ncase 23: this.begin('NODE');return 20; \nbreak;\ncase 24:return 13 /* skip all whitespace */ ;\nbreak;\ncase 25:return 23;\nbreak;\ncase 26:return 11;\nbreak;\ncase 27: this.begin(\"NSTR2\");\nbreak;\ncase 28: return \"NODE_DESCR\";\nbreak;\ncase 29: this.popState();\nbreak;\ncase 30: yy.getLogger().trace('Starting NSTR');this.begin(\"NSTR\");\nbreak;\ncase 31: yy.getLogger().trace('description:', yy_.yytext); return \"NODE_DESCR\";\nbreak;\ncase 32:this.popState();\nbreak;\ncase 33:this.popState();yy.getLogger().trace('node end ))');return \"NODE_DEND\";\nbreak;\ncase 34:this.popState();yy.getLogger().trace('node end )');return \"NODE_DEND\";\nbreak;\ncase 35:this.popState();yy.getLogger().trace('node end ...',yy_.yytext);return \"NODE_DEND\";\nbreak;\ncase 36:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 37:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 38:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 39:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 40:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 41: yy.getLogger().trace('Long description:', yy_.yytext); return 21;\nbreak;\ncase 42: yy.getLogger().trace('Long description:', yy_.yytext); return 21;\nbreak;\n}\n},\nrules: [/^(?:@\\{)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\\\"]+)/i,/^(?:[^}^\"]+)/i,/^(?:\\})/i,/^(?:\\s*%%.*)/i,/^(?:kanban\\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\\n)/i,/^(?:::icon\\()/i,/^(?:[\\s]+[\\n])/i,/^(?:[\\n]+)/i,/^(?:[^\\)]+)/i,/^(?:\\))/i,/^(?:-\\))/i,/^(?:\\(-)/i,/^(?:\\)\\))/i,/^(?:\\))/i,/^(?:\\(\\()/i,/^(?:\\{\\{)/i,/^(?:\\()/i,/^(?:\\[)/i,/^(?:[\\s]+)/i,/^(?:[^\\(\\[\\n\\)\\{\\}@]+)/i,/^(?:$)/i,/^(?:[\"][`])/i,/^(?:[^`\"]+)/i,/^(?:[`][\"])/i,/^(?:[\"])/i,/^(?:[^\"]+)/i,/^(?:[\"])/i,/^(?:[\\)]\\))/i,/^(?:[\\)])/i,/^(?:[\\]])/i,/^(?:\\}\\})/i,/^(?:\\(-)/i,/^(?:-\\))/i,/^(?:\\(\\()/i,/^(?:\\()/i,/^(?:[^\\)\\]\\(\\}]+)/i,/^(?:.+(?!\\(\\())/i],\nconditions: {\"shapeDataEndBracket\":{\"rules\":[],\"inclusive\":false},\"shapeDataStr\":{\"rules\":[2,3],\"inclusive\":false},\"shapeData\":{\"rules\":[1,4,5],\"inclusive\":false},\"CLASS\":{\"rules\":[9,10],\"inclusive\":false},\"ICON\":{\"rules\":[14,15],\"inclusive\":false},\"NSTR2\":{\"rules\":[28,29],\"inclusive\":false},\"NSTR\":{\"rules\":[31,32],\"inclusive\":false},\"NODE\":{\"rules\":[27,30,33,34,35,36,37,38,39,40,41,42],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { D3Element } from '../../types.js';\nimport { sanitizeText } from '../../diagrams/common/common.js';\nimport { log } from '../../logger.js';\nimport type { Edge, KanbanNode } from '../../rendering-util/types.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { NodeMetaData } from '../../types.js';\nimport * as yaml from 'js-yaml';\n\nlet nodes: KanbanNode[] = [];\nlet sections: KanbanNode[] = [];\nlet cnt = 0;\nlet elements: Record = {};\n\nconst clear = () => {\n nodes = [];\n sections = [];\n cnt = 0;\n elements = {};\n};\n/*\n * if your level is the section level return null - then you do not belong to a level\n * otherwise return the current section\n */\nconst getSection = (level: number) => {\n if (nodes.length === 0) {\n // console.log('No nodes');\n return null;\n }\n const sectionLevel = nodes[0].level;\n let lastSection = null;\n for (let i = nodes.length - 1; i >= 0; i--) {\n if (nodes[i].level === sectionLevel && !lastSection) {\n lastSection = nodes[i];\n // console.log('lastSection found', lastSection);\n }\n // console.log('HERE', nodes[i].id, level, nodes[i].level, sectionLevel);\n if (nodes[i].level < sectionLevel) {\n throw new Error('Items without section detected, found section (\"' + nodes[i].label + '\")');\n }\n }\n if (level === lastSection?.level) {\n return null;\n }\n\n // No found\n return lastSection;\n};\n\nconst getSections = function () {\n return sections;\n};\n\nconst getData = function () {\n const edges = [] as Edge[];\n const _nodes: KanbanNode[] = [];\n\n const sections = getSections();\n const conf = getConfig();\n\n for (const section of sections) {\n const node = {\n id: section.id,\n label: sanitizeText(section.label ?? '', conf),\n labelType: 'markdown',\n isGroup: true,\n ticket: section.ticket,\n shape: 'kanbanSection',\n level: section.level,\n look: conf.look,\n } satisfies KanbanNode;\n _nodes.push(node);\n const children = nodes.filter((n) => n.parentId === section.id);\n\n for (const item of children) {\n const childNode = {\n id: item.id,\n parentId: section.id,\n label: sanitizeText(item.label ?? '', conf),\n labelType: 'markdown',\n isGroup: false,\n ticket: item?.ticket,\n priority: item?.priority,\n assigned: item?.assigned,\n icon: item?.icon,\n shape: 'kanbanItem',\n level: item.level,\n rx: 5,\n ry: 5,\n cssStyles: ['text-align: left'],\n } satisfies KanbanNode;\n _nodes.push(childNode);\n }\n }\n\n return { nodes: _nodes, edges, other: {}, config: getConfig() };\n};\n\nconst addNode = (level: number, id: string, descr: string, type: number, shapeData: string) => {\n const conf = getConfig();\n let padding: number = conf.mindmap?.padding ?? defaultConfig.mindmap.padding;\n switch (type) {\n case nodeType.ROUNDED_RECT:\n case nodeType.RECT:\n case nodeType.HEXAGON:\n padding *= 2;\n }\n\n const node: KanbanNode = {\n id: sanitizeText(id, conf) || 'kbn' + cnt++,\n level,\n label: sanitizeText(descr, conf),\n width: conf.mindmap?.maxNodeWidth ?? defaultConfig.mindmap.maxNodeWidth,\n padding,\n isGroup: false,\n } satisfies KanbanNode;\n\n if (shapeData !== undefined) {\n let yamlData;\n // detect if shapeData contains a newline character\n // console.log('shapeData', shapeData);\n if (!shapeData.includes('\\n')) {\n // console.log('yamlData shapeData has no new lines', shapeData);\n yamlData = '{\\n' + shapeData + '\\n}';\n } else {\n // console.log('yamlData shapeData has new lines', shapeData);\n yamlData = shapeData + '\\n';\n }\n const doc = yaml.load(yamlData, { schema: yaml.JSON_SCHEMA }) as NodeMetaData;\n // console.log('yamlData', doc);\n if (doc.shape && (doc.shape !== doc.shape.toLowerCase() || doc.shape.includes('_'))) {\n throw new Error(`No such shape: ${doc.shape}. Shape names should be lowercase.`);\n }\n\n // if shape is defined in the yaml data, use it if it is a valid shape kanbanItem\n if (doc?.shape && doc.shape === 'kanbanItem') {\n node.shape = doc?.shape;\n }\n if (doc?.label) {\n node.label = doc?.label;\n }\n if (doc?.icon) {\n node.icon = doc?.icon.toString();\n }\n if (doc?.assigned) {\n node.assigned = doc?.assigned.toString();\n }\n if (doc?.ticket) {\n node.ticket = doc?.ticket.toString();\n }\n\n if (doc?.priority) {\n node.priority = doc?.priority;\n }\n }\n\n const section = getSection(level);\n if (section) {\n // @ts-ignore false positive for section.id\n node.parentId = section.id || 'kbn' + cnt++;\n } else {\n sections.push(node);\n }\n nodes.push(node);\n};\n\nconst nodeType = {\n DEFAULT: 0,\n NO_BORDER: 0,\n ROUNDED_RECT: 1,\n RECT: 2,\n CIRCLE: 3,\n CLOUD: 4,\n BANG: 5,\n HEXAGON: 6,\n};\n\nconst getType = (startStr: string, endStr: string): number => {\n log.debug('In get type', startStr, endStr);\n switch (startStr) {\n case '[':\n return nodeType.RECT;\n case '(':\n return endStr === ')' ? nodeType.ROUNDED_RECT : nodeType.CLOUD;\n case '((':\n return nodeType.CIRCLE;\n case ')':\n return nodeType.CLOUD;\n case '))':\n return nodeType.BANG;\n case '{{':\n return nodeType.HEXAGON;\n default:\n return nodeType.DEFAULT;\n }\n};\n\nconst setElementForId = (id: number, element: D3Element) => {\n elements[id] = element;\n};\n\nconst decorateNode = (decoration?: { class?: string; icon?: string }) => {\n if (!decoration) {\n return;\n }\n const config = getConfig();\n const node = nodes[nodes.length - 1];\n if (decoration.icon) {\n node.icon = sanitizeText(decoration.icon, config);\n }\n if (decoration.class) {\n node.cssClasses = sanitizeText(decoration.class, config);\n }\n};\n\nconst type2Str = (type: number) => {\n switch (type) {\n case nodeType.DEFAULT:\n return 'no-border';\n case nodeType.RECT:\n return 'rect';\n case nodeType.ROUNDED_RECT:\n return 'rounded-rect';\n case nodeType.CIRCLE:\n return 'circle';\n case nodeType.CLOUD:\n return 'cloud';\n case nodeType.BANG:\n return 'bang';\n case nodeType.HEXAGON:\n return 'hexgon'; // cspell: disable-line\n default:\n return 'no-border';\n }\n};\n\n// Expose logger to grammar\nconst getLogger = () => log;\nconst getElementById = (id: number) => elements[id];\n\nconst db = {\n clear,\n addNode,\n getSections,\n getData,\n nodeType,\n getType,\n setElementForId,\n decorateNode,\n type2Str,\n getLogger,\n getElementById,\n} as const;\n\nexport default db;\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DrawDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport type { KanbanDB } from './kanbanTypes.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport { insertCluster } from '../../rendering-util/rendering-elements/clusters.js';\nimport { insertNode, positionNode } from '../../rendering-util/rendering-elements/nodes.js';\nimport type { ClusterNode } from '../../rendering-util/types.js';\n\nexport const draw: DrawDefinition = async (text, id, _version, diagObj) => {\n log.debug('Rendering kanban diagram\\n' + text);\n\n const db = diagObj.db as KanbanDB;\n const data4Layout = db.getData();\n\n const conf = getConfig();\n conf.htmlLabels = false;\n\n const svg = selectSvgElement(id);\n\n // Prefix all node domIds with the diagram's SVG element ID to ensure uniqueness\n // across multiple diagrams on the same page. This mirrors render.ts lines 63-70.\n for (const node of data4Layout.nodes) {\n node.domId = `${id}-${node.id}`;\n }\n\n // Draw the graph and start with drawing the nodes without proper position\n // this gives us the size of the nodes and we can set the positions later\n\n const sectionsElem = svg.append('g');\n sectionsElem.attr('class', 'sections');\n const nodesElem = svg.append('g');\n nodesElem.attr('class', 'items');\n const sections = data4Layout.nodes.filter(\n // TODO: TypeScript 5.5 will infer this predicate automatically\n (node): node is typeof node & ClusterNode => node.isGroup\n );\n let cnt = 0;\n // TODO set padding\n const padding = 10;\n\n const sectionObjects = [];\n let maxLabelHeight = 25;\n for (const section of sections) {\n const WIDTH = conf?.kanban?.sectionWidth || 200;\n // const top = (-WIDTH * 3) / 2 + 25;\n // let y = top;\n cnt = cnt + 1;\n section.x = WIDTH * cnt + ((cnt - 1) * padding) / 2;\n section.width = WIDTH;\n section.y = 0;\n section.height = WIDTH * 3;\n section.rx = 5;\n section.ry = 5;\n\n // Todo, use theme variable THEME_COLOR_LIMIT instead of 10\n section.cssClasses = section.cssClasses + ' section-' + cnt;\n const sectionObj = await insertCluster(sectionsElem, section);\n maxLabelHeight = Math.max(maxLabelHeight, sectionObj?.labelBBox?.height);\n sectionObjects.push(sectionObj);\n }\n let i = 0;\n for (const section of sections) {\n const sectionObj = sectionObjects[i];\n i = i + 1;\n const WIDTH = conf?.kanban?.sectionWidth || 200;\n const top = (-WIDTH * 3) / 2 + maxLabelHeight;\n let y = top;\n const sectionItems = data4Layout.nodes.filter((node) => node.parentId === section.id);\n for (const item of sectionItems) {\n if (item.isGroup) {\n // Kanban diagrams should not have groups within groups\n // this should never happen\n throw new Error('Groups within groups are not allowed in Kanban diagrams');\n }\n item.x = section.x;\n item.width = WIDTH - 1.5 * padding;\n const nodeEl = await insertNode(nodesElem, item, { config: conf });\n const bbox = nodeEl.node()!.getBBox();\n item.y = y + bbox.height / 2;\n await positionNode(item);\n y = item.y + bbox.height / 2 + padding / 2;\n }\n const rect = sectionObj.cluster.select('rect');\n const height = Math.max(y - top + 3 * padding, 50) + (maxLabelHeight - 25);\n rect.attr('height', height);\n }\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(\n undefined,\n svg,\n conf.mindmap?.padding ?? defaultConfig.kanban.padding,\n conf.mindmap?.useMaxWidth ?? defaultConfig.kanban.useMaxWidth\n );\n};\n\nexport default {\n draw,\n};\n", "// @ts-expect-error Incorrect khroma types\nimport { darken, lighten, isDark } from 'khroma';\nimport type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { getIconStyles } from '../globalStyles.js';\n\nconst genSections: DiagramStylesProvider = (options) => {\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options['lineColor' + i] = options['lineColor' + i] || options['cScaleInv' + i];\n if (isDark(options['lineColor' + i])) {\n options['lineColor' + i] = lighten(options['lineColor' + i], 20);\n } else {\n options['lineColor' + i] = darken(options['lineColor' + i], 20);\n }\n }\n\n const adjuster = (color: string, level: number) =>\n options.darkMode ? darken(color, level) : lighten(color, level);\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = '' + (17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${\n i - 1\n } polygon, .section-${i - 1} path {\n fill: ${adjuster(options['cScale' + i], 10)};\n stroke: ${adjuster(options['cScale' + i], 10)};\n\n }\n .section-${i - 1} text {\n fill: ${options['cScaleLabel' + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options['cScaleLabel' + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options['cScale' + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options['cScaleInv' + i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.background};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .kanban-ticket-link {\n fill: ${options.background};\n stroke: ${options.nodeBorder};\n text-decoration: underline;\n }\n `;\n }\n return sections;\n};\n\n// TODO: These options seem incorrect.\nconst getStyles: DiagramStylesProvider = (options) =>\n `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .cluster-label, .label {\n color: ${options.textColor};\n fill: ${options.textColor};\n }\n .kanban-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n ${getIconStyles()}\n`;\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/kanban.jison';\nimport db from './kanbanDb.js';\nimport renderer from './kanbanRenderer.js';\nimport styles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n db,\n renderer,\n parser,\n styles,\n};\n"], + "mappings": "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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "re", "Parser", "kanban_default", "parser", "nodes", "sections", "cnt", "elements", "clear", "__name", "getSection", "level", "sectionLevel", "lastSection", "i", "getSections", "getData", "edges", "_nodes", "conf", "getConfig", "section", "node", "sanitizeText", "children", "n", "item", "childNode", "addNode", "id", "descr", "type", "shapeData", "padding", "defaultConfig_default", "nodeType", "yamlData", "doc", "load", "JSON_SCHEMA", "getType", "startStr", "endStr", "log", "setElementForId", "element", "decorateNode", "decoration", "config", "type2Str", "getLogger", "getElementById", "db", "kanbanDb_default", "draw", "__name", "text", "id", "_version", "diagObj", "log", "data4Layout", "conf", "getConfig", "svg", "selectSvgElement", "node", "sectionsElem", "nodesElem", "sections", "cnt", "padding", "sectionObjects", "maxLabelHeight", "section", "WIDTH", "sectionObj", "insertCluster", "i", "top", "y", "sectionItems", "item", "bbox", "insertNode", "positionNode", "rect", "height", "setupGraphViewbox", "defaultConfig_default", "kanbanRenderer_default", "genSections", "__name", "options", "sections", "i", "is_dark_default", "lighten_default", "darken_default", "adjuster", "color", "level", "sw", "getStyles", "getIconStyles", "styles_default", "diagram", "kanbanDb_default", "kanbanRenderer_default", "kanban_default", "styles_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/katex-GD7MH7QM.mjs b/assets/mermaid/chunks/mermaid.esm.min/katex-K3KEBU37.mjs similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/katex-GD7MH7QM.mjs rename to assets/mermaid/chunks/mermaid.esm.min/katex-K3KEBU37.mjs index cd1e36c..06505d0 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/katex-GD7MH7QM.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/katex-K3KEBU37.mjs @@ -1,4 +1,4 @@ -import{a as d}from"./chunk-VELTKBKT.mjs";var h0=class r{static{d(this,"SourceLocation")}constructor(e,t,a){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=a}static range(e,t){return t?!e||!e.loc||!t.loc||e.loc.lexer!==t.loc.lexer?null:new r(e.loc.lexer,e.loc.start,t.loc.end):e&&e.loc}},d0=class r{static{d(this,"Token")}constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(e,t){return new r(t,h0.range(this,e))}},z=class r{static{d(this,"ParseError")}constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var a="KaTeX parse error: "+e,n,s,u=t&&t.loc;if(u&&u.start<=u.end){var h=u.lexer.input;n=u.start,s=u.end,n===h.length?a+=" at end of input: ":a+=" at position "+(n+1)+": ";var c=h.slice(n,s).replace(/[^]/g,"$&\u0332"),v;n>15?v="\u2026"+h.slice(n-15,n):v=h.slice(0,n);var b;s+15":">","<":"<",'"':""","'":"'"},Sa=/[&><"']/g;function Ma(r){return String(r).replace(Sa,e=>ka[e])}d(Ma,"escape");var wr=d(function r(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?r(e.body[0]):e:e.type==="font"?r(e.body):e},"getBaseElem"),za=d(function(e){var t=wr(e);return t.type==="mathord"||t.type==="textord"||t.type==="atom"},"isCharacterBox"),Aa=d(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),Ta=d(function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},"protocolFromUrl"),V={deflt:ya,escape:Ma,hyphenate:wa,getBaseElem:wr,isCharacterBox:za,protocolFromUrl:Ta},qe={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:d(r=>"#"+r,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:d((r,e)=>(e.push(r),e),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:d(r=>Math.max(0,r),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:d(r=>Math.max(0,r),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:d(r=>Math.max(0,r),"processor"),cli:"-e, --max-expand ",cliProcessor:d(r=>r==="Infinity"?1/0:parseInt(r),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};function Ba(r){if(r.default)return r.default;var e=r.type,t=Array.isArray(e)?e[0]:e;if(typeof t!="string")return t.enum[0];switch(t){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}d(Ba,"getDefaultValue");var me=class{static{d(this,"Settings")}constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var t in qe)if(qe.hasOwnProperty(t)){var a=qe[t];this[t]=e[t]!==void 0?a.processor?a.processor(e[t]):e[t]:Ba(a)}}reportNonstrict(e,t,a){var n=this.strict;if(typeof n=="function"&&(n=n(e,t,a)),!(!n||n==="ignore")){if(n===!0||n==="error")throw new z("LaTeX-incompatible input and strict mode is set to 'error': "+(t+" ["+e+"]"),a);n==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]"))}}useStrictBehavior(e,t,a){var n=this.strict;if(typeof n=="function")try{n=n(e,t,a)}catch{n="error"}return!n||n==="ignore"?!1:n===!0||n==="error"?!0:n==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var t=V.protocolFromUrl(e.url);if(t==null)return!1;e.protocol=t}var a=typeof this.trust=="function"?this.trust(e):this.trust;return!!a}},k0=class{static{d(this,"Style")}constructor(e,t,a){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=a}sup(){return S0[Da[this.id]]}sub(){return S0[Ca[this.id]]}fracNum(){return S0[Na[this.id]]}fracDen(){return S0[qa[this.id]]}cramp(){return S0[Ra[this.id]]}text(){return S0[Ea[this.id]]}isTight(){return this.size>=2}},St=0,Ee=1,re=2,q0=3,ce=4,v0=5,ae=6,s0=7,S0=[new k0(St,0,!1),new k0(Ee,0,!0),new k0(re,1,!1),new k0(q0,1,!0),new k0(ce,2,!1),new k0(v0,2,!0),new k0(ae,3,!1),new k0(s0,3,!0)],Da=[ce,v0,ce,v0,ae,s0,ae,s0],Ca=[v0,v0,v0,v0,s0,s0,s0,s0],Na=[re,q0,ce,v0,ae,s0,ae,s0],qa=[q0,q0,v0,v0,s0,s0,s0,s0],Ra=[Ee,Ee,q0,q0,v0,v0,s0,s0],Ea=[St,Ee,re,q0,re,q0,re,q0],E={DISPLAY:S0[St],TEXT:S0[re],SCRIPT:S0[ce],SCRIPTSCRIPT:S0[ae]},mt=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function Ia(r){for(var e=0;e=n[0]&&r<=n[1])return t.name}return null}d(Ia,"scriptFromCodepoint");var Re=[];mt.forEach(r=>r.blocks.forEach(e=>Re.push(...e)));function kr(r){for(var e=0;e=Re[e]&&r<=Re[e+1])return!0;return!1}d(kr,"supportedCodepoint");var te=80,Oa=d(function(e,t){return"M95,"+(622+e+t)+` +import{a as d}from"./chunk-AQ6EADP3.mjs";var h0=class r{static{d(this,"SourceLocation")}constructor(e,t,a){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=a}static range(e,t){return t?!e||!e.loc||!t.loc||e.loc.lexer!==t.loc.lexer?null:new r(e.loc.lexer,e.loc.start,t.loc.end):e&&e.loc}},d0=class r{static{d(this,"Token")}constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(e,t){return new r(t,h0.range(this,e))}},z=class r{static{d(this,"ParseError")}constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var a="KaTeX parse error: "+e,n,s,u=t&&t.loc;if(u&&u.start<=u.end){var h=u.lexer.input;n=u.start,s=u.end,n===h.length?a+=" at end of input: ":a+=" at position "+(n+1)+": ";var c=h.slice(n,s).replace(/[^]/g,"$&\u0332"),v;n>15?v="\u2026"+h.slice(n-15,n):v=h.slice(0,n);var b;s+15":">","<":"<",'"':""","'":"'"},Sa=/[&><"']/g;function Ma(r){return String(r).replace(Sa,e=>ka[e])}d(Ma,"escape");var wr=d(function r(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?r(e.body[0]):e:e.type==="font"?r(e.body):e},"getBaseElem"),za=d(function(e){var t=wr(e);return t.type==="mathord"||t.type==="textord"||t.type==="atom"},"isCharacterBox"),Aa=d(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),Ta=d(function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},"protocolFromUrl"),V={deflt:ya,escape:Ma,hyphenate:wa,getBaseElem:wr,isCharacterBox:za,protocolFromUrl:Ta},qe={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:d(r=>"#"+r,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:d((r,e)=>(e.push(r),e),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:d(r=>Math.max(0,r),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:d(r=>Math.max(0,r),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:d(r=>Math.max(0,r),"processor"),cli:"-e, --max-expand ",cliProcessor:d(r=>r==="Infinity"?1/0:parseInt(r),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};function Ba(r){if(r.default)return r.default;var e=r.type,t=Array.isArray(e)?e[0]:e;if(typeof t!="string")return t.enum[0];switch(t){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}d(Ba,"getDefaultValue");var me=class{static{d(this,"Settings")}constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var t in qe)if(qe.hasOwnProperty(t)){var a=qe[t];this[t]=e[t]!==void 0?a.processor?a.processor(e[t]):e[t]:Ba(a)}}reportNonstrict(e,t,a){var n=this.strict;if(typeof n=="function"&&(n=n(e,t,a)),!(!n||n==="ignore")){if(n===!0||n==="error")throw new z("LaTeX-incompatible input and strict mode is set to 'error': "+(t+" ["+e+"]"),a);n==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]"))}}useStrictBehavior(e,t,a){var n=this.strict;if(typeof n=="function")try{n=n(e,t,a)}catch{n="error"}return!n||n==="ignore"?!1:n===!0||n==="error"?!0:n==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var t=V.protocolFromUrl(e.url);if(t==null)return!1;e.protocol=t}var a=typeof this.trust=="function"?this.trust(e):this.trust;return!!a}},k0=class{static{d(this,"Style")}constructor(e,t,a){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=a}sup(){return S0[Da[this.id]]}sub(){return S0[Ca[this.id]]}fracNum(){return S0[Na[this.id]]}fracDen(){return S0[qa[this.id]]}cramp(){return S0[Ra[this.id]]}text(){return S0[Ea[this.id]]}isTight(){return this.size>=2}},St=0,Ee=1,re=2,q0=3,ce=4,v0=5,ae=6,s0=7,S0=[new k0(St,0,!1),new k0(Ee,0,!0),new k0(re,1,!1),new k0(q0,1,!0),new k0(ce,2,!1),new k0(v0,2,!0),new k0(ae,3,!1),new k0(s0,3,!0)],Da=[ce,v0,ce,v0,ae,s0,ae,s0],Ca=[v0,v0,v0,v0,s0,s0,s0,s0],Na=[re,q0,ce,v0,ae,s0,ae,s0],qa=[q0,q0,v0,v0,s0,s0,s0,s0],Ra=[Ee,Ee,q0,q0,v0,v0,s0,s0],Ea=[St,Ee,re,q0,re,q0,re,q0],E={DISPLAY:S0[St],TEXT:S0[re],SCRIPT:S0[ce],SCRIPTSCRIPT:S0[ae]},mt=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function Ia(r){for(var e=0;e=n[0]&&r<=n[1])return t.name}return null}d(Ia,"scriptFromCodepoint");var Re=[];mt.forEach(r=>r.blocks.forEach(e=>Re.push(...e)));function kr(r){for(var e=0;e=Re[e]&&r<=Re[e+1])return!0;return!1}d(kr,"supportedCodepoint");var te=80,Oa=d(function(e,t){return"M95,"+(622+e+t)+` c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 diff --git a/assets/mermaid/chunks/mermaid.esm.min/katex-GD7MH7QM.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/katex-K3KEBU37.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/katex-GD7MH7QM.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/katex-K3KEBU37.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-2TDM6QVE.mjs b/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-2TDM6QVE.mjs new file mode 100644 index 0000000..3e2597f --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-2TDM6QVE.mjs @@ -0,0 +1,96 @@ +import{a as de}from"./chunk-6764PJDD.mjs";import{a as ge}from"./chunk-ZXARS5L4.mjs";import{b as he,c as pe}from"./chunk-VU6ZFW4Y.mjs";import"./chunk-7J6CGLKN.mjs";import"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-5VCL7Z4A.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{A as F,_ as M,d as se,e as ae,f as oe,j as O,t as ce,w as le}from"./chunk-67TQ5CYL.mjs";import{b as L}from"./chunk-7W6UQGC5.mjs";import{a as c}from"./chunk-AQ6EADP3.mjs";var q=(function(){var t=c(function(_,s,n,o){for(n=n||{},o=_.length;o--;n[_[o]]=s);return n},"o"),e=[1,4],a=[1,13],d=[1,12],i=[1,15],h=[1,16],m=[1,20],y=[1,19],b=[6,7,8],x=[1,26],w=[1,24],I=[1,25],p=[6,7,11],R=[1,6,13,15,16,19,22],Q=[1,33],ee=[1,34],A=[1,6,7,11,13,15,16,19,22],G={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:c(function(s,n,o,l,u,r,B){var g=r.length-1;switch(u){case 6:case 7:return l;case 8:l.getLogger().trace("Stop NL ");break;case 9:l.getLogger().trace("Stop EOF ");break;case 11:l.getLogger().trace("Stop NL2 ");break;case 12:l.getLogger().trace("Stop EOF2 ");break;case 15:l.getLogger().info("Node: ",r[g].id),l.addNode(r[g-1].length,r[g].id,r[g].descr,r[g].type);break;case 16:l.getLogger().trace("Icon: ",r[g]),l.decorateNode({icon:r[g]});break;case 17:case 21:l.decorateNode({class:r[g]});break;case 18:l.getLogger().trace("SPACELIST");break;case 19:l.getLogger().trace("Node: ",r[g].id),l.addNode(0,r[g].id,r[g].descr,r[g].type);break;case 20:l.decorateNode({icon:r[g]});break;case 25:l.getLogger().trace("node found ..",r[g-2]),this.$={id:r[g-1],descr:r[g-1],type:l.getType(r[g-2],r[g])};break;case 26:this.$={id:r[g],descr:r[g],type:l.nodeType.DEFAULT};break;case 27:l.getLogger().trace("node found ..",r[g-3]),this.$={id:r[g-3],descr:r[g-1],type:l.getType(r[g-2],r[g])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:a,7:[1,10],9:9,12:11,13:d,14:14,15:i,16:h,17:17,18:18,19:m,22:y},t(b,[2,3]),{1:[2,2]},t(b,[2,4]),t(b,[2,5]),{1:[2,6],6:a,12:21,13:d,14:14,15:i,16:h,17:17,18:18,19:m,22:y},{6:a,9:22,12:11,13:d,14:14,15:i,16:h,17:17,18:18,19:m,22:y},{6:x,7:w,10:23,11:I},t(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:m,22:y}),t(p,[2,18]),t(p,[2,19]),t(p,[2,20]),t(p,[2,21]),t(p,[2,23]),t(p,[2,24]),t(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:x,7:w,10:32,11:I},{1:[2,7],6:a,12:21,13:d,14:14,15:i,16:h,17:17,18:18,19:m,22:y},t(R,[2,14],{7:Q,11:ee}),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(p,[2,15]),t(p,[2,16]),t(p,[2,17]),{20:[1,35]},{21:[1,36]},t(R,[2,13],{7:Q,11:ee}),t(A,[2,11]),t(A,[2,12]),{21:[1,37]},t(p,[2,25]),t(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:c(function(s,n){if(n.recoverable)this.trace(s);else{var o=new Error(s);throw o.hash=n,o}},"parseError"),parse:c(function(s){var n=this,o=[0],l=[],u=[null],r=[],B=this.table,g="",P=0,te=0,ie=0,Ee=2,ne=1,xe=r.slice.call(arguments,1),f=Object.create(this.lexer),v={yy:{}};for(var X in this.yy)Object.prototype.hasOwnProperty.call(this.yy,X)&&(v.yy[X]=this.yy[X]);f.setInput(s,v.yy),v.yy.lexer=f,v.yy.parser=this,typeof f.yylloc>"u"&&(f.yylloc={});var z=f.yylloc;r.push(z);var Se=f.options&&f.options.ranges;typeof v.yy.parseError=="function"?this.parseError=v.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ce(S){o.length=o.length-2*S,u.length=u.length-S,r.length=r.length-S}c(Ce,"popStack");function $e(){var S;return S=l.pop()||f.lex()||ne,typeof S!="number"&&(S instanceof Array&&(l=S,S=l.pop()),S=n.symbols_[S]||S),S}c($e,"lex");for(var E,W,T,$,Oe,Y,C={},U,D,re,j;;){if(T=o[o.length-1],this.defaultActions[T]?$=this.defaultActions[T]:((E===null||typeof E>"u")&&(E=$e()),$=B[T]&&B[T][E]),typeof $>"u"||!$.length||!$[0]){var Z="";j=[];for(U in B[T])this.terminals_[U]&&U>Ee&&j.push("'"+this.terminals_[U]+"'");f.showPosition?Z="Parse error on line "+(P+1)+`: +`+f.showPosition()+` +Expecting `+j.join(", ")+", got '"+(this.terminals_[E]||E)+"'":Z="Parse error on line "+(P+1)+": Unexpected "+(E==ne?"end of input":"'"+(this.terminals_[E]||E)+"'"),this.parseError(Z,{text:f.match,token:this.terminals_[E]||E,line:f.yylineno,loc:z,expected:j})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+E);switch($[0]){case 1:o.push(E),u.push(f.yytext),r.push(f.yylloc),o.push($[1]),E=null,W?(E=W,W=null):(te=f.yyleng,g=f.yytext,P=f.yylineno,z=f.yylloc,ie>0&&ie--);break;case 2:if(D=this.productions_[$[1]][1],C.$=u[u.length-D],C._$={first_line:r[r.length-(D||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(D||1)].first_column,last_column:r[r.length-1].last_column},Se&&(C._$.range=[r[r.length-(D||1)].range[0],r[r.length-1].range[1]]),Y=this.performAction.apply(C,[g,te,P,v.yy,$[1],u,r].concat(xe)),typeof Y<"u")return Y;D&&(o=o.slice(0,-1*D*2),u=u.slice(0,-1*D),r=r.slice(0,-1*D)),o.push(this.productions_[$[1]][0]),u.push(C.$),r.push(C._$),re=B[o[o.length-2]][o[o.length-1]],o.push(re);break;case 3:return!0}}return!0},"parse")},ke=(function(){var _={EOF:1,parseError:c(function(n,o){if(this.yy.parser)this.yy.parser.parseError(n,o);else throw new Error(n)},"parseError"),setInput:c(function(s,n){return this.yy=n||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:c(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var n=s.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:c(function(s){var n=s.length,o=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),o.length-1&&(this.yylineno-=o.length-1);var u=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:o?(o.length===l.length?this.yylloc.first_column:0)+l[l.length-o.length].length-o[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:c(function(){return this._more=!0,this},"more"),reject:c(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:c(function(s){this.unput(this.match.slice(s))},"less"),pastInput:c(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:c(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:c(function(){var s=this.pastInput(),n=new Array(s.length+1).join("-");return s+this.upcomingInput()+` +`+n+"^"},"showPosition"),test_match:c(function(s,n){var o,l,u;if(this.options.backtrack_lexer&&(u={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(u.yylloc.range=this.yylloc.range.slice(0))),l=s[0].match(/(?:\r\n?|\n).*/g),l&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(s[0].length),this.matched+=s[0],o=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o)return o;if(this._backtrack){for(var r in u)this[r]=u[r];return!1}return!1},"test_match"),next:c(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,n,o,l;this._more||(this.yytext="",this.match="");for(var u=this._currentRules(),r=0;rn[0].length)){if(n=o,l=r,this.options.backtrack_lexer){if(s=this.test_match(o,u[r]),s!==!1)return s;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(s=this.test_match(n,u[l]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:c(function(){var n=this.next();return n||this.lex()},"lex"),begin:c(function(n){this.conditionStack.push(n)},"begin"),popState:c(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:c(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:c(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:c(function(n){this.begin(n)},"pushState"),stateStackSize:c(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:c(function(n,o,l,u){var r=u;switch(l){case 0:return n.getLogger().trace("Found comment",o.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:n.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return n.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:n.getLogger().trace("end icon"),this.popState();break;case 10:return n.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return n.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return n.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return n.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:n.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return n.getLogger().trace("description:",o.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),n.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),n.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),n.getLogger().trace("node end ...",o.yytext),"NODE_DEND";break;case 30:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return n.getLogger().trace("Long description:",o.yytext),20;break;case 36:return n.getLogger().trace("Long description:",o.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return _})();G.lexer=ke;function H(){this.yy={}}return c(H,"Parser"),H.prototype=G,G.Parser=H,new H})();q.parser=q;var ue=q;var k=[];for(let t=0;t<256;++t)k.push((t+256).toString(16).slice(1));function me(t,e=0){return(k[t[e+0]]+k[t[e+1]]+k[t[e+2]]+k[t[e+3]]+"-"+k[t[e+4]]+k[t[e+5]]+"-"+k[t[e+6]]+k[t[e+7]]+"-"+k[t[e+8]]+k[t[e+9]]+"-"+k[t[e+10]]+k[t[e+11]]+k[t[e+12]]+k[t[e+13]]+k[t[e+14]]+k[t[e+15]]).toLowerCase()}c(me,"unsafeStringify");var De=new Uint8Array(16);function J(){return crypto.getRandomValues(De)}c(J,"rng");function Ne(t,e,a){return!e&&!t&&crypto.randomUUID?crypto.randomUUID():_e(t,e,a)}c(Ne,"v4");function _e(t,e,a){t=t||{};let d=t.random??t.rng?.()??J();if(d.length<16)throw new Error("Random bytes length must be >= 16");if(d[6]=d[6]&15|64,d[8]=d[8]&63|128,e){if(a=a||0,a<0||a+16>e.length)throw new RangeError(`UUID byte range ${a}:${a+15} is out of buffer bounds`);for(let i=0;i<16;++i)e[a+i]=d[i];return e}return me(d)}c(_e,"_v4");var K=Ne;var fe=12;var N={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},V=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=N,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{c(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(e){for(let a=this.nodes.length-1;a>=0;a--)if(this.nodes[a].level0?this.nodes[0]:null}addNode(e,a,d,i){L.info("addNode",e,a,d,i);let h=!1;this.nodes.length===0?(this.baseLevel=e,e=0,h=!0):this.baseLevel!==void 0&&(e=e-this.baseLevel,h=!1);let m=M(),y=m.mindmap?.padding??O.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:y*=2;break}let b={id:this.count++,nodeId:F(a,m),level:e,descr:F(d,m),type:i,children:[],width:m.mindmap?.maxNodeWidth??O.mindmap.maxNodeWidth,padding:y,isRoot:h},x=this.getParent(e);if(x)x.children.push(b),this.nodes.push(b);else if(h)this.nodes.push(b);else throw new Error(`There can be only one root. No parent could be found for ("${b.descr}")`)}getType(e,a){switch(L.debug("In get type",e,a),e){case"[":return this.nodeType.RECT;case"(":return a===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(e,a){this.elements[e]=a}getElementById(e){return this.elements[e]}decorateNode(e){if(!e)return;let a=M(),d=this.nodes[this.nodes.length-1];e.icon&&(d.icon=F(e.icon,a)),e.class&&(d.class=F(e.class,a))}type2Str(e){switch(e){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(e,a){if(e.level===0?e.section=void 0:e.section=a,e.children)for(let[d,i]of e.children.entries()){let h=e.level===0?d%(fe-1):a;this.assignSections(i,h)}}flattenNodes(e,a){let d=M(),i=["mindmap-node"];e.isRoot===!0?i.push("section-root","section--1"):e.section!==void 0&&i.push(`section-${e.section}`),e.class&&i.push(e.class);let h=i.join(" "),m=c(b=>{let w=(d.theme?.toLowerCase()??"").includes("redux");switch(b){case N.CIRCLE:return"mindmapCircle";case N.RECT:return"rect";case N.ROUNDED_RECT:return"rounded";case N.CLOUD:return"cloud";case N.BANG:return"bang";case N.HEXAGON:return"hexagon";case N.DEFAULT:return w?"rounded":"defaultMindmapNode";case N.NO_BORDER:default:return"rect"}},"getShapeFromType"),y={id:e.id.toString(),domId:"node_"+e.id.toString(),label:e.descr,labelType:"markdown",isGroup:!1,shape:m(e.type),width:e.width,height:e.height??0,padding:e.padding,cssClasses:h,cssStyles:[],look:d.look,icon:e.icon,x:e.x,y:e.y,level:e.level,nodeId:e.nodeId,type:e.type,section:e.section};if(a.push(y),e.children)for(let b of e.children)this.flattenNodes(b,a)}generateEdges(e,a){if(!e.children)return;let d=M();for(let i of e.children){let h="edge";i.section!==void 0&&(h+=` section-edge-${i.section}`);let m=e.level+1;h+=` edge-depth-${m}`;let y={id:`edge_${e.id}_${i.id}`,start:e.id.toString(),end:i.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:d.look,classes:h,depth:e.level,section:i.section};a.push(y),this.generateEdges(i,a)}}getData(){let e=this.getMindmap(),a=M(),i=le().layout!==void 0,h=a;if(i||(h.layout="cose-bilkent"),!e)return{nodes:[],edges:[],config:h};L.debug("getData: mindmapRoot",e,a),this.assignSections(e);let m=[],y=[];this.flattenNodes(e,m),this.generateEdges(e,y),L.debug(`getData: processed ${m.length} nodes and ${y.length} edges`);let b=new Map;for(let x of m)b.set(x.id,{shape:x.shape,width:x.width,height:x.height,padding:x.padding});return{nodes:m,edges:y,config:h,rootNode:e,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(b),type:"mindmap",diagramId:"mindmap-"+K()}}getLogger(){return L}};var Le=c(async(t,e,a,d)=>{L.debug(`Rendering mindmap diagram +`+t);let i=d.db,h=i.getData(),m=de(e,h.config.securityLevel);if(h.type=d.type,h.layoutAlgorithm=pe(h.config.layout,{fallback:"cose-bilkent"}),h.diagramId=e,!i.getMindmap())return;h.nodes.forEach(p=>{p.shape==="rounded"?(p.radius=15,p.taper=15,p.stroke="none",p.width=0,p.padding=15):p.shape==="circle"?p.padding=10:p.shape==="rect"?(p.width=0,p.padding=10):p.shape==="hexagon"&&(p.width=0,p.height=0)}),await he(h,m);let{themeVariables:b}=ce(),{useGradient:x,gradientStart:w,gradientStop:I}=b;if(x&&w&&I){let p=m.attr("id"),R=m.append("defs").append("linearGradient").attr("id",`${p}-gradient`).attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");R.append("stop").attr("offset","0%").attr("stop-color",w).attr("stop-opacity",1),R.append("stop").attr("offset","100%").attr("stop-color",I).attr("stop-opacity",1)}ge(m,h.config.mindmap?.padding??O.mindmap.padding,"mindmapDiagram",h.config.mindmap?.useMaxWidth??O.mindmap.useMaxWidth)},"draw"),ye={draw:Le};var we=c(t=>{let{theme:e,look:a}=t,d="";for(let i=0;i{let d="";for(let i=0;i{let{theme:e}=t,a=t.svgId,d=t.dropShadow?t.dropShadow.replace("url(#drop-shadow)",`url(${a}-drop-shadow)`):"none";return` + .edge { + stroke-width: 3; + } + ${we(t)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .section-root span { + color: ${e?.includes("redux")?t.nodeBorder:t.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } + [data-look="neo"].mindmap-node { + filter: ${d}; + } + [data-look="neo"].mindmap-node.section-root rect, [data-look="neo"].mindmap-node.section-root path, [data-look="neo"].mindmap-node.section-root circle, [data-look="neo"].mindmap-node.section-root polygon { + fill: ${e?.includes("redux")?t.mainBkg:t.git0}; + } + [data-look="neo"].mindmap-node.section-root .text-inner-tspan { + fill: ${e?.includes("redux")?t.nodeBorder:t["cScaleLabel"+(e==="neutral"?1:0)]}; + } + ${t.useGradient&&a&&t.mainBkg?ve(t.THEME_COLOR_LIMIT,a,t.mainBkg):""} +`},"getStyles"),be=Te;var xt={get db(){return new V},renderer:ye,parser:ue,styles:be};export{xt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-QTQOGDLH.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-2TDM6QVE.mjs.map similarity index 53% rename from assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-QTQOGDLH.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-2TDM6QVE.mjs.map index 24b585c..3612a4d 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-QTQOGDLH.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-2TDM6QVE.mjs.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../../src/diagrams/mindmap/parser/mindmap.jison", "../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js", "../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js", "../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js", "../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js", "../../../src/diagrams/mindmap/svgDraw.ts", "../../../src/diagrams/mindmap/mindmapDb.ts", "../../../src/diagrams/mindmap/mindmapRenderer.ts", "../../../src/diagrams/mindmap/styles.ts", "../../../src/diagrams/mindmap/mindmap-definition.ts"], - "sourcesContent": ["/* 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,13],$V2=[1,12],$V3=[1,15],$V4=[1,16],$V5=[1,20],$V6=[1,19],$V7=[6,7,8],$V8=[1,26],$V9=[1,24],$Va=[1,25],$Vb=[6,7,11],$Vc=[1,6,13,15,16,19,22],$Vd=[1,33],$Ve=[1,34],$Vf=[1,6,7,11,13,15,16,19,22];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mindMap\":4,\"spaceLines\":5,\"SPACELINE\":6,\"NL\":7,\"MINDMAP\":8,\"document\":9,\"stop\":10,\"EOF\":11,\"statement\":12,\"SPACELIST\":13,\"node\":14,\"ICON\":15,\"CLASS\":16,\"nodeWithId\":17,\"nodeWithoutId\":18,\"NODE_DSTART\":19,\"NODE_DESCR\":20,\"NODE_DEND\":21,\"NODE_ID\":22,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"SPACELINE\",7:\"NL\",8:\"MINDMAP\",11:\"EOF\",13:\"SPACELIST\",15:\"ICON\",16:\"CLASS\",19:\"NODE_DSTART\",20:\"NODE_DESCR\",21:\"NODE_DEND\",22:\"NODE_ID\"},\nproductions_: [0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6: case 7:\n return yy; \nbreak;\ncase 8:\nyy.getLogger().trace('Stop NL ');\nbreak;\ncase 9:\nyy.getLogger().trace('Stop EOF ');\nbreak;\ncase 11:\nyy.getLogger().trace('Stop NL2 ');\nbreak;\ncase 12:\nyy.getLogger().trace('Stop EOF2 ');\nbreak;\ncase 15:\n yy.getLogger().info('Node: ',$$[$0].id);yy.addNode($$[$0-1].length, $$[$0].id, $$[$0].descr, $$[$0].type); \nbreak;\ncase 16:\n yy.getLogger().trace('Icon: ',$$[$0]);yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 17: case 21:\n yy.decorateNode({class: $$[$0]}); \nbreak;\ncase 18:\n yy.getLogger().trace('SPACELIST');\nbreak;\ncase 19:\n yy.getLogger().trace('Node: ',$$[$0].id);yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type); \nbreak;\ncase 20:\n yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 25:\n yy.getLogger().trace(\"node found ..\", $$[$0-2]); this.$ = { id: $$[$0-1], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\ncase 26:\n this.$ = { id: $$[$0], descr: $$[$0], type: yy.nodeType.DEFAULT }; \nbreak;\ncase 27:\n yy.getLogger().trace(\"node found ..\", $$[$0-3]); this.$ = { id: $$[$0-3], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],8:$V0},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:$V0},{6:$V1,7:[1,10],9:9,12:11,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},o($V7,[2,3]),{1:[2,2]},o($V7,[2,4]),o($V7,[2,5]),{1:[2,6],6:$V1,12:21,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},{6:$V1,9:22,12:11,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},{6:$V8,7:$V9,10:23,11:$Va},o($Vb,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:$V5,22:$V6}),o($Vb,[2,18]),o($Vb,[2,19]),o($Vb,[2,20]),o($Vb,[2,21]),o($Vb,[2,23]),o($Vb,[2,24]),o($Vb,[2,26],{19:[1,30]}),{20:[1,31]},{6:$V8,7:$V9,10:32,11:$Va},{1:[2,7],6:$V1,12:21,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},o($Vc,[2,14],{7:$Vd,11:$Ve}),o($Vf,[2,8]),o($Vf,[2,9]),o($Vf,[2,10]),o($Vb,[2,15]),o($Vb,[2,16]),o($Vb,[2,17]),{20:[1,35]},{21:[1,36]},o($Vc,[2,13],{7:$Vd,11:$Ve}),o($Vf,[2,11]),o($Vf,[2,12]),{21:[1,37]},o($Vb,[2,25]),o($Vb,[2,27])],\ndefaultActions: {2:[2,1],6:[2,2]},\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\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) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:yy.getLogger().trace('Found comment',yy_.yytext); return 6;\nbreak;\ncase 1:return 8;\nbreak;\ncase 2: this.begin('CLASS'); \nbreak;\ncase 3: this.popState();return 16; \nbreak;\ncase 4: this.popState();\nbreak;\ncase 5: yy.getLogger().trace('Begin icon');this.begin('ICON'); \nbreak;\ncase 6:yy.getLogger().trace('SPACELINE');return 6 /* skip all whitespace */ ;\nbreak;\ncase 7:return 7;\nbreak;\ncase 8: return 15; \nbreak;\ncase 9:yy.getLogger().trace('end icon');this.popState();\nbreak;\ncase 10: yy.getLogger().trace('Exploding node'); this.begin('NODE');return 19; \nbreak;\ncase 11: yy.getLogger().trace('Cloud'); this.begin('NODE');return 19; \nbreak;\ncase 12: yy.getLogger().trace('Explosion Bang'); this.begin('NODE');return 19; \nbreak;\ncase 13: yy.getLogger().trace('Cloud Bang'); this.begin('NODE');return 19; \nbreak;\ncase 14: this.begin('NODE');return 19; \nbreak;\ncase 15: this.begin('NODE');return 19; \nbreak;\ncase 16: this.begin('NODE');return 19; \nbreak;\ncase 17: this.begin('NODE');return 19; \nbreak;\ncase 18:return 13 /* skip all whitespace */ ;\nbreak;\ncase 19:return 22;\nbreak;\ncase 20:return 11;\nbreak;\ncase 21: this.begin(\"NSTR2\");\nbreak;\ncase 22: return \"NODE_DESCR\";\nbreak;\ncase 23: this.popState();\nbreak;\ncase 24: yy.getLogger().trace('Starting NSTR');this.begin(\"NSTR\");\nbreak;\ncase 25: yy.getLogger().trace('description:', yy_.yytext); return \"NODE_DESCR\";\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:this.popState();yy.getLogger().trace('node end ))');return \"NODE_DEND\";\nbreak;\ncase 28:this.popState();yy.getLogger().trace('node end )');return \"NODE_DEND\";\nbreak;\ncase 29:this.popState();yy.getLogger().trace('node end ...',yy_.yytext);return \"NODE_DEND\";\nbreak;\ncase 30:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 31:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 32:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 33:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 34:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 35: yy.getLogger().trace('Long description:', yy_.yytext); return 20;\nbreak;\ncase 36: yy.getLogger().trace('Long description:', yy_.yytext); return 20;\nbreak;\n}\n},\nrules: [/^(?:\\s*%%.*)/i,/^(?:mindmap\\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\\n)/i,/^(?:::icon\\()/i,/^(?:[\\s]+[\\n])/i,/^(?:[\\n]+)/i,/^(?:[^\\)]+)/i,/^(?:\\))/i,/^(?:-\\))/i,/^(?:\\(-)/i,/^(?:\\)\\))/i,/^(?:\\))/i,/^(?:\\(\\()/i,/^(?:\\{\\{)/i,/^(?:\\()/i,/^(?:\\[)/i,/^(?:[\\s]+)/i,/^(?:[^\\(\\[\\n\\)\\{\\}]+)/i,/^(?:$)/i,/^(?:[\"][`])/i,/^(?:[^`\"]+)/i,/^(?:[`][\"])/i,/^(?:[\"])/i,/^(?:[^\"]+)/i,/^(?:[\"])/i,/^(?:[\\)]\\))/i,/^(?:[\\)])/i,/^(?:[\\]])/i,/^(?:\\}\\})/i,/^(?:\\(-)/i,/^(?:-\\))/i,/^(?:\\(\\()/i,/^(?:\\()/i,/^(?:[^\\)\\]\\(\\}]+)/i,/^(?:.+(?!\\(\\())/i],\nconditions: {\"CLASS\":{\"rules\":[3,4],\"inclusive\":false},\"ICON\":{\"rules\":[8,9],\"inclusive\":false},\"NSTR2\":{\"rules\":[22,23],\"inclusive\":false},\"NSTR\":{\"rules\":[25,26],\"inclusive\":false},\"NODE\":{\"rules\":[21,24,27,28,29,30,31,32,33,34,35,36],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n", "import { createText } from '../../rendering-util/createText.js';\nimport type { FilledMindMapNode } from './mindmapTypes.js';\nimport type { Point, D3Element } from '../../types.js';\nimport { parseFontSize } from '../../utils.js';\nimport type { MermaidConfig } from '../../config.type.js';\nimport type { MindmapDB } from './mindmapDb.js';\n\nexport const MAX_SECTIONS = 12;\n\ntype ShapeFunction = (\n db: MindmapDB,\n elem: D3Element,\n node: FilledMindMapNode,\n section?: number\n) => void;\n\nconst defaultBkg: ShapeFunction = function (db, elem, node, section) {\n const rd = 5;\n elem\n .append('path')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr(\n 'd',\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${\n node.width - 2 * rd\n } q5,0 5,5 v${node.height - rd} H0 Z`\n );\n\n elem\n .append('line')\n .attr('class', 'node-line-' + section)\n .attr('x1', 0)\n .attr('y1', node.height)\n .attr('x2', node.width)\n .attr('y2', node.height);\n};\n\nconst rectBkg: ShapeFunction = function (db, elem, node) {\n elem\n .append('rect')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr('height', node.height)\n .attr('width', node.width);\n};\n\nconst cloudBkg: ShapeFunction = function (db, elem, node) {\n const w = node.width;\n const h = node.height;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n elem\n .append('path')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr(\n 'd',\n `M0 0 a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${1 * w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${1 * h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},${0}\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n\n H0 V0 Z`\n );\n};\n\nconst bangBkg: ShapeFunction = function (db, elem, node) {\n const w = node.width;\n const h = node.height;\n const r = 0.15 * w;\n elem\n .append('path')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr(\n 'd',\n `M0 0 a${r},${r} 1 0,0 ${w * 0.25},${-1 * h * 0.1}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${1 * h * 0.1}\n\n a${r},${r} 1 0,0 ${w * 0.15},${1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${1 * h * 0.34}\n a${r},${r} 1 0,0 ${-1 * w * 0.15},${1 * h * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${h * 0.15}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${-1 * h * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.1},${-1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${-1 * h * 0.34}\n a${r},${r} 1 0,0 ${w * 0.1},${-1 * h * 0.33}\n\n H0 V0 Z`\n );\n};\n\nconst circleBkg: ShapeFunction = function (db, elem, node) {\n elem\n .append('circle')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr('r', node.width / 2);\n};\n\nfunction insertPolygonShape(\n parent: D3Element,\n w: number,\n h: number,\n points: Point[],\n node: FilledMindMapNode\n) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('transform', 'translate(' + (node.width - w) / 2 + ', ' + h + ')');\n}\n\nconst hexagonBkg: ShapeFunction = function (\n _db: MindmapDB,\n elem: D3Element,\n node: FilledMindMapNode\n) {\n const h = node.height;\n const f = 4;\n const m = h / f;\n const w = node.width - node.padding + 2 * m;\n const points: Point[] = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n insertPolygonShape(elem, w, h, points, node);\n};\n\nconst roundedRectBkg: ShapeFunction = function (db, elem, node) {\n elem\n .append('rect')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr('height', node.height)\n .attr('rx', node.padding)\n .attr('ry', node.padding)\n .attr('width', node.width);\n};\n\n/**\n * @param db - The database\n * @param elem - The D3 dom element in which the node is to be added\n * @param node - The node to be added\n * @param fullSection - ?\n * @param conf - The configuration object\n * @returns The height nodes dom element\n */\nexport const drawNode = async function (\n db: MindmapDB,\n elem: D3Element,\n node: FilledMindMapNode,\n fullSection: number,\n conf: MermaidConfig\n): Promise {\n const htmlLabels = conf.htmlLabels;\n const section = fullSection % (MAX_SECTIONS - 1);\n const nodeElem = elem.append('g');\n node.section = section;\n let sectionClass = 'section-' + section;\n if (section < 0) {\n sectionClass += ' section-root';\n }\n nodeElem.attr('class', (node.class ? node.class + ' ' : '') + 'mindmap-node ' + sectionClass);\n const bkgElem = nodeElem.append('g');\n\n // Create the wrapped text element\n const textElem = nodeElem.append('g');\n const description = node.descr.replace(/()/g, '\\n');\n await createText(\n textElem,\n description,\n {\n useHtmlLabels: htmlLabels,\n width: node.width,\n classes: 'mindmap-node-label',\n },\n conf\n );\n\n if (!htmlLabels) {\n textElem\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle');\n }\n const bbox = textElem.node().getBBox();\n const [fontSize] = parseFontSize(conf.fontSize);\n node.height = bbox.height + fontSize! * 1.1 * 0.5 + node.padding;\n node.width = bbox.width + 2 * node.padding;\n if (node.icon) {\n if (node.type === db.nodeType.CIRCLE) {\n node.height += 50;\n node.width += 50;\n const icon = nodeElem\n .append('foreignObject')\n .attr('height', '50px')\n .attr('width', node.width)\n .attr('style', 'text-align: center;');\n icon\n .append('div')\n .attr('class', 'icon-container')\n .append('i')\n .attr('class', 'node-icon-' + section + ' ' + node.icon);\n textElem.attr(\n 'transform',\n 'translate(' + node.width / 2 + ', ' + (node.height / 2 - 1.5 * node.padding) + ')'\n );\n } else {\n node.width += 50;\n const orgHeight = node.height;\n node.height = Math.max(orgHeight, 60);\n const heightDiff = Math.abs(node.height - orgHeight);\n const icon = nodeElem\n .append('foreignObject')\n .attr('width', '60px')\n .attr('height', node.height)\n .attr('style', 'text-align: center;margin-top:' + heightDiff / 2 + 'px;');\n\n icon\n .append('div')\n .attr('class', 'icon-container')\n .append('i')\n .attr('class', 'node-icon-' + section + ' ' + node.icon);\n textElem.attr(\n 'transform',\n 'translate(' + (25 + node.width / 2) + ', ' + (heightDiff / 2 + node.padding / 2) + ')'\n );\n }\n } else {\n if (!htmlLabels) {\n const dx = node.width / 2;\n const dy = node.padding / 2;\n textElem.attr('transform', 'translate(' + dx + ', ' + dy + ')');\n // textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + node.padding / 2 + ')');\n } else {\n const dx = (node.width - bbox.width) / 2;\n const dy = (node.height - bbox.height) / 2;\n textElem.attr('transform', 'translate(' + dx + ', ' + dy + ')');\n }\n }\n\n switch (node.type) {\n case db.nodeType.DEFAULT:\n defaultBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.ROUNDED_RECT:\n roundedRectBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.RECT:\n rectBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.CIRCLE:\n bkgElem.attr('transform', 'translate(' + node.width / 2 + ', ' + +node.height / 2 + ')');\n circleBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.CLOUD:\n cloudBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.BANG:\n bangBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.HEXAGON:\n hexagonBkg(db, bkgElem, node, section);\n break;\n }\n\n db.setElementForId(node.id, nodeElem);\n return node.height;\n};\n\nexport const positionNode = function (db: MindmapDB, node: FilledMindMapNode) {\n const nodeElem = db.getElementById(node.id);\n\n const x = node.x || 0;\n const y = node.y || 0;\n // Position the node to its coordinate\n nodeElem.attr('transform', 'translate(' + x + ',' + y + ')');\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { v4 } from 'uuid';\nimport type { D3Element } from '../../types.js';\nimport { sanitizeText } from '../../diagrams/common/common.js';\nimport { log } from '../../logger.js';\nimport type { MindmapNode } from './mindmapTypes.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { LayoutData, Node, Edge } from '../../rendering-util/types.js';\nimport { getUserDefinedConfig } from '../../config.js';\nimport { MAX_SECTIONS } from './svgDraw.js';\n\n// Extend Node type for mindmap-specific properties\nexport type MindmapLayoutNode = Node & {\n level: number;\n nodeId: string;\n type: number;\n section?: number;\n};\n\n// Extend Edge type for mindmap-specific properties\nexport type MindmapLayoutEdge = Edge & {\n depth: number;\n section?: number;\n};\n\nconst nodeType = {\n DEFAULT: 0,\n NO_BORDER: 0,\n ROUNDED_RECT: 1,\n RECT: 2,\n CIRCLE: 3,\n CLOUD: 4,\n BANG: 5,\n HEXAGON: 6,\n} as const;\n\nexport class MindmapDB {\n private nodes: MindmapNode[] = [];\n private count = 0;\n private elements: Record = {};\n private baseLevel?: number;\n public readonly nodeType: typeof nodeType;\n\n constructor() {\n this.getLogger = this.getLogger.bind(this);\n this.nodeType = nodeType;\n this.clear();\n this.getType = this.getType.bind(this);\n this.getElementById = this.getElementById.bind(this);\n this.getParent = this.getParent.bind(this);\n this.getMindmap = this.getMindmap.bind(this);\n this.addNode = this.addNode.bind(this);\n this.decorateNode = this.decorateNode.bind(this);\n }\n public clear() {\n this.nodes = [];\n this.count = 0;\n this.elements = {};\n this.baseLevel = undefined;\n }\n\n public getParent(level: number): MindmapNode | null {\n for (let i = this.nodes.length - 1; i >= 0; i--) {\n if (this.nodes[i].level < level) {\n return this.nodes[i];\n }\n }\n return null;\n }\n\n public getMindmap(): MindmapNode | null {\n return this.nodes.length > 0 ? this.nodes[0] : null;\n }\n\n public addNode(level: number, id: string, descr: string, type: number): void {\n log.info('addNode', level, id, descr, type);\n\n let isRoot = false;\n\n if (this.nodes.length === 0) {\n this.baseLevel = level;\n level = 0;\n isRoot = true;\n } else if (this.baseLevel !== undefined) {\n level = level - this.baseLevel;\n isRoot = false;\n }\n\n const conf = getConfig();\n let padding = conf.mindmap?.padding ?? defaultConfig.mindmap.padding;\n\n switch (type) {\n case this.nodeType.ROUNDED_RECT:\n case this.nodeType.RECT:\n case this.nodeType.HEXAGON:\n padding *= 2;\n break;\n }\n\n const node: MindmapNode = {\n id: this.count++,\n nodeId: sanitizeText(id, conf),\n level,\n descr: sanitizeText(descr, conf),\n type,\n children: [],\n width: conf.mindmap?.maxNodeWidth ?? defaultConfig.mindmap.maxNodeWidth,\n padding,\n isRoot,\n };\n\n const parent = this.getParent(level);\n if (parent) {\n parent.children.push(node);\n this.nodes.push(node);\n } else {\n if (isRoot) {\n this.nodes.push(node);\n } else {\n throw new Error(\n `There can be only one root. No parent could be found for (\"${node.descr}\")`\n );\n }\n }\n }\n\n public getType(startStr: string, endStr: string) {\n log.debug('In get type', startStr, endStr);\n switch (startStr) {\n case '[':\n return this.nodeType.RECT;\n case '(':\n return endStr === ')' ? this.nodeType.ROUNDED_RECT : this.nodeType.CLOUD;\n case '((':\n return this.nodeType.CIRCLE;\n case ')':\n return this.nodeType.CLOUD;\n case '))':\n return this.nodeType.BANG;\n case '{{':\n return this.nodeType.HEXAGON;\n default:\n return this.nodeType.DEFAULT;\n }\n }\n\n public setElementForId(id: number, element: D3Element): void {\n this.elements[id] = element;\n }\n public getElementById(id: number) {\n return this.elements[id];\n }\n\n public decorateNode(decoration?: { class?: string; icon?: string }): void {\n if (!decoration) {\n return;\n }\n\n const config = getConfig();\n const node = this.nodes[this.nodes.length - 1];\n if (decoration.icon) {\n node.icon = sanitizeText(decoration.icon, config);\n }\n if (decoration.class) {\n node.class = sanitizeText(decoration.class, config);\n }\n }\n\n type2Str(type: number): string {\n switch (type) {\n case this.nodeType.DEFAULT:\n return 'no-border';\n case this.nodeType.RECT:\n return 'rect';\n case this.nodeType.ROUNDED_RECT:\n return 'rounded-rect';\n case this.nodeType.CIRCLE:\n return 'circle';\n case this.nodeType.CLOUD:\n return 'cloud';\n case this.nodeType.BANG:\n return 'bang';\n case this.nodeType.HEXAGON:\n return 'hexgon'; // cspell: disable-line\n default:\n return 'no-border';\n }\n }\n\n /**\n * Assign section numbers to nodes based on their position relative to root\n * @param node - The mindmap node to process\n * @param sectionNumber - The section number to assign (undefined for root)\n */\n public assignSections(node: MindmapNode, sectionNumber?: number): void {\n // For root node, section should be undefined (not -1)\n if (node.level === 0) {\n node.section = undefined;\n } else {\n // For non-root nodes, assign the section number\n node.section = sectionNumber;\n }\n // For root node's children, assign section numbers based on their index\n // For other nodes, inherit parent's section number\n if (node.children) {\n for (const [index, child] of node.children.entries()) {\n const childSectionNumber = node.level === 0 ? index % (MAX_SECTIONS - 1) : sectionNumber;\n this.assignSections(child, childSectionNumber);\n }\n }\n }\n\n /**\n * Convert mindmap tree structure to flat array of nodes\n * @param node - The mindmap node to process\n * @param processedNodes - Array to collect processed nodes\n */\n public flattenNodes(node: MindmapNode, processedNodes: MindmapLayoutNode[]): void {\n // Build CSS classes for the node\n const cssClasses = ['mindmap-node'];\n\n if (node.isRoot === true) {\n // Root node gets special classes\n cssClasses.push('section-root', 'section--1');\n } else if (node.section !== undefined) {\n // Child nodes get section class based on their section number\n cssClasses.push(`section-${node.section}`);\n }\n\n // Add any custom classes from the node\n if (node.class) {\n cssClasses.push(node.class);\n }\n\n const classes = cssClasses.join(' ');\n\n // Map mindmap node type to valid shape name\n const getShapeFromType = (type: number) => {\n switch (type) {\n case nodeType.CIRCLE:\n return 'mindmapCircle';\n case nodeType.RECT:\n return 'rect';\n case nodeType.ROUNDED_RECT:\n return 'rounded';\n case nodeType.CLOUD:\n return 'cloud';\n case nodeType.BANG:\n return 'bang';\n case nodeType.HEXAGON:\n return 'hexagon';\n case nodeType.DEFAULT:\n return 'defaultMindmapNode';\n case nodeType.NO_BORDER:\n default:\n return 'rect';\n }\n };\n\n const processedNode: MindmapLayoutNode = {\n id: node.id.toString(),\n domId: 'node_' + node.id.toString(),\n label: node.descr,\n labelType: 'markdown',\n isGroup: false,\n shape: getShapeFromType(node.type),\n width: node.width,\n height: node.height ?? 0,\n padding: node.padding,\n cssClasses: classes,\n cssStyles: [],\n look: 'default',\n icon: node.icon,\n x: node.x,\n y: node.y,\n // Mindmap-specific properties\n level: node.level,\n nodeId: node.nodeId,\n type: node.type,\n section: node.section,\n };\n\n processedNodes.push(processedNode);\n\n // Recursively process children\n if (node.children) {\n for (const child of node.children) {\n this.flattenNodes(child, processedNodes);\n }\n }\n }\n\n /**\n * Generate edges from parent-child relationships in mindmap tree\n * @param node - The mindmap node to process\n * @param edges - Array to collect edges\n */\n public generateEdges(node: MindmapNode, edges: MindmapLayoutEdge[]): void {\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n // Build CSS classes for the edge\n let edgeClasses = 'edge';\n\n // Add section-specific classes based on the child's section\n if (child.section !== undefined) {\n edgeClasses += ` section-edge-${child.section}`;\n }\n\n // Add depth class based on the parent's level + 1 (depth of the edge)\n const edgeDepth = node.level + 1;\n edgeClasses += ` edge-depth-${edgeDepth}`;\n\n const edge: MindmapLayoutEdge = {\n id: `edge_${node.id}_${child.id}`,\n start: node.id.toString(),\n end: child.id.toString(),\n type: 'normal',\n curve: 'basis',\n thickness: 'normal',\n look: 'default',\n classes: edgeClasses,\n // Store mindmap-specific data\n depth: node.level,\n section: child.section,\n };\n\n edges.push(edge);\n\n // Recursively process child edges\n this.generateEdges(child, edges);\n }\n }\n\n /**\n * Get structured data for layout algorithms\n * Following the pattern established by ER diagrams\n * @returns Structured data containing nodes, edges, and config\n */\n public getData(): LayoutData {\n const mindmapRoot = this.getMindmap();\n const config = getConfig();\n\n const userDefinedConfig = getUserDefinedConfig();\n const hasUserDefinedLayout = userDefinedConfig.layout !== undefined;\n\n const finalConfig = config;\n if (!hasUserDefinedLayout) {\n finalConfig.layout = 'cose-bilkent';\n }\n\n if (!mindmapRoot) {\n return {\n nodes: [],\n edges: [],\n config: finalConfig,\n };\n }\n log.debug('getData: mindmapRoot', mindmapRoot, config);\n\n // Assign section numbers to all nodes based on their position relative to root\n this.assignSections(mindmapRoot);\n\n // Convert tree structure to flat arrays\n const processedNodes: MindmapLayoutNode[] = [];\n const processedEdges: MindmapLayoutEdge[] = [];\n\n this.flattenNodes(mindmapRoot, processedNodes);\n this.generateEdges(mindmapRoot, processedEdges);\n\n log.debug(\n `getData: processed ${processedNodes.length} nodes and ${processedEdges.length} edges`\n );\n\n // Create shapes map for ELK compatibility\n const shapes = new Map();\n for (const node of processedNodes) {\n shapes.set(node.id, {\n shape: node.shape,\n width: node.width,\n height: node.height,\n padding: node.padding,\n });\n }\n\n return {\n nodes: processedNodes,\n edges: processedEdges,\n config: finalConfig,\n // Store the root node for mindmap-specific layout algorithms\n rootNode: mindmapRoot,\n // Properties required by dagre layout algorithm\n markers: ['point'], // Mindmaps don't use markers\n direction: 'TB', // Top-to-bottom direction for mindmaps\n nodeSpacing: 50, // Default spacing between nodes\n rankSpacing: 50, // Default spacing between ranks\n // Add shapes for ELK compatibility\n shapes: Object.fromEntries(shapes),\n // Additional properties that layout algorithms might expect\n type: 'mindmap',\n diagramId: 'mindmap-' + v4(),\n };\n }\n\n // Expose logger to grammar\n public getLogger() {\n return log;\n }\n}\n", "import type { DrawDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport type { FilledMindMapNode } from './mindmapTypes.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { MindmapDB } from './mindmapDb.js';\n\n/**\n * Update the layout data with actual node dimensions after drawing\n */\nfunction _updateNodeDimensions(data4Layout: LayoutData, mindmapRoot: FilledMindMapNode) {\n const updateNode = (node: FilledMindMapNode) => {\n // Find the corresponding node in the layout data\n const layoutNode = data4Layout.nodes.find((n) => n.id === node.id.toString());\n if (layoutNode) {\n // Update with the actual dimensions calculated by drawNode\n layoutNode.width = node.width;\n layoutNode.height = node.height;\n log.debug('Updated node dimensions:', node.id, 'width:', node.width, 'height:', node.height);\n }\n\n // Recursively update children\n node.children?.forEach(updateNode);\n };\n\n updateNode(mindmapRoot);\n}\n\nexport const draw: DrawDefinition = async (text, id, _version, diagObj) => {\n log.debug('Rendering mindmap diagram\\n' + text);\n\n // Draw the nodes first to get their dimensions, then update the layout data\n const db = diagObj.db as MindmapDB;\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n const data4Layout = db.getData();\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, data4Layout.config.securityLevel);\n\n data4Layout.type = diagObj.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(data4Layout.config.layout, {\n fallback: 'cose-bilkent',\n });\n\n data4Layout.diagramId = id;\n\n const mm = db.getMindmap();\n if (!mm) {\n return;\n }\n\n data4Layout.nodes.forEach((node) => {\n if (node.shape === 'rounded') {\n node.radius = 15;\n node.taper = 15;\n node.stroke = 'none';\n node.width = 0;\n node.padding = 15;\n } else if (node.shape === 'circle') {\n node.padding = 10;\n } else if (node.shape === 'rect') {\n node.width = 0;\n node.padding = 10;\n }\n });\n\n // Use the unified rendering system\n await render(data4Layout, svg);\n\n // Setup the view box and size of the svg element using config from data4Layout\n setupViewPortForSVG(\n svg,\n data4Layout.config.mindmap?.padding ?? defaultConfig.mindmap.padding,\n 'mindmapDiagram',\n data4Layout.config.mindmap?.useMaxWidth ?? defaultConfig.mindmap.useMaxWidth\n );\n};\n\nexport default {\n draw,\n};\n", "// @ts-expect-error Incorrect khroma types\nimport { darken, lighten, isDark } from 'khroma';\nimport type { DiagramStylesProvider } from '../../diagram-api/types.js';\n\nconst genSections: DiagramStylesProvider = (options) => {\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options['lineColor' + i] = options['lineColor' + i] || options['cScaleInv' + i];\n if (isDark(options['lineColor' + i])) {\n options['lineColor' + i] = lighten(options['lineColor' + i], 20);\n } else {\n options['lineColor' + i] = darken(options['lineColor' + i], 20);\n }\n }\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = '' + (17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${\n i - 1\n } polygon, .section-${i - 1} path {\n fill: ${options['cScale' + i]};\n }\n .section-${i - 1} text {\n fill: ${options['cScaleLabel' + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options['cScaleLabel' + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options['cScale' + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options['cScaleInv' + i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections;\n};\n\n// TODO: These options seem incorrect.\nconst getStyles: DiagramStylesProvider = (options) =>\n `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .section-root span {\n color: ${options.gitBranchLabel0};\n }\n .section-2 span {\n color: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`;\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/mindmap.jison';\nimport { MindmapDB } from './mindmapDb.js';\nimport renderer from './mindmapRenderer.js';\nimport styles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n get db() {\n return new MindmapDB();\n },\n renderer,\n parser,\n styles,\n};\n"], - "mappings": "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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "mindmap_default", "parser", "byteToHex", "i", "unsafeStringify", "arr", "offset", "__name", "getRandomValues", "rnds8", "rng", "__name", "randomUUID", "native_default", "v4", "options", "buf", "offset", "native_default", "rnds", "rng", "i", "unsafeStringify", "__name", "v4_default", "MAX_SECTIONS", "nodeType", "MindmapDB", "__name", "level", "id", "descr", "type", "log", "isRoot", "conf", "getConfig", "padding", "defaultConfig_default", "node", "sanitizeText", "parent", "startStr", "endStr", "element", "decoration", "config", "sectionNumber", "index", "child", "childSectionNumber", "MAX_SECTIONS", "processedNodes", "cssClasses", "classes", "getShapeFromType", "processedNode", "edges", "edgeClasses", "edgeDepth", "edge", "mindmapRoot", "hasUserDefinedLayout", "getUserDefinedConfig", "finalConfig", "processedEdges", "shapes", "v4_default", "draw", "__name", "text", "id", "_version", "diagObj", "log", "db", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "node", "render", "setupViewPortForSVG", "defaultConfig_default", "mindmapRenderer_default", "genSections", "__name", "options", "sections", "is_dark_default", "lighten_default", "darken_default", "sw", "getStyles", "styles_default", "diagram", "MindmapDB", "mindmapRenderer_default", "mindmap_default", "styles_default"] + "sources": ["../../../src/diagrams/mindmap/parser/mindmap.jison", "../../../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/stringify.js", "../../../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/rng.js", "../../../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/v4.js", "../../../src/diagrams/mindmap/svgDraw.ts", "../../../src/diagrams/mindmap/mindmapDb.ts", "../../../src/diagrams/mindmap/mindmapRenderer.ts", "../../../src/diagrams/mindmap/styles.ts", "../../../src/diagrams/mindmap/mindmap-definition.ts"], + "sourcesContent": ["/* 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,13],$V2=[1,12],$V3=[1,15],$V4=[1,16],$V5=[1,20],$V6=[1,19],$V7=[6,7,8],$V8=[1,26],$V9=[1,24],$Va=[1,25],$Vb=[6,7,11],$Vc=[1,6,13,15,16,19,22],$Vd=[1,33],$Ve=[1,34],$Vf=[1,6,7,11,13,15,16,19,22];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mindMap\":4,\"spaceLines\":5,\"SPACELINE\":6,\"NL\":7,\"MINDMAP\":8,\"document\":9,\"stop\":10,\"EOF\":11,\"statement\":12,\"SPACELIST\":13,\"node\":14,\"ICON\":15,\"CLASS\":16,\"nodeWithId\":17,\"nodeWithoutId\":18,\"NODE_DSTART\":19,\"NODE_DESCR\":20,\"NODE_DEND\":21,\"NODE_ID\":22,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"SPACELINE\",7:\"NL\",8:\"MINDMAP\",11:\"EOF\",13:\"SPACELIST\",15:\"ICON\",16:\"CLASS\",19:\"NODE_DSTART\",20:\"NODE_DESCR\",21:\"NODE_DEND\",22:\"NODE_ID\"},\nproductions_: [0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6: case 7:\n return yy; \nbreak;\ncase 8:\nyy.getLogger().trace('Stop NL ');\nbreak;\ncase 9:\nyy.getLogger().trace('Stop EOF ');\nbreak;\ncase 11:\nyy.getLogger().trace('Stop NL2 ');\nbreak;\ncase 12:\nyy.getLogger().trace('Stop EOF2 ');\nbreak;\ncase 15:\n yy.getLogger().info('Node: ',$$[$0].id);yy.addNode($$[$0-1].length, $$[$0].id, $$[$0].descr, $$[$0].type); \nbreak;\ncase 16:\n yy.getLogger().trace('Icon: ',$$[$0]);yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 17: case 21:\n yy.decorateNode({class: $$[$0]}); \nbreak;\ncase 18:\n yy.getLogger().trace('SPACELIST');\nbreak;\ncase 19:\n yy.getLogger().trace('Node: ',$$[$0].id);yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type); \nbreak;\ncase 20:\n yy.decorateNode({icon: $$[$0]}); \nbreak;\ncase 25:\n yy.getLogger().trace(\"node found ..\", $$[$0-2]); this.$ = { id: $$[$0-1], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\ncase 26:\n this.$ = { id: $$[$0], descr: $$[$0], type: yy.nodeType.DEFAULT }; \nbreak;\ncase 27:\n yy.getLogger().trace(\"node found ..\", $$[$0-3]); this.$ = { id: $$[$0-3], descr: $$[$0-1], type: yy.getType($$[$0-2], $$[$0]) }; \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:[1,5],8:$V0},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:$V0},{6:$V1,7:[1,10],9:9,12:11,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},o($V7,[2,3]),{1:[2,2]},o($V7,[2,4]),o($V7,[2,5]),{1:[2,6],6:$V1,12:21,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},{6:$V1,9:22,12:11,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},{6:$V8,7:$V9,10:23,11:$Va},o($Vb,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:$V5,22:$V6}),o($Vb,[2,18]),o($Vb,[2,19]),o($Vb,[2,20]),o($Vb,[2,21]),o($Vb,[2,23]),o($Vb,[2,24]),o($Vb,[2,26],{19:[1,30]}),{20:[1,31]},{6:$V8,7:$V9,10:32,11:$Va},{1:[2,7],6:$V1,12:21,13:$V2,14:14,15:$V3,16:$V4,17:17,18:18,19:$V5,22:$V6},o($Vc,[2,14],{7:$Vd,11:$Ve}),o($Vf,[2,8]),o($Vf,[2,9]),o($Vf,[2,10]),o($Vb,[2,15]),o($Vb,[2,16]),o($Vb,[2,17]),{20:[1,35]},{21:[1,36]},o($Vc,[2,13],{7:$Vd,11:$Ve}),o($Vf,[2,11]),o($Vf,[2,12]),{21:[1,37]},o($Vb,[2,25]),o($Vb,[2,27])],\ndefaultActions: {2:[2,1],6:[2,2]},\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\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) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:yy.getLogger().trace('Found comment',yy_.yytext); return 6;\nbreak;\ncase 1:return 8;\nbreak;\ncase 2: this.begin('CLASS'); \nbreak;\ncase 3: this.popState();return 16; \nbreak;\ncase 4: this.popState();\nbreak;\ncase 5: yy.getLogger().trace('Begin icon');this.begin('ICON'); \nbreak;\ncase 6:yy.getLogger().trace('SPACELINE');return 6 /* skip all whitespace */ ;\nbreak;\ncase 7:return 7;\nbreak;\ncase 8: return 15; \nbreak;\ncase 9:yy.getLogger().trace('end icon');this.popState();\nbreak;\ncase 10: yy.getLogger().trace('Exploding node'); this.begin('NODE');return 19; \nbreak;\ncase 11: yy.getLogger().trace('Cloud'); this.begin('NODE');return 19; \nbreak;\ncase 12: yy.getLogger().trace('Explosion Bang'); this.begin('NODE');return 19; \nbreak;\ncase 13: yy.getLogger().trace('Cloud Bang'); this.begin('NODE');return 19; \nbreak;\ncase 14: this.begin('NODE');return 19; \nbreak;\ncase 15: this.begin('NODE');return 19; \nbreak;\ncase 16: this.begin('NODE');return 19; \nbreak;\ncase 17: this.begin('NODE');return 19; \nbreak;\ncase 18:return 13 /* skip all whitespace */ ;\nbreak;\ncase 19:return 22;\nbreak;\ncase 20:return 11;\nbreak;\ncase 21: this.begin(\"NSTR2\");\nbreak;\ncase 22: return \"NODE_DESCR\";\nbreak;\ncase 23: this.popState();\nbreak;\ncase 24: yy.getLogger().trace('Starting NSTR');this.begin(\"NSTR\");\nbreak;\ncase 25: yy.getLogger().trace('description:', yy_.yytext); return \"NODE_DESCR\";\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:this.popState();yy.getLogger().trace('node end ))');return \"NODE_DEND\";\nbreak;\ncase 28:this.popState();yy.getLogger().trace('node end )');return \"NODE_DEND\";\nbreak;\ncase 29:this.popState();yy.getLogger().trace('node end ...',yy_.yytext);return \"NODE_DEND\";\nbreak;\ncase 30:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 31:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 32:this.popState();yy.getLogger().trace('node end (-');return \"NODE_DEND\";\nbreak;\ncase 33:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 34:this.popState();yy.getLogger().trace('node end ((');return \"NODE_DEND\";\nbreak;\ncase 35: yy.getLogger().trace('Long description:', yy_.yytext); return 20;\nbreak;\ncase 36: yy.getLogger().trace('Long description:', yy_.yytext); return 20;\nbreak;\n}\n},\nrules: [/^(?:\\s*%%.*)/i,/^(?:mindmap\\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\\n)/i,/^(?:::icon\\()/i,/^(?:[\\s]+[\\n])/i,/^(?:[\\n]+)/i,/^(?:[^\\)]+)/i,/^(?:\\))/i,/^(?:-\\))/i,/^(?:\\(-)/i,/^(?:\\)\\))/i,/^(?:\\))/i,/^(?:\\(\\()/i,/^(?:\\{\\{)/i,/^(?:\\()/i,/^(?:\\[)/i,/^(?:[\\s]+)/i,/^(?:[^\\(\\[\\n\\)\\{\\}]+)/i,/^(?:$)/i,/^(?:[\"][`])/i,/^(?:[^`\"]+)/i,/^(?:[`][\"])/i,/^(?:[\"])/i,/^(?:[^\"]+)/i,/^(?:[\"])/i,/^(?:[\\)]\\))/i,/^(?:[\\)])/i,/^(?:[\\]])/i,/^(?:\\}\\})/i,/^(?:\\(-)/i,/^(?:-\\))/i,/^(?:\\(\\()/i,/^(?:\\()/i,/^(?:[^\\)\\]\\(\\}]+)/i,/^(?:.+(?!\\(\\())/i],\nconditions: {\"CLASS\":{\"rules\":[3,4],\"inclusive\":false},\"ICON\":{\"rules\":[8,9],\"inclusive\":false},\"NSTR2\":{\"rules\":[22,23],\"inclusive\":false},\"NSTR\":{\"rules\":[25,26],\"inclusive\":false},\"NODE\":{\"rules\":[21,24,27,28,29,30,31,32,33,34,35,36],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n", "const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n", "import { createText } from '../../rendering-util/createText.js';\nimport type { FilledMindMapNode } from './mindmapTypes.js';\nimport type { Point, D3Element } from '../../types.js';\nimport { parseFontSize } from '../../utils.js';\nimport type { MermaidConfig } from '../../config.type.js';\nimport type { MindmapDB } from './mindmapDb.js';\n\nexport const MAX_SECTIONS = 12;\n\ntype ShapeFunction = (\n db: MindmapDB,\n elem: D3Element,\n node: FilledMindMapNode,\n section?: number\n) => void;\n\nconst defaultBkg: ShapeFunction = function (db, elem, node, section) {\n const rd = 5;\n elem\n .append('path')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr(\n 'd',\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${\n node.width - 2 * rd\n } q5,0 5,5 v${node.height - rd} H0 Z`\n );\n\n elem\n .append('line')\n .attr('class', 'node-line-' + section)\n .attr('x1', 0)\n .attr('y1', node.height)\n .attr('x2', node.width)\n .attr('y2', node.height);\n};\n\nconst rectBkg: ShapeFunction = function (db, elem, node) {\n elem\n .append('rect')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr('height', node.height)\n .attr('width', node.width);\n};\n\nconst cloudBkg: ShapeFunction = function (db, elem, node) {\n const w = node.width;\n const h = node.height;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n elem\n .append('path')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr(\n 'd',\n `M0 0 a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${1 * w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${1 * h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},${0}\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n\n H0 V0 Z`\n );\n};\n\nconst bangBkg: ShapeFunction = function (db, elem, node) {\n const w = node.width;\n const h = node.height;\n const r = 0.15 * w;\n elem\n .append('path')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr(\n 'd',\n `M0 0 a${r},${r} 1 0,0 ${w * 0.25},${-1 * h * 0.1}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${1 * h * 0.1}\n\n a${r},${r} 1 0,0 ${w * 0.15},${1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${1 * h * 0.34}\n a${r},${r} 1 0,0 ${-1 * w * 0.15},${1 * h * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${h * 0.15}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${-1 * h * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.1},${-1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${-1 * h * 0.34}\n a${r},${r} 1 0,0 ${w * 0.1},${-1 * h * 0.33}\n\n H0 V0 Z`\n );\n};\n\nconst circleBkg: ShapeFunction = function (db, elem, node) {\n elem\n .append('circle')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr('r', node.width / 2);\n};\n\nfunction insertPolygonShape(\n parent: D3Element,\n w: number,\n h: number,\n points: Point[],\n node: FilledMindMapNode\n) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('transform', 'translate(' + (node.width - w) / 2 + ', ' + h + ')');\n}\n\nconst hexagonBkg: ShapeFunction = function (\n _db: MindmapDB,\n elem: D3Element,\n node: FilledMindMapNode\n) {\n const h = node.height;\n const f = 4;\n const m = h / f;\n const w = node.width - node.padding + 2 * m;\n const points: Point[] = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n insertPolygonShape(elem, w, h, points, node);\n};\n\nconst roundedRectBkg: ShapeFunction = function (db, elem, node) {\n elem\n .append('rect')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + db.type2Str(node.type))\n .attr('height', node.height)\n .attr('rx', node.padding)\n .attr('ry', node.padding)\n .attr('width', node.width);\n};\n\n/**\n * @param db - The database\n * @param elem - The D3 dom element in which the node is to be added\n * @param node - The node to be added\n * @param fullSection - ?\n * @param conf - The configuration object\n * @returns The height nodes dom element\n */\nexport const drawNode = async function (\n db: MindmapDB,\n elem: D3Element,\n node: FilledMindMapNode,\n fullSection: number,\n conf: MermaidConfig\n): Promise {\n const htmlLabels = conf.htmlLabels;\n const section = fullSection % (MAX_SECTIONS - 1);\n const nodeElem = elem.append('g');\n node.section = section;\n let sectionClass = 'section-' + section;\n if (section < 0) {\n sectionClass += ' section-root';\n }\n nodeElem.attr('class', (node.class ? node.class + ' ' : '') + 'mindmap-node ' + sectionClass);\n const bkgElem = nodeElem.append('g');\n\n // Create the wrapped text element\n const textElem = nodeElem.append('g');\n const description = node.descr.replace(/()/g, '\\n');\n await createText(\n textElem,\n description,\n {\n useHtmlLabels: htmlLabels,\n width: node.width,\n classes: 'mindmap-node-label',\n },\n conf\n );\n\n if (!htmlLabels) {\n textElem\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle');\n }\n const bbox = textElem.node().getBBox();\n const [fontSize] = parseFontSize(conf.fontSize);\n node.height = bbox.height + fontSize! * 1.1 * 0.5 + node.padding;\n node.width = bbox.width + 2 * node.padding;\n if (node.icon) {\n if (node.type === db.nodeType.CIRCLE) {\n node.height += 50;\n node.width += 50;\n const icon = nodeElem\n .append('foreignObject')\n .attr('height', '50px')\n .attr('width', node.width)\n .attr('style', 'text-align: center;');\n icon\n .append('div')\n .attr('class', 'icon-container')\n .append('i')\n .attr('class', 'node-icon-' + section + ' ' + node.icon);\n textElem.attr(\n 'transform',\n 'translate(' + node.width / 2 + ', ' + (node.height / 2 - 1.5 * node.padding) + ')'\n );\n } else {\n node.width += 50;\n const orgHeight = node.height;\n node.height = Math.max(orgHeight, 60);\n const heightDiff = Math.abs(node.height - orgHeight);\n const icon = nodeElem\n .append('foreignObject')\n .attr('width', '60px')\n .attr('height', node.height)\n .attr('style', 'text-align: center;margin-top:' + heightDiff / 2 + 'px;');\n\n icon\n .append('div')\n .attr('class', 'icon-container')\n .append('i')\n .attr('class', 'node-icon-' + section + ' ' + node.icon);\n textElem.attr(\n 'transform',\n 'translate(' + (25 + node.width / 2) + ', ' + (heightDiff / 2 + node.padding / 2) + ')'\n );\n }\n } else {\n if (!htmlLabels) {\n const dx = node.width / 2;\n const dy = node.padding / 2;\n textElem.attr('transform', 'translate(' + dx + ', ' + dy + ')');\n // textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + node.padding / 2 + ')');\n } else {\n const dx = (node.width - bbox.width) / 2;\n const dy = (node.height - bbox.height) / 2;\n textElem.attr('transform', 'translate(' + dx + ', ' + dy + ')');\n }\n }\n\n switch (node.type) {\n case db.nodeType.DEFAULT:\n defaultBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.ROUNDED_RECT:\n roundedRectBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.RECT:\n rectBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.CIRCLE:\n bkgElem.attr('transform', 'translate(' + node.width / 2 + ', ' + +node.height / 2 + ')');\n circleBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.CLOUD:\n cloudBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.BANG:\n bangBkg(db, bkgElem, node, section);\n break;\n case db.nodeType.HEXAGON:\n hexagonBkg(db, bkgElem, node, section);\n break;\n }\n\n db.setElementForId(node.id, nodeElem);\n return node.height;\n};\n\nexport const positionNode = function (db: MindmapDB, node: FilledMindMapNode) {\n const nodeElem = db.getElementById(node.id);\n\n const x = node.x || 0;\n const y = node.y || 0;\n // Position the node to its coordinate\n nodeElem.attr('transform', 'translate(' + x + ',' + y + ')');\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { v4 } from 'uuid';\nimport type { D3Element } from '../../types.js';\nimport { sanitizeText } from '../../diagrams/common/common.js';\nimport { log } from '../../logger.js';\nimport type { MindmapNode } from './mindmapTypes.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { LayoutData, Node, Edge } from '../../rendering-util/types.js';\nimport { getUserDefinedConfig } from '../../config.js';\nimport { MAX_SECTIONS } from './svgDraw.js';\n\n// Extend Node type for mindmap-specific properties\nexport type MindmapLayoutNode = Node & {\n level: number;\n nodeId: string;\n type: number;\n section?: number;\n};\n\n// Extend Edge type for mindmap-specific properties\nexport type MindmapLayoutEdge = Edge & {\n depth: number;\n section?: number;\n};\n\nconst nodeType = {\n DEFAULT: 0,\n NO_BORDER: 0,\n ROUNDED_RECT: 1,\n RECT: 2,\n CIRCLE: 3,\n CLOUD: 4,\n BANG: 5,\n HEXAGON: 6,\n} as const;\n\nexport class MindmapDB {\n private nodes: MindmapNode[] = [];\n private count = 0;\n private elements: Record = {};\n private baseLevel?: number;\n public readonly nodeType: typeof nodeType;\n\n constructor() {\n this.getLogger = this.getLogger.bind(this);\n this.nodeType = nodeType;\n this.clear();\n this.getType = this.getType.bind(this);\n this.getElementById = this.getElementById.bind(this);\n this.getParent = this.getParent.bind(this);\n this.getMindmap = this.getMindmap.bind(this);\n this.addNode = this.addNode.bind(this);\n this.decorateNode = this.decorateNode.bind(this);\n }\n public clear() {\n this.nodes = [];\n this.count = 0;\n this.elements = {};\n this.baseLevel = undefined;\n }\n\n public getParent(level: number): MindmapNode | null {\n for (let i = this.nodes.length - 1; i >= 0; i--) {\n if (this.nodes[i].level < level) {\n return this.nodes[i];\n }\n }\n return null;\n }\n\n public getMindmap(): MindmapNode | null {\n return this.nodes.length > 0 ? this.nodes[0] : null;\n }\n\n public addNode(level: number, id: string, descr: string, type: number): void {\n log.info('addNode', level, id, descr, type);\n\n let isRoot = false;\n\n if (this.nodes.length === 0) {\n this.baseLevel = level;\n level = 0;\n isRoot = true;\n } else if (this.baseLevel !== undefined) {\n level = level - this.baseLevel;\n isRoot = false;\n }\n\n const conf = getConfig();\n let padding = conf.mindmap?.padding ?? defaultConfig.mindmap.padding;\n\n switch (type) {\n case this.nodeType.ROUNDED_RECT:\n case this.nodeType.RECT:\n case this.nodeType.HEXAGON:\n padding *= 2;\n break;\n }\n\n const node: MindmapNode = {\n id: this.count++,\n nodeId: sanitizeText(id, conf),\n level,\n descr: sanitizeText(descr, conf),\n type,\n children: [],\n width: conf.mindmap?.maxNodeWidth ?? defaultConfig.mindmap.maxNodeWidth,\n padding,\n isRoot,\n };\n\n const parent = this.getParent(level);\n if (parent) {\n parent.children.push(node);\n this.nodes.push(node);\n } else {\n if (isRoot) {\n this.nodes.push(node);\n } else {\n throw new Error(\n `There can be only one root. No parent could be found for (\"${node.descr}\")`\n );\n }\n }\n }\n\n public getType(startStr: string, endStr: string) {\n log.debug('In get type', startStr, endStr);\n switch (startStr) {\n case '[':\n return this.nodeType.RECT;\n case '(':\n return endStr === ')' ? this.nodeType.ROUNDED_RECT : this.nodeType.CLOUD;\n case '((':\n return this.nodeType.CIRCLE;\n case ')':\n return this.nodeType.CLOUD;\n case '))':\n return this.nodeType.BANG;\n case '{{':\n return this.nodeType.HEXAGON;\n default:\n return this.nodeType.DEFAULT;\n }\n }\n\n public setElementForId(id: number, element: D3Element): void {\n this.elements[id] = element;\n }\n public getElementById(id: number) {\n return this.elements[id];\n }\n\n public decorateNode(decoration?: { class?: string; icon?: string }): void {\n if (!decoration) {\n return;\n }\n\n const config = getConfig();\n const node = this.nodes[this.nodes.length - 1];\n if (decoration.icon) {\n node.icon = sanitizeText(decoration.icon, config);\n }\n if (decoration.class) {\n node.class = sanitizeText(decoration.class, config);\n }\n }\n\n type2Str(type: number): string {\n switch (type) {\n case this.nodeType.DEFAULT:\n return 'no-border';\n case this.nodeType.RECT:\n return 'rect';\n case this.nodeType.ROUNDED_RECT:\n return 'rounded-rect';\n case this.nodeType.CIRCLE:\n return 'circle';\n case this.nodeType.CLOUD:\n return 'cloud';\n case this.nodeType.BANG:\n return 'bang';\n case this.nodeType.HEXAGON:\n return 'hexgon'; // cspell: disable-line\n default:\n return 'no-border';\n }\n }\n\n /**\n * Assign section numbers to nodes based on their position relative to root\n * @param node - The mindmap node to process\n * @param sectionNumber - The section number to assign (undefined for root)\n */\n public assignSections(node: MindmapNode, sectionNumber?: number): void {\n // For root node, section should be undefined (not -1)\n if (node.level === 0) {\n node.section = undefined;\n } else {\n // For non-root nodes, assign the section number\n node.section = sectionNumber;\n }\n // For root node's children, assign section numbers based on their index\n // For other nodes, inherit parent's section number\n if (node.children) {\n for (const [index, child] of node.children.entries()) {\n const childSectionNumber = node.level === 0 ? index % (MAX_SECTIONS - 1) : sectionNumber;\n this.assignSections(child, childSectionNumber);\n }\n }\n }\n\n /**\n * Convert mindmap tree structure to flat array of nodes\n * @param node - The mindmap node to process\n * @param processedNodes - Array to collect processed nodes\n */\n public flattenNodes(node: MindmapNode, processedNodes: MindmapLayoutNode[]): void {\n const conf = getConfig();\n // Build CSS classes for the node\n const cssClasses = ['mindmap-node'];\n\n if (node.isRoot === true) {\n // Root node gets special classes\n cssClasses.push('section-root', 'section--1');\n } else if (node.section !== undefined) {\n // Child nodes get section class based on their section number\n cssClasses.push(`section-${node.section}`);\n }\n\n // Add any custom classes from the node\n if (node.class) {\n cssClasses.push(node.class);\n }\n\n const classes = cssClasses.join(' ');\n\n // Map mindmap node type to valid shape name\n const getShapeFromType = (type: number) => {\n const theme = conf.theme?.toLowerCase() ?? '';\n const isReduxTheme = theme.includes('redux');\n switch (type) {\n case nodeType.CIRCLE:\n return 'mindmapCircle';\n case nodeType.RECT:\n return 'rect';\n case nodeType.ROUNDED_RECT:\n return 'rounded';\n case nodeType.CLOUD:\n return 'cloud';\n case nodeType.BANG:\n return 'bang';\n case nodeType.HEXAGON:\n return 'hexagon';\n case nodeType.DEFAULT:\n return isReduxTheme ? 'rounded' : 'defaultMindmapNode';\n case nodeType.NO_BORDER:\n default:\n return 'rect';\n }\n };\n\n const processedNode: MindmapLayoutNode = {\n id: node.id.toString(),\n domId: 'node_' + node.id.toString(),\n label: node.descr,\n labelType: 'markdown',\n isGroup: false,\n shape: getShapeFromType(node.type),\n width: node.width,\n height: node.height ?? 0,\n padding: node.padding,\n cssClasses: classes,\n cssStyles: [],\n look: conf.look,\n icon: node.icon,\n x: node.x,\n y: node.y,\n // Mindmap-specific properties\n level: node.level,\n nodeId: node.nodeId,\n type: node.type,\n section: node.section,\n };\n\n processedNodes.push(processedNode);\n\n // Recursively process children\n if (node.children) {\n for (const child of node.children) {\n this.flattenNodes(child, processedNodes);\n }\n }\n }\n\n /**\n * Generate edges from parent-child relationships in mindmap tree\n * @param node - The mindmap node to process\n * @param edges - Array to collect edges\n */\n public generateEdges(node: MindmapNode, edges: MindmapLayoutEdge[]): void {\n if (!node.children) {\n return;\n }\n const conf = getConfig();\n for (const child of node.children) {\n // Build CSS classes for the edge\n let edgeClasses = 'edge';\n\n // Add section-specific classes based on the child's section\n if (child.section !== undefined) {\n edgeClasses += ` section-edge-${child.section}`;\n }\n\n // Add depth class based on the parent's level + 1 (depth of the edge)\n const edgeDepth = node.level + 1;\n edgeClasses += ` edge-depth-${edgeDepth}`;\n\n const edge: MindmapLayoutEdge = {\n id: `edge_${node.id}_${child.id}`,\n start: node.id.toString(),\n end: child.id.toString(),\n type: 'normal',\n curve: 'basis',\n thickness: 'normal',\n look: conf.look,\n classes: edgeClasses,\n // Store mindmap-specific data\n depth: node.level,\n section: child.section,\n };\n\n edges.push(edge);\n\n // Recursively process child edges\n this.generateEdges(child, edges);\n }\n }\n\n /**\n * Get structured data for layout algorithms\n * Following the pattern established by ER diagrams\n * @returns Structured data containing nodes, edges, and config\n */\n public getData(): LayoutData {\n const mindmapRoot = this.getMindmap();\n const config = getConfig();\n\n const userDefinedConfig = getUserDefinedConfig();\n const hasUserDefinedLayout = userDefinedConfig.layout !== undefined;\n\n const finalConfig = config;\n if (!hasUserDefinedLayout) {\n finalConfig.layout = 'cose-bilkent';\n }\n\n if (!mindmapRoot) {\n return {\n nodes: [],\n edges: [],\n config: finalConfig,\n };\n }\n log.debug('getData: mindmapRoot', mindmapRoot, config);\n\n // Assign section numbers to all nodes based on their position relative to root\n this.assignSections(mindmapRoot);\n\n // Convert tree structure to flat arrays\n const processedNodes: MindmapLayoutNode[] = [];\n const processedEdges: MindmapLayoutEdge[] = [];\n\n this.flattenNodes(mindmapRoot, processedNodes);\n this.generateEdges(mindmapRoot, processedEdges);\n\n log.debug(\n `getData: processed ${processedNodes.length} nodes and ${processedEdges.length} edges`\n );\n\n // Create shapes map for ELK compatibility\n const shapes = new Map();\n for (const node of processedNodes) {\n shapes.set(node.id, {\n shape: node.shape,\n width: node.width,\n height: node.height,\n padding: node.padding,\n });\n }\n\n return {\n nodes: processedNodes,\n edges: processedEdges,\n config: finalConfig,\n // Store the root node for mindmap-specific layout algorithms\n rootNode: mindmapRoot,\n // Properties required by dagre layout algorithm\n markers: ['point'], // Mindmaps don't use markers\n direction: 'TB', // Top-to-bottom direction for mindmaps\n nodeSpacing: 50, // Default spacing between nodes\n rankSpacing: 50, // Default spacing between ranks\n // Add shapes for ELK compatibility\n shapes: Object.fromEntries(shapes),\n // Additional properties that layout algorithms might expect\n type: 'mindmap',\n diagramId: 'mindmap-' + v4(),\n };\n }\n\n // Expose logger to grammar\n public getLogger() {\n return log;\n }\n}\n", "import type { DrawDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport type { FilledMindMapNode } from './mindmapTypes.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { MindmapDB } from './mindmapDb.js';\nimport { getConfig } from '../../config.js';\n\n/**\n * Update the layout data with actual node dimensions after drawing\n */\nfunction _updateNodeDimensions(data4Layout: LayoutData, mindmapRoot: FilledMindMapNode) {\n const updateNode = (node: FilledMindMapNode) => {\n // Find the corresponding node in the layout data\n const layoutNode = data4Layout.nodes.find((n) => n.id === node.id.toString());\n if (layoutNode) {\n // Update with the actual dimensions calculated by drawNode\n layoutNode.width = node.width;\n layoutNode.height = node.height;\n log.debug('Updated node dimensions:', node.id, 'width:', node.width, 'height:', node.height);\n }\n\n // Recursively update children\n node.children?.forEach(updateNode);\n };\n\n updateNode(mindmapRoot);\n}\n\nexport const draw: DrawDefinition = async (text, id, _version, diagObj) => {\n log.debug('Rendering mindmap diagram\\n' + text);\n\n // Draw the nodes first to get their dimensions, then update the layout data\n const db = diagObj.db as MindmapDB;\n\n // The getData method provided in all supported diagrams is used to extract the data from the parsed structure\n // into the Layout data format\n const data4Layout = db.getData();\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, data4Layout.config.securityLevel);\n\n data4Layout.type = diagObj.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(data4Layout.config.layout, {\n fallback: 'cose-bilkent',\n });\n\n data4Layout.diagramId = id;\n\n const mm = db.getMindmap();\n if (!mm) {\n return;\n }\n\n data4Layout.nodes.forEach((node) => {\n if (node.shape === 'rounded') {\n node.radius = 15;\n node.taper = 15;\n node.stroke = 'none';\n node.width = 0;\n node.padding = 15;\n } else if (node.shape === 'circle') {\n node.padding = 10;\n } else if (node.shape === 'rect') {\n node.width = 0;\n node.padding = 10;\n } else if (node.shape === 'hexagon') {\n node.width = 0;\n node.height = 0;\n }\n });\n\n // Use the unified rendering system\n await render(data4Layout, svg);\n\n // For mindmap, the linearGradient used by the neo theme must live inside \n // so browsers treat it as a valid SVG paint server (url(#id-gradient) references).\n // render.ts appends it to the SVG root for other diagram types; mindmap adds its\n // own properly-scoped entry here to avoid relying on that placement.\n const { themeVariables } = getConfig();\n const { useGradient, gradientStart, gradientStop } = themeVariables;\n if (useGradient && gradientStart && gradientStop) {\n const svgId = svg.attr('id');\n const gradient = svg\n .append('defs')\n .append('linearGradient')\n .attr('id', `${svgId}-gradient`)\n .attr('gradientUnits', 'objectBoundingBox')\n .attr('x1', '0%')\n .attr('y1', '0%')\n .attr('x2', '100%')\n .attr('y2', '0%');\n\n gradient\n .append('stop')\n .attr('offset', '0%')\n .attr('stop-color', gradientStart)\n .attr('stop-opacity', 1);\n gradient\n .append('stop')\n .attr('offset', '100%')\n .attr('stop-color', gradientStop)\n .attr('stop-opacity', 1);\n }\n\n // Setup the view box and size of the svg element using config from data4Layout\n setupViewPortForSVG(\n svg,\n data4Layout.config.mindmap?.padding ?? defaultConfig.mindmap.padding,\n 'mindmapDiagram',\n data4Layout.config.mindmap?.useMaxWidth ?? defaultConfig.mindmap.useMaxWidth\n );\n};\n\nexport default {\n draw,\n};\n", "// @ts-expect-error Incorrect khroma types\nimport { darken, lighten, isDark } from 'khroma';\nimport type { DiagramStylesProvider } from '../../diagram-api/types.js';\n\nconst genSections: DiagramStylesProvider = (options) => {\n const { theme, look } = options;\n\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options['lineColor' + i] = options['lineColor' + i] || options['cScaleInv' + i];\n if (isDark(options['lineColor' + i])) {\n options['lineColor' + i] = lighten(options['lineColor' + i], 20);\n } else {\n options['lineColor' + i] = darken(options['lineColor' + i], 20);\n }\n }\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = '' + (look === 'neo' ? Math.max(10 - (i - 1) * 2, 2) : 17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${\n i - 1\n } polygon, .section-${i - 1} path {\n fill: ${options['cScale' + i]};\n }\n .section-${i - 1} text {\n fill: ${options['cScaleLabel' + i]};\n }\n .section-${i - 1} span {\n color: ${options['cScaleLabel' + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options['cScaleLabel' + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options['cScale' + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options['cScaleInv' + i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n [data-look=\"neo\"].mindmap-node.section-${i - 1} rect, [data-look=\"neo\"].mindmap-node.section-${i - 1} path, [data-look=\"neo\"].mindmap-node.section-${i - 1} circle, [data-look=\"neo\"].mindmap-node.section-${i - 1} polygon {\n fill: ${theme === 'redux' || theme === 'redux-dark' || theme === 'neutral' ? options.mainBkg : options['cScale' + i]};\n stroke: ${theme === 'redux' || theme === 'redux-dark' ? options.nodeBorder : options['cScale' + i]};\n stroke-width: ${options.strokeWidth ?? 2}px;\n }\n [data-look=\"neo\"].section-edge-${i - 1}{\n stroke: ${theme?.includes('redux') || theme === 'neo-dark' ? options.nodeBorder : options['cScale' + i]};\n }\n [data-look=\"neo\"].mindmap-node.section-${i - 1} text {\n fill: ${theme === 'redux' || theme === 'redux-dark' ? options.nodeBorder : options['cScaleLabel' + (theme === 'neutral' ? 1 : i)]};\n }\n `;\n }\n return sections;\n};\n\nconst genGradient = (THEME_COLOR_LIMIT: number, svgId: string, mainBkg: string) => {\n let sections = '';\n for (let i = 0; i < THEME_COLOR_LIMIT; i++) {\n sections += `\n [data-look=\"neo\"].mindmap-node.section-${i - 1} rect, [data-look=\"neo\"].mindmap-node.section-${i - 1} path, [data-look=\"neo\"].mindmap-node.section-${i - 1} circle, [data-look=\"neo\"].mindmap-node.section-${i - 1} polygon {\n stroke: url(${svgId}-gradient);\n fill: ${mainBkg};\n }\n .section-${i - 1} line {\n stroke-width: 0;\n }`;\n }\n return sections;\n};\n\n// TODO: These options seem incorrect.\nconst getStyles: DiagramStylesProvider = (options) => {\n const { theme } = options;\n // svgId is passed inside options by the caller in packages/mermaid/src/styles.ts\n // as `themes[type]({ ...options, svgId })`. The second parameter is never populated.\n const svgId: string | undefined = options.svgId;\n const scopedDropShadow = options.dropShadow\n ? options.dropShadow.replace('url(#drop-shadow)', `url(${svgId}-drop-shadow)`)\n : 'none';\n return `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .section-root span {\n color: ${theme?.includes('redux') ? options.nodeBorder : options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n [data-look=\"neo\"].mindmap-node {\n filter: ${scopedDropShadow};\n }\n [data-look=\"neo\"].mindmap-node.section-root rect, [data-look=\"neo\"].mindmap-node.section-root path, [data-look=\"neo\"].mindmap-node.section-root circle, [data-look=\"neo\"].mindmap-node.section-root polygon {\n fill: ${theme?.includes('redux') ? options.mainBkg : options.git0};\n }\n [data-look=\"neo\"].mindmap-node.section-root .text-inner-tspan {\n fill: ${theme?.includes('redux') ? options.nodeBorder : options['cScaleLabel' + (theme === 'neutral' ? 1 : 0)]};\n }\n ${options.useGradient && svgId && options.mainBkg ? genGradient(options.THEME_COLOR_LIMIT, svgId, options.mainBkg) : ''}\n`;\n};\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/mindmap.jison';\nimport { MindmapDB } from './mindmapDb.js';\nimport renderer from './mindmapRenderer.js';\nimport styles from './styles.js';\nimport type { DiagramDefinition } from '../../diagram-api/types.js';\n\nexport const diagram: DiagramDefinition = {\n get db() {\n return new MindmapDB();\n },\n renderer,\n parser,\n styles,\n};\n"], + "mappings": "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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "mindmap_default", "parser", "byteToHex", "i", "unsafeStringify", "arr", "offset", "__name", "rnds8", "rng", "__name", "v4", "options", "buf", "offset", "_v4", "__name", "rnds", "rng", "unsafeStringify", "v4_default", "MAX_SECTIONS", "nodeType", "MindmapDB", "__name", "level", "i", "id", "descr", "type", "log", "isRoot", "conf", "getConfig", "padding", "defaultConfig_default", "node", "sanitizeText", "parent", "startStr", "endStr", "element", "decoration", "config", "sectionNumber", "index", "child", "childSectionNumber", "MAX_SECTIONS", "processedNodes", "cssClasses", "classes", "getShapeFromType", "isReduxTheme", "processedNode", "edges", "edgeClasses", "edgeDepth", "edge", "mindmapRoot", "hasUserDefinedLayout", "getUserDefinedConfig", "finalConfig", "processedEdges", "shapes", "v4_default", "draw", "__name", "text", "id", "_version", "diagObj", "log", "db", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "node", "render", "themeVariables", "getConfig", "useGradient", "gradientStart", "gradientStop", "svgId", "gradient", "setupViewPortForSVG", "defaultConfig_default", "mindmapRenderer_default", "genSections", "__name", "options", "theme", "look", "sections", "is_dark_default", "lighten_default", "darken_default", "sw", "genGradient", "THEME_COLOR_LIMIT", "svgId", "mainBkg", "getStyles", "scopedDropShadow", "styles_default", "diagram", "MindmapDB", "mindmapRenderer_default", "mindmap_default", "styles_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-QTQOGDLH.mjs b/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-QTQOGDLH.mjs deleted file mode 100644 index aacd400..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/mindmap-definition-QTQOGDLH.mjs +++ /dev/null @@ -1,68 +0,0 @@ -import{a as dt}from"./chunk-TBF5ZNIQ.mjs";import{a as ut}from"./chunk-T4EQAHMB.mjs";import{b as pt,c as gt}from"./chunk-SK62O5VA.mjs";import"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{Y as F,d as ot,e as ct,f as lt,j as C,v as ht,z as M}from"./chunk-3UWU4A3N.mjs";import{b as $}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as o}from"./chunk-VELTKBKT.mjs";var W=(function(){var e=o(function(L,s,n,a){for(n=n||{},a=L.length;a--;n[L[a]]=s);return n},"o"),t=[1,4],i=[1,13],l=[1,12],p=[1,15],h=[1,16],m=[1,20],y=[1,19],u=[6,7,8],N=[1,26],K=[1,24],Q=[1,25],k=[6,7,11],tt=[1,6,13,15,16,19,22],et=[1,33],it=[1,34],O=[1,6,7,11,13,15,16,19,22],P={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(s,n,a,c,g,r,I){var d=r.length-1;switch(g){case 6:case 7:return c;case 8:c.getLogger().trace("Stop NL ");break;case 9:c.getLogger().trace("Stop EOF ");break;case 11:c.getLogger().trace("Stop NL2 ");break;case 12:c.getLogger().trace("Stop EOF2 ");break;case 15:c.getLogger().info("Node: ",r[d].id),c.addNode(r[d-1].length,r[d].id,r[d].descr,r[d].type);break;case 16:c.getLogger().trace("Icon: ",r[d]),c.decorateNode({icon:r[d]});break;case 17:case 21:c.decorateNode({class:r[d]});break;case 18:c.getLogger().trace("SPACELIST");break;case 19:c.getLogger().trace("Node: ",r[d].id),c.addNode(0,r[d].id,r[d].descr,r[d].type);break;case 20:c.decorateNode({icon:r[d]});break;case 25:c.getLogger().trace("node found ..",r[d-2]),this.$={id:r[d-1],descr:r[d-1],type:c.getType(r[d-2],r[d])};break;case 26:this.$={id:r[d],descr:r[d],type:c.nodeType.DEFAULT};break;case 27:c.getLogger().trace("node found ..",r[d-3]),this.$={id:r[d-3],descr:r[d-1],type:c.getType(r[d-2],r[d])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:i,7:[1,10],9:9,12:11,13:l,14:14,15:p,16:h,17:17,18:18,19:m,22:y},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:i,12:21,13:l,14:14,15:p,16:h,17:17,18:18,19:m,22:y},{6:i,9:22,12:11,13:l,14:14,15:p,16:h,17:17,18:18,19:m,22:y},{6:N,7:K,10:23,11:Q},e(k,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:m,22:y}),e(k,[2,18]),e(k,[2,19]),e(k,[2,20]),e(k,[2,21]),e(k,[2,23]),e(k,[2,24]),e(k,[2,26],{19:[1,30]}),{20:[1,31]},{6:N,7:K,10:32,11:Q},{1:[2,7],6:i,12:21,13:l,14:14,15:p,16:h,17:17,18:18,19:m,22:y},e(tt,[2,14],{7:et,11:it}),e(O,[2,8]),e(O,[2,9]),e(O,[2,10]),e(k,[2,15]),e(k,[2,16]),e(k,[2,17]),{20:[1,35]},{21:[1,36]},e(tt,[2,13],{7:et,11:it}),e(O,[2,11]),e(O,[2,12]),{21:[1,37]},e(k,[2,25]),e(k,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(s,n){if(n.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=n,a}},"parseError"),parse:o(function(s){var n=this,a=[0],c=[],g=[null],r=[],I=this.table,d="",R=0,nt=0,rt=0,Dt=2,st=1,xt=r.slice.call(arguments,1),f=Object.create(this.lexer),v={yy:{}};for(var V in this.yy)Object.prototype.hasOwnProperty.call(this.yy,V)&&(v.yy[V]=this.yy[V]);f.setInput(s,v.yy),v.yy.lexer=f,v.yy.parser=this,typeof f.yylloc>"u"&&(f.yylloc={});var H=f.yylloc;r.push(H);var Nt=f.options&&f.options.ranges;typeof v.yy.parseError=="function"?this.parseError=v.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ct(D){a.length=a.length-2*D,g.length=g.length-D,r.length=r.length-D}o(Ct,"popStack");function St(){var D;return D=c.pop()||f.lex()||st,typeof D!="number"&&(D instanceof Array&&(c=D,D=c.pop()),D=n.symbols_[D]||D),D}o(St,"lex");for(var E,G,T,x,Ot,X,w={},A,S,at,U;;){if(T=a[a.length-1],this.defaultActions[T]?x=this.defaultActions[T]:((E===null||typeof E>"u")&&(E=St()),x=I[T]&&I[T][E]),typeof x>"u"||!x.length||!x[0]){var z="";U=[];for(A in I[T])this.terminals_[A]&&A>Dt&&U.push("'"+this.terminals_[A]+"'");f.showPosition?z="Parse error on line "+(R+1)+`: -`+f.showPosition()+` -Expecting `+U.join(", ")+", got '"+(this.terminals_[E]||E)+"'":z="Parse error on line "+(R+1)+": Unexpected "+(E==st?"end of input":"'"+(this.terminals_[E]||E)+"'"),this.parseError(z,{text:f.match,token:this.terminals_[E]||E,line:f.yylineno,loc:H,expected:U})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+E);switch(x[0]){case 1:a.push(E),g.push(f.yytext),r.push(f.yylloc),a.push(x[1]),E=null,G?(E=G,G=null):(nt=f.yyleng,d=f.yytext,R=f.yylineno,H=f.yylloc,rt>0&&rt--);break;case 2:if(S=this.productions_[x[1]][1],w.$=g[g.length-S],w._$={first_line:r[r.length-(S||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(S||1)].first_column,last_column:r[r.length-1].last_column},Nt&&(w._$.range=[r[r.length-(S||1)].range[0],r[r.length-1].range[1]]),X=this.performAction.apply(w,[d,nt,R,v.yy,x[1],g,r].concat(xt)),typeof X<"u")return X;S&&(a=a.slice(0,-1*S*2),g=g.slice(0,-1*S),r=r.slice(0,-1*S)),a.push(this.productions_[x[1]][0]),g.push(w.$),r.push(w._$),at=I[a[a.length-2]][a[a.length-1]],a.push(at);break;case 3:return!0}}return!0},"parse")},kt=(function(){var L={EOF:1,parseError:o(function(n,a){if(this.yy.parser)this.yy.parser.parseError(n,a);else throw new Error(n)},"parseError"),setInput:o(function(s,n){return this.yy=n||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var n=s.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:o(function(s){var n=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var c=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var g=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===c.length?this.yylloc.first_column:0)+c[c.length-a.length].length-a[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[g[0],g[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(s){this.unput(this.match.slice(s))},"less"),pastInput:o(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var s=this.pastInput(),n=new Array(s.length+1).join("-");return s+this.upcomingInput()+` -`+n+"^"},"showPosition"),test_match:o(function(s,n){var a,c,g;if(this.options.backtrack_lexer&&(g={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(g.yylloc.range=this.yylloc.range.slice(0))),c=s[0].match(/(?:\r\n?|\n).*/g),c&&(this.yylineno+=c.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:c?c[c.length-1].length-c[c.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(s[0].length),this.matched+=s[0],a=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var r in g)this[r]=g[r];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,n,a,c;this._more||(this.yytext="",this.match="");for(var g=this._currentRules(),r=0;rn[0].length)){if(n=a,c=r,this.options.backtrack_lexer){if(s=this.test_match(a,g[r]),s!==!1)return s;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(s=this.test_match(n,g[c]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var n=this.next();return n||this.lex()},"lex"),begin:o(function(n){this.conditionStack.push(n)},"begin"),popState:o(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:o(function(n){this.begin(n)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(n,a,c,g){var r=g;switch(c){case 0:return n.getLogger().trace("Found comment",a.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:n.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return n.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:n.getLogger().trace("end icon"),this.popState();break;case 10:return n.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return n.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return n.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return n.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:n.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return n.getLogger().trace("description:",a.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),n.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),n.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),n.getLogger().trace("node end ...",a.yytext),"NODE_DEND";break;case 30:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return n.getLogger().trace("Long description:",a.yytext),20;break;case 36:return n.getLogger().trace("Long description:",a.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return L})();P.lexer=kt;function j(){this.yy={}}return o(j,"Parser"),j.prototype=P,P.Parser=j,new j})();W.parser=W;var mt=W;var b=[];for(let e=0;e<256;++e)b.push((e+256).toString(16).slice(1));function ft(e,t=0){return(b[e[t+0]]+b[e[t+1]]+b[e[t+2]]+b[e[t+3]]+"-"+b[e[t+4]]+b[e[t+5]]+"-"+b[e[t+6]]+b[e[t+7]]+"-"+b[e[t+8]]+b[e[t+9]]+"-"+b[e[t+10]]+b[e[t+11]]+b[e[t+12]]+b[e[t+13]]+b[e[t+14]]+b[e[t+15]]).toLowerCase()}o(ft,"unsafeStringify");var Y,_t=new Uint8Array(16);function Z(){if(!Y){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Y=crypto.getRandomValues.bind(crypto)}return Y(_t)}o(Z,"rng");var Lt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),q={randomUUID:Lt};function $t(e,t,i){if(q.randomUUID&&!t&&!e)return q.randomUUID();e=e||{};let l=e.random??e.rng?.()??Z();if(l.length<16)throw new Error("Random bytes length must be >= 16");if(l[6]=l[6]&15|64,l[8]=l[8]&63|128,t){if(i=i||0,i<0||i+16>t.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let p=0;p<16;++p)t[i+p]=l[p];return t}return ft(l)}o($t,"v4");var J=$t;var yt=12;var _={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},B=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=_,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{o(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let i=this.nodes.length-1;i>=0;i--)if(this.nodes[i].level0?this.nodes[0]:null}addNode(t,i,l,p){$.info("addNode",t,i,l,p);let h=!1;this.nodes.length===0?(this.baseLevel=t,t=0,h=!0):this.baseLevel!==void 0&&(t=t-this.baseLevel,h=!1);let m=F(),y=m.mindmap?.padding??C.mindmap.padding;switch(p){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:y*=2;break}let u={id:this.count++,nodeId:M(i,m),level:t,descr:M(l,m),type:p,children:[],width:m.mindmap?.maxNodeWidth??C.mindmap.maxNodeWidth,padding:y,isRoot:h},N=this.getParent(t);if(N)N.children.push(u),this.nodes.push(u);else if(h)this.nodes.push(u);else throw new Error(`There can be only one root. No parent could be found for ("${u.descr}")`)}getType(t,i){switch($.debug("In get type",t,i),t){case"[":return this.nodeType.RECT;case"(":return i===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,i){this.elements[t]=i}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;let i=F(),l=this.nodes[this.nodes.length-1];t.icon&&(l.icon=M(t.icon,i)),t.class&&(l.class=M(t.class,i))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,i){if(t.level===0?t.section=void 0:t.section=i,t.children)for(let[l,p]of t.children.entries()){let h=t.level===0?l%(yt-1):i;this.assignSections(p,h)}}flattenNodes(t,i){let l=["mindmap-node"];t.isRoot===!0?l.push("section-root","section--1"):t.section!==void 0&&l.push(`section-${t.section}`),t.class&&l.push(t.class);let p=l.join(" "),h=o(y=>{switch(y){case _.CIRCLE:return"mindmapCircle";case _.RECT:return"rect";case _.ROUNDED_RECT:return"rounded";case _.CLOUD:return"cloud";case _.BANG:return"bang";case _.HEXAGON:return"hexagon";case _.DEFAULT:return"defaultMindmapNode";case _.NO_BORDER:default:return"rect"}},"getShapeFromType"),m={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,labelType:"markdown",isGroup:!1,shape:h(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:p,cssStyles:[],look:"default",icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(i.push(m),t.children)for(let y of t.children)this.flattenNodes(y,i)}generateEdges(t,i){if(t.children)for(let l of t.children){let p="edge";l.section!==void 0&&(p+=` section-edge-${l.section}`);let h=t.level+1;p+=` edge-depth-${h}`;let m={id:`edge_${t.id}_${l.id}`,start:t.id.toString(),end:l.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:p,depth:t.level,section:l.section};i.push(m),this.generateEdges(l,i)}}getData(){let t=this.getMindmap(),i=F(),p=ht().layout!==void 0,h=i;if(p||(h.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:h};$.debug("getData: mindmapRoot",t,i),this.assignSections(t);let m=[],y=[];this.flattenNodes(t,m),this.generateEdges(t,y),$.debug(`getData: processed ${m.length} nodes and ${y.length} edges`);let u=new Map;for(let N of m)u.set(N.id,{shape:N.shape,width:N.width,height:N.height,padding:N.padding});return{nodes:m,edges:y,config:h,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(u),type:"mindmap",diagramId:"mindmap-"+J()}}getLogger(){return $}};var vt=o(async(e,t,i,l)=>{$.debug(`Rendering mindmap diagram -`+e);let p=l.db,h=p.getData(),m=dt(t,h.config.securityLevel);h.type=l.type,h.layoutAlgorithm=gt(h.config.layout,{fallback:"cose-bilkent"}),h.diagramId=t,p.getMindmap()&&(h.nodes.forEach(u=>{u.shape==="rounded"?(u.radius=15,u.taper=15,u.stroke="none",u.width=0,u.padding=15):u.shape==="circle"?u.padding=10:u.shape==="rect"&&(u.width=0,u.padding=10)}),await pt(h,m),ut(m,h.config.mindmap?.padding??C.mindmap.padding,"mindmapDiagram",h.config.mindmap?.useMaxWidth??C.mindmap.useMaxWidth))},"draw"),bt={draw:vt};var Tt=o(e=>{let t="";for(let i=0;i` - .edge { - stroke-width: 3; - } - ${Tt(e)} - .section-root rect, .section-root path, .section-root circle, .section-root polygon { - fill: ${e.git0}; - } - .section-root text { - fill: ${e.gitBranchLabel0}; - } - .section-root span { - color: ${e.gitBranchLabel0}; - } - .section-2 span { - color: ${e.gitBranchLabel0}; - } - .icon-container { - height:100%; - display: flex; - justify-content: center; - align-items: center; - } - .edge { - fill: none; - } - .mindmap-node-label { - dy: 1em; - alignment-baseline: middle; - text-anchor: middle; - dominant-baseline: middle; - text-align: center; - } -`,"getStyles"),Et=wt;var xe={get db(){return new B},renderer:bt,parser:mt,styles:Et};export{xe as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/packet-RMMSAZCW-74OXTHQQ.mjs b/assets/mermaid/chunks/mermaid.esm.min/packet-RMMSAZCW-74OXTHQQ.mjs deleted file mode 100644 index 4ea4719..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/packet-RMMSAZCW-74OXTHQQ.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as e,b as r}from"./chunk-AHTCUU5T.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import"./chunk-VELTKBKT.mjs";export{e as PacketModule,r as createPacketServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/packet-YPE3B663-LP52Z2RK.mjs b/assets/mermaid/chunks/mermaid.esm.min/packet-YPE3B663-LP52Z2RK.mjs new file mode 100644 index 0000000..71103b0 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/packet-YPE3B663-LP52Z2RK.mjs @@ -0,0 +1 @@ +import{a as e,b as r}from"./chunk-UXSXWOXI.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{e as PacketModule,r as createPacketServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/pie-UPGHQEXC-SNR2CZVS.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/packet-YPE3B663-LP52Z2RK.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/pie-UPGHQEXC-SNR2CZVS.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/packet-YPE3B663-LP52Z2RK.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/pie-LRSECV5Y-TCRJHUBD.mjs b/assets/mermaid/chunks/mermaid.esm.min/pie-LRSECV5Y-TCRJHUBD.mjs new file mode 100644 index 0000000..347137b --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/pie-LRSECV5Y-TCRJHUBD.mjs @@ -0,0 +1 @@ +import{a as e,b as r}from"./chunk-C62D2QBJ.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{e as PieModule,r as createPieServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/radar-KQ55EAFF-DTKK6RDY.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/pie-LRSECV5Y-TCRJHUBD.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/radar-KQ55EAFF-DTKK6RDY.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/pie-LRSECV5Y-TCRJHUBD.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/pie-UPGHQEXC-SNR2CZVS.mjs b/assets/mermaid/chunks/mermaid.esm.min/pie-UPGHQEXC-SNR2CZVS.mjs deleted file mode 100644 index 5468786..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/pie-UPGHQEXC-SNR2CZVS.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as e,b as r}from"./chunk-JVPIJFVP.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import"./chunk-VELTKBKT.mjs";export{e as PieModule,r as createPieServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-CU6KROY3.mjs b/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-CU6KROY3.mjs new file mode 100644 index 0000000..241bfa9 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-CU6KROY3.mjs @@ -0,0 +1,30 @@ +import{a as Q}from"./chunk-JQRUD6KW.mjs";import{a as K}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{a as Y}from"./chunk-LRIF4GLE.mjs";import{n as H,o as J}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{O as W,S as _,T as z,U as L,V as I,W as N,X as q,Y as V,_ as U,j as M}from"./chunk-67TQ5CYL.mjs";import{F as w,I as Z,b as p,m as X}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as r}from"./chunk-AQ6EADP3.mjs";var ee=M.pie,C={sections:new Map,showData:!1,config:ee},D=C.sections,A=C.showData,ue=structuredClone(ee),Se=r(()=>structuredClone(ue),"getConfig"),he=r(()=>{D=new Map,A=C.showData,_()},"clear"),ye=r(({label:e,value:i})=>{if(i<0)throw new Error(`"${e}" has invalid value: ${i}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);D.has(e)||(D.set(e,i),p.debug(`added new section: ${e}, with value: ${i}`))},"addSection"),xe=r(()=>D,"getSections"),Pe=r(e=>{A=e},"setShowData"),we=r(()=>A,"getShowData"),u={getConfig:Se,clear:he,setDiagramTitle:q,getDiagramTitle:V,setAccTitle:z,getAccTitle:L,setAccDescription:I,getAccDescription:N,addSection:ye,getSections:xe,setShowData:Pe,getShowData:we};var Ce=r((e,i)=>{Q(e,i),i.setShowData(e.showData),e.sections.map(i.addSection)},"populateDb"),te={parse:r(async e=>{let i=await K("pie",e);p.debug(i),Ce(i,u)},"parse")};var Ae=r(e=>` + .pieCircle{ + stroke: ${e.pieStrokeColor}; + stroke-width : ${e.pieStrokeWidth}; + opacity : ${e.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${e.pieOuterStrokeColor}; + stroke-width: ${e.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${e.pieTitleTextSize}; + fill: ${e.pieTitleTextColor}; + font-family: ${e.fontFamily}; + } + .slice { + font-family: ${e.fontFamily}; + fill: ${e.pieSectionTextColor}; + font-size:${e.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${e.pieLegendTextColor}; + font-family: ${e.fontFamily}; + font-size: ${e.pieLegendTextSize}; + } +`,"getStyles"),ie=Ae;var Te=r(e=>{let i=[...e.values()].reduce((n,s)=>n+s,0),T=[...e.entries()].map(([n,s])=>({label:n,value:s})).filter(n=>n.value/i*100>=1);return Z().value(n=>n.value).sort(null)(T)},"createPieArcs"),ve=r((e,i,T,v)=>{p.debug(`rendering pie chart +`+e);let n=v.db,s=U(),$=J(n.getConfig(),s.pie),b=40,a=18,d=4,c=450,m=c,S=Y(i),l=S.append("g");l.attr("transform","translate("+m/2+","+c/2+")");let{themeVariables:o}=s,[R]=H(o.pieOuterStrokeWidth);R??=2;let E=$.textPosition,f=Math.min(m,c)/2-b,oe=w().innerRadius(0).outerRadius(f),ne=w().innerRadius(f*E).outerRadius(f*E);l.append("circle").attr("cx",0).attr("cy",0).attr("r",f+R/2).attr("class","pieOuterCircle");let g=n.getSections(),ae=Te(g),se=[o.pie1,o.pie2,o.pie3,o.pie4,o.pie5,o.pie6,o.pie7,o.pie8,o.pie9,o.pie10,o.pie11,o.pie12],h=0;g.forEach(t=>{h+=t});let k=ae.filter(t=>(t.data.value/h*100).toFixed(0)!=="0"),y=X(se).domain([...g.keys()]);l.selectAll("mySlices").data(k).enter().append("path").attr("d",oe).attr("fill",t=>y(t.data.label)).attr("class","pieCircle"),l.selectAll("mySlices").data(k).enter().append("text").text(t=>(t.data.value/h*100).toFixed(0)+"%").attr("transform",t=>"translate("+ne.centroid(t)+")").style("text-anchor","middle").attr("class","slice");let ce=l.append("text").text(n.getDiagramTitle()).attr("x",0).attr("y",-(c-50)/2).attr("class","pieTitleText"),G=[...g.entries()].map(([t,P])=>({label:t,value:P})),x=l.selectAll(".legend").data(G).enter().append("g").attr("class","legend").attr("transform",(t,P)=>{let j=a+d,fe=j*G.length/2,ge=12*a,De=P*j-fe;return"translate("+ge+","+De+")"});x.append("rect").attr("width",a).attr("height",a).style("fill",t=>y(t.label)).style("stroke",t=>y(t.label)),x.append("text").attr("x",a+d).attr("y",a-d).text(t=>n.getShowData()?`${t.label} [${t.value}]`:t.label);let le=Math.max(...x.selectAll("text").nodes().map(t=>t?.getBoundingClientRect().width??0)),pe=m+b+a+d+le,B=ce.node()?.getBoundingClientRect().width??0,me=m/2-B/2,de=m/2+B/2,F=Math.min(0,me),O=Math.max(pe,de)-F;S.attr("viewBox",`${F} 0 ${O} ${c}`),W(S,c,O,$.useMaxWidth)},"draw"),re={draw:ve};var Ye={parser:te,db:u,renderer:re,styles:ie};export{Ye as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-CU6KROY3.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-CU6KROY3.mjs.map new file mode 100644 index 0000000..6c18c81 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-CU6KROY3.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/pie/pieDb.ts", "../../../src/diagrams/pie/pieParser.ts", "../../../src/diagrams/pie/pieStyles.ts", "../../../src/diagrams/pie/pieRenderer.ts", "../../../src/diagrams/pie/pieDiagram.ts"], + "sourcesContent": ["import { log } from '../../logger.js';\nimport {\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../common/commonDb.js';\nimport type { PieFields, PieDB, Sections, D3Section } from './pieTypes.js';\nimport type { RequiredDeep } from 'type-fest';\nimport type { PieDiagramConfig } from '../../config.type.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\n\nexport const DEFAULT_PIE_CONFIG: Required = DEFAULT_CONFIG.pie;\n\nexport const DEFAULT_PIE_DB: RequiredDeep = {\n sections: new Map(),\n showData: false,\n config: DEFAULT_PIE_CONFIG,\n} as const;\n\nlet sections: Sections = DEFAULT_PIE_DB.sections;\nlet showData: boolean = DEFAULT_PIE_DB.showData;\nconst config: Required = structuredClone(DEFAULT_PIE_CONFIG);\n\nconst getConfig = (): Required => structuredClone(config);\n\nconst clear = (): void => {\n sections = new Map();\n showData = DEFAULT_PIE_DB.showData;\n commonClear();\n};\n\nconst addSection = ({ label, value }: D3Section): void => {\n if (value < 0) {\n throw new Error(\n `\"${label}\" has invalid value: ${value}. Negative values are not allowed in pie charts. All slice values must be >= 0.`\n );\n }\n if (!sections.has(label)) {\n sections.set(label, value);\n log.debug(`added new section: ${label}, with value: ${value}`);\n }\n};\n\nconst getSections = (): Sections => sections;\n\nconst setShowData = (toggle: boolean): void => {\n showData = toggle;\n};\n\nconst getShowData = (): boolean => showData;\n\nexport const db: PieDB = {\n getConfig,\n\n clear,\n setDiagramTitle,\n getDiagramTitle,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n\n addSection,\n getSections,\n setShowData,\n getShowData,\n};\n", "import type { Pie } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport { log } from '../../logger.js';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport type { PieDB } from './pieTypes.js';\nimport { db } from './pieDb.js';\n\nconst populateDb = (ast: Pie, db: PieDB) => {\n populateCommonDb(ast, db);\n db.setShowData(ast.showData);\n ast.sections.map(db.addSection);\n};\n\nexport const parser: ParserDefinition = {\n parse: async (input: string): Promise => {\n const ast: Pie = await parse('pie', input);\n log.debug(ast);\n populateDb(ast, db);\n },\n};\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport type { PieStyleOptions } from './pieTypes.js';\n\nconst getStyles: DiagramStylesProvider = (options: PieStyleOptions) =>\n `\n .pieCircle{\n stroke: ${options.pieStrokeColor};\n stroke-width : ${options.pieStrokeWidth};\n opacity : ${options.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${options.pieOuterStrokeColor};\n stroke-width: ${options.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${options.pieTitleTextSize};\n fill: ${options.pieTitleTextColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.pieSectionTextColor};\n font-size:${options.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${options.pieLegendTextColor};\n font-family: ${options.fontFamily};\n font-size: ${options.pieLegendTextSize};\n }\n`;\n\nexport default getStyles;\n", "import type d3 from 'd3';\nimport { arc, pie as d3pie, scaleOrdinal } from 'd3';\nimport type { MermaidConfig, PieDiagramConfig } from '../../config.type.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DrawDefinition, SVG, SVGGroup } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport { cleanAndMerge, parseFontSize } from '../../utils.js';\nimport type { D3Section, PieDB, Sections } from './pieTypes.js';\n\nconst createPieArcs = (sections: Sections): d3.PieArcDatum[] => {\n const sum = [...sections.values()].reduce((acc, val) => acc + val, 0);\n\n const pieData: D3Section[] = [...sections.entries()]\n .map(([label, value]) => ({ label, value }))\n .filter((d) => (d.value / sum) * 100 >= 1); // Remove values < 1%\n\n const pie: d3.Pie = d3pie()\n .value((d) => d.value)\n .sort(null);\n return pie(pieData);\n};\n\n/**\n * Draws a Pie Chart with the data given in text.\n *\n * @param text - pie chart code\n * @param id - diagram id\n * @param _version - MermaidJS version from package.json.\n * @param diagObj - A standard diagram containing the DB and the text and type etc of the diagram.\n */\nexport const draw: DrawDefinition = (text, id, _version, diagObj) => {\n log.debug('rendering pie chart\\n' + text);\n const db = diagObj.db as PieDB;\n const globalConfig: MermaidConfig = getConfig();\n const pieConfig: Required = cleanAndMerge(db.getConfig(), globalConfig.pie);\n const MARGIN = 40;\n const LEGEND_RECT_SIZE = 18;\n const LEGEND_SPACING = 4;\n const height = 450;\n const pieWidth: number = height;\n const svg: SVG = selectSvgElement(id);\n const group: SVGGroup = svg.append('g');\n group.attr('transform', 'translate(' + pieWidth / 2 + ',' + height / 2 + ')');\n\n const { themeVariables } = globalConfig;\n let [outerStrokeWidth] = parseFontSize(themeVariables.pieOuterStrokeWidth);\n outerStrokeWidth ??= 2;\n\n const textPosition: number = pieConfig.textPosition;\n const radius: number = Math.min(pieWidth, height) / 2 - MARGIN;\n // Shape helper to build arcs:\n const arcGenerator: d3.Arc> = arc>()\n .innerRadius(0)\n .outerRadius(radius);\n const labelArcGenerator: d3.Arc> = arc<\n d3.PieArcDatum\n >()\n .innerRadius(radius * textPosition)\n .outerRadius(radius * textPosition);\n\n group\n .append('circle')\n .attr('cx', 0)\n .attr('cy', 0)\n .attr('r', radius + outerStrokeWidth / 2)\n .attr('class', 'pieOuterCircle');\n\n const sections: Sections = db.getSections();\n const arcs: d3.PieArcDatum[] = createPieArcs(sections);\n\n const myGeneratedColors = [\n themeVariables.pie1,\n themeVariables.pie2,\n themeVariables.pie3,\n themeVariables.pie4,\n themeVariables.pie5,\n themeVariables.pie6,\n themeVariables.pie7,\n themeVariables.pie8,\n themeVariables.pie9,\n themeVariables.pie10,\n themeVariables.pie11,\n themeVariables.pie12,\n ];\n let sum = 0;\n sections.forEach((section) => {\n sum += section;\n });\n\n // Filter out arcs that would render as 0%\n const filteredArcs = arcs.filter((datum) => ((datum.data.value / sum) * 100).toFixed(0) !== '0');\n\n // Set the color scale\n const color: d3.ScaleOrdinal = scaleOrdinal(myGeneratedColors).domain([\n ...sections.keys(),\n ]);\n\n // Build the pie chart: each part of the pie is a path that we build using the arc function.\n group\n .selectAll('mySlices')\n .data(filteredArcs)\n .enter()\n .append('path')\n .attr('d', arcGenerator)\n .attr('fill', (datum: d3.PieArcDatum) => {\n return color(datum.data.label);\n })\n .attr('class', 'pieCircle');\n\n // Now add the percentage.\n // Use the centroid method to get the best coordinates.\n group\n .selectAll('mySlices')\n .data(filteredArcs)\n .enter()\n .append('text')\n .text((datum: d3.PieArcDatum): string => {\n return ((datum.data.value / sum) * 100).toFixed(0) + '%';\n })\n .attr('transform', (datum: d3.PieArcDatum): string => {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return 'translate(' + labelArcGenerator.centroid(datum) + ')';\n })\n .style('text-anchor', 'middle')\n .attr('class', 'slice');\n\n const titleText = group\n .append('text')\n .text(db.getDiagramTitle())\n .attr('x', 0)\n .attr('y', -(height - 50) / 2)\n .attr('class', 'pieTitleText');\n\n // Add the legends/annotations for each section\n const allSectionData: D3Section[] = [...sections.entries()].map(([label, value]) => ({\n label,\n value,\n }));\n\n const legend = group\n .selectAll('.legend')\n .data(allSectionData)\n .enter()\n .append('g')\n .attr('class', 'legend')\n .attr('transform', (_datum, index: number): string => {\n const height = LEGEND_RECT_SIZE + LEGEND_SPACING;\n const offset = (height * allSectionData.length) / 2;\n const horizontal = 12 * LEGEND_RECT_SIZE;\n const vertical = index * height - offset;\n return 'translate(' + horizontal + ',' + vertical + ')';\n });\n\n legend\n .append('rect')\n .attr('width', LEGEND_RECT_SIZE)\n .attr('height', LEGEND_RECT_SIZE)\n .style('fill', (d) => color(d.label))\n .style('stroke', (d) => color(d.label));\n\n legend\n .append('text')\n .attr('x', LEGEND_RECT_SIZE + LEGEND_SPACING)\n .attr('y', LEGEND_RECT_SIZE - LEGEND_SPACING)\n .text((d) => {\n if (db.getShowData()) {\n return `${d.label} [${d.value}]`;\n }\n return d.label;\n });\n\n const longestTextWidth = Math.max(\n ...legend\n .selectAll('text')\n .nodes()\n .map((node) => (node as Element)?.getBoundingClientRect().width ?? 0)\n );\n\n const chartAndLegendWidth =\n pieWidth + MARGIN + LEGEND_RECT_SIZE + LEGEND_SPACING + longestTextWidth;\n\n // Measure title width to ensure it's not clipped\n const titleWidth = (titleText.node() as Element)?.getBoundingClientRect().width ?? 0;\n\n // Title is centered at pieWidth/2 in SVG coords \u2014 expand viewBox to contain it\n const titleLeft = pieWidth / 2 - titleWidth / 2;\n const titleRight = pieWidth / 2 + titleWidth / 2;\n\n const viewBoxX = Math.min(0, titleLeft);\n const viewBoxRight = Math.max(chartAndLegendWidth, titleRight);\n const totalWidth = viewBoxRight - viewBoxX;\n\n svg.attr('viewBox', `${viewBoxX} 0 ${totalWidth} ${height}`);\n configureSvgSize(svg, height, totalWidth, pieConfig.useMaxWidth);\n};\n\nexport const renderer = { draw };\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { parser } from './pieParser.js';\nimport { db } from './pieDb.js';\nimport styles from './pieStyles.js';\nimport { renderer } from './pieRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n};\n"], + "mappings": "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", + "names": ["DEFAULT_PIE_CONFIG", "defaultConfig_default", "DEFAULT_PIE_DB", "sections", "showData", "config", "getConfig", "__name", "clear", "addSection", "label", "value", "log", "getSections", "setShowData", "toggle", "getShowData", "db", "setDiagramTitle", "getDiagramTitle", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "populateDb", "__name", "ast", "db", "populateCommonDb", "parser", "input", "parse", "log", "getStyles", "__name", "options", "pieStyles_default", "createPieArcs", "__name", "sections", "sum", "acc", "val", "pieData", "label", "value", "d", "pie_default", "draw", "text", "id", "_version", "diagObj", "log", "db", "globalConfig", "getConfig", "pieConfig", "cleanAndMerge", "MARGIN", "LEGEND_RECT_SIZE", "LEGEND_SPACING", "height", "pieWidth", "svg", "selectSvgElement", "group", "themeVariables", "outerStrokeWidth", "parseFontSize", "textPosition", "radius", "arcGenerator", "arc_default", "labelArcGenerator", "arcs", "myGeneratedColors", "section", "filteredArcs", "datum", "color", "ordinal", "titleText", "allSectionData", "legend", "_datum", "index", "offset", "horizontal", "vertical", "longestTextWidth", "node", "chartAndLegendWidth", "titleWidth", "titleLeft", "titleRight", "viewBoxX", "totalWidth", "configureSvgSize", "renderer", "diagram", "parser", "db", "renderer", "pieStyles_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-O4VNXU6G.mjs b/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-O4VNXU6G.mjs deleted file mode 100644 index beef833..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-O4VNXU6G.mjs +++ /dev/null @@ -1,30 +0,0 @@ -import{a as K}from"./chunk-AEOMTBSW.mjs";import{a as J}from"./chunk-TJ4WWVTA.mjs";import"./chunk-AHTCUU5T.mjs";import"./chunk-JVPIJFVP.mjs";import"./chunk-SYGLAQYM.mjs";import"./chunk-NHJX6F6M.mjs";import"./chunk-F3E5R7LK.mjs";import"./chunk-ZX4KS3OZ.mjs";import{a as Q}from"./chunk-D4HHKWPY.mjs";import{k as Z,l as H}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{N as _,Q as z,R as B,S as M,T as W,U as I,V as L,W as N,Y as q,j}from"./chunk-3UWU4A3N.mjs";import{F as C,I as U,b as p,m as V}from"./chunk-MGPAVIPZ.mjs";import"./chunk-MFSPT3DZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as r}from"./chunk-VELTKBKT.mjs";var X=j.pie,w={sections:new Map,showData:!1,config:X},f=w.sections,A=w.showData,pe=structuredClone(X),me=r(()=>structuredClone(pe),"getConfig"),de=r(()=>{f=new Map,A=w.showData,z()},"clear"),fe=r(({label:e,value:i})=>{if(i<0)throw new Error(`"${e}" has invalid value: ${i}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);f.has(e)||(f.set(e,i),p.debug(`added new section: ${e}, with value: ${i}`))},"addSection"),ge=r(()=>f,"getSections"),De=r(e=>{A=e},"setShowData"),ue=r(()=>A,"getShowData"),g={getConfig:me,clear:de,setDiagramTitle:L,getDiagramTitle:N,setAccTitle:B,getAccTitle:M,setAccDescription:W,getAccDescription:I,addSection:fe,getSections:ge,setShowData:De,getShowData:ue};var Se=r((e,i)=>{K(e,i),i.setShowData(e.showData),e.sections.map(i.addSection)},"populateDb"),Y={parse:r(async e=>{let i=await J("pie",e);p.debug(i),Se(i,g)},"parse")};var ye=r(e=>` - .pieCircle{ - stroke: ${e.pieStrokeColor}; - stroke-width : ${e.pieStrokeWidth}; - opacity : ${e.pieOpacity}; - } - .pieOuterCircle{ - stroke: ${e.pieOuterStrokeColor}; - stroke-width: ${e.pieOuterStrokeWidth}; - fill: none; - } - .pieTitleText { - text-anchor: middle; - font-size: ${e.pieTitleTextSize}; - fill: ${e.pieTitleTextColor}; - font-family: ${e.fontFamily}; - } - .slice { - font-family: ${e.fontFamily}; - fill: ${e.pieSectionTextColor}; - font-size:${e.pieSectionTextSize}; - // fill: white; - } - .legend text { - fill: ${e.pieLegendTextColor}; - font-family: ${e.fontFamily}; - font-size: ${e.pieLegendTextSize}; - } -`,"getStyles"),ee=ye;var he=r(e=>{let i=[...e.values()].reduce((o,n)=>o+n,0),T=[...e.entries()].map(([o,n])=>({label:o,value:n})).filter(o=>o.value/i*100>=1).sort((o,n)=>n.value-o.value);return U().value(o=>o.value)(T)},"createPieArcs"),Pe=r((e,i,T,v)=>{p.debug(`rendering pie chart -`+e);let o=v.db,n=q(),$=H(o.getConfig(),n.pie),b=40,s=18,m=4,c=450,D=c,u=Q(i),l=u.append("g");l.attr("transform","translate("+D/2+","+c/2+")");let{themeVariables:a}=n,[E]=Z(a.pieOuterStrokeWidth);E??=2;let G=$.textPosition,d=Math.min(D,c)/2-b,ie=C().innerRadius(0).outerRadius(d),re=C().innerRadius(d*G).outerRadius(d*G);l.append("circle").attr("cx",0).attr("cy",0).attr("r",d+E/2).attr("class","pieOuterCircle");let S=o.getSections(),oe=he(S),ae=[a.pie1,a.pie2,a.pie3,a.pie4,a.pie5,a.pie6,a.pie7,a.pie8,a.pie9,a.pie10,a.pie11,a.pie12],y=0;S.forEach(t=>{y+=t});let k=oe.filter(t=>(t.data.value/y*100).toFixed(0)!=="0"),h=V(ae);l.selectAll("mySlices").data(k).enter().append("path").attr("d",ie).attr("fill",t=>h(t.data.label)).attr("class","pieCircle"),l.selectAll("mySlices").data(k).enter().append("text").text(t=>(t.data.value/y*100).toFixed(0)+"%").attr("transform",t=>"translate("+re.centroid(t)+")").style("text-anchor","middle").attr("class","slice"),l.append("text").text(o.getDiagramTitle()).attr("x",0).attr("y",-(c-50)/2).attr("class","pieTitleText");let F=[...S.entries()].map(([t,x])=>({label:t,value:x})),P=l.selectAll(".legend").data(F).enter().append("g").attr("class","legend").attr("transform",(t,x)=>{let O=s+m,se=O*F.length/2,ce=12*s,le=x*O-se;return"translate("+ce+","+le+")"});P.append("rect").attr("width",s).attr("height",s).style("fill",t=>h(t.label)).style("stroke",t=>h(t.label)),P.append("text").attr("x",s+m).attr("y",s-m).text(t=>o.getShowData()?`${t.label} [${t.value}]`:t.label);let ne=Math.max(...P.selectAll("text").nodes().map(t=>t?.getBoundingClientRect().width??0)),R=D+b+s+m+ne;u.attr("viewBox",`0 0 ${R} ${c}`),_(u,c,R,$.useMaxWidth)},"draw"),te={draw:Pe};var Ue={parser:Y,db:g,renderer:te,styles:ee};export{Ue as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-O4VNXU6G.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-O4VNXU6G.mjs.map deleted file mode 100644 index 2af085f..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/pieDiagram-O4VNXU6G.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/pie/pieDb.ts", "../../../src/diagrams/pie/pieParser.ts", "../../../src/diagrams/pie/pieStyles.ts", "../../../src/diagrams/pie/pieRenderer.ts", "../../../src/diagrams/pie/pieDiagram.ts"], - "sourcesContent": ["import { log } from '../../logger.js';\nimport {\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../common/commonDb.js';\nimport type { PieFields, PieDB, Sections, D3Section } from './pieTypes.js';\nimport type { RequiredDeep } from 'type-fest';\nimport type { PieDiagramConfig } from '../../config.type.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\n\nexport const DEFAULT_PIE_CONFIG: Required = DEFAULT_CONFIG.pie;\n\nexport const DEFAULT_PIE_DB: RequiredDeep = {\n sections: new Map(),\n showData: false,\n config: DEFAULT_PIE_CONFIG,\n} as const;\n\nlet sections: Sections = DEFAULT_PIE_DB.sections;\nlet showData: boolean = DEFAULT_PIE_DB.showData;\nconst config: Required = structuredClone(DEFAULT_PIE_CONFIG);\n\nconst getConfig = (): Required => structuredClone(config);\n\nconst clear = (): void => {\n sections = new Map();\n showData = DEFAULT_PIE_DB.showData;\n commonClear();\n};\n\nconst addSection = ({ label, value }: D3Section): void => {\n if (value < 0) {\n throw new Error(\n `\"${label}\" has invalid value: ${value}. Negative values are not allowed in pie charts. All slice values must be >= 0.`\n );\n }\n if (!sections.has(label)) {\n sections.set(label, value);\n log.debug(`added new section: ${label}, with value: ${value}`);\n }\n};\n\nconst getSections = (): Sections => sections;\n\nconst setShowData = (toggle: boolean): void => {\n showData = toggle;\n};\n\nconst getShowData = (): boolean => showData;\n\nexport const db: PieDB = {\n getConfig,\n\n clear,\n setDiagramTitle,\n getDiagramTitle,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n\n addSection,\n getSections,\n setShowData,\n getShowData,\n};\n", "import type { Pie } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport { log } from '../../logger.js';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport type { PieDB } from './pieTypes.js';\nimport { db } from './pieDb.js';\n\nconst populateDb = (ast: Pie, db: PieDB) => {\n populateCommonDb(ast, db);\n db.setShowData(ast.showData);\n ast.sections.map(db.addSection);\n};\n\nexport const parser: ParserDefinition = {\n parse: async (input: string): Promise => {\n const ast: Pie = await parse('pie', input);\n log.debug(ast);\n populateDb(ast, db);\n },\n};\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport type { PieStyleOptions } from './pieTypes.js';\n\nconst getStyles: DiagramStylesProvider = (options: PieStyleOptions) =>\n `\n .pieCircle{\n stroke: ${options.pieStrokeColor};\n stroke-width : ${options.pieStrokeWidth};\n opacity : ${options.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${options.pieOuterStrokeColor};\n stroke-width: ${options.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${options.pieTitleTextSize};\n fill: ${options.pieTitleTextColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.pieSectionTextColor};\n font-size:${options.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${options.pieLegendTextColor};\n font-family: ${options.fontFamily};\n font-size: ${options.pieLegendTextSize};\n }\n`;\n\nexport default getStyles;\n", "import type d3 from 'd3';\nimport { arc, pie as d3pie, scaleOrdinal } from 'd3';\nimport type { MermaidConfig, PieDiagramConfig } from '../../config.type.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DrawDefinition, SVG, SVGGroup } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport { cleanAndMerge, parseFontSize } from '../../utils.js';\nimport type { D3Section, PieDB, Sections } from './pieTypes.js';\n\nconst createPieArcs = (sections: Sections): d3.PieArcDatum[] => {\n const sum = [...sections.values()].reduce((acc, val) => acc + val, 0);\n\n const pieData: D3Section[] = [...sections.entries()]\n .map(([label, value]) => ({ label, value }))\n .filter((d) => (d.value / sum) * 100 >= 1) // Remove values < 1%\n .sort((a, b) => b.value - a.value);\n\n const pie: d3.Pie = d3pie().value((d) => d.value);\n return pie(pieData);\n};\n\n/**\n * Draws a Pie Chart with the data given in text.\n *\n * @param text - pie chart code\n * @param id - diagram id\n * @param _version - MermaidJS version from package.json.\n * @param diagObj - A standard diagram containing the DB and the text and type etc of the diagram.\n */\nexport const draw: DrawDefinition = (text, id, _version, diagObj) => {\n log.debug('rendering pie chart\\n' + text);\n const db = diagObj.db as PieDB;\n const globalConfig: MermaidConfig = getConfig();\n const pieConfig: Required = cleanAndMerge(db.getConfig(), globalConfig.pie);\n const MARGIN = 40;\n const LEGEND_RECT_SIZE = 18;\n const LEGEND_SPACING = 4;\n const height = 450;\n const pieWidth: number = height;\n const svg: SVG = selectSvgElement(id);\n const group: SVGGroup = svg.append('g');\n group.attr('transform', 'translate(' + pieWidth / 2 + ',' + height / 2 + ')');\n\n const { themeVariables } = globalConfig;\n let [outerStrokeWidth] = parseFontSize(themeVariables.pieOuterStrokeWidth);\n outerStrokeWidth ??= 2;\n\n const textPosition: number = pieConfig.textPosition;\n const radius: number = Math.min(pieWidth, height) / 2 - MARGIN;\n // Shape helper to build arcs:\n const arcGenerator: d3.Arc> = arc>()\n .innerRadius(0)\n .outerRadius(radius);\n const labelArcGenerator: d3.Arc> = arc<\n d3.PieArcDatum\n >()\n .innerRadius(radius * textPosition)\n .outerRadius(radius * textPosition);\n\n group\n .append('circle')\n .attr('cx', 0)\n .attr('cy', 0)\n .attr('r', radius + outerStrokeWidth / 2)\n .attr('class', 'pieOuterCircle');\n\n const sections: Sections = db.getSections();\n const arcs: d3.PieArcDatum[] = createPieArcs(sections);\n\n const myGeneratedColors = [\n themeVariables.pie1,\n themeVariables.pie2,\n themeVariables.pie3,\n themeVariables.pie4,\n themeVariables.pie5,\n themeVariables.pie6,\n themeVariables.pie7,\n themeVariables.pie8,\n themeVariables.pie9,\n themeVariables.pie10,\n themeVariables.pie11,\n themeVariables.pie12,\n ];\n let sum = 0;\n sections.forEach((section) => {\n sum += section;\n });\n\n // Filter out arcs that would render as 0%\n const filteredArcs = arcs.filter((datum) => ((datum.data.value / sum) * 100).toFixed(0) !== '0');\n\n // Set the color scale\n const color: d3.ScaleOrdinal = scaleOrdinal(myGeneratedColors);\n\n // Build the pie chart: each part of the pie is a path that we build using the arc function.\n group\n .selectAll('mySlices')\n .data(filteredArcs)\n .enter()\n .append('path')\n .attr('d', arcGenerator)\n .attr('fill', (datum: d3.PieArcDatum) => {\n return color(datum.data.label);\n })\n .attr('class', 'pieCircle');\n\n // Now add the percentage.\n // Use the centroid method to get the best coordinates.\n group\n .selectAll('mySlices')\n .data(filteredArcs)\n .enter()\n .append('text')\n .text((datum: d3.PieArcDatum): string => {\n return ((datum.data.value / sum) * 100).toFixed(0) + '%';\n })\n .attr('transform', (datum: d3.PieArcDatum): string => {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return 'translate(' + labelArcGenerator.centroid(datum) + ')';\n })\n .style('text-anchor', 'middle')\n .attr('class', 'slice');\n\n group\n .append('text')\n .text(db.getDiagramTitle())\n .attr('x', 0)\n .attr('y', -(height - 50) / 2)\n .attr('class', 'pieTitleText');\n\n // Add the legends/annotations for each section\n const allSectionData: D3Section[] = [...sections.entries()].map(([label, value]) => ({\n label,\n value,\n }));\n\n const legend = group\n .selectAll('.legend')\n .data(allSectionData)\n .enter()\n .append('g')\n .attr('class', 'legend')\n .attr('transform', (_datum, index: number): string => {\n const height = LEGEND_RECT_SIZE + LEGEND_SPACING;\n const offset = (height * allSectionData.length) / 2;\n const horizontal = 12 * LEGEND_RECT_SIZE;\n const vertical = index * height - offset;\n return 'translate(' + horizontal + ',' + vertical + ')';\n });\n\n legend\n .append('rect')\n .attr('width', LEGEND_RECT_SIZE)\n .attr('height', LEGEND_RECT_SIZE)\n .style('fill', (d) => color(d.label))\n .style('stroke', (d) => color(d.label));\n\n legend\n .append('text')\n .attr('x', LEGEND_RECT_SIZE + LEGEND_SPACING)\n .attr('y', LEGEND_RECT_SIZE - LEGEND_SPACING)\n .text((d) => {\n if (db.getShowData()) {\n return `${d.label} [${d.value}]`;\n }\n return d.label;\n });\n\n const longestTextWidth = Math.max(\n ...legend\n .selectAll('text')\n .nodes()\n .map((node) => (node as Element)?.getBoundingClientRect().width ?? 0)\n );\n\n const totalWidth = pieWidth + MARGIN + LEGEND_RECT_SIZE + LEGEND_SPACING + longestTextWidth;\n\n // Set viewBox\n svg.attr('viewBox', `0 0 ${totalWidth} ${height}`);\n configureSvgSize(svg, height, totalWidth, pieConfig.useMaxWidth);\n};\n\nexport const renderer = { draw };\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { parser } from './pieParser.js';\nimport { db } from './pieDb.js';\nimport styles from './pieStyles.js';\nimport { renderer } from './pieRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n};\n"], - "mappings": "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", - "names": ["DEFAULT_PIE_CONFIG", "defaultConfig_default", "DEFAULT_PIE_DB", "sections", "showData", "config", "getConfig", "__name", "clear", "addSection", "label", "value", "log", "getSections", "setShowData", "toggle", "getShowData", "db", "setDiagramTitle", "getDiagramTitle", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "populateDb", "__name", "ast", "db", "populateCommonDb", "parser", "input", "parse", "log", "getStyles", "__name", "options", "pieStyles_default", "createPieArcs", "__name", "sections", "sum", "acc", "val", "pieData", "label", "value", "d", "a", "b", "pie_default", "draw", "text", "id", "_version", "diagObj", "log", "db", "globalConfig", "getConfig", "pieConfig", "cleanAndMerge", "MARGIN", "LEGEND_RECT_SIZE", "LEGEND_SPACING", "height", "pieWidth", "svg", "selectSvgElement", "group", "themeVariables", "outerStrokeWidth", "parseFontSize", "textPosition", "radius", "arcGenerator", "arc_default", "labelArcGenerator", "arcs", "myGeneratedColors", "section", "filteredArcs", "datum", "color", "ordinal", "allSectionData", "legend", "_datum", "index", "offset", "horizontal", "vertical", "longestTextWidth", "node", "totalWidth", "configureSvgSize", "renderer", "diagram", "parser", "db", "renderer", "pieStyles_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-DYU4IJOS.mjs b/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-DYU4IJOS.mjs deleted file mode 100644 index c11978e..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-DYU4IJOS.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import{N as re,Q as se,R as oe,S as le,T as de,U as ue,V as ce,W as vt,Y as xt,h as ie,j as L,z as ne}from"./chunk-3UWU4A3N.mjs";import{b as lt,h as bt,o as Dt}from"./chunk-MGPAVIPZ.mjs";import{a as r}from"./chunk-VELTKBKT.mjs";var Et=(function(){var t=r(function(X,o,l,x){for(l=l||{},x=X.length;x--;l[X[x]]=o);return l},"o"),n=[1,3],f=[1,4],u=[1,5],c=[1,6],g=[1,7],y=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],S=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],i=[55,56,57],A=[2,36],h=[1,37],T=[1,36],m=[1,38],b=[1,35],q=[1,43],p=[1,41],K=[1,14],dt=[1,23],ft=[1,18],pt=[1,19],gt=[1,20],ut=[1,21],kt=[1,22],ct=[1,24],a=[1,25],Bt=[1,26],wt=[1,27],It=[1,28],Ot=[1,29],W=[1,32],N=[1,33],P=[1,34],_=[1,39],F=[1,40],Q=[1,42],C=[1,44],R=[1,62],H=[1,61],v=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],Wt=[1,65],Nt=[1,66],Rt=[1,67],Ht=[1,68],Ut=[1,69],jt=[1,70],Xt=[1,71],Mt=[1,72],Yt=[1,73],Gt=[1,74],Kt=[1,75],Zt=[1,76],B=[4,5,6,7,8,9,10,11,12,13,14,15,18],Z=[1,90],J=[1,91],$=[1,92],tt=[1,99],et=[1,93],at=[1,96],it=[1,94],nt=[1,95],rt=[1,97],st=[1,98],St=[1,102],Jt=[10,55,56,57],I=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],At={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:r(function(o,l,x,d,k,e,ht){var s=e.length-1;switch(k){case 23:this.$=e[s];break;case 24:this.$=e[s-1]+""+e[s];break;case 26:this.$=e[s-1]+e[s];break;case 27:this.$=[e[s].trim()];break;case 28:e[s-2].push(e[s].trim()),this.$=e[s-2];break;case 29:this.$=e[s-4],d.addClass(e[s-2],e[s]);break;case 37:this.$=[];break;case 42:this.$=e[s].trim(),d.setDiagramTitle(this.$);break;case 43:this.$=e[s].trim(),d.setAccTitle(this.$);break;case 44:case 45:this.$=e[s].trim(),d.setAccDescription(this.$);break;case 46:d.addSection(e[s].substr(8)),this.$=e[s].substr(8);break;case 47:d.addPoint(e[s-3],"",e[s-1],e[s],[]);break;case 48:d.addPoint(e[s-4],e[s-3],e[s-1],e[s],[]);break;case 49:d.addPoint(e[s-4],"",e[s-2],e[s-1],e[s]);break;case 50:d.addPoint(e[s-5],e[s-4],e[s-2],e[s-1],e[s]);break;case 51:d.setXAxisLeftText(e[s-2]),d.setXAxisRightText(e[s]);break;case 52:e[s-1].text+=" \u27F6 ",d.setXAxisLeftText(e[s-1]);break;case 53:d.setXAxisLeftText(e[s]);break;case 54:d.setYAxisBottomText(e[s-2]),d.setYAxisTopText(e[s]);break;case 55:e[s-1].text+=" \u27F6 ",d.setYAxisBottomText(e[s-1]);break;case 56:d.setYAxisBottomText(e[s]);break;case 57:d.setQuadrant1Text(e[s]);break;case 58:d.setQuadrant2Text(e[s]);break;case 59:d.setQuadrant3Text(e[s]);break;case 60:d.setQuadrant4Text(e[s]);break;case 64:this.$={text:e[s],type:"text"};break;case 65:this.$={text:e[s-1].text+""+e[s],type:e[s-1].type};break;case 66:this.$={text:e[s],type:"text"};break;case 67:this.$={text:e[s],type:"markdown"};break;case 68:this.$=e[s];break;case 69:this.$=e[s-1]+""+e[s];break}},"anonymous"),table:[{18:n,26:1,27:2,28:f,55:u,56:c,57:g},{1:[3]},{18:n,26:8,27:2,28:f,55:u,56:c,57:g},{18:n,26:9,27:2,28:f,55:u,56:c,57:g},t(y,[2,33],{29:10}),t(S,[2,61]),t(S,[2,62]),t(S,[2,63]),{1:[2,30]},{1:[2,31]},t(i,A,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:h,5:T,10:m,12:b,13:q,14:p,18:K,25:dt,35:ft,37:pt,39:gt,41:ut,42:kt,48:ct,50:a,51:Bt,52:wt,53:It,54:Ot,60:W,61:N,63:P,64:_,65:F,66:Q,67:C}),t(y,[2,34]),{27:45,55:u,56:c,57:g},t(i,[2,37]),t(i,A,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:h,5:T,10:m,12:b,13:q,14:p,18:K,25:dt,35:ft,37:pt,39:gt,41:ut,42:kt,48:ct,50:a,51:Bt,52:wt,53:It,54:Ot,60:W,61:N,63:P,64:_,65:F,66:Q,67:C}),t(i,[2,39]),t(i,[2,40]),t(i,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(i,[2,45]),t(i,[2,46]),{18:[1,50]},{4:h,5:T,10:m,12:b,13:q,14:p,43:51,58:31,60:W,61:N,63:P,64:_,65:F,66:Q,67:C},{4:h,5:T,10:m,12:b,13:q,14:p,43:52,58:31,60:W,61:N,63:P,64:_,65:F,66:Q,67:C},{4:h,5:T,10:m,12:b,13:q,14:p,43:53,58:31,60:W,61:N,63:P,64:_,65:F,66:Q,67:C},{4:h,5:T,10:m,12:b,13:q,14:p,43:54,58:31,60:W,61:N,63:P,64:_,65:F,66:Q,67:C},{4:h,5:T,10:m,12:b,13:q,14:p,43:55,58:31,60:W,61:N,63:P,64:_,65:F,66:Q,67:C},{4:h,5:T,10:m,12:b,13:q,14:p,43:56,58:31,60:W,61:N,63:P,64:_,65:F,66:Q,67:C},{4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,44:[1,57],47:[1,58],58:60,59:59,63:P,64:_,65:F,66:Q,67:C},t(v,[2,64]),t(v,[2,66]),t(v,[2,67]),t(v,[2,70]),t(v,[2,71]),t(v,[2,72]),t(v,[2,73]),t(v,[2,74]),t(v,[2,75]),t(v,[2,76]),t(v,[2,77]),t(v,[2,78]),t(v,[2,79]),t(v,[2,80]),t(y,[2,35]),t(i,[2,38]),t(i,[2,42]),t(i,[2,43]),t(i,[2,44]),{3:64,4:Wt,5:Nt,6:Rt,7:Ht,8:Ut,9:jt,10:Xt,11:Mt,12:Yt,13:Gt,14:Kt,15:Zt,21:63},t(i,[2,53],{59:59,58:60,4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,49:[1,77],63:P,64:_,65:F,66:Q,67:C}),t(i,[2,56],{59:59,58:60,4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,49:[1,78],63:P,64:_,65:F,66:Q,67:C}),t(i,[2,57],{59:59,58:60,4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,63:P,64:_,65:F,66:Q,67:C}),t(i,[2,58],{59:59,58:60,4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,63:P,64:_,65:F,66:Q,67:C}),t(i,[2,59],{59:59,58:60,4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,63:P,64:_,65:F,66:Q,67:C}),t(i,[2,60],{59:59,58:60,4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,63:P,64:_,65:F,66:Q,67:C}),{45:[1,79]},{44:[1,80]},t(v,[2,65]),t(v,[2,81]),t(v,[2,82]),t(v,[2,83]),{3:82,4:Wt,5:Nt,6:Rt,7:Ht,8:Ut,9:jt,10:Xt,11:Mt,12:Yt,13:Gt,14:Kt,15:Zt,18:[1,81]},t(B,[2,23]),t(B,[2,1]),t(B,[2,2]),t(B,[2,3]),t(B,[2,4]),t(B,[2,5]),t(B,[2,6]),t(B,[2,7]),t(B,[2,8]),t(B,[2,9]),t(B,[2,10]),t(B,[2,11]),t(B,[2,12]),t(i,[2,52],{58:31,43:83,4:h,5:T,10:m,12:b,13:q,14:p,60:W,61:N,63:P,64:_,65:F,66:Q,67:C}),t(i,[2,55],{58:31,43:84,4:h,5:T,10:m,12:b,13:q,14:p,60:W,61:N,63:P,64:_,65:F,66:Q,67:C}),{46:[1,85]},{45:[1,86]},{4:Z,5:J,6:$,8:tt,11:et,13:at,16:89,17:it,18:nt,19:rt,20:st,22:88,23:87},t(B,[2,24]),t(i,[2,51],{59:59,58:60,4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,63:P,64:_,65:F,66:Q,67:C}),t(i,[2,54],{59:59,58:60,4:h,5:T,8:R,10:m,12:b,13:q,14:p,18:H,63:P,64:_,65:F,66:Q,67:C}),t(i,[2,47],{22:88,16:89,23:100,4:Z,5:J,6:$,8:tt,11:et,13:at,17:it,18:nt,19:rt,20:st}),{46:[1,101]},t(i,[2,29],{10:St}),t(Jt,[2,27],{16:103,4:Z,5:J,6:$,8:tt,11:et,13:at,17:it,18:nt,19:rt,20:st}),t(I,[2,25]),t(I,[2,13]),t(I,[2,14]),t(I,[2,15]),t(I,[2,16]),t(I,[2,17]),t(I,[2,18]),t(I,[2,19]),t(I,[2,20]),t(I,[2,21]),t(I,[2,22]),t(i,[2,49],{10:St}),t(i,[2,48],{22:88,16:89,23:104,4:Z,5:J,6:$,8:tt,11:et,13:at,17:it,18:nt,19:rt,20:st}),{4:Z,5:J,6:$,8:tt,11:et,13:at,16:89,17:it,18:nt,19:rt,20:st,22:105},t(I,[2,26]),t(i,[2,50],{10:St}),t(Jt,[2,28],{16:103,4:Z,5:J,6:$,8:tt,11:et,13:at,17:it,18:nt,19:rt,20:st})],defaultActions:{8:[2,30],9:[2,31]},parseError:r(function(o,l){if(l.recoverable)this.trace(o);else{var x=new Error(o);throw x.hash=l,x}},"parseError"),parse:r(function(o){var l=this,x=[0],d=[],k=[null],e=[],ht=this.table,s="",yt=0,$t=0,te=0,Te=2,ee=1,me=e.slice.call(arguments,1),D=Object.create(this.lexer),M={yy:{}};for(var _t in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_t)&&(M.yy[_t]=this.yy[_t]);D.setInput(o,M.yy),M.yy.lexer=D,M.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Ft=D.yylloc;e.push(Ft);var be=D.options&&D.options.ranges;typeof M.yy.parseError=="function"?this.parseError=M.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ie(w){x.length=x.length-2*w,k.length=k.length-w,e.length=e.length-w}r(Ie,"popStack");function qe(){var w;return w=d.pop()||D.lex()||ee,typeof w!="number"&&(w instanceof Array&&(d=w,w=d.pop()),w=l.symbols_[w]||w),w}r(qe,"lex");for(var z,Qt,Y,O,Oe,Ct,ot={},Tt,U,ae,mt;;){if(Y=x[x.length-1],this.defaultActions[Y]?O=this.defaultActions[Y]:((z===null||typeof z>"u")&&(z=qe()),O=ht[Y]&&ht[Y][z]),typeof O>"u"||!O.length||!O[0]){var Lt="";mt=[];for(Tt in ht[Y])this.terminals_[Tt]&&Tt>Te&&mt.push("'"+this.terminals_[Tt]+"'");D.showPosition?Lt="Parse error on line "+(yt+1)+`: -`+D.showPosition()+` -Expecting `+mt.join(", ")+", got '"+(this.terminals_[z]||z)+"'":Lt="Parse error on line "+(yt+1)+": Unexpected "+(z==ee?"end of input":"'"+(this.terminals_[z]||z)+"'"),this.parseError(Lt,{text:D.match,token:this.terminals_[z]||z,line:D.yylineno,loc:Ft,expected:mt})}if(O[0]instanceof Array&&O.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Y+", token: "+z);switch(O[0]){case 1:x.push(z),k.push(D.yytext),e.push(D.yylloc),x.push(O[1]),z=null,Qt?(z=Qt,Qt=null):($t=D.yyleng,s=D.yytext,yt=D.yylineno,Ft=D.yylloc,te>0&&te--);break;case 2:if(U=this.productions_[O[1]][1],ot.$=k[k.length-U],ot._$={first_line:e[e.length-(U||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(U||1)].first_column,last_column:e[e.length-1].last_column},be&&(ot._$.range=[e[e.length-(U||1)].range[0],e[e.length-1].range[1]]),Ct=this.performAction.apply(ot,[s,$t,yt,M.yy,O[1],k,e].concat(me)),typeof Ct<"u")return Ct;U&&(x=x.slice(0,-1*U*2),k=k.slice(0,-1*U),e=e.slice(0,-1*U)),x.push(this.productions_[O[1]][0]),k.push(ot.$),e.push(ot._$),ae=ht[x[x.length-2]][x[x.length-1]],x.push(ae);break;case 3:return!0}}return!0},"parse")},ye=(function(){var X={EOF:1,parseError:r(function(l,x){if(this.yy.parser)this.yy.parser.parseError(l,x);else throw new Error(l)},"parseError"),setInput:r(function(o,l){return this.yy=l||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:r(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var l=o.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:r(function(o){var l=o.length,x=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),x.length-1&&(this.yylineno-=x.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:x?(x.length===d.length?this.yylloc.first_column:0)+d[d.length-x.length].length-x[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(o){this.unput(this.match.slice(o))},"less"),pastInput:r(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var o=this.pastInput(),l=new Array(o.length+1).join("-");return o+this.upcomingInput()+` -`+l+"^"},"showPosition"),test_match:r(function(o,l){var x,d,k;if(this.options.backtrack_lexer&&(k={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(k.yylloc.range=this.yylloc.range.slice(0))),d=o[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],x=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),x)return x;if(this._backtrack){for(var e in k)this[e]=k[e];return!1}return!1},"test_match"),next:r(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,l,x,d;this._more||(this.yytext="",this.match="");for(var k=this._currentRules(),e=0;el[0].length)){if(l=x,d=e,this.options.backtrack_lexer){if(o=this.test_match(x,k[e]),o!==!1)return o;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(o=this.test_match(l,k[d]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:r(function(){var l=this.next();return l||this.lex()},"lex"),begin:r(function(l){this.conditionStack.push(l)},"begin"),popState:r(function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:r(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:r(function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},"topState"),pushState:r(function(l){this.begin(l)},"pushState"),stateStackSize:r(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:r(function(l,x,d,k){var e=k;switch(d){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:return 65;case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};return X})();At.lexer=ye;function Pt(){this.yy={}}return r(Pt,"Parser"),Pt.prototype=At,At.Parser=Pt,new Pt})();Et.parser=Et;var he=Et;var V=ie(),qt=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{r(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:L.quadrantChart?.chartWidth||500,chartWidth:L.quadrantChart?.chartHeight||500,titlePadding:L.quadrantChart?.titlePadding||10,titleFontSize:L.quadrantChart?.titleFontSize||20,quadrantPadding:L.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:L.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:L.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:L.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:L.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:L.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:L.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:L.quadrantChart?.pointTextPadding||5,pointLabelFontSize:L.quadrantChart?.pointLabelFontSize||12,pointRadius:L.quadrantChart?.pointRadius||5,xAxisPosition:L.quadrantChart?.xAxisPosition||"top",yAxisPosition:L.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:L.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:L.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:V.quadrant1Fill,quadrant2Fill:V.quadrant2Fill,quadrant3Fill:V.quadrant3Fill,quadrant4Fill:V.quadrant4Fill,quadrant1TextFill:V.quadrant1TextFill,quadrant2TextFill:V.quadrant2TextFill,quadrant3TextFill:V.quadrant3TextFill,quadrant4TextFill:V.quadrant4TextFill,quadrantPointFill:V.quadrantPointFill,quadrantPointTextFill:V.quadrantPointTextFill,quadrantXAxisTextFill:V.quadrantXAxisTextFill,quadrantYAxisTextFill:V.quadrantYAxisTextFill,quadrantTitleFill:V.quadrantTitleFill,quadrantInternalBorderStrokeFill:V.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:V.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,lt.info("clear called")}setData(n){this.data={...this.data,...n}}addPoints(n){this.data.points=[...n,...this.data.points]}addClass(n,f){this.classes.set(n,f)}setConfig(n){lt.trace("setConfig called with: ",n),this.config={...this.config,...n}}setThemeConfig(n){lt.trace("setThemeConfig called with: ",n),this.themeConfig={...this.themeConfig,...n}}calculateSpace(n,f,u,c){let g=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,y={top:n==="top"&&f?g:0,bottom:n==="bottom"&&f?g:0},S=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,i={left:this.config.yAxisPosition==="left"&&u?S:0,right:this.config.yAxisPosition==="right"&&u?S:0},A=this.config.titleFontSize+this.config.titlePadding*2,h={top:c?A:0},T=this.config.quadrantPadding+i.left,m=this.config.quadrantPadding+y.top+h.top,b=this.config.chartWidth-this.config.quadrantPadding*2-i.left-i.right,q=this.config.chartHeight-this.config.quadrantPadding*2-y.top-y.bottom-h.top,p=b/2,K=q/2;return{xAxisSpace:y,yAxisSpace:i,titleSpace:h,quadrantSpace:{quadrantLeft:T,quadrantTop:m,quadrantWidth:b,quadrantHalfWidth:p,quadrantHeight:q,quadrantHalfHeight:K}}}getAxisLabels(n,f,u,c){let{quadrantSpace:g,titleSpace:y}=c,{quadrantHalfHeight:S,quadrantHeight:i,quadrantLeft:A,quadrantHalfWidth:h,quadrantTop:T,quadrantWidth:m}=g,b=!!this.data.xAxisRightText,q=!!this.data.yAxisTopText,p=[];return this.data.xAxisLeftText&&f&&p.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:A+(b?h/2:0),y:n==="top"?this.config.xAxisLabelPadding+y.top:this.config.xAxisLabelPadding+T+i+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:b?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&f&&p.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:A+h+(b?h/2:0),y:n==="top"?this.config.xAxisLabelPadding+y.top:this.config.xAxisLabelPadding+T+i+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:b?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&u&&p.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+A+m+this.config.quadrantPadding,y:T+i-(q?S/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:q?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&u&&p.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+A+m+this.config.quadrantPadding,y:T+S-(q?S/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:q?"center":"left",horizontalPos:"top",rotation:-90}),p}getQuadrants(n){let{quadrantSpace:f}=n,{quadrantHalfHeight:u,quadrantLeft:c,quadrantHalfWidth:g,quadrantTop:y}=f,S=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:c+g,y,width:g,height:u,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:c,y,width:g,height:u,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:c,y:y+u,width:g,height:u,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:c+g,y:y+u,width:g,height:u,fill:this.themeConfig.quadrant4Fill}];for(let i of S)i.text.x=i.x+i.width/2,this.data.points.length===0?(i.text.y=i.y+i.height/2,i.text.horizontalPos="middle"):(i.text.y=i.y+this.config.quadrantTextTopPadding,i.text.horizontalPos="top");return S}getQuadrantPoints(n){let{quadrantSpace:f}=n,{quadrantHeight:u,quadrantLeft:c,quadrantTop:g,quadrantWidth:y}=f,S=Dt().domain([0,1]).range([c,y+c]),i=Dt().domain([0,1]).range([u+g,g]);return this.data.points.map(h=>{let T=this.classes.get(h.className);return T&&(h={...T,...h}),{x:S(h.x),y:i(h.y),fill:h.color??this.themeConfig.quadrantPointFill,radius:h.radius??this.config.pointRadius,text:{text:h.text,fill:this.themeConfig.quadrantPointTextFill,x:S(h.x),y:i(h.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:h.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:h.strokeWidth??"0px"}})}getBorders(n){let f=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:u}=n,{quadrantHalfHeight:c,quadrantHeight:g,quadrantLeft:y,quadrantHalfWidth:S,quadrantTop:i,quadrantWidth:A}=u;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y-f,y1:i,x2:y+A+f,y2:i},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y+A,y1:i+f,x2:y+A,y2:i+g-f},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y-f,y1:i+g,x2:y+A+f,y2:i+g},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y,y1:i+f,x2:y,y2:i+g-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:y+S,y1:i+f,x2:y+S,y2:i+g-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:y+f,y1:i+c,x2:y+A-f,y2:i+c}]}getTitle(n){if(n)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let n=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),f=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),u=this.config.showTitle&&!!this.data.titleText,c=this.data.points.length>0?"bottom":this.config.xAxisPosition,g=this.calculateSpace(c,n,f,u);return{points:this.getQuadrantPoints(g),quadrants:this.getQuadrants(g),axisLabels:this.getAxisLabels(c,n,f,g),borderLines:this.getBorders(g),title:this.getTitle(u)}}};var G=class extends Error{static{r(this,"InvalidStyleError")}constructor(n,f,u){super(`value for ${n} ${f} is invalid, please use a valid ${u}`),this.name="InvalidStyleError"}};function zt(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}r(zt,"validateHexCode");function xe(t){return!/^\d+$/.test(t)}r(xe,"validateNumber");function fe(t){return!/^\d+px$/.test(t)}r(fe,"validateSizeInPixels");var ke=xt();function j(t){return ne(t.trim(),ke)}r(j,"textSanitizer");var E=new qt;function Se(t){E.setData({quadrant1Text:j(t.text)})}r(Se,"setQuadrant1Text");function Ae(t){E.setData({quadrant2Text:j(t.text)})}r(Ae,"setQuadrant2Text");function Pe(t){E.setData({quadrant3Text:j(t.text)})}r(Pe,"setQuadrant3Text");function _e(t){E.setData({quadrant4Text:j(t.text)})}r(_e,"setQuadrant4Text");function Fe(t){E.setData({xAxisLeftText:j(t.text)})}r(Fe,"setXAxisLeftText");function Qe(t){E.setData({xAxisRightText:j(t.text)})}r(Qe,"setXAxisRightText");function Ce(t){E.setData({yAxisTopText:j(t.text)})}r(Ce,"setYAxisTopText");function Le(t){E.setData({yAxisBottomText:j(t.text)})}r(Le,"setYAxisBottomText");function Vt(t){let n={};for(let f of t){let[u,c]=f.trim().split(/\s*:\s*/);if(u==="radius"){if(xe(c))throw new G(u,c,"number");n.radius=parseInt(c)}else if(u==="color"){if(zt(c))throw new G(u,c,"hex code");n.color=c}else if(u==="stroke-color"){if(zt(c))throw new G(u,c,"hex code");n.strokeColor=c}else if(u==="stroke-width"){if(fe(c))throw new G(u,c,"number of pixels (eg. 10px)");n.strokeWidth=c}else throw new Error(`style named ${u} is not supported.`)}return n}r(Vt,"parseStyles");function ve(t,n,f,u,c){let g=Vt(c);E.addPoints([{x:f,y:u,text:j(t.text),className:n,...g}])}r(ve,"addPoint");function De(t,n){E.addClass(t,Vt(n))}r(De,"addClass");function Ee(t){E.setConfig({chartWidth:t})}r(Ee,"setWidth");function ze(t){E.setConfig({chartHeight:t})}r(ze,"setHeight");function Ve(){let t=xt(),{themeVariables:n,quadrantChart:f}=t;return f&&E.setConfig(f),E.setThemeConfig({quadrant1Fill:n.quadrant1Fill,quadrant2Fill:n.quadrant2Fill,quadrant3Fill:n.quadrant3Fill,quadrant4Fill:n.quadrant4Fill,quadrant1TextFill:n.quadrant1TextFill,quadrant2TextFill:n.quadrant2TextFill,quadrant3TextFill:n.quadrant3TextFill,quadrant4TextFill:n.quadrant4TextFill,quadrantPointFill:n.quadrantPointFill,quadrantPointTextFill:n.quadrantPointTextFill,quadrantXAxisTextFill:n.quadrantXAxisTextFill,quadrantYAxisTextFill:n.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:n.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:n.quadrantInternalBorderStrokeFill,quadrantTitleFill:n.quadrantTitleFill}),E.setData({titleText:vt()}),E.build()}r(Ve,"getQuadrantData");var Be=r(function(){E.clear(),se()},"clear"),pe={setWidth:Ee,setHeight:ze,setQuadrant1Text:Se,setQuadrant2Text:Ae,setQuadrant3Text:Pe,setQuadrant4Text:_e,setXAxisLeftText:Fe,setXAxisRightText:Qe,setYAxisTopText:Ce,setYAxisBottomText:Le,parseStyles:Vt,addPoint:ve,addClass:De,getQuadrantData:Ve,clear:Be,setAccTitle:oe,getAccTitle:le,setDiagramTitle:ce,getDiagramTitle:vt,getAccDescription:ue,setAccDescription:de};var we=r((t,n,f,u)=>{function c(a){return a==="top"?"hanging":"middle"}r(c,"getDominantBaseLine");function g(a){return a==="left"?"start":"middle"}r(g,"getTextAnchor");function y(a){return`translate(${a.x}, ${a.y}) rotate(${a.rotation||0})`}r(y,"getTransformation");let S=xt();lt.debug(`Rendering quadrant chart -`+t);let i=S.securityLevel,A;i==="sandbox"&&(A=bt("#i"+n));let T=(i==="sandbox"?bt(A.nodes()[0].contentDocument.body):bt("body")).select(`[id="${n}"]`),m=T.append("g").attr("class","main"),b=S.quadrantChart?.chartWidth??500,q=S.quadrantChart?.chartHeight??500;re(T,q,b,S.quadrantChart?.useMaxWidth??!0),T.attr("viewBox","0 0 "+b+" "+q),u.db.setHeight(q),u.db.setWidth(b);let p=u.db.getQuadrantData(),K=m.append("g").attr("class","quadrants"),dt=m.append("g").attr("class","border"),ft=m.append("g").attr("class","data-points"),pt=m.append("g").attr("class","labels"),gt=m.append("g").attr("class","title");p.title&>.append("text").attr("x",0).attr("y",0).attr("fill",p.title.fill).attr("font-size",p.title.fontSize).attr("dominant-baseline",c(p.title.horizontalPos)).attr("text-anchor",g(p.title.verticalPos)).attr("transform",y(p.title)).text(p.title.text),p.borderLines&&dt.selectAll("line").data(p.borderLines).enter().append("line").attr("x1",a=>a.x1).attr("y1",a=>a.y1).attr("x2",a=>a.x2).attr("y2",a=>a.y2).style("stroke",a=>a.strokeFill).style("stroke-width",a=>a.strokeWidth);let ut=K.selectAll("g.quadrant").data(p.quadrants).enter().append("g").attr("class","quadrant");ut.append("rect").attr("x",a=>a.x).attr("y",a=>a.y).attr("width",a=>a.width).attr("height",a=>a.height).attr("fill",a=>a.fill),ut.append("text").attr("x",0).attr("y",0).attr("fill",a=>a.text.fill).attr("font-size",a=>a.text.fontSize).attr("dominant-baseline",a=>c(a.text.horizontalPos)).attr("text-anchor",a=>g(a.text.verticalPos)).attr("transform",a=>y(a.text)).text(a=>a.text.text),pt.selectAll("g.label").data(p.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(a=>a.text).attr("fill",a=>a.fill).attr("font-size",a=>a.fontSize).attr("dominant-baseline",a=>c(a.horizontalPos)).attr("text-anchor",a=>g(a.verticalPos)).attr("transform",a=>y(a));let ct=ft.selectAll("g.data-point").data(p.points).enter().append("g").attr("class","data-point");ct.append("circle").attr("cx",a=>a.x).attr("cy",a=>a.y).attr("r",a=>a.radius).attr("fill",a=>a.fill).attr("stroke",a=>a.strokeColor).attr("stroke-width",a=>a.strokeWidth),ct.append("text").attr("x",0).attr("y",0).text(a=>a.text.text).attr("fill",a=>a.text.fill).attr("font-size",a=>a.text.fontSize).attr("dominant-baseline",a=>c(a.text.horizontalPos)).attr("text-anchor",a=>g(a.text.verticalPos)).attr("transform",a=>y(a.text))},"draw"),ge={draw:we};var ha={parser:he,db:pe,renderer:ge,styles:r(()=>"","styles")};export{ha as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-DYU4IJOS.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-DYU4IJOS.mjs.map deleted file mode 100644 index f11cc72..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-DYU4IJOS.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/quadrant-chart/parser/quadrant.jison", "../../../src/diagrams/quadrant-chart/quadrantBuilder.ts", "../../../src/diagrams/quadrant-chart/utils.ts", "../../../src/diagrams/quadrant-chart/quadrantDb.ts", "../../../src/diagrams/quadrant-chart/quadrantRenderer.ts", "../../../src/diagrams/quadrant-chart/quadrantDiagram.ts"], - "sourcesContent": ["/* 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,4],$V2=[1,5],$V3=[1,6],$V4=[1,7],$V5=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],$V6=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],$V7=[55,56,57],$V8=[2,36],$V9=[1,37],$Va=[1,36],$Vb=[1,38],$Vc=[1,35],$Vd=[1,43],$Ve=[1,41],$Vf=[1,14],$Vg=[1,23],$Vh=[1,18],$Vi=[1,19],$Vj=[1,20],$Vk=[1,21],$Vl=[1,22],$Vm=[1,24],$Vn=[1,25],$Vo=[1,26],$Vp=[1,27],$Vq=[1,28],$Vr=[1,29],$Vs=[1,32],$Vt=[1,33],$Vu=[1,34],$Vv=[1,39],$Vw=[1,40],$Vx=[1,42],$Vy=[1,44],$Vz=[1,62],$VA=[1,61],$VB=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],$VC=[1,65],$VD=[1,66],$VE=[1,67],$VF=[1,68],$VG=[1,69],$VH=[1,70],$VI=[1,71],$VJ=[1,72],$VK=[1,73],$VL=[1,74],$VM=[1,75],$VN=[1,76],$VO=[4,5,6,7,8,9,10,11,12,13,14,15,18],$VP=[1,90],$VQ=[1,91],$VR=[1,92],$VS=[1,99],$VT=[1,93],$VU=[1,96],$VV=[1,94],$VW=[1,95],$VX=[1,97],$VY=[1,98],$VZ=[1,102],$V_=[10,55,56,57],$V$=[4,5,6,8,10,11,13,17,18,19,20,55,56,57];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"idStringToken\":3,\"ALPHA\":4,\"NUM\":5,\"NODE_STRING\":6,\"DOWN\":7,\"MINUS\":8,\"DEFAULT\":9,\"COMMA\":10,\"COLON\":11,\"AMP\":12,\"BRKT\":13,\"MULT\":14,\"UNICODE_TEXT\":15,\"styleComponent\":16,\"UNIT\":17,\"SPACE\":18,\"STYLE\":19,\"PCT\":20,\"idString\":21,\"style\":22,\"stylesOpt\":23,\"classDefStatement\":24,\"CLASSDEF\":25,\"start\":26,\"eol\":27,\"QUADRANT\":28,\"document\":29,\"line\":30,\"statement\":31,\"axisDetails\":32,\"quadrantDetails\":33,\"points\":34,\"title\":35,\"title_value\":36,\"acc_title\":37,\"acc_title_value\":38,\"acc_descr\":39,\"acc_descr_value\":40,\"acc_descr_multiline_value\":41,\"section\":42,\"text\":43,\"point_start\":44,\"point_x\":45,\"point_y\":46,\"class_name\":47,\"X-AXIS\":48,\"AXIS-TEXT-DELIMITER\":49,\"Y-AXIS\":50,\"QUADRANT_1\":51,\"QUADRANT_2\":52,\"QUADRANT_3\":53,\"QUADRANT_4\":54,\"NEWLINE\":55,\"SEMI\":56,\"EOF\":57,\"alphaNumToken\":58,\"textNoTagsToken\":59,\"STR\":60,\"MD_STR\":61,\"alphaNum\":62,\"PUNCTUATION\":63,\"PLUS\":64,\"EQUALS\":65,\"DOT\":66,\"UNDERSCORE\":67,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ALPHA\",5:\"NUM\",6:\"NODE_STRING\",7:\"DOWN\",8:\"MINUS\",9:\"DEFAULT\",10:\"COMMA\",11:\"COLON\",12:\"AMP\",13:\"BRKT\",14:\"MULT\",15:\"UNICODE_TEXT\",17:\"UNIT\",18:\"SPACE\",19:\"STYLE\",20:\"PCT\",25:\"CLASSDEF\",28:\"QUADRANT\",35:\"title\",36:\"title_value\",37:\"acc_title\",38:\"acc_title_value\",39:\"acc_descr\",40:\"acc_descr_value\",41:\"acc_descr_multiline_value\",42:\"section\",44:\"point_start\",45:\"point_x\",46:\"point_y\",47:\"class_name\",48:\"X-AXIS\",49:\"AXIS-TEXT-DELIMITER\",50:\"Y-AXIS\",51:\"QUADRANT_1\",52:\"QUADRANT_2\",53:\"QUADRANT_3\",54:\"QUADRANT_4\",55:\"NEWLINE\",56:\"SEMI\",57:\"EOF\",60:\"STR\",61:\"MD_STR\",63:\"PUNCTUATION\",64:\"PLUS\",65:\"EQUALS\",66:\"DOT\",67:\"UNDERSCORE\"},\nproductions_: [0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 23:\nthis.$=$$[$0]\nbreak;\ncase 24:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 26:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 27:\nthis.$ = [$$[$0].trim()]\nbreak;\ncase 28:\n$$[$0-2].push($$[$0].trim());this.$ = $$[$0-2];\nbreak;\ncase 29:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 37:\nthis.$=[];\nbreak;\ncase 42:\n this.$=$$[$0].trim();yy.setDiagramTitle(this.$); \nbreak;\ncase 43:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 44: case 45:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 46:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 47:\nyy.addPoint($$[$0-3], \"\", $$[$0-1], $$[$0], []);\nbreak;\ncase 48:\nyy.addPoint($$[$0-4], $$[$0-3], $$[$0-1], $$[$0], []);\nbreak;\ncase 49:\nyy.addPoint($$[$0-4], \"\", $$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 50:\nyy.addPoint($$[$0-5], $$[$0-4], $$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 51:\nyy.setXAxisLeftText($$[$0-2]); yy.setXAxisRightText($$[$0]);\nbreak;\ncase 52:\n$$[$0-1].text += \" \u27F6 \"; yy.setXAxisLeftText($$[$0-1]);\nbreak;\ncase 53:\nyy.setXAxisLeftText($$[$0]);\nbreak;\ncase 54:\nyy.setYAxisBottomText($$[$0-2]); yy.setYAxisTopText($$[$0]);\nbreak;\ncase 55:\n$$[$0-1].text += \" \u27F6 \"; yy.setYAxisBottomText($$[$0-1]);\nbreak;\ncase 56:\nyy.setYAxisBottomText($$[$0]);\nbreak;\ncase 57:\nyy.setQuadrant1Text($$[$0])\nbreak;\ncase 58:\nyy.setQuadrant2Text($$[$0])\nbreak;\ncase 59:\nyy.setQuadrant3Text($$[$0])\nbreak;\ncase 60:\nyy.setQuadrant4Text($$[$0])\nbreak;\ncase 64:\n this.$={text:$$[$0], type: 'text'};\nbreak;\ncase 65:\n this.$={text:$$[$0-1].text+''+$$[$0], type: $$[$0-1].type};\nbreak;\ncase 66:\n this.$={text: $$[$0], type: 'text'};\nbreak;\ncase 67:\n this.$={text: $$[$0], type: 'markdown'};\nbreak;\ncase 68:\nthis.$=$$[$0];\nbreak;\ncase 69:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\n}\n},\ntable: [{18:$V0,26:1,27:2,28:$V1,55:$V2,56:$V3,57:$V4},{1:[3]},{18:$V0,26:8,27:2,28:$V1,55:$V2,56:$V3,57:$V4},{18:$V0,26:9,27:2,28:$V1,55:$V2,56:$V3,57:$V4},o($V5,[2,33],{29:10}),o($V6,[2,61]),o($V6,[2,62]),o($V6,[2,63]),{1:[2,30]},{1:[2,31]},o($V7,$V8,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$Vf,25:$Vg,35:$Vh,37:$Vi,39:$Vj,41:$Vk,42:$Vl,48:$Vm,50:$Vn,51:$Vo,52:$Vp,53:$Vq,54:$Vr,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V5,[2,34]),{27:45,55:$V2,56:$V3,57:$V4},o($V7,[2,37]),o($V7,$V8,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$Vf,25:$Vg,35:$Vh,37:$Vi,39:$Vj,41:$Vk,42:$Vl,48:$Vm,50:$Vn,51:$Vo,52:$Vp,53:$Vq,54:$Vr,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,39]),o($V7,[2,40]),o($V7,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},o($V7,[2,45]),o($V7,[2,46]),{18:[1,50]},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,43:51,58:31,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,43:52,58:31,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,43:53,58:31,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,43:54,58:31,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,43:55,58:31,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,43:56,58:31,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy},{4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,44:[1,57],47:[1,58],58:60,59:59,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy},o($VB,[2,64]),o($VB,[2,66]),o($VB,[2,67]),o($VB,[2,70]),o($VB,[2,71]),o($VB,[2,72]),o($VB,[2,73]),o($VB,[2,74]),o($VB,[2,75]),o($VB,[2,76]),o($VB,[2,77]),o($VB,[2,78]),o($VB,[2,79]),o($VB,[2,80]),o($V5,[2,35]),o($V7,[2,38]),o($V7,[2,42]),o($V7,[2,43]),o($V7,[2,44]),{3:64,4:$VC,5:$VD,6:$VE,7:$VF,8:$VG,9:$VH,10:$VI,11:$VJ,12:$VK,13:$VL,14:$VM,15:$VN,21:63},o($V7,[2,53],{59:59,58:60,4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,49:[1,77],63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,56],{59:59,58:60,4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,49:[1,78],63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,57],{59:59,58:60,4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,58],{59:59,58:60,4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,59],{59:59,58:60,4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,60],{59:59,58:60,4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),{45:[1,79]},{44:[1,80]},o($VB,[2,65]),o($VB,[2,81]),o($VB,[2,82]),o($VB,[2,83]),{3:82,4:$VC,5:$VD,6:$VE,7:$VF,8:$VG,9:$VH,10:$VI,11:$VJ,12:$VK,13:$VL,14:$VM,15:$VN,18:[1,81]},o($VO,[2,23]),o($VO,[2,1]),o($VO,[2,2]),o($VO,[2,3]),o($VO,[2,4]),o($VO,[2,5]),o($VO,[2,6]),o($VO,[2,7]),o($VO,[2,8]),o($VO,[2,9]),o($VO,[2,10]),o($VO,[2,11]),o($VO,[2,12]),o($V7,[2,52],{58:31,43:83,4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,55],{58:31,43:84,4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,60:$Vs,61:$Vt,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),{46:[1,85]},{45:[1,86]},{4:$VP,5:$VQ,6:$VR,8:$VS,11:$VT,13:$VU,16:89,17:$VV,18:$VW,19:$VX,20:$VY,22:88,23:87},o($VO,[2,24]),o($V7,[2,51],{59:59,58:60,4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,54],{59:59,58:60,4:$V9,5:$Va,8:$Vz,10:$Vb,12:$Vc,13:$Vd,14:$Ve,18:$VA,63:$Vu,64:$Vv,65:$Vw,66:$Vx,67:$Vy}),o($V7,[2,47],{22:88,16:89,23:100,4:$VP,5:$VQ,6:$VR,8:$VS,11:$VT,13:$VU,17:$VV,18:$VW,19:$VX,20:$VY}),{46:[1,101]},o($V7,[2,29],{10:$VZ}),o($V_,[2,27],{16:103,4:$VP,5:$VQ,6:$VR,8:$VS,11:$VT,13:$VU,17:$VV,18:$VW,19:$VX,20:$VY}),o($V$,[2,25]),o($V$,[2,13]),o($V$,[2,14]),o($V$,[2,15]),o($V$,[2,16]),o($V$,[2,17]),o($V$,[2,18]),o($V$,[2,19]),o($V$,[2,20]),o($V$,[2,21]),o($V$,[2,22]),o($V7,[2,49],{10:$VZ}),o($V7,[2,48],{22:88,16:89,23:104,4:$VP,5:$VQ,6:$VR,8:$VS,11:$VT,13:$VU,17:$VV,18:$VW,19:$VX,20:$VY}),{4:$VP,5:$VQ,6:$VR,8:$VS,11:$VT,13:$VU,16:89,17:$VV,18:$VW,19:$VX,20:$VY,22:105},o($V$,[2,26]),o($V7,[2,50],{10:$VZ}),o($V_,[2,28],{16:103,4:$VP,5:$VQ,6:$VR,8:$VS,11:$VT,13:$VU,17:$VV,18:$VW,19:$VX,20:$VY})],\ndefaultActions: {8:[2,30],9:[2,31]},\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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2:return 55;\nbreak;\ncase 3:/* do nothing */\nbreak;\ncase 4: this.begin(\"title\");return 35; \nbreak;\ncase 5: this.popState(); return \"title_value\"; \nbreak;\ncase 6: this.begin(\"acc_title\");return 37; \nbreak;\ncase 7: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 8: this.begin(\"acc_descr\");return 39; \nbreak;\ncase 9: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 10: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 11: this.popState(); \nbreak;\ncase 12:return \"acc_descr_multiline_value\";\nbreak;\ncase 13:return 48;\nbreak;\ncase 14:return 50;\nbreak;\ncase 15:return 49\nbreak;\ncase 16:return 51;\nbreak;\ncase 17:return 52;\nbreak;\ncase 18:return 53;\nbreak;\ncase 19:return 54;\nbreak;\ncase 20:return 25;\nbreak;\ncase 21: this.begin(\"md_string\");\nbreak;\ncase 22: return \"MD_STR\";\nbreak;\ncase 23: this.popState();\nbreak;\ncase 24:this.begin(\"string\");\nbreak;\ncase 25:this.popState();\nbreak;\ncase 26:return \"STR\";\nbreak;\ncase 27:this.begin('class_name')\nbreak;\ncase 28:this.popState(); return 47;\nbreak;\ncase 29:this.begin(\"point_start\"); return 44;\nbreak;\ncase 30:this.begin('point_x'); return 45;\nbreak;\ncase 31:this.popState();\nbreak;\ncase 32:this.popState(); this.begin('point_y');\nbreak;\ncase 33:this.popState(); return 46;\nbreak;\ncase 34:return 28;\nbreak;\ncase 35:return 4;\nbreak;\ncase 36:return 11;\nbreak;\ncase 37:return 64;\nbreak;\ncase 38:return 10;\nbreak;\ncase 39:return 65;\nbreak;\ncase 40:return 65;\nbreak;\ncase 41:return 14;\nbreak;\ncase 42:return 13;\nbreak;\ncase 43:return 67;\nbreak;\ncase 44:return 66;\nbreak;\ncase 45:return 12;\nbreak;\ncase 46:return 8;\nbreak;\ncase 47:return 5;\nbreak;\ncase 48:return 18;\nbreak;\ncase 49:return 56;\nbreak;\ncase 50:return 63;\nbreak;\ncase 51:return 57;\nbreak;\n}\n},\nrules: [/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\\b)/i,/^(?:[\"][`])/i,/^(?:[^`\"]+)/i,/^(?:[`][\"])/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?::::)/i,/^(?:^\\w+)/i,/^(?:\\s*:\\s*\\[\\s*)/i,/^(?:(1)|(0(.\\d+)?))/i,/^(?:\\s*\\] *)/i,/^(?:\\s*,\\s*)/i,/^(?:(1)|(0(.\\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\\*)/i,/^(?:#)/i,/^(?:[\\_])/i,/^(?:\\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\\s)/i,/^(?:;)/i,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/i,/^(?:$)/i],\nconditions: {\"class_name\":{\"rules\":[28],\"inclusive\":false},\"point_y\":{\"rules\":[33],\"inclusive\":false},\"point_x\":{\"rules\":[32],\"inclusive\":false},\"point_start\":{\"rules\":[30,31],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[11,12],\"inclusive\":false},\"acc_descr\":{\"rules\":[9],\"inclusive\":false},\"acc_title\":{\"rules\":[7],\"inclusive\":false},\"title\":{\"rules\":[5],\"inclusive\":false},\"md_string\":{\"rules\":[22,23],\"inclusive\":false},\"string\":{\"rules\":[25,26],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { scaleLinear } from 'd3';\nimport type { BaseDiagramConfig, QuadrantChartConfig } from '../../config.type.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport { log } from '../../logger.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport type { Point } from '../../types.js';\n\nconst defaultThemeVariables = getThemeVariables();\n\nexport type TextVerticalPos = 'left' | 'center' | 'right';\nexport type TextHorizontalPos = 'top' | 'middle' | 'bottom';\n\nexport interface StylesObject {\n className?: string;\n radius?: number;\n color?: string;\n strokeColor?: string;\n strokeWidth?: string;\n}\n\nexport interface QuadrantPointInputType extends Point, StylesObject {\n text: string;\n}\n\nexport interface QuadrantTextType extends Point {\n text: string;\n fill: string;\n verticalPos: TextVerticalPos;\n horizontalPos: TextHorizontalPos;\n fontSize: number;\n rotation: number;\n}\n\nexport interface QuadrantPointType\n extends Point,\n Pick {\n fill: string;\n radius: number;\n text: QuadrantTextType;\n}\n\nexport interface QuadrantQuadrantsType extends Point {\n text: QuadrantTextType;\n width: number;\n height: number;\n fill: string;\n}\n\nexport interface QuadrantLineType {\n strokeWidth: number;\n strokeFill: string;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nexport interface QuadrantBuildType {\n points: QuadrantPointType[];\n quadrants: QuadrantQuadrantsType[];\n axisLabels: QuadrantTextType[];\n title?: QuadrantTextType;\n borderLines?: QuadrantLineType[];\n}\n\nexport interface QuadrantBuilderData {\n titleText: string;\n quadrant1Text: string;\n quadrant2Text: string;\n quadrant3Text: string;\n quadrant4Text: string;\n xAxisLeftText: string;\n xAxisRightText: string;\n yAxisBottomText: string;\n yAxisTopText: string;\n points: QuadrantPointInputType[];\n}\n\nexport interface QuadrantBuilderConfig\n extends Required> {\n showXAxis: boolean;\n showYAxis: boolean;\n showTitle: boolean;\n}\n\nexport interface QuadrantBuilderThemeConfig {\n quadrantTitleFill: string;\n quadrant1Fill: string;\n quadrant2Fill: string;\n quadrant3Fill: string;\n quadrant4Fill: string;\n quadrant1TextFill: string;\n quadrant2TextFill: string;\n quadrant3TextFill: string;\n quadrant4TextFill: string;\n quadrantPointFill: string;\n quadrantPointTextFill: string;\n quadrantXAxisTextFill: string;\n quadrantYAxisTextFill: string;\n quadrantInternalBorderStrokeFill: string;\n quadrantExternalBorderStrokeFill: string;\n}\n\ninterface CalculateSpaceData {\n xAxisSpace: {\n top: number;\n bottom: number;\n };\n yAxisSpace: {\n left: number;\n right: number;\n };\n titleSpace: {\n top: number;\n };\n quadrantSpace: {\n quadrantLeft: number;\n quadrantTop: number;\n quadrantWidth: number;\n quadrantHalfWidth: number;\n quadrantHeight: number;\n quadrantHalfHeight: number;\n };\n}\n\nexport class QuadrantBuilder {\n private config: QuadrantBuilderConfig;\n private themeConfig: QuadrantBuilderThemeConfig;\n private data: QuadrantBuilderData;\n private classes = new Map();\n\n constructor() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n }\n\n getDefaultData(): QuadrantBuilderData {\n return {\n titleText: '',\n quadrant1Text: '',\n quadrant2Text: '',\n quadrant3Text: '',\n quadrant4Text: '',\n xAxisLeftText: '',\n xAxisRightText: '',\n yAxisBottomText: '',\n yAxisTopText: '',\n points: [],\n };\n }\n\n getDefaultConfig(): QuadrantBuilderConfig {\n return {\n showXAxis: true,\n showYAxis: true,\n showTitle: true,\n chartHeight: defaultConfig.quadrantChart?.chartWidth || 500,\n chartWidth: defaultConfig.quadrantChart?.chartHeight || 500,\n titlePadding: defaultConfig.quadrantChart?.titlePadding || 10,\n titleFontSize: defaultConfig.quadrantChart?.titleFontSize || 20,\n quadrantPadding: defaultConfig.quadrantChart?.quadrantPadding || 5,\n xAxisLabelPadding: defaultConfig.quadrantChart?.xAxisLabelPadding || 5,\n yAxisLabelPadding: defaultConfig.quadrantChart?.yAxisLabelPadding || 5,\n xAxisLabelFontSize: defaultConfig.quadrantChart?.xAxisLabelFontSize || 16,\n yAxisLabelFontSize: defaultConfig.quadrantChart?.yAxisLabelFontSize || 16,\n quadrantLabelFontSize: defaultConfig.quadrantChart?.quadrantLabelFontSize || 16,\n quadrantTextTopPadding: defaultConfig.quadrantChart?.quadrantTextTopPadding || 5,\n pointTextPadding: defaultConfig.quadrantChart?.pointTextPadding || 5,\n pointLabelFontSize: defaultConfig.quadrantChart?.pointLabelFontSize || 12,\n pointRadius: defaultConfig.quadrantChart?.pointRadius || 5,\n xAxisPosition: defaultConfig.quadrantChart?.xAxisPosition || 'top',\n yAxisPosition: defaultConfig.quadrantChart?.yAxisPosition || 'left',\n quadrantInternalBorderStrokeWidth:\n defaultConfig.quadrantChart?.quadrantInternalBorderStrokeWidth || 1,\n quadrantExternalBorderStrokeWidth:\n defaultConfig.quadrantChart?.quadrantExternalBorderStrokeWidth || 2,\n };\n }\n\n getDefaultThemeConfig(): QuadrantBuilderThemeConfig {\n return {\n quadrant1Fill: defaultThemeVariables.quadrant1Fill,\n quadrant2Fill: defaultThemeVariables.quadrant2Fill,\n quadrant3Fill: defaultThemeVariables.quadrant3Fill,\n quadrant4Fill: defaultThemeVariables.quadrant4Fill,\n quadrant1TextFill: defaultThemeVariables.quadrant1TextFill,\n quadrant2TextFill: defaultThemeVariables.quadrant2TextFill,\n quadrant3TextFill: defaultThemeVariables.quadrant3TextFill,\n quadrant4TextFill: defaultThemeVariables.quadrant4TextFill,\n quadrantPointFill: defaultThemeVariables.quadrantPointFill,\n quadrantPointTextFill: defaultThemeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: defaultThemeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: defaultThemeVariables.quadrantYAxisTextFill,\n quadrantTitleFill: defaultThemeVariables.quadrantTitleFill,\n quadrantInternalBorderStrokeFill: defaultThemeVariables.quadrantInternalBorderStrokeFill,\n quadrantExternalBorderStrokeFill: defaultThemeVariables.quadrantExternalBorderStrokeFill,\n };\n }\n\n clear() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n this.classes = new Map();\n log.info('clear called');\n }\n\n setData(data: Partial) {\n this.data = { ...this.data, ...data };\n }\n\n addPoints(points: QuadrantPointInputType[]) {\n this.data.points = [...points, ...this.data.points];\n }\n\n addClass(className: string, styles: StylesObject) {\n this.classes.set(className, styles);\n }\n\n setConfig(config: Partial) {\n log.trace('setConfig called with: ', config);\n this.config = { ...this.config, ...config };\n }\n\n setThemeConfig(themeConfig: Partial) {\n log.trace('setThemeConfig called with: ', themeConfig);\n this.themeConfig = { ...this.themeConfig, ...themeConfig };\n }\n\n calculateSpace(\n xAxisPosition: typeof this.config.xAxisPosition,\n showXAxis: boolean,\n showYAxis: boolean,\n showTitle: boolean\n ): CalculateSpaceData {\n const xAxisSpaceCalculation =\n this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize;\n const xAxisSpace = {\n top: xAxisPosition === 'top' && showXAxis ? xAxisSpaceCalculation : 0,\n bottom: xAxisPosition === 'bottom' && showXAxis ? xAxisSpaceCalculation : 0,\n };\n\n const yAxisSpaceCalculation =\n this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize;\n const yAxisSpace = {\n left: this.config.yAxisPosition === 'left' && showYAxis ? yAxisSpaceCalculation : 0,\n right: this.config.yAxisPosition === 'right' && showYAxis ? yAxisSpaceCalculation : 0,\n };\n\n const titleSpaceCalculation = this.config.titleFontSize + this.config.titlePadding * 2;\n const titleSpace = {\n top: showTitle ? titleSpaceCalculation : 0,\n };\n\n const quadrantLeft = this.config.quadrantPadding + yAxisSpace.left;\n const quadrantTop = this.config.quadrantPadding + xAxisSpace.top + titleSpace.top;\n const quadrantWidth =\n this.config.chartWidth - this.config.quadrantPadding * 2 - yAxisSpace.left - yAxisSpace.right;\n const quadrantHeight =\n this.config.chartHeight -\n this.config.quadrantPadding * 2 -\n xAxisSpace.top -\n xAxisSpace.bottom -\n titleSpace.top;\n\n const quadrantHalfWidth = quadrantWidth / 2;\n const quadrantHalfHeight = quadrantHeight / 2;\n const quadrantSpace = {\n quadrantLeft,\n quadrantTop,\n quadrantWidth,\n quadrantHalfWidth,\n quadrantHeight,\n quadrantHalfHeight,\n };\n\n return {\n xAxisSpace,\n yAxisSpace,\n titleSpace,\n quadrantSpace,\n };\n }\n\n getAxisLabels(\n xAxisPosition: typeof this.config.xAxisPosition,\n showXAxis: boolean,\n showYAxis: boolean,\n spaceData: CalculateSpaceData\n ): QuadrantTextType[] {\n const { quadrantSpace, titleSpace } = spaceData;\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth,\n } = quadrantSpace;\n\n const drawXAxisLabelsInMiddle = Boolean(this.data.xAxisRightText);\n const drawYAxisLabelsInMiddle = Boolean(this.data.yAxisTopText);\n\n const axisLabels: QuadrantTextType[] = [];\n\n if (this.data.xAxisLeftText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisLeftText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0),\n y:\n xAxisPosition === 'top'\n ? this.config.xAxisLabelPadding + titleSpace.top\n : this.config.xAxisLabelPadding +\n quadrantTop +\n quadrantHeight +\n this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawXAxisLabelsInMiddle ? 'center' : 'left',\n horizontalPos: 'top',\n rotation: 0,\n });\n }\n if (this.data.xAxisRightText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisRightText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + quadrantHalfWidth + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0),\n y:\n xAxisPosition === 'top'\n ? this.config.xAxisLabelPadding + titleSpace.top\n : this.config.xAxisLabelPadding +\n quadrantTop +\n quadrantHeight +\n this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawXAxisLabelsInMiddle ? 'center' : 'left',\n horizontalPos: 'top',\n rotation: 0,\n });\n }\n\n if (this.data.yAxisBottomText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisBottomText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x:\n this.config.yAxisPosition === 'left'\n ? this.config.yAxisLabelPadding\n : this.config.yAxisLabelPadding +\n quadrantLeft +\n quadrantWidth +\n this.config.quadrantPadding,\n y: quadrantTop + quadrantHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawYAxisLabelsInMiddle ? 'center' : 'left',\n horizontalPos: 'top',\n rotation: -90,\n });\n }\n if (this.data.yAxisTopText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisTopText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x:\n this.config.yAxisPosition === 'left'\n ? this.config.yAxisLabelPadding\n : this.config.yAxisLabelPadding +\n quadrantLeft +\n quadrantWidth +\n this.config.quadrantPadding,\n y:\n quadrantTop + quadrantHalfHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawYAxisLabelsInMiddle ? 'center' : 'left',\n horizontalPos: 'top',\n rotation: -90,\n });\n }\n return axisLabels;\n }\n\n getQuadrants(spaceData: CalculateSpaceData): QuadrantQuadrantsType[] {\n const { quadrantSpace } = spaceData;\n\n const { quadrantHalfHeight, quadrantLeft, quadrantHalfWidth, quadrantTop } = quadrantSpace;\n\n const quadrants: QuadrantQuadrantsType[] = [\n {\n text: {\n text: this.data.quadrant1Text,\n fill: this.themeConfig.quadrant1TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: 'center',\n horizontalPos: 'middle',\n rotation: 0,\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant1Fill,\n },\n {\n text: {\n text: this.data.quadrant2Text,\n fill: this.themeConfig.quadrant2TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: 'center',\n horizontalPos: 'middle',\n rotation: 0,\n },\n x: quadrantLeft,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant2Fill,\n },\n {\n text: {\n text: this.data.quadrant3Text,\n fill: this.themeConfig.quadrant3TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: 'center',\n horizontalPos: 'middle',\n rotation: 0,\n },\n x: quadrantLeft,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant3Fill,\n },\n {\n text: {\n text: this.data.quadrant4Text,\n fill: this.themeConfig.quadrant4TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: 'center',\n horizontalPos: 'middle',\n rotation: 0,\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant4Fill,\n },\n ];\n for (const quadrant of quadrants) {\n quadrant.text.x = quadrant.x + quadrant.width / 2;\n // place the text in the center of the box\n if (this.data.points.length === 0) {\n quadrant.text.y = quadrant.y + quadrant.height / 2;\n quadrant.text.horizontalPos = 'middle';\n // place the text top of the quadrant square\n } else {\n quadrant.text.y = quadrant.y + this.config.quadrantTextTopPadding;\n quadrant.text.horizontalPos = 'top';\n }\n }\n\n return quadrants;\n }\n\n getQuadrantPoints(spaceData: CalculateSpaceData): QuadrantPointType[] {\n const { quadrantSpace } = spaceData;\n\n const { quadrantHeight, quadrantLeft, quadrantTop, quadrantWidth } = quadrantSpace;\n\n const xAxis = scaleLinear()\n .domain([0, 1])\n .range([quadrantLeft, quadrantWidth + quadrantLeft]);\n\n const yAxis = scaleLinear()\n .domain([0, 1])\n .range([quadrantHeight + quadrantTop, quadrantTop]);\n\n const points: QuadrantPointType[] = this.data.points.map((point) => {\n const classStyles = this.classes.get(point.className!);\n if (classStyles) {\n point = { ...classStyles, ...point };\n }\n const props: QuadrantPointType = {\n x: xAxis(point.x),\n y: yAxis(point.y),\n fill: point.color ?? this.themeConfig.quadrantPointFill,\n radius: point.radius ?? this.config.pointRadius,\n text: {\n text: point.text,\n fill: this.themeConfig.quadrantPointTextFill,\n x: xAxis(point.x),\n y: yAxis(point.y) + this.config.pointTextPadding,\n verticalPos: 'center',\n horizontalPos: 'top',\n fontSize: this.config.pointLabelFontSize,\n rotation: 0,\n },\n strokeColor: point.strokeColor ?? this.themeConfig.quadrantPointFill,\n strokeWidth: point.strokeWidth ?? '0px',\n };\n return props;\n });\n return points;\n }\n\n getBorders(spaceData: CalculateSpaceData): QuadrantLineType[] {\n const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2;\n const { quadrantSpace } = spaceData;\n\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth,\n } = quadrantSpace;\n\n const borderLines: QuadrantLineType[] = [\n // top border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop,\n },\n // right border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth,\n },\n // bottom border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop + quadrantHeight,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop + quadrantHeight,\n },\n // left border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth,\n },\n // vertical inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantHalfWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantHalfWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth,\n },\n // horizontal inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + halfExternalBorderWidth,\n y1: quadrantTop + quadrantHalfHeight,\n x2: quadrantLeft + quadrantWidth - halfExternalBorderWidth,\n y2: quadrantTop + quadrantHalfHeight,\n },\n ];\n return borderLines;\n }\n\n getTitle(showTitle: boolean): QuadrantTextType | undefined {\n if (showTitle) {\n return {\n text: this.data.titleText,\n fill: this.themeConfig.quadrantTitleFill,\n fontSize: this.config.titleFontSize,\n horizontalPos: 'top',\n verticalPos: 'center',\n rotation: 0,\n y: this.config.titlePadding,\n x: this.config.chartWidth / 2,\n };\n }\n return;\n }\n\n build(): QuadrantBuildType {\n const showXAxis =\n this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText);\n const showYAxis =\n this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText);\n const showTitle = this.config.showTitle && !!this.data.titleText;\n\n const xAxisPosition = this.data.points.length > 0 ? 'bottom' : this.config.xAxisPosition;\n\n const calculatedSpace = this.calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle);\n\n return {\n points: this.getQuadrantPoints(calculatedSpace),\n quadrants: this.getQuadrants(calculatedSpace),\n axisLabels: this.getAxisLabels(xAxisPosition, showXAxis, showYAxis, calculatedSpace),\n borderLines: this.getBorders(calculatedSpace),\n title: this.getTitle(showTitle),\n };\n }\n}\n", "class InvalidStyleError extends Error {\n constructor(style: string, value: string, type: string) {\n super(`value for ${style} ${value} is invalid, please use a valid ${type}`);\n this.name = 'InvalidStyleError';\n }\n}\n\nfunction validateHexCode(value: string): boolean {\n return !/^#?([\\dA-Fa-f]{6}|[\\dA-Fa-f]{3})$/.test(value);\n}\n\nfunction validateNumber(value: string): boolean {\n return !/^\\d+$/.test(value);\n}\n\nfunction validateSizeInPixels(value: string): boolean {\n return !/^\\d+px$/.test(value);\n}\n\nexport { validateHexCode, validateNumber, validateSizeInPixels, InvalidStyleError };\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { sanitizeText } from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../common/commonDb.js';\nimport type { StylesObject } from './quadrantBuilder.js';\nimport { QuadrantBuilder } from './quadrantBuilder.js';\nimport {\n validateHexCode,\n validateSizeInPixels,\n validateNumber,\n InvalidStyleError,\n} from './utils.js';\n\nconst config = getConfig();\n\nfunction textSanitizer(text: string) {\n return sanitizeText(text.trim(), config);\n}\n\ninterface LexTextObj {\n text: string;\n type: 'text' | 'markdown';\n}\n\nconst quadrantBuilder = new QuadrantBuilder();\n\nfunction setQuadrant1Text(textObj: LexTextObj) {\n quadrantBuilder.setData({ quadrant1Text: textSanitizer(textObj.text) });\n}\n\nfunction setQuadrant2Text(textObj: LexTextObj) {\n quadrantBuilder.setData({ quadrant2Text: textSanitizer(textObj.text) });\n}\n\nfunction setQuadrant3Text(textObj: LexTextObj) {\n quadrantBuilder.setData({ quadrant3Text: textSanitizer(textObj.text) });\n}\n\nfunction setQuadrant4Text(textObj: LexTextObj) {\n quadrantBuilder.setData({ quadrant4Text: textSanitizer(textObj.text) });\n}\n\nfunction setXAxisLeftText(textObj: LexTextObj) {\n quadrantBuilder.setData({ xAxisLeftText: textSanitizer(textObj.text) });\n}\n\nfunction setXAxisRightText(textObj: LexTextObj) {\n quadrantBuilder.setData({ xAxisRightText: textSanitizer(textObj.text) });\n}\n\nfunction setYAxisTopText(textObj: LexTextObj) {\n quadrantBuilder.setData({ yAxisTopText: textSanitizer(textObj.text) });\n}\n\nfunction setYAxisBottomText(textObj: LexTextObj) {\n quadrantBuilder.setData({ yAxisBottomText: textSanitizer(textObj.text) });\n}\n\nfunction parseStyles(styles: string[]): StylesObject {\n const stylesObject: StylesObject = {};\n for (const style of styles) {\n const [key, value] = style.trim().split(/\\s*:\\s*/);\n if (key === 'radius') {\n if (validateNumber(value)) {\n throw new InvalidStyleError(key, value, 'number');\n }\n stylesObject.radius = parseInt(value);\n } else if (key === 'color') {\n if (validateHexCode(value)) {\n throw new InvalidStyleError(key, value, 'hex code');\n }\n stylesObject.color = value;\n } else if (key === 'stroke-color') {\n if (validateHexCode(value)) {\n throw new InvalidStyleError(key, value, 'hex code');\n }\n stylesObject.strokeColor = value;\n } else if (key === 'stroke-width') {\n if (validateSizeInPixels(value)) {\n throw new InvalidStyleError(key, value, 'number of pixels (eg. 10px)');\n }\n stylesObject.strokeWidth = value;\n } else {\n throw new Error(`style named ${key} is not supported.`);\n }\n }\n return stylesObject;\n}\n\nfunction addPoint(textObj: LexTextObj, className: string, x: number, y: number, styles: string[]) {\n const stylesObject = parseStyles(styles);\n quadrantBuilder.addPoints([\n {\n x,\n y,\n text: textSanitizer(textObj.text),\n className,\n ...stylesObject,\n },\n ]);\n}\n\nfunction addClass(className: string, styles: string[]) {\n quadrantBuilder.addClass(className, parseStyles(styles));\n}\n\nfunction setWidth(width: number) {\n quadrantBuilder.setConfig({ chartWidth: width });\n}\n\nfunction setHeight(height: number) {\n quadrantBuilder.setConfig({ chartHeight: height });\n}\n\nfunction getQuadrantData() {\n const config = getConfig();\n const { themeVariables, quadrantChart: quadrantChartConfig } = config;\n if (quadrantChartConfig) {\n quadrantBuilder.setConfig(quadrantChartConfig);\n }\n quadrantBuilder.setThemeConfig({\n quadrant1Fill: themeVariables.quadrant1Fill,\n quadrant2Fill: themeVariables.quadrant2Fill,\n quadrant3Fill: themeVariables.quadrant3Fill,\n quadrant4Fill: themeVariables.quadrant4Fill,\n quadrant1TextFill: themeVariables.quadrant1TextFill,\n quadrant2TextFill: themeVariables.quadrant2TextFill,\n quadrant3TextFill: themeVariables.quadrant3TextFill,\n quadrant4TextFill: themeVariables.quadrant4TextFill,\n quadrantPointFill: themeVariables.quadrantPointFill,\n quadrantPointTextFill: themeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: themeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: themeVariables.quadrantYAxisTextFill,\n quadrantExternalBorderStrokeFill: themeVariables.quadrantExternalBorderStrokeFill,\n quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill,\n quadrantTitleFill: themeVariables.quadrantTitleFill,\n });\n quadrantBuilder.setData({ titleText: getDiagramTitle() });\n return quadrantBuilder.build();\n}\n\nconst clear = function () {\n quadrantBuilder.clear();\n commonClear();\n};\n\nexport default {\n setWidth,\n setHeight,\n setQuadrant1Text,\n setQuadrant2Text,\n setQuadrant3Text,\n setQuadrant4Text,\n setXAxisLeftText,\n setXAxisRightText,\n setYAxisTopText,\n setYAxisBottomText,\n parseStyles,\n addPoint,\n addClass,\n getQuadrantData,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n};\n", "// @ts-nocheck - don't check until handle it\nimport { select } from 'd3';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { Diagram } from '../../Diagram.js';\nimport type {\n QuadrantBuildType,\n QuadrantLineType,\n QuadrantPointType,\n QuadrantQuadrantsType,\n QuadrantTextType,\n TextHorizontalPos,\n TextVerticalPos,\n} from './quadrantBuilder.js';\n\nexport const draw = (txt: string, id: string, _version: string, diagObj: Diagram) => {\n function getDominantBaseLine(horizontalPos: TextHorizontalPos) {\n return horizontalPos === 'top' ? 'hanging' : 'middle';\n }\n\n function getTextAnchor(verticalPos: TextVerticalPos) {\n return verticalPos === 'left' ? 'start' : 'middle';\n }\n\n function getTransformation(data: { x: number; y: number; rotation: number }) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n\n const conf = getConfig();\n\n log.debug('Rendering quadrant chart\\n' + txt);\n\n const securityLevel = conf.securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n const svg = root.select(`[id=\"${id}\"]`);\n\n const group = svg.append('g').attr('class', 'main');\n\n const width = conf.quadrantChart?.chartWidth ?? 500;\n const height = conf.quadrantChart?.chartHeight ?? 500;\n\n configureSvgSize(svg, height, width, conf.quadrantChart?.useMaxWidth ?? true);\n\n svg.attr('viewBox', '0 0 ' + width + ' ' + height);\n\n // @ts-ignore: TODO Fix ts errors\n diagObj.db.setHeight(height);\n // @ts-ignore: TODO Fix ts errors\n diagObj.db.setWidth(width);\n\n // @ts-ignore: TODO Fix ts errors\n const quadrantData: QuadrantBuildType = diagObj.db.getQuadrantData();\n\n const quadrantsGroup = group.append('g').attr('class', 'quadrants');\n const borderGroup = group.append('g').attr('class', 'border');\n const dataPointGroup = group.append('g').attr('class', 'data-points');\n const labelGroup = group.append('g').attr('class', 'labels');\n const titleGroup = group.append('g').attr('class', 'title');\n\n if (quadrantData.title) {\n titleGroup\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .attr('fill', quadrantData.title.fill)\n .attr('font-size', quadrantData.title.fontSize)\n .attr('dominant-baseline', getDominantBaseLine(quadrantData.title.horizontalPos))\n .attr('text-anchor', getTextAnchor(quadrantData.title.verticalPos))\n .attr('transform', getTransformation(quadrantData.title))\n .text(quadrantData.title.text);\n }\n\n if (quadrantData.borderLines) {\n borderGroup\n .selectAll('line')\n .data(quadrantData.borderLines)\n .enter()\n .append('line')\n .attr('x1', (data: QuadrantLineType) => data.x1)\n .attr('y1', (data: QuadrantLineType) => data.y1)\n .attr('x2', (data: QuadrantLineType) => data.x2)\n .attr('y2', (data: QuadrantLineType) => data.y2)\n .style('stroke', (data: QuadrantLineType) => data.strokeFill)\n .style('stroke-width', (data: QuadrantLineType) => data.strokeWidth);\n }\n\n const quadrants = quadrantsGroup\n .selectAll('g.quadrant')\n .data(quadrantData.quadrants)\n .enter()\n .append('g')\n .attr('class', 'quadrant');\n\n quadrants\n .append('rect')\n .attr('x', (data: QuadrantQuadrantsType) => data.x)\n .attr('y', (data: QuadrantQuadrantsType) => data.y)\n .attr('width', (data: QuadrantQuadrantsType) => data.width)\n .attr('height', (data: QuadrantQuadrantsType) => data.height)\n .attr('fill', (data: QuadrantQuadrantsType) => data.fill);\n\n quadrants\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .attr('fill', (data: QuadrantQuadrantsType) => data.text.fill)\n .attr('font-size', (data: QuadrantQuadrantsType) => data.text.fontSize)\n .attr('dominant-baseline', (data: QuadrantQuadrantsType) =>\n getDominantBaseLine(data.text.horizontalPos)\n )\n .attr('text-anchor', (data: QuadrantQuadrantsType) => getTextAnchor(data.text.verticalPos))\n .attr('transform', (data: QuadrantQuadrantsType) => getTransformation(data.text))\n .text((data: QuadrantQuadrantsType) => data.text.text);\n\n const labels = labelGroup\n .selectAll('g.label')\n .data(quadrantData.axisLabels)\n .enter()\n .append('g')\n .attr('class', 'label');\n\n labels\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .text((data: QuadrantTextType) => data.text)\n .attr('fill', (data: QuadrantTextType) => data.fill)\n .attr('font-size', (data: QuadrantTextType) => data.fontSize)\n .attr('dominant-baseline', (data: QuadrantTextType) => getDominantBaseLine(data.horizontalPos))\n .attr('text-anchor', (data: QuadrantTextType) => getTextAnchor(data.verticalPos))\n .attr('transform', (data: QuadrantTextType) => getTransformation(data));\n\n const dataPoints = dataPointGroup\n .selectAll('g.data-point')\n .data(quadrantData.points)\n .enter()\n .append('g')\n .attr('class', 'data-point');\n\n dataPoints\n .append('circle')\n .attr('cx', (data: QuadrantPointType) => data.x)\n .attr('cy', (data: QuadrantPointType) => data.y)\n .attr('r', (data: QuadrantPointType) => data.radius)\n .attr('fill', (data: QuadrantPointType) => data.fill)\n .attr('stroke', (data: QuadrantPointType) => data.strokeColor)\n .attr('stroke-width', (data: QuadrantPointType) => data.strokeWidth);\n\n dataPoints\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .text((data: QuadrantPointType) => data.text.text)\n .attr('fill', (data: QuadrantPointType) => data.text.fill)\n .attr('font-size', (data: QuadrantPointType) => data.text.fontSize)\n .attr('dominant-baseline', (data: QuadrantPointType) =>\n getDominantBaseLine(data.text.horizontalPos)\n )\n .attr('text-anchor', (data: QuadrantPointType) => getTextAnchor(data.text.verticalPos))\n .attr('transform', (data: QuadrantPointType) => getTransformation(data.text));\n};\n\nexport default {\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/quadrant.jison';\nimport db from './quadrantDb.js';\nimport renderer from './quadrantRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles: () => '',\n};\n"], - "mappings": "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,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,EAClpB,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GA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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "$VZ", "$V_", "$V$", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "quadrant_default", "parser", "defaultThemeVariables", "getThemeVariables", "QuadrantBuilder", "__name", "defaultConfig_default", "log", "data", "points", "className", "styles", "config", "themeConfig", "xAxisPosition", "showXAxis", "showYAxis", "showTitle", "xAxisSpaceCalculation", "xAxisSpace", "yAxisSpaceCalculation", "yAxisSpace", "titleSpaceCalculation", "titleSpace", "quadrantLeft", "quadrantTop", "quadrantWidth", "quadrantHeight", "quadrantHalfWidth", "quadrantHalfHeight", "spaceData", "quadrantSpace", "drawXAxisLabelsInMiddle", "drawYAxisLabelsInMiddle", "axisLabels", "quadrants", "quadrant", "xAxis", "linear", "yAxis", "point", "classStyles", "halfExternalBorderWidth", "calculatedSpace", "InvalidStyleError", "__name", "style", "value", "type", "validateHexCode", "validateNumber", "validateSizeInPixels", "config", "getConfig", "textSanitizer", "text", "sanitizeText", "__name", "quadrantBuilder", "QuadrantBuilder", "setQuadrant1Text", "textObj", "setQuadrant2Text", "setQuadrant3Text", "setQuadrant4Text", "setXAxisLeftText", "setXAxisRightText", "setYAxisTopText", "setYAxisBottomText", "parseStyles", "styles", "stylesObject", "style", "key", "value", "validateNumber", "InvalidStyleError", "validateHexCode", "validateSizeInPixels", "addPoint", "className", "x", "y", "addClass", "setWidth", "width", "setHeight", "height", "getQuadrantData", "themeVariables", "quadrantChartConfig", "getDiagramTitle", "clear", "quadrantDb_default", "setAccTitle", "getAccTitle", "setDiagramTitle", "getAccDescription", "setAccDescription", "draw", "__name", "txt", "id", "_version", "diagObj", "getDominantBaseLine", "horizontalPos", "getTextAnchor", "verticalPos", "getTransformation", "data", "conf", "getConfig", "log", "securityLevel", "sandboxElement", "select_default", "svg", "group", "width", "height", "configureSvgSize", "quadrantData", "quadrantsGroup", "borderGroup", "dataPointGroup", "labelGroup", "titleGroup", "quadrants", "dataPoints", "quadrantRenderer_default", "diagram", "quadrant_default", "quadrantDb_default", "quadrantRenderer_default", "__name"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-VICAPDV7.mjs b/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-VICAPDV7.mjs new file mode 100644 index 0000000..593d058 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-VICAPDV7.mjs @@ -0,0 +1,7 @@ +import{A as re,O as se,S as oe,T as le,U as de,V as ue,W as ce,X as he,Y as vt,_ as xt,h as ne,j as D}from"./chunk-67TQ5CYL.mjs";import{b as lt,h as mt,o as Dt}from"./chunk-7W6UQGC5.mjs";import{a as r}from"./chunk-AQ6EADP3.mjs";var Et=(function(){var t=r(function(M,o,l,x){for(l=l||{},x=M.length;x--;l[M[x]]=o);return l},"o"),n=[1,3],f=[1,4],u=[1,5],c=[1,6],g=[1,7],y=[1,4,5,10,12,13,14,15,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],S=[1,4,5,10,12,13,14,15,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],i=[55,56,57],P=[2,36],h=[1,37],T=[1,36],b=[1,38],m=[1,35],q=[1,43],p=[1,41],A=[1,45],dt=[1,14],ft=[1,23],pt=[1,18],gt=[1,19],ut=[1,20],kt=[1,21],ct=[1,22],a=[1,24],Bt=[1,25],wt=[1,26],It=[1,27],Ot=[1,28],Wt=[1,29],N=[1,32],R=[1,33],_=[1,34],F=[1,39],Q=[1,40],C=[1,42],L=[1,44],H=[1,63],U=[1,62],v=[4,5,8,10,12,13,14,15,18,44,47,49,55,56,57,63,64,65,66,67],Nt=[1,66],Rt=[1,67],Ht=[1,68],Ut=[1,69],jt=[1,70],Xt=[1,71],Mt=[1,72],Yt=[1,73],Gt=[1,74],Kt=[1,75],Zt=[1,76],Jt=[1,77],w=[4,5,6,7,8,9,10,11,12,13,14,15,18],Z=[1,91],J=[1,92],$=[1,93],tt=[1,100],et=[1,94],at=[1,97],it=[1,95],nt=[1,96],rt=[1,98],st=[1,99],St=[1,103],$t=[10,55,56,57],O=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],At={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:r(function(o,l,x,d,k,e,ht){var s=e.length-1;switch(k){case 23:this.$=e[s];break;case 24:this.$=e[s-1]+""+e[s];break;case 26:this.$=e[s-1]+e[s];break;case 27:this.$=[e[s].trim()];break;case 28:e[s-2].push(e[s].trim()),this.$=e[s-2];break;case 29:this.$=e[s-4],d.addClass(e[s-2],e[s]);break;case 37:this.$=[];break;case 42:this.$=e[s].trim(),d.setDiagramTitle(this.$);break;case 43:this.$=e[s].trim(),d.setAccTitle(this.$);break;case 44:case 45:this.$=e[s].trim(),d.setAccDescription(this.$);break;case 46:d.addSection(e[s].substr(8)),this.$=e[s].substr(8);break;case 47:d.addPoint(e[s-3],"",e[s-1],e[s],[]);break;case 48:d.addPoint(e[s-4],e[s-3],e[s-1],e[s],[]);break;case 49:d.addPoint(e[s-4],"",e[s-2],e[s-1],e[s]);break;case 50:d.addPoint(e[s-5],e[s-4],e[s-2],e[s-1],e[s]);break;case 51:d.setXAxisLeftText(e[s-2]),d.setXAxisRightText(e[s]);break;case 52:e[s-1].text+=" \u27F6 ",d.setXAxisLeftText(e[s-1]);break;case 53:d.setXAxisLeftText(e[s]);break;case 54:d.setYAxisBottomText(e[s-2]),d.setYAxisTopText(e[s]);break;case 55:e[s-1].text+=" \u27F6 ",d.setYAxisBottomText(e[s-1]);break;case 56:d.setYAxisBottomText(e[s]);break;case 57:d.setQuadrant1Text(e[s]);break;case 58:d.setQuadrant2Text(e[s]);break;case 59:d.setQuadrant3Text(e[s]);break;case 60:d.setQuadrant4Text(e[s]);break;case 64:this.$={text:e[s],type:"text"};break;case 65:this.$={text:e[s-1].text+""+e[s],type:e[s-1].type};break;case 66:this.$={text:e[s],type:"text"};break;case 67:this.$={text:e[s],type:"markdown"};break;case 68:this.$=e[s];break;case 69:this.$=e[s-1]+""+e[s];break}},"anonymous"),table:[{18:n,26:1,27:2,28:f,55:u,56:c,57:g},{1:[3]},{18:n,26:8,27:2,28:f,55:u,56:c,57:g},{18:n,26:9,27:2,28:f,55:u,56:c,57:g},t(y,[2,33],{29:10}),t(S,[2,61]),t(S,[2,62]),t(S,[2,63]),{1:[2,30]},{1:[2,31]},t(i,P,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:h,5:T,10:b,12:m,13:q,14:p,15:A,18:dt,25:ft,35:pt,37:gt,39:ut,41:kt,42:ct,48:a,50:Bt,51:wt,52:It,53:Ot,54:Wt,60:N,61:R,63:_,64:F,65:Q,66:C,67:L}),t(y,[2,34]),{27:46,55:u,56:c,57:g},t(i,[2,37]),t(i,P,{24:13,32:15,33:16,34:17,43:30,58:31,31:47,4:h,5:T,10:b,12:m,13:q,14:p,15:A,18:dt,25:ft,35:pt,37:gt,39:ut,41:kt,42:ct,48:a,50:Bt,51:wt,52:It,53:Ot,54:Wt,60:N,61:R,63:_,64:F,65:Q,66:C,67:L}),t(i,[2,39]),t(i,[2,40]),t(i,[2,41]),{36:[1,48]},{38:[1,49]},{40:[1,50]},t(i,[2,45]),t(i,[2,46]),{18:[1,51]},{4:h,5:T,10:b,12:m,13:q,14:p,15:A,43:52,58:31,60:N,61:R,63:_,64:F,65:Q,66:C,67:L},{4:h,5:T,10:b,12:m,13:q,14:p,15:A,43:53,58:31,60:N,61:R,63:_,64:F,65:Q,66:C,67:L},{4:h,5:T,10:b,12:m,13:q,14:p,15:A,43:54,58:31,60:N,61:R,63:_,64:F,65:Q,66:C,67:L},{4:h,5:T,10:b,12:m,13:q,14:p,15:A,43:55,58:31,60:N,61:R,63:_,64:F,65:Q,66:C,67:L},{4:h,5:T,10:b,12:m,13:q,14:p,15:A,43:56,58:31,60:N,61:R,63:_,64:F,65:Q,66:C,67:L},{4:h,5:T,10:b,12:m,13:q,14:p,15:A,43:57,58:31,60:N,61:R,63:_,64:F,65:Q,66:C,67:L},{4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,44:[1,58],47:[1,59],58:61,59:60,63:_,64:F,65:Q,66:C,67:L},t(v,[2,64]),t(v,[2,66]),t(v,[2,67]),t(v,[2,70]),t(v,[2,71]),t(v,[2,72]),t(v,[2,73]),t(v,[2,74]),t(v,[2,75]),t(v,[2,76]),t(v,[2,77]),t(v,[2,78]),t(v,[2,79]),t(v,[2,80]),t(v,[2,81]),t(y,[2,35]),t(i,[2,38]),t(i,[2,42]),t(i,[2,43]),t(i,[2,44]),{3:65,4:Nt,5:Rt,6:Ht,7:Ut,8:jt,9:Xt,10:Mt,11:Yt,12:Gt,13:Kt,14:Zt,15:Jt,21:64},t(i,[2,53],{59:60,58:61,4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,49:[1,78],63:_,64:F,65:Q,66:C,67:L}),t(i,[2,56],{59:60,58:61,4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,49:[1,79],63:_,64:F,65:Q,66:C,67:L}),t(i,[2,57],{59:60,58:61,4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,63:_,64:F,65:Q,66:C,67:L}),t(i,[2,58],{59:60,58:61,4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,63:_,64:F,65:Q,66:C,67:L}),t(i,[2,59],{59:60,58:61,4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,63:_,64:F,65:Q,66:C,67:L}),t(i,[2,60],{59:60,58:61,4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,63:_,64:F,65:Q,66:C,67:L}),{45:[1,80]},{44:[1,81]},t(v,[2,65]),t(v,[2,82]),t(v,[2,83]),t(v,[2,84]),{3:83,4:Nt,5:Rt,6:Ht,7:Ut,8:jt,9:Xt,10:Mt,11:Yt,12:Gt,13:Kt,14:Zt,15:Jt,18:[1,82]},t(w,[2,23]),t(w,[2,1]),t(w,[2,2]),t(w,[2,3]),t(w,[2,4]),t(w,[2,5]),t(w,[2,6]),t(w,[2,7]),t(w,[2,8]),t(w,[2,9]),t(w,[2,10]),t(w,[2,11]),t(w,[2,12]),t(i,[2,52],{58:31,43:84,4:h,5:T,10:b,12:m,13:q,14:p,15:A,60:N,61:R,63:_,64:F,65:Q,66:C,67:L}),t(i,[2,55],{58:31,43:85,4:h,5:T,10:b,12:m,13:q,14:p,15:A,60:N,61:R,63:_,64:F,65:Q,66:C,67:L}),{46:[1,86]},{45:[1,87]},{4:Z,5:J,6:$,8:tt,11:et,13:at,16:90,17:it,18:nt,19:rt,20:st,22:89,23:88},t(w,[2,24]),t(i,[2,51],{59:60,58:61,4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,63:_,64:F,65:Q,66:C,67:L}),t(i,[2,54],{59:60,58:61,4:h,5:T,8:H,10:b,12:m,13:q,14:p,15:A,18:U,63:_,64:F,65:Q,66:C,67:L}),t(i,[2,47],{22:89,16:90,23:101,4:Z,5:J,6:$,8:tt,11:et,13:at,17:it,18:nt,19:rt,20:st}),{46:[1,102]},t(i,[2,29],{10:St}),t($t,[2,27],{16:104,4:Z,5:J,6:$,8:tt,11:et,13:at,17:it,18:nt,19:rt,20:st}),t(O,[2,25]),t(O,[2,13]),t(O,[2,14]),t(O,[2,15]),t(O,[2,16]),t(O,[2,17]),t(O,[2,18]),t(O,[2,19]),t(O,[2,20]),t(O,[2,21]),t(O,[2,22]),t(i,[2,49],{10:St}),t(i,[2,48],{22:89,16:90,23:105,4:Z,5:J,6:$,8:tt,11:et,13:at,17:it,18:nt,19:rt,20:st}),{4:Z,5:J,6:$,8:tt,11:et,13:at,16:90,17:it,18:nt,19:rt,20:st,22:106},t(O,[2,26]),t(i,[2,50],{10:St}),t($t,[2,28],{16:104,4:Z,5:J,6:$,8:tt,11:et,13:at,17:it,18:nt,19:rt,20:st})],defaultActions:{8:[2,30],9:[2,31]},parseError:r(function(o,l){if(l.recoverable)this.trace(o);else{var x=new Error(o);throw x.hash=l,x}},"parseError"),parse:r(function(o){var l=this,x=[0],d=[],k=[null],e=[],ht=this.table,s="",yt=0,te=0,ee=0,be=2,ae=1,me=e.slice.call(arguments,1),E=Object.create(this.lexer),Y={yy:{}};for(var _t in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_t)&&(Y.yy[_t]=this.yy[_t]);E.setInput(o,Y.yy),Y.yy.lexer=E,Y.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var Ft=E.yylloc;e.push(Ft);var qe=E.options&&E.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Oe(I){x.length=x.length-2*I,k.length=k.length-I,e.length=e.length-I}r(Oe,"popStack");function ke(){var I;return I=d.pop()||E.lex()||ae,typeof I!="number"&&(I instanceof Array&&(d=I,I=d.pop()),I=l.symbols_[I]||I),I}r(ke,"lex");for(var V,Qt,G,W,We,Ct,ot={},Tt,j,ie,bt;;){if(G=x[x.length-1],this.defaultActions[G]?W=this.defaultActions[G]:((V===null||typeof V>"u")&&(V=ke()),W=ht[G]&&ht[G][V]),typeof W>"u"||!W.length||!W[0]){var Lt="";bt=[];for(Tt in ht[G])this.terminals_[Tt]&&Tt>be&&bt.push("'"+this.terminals_[Tt]+"'");E.showPosition?Lt="Parse error on line "+(yt+1)+`: +`+E.showPosition()+` +Expecting `+bt.join(", ")+", got '"+(this.terminals_[V]||V)+"'":Lt="Parse error on line "+(yt+1)+": Unexpected "+(V==ae?"end of input":"'"+(this.terminals_[V]||V)+"'"),this.parseError(Lt,{text:E.match,token:this.terminals_[V]||V,line:E.yylineno,loc:Ft,expected:bt})}if(W[0]instanceof Array&&W.length>1)throw new Error("Parse Error: multiple actions possible at state: "+G+", token: "+V);switch(W[0]){case 1:x.push(V),k.push(E.yytext),e.push(E.yylloc),x.push(W[1]),V=null,Qt?(V=Qt,Qt=null):(te=E.yyleng,s=E.yytext,yt=E.yylineno,Ft=E.yylloc,ee>0&&ee--);break;case 2:if(j=this.productions_[W[1]][1],ot.$=k[k.length-j],ot._$={first_line:e[e.length-(j||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(j||1)].first_column,last_column:e[e.length-1].last_column},qe&&(ot._$.range=[e[e.length-(j||1)].range[0],e[e.length-1].range[1]]),Ct=this.performAction.apply(ot,[s,te,yt,Y.yy,W[1],k,e].concat(me)),typeof Ct<"u")return Ct;j&&(x=x.slice(0,-1*j*2),k=k.slice(0,-1*j),e=e.slice(0,-1*j)),x.push(this.productions_[W[1]][0]),k.push(ot.$),e.push(ot._$),ie=ht[x[x.length-2]][x[x.length-1]],x.push(ie);break;case 3:return!0}}return!0},"parse")},Te=(function(){var M={EOF:1,parseError:r(function(l,x){if(this.yy.parser)this.yy.parser.parseError(l,x);else throw new Error(l)},"parseError"),setInput:r(function(o,l){return this.yy=l||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:r(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var l=o.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:r(function(o){var l=o.length,x=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),x.length-1&&(this.yylineno-=x.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:x?(x.length===d.length?this.yylloc.first_column:0)+d[d.length-x.length].length-x[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(o){this.unput(this.match.slice(o))},"less"),pastInput:r(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var o=this.pastInput(),l=new Array(o.length+1).join("-");return o+this.upcomingInput()+` +`+l+"^"},"showPosition"),test_match:r(function(o,l){var x,d,k;if(this.options.backtrack_lexer&&(k={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(k.yylloc.range=this.yylloc.range.slice(0))),d=o[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],x=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),x)return x;if(this._backtrack){for(var e in k)this[e]=k[e];return!1}return!1},"test_match"),next:r(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,l,x,d;this._more||(this.yytext="",this.match="");for(var k=this._currentRules(),e=0;el[0].length)){if(l=x,d=e,this.options.backtrack_lexer){if(o=this.test_match(x,k[e]),o!==!1)return o;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(o=this.test_match(l,k[d]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:r(function(){var l=this.next();return l||this.lex()},"lex"),begin:r(function(l){this.conditionStack.push(l)},"begin"),popState:r(function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:r(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:r(function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},"topState"),pushState:r(function(l){this.begin(l)},"pushState"),stateStackSize:r(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:r(function(l,x,d,k){var e=k;switch(d){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 15;case 37:return 11;case 38:return 64;case 39:return 10;case 40:return 65;case 41:return 65;case 42:return 14;case 43:return 13;case 44:return 67;case 45:return 66;case 46:return 12;case 47:return 8;case 48:return 5;case 49:return 18;case 50:return 56;case 51:return 63;case 52:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?:[^\x00-\x7F]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return M})();At.lexer=Te;function Pt(){this.yy={}}return r(Pt,"Parser"),Pt.prototype=At,At.Parser=Pt,new Pt})();Et.parser=Et;var xe=Et;var B=ne(),qt=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{r(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:D.quadrantChart?.chartWidth||500,chartWidth:D.quadrantChart?.chartHeight||500,titlePadding:D.quadrantChart?.titlePadding||10,titleFontSize:D.quadrantChart?.titleFontSize||20,quadrantPadding:D.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:D.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:D.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:D.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:D.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:D.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:D.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:D.quadrantChart?.pointTextPadding||5,pointLabelFontSize:D.quadrantChart?.pointLabelFontSize||12,pointRadius:D.quadrantChart?.pointRadius||5,xAxisPosition:D.quadrantChart?.xAxisPosition||"top",yAxisPosition:D.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:D.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:D.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:B.quadrant1Fill,quadrant2Fill:B.quadrant2Fill,quadrant3Fill:B.quadrant3Fill,quadrant4Fill:B.quadrant4Fill,quadrant1TextFill:B.quadrant1TextFill,quadrant2TextFill:B.quadrant2TextFill,quadrant3TextFill:B.quadrant3TextFill,quadrant4TextFill:B.quadrant4TextFill,quadrantPointFill:B.quadrantPointFill,quadrantPointTextFill:B.quadrantPointTextFill,quadrantXAxisTextFill:B.quadrantXAxisTextFill,quadrantYAxisTextFill:B.quadrantYAxisTextFill,quadrantTitleFill:B.quadrantTitleFill,quadrantInternalBorderStrokeFill:B.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:B.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,lt.info("clear called")}setData(n){this.data={...this.data,...n}}addPoints(n){this.data.points=[...n,...this.data.points]}addClass(n,f){this.classes.set(n,f)}setConfig(n){lt.trace("setConfig called with: ",n),this.config={...this.config,...n}}setThemeConfig(n){lt.trace("setThemeConfig called with: ",n),this.themeConfig={...this.themeConfig,...n}}calculateSpace(n,f,u,c){let g=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,y={top:n==="top"&&f?g:0,bottom:n==="bottom"&&f?g:0},S=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,i={left:this.config.yAxisPosition==="left"&&u?S:0,right:this.config.yAxisPosition==="right"&&u?S:0},P=this.config.titleFontSize+this.config.titlePadding*2,h={top:c?P:0},T=this.config.quadrantPadding+i.left,b=this.config.quadrantPadding+y.top+h.top,m=this.config.chartWidth-this.config.quadrantPadding*2-i.left-i.right,q=this.config.chartHeight-this.config.quadrantPadding*2-y.top-y.bottom-h.top,p=m/2,A=q/2;return{xAxisSpace:y,yAxisSpace:i,titleSpace:h,quadrantSpace:{quadrantLeft:T,quadrantTop:b,quadrantWidth:m,quadrantHalfWidth:p,quadrantHeight:q,quadrantHalfHeight:A}}}getAxisLabels(n,f,u,c){let{quadrantSpace:g,titleSpace:y}=c,{quadrantHalfHeight:S,quadrantHeight:i,quadrantLeft:P,quadrantHalfWidth:h,quadrantTop:T,quadrantWidth:b}=g,m=!!this.data.xAxisRightText,q=!!this.data.yAxisTopText,p=[];return this.data.xAxisLeftText&&f&&p.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:P+(m?h/2:0),y:n==="top"?this.config.xAxisLabelPadding+y.top:this.config.xAxisLabelPadding+T+i+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&f&&p.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:P+h+(m?h/2:0),y:n==="top"?this.config.xAxisLabelPadding+y.top:this.config.xAxisLabelPadding+T+i+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&u&&p.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+P+b+this.config.quadrantPadding,y:T+i-(q?S/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:q?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&u&&p.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+P+b+this.config.quadrantPadding,y:T+S-(q?S/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:q?"center":"left",horizontalPos:"top",rotation:-90}),p}getQuadrants(n){let{quadrantSpace:f}=n,{quadrantHalfHeight:u,quadrantLeft:c,quadrantHalfWidth:g,quadrantTop:y}=f,S=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:c+g,y,width:g,height:u,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:c,y,width:g,height:u,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:c,y:y+u,width:g,height:u,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:c+g,y:y+u,width:g,height:u,fill:this.themeConfig.quadrant4Fill}];for(let i of S)i.text.x=i.x+i.width/2,this.data.points.length===0?(i.text.y=i.y+i.height/2,i.text.horizontalPos="middle"):(i.text.y=i.y+this.config.quadrantTextTopPadding,i.text.horizontalPos="top");return S}getQuadrantPoints(n){let{quadrantSpace:f}=n,{quadrantHeight:u,quadrantLeft:c,quadrantTop:g,quadrantWidth:y}=f,S=Dt().domain([0,1]).range([c,y+c]),i=Dt().domain([0,1]).range([u+g,g]);return this.data.points.map(h=>{let T=this.classes.get(h.className);return T&&(h={...T,...h}),{x:S(h.x),y:i(h.y),fill:h.color??this.themeConfig.quadrantPointFill,radius:h.radius??this.config.pointRadius,text:{text:h.text,fill:this.themeConfig.quadrantPointTextFill,x:S(h.x),y:i(h.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:h.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:h.strokeWidth??"0px"}})}getBorders(n){let f=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:u}=n,{quadrantHalfHeight:c,quadrantHeight:g,quadrantLeft:y,quadrantHalfWidth:S,quadrantTop:i,quadrantWidth:P}=u;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y-f,y1:i,x2:y+P+f,y2:i},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y+P,y1:i+f,x2:y+P,y2:i+g-f},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y-f,y1:i+g,x2:y+P+f,y2:i+g},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y,y1:i+f,x2:y,y2:i+g-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:y+S,y1:i+f,x2:y+S,y2:i+g-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:y+f,y1:i+c,x2:y+P-f,y2:i+c}]}getTitle(n){if(n)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let n=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),f=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),u=this.config.showTitle&&!!this.data.titleText,c=this.data.points.length>0?"bottom":this.config.xAxisPosition,g=this.calculateSpace(c,n,f,u);return{points:this.getQuadrantPoints(g),quadrants:this.getQuadrants(g),axisLabels:this.getAxisLabels(c,n,f,g),borderLines:this.getBorders(g),title:this.getTitle(u)}}};var K=class extends Error{static{r(this,"InvalidStyleError")}constructor(n,f,u){super(`value for ${n} ${f} is invalid, please use a valid ${u}`),this.name="InvalidStyleError"}};function zt(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}r(zt,"validateHexCode");function fe(t){return!/^\d+$/.test(t)}r(fe,"validateNumber");function pe(t){return!/^\d+px$/.test(t)}r(pe,"validateSizeInPixels");var Se=xt();function X(t){return re(t.trim(),Se)}r(X,"textSanitizer");var z=new qt;function Ae(t){z.setData({quadrant1Text:X(t.text)})}r(Ae,"setQuadrant1Text");function Pe(t){z.setData({quadrant2Text:X(t.text)})}r(Pe,"setQuadrant2Text");function _e(t){z.setData({quadrant3Text:X(t.text)})}r(_e,"setQuadrant3Text");function Fe(t){z.setData({quadrant4Text:X(t.text)})}r(Fe,"setQuadrant4Text");function Qe(t){z.setData({xAxisLeftText:X(t.text)})}r(Qe,"setXAxisLeftText");function Ce(t){z.setData({xAxisRightText:X(t.text)})}r(Ce,"setXAxisRightText");function Le(t){z.setData({yAxisTopText:X(t.text)})}r(Le,"setYAxisTopText");function ve(t){z.setData({yAxisBottomText:X(t.text)})}r(ve,"setYAxisBottomText");function Vt(t){let n={};for(let f of t){let[u,c]=f.trim().split(/\s*:\s*/);if(u==="radius"){if(fe(c))throw new K(u,c,"number");n.radius=parseInt(c)}else if(u==="color"){if(zt(c))throw new K(u,c,"hex code");n.color=c}else if(u==="stroke-color"){if(zt(c))throw new K(u,c,"hex code");n.strokeColor=c}else if(u==="stroke-width"){if(pe(c))throw new K(u,c,"number of pixels (eg. 10px)");n.strokeWidth=c}else throw new Error(`style named ${u} is not supported.`)}return n}r(Vt,"parseStyles");function De(t,n,f,u,c){let g=Vt(c);z.addPoints([{x:f,y:u,text:X(t.text),className:n,...g}])}r(De,"addPoint");function Ee(t,n){z.addClass(t,Vt(n))}r(Ee,"addClass");function ze(t){z.setConfig({chartWidth:t})}r(ze,"setWidth");function Ve(t){z.setConfig({chartHeight:t})}r(Ve,"setHeight");function Be(){let t=xt(),{themeVariables:n,quadrantChart:f}=t;return f&&z.setConfig(f),z.setThemeConfig({quadrant1Fill:n.quadrant1Fill,quadrant2Fill:n.quadrant2Fill,quadrant3Fill:n.quadrant3Fill,quadrant4Fill:n.quadrant4Fill,quadrant1TextFill:n.quadrant1TextFill,quadrant2TextFill:n.quadrant2TextFill,quadrant3TextFill:n.quadrant3TextFill,quadrant4TextFill:n.quadrant4TextFill,quadrantPointFill:n.quadrantPointFill,quadrantPointTextFill:n.quadrantPointTextFill,quadrantXAxisTextFill:n.quadrantXAxisTextFill,quadrantYAxisTextFill:n.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:n.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:n.quadrantInternalBorderStrokeFill,quadrantTitleFill:n.quadrantTitleFill}),z.setData({titleText:vt()}),z.build()}r(Be,"getQuadrantData");var we=r(function(){z.clear(),oe()},"clear"),ge={setWidth:ze,setHeight:Ve,setQuadrant1Text:Ae,setQuadrant2Text:Pe,setQuadrant3Text:_e,setQuadrant4Text:Fe,setXAxisLeftText:Qe,setXAxisRightText:Ce,setYAxisTopText:Le,setYAxisBottomText:ve,parseStyles:Vt,addPoint:De,addClass:Ee,getQuadrantData:Be,clear:we,setAccTitle:le,getAccTitle:de,setDiagramTitle:he,getDiagramTitle:vt,getAccDescription:ce,setAccDescription:ue};var Ie=r((t,n,f,u)=>{function c(a){return a==="top"?"hanging":"middle"}r(c,"getDominantBaseLine");function g(a){return a==="left"?"start":"middle"}r(g,"getTextAnchor");function y(a){return`translate(${a.x}, ${a.y}) rotate(${a.rotation||0})`}r(y,"getTransformation");let S=xt();lt.debug(`Rendering quadrant chart +`+t);let i=S.securityLevel,P;i==="sandbox"&&(P=mt("#i"+n));let T=(i==="sandbox"?mt(P.nodes()[0].contentDocument.body):mt("body")).select(`[id="${n}"]`),b=T.append("g").attr("class","main"),m=S.quadrantChart?.chartWidth??500,q=S.quadrantChart?.chartHeight??500;se(T,q,m,S.quadrantChart?.useMaxWidth??!0),T.attr("viewBox","0 0 "+m+" "+q),u.db.setHeight(q),u.db.setWidth(m);let p=u.db.getQuadrantData(),A=b.append("g").attr("class","quadrants"),dt=b.append("g").attr("class","border"),ft=b.append("g").attr("class","data-points"),pt=b.append("g").attr("class","labels"),gt=b.append("g").attr("class","title");p.title&>.append("text").attr("x",0).attr("y",0).attr("fill",p.title.fill).attr("font-size",p.title.fontSize).attr("dominant-baseline",c(p.title.horizontalPos)).attr("text-anchor",g(p.title.verticalPos)).attr("transform",y(p.title)).text(p.title.text),p.borderLines&&dt.selectAll("line").data(p.borderLines).enter().append("line").attr("x1",a=>a.x1).attr("y1",a=>a.y1).attr("x2",a=>a.x2).attr("y2",a=>a.y2).style("stroke",a=>a.strokeFill).style("stroke-width",a=>a.strokeWidth);let ut=A.selectAll("g.quadrant").data(p.quadrants).enter().append("g").attr("class","quadrant");ut.append("rect").attr("x",a=>a.x).attr("y",a=>a.y).attr("width",a=>a.width).attr("height",a=>a.height).attr("fill",a=>a.fill),ut.append("text").attr("x",0).attr("y",0).attr("fill",a=>a.text.fill).attr("font-size",a=>a.text.fontSize).attr("dominant-baseline",a=>c(a.text.horizontalPos)).attr("text-anchor",a=>g(a.text.verticalPos)).attr("transform",a=>y(a.text)).text(a=>a.text.text),pt.selectAll("g.label").data(p.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(a=>a.text).attr("fill",a=>a.fill).attr("font-size",a=>a.fontSize).attr("dominant-baseline",a=>c(a.horizontalPos)).attr("text-anchor",a=>g(a.verticalPos)).attr("transform",a=>y(a));let ct=ft.selectAll("g.data-point").data(p.points).enter().append("g").attr("class","data-point");ct.append("circle").attr("cx",a=>a.x).attr("cy",a=>a.y).attr("r",a=>a.radius).attr("fill",a=>a.fill).attr("stroke",a=>a.strokeColor).attr("stroke-width",a=>a.strokeWidth),ct.append("text").attr("x",0).attr("y",0).text(a=>a.text.text).attr("fill",a=>a.text.fill).attr("font-size",a=>a.text.fontSize).attr("dominant-baseline",a=>c(a.text.horizontalPos)).attr("text-anchor",a=>g(a.text.verticalPos)).attr("transform",a=>y(a.text))},"draw"),ye={draw:Ie};var xa={parser:xe,db:ge,renderer:ye,styles:r(()=>"","styles")};export{xa as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-VICAPDV7.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-VICAPDV7.mjs.map new file mode 100644 index 0000000..7e09684 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/quadrantDiagram-VICAPDV7.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/quadrant-chart/parser/quadrant.jison", "../../../src/diagrams/quadrant-chart/quadrantBuilder.ts", "../../../src/diagrams/quadrant-chart/utils.ts", "../../../src/diagrams/quadrant-chart/quadrantDb.ts", "../../../src/diagrams/quadrant-chart/quadrantRenderer.ts", "../../../src/diagrams/quadrant-chart/quadrantDiagram.ts"], + "sourcesContent": ["/* 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,4],$V2=[1,5],$V3=[1,6],$V4=[1,7],$V5=[1,4,5,10,12,13,14,15,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],$V6=[1,4,5,10,12,13,14,15,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],$V7=[55,56,57],$V8=[2,36],$V9=[1,37],$Va=[1,36],$Vb=[1,38],$Vc=[1,35],$Vd=[1,43],$Ve=[1,41],$Vf=[1,45],$Vg=[1,14],$Vh=[1,23],$Vi=[1,18],$Vj=[1,19],$Vk=[1,20],$Vl=[1,21],$Vm=[1,22],$Vn=[1,24],$Vo=[1,25],$Vp=[1,26],$Vq=[1,27],$Vr=[1,28],$Vs=[1,29],$Vt=[1,32],$Vu=[1,33],$Vv=[1,34],$Vw=[1,39],$Vx=[1,40],$Vy=[1,42],$Vz=[1,44],$VA=[1,63],$VB=[1,62],$VC=[4,5,8,10,12,13,14,15,18,44,47,49,55,56,57,63,64,65,66,67],$VD=[1,66],$VE=[1,67],$VF=[1,68],$VG=[1,69],$VH=[1,70],$VI=[1,71],$VJ=[1,72],$VK=[1,73],$VL=[1,74],$VM=[1,75],$VN=[1,76],$VO=[1,77],$VP=[4,5,6,7,8,9,10,11,12,13,14,15,18],$VQ=[1,91],$VR=[1,92],$VS=[1,93],$VT=[1,100],$VU=[1,94],$VV=[1,97],$VW=[1,95],$VX=[1,96],$VY=[1,98],$VZ=[1,99],$V_=[1,103],$V$=[10,55,56,57],$V01=[4,5,6,8,10,11,13,17,18,19,20,55,56,57];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"idStringToken\":3,\"ALPHA\":4,\"NUM\":5,\"NODE_STRING\":6,\"DOWN\":7,\"MINUS\":8,\"DEFAULT\":9,\"COMMA\":10,\"COLON\":11,\"AMP\":12,\"BRKT\":13,\"MULT\":14,\"UNICODE_TEXT\":15,\"styleComponent\":16,\"UNIT\":17,\"SPACE\":18,\"STYLE\":19,\"PCT\":20,\"idString\":21,\"style\":22,\"stylesOpt\":23,\"classDefStatement\":24,\"CLASSDEF\":25,\"start\":26,\"eol\":27,\"QUADRANT\":28,\"document\":29,\"line\":30,\"statement\":31,\"axisDetails\":32,\"quadrantDetails\":33,\"points\":34,\"title\":35,\"title_value\":36,\"acc_title\":37,\"acc_title_value\":38,\"acc_descr\":39,\"acc_descr_value\":40,\"acc_descr_multiline_value\":41,\"section\":42,\"text\":43,\"point_start\":44,\"point_x\":45,\"point_y\":46,\"class_name\":47,\"X-AXIS\":48,\"AXIS-TEXT-DELIMITER\":49,\"Y-AXIS\":50,\"QUADRANT_1\":51,\"QUADRANT_2\":52,\"QUADRANT_3\":53,\"QUADRANT_4\":54,\"NEWLINE\":55,\"SEMI\":56,\"EOF\":57,\"alphaNumToken\":58,\"textNoTagsToken\":59,\"STR\":60,\"MD_STR\":61,\"alphaNum\":62,\"PUNCTUATION\":63,\"PLUS\":64,\"EQUALS\":65,\"DOT\":66,\"UNDERSCORE\":67,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ALPHA\",5:\"NUM\",6:\"NODE_STRING\",7:\"DOWN\",8:\"MINUS\",9:\"DEFAULT\",10:\"COMMA\",11:\"COLON\",12:\"AMP\",13:\"BRKT\",14:\"MULT\",15:\"UNICODE_TEXT\",17:\"UNIT\",18:\"SPACE\",19:\"STYLE\",20:\"PCT\",25:\"CLASSDEF\",28:\"QUADRANT\",35:\"title\",36:\"title_value\",37:\"acc_title\",38:\"acc_title_value\",39:\"acc_descr\",40:\"acc_descr_value\",41:\"acc_descr_multiline_value\",42:\"section\",44:\"point_start\",45:\"point_x\",46:\"point_y\",47:\"class_name\",48:\"X-AXIS\",49:\"AXIS-TEXT-DELIMITER\",50:\"Y-AXIS\",51:\"QUADRANT_1\",52:\"QUADRANT_2\",53:\"QUADRANT_3\",54:\"QUADRANT_4\",55:\"NEWLINE\",56:\"SEMI\",57:\"EOF\",60:\"STR\",61:\"MD_STR\",63:\"PUNCTUATION\",64:\"PLUS\",65:\"EQUALS\",66:\"DOT\",67:\"UNDERSCORE\"},\nproductions_: [0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 23:\nthis.$=$$[$0]\nbreak;\ncase 24:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 26:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 27:\nthis.$ = [$$[$0].trim()]\nbreak;\ncase 28:\n$$[$0-2].push($$[$0].trim());this.$ = $$[$0-2];\nbreak;\ncase 29:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 37:\nthis.$=[];\nbreak;\ncase 42:\n this.$=$$[$0].trim();yy.setDiagramTitle(this.$); \nbreak;\ncase 43:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 44: case 45:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 46:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 47:\nyy.addPoint($$[$0-3], \"\", $$[$0-1], $$[$0], []);\nbreak;\ncase 48:\nyy.addPoint($$[$0-4], $$[$0-3], $$[$0-1], $$[$0], []);\nbreak;\ncase 49:\nyy.addPoint($$[$0-4], \"\", $$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 50:\nyy.addPoint($$[$0-5], $$[$0-4], $$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 51:\nyy.setXAxisLeftText($$[$0-2]); yy.setXAxisRightText($$[$0]);\nbreak;\ncase 52:\n$$[$0-1].text += \" \u27F6 \"; yy.setXAxisLeftText($$[$0-1]);\nbreak;\ncase 53:\nyy.setXAxisLeftText($$[$0]);\nbreak;\ncase 54:\nyy.setYAxisBottomText($$[$0-2]); yy.setYAxisTopText($$[$0]);\nbreak;\ncase 55:\n$$[$0-1].text += \" \u27F6 \"; yy.setYAxisBottomText($$[$0-1]);\nbreak;\ncase 56:\nyy.setYAxisBottomText($$[$0]);\nbreak;\ncase 57:\nyy.setQuadrant1Text($$[$0])\nbreak;\ncase 58:\nyy.setQuadrant2Text($$[$0])\nbreak;\ncase 59:\nyy.setQuadrant3Text($$[$0])\nbreak;\ncase 60:\nyy.setQuadrant4Text($$[$0])\nbreak;\ncase 64:\n this.$={text:$$[$0], type: 'text'};\nbreak;\ncase 65:\n this.$={text:$$[$0-1].text+''+$$[$0], type: $$[$0-1].type};\nbreak;\ncase 66:\n this.$={text: $$[$0], type: 'text'};\nbreak;\ncase 67:\n this.$={text: $$[$0], type: 'markdown'};\nbreak;\ncase 68:\nthis.$=$$[$0];\nbreak;\ncase 69:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\n}\n},\ntable: [{18:$V0,26:1,27:2,28:$V1,55:$V2,56:$V3,57:$V4},{1:[3]},{18:$V0,26:8,27:2,28:$V1,55:$V2,56:$V3,57:$V4},{18:$V0,26:9,27:2,28:$V1,55:$V2,56:$V3,57:$V4},o($V5,[2,33],{29:10}),o($V6,[2,61]),o($V6,[2,62]),o($V6,[2,63]),{1:[2,30]},{1:[2,31]},o($V7,$V8,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$Vg,25:$Vh,35:$Vi,37:$Vj,39:$Vk,41:$Vl,42:$Vm,48:$Vn,50:$Vo,51:$Vp,52:$Vq,53:$Vr,54:$Vs,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V5,[2,34]),{27:46,55:$V2,56:$V3,57:$V4},o($V7,[2,37]),o($V7,$V8,{24:13,32:15,33:16,34:17,43:30,58:31,31:47,4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$Vg,25:$Vh,35:$Vi,37:$Vj,39:$Vk,41:$Vl,42:$Vm,48:$Vn,50:$Vo,51:$Vp,52:$Vq,53:$Vr,54:$Vs,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,39]),o($V7,[2,40]),o($V7,[2,41]),{36:[1,48]},{38:[1,49]},{40:[1,50]},o($V7,[2,45]),o($V7,[2,46]),{18:[1,51]},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,43:52,58:31,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,43:53,58:31,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,43:54,58:31,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,43:55,58:31,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,43:56,58:31,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz},{4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,43:57,58:31,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz},{4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,44:[1,58],47:[1,59],58:61,59:60,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz},o($VC,[2,64]),o($VC,[2,66]),o($VC,[2,67]),o($VC,[2,70]),o($VC,[2,71]),o($VC,[2,72]),o($VC,[2,73]),o($VC,[2,74]),o($VC,[2,75]),o($VC,[2,76]),o($VC,[2,77]),o($VC,[2,78]),o($VC,[2,79]),o($VC,[2,80]),o($VC,[2,81]),o($V5,[2,35]),o($V7,[2,38]),o($V7,[2,42]),o($V7,[2,43]),o($V7,[2,44]),{3:65,4:$VD,5:$VE,6:$VF,7:$VG,8:$VH,9:$VI,10:$VJ,11:$VK,12:$VL,13:$VM,14:$VN,15:$VO,21:64},o($V7,[2,53],{59:60,58:61,4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,49:[1,78],63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,56],{59:60,58:61,4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,49:[1,79],63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,57],{59:60,58:61,4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,58],{59:60,58:61,4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,59],{59:60,58:61,4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,60],{59:60,58:61,4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),{45:[1,80]},{44:[1,81]},o($VC,[2,65]),o($VC,[2,82]),o($VC,[2,83]),o($VC,[2,84]),{3:83,4:$VD,5:$VE,6:$VF,7:$VG,8:$VH,9:$VI,10:$VJ,11:$VK,12:$VL,13:$VM,14:$VN,15:$VO,18:[1,82]},o($VP,[2,23]),o($VP,[2,1]),o($VP,[2,2]),o($VP,[2,3]),o($VP,[2,4]),o($VP,[2,5]),o($VP,[2,6]),o($VP,[2,7]),o($VP,[2,8]),o($VP,[2,9]),o($VP,[2,10]),o($VP,[2,11]),o($VP,[2,12]),o($V7,[2,52],{58:31,43:84,4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,55],{58:31,43:85,4:$V9,5:$Va,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,60:$Vt,61:$Vu,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),{46:[1,86]},{45:[1,87]},{4:$VQ,5:$VR,6:$VS,8:$VT,11:$VU,13:$VV,16:90,17:$VW,18:$VX,19:$VY,20:$VZ,22:89,23:88},o($VP,[2,24]),o($V7,[2,51],{59:60,58:61,4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,54],{59:60,58:61,4:$V9,5:$Va,8:$VA,10:$Vb,12:$Vc,13:$Vd,14:$Ve,15:$Vf,18:$VB,63:$Vv,64:$Vw,65:$Vx,66:$Vy,67:$Vz}),o($V7,[2,47],{22:89,16:90,23:101,4:$VQ,5:$VR,6:$VS,8:$VT,11:$VU,13:$VV,17:$VW,18:$VX,19:$VY,20:$VZ}),{46:[1,102]},o($V7,[2,29],{10:$V_}),o($V$,[2,27],{16:104,4:$VQ,5:$VR,6:$VS,8:$VT,11:$VU,13:$VV,17:$VW,18:$VX,19:$VY,20:$VZ}),o($V01,[2,25]),o($V01,[2,13]),o($V01,[2,14]),o($V01,[2,15]),o($V01,[2,16]),o($V01,[2,17]),o($V01,[2,18]),o($V01,[2,19]),o($V01,[2,20]),o($V01,[2,21]),o($V01,[2,22]),o($V7,[2,49],{10:$V_}),o($V7,[2,48],{22:89,16:90,23:105,4:$VQ,5:$VR,6:$VS,8:$VT,11:$VU,13:$VV,17:$VW,18:$VX,19:$VY,20:$VZ}),{4:$VQ,5:$VR,6:$VS,8:$VT,11:$VU,13:$VV,16:90,17:$VW,18:$VX,19:$VY,20:$VZ,22:106},o($V01,[2,26]),o($V7,[2,50],{10:$V_}),o($V$,[2,28],{16:104,4:$VQ,5:$VR,6:$VS,8:$VT,11:$VU,13:$VV,17:$VW,18:$VX,19:$VY,20:$VZ})],\ndefaultActions: {8:[2,30],9:[2,31]},\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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2:return 55;\nbreak;\ncase 3:/* do nothing */\nbreak;\ncase 4: this.begin(\"title\");return 35; \nbreak;\ncase 5: this.popState(); return \"title_value\"; \nbreak;\ncase 6: this.begin(\"acc_title\");return 37; \nbreak;\ncase 7: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 8: this.begin(\"acc_descr\");return 39; \nbreak;\ncase 9: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 10: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 11: this.popState(); \nbreak;\ncase 12:return \"acc_descr_multiline_value\";\nbreak;\ncase 13:return 48;\nbreak;\ncase 14:return 50;\nbreak;\ncase 15:return 49\nbreak;\ncase 16:return 51;\nbreak;\ncase 17:return 52;\nbreak;\ncase 18:return 53;\nbreak;\ncase 19:return 54;\nbreak;\ncase 20:return 25;\nbreak;\ncase 21: this.begin(\"md_string\");\nbreak;\ncase 22: return \"MD_STR\";\nbreak;\ncase 23: this.popState();\nbreak;\ncase 24:this.begin(\"string\");\nbreak;\ncase 25:this.popState();\nbreak;\ncase 26:return \"STR\";\nbreak;\ncase 27:this.begin('class_name')\nbreak;\ncase 28:this.popState(); return 47;\nbreak;\ncase 29:this.begin(\"point_start\"); return 44;\nbreak;\ncase 30:this.begin('point_x'); return 45;\nbreak;\ncase 31:this.popState();\nbreak;\ncase 32:this.popState(); this.begin('point_y');\nbreak;\ncase 33:this.popState(); return 46;\nbreak;\ncase 34:return 28;\nbreak;\ncase 35:return 4;\nbreak;\ncase 36:return 15;\nbreak;\ncase 37:return 11;\nbreak;\ncase 38:return 64;\nbreak;\ncase 39:return 10;\nbreak;\ncase 40:return 65;\nbreak;\ncase 41:return 65;\nbreak;\ncase 42:return 14;\nbreak;\ncase 43:return 13;\nbreak;\ncase 44:return 67;\nbreak;\ncase 45:return 66;\nbreak;\ncase 46:return 12;\nbreak;\ncase 47:return 8;\nbreak;\ncase 48:return 5;\nbreak;\ncase 49:return 18;\nbreak;\ncase 50:return 56;\nbreak;\ncase 51:return 63;\nbreak;\ncase 52:return 57;\nbreak;\n}\n},\nrules: [/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\\b)/i,/^(?:[\"][`])/i,/^(?:[^`\"]+)/i,/^(?:[`][\"])/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?::::)/i,/^(?:^\\w+)/i,/^(?:\\s*:\\s*\\[\\s*)/i,/^(?:(1)|(0(.\\d+)?))/i,/^(?:\\s*\\] *)/i,/^(?:\\s*,\\s*)/i,/^(?:(1)|(0(.\\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?:[^\\x00-\\x7F]+)/i,/^(?::)/i,/^(?:\\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\\*)/i,/^(?:#)/i,/^(?:[\\_])/i,/^(?:\\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\\s)/i,/^(?:;)/i,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/i,/^(?:$)/i],\nconditions: {\"class_name\":{\"rules\":[28],\"inclusive\":false},\"point_y\":{\"rules\":[33],\"inclusive\":false},\"point_x\":{\"rules\":[32],\"inclusive\":false},\"point_start\":{\"rules\":[30,31],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[11,12],\"inclusive\":false},\"acc_descr\":{\"rules\":[9],\"inclusive\":false},\"acc_title\":{\"rules\":[7],\"inclusive\":false},\"title\":{\"rules\":[5],\"inclusive\":false},\"md_string\":{\"rules\":[22,23],\"inclusive\":false},\"string\":{\"rules\":[25,26],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { scaleLinear } from 'd3';\nimport type { BaseDiagramConfig, QuadrantChartConfig } from '../../config.type.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport { log } from '../../logger.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport type { Point } from '../../types.js';\n\nconst defaultThemeVariables = getThemeVariables();\n\nexport type TextVerticalPos = 'left' | 'center' | 'right';\nexport type TextHorizontalPos = 'top' | 'middle' | 'bottom';\n\nexport interface StylesObject {\n className?: string;\n radius?: number;\n color?: string;\n strokeColor?: string;\n strokeWidth?: string;\n}\n\nexport interface QuadrantPointInputType extends Point, StylesObject {\n text: string;\n}\n\nexport interface QuadrantTextType extends Point {\n text: string;\n fill: string;\n verticalPos: TextVerticalPos;\n horizontalPos: TextHorizontalPos;\n fontSize: number;\n rotation: number;\n}\n\nexport interface QuadrantPointType\n extends Point,\n Pick {\n fill: string;\n radius: number;\n text: QuadrantTextType;\n}\n\nexport interface QuadrantQuadrantsType extends Point {\n text: QuadrantTextType;\n width: number;\n height: number;\n fill: string;\n}\n\nexport interface QuadrantLineType {\n strokeWidth: number;\n strokeFill: string;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nexport interface QuadrantBuildType {\n points: QuadrantPointType[];\n quadrants: QuadrantQuadrantsType[];\n axisLabels: QuadrantTextType[];\n title?: QuadrantTextType;\n borderLines?: QuadrantLineType[];\n}\n\nexport interface QuadrantBuilderData {\n titleText: string;\n quadrant1Text: string;\n quadrant2Text: string;\n quadrant3Text: string;\n quadrant4Text: string;\n xAxisLeftText: string;\n xAxisRightText: string;\n yAxisBottomText: string;\n yAxisTopText: string;\n points: QuadrantPointInputType[];\n}\n\nexport interface QuadrantBuilderConfig\n extends Required> {\n showXAxis: boolean;\n showYAxis: boolean;\n showTitle: boolean;\n}\n\nexport interface QuadrantBuilderThemeConfig {\n quadrantTitleFill: string;\n quadrant1Fill: string;\n quadrant2Fill: string;\n quadrant3Fill: string;\n quadrant4Fill: string;\n quadrant1TextFill: string;\n quadrant2TextFill: string;\n quadrant3TextFill: string;\n quadrant4TextFill: string;\n quadrantPointFill: string;\n quadrantPointTextFill: string;\n quadrantXAxisTextFill: string;\n quadrantYAxisTextFill: string;\n quadrantInternalBorderStrokeFill: string;\n quadrantExternalBorderStrokeFill: string;\n}\n\ninterface CalculateSpaceData {\n xAxisSpace: {\n top: number;\n bottom: number;\n };\n yAxisSpace: {\n left: number;\n right: number;\n };\n titleSpace: {\n top: number;\n };\n quadrantSpace: {\n quadrantLeft: number;\n quadrantTop: number;\n quadrantWidth: number;\n quadrantHalfWidth: number;\n quadrantHeight: number;\n quadrantHalfHeight: number;\n };\n}\n\nexport class QuadrantBuilder {\n private config: QuadrantBuilderConfig;\n private themeConfig: QuadrantBuilderThemeConfig;\n private data: QuadrantBuilderData;\n private classes = new Map();\n\n constructor() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n }\n\n getDefaultData(): QuadrantBuilderData {\n return {\n titleText: '',\n quadrant1Text: '',\n quadrant2Text: '',\n quadrant3Text: '',\n quadrant4Text: '',\n xAxisLeftText: '',\n xAxisRightText: '',\n yAxisBottomText: '',\n yAxisTopText: '',\n points: [],\n };\n }\n\n getDefaultConfig(): QuadrantBuilderConfig {\n return {\n showXAxis: true,\n showYAxis: true,\n showTitle: true,\n chartHeight: defaultConfig.quadrantChart?.chartWidth || 500,\n chartWidth: defaultConfig.quadrantChart?.chartHeight || 500,\n titlePadding: defaultConfig.quadrantChart?.titlePadding || 10,\n titleFontSize: defaultConfig.quadrantChart?.titleFontSize || 20,\n quadrantPadding: defaultConfig.quadrantChart?.quadrantPadding || 5,\n xAxisLabelPadding: defaultConfig.quadrantChart?.xAxisLabelPadding || 5,\n yAxisLabelPadding: defaultConfig.quadrantChart?.yAxisLabelPadding || 5,\n xAxisLabelFontSize: defaultConfig.quadrantChart?.xAxisLabelFontSize || 16,\n yAxisLabelFontSize: defaultConfig.quadrantChart?.yAxisLabelFontSize || 16,\n quadrantLabelFontSize: defaultConfig.quadrantChart?.quadrantLabelFontSize || 16,\n quadrantTextTopPadding: defaultConfig.quadrantChart?.quadrantTextTopPadding || 5,\n pointTextPadding: defaultConfig.quadrantChart?.pointTextPadding || 5,\n pointLabelFontSize: defaultConfig.quadrantChart?.pointLabelFontSize || 12,\n pointRadius: defaultConfig.quadrantChart?.pointRadius || 5,\n xAxisPosition: defaultConfig.quadrantChart?.xAxisPosition || 'top',\n yAxisPosition: defaultConfig.quadrantChart?.yAxisPosition || 'left',\n quadrantInternalBorderStrokeWidth:\n defaultConfig.quadrantChart?.quadrantInternalBorderStrokeWidth || 1,\n quadrantExternalBorderStrokeWidth:\n defaultConfig.quadrantChart?.quadrantExternalBorderStrokeWidth || 2,\n };\n }\n\n getDefaultThemeConfig(): QuadrantBuilderThemeConfig {\n return {\n quadrant1Fill: defaultThemeVariables.quadrant1Fill,\n quadrant2Fill: defaultThemeVariables.quadrant2Fill,\n quadrant3Fill: defaultThemeVariables.quadrant3Fill,\n quadrant4Fill: defaultThemeVariables.quadrant4Fill,\n quadrant1TextFill: defaultThemeVariables.quadrant1TextFill,\n quadrant2TextFill: defaultThemeVariables.quadrant2TextFill,\n quadrant3TextFill: defaultThemeVariables.quadrant3TextFill,\n quadrant4TextFill: defaultThemeVariables.quadrant4TextFill,\n quadrantPointFill: defaultThemeVariables.quadrantPointFill,\n quadrantPointTextFill: defaultThemeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: defaultThemeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: defaultThemeVariables.quadrantYAxisTextFill,\n quadrantTitleFill: defaultThemeVariables.quadrantTitleFill,\n quadrantInternalBorderStrokeFill: defaultThemeVariables.quadrantInternalBorderStrokeFill,\n quadrantExternalBorderStrokeFill: defaultThemeVariables.quadrantExternalBorderStrokeFill,\n };\n }\n\n clear() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n this.classes = new Map();\n log.info('clear called');\n }\n\n setData(data: Partial) {\n this.data = { ...this.data, ...data };\n }\n\n addPoints(points: QuadrantPointInputType[]) {\n this.data.points = [...points, ...this.data.points];\n }\n\n addClass(className: string, styles: StylesObject) {\n this.classes.set(className, styles);\n }\n\n setConfig(config: Partial) {\n log.trace('setConfig called with: ', config);\n this.config = { ...this.config, ...config };\n }\n\n setThemeConfig(themeConfig: Partial) {\n log.trace('setThemeConfig called with: ', themeConfig);\n this.themeConfig = { ...this.themeConfig, ...themeConfig };\n }\n\n calculateSpace(\n xAxisPosition: typeof this.config.xAxisPosition,\n showXAxis: boolean,\n showYAxis: boolean,\n showTitle: boolean\n ): CalculateSpaceData {\n const xAxisSpaceCalculation =\n this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize;\n const xAxisSpace = {\n top: xAxisPosition === 'top' && showXAxis ? xAxisSpaceCalculation : 0,\n bottom: xAxisPosition === 'bottom' && showXAxis ? xAxisSpaceCalculation : 0,\n };\n\n const yAxisSpaceCalculation =\n this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize;\n const yAxisSpace = {\n left: this.config.yAxisPosition === 'left' && showYAxis ? yAxisSpaceCalculation : 0,\n right: this.config.yAxisPosition === 'right' && showYAxis ? yAxisSpaceCalculation : 0,\n };\n\n const titleSpaceCalculation = this.config.titleFontSize + this.config.titlePadding * 2;\n const titleSpace = {\n top: showTitle ? titleSpaceCalculation : 0,\n };\n\n const quadrantLeft = this.config.quadrantPadding + yAxisSpace.left;\n const quadrantTop = this.config.quadrantPadding + xAxisSpace.top + titleSpace.top;\n const quadrantWidth =\n this.config.chartWidth - this.config.quadrantPadding * 2 - yAxisSpace.left - yAxisSpace.right;\n const quadrantHeight =\n this.config.chartHeight -\n this.config.quadrantPadding * 2 -\n xAxisSpace.top -\n xAxisSpace.bottom -\n titleSpace.top;\n\n const quadrantHalfWidth = quadrantWidth / 2;\n const quadrantHalfHeight = quadrantHeight / 2;\n const quadrantSpace = {\n quadrantLeft,\n quadrantTop,\n quadrantWidth,\n quadrantHalfWidth,\n quadrantHeight,\n quadrantHalfHeight,\n };\n\n return {\n xAxisSpace,\n yAxisSpace,\n titleSpace,\n quadrantSpace,\n };\n }\n\n getAxisLabels(\n xAxisPosition: typeof this.config.xAxisPosition,\n showXAxis: boolean,\n showYAxis: boolean,\n spaceData: CalculateSpaceData\n ): QuadrantTextType[] {\n const { quadrantSpace, titleSpace } = spaceData;\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth,\n } = quadrantSpace;\n\n const drawXAxisLabelsInMiddle = Boolean(this.data.xAxisRightText);\n const drawYAxisLabelsInMiddle = Boolean(this.data.yAxisTopText);\n\n const axisLabels: QuadrantTextType[] = [];\n\n if (this.data.xAxisLeftText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisLeftText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0),\n y:\n xAxisPosition === 'top'\n ? this.config.xAxisLabelPadding + titleSpace.top\n : this.config.xAxisLabelPadding +\n quadrantTop +\n quadrantHeight +\n this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawXAxisLabelsInMiddle ? 'center' : 'left',\n horizontalPos: 'top',\n rotation: 0,\n });\n }\n if (this.data.xAxisRightText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisRightText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + quadrantHalfWidth + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0),\n y:\n xAxisPosition === 'top'\n ? this.config.xAxisLabelPadding + titleSpace.top\n : this.config.xAxisLabelPadding +\n quadrantTop +\n quadrantHeight +\n this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawXAxisLabelsInMiddle ? 'center' : 'left',\n horizontalPos: 'top',\n rotation: 0,\n });\n }\n\n if (this.data.yAxisBottomText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisBottomText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x:\n this.config.yAxisPosition === 'left'\n ? this.config.yAxisLabelPadding\n : this.config.yAxisLabelPadding +\n quadrantLeft +\n quadrantWidth +\n this.config.quadrantPadding,\n y: quadrantTop + quadrantHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawYAxisLabelsInMiddle ? 'center' : 'left',\n horizontalPos: 'top',\n rotation: -90,\n });\n }\n if (this.data.yAxisTopText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisTopText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x:\n this.config.yAxisPosition === 'left'\n ? this.config.yAxisLabelPadding\n : this.config.yAxisLabelPadding +\n quadrantLeft +\n quadrantWidth +\n this.config.quadrantPadding,\n y:\n quadrantTop + quadrantHalfHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawYAxisLabelsInMiddle ? 'center' : 'left',\n horizontalPos: 'top',\n rotation: -90,\n });\n }\n return axisLabels;\n }\n\n getQuadrants(spaceData: CalculateSpaceData): QuadrantQuadrantsType[] {\n const { quadrantSpace } = spaceData;\n\n const { quadrantHalfHeight, quadrantLeft, quadrantHalfWidth, quadrantTop } = quadrantSpace;\n\n const quadrants: QuadrantQuadrantsType[] = [\n {\n text: {\n text: this.data.quadrant1Text,\n fill: this.themeConfig.quadrant1TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: 'center',\n horizontalPos: 'middle',\n rotation: 0,\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant1Fill,\n },\n {\n text: {\n text: this.data.quadrant2Text,\n fill: this.themeConfig.quadrant2TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: 'center',\n horizontalPos: 'middle',\n rotation: 0,\n },\n x: quadrantLeft,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant2Fill,\n },\n {\n text: {\n text: this.data.quadrant3Text,\n fill: this.themeConfig.quadrant3TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: 'center',\n horizontalPos: 'middle',\n rotation: 0,\n },\n x: quadrantLeft,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant3Fill,\n },\n {\n text: {\n text: this.data.quadrant4Text,\n fill: this.themeConfig.quadrant4TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: 'center',\n horizontalPos: 'middle',\n rotation: 0,\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant4Fill,\n },\n ];\n for (const quadrant of quadrants) {\n quadrant.text.x = quadrant.x + quadrant.width / 2;\n // place the text in the center of the box\n if (this.data.points.length === 0) {\n quadrant.text.y = quadrant.y + quadrant.height / 2;\n quadrant.text.horizontalPos = 'middle';\n // place the text top of the quadrant square\n } else {\n quadrant.text.y = quadrant.y + this.config.quadrantTextTopPadding;\n quadrant.text.horizontalPos = 'top';\n }\n }\n\n return quadrants;\n }\n\n getQuadrantPoints(spaceData: CalculateSpaceData): QuadrantPointType[] {\n const { quadrantSpace } = spaceData;\n\n const { quadrantHeight, quadrantLeft, quadrantTop, quadrantWidth } = quadrantSpace;\n\n const xAxis = scaleLinear()\n .domain([0, 1])\n .range([quadrantLeft, quadrantWidth + quadrantLeft]);\n\n const yAxis = scaleLinear()\n .domain([0, 1])\n .range([quadrantHeight + quadrantTop, quadrantTop]);\n\n const points: QuadrantPointType[] = this.data.points.map((point) => {\n const classStyles = this.classes.get(point.className!);\n if (classStyles) {\n point = { ...classStyles, ...point };\n }\n const props: QuadrantPointType = {\n x: xAxis(point.x),\n y: yAxis(point.y),\n fill: point.color ?? this.themeConfig.quadrantPointFill,\n radius: point.radius ?? this.config.pointRadius,\n text: {\n text: point.text,\n fill: this.themeConfig.quadrantPointTextFill,\n x: xAxis(point.x),\n y: yAxis(point.y) + this.config.pointTextPadding,\n verticalPos: 'center',\n horizontalPos: 'top',\n fontSize: this.config.pointLabelFontSize,\n rotation: 0,\n },\n strokeColor: point.strokeColor ?? this.themeConfig.quadrantPointFill,\n strokeWidth: point.strokeWidth ?? '0px',\n };\n return props;\n });\n return points;\n }\n\n getBorders(spaceData: CalculateSpaceData): QuadrantLineType[] {\n const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2;\n const { quadrantSpace } = spaceData;\n\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth,\n } = quadrantSpace;\n\n const borderLines: QuadrantLineType[] = [\n // top border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop,\n },\n // right border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth,\n },\n // bottom border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop + quadrantHeight,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop + quadrantHeight,\n },\n // left border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth,\n },\n // vertical inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantHalfWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantHalfWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth,\n },\n // horizontal inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + halfExternalBorderWidth,\n y1: quadrantTop + quadrantHalfHeight,\n x2: quadrantLeft + quadrantWidth - halfExternalBorderWidth,\n y2: quadrantTop + quadrantHalfHeight,\n },\n ];\n return borderLines;\n }\n\n getTitle(showTitle: boolean): QuadrantTextType | undefined {\n if (showTitle) {\n return {\n text: this.data.titleText,\n fill: this.themeConfig.quadrantTitleFill,\n fontSize: this.config.titleFontSize,\n horizontalPos: 'top',\n verticalPos: 'center',\n rotation: 0,\n y: this.config.titlePadding,\n x: this.config.chartWidth / 2,\n };\n }\n return;\n }\n\n build(): QuadrantBuildType {\n const showXAxis =\n this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText);\n const showYAxis =\n this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText);\n const showTitle = this.config.showTitle && !!this.data.titleText;\n\n const xAxisPosition = this.data.points.length > 0 ? 'bottom' : this.config.xAxisPosition;\n\n const calculatedSpace = this.calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle);\n\n return {\n points: this.getQuadrantPoints(calculatedSpace),\n quadrants: this.getQuadrants(calculatedSpace),\n axisLabels: this.getAxisLabels(xAxisPosition, showXAxis, showYAxis, calculatedSpace),\n borderLines: this.getBorders(calculatedSpace),\n title: this.getTitle(showTitle),\n };\n }\n}\n", "class InvalidStyleError extends Error {\n constructor(style: string, value: string, type: string) {\n super(`value for ${style} ${value} is invalid, please use a valid ${type}`);\n this.name = 'InvalidStyleError';\n }\n}\n\nfunction validateHexCode(value: string): boolean {\n return !/^#?([\\dA-Fa-f]{6}|[\\dA-Fa-f]{3})$/.test(value);\n}\n\nfunction validateNumber(value: string): boolean {\n return !/^\\d+$/.test(value);\n}\n\nfunction validateSizeInPixels(value: string): boolean {\n return !/^\\d+px$/.test(value);\n}\n\nexport { validateHexCode, validateNumber, validateSizeInPixels, InvalidStyleError };\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { sanitizeText } from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../common/commonDb.js';\nimport type { StylesObject } from './quadrantBuilder.js';\nimport { QuadrantBuilder } from './quadrantBuilder.js';\nimport {\n validateHexCode,\n validateSizeInPixels,\n validateNumber,\n InvalidStyleError,\n} from './utils.js';\n\nconst config = getConfig();\n\nfunction textSanitizer(text: string) {\n return sanitizeText(text.trim(), config);\n}\n\ninterface LexTextObj {\n text: string;\n type: 'text' | 'markdown';\n}\n\nconst quadrantBuilder = new QuadrantBuilder();\n\nfunction setQuadrant1Text(textObj: LexTextObj) {\n quadrantBuilder.setData({ quadrant1Text: textSanitizer(textObj.text) });\n}\n\nfunction setQuadrant2Text(textObj: LexTextObj) {\n quadrantBuilder.setData({ quadrant2Text: textSanitizer(textObj.text) });\n}\n\nfunction setQuadrant3Text(textObj: LexTextObj) {\n quadrantBuilder.setData({ quadrant3Text: textSanitizer(textObj.text) });\n}\n\nfunction setQuadrant4Text(textObj: LexTextObj) {\n quadrantBuilder.setData({ quadrant4Text: textSanitizer(textObj.text) });\n}\n\nfunction setXAxisLeftText(textObj: LexTextObj) {\n quadrantBuilder.setData({ xAxisLeftText: textSanitizer(textObj.text) });\n}\n\nfunction setXAxisRightText(textObj: LexTextObj) {\n quadrantBuilder.setData({ xAxisRightText: textSanitizer(textObj.text) });\n}\n\nfunction setYAxisTopText(textObj: LexTextObj) {\n quadrantBuilder.setData({ yAxisTopText: textSanitizer(textObj.text) });\n}\n\nfunction setYAxisBottomText(textObj: LexTextObj) {\n quadrantBuilder.setData({ yAxisBottomText: textSanitizer(textObj.text) });\n}\n\nfunction parseStyles(styles: string[]): StylesObject {\n const stylesObject: StylesObject = {};\n for (const style of styles) {\n const [key, value] = style.trim().split(/\\s*:\\s*/);\n if (key === 'radius') {\n if (validateNumber(value)) {\n throw new InvalidStyleError(key, value, 'number');\n }\n stylesObject.radius = parseInt(value);\n } else if (key === 'color') {\n if (validateHexCode(value)) {\n throw new InvalidStyleError(key, value, 'hex code');\n }\n stylesObject.color = value;\n } else if (key === 'stroke-color') {\n if (validateHexCode(value)) {\n throw new InvalidStyleError(key, value, 'hex code');\n }\n stylesObject.strokeColor = value;\n } else if (key === 'stroke-width') {\n if (validateSizeInPixels(value)) {\n throw new InvalidStyleError(key, value, 'number of pixels (eg. 10px)');\n }\n stylesObject.strokeWidth = value;\n } else {\n throw new Error(`style named ${key} is not supported.`);\n }\n }\n return stylesObject;\n}\n\nfunction addPoint(textObj: LexTextObj, className: string, x: number, y: number, styles: string[]) {\n const stylesObject = parseStyles(styles);\n quadrantBuilder.addPoints([\n {\n x,\n y,\n text: textSanitizer(textObj.text),\n className,\n ...stylesObject,\n },\n ]);\n}\n\nfunction addClass(className: string, styles: string[]) {\n quadrantBuilder.addClass(className, parseStyles(styles));\n}\n\nfunction setWidth(width: number) {\n quadrantBuilder.setConfig({ chartWidth: width });\n}\n\nfunction setHeight(height: number) {\n quadrantBuilder.setConfig({ chartHeight: height });\n}\n\nfunction getQuadrantData() {\n const config = getConfig();\n const { themeVariables, quadrantChart: quadrantChartConfig } = config;\n if (quadrantChartConfig) {\n quadrantBuilder.setConfig(quadrantChartConfig);\n }\n quadrantBuilder.setThemeConfig({\n quadrant1Fill: themeVariables.quadrant1Fill,\n quadrant2Fill: themeVariables.quadrant2Fill,\n quadrant3Fill: themeVariables.quadrant3Fill,\n quadrant4Fill: themeVariables.quadrant4Fill,\n quadrant1TextFill: themeVariables.quadrant1TextFill,\n quadrant2TextFill: themeVariables.quadrant2TextFill,\n quadrant3TextFill: themeVariables.quadrant3TextFill,\n quadrant4TextFill: themeVariables.quadrant4TextFill,\n quadrantPointFill: themeVariables.quadrantPointFill,\n quadrantPointTextFill: themeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: themeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: themeVariables.quadrantYAxisTextFill,\n quadrantExternalBorderStrokeFill: themeVariables.quadrantExternalBorderStrokeFill,\n quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill,\n quadrantTitleFill: themeVariables.quadrantTitleFill,\n });\n quadrantBuilder.setData({ titleText: getDiagramTitle() });\n return quadrantBuilder.build();\n}\n\nconst clear = function () {\n quadrantBuilder.clear();\n commonClear();\n};\n\nexport default {\n setWidth,\n setHeight,\n setQuadrant1Text,\n setQuadrant2Text,\n setQuadrant3Text,\n setQuadrant4Text,\n setXAxisLeftText,\n setXAxisRightText,\n setYAxisTopText,\n setYAxisBottomText,\n parseStyles,\n addPoint,\n addClass,\n getQuadrantData,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n};\n", "// @ts-nocheck - don't check until handle it\nimport { select } from 'd3';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { Diagram } from '../../Diagram.js';\nimport type {\n QuadrantBuildType,\n QuadrantLineType,\n QuadrantPointType,\n QuadrantQuadrantsType,\n QuadrantTextType,\n TextHorizontalPos,\n TextVerticalPos,\n} from './quadrantBuilder.js';\n\nexport const draw = (txt: string, id: string, _version: string, diagObj: Diagram) => {\n function getDominantBaseLine(horizontalPos: TextHorizontalPos) {\n return horizontalPos === 'top' ? 'hanging' : 'middle';\n }\n\n function getTextAnchor(verticalPos: TextVerticalPos) {\n return verticalPos === 'left' ? 'start' : 'middle';\n }\n\n function getTransformation(data: { x: number; y: number; rotation: number }) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n\n const conf = getConfig();\n\n log.debug('Rendering quadrant chart\\n' + txt);\n\n const securityLevel = conf.securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n const svg = root.select(`[id=\"${id}\"]`);\n\n const group = svg.append('g').attr('class', 'main');\n\n const width = conf.quadrantChart?.chartWidth ?? 500;\n const height = conf.quadrantChart?.chartHeight ?? 500;\n\n configureSvgSize(svg, height, width, conf.quadrantChart?.useMaxWidth ?? true);\n\n svg.attr('viewBox', '0 0 ' + width + ' ' + height);\n\n // @ts-ignore: TODO Fix ts errors\n diagObj.db.setHeight(height);\n // @ts-ignore: TODO Fix ts errors\n diagObj.db.setWidth(width);\n\n // @ts-ignore: TODO Fix ts errors\n const quadrantData: QuadrantBuildType = diagObj.db.getQuadrantData();\n\n const quadrantsGroup = group.append('g').attr('class', 'quadrants');\n const borderGroup = group.append('g').attr('class', 'border');\n const dataPointGroup = group.append('g').attr('class', 'data-points');\n const labelGroup = group.append('g').attr('class', 'labels');\n const titleGroup = group.append('g').attr('class', 'title');\n\n if (quadrantData.title) {\n titleGroup\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .attr('fill', quadrantData.title.fill)\n .attr('font-size', quadrantData.title.fontSize)\n .attr('dominant-baseline', getDominantBaseLine(quadrantData.title.horizontalPos))\n .attr('text-anchor', getTextAnchor(quadrantData.title.verticalPos))\n .attr('transform', getTransformation(quadrantData.title))\n .text(quadrantData.title.text);\n }\n\n if (quadrantData.borderLines) {\n borderGroup\n .selectAll('line')\n .data(quadrantData.borderLines)\n .enter()\n .append('line')\n .attr('x1', (data: QuadrantLineType) => data.x1)\n .attr('y1', (data: QuadrantLineType) => data.y1)\n .attr('x2', (data: QuadrantLineType) => data.x2)\n .attr('y2', (data: QuadrantLineType) => data.y2)\n .style('stroke', (data: QuadrantLineType) => data.strokeFill)\n .style('stroke-width', (data: QuadrantLineType) => data.strokeWidth);\n }\n\n const quadrants = quadrantsGroup\n .selectAll('g.quadrant')\n .data(quadrantData.quadrants)\n .enter()\n .append('g')\n .attr('class', 'quadrant');\n\n quadrants\n .append('rect')\n .attr('x', (data: QuadrantQuadrantsType) => data.x)\n .attr('y', (data: QuadrantQuadrantsType) => data.y)\n .attr('width', (data: QuadrantQuadrantsType) => data.width)\n .attr('height', (data: QuadrantQuadrantsType) => data.height)\n .attr('fill', (data: QuadrantQuadrantsType) => data.fill);\n\n quadrants\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .attr('fill', (data: QuadrantQuadrantsType) => data.text.fill)\n .attr('font-size', (data: QuadrantQuadrantsType) => data.text.fontSize)\n .attr('dominant-baseline', (data: QuadrantQuadrantsType) =>\n getDominantBaseLine(data.text.horizontalPos)\n )\n .attr('text-anchor', (data: QuadrantQuadrantsType) => getTextAnchor(data.text.verticalPos))\n .attr('transform', (data: QuadrantQuadrantsType) => getTransformation(data.text))\n .text((data: QuadrantQuadrantsType) => data.text.text);\n\n const labels = labelGroup\n .selectAll('g.label')\n .data(quadrantData.axisLabels)\n .enter()\n .append('g')\n .attr('class', 'label');\n\n labels\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .text((data: QuadrantTextType) => data.text)\n .attr('fill', (data: QuadrantTextType) => data.fill)\n .attr('font-size', (data: QuadrantTextType) => data.fontSize)\n .attr('dominant-baseline', (data: QuadrantTextType) => getDominantBaseLine(data.horizontalPos))\n .attr('text-anchor', (data: QuadrantTextType) => getTextAnchor(data.verticalPos))\n .attr('transform', (data: QuadrantTextType) => getTransformation(data));\n\n const dataPoints = dataPointGroup\n .selectAll('g.data-point')\n .data(quadrantData.points)\n .enter()\n .append('g')\n .attr('class', 'data-point');\n\n dataPoints\n .append('circle')\n .attr('cx', (data: QuadrantPointType) => data.x)\n .attr('cy', (data: QuadrantPointType) => data.y)\n .attr('r', (data: QuadrantPointType) => data.radius)\n .attr('fill', (data: QuadrantPointType) => data.fill)\n .attr('stroke', (data: QuadrantPointType) => data.strokeColor)\n .attr('stroke-width', (data: QuadrantPointType) => data.strokeWidth);\n\n dataPoints\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .text((data: QuadrantPointType) => data.text.text)\n .attr('fill', (data: QuadrantPointType) => data.text.fill)\n .attr('font-size', (data: QuadrantPointType) => data.text.fontSize)\n .attr('dominant-baseline', (data: QuadrantPointType) =>\n getDominantBaseLine(data.text.horizontalPos)\n )\n .attr('text-anchor', (data: QuadrantPointType) => getTextAnchor(data.text.verticalPos))\n .attr('transform', (data: QuadrantPointType) => getTransformation(data.text));\n};\n\nexport default {\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/quadrant.jison';\nimport db from './quadrantDb.js';\nimport renderer from './quadrantRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles: () => '',\n};\n"], + "mappings": "oOAyEA,IAAIA,IAAU,UAAU,CACxB,IAAIC,EAAEC,EAAA,SAASC,EAAEC,EAAEH,EAAEI,EAAE,CAAC,IAAIJ,EAAEA,GAAG,CAAC,EAAEI,EAAEF,EAAE,OAAOE,IAAIJ,EAAEE,EAAEE,CAAC,CAAC,EAAED,EAAE,CAAC,OAAOH,CAAC,EAAhE,KAAkEK,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAK,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EACpjCtE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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "$VZ", "$V_", "$V$", "$V01", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "quadrant_default", "parser", "defaultThemeVariables", "getThemeVariables", "QuadrantBuilder", "__name", "defaultConfig_default", "log", "data", "points", "className", "styles", "config", "themeConfig", "xAxisPosition", "showXAxis", "showYAxis", "showTitle", "xAxisSpaceCalculation", "xAxisSpace", "yAxisSpaceCalculation", "yAxisSpace", "titleSpaceCalculation", "titleSpace", "quadrantLeft", "quadrantTop", "quadrantWidth", "quadrantHeight", "quadrantHalfWidth", "quadrantHalfHeight", "spaceData", "quadrantSpace", "drawXAxisLabelsInMiddle", "drawYAxisLabelsInMiddle", "axisLabels", "quadrants", "quadrant", "xAxis", "linear", "yAxis", "point", "classStyles", "halfExternalBorderWidth", "calculatedSpace", "InvalidStyleError", "__name", "style", "value", "type", "validateHexCode", "validateNumber", "validateSizeInPixels", "config", "getConfig", "textSanitizer", "text", "sanitizeText", "__name", "quadrantBuilder", "QuadrantBuilder", "setQuadrant1Text", "textObj", "setQuadrant2Text", "setQuadrant3Text", "setQuadrant4Text", "setXAxisLeftText", "setXAxisRightText", "setYAxisTopText", "setYAxisBottomText", "parseStyles", "styles", "stylesObject", "style", "key", "value", "validateNumber", "InvalidStyleError", "validateHexCode", "validateSizeInPixels", "addPoint", "className", "x", "y", "addClass", "setWidth", "width", "setHeight", "height", "getQuadrantData", "themeVariables", "quadrantChartConfig", "getDiagramTitle", "clear", "quadrantDb_default", "setAccTitle", "getAccTitle", "setDiagramTitle", "getAccDescription", "setAccDescription", "draw", "__name", "txt", "id", "_version", "diagObj", "getDominantBaseLine", "horizontalPos", "getTextAnchor", "verticalPos", "getTransformation", "data", "conf", "getConfig", "log", "securityLevel", "sandboxElement", "select_default", "svg", "group", "width", "height", "configureSvgSize", "quadrantData", "quadrantsGroup", "borderGroup", "dataPointGroup", "labelGroup", "titleGroup", "quadrants", "dataPoints", "quadrantRenderer_default", "diagram", "quadrant_default", "quadrantDb_default", "quadrantRenderer_default", "__name"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/radar-GUYGQ44K-RDLRG3WG.mjs b/assets/mermaid/chunks/mermaid.esm.min/radar-GUYGQ44K-RDLRG3WG.mjs new file mode 100644 index 0000000..92ed221 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/radar-GUYGQ44K-RDLRG3WG.mjs @@ -0,0 +1 @@ +import{a as r,b as e}from"./chunk-2UTLFMKG.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{r as RadarModule,e as createRadarServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/treemap-KZPCXAKY-RU5UWGQG.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/radar-GUYGQ44K-RDLRG3WG.mjs.map similarity index 100% rename from assets/mermaid/chunks/mermaid.esm.min/treemap-KZPCXAKY-RU5UWGQG.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/radar-GUYGQ44K-RDLRG3WG.mjs.map diff --git a/assets/mermaid/chunks/mermaid.esm.min/radar-KQ55EAFF-DTKK6RDY.mjs b/assets/mermaid/chunks/mermaid.esm.min/radar-KQ55EAFF-DTKK6RDY.mjs deleted file mode 100644 index c5d5c57..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/radar-KQ55EAFF-DTKK6RDY.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as r,b as e}from"./chunk-F3E5R7LK.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import"./chunk-VELTKBKT.mjs";export{r as RadarModule,e as createRadarServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-JXO7QTGE.mjs b/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-JXO7QTGE.mjs new file mode 100644 index 0000000..8c83a6e --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-JXO7QTGE.mjs @@ -0,0 +1,84 @@ +import{a as et}from"./chunk-6764PJDD.mjs";import{a as st}from"./chunk-ZXARS5L4.mjs";import{b as tt,c as it}from"./chunk-VU6ZFW4Y.mjs";import"./chunk-7J6CGLKN.mjs";import"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-5VCL7Z4A.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import{p as Ze}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{S as Ke,T as je,U as We,V as Ge,W as ze,X as Xe,Y as Je,_ as de,t as Ae}from"./chunk-67TQ5CYL.mjs";import{b as pe}from"./chunk-7W6UQGC5.mjs";import{a as m,c as ut}from"./chunk-AQ6EADP3.mjs";var Ve=(function(){var e=m(function($,s,l,o){for(l=l||{},o=$.length;o--;l[$[o]]=s);return l},"o"),n=[1,3],u=[1,4],h=[1,5],r=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],f=[1,22],b=[2,7],R=[1,26],_=[1,27],I=[1,28],q=[1,29],C=[1,33],A=[1,34],V=[1,35],v=[1,36],L=[1,37],x=[1,38],D=[1,24],O=[1,31],w=[1,32],M=[1,30],g=[1,39],E=[1,40],d=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],P=[1,61],X=[89,90],Le=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],be=[27,29],xe=[1,70],De=[1,71],Oe=[1,72],we=[1,73],Me=[1,74],Fe=[1,75],$e=[1,76],Z=[1,83],U=[1,80],ee=[1,84],te=[1,85],ie=[1,86],se=[1,87],re=[1,88],ne=[1,89],ae=[1,90],le=[1,91],ce=[1,92],ge=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Y=[63,64],Pe=[1,101],Ue=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],T=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],B=[1,110],Q=[1,106],H=[1,107],K=[1,108],j=[1,109],W=[1,111],oe=[1,116],he=[1,117],ue=[1,114],me=[1,115],_e={trace:m(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:m(function(s,l,o,i,p,t,fe){var c=t.length-1;switch(p){case 4:this.$=t[c].trim(),i.setAccTitle(this.$);break;case 5:case 6:this.$=t[c].trim(),i.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:i.setDirection("TB");break;case 18:i.setDirection("BT");break;case 19:i.setDirection("RL");break;case 20:i.setDirection("LR");break;case 21:i.addRequirement(t[c-3],t[c-4]);break;case 22:i.addRequirement(t[c-5],t[c-6]),i.setClass([t[c-5]],t[c-3]);break;case 23:i.setNewReqId(t[c-2]);break;case 24:i.setNewReqText(t[c-2]);break;case 25:i.setNewReqRisk(t[c-2]);break;case 26:i.setNewReqVerifyMethod(t[c-2]);break;case 29:this.$=i.RequirementType.REQUIREMENT;break;case 30:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=i.RiskLevel.LOW_RISK;break;case 36:this.$=i.RiskLevel.MED_RISK;break;case 37:this.$=i.RiskLevel.HIGH_RISK;break;case 38:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=i.VerifyType.VERIFY_TEST;break;case 42:i.addElement(t[c-3]);break;case 43:i.addElement(t[c-5]),i.setClass([t[c-5]],t[c-3]);break;case 44:i.setNewElementType(t[c-2]);break;case 45:i.setNewElementDocRef(t[c-2]);break;case 48:i.addRelationship(t[c-2],t[c],t[c-4]);break;case 49:i.addRelationship(t[c-2],t[c-4],t[c]);break;case 50:this.$=i.Relationships.CONTAINS;break;case 51:this.$=i.Relationships.COPIES;break;case 52:this.$=i.Relationships.DERIVES;break;case 53:this.$=i.Relationships.SATISFIES;break;case 54:this.$=i.Relationships.VERIFIES;break;case 55:this.$=i.Relationships.REFINES;break;case 56:this.$=i.Relationships.TRACES;break;case 57:this.$=t[c-2],i.defineClass(t[c-1],t[c]);break;case 58:i.setClass(t[c-1],t[c]);break;case 59:i.setClass([t[c-2]],t[c]);break;case 60:case 62:this.$=[t[c]];break;case 61:case 63:this.$=t[c-2].concat([t[c]]);break;case 64:this.$=t[c-2],i.setCssStyle(t[c-1],t[c]);break;case 65:this.$=[t[c]];break;case 66:t[c-2].push(t[c]),this.$=t[c-2];break;case 68:this.$=t[c-1]+t[c];break}},"anonymous"),table:[{3:1,4:2,6:n,9:u,11:h,13:r},{1:[3]},{3:8,4:2,5:[1,7],6:n,9:u,11:h,13:r},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(a,[2,6]),{3:12,4:2,6:n,9:u,11:h,13:r},{1:[2,2]},{4:17,5:f,7:13,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},e(a,[2,4]),e(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:f,7:42,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{4:17,5:f,7:43,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{4:17,5:f,7:44,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{4:17,5:f,7:45,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{4:17,5:f,7:46,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{4:17,5:f,7:47,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{4:17,5:f,7:48,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{4:17,5:f,7:49,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{4:17,5:f,7:50,8:b,9:u,11:h,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:R,22:_,23:I,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:g,90:E},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(d,[2,17]),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),{30:60,33:62,75:P,89:g,90:E},{30:63,33:62,75:P,89:g,90:E},{30:64,33:62,75:P,89:g,90:E},e(X,[2,29]),e(X,[2,30]),e(X,[2,31]),e(X,[2,32]),e(X,[2,33]),e(X,[2,34]),e(Le,[2,81]),e(Le,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(be,[2,79]),e(be,[2,80]),{27:[1,67],29:[1,68]},e(be,[2,85]),e(be,[2,86]),{62:69,65:xe,66:De,67:Oe,68:we,69:Me,70:Fe,71:$e},{62:77,65:xe,66:De,67:Oe,68:we,69:Me,70:Fe,71:$e},{30:78,33:62,75:P,89:g,90:E},{73:79,75:Z,76:U,78:81,79:82,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce},e(ge,[2,60]),e(ge,[2,62]),{73:93,75:Z,76:U,78:81,79:82,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce},{30:94,33:62,75:P,76:U,89:g,90:E},{5:[1,95]},{30:96,33:62,75:P,89:g,90:E},{5:[1,97]},{30:98,33:62,75:P,89:g,90:E},{63:[1,99]},e(Y,[2,50]),e(Y,[2,51]),e(Y,[2,52]),e(Y,[2,53]),e(Y,[2,54]),e(Y,[2,55]),e(Y,[2,56]),{64:[1,100]},e(d,[2,59],{76:U}),e(d,[2,64],{76:Pe}),{33:103,75:[1,102],89:g,90:E},e(Ue,[2,65],{79:104,75:Z,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce}),e(T,[2,67]),e(T,[2,69]),e(T,[2,70]),e(T,[2,71]),e(T,[2,72]),e(T,[2,73]),e(T,[2,74]),e(T,[2,75]),e(T,[2,76]),e(T,[2,77]),e(T,[2,78]),e(d,[2,57],{76:Pe}),e(d,[2,58],{76:U}),{5:B,28:105,31:Q,34:H,36:K,38:j,40:W},{27:[1,112],76:U},{5:oe,40:he,56:113,57:ue,59:me},{27:[1,118],76:U},{33:119,89:g,90:E},{33:120,89:g,90:E},{75:Z,78:121,79:82,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce},e(ge,[2,61]),e(ge,[2,63]),e(T,[2,68]),e(d,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:B,28:126,31:Q,34:H,36:K,38:j,40:W},e(d,[2,28]),{5:[1,127]},e(d,[2,42]),{32:[1,128]},{32:[1,129]},{5:oe,40:he,56:130,57:ue,59:me},e(d,[2,47]),{5:[1,131]},e(d,[2,48]),e(d,[2,49]),e(Ue,[2,66],{79:104,75:Z,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce}),{33:132,89:g,90:E},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(d,[2,27]),{5:B,28:145,31:Q,34:H,36:K,38:j,40:W},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(d,[2,46]),{5:oe,40:he,56:152,57:ue,59:me},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(d,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(d,[2,43]),{5:B,28:159,31:Q,34:H,36:K,38:j,40:W},{5:B,28:160,31:Q,34:H,36:K,38:j,40:W},{5:B,28:161,31:Q,34:H,36:K,38:j,40:W},{5:B,28:162,31:Q,34:H,36:K,38:j,40:W},{5:oe,40:he,56:163,57:ue,59:me},{5:oe,40:he,56:164,57:ue,59:me},e(d,[2,23]),e(d,[2,24]),e(d,[2,25]),e(d,[2,26]),e(d,[2,44]),e(d,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:m(function(s,l){if(l.recoverable)this.trace(s);else{var o=new Error(s);throw o.hash=l,o}},"parseError"),parse:m(function(s){var l=this,o=[0],i=[],p=[null],t=[],fe=this.table,c="",Ee=0,Ye=0,Be=0,lt=2,Qe=1,ct=t.slice.call(arguments,1),y=Object.create(this.lexer),G={yy:{}};for(var Ie in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ie)&&(G.yy[Ie]=this.yy[Ie]);y.setInput(s,G.yy),G.yy.lexer=y,G.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var Te=y.yylloc;t.push(Te);var ot=y.options&&y.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function dt(S){o.length=o.length-2*S,p.length=p.length-S,t.length=t.length-S}m(dt,"popStack");function ht(){var S;return S=i.pop()||y.lex()||Qe,typeof S!="number"&&(S instanceof Array&&(i=S,S=i.pop()),S=l.symbols_[S]||S),S}m(ht,"lex");for(var k,Ne,z,N,bt,qe,J={},Re,F,He,ye;;){if(z=o[o.length-1],this.defaultActions[z]?N=this.defaultActions[z]:((k===null||typeof k>"u")&&(k=ht()),N=fe[z]&&fe[z][k]),typeof N>"u"||!N.length||!N[0]){var Ce="";ye=[];for(Re in fe[z])this.terminals_[Re]&&Re>lt&&ye.push("'"+this.terminals_[Re]+"'");y.showPosition?Ce="Parse error on line "+(Ee+1)+`: +`+y.showPosition()+` +Expecting `+ye.join(", ")+", got '"+(this.terminals_[k]||k)+"'":Ce="Parse error on line "+(Ee+1)+": Unexpected "+(k==Qe?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(Ce,{text:y.match,token:this.terminals_[k]||k,line:y.yylineno,loc:Te,expected:ye})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+z+", token: "+k);switch(N[0]){case 1:o.push(k),p.push(y.yytext),t.push(y.yylloc),o.push(N[1]),k=null,Ne?(k=Ne,Ne=null):(Ye=y.yyleng,c=y.yytext,Ee=y.yylineno,Te=y.yylloc,Be>0&&Be--);break;case 2:if(F=this.productions_[N[1]][1],J.$=p[p.length-F],J._$={first_line:t[t.length-(F||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(F||1)].first_column,last_column:t[t.length-1].last_column},ot&&(J._$.range=[t[t.length-(F||1)].range[0],t[t.length-1].range[1]]),qe=this.performAction.apply(J,[c,Ye,Ee,G.yy,N[1],p,t].concat(ct)),typeof qe<"u")return qe;F&&(o=o.slice(0,-1*F*2),p=p.slice(0,-1*F),t=t.slice(0,-1*F)),o.push(this.productions_[N[1]][0]),p.push(J.$),t.push(J._$),He=fe[o[o.length-2]][o[o.length-1]],o.push(He);break;case 3:return!0}}return!0},"parse")},at=(function(){var $={EOF:1,parseError:m(function(l,o){if(this.yy.parser)this.yy.parser.parseError(l,o);else throw new Error(l)},"parseError"),setInput:m(function(s,l){return this.yy=l||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:m(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var l=s.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:m(function(s){var l=s.length,o=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),o.length-1&&(this.yylineno-=o.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:o?(o.length===i.length?this.yylloc.first_column:0)+i[i.length-o.length].length-o[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:m(function(){return this._more=!0,this},"more"),reject:m(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:m(function(s){this.unput(this.match.slice(s))},"less"),pastInput:m(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:m(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:m(function(){var s=this.pastInput(),l=new Array(s.length+1).join("-");return s+this.upcomingInput()+` +`+l+"^"},"showPosition"),test_match:m(function(s,l){var o,i,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),i=s[0].match(/(?:\r\n?|\n).*/g),i&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(s[0].length),this.matched+=s[0],o=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o)return o;if(this._backtrack){for(var t in p)this[t]=p[t];return!1}return!1},"test_match"),next:m(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,l,o,i;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),t=0;tl[0].length)){if(l=o,i=t,this.options.backtrack_lexer){if(s=this.test_match(o,p[t]),s!==!1)return s;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(s=this.test_match(l,p[i]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:m(function(){var l=this.next();return l||this.lex()},"lex"),begin:m(function(l){this.conditionStack.push(l)},"begin"),popState:m(function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:m(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:m(function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},"topState"),pushState:m(function(l){this.begin(l)},"pushState"),stateStackSize:m(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:m(function(l,o,i,p){var t=p;switch(i){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return o.yytext=o.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/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,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return $})();_e.lexer=at;function Se(){this.yy={}}return m(Se,"Parser"),Se.prototype=_e,_e.Parser=Se,new Se})();Ve.parser=Ve;var rt=Ve;var ke=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=je;this.getAccTitle=We;this.setAccDescription=Ge;this.getAccDescription=ze;this.setDiagramTitle=Xe;this.getDiagramTitle=Je;this.getConfig=m(()=>de().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{m(this,"RequirementDB")}getDirection(){return this.direction}setDirection(n){this.direction=n}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(n,u){return this.requirements.has(n)||this.requirements.set(n,{name:n,type:u,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(n)}getRequirements(){return this.requirements}setNewReqId(n){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=n)}setNewReqText(n){this.latestRequirement!==void 0&&(this.latestRequirement.text=n)}setNewReqRisk(n){this.latestRequirement!==void 0&&(this.latestRequirement.risk=n)}setNewReqVerifyMethod(n){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=n)}addElement(n){return this.elements.has(n)||(this.elements.set(n,{name:n,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),pe.info("Added new element: ",n)),this.resetLatestElement(),this.elements.get(n)}getElements(){return this.elements}setNewElementType(n){this.latestElement!==void 0&&(this.latestElement.type=n)}setNewElementDocRef(n){this.latestElement!==void 0&&(this.latestElement.docRef=n)}addRelationship(n,u,h){this.relations.push({type:n,src:u,dst:h})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,Ke()}setCssStyle(n,u){for(let h of n){let r=this.requirements.get(h)??this.elements.get(h);if(!u||!r)return;for(let a of u)a.includes(",")?r.cssStyles.push(...a.split(",")):r.cssStyles.push(a)}}setClass(n,u){for(let h of n){let r=this.requirements.get(h)??this.elements.get(h);if(r)for(let a of u){r.classes.push(a);let f=this.classes.get(a)?.styles;f&&r.cssStyles.push(...f)}}}defineClass(n,u){for(let h of n){let r=this.classes.get(h);r===void 0&&(r={id:h,styles:[],textStyles:[]},this.classes.set(h,r)),u&&u.forEach(function(a){if(/color/.exec(a)){let f=a.replace("fill","bgFill");r.textStyles.push(f)}r.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(h)&&a.cssStyles.push(...u.flatMap(f=>f.split(",")))}),this.elements.forEach(a=>{a.classes.includes(h)&&a.cssStyles.push(...u.flatMap(f=>f.split(",")))})}}getClasses(){return this.classes}getData(){let n=de(),u=[],h=[];for(let r of this.requirements.values()){let a=r;a.id=r.name,a.cssStyles=r.cssStyles,a.cssClasses=r.classes.join(" "),a.shape="requirementBox",a.look=n.look,a.colorIndex=u.length,u.push(a)}for(let r of this.elements.values()){let a=r;a.shape="requirementBox",a.look=n.look,a.id=r.name,a.cssStyles=r.cssStyles,a.cssClasses=r.classes.join(" "),a.colorIndex=u.length,u.push(a)}for(let r of this.relations){let a=0,f=r.type===this.Relationships.CONTAINS,b={id:`${r.src}-${r.dst}-${a}`,start:this.requirements.get(r.src)?.name??this.elements.get(r.src)?.name,end:this.requirements.get(r.dst)?.name??this.elements.get(r.dst)?.name,label:`<<${r.type}>>`,classes:"relationshipLine",style:["fill:none",f?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:f?"normal":"dashed",arrowTypeStart:f?"requirement_contains":"",arrowTypeEnd:f?"":"requirement_arrow",look:n.look,labelType:"markdown"};h.push(b),a++}return{nodes:u,edges:h,other:{},config:n,direction:this.getDirection()}}};var mt=m(e=>{let n=Ae(),{themeVariables:u,look:h}=n,{bkgColorArray:r,borderColorArray:a}=u;if(!a?.length)return"";let f="";for(let b=0;b{let n=Ae(),{look:u,themeVariables:h}=n,{requirementEdgeLabelBackground:r}=h;return` + ${mt(e)} + marker { + fill: ${e.relationColor}; + stroke: ${e.relationColor}; + } + + marker.cross { + stroke: ${e.lineColor}; + } + + svg { + font-family: ${e.fontFamily}; + font-size: ${e.fontSize}; + } + + .reqBox { + fill: ${e.requirementBackground}; + fill-opacity: 1.0; + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${e.requirementTextColor}; + } + .reqLabelBox { + fill: ${e.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + .relationshipLine { + stroke: ${e.relationColor}; + stroke-width: ${u==="neo"?e.strokeWidth:"1px"}; + } + .relationshipLabel { + fill: ${e.relationLabelColor}; + } + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + } + .edgeLabel .label rect { + fill: ${e.edgeLabelBackground}; + } + .edgeLabel .label text { + fill: ${e.relationLabelColor}; + } + .divider { + stroke: ${e.nodeBorder}; + stroke-width: 1; + } + .label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .label text,span { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + .labelBkg { + background-color: ${r??e.edgeLabelBackground}; + } + +`},"getStyles"),nt=ft;var ve={};ut(ve,{draw:()=>pt});var pt=m(async function(e,n,u,h){pe.info("REF0:"),pe.info("Drawing requirement diagram (unified)",n);let{securityLevel:r,state:a,layout:f,look:b}=de(),R=h.db.getData(),_=et(n,r);R.type=h.type,R.layoutAlgorithm=it(f),R.nodeSpacing=a?.nodeSpacing??50,R.rankSpacing=a?.rankSpacing??50,R.markers=b==="neo"?["requirement_contains_neo","requirement_arrow_neo"]:["requirement_contains","requirement_arrow"],R.diagramId=n,await tt(R,_);let I=8;Ze.insertTitle(_,"requirementDiagramTitleText",a?.titleTopMargin??25,h.db.getDiagramTitle()),st(_,I,"requirementDiagram",a?.useMaxWidth??!0)},"draw");var Mt={parser:rt,get db(){return new ke},renderer:ve,styles:nt};export{Mt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-N2XL27SN.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-JXO7QTGE.mjs.map similarity index 80% rename from assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-N2XL27SN.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-JXO7QTGE.mjs.map index 3d1d092..db96805 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-N2XL27SN.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-JXO7QTGE.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/requirement/parser/requirementDiagram.jison", "../../../src/diagrams/requirement/requirementDb.ts", "../../../src/diagrams/requirement/styles.js", "../../../src/diagrams/requirement/requirementRenderer.ts", "../../../src/diagrams/requirement/requirementDiagram.ts"], - "sourcesContent": ["/* 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,4],$V2=[1,5],$V3=[1,6],$V4=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],$V5=[1,22],$V6=[2,7],$V7=[1,26],$V8=[1,27],$V9=[1,28],$Va=[1,29],$Vb=[1,33],$Vc=[1,34],$Vd=[1,35],$Ve=[1,36],$Vf=[1,37],$Vg=[1,38],$Vh=[1,24],$Vi=[1,31],$Vj=[1,32],$Vk=[1,30],$Vl=[1,39],$Vm=[1,40],$Vn=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],$Vo=[1,61],$Vp=[89,90],$Vq=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],$Vr=[27,29],$Vs=[1,70],$Vt=[1,71],$Vu=[1,72],$Vv=[1,73],$Vw=[1,74],$Vx=[1,75],$Vy=[1,76],$Vz=[1,83],$VA=[1,80],$VB=[1,84],$VC=[1,85],$VD=[1,86],$VE=[1,87],$VF=[1,88],$VG=[1,89],$VH=[1,90],$VI=[1,91],$VJ=[1,92],$VK=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],$VL=[63,64],$VM=[1,101],$VN=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],$VO=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],$VP=[1,110],$VQ=[1,106],$VR=[1,107],$VS=[1,108],$VT=[1,109],$VU=[1,111],$VV=[1,116],$VW=[1,117],$VX=[1,114],$VY=[1,115];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"acc_title\":9,\"acc_title_value\":10,\"acc_descr\":11,\"acc_descr_value\":12,\"acc_descr_multiline_value\":13,\"requirementDef\":14,\"elementDef\":15,\"relationshipDef\":16,\"direction\":17,\"styleStatement\":18,\"classDefStatement\":19,\"classStatement\":20,\"direction_tb\":21,\"direction_bt\":22,\"direction_rl\":23,\"direction_lr\":24,\"requirementType\":25,\"requirementName\":26,\"STRUCT_START\":27,\"requirementBody\":28,\"STYLE_SEPARATOR\":29,\"idList\":30,\"ID\":31,\"COLONSEP\":32,\"id\":33,\"TEXT\":34,\"text\":35,\"RISK\":36,\"riskLevel\":37,\"VERIFYMTHD\":38,\"verifyType\":39,\"STRUCT_STOP\":40,\"REQUIREMENT\":41,\"FUNCTIONAL_REQUIREMENT\":42,\"INTERFACE_REQUIREMENT\":43,\"PERFORMANCE_REQUIREMENT\":44,\"PHYSICAL_REQUIREMENT\":45,\"DESIGN_CONSTRAINT\":46,\"LOW_RISK\":47,\"MED_RISK\":48,\"HIGH_RISK\":49,\"VERIFY_ANALYSIS\":50,\"VERIFY_DEMONSTRATION\":51,\"VERIFY_INSPECTION\":52,\"VERIFY_TEST\":53,\"ELEMENT\":54,\"elementName\":55,\"elementBody\":56,\"TYPE\":57,\"type\":58,\"DOCREF\":59,\"ref\":60,\"END_ARROW_L\":61,\"relationship\":62,\"LINE\":63,\"END_ARROW_R\":64,\"CONTAINS\":65,\"COPIES\":66,\"DERIVES\":67,\"SATISFIES\":68,\"VERIFIES\":69,\"REFINES\":70,\"TRACES\":71,\"CLASSDEF\":72,\"stylesOpt\":73,\"CLASS\":74,\"ALPHA\":75,\"COMMA\":76,\"STYLE\":77,\"style\":78,\"styleComponent\":79,\"NUM\":80,\"COLON\":81,\"UNIT\":82,\"SPACE\":83,\"BRKT\":84,\"PCT\":85,\"MINUS\":86,\"LABEL\":87,\"SEMICOLON\":88,\"unqString\":89,\"qString\":90,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",9:\"acc_title\",10:\"acc_title_value\",11:\"acc_descr\",12:\"acc_descr_value\",13:\"acc_descr_multiline_value\",21:\"direction_tb\",22:\"direction_bt\",23:\"direction_rl\",24:\"direction_lr\",27:\"STRUCT_START\",29:\"STYLE_SEPARATOR\",31:\"ID\",32:\"COLONSEP\",34:\"TEXT\",36:\"RISK\",38:\"VERIFYMTHD\",40:\"STRUCT_STOP\",41:\"REQUIREMENT\",42:\"FUNCTIONAL_REQUIREMENT\",43:\"INTERFACE_REQUIREMENT\",44:\"PERFORMANCE_REQUIREMENT\",45:\"PHYSICAL_REQUIREMENT\",46:\"DESIGN_CONSTRAINT\",47:\"LOW_RISK\",48:\"MED_RISK\",49:\"HIGH_RISK\",50:\"VERIFY_ANALYSIS\",51:\"VERIFY_DEMONSTRATION\",52:\"VERIFY_INSPECTION\",53:\"VERIFY_TEST\",54:\"ELEMENT\",57:\"TYPE\",59:\"DOCREF\",61:\"END_ARROW_L\",63:\"LINE\",64:\"END_ARROW_R\",65:\"CONTAINS\",66:\"COPIES\",67:\"DERIVES\",68:\"SATISFIES\",69:\"VERIFIES\",70:\"REFINES\",71:\"TRACES\",72:\"CLASSDEF\",74:\"CLASS\",75:\"ALPHA\",76:\"COMMA\",77:\"STYLE\",80:\"NUM\",81:\"COLON\",82:\"UNIT\",83:\"SPACE\",84:\"BRKT\",85:\"PCT\",86:\"MINUS\",87:\"LABEL\",88:\"SEMICOLON\",89:\"unqString\",90:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,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 this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 5: case 6:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 7:\n this.$ = [] \nbreak;\ncase 17:\n yy.setDirection('TB');\nbreak;\ncase 18:\n yy.setDirection('BT');\nbreak;\ncase 19:\n yy.setDirection('RL');\nbreak;\ncase 20:\n yy.setDirection('LR');\nbreak;\ncase 21:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 22:\n yy.addRequirement($$[$0-5], $$[$0-6]); yy.setClass([$$[$0-5]], $$[$0-3]); \nbreak;\ncase 23:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 24:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 25:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 26:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 29:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 30:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 31:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 32:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 33:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 34:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 35:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 36:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 37:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 38:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 39:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 40:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 41:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 42:\n yy.addElement($$[$0-3]) \nbreak;\ncase 43:\n yy.addElement($$[$0-5]); yy.setClass([$$[$0-5]], $$[$0-3]); \nbreak;\ncase 44:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 45:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 48:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 49:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 50:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 51:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 52:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 53:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 54:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 55:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 56:\n this.$=yy.Relationships.TRACES;\nbreak;\ncase 57:\nthis.$ = $$[$0-2];yy.defineClass($$[$0-1],$$[$0]);\nbreak;\ncase 58:\nyy.setClass($$[$0-1], $$[$0]);\nbreak;\ncase 59:\nyy.setClass([$$[$0-2]], $$[$0]);\nbreak;\ncase 60: case 62:\n this.$ = [$$[$0]]; \nbreak;\ncase 61: case 63:\n this.$ = $$[$0-2].concat([$$[$0]]); \nbreak;\ncase 64:\nthis.$ = $$[$0-2];yy.setCssStyle($$[$0-1],$$[$0]);\nbreak;\ncase 65:\nthis.$ = [$$[$0]]\nbreak;\ncase 66:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 68:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:$V1,11:$V2,13:$V3},{1:[3]},{3:8,4:2,5:[1,7],6:$V0,9:$V1,11:$V2,13:$V3},{5:[1,9]},{10:[1,10]},{12:[1,11]},o($V4,[2,6]),{3:12,4:2,6:$V0,9:$V1,11:$V2,13:$V3},{1:[2,2]},{4:17,5:$V5,7:13,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},o($V4,[2,4]),o($V4,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:$V5,7:42,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:43,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:44,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:45,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:46,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:47,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:48,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:49,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:50,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},o($Vn,[2,17]),o($Vn,[2,18]),o($Vn,[2,19]),o($Vn,[2,20]),{30:60,33:62,75:$Vo,89:$Vl,90:$Vm},{30:63,33:62,75:$Vo,89:$Vl,90:$Vm},{30:64,33:62,75:$Vo,89:$Vl,90:$Vm},o($Vp,[2,29]),o($Vp,[2,30]),o($Vp,[2,31]),o($Vp,[2,32]),o($Vp,[2,33]),o($Vp,[2,34]),o($Vq,[2,81]),o($Vq,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},o($Vr,[2,79]),o($Vr,[2,80]),{27:[1,67],29:[1,68]},o($Vr,[2,85]),o($Vr,[2,86]),{62:69,65:$Vs,66:$Vt,67:$Vu,68:$Vv,69:$Vw,70:$Vx,71:$Vy},{62:77,65:$Vs,66:$Vt,67:$Vu,68:$Vv,69:$Vw,70:$Vx,71:$Vy},{30:78,33:62,75:$Vo,89:$Vl,90:$Vm},{73:79,75:$Vz,76:$VA,78:81,79:82,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ},o($VK,[2,60]),o($VK,[2,62]),{73:93,75:$Vz,76:$VA,78:81,79:82,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ},{30:94,33:62,75:$Vo,76:$VA,89:$Vl,90:$Vm},{5:[1,95]},{30:96,33:62,75:$Vo,89:$Vl,90:$Vm},{5:[1,97]},{30:98,33:62,75:$Vo,89:$Vl,90:$Vm},{63:[1,99]},o($VL,[2,50]),o($VL,[2,51]),o($VL,[2,52]),o($VL,[2,53]),o($VL,[2,54]),o($VL,[2,55]),o($VL,[2,56]),{64:[1,100]},o($Vn,[2,59],{76:$VA}),o($Vn,[2,64],{76:$VM}),{33:103,75:[1,102],89:$Vl,90:$Vm},o($VN,[2,65],{79:104,75:$Vz,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ}),o($VO,[2,67]),o($VO,[2,69]),o($VO,[2,70]),o($VO,[2,71]),o($VO,[2,72]),o($VO,[2,73]),o($VO,[2,74]),o($VO,[2,75]),o($VO,[2,76]),o($VO,[2,77]),o($VO,[2,78]),o($Vn,[2,57],{76:$VM}),o($Vn,[2,58],{76:$VA}),{5:$VP,28:105,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{27:[1,112],76:$VA},{5:$VV,40:$VW,56:113,57:$VX,59:$VY},{27:[1,118],76:$VA},{33:119,89:$Vl,90:$Vm},{33:120,89:$Vl,90:$Vm},{75:$Vz,78:121,79:82,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ},o($VK,[2,61]),o($VK,[2,63]),o($VO,[2,68]),o($Vn,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:$VP,28:126,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},o($Vn,[2,28]),{5:[1,127]},o($Vn,[2,42]),{32:[1,128]},{32:[1,129]},{5:$VV,40:$VW,56:130,57:$VX,59:$VY},o($Vn,[2,47]),{5:[1,131]},o($Vn,[2,48]),o($Vn,[2,49]),o($VN,[2,66],{79:104,75:$Vz,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ}),{33:132,89:$Vl,90:$Vm},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},o($Vn,[2,27]),{5:$VP,28:145,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},o($Vn,[2,46]),{5:$VV,40:$VW,56:152,57:$VX,59:$VY},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},o($Vn,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},o($Vn,[2,43]),{5:$VP,28:159,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{5:$VP,28:160,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{5:$VP,28:161,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{5:$VP,28:162,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{5:$VV,40:$VW,56:163,57:$VX,59:$VY},{5:$VV,40:$VW,56:164,57:$VX,59:$VY},o($Vn,[2,23]),o($Vn,[2,24]),o($Vn,[2,25]),o($Vn,[2,26]),o($Vn,[2,44]),o($Vn,[2,45])],\ndefaultActions: {8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},\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\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 'title';\nbreak;\ncase 1: this.begin(\"acc_title\");return 9; \nbreak;\ncase 2: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 3: this.begin(\"acc_descr\");return 11; \nbreak;\ncase 4: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 5: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 6: this.popState(); \nbreak;\ncase 7:return \"acc_descr_multiline_value\";\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 23;\nbreak;\ncase 11:return 24;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:/* skip all whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16:return 8;\nbreak;\ncase 17:return 6;\nbreak;\ncase 18:return 27;\nbreak;\ncase 19:return 40;\nbreak;\ncase 20:return 29;\nbreak;\ncase 21:return 32;\nbreak;\ncase 22:return 31;\nbreak;\ncase 23:return 34;\nbreak;\ncase 24:return 36;\nbreak;\ncase 25:return 38;\nbreak;\ncase 26:return 41;\nbreak;\ncase 27:return 42;\nbreak;\ncase 28:return 43;\nbreak;\ncase 29:return 44;\nbreak;\ncase 30:return 45;\nbreak;\ncase 31:return 46;\nbreak;\ncase 32:return 47;\nbreak;\ncase 33:return 48;\nbreak;\ncase 34:return 49;\nbreak;\ncase 35:return 50;\nbreak;\ncase 36:return 51;\nbreak;\ncase 37:return 52;\nbreak;\ncase 38:return 53;\nbreak;\ncase 39:return 54;\nbreak;\ncase 40:return 65;\nbreak;\ncase 41:return 66;\nbreak;\ncase 42:return 67;\nbreak;\ncase 43:return 68;\nbreak;\ncase 44:return 69;\nbreak;\ncase 45:return 70;\nbreak;\ncase 46:return 71;\nbreak;\ncase 47:return 57;\nbreak;\ncase 48:return 59;\nbreak;\ncase 49: this.begin(\"style\"); return 77; \nbreak;\ncase 50:return 75;\nbreak;\ncase 51:return 81;\nbreak;\ncase 52:return 88;\nbreak;\ncase 53:return 'PERCENT';\nbreak;\ncase 54:return 86;\nbreak;\ncase 55:return 84;\nbreak;\ncase 56:/* skip spaces */\nbreak;\ncase 57: this.begin(\"string\"); \nbreak;\ncase 58: this.popState(); \nbreak;\ncase 59: this.begin(\"style\"); return 72; \nbreak;\ncase 60: this.begin(\"style\"); return 74; \nbreak;\ncase 61:return 61;\nbreak;\ncase 62:return 64;\nbreak;\ncase 63:return 63;\nbreak;\ncase 64: this.begin(\"string\"); \nbreak;\ncase 65: this.popState(); \nbreak;\ncase 66: return \"qString\"; \nbreak;\ncase 67: yy_.yytext = yy_.yytext.trim(); return 89;\nbreak;\ncase 68:return 75;\nbreak;\ncase 69:return 80;\nbreak;\ncase 70:return 76;\nbreak;\n}\n},\nrules: [/^(?:title\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::{3})/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,/^(?:style\\b)/i,/^(?:\\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:[\"])/i,/^(?:\\n)/i,/^(?:classDef\\b)/i,/^(?:class\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^:,\\r\\n\\{\\<\\>\\-\\=]*)/i,/^(?:\\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[6,7,68,69,70],\"inclusive\":false},\"acc_descr\":{\"rules\":[4,68,69,70],\"inclusive\":false},\"acc_title\":{\"rules\":[2,68,69,70],\"inclusive\":false},\"style\":{\"rules\":[50,51,52,53,54,55,56,57,58,68,69,70],\"inclusive\":false},\"unqString\":{\"rules\":[68,69,70],\"inclusive\":false},\"token\":{\"rules\":[68,69,70],\"inclusive\":false},\"string\":{\"rules\":[65,66,68,69,70],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport type { Node, Edge } from '../../rendering-util/types.js';\n\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport type {\n Element,\n Relation,\n RelationshipType,\n Requirement,\n RequirementClass,\n RequirementType,\n RiskLevel,\n VerifyType,\n} from './types.js';\n\nexport class RequirementDB implements DiagramDB {\n private relations: Relation[] = [];\n private latestRequirement: Requirement = this.getInitialRequirement();\n private requirements = new Map();\n private latestElement: Element = this.getInitialElement();\n private elements = new Map();\n private classes = new Map();\n private direction = 'TB';\n\n private RequirementType = {\n REQUIREMENT: 'Requirement',\n FUNCTIONAL_REQUIREMENT: 'Functional Requirement',\n INTERFACE_REQUIREMENT: 'Interface Requirement',\n PERFORMANCE_REQUIREMENT: 'Performance Requirement',\n PHYSICAL_REQUIREMENT: 'Physical Requirement',\n DESIGN_CONSTRAINT: 'Design Constraint',\n };\n\n private RiskLevel = {\n LOW_RISK: 'Low',\n MED_RISK: 'Medium',\n HIGH_RISK: 'High',\n };\n\n private VerifyType = {\n VERIFY_ANALYSIS: 'Analysis',\n VERIFY_DEMONSTRATION: 'Demonstration',\n VERIFY_INSPECTION: 'Inspection',\n VERIFY_TEST: 'Test',\n };\n\n private Relationships = {\n CONTAINS: 'contains',\n COPIES: 'copies',\n DERIVES: 'derives',\n SATISFIES: 'satisfies',\n VERIFIES: 'verifies',\n REFINES: 'refines',\n TRACES: 'traces',\n };\n\n constructor() {\n this.clear();\n\n // Needed for JISON since it only supports direct properties\n this.setDirection = this.setDirection.bind(this);\n this.addRequirement = this.addRequirement.bind(this);\n this.setNewReqId = this.setNewReqId.bind(this);\n this.setNewReqRisk = this.setNewReqRisk.bind(this);\n this.setNewReqText = this.setNewReqText.bind(this);\n this.setNewReqVerifyMethod = this.setNewReqVerifyMethod.bind(this);\n this.addElement = this.addElement.bind(this);\n this.setNewElementType = this.setNewElementType.bind(this);\n this.setNewElementDocRef = this.setNewElementDocRef.bind(this);\n this.addRelationship = this.addRelationship.bind(this);\n this.setCssStyle = this.setCssStyle.bind(this);\n this.setClass = this.setClass.bind(this);\n this.defineClass = this.defineClass.bind(this);\n this.setAccTitle = this.setAccTitle.bind(this);\n this.setAccDescription = this.setAccDescription.bind(this);\n }\n\n public getDirection() {\n return this.direction;\n }\n public setDirection(dir: string) {\n this.direction = dir;\n }\n\n private resetLatestRequirement() {\n this.latestRequirement = this.getInitialRequirement();\n }\n\n private resetLatestElement() {\n this.latestElement = this.getInitialElement();\n }\n\n private getInitialRequirement(): Requirement {\n return {\n requirementId: '',\n text: '',\n risk: '' as RiskLevel,\n verifyMethod: '' as VerifyType,\n name: '',\n type: '' as RequirementType,\n cssStyles: [],\n classes: ['default'],\n };\n }\n\n private getInitialElement(): Element {\n return {\n name: '',\n type: '',\n docRef: '',\n cssStyles: [],\n classes: ['default'],\n };\n }\n\n public addRequirement(name: string, type: RequirementType) {\n if (!this.requirements.has(name)) {\n this.requirements.set(name, {\n name,\n type,\n requirementId: this.latestRequirement.requirementId,\n text: this.latestRequirement.text,\n risk: this.latestRequirement.risk,\n verifyMethod: this.latestRequirement.verifyMethod,\n cssStyles: [],\n classes: ['default'],\n });\n }\n this.resetLatestRequirement();\n\n return this.requirements.get(name);\n }\n\n public getRequirements() {\n return this.requirements;\n }\n\n public setNewReqId(id: string) {\n if (this.latestRequirement !== undefined) {\n this.latestRequirement.requirementId = id;\n }\n }\n\n public setNewReqText(text: string) {\n if (this.latestRequirement !== undefined) {\n this.latestRequirement.text = text;\n }\n }\n\n public setNewReqRisk(risk: RiskLevel) {\n if (this.latestRequirement !== undefined) {\n this.latestRequirement.risk = risk;\n }\n }\n\n public setNewReqVerifyMethod(verifyMethod: VerifyType) {\n if (this.latestRequirement !== undefined) {\n this.latestRequirement.verifyMethod = verifyMethod;\n }\n }\n\n public addElement(name: string) {\n if (!this.elements.has(name)) {\n this.elements.set(name, {\n name,\n type: this.latestElement.type,\n docRef: this.latestElement.docRef,\n cssStyles: [],\n classes: ['default'],\n });\n log.info('Added new element: ', name);\n }\n this.resetLatestElement();\n\n return this.elements.get(name);\n }\n\n public getElements() {\n return this.elements;\n }\n\n public setNewElementType(type: string) {\n if (this.latestElement !== undefined) {\n this.latestElement.type = type;\n }\n }\n\n public setNewElementDocRef(docRef: string) {\n if (this.latestElement !== undefined) {\n this.latestElement.docRef = docRef;\n }\n }\n\n public addRelationship(type: RelationshipType, src: string, dst: string) {\n this.relations.push({\n type,\n src,\n dst,\n });\n }\n\n public getRelationships() {\n return this.relations;\n }\n\n public clear() {\n this.relations = [];\n this.resetLatestRequirement();\n this.requirements = new Map();\n this.resetLatestElement();\n this.elements = new Map();\n this.classes = new Map();\n commonClear();\n }\n\n public setCssStyle(ids: string[], styles: string[]) {\n for (const id of ids) {\n const node = this.requirements.get(id) ?? this.elements.get(id);\n if (!styles || !node) {\n return;\n }\n for (const s of styles) {\n if (s.includes(',')) {\n node.cssStyles.push(...s.split(','));\n } else {\n node.cssStyles.push(s);\n }\n }\n }\n }\n\n public setClass(ids: string[], classNames: string[]) {\n for (const id of ids) {\n const node = this.requirements.get(id) ?? this.elements.get(id);\n if (node) {\n for (const _class of classNames) {\n node.classes.push(_class);\n const styles = this.classes.get(_class)?.styles;\n if (styles) {\n node.cssStyles.push(...styles);\n }\n }\n }\n }\n }\n\n public defineClass(ids: string[], style: string[]) {\n for (const id of ids) {\n let styleClass = this.classes.get(id);\n if (styleClass === undefined) {\n styleClass = { id, styles: [], textStyles: [] };\n this.classes.set(id, styleClass);\n }\n\n if (style) {\n style.forEach(function (s) {\n if (/color/.exec(s)) {\n const newStyle = s.replace('fill', 'bgFill'); // .replace('color', 'fill');\n styleClass.textStyles.push(newStyle);\n }\n styleClass.styles.push(s);\n });\n }\n\n this.requirements.forEach((value) => {\n if (value.classes.includes(id)) {\n value.cssStyles.push(...style.flatMap((s) => s.split(',')));\n }\n });\n this.elements.forEach((value) => {\n if (value.classes.includes(id)) {\n value.cssStyles.push(...style.flatMap((s) => s.split(',')));\n }\n });\n }\n }\n\n public getClasses() {\n return this.classes;\n }\n\n public getData() {\n const config = getConfig();\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n for (const requirement of this.requirements.values()) {\n const node = requirement as unknown as Node;\n node.id = requirement.name;\n node.cssStyles = requirement.cssStyles;\n node.cssClasses = requirement.classes.join(' ');\n node.shape = 'requirementBox';\n node.look = config.look;\n nodes.push(node);\n }\n\n for (const element of this.elements.values()) {\n const node = element as unknown as Node;\n node.shape = 'requirementBox';\n node.look = config.look;\n node.id = element.name;\n node.cssStyles = element.cssStyles;\n node.cssClasses = element.classes.join(' ');\n\n nodes.push(node);\n }\n\n for (const relation of this.relations) {\n let counter = 0;\n const isContains = relation.type === this.Relationships.CONTAINS;\n const edge: Edge = {\n id: `${relation.src}-${relation.dst}-${counter}`,\n start: this.requirements.get(relation.src)?.name ?? this.elements.get(relation.src)?.name,\n end: this.requirements.get(relation.dst)?.name ?? this.elements.get(relation.dst)?.name,\n label: `\u00AB${relation.type}\u00BB`,\n classes: 'relationshipLine',\n style: ['fill:none', isContains ? '' : 'stroke-dasharray: 10,7'],\n labelpos: 'c',\n thickness: 'normal',\n type: 'normal',\n pattern: isContains ? 'normal' : 'dashed',\n arrowTypeStart: isContains ? 'requirement_contains' : '',\n arrowTypeEnd: isContains ? '' : 'requirement_arrow',\n look: config.look,\n labelType: 'markdown',\n };\n\n edges.push(edge);\n counter++;\n }\n\n return { nodes, edges, other: {}, config, direction: this.getDirection() };\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setAccDescription = setAccDescription;\n public getAccDescription = getAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getConfig = () => getConfig().requirement;\n}\n", "const getStyles = (options) => `\n\n marker {\n fill: ${options.relationColor};\n stroke: ${options.relationColor};\n }\n\n marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n .reqBox {\n fill: ${options.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${options.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${options.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${options.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${options.relationLabelColor};\n }\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n }\n .edgeLabel .label rect {\n fill: ${options.edgeLabelBackground};\n }\n .edgeLabel .label text {\n fill: ${options.relationLabelColor};\n }\n .divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n }\n .label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .label text,span {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n`;\n// fill', conf.rect_fill)\nexport default getStyles;\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing requirement diagram (unified)', id);\n const { securityLevel, state: conf, layout } = getConfig();\n\n const data4Layout = diag.db.getData() as LayoutData;\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, securityLevel);\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n\n data4Layout.nodeSpacing = conf?.nodeSpacing ?? 50;\n data4Layout.rankSpacing = conf?.rankSpacing ?? 50;\n data4Layout.markers = ['requirement_contains', 'requirement_arrow'];\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n const padding = 8;\n utils.insertTitle(\n svg,\n 'requirementDiagramTitleText',\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n\n setupViewPortForSVG(svg, padding, 'requirementDiagram', conf?.useMaxWidth ?? true);\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/requirementDiagram.jison';\nimport { RequirementDB } from './requirementDb.js';\nimport styles from './styles.js';\nimport * as renderer from './requirementRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new RequirementDB();\n },\n renderer,\n styles,\n};\n"], - "mappings": "knBAyEA,IAAIA,IAAU,UAAU,CACxB,IAAIC,EAAEC,EAAA,SAASC,EAAEC,EAAEH,EAAEI,EAAE,CAAC,IAAIJ,EAAEA,GAAG,CAAC,EAAEI,EAAEF,EAAE,OAAOE,IAAIJ,EAAEE,EAAEE,CAAC,CAAC,EAAED,EAAE,CAAC,OAAOH,CAAC,EAAhE,KAAkEK,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,GAAG,EAAEC,EAAI,CAAC,EAAE,GAAG,EAAEC,EAAI,CAAC,EAAE,GAAG,EAAEC,EAAI,CAAC,EAAE,GAAG,EAAEC,EAAI,C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AE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EA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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "requirementDiagram_default", "parser", "RequirementDB", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "__name", "getConfig", "dir", "name", "type", "id", "text", "risk", "verifyMethod", "log", "docRef", "src", "dst", "clear", "ids", "styles", "node", "s", "classNames", "_class", "style", "styleClass", "newStyle", "value", "config", "nodes", "edges", "requirement", "element", "relation", "counter", "isContains", "edge", "getStyles", "__name", "options", "styles_default", "requirementRenderer_exports", "__export", "draw", "draw", "__name", "text", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "render", "padding", "utils_default", "setupViewPortForSVG", "diagram", "requirementDiagram_default", "RequirementDB", "requirementRenderer_exports", "styles_default"] + "sourcesContent": ["/* 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,4],$V2=[1,5],$V3=[1,6],$V4=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],$V5=[1,22],$V6=[2,7],$V7=[1,26],$V8=[1,27],$V9=[1,28],$Va=[1,29],$Vb=[1,33],$Vc=[1,34],$Vd=[1,35],$Ve=[1,36],$Vf=[1,37],$Vg=[1,38],$Vh=[1,24],$Vi=[1,31],$Vj=[1,32],$Vk=[1,30],$Vl=[1,39],$Vm=[1,40],$Vn=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],$Vo=[1,61],$Vp=[89,90],$Vq=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],$Vr=[27,29],$Vs=[1,70],$Vt=[1,71],$Vu=[1,72],$Vv=[1,73],$Vw=[1,74],$Vx=[1,75],$Vy=[1,76],$Vz=[1,83],$VA=[1,80],$VB=[1,84],$VC=[1,85],$VD=[1,86],$VE=[1,87],$VF=[1,88],$VG=[1,89],$VH=[1,90],$VI=[1,91],$VJ=[1,92],$VK=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],$VL=[63,64],$VM=[1,101],$VN=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],$VO=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],$VP=[1,110],$VQ=[1,106],$VR=[1,107],$VS=[1,108],$VT=[1,109],$VU=[1,111],$VV=[1,116],$VW=[1,117],$VX=[1,114],$VY=[1,115];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"acc_title\":9,\"acc_title_value\":10,\"acc_descr\":11,\"acc_descr_value\":12,\"acc_descr_multiline_value\":13,\"requirementDef\":14,\"elementDef\":15,\"relationshipDef\":16,\"direction\":17,\"styleStatement\":18,\"classDefStatement\":19,\"classStatement\":20,\"direction_tb\":21,\"direction_bt\":22,\"direction_rl\":23,\"direction_lr\":24,\"requirementType\":25,\"requirementName\":26,\"STRUCT_START\":27,\"requirementBody\":28,\"STYLE_SEPARATOR\":29,\"idList\":30,\"ID\":31,\"COLONSEP\":32,\"id\":33,\"TEXT\":34,\"text\":35,\"RISK\":36,\"riskLevel\":37,\"VERIFYMTHD\":38,\"verifyType\":39,\"STRUCT_STOP\":40,\"REQUIREMENT\":41,\"FUNCTIONAL_REQUIREMENT\":42,\"INTERFACE_REQUIREMENT\":43,\"PERFORMANCE_REQUIREMENT\":44,\"PHYSICAL_REQUIREMENT\":45,\"DESIGN_CONSTRAINT\":46,\"LOW_RISK\":47,\"MED_RISK\":48,\"HIGH_RISK\":49,\"VERIFY_ANALYSIS\":50,\"VERIFY_DEMONSTRATION\":51,\"VERIFY_INSPECTION\":52,\"VERIFY_TEST\":53,\"ELEMENT\":54,\"elementName\":55,\"elementBody\":56,\"TYPE\":57,\"type\":58,\"DOCREF\":59,\"ref\":60,\"END_ARROW_L\":61,\"relationship\":62,\"LINE\":63,\"END_ARROW_R\":64,\"CONTAINS\":65,\"COPIES\":66,\"DERIVES\":67,\"SATISFIES\":68,\"VERIFIES\":69,\"REFINES\":70,\"TRACES\":71,\"CLASSDEF\":72,\"stylesOpt\":73,\"CLASS\":74,\"ALPHA\":75,\"COMMA\":76,\"STYLE\":77,\"style\":78,\"styleComponent\":79,\"NUM\":80,\"COLON\":81,\"UNIT\":82,\"SPACE\":83,\"BRKT\":84,\"PCT\":85,\"MINUS\":86,\"LABEL\":87,\"SEMICOLON\":88,\"unqString\":89,\"qString\":90,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",9:\"acc_title\",10:\"acc_title_value\",11:\"acc_descr\",12:\"acc_descr_value\",13:\"acc_descr_multiline_value\",21:\"direction_tb\",22:\"direction_bt\",23:\"direction_rl\",24:\"direction_lr\",27:\"STRUCT_START\",29:\"STYLE_SEPARATOR\",31:\"ID\",32:\"COLONSEP\",34:\"TEXT\",36:\"RISK\",38:\"VERIFYMTHD\",40:\"STRUCT_STOP\",41:\"REQUIREMENT\",42:\"FUNCTIONAL_REQUIREMENT\",43:\"INTERFACE_REQUIREMENT\",44:\"PERFORMANCE_REQUIREMENT\",45:\"PHYSICAL_REQUIREMENT\",46:\"DESIGN_CONSTRAINT\",47:\"LOW_RISK\",48:\"MED_RISK\",49:\"HIGH_RISK\",50:\"VERIFY_ANALYSIS\",51:\"VERIFY_DEMONSTRATION\",52:\"VERIFY_INSPECTION\",53:\"VERIFY_TEST\",54:\"ELEMENT\",57:\"TYPE\",59:\"DOCREF\",61:\"END_ARROW_L\",63:\"LINE\",64:\"END_ARROW_R\",65:\"CONTAINS\",66:\"COPIES\",67:\"DERIVES\",68:\"SATISFIES\",69:\"VERIFIES\",70:\"REFINES\",71:\"TRACES\",72:\"CLASSDEF\",74:\"CLASS\",75:\"ALPHA\",76:\"COMMA\",77:\"STYLE\",80:\"NUM\",81:\"COLON\",82:\"UNIT\",83:\"SPACE\",84:\"BRKT\",85:\"PCT\",86:\"MINUS\",87:\"LABEL\",88:\"SEMICOLON\",89:\"unqString\",90:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,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 this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 5: case 6:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 7:\n this.$ = [] \nbreak;\ncase 17:\n yy.setDirection('TB');\nbreak;\ncase 18:\n yy.setDirection('BT');\nbreak;\ncase 19:\n yy.setDirection('RL');\nbreak;\ncase 20:\n yy.setDirection('LR');\nbreak;\ncase 21:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 22:\n yy.addRequirement($$[$0-5], $$[$0-6]); yy.setClass([$$[$0-5]], $$[$0-3]); \nbreak;\ncase 23:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 24:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 25:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 26:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 29:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 30:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 31:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 32:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 33:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 34:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 35:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 36:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 37:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 38:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 39:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 40:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 41:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 42:\n yy.addElement($$[$0-3]) \nbreak;\ncase 43:\n yy.addElement($$[$0-5]); yy.setClass([$$[$0-5]], $$[$0-3]); \nbreak;\ncase 44:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 45:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 48:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 49:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 50:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 51:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 52:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 53:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 54:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 55:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 56:\n this.$=yy.Relationships.TRACES;\nbreak;\ncase 57:\nthis.$ = $$[$0-2];yy.defineClass($$[$0-1],$$[$0]);\nbreak;\ncase 58:\nyy.setClass($$[$0-1], $$[$0]);\nbreak;\ncase 59:\nyy.setClass([$$[$0-2]], $$[$0]);\nbreak;\ncase 60: case 62:\n this.$ = [$$[$0]]; \nbreak;\ncase 61: case 63:\n this.$ = $$[$0-2].concat([$$[$0]]); \nbreak;\ncase 64:\nthis.$ = $$[$0-2];yy.setCssStyle($$[$0-1],$$[$0]);\nbreak;\ncase 65:\nthis.$ = [$$[$0]]\nbreak;\ncase 66:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 68:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:$V1,11:$V2,13:$V3},{1:[3]},{3:8,4:2,5:[1,7],6:$V0,9:$V1,11:$V2,13:$V3},{5:[1,9]},{10:[1,10]},{12:[1,11]},o($V4,[2,6]),{3:12,4:2,6:$V0,9:$V1,11:$V2,13:$V3},{1:[2,2]},{4:17,5:$V5,7:13,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},o($V4,[2,4]),o($V4,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:$V5,7:42,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:43,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:44,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:45,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:46,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:47,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:48,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:49,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{4:17,5:$V5,7:50,8:$V6,9:$V1,11:$V2,13:$V3,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:$V7,22:$V8,23:$V9,24:$Va,25:23,33:25,41:$Vb,42:$Vc,43:$Vd,44:$Ve,45:$Vf,46:$Vg,54:$Vh,72:$Vi,74:$Vj,77:$Vk,89:$Vl,90:$Vm},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},o($Vn,[2,17]),o($Vn,[2,18]),o($Vn,[2,19]),o($Vn,[2,20]),{30:60,33:62,75:$Vo,89:$Vl,90:$Vm},{30:63,33:62,75:$Vo,89:$Vl,90:$Vm},{30:64,33:62,75:$Vo,89:$Vl,90:$Vm},o($Vp,[2,29]),o($Vp,[2,30]),o($Vp,[2,31]),o($Vp,[2,32]),o($Vp,[2,33]),o($Vp,[2,34]),o($Vq,[2,81]),o($Vq,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},o($Vr,[2,79]),o($Vr,[2,80]),{27:[1,67],29:[1,68]},o($Vr,[2,85]),o($Vr,[2,86]),{62:69,65:$Vs,66:$Vt,67:$Vu,68:$Vv,69:$Vw,70:$Vx,71:$Vy},{62:77,65:$Vs,66:$Vt,67:$Vu,68:$Vv,69:$Vw,70:$Vx,71:$Vy},{30:78,33:62,75:$Vo,89:$Vl,90:$Vm},{73:79,75:$Vz,76:$VA,78:81,79:82,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ},o($VK,[2,60]),o($VK,[2,62]),{73:93,75:$Vz,76:$VA,78:81,79:82,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ},{30:94,33:62,75:$Vo,76:$VA,89:$Vl,90:$Vm},{5:[1,95]},{30:96,33:62,75:$Vo,89:$Vl,90:$Vm},{5:[1,97]},{30:98,33:62,75:$Vo,89:$Vl,90:$Vm},{63:[1,99]},o($VL,[2,50]),o($VL,[2,51]),o($VL,[2,52]),o($VL,[2,53]),o($VL,[2,54]),o($VL,[2,55]),o($VL,[2,56]),{64:[1,100]},o($Vn,[2,59],{76:$VA}),o($Vn,[2,64],{76:$VM}),{33:103,75:[1,102],89:$Vl,90:$Vm},o($VN,[2,65],{79:104,75:$Vz,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ}),o($VO,[2,67]),o($VO,[2,69]),o($VO,[2,70]),o($VO,[2,71]),o($VO,[2,72]),o($VO,[2,73]),o($VO,[2,74]),o($VO,[2,75]),o($VO,[2,76]),o($VO,[2,77]),o($VO,[2,78]),o($Vn,[2,57],{76:$VM}),o($Vn,[2,58],{76:$VA}),{5:$VP,28:105,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{27:[1,112],76:$VA},{5:$VV,40:$VW,56:113,57:$VX,59:$VY},{27:[1,118],76:$VA},{33:119,89:$Vl,90:$Vm},{33:120,89:$Vl,90:$Vm},{75:$Vz,78:121,79:82,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ},o($VK,[2,61]),o($VK,[2,63]),o($VO,[2,68]),o($Vn,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:$VP,28:126,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},o($Vn,[2,28]),{5:[1,127]},o($Vn,[2,42]),{32:[1,128]},{32:[1,129]},{5:$VV,40:$VW,56:130,57:$VX,59:$VY},o($Vn,[2,47]),{5:[1,131]},o($Vn,[2,48]),o($Vn,[2,49]),o($VN,[2,66],{79:104,75:$Vz,80:$VB,81:$VC,82:$VD,83:$VE,84:$VF,85:$VG,86:$VH,87:$VI,88:$VJ}),{33:132,89:$Vl,90:$Vm},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},o($Vn,[2,27]),{5:$VP,28:145,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},o($Vn,[2,46]),{5:$VV,40:$VW,56:152,57:$VX,59:$VY},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},o($Vn,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},o($Vn,[2,43]),{5:$VP,28:159,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{5:$VP,28:160,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{5:$VP,28:161,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{5:$VP,28:162,31:$VQ,34:$VR,36:$VS,38:$VT,40:$VU},{5:$VV,40:$VW,56:163,57:$VX,59:$VY},{5:$VV,40:$VW,56:164,57:$VX,59:$VY},o($Vn,[2,23]),o($Vn,[2,24]),o($Vn,[2,25]),o($Vn,[2,26]),o($Vn,[2,44]),o($Vn,[2,45])],\ndefaultActions: {8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},\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\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 'title';\nbreak;\ncase 1: this.begin(\"acc_title\");return 9; \nbreak;\ncase 2: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 3: this.begin(\"acc_descr\");return 11; \nbreak;\ncase 4: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 5: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 6: this.popState(); \nbreak;\ncase 7:return \"acc_descr_multiline_value\";\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 22;\nbreak;\ncase 10:return 23;\nbreak;\ncase 11:return 24;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:/* skip all whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16:return 8;\nbreak;\ncase 17:return 6;\nbreak;\ncase 18:return 27;\nbreak;\ncase 19:return 40;\nbreak;\ncase 20:return 29;\nbreak;\ncase 21:return 32;\nbreak;\ncase 22:return 31;\nbreak;\ncase 23:return 34;\nbreak;\ncase 24:return 36;\nbreak;\ncase 25:return 38;\nbreak;\ncase 26:return 41;\nbreak;\ncase 27:return 42;\nbreak;\ncase 28:return 43;\nbreak;\ncase 29:return 44;\nbreak;\ncase 30:return 45;\nbreak;\ncase 31:return 46;\nbreak;\ncase 32:return 47;\nbreak;\ncase 33:return 48;\nbreak;\ncase 34:return 49;\nbreak;\ncase 35:return 50;\nbreak;\ncase 36:return 51;\nbreak;\ncase 37:return 52;\nbreak;\ncase 38:return 53;\nbreak;\ncase 39:return 54;\nbreak;\ncase 40:return 65;\nbreak;\ncase 41:return 66;\nbreak;\ncase 42:return 67;\nbreak;\ncase 43:return 68;\nbreak;\ncase 44:return 69;\nbreak;\ncase 45:return 70;\nbreak;\ncase 46:return 71;\nbreak;\ncase 47:return 57;\nbreak;\ncase 48:return 59;\nbreak;\ncase 49: this.begin(\"style\"); return 77; \nbreak;\ncase 50:return 75;\nbreak;\ncase 51:return 81;\nbreak;\ncase 52:return 88;\nbreak;\ncase 53:return 'PERCENT';\nbreak;\ncase 54:return 86;\nbreak;\ncase 55:return 84;\nbreak;\ncase 56:/* skip spaces */\nbreak;\ncase 57: this.begin(\"string\"); \nbreak;\ncase 58: this.popState(); \nbreak;\ncase 59: this.begin(\"style\"); return 72; \nbreak;\ncase 60: this.begin(\"style\"); return 74; \nbreak;\ncase 61:return 61;\nbreak;\ncase 62:return 64;\nbreak;\ncase 63:return 63;\nbreak;\ncase 64: this.begin(\"string\"); \nbreak;\ncase 65: this.popState(); \nbreak;\ncase 66: return \"qString\"; \nbreak;\ncase 67: yy_.yytext = yy_.yytext.trim(); return 89;\nbreak;\ncase 68:return 75;\nbreak;\ncase 69:return 80;\nbreak;\ncase 70:return 76;\nbreak;\n}\n},\nrules: [/^(?:title\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::{3})/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,/^(?:style\\b)/i,/^(?:\\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:[\"])/i,/^(?:\\n)/i,/^(?:classDef\\b)/i,/^(?:class\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^:,\\r\\n\\{\\<\\>\\-\\=]*)/i,/^(?:\\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[6,7,68,69,70],\"inclusive\":false},\"acc_descr\":{\"rules\":[4,68,69,70],\"inclusive\":false},\"acc_title\":{\"rules\":[2,68,69,70],\"inclusive\":false},\"style\":{\"rules\":[50,51,52,53,54,55,56,57,58,68,69,70],\"inclusive\":false},\"unqString\":{\"rules\":[68,69,70],\"inclusive\":false},\"token\":{\"rules\":[68,69,70],\"inclusive\":false},\"string\":{\"rules\":[65,66,68,69,70],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport type { Node, Edge } from '../../rendering-util/types.js';\n\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../common/commonDb.js';\nimport type {\n Element,\n Relation,\n RelationshipType,\n Requirement,\n RequirementClass,\n RequirementType,\n RiskLevel,\n VerifyType,\n} from './types.js';\n\nexport class RequirementDB implements DiagramDB {\n private relations: Relation[] = [];\n private latestRequirement: Requirement = this.getInitialRequirement();\n private requirements = new Map();\n private latestElement: Element = this.getInitialElement();\n private elements = new Map();\n private classes = new Map();\n private direction = 'TB';\n\n private RequirementType = {\n REQUIREMENT: 'Requirement',\n FUNCTIONAL_REQUIREMENT: 'Functional Requirement',\n INTERFACE_REQUIREMENT: 'Interface Requirement',\n PERFORMANCE_REQUIREMENT: 'Performance Requirement',\n PHYSICAL_REQUIREMENT: 'Physical Requirement',\n DESIGN_CONSTRAINT: 'Design Constraint',\n };\n\n private RiskLevel = {\n LOW_RISK: 'Low',\n MED_RISK: 'Medium',\n HIGH_RISK: 'High',\n };\n\n private VerifyType = {\n VERIFY_ANALYSIS: 'Analysis',\n VERIFY_DEMONSTRATION: 'Demonstration',\n VERIFY_INSPECTION: 'Inspection',\n VERIFY_TEST: 'Test',\n };\n\n private Relationships = {\n CONTAINS: 'contains',\n COPIES: 'copies',\n DERIVES: 'derives',\n SATISFIES: 'satisfies',\n VERIFIES: 'verifies',\n REFINES: 'refines',\n TRACES: 'traces',\n };\n\n constructor() {\n this.clear();\n\n // Needed for JISON since it only supports direct properties\n this.setDirection = this.setDirection.bind(this);\n this.addRequirement = this.addRequirement.bind(this);\n this.setNewReqId = this.setNewReqId.bind(this);\n this.setNewReqRisk = this.setNewReqRisk.bind(this);\n this.setNewReqText = this.setNewReqText.bind(this);\n this.setNewReqVerifyMethod = this.setNewReqVerifyMethod.bind(this);\n this.addElement = this.addElement.bind(this);\n this.setNewElementType = this.setNewElementType.bind(this);\n this.setNewElementDocRef = this.setNewElementDocRef.bind(this);\n this.addRelationship = this.addRelationship.bind(this);\n this.setCssStyle = this.setCssStyle.bind(this);\n this.setClass = this.setClass.bind(this);\n this.defineClass = this.defineClass.bind(this);\n this.setAccTitle = this.setAccTitle.bind(this);\n this.setAccDescription = this.setAccDescription.bind(this);\n }\n\n public getDirection() {\n return this.direction;\n }\n public setDirection(dir: string) {\n this.direction = dir;\n }\n\n private resetLatestRequirement() {\n this.latestRequirement = this.getInitialRequirement();\n }\n\n private resetLatestElement() {\n this.latestElement = this.getInitialElement();\n }\n\n private getInitialRequirement(): Requirement {\n return {\n requirementId: '',\n text: '',\n risk: '' as RiskLevel,\n verifyMethod: '' as VerifyType,\n name: '',\n type: '' as RequirementType,\n cssStyles: [],\n classes: ['default'],\n };\n }\n\n private getInitialElement(): Element {\n return {\n name: '',\n type: '',\n docRef: '',\n cssStyles: [],\n classes: ['default'],\n };\n }\n\n public addRequirement(name: string, type: RequirementType) {\n if (!this.requirements.has(name)) {\n this.requirements.set(name, {\n name,\n type,\n requirementId: this.latestRequirement.requirementId,\n text: this.latestRequirement.text,\n risk: this.latestRequirement.risk,\n verifyMethod: this.latestRequirement.verifyMethod,\n cssStyles: [],\n classes: ['default'],\n });\n }\n this.resetLatestRequirement();\n\n return this.requirements.get(name);\n }\n\n public getRequirements() {\n return this.requirements;\n }\n\n public setNewReqId(id: string) {\n if (this.latestRequirement !== undefined) {\n this.latestRequirement.requirementId = id;\n }\n }\n\n public setNewReqText(text: string) {\n if (this.latestRequirement !== undefined) {\n this.latestRequirement.text = text;\n }\n }\n\n public setNewReqRisk(risk: RiskLevel) {\n if (this.latestRequirement !== undefined) {\n this.latestRequirement.risk = risk;\n }\n }\n\n public setNewReqVerifyMethod(verifyMethod: VerifyType) {\n if (this.latestRequirement !== undefined) {\n this.latestRequirement.verifyMethod = verifyMethod;\n }\n }\n\n public addElement(name: string) {\n if (!this.elements.has(name)) {\n this.elements.set(name, {\n name,\n type: this.latestElement.type,\n docRef: this.latestElement.docRef,\n cssStyles: [],\n classes: ['default'],\n });\n log.info('Added new element: ', name);\n }\n this.resetLatestElement();\n\n return this.elements.get(name);\n }\n\n public getElements() {\n return this.elements;\n }\n\n public setNewElementType(type: string) {\n if (this.latestElement !== undefined) {\n this.latestElement.type = type;\n }\n }\n\n public setNewElementDocRef(docRef: string) {\n if (this.latestElement !== undefined) {\n this.latestElement.docRef = docRef;\n }\n }\n\n public addRelationship(type: RelationshipType, src: string, dst: string) {\n this.relations.push({\n type,\n src,\n dst,\n });\n }\n\n public getRelationships() {\n return this.relations;\n }\n\n public clear() {\n this.relations = [];\n this.resetLatestRequirement();\n this.requirements = new Map();\n this.resetLatestElement();\n this.elements = new Map();\n this.classes = new Map();\n commonClear();\n }\n\n public setCssStyle(ids: string[], styles: string[]) {\n for (const id of ids) {\n const node = this.requirements.get(id) ?? this.elements.get(id);\n if (!styles || !node) {\n return;\n }\n for (const s of styles) {\n if (s.includes(',')) {\n node.cssStyles.push(...s.split(','));\n } else {\n node.cssStyles.push(s);\n }\n }\n }\n }\n\n public setClass(ids: string[], classNames: string[]) {\n for (const id of ids) {\n const node = this.requirements.get(id) ?? this.elements.get(id);\n if (node) {\n for (const _class of classNames) {\n node.classes.push(_class);\n const styles = this.classes.get(_class)?.styles;\n if (styles) {\n node.cssStyles.push(...styles);\n }\n }\n }\n }\n }\n\n public defineClass(ids: string[], style: string[]) {\n for (const id of ids) {\n let styleClass = this.classes.get(id);\n if (styleClass === undefined) {\n styleClass = { id, styles: [], textStyles: [] };\n this.classes.set(id, styleClass);\n }\n\n if (style) {\n style.forEach(function (s) {\n if (/color/.exec(s)) {\n const newStyle = s.replace('fill', 'bgFill'); // .replace('color', 'fill');\n styleClass.textStyles.push(newStyle);\n }\n styleClass.styles.push(s);\n });\n }\n\n this.requirements.forEach((value) => {\n if (value.classes.includes(id)) {\n value.cssStyles.push(...style.flatMap((s) => s.split(',')));\n }\n });\n this.elements.forEach((value) => {\n if (value.classes.includes(id)) {\n value.cssStyles.push(...style.flatMap((s) => s.split(',')));\n }\n });\n }\n }\n\n public getClasses() {\n return this.classes;\n }\n\n public getData() {\n const config = getConfig();\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n for (const requirement of this.requirements.values()) {\n const node = requirement as unknown as Node;\n node.id = requirement.name;\n node.cssStyles = requirement.cssStyles;\n node.cssClasses = requirement.classes.join(' ');\n node.shape = 'requirementBox';\n node.look = config.look;\n node.colorIndex = nodes.length;\n nodes.push(node);\n }\n\n for (const element of this.elements.values()) {\n const node = element as unknown as Node;\n node.shape = 'requirementBox';\n node.look = config.look;\n node.id = element.name;\n node.cssStyles = element.cssStyles;\n node.cssClasses = element.classes.join(' ');\n node.colorIndex = nodes.length;\n nodes.push(node);\n }\n\n for (const relation of this.relations) {\n let counter = 0;\n const isContains = relation.type === this.Relationships.CONTAINS;\n const edge: Edge = {\n id: `${relation.src}-${relation.dst}-${counter}`,\n start: this.requirements.get(relation.src)?.name ?? this.elements.get(relation.src)?.name,\n end: this.requirements.get(relation.dst)?.name ?? this.elements.get(relation.dst)?.name,\n label: `<<${relation.type}>>`,\n classes: 'relationshipLine',\n style: ['fill:none', isContains ? '' : 'stroke-dasharray: 10,7'],\n labelpos: 'c',\n thickness: 'normal',\n type: 'normal',\n pattern: isContains ? 'normal' : 'dashed',\n arrowTypeStart: isContains ? 'requirement_contains' : '',\n arrowTypeEnd: isContains ? '' : 'requirement_arrow',\n look: config.look,\n labelType: 'markdown',\n };\n\n edges.push(edge);\n counter++;\n }\n\n return { nodes, edges, other: {}, config, direction: this.getDirection() };\n }\n\n public setAccTitle = setAccTitle;\n public getAccTitle = getAccTitle;\n public setAccDescription = setAccDescription;\n public getAccDescription = getAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getDiagramTitle = getDiagramTitle;\n public getConfig = () => getConfig().requirement;\n}\n", "import * as configApi from '../../config.js';\n\nconst genColor = (options) => {\n const config = configApi.getConfig();\n\n const { themeVariables, look } = config;\n const { bkgColorArray, borderColorArray } = themeVariables;\n if (!borderColorArray?.length) {\n return '';\n }\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n\n [data-look=\"${look}\"][data-color-id=\"color-${i}\"].node path {\n stroke: ${borderColorArray[i]};\n fill: ${bkgColorArray?.length ? bkgColorArray[i] : ''};\n }\n\n [data-look=\"${look}\"][data-color-id=\"color-${i}\"].node rect {\n stroke: ${borderColorArray[i]};\n fill: ${bkgColorArray?.length ? bkgColorArray[i] : ''};\n }\n `;\n }\n return sections;\n};\n\nconst getStyles = (options) => {\n const config = configApi.getConfig();\n const { look, themeVariables } = config;\n const { requirementEdgeLabelBackground } = themeVariables;\n return `\n ${genColor(options)}\n marker {\n fill: ${options.relationColor};\n stroke: ${options.relationColor};\n }\n\n marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n .reqBox {\n fill: ${options.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${options.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${options.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${options.relationColor};\n stroke-width: ${look === 'neo' ? options.strokeWidth : '1px'};\n }\n .relationshipLabel {\n fill: ${options.relationLabelColor};\n }\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n }\n .edgeLabel .label rect {\n fill: ${options.edgeLabelBackground};\n }\n .edgeLabel .label text {\n fill: ${options.relationLabelColor};\n }\n .divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n }\n .label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .label text,span {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n .labelBkg {\n background-color: ${requirementEdgeLabelBackground ?? options.edgeLabelBackground};\n }\n\n`;\n};\n// fill', conf.rect_fill)\nexport default getStyles;\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\nimport { getDiagramElement } from '../../rendering-util/insertElementsForSize.js';\nimport { getRegisteredLayoutAlgorithm, render } from '../../rendering-util/render.js';\nimport { setupViewPortForSVG } from '../../rendering-util/setupViewPortForSVG.js';\nimport type { LayoutData } from '../../rendering-util/types.js';\nimport utils from '../../utils.js';\n\nexport const draw = async function (text: string, id: string, _version: string, diag: any) {\n log.info('REF0:');\n log.info('Drawing requirement diagram (unified)', id);\n const { securityLevel, state: conf, layout, look } = getConfig();\n\n const data4Layout = diag.db.getData() as LayoutData;\n\n // Create the root SVG - the element is the div containing the SVG element\n const svg = getDiagramElement(id, securityLevel);\n\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n\n data4Layout.nodeSpacing = conf?.nodeSpacing ?? 50;\n data4Layout.rankSpacing = conf?.rankSpacing ?? 50;\n data4Layout.markers =\n look === 'neo'\n ? ['requirement_contains_neo', 'requirement_arrow_neo']\n : ['requirement_contains', 'requirement_arrow'];\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n const padding = 8;\n utils.insertTitle(\n svg,\n 'requirementDiagramTitleText',\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n\n setupViewPortForSVG(svg, padding, 'requirementDiagram', conf?.useMaxWidth ?? true);\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/requirementDiagram.jison';\nimport { RequirementDB } from './requirementDb.js';\nimport styles from './styles.js';\nimport * as renderer from './requirementRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new RequirementDB();\n },\n renderer,\n styles,\n};\n"], + "mappings": "6lBAyEA,IAAIA,IAAU,UAAU,CACxB,IAAIC,EAAEC,EAAA,SAASC,EAAEC,EAAEH,EAAEI,EAAE,CAAC,IAAIJ,EAAEA,GAAG,CAAC,EAAEI,EAAEF,EAAE,OAAOE,IAAIJ,EAAEE,EAAEE,CAAC,CAAC,EAAED,EAAE,CAAC,OAAOH,CAAC,EAAhE,KAAkEK,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,EAAI,CAAC,EAAE,GAAG,EAAEC,EAAI,CAAC,EAAE,GAAG,EAAEC,EAAI,CAAC,EAAE,GAAG,EAAEC,EAAI,CAAC,EAAE,GAAG,EAAEC,EAAI,C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AE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EA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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "requirementDiagram_default", "parser", "RequirementDB", "setAccTitle", "getAccTitle", "setAccDescription", "getAccDescription", "setDiagramTitle", "getDiagramTitle", "__name", "getConfig", "dir", "name", "type", "id", "text", "risk", "verifyMethod", "log", "docRef", "src", "dst", "clear", "ids", "styles", "node", "s", "classNames", "_class", "style", "styleClass", "newStyle", "value", "config", "nodes", "edges", "requirement", "element", "relation", "counter", "isContains", "edge", "genColor", "__name", "options", "config", "getConfig", "themeVariables", "look", "bkgColorArray", "borderColorArray", "sections", "i", "getStyles", "requirementEdgeLabelBackground", "styles_default", "requirementRenderer_exports", "__export", "draw", "draw", "__name", "text", "id", "_version", "diag", "log", "securityLevel", "conf", "layout", "look", "getConfig", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "render", "padding", "utils_default", "setupViewPortForSVG", "diagram", "requirementDiagram_default", "RequirementDB", "requirementRenderer_exports", "styles_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-N2XL27SN.mjs b/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-N2XL27SN.mjs deleted file mode 100644 index d1a4659..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/requirementDiagram-N2XL27SN.mjs +++ /dev/null @@ -1,73 +0,0 @@ -import{a as Ze}from"./chunk-TBF5ZNIQ.mjs";import{a as it}from"./chunk-T4EQAHMB.mjs";import{b as et,c as tt}from"./chunk-SK62O5VA.mjs";import"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import{m as Je}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{Q as He,R as Ke,S as je,T as We,U as Ge,V as ze,W as Xe,Y as de}from"./chunk-3UWU4A3N.mjs";import{b as fe}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as h,d as ht}from"./chunk-VELTKBKT.mjs";var Ae=(function(){var e=h(function(P,s,n,c){for(n=n||{},c=P.length;c--;n[P[c]]=s);return n},"o"),l=[1,3],m=[1,4],u=[1,5],r=[1,6],o=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],p=[1,22],R=[2,7],k=[1,26],S=[1,27],N=[1,28],q=[1,29],C=[1,33],A=[1,34],V=[1,35],v=[1,36],L=[1,37],x=[1,38],D=[1,24],O=[1,31],w=[1,32],M=[1,30],b=[1,39],E=[1,40],d=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],$=[1,61],X=[89,90],ve=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],be=[27,29],Le=[1,70],xe=[1,71],De=[1,72],Oe=[1,73],we=[1,74],Me=[1,75],Fe=[1,76],Z=[1,83],U=[1,80],ee=[1,84],te=[1,85],ie=[1,86],se=[1,87],re=[1,88],ne=[1,89],ae=[1,90],le=[1,91],ce=[1,92],Ee=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Y=[63,64],Pe=[1,101],$e=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],T=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],B=[1,110],Q=[1,106],H=[1,107],K=[1,108],j=[1,109],W=[1,111],oe=[1,116],he=[1,117],ue=[1,114],me=[1,115],_e={trace:h(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:h(function(s,n,c,i,f,t,pe){var a=t.length-1;switch(f){case 4:this.$=t[a].trim(),i.setAccTitle(this.$);break;case 5:case 6:this.$=t[a].trim(),i.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:i.setDirection("TB");break;case 18:i.setDirection("BT");break;case 19:i.setDirection("RL");break;case 20:i.setDirection("LR");break;case 21:i.addRequirement(t[a-3],t[a-4]);break;case 22:i.addRequirement(t[a-5],t[a-6]),i.setClass([t[a-5]],t[a-3]);break;case 23:i.setNewReqId(t[a-2]);break;case 24:i.setNewReqText(t[a-2]);break;case 25:i.setNewReqRisk(t[a-2]);break;case 26:i.setNewReqVerifyMethod(t[a-2]);break;case 29:this.$=i.RequirementType.REQUIREMENT;break;case 30:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=i.RiskLevel.LOW_RISK;break;case 36:this.$=i.RiskLevel.MED_RISK;break;case 37:this.$=i.RiskLevel.HIGH_RISK;break;case 38:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=i.VerifyType.VERIFY_TEST;break;case 42:i.addElement(t[a-3]);break;case 43:i.addElement(t[a-5]),i.setClass([t[a-5]],t[a-3]);break;case 44:i.setNewElementType(t[a-2]);break;case 45:i.setNewElementDocRef(t[a-2]);break;case 48:i.addRelationship(t[a-2],t[a],t[a-4]);break;case 49:i.addRelationship(t[a-2],t[a-4],t[a]);break;case 50:this.$=i.Relationships.CONTAINS;break;case 51:this.$=i.Relationships.COPIES;break;case 52:this.$=i.Relationships.DERIVES;break;case 53:this.$=i.Relationships.SATISFIES;break;case 54:this.$=i.Relationships.VERIFIES;break;case 55:this.$=i.Relationships.REFINES;break;case 56:this.$=i.Relationships.TRACES;break;case 57:this.$=t[a-2],i.defineClass(t[a-1],t[a]);break;case 58:i.setClass(t[a-1],t[a]);break;case 59:i.setClass([t[a-2]],t[a]);break;case 60:case 62:this.$=[t[a]];break;case 61:case 63:this.$=t[a-2].concat([t[a]]);break;case 64:this.$=t[a-2],i.setCssStyle(t[a-1],t[a]);break;case 65:this.$=[t[a]];break;case 66:t[a-2].push(t[a]),this.$=t[a-2];break;case 68:this.$=t[a-1]+t[a];break}},"anonymous"),table:[{3:1,4:2,6:l,9:m,11:u,13:r},{1:[3]},{3:8,4:2,5:[1,7],6:l,9:m,11:u,13:r},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(o,[2,6]),{3:12,4:2,6:l,9:m,11:u,13:r},{1:[2,2]},{4:17,5:p,7:13,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},e(o,[2,4]),e(o,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:p,7:42,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{4:17,5:p,7:43,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{4:17,5:p,7:44,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{4:17,5:p,7:45,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{4:17,5:p,7:46,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{4:17,5:p,7:47,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{4:17,5:p,7:48,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{4:17,5:p,7:49,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{4:17,5:p,7:50,8:R,9:m,11:u,13:r,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:k,22:S,23:N,24:q,25:23,33:25,41:C,42:A,43:V,44:v,45:L,46:x,54:D,72:O,74:w,77:M,89:b,90:E},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(d,[2,17]),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),{30:60,33:62,75:$,89:b,90:E},{30:63,33:62,75:$,89:b,90:E},{30:64,33:62,75:$,89:b,90:E},e(X,[2,29]),e(X,[2,30]),e(X,[2,31]),e(X,[2,32]),e(X,[2,33]),e(X,[2,34]),e(ve,[2,81]),e(ve,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(be,[2,79]),e(be,[2,80]),{27:[1,67],29:[1,68]},e(be,[2,85]),e(be,[2,86]),{62:69,65:Le,66:xe,67:De,68:Oe,69:we,70:Me,71:Fe},{62:77,65:Le,66:xe,67:De,68:Oe,69:we,70:Me,71:Fe},{30:78,33:62,75:$,89:b,90:E},{73:79,75:Z,76:U,78:81,79:82,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce},e(Ee,[2,60]),e(Ee,[2,62]),{73:93,75:Z,76:U,78:81,79:82,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce},{30:94,33:62,75:$,76:U,89:b,90:E},{5:[1,95]},{30:96,33:62,75:$,89:b,90:E},{5:[1,97]},{30:98,33:62,75:$,89:b,90:E},{63:[1,99]},e(Y,[2,50]),e(Y,[2,51]),e(Y,[2,52]),e(Y,[2,53]),e(Y,[2,54]),e(Y,[2,55]),e(Y,[2,56]),{64:[1,100]},e(d,[2,59],{76:U}),e(d,[2,64],{76:Pe}),{33:103,75:[1,102],89:b,90:E},e($e,[2,65],{79:104,75:Z,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce}),e(T,[2,67]),e(T,[2,69]),e(T,[2,70]),e(T,[2,71]),e(T,[2,72]),e(T,[2,73]),e(T,[2,74]),e(T,[2,75]),e(T,[2,76]),e(T,[2,77]),e(T,[2,78]),e(d,[2,57],{76:Pe}),e(d,[2,58],{76:U}),{5:B,28:105,31:Q,34:H,36:K,38:j,40:W},{27:[1,112],76:U},{5:oe,40:he,56:113,57:ue,59:me},{27:[1,118],76:U},{33:119,89:b,90:E},{33:120,89:b,90:E},{75:Z,78:121,79:82,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce},e(Ee,[2,61]),e(Ee,[2,63]),e(T,[2,68]),e(d,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:B,28:126,31:Q,34:H,36:K,38:j,40:W},e(d,[2,28]),{5:[1,127]},e(d,[2,42]),{32:[1,128]},{32:[1,129]},{5:oe,40:he,56:130,57:ue,59:me},e(d,[2,47]),{5:[1,131]},e(d,[2,48]),e(d,[2,49]),e($e,[2,66],{79:104,75:Z,80:ee,81:te,82:ie,83:se,84:re,85:ne,86:ae,87:le,88:ce}),{33:132,89:b,90:E},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(d,[2,27]),{5:B,28:145,31:Q,34:H,36:K,38:j,40:W},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(d,[2,46]),{5:oe,40:he,56:152,57:ue,59:me},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(d,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(d,[2,43]),{5:B,28:159,31:Q,34:H,36:K,38:j,40:W},{5:B,28:160,31:Q,34:H,36:K,38:j,40:W},{5:B,28:161,31:Q,34:H,36:K,38:j,40:W},{5:B,28:162,31:Q,34:H,36:K,38:j,40:W},{5:oe,40:he,56:163,57:ue,59:me},{5:oe,40:he,56:164,57:ue,59:me},e(d,[2,23]),e(d,[2,24]),e(d,[2,25]),e(d,[2,26]),e(d,[2,44]),e(d,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:h(function(s,n){if(n.recoverable)this.trace(s);else{var c=new Error(s);throw c.hash=n,c}},"parseError"),parse:h(function(s){var n=this,c=[0],i=[],f=[null],t=[],pe=this.table,a="",Re=0,Ue=0,Ye=0,at=2,Be=1,lt=t.slice.call(arguments,1),y=Object.create(this.lexer),G={yy:{}};for(var Te in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Te)&&(G.yy[Te]=this.yy[Te]);y.setInput(s,G.yy),G.yy.lexer=y,G.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var Ie=y.yylloc;t.push(Ie);var ct=y.options&&y.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(_){c.length=c.length-2*_,f.length=f.length-_,t.length=t.length-_}h(pt,"popStack");function ot(){var _;return _=i.pop()||y.lex()||Be,typeof _!="number"&&(_ instanceof Array&&(i=_,_=i.pop()),_=n.symbols_[_]||_),_}h(ot,"lex");for(var g,Ne,z,I,ft,qe,J={},ye,F,Qe,ge;;){if(z=c[c.length-1],this.defaultActions[z]?I=this.defaultActions[z]:((g===null||typeof g>"u")&&(g=ot()),I=pe[z]&&pe[z][g]),typeof I>"u"||!I.length||!I[0]){var Ce="";ge=[];for(ye in pe[z])this.terminals_[ye]&&ye>at&&ge.push("'"+this.terminals_[ye]+"'");y.showPosition?Ce="Parse error on line "+(Re+1)+`: -`+y.showPosition()+` -Expecting `+ge.join(", ")+", got '"+(this.terminals_[g]||g)+"'":Ce="Parse error on line "+(Re+1)+": Unexpected "+(g==Be?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(Ce,{text:y.match,token:this.terminals_[g]||g,line:y.yylineno,loc:Ie,expected:ge})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+z+", token: "+g);switch(I[0]){case 1:c.push(g),f.push(y.yytext),t.push(y.yylloc),c.push(I[1]),g=null,Ne?(g=Ne,Ne=null):(Ue=y.yyleng,a=y.yytext,Re=y.yylineno,Ie=y.yylloc,Ye>0&&Ye--);break;case 2:if(F=this.productions_[I[1]][1],J.$=f[f.length-F],J._$={first_line:t[t.length-(F||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(F||1)].first_column,last_column:t[t.length-1].last_column},ct&&(J._$.range=[t[t.length-(F||1)].range[0],t[t.length-1].range[1]]),qe=this.performAction.apply(J,[a,Ue,Re,G.yy,I[1],f,t].concat(lt)),typeof qe<"u")return qe;F&&(c=c.slice(0,-1*F*2),f=f.slice(0,-1*F),t=t.slice(0,-1*F)),c.push(this.productions_[I[1]][0]),f.push(J.$),t.push(J._$),Qe=pe[c[c.length-2]][c[c.length-1]],c.push(Qe);break;case 3:return!0}}return!0},"parse")},nt=(function(){var P={EOF:1,parseError:h(function(n,c){if(this.yy.parser)this.yy.parser.parseError(n,c);else throw new Error(n)},"parseError"),setInput:h(function(s,n){return this.yy=n||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:h(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var n=s.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:h(function(s){var n=s.length,c=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var f=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===i.length?this.yylloc.first_column:0)+i[i.length-c.length].length-c[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[f[0],f[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:h(function(){return this._more=!0,this},"more"),reject:h(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:h(function(s){this.unput(this.match.slice(s))},"less"),pastInput:h(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:h(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:h(function(){var s=this.pastInput(),n=new Array(s.length+1).join("-");return s+this.upcomingInput()+` -`+n+"^"},"showPosition"),test_match:h(function(s,n){var c,i,f;if(this.options.backtrack_lexer&&(f={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(f.yylloc.range=this.yylloc.range.slice(0))),i=s[0].match(/(?:\r\n?|\n).*/g),i&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(s[0].length),this.matched+=s[0],c=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var t in f)this[t]=f[t];return!1}return!1},"test_match"),next:h(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,n,c,i;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),t=0;tn[0].length)){if(n=c,i=t,this.options.backtrack_lexer){if(s=this.test_match(c,f[t]),s!==!1)return s;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(s=this.test_match(n,f[i]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:h(function(){var n=this.next();return n||this.lex()},"lex"),begin:h(function(n){this.conditionStack.push(n)},"begin"),popState:h(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:h(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:h(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:h(function(n){this.begin(n)},"pushState"),stateStackSize:h(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:h(function(n,c,i,f){var t=f;switch(i){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return c.yytext=c.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/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,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return P})();_e.lexer=nt;function Se(){this.yy={}}return h(Se,"Parser"),Se.prototype=_e,_e.Parser=Se,new Se})();Ae.parser=Ae;var st=Ae;var ke=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=Ke;this.getAccTitle=je;this.setAccDescription=We;this.getAccDescription=Ge;this.setDiagramTitle=ze;this.getDiagramTitle=Xe;this.getConfig=h(()=>de().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{h(this,"RequirementDB")}getDirection(){return this.direction}setDirection(l){this.direction=l}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(l,m){return this.requirements.has(l)||this.requirements.set(l,{name:l,type:m,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(l)}getRequirements(){return this.requirements}setNewReqId(l){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=l)}setNewReqText(l){this.latestRequirement!==void 0&&(this.latestRequirement.text=l)}setNewReqRisk(l){this.latestRequirement!==void 0&&(this.latestRequirement.risk=l)}setNewReqVerifyMethod(l){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=l)}addElement(l){return this.elements.has(l)||(this.elements.set(l,{name:l,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),fe.info("Added new element: ",l)),this.resetLatestElement(),this.elements.get(l)}getElements(){return this.elements}setNewElementType(l){this.latestElement!==void 0&&(this.latestElement.type=l)}setNewElementDocRef(l){this.latestElement!==void 0&&(this.latestElement.docRef=l)}addRelationship(l,m,u){this.relations.push({type:l,src:m,dst:u})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,He()}setCssStyle(l,m){for(let u of l){let r=this.requirements.get(u)??this.elements.get(u);if(!m||!r)return;for(let o of m)o.includes(",")?r.cssStyles.push(...o.split(",")):r.cssStyles.push(o)}}setClass(l,m){for(let u of l){let r=this.requirements.get(u)??this.elements.get(u);if(r)for(let o of m){r.classes.push(o);let p=this.classes.get(o)?.styles;p&&r.cssStyles.push(...p)}}}defineClass(l,m){for(let u of l){let r=this.classes.get(u);r===void 0&&(r={id:u,styles:[],textStyles:[]},this.classes.set(u,r)),m&&m.forEach(function(o){if(/color/.exec(o)){let p=o.replace("fill","bgFill");r.textStyles.push(p)}r.styles.push(o)}),this.requirements.forEach(o=>{o.classes.includes(u)&&o.cssStyles.push(...m.flatMap(p=>p.split(",")))}),this.elements.forEach(o=>{o.classes.includes(u)&&o.cssStyles.push(...m.flatMap(p=>p.split(",")))})}}getClasses(){return this.classes}getData(){let l=de(),m=[],u=[];for(let r of this.requirements.values()){let o=r;o.id=r.name,o.cssStyles=r.cssStyles,o.cssClasses=r.classes.join(" "),o.shape="requirementBox",o.look=l.look,m.push(o)}for(let r of this.elements.values()){let o=r;o.shape="requirementBox",o.look=l.look,o.id=r.name,o.cssStyles=r.cssStyles,o.cssClasses=r.classes.join(" "),m.push(o)}for(let r of this.relations){let o=0,p=r.type===this.Relationships.CONTAINS,R={id:`${r.src}-${r.dst}-${o}`,start:this.requirements.get(r.src)?.name??this.elements.get(r.src)?.name,end:this.requirements.get(r.dst)?.name??this.elements.get(r.dst)?.name,label:`\xAB${r.type}\xBB`,classes:"relationshipLine",style:["fill:none",p?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:p?"normal":"dashed",arrowTypeStart:p?"requirement_contains":"",arrowTypeEnd:p?"":"requirement_arrow",look:l.look,labelType:"markdown"};u.push(R),o++}return{nodes:m,edges:u,other:{},config:l,direction:this.getDirection()}}};var ut=h(e=>` - - marker { - fill: ${e.relationColor}; - stroke: ${e.relationColor}; - } - - marker.cross { - stroke: ${e.lineColor}; - } - - svg { - font-family: ${e.fontFamily}; - font-size: ${e.fontSize}; - } - - .reqBox { - fill: ${e.requirementBackground}; - fill-opacity: 1.0; - stroke: ${e.requirementBorderColor}; - stroke-width: ${e.requirementBorderSize}; - } - - .reqTitle, .reqLabel{ - fill: ${e.requirementTextColor}; - } - .reqLabelBox { - fill: ${e.relationLabelBackground}; - fill-opacity: 1.0; - } - - .req-title-line { - stroke: ${e.requirementBorderColor}; - stroke-width: ${e.requirementBorderSize}; - } - .relationshipLine { - stroke: ${e.relationColor}; - stroke-width: 1; - } - .relationshipLabel { - fill: ${e.relationLabelColor}; - } - .edgeLabel { - background-color: ${e.edgeLabelBackground}; - } - .edgeLabel .label rect { - fill: ${e.edgeLabelBackground}; - } - .edgeLabel .label text { - fill: ${e.relationLabelColor}; - } - .divider { - stroke: ${e.nodeBorder}; - stroke-width: 1; - } - .label { - font-family: ${e.fontFamily}; - color: ${e.nodeTextColor||e.textColor}; - } - .label text,span { - fill: ${e.nodeTextColor||e.textColor}; - color: ${e.nodeTextColor||e.textColor}; - } - .labelBkg { - background-color: ${e.edgeLabelBackground}; - } - -`,"getStyles"),rt=ut;var Ve={};ht(Ve,{draw:()=>mt});var mt=h(async function(e,l,m,u){fe.info("REF0:"),fe.info("Drawing requirement diagram (unified)",l);let{securityLevel:r,state:o,layout:p}=de(),R=u.db.getData(),k=Ze(l,r);R.type=u.type,R.layoutAlgorithm=tt(p),R.nodeSpacing=o?.nodeSpacing??50,R.rankSpacing=o?.rankSpacing??50,R.markers=["requirement_contains","requirement_arrow"],R.diagramId=l,await et(R,k);let S=8;Je.insertTitle(k,"requirementDiagramTitleText",o?.titleTopMargin??25,u.db.getDiagramTitle()),it(k,S,"requirementDiagram",o?.useMaxWidth??!0)},"draw");var Dt={parser:st,get db(){return new ke},renderer:Ve,styles:rt};export{Dt as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-HWP7ZNIN.mjs b/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-HWP7ZNIN.mjs deleted file mode 100644 index d7aa574..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-HWP7ZNIN.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import{F as _t,O as vt,Q as bt,R as St,S as wt,T as Lt,U as At,V as Et,W as Tt,Y as U,_ as Ct}from"./chunk-3UWU4A3N.mjs";import{E as Nt,h as X,m as Mt}from"./chunk-MGPAVIPZ.mjs";import{a as e}from"./chunk-VELTKBKT.mjs";var lt=(function(){var t=e(function(x,o,a,l){for(a=a||{},l=x.length;l--;a[x[l]]=o);return a},"o"),r=[1,9],i=[1,10],u=[1,5,10,12],c={trace:e(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:e(function(o,a,l,k,_,p,v){var C=p.length-1;switch(_){case 7:let E=k.findOrCreateNode(p[C-4].trim().replaceAll('""','"')),M=k.findOrCreateNode(p[C-2].trim().replaceAll('""','"')),D=parseFloat(p[C].trim());k.addLink(E,M,D);break;case 8:case 9:case 11:this.$=p[C];break;case 10:this.$=p[C-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:r,20:i},{1:[2,6],7:11,10:[1,12]},t(i,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(u,[2,8]),t(u,[2,9]),{19:[1,16]},t(u,[2,11]),{1:[2,1]},{1:[2,5]},t(i,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:r,20:i},{15:18,16:7,17:8,18:r,20:i},{18:[1,19]},t(i,[2,3]),{12:[1,20]},t(u,[2,10]),{15:21,16:7,17:8,18:r,20:i},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:e(function(o,a){if(a.recoverable)this.trace(o);else{var l=new Error(o);throw l.hash=a,l}},"parseError"),parse:e(function(o){var a=this,l=[0],k=[],_=[null],p=[],v=this.table,C="",E=0,M=0,D=0,z=2,B=1,R=p.slice.call(arguments,1),w=Object.create(this.lexer),N={yy:{}};for(var P in this.yy)Object.prototype.hasOwnProperty.call(this.yy,P)&&(N.yy[P]=this.yy[P]);w.setInput(o,N.yy),N.yy.lexer=w,N.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var O=w.yylloc;p.push(O);var y=w.options&&w.options.ranges;typeof N.yy.parseError=="function"?this.parseError=N.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function T(L){l.length=l.length-2*L,_.length=_.length-L,p.length=p.length-L}e(T,"popStack");function st(){var L;return L=k.pop()||w.lex()||B,typeof L!="number"&&(L instanceof Array&&(k=L,L=k.pop()),L=a.symbols_[L]||L),L}e(st,"lex");for(var A,Y,n,f,h,d,s={},g,b,$,I;;){if(n=l[l.length-1],this.defaultActions[n]?f=this.defaultActions[n]:((A===null||typeof A>"u")&&(A=st()),f=v[n]&&v[n][A]),typeof f>"u"||!f.length||!f[0]){var j="";I=[];for(g in v[n])this.terminals_[g]&&g>z&&I.push("'"+this.terminals_[g]+"'");w.showPosition?j="Parse error on line "+(E+1)+`: -`+w.showPosition()+` -Expecting `+I.join(", ")+", got '"+(this.terminals_[A]||A)+"'":j="Parse error on line "+(E+1)+": Unexpected "+(A==B?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(j,{text:w.match,token:this.terminals_[A]||A,line:w.yylineno,loc:O,expected:I})}if(f[0]instanceof Array&&f.length>1)throw new Error("Parse Error: multiple actions possible at state: "+n+", token: "+A);switch(f[0]){case 1:l.push(A),_.push(w.yytext),p.push(w.yylloc),l.push(f[1]),A=null,Y?(A=Y,Y=null):(M=w.yyleng,C=w.yytext,E=w.yylineno,O=w.yylloc,D>0&&D--);break;case 2:if(b=this.productions_[f[1]][1],s.$=_[_.length-b],s._$={first_line:p[p.length-(b||1)].first_line,last_line:p[p.length-1].last_line,first_column:p[p.length-(b||1)].first_column,last_column:p[p.length-1].last_column},y&&(s._$.range=[p[p.length-(b||1)].range[0],p[p.length-1].range[1]]),d=this.performAction.apply(s,[C,M,E,N.yy,f[1],_,p].concat(R)),typeof d<"u")return d;b&&(l=l.slice(0,-1*b*2),_=_.slice(0,-1*b),p=p.slice(0,-1*b)),l.push(this.productions_[f[1]][0]),_.push(s.$),p.push(s._$),$=v[l[l.length-2]][l[l.length-1]],l.push($);break;case 3:return!0}}return!0},"parse")},S=(function(){var x={EOF:1,parseError:e(function(a,l){if(this.yy.parser)this.yy.parser.parseError(a,l);else throw new Error(a)},"parseError"),setInput:e(function(o,a){return this.yy=a||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:e(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var a=o.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:e(function(o){var a=o.length,l=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var k=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var _=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===k.length?this.yylloc.first_column:0)+k[k.length-l.length].length-l[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:e(function(){return this._more=!0,this},"more"),reject:e(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:e(function(o){this.unput(this.match.slice(o))},"less"),pastInput:e(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:e(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:e(function(){var o=this.pastInput(),a=new Array(o.length+1).join("-");return o+this.upcomingInput()+` -`+a+"^"},"showPosition"),test_match:e(function(o,a){var l,k,_;if(this.options.backtrack_lexer&&(_={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_.yylloc.range=this.yylloc.range.slice(0))),k=o[0].match(/(?:\r\n?|\n).*/g),k&&(this.yylineno+=k.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:k?k[k.length-1].length-k[k.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],l=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var p in _)this[p]=_[p];return!1}return!1},"test_match"),next:e(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,a,l,k;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),p=0;p<_.length;p++)if(l=this._input.match(this.rules[_[p]]),l&&(!a||l[0].length>a[0].length)){if(a=l,k=p,this.options.backtrack_lexer){if(o=this.test_match(l,_[p]),o!==!1)return o;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(o=this.test_match(a,_[k]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:e(function(){var a=this.next();return a||this.lex()},"lex"),begin:e(function(a){this.conditionStack.push(a)},"begin"),popState:e(function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:e(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:e(function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},"topState"),pushState:e(function(a){this.begin(a)},"pushState"),stateStackSize:e(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:e(function(a,l,k,_){var p=_;switch(k){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return x})();c.lexer=S;function m(){this.yy={}}return e(m,"Parser"),m.prototype=c,c.Parser=m,new m})();lt.parser=lt;var G=lt;var tt=[],et=[],Z=new Map,Ht=e(()=>{tt=[],et=[],Z=new Map,bt()},"clear"),ut=class{constructor(r,i,u=0){this.source=r;this.target=i;this.value=u}static{e(this,"SankeyLink")}},Yt=e((t,r,i)=>{tt.push(new ut(t,r,i))},"addLink"),ft=class{constructor(r){this.ID=r}static{e(this,"SankeyNode")}},qt=e(t=>{t=_t.sanitizeText(t,U());let r=Z.get(t);return r===void 0&&(r=new ft(t),Z.set(t,r),et.push(r)),r},"findOrCreateNode"),Ut=e(()=>et,"getNodes"),Xt=e(()=>tt,"getLinks"),Gt=e(()=>({nodes:et.map(t=>({id:t.ID})),links:tt.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),Ot={nodesMap:Z,getConfig:e(()=>U().sankey,"getConfig"),getNodes:Ut,getLinks:Xt,getGraph:Gt,addLink:Yt,findOrCreateNode:qt,getAccTitle:wt,setAccTitle:St,getAccDescription:At,setAccDescription:Lt,getDiagramTitle:Tt,setDiagramTitle:Et,clear:Ht};function J(t,r){let i;if(r===void 0)for(let u of t)u!=null&&(i=u)&&(i=u);else{let u=-1;for(let c of t)(c=r(c,++u,t))!=null&&(i=c)&&(i=c)}return i}e(J,"max");function F(t,r){let i;if(r===void 0)for(let u of t)u!=null&&(i>u||i===void 0&&u>=u)&&(i=u);else{let u=-1;for(let c of t)(c=r(c,++u,t))!=null&&(i>c||i===void 0&&c>=c)&&(i=c)}return i}e(F,"min");function W(t,r){let i=0;if(r===void 0)for(let u of t)(u=+u)&&(i+=u);else{let u=-1;for(let c of t)(c=+r(c,++u,t))&&(i+=c)}return i}e(W,"sum");function Jt(t){return t.target.depth}e(Jt,"targetDepth");function ct(t){return t.depth}e(ct,"left");function ht(t,r){return r-1-t.height}e(ht,"right");function Q(t,r){return t.sourceLinks.length?t.depth:r-1}e(Q,"justify");function dt(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?F(t.sourceLinks,Jt)-1:0}e(dt,"center");function H(t){return function(){return t}}e(H,"constant");function It(t,r){return nt(t.source,r.source)||t.index-r.index}e(It,"ascendingSourceBreadth");function Dt(t,r){return nt(t.target,r.target)||t.index-r.index}e(Dt,"ascendingTargetBreadth");function nt(t,r){return t.y0-r.y0}e(nt,"ascendingBreadth");function pt(t){return t.value}e(pt,"value");function Qt(t){return t.index}e(Qt,"defaultId");function Kt(t){return t.nodes}e(Kt,"defaultNodes");function Zt(t){return t.links}e(Zt,"defaultLinks");function Pt(t,r){let i=t.get(r);if(!i)throw new Error("missing: "+r);return i}e(Pt,"find");function Rt({nodes:t}){for(let r of t){let i=r.y0,u=i;for(let c of r.sourceLinks)c.y0=i+c.width/2,i+=c.width;for(let c of r.targetLinks)c.y1=u+c.width/2,u+=c.width}}e(Rt,"computeLinkBreadths");function rt(){let t=0,r=0,i=1,u=1,c=24,S=8,m,x=Qt,o=Q,a,l,k=Kt,_=Zt,p=6;function v(){let n={nodes:k.apply(null,arguments),links:_.apply(null,arguments)};return C(n),E(n),M(n),D(n),R(n),Rt(n),n}e(v,"sankey"),v.update=function(n){return Rt(n),n},v.nodeId=function(n){return arguments.length?(x=typeof n=="function"?n:H(n),v):x},v.nodeAlign=function(n){return arguments.length?(o=typeof n=="function"?n:H(n),v):o},v.nodeSort=function(n){return arguments.length?(a=n,v):a},v.nodeWidth=function(n){return arguments.length?(c=+n,v):c},v.nodePadding=function(n){return arguments.length?(S=m=+n,v):S},v.nodes=function(n){return arguments.length?(k=typeof n=="function"?n:H(n),v):k},v.links=function(n){return arguments.length?(_=typeof n=="function"?n:H(n),v):_},v.linkSort=function(n){return arguments.length?(l=n,v):l},v.size=function(n){return arguments.length?(t=r=0,i=+n[0],u=+n[1],v):[i-t,u-r]},v.extent=function(n){return arguments.length?(t=+n[0][0],i=+n[1][0],r=+n[0][1],u=+n[1][1],v):[[t,r],[i,u]]},v.iterations=function(n){return arguments.length?(p=+n,v):p};function C({nodes:n,links:f}){for(let[d,s]of n.entries())s.index=d,s.sourceLinks=[],s.targetLinks=[];let h=new Map(n.map((d,s)=>[x(d,s,n),d]));for(let[d,s]of f.entries()){s.index=d;let{source:g,target:b}=s;typeof g!="object"&&(g=s.source=Pt(h,g)),typeof b!="object"&&(b=s.target=Pt(h,b)),g.sourceLinks.push(s),b.targetLinks.push(s)}if(l!=null)for(let{sourceLinks:d,targetLinks:s}of n)d.sort(l),s.sort(l)}e(C,"computeNodeLinks");function E({nodes:n}){for(let f of n)f.value=f.fixedValue===void 0?Math.max(W(f.sourceLinks,pt),W(f.targetLinks,pt)):f.fixedValue}e(E,"computeNodeValues");function M({nodes:n}){let f=n.length,h=new Set(n),d=new Set,s=0;for(;h.size;){for(let g of h){g.depth=s;for(let{target:b}of g.sourceLinks)d.add(b)}if(++s>f)throw new Error("circular link");h=d,d=new Set}}e(M,"computeNodeDepths");function D({nodes:n}){let f=n.length,h=new Set(n),d=new Set,s=0;for(;h.size;){for(let g of h){g.height=s;for(let{source:b}of g.targetLinks)d.add(b)}if(++s>f)throw new Error("circular link");h=d,d=new Set}}e(D,"computeNodeHeights");function z({nodes:n}){let f=J(n,s=>s.depth)+1,h=(i-t-c)/(f-1),d=new Array(f);for(let s of n){let g=Math.max(0,Math.min(f-1,Math.floor(o.call(null,s,f))));s.layer=g,s.x0=t+g*h,s.x1=s.x0+c,d[g]?d[g].push(s):d[g]=[s]}if(a)for(let s of d)s.sort(a);return d}e(z,"computeNodeLayers");function B(n){let f=F(n,h=>(u-r-(h.length-1)*m)/W(h,pt));for(let h of n){let d=r;for(let s of h){s.y0=d,s.y1=d+s.value*f,d=s.y1+m;for(let g of s.sourceLinks)g.width=g.value*f}d=(u-d+m)/(h.length+1);for(let s=0;sh.length)-1)),B(f);for(let h=0;h0))continue;let j=($/I-b.y0)*f;b.y0+=j,b.y1+=j,T(b)}a===void 0&&g.sort(nt),P(g,h)}}e(w,"relaxLeftToRight");function N(n,f,h){for(let d=n.length,s=d-2;s>=0;--s){let g=n[s];for(let b of g){let $=0,I=0;for(let{target:L,value:at}of b.sourceLinks){let q=at*(L.layer-b.layer);$+=Y(b,L)*q,I+=q}if(!(I>0))continue;let j=($/I-b.y0)*f;b.y0+=j,b.y1+=j,T(b)}a===void 0&&g.sort(nt),P(g,h)}}e(N,"relaxRightToLeft");function P(n,f){let h=n.length>>1,d=n[h];y(n,d.y0-m,h-1,f),O(n,d.y1+m,h+1,f),y(n,u,n.length-1,f),O(n,r,0,f)}e(P,"resolveCollisions");function O(n,f,h,d){for(;h1e-6&&(s.y0+=g,s.y1+=g),f=s.y1+m}}e(O,"resolveCollisionsTopToBottom");function y(n,f,h,d){for(;h>=0;--h){let s=n[h],g=(s.y1-f)*d;g>1e-6&&(s.y0-=g,s.y1-=g),f=s.y0-m}}e(y,"resolveCollisionsBottomToTop");function T({sourceLinks:n,targetLinks:f}){if(l===void 0){for(let{source:{sourceLinks:h}}of f)h.sort(Dt);for(let{target:{targetLinks:h}}of n)h.sort(It)}}e(T,"reorderNodeLinks");function st(n){if(l===void 0)for(let{sourceLinks:f,targetLinks:h}of n)f.sort(Dt),h.sort(It)}e(st,"reorderLinks");function A(n,f){let h=n.y0-(n.sourceLinks.length-1)*m/2;for(let{target:d,width:s}of n.sourceLinks){if(d===f)break;h+=s+m}for(let{source:d,width:s}of f.targetLinks){if(d===n)break;h-=s}return h}e(A,"targetTop");function Y(n,f){let h=f.y0-(f.targetLinks.length-1)*m/2;for(let{source:d,width:s}of f.targetLinks){if(d===n)break;h+=s+m}for(let{target:d,width:s}of n.sourceLinks){if(d===f)break;h-=s}return h}return e(Y,"sourceTop"),v}e(rt,"Sankey");var yt=Math.PI,mt=2*yt,V=1e-6,te=mt-V;function gt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}e(gt,"Path");function jt(){return new gt}e(jt,"path");gt.prototype=jt.prototype={constructor:gt,moveTo:e(function(t,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+r)},"moveTo"),closePath:e(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:e(function(t,r){this._+="L"+(this._x1=+t)+","+(this._y1=+r)},"lineTo"),quadraticCurveTo:e(function(t,r,i,u){this._+="Q"+ +t+","+ +r+","+(this._x1=+i)+","+(this._y1=+u)},"quadraticCurveTo"),bezierCurveTo:e(function(t,r,i,u,c,S){this._+="C"+ +t+","+ +r+","+ +i+","+ +u+","+(this._x1=+c)+","+(this._y1=+S)},"bezierCurveTo"),arcTo:e(function(t,r,i,u,c){t=+t,r=+r,i=+i,u=+u,c=+c;var S=this._x1,m=this._y1,x=i-t,o=u-r,a=S-t,l=m-r,k=a*a+l*l;if(c<0)throw new Error("negative radius: "+c);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=r);else if(k>V)if(!(Math.abs(l*x-o*a)>V)||!c)this._+="L"+(this._x1=t)+","+(this._y1=r);else{var _=i-S,p=u-m,v=x*x+o*o,C=_*_+p*p,E=Math.sqrt(v),M=Math.sqrt(k),D=c*Math.tan((yt-Math.acos((v+k-C)/(2*E*M)))/2),z=D/M,B=D/E;Math.abs(z-1)>V&&(this._+="L"+(t+z*a)+","+(r+z*l)),this._+="A"+c+","+c+",0,0,"+ +(l*_>a*p)+","+(this._x1=t+B*x)+","+(this._y1=r+B*o)}},"arcTo"),arc:e(function(t,r,i,u,c,S){t=+t,r=+r,i=+i,S=!!S;var m=i*Math.cos(u),x=i*Math.sin(u),o=t+m,a=r+x,l=1^S,k=S?u-c:c-u;if(i<0)throw new Error("negative radius: "+i);this._x1===null?this._+="M"+o+","+a:(Math.abs(this._x1-o)>V||Math.abs(this._y1-a)>V)&&(this._+="L"+o+","+a),i&&(k<0&&(k=k%mt+mt),k>te?this._+="A"+i+","+i+",0,1,"+l+","+(t-m)+","+(r-x)+"A"+i+","+i+",0,1,"+l+","+(this._x1=o)+","+(this._y1=a):k>V&&(this._+="A"+i+","+i+",0,"+ +(k>=yt)+","+l+","+(this._x1=t+i*Math.cos(c))+","+(this._y1=r+i*Math.sin(c))))},"arc"),rect:e(function(t,r,i,u){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+r)+"h"+ +i+"v"+ +u+"h"+-i+"Z"},"rect"),toString:e(function(){return this._},"toString")};var xt=jt;function ot(t){return e(function(){return t},"constant")}e(ot,"default");function zt(t){return t[0]}e(zt,"x");function Bt(t){return t[1]}e(Bt,"y");var $t=Array.prototype.slice;function ee(t){return t.source}e(ee,"linkSource");function ne(t){return t.target}e(ne,"linkTarget");function re(t){var r=ee,i=ne,u=zt,c=Bt,S=null;function m(){var x,o=$t.call(arguments),a=r.apply(this,o),l=i.apply(this,o);if(S||(S=x=xt()),t(S,+u.apply(this,(o[0]=a,o)),+c.apply(this,o),+u.apply(this,(o[0]=l,o)),+c.apply(this,o)),x)return S=null,x+""||null}return e(m,"link"),m.source=function(x){return arguments.length?(r=x,m):r},m.target=function(x){return arguments.length?(i=x,m):i},m.x=function(x){return arguments.length?(u=typeof x=="function"?x:ot(+x),m):u},m.y=function(x){return arguments.length?(c=typeof x=="function"?x:ot(+x),m):c},m.context=function(x){return arguments.length?(S=x??null,m):S},m}e(re,"link");function oe(t,r,i,u,c){t.moveTo(r,i),t.bezierCurveTo(r=(r+u)/2,i,r,c,u,c)}e(oe,"curveHorizontal");function kt(){return re(oe)}e(kt,"linkHorizontal");function ie(t){return[t.source.x1,t.y0]}e(ie,"horizontalSource");function se(t){return[t.target.x0,t.y1]}e(se,"horizontalTarget");function it(){return kt().source(ie).target(se)}e(it,"default");var K=class t{static{e(this,"Uid")}static{this.count=0}static next(r){return new t(r+ ++t.count)}constructor(r){this.id=r,this.href=`#${r}`}toString(){return"url("+this.href+")"}};var ae={left:ct,right:ht,center:dt,justify:Q},le=e(function(t,r,i,u){let{securityLevel:c,sankey:S}=U(),m=Ct.sankey,x;c==="sandbox"&&(x=X("#i"+r));let o=c==="sandbox"?X(x.nodes()[0].contentDocument.body):X("body"),a=c==="sandbox"?o.select(`[id="${r}"]`):X(`[id="${r}"]`),l=S?.width??m.width,k=S?.height??m.width,_=S?.useMaxWidth??m.useMaxWidth,p=S?.nodeAlignment??m.nodeAlignment,v=S?.prefix??m.prefix,C=S?.suffix??m.suffix,E=S?.showValues??m.showValues,M=u.db.getGraph(),D=ae[p];rt().nodeId(y=>y.id).nodeWidth(10).nodePadding(10+(E?15:0)).nodeAlign(D).extent([[0,0],[l,k]])(M);let R=Mt(Nt);a.append("g").attr("class","nodes").selectAll(".node").data(M.nodes).join("g").attr("class","node").attr("id",y=>(y.uid=K.next("node-")).id).attr("transform",function(y){return"translate("+y.x0+","+y.y0+")"}).attr("x",y=>y.x0).attr("y",y=>y.y0).append("rect").attr("height",y=>y.y1-y.y0).attr("width",y=>y.x1-y.x0).attr("fill",y=>R(y.id));let w=e(({id:y,value:T})=>E?`${y} -${v}${Math.round(T*100)/100}${C}`:y,"getText");a.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(M.nodes).join("text").attr("x",y=>y.x0(y.y1+y.y0)/2).attr("dy",`${E?"0":"0.35"}em`).attr("text-anchor",y=>y.x0(T.uid=K.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",T=>T.source.x1).attr("x2",T=>T.target.x0);y.append("stop").attr("offset","0%").attr("stop-color",T=>R(T.source.id)),y.append("stop").attr("offset","100%").attr("stop-color",T=>R(T.target.id))}let O;switch(P){case"gradient":O=e(y=>y.uid,"coloring");break;case"source":O=e(y=>R(y.source.id),"coloring");break;case"target":O=e(y=>R(y.target.id),"coloring");break;default:O=P}N.append("path").attr("d",it()).attr("stroke",O).attr("stroke-width",y=>Math.max(1,y.width)),vt(void 0,a,0,_)},"draw"),Vt={draw:le};var Ft=e(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` -`).trim(),"prepareTextForParsing");var ue=e(t=>`.label { - font-family: ${t.fontFamily}; - }`,"getStyles"),Wt=ue;var fe=G.parse.bind(G);G.parse=t=>fe(Ft(t));var Cn={styles:Wt,parser:G,db:Ot,renderer:Vt};export{Cn as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-URQDO5SZ.mjs b/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-URQDO5SZ.mjs new file mode 100644 index 0000000..caf2a17 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-URQDO5SZ.mjs @@ -0,0 +1,40 @@ +import{G as _t,P as bt,S as vt,T as St,U as Lt,V as wt,W as Et,X as At,Y as Tt,_ as X,aa as Ct}from"./chunk-67TQ5CYL.mjs";import{E as Mt,h as G,m as Nt}from"./chunk-7W6UQGC5.mjs";import{a as e}from"./chunk-AQ6EADP3.mjs";var lt=(function(){var t=e(function(g,a,l,h){for(l=l||{},h=g.length;h--;l[g[h]]=a);return l},"o"),o=[1,9],s=[1,10],u=[1,5,10,12],c={trace:e(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:e(function(a,l,h,x,k,p,b){var A=p.length-1;switch(k){case 7:let E=x.findOrCreateNode(p[A-4].trim().replaceAll('""','"')),C=x.findOrCreateNode(p[A-2].trim().replaceAll('""','"')),N=parseFloat(p[A].trim());x.addLink(E,C,N);break;case 8:case 9:case 11:this.$=p[A];break;case 10:this.$=p[A-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:o,20:s},{1:[2,6],7:11,10:[1,12]},t(s,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(u,[2,8]),t(u,[2,9]),{19:[1,16]},t(u,[2,11]),{1:[2,1]},{1:[2,5]},t(s,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:o,20:s},{15:18,16:7,17:8,18:o,20:s},{18:[1,19]},t(s,[2,3]),{12:[1,20]},t(u,[2,10]),{15:21,16:7,17:8,18:o,20:s},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:e(function(a,l){if(l.recoverable)this.trace(a);else{var h=new Error(a);throw h.hash=l,h}},"parseError"),parse:e(function(a){var l=this,h=[0],x=[],k=[null],p=[],b=this.table,A="",E=0,C=0,N=0,M=2,P=1,D=p.slice.call(arguments,1),S=Object.create(this.lexer),O={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(O.yy[z]=this.yy[z]);S.setInput(a,O.yy),O.yy.lexer=S,O.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var $=S.yylloc;p.push($);var I=S.options&&S.options.ranges;typeof O.yy.parseError=="function"?this.parseError=O.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function q(w){h.length=h.length-2*w,k.length=k.length-w,p.length=p.length-w}e(q,"popStack");function W(){var w;return w=x.pop()||S.lex()||P,typeof w!="number"&&(w instanceof Array&&(x=w,w=x.pop()),w=l.symbols_[w]||w),w}e(W,"lex");for(var L,R,n,f,d,r,i={},m,v,B,T;;){if(n=h[h.length-1],this.defaultActions[n]?f=this.defaultActions[n]:((L===null||typeof L>"u")&&(L=W()),f=b[n]&&b[n][L]),typeof f>"u"||!f.length||!f[0]){var j="";T=[];for(m in b[n])this.terminals_[m]&&m>M&&T.push("'"+this.terminals_[m]+"'");S.showPosition?j="Parse error on line "+(E+1)+`: +`+S.showPosition()+` +Expecting `+T.join(", ")+", got '"+(this.terminals_[L]||L)+"'":j="Parse error on line "+(E+1)+": Unexpected "+(L==P?"end of input":"'"+(this.terminals_[L]||L)+"'"),this.parseError(j,{text:S.match,token:this.terminals_[L]||L,line:S.yylineno,loc:$,expected:T})}if(f[0]instanceof Array&&f.length>1)throw new Error("Parse Error: multiple actions possible at state: "+n+", token: "+L);switch(f[0]){case 1:h.push(L),k.push(S.yytext),p.push(S.yylloc),h.push(f[1]),L=null,R?(L=R,R=null):(C=S.yyleng,A=S.yytext,E=S.yylineno,$=S.yylloc,N>0&&N--);break;case 2:if(v=this.productions_[f[1]][1],i.$=k[k.length-v],i._$={first_line:p[p.length-(v||1)].first_line,last_line:p[p.length-1].last_line,first_column:p[p.length-(v||1)].first_column,last_column:p[p.length-1].last_column},I&&(i._$.range=[p[p.length-(v||1)].range[0],p[p.length-1].range[1]]),r=this.performAction.apply(i,[A,C,E,O.yy,f[1],k,p].concat(D)),typeof r<"u")return r;v&&(h=h.slice(0,-1*v*2),k=k.slice(0,-1*v),p=p.slice(0,-1*v)),h.push(this.productions_[f[1]][0]),k.push(i.$),p.push(i._$),B=b[h[h.length-2]][h[h.length-1]],h.push(B);break;case 3:return!0}}return!0},"parse")},_=(function(){var g={EOF:1,parseError:e(function(l,h){if(this.yy.parser)this.yy.parser.parseError(l,h);else throw new Error(l)},"parseError"),setInput:e(function(a,l){return this.yy=l||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:e(function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var l=a.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},"input"),unput:e(function(a){var l=a.length,h=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var x=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),h.length-1&&(this.yylineno-=h.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:h?(h.length===x.length?this.yylloc.first_column:0)+x[x.length-h.length].length-h[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:e(function(){return this._more=!0,this},"more"),reject:e(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:e(function(a){this.unput(this.match.slice(a))},"less"),pastInput:e(function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:e(function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:e(function(){var a=this.pastInput(),l=new Array(a.length+1).join("-");return a+this.upcomingInput()+` +`+l+"^"},"showPosition"),test_match:e(function(a,l){var h,x,k;if(this.options.backtrack_lexer&&(k={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(k.yylloc.range=this.yylloc.range.slice(0))),x=a[0].match(/(?:\r\n?|\n).*/g),x&&(this.yylineno+=x.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:x?x[x.length-1].length-x[x.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],h=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),h)return h;if(this._backtrack){for(var p in k)this[p]=k[p];return!1}return!1},"test_match"),next:e(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,l,h,x;this._more||(this.yytext="",this.match="");for(var k=this._currentRules(),p=0;pl[0].length)){if(l=h,x=p,this.options.backtrack_lexer){if(a=this.test_match(h,k[p]),a!==!1)return a;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(a=this.test_match(l,k[x]),a!==!1?a:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:e(function(){var l=this.next();return l||this.lex()},"lex"),begin:e(function(l){this.conditionStack.push(l)},"begin"),popState:e(function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:e(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:e(function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},"topState"),pushState:e(function(l){this.begin(l)},"pushState"),stateStackSize:e(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:e(function(l,h,x,k){var p=k;switch(x){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return g})();c.lexer=_;function y(){this.yy={}}return e(y,"Parser"),y.prototype=c,c.Parser=y,new y})();lt.parser=lt;var J=lt;var et=[],nt=[],tt=new Map,Ht=e(()=>{et=[],nt=[],tt=new Map,vt()},"clear"),ut=class{constructor(o,s,u=0){this.source=o;this.target=s;this.value=u}static{e(this,"SankeyLink")}},Yt=e((t,o,s)=>{et.push(new ut(t,o,s))},"addLink"),ft=class{constructor(o){this.ID=o}static{e(this,"SankeyNode")}},qt=e(t=>{t=_t.sanitizeText(t,X());let o=tt.get(t);return o===void 0&&(o=new ft(t),tt.set(t,o),nt.push(o)),o},"findOrCreateNode"),Ut=e(()=>nt,"getNodes"),Xt=e(()=>et,"getLinks"),Gt=e(()=>({nodes:nt.map(t=>({id:t.ID})),links:et.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),Ot={nodesMap:tt,getConfig:e(()=>X().sankey,"getConfig"),getNodes:Ut,getLinks:Xt,getGraph:Gt,addLink:Yt,findOrCreateNode:qt,getAccTitle:Lt,setAccTitle:St,getAccDescription:Et,setAccDescription:wt,getDiagramTitle:Tt,setDiagramTitle:At,clear:Ht};function Q(t,o){let s;if(o===void 0)for(let u of t)u!=null&&(s=u)&&(s=u);else{let u=-1;for(let c of t)(c=o(c,++u,t))!=null&&(s=c)&&(s=c)}return s}e(Q,"max");function F(t,o){let s;if(o===void 0)for(let u of t)u!=null&&(s>u||s===void 0&&u>=u)&&(s=u);else{let u=-1;for(let c of t)(c=o(c,++u,t))!=null&&(s>c||s===void 0&&c>=c)&&(s=c)}return s}e(F,"min");function H(t,o){let s=0;if(o===void 0)for(let u of t)(u=+u)&&(s+=u);else{let u=-1;for(let c of t)(c=+o(c,++u,t))&&(s+=c)}return s}e(H,"sum");function Jt(t){return t.target.depth}e(Jt,"targetDepth");function ct(t){return t.depth}e(ct,"left");function ht(t,o){return o-1-t.height}e(ht,"right");function K(t,o){return t.sourceLinks.length?t.depth:o-1}e(K,"justify");function dt(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?F(t.sourceLinks,Jt)-1:0}e(dt,"center");function Y(t){return function(){return t}}e(Y,"constant");function It(t,o){return rt(t.source,o.source)||t.index-o.index}e(It,"ascendingSourceBreadth");function Pt(t,o){return rt(t.target,o.target)||t.index-o.index}e(Pt,"ascendingTargetBreadth");function rt(t,o){return t.y0-o.y0}e(rt,"ascendingBreadth");function pt(t){return t.value}e(pt,"value");function Qt(t){return t.index}e(Qt,"defaultId");function Kt(t){return t.nodes}e(Kt,"defaultNodes");function Zt(t){return t.links}e(Zt,"defaultLinks");function Dt(t,o){let s=t.get(o);if(!s)throw new Error("missing: "+o);return s}e(Dt,"find");function Rt({nodes:t}){for(let o of t){let s=o.y0,u=s;for(let c of o.sourceLinks)c.y0=s+c.width/2,s+=c.width;for(let c of o.targetLinks)c.y1=u+c.width/2,u+=c.width}}e(Rt,"computeLinkBreadths");function ot(){let t=0,o=0,s=1,u=1,c=24,_=8,y,g=Qt,a=K,l,h,x=Kt,k=Zt,p=6;function b(){let n={nodes:x.apply(null,arguments),links:k.apply(null,arguments)};return A(n),E(n),C(n),N(n),D(n),Rt(n),n}e(b,"sankey"),b.update=function(n){return Rt(n),n},b.nodeId=function(n){return arguments.length?(g=typeof n=="function"?n:Y(n),b):g},b.nodeAlign=function(n){return arguments.length?(a=typeof n=="function"?n:Y(n),b):a},b.nodeSort=function(n){return arguments.length?(l=n,b):l},b.nodeWidth=function(n){return arguments.length?(c=+n,b):c},b.nodePadding=function(n){return arguments.length?(_=y=+n,b):_},b.nodes=function(n){return arguments.length?(x=typeof n=="function"?n:Y(n),b):x},b.links=function(n){return arguments.length?(k=typeof n=="function"?n:Y(n),b):k},b.linkSort=function(n){return arguments.length?(h=n,b):h},b.size=function(n){return arguments.length?(t=o=0,s=+n[0],u=+n[1],b):[s-t,u-o]},b.extent=function(n){return arguments.length?(t=+n[0][0],s=+n[1][0],o=+n[0][1],u=+n[1][1],b):[[t,o],[s,u]]},b.iterations=function(n){return arguments.length?(p=+n,b):p};function A({nodes:n,links:f}){for(let[r,i]of n.entries())i.index=r,i.sourceLinks=[],i.targetLinks=[];let d=new Map(n.map((r,i)=>[g(r,i,n),r]));for(let[r,i]of f.entries()){i.index=r;let{source:m,target:v}=i;typeof m!="object"&&(m=i.source=Dt(d,m)),typeof v!="object"&&(v=i.target=Dt(d,v)),m.sourceLinks.push(i),v.targetLinks.push(i)}if(h!=null)for(let{sourceLinks:r,targetLinks:i}of n)r.sort(h),i.sort(h)}e(A,"computeNodeLinks");function E({nodes:n}){for(let f of n)f.value=f.fixedValue===void 0?Math.max(H(f.sourceLinks,pt),H(f.targetLinks,pt)):f.fixedValue}e(E,"computeNodeValues");function C({nodes:n}){let f=n.length,d=new Set(n),r=new Set,i=0;for(;d.size;){for(let m of d){m.depth=i;for(let{target:v}of m.sourceLinks)r.add(v)}if(++i>f)throw new Error("circular link");d=r,r=new Set}}e(C,"computeNodeDepths");function N({nodes:n}){let f=n.length,d=new Set(n),r=new Set,i=0;for(;d.size;){for(let m of d){m.height=i;for(let{source:v}of m.targetLinks)r.add(v)}if(++i>f)throw new Error("circular link");d=r,r=new Set}}e(N,"computeNodeHeights");function M({nodes:n}){let f=Q(n,i=>i.depth)+1,d=(s-t-c)/(f-1),r=new Array(f);for(let i of n){let m=Math.max(0,Math.min(f-1,Math.floor(a.call(null,i,f))));i.layer=m,i.x0=t+m*d,i.x1=i.x0+c,r[m]?r[m].push(i):r[m]=[i]}if(l)for(let i of r)i.sort(l);return r}e(M,"computeNodeLayers");function P(n){let f=F(n,d=>(u-o-(d.length-1)*y)/H(d,pt));for(let d of n){let r=o;for(let i of d){i.y0=r,i.y1=r+i.value*f,r=i.y1+y;for(let m of i.sourceLinks)m.width=m.value*f}r=(u-r+y)/(d.length+1);for(let i=0;id.length)-1)),P(f);for(let d=0;d0))continue;let j=(B/T-v.y0)*f;v.y0+=j,v.y1+=j,q(v)}l===void 0&&m.sort(rt),z(m,d)}}e(S,"relaxLeftToRight");function O(n,f,d){for(let r=n.length,i=r-2;i>=0;--i){let m=n[i];for(let v of m){let B=0,T=0;for(let{target:w,value:at}of v.sourceLinks){let U=at*(w.layer-v.layer);B+=R(v,w)*U,T+=U}if(!(T>0))continue;let j=(B/T-v.y0)*f;v.y0+=j,v.y1+=j,q(v)}l===void 0&&m.sort(rt),z(m,d)}}e(O,"relaxRightToLeft");function z(n,f){let d=n.length>>1,r=n[d];I(n,r.y0-y,d-1,f),$(n,r.y1+y,d+1,f),I(n,u,n.length-1,f),$(n,o,0,f)}e(z,"resolveCollisions");function $(n,f,d,r){for(;d1e-6&&(i.y0+=m,i.y1+=m),f=i.y1+y}}e($,"resolveCollisionsTopToBottom");function I(n,f,d,r){for(;d>=0;--d){let i=n[d],m=(i.y1-f)*r;m>1e-6&&(i.y0-=m,i.y1-=m),f=i.y0-y}}e(I,"resolveCollisionsBottomToTop");function q({sourceLinks:n,targetLinks:f}){if(h===void 0){for(let{source:{sourceLinks:d}}of f)d.sort(Pt);for(let{target:{targetLinks:d}}of n)d.sort(It)}}e(q,"reorderNodeLinks");function W(n){if(h===void 0)for(let{sourceLinks:f,targetLinks:d}of n)f.sort(Pt),d.sort(It)}e(W,"reorderLinks");function L(n,f){let d=n.y0-(n.sourceLinks.length-1)*y/2;for(let{target:r,width:i}of n.sourceLinks){if(r===f)break;d+=i+y}for(let{source:r,width:i}of f.targetLinks){if(r===n)break;d-=i}return d}e(L,"targetTop");function R(n,f){let d=f.y0-(f.targetLinks.length-1)*y/2;for(let{source:r,width:i}of f.targetLinks){if(r===n)break;d+=i+y}for(let{target:r,width:i}of n.sourceLinks){if(r===f)break;d-=i}return d}return e(R,"sourceTop"),b}e(ot,"Sankey");var yt=Math.PI,mt=2*yt,V=1e-6,te=mt-V;function gt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}e(gt,"Path");function jt(){return new gt}e(jt,"path");gt.prototype=jt.prototype={constructor:gt,moveTo:e(function(t,o){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+o)},"moveTo"),closePath:e(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:e(function(t,o){this._+="L"+(this._x1=+t)+","+(this._y1=+o)},"lineTo"),quadraticCurveTo:e(function(t,o,s,u){this._+="Q"+ +t+","+ +o+","+(this._x1=+s)+","+(this._y1=+u)},"quadraticCurveTo"),bezierCurveTo:e(function(t,o,s,u,c,_){this._+="C"+ +t+","+ +o+","+ +s+","+ +u+","+(this._x1=+c)+","+(this._y1=+_)},"bezierCurveTo"),arcTo:e(function(t,o,s,u,c){t=+t,o=+o,s=+s,u=+u,c=+c;var _=this._x1,y=this._y1,g=s-t,a=u-o,l=_-t,h=y-o,x=l*l+h*h;if(c<0)throw new Error("negative radius: "+c);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=o);else if(x>V)if(!(Math.abs(h*g-a*l)>V)||!c)this._+="L"+(this._x1=t)+","+(this._y1=o);else{var k=s-_,p=u-y,b=g*g+a*a,A=k*k+p*p,E=Math.sqrt(b),C=Math.sqrt(x),N=c*Math.tan((yt-Math.acos((b+x-A)/(2*E*C)))/2),M=N/C,P=N/E;Math.abs(M-1)>V&&(this._+="L"+(t+M*l)+","+(o+M*h)),this._+="A"+c+","+c+",0,0,"+ +(h*k>l*p)+","+(this._x1=t+P*g)+","+(this._y1=o+P*a)}},"arcTo"),arc:e(function(t,o,s,u,c,_){t=+t,o=+o,s=+s,_=!!_;var y=s*Math.cos(u),g=s*Math.sin(u),a=t+y,l=o+g,h=1^_,x=_?u-c:c-u;if(s<0)throw new Error("negative radius: "+s);this._x1===null?this._+="M"+a+","+l:(Math.abs(this._x1-a)>V||Math.abs(this._y1-l)>V)&&(this._+="L"+a+","+l),s&&(x<0&&(x=x%mt+mt),x>te?this._+="A"+s+","+s+",0,1,"+h+","+(t-y)+","+(o-g)+"A"+s+","+s+",0,1,"+h+","+(this._x1=a)+","+(this._y1=l):x>V&&(this._+="A"+s+","+s+",0,"+ +(x>=yt)+","+h+","+(this._x1=t+s*Math.cos(c))+","+(this._y1=o+s*Math.sin(c))))},"arc"),rect:e(function(t,o,s,u){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+o)+"h"+ +s+"v"+ +u+"h"+-s+"Z"},"rect"),toString:e(function(){return this._},"toString")};var xt=jt;function it(t){return e(function(){return t},"constant")}e(it,"default");function zt(t){return t[0]}e(zt,"x");function $t(t){return t[1]}e($t,"y");var Bt=Array.prototype.slice;function ee(t){return t.source}e(ee,"linkSource");function ne(t){return t.target}e(ne,"linkTarget");function re(t){var o=ee,s=ne,u=zt,c=$t,_=null;function y(){var g,a=Bt.call(arguments),l=o.apply(this,a),h=s.apply(this,a);if(_||(_=g=xt()),t(_,+u.apply(this,(a[0]=l,a)),+c.apply(this,a),+u.apply(this,(a[0]=h,a)),+c.apply(this,a)),g)return _=null,g+""||null}return e(y,"link"),y.source=function(g){return arguments.length?(o=g,y):o},y.target=function(g){return arguments.length?(s=g,y):s},y.x=function(g){return arguments.length?(u=typeof g=="function"?g:it(+g),y):u},y.y=function(g){return arguments.length?(c=typeof g=="function"?g:it(+g),y):c},y.context=function(g){return arguments.length?(_=g??null,y):_},y}e(re,"link");function oe(t,o,s,u,c){t.moveTo(o,s),t.bezierCurveTo(o=(o+u)/2,s,o,c,u,c)}e(oe,"curveHorizontal");function kt(){return re(oe)}e(kt,"linkHorizontal");function ie(t){return[t.source.x1,t.y0]}e(ie,"horizontalSource");function se(t){return[t.target.x0,t.y1]}e(se,"horizontalTarget");function st(){return kt().source(ie).target(se)}e(st,"default");var Z=class t{static{e(this,"Uid")}static{this.count=0}static next(o){return new t(o+ ++t.count)}constructor(o){this.id=o,this.href=`#${o}`}toString(){return"url("+this.href+")"}};var ae={left:ct,right:ht,center:dt,justify:K},le=e(t=>{let o=0,s=0;for(let u of t){let c=u.value??0;c>o&&(o=c,s=u.layer??0)}return s},"findCentralNodeLayer"),ue=e(function(t,o,s,u){let{securityLevel:c,sankey:_}=X(),y=Ct.sankey,g;c==="sandbox"&&(g=G("#i"+o));let a=c==="sandbox"?G(g.nodes()[0].contentDocument.body):G("body"),l=c==="sandbox"?a.select(`[id="${o}"]`):G(`[id="${o}"]`),h=_?.width??y.width,x=_?.height??y.width,k=_?.useMaxWidth??y.useMaxWidth,p=_?.nodeAlignment??y.nodeAlignment,b=_?.prefix??y.prefix,A=_?.suffix??y.suffix,E=_?.showValues??y.showValues,C=_?.nodeWidth??y.nodeWidth??10,N=_?.nodePadding??y.nodePadding??12,M=_?.labelStyle??y.labelStyle??"legacy",P=_?.nodeColors??{},D=u.db.getGraph(),S=ae[p];ot().nodeId(r=>r.id).nodeWidth(C).nodePadding(N+(E?15:0)).nodeAlign(S).extent([[0,0],[h,x]])(D);let z=le(D.nodes),$=Nt(Mt),I=e(r=>P[r]??$(r),"getNodeColor");l.append("g").attr("class","nodes").selectAll(".node").data(D.nodes).join("g").attr("class","node").attr("id",r=>(r.uid=Z.next("node-")).id).attr("transform",function(r){return"translate("+r.x0+","+r.y0+")"}).attr("x",r=>r.x0).attr("y",r=>r.y0).append("rect").attr("height",r=>r.y1-r.y0).attr("width",r=>r.x1-r.x0).attr("fill",r=>I(r.id));let q=e(({id:r,value:i})=>E?`${r} +${b}${Math.round(i*100)/100}${A}`:r,"getText"),W=e(r=>M==="outlined"?(r.layer??0)L.selectAll(r?`.${r}`:"text").data(D.nodes).join("text").attr("class",r??null).attr("x",i=>W(i).x).attr("y",i=>(i.y1+i.y0)/2).attr("dy",`${E?"0":"0.35"}em`).attr("text-anchor",i=>W(i).anchor).text(q),"appendLabel");M==="outlined"?(R("sankey-label-bg"),R("sankey-label-fg")):R();let n=l.append("g").attr("class","links").attr("fill","none").attr("stroke-opacity",.5).selectAll(".link").data(D.links).join("g").attr("class","link").style("mix-blend-mode","multiply"),f=_?.linkColor??"gradient";if(f==="gradient"){let r=n.append("linearGradient").attr("id",i=>(i.uid=Z.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",i=>i.source.x1).attr("x2",i=>i.target.x0);r.append("stop").attr("offset","0%").attr("stop-color",i=>I(i.source.id)),r.append("stop").attr("offset","100%").attr("stop-color",i=>I(i.target.id))}let d;switch(f){case"gradient":d=e(r=>r.uid,"coloring");break;case"source":d=e(r=>I(r.source.id),"coloring");break;case"target":d=e(r=>I(r.target.id),"coloring");break;default:d=f}n.append("path").attr("d",st()).attr("stroke",d).attr("stroke-width",r=>Math.max(1,r.width)),bt(void 0,l,0,k)},"draw"),Vt={draw:ue};var Wt=e(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),"prepareTextForParsing");var fe=e(t=>`.label { + font-family: ${t.fontFamily}; + } + + .node-labels { + font-family: ${t.fontFamily}; + } + + /* Outlined label style - background stroke for better readability */ + .sankey-label-bg { + stroke: ${t.mainBkg||t.background||"#fff"}; + stroke-width: 4px; + stroke-linejoin: round; + paint-order: stroke; + } + + /* Foreground label text */ + .sankey-label-fg { + fill: ${t.textColor}; + } + + /* Node styling */ + .node rect { + shape-rendering: crispEdges; + } + + /* Link styling */ + .link { + fill: none; + stroke-opacity: 0.5; + mix-blend-mode: multiply; + } +`,"getStyles"),Ft=fe;var ce=J.parse.bind(J);J.parse=t=>ce(Wt(t));var Nn={styles:Ft,parser:J,db:Ot,renderer:Vt};export{Nn as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-HWP7ZNIN.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-URQDO5SZ.mjs.map similarity index 59% rename from assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-HWP7ZNIN.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-URQDO5SZ.mjs.map index 9a4a9d1..b061a6e 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-HWP7ZNIN.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/sankeyDiagram-URQDO5SZ.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/sankey/parser/sankey.jison", "../../../src/diagrams/sankey/sankeyDB.ts", "../../../../../node_modules/.pnpm/d3-array@2.12.1/node_modules/d3-array/src/max.js", "../../../../../node_modules/.pnpm/d3-array@2.12.1/node_modules/d3-array/src/min.js", "../../../../../node_modules/.pnpm/d3-array@2.12.1/node_modules/d3-array/src/sum.js", "../../../../../node_modules/.pnpm/d3-sankey@0.12.3/node_modules/d3-sankey/src/align.js", "../../../../../node_modules/.pnpm/d3-sankey@0.12.3/node_modules/d3-sankey/src/constant.js", "../../../../../node_modules/.pnpm/d3-sankey@0.12.3/node_modules/d3-sankey/src/sankey.js", "../../../../../node_modules/.pnpm/d3-path@1.0.9/node_modules/d3-path/src/path.js", "../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/constant.js", "../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/point.js", "../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/array.js", "../../../../../node_modules/.pnpm/d3-shape@1.3.7/node_modules/d3-shape/src/link/index.js", "../../../../../node_modules/.pnpm/d3-sankey@0.12.3/node_modules/d3-sankey/src/sankeyLinkHorizontal.js", "../../../src/rendering-util/uid.ts", "../../../src/diagrams/sankey/sankeyRenderer.ts", "../../../src/diagrams/sankey/sankeyUtils.ts", "../../../src/diagrams/sankey/styles.js", "../../../src/diagrams/sankey/sankeyDiagram.ts"], - "sourcesContent": ["/* 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,10],$V2=[1,5,10,12];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SANKEY\":4,\"NEWLINE\":5,\"csv\":6,\"opt_eof\":7,\"record\":8,\"csv_tail\":9,\"EOF\":10,\"field[source]\":11,\"COMMA\":12,\"field[target]\":13,\"field[value]\":14,\"field\":15,\"escaped\":16,\"non_escaped\":17,\"DQUOTE\":18,\"ESCAPED_TEXT\":19,\"NON_ESCAPED_TEXT\":20,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SANKEY\",5:\"NEWLINE\",10:\"EOF\",11:\"field[source]\",12:\"COMMA\",13:\"field[target]\",14:\"field[value]\",18:\"DQUOTE\",19:\"ESCAPED_TEXT\",20:\"NON_ESCAPED_TEXT\"},\nproductions_: [0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[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 7:\n\n const source = yy.findOrCreateNode($$[$0-4].trim().replaceAll('\"\"', '\"'));\n const target = yy.findOrCreateNode($$[$0-2].trim().replaceAll('\"\"', '\"'));\n const value = parseFloat($$[$0].trim());\n yy.addLink(source,target,value);\n \nbreak;\ncase 8: case 9: case 11:\n this.$=$$[$0]; \nbreak;\ncase 10:\n this.$=$$[$0-1]; \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:$V0,20:$V1},{1:[2,6],7:11,10:[1,12]},o($V1,[2,4],{9:13,5:[1,14]}),{12:[1,15]},o($V2,[2,8]),o($V2,[2,9]),{19:[1,16]},o($V2,[2,11]),{1:[2,1]},{1:[2,5]},o($V1,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:$V0,20:$V1},{15:18,16:7,17:8,18:$V0,20:$V1},{18:[1,19]},o($V1,[2,3]),{12:[1,20]},o($V2,[2,10]),{15:21,16:7,17:8,18:$V0,20:$V1},o([1,5,10],[2,7])],\ndefaultActions: {11:[2,1],12:[2,5]},\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: this.pushState('csv'); return 4; \nbreak;\ncase 1: this.pushState('csv'); return 4; \nbreak;\ncase 2: return 10 \nbreak;\ncase 3: return 5 \nbreak;\ncase 4: return 12 \nbreak;\ncase 5: this.pushState('escaped_text'); return 18; \nbreak;\ncase 6: return 20 \nbreak;\ncase 7:this.popState('escaped_text'); return 18; \nbreak;\ncase 8: return 19; \nbreak;\n}\n},\nrules: [/^(?:sankey-beta\\b)/i,/^(?:sankey\\b)/i,/^(?:$)/i,/^(?:((\\u000D\\u000A)|(\\u000A)))/i,/^(?:(\\u002C))/i,/^(?:(\\u0022))/i,/^(?:([\\u0020-\\u0021\\u0023-\\u002B\\u002D-\\u007E])*)/i,/^(?:(\\u0022)(?!(\\u0022)))/i,/^(?:(([\\u0020-\\u0021\\u0023-\\u002B\\u002D-\\u007E])|(\\u002C)|(\\u000D)|(\\u000A)|(\\u0022)(\\u0022))*)/i],\nconditions: {\"csv\":{\"rules\":[2,3,4,5,6,7,8],\"inclusive\":false},\"escaped_text\":{\"rules\":[7,8],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport common from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle,\n clear as commonClear,\n} from '../common/commonDb.js';\n\n// Sankey diagram represented by nodes and links between those nodes\nlet links: SankeyLink[] = [];\n// Array of nodes guarantees their order\nlet nodes: SankeyNode[] = [];\n// We also have to track nodes uniqueness (by ID)\nlet nodesMap = new Map();\n\nconst clear = (): void => {\n links = [];\n nodes = [];\n nodesMap = new Map();\n commonClear();\n};\n\nclass SankeyLink {\n constructor(\n public source: SankeyNode,\n public target: SankeyNode,\n public value = 0\n ) {}\n}\n\n/**\n * @param source - Node where the link starts\n * @param target - Node where the link ends\n * @param value - Describes the amount to be passed\n */\nconst addLink = (source: SankeyNode, target: SankeyNode, value: number): void => {\n links.push(new SankeyLink(source, target, value));\n};\n\nclass SankeyNode {\n constructor(public ID: string) {}\n}\n\nconst findOrCreateNode = (ID: string): SankeyNode => {\n ID = common.sanitizeText(ID, getConfig());\n\n let node = nodesMap.get(ID);\n if (node === undefined) {\n node = new SankeyNode(ID);\n nodesMap.set(ID, node);\n nodes.push(node);\n }\n return node;\n};\n\nconst getNodes = () => nodes;\nconst getLinks = () => links;\n\nconst getGraph = () => ({\n nodes: nodes.map((node) => ({ id: node.ID })),\n links: links.map((link) => ({\n source: link.source.ID,\n target: link.target.ID,\n value: link.value,\n })),\n});\n\nexport default {\n nodesMap,\n getConfig: () => getConfig().sankey,\n getNodes,\n getLinks,\n getGraph,\n addLink,\n findOrCreateNode,\n getAccTitle,\n setAccTitle,\n getAccDescription,\n setAccDescription,\n getDiagramTitle,\n setDiagramTitle,\n clear,\n};\n", "export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n", "export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n", "export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n", "import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n", "export default function constant(x) {\n return function() {\n return x;\n };\n}\n", "import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n", "var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n", "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n", "export var slice = Array.prototype.slice;\n", "import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n", "import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n", "export class Uid {\n private static count = 0;\n id: string;\n href: string;\n\n public static next(name: string): Uid {\n return new Uid(name + ++Uid.count);\n }\n\n constructor(id: string) {\n this.id = id;\n this.href = `#${id}`;\n }\n\n toString(): string {\n return 'url(' + this.href + ')';\n }\n}\n", "import type { Diagram } from '../../Diagram.js';\nimport { getConfig, defaultConfig } from '../../diagram-api/diagramAPI.js';\nimport {\n select as d3select,\n scaleOrdinal as d3scaleOrdinal,\n schemeTableau10 as d3schemeTableau10,\n} from 'd3';\nimport type { SankeyNode as d3SankeyNode } from 'd3-sankey';\nimport {\n sankey as d3Sankey,\n sankeyLinkHorizontal as d3SankeyLinkHorizontal,\n sankeyLeft as d3SankeyLeft,\n sankeyRight as d3SankeyRight,\n sankeyCenter as d3SankeyCenter,\n sankeyJustify as d3SankeyJustify,\n} from 'd3-sankey';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport { Uid } from '../../rendering-util/uid.js';\nimport type { SankeyNodeAlignment } from '../../config.type.js';\n\n// Map config options to alignment functions\nconst alignmentsMap: Record<\n SankeyNodeAlignment,\n (node: d3SankeyNode, n: number) => number\n> = {\n left: d3SankeyLeft,\n right: d3SankeyRight,\n center: d3SankeyCenter,\n justify: d3SankeyJustify,\n};\n\n/**\n * Draws Sankey diagram.\n *\n * @param text - The text of the diagram\n * @param id - The id of the diagram which will be used as a DOM element id\u00A8\n * @param _version - Mermaid version from package.json\n * @param diagObj - A standard diagram containing the db and the text and type etc of the diagram\n */\nexport const draw = function (text: string, id: string, _version: string, diagObj: Diagram): void {\n // Get Sankey config\n const { securityLevel, sankey: conf } = getConfig();\n const defaultSankeyConfig = defaultConfig.sankey!;\n\n // TODO:\n // This code repeats for every diagram\n // Figure out what is happening there, probably it should be separated\n // The main thing is svg object that is a d3 wrapper for svg operations\n //\n let sandboxElement: any;\n if (securityLevel === 'sandbox') {\n sandboxElement = d3select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? d3select(sandboxElement.nodes()[0].contentDocument.body)\n : d3select('body');\n // @ts-ignore TODO root.select is not callable\n const svg = securityLevel === 'sandbox' ? root.select(`[id=\"${id}\"]`) : d3select(`[id=\"${id}\"]`);\n\n // Establish svg dimensions and get width and height\n //\n const width = conf?.width ?? defaultSankeyConfig.width!;\n const height = conf?.height ?? defaultSankeyConfig.width!;\n const useMaxWidth = conf?.useMaxWidth ?? defaultSankeyConfig.useMaxWidth!;\n const nodeAlignment = conf?.nodeAlignment ?? defaultSankeyConfig.nodeAlignment!;\n const prefix = conf?.prefix ?? defaultSankeyConfig.prefix!;\n const suffix = conf?.suffix ?? defaultSankeyConfig.suffix!;\n const showValues = conf?.showValues ?? defaultSankeyConfig.showValues!;\n\n // Prepare data for construction based on diagObj.db\n // This must be a mutable object with `nodes` and `links` properties:\n //\n // {\n // \"nodes\": [ { \"id\": \"Alice\" }, { \"id\": \"Bob\" }, { \"id\": \"Carol\" } ],\n // \"links\": [ { \"source\": \"Alice\", \"target\": \"Bob\", \"value\": 23 }, { \"source\": \"Bob\", \"target\": \"Carol\", \"value\": 43 } ]\n // }\n //\n // @ts-ignore TODO: db should be coerced to sankey DB type\n const graph = diagObj.db.getGraph();\n\n // Get alignment function\n const nodeAlign = alignmentsMap[nodeAlignment];\n\n // Construct and configure a Sankey generator\n // That will be a function that calculates nodes and links dimensions\n //\n const nodeWidth = 10;\n const sankey = d3Sankey()\n .nodeId((d: any) => d.id) // we use 'id' property to identify node\n .nodeWidth(nodeWidth)\n .nodePadding(10 + (showValues ? 15 : 0))\n .nodeAlign(nodeAlign)\n .extent([\n [0, 0],\n [width, height],\n ]);\n\n // Compute the Sankey layout: calculate nodes and links positions\n // Our `graph` object will be mutated by this and enriched with other properties\n //\n sankey(graph);\n\n // Get color scheme for the graph\n const colorScheme = d3scaleOrdinal(d3schemeTableau10);\n\n // Create rectangles for nodes\n svg\n .append('g')\n .attr('class', 'nodes')\n .selectAll('.node')\n .data(graph.nodes)\n .join('g')\n .attr('class', 'node')\n .attr('id', (d: any) => (d.uid = Uid.next('node-')).id)\n .attr('transform', function (d: any) {\n return 'translate(' + d.x0 + ',' + d.y0 + ')';\n })\n .attr('x', (d: any) => d.x0)\n .attr('y', (d: any) => d.y0)\n .append('rect')\n .attr('height', (d: any) => {\n return d.y1 - d.y0;\n })\n .attr('width', (d: any) => d.x1 - d.x0)\n .attr('fill', (d: any) => colorScheme(d.id));\n\n const getText = ({ id, value }: { id: string; value: number }) => {\n if (!showValues) {\n return id;\n }\n return `${id}\\n${prefix}${Math.round(value * 100) / 100}${suffix}`;\n };\n\n // Create labels for nodes\n svg\n .append('g')\n .attr('class', 'node-labels')\n .attr('font-size', 14)\n .selectAll('text')\n .data(graph.nodes)\n .join('text')\n .attr('x', (d: any) => (d.x0 < width / 2 ? d.x1 + 6 : d.x0 - 6))\n .attr('y', (d: any) => (d.y1 + d.y0) / 2)\n .attr('dy', `${showValues ? '0' : '0.35'}em`)\n .attr('text-anchor', (d: any) => (d.x0 < width / 2 ? 'start' : 'end'))\n .text(getText);\n\n // Creates the paths that represent the links.\n const link = svg\n .append('g')\n .attr('class', 'links')\n .attr('fill', 'none')\n .attr('stroke-opacity', 0.5)\n .selectAll('.link')\n .data(graph.links)\n .join('g')\n .attr('class', 'link')\n .style('mix-blend-mode', 'multiply');\n\n const linkColor = conf?.linkColor ?? 'gradient';\n\n if (linkColor === 'gradient') {\n const gradient = link\n .append('linearGradient')\n .attr('id', (d: any) => (d.uid = Uid.next('linearGradient-')).id)\n .attr('gradientUnits', 'userSpaceOnUse')\n .attr('x1', (d: any) => d.source.x1)\n .attr('x2', (d: any) => d.target.x0);\n\n gradient\n .append('stop')\n .attr('offset', '0%')\n .attr('stop-color', (d: any) => colorScheme(d.source.id));\n\n gradient\n .append('stop')\n .attr('offset', '100%')\n .attr('stop-color', (d: any) => colorScheme(d.target.id));\n }\n\n let coloring: any;\n switch (linkColor) {\n case 'gradient':\n coloring = (d: any) => d.uid;\n break;\n case 'source':\n coloring = (d: any) => colorScheme(d.source.id);\n break;\n case 'target':\n coloring = (d: any) => colorScheme(d.target.id);\n break;\n default:\n coloring = linkColor;\n }\n\n link\n .append('path')\n .attr('d', d3SankeyLinkHorizontal())\n .attr('stroke', coloring)\n .attr('stroke-width', (d: any) => Math.max(1, d.width));\n\n setupGraphViewbox(undefined, svg, 0, useMaxWidth);\n};\n\nexport default {\n draw,\n};\n", "export const prepareTextForParsing = (text: string): string => {\n const textToParse = text\n .replaceAll(/^[^\\S\\n\\r]+|[^\\S\\n\\r]+$/g, '') // remove all trailing spaces for each row\n .replaceAll(/([\\n\\r])+/g, '\\n') // remove empty lines duplicated\n .trim();\n\n return textToParse;\n};\n", "const getStyles = (options) =>\n `.label {\n font-family: ${options.fontFamily};\n }`;\n\nexport default getStyles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: jison doesn't export types\nimport parser from './parser/sankey.jison';\nimport db from './sankeyDB.js';\nimport renderer from './sankeyRenderer.js';\nimport { prepareTextForParsing } from './sankeyUtils.js';\nimport sankeyStyles from './styles.js';\n\nconst originalParse = parser.parse.bind(parser);\nparser.parse = (text: string) => originalParse(prepareTextForParsing(text));\n\nexport const diagram: DiagramDefinition = {\n styles: sankeyStyles,\n parser,\n db,\n renderer,\n};\n"], - "mappings": "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", - "names": ["parser", "o", "__name", "k", "v", "$V0", "$V1", "$V2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "source", "target", "value", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "sankey_default", "parser", "links", "nodes", "nodesMap", "clear", "__name", "SankeyLink", "source", "target", "value", "addLink", "SankeyNode", "ID", "findOrCreateNode", "common_default", "getConfig", "node", "getNodes", "getLinks", "getGraph", "link", "sankeyDB_default", "getAccTitle", "setAccTitle", "getAccDescription", "setAccDescription", "getDiagramTitle", "setDiagramTitle", "max", "values", "valueof", "value", "index", "__name", "min", "values", "valueof", "value", "index", "__name", "sum", "values", "valueof", "value", "index", "__name", "targetDepth", "d", "__name", "left", "node", "right", "n", "justify", "center", "min", "constant", "x", "__name", "ascendingSourceBreadth", "a", "b", "ascendingBreadth", "__name", "ascendingTargetBreadth", "value", "d", "defaultId", "defaultNodes", "graph", "defaultLinks", "find", "nodeById", "id", "node", "computeLinkBreadths", "nodes", "y0", "y1", "link", "Sankey", "x0", "x1", "dx", "dy", "py", "align", "justify", "sort", "linkSort", "links", "iterations", "sankey", "computeNodeLinks", "computeNodeValues", "computeNodeDepths", "computeNodeHeights", "computeNodeBreadths", "_", "constant", "i", "source", "target", "sourceLinks", "targetLinks", "sum", "n", "current", "next", "x", "computeNodeLayers", "max", "kx", "columns", "column", "initializeNodeBreadths", "ky", "min", "c", "y", "reorderLinks", "alpha", "beta", "relaxRightToLeft", "relaxLeftToRight", "w", "v", "targetTop", "reorderNodeLinks", "resolveCollisions", "sourceTop", "subject", "resolveCollisionsBottomToTop", "resolveCollisionsTopToBottom", "width", "pi", "tau", "epsilon", "tauEpsilon", "Path", "__name", "path", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "path_default", "constant_default", "x", "__name", "x", "p", "__name", "y", "slice", "linkSource", "d", "__name", "linkTarget", "link", "curve", "source", "target", "x", "y", "context", "buffer", "argv", "slice", "s", "t", "path_default", "_", "constant_default", "curveHorizontal", "x0", "y0", "x1", "y1", "linkHorizontal", "link", "curveHorizontal", "__name", "horizontalSource", "d", "__name", "horizontalTarget", "sankeyLinkHorizontal_default", "linkHorizontal", "Uid", "_Uid", "__name", "name", "id", "alignmentsMap", "left", "right", "center", "justify", "draw", "__name", "text", "id", "_version", "diagObj", "securityLevel", "conf", "getConfig", "defaultSankeyConfig", "defaultConfig", "sandboxElement", "select_default", "root", "svg", "width", "height", "useMaxWidth", "nodeAlignment", "prefix", "suffix", "showValues", "graph", "nodeAlign", "Sankey", "d", "colorScheme", "ordinal", "Tableau10_default", "Uid", "getText", "value", "link", "linkColor", "gradient", "coloring", "sankeyLinkHorizontal_default", "setupGraphViewbox", "sankeyRenderer_default", "prepareTextForParsing", "__name", "text", "getStyles", "__name", "options", "styles_default", "originalParse", "sankey_default", "text", "prepareTextForParsing", "diagram", "styles_default", "sankeyDB_default", "sankeyRenderer_default"] + "sourcesContent": ["/* 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,10],$V2=[1,5,10,12];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SANKEY\":4,\"NEWLINE\":5,\"csv\":6,\"opt_eof\":7,\"record\":8,\"csv_tail\":9,\"EOF\":10,\"field[source]\":11,\"COMMA\":12,\"field[target]\":13,\"field[value]\":14,\"field\":15,\"escaped\":16,\"non_escaped\":17,\"DQUOTE\":18,\"ESCAPED_TEXT\":19,\"NON_ESCAPED_TEXT\":20,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SANKEY\",5:\"NEWLINE\",10:\"EOF\",11:\"field[source]\",12:\"COMMA\",13:\"field[target]\",14:\"field[value]\",18:\"DQUOTE\",19:\"ESCAPED_TEXT\",20:\"NON_ESCAPED_TEXT\"},\nproductions_: [0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[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 7:\n\n const source = yy.findOrCreateNode($$[$0-4].trim().replaceAll('\"\"', '\"'));\n const target = yy.findOrCreateNode($$[$0-2].trim().replaceAll('\"\"', '\"'));\n const value = parseFloat($$[$0].trim());\n yy.addLink(source,target,value);\n \nbreak;\ncase 8: case 9: case 11:\n this.$=$$[$0]; \nbreak;\ncase 10:\n this.$=$$[$0-1]; \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:$V0,20:$V1},{1:[2,6],7:11,10:[1,12]},o($V1,[2,4],{9:13,5:[1,14]}),{12:[1,15]},o($V2,[2,8]),o($V2,[2,9]),{19:[1,16]},o($V2,[2,11]),{1:[2,1]},{1:[2,5]},o($V1,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:$V0,20:$V1},{15:18,16:7,17:8,18:$V0,20:$V1},{18:[1,19]},o($V1,[2,3]),{12:[1,20]},o($V2,[2,10]),{15:21,16:7,17:8,18:$V0,20:$V1},o([1,5,10],[2,7])],\ndefaultActions: {11:[2,1],12:[2,5]},\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: this.pushState('csv'); return 4; \nbreak;\ncase 1: this.pushState('csv'); return 4; \nbreak;\ncase 2: return 10 \nbreak;\ncase 3: return 5 \nbreak;\ncase 4: return 12 \nbreak;\ncase 5: this.pushState('escaped_text'); return 18; \nbreak;\ncase 6: return 20 \nbreak;\ncase 7:this.popState('escaped_text'); return 18; \nbreak;\ncase 8: return 19; \nbreak;\n}\n},\nrules: [/^(?:sankey-beta\\b)/i,/^(?:sankey\\b)/i,/^(?:$)/i,/^(?:((\\u000D\\u000A)|(\\u000A)))/i,/^(?:(\\u002C))/i,/^(?:(\\u0022))/i,/^(?:([\\u0020-\\u0021\\u0023-\\u002B\\u002D-\\u007E])*)/i,/^(?:(\\u0022)(?!(\\u0022)))/i,/^(?:(([\\u0020-\\u0021\\u0023-\\u002B\\u002D-\\u007E])|(\\u002C)|(\\u000D)|(\\u000A)|(\\u0022)(\\u0022))*)/i],\nconditions: {\"csv\":{\"rules\":[2,3,4,5,6,7,8],\"inclusive\":false},\"escaped_text\":{\"rules\":[7,8],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport common from '../common/common.js';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle,\n clear as commonClear,\n} from '../common/commonDb.js';\n\n// Sankey diagram represented by nodes and links between those nodes\nlet links: SankeyLink[] = [];\n// Array of nodes guarantees their order\nlet nodes: SankeyNode[] = [];\n// We also have to track nodes uniqueness (by ID)\nlet nodesMap = new Map();\n\nconst clear = (): void => {\n links = [];\n nodes = [];\n nodesMap = new Map();\n commonClear();\n};\n\nclass SankeyLink {\n constructor(\n public source: SankeyNode,\n public target: SankeyNode,\n public value = 0\n ) {}\n}\n\n/**\n * @param source - Node where the link starts\n * @param target - Node where the link ends\n * @param value - Describes the amount to be passed\n */\nconst addLink = (source: SankeyNode, target: SankeyNode, value: number): void => {\n links.push(new SankeyLink(source, target, value));\n};\n\nclass SankeyNode {\n constructor(public ID: string) {}\n}\n\nconst findOrCreateNode = (ID: string): SankeyNode => {\n ID = common.sanitizeText(ID, getConfig());\n\n let node = nodesMap.get(ID);\n if (node === undefined) {\n node = new SankeyNode(ID);\n nodesMap.set(ID, node);\n nodes.push(node);\n }\n return node;\n};\n\nconst getNodes = () => nodes;\nconst getLinks = () => links;\n\nconst getGraph = () => ({\n nodes: nodes.map((node) => ({ id: node.ID })),\n links: links.map((link) => ({\n source: link.source.ID,\n target: link.target.ID,\n value: link.value,\n })),\n});\n\nexport default {\n nodesMap,\n getConfig: () => getConfig().sankey,\n getNodes,\n getLinks,\n getGraph,\n addLink,\n findOrCreateNode,\n getAccTitle,\n setAccTitle,\n getAccDescription,\n setAccDescription,\n getDiagramTitle,\n setDiagramTitle,\n clear,\n};\n", "export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n", "export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n", "export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n", "import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n", "export default function constant(x) {\n return function() {\n return x;\n };\n}\n", "import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n", "var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n", "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n", "export var slice = Array.prototype.slice;\n", "import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n", "import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n", "export class Uid {\n private static count = 0;\n id: string;\n href: string;\n\n public static next(name: string): Uid {\n return new Uid(name + ++Uid.count);\n }\n\n constructor(id: string) {\n this.id = id;\n this.href = `#${id}`;\n }\n\n toString(): string {\n return 'url(' + this.href + ')';\n }\n}\n", "import type { Diagram } from '../../Diagram.js';\nimport { getConfig, defaultConfig } from '../../diagram-api/diagramAPI.js';\nimport {\n select as d3select,\n scaleOrdinal as d3scaleOrdinal,\n schemeTableau10 as d3schemeTableau10,\n} from 'd3';\nimport type { SankeyNode as d3SankeyNode } from 'd3-sankey';\nimport {\n sankey as d3Sankey,\n sankeyLinkHorizontal as d3SankeyLinkHorizontal,\n sankeyLeft as d3SankeyLeft,\n sankeyRight as d3SankeyRight,\n sankeyCenter as d3SankeyCenter,\n sankeyJustify as d3SankeyJustify,\n} from 'd3-sankey';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport { Uid } from '../../rendering-util/uid.js';\nimport type { SankeyNodeAlignment } from '../../config.type.js';\n\n/** d3-sankey computes `layer` at runtime but it's not in the type definitions */\ninterface SankeyNodeWithLayer extends d3SankeyNode<{ id: string }, Record> {\n layer?: number;\n}\n\n// Map config options to alignment functions\nconst alignmentsMap: Record<\n SankeyNodeAlignment,\n (node: d3SankeyNode, n: number) => number\n> = {\n left: d3SankeyLeft,\n right: d3SankeyRight,\n center: d3SankeyCenter,\n justify: d3SankeyJustify,\n};\n\n/**\n * Finds the layer of the central node (node with maximum value).\n * Used to determine smart label positioning.\n *\n * @param nodes - Array of nodes with layer information\n * @returns The layer number of the central (max value) node\n */\nconst findCentralNodeLayer = (nodes: SankeyNodeWithLayer[]): number => {\n let maxValue = 0;\n let centralLayer = 0;\n\n for (const node of nodes) {\n const value = node.value ?? 0;\n if (value > maxValue) {\n maxValue = value;\n centralLayer = node.layer ?? 0;\n }\n }\n\n return centralLayer;\n};\n\n/**\n * Draws Sankey diagram.\n *\n * @param text - The text of the diagram\n * @param id - The id of the diagram which will be used as a DOM element id\u00A8\n * @param _version - Mermaid version from package.json\n * @param diagObj - A standard diagram containing the db and the text and type etc of the diagram\n */\nexport const draw = function (text: string, id: string, _version: string, diagObj: Diagram): void {\n // Get Sankey config\n const { securityLevel, sankey: conf } = getConfig();\n const defaultSankeyConfig = defaultConfig.sankey!;\n\n // TODO:\n // This code repeats for every diagram\n // Figure out what is happening there, probably it should be separated\n // The main thing is svg object that is a d3 wrapper for svg operations\n //\n let sandboxElement: any;\n if (securityLevel === 'sandbox') {\n sandboxElement = d3select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? d3select(sandboxElement.nodes()[0].contentDocument.body)\n : d3select('body');\n // @ts-ignore TODO root.select is not callable\n const svg = securityLevel === 'sandbox' ? root.select(`[id=\"${id}\"]`) : d3select(`[id=\"${id}\"]`);\n\n // Establish svg dimensions and get width and height\n //\n const width = conf?.width ?? defaultSankeyConfig.width!;\n const height = conf?.height ?? defaultSankeyConfig.width!;\n const useMaxWidth = conf?.useMaxWidth ?? defaultSankeyConfig.useMaxWidth!;\n const nodeAlignment = conf?.nodeAlignment ?? defaultSankeyConfig.nodeAlignment!;\n const prefix = conf?.prefix ?? defaultSankeyConfig.prefix!;\n const suffix = conf?.suffix ?? defaultSankeyConfig.suffix!;\n const showValues = conf?.showValues ?? defaultSankeyConfig.showValues!;\n\n // New config options with defaults\n const nodeWidth = conf?.nodeWidth ?? defaultSankeyConfig.nodeWidth ?? 10;\n const nodePadding = conf?.nodePadding ?? defaultSankeyConfig.nodePadding ?? 12;\n const labelStyle = conf?.labelStyle ?? defaultSankeyConfig.labelStyle ?? 'legacy';\n const nodeColors: Record = conf?.nodeColors ?? {};\n\n // Prepare data for construction based on diagObj.db\n // This must be a mutable object with `nodes` and `links` properties:\n //\n // {\n // \"nodes\": [ { \"id\": \"Alice\" }, { \"id\": \"Bob\" }, { \"id\": \"Carol\" } ],\n // \"links\": [ { \"source\": \"Alice\", \"target\": \"Bob\", \"value\": 23 }, { \"source\": \"Bob\", \"target\": \"Carol\", \"value\": 43 } ]\n // }\n //\n // @ts-ignore TODO: db should be coerced to sankey DB type\n const graph = diagObj.db.getGraph();\n\n // Get alignment function\n const nodeAlign = alignmentsMap[nodeAlignment];\n\n // Construct and configure a Sankey generator\n // That will be a function that calculates nodes and links dimensions\n //\n const sankey = d3Sankey()\n .nodeId((d: any) => d.id) // we use 'id' property to identify node\n .nodeWidth(nodeWidth)\n .nodePadding(nodePadding + (showValues ? 15 : 0))\n .nodeAlign(nodeAlign)\n .extent([\n [0, 0],\n [width, height],\n ]);\n\n // Compute the Sankey layout: calculate nodes and links positions\n // Our `graph` object will be mutated by this and enriched with other properties\n //\n sankey(graph);\n\n // Find central node layer for smart label positioning\n const centralNodeLayer = findCentralNodeLayer(graph.nodes);\n\n // Get color scheme for the graph (fallback for nodes without custom colors)\n const colorScheme = d3scaleOrdinal(d3schemeTableau10);\n\n /**\n * Gets the color for a node, using custom nodeColors config if available,\n * otherwise falling back to the default color scheme.\n *\n * @param nodeId - The ID of the node\n * @returns The color for the node\n */\n const getNodeColor = (nodeId: string): string => {\n return nodeColors[nodeId] ?? colorScheme(nodeId);\n };\n\n // Create rectangles for nodes\n svg\n .append('g')\n .attr('class', 'nodes')\n .selectAll('.node')\n .data(graph.nodes)\n .join('g')\n .attr('class', 'node')\n .attr('id', (d: any) => (d.uid = Uid.next('node-')).id)\n .attr('transform', function (d: any) {\n return 'translate(' + d.x0 + ',' + d.y0 + ')';\n })\n .attr('x', (d: any) => d.x0)\n .attr('y', (d: any) => d.y0)\n .append('rect')\n .attr('height', (d: any) => {\n return d.y1 - d.y0;\n })\n .attr('width', (d: any) => d.x1 - d.x0)\n .attr('fill', (d: any) => getNodeColor(d.id));\n\n const getText = ({ id, value }: { id: string; value: number }) => {\n if (!showValues) {\n return id;\n }\n return `${id}\\n${prefix}${Math.round(value * 100) / 100}${suffix}`;\n };\n\n /**\n * Determines label position based on node position or layer.\n * For 'outlined' style, uses layer-based positioning relative to central node.\n * For 'legacy' style, uses position-based positioning (original behavior).\n *\n * @param d - Node data with layer/position information\n * @returns Object with x position and text-anchor\n */\n const getLabelPosition = (d: any): { x: number; anchor: string } => {\n if (labelStyle === 'outlined') {\n // Layer-based: left-of-center nodes get labels on the left\n const nodeLayer = d.layer ?? 0;\n if (nodeLayer < centralNodeLayer) {\n return { x: d.x0 - 6, anchor: 'end' };\n }\n return { x: d.x1 + 6, anchor: 'start' };\n }\n // Legacy: position-based (original behavior)\n if (d.x0 < width / 2) {\n return { x: d.x1 + 6, anchor: 'start' };\n }\n return { x: d.x0 - 6, anchor: 'end' };\n };\n\n // Create labels for nodes\n const labelsGroup = svg.append('g').attr('class', 'node-labels').attr('font-size', 14);\n\n const appendLabel = (className?: string) =>\n labelsGroup\n .selectAll(className ? `.${className}` : 'text')\n .data(graph.nodes)\n .join('text')\n .attr('class', className ?? null)\n .attr('x', (d: any) => getLabelPosition(d).x)\n .attr('y', (d: any) => (d.y1 + d.y0) / 2)\n .attr('dy', `${showValues ? '0' : '0.35'}em`)\n .attr('text-anchor', (d: any) => getLabelPosition(d).anchor)\n .text(getText);\n\n if (labelStyle === 'outlined') {\n appendLabel('sankey-label-bg');\n appendLabel('sankey-label-fg');\n } else {\n appendLabel();\n }\n\n // Creates the paths that represent the links.\n const link = svg\n .append('g')\n .attr('class', 'links')\n .attr('fill', 'none')\n .attr('stroke-opacity', 0.5)\n .selectAll('.link')\n .data(graph.links)\n .join('g')\n .attr('class', 'link')\n .style('mix-blend-mode', 'multiply');\n\n const linkColor = conf?.linkColor ?? 'gradient';\n\n if (linkColor === 'gradient') {\n const gradient = link\n .append('linearGradient')\n .attr('id', (d: any) => (d.uid = Uid.next('linearGradient-')).id)\n .attr('gradientUnits', 'userSpaceOnUse')\n .attr('x1', (d: any) => d.source.x1)\n .attr('x2', (d: any) => d.target.x0);\n\n gradient\n .append('stop')\n .attr('offset', '0%')\n .attr('stop-color', (d: any) => getNodeColor(d.source.id));\n\n gradient\n .append('stop')\n .attr('offset', '100%')\n .attr('stop-color', (d: any) => getNodeColor(d.target.id));\n }\n\n let coloring: any;\n switch (linkColor) {\n case 'gradient':\n coloring = (d: any) => d.uid;\n break;\n case 'source':\n coloring = (d: any) => getNodeColor(d.source.id);\n break;\n case 'target':\n coloring = (d: any) => getNodeColor(d.target.id);\n break;\n default:\n coloring = linkColor;\n }\n\n link\n .append('path')\n .attr('d', d3SankeyLinkHorizontal())\n .attr('stroke', coloring)\n .attr('stroke-width', (d: any) => Math.max(1, d.width));\n\n setupGraphViewbox(undefined, svg, 0, useMaxWidth);\n};\n\nexport default {\n draw,\n};\n", "export const prepareTextForParsing = (text: string): string => {\n const textToParse = text\n .replaceAll(/^[^\\S\\n\\r]+|[^\\S\\n\\r]+$/g, '') // remove all trailing spaces for each row\n .replaceAll(/([\\n\\r])+/g, '\\n') // remove empty lines duplicated\n .trim();\n\n return textToParse;\n};\n", "const getStyles = (options) =>\n `.label {\n font-family: ${options.fontFamily};\n }\n\n .node-labels {\n font-family: ${options.fontFamily};\n }\n\n /* Outlined label style - background stroke for better readability */\n .sankey-label-bg {\n stroke: ${options.mainBkg || options.background || '#fff'};\n stroke-width: 4px;\n stroke-linejoin: round;\n paint-order: stroke;\n }\n\n /* Foreground label text */\n .sankey-label-fg {\n fill: ${options.textColor};\n }\n\n /* Node styling */\n .node rect {\n shape-rendering: crispEdges;\n }\n\n /* Link styling */\n .link {\n fill: none;\n stroke-opacity: 0.5;\n mix-blend-mode: multiply;\n }\n`;\n\nexport default getStyles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: jison doesn't export types\nimport parser from './parser/sankey.jison';\nimport db from './sankeyDB.js';\nimport renderer from './sankeyRenderer.js';\nimport { prepareTextForParsing } from './sankeyUtils.js';\nimport sankeyStyles from './styles.js';\n\nconst originalParse = parser.parse.bind(parser);\nparser.parse = (text: string) => originalParse(prepareTextForParsing(text));\n\nexport const diagram: DiagramDefinition = {\n styles: sankeyStyles,\n parser,\n db,\n renderer,\n};\n"], + "mappings": "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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "source", "target", "value", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "r", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "sankey_default", "parser", "links", "nodes", "nodesMap", "clear", "__name", "SankeyLink", "source", "target", "value", "addLink", "SankeyNode", "ID", "findOrCreateNode", "common_default", "getConfig", "node", "getNodes", "getLinks", "getGraph", "link", "sankeyDB_default", "getAccTitle", "setAccTitle", "getAccDescription", "setAccDescription", "getDiagramTitle", "setDiagramTitle", "max", "values", "valueof", "value", "index", "__name", "min", "values", "valueof", "value", "index", "__name", "sum", "values", "valueof", "value", "index", "__name", "targetDepth", "d", "__name", "left", "node", "right", "n", "justify", "center", "min", "constant", "x", "__name", "ascendingSourceBreadth", "a", "b", "ascendingBreadth", "__name", "ascendingTargetBreadth", "value", "d", "defaultId", "defaultNodes", "graph", "defaultLinks", "find", "nodeById", "id", "node", "computeLinkBreadths", "nodes", "y0", "y1", "link", "Sankey", "x0", "x1", "dx", "dy", "py", "align", "justify", "sort", "linkSort", "links", "iterations", "sankey", "computeNodeLinks", "computeNodeValues", "computeNodeDepths", "computeNodeHeights", "computeNodeBreadths", "_", "constant", "i", "source", "target", "sourceLinks", "targetLinks", "sum", "n", "current", "next", "x", "computeNodeLayers", "max", "kx", "columns", "column", "initializeNodeBreadths", "ky", "min", "c", "y", "reorderLinks", "alpha", "beta", "relaxRightToLeft", "relaxLeftToRight", "w", "v", "targetTop", "reorderNodeLinks", "resolveCollisions", "sourceTop", "subject", "resolveCollisionsBottomToTop", "resolveCollisionsTopToBottom", "width", "pi", "tau", "epsilon", "tauEpsilon", "Path", "__name", "path", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "path_default", "constant_default", "x", "__name", "x", "p", "__name", "y", "slice", "linkSource", "d", "__name", "linkTarget", "link", "curve", "source", "target", "x", "y", "context", "buffer", "argv", "slice", "s", "t", "path_default", "_", "constant_default", "curveHorizontal", "x0", "y0", "x1", "y1", "linkHorizontal", "link", "curveHorizontal", "__name", "horizontalSource", "d", "__name", "horizontalTarget", "sankeyLinkHorizontal_default", "linkHorizontal", "Uid", "_Uid", "__name", "name", "id", "alignmentsMap", "left", "right", "center", "justify", "findCentralNodeLayer", "__name", "nodes", "maxValue", "centralLayer", "node", "value", "draw", "text", "id", "_version", "diagObj", "securityLevel", "conf", "getConfig", "defaultSankeyConfig", "defaultConfig", "sandboxElement", "select_default", "root", "svg", "width", "height", "useMaxWidth", "nodeAlignment", "prefix", "suffix", "showValues", "nodeWidth", "nodePadding", "labelStyle", "nodeColors", "graph", "nodeAlign", "Sankey", "d", "centralNodeLayer", "colorScheme", "ordinal", "Tableau10_default", "getNodeColor", "nodeId", "Uid", "getText", "getLabelPosition", "labelsGroup", "appendLabel", "className", "link", "linkColor", "gradient", "coloring", "sankeyLinkHorizontal_default", "setupGraphViewbox", "sankeyRenderer_default", "prepareTextForParsing", "__name", "text", "getStyles", "__name", "options", "styles_default", "originalParse", "sankey_default", "text", "prepareTextForParsing", "diagram", "styles_default", "sankeyDB_default", "sankeyRenderer_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-PYXOKC54.mjs b/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-PYXOKC54.mjs deleted file mode 100644 index ad71b32..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-PYXOKC54.mjs +++ /dev/null @@ -1,145 +0,0 @@ -import{a as $e}from"./chunk-TU3PZOEN.mjs";import{a as Ze,b as Qe}from"./chunk-NN2NZ22Q.mjs";import{a as Ge,b as Xe,d as Vt,e as Yt,f as it,g as St}from"./chunk-W2A4CRWB.mjs";import{a as Je,k as te,m as F}from"./chunk-Q3CC2MQB.mjs";import{a as fr}from"./chunk-XBXGYYE5.mjs";import{A as Ye,C as H,D as _t,E as $t,F as L,N as ve,Q as We,R as jt,S as Ke,T as Fe,U as qe,V as He,W as ze,Y as Q,Z as Ue,a as Ve,s as Bt,z as Lt}from"./chunk-3UWU4A3N.mjs";import{b as G,h as Nt}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as f,f as ur}from"./chunk-VELTKBKT.mjs";var ee=(function(){var e=f(function(pt,O,S,N){for(S=S||{},N=pt.length;N--;S[pt[N]]=O);return S},"o"),t=[1,2],a=[1,3],r=[1,4],n=[2,4],i=[1,9],o=[1,11],h=[1,12],l=[1,14],s=[1,15],T=[1,17],E=[1,18],g=[1,19],u=[1,25],R=[1,26],m=[1,27],y=[1,28],w=[1,29],P=[1,30],k=[1,31],D=[1,32],v=[1,33],W=[1,34],K=[1,35],z=[1,36],X=[1,37],J=[1,38],U=[1,39],C=[1,40],j=[1,42],$=[1,43],tt=[1,44],rt=[1,45],st=[1,46],I=[1,47],b=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],ot=[1,74],ct=[1,80],M=[1,81],ie=[1,82],oe=[1,83],ce=[1,84],le=[1,85],de=[1,86],he=[1,87],pe=[1,88],Te=[1,89],Ee=[1,90],ue=[1,91],fe=[1,92],ge=[1,93],_e=[1,94],xe=[1,95],be=[1,96],me=[1,97],Ie=[1,98],Re=[1,99],Oe=[1,100],ye=[1,101],Le=[1,102],Ne=[1,103],Se=[1,104],Pe=[1,105],we=[2,78],Ot=[4,5,17,51,53,54],kt=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],Ae=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],qt=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],ke=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],Ht=[5,52],B=[70,71,72,73],at=[1,151],zt={trace:f(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,INVALID:10,box_section:11,box_line:12,participant_statement:13,create:14,box:15,restOfLine:16,end:17,signal:18,autonumber:19,NUM:20,off:21,activate:22,actor:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,legacy_title:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,loop:37,rect:38,opt:39,alt:40,else_sections:41,par:42,par_sections:43,par_over:44,critical:45,option_sections:46,break:47,option:48,and:49,else:50,participant:51,AS:52,participant_actor:53,destroy:54,actor_with_config:55,note:56,placement:57,text2:58,over:59,actor_pair:60,links:61,link:62,properties:63,details:64,spaceList:65,",":66,left_of:67,right_of:68,signaltype:69,"+":70,"-":71,"()":72,ACTOR:73,config_object:74,CONFIG_START:75,CONFIG_CONTENT:76,CONFIG_END:77,SOLID_OPEN_ARROW:78,DOTTED_OPEN_ARROW:79,SOLID_ARROW:80,SOLID_ARROW_TOP:81,SOLID_ARROW_BOTTOM:82,STICK_ARROW_TOP:83,STICK_ARROW_BOTTOM:84,SOLID_ARROW_TOP_DOTTED:85,SOLID_ARROW_BOTTOM_DOTTED:86,STICK_ARROW_TOP_DOTTED:87,STICK_ARROW_BOTTOM_DOTTED:88,SOLID_ARROW_TOP_REVERSE:89,SOLID_ARROW_BOTTOM_REVERSE:90,STICK_ARROW_TOP_REVERSE:91,STICK_ARROW_BOTTOM_REVERSE:92,SOLID_ARROW_TOP_REVERSE_DOTTED:93,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:94,STICK_ARROW_TOP_REVERSE_DOTTED:95,STICK_ARROW_BOTTOM_REVERSE_DOTTED:96,BIDIRECTIONAL_SOLID_ARROW:97,DOTTED_ARROW:98,BIDIRECTIONAL_DOTTED_ARROW:99,SOLID_CROSS:100,DOTTED_CROSS:101,SOLID_POINT:102,DOTTED_POINT:103,TXT:104,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",10:"INVALID",14:"create",15:"box",16:"restOfLine",17:"end",19:"autonumber",20:"NUM",21:"off",22:"activate",24:"deactivate",30:"title",31:"legacy_title",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"loop",38:"rect",39:"opt",40:"alt",42:"par",44:"par_over",45:"critical",47:"break",48:"option",49:"and",50:"else",51:"participant",52:"AS",53:"participant_actor",54:"destroy",56:"note",59:"over",61:"links",62:"link",63:"properties",64:"details",66:",",67:"left_of",68:"right_of",70:"+",71:"-",72:"()",73:"ACTOR",75:"CONFIG_START",76:"CONFIG_CONTENT",77:"CONFIG_END",78:"SOLID_OPEN_ARROW",79:"DOTTED_OPEN_ARROW",80:"SOLID_ARROW",81:"SOLID_ARROW_TOP",82:"SOLID_ARROW_BOTTOM",83:"STICK_ARROW_TOP",84:"STICK_ARROW_BOTTOM",85:"SOLID_ARROW_TOP_DOTTED",86:"SOLID_ARROW_BOTTOM_DOTTED",87:"STICK_ARROW_TOP_DOTTED",88:"STICK_ARROW_BOTTOM_DOTTED",89:"SOLID_ARROW_TOP_REVERSE",90:"SOLID_ARROW_BOTTOM_REVERSE",91:"STICK_ARROW_TOP_REVERSE",92:"STICK_ARROW_BOTTOM_REVERSE",93:"SOLID_ARROW_TOP_REVERSE_DOTTED",94:"SOLID_ARROW_BOTTOM_REVERSE_DOTTED",95:"STICK_ARROW_TOP_REVERSE_DOTTED",96:"STICK_ARROW_BOTTOM_REVERSE_DOTTED",97:"BIDIRECTIONAL_SOLID_ARROW",98:"DOTTED_ARROW",99:"BIDIRECTIONAL_DOTTED_ARROW",100:"SOLID_CROSS",101:"DOTTED_CROSS",102:"SOLID_POINT",103:"DOTTED_POINT",104:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],performAction:f(function(O,S,N,_,V,c,yt){var p=c.length-1;switch(V){case 3:return _.apply(c[p]),c[p];break;case 4:case 10:this.$=[];break;case 5:case 11:c[p-1].push(c[p]),this.$=c[p-1];break;case 6:case 7:case 12:case 13:this.$=c[p];break;case 8:case 9:case 14:this.$=[];break;case 16:c[p].type="createParticipant",this.$=c[p];break;case 17:c[p-1].unshift({type:"boxStart",boxData:_.parseBoxData(c[p-2])}),c[p-1].push({type:"boxEnd",boxText:c[p-2]}),this.$=c[p-1];break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(c[p-2]),sequenceIndexStep:Number(c[p-1]),sequenceVisible:!0,signalType:_.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(c[p-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:_.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:_.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:_.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"activeStart",signalType:_.LINETYPE.ACTIVE_START,actor:c[p-1].actor};break;case 24:this.$={type:"activeEnd",signalType:_.LINETYPE.ACTIVE_END,actor:c[p-1].actor};break;case 30:_.setDiagramTitle(c[p].substring(6)),this.$=c[p].substring(6);break;case 31:_.setDiagramTitle(c[p].substring(7)),this.$=c[p].substring(7);break;case 32:this.$=c[p].trim(),_.setAccTitle(this.$);break;case 33:case 34:this.$=c[p].trim(),_.setAccDescription(this.$);break;case 35:c[p-1].unshift({type:"loopStart",loopText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.LOOP_START}),c[p-1].push({type:"loopEnd",loopText:c[p-2],signalType:_.LINETYPE.LOOP_END}),this.$=c[p-1];break;case 36:c[p-1].unshift({type:"rectStart",color:_.parseMessage(c[p-2]),signalType:_.LINETYPE.RECT_START}),c[p-1].push({type:"rectEnd",color:_.parseMessage(c[p-2]),signalType:_.LINETYPE.RECT_END}),this.$=c[p-1];break;case 37:c[p-1].unshift({type:"optStart",optText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.OPT_START}),c[p-1].push({type:"optEnd",optText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.OPT_END}),this.$=c[p-1];break;case 38:c[p-1].unshift({type:"altStart",altText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.ALT_START}),c[p-1].push({type:"altEnd",signalType:_.LINETYPE.ALT_END}),this.$=c[p-1];break;case 39:c[p-1].unshift({type:"parStart",parText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.PAR_START}),c[p-1].push({type:"parEnd",signalType:_.LINETYPE.PAR_END}),this.$=c[p-1];break;case 40:c[p-1].unshift({type:"parStart",parText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.PAR_OVER_START}),c[p-1].push({type:"parEnd",signalType:_.LINETYPE.PAR_END}),this.$=c[p-1];break;case 41:c[p-1].unshift({type:"criticalStart",criticalText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.CRITICAL_START}),c[p-1].push({type:"criticalEnd",signalType:_.LINETYPE.CRITICAL_END}),this.$=c[p-1];break;case 42:c[p-1].unshift({type:"breakStart",breakText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.BREAK_START}),c[p-1].push({type:"breakEnd",optText:_.parseMessage(c[p-2]),signalType:_.LINETYPE.BREAK_END}),this.$=c[p-1];break;case 44:this.$=c[p-3].concat([{type:"option",optionText:_.parseMessage(c[p-1]),signalType:_.LINETYPE.CRITICAL_OPTION},c[p]]);break;case 46:this.$=c[p-3].concat([{type:"and",parText:_.parseMessage(c[p-1]),signalType:_.LINETYPE.PAR_AND},c[p]]);break;case 48:this.$=c[p-3].concat([{type:"else",altText:_.parseMessage(c[p-1]),signalType:_.LINETYPE.ALT_ELSE},c[p]]);break;case 49:c[p-3].draw="participant",c[p-3].type="addParticipant",c[p-3].description=_.parseMessage(c[p-1]),this.$=c[p-3];break;case 50:c[p-1].draw="participant",c[p-1].type="addParticipant",this.$=c[p-1];break;case 51:c[p-3].draw="actor",c[p-3].type="addParticipant",c[p-3].description=_.parseMessage(c[p-1]),this.$=c[p-3];break;case 52:case 57:c[p-1].draw="actor",c[p-1].type="addParticipant",this.$=c[p-1];break;case 53:c[p-1].type="destroyParticipant",this.$=c[p-1];break;case 54:c[p-3].draw="participant",c[p-3].type="addParticipant",c[p-3].description=_.parseMessage(c[p-1]),this.$=c[p-3];break;case 55:c[p-1].draw="participant",c[p-1].type="addParticipant",this.$=c[p-1];break;case 56:c[p-3].draw="actor",c[p-3].type="addParticipant",c[p-3].description=_.parseMessage(c[p-1]),this.$=c[p-3];break;case 58:this.$=[c[p-1],{type:"addNote",placement:c[p-2],actor:c[p-1].actor,text:c[p]}];break;case 59:c[p-2]=[].concat(c[p-1],c[p-1]).slice(0,2),c[p-2][0]=c[p-2][0].actor,c[p-2][1]=c[p-2][1].actor,this.$=[c[p-1],{type:"addNote",placement:_.PLACEMENT.OVER,actor:c[p-2].slice(0,2),text:c[p]}];break;case 60:this.$=[c[p-1],{type:"addLinks",actor:c[p-1].actor,text:c[p]}];break;case 61:this.$=[c[p-1],{type:"addALink",actor:c[p-1].actor,text:c[p]}];break;case 62:this.$=[c[p-1],{type:"addProperties",actor:c[p-1].actor,text:c[p]}];break;case 63:this.$=[c[p-1],{type:"addDetails",actor:c[p-1].actor,text:c[p]}];break;case 66:this.$=[c[p-2],c[p]];break;case 67:this.$=c[p];break;case 68:this.$=_.PLACEMENT.LEFTOF;break;case 69:this.$=_.PLACEMENT.RIGHTOF;break;case 70:this.$=[c[p-4],c[p-1],{type:"addMessage",from:c[p-4].actor,to:c[p-1].actor,signalType:c[p-3],msg:c[p],activate:!0},{type:"activeStart",signalType:_.LINETYPE.ACTIVE_START,actor:c[p-1].actor}];break;case 71:this.$=[c[p-4],c[p-1],{type:"addMessage",from:c[p-4].actor,to:c[p-1].actor,signalType:c[p-3],msg:c[p]},{type:"activeEnd",signalType:_.LINETYPE.ACTIVE_END,actor:c[p-4].actor}];break;case 72:this.$=[c[p-4],c[p-1],{type:"addMessage",from:c[p-4].actor,to:c[p-1].actor,signalType:c[p-3],msg:c[p],activate:!0,centralConnection:_.LINETYPE.CENTRAL_CONNECTION},{type:"centralConnection",signalType:_.LINETYPE.CENTRAL_CONNECTION,actor:c[p-1].actor}];break;case 73:this.$=[c[p-4],c[p-1],{type:"addMessage",from:c[p-4].actor,to:c[p-1].actor,signalType:c[p-2],msg:c[p],activate:!1,centralConnection:_.LINETYPE.CENTRAL_CONNECTION_REVERSE},{type:"centralConnectionReverse",signalType:_.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:c[p-4].actor}];break;case 74:this.$=[c[p-5],c[p-1],{type:"addMessage",from:c[p-5].actor,to:c[p-1].actor,signalType:c[p-3],msg:c[p],activate:!0,centralConnection:_.LINETYPE.CENTRAL_CONNECTION_DUAL},{type:"centralConnection",signalType:_.LINETYPE.CENTRAL_CONNECTION,actor:c[p-1].actor},{type:"centralConnectionReverse",signalType:_.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:c[p-5].actor}];break;case 75:this.$=[c[p-3],c[p-1],{type:"addMessage",from:c[p-3].actor,to:c[p-1].actor,signalType:c[p-2],msg:c[p]}];break;case 76:this.$={type:"addParticipant",actor:c[p-1],config:c[p]};break;case 77:this.$=c[p-1].trim();break;case 78:this.$={type:"addParticipant",actor:c[p]};break;case 79:this.$=_.LINETYPE.SOLID_OPEN;break;case 80:this.$=_.LINETYPE.DOTTED_OPEN;break;case 81:this.$=_.LINETYPE.SOLID;break;case 82:this.$=_.LINETYPE.SOLID_TOP;break;case 83:this.$=_.LINETYPE.SOLID_BOTTOM;break;case 84:this.$=_.LINETYPE.STICK_TOP;break;case 85:this.$=_.LINETYPE.STICK_BOTTOM;break;case 86:this.$=_.LINETYPE.SOLID_TOP_DOTTED;break;case 87:this.$=_.LINETYPE.SOLID_BOTTOM_DOTTED;break;case 88:this.$=_.LINETYPE.STICK_TOP_DOTTED;break;case 89:this.$=_.LINETYPE.STICK_BOTTOM_DOTTED;break;case 90:this.$=_.LINETYPE.SOLID_ARROW_TOP_REVERSE;break;case 91:this.$=_.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE;break;case 92:this.$=_.LINETYPE.STICK_ARROW_TOP_REVERSE;break;case 93:this.$=_.LINETYPE.STICK_ARROW_BOTTOM_REVERSE;break;case 94:this.$=_.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED;break;case 95:this.$=_.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED;break;case 96:this.$=_.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED;break;case 97:this.$=_.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;break;case 98:this.$=_.LINETYPE.BIDIRECTIONAL_SOLID;break;case 99:this.$=_.LINETYPE.DOTTED;break;case 100:this.$=_.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 101:this.$=_.LINETYPE.SOLID_CROSS;break;case 102:this.$=_.LINETYPE.DOTTED_CROSS;break;case 103:this.$=_.LINETYPE.SOLID_POINT;break;case 104:this.$=_.LINETYPE.DOTTED_POINT;break;case 105:this.$=_.parseMessage(c[p].trim().substring(1));break}},"anonymous"),table:[{3:1,4:t,5:a,6:r},{1:[3]},{3:5,4:t,5:a,6:r},{3:6,4:t,5:a,6:r},e([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:o,8:8,9:10,10:h,13:13,14:l,15:s,18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},e(b,[2,5]),{9:48,13:13,14:l,15:s,18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},e(b,[2,7]),e(b,[2,8]),e(b,[2,9]),e(b,[2,15]),{13:49,51:J,53:U,54:C},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:I},{23:56,73:I},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},e(b,[2,30]),e(b,[2,31]),{33:[1,62]},{35:[1,63]},e(b,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:ot},{23:75,55:76,73:ot},{23:77,73:I},{69:78,72:[1,79],78:ct,79:M,80:ie,81:oe,82:ce,83:le,84:de,85:he,86:pe,87:Te,88:Ee,89:ue,90:fe,91:ge,92:_e,93:xe,94:be,95:me,96:Ie,97:Re,98:Oe,99:ye,100:Le,101:Ne,102:Se,103:Pe},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:I},{23:111,73:I},{23:112,73:I},{23:113,73:I},e([5,66,72,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,103,104],we),e(b,[2,6]),e(b,[2,16]),e(Ot,[2,10],{11:114}),e(b,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},e(b,[2,22]),{5:[1,118]},{5:[1,119]},e(b,[2,25]),e(b,[2,26]),e(b,[2,27]),e(b,[2,28]),e(b,[2,29]),e(b,[2,32]),e(b,[2,33]),e(kt,n,{7:120}),e(kt,n,{7:121}),e(kt,n,{7:122}),e(Ae,n,{41:123,7:124}),e(qt,n,{43:125,7:126}),e(qt,n,{7:126,43:127}),e(ke,n,{46:128,7:129}),e(kt,n,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},e(Ht,we,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:I},{69:146,78:ct,79:M,80:ie,81:oe,82:ce,83:le,84:de,85:he,86:pe,87:Te,88:Ee,89:ue,90:fe,91:ge,92:_e,93:xe,94:be,95:me,96:Ie,97:Re,98:Oe,99:ye,100:Le,101:Ne,102:Se,103:Pe},e(B,[2,79]),e(B,[2,80]),e(B,[2,81]),e(B,[2,82]),e(B,[2,83]),e(B,[2,84]),e(B,[2,85]),e(B,[2,86]),e(B,[2,87]),e(B,[2,88]),e(B,[2,89]),e(B,[2,90]),e(B,[2,91]),e(B,[2,92]),e(B,[2,93]),e(B,[2,94]),e(B,[2,95]),e(B,[2,96]),e(B,[2,97]),e(B,[2,98]),e(B,[2,99]),e(B,[2,100]),e(B,[2,101]),e(B,[2,102]),e(B,[2,103]),e(B,[2,104]),{23:147,73:I},{23:149,60:148,73:I},{73:[2,68]},{73:[2,69]},{58:150,104:at},{58:152,104:at},{58:153,104:at},{58:154,104:at},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:J,53:U,54:C},{5:[1,160]},e(b,[2,20]),e(b,[2,21]),e(b,[2,23]),e(b,[2,24]),{4:i,5:o,8:8,9:10,10:h,13:13,14:l,15:s,17:[1,161],18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},{4:i,5:o,8:8,9:10,10:h,13:13,14:l,15:s,17:[1,162],18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},{4:i,5:o,8:8,9:10,10:h,13:13,14:l,15:s,17:[1,163],18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},{17:[1,164]},{4:i,5:o,8:8,9:10,10:h,13:13,14:l,15:s,17:[2,47],18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,50:[1,165],51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},{17:[1,166]},{4:i,5:o,8:8,9:10,10:h,13:13,14:l,15:s,17:[2,45],18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,49:[1,167],51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},{17:[1,168]},{17:[1,169]},{4:i,5:o,8:8,9:10,10:h,13:13,14:l,15:s,17:[2,43],18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,48:[1,170],51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},{4:i,5:o,8:8,9:10,10:h,13:13,14:l,15:s,17:[1,171],18:16,19:T,22:E,23:41,24:g,25:20,26:21,27:22,28:23,29:24,30:u,31:R,32:m,34:y,36:w,37:P,38:k,39:D,40:v,42:W,44:K,45:z,47:X,51:J,53:U,54:C,56:j,61:$,62:tt,63:rt,64:st,73:I},{16:[1,172]},e(b,[2,50]),{16:[1,173]},e(b,[2,55]),e(Ht,[2,76]),{76:[1,174]},{16:[1,175]},e(b,[2,52]),{16:[1,176]},e(b,[2,57]),e(b,[2,53]),{23:177,73:I},{23:178,73:I},{23:179,73:I},{58:180,104:at},{23:181,72:[1,182],73:I},{58:183,104:at},{58:184,104:at},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},e(b,[2,17]),e(Ot,[2,11]),{13:186,51:J,53:U,54:C},e(Ot,[2,13]),e(Ot,[2,14]),e(b,[2,19]),e(b,[2,35]),e(b,[2,36]),e(b,[2,37]),e(b,[2,38]),{16:[1,187]},e(b,[2,39]),{16:[1,188]},e(b,[2,40]),e(b,[2,41]),{16:[1,189]},e(b,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:at},{58:196,104:at},{58:197,104:at},{5:[2,75]},{58:198,104:at},{23:199,73:I},{5:[2,58]},{5:[2,59]},{23:200,73:I},e(Ot,[2,12]),e(Ae,n,{7:124,41:201}),e(qt,n,{7:126,43:202}),e(ke,n,{7:129,46:203}),e(b,[2,49]),e(b,[2,54]),e(Ht,[2,77]),e(b,[2,51]),e(b,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:at},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],defaultActions:{5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},parseError:f(function(O,S){if(S.recoverable)this.trace(O);else{var N=new Error(O);throw N.hash=S,N}},"parseError"),parse:f(function(O){var S=this,N=[0],_=[],V=[null],c=[],yt=this.table,p="",Dt=0,De=0,Ce=0,hr=2,Me=1,pr=c.slice.call(arguments,1),q=Object.create(this.lexer),ft={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(ft.yy[Gt]=this.yy[Gt]);q.setInput(O,ft.yy),ft.yy.lexer=q,ft.yy.parser=this,typeof q.yylloc>"u"&&(q.yylloc={});var Xt=q.yylloc;c.push(Xt);var Tr=q.options&&q.options.ranges;typeof ft.yy.parseError=="function"?this.parseError=ft.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ps(et){N.length=N.length-2*et,V.length=V.length-et,c.length=c.length-et}f(ps,"popStack");function Er(){var et;return et=_.pop()||q.lex()||Me,typeof et!="number"&&(et instanceof Array&&(_=et,et=_.pop()),et=S.symbols_[et]||et),et}f(Er,"lex");for(var Z,Jt,gt,nt,Ts,Zt,It={},Ct,dt,Be,Mt;;){if(gt=N[N.length-1],this.defaultActions[gt]?nt=this.defaultActions[gt]:((Z===null||typeof Z>"u")&&(Z=Er()),nt=yt[gt]&&yt[gt][Z]),typeof nt>"u"||!nt.length||!nt[0]){var Qt="";Mt=[];for(Ct in yt[gt])this.terminals_[Ct]&&Ct>hr&&Mt.push("'"+this.terminals_[Ct]+"'");q.showPosition?Qt="Parse error on line "+(Dt+1)+`: -`+q.showPosition()+` -Expecting `+Mt.join(", ")+", got '"+(this.terminals_[Z]||Z)+"'":Qt="Parse error on line "+(Dt+1)+": Unexpected "+(Z==Me?"end of input":"'"+(this.terminals_[Z]||Z)+"'"),this.parseError(Qt,{text:q.match,token:this.terminals_[Z]||Z,line:q.yylineno,loc:Xt,expected:Mt})}if(nt[0]instanceof Array&&nt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+gt+", token: "+Z);switch(nt[0]){case 1:N.push(Z),V.push(q.yytext),c.push(q.yylloc),N.push(nt[1]),Z=null,Jt?(Z=Jt,Jt=null):(De=q.yyleng,p=q.yytext,Dt=q.yylineno,Xt=q.yylloc,Ce>0&&Ce--);break;case 2:if(dt=this.productions_[nt[1]][1],It.$=V[V.length-dt],It._$={first_line:c[c.length-(dt||1)].first_line,last_line:c[c.length-1].last_line,first_column:c[c.length-(dt||1)].first_column,last_column:c[c.length-1].last_column},Tr&&(It._$.range=[c[c.length-(dt||1)].range[0],c[c.length-1].range[1]]),Zt=this.performAction.apply(It,[p,De,Dt,ft.yy,nt[1],V,c].concat(pr)),typeof Zt<"u")return Zt;dt&&(N=N.slice(0,-1*dt*2),V=V.slice(0,-1*dt),c=c.slice(0,-1*dt)),N.push(this.productions_[nt[1]][0]),V.push(It.$),c.push(It._$),Be=yt[N[N.length-2]][N[N.length-1]],N.push(Be);break;case 3:return!0}}return!0},"parse")},dr=(function(){var pt={EOF:1,parseError:f(function(S,N){if(this.yy.parser)this.yy.parser.parseError(S,N);else throw new Error(S)},"parseError"),setInput:f(function(O,S){return this.yy=S||this.yy||{},this._input=O,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:f(function(){var O=this._input[0];this.yytext+=O,this.yyleng++,this.offset++,this.match+=O,this.matched+=O;var S=O.match(/(?:\r\n?|\n).*/g);return S?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),O},"input"),unput:f(function(O){var S=O.length,N=O.split(/(?:\r\n?|\n)/g);this._input=O+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-S),this.offset-=S;var _=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),N.length-1&&(this.yylineno-=N.length-1);var V=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:N?(N.length===_.length?this.yylloc.first_column:0)+_[_.length-N.length].length-N[0].length:this.yylloc.first_column-S},this.options.ranges&&(this.yylloc.range=[V[0],V[0]+this.yyleng-S]),this.yyleng=this.yytext.length,this},"unput"),more:f(function(){return this._more=!0,this},"more"),reject:f(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:f(function(O){this.unput(this.match.slice(O))},"less"),pastInput:f(function(){var O=this.matched.substr(0,this.matched.length-this.match.length);return(O.length>20?"...":"")+O.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:f(function(){var O=this.match;return O.length<20&&(O+=this._input.substr(0,20-O.length)),(O.substr(0,20)+(O.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:f(function(){var O=this.pastInput(),S=new Array(O.length+1).join("-");return O+this.upcomingInput()+` -`+S+"^"},"showPosition"),test_match:f(function(O,S){var N,_,V;if(this.options.backtrack_lexer&&(V={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(V.yylloc.range=this.yylloc.range.slice(0))),_=O[0].match(/(?:\r\n?|\n).*/g),_&&(this.yylineno+=_.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:_?_[_.length-1].length-_[_.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+O[0].length},this.yytext+=O[0],this.match+=O[0],this.matches=O,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(O[0].length),this.matched+=O[0],N=this.performAction.call(this,this.yy,this,S,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),N)return N;if(this._backtrack){for(var c in V)this[c]=V[c];return!1}return!1},"test_match"),next:f(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var O,S,N,_;this._more||(this.yytext="",this.match="");for(var V=this._currentRules(),c=0;cS[0].length)){if(S=N,_=c,this.options.backtrack_lexer){if(O=this.test_match(N,V[c]),O!==!1)return O;if(this._backtrack){S=!1;continue}else return!1}else if(!this.options.flex)break}return S?(O=this.test_match(S,V[_]),O!==!1?O:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:f(function(){var S=this.next();return S||this.lex()},"lex"),begin:f(function(S){this.conditionStack.push(S)},"begin"),popState:f(function(){var S=this.conditionStack.length-1;return S>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:f(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:f(function(S){return S=this.conditionStack.length-1-Math.abs(S||0),S>=0?this.conditionStack[S]:"INITIAL"},"topState"),pushState:f(function(S){this.begin(S)},"pushState"),stateStackSize:f(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:f(function(S,N,_,V){var c=V;switch(_){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 20;case 7:return this.begin("CONFIG"),75;break;case 8:return 76;case 9:return this.popState(),this.begin("ALIAS"),77;break;case 10:return this.popState(),this.popState(),77;break;case 11:return N.yytext=N.yytext.trim(),73;break;case 12:return N.yytext=N.yytext.trim(),this.begin("ALIAS"),73;break;case 13:return N.yytext=N.yytext.trim(),this.popState(),73;break;case 14:return this.popState(),10;break;case 15:return this.begin("LINE"),15;break;case 16:return this.begin("ID"),51;break;case 17:return this.begin("ID"),53;break;case 18:return 14;case 19:return this.begin("ID"),54;break;case 20:return this.popState(),this.popState(),this.begin("LINE"),52;break;case 21:return this.popState(),this.popState(),5;break;case 22:return this.begin("LINE"),37;break;case 23:return this.begin("LINE"),38;break;case 24:return this.begin("LINE"),39;break;case 25:return this.begin("LINE"),40;break;case 26:return this.begin("LINE"),50;break;case 27:return this.begin("LINE"),42;break;case 28:return this.begin("LINE"),44;break;case 29:return this.begin("LINE"),49;break;case 30:return this.begin("LINE"),45;break;case 31:return this.begin("LINE"),48;break;case 32:return this.begin("LINE"),47;break;case 33:return this.popState(),16;break;case 34:return 17;case 35:return 67;case 36:return 68;case 37:return 61;case 38:return 62;case 39:return 63;case 40:return 64;case 41:return 59;case 42:return 56;case 43:return this.begin("ID"),22;break;case 44:return this.begin("ID"),24;break;case 45:return 30;case 46:return 31;case 47:return this.begin("acc_title"),32;break;case 48:return this.popState(),"acc_title_value";break;case 49:return this.begin("acc_descr"),34;break;case 50:return this.popState(),"acc_descr_value";break;case 51:this.begin("acc_descr_multiline");break;case 52:this.popState();break;case 53:return"acc_descr_multiline_value";case 54:return 6;case 55:return 19;case 56:return 21;case 57:return 66;case 58:return 5;case 59:return N.yytext=N.yytext.trim(),73;break;case 60:return 80;case 61:return 97;case 62:return 98;case 63:return 99;case 64:return 78;case 65:return 79;case 66:return 100;case 67:return 101;case 68:return 102;case 69:return 103;case 70:return 85;case 71:return 86;case 72:return 87;case 73:return 88;case 74:return 93;case 75:return 94;case 76:return 95;case 77:return 96;case 78:return 81;case 79:return 82;case 80:return 83;case 81:return 84;case 82:return 89;case 83:return 90;case 84:return 91;case 85:return 92;case 86:return 104;case 87:return 104;case 88:return 70;case 89:return 71;case 90:return 72;case 91:return 5;case 92:return 10}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\}(?=\s+as\s))/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^<>:\n,;@\s]+(?=\s+as\s))/i,/^(?:[^<>:\n,;@]+(?=\s*[\n;#]|$))/i,/^(?:[^<>:\n,;@]*<[^\n]*)/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\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\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\/\\\+\()\+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)|-\|\\|-\\|-\/|-\/\/|-\|\/|\/\|-|\\\|-|\/\/-|\\\\-|\/\|-|--\|\\|--|\(\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?:--\|\\)/i,/^(?:--\|\/)/i,/^(?:--\\\\)/i,/^(?:--\/\/)/i,/^(?:\/\|--)/i,/^(?:\\\|--)/i,/^(?:\/\/--)/i,/^(?:\\\\--)/i,/^(?:-\|\\)/i,/^(?:-\|\/)/i,/^(?:-\\\\)/i,/^(?:-\/\/)/i,/^(?:\/\|-)/i,/^(?:\\\|-)/i,/^(?:\/\/-)/i,/^(?:\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\(\))/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[52,53],inclusive:!1},acc_descr:{rules:[50],inclusive:!1},acc_title:{rules:[48],inclusive:!1},ID:{rules:[2,3,7,11,12,13,14],inclusive:!1},ALIAS:{rules:[2,3,20,21],inclusive:!1},LINE:{rules:[2,3,33],inclusive:!1},CONFIG:{rules:[8,9,10],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,15,16,17,18,19,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,51,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],inclusive:!0}}};return pt})();zt.lexer=dr;function Ut(){this.yy={}}return f(Ut,"Parser"),Ut.prototype=zt,zt.Parser=Ut,new Ut})();ee.parser=ee;var je=ee;var gr={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34,SOLID_TOP:41,SOLID_BOTTOM:42,STICK_TOP:43,STICK_BOTTOM:44,SOLID_ARROW_TOP_REVERSE:45,SOLID_ARROW_BOTTOM_REVERSE:46,STICK_ARROW_TOP_REVERSE:47,STICK_ARROW_BOTTOM_REVERSE:48,SOLID_TOP_DOTTED:51,SOLID_BOTTOM_DOTTED:52,STICK_TOP_DOTTED:53,STICK_BOTTOM_DOTTED:54,SOLID_ARROW_TOP_REVERSE_DOTTED:55,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:56,STICK_ARROW_TOP_REVERSE_DOTTED:57,STICK_ARROW_BOTTOM_REVERSE_DOTTED:58,CENTRAL_CONNECTION:59,CENTRAL_CONNECTION_REVERSE:60,CENTRAL_CONNECTION_DUAL:61},_r={FILLED:0,OPEN:1},xr={LEFTOF:0,RIGHTOF:1,OVER:2},Pt={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},vt=class{constructor(){this.state=new $e(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=jt;this.setAccDescription=Fe;this.setDiagramTitle=He;this.getAccTitle=Ke;this.getAccDescription=qe;this.getDiagramTitle=ze;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(Q().wrap),this.LINETYPE=gr,this.ARROWTYPE=_r,this.PLACEMENT=xr}static{f(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,a,r,n,i){let o=this.state.records.currentBox,h;if(i!==void 0){let s;i.includes(` -`)?s=i+` -`:s=`{ -`+i+` -}`,h=Qe(s,{schema:Ze})}n=h?.type??n,h?.alias&&(!r||r.text===a)&&(r={text:h.alias,wrap:r?.wrap,type:n});let l=this.state.records.actors.get(t);if(l){if(this.state.records.currentBox&&l.box&&this.state.records.currentBox!==l.box)throw new Error(`A same participant should only be defined in one Box: ${l.name} can't be in '${l.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(o=l.box?l.box:this.state.records.currentBox,l.box=o,l&&a===l.name&&r==null)return}if(r?.text==null&&(r={text:a,type:n}),(n==null||r.text==null)&&(r={text:a,type:n}),this.state.records.actors.set(t,{box:o,name:a,description:r.text,wrap:r.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:n??"participant"}),this.state.records.prevActor){let s=this.state.records.actors.get(this.state.records.prevActor);s&&(s.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let a,r=0;if(!t)return 0;for(a=0;a>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},l}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:a,message:r?.text??"",wrap:r?.wrap??this.autoWrap(),type:n,activate:i,centralConnection:o??0}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(t===void 0)return{};t=t.trim();let a=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(a===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:a}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:Q().sequence?.wrap??!1}clear(){this.state.reset(),We()}parseMessage(t){let a=t.trim(),{wrap:r,cleanedText:n}=this.extractWrap(a),i={text:n,wrap:r};return G.debug(`parseMessage: ${JSON.stringify(i)}`),i}parseBoxData(t){let a=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),r=a?.[1]?a[1].trim():"transparent",n=a?.[2]?a[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",r)||(r="transparent",n=t.trim());else{let h=new Option().style;h.color=r,h.color!==r&&(r="transparent",n=t.trim())}let{wrap:i,cleanedText:o}=this.extractWrap(n);return{text:o?Lt(o,Q()):void 0,color:r,wrap:i}}addNote(t,a,r){let n={actor:t,placement:a,message:r.text,wrap:r.wrap??this.autoWrap()},i=[].concat(t,t);this.state.records.notes.push(n),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:i[0],to:i[1],message:r.text,wrap:r.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:a})}addLinks(t,a){let r=this.getActor(t);try{let n=Lt(a.text,Q());n=n.replace(/=/g,"="),n=n.replace(/&/g,"&");let i=JSON.parse(n);this.insertLinks(r,i)}catch(n){G.error("error while parsing actor link text",n)}}addALink(t,a){let r=this.getActor(t);try{let n={},i=Lt(a.text,Q()),o=i.indexOf("@");i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let h=i.slice(0,o-1).trim(),l=i.slice(o+1).trim();n[h]=l,this.insertLinks(r,n)}catch(n){G.error("error while parsing actor link text",n)}}insertLinks(t,a){if(t.links==null)t.links=a;else for(let r in a)t.links[r]=a[r]}addProperties(t,a){let r=this.getActor(t);try{let n=Lt(a.text,Q()),i=JSON.parse(n);this.insertProperties(r,i)}catch(n){G.error("error while parsing actor properties text",n)}}insertProperties(t,a){if(t.properties==null)t.properties=a;else for(let r in a)t.properties[r]=a[r]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,a){let r=this.getActor(t),n=document.getElementById(a.text);try{let i=n.innerHTML,o=JSON.parse(i);o.properties&&this.insertProperties(r,o.properties),o.links&&this.insertLinks(r,o.links)}catch(i){G.error("error while parsing actor details text",i)}}getActorProperty(t,a){if(t?.properties!==void 0)return t.properties[a]}apply(t){if(Array.isArray(t))t.forEach(a=>{this.apply(a)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnection":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnectionReverse":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate,t.centralConnection);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"altStart":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":jt(t.text);break;case"parStart":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break}}getConfig(){return Q().sequence}};var br=f(e=>`.actor { - stroke: ${e.actorBorder}; - fill: ${e.actorBkg}; - } - - text.actor > tspan { - fill: ${e.actorTextColor}; - stroke: none; - } - - .actor-line { - stroke: ${e.actorLineColor}; - } - - .innerArc { - stroke-width: 1.5; - stroke-dasharray: none; - } - - .messageLine0 { - stroke-width: 1.5; - stroke-dasharray: none; - stroke: ${e.signalColor}; - } - - .messageLine1 { - stroke-width: 1.5; - stroke-dasharray: 2, 2; - stroke: ${e.signalColor}; - } - - #arrowhead path { - fill: ${e.signalColor}; - stroke: ${e.signalColor}; - } - - .sequenceNumber { - fill: ${e.sequenceNumberColor}; - } - - #sequencenumber { - fill: ${e.signalColor}; - } - - #crosshead path { - fill: ${e.signalColor}; - stroke: ${e.signalColor}; - } - - .messageText { - fill: ${e.signalTextColor}; - stroke: none; - } - - .labelBox { - stroke: ${e.labelBoxBorderColor}; - fill: ${e.labelBoxBkgColor}; - } - - .labelText, .labelText > tspan { - fill: ${e.labelTextColor}; - stroke: none; - } - - .loopText, .loopText > tspan { - fill: ${e.loopTextColor}; - stroke: none; - } - - .loopLine { - stroke-width: 2px; - stroke-dasharray: 2, 2; - stroke: ${e.labelBoxBorderColor}; - fill: ${e.labelBoxBorderColor}; - } - - .note { - //stroke: #decc93; - stroke: ${e.noteBorderColor}; - fill: ${e.noteBkgColor}; - } - - .noteText, .noteText > tspan { - fill: ${e.noteTextColor}; - stroke: none; - } - - .activation0 { - fill: ${e.activationBkgColor}; - stroke: ${e.activationBorderColor}; - } - - .activation1 { - fill: ${e.activationBkgColor}; - stroke: ${e.activationBorderColor}; - } - - .activation2 { - fill: ${e.activationBkgColor}; - stroke: ${e.activationBorderColor}; - } - - .actorPopupMenu { - position: absolute; - } - - .actorPopupMenuPanel { - position: absolute; - fill: ${e.actorBkg}; - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); -} - .actor-man line { - stroke: ${e.actorBorder}; - fill: ${e.actorBkg}; - } - .actor-man circle, line { - stroke: ${e.actorBorder}; - fill: ${e.actorBkg}; - stroke-width: 2px; - } - -`,"getStyles"),tr=br;var re=ur(fr(),1);var Tt=36,Et="actor-top",ut="actor-bottom",Wt="actor-box",xt="actor-man",wt=f(function(e,t){return Ge(e,t)},"drawRect"),Ir=f(function(e,t,a,r,n){if(t.links===void 0||t.links===null||Object.keys(t.links).length===0)return{height:0,width:0};let i=t.links,o=t.actorCnt,h=t.rectData;var l="none";n&&(l="block !important");let s=e.append("g");s.attr("id","actor"+o+"_popup"),s.attr("class","actorPopupMenu"),s.attr("display",l);var T="";h.class!==void 0&&(T=" "+h.class);let E=h.width>a?h.width:a,g=s.append("rect");if(g.attr("class","actorPopupMenuPanel"+T),g.attr("x",h.x),g.attr("y",h.height),g.attr("fill",h.fill),g.attr("stroke",h.stroke),g.attr("width",E),g.attr("height",h.height),g.attr("rx",h.rx),g.attr("ry",h.ry),i!=null){var u=20;for(let y in i){var R=s.append("a"),m=(0,re.sanitizeUrl)(i[y]);R.attr("xlink:href",m),R.attr("target","_blank"),Hr(r)(y,R,h.x+10,h.height+u,E,20,{class:"actor"},r),u+=30}}return g.attr("height",u),{height:h.height+u,width:E}},"drawPopup"),Kt=f(function(e){return"var pu = document.getElementById('"+e+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),At=f(async function(e,t,a=null){let r=e.append("foreignObject"),n=await $t(t.text,Bt()),o=r.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(n).node().getBoundingClientRect();if(r.attr("height",Math.round(o.height)).attr("width",Math.round(o.width)),t.class==="noteText"){let h=e.node().firstChild;h.setAttribute("height",o.height+2*t.textMargin);let l=h.getBBox();r.attr("x",Math.round(l.x+l.width/2-o.width/2)).attr("y",Math.round(l.y+l.height/2-o.height/2))}else if(a){let{startx:h,stopx:l,starty:s}=a;if(h>l){let T=h;h=l,l=T}r.attr("x",Math.round(h+Math.abs(h-l)/2-o.width/2)),t.class==="loopText"?r.attr("y",Math.round(s)):r.attr("y",Math.round(s-o.height))}return[r]},"drawKatex"),bt=f(function(e,t){let a=0,r=0,n=t.text.split(L.lineBreakRegex),[i,o]=te(t.fontSize),h=[],l=0,s=f(()=>t.y,"yfunc");if(t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0)switch(t.valign){case"top":case"start":s=f(()=>Math.round(t.y+t.textMargin),"yfunc");break;case"middle":case"center":s=f(()=>Math.round(t.y+(a+r+t.textMargin)/2),"yfunc");break;case"bottom":case"end":s=f(()=>Math.round(t.y+(a+r+2*t.textMargin)-t.textMargin),"yfunc");break}if(t.anchor!==void 0&&t.textMargin!==void 0&&t.width!==void 0)switch(t.anchor){case"left":case"start":t.x=Math.round(t.x+t.textMargin),t.anchor="start",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"middle":case"center":t.x=Math.round(t.x+t.width/2),t.anchor="middle",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"right":case"end":t.x=Math.round(t.x+t.width-t.textMargin),t.anchor="end",t.dominantBaseline="middle",t.alignmentBaseline="middle";break}for(let[T,E]of n.entries()){t.textMargin!==void 0&&t.textMargin===0&&i!==void 0&&(l=T*i);let g=e.append("text");g.attr("x",t.x),g.attr("y",s()),t.anchor!==void 0&&g.attr("text-anchor",t.anchor).attr("dominant-baseline",t.dominantBaseline).attr("alignment-baseline",t.alignmentBaseline),t.fontFamily!==void 0&&g.style("font-family",t.fontFamily),o!==void 0&&g.style("font-size",o),t.fontWeight!==void 0&&g.style("font-weight",t.fontWeight),t.fill!==void 0&&g.attr("fill",t.fill),t.class!==void 0&&g.attr("class",t.class),t.dy!==void 0?g.attr("dy",t.dy):l!==0&&g.attr("dy",l);let u=E||Je;if(t.tspan){let R=g.append("tspan");R.attr("x",t.x),t.fill!==void 0&&R.attr("fill",t.fill),R.text(u)}else g.text(u);t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0&&(r+=(g._groups||g)[0][0].getBBox().height,a=r),h.push(g)}return h},"drawText"),er=f(function(e,t){function a(n,i,o,h,l){return n+","+i+" "+(n+o)+","+i+" "+(n+o)+","+(i+h-l)+" "+(n+o-l*1.2)+","+(i+h)+" "+n+","+(i+h)}f(a,"genPoints");let r=e.append("polygon");return r.attr("points",a(t.x,t.y,t.width,t.height,7)),r.attr("class","labelBox"),t.y=t.y+t.height/2,bt(e,t),r},"drawLabel"),A=-1,se=f((e,t,a,r)=>{e.select&&a.forEach(n=>{let i=t.get(n),o=e.select("#actor"+i.actorCnt);!r.mirrorActors&&i.stopy?o.attr("y2",i.stopy+i.height/2):r.mirrorActors&&o.attr("y2",i.stopy)})},"fixLifeLineHeights"),Rr=f(function(e,t,a,r){let n=r?t.stopy:t.starty,i=t.x+t.width/2,o=n+t.height,h=e.append("g").lower();var l=h;r||(A++,Object.keys(t.links||{}).length&&!a.forceMenus&&l.attr("onclick",Kt(`actor${A}_popup`)).attr("cursor","pointer"),l.append("line").attr("id","actor"+A).attr("x1",i).attr("y1",o).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name),l=h.append("g"),t.actorCnt=A,t.links!=null&&l.attr("id","root-"+A));let s=it();var T="actor";t.properties?.class?T=t.properties.class:s.fill="#eaeaea",r?T+=` ${ut}`:T+=` ${Et}`,s.x=t.x,s.y=n,s.width=t.width,s.height=t.height,s.class=T,s.rx=3,s.ry=3,s.name=t.name;let E=wt(l,s);if(t.rectData=s,t.properties?.icon){let u=t.properties.icon.trim();u.charAt(0)==="@"?Yt(l,s.x+s.width-20,s.y+10,u.substr(1)):Vt(l,s.x+s.width-20,s.y+10,u)}ht(a,H(t.description))(t.description,l,s.x,s.y,s.width,s.height,{class:`actor ${Wt}`},a);let g=t.height;if(E.node){let u=E.node().getBBox();t.height=u.height,g=u.height}return g},"drawActorTypeParticipant"),Or=f(function(e,t,a,r){let n=r?t.stopy:t.starty,i=t.x+t.width/2,o=n+t.height,h=e.append("g").lower();var l=h;r||(A++,Object.keys(t.links||{}).length&&!a.forceMenus&&l.attr("onclick",Kt(`actor${A}_popup`)).attr("cursor","pointer"),l.append("line").attr("id","actor"+A).attr("x1",i).attr("y1",o).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name),l=h.append("g"),t.actorCnt=A,t.links!=null&&l.attr("id","root-"+A));let s=it();var T="actor";t.properties?.class?T=t.properties.class:s.fill="#eaeaea",r?T+=` ${ut}`:T+=` ${Et}`,s.x=t.x,s.y=n,s.width=t.width,s.height=t.height,s.class=T,s.name=t.name;let E=6,g={...s,x:s.x+-E,y:s.y+ +E,class:"actor"},u=wt(l,s);if(wt(l,g),t.rectData=s,t.properties?.icon){let m=t.properties.icon.trim();m.charAt(0)==="@"?Yt(l,s.x+s.width-20,s.y+10,m.substr(1)):Vt(l,s.x+s.width-20,s.y+10,m)}ht(a,H(t.description))(t.description,l,s.x-E,s.y+E,s.width,s.height,{class:`actor ${Wt}`},a);let R=t.height;if(u.node){let m=u.node().getBBox();t.height=m.height,R=m.height}return R},"drawActorTypeCollections"),yr=f(function(e,t,a,r){let n=r?t.stopy:t.starty,i=t.x+t.width/2,o=n+t.height,h=e.append("g").lower(),l=h;r||(A++,Object.keys(t.links||{}).length&&!a.forceMenus&&l.attr("onclick",Kt(`actor${A}_popup`)).attr("cursor","pointer"),l.append("line").attr("id","actor"+A).attr("x1",i).attr("y1",o).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name),l=h.append("g"),t.actorCnt=A,t.links!=null&&l.attr("id","root-"+A));let s=it(),T="actor";t.properties?.class?T=t.properties.class:s.fill="#eaeaea",r?T+=` ${ut}`:T+=` ${Et}`,s.x=t.x,s.y=n,s.width=t.width,s.height=t.height,s.class=T,s.name=t.name;let E=s.height/2,g=E/(2.5+s.height/50),u=l.append("g"),R=l.append("g");if(u.append("path").attr("d",`M ${s.x},${s.y+E} - a ${g},${E} 0 0 0 0,${s.height} - h ${s.width-2*g} - a ${g},${E} 0 0 0 0,-${s.height} - Z - `).attr("class",T),R.append("path").attr("d",`M ${s.x},${s.y+E} - a ${g},${E} 0 0 0 0,${s.height}`).attr("stroke","#666").attr("stroke-width","1px").attr("class",T),u.attr("transform",`translate(${g}, ${-(s.height/2)})`),R.attr("transform",`translate(${s.width-g}, ${-s.height/2})`),t.rectData=s,t.properties?.icon){let w=t.properties.icon.trim(),P=s.x+s.width-20,k=s.y+10;w.charAt(0)==="@"?Yt(l,P,k,w.substr(1)):Vt(l,P,k,w)}ht(a,H(t.description))(t.description,l,s.x,s.y,s.width,s.height,{class:`actor ${Wt}`},a);let m=t.height,y=u.select("path:last-child");if(y.node()){let w=y.node().getBBox();t.height=w.height,m=w.height}return m},"drawActorTypeQueue"),Lr=f(function(e,t,a,r){let n=r?t.stopy:t.starty,i=t.x+t.width/2,o=n+75,h=e.append("g").lower();r||(A++,h.append("line").attr("id","actor"+A).attr("x1",i).attr("y1",o).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name),t.actorCnt=A);let l=e.append("g"),s=xt;r?s+=` ${ut}`:s+=` ${Et}`,l.attr("class",s),l.attr("name",t.name);let T=it();T.x=t.x,T.y=n,T.fill="#eaeaea",T.width=t.width,T.height=t.height,T.class="actor";let E=t.x+t.width/2,g=n+32,u=22;l.append("defs").append("marker").attr("id","filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),l.append("circle").attr("cx",E).attr("cy",g).attr("r",u).attr("fill","#eaeaf7").attr("stroke","#666").attr("stroke-width",1.2),l.append("line").attr("marker-end","url(#filled-head-control)").attr("transform",`translate(${E}, ${g-u})`);let R=l.node().getBBox();return t.height=R.height+2*(a?.sequence?.labelBoxHeight??0),ht(a,H(t.description))(t.description,l,T.x,T.y+u+(r?5:12),T.width,T.height,{class:`actor ${xt}`},a),t.height},"drawActorTypeControl"),Nr=f(function(e,t,a,r){let n=r?t.stopy:t.starty,i=t.x+t.width/2,o=n+75,h=e.append("g").lower(),l=e.append("g"),s="actor";r?s+=` ${ut}`:s+=` ${Et}`,l.attr("class",s),l.attr("name",t.name);let T=it();T.x=t.x,T.y=n,T.fill="#eaeaea",T.width=t.width,T.height=t.height,T.class="actor";let E=t.x+t.width/2,g=n+(r?10:25),u=22;l.append("circle").attr("cx",E).attr("cy",g).attr("r",u).attr("width",t.width).attr("height",t.height),l.append("line").attr("x1",E-u).attr("x2",E+u).attr("y1",g+u).attr("y2",g+u).attr("stroke-width",2);let R=l.node().getBBox();return t.height=R.height+(a?.sequence?.labelBoxHeight??0),r||(A++,h.append("line").attr("id","actor"+A).attr("x1",i).attr("y1",o).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name),t.actorCnt=A),ht(a,H(t.description))(t.description,l,T.x,T.y+(r?15:30),T.width,T.height,{class:`actor ${xt}`},a),r?l.attr("transform",`translate(0, ${u})`):l.attr("transform",`translate(0, ${u/2-5})`),t.height},"drawActorTypeEntity"),Sr=f(function(e,t,a,r){let n=r?t.stopy:t.starty,i=t.x+t.width/2,o=n+t.height+2*a.boxTextMargin,h=e.append("g").lower(),l=h;r||(A++,Object.keys(t.links||{}).length&&!a.forceMenus&&l.attr("onclick",Kt(`actor${A}_popup`)).attr("cursor","pointer"),l.append("line").attr("id","actor"+A).attr("x1",i).attr("y1",o).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name),l=h.append("g"),t.actorCnt=A,t.links!=null&&l.attr("id","root-"+A));let s=it(),T="actor";t.properties?.class?T=t.properties.class:s.fill="#eaeaea",r?T+=` ${ut}`:T+=` ${Et}`,s.x=t.x,s.y=n,s.width=t.width,s.height=t.height,s.class=T,s.name=t.name,s.x=t.x,s.y=n;let E=s.width/3,g=s.width/3,u=E/2,R=u/(2.5+E/50),m=l.append("g"),y=` - M ${s.x},${s.y+R} - a ${u},${R} 0 0 0 ${E},0 - a ${u},${R} 0 0 0 -${E},0 - l 0,${g-2*R} - a ${u},${R} 0 0 0 ${E},0 - l 0,-${g-2*R} -`;m.append("path").attr("d",y).attr("fill","#eaeaea").attr("stroke","#000").attr("stroke-width",1).attr("class",T),m.attr("transform",`translate(${E}, ${R})`),t.rectData=s,ht(a,H(t.description))(t.description,l,s.x,s.y+35,s.width,s.height,{class:`actor ${Wt}`},a);let w=m.select("path:last-child");if(w.node()){let P=w.node().getBBox();t.height=P.height+(a.sequence.labelBoxHeight??0)}return t.height},"drawActorTypeDatabase"),Pr=f(function(e,t,a,r){let n=r?t.stopy:t.starty,i=t.x+t.width/2,o=n+80,h=22,l=e.append("g").lower();r||(A++,l.append("line").attr("id","actor"+A).attr("x1",i).attr("y1",o).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name),t.actorCnt=A);let s=e.append("g"),T=xt;r?T+=` ${ut}`:T+=` ${Et}`,s.attr("class",T),s.attr("name",t.name);let E=it();E.x=t.x,E.y=n,E.fill="#eaeaea",E.width=t.width,E.height=t.height,E.class="actor",s.append("line").attr("id","actor-man-torso"+A).attr("x1",t.x+t.width/2-h*2.5).attr("y1",n+12).attr("x2",t.x+t.width/2-15).attr("y2",n+12),s.append("line").attr("id","actor-man-arms"+A).attr("x1",t.x+t.width/2-h*2.5).attr("y1",n+2).attr("x2",t.x+t.width/2-h*2.5).attr("y2",n+22),s.append("circle").attr("cx",t.x+t.width/2).attr("cy",n+12).attr("r",h);let g=s.node().getBBox();return t.height=g.height+(a.sequence.labelBoxHeight??0),ht(a,H(t.description))(t.description,s,E.x,E.y+15,E.width,E.height,{class:`actor ${xt}`},a),r?s.attr("transform",`translate(0,${h/2+10})`):s.attr("transform",`translate(0,${h/2+10})`),t.height},"drawActorTypeBoundary"),wr=f(function(e,t,a,r){let n=r?t.stopy:t.starty,i=t.x+t.width/2,o=n+80,h=e.append("g").lower();r||(A++,h.append("line").attr("id","actor"+A).attr("x1",i).attr("y1",o).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name),t.actorCnt=A);let l=e.append("g"),s=xt;r?s+=` ${ut}`:s+=` ${Et}`,l.attr("class",s),l.attr("name",t.name);let T=it();T.x=t.x,T.y=n,T.fill="#eaeaea",T.width=t.width,T.height=t.height,T.class="actor",T.rx=3,T.ry=3,l.append("line").attr("id","actor-man-torso"+A).attr("x1",i).attr("y1",n+25).attr("x2",i).attr("y2",n+45),l.append("line").attr("id","actor-man-arms"+A).attr("x1",i-Tt/2).attr("y1",n+33).attr("x2",i+Tt/2).attr("y2",n+33),l.append("line").attr("x1",i-Tt/2).attr("y1",n+60).attr("x2",i).attr("y2",n+45),l.append("line").attr("x1",i).attr("y1",n+45).attr("x2",i+Tt/2-2).attr("y2",n+60);let E=l.append("circle");E.attr("cx",t.x+t.width/2),E.attr("cy",n+10),E.attr("r",15),E.attr("width",t.width),E.attr("height",t.height);let g=l.node().getBBox();return t.height=g.height,ht(a,H(t.description))(t.description,l,T.x,T.y+35,T.width,T.height,{class:`actor ${xt}`},a),t.height},"drawActorTypeActor"),Ar=f(async function(e,t,a,r){switch(t.type){case"actor":return await wr(e,t,a,r);case"participant":return await Rr(e,t,a,r);case"boundary":return await Pr(e,t,a,r);case"control":return await Lr(e,t,a,r);case"entity":return await Nr(e,t,a,r);case"database":return await Sr(e,t,a,r);case"collections":return await Or(e,t,a,r);case"queue":return await yr(e,t,a,r)}},"drawActor"),kr=f(function(e,t,a){let n=e.append("g");rr(n,t),t.name&&ht(a)(t.name,n,t.x,t.y+a.boxTextMargin+(t.textMaxHeight||0)/2,t.width,0,{class:"text"},a),n.lower()},"drawBox"),Dr=f(function(e){return e.append("g")},"anchorElement"),Cr=f(function(e,t,a,r,n){let i=it(),o=t.anchored;i.x=t.startx,i.y=t.starty,i.class="activation"+n%3,i.width=t.stopx-t.startx,i.height=a-t.starty,wt(o,i)},"drawActivation"),Mr=f(async function(e,t,a,r){let{boxMargin:n,boxTextMargin:i,labelBoxHeight:o,labelBoxWidth:h,messageFontFamily:l,messageFontSize:s,messageFontWeight:T}=r,E=e.append("g"),g=f(function(m,y,w,P){return E.append("line").attr("x1",m).attr("y1",y).attr("x2",w).attr("y2",P).attr("class","loopLine")},"drawLoopLine");g(t.startx,t.starty,t.stopx,t.starty),g(t.stopx,t.starty,t.stopx,t.stopy),g(t.startx,t.stopy,t.stopx,t.stopy),g(t.startx,t.starty,t.startx,t.stopy),t.sections!==void 0&&t.sections.forEach(function(m){g(t.startx,m.y,t.stopx,m.y).style("stroke-dasharray","3, 3")});let u=St();u.text=a,u.x=t.startx,u.y=t.starty,u.fontFamily=l,u.fontSize=s,u.fontWeight=T,u.anchor="middle",u.valign="middle",u.tspan=!1,u.width=h||50,u.height=o||20,u.textMargin=i,u.class="labelText",er(E,u),u=sr(),u.text=t.title,u.x=t.startx+h/2+(t.stopx-t.startx)/2,u.y=t.starty+n+i,u.anchor="middle",u.valign="middle",u.textMargin=i,u.class="loopText",u.fontFamily=l,u.fontSize=s,u.fontWeight=T,u.wrap=!0;let R=H(u.text)?await At(E,u,t):bt(E,u);if(t.sectionTitles!==void 0){for(let[m,y]of Object.entries(t.sectionTitles))if(y.message){u.text=y.message,u.x=t.startx+(t.stopx-t.startx)/2,u.y=t.sections[m].y+n+i,u.class="loopText",u.anchor="middle",u.valign="middle",u.tspan=!1,u.fontFamily=l,u.fontSize=s,u.fontWeight=T,u.wrap=t.wrap,H(u.text)?(t.starty=t.sections[m].y,await At(E,u,t)):bt(E,u);let w=Math.round(R.map(P=>(P._groups||P)[0][0].getBBox().height).reduce((P,k)=>P+k));t.sections[m].height+=w-(n+i)}}return t.height=Math.round(t.stopy-t.starty),E},"drawLoop"),rr=f(function(e,t){Xe(e,t)},"drawBackgroundRect"),Br=f(function(e){e.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),Vr=f(function(e){e.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),Yr=f(function(e){e.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),vr=f(function(e){e.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),Wr=f(function(e){e.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),Kr=f(function(e){e.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),Fr=f(function(e){e.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),sr=f(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),qr=f(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),ht=(function(){function e(i,o,h,l,s,T,E){let g=o.append("text").attr("x",h+s/2).attr("y",l+T/2+5).style("text-anchor","middle").text(i);n(g,E)}f(e,"byText");function t(i,o,h,l,s,T,E,g){let{actorFontSize:u,actorFontFamily:R,actorFontWeight:m}=g,[y,w]=te(u),P=i.split(L.lineBreakRegex);for(let k=0;ke.height||0))+(this.loops.length===0?0:this.loops.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.messages.length===0?0:this.messages.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.notes.length===0?0:this.notes.map(e=>e.height||0).reduce((e,t)=>e+t))},"getHeight"),clear:f(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:f(function(e){this.boxes.push(e)},"addBox"),addActor:f(function(e){this.actors.push(e)},"addActor"),addLoop:f(function(e){this.loops.push(e)},"addLoop"),addMessage:f(function(e){this.messages.push(e)},"addMessage"),addNote:f(function(e){this.notes.push(e)},"addNote"),lastActor:f(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:f(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:f(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:f(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:f(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,or(Q())},"init"),updateVal:f(function(e,t,a,r){e[t]===void 0?e[t]=a:e[t]=r(a,e[t])},"updateVal"),updateBounds:f(function(e,t,a,r){let n=this,i=0;function o(h){return f(function(s){i++;let T=n.sequenceItems.length-i+1;n.updateVal(s,"starty",t-T*d.boxMargin,Math.min),n.updateVal(s,"stopy",r+T*d.boxMargin,Math.max),n.updateVal(x.data,"startx",e-T*d.boxMargin,Math.min),n.updateVal(x.data,"stopx",a+T*d.boxMargin,Math.max),h!=="activation"&&(n.updateVal(s,"startx",e-T*d.boxMargin,Math.min),n.updateVal(s,"stopx",a+T*d.boxMargin,Math.max),n.updateVal(x.data,"starty",t-T*d.boxMargin,Math.min),n.updateVal(x.data,"stopy",r+T*d.boxMargin,Math.max))},"updateItemBounds")}f(o,"updateFn"),this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},"updateBounds"),insert:f(function(e,t,a,r){let n=L.getMin(e,a),i=L.getMax(e,a),o=L.getMin(t,r),h=L.getMax(t,r);this.updateVal(x.data,"startx",n,Math.min),this.updateVal(x.data,"starty",o,Math.min),this.updateVal(x.data,"stopx",i,Math.max),this.updateVal(x.data,"stopy",h,Math.max),this.updateBounds(n,o,i,h)},"insert"),newActivation:f(function(e,t,a){let r=a.get(e.from),n=Ft(e.from).length||0,i=r.x+r.width/2+(n-1)*d.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+d.activationWidth,stopy:void 0,actor:e.from,anchored:Y.anchorElement(t)})},"newActivation"),endActivation:f(function(e){let t=this.activations.map(function(a){return a.actor}).lastIndexOf(e.from);return this.activations.splice(t,1)[0]},"endActivation"),createLoop:f(function(e={message:void 0,wrap:!1,width:void 0},t){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:e.message,wrap:e.wrap,width:e.width,height:0,fill:t}},"createLoop"),newLoop:f(function(e={message:void 0,wrap:!1,width:void 0},t){this.sequenceItems.push(this.createLoop(e,t))},"newLoop"),endLoop:f(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:f(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:f(function(e){let t=this.sequenceItems.pop();t.sections=t.sections||[],t.sectionTitles=t.sectionTitles||[],t.sections.push({y:x.getVerticalPos(),height:0}),t.sectionTitles.push(e),this.sequenceItems.push(t)},"addSectionToLoop"),saveVerticalPos:f(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:f(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:f(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=L.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:f(function(){return this.verticalPos},"getVerticalPos"),getBounds:f(function(){return{bounds:this.data,models:this.models}},"getBounds")},Jr=f(async function(e,t){x.bumpVerticalPos(d.boxMargin),t.height=d.boxMargin,t.starty=x.getVerticalPos();let a=it();a.x=t.startx,a.y=t.starty,a.width=t.width||d.width,a.class="note";let r=e.append("g"),n=Y.drawRect(r,a),i=St();i.x=t.startx,i.y=t.starty,i.width=a.width,i.dy="1em",i.text=t.message,i.class="noteText",i.fontFamily=d.noteFontFamily,i.fontSize=d.noteFontSize,i.fontWeight=d.noteFontWeight,i.anchor=d.noteAlign,i.textMargin=d.noteMargin,i.valign="center";let o=H(i.text)?await At(r,i):bt(r,i),h=Math.round(o.map(l=>(l._groups||l)[0][0].getBBox().height).reduce((l,s)=>l+s));n.attr("height",h+2*d.noteMargin),t.height+=h+2*d.noteMargin,x.bumpVerticalPos(h+2*d.noteMargin),t.stopy=t.starty+h+2*d.noteMargin,t.stopx=t.startx+a.width,x.insert(t.startx,t.starty,t.stopx,t.stopy),x.models.addNote(t)},"drawNote"),Zr=f(function(e,t,a,r,n,i,o){let h=r.db.getActors(),l=h.get(t.from),s=h.get(t.to),T=a.sequenceVisible,E=l.x+l.width/2,g=s.x+s.width/2,u=E<=g,R=cr(t,r),m=e.append("g"),y=16.5,w=f((W,K)=>{let z=W?y:-y;return K?-z:z},"getCircleOffset"),P=f(W=>{m.append("circle").attr("cx",W).attr("cy",o).attr("r",5).attr("width",10).attr("height",10)},"drawCircle"),{CENTRAL_CONNECTION:k,CENTRAL_CONNECTION_REVERSE:D,CENTRAL_CONNECTION_DUAL:v}=r.db.LINETYPE;if(T)switch(t.centralConnection){case k:R&&(g+=w(u,!0));break;case D:R||(E+=w(u,!1));break;case v:R?g+=w(u,!0):E+=w(u,!1);break}switch(t.centralConnection){case k:P(g);break;case D:P(E);break;case v:P(E),P(g);break}},"drawCentralConnection"),mt=f(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont"),Rt=f(e=>({fontFamily:e.noteFontFamily,fontSize:e.noteFontSize,fontWeight:e.noteFontWeight}),"noteFont"),ae=f(e=>({fontFamily:e.actorFontFamily,fontSize:e.actorFontSize,fontWeight:e.actorFontWeight}),"actorFont");async function Qr(e,t){x.bumpVerticalPos(10);let{startx:a,stopx:r,message:n}=t,i=L.splitBreaks(n).length,o=H(n),h=o?await _t(n,Q()):F.calculateTextDimensions(n,mt(d));if(!o){let E=h.height/i;t.height+=E,x.bumpVerticalPos(E)}let l,s=h.height-10,T=h.width;if(a===r){l=x.getVerticalPos()+s,d.rightAngles||(s+=d.boxMargin,l=x.getVerticalPos()+s),s+=30;let E=L.getMax(T/2,d.width/2);x.insert(a-E,x.getVerticalPos()-10+s,r+E,x.getVerticalPos()+30+s)}else s+=d.boxMargin,l=x.getVerticalPos()+s,x.insert(a,l-10,r,l);return x.bumpVerticalPos(s),t.height+=s,t.stopy=t.starty+t.height,x.insert(t.fromBounds,t.starty,t.toBounds,t.stopy),l}f(Qr,"boundMessage");var $r=f(async function(e,t,a,r,n){let{startx:i,stopx:o,starty:h,message:l,type:s,sequenceIndex:T,sequenceVisible:E}=t,g=F.calculateTextDimensions(l,mt(d)),u=St();u.x=i,u.y=h+10,u.width=o-i,u.class="messageText",u.dy="1em",u.text=l,u.fontFamily=d.messageFontFamily,u.fontSize=d.messageFontSize,u.fontWeight=d.messageFontWeight,u.anchor=d.messageAlign,u.valign="center",u.textMargin=d.wrapPadding,u.tspan=!1,H(u.text)?await At(e,u,{startx:i,stopx:o,starty:a}):bt(e,u);let R=g.width,m;if(i===o){let w=E||d.showSequenceNumbers,P=cr(n,r),k=ls(n,r),D=i+(w&&(P||k)?10:0);d.rightAngles?m=e.append("path").attr("d",`M ${D},${a} H ${i+L.getMax(d.width/2,R/2)} V ${a+25} H ${i}`):m=e.append("path").attr("d","M "+D+","+a+" C "+(D+60)+","+(a-10)+" "+(i+60)+","+(a+30)+" "+i+","+(a+20))}else m=e.append("line"),m.attr("x1",i),m.attr("y1",a),m.attr("x2",o),m.attr("y2",a),nr(n,r)&&Zr(e,n,t,r,i,o,a);s===r.db.LINETYPE.DOTTED||s===r.db.LINETYPE.DOTTED_CROSS||s===r.db.LINETYPE.DOTTED_POINT||s===r.db.LINETYPE.DOTTED_OPEN||s===r.db.LINETYPE.BIDIRECTIONAL_DOTTED||s===r.db.LINETYPE.SOLID_TOP_DOTTED||s===r.db.LINETYPE.SOLID_BOTTOM_DOTTED||s===r.db.LINETYPE.STICK_TOP_DOTTED||s===r.db.LINETYPE.STICK_BOTTOM_DOTTED||s===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||s===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||s===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||s===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED?(m.style("stroke-dasharray","3, 3"),m.attr("class","messageLine1")):m.attr("class","messageLine0");let y="";if(d.arrowMarkerAbsolute&&(y=Ye(!0)),m.attr("stroke-width",2),m.attr("stroke","none"),m.style("fill","none"),(s===r.db.LINETYPE.SOLID_TOP||s===r.db.LINETYPE.SOLID_TOP_DOTTED)&&m.attr("marker-end","url("+y+"#solidTopArrowHead)"),(s===r.db.LINETYPE.SOLID_BOTTOM||s===r.db.LINETYPE.SOLID_BOTTOM_DOTTED)&&m.attr("marker-end","url("+y+"#solidBottomArrowHead)"),(s===r.db.LINETYPE.STICK_TOP||s===r.db.LINETYPE.STICK_TOP_DOTTED)&&m.attr("marker-end","url("+y+"#stickTopArrowHead)"),(s===r.db.LINETYPE.STICK_BOTTOM||s===r.db.LINETYPE.STICK_BOTTOM_DOTTED)&&m.attr("marker-end","url("+y+"#stickBottomArrowHead)"),(s===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||s===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED)&&m.attr("marker-start","url("+y+"#solidBottomArrowHead)"),(s===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||s===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED)&&m.attr("marker-start","url("+y+"#solidTopArrowHead)"),(s===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE||s===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED)&&m.attr("marker-start","url("+y+"#stickBottomArrowHead)"),(s===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||s===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED)&&m.attr("marker-start","url("+y+"#stickTopArrowHead)"),(s===r.db.LINETYPE.SOLID||s===r.db.LINETYPE.DOTTED)&&m.attr("marker-end","url("+y+"#arrowhead)"),(s===r.db.LINETYPE.BIDIRECTIONAL_SOLID||s===r.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(m.attr("marker-start","url("+y+"#arrowhead)"),m.attr("marker-end","url("+y+"#arrowhead)")),(s===r.db.LINETYPE.SOLID_POINT||s===r.db.LINETYPE.DOTTED_POINT)&&m.attr("marker-end","url("+y+"#filled-head)"),(s===r.db.LINETYPE.SOLID_CROSS||s===r.db.LINETYPE.DOTTED_CROSS)&&m.attr("marker-end","url("+y+"#crosshead)"),E||d.showSequenceNumbers){let w=s===r.db.LINETYPE.BIDIRECTIONAL_SOLID||s===r.db.LINETYPE.BIDIRECTIONAL_DOTTED,P=s===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||s===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||s===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||s===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||s===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE||s===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||s===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||s===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,k=6,D=nr(n,r),v=i,W=o;w?(ii?W=o-2*k:(W=o-k,v+=n?.centralConnection===r.db.LINETYPE.CENTRAL_CONNECTION_DUAL||n?.centralConnection===r.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),W+=D?15:0,m.attr("x2",W),m.attr("x1",v)):m.attr("x1",i+k);let K=0,z=i===o,X=i<=o;z?K=t.fromBounds+1:P?K=X?t.toBounds-1:t.fromBounds+1:K=X?t.fromBounds+1:t.toBounds-1,e.append("line").attr("x1",K).attr("y1",a).attr("x2",K).attr("y2",a).attr("stroke-width",0).attr("marker-start","url("+y+"#sequencenumber)"),e.append("text").attr("x",K).attr("y",a+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(T)}},"drawMessage"),jr=f(function(e,t,a,r,n,i,o){let h=0,l=0,s,T=0;for(let E of r){let g=t.get(E),u=g.box;s&&s!=u&&(o||x.models.addBox(s),l+=d.boxMargin+s.margin),u&&u!=s&&(o||(u.x=h+l,u.y=n),l+=u.margin),g.width=g.width||d.width,g.height=L.getMax(g.height||d.height,d.height),g.margin=g.margin||d.actorMargin,T=L.getMax(T,g.height),a.get(g.name)&&(l+=g.width/2),g.x=h+l,g.starty=x.getVerticalPos(),x.insert(g.x,n,g.x+g.width,g.height),h+=g.width+l,g.box&&(g.box.width=h+u.margin-g.box.x),l=g.margin,s=g.box,x.models.addActor(g)}s&&!o&&x.models.addBox(s),x.bumpVerticalPos(T)},"addActorRenderingData"),ne=f(async function(e,t,a,r){if(r){let n=0;x.bumpVerticalPos(d.boxMargin*2);for(let i of a){let o=t.get(i);o.stopy||(o.stopy=x.getVerticalPos());let h=await Y.drawActor(e,o,d,!0);n=L.getMax(n,h)}x.bumpVerticalPos(n+d.boxMargin)}else for(let n of a){let i=t.get(n);await Y.drawActor(e,i,d,!1)}},"drawActors"),ir=f(function(e,t,a,r){let n=0,i=0;for(let o of a){let h=t.get(o),l=ss(h),s=Y.drawPopup(e,h,l,d,d.forceMenus,r);s.height>n&&(n=s.height),s.width+h.x>i&&(i=s.width+h.x)}return{maxHeight:n,maxWidth:i}},"drawActorsPopup"),or=f(function(e){Ve(d,e),e.fontFamily&&(d.actorFontFamily=d.noteFontFamily=d.messageFontFamily=e.fontFamily),e.fontSize&&(d.actorFontSize=d.noteFontSize=d.messageFontSize=e.fontSize),e.fontWeight&&(d.actorFontWeight=d.noteFontWeight=d.messageFontWeight=e.fontWeight)},"setConf"),Ft=f(function(e){return x.activations.filter(function(t){return t.actor===e})},"actorActivations"),ar=f(function(e,t){let a=t.get(e),r=Ft(e),n=r.reduce(function(o,h){return L.getMin(o,h.startx)},a.x+a.width/2-1),i=r.reduce(function(o,h){return L.getMax(o,h.stopx)},a.x+a.width/2+1);return[n,i]},"activationBounds");function lt(e,t,a,r,n){x.bumpVerticalPos(a);let i=r;if(t.id&&t.message&&e[t.id]){let o=e[t.id].width,h=mt(d);t.message=F.wrapLabel(`[${t.message}]`,o-2*d.wrapPadding,h),t.width=o,t.wrap=!0;let l=F.calculateTextDimensions(t.message,h),s=L.getMax(l.height,d.labelBoxHeight);i=r+s,G.debug(`${s} - ${t.message}`)}n(t),x.bumpVerticalPos(i)}f(lt,"adjustLoopHeightForWrap");function ts(e,t,a,r,n,i,o){function h(T,E){T.x{I.add(b.from),I.add(b.to)}),R=R.filter(b=>I.has(b))}jr(s,T,E,R,0,m,!1);let D=await hs(m,T,k,r);Y.insertArrowHead(s),Y.insertArrowCrossHead(s),Y.insertArrowFilledHead(s),Y.insertSequenceNumber(s),Y.insertSolidTopArrowHead(s),Y.insertSolidBottomArrowHead(s),Y.insertStickTopArrowHead(s),Y.insertStickBottomArrowHead(s);function v(I,b){let ot=x.endActivation(I);ot.starty+18>b&&(ot.starty=b-6,b+=12),Y.drawActivation(s,ot,b,d,Ft(I.from).length),x.insert(ot.startx,b-10,ot.stopx,b)}f(v,"activeEnd");let W=1,K=1,z=[],X=[],J=0;for(let I of m){let b,ot,ct;switch(I.type){case r.db.LINETYPE.NOTE:x.resetVerticalPos(),ot=I.noteModel,await Jr(s,ot);break;case r.db.LINETYPE.ACTIVE_START:x.newActivation(I,s,T);break;case r.db.LINETYPE.CENTRAL_CONNECTION:x.newActivation(I,s,T);break;case r.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:x.newActivation(I,s,T);break;case r.db.LINETYPE.ACTIVE_END:v(I,x.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:lt(D,I,d.boxMargin,d.boxMargin+d.boxTextMargin,M=>x.newLoop(M));break;case r.db.LINETYPE.LOOP_END:b=x.endLoop(),await Y.drawLoop(s,b,"loop",d),x.bumpVerticalPos(b.stopy-x.getVerticalPos()),x.models.addLoop(b);break;case r.db.LINETYPE.RECT_START:lt(D,I,d.boxMargin,d.boxMargin,M=>x.newLoop(void 0,M.message));break;case r.db.LINETYPE.RECT_END:b=x.endLoop(),X.push(b),x.models.addLoop(b),x.bumpVerticalPos(b.stopy-x.getVerticalPos());break;case r.db.LINETYPE.OPT_START:lt(D,I,d.boxMargin,d.boxMargin+d.boxTextMargin,M=>x.newLoop(M));break;case r.db.LINETYPE.OPT_END:b=x.endLoop(),await Y.drawLoop(s,b,"opt",d),x.bumpVerticalPos(b.stopy-x.getVerticalPos()),x.models.addLoop(b);break;case r.db.LINETYPE.ALT_START:lt(D,I,d.boxMargin,d.boxMargin+d.boxTextMargin,M=>x.newLoop(M));break;case r.db.LINETYPE.ALT_ELSE:lt(D,I,d.boxMargin+d.boxTextMargin,d.boxMargin,M=>x.addSectionToLoop(M));break;case r.db.LINETYPE.ALT_END:b=x.endLoop(),await Y.drawLoop(s,b,"alt",d),x.bumpVerticalPos(b.stopy-x.getVerticalPos()),x.models.addLoop(b);break;case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:lt(D,I,d.boxMargin,d.boxMargin+d.boxTextMargin,M=>x.newLoop(M)),x.saveVerticalPos();break;case r.db.LINETYPE.PAR_AND:lt(D,I,d.boxMargin+d.boxTextMargin,d.boxMargin,M=>x.addSectionToLoop(M));break;case r.db.LINETYPE.PAR_END:b=x.endLoop(),await Y.drawLoop(s,b,"par",d),x.bumpVerticalPos(b.stopy-x.getVerticalPos()),x.models.addLoop(b);break;case r.db.LINETYPE.AUTONUMBER:W=I.message.start||W,K=I.message.step||K,I.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:lt(D,I,d.boxMargin,d.boxMargin+d.boxTextMargin,M=>x.newLoop(M));break;case r.db.LINETYPE.CRITICAL_OPTION:lt(D,I,d.boxMargin+d.boxTextMargin,d.boxMargin,M=>x.addSectionToLoop(M));break;case r.db.LINETYPE.CRITICAL_END:b=x.endLoop(),await Y.drawLoop(s,b,"critical",d),x.bumpVerticalPos(b.stopy-x.getVerticalPos()),x.models.addLoop(b);break;case r.db.LINETYPE.BREAK_START:lt(D,I,d.boxMargin,d.boxMargin+d.boxTextMargin,M=>x.newLoop(M));break;case r.db.LINETYPE.BREAK_END:b=x.endLoop(),await Y.drawLoop(s,b,"break",d),x.bumpVerticalPos(b.stopy-x.getVerticalPos()),x.models.addLoop(b);break;default:try{ct=I.msgModel,ct.starty=x.getVerticalPos(),ct.sequenceIndex=W,ct.sequenceVisible=r.db.showSequenceNumbers();let M=await Qr(s,ct);ts(I,ct,M,J,T,E,g),z.push({messageModel:ct,lineStartY:M,msg:I}),x.models.addMessage(ct)}catch(M){G.error("error while drawing message",M)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.SOLID_TOP,r.db.LINETYPE.SOLID_BOTTOM,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.SOLID_TOP_DOTTED,r.db.LINETYPE.SOLID_BOTTOM_DOTTED,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(I.type)&&(W=W+K),J++}G.debug("createdActors",E),G.debug("destroyedActors",g),await ne(s,T,R,!1);for(let I of z)await $r(s,I.messageModel,I.lineStartY,r,I.msg);d.mirrorActors&&await ne(s,T,R,!0),X.forEach(I=>Y.drawBackgroundRect(s,I)),se(s,T,R,d);for(let I of x.models.boxes){I.height=x.getVerticalPos()-I.y,x.insert(I.x,I.y,I.x+I.width,I.height);let b=d.boxMargin*2;I.startx=I.x-b,I.starty=I.y-b*.25,I.stopx=I.startx+I.width+2*b,I.stopy=I.starty+I.height+b*.75,I.stroke="rgb(0,0,0, 0.5)",Y.drawBox(s,I,d)}w&&x.bumpVerticalPos(d.boxMargin);let U=ir(s,T,R,l),{bounds:C}=x.getBounds();C.startx===void 0&&(C.startx=0),C.starty===void 0&&(C.starty=0),C.stopx===void 0&&(C.stopx=0),C.stopy===void 0&&(C.stopy=0);let j=C.stopy-C.starty;j{let o=mt(d),h=i.actorKeys.reduce((E,g)=>E+=e.get(g).width+(e.get(g).margin||0),0),l=d.boxMargin*8;h+=l,h-=2*d.boxTextMargin,i.wrap&&(i.name=F.wrapLabel(i.name,h-2*d.wrapPadding,o));let s=F.calculateTextDimensions(i.name,o);n=L.getMax(s.height,n);let T=L.getMax(h,s.width+2*d.wrapPadding);if(i.margin=d.boxTextMargin,hi.textMaxHeight=n),L.getMax(r,d.height)}f(as,"calculateActorMargins");var ns=f(async function(e,t,a){let r=t.get(e.from),n=t.get(e.to),i=r.x,o=n.x,h=e.wrap&&e.message,l=H(e.message)?await _t(e.message,Q()):F.calculateTextDimensions(h?F.wrapLabel(e.message,d.width,Rt(d)):e.message,Rt(d)),s={width:h?d.width:L.getMax(d.width,l.width+2*d.noteMargin),height:0,startx:r.x,stopx:0,starty:0,stopy:0,message:e.message};return e.placement===a.db.PLACEMENT.RIGHTOF?(s.width=h?L.getMax(d.width,l.width):L.getMax(r.width/2+n.width/2,l.width+2*d.noteMargin),s.startx=i+(r.width+d.actorMargin)/2):e.placement===a.db.PLACEMENT.LEFTOF?(s.width=h?L.getMax(d.width,l.width+2*d.noteMargin):L.getMax(r.width/2+n.width/2,l.width+2*d.noteMargin),s.startx=i-s.width+(r.width-d.actorMargin)/2):e.to===e.from?(l=F.calculateTextDimensions(h?F.wrapLabel(e.message,L.getMax(d.width,r.width),Rt(d)):e.message,Rt(d)),s.width=h?L.getMax(d.width,r.width):L.getMax(r.width,d.width,l.width+2*d.noteMargin),s.startx=i+(r.width-s.width)/2):(s.width=Math.abs(i+r.width/2-(o+n.width/2))+d.actorMargin,s.startx=i2,E=f(m=>h?-m:m,"adjustValue");e.from===e.to?s=l:(e.activate&&!T&&(s+=E(d.activationWidth/2-1)),[a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN,a.db.LINETYPE.STICK_TOP,a.db.LINETYPE.STICK_BOTTOM,a.db.LINETYPE.STICK_TOP_DOTTED,a.db.LINETYPE.STICK_BOTTOM_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,a.db.LINETYPE.STICK_ARROW_TOP_REVERSE,a.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,a.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,a.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)||(s+=E(3)),[a.db.LINETYPE.BIDIRECTIONAL_SOLID,a.db.LINETYPE.BIDIRECTIONAL_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)&&(l-=E(3)));let g=[r,n,i,o],u=Math.abs(l-s);e.wrap&&e.message&&(e.message=F.wrapLabel(e.message,L.getMax(u+2*d.wrapPadding,d.width),mt(d)));let R=F.calculateTextDimensions(e.message,mt(d));return{width:L.getMax(e.wrap?0:R.width+2*d.wrapPadding,u+2*d.wrapPadding,d.width),height:0,startx:l,stopx:s,starty:0,stopy:0,message:e.message,type:e.type,wrap:e.wrap,fromBounds:Math.min.apply(null,g),toBounds:Math.max.apply(null,g)}},"buildMessageModel"),hs=f(async function(e,t,a,r){let n={},i=[],o,h,l;for(let s of e){switch(s.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:i.push({id:s.id,msg:s.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:s.message&&(o=i.pop(),n[o.id]=o,n[s.id]=o,i.push(o));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:o=i.pop(),n[o.id]=o;break;case r.db.LINETYPE.ACTIVE_START:{let E=t.get(s.from?s.from:s.to.actor),g=Ft(s.from?s.from:s.to.actor).length,u=E.x+E.width/2+(g-1)*d.activationWidth/2,R={startx:u,stopx:u+d.activationWidth,actor:s.from,enabled:!0};x.activations.push(R)}break;case r.db.LINETYPE.ACTIVE_END:{let E=x.activations.map(g=>g.actor).lastIndexOf(s.from);x.activations.splice(E,1).splice(0,1)}break}s.placement!==void 0?(h=await ns(s,t,r),s.noteModel=h,i.forEach(E=>{o=E,o.from=L.getMin(o.from,h.startx),o.to=L.getMax(o.to,h.startx+h.width),o.width=L.getMax(o.width,Math.abs(o.from-o.to))-d.labelBoxWidth})):(l=ds(s,t,r),s.msgModel=l,l.startx&&l.stopx&&i.length>0&&i.forEach(E=>{if(o=E,l.startx===l.stopx){let g=t.get(s.from),u=t.get(s.to);o.from=L.getMin(g.x-l.width/2,g.x-g.width/2,o.from),o.to=L.getMax(u.x+l.width/2,u.x+g.width/2,o.to),o.width=L.getMax(o.width,Math.abs(o.to-o.from))-d.labelBoxWidth}else o.from=L.getMin(l.startx,o.from),o.to=L.getMax(l.stopx,o.to),o.width=L.getMax(o.width,l.width)-d.labelBoxWidth}))}return x.activations=[],G.debug("Loop type widths:",n),n},"calculateLoopBounds"),lr={bounds:x,drawActors:ne,drawActorsPopup:ir,setConf:or,draw:es};var Xs={parser:je,get db(){return new vt},renderer:lr,styles:tr,init:f(e=>{e.sequence||(e.sequence={}),e.wrap&&(e.sequence.wrap=e.wrap,Ue({sequence:{wrap:e.wrap}}))},"init")};export{Xs as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-PYXOKC54.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-PYXOKC54.mjs.map deleted file mode 100644 index 939c9a0..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-PYXOKC54.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/sequence/parser/sequenceDiagram.jison", "../../../src/diagrams/sequence/sequenceDb.ts", "../../../src/diagrams/sequence/styles.js", "../../../src/diagrams/sequence/svgDraw.js", "../../../src/diagrams/sequence/sequenceRenderer.ts", "../../../src/diagrams/sequence/sequenceDiagram.ts"], - "sourcesContent": ["/* 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,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,12],$V7=[1,14],$V8=[1,15],$V9=[1,17],$Va=[1,18],$Vb=[1,19],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,29],$Vh=[1,30],$Vi=[1,31],$Vj=[1,32],$Vk=[1,33],$Vl=[1,34],$Vm=[1,35],$Vn=[1,36],$Vo=[1,37],$Vp=[1,38],$Vq=[1,39],$Vr=[1,40],$Vs=[1,42],$Vt=[1,43],$Vu=[1,44],$Vv=[1,45],$Vw=[1,46],$Vx=[1,47],$Vy=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],$Vz=[1,74],$VA=[1,80],$VB=[1,81],$VC=[1,82],$VD=[1,83],$VE=[1,84],$VF=[1,85],$VG=[1,86],$VH=[1,87],$VI=[1,88],$VJ=[1,89],$VK=[1,90],$VL=[1,91],$VM=[1,92],$VN=[1,93],$VO=[1,94],$VP=[1,95],$VQ=[1,96],$VR=[1,97],$VS=[1,98],$VT=[1,99],$VU=[1,100],$VV=[1,101],$VW=[1,102],$VX=[1,103],$VY=[1,104],$VZ=[1,105],$V_=[2,78],$V$=[4,5,17,51,53,54],$V01=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],$V11=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],$V21=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],$V31=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],$V41=[5,52],$V51=[70,71,72,73],$V61=[1,151];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"INVALID\":10,\"box_section\":11,\"box_line\":12,\"participant_statement\":13,\"create\":14,\"box\":15,\"restOfLine\":16,\"end\":17,\"signal\":18,\"autonumber\":19,\"NUM\":20,\"off\":21,\"activate\":22,\"actor\":23,\"deactivate\":24,\"note_statement\":25,\"links_statement\":26,\"link_statement\":27,\"properties_statement\":28,\"details_statement\":29,\"title\":30,\"legacy_title\":31,\"acc_title\":32,\"acc_title_value\":33,\"acc_descr\":34,\"acc_descr_value\":35,\"acc_descr_multiline_value\":36,\"loop\":37,\"rect\":38,\"opt\":39,\"alt\":40,\"else_sections\":41,\"par\":42,\"par_sections\":43,\"par_over\":44,\"critical\":45,\"option_sections\":46,\"break\":47,\"option\":48,\"and\":49,\"else\":50,\"participant\":51,\"AS\":52,\"participant_actor\":53,\"destroy\":54,\"actor_with_config\":55,\"note\":56,\"placement\":57,\"text2\":58,\"over\":59,\"actor_pair\":60,\"links\":61,\"link\":62,\"properties\":63,\"details\":64,\"spaceList\":65,\",\":66,\"left_of\":67,\"right_of\":68,\"signaltype\":69,\"+\":70,\"-\":71,\"()\":72,\"ACTOR\":73,\"config_object\":74,\"CONFIG_START\":75,\"CONFIG_CONTENT\":76,\"CONFIG_END\":77,\"SOLID_OPEN_ARROW\":78,\"DOTTED_OPEN_ARROW\":79,\"SOLID_ARROW\":80,\"SOLID_ARROW_TOP\":81,\"SOLID_ARROW_BOTTOM\":82,\"STICK_ARROW_TOP\":83,\"STICK_ARROW_BOTTOM\":84,\"SOLID_ARROW_TOP_DOTTED\":85,\"SOLID_ARROW_BOTTOM_DOTTED\":86,\"STICK_ARROW_TOP_DOTTED\":87,\"STICK_ARROW_BOTTOM_DOTTED\":88,\"SOLID_ARROW_TOP_REVERSE\":89,\"SOLID_ARROW_BOTTOM_REVERSE\":90,\"STICK_ARROW_TOP_REVERSE\":91,\"STICK_ARROW_BOTTOM_REVERSE\":92,\"SOLID_ARROW_TOP_REVERSE_DOTTED\":93,\"SOLID_ARROW_BOTTOM_REVERSE_DOTTED\":94,\"STICK_ARROW_TOP_REVERSE_DOTTED\":95,\"STICK_ARROW_BOTTOM_REVERSE_DOTTED\":96,\"BIDIRECTIONAL_SOLID_ARROW\":97,\"DOTTED_ARROW\":98,\"BIDIRECTIONAL_DOTTED_ARROW\":99,\"SOLID_CROSS\":100,\"DOTTED_CROSS\":101,\"SOLID_POINT\":102,\"DOTTED_POINT\":103,\"TXT\":104,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",6:\"SD\",10:\"INVALID\",14:\"create\",15:\"box\",16:\"restOfLine\",17:\"end\",19:\"autonumber\",20:\"NUM\",21:\"off\",22:\"activate\",24:\"deactivate\",30:\"title\",31:\"legacy_title\",32:\"acc_title\",33:\"acc_title_value\",34:\"acc_descr\",35:\"acc_descr_value\",36:\"acc_descr_multiline_value\",37:\"loop\",38:\"rect\",39:\"opt\",40:\"alt\",42:\"par\",44:\"par_over\",45:\"critical\",47:\"break\",48:\"option\",49:\"and\",50:\"else\",51:\"participant\",52:\"AS\",53:\"participant_actor\",54:\"destroy\",56:\"note\",59:\"over\",61:\"links\",62:\"link\",63:\"properties\",64:\"details\",66:\",\",67:\"left_of\",68:\"right_of\",70:\"+\",71:\"-\",72:\"()\",73:\"ACTOR\",75:\"CONFIG_START\",76:\"CONFIG_CONTENT\",77:\"CONFIG_END\",78:\"SOLID_OPEN_ARROW\",79:\"DOTTED_OPEN_ARROW\",80:\"SOLID_ARROW\",81:\"SOLID_ARROW_TOP\",82:\"SOLID_ARROW_BOTTOM\",83:\"STICK_ARROW_TOP\",84:\"STICK_ARROW_BOTTOM\",85:\"SOLID_ARROW_TOP_DOTTED\",86:\"SOLID_ARROW_BOTTOM_DOTTED\",87:\"STICK_ARROW_TOP_DOTTED\",88:\"STICK_ARROW_BOTTOM_DOTTED\",89:\"SOLID_ARROW_TOP_REVERSE\",90:\"SOLID_ARROW_BOTTOM_REVERSE\",91:\"STICK_ARROW_TOP_REVERSE\",92:\"STICK_ARROW_BOTTOM_REVERSE\",93:\"SOLID_ARROW_TOP_REVERSE_DOTTED\",94:\"SOLID_ARROW_BOTTOM_REVERSE_DOTTED\",95:\"STICK_ARROW_TOP_REVERSE_DOTTED\",96:\"STICK_ARROW_BOTTOM_REVERSE_DOTTED\",97:\"BIDIRECTIONAL_SOLID_ARROW\",98:\"DOTTED_ARROW\",99:\"BIDIRECTIONAL_DOTTED_ARROW\",100:\"SOLID_CROSS\",101:\"DOTTED_CROSS\",102:\"SOLID_POINT\",103:\"DOTTED_POINT\",104:\"TXT\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 4: case 10:\n this.$ = [] \nbreak;\ncase 5: case 11:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 6: case 7: case 12: case 13:\n this.$ = $$[$0] \nbreak;\ncase 8: case 9: case 14:\n this.$=[]; \nbreak;\ncase 16:\n$$[$0].type='createParticipant'; this.$=$$[$0];\nbreak;\ncase 17:\n\n\t\t$$[$0-1].unshift({type: 'boxStart', boxData:yy.parseBoxData($$[$0-2]) });\n\t\t$$[$0-1].push({type: 'boxEnd', boxText:$$[$0-2]});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 19:\n this.$= {type:'sequenceIndex',sequenceIndex: Number($$[$0-2]), sequenceIndexStep:Number($$[$0-1]), sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 20:\n this.$ = {type:'sequenceIndex',sequenceIndex: Number($$[$0-1]), sequenceIndexStep:1, sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 21:\n this.$ = {type:'sequenceIndex', sequenceVisible:false, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 22:\nthis.$ = {type:'sequenceIndex', sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER}; \nbreak;\ncase 23:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1].actor};\nbreak;\ncase 24:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1].actor};\nbreak;\ncase 30:\nyy.setDiagramTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 31:\nyy.setDiagramTitle($$[$0].substring(7));this.$=$$[$0].substring(7);\nbreak;\ncase 32:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 33: case 34:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 35:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 36:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 37:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 38:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 39:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 40:\n\n\t\t// Parallel (overlapped) start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_OVER_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 41:\n\n\t\t// critical start\n\t\t$$[$0-1].unshift({type: 'criticalStart', criticalText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.CRITICAL_START});\n\t\t// Content in critical is already in $$[$0-1]\n\t\t// critical end\n\t\t$$[$0-1].push({type: 'criticalEnd', signalType: yy.LINETYPE.CRITICAL_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 42:\n\n\t\t$$[$0-1].unshift({type: 'breakStart', breakText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.BREAK_START});\n\t\t$$[$0-1].push({type: 'breakEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.BREAK_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 44:\n this.$ = $$[$0-3].concat([{type: 'option', optionText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.CRITICAL_OPTION}, $$[$0]]); \nbreak;\ncase 46:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 48:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 49:\n$$[$0-3].draw='participant'; $$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 50:\n$$[$0-1].draw='participant'; $$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 51:\n$$[$0-3].draw='actor'; $$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 52: case 57:\n$$[$0-1].draw='actor'; $$[$0-1].type='addParticipant'; this.$=$$[$0-1];\nbreak;\ncase 53:\n$$[$0-1].type='destroyParticipant'; this.$=$$[$0-1];\nbreak;\ncase 54:\n$$[$0-3].draw='participant'; $$[$0-3].type='addParticipant'; $$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 55:\n$$[$0-1].draw='participant'; $$[$0-1].type='addParticipant'; this.$=$$[$0-1];\nbreak;\ncase 56:\n$$[$0-3].draw='actor'; $$[$0-3].type='addParticipant'; $$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 58:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 59:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 60:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 61:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 62:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 63:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 66:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 67:\n this.$ = $$[$0]; \nbreak;\ncase 68:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 69:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 70:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0], activate: true},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1].actor}\n\t ]\nbreak;\ncase 71:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4].actor}\n\t ]\nbreak;\ncase 72:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0], activate: true, centralConnection: yy.LINETYPE.CENTRAL_CONNECTION},\n\t {type: 'centralConnection', signalType: yy.LINETYPE.CENTRAL_CONNECTION, actor: $$[$0-1].actor, }\n\t ]\nbreak;\ncase 73:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0], activate: false, centralConnection: yy.LINETYPE.CENTRAL_CONNECTION_REVERSE},\n\t {type: 'centralConnectionReverse', signalType: yy.LINETYPE.CENTRAL_CONNECTION_REVERSE, actor: $$[$0-4].actor}\n\t ]\nbreak;\ncase 74:\n this.$ = [$$[$0-5],$$[$0-1],{type: 'addMessage', from:$$[$0-5].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0], activate: true, centralConnection: yy.LINETYPE.CENTRAL_CONNECTION_DUAL},\n\t \t\t\t {type: 'centralConnection', signalType: yy.LINETYPE.CENTRAL_CONNECTION, actor: $$[$0-1].actor, },\n\t\t\t\t {type: 'centralConnectionReverse', signalType: yy.LINETYPE.CENTRAL_CONNECTION_REVERSE, actor: $$[$0-5].actor}\n\t ]\nbreak;\ncase 75:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 76:\n\n this.$ = {\n type: 'addParticipant',\n actor: $$[$0-1],\n config: $$[$0]\n };\n \nbreak;\ncase 77:\n\n this.$ = $$[$0-1].trim();\n \nbreak;\ncase 78:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 79:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 80:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 81:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 82:\n this.$ = yy.LINETYPE.SOLID_TOP; \nbreak;\ncase 83:\n this.$ = yy.LINETYPE.SOLID_BOTTOM; \nbreak;\ncase 84:\n this.$ = yy.LINETYPE.STICK_TOP; \nbreak;\ncase 85:\n this.$ = yy.LINETYPE.STICK_BOTTOM; \nbreak;\ncase 86:\n this.$ = yy.LINETYPE.SOLID_TOP_DOTTED; \nbreak;\ncase 87:\n this.$ = yy.LINETYPE.SOLID_BOTTOM_DOTTED; \nbreak;\ncase 88:\n this.$ = yy.LINETYPE.STICK_TOP_DOTTED; \nbreak;\ncase 89:\n this.$ = yy.LINETYPE.STICK_BOTTOM_DOTTED; \nbreak;\ncase 90:\n this.$ = yy.LINETYPE.SOLID_ARROW_TOP_REVERSE; \nbreak;\ncase 91:\n this.$ = yy.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE; \nbreak;\ncase 92:\n this.$ = yy.LINETYPE.STICK_ARROW_TOP_REVERSE; \nbreak;\ncase 93:\n this.$ = yy.LINETYPE.STICK_ARROW_BOTTOM_REVERSE; \nbreak;\ncase 94:\n this.$ = yy.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED; \nbreak;\ncase 95:\n this.$ = yy.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED; \nbreak;\ncase 96:\n this.$ = yy.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED; \nbreak;\ncase 97:\n this.$ = yy.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED; \nbreak;\ncase 98:\n this.$ = yy.LINETYPE.BIDIRECTIONAL_SOLID; \nbreak;\ncase 99:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 100:\n this.$ = yy.LINETYPE.BIDIRECTIONAL_DOTTED; \nbreak;\ncase 101:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 102:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 103:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 104:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 105:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},o($Vy,[2,5]),{9:48,13:13,14:$V7,15:$V8,18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},o($Vy,[2,7]),o($Vy,[2,8]),o($Vy,[2,9]),o($Vy,[2,15]),{13:49,51:$Vp,53:$Vq,54:$Vr},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:$Vx},{23:56,73:$Vx},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},o($Vy,[2,30]),o($Vy,[2,31]),{33:[1,62]},{35:[1,63]},o($Vy,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:$Vz},{23:75,55:76,73:$Vz},{23:77,73:$Vx},{69:78,72:[1,79],78:$VA,79:$VB,80:$VC,81:$VD,82:$VE,83:$VF,84:$VG,85:$VH,86:$VI,87:$VJ,88:$VK,89:$VL,90:$VM,91:$VN,92:$VO,93:$VP,94:$VQ,95:$VR,96:$VS,97:$VT,98:$VU,99:$VV,100:$VW,101:$VX,102:$VY,103:$VZ},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:$Vx},{23:111,73:$Vx},{23:112,73:$Vx},{23:113,73:$Vx},o([5,66,72,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,103,104],$V_),o($Vy,[2,6]),o($Vy,[2,16]),o($V$,[2,10],{11:114}),o($Vy,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},o($Vy,[2,22]),{5:[1,118]},{5:[1,119]},o($Vy,[2,25]),o($Vy,[2,26]),o($Vy,[2,27]),o($Vy,[2,28]),o($Vy,[2,29]),o($Vy,[2,32]),o($Vy,[2,33]),o($V01,$V3,{7:120}),o($V01,$V3,{7:121}),o($V01,$V3,{7:122}),o($V11,$V3,{41:123,7:124}),o($V21,$V3,{43:125,7:126}),o($V21,$V3,{7:126,43:127}),o($V31,$V3,{46:128,7:129}),o($V01,$V3,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},o($V41,$V_,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:$Vx},{69:146,78:$VA,79:$VB,80:$VC,81:$VD,82:$VE,83:$VF,84:$VG,85:$VH,86:$VI,87:$VJ,88:$VK,89:$VL,90:$VM,91:$VN,92:$VO,93:$VP,94:$VQ,95:$VR,96:$VS,97:$VT,98:$VU,99:$VV,100:$VW,101:$VX,102:$VY,103:$VZ},o($V51,[2,79]),o($V51,[2,80]),o($V51,[2,81]),o($V51,[2,82]),o($V51,[2,83]),o($V51,[2,84]),o($V51,[2,85]),o($V51,[2,86]),o($V51,[2,87]),o($V51,[2,88]),o($V51,[2,89]),o($V51,[2,90]),o($V51,[2,91]),o($V51,[2,92]),o($V51,[2,93]),o($V51,[2,94]),o($V51,[2,95]),o($V51,[2,96]),o($V51,[2,97]),o($V51,[2,98]),o($V51,[2,99]),o($V51,[2,100]),o($V51,[2,101]),o($V51,[2,102]),o($V51,[2,103]),o($V51,[2,104]),{23:147,73:$Vx},{23:149,60:148,73:$Vx},{73:[2,68]},{73:[2,69]},{58:150,104:$V61},{58:152,104:$V61},{58:153,104:$V61},{58:154,104:$V61},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:$Vp,53:$Vq,54:$Vr},{5:[1,160]},o($Vy,[2,20]),o($Vy,[2,21]),o($Vy,[2,23]),o($Vy,[2,24]),{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[1,161],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[1,162],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[1,163],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{17:[1,164]},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[2,47],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,50:[1,165],51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{17:[1,166]},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[2,45],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,49:[1,167],51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{17:[1,168]},{17:[1,169]},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[2,43],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,48:[1,170],51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[1,171],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{16:[1,172]},o($Vy,[2,50]),{16:[1,173]},o($Vy,[2,55]),o($V41,[2,76]),{76:[1,174]},{16:[1,175]},o($Vy,[2,52]),{16:[1,176]},o($Vy,[2,57]),o($Vy,[2,53]),{23:177,73:$Vx},{23:178,73:$Vx},{23:179,73:$Vx},{58:180,104:$V61},{23:181,72:[1,182],73:$Vx},{58:183,104:$V61},{58:184,104:$V61},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},o($Vy,[2,17]),o($V$,[2,11]),{13:186,51:$Vp,53:$Vq,54:$Vr},o($V$,[2,13]),o($V$,[2,14]),o($Vy,[2,19]),o($Vy,[2,35]),o($Vy,[2,36]),o($Vy,[2,37]),o($Vy,[2,38]),{16:[1,187]},o($Vy,[2,39]),{16:[1,188]},o($Vy,[2,40]),o($Vy,[2,41]),{16:[1,189]},o($Vy,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:$V61},{58:196,104:$V61},{58:197,104:$V61},{5:[2,75]},{58:198,104:$V61},{23:199,73:$Vx},{5:[2,58]},{5:[2,59]},{23:200,73:$Vx},o($V$,[2,12]),o($V11,$V3,{7:124,41:201}),o($V21,$V3,{7:126,43:202}),o($V31,$V3,{7:129,46:203}),o($Vy,[2,49]),o($Vy,[2,54]),o($V41,[2,77]),o($Vy,[2,51]),o($Vy,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:$V61},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],\ndefaultActions: {5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},\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 5;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip same-line whitespace */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:return 20;\nbreak;\ncase 7: this.begin('CONFIG'); return 75; \nbreak;\ncase 8: return 76; \nbreak;\ncase 9: this.popState(); this.begin('ALIAS'); return 77; \nbreak;\ncase 10: this.popState(); this.popState(); return 77; \nbreak;\ncase 11: yy_.yytext = yy_.yytext.trim(); return 73; \nbreak;\ncase 12: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 73; \nbreak;\ncase 13: yy_.yytext = yy_.yytext.trim(); this.popState(); return 73; \nbreak;\ncase 14: this.popState(); return 10; \nbreak;\ncase 15: this.begin('LINE'); return 15; \nbreak;\ncase 16: this.begin('ID'); return 51; \nbreak;\ncase 17: this.begin('ID'); return 53; \nbreak;\ncase 18:return 14;\nbreak;\ncase 19: this.begin('ID'); return 54; \nbreak;\ncase 20: this.popState(); this.popState(); this.begin('LINE'); return 52; \nbreak;\ncase 21: this.popState(); this.popState(); return 5; \nbreak;\ncase 22: this.begin('LINE'); return 37; \nbreak;\ncase 23: this.begin('LINE'); return 38; \nbreak;\ncase 24: this.begin('LINE'); return 39; \nbreak;\ncase 25: this.begin('LINE'); return 40; \nbreak;\ncase 26: this.begin('LINE'); return 50; \nbreak;\ncase 27: this.begin('LINE'); return 42; \nbreak;\ncase 28: this.begin('LINE'); return 44; \nbreak;\ncase 29: this.begin('LINE'); return 49; \nbreak;\ncase 30: this.begin('LINE'); return 45; \nbreak;\ncase 31: this.begin('LINE'); return 48; \nbreak;\ncase 32: this.begin('LINE'); return 47; \nbreak;\ncase 33: this.popState(); return 16; \nbreak;\ncase 34:return 17;\nbreak;\ncase 35:return 67;\nbreak;\ncase 36:return 68;\nbreak;\ncase 37:return 61;\nbreak;\ncase 38:return 62;\nbreak;\ncase 39:return 63;\nbreak;\ncase 40:return 64;\nbreak;\ncase 41:return 59;\nbreak;\ncase 42:return 56;\nbreak;\ncase 43: this.begin('ID'); return 22; \nbreak;\ncase 44: this.begin('ID'); return 24; \nbreak;\ncase 45:return 30;\nbreak;\ncase 46:return 31;\nbreak;\ncase 47: this.begin(\"acc_title\");return 32; \nbreak;\ncase 48: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 49: this.begin(\"acc_descr\");return 34; \nbreak;\ncase 50: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 51: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 52: this.popState(); \nbreak;\ncase 53:return \"acc_descr_multiline_value\";\nbreak;\ncase 54:return 6;\nbreak;\ncase 55:return 19;\nbreak;\ncase 56:return 21;\nbreak;\ncase 57:return 66;\nbreak;\ncase 58:return 5;\nbreak;\ncase 59: yy_.yytext = yy_.yytext.trim(); return 73; \nbreak;\ncase 60:return 80;\nbreak;\ncase 61:return 97;\nbreak;\ncase 62:return 98;\nbreak;\ncase 63:return 99;\nbreak;\ncase 64:return 78;\nbreak;\ncase 65:return 79;\nbreak;\ncase 66:return 100;\nbreak;\ncase 67:return 101;\nbreak;\ncase 68:return 102;\nbreak;\ncase 69:return 103;\nbreak;\ncase 70:return 85;\nbreak;\ncase 71:return 86;\nbreak;\ncase 72:return 87;\nbreak;\ncase 73:return 88;\nbreak;\ncase 74:return 93;\nbreak;\ncase 75:return 94;\nbreak;\ncase 76:return 95;\nbreak;\ncase 77:return 96;\nbreak;\ncase 78:return 81;\nbreak;\ncase 79:return 82;\nbreak;\ncase 80:return 83;\nbreak;\ncase 81:return 84;\nbreak;\ncase 82:return 89;\nbreak;\ncase 83:return 90;\nbreak;\ncase 84:return 91;\nbreak;\ncase 85:return 92;\nbreak;\ncase 86:return 104;\nbreak;\ncase 87:return 104;\nbreak;\ncase 88:return 70;\nbreak;\ncase 89:return 71;\nbreak;\ncase 90:return 72;\nbreak;\ncase 91:return 5;\nbreak;\ncase 92:return 10;\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[0-9]+(?=[ \\n]+))/i,/^(?:@\\{)/i,/^(?:[^\\}]+)/i,/^(?:\\}(?=\\s+as\\s))/i,/^(?:\\})/i,/^(?:[^\\<->\\->:\\n,;@\\s]+(?=@\\{))/i,/^(?:[^<>:\\n,;@\\s]+(?=\\s+as\\s))/i,/^(?:[^<>:\\n,;@]+(?=\\s*[\\n;#]|$))/i,/^(?:[^<>:\\n,;@]*<[^\\n]*)/i,/^(?:box\\b)/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:create\\b)/i,/^(?:destroy\\b)/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:par_over\\b)/i,/^(?:and\\b)/i,/^(?:critical\\b)/i,/^(?:option\\b)/i,/^(?:break\\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\\s[^#\\n;]+)/i,/^(?:title:\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:off\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\/\\\\\\+\\()\\+<\\->\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)|-\\|\\\\|-\\\\|-\\/|-\\/\\/|-\\|\\/|\\/\\|-|\\\\\\|-|\\/\\/-|\\\\\\\\-|\\/\\|-|--\\|\\\\|--|\\(\\)))[\\-]*[^\\+<\\->\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?:--\\|\\\\)/i,/^(?:--\\|\\/)/i,/^(?:--\\\\\\\\)/i,/^(?:--\\/\\/)/i,/^(?:\\/\\|--)/i,/^(?:\\\\\\|--)/i,/^(?:\\/\\/--)/i,/^(?:\\\\\\\\--)/i,/^(?:-\\|\\\\)/i,/^(?:-\\|\\/)/i,/^(?:-\\\\\\\\)/i,/^(?:-\\/\\/)/i,/^(?:\\/\\|-)/i,/^(?:\\\\\\|-)/i,/^(?:\\/\\/-)/i,/^(?:\\\\\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]*)/i,/^(?::)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:\\(\\))/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[52,53],\"inclusive\":false},\"acc_descr\":{\"rules\":[50],\"inclusive\":false},\"acc_title\":{\"rules\":[48],\"inclusive\":false},\"ID\":{\"rules\":[2,3,7,11,12,13,14],\"inclusive\":false},\"ALIAS\":{\"rules\":[2,3,20,21],\"inclusive\":false},\"LINE\":{\"rules\":[2,3,33],\"inclusive\":false},\"CONFIG\":{\"rules\":[8,9,10],\"inclusive\":false},\"CONFIG_DATA\":{\"rules\":[],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,4,5,6,15,16,17,18,19,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,51,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],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport * as yaml from 'js-yaml';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { ImperativeState } from '../../utils/imperativeState.js';\nimport { sanitizeText } from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { Actor, AddMessageParams, Box, Message, Note } from './types.js';\nimport type { ParticipantMetaData } from '../../types.js';\n\ninterface SequenceState {\n prevActor?: string;\n actors: Map;\n createdActors: Map;\n destroyedActors: Map;\n boxes: Box[];\n messages: Message[];\n notes: Note[];\n sequenceNumbersEnabled: boolean;\n wrapEnabled?: boolean;\n currentBox?: Box;\n lastCreated?: Actor;\n lastDestroyed?: Actor;\n}\n\nconst LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n CRITICAL_START: 27,\n CRITICAL_OPTION: 28,\n CRITICAL_END: 29,\n BREAK_START: 30,\n BREAK_END: 31,\n PAR_OVER_START: 32,\n BIDIRECTIONAL_SOLID: 33,\n BIDIRECTIONAL_DOTTED: 34,\n\n SOLID_TOP: 41,\n SOLID_BOTTOM: 42,\n STICK_TOP: 43,\n STICK_BOTTOM: 44,\n\n SOLID_ARROW_TOP_REVERSE: 45,\n SOLID_ARROW_BOTTOM_REVERSE: 46,\n STICK_ARROW_TOP_REVERSE: 47,\n STICK_ARROW_BOTTOM_REVERSE: 48,\n\n SOLID_TOP_DOTTED: 51,\n SOLID_BOTTOM_DOTTED: 52,\n STICK_TOP_DOTTED: 53,\n STICK_BOTTOM_DOTTED: 54,\n\n SOLID_ARROW_TOP_REVERSE_DOTTED: 55,\n SOLID_ARROW_BOTTOM_REVERSE_DOTTED: 56,\n STICK_ARROW_TOP_REVERSE_DOTTED: 57,\n STICK_ARROW_BOTTOM_REVERSE_DOTTED: 58,\n\n CENTRAL_CONNECTION: 59,\n CENTRAL_CONNECTION_REVERSE: 60,\n CENTRAL_CONNECTION_DUAL: 61,\n} as const;\n\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1,\n} as const;\n\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2,\n} as const;\n\nexport const PARTICIPANT_TYPE = {\n ACTOR: 'actor',\n BOUNDARY: 'boundary',\n COLLECTIONS: 'collections',\n CONTROL: 'control',\n DATABASE: 'database',\n ENTITY: 'entity',\n PARTICIPANT: 'participant',\n QUEUE: 'queue',\n} as const;\n\nexport class SequenceDB implements DiagramDB {\n private readonly state = new ImperativeState(() => ({\n prevActor: undefined,\n actors: new Map(),\n createdActors: new Map(),\n destroyedActors: new Map(),\n boxes: [],\n messages: [],\n notes: [],\n sequenceNumbersEnabled: false,\n wrapEnabled: undefined,\n currentBox: undefined,\n lastCreated: undefined,\n lastDestroyed: undefined,\n }));\n\n constructor() {\n // Needed for JISON since it only supports direct properties\n this.apply = this.apply.bind(this);\n this.parseBoxData = this.parseBoxData.bind(this);\n this.parseMessage = this.parseMessage.bind(this);\n\n this.clear();\n\n this.setWrap(getConfig().wrap);\n this.LINETYPE = LINETYPE;\n this.ARROWTYPE = ARROWTYPE;\n this.PLACEMENT = PLACEMENT;\n }\n\n public addBox(data: { text: string; color: string; wrap: boolean }) {\n this.state.records.boxes.push({\n name: data.text,\n wrap: data.wrap ?? this.autoWrap(),\n fill: data.color,\n actorKeys: [],\n });\n this.state.records.currentBox = this.state.records.boxes.slice(-1)[0];\n }\n\n public addActor(\n id: string,\n name: string,\n description: { text: string; wrap?: boolean | null; type: string },\n type: string,\n metadata?: any\n ) {\n let assignedBox = this.state.records.currentBox;\n let doc;\n if (metadata !== undefined) {\n let yamlData;\n // detect if shapeData contains a newline character\n if (!metadata.includes('\\n')) {\n yamlData = '{\\n' + metadata + '\\n}';\n } else {\n yamlData = metadata + '\\n';\n }\n doc = yaml.load(yamlData, { schema: yaml.JSON_SCHEMA }) as ParticipantMetaData;\n }\n type = doc?.type ?? type;\n\n // If alias is provided in metadata and description is not already set, use the alias\n if (doc?.alias && (!description || description.text === name)) {\n description = { text: doc.alias, wrap: description?.wrap, type };\n }\n\n const old = this.state.records.actors.get(id);\n if (old) {\n // If already set and trying to set to a new one throw error\n if (this.state.records.currentBox && old.box && this.state.records.currentBox !== old.box) {\n throw new Error(\n `A same participant should only be defined in one Box: ${old.name} can't be in '${old.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`\n );\n }\n\n // Don't change the box if already\n assignedBox = old.box ? old.box : this.state.records.currentBox;\n old.box = assignedBox;\n\n // Don't allow description nulling\n if (old && name === old.name && description == null) {\n return;\n }\n }\n\n // Don't allow null descriptions, either\n if (description?.text == null) {\n description = { text: name, type };\n }\n if (type == null || description.text == null) {\n description = { text: name, type };\n }\n\n this.state.records.actors.set(id, {\n box: assignedBox,\n name: name,\n description: description.text,\n wrap: description.wrap ?? this.autoWrap(),\n prevActor: this.state.records.prevActor,\n links: {},\n properties: {},\n actorCnt: null,\n rectData: null,\n type: type ?? 'participant',\n });\n if (this.state.records.prevActor) {\n const prevActorInRecords = this.state.records.actors.get(this.state.records.prevActor);\n if (prevActorInRecords) {\n prevActorInRecords.nextActor = id;\n }\n }\n\n if (this.state.records.currentBox) {\n this.state.records.currentBox.actorKeys.push(id);\n }\n this.state.records.prevActor = id;\n }\n\n private activationCount(part: string) {\n let i;\n let count = 0;\n if (!part) {\n return 0;\n }\n for (i = 0; i < this.state.records.messages.length; i++) {\n if (\n this.state.records.messages[i].type === this.LINETYPE.ACTIVE_START &&\n this.state.records.messages[i].from === part\n ) {\n count++;\n }\n if (\n this.state.records.messages[i].type === this.LINETYPE.ACTIVE_END &&\n this.state.records.messages[i].from === part\n ) {\n count--;\n }\n }\n return count;\n }\n\n public addMessage(\n idFrom: Message['from'],\n idTo: Message['to'],\n message: { text: string; wrap?: boolean },\n answer: Message['answer']\n ) {\n this.state.records.messages.push({\n id: this.state.records.messages.length.toString(),\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap ?? this.autoWrap(),\n answer: answer,\n });\n }\n\n public addSignal(\n idFrom?: Message['from'],\n idTo?: Message['to'],\n message?: { text: string; wrap: boolean },\n messageType?: number,\n activate = false,\n centralConnection?: number\n ) {\n if (messageType === this.LINETYPE.ACTIVE_END) {\n const cnt = this.activationCount(idFrom ?? '');\n if (cnt < 1) {\n // Bail out as there is an activation signal from an inactive participant\n const error = new Error('Trying to inactivate an inactive participant (' + idFrom + ')');\n\n // @ts-ignore: we are passing hash param to the error object, however we should define our own custom error class to make it type safe\n error.hash = {\n text: '->>-',\n token: '->>-',\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"],\n };\n throw error;\n }\n }\n this.state.records.messages.push({\n id: this.state.records.messages.length.toString(),\n from: idFrom,\n to: idTo,\n message: message?.text ?? '',\n wrap: message?.wrap ?? this.autoWrap(),\n type: messageType,\n activate,\n centralConnection: centralConnection ?? 0,\n });\n return true;\n }\n\n public hasAtLeastOneBox() {\n return this.state.records.boxes.length > 0;\n }\n\n public hasAtLeastOneBoxWithTitle() {\n return this.state.records.boxes.some((b) => b.name);\n }\n\n public getMessages() {\n return this.state.records.messages;\n }\n\n public getBoxes() {\n return this.state.records.boxes;\n }\n public getActors() {\n return this.state.records.actors;\n }\n public getCreatedActors() {\n return this.state.records.createdActors;\n }\n public getDestroyedActors() {\n return this.state.records.destroyedActors;\n }\n public getActor(id: string) {\n // TODO: do we ever use this function in a way that it might return undefined?\n return this.state.records.actors.get(id)!;\n }\n public getActorKeys() {\n return [...this.state.records.actors.keys()];\n }\n public enableSequenceNumbers() {\n this.state.records.sequenceNumbersEnabled = true;\n }\n public disableSequenceNumbers() {\n this.state.records.sequenceNumbersEnabled = false;\n }\n public showSequenceNumbers() {\n return this.state.records.sequenceNumbersEnabled;\n }\n\n public setWrap(wrapSetting?: boolean) {\n this.state.records.wrapEnabled = wrapSetting;\n }\n\n private extractWrap(text?: string): { cleanedText?: string; wrap?: boolean } {\n if (text === undefined) {\n return {};\n }\n text = text.trim();\n const wrap =\n /^:?wrap:/.exec(text) !== null ? true : /^:?nowrap:/.exec(text) !== null ? false : undefined;\n const cleanedText = (wrap === undefined ? text : text.replace(/^:?(?:no)?wrap:/, '')).trim();\n return { cleanedText, wrap };\n }\n\n public autoWrap() {\n // if setWrap has been called, use that value, otherwise use the value from the config\n // TODO: refactor, always use the config value let setWrap update the config value\n if (this.state.records.wrapEnabled !== undefined) {\n return this.state.records.wrapEnabled;\n }\n return getConfig().sequence?.wrap ?? false;\n }\n\n public clear() {\n this.state.reset();\n commonClear();\n }\n\n public parseMessage(str: string) {\n const trimmedStr = str.trim();\n const { wrap, cleanedText } = this.extractWrap(trimmedStr);\n const message = {\n text: cleanedText,\n wrap,\n };\n log.debug(`parseMessage: ${JSON.stringify(message)}`);\n return message;\n }\n\n // We expect the box statement to be color first then description\n // The color can be rgb,rgba,hsl,hsla, or css code names #hex codes are not supported for now because of the way the char # is handled\n // We extract first segment as color, the rest of the line is considered as text\n public parseBoxData(str: string) {\n const match = /^((?:rgba?|hsla?)\\s*\\(.*\\)|\\w*)(.*)$/.exec(str);\n let color = match?.[1] ? match[1].trim() : 'transparent';\n let title = match?.[2] ? match[2].trim() : undefined;\n\n // check that the string is a color\n if (window?.CSS) {\n if (!window.CSS.supports('color', color)) {\n color = 'transparent';\n title = str.trim();\n }\n } else {\n const style = new Option().style;\n style.color = color;\n if (style.color !== color) {\n color = 'transparent';\n title = str.trim();\n }\n }\n const { wrap, cleanedText } = this.extractWrap(title);\n return {\n text: cleanedText ? sanitizeText(cleanedText, getConfig()) : undefined,\n color,\n wrap,\n };\n }\n\n public readonly LINETYPE: typeof LINETYPE;\n public readonly ARROWTYPE: typeof ARROWTYPE;\n public readonly PLACEMENT: typeof PLACEMENT;\n\n public addNote(\n actor: { actor: string },\n placement: Message['placement'],\n message: { text: string; wrap?: boolean }\n ) {\n const note: Note = {\n actor: actor,\n placement: placement,\n message: message.text,\n wrap: message.wrap ?? this.autoWrap(),\n };\n\n //@ts-ignore: Coerce actor into a [to, from, ...] array\n // eslint-disable-next-line unicorn/prefer-spread\n const actors = [].concat(actor, actor);\n this.state.records.notes.push(note);\n this.state.records.messages.push({\n id: this.state.records.messages.length.toString(),\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: message.wrap ?? this.autoWrap(),\n type: this.LINETYPE.NOTE,\n placement: placement,\n });\n }\n\n public addLinks(actorId: string, text: { text: string }) {\n // find the actor\n const actor = this.getActor(actorId);\n // JSON.parse the text\n try {\n let sanitizedText = sanitizeText(text.text, getConfig());\n sanitizedText = sanitizedText.replace(/=/g, '=');\n sanitizedText = sanitizedText.replace(/&/g, '&');\n const links = JSON.parse(sanitizedText);\n // add the deserialized text to the actor's links field.\n this.insertLinks(actor, links);\n } catch (e) {\n log.error('error while parsing actor link text', e);\n }\n }\n\n public addALink(actorId: string, text: { text: string }) {\n // find the actor\n const actor = this.getActor(actorId);\n try {\n const links: Record = {};\n let sanitizedText = sanitizeText(text.text, getConfig());\n const sep = sanitizedText.indexOf('@');\n sanitizedText = sanitizedText.replace(/=/g, '=');\n sanitizedText = sanitizedText.replace(/&/g, '&');\n const label = sanitizedText.slice(0, sep - 1).trim();\n const link = sanitizedText.slice(sep + 1).trim();\n\n links[label] = link;\n // add the deserialized text to the actor's links field.\n this.insertLinks(actor, links);\n } catch (e) {\n log.error('error while parsing actor link text', e);\n }\n }\n\n private insertLinks(actor: Actor, links: Record) {\n if (actor.links == null) {\n actor.links = links;\n } else {\n for (const key in links) {\n actor.links[key] = links[key];\n }\n }\n }\n\n public addProperties(actorId: string, text: { text: string }) {\n // find the actor\n const actor = this.getActor(actorId);\n // JSON.parse the text\n try {\n const sanitizedText = sanitizeText(text.text, getConfig());\n const properties: Record = JSON.parse(sanitizedText);\n // add the deserialized text to the actor's property field.\n this.insertProperties(actor, properties);\n } catch (e) {\n log.error('error while parsing actor properties text', e);\n }\n }\n\n private insertProperties(actor: Actor, properties: Record) {\n if (actor.properties == null) {\n actor.properties = properties;\n } else {\n for (const key in properties) {\n actor.properties[key] = properties[key];\n }\n }\n }\n\n private boxEnd() {\n this.state.records.currentBox = undefined;\n }\n\n public addDetails(actorId: string, text: { text: string }) {\n // find the actor\n const actor = this.getActor(actorId);\n const elem = document.getElementById(text.text)!;\n\n // JSON.parse the text\n try {\n const text = elem.innerHTML;\n const details = JSON.parse(text);\n // add the deserialized text to the actor's property field.\n if (details.properties) {\n this.insertProperties(actor, details.properties);\n }\n\n if (details.links) {\n this.insertLinks(actor, details.links);\n }\n } catch (e) {\n log.error('error while parsing actor details text', e);\n }\n }\n\n public getActorProperty(actor: Actor, key: string) {\n if (actor?.properties !== undefined) {\n return actor.properties[key];\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-redundant-type-constituents\n public apply(param: any | AddMessageParams | AddMessageParams[]) {\n if (Array.isArray(param)) {\n param.forEach((item) => {\n this.apply(item);\n });\n } else {\n switch (param.type) {\n case 'sequenceIndex':\n this.state.records.messages.push({\n id: this.state.records.messages.length.toString(),\n from: undefined,\n to: undefined,\n message: {\n start: param.sequenceIndex,\n step: param.sequenceIndexStep,\n visible: param.sequenceVisible,\n },\n wrap: false,\n type: param.signalType,\n });\n break;\n case 'addParticipant':\n this.addActor(param.actor, param.actor, param.description, param.draw, param.config);\n break;\n case 'createParticipant':\n if (this.state.records.actors.has(param.actor)) {\n throw new Error(\n \"It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior\"\n );\n }\n this.state.records.lastCreated = param.actor;\n this.addActor(param.actor, param.actor, param.description, param.draw, param.config);\n this.state.records.createdActors.set(param.actor, this.state.records.messages.length);\n break;\n case 'destroyParticipant':\n this.state.records.lastDestroyed = param.actor;\n this.state.records.destroyedActors.set(param.actor, this.state.records.messages.length);\n break;\n case 'activeStart':\n this.addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'centralConnection':\n this.addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'centralConnectionReverse':\n this.addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'activeEnd':\n this.addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'addNote':\n this.addNote(param.actor, param.placement, param.text);\n break;\n case 'addLinks':\n this.addLinks(param.actor, param.text);\n break;\n case 'addALink':\n this.addALink(param.actor, param.text);\n break;\n case 'addProperties':\n this.addProperties(param.actor, param.text);\n break;\n case 'addDetails':\n this.addDetails(param.actor, param.text);\n break;\n case 'addMessage':\n if (this.state.records.lastCreated) {\n if (param.to !== this.state.records.lastCreated) {\n throw new Error(\n 'The created participant ' +\n this.state.records.lastCreated.name +\n ' does not have an associated creating message after its declaration. Please check the sequence diagram.'\n );\n } else {\n this.state.records.lastCreated = undefined;\n }\n } else if (this.state.records.lastDestroyed) {\n if (\n param.to !== this.state.records.lastDestroyed &&\n param.from !== this.state.records.lastDestroyed\n ) {\n throw new Error(\n 'The destroyed participant ' +\n this.state.records.lastDestroyed.name +\n ' does not have an associated destroying message after its declaration. Please check the sequence diagram.'\n );\n } else {\n this.state.records.lastDestroyed = undefined;\n }\n }\n this.addSignal(\n param.from,\n param.to,\n param.msg,\n param.signalType,\n param.activate,\n param.centralConnection\n );\n break;\n case 'boxStart':\n this.addBox(param.boxData);\n break;\n case 'boxEnd':\n this.boxEnd();\n break;\n case 'loopStart':\n this.addSignal(undefined, undefined, param.loopText, param.signalType);\n break;\n case 'loopEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'rectStart':\n this.addSignal(undefined, undefined, param.color, param.signalType);\n break;\n case 'rectEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'optStart':\n this.addSignal(undefined, undefined, param.optText, param.signalType);\n break;\n case 'optEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'altStart':\n this.addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'else':\n this.addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'altEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'setAccTitle':\n setAccTitle(param.text);\n break;\n case 'parStart':\n this.addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'and':\n this.addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'parEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'criticalStart':\n this.addSignal(undefined, undefined, param.criticalText, param.signalType);\n break;\n case 'option':\n this.addSignal(undefined, undefined, param.optionText, param.signalType);\n break;\n case 'criticalEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'breakStart':\n this.addSignal(undefined, undefined, param.breakText, param.signalType);\n break;\n case 'breakEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n }\n }\n }\n\n public setAccTitle = setAccTitle;\n public setAccDescription = setAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getAccTitle = getAccTitle;\n public getAccDescription = getAccDescription;\n public getDiagramTitle = getDiagramTitle;\n public getConfig() {\n return getConfig().sequence;\n }\n}\n", "const getStyles = (options) =>\n `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n \n .innerArc {\n stroke-width: 1.5;\n stroke-dasharray: none;\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n #arrowhead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${options.signalColor};\n }\n\n #crosshead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${options.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n stroke-width: 2px;\n }\n\n`;\n\nexport default getStyles;\n", "import { sanitizeUrl } from '@braintree/sanitize-url';\nimport * as configApi from '../../config.js';\nimport { ZERO_WIDTH_SPACE, parseFontSize } from '../../utils.js';\nimport common, {\n calculateMathMLDimensions,\n hasKatex,\n renderKatexSanitized,\n} from '../common/common.js';\nimport * as svgDrawCommon from '../common/svgDrawCommon.js';\n\nexport const ACTOR_TYPE_WIDTH = 18 * 2;\nconst TOP_ACTOR_CLASS = 'actor-top';\nconst BOTTOM_ACTOR_CLASS = 'actor-bottom';\nconst ACTOR_BOX_CLASS = 'actor-box';\nconst ACTOR_MAN_FIGURE_CLASS = 'actor-man';\n\nexport const drawRect = function (elem, rectData) {\n return svgDrawCommon.drawRect(elem, rectData);\n};\n\nexport const drawPopup = function (elem, actor, minMenuWidth, textAttrs, forceMenus) {\n if (actor.links === undefined || actor.links === null || Object.keys(actor.links).length === 0) {\n return { height: 0, width: 0 };\n }\n\n const links = actor.links;\n const actorCnt = actor.actorCnt;\n const rectData = actor.rectData;\n\n var displayValue = 'none';\n if (forceMenus) {\n displayValue = 'block !important';\n }\n\n const g = elem.append('g');\n g.attr('id', 'actor' + actorCnt + '_popup');\n g.attr('class', 'actorPopupMenu');\n g.attr('display', displayValue);\n var actorClass = '';\n if (rectData.class !== undefined) {\n actorClass = ' ' + rectData.class;\n }\n\n let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth;\n\n const rectElem = g.append('rect');\n rectElem.attr('class', 'actorPopupMenuPanel' + actorClass);\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.height);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', menuWidth);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n if (links != null) {\n var linkY = 20;\n for (let key in links) {\n var linkElem = g.append('a');\n var sanitizedLink = sanitizeUrl(links[key]);\n linkElem.attr('xlink:href', sanitizedLink);\n linkElem.attr('target', '_blank');\n\n _drawMenuItemTextCandidateFunc(textAttrs)(\n key,\n linkElem,\n rectData.x + 10,\n rectData.height + linkY,\n menuWidth,\n 20,\n { class: 'actor' },\n textAttrs\n );\n\n linkY += 30;\n }\n }\n\n rectElem.attr('height', linkY);\n\n return { height: rectData.height + linkY, width: menuWidth };\n};\n\nconst popupMenuToggle = function (popId) {\n return (\n \"var pu = document.getElementById('\" +\n popId +\n \"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }\"\n );\n};\n\nexport const drawKatex = async function (elem, textData, msgModel = null) {\n let textElem = elem.append('foreignObject');\n const linesSanitized = await renderKatexSanitized(textData.text, configApi.getConfig());\n\n const divElem = textElem\n .append('xhtml:div')\n .attr('style', 'width: fit-content;')\n .attr('xmlns', 'http://www.w3.org/1999/xhtml')\n .html(linesSanitized);\n const dim = divElem.node().getBoundingClientRect();\n\n textElem.attr('height', Math.round(dim.height)).attr('width', Math.round(dim.width));\n\n if (textData.class === 'noteText') {\n const rectElem = elem.node().firstChild;\n\n rectElem.setAttribute('height', dim.height + 2 * textData.textMargin);\n const rectDim = rectElem.getBBox();\n\n textElem\n .attr('x', Math.round(rectDim.x + rectDim.width / 2 - dim.width / 2))\n .attr('y', Math.round(rectDim.y + rectDim.height / 2 - dim.height / 2));\n } else if (msgModel) {\n let { startx, stopx, starty } = msgModel;\n if (startx > stopx) {\n const temp = startx;\n startx = stopx;\n stopx = temp;\n }\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n textElem.attr('x', Math.round(startx + Math.abs(startx - stopx) / 2 - dim.width / 2));\n if (textData.class === 'loopText') {\n textElem.attr('y', Math.round(starty));\n } else {\n textElem.attr('y', Math.round(starty - dim.height));\n }\n }\n\n return [textElem];\n};\n\nexport const drawText = function (elem, textData) {\n let prevTextHeight = 0;\n let textHeight = 0;\n const lines = textData.text.split(common.lineBreakRegex);\n\n const [_textFontSize, _textFontSizePx] = parseFontSize(textData.fontSize);\n\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (\n textData.valign !== undefined &&\n textData.textMargin !== undefined &&\n textData.textMargin > 0\n ) {\n switch (textData.valign) {\n case 'top':\n case 'start':\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case 'middle':\n case 'center':\n yfunc = () =>\n Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case 'bottom':\n case 'end':\n yfunc = () =>\n Math.round(\n textData.y +\n (prevTextHeight + textHeight + 2 * textData.textMargin) -\n textData.textMargin\n );\n break;\n }\n }\n\n if (\n textData.anchor !== undefined &&\n textData.textMargin !== undefined &&\n textData.width !== undefined\n ) {\n switch (textData.anchor) {\n case 'left':\n case 'start':\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = 'start';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'middle':\n case 'center':\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = 'middle';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'right':\n case 'end':\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = 'end';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n }\n }\n\n for (let [i, line] of lines.entries()) {\n if (\n textData.textMargin !== undefined &&\n textData.textMargin === 0 &&\n _textFontSize !== undefined\n ) {\n dy = i * _textFontSize;\n }\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', yfunc());\n if (textData.anchor !== undefined) {\n textElem\n .attr('text-anchor', textData.anchor)\n .attr('dominant-baseline', textData.dominantBaseline)\n .attr('alignment-baseline', textData.alignmentBaseline);\n }\n if (textData.fontFamily !== undefined) {\n textElem.style('font-family', textData.fontFamily);\n }\n if (_textFontSizePx !== undefined) {\n textElem.style('font-size', _textFontSizePx);\n }\n if (textData.fontWeight !== undefined) {\n textElem.style('font-weight', textData.fontWeight);\n }\n if (textData.fill !== undefined) {\n textElem.attr('fill', textData.fill);\n }\n if (textData.class !== undefined) {\n textElem.attr('class', textData.class);\n }\n if (textData.dy !== undefined) {\n textElem.attr('dy', textData.dy);\n } else if (dy !== 0) {\n textElem.attr('dy', dy);\n }\n\n const text = line || ZERO_WIDTH_SPACE;\n if (textData.tspan) {\n const span = textElem.append('tspan');\n span.attr('x', textData.x);\n if (textData.fill !== undefined) {\n span.attr('fill', textData.fill);\n }\n span.text(text);\n } else {\n textElem.text(text);\n }\n if (\n textData.valign !== undefined &&\n textData.textMargin !== undefined &&\n textData.textMargin > 0\n ) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n\n textElems.push(textElem);\n }\n\n return textElems;\n};\n\nexport const drawLabel = function (elem, txtObject) {\n /**\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} cut\n * @returns {any}\n */\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.height / 2;\n\n drawText(elem, txtObject);\n return polygon;\n};\n\nlet actorCnt = -1;\n\nexport const fixLifeLineHeights = (diagram, actors, actorKeys, conf) => {\n if (!diagram.select) {\n return;\n }\n actorKeys.forEach((actorKey) => {\n const actor = actors.get(actorKey);\n const actorDOM = diagram.select('#actor' + actor.actorCnt);\n if (!conf.mirrorActors && actor.stopy) {\n actorDOM.attr('y2', actor.stopy + actor.height / 2);\n } else if (conf.mirrorActors) {\n actorDOM.attr('y2', actor.stopy);\n }\n });\n};\n\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem - The diagram we'll draw to.\n * @param {any} actor - The actor to draw.\n * @param {any} conf - DrawText implementation discriminator object\n * @param {boolean} isFooter - If the actor is the footer one\n */\nconst drawActorTypeParticipant = function (elem, actor, conf, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + actor.height;\n\n const boxplusLineGroup = elem.append('g').lower();\n var g = boxplusLineGroup;\n\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf.forceMenus) {\n g.attr('onclick', popupMenuToggle(`actor${actorCnt}_popup`)).attr('cursor', 'pointer');\n }\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name);\n\n g = boxplusLineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n }\n }\n\n const rect = svgDrawCommon.getNoteRect();\n var cssclass = 'actor';\n if (actor.properties?.class) {\n cssclass = actor.properties.class;\n } else {\n rect.fill = '#eaeaea';\n }\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.rx = 3;\n rect.ry = 3;\n rect.name = actor.name;\n const rectElem = drawRect(g, rect);\n actor.rectData = rect;\n\n if (actor.properties?.icon) {\n const iconSrc = actor.properties.icon.trim();\n if (iconSrc.charAt(0) === '@') {\n svgDrawCommon.drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));\n } else {\n svgDrawCommon.drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);\n }\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_BOX_CLASS}` },\n conf\n );\n\n let height = actor.height;\n if (rectElem.node) {\n const bounds = rectElem.node().getBBox();\n actor.height = bounds.height;\n height = bounds.height;\n }\n\n return height;\n};\n\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem - The diagram we'll draw to.\n * @param {any} actor - The actor to draw.\n * @param {any} conf - DrawText implementation discriminator object\n * @param {boolean} isFooter - If the actor is the footer one\n */\nconst drawActorTypeCollections = function (elem, actor, conf, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + actor.height;\n\n const boxplusLineGroup = elem.append('g').lower();\n var g = boxplusLineGroup;\n\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf.forceMenus) {\n g.attr('onclick', popupMenuToggle(`actor${actorCnt}_popup`)).attr('cursor', 'pointer');\n }\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name);\n\n g = boxplusLineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n }\n }\n\n const rect = svgDrawCommon.getNoteRect();\n var cssclass = 'actor';\n if (actor.properties?.class) {\n cssclass = actor.properties.class;\n } else {\n rect.fill = '#eaeaea';\n }\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.name = actor.name;\n\n // DRAW STACKED RECTANGLES\n const offset = 6;\n const shadowRect = {\n ...rect,\n x: rect.x + (isFooter ? -offset : -offset),\n y: rect.y + (isFooter ? +offset : +offset),\n class: 'actor',\n };\n const rectElem = drawRect(g, rect); // draw main rectangle on top\n drawRect(g, shadowRect);\n actor.rectData = rect;\n\n if (actor.properties?.icon) {\n const iconSrc = actor.properties.icon.trim();\n if (iconSrc.charAt(0) === '@') {\n svgDrawCommon.drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));\n } else {\n svgDrawCommon.drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);\n }\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x - offset,\n rect.y + offset,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_BOX_CLASS}` },\n conf\n );\n\n let height = actor.height;\n if (rectElem.node) {\n const bounds = rectElem.node().getBBox();\n actor.height = bounds.height;\n height = bounds.height;\n }\n\n return height;\n};\n\nconst drawActorTypeQueue = function (elem, actor, conf, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + actor.height;\n\n const boxplusLineGroup = elem.append('g').lower();\n let g = boxplusLineGroup;\n\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf.forceMenus) {\n g.attr('onclick', popupMenuToggle(`actor${actorCnt}_popup`)).attr('cursor', 'pointer');\n }\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name);\n\n g = boxplusLineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n }\n }\n\n const rect = svgDrawCommon.getNoteRect();\n let cssclass = 'actor';\n if (actor.properties?.class) {\n cssclass = actor.properties.class;\n } else {\n rect.fill = '#eaeaea';\n }\n\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.name = actor.name;\n\n // Cylinder dimensions\n const ry = rect.height / 2;\n const rx = ry / (2.5 + rect.height / 50);\n\n // Cylinder base group\n const cylinderGroup = g.append('g');\n const cylinderArc = g.append('g');\n\n // Main cylinder body\n cylinderGroup\n .append('path')\n .attr(\n 'd',\n `M ${rect.x},${rect.y + ry}\n a ${rx},${ry} 0 0 0 0,${rect.height}\n h ${rect.width - 2 * rx}\n a ${rx},${ry} 0 0 0 0,-${rect.height}\n Z\n `\n )\n .attr('class', cssclass);\n cylinderArc\n .append('path')\n .attr(\n 'd',\n `M ${rect.x},${rect.y + ry}\n a ${rx},${ry} 0 0 0 0,${rect.height}`\n )\n .attr('stroke', '#666')\n .attr('stroke-width', '1px')\n .attr('class', cssclass);\n\n cylinderGroup.attr('transform', `translate(${rx}, ${-(rect.height / 2)})`);\n cylinderArc.attr('transform', `translate(${rect.width - rx}, ${-rect.height / 2})`);\n\n actor.rectData = rect;\n\n if (actor.properties?.icon) {\n const iconSrc = actor.properties.icon.trim();\n const iconX = rect.x + rect.width - 20;\n const iconY = rect.y + 10;\n if (iconSrc.charAt(0) === '@') {\n svgDrawCommon.drawEmbeddedImage(g, iconX, iconY, iconSrc.substr(1));\n } else {\n svgDrawCommon.drawImage(g, iconX, iconY, iconSrc);\n }\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_BOX_CLASS}` },\n conf\n );\n\n let height = actor.height;\n const lastPath = cylinderGroup.select('path:last-child');\n if (lastPath.node()) {\n const bounds = lastPath.node().getBBox();\n actor.height = bounds.height;\n height = bounds.height;\n }\n\n return height;\n};\n\nconst drawActorTypeControl = function (elem, actor, conf, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 75;\n\n const line = elem.append('g').lower();\n\n if (!isFooter) {\n actorCnt++;\n line\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name);\n\n actor.actorCnt = actorCnt;\n }\n const actElem = elem.append('g');\n let cssClass = ACTOR_MAN_FIGURE_CLASS;\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr('class', cssClass);\n actElem.attr('name', actor.name);\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = actor.x;\n rect.y = actorY;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n\n const cx = actor.x + actor.width / 2;\n const cy = actorY + 32;\n const r = 22;\n\n actElem\n .append('defs')\n .append('marker')\n .attr('id', 'filled-head-control')\n .attr('refX', 11)\n .attr('refY', 5.8)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', '172.5')\n .append('path')\n .attr('d', 'M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z');\n\n // Draw the base circle\n actElem\n .append('circle')\n .attr('cx', cx)\n .attr('cy', cy)\n .attr('r', r)\n .attr('fill', '#eaeaf7')\n .attr('stroke', '#666')\n .attr('stroke-width', 1.2);\n\n // Draw looping arrow as arc path\n actElem\n .append('line')\n .attr('marker-end', 'url(#filled-head-control)')\n .attr('transform', `translate(${cx}, ${cy - r})`);\n\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height + 2 * (conf?.sequence?.labelBoxHeight ?? 0);\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n rect.y + r + (!isFooter ? 12 : 5),\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` },\n conf\n );\n\n return actor.height;\n};\n\nconst drawActorTypeEntity = function (elem, actor, conf, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 75;\n\n const line = elem.append('g').lower();\n\n const actElem = elem.append('g');\n let cssClass = 'actor';\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr('class', cssClass);\n actElem.attr('name', actor.name);\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = actor.x;\n rect.y = actorY;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n\n const cx = actor.x + actor.width / 2;\n const cy = actorY + (!isFooter ? 25 : 10);\n const r = 22;\n\n actElem\n .append('circle')\n .attr('cx', cx)\n .attr('cy', cy)\n .attr('r', r)\n .attr('width', actor.width)\n .attr('height', actor.height);\n\n actElem\n .append('line')\n .attr('x1', cx - r)\n .attr('x2', cx + r)\n .attr('y1', cy + r)\n .attr('y2', cy + r)\n .attr('stroke-width', 2);\n\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height + (conf?.sequence?.labelBoxHeight ?? 0);\n\n if (!isFooter) {\n actorCnt++;\n line\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name);\n\n actor.actorCnt = actorCnt;\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n rect.y + (!isFooter ? 30 : 15),\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` },\n conf\n );\n\n if (!isFooter) {\n actElem.attr('transform', `translate(${0}, ${r / 2 - 5})`);\n } else {\n actElem.attr('transform', `translate(${0}, ${r})`);\n }\n\n return actor.height;\n};\n\nconst drawActorTypeDatabase = function (elem, actor, conf, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + actor.height + 2 * conf.boxTextMargin;\n\n const boxplusLineGroup = elem.append('g').lower();\n let g = boxplusLineGroup;\n\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf.forceMenus) {\n g.attr('onclick', popupMenuToggle(`actor${actorCnt}_popup`)).attr('cursor', 'pointer');\n }\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name);\n\n g = boxplusLineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n }\n }\n\n const rect = svgDrawCommon.getNoteRect();\n\n let cssclass = 'actor';\n if (actor.properties?.class) {\n cssclass = actor.properties.class;\n } else {\n rect.fill = '#eaeaea';\n }\n\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.name = actor.name;\n\n // Cylinder dimensions\n rect.x = actor.x;\n rect.y = actorY;\n const w = rect.width / 3;\n const h = rect.width / 3;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n\n // Cylinder base group\n const cylinderGroup = g.append('g');\n\n const d = `\n M ${rect.x},${rect.y + ry}\n a ${rx},${ry} 0 0 0 ${w},0\n a ${rx},${ry} 0 0 0 -${w},0\n l 0,${h - 2 * ry}\n a ${rx},${ry} 0 0 0 ${w},0\n l 0,-${h - 2 * ry}\n`;\n // Draw the main cylinder body\n cylinderGroup\n .append('path')\n .attr('d', d)\n .attr('fill', '#eaeaea')\n .attr('stroke', '#000')\n .attr('stroke-width', 1)\n .attr('class', cssclass);\n\n cylinderGroup.attr('transform', `translate(${w}, ${ry})`);\n\n actor.rectData = rect;\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x,\n rect.y + 35,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_BOX_CLASS}` },\n conf\n );\n\n const lastPath = cylinderGroup.select('path:last-child');\n if (lastPath.node()) {\n const bounds = lastPath.node().getBBox();\n actor.height = bounds.height + (conf.sequence.labelBoxHeight ?? 0);\n }\n\n return actor.height;\n};\n\nconst drawActorTypeBoundary = function (elem, actor, conf, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 80;\n const radius = 22;\n const line = elem.append('g').lower();\n\n if (!isFooter) {\n actorCnt++;\n line\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name);\n\n actor.actorCnt = actorCnt;\n }\n const actElem = elem.append('g');\n let cssClass = ACTOR_MAN_FIGURE_CLASS;\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr('class', cssClass);\n actElem.attr('name', actor.name);\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = actor.x;\n rect.y = actorY;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n\n actElem\n .append('line')\n .attr('id', 'actor-man-torso' + actorCnt)\n .attr('x1', actor.x + actor.width / 2 - radius * 2.5)\n .attr('y1', actorY + 12)\n .attr('x2', actor.x + actor.width / 2 - 15)\n .attr('y2', actorY + 12);\n\n actElem\n .append('line')\n .attr('id', 'actor-man-arms' + actorCnt)\n .attr('x1', actor.x + actor.width / 2 - radius * 2.5)\n .attr('y1', actorY + 2) // starting Y\n .attr('x2', actor.x + actor.width / 2 - radius * 2.5)\n .attr('y2', actorY + 22); // ending Y (26px long, adjust as needed)\n\n actElem\n .append('circle')\n .attr('cx', actor.x + actor.width / 2)\n .attr('cy', actorY + 12)\n .attr('r', radius);\n\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height + (conf.sequence.labelBoxHeight ?? 0);\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n rect.y + 15,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` },\n conf\n );\n\n if (!isFooter) {\n actElem.attr('transform', `translate(0,${radius / 2 + 10})`);\n } else {\n actElem.attr('transform', `translate(0,${radius / 2 + 10})`);\n }\n\n return actor.height;\n};\n\nconst drawActorTypeActor = function (elem, actor, conf, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 80;\n\n const line = elem.append('g').lower();\n\n if (!isFooter) {\n actorCnt++;\n line\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name);\n\n actor.actorCnt = actorCnt;\n }\n const actElem = elem.append('g');\n let cssClass = ACTOR_MAN_FIGURE_CLASS;\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr('class', cssClass);\n actElem.attr('name', actor.name);\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = actor.x;\n rect.y = actorY;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n rect.rx = 3;\n rect.ry = 3;\n\n actElem\n .append('line')\n .attr('id', 'actor-man-torso' + actorCnt)\n .attr('x1', center)\n .attr('y1', actorY + 25)\n .attr('x2', center)\n .attr('y2', actorY + 45);\n\n actElem\n .append('line')\n .attr('id', 'actor-man-arms' + actorCnt)\n .attr('x1', center - ACTOR_TYPE_WIDTH / 2)\n .attr('y1', actorY + 33)\n .attr('x2', center + ACTOR_TYPE_WIDTH / 2)\n .attr('y2', actorY + 33);\n actElem\n .append('line')\n .attr('x1', center - ACTOR_TYPE_WIDTH / 2)\n .attr('y1', actorY + 60)\n .attr('x2', center)\n .attr('y2', actorY + 45);\n actElem\n .append('line')\n .attr('x1', center)\n .attr('y1', actorY + 45)\n .attr('x2', center + ACTOR_TYPE_WIDTH / 2 - 2)\n .attr('y2', actorY + 60);\n\n const circle = actElem.append('circle');\n circle.attr('cx', actor.x + actor.width / 2);\n circle.attr('cy', actorY + 10);\n circle.attr('r', 15);\n circle.attr('width', actor.width);\n circle.attr('height', actor.height);\n\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height;\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n rect.y + 35,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` },\n conf\n );\n\n return actor.height;\n};\n\nexport const drawActor = async function (elem, actor, conf, isFooter) {\n switch (actor.type) {\n case 'actor':\n return await drawActorTypeActor(elem, actor, conf, isFooter);\n case 'participant':\n return await drawActorTypeParticipant(elem, actor, conf, isFooter);\n case 'boundary':\n return await drawActorTypeBoundary(elem, actor, conf, isFooter);\n case 'control':\n return await drawActorTypeControl(elem, actor, conf, isFooter);\n case 'entity':\n return await drawActorTypeEntity(elem, actor, conf, isFooter);\n case 'database':\n return await drawActorTypeDatabase(elem, actor, conf, isFooter);\n case 'collections':\n return await drawActorTypeCollections(elem, actor, conf, isFooter);\n case 'queue':\n return await drawActorTypeQueue(elem, actor, conf, isFooter);\n }\n};\n\nexport const drawBox = function (elem, box, conf) {\n const boxplusTextGroup = elem.append('g');\n const g = boxplusTextGroup;\n drawBackgroundRect(g, box);\n if (box.name) {\n _drawTextCandidateFunc(conf)(\n box.name,\n g,\n box.x,\n box.y + conf.boxTextMargin + (box.textMaxHeight || 0) / 2,\n box.width,\n 0,\n { class: 'text' },\n conf\n );\n }\n g.lower();\n};\n\nexport const anchorElement = function (elem) {\n return elem.append('g');\n};\n\n/**\n * Draws an activation in the diagram\n *\n * @param {any} elem - Element to append activation rect.\n * @param {any} bounds - Activation box bounds.\n * @param {any} verticalPos - Precise y coordinate of bottom activation box edge.\n * @param {any} conf - Sequence diagram config object.\n * @param {any} actorActivations - Number of activations on the actor.\n */\nexport const drawActivation = function (elem, bounds, verticalPos, conf, actorActivations) {\n const rect = svgDrawCommon.getNoteRect();\n const g = bounds.anchored;\n rect.x = bounds.startx;\n rect.y = bounds.starty;\n rect.class = 'activation' + (actorActivations % 3); // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx;\n rect.height = verticalPos - bounds.starty;\n drawRect(g, rect);\n};\n\n/**\n * Draws a loop in the diagram\n *\n * @param {any} elem - Element to append the loop to.\n * @param {any} loopModel - LoopModel of the given loop.\n * @param {any} labelText - Text within the loop.\n * @param {any} conf - Diagram configuration\n * @returns {any}\n */\nexport const drawLoop = async function (elem, loopModel, labelText, conf) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight,\n } = conf;\n const g = elem.append('g');\n const drawLoopLine = function (startx, starty, stopx, stopy) {\n return g\n .append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine');\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (loopModel.sections !== undefined) {\n loopModel.sections.forEach(function (item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n 'stroke-dasharray',\n '3, 3'\n );\n });\n }\n\n let txt = svgDrawCommon.getTextObj();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = 'labelText';\n\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.textMargin = boxTextMargin;\n txt.class = 'loopText';\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n\n let textElem = hasKatex(txt.text) ? await drawKatex(g, txt, loopModel) : drawText(g, txt);\n\n if (loopModel.sectionTitles !== undefined) {\n for (const [idx, item] of Object.entries(loopModel.sectionTitles)) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = 'loopText';\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n\n if (hasKatex(txt.text)) {\n loopModel.starty = loopModel.sections[idx].y;\n await drawKatex(g, txt, loopModel);\n } else {\n drawText(g, txt);\n }\n let sectionHeight = Math.round(\n textElem\n .map((te) => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n }\n }\n\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem Diagram (reference for bounds)\n * @param {any} bounds Shape of the rectangle\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n svgDrawCommon.drawBackgroundRect(elem, bounds);\n};\n\nexport const insertDatabaseIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'database')\n .attr('fill-rule', 'evenodd')\n .attr('clip-rule', 'evenodd')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z'\n );\n};\n\nexport const insertComputerIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'computer')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z'\n );\n};\n\nexport const insertClockIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'clock')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z'\n );\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param elem\n */\nexport const insertArrowHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 7.9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M -1 0 L 10 5 L 0 10 z'); // this is actual shape for arrowhead\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowFilledHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'filled-head')\n .attr('refX', 15.5)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Setup node number. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertSequenceNumber = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'sequencenumber')\n .attr('refX', 15)\n .attr('refY', 15)\n .attr('markerWidth', 60)\n .attr('markerHeight', 40)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', 15)\n .attr('cy', 15)\n .attr('r', 6);\n // .style(\"fill\", '#f00');\n};\n\n/**\n * Setup cross head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowCrossHead = function (elem) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 4)\n .attr('refY', 4.5);\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1pt')\n .attr('d', 'M 1,2 L 6,7 M 6,2 L 1,7');\n // this is actual shape for arrowhead\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: undefined,\n style: '#666',\n width: undefined,\n height: undefined,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: undefined,\n };\n};\n\nexport const getNoteRect = function () {\n return {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0,\n };\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n */\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const [_actorFontSize, _actorFontSizePx] = parseFontSize(actorFontSize);\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * _actorFontSize - (_actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', _actorFontSizePx)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n *\n * @param content\n * @param g\n * @param x\n * @param y\n * @param width\n * @param height\n * @param textAttrs\n * @param conf\n */\n async function byKatex(content, g, x, y, width, height, textAttrs, conf) {\n // TODO duplicate render calls, optimize\n\n const dim = await calculateMathMLDimensions(content, configApi.getConfig());\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x + width / 2 - dim.width / 2)\n .attr('y', y + height / 2 - dim.height / 2)\n .attr('width', dim.width)\n .attr('height', dim.height);\n\n const text = f.append('xhtml:div').style('height', '100%').style('width', '100%');\n\n text\n .append('div')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .html(await renderKatexSanitized(content, configApi.getConfig()));\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf, hasKatex = false) {\n if (hasKatex) {\n return byKatex;\n }\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst _drawMenuItemTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n */\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x)\n .attr('y', y)\n .style('text-anchor', 'start')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x)\n .attr('y', y)\n .style('text-anchor', 'start')\n .style('font-size', actorFontSize)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text.append('tspan').attr('x', x).attr('dy', dy).text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param elem\n */\nexport const insertSolidTopArrowHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'solidTopArrowHead')\n .attr('refX', 7.9)\n .attr('refY', 7.25)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 0 L 10 8 L 0 8 z'); // this is actual shape for arrowhead\n};\n\nexport const insertSolidBottomArrowHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'solidBottomArrowHead')\n .attr('refX', 7.9)\n .attr('refY', 0.75)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 0 L 10 0 L 0 8 z');\n};\n\nexport const insertStickTopArrowHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'stickTopArrowHead')\n .attr('refX', 7.5)\n .attr('refY', 7)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 0 L 7 7')\n .attr('stroke', 'black')\n .attr('stroke-width', 1.5)\n .attr('fill', 'none');\n};\n\nexport const insertStickBottomArrowHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'stickBottomArrowHead')\n .attr('refX', 7.5)\n .attr('refY', 0)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 7 L 7 0')\n .attr('stroke', 'black')\n .attr('stroke-width', 1.5)\n .attr('fill', 'none');\n};\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n drawBox,\n drawPopup,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertArrowFilledHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon,\n getTextObj,\n getNoteRect,\n fixLifeLineHeights,\n sanitizeUrl,\n insertSolidTopArrowHead,\n insertSolidBottomArrowHead,\n insertStickTopArrowHead,\n insertStickBottomArrowHead,\n};\n", "// @ts-nocheck TODO: fix file\nimport { select } from 'd3';\nimport svgDraw, { drawKatex, ACTOR_TYPE_WIDTH, drawText, fixLifeLineHeights } from './svgDraw.js';\nimport { log } from '../../logger.js';\nimport common, { calculateMathMLDimensions, hasKatex } from '../common/common.js';\nimport { getUrl } from '../common/common.js';\nimport * as svgDrawCommon from '../common/svgDrawCommon.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport assignWithDepth from '../../assignWithDepth.js';\nimport utils from '../../utils.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { Diagram } from '../../Diagram.js';\nimport { PARTICIPANT_TYPE } from './sequenceDb.js';\n\nlet conf = {};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function () {\n return (\n Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0)\n ) +\n (this.loops.length === 0\n ? 0\n : this.loops.map((it) => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.messages.length === 0\n ? 0\n : this.messages.map((it) => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.notes.length === 0\n ? 0\n : this.notes.map((it) => it.height || 0).reduce((acc, h) => acc + h))\n );\n },\n clear: function () {\n this.actors = [];\n this.boxes = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addBox: function (boxModel) {\n this.boxes.push(boxModel);\n },\n addActor: function (actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function (loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function (msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function (noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function () {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function () {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function () {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function () {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n boxes: [],\n loops: [],\n messages: [],\n notes: [],\n },\n init: function () {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n };\n this.verticalPos = 0;\n setConf(getConfig());\n },\n updateVal: function (obj, key, val, fun) {\n if (obj[key] === undefined) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _self = this;\n let cnt = 0;\n /** @param type - Either `activation` or `undefined` */\n function updateFn(type?: 'activation') {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn('activation'));\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = common.getMin(startx, stopx);\n const _stopx = common.getMax(startx, stopx);\n const _starty = common.getMin(starty, stopy);\n const _stopy = common.getMax(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function (message, diagram, actors) {\n const actorRect = actors.get(message.from);\n const stackedSize = actorActivations(message.from).length || 0;\n const x = actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from,\n anchored: svgDraw.anchorElement(diagram),\n });\n },\n endActivation: function (message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function (activation) {\n return activation.actor;\n })\n .lastIndexOf(message.from);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function (title = { message: undefined, wrap: false, width: undefined }, fill) {\n return {\n startx: undefined,\n starty: this.verticalPos,\n stopx: undefined,\n stopy: undefined,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill: fill,\n };\n },\n newLoop: function (title = { message: undefined, wrap: false, width: undefined }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function () {\n return this.sequenceItems.pop();\n },\n isLoopOverlap: function () {\n return this.sequenceItems.length\n ? this.sequenceItems[this.sequenceItems.length - 1].overlap\n : false;\n },\n addSectionToLoop: function (message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n saveVerticalPos: function () {\n if (this.isLoopOverlap()) {\n this.savedVerticalPos = this.verticalPos;\n }\n },\n resetVerticalPos: function () {\n if (this.isLoopOverlap()) {\n this.verticalPos = this.savedVerticalPos;\n }\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = common.getMax(this.data.stopy, this.verticalPos);\n },\n getVerticalPos: function () {\n return this.verticalPos;\n },\n getBounds: function () {\n return { bounds: this.data, models: this.models };\n },\n};\n\n/** Options for drawing a note in {@link drawNote} */\ninterface NoteModel {\n /** x axis start position */\n startx: number;\n /** y axis position */\n starty: number;\n /** the message to be shown */\n message: string;\n /** Set this with a custom width to override the default configured width. */\n width: number;\n}\n\n/**\n * Draws a note in the diagram with the attached line\n *\n * @param elem - The diagram to draw to.\n * @param noteModel - Note model options.\n */\nconst drawNote = async function (elem: any, noteModel: NoteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = svgDrawCommon.getNoteRect();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = 'note';\n\n const g = elem.append('g');\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = svgDrawCommon.getTextObj();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = '1em';\n textObj.text = noteModel.message;\n textObj.class = 'noteText';\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = 'center';\n\n const textElem = hasKatex(textObj.text) ? await drawKatex(g, textObj) : drawText(g, textObj);\n\n const textHeight = Math.round(\n textElem\n .map((te) => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n\n rectElem.attr('height', textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\n\nconst drawCentralConnection = function (\n elem: any,\n msg: any,\n msgModel: any,\n diagObj: Diagram,\n startx: number,\n stopx: number,\n lineStartY: number\n) {\n const actors = diagObj.db.getActors();\n const fromActor = actors.get(msg.from);\n const toActor = actors.get(msg.to);\n const isAutoNumberOn = msgModel.sequenceVisible;\n let fromCenter = fromActor.x + fromActor.width / 2;\n let toCenter = toActor.x + toActor.width / 2;\n\n // Determine arrow direction: left-to-right or right-to-left\n const isLeftToRight = fromCenter <= toCenter;\n const isReverse = isReverseArrowType(msg, diagObj);\n\n const g = elem.append('g');\n\n const CENTRAL_CONNECTION_CIRCLE_OFFSET = 16.5;\n\n const getCircleOffset = (isLeftToRight: boolean, isReverse: boolean) => {\n const baseOffset = isLeftToRight\n ? CENTRAL_CONNECTION_CIRCLE_OFFSET\n : -CENTRAL_CONNECTION_CIRCLE_OFFSET;\n return isReverse ? -baseOffset : baseOffset;\n };\n\n const drawCircle = (cx: number) => {\n g.append('circle')\n .attr('cx', cx)\n .attr('cy', lineStartY)\n .attr('r', 5)\n .attr('width', 10)\n .attr('height', 10);\n };\n\n const { CENTRAL_CONNECTION, CENTRAL_CONNECTION_REVERSE, CENTRAL_CONNECTION_DUAL } =\n diagObj.db.LINETYPE;\n\n // Calculate circle position adjustments when autonumber is enabled\n if (isAutoNumberOn) {\n switch (msg.centralConnection) {\n case CENTRAL_CONNECTION:\n // Pattern: actor ->>() actor - circle at destination\n if (isReverse) {\n toCenter += getCircleOffset(isLeftToRight, true);\n }\n // No adjustment for normal arrows\n break;\n\n case CENTRAL_CONNECTION_REVERSE:\n // Pattern: actor ()->> actor - circle at source\n if (!isReverse) {\n fromCenter += getCircleOffset(isLeftToRight, false);\n }\n // No adjustment for reverse arrows\n break;\n\n case CENTRAL_CONNECTION_DUAL:\n // Pattern: actor ()->>() actor - circles at both ends\n if (isReverse) {\n toCenter += getCircleOffset(isLeftToRight, true);\n } else {\n fromCenter += getCircleOffset(isLeftToRight, false);\n }\n break;\n }\n }\n\n // Draw circles based on central connection type\n switch (msg.centralConnection) {\n case CENTRAL_CONNECTION:\n drawCircle(toCenter);\n break;\n case CENTRAL_CONNECTION_REVERSE:\n drawCircle(fromCenter);\n break;\n case CENTRAL_CONNECTION_DUAL:\n drawCircle(fromCenter);\n drawCircle(toCenter);\n break;\n }\n};\n\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight,\n };\n};\nconst noteFont = (cnf) => {\n return {\n fontFamily: cnf.noteFontFamily,\n fontSize: cnf.noteFontSize,\n fontWeight: cnf.noteFontWeight,\n };\n};\nconst actorFont = (cnf) => {\n return {\n fontFamily: cnf.actorFontFamily,\n fontSize: cnf.actorFontSize,\n fontWeight: cnf.actorFontWeight,\n };\n};\n\n/**\n * Process a message by adding its dimensions to the bound. It returns the Y coordinate of the\n * message so it can be drawn later. We do not draw the message at this point so the arrowhead can\n * be on top of the activation box.\n *\n * @param _diagram - The parent of the message element.\n * @param msgModel - The model containing fields describing a message\n * @returns `lineStartY` - The Y coordinate at which the message line starts\n */\nasync function boundMessage(_diagram, msgModel): Promise {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, message } = msgModel;\n const lines = common.splitBreaks(message).length;\n const isKatexMsg = hasKatex(message);\n const textDims = isKatexMsg\n ? await calculateMathMLDimensions(message, getConfig())\n : utils.calculateTextDimensions(message, messageFont(conf));\n\n if (!isKatexMsg) {\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n bounds.bumpVerticalPos(lineHeight);\n }\n\n let lineStartY;\n let totalOffset = textDims.height - 10;\n const textWidth = textDims.width;\n\n if (startx === stopx) {\n lineStartY = bounds.getVerticalPos() + totalOffset;\n if (!conf.rightAngles) {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n }\n totalOffset += 30;\n const dx = common.getMax(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n bounds.insert(startx, lineStartY - 10, stopx, lineStartY);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n\n return lineStartY;\n}\n\n/**\n * Draws a message. Note that the bounds have previously been updated by boundMessage.\n *\n * @param diagram - The parent of the message element\n * @param msgModel - The model containing fields describing a message\n * @param lineStartY - The Y coordinate at which the message line starts\n * @param diagObj - The diagram object.\n */\nconst drawMessage = async function (diagram, msgModel, lineStartY: number, diagObj: Diagram, msg) {\n const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel;\n const textDims = utils.calculateTextDimensions(message, messageFont(conf));\n const textObj = svgDrawCommon.getTextObj();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = 'messageText';\n textObj.dy = '1em';\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = 'center';\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n\n if (hasKatex(textObj.text)) {\n await drawKatex(diagram, textObj, { startx, stopx, starty: lineStartY });\n } else {\n drawText(diagram, textObj);\n }\n\n const textWidth = textDims.width;\n\n let line;\n if (startx === stopx) {\n const isAutoNumberOn = sequenceVisible || conf.showSequenceNumbers;\n const isReverse = isReverseArrowType(msg, diagObj);\n const isBidirectional = isBidirectionalArrowType(msg, diagObj);\n const lineStartX = startx + (isAutoNumberOn && (isReverse || isBidirectional) ? 10 : 0);\n\n if (conf.rightAngles) {\n line = diagram\n .append('path')\n .attr(\n 'd',\n `M ${lineStartX},${lineStartY} H ${\n startx + common.getMax(conf.width / 2, textWidth / 2)\n } V ${lineStartY + 25} H ${startx}`\n );\n } else {\n line = diagram\n .append('path')\n .attr(\n 'd',\n 'M ' +\n lineStartX +\n ',' +\n lineStartY +\n ' C ' +\n (lineStartX + 60) +\n ',' +\n (lineStartY - 10) +\n ' ' +\n (startx + 60) +\n ',' +\n (lineStartY + 30) +\n ' ' +\n startx +\n ',' +\n (lineStartY + 20)\n );\n }\n } else {\n line = diagram.append('line');\n line.attr('x1', startx);\n line.attr('y1', lineStartY);\n line.attr('x2', stopx);\n line.attr('y2', lineStartY);\n if (hasCentralConnection(msg, diagObj)) {\n drawCentralConnection(diagram, msg, msgModel, diagObj, startx, stopx, lineStartY);\n }\n }\n // Make an SVG Container\n // Draw the line\n if (\n type === diagObj.db.LINETYPE.DOTTED ||\n type === diagObj.db.LINETYPE.DOTTED_CROSS ||\n type === diagObj.db.LINETYPE.DOTTED_POINT ||\n type === diagObj.db.LINETYPE.DOTTED_OPEN ||\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_TOP_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_BOTTOM_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_TOP_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED\n ) {\n line.style('stroke-dasharray', '3, 3');\n line.attr('class', 'messageLine1');\n } else {\n line.attr('class', 'messageLine0');\n }\n\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n\n line.attr('stroke-width', 2);\n line.attr('stroke', 'none'); // handled by theme/css anyway\n line.style('fill', 'none'); // remove any fill colour\n\n if (type === diagObj.db.LINETYPE.SOLID_TOP || type === diagObj.db.LINETYPE.SOLID_TOP_DOTTED) {\n line.attr('marker-end', 'url(' + url + '#solidTopArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.SOLID_BOTTOM ||\n type === diagObj.db.LINETYPE.SOLID_BOTTOM_DOTTED\n ) {\n line.attr('marker-end', 'url(' + url + '#solidBottomArrowHead)');\n }\n if (type === diagObj.db.LINETYPE.STICK_TOP || type === diagObj.db.LINETYPE.STICK_TOP_DOTTED) {\n line.attr('marker-end', 'url(' + url + '#stickTopArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.STICK_BOTTOM ||\n type === diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED\n ) {\n line.attr('marker-end', 'url(' + url + '#stickBottomArrowHead)');\n }\n\n if (\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#solidBottomArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#solidTopArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE ||\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#stickBottomArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE ||\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#stickTopArrowHead)');\n }\n\n if (type === diagObj.db.LINETYPE.SOLID || type === diagObj.db.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n if (\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID ||\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#arrowhead)');\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n if (type === diagObj.db.LINETYPE.SOLID_POINT || type === diagObj.db.LINETYPE.DOTTED_POINT) {\n line.attr('marker-end', 'url(' + url + '#filled-head)');\n }\n\n if (type === diagObj.db.LINETYPE.SOLID_CROSS || type === diagObj.db.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)');\n }\n\n // add node number\n if (sequenceVisible || conf.showSequenceNumbers) {\n const isBidirectional =\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID ||\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED;\n\n const isReverseArrowType =\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE ||\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE ||\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;\n\n const SEQUENCE_NUMBER_RADIUS = 6;\n const hasCentralConn = hasCentralConnection(msg, diagObj);\n let lineStartX = startx;\n let lineStopX = stopx;\n\n if (isBidirectional) {\n // For bidirectional arrows, adjust the start position\n if (startx < stopx) {\n lineStartX = startx + SEQUENCE_NUMBER_RADIUS * 2;\n } else {\n lineStartX = startx - SEQUENCE_NUMBER_RADIUS + (hasCentralConn ? -5 : 0);\n lineStartX +=\n msg?.centralConnection === diagObj.db.LINETYPE.CENTRAL_CONNECTION_DUAL ||\n msg?.centralConnection === diagObj.db.LINETYPE.CENTRAL_CONNECTION_REVERSE\n ? -7.5\n : 0;\n }\n line.attr('x1', lineStartX);\n } else if (isReverseArrowType) {\n // For reverse arrows, adjust the stop position (where the arrowhead is)\n if (stopx > startx) {\n lineStopX = stopx - 2 * SEQUENCE_NUMBER_RADIUS;\n } else {\n lineStopX = stopx - SEQUENCE_NUMBER_RADIUS;\n lineStartX +=\n msg?.centralConnection === diagObj.db.LINETYPE.CENTRAL_CONNECTION_DUAL ||\n msg?.centralConnection === diagObj.db.LINETYPE.CENTRAL_CONNECTION_REVERSE\n ? -7.5\n : 0;\n }\n lineStopX += hasCentralConn ? 15 : 0;\n\n line.attr('x2', lineStopX);\n line.attr('x1', lineStartX);\n } else {\n line.attr('x1', startx + SEQUENCE_NUMBER_RADIUS);\n }\n\n // Calculate autonumber X position\n let autonumberX = 0;\n const isSelfMessage = startx === stopx;\n const isLeftToRight = startx <= stopx;\n\n if (isSelfMessage) {\n autonumberX = msgModel.fromBounds + 1;\n } else if (isReverseArrowType) {\n autonumberX = isLeftToRight ? msgModel.toBounds - 1 : msgModel.fromBounds + 1;\n } else {\n autonumberX = isLeftToRight ? msgModel.fromBounds + 1 : msgModel.toBounds - 1;\n }\n\n diagram\n .append('line')\n .attr('x1', autonumberX)\n .attr('y1', lineStartY)\n .attr('x2', autonumberX)\n .attr('y2', lineStartY)\n .attr('stroke-width', 0)\n .attr('marker-start', 'url(' + url + '#sequencenumber)');\n\n diagram\n .append('text')\n .attr('x', autonumberX)\n .attr('y', lineStartY + 4)\n .attr('font-family', 'sans-serif')\n .attr('font-size', '12px')\n .attr('text-anchor', 'middle')\n .attr('class', 'sequenceNumber')\n .text(sequenceIndex);\n }\n};\n\nconst addActorRenderingData = function (\n diagram,\n actors,\n createdActors: Map,\n actorKeys,\n verticalPos,\n messages,\n isFooter\n) {\n let prevWidth = 0;\n let prevMargin = 0;\n let prevBox = undefined;\n let maxHeight = 0;\n\n for (const actorKey of actorKeys) {\n const actor = actors.get(actorKey);\n const box = actor.box;\n\n // end of box\n if (prevBox && prevBox != box) {\n if (!isFooter) {\n bounds.models.addBox(prevBox);\n }\n prevMargin += conf.boxMargin + prevBox.margin;\n }\n\n // new box\n if (box && box != prevBox) {\n if (!isFooter) {\n box.x = prevWidth + prevMargin;\n box.y = verticalPos;\n }\n prevMargin += box.margin;\n }\n\n // Add some rendering data to the object\n actor.width = actor.width || conf.width;\n actor.height = common.getMax(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n\n maxHeight = common.getMax(maxHeight, actor.height);\n\n // if the actor is created by a message, widen margin\n if (createdActors.get(actor.name)) {\n prevMargin += actor.width / 2;\n }\n\n actor.x = prevWidth + prevMargin;\n actor.starty = bounds.getVerticalPos();\n\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n\n prevWidth += actor.width + prevMargin;\n if (actor.box) {\n actor.box.width = prevWidth + box.margin - actor.box.x;\n }\n prevMargin = actor.margin;\n prevBox = actor.box;\n bounds.models.addActor(actor);\n }\n\n // end of box\n if (prevBox && !isFooter) {\n bounds.models.addBox(prevBox);\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(maxHeight);\n};\n\nexport const drawActors = async function (diagram, actors, actorKeys, isFooter) {\n if (!isFooter) {\n for (const actorKey of actorKeys) {\n const actor = actors.get(actorKey);\n // Draw the box with the attached line\n await svgDraw.drawActor(diagram, actor, conf, false);\n }\n } else {\n let maxHeight = 0;\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n for (const actorKey of actorKeys) {\n const actor = actors.get(actorKey);\n if (!actor.stopy) {\n actor.stopy = bounds.getVerticalPos();\n }\n const height = await svgDraw.drawActor(diagram, actor, conf, true);\n maxHeight = common.getMax(maxHeight, height);\n }\n bounds.bumpVerticalPos(maxHeight + conf.boxMargin);\n }\n};\n\nexport const drawActorsPopup = function (diagram, actors, actorKeys, doc) {\n let maxHeight = 0;\n let maxWidth = 0;\n for (const actorKey of actorKeys) {\n const actor = actors.get(actorKey);\n const minMenuWidth = getRequiredPopupWidth(actor);\n const menuDimensions = svgDraw.drawPopup(\n diagram,\n actor,\n minMenuWidth,\n conf,\n conf.forceMenus,\n doc\n );\n if (menuDimensions.height > maxHeight) {\n maxHeight = menuDimensions.height;\n }\n if (menuDimensions.width + actor.x > maxWidth) {\n maxWidth = menuDimensions.width + actor.x;\n }\n }\n\n return { maxHeight: maxHeight, maxWidth: maxWidth };\n};\n\nexport const setConf = function (cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst actorActivations = function (actor) {\n return bounds.activations.filter(function (activation) {\n return activation.actor === actor;\n });\n};\n\nconst activationBounds = function (actor, actors) {\n // handle multiple stacked activations for same actor\n const actorObj = actors.get(actor);\n const activations = actorActivations(actor);\n\n const left = activations.reduce(\n function (acc, activation) {\n return common.getMin(acc, activation.startx);\n },\n actorObj.x + actorObj.width / 2 - 1\n );\n const right = activations.reduce(\n function (acc, activation) {\n return common.getMax(acc, activation.stopx);\n },\n actorObj.x + actorObj.width / 2 + 1\n );\n return [left, right];\n};\n\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n const loopWidth = loopWidths[msg.id].width;\n const textConf = messageFont(conf);\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n\n // const lines = common.splitBreaks(msg.message).length;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = common.getMax(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n log.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\n\n/**\n * Adjust the msgModel and the actor for the rendering in case the latter is created or destroyed by the msg\n * @param msg - the potentially creating or destroying message\n * @param msgModel - the model associated with the message\n * @param lineStartY - the y position of the message line\n * @param index - the index of the current actor under consideration\n * @param actors - the array of all actors\n * @param createdActors - the array of actors created in the diagram\n * @param destroyedActors - the array of actors destroyed in the diagram\n */\nfunction adjustCreatedDestroyedData(\n msg,\n msgModel,\n lineStartY,\n index,\n actors,\n createdActors,\n destroyedActors\n) {\n function receiverAdjustment(actor, adjustment) {\n if (actor.x < actors.get(msg.from).x) {\n bounds.insert(\n msgModel.stopx - adjustment,\n msgModel.starty,\n msgModel.startx,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.stopx = msgModel.stopx + adjustment;\n } else {\n bounds.insert(\n msgModel.startx,\n msgModel.starty,\n msgModel.stopx + adjustment,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.stopx = msgModel.stopx - adjustment;\n }\n }\n\n function senderAdjustment(actor, adjustment) {\n if (actor.x < actors.get(msg.to).x) {\n bounds.insert(\n msgModel.startx - adjustment,\n msgModel.starty,\n msgModel.stopx,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.startx = msgModel.startx + adjustment;\n } else {\n bounds.insert(\n msgModel.stopx,\n msgModel.starty,\n msgModel.startx + adjustment,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.startx = msgModel.startx - adjustment;\n }\n }\n const actorArray = [\n PARTICIPANT_TYPE.ACTOR,\n PARTICIPANT_TYPE.CONTROL,\n PARTICIPANT_TYPE.ENTITY,\n PARTICIPANT_TYPE.DATABASE,\n ];\n\n // if it is a create message\n if (createdActors.get(msg.to) == index) {\n const actor = actors.get(msg.to);\n const adjustment = actorArray.includes(actor.type)\n ? ACTOR_TYPE_WIDTH / 2 + 3\n : actor.width / 2 + 3;\n receiverAdjustment(actor, adjustment);\n actor.starty = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n }\n // if it is a destroy sender message\n else if (destroyedActors.get(msg.from) == index) {\n const actor = actors.get(msg.from);\n if (conf.mirrorActors) {\n const adjustment = actorArray.includes(actor.type) ? ACTOR_TYPE_WIDTH / 2 : actor.width / 2;\n senderAdjustment(actor, adjustment);\n }\n actor.stopy = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n }\n // if it is a destroy receiver message\n else if (destroyedActors.get(msg.to) == index) {\n const actor = actors.get(msg.to);\n if (conf.mirrorActors) {\n const adjustment = actorArray.includes(actor.type)\n ? ACTOR_TYPE_WIDTH / 2 + 3\n : actor.width / 2 + 3;\n receiverAdjustment(actor, adjustment);\n }\n actor.stopy = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n }\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n *\n * @param _text - The text of the diagram\n * @param id - The id of the diagram which will be used as a DOM element id\u00A8\n * @param _version - Mermaid version from package.json\n * @param diagObj - A standard diagram containing the db and the text and type etc of the diagram\n */\nexport const draw = async function (_text: string, id: string, _version: string, diagObj: Diagram) {\n const { securityLevel, sequence } = getConfig();\n conf = sequence;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n bounds.init();\n log.debug(diagObj.db);\n\n const diagram =\n securityLevel === 'sandbox' ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n\n // Fetch data from the parsing\n const actors = diagObj.db.getActors();\n const createdActors = diagObj.db.getCreatedActors();\n const destroyedActors = diagObj.db.getDestroyedActors();\n const boxes = diagObj.db.getBoxes();\n let actorKeys = diagObj.db.getActorKeys();\n const messages = diagObj.db.getMessages();\n const title = diagObj.db.getDiagramTitle();\n const hasBoxes = diagObj.db.hasAtLeastOneBox();\n const hasBoxTitles = diagObj.db.hasAtLeastOneBoxWithTitle();\n const maxMessageWidthPerActor = await getMaxMessageWidthPerActor(actors, messages, diagObj);\n conf.height = await calculateActorMargins(actors, maxMessageWidthPerActor, boxes);\n\n svgDraw.insertComputerIcon(diagram);\n svgDraw.insertDatabaseIcon(diagram);\n svgDraw.insertClockIcon(diagram);\n\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n if (hasBoxTitles) {\n bounds.bumpVerticalPos(boxes[0].textMaxHeight);\n }\n }\n\n if (conf.hideUnusedParticipants === true) {\n const newActors = new Set();\n messages.forEach((message) => {\n newActors.add(message.from);\n newActors.add(message.to);\n });\n actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey));\n }\n\n addActorRenderingData(diagram, actors, createdActors, actorKeys, 0, messages, false);\n const loopWidths = await calculateLoopBounds(messages, actors, maxMessageWidthPerActor, diagObj);\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram);\n svgDraw.insertArrowCrossHead(diagram);\n svgDraw.insertArrowFilledHead(diagram);\n svgDraw.insertSequenceNumber(diagram);\n svgDraw.insertSolidTopArrowHead(diagram);\n svgDraw.insertSolidBottomArrowHead(diagram);\n svgDraw.insertStickTopArrowHead(diagram);\n svgDraw.insertStickBottomArrowHead(diagram);\n\n /**\n * @param msg - The message to draw.\n * @param verticalPos - The vertical position of the message.\n */\n function activeEnd(msg: any, verticalPos: number) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from).length\n );\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n\n // Draw the messages/signals\n let sequenceIndex = 1;\n let sequenceIndexStep = 1;\n const messagesToDraw = [];\n const backgrounds = [];\n let index = 0;\n for (const msg of messages) {\n let loopModel, noteModel, msgModel;\n\n switch (msg.type) {\n case diagObj.db.LINETYPE.NOTE:\n bounds.resetVerticalPos();\n noteModel = msg.noteModel;\n await drawNote(diagram, noteModel);\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram, actors);\n break;\n case diagObj.db.LINETYPE.CENTRAL_CONNECTION:\n bounds.newActivation(msg, diagram, actors);\n break;\n case diagObj.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:\n bounds.newActivation(msg, diagram, actors);\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case diagObj.db.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'loop', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, (message) =>\n bounds.newLoop(undefined, message.message)\n );\n break;\n case diagObj.db.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n backgrounds.push(loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case diagObj.db.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'opt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'alt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n bounds.saveVerticalPos();\n break;\n case diagObj.db.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'par', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.AUTONUMBER:\n sequenceIndex = msg.message.start || sequenceIndex;\n sequenceIndexStep = msg.message.step || sequenceIndexStep;\n if (msg.message.visible) {\n diagObj.db.enableSequenceNumbers();\n } else {\n diagObj.db.disableSequenceNumbers();\n }\n break;\n case diagObj.db.LINETYPE.CRITICAL_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'critical', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.BREAK_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.BREAK_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'break', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n msgModel.sequenceVisible = diagObj.db.showSequenceNumbers();\n const lineStartY = await boundMessage(diagram, msgModel);\n adjustCreatedDestroyedData(\n msg,\n msgModel,\n lineStartY,\n index,\n actors,\n createdActors,\n destroyedActors\n );\n messagesToDraw.push({ messageModel: msgModel, lineStartY: lineStartY, msg });\n bounds.models.addMessage(msgModel);\n } catch (e) {\n log.error('error while drawing message', e);\n }\n }\n\n // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)\n if (\n [\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n\n diagObj.db.LINETYPE.SOLID_TOP,\n diagObj.db.LINETYPE.SOLID_BOTTOM,\n diagObj.db.LINETYPE.STICK_TOP,\n diagObj.db.LINETYPE.STICK_BOTTOM,\n\n diagObj.db.LINETYPE.SOLID_TOP_DOTTED,\n diagObj.db.LINETYPE.SOLID_BOTTOM_DOTTED,\n diagObj.db.LINETYPE.STICK_TOP_DOTTED,\n diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT,\n diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID,\n diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED,\n ].includes(msg.type)\n ) {\n sequenceIndex = sequenceIndex + sequenceIndexStep;\n }\n index++;\n }\n\n log.debug('createdActors', createdActors);\n log.debug('destroyedActors', destroyedActors);\n await drawActors(diagram, actors, actorKeys, false);\n\n for (const e of messagesToDraw) {\n await drawMessage(diagram, e.messageModel, e.lineStartY, diagObj, e.msg);\n }\n if (conf.mirrorActors) {\n await drawActors(diagram, actors, actorKeys, true);\n }\n backgrounds.forEach((e) => svgDraw.drawBackgroundRect(diagram, e));\n fixLifeLineHeights(diagram, actors, actorKeys, conf);\n\n for (const box of bounds.models.boxes) {\n box.height = bounds.getVerticalPos() - box.y;\n bounds.insert(box.x, box.y, box.x + box.width, box.height);\n const boxPadding = conf.boxMargin * 2;\n box.startx = box.x - boxPadding;\n box.starty = box.y - boxPadding * 0.25;\n box.stopx = box.startx + box.width + 2 * boxPadding;\n box.stopy = box.starty + box.height + boxPadding * 0.75;\n box.stroke = 'rgb(0,0,0, 0.5)';\n svgDraw.drawBox(diagram, box, conf);\n }\n\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n }\n\n // only draw popups for the top row of actors.\n const requiredBoxSize = drawActorsPopup(diagram, actors, actorKeys, doc);\n\n const { bounds: box } = bounds.getBounds();\n\n if (box.startx === undefined) {\n box.startx = 0;\n }\n if (box.starty === undefined) {\n box.starty = 0;\n }\n if (box.stopx === undefined) {\n box.stopx = 0;\n }\n if (box.stopy === undefined) {\n box.stopy = 0;\n }\n\n // Make sure the height of the diagram supports long menus.\n let boxHeight = box.stopy - box.starty;\n if (boxHeight < requiredBoxSize.maxHeight) {\n boxHeight = requiredBoxSize.maxHeight;\n }\n\n let height = boxHeight + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n\n // Make sure the width of the diagram supports wide menus.\n let boxWidth = box.stopx - box.startx;\n if (boxWidth < requiredBoxSize.maxWidth) {\n boxWidth = requiredBoxSize.maxWidth;\n }\n const width = boxWidth + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX)\n .attr('y', -25);\n }\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n const extraVertForTitle = title ? 40 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle)\n );\n\n log.debug(`models:`, bounds.models);\n};\n\n/**\n * Retrieves the max message width of each actor, supports signals (messages, loops) and notes.\n *\n * It will enumerate each given message, and will determine its text width, in relation to the actor\n * it originates from, and destined to.\n *\n * @param actors - The actors map\n * @param messages - A list of message objects to iterate\n * @param diagObj - The diagram object.\n * @returns The max message width of each actor.\n */\nasync function getMaxMessageWidthPerActor(\n actors: Map,\n messages: any[],\n diagObj: Diagram\n): Promise> {\n const maxMessageWidthPerActor = {};\n\n for (const msg of messages) {\n if (actors.get(msg.to) && actors.get(msg.from)) {\n const actor = actors.get(msg.to);\n\n // If this is the first actor, and the message is left of it, no need to calculate the margin\n if (msg.placement === diagObj.db.PLACEMENT.LEFTOF && !actor.prevActor) {\n continue;\n }\n\n // If this is the last actor, and the message is right of it, no need to calculate the margin\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF && !actor.nextActor) {\n continue;\n }\n\n const isNote = msg.placement !== undefined;\n const isMessage = !isNote;\n\n const textFont = isNote ? noteFont(conf) : messageFont(conf);\n const wrappedMessage = msg.wrap\n ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont)\n : msg.message;\n const messageDimensions = hasKatex(wrappedMessage)\n ? await calculateMathMLDimensions(msg.message, getConfig())\n : utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n\n /*\n * The following scenarios should be supported:\n *\n * - There's a message (non-note) between fromActor and toActor\n * - If fromActor is on the right and toActor is on the left, we should\n * define the toActor's margin\n * - If fromActor is on the left and toActor is on the right, we should\n * define the fromActor's margin\n * - There's a note, in which case fromActor == toActor\n * - If the note is to the left of the actor, we should define the previous actor\n * margin\n * - If the note is on the actor, we should define both the previous and next actor\n * margins, each being the half of the note size\n * - If the note is on the right of the actor, we should define the current actor\n * margin\n */\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = common.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n\n maxMessageWidthPerActor[msg.to] = common.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = common.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = common.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n }\n\n log.debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n}\n\nconst getRequiredPopupWidth = function (actor) {\n let requiredPopupWidth = 0;\n const textFont = actorFont(conf);\n for (const key in actor.links) {\n const labelDimensions = utils.calculateTextDimensions(key, textFont);\n const labelWidth = labelDimensions.width + 2 * conf.wrapPadding + 2 * conf.boxMargin;\n if (requiredPopupWidth < labelWidth) {\n requiredPopupWidth = labelWidth;\n }\n }\n\n return requiredPopupWidth;\n};\n\n/**\n * This will calculate the optimal margin for each given actor,\n * for a given actor \u2192 messageWidth map.\n *\n * An actor's margin is determined by the width of the actor, the width of the largest message that\n * originates from it, and the configured conf.actorMargin.\n *\n * @param actors - The actors map to calculate margins for\n * @param actorToMessageWidth - A map of actor key \u2192 max message width it holds\n * @param boxes - The boxes around the actors if any\n */\nasync function calculateActorMargins(\n actors: Map,\n actorToMessageWidth: Awaited>,\n boxes\n) {\n let maxHeight = 0;\n for (const prop of actors.keys()) {\n const actor = actors.get(prop);\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n actorFont(conf)\n );\n }\n const actDims = hasKatex(actor.description)\n ? await calculateMathMLDimensions(actor.description, getConfig())\n : utils.calculateTextDimensions(actor.description, actorFont(conf));\n\n actor.width = actor.wrap\n ? conf.width\n : common.getMax(conf.width, actDims.width + 2 * conf.wrapPadding);\n\n actor.height = actor.wrap ? common.getMax(actDims.height, conf.height) : conf.height;\n maxHeight = common.getMax(maxHeight, actor.height);\n }\n\n for (const actorKey in actorToMessageWidth) {\n const actor = actors.get(actorKey);\n\n if (!actor) {\n continue;\n }\n\n const nextActor = actors.get(actor.nextActor);\n\n // No need to space out an actor that doesn't have a next link\n if (!nextActor) {\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2;\n actor.margin = common.getMax(actorWidth, conf.actorMargin);\n continue;\n }\n\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n\n actor.margin = common.getMax(actorWidth, conf.actorMargin);\n }\n\n let maxBoxHeight = 0;\n boxes.forEach((box) => {\n const textFont = messageFont(conf);\n let totalWidth = box.actorKeys.reduce((total, aKey) => {\n return (total += actors.get(aKey).width + (actors.get(aKey).margin || 0));\n }, 0);\n\n const standardBoxPadding = conf.boxMargin * 8;\n totalWidth += standardBoxPadding;\n\n totalWidth -= 2 * conf.boxTextMargin;\n if (box.wrap) {\n box.name = utils.wrapLabel(box.name, totalWidth - 2 * conf.wrapPadding, textFont);\n }\n\n const boxMsgDimensions = utils.calculateTextDimensions(box.name, textFont);\n maxBoxHeight = common.getMax(boxMsgDimensions.height, maxBoxHeight);\n const minWidth = common.getMax(totalWidth, boxMsgDimensions.width + 2 * conf.wrapPadding);\n box.margin = conf.boxTextMargin;\n if (totalWidth < minWidth) {\n const missing = (minWidth - totalWidth) / 2;\n box.margin += missing;\n }\n });\n boxes.forEach((box) => (box.textMaxHeight = maxBoxHeight));\n\n return common.getMax(maxHeight, conf.height);\n}\n\nconst buildNoteModel = async function (msg, actors, diagObj) {\n const fromActor = actors.get(msg.from);\n const toActor = actors.get(msg.to);\n const startx = fromActor.x;\n const stopx = toActor.x;\n const shouldWrap = msg.wrap && msg.message;\n\n let textDimensions: { width: number; height: number; lineHeight?: number } = hasKatex(msg.message)\n ? await calculateMathMLDimensions(msg.message, getConfig())\n : utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message,\n noteFont(conf)\n );\n const noteModel = {\n width: shouldWrap\n ? conf.width\n : common.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: fromActor.x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message,\n };\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap\n ? common.getMax(conf.width, textDimensions.width)\n : common.getMax(\n fromActor.width / 2 + toActor.width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (fromActor.width + conf.actorMargin) / 2;\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap\n ? common.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin)\n : common.getMax(\n fromActor.width / 2 + toActor.width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (fromActor.width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = utils.calculateTextDimensions(\n shouldWrap\n ? utils.wrapLabel(msg.message, common.getMax(conf.width, fromActor.width), noteFont(conf))\n : msg.message,\n noteFont(conf)\n );\n noteModel.width = shouldWrap\n ? common.getMax(conf.width, fromActor.width)\n : common.getMax(fromActor.width, conf.width, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (fromActor.width - noteModel.width) / 2;\n } else {\n noteModel.width =\n Math.abs(startx + fromActor.width / 2 - (stopx + toActor.width / 2)) + conf.actorMargin;\n noteModel.startx =\n startx < stopx\n ? startx + fromActor.width / 2 - conf.actorMargin / 2\n : stopx + toActor.width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = utils.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n noteFont(conf)\n );\n }\n log.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\n\n// Central connection positioning constants\nconst CENTRAL_CONNECTION_BASE_OFFSET = 4;\nconst CENTRAL_CONNECTION_BIDIRECTIONAL_OFFSET = 6;\n\n/**\n * Check if a message has central connection\n * @param msg - The message object\n * @param diagObj - The diagram object containing LINETYPE constants\n * @returns True if the message has any type of central connection\n */\nconst hasCentralConnection = function (msg, diagObj) {\n const { CENTRAL_CONNECTION, CENTRAL_CONNECTION_REVERSE, CENTRAL_CONNECTION_DUAL } =\n diagObj.db.LINETYPE;\n return [CENTRAL_CONNECTION, CENTRAL_CONNECTION_REVERSE, CENTRAL_CONNECTION_DUAL].includes(\n msg.centralConnection\n );\n};\n\n/**\n * Calculate the positioning offset for central connection arrows\n * @param msg - The message object\n * @param diagObj - The diagram object containing LINETYPE constants\n * @param isArrowToRight - Whether the arrow is pointing to the right\n * @returns The offset to apply to startx position\n */\nconst calculateCentralConnectionOffset = function (msg, diagObj, isArrowToRight) {\n const {\n CENTRAL_CONNECTION_REVERSE,\n CENTRAL_CONNECTION_DUAL,\n BIDIRECTIONAL_SOLID,\n BIDIRECTIONAL_DOTTED,\n } = diagObj.db.LINETYPE;\n\n let offset = 0;\n\n if (\n msg.centralConnection === CENTRAL_CONNECTION_REVERSE ||\n msg.centralConnection === CENTRAL_CONNECTION_DUAL\n ) {\n offset += CENTRAL_CONNECTION_BASE_OFFSET;\n }\n\n if (\n (msg.centralConnection === CENTRAL_CONNECTION_REVERSE ||\n msg.centralConnection === CENTRAL_CONNECTION_DUAL) &&\n (msg.type === BIDIRECTIONAL_SOLID || msg.type === BIDIRECTIONAL_DOTTED)\n ) {\n offset += isArrowToRight ? 0 : -CENTRAL_CONNECTION_BIDIRECTIONAL_OFFSET;\n }\n\n return offset;\n};\n\n/**\n * Check if a message is a reverse arrow type\n * @param msg - The message object\n * @param diagObj - The diagram object containing LINETYPE constants\n * @returns True if the message is a reverse arrow type\n */\nconst isReverseArrowType = function (msg, diagObj) {\n const {\n SOLID_ARROW_TOP_REVERSE,\n SOLID_ARROW_TOP_REVERSE_DOTTED,\n SOLID_ARROW_BOTTOM_REVERSE,\n SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n STICK_ARROW_TOP_REVERSE,\n STICK_ARROW_TOP_REVERSE_DOTTED,\n STICK_ARROW_BOTTOM_REVERSE,\n STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n } = diagObj.db.LINETYPE;\n\n return [\n SOLID_ARROW_TOP_REVERSE,\n SOLID_ARROW_TOP_REVERSE_DOTTED,\n SOLID_ARROW_BOTTOM_REVERSE,\n SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n STICK_ARROW_TOP_REVERSE,\n STICK_ARROW_TOP_REVERSE_DOTTED,\n STICK_ARROW_BOTTOM_REVERSE,\n STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n ].includes(msg.type);\n};\n\n/**\n * Check if a message is a bidirectional arrow type\n * @param msg - The message object\n * @param diagObj - The diagram object containing LINETYPE constants\n * @returns True if the message is a bidirectional arrow type\n */\nconst isBidirectionalArrowType = function (msg, diagObj) {\n const { BIDIRECTIONAL_SOLID, BIDIRECTIONAL_DOTTED } = diagObj.db.LINETYPE;\n return [BIDIRECTIONAL_SOLID, BIDIRECTIONAL_DOTTED].includes(msg.type);\n};\n\nconst buildMessageModel = function (msg, actors, diagObj) {\n if (\n ![\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n\n diagObj.db.LINETYPE.SOLID_TOP,\n diagObj.db.LINETYPE.SOLID_BOTTOM,\n diagObj.db.LINETYPE.STICK_TOP,\n diagObj.db.LINETYPE.STICK_BOTTOM,\n\n diagObj.db.LINETYPE.SOLID_TOP_DOTTED,\n diagObj.db.LINETYPE.SOLID_BOTTOM_DOTTED,\n diagObj.db.LINETYPE.STICK_TOP_DOTTED,\n diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT,\n diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID,\n diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED,\n ].includes(msg.type)\n ) {\n return {};\n }\n const [fromLeft, fromRight] = activationBounds(msg.from, actors);\n const [toLeft, toRight] = activationBounds(msg.to, actors);\n const isArrowToRight = fromLeft <= toLeft;\n let startx = isArrowToRight ? fromRight : fromLeft;\n let stopx = isArrowToRight ? toLeft : toRight;\n\n // Apply central connection positioning adjustments\n startx += calculateCentralConnectionOffset(msg, diagObj, isArrowToRight);\n // As the line width is considered, the left and right values will be off by 2.\n const isArrowToActivation = Math.abs(toLeft - toRight) > 2;\n\n /**\n * Adjust the value based on the arrow direction\n * @param value - The value to adjust\n * @returns The adjustment with correct sign to be added to the actual value.\n */\n const adjustValue = (value: number) => {\n return isArrowToRight ? -value : value;\n };\n\n if (msg.from === msg.to) {\n // This is a self reference, so we need to make sure the arrow is drawn correctly\n // There are many checks in the downstream rendering that checks for equality.\n // The lines on loops will be off by few pixels, but that's fine for now.\n stopx = startx;\n } else {\n /**\n * This is an edge case for the first activation.\n * Proper fix would require significant changes.\n * So, we set an activate flag in the message, and cross check that with isToActivation\n * In cases where the message is to an activation that was properly detected, we don't want to move the arrow head\n * The activation will not be detected on the first message, so we need to move the arrow head\n */\n if (msg.activate && !isArrowToActivation) {\n stopx += adjustValue(conf.activationWidth / 2 - 1);\n }\n\n /**\n * Shorten the length of arrow at the end and move the marker forward (using refX) to have a clean arrowhead\n * This is not required for open arrows that don't have arrowheads\n */\n if (\n ![\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n\n diagObj.db.LINETYPE.STICK_TOP,\n diagObj.db.LINETYPE.STICK_BOTTOM,\n\n diagObj.db.LINETYPE.STICK_TOP_DOTTED,\n diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,\n\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,\n ].includes(msg.type)\n ) {\n stopx += adjustValue(3);\n }\n\n /**\n * Shorten start position of bidirectional arrow to accommodate for second arrowhead\n */\n if (\n [\n diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID,\n diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,\n ].includes(msg.type)\n ) {\n startx -= adjustValue(3);\n }\n }\n\n const allBounds = [fromLeft, fromRight, toLeft, toRight];\n const boundedWidth = Math.abs(startx - stopx);\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n common.getMax(boundedWidth + 2 * conf.wrapPadding, conf.width),\n messageFont(conf)\n );\n }\n const msgDims = utils.calculateTextDimensions(msg.message, messageFont(conf));\n\n return {\n width: common.getMax(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx,\n stopx,\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds),\n };\n};\n\nconst calculateLoopBounds = async function (messages, actors, _maxWidthPerActor, diagObj) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n\n for (const msg of messages) {\n switch (msg.type) {\n case diagObj.db.LINETYPE.LOOP_START:\n case diagObj.db.LINETYPE.ALT_START:\n case diagObj.db.LINETYPE.OPT_START:\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n case diagObj.db.LINETYPE.CRITICAL_START:\n case diagObj.db.LINETYPE.BREAK_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0,\n });\n break;\n case diagObj.db.LINETYPE.ALT_ELSE:\n case diagObj.db.LINETYPE.PAR_AND:\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case diagObj.db.LINETYPE.LOOP_END:\n case diagObj.db.LINETYPE.ALT_END:\n case diagObj.db.LINETYPE.OPT_END:\n case diagObj.db.LINETYPE.PAR_END:\n case diagObj.db.LINETYPE.CRITICAL_END:\n case diagObj.db.LINETYPE.BREAK_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors.get(msg.from ? msg.from : msg.to.actor);\n const stackedSize = actorActivations(msg.from ? msg.from : msg.to.actor).length;\n const x =\n actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from,\n enabled: true,\n };\n bounds.activations.push(toAdd);\n }\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations\n .map((a) => a.actor)\n .lastIndexOf(msg.from);\n bounds.activations.splice(lastActorActivationIdx, 1).splice(0, 1);\n }\n break;\n }\n const isNote = msg.placement !== undefined;\n if (isNote) {\n noteModel = await buildNoteModel(msg, actors, diagObj);\n msg.noteModel = noteModel;\n stack.forEach((stk) => {\n current = stk;\n current.from = common.getMin(current.from, noteModel.startx);\n current.to = common.getMax(current.to, noteModel.startx + noteModel.width);\n current.width =\n common.getMax(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors, diagObj);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach((stk) => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n const from = actors.get(msg.from);\n const to = actors.get(msg.to);\n current.from = common.getMin(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = common.getMax(\n to.x + msgModel.width / 2,\n to.x + from.width / 2,\n current.to\n );\n current.width =\n common.getMax(current.width, Math.abs(current.to - current.from)) -\n conf.labelBoxWidth;\n } else {\n current.from = common.getMin(msgModel.startx, current.from);\n current.to = common.getMax(msgModel.stopx, current.to);\n current.width = common.getMax(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n }\n bounds.activations = [];\n log.debug('Loop type widths:', loops);\n return loops;\n};\n\nexport default {\n bounds,\n drawActors,\n drawActorsPopup,\n setConf,\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/sequenceDiagram.jison';\nimport { SequenceDB } from './sequenceDb.js';\nimport styles from './styles.js';\nimport { setConfig } from '../../diagram-api/diagramAPI.js';\nimport renderer from './sequenceRenderer.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new SequenceDB();\n },\n renderer,\n styles,\n init: (cnf: MermaidConfig) => {\n if (!cnf.sequence) {\n cnf.sequence = {};\n }\n if (cnf.wrap) {\n cnf.sequence.wrap = cnf.wrap;\n setConfig({ sequence: { wrap: cnf.wrap } });\n }\n },\n};\n"], - "mappings": "+jBAyEA,IAAIA,IAAU,UAAU,CACxB,IAAIC,EAAEC,EAAA,SAASC,GAAEC,EAAEH,EAAEI,EAAE,CAAC,IAAIJ,EAAEA,GAAG,CAAC,EAAEI,EAAEF,GAAE,OAAOE,IAAIJ,EAAEE,GAAEE,CAAC,CAAC,EAAED,EAAE,CAAC,OAAOH,CAAC,EAAhE,KAAkEK,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,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GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEtC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEyE,GAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEzE,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,GAAGD,CAAG,EAAE,CAAC,GAAG,IAAI,GAAGA,CAAG,EAAE,CAAC,GAAG,IAAI,GAAGA,CAAG,EAAE,CAAC,GAAG,IAAI,IAAIqC,EAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAGrC,CAAG,EAAE,CAAC,GAAG,IAAI,IAAIqC,EAAI,EAAE,CAAC,GAAG,IAAI,IAAIA,EAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE3E,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEoE,GAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,GAAGtC,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAEhC,EAAEoE,GAAI,CAAC,EAAE,EAAE,CAAC,EAAEpE,EAAEoE,GAAI,CAAC,EAAE,EAAE,CAAC,EAAEpE,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,IAAIoC,EAAI,EAAE,CAAC,GAAG,IAAI,IAAIA,EAAI,EAAE,CAAC,GAAG,IAAI,IAAIA,EAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,IAAIA,EAAI,EAAE,CAAC,GAAG,IAAI,GAAGrC,CAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,GAAGA,CAAG,EAAEtC,EAAEoE,GAAI,CAAC,EAAE,EAAE,CAAC,EAAEpE,EAAEsE,GAAK9D,EAAI,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,EAAER,EAAEuE,GAAK/D,EAAI,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,EAAER,EAAEwE,GAAKhE,EAAI,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,EAAER,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEyE,GAAK,CAAC,EAAE,EAAE,CAAC,EAAEzE,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,IAAIoC,EAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAC9iM,eAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAClP,WAAY1E,EAAA,SAAqBmF,EAAKC,EAAM,CACxC,GAAIA,EAAK,YACL,KAAK,MAAMD,CAAG,MACX,CACH,IAAIE,EAAQ,IAAI,MAAMF,CAAG,EACzB,MAAAE,EAAM,KAAOD,EACPC,CACV,CACJ,EARY,cASZ,MAAOrF,EAAA,SAAesF,EAAO,CACzB,IAAIC,EAAO,KAAMC,EAAQ,CAAC,CAAC,EAAGC,EAAS,CAAC,EAAGC,EAAS,CAAC,IAAI,EAAGC,EAAS,CAAC,EAAGC,GAAQ,KAAK,MAAOjB,EAAS,GAAIE,GAAW,EAAGD,GAAS,EAAGiB,GAAa,EAAGC,GAAS,EAAGC,GAAM,EAClKC,GAAOL,EAAO,MAAM,KAAK,UAAW,CAAC,EACrCM,EAAQ,OAAO,OAAO,KAAK,KAAK,EAChCC,GAAc,CAAE,GAAI,CAAC,CAAE,EAC3B,QAASjG,MAAK,KAAK,GACX,OAAO,UAAU,eAAe,KAAK,KAAK,GAAIA,EAAC,IAC/CiG,GAAY,GAAGjG,EAAC,EAAI,KAAK,GAAGA,EAAC,GAGrCgG,EAAM,SAASX,EAAOY,GAAY,EAAE,EACpCA,GAAY,GAAG,MAAQD,EACvBC,GAAY,GAAG,OAAS,KACpB,OAAOD,EAAM,OAAU,MACvBA,EAAM,OAAS,CAAC,GAEpB,IAAIE,GAAQF,EAAM,OAClBN,EAAO,KAAKQ,EAAK,EACjB,IAAIC,GAASH,EAAM,SAAWA,EAAM,QAAQ,OACxC,OAAOC,GAAY,GAAG,YAAe,WACrC,KAAK,WAAaA,GAAY,GAAG,WAEjC,KAAK,WAAa,OAAO,eAAe,IAAI,EAAE,WAElD,SAASG,GAASC,GAAG,CACjBd,EAAM,OAASA,EAAM,OAAS,EAAIc,GAClCZ,EAAO,OAASA,EAAO,OAASY,GAChCX,EAAO,OAASA,EAAO,OAASW,EACpC,CAJStG,EAAAqG,GAAA,YAKD,SAASE,IAAM,CACf,IAAIC,GACJ,OAAAA,GAAQf,EAAO,IAAI,GAAKQ,EAAM,IAAI,GAAKF,GACnC,OAAOS,IAAU,WACbA,cAAiB,QACjBf,EAASe,GACTA,GAAQf,EAAO,IAAI,GAEvBe,GAAQjB,EAAK,SAASiB,EAAK,GAAKA,IAE7BA,EACX,CAXaxG,EAAAuG,GAAA,OAajB,QADIE,EAAQC,GAAgBC,GAAOC,GAAQC,GAAGC,GAAGC,GAAQ,CAAC,EAAGC,GAAGC,GAAKC,GAAUC,KAClE,CAUT,GATAR,GAAQnB,EAAMA,EAAM,OAAS,CAAC,EAC1B,KAAK,eAAemB,EAAK,EACzBC,GAAS,KAAK,eAAeD,EAAK,IAE9BF,IAAW,MAAQ,OAAOA,EAAU,OACpCA,EAASF,GAAI,GAEjBK,GAAShB,GAAMe,EAAK,GAAKf,GAAMe,EAAK,EAAEF,CAAM,GAE5C,OAAOG,GAAW,KAAe,CAACA,GAAO,QAAU,CAACA,GAAO,CAAC,EAAG,CAC/D,IAAIQ,GAAS,GACbD,GAAW,CAAC,EACZ,IAAKH,MAAKpB,GAAMe,EAAK,EACb,KAAK,WAAWK,EAAC,GAAKA,GAAIlB,IAC1BqB,GAAS,KAAK,IAAO,KAAK,WAAWH,EAAC,EAAI,GAAI,EAGlDf,EAAM,aACNmB,GAAS,wBAA0BvC,GAAW,GAAK;AAAA,EAAQoB,EAAM,aAAa,EAAI;AAAA,YAAiBkB,GAAS,KAAK,IAAI,EAAI,WAAc,KAAK,WAAWV,CAAM,GAAKA,GAAU,IAE5KW,GAAS,wBAA0BvC,GAAW,GAAK,iBAAmB4B,GAAUV,GAAM,eAAiB,KAAQ,KAAK,WAAWU,CAAM,GAAKA,GAAU,KAExJ,KAAK,WAAWW,GAAQ,CACpB,KAAMnB,EAAM,MACZ,MAAO,KAAK,WAAWQ,CAAM,GAAKA,EAClC,KAAMR,EAAM,SACZ,IAAKE,GACL,SAAUgB,EACd,CAAC,CACL,CACA,GAAIP,GAAO,CAAC,YAAa,OAASA,GAAO,OAAS,EAC9C,MAAM,IAAI,MAAM,oDAAsDD,GAAQ,YAAcF,CAAM,EAEtG,OAAQG,GAAO,CAAC,EAAG,CACnB,IAAK,GACDpB,EAAM,KAAKiB,CAAM,EACjBf,EAAO,KAAKO,EAAM,MAAM,EACxBN,EAAO,KAAKM,EAAM,MAAM,EACxBT,EAAM,KAAKoB,GAAO,CAAC,CAAC,EACpBH,EAAS,KACJC,IASDD,EAASC,GACTA,GAAiB,OATjB9B,GAASqB,EAAM,OACftB,EAASsB,EAAM,OACfpB,GAAWoB,EAAM,SACjBE,GAAQF,EAAM,OACVJ,GAAa,GACbA,MAMR,MACJ,IAAK,GAwBD,GAvBAoB,GAAM,KAAK,aAAaL,GAAO,CAAC,CAAC,EAAE,CAAC,EACpCG,GAAM,EAAIrB,EAAOA,EAAO,OAASuB,EAAG,EACpCF,GAAM,GAAK,CACP,WAAYpB,EAAOA,EAAO,QAAUsB,IAAO,EAAE,EAAE,WAC/C,UAAWtB,EAAOA,EAAO,OAAS,CAAC,EAAE,UACrC,aAAcA,EAAOA,EAAO,QAAUsB,IAAO,EAAE,EAAE,aACjD,YAAatB,EAAOA,EAAO,OAAS,CAAC,EAAE,WAC3C,EACIS,KACAW,GAAM,GAAG,MAAQ,CACbpB,EAAOA,EAAO,QAAUsB,IAAO,EAAE,EAAE,MAAM,CAAC,EAC1CtB,EAAOA,EAAO,OAAS,CAAC,EAAE,MAAM,CAAC,CACrC,GAEJmB,GAAI,KAAK,cAAc,MAAMC,GAAO,CAChCpC,EACAC,GACAC,GACAqB,GAAY,GACZU,GAAO,CAAC,EACRlB,EACAC,CACJ,EAAE,OAAOK,EAAI,CAAC,EACV,OAAOc,GAAM,IACb,OAAOA,GAEPG,KACAzB,EAAQA,EAAM,MAAM,EAAG,GAAKyB,GAAM,CAAC,EACnCvB,EAASA,EAAO,MAAM,EAAG,GAAKuB,EAAG,EACjCtB,EAASA,EAAO,MAAM,EAAG,GAAKsB,EAAG,GAErCzB,EAAM,KAAK,KAAK,aAAaoB,GAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1ClB,EAAO,KAAKqB,GAAM,CAAC,EACnBpB,EAAO,KAAKoB,GAAM,EAAE,EACpBG,GAAWtB,GAAMJ,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAEA,EAAMA,EAAM,OAAS,CAAC,CAAC,EACjEA,EAAM,KAAK0B,EAAQ,EACnB,MACJ,IAAK,GACD,MAAO,EACX,CACJ,CACA,MAAO,EACX,EA3IO,QA2IN,EAEGjB,IAAS,UAAU,CACvB,IAAIA,GAAS,CAEb,IAAI,EAEJ,WAAWjG,EAAA,SAAoBmF,EAAKC,EAAM,CAClC,GAAI,KAAK,GAAG,OACR,KAAK,GAAG,OAAO,WAAWD,EAAKC,CAAI,MAEnC,OAAM,IAAI,MAAMD,CAAG,CAE3B,EANO,cASX,SAASnF,EAAA,SAAUsF,EAAOR,EAAI,CACtB,YAAK,GAAKA,GAAM,KAAK,IAAM,CAAC,EAC5B,KAAK,OAASQ,EACd,KAAK,MAAQ,KAAK,WAAa,KAAK,KAAO,GAC3C,KAAK,SAAW,KAAK,OAAS,EAC9B,KAAK,OAAS,KAAK,QAAU,KAAK,MAAQ,GAC1C,KAAK,eAAiB,CAAC,SAAS,EAChC,KAAK,OAAS,CACV,WAAY,EACZ,aAAc,EACd,UAAW,EACX,YAAa,CACjB,EACI,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAAC,EAAE,CAAC,GAE5B,KAAK,OAAS,EACP,IACX,EAlBK,YAqBT,MAAMtF,EAAA,UAAY,CACV,IAAIqH,EAAK,KAAK,OAAO,CAAC,EACtB,KAAK,QAAUA,EACf,KAAK,SACL,KAAK,SACL,KAAK,OAASA,EACd,KAAK,SAAWA,EAChB,IAAIC,EAAQD,EAAG,MAAM,iBAAiB,EACtC,OAAIC,GACA,KAAK,WACL,KAAK,OAAO,aAEZ,KAAK,OAAO,cAEZ,KAAK,QAAQ,QACb,KAAK,OAAO,MAAM,CAAC,IAGvB,KAAK,OAAS,KAAK,OAAO,MAAM,CAAC,EAC1BD,CACX,EApBE,SAuBN,MAAMrH,EAAA,SAAUqH,EAAI,CACZ,IAAIJ,EAAMI,EAAG,OACTC,EAAQD,EAAG,MAAM,eAAe,EAEpC,KAAK,OAASA,EAAK,KAAK,OACxB,KAAK,OAAS,KAAK,OAAO,OAAO,EAAG,KAAK,OAAO,OAASJ,CAAG,EAE5D,KAAK,QAAUA,EACf,IAAIM,EAAW,KAAK,MAAM,MAAM,eAAe,EAC/C,KAAK,MAAQ,KAAK,MAAM,OAAO,EAAG,KAAK,MAAM,OAAS,CAAC,EACvD,KAAK,QAAU,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAS,CAAC,EAEzDD,EAAM,OAAS,IACf,KAAK,UAAYA,EAAM,OAAS,GAEpC,IAAIR,EAAI,KAAK,OAAO,MAEpB,YAAK,OAAS,CACV,WAAY,KAAK,OAAO,WACxB,UAAW,KAAK,SAAW,EAC3B,aAAc,KAAK,OAAO,aAC1B,YAAaQ,GACRA,EAAM,SAAWC,EAAS,OAAS,KAAK,OAAO,aAAe,GAC5DA,EAASA,EAAS,OAASD,EAAM,MAAM,EAAE,OAASA,EAAM,CAAC,EAAE,OAChE,KAAK,OAAO,aAAeL,CACjC,EAEI,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAACH,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,KAAK,OAASG,CAAG,GAEvD,KAAK,OAAS,KAAK,OAAO,OACnB,IACX,EAhCE,SAmCN,KAAKjH,EAAA,UAAY,CACT,YAAK,MAAQ,GACN,IACX,EAHC,QAML,OAAOA,EAAA,UAAY,CACX,GAAI,KAAK,QAAQ,gBACb,KAAK,WAAa,OAElB,QAAO,KAAK,WAAW,0BAA4B,KAAK,SAAW,GAAK;AAAA,EAAqI,KAAK,aAAa,EAAG,CAC9N,KAAM,GACN,MAAO,KACP,KAAM,KAAK,QACf,CAAC,EAGL,OAAO,IACX,EAZG,UAeP,KAAKA,EAAA,SAAUsG,EAAG,CACV,KAAK,MAAM,KAAK,MAAM,MAAMA,CAAC,CAAC,CAClC,EAFC,QAKL,UAAUtG,EAAA,UAAY,CACd,IAAIwH,EAAO,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAS,KAAK,MAAM,MAAM,EACzE,OAAQA,EAAK,OAAS,GAAK,MAAM,IAAMA,EAAK,OAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,CAC7E,EAHM,aAMV,cAAcxH,EAAA,UAAY,CAClB,IAAIyH,EAAO,KAAK,MAChB,OAAIA,EAAK,OAAS,KACdA,GAAQ,KAAK,OAAO,OAAO,EAAG,GAAGA,EAAK,MAAM,IAExCA,EAAK,OAAO,EAAE,EAAE,GAAKA,EAAK,OAAS,GAAK,MAAQ,KAAK,QAAQ,MAAO,EAAE,CAClF,EANU,iBASd,aAAazH,EAAA,UAAY,CACjB,IAAI0H,EAAM,KAAK,UAAU,EACrBC,EAAI,IAAI,MAAMD,EAAI,OAAS,CAAC,EAAE,KAAK,GAAG,EAC1C,OAAOA,EAAM,KAAK,cAAc,EAAI;AAAA,EAAOC,EAAI,GACnD,EAJS,gBAOb,WAAW3H,EAAA,SAAS4H,EAAOC,EAAc,CACjC,IAAIrB,EACAc,EACAQ,EAwDJ,GAtDI,KAAK,QAAQ,kBAEbA,EAAS,CACL,SAAU,KAAK,SACf,OAAQ,CACJ,WAAY,KAAK,OAAO,WACxB,UAAW,KAAK,UAChB,aAAc,KAAK,OAAO,aAC1B,YAAa,KAAK,OAAO,WAC7B,EACA,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,QAAS,KAAK,QACd,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,GAAI,KAAK,GACT,eAAgB,KAAK,eAAe,MAAM,CAAC,EAC3C,KAAM,KAAK,IACf,EACI,KAAK,QAAQ,SACbA,EAAO,OAAO,MAAQ,KAAK,OAAO,MAAM,MAAM,CAAC,IAIvDR,EAAQM,EAAM,CAAC,EAAE,MAAM,iBAAiB,EACpCN,IACA,KAAK,UAAYA,EAAM,QAE3B,KAAK,OAAS,CACV,WAAY,KAAK,OAAO,UACxB,UAAW,KAAK,SAAW,EAC3B,aAAc,KAAK,OAAO,YAC1B,YAAaA,EACAA,EAAMA,EAAM,OAAS,CAAC,EAAE,OAASA,EAAMA,EAAM,OAAS,CAAC,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAE,OAC5E,KAAK,OAAO,YAAcM,EAAM,CAAC,EAAE,MACpD,EACA,KAAK,QAAUA,EAAM,CAAC,EACtB,KAAK,OAASA,EAAM,CAAC,EACrB,KAAK,QAAUA,EACf,KAAK,OAAS,KAAK,OAAO,OACtB,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAAC,KAAK,OAAQ,KAAK,QAAU,KAAK,MAAM,GAEhE,KAAK,MAAQ,GACb,KAAK,WAAa,GAClB,KAAK,OAAS,KAAK,OAAO,MAAMA,EAAM,CAAC,EAAE,MAAM,EAC/C,KAAK,SAAWA,EAAM,CAAC,EACvBpB,EAAQ,KAAK,cAAc,KAAK,KAAM,KAAK,GAAI,KAAMqB,EAAc,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,CAAC,EAClH,KAAK,MAAQ,KAAK,SAClB,KAAK,KAAO,IAEZrB,EACA,OAAOA,EACJ,GAAI,KAAK,WAAY,CAExB,QAASvG,KAAK6H,EACV,KAAK7H,CAAC,EAAI6H,EAAO7H,CAAC,EAEtB,MAAO,EACX,CACA,MAAO,EACX,EArEO,cAwEX,KAAKD,EAAA,UAAY,CACT,GAAI,KAAK,KACL,OAAO,KAAK,IAEX,KAAK,SACN,KAAK,KAAO,IAGhB,IAAIwG,EACAoB,EACAG,EACAC,EACC,KAAK,QACN,KAAK,OAAS,GACd,KAAK,MAAQ,IAGjB,QADIC,EAAQ,KAAK,cAAc,EACtBC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAE9B,GADAH,EAAY,KAAK,OAAO,MAAM,KAAK,MAAME,EAAMC,CAAC,CAAC,CAAC,EAC9CH,IAAc,CAACH,GAASG,EAAU,CAAC,EAAE,OAASH,EAAM,CAAC,EAAE,SAGvD,GAFAA,EAAQG,EACRC,EAAQE,EACJ,KAAK,QAAQ,gBAAiB,CAE9B,GADA1B,EAAQ,KAAK,WAAWuB,EAAWE,EAAMC,CAAC,CAAC,EACvC1B,IAAU,GACV,OAAOA,EACJ,GAAI,KAAK,WAAY,CACxBoB,EAAQ,GACR,QACJ,KAEI,OAAO,EAEf,SAAW,CAAC,KAAK,QAAQ,KACrB,MAIZ,OAAIA,GACApB,EAAQ,KAAK,WAAWoB,EAAOK,EAAMD,CAAK,CAAC,EACvCxB,IAAU,GACHA,EAGJ,IAEP,KAAK,SAAW,GACT,KAAK,IAEL,KAAK,WAAW,0BAA4B,KAAK,SAAW,GAAK;AAAA,EAA2B,KAAK,aAAa,EAAG,CACpH,KAAM,GACN,MAAO,KACP,KAAM,KAAK,QACf,CAAC,CAET,EAvDC,QA0DL,IAAIxG,EAAA,UAAgB,CACZ,IAAI8G,EAAI,KAAK,KAAK,EAClB,OAAIA,GAGO,KAAK,IAAI,CAExB,EAPA,OAUJ,MAAM9G,EAAA,SAAgBmI,EAAW,CACzB,KAAK,eAAe,KAAKA,CAAS,CACtC,EAFE,SAKN,SAASnI,EAAA,UAAqB,CACtB,IAAIsG,EAAI,KAAK,eAAe,OAAS,EACrC,OAAIA,EAAI,EACG,KAAK,eAAe,IAAI,EAExB,KAAK,eAAe,CAAC,CAEpC,EAPK,YAUT,cAActG,EAAA,UAA0B,CAChC,OAAI,KAAK,eAAe,QAAU,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,EACzE,KAAK,WAAW,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,CAAC,EAAE,MAErE,KAAK,WAAW,QAAW,KAE1C,EANU,iBASd,SAASA,EAAA,SAAmBsG,EAAG,CAEvB,OADAA,EAAI,KAAK,eAAe,OAAS,EAAI,KAAK,IAAIA,GAAK,CAAC,EAChDA,GAAK,EACE,KAAK,eAAeA,CAAC,EAErB,SAEf,EAPK,YAUT,UAAUtG,EAAA,SAAoBmI,EAAW,CACjC,KAAK,MAAMA,CAAS,CACxB,EAFM,aAKV,eAAenI,EAAA,UAA0B,CACjC,OAAO,KAAK,eAAe,MAC/B,EAFW,kBAGf,QAAS,CAAC,mBAAmB,EAAI,EACjC,cAAeA,EAAA,SAAmB8E,EAAGsD,EAAIC,EAA0BC,EAAU,CAC7E,IAAIC,EAAQD,EACZ,OAAOD,EAA2B,CAClC,IAAK,GAAE,MAAO,GAEd,IAAK,GACL,MACA,IAAK,GACL,MACA,IAAK,GACL,MACA,IAAK,GACL,MACA,IAAK,GACL,MACA,IAAK,GAAE,MAAO,IAEd,IAAK,GAAG,YAAK,MAAM,QAAQ,EAAU,GACrC,MACA,IAAK,GAAG,MAAO,IAEf,IAAK,GAAG,YAAK,SAAS,EAAG,KAAK,MAAM,OAAO,EAAU,GACrD,MACA,IAAK,IAAI,YAAK,SAAS,EAAG,KAAK,SAAS,EAAU,GAClD,MACA,IAAK,IAAI,OAAAD,EAAI,OAASA,EAAI,OAAO,KAAK,EAAU,GAChD,MACA,IAAK,IAAI,OAAAA,EAAI,OAASA,EAAI,OAAO,KAAK,EAAG,KAAK,MAAM,OAAO,EAAU,GACrE,MACA,IAAK,IAAI,OAAAA,EAAI,OAASA,EAAI,OAAO,KAAK,EAAG,KAAK,SAAS,EAAU,GACjE,MACA,IAAK,IAAI,YAAK,SAAS,EAAU,GACjC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,IAAI,EAAU,GAClC,MACA,IAAK,IAAI,YAAK,MAAM,IAAI,EAAU,GAClC,MACA,IAAK,IAAG,MAAO,IAEf,IAAK,IAAI,YAAK,MAAM,IAAI,EAAU,GAClC,MACA,IAAK,IAAI,YAAK,SAAS,EAAG,KAAK,SAAS,EAAG,KAAK,MAAM,MAAM,EAAU,GACtE,MACA,IAAK,IAAI,YAAK,SAAS,EAAG,KAAK,SAAS,EAAU,EAClD,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,MAAM,MAAM,EAAU,GACpC,MACA,IAAK,IAAI,YAAK,SAAS,EAAU,GACjC,MACA,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAI,YAAK,MAAM,IAAI,EAAU,GAClC,MACA,IAAK,IAAI,YAAK,MAAM,IAAI,EAAU,GAClC,MACA,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAI,YAAK,MAAM,WAAW,EAAS,GACxC,MACA,IAAK,IAAI,YAAK,SAAS,EAAU,kBACjC,MACA,IAAK,IAAI,YAAK,MAAM,WAAW,EAAS,GACxC,MACA,IAAK,IAAI,YAAK,SAAS,EAAU,kBACjC,MACA,IAAK,IAAI,KAAK,MAAM,qBAAqB,EACzC,MACA,IAAK,IAAI,KAAK,SAAS,EACvB,MACA,IAAK,IAAG,MAAO,4BAEf,IAAK,IAAG,MAAO,GAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,GAEf,IAAK,IAAI,OAAAA,EAAI,OAASA,EAAI,OAAO,KAAK,EAAU,GAChD,MACA,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,KAEf,IAAK,IAAG,MAAO,KAEf,IAAK,IAAG,MAAO,KAEf,IAAK,IAAG,MAAO,KAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,KAEf,IAAK,IAAG,MAAO,KAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,GAEf,IAAK,IAAG,MAAO,GAEf,CACA,EA9Le,aA+Lf,MAAO,CAAC,cAAc,YAAY,oBAAoB,gBAAgB,sBAAsB,sBAAsB,yBAAyB,YAAY,eAAe,sBAAsB,WAAW,mCAAmC,kCAAkC,oCAAoC,4BAA4B,cAAc,sBAAsB,gBAAgB,iBAAiB,kBAAkB,aAAa,aAAa,eAAe,eAAe,cAAc,cAAc,eAAe,cAAc,mBAAmB,cAAc,mBAAmB,iBAAiB,gBAAgB,qCAAqC,cAAc,kBAAkB,mBAAmB,gBAAgB,eAAe,qBAAqB,kBAAkB,eAAe,eAAe,mBAAmB,qBAAqB,wBAAwB,yBAAyB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,yBAAyB,aAAa,eAAe,0BAA0B,qBAAqB,cAAc,UAAU,UAAU,0JAA0J,YAAY,cAAc,aAAa,eAAe,WAAW,YAAY,aAAa,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,eAAe,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,kCAAkC,UAAU,WAAW,UAAU,aAAa,UAAU,SAAS,EAC5sD,WAAY,CAAC,oBAAsB,CAAC,MAAQ,CAAC,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,UAAY,CAAC,MAAQ,CAAC,EAAE,EAAE,UAAY,EAAK,EAAE,UAAY,CAAC,MAAQ,CAAC,EAAE,EAAE,UAAY,EAAK,EAAE,GAAK,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,MAAQ,CAAC,MAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,KAAO,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,UAAY,EAAK,EAAE,OAAS,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,UAAY,EAAK,EAAE,YAAc,CAAC,MAAQ,CAAC,EAAE,UAAY,EAAK,EAAE,QAAU,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAI,CAAC,CACppB,EACA,OAAOnC,EACP,GAAG,EACHnG,GAAO,MAAQmG,GACf,SAASuC,IAAU,CACjB,KAAK,GAAK,CAAC,CACb,CAFS,OAAAxI,EAAAwI,GAAA,UAGTA,GAAO,UAAY1I,GAAOA,GAAO,OAAS0I,GACnC,IAAIA,EACX,GAAG,EACF1I,GAAO,OAASA,GAEhB,IAAO2I,GAAQC,GC7hChB,IAAMC,GAAW,CACf,MAAO,EACP,OAAQ,EACR,KAAM,EACN,YAAa,EACb,aAAc,EACd,WAAY,EACZ,YAAa,EACb,WAAY,GACZ,SAAU,GACV,UAAW,GACX,SAAU,GACV,QAAS,GACT,UAAW,GACX,QAAS,GACT,aAAc,GACd,WAAY,GACZ,UAAW,GACX,QAAS,GACT,QAAS,GACT,WAAY,GACZ,SAAU,GACV,YAAa,GACb,aAAc,GACd,WAAY,GACZ,eAAgB,GAChB,gBAAiB,GACjB,aAAc,GACd,YAAa,GACb,UAAW,GACX,eAAgB,GAChB,oBAAqB,GACrB,qBAAsB,GAEtB,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GAEd,wBAAyB,GACzB,2BAA4B,GAC5B,wBAAyB,GACzB,2BAA4B,GAE5B,iBAAkB,GAClB,oBAAqB,GACrB,iBAAkB,GAClB,oBAAqB,GAErB,+BAAgC,GAChC,kCAAmC,GACnC,+BAAgC,GAChC,kCAAmC,GAEnC,mBAAoB,GACpB,2BAA4B,GAC5B,wBAAyB,EAC3B,EAEMC,GAAY,CAChB,OAAQ,EACR,KAAM,CACR,EAEMC,GAAY,CAChB,OAAQ,EACR,QAAS,EACT,KAAM,CACR,EAEaC,GAAmB,CAC9B,MAAO,QACP,SAAU,WACV,YAAa,cACb,QAAS,UACT,SAAU,WACV,OAAQ,SACR,YAAa,cACb,MAAO,OACT,EAEaC,GAAN,KAAsC,CAgB3C,aAAc,CAfd,KAAiB,MAAQ,IAAIC,GAA+B,KAAO,CACjE,UAAW,OACX,OAAQ,IAAI,IACZ,cAAe,IAAI,IACnB,gBAAiB,IAAI,IACrB,MAAO,CAAC,EACR,SAAU,CAAC,EACX,MAAO,CAAC,EACR,uBAAwB,GACxB,YAAa,OACb,WAAY,OACZ,YAAa,OACb,cAAe,MACjB,EAAE,EA+kBF,KAAO,YAAcC,GACrB,KAAO,kBAAoBC,GAC3B,KAAO,gBAAkBC,GACzB,KAAO,YAAcC,GACrB,KAAO,kBAAoBC,GAC3B,KAAO,gBAAkBC,GAhlBvB,KAAK,MAAQ,KAAK,MAAM,KAAK,IAAI,EACjC,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAE/C,KAAK,MAAM,EAEX,KAAK,QAAQC,EAAU,EAAE,IAAI,EAC7B,KAAK,SAAWZ,GAChB,KAAK,UAAYC,GACjB,KAAK,UAAYC,EACnB,CA9IF,MAkH6C,CAAAW,EAAA,mBA8BpC,OAAOC,EAAsD,CAClE,KAAK,MAAM,QAAQ,MAAM,KAAK,CAC5B,KAAMA,EAAK,KACX,KAAMA,EAAK,MAAQ,KAAK,SAAS,EACjC,KAAMA,EAAK,MACX,UAAW,CAAC,CACd,CAAC,EACD,KAAK,MAAM,QAAQ,WAAa,KAAK,MAAM,QAAQ,MAAM,MAAM,EAAE,EAAE,CAAC,CACtE,CAEO,SACLC,EACAC,EACAC,EACAC,EACAC,EACA,CACA,IAAIC,EAAc,KAAK,MAAM,QAAQ,WACjCC,EACJ,GAAIF,IAAa,OAAW,CAC1B,IAAIG,EAECH,EAAS,SAAS;AAAA,CAAI,EAGzBG,EAAWH,EAAW;AAAA,EAFtBG,EAAW;AAAA,EAAQH,EAAW;AAAA,GAIhCE,EAAWE,GAAKD,EAAU,CAAE,OAAaE,EAAY,CAAC,CACxD,CACAN,EAAOG,GAAK,MAAQH,EAGhBG,GAAK,QAAU,CAACJ,GAAeA,EAAY,OAASD,KACtDC,EAAc,CAAE,KAAMI,EAAI,MAAO,KAAMJ,GAAa,KAAM,KAAAC,CAAK,GAGjE,IAAMO,EAAM,KAAK,MAAM,QAAQ,OAAO,IAAIV,CAAE,EAC5C,GAAIU,EAAK,CAEP,GAAI,KAAK,MAAM,QAAQ,YAAcA,EAAI,KAAO,KAAK,MAAM,QAAQ,aAAeA,EAAI,IACpF,MAAM,IAAI,MACR,yDAAyDA,EAAI,IAAI,iBAAiBA,EAAI,IAAI,IAAI,aAAa,KAAK,MAAM,QAAQ,WAAW,IAAI,qBAC/I,EAQF,GAJAL,EAAcK,EAAI,IAAMA,EAAI,IAAM,KAAK,MAAM,QAAQ,WACrDA,EAAI,IAAML,EAGNK,GAAOT,IAASS,EAAI,MAAQR,GAAe,KAC7C,MAEJ,CAsBA,GAnBIA,GAAa,MAAQ,OACvBA,EAAc,CAAE,KAAMD,EAAM,KAAAE,CAAK,IAE/BA,GAAQ,MAAQD,EAAY,MAAQ,QACtCA,EAAc,CAAE,KAAMD,EAAM,KAAAE,CAAK,GAGnC,KAAK,MAAM,QAAQ,OAAO,IAAIH,EAAI,CAChC,IAAKK,EACL,KAAMJ,EACN,YAAaC,EAAY,KACzB,KAAMA,EAAY,MAAQ,KAAK,SAAS,EACxC,UAAW,KAAK,MAAM,QAAQ,UAC9B,MAAO,CAAC,EACR,WAAY,CAAC,EACb,SAAU,KACV,SAAU,KACV,KAAMC,GAAQ,aAChB,CAAC,EACG,KAAK,MAAM,QAAQ,UAAW,CAChC,IAAMQ,EAAqB,KAAK,MAAM,QAAQ,OAAO,IAAI,KAAK,MAAM,QAAQ,SAAS,EACjFA,IACFA,EAAmB,UAAYX,EAEnC,CAEI,KAAK,MAAM,QAAQ,YACrB,KAAK,MAAM,QAAQ,WAAW,UAAU,KAAKA,CAAE,EAEjD,KAAK,MAAM,QAAQ,UAAYA,CACjC,CAEQ,gBAAgBY,EAAc,CACpC,IAAIC,EACAC,EAAQ,EACZ,GAAI,CAACF,EACH,MAAO,GAET,IAAKC,EAAI,EAAGA,EAAI,KAAK,MAAM,QAAQ,SAAS,OAAQA,IAEhD,KAAK,MAAM,QAAQ,SAASA,CAAC,EAAE,OAAS,KAAK,SAAS,cACtD,KAAK,MAAM,QAAQ,SAASA,CAAC,EAAE,OAASD,GAExCE,IAGA,KAAK,MAAM,QAAQ,SAASD,CAAC,EAAE,OAAS,KAAK,SAAS,YACtD,KAAK,MAAM,QAAQ,SAASA,CAAC,EAAE,OAASD,GAExCE,IAGJ,OAAOA,CACT,CAEO,WACLC,EACAC,EACAC,EACAC,EACA,CACA,KAAK,MAAM,QAAQ,SAAS,KAAK,CAC/B,GAAI,KAAK,MAAM,QAAQ,SAAS,OAAO,SAAS,EAChD,KAAMH,EACN,GAAIC,EACJ,QAASC,EAAQ,KACjB,KAAMA,EAAQ,MAAQ,KAAK,SAAS,EACpC,OAAQC,CACV,CAAC,CACH,CAEO,UACLH,EACAC,EACAC,EACAE,EACAC,EAAW,GACXC,EACA,CACA,GAAIF,IAAgB,KAAK,SAAS,YACpB,KAAK,gBAAgBJ,GAAU,EAAE,EACnC,EAAG,CAEX,IAAMO,EAAQ,IAAI,MAAM,iDAAmDP,EAAS,GAAG,EAGvF,MAAAO,EAAM,KAAO,CACX,KAAM,OACN,MAAO,OACP,KAAM,IACN,IAAK,CAAE,WAAY,EAAG,UAAW,EAAG,aAAc,EAAG,YAAa,CAAE,EACpE,SAAU,CAAC,sBAAsB,CACnC,EACMA,CACR,CAEF,YAAK,MAAM,QAAQ,SAAS,KAAK,CAC/B,GAAI,KAAK,MAAM,QAAQ,SAAS,OAAO,SAAS,EAChD,KAAMP,EACN,GAAIC,EACJ,QAASC,GAAS,MAAQ,GAC1B,KAAMA,GAAS,MAAQ,KAAK,SAAS,EACrC,KAAME,EACN,SAAAC,EACA,kBAAmBC,GAAqB,CAC1C,CAAC,EACM,EACT,CAEO,kBAAmB,CACxB,OAAO,KAAK,MAAM,QAAQ,MAAM,OAAS,CAC3C,CAEO,2BAA4B,CACjC,OAAO,KAAK,MAAM,QAAQ,MAAM,KAAME,GAAMA,EAAE,IAAI,CACpD,CAEO,aAAc,CACnB,OAAO,KAAK,MAAM,QAAQ,QAC5B,CAEO,UAAW,CAChB,OAAO,KAAK,MAAM,QAAQ,KAC5B,CACO,WAAY,CACjB,OAAO,KAAK,MAAM,QAAQ,MAC5B,CACO,kBAAmB,CACxB,OAAO,KAAK,MAAM,QAAQ,aAC5B,CACO,oBAAqB,CAC1B,OAAO,KAAK,MAAM,QAAQ,eAC5B,CACO,SAASvB,EAAY,CAE1B,OAAO,KAAK,MAAM,QAAQ,OAAO,IAAIA,CAAE,CACzC,CACO,cAAe,CACpB,MAAO,CAAC,GAAG,KAAK,MAAM,QAAQ,OAAO,KAAK,CAAC,CAC7C,CACO,uBAAwB,CAC7B,KAAK,MAAM,QAAQ,uBAAyB,EAC9C,CACO,wBAAyB,CAC9B,KAAK,MAAM,QAAQ,uBAAyB,EAC9C,CACO,qBAAsB,CAC3B,OAAO,KAAK,MAAM,QAAQ,sBAC5B,CAEO,QAAQwB,EAAuB,CACpC,KAAK,MAAM,QAAQ,YAAcA,CACnC,CAEQ,YAAYC,EAAyD,CAC3E,GAAIA,IAAS,OACX,MAAO,CAAC,EAEVA,EAAOA,EAAK,KAAK,EACjB,IAAMC,EACJ,WAAW,KAAKD,CAAI,IAAM,KAAO,GAAO,aAAa,KAAKA,CAAI,IAAM,KAAO,GAAQ,OAErF,MAAO,CAAE,aADYC,IAAS,OAAYD,EAAOA,EAAK,QAAQ,kBAAmB,EAAE,GAAG,KAAK,EACrE,KAAAC,CAAK,CAC7B,CAEO,UAAW,CAGhB,OAAI,KAAK,MAAM,QAAQ,cAAgB,OAC9B,KAAK,MAAM,QAAQ,YAErB7B,EAAU,EAAE,UAAU,MAAQ,EACvC,CAEO,OAAQ,CACb,KAAK,MAAM,MAAM,EACjB8B,GAAY,CACd,CAEO,aAAaC,EAAa,CAC/B,IAAMC,EAAaD,EAAI,KAAK,EACtB,CAAE,KAAAF,EAAM,YAAAI,CAAY,EAAI,KAAK,YAAYD,CAAU,EACnDZ,EAAU,CACd,KAAMa,EACN,KAAAJ,CACF,EACA,OAAAK,EAAI,MAAM,iBAAiB,KAAK,UAAUd,CAAO,CAAC,EAAE,EAC7CA,CACT,CAKO,aAAaW,EAAa,CAC/B,IAAMI,EAAQ,uCAAuC,KAAKJ,CAAG,EACzDK,EAAQD,IAAQ,CAAC,EAAIA,EAAM,CAAC,EAAE,KAAK,EAAI,cACvCE,EAAQF,IAAQ,CAAC,EAAIA,EAAM,CAAC,EAAE,KAAK,EAAI,OAG3C,GAAI,QAAQ,IACL,OAAO,IAAI,SAAS,QAASC,CAAK,IACrCA,EAAQ,cACRC,EAAQN,EAAI,KAAK,OAEd,CACL,IAAMO,EAAQ,IAAI,OAAO,EAAE,MAC3BA,EAAM,MAAQF,EACVE,EAAM,QAAUF,IAClBA,EAAQ,cACRC,EAAQN,EAAI,KAAK,EAErB,CACA,GAAM,CAAE,KAAAF,EAAM,YAAAI,CAAY,EAAI,KAAK,YAAYI,CAAK,EACpD,MAAO,CACL,KAAMJ,EAAcM,GAAaN,EAAajC,EAAU,CAAC,EAAI,OAC7D,MAAAoC,EACA,KAAAP,CACF,CACF,CAMO,QACLW,EACAC,EACArB,EACA,CACA,IAAMsB,EAAa,CACjB,MAAOF,EACP,UAAWC,EACX,QAASrB,EAAQ,KACjB,KAAMA,EAAQ,MAAQ,KAAK,SAAS,CACtC,EAIMuB,EAAS,CAAC,EAAE,OAAOH,EAAOA,CAAK,EACrC,KAAK,MAAM,QAAQ,MAAM,KAAKE,CAAI,EAClC,KAAK,MAAM,QAAQ,SAAS,KAAK,CAC/B,GAAI,KAAK,MAAM,QAAQ,SAAS,OAAO,SAAS,EAChD,KAAMC,EAAO,CAAC,EACd,GAAIA,EAAO,CAAC,EACZ,QAASvB,EAAQ,KACjB,KAAMA,EAAQ,MAAQ,KAAK,SAAS,EACpC,KAAM,KAAK,SAAS,KACpB,UAAWqB,CACb,CAAC,CACH,CAEO,SAASG,EAAiBhB,EAAwB,CAEvD,IAAMY,EAAQ,KAAK,SAASI,CAAO,EAEnC,GAAI,CACF,IAAIC,EAAgBN,GAAaX,EAAK,KAAM5B,EAAU,CAAC,EACvD6C,EAAgBA,EAAc,QAAQ,YAAa,GAAG,EACtDA,EAAgBA,EAAc,QAAQ,SAAU,GAAG,EACnD,IAAMC,EAAQ,KAAK,MAAMD,CAAa,EAEtC,KAAK,YAAYL,EAAOM,CAAK,CAC/B,OAASC,EAAG,CACVb,EAAI,MAAM,sCAAuCa,CAAC,CACpD,CACF,CAEO,SAASH,EAAiBhB,EAAwB,CAEvD,IAAMY,EAAQ,KAAK,SAASI,CAAO,EACnC,GAAI,CACF,IAAME,EAAgC,CAAC,EACnCD,EAAgBN,GAAaX,EAAK,KAAM5B,EAAU,CAAC,EACjDgD,EAAMH,EAAc,QAAQ,GAAG,EACrCA,EAAgBA,EAAc,QAAQ,YAAa,GAAG,EACtDA,EAAgBA,EAAc,QAAQ,SAAU,GAAG,EACnD,IAAMI,EAAQJ,EAAc,MAAM,EAAGG,EAAM,CAAC,EAAE,KAAK,EAC7CE,EAAOL,EAAc,MAAMG,EAAM,CAAC,EAAE,KAAK,EAE/CF,EAAMG,CAAK,EAAIC,EAEf,KAAK,YAAYV,EAAOM,CAAK,CAC/B,OAASC,EAAG,CACVb,EAAI,MAAM,sCAAuCa,CAAC,CACpD,CACF,CAEQ,YAAYP,EAAcM,EAA+B,CAC/D,GAAIN,EAAM,OAAS,KACjBA,EAAM,MAAQM,MAEd,SAAWK,KAAOL,EAChBN,EAAM,MAAMW,CAAG,EAAIL,EAAMK,CAAG,CAGlC,CAEO,cAAcP,EAAiBhB,EAAwB,CAE5D,IAAMY,EAAQ,KAAK,SAASI,CAAO,EAEnC,GAAI,CACF,IAAMC,EAAgBN,GAAaX,EAAK,KAAM5B,EAAU,CAAC,EACnDoD,EAAsC,KAAK,MAAMP,CAAa,EAEpE,KAAK,iBAAiBL,EAAOY,CAAU,CACzC,OAASL,EAAG,CACVb,EAAI,MAAM,4CAA6Ca,CAAC,CAC1D,CACF,CAEQ,iBAAiBP,EAAcY,EAAqC,CAC1E,GAAIZ,EAAM,YAAc,KACtBA,EAAM,WAAaY,MAEnB,SAAWD,KAAOC,EAChBZ,EAAM,WAAWW,CAAG,EAAIC,EAAWD,CAAG,CAG5C,CAEQ,QAAS,CACf,KAAK,MAAM,QAAQ,WAAa,MAClC,CAEO,WAAWP,EAAiBhB,EAAwB,CAEzD,IAAMY,EAAQ,KAAK,SAASI,CAAO,EAC7BS,EAAO,SAAS,eAAezB,EAAK,IAAI,EAG9C,GAAI,CACF,IAAMA,EAAOyB,EAAK,UACZC,EAAU,KAAK,MAAM1B,CAAI,EAE3B0B,EAAQ,YACV,KAAK,iBAAiBd,EAAOc,EAAQ,UAAU,EAG7CA,EAAQ,OACV,KAAK,YAAYd,EAAOc,EAAQ,KAAK,CAEzC,OAASP,EAAG,CACVb,EAAI,MAAM,yCAA0Ca,CAAC,CACvD,CACF,CAEO,iBAAiBP,EAAcW,EAAa,CACjD,GAAIX,GAAO,aAAe,OACxB,OAAOA,EAAM,WAAWW,CAAG,CAI/B,CAGO,MAAMI,EAAoD,CAC/D,GAAI,MAAM,QAAQA,CAAK,EACrBA,EAAM,QAASC,GAAS,CACtB,KAAK,MAAMA,CAAI,CACjB,CAAC,MAED,QAAQD,EAAM,KAAM,CAClB,IAAK,gBACH,KAAK,MAAM,QAAQ,SAAS,KAAK,CAC/B,GAAI,KAAK,MAAM,QAAQ,SAAS,OAAO,SAAS,EAChD,KAAM,OACN,GAAI,OACJ,QAAS,CACP,MAAOA,EAAM,cACb,KAAMA,EAAM,kBACZ,QAASA,EAAM,eACjB,EACA,KAAM,GACN,KAAMA,EAAM,UACd,CAAC,EACD,MACF,IAAK,iBACH,KAAK,SAASA,EAAM,MAAOA,EAAM,MAAOA,EAAM,YAAaA,EAAM,KAAMA,EAAM,MAAM,EACnF,MACF,IAAK,oBACH,GAAI,KAAK,MAAM,QAAQ,OAAO,IAAIA,EAAM,KAAK,EAC3C,MAAM,IAAI,MACR,oJACF,EAEF,KAAK,MAAM,QAAQ,YAAcA,EAAM,MACvC,KAAK,SAASA,EAAM,MAAOA,EAAM,MAAOA,EAAM,YAAaA,EAAM,KAAMA,EAAM,MAAM,EACnF,KAAK,MAAM,QAAQ,cAAc,IAAIA,EAAM,MAAO,KAAK,MAAM,QAAQ,SAAS,MAAM,EACpF,MACF,IAAK,qBACH,KAAK,MAAM,QAAQ,cAAgBA,EAAM,MACzC,KAAK,MAAM,QAAQ,gBAAgB,IAAIA,EAAM,MAAO,KAAK,MAAM,QAAQ,SAAS,MAAM,EACtF,MACF,IAAK,cACH,KAAK,UAAUA,EAAM,MAAO,OAAW,OAAWA,EAAM,UAAU,EAClE,MACF,IAAK,oBACH,KAAK,UAAUA,EAAM,MAAO,OAAW,OAAWA,EAAM,UAAU,EAClE,MACF,IAAK,2BACH,KAAK,UAAUA,EAAM,MAAO,OAAW,OAAWA,EAAM,UAAU,EAClE,MACF,IAAK,YACH,KAAK,UAAUA,EAAM,MAAO,OAAW,OAAWA,EAAM,UAAU,EAClE,MACF,IAAK,UACH,KAAK,QAAQA,EAAM,MAAOA,EAAM,UAAWA,EAAM,IAAI,EACrD,MACF,IAAK,WACH,KAAK,SAASA,EAAM,MAAOA,EAAM,IAAI,EACrC,MACF,IAAK,WACH,KAAK,SAASA,EAAM,MAAOA,EAAM,IAAI,EACrC,MACF,IAAK,gBACH,KAAK,cAAcA,EAAM,MAAOA,EAAM,IAAI,EAC1C,MACF,IAAK,aACH,KAAK,WAAWA,EAAM,MAAOA,EAAM,IAAI,EACvC,MACF,IAAK,aACH,GAAI,KAAK,MAAM,QAAQ,YAAa,CAClC,GAAIA,EAAM,KAAO,KAAK,MAAM,QAAQ,YAClC,MAAM,IAAI,MACR,2BACE,KAAK,MAAM,QAAQ,YAAY,KAC/B,yGACJ,EAEA,KAAK,MAAM,QAAQ,YAAc,MAErC,SAAW,KAAK,MAAM,QAAQ,cAAe,CAC3C,GACEA,EAAM,KAAO,KAAK,MAAM,QAAQ,eAChCA,EAAM,OAAS,KAAK,MAAM,QAAQ,cAElC,MAAM,IAAI,MACR,6BACE,KAAK,MAAM,QAAQ,cAAc,KACjC,2GACJ,EAEA,KAAK,MAAM,QAAQ,cAAgB,MAEvC,CACA,KAAK,UACHA,EAAM,KACNA,EAAM,GACNA,EAAM,IACNA,EAAM,WACNA,EAAM,SACNA,EAAM,iBACR,EACA,MACF,IAAK,WACH,KAAK,OAAOA,EAAM,OAAO,EACzB,MACF,IAAK,SACH,KAAK,OAAO,EACZ,MACF,IAAK,YACH,KAAK,UAAU,OAAW,OAAWA,EAAM,SAAUA,EAAM,UAAU,EACrE,MACF,IAAK,UACH,KAAK,UAAU,OAAW,OAAW,OAAWA,EAAM,UAAU,EAChE,MACF,IAAK,YACH,KAAK,UAAU,OAAW,OAAWA,EAAM,MAAOA,EAAM,UAAU,EAClE,MACF,IAAK,UACH,KAAK,UAAU,OAAW,OAAW,OAAWA,EAAM,UAAU,EAChE,MACF,IAAK,WACH,KAAK,UAAU,OAAW,OAAWA,EAAM,QAASA,EAAM,UAAU,EACpE,MACF,IAAK,SACH,KAAK,UAAU,OAAW,OAAW,OAAWA,EAAM,UAAU,EAChE,MACF,IAAK,WACH,KAAK,UAAU,OAAW,OAAWA,EAAM,QAASA,EAAM,UAAU,EACpE,MACF,IAAK,OACH,KAAK,UAAU,OAAW,OAAWA,EAAM,QAASA,EAAM,UAAU,EACpE,MACF,IAAK,SACH,KAAK,UAAU,OAAW,OAAW,OAAWA,EAAM,UAAU,EAChE,MACF,IAAK,cACH7D,GAAY6D,EAAM,IAAI,EACtB,MACF,IAAK,WACH,KAAK,UAAU,OAAW,OAAWA,EAAM,QAASA,EAAM,UAAU,EACpE,MACF,IAAK,MACH,KAAK,UAAU,OAAW,OAAWA,EAAM,QAASA,EAAM,UAAU,EACpE,MACF,IAAK,SACH,KAAK,UAAU,OAAW,OAAW,OAAWA,EAAM,UAAU,EAChE,MACF,IAAK,gBACH,KAAK,UAAU,OAAW,OAAWA,EAAM,aAAcA,EAAM,UAAU,EACzE,MACF,IAAK,SACH,KAAK,UAAU,OAAW,OAAWA,EAAM,WAAYA,EAAM,UAAU,EACvE,MACF,IAAK,cACH,KAAK,UAAU,OAAW,OAAW,OAAWA,EAAM,UAAU,EAChE,MACF,IAAK,aACH,KAAK,UAAU,OAAW,OAAWA,EAAM,UAAWA,EAAM,UAAU,EACtE,MACF,IAAK,WACH,KAAK,UAAU,OAAW,OAAW,OAAWA,EAAM,UAAU,EAChE,KACJ,CAEJ,CAQO,WAAY,CACjB,OAAOvD,EAAU,EAAE,QACrB,CACF,ECxtBA,IAAMyD,GAAYC,EAACC,GACjB;AAAA,cACYA,EAAQ,WAAW;AAAA,YACrBA,EAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,YAIhBA,EAAQ,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,cAKpBA,EAAQ,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAWtBA,EAAQ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMnBA,EAAQ,WAAW;AAAA;AAAA;AAAA;AAAA,YAIrBA,EAAQ,WAAW;AAAA,cACjBA,EAAQ,WAAW;AAAA;AAAA;AAAA;AAAA,YAIrBA,EAAQ,mBAAmB;AAAA;AAAA;AAAA;AAAA,YAI3BA,EAAQ,WAAW;AAAA;AAAA;AAAA;AAAA,YAInBA,EAAQ,WAAW;AAAA,cACjBA,EAAQ,WAAW;AAAA;AAAA;AAAA;AAAA,YAIrBA,EAAQ,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,cAKrBA,EAAQ,mBAAmB;AAAA,YAC7BA,EAAQ,gBAAgB;AAAA;AAAA;AAAA;AAAA,YAIxBA,EAAQ,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,YAKtBA,EAAQ,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOnBA,EAAQ,mBAAmB;AAAA,YAC7BA,EAAQ,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,cAKzBA,EAAQ,eAAe;AAAA,YACzBA,EAAQ,YAAY;AAAA;AAAA;AAAA;AAAA,YAIpBA,EAAQ,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,YAKrBA,EAAQ,kBAAkB;AAAA,cACxBA,EAAQ,qBAAqB;AAAA;AAAA;AAAA;AAAA,YAI/BA,EAAQ,kBAAkB;AAAA,cACxBA,EAAQ,qBAAqB;AAAA;AAAA;AAAA;AAAA,YAI/BA,EAAQ,kBAAkB;AAAA,cACxBA,EAAQ,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAS/BA,EAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,cAKdA,EAAQ,WAAW;AAAA,YACrBA,EAAQ,QAAQ;AAAA;AAAA;AAAA,cAGdA,EAAQ,WAAW;AAAA,YACrBA,EAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,EAvHV,aA6HXC,GAAQH,GC7Hf,IAAAI,GAA4B,WAUrB,IAAMC,GAAmB,GAC1BC,GAAkB,YAClBC,GAAqB,eACrBC,GAAkB,YAClBC,GAAyB,YAElBC,GAAWC,EAAA,SAAUC,EAAMC,EAAU,CAChD,OAAqBH,GAASE,EAAMC,CAAQ,CAC9C,EAFwB,YAIXC,GAAYH,EAAA,SAAUC,EAAMG,EAAOC,EAAcC,EAAWC,EAAY,CACnF,GAAIH,EAAM,QAAU,QAAaA,EAAM,QAAU,MAAQ,OAAO,KAAKA,EAAM,KAAK,EAAE,SAAW,EAC3F,MAAO,CAAE,OAAQ,EAAG,MAAO,CAAE,EAG/B,IAAMI,EAAQJ,EAAM,MACdK,EAAWL,EAAM,SACjBF,EAAWE,EAAM,SAEvB,IAAIM,EAAe,OACfH,IACFG,EAAe,oBAGjB,IAAMC,EAAIV,EAAK,OAAO,GAAG,EACzBU,EAAE,KAAK,KAAM,QAAUF,EAAW,QAAQ,EAC1CE,EAAE,KAAK,QAAS,gBAAgB,EAChCA,EAAE,KAAK,UAAWD,CAAY,EAC9B,IAAIE,EAAa,GACbV,EAAS,QAAU,SACrBU,EAAa,IAAMV,EAAS,OAG9B,IAAIW,EAAYX,EAAS,MAAQG,EAAeH,EAAS,MAAQG,EAE3DS,EAAWH,EAAE,OAAO,MAAM,EAUhC,GATAG,EAAS,KAAK,QAAS,sBAAwBF,CAAU,EACzDE,EAAS,KAAK,IAAKZ,EAAS,CAAC,EAC7BY,EAAS,KAAK,IAAKZ,EAAS,MAAM,EAClCY,EAAS,KAAK,OAAQZ,EAAS,IAAI,EACnCY,EAAS,KAAK,SAAUZ,EAAS,MAAM,EACvCY,EAAS,KAAK,QAASD,CAAS,EAChCC,EAAS,KAAK,SAAUZ,EAAS,MAAM,EACvCY,EAAS,KAAK,KAAMZ,EAAS,EAAE,EAC/BY,EAAS,KAAK,KAAMZ,EAAS,EAAE,EAC3BM,GAAS,KAAM,CACjB,IAAIO,EAAQ,GACZ,QAASC,KAAOR,EAAO,CACrB,IAAIS,EAAWN,EAAE,OAAO,GAAG,EACvBO,KAAgB,gBAAYV,EAAMQ,CAAG,CAAC,EAC1CC,EAAS,KAAK,aAAcC,CAAa,EACzCD,EAAS,KAAK,SAAU,QAAQ,EAEhCE,GAA+Bb,CAAS,EACtCU,EACAC,EACAf,EAAS,EAAI,GACbA,EAAS,OAASa,EAClBF,EACA,GACA,CAAE,MAAO,OAAQ,EACjBP,CACF,EAEAS,GAAS,EACX,CACF,CAEA,OAAAD,EAAS,KAAK,SAAUC,CAAK,EAEtB,CAAE,OAAQb,EAAS,OAASa,EAAO,MAAOF,CAAU,CAC7D,EA7DyB,aA+DnBO,GAAkBpB,EAAA,SAAUqB,EAAO,CACvC,MACE,qCACAA,EACA,4FAEJ,EANwB,mBAQXC,GAAYtB,EAAA,eAAgBC,EAAMsB,EAAUC,EAAW,KAAM,CACxE,IAAIC,EAAWxB,EAAK,OAAO,eAAe,EACpCyB,EAAiB,MAAMC,GAAqBJ,EAAS,KAAgBK,GAAU,CAAC,EAOhFC,EALUJ,EACb,OAAO,WAAW,EAClB,KAAK,QAAS,qBAAqB,EACnC,KAAK,QAAS,8BAA8B,EAC5C,KAAKC,CAAc,EACF,KAAK,EAAE,sBAAsB,EAIjD,GAFAD,EAAS,KAAK,SAAU,KAAK,MAAMI,EAAI,MAAM,CAAC,EAAE,KAAK,QAAS,KAAK,MAAMA,EAAI,KAAK,CAAC,EAE/EN,EAAS,QAAU,WAAY,CACjC,IAAMT,EAAWb,EAAK,KAAK,EAAE,WAE7Ba,EAAS,aAAa,SAAUe,EAAI,OAAS,EAAIN,EAAS,UAAU,EACpE,IAAMO,EAAUhB,EAAS,QAAQ,EAEjCW,EACG,KAAK,IAAK,KAAK,MAAMK,EAAQ,EAAIA,EAAQ,MAAQ,EAAID,EAAI,MAAQ,CAAC,CAAC,EACnE,KAAK,IAAK,KAAK,MAAMC,EAAQ,EAAIA,EAAQ,OAAS,EAAID,EAAI,OAAS,CAAC,CAAC,CAC1E,SAAWL,EAAU,CACnB,GAAI,CAAE,OAAAO,EAAQ,MAAAC,EAAO,OAAAC,CAAO,EAAIT,EAChC,GAAIO,EAASC,EAAO,CAClB,IAAME,EAAOH,EACbA,EAASC,EACTA,EAAQE,CACV,CAGAT,EAAS,KAAK,IAAK,KAAK,MAAMM,EAAS,KAAK,IAAIA,EAASC,CAAK,EAAI,EAAIH,EAAI,MAAQ,CAAC,CAAC,EAChFN,EAAS,QAAU,WACrBE,EAAS,KAAK,IAAK,KAAK,MAAMQ,CAAM,CAAC,EAErCR,EAAS,KAAK,IAAK,KAAK,MAAMQ,EAASJ,EAAI,MAAM,CAAC,CAEtD,CAEA,MAAO,CAACJ,CAAQ,CAClB,EAxCyB,aA0CZU,GAAWnC,EAAA,SAAUC,EAAMsB,EAAU,CAChD,IAAIa,EAAiB,EACjBC,EAAa,EACXC,EAAQf,EAAS,KAAK,MAAMgB,EAAO,cAAc,EAEjD,CAACC,EAAeC,CAAe,EAAIC,GAAcnB,EAAS,QAAQ,EAEpEoB,EAAY,CAAC,EACbC,EAAK,EACLC,EAAQ7C,EAAA,IAAMuB,EAAS,EAAf,SACZ,GACEA,EAAS,SAAW,QACpBA,EAAS,aAAe,QACxBA,EAAS,WAAa,EAEtB,OAAQA,EAAS,OAAQ,CACvB,IAAK,MACL,IAAK,QACHsB,EAAQ7C,EAAA,IAAM,KAAK,MAAMuB,EAAS,EAAIA,EAAS,UAAU,EAAjD,SACR,MACF,IAAK,SACL,IAAK,SACHsB,EAAQ7C,EAAA,IACN,KAAK,MAAMuB,EAAS,GAAKa,EAAiBC,EAAad,EAAS,YAAc,CAAC,EADzE,SAER,MACF,IAAK,SACL,IAAK,MACHsB,EAAQ7C,EAAA,IACN,KAAK,MACHuB,EAAS,GACNa,EAAiBC,EAAa,EAAId,EAAS,YAC5CA,EAAS,UACb,EALM,SAMR,KACJ,CAGF,GACEA,EAAS,SAAW,QACpBA,EAAS,aAAe,QACxBA,EAAS,QAAU,OAEnB,OAAQA,EAAS,OAAQ,CACvB,IAAK,OACL,IAAK,QACHA,EAAS,EAAI,KAAK,MAAMA,EAAS,EAAIA,EAAS,UAAU,EACxDA,EAAS,OAAS,QAClBA,EAAS,iBAAmB,SAC5BA,EAAS,kBAAoB,SAC7B,MACF,IAAK,SACL,IAAK,SACHA,EAAS,EAAI,KAAK,MAAMA,EAAS,EAAIA,EAAS,MAAQ,CAAC,EACvDA,EAAS,OAAS,SAClBA,EAAS,iBAAmB,SAC5BA,EAAS,kBAAoB,SAC7B,MACF,IAAK,QACL,IAAK,MACHA,EAAS,EAAI,KAAK,MAAMA,EAAS,EAAIA,EAAS,MAAQA,EAAS,UAAU,EACzEA,EAAS,OAAS,MAClBA,EAAS,iBAAmB,SAC5BA,EAAS,kBAAoB,SAC7B,KACJ,CAGF,OAAS,CAACuB,EAAGC,CAAI,IAAKT,EAAM,QAAQ,EAAG,CAEnCf,EAAS,aAAe,QACxBA,EAAS,aAAe,GACxBiB,IAAkB,SAElBI,EAAKE,EAAIN,GAGX,IAAMf,EAAWxB,EAAK,OAAO,MAAM,EACnCwB,EAAS,KAAK,IAAKF,EAAS,CAAC,EAC7BE,EAAS,KAAK,IAAKoB,EAAM,CAAC,EACtBtB,EAAS,SAAW,QACtBE,EACG,KAAK,cAAeF,EAAS,MAAM,EACnC,KAAK,oBAAqBA,EAAS,gBAAgB,EACnD,KAAK,qBAAsBA,EAAS,iBAAiB,EAEtDA,EAAS,aAAe,QAC1BE,EAAS,MAAM,cAAeF,EAAS,UAAU,EAE/CkB,IAAoB,QACtBhB,EAAS,MAAM,YAAagB,CAAe,EAEzClB,EAAS,aAAe,QAC1BE,EAAS,MAAM,cAAeF,EAAS,UAAU,EAE/CA,EAAS,OAAS,QACpBE,EAAS,KAAK,OAAQF,EAAS,IAAI,EAEjCA,EAAS,QAAU,QACrBE,EAAS,KAAK,QAASF,EAAS,KAAK,EAEnCA,EAAS,KAAO,OAClBE,EAAS,KAAK,KAAMF,EAAS,EAAE,EACtBqB,IAAO,GAChBnB,EAAS,KAAK,KAAMmB,CAAE,EAGxB,IAAMI,EAAOD,GAAQE,GACrB,GAAI1B,EAAS,MAAO,CAClB,IAAM2B,EAAOzB,EAAS,OAAO,OAAO,EACpCyB,EAAK,KAAK,IAAK3B,EAAS,CAAC,EACrBA,EAAS,OAAS,QACpB2B,EAAK,KAAK,OAAQ3B,EAAS,IAAI,EAEjC2B,EAAK,KAAKF,CAAI,CAChB,MACEvB,EAAS,KAAKuB,CAAI,EAGlBzB,EAAS,SAAW,QACpBA,EAAS,aAAe,QACxBA,EAAS,WAAa,IAEtBc,IAAeZ,EAAS,SAAWA,GAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,OAC7DW,EAAiBC,GAGnBM,EAAU,KAAKlB,CAAQ,CACzB,CAEA,OAAOkB,CACT,EAlIwB,YAoIXQ,GAAYnD,EAAA,SAAUC,EAAMmD,EAAW,CASlD,SAASC,EAAUC,EAAGC,EAAGC,EAAOC,EAAQC,EAAK,CAC3C,OACEJ,EACA,IACAC,EACA,KACCD,EAAIE,GACL,IACAD,EACA,KACCD,EAAIE,GACL,KACCD,EAAIE,EAASC,GACd,KACCJ,EAAIE,EAAQE,EAAM,KACnB,KACCH,EAAIE,GACL,IACAH,EACA,KACCC,EAAIE,EAET,CAtBSzD,EAAAqD,EAAA,aAuBT,IAAMM,EAAU1D,EAAK,OAAO,SAAS,EACrC,OAAA0D,EAAQ,KAAK,SAAUN,EAAUD,EAAU,EAAGA,EAAU,EAAGA,EAAU,MAAOA,EAAU,OAAQ,CAAC,CAAC,EAChGO,EAAQ,KAAK,QAAS,UAAU,EAEhCP,EAAU,EAAIA,EAAU,EAAIA,EAAU,OAAS,EAE/CjB,GAASlC,EAAMmD,CAAS,EACjBO,CACT,EAxCyB,aA0CrBlD,EAAW,GAEFmD,GAAqB5D,EAAA,CAAC6D,EAASC,EAAQC,EAAWC,IAAS,CACjEH,EAAQ,QAGbE,EAAU,QAASE,GAAa,CAC9B,IAAM7D,EAAQ0D,EAAO,IAAIG,CAAQ,EAC3BC,EAAWL,EAAQ,OAAO,SAAWzD,EAAM,QAAQ,EACrD,CAAC4D,EAAK,cAAgB5D,EAAM,MAC9B8D,EAAS,KAAK,KAAM9D,EAAM,MAAQA,EAAM,OAAS,CAAC,EACzC4D,EAAK,cACdE,EAAS,KAAK,KAAM9D,EAAM,KAAK,CAEnC,CAAC,CACH,EAbkC,sBAuB5B+D,GAA2BnE,EAAA,SAAUC,EAAMG,EAAO4D,EAAMI,EAAU,CACtE,IAAMC,EAASD,EAAWhE,EAAM,MAAQA,EAAM,OACxCkE,EAASlE,EAAM,EAAIA,EAAM,MAAQ,EACjCmE,EAAUF,EAASjE,EAAM,OAEzBoE,EAAmBvE,EAAK,OAAO,GAAG,EAAE,MAAM,EAChD,IAAIU,EAAI6D,EAEHJ,IACH3D,IACI,OAAO,KAAKL,EAAM,OAAS,CAAC,CAAC,EAAE,QAAU,CAAC4D,EAAK,YACjDrD,EAAE,KAAK,UAAWS,GAAgB,QAAQX,CAAQ,QAAQ,CAAC,EAAE,KAAK,SAAU,SAAS,EAEvFE,EAAE,OAAO,MAAM,EACZ,KAAK,KAAM,QAAUF,CAAQ,EAC7B,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMC,CAAO,EAClB,KAAK,KAAMD,CAAM,EACjB,KAAK,KAAM,GAAI,EACf,KAAK,QAAS,gBAAgB,EAC9B,KAAK,eAAgB,OAAO,EAC5B,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQlE,EAAM,IAAI,EAE1BO,EAAI6D,EAAiB,OAAO,GAAG,EAC/BpE,EAAM,SAAWK,EAEbL,EAAM,OAAS,MACjBO,EAAE,KAAK,KAAM,QAAUF,CAAQ,GAInC,IAAMgE,EAAqBC,GAAY,EACvC,IAAIC,EAAW,QACXvE,EAAM,YAAY,MACpBuE,EAAWvE,EAAM,WAAW,MAE5BqE,EAAK,KAAO,UAEVL,EACFO,GAAY,IAAI/E,EAAkB,GAElC+E,GAAY,IAAIhF,EAAe,GAEjC8E,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACTI,EAAK,MAAQrE,EAAM,MACnBqE,EAAK,OAASrE,EAAM,OACpBqE,EAAK,MAAQE,EACbF,EAAK,GAAK,EACVA,EAAK,GAAK,EACVA,EAAK,KAAOrE,EAAM,KAClB,IAAMU,EAAWf,GAASY,EAAG8D,CAAI,EAGjC,GAFArE,EAAM,SAAWqE,EAEbrE,EAAM,YAAY,KAAM,CAC1B,IAAMwE,EAAUxE,EAAM,WAAW,KAAK,KAAK,EACvCwE,EAAQ,OAAO,CAAC,IAAM,IACVC,GAAkBlE,EAAG8D,EAAK,EAAIA,EAAK,MAAQ,GAAIA,EAAK,EAAI,GAAIG,EAAQ,OAAO,CAAC,CAAC,EAE7EE,GAAUnE,EAAG8D,EAAK,EAAIA,EAAK,MAAQ,GAAIA,EAAK,EAAI,GAAIG,CAAO,CAE7E,CAEAG,GAAuBf,EAAMgB,EAAS5E,EAAM,WAAW,CAAC,EACtDA,EAAM,YACNO,EACA8D,EAAK,EACLA,EAAK,EACLA,EAAK,MACLA,EAAK,OACL,CAAE,MAAO,SAAS5E,EAAe,EAAG,EACpCmE,CACF,EAEA,IAAIP,EAASrD,EAAM,OACnB,GAAIU,EAAS,KAAM,CACjB,IAAMmE,EAASnE,EAAS,KAAK,EAAE,QAAQ,EACvCV,EAAM,OAAS6E,EAAO,OACtBxB,EAASwB,EAAO,MAClB,CAEA,OAAOxB,CACT,EAnFiC,4BA6F3ByB,GAA2BlF,EAAA,SAAUC,EAAMG,EAAO4D,EAAMI,EAAU,CACtE,IAAMC,EAASD,EAAWhE,EAAM,MAAQA,EAAM,OACxCkE,EAASlE,EAAM,EAAIA,EAAM,MAAQ,EACjCmE,EAAUF,EAASjE,EAAM,OAEzBoE,EAAmBvE,EAAK,OAAO,GAAG,EAAE,MAAM,EAChD,IAAIU,EAAI6D,EAEHJ,IACH3D,IACI,OAAO,KAAKL,EAAM,OAAS,CAAC,CAAC,EAAE,QAAU,CAAC4D,EAAK,YACjDrD,EAAE,KAAK,UAAWS,GAAgB,QAAQX,CAAQ,QAAQ,CAAC,EAAE,KAAK,SAAU,SAAS,EAEvFE,EAAE,OAAO,MAAM,EACZ,KAAK,KAAM,QAAUF,CAAQ,EAC7B,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMC,CAAO,EAClB,KAAK,KAAMD,CAAM,EACjB,KAAK,KAAM,GAAI,EACf,KAAK,QAAS,gBAAgB,EAC9B,KAAK,eAAgB,OAAO,EAC5B,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQlE,EAAM,IAAI,EAE1BO,EAAI6D,EAAiB,OAAO,GAAG,EAC/BpE,EAAM,SAAWK,EAEbL,EAAM,OAAS,MACjBO,EAAE,KAAK,KAAM,QAAUF,CAAQ,GAInC,IAAMgE,EAAqBC,GAAY,EACvC,IAAIC,EAAW,QACXvE,EAAM,YAAY,MACpBuE,EAAWvE,EAAM,WAAW,MAE5BqE,EAAK,KAAO,UAEVL,EACFO,GAAY,IAAI/E,EAAkB,GAElC+E,GAAY,IAAIhF,EAAe,GAEjC8E,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACTI,EAAK,MAAQrE,EAAM,MACnBqE,EAAK,OAASrE,EAAM,OACpBqE,EAAK,MAAQE,EACbF,EAAK,KAAOrE,EAAM,KAGlB,IAAM+E,EAAS,EACTC,EAAa,CACjB,GAAGX,EACH,EAAGA,EAAK,EAAgB,CAACU,EACzB,EAAGV,EAAK,GAAgB,CAACU,EACzB,MAAO,OACT,EACMrE,EAAWf,GAASY,EAAG8D,CAAI,EAIjC,GAHA1E,GAASY,EAAGyE,CAAU,EACtBhF,EAAM,SAAWqE,EAEbrE,EAAM,YAAY,KAAM,CAC1B,IAAMwE,EAAUxE,EAAM,WAAW,KAAK,KAAK,EACvCwE,EAAQ,OAAO,CAAC,IAAM,IACVC,GAAkBlE,EAAG8D,EAAK,EAAIA,EAAK,MAAQ,GAAIA,EAAK,EAAI,GAAIG,EAAQ,OAAO,CAAC,CAAC,EAE7EE,GAAUnE,EAAG8D,EAAK,EAAIA,EAAK,MAAQ,GAAIA,EAAK,EAAI,GAAIG,CAAO,CAE7E,CAEAG,GAAuBf,EAAMgB,EAAS5E,EAAM,WAAW,CAAC,EACtDA,EAAM,YACNO,EACA8D,EAAK,EAAIU,EACTV,EAAK,EAAIU,EACTV,EAAK,MACLA,EAAK,OACL,CAAE,MAAO,SAAS5E,EAAe,EAAG,EACpCmE,CACF,EAEA,IAAIP,EAASrD,EAAM,OACnB,GAAIU,EAAS,KAAM,CACjB,IAAMmE,EAASnE,EAAS,KAAK,EAAE,QAAQ,EACvCV,EAAM,OAAS6E,EAAO,OACtBxB,EAASwB,EAAO,MAClB,CAEA,OAAOxB,CACT,EA3FiC,4BA6F3B4B,GAAqBrF,EAAA,SAAUC,EAAMG,EAAO4D,EAAMI,EAAU,CAChE,IAAMC,EAASD,EAAWhE,EAAM,MAAQA,EAAM,OACxCkE,EAASlE,EAAM,EAAIA,EAAM,MAAQ,EACjCmE,EAAUF,EAASjE,EAAM,OAEzBoE,EAAmBvE,EAAK,OAAO,GAAG,EAAE,MAAM,EAC5CU,EAAI6D,EAEHJ,IACH3D,IACI,OAAO,KAAKL,EAAM,OAAS,CAAC,CAAC,EAAE,QAAU,CAAC4D,EAAK,YACjDrD,EAAE,KAAK,UAAWS,GAAgB,QAAQX,CAAQ,QAAQ,CAAC,EAAE,KAAK,SAAU,SAAS,EAEvFE,EAAE,OAAO,MAAM,EACZ,KAAK,KAAM,QAAUF,CAAQ,EAC7B,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMC,CAAO,EAClB,KAAK,KAAMD,CAAM,EACjB,KAAK,KAAM,GAAI,EACf,KAAK,QAAS,gBAAgB,EAC9B,KAAK,eAAgB,OAAO,EAC5B,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQlE,EAAM,IAAI,EAE1BO,EAAI6D,EAAiB,OAAO,GAAG,EAC/BpE,EAAM,SAAWK,EAEbL,EAAM,OAAS,MACjBO,EAAE,KAAK,KAAM,QAAUF,CAAQ,GAInC,IAAMgE,EAAqBC,GAAY,EACnCC,EAAW,QACXvE,EAAM,YAAY,MACpBuE,EAAWvE,EAAM,WAAW,MAE5BqE,EAAK,KAAO,UAGVL,EACFO,GAAY,IAAI/E,EAAkB,GAElC+E,GAAY,IAAIhF,EAAe,GAGjC8E,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACTI,EAAK,MAAQrE,EAAM,MACnBqE,EAAK,OAASrE,EAAM,OACpBqE,EAAK,MAAQE,EACbF,EAAK,KAAOrE,EAAM,KAGlB,IAAMkF,EAAKb,EAAK,OAAS,EACnBc,EAAKD,GAAM,IAAMb,EAAK,OAAS,IAG/Be,EAAgB7E,EAAE,OAAO,GAAG,EAC5B8E,EAAc9E,EAAE,OAAO,GAAG,EA+BhC,GA5BA6E,EACG,OAAO,MAAM,EACb,KACC,IACA,KAAKf,EAAK,CAAC,IAAIA,EAAK,EAAIa,CAAE;AAAA,QACxBC,CAAE,IAAID,CAAE,YAAYb,EAAK,MAAM;AAAA,QAC/BA,EAAK,MAAQ,EAAIc,CAAE;AAAA,QACnBA,CAAE,IAAID,CAAE,aAAab,EAAK,MAAM;AAAA;AAAA,GAGpC,EACC,KAAK,QAASE,CAAQ,EACzBc,EACG,OAAO,MAAM,EACb,KACC,IACA,KAAKhB,EAAK,CAAC,IAAIA,EAAK,EAAIa,CAAE;AAAA,UACtBC,CAAE,IAAID,CAAE,YAAYb,EAAK,MAAM,EACrC,EACC,KAAK,SAAU,MAAM,EACrB,KAAK,eAAgB,KAAK,EAC1B,KAAK,QAASE,CAAQ,EAEzBa,EAAc,KAAK,YAAa,aAAaD,CAAE,KAAK,EAAEd,EAAK,OAAS,EAAE,GAAG,EACzEgB,EAAY,KAAK,YAAa,aAAahB,EAAK,MAAQc,CAAE,KAAK,CAACd,EAAK,OAAS,CAAC,GAAG,EAElFrE,EAAM,SAAWqE,EAEbrE,EAAM,YAAY,KAAM,CAC1B,IAAMwE,EAAUxE,EAAM,WAAW,KAAK,KAAK,EACrCsF,EAAQjB,EAAK,EAAIA,EAAK,MAAQ,GAC9BkB,EAAQlB,EAAK,EAAI,GACnBG,EAAQ,OAAO,CAAC,IAAM,IACVC,GAAkBlE,EAAG+E,EAAOC,EAAOf,EAAQ,OAAO,CAAC,CAAC,EAEpDE,GAAUnE,EAAG+E,EAAOC,EAAOf,CAAO,CAEpD,CAEAG,GAAuBf,EAAMgB,EAAS5E,EAAM,WAAW,CAAC,EACtDA,EAAM,YACNO,EACA8D,EAAK,EACLA,EAAK,EACLA,EAAK,MACLA,EAAK,OACL,CAAE,MAAO,SAAS5E,EAAe,EAAG,EACpCmE,CACF,EAEA,IAAIP,EAASrD,EAAM,OACbwF,EAAWJ,EAAc,OAAO,iBAAiB,EACvD,GAAII,EAAS,KAAK,EAAG,CACnB,IAAMX,EAASW,EAAS,KAAK,EAAE,QAAQ,EACvCxF,EAAM,OAAS6E,EAAO,OACtBxB,EAASwB,EAAO,MAClB,CAEA,OAAOxB,CACT,EAzH2B,sBA2HrBoC,GAAuB7F,EAAA,SAAUC,EAAMG,EAAO4D,EAAMI,EAAU,CAClE,IAAMC,EAASD,EAAWhE,EAAM,MAAQA,EAAM,OACxCkE,EAASlE,EAAM,EAAIA,EAAM,MAAQ,EACjCmE,EAAUF,EAAS,GAEnBtB,EAAO9C,EAAK,OAAO,GAAG,EAAE,MAAM,EAE/BmE,IACH3D,IACAsC,EACG,OAAO,MAAM,EACb,KAAK,KAAM,QAAUtC,CAAQ,EAC7B,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMC,CAAO,EAClB,KAAK,KAAMD,CAAM,EACjB,KAAK,KAAM,GAAI,EACf,KAAK,QAAS,gBAAgB,EAC9B,KAAK,eAAgB,OAAO,EAC5B,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQlE,EAAM,IAAI,EAE1BA,EAAM,SAAWK,GAEnB,IAAMqF,EAAU7F,EAAK,OAAO,GAAG,EAC3B8F,EAAWjG,GACXsE,EACF2B,GAAY,IAAInG,EAAkB,GAElCmG,GAAY,IAAIpG,EAAe,GAEjCmG,EAAQ,KAAK,QAASC,CAAQ,EAC9BD,EAAQ,KAAK,OAAQ1F,EAAM,IAAI,EAE/B,IAAMqE,EAAqBC,GAAY,EACvCD,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACTI,EAAK,KAAO,UACZA,EAAK,MAAQrE,EAAM,MACnBqE,EAAK,OAASrE,EAAM,OACpBqE,EAAK,MAAQ,QAEb,IAAMuB,EAAK5F,EAAM,EAAIA,EAAM,MAAQ,EAC7B6F,EAAK5B,EAAS,GACd6B,EAAI,GAEVJ,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,qBAAqB,EAChC,KAAK,OAAQ,EAAE,EACf,KAAK,OAAQ,GAAG,EAChB,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,OAAO,EACtB,OAAO,MAAM,EACb,KAAK,IAAK,6CAA6C,EAG1DA,EACG,OAAO,QAAQ,EACf,KAAK,KAAME,CAAE,EACb,KAAK,KAAMC,CAAE,EACb,KAAK,IAAKC,CAAC,EACX,KAAK,OAAQ,SAAS,EACtB,KAAK,SAAU,MAAM,EACrB,KAAK,eAAgB,GAAG,EAG3BJ,EACG,OAAO,MAAM,EACb,KAAK,aAAc,2BAA2B,EAC9C,KAAK,YAAa,aAAaE,CAAE,KAAKC,EAAKC,CAAC,GAAG,EAElD,IAAMjB,EAASa,EAAQ,KAAK,EAAE,QAAQ,EACtC,OAAA1F,EAAM,OAAS6E,EAAO,OAAS,GAAKjB,GAAM,UAAU,gBAAkB,GAEtEe,GAAuBf,EAAMgB,EAAS5E,EAAM,WAAW,CAAC,EACtDA,EAAM,YACN0F,EACArB,EAAK,EACLA,EAAK,EAAIyB,GAAM9B,EAAgB,EAAL,IAC1BK,EAAK,MACLA,EAAK,OACL,CAAE,MAAO,SAAS3E,EAAsB,EAAG,EAC3CkE,CACF,EAEO5D,EAAM,MACf,EAxF6B,wBA0FvB+F,GAAsBnG,EAAA,SAAUC,EAAMG,EAAO4D,EAAMI,EAAU,CACjE,IAAMC,EAASD,EAAWhE,EAAM,MAAQA,EAAM,OACxCkE,EAASlE,EAAM,EAAIA,EAAM,MAAQ,EACjCmE,EAAUF,EAAS,GAEnBtB,EAAO9C,EAAK,OAAO,GAAG,EAAE,MAAM,EAE9B6F,EAAU7F,EAAK,OAAO,GAAG,EAC3B8F,EAAW,QACX3B,EACF2B,GAAY,IAAInG,EAAkB,GAElCmG,GAAY,IAAIpG,EAAe,GAEjCmG,EAAQ,KAAK,QAASC,CAAQ,EAC9BD,EAAQ,KAAK,OAAQ1F,EAAM,IAAI,EAE/B,IAAMqE,EAAqBC,GAAY,EACvCD,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACTI,EAAK,KAAO,UACZA,EAAK,MAAQrE,EAAM,MACnBqE,EAAK,OAASrE,EAAM,OACpBqE,EAAK,MAAQ,QAEb,IAAMuB,EAAK5F,EAAM,EAAIA,EAAM,MAAQ,EAC7B6F,EAAK5B,GAAWD,EAAgB,GAAL,IAC3B8B,EAAI,GAEVJ,EACG,OAAO,QAAQ,EACf,KAAK,KAAME,CAAE,EACb,KAAK,KAAMC,CAAE,EACb,KAAK,IAAKC,CAAC,EACX,KAAK,QAAS9F,EAAM,KAAK,EACzB,KAAK,SAAUA,EAAM,MAAM,EAE9B0F,EACG,OAAO,MAAM,EACb,KAAK,KAAME,EAAKE,CAAC,EACjB,KAAK,KAAMF,EAAKE,CAAC,EACjB,KAAK,KAAMD,EAAKC,CAAC,EACjB,KAAK,KAAMD,EAAKC,CAAC,EACjB,KAAK,eAAgB,CAAC,EAEzB,IAAMjB,EAASa,EAAQ,KAAK,EAAE,QAAQ,EACtC,OAAA1F,EAAM,OAAS6E,EAAO,QAAUjB,GAAM,UAAU,gBAAkB,GAE7DI,IACH3D,IACAsC,EACG,OAAO,MAAM,EACb,KAAK,KAAM,QAAUtC,CAAQ,EAC7B,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMC,CAAO,EAClB,KAAK,KAAMD,CAAM,EACjB,KAAK,KAAM,GAAI,EACf,KAAK,QAAS,gBAAgB,EAC9B,KAAK,eAAgB,OAAO,EAC5B,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQlE,EAAM,IAAI,EAE1BA,EAAM,SAAWK,GAGnBsE,GAAuBf,EAAMgB,EAAS5E,EAAM,WAAW,CAAC,EACtDA,EAAM,YACN0F,EACArB,EAAK,EACLA,EAAK,GAAML,EAAgB,GAAL,IACtBK,EAAK,MACLA,EAAK,OACL,CAAE,MAAO,SAAS3E,EAAsB,EAAG,EAC3CkE,CACF,EAEKI,EAGH0B,EAAQ,KAAK,YAAa,gBAAmBI,CAAC,GAAG,EAFjDJ,EAAQ,KAAK,YAAa,gBAAmBI,EAAI,EAAI,CAAC,GAAG,EAKpD9F,EAAM,MACf,EAnF4B,uBAqFtBgG,GAAwBpG,EAAA,SAAUC,EAAMG,EAAO4D,EAAMI,EAAU,CACnE,IAAMC,EAASD,EAAWhE,EAAM,MAAQA,EAAM,OACxCkE,EAASlE,EAAM,EAAIA,EAAM,MAAQ,EACjCmE,EAAUF,EAASjE,EAAM,OAAS,EAAI4D,EAAK,cAE3CQ,EAAmBvE,EAAK,OAAO,GAAG,EAAE,MAAM,EAC5CU,EAAI6D,EAEHJ,IACH3D,IACI,OAAO,KAAKL,EAAM,OAAS,CAAC,CAAC,EAAE,QAAU,CAAC4D,EAAK,YACjDrD,EAAE,KAAK,UAAWS,GAAgB,QAAQX,CAAQ,QAAQ,CAAC,EAAE,KAAK,SAAU,SAAS,EAEvFE,EAAE,OAAO,MAAM,EACZ,KAAK,KAAM,QAAUF,CAAQ,EAC7B,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMC,CAAO,EAClB,KAAK,KAAMD,CAAM,EACjB,KAAK,KAAM,GAAI,EACf,KAAK,QAAS,gBAAgB,EAC9B,KAAK,eAAgB,OAAO,EAC5B,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQlE,EAAM,IAAI,EAE1BO,EAAI6D,EAAiB,OAAO,GAAG,EAC/BpE,EAAM,SAAWK,EAEbL,EAAM,OAAS,MACjBO,EAAE,KAAK,KAAM,QAAUF,CAAQ,GAInC,IAAMgE,EAAqBC,GAAY,EAEnCC,EAAW,QACXvE,EAAM,YAAY,MACpBuE,EAAWvE,EAAM,WAAW,MAE5BqE,EAAK,KAAO,UAGVL,EACFO,GAAY,IAAI/E,EAAkB,GAElC+E,GAAY,IAAIhF,EAAe,GAGjC8E,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACTI,EAAK,MAAQrE,EAAM,MACnBqE,EAAK,OAASrE,EAAM,OACpBqE,EAAK,MAAQE,EACbF,EAAK,KAAOrE,EAAM,KAGlBqE,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACT,IAAMgC,EAAI5B,EAAK,MAAQ,EACjB6B,EAAI7B,EAAK,MAAQ,EACjBc,EAAKc,EAAI,EACTf,EAAKC,GAAM,IAAMc,EAAI,IAGrBb,EAAgB7E,EAAE,OAAO,GAAG,EAE5B4F,EAAI;AAAA,MACN9B,EAAK,CAAC,IAAIA,EAAK,EAAIa,CAAE;AAAA,MACrBC,CAAE,IAAID,CAAE,UAAUe,CAAC;AAAA,MACnBd,CAAE,IAAID,CAAE,WAAWe,CAAC;AAAA,QAClBC,EAAI,EAAIhB,CAAE;AAAA,MACZC,CAAE,IAAID,CAAE,UAAUe,CAAC;AAAA,SAChBC,EAAI,EAAIhB,CAAE;AAAA,EAGjBE,EACG,OAAO,MAAM,EACb,KAAK,IAAKe,CAAC,EACX,KAAK,OAAQ,SAAS,EACtB,KAAK,SAAU,MAAM,EACrB,KAAK,eAAgB,CAAC,EACtB,KAAK,QAAS5B,CAAQ,EAEzBa,EAAc,KAAK,YAAa,aAAaa,CAAC,KAAKf,CAAE,GAAG,EAExDlF,EAAM,SAAWqE,EACjBM,GAAuBf,EAAMgB,EAAS5E,EAAM,WAAW,CAAC,EACtDA,EAAM,YACNO,EACA8D,EAAK,EACLA,EAAK,EAAI,GACTA,EAAK,MACLA,EAAK,OACL,CAAE,MAAO,SAAS5E,EAAe,EAAG,EACpCmE,CACF,EAEA,IAAM4B,EAAWJ,EAAc,OAAO,iBAAiB,EACvD,GAAII,EAAS,KAAK,EAAG,CACnB,IAAMX,EAASW,EAAS,KAAK,EAAE,QAAQ,EACvCxF,EAAM,OAAS6E,EAAO,QAAUjB,EAAK,SAAS,gBAAkB,EAClE,CAEA,OAAO5D,EAAM,MACf,EAvG8B,yBAyGxBoG,GAAwBxG,EAAA,SAAUC,EAAMG,EAAO4D,EAAMI,EAAU,CACnE,IAAMC,EAASD,EAAWhE,EAAM,MAAQA,EAAM,OACxCkE,EAASlE,EAAM,EAAIA,EAAM,MAAQ,EACjCmE,EAAUF,EAAS,GACnBoC,EAAS,GACT1D,EAAO9C,EAAK,OAAO,GAAG,EAAE,MAAM,EAE/BmE,IACH3D,IACAsC,EACG,OAAO,MAAM,EACb,KAAK,KAAM,QAAUtC,CAAQ,EAC7B,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMC,CAAO,EAClB,KAAK,KAAMD,CAAM,EACjB,KAAK,KAAM,GAAI,EACf,KAAK,QAAS,gBAAgB,EAC9B,KAAK,eAAgB,OAAO,EAC5B,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQlE,EAAM,IAAI,EAE1BA,EAAM,SAAWK,GAEnB,IAAMqF,EAAU7F,EAAK,OAAO,GAAG,EAC3B8F,EAAWjG,GACXsE,EACF2B,GAAY,IAAInG,EAAkB,GAElCmG,GAAY,IAAIpG,EAAe,GAEjCmG,EAAQ,KAAK,QAASC,CAAQ,EAC9BD,EAAQ,KAAK,OAAQ1F,EAAM,IAAI,EAE/B,IAAMqE,EAAqBC,GAAY,EACvCD,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACTI,EAAK,KAAO,UACZA,EAAK,MAAQrE,EAAM,MACnBqE,EAAK,OAASrE,EAAM,OACpBqE,EAAK,MAAQ,QAEbqB,EACG,OAAO,MAAM,EACb,KAAK,KAAM,kBAAoBrF,CAAQ,EACvC,KAAK,KAAML,EAAM,EAAIA,EAAM,MAAQ,EAAIqG,EAAS,GAAG,EACnD,KAAK,KAAMpC,EAAS,EAAE,EACtB,KAAK,KAAMjE,EAAM,EAAIA,EAAM,MAAQ,EAAI,EAAE,EACzC,KAAK,KAAMiE,EAAS,EAAE,EAEzByB,EACG,OAAO,MAAM,EACb,KAAK,KAAM,iBAAmBrF,CAAQ,EACtC,KAAK,KAAML,EAAM,EAAIA,EAAM,MAAQ,EAAIqG,EAAS,GAAG,EACnD,KAAK,KAAMpC,EAAS,CAAC,EACrB,KAAK,KAAMjE,EAAM,EAAIA,EAAM,MAAQ,EAAIqG,EAAS,GAAG,EACnD,KAAK,KAAMpC,EAAS,EAAE,EAEzByB,EACG,OAAO,QAAQ,EACf,KAAK,KAAM1F,EAAM,EAAIA,EAAM,MAAQ,CAAC,EACpC,KAAK,KAAMiE,EAAS,EAAE,EACtB,KAAK,IAAKoC,CAAM,EAEnB,IAAMxB,EAASa,EAAQ,KAAK,EAAE,QAAQ,EACtC,OAAA1F,EAAM,OAAS6E,EAAO,QAAUjB,EAAK,SAAS,gBAAkB,GAEhEe,GAAuBf,EAAMgB,EAAS5E,EAAM,WAAW,CAAC,EACtDA,EAAM,YACN0F,EACArB,EAAK,EACLA,EAAK,EAAI,GACTA,EAAK,MACLA,EAAK,OACL,CAAE,MAAO,SAAS3E,EAAsB,EAAG,EAC3CkE,CACF,EAEKI,EAGH0B,EAAQ,KAAK,YAAa,eAAeW,EAAS,EAAI,EAAE,GAAG,EAF3DX,EAAQ,KAAK,YAAa,eAAeW,EAAS,EAAI,EAAE,GAAG,EAKtDrG,EAAM,MACf,EApF8B,yBAsFxBsG,GAAqB1G,EAAA,SAAUC,EAAMG,EAAO4D,EAAMI,EAAU,CAChE,IAAMC,EAASD,EAAWhE,EAAM,MAAQA,EAAM,OACxCkE,EAASlE,EAAM,EAAIA,EAAM,MAAQ,EACjCmE,EAAUF,EAAS,GAEnBtB,EAAO9C,EAAK,OAAO,GAAG,EAAE,MAAM,EAE/BmE,IACH3D,IACAsC,EACG,OAAO,MAAM,EACb,KAAK,KAAM,QAAUtC,CAAQ,EAC7B,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMC,CAAO,EAClB,KAAK,KAAMD,CAAM,EACjB,KAAK,KAAM,GAAI,EACf,KAAK,QAAS,gBAAgB,EAC9B,KAAK,eAAgB,OAAO,EAC5B,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQlE,EAAM,IAAI,EAE1BA,EAAM,SAAWK,GAEnB,IAAMqF,EAAU7F,EAAK,OAAO,GAAG,EAC3B8F,EAAWjG,GACXsE,EACF2B,GAAY,IAAInG,EAAkB,GAElCmG,GAAY,IAAIpG,EAAe,GAEjCmG,EAAQ,KAAK,QAASC,CAAQ,EAC9BD,EAAQ,KAAK,OAAQ1F,EAAM,IAAI,EAE/B,IAAMqE,EAAqBC,GAAY,EACvCD,EAAK,EAAIrE,EAAM,EACfqE,EAAK,EAAIJ,EACTI,EAAK,KAAO,UACZA,EAAK,MAAQrE,EAAM,MACnBqE,EAAK,OAASrE,EAAM,OACpBqE,EAAK,MAAQ,QACbA,EAAK,GAAK,EACVA,EAAK,GAAK,EAEVqB,EACG,OAAO,MAAM,EACb,KAAK,KAAM,kBAAoBrF,CAAQ,EACvC,KAAK,KAAM6D,CAAM,EACjB,KAAK,KAAMD,EAAS,EAAE,EACtB,KAAK,KAAMC,CAAM,EACjB,KAAK,KAAMD,EAAS,EAAE,EAEzByB,EACG,OAAO,MAAM,EACb,KAAK,KAAM,iBAAmBrF,CAAQ,EACtC,KAAK,KAAM6D,EAAS5E,GAAmB,CAAC,EACxC,KAAK,KAAM2E,EAAS,EAAE,EACtB,KAAK,KAAMC,EAAS5E,GAAmB,CAAC,EACxC,KAAK,KAAM2E,EAAS,EAAE,EACzByB,EACG,OAAO,MAAM,EACb,KAAK,KAAMxB,EAAS5E,GAAmB,CAAC,EACxC,KAAK,KAAM2E,EAAS,EAAE,EACtB,KAAK,KAAMC,CAAM,EACjB,KAAK,KAAMD,EAAS,EAAE,EACzByB,EACG,OAAO,MAAM,EACb,KAAK,KAAMxB,CAAM,EACjB,KAAK,KAAMD,EAAS,EAAE,EACtB,KAAK,KAAMC,EAAS5E,GAAmB,EAAI,CAAC,EAC5C,KAAK,KAAM2E,EAAS,EAAE,EAEzB,IAAMsC,EAASb,EAAQ,OAAO,QAAQ,EACtCa,EAAO,KAAK,KAAMvG,EAAM,EAAIA,EAAM,MAAQ,CAAC,EAC3CuG,EAAO,KAAK,KAAMtC,EAAS,EAAE,EAC7BsC,EAAO,KAAK,IAAK,EAAE,EACnBA,EAAO,KAAK,QAASvG,EAAM,KAAK,EAChCuG,EAAO,KAAK,SAAUvG,EAAM,MAAM,EAElC,IAAM6E,EAASa,EAAQ,KAAK,EAAE,QAAQ,EACtC,OAAA1F,EAAM,OAAS6E,EAAO,OAEtBF,GAAuBf,EAAMgB,EAAS5E,EAAM,WAAW,CAAC,EACtDA,EAAM,YACN0F,EACArB,EAAK,EACLA,EAAK,EAAI,GACTA,EAAK,MACLA,EAAK,OACL,CAAE,MAAO,SAAS3E,EAAsB,EAAG,EAC3CkE,CACF,EAEO5D,EAAM,MACf,EA7F2B,sBA+FdwG,GAAY5G,EAAA,eAAgBC,EAAMG,EAAO4D,EAAMI,EAAU,CACpE,OAAQhE,EAAM,KAAM,CAClB,IAAK,QACH,OAAO,MAAMsG,GAAmBzG,EAAMG,EAAO4D,EAAMI,CAAQ,EAC7D,IAAK,cACH,OAAO,MAAMD,GAAyBlE,EAAMG,EAAO4D,EAAMI,CAAQ,EACnE,IAAK,WACH,OAAO,MAAMoC,GAAsBvG,EAAMG,EAAO4D,EAAMI,CAAQ,EAChE,IAAK,UACH,OAAO,MAAMyB,GAAqB5F,EAAMG,EAAO4D,EAAMI,CAAQ,EAC/D,IAAK,SACH,OAAO,MAAM+B,GAAoBlG,EAAMG,EAAO4D,EAAMI,CAAQ,EAC9D,IAAK,WACH,OAAO,MAAMgC,GAAsBnG,EAAMG,EAAO4D,EAAMI,CAAQ,EAChE,IAAK,cACH,OAAO,MAAMc,GAAyBjF,EAAMG,EAAO4D,EAAMI,CAAQ,EACnE,IAAK,QACH,OAAO,MAAMiB,GAAmBpF,EAAMG,EAAO4D,EAAMI,CAAQ,CAC/D,CACF,EAnByB,aAqBZyC,GAAU7G,EAAA,SAAUC,EAAM6G,EAAK9C,EAAM,CAEhD,IAAMrD,EADmBV,EAAK,OAAO,GAAG,EAExC8G,GAAmBpG,EAAGmG,CAAG,EACrBA,EAAI,MACN/B,GAAuBf,CAAI,EACzB8C,EAAI,KACJnG,EACAmG,EAAI,EACJA,EAAI,EAAI9C,EAAK,eAAiB8C,EAAI,eAAiB,GAAK,EACxDA,EAAI,MACJ,EACA,CAAE,MAAO,MAAO,EAChB9C,CACF,EAEFrD,EAAE,MAAM,CACV,EAjBuB,WAmBVqG,GAAgBhH,EAAA,SAAUC,EAAM,CAC3C,OAAOA,EAAK,OAAO,GAAG,CACxB,EAF6B,iBAahBgH,GAAiBjH,EAAA,SAAUC,EAAMgF,EAAQiC,EAAalD,EAAMmD,EAAkB,CACzF,IAAM1C,EAAqBC,GAAY,EACjC/D,EAAIsE,EAAO,SACjBR,EAAK,EAAIQ,EAAO,OAChBR,EAAK,EAAIQ,EAAO,OAChBR,EAAK,MAAQ,aAAgB0C,EAAmB,EAChD1C,EAAK,MAAQQ,EAAO,MAAQA,EAAO,OACnCR,EAAK,OAASyC,EAAcjC,EAAO,OACnClF,GAASY,EAAG8D,CAAI,CAClB,EAT8B,kBAoBjB2C,GAAWpH,EAAA,eAAgBC,EAAMoH,EAAWC,EAAWtD,EAAM,CACxE,GAAM,CACJ,UAAAuD,EACA,cAAAC,EACA,eAAAC,EACA,cAAAC,EACA,kBAAmBC,EACnB,gBAAiBC,EACjB,kBAAmBC,CACrB,EAAI7D,EACErD,EAAIV,EAAK,OAAO,GAAG,EACnB6H,EAAe9H,EAAA,SAAU+B,EAAQE,EAAQD,EAAO+F,EAAO,CAC3D,OAAOpH,EACJ,OAAO,MAAM,EACb,KAAK,KAAMoB,CAAM,EACjB,KAAK,KAAME,CAAM,EACjB,KAAK,KAAMD,CAAK,EAChB,KAAK,KAAM+F,CAAK,EAChB,KAAK,QAAS,UAAU,CAC7B,EARqB,gBASrBD,EAAaT,EAAU,OAAQA,EAAU,OAAQA,EAAU,MAAOA,EAAU,MAAM,EAClFS,EAAaT,EAAU,MAAOA,EAAU,OAAQA,EAAU,MAAOA,EAAU,KAAK,EAChFS,EAAaT,EAAU,OAAQA,EAAU,MAAOA,EAAU,MAAOA,EAAU,KAAK,EAChFS,EAAaT,EAAU,OAAQA,EAAU,OAAQA,EAAU,OAAQA,EAAU,KAAK,EAC9EA,EAAU,WAAa,QACzBA,EAAU,SAAS,QAAQ,SAAUW,EAAM,CACzCF,EAAaT,EAAU,OAAQW,EAAK,EAAGX,EAAU,MAAOW,EAAK,CAAC,EAAE,MAC9D,mBACA,MACF,CACF,CAAC,EAGH,IAAIC,EAAoBC,GAAW,EACnCD,EAAI,KAAOX,EACXW,EAAI,EAAIZ,EAAU,OAClBY,EAAI,EAAIZ,EAAU,OAClBY,EAAI,WAAaN,EACjBM,EAAI,SAAWL,EACfK,EAAI,WAAaJ,EACjBI,EAAI,OAAS,SACbA,EAAI,OAAS,SACbA,EAAI,MAAQ,GACZA,EAAI,MAAQP,GAAiB,GAC7BO,EAAI,OAASR,GAAkB,GAC/BQ,EAAI,WAAaT,EACjBS,EAAI,MAAQ,YAEZ9E,GAAUxC,EAAGsH,CAAG,EAChBA,EAAMC,GAAW,EACjBD,EAAI,KAAOZ,EAAU,MACrBY,EAAI,EAAIZ,EAAU,OAASK,EAAgB,GAAKL,EAAU,MAAQA,EAAU,QAAU,EACtFY,EAAI,EAAIZ,EAAU,OAASE,EAAYC,EACvCS,EAAI,OAAS,SACbA,EAAI,OAAS,SACbA,EAAI,WAAaT,EACjBS,EAAI,MAAQ,WACZA,EAAI,WAAaN,EACjBM,EAAI,SAAWL,EACfK,EAAI,WAAaJ,EACjBI,EAAI,KAAO,GAEX,IAAIxG,EAAWuD,EAASiD,EAAI,IAAI,EAAI,MAAM3G,GAAUX,EAAGsH,EAAKZ,CAAS,EAAIlF,GAASxB,EAAGsH,CAAG,EAExF,GAAIZ,EAAU,gBAAkB,QAC9B,OAAW,CAACc,EAAKH,CAAI,IAAK,OAAO,QAAQX,EAAU,aAAa,EAC9D,GAAIW,EAAK,QAAS,CAChBC,EAAI,KAAOD,EAAK,QAChBC,EAAI,EAAIZ,EAAU,QAAUA,EAAU,MAAQA,EAAU,QAAU,EAClEY,EAAI,EAAIZ,EAAU,SAASc,CAAG,EAAE,EAAIZ,EAAYC,EAChDS,EAAI,MAAQ,WACZA,EAAI,OAAS,SACbA,EAAI,OAAS,SACbA,EAAI,MAAQ,GACZA,EAAI,WAAaN,EACjBM,EAAI,SAAWL,EACfK,EAAI,WAAaJ,EACjBI,EAAI,KAAOZ,EAAU,KAEjBrC,EAASiD,EAAI,IAAI,GACnBZ,EAAU,OAASA,EAAU,SAASc,CAAG,EAAE,EAC3C,MAAM7G,GAAUX,EAAGsH,EAAKZ,CAAS,GAEjClF,GAASxB,EAAGsH,CAAG,EAEjB,IAAIG,EAAgB,KAAK,MACvB3G,EACG,IAAK4G,IAAQA,EAAG,SAAWA,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EACrD,OAAO,CAACC,EAAKC,IAASD,EAAMC,CAAI,CACrC,EACAlB,EAAU,SAASc,CAAG,EAAE,QAAUC,GAAiBb,EAAYC,EACjE,EAIJ,OAAAH,EAAU,OAAS,KAAK,MAAMA,EAAU,MAAQA,EAAU,MAAM,EACzD1G,CACT,EAjGwB,YAyGXoG,GAAqB/G,EAAA,SAAUC,EAAMgF,EAAQ,CAC1C8B,GAAmB9G,EAAMgF,CAAM,CAC/C,EAFkC,sBAIrBuD,GAAqBxI,EAAA,SAAUC,EAAM,CAChDA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,UAAU,EACrB,KAAK,YAAa,SAAS,EAC3B,KAAK,YAAa,SAAS,EAC3B,OAAO,MAAM,EACb,KAAK,YAAa,WAAW,EAC7B,KACC,IACA,i1ZACF,CACJ,EAbkC,sBAerBwI,GAAqBzI,EAAA,SAAUC,EAAM,CAChDA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,UAAU,EACrB,KAAK,QAAS,IAAI,EAClB,KAAK,SAAU,IAAI,EACnB,OAAO,MAAM,EACb,KAAK,YAAa,WAAW,EAC7B,KACC,IACA,0JACF,CACJ,EAbkC,sBAerByI,GAAkB1I,EAAA,SAAUC,EAAM,CAC7CA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,OAAO,EAClB,KAAK,QAAS,IAAI,EAClB,KAAK,SAAU,IAAI,EACnB,OAAO,MAAM,EACb,KAAK,YAAa,WAAW,EAC7B,KACC,IACA,2UACF,CACJ,EAb+B,mBAoBlB0I,GAAkB3I,EAAA,SAAUC,EAAM,CAC7CA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,WAAW,EACtB,KAAK,OAAQ,GAAG,EAChB,KAAK,OAAQ,CAAC,EACd,KAAK,cAAe,gBAAgB,EACpC,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,oBAAoB,EACnC,OAAO,MAAM,EACb,KAAK,IAAK,wBAAwB,CACvC,EAb+B,mBAoBlB2I,GAAwB5I,EAAA,SAAUC,EAAM,CACnDA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,aAAa,EACxB,KAAK,OAAQ,IAAI,EACjB,KAAK,OAAQ,CAAC,EACd,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,MAAM,EACrB,OAAO,MAAM,EACb,KAAK,IAAK,2BAA2B,CAC1C,EAZqC,yBAmBxB4I,GAAuB7I,EAAA,SAAUC,EAAM,CAClDA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,gBAAgB,EAC3B,KAAK,OAAQ,EAAE,EACf,KAAK,OAAQ,EAAE,EACf,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,MAAM,EACrB,OAAO,QAAQ,EACf,KAAK,KAAM,EAAE,EACb,KAAK,KAAM,EAAE,EACb,KAAK,IAAK,CAAC,CAEhB,EAfoC,wBAsBvB6I,GAAuB9I,EAAA,SAAUC,EAAM,CACrCA,EAAK,OAAO,MAAM,EAE5B,OAAO,QAAQ,EACf,KAAK,KAAM,WAAW,EACtB,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,CAAC,EACtB,KAAK,SAAU,MAAM,EACrB,KAAK,OAAQ,CAAC,EACd,KAAK,OAAQ,GAAG,EAGhB,OAAO,MAAM,EACb,KAAK,OAAQ,MAAM,EACnB,KAAK,SAAU,SAAS,EACxB,MAAM,mBAAoB,MAAM,EAChC,KAAK,eAAgB,KAAK,EAC1B,KAAK,IAAK,yBAAyB,CAExC,EAnBoC,wBAqBvBiI,GAAalI,EAAA,UAAY,CACpC,MAAO,CACL,EAAG,EACH,EAAG,EACH,KAAM,OACN,OAAQ,OACR,MAAO,OACP,MAAO,OACP,OAAQ,OACR,WAAY,EACZ,GAAI,EACJ,GAAI,EACJ,MAAO,GACP,OAAQ,MACV,CACF,EAf0B,cAiBb0E,GAAc1E,EAAA,UAAY,CACrC,MAAO,CACL,EAAG,EACH,EAAG,EACH,KAAM,UACN,OAAQ,OACR,MAAO,IACP,OAAQ,QACR,OAAQ,IACR,GAAI,EACJ,GAAI,CACN,CACF,EAZ2B,eAcrB+E,IAA0B,UAAY,CAU1C,SAASgE,EAAOC,EAASrI,EAAG2C,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW,CAC1D,IAAM0C,EAAOrC,EACV,OAAO,MAAM,EACb,KAAK,IAAK2C,EAAIE,EAAQ,CAAC,EACvB,KAAK,IAAKD,EAAIE,EAAS,EAAI,CAAC,EAC5B,MAAM,cAAe,QAAQ,EAC7B,KAAKuF,CAAO,EACfC,EAAcjG,EAAM1C,CAAS,CAC/B,CARSN,EAAA+I,EAAA,UAoBT,SAASG,EAAQF,EAASrI,EAAG2C,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW0D,EAAM,CACjE,GAAM,CAAE,cAAAmF,EAAe,gBAAAC,EAAiB,gBAAAC,CAAgB,EAAIrF,EAEtD,CAACsF,EAAgBC,CAAgB,EAAI7G,GAAcyG,CAAa,EAEhE7G,EAAQ0G,EAAQ,MAAMzG,EAAO,cAAc,EACjD,QAASO,EAAI,EAAGA,EAAIR,EAAM,OAAQQ,IAAK,CACrC,IAAMF,EAAKE,EAAIwG,EAAkBA,GAAkBhH,EAAM,OAAS,GAAM,EAClEU,EAAOrC,EACV,OAAO,MAAM,EACb,KAAK,IAAK2C,EAAIE,EAAQ,CAAC,EACvB,KAAK,IAAKD,CAAC,EACX,MAAM,cAAe,QAAQ,EAC7B,MAAM,YAAagG,CAAgB,EACnC,MAAM,cAAeF,CAAe,EACpC,MAAM,cAAeD,CAAe,EACvCpG,EACG,OAAO,OAAO,EACd,KAAK,IAAKM,EAAIE,EAAQ,CAAC,EACvB,KAAK,KAAMZ,CAAE,EACb,KAAKN,EAAMQ,CAAC,CAAC,EAEhBE,EACG,KAAK,IAAKO,EAAIE,EAAS,CAAG,EAC1B,KAAK,oBAAqB,SAAS,EACnC,KAAK,qBAAsB,SAAS,EAEvCwF,EAAcjG,EAAM1C,CAAS,CAC/B,CACF,CA7BSN,EAAAkJ,EAAA,WAyCT,SAASM,EAAKR,EAASrI,EAAG2C,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW0D,EAAM,CAC9D,IAAMyF,EAAI9I,EAAE,OAAO,QAAQ,EAQrBqC,EAPIyG,EACP,OAAO,eAAe,EACtB,KAAK,IAAKnG,CAAC,EACX,KAAK,IAAKC,CAAC,EACX,KAAK,QAASC,CAAK,EACnB,KAAK,SAAUC,CAAM,EAGrB,OAAO,WAAW,EAClB,MAAM,UAAW,OAAO,EACxB,MAAM,SAAU,MAAM,EACtB,MAAM,QAAS,MAAM,EAExBT,EACG,OAAO,KAAK,EACZ,MAAM,UAAW,YAAY,EAC7B,MAAM,aAAc,QAAQ,EAC5B,MAAM,iBAAkB,QAAQ,EAChC,KAAKgG,CAAO,EAEfE,EAAQF,EAASS,EAAGnG,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW0D,CAAI,EACxDiF,EAAcjG,EAAM1C,CAAS,CAC/B,CAxBSN,EAAAwJ,EAAA,QAqCT,eAAeE,EAAQV,EAASrI,EAAG2C,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW0D,EAAM,CAGvE,IAAMnC,EAAM,MAAM8H,GAA0BX,EAAmBpH,GAAU,CAAC,EACpE6H,EAAI9I,EAAE,OAAO,QAAQ,EAQrBqC,EAPIyG,EACP,OAAO,eAAe,EACtB,KAAK,IAAKnG,EAAIE,EAAQ,EAAI3B,EAAI,MAAQ,CAAC,EACvC,KAAK,IAAK0B,EAAIE,EAAS,EAAI5B,EAAI,OAAS,CAAC,EACzC,KAAK,QAASA,EAAI,KAAK,EACvB,KAAK,SAAUA,EAAI,MAAM,EAEb,OAAO,WAAW,EAAE,MAAM,SAAU,MAAM,EAAE,MAAM,QAAS,MAAM,EAEhFmB,EACG,OAAO,KAAK,EACZ,MAAM,aAAc,QAAQ,EAC5B,MAAM,iBAAkB,QAAQ,EAChC,KAAK,MAAMrB,GAAqBqH,EAAmBpH,GAAU,CAAC,CAAC,EAElEsH,EAAQF,EAASS,EAAGnG,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW0D,CAAI,EACxDiF,EAAcjG,EAAM1C,CAAS,CAC/B,CAtBeN,EAAA0J,EAAA,WA4Bf,SAAST,EAAcW,EAAQC,EAAmB,CAChD,QAAW7I,KAAO6I,EACZA,EAAkB,eAAe7I,CAAG,GACtC4I,EAAO,KAAK5I,EAAK6I,EAAkB7I,CAAG,CAAC,CAG7C,CANS,OAAAhB,EAAAiJ,EAAA,iBAQF,SAAUjF,EAAMgB,EAAW,GAAO,CACvC,OAAIA,EACK0E,EAEF1F,EAAK,gBAAkB,KAAOwF,EAAOxF,EAAK,gBAAkB,MAAQ+E,EAASG,CACtF,CACF,GAAG,EAEG/H,IAAkC,UAAY,CAUlD,SAAS4H,EAAOC,EAASrI,EAAG2C,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW,CAC1D,IAAM0C,EAAOrC,EACV,OAAO,MAAM,EACb,KAAK,IAAK2C,CAAC,EACX,KAAK,IAAKC,CAAC,EACX,MAAM,cAAe,OAAO,EAC5B,KAAKyF,CAAO,EACfC,EAAcjG,EAAM1C,CAAS,CAC/B,CARSN,EAAA+I,EAAA,UAoBT,SAASG,EAAQF,EAASrI,EAAG2C,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW0D,EAAM,CACjE,GAAM,CAAE,cAAAmF,EAAe,gBAAAC,EAAiB,gBAAAC,CAAgB,EAAIrF,EAEtD1B,EAAQ0G,EAAQ,MAAMzG,EAAO,cAAc,EACjD,QAASO,EAAI,EAAGA,EAAIR,EAAM,OAAQQ,IAAK,CACrC,IAAMF,EAAKE,EAAIqG,EAAiBA,GAAiB7G,EAAM,OAAS,GAAM,EAChEU,EAAOrC,EACV,OAAO,MAAM,EACb,KAAK,IAAK2C,CAAC,EACX,KAAK,IAAKC,CAAC,EACX,MAAM,cAAe,OAAO,EAC5B,MAAM,YAAa4F,CAAa,EAChC,MAAM,cAAeE,CAAe,EACpC,MAAM,cAAeD,CAAe,EACvCpG,EAAK,OAAO,OAAO,EAAE,KAAK,IAAKM,CAAC,EAAE,KAAK,KAAMV,CAAE,EAAE,KAAKN,EAAMQ,CAAC,CAAC,EAE9DE,EACG,KAAK,IAAKO,EAAIE,EAAS,CAAG,EAC1B,KAAK,oBAAqB,SAAS,EACnC,KAAK,qBAAsB,SAAS,EAEvCwF,EAAcjG,EAAM1C,CAAS,CAC/B,CACF,CAvBSN,EAAAkJ,EAAA,WAmCT,SAASM,EAAKR,EAASrI,EAAG2C,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW0D,EAAM,CAC9D,IAAMyF,EAAI9I,EAAE,OAAO,QAAQ,EAQrBqC,EAPIyG,EACP,OAAO,eAAe,EACtB,KAAK,IAAKnG,CAAC,EACX,KAAK,IAAKC,CAAC,EACX,KAAK,QAASC,CAAK,EACnB,KAAK,SAAUC,CAAM,EAGrB,OAAO,WAAW,EAClB,MAAM,UAAW,OAAO,EACxB,MAAM,SAAU,MAAM,EACtB,MAAM,QAAS,MAAM,EAExBT,EACG,OAAO,KAAK,EACZ,MAAM,UAAW,YAAY,EAC7B,MAAM,aAAc,QAAQ,EAC5B,MAAM,iBAAkB,QAAQ,EAChC,KAAKgG,CAAO,EAEfE,EAAQF,EAASS,EAAGnG,EAAGC,EAAGC,EAAOC,EAAQnD,EAAW0D,CAAI,EACxDiF,EAAcjG,EAAM1C,CAAS,CAC/B,CAxBSN,EAAAwJ,EAAA,QA8BT,SAASP,EAAcW,EAAQC,EAAmB,CAChD,QAAW7I,KAAO6I,EACZA,EAAkB,eAAe7I,CAAG,GACtC4I,EAAO,KAAK5I,EAAK6I,EAAkB7I,CAAG,CAAC,CAG7C,CANS,OAAAhB,EAAAiJ,EAAA,iBAQF,SAAUjF,EAAM,CACrB,OAAOA,EAAK,gBAAkB,KAAOwF,EAAOxF,EAAK,gBAAkB,MAAQ+E,EAASG,CACtF,CACF,GAAG,EAOUY,GAA0B9J,EAAA,SAAUC,EAAM,CACrDA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,mBAAmB,EAC9B,KAAK,OAAQ,GAAG,EAChB,KAAK,OAAQ,IAAI,EACjB,KAAK,cAAe,gBAAgB,EACpC,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,oBAAoB,EACnC,OAAO,MAAM,EACb,KAAK,IAAK,sBAAsB,CACrC,EAbuC,2BAe1B8J,GAA6B/J,EAAA,SAAUC,EAAM,CACxDA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,sBAAsB,EACjC,KAAK,OAAQ,GAAG,EAChB,KAAK,OAAQ,GAAI,EACjB,KAAK,cAAe,gBAAgB,EACpC,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,oBAAoB,EACnC,OAAO,MAAM,EACb,KAAK,IAAK,sBAAsB,CACrC,EAb0C,8BAe7B+J,GAA0BhK,EAAA,SAAUC,EAAM,CACrDA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,mBAAmB,EAC9B,KAAK,OAAQ,GAAG,EAChB,KAAK,OAAQ,CAAC,EACd,KAAK,cAAe,gBAAgB,EACpC,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,oBAAoB,EACnC,OAAO,MAAM,EACb,KAAK,IAAK,aAAa,EACvB,KAAK,SAAU,OAAO,EACtB,KAAK,eAAgB,GAAG,EACxB,KAAK,OAAQ,MAAM,CACxB,EAhBuC,2BAkB1BgK,GAA6BjK,EAAA,SAAUC,EAAM,CACxDA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,sBAAsB,EACjC,KAAK,OAAQ,GAAG,EAChB,KAAK,OAAQ,CAAC,EACd,KAAK,cAAe,gBAAgB,EACpC,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,oBAAoB,EACnC,OAAO,MAAM,EACb,KAAK,IAAK,aAAa,EACvB,KAAK,SAAU,OAAO,EACtB,KAAK,eAAgB,GAAG,EACxB,KAAK,OAAQ,MAAM,CACxB,EAhB0C,8BAkBnCiK,EAAQ,CACb,SAAAnK,GACA,SAAAoC,GACA,UAAAgB,GACA,UAAAyD,GACA,QAAAC,GACA,UAAA1G,GACA,cAAA6G,GACA,eAAAC,GACA,SAAAG,GACA,mBAAAL,GACA,gBAAA4B,GACA,sBAAAC,GACA,qBAAAC,GACA,qBAAAC,GACA,mBAAAN,GACA,mBAAAC,GACA,gBAAAC,GACA,WAAAR,GACA,YAAAxD,GACA,mBAAAd,GACA,2BACA,wBAAAkG,GACA,2BAAAC,GACA,wBAAAC,GACA,2BAAAC,EACF,EC9vDA,IAAIE,EAAO,CAAC,EAECC,EAAS,CACpB,KAAM,CACJ,OAAQ,OACR,MAAO,OACP,OAAQ,OACR,MAAO,MACT,EACA,YAAa,EACb,cAAe,CAAC,EAChB,YAAa,CAAC,EACd,OAAQ,CACN,UAAWC,EAAA,UAAY,CACrB,OACE,KAAK,IAAI,MACP,KACA,KAAK,OAAO,SAAW,EAAI,CAAC,CAAC,EAAI,KAAK,OAAO,IAAKC,GAAUA,EAAM,QAAU,CAAC,CAC/E,GACC,KAAK,MAAM,SAAW,EACnB,EACA,KAAK,MAAM,IAAKC,GAAOA,EAAG,QAAU,CAAC,EAAE,OAAO,CAACC,EAAKC,IAAMD,EAAMC,CAAC,IACpE,KAAK,SAAS,SAAW,EACtB,EACA,KAAK,SAAS,IAAKF,GAAOA,EAAG,QAAU,CAAC,EAAE,OAAO,CAACC,EAAKC,IAAMD,EAAMC,CAAC,IACvE,KAAK,MAAM,SAAW,EACnB,EACA,KAAK,MAAM,IAAKF,GAAOA,EAAG,QAAU,CAAC,EAAE,OAAO,CAACC,EAAKC,IAAMD,EAAMC,CAAC,EAEzE,EAhBW,aAiBX,MAAOJ,EAAA,UAAY,CACjB,KAAK,OAAS,CAAC,EACf,KAAK,MAAQ,CAAC,EACd,KAAK,MAAQ,CAAC,EACd,KAAK,SAAW,CAAC,EACjB,KAAK,MAAQ,CAAC,CAChB,EANO,SAOP,OAAQA,EAAA,SAAUK,EAAU,CAC1B,KAAK,MAAM,KAAKA,CAAQ,CAC1B,EAFQ,UAGR,SAAUL,EAAA,SAAUM,EAAY,CAC9B,KAAK,OAAO,KAAKA,CAAU,CAC7B,EAFU,YAGV,QAASN,EAAA,SAAUO,EAAW,CAC5B,KAAK,MAAM,KAAKA,CAAS,CAC3B,EAFS,WAGT,WAAYP,EAAA,SAAUQ,EAAU,CAC9B,KAAK,SAAS,KAAKA,CAAQ,CAC7B,EAFY,cAGZ,QAASR,EAAA,SAAUS,EAAW,CAC5B,KAAK,MAAM,KAAKA,CAAS,CAC3B,EAFS,WAGT,UAAWT,EAAA,UAAY,CACrB,OAAO,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,CAC3C,EAFW,aAGX,SAAUA,EAAA,UAAY,CACpB,OAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,CACzC,EAFU,YAGV,YAAaA,EAAA,UAAY,CACvB,OAAO,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,CAC/C,EAFa,eAGb,SAAUA,EAAA,UAAY,CACpB,OAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,CACzC,EAFU,YAGV,OAAQ,CAAC,EACT,MAAO,CAAC,EACR,MAAO,CAAC,EACR,SAAU,CAAC,EACX,MAAO,CAAC,CACV,EACA,KAAMA,EAAA,UAAY,CAChB,KAAK,cAAgB,CAAC,EACtB,KAAK,YAAc,CAAC,EACpB,KAAK,OAAO,MAAM,EAClB,KAAK,KAAO,CACV,OAAQ,OACR,MAAO,OACP,OAAQ,OACR,MAAO,MACT,EACA,KAAK,YAAc,EACnBU,GAAQC,EAAU,CAAC,CACrB,EAZM,QAaN,UAAWX,EAAA,SAAUY,EAAKC,EAAKC,EAAKC,EAAK,CACnCH,EAAIC,CAAG,IAAM,OACfD,EAAIC,CAAG,EAAIC,EAEXF,EAAIC,CAAG,EAAIE,EAAID,EAAKF,EAAIC,CAAG,CAAC,CAEhC,EANW,aAOX,aAAcb,EAAA,SAAUgB,EAAQC,EAAQC,EAAOC,EAAO,CAEpD,IAAMC,EAAQ,KACVC,EAAM,EAEV,SAASC,EAASC,EAAqB,CACrC,OAAOvB,EAAA,SAA0BwB,EAAM,CACrCH,IAEA,IAAMI,EAAIL,EAAM,cAAc,OAASC,EAAM,EAE7CD,EAAM,UAAUI,EAAM,SAAUP,EAASQ,EAAI3B,EAAK,UAAW,KAAK,GAAG,EACrEsB,EAAM,UAAUI,EAAM,QAASL,EAAQM,EAAI3B,EAAK,UAAW,KAAK,GAAG,EAEnEsB,EAAM,UAAUrB,EAAO,KAAM,SAAUiB,EAASS,EAAI3B,EAAK,UAAW,KAAK,GAAG,EAC5EsB,EAAM,UAAUrB,EAAO,KAAM,QAASmB,EAAQO,EAAI3B,EAAK,UAAW,KAAK,GAAG,EAEpEyB,IAAS,eACbH,EAAM,UAAUI,EAAM,SAAUR,EAASS,EAAI3B,EAAK,UAAW,KAAK,GAAG,EACrEsB,EAAM,UAAUI,EAAM,QAASN,EAAQO,EAAI3B,EAAK,UAAW,KAAK,GAAG,EAEnEsB,EAAM,UAAUrB,EAAO,KAAM,SAAUkB,EAASQ,EAAI3B,EAAK,UAAW,KAAK,GAAG,EAC5EsB,EAAM,UAAUrB,EAAO,KAAM,QAASoB,EAAQM,EAAI3B,EAAK,UAAW,KAAK,GAAG,EAE9E,EAlBO,mBAmBT,CApBSE,EAAAsB,EAAA,YAsBT,KAAK,cAAc,QAAQA,EAAS,CAAC,EACrC,KAAK,YAAY,QAAQA,EAAS,YAAY,CAAC,CACjD,EA7Bc,gBA8Bd,OAAQtB,EAAA,SAAUgB,EAAQC,EAAQC,EAAOC,EAAO,CAC9C,IAAMO,EAAUC,EAAO,OAAOX,EAAQE,CAAK,EACrCU,EAASD,EAAO,OAAOX,EAAQE,CAAK,EACpCW,EAAUF,EAAO,OAAOV,EAAQE,CAAK,EACrCW,EAASH,EAAO,OAAOV,EAAQE,CAAK,EAE1C,KAAK,UAAUpB,EAAO,KAAM,SAAU2B,EAAS,KAAK,GAAG,EACvD,KAAK,UAAU3B,EAAO,KAAM,SAAU8B,EAAS,KAAK,GAAG,EACvD,KAAK,UAAU9B,EAAO,KAAM,QAAS6B,EAAQ,KAAK,GAAG,EACrD,KAAK,UAAU7B,EAAO,KAAM,QAAS+B,EAAQ,KAAK,GAAG,EAErD,KAAK,aAAaJ,EAASG,EAASD,EAAQE,CAAM,CACpD,EAZQ,UAaR,cAAe9B,EAAA,SAAU+B,EAASC,EAASC,EAAQ,CACjD,IAAMC,EAAYD,EAAO,IAAIF,EAAQ,IAAI,EACnCI,EAAcC,GAAiBL,EAAQ,IAAI,EAAE,QAAU,EACvDM,EAAIH,EAAU,EAAIA,EAAU,MAAQ,GAAMC,EAAc,GAAKrC,EAAK,gBAAmB,EAC3F,KAAK,YAAY,KAAK,CACpB,OAAQuC,EACR,OAAQ,KAAK,YAAc,EAC3B,MAAOA,EAAIvC,EAAK,gBAChB,MAAO,OACP,MAAOiC,EAAQ,KACf,SAAUO,EAAQ,cAAcN,CAAO,CACzC,CAAC,CACH,EAZe,iBAaf,cAAehC,EAAA,SAAU+B,EAAS,CAEhC,IAAMQ,EAAyB,KAAK,YACjC,IAAI,SAAUC,EAAY,CACzB,OAAOA,EAAW,KACpB,CAAC,EACA,YAAYT,EAAQ,IAAI,EAC3B,OAAO,KAAK,YAAY,OAAOQ,EAAwB,CAAC,EAAE,CAAC,CAC7D,EARe,iBASf,WAAYvC,EAAA,SAAUyC,EAAQ,CAAE,QAAS,OAAW,KAAM,GAAO,MAAO,MAAU,EAAGC,EAAM,CACzF,MAAO,CACL,OAAQ,OACR,OAAQ,KAAK,YACb,MAAO,OACP,MAAO,OACP,MAAOD,EAAM,QACb,KAAMA,EAAM,KACZ,MAAOA,EAAM,MACb,OAAQ,EACR,KAAMC,CACR,CACF,EAZY,cAaZ,QAAS1C,EAAA,SAAUyC,EAAQ,CAAE,QAAS,OAAW,KAAM,GAAO,MAAO,MAAU,EAAGC,EAAM,CACtF,KAAK,cAAc,KAAK,KAAK,WAAWD,EAAOC,CAAI,CAAC,CACtD,EAFS,WAGT,QAAS1C,EAAA,UAAY,CACnB,OAAO,KAAK,cAAc,IAAI,CAChC,EAFS,WAGT,cAAeA,EAAA,UAAY,CACzB,OAAO,KAAK,cAAc,OACtB,KAAK,cAAc,KAAK,cAAc,OAAS,CAAC,EAAE,QAClD,EACN,EAJe,iBAKf,iBAAkBA,EAAA,SAAU+B,EAAS,CACnC,IAAMY,EAAO,KAAK,cAAc,IAAI,EACpCA,EAAK,SAAWA,EAAK,UAAY,CAAC,EAClCA,EAAK,cAAgBA,EAAK,eAAiB,CAAC,EAC5CA,EAAK,SAAS,KAAK,CAAE,EAAG5C,EAAO,eAAe,EAAG,OAAQ,CAAE,CAAC,EAC5D4C,EAAK,cAAc,KAAKZ,CAAO,EAC/B,KAAK,cAAc,KAAKY,CAAI,CAC9B,EAPkB,oBAQlB,gBAAiB3C,EAAA,UAAY,CACvB,KAAK,cAAc,IACrB,KAAK,iBAAmB,KAAK,YAEjC,EAJiB,mBAKjB,iBAAkBA,EAAA,UAAY,CACxB,KAAK,cAAc,IACrB,KAAK,YAAc,KAAK,iBAE5B,EAJkB,oBAKlB,gBAAiBA,EAAA,SAAU4C,EAAM,CAC/B,KAAK,YAAc,KAAK,YAAcA,EACtC,KAAK,KAAK,MAAQjB,EAAO,OAAO,KAAK,KAAK,MAAO,KAAK,WAAW,CACnE,EAHiB,mBAIjB,eAAgB3B,EAAA,UAAY,CAC1B,OAAO,KAAK,WACd,EAFgB,kBAGhB,UAAWA,EAAA,UAAY,CACrB,MAAO,CAAE,OAAQ,KAAK,KAAM,OAAQ,KAAK,MAAO,CAClD,EAFW,YAGb,EAoBM6C,GAAW7C,EAAA,eAAgB8C,EAAWrC,EAAsB,CAChEV,EAAO,gBAAgBD,EAAK,SAAS,EACrCW,EAAU,OAASX,EAAK,UACxBW,EAAU,OAASV,EAAO,eAAe,EACzC,IAAMgD,EAAqBC,GAAY,EACvCD,EAAK,EAAItC,EAAU,OACnBsC,EAAK,EAAItC,EAAU,OACnBsC,EAAK,MAAQtC,EAAU,OAASX,EAAK,MACrCiD,EAAK,MAAQ,OAEb,IAAME,EAAIH,EAAK,OAAO,GAAG,EACnBI,EAAWZ,EAAQ,SAASW,EAAGF,CAAI,EACnCI,EAAwBC,GAAW,EACzCD,EAAQ,EAAI1C,EAAU,OACtB0C,EAAQ,EAAI1C,EAAU,OACtB0C,EAAQ,MAAQJ,EAAK,MACrBI,EAAQ,GAAK,MACbA,EAAQ,KAAO1C,EAAU,QACzB0C,EAAQ,MAAQ,WAChBA,EAAQ,WAAarD,EAAK,eAC1BqD,EAAQ,SAAWrD,EAAK,aACxBqD,EAAQ,WAAarD,EAAK,eAC1BqD,EAAQ,OAASrD,EAAK,UACtBqD,EAAQ,WAAarD,EAAK,WAC1BqD,EAAQ,OAAS,SAEjB,IAAME,EAAWC,EAASH,EAAQ,IAAI,EAAI,MAAMI,GAAUN,EAAGE,CAAO,EAAIK,GAASP,EAAGE,CAAO,EAErFM,EAAa,KAAK,MACtBJ,EACG,IAAKK,IAAQA,EAAG,SAAWA,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EACrD,OAAO,CAACvD,EAAKwD,IAASxD,EAAMwD,CAAI,CACrC,EAEAT,EAAS,KAAK,SAAUO,EAAa,EAAI3D,EAAK,UAAU,EACxDW,EAAU,QAAUgD,EAAa,EAAI3D,EAAK,WAC1CC,EAAO,gBAAgB0D,EAAa,EAAI3D,EAAK,UAAU,EACvDW,EAAU,MAAQA,EAAU,OAASgD,EAAa,EAAI3D,EAAK,WAC3DW,EAAU,MAAQA,EAAU,OAASsC,EAAK,MAC1ChD,EAAO,OAAOU,EAAU,OAAQA,EAAU,OAAQA,EAAU,MAAOA,EAAU,KAAK,EAClFV,EAAO,OAAO,QAAQU,CAAS,CACjC,EAzCiB,YA2CXmD,GAAwB5D,EAAA,SAC5B8C,EACAe,EACArD,EACAsD,EACA9C,EACAE,EACA6C,EACA,CACA,IAAM9B,EAAS6B,EAAQ,GAAG,UAAU,EAC9BE,EAAY/B,EAAO,IAAI4B,EAAI,IAAI,EAC/BI,EAAUhC,EAAO,IAAI4B,EAAI,EAAE,EAC3BK,EAAiB1D,EAAS,gBAC5B2D,EAAaH,EAAU,EAAIA,EAAU,MAAQ,EAC7CI,EAAWH,EAAQ,EAAIA,EAAQ,MAAQ,EAGrCI,EAAgBF,GAAcC,EAC9BE,EAAYC,GAAmBV,EAAKC,CAAO,EAE3Cb,EAAIH,EAAK,OAAO,GAAG,EAEnB0B,EAAmC,KAEnCC,EAAkBzE,EAAA,CAACqE,EAAwBC,IAAuB,CACtE,IAAMI,EAAaL,EACfG,EACA,CAACA,EACL,OAAOF,EAAY,CAACI,EAAaA,CACnC,EALwB,mBAOlBC,EAAa3E,EAAC4E,GAAe,CACjC3B,EAAE,OAAO,QAAQ,EACd,KAAK,KAAM2B,CAAE,EACb,KAAK,KAAMb,CAAU,EACrB,KAAK,IAAK,CAAC,EACX,KAAK,QAAS,EAAE,EAChB,KAAK,SAAU,EAAE,CACtB,EAPmB,cASb,CAAE,mBAAAc,EAAoB,2BAAAC,EAA4B,wBAAAC,CAAwB,EAC9EjB,EAAQ,GAAG,SAGb,GAAII,EACF,OAAQL,EAAI,kBAAmB,CAC7B,KAAKgB,EAECP,IACFF,GAAYK,EAAgBJ,EAAe,EAAI,GAGjD,MAEF,KAAKS,EAEER,IACHH,GAAcM,EAAgBJ,EAAe,EAAK,GAGpD,MAEF,KAAKU,EAECT,EACFF,GAAYK,EAAgBJ,EAAe,EAAI,EAE/CF,GAAcM,EAAgBJ,EAAe,EAAK,EAEpD,KACJ,CAIF,OAAQR,EAAI,kBAAmB,CAC7B,KAAKgB,EACHF,EAAWP,CAAQ,EACnB,MACF,KAAKU,EACHH,EAAWR,CAAU,EACrB,MACF,KAAKY,EACHJ,EAAWR,CAAU,EACrBQ,EAAWP,CAAQ,EACnB,KACJ,CACF,EAtF8B,yBAwFxBY,GAAchF,EAACiF,IACZ,CACL,WAAYA,EAAI,kBAChB,SAAUA,EAAI,gBACd,WAAYA,EAAI,iBAClB,GALkB,eAOdC,GAAWlF,EAACiF,IACT,CACL,WAAYA,EAAI,eAChB,SAAUA,EAAI,aACd,WAAYA,EAAI,cAClB,GALe,YAOXE,GAAYnF,EAACiF,IACV,CACL,WAAYA,EAAI,gBAChB,SAAUA,EAAI,cACd,WAAYA,EAAI,eAClB,GALgB,aAiBlB,eAAeG,GAAaC,EAAU7E,EAA2B,CAC/DT,EAAO,gBAAgB,EAAE,EACzB,GAAM,CAAE,OAAAiB,EAAQ,MAAAE,EAAO,QAAAa,CAAQ,EAAIvB,EAC7B8E,EAAQ3D,EAAO,YAAYI,CAAO,EAAE,OACpCwD,EAAajC,EAASvB,CAAO,EAC7ByD,EAAWD,EACb,MAAME,GAA0B1D,EAASpB,EAAU,CAAC,EACpD+E,EAAM,wBAAwB3D,EAASiD,GAAYlF,CAAI,CAAC,EAE5D,GAAI,CAACyF,EAAY,CACf,IAAMI,EAAaH,EAAS,OAASF,EACrC9E,EAAS,QAAUmF,EACnB5F,EAAO,gBAAgB4F,CAAU,CACnC,CAEA,IAAI5B,EACA6B,EAAcJ,EAAS,OAAS,GAC9BK,EAAYL,EAAS,MAE3B,GAAIxE,IAAWE,EAAO,CACpB6C,EAAahE,EAAO,eAAe,EAAI6F,EAClC9F,EAAK,cACR8F,GAAe9F,EAAK,UACpBiE,EAAahE,EAAO,eAAe,EAAI6F,GAEzCA,GAAe,GACf,IAAME,EAAKnE,EAAO,OAAOkE,EAAY,EAAG/F,EAAK,MAAQ,CAAC,EACtDC,EAAO,OACLiB,EAAS8E,EACT/F,EAAO,eAAe,EAAI,GAAK6F,EAC/B1E,EAAQ4E,EACR/F,EAAO,eAAe,EAAI,GAAK6F,CACjC,CACF,MACEA,GAAe9F,EAAK,UACpBiE,EAAahE,EAAO,eAAe,EAAI6F,EACvC7F,EAAO,OAAOiB,EAAQ+C,EAAa,GAAI7C,EAAO6C,CAAU,EAE1D,OAAAhE,EAAO,gBAAgB6F,CAAW,EAClCpF,EAAS,QAAUoF,EACnBpF,EAAS,MAAQA,EAAS,OAASA,EAAS,OAC5CT,EAAO,OAAOS,EAAS,WAAYA,EAAS,OAAQA,EAAS,SAAUA,EAAS,KAAK,EAE9EuD,CACT,CA5Ce/D,EAAAoF,GAAA,gBAsDf,IAAMW,GAAc/F,EAAA,eAAgBgC,EAASxB,EAAUuD,EAAoBD,EAAkBD,EAAK,CAChG,GAAM,CAAE,OAAA7C,EAAQ,MAAAE,EAAO,OAAAD,EAAQ,QAAAc,EAAS,KAAAR,EAAM,cAAAyE,EAAe,gBAAAC,CAAgB,EAAIzF,EAC3EgF,EAAWE,EAAM,wBAAwB3D,EAASiD,GAAYlF,CAAI,CAAC,EACnEqD,EAAwBC,GAAW,EACzCD,EAAQ,EAAInC,EACZmC,EAAQ,EAAIlC,EAAS,GACrBkC,EAAQ,MAAQjC,EAAQF,EACxBmC,EAAQ,MAAQ,cAChBA,EAAQ,GAAK,MACbA,EAAQ,KAAOpB,EACfoB,EAAQ,WAAarD,EAAK,kBAC1BqD,EAAQ,SAAWrD,EAAK,gBACxBqD,EAAQ,WAAarD,EAAK,kBAC1BqD,EAAQ,OAASrD,EAAK,aACtBqD,EAAQ,OAAS,SACjBA,EAAQ,WAAarD,EAAK,YAC1BqD,EAAQ,MAAQ,GAEZG,EAASH,EAAQ,IAAI,EACvB,MAAMI,GAAUvB,EAASmB,EAAS,CAAE,OAAAnC,EAAQ,MAAAE,EAAO,OAAQ6C,CAAW,CAAC,EAEvEP,GAASxB,EAASmB,CAAO,EAG3B,IAAM0C,EAAYL,EAAS,MAEvBU,EACJ,GAAIlF,IAAWE,EAAO,CACpB,IAAMgD,EAAiB+B,GAAmBnG,EAAK,oBACzCwE,EAAYC,GAAmBV,EAAKC,CAAO,EAC3CqC,EAAkBC,GAAyBvC,EAAKC,CAAO,EACvDuC,EAAarF,GAAUkD,IAAmBI,GAAa6B,GAAmB,GAAK,GAEjFrG,EAAK,YACPoG,EAAOlE,EACJ,OAAO,MAAM,EACb,KACC,IACA,MAAMqE,CAAU,IAAItC,CAAU,MAC5B/C,EAASW,EAAO,OAAO7B,EAAK,MAAQ,EAAG+F,EAAY,CAAC,CACtD,MAAM9B,EAAa,EAAE,MAAM/C,CAAM,EACnC,EAEFkF,EAAOlE,EACJ,OAAO,MAAM,EACb,KACC,IACA,KACEqE,EACA,IACAtC,EACA,OACCsC,EAAa,IACd,KACCtC,EAAa,IACd,KACC/C,EAAS,IACV,KACC+C,EAAa,IACd,IACA/C,EACA,KACC+C,EAAa,GAClB,CAEN,MACEmC,EAAOlE,EAAQ,OAAO,MAAM,EAC5BkE,EAAK,KAAK,KAAMlF,CAAM,EACtBkF,EAAK,KAAK,KAAMnC,CAAU,EAC1BmC,EAAK,KAAK,KAAMhF,CAAK,EACrBgF,EAAK,KAAK,KAAMnC,CAAU,EACtBuC,GAAqBzC,EAAKC,CAAO,GACnCF,GAAsB5B,EAAS6B,EAAKrD,EAAUsD,EAAS9C,EAAQE,EAAO6C,CAAU,EAMlFxC,IAASuC,EAAQ,GAAG,SAAS,QAC7BvC,IAASuC,EAAQ,GAAG,SAAS,cAC7BvC,IAASuC,EAAQ,GAAG,SAAS,cAC7BvC,IAASuC,EAAQ,GAAG,SAAS,aAC7BvC,IAASuC,EAAQ,GAAG,SAAS,sBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,kBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,qBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,kBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,qBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,gCAC7BvC,IAASuC,EAAQ,GAAG,SAAS,mCAC7BvC,IAASuC,EAAQ,GAAG,SAAS,gCAC7BvC,IAASuC,EAAQ,GAAG,SAAS,mCAE7BoC,EAAK,MAAM,mBAAoB,MAAM,EACrCA,EAAK,KAAK,QAAS,cAAc,GAEjCA,EAAK,KAAK,QAAS,cAAc,EAGnC,IAAIK,EAAM,GAwEV,GAvEIzG,EAAK,sBACPyG,EAAMC,GAAO,EAAI,GAGnBN,EAAK,KAAK,eAAgB,CAAC,EAC3BA,EAAK,KAAK,SAAU,MAAM,EAC1BA,EAAK,MAAM,OAAQ,MAAM,GAErB3E,IAASuC,EAAQ,GAAG,SAAS,WAAavC,IAASuC,EAAQ,GAAG,SAAS,mBACzEoC,EAAK,KAAK,aAAc,OAASK,EAAM,qBAAqB,GAG5DhF,IAASuC,EAAQ,GAAG,SAAS,cAC7BvC,IAASuC,EAAQ,GAAG,SAAS,sBAE7BoC,EAAK,KAAK,aAAc,OAASK,EAAM,wBAAwB,GAE7DhF,IAASuC,EAAQ,GAAG,SAAS,WAAavC,IAASuC,EAAQ,GAAG,SAAS,mBACzEoC,EAAK,KAAK,aAAc,OAASK,EAAM,qBAAqB,GAG5DhF,IAASuC,EAAQ,GAAG,SAAS,cAC7BvC,IAASuC,EAAQ,GAAG,SAAS,sBAE7BoC,EAAK,KAAK,aAAc,OAASK,EAAM,wBAAwB,GAI/DhF,IAASuC,EAAQ,GAAG,SAAS,yBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,iCAE7BoC,EAAK,KAAK,eAAgB,OAASK,EAAM,wBAAwB,GAGjEhF,IAASuC,EAAQ,GAAG,SAAS,4BAC7BvC,IAASuC,EAAQ,GAAG,SAAS,oCAE7BoC,EAAK,KAAK,eAAgB,OAASK,EAAM,qBAAqB,GAG9DhF,IAASuC,EAAQ,GAAG,SAAS,yBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,iCAE7BoC,EAAK,KAAK,eAAgB,OAASK,EAAM,wBAAwB,GAGjEhF,IAASuC,EAAQ,GAAG,SAAS,4BAC7BvC,IAASuC,EAAQ,GAAG,SAAS,oCAE7BoC,EAAK,KAAK,eAAgB,OAASK,EAAM,qBAAqB,GAG5DhF,IAASuC,EAAQ,GAAG,SAAS,OAASvC,IAASuC,EAAQ,GAAG,SAAS,SACrEoC,EAAK,KAAK,aAAc,OAASK,EAAM,aAAa,GAGpDhF,IAASuC,EAAQ,GAAG,SAAS,qBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,wBAE7BoC,EAAK,KAAK,eAAgB,OAASK,EAAM,aAAa,EACtDL,EAAK,KAAK,aAAc,OAASK,EAAM,aAAa,IAElDhF,IAASuC,EAAQ,GAAG,SAAS,aAAevC,IAASuC,EAAQ,GAAG,SAAS,eAC3EoC,EAAK,KAAK,aAAc,OAASK,EAAM,eAAe,GAGpDhF,IAASuC,EAAQ,GAAG,SAAS,aAAevC,IAASuC,EAAQ,GAAG,SAAS,eAC3EoC,EAAK,KAAK,aAAc,OAASK,EAAM,aAAa,EAIlDN,GAAmBnG,EAAK,oBAAqB,CAC/C,IAAMqG,EACJ5E,IAASuC,EAAQ,GAAG,SAAS,qBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,qBAEzBS,EACJhD,IAASuC,EAAQ,GAAG,SAAS,yBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,gCAC7BvC,IAASuC,EAAQ,GAAG,SAAS,4BAC7BvC,IAASuC,EAAQ,GAAG,SAAS,mCAC7BvC,IAASuC,EAAQ,GAAG,SAAS,yBAC7BvC,IAASuC,EAAQ,GAAG,SAAS,gCAC7BvC,IAASuC,EAAQ,GAAG,SAAS,4BAC7BvC,IAASuC,EAAQ,GAAG,SAAS,kCAEzB2C,EAAyB,EACzBC,EAAiBJ,GAAqBzC,EAAKC,CAAO,EACpDuC,EAAarF,EACb2F,EAAYzF,EAEZiF,GAEEnF,EAASE,EACXmF,EAAarF,EAASyF,EAAyB,GAE/CJ,EAAarF,EAASyF,GAA0BC,EAAiB,GAAK,GACtEL,GACExC,GAAK,oBAAsBC,EAAQ,GAAG,SAAS,yBAC/CD,GAAK,oBAAsBC,EAAQ,GAAG,SAAS,2BAC3C,KACA,GAERoC,EAAK,KAAK,KAAMG,CAAU,GACjB9B,GAELrD,EAAQF,EACV2F,EAAYzF,EAAQ,EAAIuF,GAExBE,EAAYzF,EAAQuF,EACpBJ,GACExC,GAAK,oBAAsBC,EAAQ,GAAG,SAAS,yBAC/CD,GAAK,oBAAsBC,EAAQ,GAAG,SAAS,2BAC3C,KACA,GAER6C,GAAaD,EAAiB,GAAK,EAEnCR,EAAK,KAAK,KAAMS,CAAS,EACzBT,EAAK,KAAK,KAAMG,CAAU,GAE1BH,EAAK,KAAK,KAAMlF,EAASyF,CAAsB,EAIjD,IAAIG,EAAc,EACZC,EAAgB7F,IAAWE,EAC3BmD,EAAgBrD,GAAUE,EAE5B2F,EACFD,EAAcpG,EAAS,WAAa,EAC3B+D,EACTqC,EAAcvC,EAAgB7D,EAAS,SAAW,EAAIA,EAAS,WAAa,EAE5EoG,EAAcvC,EAAgB7D,EAAS,WAAa,EAAIA,EAAS,SAAW,EAG9EwB,EACG,OAAO,MAAM,EACb,KAAK,KAAM4E,CAAW,EACtB,KAAK,KAAM7C,CAAU,EACrB,KAAK,KAAM6C,CAAW,EACtB,KAAK,KAAM7C,CAAU,EACrB,KAAK,eAAgB,CAAC,EACtB,KAAK,eAAgB,OAASwC,EAAM,kBAAkB,EAEzDvE,EACG,OAAO,MAAM,EACb,KAAK,IAAK4E,CAAW,EACrB,KAAK,IAAK7C,EAAa,CAAC,EACxB,KAAK,cAAe,YAAY,EAChC,KAAK,YAAa,MAAM,EACxB,KAAK,cAAe,QAAQ,EAC5B,KAAK,QAAS,gBAAgB,EAC9B,KAAKiC,CAAa,CACvB,CACF,EA/PoB,eAiQdc,GAAwB9G,EAAA,SAC5BgC,EACAC,EACA8E,EACAC,EACAC,EACAC,EACAC,EACA,CACA,IAAIC,EAAY,EACZC,EAAa,EACbC,EACAC,EAAY,EAEhB,QAAWC,KAAYR,EAAW,CAChC,IAAM/G,EAAQgC,EAAO,IAAIuF,CAAQ,EAC3BC,EAAMxH,EAAM,IAGdqH,GAAWA,GAAWG,IACnBN,GACHpH,EAAO,OAAO,OAAOuH,CAAO,EAE9BD,GAAcvH,EAAK,UAAYwH,EAAQ,QAIrCG,GAAOA,GAAOH,IACXH,IACHM,EAAI,EAAIL,EAAYC,EACpBI,EAAI,EAAIR,GAEVI,GAAcI,EAAI,QAIpBxH,EAAM,MAAQA,EAAM,OAASH,EAAK,MAClCG,EAAM,OAAS0B,EAAO,OAAO1B,EAAM,QAAUH,EAAK,OAAQA,EAAK,MAAM,EACrEG,EAAM,OAASA,EAAM,QAAUH,EAAK,YAEpCyH,EAAY5F,EAAO,OAAO4F,EAAWtH,EAAM,MAAM,EAG7C8G,EAAc,IAAI9G,EAAM,IAAI,IAC9BoH,GAAcpH,EAAM,MAAQ,GAG9BA,EAAM,EAAImH,EAAYC,EACtBpH,EAAM,OAASF,EAAO,eAAe,EAErCA,EAAO,OAAOE,EAAM,EAAGgH,EAAahH,EAAM,EAAIA,EAAM,MAAOA,EAAM,MAAM,EAEvEmH,GAAanH,EAAM,MAAQoH,EACvBpH,EAAM,MACRA,EAAM,IAAI,MAAQmH,EAAYK,EAAI,OAASxH,EAAM,IAAI,GAEvDoH,EAAapH,EAAM,OACnBqH,EAAUrH,EAAM,IAChBF,EAAO,OAAO,SAASE,CAAK,CAC9B,CAGIqH,GAAW,CAACH,GACdpH,EAAO,OAAO,OAAOuH,CAAO,EAI9BvH,EAAO,gBAAgBwH,CAAS,CAClC,EApE8B,yBAsEjBG,GAAa1H,EAAA,eAAgBgC,EAASC,EAAQ+E,EAAWG,EAAU,CAC9E,GAAKA,EAME,CACL,IAAII,EAAY,EAChBxH,EAAO,gBAAgBD,EAAK,UAAY,CAAC,EACzC,QAAW0H,KAAYR,EAAW,CAChC,IAAM/G,EAAQgC,EAAO,IAAIuF,CAAQ,EAC5BvH,EAAM,QACTA,EAAM,MAAQF,EAAO,eAAe,GAEtC,IAAM4H,EAAS,MAAMrF,EAAQ,UAAUN,EAAS/B,EAAOH,EAAM,EAAI,EACjEyH,EAAY5F,EAAO,OAAO4F,EAAWI,CAAM,CAC7C,CACA5H,EAAO,gBAAgBwH,EAAYzH,EAAK,SAAS,CACnD,KAjBE,SAAW0H,KAAYR,EAAW,CAChC,IAAM/G,EAAQgC,EAAO,IAAIuF,CAAQ,EAEjC,MAAMlF,EAAQ,UAAUN,EAAS/B,EAAOH,EAAM,EAAK,CACrD,CAcJ,EApB0B,cAsBb8H,GAAkB5H,EAAA,SAAUgC,EAASC,EAAQ+E,EAAWa,EAAK,CACxE,IAAIN,EAAY,EACZO,EAAW,EACf,QAAWN,KAAYR,EAAW,CAChC,IAAM/G,EAAQgC,EAAO,IAAIuF,CAAQ,EAC3BO,EAAeC,GAAsB/H,CAAK,EAC1CgI,EAAiB3F,EAAQ,UAC7BN,EACA/B,EACA8H,EACAjI,EACAA,EAAK,WACL+H,CACF,EACII,EAAe,OAASV,IAC1BA,EAAYU,EAAe,QAEzBA,EAAe,MAAQhI,EAAM,EAAI6H,IACnCA,EAAWG,EAAe,MAAQhI,EAAM,EAE5C,CAEA,MAAO,CAAE,UAAWsH,EAAW,SAAUO,CAAS,CACpD,EAvB+B,mBAyBlBpH,GAAUV,EAAA,SAAUiF,EAAK,CACpCiD,GAAgBpI,EAAMmF,CAAG,EAErBA,EAAI,aACNnF,EAAK,gBAAkBA,EAAK,eAAiBA,EAAK,kBAAoBmF,EAAI,YAExEA,EAAI,WACNnF,EAAK,cAAgBA,EAAK,aAAeA,EAAK,gBAAkBmF,EAAI,UAElEA,EAAI,aACNnF,EAAK,gBAAkBA,EAAK,eAAiBA,EAAK,kBAAoBmF,EAAI,WAE9E,EAZuB,WAcjB7C,GAAmBpC,EAAA,SAAUC,EAAO,CACxC,OAAOF,EAAO,YAAY,OAAO,SAAUyC,EAAY,CACrD,OAAOA,EAAW,QAAUvC,CAC9B,CAAC,CACH,EAJyB,oBAMnBkI,GAAmBnI,EAAA,SAAUC,EAAOgC,EAAQ,CAEhD,IAAMmG,EAAWnG,EAAO,IAAIhC,CAAK,EAC3BoI,EAAcjG,GAAiBnC,CAAK,EAEpCqI,EAAOD,EAAY,OACvB,SAAUlI,EAAKqC,EAAY,CACzB,OAAOb,EAAO,OAAOxB,EAAKqC,EAAW,MAAM,CAC7C,EACA4F,EAAS,EAAIA,EAAS,MAAQ,EAAI,CACpC,EACMG,EAAQF,EAAY,OACxB,SAAUlI,EAAKqC,EAAY,CACzB,OAAOb,EAAO,OAAOxB,EAAKqC,EAAW,KAAK,CAC5C,EACA4F,EAAS,EAAIA,EAAS,MAAQ,EAAI,CACpC,EACA,MAAO,CAACE,EAAMC,CAAK,CACrB,EAlByB,oBAoBzB,SAASC,GAAwBC,EAAY5E,EAAK6E,EAAWC,EAAYC,EAAW,CAClF7I,EAAO,gBAAgB2I,CAAS,EAChC,IAAIG,EAAeF,EACnB,GAAI9E,EAAI,IAAMA,EAAI,SAAW4E,EAAW5E,EAAI,EAAE,EAAG,CAC/C,IAAMiF,EAAYL,EAAW5E,EAAI,EAAE,EAAE,MAC/BkF,EAAW/D,GAAYlF,CAAI,EACjC+D,EAAI,QAAU6B,EAAM,UAAU,IAAI7B,EAAI,OAAO,IAAKiF,EAAY,EAAIhJ,EAAK,YAAaiJ,CAAQ,EAC5FlF,EAAI,MAAQiF,EACZjF,EAAI,KAAO,GAGX,IAAM2B,EAAWE,EAAM,wBAAwB7B,EAAI,QAASkF,CAAQ,EAC9DnD,EAAcjE,EAAO,OAAO6D,EAAS,OAAQ1F,EAAK,cAAc,EACtE+I,EAAeF,EAAa/C,EAC5BoD,EAAI,MAAM,GAAGpD,CAAW,MAAM/B,EAAI,OAAO,EAAE,CAC7C,CACA+E,EAAU/E,CAAG,EACb9D,EAAO,gBAAgB8I,CAAY,CACrC,CAlBS7I,EAAAwI,GAAA,2BA8BT,SAASS,GACPpF,EACArD,EACAuD,EACAmF,EACAjH,EACA8E,EACAoC,EACA,CACA,SAASC,EAAmBnJ,EAAOoJ,EAAY,CACzCpJ,EAAM,EAAIgC,EAAO,IAAI4B,EAAI,IAAI,EAAE,GACjC9D,EAAO,OACLS,EAAS,MAAQ6I,EACjB7I,EAAS,OACTA,EAAS,OACTA,EAAS,MAAQP,EAAM,OAAS,EAAIH,EAAK,UAC3C,EACAU,EAAS,MAAQA,EAAS,MAAQ6I,IAElCtJ,EAAO,OACLS,EAAS,OACTA,EAAS,OACTA,EAAS,MAAQ6I,EACjB7I,EAAS,MAAQP,EAAM,OAAS,EAAIH,EAAK,UAC3C,EACAU,EAAS,MAAQA,EAAS,MAAQ6I,EAEtC,CAlBSrJ,EAAAoJ,EAAA,sBAoBT,SAASE,EAAiBrJ,EAAOoJ,EAAY,CACvCpJ,EAAM,EAAIgC,EAAO,IAAI4B,EAAI,EAAE,EAAE,GAC/B9D,EAAO,OACLS,EAAS,OAAS6I,EAClB7I,EAAS,OACTA,EAAS,MACTA,EAAS,MAAQP,EAAM,OAAS,EAAIH,EAAK,UAC3C,EACAU,EAAS,OAASA,EAAS,OAAS6I,IAEpCtJ,EAAO,OACLS,EAAS,MACTA,EAAS,OACTA,EAAS,OAAS6I,EAClB7I,EAAS,MAAQP,EAAM,OAAS,EAAIH,EAAK,UAC3C,EACAU,EAAS,OAASA,EAAS,OAAS6I,EAExC,CAlBSrJ,EAAAsJ,EAAA,oBAmBT,IAAMC,EAAa,CACjBC,GAAiB,MACjBA,GAAiB,QACjBA,GAAiB,OACjBA,GAAiB,QACnB,EAGA,GAAIzC,EAAc,IAAIlD,EAAI,EAAE,GAAKqF,EAAO,CACtC,IAAMjJ,EAAQgC,EAAO,IAAI4B,EAAI,EAAE,EACzBwF,EAAaE,EAAW,SAAStJ,EAAM,IAAI,EAC7CwJ,GAAmB,EAAI,EACvBxJ,EAAM,MAAQ,EAAI,EACtBmJ,EAAmBnJ,EAAOoJ,CAAU,EACpCpJ,EAAM,OAAS8D,EAAa9D,EAAM,OAAS,EAC3CF,EAAO,gBAAgBE,EAAM,OAAS,CAAC,CACzC,SAESkJ,EAAgB,IAAItF,EAAI,IAAI,GAAKqF,EAAO,CAC/C,IAAMjJ,EAAQgC,EAAO,IAAI4B,EAAI,IAAI,EACjC,GAAI/D,EAAK,aAAc,CACrB,IAAMuJ,EAAaE,EAAW,SAAStJ,EAAM,IAAI,EAAIwJ,GAAmB,EAAIxJ,EAAM,MAAQ,EAC1FqJ,EAAiBrJ,EAAOoJ,CAAU,CACpC,CACApJ,EAAM,MAAQ8D,EAAa9D,EAAM,OAAS,EAC1CF,EAAO,gBAAgBE,EAAM,OAAS,CAAC,CACzC,SAESkJ,EAAgB,IAAItF,EAAI,EAAE,GAAKqF,EAAO,CAC7C,IAAMjJ,EAAQgC,EAAO,IAAI4B,EAAI,EAAE,EAC/B,GAAI/D,EAAK,aAAc,CACrB,IAAMuJ,EAAaE,EAAW,SAAStJ,EAAM,IAAI,EAC7CwJ,GAAmB,EAAI,EACvBxJ,EAAM,MAAQ,EAAI,EACtBmJ,EAAmBnJ,EAAOoJ,CAAU,CACtC,CACApJ,EAAM,MAAQ8D,EAAa9D,EAAM,OAAS,EAC1CF,EAAO,gBAAgBE,EAAM,OAAS,CAAC,CACzC,CACF,CAvFSD,EAAAiJ,GAAA,8BAiGF,IAAMS,GAAO1J,EAAA,eAAgB2J,EAAeC,EAAYC,EAAkB/F,EAAkB,CACjG,GAAM,CAAE,cAAAgG,EAAe,SAAAC,CAAS,EAAIpJ,EAAU,EAC9Cb,EAAOiK,EAEP,IAAIC,EACAF,IAAkB,YACpBE,EAAiBC,GAAO,KAAOL,CAAE,GAGnC,IAAMM,EACJJ,IAAkB,UACdG,GAAOD,EAAe,MAAM,EAAE,CAAC,EAAE,gBAAgB,IAAI,EACrDC,GAAO,MAAM,EACbpC,EAAMiC,IAAkB,UAAYE,EAAe,MAAM,EAAE,CAAC,EAAE,gBAAkB,SACtFjK,EAAO,KAAK,EACZiJ,EAAI,MAAMlF,EAAQ,EAAE,EAEpB,IAAM9B,EACJ8H,IAAkB,UAAYI,EAAK,OAAO,QAAQN,CAAE,IAAI,EAAIK,GAAO,QAAQL,CAAE,IAAI,EAG7E3H,EAAS6B,EAAQ,GAAG,UAAU,EAC9BiD,EAAgBjD,EAAQ,GAAG,iBAAiB,EAC5CqF,EAAkBrF,EAAQ,GAAG,mBAAmB,EAChDqG,EAAQrG,EAAQ,GAAG,SAAS,EAC9BkD,EAAYlD,EAAQ,GAAG,aAAa,EAClCoD,EAAWpD,EAAQ,GAAG,YAAY,EAClCrB,EAAQqB,EAAQ,GAAG,gBAAgB,EACnCsG,EAAWtG,EAAQ,GAAG,iBAAiB,EACvCuG,EAAevG,EAAQ,GAAG,0BAA0B,EACpDwG,EAA0B,MAAMC,GAA2BtI,EAAQiF,EAAUpD,CAAO,EAc1F,GAbAhE,EAAK,OAAS,MAAM0K,GAAsBvI,EAAQqI,EAAyBH,CAAK,EAEhF7H,EAAQ,mBAAmBN,CAAO,EAClCM,EAAQ,mBAAmBN,CAAO,EAClCM,EAAQ,gBAAgBN,CAAO,EAE3BoI,IACFrK,EAAO,gBAAgBD,EAAK,SAAS,EACjCuK,GACFtK,EAAO,gBAAgBoK,EAAM,CAAC,EAAE,aAAa,GAI7CrK,EAAK,yBAA2B,GAAM,CACxC,IAAM2K,EAAY,IAAI,IACtBvD,EAAS,QAASnF,GAAY,CAC5B0I,EAAU,IAAI1I,EAAQ,IAAI,EAC1B0I,EAAU,IAAI1I,EAAQ,EAAE,CAC1B,CAAC,EACDiF,EAAYA,EAAU,OAAQQ,GAAaiD,EAAU,IAAIjD,CAAQ,CAAC,CACpE,CAEAV,GAAsB9E,EAASC,EAAQ8E,EAAeC,EAAW,EAAGE,EAAU,EAAK,EACnF,IAAMuB,EAAa,MAAMiC,GAAoBxD,EAAUjF,EAAQqI,EAAyBxG,CAAO,EAG/FxB,EAAQ,gBAAgBN,CAAO,EAC/BM,EAAQ,qBAAqBN,CAAO,EACpCM,EAAQ,sBAAsBN,CAAO,EACrCM,EAAQ,qBAAqBN,CAAO,EACpCM,EAAQ,wBAAwBN,CAAO,EACvCM,EAAQ,2BAA2BN,CAAO,EAC1CM,EAAQ,wBAAwBN,CAAO,EACvCM,EAAQ,2BAA2BN,CAAO,EAM1C,SAAS2I,EAAU9G,EAAUoD,EAAqB,CAChD,IAAM2D,GAAiB7K,EAAO,cAAc8D,CAAG,EAC3C+G,GAAe,OAAS,GAAK3D,IAC/B2D,GAAe,OAAS3D,EAAc,EACtCA,GAAe,IAEjB3E,EAAQ,eACNN,EACA4I,GACA3D,EACAnH,EACAsC,GAAiByB,EAAI,IAAI,EAAE,MAC7B,EAEA9D,EAAO,OAAO6K,GAAe,OAAQ3D,EAAc,GAAI2D,GAAe,MAAO3D,CAAW,CAC1F,CAfSjH,EAAA2K,EAAA,aAkBT,IAAI3E,EAAgB,EAChB6E,EAAoB,EAClBC,EAAiB,CAAC,EAClBC,EAAc,CAAC,EACjB7B,EAAQ,EACZ,QAAWrF,KAAOqD,EAAU,CAC1B,IAAI3G,EAAWE,GAAWD,GAE1B,OAAQqD,EAAI,KAAM,CAChB,KAAKC,EAAQ,GAAG,SAAS,KACvB/D,EAAO,iBAAiB,EACxBU,GAAYoD,EAAI,UAChB,MAAMhB,GAASb,EAASvB,EAAS,EACjC,MACF,KAAKqD,EAAQ,GAAG,SAAS,aACvB/D,EAAO,cAAc8D,EAAK7B,EAASC,CAAM,EACzC,MACF,KAAK6B,EAAQ,GAAG,SAAS,mBACvB/D,EAAO,cAAc8D,EAAK7B,EAASC,CAAM,EACzC,MACF,KAAK6B,EAAQ,GAAG,SAAS,2BACvB/D,EAAO,cAAc8D,EAAK7B,EAASC,CAAM,EACzC,MACF,KAAK6B,EAAQ,GAAG,SAAS,WACvB6G,EAAU9G,EAAK9D,EAAO,eAAe,CAAC,EACtC,MACF,KAAK+D,EAAQ,GAAG,SAAS,WACvB0E,GACEC,EACA5E,EACA/D,EAAK,UACLA,EAAK,UAAYA,EAAK,cACrBiC,GAAYhC,EAAO,QAAQgC,CAAO,CACrC,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,SACvBvD,EAAYR,EAAO,QAAQ,EAC3B,MAAMuC,EAAQ,SAASN,EAASzB,EAAW,OAAQT,CAAI,EACvDC,EAAO,gBAAgBQ,EAAU,MAAQR,EAAO,eAAe,CAAC,EAChEA,EAAO,OAAO,QAAQQ,CAAS,EAC/B,MACF,KAAKuD,EAAQ,GAAG,SAAS,WACvB0E,GAAwBC,EAAY5E,EAAK/D,EAAK,UAAWA,EAAK,UAAYiC,GACxEhC,EAAO,QAAQ,OAAWgC,EAAQ,OAAO,CAC3C,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,SACvBvD,EAAYR,EAAO,QAAQ,EAC3BgL,EAAY,KAAKxK,CAAS,EAC1BR,EAAO,OAAO,QAAQQ,CAAS,EAC/BR,EAAO,gBAAgBQ,EAAU,MAAQR,EAAO,eAAe,CAAC,EAChE,MACF,KAAK+D,EAAQ,GAAG,SAAS,UACvB0E,GACEC,EACA5E,EACA/D,EAAK,UACLA,EAAK,UAAYA,EAAK,cACrBiC,GAAYhC,EAAO,QAAQgC,CAAO,CACrC,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,QACvBvD,EAAYR,EAAO,QAAQ,EAC3B,MAAMuC,EAAQ,SAASN,EAASzB,EAAW,MAAOT,CAAI,EACtDC,EAAO,gBAAgBQ,EAAU,MAAQR,EAAO,eAAe,CAAC,EAChEA,EAAO,OAAO,QAAQQ,CAAS,EAC/B,MACF,KAAKuD,EAAQ,GAAG,SAAS,UACvB0E,GACEC,EACA5E,EACA/D,EAAK,UACLA,EAAK,UAAYA,EAAK,cACrBiC,GAAYhC,EAAO,QAAQgC,CAAO,CACrC,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,SACvB0E,GACEC,EACA5E,EACA/D,EAAK,UAAYA,EAAK,cACtBA,EAAK,UACJiC,GAAYhC,EAAO,iBAAiBgC,CAAO,CAC9C,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,QACvBvD,EAAYR,EAAO,QAAQ,EAC3B,MAAMuC,EAAQ,SAASN,EAASzB,EAAW,MAAOT,CAAI,EACtDC,EAAO,gBAAgBQ,EAAU,MAAQR,EAAO,eAAe,CAAC,EAChEA,EAAO,OAAO,QAAQQ,CAAS,EAC/B,MACF,KAAKuD,EAAQ,GAAG,SAAS,UACzB,KAAKA,EAAQ,GAAG,SAAS,eACvB0E,GACEC,EACA5E,EACA/D,EAAK,UACLA,EAAK,UAAYA,EAAK,cACrBiC,GAAYhC,EAAO,QAAQgC,CAAO,CACrC,EACAhC,EAAO,gBAAgB,EACvB,MACF,KAAK+D,EAAQ,GAAG,SAAS,QACvB0E,GACEC,EACA5E,EACA/D,EAAK,UAAYA,EAAK,cACtBA,EAAK,UACJiC,GAAYhC,EAAO,iBAAiBgC,CAAO,CAC9C,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,QACvBvD,EAAYR,EAAO,QAAQ,EAC3B,MAAMuC,EAAQ,SAASN,EAASzB,EAAW,MAAOT,CAAI,EACtDC,EAAO,gBAAgBQ,EAAU,MAAQR,EAAO,eAAe,CAAC,EAChEA,EAAO,OAAO,QAAQQ,CAAS,EAC/B,MACF,KAAKuD,EAAQ,GAAG,SAAS,WACvBkC,EAAgBnC,EAAI,QAAQ,OAASmC,EACrC6E,EAAoBhH,EAAI,QAAQ,MAAQgH,EACpChH,EAAI,QAAQ,QACdC,EAAQ,GAAG,sBAAsB,EAEjCA,EAAQ,GAAG,uBAAuB,EAEpC,MACF,KAAKA,EAAQ,GAAG,SAAS,eACvB0E,GACEC,EACA5E,EACA/D,EAAK,UACLA,EAAK,UAAYA,EAAK,cACrBiC,GAAYhC,EAAO,QAAQgC,CAAO,CACrC,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,gBACvB0E,GACEC,EACA5E,EACA/D,EAAK,UAAYA,EAAK,cACtBA,EAAK,UACJiC,GAAYhC,EAAO,iBAAiBgC,CAAO,CAC9C,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,aACvBvD,EAAYR,EAAO,QAAQ,EAC3B,MAAMuC,EAAQ,SAASN,EAASzB,EAAW,WAAYT,CAAI,EAC3DC,EAAO,gBAAgBQ,EAAU,MAAQR,EAAO,eAAe,CAAC,EAChEA,EAAO,OAAO,QAAQQ,CAAS,EAC/B,MACF,KAAKuD,EAAQ,GAAG,SAAS,YACvB0E,GACEC,EACA5E,EACA/D,EAAK,UACLA,EAAK,UAAYA,EAAK,cACrBiC,GAAYhC,EAAO,QAAQgC,CAAO,CACrC,EACA,MACF,KAAK+B,EAAQ,GAAG,SAAS,UACvBvD,EAAYR,EAAO,QAAQ,EAC3B,MAAMuC,EAAQ,SAASN,EAASzB,EAAW,QAAST,CAAI,EACxDC,EAAO,gBAAgBQ,EAAU,MAAQR,EAAO,eAAe,CAAC,EAChEA,EAAO,OAAO,QAAQQ,CAAS,EAC/B,MACF,QACE,GAAI,CACFC,GAAWqD,EAAI,SACfrD,GAAS,OAAST,EAAO,eAAe,EACxCS,GAAS,cAAgBwF,EACzBxF,GAAS,gBAAkBsD,EAAQ,GAAG,oBAAoB,EAC1D,IAAMC,EAAa,MAAMqB,GAAapD,EAASxB,EAAQ,EACvDyI,GACEpF,EACArD,GACAuD,EACAmF,EACAjH,EACA8E,EACAoC,CACF,EACA2B,EAAe,KAAK,CAAE,aAActK,GAAU,WAAYuD,EAAY,IAAAF,CAAI,CAAC,EAC3E9D,EAAO,OAAO,WAAWS,EAAQ,CACnC,OAASwK,EAAG,CACVhC,EAAI,MAAM,8BAA+BgC,CAAC,CAC5C,CACJ,CAIE,CACElH,EAAQ,GAAG,SAAS,WACpBA,EAAQ,GAAG,SAAS,YACpBA,EAAQ,GAAG,SAAS,MAEpBA,EAAQ,GAAG,SAAS,UACpBA,EAAQ,GAAG,SAAS,aACpBA,EAAQ,GAAG,SAAS,UACpBA,EAAQ,GAAG,SAAS,aAEpBA,EAAQ,GAAG,SAAS,iBACpBA,EAAQ,GAAG,SAAS,oBACpBA,EAAQ,GAAG,SAAS,iBACpBA,EAAQ,GAAG,SAAS,oBAEpBA,EAAQ,GAAG,SAAS,wBACpBA,EAAQ,GAAG,SAAS,2BACpBA,EAAQ,GAAG,SAAS,wBACpBA,EAAQ,GAAG,SAAS,2BAEpBA,EAAQ,GAAG,SAAS,+BACpBA,EAAQ,GAAG,SAAS,kCACpBA,EAAQ,GAAG,SAAS,+BACpBA,EAAQ,GAAG,SAAS,kCAEpBA,EAAQ,GAAG,SAAS,OACpBA,EAAQ,GAAG,SAAS,YACpBA,EAAQ,GAAG,SAAS,aACpBA,EAAQ,GAAG,SAAS,YACpBA,EAAQ,GAAG,SAAS,aACpBA,EAAQ,GAAG,SAAS,oBACpBA,EAAQ,GAAG,SAAS,oBACtB,EAAE,SAASD,EAAI,IAAI,IAEnBmC,EAAgBA,EAAgB6E,GAElC3B,GACF,CAEAF,EAAI,MAAM,gBAAiBjC,CAAa,EACxCiC,EAAI,MAAM,kBAAmBG,CAAe,EAC5C,MAAMzB,GAAW1F,EAASC,EAAQ+E,EAAW,EAAK,EAElD,QAAWgE,KAAKF,EACd,MAAM/E,GAAY/D,EAASgJ,EAAE,aAAcA,EAAE,WAAYlH,EAASkH,EAAE,GAAG,EAErElL,EAAK,cACP,MAAM4H,GAAW1F,EAASC,EAAQ+E,EAAW,EAAI,EAEnD+D,EAAY,QAASC,GAAM1I,EAAQ,mBAAmBN,EAASgJ,CAAC,CAAC,EACjEC,GAAmBjJ,EAASC,EAAQ+E,EAAWlH,CAAI,EAEnD,QAAW2H,KAAO1H,EAAO,OAAO,MAAO,CACrC0H,EAAI,OAAS1H,EAAO,eAAe,EAAI0H,EAAI,EAC3C1H,EAAO,OAAO0H,EAAI,EAAGA,EAAI,EAAGA,EAAI,EAAIA,EAAI,MAAOA,EAAI,MAAM,EACzD,IAAMyD,EAAapL,EAAK,UAAY,EACpC2H,EAAI,OAASA,EAAI,EAAIyD,EACrBzD,EAAI,OAASA,EAAI,EAAIyD,EAAa,IAClCzD,EAAI,MAAQA,EAAI,OAASA,EAAI,MAAQ,EAAIyD,EACzCzD,EAAI,MAAQA,EAAI,OAASA,EAAI,OAASyD,EAAa,IACnDzD,EAAI,OAAS,kBACbnF,EAAQ,QAAQN,EAASyF,EAAK3H,CAAI,CACpC,CAEIsK,GACFrK,EAAO,gBAAgBD,EAAK,SAAS,EAIvC,IAAMqL,EAAkBvD,GAAgB5F,EAASC,EAAQ+E,EAAWa,CAAG,EAEjE,CAAE,OAAQJ,CAAI,EAAI1H,EAAO,UAAU,EAErC0H,EAAI,SAAW,SACjBA,EAAI,OAAS,GAEXA,EAAI,SAAW,SACjBA,EAAI,OAAS,GAEXA,EAAI,QAAU,SAChBA,EAAI,MAAQ,GAEVA,EAAI,QAAU,SAChBA,EAAI,MAAQ,GAId,IAAI2D,EAAY3D,EAAI,MAAQA,EAAI,OAC5B2D,EAAYD,EAAgB,YAC9BC,EAAYD,EAAgB,WAG9B,IAAIxD,EAASyD,EAAY,EAAItL,EAAK,eAC9BA,EAAK,eACP6H,EAASA,EAAS7H,EAAK,UAAYA,EAAK,iBAI1C,IAAIuL,GAAW5D,EAAI,MAAQA,EAAI,OAC3B4D,GAAWF,EAAgB,WAC7BE,GAAWF,EAAgB,UAE7B,IAAMG,GAAQD,GAAW,EAAIvL,EAAK,eAE9B2C,GACFT,EACG,OAAO,MAAM,EACb,KAAKS,CAAK,EACV,KAAK,KAAMgF,EAAI,MAAQA,EAAI,QAAU,EAAI,EAAI3H,EAAK,cAAc,EAChE,KAAK,IAAK,GAAG,EAGlByL,GAAiBvJ,EAAS2F,EAAQ2D,GAAOxL,EAAK,WAAW,EAEzD,IAAM0L,GAAoB/I,EAAQ,GAAK,EACvCT,EAAQ,KACN,UACAyF,EAAI,OACF3H,EAAK,eACL,MACCA,EAAK,eAAiB0L,IACvB,IACAF,GACA,KACC3D,EAAS6D,GACd,EAEAxC,EAAI,MAAM,UAAWjJ,EAAO,MAAM,CACpC,EAtZoB,QAmapB,eAAewK,GACbtI,EACAiF,EACApD,EACiC,CACjC,IAAMwG,EAA0B,CAAC,EAEjC,QAAWzG,KAAOqD,EAChB,GAAIjF,EAAO,IAAI4B,EAAI,EAAE,GAAK5B,EAAO,IAAI4B,EAAI,IAAI,EAAG,CAC9C,IAAM5D,EAAQgC,EAAO,IAAI4B,EAAI,EAAE,EAQ/B,GALIA,EAAI,YAAcC,EAAQ,GAAG,UAAU,QAAU,CAAC7D,EAAM,WAKxD4D,EAAI,YAAcC,EAAQ,GAAG,UAAU,SAAW,CAAC7D,EAAM,UAC3D,SAGF,IAAMwL,EAAS5H,EAAI,YAAc,OAC3B6H,EAAY,CAACD,EAEbE,EAAWF,EAASvG,GAASpF,CAAI,EAAIkF,GAAYlF,CAAI,EACrD8L,EAAiB/H,EAAI,KACvB6B,EAAM,UAAU7B,EAAI,QAAS/D,EAAK,MAAQ,EAAIA,EAAK,YAAa6L,CAAQ,EACxE9H,EAAI,QAIFgI,GAHoBvI,EAASsI,CAAc,EAC7C,MAAMnG,GAA0B5B,EAAI,QAASlD,EAAU,CAAC,EACxD+E,EAAM,wBAAwBkG,EAAgBD,CAAQ,GACnB,MAAQ,EAAI7L,EAAK,YAkBpD4L,GAAa7H,EAAI,OAAS5D,EAAM,UAClCqK,EAAwBzG,EAAI,EAAE,EAAIlC,EAAO,OACvC2I,EAAwBzG,EAAI,EAAE,GAAK,EACnCgI,CACF,EACSH,GAAa7H,EAAI,OAAS5D,EAAM,UACzCqK,EAAwBzG,EAAI,IAAI,EAAIlC,EAAO,OACzC2I,EAAwBzG,EAAI,IAAI,GAAK,EACrCgI,CACF,EACSH,GAAa7H,EAAI,OAASA,EAAI,IACvCyG,EAAwBzG,EAAI,IAAI,EAAIlC,EAAO,OACzC2I,EAAwBzG,EAAI,IAAI,GAAK,EACrCgI,EAAe,CACjB,EAEAvB,EAAwBzG,EAAI,EAAE,EAAIlC,EAAO,OACvC2I,EAAwBzG,EAAI,EAAE,GAAK,EACnCgI,EAAe,CACjB,GACShI,EAAI,YAAcC,EAAQ,GAAG,UAAU,QAChDwG,EAAwBzG,EAAI,IAAI,EAAIlC,EAAO,OACzC2I,EAAwBzG,EAAI,IAAI,GAAK,EACrCgI,CACF,EACShI,EAAI,YAAcC,EAAQ,GAAG,UAAU,OAChDwG,EAAwBrK,EAAM,SAAS,EAAI0B,EAAO,OAChD2I,EAAwBrK,EAAM,SAAS,GAAK,EAC5C4L,CACF,EACShI,EAAI,YAAcC,EAAQ,GAAG,UAAU,OAC5C7D,EAAM,YACRqK,EAAwBrK,EAAM,SAAS,EAAI0B,EAAO,OAChD2I,EAAwBrK,EAAM,SAAS,GAAK,EAC5C4L,EAAe,CACjB,GAGE5L,EAAM,YACRqK,EAAwBzG,EAAI,IAAI,EAAIlC,EAAO,OACzC2I,EAAwBzG,EAAI,IAAI,GAAK,EACrCgI,EAAe,CACjB,GAGN,CAGF,OAAA7C,EAAI,MAAM,2BAA4BsB,CAAuB,EACtDA,CACT,CAnGetK,EAAAuK,GAAA,8BAqGf,IAAMvC,GAAwBhI,EAAA,SAAUC,EAAO,CAC7C,IAAI6L,EAAqB,EACnBH,EAAWxG,GAAUrF,CAAI,EAC/B,QAAWe,KAAOZ,EAAM,MAAO,CAE7B,IAAM8L,EADkBrG,EAAM,wBAAwB7E,EAAK8K,CAAQ,EAChC,MAAQ,EAAI7L,EAAK,YAAc,EAAIA,EAAK,UACvEgM,EAAqBC,IACvBD,EAAqBC,EAEzB,CAEA,OAAOD,CACT,EAZ8B,yBAyB9B,eAAetB,GACbvI,EACA+J,EACA7B,EACA,CACA,IAAI5C,EAAY,EAChB,QAAW0E,KAAQhK,EAAO,KAAK,EAAG,CAChC,IAAMhC,EAAQgC,EAAO,IAAIgK,CAAI,EACzBhM,EAAM,OACRA,EAAM,YAAcyF,EAAM,UACxBzF,EAAM,YACNH,EAAK,MAAQ,EAAIA,EAAK,YACtBqF,GAAUrF,CAAI,CAChB,GAEF,IAAMoM,EAAU5I,EAASrD,EAAM,WAAW,EACtC,MAAMwF,GAA0BxF,EAAM,YAAaU,EAAU,CAAC,EAC9D+E,EAAM,wBAAwBzF,EAAM,YAAakF,GAAUrF,CAAI,CAAC,EAEpEG,EAAM,MAAQA,EAAM,KAChBH,EAAK,MACL6B,EAAO,OAAO7B,EAAK,MAAOoM,EAAQ,MAAQ,EAAIpM,EAAK,WAAW,EAElEG,EAAM,OAASA,EAAM,KAAO0B,EAAO,OAAOuK,EAAQ,OAAQpM,EAAK,MAAM,EAAIA,EAAK,OAC9EyH,EAAY5F,EAAO,OAAO4F,EAAWtH,EAAM,MAAM,CACnD,CAEA,QAAWuH,KAAYwE,EAAqB,CAC1C,IAAM/L,EAAQgC,EAAO,IAAIuF,CAAQ,EAEjC,GAAI,CAACvH,EACH,SAGF,IAAMkM,EAAYlK,EAAO,IAAIhC,EAAM,SAAS,EAG5C,GAAI,CAACkM,EAAW,CAEd,IAAMC,EADeJ,EAAoBxE,CAAQ,EACf1H,EAAK,YAAcG,EAAM,MAAQ,EACnEA,EAAM,OAAS0B,EAAO,OAAOyK,EAAYtM,EAAK,WAAW,EACzD,QACF,CAGA,IAAMsM,EADeJ,EAAoBxE,CAAQ,EACf1H,EAAK,YAAcG,EAAM,MAAQ,EAAIkM,EAAU,MAAQ,EAEzFlM,EAAM,OAAS0B,EAAO,OAAOyK,EAAYtM,EAAK,WAAW,CAC3D,CAEA,IAAIuM,EAAe,EACnB,OAAAlC,EAAM,QAAS1C,GAAQ,CACrB,IAAMkE,EAAW3G,GAAYlF,CAAI,EAC7BwM,EAAa7E,EAAI,UAAU,OAAO,CAAC8E,EAAOC,IACpCD,GAAStK,EAAO,IAAIuK,CAAI,EAAE,OAASvK,EAAO,IAAIuK,CAAI,EAAE,QAAU,GACrE,CAAC,EAEEC,EAAqB3M,EAAK,UAAY,EAC5CwM,GAAcG,EAEdH,GAAc,EAAIxM,EAAK,cACnB2H,EAAI,OACNA,EAAI,KAAO/B,EAAM,UAAU+B,EAAI,KAAM6E,EAAa,EAAIxM,EAAK,YAAa6L,CAAQ,GAGlF,IAAMe,EAAmBhH,EAAM,wBAAwB+B,EAAI,KAAMkE,CAAQ,EACzEU,EAAe1K,EAAO,OAAO+K,EAAiB,OAAQL,CAAY,EAClE,IAAMM,EAAWhL,EAAO,OAAO2K,EAAYI,EAAiB,MAAQ,EAAI5M,EAAK,WAAW,EAExF,GADA2H,EAAI,OAAS3H,EAAK,cACdwM,EAAaK,EAAU,CACzB,IAAMC,GAAWD,EAAWL,GAAc,EAC1C7E,EAAI,QAAUmF,CAChB,CACF,CAAC,EACDzC,EAAM,QAAS1C,GAASA,EAAI,cAAgB4E,CAAa,EAElD1K,EAAO,OAAO4F,EAAWzH,EAAK,MAAM,CAC7C,CA7EeE,EAAAwK,GAAA,yBA+Ef,IAAMqC,GAAiB7M,EAAA,eAAgB6D,EAAK5B,EAAQ6B,EAAS,CAC3D,IAAME,EAAY/B,EAAO,IAAI4B,EAAI,IAAI,EAC/BI,EAAUhC,EAAO,IAAI4B,EAAI,EAAE,EAC3B7C,EAASgD,EAAU,EACnB9C,EAAQ+C,EAAQ,EAChB6I,EAAajJ,EAAI,MAAQA,EAAI,QAE/BkJ,EAAyEzJ,EAASO,EAAI,OAAO,EAC7F,MAAM4B,GAA0B5B,EAAI,QAASlD,EAAU,CAAC,EACxD+E,EAAM,wBACJoH,EAAapH,EAAM,UAAU7B,EAAI,QAAS/D,EAAK,MAAOoF,GAASpF,CAAI,CAAC,EAAI+D,EAAI,QAC5EqB,GAASpF,CAAI,CACf,EACEW,EAAY,CAChB,MAAOqM,EACHhN,EAAK,MACL6B,EAAO,OAAO7B,EAAK,MAAOiN,EAAe,MAAQ,EAAIjN,EAAK,UAAU,EACxE,OAAQ,EACR,OAAQkE,EAAU,EAClB,MAAO,EACP,OAAQ,EACR,MAAO,EACP,QAASH,EAAI,OACf,EACA,OAAIA,EAAI,YAAcC,EAAQ,GAAG,UAAU,SACzCrD,EAAU,MAAQqM,EACdnL,EAAO,OAAO7B,EAAK,MAAOiN,EAAe,KAAK,EAC9CpL,EAAO,OACLqC,EAAU,MAAQ,EAAIC,EAAQ,MAAQ,EACtC8I,EAAe,MAAQ,EAAIjN,EAAK,UAClC,EACJW,EAAU,OAASO,GAAUgD,EAAU,MAAQlE,EAAK,aAAe,GAC1D+D,EAAI,YAAcC,EAAQ,GAAG,UAAU,QAChDrD,EAAU,MAAQqM,EACdnL,EAAO,OAAO7B,EAAK,MAAOiN,EAAe,MAAQ,EAAIjN,EAAK,UAAU,EACpE6B,EAAO,OACLqC,EAAU,MAAQ,EAAIC,EAAQ,MAAQ,EACtC8I,EAAe,MAAQ,EAAIjN,EAAK,UAClC,EACJW,EAAU,OAASO,EAASP,EAAU,OAASuD,EAAU,MAAQlE,EAAK,aAAe,GAC5E+D,EAAI,KAAOA,EAAI,MACxBkJ,EAAiBrH,EAAM,wBACrBoH,EACIpH,EAAM,UAAU7B,EAAI,QAASlC,EAAO,OAAO7B,EAAK,MAAOkE,EAAU,KAAK,EAAGkB,GAASpF,CAAI,CAAC,EACvF+D,EAAI,QACRqB,GAASpF,CAAI,CACf,EACAW,EAAU,MAAQqM,EACdnL,EAAO,OAAO7B,EAAK,MAAOkE,EAAU,KAAK,EACzCrC,EAAO,OAAOqC,EAAU,MAAOlE,EAAK,MAAOiN,EAAe,MAAQ,EAAIjN,EAAK,UAAU,EACzFW,EAAU,OAASO,GAAUgD,EAAU,MAAQvD,EAAU,OAAS,IAElEA,EAAU,MACR,KAAK,IAAIO,EAASgD,EAAU,MAAQ,GAAK9C,EAAQ+C,EAAQ,MAAQ,EAAE,EAAInE,EAAK,YAC9EW,EAAU,OACRO,EAASE,EACLF,EAASgD,EAAU,MAAQ,EAAIlE,EAAK,YAAc,EAClDoB,EAAQ+C,EAAQ,MAAQ,EAAInE,EAAK,YAAc,GAEnDgN,IACFrM,EAAU,QAAUiF,EAAM,UACxB7B,EAAI,QACJpD,EAAU,MAAQ,EAAIX,EAAK,YAC3BoF,GAASpF,CAAI,CACf,GAEFkJ,EAAI,MACF,OAAOvI,EAAU,MAAM,IAAIA,EAAU,KAAK,IAAIA,EAAU,MAAM,IAAIA,EAAU,KAAK,IAAIA,EAAU,KAAK,IAAIA,EAAU,MAAM,IAAIoD,EAAI,OAAO,GACzI,EACOpD,CACT,EAtEuB,kBAyEjBuM,GAAiC,EACjCC,GAA0C,EAQ1C3G,GAAuBtG,EAAA,SAAU6D,EAAKC,EAAS,CACnD,GAAM,CAAE,mBAAAe,EAAoB,2BAAAC,EAA4B,wBAAAC,CAAwB,EAC9EjB,EAAQ,GAAG,SACb,MAAO,CAACe,EAAoBC,EAA4BC,CAAuB,EAAE,SAC/ElB,EAAI,iBACN,CACF,EAN6B,wBAevBqJ,GAAmClN,EAAA,SAAU6D,EAAKC,EAASqJ,EAAgB,CAC/E,GAAM,CACJ,2BAAArI,EACA,wBAAAC,EACA,oBAAAqI,EACA,qBAAAC,CACF,EAAIvJ,EAAQ,GAAG,SAEXwJ,EAAS,EAEb,OACEzJ,EAAI,oBAAsBiB,GAC1BjB,EAAI,oBAAsBkB,KAE1BuI,GAAUN,KAITnJ,EAAI,oBAAsBiB,GACzBjB,EAAI,oBAAsBkB,KAC3BlB,EAAI,OAASuJ,GAAuBvJ,EAAI,OAASwJ,KAElDC,GAAUH,EAAiB,EAAI,CAACF,IAG3BK,CACT,EA1ByC,oCAkCnC/I,GAAqBvE,EAAA,SAAU6D,EAAKC,EAAS,CACjD,GAAM,CACJ,wBAAAyJ,EACA,+BAAAC,EACA,2BAAAC,EACA,kCAAAC,EACA,wBAAAC,EACA,+BAAAC,EACA,2BAAAC,EACA,kCAAAC,CACF,EAAIhK,EAAQ,GAAG,SAEf,MAAO,CACLyJ,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,CACF,EAAE,SAASjK,EAAI,IAAI,CACrB,EAtB2B,sBA8BrBuC,GAA2BpG,EAAA,SAAU6D,EAAKC,EAAS,CACvD,GAAM,CAAE,oBAAAsJ,EAAqB,qBAAAC,CAAqB,EAAIvJ,EAAQ,GAAG,SACjE,MAAO,CAACsJ,EAAqBC,CAAoB,EAAE,SAASxJ,EAAI,IAAI,CACtE,EAHiC,4BAK3BkK,GAAoB/N,EAAA,SAAU6D,EAAK5B,EAAQ6B,EAAS,CACxD,GACE,CAAC,CACCA,EAAQ,GAAG,SAAS,WACpBA,EAAQ,GAAG,SAAS,YACpBA,EAAQ,GAAG,SAAS,MAEpBA,EAAQ,GAAG,SAAS,UACpBA,EAAQ,GAAG,SAAS,aACpBA,EAAQ,GAAG,SAAS,UACpBA,EAAQ,GAAG,SAAS,aAEpBA,EAAQ,GAAG,SAAS,iBACpBA,EAAQ,GAAG,SAAS,oBACpBA,EAAQ,GAAG,SAAS,iBACpBA,EAAQ,GAAG,SAAS,oBAEpBA,EAAQ,GAAG,SAAS,wBACpBA,EAAQ,GAAG,SAAS,2BACpBA,EAAQ,GAAG,SAAS,wBACpBA,EAAQ,GAAG,SAAS,2BAEpBA,EAAQ,GAAG,SAAS,+BACpBA,EAAQ,GAAG,SAAS,kCACpBA,EAAQ,GAAG,SAAS,+BACpBA,EAAQ,GAAG,SAAS,kCAEpBA,EAAQ,GAAG,SAAS,OACpBA,EAAQ,GAAG,SAAS,YACpBA,EAAQ,GAAG,SAAS,aACpBA,EAAQ,GAAG,SAAS,YACpBA,EAAQ,GAAG,SAAS,aACpBA,EAAQ,GAAG,SAAS,oBACpBA,EAAQ,GAAG,SAAS,oBACtB,EAAE,SAASD,EAAI,IAAI,EAEnB,MAAO,CAAC,EAEV,GAAM,CAACmK,EAAUC,CAAS,EAAI9F,GAAiBtE,EAAI,KAAM5B,CAAM,EACzD,CAACiM,EAAQC,CAAO,EAAIhG,GAAiBtE,EAAI,GAAI5B,CAAM,EACnDkL,EAAiBa,GAAYE,EAC/BlN,EAASmM,EAAiBc,EAAYD,EACtC9M,EAAQiM,EAAiBe,EAASC,EAGtCnN,GAAUkM,GAAiCrJ,EAAKC,EAASqJ,CAAc,EAEvE,IAAMiB,EAAsB,KAAK,IAAIF,EAASC,CAAO,EAAI,EAOnDE,EAAcrO,EAACsO,GACZnB,EAAiB,CAACmB,EAAQA,EADf,eAIhBzK,EAAI,OAASA,EAAI,GAInB3C,EAAQF,GASJ6C,EAAI,UAAY,CAACuK,IACnBlN,GAASmN,EAAYvO,EAAK,gBAAkB,EAAI,CAAC,GAQhD,CACCgE,EAAQ,GAAG,SAAS,WACpBA,EAAQ,GAAG,SAAS,YAEpBA,EAAQ,GAAG,SAAS,UACpBA,EAAQ,GAAG,SAAS,aAEpBA,EAAQ,GAAG,SAAS,iBACpBA,EAAQ,GAAG,SAAS,oBAEpBA,EAAQ,GAAG,SAAS,+BACpBA,EAAQ,GAAG,SAAS,kCAEpBA,EAAQ,GAAG,SAAS,wBACpBA,EAAQ,GAAG,SAAS,2BAEpBA,EAAQ,GAAG,SAAS,+BACpBA,EAAQ,GAAG,SAAS,kCAEpBA,EAAQ,GAAG,SAAS,wBACpBA,EAAQ,GAAG,SAAS,0BACtB,EAAE,SAASD,EAAI,IAAI,IAEnB3C,GAASmN,EAAY,CAAC,GAOtB,CACEvK,EAAQ,GAAG,SAAS,oBACpBA,EAAQ,GAAG,SAAS,qBACpBA,EAAQ,GAAG,SAAS,+BACpBA,EAAQ,GAAG,SAAS,kCACpBA,EAAQ,GAAG,SAAS,wBACpBA,EAAQ,GAAG,SAAS,0BACtB,EAAE,SAASD,EAAI,IAAI,IAEnB7C,GAAUqN,EAAY,CAAC,IAI3B,IAAME,EAAY,CAACP,EAAUC,EAAWC,EAAQC,CAAO,EACjDK,EAAe,KAAK,IAAIxN,EAASE,CAAK,EACxC2C,EAAI,MAAQA,EAAI,UAClBA,EAAI,QAAU6B,EAAM,UAClB7B,EAAI,QACJlC,EAAO,OAAO6M,EAAe,EAAI1O,EAAK,YAAaA,EAAK,KAAK,EAC7DkF,GAAYlF,CAAI,CAClB,GAEF,IAAM2O,EAAU/I,EAAM,wBAAwB7B,EAAI,QAASmB,GAAYlF,CAAI,CAAC,EAE5E,MAAO,CACL,MAAO6B,EAAO,OACZkC,EAAI,KAAO,EAAI4K,EAAQ,MAAQ,EAAI3O,EAAK,YACxC0O,EAAe,EAAI1O,EAAK,YACxBA,EAAK,KACP,EACA,OAAQ,EACR,OAAAkB,EACA,MAAAE,EACA,OAAQ,EACR,MAAO,EACP,QAAS2C,EAAI,QACb,KAAMA,EAAI,KACV,KAAMA,EAAI,KACV,WAAY,KAAK,IAAI,MAAM,KAAM0K,CAAS,EAC1C,SAAU,KAAK,IAAI,MAAM,KAAMA,CAAS,CAC1C,CACF,EAvJ0B,qBAyJpB7D,GAAsB1K,EAAA,eAAgBkH,EAAUjF,EAAQyM,EAAmB5K,EAAS,CACxF,IAAM6K,EAAQ,CAAC,EACTC,EAAQ,CAAC,EACXC,EAASpO,EAAWD,EAExB,QAAWqD,KAAOqD,EAAU,CAC1B,OAAQrD,EAAI,KAAM,CAChB,KAAKC,EAAQ,GAAG,SAAS,WACzB,KAAKA,EAAQ,GAAG,SAAS,UACzB,KAAKA,EAAQ,GAAG,SAAS,UACzB,KAAKA,EAAQ,GAAG,SAAS,UACzB,KAAKA,EAAQ,GAAG,SAAS,eACzB,KAAKA,EAAQ,GAAG,SAAS,eACzB,KAAKA,EAAQ,GAAG,SAAS,YACvB8K,EAAM,KAAK,CACT,GAAI/K,EAAI,GACR,IAAKA,EAAI,QACT,KAAM,OAAO,iBACb,GAAI,OAAO,iBACX,MAAO,CACT,CAAC,EACD,MACF,KAAKC,EAAQ,GAAG,SAAS,SACzB,KAAKA,EAAQ,GAAG,SAAS,QACzB,KAAKA,EAAQ,GAAG,SAAS,gBACnBD,EAAI,UACNgL,EAAUD,EAAM,IAAI,EACpBD,EAAME,EAAQ,EAAE,EAAIA,EACpBF,EAAM9K,EAAI,EAAE,EAAIgL,EAChBD,EAAM,KAAKC,CAAO,GAEpB,MACF,KAAK/K,EAAQ,GAAG,SAAS,SACzB,KAAKA,EAAQ,GAAG,SAAS,QACzB,KAAKA,EAAQ,GAAG,SAAS,QACzB,KAAKA,EAAQ,GAAG,SAAS,QACzB,KAAKA,EAAQ,GAAG,SAAS,aACzB,KAAKA,EAAQ,GAAG,SAAS,UACvB+K,EAAUD,EAAM,IAAI,EACpBD,EAAME,EAAQ,EAAE,EAAIA,EACpB,MACF,KAAK/K,EAAQ,GAAG,SAAS,aACvB,CACE,IAAM5B,EAAYD,EAAO,IAAI4B,EAAI,KAAOA,EAAI,KAAOA,EAAI,GAAG,KAAK,EACzD1B,EAAcC,GAAiByB,EAAI,KAAOA,EAAI,KAAOA,EAAI,GAAG,KAAK,EAAE,OACnExB,EACJH,EAAU,EAAIA,EAAU,MAAQ,GAAMC,EAAc,GAAKrC,EAAK,gBAAmB,EAC7EgP,EAAQ,CACZ,OAAQzM,EACR,MAAOA,EAAIvC,EAAK,gBAChB,MAAO+D,EAAI,KACX,QAAS,EACX,EACA9D,EAAO,YAAY,KAAK+O,CAAK,CAC/B,CACA,MACF,KAAKhL,EAAQ,GAAG,SAAS,WACvB,CACE,IAAMvB,EAAyBxC,EAAO,YACnC,IAAKgP,GAAMA,EAAE,KAAK,EAClB,YAAYlL,EAAI,IAAI,EACvB9D,EAAO,YAAY,OAAOwC,EAAwB,CAAC,EAAE,OAAO,EAAG,CAAC,CAClE,CACA,KACJ,CACesB,EAAI,YAAc,QAE/BpD,EAAY,MAAMoM,GAAehJ,EAAK5B,EAAQ6B,CAAO,EACrDD,EAAI,UAAYpD,EAChBmO,EAAM,QAASI,GAAQ,CACrBH,EAAUG,EACVH,EAAQ,KAAOlN,EAAO,OAAOkN,EAAQ,KAAMpO,EAAU,MAAM,EAC3DoO,EAAQ,GAAKlN,EAAO,OAAOkN,EAAQ,GAAIpO,EAAU,OAASA,EAAU,KAAK,EACzEoO,EAAQ,MACNlN,EAAO,OAAOkN,EAAQ,MAAO,KAAK,IAAIA,EAAQ,KAAOA,EAAQ,EAAE,CAAC,EAAI/O,EAAK,aAC7E,CAAC,IAEDU,EAAWuN,GAAkBlK,EAAK5B,EAAQ6B,CAAO,EACjDD,EAAI,SAAWrD,EACXA,EAAS,QAAUA,EAAS,OAASoO,EAAM,OAAS,GACtDA,EAAM,QAASI,GAAQ,CAErB,GADAH,EAAUG,EACNxO,EAAS,SAAWA,EAAS,MAAO,CACtC,IAAMyO,EAAOhN,EAAO,IAAI4B,EAAI,IAAI,EAC1BqL,EAAKjN,EAAO,IAAI4B,EAAI,EAAE,EAC5BgL,EAAQ,KAAOlN,EAAO,OACpBsN,EAAK,EAAIzO,EAAS,MAAQ,EAC1ByO,EAAK,EAAIA,EAAK,MAAQ,EACtBJ,EAAQ,IACV,EACAA,EAAQ,GAAKlN,EAAO,OAClBuN,EAAG,EAAI1O,EAAS,MAAQ,EACxB0O,EAAG,EAAID,EAAK,MAAQ,EACpBJ,EAAQ,EACV,EACAA,EAAQ,MACNlN,EAAO,OAAOkN,EAAQ,MAAO,KAAK,IAAIA,EAAQ,GAAKA,EAAQ,IAAI,CAAC,EAChE/O,EAAK,aACT,MACE+O,EAAQ,KAAOlN,EAAO,OAAOnB,EAAS,OAAQqO,EAAQ,IAAI,EAC1DA,EAAQ,GAAKlN,EAAO,OAAOnB,EAAS,MAAOqO,EAAQ,EAAE,EACrDA,EAAQ,MAAQlN,EAAO,OAAOkN,EAAQ,MAAOrO,EAAS,KAAK,EAAIV,EAAK,aAExE,CAAC,EAGP,CACA,OAAAC,EAAO,YAAc,CAAC,EACtBiJ,EAAI,MAAM,oBAAqB2F,CAAK,EAC7BA,CACT,EA9G4B,uBAgHrBQ,GAAQ,CACb,OAAApP,EACA,WAAA2H,GACA,gBAAAE,GACA,QAAAlH,GACA,KAAAgJ,EACF,EClgEO,IAAM0F,GAA6B,CACxC,OAAAC,GACA,IAAI,IAAK,CACP,OAAO,IAAIC,EACb,EACA,SAAAC,GACA,OAAAC,GACA,KAAMC,EAACC,GAAuB,CACvBA,EAAI,WACPA,EAAI,SAAW,CAAC,GAEdA,EAAI,OACNA,EAAI,SAAS,KAAOA,EAAI,KACxBC,GAAU,CAAE,SAAU,CAAE,KAAMD,EAAI,IAAK,CAAE,CAAC,EAE9C,EARM,OASR", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "$VZ", "$V_", "$V$", "$V01", "$V11", "$V21", "$V31", "$V41", "$V51", "$V61", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "sequenceDiagram_default", "parser", "LINETYPE", "ARROWTYPE", "PLACEMENT", "PARTICIPANT_TYPE", "SequenceDB", "ImperativeState", "setAccTitle", "setAccDescription", "setDiagramTitle", "getAccTitle", "getAccDescription", "getDiagramTitle", "getConfig", "__name", "data", "id", "name", "description", "type", "metadata", "assignedBox", "doc", "yamlData", "load", "JSON_SCHEMA", "old", "prevActorInRecords", "part", "i", "count", "idFrom", "idTo", "message", "answer", "messageType", "activate", "centralConnection", "error", "b", "wrapSetting", "text", "wrap", "clear", "str", "trimmedStr", "cleanedText", "log", "match", "color", "title", "style", "sanitizeText", "actor", "placement", "note", "actors", "actorId", "sanitizedText", "links", "e", "sep", "label", "link", "key", "properties", "elem", "details", "param", "item", "getStyles", "__name", "options", "styles_default", "import_sanitize_url", "ACTOR_TYPE_WIDTH", "TOP_ACTOR_CLASS", "BOTTOM_ACTOR_CLASS", "ACTOR_BOX_CLASS", "ACTOR_MAN_FIGURE_CLASS", "drawRect", "__name", "elem", "rectData", "drawPopup", "actor", "minMenuWidth", "textAttrs", "forceMenus", "links", "actorCnt", "displayValue", "g", "actorClass", "menuWidth", "rectElem", "linkY", "key", "linkElem", "sanitizedLink", "_drawMenuItemTextCandidateFunc", "popupMenuToggle", "popId", "drawKatex", "textData", "msgModel", "textElem", "linesSanitized", "renderKatexSanitized", "getConfig", "dim", "rectDim", "startx", "stopx", "starty", "temp", "drawText", "prevTextHeight", "textHeight", "lines", "common_default", "_textFontSize", "_textFontSizePx", "parseFontSize", "textElems", "dy", "yfunc", "i", "line", "text", "ZERO_WIDTH_SPACE", "span", "drawLabel", "txtObject", "genPoints", "x", "y", "width", "height", "cut", "polygon", "fixLifeLineHeights", "diagram", "actors", "actorKeys", "conf", "actorKey", "actorDOM", "drawActorTypeParticipant", "isFooter", "actorY", "center", "centerY", "boxplusLineGroup", "rect", "getNoteRect", "cssclass", "iconSrc", "drawEmbeddedImage", "drawImage", "_drawTextCandidateFunc", "hasKatex", "bounds", "drawActorTypeCollections", "offset", "shadowRect", "drawActorTypeQueue", "ry", "rx", "cylinderGroup", "cylinderArc", "iconX", "iconY", "lastPath", "drawActorTypeControl", "actElem", "cssClass", "cx", "cy", "r", "drawActorTypeEntity", "drawActorTypeDatabase", "w", "h", "d", "drawActorTypeBoundary", "radius", "drawActorTypeActor", "circle", "drawActor", "drawBox", "box", "drawBackgroundRect", "anchorElement", "drawActivation", "verticalPos", "actorActivations", "drawLoop", "loopModel", "labelText", "boxMargin", "boxTextMargin", "labelBoxHeight", "labelBoxWidth", "fontFamily", "fontSize", "fontWeight", "drawLoopLine", "stopy", "item", "txt", "getTextObj", "idx", "sectionHeight", "te", "acc", "curr", "insertDatabaseIcon", "insertComputerIcon", "insertClockIcon", "insertArrowHead", "insertArrowFilledHead", "insertSequenceNumber", "insertArrowCrossHead", "byText", "content", "_setTextAttrs", "byTspan", "actorFontSize", "actorFontFamily", "actorFontWeight", "_actorFontSize", "_actorFontSizePx", "byFo", "s", "byKatex", "calculateMathMLDimensions", "toText", "fromTextAttrsDict", "insertSolidTopArrowHead", "insertSolidBottomArrowHead", "insertStickTopArrowHead", "insertStickBottomArrowHead", "svgDraw_default", "conf", "bounds", "__name", "actor", "it", "acc", "h", "boxModel", "actorModel", "loopModel", "msgModel", "noteModel", "setConf", "getConfig", "obj", "key", "val", "fun", "startx", "starty", "stopx", "stopy", "_self", "cnt", "updateFn", "type", "item", "n", "_startx", "common_default", "_stopx", "_starty", "_stopy", "message", "diagram", "actors", "actorRect", "stackedSize", "actorActivations", "x", "svgDraw_default", "lastActorActivationIdx", "activation", "title", "fill", "loop", "bump", "drawNote", "elem", "rect", "getNoteRect", "g", "rectElem", "textObj", "getTextObj", "textElem", "hasKatex", "drawKatex", "drawText", "textHeight", "te", "curr", "drawCentralConnection", "msg", "diagObj", "lineStartY", "fromActor", "toActor", "isAutoNumberOn", "fromCenter", "toCenter", "isLeftToRight", "isReverse", "isReverseArrowType", "CENTRAL_CONNECTION_CIRCLE_OFFSET", "getCircleOffset", "baseOffset", "drawCircle", "cx", "CENTRAL_CONNECTION", "CENTRAL_CONNECTION_REVERSE", "CENTRAL_CONNECTION_DUAL", "messageFont", "cnf", "noteFont", "actorFont", "boundMessage", "_diagram", "lines", "isKatexMsg", "textDims", "calculateMathMLDimensions", "utils_default", "lineHeight", "totalOffset", "textWidth", "dx", "drawMessage", "sequenceIndex", "sequenceVisible", "line", "isBidirectional", "isBidirectionalArrowType", "lineStartX", "hasCentralConnection", "url", "getUrl", "SEQUENCE_NUMBER_RADIUS", "hasCentralConn", "lineStopX", "autonumberX", "isSelfMessage", "addActorRenderingData", "createdActors", "actorKeys", "verticalPos", "messages", "isFooter", "prevWidth", "prevMargin", "prevBox", "maxHeight", "actorKey", "box", "drawActors", "height", "drawActorsPopup", "doc", "maxWidth", "minMenuWidth", "getRequiredPopupWidth", "menuDimensions", "assignWithDepth_default", "activationBounds", "actorObj", "activations", "left", "right", "adjustLoopHeightForWrap", "loopWidths", "preMargin", "postMargin", "addLoopFn", "heightAdjust", "loopWidth", "textConf", "log", "adjustCreatedDestroyedData", "index", "destroyedActors", "receiverAdjustment", "adjustment", "senderAdjustment", "actorArray", "PARTICIPANT_TYPE", "ACTOR_TYPE_WIDTH", "draw", "_text", "id", "_version", "securityLevel", "sequence", "sandboxElement", "select_default", "root", "boxes", "hasBoxes", "hasBoxTitles", "maxMessageWidthPerActor", "getMaxMessageWidthPerActor", "calculateActorMargins", "newActors", "calculateLoopBounds", "activeEnd", "activationData", "sequenceIndexStep", "messagesToDraw", "backgrounds", "e", "fixLifeLineHeights", "boxPadding", "requiredBoxSize", "boxHeight", "boxWidth", "width", "configureSvgSize", "extraVertForTitle", "isNote", "isMessage", "textFont", "wrappedMessage", "messageWidth", "requiredPopupWidth", "labelWidth", "actorToMessageWidth", "prop", "actDims", "nextActor", "actorWidth", "maxBoxHeight", "totalWidth", "total", "aKey", "standardBoxPadding", "boxMsgDimensions", "minWidth", "missing", "buildNoteModel", "shouldWrap", "textDimensions", "CENTRAL_CONNECTION_BASE_OFFSET", "CENTRAL_CONNECTION_BIDIRECTIONAL_OFFSET", "calculateCentralConnectionOffset", "isArrowToRight", "BIDIRECTIONAL_SOLID", "BIDIRECTIONAL_DOTTED", "offset", "SOLID_ARROW_TOP_REVERSE", "SOLID_ARROW_TOP_REVERSE_DOTTED", "SOLID_ARROW_BOTTOM_REVERSE", "SOLID_ARROW_BOTTOM_REVERSE_DOTTED", "STICK_ARROW_TOP_REVERSE", "STICK_ARROW_TOP_REVERSE_DOTTED", "STICK_ARROW_BOTTOM_REVERSE", "STICK_ARROW_BOTTOM_REVERSE_DOTTED", "buildMessageModel", "fromLeft", "fromRight", "toLeft", "toRight", "isArrowToActivation", "adjustValue", "value", "allBounds", "boundedWidth", "msgDims", "_maxWidthPerActor", "loops", "stack", "current", "toAdd", "a", "stk", "from", "to", "sequenceRenderer_default", "diagram", "sequenceDiagram_default", "SequenceDB", "sequenceRenderer_default", "styles_default", "__name", "cnf", "setConfig"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-VS2MUI6T.mjs b/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-VS2MUI6T.mjs new file mode 100644 index 0000000..386204e --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-VS2MUI6T.mjs @@ -0,0 +1,162 @@ +import{a as tr}from"./chunk-T5OCTHI4.mjs";import{a as $e,b as je}from"./chunk-7FYTHRHK.mjs";import{a as Je,b as Ze,d as Kt,e as Ft,f as lt,g as Pt}from"./chunk-LII3EMHJ.mjs";import{c as Qe,n as ae,p as X}from"./chunk-QA3QBVWF.mjs";import{a as xr}from"./chunk-KNLZD3CH.mjs";import{$ as Xe,A as St,B as We,D as Q,E as mt,F as re,G as k,O as Ke,S as Fe,T as se,U as qe,V as He,W as ze,X as Ue,Y as Ge,_ as $,a as Ye,t as wt}from"./chunk-67TQ5CYL.mjs";import{b as j,h as kt}from"./chunk-7W6UQGC5.mjs";import{a as x,d as gr}from"./chunk-AQ6EADP3.mjs";var ne=(function(){var e=x(function(ut,w,C,P){for(C=C||{},P=ut.length;P--;C[ut[P]]=w);return C},"o"),t=[1,2],s=[1,3],r=[1,4],n=[2,4],i=[1,9],a=[1,11],l=[1,12],E=[1,14],h=[1,15],c=[1,17],_=[1,18],u=[1,19],y=[1,25],T=[1,26],f=[1,27],g=[1,28],b=[1,29],R=[1,30],O=[1,31],A=[1,32],N=[1,33],S=[1,34],V=[1,35],v=[1,36],H=[1,37],U=[1,38],G=[1,39],J=[1,40],et=[1,42],z=[1,43],at=[1,44],rt=[1,45],nt=[1,46],Y=[1,47],M=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],Bt=[1,74],L=[1,80],D=[1,81],dt=[1,82],st=[1,83],W=[1,84],he=[1,85],pe=[1,86],Te=[1,87],Ee=[1,88],ue=[1,89],fe=[1,90],ge=[1,91],xe=[1,92],_e=[1,93],be=[1,94],me=[1,95],Ie=[1,96],ye=[1,97],Re=[1,98],Oe=[1,99],Le=[1,100],Ne=[1,101],Ae=[1,102],we=[1,103],Se=[1,104],ke=[1,105],Pe=[2,78],Nt=[4,5,17,51,53,54],Vt=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],De=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],Gt=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],Ce=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],Xt=[5,52],F=[70,71,72,73],ot=[1,151],Jt={trace:x(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,INVALID:10,box_section:11,box_line:12,participant_statement:13,create:14,box:15,restOfLine:16,end:17,signal:18,autonumber:19,NUM:20,off:21,activate:22,actor:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,legacy_title:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,loop:37,rect:38,opt:39,alt:40,else_sections:41,par:42,par_sections:43,par_over:44,critical:45,option_sections:46,break:47,option:48,and:49,else:50,participant:51,AS:52,participant_actor:53,destroy:54,actor_with_config:55,note:56,placement:57,text2:58,over:59,actor_pair:60,links:61,link:62,properties:63,details:64,spaceList:65,",":66,left_of:67,right_of:68,signaltype:69,"+":70,"-":71,"()":72,ACTOR:73,config_object:74,CONFIG_START:75,CONFIG_CONTENT:76,CONFIG_END:77,SOLID_OPEN_ARROW:78,DOTTED_OPEN_ARROW:79,SOLID_ARROW:80,SOLID_ARROW_TOP:81,SOLID_ARROW_BOTTOM:82,STICK_ARROW_TOP:83,STICK_ARROW_BOTTOM:84,SOLID_ARROW_TOP_DOTTED:85,SOLID_ARROW_BOTTOM_DOTTED:86,STICK_ARROW_TOP_DOTTED:87,STICK_ARROW_BOTTOM_DOTTED:88,SOLID_ARROW_TOP_REVERSE:89,SOLID_ARROW_BOTTOM_REVERSE:90,STICK_ARROW_TOP_REVERSE:91,STICK_ARROW_BOTTOM_REVERSE:92,SOLID_ARROW_TOP_REVERSE_DOTTED:93,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:94,STICK_ARROW_TOP_REVERSE_DOTTED:95,STICK_ARROW_BOTTOM_REVERSE_DOTTED:96,BIDIRECTIONAL_SOLID_ARROW:97,DOTTED_ARROW:98,BIDIRECTIONAL_DOTTED_ARROW:99,SOLID_CROSS:100,DOTTED_CROSS:101,SOLID_POINT:102,DOTTED_POINT:103,TXT:104,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",10:"INVALID",14:"create",15:"box",16:"restOfLine",17:"end",19:"autonumber",20:"NUM",21:"off",22:"activate",24:"deactivate",30:"title",31:"legacy_title",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"loop",38:"rect",39:"opt",40:"alt",42:"par",44:"par_over",45:"critical",47:"break",48:"option",49:"and",50:"else",51:"participant",52:"AS",53:"participant_actor",54:"destroy",56:"note",59:"over",61:"links",62:"link",63:"properties",64:"details",66:",",67:"left_of",68:"right_of",70:"+",71:"-",72:"()",73:"ACTOR",75:"CONFIG_START",76:"CONFIG_CONTENT",77:"CONFIG_END",78:"SOLID_OPEN_ARROW",79:"DOTTED_OPEN_ARROW",80:"SOLID_ARROW",81:"SOLID_ARROW_TOP",82:"SOLID_ARROW_BOTTOM",83:"STICK_ARROW_TOP",84:"STICK_ARROW_BOTTOM",85:"SOLID_ARROW_TOP_DOTTED",86:"SOLID_ARROW_BOTTOM_DOTTED",87:"STICK_ARROW_TOP_DOTTED",88:"STICK_ARROW_BOTTOM_DOTTED",89:"SOLID_ARROW_TOP_REVERSE",90:"SOLID_ARROW_BOTTOM_REVERSE",91:"STICK_ARROW_TOP_REVERSE",92:"STICK_ARROW_BOTTOM_REVERSE",93:"SOLID_ARROW_TOP_REVERSE_DOTTED",94:"SOLID_ARROW_BOTTOM_REVERSE_DOTTED",95:"STICK_ARROW_TOP_REVERSE_DOTTED",96:"STICK_ARROW_BOTTOM_REVERSE_DOTTED",97:"BIDIRECTIONAL_SOLID_ARROW",98:"DOTTED_ARROW",99:"BIDIRECTIONAL_DOTTED_ARROW",100:"SOLID_CROSS",101:"DOTTED_CROSS",102:"SOLID_POINT",103:"DOTTED_POINT",104:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],performAction:x(function(w,C,P,m,q,o,At){var p=o.length-1;switch(q){case 3:return m.apply(o[p]),o[p];break;case 4:case 10:this.$=[];break;case 5:case 11:o[p-1].push(o[p]),this.$=o[p-1];break;case 6:case 7:case 12:case 13:this.$=o[p];break;case 8:case 9:case 14:this.$=[];break;case 16:o[p].type="createParticipant",this.$=o[p];break;case 17:o[p-1].unshift({type:"boxStart",boxData:m.parseBoxData(o[p-2])}),o[p-1].push({type:"boxEnd",boxText:o[p-2]}),this.$=o[p-1];break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(o[p-2]),sequenceIndexStep:Number(o[p-1]),sequenceVisible:!0,signalType:m.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(o[p-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:m.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:m.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:m.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"activeStart",signalType:m.LINETYPE.ACTIVE_START,actor:o[p-1].actor};break;case 24:this.$={type:"activeEnd",signalType:m.LINETYPE.ACTIVE_END,actor:o[p-1].actor};break;case 30:m.setDiagramTitle(o[p].substring(6)),this.$=o[p].substring(6);break;case 31:m.setDiagramTitle(o[p].substring(7)),this.$=o[p].substring(7);break;case 32:this.$=o[p].trim(),m.setAccTitle(this.$);break;case 33:case 34:this.$=o[p].trim(),m.setAccDescription(this.$);break;case 35:o[p-1].unshift({type:"loopStart",loopText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.LOOP_START}),o[p-1].push({type:"loopEnd",loopText:o[p-2],signalType:m.LINETYPE.LOOP_END}),this.$=o[p-1];break;case 36:o[p-1].unshift({type:"rectStart",color:m.parseMessage(o[p-2]),signalType:m.LINETYPE.RECT_START}),o[p-1].push({type:"rectEnd",color:m.parseMessage(o[p-2]),signalType:m.LINETYPE.RECT_END}),this.$=o[p-1];break;case 37:o[p-1].unshift({type:"optStart",optText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.OPT_START}),o[p-1].push({type:"optEnd",optText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.OPT_END}),this.$=o[p-1];break;case 38:o[p-1].unshift({type:"altStart",altText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.ALT_START}),o[p-1].push({type:"altEnd",signalType:m.LINETYPE.ALT_END}),this.$=o[p-1];break;case 39:o[p-1].unshift({type:"parStart",parText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.PAR_START}),o[p-1].push({type:"parEnd",signalType:m.LINETYPE.PAR_END}),this.$=o[p-1];break;case 40:o[p-1].unshift({type:"parStart",parText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.PAR_OVER_START}),o[p-1].push({type:"parEnd",signalType:m.LINETYPE.PAR_END}),this.$=o[p-1];break;case 41:o[p-1].unshift({type:"criticalStart",criticalText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.CRITICAL_START}),o[p-1].push({type:"criticalEnd",signalType:m.LINETYPE.CRITICAL_END}),this.$=o[p-1];break;case 42:o[p-1].unshift({type:"breakStart",breakText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.BREAK_START}),o[p-1].push({type:"breakEnd",optText:m.parseMessage(o[p-2]),signalType:m.LINETYPE.BREAK_END}),this.$=o[p-1];break;case 44:this.$=o[p-3].concat([{type:"option",optionText:m.parseMessage(o[p-1]),signalType:m.LINETYPE.CRITICAL_OPTION},o[p]]);break;case 46:this.$=o[p-3].concat([{type:"and",parText:m.parseMessage(o[p-1]),signalType:m.LINETYPE.PAR_AND},o[p]]);break;case 48:this.$=o[p-3].concat([{type:"else",altText:m.parseMessage(o[p-1]),signalType:m.LINETYPE.ALT_ELSE},o[p]]);break;case 49:o[p-3].draw="participant",o[p-3].type="addParticipant",o[p-3].description=m.parseMessage(o[p-1]),this.$=o[p-3];break;case 50:o[p-1].draw="participant",o[p-1].type="addParticipant",this.$=o[p-1];break;case 51:o[p-3].draw="actor",o[p-3].type="addParticipant",o[p-3].description=m.parseMessage(o[p-1]),this.$=o[p-3];break;case 52:case 57:o[p-1].draw="actor",o[p-1].type="addParticipant",this.$=o[p-1];break;case 53:o[p-1].type="destroyParticipant",this.$=o[p-1];break;case 54:o[p-3].draw="participant",o[p-3].type="addParticipant",o[p-3].description=m.parseMessage(o[p-1]),this.$=o[p-3];break;case 55:o[p-1].draw="participant",o[p-1].type="addParticipant",this.$=o[p-1];break;case 56:o[p-3].draw="actor",o[p-3].type="addParticipant",o[p-3].description=m.parseMessage(o[p-1]),this.$=o[p-3];break;case 58:this.$=[o[p-1],{type:"addNote",placement:o[p-2],actor:o[p-1].actor,text:o[p]}];break;case 59:o[p-2]=[].concat(o[p-1],o[p-1]).slice(0,2),o[p-2][0]=o[p-2][0].actor,o[p-2][1]=o[p-2][1].actor,this.$=[o[p-1],{type:"addNote",placement:m.PLACEMENT.OVER,actor:o[p-2].slice(0,2),text:o[p]}];break;case 60:this.$=[o[p-1],{type:"addLinks",actor:o[p-1].actor,text:o[p]}];break;case 61:this.$=[o[p-1],{type:"addALink",actor:o[p-1].actor,text:o[p]}];break;case 62:this.$=[o[p-1],{type:"addProperties",actor:o[p-1].actor,text:o[p]}];break;case 63:this.$=[o[p-1],{type:"addDetails",actor:o[p-1].actor,text:o[p]}];break;case 66:this.$=[o[p-2],o[p]];break;case 67:this.$=o[p];break;case 68:this.$=m.PLACEMENT.LEFTOF;break;case 69:this.$=m.PLACEMENT.RIGHTOF;break;case 70:this.$=[o[p-4],o[p-1],{type:"addMessage",from:o[p-4].actor,to:o[p-1].actor,signalType:o[p-3],msg:o[p],activate:!0},{type:"activeStart",signalType:m.LINETYPE.ACTIVE_START,actor:o[p-1].actor}];break;case 71:this.$=[o[p-4],o[p-1],{type:"addMessage",from:o[p-4].actor,to:o[p-1].actor,signalType:o[p-3],msg:o[p]},{type:"activeEnd",signalType:m.LINETYPE.ACTIVE_END,actor:o[p-4].actor}];break;case 72:this.$=[o[p-4],o[p-1],{type:"addMessage",from:o[p-4].actor,to:o[p-1].actor,signalType:o[p-3],msg:o[p],activate:!0,centralConnection:m.LINETYPE.CENTRAL_CONNECTION},{type:"centralConnection",signalType:m.LINETYPE.CENTRAL_CONNECTION,actor:o[p-1].actor}];break;case 73:this.$=[o[p-4],o[p-1],{type:"addMessage",from:o[p-4].actor,to:o[p-1].actor,signalType:o[p-2],msg:o[p],activate:!1,centralConnection:m.LINETYPE.CENTRAL_CONNECTION_REVERSE},{type:"centralConnectionReverse",signalType:m.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:o[p-4].actor}];break;case 74:this.$=[o[p-5],o[p-1],{type:"addMessage",from:o[p-5].actor,to:o[p-1].actor,signalType:o[p-3],msg:o[p],activate:!0,centralConnection:m.LINETYPE.CENTRAL_CONNECTION_DUAL},{type:"centralConnection",signalType:m.LINETYPE.CENTRAL_CONNECTION,actor:o[p-1].actor},{type:"centralConnectionReverse",signalType:m.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:o[p-5].actor}];break;case 75:this.$=[o[p-3],o[p-1],{type:"addMessage",from:o[p-3].actor,to:o[p-1].actor,signalType:o[p-2],msg:o[p]}];break;case 76:this.$={type:"addParticipant",actor:o[p-1],config:o[p]};break;case 77:this.$=o[p-1].trim();break;case 78:this.$={type:"addParticipant",actor:o[p]};break;case 79:this.$=m.LINETYPE.SOLID_OPEN;break;case 80:this.$=m.LINETYPE.DOTTED_OPEN;break;case 81:this.$=m.LINETYPE.SOLID;break;case 82:this.$=m.LINETYPE.SOLID_TOP;break;case 83:this.$=m.LINETYPE.SOLID_BOTTOM;break;case 84:this.$=m.LINETYPE.STICK_TOP;break;case 85:this.$=m.LINETYPE.STICK_BOTTOM;break;case 86:this.$=m.LINETYPE.SOLID_TOP_DOTTED;break;case 87:this.$=m.LINETYPE.SOLID_BOTTOM_DOTTED;break;case 88:this.$=m.LINETYPE.STICK_TOP_DOTTED;break;case 89:this.$=m.LINETYPE.STICK_BOTTOM_DOTTED;break;case 90:this.$=m.LINETYPE.SOLID_ARROW_TOP_REVERSE;break;case 91:this.$=m.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE;break;case 92:this.$=m.LINETYPE.STICK_ARROW_TOP_REVERSE;break;case 93:this.$=m.LINETYPE.STICK_ARROW_BOTTOM_REVERSE;break;case 94:this.$=m.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED;break;case 95:this.$=m.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED;break;case 96:this.$=m.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED;break;case 97:this.$=m.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;break;case 98:this.$=m.LINETYPE.BIDIRECTIONAL_SOLID;break;case 99:this.$=m.LINETYPE.DOTTED;break;case 100:this.$=m.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 101:this.$=m.LINETYPE.SOLID_CROSS;break;case 102:this.$=m.LINETYPE.DOTTED_CROSS;break;case 103:this.$=m.LINETYPE.SOLID_POINT;break;case 104:this.$=m.LINETYPE.DOTTED_POINT;break;case 105:this.$=m.parseMessage(o[p].trim().substring(1));break}},"anonymous"),table:[{3:1,4:t,5:s,6:r},{1:[3]},{3:5,4:t,5:s,6:r},{3:6,4:t,5:s,6:r},e([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:a,8:8,9:10,10:l,13:13,14:E,15:h,18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},e(M,[2,5]),{9:48,13:13,14:E,15:h,18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},e(M,[2,7]),e(M,[2,8]),e(M,[2,9]),e(M,[2,15]),{13:49,51:U,53:G,54:J},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:Y},{23:56,73:Y},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},e(M,[2,30]),e(M,[2,31]),{33:[1,62]},{35:[1,63]},e(M,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:Bt},{23:75,55:76,73:Bt},{23:77,73:Y},{69:78,72:[1,79],78:L,79:D,80:dt,81:st,82:W,83:he,84:pe,85:Te,86:Ee,87:ue,88:fe,89:ge,90:xe,91:_e,92:be,93:me,94:Ie,95:ye,96:Re,97:Oe,98:Le,99:Ne,100:Ae,101:we,102:Se,103:ke},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:Y},{23:111,73:Y},{23:112,73:Y},{23:113,73:Y},e([5,66,72,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,103,104],Pe),e(M,[2,6]),e(M,[2,16]),e(Nt,[2,10],{11:114}),e(M,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},e(M,[2,22]),{5:[1,118]},{5:[1,119]},e(M,[2,25]),e(M,[2,26]),e(M,[2,27]),e(M,[2,28]),e(M,[2,29]),e(M,[2,32]),e(M,[2,33]),e(Vt,n,{7:120}),e(Vt,n,{7:121}),e(Vt,n,{7:122}),e(De,n,{41:123,7:124}),e(Gt,n,{43:125,7:126}),e(Gt,n,{7:126,43:127}),e(Ce,n,{46:128,7:129}),e(Vt,n,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},e(Xt,Pe,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:Y},{69:146,78:L,79:D,80:dt,81:st,82:W,83:he,84:pe,85:Te,86:Ee,87:ue,88:fe,89:ge,90:xe,91:_e,92:be,93:me,94:Ie,95:ye,96:Re,97:Oe,98:Le,99:Ne,100:Ae,101:we,102:Se,103:ke},e(F,[2,79]),e(F,[2,80]),e(F,[2,81]),e(F,[2,82]),e(F,[2,83]),e(F,[2,84]),e(F,[2,85]),e(F,[2,86]),e(F,[2,87]),e(F,[2,88]),e(F,[2,89]),e(F,[2,90]),e(F,[2,91]),e(F,[2,92]),e(F,[2,93]),e(F,[2,94]),e(F,[2,95]),e(F,[2,96]),e(F,[2,97]),e(F,[2,98]),e(F,[2,99]),e(F,[2,100]),e(F,[2,101]),e(F,[2,102]),e(F,[2,103]),e(F,[2,104]),{23:147,73:Y},{23:149,60:148,73:Y},{73:[2,68]},{73:[2,69]},{58:150,104:ot},{58:152,104:ot},{58:153,104:ot},{58:154,104:ot},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:U,53:G,54:J},{5:[1,160]},e(M,[2,20]),e(M,[2,21]),e(M,[2,23]),e(M,[2,24]),{4:i,5:a,8:8,9:10,10:l,13:13,14:E,15:h,17:[1,161],18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},{4:i,5:a,8:8,9:10,10:l,13:13,14:E,15:h,17:[1,162],18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},{4:i,5:a,8:8,9:10,10:l,13:13,14:E,15:h,17:[1,163],18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},{17:[1,164]},{4:i,5:a,8:8,9:10,10:l,13:13,14:E,15:h,17:[2,47],18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,50:[1,165],51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},{17:[1,166]},{4:i,5:a,8:8,9:10,10:l,13:13,14:E,15:h,17:[2,45],18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,49:[1,167],51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},{17:[1,168]},{17:[1,169]},{4:i,5:a,8:8,9:10,10:l,13:13,14:E,15:h,17:[2,43],18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,48:[1,170],51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},{4:i,5:a,8:8,9:10,10:l,13:13,14:E,15:h,17:[1,171],18:16,19:c,22:_,23:41,24:u,25:20,26:21,27:22,28:23,29:24,30:y,31:T,32:f,34:g,36:b,37:R,38:O,39:A,40:N,42:S,44:V,45:v,47:H,51:U,53:G,54:J,56:et,61:z,62:at,63:rt,64:nt,73:Y},{16:[1,172]},e(M,[2,50]),{16:[1,173]},e(M,[2,55]),e(Xt,[2,76]),{76:[1,174]},{16:[1,175]},e(M,[2,52]),{16:[1,176]},e(M,[2,57]),e(M,[2,53]),{23:177,73:Y},{23:178,73:Y},{23:179,73:Y},{58:180,104:ot},{23:181,72:[1,182],73:Y},{58:183,104:ot},{58:184,104:ot},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},e(M,[2,17]),e(Nt,[2,11]),{13:186,51:U,53:G,54:J},e(Nt,[2,13]),e(Nt,[2,14]),e(M,[2,19]),e(M,[2,35]),e(M,[2,36]),e(M,[2,37]),e(M,[2,38]),{16:[1,187]},e(M,[2,39]),{16:[1,188]},e(M,[2,40]),e(M,[2,41]),{16:[1,189]},e(M,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:ot},{58:196,104:ot},{58:197,104:ot},{5:[2,75]},{58:198,104:ot},{23:199,73:Y},{5:[2,58]},{5:[2,59]},{23:200,73:Y},e(Nt,[2,12]),e(De,n,{7:124,41:201}),e(Gt,n,{7:126,43:202}),e(Ce,n,{7:129,46:203}),e(M,[2,49]),e(M,[2,54]),e(Xt,[2,77]),e(M,[2,51]),e(M,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:ot},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],defaultActions:{5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},parseError:x(function(w,C){if(C.recoverable)this.trace(w);else{var P=new Error(w);throw P.hash=C,P}},"parseError"),parse:x(function(w){var C=this,P=[0],m=[],q=[null],o=[],At=this.table,p="",vt=0,Me=0,Be=0,Tr=2,Ve=1,Er=o.slice.call(arguments,1),Z=Object.create(this.lexer),_t={yy:{}};for(var Qt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Qt)&&(_t.yy[Qt]=this.yy[Qt]);Z.setInput(w,_t.yy),_t.yy.lexer=Z,_t.yy.parser=this,typeof Z.yylloc>"u"&&(Z.yylloc={});var $t=Z.yylloc;o.push($t);var ur=Z.options&&Z.options.ranges;typeof _t.yy.parseError=="function"?this.parseError=_t.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Es(it){P.length=P.length-2*it,q.length=q.length-it,o.length=o.length-it}x(Es,"popStack");function fr(){var it;return it=m.pop()||Z.lex()||Ve,typeof it!="number"&&(it instanceof Array&&(m=it,it=m.pop()),it=C.symbols_[it]||it),it}x(fr,"lex");for(var tt,jt,bt,ct,us,te,Ot={},Yt,pt,ve,Wt;;){if(bt=P[P.length-1],this.defaultActions[bt]?ct=this.defaultActions[bt]:((tt===null||typeof tt>"u")&&(tt=fr()),ct=At[bt]&&At[bt][tt]),typeof ct>"u"||!ct.length||!ct[0]){var ee="";Wt=[];for(Yt in At[bt])this.terminals_[Yt]&&Yt>Tr&&Wt.push("'"+this.terminals_[Yt]+"'");Z.showPosition?ee="Parse error on line "+(vt+1)+`: +`+Z.showPosition()+` +Expecting `+Wt.join(", ")+", got '"+(this.terminals_[tt]||tt)+"'":ee="Parse error on line "+(vt+1)+": Unexpected "+(tt==Ve?"end of input":"'"+(this.terminals_[tt]||tt)+"'"),this.parseError(ee,{text:Z.match,token:this.terminals_[tt]||tt,line:Z.yylineno,loc:$t,expected:Wt})}if(ct[0]instanceof Array&&ct.length>1)throw new Error("Parse Error: multiple actions possible at state: "+bt+", token: "+tt);switch(ct[0]){case 1:P.push(tt),q.push(Z.yytext),o.push(Z.yylloc),P.push(ct[1]),tt=null,jt?(tt=jt,jt=null):(Me=Z.yyleng,p=Z.yytext,vt=Z.yylineno,$t=Z.yylloc,Be>0&&Be--);break;case 2:if(pt=this.productions_[ct[1]][1],Ot.$=q[q.length-pt],Ot._$={first_line:o[o.length-(pt||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(pt||1)].first_column,last_column:o[o.length-1].last_column},ur&&(Ot._$.range=[o[o.length-(pt||1)].range[0],o[o.length-1].range[1]]),te=this.performAction.apply(Ot,[p,Me,vt,_t.yy,ct[1],q,o].concat(Er)),typeof te<"u")return te;pt&&(P=P.slice(0,-1*pt*2),q=q.slice(0,-1*pt),o=o.slice(0,-1*pt)),P.push(this.productions_[ct[1]][0]),q.push(Ot.$),o.push(Ot._$),ve=At[P[P.length-2]][P[P.length-1]],P.push(ve);break;case 3:return!0}}return!0},"parse")},pr=(function(){var ut={EOF:1,parseError:x(function(C,P){if(this.yy.parser)this.yy.parser.parseError(C,P);else throw new Error(C)},"parseError"),setInput:x(function(w,C){return this.yy=C||this.yy||{},this._input=w,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:x(function(){var w=this._input[0];this.yytext+=w,this.yyleng++,this.offset++,this.match+=w,this.matched+=w;var C=w.match(/(?:\r\n?|\n).*/g);return C?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),w},"input"),unput:x(function(w){var C=w.length,P=w.split(/(?:\r\n?|\n)/g);this._input=w+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-C),this.offset-=C;var m=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),P.length-1&&(this.yylineno-=P.length-1);var q=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:P?(P.length===m.length?this.yylloc.first_column:0)+m[m.length-P.length].length-P[0].length:this.yylloc.first_column-C},this.options.ranges&&(this.yylloc.range=[q[0],q[0]+this.yyleng-C]),this.yyleng=this.yytext.length,this},"unput"),more:x(function(){return this._more=!0,this},"more"),reject:x(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:x(function(w){this.unput(this.match.slice(w))},"less"),pastInput:x(function(){var w=this.matched.substr(0,this.matched.length-this.match.length);return(w.length>20?"...":"")+w.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:x(function(){var w=this.match;return w.length<20&&(w+=this._input.substr(0,20-w.length)),(w.substr(0,20)+(w.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:x(function(){var w=this.pastInput(),C=new Array(w.length+1).join("-");return w+this.upcomingInput()+` +`+C+"^"},"showPosition"),test_match:x(function(w,C){var P,m,q;if(this.options.backtrack_lexer&&(q={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(q.yylloc.range=this.yylloc.range.slice(0))),m=w[0].match(/(?:\r\n?|\n).*/g),m&&(this.yylineno+=m.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:m?m[m.length-1].length-m[m.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+w[0].length},this.yytext+=w[0],this.match+=w[0],this.matches=w,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(w[0].length),this.matched+=w[0],P=this.performAction.call(this,this.yy,this,C,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),P)return P;if(this._backtrack){for(var o in q)this[o]=q[o];return!1}return!1},"test_match"),next:x(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var w,C,P,m;this._more||(this.yytext="",this.match="");for(var q=this._currentRules(),o=0;oC[0].length)){if(C=P,m=o,this.options.backtrack_lexer){if(w=this.test_match(P,q[o]),w!==!1)return w;if(this._backtrack){C=!1;continue}else return!1}else if(!this.options.flex)break}return C?(w=this.test_match(C,q[m]),w!==!1?w:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:x(function(){var C=this.next();return C||this.lex()},"lex"),begin:x(function(C){this.conditionStack.push(C)},"begin"),popState:x(function(){var C=this.conditionStack.length-1;return C>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:x(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:x(function(C){return C=this.conditionStack.length-1-Math.abs(C||0),C>=0?this.conditionStack[C]:"INITIAL"},"topState"),pushState:x(function(C){this.begin(C)},"pushState"),stateStackSize:x(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:x(function(C,P,m,q){var o=q;switch(m){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 20;case 7:return this.begin("CONFIG"),75;break;case 8:return 76;case 9:return this.popState(),this.begin("ALIAS"),77;break;case 10:return this.popState(),this.popState(),77;break;case 11:return P.yytext=P.yytext.trim(),73;break;case 12:return P.yytext=P.yytext.trim(),this.begin("ALIAS"),73;break;case 13:return P.yytext=P.yytext.trim(),this.popState(),73;break;case 14:return this.popState(),10;break;case 15:return P.yytext=P.yytext.trim(),this.popState(),10;break;case 16:return this.begin("LINE"),15;break;case 17:return this.begin("ID"),51;break;case 18:return this.begin("ID"),53;break;case 19:return 14;case 20:return this.begin("ID"),54;break;case 21:return this.popState(),this.popState(),this.begin("LINE"),52;break;case 22:return this.popState(),this.popState(),5;break;case 23:return this.begin("LINE"),37;break;case 24:return this.begin("LINE"),38;break;case 25:return this.begin("LINE"),39;break;case 26:return this.begin("LINE"),40;break;case 27:return this.begin("LINE"),50;break;case 28:return this.begin("LINE"),42;break;case 29:return this.begin("LINE"),44;break;case 30:return this.begin("LINE"),49;break;case 31:return this.begin("LINE"),45;break;case 32:return this.begin("LINE"),48;break;case 33:return this.begin("LINE"),47;break;case 34:return this.popState(),16;break;case 35:return 17;case 36:return 67;case 37:return 68;case 38:return 61;case 39:return 62;case 40:return 63;case 41:return 64;case 42:return 59;case 43:return 56;case 44:return this.begin("ID"),22;break;case 45:return this.begin("ID"),24;break;case 46:return 30;case 47:return 31;case 48:return this.begin("acc_title"),32;break;case 49:return this.popState(),"acc_title_value";break;case 50:return this.begin("acc_descr"),34;break;case 51:return this.popState(),"acc_descr_value";break;case 52:this.begin("acc_descr_multiline");break;case 53:this.popState();break;case 54:return"acc_descr_multiline_value";case 55:return 6;case 56:return 19;case 57:return 21;case 58:return 66;case 59:return 5;case 60:return P.yytext=P.yytext.trim(),73;break;case 61:return 80;case 62:return 97;case 63:return 98;case 64:return 99;case 65:return 78;case 66:return 79;case 67:return 100;case 68:return 101;case 69:return 102;case 70:return 103;case 71:return 85;case 72:return 86;case 73:return 87;case 74:return 88;case 75:return 93;case 76:return 94;case 77:return 95;case 78:return 96;case 79:return 81;case 80:return 82;case 81:return 83;case 82:return 84;case 83:return 89;case 84:return 90;case 85:return 91;case 86:return 92;case 87:return 104;case 88:return 104;case 89:return 70;case 90:return 71;case 91:return 72;case 92:return 5;case 93:return 10}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:([0-9]+(\.[0-9]{1,2})?|\.[0-9]{1,2})(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\}(?=\s+as\s))/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^<>:\n,;@\s]+(?=\s+as\s))/i,/^(?:[^<>:\n,;@]+(?=\s*[\n;#]|$))/i,/^(?:[^<>:\n,;@]*<[^\n]*)/i,/^(?:[^\n]+)/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\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\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\/\\\+\()\+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)|-\|\\|-\\|-\/|-\/\/|-\|\/|\/\|-|\\\|-|\/\/-|\\\\-|\/\|-|--\|\\|--|\(\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?:--\|\\)/i,/^(?:--\|\/)/i,/^(?:--\\\\)/i,/^(?:--\/\/)/i,/^(?:\/\|--)/i,/^(?:\\\|--)/i,/^(?:\/\/--)/i,/^(?:\\\\--)/i,/^(?:-\|\\)/i,/^(?:-\|\/)/i,/^(?:-\\\\)/i,/^(?:-\/\/)/i,/^(?:\/\|-)/i,/^(?:\\\|-)/i,/^(?:\/\/-)/i,/^(?:\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\(\))/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[53,54],inclusive:!1},acc_descr:{rules:[51],inclusive:!1},acc_title:{rules:[49],inclusive:!1},ID:{rules:[2,3,7,11,12,13,14,15],inclusive:!1},ALIAS:{rules:[2,3,21,22],inclusive:!1},LINE:{rules:[2,3,34],inclusive:!1},CONFIG:{rules:[8,9,10],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,52,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],inclusive:!0}}};return ut})();Jt.lexer=pr;function Zt(){this.yy={}}return x(Zt,"Parser"),Zt.prototype=Jt,Jt.Parser=Zt,new Zt})();ne.parser=ne;var er=ne;var _r={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34,SOLID_TOP:41,SOLID_BOTTOM:42,STICK_TOP:43,STICK_BOTTOM:44,SOLID_ARROW_TOP_REVERSE:45,SOLID_ARROW_BOTTOM_REVERSE:46,STICK_ARROW_TOP_REVERSE:47,STICK_ARROW_BOTTOM_REVERSE:48,SOLID_TOP_DOTTED:51,SOLID_BOTTOM_DOTTED:52,STICK_TOP_DOTTED:53,STICK_BOTTOM_DOTTED:54,SOLID_ARROW_TOP_REVERSE_DOTTED:55,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:56,STICK_ARROW_TOP_REVERSE_DOTTED:57,STICK_ARROW_BOTTOM_REVERSE_DOTTED:58,CENTRAL_CONNECTION:59,CENTRAL_CONNECTION_REVERSE:60,CENTRAL_CONNECTION_DUAL:61},br={FILLED:0,OPEN:1},mr={LEFTOF:0,RIGHTOF:1,OVER:2},Dt={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},qt=class{constructor(){this.state=new tr(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=se;this.setAccDescription=He;this.setDiagramTitle=Ue;this.getAccTitle=qe;this.getAccDescription=ze;this.getDiagramTitle=Ge;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap($().wrap),this.LINETYPE=_r,this.ARROWTYPE=br,this.PLACEMENT=mr}static{x(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,s,r,n,i){let a=this.state.records.currentBox,l;if(i!==void 0){let h;i.includes(` +`)?h=i+` +`:h=`{ +`+i+` +}`,l=je(h,{schema:$e})}n=l?.type??n,l?.alias&&(!r||r.text===s)&&(r={text:l.alias,wrap:r?.wrap,type:n});let E=this.state.records.actors.get(t);if(E){if(this.state.records.currentBox&&E.box&&this.state.records.currentBox!==E.box)throw new Error(`A same participant should only be defined in one Box: ${E.name} can't be in '${E.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(a=E.box?E.box:this.state.records.currentBox,E.box=a,E&&s===E.name&&r==null)return}if(r?.text==null&&(r={text:s,type:n}),(n==null||r.text==null)&&(r={text:s,type:n}),this.state.records.actors.set(t,{box:a,name:s,description:r.text,wrap:r.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:n??"participant"}),this.state.records.prevActor){let h=this.state.records.actors.get(this.state.records.prevActor);h&&(h.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let s,r=0;if(!t)return 0;for(s=0;s>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},E}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:s,message:r?.text??"",wrap:r?.wrap??this.autoWrap(),type:n,activate:i,centralConnection:a??0}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(t===void 0)return{};t=t.trim();let s=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(s===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:s}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:$().sequence?.wrap??!1}clear(){this.state.reset(),Fe()}parseMessage(t){let s=t.trim(),{wrap:r,cleanedText:n}=this.extractWrap(s),i={text:n,wrap:r};return j.debug(`parseMessage: ${JSON.stringify(i)}`),i}parseBoxData(t){let s=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),r=s?.[1]?s[1].trim():"transparent",n=s?.[2]?s[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",r)||(r="transparent",n=t.trim());else{let l=new Option().style;l.color=r,l.color!==r&&(r="transparent",n=t.trim())}let{wrap:i,cleanedText:a}=this.extractWrap(n);return{text:a?St(a,$()):void 0,color:r,wrap:i}}addNote(t,s,r){let n={actor:t,placement:s,message:r.text,wrap:r.wrap??this.autoWrap()},i=[].concat(t,t);this.state.records.notes.push(n),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:i[0],to:i[1],message:r.text,wrap:r.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:s})}addLinks(t,s){let r=this.getActor(t);try{let n=St(s.text,$());n=n.replace(/=/g,"="),n=n.replace(/&/g,"&");let i=JSON.parse(n);this.insertLinks(r,i)}catch(n){j.error("error while parsing actor link text",n)}}addALink(t,s){let r=this.getActor(t);try{let n={},i=St(s.text,$()),a=i.indexOf("@");i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let l=i.slice(0,a-1).trim(),E=i.slice(a+1).trim();n[l]=E,this.insertLinks(r,n)}catch(n){j.error("error while parsing actor link text",n)}}insertLinks(t,s){if(t.links==null)t.links=s;else for(let r in s)t.links[r]=s[r]}addProperties(t,s){let r=this.getActor(t);try{let n=St(s.text,$()),i=JSON.parse(n);this.insertProperties(r,i)}catch(n){j.error("error while parsing actor properties text",n)}}insertProperties(t,s){if(t.properties==null)t.properties=s;else for(let r in s)t.properties[r]=s[r]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,s){let r=this.getActor(t),n=document.getElementById(s.text);try{let i=n.innerHTML,a=JSON.parse(i);a.properties&&this.insertProperties(r,a.properties),a.links&&this.insertLinks(r,a.links)}catch(i){j.error("error while parsing actor details text",i)}}getActorProperty(t,s){if(t?.properties!==void 0)return t.properties[s]}apply(t){if(Array.isArray(t))t.forEach(s=>{this.apply(s)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnection":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnectionReverse":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate,t.centralConnection);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"altStart":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":se(t.text);break;case"parStart":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break}}getConfig(){return $().sequence}};var Ir=x(e=>{let t=e.dropShadow??"none",{look:s}=$();return`.actor { + stroke: ${e.actorBorder}; + fill: ${e.actorBkg}; + stroke-width: ${e.strokeWidth??1}; + } + + rect.actor.outer-path[data-look="neo"] { + filter: ${t}; + } + + rect.note[data-look="neo"] { + stroke:${e.noteBorderColor}; + fill:${e.noteBkgColor}; + filter: ${t}; + } + + text.actor > tspan { + fill: ${e.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${e.actorLineColor}; + } + + .innerArc { + stroke-width: 1.5; + stroke-dasharray: none; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${e.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${e.signalColor}; + } + + [id$="-arrowhead"] path { + fill: ${e.signalColor}; + stroke: ${e.signalColor}; + } + + .sequenceNumber { + fill: ${e.sequenceNumberColor}; + } + + [id$="-sequencenumber"] { + fill: ${e.signalColor}; + } + + [id$="-crosshead"] path { + fill: ${e.signalColor}; + stroke: ${e.signalColor}; + } + + .messageText { + fill: ${e.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${e.labelBoxBorderColor}; + fill: ${e.labelBoxBkgColor}; + filter: ${s==="neo"?t:"none"}; + } + + .labelText, .labelText > tspan { + fill: ${e.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${e.loopTextColor}; + stroke: none; + } + + .sectionTitle, .sectionTitle > tspan { + fill: ${e.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${e.labelBoxBorderColor}; + fill: ${e.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${e.noteBorderColor}; + fill: ${e.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${e.noteTextColor}; + stroke: none; + ${e.noteFontWeight?`font-weight: ${e.noteFontWeight};`:""} + } + + .activation0 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .activation1 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .activation2 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${e.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man circle, line { + fill: ${e.actorBkg}; + stroke-width: 2px; + } + + g rect.rect { + filter: ${t}; + stroke: ${e.nodeBorder}; + } +`},"getStyles"),rr=Ir;var ie=gr(xr(),1);var ft=36,gt="actor-top",xt="actor-bottom",Ht="actor-box",It="actor-man",Tt=new Set(["redux-color","redux-dark-color"]),Ct=x(function(e,t){let s=Je(e,t);return wt().look==="neo"&&s.attr("data-look","neo"),s},"drawRect"),Rr=x(function(e,t,s,r,n){if(t.links===void 0||t.links===null||Object.keys(t.links).length===0)return{height:0,width:0};let i=t.links,a=t.actorCnt,l=t.rectData;var E="none";n&&(E="block !important");let h=e.append("g");h.attr("id","actor"+a+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",E);var c="";l.class!==void 0&&(c=" "+l.class);let _=l.width>s?l.width:s,u=h.append("rect");if(u.attr("class","actorPopupMenuPanel"+c),u.attr("x",l.x),u.attr("y",l.height),u.attr("fill",l.fill),u.attr("stroke",l.stroke),u.attr("width",_),u.attr("height",l.height),u.attr("rx",l.rx),u.attr("ry",l.ry),i!=null){var y=20;for(let g in i){var T=h.append("a"),f=(0,ie.sanitizeUrl)(i[g]);T.attr("xlink:href",f),T.attr("target","_blank"),Gr(r)(g,T,l.x+10,l.height+y,_,20,{class:"actor"},r),y+=30}}return u.attr("height",y),{height:l.height+y,width:_}},"drawPopup"),zt=x(function(e){return"var pu = document.getElementById('"+e+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),Mt=x(async function(e,t,s=null){let r=e.append("foreignObject"),n=await re(t.text,wt()),a=r.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(n).node().getBoundingClientRect();if(r.attr("height",Math.round(a.height)).attr("width",Math.round(a.width)),t.class==="noteText"){let l=e.node().firstChild;l.setAttribute("height",a.height+2*t.textMargin);let E=l.getBBox();r.attr("x",Math.round(E.x+E.width/2-a.width/2)).attr("y",Math.round(E.y+E.height/2-a.height/2))}else if(s){let{startx:l,stopx:E,starty:h}=s;if(l>E){let c=l;l=E,E=c}r.attr("x",Math.round(l+Math.abs(l-E)/2-a.width/2)),t.class==="loopText"?r.attr("y",Math.round(h)):r.attr("y",Math.round(h-a.height))}return[r]},"drawKatex"),yt=x(function(e,t){let s=0,r=0,n=t.text.split(k.lineBreakRegex),[i,a]=ae(t.fontSize),l=[],E=0,h=x(()=>t.y,"yfunc");if(t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0)switch(t.valign){case"top":case"start":h=x(()=>Math.round(t.y+t.textMargin),"yfunc");break;case"middle":case"center":h=x(()=>Math.round(t.y+(s+r+t.textMargin)/2),"yfunc");break;case"bottom":case"end":h=x(()=>Math.round(t.y+(s+r+2*t.textMargin)-t.textMargin),"yfunc");break}if(t.anchor!==void 0&&t.textMargin!==void 0&&t.width!==void 0)switch(t.anchor){case"left":case"start":t.x=Math.round(t.x+t.textMargin),t.anchor="start",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"middle":case"center":t.x=Math.round(t.x+t.width/2),t.anchor="middle",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"right":case"end":t.x=Math.round(t.x+t.width-t.textMargin),t.anchor="end",t.dominantBaseline="middle",t.alignmentBaseline="middle";break}for(let[c,_]of n.entries()){t.textMargin!==void 0&&t.textMargin===0&&i!==void 0&&(E=c*i);let u=e.append("text");u.attr("x",t.x),u.attr("y",h()),t.anchor!==void 0&&u.attr("text-anchor",t.anchor).attr("dominant-baseline",t.dominantBaseline).attr("alignment-baseline",t.alignmentBaseline),t.fontFamily!==void 0&&u.style("font-family",t.fontFamily),a!==void 0&&u.style("font-size",a),t.fontWeight!==void 0&&u.style("font-weight",t.fontWeight),t.fill!==void 0&&u.attr("fill",t.fill),t.class!==void 0&&u.attr("class",t.class),t.dy!==void 0?u.attr("dy",t.dy):E!==0&&u.attr("dy",E);let y=_||Qe;if(t.tspan){let T=u.append("tspan");T.attr("x",t.x),t.fill!==void 0&&T.attr("fill",t.fill),T.text(y)}else u.text(y);t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0&&(r+=(u._groups||u)[0][0].getBBox().height,s=r),l.push(u)}return l},"drawText"),sr=x(function(e,t){function s(n,i,a,l,E){return n+","+i+" "+(n+a)+","+i+" "+(n+a)+","+(i+l-E)+" "+(n+a-E*1.2)+","+(i+l)+" "+n+","+(i+l)}x(s,"genPoints");let r=e.append("polygon");return r.attr("points",s(t.x,t.y,t.width,t.height,7)),r.attr("class","labelBox"),t.y=t.y+t.height/2,yt(e,t),r},"drawLabel"),B=-1,oe=x((e,t,s,r)=>{e.select&&s.forEach(n=>{let i=t.get(n),a=e.select("#actor"+i.actorCnt);!r.mirrorActors&&i.stopy?a.attr("y2",i.stopy+i.height/2):r.mirrorActors&&a.attr("y2",i.stopy)})},"fixLifeLineHeights"),Or=x(function(e,t,s,r,n){let i=r?t.stopy:t.starty,a=t.x+t.width/2,l=i+t.height,{look:E,theme:h,themeVariables:c}=s,{bkgColorArray:_,borderColorArray:u}=c,y=e.append("g").lower();var T=y;r||(B++,Object.keys(t.links||{}).length&&!s.forceMenus&&T.attr("onclick",zt(`actor${B}_popup`)).attr("cursor","pointer"),T.append("line").attr("id","actor"+B).attr("x1",a).attr("y1",l).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),T=y.append("g"),t.actorCnt=B,t.links!=null&&T.attr("id","root-"+B),E==="neo"&&T.attr("data-look","neo"));let f=lt();var g="actor";t.properties?.class?g=t.properties.class:f.fill="#eaeaea",r?g+=` ${xt}`:g+=` ${gt}`,f.x=t.x,f.y=i,f.width=t.width,f.height=t.height,f.class=g,f.rx=3,f.ry=3,f.name=t.name,E==="neo"&&(f.rx=6,f.ry=6);let b=Ct(T,f),R=n.get(t.name)??0;if(Tt.has(h)&&(b.style("stroke",u[R%u.length]),b.style("fill",_[R%u.length])),E==="neo"&&b.attr("filter","url(#drop-shadow)"),t.rectData=f,t.properties?.icon){let A=t.properties.icon.trim();A.charAt(0)==="@"?Ft(T,f.x+f.width-20,f.y+10,A.substr(1)):Kt(T,f.x+f.width-20,f.y+10,A)}r||(T.attr("data-et","participant"),T.attr("data-type","participant"),T.attr("data-id",t.name)),Et(s,Q(t.description))(t.description,T,f.x,f.y,f.width,f.height,{class:`actor ${Ht}`},s);let O=t.height;if(b.node){let A=b.node().getBBox();t.height=A.height,O=A.height}return O},"drawActorTypeParticipant"),Lr=x(function(e,t,s,r,n){let i=r?t.stopy:t.starty,a=t.x+t.width/2,l=i+t.height,{look:E,theme:h,themeVariables:c}=s,{bkgColorArray:_,borderColorArray:u}=c,y=e.append("g").lower();var T=y;r||(B++,Object.keys(t.links||{}).length&&!s.forceMenus&&T.attr("onclick",zt(`actor${B}_popup`)).attr("cursor","pointer"),T.append("line").attr("id","actor"+B).attr("x1",a).attr("y1",l).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),T=y.append("g"),t.actorCnt=B,t.links!=null&&T.attr("id","root-"+B),E==="neo"&&T.attr("data-look","neo"));let f=lt();var g="actor";t.properties?.class?g=t.properties.class:f.fill="#eaeaea",r?g+=` ${xt}`:g+=` ${gt}`,f.x=t.x,f.y=i,f.width=t.width,f.height=t.height,f.class=g,f.name=t.name;let b=6,R={...f,x:f.x+-b,y:f.y+ +b,class:"actor"},O=Ct(T,f),A=Ct(T,R);t.rectData=f,E==="neo"&&T.attr("filter","url(#drop-shadow)");let N=n.get(t.name)??0;if(Tt.has(h)&&(O.style("stroke",u[N%u.length]),O.style("fill",_[N%u.length]),A.style("stroke",u[N%u.length]),A.style("fill",_[N%u.length])),t.properties?.icon){let V=t.properties.icon.trim();V.charAt(0)==="@"?Ft(T,f.x+f.width-20,f.y+10,V.substr(1)):Kt(T,f.x+f.width-20,f.y+10,V)}Et(s,Q(t.description))(t.description,T,f.x-b,f.y+b,f.width,f.height,{class:`actor ${Ht}`},s);let S=t.height;if(O.node){let V=O.node().getBBox();t.height=V.height,S=V.height}return r||(T.attr("data-et","participant"),T.attr("data-type","collections"),T.attr("data-id",t.name)),S},"drawActorTypeCollections"),Nr=x(function(e,t,s,r,n){let i=r?t.stopy:t.starty,a=t.x+t.width/2,l=i+t.height,{look:E,theme:h,themeVariables:c}=s,{bkgColorArray:_,borderColorArray:u}=c,y=e.append("g").lower(),T=y;r||(B++,Object.keys(t.links||{}).length&&!s.forceMenus&&T.attr("onclick",zt(`actor${B}_popup`)).attr("cursor","pointer"),T.append("line").attr("id","actor"+B).attr("x1",a).attr("y1",l).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),T=y.append("g"),t.actorCnt=B,t.links!=null&&T.attr("id","root-"+B),E==="neo"&&T.attr("data-look","neo"));let f=lt(),g="actor";t.properties?.class?g=t.properties.class:f.fill="#eaeaea",r?g+=` ${xt}`:g+=` ${gt}`,T.attr("class",g),f.x=t.x,f.y=i,f.width=t.width,f.height=t.height,f.name=t.name;let b=f.height/2,R=b/(2.5+f.height/50),O=T.append("g"),A=T.append("g"),N=`M ${f.x},${f.y+b} + a ${R},${b} 0 0 0 0,${f.height} + h ${f.width-2*R} + a ${R},${b} 0 0 0 0,-${f.height} + Z + `;O.append("path").attr("d",N),A.append("path").attr("d",`M ${f.x},${f.y+b} + a ${R},${b} 0 0 0 0,${f.height}`),O.attr("transform",`translate(${R}, ${-(f.height/2)})`),A.attr("transform",`translate(${f.width-R}, ${-f.height/2})`),t.rectData=f,E==="neo"&&O.attr("filter","url(#drop-shadow)");let S=n.get(t.name)??0;if(Tt.has(h)&&(O.style("stroke",u[S%u.length]),O.style("fill",_[S%u.length]),A.style("stroke",u[S%u.length]),A.style("fill",_[S%u.length])),t.properties?.icon){let H=t.properties.icon.trim(),U=f.x+f.width-20,G=f.y+10;H.charAt(0)==="@"?Ft(T,U,G,H.substr(1)):Kt(T,U,G,H)}Et(s,Q(t.description))(t.description,T,f.x,f.y,f.width,f.height,{class:`actor ${Ht}`},s);let V=t.height,v=O.select("path:last-child");if(v.node()){let H=v.node().getBBox();t.height=H.height,V=H.height}return r||(T.attr("data-et","participant"),T.attr("data-type","queue"),T.attr("data-id",t.name)),V},"drawActorTypeQueue"),Ar=x(function(e,t,s,r,n,i){let a=r?t.stopy:t.starty,l=t.x+t.width/2,E=a+75,{look:h,theme:c,themeVariables:_}=s,{bkgColorArray:u,borderColorArray:y,actorBorder:T,actorBkg:f}=_,g=e.append("g").lower();r||(B++,g.append("line").attr("id","actor"+B).attr("x1",l).attr("y1",E).attr("x2",l).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=B);let b=e.append("g"),R=It;r?R+=` ${xt}`:R+=` ${gt}`,b.attr("class",R),b.attr("name",t.name);let O=lt();O.x=t.x,O.y=a,O.fill="#eaeaea",O.width=t.width,O.height=t.height,O.class="actor";let A=t.x+t.width/2,N=a+32,S=22;b.append("defs").append("marker").attr("id",n+"-filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").attr("stroke-width",1.2).append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),b.append("circle").attr("cx",A).attr("cy",N).attr("r",S).attr("filter",`${h==="neo"?"url(#drop-shadow)":""}`),b.append("line").attr("marker-end","url(#"+n+"-filled-head-control)").attr("transform",`translate(${A}, ${N-S})`);let V=i.get(t.name)??0;Tt.has(c)?(b.style("stroke",y[V%y.length]),b.style("fill",u[V%y.length])):(b.style("stroke",T),b.style("fill",f));let v=b.node().getBBox();return t.height=v.height+2*(s?.sequence?.labelBoxHeight??0),Et(s,Q(t.description))(t.description,b,O.x,O.y+S+(r?5:12),O.width,O.height,{class:`actor ${It}`},s),r||(b.attr("data-et","participant"),b.attr("data-type","control"),b.attr("data-id",t.name)),t.height},"drawActorTypeControl"),wr=x(function(e,t,s,r,n){let i=r?t.stopy:t.starty,a=t.x+t.width/2,l=i+75,{look:E,theme:h,themeVariables:c}=s,{bkgColorArray:_,borderColorArray:u}=c,y=e.append("g").lower(),T=e.append("g"),f="actor";r?f+=` ${xt}`:f+=` ${gt}`,T.attr("class",f),T.attr("name",t.name);let g=lt();g.x=t.x,g.y=i,g.fill="#eaeaea",g.width=t.width,g.height=t.height,g.class="actor";let b=t.x+t.width/2,R=i+(r?10:25),O=22;T.append("circle").attr("cx",b).attr("cy",R).attr("r",O).attr("width",t.width).attr("height",t.height),T.append("line").attr("x1",b-O).attr("x2",b+O).attr("y1",R+O).attr("y2",R+O).attr("stroke-width",2),E==="neo"&&T.attr("filter","url(#drop-shadow)");let A=n.get(t.name)??0;Tt.has(h)&&(T.style("stroke",u[A%u.length]),T.style("fill",_[A%u.length]));let N=T.node().getBBox();return t.height=N.height+(s?.sequence?.labelBoxHeight??0),r||(B++,y.append("line").attr("id","actor"+B).attr("x1",a).attr("y1",l).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=B),Et(s,Q(t.description))(t.description,T,g.x,g.y+(r?15:30),g.width,g.height,{class:`actor ${It}`},s),r?T.attr("transform",`translate(0, ${O})`):(T.attr("transform",`translate(0, ${O/2-5})`),T.attr("data-et","participant"),T.attr("data-type","entity"),T.attr("data-id",t.name)),t.height},"drawActorTypeEntity"),Sr=x(function(e,t,s,r,n){let i=r?t.stopy:t.starty,a=t.x+t.width/2,l=i+t.height+2*s.boxTextMargin,{theme:E,themeVariables:h,look:c}=s,{bkgColorArray:_,borderColorArray:u,actorBorder:y}=h,T=e.append("g").lower(),f=T;r||(B++,Object.keys(t.links||{}).length&&!s.forceMenus&&f.attr("onclick",zt(`actor${B}_popup`)).attr("cursor","pointer"),f.append("line").attr("id","actor"+B).attr("x1",a).attr("y1",l).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),f=T.append("g"),t.actorCnt=B,t.links!=null&&f.attr("id","root-"+B),c==="neo"&&f.attr("data-look","neo"));let g=lt(),b="actor";t.properties?.class?b=t.properties.class:g.fill="#eaeaea",r?b+=` ${xt}`:b+=` ${gt}`,g.x=t.x,g.y=i,g.width=t.width,g.height=t.height,g.class=b,g.name=t.name,g.x=t.x,g.y=i;let R=g.width/3,O=g.width/3,A=R/2,N=A/(2.5+R/50),S=f.append("g");S.attr("class",b);let V=` + M ${g.x},${g.y+N} + a ${A},${N} 0 0 0 ${R},0 + a ${A},${N} 0 0 0 -${R},0 + l 0,${O-2*N} + a ${A},${N} 0 0 0 ${R},0 + l 0,-${O-2*N} +`;S.append("path").attr("d",V),c==="neo"&&S.attr("filter","url(#drop-shadow)");let v=n.get(t.name)??0;Tt.has(E)?(S.style("stroke",u[v%u.length]),S.style("fill",_[v%u.length])):S.style("stroke",y),S.attr("transform",`translate(${R}, ${N})`),t.rectData=g,Et(s,Q(t.description))(t.description,f,g.x,g.y+35,g.width,g.height,{class:`actor ${Ht}`},s);let H=S.select("path:last-child");if(H.node()){let U=H.node().getBBox();t.height=U.height+(s.sequence.labelBoxHeight??0)}return r||(f.attr("data-et","participant"),f.attr("data-type","database"),f.attr("data-id",t.name)),t.height},"drawActorTypeDatabase"),kr=x(function(e,t,s,r,n){let i=r?t.stopy:t.starty,a=t.x+t.width/2,l=i+80,E=22,h=e.append("g").lower(),{look:c,theme:_,themeVariables:u}=s,{bkgColorArray:y,borderColorArray:T,actorBorder:f}=u;r||(B++,h.append("line").attr("id","actor"+B).attr("x1",a).attr("y1",l).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=B);let g=e.append("g"),b=It;r?b+=` ${xt}`:b+=` ${gt}`,g.attr("class",b),g.attr("name",t.name);let R=lt();R.x=t.x,R.y=i,R.fill="#eaeaea",R.width=t.width,R.height=t.height,R.class="actor",g.append("line").attr("id","actor-man-torso"+B).attr("x1",t.x+t.width/2-E*2.5).attr("y1",i+12).attr("x2",t.x+t.width/2-15).attr("y2",i+12),g.append("line").attr("id","actor-man-arms"+B).attr("x1",t.x+t.width/2-E*2.5).attr("y1",i+2).attr("x2",t.x+t.width/2-E*2.5).attr("y2",i+22),g.append("circle").attr("cx",t.x+t.width/2).attr("cy",i+12).attr("r",E),c==="neo"&&g.attr("filter","url(#drop-shadow)");let O=n.get(t.name)??0;Tt.has(_)?(g.style("stroke",T[O%T.length]),g.style("fill",y[O%T.length])):g.style("stroke",f);let A=g.node().getBBox();return t.height=A.height+(s.sequence.labelBoxHeight??0),Et(s,Q(t.description))(t.description,g,R.x,R.y+15,R.width,R.height,{class:`actor ${It}`},s),g.attr("transform",`translate(0,${E/2+10})`),r||(g.attr("data-et","participant"),g.attr("data-type","boundary"),g.attr("data-id",t.name)),t.height},"drawActorTypeBoundary"),Pr=x(function(e,t,s,r,n){let i=r?t.stopy:t.starty,a=t.x+t.width/2,l=i+80,{look:E,theme:h,themeVariables:c}=s,{bkgColorArray:_,borderColorArray:u,actorBorder:y}=c,T=e.append("g").lower();r||(B++,T.append("line").attr("id","actor"+B).attr("x1",a).attr("y1",l).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=B);let f=e.append("g"),g=It;r?g+=` ${xt}`:g+=` ${gt}`,f.attr("class",g),f.attr("name",t.name),r||f.attr("data-et","participant").attr("data-type","actor").attr("data-id",t.name);let b=E==="neo"?.5:1,R=E==="neo"?i+(1-b)*30:i;f.append("line").attr("id","actor-man-torso"+B).attr("x1",a).attr("y1",R+25*b).attr("x2",a).attr("y2",R+45*b),f.append("line").attr("id","actor-man-arms"+B).attr("x1",a-ft/2*b).attr("y1",R+33*b).attr("x2",a+ft/2*b).attr("y2",R+33*b),f.append("line").attr("x1",a-ft/2*b).attr("y1",R+60*b).attr("x2",a).attr("y2",R+45*b),f.append("line").attr("x1",a).attr("y1",R+45*b).attr("x2",a+(ft/2-2)*b).attr("y2",R+60*b);let O=f.append("circle");O.attr("cx",t.x+t.width/2),O.attr("cy",R+10*b),O.attr("r",15*b),O.attr("width",t.width*b),O.attr("height",t.height*b);let A=f.node().getBBox();t.height=A.height;let N=lt();N.x=t.x,N.y=R,N.fill="#eaeaea",N.width=t.width,N.height=t.height/b,N.class="actor",N.rx=3,N.ry=3;let S=n.get(t.name)??0;return Tt.has(h)?(f.style("stroke",u[S%u.length]),f.style("fill",_[S%u.length])):f.style("stroke",y),Et(s,Q(t.description))(t.description,f,N.x,R+35*b-(E==="neo"?10:0),N.width,N.height,{class:`actor ${It}`},s),t.height},"drawActorTypeActor"),Dr=x(async function(e,t,s,r,n,i,a){let l=a??new Map([...i.db.getActors().values()].map((E,h)=>[E.name,h]));switch(t.type){case"actor":return await Pr(e,t,s,r,l);case"participant":return await Or(e,t,s,r,l);case"boundary":return await kr(e,t,s,r,l);case"control":return await Ar(e,t,s,r,n,l);case"entity":return await wr(e,t,s,r,l);case"database":return await Sr(e,t,s,r,l);case"collections":return await Lr(e,t,s,r,l);case"queue":return await Nr(e,t,s,r,l)}},"drawActor"),Cr=x(function(e,t,s){let n=e.append("g");ar(n,t),t.name&&Et(s)(t.name,n,t.x,t.y+s.boxTextMargin+(t.textMaxHeight||0)/2,t.width,0,{class:"text"},s),n.lower()},"drawBox"),Mr=x(function(e){return e.append("g")},"anchorElement"),Br=x(function(e,t,s,r,n,i,a){let{theme:l,themeVariables:E}=r,{bkgColorArray:h,borderColorArray:c,mainBkg:_}=E,u=lt(),y=t.anchored,T=t.actor;u.x=t.startx,u.y=t.starty,u.class="activation"+n%3,u.width=t.stopx-t.startx,u.height=s-t.starty;let f=Ct(y,u),b=(a??new Map([...i.db.getActors().values()].map((R,O)=>[R.name,O]))).get(T)??0;Tt.has(l)&&(f.style("stroke",c[b%c.length]),f.style("fill",h[b%c.length]??_))},"drawActivation"),Vr=x(async function(e,t,s,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:l,labelBoxWidth:E,messageFontFamily:h,messageFontSize:c,messageFontWeight:_}=r,u=e.append("g").attr("data-et","control-structure").attr("data-id","i"+n.id),y=x(function(g,b,R,O){return u.append("line").attr("x1",g).attr("y1",b).attr("x2",R).attr("y2",O).attr("class","loopLine")},"drawLoopLine");y(t.startx,t.starty,t.stopx,t.starty),y(t.stopx,t.starty,t.stopx,t.stopy),y(t.startx,t.stopy,t.stopx,t.stopy),y(t.startx,t.starty,t.startx,t.stopy),t.sections!==void 0&&t.sections.forEach(function(g){y(t.startx,g.y,t.stopx,g.y).style("stroke-dasharray","3, 3")});let T=Pt();T.text=s,T.x=t.startx,T.y=t.starty,T.fontFamily=h,T.fontSize=c,T.fontWeight=_,T.anchor="middle",T.valign="middle",T.tspan=!1,T.width=Math.max(E??0,50),T.height=l+(r.look==="neo"?15:0)||20,T.textMargin=a,T.class="labelText",sr(u,T),T=nr(),T.text=t.title,T.x=t.startx+E/2+(t.stopx-t.startx)/2,T.y=t.starty+i+a,T.anchor="middle",T.valign="middle",T.textMargin=a,T.class="loopText",T.fontFamily=h,T.fontSize=c,T.fontWeight=_,T.wrap=!0;let f=Q(T.text)?await Mt(u,T,t):yt(u,T);if(t.sectionTitles!==void 0){for(let[g,b]of Object.entries(t.sectionTitles))if(b.message){T.text=b.message,T.x=t.startx+(t.stopx-t.startx)/2,T.y=t.sections[g].y+i+a,T.class="sectionTitle",T.anchor="middle",T.valign="middle",T.tspan=!1,T.fontFamily=h,T.fontSize=c,T.fontWeight=_,T.wrap=t.wrap,Q(T.text)?(t.starty=t.sections[g].y,await Mt(u,T,t)):yt(u,T);let R=Math.round(f.map(O=>(O._groups||O)[0][0].getBBox().height).reduce((O,A)=>O+A));t.sections[g].height+=R-(i+a)}}return t.height=Math.round(t.stopy-t.starty),u},"drawLoop"),ar=x(function(e,t){Ze(e,t)},"drawBackgroundRect"),vr=x(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),Yr=x(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),Wr=x(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),Kr=x(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),Fr=x(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),qr=x(function(e,t){e.append("defs").append("marker").attr("id",t+"-sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),Hr=x(function(e,t){e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),zr=x(function(e,t){let{theme:s}=t;e.append("defs").append("filter").attr("id","drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${s==="redux"||s==="redux-color"?"#000000":"#FFFFFF"}`)},"insertDropShadow"),nr=x(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),Ur=x(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),Et=(function(){function e(i,a,l,E,h,c,_){let u=a.append("text").attr("x",l+h/2).attr("y",E+c/2+5).style("text-anchor","middle").text(i);n(u,_)}x(e,"byText");function t(i,a,l,E,h,c,_,u){let{actorFontSize:y,actorFontFamily:T,actorFontWeight:f}=u,[g,b]=ae(y),R=i.split(k.lineBreakRegex);for(let O=0;Oe.height||0))+(this.loops.length===0?0:this.loops.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.messages.length===0?0:this.messages.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.notes.length===0?0:this.notes.map(e=>e.height||0).reduce((e,t)=>e+t))},"getHeight"),clear:x(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:x(function(e){this.boxes.push(e)},"addBox"),addActor:x(function(e){this.actors.push(e)},"addActor"),addLoop:x(function(e){this.loops.push(e)},"addLoop"),addMessage:x(function(e){this.messages.push(e)},"addMessage"),addNote:x(function(e){this.notes.push(e)},"addNote"),lastActor:x(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:x(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:x(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:x(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:x(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,lr($())},"init"),updateVal:x(function(e,t,s,r){e[t]===void 0?e[t]=s:e[t]=r(s,e[t])},"updateVal"),updateBounds:x(function(e,t,s,r){let n=this,i=0;function a(l){return x(function(h){i++;let c=n.sequenceItems.length-i+1;n.updateVal(h,"starty",t-c*d.boxMargin,Math.min),n.updateVal(h,"stopy",r+c*d.boxMargin,Math.max),n.updateVal(I.data,"startx",e-c*d.boxMargin,Math.min),n.updateVal(I.data,"stopx",s+c*d.boxMargin,Math.max),l!=="activation"&&(n.updateVal(h,"startx",e-c*d.boxMargin,Math.min),n.updateVal(h,"stopx",s+c*d.boxMargin,Math.max),n.updateVal(I.data,"starty",t-c*d.boxMargin,Math.min),n.updateVal(I.data,"stopy",r+c*d.boxMargin,Math.max))},"updateItemBounds")}x(a,"updateFn"),this.sequenceItems.forEach(a()),this.activations.forEach(a("activation"))},"updateBounds"),insert:x(function(e,t,s,r){let n=k.getMin(e,s),i=k.getMax(e,s),a=k.getMin(t,r),l=k.getMax(t,r);this.updateVal(I.data,"startx",n,Math.min),this.updateVal(I.data,"starty",a,Math.min),this.updateVal(I.data,"stopx",i,Math.max),this.updateVal(I.data,"stopy",l,Math.max),this.updateBounds(n,a,i,l)},"insert"),newActivation:x(function(e,t,s){let r=s.get(e.from),n=Ut(e.from).length||0,i=r.x+r.width/2+(n-1)*d.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+d.activationWidth,stopy:void 0,actor:e.from,anchored:K.anchorElement(t)})},"newActivation"),endActivation:x(function(e){let t=this.activations.map(function(s){return s.actor}).lastIndexOf(e.from);return this.activations.splice(t,1)[0]},"endActivation"),createLoop:x(function(e={message:void 0,wrap:!1,width:void 0},t){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:e.message,wrap:e.wrap,width:e.width,height:0,fill:t}},"createLoop"),newLoop:x(function(e={message:void 0,wrap:!1,width:void 0},t){this.sequenceItems.push(this.createLoop(e,t))},"newLoop"),endLoop:x(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:x(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:x(function(e){let t=this.sequenceItems.pop();t.sections=t.sections||[],t.sectionTitles=t.sectionTitles||[],t.sections.push({y:I.getVerticalPos(),height:0}),t.sectionTitles.push(e),this.sequenceItems.push(t)},"addSectionToLoop"),saveVerticalPos:x(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:x(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:x(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=k.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:x(function(){return this.verticalPos},"getVerticalPos"),getBounds:x(function(){return{bounds:this.data,models:this.models}},"getBounds")},$r=x(async function(e,t,s){I.bumpVerticalPos(d.boxMargin),t.height=d.boxMargin,t.starty=I.getVerticalPos();let r=lt();r.x=t.startx,r.y=t.starty,r.width=t.width||d.width,r.class="note";let n=e.append("g");n.attr("data-et","note"),n.attr("data-id","i"+s);let i=K.drawRect(n,r),a=Pt();a.x=t.startx,a.y=t.starty,a.width=r.width,a.dy="1em",a.text=t.message,a.class="noteText",a.fontFamily=d.noteFontFamily,a.fontSize=d.noteFontSize,a.fontWeight=d.noteFontWeight,a.anchor=d.noteAlign,a.textMargin=d.noteMargin,a.valign="center";let l=Q(a.text)?await Mt(n,a):yt(n,a),E=Math.round(l.map(h=>(h._groups||h)[0][0].getBBox().height).reduce((h,c)=>h+c));i.attr("height",E+2*d.noteMargin),t.height+=E+2*d.noteMargin,I.bumpVerticalPos(E+2*d.noteMargin),t.stopy=t.starty+E+2*d.noteMargin,t.stopx=t.startx+r.width,I.insert(t.startx,t.starty,t.stopx,t.stopy),I.models.addNote(t)},"drawNote"),ir=x(function(e,t,s,r,n,i,a){let l=r.db.getActors(),E=l.get(t.from),h=l.get(t.to),c=s.sequenceVisible,_=E.x+E.width/2,u=h.x+h.width/2,y=_<=u,T=dr(t,r),f=e.append("g"),g=16.5,b=x((S,V)=>{let v=S?g:-g;return V?-v:v},"getCircleOffset"),R=x(S=>{f.append("circle").attr("cx",S).attr("cy",a).attr("r",5).attr("width",10).attr("height",10)},"drawCircle"),{CENTRAL_CONNECTION:O,CENTRAL_CONNECTION_REVERSE:A,CENTRAL_CONNECTION_DUAL:N}=r.db.LINETYPE;if(c)switch(t.centralConnection){case O:T&&(u+=b(y,!0));break;case A:T||(_+=b(y,!1));break;case N:T?u+=b(y,!0):_+=b(y,!1);break}switch(t.centralConnection){case O:R(u);break;case A:R(_);break;case N:R(_),R(u);break}},"drawCentralConnection"),Rt=x(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont"),Lt=x(e=>({fontFamily:e.noteFontFamily,fontSize:e.noteFontSize,fontWeight:e.noteFontWeight}),"noteFont"),le=x(e=>({fontFamily:e.actorFontFamily,fontSize:e.actorFontSize,fontWeight:e.actorFontWeight}),"actorFont");async function jr(e,t){I.bumpVerticalPos(10);let{startx:s,stopx:r,message:n}=t,i=k.splitBreaks(n).length,a=Q(n),l=a?await mt(n,$()):X.calculateTextDimensions(n,Rt(d));if(!a){let _=l.height/i;t.height+=_,I.bumpVerticalPos(_)}let E,h=l.height-10,c=l.width;if(s===r){E=I.getVerticalPos()+h,d.rightAngles||(h+=d.boxMargin,E=I.getVerticalPos()+h),h+=30;let _=k.getMax(c/2,d.width/2);I.insert(s-_,I.getVerticalPos()-10+h,r+_,I.getVerticalPos()+30+h)}else h+=d.boxMargin,E=I.getVerticalPos()+h,I.insert(s,E-10,r,E);return I.bumpVerticalPos(h),t.height+=h,t.stopy=t.starty+t.height,I.insert(t.fromBounds,t.starty,t.toBounds,t.stopy),E}x(jr,"boundMessage");var ts=x(async function(e,t,s,r,n,i){let{startx:a,stopx:l,starty:E,message:h,type:c,sequenceIndex:_,sequenceVisible:u}=t,y=X.calculateTextDimensions(h,Rt(d)),T=Pt();T.x=Math.min(a,l),T.y=E+10,T.width=Math.abs(l-a),T.class="messageText",T.dy="1em",T.text=h,T.fontFamily=d.messageFontFamily,T.fontSize=d.messageFontSize,T.fontWeight=d.messageFontWeight,T.anchor=d.messageAlign,T.valign="center",T.textMargin=d.wrapPadding,T.tspan=!1,Q(T.text)?await Mt(e,T,{startx:a,stopx:l,starty:s}):yt(e,T);let f=y.width,g;if(a===l){let R=u||d.showSequenceNumbers,O=dr(n,r),A=hs(n,r),N=a+(R&&(O||A)?10:0);d.rightAngles?g=e.append("path").attr("d",`M ${N},${s} H ${a+k.getMax(d.width/2,f/2)} V ${s+25} H ${a}`):g=e.append("path").attr("d","M "+N+","+s+" C "+(N+60)+","+(s-10)+" "+(a+60)+","+(s+30)+" "+a+","+(s+20)),ce(n,r)&&ir(e,n,t,r,a,l,s)}else g=e.append("line"),g.attr("x1",a),g.attr("y1",s),g.attr("x2",l),g.attr("y2",s),ce(n,r)&&ir(e,n,t,r,a,l,s);c===r.db.LINETYPE.DOTTED||c===r.db.LINETYPE.DOTTED_CROSS||c===r.db.LINETYPE.DOTTED_POINT||c===r.db.LINETYPE.DOTTED_OPEN||c===r.db.LINETYPE.BIDIRECTIONAL_DOTTED||c===r.db.LINETYPE.SOLID_TOP_DOTTED||c===r.db.LINETYPE.SOLID_BOTTOM_DOTTED||c===r.db.LINETYPE.STICK_TOP_DOTTED||c===r.db.LINETYPE.STICK_BOTTOM_DOTTED||c===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||c===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||c===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||c===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0"),g.attr("data-et","message"),g.attr("data-id","i"+t.id),g.attr("data-from",t.from),g.attr("data-to",t.to);let b="";if(d.arrowMarkerAbsolute&&(b=We(!0)),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(c===r.db.LINETYPE.SOLID_TOP||c===r.db.LINETYPE.SOLID_TOP_DOTTED)&&g.attr("marker-end","url("+b+"#"+i+"-solidTopArrowHead)"),(c===r.db.LINETYPE.SOLID_BOTTOM||c===r.db.LINETYPE.SOLID_BOTTOM_DOTTED)&&g.attr("marker-end","url("+b+"#"+i+"-solidBottomArrowHead)"),(c===r.db.LINETYPE.STICK_TOP||c===r.db.LINETYPE.STICK_TOP_DOTTED)&&g.attr("marker-end","url("+b+"#"+i+"-stickTopArrowHead)"),(c===r.db.LINETYPE.STICK_BOTTOM||c===r.db.LINETYPE.STICK_BOTTOM_DOTTED)&&g.attr("marker-end","url("+b+"#"+i+"-stickBottomArrowHead)"),(c===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||c===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED)&&g.attr("marker-start","url("+b+"#"+i+"-solidBottomArrowHead)"),(c===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||c===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED)&&g.attr("marker-start","url("+b+"#"+i+"-solidTopArrowHead)"),(c===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE||c===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED)&&g.attr("marker-start","url("+b+"#"+i+"-stickBottomArrowHead)"),(c===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||c===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED)&&g.attr("marker-start","url("+b+"#"+i+"-stickTopArrowHead)"),(c===r.db.LINETYPE.SOLID||c===r.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+b+"#"+i+"-arrowhead)"),(c===r.db.LINETYPE.BIDIRECTIONAL_SOLID||c===r.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+b+"#"+i+"-arrowhead)"),g.attr("marker-end","url("+b+"#"+i+"-arrowhead)")),(c===r.db.LINETYPE.SOLID_POINT||c===r.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+b+"#"+i+"-filled-head)"),(c===r.db.LINETYPE.SOLID_CROSS||c===r.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+b+"#"+i+"-crosshead)"),u||d.showSequenceNumbers){let R=c===r.db.LINETYPE.BIDIRECTIONAL_SOLID||c===r.db.LINETYPE.BIDIRECTIONAL_DOTTED,O=c===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||c===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||c===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||c===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||c===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE||c===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||c===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||c===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,A=6,N=ce(n,r),S=a,V=l;R?(aa?V=l-2*A:(V=l-A,S+=n?.centralConnection===r.db.LINETYPE.CENTRAL_CONNECTION_DUAL||n?.centralConnection===r.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),V+=N?15:0,g.attr("x2",V),g.attr("x1",S)):g.attr("x1",a+A);let v=0,H=a===l,U=a<=l;H?v=t.fromBounds+1:O?v=U?t.toBounds-1:t.fromBounds+1:v=U?t.fromBounds+1:t.toBounds-1;let G="12px",J=_.toString().length;J>5?G="7px":J>3&&(G="9px"),e.append("line").attr("x1",v).attr("y1",s).attr("x2",v).attr("y2",s).attr("stroke-width",0).attr("marker-start","url("+b+"#"+i+"-sequencenumber)"),e.append("text").attr("x",v).attr("y",s+4).attr("font-family","sans-serif").attr("font-size",G).attr("text-anchor","middle").attr("class","sequenceNumber").text(_)}},"drawMessage"),es=x(function(e,t,s,r,n,i,a){let l=0,E=0,h,c=0;for(let _ of r){let u=t.get(_),y=u.box;h&&h!=y&&(a||I.models.addBox(h),E+=d.boxMargin+h.margin),y&&y!=h&&(a||(y.x=l+E,y.y=n),E+=y.margin),u.width=k.getMax(u.width||d.width,d.width),u.height=k.getMax(u.height||d.height,d.height),u.margin=u.margin||d.actorMargin,c=k.getMax(c,u.height),s.get(u.name)&&(E+=u.width/2),u.x=l+E,u.starty=I.getVerticalPos(),I.insert(u.x,n,u.x+u.width,u.height),l+=u.width+E,u.box&&(u.box.width=l+y.margin-u.box.x),E=u.margin,h=u.box,I.models.addActor(u)}h&&!a&&I.models.addBox(h),I.bumpVerticalPos(c)},"addActorRenderingData"),de=x(async function(e,t,s,r,n,i,a){if(r){let l=0;I.bumpVerticalPos(d.boxMargin*2);for(let E of s){let h=t.get(E);h.stopy||(h.stopy=I.getVerticalPos());let c=await K.drawActor(e,h,d,!0,n,i,a);l=k.getMax(l,c)}I.bumpVerticalPos(l+d.boxMargin)}else for(let l of s){let E=t.get(l);await K.drawActor(e,E,d,!1,n,i,a)}},"drawActors"),cr=x(function(e,t,s,r){let n=0,i=0;for(let a of s){let l=t.get(a),E=ns(l),h=K.drawPopup(e,l,E,d,d.forceMenus,r);h.height>n&&(n=h.height),h.width+l.x>i&&(i=h.width+l.x)}return{maxHeight:n,maxWidth:i}},"drawActorsPopup"),lr=x(function(e){Ye(d,e),e.fontFamily&&(d.actorFontFamily=d.noteFontFamily=d.messageFontFamily=e.fontFamily),e.fontSize&&(d.actorFontSize=d.noteFontSize=d.messageFontSize=e.fontSize),e.fontWeight&&(d.actorFontWeight=d.noteFontWeight=d.messageFontWeight=e.fontWeight)},"setConf"),Ut=x(function(e){return I.activations.filter(function(t){return t.actor===e})},"actorActivations"),or=x(function(e,t){let s=t.get(e),r=Ut(e),n=r.reduce(function(a,l){return k.getMin(a,l.startx)},s.x+s.width/2-1),i=r.reduce(function(a,l){return k.getMax(a,l.stopx)},s.x+s.width/2+1);return[n,i]},"activationBounds");function ht(e,t,s,r,n){I.bumpVerticalPos(s);let i=r;if(t.id&&t.message&&e[t.id]){let a=e[t.id].width,l=Rt(d);t.message=X.wrapLabel(`[${t.message}]`,a-2*d.wrapPadding,l),t.width=a,t.wrap=!0;let E=X.calculateTextDimensions(t.message,l),h=k.getMax(E.height,d.labelBoxHeight);i=r+h,j.debug(`${h} - ${t.message}`)}n(t),I.bumpVerticalPos(i)}x(ht,"adjustLoopHeightForWrap");function rs(e,t,s,r,n,i,a){function l(c,_){c.x{L.add(D.from),L.add(D.to)}),f=f.filter(D=>L.has(D))}let N=new Map(f.map((L,D)=>[_.get(L)?.name??L,D]));es(c,_,u,f,0,g,!1);let S=await Ts(g,_,A,r);K.insertArrowHead(c,t),K.insertArrowCrossHead(c,t),K.insertArrowFilledHead(c,t),K.insertSequenceNumber(c,t),K.insertSolidTopArrowHead(c,t),K.insertSolidBottomArrowHead(c,t),K.insertStickTopArrowHead(c,t),K.insertStickBottomArrowHead(c,t),a==="neo"&&K.insertDropShadow(c,d);function V(L,D){let dt=I.endActivation(L);dt.starty+18>D&&(dt.starty=D-6,D+=12),K.drawActivation(c,dt,D,d,Ut(L.from).length,r,N),I.insert(dt.startx,D-10,dt.stopx,D)}x(V,"activeEnd");let v=1,H=1,U=[],G=[],J=0;for(let L of g){let D,dt,st;switch(L.type){case r.db.LINETYPE.NOTE:I.resetVerticalPos(),dt=L.noteModel,await $r(c,dt,L.id);break;case r.db.LINETYPE.ACTIVE_START:I.newActivation(L,c,_);break;case r.db.LINETYPE.CENTRAL_CONNECTION:I.newActivation(L,c,_);break;case r.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:I.newActivation(L,c,_);break;case r.db.LINETYPE.ACTIVE_END:V(L,I.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:ht(S,L,d.boxMargin,d.boxMargin+d.boxTextMargin,W=>I.newLoop(W));break;case r.db.LINETYPE.LOOP_END:D=I.endLoop(),await K.drawLoop(c,D,"loop",d,L),I.bumpVerticalPos(D.stopy-I.getVerticalPos()),I.models.addLoop(D);break;case r.db.LINETYPE.RECT_START:ht(S,L,d.boxMargin,d.boxMargin,W=>I.newLoop(void 0,W.message));break;case r.db.LINETYPE.RECT_END:D=I.endLoop(),G.push(D),I.models.addLoop(D),I.bumpVerticalPos(D.stopy-I.getVerticalPos());break;case r.db.LINETYPE.OPT_START:ht(S,L,d.boxMargin,d.boxMargin+d.boxTextMargin,W=>I.newLoop(W));break;case r.db.LINETYPE.OPT_END:D=I.endLoop(),await K.drawLoop(c,D,"opt",d,L),I.bumpVerticalPos(D.stopy-I.getVerticalPos()),I.models.addLoop(D);break;case r.db.LINETYPE.ALT_START:ht(S,L,d.boxMargin,d.boxMargin+d.boxTextMargin,W=>I.newLoop(W));break;case r.db.LINETYPE.ALT_ELSE:ht(S,L,d.boxMargin+d.boxTextMargin,d.boxMargin,W=>I.addSectionToLoop(W));break;case r.db.LINETYPE.ALT_END:D=I.endLoop(),await K.drawLoop(c,D,"alt",d,L),I.bumpVerticalPos(D.stopy-I.getVerticalPos()),I.models.addLoop(D);break;case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:ht(S,L,d.boxMargin,d.boxMargin+d.boxTextMargin,W=>I.newLoop(W)),I.saveVerticalPos();break;case r.db.LINETYPE.PAR_AND:ht(S,L,d.boxMargin+d.boxTextMargin,d.boxMargin,W=>I.addSectionToLoop(W));break;case r.db.LINETYPE.PAR_END:D=I.endLoop(),await K.drawLoop(c,D,"par",d,L),I.bumpVerticalPos(D.stopy-I.getVerticalPos()),I.models.addLoop(D);break;case r.db.LINETYPE.AUTONUMBER:v=L.message.start||v,H=L.message.step||H,L.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:ht(S,L,d.boxMargin,d.boxMargin+d.boxTextMargin,W=>I.newLoop(W));break;case r.db.LINETYPE.CRITICAL_OPTION:ht(S,L,d.boxMargin+d.boxTextMargin,d.boxMargin,W=>I.addSectionToLoop(W));break;case r.db.LINETYPE.CRITICAL_END:D=I.endLoop(),await K.drawLoop(c,D,"critical",d,L),I.bumpVerticalPos(D.stopy-I.getVerticalPos()),I.models.addLoop(D);break;case r.db.LINETYPE.BREAK_START:ht(S,L,d.boxMargin,d.boxMargin+d.boxTextMargin,W=>I.newLoop(W));break;case r.db.LINETYPE.BREAK_END:D=I.endLoop(),await K.drawLoop(c,D,"break",d,L),I.bumpVerticalPos(D.stopy-I.getVerticalPos()),I.models.addLoop(D);break;default:try{st=L.msgModel,st.starty=I.getVerticalPos(),st.sequenceIndex=v,st.sequenceVisible=r.db.showSequenceNumbers(),st.id=L.id,st.from=L.from,st.to=L.to;let W=await jr(c,st);rs(L,st,W,J,_,u,y),U.push({messageModel:st,lineStartY:W,msg:L}),I.models.addMessage(st)}catch(W){j.error("error while drawing message",W)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.SOLID_TOP,r.db.LINETYPE.SOLID_BOTTOM,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.SOLID_TOP_DOTTED,r.db.LINETYPE.SOLID_BOTTOM_DOTTED,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(L.type)&&(v=Math.round((v+H)*100)/100),J++}j.debug("createdActors",u),j.debug("destroyedActors",y),await de(c,_,f,!1,t,r,N);for(let L of U)await ts(c,L.messageModel,L.lineStartY,r,L.msg,t);d.mirrorActors&&await de(c,_,f,!0,t,r,N),G.forEach(L=>K.drawBackgroundRect(c,L)),oe(c,_,f,d);for(let L of I.models.boxes){L.height=I.getVerticalPos()-L.y,I.insert(L.x,L.y,L.x+L.width,L.height);let D=d.boxMargin*2;L.startx=L.x-D,L.starty=L.y-D*.25,L.stopx=L.startx+L.width+2*D,L.stopy=L.starty+L.height+D*.75,L.stroke="rgb(0,0,0, 0.5)",K.drawBox(c,L,d)}R&&I.bumpVerticalPos(d.boxMargin);let et=cr(c,_,f,h),{bounds:z}=I.getBounds();z.startx===void 0&&(z.startx=0),z.starty===void 0&&(z.starty=0),z.stopx===void 0&&(z.stopx=0),z.stopy===void 0&&(z.stopy=0);let at=z.stopy-z.starty;at{let a=Rt(d),l=i.actorKeys.reduce((_,u)=>_+=e.get(u).width+(e.get(u).margin||0),0),E=d.boxMargin*8;l+=E,l-=2*d.boxTextMargin,i.wrap&&(i.name=X.wrapLabel(i.name,l-2*d.wrapPadding,a));let h=X.calculateTextDimensions(i.name,a);n=k.getMax(h.height,n);let c=k.getMax(l,h.width+2*d.wrapPadding);if(i.margin=d.boxTextMargin,li.textMaxHeight=n),k.getMax(r,d.height)}x(is,"calculateActorMargins");var os=x(async function(e,t,s){let r=t.get(e.from),n=t.get(e.to),i=r.x,a=n.x,l=e.wrap&&e.message,E=Q(e.message)?await mt(e.message,$()):X.calculateTextDimensions(l?X.wrapLabel(e.message,d.width,Lt(d)):e.message,Lt(d)),h={width:l?d.width:k.getMax(d.width,E.width+2*d.noteMargin),height:0,startx:r.x,stopx:0,starty:0,stopy:0,message:e.message};return e.placement===s.db.PLACEMENT.RIGHTOF?(h.width=l?k.getMax(d.width,E.width):k.getMax(r.width/2+n.width/2,E.width+2*d.noteMargin),h.startx=i+(r.width+d.actorMargin)/2):e.placement===s.db.PLACEMENT.LEFTOF?(h.width=l?k.getMax(d.width,E.width+2*d.noteMargin):k.getMax(r.width/2+n.width/2,E.width+2*d.noteMargin),h.startx=i-h.width+(r.width-d.actorMargin)/2):e.to===e.from?(E=X.calculateTextDimensions(l?X.wrapLabel(e.message,k.getMax(d.width,r.width),Lt(d)):e.message,Lt(d)),h.width=l?k.getMax(d.width,r.width):k.getMax(r.width,d.width,E.width+2*d.noteMargin),h.startx=i+(r.width-h.width)/2):(h.width=Math.abs(i+r.width/2-(a+n.width/2))+d.actorMargin,h.startx=i2,u=x(g=>E?-g:g,"adjustValue");e.from===e.to?c=h:(e.activate&&!_&&(c+=u(d.activationWidth/2-1)),[s.db.LINETYPE.SOLID_OPEN,s.db.LINETYPE.DOTTED_OPEN,s.db.LINETYPE.STICK_TOP,s.db.LINETYPE.STICK_BOTTOM,s.db.LINETYPE.STICK_TOP_DOTTED,s.db.LINETYPE.STICK_BOTTOM_DOTTED,s.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,s.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,s.db.LINETYPE.STICK_ARROW_TOP_REVERSE,s.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,s.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,s.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,s.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,s.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)||(c+=u(3)),[s.db.LINETYPE.BIDIRECTIONAL_SOLID,s.db.LINETYPE.BIDIRECTIONAL_DOTTED,s.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,s.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,s.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,s.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)&&(h-=u(3)));let y=[n,i,a,l],T=Math.abs(h-c);e.wrap&&e.message&&(e.message=X.wrapLabel(e.message,k.getMax(T+2*d.wrapPadding,d.width),Rt(d)));let f=X.calculateTextDimensions(e.message,Rt(d));return{width:k.getMax(e.wrap?0:f.width+2*d.wrapPadding,T+2*d.wrapPadding,d.width),height:0,startx:h,stopx:c,starty:0,stopy:0,message:e.message,type:e.type,wrap:e.wrap,fromBounds:Math.min.apply(null,y),toBounds:Math.max.apply(null,y)}},"buildMessageModel");var Ts=x(async function(e,t,s,r){let n={},i=[],a,l,E;for(let h of e){switch(h.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:i.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:h.message&&(a=i.pop(),n[a.id]=a,n[h.id]=a,i.push(a));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:a=i.pop(),n[a.id]=a;break;case r.db.LINETYPE.ACTIVE_START:{let _=t.get(h.from?h.from:h.to.actor),u=Ut(h.from?h.from:h.to.actor).length,y=_.x+_.width/2+(u-1)*d.activationWidth/2,T={startx:y,stopx:y+d.activationWidth,actor:h.from,enabled:!0};I.activations.push(T)}break;case r.db.LINETYPE.ACTIVE_END:{let _=I.activations.map(u=>u.actor).lastIndexOf(h.from);I.activations.splice(_,1).splice(0,1)}break}h.placement!==void 0?(l=await os(h,t,r),h.noteModel=l,i.forEach(_=>{a=_,a.from=k.getMin(a.from,l.startx),a.to=k.getMax(a.to,l.startx+l.width),a.width=k.getMax(a.width,Math.abs(a.from-a.to))-d.labelBoxWidth})):(E=ps(h,t,r),h.msgModel=E,E.startx&&E.stopx&&i.length>0&&i.forEach(_=>{if(a=_,E.startx===E.stopx){let u=t.get(h.from),y=t.get(h.to);a.from=k.getMin(u.x-E.width/2,u.x-u.width/2,a.from),a.to=k.getMax(y.x+E.width/2,y.x+u.width/2,a.to),a.width=k.getMax(a.width,Math.abs(a.to-a.from))-d.labelBoxWidth}else a.from=k.getMin(E.startx,a.from),a.to=k.getMax(E.stopx,a.to),a.width=k.getMax(a.width,E.width)-d.labelBoxWidth}))}return I.activations=[],j.debug("Loop type widths:",n),n},"calculateLoopBounds"),hr={bounds:I,drawActors:de,drawActorsPopup:cr,setConf:lr,draw:ss};var Qs={parser:er,get db(){return new qt},renderer:hr,styles:rr,init:x(e=>{e.sequence||(e.sequence={}),e.wrap&&(e.sequence.wrap=e.wrap,Xe({sequence:{wrap:e.wrap}}))},"init")};export{Qs as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-VS2MUI6T.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-VS2MUI6T.mjs.map new file mode 100644 index 0000000..18544b0 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/sequenceDiagram-VS2MUI6T.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/sequence/parser/sequenceDiagram.jison", "../../../src/diagrams/sequence/sequenceDb.ts", "../../../src/diagrams/sequence/styles.js", "../../../src/diagrams/sequence/svgDraw.js", "../../../src/diagrams/sequence/sequenceRenderer.ts", "../../../src/diagrams/sequence/sequenceDiagram.ts"], + "sourcesContent": ["/* 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,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,12],$V7=[1,14],$V8=[1,15],$V9=[1,17],$Va=[1,18],$Vb=[1,19],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,29],$Vh=[1,30],$Vi=[1,31],$Vj=[1,32],$Vk=[1,33],$Vl=[1,34],$Vm=[1,35],$Vn=[1,36],$Vo=[1,37],$Vp=[1,38],$Vq=[1,39],$Vr=[1,40],$Vs=[1,42],$Vt=[1,43],$Vu=[1,44],$Vv=[1,45],$Vw=[1,46],$Vx=[1,47],$Vy=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],$Vz=[1,74],$VA=[1,80],$VB=[1,81],$VC=[1,82],$VD=[1,83],$VE=[1,84],$VF=[1,85],$VG=[1,86],$VH=[1,87],$VI=[1,88],$VJ=[1,89],$VK=[1,90],$VL=[1,91],$VM=[1,92],$VN=[1,93],$VO=[1,94],$VP=[1,95],$VQ=[1,96],$VR=[1,97],$VS=[1,98],$VT=[1,99],$VU=[1,100],$VV=[1,101],$VW=[1,102],$VX=[1,103],$VY=[1,104],$VZ=[1,105],$V_=[2,78],$V$=[4,5,17,51,53,54],$V01=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],$V11=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],$V21=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],$V31=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],$V41=[5,52],$V51=[70,71,72,73],$V61=[1,151];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"INVALID\":10,\"box_section\":11,\"box_line\":12,\"participant_statement\":13,\"create\":14,\"box\":15,\"restOfLine\":16,\"end\":17,\"signal\":18,\"autonumber\":19,\"NUM\":20,\"off\":21,\"activate\":22,\"actor\":23,\"deactivate\":24,\"note_statement\":25,\"links_statement\":26,\"link_statement\":27,\"properties_statement\":28,\"details_statement\":29,\"title\":30,\"legacy_title\":31,\"acc_title\":32,\"acc_title_value\":33,\"acc_descr\":34,\"acc_descr_value\":35,\"acc_descr_multiline_value\":36,\"loop\":37,\"rect\":38,\"opt\":39,\"alt\":40,\"else_sections\":41,\"par\":42,\"par_sections\":43,\"par_over\":44,\"critical\":45,\"option_sections\":46,\"break\":47,\"option\":48,\"and\":49,\"else\":50,\"participant\":51,\"AS\":52,\"participant_actor\":53,\"destroy\":54,\"actor_with_config\":55,\"note\":56,\"placement\":57,\"text2\":58,\"over\":59,\"actor_pair\":60,\"links\":61,\"link\":62,\"properties\":63,\"details\":64,\"spaceList\":65,\",\":66,\"left_of\":67,\"right_of\":68,\"signaltype\":69,\"+\":70,\"-\":71,\"()\":72,\"ACTOR\":73,\"config_object\":74,\"CONFIG_START\":75,\"CONFIG_CONTENT\":76,\"CONFIG_END\":77,\"SOLID_OPEN_ARROW\":78,\"DOTTED_OPEN_ARROW\":79,\"SOLID_ARROW\":80,\"SOLID_ARROW_TOP\":81,\"SOLID_ARROW_BOTTOM\":82,\"STICK_ARROW_TOP\":83,\"STICK_ARROW_BOTTOM\":84,\"SOLID_ARROW_TOP_DOTTED\":85,\"SOLID_ARROW_BOTTOM_DOTTED\":86,\"STICK_ARROW_TOP_DOTTED\":87,\"STICK_ARROW_BOTTOM_DOTTED\":88,\"SOLID_ARROW_TOP_REVERSE\":89,\"SOLID_ARROW_BOTTOM_REVERSE\":90,\"STICK_ARROW_TOP_REVERSE\":91,\"STICK_ARROW_BOTTOM_REVERSE\":92,\"SOLID_ARROW_TOP_REVERSE_DOTTED\":93,\"SOLID_ARROW_BOTTOM_REVERSE_DOTTED\":94,\"STICK_ARROW_TOP_REVERSE_DOTTED\":95,\"STICK_ARROW_BOTTOM_REVERSE_DOTTED\":96,\"BIDIRECTIONAL_SOLID_ARROW\":97,\"DOTTED_ARROW\":98,\"BIDIRECTIONAL_DOTTED_ARROW\":99,\"SOLID_CROSS\":100,\"DOTTED_CROSS\":101,\"SOLID_POINT\":102,\"DOTTED_POINT\":103,\"TXT\":104,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",6:\"SD\",10:\"INVALID\",14:\"create\",15:\"box\",16:\"restOfLine\",17:\"end\",19:\"autonumber\",20:\"NUM\",21:\"off\",22:\"activate\",24:\"deactivate\",30:\"title\",31:\"legacy_title\",32:\"acc_title\",33:\"acc_title_value\",34:\"acc_descr\",35:\"acc_descr_value\",36:\"acc_descr_multiline_value\",37:\"loop\",38:\"rect\",39:\"opt\",40:\"alt\",42:\"par\",44:\"par_over\",45:\"critical\",47:\"break\",48:\"option\",49:\"and\",50:\"else\",51:\"participant\",52:\"AS\",53:\"participant_actor\",54:\"destroy\",56:\"note\",59:\"over\",61:\"links\",62:\"link\",63:\"properties\",64:\"details\",66:\",\",67:\"left_of\",68:\"right_of\",70:\"+\",71:\"-\",72:\"()\",73:\"ACTOR\",75:\"CONFIG_START\",76:\"CONFIG_CONTENT\",77:\"CONFIG_END\",78:\"SOLID_OPEN_ARROW\",79:\"DOTTED_OPEN_ARROW\",80:\"SOLID_ARROW\",81:\"SOLID_ARROW_TOP\",82:\"SOLID_ARROW_BOTTOM\",83:\"STICK_ARROW_TOP\",84:\"STICK_ARROW_BOTTOM\",85:\"SOLID_ARROW_TOP_DOTTED\",86:\"SOLID_ARROW_BOTTOM_DOTTED\",87:\"STICK_ARROW_TOP_DOTTED\",88:\"STICK_ARROW_BOTTOM_DOTTED\",89:\"SOLID_ARROW_TOP_REVERSE\",90:\"SOLID_ARROW_BOTTOM_REVERSE\",91:\"STICK_ARROW_TOP_REVERSE\",92:\"STICK_ARROW_BOTTOM_REVERSE\",93:\"SOLID_ARROW_TOP_REVERSE_DOTTED\",94:\"SOLID_ARROW_BOTTOM_REVERSE_DOTTED\",95:\"STICK_ARROW_TOP_REVERSE_DOTTED\",96:\"STICK_ARROW_BOTTOM_REVERSE_DOTTED\",97:\"BIDIRECTIONAL_SOLID_ARROW\",98:\"DOTTED_ARROW\",99:\"BIDIRECTIONAL_DOTTED_ARROW\",100:\"SOLID_CROSS\",101:\"DOTTED_CROSS\",102:\"SOLID_POINT\",103:\"DOTTED_POINT\",104:\"TXT\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 4: case 10:\n this.$ = [] \nbreak;\ncase 5: case 11:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 6: case 7: case 12: case 13:\n this.$ = $$[$0] \nbreak;\ncase 8: case 9: case 14:\n this.$=[]; \nbreak;\ncase 16:\n$$[$0].type='createParticipant'; this.$=$$[$0];\nbreak;\ncase 17:\n\n\t\t$$[$0-1].unshift({type: 'boxStart', boxData:yy.parseBoxData($$[$0-2]) });\n\t\t$$[$0-1].push({type: 'boxEnd', boxText:$$[$0-2]});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 19:\n this.$= {type:'sequenceIndex',sequenceIndex: Number($$[$0-2]), sequenceIndexStep:Number($$[$0-1]), sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 20:\n this.$ = {type:'sequenceIndex',sequenceIndex: Number($$[$0-1]), sequenceIndexStep:1, sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 21:\n this.$ = {type:'sequenceIndex', sequenceVisible:false, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 22:\nthis.$ = {type:'sequenceIndex', sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER}; \nbreak;\ncase 23:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1].actor};\nbreak;\ncase 24:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1].actor};\nbreak;\ncase 30:\nyy.setDiagramTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 31:\nyy.setDiagramTitle($$[$0].substring(7));this.$=$$[$0].substring(7);\nbreak;\ncase 32:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 33: case 34:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 35:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 36:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 37:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 38:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 39:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 40:\n\n\t\t// Parallel (overlapped) start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_OVER_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 41:\n\n\t\t// critical start\n\t\t$$[$0-1].unshift({type: 'criticalStart', criticalText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.CRITICAL_START});\n\t\t// Content in critical is already in $$[$0-1]\n\t\t// critical end\n\t\t$$[$0-1].push({type: 'criticalEnd', signalType: yy.LINETYPE.CRITICAL_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 42:\n\n\t\t$$[$0-1].unshift({type: 'breakStart', breakText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.BREAK_START});\n\t\t$$[$0-1].push({type: 'breakEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.BREAK_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 44:\n this.$ = $$[$0-3].concat([{type: 'option', optionText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.CRITICAL_OPTION}, $$[$0]]); \nbreak;\ncase 46:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 48:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 49:\n$$[$0-3].draw='participant'; $$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 50:\n$$[$0-1].draw='participant'; $$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 51:\n$$[$0-3].draw='actor'; $$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 52: case 57:\n$$[$0-1].draw='actor'; $$[$0-1].type='addParticipant'; this.$=$$[$0-1];\nbreak;\ncase 53:\n$$[$0-1].type='destroyParticipant'; this.$=$$[$0-1];\nbreak;\ncase 54:\n$$[$0-3].draw='participant'; $$[$0-3].type='addParticipant'; $$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 55:\n$$[$0-1].draw='participant'; $$[$0-1].type='addParticipant'; this.$=$$[$0-1];\nbreak;\ncase 56:\n$$[$0-3].draw='actor'; $$[$0-3].type='addParticipant'; $$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 58:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 59:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 60:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 61:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 62:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 63:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 66:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 67:\n this.$ = $$[$0]; \nbreak;\ncase 68:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 69:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 70:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0], activate: true},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1].actor}\n\t ]\nbreak;\ncase 71:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4].actor}\n\t ]\nbreak;\ncase 72:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0], activate: true, centralConnection: yy.LINETYPE.CENTRAL_CONNECTION},\n\t {type: 'centralConnection', signalType: yy.LINETYPE.CENTRAL_CONNECTION, actor: $$[$0-1].actor, }\n\t ]\nbreak;\ncase 73:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0], activate: false, centralConnection: yy.LINETYPE.CENTRAL_CONNECTION_REVERSE},\n\t {type: 'centralConnectionReverse', signalType: yy.LINETYPE.CENTRAL_CONNECTION_REVERSE, actor: $$[$0-4].actor}\n\t ]\nbreak;\ncase 74:\n this.$ = [$$[$0-5],$$[$0-1],{type: 'addMessage', from:$$[$0-5].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0], activate: true, centralConnection: yy.LINETYPE.CENTRAL_CONNECTION_DUAL},\n\t \t\t\t {type: 'centralConnection', signalType: yy.LINETYPE.CENTRAL_CONNECTION, actor: $$[$0-1].actor, },\n\t\t\t\t {type: 'centralConnectionReverse', signalType: yy.LINETYPE.CENTRAL_CONNECTION_REVERSE, actor: $$[$0-5].actor}\n\t ]\nbreak;\ncase 75:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 76:\n\n this.$ = {\n type: 'addParticipant',\n actor: $$[$0-1],\n config: $$[$0]\n };\n \nbreak;\ncase 77:\n\n this.$ = $$[$0-1].trim();\n \nbreak;\ncase 78:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 79:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 80:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 81:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 82:\n this.$ = yy.LINETYPE.SOLID_TOP; \nbreak;\ncase 83:\n this.$ = yy.LINETYPE.SOLID_BOTTOM; \nbreak;\ncase 84:\n this.$ = yy.LINETYPE.STICK_TOP; \nbreak;\ncase 85:\n this.$ = yy.LINETYPE.STICK_BOTTOM; \nbreak;\ncase 86:\n this.$ = yy.LINETYPE.SOLID_TOP_DOTTED; \nbreak;\ncase 87:\n this.$ = yy.LINETYPE.SOLID_BOTTOM_DOTTED; \nbreak;\ncase 88:\n this.$ = yy.LINETYPE.STICK_TOP_DOTTED; \nbreak;\ncase 89:\n this.$ = yy.LINETYPE.STICK_BOTTOM_DOTTED; \nbreak;\ncase 90:\n this.$ = yy.LINETYPE.SOLID_ARROW_TOP_REVERSE; \nbreak;\ncase 91:\n this.$ = yy.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE; \nbreak;\ncase 92:\n this.$ = yy.LINETYPE.STICK_ARROW_TOP_REVERSE; \nbreak;\ncase 93:\n this.$ = yy.LINETYPE.STICK_ARROW_BOTTOM_REVERSE; \nbreak;\ncase 94:\n this.$ = yy.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED; \nbreak;\ncase 95:\n this.$ = yy.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED; \nbreak;\ncase 96:\n this.$ = yy.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED; \nbreak;\ncase 97:\n this.$ = yy.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED; \nbreak;\ncase 98:\n this.$ = yy.LINETYPE.BIDIRECTIONAL_SOLID; \nbreak;\ncase 99:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 100:\n this.$ = yy.LINETYPE.BIDIRECTIONAL_DOTTED; \nbreak;\ncase 101:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 102:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 103:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 104:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 105:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},o($Vy,[2,5]),{9:48,13:13,14:$V7,15:$V8,18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},o($Vy,[2,7]),o($Vy,[2,8]),o($Vy,[2,9]),o($Vy,[2,15]),{13:49,51:$Vp,53:$Vq,54:$Vr},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:$Vx},{23:56,73:$Vx},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},o($Vy,[2,30]),o($Vy,[2,31]),{33:[1,62]},{35:[1,63]},o($Vy,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:$Vz},{23:75,55:76,73:$Vz},{23:77,73:$Vx},{69:78,72:[1,79],78:$VA,79:$VB,80:$VC,81:$VD,82:$VE,83:$VF,84:$VG,85:$VH,86:$VI,87:$VJ,88:$VK,89:$VL,90:$VM,91:$VN,92:$VO,93:$VP,94:$VQ,95:$VR,96:$VS,97:$VT,98:$VU,99:$VV,100:$VW,101:$VX,102:$VY,103:$VZ},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:$Vx},{23:111,73:$Vx},{23:112,73:$Vx},{23:113,73:$Vx},o([5,66,72,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,103,104],$V_),o($Vy,[2,6]),o($Vy,[2,16]),o($V$,[2,10],{11:114}),o($Vy,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},o($Vy,[2,22]),{5:[1,118]},{5:[1,119]},o($Vy,[2,25]),o($Vy,[2,26]),o($Vy,[2,27]),o($Vy,[2,28]),o($Vy,[2,29]),o($Vy,[2,32]),o($Vy,[2,33]),o($V01,$V3,{7:120}),o($V01,$V3,{7:121}),o($V01,$V3,{7:122}),o($V11,$V3,{41:123,7:124}),o($V21,$V3,{43:125,7:126}),o($V21,$V3,{7:126,43:127}),o($V31,$V3,{46:128,7:129}),o($V01,$V3,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},o($V41,$V_,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:$Vx},{69:146,78:$VA,79:$VB,80:$VC,81:$VD,82:$VE,83:$VF,84:$VG,85:$VH,86:$VI,87:$VJ,88:$VK,89:$VL,90:$VM,91:$VN,92:$VO,93:$VP,94:$VQ,95:$VR,96:$VS,97:$VT,98:$VU,99:$VV,100:$VW,101:$VX,102:$VY,103:$VZ},o($V51,[2,79]),o($V51,[2,80]),o($V51,[2,81]),o($V51,[2,82]),o($V51,[2,83]),o($V51,[2,84]),o($V51,[2,85]),o($V51,[2,86]),o($V51,[2,87]),o($V51,[2,88]),o($V51,[2,89]),o($V51,[2,90]),o($V51,[2,91]),o($V51,[2,92]),o($V51,[2,93]),o($V51,[2,94]),o($V51,[2,95]),o($V51,[2,96]),o($V51,[2,97]),o($V51,[2,98]),o($V51,[2,99]),o($V51,[2,100]),o($V51,[2,101]),o($V51,[2,102]),o($V51,[2,103]),o($V51,[2,104]),{23:147,73:$Vx},{23:149,60:148,73:$Vx},{73:[2,68]},{73:[2,69]},{58:150,104:$V61},{58:152,104:$V61},{58:153,104:$V61},{58:154,104:$V61},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:$Vp,53:$Vq,54:$Vr},{5:[1,160]},o($Vy,[2,20]),o($Vy,[2,21]),o($Vy,[2,23]),o($Vy,[2,24]),{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[1,161],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[1,162],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[1,163],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{17:[1,164]},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[2,47],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,50:[1,165],51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{17:[1,166]},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[2,45],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,49:[1,167],51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{17:[1,168]},{17:[1,169]},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[2,43],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,48:[1,170],51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{4:$V4,5:$V5,8:8,9:10,10:$V6,13:13,14:$V7,15:$V8,17:[1,171],18:16,19:$V9,22:$Va,23:41,24:$Vb,25:20,26:21,27:22,28:23,29:24,30:$Vc,31:$Vd,32:$Ve,34:$Vf,36:$Vg,37:$Vh,38:$Vi,39:$Vj,40:$Vk,42:$Vl,44:$Vm,45:$Vn,47:$Vo,51:$Vp,53:$Vq,54:$Vr,56:$Vs,61:$Vt,62:$Vu,63:$Vv,64:$Vw,73:$Vx},{16:[1,172]},o($Vy,[2,50]),{16:[1,173]},o($Vy,[2,55]),o($V41,[2,76]),{76:[1,174]},{16:[1,175]},o($Vy,[2,52]),{16:[1,176]},o($Vy,[2,57]),o($Vy,[2,53]),{23:177,73:$Vx},{23:178,73:$Vx},{23:179,73:$Vx},{58:180,104:$V61},{23:181,72:[1,182],73:$Vx},{58:183,104:$V61},{58:184,104:$V61},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},o($Vy,[2,17]),o($V$,[2,11]),{13:186,51:$Vp,53:$Vq,54:$Vr},o($V$,[2,13]),o($V$,[2,14]),o($Vy,[2,19]),o($Vy,[2,35]),o($Vy,[2,36]),o($Vy,[2,37]),o($Vy,[2,38]),{16:[1,187]},o($Vy,[2,39]),{16:[1,188]},o($Vy,[2,40]),o($Vy,[2,41]),{16:[1,189]},o($Vy,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:$V61},{58:196,104:$V61},{58:197,104:$V61},{5:[2,75]},{58:198,104:$V61},{23:199,73:$Vx},{5:[2,58]},{5:[2,59]},{23:200,73:$Vx},o($V$,[2,12]),o($V11,$V3,{7:124,41:201}),o($V21,$V3,{7:126,43:202}),o($V31,$V3,{7:129,46:203}),o($Vy,[2,49]),o($Vy,[2,54]),o($V41,[2,77]),o($Vy,[2,51]),o($Vy,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:$V61},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],\ndefaultActions: {5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},\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 5;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip same-line whitespace */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:return 20;\nbreak;\ncase 7: this.begin('CONFIG'); return 75; \nbreak;\ncase 8: return 76; \nbreak;\ncase 9: this.popState(); this.begin('ALIAS'); return 77; \nbreak;\ncase 10: this.popState(); this.popState(); return 77; \nbreak;\ncase 11: yy_.yytext = yy_.yytext.trim(); return 73; \nbreak;\ncase 12: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 73; \nbreak;\ncase 13: yy_.yytext = yy_.yytext.trim(); this.popState(); return 73; \nbreak;\ncase 14: this.popState(); return 10; \nbreak;\ncase 15: yy_.yytext = yy_.yytext.trim(); this.popState(); return 10; \nbreak;\ncase 16: this.begin('LINE'); return 15; \nbreak;\ncase 17: this.begin('ID'); return 51; \nbreak;\ncase 18: this.begin('ID'); return 53; \nbreak;\ncase 19:return 14;\nbreak;\ncase 20: this.begin('ID'); return 54; \nbreak;\ncase 21: this.popState(); this.popState(); this.begin('LINE'); return 52; \nbreak;\ncase 22: this.popState(); this.popState(); return 5; \nbreak;\ncase 23: this.begin('LINE'); return 37; \nbreak;\ncase 24: this.begin('LINE'); return 38; \nbreak;\ncase 25: this.begin('LINE'); return 39; \nbreak;\ncase 26: this.begin('LINE'); return 40; \nbreak;\ncase 27: this.begin('LINE'); return 50; \nbreak;\ncase 28: this.begin('LINE'); return 42; \nbreak;\ncase 29: this.begin('LINE'); return 44; \nbreak;\ncase 30: this.begin('LINE'); return 49; \nbreak;\ncase 31: this.begin('LINE'); return 45; \nbreak;\ncase 32: this.begin('LINE'); return 48; \nbreak;\ncase 33: this.begin('LINE'); return 47; \nbreak;\ncase 34: this.popState(); return 16; \nbreak;\ncase 35:return 17;\nbreak;\ncase 36:return 67;\nbreak;\ncase 37:return 68;\nbreak;\ncase 38:return 61;\nbreak;\ncase 39:return 62;\nbreak;\ncase 40:return 63;\nbreak;\ncase 41:return 64;\nbreak;\ncase 42:return 59;\nbreak;\ncase 43:return 56;\nbreak;\ncase 44: this.begin('ID'); return 22; \nbreak;\ncase 45: this.begin('ID'); return 24; \nbreak;\ncase 46:return 30;\nbreak;\ncase 47:return 31;\nbreak;\ncase 48: this.begin(\"acc_title\");return 32; \nbreak;\ncase 49: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 50: this.begin(\"acc_descr\");return 34; \nbreak;\ncase 51: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 52: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 53: this.popState(); \nbreak;\ncase 54:return \"acc_descr_multiline_value\";\nbreak;\ncase 55:return 6;\nbreak;\ncase 56:return 19;\nbreak;\ncase 57:return 21;\nbreak;\ncase 58:return 66;\nbreak;\ncase 59:return 5;\nbreak;\ncase 60: yy_.yytext = yy_.yytext.trim(); return 73; \nbreak;\ncase 61:return 80;\nbreak;\ncase 62:return 97;\nbreak;\ncase 63:return 98;\nbreak;\ncase 64:return 99;\nbreak;\ncase 65:return 78;\nbreak;\ncase 66:return 79;\nbreak;\ncase 67:return 100;\nbreak;\ncase 68:return 101;\nbreak;\ncase 69:return 102;\nbreak;\ncase 70:return 103;\nbreak;\ncase 71:return 85;\nbreak;\ncase 72:return 86;\nbreak;\ncase 73:return 87;\nbreak;\ncase 74:return 88;\nbreak;\ncase 75:return 93;\nbreak;\ncase 76:return 94;\nbreak;\ncase 77:return 95;\nbreak;\ncase 78:return 96;\nbreak;\ncase 79:return 81;\nbreak;\ncase 80:return 82;\nbreak;\ncase 81:return 83;\nbreak;\ncase 82:return 84;\nbreak;\ncase 83:return 89;\nbreak;\ncase 84:return 90;\nbreak;\ncase 85:return 91;\nbreak;\ncase 86:return 92;\nbreak;\ncase 87:return 104;\nbreak;\ncase 88:return 104;\nbreak;\ncase 89:return 70;\nbreak;\ncase 90:return 71;\nbreak;\ncase 91:return 72;\nbreak;\ncase 92:return 5;\nbreak;\ncase 93:return 10;\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:([0-9]+(\\.[0-9]{1,2})?|\\.[0-9]{1,2})(?=[ \\n]+))/i,/^(?:@\\{)/i,/^(?:[^\\}]+)/i,/^(?:\\}(?=\\s+as\\s))/i,/^(?:\\})/i,/^(?:[^\\<->\\->:\\n,;@\\s]+(?=@\\{))/i,/^(?:[^<>:\\n,;@\\s]+(?=\\s+as\\s))/i,/^(?:[^<>:\\n,;@]+(?=\\s*[\\n;#]|$))/i,/^(?:[^<>:\\n,;@]*<[^\\n]*)/i,/^(?:[^\\n]+)/i,/^(?:box\\b)/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:create\\b)/i,/^(?:destroy\\b)/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:par_over\\b)/i,/^(?:and\\b)/i,/^(?:critical\\b)/i,/^(?:option\\b)/i,/^(?:break\\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\\s[^#\\n;]+)/i,/^(?:title:\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:off\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\/\\\\\\+\\()\\+<\\->\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)|-\\|\\\\|-\\\\|-\\/|-\\/\\/|-\\|\\/|\\/\\|-|\\\\\\|-|\\/\\/-|\\\\\\\\-|\\/\\|-|--\\|\\\\|--|\\(\\)))[\\-]*[^\\+<\\->\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?:--\\|\\\\)/i,/^(?:--\\|\\/)/i,/^(?:--\\\\\\\\)/i,/^(?:--\\/\\/)/i,/^(?:\\/\\|--)/i,/^(?:\\\\\\|--)/i,/^(?:\\/\\/--)/i,/^(?:\\\\\\\\--)/i,/^(?:-\\|\\\\)/i,/^(?:-\\|\\/)/i,/^(?:-\\\\\\\\)/i,/^(?:-\\/\\/)/i,/^(?:\\/\\|-)/i,/^(?:\\\\\\|-)/i,/^(?:\\/\\/-)/i,/^(?:\\\\\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]*)/i,/^(?::)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:\\(\\))/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[53,54],\"inclusive\":false},\"acc_descr\":{\"rules\":[51],\"inclusive\":false},\"acc_title\":{\"rules\":[49],\"inclusive\":false},\"ID\":{\"rules\":[2,3,7,11,12,13,14,15],\"inclusive\":false},\"ALIAS\":{\"rules\":[2,3,21,22],\"inclusive\":false},\"LINE\":{\"rules\":[2,3,34],\"inclusive\":false},\"CONFIG\":{\"rules\":[8,9,10],\"inclusive\":false},\"CONFIG_DATA\":{\"rules\":[],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,4,5,6,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,52,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],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport * as yaml from 'js-yaml';\nimport type { DiagramDB } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { ImperativeState } from '../../utils/imperativeState.js';\nimport { sanitizeText } from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { Actor, AddMessageParams, Box, Message, Note } from './types.js';\nimport type { ParticipantMetaData } from '../../types.js';\n\ninterface SequenceState {\n prevActor?: string;\n actors: Map;\n createdActors: Map;\n destroyedActors: Map;\n boxes: Box[];\n messages: Message[];\n notes: Note[];\n sequenceNumbersEnabled: boolean;\n wrapEnabled?: boolean;\n currentBox?: Box;\n lastCreated?: Actor;\n lastDestroyed?: Actor;\n}\n\nconst LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n CRITICAL_START: 27,\n CRITICAL_OPTION: 28,\n CRITICAL_END: 29,\n BREAK_START: 30,\n BREAK_END: 31,\n PAR_OVER_START: 32,\n BIDIRECTIONAL_SOLID: 33,\n BIDIRECTIONAL_DOTTED: 34,\n\n SOLID_TOP: 41,\n SOLID_BOTTOM: 42,\n STICK_TOP: 43,\n STICK_BOTTOM: 44,\n\n SOLID_ARROW_TOP_REVERSE: 45,\n SOLID_ARROW_BOTTOM_REVERSE: 46,\n STICK_ARROW_TOP_REVERSE: 47,\n STICK_ARROW_BOTTOM_REVERSE: 48,\n\n SOLID_TOP_DOTTED: 51,\n SOLID_BOTTOM_DOTTED: 52,\n STICK_TOP_DOTTED: 53,\n STICK_BOTTOM_DOTTED: 54,\n\n SOLID_ARROW_TOP_REVERSE_DOTTED: 55,\n SOLID_ARROW_BOTTOM_REVERSE_DOTTED: 56,\n STICK_ARROW_TOP_REVERSE_DOTTED: 57,\n STICK_ARROW_BOTTOM_REVERSE_DOTTED: 58,\n\n CENTRAL_CONNECTION: 59,\n CENTRAL_CONNECTION_REVERSE: 60,\n CENTRAL_CONNECTION_DUAL: 61,\n} as const;\n\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1,\n} as const;\n\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2,\n} as const;\n\nexport const PARTICIPANT_TYPE = {\n ACTOR: 'actor',\n BOUNDARY: 'boundary',\n COLLECTIONS: 'collections',\n CONTROL: 'control',\n DATABASE: 'database',\n ENTITY: 'entity',\n PARTICIPANT: 'participant',\n QUEUE: 'queue',\n} as const;\n\nexport class SequenceDB implements DiagramDB {\n private readonly state = new ImperativeState(() => ({\n prevActor: undefined,\n actors: new Map(),\n createdActors: new Map(),\n destroyedActors: new Map(),\n boxes: [],\n messages: [],\n notes: [],\n sequenceNumbersEnabled: false,\n wrapEnabled: undefined,\n currentBox: undefined,\n lastCreated: undefined,\n lastDestroyed: undefined,\n }));\n\n constructor() {\n // Needed for JISON since it only supports direct properties\n this.apply = this.apply.bind(this);\n this.parseBoxData = this.parseBoxData.bind(this);\n this.parseMessage = this.parseMessage.bind(this);\n\n this.clear();\n\n this.setWrap(getConfig().wrap);\n this.LINETYPE = LINETYPE;\n this.ARROWTYPE = ARROWTYPE;\n this.PLACEMENT = PLACEMENT;\n }\n\n public addBox(data: { text: string; color: string; wrap: boolean }) {\n this.state.records.boxes.push({\n name: data.text,\n wrap: data.wrap ?? this.autoWrap(),\n fill: data.color,\n actorKeys: [],\n });\n this.state.records.currentBox = this.state.records.boxes.slice(-1)[0];\n }\n\n public addActor(\n id: string,\n name: string,\n description: { text: string; wrap?: boolean | null; type: string },\n type: string,\n metadata?: any\n ) {\n let assignedBox = this.state.records.currentBox;\n let doc;\n if (metadata !== undefined) {\n let yamlData;\n // detect if shapeData contains a newline character\n if (!metadata.includes('\\n')) {\n yamlData = '{\\n' + metadata + '\\n}';\n } else {\n yamlData = metadata + '\\n';\n }\n doc = yaml.load(yamlData, { schema: yaml.JSON_SCHEMA }) as ParticipantMetaData;\n }\n type = doc?.type ?? type;\n\n // If alias is provided in metadata and description is not already set, use the alias\n if (doc?.alias && (!description || description.text === name)) {\n description = { text: doc.alias, wrap: description?.wrap, type };\n }\n\n const old = this.state.records.actors.get(id);\n if (old) {\n // If already set and trying to set to a new one throw error\n if (this.state.records.currentBox && old.box && this.state.records.currentBox !== old.box) {\n throw new Error(\n `A same participant should only be defined in one Box: ${old.name} can't be in '${old.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`\n );\n }\n\n // Don't change the box if already\n assignedBox = old.box ? old.box : this.state.records.currentBox;\n old.box = assignedBox;\n\n // Don't allow description nulling\n if (old && name === old.name && description == null) {\n return;\n }\n }\n\n // Don't allow null descriptions, either\n if (description?.text == null) {\n description = { text: name, type };\n }\n if (type == null || description.text == null) {\n description = { text: name, type };\n }\n\n this.state.records.actors.set(id, {\n box: assignedBox,\n name: name,\n description: description.text,\n wrap: description.wrap ?? this.autoWrap(),\n prevActor: this.state.records.prevActor,\n links: {},\n properties: {},\n actorCnt: null,\n rectData: null,\n type: type ?? 'participant',\n });\n if (this.state.records.prevActor) {\n const prevActorInRecords = this.state.records.actors.get(this.state.records.prevActor);\n if (prevActorInRecords) {\n prevActorInRecords.nextActor = id;\n }\n }\n\n if (this.state.records.currentBox) {\n this.state.records.currentBox.actorKeys.push(id);\n }\n this.state.records.prevActor = id;\n }\n\n private activationCount(part: string) {\n let i;\n let count = 0;\n if (!part) {\n return 0;\n }\n for (i = 0; i < this.state.records.messages.length; i++) {\n if (\n this.state.records.messages[i].type === this.LINETYPE.ACTIVE_START &&\n this.state.records.messages[i].from === part\n ) {\n count++;\n }\n if (\n this.state.records.messages[i].type === this.LINETYPE.ACTIVE_END &&\n this.state.records.messages[i].from === part\n ) {\n count--;\n }\n }\n return count;\n }\n\n public addMessage(\n idFrom: Message['from'],\n idTo: Message['to'],\n message: { text: string; wrap?: boolean },\n answer: Message['answer']\n ) {\n this.state.records.messages.push({\n id: this.state.records.messages.length.toString(),\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap ?? this.autoWrap(),\n answer: answer,\n });\n }\n\n public addSignal(\n idFrom?: Message['from'],\n idTo?: Message['to'],\n message?: { text: string; wrap: boolean },\n messageType?: number,\n activate = false,\n centralConnection?: number\n ) {\n if (messageType === this.LINETYPE.ACTIVE_END) {\n const cnt = this.activationCount(idFrom ?? '');\n if (cnt < 1) {\n // Bail out as there is an activation signal from an inactive participant\n const error = new Error('Trying to inactivate an inactive participant (' + idFrom + ')');\n\n // @ts-ignore: we are passing hash param to the error object, however we should define our own custom error class to make it type safe\n error.hash = {\n text: '->>-',\n token: '->>-',\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"],\n };\n throw error;\n }\n }\n this.state.records.messages.push({\n id: this.state.records.messages.length.toString(),\n from: idFrom,\n to: idTo,\n message: message?.text ?? '',\n wrap: message?.wrap ?? this.autoWrap(),\n type: messageType,\n activate,\n centralConnection: centralConnection ?? 0,\n });\n return true;\n }\n\n public hasAtLeastOneBox() {\n return this.state.records.boxes.length > 0;\n }\n\n public hasAtLeastOneBoxWithTitle() {\n return this.state.records.boxes.some((b) => b.name);\n }\n\n public getMessages() {\n return this.state.records.messages;\n }\n\n public getBoxes() {\n return this.state.records.boxes;\n }\n public getActors() {\n return this.state.records.actors;\n }\n public getCreatedActors() {\n return this.state.records.createdActors;\n }\n public getDestroyedActors() {\n return this.state.records.destroyedActors;\n }\n public getActor(id: string) {\n // TODO: do we ever use this function in a way that it might return undefined?\n return this.state.records.actors.get(id)!;\n }\n public getActorKeys() {\n return [...this.state.records.actors.keys()];\n }\n public enableSequenceNumbers() {\n this.state.records.sequenceNumbersEnabled = true;\n }\n public disableSequenceNumbers() {\n this.state.records.sequenceNumbersEnabled = false;\n }\n public showSequenceNumbers() {\n return this.state.records.sequenceNumbersEnabled;\n }\n\n public setWrap(wrapSetting?: boolean) {\n this.state.records.wrapEnabled = wrapSetting;\n }\n\n private extractWrap(text?: string): { cleanedText?: string; wrap?: boolean } {\n if (text === undefined) {\n return {};\n }\n text = text.trim();\n const wrap =\n /^:?wrap:/.exec(text) !== null ? true : /^:?nowrap:/.exec(text) !== null ? false : undefined;\n const cleanedText = (wrap === undefined ? text : text.replace(/^:?(?:no)?wrap:/, '')).trim();\n return { cleanedText, wrap };\n }\n\n public autoWrap() {\n // if setWrap has been called, use that value, otherwise use the value from the config\n // TODO: refactor, always use the config value let setWrap update the config value\n if (this.state.records.wrapEnabled !== undefined) {\n return this.state.records.wrapEnabled;\n }\n return getConfig().sequence?.wrap ?? false;\n }\n\n public clear() {\n this.state.reset();\n commonClear();\n }\n\n public parseMessage(str: string) {\n const trimmedStr = str.trim();\n const { wrap, cleanedText } = this.extractWrap(trimmedStr);\n const message = {\n text: cleanedText,\n wrap,\n };\n log.debug(`parseMessage: ${JSON.stringify(message)}`);\n return message;\n }\n\n // We expect the box statement to be color first then description\n // The color can be rgb,rgba,hsl,hsla, or css code names #hex codes are not supported for now because of the way the char # is handled\n // We extract first segment as color, the rest of the line is considered as text\n public parseBoxData(str: string) {\n const match = /^((?:rgba?|hsla?)\\s*\\(.*\\)|\\w*)(.*)$/.exec(str);\n let color = match?.[1] ? match[1].trim() : 'transparent';\n let title = match?.[2] ? match[2].trim() : undefined;\n\n // check that the string is a color\n if (window?.CSS) {\n if (!window.CSS.supports('color', color)) {\n color = 'transparent';\n title = str.trim();\n }\n } else {\n const style = new Option().style;\n style.color = color;\n if (style.color !== color) {\n color = 'transparent';\n title = str.trim();\n }\n }\n const { wrap, cleanedText } = this.extractWrap(title);\n return {\n text: cleanedText ? sanitizeText(cleanedText, getConfig()) : undefined,\n color,\n wrap,\n };\n }\n\n public readonly LINETYPE: typeof LINETYPE;\n public readonly ARROWTYPE: typeof ARROWTYPE;\n public readonly PLACEMENT: typeof PLACEMENT;\n\n public addNote(\n actor: { actor: string },\n placement: Message['placement'],\n message: { text: string; wrap?: boolean }\n ) {\n const note: Note = {\n actor: actor,\n placement: placement,\n message: message.text,\n wrap: message.wrap ?? this.autoWrap(),\n };\n\n //@ts-ignore: Coerce actor into a [to, from, ...] array\n // eslint-disable-next-line unicorn/prefer-spread\n const actors = [].concat(actor, actor);\n this.state.records.notes.push(note);\n this.state.records.messages.push({\n id: this.state.records.messages.length.toString(),\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: message.wrap ?? this.autoWrap(),\n type: this.LINETYPE.NOTE,\n placement: placement,\n });\n }\n\n public addLinks(actorId: string, text: { text: string }) {\n // find the actor\n const actor = this.getActor(actorId);\n // JSON.parse the text\n try {\n let sanitizedText = sanitizeText(text.text, getConfig());\n sanitizedText = sanitizedText.replace(/=/g, '=');\n sanitizedText = sanitizedText.replace(/&/g, '&');\n const links = JSON.parse(sanitizedText);\n // add the deserialized text to the actor's links field.\n this.insertLinks(actor, links);\n } catch (e) {\n log.error('error while parsing actor link text', e);\n }\n }\n\n public addALink(actorId: string, text: { text: string }) {\n // find the actor\n const actor = this.getActor(actorId);\n try {\n const links: Record = {};\n let sanitizedText = sanitizeText(text.text, getConfig());\n const sep = sanitizedText.indexOf('@');\n sanitizedText = sanitizedText.replace(/=/g, '=');\n sanitizedText = sanitizedText.replace(/&/g, '&');\n const label = sanitizedText.slice(0, sep - 1).trim();\n const link = sanitizedText.slice(sep + 1).trim();\n\n links[label] = link;\n // add the deserialized text to the actor's links field.\n this.insertLinks(actor, links);\n } catch (e) {\n log.error('error while parsing actor link text', e);\n }\n }\n\n private insertLinks(actor: Actor, links: Record) {\n if (actor.links == null) {\n actor.links = links;\n } else {\n for (const key in links) {\n actor.links[key] = links[key];\n }\n }\n }\n\n public addProperties(actorId: string, text: { text: string }) {\n // find the actor\n const actor = this.getActor(actorId);\n // JSON.parse the text\n try {\n const sanitizedText = sanitizeText(text.text, getConfig());\n const properties: Record = JSON.parse(sanitizedText);\n // add the deserialized text to the actor's property field.\n this.insertProperties(actor, properties);\n } catch (e) {\n log.error('error while parsing actor properties text', e);\n }\n }\n\n private insertProperties(actor: Actor, properties: Record) {\n if (actor.properties == null) {\n actor.properties = properties;\n } else {\n for (const key in properties) {\n actor.properties[key] = properties[key];\n }\n }\n }\n\n private boxEnd() {\n this.state.records.currentBox = undefined;\n }\n\n public addDetails(actorId: string, text: { text: string }) {\n // find the actor\n const actor = this.getActor(actorId);\n const elem = document.getElementById(text.text)!;\n\n // JSON.parse the text\n try {\n const text = elem.innerHTML;\n const details = JSON.parse(text);\n // add the deserialized text to the actor's property field.\n if (details.properties) {\n this.insertProperties(actor, details.properties);\n }\n\n if (details.links) {\n this.insertLinks(actor, details.links);\n }\n } catch (e) {\n log.error('error while parsing actor details text', e);\n }\n }\n\n public getActorProperty(actor: Actor, key: string) {\n if (actor?.properties !== undefined) {\n return actor.properties[key];\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-redundant-type-constituents\n public apply(param: any | AddMessageParams | AddMessageParams[]) {\n if (Array.isArray(param)) {\n param.forEach((item) => {\n this.apply(item);\n });\n } else {\n switch (param.type) {\n case 'sequenceIndex':\n this.state.records.messages.push({\n id: this.state.records.messages.length.toString(),\n from: undefined,\n to: undefined,\n message: {\n start: param.sequenceIndex,\n step: param.sequenceIndexStep,\n visible: param.sequenceVisible,\n },\n wrap: false,\n type: param.signalType,\n });\n break;\n case 'addParticipant':\n this.addActor(param.actor, param.actor, param.description, param.draw, param.config);\n break;\n case 'createParticipant':\n if (this.state.records.actors.has(param.actor)) {\n throw new Error(\n \"It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior\"\n );\n }\n this.state.records.lastCreated = param.actor;\n this.addActor(param.actor, param.actor, param.description, param.draw, param.config);\n this.state.records.createdActors.set(param.actor, this.state.records.messages.length);\n break;\n case 'destroyParticipant':\n this.state.records.lastDestroyed = param.actor;\n this.state.records.destroyedActors.set(param.actor, this.state.records.messages.length);\n break;\n case 'activeStart':\n this.addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'centralConnection':\n this.addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'centralConnectionReverse':\n this.addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'activeEnd':\n this.addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'addNote':\n this.addNote(param.actor, param.placement, param.text);\n break;\n case 'addLinks':\n this.addLinks(param.actor, param.text);\n break;\n case 'addALink':\n this.addALink(param.actor, param.text);\n break;\n case 'addProperties':\n this.addProperties(param.actor, param.text);\n break;\n case 'addDetails':\n this.addDetails(param.actor, param.text);\n break;\n case 'addMessage':\n if (this.state.records.lastCreated) {\n if (param.to !== this.state.records.lastCreated) {\n throw new Error(\n 'The created participant ' +\n this.state.records.lastCreated.name +\n ' does not have an associated creating message after its declaration. Please check the sequence diagram.'\n );\n } else {\n this.state.records.lastCreated = undefined;\n }\n } else if (this.state.records.lastDestroyed) {\n if (\n param.to !== this.state.records.lastDestroyed &&\n param.from !== this.state.records.lastDestroyed\n ) {\n throw new Error(\n 'The destroyed participant ' +\n this.state.records.lastDestroyed.name +\n ' does not have an associated destroying message after its declaration. Please check the sequence diagram.'\n );\n } else {\n this.state.records.lastDestroyed = undefined;\n }\n }\n this.addSignal(\n param.from,\n param.to,\n param.msg,\n param.signalType,\n param.activate,\n param.centralConnection\n );\n break;\n case 'boxStart':\n this.addBox(param.boxData);\n break;\n case 'boxEnd':\n this.boxEnd();\n break;\n case 'loopStart':\n this.addSignal(undefined, undefined, param.loopText, param.signalType);\n break;\n case 'loopEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'rectStart':\n this.addSignal(undefined, undefined, param.color, param.signalType);\n break;\n case 'rectEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'optStart':\n this.addSignal(undefined, undefined, param.optText, param.signalType);\n break;\n case 'optEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'altStart':\n this.addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'else':\n this.addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'altEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'setAccTitle':\n setAccTitle(param.text);\n break;\n case 'parStart':\n this.addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'and':\n this.addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'parEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'criticalStart':\n this.addSignal(undefined, undefined, param.criticalText, param.signalType);\n break;\n case 'option':\n this.addSignal(undefined, undefined, param.optionText, param.signalType);\n break;\n case 'criticalEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'breakStart':\n this.addSignal(undefined, undefined, param.breakText, param.signalType);\n break;\n case 'breakEnd':\n this.addSignal(undefined, undefined, undefined, param.signalType);\n break;\n }\n }\n }\n\n public setAccTitle = setAccTitle;\n public setAccDescription = setAccDescription;\n public setDiagramTitle = setDiagramTitle;\n public getAccTitle = getAccTitle;\n public getAccDescription = getAccDescription;\n public getDiagramTitle = getDiagramTitle;\n public getConfig() {\n return getConfig().sequence;\n }\n}\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\n\nconst getStyles = (options) => {\n const dropShadow = options.dropShadow ?? 'none';\n const { look } = getConfig();\n\n return `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n stroke-width: ${options.strokeWidth ?? 1};\n }\n\n rect.actor.outer-path[data-look=\"neo\"] {\n filter: ${dropShadow};\n }\n\n rect.note[data-look=\"neo\"] {\n stroke:${options.noteBorderColor};\n fill:${options.noteBkgColor};\n filter: ${dropShadow};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n\n .innerArc {\n stroke-width: 1.5;\n stroke-dasharray: none;\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n [id$=\"-arrowhead\"] path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n [id$=\"-sequencenumber\"] {\n fill: ${options.signalColor};\n }\n\n [id$=\"-crosshead\"] path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n filter: ${look === 'neo' ? dropShadow : 'none'};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .sectionTitle, .sectionTitle > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n ${options.noteFontWeight ? `font-weight: ${options.noteFontWeight};` : ''}\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${options.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man circle, line {\n fill: ${options.actorBkg};\n stroke-width: 2px;\n }\n\n g rect.rect {\n filter: ${dropShadow};\n stroke: ${options.nodeBorder};\n }\n`;\n};\n\nexport default getStyles;\n", "import { sanitizeUrl } from '@braintree/sanitize-url';\nimport * as configApi from '../../config.js';\nimport { ZERO_WIDTH_SPACE, parseFontSize } from '../../utils.js';\nimport common, {\n calculateMathMLDimensions,\n hasKatex,\n renderKatexSanitized,\n} from '../common/common.js';\nimport * as svgDrawCommon from '../common/svgDrawCommon.js';\n\nexport const ACTOR_TYPE_WIDTH = 18 * 2;\nconst TOP_ACTOR_CLASS = 'actor-top';\nconst BOTTOM_ACTOR_CLASS = 'actor-bottom';\nconst ACTOR_BOX_CLASS = 'actor-box';\nconst ACTOR_MAN_FIGURE_CLASS = 'actor-man';\n\n/** Exact set of themes that use color arrays for actor styling */\nconst COLOR_THEMES = new Set(['redux-color', 'redux-dark-color']);\nexport const drawRect = function (elem, rectData) {\n const rectElement = svgDrawCommon.drawRect(elem, rectData);\n // Call getConfig() here (not at module level) so multi-diagram pages get fresh config\n if (configApi.getConfig().look === 'neo') {\n rectElement.attr('data-look', 'neo');\n }\n return rectElement;\n};\n\nexport const drawPopup = function (elem, actor, minMenuWidth, textAttrs, forceMenus) {\n if (actor.links === undefined || actor.links === null || Object.keys(actor.links).length === 0) {\n return { height: 0, width: 0 };\n }\n\n const links = actor.links;\n const actorCnt = actor.actorCnt;\n const rectData = actor.rectData;\n\n var displayValue = 'none';\n if (forceMenus) {\n displayValue = 'block !important';\n }\n\n const g = elem.append('g');\n g.attr('id', 'actor' + actorCnt + '_popup');\n g.attr('class', 'actorPopupMenu');\n g.attr('display', displayValue);\n var actorClass = '';\n if (rectData.class !== undefined) {\n actorClass = ' ' + rectData.class;\n }\n\n let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth;\n\n const rectElem = g.append('rect');\n rectElem.attr('class', 'actorPopupMenuPanel' + actorClass);\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.height);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', menuWidth);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n if (links != null) {\n var linkY = 20;\n for (let key in links) {\n var linkElem = g.append('a');\n var sanitizedLink = sanitizeUrl(links[key]);\n linkElem.attr('xlink:href', sanitizedLink);\n linkElem.attr('target', '_blank');\n\n _drawMenuItemTextCandidateFunc(textAttrs)(\n key,\n linkElem,\n rectData.x + 10,\n rectData.height + linkY,\n menuWidth,\n 20,\n { class: 'actor' },\n textAttrs\n );\n\n linkY += 30;\n }\n }\n\n rectElem.attr('height', linkY);\n\n return { height: rectData.height + linkY, width: menuWidth };\n};\n\nconst popupMenuToggle = function (popId) {\n return (\n \"var pu = document.getElementById('\" +\n popId +\n \"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }\"\n );\n};\n\nexport const drawKatex = async function (elem, textData, msgModel = null) {\n let textElem = elem.append('foreignObject');\n const linesSanitized = await renderKatexSanitized(textData.text, configApi.getConfig());\n\n const divElem = textElem\n .append('xhtml:div')\n .attr('style', 'width: fit-content;')\n .attr('xmlns', 'http://www.w3.org/1999/xhtml')\n .html(linesSanitized);\n const dim = divElem.node().getBoundingClientRect();\n\n textElem.attr('height', Math.round(dim.height)).attr('width', Math.round(dim.width));\n\n if (textData.class === 'noteText') {\n const rectElem = elem.node().firstChild;\n\n rectElem.setAttribute('height', dim.height + 2 * textData.textMargin);\n const rectDim = rectElem.getBBox();\n\n textElem\n .attr('x', Math.round(rectDim.x + rectDim.width / 2 - dim.width / 2))\n .attr('y', Math.round(rectDim.y + rectDim.height / 2 - dim.height / 2));\n } else if (msgModel) {\n let { startx, stopx, starty } = msgModel;\n if (startx > stopx) {\n const temp = startx;\n startx = stopx;\n stopx = temp;\n }\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n textElem.attr('x', Math.round(startx + Math.abs(startx - stopx) / 2 - dim.width / 2));\n if (textData.class === 'loopText') {\n textElem.attr('y', Math.round(starty));\n } else {\n textElem.attr('y', Math.round(starty - dim.height));\n }\n }\n\n return [textElem];\n};\n\nexport const drawText = function (elem, textData) {\n let prevTextHeight = 0;\n let textHeight = 0;\n const lines = textData.text.split(common.lineBreakRegex);\n\n const [_textFontSize, _textFontSizePx] = parseFontSize(textData.fontSize);\n\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (\n textData.valign !== undefined &&\n textData.textMargin !== undefined &&\n textData.textMargin > 0\n ) {\n switch (textData.valign) {\n case 'top':\n case 'start':\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case 'middle':\n case 'center':\n yfunc = () =>\n Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case 'bottom':\n case 'end':\n yfunc = () =>\n Math.round(\n textData.y +\n (prevTextHeight + textHeight + 2 * textData.textMargin) -\n textData.textMargin\n );\n break;\n }\n }\n\n if (\n textData.anchor !== undefined &&\n textData.textMargin !== undefined &&\n textData.width !== undefined\n ) {\n switch (textData.anchor) {\n case 'left':\n case 'start':\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = 'start';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'middle':\n case 'center':\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = 'middle';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'right':\n case 'end':\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = 'end';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n }\n }\n\n for (let [i, line] of lines.entries()) {\n if (\n textData.textMargin !== undefined &&\n textData.textMargin === 0 &&\n _textFontSize !== undefined\n ) {\n dy = i * _textFontSize;\n }\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', yfunc());\n if (textData.anchor !== undefined) {\n textElem\n .attr('text-anchor', textData.anchor)\n .attr('dominant-baseline', textData.dominantBaseline)\n .attr('alignment-baseline', textData.alignmentBaseline);\n }\n if (textData.fontFamily !== undefined) {\n textElem.style('font-family', textData.fontFamily);\n }\n if (_textFontSizePx !== undefined) {\n textElem.style('font-size', _textFontSizePx);\n }\n if (textData.fontWeight !== undefined) {\n textElem.style('font-weight', textData.fontWeight);\n }\n if (textData.fill !== undefined) {\n textElem.attr('fill', textData.fill);\n }\n if (textData.class !== undefined) {\n textElem.attr('class', textData.class);\n }\n if (textData.dy !== undefined) {\n textElem.attr('dy', textData.dy);\n } else if (dy !== 0) {\n textElem.attr('dy', dy);\n }\n\n const text = line || ZERO_WIDTH_SPACE;\n if (textData.tspan) {\n const span = textElem.append('tspan');\n span.attr('x', textData.x);\n if (textData.fill !== undefined) {\n span.attr('fill', textData.fill);\n }\n span.text(text);\n } else {\n textElem.text(text);\n }\n if (\n textData.valign !== undefined &&\n textData.textMargin !== undefined &&\n textData.textMargin > 0\n ) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n\n textElems.push(textElem);\n }\n\n return textElems;\n};\n\nexport const drawLabel = function (elem, txtObject) {\n /**\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} cut\n * @returns {any}\n */\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.height / 2;\n\n drawText(elem, txtObject);\n return polygon;\n};\n\nlet actorCnt = -1;\n\nexport const fixLifeLineHeights = (diagram, actors, actorKeys, conf) => {\n if (!diagram.select) {\n return;\n }\n actorKeys.forEach((actorKey) => {\n const actor = actors.get(actorKey);\n const actorDOM = diagram.select('#actor' + actor.actorCnt);\n if (!conf.mirrorActors && actor.stopy) {\n actorDOM.attr('y2', actor.stopy + actor.height / 2);\n } else if (conf.mirrorActors) {\n actorDOM.attr('y2', actor.stopy);\n }\n });\n};\n\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem - The diagram we'll draw to.\n * @param {any} actor - The actor to draw.\n * @param {any} conf - DrawText implementation discriminator object\n * @param {boolean} isFooter - If the actor is the footer one\n */\nconst drawActorTypeParticipant = function (elem, actor, conf, isFooter, actorIndexMap) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + actor.height;\n const { look, theme, themeVariables } = conf;\n const { bkgColorArray, borderColorArray } = themeVariables;\n\n const boxplusLineGroup = elem.append('g').lower();\n var g = boxplusLineGroup;\n\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf.forceMenus) {\n g.attr('onclick', popupMenuToggle(`actor${actorCnt}_popup`)).attr('cursor', 'pointer');\n }\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name)\n .attr('data-et', 'life-line')\n .attr('data-id', actor.name);\n\n g = boxplusLineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n }\n if (look === 'neo') {\n g.attr('data-look', 'neo');\n }\n }\n\n const rect = svgDrawCommon.getNoteRect();\n var cssclass = 'actor';\n if (actor.properties?.class) {\n cssclass = actor.properties.class;\n } else {\n rect.fill = '#eaeaea';\n }\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.rx = 3;\n rect.ry = 3;\n rect.name = actor.name;\n\n if (look === 'neo') {\n rect.rx = 6;\n rect.ry = 6;\n }\n const rectElem = drawRect(g, rect);\n\n const actorCount = actorIndexMap.get(actor.name) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n rectElem.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n rectElem.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n }\n if (look === 'neo') {\n rectElem.attr('filter', 'url(#drop-shadow)');\n }\n\n actor.rectData = rect;\n\n if (actor.properties?.icon) {\n const iconSrc = actor.properties.icon.trim();\n if (iconSrc.charAt(0) === '@') {\n svgDrawCommon.drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));\n } else {\n svgDrawCommon.drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);\n }\n }\n\n if (!isFooter) {\n g.attr('data-et', 'participant');\n g.attr('data-type', 'participant');\n g.attr('data-id', actor.name);\n // Note: drop-shadow filter is inserted globally via insertDropShadow() in sequenceRenderer.ts\n // \u2014 per-actor filter definitions are redundant and have been removed.\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_BOX_CLASS}` },\n conf\n );\n\n let height = actor.height;\n if (rectElem.node) {\n const bounds = rectElem.node().getBBox();\n actor.height = bounds.height;\n height = bounds.height;\n }\n\n return height;\n};\n\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem - The diagram we'll draw to.\n * @param {any} actor - The actor to draw.\n * @param {any} conf - DrawText implementation discriminator object\n * @param {boolean} isFooter - If the actor is the footer one\n */\nconst drawActorTypeCollections = function (elem, actor, conf, isFooter, actorIndexMap) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + actor.height;\n const { look, theme, themeVariables } = conf;\n const { bkgColorArray, borderColorArray } = themeVariables;\n\n const boxplusLineGroup = elem.append('g').lower();\n var g = boxplusLineGroup;\n\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf.forceMenus) {\n g.attr('onclick', popupMenuToggle(`actor${actorCnt}_popup`)).attr('cursor', 'pointer');\n }\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name)\n .attr('data-et', 'life-line')\n .attr('data-id', actor.name);\n\n g = boxplusLineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n }\n if (look === 'neo') {\n g.attr('data-look', 'neo');\n }\n }\n\n const rect = svgDrawCommon.getNoteRect();\n var cssclass = 'actor';\n if (actor.properties?.class) {\n cssclass = actor.properties.class;\n } else {\n rect.fill = '#eaeaea';\n }\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.name = actor.name;\n\n // DRAW STACKED RECTANGLES\n const offset = 6;\n const shadowRect = {\n ...rect,\n x: rect.x + (isFooter ? -offset : -offset),\n y: rect.y + (isFooter ? +offset : +offset),\n class: 'actor',\n };\n const rectElem = drawRect(g, rect); // draw main rectangle on top\n const stackedRect = drawRect(g, shadowRect);\n actor.rectData = rect;\n\n if (look === 'neo') {\n g.attr('filter', 'url(#drop-shadow)');\n }\n\n const actorCount = actorIndexMap.get(actor.name) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n rectElem.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n rectElem.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n stackedRect.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n stackedRect.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n }\n\n if (actor.properties?.icon) {\n const iconSrc = actor.properties.icon.trim();\n if (iconSrc.charAt(0) === '@') {\n svgDrawCommon.drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));\n } else {\n svgDrawCommon.drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);\n }\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x - offset,\n rect.y + offset,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_BOX_CLASS}` },\n conf\n );\n\n let height = actor.height;\n if (rectElem.node) {\n const bounds = rectElem.node().getBBox();\n actor.height = bounds.height;\n height = bounds.height;\n }\n\n if (!isFooter) {\n g.attr('data-et', 'participant');\n g.attr('data-type', 'collections');\n g.attr('data-id', actor.name);\n }\n\n return height;\n};\n\nconst drawActorTypeQueue = function (elem, actor, conf, isFooter, actorIndexMap) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + actor.height;\n const { look, theme, themeVariables } = conf;\n const { bkgColorArray, borderColorArray } = themeVariables;\n\n const boxplusLineGroup = elem.append('g').lower();\n let g = boxplusLineGroup;\n\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf.forceMenus) {\n g.attr('onclick', popupMenuToggle(`actor${actorCnt}_popup`)).attr('cursor', 'pointer');\n }\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name)\n .attr('data-et', 'life-line')\n .attr('data-id', actor.name);\n\n g = boxplusLineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n }\n if (look === 'neo') {\n g.attr('data-look', 'neo');\n }\n }\n\n const rect = svgDrawCommon.getNoteRect();\n let cssclass = 'actor';\n if (actor.properties?.class) {\n cssclass = actor.properties.class;\n } else {\n rect.fill = '#eaeaea';\n }\n\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n g.attr('class', cssclass);\n\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.name = actor.name;\n\n // Cylinder dimensions\n const ry = rect.height / 2;\n const rx = ry / (2.5 + rect.height / 50);\n\n // Cylinder base group\n const cylinderGroup = g.append('g');\n const cylinderArc = g.append('g');\n\n // Main cylinder body\n const cylinderPath = `M ${rect.x},${rect.y + ry}\n a ${rx},${ry} 0 0 0 0,${rect.height}\n h ${rect.width - 2 * rx}\n a ${rx},${ry} 0 0 0 0,-${rect.height}\n Z\n `;\n cylinderGroup.append('path').attr('d', cylinderPath);\n cylinderArc.append('path').attr(\n 'd',\n `M ${rect.x},${rect.y + ry}\n a ${rx},${ry} 0 0 0 0,${rect.height}`\n );\n\n cylinderGroup.attr('transform', `translate(${rx}, ${-(rect.height / 2)})`);\n cylinderArc.attr('transform', `translate(${rect.width - rx}, ${-rect.height / 2})`);\n\n actor.rectData = rect;\n\n if (look === 'neo') {\n cylinderGroup.attr('filter', 'url(#drop-shadow)');\n }\n\n const actorCount = actorIndexMap.get(actor.name) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n cylinderGroup.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n cylinderGroup.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n cylinderArc.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n cylinderArc.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n }\n\n if (actor.properties?.icon) {\n const iconSrc = actor.properties.icon.trim();\n const iconX = rect.x + rect.width - 20;\n const iconY = rect.y + 10;\n if (iconSrc.charAt(0) === '@') {\n svgDrawCommon.drawEmbeddedImage(g, iconX, iconY, iconSrc.substr(1));\n } else {\n svgDrawCommon.drawImage(g, iconX, iconY, iconSrc);\n }\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_BOX_CLASS}` },\n conf\n );\n\n let height = actor.height;\n const lastPath = cylinderGroup.select('path:last-child');\n if (lastPath.node()) {\n const bounds = lastPath.node().getBBox();\n actor.height = bounds.height;\n height = bounds.height;\n }\n\n if (!isFooter) {\n g.attr('data-et', 'participant');\n g.attr('data-type', 'queue');\n g.attr('data-id', actor.name);\n }\n\n return height;\n};\n\nconst drawActorTypeControl = function (elem, actor, conf, isFooter, diagramId, actorIndexMap) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 75;\n const { look, theme, themeVariables } = conf;\n const { bkgColorArray, borderColorArray, actorBorder, actorBkg } = themeVariables;\n\n const line = elem.append('g').lower();\n\n if (!isFooter) {\n actorCnt++;\n line\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name)\n .attr('data-et', 'life-line')\n .attr('data-id', actor.name);\n\n actor.actorCnt = actorCnt;\n }\n const actElem = elem.append('g');\n let cssClass = ACTOR_MAN_FIGURE_CLASS;\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr('class', cssClass);\n actElem.attr('name', actor.name);\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = actor.x;\n rect.y = actorY;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n\n const cx = actor.x + actor.width / 2;\n const cy = actorY + 32;\n const r = 22;\n\n actElem\n .append('defs')\n .append('marker')\n .attr('id', diagramId + '-filled-head-control')\n .attr('refX', 11)\n .attr('refY', 5.8)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', '172.5')\n .attr('stroke-width', 1.2)\n .append('path')\n .attr('d', 'M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z');\n\n // Draw the base circle\n actElem\n .append('circle')\n .attr('cx', cx)\n .attr('cy', cy)\n .attr('r', r)\n .attr('filter', `${look === 'neo' ? 'url(#drop-shadow)' : ''}`);\n\n // Draw looping arrow as arc path\n actElem\n .append('line')\n .attr('marker-end', 'url(#' + diagramId + '-filled-head-control)')\n .attr('transform', `translate(${cx}, ${cy - r})`);\n\n const actorCount = actorIndexMap.get(actor.name) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n actElem.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n actElem.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n } else {\n actElem.style('stroke', actorBorder);\n actElem.style('fill', actorBkg);\n }\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height + 2 * (conf?.sequence?.labelBoxHeight ?? 0);\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n rect.y + r + (!isFooter ? 12 : 5),\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` },\n conf\n );\n\n if (!isFooter) {\n actElem.attr('data-et', 'participant');\n actElem.attr('data-type', 'control');\n actElem.attr('data-id', actor.name);\n }\n\n return actor.height;\n};\n\nconst drawActorTypeEntity = function (elem, actor, conf, isFooter, actorIndexMap) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 75;\n const { look, theme, themeVariables } = conf;\n const { bkgColorArray, borderColorArray } = themeVariables;\n\n const line = elem.append('g').lower();\n\n const actElem = elem.append('g');\n let cssClass = 'actor';\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr('class', cssClass);\n actElem.attr('name', actor.name);\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = actor.x;\n rect.y = actorY;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n\n const cx = actor.x + actor.width / 2;\n const cy = actorY + (!isFooter ? 25 : 10);\n const r = 22;\n\n actElem\n .append('circle')\n .attr('cx', cx)\n .attr('cy', cy)\n .attr('r', r)\n .attr('width', actor.width)\n .attr('height', actor.height);\n\n actElem\n .append('line')\n .attr('x1', cx - r)\n .attr('x2', cx + r)\n .attr('y1', cy + r)\n .attr('y2', cy + r)\n .attr('stroke-width', 2);\n\n if (look === 'neo') {\n actElem.attr('filter', 'url(#drop-shadow)');\n }\n\n const actorCount = actorIndexMap.get(actor.name) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n actElem.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n actElem.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n }\n\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height + (conf?.sequence?.labelBoxHeight ?? 0);\n\n if (!isFooter) {\n actorCnt++;\n line\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name)\n .attr('data-et', 'life-line')\n .attr('data-id', actor.name);\n\n actor.actorCnt = actorCnt;\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n rect.y + (!isFooter ? 30 : 15),\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` },\n conf\n );\n\n if (!isFooter) {\n actElem.attr('transform', `translate(${0}, ${r / 2 - 5})`);\n actElem.attr('data-et', 'participant');\n actElem.attr('data-type', 'entity');\n actElem.attr('data-id', actor.name);\n } else {\n actElem.attr('transform', `translate(${0}, ${r})`);\n }\n\n return actor.height;\n};\n\nconst drawActorTypeDatabase = function (elem, actor, conf, isFooter, actorIndexMap) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + actor.height + 2 * conf.boxTextMargin;\n const { theme, themeVariables, look } = conf;\n const { bkgColorArray, borderColorArray, actorBorder } = themeVariables;\n\n const boxplusLineGroup = elem.append('g').lower();\n let g = boxplusLineGroup;\n\n if (!isFooter) {\n actorCnt++;\n if (Object.keys(actor.links || {}).length && !conf.forceMenus) {\n g.attr('onclick', popupMenuToggle(`actor${actorCnt}_popup`)).attr('cursor', 'pointer');\n }\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name)\n .attr('data-et', 'life-line')\n .attr('data-id', actor.name);\n\n g = boxplusLineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n }\n if (look === 'neo') {\n g.attr('data-look', 'neo');\n }\n }\n\n const rect = svgDrawCommon.getNoteRect();\n\n let cssclass = 'actor';\n if (actor.properties?.class) {\n cssclass = actor.properties.class;\n } else {\n rect.fill = '#eaeaea';\n }\n\n if (isFooter) {\n cssclass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssclass += ` ${TOP_ACTOR_CLASS}`;\n }\n\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.name = actor.name;\n\n // Cylinder dimensions\n rect.x = actor.x;\n rect.y = actorY;\n const w = rect.width / 3;\n const h = rect.width / 3;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n\n // Cylinder base group\n const cylinderGroup = g.append('g');\n cylinderGroup.attr('class', cssclass);\n\n const d = `\n M ${rect.x},${rect.y + ry}\n a ${rx},${ry} 0 0 0 ${w},0\n a ${rx},${ry} 0 0 0 -${w},0\n l 0,${h - 2 * ry}\n a ${rx},${ry} 0 0 0 ${w},0\n l 0,-${h - 2 * ry}\n`;\n // Draw the main cylinder body\n cylinderGroup.append('path').attr('d', d);\n if (look === 'neo') {\n cylinderGroup.attr('filter', 'url(#drop-shadow)');\n }\n const actorCount = actorIndexMap.get(actor.name) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n cylinderGroup.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n cylinderGroup.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n } else {\n cylinderGroup.style('stroke', actorBorder);\n }\n\n // Both branches were identical \u2014 simplified to a single unconditional statement\n cylinderGroup.attr('transform', `translate(${w}, ${ry})`);\n actor.rectData = rect;\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n g,\n rect.x,\n rect.y + 35,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_BOX_CLASS}` },\n conf\n );\n\n const lastPath = cylinderGroup.select('path:last-child');\n if (lastPath.node()) {\n const bounds = lastPath.node().getBBox();\n actor.height = bounds.height + (conf.sequence.labelBoxHeight ?? 0);\n }\n\n if (!isFooter) {\n g.attr('data-et', 'participant');\n g.attr('data-type', 'database');\n g.attr('data-id', actor.name);\n }\n\n return actor.height;\n};\n\nconst drawActorTypeBoundary = function (elem, actor, conf, isFooter, actorIndexMap) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 80;\n const radius = 22;\n const line = elem.append('g').lower();\n const { look, theme, themeVariables } = conf;\n const { bkgColorArray, borderColorArray, actorBorder } = themeVariables;\n\n if (!isFooter) {\n actorCnt++;\n line\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name)\n .attr('data-et', 'life-line')\n .attr('data-id', actor.name);\n\n actor.actorCnt = actorCnt;\n }\n const actElem = elem.append('g');\n let cssClass = ACTOR_MAN_FIGURE_CLASS;\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr('class', cssClass);\n actElem.attr('name', actor.name);\n\n const rect = svgDrawCommon.getNoteRect();\n rect.x = actor.x;\n rect.y = actorY;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n\n actElem\n .append('line')\n .attr('id', 'actor-man-torso' + actorCnt)\n .attr('x1', actor.x + actor.width / 2 - radius * 2.5)\n .attr('y1', actorY + 12)\n .attr('x2', actor.x + actor.width / 2 - 15)\n .attr('y2', actorY + 12);\n\n actElem\n .append('line')\n .attr('id', 'actor-man-arms' + actorCnt)\n .attr('x1', actor.x + actor.width / 2 - radius * 2.5)\n .attr('y1', actorY + 2) // starting Y\n .attr('x2', actor.x + actor.width / 2 - radius * 2.5)\n .attr('y2', actorY + 22); // ending Y (26px long, adjust as needed)\n\n actElem\n .append('circle')\n .attr('cx', actor.x + actor.width / 2)\n .attr('cy', actorY + 12)\n .attr('r', radius);\n\n if (look === 'neo') {\n actElem.attr('filter', 'url(#drop-shadow)');\n }\n\n const actorCount = actorIndexMap.get(actor.name) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n actElem.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n actElem.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n } else {\n actElem.style('stroke', actorBorder);\n }\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height + (conf.sequence.labelBoxHeight ?? 0);\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n rect.y + 15,\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` },\n conf\n );\n\n actElem.attr('transform', `translate(0,${radius / 2 + 10})`);\n\n if (!isFooter) {\n actElem.attr('data-et', 'participant');\n actElem.attr('data-type', 'boundary');\n actElem.attr('data-id', actor.name);\n }\n\n return actor.height;\n};\n\nconst drawActorTypeActor = function (elem, actor, conf, isFooter, actorIndexMap) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 80;\n const { look, theme, themeVariables } = conf;\n const { bkgColorArray, borderColorArray, actorBorder } = themeVariables;\n\n const line = elem.append('g').lower();\n\n if (!isFooter) {\n actorCnt++;\n line\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', centerY)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line 200')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n .attr('name', actor.name)\n .attr('data-et', 'life-line')\n .attr('data-id', actor.name);\n\n actor.actorCnt = actorCnt;\n }\n const actElem = elem.append('g');\n let cssClass = ACTOR_MAN_FIGURE_CLASS;\n if (isFooter) {\n cssClass += ` ${BOTTOM_ACTOR_CLASS}`;\n } else {\n cssClass += ` ${TOP_ACTOR_CLASS}`;\n }\n actElem.attr('class', cssClass);\n actElem.attr('name', actor.name);\n\n if (!isFooter) {\n actElem.attr('data-et', 'participant').attr('data-type', 'actor').attr('data-id', actor.name);\n }\n\n // Scaling the stickman\n const scale = look === 'neo' ? 0.5 : 1;\n\n // Adjusting stickman to maintain the same position\n const adjustedActorY = look === 'neo' ? actorY + (1 - scale) * 30 : actorY; // Adjust for the torso and head shift\n\n actElem\n .append('line')\n .attr('id', 'actor-man-torso' + actorCnt)\n .attr('x1', center)\n .attr('y1', adjustedActorY + 25 * scale)\n .attr('x2', center)\n .attr('y2', adjustedActorY + 45 * scale);\n\n actElem\n .append('line')\n .attr('id', 'actor-man-arms' + actorCnt)\n .attr('x1', center - (ACTOR_TYPE_WIDTH / 2) * scale)\n .attr('y1', adjustedActorY + 33 * scale)\n .attr('x2', center + (ACTOR_TYPE_WIDTH / 2) * scale)\n .attr('y2', adjustedActorY + 33 * scale);\n actElem\n .append('line')\n .attr('x1', center - (ACTOR_TYPE_WIDTH / 2) * scale)\n .attr('y1', adjustedActorY + 60 * scale)\n .attr('x2', center)\n .attr('y2', adjustedActorY + 45 * scale);\n actElem\n .append('line')\n .attr('x1', center)\n .attr('y1', adjustedActorY + 45 * scale)\n .attr('x2', center + (ACTOR_TYPE_WIDTH / 2 - 2) * scale)\n .attr('y2', adjustedActorY + 60 * scale);\n\n const circle = actElem.append('circle');\n circle.attr('cx', actor.x + actor.width / 2);\n circle.attr('cy', adjustedActorY + 10 * scale);\n circle.attr('r', 15 * scale);\n circle.attr('width', actor.width * scale);\n circle.attr('height', actor.height * scale);\n\n // Get the bounds of the stickman after scaling\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height;\n\n // // Adjust the rect to match the scaled stickman\n const rect = svgDrawCommon.getNoteRect();\n rect.x = actor.x;\n rect.y = adjustedActorY; // Use adjustedActorY for proper alignment\n rect.fill = '#eaeaea';\n rect.width = actor.width; // Scale the width\n rect.height = actor.height / scale; // Use the updated height from bounds\n rect.class = 'actor';\n rect.rx = 3;\n rect.ry = 3;\n\n const actorCount = actorIndexMap.get(actor.name) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n actElem.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n actElem.style('fill', bkgColorArray[actorCount % borderColorArray.length]);\n } else {\n actElem.style('stroke', actorBorder);\n }\n\n _drawTextCandidateFunc(conf, hasKatex(actor.description))(\n actor.description,\n actElem,\n rect.x,\n adjustedActorY + 35 * scale - (look === 'neo' ? 10 : 0),\n rect.width,\n rect.height,\n { class: `actor ${ACTOR_MAN_FIGURE_CLASS}` },\n conf\n );\n\n return actor.height;\n};\n\nexport const drawActor = async function (\n elem,\n actor,\n conf,\n isFooter,\n diagramId,\n diagObj,\n actorIndexMap\n) {\n const resolvedActorIndexMap =\n actorIndexMap ??\n new Map(\n [...diagObj.db.getActors().values()].map((participant, index) => [participant.name, index])\n );\n\n switch (actor.type) {\n case 'actor':\n return await drawActorTypeActor(elem, actor, conf, isFooter, resolvedActorIndexMap);\n case 'participant':\n return await drawActorTypeParticipant(elem, actor, conf, isFooter, resolvedActorIndexMap);\n case 'boundary':\n return await drawActorTypeBoundary(elem, actor, conf, isFooter, resolvedActorIndexMap);\n case 'control':\n return await drawActorTypeControl(\n elem,\n actor,\n conf,\n isFooter,\n diagramId,\n resolvedActorIndexMap\n );\n case 'entity':\n return await drawActorTypeEntity(elem, actor, conf, isFooter, resolvedActorIndexMap);\n case 'database':\n return await drawActorTypeDatabase(elem, actor, conf, isFooter, resolvedActorIndexMap);\n case 'collections':\n return await drawActorTypeCollections(elem, actor, conf, isFooter, resolvedActorIndexMap);\n case 'queue':\n return await drawActorTypeQueue(elem, actor, conf, isFooter, resolvedActorIndexMap);\n }\n};\n\nexport const drawBox = function (elem, box, conf) {\n const boxplusTextGroup = elem.append('g');\n const g = boxplusTextGroup;\n drawBackgroundRect(g, box);\n if (box.name) {\n _drawTextCandidateFunc(conf)(\n box.name,\n g,\n box.x,\n box.y + conf.boxTextMargin + (box.textMaxHeight || 0) / 2,\n box.width,\n 0,\n { class: 'text' },\n conf\n );\n }\n g.lower();\n};\n\nexport const anchorElement = function (elem) {\n return elem.append('g');\n};\n\n/**\n * Draws an activation in the diagram\n *\n * @param {any} elem - Element to append activation rect.\n * @param {any} bounds - Activation box bounds.\n * @param {any} verticalPos - Precise y coordinate of bottom activation box edge.\n * @param {any} conf - Sequence diagram config object.\n * @param {any} actorActivations - Number of activations on the actor.\n */\nexport const drawActivation = function (\n _elem,\n bounds,\n verticalPos,\n conf,\n actorActivations,\n diagObj,\n actorIndexMap\n) {\n const { theme, themeVariables } = conf;\n const { bkgColorArray, borderColorArray, mainBkg } = themeVariables;\n const rect = svgDrawCommon.getNoteRect();\n const g = bounds.anchored;\n const actor = bounds.actor;\n rect.x = bounds.startx;\n rect.y = bounds.starty;\n rect.class = 'activation' + (actorActivations % 3); // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx;\n rect.height = verticalPos - bounds.starty;\n\n const rectElem = drawRect(g, rect);\n const resolvedActorIndexMap =\n actorIndexMap ??\n new Map(\n [...diagObj.db.getActors().values()].map((participant, index) => [participant.name, index])\n );\n const actorCount = resolvedActorIndexMap.get(actor) ?? 0;\n if (COLOR_THEMES.has(theme)) {\n rectElem.style('stroke', borderColorArray[actorCount % borderColorArray.length]);\n rectElem.style('fill', bkgColorArray[actorCount % borderColorArray.length] ?? mainBkg);\n }\n};\n\n/**\n * Draws a loop in the diagram\n *\n * @param {any} elem - Element to append the loop to.\n * @param {any} loopModel - LoopModel of the given loop.\n * @param {any} labelText - Text within the loop.\n * @param {any} conf - Diagram configuration\n * @returns {any}\n */\nexport const drawLoop = async function (elem, loopModel, labelText, conf, msg) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight,\n } = conf;\n const g = elem\n .append('g')\n .attr('data-et', 'control-structure')\n .attr('data-id', 'i' + msg.id);\n const drawLoopLine = function (startx, starty, stopx, stopy) {\n return g\n .append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine');\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (loopModel.sections !== undefined) {\n loopModel.sections.forEach(function (item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n 'stroke-dasharray',\n '3, 3'\n );\n });\n }\n\n let txt = svgDrawCommon.getTextObj();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.width = Math.max(labelBoxWidth ?? 0, 50);\n txt.height = labelBoxHeight + (conf.look === 'neo' ? 15 : 0) || 20;\n txt.textMargin = boxTextMargin;\n txt.class = 'labelText';\n\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.textMargin = boxTextMargin;\n txt.class = 'loopText';\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n\n let textElem = hasKatex(txt.text) ? await drawKatex(g, txt, loopModel) : drawText(g, txt);\n\n if (loopModel.sectionTitles !== undefined) {\n for (const [idx, item] of Object.entries(loopModel.sectionTitles)) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = 'sectionTitle';\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n\n if (hasKatex(txt.text)) {\n loopModel.starty = loopModel.sections[idx].y;\n await drawKatex(g, txt, loopModel);\n } else {\n drawText(g, txt);\n }\n let sectionHeight = Math.round(\n textElem\n .map((te) => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n }\n }\n\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem Diagram (reference for bounds)\n * @param {any} bounds Shape of the rectangle\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n svgDrawCommon.drawBackgroundRect(elem, bounds);\n};\n\nexport const insertDatabaseIcon = function (elem, id) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', id + '-database')\n .attr('fill-rule', 'evenodd')\n .attr('clip-rule', 'evenodd')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z'\n );\n};\n\nexport const insertComputerIcon = function (elem, id) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', id + '-computer')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z'\n );\n};\n\nexport const insertClockIcon = function (elem, id) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', id + '-clock')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z'\n );\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param elem\n */\nexport const insertArrowHead = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-arrowhead')\n .attr('refX', 7.9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M -1 0 L 10 5 L 0 10 z'); // this is actual shape for arrowhead\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowFilledHead = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-filled-head')\n .attr('refX', 15.5)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Setup node number. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertSequenceNumber = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-sequencenumber')\n .attr('refX', 15)\n .attr('refY', 15)\n .attr('markerWidth', 60)\n .attr('markerHeight', 40)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', 15)\n .attr('cy', 15)\n .attr('r', 6);\n // .style(\"fill\", '#f00');\n};\n\n/**\n * Setup cross head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowCrossHead = function (elem, id) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', id + '-crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 4)\n .attr('refY', 4.5);\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1pt')\n .attr('d', 'M 1,2 L 6,7 M 6,2 L 1,7');\n // this is actual shape for arrowhead\n};\n\nexport const insertDropShadow = function (elem, conf) {\n const { theme } = conf;\n elem\n .append('defs')\n .append('filter')\n .attr('id', 'drop-shadow')\n .attr('height', '130%')\n .attr('width', '130%')\n .append('feDropShadow')\n .attr('dx', '4')\n .attr('dy', '4')\n .attr('stdDeviation', 0)\n .attr('flood-opacity', '0.06')\n .attr('flood-color', `${theme === 'redux' || theme === 'redux-color' ? '#000000' : '#FFFFFF'}`);\n};\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: undefined,\n style: '#666',\n width: undefined,\n height: undefined,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: undefined,\n };\n};\n\nexport const getNoteRect = function () {\n return {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0,\n };\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n */\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const [_actorFontSize, _actorFontSizePx] = parseFontSize(actorFontSize);\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * _actorFontSize - (_actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', _actorFontSizePx)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n *\n * @param content\n * @param g\n * @param x\n * @param y\n * @param width\n * @param height\n * @param textAttrs\n * @param conf\n */\n async function byKatex(content, g, x, y, width, height, textAttrs, conf) {\n // TODO duplicate render calls, optimize\n\n const dim = await calculateMathMLDimensions(content, configApi.getConfig());\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x + width / 2 - dim.width / 2)\n .attr('y', y + height / 2 - dim.height / 2)\n .attr('width', dim.width)\n .attr('height', dim.height);\n\n const text = f.append('xhtml:div').style('height', '100%').style('width', '100%');\n\n text\n .append('div')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .html(await renderKatexSanitized(content, configApi.getConfig()));\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf, hasKatex = false) {\n if (hasKatex) {\n return byKatex;\n }\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst _drawMenuItemTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n */\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x)\n .attr('y', y)\n .style('text-anchor', 'start')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x)\n .attr('y', y)\n .style('text-anchor', 'start')\n .style('font-size', actorFontSize)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text.append('tspan').attr('x', x).attr('dy', dy).text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param elem\n */\nexport const insertSolidTopArrowHead = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-solidTopArrowHead')\n .attr('refX', 7.9)\n .attr('refY', 7.25)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 0 L 10 8 L 0 8 z'); // this is actual shape for arrowhead\n};\n\nexport const insertSolidBottomArrowHead = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-solidBottomArrowHead')\n .attr('refX', 7.9)\n .attr('refY', 0.75)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 0 L 10 0 L 0 8 z');\n};\n\nexport const insertStickTopArrowHead = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-stickTopArrowHead')\n .attr('refX', 7.5)\n .attr('refY', 7)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 0 L 7 7')\n .attr('stroke', 'black')\n .attr('stroke-width', 1.5)\n .attr('fill', 'none');\n};\n\nexport const insertStickBottomArrowHead = function (elem, id) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '-stickBottomArrowHead')\n .attr('refX', 7.5)\n .attr('refY', 0)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 7 L 7 0')\n .attr('stroke', 'black')\n .attr('stroke-width', 1.5)\n .attr('fill', 'none');\n};\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n drawBox,\n drawPopup,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertArrowFilledHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon,\n getTextObj,\n getNoteRect,\n fixLifeLineHeights,\n sanitizeUrl,\n insertDropShadow,\n insertSolidTopArrowHead,\n insertSolidBottomArrowHead,\n insertStickTopArrowHead,\n insertStickBottomArrowHead,\n};\n", "// @ts-nocheck TODO: fix file\nimport { select } from 'd3';\nimport svgDraw, { drawKatex, ACTOR_TYPE_WIDTH, drawText, fixLifeLineHeights } from './svgDraw.js';\nimport { log } from '../../logger.js';\nimport common, { calculateMathMLDimensions, hasKatex } from '../common/common.js';\nimport { getUrl } from '../common/common.js';\nimport * as svgDrawCommon from '../common/svgDrawCommon.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport assignWithDepth from '../../assignWithDepth.js';\nimport utils from '../../utils.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { Diagram } from '../../Diagram.js';\nimport { PARTICIPANT_TYPE } from './sequenceDb.js';\n\nlet conf = {};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function () {\n return (\n Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0)\n ) +\n (this.loops.length === 0\n ? 0\n : this.loops.map((it) => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.messages.length === 0\n ? 0\n : this.messages.map((it) => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.notes.length === 0\n ? 0\n : this.notes.map((it) => it.height || 0).reduce((acc, h) => acc + h))\n );\n },\n clear: function () {\n this.actors = [];\n this.boxes = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addBox: function (boxModel) {\n this.boxes.push(boxModel);\n },\n addActor: function (actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function (loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function (msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function (noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function () {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function () {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function () {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function () {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n boxes: [],\n loops: [],\n messages: [],\n notes: [],\n },\n init: function () {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n };\n this.verticalPos = 0;\n setConf(getConfig());\n },\n updateVal: function (obj, key, val, fun) {\n if (obj[key] === undefined) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _self = this;\n let cnt = 0;\n /** @param type - Either `activation` or `undefined` */\n function updateFn(type?: 'activation') {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn('activation'));\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = common.getMin(startx, stopx);\n const _stopx = common.getMax(startx, stopx);\n const _starty = common.getMin(starty, stopy);\n const _stopy = common.getMax(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function (message, diagram, actors) {\n const actorRect = actors.get(message.from);\n const stackedSize = actorActivations(message.from).length || 0;\n const x = actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from,\n anchored: svgDraw.anchorElement(diagram),\n });\n },\n endActivation: function (message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function (activation) {\n return activation.actor;\n })\n .lastIndexOf(message.from);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function (title = { message: undefined, wrap: false, width: undefined }, fill) {\n return {\n startx: undefined,\n starty: this.verticalPos,\n stopx: undefined,\n stopy: undefined,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill: fill,\n };\n },\n newLoop: function (title = { message: undefined, wrap: false, width: undefined }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function () {\n return this.sequenceItems.pop();\n },\n isLoopOverlap: function () {\n return this.sequenceItems.length\n ? this.sequenceItems[this.sequenceItems.length - 1].overlap\n : false;\n },\n addSectionToLoop: function (message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n saveVerticalPos: function () {\n if (this.isLoopOverlap()) {\n this.savedVerticalPos = this.verticalPos;\n }\n },\n resetVerticalPos: function () {\n if (this.isLoopOverlap()) {\n this.verticalPos = this.savedVerticalPos;\n }\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = common.getMax(this.data.stopy, this.verticalPos);\n },\n getVerticalPos: function () {\n return this.verticalPos;\n },\n getBounds: function () {\n return { bounds: this.data, models: this.models };\n },\n};\n\n/** Options for drawing a note in {@link drawNote} */\ninterface NoteModel {\n /** x axis start position */\n startx: number;\n /** y axis position */\n starty: number;\n /** the message to be shown */\n message: string;\n /** Set this with a custom width to override the default configured width. */\n width: number;\n}\n\n/**\n * Draws a note in the diagram with the attached line\n *\n * @param elem - The diagram to draw to.\n * @param noteModel - Note model options.\n */\nconst drawNote = async function (elem: any, noteModel: NoteModel, id: string) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = svgDrawCommon.getNoteRect();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = 'note';\n\n const g = elem.append('g');\n g.attr('data-et', 'note');\n g.attr('data-id', 'i' + id);\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = svgDrawCommon.getTextObj();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = '1em';\n textObj.text = noteModel.message;\n textObj.class = 'noteText';\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = 'center';\n\n const textElem = hasKatex(textObj.text) ? await drawKatex(g, textObj) : drawText(g, textObj);\n\n const textHeight = Math.round(\n textElem\n .map((te) => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n\n rectElem.attr('height', textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\n\nconst drawCentralConnection = function (\n elem: any,\n msg: any,\n msgModel: any,\n diagObj: Diagram,\n startx: number,\n stopx: number,\n lineStartY: number\n) {\n const actors = diagObj.db.getActors();\n const fromActor = actors.get(msg.from);\n const toActor = actors.get(msg.to);\n const isAutoNumberOn = msgModel.sequenceVisible;\n let fromCenter = fromActor.x + fromActor.width / 2;\n let toCenter = toActor.x + toActor.width / 2;\n\n // Determine arrow direction: left-to-right or right-to-left\n const isLeftToRight = fromCenter <= toCenter;\n const isReverse = isReverseArrowType(msg, diagObj);\n\n const g = elem.append('g');\n\n const CENTRAL_CONNECTION_CIRCLE_OFFSET = 16.5;\n\n const getCircleOffset = (isLeftToRight: boolean, isReverse: boolean) => {\n const baseOffset = isLeftToRight\n ? CENTRAL_CONNECTION_CIRCLE_OFFSET\n : -CENTRAL_CONNECTION_CIRCLE_OFFSET;\n return isReverse ? -baseOffset : baseOffset;\n };\n\n const drawCircle = (cx: number) => {\n g.append('circle')\n .attr('cx', cx)\n .attr('cy', lineStartY)\n .attr('r', 5)\n .attr('width', 10)\n .attr('height', 10);\n };\n\n const { CENTRAL_CONNECTION, CENTRAL_CONNECTION_REVERSE, CENTRAL_CONNECTION_DUAL } =\n diagObj.db.LINETYPE;\n\n // Calculate circle position adjustments when autonumber is enabled\n if (isAutoNumberOn) {\n switch (msg.centralConnection) {\n case CENTRAL_CONNECTION:\n // Pattern: actor ->>() actor - circle at destination\n if (isReverse) {\n toCenter += getCircleOffset(isLeftToRight, true);\n }\n // No adjustment for normal arrows\n break;\n\n case CENTRAL_CONNECTION_REVERSE:\n // Pattern: actor ()->> actor - circle at source\n if (!isReverse) {\n fromCenter += getCircleOffset(isLeftToRight, false);\n }\n // No adjustment for reverse arrows\n break;\n\n case CENTRAL_CONNECTION_DUAL:\n // Pattern: actor ()->>() actor - circles at both ends\n if (isReverse) {\n toCenter += getCircleOffset(isLeftToRight, true);\n } else {\n fromCenter += getCircleOffset(isLeftToRight, false);\n }\n break;\n }\n }\n\n // Draw circles based on central connection type\n switch (msg.centralConnection) {\n case CENTRAL_CONNECTION:\n drawCircle(toCenter);\n break;\n case CENTRAL_CONNECTION_REVERSE:\n drawCircle(fromCenter);\n break;\n case CENTRAL_CONNECTION_DUAL:\n drawCircle(fromCenter);\n drawCircle(toCenter);\n break;\n }\n};\n\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight,\n };\n};\nconst noteFont = (cnf) => {\n return {\n fontFamily: cnf.noteFontFamily,\n fontSize: cnf.noteFontSize,\n fontWeight: cnf.noteFontWeight,\n };\n};\nconst actorFont = (cnf) => {\n return {\n fontFamily: cnf.actorFontFamily,\n fontSize: cnf.actorFontSize,\n fontWeight: cnf.actorFontWeight,\n };\n};\n\n/**\n * Process a message by adding its dimensions to the bound. It returns the Y coordinate of the\n * message so it can be drawn later. We do not draw the message at this point so the arrowhead can\n * be on top of the activation box.\n *\n * @param _diagram - The parent of the message element.\n * @param msgModel - The model containing fields describing a message\n * @returns `lineStartY` - The Y coordinate at which the message line starts\n */\nasync function boundMessage(_diagram, msgModel): Promise {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, message } = msgModel;\n const lines = common.splitBreaks(message).length;\n const isKatexMsg = hasKatex(message);\n const textDims = isKatexMsg\n ? await calculateMathMLDimensions(message, getConfig())\n : utils.calculateTextDimensions(message, messageFont(conf));\n\n if (!isKatexMsg) {\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n bounds.bumpVerticalPos(lineHeight);\n }\n\n let lineStartY;\n let totalOffset = textDims.height - 10;\n const textWidth = textDims.width;\n\n if (startx === stopx) {\n lineStartY = bounds.getVerticalPos() + totalOffset;\n if (!conf.rightAngles) {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n }\n totalOffset += 30;\n const dx = common.getMax(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n bounds.insert(startx, lineStartY - 10, stopx, lineStartY);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n\n return lineStartY;\n}\n\n/**\n * Draws a message. Note that the bounds have previously been updated by boundMessage.\n *\n * @param diagram - The parent of the message element\n * @param msgModel - The model containing fields describing a message\n * @param lineStartY - The Y coordinate at which the message line starts\n * @param diagObj - The diagram object.\n */\nexport const drawMessage = async function (\n diagram,\n msgModel,\n lineStartY: number,\n diagObj: Diagram,\n msg,\n diagramId: string\n) {\n const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel;\n const textDims = utils.calculateTextDimensions(message, messageFont(conf));\n const textObj = svgDrawCommon.getTextObj();\n textObj.x = Math.min(startx, stopx);\n textObj.y = starty + 10;\n textObj.width = Math.abs(stopx - startx);\n textObj.class = 'messageText';\n textObj.dy = '1em';\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = 'center';\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n\n if (hasKatex(textObj.text)) {\n await drawKatex(diagram, textObj, { startx, stopx, starty: lineStartY });\n } else {\n drawText(diagram, textObj);\n }\n\n const textWidth = textDims.width;\n\n let line;\n if (startx === stopx) {\n const isAutoNumberOn = sequenceVisible || conf.showSequenceNumbers;\n const isReverse = isReverseArrowType(msg, diagObj);\n const isBidirectional = isBidirectionalArrowType(msg, diagObj);\n const lineStartX = startx + (isAutoNumberOn && (isReverse || isBidirectional) ? 10 : 0);\n\n if (conf.rightAngles) {\n line = diagram\n .append('path')\n .attr(\n 'd',\n `M ${lineStartX},${lineStartY} H ${\n startx + common.getMax(conf.width / 2, textWidth / 2)\n } V ${lineStartY + 25} H ${startx}`\n );\n } else {\n line = diagram\n .append('path')\n .attr(\n 'd',\n 'M ' +\n lineStartX +\n ',' +\n lineStartY +\n ' C ' +\n (lineStartX + 60) +\n ',' +\n (lineStartY - 10) +\n ' ' +\n (startx + 60) +\n ',' +\n (lineStartY + 30) +\n ' ' +\n startx +\n ',' +\n (lineStartY + 20)\n );\n }\n // Draw central connection circles for self-connection arrows\n if (hasCentralConnection(msg, diagObj)) {\n drawCentralConnection(diagram, msg, msgModel, diagObj, startx, stopx, lineStartY);\n }\n } else {\n line = diagram.append('line');\n line.attr('x1', startx);\n line.attr('y1', lineStartY);\n line.attr('x2', stopx);\n line.attr('y2', lineStartY);\n if (hasCentralConnection(msg, diagObj)) {\n drawCentralConnection(diagram, msg, msgModel, diagObj, startx, stopx, lineStartY);\n }\n }\n // Make an SVG Container\n // Draw the line\n if (\n type === diagObj.db.LINETYPE.DOTTED ||\n type === diagObj.db.LINETYPE.DOTTED_CROSS ||\n type === diagObj.db.LINETYPE.DOTTED_POINT ||\n type === diagObj.db.LINETYPE.DOTTED_OPEN ||\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_TOP_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_BOTTOM_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_TOP_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED\n ) {\n line.style('stroke-dasharray', '3, 3');\n line.attr('class', 'messageLine1');\n } else {\n line.attr('class', 'messageLine0');\n }\n\n line.attr('data-et', 'message');\n line.attr('data-id', 'i' + msgModel.id);\n line.attr('data-from', msgModel.from);\n line.attr('data-to', msgModel.to);\n\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n\n line.attr('stroke-width', 2);\n line.attr('stroke', 'none'); // handled by theme/css anyway\n line.style('fill', 'none'); // remove any fill colour\n\n if (type === diagObj.db.LINETYPE.SOLID_TOP || type === diagObj.db.LINETYPE.SOLID_TOP_DOTTED) {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-solidTopArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.SOLID_BOTTOM ||\n type === diagObj.db.LINETYPE.SOLID_BOTTOM_DOTTED\n ) {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-solidBottomArrowHead)');\n }\n if (type === diagObj.db.LINETYPE.STICK_TOP || type === diagObj.db.LINETYPE.STICK_TOP_DOTTED) {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-stickTopArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.STICK_BOTTOM ||\n type === diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED\n ) {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-stickBottomArrowHead)');\n }\n\n if (\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#' + diagramId + '-solidBottomArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#' + diagramId + '-solidTopArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE ||\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#' + diagramId + '-stickBottomArrowHead)');\n }\n if (\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE ||\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#' + diagramId + '-stickTopArrowHead)');\n }\n\n if (type === diagObj.db.LINETYPE.SOLID || type === diagObj.db.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-arrowhead)');\n }\n if (\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID ||\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED\n ) {\n line.attr('marker-start', 'url(' + url + '#' + diagramId + '-arrowhead)');\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-arrowhead)');\n }\n if (type === diagObj.db.LINETYPE.SOLID_POINT || type === diagObj.db.LINETYPE.DOTTED_POINT) {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-filled-head)');\n }\n\n if (type === diagObj.db.LINETYPE.SOLID_CROSS || type === diagObj.db.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#' + diagramId + '-crosshead)');\n }\n\n // add node number\n if (sequenceVisible || conf.showSequenceNumbers) {\n const isBidirectional =\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID ||\n type === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED;\n\n const isReverseArrowType =\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE ||\n type === diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE ||\n type === diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED ||\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE ||\n type === diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;\n\n const SEQUENCE_NUMBER_RADIUS = 6;\n const hasCentralConn = hasCentralConnection(msg, diagObj);\n let lineStartX = startx;\n let lineStopX = stopx;\n\n if (isBidirectional) {\n // For bidirectional arrows, adjust the start position\n if (startx < stopx) {\n lineStartX = startx + SEQUENCE_NUMBER_RADIUS * 2;\n } else {\n lineStartX = startx - SEQUENCE_NUMBER_RADIUS + (hasCentralConn ? -5 : 0);\n lineStartX +=\n msg?.centralConnection === diagObj.db.LINETYPE.CENTRAL_CONNECTION_DUAL ||\n msg?.centralConnection === diagObj.db.LINETYPE.CENTRAL_CONNECTION_REVERSE\n ? -7.5\n : 0;\n }\n line.attr('x1', lineStartX);\n } else if (isReverseArrowType) {\n // For reverse arrows, adjust the stop position (where the arrowhead is)\n if (stopx > startx) {\n lineStopX = stopx - 2 * SEQUENCE_NUMBER_RADIUS;\n } else {\n lineStopX = stopx - SEQUENCE_NUMBER_RADIUS;\n lineStartX +=\n msg?.centralConnection === diagObj.db.LINETYPE.CENTRAL_CONNECTION_DUAL ||\n msg?.centralConnection === diagObj.db.LINETYPE.CENTRAL_CONNECTION_REVERSE\n ? -7.5\n : 0;\n }\n lineStopX += hasCentralConn ? 15 : 0;\n\n line.attr('x2', lineStopX);\n line.attr('x1', lineStartX);\n } else {\n line.attr('x1', startx + SEQUENCE_NUMBER_RADIUS);\n }\n\n // Calculate autonumber X position\n let autonumberX = 0;\n const isSelfMessage = startx === stopx;\n const isLeftToRight = startx <= stopx;\n\n if (isSelfMessage) {\n autonumberX = msgModel.fromBounds + 1;\n } else if (isReverseArrowType) {\n autonumberX = isLeftToRight ? msgModel.toBounds - 1 : msgModel.fromBounds + 1;\n } else {\n autonumberX = isLeftToRight ? msgModel.fromBounds + 1 : msgModel.toBounds - 1;\n }\n\n let fontSize = '12px';\n const sequenceIndexLength = sequenceIndex.toString().length;\n\n if (sequenceIndexLength > 5) {\n fontSize = '7px';\n } else if (sequenceIndexLength > 3) {\n fontSize = '9px';\n }\n\n diagram\n .append('line')\n .attr('x1', autonumberX)\n .attr('y1', lineStartY)\n .attr('x2', autonumberX)\n .attr('y2', lineStartY)\n .attr('stroke-width', 0)\n .attr('marker-start', 'url(' + url + '#' + diagramId + '-sequencenumber)');\n\n diagram\n .append('text')\n .attr('x', autonumberX)\n .attr('y', lineStartY + 4)\n .attr('font-family', 'sans-serif')\n .attr('font-size', fontSize)\n .attr('text-anchor', 'middle')\n .attr('class', 'sequenceNumber')\n .text(sequenceIndex);\n }\n};\n\nconst addActorRenderingData = function (\n diagram,\n actors,\n createdActors: Map,\n actorKeys,\n verticalPos,\n messages,\n isFooter\n) {\n let prevWidth = 0;\n let prevMargin = 0;\n let prevBox = undefined;\n let maxHeight = 0;\n\n for (const actorKey of actorKeys) {\n const actor = actors.get(actorKey);\n const box = actor.box;\n\n // end of box\n if (prevBox && prevBox != box) {\n if (!isFooter) {\n bounds.models.addBox(prevBox);\n }\n prevMargin += conf.boxMargin + prevBox.margin;\n }\n\n // new box\n if (box && box != prevBox) {\n if (!isFooter) {\n box.x = prevWidth + prevMargin;\n box.y = verticalPos;\n }\n prevMargin += box.margin;\n }\n\n // Add some rendering data to the object\n actor.width = common.getMax(actor.width || conf.width, conf.width);\n actor.height = common.getMax(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n\n maxHeight = common.getMax(maxHeight, actor.height);\n\n // if the actor is created by a message, widen margin\n if (createdActors.get(actor.name)) {\n prevMargin += actor.width / 2;\n }\n\n actor.x = prevWidth + prevMargin;\n actor.starty = bounds.getVerticalPos();\n\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n\n prevWidth += actor.width + prevMargin;\n if (actor.box) {\n actor.box.width = prevWidth + box.margin - actor.box.x;\n }\n prevMargin = actor.margin;\n prevBox = actor.box;\n bounds.models.addActor(actor);\n }\n\n // end of box\n if (prevBox && !isFooter) {\n bounds.models.addBox(prevBox);\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(maxHeight);\n};\n\nexport const drawActors = async function (\n diagram,\n actors,\n actorKeys,\n isFooter,\n diagramId,\n diagObj,\n actorIndexMap\n) {\n if (!isFooter) {\n for (const actorKey of actorKeys) {\n const actor = actors.get(actorKey);\n // Draw the box with the attached line\n await svgDraw.drawActor(diagram, actor, conf, false, diagramId, diagObj, actorIndexMap);\n }\n } else {\n let maxHeight = 0;\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n for (const actorKey of actorKeys) {\n const actor = actors.get(actorKey);\n if (!actor.stopy) {\n actor.stopy = bounds.getVerticalPos();\n }\n const height = await svgDraw.drawActor(\n diagram,\n actor,\n conf,\n true,\n diagramId,\n diagObj,\n actorIndexMap\n );\n maxHeight = common.getMax(maxHeight, height);\n }\n bounds.bumpVerticalPos(maxHeight + conf.boxMargin);\n }\n};\n\nexport const drawActorsPopup = function (diagram, actors, actorKeys, doc) {\n let maxHeight = 0;\n let maxWidth = 0;\n for (const actorKey of actorKeys) {\n const actor = actors.get(actorKey);\n const minMenuWidth = getRequiredPopupWidth(actor);\n const menuDimensions = svgDraw.drawPopup(\n diagram,\n actor,\n minMenuWidth,\n conf,\n conf.forceMenus,\n doc\n );\n if (menuDimensions.height > maxHeight) {\n maxHeight = menuDimensions.height;\n }\n if (menuDimensions.width + actor.x > maxWidth) {\n maxWidth = menuDimensions.width + actor.x;\n }\n }\n\n return { maxHeight: maxHeight, maxWidth: maxWidth };\n};\n\nexport const setConf = function (cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst actorActivations = function (actor) {\n return bounds.activations.filter(function (activation) {\n return activation.actor === actor;\n });\n};\n\nconst activationBounds = function (actor, actors) {\n // handle multiple stacked activations for same actor\n const actorObj = actors.get(actor);\n const activations = actorActivations(actor);\n\n const left = activations.reduce(\n function (acc, activation) {\n return common.getMin(acc, activation.startx);\n },\n actorObj.x + actorObj.width / 2 - 1\n );\n const right = activations.reduce(\n function (acc, activation) {\n return common.getMax(acc, activation.stopx);\n },\n actorObj.x + actorObj.width / 2 + 1\n );\n return [left, right];\n};\n\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n const loopWidth = loopWidths[msg.id].width;\n const textConf = messageFont(conf);\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n\n // const lines = common.splitBreaks(msg.message).length;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = common.getMax(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n log.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\n\n/**\n * Adjust the msgModel and the actor for the rendering in case the latter is created or destroyed by the msg\n * @param msg - the potentially creating or destroying message\n * @param msgModel - the model associated with the message\n * @param lineStartY - the y position of the message line\n * @param index - the index of the current actor under consideration\n * @param actors - the array of all actors\n * @param createdActors - the array of actors created in the diagram\n * @param destroyedActors - the array of actors destroyed in the diagram\n */\nfunction adjustCreatedDestroyedData(\n msg,\n msgModel,\n lineStartY,\n index,\n actors,\n createdActors,\n destroyedActors\n) {\n function receiverAdjustment(actor, adjustment) {\n if (actor.x < actors.get(msg.from).x) {\n bounds.insert(\n msgModel.stopx - adjustment,\n msgModel.starty,\n msgModel.startx,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.stopx = msgModel.stopx + adjustment;\n } else {\n bounds.insert(\n msgModel.startx,\n msgModel.starty,\n msgModel.stopx + adjustment,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.stopx = msgModel.stopx - adjustment;\n }\n }\n\n function senderAdjustment(actor, adjustment) {\n if (actor.x < actors.get(msg.to).x) {\n bounds.insert(\n msgModel.startx - adjustment,\n msgModel.starty,\n msgModel.stopx,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.startx = msgModel.startx + adjustment;\n } else {\n bounds.insert(\n msgModel.stopx,\n msgModel.starty,\n msgModel.startx + adjustment,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.startx = msgModel.startx - adjustment;\n }\n }\n const actorArray = [\n PARTICIPANT_TYPE.ACTOR,\n PARTICIPANT_TYPE.CONTROL,\n PARTICIPANT_TYPE.ENTITY,\n PARTICIPANT_TYPE.DATABASE,\n ];\n\n // if it is a create message\n if (createdActors.get(msg.to) == index) {\n const actor = actors.get(msg.to);\n const adjustment = actorArray.includes(actor.type)\n ? ACTOR_TYPE_WIDTH / 2 + 3\n : actor.width / 2 + 3;\n receiverAdjustment(actor, adjustment);\n actor.starty = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n }\n // if it is a destroy sender message\n else if (destroyedActors.get(msg.from) == index) {\n const actor = actors.get(msg.from);\n if (conf.mirrorActors) {\n const adjustment = actorArray.includes(actor.type) ? ACTOR_TYPE_WIDTH / 2 : actor.width / 2;\n senderAdjustment(actor, adjustment);\n }\n actor.stopy = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n }\n // if it is a destroy receiver message\n else if (destroyedActors.get(msg.to) == index) {\n const actor = actors.get(msg.to);\n if (conf.mirrorActors) {\n const adjustment = actorArray.includes(actor.type)\n ? ACTOR_TYPE_WIDTH / 2 + 3\n : actor.width / 2 + 3;\n receiverAdjustment(actor, adjustment);\n }\n actor.stopy = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n }\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n *\n * @param _text - The text of the diagram\n * @param id - The id of the diagram which will be used as a DOM element id\u00A8\n * @param _version - Mermaid version from package.json\n * @param diagObj - A standard diagram containing the db and the text and type etc of the diagram\n */\nexport const draw = async function (_text: string, id: string, _version: string, diagObj: Diagram) {\n const { securityLevel, sequence, look } = getConfig();\n conf = sequence;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n bounds.init();\n log.debug(diagObj.db);\n\n const diagram =\n securityLevel === 'sandbox' ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n\n // Fetch data from the parsing\n const actors = diagObj.db.getActors();\n const createdActors = diagObj.db.getCreatedActors();\n const destroyedActors = diagObj.db.getDestroyedActors();\n const boxes = diagObj.db.getBoxes();\n let actorKeys = diagObj.db.getActorKeys();\n const messages = diagObj.db.getMessages();\n const title = diagObj.db.getDiagramTitle();\n const hasBoxes = diagObj.db.hasAtLeastOneBox();\n const hasBoxTitles = diagObj.db.hasAtLeastOneBoxWithTitle();\n const maxMessageWidthPerActor = await getMaxMessageWidthPerActor(actors, messages, diagObj);\n conf.height = await calculateActorMargins(actors, maxMessageWidthPerActor, boxes);\n\n svgDraw.insertComputerIcon(diagram, id);\n svgDraw.insertDatabaseIcon(diagram, id);\n svgDraw.insertClockIcon(diagram, id);\n\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n if (hasBoxTitles) {\n bounds.bumpVerticalPos(boxes[0].textMaxHeight);\n }\n }\n\n if (conf.hideUnusedParticipants === true) {\n const newActors = new Set();\n messages.forEach((message) => {\n newActors.add(message.from);\n newActors.add(message.to);\n });\n actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey));\n }\n\n const actorIndexMap = new Map(\n actorKeys.map((actorKey, index) => [actors.get(actorKey)?.name ?? actorKey, index])\n );\n\n addActorRenderingData(diagram, actors, createdActors, actorKeys, 0, messages, false);\n const loopWidths = await calculateLoopBounds(messages, actors, maxMessageWidthPerActor, diagObj);\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram, id);\n svgDraw.insertArrowCrossHead(diagram, id);\n svgDraw.insertArrowFilledHead(diagram, id);\n svgDraw.insertSequenceNumber(diagram, id);\n svgDraw.insertSolidTopArrowHead(diagram, id);\n svgDraw.insertSolidBottomArrowHead(diagram, id);\n svgDraw.insertStickTopArrowHead(diagram, id);\n svgDraw.insertStickBottomArrowHead(diagram, id);\n\n if (look === 'neo') {\n svgDraw.insertDropShadow(diagram, conf);\n }\n\n /**\n * @param msg - The message to draw.\n * @param verticalPos - The vertical position of the message.\n */\n function activeEnd(msg: any, verticalPos: number) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from).length,\n diagObj,\n actorIndexMap\n );\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n\n // Draw the messages/signals\n let sequenceIndex = 1;\n let sequenceIndexStep = 1;\n const messagesToDraw = [];\n const backgrounds = [];\n let index = 0;\n for (const msg of messages) {\n let loopModel, noteModel, msgModel;\n\n switch (msg.type) {\n case diagObj.db.LINETYPE.NOTE:\n bounds.resetVerticalPos();\n noteModel = msg.noteModel;\n await drawNote(diagram, noteModel, msg.id);\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram, actors);\n break;\n case diagObj.db.LINETYPE.CENTRAL_CONNECTION:\n bounds.newActivation(msg, diagram, actors);\n break;\n case diagObj.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:\n bounds.newActivation(msg, diagram, actors);\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case diagObj.db.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'loop', conf, msg);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, (message) =>\n bounds.newLoop(undefined, message.message)\n );\n break;\n case diagObj.db.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n backgrounds.push(loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case diagObj.db.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'opt', conf, msg);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'alt', conf, msg);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n bounds.saveVerticalPos();\n break;\n case diagObj.db.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'par', conf, msg);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.AUTONUMBER:\n sequenceIndex = msg.message.start || sequenceIndex;\n sequenceIndexStep = msg.message.step || sequenceIndexStep;\n if (msg.message.visible) {\n diagObj.db.enableSequenceNumbers();\n } else {\n diagObj.db.disableSequenceNumbers();\n }\n break;\n case diagObj.db.LINETYPE.CRITICAL_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'critical', conf, msg);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.BREAK_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.BREAK_END:\n loopModel = bounds.endLoop();\n await svgDraw.drawLoop(diagram, loopModel, 'break', conf, msg);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n msgModel.sequenceVisible = diagObj.db.showSequenceNumbers();\n msgModel.id = msg.id;\n msgModel.from = msg.from;\n msgModel.to = msg.to;\n const lineStartY = await boundMessage(diagram, msgModel);\n adjustCreatedDestroyedData(\n msg,\n msgModel,\n lineStartY,\n index,\n actors,\n createdActors,\n destroyedActors\n );\n messagesToDraw.push({ messageModel: msgModel, lineStartY: lineStartY, msg });\n bounds.models.addMessage(msgModel);\n } catch (e) {\n log.error('error while drawing message', e);\n }\n }\n\n // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)\n if (\n [\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n\n diagObj.db.LINETYPE.SOLID_TOP,\n diagObj.db.LINETYPE.SOLID_BOTTOM,\n diagObj.db.LINETYPE.STICK_TOP,\n diagObj.db.LINETYPE.STICK_BOTTOM,\n\n diagObj.db.LINETYPE.SOLID_TOP_DOTTED,\n diagObj.db.LINETYPE.SOLID_BOTTOM_DOTTED,\n diagObj.db.LINETYPE.STICK_TOP_DOTTED,\n diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT,\n diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID,\n diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED,\n ].includes(msg.type)\n ) {\n // hitting a floating point number error, so round to 2 decimal places\n sequenceIndex = Math.round((sequenceIndex + sequenceIndexStep) * 100) / 100;\n }\n index++;\n }\n\n log.debug('createdActors', createdActors);\n log.debug('destroyedActors', destroyedActors);\n await drawActors(diagram, actors, actorKeys, false, id, diagObj, actorIndexMap);\n\n for (const e of messagesToDraw) {\n await drawMessage(diagram, e.messageModel, e.lineStartY, diagObj, e.msg, id);\n }\n if (conf.mirrorActors) {\n await drawActors(diagram, actors, actorKeys, true, id, diagObj, actorIndexMap);\n }\n backgrounds.forEach((e) => svgDraw.drawBackgroundRect(diagram, e));\n fixLifeLineHeights(diagram, actors, actorKeys, conf);\n\n for (const box of bounds.models.boxes) {\n box.height = bounds.getVerticalPos() - box.y;\n bounds.insert(box.x, box.y, box.x + box.width, box.height);\n const boxPadding = conf.boxMargin * 2;\n box.startx = box.x - boxPadding;\n box.starty = box.y - boxPadding * 0.25;\n box.stopx = box.startx + box.width + 2 * boxPadding;\n box.stopy = box.starty + box.height + boxPadding * 0.75;\n box.stroke = 'rgb(0,0,0, 0.5)';\n svgDraw.drawBox(diagram, box, conf);\n }\n\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n }\n\n // only draw popups for the top row of actors.\n const requiredBoxSize = drawActorsPopup(diagram, actors, actorKeys, doc);\n\n const { bounds: box } = bounds.getBounds();\n\n if (box.startx === undefined) {\n box.startx = 0;\n }\n if (box.starty === undefined) {\n box.starty = 0;\n }\n if (box.stopx === undefined) {\n box.stopx = 0;\n }\n if (box.stopy === undefined) {\n box.stopy = 0;\n }\n\n // Make sure the height of the diagram supports long menus.\n let boxHeight = box.stopy - box.starty;\n if (boxHeight < requiredBoxSize.maxHeight) {\n boxHeight = requiredBoxSize.maxHeight;\n }\n\n let height = boxHeight + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n\n // Make sure the width of the diagram supports wide menus.\n let boxWidth = box.stopx - box.startx;\n if (boxWidth < requiredBoxSize.maxWidth) {\n boxWidth = requiredBoxSize.maxWidth;\n }\n const width = boxWidth + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX)\n .attr('y', -25);\n }\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n const extraVertForTitle = title ? 40 : 0;\n const extraHeightForNeoActors = actors.size && look === 'neo' ? 30 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle + extraHeightForNeoActors)\n );\n\n log.debug(`models:`, bounds.models);\n};\n\n/**\n * Retrieves the max message width of each actor, supports signals (messages, loops) and notes.\n *\n * It will enumerate each given message, and will determine its text width, in relation to the actor\n * it originates from, and destined to.\n *\n * @param actors - The actors map\n * @param messages - A list of message objects to iterate\n * @param diagObj - The diagram object.\n * @returns The max message width of each actor.\n */\nasync function getMaxMessageWidthPerActor(\n actors: Map,\n messages: any[],\n diagObj: Diagram\n): Promise> {\n const maxMessageWidthPerActor = {};\n\n for (const msg of messages) {\n if (actors.get(msg.to) && actors.get(msg.from)) {\n const actor = actors.get(msg.to);\n\n // If this is the first actor, and the message is left of it, no need to calculate the margin\n if (msg.placement === diagObj.db.PLACEMENT.LEFTOF && !actor.prevActor) {\n continue;\n }\n\n // If this is the last actor, and the message is right of it, no need to calculate the margin\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF && !actor.nextActor) {\n continue;\n }\n\n const isNote = msg.placement !== undefined;\n const isMessage = !isNote;\n\n const textFont = isNote ? noteFont(conf) : messageFont(conf);\n const wrappedMessage = msg.wrap\n ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont)\n : msg.message;\n const messageDimensions = hasKatex(wrappedMessage)\n ? await calculateMathMLDimensions(msg.message, getConfig())\n : utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n\n /*\n * The following scenarios should be supported:\n *\n * - There's a message (non-note) between fromActor and toActor\n * - If fromActor is on the right and toActor is on the left, we should\n * define the toActor's margin\n * - If fromActor is on the left and toActor is on the right, we should\n * define the fromActor's margin\n * - There's a note, in which case fromActor == toActor\n * - If the note is to the left of the actor, we should define the previous actor\n * margin\n * - If the note is on the actor, we should define both the previous and next actor\n * margins, each being the half of the note size\n * - If the note is on the right of the actor, we should define the current actor\n * margin\n */\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = common.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n\n maxMessageWidthPerActor[msg.to] = common.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = common.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = common.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n }\n\n log.debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n}\n\nconst getRequiredPopupWidth = function (actor) {\n let requiredPopupWidth = 0;\n const textFont = actorFont(conf);\n for (const key in actor.links) {\n const labelDimensions = utils.calculateTextDimensions(key, textFont);\n const labelWidth = labelDimensions.width + 2 * conf.wrapPadding + 2 * conf.boxMargin;\n if (requiredPopupWidth < labelWidth) {\n requiredPopupWidth = labelWidth;\n }\n }\n\n return requiredPopupWidth;\n};\n\n/**\n * This will calculate the optimal margin for each given actor,\n * for a given actor \u2192 messageWidth map.\n *\n * An actor's margin is determined by the width of the actor, the width of the largest message that\n * originates from it, and the configured conf.actorMargin.\n *\n * @param actors - The actors map to calculate margins for\n * @param actorToMessageWidth - A map of actor key \u2192 max message width it holds\n * @param boxes - The boxes around the actors if any\n */\nasync function calculateActorMargins(\n actors: Map,\n actorToMessageWidth: Awaited>,\n boxes\n) {\n let maxHeight = 0;\n for (const prop of actors.keys()) {\n const actor = actors.get(prop);\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n actorFont(conf)\n );\n }\n const actDims = hasKatex(actor.description)\n ? await calculateMathMLDimensions(actor.description, getConfig())\n : utils.calculateTextDimensions(actor.description, actorFont(conf));\n\n actor.width = actor.wrap\n ? conf.width\n : common.getMax(conf.width, actDims.width + 2 * conf.wrapPadding);\n\n actor.height = actor.wrap ? common.getMax(actDims.height, conf.height) : conf.height;\n maxHeight = common.getMax(maxHeight, actor.height);\n }\n\n for (const actorKey in actorToMessageWidth) {\n const actor = actors.get(actorKey);\n\n if (!actor) {\n continue;\n }\n\n const nextActor = actors.get(actor.nextActor);\n\n // No need to space out an actor that doesn't have a next link\n if (!nextActor) {\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2;\n actor.margin = common.getMax(actorWidth, conf.actorMargin);\n continue;\n }\n\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n\n actor.margin = common.getMax(actorWidth, conf.actorMargin);\n }\n\n let maxBoxHeight = 0;\n boxes.forEach((box) => {\n const textFont = messageFont(conf);\n let totalWidth = box.actorKeys.reduce((total, aKey) => {\n return (total += actors.get(aKey).width + (actors.get(aKey).margin || 0));\n }, 0);\n\n const standardBoxPadding = conf.boxMargin * 8;\n totalWidth += standardBoxPadding;\n\n totalWidth -= 2 * conf.boxTextMargin;\n if (box.wrap) {\n box.name = utils.wrapLabel(box.name, totalWidth - 2 * conf.wrapPadding, textFont);\n }\n\n const boxMsgDimensions = utils.calculateTextDimensions(box.name, textFont);\n maxBoxHeight = common.getMax(boxMsgDimensions.height, maxBoxHeight);\n const minWidth = common.getMax(totalWidth, boxMsgDimensions.width + 2 * conf.wrapPadding);\n box.margin = conf.boxTextMargin;\n if (totalWidth < minWidth) {\n const missing = (minWidth - totalWidth) / 2;\n box.margin += missing;\n }\n });\n boxes.forEach((box) => (box.textMaxHeight = maxBoxHeight));\n\n return common.getMax(maxHeight, conf.height);\n}\n\nconst buildNoteModel = async function (msg, actors, diagObj) {\n const fromActor = actors.get(msg.from);\n const toActor = actors.get(msg.to);\n const startx = fromActor.x;\n const stopx = toActor.x;\n const shouldWrap = msg.wrap && msg.message;\n\n let textDimensions: { width: number; height: number; lineHeight?: number } = hasKatex(msg.message)\n ? await calculateMathMLDimensions(msg.message, getConfig())\n : utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message,\n noteFont(conf)\n );\n const noteModel = {\n width: shouldWrap\n ? conf.width\n : common.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: fromActor.x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message,\n };\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap\n ? common.getMax(conf.width, textDimensions.width)\n : common.getMax(\n fromActor.width / 2 + toActor.width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (fromActor.width + conf.actorMargin) / 2;\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap\n ? common.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin)\n : common.getMax(\n fromActor.width / 2 + toActor.width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (fromActor.width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = utils.calculateTextDimensions(\n shouldWrap\n ? utils.wrapLabel(msg.message, common.getMax(conf.width, fromActor.width), noteFont(conf))\n : msg.message,\n noteFont(conf)\n );\n noteModel.width = shouldWrap\n ? common.getMax(conf.width, fromActor.width)\n : common.getMax(fromActor.width, conf.width, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (fromActor.width - noteModel.width) / 2;\n } else {\n noteModel.width =\n Math.abs(startx + fromActor.width / 2 - (stopx + toActor.width / 2)) + conf.actorMargin;\n noteModel.startx =\n startx < stopx\n ? startx + fromActor.width / 2 - conf.actorMargin / 2\n : stopx + toActor.width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = utils.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n noteFont(conf)\n );\n }\n log.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\n\n// Central connection positioning constants\nconst CENTRAL_CONNECTION_BASE_OFFSET = 4;\nconst CENTRAL_CONNECTION_BIDIRECTIONAL_OFFSET = 6;\n\n/**\n * Check if a message has central connection\n * @param msg - The message object\n * @param diagObj - The diagram object containing LINETYPE constants\n * @returns True if the message has any type of central connection\n */\nconst hasCentralConnection = function (msg, diagObj) {\n const { CENTRAL_CONNECTION, CENTRAL_CONNECTION_REVERSE, CENTRAL_CONNECTION_DUAL } =\n diagObj.db.LINETYPE;\n return [CENTRAL_CONNECTION, CENTRAL_CONNECTION_REVERSE, CENTRAL_CONNECTION_DUAL].includes(\n msg.centralConnection\n );\n};\n\n/**\n * Calculate the positioning offset for central connection arrows\n * @param msg - The message object\n * @param diagObj - The diagram object containing LINETYPE constants\n * @param isArrowToRight - Whether the arrow is pointing to the right\n * @returns The offset to apply to startx position\n */\nconst calculateCentralConnectionOffset = function (msg, diagObj, isArrowToRight) {\n const {\n CENTRAL_CONNECTION_REVERSE,\n CENTRAL_CONNECTION_DUAL,\n BIDIRECTIONAL_SOLID,\n BIDIRECTIONAL_DOTTED,\n } = diagObj.db.LINETYPE;\n\n let offset = 0;\n\n if (\n msg.centralConnection === CENTRAL_CONNECTION_REVERSE ||\n msg.centralConnection === CENTRAL_CONNECTION_DUAL\n ) {\n offset += CENTRAL_CONNECTION_BASE_OFFSET;\n }\n\n if (\n (msg.centralConnection === CENTRAL_CONNECTION_REVERSE ||\n msg.centralConnection === CENTRAL_CONNECTION_DUAL) &&\n (msg.type === BIDIRECTIONAL_SOLID || msg.type === BIDIRECTIONAL_DOTTED)\n ) {\n offset += isArrowToRight ? 0 : -CENTRAL_CONNECTION_BIDIRECTIONAL_OFFSET;\n }\n\n return offset;\n};\n\n/**\n * Check if a message is a reverse arrow type\n * @param msg - The message object\n * @param diagObj - The diagram object containing LINETYPE constants\n * @returns True if the message is a reverse arrow type\n */\nconst isReverseArrowType = function (msg, diagObj) {\n const {\n SOLID_ARROW_TOP_REVERSE,\n SOLID_ARROW_TOP_REVERSE_DOTTED,\n SOLID_ARROW_BOTTOM_REVERSE,\n SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n STICK_ARROW_TOP_REVERSE,\n STICK_ARROW_TOP_REVERSE_DOTTED,\n STICK_ARROW_BOTTOM_REVERSE,\n STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n } = diagObj.db.LINETYPE;\n\n return [\n SOLID_ARROW_TOP_REVERSE,\n SOLID_ARROW_TOP_REVERSE_DOTTED,\n SOLID_ARROW_BOTTOM_REVERSE,\n SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n STICK_ARROW_TOP_REVERSE,\n STICK_ARROW_TOP_REVERSE_DOTTED,\n STICK_ARROW_BOTTOM_REVERSE,\n STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n ].includes(msg.type);\n};\n\n/**\n * Check if a message is a bidirectional arrow type\n * @param msg - The message object\n * @param diagObj - The diagram object containing LINETYPE constants\n * @returns True if the message is a bidirectional arrow type\n */\nconst isBidirectionalArrowType = function (msg, diagObj) {\n const { BIDIRECTIONAL_SOLID, BIDIRECTIONAL_DOTTED } = diagObj.db.LINETYPE;\n return [BIDIRECTIONAL_SOLID, BIDIRECTIONAL_DOTTED].includes(msg.type);\n};\n\nconst buildMessageModel = function (msg, actors, diagObj) {\n const { look } = getConfig();\n if (\n ![\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n\n diagObj.db.LINETYPE.SOLID_TOP,\n diagObj.db.LINETYPE.SOLID_BOTTOM,\n diagObj.db.LINETYPE.STICK_TOP,\n diagObj.db.LINETYPE.STICK_BOTTOM,\n\n diagObj.db.LINETYPE.SOLID_TOP_DOTTED,\n diagObj.db.LINETYPE.SOLID_BOTTOM_DOTTED,\n diagObj.db.LINETYPE.STICK_TOP_DOTTED,\n diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT,\n diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID,\n diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED,\n ].includes(msg.type)\n ) {\n return {};\n }\n const [fromLeft, fromRight] = activationBounds(msg.from, actors);\n const [toLeft, toRight] = activationBounds(msg.to, actors);\n const isArrowToRight = fromLeft <= toLeft;\n let startx = isArrowToRight ? fromRight : fromLeft;\n let stopx = isArrowToRight ? toLeft : toRight;\n\n if (look === 'neo') {\n const offset = 3;\n if (msg.type !== diagObj.db.LINETYPE.SOLID_OPEN) {\n stopx += isArrowToRight ? -offset : offset;\n }\n if (\n msg.type === diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID ||\n msg.type === diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED\n ) {\n startx += isArrowToRight ? offset : -offset;\n }\n }\n\n // Apply central connection positioning adjustments\n startx += calculateCentralConnectionOffset(msg, diagObj, isArrowToRight);\n // As the line width is considered, the left and right values will be off by 2.\n const isArrowToActivation = Math.abs(toLeft - toRight) > 2;\n\n /**\n * Adjust the value based on the arrow direction\n * @param value - The value to adjust\n * @returns The adjustment with correct sign to be added to the actual value.\n */\n const adjustValue = (value: number) => {\n return isArrowToRight ? -value : value;\n };\n\n if (msg.from === msg.to) {\n // This is a self reference, so we need to make sure the arrow is drawn correctly\n // There are many checks in the downstream rendering that checks for equality.\n // The lines on loops will be off by few pixels, but that's fine for now.\n stopx = startx;\n } else {\n /**\n * This is an edge case for the first activation.\n * Proper fix would require significant changes.\n * So, we set an activate flag in the message, and cross check that with isToActivation\n * In cases where the message is to an activation that was properly detected, we don't want to move the arrow head\n * The activation will not be detected on the first message, so we need to move the arrow head\n */\n if (msg.activate && !isArrowToActivation) {\n stopx += adjustValue(conf.activationWidth / 2 - 1);\n }\n\n /**\n * Shorten the length of arrow at the end and move the marker forward (using refX) to have a clean arrowhead\n * This is not required for open arrows that don't have arrowheads\n */\n if (\n ![\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n\n diagObj.db.LINETYPE.STICK_TOP,\n diagObj.db.LINETYPE.STICK_BOTTOM,\n\n diagObj.db.LINETYPE.STICK_TOP_DOTTED,\n diagObj.db.LINETYPE.STICK_BOTTOM_DOTTED,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,\n\n diagObj.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,\n\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,\n ].includes(msg.type)\n ) {\n stopx += adjustValue(3);\n }\n\n /**\n * Shorten start position of bidirectional arrow to accommodate for second arrowhead\n */\n if (\n [\n diagObj.db.LINETYPE.BIDIRECTIONAL_SOLID,\n diagObj.db.LINETYPE.BIDIRECTIONAL_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,\n diagObj.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,\n diagObj.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,\n ].includes(msg.type)\n ) {\n startx -= adjustValue(3);\n }\n }\n\n const allBounds = [fromLeft, fromRight, toLeft, toRight];\n const boundedWidth = Math.abs(startx - stopx);\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n common.getMax(boundedWidth + 2 * conf.wrapPadding, conf.width),\n messageFont(conf)\n );\n }\n const msgDims = utils.calculateTextDimensions(msg.message, messageFont(conf));\n\n return {\n width: common.getMax(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx,\n stopx,\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds),\n };\n};\n\nexport const adjustValueByDirection = (msg, actors, value) => {\n const [fromLeft] = activationBounds(msg.from, actors);\n const [toLeft] = activationBounds(msg.to, actors);\n const isArrowToRight = fromLeft <= toLeft;\n return isArrowToRight ? -value : value;\n};\n\nconst calculateLoopBounds = async function (messages, actors, _maxWidthPerActor, diagObj) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n\n for (const msg of messages) {\n switch (msg.type) {\n case diagObj.db.LINETYPE.LOOP_START:\n case diagObj.db.LINETYPE.ALT_START:\n case diagObj.db.LINETYPE.OPT_START:\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n case diagObj.db.LINETYPE.CRITICAL_START:\n case diagObj.db.LINETYPE.BREAK_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0,\n });\n break;\n case diagObj.db.LINETYPE.ALT_ELSE:\n case diagObj.db.LINETYPE.PAR_AND:\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case diagObj.db.LINETYPE.LOOP_END:\n case diagObj.db.LINETYPE.ALT_END:\n case diagObj.db.LINETYPE.OPT_END:\n case diagObj.db.LINETYPE.PAR_END:\n case diagObj.db.LINETYPE.CRITICAL_END:\n case diagObj.db.LINETYPE.BREAK_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors.get(msg.from ? msg.from : msg.to.actor);\n const stackedSize = actorActivations(msg.from ? msg.from : msg.to.actor).length;\n const x =\n actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from,\n enabled: true,\n };\n bounds.activations.push(toAdd);\n }\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations\n .map((a) => a.actor)\n .lastIndexOf(msg.from);\n bounds.activations.splice(lastActorActivationIdx, 1).splice(0, 1);\n }\n break;\n }\n const isNote = msg.placement !== undefined;\n if (isNote) {\n noteModel = await buildNoteModel(msg, actors, diagObj);\n msg.noteModel = noteModel;\n stack.forEach((stk) => {\n current = stk;\n current.from = common.getMin(current.from, noteModel.startx);\n current.to = common.getMax(current.to, noteModel.startx + noteModel.width);\n current.width =\n common.getMax(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors, diagObj);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach((stk) => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n const from = actors.get(msg.from);\n const to = actors.get(msg.to);\n current.from = common.getMin(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = common.getMax(\n to.x + msgModel.width / 2,\n to.x + from.width / 2,\n current.to\n );\n current.width =\n common.getMax(current.width, Math.abs(current.to - current.from)) -\n conf.labelBoxWidth;\n } else {\n current.from = common.getMin(msgModel.startx, current.from);\n current.to = common.getMax(msgModel.stopx, current.to);\n current.width = common.getMax(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n }\n bounds.activations = [];\n log.debug('Loop type widths:', loops);\n return loops;\n};\n\nexport default {\n bounds,\n drawActors,\n drawActorsPopup,\n setConf,\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/sequenceDiagram.jison';\nimport { SequenceDB } from './sequenceDb.js';\nimport styles from './styles.js';\nimport { setConfig } from '../../diagram-api/diagramAPI.js';\nimport renderer from './sequenceRenderer.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new SequenceDB();\n },\n renderer,\n styles,\n init: (cnf: MermaidConfig) => {\n if (!cnf.sequence) {\n cnf.sequence = {};\n }\n if (cnf.wrap) {\n cnf.sequence.wrap = cnf.wrap;\n setConfig({ sequence: { wrap: cnf.wrap } });\n }\n },\n};\n"], + "mappings": "kiBAyEA,IAAIA,IAAU,UAAU,CACxB,IAAIC,EAAEC,EAAA,SAASC,GAAEC,EAAEH,EAAEI,EAAE,CAAC,IAAIJ,EAAEA,GAAG,CAAC,EAAEI,EAAEF,GAAE,OAAOE,IAAIJ,EAAEE,GAAEE,CAAC,CAAC,EAAED,EAAE,CAAC,OAAOH,CAAC,EAAhE,KAAkEK,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,CAAC,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,EAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,GAAG,EAAEC,GAAI,CAAC,EAAE,EAAE,EAAEC,GAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,EAAE,EAAE,EAAEC,EAAK,CAAC,GAAG,GAAG,GAAG,EAAE,EAAEC,GAAK,CAAC,EAAE,GAAG,EAC5yC5E,GAAS,CAAC,MAAOE,EAAA,UAAkB,CAAE,EAApB,SACrB,GAAI,CAAC,EACL,SAAU,CAAC,MAAQ,EAAE,MAAQ,EAAE,MAAQ,EAAE,QAAU,EAAE,GAAK,EAAE,SAAW,EAAE,KAAO,EAAE,UAAY,EAAE,QAAU,GAAG,YAAc,GAAG,SAAW,GAAG,sBAAwB,GAAG,OAAS,GAAG,IAAM,GAAG,WAAa,GAAG,IAAM,GAAG,OAAS,GAAG,WAAa,GAAG,IAAM,GAAG,IAAM,GAAG,SAAW,GAAG,MAAQ,GAAG,WAAa,GAAG,eAAiB,GAAG,gBAAkB,GAAG,eAAiB,GAAG,qBAAuB,GAAG,kBAAoB,GAAG,MAAQ,GAAG,aAAe,GAAG,UAAY,GAAG,gBAAkB,GAAG,UAAY,GAAG,gBAAkB,GAAG,0BAA4B,GAAG,KAAO,GAAG,KAAO,GAAG,IAAM,GAAG,IAAM,GAAG,cAAgB,GAAG,IAAM,GAAG,aAAe,GAAG,SAAW,GAAG,SAAW,GAAG,gBAAkB,GAAG,MAAQ,GAAG,OAAS,GAAG,IAAM,GAAG,KAAO,GAAG,YAAc,GAAG,GAAK,GAAG,kBAAoB,GAAG,QAAU,GAAG,kBAAoB,GAAG,KAAO,GAAG,UAAY,GAAG,MAAQ,GAAG,KAAO,GAAG,WAAa,GAAG,MAAQ,GAAG,KAAO,GAAG,WAAa,GAAG,QAAU,GAAG,UAAY,GAAG,IAAI,GAAG,QAAU,GAAG,SAAW,GAAG,WAAa,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,MAAQ,GAAG,cAAgB,GAAG,aAAe,GAAG,eAAiB,GAAG,WAAa,GAAG,iBAAmB,GAAG,kBAAoB,GAAG,YAAc,GAAG,gBAAkB,GAAG,mBAAqB,GAAG,gBAAkB,GAAG,mBAAqB,GAAG,uBAAyB,GAAG,0BAA4B,GAAG,uBAAyB,GAAG,0BAA4B,GAAG,wBAA0B,GAAG,2BAA6B,GAAG,wBAA0B,GAAG,2BAA6B,GAAG,+BAAiC,GAAG,kCAAoC,GAAG,+BAAiC,GAAG,kCAAoC,GAAG,0BAA4B,GAAG,aAAe,GAAG,2BAA6B,GAAG,YAAc,IAAI,aAAe,IAAI,YAAc,IAAI,aAAe,IAAI,IAAM,IAAI,QAAU,EAAE,KAAO,CAAC,EACnxD,WAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,eAAe,GAAG,YAAY,GAAG,kBAAkB,GAAG,YAAY,GAAG,kBAAkB,GAAG,4BAA4B,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,GAAG,oBAAoB,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,GAAG,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,eAAe,GAAG,iBAAiB,GAAG,aAAa,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,cAAc,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,yBAAyB,GAAG,4BAA4B,GAAG,yBAAyB,GAAG,4BAA4B,GAAG,0BAA0B,GAAG,6BAA6B,GAAG,0BAA0B,GAAG,6BAA6B,GAAG,iCAAiC,GAAG,oCAAoC,GAAG,iCAAiC,GAAG,oCAAoC,GAAG,4BAA4B,GAAG,eAAe,GAAG,6BAA6B,IAAI,cAAc,IAAI,eAAe,IAAI,cAAc,IAAI,eAAe,IAAI,KAAK,EACt2C,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAC1sB,cAAeA,EAAA,SAAmB2E,EAAQC,EAAQC,EAAUC,EAAIC,EAAyBC,EAAiBC,GAAiB,CAG3H,IAAIC,EAAKF,EAAG,OAAS,EACrB,OAAQD,EAAS,CACjB,IAAK,GACJ,OAAAD,EAAG,MAAME,EAAGE,CAAE,CAAC,EAASF,EAAGE,CAAE,EAC9B,MACA,IAAK,GAAG,IAAK,IACZ,KAAK,EAAI,CAAC,EACX,MACA,IAAK,GAAG,IAAK,IACbF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAAE,KAAK,EAAIF,EAAGE,EAAG,CAAC,EACtC,MACA,IAAK,GAAG,IAAK,GAAG,IAAK,IAAI,IAAK,IAC7B,KAAK,EAAIF,EAAGE,CAAE,EACf,MACA,IAAK,GAAG,IAAK,GAAG,IAAK,IACpB,KAAK,EAAE,CAAC,EACT,MACA,IAAK,IACLF,EAAGE,CAAE,EAAE,KAAK,oBAAqB,KAAK,EAAEF,EAAGE,CAAE,EAC7C,MACA,IAAK,IAEHF,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,WAAY,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,CAAE,CAAC,EACvEF,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,SAAU,QAAQF,EAAGE,EAAG,CAAC,CAAC,CAAC,EAChD,KAAK,EAAEF,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IACJ,KAAK,EAAG,CAAC,KAAK,gBAAgB,cAAe,OAAOF,EAAGE,EAAG,CAAC,CAAC,EAAG,kBAAkB,OAAOF,EAAGE,EAAG,CAAC,CAAC,EAAG,gBAAgB,GAAM,WAAWJ,EAAG,SAAS,UAAU,EAC3J,MACA,IAAK,IACJ,KAAK,EAAI,CAAC,KAAK,gBAAgB,cAAe,OAAOE,EAAGE,EAAG,CAAC,CAAC,EAAG,kBAAkB,EAAG,gBAAgB,GAAM,WAAWJ,EAAG,SAAS,UAAU,EAC7I,MACA,IAAK,IACJ,KAAK,EAAI,CAAC,KAAK,gBAAiB,gBAAgB,GAAO,WAAWA,EAAG,SAAS,UAAU,EACzF,MACA,IAAK,IACL,KAAK,EAAI,CAAC,KAAK,gBAAiB,gBAAgB,GAAM,WAAWA,EAAG,SAAS,UAAU,EACvF,MACA,IAAK,IACL,KAAK,EAAE,CAAC,KAAM,cAAe,WAAYA,EAAG,SAAS,aAAc,MAAOE,EAAGE,EAAG,CAAC,EAAE,KAAK,EACxF,MACA,IAAK,IACL,KAAK,EAAE,CAAC,KAAM,YAAa,WAAYJ,EAAG,SAAS,WAAY,MAAOE,EAAGE,EAAG,CAAC,EAAE,KAAK,EACpF,MACA,IAAK,IACLJ,EAAG,gBAAgBE,EAAGE,CAAE,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,EAAEF,EAAGE,CAAE,EAAE,UAAU,CAAC,EACjE,MACA,IAAK,IACLJ,EAAG,gBAAgBE,EAAGE,CAAE,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,EAAEF,EAAGE,CAAE,EAAE,UAAU,CAAC,EACjE,MACA,IAAK,IACJ,KAAK,EAAEF,EAAGE,CAAE,EAAE,KAAK,EAAEJ,EAAG,YAAY,KAAK,CAAC,EAC3C,MACA,IAAK,IAAI,IAAK,IACb,KAAK,EAAEE,EAAGE,CAAE,EAAE,KAAK,EAAEJ,EAAG,kBAAkB,KAAK,CAAC,EACjD,MACA,IAAK,IAEHE,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,YAAa,SAASJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,UAAU,CAAC,EAC5GE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,UAAW,SAASF,EAAGE,EAAG,CAAC,EAAG,WAAYJ,EAAG,SAAS,QAAQ,CAAC,EACpF,KAAK,EAAEE,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IAEHF,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,YAAa,MAAMJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,UAAW,CAAC,EAC1GE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,UAAW,MAAMJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,QAAS,CAAC,EACnG,KAAK,EAAEE,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IAEHF,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,WAAY,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,SAAS,CAAC,EACzGE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,SAAU,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,OAAO,CAAC,EAClG,KAAK,EAAEE,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IAGHF,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,WAAY,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,SAAS,CAAC,EAGzGE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,SAAU,WAAYJ,EAAG,SAAS,OAAO,CAAC,EAC/D,KAAK,EAAEE,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IAGHF,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,WAAY,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,SAAS,CAAC,EAGzGE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,SAAU,WAAYJ,EAAG,SAAS,OAAO,CAAC,EAC/D,KAAK,EAAEE,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IAGHF,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,WAAY,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,cAAc,CAAC,EAG9GE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,SAAU,WAAYJ,EAAG,SAAS,OAAO,CAAC,EAC/D,KAAK,EAAEE,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IAGHF,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,gBAAiB,aAAaJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,cAAc,CAAC,EAGxHE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,cAAe,WAAYJ,EAAG,SAAS,YAAY,CAAC,EACzE,KAAK,EAAEE,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IAEHF,EAAGE,EAAG,CAAC,EAAE,QAAQ,CAAC,KAAM,aAAc,UAAUJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,WAAW,CAAC,EAC/GE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAM,WAAY,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,SAAS,CAAC,EACtG,KAAK,EAAEE,EAAGE,EAAG,CAAC,EAChB,MACA,IAAK,IACJ,KAAK,EAAIF,EAAGE,EAAG,CAAC,EAAE,OAAO,CAAC,CAAC,KAAM,SAAU,WAAWJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,eAAe,EAAGE,EAAGE,CAAE,CAAC,CAAC,EACnI,MACA,IAAK,IACJ,KAAK,EAAIF,EAAGE,EAAG,CAAC,EAAE,OAAO,CAAC,CAAC,KAAM,MAAO,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,OAAO,EAAGE,EAAGE,CAAE,CAAC,CAAC,EACrH,MACA,IAAK,IACJ,KAAK,EAAIF,EAAGE,EAAG,CAAC,EAAE,OAAO,CAAC,CAAC,KAAM,OAAQ,QAAQJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,WAAYJ,EAAG,SAAS,QAAQ,EAAGE,EAAGE,CAAE,CAAC,CAAC,EACvH,MACA,IAAK,IACLF,EAAGE,EAAG,CAAC,EAAE,KAAK,cAAeF,EAAGE,EAAG,CAAC,EAAE,KAAK,iBAAiBF,EAAGE,EAAG,CAAC,EAAE,YAAYJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,KAAK,EAAEF,EAAGE,EAAG,CAAC,EAC1H,MACA,IAAK,IACLF,EAAGE,EAAG,CAAC,EAAE,KAAK,cAAeF,EAAGE,EAAG,CAAC,EAAE,KAAK,iBAAiB,KAAK,EAAEF,EAAGE,EAAG,CAAC,EAC1E,MACA,IAAK,IACLF,EAAGE,EAAG,CAAC,EAAE,KAAK,QAASF,EAAGE,EAAG,CAAC,EAAE,KAAK,iBAAiBF,EAAGE,EAAG,CAAC,EAAE,YAAYJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,KAAK,EAAEF,EAAGE,EAAG,CAAC,EACpH,MACA,IAAK,IAAI,IAAK,IACdF,EAAGE,EAAG,CAAC,EAAE,KAAK,QAASF,EAAGE,EAAG,CAAC,EAAE,KAAK,iBAAkB,KAAK,EAAEF,EAAGE,EAAG,CAAC,EACrE,MACA,IAAK,IACLF,EAAGE,EAAG,CAAC,EAAE,KAAK,qBAAsB,KAAK,EAAEF,EAAGE,EAAG,CAAC,EAClD,MACA,IAAK,IACLF,EAAGE,EAAG,CAAC,EAAE,KAAK,cAAeF,EAAGE,EAAG,CAAC,EAAE,KAAK,iBAAkBF,EAAGE,EAAG,CAAC,EAAE,YAAYJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,KAAK,EAAEF,EAAGE,EAAG,CAAC,EAC3H,MACA,IAAK,IACLF,EAAGE,EAAG,CAAC,EAAE,KAAK,cAAeF,EAAGE,EAAG,CAAC,EAAE,KAAK,iBAAkB,KAAK,EAAEF,EAAGE,EAAG,CAAC,EAC3E,MACA,IAAK,IACLF,EAAGE,EAAG,CAAC,EAAE,KAAK,QAASF,EAAGE,EAAG,CAAC,EAAE,KAAK,iBAAkBF,EAAGE,EAAG,CAAC,EAAE,YAAYJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,CAAC,EAAG,KAAK,EAAEF,EAAGE,EAAG,CAAC,EACrH,MACA,IAAK,IAEH,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAG,CAAC,KAAK,UAAW,UAAUF,EAAGE,EAAG,CAAC,EAAG,MAAMF,EAAGE,EAAG,CAAC,EAAE,MAAO,KAAKF,EAAGE,CAAE,CAAC,CAAC,EAC7F,MACA,IAAK,IAGHF,EAAGE,EAAG,CAAC,EAAI,CAAC,EAAE,OAAOF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,CAAC,EAAE,MAAM,EAAG,CAAC,EACnDF,EAAGE,EAAG,CAAC,EAAE,CAAC,EAAIF,EAAGE,EAAG,CAAC,EAAE,CAAC,EAAE,MAC1BF,EAAGE,EAAG,CAAC,EAAE,CAAC,EAAIF,EAAGE,EAAG,CAAC,EAAE,CAAC,EAAE,MAC1B,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAG,CAAC,KAAK,UAAW,UAAUJ,EAAG,UAAU,KAAM,MAAME,EAAGE,EAAG,CAAC,EAAE,MAAM,EAAG,CAAC,EAAG,KAAKF,EAAGE,CAAE,CAAC,CAAC,EAC5G,MACA,IAAK,IAEH,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAG,CAAC,KAAK,WAAY,MAAMF,EAAGE,EAAG,CAAC,EAAE,MAAO,KAAKF,EAAGE,CAAE,CAAC,CAAC,EAE1E,MACA,IAAK,IAEH,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAG,CAAC,KAAK,WAAY,MAAMF,EAAGE,EAAG,CAAC,EAAE,MAAO,KAAKF,EAAGE,CAAE,CAAC,CAAC,EAE1E,MACA,IAAK,IAEH,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAG,CAAC,KAAK,gBAAiB,MAAMF,EAAGE,EAAG,CAAC,EAAE,MAAO,KAAKF,EAAGE,CAAE,CAAC,CAAC,EAE/E,MACA,IAAK,IAEH,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAG,CAAC,KAAK,aAAc,MAAMF,EAAGE,EAAG,CAAC,EAAE,MAAO,KAAKF,EAAGE,CAAE,CAAC,CAAC,EAE5E,MACA,IAAK,IACJ,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,EAC3B,MACA,IAAK,IACJ,KAAK,EAAIF,EAAGE,CAAE,EACf,MACA,IAAK,IACJ,KAAK,EAAIJ,EAAG,UAAU,OACvB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,UAAU,QACvB,MACA,IAAK,IACJ,KAAK,EAAI,CAACE,EAAGE,EAAG,CAAC,EAAEF,EAAGE,EAAG,CAAC,EAAE,CAAC,KAAM,aAAc,KAAKF,EAAGE,EAAG,CAAC,EAAE,MAAO,GAAGF,EAAGE,EAAG,CAAC,EAAE,MAAO,WAAWF,EAAGE,EAAG,CAAC,EAAG,IAAIF,EAAGE,CAAE,EAAG,SAAU,EAAI,EAC1H,CAAC,KAAM,cAAe,WAAYJ,EAAG,SAAS,aAAc,MAAOE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAClF,EACd,MACA,IAAK,IACJ,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAEF,EAAGE,EAAG,CAAC,EAAE,CAAC,KAAM,aAAc,KAAKF,EAAGE,EAAG,CAAC,EAAE,MAAO,GAAGF,EAAGE,EAAG,CAAC,EAAE,MAAO,WAAWF,EAAGE,EAAG,CAAC,EAAG,IAAIF,EAAGE,CAAE,CAAC,EAC3G,CAAC,KAAM,YAAa,WAAYJ,EAAG,SAAS,WAAY,MAAOE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAC7E,EACd,MACA,IAAK,IACJ,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAEF,EAAGE,EAAG,CAAC,EAAE,CAAC,KAAM,aAAc,KAAKF,EAAGE,EAAG,CAAC,EAAE,MAAO,GAAGF,EAAGE,EAAG,CAAC,EAAE,MAAO,WAAWF,EAAGE,EAAG,CAAC,EAAG,IAAIF,EAAGE,CAAE,EAAG,SAAU,GAAM,kBAAmBJ,EAAG,SAAS,kBAAkB,EAC7K,CAAC,KAAM,oBAAqB,WAAYA,EAAG,SAAS,mBAAoB,MAAOE,EAAGE,EAAG,CAAC,EAAE,KAAO,CAChG,EACd,MACA,IAAK,IACJ,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAEF,EAAGE,EAAG,CAAC,EAAE,CAAC,KAAM,aAAc,KAAKF,EAAGE,EAAG,CAAC,EAAE,MAAO,GAAGF,EAAGE,EAAG,CAAC,EAAE,MAAO,WAAWF,EAAGE,EAAG,CAAC,EAAG,IAAIF,EAAGE,CAAE,EAAG,SAAU,GAAO,kBAAmBJ,EAAG,SAAS,0BAA0B,EACtL,CAAC,KAAM,2BAA4B,WAAYA,EAAG,SAAS,2BAA4B,MAAOE,EAAGE,EAAG,CAAC,EAAE,KAAK,CAC7G,EACd,MACA,IAAK,IACJ,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAEF,EAAGE,EAAG,CAAC,EAAE,CAAC,KAAM,aAAc,KAAKF,EAAGE,EAAG,CAAC,EAAE,MAAO,GAAGF,EAAGE,EAAG,CAAC,EAAE,MAAO,WAAWF,EAAGE,EAAG,CAAC,EAAG,IAAIF,EAAGE,CAAE,EAAG,SAAU,GAAM,kBAAmBJ,EAAG,SAAS,uBAAuB,EAC3L,CAAC,KAAM,oBAAqB,WAAYA,EAAG,SAAS,mBAAoB,MAAOE,EAAGE,EAAG,CAAC,EAAE,KAAO,EAChG,CAAC,KAAM,2BAA4B,WAAYJ,EAAG,SAAS,2BAA4B,MAAOE,EAAGE,EAAG,CAAC,EAAE,KAAK,CACnG,EACd,MACA,IAAK,IACJ,KAAK,EAAI,CAACF,EAAGE,EAAG,CAAC,EAAEF,EAAGE,EAAG,CAAC,EAAE,CAAC,KAAM,aAAc,KAAKF,EAAGE,EAAG,CAAC,EAAE,MAAO,GAAGF,EAAGE,EAAG,CAAC,EAAE,MAAO,WAAWF,EAAGE,EAAG,CAAC,EAAG,IAAIF,EAAGE,CAAE,CAAC,CAAC,EAC1H,MACA,IAAK,IAEG,KAAK,EAAI,CACP,KAAM,iBACN,MAAOF,EAAGE,EAAG,CAAC,EACd,OAAQF,EAAGE,CAAE,CACf,EAER,MACA,IAAK,IAEG,KAAK,EAAIF,EAAGE,EAAG,CAAC,EAAE,KAAK,EAE/B,MACA,IAAK,IACL,KAAK,EAAE,CAAE,KAAM,iBAAkB,MAAMF,EAAGE,CAAE,CAAC,EAC7C,MACA,IAAK,IACJ,KAAK,EAAIJ,EAAG,SAAS,WACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,YACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,MACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,UACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,aACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,UACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,aACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,iBACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,oBACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,iBACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,oBACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,wBACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,2BACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,wBACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,2BACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,+BACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,kCACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,+BACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,kCACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,oBACtB,MACA,IAAK,IACJ,KAAK,EAAIA,EAAG,SAAS,OACtB,MACA,IAAK,KACJ,KAAK,EAAIA,EAAG,SAAS,qBACtB,MACA,IAAK,KACJ,KAAK,EAAIA,EAAG,SAAS,YACtB,MACA,IAAK,KACJ,KAAK,EAAIA,EAAG,SAAS,aACtB,MACA,IAAK,KACJ,KAAK,EAAIA,EAAG,SAAS,YACtB,MACA,IAAK,KACJ,KAAK,EAAIA,EAAG,SAAS,aACtB,MACA,IAAK,KACL,KAAK,EAAIA,EAAG,aAAaE,EAAGE,CAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EACnD,KACA,CACA,EApUe,aAqUf,MAAO,CAAC,CAAC,EAAE,EAAE,EAAE9E,EAAI,EAAEC,EAAI,EAAEC,CAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAEF,EAAI,EAAEC,EAAI,EAAEC,CAAG,EAAE,CAAC,EAAE,EAAE,EAAEF,EAAI,EAAEC,EAAI,EAAEC,CAAG,EAAEP,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEQ,EAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEC,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAEtC,EAAEuC,EAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG3B,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAEtC,EAAEuC,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAGT,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAGM,CAAG,EAAE,CAAC,GAAG,GAAG,GAAGA,CAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEtC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGA,EAAG,EAAE,CAAC,GAAG,GAAG,GAAGF,CAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAGG,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,IAAIC,GAAI,IAAIC,GAAI,IAAIC,GAAI,IAAIC,EAAG,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG5B,CAAG,EAAE,CAAC,GAAG,IAAI,GAAGA,CAAG,EAAE,CAAC,GAAG,IAAI,GAAGA,CAAG,EAAE,CAAC,GAAG,IAAI,GAAGA,CAAG,EAAEtC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEmE,EAAG,EAAEnE,EAAEuC,EAAI,CAAC,EAAE,CAAC,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEoE,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAEpE,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEqE,GAAK7D,EAAI,CAAC,EAAE,GAAG,CAAC,EAAER,EAAEqE,GAAK7D,EAAI,CAAC,EAAE,GAAG,CAAC,EAAER,EAAEqE,GAAK7D,EAAI,CAAC,EAAE,GAAG,CAAC,EAAER,EAAEsE,GAAK9D,EAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAER,EAAEuE,GAAK/D,EAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAER,EAAEuE,GAAK/D,EAAI,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,EAAER,EAAEwE,GAAKhE,EAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAER,EAAEqE,GAAK7D,EAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAER,EAAEyE,GAAKN,GAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG7B,CAAG,EAAE,CAAC,GAAG,IAAI,GAAGG,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,IAAIC,GAAI,IAAIC,GAAI,IAAIC,GAAI,IAAIC,EAAG,EAAElE,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,EAAE,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,GAAG,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,GAAG,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,GAAG,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,GAAG,CAAC,EAAE1E,EAAE0E,EAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAGpC,CAAG,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAGA,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,IAAIqC,EAAI,EAAE,CAAC,GAAG,IAAI,IAAIA,EAAI,EAAE,CAAC,GAAG,IAAI,IAAIA,EAAI,EAAE,CAAC,GAAG,IAAI,IAAIA,EAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG7C,EAAI,GAAGC,EAAI,GAAGC,CAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAEhC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAEvC,EAAEuC,EAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE9B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAG,GAAG,GAAGC,EAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAGC,EAAI,GAAGC,EAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,EAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,GAAI,GAAGC,CAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE7B,EAAI,EAAEC,EAAI,EAAE,EAAE,EAAE,GAAG,GAAGC,EAAI,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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "$VV", "$VW", "$VX", "$VY", "$VZ", "$V_", "$V$", "$V01", "$V11", "$V21", "$V31", "$V41", "$V51", "$V61", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "sequenceDiagram_default", "parser", "LINETYPE", "ARROWTYPE", "PLACEMENT", "PARTICIPANT_TYPE", "SequenceDB", "ImperativeState", "setAccTitle", "setAccDescription", "setDiagramTitle", "getAccTitle", "getAccDescription", "getDiagramTitle", "getConfig", "__name", "data", "id", "name", "description", "type", "metadata", "assignedBox", "doc", "yamlData", "load", "JSON_SCHEMA", "old", "prevActorInRecords", "part", "i", "count", "idFrom", "idTo", "message", "answer", "messageType", "activate", "centralConnection", "error", "b", "wrapSetting", "text", "wrap", "clear", "str", "trimmedStr", "cleanedText", "log", "match", "color", "title", "style", "sanitizeText", "actor", "placement", "note", "actors", "actorId", "sanitizedText", "links", "e", "sep", "label", "link", "key", "properties", "elem", "details", "param", "item", "getStyles", "__name", "options", "dropShadow", "look", "getConfig", "styles_default", "import_sanitize_url", "ACTOR_TYPE_WIDTH", "TOP_ACTOR_CLASS", "BOTTOM_ACTOR_CLASS", "ACTOR_BOX_CLASS", "ACTOR_MAN_FIGURE_CLASS", "COLOR_THEMES", "drawRect", "__name", "elem", "rectData", "rectElement", "getConfig", "drawPopup", "actor", "minMenuWidth", "textAttrs", "forceMenus", "links", "actorCnt", "displayValue", "g", "actorClass", "menuWidth", "rectElem", "linkY", "key", "linkElem", "sanitizedLink", "_drawMenuItemTextCandidateFunc", "popupMenuToggle", "popId", "drawKatex", "textData", "msgModel", "textElem", "linesSanitized", "renderKatexSanitized", "dim", "rectDim", "startx", "stopx", "starty", "temp", "drawText", "prevTextHeight", "textHeight", "lines", "common_default", "_textFontSize", "_textFontSizePx", "parseFontSize", "textElems", "dy", "yfunc", "i", "line", "text", "ZERO_WIDTH_SPACE", "span", "drawLabel", "txtObject", "genPoints", "x", "y", "width", "height", "cut", "polygon", "fixLifeLineHeights", "diagram", "actors", "actorKeys", "conf", "actorKey", "actorDOM", "drawActorTypeParticipant", "isFooter", "actorIndexMap", "actorY", "center", "centerY", "look", "theme", "themeVariables", "bkgColorArray", "borderColorArray", "boxplusLineGroup", "rect", "getNoteRect", "cssclass", "actorCount", "iconSrc", "drawEmbeddedImage", "drawImage", "_drawTextCandidateFunc", "hasKatex", "bounds", "drawActorTypeCollections", "offset", "shadowRect", "stackedRect", "drawActorTypeQueue", "ry", "rx", "cylinderGroup", "cylinderArc", "cylinderPath", "iconX", "iconY", "lastPath", "drawActorTypeControl", "diagramId", "actorBorder", "actorBkg", "actElem", "cssClass", "cx", "cy", "r", "drawActorTypeEntity", "drawActorTypeDatabase", "w", "h", "d", "drawActorTypeBoundary", "radius", "drawActorTypeActor", "scale", "adjustedActorY", "circle", "drawActor", "diagObj", "resolvedActorIndexMap", "participant", "index", "drawBox", "box", "drawBackgroundRect", "anchorElement", "drawActivation", "_elem", "verticalPos", "actorActivations", "mainBkg", "drawLoop", "loopModel", "labelText", "msg", "boxMargin", "boxTextMargin", "labelBoxHeight", "labelBoxWidth", "fontFamily", "fontSize", "fontWeight", "drawLoopLine", "stopy", "item", "txt", "getTextObj", "idx", "sectionHeight", "te", "acc", "curr", "insertDatabaseIcon", "id", "insertComputerIcon", "insertClockIcon", "insertArrowHead", "insertArrowFilledHead", "insertSequenceNumber", "insertArrowCrossHead", "insertDropShadow", "byText", "content", "_setTextAttrs", "byTspan", "actorFontSize", "actorFontFamily", "actorFontWeight", "_actorFontSize", "_actorFontSizePx", "byFo", "s", "byKatex", "calculateMathMLDimensions", "toText", "fromTextAttrsDict", "insertSolidTopArrowHead", "insertSolidBottomArrowHead", "insertStickTopArrowHead", "insertStickBottomArrowHead", "svgDraw_default", "conf", "bounds", "__name", "actor", "it", "acc", "h", "boxModel", "actorModel", "loopModel", "msgModel", "noteModel", "setConf", "getConfig", "obj", "key", "val", "fun", "startx", "starty", "stopx", "stopy", "_self", "cnt", "updateFn", "type", "item", "n", "_startx", "common_default", "_stopx", "_starty", "_stopy", "message", "diagram", "actors", "actorRect", "stackedSize", "actorActivations", "x", "svgDraw_default", "lastActorActivationIdx", "activation", "title", "fill", "loop", "bump", "drawNote", "elem", "id", "rect", "getNoteRect", "g", "rectElem", "textObj", "getTextObj", "textElem", "hasKatex", "drawKatex", "drawText", "textHeight", "te", "curr", "drawCentralConnection", "msg", "diagObj", "lineStartY", "fromActor", "toActor", "isAutoNumberOn", "fromCenter", "toCenter", "isLeftToRight", "isReverse", "isReverseArrowType", "CENTRAL_CONNECTION_CIRCLE_OFFSET", "getCircleOffset", "baseOffset", "drawCircle", "cx", "CENTRAL_CONNECTION", "CENTRAL_CONNECTION_REVERSE", "CENTRAL_CONNECTION_DUAL", "messageFont", "cnf", "noteFont", "actorFont", "boundMessage", "_diagram", "lines", "isKatexMsg", "textDims", "calculateMathMLDimensions", "utils_default", "lineHeight", "totalOffset", "textWidth", "dx", "drawMessage", "diagramId", "sequenceIndex", "sequenceVisible", "line", "isBidirectional", "isBidirectionalArrowType", "lineStartX", "hasCentralConnection", "url", "getUrl", "SEQUENCE_NUMBER_RADIUS", "hasCentralConn", "lineStopX", "autonumberX", "isSelfMessage", "fontSize", "sequenceIndexLength", "addActorRenderingData", "createdActors", "actorKeys", "verticalPos", "messages", "isFooter", "prevWidth", "prevMargin", "prevBox", "maxHeight", "actorKey", "box", "drawActors", "actorIndexMap", "height", "drawActorsPopup", "doc", "maxWidth", "minMenuWidth", "getRequiredPopupWidth", "menuDimensions", "assignWithDepth_default", "activationBounds", "actorObj", "activations", "left", "right", "adjustLoopHeightForWrap", "loopWidths", "preMargin", "postMargin", "addLoopFn", "heightAdjust", "loopWidth", "textConf", "log", "adjustCreatedDestroyedData", "index", "destroyedActors", "receiverAdjustment", "adjustment", "senderAdjustment", "actorArray", "PARTICIPANT_TYPE", "ACTOR_TYPE_WIDTH", "draw", "_text", "_version", "securityLevel", "sequence", "look", "sandboxElement", "select_default", "root", "boxes", "hasBoxes", "hasBoxTitles", "maxMessageWidthPerActor", "getMaxMessageWidthPerActor", "calculateActorMargins", "newActors", "calculateLoopBounds", "activeEnd", "activationData", "sequenceIndexStep", "messagesToDraw", "backgrounds", "e", "fixLifeLineHeights", "boxPadding", "requiredBoxSize", "boxHeight", "boxWidth", "width", "configureSvgSize", "extraVertForTitle", "extraHeightForNeoActors", "isNote", "isMessage", "textFont", "wrappedMessage", "messageWidth", "requiredPopupWidth", "labelWidth", "actorToMessageWidth", "prop", "actDims", "nextActor", "actorWidth", "maxBoxHeight", "totalWidth", "total", "aKey", "standardBoxPadding", "boxMsgDimensions", "minWidth", "missing", "buildNoteModel", "shouldWrap", "textDimensions", "CENTRAL_CONNECTION_BASE_OFFSET", "CENTRAL_CONNECTION_BIDIRECTIONAL_OFFSET", "calculateCentralConnectionOffset", "isArrowToRight", "BIDIRECTIONAL_SOLID", "BIDIRECTIONAL_DOTTED", "offset", "SOLID_ARROW_TOP_REVERSE", "SOLID_ARROW_TOP_REVERSE_DOTTED", "SOLID_ARROW_BOTTOM_REVERSE", "SOLID_ARROW_BOTTOM_REVERSE_DOTTED", "STICK_ARROW_TOP_REVERSE", "STICK_ARROW_TOP_REVERSE_DOTTED", "STICK_ARROW_BOTTOM_REVERSE", "STICK_ARROW_BOTTOM_REVERSE_DOTTED", "buildMessageModel", "fromLeft", "fromRight", "toLeft", "toRight", "isArrowToActivation", "adjustValue", "value", "allBounds", "boundedWidth", "msgDims", "calculateLoopBounds", "__name", "messages", "actors", "_maxWidthPerActor", "diagObj", "loops", "stack", "current", "noteModel", "msgModel", "msg", "actorRect", "stackedSize", "actorActivations", "x", "conf", "toAdd", "bounds", "lastActorActivationIdx", "a", "buildNoteModel", "stk", "common_default", "buildMessageModel", "from", "to", "log", "sequenceRenderer_default", "drawActors", "drawActorsPopup", "setConf", "draw", "diagram", "sequenceDiagram_default", "SequenceDB", "sequenceRenderer_default", "styles_default", "__name", "cnf", "setConfig"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-7D4R322I.mjs b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-7D4R322I.mjs new file mode 100644 index 0000000..14f7642 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-7D4R322I.mjs @@ -0,0 +1 @@ +import{a as X,c as N,d as J}from"./chunk-LCXTWHL2.mjs";import{a as O}from"./chunk-KRXBNO2N.mjs";import{D as F}from"./chunk-W44A43WB.mjs";import"./chunk-6764PJDD.mjs";import"./chunk-ZXARS5L4.mjs";import"./chunk-VU6ZFW4Y.mjs";import"./chunk-7J6CGLKN.mjs";import"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-5VCL7Z4A.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import{p as C}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{B as P,G as z,O as R,_ as t}from"./chunk-67TQ5CYL.mjs";import{H as W,L as U,b,h as L}from"./chunk-7W6UQGC5.mjs";import{a as f}from"./chunk-AQ6EADP3.mjs";var j=f(e=>e.append("circle").attr("class","start-state").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit).attr("cy",t().state.padding+t().state.sizeUnit),"drawStartState"),q=f(e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",t().state.textHeight).attr("class","divider").attr("x2",t().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),Z=f((e,n)=>{let s=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+2*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(n.id),c=s.node().getBBox();return e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",c.width+2*t().state.padding).attr("height",c.height+2*t().state.padding).attr("rx",t().state.radius),s},"drawSimpleState"),K=f((e,n)=>{let s=f(function(d,w,y){let E=d.append("tspan").attr("x",2*t().state.padding).text(w);y||E.attr("dy",t().state.textHeight)},"addTspan"),r=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+1.3*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(n.descriptions[0]).node().getBBox(),g=r.height,h=e.append("text").attr("x",t().state.padding).attr("y",g+t().state.padding*.4+t().state.dividerMargin+t().state.textHeight).attr("class","state-description"),i=!0,o=!0;n.descriptions.forEach(function(d){i||(s(h,d,o),o=!1),i=!1});let m=e.append("line").attr("x1",t().state.padding).attr("y1",t().state.padding+g+t().state.dividerMargin/2).attr("y2",t().state.padding+g+t().state.dividerMargin/2).attr("class","descr-divider"),x=h.node().getBBox(),p=Math.max(x.width,r.width);return m.attr("x2",p+3*t().state.padding),e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",p+2*t().state.padding).attr("height",x.height+g+2*t().state.padding).attr("rx",t().state.radius),e},"drawDescrState"),v=f((e,n,s)=>{let c=t().state.padding,r=2*t().state.padding,g=e.node().getBBox(),h=g.width,i=g.x,o=e.append("text").attr("x",0).attr("y",t().state.titleShift).attr("font-size",t().state.fontSize).attr("class","state-title").text(n.id),x=o.node().getBBox().width+r,p=Math.max(x,h);p===h&&(p=p+r);let d,w=e.node().getBBox();n.doc,d=i-c,x>h&&(d=(h-p)/2+c),Math.abs(i-w.x)h&&(d=i-(x-h)/2);let y=1-t().state.textHeight;return e.insert("rect",":first-child").attr("x",d).attr("y",y).attr("class",s?"alt-composit":"composit").attr("width",p).attr("height",w.height+t().state.textHeight+t().state.titleShift+1).attr("rx","0"),o.attr("x",d+c),x<=h&&o.attr("x",i+(p-r)/2-x/2+c),e.insert("rect",":first-child").attr("x",d).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",p).attr("height",t().state.textHeight*3).attr("rx",t().state.radius),e.insert("rect",":first-child").attr("x",d).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",p).attr("height",w.height+3+2*t().state.textHeight).attr("rx",t().state.radius),e},"addTitleAndBox"),Q=f(e=>(e.append("circle").attr("class","end-state-outer").attr("r",t().state.sizeUnit+t().state.miniPadding).attr("cx",t().state.padding+t().state.sizeUnit+t().state.miniPadding).attr("cy",t().state.padding+t().state.sizeUnit+t().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit+2).attr("cy",t().state.padding+t().state.sizeUnit+2)),"drawEndState"),V=f((e,n)=>{let s=t().state.forkWidth,c=t().state.forkHeight;if(n.parentId){let r=s;s=c,c=r}return e.append("rect").style("stroke","black").style("fill","black").attr("width",s).attr("height",c).attr("x",t().state.padding).attr("y",t().state.padding)},"drawForkJoinState");var D=f((e,n,s,c)=>{let r=0,g=c.append("text");g.style("text-anchor","start"),g.attr("class","noteText");let h=e.replace(/\r\n/g,"
    ");h=h.replace(/\n/g,"
    ");let i=h.split(z.lineBreakRegex),o=1.25*t().state.noteMargin;for(let m of i){let x=m.trim();if(x.length>0){let p=g.append("tspan");if(p.text(x),o===0){let d=p.node().getBBox();o+=d.height}r+=o,p.attr("x",n+t().state.noteMargin),p.attr("y",s+r+1.25*t().state.noteMargin)}}return{textWidth:g.node().getBBox().width,textHeight:r}},"_drawLongText"),tt=f((e,n)=>{n.attr("class","state-note");let s=n.append("rect").attr("x",0).attr("y",t().state.padding),c=n.append("g"),{textWidth:r,textHeight:g}=D(e,0,0,c);return s.attr("height",g+2*t().state.noteMargin),s.attr("width",r+t().state.noteMargin*2),s},"drawNote"),A=f(function(e,n){let s=n.id,c={id:s,label:n.id,width:0,height:0},r=e.append("g").attr("id",s).attr("class","stateGroup");n.type==="start"&&j(r),n.type==="end"&&Q(r),(n.type==="fork"||n.type==="join")&&V(r,n),n.type==="note"&&tt(n.note.text,r),n.type==="divider"&&q(r),n.type==="default"&&n.descriptions.length===0&&Z(r,n),n.type==="default"&&n.descriptions.length>0&&K(r,n);let g=r.node().getBBox();return c.width=g.width+2*t().state.padding,c.height=g.height+2*t().state.padding,c},"drawState"),Y=0,I=f(function(e,n,s){let c=f(function(o){switch(o){case N.relationType.AGGREGATION:return"aggregation";case N.relationType.EXTENSION:return"extension";case N.relationType.COMPOSITION:return"composition";case N.relationType.DEPENDENCY:return"dependency"}},"getRelationType");n.points=n.points.filter(o=>!Number.isNaN(o.y));let r=n.points,g=W().x(function(o){return o.x}).y(function(o){return o.y}).curve(U),h=e.append("path").attr("d",g(r)).attr("id","edge"+Y).attr("class","transition"),i="";if(t().state.arrowMarkerAbsolute&&(i=P(!0)),h.attr("marker-end","url("+i+"#"+c(N.relationType.DEPENDENCY)+"End)"),s.title!==void 0){let o=e.append("g").attr("class","stateLabel"),{x:m,y:x}=C.calcLabelPosition(n.points),p=z.getRows(s.title),d=0,w=[],y=0,E=0;for(let a=0;a<=p.length;a++){let u=o.append("text").attr("text-anchor","middle").text(p[a]).attr("x",m).attr("y",x+d),l=u.node().getBBox();y=Math.max(y,l.width),E=Math.min(E,l.x),b.info(l.x,m,x+d),d===0&&(d=u.node().getBBox().height,b.info("Title height",d,x)),w.push(u)}let M=d*p.length;if(p.length>1){let a=(p.length-1)*d*.5;w.forEach((u,l)=>u.attr("y",x+l*d-a)),M=d*p.length}let H=o.node().getBBox();o.insert("rect",":first-child").attr("class","box").attr("x",m-y/2-t().state.padding/2).attr("y",x-M/2-t().state.padding/2-3.5).attr("width",y+t().state.padding).attr("height",M+t().state.padding),b.info(H)}Y++},"drawEdge");var S,G={},et=f(function(){},"setConf"),it=f(function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),nt=f(function(e,n,s,c){S=t().state;let r=t().securityLevel,g;r==="sandbox"&&(g=L("#i"+n));let h=r==="sandbox"?L(g.nodes()[0].contentDocument.body):L("body"),i=r==="sandbox"?g.nodes()[0].contentDocument:document;b.debug("Rendering diagram "+e);let o=h.select(`[id='${n}']`);it(o);let m=c.db.getRootDoc(),x=o.append("g").attr("id",n+"-root");$(m,x,void 0,!1,h,i,c);let p=S.padding,d=o.node().getBBox(),w=d.width+p*2,y=d.height+p*2,E=w*1.75;R(o,y,E,S.useMaxWidth),o.attr("viewBox",`${d.x-S.padding} ${d.y-S.padding} `+w+" "+y)},"draw"),at=f(e=>e?e.length*S.fontSizeFactor:1,"getLabelWidth"),$=f((e,n,s,c,r,g,h)=>{let i=new F({compound:!0,multigraph:!0}),o,m=!0;for(o=0;o{let B=l.parentElement,k=0,T=0;B&&(B.parentElement&&(k=B.parentElement.getBBox().width),T=parseInt(B.getAttribute("data-x-shift"),10),Number.isNaN(T)&&(T=0)),l.setAttribute("x1",0-T+8),l.setAttribute("x2",k-T-8)})):b.debug("No Node "+a+": "+JSON.stringify(i.node(a)))});let M=E.getBBox();i.edges().forEach(function(a){a!==void 0&&i.edge(a)!==void 0&&(b.debug("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(i.edge(a))),I(n,i.edge(a),i.edge(a).relation))}),M=E.getBBox();let H={id:s||"root",label:s||"root",width:0,height:0};return H.width=M.width+2*S.padding,H.height=M.height+2*S.padding,b.debug("Doc rendered",H,i),H},"renderDoc"),_={setConf:et,draw:nt};var Ht={parser:X,get db(){return new N(1)},renderer:_,styles:J,init:f(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{Ht as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-UFOXNHOX.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-7D4R322I.mjs.map similarity index 69% rename from assets/mermaid/chunks/mermaid.esm.min/stateDiagram-UFOXNHOX.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/stateDiagram-7D4R322I.mjs.map index 7ffbde7..42264f8 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-UFOXNHOX.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-7D4R322I.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/state/shapes.js", "../../../src/diagrams/state/stateRenderer.js", "../../../src/diagrams/state/stateDiagram.ts"], - "sourcesContent": ["import { line, curveBasis } from 'd3';\nimport { StateDB } from './stateDb.js';\nimport utils from '../../utils.js';\nimport common, { getUrl } from '../common/common.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\n\n/**\n * Draws a start state as a black circle\n *\n * @param {any} g\n */\nexport const drawStartState = (g) =>\n g\n .append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'start-state')\n .attr('r', getConfig().state.sizeUnit)\n .attr('cx', getConfig().state.padding + getConfig().state.sizeUnit)\n .attr('cy', getConfig().state.padding + getConfig().state.sizeUnit);\n\n/**\n * Draws a start state as a black circle\n *\n * @param {any} g\n */\nexport const drawDivider = (g) =>\n g\n .append('line')\n .style('stroke', 'grey')\n .style('stroke-dasharray', '3')\n .attr('x1', getConfig().state.textHeight)\n .attr('class', 'divider')\n .attr('x2', getConfig().state.textHeight * 2)\n .attr('y1', 0)\n .attr('y2', 0);\n\n/**\n * Draws an end state as a black circle\n *\n * @param {any} g\n * @param {any} stateDef\n */\nexport const drawSimpleState = (g, stateDef) => {\n const state = g\n .append('text')\n .attr('x', 2 * getConfig().state.padding)\n .attr('y', getConfig().state.textHeight + 2 * getConfig().state.padding)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.id);\n\n const classBox = state.node().getBBox();\n g.insert('rect', ':first-child')\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding)\n .attr('width', classBox.width + 2 * getConfig().state.padding)\n .attr('height', classBox.height + 2 * getConfig().state.padding)\n .attr('rx', getConfig().state.radius);\n\n return state;\n};\n\n/**\n * Draws a state with descriptions\n *\n * @param {any} g The d3 svg object to add the state to\n * @param {any} stateDef\n * @returns {any} The d3 svg state\n */\nexport const drawDescrState = (g, stateDef) => {\n const addTspan = function (textEl, txt, isFirst) {\n const tSpan = textEl\n .append('tspan')\n .attr('x', 2 * getConfig().state.padding)\n .text(txt);\n if (!isFirst) {\n tSpan.attr('dy', getConfig().state.textHeight);\n }\n };\n const title = g\n .append('text')\n .attr('x', 2 * getConfig().state.padding)\n .attr('y', getConfig().state.textHeight + 1.3 * getConfig().state.padding)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.descriptions[0]);\n\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n\n const description = g\n .append('text') // text label for the x axis\n .attr('x', getConfig().state.padding)\n .attr(\n 'y',\n titleHeight +\n getConfig().state.padding * 0.4 +\n getConfig().state.dividerMargin +\n getConfig().state.textHeight\n )\n .attr('class', 'state-description');\n\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function (descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n\n const descrLine = g\n .append('line') // text label for the x axis\n .attr('x1', getConfig().state.padding)\n .attr('y1', getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2)\n .attr('y2', getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2)\n .attr('class', 'descr-divider');\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n\n descrLine.attr('x2', width + 3 * getConfig().state.padding);\n // const classBox = title.node().getBBox();\n\n g.insert('rect', ':first-child')\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding)\n .attr('width', width + 2 * getConfig().state.padding)\n .attr('height', descrBox.height + titleHeight + 2 * getConfig().state.padding)\n .attr('rx', getConfig().state.radius);\n\n return g;\n};\n\n/** Adds the creates a box around the existing content and adds a panel for the id on top of the content. */\n/**\n * Function that creates a title row and a frame around a substate for a composite state diagram.\n * The function returns a new d3 svg object with updated width and height properties;\n *\n * @param {any} g The d3 svg object for the substate to framed\n * @param {any} stateDef The info about the\n * @param {any} altBkg\n */\nexport const addTitleAndBox = (g, stateDef, altBkg) => {\n const pad = getConfig().state.padding;\n const dblPad = 2 * getConfig().state.padding;\n const orgBox = g.node().getBBox();\n const orgWidth = orgBox.width;\n const orgX = orgBox.x;\n\n const title = g\n .append('text')\n .attr('x', 0)\n .attr('y', getConfig().state.titleShift)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.id);\n\n const titleBox = title.node().getBBox();\n const titleWidth = titleBox.width + dblPad;\n let width = Math.max(titleWidth, orgWidth); // + dblPad;\n if (width === orgWidth) {\n width = width + dblPad;\n }\n let startX;\n // const lineY = 1 - getConfig().state.textHeight;\n // const descrLine = g\n // .append('line') // text label for the x axis\n // .attr('x1', 0)\n // .attr('y1', lineY)\n // .attr('y2', lineY)\n // .attr('class', 'descr-divider');\n\n const graphBox = g.node().getBBox();\n // descrLine.attr('x2', graphBox.width + getConfig().state.padding);\n\n if (stateDef.doc) {\n // console.warn(\n // stateDef.id,\n // 'orgX: ',\n // orgX,\n // 'width: ',\n // width,\n // 'titleWidth: ',\n // titleWidth,\n // 'orgWidth: ',\n // orgWidth,\n // 'width',\n // width\n // );\n }\n\n startX = orgX - pad;\n if (titleWidth > orgWidth) {\n startX = (orgWidth - width) / 2 + pad;\n }\n if (Math.abs(orgX - graphBox.x) < pad && titleWidth > orgWidth) {\n startX = orgX - (titleWidth - orgWidth) / 2;\n }\n\n const lineY = 1 - getConfig().state.textHeight;\n // White color\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr('y', lineY)\n .attr('class', altBkg ? 'alt-composit' : 'composit') // cspell:disable-line\n .attr('width', width)\n .attr(\n 'height',\n graphBox.height + getConfig().state.textHeight + getConfig().state.titleShift + 1\n )\n .attr('rx', '0');\n\n title.attr('x', startX + pad);\n if (titleWidth <= orgWidth) {\n title.attr('x', orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);\n }\n\n // Title background\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr(\n 'y',\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n )\n .attr('width', width)\n // Just needs to be higher then the descr line, will be clipped by the white color box\n .attr('height', getConfig().state.textHeight * 3)\n .attr('rx', getConfig().state.radius);\n\n // Full background\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr(\n 'y',\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n )\n .attr('width', width)\n .attr('height', graphBox.height + 3 + 2 * getConfig().state.textHeight)\n .attr('rx', getConfig().state.radius);\n\n return g;\n};\n\nconst drawEndState = (g) => {\n g.append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'white')\n .attr('class', 'end-state-outer')\n .attr('r', getConfig().state.sizeUnit + getConfig().state.miniPadding)\n .attr(\n 'cx',\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n )\n .attr(\n 'cy',\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n );\n\n return (\n g\n .append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'end-state-inner')\n .attr('r', getConfig().state.sizeUnit)\n .attr('cx', getConfig().state.padding + getConfig().state.sizeUnit + 2)\n .attr('cy', getConfig().state.padding + getConfig().state.sizeUnit + 2)\n );\n};\nconst drawForkJoinState = (g, stateDef) => {\n let width = getConfig().state.forkWidth;\n let height = getConfig().state.forkHeight;\n\n if (stateDef.parentId) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n return g\n .append('rect')\n .style('stroke', 'black')\n .style('fill', 'black')\n .attr('width', width)\n .attr('height', height)\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding);\n};\n\nexport const drawText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.attr('fill', textData.fill);\n if (textData.class !== undefined) {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nconst _drawLongText = (_text, x, y, g) => {\n let textHeight = 0;\n\n const textElem = g.append('text');\n textElem.style('text-anchor', 'start');\n textElem.attr('class', 'noteText');\n\n let text = _text.replace(/\\r\\n/g, '
    ');\n text = text.replace(/\\n/g, '
    ');\n const lines = text.split(common.lineBreakRegex);\n\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line of lines) {\n const txt = line.trim();\n\n if (txt.length > 0) {\n const span = textElem.append('tspan');\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n textHeight += tHeight;\n span.attr('x', x + getConfig().state.noteMargin);\n span.attr('y', y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\n\n/**\n * Draws a note to the diagram\n *\n * @param text - The text of the given note.\n * @param g - The element the note is attached to.\n */\n\nexport const drawNote = (text, g) => {\n g.attr('class', 'state-note');\n const note = g.append('rect').attr('x', 0).attr('y', getConfig().state.padding);\n const rectElem = g.append('g');\n\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr('height', textHeight + 2 * getConfig().state.noteMargin);\n note.attr('width', textWidth + getConfig().state.noteMargin * 2);\n\n return note;\n};\n\n/**\n * Starting point for drawing a state. The function finds out the specifics about the state and\n * renders with appropriate function.\n *\n * @param {any} elem\n * @param {any} stateDef\n */\n\nexport const drawState = function (elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0,\n };\n\n const g = elem.append('g').attr('id', id).attr('class', 'stateGroup');\n\n if (stateDef.type === 'start') {\n drawStartState(g);\n }\n if (stateDef.type === 'end') {\n drawEndState(g);\n }\n if (stateDef.type === 'fork' || stateDef.type === 'join') {\n drawForkJoinState(g, stateDef);\n }\n if (stateDef.type === 'note') {\n drawNote(stateDef.note.text, g);\n }\n if (stateDef.type === 'divider') {\n drawDivider(g);\n }\n if (stateDef.type === 'default' && stateDef.descriptions.length === 0) {\n drawSimpleState(g, stateDef);\n }\n if (stateDef.type === 'default' && stateDef.descriptions.length > 0) {\n drawDescrState(g, stateDef);\n }\n\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n\n return stateInfo;\n};\n\nlet edgeCount = 0;\nexport const drawEdge = function (elem, path, relation) {\n const getRelationType = function (type) {\n switch (type) {\n case StateDB.relationType.AGGREGATION:\n return 'aggregation';\n case StateDB.relationType.EXTENSION:\n return 'extension';\n case StateDB.relationType.COMPOSITION:\n return 'composition';\n case StateDB.relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'transition');\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(StateDB.relationType.DEPENDENCY) + 'End' + ')'\n );\n\n if (relation.title !== undefined) {\n const label = elem.append('g').attr('class', 'stateLabel');\n\n const { x, y } = utils.calcLabelPosition(path.points);\n\n const rows = common.getRows(relation.title);\n\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n\n for (let i = 0; i <= rows.length; i++) {\n const title = label\n .append('text')\n .attr('text-anchor', 'middle')\n .text(rows[i])\n .attr('x', x)\n .attr('y', y + titleHeight);\n\n const boundsTmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundsTmp.width);\n minX = Math.min(minX, boundsTmp.x);\n\n log.info(boundsTmp.x, x, y + titleHeight);\n\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n log.info('Title height', titleHeight, y);\n }\n titleRows.push(title);\n }\n\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n\n titleRows.forEach((title, i) => title.attr('y', y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n\n const bounds = label.node().getBBox();\n\n label\n .insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', x - maxWidth / 2 - getConfig().state.padding / 2)\n .attr('y', y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5)\n .attr('width', maxWidth + getConfig().state.padding)\n .attr('height', boxHeight + getConfig().state.padding);\n\n log.info(bounds);\n\n //label.attr('transform', '0 -' + (bounds.y / 2));\n\n // Debug points\n // path.points.forEach(point => {\n // g.append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // g.append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 1)\n // .attr('cx', x)\n // .attr('cy', y);\n }\n\n edgeCount++;\n};\n", "import { select } from 'd3';\nimport { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { log } from '../../logger.js';\nimport common from '../common/common.js';\nimport { drawState, addTitleAndBox, drawEdge } from './shapes.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\n\n// TODO Move conf object to main conf in mermaidAPI\nlet conf;\n\nconst transformationLog = {};\n\nexport const setConf = function () {\n //no-op\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {any} text\n * @param {any} id\n * @param _version\n * @param diagObj\n */\nexport const draw = function (text, id, _version, diagObj) {\n conf = getConfig().state;\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n log.debug('Rendering diagram ' + text);\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.select(`[id='${id}']`);\n insertMarkers(diagram);\n\n const rootDoc = diagObj.db.getRootDoc();\n renderDoc(rootDoc, diagram, undefined, false, root, doc, diagObj);\n\n const padding = conf.padding;\n const bounds = diagram.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n // zoom in a bit\n const svgWidth = width * 1.75;\n configureSvgSize(diagram, height, svgWidth, conf.useMaxWidth);\n\n diagram.attr(\n 'viewBox',\n `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n );\n};\nconst getLabelWidth = (text) => {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\n\nconst renderDoc = (doc, diagram, parentId, altBkg, root, domDocument, diagObj) => {\n // Layout graph, Create a new directed graph\n const graph = new graphlib.Graph({\n compound: true,\n multigraph: true,\n });\n\n let i;\n let edgeFreeDoc = true;\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === 'relation') {\n edgeFreeDoc = false;\n break;\n }\n }\n\n // Set an object for the graph label\n if (parentId) {\n graph.setGraph({\n rankdir: 'LR',\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: 'tight-tree',\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true,\n // ranksep: 5,\n // nodesep: 1\n });\n } else {\n graph.setGraph({\n rankdir: 'TB',\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: 'tight-tree',\n // ranker: 'network-simplex'\n isMultiGraph: true,\n });\n }\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const states = diagObj.db.getStates();\n const relations = diagObj.db.getRelations();\n\n const keys = Object.keys(states);\n\n let first = true;\n\n for (const key of keys) {\n const stateDef = states[key];\n\n if (parentId) {\n stateDef.parentId = parentId;\n }\n\n let node;\n if (stateDef.doc) {\n let sub = diagram.append('g').attr('id', stateDef.id).attr('class', 'stateGroup');\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument, diagObj);\n\n if (first) {\n // first = false;\n sub = addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n } else {\n // sub = addIdAndBox(sub, stateDef);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height;\n // transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = drawState(diagram, stateDef, graph);\n }\n\n if (stateDef.note) {\n // Draw note note\n const noteDef = {\n descriptions: [],\n id: stateDef.id + '-note',\n note: stateDef.note,\n type: 'note',\n };\n const note = drawState(diagram, noteDef, graph);\n\n // graph.setNode(node.id, node);\n if (stateDef.note.position === 'left of') {\n graph.setNode(node.id + '-note', note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + '-note', note);\n }\n // graph.setNode(node.id);\n graph.setParent(node.id, node.id + '-group');\n graph.setParent(node.id + '-note', node.id + '-group');\n } else {\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n graph.setNode(node.id, node);\n }\n }\n\n log.debug('Count=', graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function (relation) {\n cnt++;\n log.debug('Setting edge', relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n relation: relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * common.getRows(relation.title).length,\n labelpos: 'c',\n },\n 'id' + cnt\n );\n });\n\n dagreLayout(graph);\n\n log.debug('Graph after layout', graph.nodes());\n const svgElem = diagram.node();\n\n graph.nodes().forEach(function (v) {\n if (v !== undefined && graph.node(v) !== undefined) {\n log.warn('Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n root\n .select('#' + svgElem.id + ' #' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y +\n (transformationLog[v] ? transformationLog[v].y : 0) -\n graph.node(v).height / 2) +\n ' )'\n );\n root\n .select('#' + svgElem.id + ' #' + v)\n .attr('data-x-shift', graph.node(v).x - graph.node(v).width / 2);\n const dividers = domDocument.querySelectorAll('#' + svgElem.id + ' #' + v + ' .divider');\n dividers.forEach((divider) => {\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) {\n pWidth = parent.parentElement.getBBox().width;\n }\n pShift = parseInt(parent.getAttribute('data-x-shift'), 10);\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n divider.setAttribute('x1', 0 - pShift + 8);\n divider.setAttribute('x2', pWidth - pShift - 8);\n });\n } else {\n log.debug('No Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n }\n });\n\n let stateBox = svgElem.getBBox();\n\n graph.edges().forEach(function (e) {\n if (e !== undefined && graph.edge(e) !== undefined) {\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n drawEdge(diagram, graph.edge(e), graph.edge(e).relation);\n }\n });\n\n stateBox = svgElem.getBBox();\n\n const stateInfo = {\n id: parentId ? parentId : 'root',\n label: parentId ? parentId : 'root',\n width: 0,\n height: 0,\n };\n\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n\n log.debug('Doc rendered', stateInfo, graph);\n return stateInfo;\n};\n\nexport default {\n setConf,\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/stateDiagram.jison';\nimport { StateDB } from './stateDb.js';\nimport styles from './styles.js';\nimport renderer from './stateRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new StateDB(1);\n },\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n },\n};\n"], - "mappings": "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", - "names": ["drawStartState", "__name", "g", "getConfig", "drawDivider", "drawSimpleState", "stateDef", "state", "classBox", "drawDescrState", "addTspan", "textEl", "txt", "isFirst", "tSpan", "titleBox", "titleHeight", "description", "isSecond", "descr", "descrLine", "descrBox", "width", "addTitleAndBox", "altBkg", "pad", "dblPad", "orgBox", "orgWidth", "orgX", "title", "titleWidth", "startX", "graphBox", "lineY", "drawEndState", "drawForkJoinState", "height", "tmp", "_drawLongText", "__name", "_text", "x", "y", "g", "textHeight", "textElem", "text", "lines", "common_default", "tHeight", "getConfig", "line", "txt", "span", "textBounds", "drawNote", "note", "rectElem", "textWidth", "drawState", "elem", "stateDef", "id", "stateInfo", "drawStartState", "drawEndState", "drawForkJoinState", "drawDivider", "drawSimpleState", "drawDescrState", "stateBox", "edgeCount", "drawEdge", "path", "relation", "getRelationType", "type", "StateDB", "p", "lineData", "lineFunction", "line_default", "d", "basis_default", "svgPath", "url", "getUrl", "label", "utils_default", "rows", "titleHeight", "titleRows", "maxWidth", "minX", "i", "title", "boundsTmp", "log", "boxHeight", "heightAdj", "bounds", "conf", "transformationLog", "setConf", "__name", "insertMarkers", "elem", "draw", "text", "id", "_version", "diagObj", "getConfig", "securityLevel", "sandboxElement", "select_default", "root", "doc", "log", "diagram", "rootDoc", "renderDoc", "padding", "bounds", "width", "height", "svgWidth", "configureSvgSize", "getLabelWidth", "parentId", "altBkg", "domDocument", "graph", "Graph", "i", "edgeFreeDoc", "states", "relations", "keys", "first", "key", "stateDef", "node", "sub", "addTitleAndBox", "boxBounds", "drawState", "noteDef", "note", "cnt", "relation", "common_default", "layout", "svgElem", "v", "divider", "parent", "pWidth", "pShift", "stateBox", "e", "drawEdge", "stateInfo", "stateRenderer_default", "diagram", "stateDiagram_default", "StateDB", "stateRenderer_default", "styles_default", "__name", "cnf"] + "sourcesContent": ["import { line, curveBasis } from 'd3';\nimport { StateDB } from './stateDb.js';\nimport utils from '../../utils.js';\nimport common, { getUrl } from '../common/common.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { log } from '../../logger.js';\n\n/**\n * Draws a start state as a black circle\n *\n * @param {any} g\n */\nexport const drawStartState = (g) =>\n g\n .append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'start-state')\n .attr('r', getConfig().state.sizeUnit)\n .attr('cx', getConfig().state.padding + getConfig().state.sizeUnit)\n .attr('cy', getConfig().state.padding + getConfig().state.sizeUnit);\n\n/**\n * Draws a start state as a black circle\n *\n * @param {any} g\n */\nexport const drawDivider = (g) =>\n g\n .append('line')\n .style('stroke', 'grey')\n .style('stroke-dasharray', '3')\n .attr('x1', getConfig().state.textHeight)\n .attr('class', 'divider')\n .attr('x2', getConfig().state.textHeight * 2)\n .attr('y1', 0)\n .attr('y2', 0);\n\n/**\n * Draws an end state as a black circle\n *\n * @param {any} g\n * @param {any} stateDef\n */\nexport const drawSimpleState = (g, stateDef) => {\n const state = g\n .append('text')\n .attr('x', 2 * getConfig().state.padding)\n .attr('y', getConfig().state.textHeight + 2 * getConfig().state.padding)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.id);\n\n const classBox = state.node().getBBox();\n g.insert('rect', ':first-child')\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding)\n .attr('width', classBox.width + 2 * getConfig().state.padding)\n .attr('height', classBox.height + 2 * getConfig().state.padding)\n .attr('rx', getConfig().state.radius);\n\n return state;\n};\n\n/**\n * Draws a state with descriptions\n *\n * @param {any} g The d3 svg object to add the state to\n * @param {any} stateDef\n * @returns {any} The d3 svg state\n */\nexport const drawDescrState = (g, stateDef) => {\n const addTspan = function (textEl, txt, isFirst) {\n const tSpan = textEl\n .append('tspan')\n .attr('x', 2 * getConfig().state.padding)\n .text(txt);\n if (!isFirst) {\n tSpan.attr('dy', getConfig().state.textHeight);\n }\n };\n const title = g\n .append('text')\n .attr('x', 2 * getConfig().state.padding)\n .attr('y', getConfig().state.textHeight + 1.3 * getConfig().state.padding)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.descriptions[0]);\n\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n\n const description = g\n .append('text') // text label for the x axis\n .attr('x', getConfig().state.padding)\n .attr(\n 'y',\n titleHeight +\n getConfig().state.padding * 0.4 +\n getConfig().state.dividerMargin +\n getConfig().state.textHeight\n )\n .attr('class', 'state-description');\n\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function (descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n\n const descrLine = g\n .append('line') // text label for the x axis\n .attr('x1', getConfig().state.padding)\n .attr('y1', getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2)\n .attr('y2', getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2)\n .attr('class', 'descr-divider');\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n\n descrLine.attr('x2', width + 3 * getConfig().state.padding);\n // const classBox = title.node().getBBox();\n\n g.insert('rect', ':first-child')\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding)\n .attr('width', width + 2 * getConfig().state.padding)\n .attr('height', descrBox.height + titleHeight + 2 * getConfig().state.padding)\n .attr('rx', getConfig().state.radius);\n\n return g;\n};\n\n/** Adds the creates a box around the existing content and adds a panel for the id on top of the content. */\n/**\n * Function that creates a title row and a frame around a substate for a composite state diagram.\n * The function returns a new d3 svg object with updated width and height properties;\n *\n * @param {any} g The d3 svg object for the substate to framed\n * @param {any} stateDef The info about the\n * @param {any} altBkg\n */\nexport const addTitleAndBox = (g, stateDef, altBkg) => {\n const pad = getConfig().state.padding;\n const dblPad = 2 * getConfig().state.padding;\n const orgBox = g.node().getBBox();\n const orgWidth = orgBox.width;\n const orgX = orgBox.x;\n\n const title = g\n .append('text')\n .attr('x', 0)\n .attr('y', getConfig().state.titleShift)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.id);\n\n const titleBox = title.node().getBBox();\n const titleWidth = titleBox.width + dblPad;\n let width = Math.max(titleWidth, orgWidth); // + dblPad;\n if (width === orgWidth) {\n width = width + dblPad;\n }\n let startX;\n // const lineY = 1 - getConfig().state.textHeight;\n // const descrLine = g\n // .append('line') // text label for the x axis\n // .attr('x1', 0)\n // .attr('y1', lineY)\n // .attr('y2', lineY)\n // .attr('class', 'descr-divider');\n\n const graphBox = g.node().getBBox();\n // descrLine.attr('x2', graphBox.width + getConfig().state.padding);\n\n if (stateDef.doc) {\n // console.warn(\n // stateDef.id,\n // 'orgX: ',\n // orgX,\n // 'width: ',\n // width,\n // 'titleWidth: ',\n // titleWidth,\n // 'orgWidth: ',\n // orgWidth,\n // 'width',\n // width\n // );\n }\n\n startX = orgX - pad;\n if (titleWidth > orgWidth) {\n startX = (orgWidth - width) / 2 + pad;\n }\n if (Math.abs(orgX - graphBox.x) < pad && titleWidth > orgWidth) {\n startX = orgX - (titleWidth - orgWidth) / 2;\n }\n\n const lineY = 1 - getConfig().state.textHeight;\n // White color\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr('y', lineY)\n .attr('class', altBkg ? 'alt-composit' : 'composit') // cspell:disable-line\n .attr('width', width)\n .attr(\n 'height',\n graphBox.height + getConfig().state.textHeight + getConfig().state.titleShift + 1\n )\n .attr('rx', '0');\n\n title.attr('x', startX + pad);\n if (titleWidth <= orgWidth) {\n title.attr('x', orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);\n }\n\n // Title background\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr(\n 'y',\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n )\n .attr('width', width)\n // Just needs to be higher then the descr line, will be clipped by the white color box\n .attr('height', getConfig().state.textHeight * 3)\n .attr('rx', getConfig().state.radius);\n\n // Full background\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr(\n 'y',\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n )\n .attr('width', width)\n .attr('height', graphBox.height + 3 + 2 * getConfig().state.textHeight)\n .attr('rx', getConfig().state.radius);\n\n return g;\n};\n\nconst drawEndState = (g) => {\n g.append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'white')\n .attr('class', 'end-state-outer')\n .attr('r', getConfig().state.sizeUnit + getConfig().state.miniPadding)\n .attr(\n 'cx',\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n )\n .attr(\n 'cy',\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n );\n\n return (\n g\n .append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'end-state-inner')\n .attr('r', getConfig().state.sizeUnit)\n .attr('cx', getConfig().state.padding + getConfig().state.sizeUnit + 2)\n .attr('cy', getConfig().state.padding + getConfig().state.sizeUnit + 2)\n );\n};\nconst drawForkJoinState = (g, stateDef) => {\n let width = getConfig().state.forkWidth;\n let height = getConfig().state.forkHeight;\n\n if (stateDef.parentId) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n return g\n .append('rect')\n .style('stroke', 'black')\n .style('fill', 'black')\n .attr('width', width)\n .attr('height', height)\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding);\n};\n\nexport const drawText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.attr('fill', textData.fill);\n if (textData.class !== undefined) {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nconst _drawLongText = (_text, x, y, g) => {\n let textHeight = 0;\n\n const textElem = g.append('text');\n textElem.style('text-anchor', 'start');\n textElem.attr('class', 'noteText');\n\n let text = _text.replace(/\\r\\n/g, '
    ');\n text = text.replace(/\\n/g, '
    ');\n const lines = text.split(common.lineBreakRegex);\n\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line of lines) {\n const txt = line.trim();\n\n if (txt.length > 0) {\n const span = textElem.append('tspan');\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n textHeight += tHeight;\n span.attr('x', x + getConfig().state.noteMargin);\n span.attr('y', y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\n\n/**\n * Draws a note to the diagram\n *\n * @param text - The text of the given note.\n * @param g - The element the note is attached to.\n */\n\nexport const drawNote = (text, g) => {\n g.attr('class', 'state-note');\n const note = g.append('rect').attr('x', 0).attr('y', getConfig().state.padding);\n const rectElem = g.append('g');\n\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr('height', textHeight + 2 * getConfig().state.noteMargin);\n note.attr('width', textWidth + getConfig().state.noteMargin * 2);\n\n return note;\n};\n\n/**\n * Starting point for drawing a state. The function finds out the specifics about the state and\n * renders with appropriate function.\n *\n * @param {any} elem\n * @param {any} stateDef\n */\n\nexport const drawState = function (elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0,\n };\n\n const g = elem.append('g').attr('id', id).attr('class', 'stateGroup');\n\n if (stateDef.type === 'start') {\n drawStartState(g);\n }\n if (stateDef.type === 'end') {\n drawEndState(g);\n }\n if (stateDef.type === 'fork' || stateDef.type === 'join') {\n drawForkJoinState(g, stateDef);\n }\n if (stateDef.type === 'note') {\n drawNote(stateDef.note.text, g);\n }\n if (stateDef.type === 'divider') {\n drawDivider(g);\n }\n if (stateDef.type === 'default' && stateDef.descriptions.length === 0) {\n drawSimpleState(g, stateDef);\n }\n if (stateDef.type === 'default' && stateDef.descriptions.length > 0) {\n drawDescrState(g, stateDef);\n }\n\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n\n return stateInfo;\n};\n\nlet edgeCount = 0;\nexport const drawEdge = function (elem, path, relation) {\n const getRelationType = function (type) {\n switch (type) {\n case StateDB.relationType.AGGREGATION:\n return 'aggregation';\n case StateDB.relationType.EXTENSION:\n return 'extension';\n case StateDB.relationType.COMPOSITION:\n return 'composition';\n case StateDB.relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'transition');\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(StateDB.relationType.DEPENDENCY) + 'End' + ')'\n );\n\n if (relation.title !== undefined) {\n const label = elem.append('g').attr('class', 'stateLabel');\n\n const { x, y } = utils.calcLabelPosition(path.points);\n\n const rows = common.getRows(relation.title);\n\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n\n for (let i = 0; i <= rows.length; i++) {\n const title = label\n .append('text')\n .attr('text-anchor', 'middle')\n .text(rows[i])\n .attr('x', x)\n .attr('y', y + titleHeight);\n\n const boundsTmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundsTmp.width);\n minX = Math.min(minX, boundsTmp.x);\n\n log.info(boundsTmp.x, x, y + titleHeight);\n\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n log.info('Title height', titleHeight, y);\n }\n titleRows.push(title);\n }\n\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n\n titleRows.forEach((title, i) => title.attr('y', y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n\n const bounds = label.node().getBBox();\n\n label\n .insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', x - maxWidth / 2 - getConfig().state.padding / 2)\n .attr('y', y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5)\n .attr('width', maxWidth + getConfig().state.padding)\n .attr('height', boxHeight + getConfig().state.padding);\n\n log.info(bounds);\n\n //label.attr('transform', '0 -' + (bounds.y / 2));\n\n // Debug points\n // path.points.forEach(point => {\n // g.append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // g.append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 1)\n // .attr('cx', x)\n // .attr('cy', y);\n }\n\n edgeCount++;\n};\n", "import { select } from 'd3';\nimport { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js';\nimport * as graphlib from 'dagre-d3-es/src/graphlib/index.js';\nimport { log } from '../../logger.js';\nimport common from '../common/common.js';\nimport { drawState, addTitleAndBox, drawEdge } from './shapes.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\n\n// TODO Move conf object to main conf in mermaidAPI\nlet conf;\n\nconst transformationLog = {};\n\nexport const setConf = function () {\n //no-op\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {any} text\n * @param {any} id\n * @param _version\n * @param diagObj\n */\nexport const draw = function (text, id, _version, diagObj) {\n conf = getConfig().state;\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n log.debug('Rendering diagram ' + text);\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.select(`[id='${id}']`);\n insertMarkers(diagram);\n\n const rootDoc = diagObj.db.getRootDoc();\n const rootG = diagram.append('g').attr('id', id + '-root');\n renderDoc(rootDoc, rootG, undefined, false, root, doc, diagObj);\n\n const padding = conf.padding;\n const bounds = diagram.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n // zoom in a bit\n const svgWidth = width * 1.75;\n configureSvgSize(diagram, height, svgWidth, conf.useMaxWidth);\n\n diagram.attr(\n 'viewBox',\n `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n );\n};\nconst getLabelWidth = (text) => {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\n\nconst renderDoc = (doc, diagram, parentId, altBkg, root, domDocument, diagObj) => {\n // Layout graph, Create a new directed graph\n const graph = new graphlib.Graph({\n compound: true,\n multigraph: true,\n });\n\n let i;\n let edgeFreeDoc = true;\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === 'relation') {\n edgeFreeDoc = false;\n break;\n }\n }\n\n // Set an object for the graph label\n if (parentId) {\n graph.setGraph({\n rankdir: 'LR',\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: 'tight-tree',\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true,\n // ranksep: 5,\n // nodesep: 1\n });\n } else {\n graph.setGraph({\n rankdir: 'TB',\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: 'tight-tree',\n // ranker: 'network-simplex'\n isMultiGraph: true,\n });\n }\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const states = diagObj.db.getStates();\n const relations = diagObj.db.getRelations();\n\n const keys = Object.keys(states);\n\n let first = true;\n\n for (const key of keys) {\n const stateDef = states[key];\n\n if (parentId) {\n stateDef.parentId = parentId;\n }\n\n let node;\n if (stateDef.doc) {\n let sub = diagram.append('g').attr('id', stateDef.id).attr('class', 'stateGroup');\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument, diagObj);\n\n if (first) {\n // first = false;\n sub = addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n } else {\n // sub = addIdAndBox(sub, stateDef);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height;\n // transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = drawState(diagram, stateDef, graph);\n }\n\n if (stateDef.note) {\n // Draw note note\n const noteDef = {\n descriptions: [],\n id: stateDef.id + '-note',\n note: stateDef.note,\n type: 'note',\n };\n const note = drawState(diagram, noteDef, graph);\n\n // graph.setNode(node.id, node);\n if (stateDef.note.position === 'left of') {\n graph.setNode(node.id + '-note', note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + '-note', note);\n }\n // graph.setNode(node.id);\n graph.setParent(node.id, node.id + '-group');\n graph.setParent(node.id + '-note', node.id + '-group');\n } else {\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n graph.setNode(node.id, node);\n }\n }\n\n log.debug('Count=', graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function (relation) {\n cnt++;\n log.debug('Setting edge', relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n relation: relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * common.getRows(relation.title).length,\n labelpos: 'c',\n },\n 'id' + cnt\n );\n });\n\n dagreLayout(graph);\n\n log.debug('Graph after layout', graph.nodes());\n const svgElem = diagram.node();\n\n graph.nodes().forEach(function (v) {\n if (v !== undefined && graph.node(v) !== undefined) {\n log.warn('Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n root\n .select('#' + svgElem.id + ' #' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y +\n (transformationLog[v] ? transformationLog[v].y : 0) -\n graph.node(v).height / 2) +\n ' )'\n );\n root\n .select('#' + svgElem.id + ' #' + v)\n .attr('data-x-shift', graph.node(v).x - graph.node(v).width / 2);\n const dividers = domDocument.querySelectorAll('#' + svgElem.id + ' #' + v + ' .divider');\n dividers.forEach((divider) => {\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) {\n pWidth = parent.parentElement.getBBox().width;\n }\n pShift = parseInt(parent.getAttribute('data-x-shift'), 10);\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n divider.setAttribute('x1', 0 - pShift + 8);\n divider.setAttribute('x2', pWidth - pShift - 8);\n });\n } else {\n log.debug('No Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n }\n });\n\n let stateBox = svgElem.getBBox();\n\n graph.edges().forEach(function (e) {\n if (e !== undefined && graph.edge(e) !== undefined) {\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n drawEdge(diagram, graph.edge(e), graph.edge(e).relation);\n }\n });\n\n stateBox = svgElem.getBBox();\n\n const stateInfo = {\n id: parentId ? parentId : 'root',\n label: parentId ? parentId : 'root',\n width: 0,\n height: 0,\n };\n\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n\n log.debug('Doc rendered', stateInfo, graph);\n return stateInfo;\n};\n\nexport default {\n setConf,\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/stateDiagram.jison';\nimport { StateDB } from './stateDb.js';\nimport styles from './styles.js';\nimport renderer from './stateRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new StateDB(1);\n },\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n },\n};\n"], + "mappings": "ipBAYO,IAAMA,EAAiBC,EAACC,GAC7BA,EACG,OAAO,QAAQ,EAGf,KAAK,QAAS,aAAa,EAC3B,KAAK,IAAKC,EAAU,EAAE,MAAM,QAAQ,EACpC,KAAK,KAAMA,EAAU,EAAE,MAAM,QAAUA,EAAU,EAAE,MAAM,QAAQ,EACjE,KAAK,KAAMA,EAAU,EAAE,MAAM,QAAUA,EAAU,EAAE,MAAM,QAAQ,EARxC,kBAejBC,EAAcH,EAACC,GAC1BA,EACG,OAAO,MAAM,EACb,MAAM,SAAU,MAAM,EACtB,MAAM,mBAAoB,GAAG,EAC7B,KAAK,KAAMC,EAAU,EAAE,MAAM,UAAU,EACvC,KAAK,QAAS,SAAS,EACvB,KAAK,KAAMA,EAAU,EAAE,MAAM,WAAa,CAAC,EAC3C,KAAK,KAAM,CAAC,EACZ,KAAK,KAAM,CAAC,EATU,eAiBdE,EAAkBJ,EAAA,CAACC,EAAGI,IAAa,CAC9C,IAAMC,EAAQL,EACX,OAAO,MAAM,EACb,KAAK,IAAK,EAAIC,EAAU,EAAE,MAAM,OAAO,EACvC,KAAK,IAAKA,EAAU,EAAE,MAAM,WAAa,EAAIA,EAAU,EAAE,MAAM,OAAO,EACtE,KAAK,YAAaA,EAAU,EAAE,MAAM,QAAQ,EAC5C,KAAK,QAAS,aAAa,EAC3B,KAAKG,EAAS,EAAE,EAEbE,EAAWD,EAAM,KAAK,EAAE,QAAQ,EACtC,OAAAL,EAAE,OAAO,OAAQ,cAAc,EAC5B,KAAK,IAAKC,EAAU,EAAE,MAAM,OAAO,EACnC,KAAK,IAAKA,EAAU,EAAE,MAAM,OAAO,EACnC,KAAK,QAASK,EAAS,MAAQ,EAAIL,EAAU,EAAE,MAAM,OAAO,EAC5D,KAAK,SAAUK,EAAS,OAAS,EAAIL,EAAU,EAAE,MAAM,OAAO,EAC9D,KAAK,KAAMA,EAAU,EAAE,MAAM,MAAM,EAE/BI,CACT,EAlB+B,mBA2BlBE,EAAiBR,EAAA,CAACC,EAAGI,IAAa,CAC7C,IAAMI,EAAWT,EAAA,SAAUU,EAAQC,EAAKC,EAAS,CAC/C,IAAMC,EAAQH,EACX,OAAO,OAAO,EACd,KAAK,IAAK,EAAIR,EAAU,EAAE,MAAM,OAAO,EACvC,KAAKS,CAAG,EACNC,GACHC,EAAM,KAAK,KAAMX,EAAU,EAAE,MAAM,UAAU,CAEjD,EARiB,YAiBXY,EARQb,EACX,OAAO,MAAM,EACb,KAAK,IAAK,EAAIC,EAAU,EAAE,MAAM,OAAO,EACvC,KAAK,IAAKA,EAAU,EAAE,MAAM,WAAa,IAAMA,EAAU,EAAE,MAAM,OAAO,EACxE,KAAK,YAAaA,EAAU,EAAE,MAAM,QAAQ,EAC5C,KAAK,QAAS,aAAa,EAC3B,KAAKG,EAAS,aAAa,CAAC,CAAC,EAET,KAAK,EAAE,QAAQ,EAChCU,EAAcD,EAAS,OAEvBE,EAAcf,EACjB,OAAO,MAAM,EACb,KAAK,IAAKC,EAAU,EAAE,MAAM,OAAO,EACnC,KACC,IACAa,EACEb,EAAU,EAAE,MAAM,QAAU,GAC5BA,EAAU,EAAE,MAAM,cAClBA,EAAU,EAAE,MAAM,UACtB,EACC,KAAK,QAAS,mBAAmB,EAEhCU,EAAU,GACVK,EAAW,GACfZ,EAAS,aAAa,QAAQ,SAAUa,EAAO,CACxCN,IACHH,EAASO,EAAaE,EAAOD,CAAQ,EACrCA,EAAW,IAEbL,EAAU,EACZ,CAAC,EAED,IAAMO,EAAYlB,EACf,OAAO,MAAM,EACb,KAAK,KAAMC,EAAU,EAAE,MAAM,OAAO,EACpC,KAAK,KAAMA,EAAU,EAAE,MAAM,QAAUa,EAAcb,EAAU,EAAE,MAAM,cAAgB,CAAC,EACxF,KAAK,KAAMA,EAAU,EAAE,MAAM,QAAUa,EAAcb,EAAU,EAAE,MAAM,cAAgB,CAAC,EACxF,KAAK,QAAS,eAAe,EAC1BkB,EAAWJ,EAAY,KAAK,EAAE,QAAQ,EACtCK,EAAQ,KAAK,IAAID,EAAS,MAAON,EAAS,KAAK,EAErD,OAAAK,EAAU,KAAK,KAAME,EAAQ,EAAInB,EAAU,EAAE,MAAM,OAAO,EAG1DD,EAAE,OAAO,OAAQ,cAAc,EAC5B,KAAK,IAAKC,EAAU,EAAE,MAAM,OAAO,EACnC,KAAK,IAAKA,EAAU,EAAE,MAAM,OAAO,EACnC,KAAK,QAASmB,EAAQ,EAAInB,EAAU,EAAE,MAAM,OAAO,EACnD,KAAK,SAAUkB,EAAS,OAASL,EAAc,EAAIb,EAAU,EAAE,MAAM,OAAO,EAC5E,KAAK,KAAMA,EAAU,EAAE,MAAM,MAAM,EAE/BD,CACT,EA/D8B,kBA0EjBqB,EAAiBtB,EAAA,CAACC,EAAGI,EAAUkB,IAAW,CACrD,IAAMC,EAAMtB,EAAU,EAAE,MAAM,QACxBuB,EAAS,EAAIvB,EAAU,EAAE,MAAM,QAC/BwB,EAASzB,EAAE,KAAK,EAAE,QAAQ,EAC1B0B,EAAWD,EAAO,MAClBE,EAAOF,EAAO,EAEdG,EAAQ5B,EACX,OAAO,MAAM,EACb,KAAK,IAAK,CAAC,EACX,KAAK,IAAKC,EAAU,EAAE,MAAM,UAAU,EACtC,KAAK,YAAaA,EAAU,EAAE,MAAM,QAAQ,EAC5C,KAAK,QAAS,aAAa,EAC3B,KAAKG,EAAS,EAAE,EAGbyB,EADWD,EAAM,KAAK,EAAE,QAAQ,EACV,MAAQJ,EAChCJ,EAAQ,KAAK,IAAIS,EAAYH,CAAQ,EACrCN,IAAUM,IACZN,EAAQA,EAAQI,GAElB,IAAIM,EASEC,EAAW/B,EAAE,KAAK,EAAE,QAAQ,EAG9BI,EAAS,IAgBb0B,EAASH,EAAOJ,EACZM,EAAaH,IACfI,GAAUJ,EAAWN,GAAS,EAAIG,GAEhC,KAAK,IAAII,EAAOI,EAAS,CAAC,EAAIR,GAAOM,EAAaH,IACpDI,EAASH,GAAQE,EAAaH,GAAY,GAG5C,IAAMM,EAAQ,EAAI/B,EAAU,EAAE,MAAM,WAEpC,OAAAD,EAAE,OAAO,OAAQ,cAAc,EAC5B,KAAK,IAAK8B,CAAM,EAChB,KAAK,IAAKE,CAAK,EACf,KAAK,QAASV,EAAS,eAAiB,UAAU,EAClD,KAAK,QAASF,CAAK,EACnB,KACC,SACAW,EAAS,OAAS9B,EAAU,EAAE,MAAM,WAAaA,EAAU,EAAE,MAAM,WAAa,CAClF,EACC,KAAK,KAAM,GAAG,EAEjB2B,EAAM,KAAK,IAAKE,EAASP,CAAG,EACxBM,GAAcH,GAChBE,EAAM,KAAK,IAAKD,GAAQP,EAAQI,GAAU,EAAIK,EAAa,EAAIN,CAAG,EAIpEvB,EAAE,OAAO,OAAQ,cAAc,EAC5B,KAAK,IAAK8B,CAAM,EAChB,KACC,IACA7B,EAAU,EAAE,MAAM,WAAaA,EAAU,EAAE,MAAM,WAAaA,EAAU,EAAE,MAAM,OAClF,EACC,KAAK,QAASmB,CAAK,EAEnB,KAAK,SAAUnB,EAAU,EAAE,MAAM,WAAa,CAAC,EAC/C,KAAK,KAAMA,EAAU,EAAE,MAAM,MAAM,EAGtCD,EAAE,OAAO,OAAQ,cAAc,EAC5B,KAAK,IAAK8B,CAAM,EAChB,KACC,IACA7B,EAAU,EAAE,MAAM,WAAaA,EAAU,EAAE,MAAM,WAAaA,EAAU,EAAE,MAAM,OAClF,EACC,KAAK,QAASmB,CAAK,EACnB,KAAK,SAAUW,EAAS,OAAS,EAAI,EAAI9B,EAAU,EAAE,MAAM,UAAU,EACrE,KAAK,KAAMA,EAAU,EAAE,MAAM,MAAM,EAE/BD,CACT,EAnG8B,kBAqGxBiC,EAAelC,EAACC,IACpBA,EAAE,OAAO,QAAQ,EAGd,KAAK,QAAS,iBAAiB,EAC/B,KAAK,IAAKC,EAAU,EAAE,MAAM,SAAWA,EAAU,EAAE,MAAM,WAAW,EACpE,KACC,KACAA,EAAU,EAAE,MAAM,QAAUA,EAAU,EAAE,MAAM,SAAWA,EAAU,EAAE,MAAM,WAC7E,EACC,KACC,KACAA,EAAU,EAAE,MAAM,QAAUA,EAAU,EAAE,MAAM,SAAWA,EAAU,EAAE,MAAM,WAC7E,EAGAD,EACG,OAAO,QAAQ,EAGf,KAAK,QAAS,iBAAiB,EAC/B,KAAK,IAAKC,EAAU,EAAE,MAAM,QAAQ,EACpC,KAAK,KAAMA,EAAU,EAAE,MAAM,QAAUA,EAAU,EAAE,MAAM,SAAW,CAAC,EACrE,KAAK,KAAMA,EAAU,EAAE,MAAM,QAAUA,EAAU,EAAE,MAAM,SAAW,CAAC,GAvBvD,gBA0BfiC,EAAoBnC,EAAA,CAACC,EAAGI,IAAa,CACzC,IAAIgB,EAAQnB,EAAU,EAAE,MAAM,UAC1BkC,EAASlC,EAAU,EAAE,MAAM,WAE/B,GAAIG,EAAS,SAAU,CACrB,IAAIgC,EAAMhB,EACVA,EAAQe,EACRA,EAASC,CACX,CACA,OAAOpC,EACJ,OAAO,MAAM,EACb,MAAM,SAAU,OAAO,EACvB,MAAM,OAAQ,OAAO,EACrB,KAAK,QAASoB,CAAK,EACnB,KAAK,SAAUe,CAAM,EACrB,KAAK,IAAKlC,EAAU,EAAE,MAAM,OAAO,EACnC,KAAK,IAAKA,EAAU,EAAE,MAAM,OAAO,CACxC,EAjB0B,qBAwC1B,IAAMoC,EAAgBC,EAAA,CAACC,EAAOC,EAAGC,EAAGC,IAAM,CACxC,IAAIC,EAAa,EAEXC,EAAWF,EAAE,OAAO,MAAM,EAChCE,EAAS,MAAM,cAAe,OAAO,EACrCA,EAAS,KAAK,QAAS,UAAU,EAEjC,IAAIC,EAAON,EAAM,QAAQ,QAAS,OAAO,EACzCM,EAAOA,EAAK,QAAQ,MAAO,OAAO,EAClC,IAAMC,EAAQD,EAAK,MAAME,EAAO,cAAc,EAE1CC,EAAU,KAAOC,EAAU,EAAE,MAAM,WACvC,QAAWC,KAAQJ,EAAO,CACxB,IAAMK,EAAMD,EAAK,KAAK,EAEtB,GAAIC,EAAI,OAAS,EAAG,CAClB,IAAMC,EAAOR,EAAS,OAAO,OAAO,EAEpC,GADAQ,EAAK,KAAKD,CAAG,EACTH,IAAY,EAAG,CACjB,IAAMK,EAAaD,EAAK,KAAK,EAAE,QAAQ,EACvCJ,GAAWK,EAAW,MACxB,CACAV,GAAcK,EACdI,EAAK,KAAK,IAAKZ,EAAIS,EAAU,EAAE,MAAM,UAAU,EAC/CG,EAAK,KAAK,IAAKX,EAAIE,EAAa,KAAOM,EAAU,EAAE,MAAM,UAAU,CACrE,CACF,CACA,MAAO,CAAE,UAAWL,EAAS,KAAK,EAAE,QAAQ,EAAE,MAAO,WAAAD,CAAW,CAClE,EA5BsB,iBAqCTW,GAAWhB,EAAA,CAACO,EAAMH,IAAM,CACnCA,EAAE,KAAK,QAAS,YAAY,EAC5B,IAAMa,EAAOb,EAAE,OAAO,MAAM,EAAE,KAAK,IAAK,CAAC,EAAE,KAAK,IAAKO,EAAU,EAAE,MAAM,OAAO,EACxEO,EAAWd,EAAE,OAAO,GAAG,EAEvB,CAAE,UAAAe,EAAW,WAAAd,CAAW,EAAIN,EAAcQ,EAAM,EAAG,EAAGW,CAAQ,EACpE,OAAAD,EAAK,KAAK,SAAUZ,EAAa,EAAIM,EAAU,EAAE,MAAM,UAAU,EACjEM,EAAK,KAAK,QAASE,EAAYR,EAAU,EAAE,MAAM,WAAa,CAAC,EAExDM,CACT,EAVwB,YAoBXG,EAAYpB,EAAA,SAAUqB,EAAMC,EAAU,CACjD,IAAMC,EAAKD,EAAS,GACdE,EAAY,CAChB,GAAID,EACJ,MAAOD,EAAS,GAChB,MAAO,EACP,OAAQ,CACV,EAEMlB,EAAIiB,EAAK,OAAO,GAAG,EAAE,KAAK,KAAME,CAAE,EAAE,KAAK,QAAS,YAAY,EAEhED,EAAS,OAAS,SACpBG,EAAerB,CAAC,EAEdkB,EAAS,OAAS,OACpBI,EAAatB,CAAC,GAEZkB,EAAS,OAAS,QAAUA,EAAS,OAAS,SAChDK,EAAkBvB,EAAGkB,CAAQ,EAE3BA,EAAS,OAAS,QACpBN,GAASM,EAAS,KAAK,KAAMlB,CAAC,EAE5BkB,EAAS,OAAS,WACpBM,EAAYxB,CAAC,EAEXkB,EAAS,OAAS,WAAaA,EAAS,aAAa,SAAW,GAClEO,EAAgBzB,EAAGkB,CAAQ,EAEzBA,EAAS,OAAS,WAAaA,EAAS,aAAa,OAAS,GAChEQ,EAAe1B,EAAGkB,CAAQ,EAG5B,IAAMS,EAAW3B,EAAE,KAAK,EAAE,QAAQ,EAClC,OAAAoB,EAAU,MAAQO,EAAS,MAAQ,EAAIpB,EAAU,EAAE,MAAM,QACzDa,EAAU,OAASO,EAAS,OAAS,EAAIpB,EAAU,EAAE,MAAM,QAEpDa,CACT,EAtCyB,aAwCrBQ,EAAY,EACHC,EAAWjC,EAAA,SAAUqB,EAAMa,EAAMC,EAAU,CACtD,IAAMC,EAAkBpC,EAAA,SAAUqC,EAAM,CACtC,OAAQA,EAAM,CACZ,KAAKC,EAAQ,aAAa,YACxB,MAAO,cACT,KAAKA,EAAQ,aAAa,UACxB,MAAO,YACT,KAAKA,EAAQ,aAAa,YACxB,MAAO,cACT,KAAKA,EAAQ,aAAa,WACxB,MAAO,YACX,CACF,EAXwB,mBAaxBJ,EAAK,OAASA,EAAK,OAAO,OAAQK,GAAM,CAAC,OAAO,MAAMA,EAAE,CAAC,CAAC,EAG1D,IAAMC,EAAWN,EAAK,OAGhBO,EAAeC,EAAK,EACvB,EAAE,SAAUC,EAAG,CACd,OAAOA,EAAE,CACX,CAAC,EACA,EAAE,SAAUA,EAAG,CACd,OAAOA,EAAE,CACX,CAAC,EACA,MAAMC,CAAU,EAEbC,EAAUxB,EACb,OAAO,MAAM,EACb,KAAK,IAAKoB,EAAaD,CAAQ,CAAC,EAChC,KAAK,KAAM,OAASR,CAAS,EAC7B,KAAK,QAAS,YAAY,EACzBc,EAAM,GAUV,GATInC,EAAU,EAAE,MAAM,sBACpBmC,EAAMC,EAAO,EAAI,GAGnBF,EAAQ,KACN,aACA,OAASC,EAAM,IAAMV,EAAgBE,EAAQ,aAAa,UAAU,EAAI,MAC1E,EAEIH,EAAS,QAAU,OAAW,CAChC,IAAMa,EAAQ3B,EAAK,OAAO,GAAG,EAAE,KAAK,QAAS,YAAY,EAEnD,CAAE,EAAAnB,EAAG,EAAAC,CAAE,EAAI8C,EAAM,kBAAkBf,EAAK,MAAM,EAE9CgB,EAAOzC,EAAO,QAAQ0B,EAAS,KAAK,EAEtCgB,EAAc,EACZC,EAAY,CAAC,EACfC,EAAW,EACXC,EAAO,EAEX,QAASC,EAAI,EAAGA,GAAKL,EAAK,OAAQK,IAAK,CACrC,IAAMC,EAAQR,EACX,OAAO,MAAM,EACb,KAAK,cAAe,QAAQ,EAC5B,KAAKE,EAAKK,CAAC,CAAC,EACZ,KAAK,IAAKrD,CAAC,EACX,KAAK,IAAKC,EAAIgD,CAAW,EAEtBM,EAAYD,EAAM,KAAK,EAAE,QAAQ,EACvCH,EAAW,KAAK,IAAIA,EAAUI,EAAU,KAAK,EAC7CH,EAAO,KAAK,IAAIA,EAAMG,EAAU,CAAC,EAEjCC,EAAI,KAAKD,EAAU,EAAGvD,EAAGC,EAAIgD,CAAW,EAEpCA,IAAgB,IAElBA,EADiBK,EAAM,KAAK,EAAE,QAAQ,EACf,OACvBE,EAAI,KAAK,eAAgBP,EAAahD,CAAC,GAEzCiD,EAAU,KAAKI,CAAK,CACtB,CAEA,IAAIG,EAAYR,EAAcD,EAAK,OACnC,GAAIA,EAAK,OAAS,EAAG,CACnB,IAAMU,GAAaV,EAAK,OAAS,GAAKC,EAAc,GAEpDC,EAAU,QAAQ,CAACI,EAAOD,IAAMC,EAAM,KAAK,IAAKrD,EAAIoD,EAAIJ,EAAcS,CAAS,CAAC,EAChFD,EAAYR,EAAcD,EAAK,MACjC,CAEA,IAAMW,EAASb,EAAM,KAAK,EAAE,QAAQ,EAEpCA,EACG,OAAO,OAAQ,cAAc,EAC7B,KAAK,QAAS,KAAK,EACnB,KAAK,IAAK9C,EAAImD,EAAW,EAAI1C,EAAU,EAAE,MAAM,QAAU,CAAC,EAC1D,KAAK,IAAKR,EAAIwD,EAAY,EAAIhD,EAAU,EAAE,MAAM,QAAU,EAAI,GAAG,EACjE,KAAK,QAAS0C,EAAW1C,EAAU,EAAE,MAAM,OAAO,EAClD,KAAK,SAAUgD,EAAYhD,EAAU,EAAE,MAAM,OAAO,EAEvD+C,EAAI,KAAKG,CAAM,CAmBjB,CAEA7B,GACF,EAtHwB,YChZxB,IAAI8B,EAEEC,EAAoB,CAAC,EAEdC,GAAUC,EAAA,UAAY,CAEnC,EAFuB,WASjBC,GAAgBD,EAAA,SAAUE,EAAM,CACpCA,EACG,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,KAAM,eAAe,EAC1B,KAAK,OAAQ,EAAE,EACf,KAAK,OAAQ,CAAC,EACd,KAAK,cAAe,EAAE,EACtB,KAAK,eAAgB,EAAE,EACvB,KAAK,SAAU,MAAM,EACrB,OAAO,MAAM,EACb,KAAK,IAAK,2BAA2B,CAC1C,EAZsB,iBAsBTC,GAAOH,EAAA,SAAUI,EAAMC,EAAIC,EAAUC,EAAS,CACzDV,EAAOW,EAAU,EAAE,MACnB,IAAMC,EAAgBD,EAAU,EAAE,cAE9BE,EACAD,IAAkB,YACpBC,EAAiBC,EAAO,KAAON,CAAE,GAEnC,IAAMO,EACJH,IAAkB,UACdE,EAAOD,EAAe,MAAM,EAAE,CAAC,EAAE,gBAAgB,IAAI,EACrDC,EAAO,MAAM,EACbE,EAAMJ,IAAkB,UAAYC,EAAe,MAAM,EAAE,CAAC,EAAE,gBAAkB,SAEtFI,EAAI,MAAM,qBAAuBV,CAAI,EAGrC,IAAMW,EAAUH,EAAK,OAAO,QAAQP,CAAE,IAAI,EAC1CJ,GAAcc,CAAO,EAErB,IAAMC,EAAUT,EAAQ,GAAG,WAAW,EAChCU,EAAQF,EAAQ,OAAO,GAAG,EAAE,KAAK,KAAMV,EAAK,OAAO,EACzDa,EAAUF,EAASC,EAAO,OAAW,GAAOL,EAAMC,EAAKN,CAAO,EAE9D,IAAMY,EAAUtB,EAAK,QACfuB,EAASL,EAAQ,KAAK,EAAE,QAAQ,EAEhCM,EAAQD,EAAO,MAAQD,EAAU,EACjCG,EAASF,EAAO,OAASD,EAAU,EAGnCI,EAAWF,EAAQ,KACzBG,EAAiBT,EAASO,EAAQC,EAAU1B,EAAK,WAAW,EAE5DkB,EAAQ,KACN,UACA,GAAGK,EAAO,EAAIvB,EAAK,OAAO,KAAKuB,EAAO,EAAIvB,EAAK,OAAO,IAAMwB,EAAQ,IAAMC,CAC5E,CACF,EAtCoB,QAuCdG,GAAgBzB,EAACI,GACdA,EAAOA,EAAK,OAASP,EAAK,eAAiB,EAD9B,iBAIhBqB,EAAYlB,EAAA,CAACa,EAAKE,EAASW,EAAUC,EAAQf,EAAMgB,EAAarB,IAAY,CAEhF,IAAMsB,EAAQ,IAAaC,EAAM,CAC/B,SAAU,GACV,WAAY,EACd,CAAC,EAEGC,EACAC,EAAc,GAClB,IAAKD,EAAI,EAAGA,EAAIlB,EAAI,OAAQkB,IAC1B,GAAIlB,EAAIkB,CAAC,EAAE,OAAS,WAAY,CAC9BC,EAAc,GACd,KACF,CAIEN,EACFG,EAAM,SAAS,CACb,QAAS,KACT,WAAY,GACZ,SAAU,GAEV,OAAQ,aACR,QAASG,EAAc,EAAInC,EAAK,iBAChC,QAASmC,EAAc,EAAI,GAC3B,aAAc,EAGhB,CAAC,EAEDH,EAAM,SAAS,CACb,QAAS,KACT,WAAY,GACZ,SAAU,GAIV,QAASG,EAAc,EAAInC,EAAK,iBAChC,QAASmC,EAAc,EAAI,GAC3B,OAAQ,aAER,aAAc,EAChB,CAAC,EAIHH,EAAM,oBAAoB,UAAY,CACpC,MAAO,CAAC,CACV,CAAC,EAED,IAAMI,EAAS1B,EAAQ,GAAG,UAAU,EAC9B2B,EAAY3B,EAAQ,GAAG,aAAa,EAEpC4B,EAAO,OAAO,KAAKF,CAAM,EAE3BG,EAAQ,GAEZ,QAAWC,KAAOF,EAAM,CACtB,IAAMG,EAAWL,EAAOI,CAAG,EAEvBX,IACFY,EAAS,SAAWZ,GAGtB,IAAIa,EACJ,GAAID,EAAS,IAAK,CAChB,IAAIE,EAAMzB,EAAQ,OAAO,GAAG,EAAE,KAAK,KAAMuB,EAAS,EAAE,EAAE,KAAK,QAAS,YAAY,EAGhF,GAFAC,EAAOrB,EAAUoB,EAAS,IAAKE,EAAKF,EAAS,GAAI,CAACX,EAAQf,EAAMgB,EAAarB,CAAO,EAEhF6B,EAAO,CAETI,EAAMC,EAAeD,EAAKF,EAAUX,CAAM,EAC1C,IAAIe,EAAYF,EAAI,KAAK,EAAE,QAAQ,EACnCD,EAAK,MAAQG,EAAU,MACvBH,EAAK,OAASG,EAAU,OAAS7C,EAAK,QAAU,EAChDC,EAAkBwC,EAAS,EAAE,EAAI,CAAE,EAAGzC,EAAK,iBAAkB,CAC/D,KAAO,CAEL,IAAI6C,EAAYF,EAAI,KAAK,EAAE,QAAQ,EACnCD,EAAK,MAAQG,EAAU,MACvBH,EAAK,OAASG,EAAU,MAE1B,CACF,MACEH,EAAOI,EAAU5B,EAASuB,EAAUT,CAAK,EAG3C,GAAIS,EAAS,KAAM,CAEjB,IAAMM,EAAU,CACd,aAAc,CAAC,EACf,GAAIN,EAAS,GAAK,QAClB,KAAMA,EAAS,KACf,KAAM,MACR,EACMO,EAAOF,EAAU5B,EAAS6B,EAASf,CAAK,EAG1CS,EAAS,KAAK,WAAa,WAC7BT,EAAM,QAAQU,EAAK,GAAK,QAASM,CAAI,EACrChB,EAAM,QAAQU,EAAK,GAAIA,CAAI,IAE3BV,EAAM,QAAQU,EAAK,GAAIA,CAAI,EAC3BV,EAAM,QAAQU,EAAK,GAAK,QAASM,CAAI,GAGvChB,EAAM,UAAUU,EAAK,GAAIA,EAAK,GAAK,QAAQ,EAC3CV,EAAM,UAAUU,EAAK,GAAK,QAASA,EAAK,GAAK,QAAQ,CACvD,MAIEV,EAAM,QAAQU,EAAK,GAAIA,CAAI,CAE/B,CAEAzB,EAAI,MAAM,SAAUe,EAAM,UAAU,EAAGA,CAAK,EAC5C,IAAIiB,EAAM,EACVZ,EAAU,QAAQ,SAAUa,EAAU,CACpCD,IACAhC,EAAI,MAAM,eAAgBiC,CAAQ,EAClClB,EAAM,QACJkB,EAAS,IACTA,EAAS,IACT,CACE,SAAUA,EACV,MAAOtB,GAAcsB,EAAS,KAAK,EACnC,OAAQlD,EAAK,YAAcmD,EAAO,QAAQD,EAAS,KAAK,EAAE,OAC1D,SAAU,GACZ,EACA,KAAOD,CACT,CACF,CAAC,EAEDG,EAAYpB,CAAK,EAEjBf,EAAI,MAAM,qBAAsBe,EAAM,MAAM,CAAC,EAC7C,IAAMqB,EAAUnC,EAAQ,KAAK,EAE7Bc,EAAM,MAAM,EAAE,QAAQ,SAAUsB,EAAG,CAC7BA,IAAM,QAAatB,EAAM,KAAKsB,CAAC,IAAM,QACvCrC,EAAI,KAAK,QAAUqC,EAAI,KAAO,KAAK,UAAUtB,EAAM,KAAKsB,CAAC,CAAC,CAAC,EAC3DvC,EACG,OAAO,IAAMsC,EAAQ,GAAK,KAAOC,CAAC,EAClC,KACC,YACA,cACGtB,EAAM,KAAKsB,CAAC,EAAE,EAAItB,EAAM,KAAKsB,CAAC,EAAE,MAAQ,GACzC,KACCtB,EAAM,KAAKsB,CAAC,EAAE,GACZrD,EAAkBqD,CAAC,EAAIrD,EAAkBqD,CAAC,EAAE,EAAI,GACjDtB,EAAM,KAAKsB,CAAC,EAAE,OAAS,GACzB,IACJ,EACFvC,EACG,OAAO,IAAMsC,EAAQ,GAAK,KAAOC,CAAC,EAClC,KAAK,eAAgBtB,EAAM,KAAKsB,CAAC,EAAE,EAAItB,EAAM,KAAKsB,CAAC,EAAE,MAAQ,CAAC,EAChDvB,EAAY,iBAAiB,IAAMsB,EAAQ,GAAK,KAAOC,EAAI,WAAW,EAC9E,QAASC,GAAY,CAC5B,IAAMC,EAASD,EAAQ,cACnBE,EAAS,EACTC,EAAS,EACTF,IACEA,EAAO,gBACTC,EAASD,EAAO,cAAc,QAAQ,EAAE,OAE1CE,EAAS,SAASF,EAAO,aAAa,cAAc,EAAG,EAAE,EACrD,OAAO,MAAME,CAAM,IACrBA,EAAS,IAGbH,EAAQ,aAAa,KAAM,EAAIG,EAAS,CAAC,EACzCH,EAAQ,aAAa,KAAME,EAASC,EAAS,CAAC,CAChD,CAAC,GAEDzC,EAAI,MAAM,WAAaqC,EAAI,KAAO,KAAK,UAAUtB,EAAM,KAAKsB,CAAC,CAAC,CAAC,CAEnE,CAAC,EAED,IAAIK,EAAWN,EAAQ,QAAQ,EAE/BrB,EAAM,MAAM,EAAE,QAAQ,SAAU4B,EAAG,CAC7BA,IAAM,QAAa5B,EAAM,KAAK4B,CAAC,IAAM,SACvC3C,EAAI,MAAM,QAAU2C,EAAE,EAAI,OAASA,EAAE,EAAI,KAAO,KAAK,UAAU5B,EAAM,KAAK4B,CAAC,CAAC,CAAC,EAC7EC,EAAS3C,EAASc,EAAM,KAAK4B,CAAC,EAAG5B,EAAM,KAAK4B,CAAC,EAAE,QAAQ,EAE3D,CAAC,EAEDD,EAAWN,EAAQ,QAAQ,EAE3B,IAAMS,EAAY,CAChB,GAAIjC,GAAsB,OAC1B,MAAOA,GAAsB,OAC7B,MAAO,EACP,OAAQ,CACV,EAEA,OAAAiC,EAAU,MAAQH,EAAS,MAAQ,EAAI3D,EAAK,QAC5C8D,EAAU,OAASH,EAAS,OAAS,EAAI3D,EAAK,QAE9CiB,EAAI,MAAM,eAAgB6C,EAAW9B,CAAK,EACnC8B,CACT,EA3MkB,aA6MXC,EAAQ,CACb,QAAA7D,GACA,KAAAI,EACF,ECjSO,IAAM0D,GAA6B,CACxC,OAAAC,EACA,IAAI,IAAK,CACP,OAAO,IAAIC,EAAQ,CAAC,CACtB,EACA,SAAAC,EACA,OAAAC,EACA,KAAMC,EAACC,GAAQ,CACRA,EAAI,QACPA,EAAI,MAAQ,CAAC,GAEfA,EAAI,MAAM,oBAAsBA,EAAI,mBACtC,EALM,OAMR", + "names": ["drawStartState", "__name", "g", "getConfig", "drawDivider", "drawSimpleState", "stateDef", "state", "classBox", "drawDescrState", "addTspan", "textEl", "txt", "isFirst", "tSpan", "titleBox", "titleHeight", "description", "isSecond", "descr", "descrLine", "descrBox", "width", "addTitleAndBox", "altBkg", "pad", "dblPad", "orgBox", "orgWidth", "orgX", "title", "titleWidth", "startX", "graphBox", "lineY", "drawEndState", "drawForkJoinState", "height", "tmp", "_drawLongText", "__name", "_text", "x", "y", "g", "textHeight", "textElem", "text", "lines", "common_default", "tHeight", "getConfig", "line", "txt", "span", "textBounds", "drawNote", "note", "rectElem", "textWidth", "drawState", "elem", "stateDef", "id", "stateInfo", "drawStartState", "drawEndState", "drawForkJoinState", "drawDivider", "drawSimpleState", "drawDescrState", "stateBox", "edgeCount", "drawEdge", "path", "relation", "getRelationType", "type", "StateDB", "p", "lineData", "lineFunction", "line_default", "d", "basis_default", "svgPath", "url", "getUrl", "label", "utils_default", "rows", "titleHeight", "titleRows", "maxWidth", "minX", "i", "title", "boundsTmp", "log", "boxHeight", "heightAdj", "bounds", "conf", "transformationLog", "setConf", "__name", "insertMarkers", "elem", "draw", "text", "id", "_version", "diagObj", "getConfig", "securityLevel", "sandboxElement", "select_default", "root", "doc", "log", "diagram", "rootDoc", "rootG", "renderDoc", "padding", "bounds", "width", "height", "svgWidth", "configureSvgSize", "getLabelWidth", "parentId", "altBkg", "domDocument", "graph", "Graph", "i", "edgeFreeDoc", "states", "relations", "keys", "first", "key", "stateDef", "node", "sub", "addTitleAndBox", "boxBounds", "drawState", "noteDef", "note", "cnt", "relation", "common_default", "layout", "svgElem", "v", "divider", "parent", "pWidth", "pShift", "stateBox", "e", "drawEdge", "stateInfo", "stateRenderer_default", "diagram", "stateDiagram_default", "StateDB", "stateRenderer_default", "styles_default", "__name", "cnf"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-UFOXNHOX.mjs b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-UFOXNHOX.mjs deleted file mode 100644 index 4a03686..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-UFOXNHOX.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as X,c as N,d as J}from"./chunk-33NP3AWU.mjs";import{a as O}from"./chunk-3YCYZ6SJ.mjs";import{a as F}from"./chunk-HN6EAY2L.mjs";import"./chunk-TBF5ZNIQ.mjs";import"./chunk-T4EQAHMB.mjs";import"./chunk-SK62O5VA.mjs";import"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import{m as C}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{A as P,F as z,N as R,Y as t}from"./chunk-3UWU4A3N.mjs";import{H as W,L as U,b,h as L}from"./chunk-MGPAVIPZ.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import{a as f}from"./chunk-VELTKBKT.mjs";var j=f(e=>e.append("circle").attr("class","start-state").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit).attr("cy",t().state.padding+t().state.sizeUnit),"drawStartState"),q=f(e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",t().state.textHeight).attr("class","divider").attr("x2",t().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),Z=f((e,n)=>{let s=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+2*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(n.id),c=s.node().getBBox();return e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",c.width+2*t().state.padding).attr("height",c.height+2*t().state.padding).attr("rx",t().state.radius),s},"drawSimpleState"),K=f((e,n)=>{let s=f(function(p,y,w){let k=p.append("tspan").attr("x",2*t().state.padding).text(y);w||k.attr("dy",t().state.textHeight)},"addTspan"),r=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+1.3*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(n.descriptions[0]).node().getBBox(),g=r.height,x=e.append("text").attr("x",t().state.padding).attr("y",g+t().state.padding*.4+t().state.dividerMargin+t().state.textHeight).attr("class","state-description"),i=!0,o=!0;n.descriptions.forEach(function(p){i||(s(x,p,o),o=!1),i=!1});let m=e.append("line").attr("x1",t().state.padding).attr("y1",t().state.padding+g+t().state.dividerMargin/2).attr("y2",t().state.padding+g+t().state.dividerMargin/2).attr("class","descr-divider"),h=x.node().getBBox(),d=Math.max(h.width,r.width);return m.attr("x2",d+3*t().state.padding),e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",d+2*t().state.padding).attr("height",h.height+g+2*t().state.padding).attr("rx",t().state.radius),e},"drawDescrState"),v=f((e,n,s)=>{let c=t().state.padding,r=2*t().state.padding,g=e.node().getBBox(),x=g.width,i=g.x,o=e.append("text").attr("x",0).attr("y",t().state.titleShift).attr("font-size",t().state.fontSize).attr("class","state-title").text(n.id),h=o.node().getBBox().width+r,d=Math.max(h,x);d===x&&(d=d+r);let p,y=e.node().getBBox();n.doc,p=i-c,h>x&&(p=(x-d)/2+c),Math.abs(i-y.x)x&&(p=i-(h-x)/2);let w=1-t().state.textHeight;return e.insert("rect",":first-child").attr("x",p).attr("y",w).attr("class",s?"alt-composit":"composit").attr("width",d).attr("height",y.height+t().state.textHeight+t().state.titleShift+1).attr("rx","0"),o.attr("x",p+c),h<=x&&o.attr("x",i+(d-r)/2-h/2+c),e.insert("rect",":first-child").attr("x",p).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",t().state.textHeight*3).attr("rx",t().state.radius),e.insert("rect",":first-child").attr("x",p).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",y.height+3+2*t().state.textHeight).attr("rx",t().state.radius),e},"addTitleAndBox"),Q=f(e=>(e.append("circle").attr("class","end-state-outer").attr("r",t().state.sizeUnit+t().state.miniPadding).attr("cx",t().state.padding+t().state.sizeUnit+t().state.miniPadding).attr("cy",t().state.padding+t().state.sizeUnit+t().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit+2).attr("cy",t().state.padding+t().state.sizeUnit+2)),"drawEndState"),V=f((e,n)=>{let s=t().state.forkWidth,c=t().state.forkHeight;if(n.parentId){let r=s;s=c,c=r}return e.append("rect").style("stroke","black").style("fill","black").attr("width",s).attr("height",c).attr("x",t().state.padding).attr("y",t().state.padding)},"drawForkJoinState");var D=f((e,n,s,c)=>{let r=0,g=c.append("text");g.style("text-anchor","start"),g.attr("class","noteText");let x=e.replace(/\r\n/g,"
    ");x=x.replace(/\n/g,"
    ");let i=x.split(z.lineBreakRegex),o=1.25*t().state.noteMargin;for(let m of i){let h=m.trim();if(h.length>0){let d=g.append("tspan");if(d.text(h),o===0){let p=d.node().getBBox();o+=p.height}r+=o,d.attr("x",n+t().state.noteMargin),d.attr("y",s+r+1.25*t().state.noteMargin)}}return{textWidth:g.node().getBBox().width,textHeight:r}},"_drawLongText"),tt=f((e,n)=>{n.attr("class","state-note");let s=n.append("rect").attr("x",0).attr("y",t().state.padding),c=n.append("g"),{textWidth:r,textHeight:g}=D(e,0,0,c);return s.attr("height",g+2*t().state.noteMargin),s.attr("width",r+t().state.noteMargin*2),s},"drawNote"),A=f(function(e,n){let s=n.id,c={id:s,label:n.id,width:0,height:0},r=e.append("g").attr("id",s).attr("class","stateGroup");n.type==="start"&&j(r),n.type==="end"&&Q(r),(n.type==="fork"||n.type==="join")&&V(r,n),n.type==="note"&&tt(n.note.text,r),n.type==="divider"&&q(r),n.type==="default"&&n.descriptions.length===0&&Z(r,n),n.type==="default"&&n.descriptions.length>0&&K(r,n);let g=r.node().getBBox();return c.width=g.width+2*t().state.padding,c.height=g.height+2*t().state.padding,c},"drawState"),Y=0,I=f(function(e,n,s){let c=f(function(o){switch(o){case N.relationType.AGGREGATION:return"aggregation";case N.relationType.EXTENSION:return"extension";case N.relationType.COMPOSITION:return"composition";case N.relationType.DEPENDENCY:return"dependency"}},"getRelationType");n.points=n.points.filter(o=>!Number.isNaN(o.y));let r=n.points,g=W().x(function(o){return o.x}).y(function(o){return o.y}).curve(U),x=e.append("path").attr("d",g(r)).attr("id","edge"+Y).attr("class","transition"),i="";if(t().state.arrowMarkerAbsolute&&(i=P(!0)),x.attr("marker-end","url("+i+"#"+c(N.relationType.DEPENDENCY)+"End)"),s.title!==void 0){let o=e.append("g").attr("class","stateLabel"),{x:m,y:h}=C.calcLabelPosition(n.points),d=z.getRows(s.title),p=0,y=[],w=0,k=0;for(let a=0;a<=d.length;a++){let u=o.append("text").attr("text-anchor","middle").text(d[a]).attr("x",m).attr("y",h+p),l=u.node().getBBox();w=Math.max(w,l.width),k=Math.min(k,l.x),b.info(l.x,m,h+p),p===0&&(p=u.node().getBBox().height,b.info("Title height",p,h)),y.push(u)}let M=p*d.length;if(d.length>1){let a=(d.length-1)*p*.5;y.forEach((u,l)=>u.attr("y",h+l*p-a)),M=p*d.length}let H=o.node().getBBox();o.insert("rect",":first-child").attr("class","box").attr("x",m-w/2-t().state.padding/2).attr("y",h-M/2-t().state.padding/2-3.5).attr("width",w+t().state.padding).attr("height",M+t().state.padding),b.info(H)}Y++},"drawEdge");var S,G={},et=f(function(){},"setConf"),it=f(function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),nt=f(function(e,n,s,c){S=t().state;let r=t().securityLevel,g;r==="sandbox"&&(g=L("#i"+n));let x=r==="sandbox"?L(g.nodes()[0].contentDocument.body):L("body"),i=r==="sandbox"?g.nodes()[0].contentDocument:document;b.debug("Rendering diagram "+e);let o=x.select(`[id='${n}']`);it(o);let m=c.db.getRootDoc();$(m,o,void 0,!1,x,i,c);let h=S.padding,d=o.node().getBBox(),p=d.width+h*2,y=d.height+h*2,w=p*1.75;R(o,y,w,S.useMaxWidth),o.attr("viewBox",`${d.x-S.padding} ${d.y-S.padding} `+p+" "+y)},"draw"),at=f(e=>e?e.length*S.fontSizeFactor:1,"getLabelWidth"),$=f((e,n,s,c,r,g,x)=>{let i=new F({compound:!0,multigraph:!0}),o,m=!0;for(o=0;o{let B=l.parentElement,E=0,T=0;B&&(B.parentElement&&(E=B.parentElement.getBBox().width),T=parseInt(B.getAttribute("data-x-shift"),10),Number.isNaN(T)&&(T=0)),l.setAttribute("x1",0-T+8),l.setAttribute("x2",E-T-8)})):b.debug("No Node "+a+": "+JSON.stringify(i.node(a)))});let M=k.getBBox();i.edges().forEach(function(a){a!==void 0&&i.edge(a)!==void 0&&(b.debug("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(i.edge(a))),I(n,i.edge(a),i.edge(a).relation))}),M=k.getBBox();let H={id:s||"root",label:s||"root",width:0,height:0};return H.width=M.width+2*S.padding,H.height=M.height+2*S.padding,b.debug("Doc rendered",H,i),H},"renderDoc"),_={setConf:et,draw:nt};var Ht={parser:X,get db(){return new N(1)},renderer:_,styles:J,init:f(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{Ht as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-36443NZ5.mjs b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-36443NZ5.mjs new file mode 100644 index 0000000..5cc1152 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-36443NZ5.mjs @@ -0,0 +1 @@ +import{a as e,b as i,c as a,d as o}from"./chunk-LCXTWHL2.mjs";import"./chunk-6764PJDD.mjs";import"./chunk-ZXARS5L4.mjs";import"./chunk-VU6ZFW4Y.mjs";import"./chunk-7J6CGLKN.mjs";import"./chunk-KGFNY3KK.mjs";import"./chunk-5IMINLNL.mjs";import"./chunk-T2UQINTJ.mjs";import"./chunk-5VCL7Z4A.mjs";import"./chunk-UY5QBCOK.mjs";import"./chunk-INKRHTLW.mjs";import"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import"./chunk-67TQ5CYL.mjs";import"./chunk-7W6UQGC5.mjs";import{a as t}from"./chunk-AQ6EADP3.mjs";var f={parser:e,get db(){return new a(2)},renderer:i,styles:o,init:t(r=>{r.state||(r.state={}),r.state.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{f as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-C774GKM7.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-36443NZ5.mjs.map similarity index 78% rename from assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-C774GKM7.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-36443NZ5.mjs.map index fcfbf01..7560694 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-C774GKM7.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-36443NZ5.mjs.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../src/diagrams/state/stateDiagram-v2.ts"], "sourcesContent": ["import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: JISON doesn't support types\nimport parser from './parser/stateDiagram.jison';\nimport { StateDB } from './stateDb.js';\nimport styles from './styles.js';\nimport renderer from './stateRenderer-v3-unified.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n get db() {\n return new StateDB(2);\n },\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n },\n};\n"], - "mappings": "0hBAOO,IAAMA,EAA6B,CACxC,OAAAC,EACA,IAAI,IAAK,CACP,OAAO,IAAIC,EAAQ,CAAC,CACtB,EACA,SAAAC,EACA,OAAAC,EACA,KAAMC,EAACC,GAAQ,CACRA,EAAI,QACPA,EAAI,MAAQ,CAAC,GAEfA,EAAI,MAAM,oBAAsBA,EAAI,mBACtC,EALM,OAMR", + "mappings": "6fAOO,IAAMA,EAA6B,CACxC,OAAAC,EACA,IAAI,IAAK,CACP,OAAO,IAAIC,EAAQ,CAAC,CACtB,EACA,SAAAC,EACA,OAAAC,EACA,KAAMC,EAACC,GAAQ,CACRA,EAAI,QACPA,EAAI,MAAQ,CAAC,GAEfA,EAAI,MAAM,oBAAsBA,EAAI,mBACtC,EALM,OAMR", "names": ["diagram", "stateDiagram_default", "StateDB", "stateRenderer_v3_unified_default", "styles_default", "__name", "cnf"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-C774GKM7.mjs b/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-C774GKM7.mjs deleted file mode 100644 index a5e73c8..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-C774GKM7.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as e,b as i,c as a,d as o}from"./chunk-33NP3AWU.mjs";import"./chunk-TBF5ZNIQ.mjs";import"./chunk-T4EQAHMB.mjs";import"./chunk-SK62O5VA.mjs";import"./chunk-5YHUCXBM.mjs";import"./chunk-3ZBQQEZ6.mjs";import"./chunk-BDKIFH7H.mjs";import"./chunk-XODN6PIJ.mjs";import"./chunk-IWDTEBJL.mjs";import"./chunk-D2KP3OBD.mjs";import"./chunk-YLHEXJF3.mjs";import"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import"./chunk-3UWU4A3N.mjs";import"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as t}from"./chunk-VELTKBKT.mjs";var f={parser:e,get db(){return new a(2)},renderer:i,styles:o,init:t(r=>{r.state||(r.state={}),r.state.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{f as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-GC5UGDFR.mjs b/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-GC5UGDFR.mjs deleted file mode 100644 index 7fc9bc3..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-GC5UGDFR.mjs +++ /dev/null @@ -1,61 +0,0 @@ -import{O as at,Q as ot,X as lt,Y as ct,d as rt,e as it,f as st}from"./chunk-3UWU4A3N.mjs";import{F as Q,b as S,h as W}from"./chunk-MGPAVIPZ.mjs";import{a as s,d as Nt}from"./chunk-VELTKBKT.mjs";var X=(function(){var n=s(function(m,i,a,c){for(a=a||{},c=m.length;c--;a[m[c]]=i);return a},"o"),t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],o=[1,10],r=[1,11],u=[1,12],h=[1,13],f=[1,16],g=[1,17],p={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:s(function(i,a,c,d,y,l,E){var k=l.length-1;switch(y){case 1:return l[k-1];case 2:this.$=[];break;case 3:l[k-1].push(l[k]),this.$=l[k-1];break;case 4:case 5:this.$=l[k];break;case 6:case 7:this.$=[];break;case 8:d.getCommonDb().setDiagramTitle(l[k].substr(6)),this.$=l[k].substr(6);break;case 9:this.$=l[k].trim(),d.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=l[k].trim(),d.getCommonDb().setAccDescription(this.$);break;case 12:d.addSection(l[k].substr(8)),this.$=l[k].substr(8);break;case 15:d.addTask(l[k],0,""),this.$=l[k];break;case 16:d.addEvent(l[k].substr(2)),this.$=l[k];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},n(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:o,14:r,16:u,17:h,18:14,19:15,20:f,21:g},n(t,[2,7],{1:[2,1]}),n(t,[2,3]),{9:18,11:e,12:o,14:r,16:u,17:h,18:14,19:15,20:f,21:g},n(t,[2,5]),n(t,[2,6]),n(t,[2,8]),{13:[1,19]},{15:[1,20]},n(t,[2,11]),n(t,[2,12]),n(t,[2,13]),n(t,[2,14]),n(t,[2,15]),n(t,[2,16]),n(t,[2,4]),n(t,[2,9]),n(t,[2,10])],defaultActions:{},parseError:s(function(i,a){if(a.recoverable)this.trace(i);else{var c=new Error(i);throw c.hash=a,c}},"parseError"),parse:s(function(i){var a=this,c=[0],d=[],y=[null],l=[],E=this.table,k="",N=0,C=0,V=0,et=2,L=1,v=l.slice.call(arguments,1),x=Object.create(this.lexer),T={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(T.yy[$]=this.yy[$]);x.setInput(i,T.yy),T.yy.lexer=x,T.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var P=x.yylloc;l.push(P);var U=x.options&&x.options.ranges;typeof T.yy.parseError=="function"?this.parseError=T.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Zt(I){c.length=c.length-2*I,y.length=y.length-I,l.length=l.length-I}s(Zt,"popStack");function Mt(){var I;return I=d.pop()||x.lex()||L,typeof I!="number"&&(I instanceof Array&&(d=I,I=d.pop()),I=a.symbols_[I]||I),I}s(Mt,"lex");for(var w,Z,B,M,Jt,J,R={},O,H,nt,j;;){if(B=c[c.length-1],this.defaultActions[B]?M=this.defaultActions[B]:((w===null||typeof w>"u")&&(w=Mt()),M=E[B]&&E[B][w]),typeof M>"u"||!M.length||!M[0]){var K="";j=[];for(O in E[B])this.terminals_[O]&&O>et&&j.push("'"+this.terminals_[O]+"'");x.showPosition?K="Parse error on line "+(N+1)+`: -`+x.showPosition()+` -Expecting `+j.join(", ")+", got '"+(this.terminals_[w]||w)+"'":K="Parse error on line "+(N+1)+": Unexpected "+(w==L?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(K,{text:x.match,token:this.terminals_[w]||w,line:x.yylineno,loc:P,expected:j})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+B+", token: "+w);switch(M[0]){case 1:c.push(w),y.push(x.yytext),l.push(x.yylloc),c.push(M[1]),w=null,Z?(w=Z,Z=null):(C=x.yyleng,k=x.yytext,N=x.yylineno,P=x.yylloc,V>0&&V--);break;case 2:if(H=this.productions_[M[1]][1],R.$=y[y.length-H],R._$={first_line:l[l.length-(H||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(H||1)].first_column,last_column:l[l.length-1].last_column},U&&(R._$.range=[l[l.length-(H||1)].range[0],l[l.length-1].range[1]]),J=this.performAction.apply(R,[k,C,N,T.yy,M[1],y,l].concat(v)),typeof J<"u")return J;H&&(c=c.slice(0,-1*H*2),y=y.slice(0,-1*H),l=l.slice(0,-1*H)),c.push(this.productions_[M[1]][0]),y.push(R.$),l.push(R._$),nt=E[c[c.length-2]][c[c.length-1]],c.push(nt);break;case 3:return!0}}return!0},"parse")},b=(function(){var m={EOF:1,parseError:s(function(a,c){if(this.yy.parser)this.yy.parser.parseError(a,c);else throw new Error(a)},"parseError"),setInput:s(function(i,a){return this.yy=a||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:s(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var a=i.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:s(function(i){var a=i.length,c=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var y=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(i){this.unput(this.match.slice(i))},"less"),pastInput:s(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var i=this.pastInput(),a=new Array(i.length+1).join("-");return i+this.upcomingInput()+` -`+a+"^"},"showPosition"),test_match:s(function(i,a){var c,d,y;if(this.options.backtrack_lexer&&(y={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(y.yylloc.range=this.yylloc.range.slice(0))),d=i[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(i[0].length),this.matched+=i[0],c=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var l in y)this[l]=y[l];return!1}return!1},"test_match"),next:s(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,a,c,d;this._more||(this.yytext="",this.match="");for(var y=this._currentRules(),l=0;la[0].length)){if(a=c,d=l,this.options.backtrack_lexer){if(i=this.test_match(c,y[l]),i!==!1)return i;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(i=this.test_match(a,y[d]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:s(function(){var a=this.next();return a||this.lex()},"lex"),begin:s(function(a){this.conditionStack.push(a)},"begin"),popState:s(function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:s(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:s(function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},"topState"),pushState:s(function(a){this.begin(a)},"pushState"),stateStackSize:s(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:s(function(a,c,d,y){var l=y;switch(d){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return m})();p.lexer=b;function _(){this.yy={}}return s(_,"Parser"),_.prototype=p,p.Parser=_,new _})();X.parser=X;var ht=X;var D={};Nt(D,{addEvent:()=>bt,addSection:()=>ft,addTask:()=>xt,addTaskOrg:()=>kt,clear:()=>yt,default:()=>Lt,getCommonDb:()=>pt,getSections:()=>gt,getTasks:()=>mt});var z="",dt=0,Y=[],G=[],F=[],pt=s(()=>lt,"getCommonDb"),yt=s(function(){Y.length=0,G.length=0,z="",F.length=0,ot()},"clear"),ft=s(function(n){z=n,Y.push(n)},"addSection"),gt=s(function(){return Y},"getSections"),mt=s(function(){let n=ut(),t=100,e=0;for(;!n&&ee.id===dt-1).events.push(n)},"addEvent"),kt=s(function(n){let t={section:z,type:z,description:n,task:n,classes:[]};G.push(t)},"addTaskOrg"),ut=s(function(){let n=s(function(e){return F[e].processed},"compileTask"),t=!0;for(let[e,o]of F.entries())n(e),t=t&&o.processed;return t},"compileTasks"),Lt={clear:yt,getCommonDb:pt,addSection:ft,getSections:gt,getTasks:mt,addTask:xt,addTaskOrg:kt,addEvent:bt};var $t=12,q=s(function(n,t){let e=n.append("rect");return e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),e.attr("rx",t.rx),e.attr("ry",t.ry),t.class!==void 0&&e.attr("class",t.class),e},"drawRect"),Ht=s(function(n,t){let o=n.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),r=n.append("g");r.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),r.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function u(g){let p=Q().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);g.append("path").attr("class","mouth").attr("d",p).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}s(u,"smile");function h(g){let p=Q().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);g.append("path").attr("class","mouth").attr("d",p).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}s(h,"sad");function f(g){g.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s(f,"ambivalent"),t.score>3?u(r):t.score<3?h(r):f(r),o},"drawFace"),At=s(function(n,t){let e=n.append("circle");return e.attr("cx",t.cx),e.attr("cy",t.cy),e.attr("class","actor-"+t.pos),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("r",t.r),e.class!==void 0&&e.attr("class",e.class),t.title!==void 0&&e.append("title").text(t.title),e},"drawCircle"),vt=s(function(n,t){let e=t.text.replace(//gi," "),o=n.append("text");o.attr("x",t.x),o.attr("y",t.y),o.attr("class","legend"),o.style("text-anchor",t.anchor),t.class!==void 0&&o.attr("class",t.class);let r=o.append("tspan");return r.attr("x",t.x+t.textMargin*2),r.text(e),o},"drawText"),Ct=s(function(n,t){function e(r,u,h,f,g){return r+","+u+" "+(r+h)+","+u+" "+(r+h)+","+(u+f-g)+" "+(r+h-g*1.2)+","+(u+f)+" "+r+","+(u+f)}s(e,"genPoints");let o=n.append("polygon");o.attr("points",e(t.x,t.y,50,20,7)),o.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,vt(n,t)},"drawLabel"),Pt=s(function(n,t,e){let o=n.append("g"),r=tt();r.x=t.x,r.y=t.y,r.fill=t.fill,r.width=e.width,r.height=e.height,r.class="journey-section section-type-"+t.num,r.rx=3,r.ry=3,q(o,r),wt(e)(t.text,o,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+t.num},e,t.colour)},"drawSection"),_t=-1,Bt=s(function(n,t,e){let o=t.x+e.width/2,r=n.append("g");_t++,r.append("line").attr("id","task"+_t).attr("x1",o).attr("y1",t.y).attr("x2",o).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Ht(r,{cx:o,cy:300+(5-t.score)*30,score:t.score});let h=tt();h.x=t.x,h.y=t.y,h.fill=t.fill,h.width=e.width,h.height=e.height,h.class="task task-type-"+t.num,h.rx=3,h.ry=3,q(r,h),wt(e)(t.task,r,h.x,h.y,h.width,h.height,{class:"task"},e,t.colour)},"drawTask"),Vt=s(function(n,t){q(n,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},"drawBackgroundRect"),Rt=s(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),tt=s(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),wt=(function(){function n(r,u,h,f,g,p,b,_){let m=u.append("text").attr("x",h+g/2).attr("y",f+p/2+5).style("font-color",_).style("text-anchor","middle").text(r);o(m,b)}s(n,"byText");function t(r,u,h,f,g,p,b,_,m){let{taskFontSize:i,taskFontFamily:a}=_,c=r.split(//gi);for(let d=0;d)/).reverse(),r,u=[],h=1.1,f=e.attr("y"),g=parseFloat(e.attr("dy")),p=e.text(null).append("tspan").attr("x",0).attr("y",f).attr("dy",g+"em");for(let b=0;bt||r==="
    ")&&(u.pop(),p.text(u.join(" ").trim()),r==="
    "?u=[""]:u=[r],p=e.append("tspan").attr("x",0).attr("y",f).attr("dy",h+"em").text(r))})}s(St,"wrap");var zt=s(function(n,t,e,o){let r=e%$t-1,u=n.append("g");t.section=r,u.attr("class",(t.class?t.class+" ":"")+"timeline-node "+("section-"+r));let h=u.append("g"),f=u.append("g"),p=f.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(St,t.width).node().getBBox(),b=o.fontSize?.replace?o.fontSize.replace("px",""):o.fontSize;return t.height=p.height+b*1.1*.5+t.padding,t.height=Math.max(t.height,t.maxHeight),t.width=t.width+2*t.padding,f.attr("transform","translate("+t.width/2+", "+t.padding/2+")"),Ot(h,t,r,o),t},"drawNode"),Ft=s(function(n,t,e){let o=n.append("g"),u=o.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(St,t.width).node().getBBox(),h=e.fontSize?.replace?e.fontSize.replace("px",""):e.fontSize;return o.remove(),u.height+h*1.1*.5+t.padding},"getVirtualNodeHeight"),Ot=s(function(n,t,e){n.append("path").attr("id","node-"+t.id).attr("class","node-bkg node-"+t.type).attr("d",`M0 ${t.height-5} v${-t.height+10} q0,-5 5,-5 h${t.width-10} q5,0 5,5 v${t.height-5} H0 Z`),n.append("line").attr("class","node-line-"+e).attr("x1",0).attr("y1",t.height).attr("x2",t.width).attr("y2",t.height)},"defaultBkg"),A={drawRect:q,drawCircle:At,drawSection:Pt,drawText:vt,drawLabel:Ct,drawTask:Bt,drawBackgroundRect:Vt,getTextObj:Rt,getNoteRect:tt,initGraphics:Wt,drawNode:zt,getVirtualNodeHeight:Ft};var jt=s(function(n,t,e,o){let r=ct(),u=r.timeline?.leftMargin??50;S.debug("timeline",o.db);let h=r.securityLevel,f;h==="sandbox"&&(f=W("#i"+t));let p=(h==="sandbox"?W(f.nodes()[0].contentDocument.body):W("body")).select("#"+t);p.append("g");let b=o.db.getTasks(),_=o.db.getCommonDb().getDiagramTitle();S.debug("task",b),A.initGraphics(p);let m=o.db.getSections();S.debug("sections",m);let i=0,a=0,c=0,d=0,y=50+u,l=50;d=50;let E=0,k=!0;m.forEach(function(L){let v={number:E,descr:L,section:E,width:150,padding:20,maxHeight:i},x=A.getVirtualNodeHeight(p,v,r);S.debug("sectionHeight before draw",x),i=Math.max(i,x+20)});let N=0,C=0;S.debug("tasks.length",b.length);for(let[L,v]of b.entries()){let x={number:L,descr:v,section:v.section,width:150,padding:20,maxHeight:a},T=A.getVirtualNodeHeight(p,x,r);S.debug("taskHeight before draw",T),a=Math.max(a,T+20),N=Math.max(N,v.events.length);let $=0;for(let P of v.events){let U={descr:P,section:v.section,number:v.section,width:150,padding:20,maxHeight:50};$+=A.getVirtualNodeHeight(p,U,r)}v.events.length>0&&($+=(v.events.length-1)*10),C=Math.max(C,$)}S.debug("maxSectionHeight before draw",i),S.debug("maxTaskHeight before draw",a),m&&m.length>0?m.forEach(L=>{let v=b.filter(P=>P.section===L),x={number:E,descr:L,section:E,width:200*Math.max(v.length,1)-50,padding:20,maxHeight:i};S.debug("sectionNode",x);let T=p.append("g"),$=A.drawNode(T,x,E,r);S.debug("sectionNode output",$),T.attr("transform",`translate(${y}, ${d})`),l+=i+50,v.length>0&&Et(p,v,E,y,l,a,r,N,C,i,!1),y+=200*Math.max(v.length,1),l=d,E++}):(k=!1,Et(p,b,E,y,l,a,r,N,C,i,!0));let V=p.node().getBBox();S.debug("bounds",V),_&&p.append("text").text(_).attr("x",V.width/2-u).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),c=k?i+a+150:a+100,p.append("g").attr("class","lineWrapper").append("line").attr("x1",u).attr("y1",c).attr("x2",V.width+3*u).attr("y2",c).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),at(void 0,p,r.timeline?.padding??50,r.timeline?.useMaxWidth??!1)},"draw"),Et=s(function(n,t,e,o,r,u,h,f,g,p,b){for(let _ of t){let m={descr:_.task,section:e,number:e,width:150,padding:20,maxHeight:u};S.debug("taskNode",m);let i=n.append("g").attr("class","taskWrapper"),c=A.drawNode(i,m,e,h).height;if(S.debug("taskHeight after draw",c),i.attr("transform",`translate(${o}, ${r})`),u=Math.max(u,c),_.events){let d=n.append("g").attr("class","lineWrapper"),y=u;r+=100,y=y+Gt(n,_.events,e,o,r,h),r-=100,d.append("line").attr("x1",o+190/2).attr("y1",r+u).attr("x2",o+190/2).attr("y2",r+u+100+g+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}o=o+200,b&&!h.timeline?.disableMulticolor&&e++}r=r-10},"drawTasks"),Gt=s(function(n,t,e,o,r,u){let h=0,f=r;r=r+100;for(let g of t){let p={descr:g,section:e,number:e,width:150,padding:20,maxHeight:50};S.debug("eventNode",p);let b=n.append("g").attr("class","eventWrapper"),m=A.drawNode(b,p,e,u).height;h=h+m,b.attr("transform",`translate(${o}, ${r})`),r=r+10+m}return r=f,h},"drawEvents"),Tt={setConf:s(()=>{},"setConf"),draw:jt};var qt=s(n=>{let t="";for(let e=0;e` - .edge { - stroke-width: 3; - } - ${qt(n)} - .section-root rect, .section-root path, .section-root circle { - fill: ${n.git0}; - } - .section-root text { - fill: ${n.gitBranchLabel0}; - } - .icon-container { - height:100%; - display: flex; - justify-content: center; - align-items: center; - } - .edge { - fill: none; - } - .eventWrapper { - filter: brightness(120%); - } -`,"getStyles"),It=Ut;var ye={db:D,renderer:Tt,parser:ht,styles:It};export{ye as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-GC5UGDFR.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-GC5UGDFR.mjs.map deleted file mode 100644 index 105212e..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-GC5UGDFR.mjs.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../src/diagrams/timeline/parser/timeline.jison", "../../../src/diagrams/timeline/timelineDb.js", "../../../src/diagrams/timeline/svgDraw.js", "../../../src/diagrams/timeline/timelineRenderer.ts", "../../../src/diagrams/timeline/styles.js", "../../../src/diagrams/timeline/timeline-definition.ts"], - "sourcesContent": ["/* 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,8,10,11,12,14,16,17,20,21],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13],$V6=[1,16],$V7=[1,17];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"timeline\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NEWLINE\":10,\"title\":11,\"acc_title\":12,\"acc_title_value\":13,\"acc_descr\":14,\"acc_descr_value\":15,\"acc_descr_multiline_value\":16,\"section\":17,\"period_statement\":18,\"event_statement\":19,\"period\":20,\"event\":21,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"timeline\",6:\"EOF\",8:\"SPACE\",10:\"NEWLINE\",11:\"title\",12:\"acc_title\",13:\"acc_title_value\",14:\"acc_descr\",15:\"acc_descr_value\",16:\"acc_descr_multiline_value\",17:\"section\",20:\"period\",21:\"event\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,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 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.getCommonDb().setDiagramTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 9:\n this.$=$$[$0].trim();yy.getCommonDb().setAccTitle(this.$); \nbreak;\ncase 10: case 11:\n this.$=$$[$0].trim();yy.getCommonDb().setAccDescription(this.$); \nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 15:\nyy.addTask($$[$0],0,'');this.$=$$[$0];\nbreak;\ncase 16:\nyy.addEvent($$[$0].substr(2));this.$=$$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,14:$V3,16:$V4,17:$V5,18:14,19:15,20:$V6,21:$V7},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:18,11:$V1,12:$V2,14:$V3,16:$V4,17:$V5,18:14,19:15,20:$V6,21:$V7},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),{13:[1,19]},{15:[1,20]},o($V0,[2,11]),o($V0,[2,12]),o($V0,[2,13]),o($V0,[2,14]),o($V0,[2,15]),o($V0,[2,16]),o($V0,[2,4]),o($V0,[2,9]),o($V0,[2,10])],\ndefaultActions: {},\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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2:return 10;\nbreak;\ncase 3:/* skip whitespace */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5:return 4;\nbreak;\ncase 6:return 11;\nbreak;\ncase 7: this.begin(\"acc_title\");return 12; \nbreak;\ncase 8: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr\");return 14; \nbreak;\ncase 10: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 11: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 12: this.popState(); \nbreak;\ncase 13:return \"acc_descr_multiline_value\";\nbreak;\ncase 14:return 17;\nbreak;\ncase 15:return 21;\nbreak;\ncase 16:return 20;\nbreak;\ncase 17:return 6;\nbreak;\ncase 18:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:timeline\\b)/i,/^(?:title\\s[^\\n]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:section\\s[^:\\n]+)/i,/^(?::\\s(?:[^:\\n]|:(?!\\s))+)/i,/^(?:[^#:\\n]+)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[12,13],\"inclusive\":false},\"acc_descr\":{\"rules\":[10],\"inclusive\":false},\"acc_title\":{\"rules\":[8],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,9,11,14,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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import * as commonDb from '../common/commonDb.js';\nlet currentSection = '';\nlet currentTaskId = 0;\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const getCommonDb = () => commonDb;\n\nexport const clear = function () {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n rawTasks.length = 0;\n commonDb.clear();\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nexport const addTask = function (period, length, event) {\n const rawTask = {\n id: currentTaskId++,\n section: currentSection,\n type: currentSection,\n task: period,\n score: length ? length : 0,\n //if event is defined, then add it the events array\n events: event ? [event] : [],\n };\n rawTasks.push(rawTask);\n};\n\nexport const addEvent = function (event) {\n // fetch current task with currentTaskId\n const currentTask = rawTasks.find((task) => task.id === currentTaskId - 1);\n //add event to the events array\n currentTask.events.push(event);\n};\n\nexport const addTaskOrg = function (descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n tasks.push(newTask);\n};\n\n/**\n * Compiles the raw tasks into a list of tasks with events\n * @returns {boolean} true if all items are processed\n * @private\n * @memberof timelineDb\n */\nconst compileTasks = function () {\n const compileTask = function (pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\nexport default {\n clear,\n getCommonDb,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n addEvent,\n};\n", "import { arc as d3arc, select } from 'd3';\nconst MAX_SECTIONS = 12;\n\nexport const drawRect = function (elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (rectData.class !== undefined) {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawFace = function (element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n /** @param {any} face */\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n /** @param {any} face */\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n /** @param {any} face */\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function (element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('class', 'actor-' + circleData.pos);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (circleElement.class !== undefined) {\n circleElement.attr('class', circleElement.class);\n }\n\n if (circleData.title !== undefined) {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(//gi, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.attr('class', 'legend');\n\n textElem.style('text-anchor', textData.anchor);\n\n if (textData.class !== undefined) {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.text(nText);\n\n return textElem;\n};\n\nexport const drawLabel = function (elem, txtObject) {\n /**\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} cut\n */\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function (elem, section, conf) {\n const g = elem.append('g');\n\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem The HTML element\n * @param {any} task The task to render\n * @param {any} conf The global configuration\n */\nexport const drawTask = function (elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', 'task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score,\n });\n\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem The html element\n * @param {any} bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect',\n });\n rectElem.lower();\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n 'text-anchor': 'start',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n };\n};\n\nexport const getNoteRect = function () {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0,\n };\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} colour\n */\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n * @param {any} colour\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(//gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function (graphics) {\n graphics\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\n/**\n * @param {string} text The text to be wrapped\n * @param {number} width The max width of the text\n */\nfunction wrap(text, width) {\n text.each(function () {\n var text = select(this),\n words = text\n .text()\n .split(/(\\s+|
    )/)\n .reverse(),\n word,\n line = [],\n lineHeight = 1.1, // ems\n y = text.attr('y'),\n dy = parseFloat(text.attr('dy')),\n tspan = text\n .text(null)\n .append('tspan')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', dy + 'em');\n for (let j = 0; j < words.length; j++) {\n word = words[words.length - 1 - j];\n line.push(word);\n tspan.text(line.join(' ').trim());\n if (tspan.node().getComputedTextLength() > width || word === '
    ') {\n line.pop();\n tspan.text(line.join(' ').trim());\n if (word === '
    ') {\n line = [''];\n } else {\n line = [word];\n }\n\n tspan = text\n .append('tspan')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', lineHeight + 'em')\n .text(word);\n }\n }\n });\n}\n\nexport const drawNode = function (elem, node, fullSection, conf) {\n const section = (fullSection % MAX_SECTIONS) - 1;\n const nodeElem = elem.append('g');\n node.section = section;\n nodeElem.attr(\n 'class',\n (node.class ? node.class + ' ' : '') + 'timeline-node ' + ('section-' + section)\n );\n const bkgElem = nodeElem.append('g');\n\n // Create the wrapped text element\n const textElem = nodeElem.append('g');\n\n const txt = textElem\n .append('text')\n .text(node.descr)\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize?.replace ? conf.fontSize.replace('px', '') : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.height = Math.max(node.height, node.maxHeight);\n node.width = node.width + 2 * node.padding;\n\n textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + node.padding / 2 + ')');\n\n // Create the background element\n defaultBkg(bkgElem, node, section, conf);\n\n return node;\n};\n\nexport const getVirtualNodeHeight = function (elem, node, conf) {\n const textElem = elem.append('g');\n const txt = textElem\n .append('text')\n .text(node.descr)\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize?.replace ? conf.fontSize.replace('px', '') : conf.fontSize;\n textElem.remove();\n return bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n};\n\nconst defaultBkg = function (elem, node, section) {\n const rd = 5;\n elem\n .append('path')\n .attr('id', 'node-' + node.id)\n .attr('class', 'node-bkg node-' + node.type)\n .attr(\n 'd',\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${\n node.width - 2 * rd\n } q5,0 5,5 v${node.height - rd} H0 Z`\n );\n\n elem\n .append('line')\n .attr('class', 'node-line-' + section)\n .attr('x1', 0)\n .attr('y1', node.height)\n .attr('x2', node.width)\n .attr('y2', node.height);\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics,\n drawNode,\n getVirtualNodeHeight,\n};\n", "// @ts-nocheck - don't check until handle it\nimport type { Selection } from 'd3';\nimport { select } from 'd3';\nimport svgDraw from './svgDraw.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport type { Diagram } from '../../Diagram.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\ninterface Block {\n number: number;\n descr: TDesc;\n section: TSection;\n width: number;\n padding: number;\n maxHeight: number;\n}\n\ninterface TimelineTask {\n id: number;\n section: string;\n type: string;\n task: string;\n score: number;\n events: string[];\n}\nexport const draw = function (text: string, id: string, version: string, diagObj: Diagram) {\n //1. Fetch the configuration\n const conf = getConfig();\n const LEFT_MARGIN = conf.timeline?.leftMargin ?? 50;\n\n log.debug('timeline', diagObj.db);\n\n const securityLevel = conf.securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n const svg = root.select('#' + id);\n\n svg.append('g');\n\n //4. Fetch the diagram data\n // @ts-expect-error - db not typed yet\n const tasks: TimelineTask[] = diagObj.db.getTasks();\n // @ts-expect-error - db not typed yet\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n log.debug('task', tasks);\n\n //5. Initialize the diagram\n svgDraw.initGraphics(svg);\n\n // fetch Sections\n // @ts-expect-error - db not typed yet\n const sections: string[] = diagObj.db.getSections();\n log.debug('sections', sections);\n\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n //let sectionBeginX = 0;\n let depthY = 0;\n let sectionBeginY = 0;\n let masterX = 50 + LEFT_MARGIN;\n //sectionBeginX = masterX;\n let masterY = 50;\n sectionBeginY = 50;\n //draw sections\n let sectionNumber = 0;\n let hasSections = true;\n\n //Calculate the max height of the sections\n sections.forEach(function (section: string) {\n const sectionNode: Block = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 150,\n padding: 20,\n maxHeight: maxSectionHeight,\n };\n const sectionHeight = svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n log.debug('sectionHeight before draw', sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n });\n\n //tasks length and maxEventCount\n let maxEventCount = 0;\n let maxEventLineLength = 0;\n log.debug('tasks.length', tasks.length);\n //calculate max task height\n // for loop till tasks.length\n\n for (const [i, task] of tasks.entries()) {\n const taskNode: Block = {\n number: i,\n descr: task,\n section: task.section,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight,\n };\n const taskHeight = svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n log.debug('taskHeight before draw', taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n\n //calculate maxEventCount\n maxEventCount = Math.max(maxEventCount, task.events.length);\n //calculate maxEventLineLength\n let maxEventLineLengthTemp = 0;\n for (const event of task.events) {\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: 150,\n padding: 20,\n maxHeight: 50,\n };\n maxEventLineLengthTemp += svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n }\n // Add spacing between events (10px per event except the last one)\n if (task.events.length > 0) {\n maxEventLineLengthTemp += (task.events.length - 1) * 10;\n }\n maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n }\n\n log.debug('maxSectionHeight before draw', maxSectionHeight);\n log.debug('maxTaskHeight before draw', maxTaskHeight);\n\n if (sections && sections.length > 0) {\n sections.forEach((section) => {\n //filter task where tasks.section == section\n const tasksForSection = tasks.filter((task) => task.section === section);\n\n const sectionNode: Block = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 200 * Math.max(tasksForSection.length, 1) - 50,\n padding: 20,\n maxHeight: maxSectionHeight,\n };\n log.debug('sectionNode', sectionNode);\n const sectionNodeWrapper = svg.append('g');\n const node = svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n log.debug('sectionNode output', node);\n\n sectionNodeWrapper.attr('transform', `translate(${masterX}, ${sectionBeginY})`);\n\n masterY += maxSectionHeight + 50;\n\n //draw tasks for this section\n if (tasksForSection.length > 0) {\n drawTasks(\n svg,\n tasksForSection,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n false\n );\n }\n // todo replace with total width of section and its tasks\n masterX += 200 * Math.max(tasksForSection.length, 1);\n\n masterY = sectionBeginY;\n sectionNumber++;\n });\n } else {\n //draw tasks\n hasSections = false;\n drawTasks(\n svg,\n tasks,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n true\n );\n }\n\n // Get BBox of the diagram\n const box = svg.node().getBBox();\n log.debug('bounds', box);\n\n if (title) {\n svg\n .append('text')\n .text(title)\n .attr('x', box.width / 2 - LEFT_MARGIN)\n .attr('font-size', '4ex')\n .attr('font-weight', 'bold')\n .attr('y', 20);\n }\n //5. Draw the diagram\n depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n\n const lineWrapper = svg.append('g').attr('class', 'lineWrapper');\n // Draw activity line\n lineWrapper\n .append('line')\n .attr('x1', LEFT_MARGIN)\n .attr('y1', depthY) // One section head + one task + margins\n .attr('x2', box.width + 3 * LEFT_MARGIN) // Subtract stroke width so arrow point is retained\n .attr('y2', depthY)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)');\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(\n undefined,\n svg,\n conf.timeline?.padding ?? 50,\n conf.timeline?.useMaxWidth ?? false\n );\n\n // addSVGAccessibilityFields(diagObj.db, diagram, id);\n};\n\nexport const drawTasks = function (\n diagram: Selection,\n tasks: TimelineTask[],\n sectionColor: number,\n masterX: number,\n masterY: number,\n maxTaskHeight: number,\n conf: MermaidConfig,\n maxEventCount: number,\n maxEventLineLength: number,\n maxSectionHeight: number,\n isWithoutSections: boolean\n) {\n // Draw the tasks\n for (const task of tasks) {\n // create node from task\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight,\n };\n\n log.debug('taskNode', taskNode);\n // create task wrapper\n\n const taskWrapper = diagram.append('g').attr('class', 'taskWrapper');\n const node = svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf);\n const taskHeight = node.height;\n //log task height\n log.debug('taskHeight after draw', taskHeight);\n taskWrapper.attr('transform', `translate(${masterX}, ${masterY})`);\n\n // update max task height\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n\n // if task has events, draw them\n if (task.events) {\n // draw a line between the task and the events\n const lineWrapper = diagram.append('g').attr('class', 'lineWrapper');\n let lineLength = maxTaskHeight;\n //add margin to task\n masterY += 100;\n lineLength =\n lineLength + drawEvents(diagram, task.events, sectionColor, masterX, masterY, conf);\n masterY -= 100;\n\n lineWrapper\n .append('line')\n .attr('x1', masterX + 190 / 2)\n .attr('y1', masterY + maxTaskHeight) // Start from bottom of task box\n .attr('x2', masterX + 190 / 2) // Same x coordinate for vertical line\n .attr('y2', masterY + maxTaskHeight + 100 + maxEventLineLength + 100) // End at consistent depth with ample padding for visible dashed lines and arrowheads\n .attr('stroke-width', 2)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)')\n .attr('stroke-dasharray', '5,5');\n }\n\n masterX = masterX + 200;\n if (isWithoutSections && !conf.timeline?.disableMulticolor) {\n sectionColor++;\n }\n }\n\n // reset Y coordinate for next section\n masterY = masterY - 10;\n};\n\nexport const drawEvents = function (\n diagram: Selection,\n events: string[],\n sectionColor: number,\n masterX: number,\n masterY: number,\n conf: MermaidConfig\n) {\n let maxEventHeight = 0;\n const eventBeginY = masterY;\n masterY = masterY + 100;\n // Draw the events\n for (const event of events) {\n // create node from event\n const eventNode: Block = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: 50,\n };\n\n //log task node\n log.debug('eventNode', eventNode);\n // create event wrapper\n const eventWrapper = diagram.append('g').attr('class', 'eventWrapper');\n const node = svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf);\n const eventHeight = node.height;\n maxEventHeight = maxEventHeight + eventHeight;\n eventWrapper.attr('transform', `translate(${masterX}, ${masterY})`);\n masterY = masterY + 10 + eventHeight;\n }\n // set masterY back to eventBeginY\n masterY = eventBeginY;\n return maxEventHeight;\n};\n\nexport default {\n setConf: () => {\n // no-op\n },\n draw,\n};\n", "import { darken, lighten, isDark } from 'khroma';\n\nconst genSections = (options) => {\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options['lineColor' + i] = options['lineColor' + i] || options['cScaleInv' + i];\n if (isDark(options['lineColor' + i])) {\n options['lineColor' + i] = lighten(options['lineColor' + i], 20);\n } else {\n options['lineColor' + i] = darken(options['lineColor' + i], 20);\n }\n }\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = '' + (17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${\n i - 1\n } path {\n fill: ${options['cScale' + i]};\n }\n .section-${i - 1} text {\n fill: ${options['cScaleLabel' + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options['cScaleLabel' + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options['cScale' + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options['cScaleInv' + i]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${options['cScaleLabel' + i]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections;\n};\n\nconst getStyles = (options) =>\n `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`;\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/timeline.jison';\nimport * as db from './timelineDb.js';\nimport renderer from './timelineRenderer.js';\nimport styles from './styles.js';\n\nexport const diagram = {\n db,\n renderer,\n parser,\n styles,\n};\n"], - "mappings": "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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "timeline_default", "parser", "timelineDb_exports", "__export", "addEvent", "addSection", "addTask", "addTaskOrg", "clear", "timelineDb_default", "getCommonDb", "getSections", "getTasks", "currentSection", "currentTaskId", "sections", "tasks", "rawTasks", "getCommonDb", "__name", "commonDb_exports", "clear", "addSection", "txt", "getSections", "getTasks", "allItemsProcessed", "compileTasks", "maxDepth", "iterationCount", "addTask", "period", "length", "event", "rawTask", "addEvent", "task", "addTaskOrg", "descr", "newTask", "compileTask", "pos", "allProcessed", "i", "timelineDb_default", "MAX_SECTIONS", "drawRect", "__name", "elem", "rectData", "rectElem", "drawFace", "element", "faceData", "circleElement", "face", "smile", "arc", "arc_default", "sad", "ambivalent", "drawCircle", "circleData", "drawText", "textData", "nText", "textElem", "span", "drawLabel", "txtObject", "genPoints", "x", "y", "width", "height", "cut", "polygon", "drawSection", "section", "conf", "g", "rect", "getNoteRect", "_drawTextCandidateFunc", "taskCount", "drawTask", "task", "center", "drawBackgroundRect", "bounds", "getTextObj", "byText", "content", "textAttrs", "colour", "text", "_setTextAttrs", "byTspan", "taskFontSize", "taskFontFamily", "lines", "i", "dy", "byFo", "body", "toText", "fromTextAttrsDict", "key", "initGraphics", "graphics", "wrap", "select_default", "words", "word", "line", "lineHeight", "tspan", "j", "drawNode", "node", "fullSection", "nodeElem", "bkgElem", "bbox", "fontSize", "defaultBkg", "getVirtualNodeHeight", "svgDraw_default", "draw", "__name", "text", "id", "version", "diagObj", "conf", "getConfig", "LEFT_MARGIN", "log", "securityLevel", "sandboxElement", "select_default", "svg", "tasks", "title", "svgDraw_default", "sections", "maxSectionHeight", "maxTaskHeight", "depthY", "sectionBeginY", "masterX", "masterY", "sectionNumber", "hasSections", "section", "sectionNode", "sectionHeight", "maxEventCount", "maxEventLineLength", "i", "task", "taskNode", "taskHeight", "maxEventLineLengthTemp", "event", "eventNode", "tasksForSection", "sectionNodeWrapper", "node", "drawTasks", "box", "setupGraphViewbox", "diagram", "sectionColor", "isWithoutSections", "taskWrapper", "lineWrapper", "lineLength", "drawEvents", "events", "maxEventHeight", "eventBeginY", "eventWrapper", "eventHeight", "timelineRenderer_default", "genSections", "__name", "options", "sections", "i", "is_dark_default", "lighten_default", "darken_default", "sw", "getStyles", "styles_default", "diagram", "timelineDb_exports", "timelineRenderer_default", "timeline_default", "styles_default"] -} diff --git a/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-O6YCAMPW.mjs b/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-O6YCAMPW.mjs new file mode 100644 index 0000000..d5459a7 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-O6YCAMPW.mjs @@ -0,0 +1,120 @@ +import{a as kt}from"./chunk-LRIF4GLE.mjs";import{n as bt}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{P as J,S as yt,Z as xt,_ as Q,d as gt,e as ft,f as mt,t as it}from"./chunk-67TQ5CYL.mjs";import{F as st,b as w,h as j}from"./chunk-7W6UQGC5.mjs";import{a as s,c as Xt}from"./chunk-AQ6EADP3.mjs";var at=(function(){var e=s(function(b,i,d,l){for(d=d||{},l=b.length;l--;d[b[l]]=i);return d},"o"),t=[6,11,13,14,15,17,19,20,23,24],n=[1,12],a=[1,13],r=[1,14],h=[1,15],c=[1,16],o=[1,19],f=[1,20],g={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",7:"timeline",8:"timeline_lr",9:"timeline_td",11:"SPACE",13:"NEWLINE",14:"title",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",23:"period",24:"event"},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:s(function(i,d,l,p,y,u,v){var k=u.length-1;switch(y){case 1:return u[k-1];case 3:p.setDirection("LR");break;case 4:p.setDirection("TD");break;case 5:this.$=[];break;case 6:u[k-1].push(u[k]),this.$=u[k-1];break;case 7:case 8:this.$=u[k];break;case 9:case 10:this.$=[];break;case 11:p.getCommonDb().setDiagramTitle(u[k].substr(6)),this.$=u[k].substr(6);break;case 12:this.$=u[k].trim(),p.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=u[k].trim(),p.getCommonDb().setAccDescription(this.$);break;case 15:p.addSection(u[k].substr(8)),this.$=u[k].substr(8);break;case 18:p.addTask(u[k],0,""),this.$=u[k];break;case 19:p.addEvent(u[k].substr(2)),this.$=u[k];break}},"anonymous"),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},e(t,[2,5],{5:6}),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:n,15:a,17:r,19:h,20:c,21:17,22:18,23:o,24:f},e(t,[2,10],{1:[2,1]}),e(t,[2,6]),{12:21,14:n,15:a,17:r,19:h,20:c,21:17,22:18,23:o,24:f},e(t,[2,8]),e(t,[2,9]),e(t,[2,11]),{16:[1,22]},{18:[1,23]},e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,7]),e(t,[2,12]),e(t,[2,13])],defaultActions:{},parseError:s(function(i,d){if(d.recoverable)this.trace(i);else{var l=new Error(i);throw l.hash=d,l}},"parseError"),parse:s(function(i){var d=this,l=[0],p=[],y=[null],u=[],v=this.table,k="",H=0,V=0,R=0,O=2,L=1,C=u.slice.call(arguments,1),T=Object.create(this.lexer),B={yy:{}};for(var P in this.yy)Object.prototype.hasOwnProperty.call(this.yy,P)&&(B.yy[P]=this.yy[P]);T.setInput(i,B.yy),B.yy.lexer=T,B.yy.parser=this,typeof T.yylloc>"u"&&(T.yylloc={});var D=T.yylloc;u.push(D);var $=T.options&&T.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _(W){l.length=l.length-2*W,y.length=y.length-W,u.length=u.length-W}s(_,"popStack");function E(){var W;return W=p.pop()||T.lex()||L,typeof W!="number"&&(W instanceof Array&&(p=W,W=p.pop()),W=d.symbols_[W]||W),W}s(E,"lex");for(var S,I,A,N,nt,X,z={},Z,F,pt,q;;){if(A=l[l.length-1],this.defaultActions[A]?N=this.defaultActions[A]:((S===null||typeof S>"u")&&(S=E()),N=v[A]&&v[A][S]),typeof N>"u"||!N.length||!N[0]){var rt="";q=[];for(Z in v[A])this.terminals_[Z]&&Z>O&&q.push("'"+this.terminals_[Z]+"'");T.showPosition?rt="Parse error on line "+(H+1)+`: +`+T.showPosition()+` +Expecting `+q.join(", ")+", got '"+(this.terminals_[S]||S)+"'":rt="Parse error on line "+(H+1)+": Unexpected "+(S==L?"end of input":"'"+(this.terminals_[S]||S)+"'"),this.parseError(rt,{text:T.match,token:this.terminals_[S]||S,line:T.yylineno,loc:D,expected:q})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+S);switch(N[0]){case 1:l.push(S),y.push(T.yytext),u.push(T.yylloc),l.push(N[1]),S=null,I?(S=I,I=null):(V=T.yyleng,k=T.yytext,H=T.yylineno,D=T.yylloc,R>0&&R--);break;case 2:if(F=this.productions_[N[1]][1],z.$=y[y.length-F],z._$={first_line:u[u.length-(F||1)].first_line,last_line:u[u.length-1].last_line,first_column:u[u.length-(F||1)].first_column,last_column:u[u.length-1].last_column},$&&(z._$.range=[u[u.length-(F||1)].range[0],u[u.length-1].range[1]]),X=this.performAction.apply(z,[k,V,H,B.yy,N[1],y,u].concat(C)),typeof X<"u")return X;F&&(l=l.slice(0,-1*F*2),y=y.slice(0,-1*F),u=u.slice(0,-1*F)),l.push(this.productions_[N[1]][0]),y.push(z.$),u.push(z._$),pt=v[l[l.length-2]][l[l.length-1]],l.push(pt);break;case 3:return!0}}return!0},"parse")},x=(function(){var b={EOF:1,parseError:s(function(d,l){if(this.yy.parser)this.yy.parser.parseError(d,l);else throw new Error(d)},"parseError"),setInput:s(function(i,d){return this.yy=d||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:s(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var d=i.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:s(function(i){var d=i.length,l=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d),this.offset-=d;var p=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var y=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===p.length?this.yylloc.first_column:0)+p[p.length-l.length].length-l[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-d]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(i){this.unput(this.match.slice(i))},"less"),pastInput:s(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var i=this.pastInput(),d=new Array(i.length+1).join("-");return i+this.upcomingInput()+` +`+d+"^"},"showPosition"),test_match:s(function(i,d){var l,p,y;if(this.options.backtrack_lexer&&(y={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(y.yylloc.range=this.yylloc.range.slice(0))),p=i[0].match(/(?:\r\n?|\n).*/g),p&&(this.yylineno+=p.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:p?p[p.length-1].length-p[p.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(i[0].length),this.matched+=i[0],l=this.performAction.call(this,this.yy,this,d,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var u in y)this[u]=y[u];return!1}return!1},"test_match"),next:s(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,d,l,p;this._more||(this.yytext="",this.match="");for(var y=this._currentRules(),u=0;ud[0].length)){if(d=l,p=u,this.options.backtrack_lexer){if(i=this.test_match(l,y[u]),i!==!1)return i;if(this._backtrack){d=!1;continue}else return!1}else if(!this.options.flex)break}return d?(i=this.test_match(d,y[p]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:s(function(){var d=this.next();return d||this.lex()},"lex"),begin:s(function(d){this.conditionStack.push(d)},"begin"),popState:s(function(){var d=this.conditionStack.length-1;return d>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:s(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:s(function(d){return d=this.conditionStack.length-1-Math.abs(d||0),d>=0?this.conditionStack[d]:"INITIAL"},"topState"),pushState:s(function(d){this.begin(d)},"pushState"),stateStackSize:s(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:s(function(d,l,p,y){var u=y;switch(p){case 0:break;case 1:break;case 2:return 13;case 3:break;case 4:break;case 5:return 8;case 6:return 9;case 7:return 7;case 8:return 14;case 9:return this.begin("acc_title"),15;break;case 10:return this.popState(),"acc_title_value";break;case 11:return this.begin("acc_descr"),17;break;case 12:return this.popState(),"acc_descr_value";break;case 13:this.begin("acc_descr_multiline");break;case 14:this.popState();break;case 15:return"acc_descr_multiline_value";case 16:return 20;case 17:return 24;case 18:return 23;case 19:return 6;case 20:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline[ \t]+LR\b)/i,/^(?:timeline[ \t]+TD\b)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[14,15],inclusive:!1},acc_descr:{rules:[12],inclusive:!1},acc_title:{rules:[10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,13,16,17,18,19,20],inclusive:!0}}};return b})();g.lexer=x;function m(){this.yy={}}return s(m,"Parser"),m.prototype=g,g.Parser=m,new m})();at.parser=at;var _t=at;var lt={};Xt(lt,{addEvent:()=>Lt,addSection:()=>Nt,addTask:()=>Mt,addTaskOrg:()=>At,clear:()=>Tt,default:()=>Zt,getCommonDb:()=>St,getDirection:()=>$t,getSections:()=>Ht,getTasks:()=>It,setDirection:()=>Et});var K="",vt=0,ot="LR",ct=[],Y=[],U=[],St=s(()=>xt,"getCommonDb"),Tt=s(function(){ct.length=0,Y.length=0,K="",U.length=0,ot="LR",yt()},"clear"),Et=s(function(e){ot=e},"setDirection"),$t=s(function(){return ot},"getDirection"),Nt=s(function(e){K=e,ct.push(e)},"addSection"),Ht=s(function(){return ct},"getSections"),It=s(function(){let e=wt(),t=100,n=0;for(;!e&&nn.id===vt-1).events.push(e)},"addEvent"),At=s(function(e){let t={section:K,type:K,description:e,task:e,classes:[]};Y.push(t)},"addTaskOrg"),wt=s(function(){let e=s(function(n){return U[n].processed},"compileTask"),t=!0;for(let[n,a]of U.entries())e(n),t=t&&a.processed;return t},"compileTasks"),Zt={clear:Tt,getCommonDb:St,getDirection:$t,setDirection:Et,addSection:Nt,getSections:Ht,getTasks:It,addTask:Mt,addTaskOrg:At,addEvent:Lt};var Bt=0,tt=s(function(e,t){let n=e.append("rect");return n.attr("x",t.x),n.attr("y",t.y),n.attr("fill",t.fill),n.attr("stroke",t.stroke),n.attr("width",t.width),n.attr("height",t.height),n.attr("rx",t.rx),n.attr("ry",t.ry),t.class!==void 0&&n.attr("class",t.class),n},"drawRect"),qt=s(function(e,t){let a=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),r=e.append("g");r.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),r.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function h(f){let g=st().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);f.append("path").attr("class","mouth").attr("d",g).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}s(h,"smile");function c(f){let g=st().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);f.append("path").attr("class","mouth").attr("d",g).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}s(c,"sad");function o(f){f.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s(o,"ambivalent"),t.score>3?h(r):t.score<3?c(r):o(r),a},"drawFace"),Jt=s(function(e,t){let n=e.append("circle");return n.attr("cx",t.cx),n.attr("cy",t.cy),n.attr("class","actor-"+t.pos),n.attr("fill",t.fill),n.attr("stroke",t.stroke),n.attr("r",t.r),n.class!==void 0&&n.attr("class",n.class),t.title!==void 0&&n.append("title").text(t.title),n},"drawCircle"),Ct=s(function(e,t){let n=t.text.replace(//gi," "),a=e.append("text");a.attr("x",t.x),a.attr("y",t.y),a.attr("class","legend"),a.style("text-anchor",t.anchor),t.class!==void 0&&a.attr("class",t.class);let r=a.append("tspan");return r.attr("x",t.x+t.textMargin*2),r.text(n),a},"drawText"),Qt=s(function(e,t){function n(r,h,c,o,f){return r+","+h+" "+(r+c)+","+h+" "+(r+c)+","+(h+o-f)+" "+(r+c-f*1.2)+","+(h+o)+" "+r+","+(h+o)}s(n,"genPoints");let a=e.append("polygon");a.attr("points",n(t.x,t.y,50,20,7)),a.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,Ct(e,t)},"drawLabel"),Yt=s(function(e,t,n){let a=e.append("g"),r=dt();r.x=t.x,r.y=t.y,r.fill=t.fill,r.width=n.width,r.height=n.height,r.class="journey-section section-type-"+t.num,r.rx=3,r.ry=3,tt(a,r),Wt(n)(t.text,a,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+t.num},n,t.colour)},"drawSection"),ht=-1,te=s(function(e,t,n,a){let r=t.x+n.width/2,h=e.append("g");ht++,h.append("line").attr("id",a+"-task"+ht).attr("x1",r).attr("y1",t.y).attr("x2",r).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),qt(h,{cx:r,cy:300+(5-t.score)*30,score:t.score});let o=dt();o.x=t.x,o.y=t.y,o.fill=t.fill,o.width=n.width,o.height=n.height,o.class="task task-type-"+t.num,o.rx=3,o.ry=3,tt(h,o),Wt(n)(t.task,h,o.x,o.y,o.width,o.height,{class:"task"},n,t.colour)},"drawTask"),ee=s(function(e,t){tt(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},"drawBackgroundRect"),ne=s(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),dt=s(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),Wt=(function(){function e(r,h,c,o,f,g,x,m){let b=h.append("text").attr("x",c+f/2).attr("y",o+g/2+5).style("font-color",m).style("text-anchor","middle").text(r);a(b,x)}s(e,"byText");function t(r,h,c,o,f,g,x,m,b){let{taskFontSize:i,taskFontFamily:d}=m,l=r.split(//gi);for(let p=0;p)/).reverse(),r,h=[],c=1.1,o=n.attr("y"),f=parseFloat(n.attr("dy")),g=n.text(null).append("tspan").attr("x",0).attr("y",o).attr("dy",f+"em");for(let x=0;xt||r==="
    ")&&(h.pop(),g.text(h.join(" ").trim()),r==="
    "?h=[""]:h=[r],g=n.append("tspan").attr("x",0).attr("y",o).attr("dy",c+"em").text(r))})}s(Vt,"wrap");var ie=s(function(e,t,n,a,r,h=!1){let{theme:c,look:o}=a,f=c?.includes("redux"),g=a?.themeVariables?.THEME_COLOR_LIMIT??12,x=n%g-1,m=e.append("g");t.section=x,m.attr("class",(t.class?t.class+" ":"")+"timeline-node "+("section-"+x));let b=m.append("g"),i=m.append("g"),l=i.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(Vt,t.width).node().getBBox(),p=a.fontSize?.replace?a.fontSize.replace("px",""):a.fontSize;if(t.height=l.height+p*1.1*.5+t.padding,t.height=Math.max(t.height,t.maxHeight),t.width=t.width+2*t.padding,i.attr("transform","translate("+t.width/2+", "+t.padding/2+")"),f&&i.attr("transform",`translate(${t.width/2}, ${h?t.padding/2+3:t.padding})`),ae(b,t,x,r,a),o==="neo"&&(m.attr("data-look","neo"),f)){let y=c.includes("dark"),u=e.node()?.ownerSVGElement??e.node(),v=j(u),k=v.attr("id")??"",H=k?`${k}-drop-shadow`:"drop-shadow";if(v.select(`#${H}`).empty()){let V=v.select("defs");(V.empty()?v.append("defs"):V).append("filter").attr("id",H).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity",y?"0.2":"0.06").attr("flood-color",y?"#FFFFFF":"#000000")}}return t},"drawNode"),se=s(function(e,t,n){let a=e.append("g"),h=a.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(Vt,t.width).node().getBBox(),c=n.fontSize?.replace?n.fontSize.replace("px",""):n.fontSize;return a.remove(),h.height+c*1.1*.5+t.padding},"getVirtualNodeHeight"),ae=s(function(e,t,n,a,r){let{theme:h}=r,c=h?.includes("redux")?0:5,o=5,f=c>0?`M0 ${t.height-o} v${-t.height+2*o} q0,-${c},${c},-${c} h${t.width-2*o} q${c},0,${c},${c} v${t.height-o} H0 Z`:`M0 ${t.height-o} v${-(t.height-o)} h${t.width} v${t.height} H0 Z`;e.append("path").attr("id",a+"-node-"+Bt++).attr("class","node-bkg node-"+t.type).attr("d",f),h?.includes("redux")||e.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",t.height).attr("x2",t.width).attr("y2",t.height)},"defaultBkg"),M={drawRect:tt,drawCircle:Jt,drawSection:Yt,drawText:Ct,drawLabel:Qt,drawTask:te,drawBackgroundRect:ee,getTextObj:ne,getNoteRect:dt,initGraphics:re,drawNode:ie,getVirtualNodeHeight:se};var oe=s(function(e,t,n,a){let r=Q(),{look:h,theme:c,themeVariables:o}=r,{useGradient:f,gradientStart:g,gradientStop:x}=o,m=r.timeline?.leftMargin??50;w.debug("timeline",a.db);let b=r.securityLevel,i;b==="sandbox"&&(i=j("#i"+t));let l=(b==="sandbox"?j(i.nodes()[0].contentDocument.body):j("body")).select("#"+t);l.append("g");let p=a.db.getTasks(),y=a.db.getCommonDb().getDiagramTitle();w.debug("task",p),M.initGraphics(l,t);let u=a.db.getSections();w.debug("sections",u);let v=0,k=0,H=0,V=0,R=50+m,O=50;V=50;let L=0,C=!0;u.forEach(function($){let _={number:L,descr:$,section:L,width:150,padding:20,maxHeight:v},E=M.getVirtualNodeHeight(l,_,r);w.debug("sectionHeight before draw",E),v=Math.max(v,E+20)});let T=0,B=0;w.debug("tasks.length",p.length);for(let[$,_]of p.entries()){let E={number:$,descr:_,section:_.section,width:150,padding:20,maxHeight:k},S=M.getVirtualNodeHeight(l,E,r);w.debug("taskHeight before draw",S),k=Math.max(k,S+20),T=Math.max(T,_.events.length);let I=0;for(let A of _.events){let N={descr:A,section:_.section,number:_.section,width:150,padding:20,maxHeight:50};I+=M.getVirtualNodeHeight(l,N,r)}_.events.length>0&&(I+=(_.events.length-1)*10),B=Math.max(B,I)}w.debug("maxSectionHeight before draw",v),w.debug("maxTaskHeight before draw",k),u&&u.length>0?u.forEach($=>{let _=p.filter(A=>A.section===$),E={number:L,descr:$,section:L,width:200*Math.max(_.length,1)-50,padding:20,maxHeight:v};w.debug("sectionNode",E);let S=l.append("g"),I=M.drawNode(S,E,L,r,t);w.debug("sectionNode output",I),S.attr("transform",`translate(${R}, ${V})`),O+=v+50,_.length>0&&Rt(l,_,L,R,O,k,r,T,B,v,!1,t),R+=200*Math.max(_.length,1),O=V,L++}):(C=!1,Rt(l,p,L,R,O,k,r,T,B,v,!0,t));let P=l.node().getBBox();if(w.debug("bounds",P),y&&l.append("text").text(y).attr("x",h==="neo"?P.x*2+m:P.width/2-m).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),H=C?v+k+150:k+100,l.append("g").attr("class","lineWrapper").append("line").attr("x1",m).attr("y1",H).attr("x2",P.width+3*m).attr("y2",H).attr("stroke-width",4).attr("stroke","black").attr("marker-end",`url(#${t}-arrowhead)`),h==="neo"&&f&&c!=="neutral"){let $=l.select("defs"),E=($.empty()?l.append("defs"):$).append("linearGradient").attr("id",l.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");E.append("stop").attr("offset","0%").attr("stop-color",g).attr("stop-opacity",1),E.append("stop").attr("offset","100%").attr("stop-color",x).attr("stop-opacity",1)}J(void 0,l,r.timeline?.padding??50,r.timeline?.useMaxWidth??!1)},"draw"),Rt=s(function(e,t,n,a,r,h,c,o,f,g,x,m){for(let b of t){let i={descr:b.task,section:n,number:n,width:150,padding:20,maxHeight:h};w.debug("taskNode",i);let d=e.append("g").attr("class","taskWrapper"),p=M.drawNode(d,i,n,c,m).height;if(w.debug("taskHeight after draw",p),d.attr("transform",`translate(${a}, ${r})`),h=Math.max(h,p),b.events){let y=e.append("g").attr("class","lineWrapper"),u=h;r+=100,u=u+ce(e,b.events,n,a,r,c,m),r-=100,y.append("line").attr("x1",a+190/2).attr("y1",r+h).attr("x2",a+190/2).attr("y2",r+h+100+f+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end",`url(#${m}-arrowhead)`).attr("stroke-dasharray","5,5")}a=a+200,x&&!c.timeline?.disableMulticolor&&n++}r=r-10},"drawTasks"),ce=s(function(e,t,n,a,r,h,c){let o=0,f=r;r=r+100;for(let g of t){let x={descr:g,section:n,number:n,width:150,padding:20,maxHeight:50};w.debug("eventNode",x);let m=e.append("g").attr("class","eventWrapper"),i=M.drawNode(m,x,n,h,c,!0).height;o=o+i,m.attr("transform",`translate(${a}, ${r})`),r=r+10+i}return r=f,o},"drawEvents"),Pt={setConf:s(()=>{},"setConf"),draw:oe};var et=200,G=5,le=et+G*2,ut=et+100,he=ut+G*2,Ot=10,de=0,Ft=20,Dt=20,Gt=30,jt=50,ue=s(function(e,t,n,a){let r=Q(),h=r.timeline?.leftMargin??50;w.debug("timeline",a.db);let c=kt(t);c.append("g");let o=a.db.getTasks(),f=a.db.getCommonDb().getDiagramTitle();w.debug("task",o),M.initGraphics(c);let g=a.db.getSections();w.debug("sections",g);let x=0,m=0,b=50+h,i=50,d=i,l=b,p=le+Dt,y=he+jt,u=l+p,v=0,k=g&&g.length>0,H=k?u:b+p,V=Math.max(50,p+y-G*2);g.forEach(function($){let _={number:v,descr:$,section:v,width:V,padding:G,maxHeight:x},E=M.getVirtualNodeHeight(c,_,r);w.debug("sectionHeight before draw",E),x=Math.max(x,E)});let R=0;w.debug("tasks.length",o.length);for(let[$,_]of o.entries()){let E={number:$,descr:_,section:_.section,width:et,padding:G,maxHeight:m},S=M.getVirtualNodeHeight(c,E,r);w.debug("taskHeight before draw",S),m=Math.max(m,S);let I=0;for(let A of _.events){let N={descr:A,section:_.section,number:_.section,width:ut,padding:G,maxHeight:50};I+=M.getVirtualNodeHeight(c,N,r)}_.events.length>0&&(I+=(_.events.length-1)*Ot),R=Math.max(R,I)+de}w.debug("maxSectionHeight before draw",x),w.debug("maxTaskHeight before draw",m);let L=Math.max(m,R)+Gt;k?g.forEach($=>{let _=o.filter(z=>z.section===$),E={number:v,descr:$,section:v,width:V,padding:G,maxHeight:x};w.debug("sectionNode",E);let S=c.append("g"),I=M.drawNode(S,E,v,r);w.debug("sectionNode output",I);let A=H-p;S.attr("transform",`translate(${A}, ${i})`);let N=i+I.height+Ft;_.length>0&&zt(c,_,v,H,N,m,r,L,!1);let nt=_.length,X=I.height+Ft+L*Math.max(nt,1)-(nt>0?Gt*2:0);i+=X,v++}):zt(c,o,v,H,i,m,r,L,!0);let C=c.node()?.getBBox();if(!C)throw new Error("bbox not found");if(w.debug("bounds",C),f){if(c.append("text").text(f).attr("x",C.width/2-h).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),C=c.node()?.getBBox(),!C)throw new Error("bbox not found");w.debug("bounds after title",C)}let[T]=bt(r.fontSize),B=(T??16)*2,P=(T??16)*.5+20,D=c.append("g").attr("class","lineWrapper");D.append("line").attr("x1",H).attr("y1",d-B).attr("x2",H).attr("y2",C.y+C.height+P).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),D.lower(),J(void 0,c,r.timeline?.padding??50,r.timeline?.useMaxWidth??!1)},"draw"),zt=s(function(e,t,n,a,r,h,c,o,f){for(let g of t){let x={descr:g.task,section:n,number:n,width:et,padding:G,maxHeight:h};w.debug("taskNode",x);let m=e.append("g").attr("class","taskWrapper"),b=M.drawNode(m,x,n,c),i=b.height;w.debug("taskHeight after draw",i);let d=a-Dt-b.width;if(m.attr("transform",`translate(${d}, ${r})`),h=Math.max(h,i),g.events&&g.events.length>0){let l=r,p=a+jt;pe(e,g.events,n,a,p,l,c)}r=r+o,f&&!c.timeline?.disableMulticolor&&n++}},"drawTasks"),pe=s(function(e,t,n,a,r,h,c){let o=h;for(let f of t){let g={descr:f,section:n,number:n,width:ut,padding:G,maxHeight:0};w.debug("eventNode",g);let x=e.append("g").attr("class","eventWrapper"),b=M.drawNode(x,g,n,c).height;x.attr("transform",`translate(${r}, ${o})`);let i=e.append("g").attr("class","lineWrapper"),d=o+b/2;i.append("line").attr("x1",a).attr("y1",d).attr("x2",r).attr("y2",d).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5"),o=o+b+Ot}return o-h},"drawEvents"),Kt={setConf:s(()=>{},"setConf"),draw:ue};var ge=s(e=>{let{theme:t}=it(),n=t?.includes("dark"),a=t?.includes("color"),r=e.svgId?.replace(/^#/,"")??"",h=r?`url(#${r}-drop-shadow)`:e.dropShadow??"none",c="";for(let o=0;o{let t="";for(let n=0;n{let{theme:t}=it(),n=t?.includes("redux"),a=t==="neutral",r=e.svgId?.replace(/^#/,"")??"",h="";if(e.useGradient&&r&&e.THEME_COLOR_LIMIT&&!a)for(let c=0;c{},"setConf"),draw:s((e,t,n,a)=>(a?.db?.getDirection?.()??"LR")==="TD"?Kt.draw(e,t,n,a):Pt.draw(e,t,n,a),"draw")},Ue={db:lt,renderer:ye,parser:_t,styles:Ut};export{Ue as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-O6YCAMPW.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-O6YCAMPW.mjs.map new file mode 100644 index 0000000..ce927e4 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/timeline-definition-O6YCAMPW.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/timeline/parser/timeline.jison", "../../../src/diagrams/timeline/timelineDb.js", "../../../src/diagrams/timeline/svgDraw.js", "../../../src/diagrams/timeline/timelineRenderer.ts", "../../../src/diagrams/timeline/timelineRendererVertical.ts", "../../../src/diagrams/timeline/styles.js", "../../../src/diagrams/timeline/timeline-definition.ts"], + "sourcesContent": ["/* 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,11,13,14,15,17,19,20,23,24],$V1=[1,12],$V2=[1,13],$V3=[1,14],$V4=[1,15],$V5=[1,16],$V6=[1,19],$V7=[1,20];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"timeline_header\":4,\"document\":5,\"EOF\":6,\"timeline\":7,\"timeline_lr\":8,\"timeline_td\":9,\"line\":10,\"SPACE\":11,\"statement\":12,\"NEWLINE\":13,\"title\":14,\"acc_title\":15,\"acc_title_value\":16,\"acc_descr\":17,\"acc_descr_value\":18,\"acc_descr_multiline_value\":19,\"section\":20,\"period_statement\":21,\"event_statement\":22,\"period\":23,\"event\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"EOF\",7:\"timeline\",8:\"timeline_lr\",9:\"timeline_td\",11:\"SPACE\",13:\"NEWLINE\",14:\"title\",15:\"acc_title\",16:\"acc_title_value\",17:\"acc_descr\",18:\"acc_descr_value\",19:\"acc_descr_multiline_value\",20:\"section\",23:\"period\",24:\"event\"},\nproductions_: [0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,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 yy.setDirection('LR'); \nbreak;\ncase 4:\n yy.setDirection('TD'); \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: case 10:\n this.$=[];\nbreak;\ncase 11:\nyy.getCommonDb().setDiagramTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\n this.$=$$[$0].trim();yy.getCommonDb().setAccTitle(this.$); \nbreak;\ncase 13: case 14:\n this.$=$$[$0].trim();yy.getCommonDb().setAccDescription(this.$); \nbreak;\ncase 15:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 18:\nyy.addTask($$[$0],0,'');this.$=$$[$0];\nbreak;\ncase 19:\nyy.addEvent($$[$0].substr(2));this.$=$$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},o($V0,[2,5],{5:6}),o($V0,[2,2]),o($V0,[2,3]),o($V0,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:$V1,15:$V2,17:$V3,19:$V4,20:$V5,21:17,22:18,23:$V6,24:$V7},o($V0,[2,10],{1:[2,1]}),o($V0,[2,6]),{12:21,14:$V1,15:$V2,17:$V3,19:$V4,20:$V5,21:17,22:18,23:$V6,24:$V7},o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,11]),{16:[1,22]},{18:[1,23]},o($V0,[2,14]),o($V0,[2,15]),o($V0,[2,16]),o($V0,[2,17]),o($V0,[2,18]),o($V0,[2,19]),o($V0,[2,7]),o($V0,[2,12]),o($V0,[2,13])],\ndefaultActions: {},\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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2:return 13;\nbreak;\ncase 3:/* skip whitespace */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5:return 8;\nbreak;\ncase 6:return 9;\nbreak;\ncase 7:return 7;\nbreak;\ncase 8:return 14;\nbreak;\ncase 9: this.begin(\"acc_title\");return 15; \nbreak;\ncase 10: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 11: this.begin(\"acc_descr\");return 17; \nbreak;\ncase 12: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 13: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 14: this.popState(); \nbreak;\ncase 15:return \"acc_descr_multiline_value\";\nbreak;\ncase 16:return 20;\nbreak;\ncase 17:return 24;\nbreak;\ncase 18:return 23;\nbreak;\ncase 19:return 6;\nbreak;\ncase 20:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:timeline[ \\t]+LR\\b)/i,/^(?:timeline[ \\t]+TD\\b)/i,/^(?:timeline\\b)/i,/^(?:title\\s[^\\n]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:section\\s[^:\\n]+)/i,/^(?::\\s(?:[^:\\n]|:(?!\\s))+)/i,/^(?:[^#:\\n]+)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[14,15],\"inclusive\":false},\"acc_descr\":{\"rules\":[12],\"inclusive\":false},\"acc_title\":{\"rules\":[10],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,11,13,16,17,18,19,20],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import * as commonDb from '../common/commonDb.js';\nlet currentSection = '';\nlet currentTaskId = 0;\nlet direction = 'LR';\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const getCommonDb = () => commonDb;\n\nexport const clear = function () {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n rawTasks.length = 0;\n direction = 'LR';\n commonDb.clear();\n};\n\nexport const setDirection = function (dir) {\n direction = dir;\n};\n\nexport const getDirection = function () {\n return direction;\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nexport const addTask = function (period, length, event) {\n const rawTask = {\n id: currentTaskId++,\n section: currentSection,\n type: currentSection,\n task: period,\n score: length ? length : 0,\n //if event is defined, then add it the events array\n events: event ? [event] : [],\n };\n rawTasks.push(rawTask);\n};\n\nexport const addEvent = function (event) {\n // fetch current task with currentTaskId\n const currentTask = rawTasks.find((task) => task.id === currentTaskId - 1);\n //add event to the events array\n currentTask.events.push(event);\n};\n\nexport const addTaskOrg = function (descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n tasks.push(newTask);\n};\n\n/**\n * Compiles the raw tasks into a list of tasks with events\n * @returns {boolean} true if all items are processed\n * @private\n * @memberof timelineDb\n */\nconst compileTasks = function () {\n const compileTask = function (pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\nexport default {\n clear,\n getCommonDb,\n getDirection,\n setDirection,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n addEvent,\n};\n", "import { arc as d3arc, select } from 'd3';\nlet nodeCount = 0;\n\nexport const drawRect = function (elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (rectData.class !== undefined) {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawFace = function (element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n /** @param {any} face */\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n /** @param {any} face */\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n /** @param {any} face */\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function (element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('class', 'actor-' + circleData.pos);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (circleElement.class !== undefined) {\n circleElement.attr('class', circleElement.class);\n }\n\n if (circleData.title !== undefined) {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(//gi, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.attr('class', 'legend');\n\n textElem.style('text-anchor', textData.anchor);\n\n if (textData.class !== undefined) {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.text(nText);\n\n return textElem;\n};\n\nexport const drawLabel = function (elem, txtObject) {\n /**\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} cut\n */\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function (elem, section, conf) {\n const g = elem.append('g');\n\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem The HTML element\n * @param {any} task The task to render\n * @param {any} conf The global configuration\n */\nexport const drawTask = function (elem, task, conf, diagramId) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', diagramId + '-task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score,\n });\n\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem The html element\n * @param {any} bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect',\n });\n rectElem.lower();\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n 'text-anchor': 'start',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n };\n};\n\nexport const getNoteRect = function () {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0,\n };\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} colour\n */\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n * @param {any} colour\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(//gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function (graphics, id) {\n nodeCount = 0;\n taskCount = -1;\n graphics\n .append('defs')\n .append('marker')\n .attr('id', id + '-arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\n/**\n * @param {string} text The text to be wrapped\n * @param {number} width The max width of the text\n */\nfunction wrap(text, width) {\n text.each(function () {\n var text = select(this),\n words = text\n .text()\n .split(/(\\s+|
    )/)\n .reverse(),\n word,\n line = [],\n lineHeight = 1.1, // ems\n y = text.attr('y'),\n dy = parseFloat(text.attr('dy')),\n tspan = text\n .text(null)\n .append('tspan')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', dy + 'em');\n for (let j = 0; j < words.length; j++) {\n word = words[words.length - 1 - j];\n line.push(word);\n tspan.text(line.join(' ').trim());\n if (tspan.node().getComputedTextLength() > width || word === '
    ') {\n line.pop();\n tspan.text(line.join(' ').trim());\n if (word === '
    ') {\n line = [''];\n } else {\n line = [word];\n }\n\n tspan = text\n .append('tspan')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', lineHeight + 'em')\n .text(word);\n }\n }\n });\n}\n\nexport const drawNode = function (elem, node, fullSection, conf, diagramId, isEvent = false) {\n const { theme, look } = conf;\n const isReduxTheme = theme?.includes('redux');\n const maxSections = conf?.themeVariables?.THEME_COLOR_LIMIT ?? 12;\n const section = (fullSection % maxSections) - 1;\n const nodeElem = elem.append('g');\n node.section = section;\n nodeElem.attr(\n 'class',\n (node.class ? node.class + ' ' : '') + 'timeline-node ' + ('section-' + section)\n );\n const bkgElem = nodeElem.append('g');\n\n // Create the wrapped text element\n const textElem = nodeElem.append('g');\n\n const txt = textElem\n .append('text')\n .text(node.descr)\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize?.replace ? conf.fontSize.replace('px', '') : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.height = Math.max(node.height, node.maxHeight);\n node.width = node.width + 2 * node.padding;\n\n textElem.attr('transform', 'translate(' + node.width / 2 + ', ' + node.padding / 2 + ')');\n if (isReduxTheme) {\n textElem.attr(\n 'transform',\n `translate(${node.width / 2}, ${isEvent ? node.padding / 2 + 3 : node.padding})`\n );\n }\n\n // Create the background element\n defaultBkg(bkgElem, node, section, diagramId, conf);\n\n if (look === 'neo') {\n nodeElem.attr('data-look', `neo`);\n if (isReduxTheme) {\n const isDark = theme.includes('dark');\n const rootSvgNode = elem.node()?.ownerSVGElement ?? elem.node();\n const rootSvg = select(rootSvgNode);\n const svgId = rootSvg.attr('id') ?? '';\n const dropShadowId = svgId ? `${svgId}-drop-shadow` : 'drop-shadow';\n\n // Only add the filter once per SVG to avoid duplicate definitions\n if (rootSvg.select(`#${dropShadowId}`).empty()) {\n const existingDefs = rootSvg.select('defs');\n const defsEl = existingDefs.empty() ? rootSvg.append('defs') : existingDefs;\n defsEl\n .append('filter')\n .attr('id', dropShadowId)\n .attr('height', '130%')\n .attr('width', '130%')\n .append('feDropShadow')\n .attr('dx', '4')\n .attr('dy', '4')\n .attr('stdDeviation', 0)\n .attr('flood-opacity', isDark ? '0.2' : '0.06')\n .attr('flood-color', isDark ? '#FFFFFF' : '#000000');\n }\n }\n }\n\n return node;\n};\n\nexport const getVirtualNodeHeight = function (elem, node, conf) {\n const textElem = elem.append('g');\n const txt = textElem\n .append('text')\n .text(node.descr)\n .attr('dy', '1em')\n .attr('alignment-baseline', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize?.replace ? conf.fontSize.replace('px', '') : conf.fontSize;\n textElem.remove();\n return bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n};\n\nconst defaultBkg = function (elem, node, section, diagramId, config) {\n const { theme } = config;\n const r = theme?.includes('redux') ? 0 : 5;\n const rd = 5;\n // When r=0 (redux themes), use straight line segments for sharp corners instead of\n // degenerate quadratic bezier curves (q0,-0,0,-0) which are functionally a no-op.\n const d =\n r > 0\n ? `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-${r},${r},-${r} h${node.width - 2 * rd} q${r},0,${r},${r} v${node.height - rd} H0 Z`\n : `M0 ${node.height - rd} v${-(node.height - rd)} h${node.width} v${node.height} H0 Z`;\n elem\n .append('path')\n .attr('id', diagramId + '-node-' + nodeCount++)\n .attr('class', 'node-bkg node-' + node.type)\n .attr('d', d);\n if (!theme?.includes('redux')) {\n elem\n .append('line')\n .attr('class', 'node-line-' + section)\n .attr('x1', 0)\n .attr('y1', node.height)\n .attr('x2', node.width)\n .attr('y2', node.height);\n }\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics,\n drawNode,\n getVirtualNodeHeight,\n};\n", "// @ts-nocheck - don't check until handle it\nimport type { Selection } from 'd3';\nimport { select } from 'd3';\nimport svgDraw from './svgDraw.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport type { Diagram } from '../../Diagram.js';\nimport type { MermaidConfig } from '../../config.type.js';\n\ninterface Block {\n number: number;\n descr: TDesc;\n section: TSection;\n width: number;\n padding: number;\n maxHeight: number;\n}\n\ninterface TimelineTask {\n id: number;\n section: string;\n type: string;\n task: string;\n score: number;\n events: string[];\n}\n\nexport const draw = function (text: string, id: string, version: string, diagObj: Diagram) {\n //1. Fetch the configuration\n const conf = getConfig();\n const { look, theme, themeVariables } = conf;\n const { useGradient, gradientStart, gradientStop } = themeVariables;\n const LEFT_MARGIN = conf.timeline?.leftMargin ?? 50;\n\n log.debug('timeline', diagObj.db);\n\n const securityLevel = conf.securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n\n const svg = root.select('#' + id);\n\n svg.append('g');\n\n //4. Fetch the diagram data\n // @ts-expect-error - db not typed yet\n const tasks: TimelineTask[] = diagObj.db.getTasks();\n // @ts-expect-error - db not typed yet\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n log.debug('task', tasks);\n\n //5. Initialize the diagram\n svgDraw.initGraphics(svg, id);\n\n // fetch Sections\n // @ts-expect-error - db not typed yet\n const sections: string[] = diagObj.db.getSections();\n log.debug('sections', sections);\n\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n //let sectionBeginX = 0;\n let depthY = 0;\n let sectionBeginY = 0;\n let masterX = 50 + LEFT_MARGIN;\n //sectionBeginX = masterX;\n let masterY = 50;\n sectionBeginY = 50;\n //draw sections\n let sectionNumber = 0;\n let hasSections = true;\n\n //Calculate the max height of the sections\n sections.forEach(function (section: string) {\n const sectionNode: Block = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 150,\n padding: 20,\n maxHeight: maxSectionHeight,\n };\n const sectionHeight = svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n log.debug('sectionHeight before draw', sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n });\n\n //tasks length and maxEventCount\n let maxEventCount = 0;\n let maxEventLineLength = 0;\n log.debug('tasks.length', tasks.length);\n //calculate max task height\n // for loop till tasks.length\n\n for (const [i, task] of tasks.entries()) {\n const taskNode: Block = {\n number: i,\n descr: task,\n section: task.section,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight,\n };\n const taskHeight = svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n log.debug('taskHeight before draw', taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n\n //calculate maxEventCount\n maxEventCount = Math.max(maxEventCount, task.events.length);\n //calculate maxEventLineLength\n let maxEventLineLengthTemp = 0;\n for (const event of task.events) {\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: 150,\n padding: 20,\n maxHeight: 50,\n };\n maxEventLineLengthTemp += svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n }\n // Add spacing between events (10px per event except the last one)\n if (task.events.length > 0) {\n maxEventLineLengthTemp += (task.events.length - 1) * 10;\n }\n maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n }\n\n log.debug('maxSectionHeight before draw', maxSectionHeight);\n log.debug('maxTaskHeight before draw', maxTaskHeight);\n\n if (sections && sections.length > 0) {\n sections.forEach((section) => {\n //filter task where tasks.section == section\n const tasksForSection = tasks.filter((task) => task.section === section);\n\n const sectionNode: Block = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 200 * Math.max(tasksForSection.length, 1) - 50,\n padding: 20,\n maxHeight: maxSectionHeight,\n };\n log.debug('sectionNode', sectionNode);\n const sectionNodeWrapper = svg.append('g');\n const node = svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf, id);\n log.debug('sectionNode output', node);\n\n sectionNodeWrapper.attr('transform', `translate(${masterX}, ${sectionBeginY})`);\n\n masterY += maxSectionHeight + 50;\n\n //draw tasks for this section\n if (tasksForSection.length > 0) {\n drawTasks(\n svg,\n tasksForSection,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n false,\n id\n );\n }\n // todo replace with total width of section and its tasks\n masterX += 200 * Math.max(tasksForSection.length, 1);\n\n masterY = sectionBeginY;\n sectionNumber++;\n });\n } else {\n //draw tasks\n hasSections = false;\n drawTasks(\n svg,\n tasks,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n true,\n id\n );\n }\n\n // Get BBox of the diagram\n const box = svg.node().getBBox();\n log.debug('bounds', box);\n\n if (title) {\n svg\n .append('text')\n .text(title)\n .attr('x', look === 'neo' ? box.x * 2 + LEFT_MARGIN : box.width / 2 - LEFT_MARGIN)\n .attr('font-size', '4ex')\n .attr('font-weight', 'bold')\n .attr('y', 20);\n }\n //5. Draw the diagram\n depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n\n const lineWrapper = svg.append('g').attr('class', 'lineWrapper');\n // Draw activity line\n lineWrapper\n .append('line')\n .attr('x1', LEFT_MARGIN)\n .attr('y1', depthY) // One section head + one task + margins\n .attr('x2', box.width + 3 * LEFT_MARGIN) // Subtract stroke width so arrow point is retained\n .attr('y2', depthY)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', `url(#${id}-arrowhead)`);\n\n // Don't apply gradient for neutral theme - it should maintain its grayscale color scheme\n if (look === 'neo' && useGradient && theme !== 'neutral') {\n const existingDefs = svg.select('defs');\n const defsEl = existingDefs.empty() ? svg.append('defs') : existingDefs;\n const gradient = defsEl\n .append('linearGradient')\n .attr('id', svg.attr('id') + '-gradient')\n .attr('gradientUnits', 'objectBoundingBox')\n .attr('x1', '0%')\n .attr('y1', '0%')\n .attr('x2', '100%')\n .attr('y2', '0%');\n\n gradient\n .append('stop')\n .attr('offset', '0%')\n .attr('stop-color', gradientStart)\n .attr('stop-opacity', 1);\n\n gradient\n .append('stop')\n .attr('offset', '100%')\n .attr('stop-color', gradientStop)\n .attr('stop-opacity', 1);\n }\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(\n undefined,\n svg,\n conf.timeline?.padding ?? 50,\n conf.timeline?.useMaxWidth ?? false\n );\n\n // addSVGAccessibilityFields(diagObj.db, diagram, id);\n};\n\nexport const drawTasks = function (\n diagram: Selection,\n tasks: TimelineTask[],\n sectionColor: number,\n masterX: number,\n masterY: number,\n maxTaskHeight: number,\n conf: MermaidConfig,\n maxEventCount: number,\n maxEventLineLength: number,\n maxSectionHeight: number,\n isWithoutSections: boolean,\n diagramId: string\n) {\n // Draw the tasks\n for (const task of tasks) {\n // create node from task\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight,\n };\n\n log.debug('taskNode', taskNode);\n // create task wrapper\n\n const taskWrapper = diagram.append('g').attr('class', 'taskWrapper');\n const node = svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf, diagramId);\n const taskHeight = node.height;\n //log task height\n log.debug('taskHeight after draw', taskHeight);\n taskWrapper.attr('transform', `translate(${masterX}, ${masterY})`);\n\n // update max task height\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n\n // if task has events, draw them\n if (task.events) {\n // draw a line between the task and the events\n const lineWrapper = diagram.append('g').attr('class', 'lineWrapper');\n let lineLength = maxTaskHeight;\n //add margin to task\n masterY += 100;\n lineLength =\n lineLength +\n drawEvents(diagram, task.events, sectionColor, masterX, masterY, conf, diagramId);\n masterY -= 100;\n\n lineWrapper\n .append('line')\n .attr('x1', masterX + 190 / 2)\n .attr('y1', masterY + maxTaskHeight) // Start from bottom of task box\n .attr('x2', masterX + 190 / 2) // Same x coordinate for vertical line\n .attr('y2', masterY + maxTaskHeight + 100 + maxEventLineLength + 100) // End at consistent depth with ample padding for visible dashed lines and arrowheads\n .attr('stroke-width', 2)\n .attr('stroke', 'black')\n .attr('marker-end', `url(#${diagramId}-arrowhead)`)\n .attr('stroke-dasharray', '5,5');\n }\n\n masterX = masterX + 200;\n if (isWithoutSections && !conf.timeline?.disableMulticolor) {\n sectionColor++;\n }\n }\n\n // reset Y coordinate for next section\n masterY = masterY - 10;\n};\n\nexport const drawEvents = function (\n diagram: Selection,\n events: string[],\n sectionColor: number,\n masterX: number,\n masterY: number,\n conf: MermaidConfig,\n diagramId: string\n) {\n let maxEventHeight = 0;\n const eventBeginY = masterY;\n masterY = masterY + 100;\n // Draw the events\n for (const event of events) {\n // create node from event\n const eventNode: Block = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: 50,\n };\n\n //log task node\n log.debug('eventNode', eventNode);\n // create event wrapper\n const eventWrapper = diagram.append('g').attr('class', 'eventWrapper');\n const node = svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf, diagramId, true);\n const eventHeight = node.height;\n maxEventHeight = maxEventHeight + eventHeight;\n eventWrapper.attr('transform', `translate(${masterX}, ${masterY})`);\n masterY = masterY + 10 + eventHeight;\n }\n // set masterY back to eventBeginY\n masterY = eventBeginY;\n return maxEventHeight;\n};\n\nexport default {\n setConf: () => {\n // no-op\n },\n draw,\n};\n", "import svgDraw from './svgDraw.js';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { setupGraphViewbox } from '../../setupGraphViewbox.js';\nimport type { Diagram } from '../../Diagram.js';\nimport type { MermaidConfig } from '../../config.type.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport type { SVG } from '../../diagram-api/types.js';\nimport { parseFontSize } from '../../utils.js';\n\ninterface Block {\n number: number;\n descr: TDesc;\n section: TSection;\n width: number;\n padding: number;\n maxHeight: number;\n}\n\ninterface TimelineTask {\n id: number;\n section: string;\n type: string;\n task: string;\n score: number;\n events: string[];\n}\n\nconst NODE_WIDTH = 200;\nconst NODE_PADDING = 5;\nconst NODE_TOTAL_WIDTH = NODE_WIDTH + NODE_PADDING * 2;\nconst EVENT_WIDTH = NODE_WIDTH + 100;\nconst EVENT_TOTAL_WIDTH = EVENT_WIDTH + NODE_PADDING * 2;\nconst EVENT_SPACING = 10;\nconst EVENT_VERTICAL_GAP = 0;\nconst SECTION_TASK_GAP = 20;\nconst TASK_AXIS_GAP = 20;\nconst TASK_VERTICAL_GAP = 30;\nconst EVENT_AXIS_GAP = 50;\n\nexport const draw = function (text: string, id: string, version: string, diagObj: Diagram) {\n //1. Fetch the configuration\n const conf = getConfig();\n const LEFT_MARGIN = conf.timeline?.leftMargin ?? 50;\n\n log.debug('timeline', diagObj.db);\n\n const svg = selectSvgElement(id);\n\n svg.append('g');\n\n //4. Fetch the diagram data\n // @ts-expect-error - db not typed yet\n const tasks: TimelineTask[] = diagObj.db.getTasks();\n // @ts-expect-error - db not typed yet\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n log.debug('task', tasks);\n\n //5. Initialize the diagram\n svgDraw.initGraphics(svg);\n\n // fetch Sections\n // @ts-expect-error - db not typed yet\n const sections: string[] = diagObj.db.getSections();\n log.debug('sections', sections);\n\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n const masterX = 50 + LEFT_MARGIN;\n let masterY = 50;\n const contentTopY = masterY;\n const sectionBeginX = masterX;\n const leftWidth = NODE_TOTAL_WIDTH + TASK_AXIS_GAP;\n const rightWidth = EVENT_TOTAL_WIDTH + EVENT_AXIS_GAP;\n const axisX = sectionBeginX + leftWidth;\n let sectionNumber = 0;\n const hasSections = sections && sections.length > 0;\n const timelineX = hasSections ? axisX : masterX + leftWidth;\n\n const sectionWidth = Math.max(50, leftWidth + rightWidth - NODE_PADDING * 2);\n //Calculate the max height of the sections\n sections.forEach(function (section: string) {\n const sectionNode: Block = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: sectionWidth,\n padding: NODE_PADDING,\n maxHeight: maxSectionHeight,\n };\n const sectionHeight = svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n log.debug('sectionHeight before draw', sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight);\n });\n\n //tasks length and max event stack height\n let maxEventStackHeight = 0;\n log.debug('tasks.length', tasks.length);\n\n for (const [i, task] of tasks.entries()) {\n const taskNode: Block = {\n number: i,\n descr: task,\n section: task.section,\n width: NODE_WIDTH,\n padding: NODE_PADDING,\n maxHeight: maxTaskHeight,\n };\n const taskHeight = svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n log.debug('taskHeight before draw', taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n\n //calculate maxEventStackHeight (vertical stack height for events)\n let maxEventStackHeightTemp = 0;\n for (const event of task.events) {\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: EVENT_WIDTH,\n padding: NODE_PADDING,\n maxHeight: 50,\n };\n maxEventStackHeightTemp += svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n }\n if (task.events.length > 0) {\n maxEventStackHeightTemp += (task.events.length - 1) * EVENT_SPACING;\n }\n maxEventStackHeight =\n Math.max(maxEventStackHeight, maxEventStackHeightTemp) + EVENT_VERTICAL_GAP;\n }\n\n log.debug('maxSectionHeight before draw', maxSectionHeight);\n log.debug('maxTaskHeight before draw', maxTaskHeight);\n\n const taskBlockHeight = Math.max(maxTaskHeight, maxEventStackHeight);\n const taskSpacing = taskBlockHeight + TASK_VERTICAL_GAP;\n\n if (hasSections) {\n sections.forEach((section) => {\n //filter task where tasks.section == section\n const tasksForSection = tasks.filter((task) => task.section === section);\n\n const sectionNode: Block = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: sectionWidth,\n padding: NODE_PADDING,\n maxHeight: maxSectionHeight,\n };\n log.debug('sectionNode', sectionNode);\n const sectionNodeWrapper = svg.append('g');\n const node = svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n log.debug('sectionNode output', node);\n\n const sectionX = timelineX - leftWidth;\n sectionNodeWrapper.attr('transform', `translate(${sectionX}, ${masterY})`);\n\n const taskStartY = masterY + node.height + SECTION_TASK_GAP;\n //draw tasks for this section\n if (tasksForSection.length > 0) {\n drawTasks(\n svg,\n tasksForSection,\n sectionNumber,\n timelineX,\n taskStartY,\n maxTaskHeight,\n conf,\n taskSpacing,\n false\n );\n }\n\n const taskCount = tasksForSection.length;\n const sectionHeight =\n node.height +\n SECTION_TASK_GAP +\n taskSpacing * Math.max(taskCount, 1) -\n (taskCount > 0 ? TASK_VERTICAL_GAP * 2 : 0);\n masterY += sectionHeight;\n sectionNumber++;\n });\n } else {\n //draw tasks\n drawTasks(\n svg,\n tasks,\n sectionNumber,\n timelineX,\n masterY,\n maxTaskHeight,\n conf,\n taskSpacing,\n true\n );\n }\n\n // Get BBox of the diagram (before drawing the axis line)\n let box = svg.node()?.getBBox();\n if (!box) {\n throw new Error('bbox not found');\n }\n log.debug('bounds', box);\n\n if (title) {\n svg\n .append('text')\n .text(title)\n .attr('x', box.width / 2 - LEFT_MARGIN)\n .attr('font-size', '4ex')\n .attr('font-weight', 'bold')\n .attr('y', 20);\n box = svg.node()?.getBBox();\n if (!box) {\n throw new Error('bbox not found');\n }\n log.debug('bounds after title', box);\n }\n\n const [fontSize] = parseFontSize(conf.fontSize);\n const arrowTopOffset = (fontSize ?? 16) * 2;\n const arrowBottomPadding = (fontSize ?? 16) * 0.5 + 20;\n\n const lineWrapper = svg.append('g').attr('class', 'lineWrapper');\n // Draw activity line\n lineWrapper\n .append('line')\n .attr('x1', timelineX)\n .attr('y1', contentTopY - arrowTopOffset)\n .attr('x2', timelineX)\n .attr('y2', box.y + box.height + arrowBottomPadding)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)');\n lineWrapper.lower();\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(\n undefined,\n svg,\n conf.timeline?.padding ?? 50,\n conf.timeline?.useMaxWidth ?? false\n );\n};\n\nexport const drawTasks = function (\n diagram: SVG,\n tasks: TimelineTask[],\n sectionColor: number,\n timelineX: number,\n masterY: number,\n maxTaskHeight: number,\n conf: MermaidConfig,\n taskSpacing: number,\n isWithoutSections: boolean\n) {\n // Draw the tasks\n for (const task of tasks) {\n // create node from task\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: NODE_WIDTH,\n padding: NODE_PADDING,\n maxHeight: maxTaskHeight,\n };\n\n log.debug('taskNode', taskNode);\n // create task wrapper\n const taskWrapper = diagram.append('g').attr('class', 'taskWrapper');\n const node = svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf);\n const taskHeight = node.height;\n //log task height\n log.debug('taskHeight after draw', taskHeight);\n const taskX = timelineX - TASK_AXIS_GAP - node.width;\n taskWrapper.attr('transform', `translate(${taskX}, ${masterY})`);\n\n // update max task height\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n\n // if task has events, draw them\n if (task.events && task.events.length > 0) {\n const eventsStartY = masterY;\n const eventsX = timelineX + EVENT_AXIS_GAP;\n drawEvents(diagram, task.events, sectionColor, timelineX, eventsX, eventsStartY, conf);\n }\n\n masterY = masterY + taskSpacing;\n if (isWithoutSections && !conf.timeline?.disableMulticolor) {\n sectionColor++;\n }\n }\n};\n\nexport const drawEvents = function (\n diagram: SVG,\n events: string[],\n sectionColor: number,\n axisX: number,\n eventsX: number,\n startY: number,\n conf: MermaidConfig\n) {\n let currentY = startY;\n // Draw the events\n for (const event of events) {\n // create node from event\n const eventNode: Block = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: EVENT_WIDTH,\n padding: NODE_PADDING,\n maxHeight: 0,\n };\n\n //log task node\n log.debug('eventNode', eventNode);\n // create event wrapper\n const eventWrapper = diagram.append('g').attr('class', 'eventWrapper');\n const node = svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf);\n const eventHeight = node.height;\n eventWrapper.attr('transform', `translate(${eventsX}, ${currentY})`);\n\n const lineWrapper = diagram.append('g').attr('class', 'lineWrapper');\n const lineY = currentY + eventHeight / 2;\n lineWrapper\n .append('line')\n .attr('x1', axisX)\n .attr('y1', lineY)\n .attr('x2', eventsX)\n .attr('y2', lineY)\n .attr('stroke-width', 2)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)')\n .attr('stroke-dasharray', '5,5');\n\n currentY = currentY + eventHeight + EVENT_SPACING;\n }\n return currentY - startY;\n};\n\nexport default {\n setConf: () => {\n // no-op\n },\n draw,\n};\n", "import { darken, lighten, isDark } from 'khroma';\nimport { getConfig } from './../../config.js';\n\nconst genReduxSections = (options) => {\n const { theme } = getConfig();\n //Required to read the active theme at render time,\n // since options alone does not expose the theme name needed to switch between redux and classic section generators.\n const isDarkTheme = theme?.includes('dark');\n const isColorTheme = theme?.includes('color');\n const rawSvgId = options.svgId?.replace(/^#/, '') ?? '';\n const scopedDropShadow = rawSvgId\n ? `url(#${rawSvgId}-drop-shadow)`\n : (options.dropShadow ?? 'none');\n\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = `${17 - 3 * i}`;\n const color = isColorTheme ? options.borderColorArray[i] : options.mainBkg;\n const stroke = isColorTheme ? options.borderColorArray[i] : options.nodeBorder;\n\n sections += `\n .section-${i - 1} rect,\n .section-${i - 1} path,\n .section-${i - 1} circle {\n fill: ${isDarkTheme && isColorTheme ? options.mainBkg : color};\n stroke: ${stroke};\n stroke-width: ${options.strokeWidth};\n filter: ${scopedDropShadow};\n }\n\n .section-${i - 1} text {\n fill: ${options.nodeBorder};\n font-weight: ${options.fontWeight}\n }\n\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options['cScaleLabel' + i]};\n }\n\n .section-edge-${i - 1} {\n stroke: ${options['cScale' + i]};\n }\n\n .edge-depth-${i - 1} {\n stroke-width: ${sw};\n }\n\n .section-${i - 1} line {\n stroke: ${options['cScaleInv' + i]};\n stroke-width: 3;\n }\n\n .lineWrapper line {\n stroke: ${options.nodeBorder};\n stroke-width:${options.strokeWidth}\n }\n\n .disabled,\n .disabled circle,\n .disabled text {\n fill: ${options.tertiaryColor ?? 'lightgray'};\n }\n\n .disabled text {\n fill: ${options.clusterBorder ?? '#efefef'};\n }\n `;\n }\n\n return sections;\n};\n\nconst genSections = (options) => {\n let sections = '';\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options['lineColor' + i] = options['lineColor' + i] || options['cScaleInv' + i];\n if (isDark(options['lineColor' + i])) {\n options['lineColor' + i] = lighten(options['lineColor' + i], 20);\n } else {\n options['lineColor' + i] = darken(options['lineColor' + i], 20);\n }\n }\n\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = '' + (17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${\n i - 1\n } path {\n fill: ${options['cScale' + i]};\n }\n .section-${i - 1} text {\n fill: ${options['cScaleLabel' + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options['cScaleLabel' + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options['cScale' + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options['cScaleInv' + i]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${options['cScaleLabel' + i]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: ${options.tertiaryColor ?? 'lightgray'};\n }\n .disabled text {\n fill: ${options.clusterBorder ?? '#efefef'};\n }\n `;\n }\n return sections;\n};\n\nconst getStyles = (options) => {\n // Required to read the active theme at render time, since options alone does not expose the theme name needed to switch between redux and classic section generators.\n const { theme } = getConfig();\n const isReduxTheme = theme?.includes('redux');\n const isNeutralTheme = theme === 'neutral';\n // options.svgId is the CSS selector (e.g. '#mermaid-0'), strip the leading '#' for use in url(#...)\n const rawSvgId = options.svgId?.replace(/^#/, '') ?? '';\n let gradientSections = '';\n // Don't apply gradient styling for neutral theme - it should maintain its grayscale color scheme\n if (options.useGradient && rawSvgId && options.THEME_COLOR_LIMIT && !isNeutralTheme) {\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n gradientSections += `\n .section-${i - 1}[data-look=\"neo\"] rect,\n .section-${i - 1}[data-look=\"neo\"] path,\n .section-${i - 1}[data-look=\"neo\"] circle {\n fill: ${options.mainBkg};\n stroke: url(#${rawSvgId}-gradient);\n stroke-width: 2;\n }\n .section-${i - 1}[data-look=\"neo\"] line {\n stroke: url(#${rawSvgId}-gradient);\n stroke-width: 2;\n }`;\n }\n }\n\n return `\n .edge {\n stroke-width: 3;\n }\n ${isReduxTheme ? genReduxSections(options) : genSections(options)}\n ${gradientSections}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`;\n};\nexport default getStyles;\n", "// @ts-ignore: JISON doesn't support types\nimport parser from './parser/timeline.jison';\nimport * as db from './timelineDb.js';\nimport renderer from './timelineRenderer.js';\nimport verticalRenderer from './timelineRendererVertical.js';\nimport styles from './styles.js';\n\nconst rendererSelector = {\n setConf: () => {\n // no-op\n },\n draw: (text: string, id: string, version: string, diagObj: any) => {\n const direction = diagObj?.db?.getDirection?.() ?? 'LR';\n if (direction === 'TD') {\n return verticalRenderer.draw(text, id, version, diagObj);\n }\n return renderer.draw(text, id, version, diagObj);\n },\n};\n\nexport const diagram = {\n db,\n renderer: rendererSelector,\n parser,\n styles,\n};\n"], + "mappings": "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", + "names": ["parser", "o", "__name", "k", "v", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "timeline_default", "parser", "timelineDb_exports", "__export", "addEvent", "addSection", "addTask", "addTaskOrg", "clear", "timelineDb_default", "getCommonDb", "getDirection", "getSections", "getTasks", "setDirection", "currentSection", "currentTaskId", "direction", "sections", "tasks", "rawTasks", "getCommonDb", "__name", "commonDb_exports", "clear", "setDirection", "dir", "getDirection", "addSection", "txt", "getSections", "getTasks", "allItemsProcessed", "compileTasks", "maxDepth", "iterationCount", "addTask", "period", "length", "event", "rawTask", "addEvent", "task", "addTaskOrg", "descr", "newTask", "compileTask", "pos", "allProcessed", "i", "timelineDb_default", "nodeCount", "drawRect", "__name", "elem", "rectData", "rectElem", "drawFace", "element", "faceData", "circleElement", "face", "smile", "arc", "arc_default", "sad", "ambivalent", "drawCircle", "circleData", "drawText", "textData", "nText", "textElem", "span", "drawLabel", "txtObject", "genPoints", "x", "y", "width", "height", "cut", "polygon", "drawSection", "section", "conf", "g", "rect", "getNoteRect", "_drawTextCandidateFunc", "taskCount", "drawTask", "task", "diagramId", "center", "drawBackgroundRect", "bounds", "getTextObj", "byText", "content", "textAttrs", "colour", "text", "_setTextAttrs", "byTspan", "taskFontSize", "taskFontFamily", "lines", "i", "dy", "byFo", "body", "toText", "fromTextAttrsDict", "key", "initGraphics", "graphics", "id", "wrap", "select_default", "words", "word", "line", "lineHeight", "tspan", "j", "drawNode", "node", "fullSection", "isEvent", "theme", "look", "isReduxTheme", "maxSections", "nodeElem", "bkgElem", "bbox", "fontSize", "defaultBkg", "isDark", "rootSvgNode", "rootSvg", "svgId", "dropShadowId", "existingDefs", "getVirtualNodeHeight", "config", "r", "rd", "d", "svgDraw_default", "draw", "__name", "text", "id", "version", "diagObj", "conf", "getConfig", "look", "theme", "themeVariables", "useGradient", "gradientStart", "gradientStop", "LEFT_MARGIN", "log", "securityLevel", "sandboxElement", "select_default", "svg", "tasks", "title", "svgDraw_default", "sections", "maxSectionHeight", "maxTaskHeight", "depthY", "sectionBeginY", "masterX", "masterY", "sectionNumber", "hasSections", "section", "sectionNode", "sectionHeight", "maxEventCount", "maxEventLineLength", "i", "task", "taskNode", "taskHeight", "maxEventLineLengthTemp", "event", "eventNode", "tasksForSection", "sectionNodeWrapper", "node", "drawTasks", "box", "existingDefs", "gradient", "setupGraphViewbox", "diagram", "sectionColor", "isWithoutSections", "diagramId", "taskWrapper", "lineWrapper", "lineLength", "drawEvents", "events", "maxEventHeight", "eventBeginY", "eventWrapper", "eventHeight", "timelineRenderer_default", "NODE_WIDTH", "NODE_PADDING", "NODE_TOTAL_WIDTH", "EVENT_WIDTH", "EVENT_TOTAL_WIDTH", "EVENT_SPACING", "EVENT_VERTICAL_GAP", "SECTION_TASK_GAP", "TASK_AXIS_GAP", "TASK_VERTICAL_GAP", "EVENT_AXIS_GAP", "draw", "__name", "text", "id", "version", "diagObj", "conf", "getConfig", "LEFT_MARGIN", "log", "svg", "selectSvgElement", "tasks", "title", "svgDraw_default", "sections", "maxSectionHeight", "maxTaskHeight", "masterX", "masterY", "contentTopY", "sectionBeginX", "leftWidth", "rightWidth", "axisX", "sectionNumber", "hasSections", "timelineX", "sectionWidth", "section", "sectionNode", "sectionHeight", "maxEventStackHeight", "i", "task", "taskNode", "taskHeight", "maxEventStackHeightTemp", "event", "eventNode", "taskSpacing", "tasksForSection", "sectionNodeWrapper", "node", "sectionX", "taskStartY", "drawTasks", "taskCount", "box", "fontSize", "parseFontSize", "arrowTopOffset", "arrowBottomPadding", "lineWrapper", "setupGraphViewbox", "diagram", "sectionColor", "isWithoutSections", "taskWrapper", "taskX", "eventsStartY", "eventsX", "drawEvents", "events", "startY", "currentY", "eventWrapper", "eventHeight", "lineY", "timelineRendererVertical_default", "genReduxSections", "__name", "options", "theme", "getConfig", "isDarkTheme", "isColorTheme", "rawSvgId", "scopedDropShadow", "sections", "i", "sw", "color", "stroke", "genSections", "is_dark_default", "lighten_default", "darken_default", "getStyles", "isReduxTheme", "isNeutralTheme", "gradientSections", "styles_default", "rendererSelector", "__name", "text", "id", "version", "diagObj", "timelineRendererVertical_default", "timelineRenderer_default", "diagram", "timelineDb_exports", "timeline_default", "styles_default"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/treeView-BLDUP644-QA4HXRO3.mjs b/assets/mermaid/chunks/mermaid.esm.min/treeView-BLDUP644-QA4HXRO3.mjs new file mode 100644 index 0000000..b9f19ee --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/treeView-BLDUP644-QA4HXRO3.mjs @@ -0,0 +1 @@ +import{a as e,b as r}from"./chunk-CEXFNPSA.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{e as TreeViewModule,r as createTreeViewServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/treeView-BLDUP644-QA4HXRO3.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/treeView-BLDUP644-QA4HXRO3.mjs.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/treeView-BLDUP644-QA4HXRO3.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/treemap-KZPCXAKY-RU5UWGQG.mjs b/assets/mermaid/chunks/mermaid.esm.min/treemap-KZPCXAKY-RU5UWGQG.mjs deleted file mode 100644 index e3cfbf9..0000000 --- a/assets/mermaid/chunks/mermaid.esm.min/treemap-KZPCXAKY-RU5UWGQG.mjs +++ /dev/null @@ -1 +0,0 @@ -import{a as e,b as r}from"./chunk-ZX4KS3OZ.mjs";import"./chunk-GAX3EE6F.mjs";import"./chunk-H3VCZNTA.mjs";import"./chunk-QU3B7NT4.mjs";import"./chunk-JIN56HTB.mjs";import"./chunk-VELTKBKT.mjs";export{e as TreemapModule,r as createTreemapServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/treemap-LRROVOQU-LLAWBHMP.mjs b/assets/mermaid/chunks/mermaid.esm.min/treemap-LRROVOQU-LLAWBHMP.mjs new file mode 100644 index 0000000..6692963 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/treemap-LRROVOQU-LLAWBHMP.mjs @@ -0,0 +1 @@ +import{a as e,b as r}from"./chunk-RKZBBQEN.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{e as TreemapModule,r as createTreemapServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/treemap-LRROVOQU-LLAWBHMP.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/treemap-LRROVOQU-LLAWBHMP.mjs.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/treemap-LRROVOQU-LLAWBHMP.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/vennDiagram-R4MEU4WM.mjs b/assets/mermaid/chunks/mermaid.esm.min/vennDiagram-MWXL3ELB.mjs similarity index 84% rename from assets/mermaid/chunks/mermaid.esm.min/vennDiagram-R4MEU4WM.mjs rename to assets/mermaid/chunks/mermaid.esm.min/vennDiagram-MWXL3ELB.mjs index e793cf2..19128dd 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/vennDiagram-R4MEU4WM.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/vennDiagram-MWXL3ELB.mjs @@ -1,4 +1,4 @@ -import{a as Bt}from"./chunk-D4HHKWPY.mjs";import{a as Pt}from"./chunk-IWDTEBJL.mjs";import{l as jt}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{N as Rt,Q as zt,R as Ct,S as Ot,T as Vt,U as Nt,V as Lt,W as Ft,d as Tt,e as Et,f as _t,g as ct,j as At,s as it}from"./chunk-3UWU4A3N.mjs";import{h as rt}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as d}from"./chunk-VELTKBKT.mjs";var ut=(function(){var t=d(function(D,x,b,k){for(b=b||{},k=D.length;k--;b[D[k]]=x);return b},"o"),n=[5,8],s=[7,8,11,12,17,19,22,24],e=[1,17],i=[1,18],r=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],a=[1,31],c=[1,39],h=[7,8,11,12,17,19,22,24,27],u=[1,57],o=[1,56],p=[1,58],g=[1,59],v=[1,60],y=[7,8,11,12,16,17,19,20,22,24,27,31,32,33],S={trace:d(function(){},"trace"),yy:{},symbols_:{error:2,start:3,optNewlines:4,VENN:5,document:6,EOF:7,NEWLINE:8,line:9,statement:10,TITLE:11,SET:12,identifier:13,BRACKET_LABEL:14,COLON:15,NUMERIC:16,UNION:17,identifierList:18,TEXT:19,IDENTIFIER:20,STRING:21,INDENT_TEXT:22,indentedTextTail:23,STYLE:24,stylesOpt:25,styleField:26,COMMA:27,styleValue:28,valueTokens:29,valueToken:30,HEXCOLOR:31,RGBCOLOR:32,RGBACOLOR:33,$accept:0,$end:1},terminals_:{2:"error",5:"VENN",7:"EOF",8:"NEWLINE",11:"TITLE",12:"SET",14:"BRACKET_LABEL",15:"COLON",16:"NUMERIC",17:"UNION",19:"TEXT",20:"IDENTIFIER",21:"STRING",22:"INDENT_TEXT",24:"STYLE",27:"COMMA",31:"HEXCOLOR",32:"RGBCOLOR",33:"RGBACOLOR"},productions_:[0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,1],[13,1]],performAction:d(function(x,b,k,l,m,f,V){var I=f.length-1;switch(m){case 1:return f[I-1];case 2:case 3:case 4:this.$=[];break;case 5:f[I-1].push(f[I]),this.$=f[I-1];break;case 6:this.$=[];break;case 7:case 22:case 32:case 36:case 37:case 38:case 39:case 40:this.$=f[I];break;case 8:l.setDiagramTitle(f[I].substr(6)),this.$=f[I].substr(6);break;case 9:l.addSubsetData([f[I]],void 0,void 0),l.setIndentMode&&l.setIndentMode(!0);break;case 10:l.addSubsetData([f[I-1]],f[I],void 0),l.setIndentMode&&l.setIndentMode(!0);break;case 11:l.addSubsetData([f[I-2]],void 0,parseFloat(f[I])),l.setIndentMode&&l.setIndentMode(!0);break;case 12:l.addSubsetData([f[I-3]],f[I-2],parseFloat(f[I])),l.setIndentMode&&l.setIndentMode(!0);break;case 13:if(f[I].length<2)throw new Error("union requires multiple identifiers");l.validateUnionIdentifiers&&l.validateUnionIdentifiers(f[I]),l.addSubsetData(f[I],void 0,void 0),l.setIndentMode&&l.setIndentMode(!0);break;case 14:if(f[I-1].length<2)throw new Error("union requires multiple identifiers");l.validateUnionIdentifiers&&l.validateUnionIdentifiers(f[I-1]),l.addSubsetData(f[I-1],f[I],void 0),l.setIndentMode&&l.setIndentMode(!0);break;case 15:if(f[I-2].length<2)throw new Error("union requires multiple identifiers");l.validateUnionIdentifiers&&l.validateUnionIdentifiers(f[I-2]),l.addSubsetData(f[I-2],void 0,parseFloat(f[I])),l.setIndentMode&&l.setIndentMode(!0);break;case 16:if(f[I-3].length<2)throw new Error("union requires multiple identifiers");l.validateUnionIdentifiers&&l.validateUnionIdentifiers(f[I-3]),l.addSubsetData(f[I-3],f[I-2],parseFloat(f[I])),l.setIndentMode&&l.setIndentMode(!0);break;case 17:case 18:case 19:l.addTextData(f[I-1],f[I],void 0);break;case 20:case 21:l.addTextData(f[I-2],f[I-1],f[I]);break;case 23:l.addStyleData(f[I-1],f[I]);break;case 24:case 25:case 26:var C=l.getCurrentSets();if(!C)throw new Error("text requires set");l.addTextData(C,f[I],void 0);break;case 27:case 28:var C=l.getCurrentSets();if(!C)throw new Error("text requires set");l.addTextData(C,f[I-1],f[I]);break;case 29:case 41:this.$=[f[I]];break;case 30:case 42:this.$=[...f[I-2],f[I]];break;case 31:this.$=[f[I-2],f[I]];break;case 33:this.$=f[I].join(" ");break;case 34:this.$=[f[I]];break;case 35:f[I-1].push(f[I]),this.$=f[I-1];break;case 43:case 44:this.$=f[I];break}},"anonymous"),table:[t(n,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},t(s,[2,4],{6:5}),t(n,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},t(s,[2,5]),t(s,[2,6]),t(s,[2,7]),t(s,[2,8]),{13:16,20:e,21:i},{13:20,18:19,20:e,21:i},{13:20,18:21,20:e,21:i},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:e,21:i},t(s,[2,9],{14:[1,27],15:[1,28]}),t(r,[2,43]),t(r,[2,44]),t(s,[2,13],{14:[1,29],15:[1,30],27:a}),t(r,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:a},t(s,[2,22]),t(s,[2,24],{14:[1,35]}),t(s,[2,25],{14:[1,36]}),t(s,[2,26]),{20:c,25:37,26:38,27:a},t(s,[2,10],{15:[1,40]}),{16:[1,41]},t(s,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:e,21:i},t(s,[2,17],{14:[1,45]}),t(s,[2,18],{14:[1,46]}),t(s,[2,19]),t(s,[2,27]),t(s,[2,28]),t(s,[2,23],{27:[1,47]}),t(h,[2,29]),{15:[1,48]},{16:[1,49]},t(s,[2,11]),{16:[1,50]},t(s,[2,15]),t(r,[2,42]),t(s,[2,20]),t(s,[2,21]),{20:c,26:51},{16:u,20:o,21:[1,53],28:52,29:54,30:55,31:p,32:g,33:v},t(s,[2,12]),t(s,[2,16]),t(h,[2,30]),t(h,[2,31]),t(h,[2,32]),t(h,[2,33],{30:61,16:u,20:o,31:p,32:g,33:v}),t(y,[2,34]),t(y,[2,36]),t(y,[2,37]),t(y,[2,38]),t(y,[2,39]),t(y,[2,40]),t(y,[2,35])],defaultActions:{6:[2,1]},parseError:d(function(x,b){if(b.recoverable)this.trace(x);else{var k=new Error(x);throw k.hash=b,k}},"parseError"),parse:d(function(x){var b=this,k=[0],l=[],m=[null],f=[],V=this.table,I="",C=0,G=0,F=0,T=2,R=1,z=f.slice.call(arguments,1),_=Object.create(this.lexer),O={yy:{}};for(var N in this.yy)Object.prototype.hasOwnProperty.call(this.yy,N)&&(O.yy[N]=this.yy[N]);_.setInput(x,O.yy),O.yy.lexer=_,O.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var L=_.yylloc;f.push(L);var H=_.options&&_.options.ranges;typeof O.yy.parseError=="function"?this.parseError=O.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Y(W){k.length=k.length-2*W,m.length=m.length-W,f.length=f.length-W}d(Y,"popStack");function j(){var W;return W=l.pop()||_.lex()||R,typeof W!="number"&&(W instanceof Array&&(l=W,W=l.pop()),W=b.symbols_[W]||W),W}d(j,"lex");for(var A,K,U,M,B,et,Z={},X,P,wt,st;;){if(U=k[k.length-1],this.defaultActions[U]?M=this.defaultActions[U]:((A===null||typeof A>"u")&&(A=j()),M=V[U]&&V[U][A]),typeof M>"u"||!M.length||!M[0]){var lt="";st=[];for(X in V[U])this.terminals_[X]&&X>T&&st.push("'"+this.terminals_[X]+"'");_.showPosition?lt="Parse error on line "+(C+1)+`: +import{a as Bt}from"./chunk-LRIF4GLE.mjs";import{a as Pt}from"./chunk-5IMINLNL.mjs";import{o as jt}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{O as Rt,S as zt,T as Ct,U as Ot,V as Vt,W as Nt,X as Lt,Y as Ft,d as Tt,e as Et,f as _t,g as ct,j as At,t as it}from"./chunk-67TQ5CYL.mjs";import{h as rt}from"./chunk-7W6UQGC5.mjs";import{a as d}from"./chunk-AQ6EADP3.mjs";var ut=(function(){var t=d(function(D,x,b,k){for(b=b||{},k=D.length;k--;b[D[k]]=x);return b},"o"),n=[5,8],s=[7,8,11,12,17,19,22,24],e=[1,17],i=[1,18],r=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],a=[1,31],c=[1,39],h=[7,8,11,12,17,19,22,24,27],u=[1,57],o=[1,56],p=[1,58],g=[1,59],v=[1,60],y=[7,8,11,12,16,17,19,20,22,24,27,31,32,33],S={trace:d(function(){},"trace"),yy:{},symbols_:{error:2,start:3,optNewlines:4,VENN:5,document:6,EOF:7,NEWLINE:8,line:9,statement:10,TITLE:11,SET:12,identifier:13,BRACKET_LABEL:14,COLON:15,NUMERIC:16,UNION:17,identifierList:18,TEXT:19,IDENTIFIER:20,STRING:21,INDENT_TEXT:22,indentedTextTail:23,STYLE:24,stylesOpt:25,styleField:26,COMMA:27,styleValue:28,valueTokens:29,valueToken:30,HEXCOLOR:31,RGBCOLOR:32,RGBACOLOR:33,$accept:0,$end:1},terminals_:{2:"error",5:"VENN",7:"EOF",8:"NEWLINE",11:"TITLE",12:"SET",14:"BRACKET_LABEL",15:"COLON",16:"NUMERIC",17:"UNION",19:"TEXT",20:"IDENTIFIER",21:"STRING",22:"INDENT_TEXT",24:"STYLE",27:"COMMA",31:"HEXCOLOR",32:"RGBCOLOR",33:"RGBACOLOR"},productions_:[0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,1],[13,1]],performAction:d(function(x,b,k,l,m,f,V){var I=f.length-1;switch(m){case 1:return f[I-1];case 2:case 3:case 4:this.$=[];break;case 5:f[I-1].push(f[I]),this.$=f[I-1];break;case 6:this.$=[];break;case 7:case 22:case 32:case 36:case 37:case 38:case 39:case 40:this.$=f[I];break;case 8:l.setDiagramTitle(f[I].substr(6)),this.$=f[I].substr(6);break;case 9:l.addSubsetData([f[I]],void 0,void 0),l.setIndentMode&&l.setIndentMode(!0);break;case 10:l.addSubsetData([f[I-1]],f[I],void 0),l.setIndentMode&&l.setIndentMode(!0);break;case 11:l.addSubsetData([f[I-2]],void 0,parseFloat(f[I])),l.setIndentMode&&l.setIndentMode(!0);break;case 12:l.addSubsetData([f[I-3]],f[I-2],parseFloat(f[I])),l.setIndentMode&&l.setIndentMode(!0);break;case 13:if(f[I].length<2)throw new Error("union requires multiple identifiers");l.validateUnionIdentifiers&&l.validateUnionIdentifiers(f[I]),l.addSubsetData(f[I],void 0,void 0),l.setIndentMode&&l.setIndentMode(!0);break;case 14:if(f[I-1].length<2)throw new Error("union requires multiple identifiers");l.validateUnionIdentifiers&&l.validateUnionIdentifiers(f[I-1]),l.addSubsetData(f[I-1],f[I],void 0),l.setIndentMode&&l.setIndentMode(!0);break;case 15:if(f[I-2].length<2)throw new Error("union requires multiple identifiers");l.validateUnionIdentifiers&&l.validateUnionIdentifiers(f[I-2]),l.addSubsetData(f[I-2],void 0,parseFloat(f[I])),l.setIndentMode&&l.setIndentMode(!0);break;case 16:if(f[I-3].length<2)throw new Error("union requires multiple identifiers");l.validateUnionIdentifiers&&l.validateUnionIdentifiers(f[I-3]),l.addSubsetData(f[I-3],f[I-2],parseFloat(f[I])),l.setIndentMode&&l.setIndentMode(!0);break;case 17:case 18:case 19:l.addTextData(f[I-1],f[I],void 0);break;case 20:case 21:l.addTextData(f[I-2],f[I-1],f[I]);break;case 23:l.addStyleData(f[I-1],f[I]);break;case 24:case 25:case 26:var C=l.getCurrentSets();if(!C)throw new Error("text requires set");l.addTextData(C,f[I],void 0);break;case 27:case 28:var C=l.getCurrentSets();if(!C)throw new Error("text requires set");l.addTextData(C,f[I-1],f[I]);break;case 29:case 41:this.$=[f[I]];break;case 30:case 42:this.$=[...f[I-2],f[I]];break;case 31:this.$=[f[I-2],f[I]];break;case 33:this.$=f[I].join(" ");break;case 34:this.$=[f[I]];break;case 35:f[I-1].push(f[I]),this.$=f[I-1];break;case 43:case 44:this.$=f[I];break}},"anonymous"),table:[t(n,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},t(s,[2,4],{6:5}),t(n,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},t(s,[2,5]),t(s,[2,6]),t(s,[2,7]),t(s,[2,8]),{13:16,20:e,21:i},{13:20,18:19,20:e,21:i},{13:20,18:21,20:e,21:i},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:e,21:i},t(s,[2,9],{14:[1,27],15:[1,28]}),t(r,[2,43]),t(r,[2,44]),t(s,[2,13],{14:[1,29],15:[1,30],27:a}),t(r,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:a},t(s,[2,22]),t(s,[2,24],{14:[1,35]}),t(s,[2,25],{14:[1,36]}),t(s,[2,26]),{20:c,25:37,26:38,27:a},t(s,[2,10],{15:[1,40]}),{16:[1,41]},t(s,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:e,21:i},t(s,[2,17],{14:[1,45]}),t(s,[2,18],{14:[1,46]}),t(s,[2,19]),t(s,[2,27]),t(s,[2,28]),t(s,[2,23],{27:[1,47]}),t(h,[2,29]),{15:[1,48]},{16:[1,49]},t(s,[2,11]),{16:[1,50]},t(s,[2,15]),t(r,[2,42]),t(s,[2,20]),t(s,[2,21]),{20:c,26:51},{16:u,20:o,21:[1,53],28:52,29:54,30:55,31:p,32:g,33:v},t(s,[2,12]),t(s,[2,16]),t(h,[2,30]),t(h,[2,31]),t(h,[2,32]),t(h,[2,33],{30:61,16:u,20:o,31:p,32:g,33:v}),t(y,[2,34]),t(y,[2,36]),t(y,[2,37]),t(y,[2,38]),t(y,[2,39]),t(y,[2,40]),t(y,[2,35])],defaultActions:{6:[2,1]},parseError:d(function(x,b){if(b.recoverable)this.trace(x);else{var k=new Error(x);throw k.hash=b,k}},"parseError"),parse:d(function(x){var b=this,k=[0],l=[],m=[null],f=[],V=this.table,I="",C=0,G=0,F=0,T=2,R=1,z=f.slice.call(arguments,1),_=Object.create(this.lexer),O={yy:{}};for(var N in this.yy)Object.prototype.hasOwnProperty.call(this.yy,N)&&(O.yy[N]=this.yy[N]);_.setInput(x,O.yy),O.yy.lexer=_,O.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var L=_.yylloc;f.push(L);var H=_.options&&_.options.ranges;typeof O.yy.parseError=="function"?this.parseError=O.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Y(W){k.length=k.length-2*W,m.length=m.length-W,f.length=f.length-W}d(Y,"popStack");function j(){var W;return W=l.pop()||_.lex()||R,typeof W!="number"&&(W instanceof Array&&(l=W,W=l.pop()),W=b.symbols_[W]||W),W}d(j,"lex");for(var A,K,U,M,B,et,Z={},X,P,wt,st;;){if(U=k[k.length-1],this.defaultActions[U]?M=this.defaultActions[U]:((A===null||typeof A>"u")&&(A=j()),M=V[U]&&V[U][A]),typeof M>"u"||!M.length||!M[0]){var lt="";st=[];for(X in V[U])this.terminals_[X]&&X>T&&st.push("'"+this.terminals_[X]+"'");_.showPosition?lt="Parse error on line "+(C+1)+`: `+_.showPosition()+` Expecting `+st.join(", ")+", got '"+(this.terminals_[A]||A)+"'":lt="Parse error on line "+(C+1)+": Unexpected "+(A==R?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(lt,{text:_.match,token:this.terminals_[A]||A,line:_.yylineno,loc:L,expected:st})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+U+", token: "+A);switch(M[0]){case 1:k.push(A),m.push(_.yytext),f.push(_.yylloc),k.push(M[1]),A=null,K?(A=K,K=null):(G=_.yyleng,I=_.yytext,C=_.yylineno,L=_.yylloc,F>0&&F--);break;case 2:if(P=this.productions_[M[1]][1],Z.$=m[m.length-P],Z._$={first_line:f[f.length-(P||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(P||1)].first_column,last_column:f[f.length-1].last_column},H&&(Z._$.range=[f[f.length-(P||1)].range[0],f[f.length-1].range[1]]),et=this.performAction.apply(Z,[I,G,C,O.yy,M[1],m,f].concat(z)),typeof et<"u")return et;P&&(k=k.slice(0,-1*P*2),m=m.slice(0,-1*P),f=f.slice(0,-1*P)),k.push(this.productions_[M[1]][0]),m.push(Z.$),f.push(Z._$),wt=V[k[k.length-2]][k[k.length-1]],k.push(wt);break;case 3:return!0}}return!0},"parse")},E=(function(){var D={EOF:1,parseError:d(function(b,k){if(this.yy.parser)this.yy.parser.parseError(b,k);else throw new Error(b)},"parseError"),setInput:d(function(x,b){return this.yy=b||this.yy||{},this._input=x,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:d(function(){var x=this._input[0];this.yytext+=x,this.yyleng++,this.offset++,this.match+=x,this.matched+=x;var b=x.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),x},"input"),unput:d(function(x){var b=x.length,k=x.split(/(?:\r\n?|\n)/g);this._input=x+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b),this.offset-=b;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var m=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===l.length?this.yylloc.first_column:0)+l[l.length-k.length].length-k[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[m[0],m[0]+this.yyleng-b]),this.yyleng=this.yytext.length,this},"unput"),more:d(function(){return this._more=!0,this},"more"),reject:d(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:d(function(x){this.unput(this.match.slice(x))},"less"),pastInput:d(function(){var x=this.matched.substr(0,this.matched.length-this.match.length);return(x.length>20?"...":"")+x.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:d(function(){var x=this.match;return x.length<20&&(x+=this._input.substr(0,20-x.length)),(x.substr(0,20)+(x.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:d(function(){var x=this.pastInput(),b=new Array(x.length+1).join("-");return x+this.upcomingInput()+` diff --git a/assets/mermaid/chunks/mermaid.esm.min/vennDiagram-R4MEU4WM.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/vennDiagram-MWXL3ELB.mjs.map similarity index 99% rename from assets/mermaid/chunks/mermaid.esm.min/vennDiagram-R4MEU4WM.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/vennDiagram-MWXL3ELB.mjs.map index ef76ac6..1bd0037 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/vennDiagram-R4MEU4WM.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/vennDiagram-MWXL3ELB.mjs.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../src/diagrams/venn/parser/venn.jison", "../../../src/diagrams/venn/vennDB.ts", "../../../src/diagrams/venn/styles.ts", "../../../../../node_modules/.pnpm/@upsetjs+venn.js@2.0.0/node_modules/@upsetjs/venn.js/build/venn.esm.js", "../../../src/diagrams/venn/vennRenderer.ts", "../../../src/diagrams/venn/vennDiagram.ts"], "sourcesContent": ["/* 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=[5,8],$V1=[7,8,11,12,17,19,22,24],$V2=[1,17],$V3=[1,18],$V4=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],$V5=[1,31],$V6=[1,39],$V7=[7,8,11,12,17,19,22,24,27],$V8=[1,57],$V9=[1,56],$Va=[1,58],$Vb=[1,59],$Vc=[1,60],$Vd=[7,8,11,12,16,17,19,20,22,24,27,31,32,33];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"optNewlines\":4,\"VENN\":5,\"document\":6,\"EOF\":7,\"NEWLINE\":8,\"line\":9,\"statement\":10,\"TITLE\":11,\"SET\":12,\"identifier\":13,\"BRACKET_LABEL\":14,\"COLON\":15,\"NUMERIC\":16,\"UNION\":17,\"identifierList\":18,\"TEXT\":19,\"IDENTIFIER\":20,\"STRING\":21,\"INDENT_TEXT\":22,\"indentedTextTail\":23,\"STYLE\":24,\"stylesOpt\":25,\"styleField\":26,\"COMMA\":27,\"styleValue\":28,\"valueTokens\":29,\"valueToken\":30,\"HEXCOLOR\":31,\"RGBCOLOR\":32,\"RGBACOLOR\":33,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"VENN\",7:\"EOF\",8:\"NEWLINE\",11:\"TITLE\",12:\"SET\",14:\"BRACKET_LABEL\",15:\"COLON\",16:\"NUMERIC\",17:\"UNION\",19:\"TEXT\",20:\"IDENTIFIER\",21:\"STRING\",22:\"INDENT_TEXT\",24:\"STYLE\",27:\"COMMA\",31:\"HEXCOLOR\",32:\"RGBCOLOR\",33:\"RGBACOLOR\"},\nproductions_: [0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,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 1:\n return $$[$0-1]; \nbreak;\ncase 2: case 3: case 4:\n this.$ = [] \nbreak;\ncase 5:\n $$[$0-1].push($$[$0]); this.$ = $$[$0-1] \nbreak;\ncase 6:\n this.$ = []; \nbreak;\ncase 7: case 22: case 32: case 36: case 37: case 38: case 39: case 40:\n this.$ = $$[$0]; \nbreak;\ncase 8:\n yy.setDiagramTitle($$[$0].substr(6)); this.$ = $$[$0].substr(6); \nbreak;\ncase 9:\n yy.addSubsetData([$$[$0]], undefined, undefined); if (yy.setIndentMode) { yy.setIndentMode(true); } \nbreak;\ncase 10:\n yy.addSubsetData([$$[$0-1]], $$[$0], undefined); if (yy.setIndentMode) { yy.setIndentMode(true); } \nbreak;\ncase 11:\n yy.addSubsetData([$$[$0-2]], undefined, parseFloat($$[$0])); if (yy.setIndentMode) { yy.setIndentMode(true); } \nbreak;\ncase 12:\n yy.addSubsetData([$$[$0-3]], $$[$0-2], parseFloat($$[$0])); if (yy.setIndentMode) { yy.setIndentMode(true); } \nbreak;\ncase 13:\n if ($$[$0].length < 2) { throw new Error('union requires multiple identifiers'); } if (yy.validateUnionIdentifiers) { yy.validateUnionIdentifiers($$[$0]); } yy.addSubsetData($$[$0], undefined, undefined); if (yy.setIndentMode) { yy.setIndentMode(true); } \nbreak;\ncase 14:\n if ($$[$0-1].length < 2) { throw new Error('union requires multiple identifiers'); } if (yy.validateUnionIdentifiers) { yy.validateUnionIdentifiers($$[$0-1]); } yy.addSubsetData($$[$0-1], $$[$0], undefined); if (yy.setIndentMode) { yy.setIndentMode(true); } \nbreak;\ncase 15:\n if ($$[$0-2].length < 2) { throw new Error('union requires multiple identifiers'); } if (yy.validateUnionIdentifiers) { yy.validateUnionIdentifiers($$[$0-2]); } yy.addSubsetData($$[$0-2], undefined, parseFloat($$[$0])); if (yy.setIndentMode) { yy.setIndentMode(true); } \nbreak;\ncase 16:\n if ($$[$0-3].length < 2) { throw new Error('union requires multiple identifiers'); } if (yy.validateUnionIdentifiers) { yy.validateUnionIdentifiers($$[$0-3]); } yy.addSubsetData($$[$0-3], $$[$0-2], parseFloat($$[$0])); if (yy.setIndentMode) { yy.setIndentMode(true); } \nbreak;\ncase 17: case 18: case 19:\n yy.addTextData($$[$0-1], $$[$0], undefined); \nbreak;\ncase 20: case 21:\n yy.addTextData($$[$0-2], $$[$0-1], $$[$0]); \nbreak;\ncase 23:\n yy.addStyleData($$[$0-1], $$[$0]); \nbreak;\ncase 24: case 25: case 26:\n var cs = yy.getCurrentSets(); if (!cs) throw new Error('text requires set'); yy.addTextData(cs, $$[$0], undefined); \nbreak;\ncase 27: case 28:\n var cs = yy.getCurrentSets(); if (!cs) throw new Error('text requires set'); yy.addTextData(cs, $$[$0-1], $$[$0]); \nbreak;\ncase 29: case 41:\n this.$ = [$$[$0]] \nbreak;\ncase 30: case 42:\n this.$ = [...$$[$0-2], $$[$0]] \nbreak;\ncase 31:\n this.$ = [$$[$0-2], $$[$0]] \nbreak;\ncase 33:\n this.$ = $$[$0].join(' '); \nbreak;\ncase 34:\n this.$ = [$$[$0]]; \nbreak;\ncase 35:\n $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; \nbreak;\ncase 43: case 44:\n this.$ = $$[$0] \nbreak;\n}\n},\ntable: [o($V0,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},o($V1,[2,4],{6:5}),o($V0,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},o($V1,[2,5]),o($V1,[2,6]),o($V1,[2,7]),o($V1,[2,8]),{13:16,20:$V2,21:$V3},{13:20,18:19,20:$V2,21:$V3},{13:20,18:21,20:$V2,21:$V3},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:$V2,21:$V3},o($V1,[2,9],{14:[1,27],15:[1,28]}),o($V4,[2,43]),o($V4,[2,44]),o($V1,[2,13],{14:[1,29],15:[1,30],27:$V5}),o($V4,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:$V5},o($V1,[2,22]),o($V1,[2,24],{14:[1,35]}),o($V1,[2,25],{14:[1,36]}),o($V1,[2,26]),{20:$V6,25:37,26:38,27:$V5},o($V1,[2,10],{15:[1,40]}),{16:[1,41]},o($V1,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:$V2,21:$V3},o($V1,[2,17],{14:[1,45]}),o($V1,[2,18],{14:[1,46]}),o($V1,[2,19]),o($V1,[2,27]),o($V1,[2,28]),o($V1,[2,23],{27:[1,47]}),o($V7,[2,29]),{15:[1,48]},{16:[1,49]},o($V1,[2,11]),{16:[1,50]},o($V1,[2,15]),o($V4,[2,42]),o($V1,[2,20]),o($V1,[2,21]),{20:$V6,26:51},{16:$V8,20:$V9,21:[1,53],28:52,29:54,30:55,31:$Va,32:$Vb,33:$Vc},o($V1,[2,12]),o($V1,[2,16]),o($V7,[2,30]),o($V7,[2,31]),o($V7,[2,32]),o($V7,[2,33],{30:61,16:$V8,20:$V9,31:$Va,32:$Vb,33:$Vc}),o($Vd,[2,34]),o($Vd,[2,36]),o($Vd,[2,37]),o($Vd,[2,38]),o($Vd,[2,39]),o($Vd,[2,40]),o($Vd,[2,35])],\ndefaultActions: {6:[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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2:/* ignore whitespace-only lines */\nbreak;\ncase 3:\n if (yy.getIndentMode && yy.getIndentMode()) {\n yy.consumeIndentText = true;\n this.begin('INITIAL');\n return 22;\n }\n\nbreak;\ncase 4:/* ignore leading whitespace */\nbreak;\ncase 5: if (yy.setIndentMode) { yy.setIndentMode(false); } this.begin('INITIAL'); this.unput(yy_.yytext); \nbreak;\ncase 6: this.begin('bol'); return 8; \nbreak;\ncase 7:/* do nothing */\nbreak;\ncase 8:/* skip */\nbreak;\ncase 9:return 7;\nbreak;\ncase 10: return 11; \nbreak;\ncase 11: return 5; \nbreak;\ncase 12: return 12; \nbreak;\ncase 13: return 17; \nbreak;\ncase 14: if (yy.consumeIndentText) { yy.consumeIndentText = false; } else { return 19; } \nbreak;\ncase 15: return 24; \nbreak;\ncase 16: yy_.yytext = yy_.yytext.slice(2, -2); return 14; \nbreak;\ncase 17: yy_.yytext = yy_.yytext.slice(1, -1).trim(); return 14; \nbreak;\ncase 18: return 16; \nbreak;\ncase 19: return 31; \nbreak;\ncase 20: return 33; \nbreak;\ncase 21: return 32; \nbreak;\ncase 22: return 20; \nbreak;\ncase 23: return 21; \nbreak;\ncase 24: return 27; \nbreak;\ncase 25: return 15; \nbreak;\n}\n},\nrules: [/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[ \\t]+(?=[\\n\\r]))/i,/^(?:[ \\t]+(?=text\\b))/i,/^(?:[ \\t]+)/i,/^(?:[^ \\t\\n\\r])/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[ \\t]+)/i,/^(?:$)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:venn-beta\\b)/i,/^(?:set\\b)/i,/^(?:union\\b)/i,/^(?:text\\b)/i,/^(?:style\\b)/i,/^(?:\\[\"[^\\\"]*\"\\])/i,/^(?:\\[[^\\]\\\"]+\\])/i,/^(?:[+-]?(\\d+(\\.\\d+)?|\\.\\d+))/i,/^(?:#[0-9a-fA-F]{3,8})/i,/^(?:rgba\\(\\s*[0-9.]+\\s*[,]\\s*[0-9.]+\\s*[,]\\s*[0-9.]+\\s*[,]\\s*[0-9.]+\\s*\\))/i,/^(?:rgb\\(\\s*[0-9.]+\\s*[,]\\s*[0-9.]+\\s*[,]\\s*[0-9.]+\\s*\\))/i,/^(?:[A-Za-z_][A-Za-z0-9\\-_]*)/i,/^(?:\"[^\\\"]*\")/i,/^(?:,)/i,/^(?::)/i],\nconditions: {\"bol\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],\"inclusive\":true},\"INITIAL\":{\"rules\":[0,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "import type { VennDB, VennData, VennTextData, VennStyleData } from './vennTypes.js';\nimport type { VennDiagramConfig } from '../../config.type.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { getConfig as commonGetConfig } from '../../config.js';\nimport {\n clear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport DEFAULT_CONFIG from '../../defaultConfig.js';\n\nconst subsets: VennData[] = [];\nconst textNodes: VennTextData[] = [];\nconst styleEntries: VennStyleData[] = [];\nconst knownSets = new Set();\nlet currentSets: string[] | undefined;\nlet indentMode = false;\n\nexport const addSubsetData: VennDB['addSubsetData'] = (identifierList, label, size) => {\n const sets = normalizeIdentifierList(identifierList).sort();\n const resolvedSize = size ?? 10 / Math.pow(identifierList.length, 2);\n currentSets = sets;\n if (sets.length === 1) {\n knownSets.add(sets[0]);\n }\n\n subsets.push({\n sets,\n size: resolvedSize,\n label: label ? normalizeText(label) : undefined,\n });\n};\n\nexport const getSubsetData = () => {\n return subsets;\n};\n\nconst normalizeText = (text: string) => {\n const trimmed = text.trim();\n if (trimmed.length >= 2 && trimmed.startsWith('\"') && trimmed.endsWith('\"')) {\n return trimmed.slice(1, -1);\n }\n return trimmed;\n};\n\nconst normalizeStyleValue = (value: string | undefined): string | undefined => {\n return value ? normalizeText(value) : value;\n};\n\nexport const addTextData: VennDB['addTextData'] = (identifierList, id, label) => {\n const normalizedId = normalizeText(id);\n textNodes.push({\n sets: normalizeIdentifierList(identifierList).sort(),\n id: normalizedId,\n label: label ? normalizeText(label) : undefined,\n });\n};\n\nexport const addStyleData: VennDB['addStyleData'] = (identifierList, data) => {\n const targets = normalizeIdentifierList(identifierList).sort();\n const styles: Record = {};\n for (const [key, value] of data) {\n styles[key] = normalizeStyleValue(value) ?? value;\n }\n styleEntries.push({ targets, styles });\n};\n\nexport const getStyleData = () => {\n return styleEntries;\n};\n\nconst normalizeIdentifierList = (identifierList: string[]) => {\n return identifierList.map((identifier) => normalizeText(identifier));\n};\n\nexport const validateUnionIdentifiers: VennDB['validateUnionIdentifiers'] = (identifierList) => {\n const normalized = normalizeIdentifierList(identifierList);\n const unknown = normalized.filter((identifier) => !knownSets.has(identifier));\n if (unknown.length > 0) {\n throw new Error(`unknown set identifier: ${unknown.join(', ')}`);\n }\n};\n\nexport const getTextData = () => {\n return textNodes;\n};\n\nexport const getCurrentSets: VennDB['getCurrentSets'] = () => currentSets;\nexport const getIndentMode: VennDB['getIndentMode'] = () => indentMode;\nexport const setIndentMode: VennDB['setIndentMode'] = (enabled) => {\n indentMode = enabled;\n};\n\nconst DEFAULT_VENN_CONFIG: Required = DEFAULT_CONFIG.venn;\n\nfunction getConfig(): Required {\n return cleanAndMerge(DEFAULT_VENN_CONFIG, commonGetConfig().venn);\n}\n\nconst customClear = () => {\n clear();\n subsets.length = 0;\n textNodes.length = 0;\n styleEntries.length = 0;\n knownSets.clear();\n currentSets = undefined;\n indentMode = false;\n};\n\nexport const db: VennDB = {\n getConfig,\n clear: customClear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n addSubsetData,\n getSubsetData,\n addTextData,\n addStyleData,\n validateUnionIdentifiers,\n getTextData,\n getStyleData,\n getCurrentSets,\n getIndentMode,\n setIndentMode,\n};\n", "export interface VennChartStyleOptions {\n vennTitleTextColor: string;\n vennSetTextColor: string;\n fontFamily: string;\n textColor: string;\n}\n\nconst getStyles = (options: VennChartStyleOptions) =>\n `\n .venn-title {\n font-size: 32px;\n fill: ${options.vennTitleTextColor};\n font-family: ${options.fontFamily};\n }\n\n .venn-circle text {\n font-size: 48px;\n font-family: ${options.fontFamily};\n }\n\n .venn-intersection text {\n font-size: 48px;\n fill: ${options.vennSetTextColor};\n font-family: ${options.fontFamily};\n }\n\n .venn-text-node {\n font-family: ${options.fontFamily};\n color: ${options.vennSetTextColor};\n }\n`;\n\nexport default getStyles;\n", "const SMALL$1 = 1e-10;\n\n/**\n * Returns the intersection area of a bunch of circles (where each circle\n * is an object having an x,y and radius property)\n * @param {ReadonlyArray<{x: number, y: number, radius: number}>} circles\n * @param {undefined | { area?: number, arcArea?: number, polygonArea?: number, arcs?: ReadonlyArray<{ circle: {x: number, y: number, radius: number}, width: number, p1: {x: number, y: number}, p2: {x: number, y: number} }>, innerPoints: ReadonlyArray<{\n x: number;\n y: number;\n parentIndex: [number, number];\n}>, intersectionPoints: ReadonlyArray<{\n x: number;\n y: number;\n parentIndex: [number, number];\n}> }} stats\n * @returns {number}\n */\nfunction intersectionArea(circles, stats) {\n // get all the intersection points of the circles\n const intersectionPoints = getIntersectionPoints(circles);\n\n // filter out points that aren't included in all the circles\n const innerPoints = intersectionPoints.filter((p) => containedInCircles(p, circles));\n\n let arcArea = 0;\n let polygonArea = 0;\n /** @type {{ circle: {x: number, y: number, radius: number}, width: number, p1: {x: number, y: number}, p2: {x: number, y: number} }[]} */\n const arcs = [];\n\n // if we have intersection points that are within all the circles,\n // then figure out the area contained by them\n if (innerPoints.length > 1) {\n // sort the points by angle from the center of the polygon, which lets\n // us just iterate over points to get the edges\n const center = getCenter(innerPoints);\n for (let i = 0; i < innerPoints.length; ++i) {\n const p = innerPoints[i];\n p.angle = Math.atan2(p.x - center.x, p.y - center.y);\n }\n innerPoints.sort((a, b) => b.angle - a.angle);\n\n // iterate over all points, get arc between the points\n // and update the areas\n let p2 = innerPoints[innerPoints.length - 1];\n for (let i = 0; i < innerPoints.length; ++i) {\n const p1 = innerPoints[i];\n\n // polygon area updates easily ...\n polygonArea += (p2.x + p1.x) * (p1.y - p2.y);\n\n // updating the arc area is a little more involved\n const midPoint = { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 };\n /** @types null | { circle: {x: number, y: number, radius: number}, width: number, p1: {x: number, y: number}, p2: {x: number, y: number} } */\n let arc = null;\n\n for (let j = 0; j < p1.parentIndex.length; ++j) {\n if (p2.parentIndex.includes(p1.parentIndex[j])) {\n // figure out the angle halfway between the two points\n // on the current circle\n const circle = circles[p1.parentIndex[j]];\n const a1 = Math.atan2(p1.x - circle.x, p1.y - circle.y);\n const a2 = Math.atan2(p2.x - circle.x, p2.y - circle.y);\n\n let angleDiff = a2 - a1;\n if (angleDiff < 0) {\n angleDiff += 2 * Math.PI;\n }\n\n // and use that angle to figure out the width of the\n // arc\n const a = a2 - angleDiff / 2;\n let width = distance(midPoint, {\n x: circle.x + circle.radius * Math.sin(a),\n y: circle.y + circle.radius * Math.cos(a),\n });\n\n // clamp the width to the largest is can actually be\n // (sometimes slightly overflows because of FP errors)\n if (width > circle.radius * 2) {\n width = circle.radius * 2;\n }\n\n // pick the circle whose arc has the smallest width\n if (arc == null || arc.width > width) {\n arc = { circle, width, p1, p2, large: width > circle.radius, sweep: true };\n }\n }\n }\n\n if (arc != null) {\n arcs.push(arc);\n arcArea += circleArea(arc.circle.radius, arc.width);\n p2 = p1;\n }\n }\n } else {\n // no intersection points, is either disjoint - or is completely\n // overlapped. figure out which by examining the smallest circle\n let smallest = circles[0];\n for (let i = 1; i < circles.length; ++i) {\n if (circles[i].radius < smallest.radius) {\n smallest = circles[i];\n }\n }\n\n // make sure the smallest circle is completely contained in all\n // the other circles\n let disjoint = false;\n for (let i = 0; i < circles.length; ++i) {\n if (distance(circles[i], smallest) > Math.abs(smallest.radius - circles[i].radius)) {\n disjoint = true;\n break;\n }\n }\n\n if (disjoint) {\n arcArea = polygonArea = 0;\n } else {\n arcArea = smallest.radius * smallest.radius * Math.PI;\n arcs.push({\n circle: smallest,\n p1: { x: smallest.x, y: smallest.y + smallest.radius },\n p2: { x: smallest.x - SMALL$1, y: smallest.y + smallest.radius },\n width: smallest.radius * 2,\n large: true,\n sweep: true,\n });\n }\n }\n\n polygonArea /= 2;\n\n if (stats) {\n stats.area = arcArea + polygonArea;\n stats.arcArea = arcArea;\n stats.polygonArea = polygonArea;\n stats.arcs = arcs;\n stats.innerPoints = innerPoints;\n stats.intersectionPoints = intersectionPoints;\n }\n\n return arcArea + polygonArea;\n}\n\n/**\n * returns whether a point is contained by all of a list of circles\n * @param {{x: number, y: number}} point\n * @param {ReadonlyArray<{x: number, y: number, radius: number}>} circles\n * @returns {boolean}\n */\nfunction containedInCircles(point, circles) {\n return circles.every((circle) => distance(point, circle) < circle.radius + SMALL$1);\n}\n\n/**\n * Gets all intersection points between a bunch of circles\n * @param {ReadonlyArray<{x: number, y: number, radius: number}>} circles\n * @returns {ReadonlyArray<{x: number, y: number, parentIndex: [number, number]}>}\n */\nfunction getIntersectionPoints(circles) {\n /** @type {{x: number, y: number, parentIndex: [number, number]}[]} */\n const ret = [];\n for (let i = 0; i < circles.length; ++i) {\n for (let j = i + 1; j < circles.length; ++j) {\n const intersect = circleCircleIntersection(circles[i], circles[j]);\n for (const p of intersect) {\n p.parentIndex = [i, j];\n ret.push(p);\n }\n }\n }\n return ret;\n}\n\n/**\n * Circular segment area calculation. See http://mathworld.wolfram.com/CircularSegment.html\n * @param {number} r\n * @param {number} width\n * @returns {number}\n **/\nfunction circleArea(r, width) {\n return r * r * Math.acos(1 - width / r) - (r - width) * Math.sqrt(width * (2 * r - width));\n}\n\n/**\n * euclidean distance between two points\n * @param {{x: number, y: number}} p1\n * @param {{x: number, y: number}} p2\n * @returns {number}\n **/\nfunction distance(p1, p2) {\n return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));\n}\n\n/**\n * Returns the overlap area of two circles of radius r1 and r2 - that\n * have their centers separated by distance d. Simpler faster\n * circle intersection for only two circles\n * @param {number} r1\n * @param {number} r2\n * @param {number} d\n * @returns {number}\n */\nfunction circleOverlap(r1, r2, d) {\n // no overlap\n if (d >= r1 + r2) {\n return 0;\n }\n\n // completely overlapped\n if (d <= Math.abs(r1 - r2)) {\n return Math.PI * Math.min(r1, r2) * Math.min(r1, r2);\n }\n\n const w1 = r1 - (d * d - r2 * r2 + r1 * r1) / (2 * d);\n const w2 = r2 - (d * d - r1 * r1 + r2 * r2) / (2 * d);\n return circleArea(r1, w1) + circleArea(r2, w2);\n}\n\n/**\n * Given two circles (containing a x/y/radius attributes),\n * returns the intersecting points if possible\n * note: doesn't handle cases where there are infinitely many\n * intersection points (circles are equivalent):, or only one intersection point\n * @param {{x: number, y: number, radius: number}} p1\n * @param {{x: number, y: number, radius: number}} p2\n * @returns {ReadonlyArray<{x: number, y: number}>}\n **/\nfunction circleCircleIntersection(p1, p2) {\n const d = distance(p1, p2);\n const r1 = p1.radius;\n const r2 = p2.radius;\n\n // if to far away, or self contained - can't be done\n if (d >= r1 + r2 || d <= Math.abs(r1 - r2)) {\n return [];\n }\n\n const a = (r1 * r1 - r2 * r2 + d * d) / (2 * d);\n const h = Math.sqrt(r1 * r1 - a * a);\n const x0 = p1.x + (a * (p2.x - p1.x)) / d;\n const y0 = p1.y + (a * (p2.y - p1.y)) / d;\n const rx = -(p2.y - p1.y) * (h / d);\n const ry = -(p2.x - p1.x) * (h / d);\n\n return [\n { x: x0 + rx, y: y0 - ry },\n { x: x0 - rx, y: y0 + ry },\n ];\n}\n\n/**\n * Returns the center of a bunch of points\n * @param {ReadonlyArray<{x: number, y: number}>} points\n * @returns {{x: number, y: number}}\n */\nfunction getCenter(points) {\n const center = { x: 0, y: 0 };\n for (const point of points) {\n center.x += point.x;\n center.y += point.y;\n }\n center.x /= points.length;\n center.y /= points.length;\n return center;\n}\n\n/** finds the zeros of a function, given two starting points (which must\n * have opposite signs */\nfunction bisect(f, a, b, parameters) {\n parameters = parameters || {};\n const maxIterations = parameters.maxIterations || 100;\n const tolerance = parameters.tolerance || 1e-10;\n const fA = f(a);\n const fB = f(b);\n let delta = b - a;\n\n if (fA * fB > 0) {\n throw 'Initial bisect points must have opposite signs';\n }\n\n if (fA === 0) return a;\n if (fB === 0) return b;\n\n for (let i = 0; i < maxIterations; ++i) {\n delta /= 2;\n const mid = a + delta;\n const fMid = f(mid);\n\n if (fMid * fA >= 0) {\n a = mid;\n }\n\n if (Math.abs(delta) < tolerance || fMid === 0) {\n return mid;\n }\n }\n return a + delta;\n}\n\n// need some basic operations on vectors, rather than adding a dependency,\n// just define here\nfunction zeros(x) {\n const r = new Array(x);\n for (let i = 0; i < x; ++i) {\n r[i] = 0;\n }\n return r;\n}\nfunction zerosM(x, y) {\n return zeros(x).map(() => zeros(y));\n}\n\nfunction dot(a, b) {\n let ret = 0;\n for (let i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n}\n\nfunction norm2(a) {\n return Math.sqrt(dot(a, a));\n}\n\nfunction scale(ret, value, c) {\n for (let i = 0; i < value.length; ++i) {\n ret[i] = value[i] * c;\n }\n}\n\nfunction weightedSum(ret, w1, v1, w2, v2) {\n for (let j = 0; j < ret.length; ++j) {\n ret[j] = w1 * v1[j] + w2 * v2[j];\n }\n}\n\n/** minimizes a function using the downhill simplex method */\nfunction nelderMead(f, x0, parameters) {\n parameters = parameters || {};\n\n const maxIterations = parameters.maxIterations || x0.length * 200;\n const nonZeroDelta = parameters.nonZeroDelta || 1.05;\n const zeroDelta = parameters.zeroDelta || 0.001;\n const minErrorDelta = parameters.minErrorDelta || 1e-6;\n const minTolerance = parameters.minErrorDelta || 1e-5;\n const rho = parameters.rho !== undefined ? parameters.rho : 1;\n const chi = parameters.chi !== undefined ? parameters.chi : 2;\n const psi = parameters.psi !== undefined ? parameters.psi : -0.5;\n const sigma = parameters.sigma !== undefined ? parameters.sigma : 0.5;\n let maxDiff;\n\n // initialize simplex.\n const N = x0.length;\n const simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (let i = 0; i < N; ++i) {\n const point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i + 1] = point;\n simplex[i + 1].fx = f(point);\n simplex[i + 1].id = i + 1;\n }\n\n function updateSimplex(value) {\n for (let i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n\n const sortOrder = (a, b) => a.fx - b.fx;\n\n const centroid = x0.slice();\n const reflected = x0.slice();\n const contracted = x0.slice();\n const expanded = x0.slice();\n\n for (let iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n const sortedSimplex = simplex.map((x) => {\n const state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort((a, b) => a.id - b.id);\n\n parameters.history.push({\n x: simplex[0].slice(),\n fx: simplex[0].fx,\n simplex: sortedSimplex,\n });\n }\n\n maxDiff = 0;\n for (let i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n\n if (Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta && maxDiff < minTolerance) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (let i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (let j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n const worst = simplex[N];\n weightedSum(reflected, 1 + rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1 + chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N - 1].fx) {\n let shouldReduce = false;\n\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1 + psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1 - psi * rho, centroid, psi * rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) break;\n\n // do a reduction\n for (let i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n\n simplex.sort(sortOrder);\n return { fx: simplex[0].fx, x: simplex[0] };\n}\n\n/// searches along line 'pk' for a point that satifies the wolfe conditions\n/// See 'Numerical Optimization' by Nocedal and Wright p59-60\n/// f : objective function\n/// pk : search direction\n/// current: object containing current gradient/loss\n/// next: output: contains next gradient/loss\n/// returns a: step size taken\nfunction wolfeLineSearch(f, pk, current, next, a, c1, c2) {\n const phi0 = current.fx;\n const phiPrime0 = dot(current.fxprime, pk);\n let phi = phi0;\n let phi_old = phi0;\n let phiPrime = phiPrime0;\n let a0 = 0;\n\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n\n function zoom(a_lo, a_high, phi_lo) {\n for (let iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high) / 2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n\n if (phi > phi0 + c1 * a * phiPrime0 || phi >= phi_lo) {\n a_high = a;\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime * (a_high - a_lo) >= 0) {\n a_high = a_lo;\n }\n\n a_lo = a;\n phi_lo = phi;\n }\n }\n\n return 0;\n }\n\n for (let iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if (phi > phi0 + c1 * a * phiPrime0 || (iteration && phi >= phi_old)) {\n return zoom(a0, a, phi_old);\n }\n\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime >= 0) {\n return zoom(a, a0, phi);\n }\n\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n\n return a;\n}\n\nfunction conjugateGradient(f, initial, params) {\n // allocate all memory up front here, keep out of the loop for perfomance\n // reasons\n let current = { x: initial.slice(), fx: 0, fxprime: initial.slice() };\n let next = { x: initial.slice(), fx: 0, fxprime: initial.slice() };\n const yk = initial.slice();\n let pk;\n let temp;\n let a = 1;\n let maxIterations;\n\n params = params || {};\n maxIterations = params.maxIterations || initial.length * 20;\n\n current.fx = f(current.x, current.fxprime);\n pk = current.fxprime.slice();\n scale(pk, current.fxprime, -1);\n\n for (let i = 0; i < maxIterations; ++i) {\n a = wolfeLineSearch(f, pk, current, next, a);\n\n // todo: history in wrong spot?\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a,\n });\n }\n\n if (!a) {\n // faiiled to find point that satifies wolfe conditions.\n // reset direction for next iteration\n scale(pk, current.fxprime, -1);\n } else {\n // update direction using Polak\u2013Ribiere CG method\n weightedSum(yk, 1, next.fxprime, -1, current.fxprime);\n\n const delta_k = dot(current.fxprime, current.fxprime);\n const beta_k = Math.max(0, dot(yk, next.fxprime) / delta_k);\n\n weightedSum(pk, beta_k, pk, -1, next.fxprime);\n\n temp = current;\n current = next;\n next = temp;\n }\n\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n\n if (params.history) {\n params.history.push({\n x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a,\n });\n }\n\n return current;\n}\n\n/**\n * given a list of set objects, and their corresponding overlaps\n * updates the (x, y, radius) attribute on each set such that their positions\n * roughly correspond to the desired overlaps\n * @param {readonly {sets: readonly string[]; size: number; weight?: number}[]} sets\n * @returns {{[setid: string]: {x: number, y: number, radius: number}}}\n */\nfunction venn(sets, parameters = {}) {\n parameters.maxIterations = parameters.maxIterations || 500;\n\n const initialLayout = parameters.initialLayout || bestInitialLayout;\n const loss = parameters.lossFunction || lossFunction;\n\n // add in missing pairwise areas as having 0 size\n const areas = addMissingAreas(sets, parameters);\n\n // initial layout is done greedily\n const circles = initialLayout(areas, parameters);\n\n // transform x/y coordinates to a vector to optimize\n const setids = Object.keys(circles);\n /** @type {number[]} */\n const initial = [];\n for (const setid of setids) {\n initial.push(circles[setid].x);\n initial.push(circles[setid].y);\n }\n\n // optimize initial layout from our loss function\n const solution = nelderMead(\n (values) => {\n const current = {};\n for (let i = 0; i < setids.length; ++i) {\n const setid = setids[i];\n current[setid] = {\n x: values[2 * i],\n y: values[2 * i + 1],\n radius: circles[setid].radius,\n // size : circles[setid].size\n };\n }\n return loss(current, areas);\n },\n initial,\n parameters\n );\n\n // transform solution vector back to x/y points\n const positions = solution.x;\n for (let i = 0; i < setids.length; ++i) {\n const setid = setids[i];\n circles[setid].x = positions[2 * i];\n circles[setid].y = positions[2 * i + 1];\n }\n\n return circles;\n}\n\nconst SMALL = 1e-10;\n\n/**\n * Returns the distance necessary for two circles of radius r1 + r2 to\n * have the overlap area 'overlap'\n * @param {number} r1\n * @param {number} r2\n * @param {number} overlap\n * @returns {number}\n */\nfunction distanceFromIntersectArea(r1, r2, overlap) {\n // handle complete overlapped circles\n if (Math.min(r1, r2) * Math.min(r1, r2) * Math.PI <= overlap + SMALL) {\n return Math.abs(r1 - r2);\n }\n\n return bisect((distance) => circleOverlap(r1, r2, distance) - overlap, 0, r1 + r2);\n}\n\n/**\n * Missing pair-wise intersection area data can cause problems:\n * treating as an unknown means that sets will be laid out overlapping,\n * which isn't what people expect. To reflect that we want disjoint sets\n * here, set the overlap to 0 for all missing pairwise set intersections\n * @param {ReadonlyArray<{sets: ReadonlyArray, size: number}>} areas\n * @returns {ReadonlyArray<{sets: ReadonlyArray, size: number}>}\n */\nfunction addMissingAreas(areas, parameters = {}) {\n const distinct = parameters.distinct;\n const r = areas.map((s) => Object.assign({}, s));\n\n function toKey(arr) {\n return arr.join(';');\n }\n\n if (distinct) {\n // recreate the full ones by adding things up but just to level two since the rest doesn't matter\n /** @types Map */\n const count = new Map();\n for (const area of r) {\n for (let i = 0; i < area.sets.length; i++) {\n const si = String(area.sets[i]);\n count.set(si, area.size + (count.get(si) || 0));\n for (let j = i + 1; j < area.sets.length; j++) {\n const sj = String(area.sets[j]);\n const k1 = `${si};${sj}`;\n const k2 = `${sj};${si}`;\n count.set(k1, area.size + (count.get(k1) || 0));\n count.set(k2, area.size + (count.get(k2) || 0));\n }\n }\n }\n for (const area of r) {\n if (area.sets.length < 3) {\n area.size = count.get(toKey(area.sets));\n }\n }\n }\n\n // two circle intersections that aren't defined\n const ids = [];\n\n /** @type {Set} */\n const pairs = new Set();\n for (const area of r) {\n if (area.sets.length === 1) {\n ids.push(area.sets[0]);\n } else if (area.sets.length === 2) {\n const a = area.sets[0];\n const b = area.sets[1];\n pairs.add(toKey(area.sets));\n pairs.add(toKey([b, a]));\n }\n }\n\n ids.sort((a, b) => (a === b ? 0 : a < b ? -1 : +1));\n\n for (let i = 0; i < ids.length; ++i) {\n const a = ids[i];\n for (let j = i + 1; j < ids.length; ++j) {\n const b = ids[j];\n if (!pairs.has(toKey([a, b]))) {\n r.push({ sets: [a, b], size: 0 });\n }\n }\n }\n return r;\n}\n\n/**\n * Returns two matrices, one of the euclidean distances between the sets\n * and the other indicating if there are subset or disjoint set relationships\n * @param {ReadonlyArray<{sets: ReadonlyArray}>} areas\n * @param {ReadonlyArray<{size: number}>} sets\n * @param {ReadonlyArray} setids\n */\nfunction getDistanceMatrices(areas, sets, setids) {\n // initialize an empty distance matrix between all the points\n /**\n * @type {number[][]}\n */\n const distances = zerosM(sets.length, sets.length);\n /**\n * @type {number[][]}\n */\n const constraints = zerosM(sets.length, sets.length);\n\n // compute required distances between all the sets such that\n // the areas match\n areas\n .filter((x) => x.sets.length === 2)\n .forEach((current) => {\n const left = setids[current.sets[0]];\n const right = setids[current.sets[1]];\n const r1 = Math.sqrt(sets[left].size / Math.PI);\n const r2 = Math.sqrt(sets[right].size / Math.PI);\n const distance = distanceFromIntersectArea(r1, r2, current.size);\n\n distances[left][right] = distances[right][left] = distance;\n\n // also update constraints to indicate if its a subset or disjoint\n // relationship\n let c = 0;\n if (current.size + 1e-10 >= Math.min(sets[left].size, sets[right].size)) {\n c = 1;\n } else if (current.size <= 1e-10) {\n c = -1;\n }\n constraints[left][right] = constraints[right][left] = c;\n });\n\n return { distances, constraints };\n}\n\n/// computes the gradient and loss simultaneously for our constrained MDS optimizer\nfunction constrainedMDSGradient(x, fxprime, distances, constraints) {\n for (let i = 0; i < fxprime.length; ++i) {\n fxprime[i] = 0;\n }\n\n let loss = 0;\n for (let i = 0; i < distances.length; ++i) {\n const xi = x[2 * i];\n const yi = x[2 * i + 1];\n for (let j = i + 1; j < distances.length; ++j) {\n const xj = x[2 * j];\n const yj = x[2 * j + 1];\n const dij = distances[i][j];\n const constraint = constraints[i][j];\n\n const squaredDistance = (xj - xi) * (xj - xi) + (yj - yi) * (yj - yi);\n const distance = Math.sqrt(squaredDistance);\n const delta = squaredDistance - dij * dij;\n\n if ((constraint > 0 && distance <= dij) || (constraint < 0 && distance >= dij)) {\n continue;\n }\n\n loss += 2 * delta * delta;\n\n fxprime[2 * i] += 4 * delta * (xi - xj);\n fxprime[2 * i + 1] += 4 * delta * (yi - yj);\n\n fxprime[2 * j] += 4 * delta * (xj - xi);\n fxprime[2 * j + 1] += 4 * delta * (yj - yi);\n }\n }\n return loss;\n}\n\n/**\n * takes the best working variant of either constrained MDS or greedy\n * @param {ReadonlyArray<{sets: ReadonlyArray, size: number}>} areas\n */\nfunction bestInitialLayout(areas, params = {}) {\n let initial = greedyLayout(areas, params);\n const loss = params.lossFunction || lossFunction;\n\n // greedylayout is sufficient for all 2/3 circle cases. try out\n // constrained MDS for higher order problems, take its output\n // if it outperforms. (greedy is aesthetically better on 2/3 circles\n // since it axis aligns)\n if (areas.length >= 8) {\n const constrained = constrainedMDSLayout(areas, params);\n const constrainedLoss = loss(constrained, areas);\n const greedyLoss = loss(initial, areas);\n\n if (constrainedLoss + 1e-8 < greedyLoss) {\n initial = constrained;\n }\n }\n return initial;\n}\n\n/**\n * use the constrained MDS variant to generate an initial layout\n * @param {ReadonlyArray<{sets: ReadonlyArray, size: number}>} areas\n * @returns {{[key: string]: {x: number, y: number, radius: number}}}\n */\nfunction constrainedMDSLayout(areas, params = {}) {\n const restarts = params.restarts || 10;\n\n // bidirectionally map sets to a rowid (so we can create a matrix)\n const sets = [];\n const setids = {};\n for (const area of areas) {\n if (area.sets.length === 1) {\n setids[area.sets[0]] = sets.length;\n sets.push(area);\n }\n }\n\n let { distances, constraints } = getDistanceMatrices(areas, sets, setids);\n\n // keep distances bounded, things get messed up otherwise.\n // TODO: proper preconditioner?\n const norm = norm2(distances.map(norm2)) / distances.length;\n distances = distances.map((row) => row.map((value) => value / norm));\n\n const obj = (x, fxprime) => constrainedMDSGradient(x, fxprime, distances, constraints);\n\n let best = null;\n for (let i = 0; i < restarts; ++i) {\n const initial = zeros(distances.length * 2).map(Math.random);\n\n const current = conjugateGradient(obj, initial, params);\n if (!best || current.fx < best.fx) {\n best = current;\n }\n }\n\n const positions = best.x;\n\n // translate rows back to (x,y,radius) coordinates\n /** @type {{[key: string]: {x: number, y: number, radius: number}}} */\n const circles = {};\n for (let i = 0; i < sets.length; ++i) {\n const set = sets[i];\n circles[set.sets[0]] = {\n x: positions[2 * i] * norm,\n y: positions[2 * i + 1] * norm,\n radius: Math.sqrt(set.size / Math.PI),\n };\n }\n\n if (params.history) {\n for (const h of params.history) {\n scale(h.x, norm);\n }\n }\n return circles;\n}\n\n/**\n * Lays out a Venn diagram greedily, going from most overlapped sets to\n * least overlapped, attempting to position each new set such that the\n * overlapping areas to already positioned sets are basically right\n * @param {ReadonlyArray<{size: number, sets: ReadonlyArray}>} areas\n * @return {{[key: string]: {x: number, y: number, radius: number}}}\n */\nfunction greedyLayout(areas, params) {\n const loss = params && params.lossFunction ? params.lossFunction : lossFunction;\n\n // define a circle for each set\n /** @type {{[key: string]: {x: number, y: number, radius: number}}} */\n const circles = {};\n /** @type {{[key: string]: {set: string, size: number, weight: number}[]}} */\n const setOverlaps = {};\n for (const area of areas) {\n if (area.sets.length === 1) {\n const set = area.sets[0];\n circles[set] = {\n x: 1e10,\n y: 1e10,\n rowid: circles.length,\n size: area.size,\n radius: Math.sqrt(area.size / Math.PI),\n };\n setOverlaps[set] = [];\n }\n }\n\n areas = areas.filter((a) => a.sets.length === 2);\n\n // map each set to a list of all the other sets that overlap it\n for (const current of areas) {\n let weight = current.weight != null ? current.weight : 1.0;\n const left = current.sets[0];\n const right = current.sets[1];\n\n // completely overlapped circles shouldn't be positioned early here\n if (current.size + SMALL >= Math.min(circles[left].size, circles[right].size)) {\n weight = 0;\n }\n\n setOverlaps[left].push({ set: right, size: current.size, weight });\n setOverlaps[right].push({ set: left, size: current.size, weight });\n }\n\n // get list of most overlapped sets\n const mostOverlapped = [];\n Object.keys(setOverlaps).forEach((set) => {\n let size = 0;\n for (let i = 0; i < setOverlaps[set].length; ++i) {\n size += setOverlaps[set][i].size * setOverlaps[set][i].weight;\n }\n\n mostOverlapped.push({ set, size });\n });\n\n // sort by size desc\n function sortOrder(a, b) {\n return b.size - a.size;\n }\n mostOverlapped.sort(sortOrder);\n\n // keep track of what sets have been laid out\n const positioned = {};\n function isPositioned(element) {\n return element.set in positioned;\n }\n\n /**\n * adds a point to the output\n * @param {{x: number, y: number}} point\n * @param {number} index\n */\n function positionSet(point, index) {\n circles[index].x = point.x;\n circles[index].y = point.y;\n positioned[index] = true;\n }\n\n // add most overlapped set at (0,0)\n positionSet({ x: 0, y: 0 }, mostOverlapped[0].set);\n\n // get distances between all points. TODO, necessary?\n // answer: probably not\n // var distances = venn.getDistanceMatrices(circles, areas).distances;\n for (let i = 1; i < mostOverlapped.length; ++i) {\n const setIndex = mostOverlapped[i].set;\n const overlap = setOverlaps[setIndex].filter(isPositioned);\n const set = circles[setIndex];\n overlap.sort(sortOrder);\n\n if (overlap.length === 0) {\n // this shouldn't happen anymore with addMissingAreas\n throw 'ERROR: missing pairwise overlap information';\n }\n\n /** @type {{x: number, y: number}[]} */\n const points = [];\n for (var j = 0; j < overlap.length; ++j) {\n // get appropriate distance from most overlapped already added set\n const p1 = circles[overlap[j].set];\n const d1 = distanceFromIntersectArea(set.radius, p1.radius, overlap[j].size);\n\n // sample positions at 90 degrees for maximum aesthetics\n points.push({ x: p1.x + d1, y: p1.y });\n points.push({ x: p1.x - d1, y: p1.y });\n points.push({ y: p1.y + d1, x: p1.x });\n points.push({ y: p1.y - d1, x: p1.x });\n\n // if we have at least 2 overlaps, then figure out where the\n // set should be positioned analytically and try those too\n for (let k = j + 1; k < overlap.length; ++k) {\n const p2 = circles[overlap[k].set];\n const d2 = distanceFromIntersectArea(set.radius, p2.radius, overlap[k].size);\n\n const extraPoints = circleCircleIntersection(\n { x: p1.x, y: p1.y, radius: d1 },\n { x: p2.x, y: p2.y, radius: d2 }\n );\n points.push(...extraPoints);\n }\n }\n\n // we have some candidate positions for the set, examine loss\n // at each position to figure out where to put it at\n let bestLoss = 1e50;\n let bestPoint = points[0];\n for (const point of points) {\n circles[setIndex].x = point.x;\n circles[setIndex].y = point.y;\n const localLoss = loss(circles, areas);\n if (localLoss < bestLoss) {\n bestLoss = localLoss;\n bestPoint = point;\n }\n }\n\n positionSet(bestPoint, setIndex);\n }\n\n return circles;\n}\n\n/**\n * Given a bunch of sets, and the desired overlaps between these sets - computes\n * the distance from the actual overlaps to the desired overlaps. Note that\n * this method ignores overlaps of more than 2 circles\n * @param {{[key: string]: <{x: number, y: number, radius: number}>}} circles\n * @param {ReadonlyArray<{size: number, sets: ReadonlyArray, weight?: number}>} overlaps\n * @returns {number}\n */\nfunction lossFunction(circles, overlaps) {\n let output = 0;\n\n for (const area of overlaps) {\n if (area.sets.length === 1) {\n continue;\n }\n /** @type {number} */\n let overlap;\n if (area.sets.length === 2) {\n const left = circles[area.sets[0]];\n const right = circles[area.sets[1]];\n overlap = circleOverlap(left.radius, right.radius, distance(left, right));\n } else {\n overlap = intersectionArea(area.sets.map((d) => circles[d]));\n }\n\n const weight = area.weight != null ? area.weight : 1.0;\n output += weight * (overlap - area.size) * (overlap - area.size);\n }\n\n return output;\n}\n\nfunction logRatioLossFunction(circles, overlaps) {\n let output = 0;\n\n for (const area of overlaps) {\n if (area.sets.length === 1) {\n continue;\n }\n /** @type {number} */\n let overlap;\n if (area.sets.length === 2) {\n const left = circles[area.sets[0]];\n const right = circles[area.sets[1]];\n overlap = circleOverlap(left.radius, right.radius, distance(left, right));\n } else {\n overlap = intersectionArea(area.sets.map((d) => circles[d]));\n }\n\n const weight = area.weight != null ? area.weight : 1.0;\n const differenceFromIdeal = Math.log((overlap + 1) / (area.size + 1));\n output += weight * differenceFromIdeal * differenceFromIdeal;\n }\n\n return output;\n}\n\n/**\n * orientates a bunch of circles to point in orientation\n * @param {{x :number, y: number, radius: number}[]} circles\n * @param {number | undefined} orientation\n * @param {((a: {x :number, y: number, radius: number}, b: {x :number, y: number, radius: number}) => number) | undefined} orientationOrder\n */\nfunction orientateCircles(circles, orientation, orientationOrder) {\n if (orientationOrder == null) {\n circles.sort((a, b) => b.radius - a.radius);\n } else {\n circles.sort(orientationOrder);\n }\n\n // shift circles so largest circle is at (0, 0)\n if (circles.length > 0) {\n const largestX = circles[0].x;\n const largestY = circles[0].y;\n\n for (const circle of circles) {\n circle.x -= largestX;\n circle.y -= largestY;\n }\n }\n\n if (circles.length === 2) {\n // if the second circle is a subset of the first, arrange so that\n // it is off to one side. hack for https://github.com/benfred/venn.js/issues/120\n const dist = distance(circles[0], circles[1]);\n if (dist < Math.abs(circles[1].radius - circles[0].radius)) {\n circles[1].x = circles[0].x + circles[0].radius - circles[1].radius - 1e-10;\n circles[1].y = circles[0].y;\n }\n }\n\n // rotate circles so that second largest is at an angle of 'orientation'\n // from largest\n if (circles.length > 1) {\n const rotation = Math.atan2(circles[1].x, circles[1].y) - orientation;\n const c = Math.cos(rotation);\n const s = Math.sin(rotation);\n\n for (const circle of circles) {\n const x = circle.x;\n const y = circle.y;\n circle.x = c * x - s * y;\n circle.y = s * x + c * y;\n }\n }\n\n // mirror solution if third solution is above plane specified by\n // first two circles\n if (circles.length > 2) {\n let angle = Math.atan2(circles[2].x, circles[2].y) - orientation;\n while (angle < 0) {\n angle += 2 * Math.PI;\n }\n while (angle > 2 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n if (angle > Math.PI) {\n const slope = circles[1].y / (1e-10 + circles[1].x);\n for (const circle of circles) {\n var d = (circle.x + slope * circle.y) / (1 + slope * slope);\n circle.x = 2 * d - circle.x;\n circle.y = 2 * d * slope - circle.y;\n }\n }\n }\n}\n\n/**\n *\n * @param {ReadonlyArray<{x: number, y: number, radius: number}>} circles\n * @returns {{x: number, y: number, radius: number}[][]}\n */\nfunction disjointCluster(circles) {\n // union-find clustering to get disjoint sets\n circles.forEach((circle) => {\n circle.parent = circle;\n });\n\n // path compression step in union find\n function find(circle) {\n if (circle.parent !== circle) {\n circle.parent = find(circle.parent);\n }\n return circle.parent;\n }\n\n function union(x, y) {\n const xRoot = find(x);\n const yRoot = find(y);\n xRoot.parent = yRoot;\n }\n\n // get the union of all overlapping sets\n for (let i = 0; i < circles.length; ++i) {\n for (let j = i + 1; j < circles.length; ++j) {\n const maxDistance = circles[i].radius + circles[j].radius;\n if (distance(circles[i], circles[j]) + 1e-10 < maxDistance) {\n union(circles[j], circles[i]);\n }\n }\n }\n\n // find all the disjoint clusters and group them together\n /** @type {Map} */\n const disjointClusters = new Map();\n for (let i = 0; i < circles.length; ++i) {\n const setid = find(circles[i]).parent.setid;\n if (!disjointClusters.has(setid)) {\n disjointClusters.set(setid, []);\n }\n disjointClusters.get(setid).push(circles[i]);\n }\n\n // cleanup bookkeeping\n circles.forEach((circle) => {\n delete circle.parent;\n });\n\n // return in more usable form\n return Array.from(disjointClusters.values());\n}\n\n/**\n * @param {ReadonlyArray<{x :number, y: number, radius: number}>} circles\n * @returns {{xRange: [number, number], yRange: [number, number]}}\n */\nfunction getBoundingBox(circles) {\n const minMax = (d) => {\n const hi = circles.reduce((acc, c) => Math.max(acc, c[d] + c.radius), Number.NEGATIVE_INFINITY);\n const lo = circles.reduce((acc, c) => Math.min(acc, c[d] - c.radius), Number.POSITIVE_INFINITY);\n return { max: hi, min: lo };\n };\n return { xRange: minMax('x'), yRange: minMax('y') };\n}\n\n/**\n *\n * @param {{[setid: string]: {x: number, y: number, radius: number}}} solution\n * @param {undefined | number} orientation\n * @param {((a: {x :number, y: number, radius: number}, b: {x :number, y: number, radius: number}) => number) | undefined} orientationOrder\n * @returns {{[setid: string]: {x: number, y: number, radius: number}}}\n */\nfunction normalizeSolution(solution, orientation, orientationOrder) {\n if (orientation == null) {\n orientation = Math.PI / 2;\n }\n\n // work with a list instead of a dictionary, and take a copy so we\n // don't mutate input\n let circles = fromObjectNotation(solution).map((d) => Object.assign({}, d));\n\n // get all the disjoint clusters\n const clusters = disjointCluster(circles);\n\n // orientate all disjoint sets, get sizes\n for (const cluster of clusters) {\n orientateCircles(cluster, orientation, orientationOrder);\n const bounds = getBoundingBox(cluster);\n cluster.size = (bounds.xRange.max - bounds.xRange.min) * (bounds.yRange.max - bounds.yRange.min);\n cluster.bounds = bounds;\n }\n clusters.sort((a, b) => b.size - a.size);\n\n // orientate the largest at 0,0, and get the bounds\n circles = clusters[0];\n let returnBounds = circles.bounds;\n const spacing = (returnBounds.xRange.max - returnBounds.xRange.min) / 50;\n\n /**\n * @param {ReadonlyArray<{x: number, y: number, radius: number, setid: string}>} cluster\n * @param {boolean} right\n * @param {boolean} bottom\n */\n function addCluster(cluster, right, bottom) {\n if (!cluster) {\n return;\n }\n\n const bounds = cluster.bounds;\n /** @type {number} */\n let xOffset;\n /** @type {number} */\n let yOffset;\n\n if (right) {\n xOffset = returnBounds.xRange.max - bounds.xRange.min + spacing;\n } else {\n xOffset = returnBounds.xRange.max - bounds.xRange.max;\n const centreing =\n (bounds.xRange.max - bounds.xRange.min) / 2 - (returnBounds.xRange.max - returnBounds.xRange.min) / 2;\n if (centreing < 0) {\n xOffset += centreing;\n }\n }\n\n if (bottom) {\n yOffset = returnBounds.yRange.max - bounds.yRange.min + spacing;\n } else {\n yOffset = returnBounds.yRange.max - bounds.yRange.max;\n const centreing =\n (bounds.yRange.max - bounds.yRange.min) / 2 - (returnBounds.yRange.max - returnBounds.yRange.min) / 2;\n if (centreing < 0) {\n yOffset += centreing;\n }\n }\n\n for (const c of cluster) {\n c.x += xOffset;\n c.y += yOffset;\n circles.push(c);\n }\n }\n\n let index = 1;\n while (index < clusters.length) {\n addCluster(clusters[index], true, false);\n addCluster(clusters[index + 1], false, true);\n addCluster(clusters[index + 2], true, true);\n index += 3;\n\n // have one cluster (in top left). lay out next three relative\n // to it in a grid\n returnBounds = getBoundingBox(circles);\n }\n\n // convert back to solution form\n return toObjectNotation(circles);\n}\n\n/**\n * Scales a solution from venn.venn or venn.greedyLayout such that it fits in\n * a rectangle of width/height - with padding around the borders. also\n * centers the diagram in the available space at the same time.\n * If the scale parameter is not null, this automatic scaling is ignored in favor of this custom one\n * @param {{[setid: string]: {x: number, y: number, radius: number}}} solution\n * @param {number} width\n * @param {number} height\n * @param {number} padding\n * @param {boolean} scaleToFit\n * @returns {{[setid: string]: {x: number, y: number, radius: number}}}\n */\nfunction scaleSolution(solution, width, height, padding, scaleToFit) {\n const circles = fromObjectNotation(solution);\n\n width -= 2 * padding;\n height -= 2 * padding;\n\n const { xRange, yRange } = getBoundingBox(circles);\n\n if (xRange.max === xRange.min || yRange.max === yRange.min) {\n console.log('not scaling solution: zero size detected');\n return solution;\n }\n\n /** @type {number} */\n let xScaling;\n /** @type {number} */\n let yScaling;\n if (scaleToFit) {\n const toScaleDiameter = Math.sqrt(scaleToFit / Math.PI) * 2;\n xScaling = width / toScaleDiameter;\n yScaling = height / toScaleDiameter;\n } else {\n xScaling = width / (xRange.max - xRange.min);\n yScaling = height / (yRange.max - yRange.min);\n }\n\n const scaling = Math.min(yScaling, xScaling);\n // while we're at it, center the diagram too\n const xOffset = (width - (xRange.max - xRange.min) * scaling) / 2;\n const yOffset = (height - (yRange.max - yRange.min) * scaling) / 2;\n\n return toObjectNotation(\n circles.map((circle) => ({\n radius: scaling * circle.radius,\n x: padding + xOffset + (circle.x - xRange.min) * scaling,\n y: padding + yOffset + (circle.y - yRange.min) * scaling,\n setid: circle.setid,\n }))\n );\n}\n\n/**\n * @param {readonly {x: number, y: number, radius: number, setid: string}[]} circles\n * @returns {{[setid: string]: {x: number, y: number, radius: number, setid: string}}}\n */\nfunction toObjectNotation(circles) {\n /** @type {{[setid: string]: {x: number, y: number, radius: number, setid: string}}} */\n const r = {};\n for (const circle of circles) {\n r[circle.setid] = circle;\n }\n return r;\n}\n/**\n * @param {{[setid: string]: {x: number, y: number, radius: number}}} solution\n * @returns {{x: number, y: number, radius: number, setid: string}[]}}\n */\nfunction fromObjectNotation(solution) {\n const setids = Object.keys(solution);\n return setids.map((id) => Object.assign(solution[id], { setid: id }));\n}\n\n/**\n * VennDiagram includes an optional `options` parameter containing the following option(s):\n *\n * `colourScheme: Array`\n * A list of color values to be applied when coloring diagram circles.\n *\n * `symmetricalTextCentre: Boolean`\n * Whether to symmetrically center each circle's text horizontally and vertically.\n * Defaults to `false`.\n *\n * `textFill: String`\n * The color to be applied to the text within each circle.\n *\n * @param {object} options\n */\nfunction VennDiagram(options = {}) {\n let useViewBox = false,\n width = 600,\n height = 350,\n padding = 15,\n duration = 1000,\n orientation = Math.PI / 2,\n normalize = true,\n scaleToFit = null,\n wrap = true,\n styled = true,\n fontSize = null,\n orientationOrder = null,\n distinct = false,\n round = null,\n symmetricalTextCentre = options && options.symmetricalTextCentre ? options.symmetricalTextCentre : false,\n // mimic the behaviour of d3.scale.category10 from the previous\n // version of d3\n colourMap = {},\n // so this is the same as d3.schemeCategory10, which is only defined in d3 4.0\n // since we can support older versions of d3 as long as we don't force this,\n // I'm hackily redefining below. TODO: remove this and change to d3.schemeCategory10\n colourScheme =\n options && options.colourScheme\n ? options.colourScheme\n : options && options.colorScheme\n ? options.colorScheme\n : [\n '#1f77b4',\n '#ff7f0e',\n '#2ca02c',\n '#d62728',\n '#9467bd',\n '#8c564b',\n '#e377c2',\n '#7f7f7f',\n '#bcbd22',\n '#17becf',\n ],\n colourIndex = 0,\n colours = function (key) {\n if (key in colourMap) {\n return colourMap[key];\n }\n var ret = (colourMap[key] = colourScheme[colourIndex]);\n colourIndex += 1;\n if (colourIndex >= colourScheme.length) {\n colourIndex = 0;\n }\n return ret;\n },\n layoutFunction = venn,\n loss = lossFunction;\n\n function chart(selection) {\n let data = selection.datum();\n\n // handle 0-sized sets by removing from input\n const toRemove = new Set();\n data.forEach((datum) => {\n if (datum.size == 0 && datum.sets.length == 1) {\n toRemove.add(datum.sets[0]);\n }\n });\n data = data.filter((datum) => !datum.sets.some((set) => toRemove.has(set)));\n\n let circles = {};\n let textCentres = {};\n\n if (data.length > 0) {\n let solution = layoutFunction(data, { lossFunction: loss, distinct });\n\n if (normalize) {\n solution = normalizeSolution(solution, orientation, orientationOrder);\n }\n\n circles = scaleSolution(solution, width, height, padding, scaleToFit);\n textCentres = computeTextCentres(circles, data, symmetricalTextCentre);\n }\n\n // Figure out the current label for each set. These can change\n // and D3 won't necessarily update (fixes https://github.com/benfred/venn.js/issues/103)\n const labels = {};\n data.forEach((datum) => {\n if (datum.label) {\n labels[datum.sets] = datum.label;\n }\n });\n\n function label(d) {\n if (d.sets in labels) {\n return labels[d.sets];\n }\n if (d.sets.length == 1) {\n return '' + d.sets[0];\n }\n }\n\n // create svg if not already existing\n selection.selectAll('svg').data([circles]).enter().append('svg');\n\n const svg = selection.select('svg');\n\n if (useViewBox) {\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n } else {\n svg.attr('width', width).attr('height', height);\n }\n\n // to properly transition intersection areas, we need the\n // previous circles locations. load from elements\n const previous = {};\n let hasPrevious = false;\n svg.selectAll('.venn-area path').each(function (d) {\n const path = this.getAttribute('d');\n if (d.sets.length == 1 && path && !distinct) {\n hasPrevious = true;\n previous[d.sets[0]] = circleFromPath(path);\n }\n });\n // interpolate intersection area paths between previous and\n // current paths\n function pathTween(d) {\n return (t) => {\n const c = d.sets.map((set) => {\n let start = previous[set];\n let end = circles[set];\n if (!start) {\n start = { x: width / 2, y: height / 2, radius: 1 };\n }\n if (!end) {\n end = { x: width / 2, y: height / 2, radius: 1 };\n }\n return {\n x: start.x * (1 - t) + end.x * t,\n y: start.y * (1 - t) + end.y * t,\n radius: start.radius * (1 - t) + end.radius * t,\n };\n });\n return intersectionAreaPath(c, round);\n };\n }\n\n // update data, joining on the set ids\n const nodes = svg.selectAll('.venn-area').data(data, (d) => d.sets);\n\n // create new nodes\n const enter = nodes\n .enter()\n .append('g')\n .attr(\n 'class',\n (d) =>\n `venn-area venn-${d.sets.length == 1 ? 'circle' : 'intersection'}${\n d.colour || d.color ? ' venn-coloured' : ''\n }`\n )\n .attr('data-venn-sets', (d) => d.sets.join('_'));\n\n const enterPath = enter.append('path');\n const enterText = enter\n .append('text')\n .attr('class', 'label')\n .text((d) => label(d))\n .attr('text-anchor', 'middle')\n .attr('dy', '.35em')\n .attr('x', width / 2)\n .attr('y', height / 2);\n\n // apply minimal style if wanted\n if (styled) {\n enterPath\n .style('fill-opacity', '0')\n .filter((d) => d.sets.length == 1)\n .style('fill', (d) => (d.colour ? d.colour : d.color ? d.color : colours(d.sets)))\n .style('fill-opacity', '.25');\n\n enterText.style('fill', (d) => {\n if (d.colour || d.color) {\n return '#FFF';\n }\n if (options.textFill) {\n return options.textFill;\n }\n return d.sets.length == 1 ? colours(d.sets) : '#444';\n });\n }\n\n function asTransition(s) {\n if (typeof s.transition === 'function') {\n return s.transition('venn').duration(duration);\n }\n return s;\n }\n\n // update existing, using pathTween if necessary\n let update = selection;\n if (hasPrevious && typeof update.transition === 'function') {\n update = asTransition(selection);\n update.selectAll('path').attrTween('d', pathTween);\n } else {\n update.selectAll('path').attr('d', (d) => intersectionAreaPath(d.sets.map((set) => circles[set])), round);\n }\n\n const updateText = update\n .selectAll('text')\n .filter((d) => d.sets in textCentres)\n .text((d) => label(d))\n .attr('x', (d) => Math.floor(textCentres[d.sets].x))\n .attr('y', (d) => Math.floor(textCentres[d.sets].y));\n\n if (wrap) {\n if (hasPrevious) {\n // d3 4.0 uses 'on' for events on transitions,\n // but d3 3.0 used 'each' instead. switch appropriately\n if ('on' in updateText) {\n updateText.on('end', wrapText(circles, label));\n } else {\n updateText.each('end', wrapText(circles, label));\n }\n } else {\n updateText.each(wrapText(circles, label));\n }\n }\n\n // remove old\n const exit = asTransition(nodes.exit()).remove();\n if (typeof nodes.transition === 'function') {\n exit.selectAll('path').attrTween('d', pathTween);\n }\n\n const exitText = exit\n .selectAll('text')\n .attr('x', width / 2)\n .attr('y', height / 2);\n\n // if we've been passed a fontSize explicitly, use it to\n // transition\n if (fontSize !== null) {\n enterText.style('font-size', '0px');\n updateText.style('font-size', fontSize);\n exitText.style('font-size', '0px');\n }\n\n return { circles, textCentres, nodes, enter, update, exit };\n }\n\n chart.wrap = function (_) {\n if (!arguments.length) return wrap;\n wrap = _;\n return chart;\n };\n\n chart.useViewBox = function () {\n useViewBox = true;\n return chart;\n };\n\n chart.width = function (_) {\n if (!arguments.length) return width;\n width = _;\n return chart;\n };\n\n chart.height = function (_) {\n if (!arguments.length) return height;\n height = _;\n return chart;\n };\n\n chart.padding = function (_) {\n if (!arguments.length) return padding;\n padding = _;\n return chart;\n };\n\n chart.distinct = function (_) {\n if (!arguments.length) return distinct;\n distinct = _;\n return chart;\n };\n\n chart.colours = function (_) {\n if (!arguments.length) return colours;\n colours = _;\n return chart;\n };\n\n chart.colors = function (_) {\n if (!arguments.length) return colours;\n colours = _;\n return chart;\n };\n\n chart.fontSize = function (_) {\n if (!arguments.length) return fontSize;\n fontSize = _;\n return chart;\n };\n\n chart.round = function (_) {\n if (!arguments.length) return round;\n round = _;\n return chart;\n };\n\n chart.duration = function (_) {\n if (!arguments.length) return duration;\n duration = _;\n return chart;\n };\n\n chart.layoutFunction = function (_) {\n if (!arguments.length) return layoutFunction;\n layoutFunction = _;\n return chart;\n };\n\n chart.normalize = function (_) {\n if (!arguments.length) return normalize;\n normalize = _;\n return chart;\n };\n\n chart.scaleToFit = function (_) {\n if (!arguments.length) return scaleToFit;\n scaleToFit = _;\n return chart;\n };\n\n chart.styled = function (_) {\n if (!arguments.length) return styled;\n styled = _;\n return chart;\n };\n\n chart.orientation = function (_) {\n if (!arguments.length) return orientation;\n orientation = _;\n return chart;\n };\n\n chart.orientationOrder = function (_) {\n if (!arguments.length) return orientationOrder;\n orientationOrder = _;\n return chart;\n };\n\n chart.lossFunction = function (_) {\n if (!arguments.length) return loss;\n loss = _ === 'default' ? lossFunction : _ === 'logRatio' ? logRatioLossFunction : _;\n return chart;\n };\n\n return chart;\n}\n\n// sometimes text doesn't fit inside the circle, if thats the case lets wrap\n// the text here such that it fits\n// todo: looks like this might be merged into d3 (\n// https://github.com/mbostock/d3/issues/1642),\n// also worth checking out is\n// http://engineering.findthebest.com/wrapping-axis-labels-in-d3-js/\n// this seems to be one of those things that should be easy but isn't\nfunction wrapText(circles, labeller) {\n return function (data) {\n const text = this;\n const width = circles[data.sets[0]].radius || 50;\n const label = labeller(data) || '';\n\n const words = label.split(/\\s+/).reverse();\n const maxLines = 3;\n const minChars = (label.length + words.length) / maxLines;\n\n let word = words.pop();\n let line = [word];\n let lineNumber = 0;\n const lineHeight = 1.1; // ems\n text.textContent = null; // clear\n const tspans = [];\n\n function append(word) {\n const tspan = text.ownerDocument.createElementNS(text.namespaceURI, 'tspan');\n tspan.textContent = word;\n tspans.push(tspan);\n text.append(tspan);\n return tspan;\n }\n let tspan = append(word);\n\n while (true) {\n word = words.pop();\n if (!word) {\n break;\n }\n line.push(word);\n const joined = line.join(' ');\n tspan.textContent = joined;\n if (joined.length > minChars && tspan.getComputedTextLength() > width) {\n line.pop();\n tspan.textContent = line.join(' ');\n line = [word];\n tspan = append(word);\n lineNumber++;\n }\n }\n\n const initial = 0.35 - (lineNumber * lineHeight) / 2;\n const x = text.getAttribute('x');\n const y = text.getAttribute('y');\n tspans.forEach((t, i) => {\n t.setAttribute('x', x);\n t.setAttribute('y', y);\n t.setAttribute('dy', `${initial + i * lineHeight}em`);\n });\n };\n}\n\n/**\n *\n * @param {{x: number, y: number}} current\n * @param {ReadonlyArray<{x: number, y: number}>} interior\n * @param {ReadonlyArray<{x: number, y: number}>} exterior\n * @returns {number}\n */\nfunction circleMargin(current, interior, exterior) {\n let margin = interior[0].radius - distance(interior[0], current);\n\n for (let i = 1; i < interior.length; ++i) {\n const m = interior[i].radius - distance(interior[i], current);\n if (m <= margin) {\n margin = m;\n }\n }\n\n for (let i = 0; i < exterior.length; ++i) {\n const m = distance(exterior[i], current) - exterior[i].radius;\n if (m <= margin) {\n margin = m;\n }\n }\n return margin;\n}\n\n/**\n * compute the center of some circles by maximizing the margin of\n * the center point relative to the circles (interior) after subtracting\n * nearby circles (exterior)\n * @param {readonly {x: number, y: number, radius: number}[]} interior\n * @param {readonly {x: number, y: number, radius: number}[]} exterior\n * @param {boolean} symmetricalTextCentre\n * @returns {{x:number, y: number}}\n */\nfunction computeTextCentre(interior, exterior, symmetricalTextCentre) {\n // get an initial estimate by sampling around the interior circles\n // and taking the point with the biggest margin\n /** @type {{x: number, y: number}[]} */\n const points = [];\n for (const c of interior) {\n points.push({ x: c.x, y: c.y });\n points.push({ x: c.x + c.radius / 2, y: c.y });\n points.push({ x: c.x - c.radius / 2, y: c.y });\n points.push({ x: c.x, y: c.y + c.radius / 2 });\n points.push({ x: c.x, y: c.y - c.radius / 2 });\n }\n\n let initial = points[0];\n let margin = circleMargin(points[0], interior, exterior);\n\n for (let i = 1; i < points.length; ++i) {\n const m = circleMargin(points[i], interior, exterior);\n if (m >= margin) {\n initial = points[i];\n margin = m;\n }\n }\n\n // maximize the margin numerically\n const solution = nelderMead(\n (p) => -1 * circleMargin({ x: p[0], y: p[1] }, interior, exterior),\n [initial.x, initial.y],\n { maxIterations: 500, minErrorDelta: 1e-10 }\n ).x;\n\n const ret = { x: symmetricalTextCentre ? 0 : solution[0], y: solution[1] };\n\n // check solution, fallback as needed (happens if fully overlapped\n // etc)\n let valid = true;\n for (const i of interior) {\n if (distance(ret, i) > i.radius) {\n valid = false;\n break;\n }\n }\n\n for (const e of exterior) {\n if (distance(ret, e) < e.radius) {\n valid = false;\n break;\n }\n }\n if (valid) {\n return ret;\n }\n\n if (interior.length == 1) {\n return { x: interior[0].x, y: interior[0].y };\n }\n const areaStats = {};\n intersectionArea(interior, areaStats);\n\n if (areaStats.arcs.length === 0) {\n return { x: 0, y: -1000, disjoint: true };\n }\n if (areaStats.arcs.length == 1) {\n return { x: areaStats.arcs[0].circle.x, y: areaStats.arcs[0].circle.y };\n }\n if (exterior.length) {\n // try again without other circles\n return computeTextCentre(interior, []);\n }\n // take average of all the points in the intersection\n // polygon. this should basically never happen\n // and has some issues:\n // https://github.com/benfred/venn.js/issues/48#issuecomment-146069777\n return getCenter(areaStats.arcs.map((a) => a.p1));\n}\n\n// given a dictionary of {setid : circle}, returns\n// a dictionary of setid to list of circles that completely overlap it\nfunction getOverlappingCircles(circles) {\n const ret = {};\n const circleids = Object.keys(circles);\n for (const circleid of circleids) {\n ret[circleid] = [];\n }\n for (let i = 0; i < circleids.length; i++) {\n const ci = circleids[i];\n const a = circles[ci];\n for (let j = i + 1; j < circleids.length; ++j) {\n const cj = circleids[j];\n const b = circles[cj];\n const d = distance(a, b);\n\n if (d + b.radius <= a.radius + 1e-10) {\n ret[cj].push(ci);\n } else if (d + a.radius <= b.radius + 1e-10) {\n ret[ci].push(cj);\n }\n }\n }\n return ret;\n}\n\nfunction computeTextCentres(circles, areas, symmetricalTextCentre) {\n const ret = {};\n const overlapped = getOverlappingCircles(circles);\n for (let i = 0; i < areas.length; ++i) {\n const area = areas[i].sets;\n const areaids = {};\n const exclude = {};\n\n for (let j = 0; j < area.length; ++j) {\n areaids[area[j]] = true;\n const overlaps = overlapped[area[j]];\n // keep track of any circles that overlap this area,\n // and don't consider for purposes of computing the text\n // centre\n for (let k = 0; k < overlaps.length; ++k) {\n exclude[overlaps[k]] = true;\n }\n }\n\n const interior = [];\n const exterior = [];\n for (let setid in circles) {\n if (setid in areaids) {\n interior.push(circles[setid]);\n } else if (!(setid in exclude)) {\n exterior.push(circles[setid]);\n }\n }\n const centre = computeTextCentre(interior, exterior, symmetricalTextCentre);\n ret[area] = centre;\n if (centre.disjoint && areas[i].size > 0) {\n console.log('WARNING: area ' + area + ' not represented on screen');\n }\n }\n return ret;\n}\n\n// sorts all areas in the venn diagram, so that\n// a particular area is on top (relativeTo) - and\n// all other areas are so that the smallest areas are on top\nfunction sortAreas(div, relativeTo) {\n // figure out sets that are completely overlapped by relativeTo\n const overlaps = getOverlappingCircles(div.selectAll('svg').datum());\n const exclude = new Set();\n for (const check of relativeTo.sets) {\n for (let setid in overlaps) {\n const overlap = overlaps[setid];\n for (let j = 0; j < overlap.length; ++j) {\n if (overlap[j] == check) {\n exclude.add(setid);\n break;\n }\n }\n }\n }\n\n // checks that all sets are in exclude;\n function shouldExclude(sets) {\n return sets.every((set) => !exclude.has(set));\n }\n\n // need to sort div's so that Z order is correct\n div.selectAll('g').sort((a, b) => {\n // highest order set intersections first\n if (a.sets.length != b.sets.length) {\n return a.sets.length - b.sets.length;\n }\n\n if (a == relativeTo) {\n return shouldExclude(b.sets) ? -1 : 1;\n }\n if (b == relativeTo) {\n return shouldExclude(a.sets) ? 1 : -1;\n }\n\n // finally by size\n return b.size - a.size;\n });\n}\n\n/**\n * @param {number} x\n * @param {number} y\n * @param {number} r\n * @returns {string}\n */\nfunction circlePath(x, y, r) {\n const ret = [];\n ret.push('\\nM', x, y);\n ret.push('\\nm', -r, 0);\n ret.push('\\na', r, r, 0, 1, 0, r * 2, 0);\n ret.push('\\na', r, r, 0, 1, 0, -r * 2, 0);\n return ret.join(' ');\n}\n\n/**\n * inverse of the circlePath function, returns a circle object from an svg path\n * @param {string} path\n * @returns {{x: number, y: number, radius: number}}\n */\nfunction circleFromPath(path) {\n const tokens = path.split(' ');\n return { x: Number.parseFloat(tokens[1]), y: Number.parseFloat(tokens[2]), radius: -Number.parseFloat(tokens[4]) };\n}\n\nfunction intersectionAreaArcs(circles) {\n if (circles.length === 0) {\n return [];\n }\n const stats = {};\n intersectionArea(circles, stats);\n return stats.arcs;\n}\n\nfunction arcsToPath(arcs, round) {\n if (arcs.length === 0) {\n return 'M 0 0';\n }\n const rFactor = Math.pow(10, round || 0);\n const r = round != null ? (v) => Math.round(v * rFactor) / rFactor : (v) => v;\n if (arcs.length == 1) {\n const circle = arcs[0].circle;\n return circlePath(r(circle.x), r(circle.y), r(circle.radius));\n }\n // draw path around arcs\n const ret = ['\\nM', r(arcs[0].p2.x), r(arcs[0].p2.y)];\n for (const arc of arcs) {\n const radius = r(arc.circle.radius);\n ret.push('\\nA', radius, radius, 0, arc.large ? 1 : 0, arc.sweep ? 1 : 0, r(arc.p1.x), r(arc.p1.y));\n }\n return ret.join(' ');\n}\n\n/**\n * returns a svg path of the intersection area of a bunch of circles\n * @param {ReadonlyArray<{x: number, y: number, radius: number}>} circles\n * @returns {string}\n */\nfunction intersectionAreaPath(circles, round) {\n return arcsToPath(intersectionAreaArcs(circles), round);\n}\n\nfunction layout(data, options = {}) {\n const {\n lossFunction: loss,\n layoutFunction: layout = venn,\n normalize = true,\n orientation = Math.PI / 2,\n orientationOrder,\n width = 600,\n height = 350,\n padding = 15,\n scaleToFit = false,\n symmetricalTextCentre = false,\n distinct,\n round = 2,\n } = options;\n\n let solution = layout(data, {\n lossFunction: loss === 'default' || !loss ? lossFunction : loss === 'logRatio' ? logRatioLossFunction : loss,\n distinct,\n });\n\n if (normalize) {\n solution = normalizeSolution(solution, orientation, orientationOrder);\n }\n\n const circles = scaleSolution(solution, width, height, padding, scaleToFit);\n const textCentres = computeTextCentres(circles, data, symmetricalTextCentre);\n\n const circleLookup = new Map(\n Object.keys(circles).map((set) => [\n set,\n {\n set,\n x: circles[set].x,\n y: circles[set].y,\n radius: circles[set].radius,\n },\n ])\n );\n const helpers = data.map((area) => {\n const circles = area.sets.map((s) => circleLookup.get(s));\n const arcs = intersectionAreaArcs(circles);\n const path = arcsToPath(arcs, round);\n return { circles, arcs, path, area, has: new Set(area.sets) };\n });\n\n function genDistinctPath(sets) {\n let r = '';\n for (const e of helpers) {\n if (e.has.size > sets.length && sets.every((s) => e.has.has(s))) {\n r += ' ' + e.path;\n }\n }\n return r;\n }\n\n return helpers.map(({ circles, arcs, path, area }) => {\n return {\n data: area,\n text: textCentres[area.sets],\n circles,\n arcs,\n path,\n distinctPath: path + genDistinctPath(area.sets),\n };\n });\n}\n\nexport { VennDiagram, bestInitialLayout, circleArea, circleCircleIntersection, circleFromPath, circleOverlap, circlePath, computeTextCentre, computeTextCentres, disjointCluster, distance, distanceFromIntersectArea, greedyLayout, intersectionArea, intersectionAreaPath, layout, logRatioLossFunction, lossFunction, normalizeSolution, scaleSolution, sortAreas, venn, wrapText };\n", "import type { Diagram } from '../../Diagram.js';\nimport type { VennData, VennDB, VennTextData, VennStyleData } from './vennTypes.js';\nimport type { DiagramRenderer, DrawDefinition } from '../../diagram-api/types.js';\nimport type { VennDiagramConfig } from '../../config.type.js';\nimport type { Selection } from 'd3';\nimport { select as d3select } from 'd3';\n// @ts-expect-error Incorrect khroma types\nimport { isDark, lighten, darken, transparentize } from 'khroma';\nimport { getConfig } from '../../config.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport * as venn from '@upsetjs/venn.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport rough from 'roughjs';\n\ntype DummyD3Root = Selection;\n\nfunction buildStyleByKey(styleData: VennStyleData[]): Map> {\n const map = new Map>();\n for (const entry of styleData) {\n const key = entry.targets.join('|');\n const existing = map.get(key);\n if (existing) {\n Object.assign(existing, entry.styles);\n } else {\n map.set(key, { ...entry.styles });\n }\n }\n return map;\n}\n\nexport const draw: DrawDefinition = (\n _text: string,\n id: string,\n _version: string,\n diagObj: Diagram\n): void => {\n const db = diagObj.db as VennDB;\n const config = db.getConfig?.();\n const { themeVariables, look, handDrawnSeed } = getConfig();\n const isHandDrawn = look === 'handDrawn';\n const themeColors: string[] = [\n themeVariables.venn1,\n themeVariables.venn2,\n themeVariables.venn3,\n themeVariables.venn4,\n themeVariables.venn5,\n themeVariables.venn6,\n themeVariables.venn7,\n themeVariables.venn8,\n ].filter(Boolean);\n const title = db.getDiagramTitle?.();\n const sets = db.getSubsetData();\n const textNodes = db.getTextData();\n const styleByKey = buildStyleByKey(db.getStyleData());\n\n // Configurable viewBox size with scale factor for proportional rendering\n const svgWidth = config?.width ?? 800;\n const svgHeight = config?.height ?? 450;\n const REFERENCE_WIDTH = 1600;\n const scale = svgWidth / REFERENCE_WIDTH;\n const titleHeight = title ? 48 * scale : 0;\n\n const defaultTextColor = themeVariables.primaryTextColor ?? themeVariables.textColor;\n\n // Prepare the target viewBox\n const svg = selectSvgElement(id);\n svg.attr('viewBox', `0 0 ${svgWidth} ${svgHeight}`);\n\n if (title) {\n svg\n .append('text')\n .text(title)\n .attr('class', 'venn-title')\n .attr('font-size', `${32 * scale}px`)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('x', '50%')\n .attr('y', 32 * scale)\n .style('fill', themeVariables.vennTitleTextColor || themeVariables.titleColor);\n }\n\n // Get the original SVG output of Venn.js from a dummy root\n const dummyD3root: DummyD3Root = d3select(document.createElement('div'));\n const vennDiagram = venn\n .VennDiagram()\n .width(svgWidth)\n .height(svgHeight - titleHeight);\n dummyD3root.datum(sets).call(vennDiagram as never);\n\n const roughSvg = isHandDrawn\n ? rough.svg(dummyD3root.select('svg').node() as SVGSVGElement)\n : undefined;\n\n // Compute layout areas so we can position additional text nodes\n const layoutAreas = venn.layout(sets, {\n width: svgWidth,\n height: svgHeight - titleHeight,\n padding: config?.padding ?? 15,\n });\n\n // Build a lookup table from set key to layout area\n const layoutByKey = new Map();\n for (const area of layoutAreas) {\n const key = stableSetsKey([...area.data.sets].sort());\n layoutByKey.set(key, area);\n }\n\n if (textNodes.length > 0) {\n renderTextNodes(config, layoutByKey, dummyD3root, textNodes, scale, styleByKey);\n }\n\n // Style the set circles with theme colors\n const themeDark = isDark(themeVariables.background || '#f4f4f4');\n dummyD3root.selectAll('.venn-circle').each(function (d, i) {\n const group = d3select(this as Element);\n const data = d as VennData;\n const setsKey = stableSetsKey([...data.sets].sort());\n const customStyle = styleByKey.get(setsKey);\n const baseColor =\n customStyle?.fill || themeColors[i % themeColors.length] || themeVariables.primaryColor;\n group.classed(`venn-set-${i % 8}`, true);\n const fillOpacity = customStyle?.['fill-opacity'] ?? 0.1;\n const strokeColor = customStyle?.stroke || baseColor;\n const strokeWidthVal = customStyle?.['stroke-width'] || `${5 * scale}`;\n\n if (isHandDrawn && roughSvg) {\n const layoutArea = layoutByKey.get(setsKey);\n if (layoutArea && layoutArea.circles.length > 0) {\n const c = layoutArea.circles[0];\n const roughNode = roughSvg.circle(c.x, c.y, c.radius * 2, {\n roughness: 0.7,\n seed: handDrawnSeed,\n fill: transparentize(baseColor, 0.7),\n fillStyle: 'hachure',\n fillWeight: 2,\n hachureGap: 8,\n hachureAngle: -41 + i * 60,\n stroke: strokeColor,\n strokeWidth: parseFloat(String(strokeWidthVal)),\n });\n group.select('path').remove();\n group.node()?.insertBefore(roughNode, group.select('text').node() as Node | null);\n }\n } else {\n group\n .select('path')\n .style('fill', baseColor)\n .style('fill-opacity', fillOpacity)\n .style('stroke', strokeColor)\n .style('stroke-width', strokeWidthVal)\n .style('stroke-opacity', 0.95);\n }\n // Blend border color toward black (light theme) or white (dark theme) for readable text\n const textColor: string =\n customStyle?.color || (themeDark ? lighten(baseColor, 30) : darken(baseColor, 30));\n group\n .select('text')\n .style('font-size', `${48 * scale}px`)\n .style('fill', textColor);\n });\n\n // Style the union labels\n if (isHandDrawn && roughSvg) {\n dummyD3root.selectAll('.venn-intersection').each(function (d) {\n const group = d3select(this as Element);\n const data = d as VennData;\n const setsKey = stableSetsKey([...data.sets].sort());\n const customStyle = styleByKey.get(setsKey);\n const customFill = customStyle?.fill;\n\n if (customFill) {\n const pathEl = group.select('path');\n const pathD = pathEl.attr('d');\n if (pathD) {\n const roughNode = roughSvg.path(pathD, {\n roughness: 0.7,\n seed: handDrawnSeed,\n fill: transparentize(customFill, 0.3),\n fillStyle: 'cross-hatch',\n fillWeight: 2,\n hachureGap: 6,\n hachureAngle: 60,\n stroke: 'none',\n });\n const existingPath = pathEl.node() as Element | null;\n existingPath?.parentNode?.insertBefore(roughNode, existingPath);\n pathEl.remove();\n }\n } else {\n group.select('path').style('fill-opacity', 0);\n }\n\n group\n .select('text')\n .style('font-size', `${48 * scale}px`)\n .style('fill', customStyle?.color ?? themeVariables.vennSetTextColor ?? defaultTextColor);\n });\n } else {\n dummyD3root\n .selectAll('.venn-intersection text')\n .style('font-size', `${48 * scale}px`)\n .style('fill', (e) => {\n const data = e as VennData;\n const setsKey = stableSetsKey([...data.sets].sort());\n return (\n styleByKey.get(setsKey)?.color ?? themeVariables.vennSetTextColor ?? defaultTextColor\n );\n });\n dummyD3root\n .selectAll('.venn-intersection path')\n .style('fill-opacity', (e) => {\n const data = e as VennData;\n const setsKey = stableSetsKey([...data.sets].sort());\n return styleByKey.get(setsKey)?.fill ? 1 : 0;\n })\n .style('fill', (e) => {\n const data = e as VennData;\n const setsKey = stableSetsKey([...data.sets].sort());\n return styleByKey.get(setsKey)?.fill ?? 'transparent';\n });\n }\n\n // Transfer the dummy SVG contents into the real SVG group\n const vennGroup = svg.append('g').attr('transform', `translate(0, ${titleHeight})`);\n const dummySvg = dummyD3root.select('svg').node();\n if (dummySvg && 'childNodes' in dummySvg) {\n for (const child of [...dummySvg.childNodes]) {\n vennGroup.node()?.appendChild(child);\n }\n }\n configureSvgSize(svg, svgHeight, svgWidth, config?.useMaxWidth ?? true);\n};\n\nfunction stableSetsKey(setIds: string[]): string {\n return setIds.join('|');\n}\n\nfunction renderTextNodes(\n config: Required,\n layoutByKey: Map>,\n dummyD3root: DummyD3Root,\n textNodes: VennTextData[],\n scale: number,\n styleByKey: Map>\n) {\n const useDebugLayout = config?.useDebugLayout ?? false;\n const vennSvg = dummyD3root.select('svg');\n const textGroup = vennSvg.append('g').attr('class', 'venn-text-nodes');\n\n // Group text nodes by the set key they belong to\n const nodesByArea = new Map();\n for (const node of textNodes) {\n const key = stableSetsKey(node.sets);\n const existing = nodesByArea.get(key);\n if (existing) {\n existing.push(node);\n } else {\n nodesByArea.set(key, [node]);\n }\n }\n\n // For each area, compute a text box and place nodes in a grid.\n for (const [key, nodes] of nodesByArea.entries()) {\n const area = layoutByKey.get(key);\n if (!area?.text) {\n continue;\n }\n // Calculate the center point and a safe inner radius for text.\n const centerX = area.text.x;\n const centerY = area.text.y;\n const minCircleRadius = Math.min(...area.circles.map((c) => c.radius));\n const innerRadiusRaw = Math.min(\n ...area.circles.map((c) => c.radius - Math.hypot(centerX - c.x, centerY - c.y))\n );\n let innerRadius = Number.isFinite(innerRadiusRaw) ? Math.max(0, innerRadiusRaw) : 0;\n if (innerRadius === 0 && Number.isFinite(minCircleRadius)) {\n innerRadius = minCircleRadius * 0.6;\n }\n\n // Render text area container\n const areaGroup = textGroup\n .append('g')\n .attr('class', 'venn-text-area')\n .attr('font-size', `${40 * scale}px`);\n if (useDebugLayout) {\n areaGroup\n .append('circle')\n .attr('class', 'venn-text-debug-circle')\n .attr('cx', centerX)\n .attr('cy', centerY)\n .attr('r', innerRadius)\n .attr('fill', 'none')\n .attr('stroke', 'purple')\n .attr('stroke-width', 1.5 * scale)\n .attr('stroke-dasharray', `${6 * scale} ${4 * scale}`);\n }\n\n // Compute a grid within the area for placing text nodes\n const innerWidth = Math.max(80 * scale, innerRadius * 2 * 0.95);\n const innerHeight = Math.max(60 * scale, innerRadius * 2 * 0.95);\n const hasLabel = area.data.label && area.data.label.length > 0;\n const labelOffsetBase = hasLabel ? Math.min(32 * scale, innerRadius * 0.25) : 0;\n const labelOffset = labelOffsetBase + (nodes.length <= 2 ? 30 * scale : 0);\n const startX = centerX - innerWidth / 2;\n const startY = centerY - innerHeight / 2 + labelOffset;\n const cols = Math.max(1, Math.ceil(Math.sqrt(nodes.length)));\n const rows = Math.max(1, Math.ceil(nodes.length / cols));\n const cellWidth = innerWidth / cols;\n const cellHeight = innerHeight / rows;\n\n // Place each node into a grid cell\n for (const [i, node] of nodes.entries()) {\n const col = i % cols;\n const row = Math.floor(i / cols);\n const x = startX + cellWidth * (col + 0.5);\n const y = startY + cellHeight * (row + 0.5);\n\n if (useDebugLayout) {\n areaGroup\n .append('rect')\n .attr('class', 'venn-text-debug-cell')\n .attr('x', startX + cellWidth * col)\n .attr('y', startY + cellHeight * row)\n .attr('width', cellWidth)\n .attr('height', cellHeight)\n .attr('fill', 'none')\n .attr('stroke', 'teal')\n .attr('stroke-width', 1 * scale)\n .attr('stroke-dasharray', `${4 * scale} ${3 * scale}`);\n }\n\n const boxWidth = cellWidth * 0.9;\n const boxHeight = cellHeight * 0.9;\n\n // foreignObject lets us use HTML styling for auto-wrap\n const container = areaGroup\n .append('foreignObject')\n .attr('class', 'venn-text-node-fo')\n .attr('width', boxWidth)\n .attr('height', boxHeight)\n .attr('x', x - boxWidth / 2)\n .attr('y', y - boxHeight / 2)\n .attr('overflow', 'visible');\n\n const textColor = styleByKey.get(node.id)?.color;\n const text = container\n .append('xhtml:span')\n .attr('class', 'venn-text-node')\n .style('display', 'flex')\n .style('width', '100%')\n .style('height', '100%')\n .style('white-space', 'normal')\n .style('align-items', 'center')\n .style('justify-content', 'center')\n .style('text-align', 'center')\n .style('overflow-wrap', 'normal')\n .style('word-break', 'normal')\n .text(node.label ?? node.id);\n\n if (textColor) {\n text.style('color', textColor);\n }\n }\n }\n}\n\nexport const renderer: DiagramRenderer = { draw };\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: jison doesn't export types\nimport parser from './parser/venn.jison';\nimport { db } from './vennDB.js';\nimport flowStyles from './styles.js';\nimport { renderer } from './vennRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles: flowStyles,\n};\n"], - "mappings": "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", + "mappings": "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", "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "cs", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "venn_default", "parser", "subsets", "textNodes", "styleEntries", "knownSets", "currentSets", "indentMode", "addSubsetData", "__name", "identifierList", "label", "size", "sets", "normalizeIdentifierList", "resolvedSize", "normalizeText", "getSubsetData", "text", "trimmed", "normalizeStyleValue", "value", "addTextData", "id", "normalizedId", "addStyleData", "data", "targets", "styles", "key", "getStyleData", "identifier", "validateUnionIdentifiers", "unknown", "getTextData", "getCurrentSets", "getIndentMode", "setIndentMode", "enabled", "DEFAULT_VENN_CONFIG", "defaultConfig_default", "getConfig", "cleanAndMerge", "customClear", "clear", "db", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "getStyles", "__name", "options", "styles_default", "intersectionArea", "circles", "stats", "intersectionPoints", "getIntersectionPoints", "innerPoints", "p", "containedInCircles", "arcArea", "polygonArea", "arcs", "center", "getCenter", "i", "a", "b", "p2", "p1", "midPoint", "arc", "j", "circle", "a1", "a2", "angleDiff", "width", "distance", "circleArea", "smallest", "disjoint", "__name", "point", "ret", "intersect", "circleCircleIntersection", "r", "circleOverlap", "r1", "r2", "d", "w1", "w2", "h", "x0", "y0", "rx", "ry", "points", "bisect", "f", "parameters", "maxIterations", "tolerance", "fA", "fB", "delta", "mid", "fMid", "zeros", "x", "zerosM", "y", "dot", "norm2", "scale", "value", "c", "weightedSum", "v1", "v2", "nelderMead", "nonZeroDelta", "zeroDelta", "minErrorDelta", "minTolerance", "rho", "chi", "psi", "sigma", "maxDiff", "N", "simplex", "updateSimplex", "sortOrder", "centroid", "reflected", "contracted", "expanded", "iteration", "sortedSimplex", "state", "worst", "shouldReduce", "wolfeLineSearch", "pk", "current", "next", "c1", "c2", "phi0", "phiPrime0", "phi", "phi_old", "phiPrime", "a0", "zoom", "a_lo", "a_high", "phi_lo", "conjugateGradient", "initial", "params", "yk", "temp", "delta_k", "beta_k", "venn", "sets", "initialLayout", "bestInitialLayout", "loss", "lossFunction", "areas", "addMissingAreas", "setids", "setid", "positions", "values", "SMALL", "distanceFromIntersectArea", "overlap", "distinct", "s", "toKey", "arr", "count", "area", "si", "sj", "k1", "k2", "ids", "pairs", "getDistanceMatrices", "distances", "constraints", "left", "right", "constrainedMDSGradient", "fxprime", "xi", "yi", "xj", "yj", "dij", "constraint", "squaredDistance", "greedyLayout", "constrained", "constrainedMDSLayout", "constrainedLoss", "greedyLoss", "restarts", "norm", "row", "obj", "best", "set", "setOverlaps", "weight", "mostOverlapped", "size", "positioned", "isPositioned", "element", "positionSet", "index", "setIndex", "d1", "k", "d2", "extraPoints", "bestLoss", "bestPoint", "localLoss", "overlaps", "output", "logRatioLossFunction", "differenceFromIdeal", "orientateCircles", "orientation", "orientationOrder", "largestX", "largestY", "rotation", "angle", "slope", "disjointCluster", "find", "union", "xRoot", "yRoot", "maxDistance", "disjointClusters", "getBoundingBox", "minMax", "hi", "acc", "lo", "normalizeSolution", "solution", "fromObjectNotation", "clusters", "cluster", "bounds", "returnBounds", "spacing", "addCluster", "bottom", "xOffset", "yOffset", "centreing", "toObjectNotation", "scaleSolution", "height", "padding", "scaleToFit", "xRange", "yRange", "xScaling", "yScaling", "toScaleDiameter", "scaling", "id", "VennDiagram", "options", "useViewBox", "duration", "normalize", "wrap", "styled", "fontSize", "round", "symmetricalTextCentre", "colourMap", "colourScheme", "colourIndex", "colours", "key", "layoutFunction", "chart", "selection", "data", "toRemove", "datum", "textCentres", "computeTextCentres", "labels", "label", "svg", "previous", "hasPrevious", "path", "circleFromPath", "pathTween", "t", "start", "end", "intersectionAreaPath", "nodes", "enter", "enterPath", "enterText", "asTransition", "update", "updateText", "wrapText", "exit", "exitText", "_", "labeller", "text", "words", "minChars", "word", "line", "lineNumber", "lineHeight", "tspans", "append", "tspan", "joined", "circleMargin", "interior", "exterior", "margin", "m", "computeTextCentre", "valid", "e", "areaStats", "getOverlappingCircles", "circleids", "circleid", "ci", "cj", "overlapped", "areaids", "exclude", "centre", "circlePath", "x", "y", "r", "ret", "__name", "circleFromPath", "path", "tokens", "intersectionAreaArcs", "circles", "stats", "intersectionArea", "arcsToPath", "arcs", "round", "rFactor", "v", "circle", "arc", "radius", "intersectionAreaPath", "layout", "data", "options", "loss", "venn", "normalize", "orientation", "orientationOrder", "width", "height", "padding", "scaleToFit", "symmetricalTextCentre", "distinct", "solution", "lossFunction", "logRatioLossFunction", "normalizeSolution", "scaleSolution", "textCentres", "computeTextCentres", "circleLookup", "set", "helpers", "area", "s", "genDistinctPath", "sets", "e", "buildStyleByKey", "styleData", "map", "entry", "key", "existing", "__name", "draw", "_text", "id", "_version", "diagObj", "db", "config", "themeVariables", "look", "handDrawnSeed", "getConfig", "isHandDrawn", "themeColors", "title", "sets", "textNodes", "styleByKey", "svgWidth", "svgHeight", "scale", "titleHeight", "defaultTextColor", "svg", "selectSvgElement", "dummyD3root", "select_default", "vennDiagram", "VennDiagram", "roughSvg", "at", "layoutAreas", "layout", "layoutByKey", "area", "stableSetsKey", "renderTextNodes", "themeDark", "is_dark_default", "d", "i", "group", "setsKey", "customStyle", "baseColor", "fillOpacity", "strokeColor", "strokeWidthVal", "layoutArea", "c", "roughNode", "transparentize_default", "textColor", "lighten_default", "darken_default", "customFill", "pathEl", "pathD", "existingPath", "e", "vennGroup", "dummySvg", "child", "configureSvgSize", "setIds", "useDebugLayout", "textGroup", "nodesByArea", "node", "nodes", "centerX", "centerY", "minCircleRadius", "innerRadiusRaw", "innerRadius", "areaGroup", "innerWidth", "innerHeight", "labelOffset", "startX", "startY", "cols", "rows", "cellWidth", "cellHeight", "col", "row", "x", "y", "boxWidth", "boxHeight", "container", "text", "renderer", "diagram", "venn_default", "db", "renderer", "styles_default"] } diff --git a/assets/mermaid/chunks/mermaid.esm.min/wardley-L42UT6IY-5TKZOOLJ.mjs b/assets/mermaid/chunks/mermaid.esm.min/wardley-L42UT6IY-5TKZOOLJ.mjs new file mode 100644 index 0000000..435d48b --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/wardley-L42UT6IY-5TKZOOLJ.mjs @@ -0,0 +1 @@ +import{a as e,b as r}from"./chunk-UP6H54XL.mjs";import"./chunk-4R4BOZG6.mjs";import"./chunk-AQ6EADP3.mjs";export{e as WardleyModule,r as createWardleyServices}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/wardley-L42UT6IY-5TKZOOLJ.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/wardley-L42UT6IY-5TKZOOLJ.mjs.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/wardley-L42UT6IY-5TKZOOLJ.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/wardleyDiagram-CUQ6CDDI.mjs b/assets/mermaid/chunks/mermaid.esm.min/wardleyDiagram-CUQ6CDDI.mjs new file mode 100644 index 0000000..35fad1b --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/wardleyDiagram-CUQ6CDDI.mjs @@ -0,0 +1,78 @@ +import{a as pt}from"./chunk-JQRUD6KW.mjs";import{a as ct}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{a as gt}from"./chunk-LRIF4GLE.mjs";import{o as Z}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{O as rt,S as at,T as nt,U as ot,V as st,W as it,X as lt,Y as dt,_ as Y,h as tt,t as et}from"./chunk-67TQ5CYL.mjs";import{b as G}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import"./chunk-4R4BOZG6.mjs";import{a as m}from"./chunk-AQ6EADP3.mjs";var j=m((n,a)=>{let e=n<=1?n*100:n;if(e<0||e>100)throw new Error(`${a} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${n}`);return e},"toPercent"),L=m((n,a,e)=>({x:j(a,`${e} evolution`),y:j(n,`${e} visibility`)}),"toCoordinates"),ut=m(n=>{if(n){if(n==="+<>")return"bidirectional";if(n==="+<")return"backward";if(n==="+>")return"forward"}},"getFlowFromPort"),$t=m(n=>{if(!n?.startsWith("+"))return{};let e=/^\+'([^']*)'/.exec(n)?.[1];return n.includes("<>")?{flow:"bidirectional",label:e}:n.includes("<")?{flow:"backward",label:e}:n.includes(">")?{flow:"forward",label:e}:{label:e}},"extractFlowFromArrow"),Nt=m((n,a)=>{if(pt(n,a),n.size&&a.setSize(n.size.width,n.size.height),n.evolution){let e=n.evolution.stages.map(r=>r.secondName?`${r.name.trim()} / ${r.secondName.trim()}`:r.name.trim()),u=n.evolution.stages.filter(r=>r.boundary!==void 0).map(r=>r.boundary);a.updateAxes({stages:e,stageBoundaries:u})}if(n.anchors.forEach(e=>{let u=L(e.visibility,e.evolution,`Anchor "${e.name}"`);a.addNode(e.name,e.name,u.x,u.y,"anchor")}),n.components.forEach(e=>{let u=L(e.visibility,e.evolution,`Component "${e.name}"`),r=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,l=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,h=e.decorator?.strategy;a.addNode(e.name,e.name,u.x,u.y,"component",r,l,e.inertia,h)}),n.notes.forEach(e=>{let u=L(e.visibility,e.evolution,`Note "${e.text}"`);a.addNote(e.text,u.x,u.y)}),n.pipelines.forEach(e=>{let u=a.getNode(e.parent);if(!u||typeof u.y!="number")throw new Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);let r=u.y;a.startPipeline(e.parent),e.components.forEach(l=>{let h=`${e.parent}_${l.name}`,S=l.label?(l.label.negX?-1:1)*l.label.offsetX:void 0,y=l.label?(l.label.negY?-1:1)*l.label.offsetY:void 0,I=j(l.evolution,`Pipeline component "${l.name}" evolution`);a.addNode(h,l.name,I,r,"pipeline-component",S,y),a.addPipelineComponent(e.parent,h)})}),n.links.forEach(e=>{let u=!!e.arrow&&(e.arrow.includes("-.->")||e.arrow.includes(".-.")),r=ut(e.fromPort)??ut(e.toPort),{flow:l,label:h}=$t(e.arrow);!r&&l&&(r=l);let S=e.linkLabel,y=h??S;a.addLink(a.resolveNodeId(e.from),a.resolveNodeId(e.to),u,y,r)}),n.evolves.forEach(e=>{let u=a.getNode(e.component);if(u?.y!==void 0){let r=j(e.target,`Evolve target for "${e.component}"`);a.addTrend(e.component,r,u.y)}}),n.annotations.length>0){let e=n.annotations[0],u=L(e.x,e.y,"Annotations box");a.setAnnotationsBox(u.x,u.y)}n.annotation.forEach(e=>{let u=L(e.x,e.y,`Annotation ${e.number}`);a.addAnnotation(e.number,[{x:u.x,y:u.y}],e.text)}),n.accelerators.forEach(e=>{let u=L(e.x,e.y,`Accelerator "${e.name}"`);a.addAccelerator(e.name,u.x,u.y)}),n.deaccelerators.forEach(e=>{let u=L(e.x,e.y,`Deaccelerator "${e.name}"`);a.addDeaccelerator(e.name,u.x,u.y)})},"populateDb"),U={parser:{yy:void 0},parse:m(async n=>{let a=await ct("wardley",n);G.debug(a);let e=U.parser?.yy;if(!e||typeof e.addNode!="function")throw new Error("parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Nt(a,e)},"parse")};var q=class{constructor(){this.nodes=new Map;this.links=[];this.trends=new Map;this.pipelines=new Map;this.annotations=[];this.notes=[];this.accelerators=[];this.deaccelerators=[];this.axes={}}static{m(this,"WardleyBuilder")}addNode(a){let e=this.nodes.get(a.id)??{id:a.id,label:a.label},u={...e,...a,className:a.className??e.className,labelOffsetX:a.labelOffsetX??e.labelOffsetX,labelOffsetY:a.labelOffsetY??e.labelOffsetY};this.nodes.set(a.id,u)}addLink(a){this.links.push(a)}addTrend(a){this.trends.set(a.nodeId,a)}startPipeline(a){this.pipelines.set(a,{nodeId:a,componentIds:[]});let e=this.nodes.get(a);e&&(e.isPipelineParent=!0)}addPipelineComponent(a,e){let u=this.pipelines.get(a);u&&u.componentIds.push(e);let r=this.nodes.get(e);r&&(r.inPipeline=!0)}addAnnotation(a){this.annotations.push(a)}addNote(a){this.notes.push(a)}addAccelerator(a){this.accelerators.push(a)}addDeaccelerator(a){this.deaccelerators.push(a)}setAnnotationsBox(a,e){this.annotationsBox={x:a,y:e}}setAxes(a){this.axes={...this.axes,...a}}setSize(a,e){this.size={width:a,height:e}}getNode(a){return this.nodes.get(a)}resolveNodeId(a){if(this.nodes.has(a))return a;for(let[e,u]of this.nodes)if(u.label===a)return e;return a}build(){let a=[];for(let e of this.nodes.values()){if(typeof e.x!="number"||typeof e.y!="number")throw new Error(`Node "${e.label}" is missing coordinates`);a.push(e)}return{nodes:a,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}};var w=new q;function Mt(){return Y()["wardley-beta"]}m(Mt,"getConfig");function vt(n,a,e,u,r,l,h,S,y){w.addNode({id:n,label:a,x:e,y:u,className:r,labelOffsetX:l,labelOffsetY:h,inertia:S,sourceStrategy:y})}m(vt,"addNode");function Tt(n,a,e=!1,u,r){w.addLink({source:n,target:a,dashed:e,label:u,flow:r})}m(Tt,"addLink");function At(n,a,e){w.addTrend({nodeId:n,targetX:a,targetY:e})}m(At,"addTrend");function Lt(n,a,e){w.addAnnotation({number:n,coordinates:a,text:e})}m(Lt,"addAnnotation");function zt(n,a,e){w.addNote({text:n,x:a,y:e})}m(zt,"addNote");function Xt(n,a,e){w.addAccelerator({name:n,x:a,y:e})}m(Xt,"addAccelerator");function Bt(n,a,e){w.addDeaccelerator({name:n,x:a,y:e})}m(Bt,"addDeaccelerator");function Et(n,a){w.setAnnotationsBox(n,a)}m(Et,"setAnnotationsBox");function Dt(n,a){w.setSize(n,a)}m(Dt,"setSize");function Yt(n){w.startPipeline(n)}m(Yt,"startPipeline");function It(n,a){w.addPipelineComponent(n,a)}m(It,"addPipelineComponent");function Ot(n){w.setAxes(n)}m(Ot,"updateAxes");function Rt(n){return w.getNode(n)}m(Rt,"getNode");function Ft(n){return w.resolveNodeId(n)}m(Ft,"resolveNodeId");function Gt(){return w.build()}m(Gt,"getWardleyData");function jt(){w.clear(),at()}m(jt,"clear");var ft={getConfig:Mt,addNode:vt,addLink:Tt,addTrend:At,addAnnotation:Lt,addNote:zt,addAccelerator:Xt,addDeaccelerator:Bt,setAnnotationsBox:Et,setSize:Dt,startPipeline:Yt,addPipelineComponent:It,updateAxes:Ot,getNode:Rt,resolveNodeId:Ft,getWardleyData:Gt,clear:jt,setAccTitle:nt,getAccTitle:ot,setDiagramTitle:lt,getDiagramTitle:dt,getAccDescription:it,setAccDescription:st};var qt=["Genesis","Custom Built","Product","Commodity"],Ht=m(()=>{let{themeVariables:n}=Y();return{backgroundColor:n.wardley?.backgroundColor??n.background??"#fff",axisColor:n.wardley?.axisColor??"#000",axisTextColor:n.wardley?.axisTextColor??n.primaryTextColor??"#222",gridColor:n.wardley?.gridColor??"rgba(100, 100, 100, 0.2)",componentFill:n.wardley?.componentFill??"#fff",componentStroke:n.wardley?.componentStroke??"#000",componentLabelColor:n.wardley?.componentLabelColor??n.primaryTextColor??"#222",linkStroke:n.wardley?.linkStroke??"#000",evolutionStroke:n.wardley?.evolutionStroke??"#dc3545",annotationStroke:n.wardley?.annotationStroke??"#000",annotationTextColor:n.wardley?.annotationTextColor??n.primaryTextColor??"#222",annotationFill:n.wardley?.annotationFill??n.background??"#fff"}},"getTheme"),Vt=m(()=>{let n=Y()["wardley-beta"];return{width:n?.width??900,height:n?.height??600,padding:n?.padding??48,nodeRadius:n?.nodeRadius??6,nodeLabelOffset:n?.nodeLabelOffset??8,axisFontSize:n?.axisFontSize??12,labelFontSize:n?.labelFontSize??10,showGrid:n?.showGrid??!1,useMaxWidth:n?.useMaxWidth??!0}},"getConfigValues"),_t=m((n,a,e,u)=>{G.debug(`Rendering Wardley map +`+n);let r=Vt(),l=Ht(),h=r.nodeRadius*1.6,S=u.db,y=S.getWardleyData(),I=S.getDiagramTitle(),$=y.size?.width??r.width,k=y.size?.height??r.height,X=gt(a);X.selectAll("*").remove(),rt(X,k,$,r.useMaxWidth),X.attr("viewBox",`0 0 ${$} ${k}`);let W=X.append("g").attr("class","wardley-map"),H=X.append("defs");H.append("marker").attr("id",`arrow-${a}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",l.evolutionStroke).attr("stroke","none"),H.append("marker").attr("id",`link-arrow-end-${a}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",l.linkStroke).attr("stroke","none"),H.append("marker").attr("id",`link-arrow-start-${a}`).attr("viewBox","0 0 10 10").attr("refX",1).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z").attr("fill",l.linkStroke).attr("stroke","none"),W.append("rect").attr("class","wardley-background").attr("width",$).attr("height",k).attr("fill",l.backgroundColor);let B=$-r.padding*2,E=k-r.padding*2;I&&W.append("text").attr("class","wardley-title").attr("x",$/2).attr("y",r.padding/2).attr("fill",l.axisTextColor).attr("font-size",r.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(I);let v=m(t=>r.padding+t/100*B,"projectX"),T=m(t=>k-r.padding-t/100*E,"projectY"),O=W.append("g").attr("class","wardley-axes");O.append("line").attr("x1",r.padding).attr("x2",$-r.padding).attr("y1",k-r.padding).attr("y2",k-r.padding).attr("stroke",l.axisColor).attr("stroke-width",1),O.append("line").attr("x1",r.padding).attr("x2",r.padding).attr("y1",r.padding).attr("y2",k-r.padding).attr("stroke",l.axisColor).attr("stroke-width",1);let mt=y.axes.xLabel??"Evolution",ht=y.axes.yLabel??"Visibility";O.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",r.padding+B/2).attr("y",k-r.padding/4).attr("fill",l.axisTextColor).attr("font-size",r.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(mt),O.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",r.padding/3).attr("y",r.padding+E/2).attr("fill",l.axisTextColor).attr("font-size",r.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${r.padding/3} ${r.padding+E/2})`).text(ht);let D=y.axes.stages&&y.axes.stages.length>0?y.axes.stages:qt;if(D.length>0){let t=W.append("g").attr("class","wardley-stages"),s=y.axes.stageBoundaries,o=[];if(s&&s.length===D.length){let i=0;s.forEach(p=>{o.push({start:i,end:p}),i=p})}else{let i=1/D.length;D.forEach((p,d)=>{o.push({start:d*i,end:(d+1)*i})})}D.forEach((i,p)=>{let d=o[p],g=r.padding+d.start*B,f=r.padding+d.end*B,x=(g+f)/2;p>0&&t.append("line").attr("x1",g).attr("x2",g).attr("y1",r.padding).attr("y2",k-r.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),t.append("text").attr("class","wardley-stage-label").attr("x",x).attr("y",k-r.padding/1.5).attr("fill",l.axisTextColor).attr("font-size",r.axisFontSize-2).attr("text-anchor","middle").text(i)})}if(r.showGrid){let t=W.append("g").attr("class","wardley-grid");for(let s=1;s<4;s++){let o=s/4,i=r.padding+B*o;t.append("line").attr("x1",i).attr("x2",i).attr("y1",r.padding).attr("y2",k-r.padding).attr("stroke",l.gridColor).attr("stroke-dasharray","2 6"),t.append("line").attr("x1",r.padding).attr("x2",$-r.padding).attr("y1",k-r.padding-E*o).attr("y2",k-r.padding-E*o).attr("stroke",l.gridColor).attr("stroke-dasharray","2 6")}}let c=new Map;if(y.nodes.forEach(t=>{c.set(t.id,{x:v(t.x),y:T(t.y),node:t})}),y.pipelines.length>0){let t=W.append("g").attr("class","wardley-pipelines"),s=W.append("g").attr("class","wardley-pipeline-links");y.pipelines.forEach(o=>{if(o.componentIds.length===0)return;let i=o.componentIds.map(f=>({id:f,pos:c.get(f),node:y.nodes.find(x=>x.id===f)})).filter(f=>f.pos&&f.node).sort((f,x)=>f.node.x-x.node.x);for(let f=0;f{let x=c.get(f);x&&(p=Math.min(p,x.x),d=Math.max(d,x.x),g=x.y)}),p!==1/0&&d!==-1/0){let x=r.nodeRadius*4,b=g-x/2,P=c.get(o.nodeId);if(P){let M=(p+d)/2;P.x=M,P.y=b-h/6}t.append("rect").attr("class","wardley-pipeline-box").attr("x",p-15).attr("y",b).attr("width",d-p+30).attr("height",x).attr("fill","none").attr("stroke",l.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}let J=W.append("g").attr("class","wardley-links"),K=new Map;y.pipelines.forEach(t=>{K.set(t.nodeId,new Set(t.componentIds))});let Q=y.links.filter(t=>!(!c.has(t.source)||!c.has(t.target)||K.get(t.target)?.has(t.source)));J.selectAll("line").data(Q).enter().append("line").attr("class",t=>`wardley-link${t.dashed?" wardley-link--dashed":""}`).attr("x1",t=>{let s=c.get(t.source),o=c.get(t.target),p=y.nodes.find(x=>x.id===t.source).isPipelineParent?h/Math.sqrt(2):r.nodeRadius,d=o.x-s.x,g=o.y-s.y,f=Math.sqrt(d*d+g*g);return s.x+d/f*p}).attr("y1",t=>{let s=c.get(t.source),o=c.get(t.target),p=y.nodes.find(x=>x.id===t.source).isPipelineParent?h/Math.sqrt(2):r.nodeRadius,d=o.x-s.x,g=o.y-s.y,f=Math.sqrt(d*d+g*g);return s.y+g/f*p}).attr("x2",t=>{let s=c.get(t.source),o=c.get(t.target),p=y.nodes.find(x=>x.id===t.target).isPipelineParent?h/Math.sqrt(2):r.nodeRadius,d=s.x-o.x,g=s.y-o.y,f=Math.sqrt(d*d+g*g);return o.x+d/f*p}).attr("y2",t=>{let s=c.get(t.source),o=c.get(t.target),p=y.nodes.find(x=>x.id===t.target).isPipelineParent?h/Math.sqrt(2):r.nodeRadius,d=s.x-o.x,g=s.y-o.y,f=Math.sqrt(d*d+g*g);return o.y+g/f*p}).attr("stroke",l.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",t=>t.dashed?"6 6":null).attr("marker-end",t=>t.flow==="forward"||t.flow==="bidirectional"?`url(#link-arrow-end-${a})`:null).attr("marker-start",t=>t.flow==="backward"||t.flow==="bidirectional"?`url(#link-arrow-start-${a})`:null),J.selectAll("text").data(Q.filter(t=>t.label)).enter().append("text").attr("class","wardley-link-label").attr("x",t=>{let s=c.get(t.source),o=c.get(t.target),i=(s.x+o.x)/2,p=o.y-s.y,d=o.x-s.x,g=Math.sqrt(d*d+p*p),f=8,x=p/g;return i+x*f}).attr("y",t=>{let s=c.get(t.source),o=c.get(t.target),i=(s.y+o.y)/2,p=o.x-s.x,d=o.y-s.y,g=Math.sqrt(p*p+d*d),f=8,x=-p/g;return i+x*f}).attr("fill",l.axisTextColor).attr("font-size",r.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",t=>{let s=c.get(t.source),o=c.get(t.target),i=(s.x+o.x)/2,p=(s.y+o.y)/2,d=o.x-s.x,g=o.y-s.y,f=Math.sqrt(d*d+g*g),x=8,b=g/f,P=-d/f,M=i+b*x,R=p+P*x,z=Math.atan2(g,d)*180/Math.PI;return(z>90||z<-90)&&(z+=180),`rotate(${z} ${M} ${R})`}).text(t=>t.label);let bt=W.append("g").attr("class","wardley-trends"),wt=y.trends.map(t=>{let s=c.get(t.nodeId);if(!s)return null;let o=v(t.targetX),i=T(t.targetY),p=o-s.x,d=i-s.y,g=Math.sqrt(p*p+d*d),f=r.nodeRadius+2,x=g>f?o-p/g*f:o,b=g>f?i-d/g*f:i;return{origin:s,targetX:o,targetY:i,adjustedX2:x,adjustedY2:b}}).filter(t=>t!==null);bt.selectAll("line").data(wt).enter().append("line").attr("class","wardley-trend").attr("x1",t=>t.origin.x).attr("y1",t=>t.origin.y).attr("x2",t=>t.adjustedX2).attr("y2",t=>t.adjustedY2).attr("stroke",l.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${a})`);let N=W.append("g").attr("class","wardley-nodes").selectAll("g").data(y.nodes).enter().append("g").attr("class",t=>["wardley-node",t.className?`wardley-node--${t.className}`:""].filter(Boolean).join(" "));N.filter(t=>t.sourceStrategy==="outsource").append("circle").attr("class","wardley-outsource-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius*2).attr("fill","#666").attr("stroke",l.componentStroke).attr("stroke-width",1),N.filter(t=>t.sourceStrategy==="buy").append("circle").attr("class","wardley-buy-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius*2).attr("fill","#ccc").attr("stroke",l.componentStroke).attr("stroke-width",1),N.filter(t=>t.sourceStrategy==="build").append("circle").attr("class","wardley-build-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius*2).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);let A=N.filter(t=>t.sourceStrategy==="market");A.append("circle").attr("class","wardley-market-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius*2).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",1),N.filter(t=>!t.isPipelineParent&&t.sourceStrategy!=="market"&&t.className!=="anchor").append("circle").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius).attr("fill",l.componentFill).attr("stroke",l.componentStroke).attr("stroke-width",1);let V=r.nodeRadius*.7,C=r.nodeRadius*1.2;if(A.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x).attr("y1",t=>c.get(t.id).y-C).attr("x2",t=>c.get(t.id).x-C*Math.cos(Math.PI/6)).attr("y2",t=>c.get(t.id).y+C*Math.sin(Math.PI/6)).attr("stroke",l.componentStroke).attr("stroke-width",1),A.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x-C*Math.cos(Math.PI/6)).attr("y1",t=>c.get(t.id).y+C*Math.sin(Math.PI/6)).attr("x2",t=>c.get(t.id).x+C*Math.cos(Math.PI/6)).attr("y2",t=>c.get(t.id).y+C*Math.sin(Math.PI/6)).attr("stroke",l.componentStroke).attr("stroke-width",1),A.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x+C*Math.cos(Math.PI/6)).attr("y1",t=>c.get(t.id).y+C*Math.sin(Math.PI/6)).attr("x2",t=>c.get(t.id).x).attr("y2",t=>c.get(t.id).y-C).attr("stroke",l.componentStroke).attr("stroke-width",1),A.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y-C).attr("r",V).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",2),A.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x-C*Math.cos(Math.PI/6)).attr("cy",t=>c.get(t.id).y+C*Math.sin(Math.PI/6)).attr("r",V).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",2),A.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x+C*Math.cos(Math.PI/6)).attr("cy",t=>c.get(t.id).y+C*Math.sin(Math.PI/6)).attr("r",V).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",2),N.filter(t=>t.isPipelineParent===!0).append("rect").attr("x",t=>c.get(t.id).x-h/2).attr("y",t=>c.get(t.id).y-h/2).attr("width",h).attr("height",h).attr("fill",l.componentFill).attr("stroke",l.componentStroke).attr("stroke-width",1),N.filter(t=>t.inertia===!0).append("line").attr("class","wardley-inertia").attr("x1",t=>{let s=c.get(t.id),o=t.isPipelineParent?h/2+15:r.nodeRadius+15;return t.sourceStrategy&&(o+=r.nodeRadius+10),s.x+o}).attr("y1",t=>{let s=c.get(t.id),o=t.isPipelineParent?h:r.nodeRadius*2;return s.y-o/2}).attr("x2",t=>{let s=c.get(t.id),o=t.isPipelineParent?h/2+15:r.nodeRadius+15;return t.sourceStrategy&&(o+=r.nodeRadius+10),s.x+o}).attr("y2",t=>{let s=c.get(t.id),o=t.isPipelineParent?h:r.nodeRadius*2;return s.y+o/2}).attr("stroke",l.componentStroke).attr("stroke-width",6),N.append("text").attr("x",t=>{let s=c.get(t.id);if(t.className==="anchor")return t.labelOffsetX!==void 0?s.x+t.labelOffsetX:s.x;let o=r.nodeLabelOffset;t.sourceStrategy&&t.labelOffsetX===void 0&&(o+=10);let i=t.labelOffsetX??o;return s.x+i}).attr("y",t=>{let s=c.get(t.id);if(t.className==="anchor")return t.labelOffsetY!==void 0?s.y+t.labelOffsetY:s.y-3;let o=-r.nodeLabelOffset;t.sourceStrategy&&t.labelOffsetY===void 0&&(o-=10);let i=t.labelOffsetY??o;return s.y+i}).attr("class","wardley-node-label").attr("fill",t=>t.className==="evolved"?l.evolutionStroke:t.className==="anchor"?"#000":l.componentLabelColor).attr("font-size",r.labelFontSize).attr("font-weight",t=>t.className==="anchor"?"bold":"normal").attr("text-anchor",t=>t.className==="anchor"?"middle":"start").attr("dominant-baseline",t=>t.className==="anchor"?"middle":"auto").text(t=>t.label),y.annotations.length>0){let t=W.append("g").attr("class","wardley-annotations");if(y.annotations.forEach(s=>{let o=s.coordinates.map(i=>({x:v(i.x),y:T(i.y)}));if(o.length>1)for(let i=0;i{let p=t.append("g").attr("class","wardley-annotation");p.append("circle").attr("cx",i.x).attr("cy",i.y).attr("r",10).attr("fill","white").attr("stroke",l.axisColor).attr("stroke-width",1.5),p.append("text").attr("x",i.x).attr("y",i.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",l.axisTextColor).attr("font-weight","bold").text(s.number)})}),y.annotationsBox){let s=v(y.annotationsBox.x),o=T(y.annotationsBox.y),i=10,p=16,d=11,g=t.append("g").attr("class","wardley-annotations-box"),f=[...y.annotations].filter(b=>b.text).sort((b,P)=>b.number-P.number),x=[];if(f.forEach((b,P)=>{let M=g.append("text").attr("x",s+i).attr("y",o+i+(P+1)*p).attr("font-size",d).attr("fill",l.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${b.number}. ${b.text}`);x.push(M)}),x.length>0){let b=0,P=0;x.forEach(_=>{let F=_.node(),Pt=F.getComputedTextLength();b=Math.max(b,Pt);let St=F.getBBox();P=Math.max(P,St.height)});let M=b+i*2+105,R=f.length*p+i*2+P/2,z=r.padding,kt=$-r.padding-M,Ct=r.padding,Wt=k-r.padding-R;s=Math.max(z,Math.min(s,kt)),o=Math.max(Ct,Math.min(o,Wt)),x.forEach((_,F)=>{_.attr("x",s+i).attr("y",o+i+(F+1)*p)}),g.insert("rect","text").attr("x",s).attr("y",o).attr("width",M).attr("height",R).attr("fill","white").attr("stroke",l.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(y.notes.length>0){let t=W.append("g").attr("class","wardley-notes");y.notes.forEach(s=>{let o=v(s.x),i=T(s.y);t.append("text").attr("x",o).attr("y",i).attr("text-anchor","start").attr("font-size",11).attr("fill",l.axisTextColor).attr("font-weight","bold").text(s.text)})}if(y.accelerators.length>0){let t=W.append("g").attr("class","wardley-accelerators");y.accelerators.forEach(s=>{let o=v(s.x),i=T(s.y),p=60,d=30,g=20,f=` + M ${o} ${i-d/2} + L ${o+p-g} ${i-d/2} + L ${o+p-g} ${i-d/2-8} + L ${o+p} ${i} + L ${o+p-g} ${i+d/2+8} + L ${o+p-g} ${i+d/2} + L ${o} ${i+d/2} + Z + `;t.append("path").attr("d",f).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",1),t.append("text").attr("x",o+p/2).attr("y",i+d/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",l.axisTextColor).attr("font-weight","bold").text(s.name)})}if(y.deaccelerators.length>0){let t=W.append("g").attr("class","wardley-deaccelerators");y.deaccelerators.forEach(s=>{let o=v(s.x),i=T(s.y),p=60,d=30,g=20,f=` + M ${o+p} ${i-d/2} + L ${o+g} ${i-d/2} + L ${o+g} ${i-d/2-8} + L ${o} ${i} + L ${o+g} ${i+d/2+8} + L ${o+g} ${i+d/2} + L ${o+p} ${i+d/2} + Z + `;t.append("path").attr("d",f).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",1),t.append("text").attr("x",o+p/2).attr("y",i+d/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",l.axisTextColor).attr("font-weight","bold").text(s.name)})}},"draw"),yt={draw:_t};var xt=m(({wardley:n}={})=>{let a=tt(),e=et(),u=Z(a,e.themeVariables),r=Z(u.wardley,n);return` + .wardley-background { + fill: ${r.backgroundColor}; + } + .wardley-axes line, .wardley-axes path { + stroke: ${r.axisColor}; + } + .wardley-axis-label { + fill: ${r.axisTextColor}; + } + .wardley-stage-label { + fill: ${r.axisTextColor}; + } + .wardley-grid line { + stroke: ${r.gridColor}; + } + .wardley-node circle { + fill: ${r.componentFill}; + stroke: ${r.componentStroke}; + } + .wardley-node-label { + fill: ${r.componentLabelColor}; + } + .wardley-link { + stroke: ${r.linkStroke}; + } + .wardley-link--dashed { + stroke-dasharray: 4 4; + } + .wardley-link-label { + fill: ${r.axisTextColor}; + } + .wardley-trend line { + stroke: ${r.evolutionStroke}; + } + .wardley-annotation-line { + stroke: ${r.annotationStroke}; + } + .wardley-annotation circle { + fill: ${r.annotationFill}; + stroke: ${r.annotationStroke}; + } + .wardley-annotation text { + fill: ${r.annotationTextColor}; + } + .wardley-annotations-box rect { + fill: ${r.annotationFill}; + stroke: ${r.annotationStroke}; + } + .wardley-annotations-box text { + fill: ${r.annotationTextColor}; + } + .wardley-pipeline-box { + stroke: ${r.componentStroke}; + } + .wardley-notes text { + fill: ${r.axisTextColor}; + } + `},"styles");var We={parser:U,db:ft,renderer:yt,styles:xt};export{We as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/wardleyDiagram-CUQ6CDDI.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/wardleyDiagram-CUQ6CDDI.mjs.map new file mode 100644 index 0000000..08bd9ea --- /dev/null +++ b/assets/mermaid/chunks/mermaid.esm.min/wardleyDiagram-CUQ6CDDI.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../src/diagrams/wardley/wardleyParser.ts", "../../../src/diagrams/wardley/wardleyBuilder.ts", "../../../src/diagrams/wardley/wardleyDb.ts", "../../../src/diagrams/wardley/wardleyRenderer.ts", "../../../src/diagrams/wardley/styles.ts", "../../../src/diagrams/wardley/wardleyDiagram.ts"], + "sourcesContent": ["import type { Wardley } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport type { WardleyDB } from './wardleyTypes.js';\n\nconst toPercent = (value: number, context: string): number => {\n // Accept values in 0-1 range (converted to percentage) or 0-100 range (used as-is)\n const normalized = value <= 1 ? value * 100 : value;\n if (normalized < 0 || normalized > 100) {\n throw new Error(\n `${context} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${value}`\n );\n }\n return normalized;\n};\n\nconst toCoordinates = (\n visibility: number,\n evolution: number,\n context: string\n): { x: number; y: number } => {\n return {\n x: toPercent(evolution, `${context} evolution`),\n y: toPercent(visibility, `${context} visibility`),\n };\n};\n\nconst getFlowFromPort = (port?: string): 'forward' | 'backward' | 'bidirectional' | undefined => {\n if (!port) {\n return undefined;\n }\n if (port === '+<>') {\n return 'bidirectional';\n }\n if (port === '+<') {\n return 'backward';\n }\n if (port === '+>') {\n return 'forward';\n }\n return undefined;\n};\n\nconst extractFlowFromArrow = (\n arrow?: string\n): { flow?: 'forward' | 'backward' | 'bidirectional'; label?: string } => {\n if (!arrow?.startsWith('+')) {\n return {};\n }\n\n const labelMatch = /^\\+'([^']*)'/.exec(arrow);\n const flowLabel = labelMatch?.[1];\n\n if (arrow.includes('<>')) {\n return { flow: 'bidirectional', label: flowLabel };\n }\n if (arrow.includes('<')) {\n return { flow: 'backward', label: flowLabel };\n }\n if (arrow.includes('>')) {\n return { flow: 'forward', label: flowLabel };\n }\n return { label: flowLabel };\n};\n\nconst populateDb = (ast: Wardley, db: WardleyDB) => {\n populateCommonDb(ast, db);\n\n // Set size if provided\n if (ast.size) {\n db.setSize(ast.size.width, ast.size.height);\n }\n\n // Process evolution stages\n if (ast.evolution) {\n const stages = ast.evolution.stages.map((stage) => {\n // Handle dual-label stages like \"Genesis / Concept\"\n if (stage.secondName) {\n return `${stage.name.trim()} / ${stage.secondName.trim()}`;\n }\n return stage.name.trim();\n });\n const stageBoundaries = ast.evolution.stages\n .filter((stage) => stage.boundary !== undefined)\n .map((stage) => stage.boundary!);\n\n db.updateAxes({ stages, stageBoundaries });\n }\n\n // Add anchors as nodes with className 'anchor'\n ast.anchors.forEach((anchor) => {\n const coords = toCoordinates(anchor.visibility, anchor.evolution, `Anchor \"${anchor.name}\"`);\n db.addNode(anchor.name, anchor.name, coords.x, coords.y, 'anchor');\n });\n\n // Add components\n ast.components.forEach((component) => {\n const coords = toCoordinates(\n component.visibility,\n component.evolution,\n `Component \"${component.name}\"`\n );\n const labelOffsetX = component.label\n ? (component.label.negX ? -1 : 1) * component.label.offsetX\n : undefined;\n const labelOffsetY = component.label\n ? (component.label.negY ? -1 : 1) * component.label.offsetY\n : undefined;\n const sourceStrategy = component.decorator?.strategy as\n | 'build'\n | 'buy'\n | 'outsource'\n | 'market'\n | undefined;\n\n db.addNode(\n component.name,\n component.name,\n coords.x,\n coords.y,\n 'component',\n labelOffsetX,\n labelOffsetY,\n component.inertia,\n sourceStrategy\n );\n });\n\n // Add notes\n ast.notes.forEach((note) => {\n const coords = toCoordinates(note.visibility, note.evolution, `Note \"${note.text}\"`);\n db.addNote(note.text, coords.x, coords.y);\n });\n\n // Process pipelines\n ast.pipelines.forEach((pipeline) => {\n const parentNode = db.getNode(pipeline.parent);\n if (!parentNode || typeof parentNode.y !== 'number') {\n throw new Error(\n `Pipeline \"${pipeline.parent}\" must reference an existing component with coordinates.`\n );\n }\n const parentY = parentNode.y; // Extract to ensure type narrowing\n\n db.startPipeline(pipeline.parent);\n pipeline.components.forEach((component) => {\n // Create a synthetic ID for pipeline components\n const componentId = `${pipeline.parent}_${component.name}`;\n const labelOffsetX = component.label\n ? (component.label.negX ? -1 : 1) * component.label.offsetX\n : undefined;\n const labelOffsetY = component.label\n ? (component.label.negY ? -1 : 1) * component.label.offsetY\n : undefined;\n const x = toPercent(component.evolution, `Pipeline component \"${component.name}\" evolution`);\n\n // Add pipeline component node (it will be associated with the parent)\n db.addNode(\n componentId,\n component.name,\n x,\n parentY,\n 'pipeline-component',\n labelOffsetX,\n labelOffsetY\n );\n db.addPipelineComponent(pipeline.parent, componentId);\n });\n });\n\n // Add links\n ast.links.forEach((link) => {\n const isDashed = !!link.arrow && (link.arrow.includes('-.->') || link.arrow.includes('.-.'));\n\n let flow = getFlowFromPort(link.fromPort) ?? getFlowFromPort(link.toPort);\n const { flow: arrowFlow, label: flowLabel } = extractFlowFromArrow(link.arrow);\n if (!flow && arrowFlow) {\n flow = arrowFlow;\n }\n\n const annotation = link.linkLabel;\n const label = flowLabel ?? annotation;\n\n db.addLink(db.resolveNodeId(link.from), db.resolveNodeId(link.to), isDashed, label, flow);\n });\n\n // Add evolves (trends)\n ast.evolves.forEach((evolve) => {\n // Get the component to find its current position\n const node = db.getNode(evolve.component);\n if (node?.y !== undefined) {\n const target = toPercent(evolve.target, `Evolve target for \"${evolve.component}\"`);\n db.addTrend(evolve.component, target, node.y);\n }\n });\n\n // Set annotations box\n if (ast.annotations.length > 0) {\n const annotationsBox = ast.annotations[0];\n const coords = toCoordinates(annotationsBox.x, annotationsBox.y, 'Annotations box');\n db.setAnnotationsBox(coords.x, coords.y);\n }\n\n // Add individual annotations\n ast.annotation.forEach((annotation) => {\n const coords = toCoordinates(annotation.x, annotation.y, `Annotation ${annotation.number}`);\n db.addAnnotation(annotation.number, [{ x: coords.x, y: coords.y }], annotation.text);\n });\n\n // Add accelerators\n ast.accelerators.forEach((accelerator) => {\n const coords = toCoordinates(accelerator.x, accelerator.y, `Accelerator \"${accelerator.name}\"`);\n db.addAccelerator(accelerator.name, coords.x, coords.y);\n });\n\n // Add deaccelerators\n ast.deaccelerators.forEach((deaccelerator) => {\n const coords = toCoordinates(\n deaccelerator.x,\n deaccelerator.y,\n `Deaccelerator \"${deaccelerator.name}\"`\n );\n db.addDeaccelerator(deaccelerator.name, coords.x, coords.y);\n });\n};\n\nexport const parser: ParserDefinition = {\n parser: {\n // @ts-expect-error - WardleyDB is not assignable to DiagramDB\n yy: undefined,\n },\n parse: async (input: string): Promise => {\n const ast: Wardley = await parse('wardley', input);\n log.debug(ast);\n const db = parser.parser?.yy as WardleyDB;\n if (!db || typeof db.addNode !== 'function') {\n throw new Error(\n 'parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.'\n );\n }\n populateDb(ast, db);\n },\n};\n", "export interface WardleyNode {\n id: string;\n label: string;\n x?: number;\n y?: number;\n className?: string;\n labelOffsetX?: number;\n labelOffsetY?: number;\n inPipeline?: boolean;\n isPipelineParent?: boolean;\n inertia?: boolean;\n sourceStrategy?: 'build' | 'buy' | 'outsource' | 'market';\n}\n\nexport interface WardleyLink {\n source: string;\n target: string;\n dashed?: boolean;\n label?: string;\n flow?: 'forward' | 'backward' | 'bidirectional';\n}\n\nexport interface WardleyTrend {\n nodeId: string;\n targetX: number;\n targetY: number;\n}\n\nexport interface WardleyPipeline {\n nodeId: string;\n componentIds: string[];\n}\n\nexport interface WardleyAnnotation {\n number: number;\n coordinates: { x: number; y: number }[];\n text?: string;\n}\n\nexport interface WardleyNote {\n text: string;\n x: number;\n y: number;\n}\n\nexport interface WardleyAccelerator {\n name: string;\n x: number;\n y: number;\n}\n\nexport interface WardleyDeaccelerator {\n name: string;\n x: number;\n y: number;\n}\n\nexport interface WardleyAxesConfig {\n xLabel?: string;\n yLabel?: string;\n stages?: string[];\n stageBoundaries?: number[]; // Optional custom boundaries for stages (0.0 to 1.0)\n}\n\nexport interface WardleyBuildResult {\n nodes: WardleyNode[];\n links: WardleyLink[];\n trends: WardleyTrend[];\n pipelines: WardleyPipeline[];\n annotations: WardleyAnnotation[];\n notes: WardleyNote[];\n accelerators: WardleyAccelerator[];\n deaccelerators: WardleyDeaccelerator[];\n annotationsBox?: { x: number; y: number };\n axes: WardleyAxesConfig;\n size?: { width: number; height: number };\n}\n\nexport class WardleyBuilder {\n private nodes = new Map();\n private links: WardleyLink[] = [];\n private trends = new Map();\n private pipelines = new Map();\n private annotations: WardleyAnnotation[] = [];\n private notes: WardleyNote[] = [];\n private accelerators: WardleyAccelerator[] = [];\n private deaccelerators: WardleyDeaccelerator[] = [];\n private annotationsBox?: { x: number; y: number };\n private axes: WardleyAxesConfig = {};\n private size?: { width: number; height: number };\n\n public addNode(node: WardleyNode) {\n const existing = this.nodes.get(node.id) ?? { id: node.id, label: node.label };\n const merged: WardleyNode = {\n ...existing,\n ...node,\n className: node.className ?? existing.className,\n labelOffsetX: node.labelOffsetX ?? existing.labelOffsetX,\n labelOffsetY: node.labelOffsetY ?? existing.labelOffsetY,\n };\n this.nodes.set(node.id, merged);\n }\n\n public addLink(link: WardleyLink) {\n this.links.push(link);\n }\n\n public addTrend(trend: WardleyTrend) {\n this.trends.set(trend.nodeId, trend);\n }\n\n public startPipeline(nodeId: string) {\n this.pipelines.set(nodeId, { nodeId, componentIds: [] });\n\n // Mark the parent node as a pipeline parent\n const node = this.nodes.get(nodeId);\n if (node) {\n node.isPipelineParent = true;\n }\n }\n\n public addPipelineComponent(pipelineNodeId: string, componentId: string) {\n const pipeline = this.pipelines.get(pipelineNodeId);\n if (pipeline) {\n pipeline.componentIds.push(componentId);\n }\n\n // Mark the node as being in a pipeline\n const node = this.nodes.get(componentId);\n if (node) {\n node.inPipeline = true;\n }\n }\n\n public addAnnotation(annotation: WardleyAnnotation) {\n this.annotations.push(annotation);\n }\n\n public addNote(note: WardleyNote) {\n this.notes.push(note);\n }\n\n public addAccelerator(accelerator: WardleyAccelerator) {\n this.accelerators.push(accelerator);\n }\n\n public addDeaccelerator(deaccelerator: WardleyDeaccelerator) {\n this.deaccelerators.push(deaccelerator);\n }\n\n public setAnnotationsBox(x: number, y: number) {\n this.annotationsBox = { x, y };\n }\n\n public setAxes(partial: WardleyAxesConfig) {\n this.axes = {\n ...this.axes,\n ...partial,\n };\n }\n\n public setSize(width: number, height: number) {\n this.size = { width, height };\n }\n\n public getNode(id: string): WardleyNode | undefined {\n return this.nodes.get(id);\n }\n\n /**\n * Resolve a name to a node ID. Tries exact ID match first,\n * then falls back to finding a node whose label matches the name\n * (handles pipeline components which have synthetic IDs like \"Parent_Child\").\n */\n public resolveNodeId(name: string): string {\n if (this.nodes.has(name)) {\n return name;\n }\n for (const [id, node] of this.nodes) {\n if (node.label === name) {\n return id;\n }\n }\n return name;\n }\n\n public build(): WardleyBuildResult {\n const nodes: WardleyNode[] = [];\n for (const node of this.nodes.values()) {\n if (typeof node.x !== 'number' || typeof node.y !== 'number') {\n throw new Error(`Node \"${node.label}\" is missing coordinates`);\n }\n nodes.push(node as WardleyNode & { x: number; y: number });\n }\n return {\n nodes,\n links: [...this.links],\n trends: [...this.trends.values()],\n pipelines: [...this.pipelines.values()],\n annotations: [...this.annotations],\n notes: [...this.notes],\n accelerators: [...this.accelerators],\n deaccelerators: [...this.deaccelerators],\n annotationsBox: this.annotationsBox,\n axes: { ...this.axes },\n size: this.size,\n };\n }\n\n public clear() {\n this.nodes.clear();\n this.links = [];\n this.trends.clear();\n this.pipelines.clear();\n this.annotations = [];\n this.notes = [];\n this.accelerators = [];\n this.deaccelerators = [];\n this.annotationsBox = undefined;\n this.axes = {};\n this.size = undefined;\n }\n}\n", "import { getConfig as getGlobalConfig } from '../../diagram-api/diagramAPI.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport type { WardleyAxesConfig } from './wardleyBuilder.js';\nimport { WardleyBuilder } from './wardleyBuilder.js';\n\nconst builder = new WardleyBuilder();\n\nfunction getConfig() {\n return getGlobalConfig()['wardley-beta'];\n}\n\nfunction addNode(\n id: string,\n label: string,\n x: number,\n y: number,\n className?: string,\n labelOffsetX?: number,\n labelOffsetY?: number,\n inertia?: boolean,\n sourceStrategy?: 'build' | 'buy' | 'outsource' | 'market'\n) {\n builder.addNode({\n id,\n label,\n x,\n y,\n className,\n labelOffsetX,\n labelOffsetY,\n inertia,\n sourceStrategy,\n });\n}\n\nfunction addLink(\n sourceId: string,\n targetId: string,\n dashed = false,\n label?: string,\n flow?: 'forward' | 'backward' | 'bidirectional'\n) {\n builder.addLink({\n source: sourceId,\n target: targetId,\n dashed,\n label,\n flow,\n });\n}\n\nfunction addTrend(nodeId: string, targetX: number, targetY: number) {\n builder.addTrend({ nodeId, targetX, targetY });\n}\n\nfunction addAnnotation(number: number, coordinates: { x: number; y: number }[], text?: string) {\n builder.addAnnotation({\n number,\n coordinates,\n text,\n });\n}\n\nfunction addNote(text: string, x: number, y: number) {\n builder.addNote({\n text,\n x,\n y,\n });\n}\n\nfunction addAccelerator(name: string, x: number, y: number) {\n builder.addAccelerator({\n name,\n x,\n y,\n });\n}\n\nfunction addDeaccelerator(name: string, x: number, y: number) {\n builder.addDeaccelerator({\n name,\n x,\n y,\n });\n}\n\nfunction setAnnotationsBox(x: number, y: number) {\n builder.setAnnotationsBox(x, y);\n}\n\nfunction setSize(width: number, height: number) {\n builder.setSize(width, height);\n}\n\nfunction startPipeline(nodeId: string) {\n builder.startPipeline(nodeId);\n}\n\nfunction addPipelineComponent(pipelineNodeId: string, componentId: string) {\n builder.addPipelineComponent(pipelineNodeId, componentId);\n}\n\nfunction updateAxes(partial: WardleyAxesConfig) {\n builder.setAxes(partial);\n}\n\nfunction getNode(id: string) {\n return builder.getNode(id);\n}\n\nfunction resolveNodeId(name: string) {\n return builder.resolveNodeId(name);\n}\n\nfunction getWardleyData() {\n return builder.build();\n}\n\nfunction clear() {\n builder.clear();\n commonClear();\n}\n\nexport default {\n getConfig,\n addNode,\n addLink,\n addTrend,\n addAnnotation,\n addNote,\n addAccelerator,\n addDeaccelerator,\n setAnnotationsBox,\n setSize,\n startPipeline,\n addPipelineComponent,\n updateAxes,\n getNode,\n resolveNodeId,\n getWardleyData,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n};\n", "import type * as d3 from 'd3';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport type { Diagram } from '../../Diagram.js';\nimport { log } from '../../logger.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type { WardleyBuildResult, WardleyNode } from './wardleyBuilder.js';\n\n// Wardley DB does not sanitize text, so we can only use `.text()` for labels.\n/* eslint no-restricted-properties: [\"error\", {\"property\": \"html\"}] */\n\nconst DEFAULT_STAGES = ['Genesis', 'Custom Built', 'Product', 'Commodity'];\n\ntype WardleyText = d3.Selection;\n\ninterface WardleyTheme {\n backgroundColor: string;\n axisColor: string;\n axisTextColor: string;\n gridColor: string;\n componentFill: string;\n componentStroke: string;\n componentLabelColor: string;\n linkStroke: string;\n evolutionStroke: string;\n annotationStroke: string;\n annotationTextColor: string;\n annotationFill: string;\n}\n\nconst getTheme = (): WardleyTheme => {\n const { themeVariables } = getConfig();\n return {\n backgroundColor: themeVariables.wardley?.backgroundColor ?? themeVariables.background ?? '#fff',\n axisColor: themeVariables.wardley?.axisColor ?? '#000',\n axisTextColor:\n themeVariables.wardley?.axisTextColor ?? themeVariables.primaryTextColor ?? '#222',\n gridColor: themeVariables.wardley?.gridColor ?? 'rgba(100, 100, 100, 0.2)',\n componentFill: themeVariables.wardley?.componentFill ?? '#fff',\n componentStroke: themeVariables.wardley?.componentStroke ?? '#000',\n componentLabelColor:\n themeVariables.wardley?.componentLabelColor ?? themeVariables.primaryTextColor ?? '#222',\n linkStroke: themeVariables.wardley?.linkStroke ?? '#000',\n evolutionStroke: themeVariables.wardley?.evolutionStroke ?? '#dc3545',\n annotationStroke: themeVariables.wardley?.annotationStroke ?? '#000',\n annotationTextColor:\n themeVariables.wardley?.annotationTextColor ?? themeVariables.primaryTextColor ?? '#222',\n annotationFill: themeVariables.wardley?.annotationFill ?? themeVariables.background ?? '#fff',\n };\n};\n\nconst getConfigValues = () => {\n const wardleyConfig = getConfig()['wardley-beta'];\n return {\n width: wardleyConfig?.width ?? 900,\n height: wardleyConfig?.height ?? 600,\n padding: wardleyConfig?.padding ?? 48,\n nodeRadius: wardleyConfig?.nodeRadius ?? 6,\n nodeLabelOffset: wardleyConfig?.nodeLabelOffset ?? 8,\n axisFontSize: wardleyConfig?.axisFontSize ?? 12,\n labelFontSize: wardleyConfig?.labelFontSize ?? 10,\n showGrid: wardleyConfig?.showGrid ?? false,\n useMaxWidth: wardleyConfig?.useMaxWidth ?? true,\n };\n};\n\nexport const draw = (text: string, id: string, _version: string, diagObj: Diagram) => {\n log.debug('Rendering Wardley map\\n' + text);\n\n const configValues = getConfigValues();\n const theme = getTheme();\n const squareSize = configValues.nodeRadius * 1.6; // Size of pipeline parent square nodes\n const db = diagObj.db as {\n getWardleyData: () => WardleyBuildResult;\n getDiagramTitle: () => string;\n };\n const data = db.getWardleyData();\n const title = db.getDiagramTitle();\n\n // Override size if specified in diagram\n const width = data.size?.width ?? configValues.width;\n const height = data.size?.height ?? configValues.height;\n\n const svg = selectSvgElement(id);\n svg.selectAll('*').remove();\n\n configureSvgSize(svg, height, width, configValues.useMaxWidth);\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n\n const root = svg.append('g').attr('class', 'wardley-map');\n\n // Define arrow markers\n const defs = svg.append('defs');\n\n // Evolution trend arrow (red)\n defs\n .append('marker')\n .attr('id', `arrow-${id}`)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerWidth', 6)\n .attr('markerHeight', 6)\n .attr('orient', 'auto-start-reverse')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('fill', theme.evolutionStroke)\n .attr('stroke', 'none');\n\n // Link flow arrow (theme color)\n defs\n .append('marker')\n .attr('id', `link-arrow-end-${id}`)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerWidth', 5)\n .attr('markerHeight', 5)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('fill', theme.linkStroke)\n .attr('stroke', 'none');\n\n // Link flow arrow start (for backward/bidirectional)\n defs\n .append('marker')\n .attr('id', `link-arrow-start-${id}`)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 1)\n .attr('refY', 5)\n .attr('markerWidth', 5)\n .attr('markerHeight', 5)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 10 0 L 0 5 L 10 10 z')\n .attr('fill', theme.linkStroke)\n .attr('stroke', 'none');\n\n root\n .append('rect')\n .attr('class', 'wardley-background')\n .attr('width', width)\n .attr('height', height)\n .attr('fill', theme.backgroundColor);\n\n const chartWidth = width - configValues.padding * 2;\n const chartHeight = height - configValues.padding * 2;\n\n // Render title if present\n if (title) {\n root\n .append('text')\n .attr('class', 'wardley-title')\n .attr('x', width / 2)\n .attr('y', configValues.padding / 2)\n .attr('fill', theme.axisTextColor)\n .attr('font-size', configValues.axisFontSize * 1.05)\n .attr('font-weight', 'bold')\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .text(title);\n }\n\n const projectX = (value: number) => configValues.padding + (value / 100) * chartWidth;\n const projectY = (value: number) => height - configValues.padding - (value / 100) * chartHeight;\n\n const axisGroup = root.append('g').attr('class', 'wardley-axes');\n axisGroup\n .append('line')\n .attr('x1', configValues.padding)\n .attr('x2', width - configValues.padding)\n .attr('y1', height - configValues.padding)\n .attr('y2', height - configValues.padding)\n .attr('stroke', theme.axisColor)\n .attr('stroke-width', 1);\n axisGroup\n .append('line')\n .attr('x1', configValues.padding)\n .attr('x2', configValues.padding)\n .attr('y1', configValues.padding)\n .attr('y2', height - configValues.padding)\n .attr('stroke', theme.axisColor)\n .attr('stroke-width', 1);\n\n const xLabel = data.axes.xLabel ?? 'Evolution';\n const yLabel = data.axes.yLabel ?? 'Visibility';\n\n axisGroup\n .append('text')\n .attr('class', 'wardley-axis-label wardley-axis-label-x')\n .attr('x', configValues.padding + chartWidth / 2)\n .attr('y', height - configValues.padding / 4)\n .attr('fill', theme.axisTextColor)\n .attr('font-size', configValues.axisFontSize)\n .attr('font-weight', 'bold')\n .attr('text-anchor', 'middle')\n .text(xLabel);\n axisGroup\n .append('text')\n .attr('class', 'wardley-axis-label wardley-axis-label-y')\n .attr('x', configValues.padding / 3)\n .attr('y', configValues.padding + chartHeight / 2)\n .attr('fill', theme.axisTextColor)\n .attr('font-size', configValues.axisFontSize)\n .attr('font-weight', 'bold')\n .attr('text-anchor', 'middle')\n .attr(\n 'transform',\n `rotate(-90 ${configValues.padding / 3} ${configValues.padding + chartHeight / 2})`\n )\n .text(yLabel);\n\n const stages =\n data.axes.stages && data.axes.stages.length > 0 ? data.axes.stages : DEFAULT_STAGES;\n if (stages.length > 0) {\n const stageGroup = root.append('g').attr('class', 'wardley-stages');\n const boundaries = data.axes.stageBoundaries;\n\n // Calculate stage positions\n const stagePositions: { start: number; end: number }[] = [];\n if (boundaries && boundaries.length === stages.length) {\n // Use custom boundaries\n let prevBoundary = 0;\n boundaries.forEach((boundary) => {\n stagePositions.push({ start: prevBoundary, end: boundary });\n prevBoundary = boundary;\n });\n } else {\n // Use equal distribution\n const stageWidth = 1.0 / stages.length;\n stages.forEach((_, index) => {\n stagePositions.push({\n start: index * stageWidth,\n end: (index + 1) * stageWidth,\n });\n });\n }\n\n stages.forEach((stage, index) => {\n const pos = stagePositions[index];\n const startX = configValues.padding + pos.start * chartWidth;\n const endX = configValues.padding + pos.end * chartWidth;\n const centerX = (startX + endX) / 2;\n\n // Draw dividing line (except before first stage)\n if (index > 0) {\n stageGroup\n .append('line')\n .attr('x1', startX)\n .attr('x2', startX)\n .attr('y1', configValues.padding)\n .attr('y2', height - configValues.padding)\n .attr('stroke', '#000')\n .attr('stroke-width', 1)\n .attr('stroke-dasharray', '5 5')\n .attr('opacity', 0.8);\n }\n\n // Draw stage label\n stageGroup\n .append('text')\n .attr('class', 'wardley-stage-label')\n .attr('x', centerX)\n .attr('y', height - configValues.padding / 1.5)\n .attr('fill', theme.axisTextColor)\n .attr('font-size', configValues.axisFontSize - 2)\n .attr('text-anchor', 'middle')\n .text(stage);\n });\n }\n\n if (configValues.showGrid) {\n const gridGroup = root.append('g').attr('class', 'wardley-grid');\n for (let i = 1; i < 4; i++) {\n const ratio = i / 4;\n const x = configValues.padding + chartWidth * ratio;\n gridGroup\n .append('line')\n .attr('x1', x)\n .attr('x2', x)\n .attr('y1', configValues.padding)\n .attr('y2', height - configValues.padding)\n .attr('stroke', theme.gridColor)\n .attr('stroke-dasharray', '2 6');\n gridGroup\n .append('line')\n .attr('x1', configValues.padding)\n .attr('x2', width - configValues.padding)\n .attr('y1', height - configValues.padding - chartHeight * ratio)\n .attr('y2', height - configValues.padding - chartHeight * ratio)\n .attr('stroke', theme.gridColor)\n .attr('stroke-dasharray', '2 6');\n }\n }\n\n const positions = new Map();\n data.nodes.forEach((node) => {\n positions.set(node.id, {\n x: projectX(node.x!),\n y: projectY(node.y!),\n node,\n });\n });\n\n // Render pipeline boxes and evolution links\n if (data.pipelines.length > 0) {\n const pipelineGroup = root.append('g').attr('class', 'wardley-pipelines');\n const pipelineLinksGroup = root.append('g').attr('class', 'wardley-pipeline-links');\n\n data.pipelines.forEach((pipeline) => {\n if (pipeline.componentIds.length === 0) {\n return;\n }\n\n // Sort components by X coordinate (evolution) to draw links in order\n const sortedComponents = pipeline.componentIds\n .map((id) => ({ id, pos: positions.get(id), node: data.nodes.find((n) => n.id === id) }))\n .filter((c) => c.pos && c.node)\n .sort((a, b) => a.node!.x! - b.node!.x!);\n\n // Draw dotted links between consecutive pipeline components\n for (let i = 0; i < sortedComponents.length - 1; i++) {\n const current = sortedComponents[i];\n const next = sortedComponents[i + 1];\n\n pipelineLinksGroup\n .append('line')\n .attr('class', 'wardley-pipeline-evolution-link')\n .attr('x1', current.pos!.x)\n .attr('y1', current.pos!.y)\n .attr('x2', next.pos!.x)\n .attr('y2', next.pos!.y)\n .attr('stroke', theme.linkStroke)\n .attr('stroke-width', 1)\n .attr('stroke-dasharray', '4 4');\n }\n\n // Find min and max X coordinates of pipeline components\n let minX = Infinity;\n let maxX = -Infinity;\n let y = 0;\n\n pipeline.componentIds.forEach((componentId) => {\n const pos = positions.get(componentId);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x);\n y = pos.y;\n }\n });\n\n if (minX !== Infinity && maxX !== -Infinity) {\n const padding = 15; // Padding around the box\n const height = configValues.nodeRadius * 4; // Height of the pipeline box\n const boxTop = y - height / 2;\n\n // Position the parent node at the top of the pipeline box, 2/3 outside, 1/3 inside\n const parentPos = positions.get(pipeline.nodeId);\n if (parentPos) {\n const centerX = (minX + maxX) / 2;\n parentPos.x = centerX;\n parentPos.y = boxTop - squareSize / 6; // Position so 2/3 is outside, 1/3 inside\n }\n\n pipelineGroup\n .append('rect')\n .attr('class', 'wardley-pipeline-box')\n .attr('x', minX - padding)\n .attr('y', boxTop)\n .attr('width', maxX - minX + padding * 2)\n .attr('height', height)\n .attr('fill', 'none')\n .attr('stroke', theme.axisColor)\n .attr('stroke-width', 1.5)\n .attr('rx', 4)\n .attr('ry', 4);\n }\n });\n }\n\n const linksGroup = root.append('g').attr('class', 'wardley-links');\n\n // Build a map of pipeline parent -> component IDs for filtering\n const pipelineMap = new Map>();\n data.pipelines.forEach((pipeline) => {\n pipelineMap.set(pipeline.nodeId, new Set(pipeline.componentIds));\n });\n\n const validLinks = data.links.filter((link) => {\n // Check if link has valid positions\n if (!positions.has(link.source) || !positions.has(link.target)) {\n return false;\n }\n\n // Filter out links from pipeline components to their parent\n const pipelineComponents = pipelineMap.get(link.target);\n if (pipelineComponents?.has(link.source)) {\n return false;\n }\n\n return true;\n });\n linksGroup\n .selectAll('line')\n .data(validLinks)\n .enter()\n .append('line')\n .attr('class', (link) => `wardley-link${link.dashed ? ' wardley-link--dashed' : ''}`)\n .attr('x1', (link) => {\n const sourcePos = positions.get(link.source)!;\n const targetPos = positions.get(link.target)!;\n const sourceNode = data.nodes.find((n) => n.id === link.source)!;\n const radius = sourceNode.isPipelineParent\n ? squareSize / Math.sqrt(2)\n : configValues.nodeRadius;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return sourcePos.x + (dx / distance) * radius;\n })\n .attr('y1', (link) => {\n const sourcePos = positions.get(link.source)!;\n const targetPos = positions.get(link.target)!;\n const sourceNode = data.nodes.find((n) => n.id === link.source)!;\n const radius = sourceNode.isPipelineParent\n ? squareSize / Math.sqrt(2)\n : configValues.nodeRadius;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return sourcePos.y + (dy / distance) * radius;\n })\n .attr('x2', (link) => {\n const sourcePos = positions.get(link.source)!;\n const targetPos = positions.get(link.target)!;\n const targetNode = data.nodes.find((n) => n.id === link.target)!;\n const radius = targetNode.isPipelineParent\n ? squareSize / Math.sqrt(2)\n : configValues.nodeRadius;\n const dx = sourcePos.x - targetPos.x;\n const dy = sourcePos.y - targetPos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return targetPos.x + (dx / distance) * radius;\n })\n .attr('y2', (link) => {\n const sourcePos = positions.get(link.source)!;\n const targetPos = positions.get(link.target)!;\n const targetNode = data.nodes.find((n) => n.id === link.target)!;\n const radius = targetNode.isPipelineParent\n ? squareSize / Math.sqrt(2)\n : configValues.nodeRadius;\n const dx = sourcePos.x - targetPos.x;\n const dy = sourcePos.y - targetPos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n return targetPos.y + (dy / distance) * radius;\n })\n .attr('stroke', theme.linkStroke)\n .attr('stroke-width', 1)\n .attr('stroke-dasharray', (link) => (link.dashed ? '6 6' : null))\n .attr('marker-end', (link) => {\n if (link.flow === 'forward' || link.flow === 'bidirectional') {\n return `url(#link-arrow-end-${id})`;\n }\n return null;\n })\n .attr('marker-start', (link) => {\n if (link.flow === 'backward' || link.flow === 'bidirectional') {\n return `url(#link-arrow-start-${id})`;\n }\n return null;\n });\n\n // Add link labels\n linksGroup\n .selectAll('text')\n .data(validLinks.filter((link) => link.label))\n .enter()\n .append('text')\n .attr('class', 'wardley-link-label')\n .attr('x', (link) => {\n const sourcePos = positions.get(link.source)!;\n const targetPos = positions.get(link.target)!;\n const midX = (sourcePos.x + targetPos.x) / 2;\n const dy = targetPos.y - sourcePos.y;\n const dx = targetPos.x - sourcePos.x;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8; // Distance above the line\n // Perpendicular x component (for offsetting horizontally)\n const perpX = dy / distance;\n return midX + perpX * offset;\n })\n .attr('y', (link) => {\n const sourcePos = positions.get(link.source)!;\n const targetPos = positions.get(link.target)!;\n const midY = (sourcePos.y + targetPos.y) / 2;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8; // Distance above the line\n // Perpendicular y component (for offsetting vertically)\n const perpY = -dx / distance;\n return midY + perpY * offset;\n })\n .attr('fill', theme.axisTextColor)\n .attr('font-size', configValues.labelFontSize)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr('transform', (link) => {\n const sourcePos = positions.get(link.source)!;\n const targetPos = positions.get(link.target)!;\n const midX = (sourcePos.x + targetPos.x) / 2;\n const midY = (sourcePos.y + targetPos.y) / 2;\n const dx = targetPos.x - sourcePos.x;\n const dy = targetPos.y - sourcePos.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const offset = 8; // Distance above the line\n // Perpendicular vector pointing \"up\" relative to line direction\n const perpX = dy / distance;\n const perpY = -dx / distance;\n const labelX = midX + perpX * offset;\n const labelY = midY + perpY * offset;\n let angle = (Math.atan2(dy, dx) * 180) / Math.PI;\n // Flip text if it would be upside down\n if (angle > 90 || angle < -90) {\n angle += 180;\n }\n return `rotate(${angle} ${labelX} ${labelY})`;\n })\n .text((link) => link.label!);\n\n const trendGroup = root.append('g').attr('class', 'wardley-trends');\n interface TrendWithPositions {\n origin: { x: number; y: number; node: WardleyNode };\n targetX: number;\n targetY: number;\n adjustedX2: number;\n adjustedY2: number;\n }\n const trendsWithPositions: TrendWithPositions[] = data.trends\n .map((trend) => {\n const origin = positions.get(trend.nodeId);\n if (!origin) {\n return null;\n }\n const targetX = projectX(trend.targetX);\n const targetY = projectY(trend.targetY);\n\n // Calculate the vector from origin to target\n const dx = targetX - origin.x;\n const dy = targetY - origin.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n // Shorten the line by nodeRadius so arrow stops at circle edge\n const shortenBy = configValues.nodeRadius + 2; // +2 for small gap\n const adjustedX2 = distance > shortenBy ? targetX - (dx / distance) * shortenBy : targetX;\n const adjustedY2 = distance > shortenBy ? targetY - (dy / distance) * shortenBy : targetY;\n\n return {\n origin,\n targetX,\n targetY,\n adjustedX2,\n adjustedY2,\n };\n })\n .filter((trend): trend is TrendWithPositions => trend !== null);\n\n trendGroup\n .selectAll('line')\n .data(trendsWithPositions)\n .enter()\n .append('line')\n .attr('class', 'wardley-trend')\n .attr('x1', (trend) => trend.origin.x)\n .attr('y1', (trend) => trend.origin.y)\n .attr('x2', (trend) => trend.adjustedX2)\n .attr('y2', (trend) => trend.adjustedY2)\n .attr('stroke', theme.evolutionStroke)\n .attr('stroke-width', 1)\n .attr('stroke-dasharray', '4 4')\n .attr('marker-end', `url(#arrow-${id})`);\n\n const nodesGroup = root.append('g').attr('class', 'wardley-nodes');\n const nodeEnter = nodesGroup\n .selectAll('g')\n .data(data.nodes)\n .enter()\n .append('g')\n .attr('class', (node) =>\n ['wardley-node', node.className ? `wardley-node--${node.className}` : '']\n .filter(Boolean)\n .join(' ')\n );\n\n // Render outsource overlay circles first (larger dark circle for outsourced components - behind main circle)\n nodeEnter\n .filter((node) => node.sourceStrategy === 'outsource')\n .append('circle')\n .attr('class', 'wardley-outsource-overlay')\n .attr('cx', (node) => positions.get(node.id)!.x)\n .attr('cy', (node) => positions.get(node.id)!.y)\n .attr('r', configValues.nodeRadius * 2)\n .attr('fill', '#666')\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Render buy overlay circles (larger light grey circle for bought components - behind main circle)\n nodeEnter\n .filter((node) => node.sourceStrategy === 'buy')\n .append('circle')\n .attr('class', 'wardley-buy-overlay')\n .attr('cx', (node) => positions.get(node.id)!.x)\n .attr('cy', (node) => positions.get(node.id)!.y)\n .attr('r', configValues.nodeRadius * 2)\n .attr('fill', '#ccc')\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Render build overlay circles (larger very light grey circle with black border for built components - behind main circle)\n nodeEnter\n .filter((node) => node.sourceStrategy === 'build')\n .append('circle')\n .attr('class', 'wardley-build-overlay')\n .attr('cx', (node) => positions.get(node.id)!.x)\n .attr('cy', (node) => positions.get(node.id)!.y)\n .attr('r', configValues.nodeRadius * 2)\n .attr('fill', '#eee')\n .attr('stroke', '#000')\n .attr('stroke-width', 1);\n\n // Render market overlay (larger circle with three small circles in triangle pattern)\n const marketNodes = nodeEnter.filter((node) => node.sourceStrategy === 'market');\n\n // Outer circle for market\n marketNodes\n .append('circle')\n .attr('class', 'wardley-market-overlay')\n .attr('cx', (node) => positions.get(node.id)!.x)\n .attr('cy', (node) => positions.get(node.id)!.y)\n .attr('r', configValues.nodeRadius * 2)\n .attr('fill', 'white')\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Render circles for normal nodes and pipeline child components (exclude market components and anchors)\n nodeEnter\n .filter(\n (node) =>\n !node.isPipelineParent && node.sourceStrategy !== 'market' && node.className !== 'anchor'\n )\n .append('circle')\n .attr('cx', (node) => positions.get(node.id)!.x)\n .attr('cy', (node) => positions.get(node.id)!.y)\n .attr('r', configValues.nodeRadius)\n .attr('fill', theme.componentFill)\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Render three small circles in triangle pattern for market components (on top of main circle)\n const smallCircleRadius = configValues.nodeRadius * 0.7;\n const triangleRadius = configValues.nodeRadius * 1.2; // Position so inner circle edges are near outer circle\n\n // Draw lines connecting the three circles to form a triangle (render first so circles appear on top)\n // Top to bottom-left\n marketNodes\n .append('line')\n .attr('class', 'wardley-market-line')\n .attr('x1', (node) => positions.get(node.id)!.x)\n .attr('y1', (node) => positions.get(node.id)!.y - triangleRadius)\n .attr('x2', (node) => positions.get(node.id)!.x - triangleRadius * Math.cos(Math.PI / 6))\n .attr('y2', (node) => positions.get(node.id)!.y + triangleRadius * Math.sin(Math.PI / 6))\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Line from bottom-left to bottom-right\n marketNodes\n .append('line')\n .attr('class', 'wardley-market-line')\n .attr('x1', (node) => positions.get(node.id)!.x - triangleRadius * Math.cos(Math.PI / 6))\n .attr('y1', (node) => positions.get(node.id)!.y + triangleRadius * Math.sin(Math.PI / 6))\n .attr('x2', (node) => positions.get(node.id)!.x + triangleRadius * Math.cos(Math.PI / 6))\n .attr('y2', (node) => positions.get(node.id)!.y + triangleRadius * Math.sin(Math.PI / 6))\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Line from bottom-right to top\n marketNodes\n .append('line')\n .attr('class', 'wardley-market-line')\n .attr('x1', (node) => positions.get(node.id)!.x + triangleRadius * Math.cos(Math.PI / 6))\n .attr('y1', (node) => positions.get(node.id)!.y + triangleRadius * Math.sin(Math.PI / 6))\n .attr('x2', (node) => positions.get(node.id)!.x)\n .attr('y2', (node) => positions.get(node.id)!.y - triangleRadius)\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Top circle (white fill so it covers the lines)\n marketNodes\n .append('circle')\n .attr('class', 'wardley-market-dot')\n .attr('cx', (node) => positions.get(node.id)!.x)\n .attr('cy', (node) => positions.get(node.id)!.y - triangleRadius)\n .attr('r', smallCircleRadius)\n .attr('fill', 'white')\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 2);\n\n // Bottom-left circle (white fill so it covers the lines)\n marketNodes\n .append('circle')\n .attr('class', 'wardley-market-dot')\n .attr('cx', (node) => positions.get(node.id)!.x - triangleRadius * Math.cos(Math.PI / 6))\n .attr('cy', (node) => positions.get(node.id)!.y + triangleRadius * Math.sin(Math.PI / 6))\n .attr('r', smallCircleRadius)\n .attr('fill', 'white')\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 2);\n\n // Bottom-right circle (white fill so it covers the lines)\n marketNodes\n .append('circle')\n .attr('class', 'wardley-market-dot')\n .attr('cx', (node) => positions.get(node.id)!.x + triangleRadius * Math.cos(Math.PI / 6))\n .attr('cy', (node) => positions.get(node.id)!.y + triangleRadius * Math.sin(Math.PI / 6))\n .attr('r', smallCircleRadius)\n .attr('fill', 'white')\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 2);\n\n // Render squares for pipeline parent nodes\n nodeEnter\n .filter((node) => node.isPipelineParent === true)\n .append('rect')\n .attr('x', (node) => positions.get(node.id)!.x - squareSize / 2)\n .attr('y', (node) => positions.get(node.id)!.y - squareSize / 2)\n .attr('width', squareSize)\n .attr('height', squareSize)\n .attr('fill', theme.componentFill)\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Render inertia indicators (vertical lines to the right of components)\n nodeEnter\n .filter((node) => node.inertia === true)\n .append('line')\n .attr('class', 'wardley-inertia')\n .attr('x1', (node) => {\n const pos = positions.get(node.id)!;\n let offset = node.isPipelineParent ? squareSize / 2 + 15 : configValues.nodeRadius + 15;\n // Add extra offset if component has source strategy overlay\n if (node.sourceStrategy) {\n offset += configValues.nodeRadius + 10;\n }\n return pos.x + offset;\n })\n .attr('y1', (node) => {\n const pos = positions.get(node.id)!;\n const lineHeight = node.isPipelineParent ? squareSize : configValues.nodeRadius * 2;\n return pos.y - lineHeight / 2;\n })\n .attr('x2', (node) => {\n const pos = positions.get(node.id)!;\n let offset = node.isPipelineParent ? squareSize / 2 + 15 : configValues.nodeRadius + 15;\n // Add extra offset if component has source strategy overlay\n if (node.sourceStrategy) {\n offset += configValues.nodeRadius + 10;\n }\n return pos.x + offset;\n })\n .attr('y2', (node) => {\n const pos = positions.get(node.id)!;\n const lineHeight = node.isPipelineParent ? squareSize : configValues.nodeRadius * 2;\n return pos.y + lineHeight / 2;\n })\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 6);\n\n nodeEnter\n .append('text')\n .attr('x', (node) => {\n const pos = positions.get(node.id)!;\n // Anchors have no offset, centered on position\n if (node.className === 'anchor') {\n return node.labelOffsetX !== undefined ? pos.x + node.labelOffsetX : pos.x;\n }\n let defaultOffset = configValues.nodeLabelOffset;\n // Apply automatic spacing for components with source strategy\n if (node.sourceStrategy && node.labelOffsetX === undefined) {\n defaultOffset += 10;\n }\n const customOffset = node.labelOffsetX ?? defaultOffset;\n return pos.x + customOffset;\n })\n .attr('y', (node) => {\n const pos = positions.get(node.id)!;\n // Anchors have small upward offset, centered on position\n if (node.className === 'anchor') {\n return node.labelOffsetY !== undefined ? pos.y + node.labelOffsetY : pos.y - 3;\n }\n let defaultOffset = -configValues.nodeLabelOffset;\n // Apply automatic spacing for components with source strategy\n if (node.sourceStrategy && node.labelOffsetY === undefined) {\n defaultOffset -= 10;\n }\n const customOffset = node.labelOffsetY ?? defaultOffset;\n return pos.y + customOffset;\n })\n .attr('class', 'wardley-node-label')\n .attr('fill', (node) => {\n if (node.className === 'evolved') {\n return theme.evolutionStroke;\n }\n if (node.className === 'anchor') {\n return '#000';\n }\n return theme.componentLabelColor;\n })\n .attr('font-size', configValues.labelFontSize)\n .attr('font-weight', (node) => (node.className === 'anchor' ? 'bold' : 'normal'))\n .attr('text-anchor', (node) => (node.className === 'anchor' ? 'middle' : 'start'))\n .attr('dominant-baseline', (node) => (node.className === 'anchor' ? 'middle' : 'auto'))\n .text((node) => node.label);\n\n // Render annotations\n if (data.annotations.length > 0) {\n const annotationsGroup = root.append('g').attr('class', 'wardley-annotations');\n\n data.annotations.forEach((annotation) => {\n // Project all coordinates\n const projectedCoords = annotation.coordinates.map((coord) => ({\n x: projectX(coord.x),\n y: projectY(coord.y),\n }));\n\n // If there are multiple coordinates, draw lines connecting them\n if (projectedCoords.length > 1) {\n for (let i = 0; i < projectedCoords.length - 1; i++) {\n annotationsGroup\n .append('line')\n .attr('class', 'wardley-annotation-line')\n .attr('x1', projectedCoords[i].x)\n .attr('y1', projectedCoords[i].y)\n .attr('x2', projectedCoords[i + 1].x)\n .attr('y2', projectedCoords[i + 1].y)\n .attr('stroke', theme.axisColor)\n .attr('stroke-width', 1.5)\n .attr('stroke-dasharray', '4 4');\n }\n }\n\n // Draw circles and numbers at each coordinate\n projectedCoords.forEach((coord) => {\n const annotationNode = annotationsGroup.append('g').attr('class', 'wardley-annotation');\n\n // Draw circle\n annotationNode\n .append('circle')\n .attr('cx', coord.x)\n .attr('cy', coord.y)\n .attr('r', 10)\n .attr('fill', 'white')\n .attr('stroke', theme.axisColor)\n .attr('stroke-width', 1.5);\n\n // Draw number\n annotationNode\n .append('text')\n .attr('x', coord.x)\n .attr('y', coord.y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'central')\n .attr('font-size', 10)\n .attr('fill', theme.axisTextColor)\n .attr('font-weight', 'bold')\n .text(annotation.number);\n });\n });\n\n // Draw annotations text box if position is defined\n if (data.annotationsBox) {\n let boxX = projectX(data.annotationsBox.x);\n let boxY = projectY(data.annotationsBox.y);\n const padding = 10;\n const lineHeight = 16;\n const fontSize = 11;\n\n // Create text box group\n const textBoxGroup = annotationsGroup.append('g').attr('class', 'wardley-annotations-box');\n\n // Sort annotations by number\n const sortedAnnotations = [...data.annotations]\n .filter((a) => a.text)\n .sort((a, b) => a.number - b.number);\n\n // Draw text lines (temporarily to measure)\n const textElements: WardleyText[] = [];\n sortedAnnotations.forEach((annotation, idx) => {\n const text = textBoxGroup\n .append('text')\n .attr('x', boxX + padding)\n .attr('y', boxY + padding + (idx + 1) * lineHeight)\n .attr('font-size', fontSize)\n .attr('fill', theme.axisTextColor)\n .attr('text-anchor', 'start')\n .attr('dominant-baseline', 'middle')\n .text(`${annotation.number}. ${annotation.text}`);\n textElements.push(text);\n });\n\n // Calculate box dimensions based on text\n if (textElements.length > 0) {\n let maxWidth = 0;\n let maxHeight = 0;\n textElements.forEach((text) => {\n const textNode = text.node()!;\n // Use getComputedTextLength for more accurate width measurement\n const textWidth = textNode.getComputedTextLength();\n maxWidth = Math.max(maxWidth, textWidth);\n const bbox = textNode.getBBox();\n maxHeight = Math.max(maxHeight, bbox.height);\n });\n\n // Add extra buffer to padding to ensure text fits comfortably\n const boxWidth = maxWidth + padding * 2 + 105; // Extra 105px buffer for safety\n const boxHeight = sortedAnnotations.length * lineHeight + padding * 2 + maxHeight / 2;\n\n // Constrain box to stay within map boundaries\n const minX = configValues.padding;\n const maxX = width - configValues.padding - boxWidth;\n const minY = configValues.padding;\n const maxY = height - configValues.padding - boxHeight;\n\n boxX = Math.max(minX, Math.min(boxX, maxX));\n boxY = Math.max(minY, Math.min(boxY, maxY));\n\n // Update text positions after clamping\n textElements.forEach((text, idx) => {\n text.attr('x', boxX + padding).attr('y', boxY + padding + (idx + 1) * lineHeight);\n });\n\n // Draw box background (insert before text)\n textBoxGroup\n .insert('rect', 'text')\n .attr('x', boxX)\n .attr('y', boxY)\n .attr('width', boxWidth)\n .attr('height', boxHeight)\n .attr('fill', 'white')\n .attr('stroke', theme.axisColor)\n .attr('stroke-width', 1.5)\n .attr('rx', 4)\n .attr('ry', 4);\n }\n }\n }\n\n // Render notes\n if (data.notes.length > 0) {\n const notesGroup = root.append('g').attr('class', 'wardley-notes');\n\n data.notes.forEach((note) => {\n const noteX = projectX(note.x);\n const noteY = projectY(note.y);\n\n notesGroup\n .append('text')\n .attr('x', noteX)\n .attr('y', noteY)\n .attr('text-anchor', 'start')\n .attr('font-size', 11)\n .attr('fill', theme.axisTextColor)\n .attr('font-weight', 'bold')\n .text(note.text);\n });\n }\n\n // Render accelerators (large right-pointing arrows)\n if (data.accelerators.length > 0) {\n const acceleratorsGroup = root.append('g').attr('class', 'wardley-accelerators');\n\n data.accelerators.forEach((accelerator) => {\n const accX = projectX(accelerator.x);\n const accY = projectY(accelerator.y);\n\n // Arrow dimensions\n const arrowWidth = 60;\n const arrowHeight = 30;\n const arrowHeadWidth = 20;\n\n // Draw arrow shape: shaft + arrowhead pointing right\n const arrowPath = `\n M ${accX} ${accY - arrowHeight / 2}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY - arrowHeight / 2}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY - arrowHeight / 2 - 8}\n L ${accX + arrowWidth} ${accY}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY + arrowHeight / 2 + 8}\n L ${accX + arrowWidth - arrowHeadWidth} ${accY + arrowHeight / 2}\n L ${accX} ${accY + arrowHeight / 2}\n Z\n `;\n\n acceleratorsGroup\n .append('path')\n .attr('d', arrowPath)\n .attr('fill', 'white')\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Add label below the arrow\n acceleratorsGroup\n .append('text')\n .attr('x', accX + arrowWidth / 2)\n .attr('y', accY + arrowHeight / 2 + 15)\n .attr('text-anchor', 'middle')\n .attr('font-size', 10)\n .attr('fill', theme.axisTextColor)\n .attr('font-weight', 'bold')\n .text(accelerator.name);\n });\n }\n\n // Render deaccelerators (large left-pointing arrows)\n if (data.deaccelerators.length > 0) {\n const deacceleratorsGroup = root.append('g').attr('class', 'wardley-deaccelerators');\n\n data.deaccelerators.forEach((deaccelerator) => {\n const decX = projectX(deaccelerator.x);\n const decY = projectY(deaccelerator.y);\n\n // Arrow dimensions\n const arrowWidth = 60;\n const arrowHeight = 30;\n const arrowHeadWidth = 20;\n\n // Draw arrow shape pointing left: shaft + arrowhead pointing left\n const arrowPath = `\n M ${decX + arrowWidth} ${decY - arrowHeight / 2}\n L ${decX + arrowHeadWidth} ${decY - arrowHeight / 2}\n L ${decX + arrowHeadWidth} ${decY - arrowHeight / 2 - 8}\n L ${decX} ${decY}\n L ${decX + arrowHeadWidth} ${decY + arrowHeight / 2 + 8}\n L ${decX + arrowHeadWidth} ${decY + arrowHeight / 2}\n L ${decX + arrowWidth} ${decY + arrowHeight / 2}\n Z\n `;\n\n deacceleratorsGroup\n .append('path')\n .attr('d', arrowPath)\n .attr('fill', 'white')\n .attr('stroke', theme.componentStroke)\n .attr('stroke-width', 1);\n\n // Add label below the arrow\n deacceleratorsGroup\n .append('text')\n .attr('x', decX + arrowWidth / 2)\n .attr('y', decY + arrowHeight / 2 + 15)\n .attr('text-anchor', 'middle')\n .attr('font-size', 10)\n .attr('fill', theme.axisTextColor)\n .attr('font-weight', 'bold')\n .text(deaccelerator.name);\n });\n }\n};\n\nexport default {\n draw,\n};\n", "import type { DiagramStylesProvider } from '../../diagram-api/types.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport { getConfig as getConfigAPI } from '../../config.js';\n\nexport interface WardleyStyleOptions {\n backgroundColor?: string;\n axisColor?: string;\n axisTextColor?: string;\n gridColor?: string;\n componentFill?: string;\n componentStroke?: string;\n componentLabelColor?: string;\n linkStroke?: string;\n evolutionStroke?: string;\n annotationStroke?: string;\n annotationTextColor?: string;\n annotationFill?: string;\n}\n\nexport const styles: DiagramStylesProvider = ({\n wardley,\n}: { wardley?: WardleyStyleOptions } = {}) => {\n const defaultThemeVariables = getThemeVariables();\n const currentConfig = getConfigAPI();\n const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);\n const w: WardleyStyleOptions = cleanAndMerge(themeVariables.wardley, wardley);\n\n return `\n .wardley-background {\n fill: ${w.backgroundColor};\n }\n .wardley-axes line, .wardley-axes path {\n stroke: ${w.axisColor};\n }\n .wardley-axis-label {\n fill: ${w.axisTextColor};\n }\n .wardley-stage-label {\n fill: ${w.axisTextColor};\n }\n .wardley-grid line {\n stroke: ${w.gridColor};\n }\n .wardley-node circle {\n fill: ${w.componentFill};\n stroke: ${w.componentStroke};\n }\n .wardley-node-label {\n fill: ${w.componentLabelColor};\n }\n .wardley-link {\n stroke: ${w.linkStroke};\n }\n .wardley-link--dashed {\n stroke-dasharray: 4 4;\n }\n .wardley-link-label {\n fill: ${w.axisTextColor};\n }\n .wardley-trend line {\n stroke: ${w.evolutionStroke};\n }\n .wardley-annotation-line {\n stroke: ${w.annotationStroke};\n }\n .wardley-annotation circle {\n fill: ${w.annotationFill};\n stroke: ${w.annotationStroke};\n }\n .wardley-annotation text {\n fill: ${w.annotationTextColor};\n }\n .wardley-annotations-box rect {\n fill: ${w.annotationFill};\n stroke: ${w.annotationStroke};\n }\n .wardley-annotations-box text {\n fill: ${w.annotationTextColor};\n }\n .wardley-pipeline-box {\n stroke: ${w.componentStroke};\n }\n .wardley-notes text {\n fill: ${w.axisTextColor};\n }\n `;\n};\n\nexport default styles;\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\nimport { parser } from './wardleyParser.js';\nimport db from './wardleyDb.js';\nimport renderer from './wardleyRenderer.js';\nimport { styles } from './styles.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n styles,\n};\n"], + "mappings": "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", + "names": ["toPercent", "__name", "value", "context", "normalized", "toCoordinates", "visibility", "evolution", "getFlowFromPort", "port", "extractFlowFromArrow", "arrow", "flowLabel", "populateDb", "ast", "db", "populateCommonDb", "stages", "stage", "stageBoundaries", "anchor", "coords", "component", "labelOffsetX", "labelOffsetY", "sourceStrategy", "note", "pipeline", "parentNode", "parentY", "componentId", "x", "link", "isDashed", "flow", "arrowFlow", "annotation", "label", "evolve", "node", "target", "annotationsBox", "accelerator", "deaccelerator", "parser", "input", "parse", "log", "WardleyBuilder", "__name", "node", "existing", "merged", "link", "trend", "nodeId", "pipelineNodeId", "componentId", "pipeline", "annotation", "note", "accelerator", "deaccelerator", "x", "y", "partial", "width", "height", "id", "name", "nodes", "builder", "WardleyBuilder", "getConfig", "__name", "addNode", "id", "label", "x", "y", "className", "labelOffsetX", "labelOffsetY", "inertia", "sourceStrategy", "addLink", "sourceId", "targetId", "dashed", "flow", "addTrend", "nodeId", "targetX", "targetY", "addAnnotation", "number", "coordinates", "text", "addNote", "addAccelerator", "name", "addDeaccelerator", "setAnnotationsBox", "setSize", "width", "height", "startPipeline", "addPipelineComponent", "pipelineNodeId", "componentId", "updateAxes", "partial", "getNode", "resolveNodeId", "getWardleyData", "clear", "wardleyDb_default", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "DEFAULT_STAGES", "getTheme", "__name", "themeVariables", "getConfig", "getConfigValues", "wardleyConfig", "draw", "text", "id", "_version", "diagObj", "log", "configValues", "theme", "squareSize", "db", "data", "title", "width", "height", "svg", "selectSvgElement", "configureSvgSize", "root", "defs", "chartWidth", "chartHeight", "projectX", "value", "projectY", "axisGroup", "xLabel", "yLabel", "stages", "stageGroup", "boundaries", "stagePositions", "prevBoundary", "boundary", "stageWidth", "_", "index", "stage", "pos", "startX", "endX", "centerX", "gridGroup", "i", "ratio", "x", "positions", "node", "pipelineGroup", "pipelineLinksGroup", "pipeline", "sortedComponents", "n", "c", "a", "b", "current", "next", "minX", "maxX", "y", "componentId", "boxTop", "parentPos", "linksGroup", "pipelineMap", "validLinks", "link", "sourcePos", "targetPos", "radius", "dx", "dy", "distance", "midX", "offset", "perpX", "midY", "perpY", "labelX", "labelY", "angle", "trendGroup", "trendsWithPositions", "trend", "origin", "targetX", "targetY", "shortenBy", "adjustedX2", "adjustedY2", "nodeEnter", "marketNodes", "smallCircleRadius", "triangleRadius", "lineHeight", "defaultOffset", "customOffset", "annotationsGroup", "annotation", "projectedCoords", "coord", "annotationNode", "boxX", "boxY", "padding", "fontSize", "textBoxGroup", "sortedAnnotations", "textElements", "idx", "maxWidth", "maxHeight", "textNode", "textWidth", "bbox", "boxWidth", "boxHeight", "minY", "maxY", "notesGroup", "note", "noteX", "noteY", "acceleratorsGroup", "accelerator", "accX", "accY", "arrowWidth", "arrowHeight", "arrowHeadWidth", "arrowPath", "deacceleratorsGroup", "deaccelerator", "decX", "decY", "wardleyRenderer_default", "styles", "__name", "wardley", "defaultThemeVariables", "getThemeVariables", "currentConfig", "getConfig", "themeVariables", "cleanAndMerge", "w", "diagram", "parser", "wardleyDb_default", "wardleyRenderer_default", "styles"] +} diff --git a/assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-TMDUDL2A.mjs b/assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-N2JHSOCM.mjs similarity index 50% rename from assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-TMDUDL2A.mjs rename to assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-N2JHSOCM.mjs index ee38f53..daff961 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-TMDUDL2A.mjs +++ b/assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-N2JHSOCM.mjs @@ -1,7 +1,7 @@ -import{a as $t}from"./chunk-D4HHKWPY.mjs";import{e as Ut}from"./chunk-YLHEXJF3.mjs";import{l as wt}from"./chunk-Q3CC2MQB.mjs";import"./chunk-XBXGYYE5.mjs";import{N as zt,Q as Ot,R as Ft,S as Nt,T as jt,U as Gt,V as Ht,W as Ct,h as It,j as Mt,s as rt,z as Wt}from"./chunk-3UWU4A3N.mjs";import{H as Dt,b as nt,n as At,o as Tt}from"./chunk-MGPAVIPZ.mjs";import"./chunk-JIN56HTB.mjs";import{a as s}from"./chunk-VELTKBKT.mjs";var kt=(function(){var i=s(function(F,o,h,p){for(h=h||{},p=F.length;p--;h[F[p]]=o);return h},"o"),t=[1,10,12,14,16,18,19,21,23],e=[2,6],a=[1,3],n=[1,5],l=[1,6],x=[1,7],y=[1,5,10,12,14,16,18,19,21,23,34,35,36],A=[1,25],V=[1,26],B=[1,28],_=[1,29],L=[1,30],I=[1,31],M=[1,32],R=[1,33],W=[1,34],z=[1,35],O=[1,36],f=[1,37],P=[1,43],g=[1,42],X=[1,47],v=[1,50],C=[1,10,12,14,16,18,19,21,23,34,35,36],j=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],c=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],w=[1,64],S={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:s(function(o,h,p,u,b,r,Z){var m=r.length-1;switch(b){case 5:u.setOrientation(r[m]);break;case 9:u.setDiagramTitle(r[m].text.trim());break;case 12:u.setLineData({text:"",type:"text"},r[m]);break;case 13:u.setLineData(r[m-1],r[m]);break;case 14:u.setBarData({text:"",type:"text"},r[m]);break;case 15:u.setBarData(r[m-1],r[m]);break;case 16:this.$=r[m].trim(),u.setAccTitle(this.$);break;case 17:case 18:this.$=r[m].trim(),u.setAccDescription(this.$);break;case 19:this.$=r[m-1];break;case 20:this.$=[Number(r[m-2]),...r[m]];break;case 21:this.$=[Number(r[m])];break;case 22:u.setXAxisTitle(r[m]);break;case 23:u.setXAxisTitle(r[m-1]);break;case 24:u.setXAxisTitle({type:"text",text:""});break;case 25:u.setXAxisBand(r[m]);break;case 26:u.setXAxisRangeData(Number(r[m-2]),Number(r[m]));break;case 27:this.$=r[m-1];break;case 28:this.$=[r[m-2],...r[m]];break;case 29:this.$=[r[m]];break;case 30:u.setYAxisTitle(r[m]);break;case 31:u.setYAxisTitle(r[m-1]);break;case 32:u.setYAxisTitle({type:"text",text:""});break;case 33:u.setYAxisRangeData(Number(r[m-2]),Number(r[m]));break;case 37:this.$={text:r[m],type:"text"};break;case 38:this.$={text:r[m],type:"text"};break;case 39:this.$={text:r[m],type:"markdown"};break;case 40:this.$=r[m];break;case 41:this.$=r[m-1]+""+r[m];break}},"anonymous"),table:[i(t,e,{3:1,4:2,7:4,5:a,34:n,35:l,36:x}),{1:[3]},i(t,e,{4:2,7:4,3:8,5:a,34:n,35:l,36:x}),i(t,e,{4:2,7:4,6:9,3:10,5:a,8:[1,11],34:n,35:l,36:x}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},i(y,[2,34]),i(y,[2,35]),i(y,[2,36]),{1:[2,1]},i(t,e,{4:2,7:4,3:21,5:a,34:n,35:l,36:x}),{1:[2,3]},i(y,[2,5]),i(t,[2,7],{4:22,34:n,35:l,36:x}),{11:23,37:24,38:A,39:V,40:27,41:B,42:_,43:L,44:I,45:M,46:R,47:W,48:z,49:O,50:f},{11:39,13:38,24:P,27:g,29:40,30:41,37:24,38:A,39:V,40:27,41:B,42:_,43:L,44:I,45:M,46:R,47:W,48:z,49:O,50:f},{11:45,15:44,27:X,33:46,37:24,38:A,39:V,40:27,41:B,42:_,43:L,44:I,45:M,46:R,47:W,48:z,49:O,50:f},{11:49,17:48,24:v,37:24,38:A,39:V,40:27,41:B,42:_,43:L,44:I,45:M,46:R,47:W,48:z,49:O,50:f},{11:52,17:51,24:v,37:24,38:A,39:V,40:27,41:B,42:_,43:L,44:I,45:M,46:R,47:W,48:z,49:O,50:f},{20:[1,53]},{22:[1,54]},i(C,[2,18]),{1:[2,2]},i(C,[2,8]),i(C,[2,9]),i(j,[2,37],{40:55,41:B,42:_,43:L,44:I,45:M,46:R,47:W,48:z,49:O,50:f}),i(j,[2,38]),i(j,[2,39]),i(c,[2,40]),i(c,[2,42]),i(c,[2,43]),i(c,[2,44]),i(c,[2,45]),i(c,[2,46]),i(c,[2,47]),i(c,[2,48]),i(c,[2,49]),i(c,[2,50]),i(c,[2,51]),i(C,[2,10]),i(C,[2,22],{30:41,29:56,24:P,27:g}),i(C,[2,24]),i(C,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:A,39:V,40:27,41:B,42:_,43:L,44:I,45:M,46:R,47:W,48:z,49:O,50:f},i(C,[2,11]),i(C,[2,30],{33:60,27:X}),i(C,[2,32]),{31:[1,61]},i(C,[2,12]),{17:62,24:v},{25:63,27:w},i(C,[2,14]),{17:65,24:v},i(C,[2,16]),i(C,[2,17]),i(c,[2,41]),i(C,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},i(C,[2,31]),{27:[1,69]},i(C,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},i(C,[2,15]),i(C,[2,26]),i(C,[2,27]),{11:59,32:72,37:24,38:A,39:V,40:27,41:B,42:_,43:L,44:I,45:M,46:R,47:W,48:z,49:O,50:f},i(C,[2,33]),i(C,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:s(function(o,h){if(h.recoverable)this.trace(o);else{var p=new Error(o);throw p.hash=h,p}},"parseError"),parse:s(function(o){var h=this,p=[0],u=[],b=[null],r=[],Z=this.table,m="",it=0,Xt=0,Yt=0,oe=2,Vt=1,he=r.slice.call(arguments,1),T=Object.create(this.lexer),G={yy:{}};for(var mt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,mt)&&(G.yy[mt]=this.yy[mt]);T.setInput(o,G.yy),G.yy.lexer=T,G.yy.parser=this,typeof T.yylloc>"u"&&(T.yylloc={});var ft=T.yylloc;r.push(ft);var le=T.options&&T.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Se(E){p.length=p.length-2*E,b.length=b.length-E,r.length=r.length-E}s(Se,"popStack");function ce(){var E;return E=u.pop()||T.lex()||Vt,typeof E!="number"&&(E instanceof Array&&(u=E,E=u.pop()),E=h.symbols_[E]||E),E}s(ce,"lex");for(var k,dt,H,Y,_e,bt,$={},at,N,Bt,st;;){if(H=p[p.length-1],this.defaultActions[H]?Y=this.defaultActions[H]:((k===null||typeof k>"u")&&(k=ce()),Y=Z[H]&&Z[H][k]),typeof Y>"u"||!Y.length||!Y[0]){var yt="";st=[];for(at in Z[H])this.terminals_[at]&&at>oe&&st.push("'"+this.terminals_[at]+"'");T.showPosition?yt="Parse error on line "+(it+1)+`: -`+T.showPosition()+` -Expecting `+st.join(", ")+", got '"+(this.terminals_[k]||k)+"'":yt="Parse error on line "+(it+1)+": Unexpected "+(k==Vt?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(yt,{text:T.match,token:this.terminals_[k]||k,line:T.yylineno,loc:ft,expected:st})}if(Y[0]instanceof Array&&Y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+k);switch(Y[0]){case 1:p.push(k),b.push(T.yytext),r.push(T.yylloc),p.push(Y[1]),k=null,dt?(k=dt,dt=null):(Xt=T.yyleng,m=T.yytext,it=T.yylineno,ft=T.yylloc,Yt>0&&Yt--);break;case 2:if(N=this.productions_[Y[1]][1],$.$=b[b.length-N],$._$={first_line:r[r.length-(N||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(N||1)].first_column,last_column:r[r.length-1].last_column},le&&($._$.range=[r[r.length-(N||1)].range[0],r[r.length-1].range[1]]),bt=this.performAction.apply($,[m,Xt,it,G.yy,Y[1],b,r].concat(he)),typeof bt<"u")return bt;N&&(p=p.slice(0,-1*N*2),b=b.slice(0,-1*N),r=r.slice(0,-1*N)),p.push(this.productions_[Y[1]][0]),b.push($.$),r.push($._$),Bt=Z[p[p.length-2]][p[p.length-1]],p.push(Bt);break;case 3:return!0}}return!0},"parse")},D=(function(){var F={EOF:1,parseError:s(function(h,p){if(this.yy.parser)this.yy.parser.parseError(h,p);else throw new Error(h)},"parseError"),setInput:s(function(o,h){return this.yy=h||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:s(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var h=o.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:s(function(o){var h=o.length,p=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),p.length-1&&(this.yylineno-=p.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:p?(p.length===u.length?this.yylloc.first_column:0)+u[u.length-p.length].length-p[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(o){this.unput(this.match.slice(o))},"less"),pastInput:s(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var o=this.pastInput(),h=new Array(o.length+1).join("-");return o+this.upcomingInput()+` -`+h+"^"},"showPosition"),test_match:s(function(o,h){var p,u,b;if(this.options.backtrack_lexer&&(b={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(b.yylloc.range=this.yylloc.range.slice(0))),u=o[0].match(/(?:\r\n?|\n).*/g),u&&(this.yylineno+=u.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:u?u[u.length-1].length-u[u.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],p=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),p)return p;if(this._backtrack){for(var r in b)this[r]=b[r];return!1}return!1},"test_match"),next:s(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,h,p,u;this._more||(this.yytext="",this.match="");for(var b=this._currentRules(),r=0;rh[0].length)){if(h=p,u=r,this.options.backtrack_lexer){if(o=this.test_match(p,b[r]),o!==!1)return o;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(o=this.test_match(h,b[u]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:s(function(){var h=this.next();return h||this.lex()},"lex"),begin:s(function(h){this.conditionStack.push(h)},"begin"),popState:s(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:s(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:s(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:s(function(h){this.begin(h)},"pushState"),stateStackSize:s(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:s(function(h,p,u,b){var r=b;switch(u){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 31;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 27;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 44:break;case 45:return 35;case 46:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};return F})();S.lexer=D;function U(){this.yy={}}return s(U,"Parser"),U.prototype=S,S.Parser=U,new U})();kt.parser=kt;var qt=kt;function St(i){return i.type==="bar"}s(St,"isBarPlot");function ot(i){return i.type==="band"}s(ot,"isBandAxisData");function q(i){return i.type==="linear"}s(q,"isLinearAxisData");var Q=class{constructor(t){this.parentGroup=t}static{s(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,e){if(!this.parentGroup)return{width:t.reduce((l,x)=>Math.max(x.length,l),0)*e,height:e};let a={width:0,height:0},n=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",e);for(let l of t){let x=Ut(n,1,l),y=x?x.width:l.length*e,A=x?x.height:e;a.width=Math.max(a.width,y),a.height=Math.max(a.height,A)}return n.remove(),a}};var K=class{constructor(t,e,a,n){this.axisConfig=t;this.title=e;this.textDimensionCalculator=a;this.axisThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{s(this,"BaseAxis")}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){let t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let e=t.height;if(this.axisConfig.showAxisLine&&e>this.axisConfig.axisLineWidth&&(e-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let a=this.getLabelDimension(),n=.2*t.width;this.outerPadding=Math.min(a.width/2,n);let l=a.height+this.axisConfig.labelPadding*2;this.labelTextHeight=a.height,l<=e&&(e-=l,this.showLabel=!0)}if(this.axisConfig.showTick&&e>=this.axisConfig.tickLength&&(this.showTick=!0,e-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let a=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=a.height+this.axisConfig.titlePadding*2;this.titleTextHeight=a.height,n<=e&&(e-=n,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-e}calculateSpaceIfDrawnVertical(t){let e=t.width;if(this.axisConfig.showAxisLine&&e>this.axisConfig.axisLineWidth&&(e-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let a=this.getLabelDimension(),n=.2*t.height;this.outerPadding=Math.min(a.height/2,n);let l=a.width+this.axisConfig.labelPadding*2;l<=e&&(e-=l,this.showLabel=!0)}if(this.axisConfig.showTick&&e>=this.axisConfig.tickLength&&(this.showTick=!0,e-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let a=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=a.height+this.axisConfig.titlePadding*2;this.titleTextHeight=a.height,n<=e&&(e-=n,this.showTitle=!0)}this.boundingRect.width=t.width-e,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${e},${this.boundingRect.y} L ${e},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(e),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let e=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(a=>({path:`M ${e},${this.getScaleValue(a)} L ${e-this.axisConfig.tickLength},${this.getScaleValue(a)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${e} L ${this.boundingRect.x+this.boundingRect.width},${e}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let e=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(a=>({path:`M ${this.getScaleValue(a)},${e} L ${this.getScaleValue(a)},${e+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${e} L ${this.boundingRect.x+this.boundingRect.width},${e}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let e=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(a=>({path:`M ${this.getScaleValue(a)},${e+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(a)},${e+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}};var ht=class extends K{static{s(this,"BandAxis")}constructor(t,e,a,n,l){super(t,n,l,e),this.categories=a,this.scale=At().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=At().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),nt.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}};var lt=class extends K{static{s(this,"LinearAxis")}constructor(t,e,a,n,l){super(t,n,l,e),this.domain=a,this.scale=Tt().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=Tt().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}};function _t(i,t,e,a){let n=new Q(a);return ot(i)?new ht(t,e,i.categories,i.title,n):new lt(t,e,[i.min,i.max],i.title,n)}s(_t,"getAxis");var Rt=class{constructor(t,e,a,n){this.textDimensionCalculator=t;this.chartConfig=e;this.chartData=a;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{s(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){let e=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),a=Math.max(e.width,t.width),n=e.height+2*this.chartConfig.titlePadding;return e.width<=a&&e.height<=n&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=a,this.boundingRect.height=n,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};function Qt(i,t,e,a){let n=new Q(a);return new Rt(n,i,t,e)}s(Qt,"getChartTitleComponent");var ct=class{constructor(t,e,a,n,l){this.plotData=t;this.xAxis=e;this.yAxis=a;this.orientation=n;this.plotIndex=l}static{s(this,"LinePlot")}getDrawableElement(){let t=this.plotData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),e;return this.orientation==="horizontal"?e=Dt().y(a=>a[0]).x(a=>a[1])(t):e=Dt().x(a=>a[0]).y(a=>a[1])(t),e?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:e,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}};var gt=class{constructor(t,e,a,n,l,x){this.barData=t;this.boundingRect=e;this.xAxis=a;this.yAxis=n;this.orientation=l;this.plotIndex=x}static{s(this,"BarPlot")}getDrawableElement(){let t=this.barData.data.map(l=>[this.xAxis.getScaleValue(l[0]),this.yAxis.getScaleValue(l[1])]),a=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),n=a/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(l=>({x:this.boundingRect.x,y:l[0]-n,height:a,width:l[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(l=>({x:l[0]-n,y:l[1],width:a,height:this.boundingRect.y+this.boundingRect.height-l[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}};var Pt=class{constructor(t,e,a){this.chartConfig=t;this.chartData=e;this.chartThemeConfig=a;this.boundingRect={x:0,y:0,width:0,height:0}}static{s(this,"BasePlot")}setAxes(t,e){this.xAxis=t,this.yAxis=e}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let t=[];for(let[e,a]of this.chartData.plots.entries())switch(a.type){case"line":{let n=new ct(a,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,e);t.push(...n.getDrawableElement())}break;case"bar":{let n=new gt(a,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,e);t.push(...n.getDrawableElement())}break}return t}};function Kt(i,t,e){return new Pt(i,t,e)}s(Kt,"getPlotComponent");var pt=class{constructor(t,e,a,n){this.chartConfig=t;this.chartData=e;this.componentStore={title:Qt(t,e,a,n),plot:Kt(t,e,a),xAxis:_t(e.xAxis,t.xAxis,{titleColor:a.xAxisTitleColor,labelColor:a.xAxisLabelColor,tickColor:a.xAxisTickColor,axisLineColor:a.xAxisLineColor},n),yAxis:_t(e.yAxis,t.yAxis,{titleColor:a.yAxisTitleColor,labelColor:a.yAxisLabelColor,tickColor:a.yAxisTickColor,axisLineColor:a.yAxisLineColor},n)}}static{s(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,e=this.chartConfig.height,a=0,n=0,l=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),x=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),y=this.componentStore.plot.calculateSpace({width:l,height:x});t-=y.width,e-=y.height,y=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:e}),n=y.height,e-=y.height,this.componentStore.xAxis.setAxisPosition("bottom"),y=this.componentStore.xAxis.calculateSpace({width:t,height:e}),e-=y.height,this.componentStore.yAxis.setAxisPosition("left"),y=this.componentStore.yAxis.calculateSpace({width:t,height:e}),a=y.width,t-=y.width,t>0&&(l+=t,t=0),e>0&&(x+=e,e=0),this.componentStore.plot.calculateSpace({width:l,height:x}),this.componentStore.plot.setBoundingBoxXY({x:a,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:a,y:n+x}),this.componentStore.yAxis.setRange([n,n+x]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:n}),this.chartData.plots.some(A=>St(A))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,e=this.chartConfig.height,a=0,n=0,l=0,x=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),y=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),A=this.componentStore.plot.calculateSpace({width:x,height:y});t-=A.width,e-=A.height,A=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:e}),a=A.height,e-=A.height,this.componentStore.xAxis.setAxisPosition("left"),A=this.componentStore.xAxis.calculateSpace({width:t,height:e}),t-=A.width,n=A.width,this.componentStore.yAxis.setAxisPosition("top"),A=this.componentStore.yAxis.calculateSpace({width:t,height:e}),e-=A.height,l=a+A.height,t>0&&(x+=t,t=0),e>0&&(y+=e,e=0),this.componentStore.plot.calculateSpace({width:x,height:y}),this.componentStore.plot.setBoundingBoxXY({x:n,y:l}),this.componentStore.yAxis.setRange([n,n+x]),this.componentStore.yAxis.setBoundingBoxXY({x:n,y:a}),this.componentStore.xAxis.setRange([l,l+y]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:l}),this.chartData.plots.some(V=>St(V))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let e of Object.values(this.componentStore))t.push(...e.getDrawableElements());return t}};var ut=class{static{s(this,"XYChartBuilder")}static build(t,e,a,n){return new pt(t,e,a,n).getDrawableElement()}};var J=0,Zt,tt=te(),et=Jt(),d=ee(),vt=et.plotColorPalette.split(",").map(i=>i.trim()),xt=!1,Et=!1;function Jt(){let i=It(),t=rt();return wt(i.xyChart,t.themeVariables.xyChart)}s(Jt,"getChartDefaultThemeConfig");function te(){let i=rt();return wt(Mt.xyChart,i.xyChart)}s(te,"getChartDefaultConfig");function ee(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}s(ee,"getChartDefaultData");function Lt(i){let t=rt();return Wt(i.trim(),t)}s(Lt,"textSanitizer");function ge(i){Zt=i}s(ge,"setTmpSVGG");function pe(i){i==="horizontal"?tt.chartOrientation="horizontal":tt.chartOrientation="vertical"}s(pe,"setOrientation");function ue(i){d.xAxis.title=Lt(i.text)}s(ue,"setXAxisTitle");function ie(i,t){d.xAxis={type:"linear",title:d.xAxis.title,min:i,max:t},xt=!0}s(ie,"setXAxisRangeData");function xe(i){d.xAxis={type:"band",title:d.xAxis.title,categories:i.map(t=>Lt(t.text))},xt=!0}s(xe,"setXAxisBand");function me(i){d.yAxis.title=Lt(i.text)}s(me,"setYAxisTitle");function fe(i,t){d.yAxis={type:"linear",title:d.yAxis.title,min:i,max:t},Et=!0}s(fe,"setYAxisRangeData");function de(i){let t=Math.min(...i),e=Math.max(...i),a=q(d.yAxis)?d.yAxis.min:1/0,n=q(d.yAxis)?d.yAxis.max:-1/0;d.yAxis={type:"linear",title:d.yAxis.title,min:Math.min(a,t),max:Math.max(n,e)}}s(de,"setYAxisRangeFromPlotData");function ae(i){let t=[];if(i.length===0)return t;if(!xt){let e=q(d.xAxis)?d.xAxis.min:1/0,a=q(d.xAxis)?d.xAxis.max:-1/0;ie(Math.min(e,1),Math.max(a,i.length))}if(Et||de(i),ot(d.xAxis)&&(t=d.xAxis.categories.map((e,a)=>[e,i[a]])),q(d.xAxis)){let e=d.xAxis.min,a=d.xAxis.max,n=(a-e)/(i.length-1),l=[];for(let x=e;x<=a;x+=n)l.push(`${x}`);t=l.map((x,y)=>[x,i[y]])}return t}s(ae,"transformDataWithoutCategory");function se(i){return vt[i===0?0:i%vt.length]}s(se,"getPlotColorFromPalette");function be(i,t){let e=ae(t);d.plots.push({type:"line",strokeFill:se(J),strokeWidth:2,data:e}),J++}s(be,"setLineData");function ye(i,t){let e=ae(t);d.plots.push({type:"bar",fill:se(J),data:e}),J++}s(ye,"setBarData");function Ce(){if(d.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return d.title=Ct(),ut.build(tt,d,et,Zt)}s(Ce,"getDrawableElem");function Ae(){return et}s(Ae,"getChartThemeConfig");function Te(){return tt}s(Te,"getChartConfig");function De(){return d}s(De,"getXYChartData");var we=s(function(){Ot(),J=0,tt=te(),d=ee(),et=Jt(),vt=et.plotColorPalette.split(",").map(i=>i.trim()),xt=!1,Et=!1},"clear"),ne={getDrawableElem:Ce,clear:we,setAccTitle:Ft,getAccTitle:Nt,setDiagramTitle:Ht,getDiagramTitle:Ct,getAccDescription:Gt,setAccDescription:jt,setOrientation:pe,setXAxisTitle:ue,setXAxisRangeData:ie,setXAxisBand:xe,setYAxisTitle:me,setYAxisRangeData:fe,setLineData:be,setBarData:ye,setTmpSVGG:ge,getChartThemeConfig:Ae,getChartConfig:Te,getXYChartData:De};var ke=s((i,t,e,a)=>{let n=a.db,l=n.getChartThemeConfig(),x=n.getChartConfig(),y=n.getXYChartData().plots[0].data.map(f=>f[1]);function A(f){return f==="top"?"text-before-edge":"middle"}s(A,"getDominantBaseLine");function V(f){return f==="left"?"start":f==="right"?"end":"middle"}s(V,"getTextAnchor");function B(f){return`translate(${f.x}, ${f.y}) rotate(${f.rotation||0})`}s(B,"getTextTransformation"),nt.debug(`Rendering xychart chart -`+i);let _=$t(t),L=_.append("g").attr("class","main"),I=L.append("rect").attr("width",x.width).attr("height",x.height).attr("class","background");zt(_,x.height,x.width,!0),_.attr("viewBox",`0 0 ${x.width} ${x.height}`),I.attr("fill",l.backgroundColor),n.setTmpSVGG(_.append("g").attr("class","mermaid-tmp-group"));let M=n.getDrawableElem(),R={};function W(f){let P=L,g="";for(let[X]of f.entries()){let v=L;X>0&&R[g]&&(v=R[g]),g+=f[X],P=R[g],P||(P=R[g]=v.append("g").attr("class",f[X]))}return P}s(W,"getGroup");for(let f of M){if(f.data.length===0)continue;let P=W(f.groupTexts);switch(f.type){case"rect":if(P.selectAll("rect").data(f.data).enter().append("rect").attr("x",g=>g.x).attr("y",g=>g.y).attr("width",g=>g.width).attr("height",g=>g.height).attr("fill",g=>g.fill).attr("stroke",g=>g.strokeFill).attr("stroke-width",g=>g.strokeWidth),x.showDataLabel)if(x.chartOrientation==="horizontal"){let v=function(c,w){let{data:S,label:D}=c;return w*D.length*.7<=S.width-10};var z=v;s(v,"fitsHorizontally");let g=.7,X=f.data.map((c,w)=>({data:c,label:y[w].toString()})).filter(c=>c.data.width>0&&c.data.height>0),C=X.map(c=>{let{data:w}=c,S=w.height*.7;for(;!v(c,S)&&S>0;)S-=1;return S}),j=Math.floor(Math.min(...C));P.selectAll("text").data(X).enter().append("text").attr("x",c=>c.data.x+c.data.width-10).attr("y",c=>c.data.y+c.data.height/2).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",`${j}px`).text(c=>c.label)}else{let v=function(c,w,S){let{data:D,label:U}=c,o=w*U.length*.7,h=D.x+D.width/2,p=h-o/2,u=h+o/2,b=p>=D.x&&u<=D.x+D.width,r=D.y+S+w<=D.y+D.height;return b&&r};var O=v;s(v,"fitsInBar");let g=10,X=f.data.map((c,w)=>({data:c,label:y[w].toString()})).filter(c=>c.data.width>0&&c.data.height>0),C=X.map(c=>{let{data:w,label:S}=c,D=w.width/(S.length*.7);for(;!v(c,D,10)&&D>0;)D-=1;return D}),j=Math.floor(Math.min(...C));P.selectAll("text").data(X).enter().append("text").attr("x",c=>c.data.x+c.data.width/2).attr("y",c=>c.data.y+10).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",`${j}px`).text(c=>c.label)}break;case"text":P.selectAll("text").data(f.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",g=>g.fill).attr("font-size",g=>g.fontSize).attr("dominant-baseline",g=>A(g.verticalPos)).attr("text-anchor",g=>V(g.horizontalPos)).attr("transform",g=>B(g)).text(g=>g.text);break;case"path":P.selectAll("path").data(f.data).enter().append("path").attr("d",g=>g.path).attr("fill",g=>g.fill?g.fill:"none").attr("stroke",g=>g.strokeFill).attr("stroke-width",g=>g.strokeWidth);break}}},"draw"),re={draw:ke};var Ii={parser:qt,db:ne,renderer:re};export{Ii as diagram}; +import{a as $t}from"./chunk-LRIF4GLE.mjs";import{e as Ut}from"./chunk-INKRHTLW.mjs";import{o as wt}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{A as Wt,O as Ot,S as zt,T as Ft,U as Nt,V as jt,W as Gt,X as Ht,Y as Ct,h as It,j as Mt,t as rt}from"./chunk-67TQ5CYL.mjs";import{H as Tt,b as nt,n as At,o as Dt}from"./chunk-7W6UQGC5.mjs";import{a as s}from"./chunk-AQ6EADP3.mjs";var kt=(function(){var i=s(function(d,o,l,g){for(l=l||{},g=d.length;g--;l[d[g]]=o);return l},"o"),t=[1,10,12,14,16,18,19,21,23],e=[2,6],a=[1,3],n=[1,5],h=[1,6],p=[1,7],A=[1,5,10,12,14,16,18,19,21,23,34,35,36],D=[1,25],Y=[1,26],V=[1,28],_=[1,29],L=[1,30],I=[1,31],M=[1,32],R=[1,33],W=[1,34],O=[1,35],z=[1,36],m=[1,37],P=[1,43],c=[1,42],N=[1,47],B=[1,50],b=[1,10,12,14,16,18,19,21,23,34,35,36],j=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],k=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],$=[1,64],T={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:s(function(o,l,g,u,C,r,G){var x=r.length-1;switch(C){case 5:u.setOrientation(r[x]);break;case 9:u.setDiagramTitle(r[x].text.trim());break;case 12:u.setLineData({text:"",type:"text"},r[x]);break;case 13:u.setLineData(r[x-1],r[x]);break;case 14:u.setBarData({text:"",type:"text"},r[x]);break;case 15:u.setBarData(r[x-1],r[x]);break;case 16:this.$=r[x].trim(),u.setAccTitle(this.$);break;case 17:case 18:this.$=r[x].trim(),u.setAccDescription(this.$);break;case 19:this.$=r[x-1];break;case 20:this.$=[Number(r[x-2]),...r[x]];break;case 21:this.$=[Number(r[x])];break;case 22:u.setXAxisTitle(r[x]);break;case 23:u.setXAxisTitle(r[x-1]);break;case 24:u.setXAxisTitle({type:"text",text:""});break;case 25:u.setXAxisBand(r[x]);break;case 26:u.setXAxisRangeData(Number(r[x-2]),Number(r[x]));break;case 27:this.$=r[x-1];break;case 28:this.$=[r[x-2],...r[x]];break;case 29:this.$=[r[x]];break;case 30:u.setYAxisTitle(r[x]);break;case 31:u.setYAxisTitle(r[x-1]);break;case 32:u.setYAxisTitle({type:"text",text:""});break;case 33:u.setYAxisRangeData(Number(r[x-2]),Number(r[x]));break;case 37:this.$={text:r[x],type:"text"};break;case 38:this.$={text:r[x],type:"text"};break;case 39:this.$={text:r[x],type:"markdown"};break;case 40:this.$=r[x];break;case 41:this.$=r[x-1]+""+r[x];break}},"anonymous"),table:[i(t,e,{3:1,4:2,7:4,5:a,34:n,35:h,36:p}),{1:[3]},i(t,e,{4:2,7:4,3:8,5:a,34:n,35:h,36:p}),i(t,e,{4:2,7:4,6:9,3:10,5:a,8:[1,11],34:n,35:h,36:p}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},i(A,[2,34]),i(A,[2,35]),i(A,[2,36]),{1:[2,1]},i(t,e,{4:2,7:4,3:21,5:a,34:n,35:h,36:p}),{1:[2,3]},i(A,[2,5]),i(t,[2,7],{4:22,34:n,35:h,36:p}),{11:23,37:24,38:D,39:Y,40:27,41:V,42:_,43:L,44:I,45:M,46:R,47:W,48:O,49:z,50:m},{11:39,13:38,24:P,27:c,29:40,30:41,37:24,38:D,39:Y,40:27,41:V,42:_,43:L,44:I,45:M,46:R,47:W,48:O,49:z,50:m},{11:45,15:44,27:N,33:46,37:24,38:D,39:Y,40:27,41:V,42:_,43:L,44:I,45:M,46:R,47:W,48:O,49:z,50:m},{11:49,17:48,24:B,37:24,38:D,39:Y,40:27,41:V,42:_,43:L,44:I,45:M,46:R,47:W,48:O,49:z,50:m},{11:52,17:51,24:B,37:24,38:D,39:Y,40:27,41:V,42:_,43:L,44:I,45:M,46:R,47:W,48:O,49:z,50:m},{20:[1,53]},{22:[1,54]},i(b,[2,18]),{1:[2,2]},i(b,[2,8]),i(b,[2,9]),i(j,[2,37],{40:55,41:V,42:_,43:L,44:I,45:M,46:R,47:W,48:O,49:z,50:m}),i(j,[2,38]),i(j,[2,39]),i(k,[2,40]),i(k,[2,42]),i(k,[2,43]),i(k,[2,44]),i(k,[2,45]),i(k,[2,46]),i(k,[2,47]),i(k,[2,48]),i(k,[2,49]),i(k,[2,50]),i(k,[2,51]),i(b,[2,10]),i(b,[2,22],{30:41,29:56,24:P,27:c}),i(b,[2,24]),i(b,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:D,39:Y,40:27,41:V,42:_,43:L,44:I,45:M,46:R,47:W,48:O,49:z,50:m},i(b,[2,11]),i(b,[2,30],{33:60,27:N}),i(b,[2,32]),{31:[1,61]},i(b,[2,12]),{17:62,24:B},{25:63,27:$},i(b,[2,14]),{17:65,24:B},i(b,[2,16]),i(b,[2,17]),i(k,[2,41]),i(b,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},i(b,[2,31]),{27:[1,69]},i(b,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},i(b,[2,15]),i(b,[2,26]),i(b,[2,27]),{11:59,32:72,37:24,38:D,39:Y,40:27,41:V,42:_,43:L,44:I,45:M,46:R,47:W,48:O,49:z,50:m},i(b,[2,33]),i(b,[2,19]),{25:73,27:$},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:s(function(o,l){if(l.recoverable)this.trace(o);else{var g=new Error(o);throw g.hash=l,g}},"parseError"),parse:s(function(o){var l=this,g=[0],u=[],C=[null],r=[],G=this.table,x="",it=0,Xt=0,Yt=0,oe=2,Bt=1,he=r.slice.call(arguments,1),w=Object.create(this.lexer),H={yy:{}};for(var mt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,mt)&&(H.yy[mt]=this.yy[mt]);w.setInput(o,H.yy),H.yy.lexer=w,H.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var ft=w.yylloc;r.push(ft);var le=w.options&&w.options.ranges;typeof H.yy.parseError=="function"?this.parseError=H.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Se(E){g.length=g.length-2*E,C.length=C.length-E,r.length=r.length-E}s(Se,"popStack");function ce(){var E;return E=u.pop()||w.lex()||Bt,typeof E!="number"&&(E instanceof Array&&(u=E,E=u.pop()),E=l.symbols_[E]||E),E}s(ce,"lex");for(var S,dt,U,X,_e,bt,q={},at,F,Vt,st;;){if(U=g[g.length-1],this.defaultActions[U]?X=this.defaultActions[U]:((S===null||typeof S>"u")&&(S=ce()),X=G[U]&&G[U][S]),typeof X>"u"||!X.length||!X[0]){var yt="";st=[];for(at in G[U])this.terminals_[at]&&at>oe&&st.push("'"+this.terminals_[at]+"'");w.showPosition?yt="Parse error on line "+(it+1)+`: +`+w.showPosition()+` +Expecting `+st.join(", ")+", got '"+(this.terminals_[S]||S)+"'":yt="Parse error on line "+(it+1)+": Unexpected "+(S==Bt?"end of input":"'"+(this.terminals_[S]||S)+"'"),this.parseError(yt,{text:w.match,token:this.terminals_[S]||S,line:w.yylineno,loc:ft,expected:st})}if(X[0]instanceof Array&&X.length>1)throw new Error("Parse Error: multiple actions possible at state: "+U+", token: "+S);switch(X[0]){case 1:g.push(S),C.push(w.yytext),r.push(w.yylloc),g.push(X[1]),S=null,dt?(S=dt,dt=null):(Xt=w.yyleng,x=w.yytext,it=w.yylineno,ft=w.yylloc,Yt>0&&Yt--);break;case 2:if(F=this.productions_[X[1]][1],q.$=C[C.length-F],q._$={first_line:r[r.length-(F||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(F||1)].first_column,last_column:r[r.length-1].last_column},le&&(q._$.range=[r[r.length-(F||1)].range[0],r[r.length-1].range[1]]),bt=this.performAction.apply(q,[x,Xt,it,H.yy,X[1],C,r].concat(he)),typeof bt<"u")return bt;F&&(g=g.slice(0,-1*F*2),C=C.slice(0,-1*F),r=r.slice(0,-1*F)),g.push(this.productions_[X[1]][0]),C.push(q.$),r.push(q._$),Vt=G[g[g.length-2]][g[g.length-1]],g.push(Vt);break;case 3:return!0}}return!0},"parse")},y=(function(){var d={EOF:1,parseError:s(function(l,g){if(this.yy.parser)this.yy.parser.parseError(l,g);else throw new Error(l)},"parseError"),setInput:s(function(o,l){return this.yy=l||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:s(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var l=o.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:s(function(o){var l=o.length,g=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===u.length?this.yylloc.first_column:0)+u[u.length-g.length].length-g[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(o){this.unput(this.match.slice(o))},"less"),pastInput:s(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var o=this.pastInput(),l=new Array(o.length+1).join("-");return o+this.upcomingInput()+` +`+l+"^"},"showPosition"),test_match:s(function(o,l){var g,u,C;if(this.options.backtrack_lexer&&(C={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(C.yylloc.range=this.yylloc.range.slice(0))),u=o[0].match(/(?:\r\n?|\n).*/g),u&&(this.yylineno+=u.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:u?u[u.length-1].length-u[u.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],g=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var r in C)this[r]=C[r];return!1}return!1},"test_match"),next:s(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,l,g,u;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),r=0;rl[0].length)){if(l=g,u=r,this.options.backtrack_lexer){if(o=this.test_match(g,C[r]),o!==!1)return o;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(o=this.test_match(l,C[u]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:s(function(){var l=this.next();return l||this.lex()},"lex"),begin:s(function(l){this.conditionStack.push(l)},"begin"),popState:s(function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:s(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:s(function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},"topState"),pushState:s(function(l){this.begin(l)},"pushState"),stateStackSize:s(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:s(function(l,g,u,C){var r=C;switch(u){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 31;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 27;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 44:break;case 45:return 35;case 46:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};return d})();T.lexer=y;function v(){this.yy={}}return s(v,"Parser"),v.prototype=T,T.Parser=v,new v})();kt.parser=kt;var qt=kt;function St(i){return i.type==="bar"}s(St,"isBarPlot");function ot(i){return i.type==="band"}s(ot,"isBandAxisData");function Q(i){return i.type==="linear"}s(Q,"isLinearAxisData");var K=class{constructor(t){this.parentGroup=t}static{s(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,e){if(!this.parentGroup)return{width:t.reduce((h,p)=>Math.max(p.length,h),0)*e,height:e};let a={width:0,height:0},n=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",e);for(let h of t){let p=Ut(n,1,h),A=p?p.width:h.length*e,D=p?p.height:e;a.width=Math.max(a.width,A),a.height=Math.max(a.height,D)}return n.remove(),a}};var Z=class{constructor(t,e,a,n){this.axisConfig=t;this.title=e;this.textDimensionCalculator=a;this.axisThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{s(this,"BaseAxis")}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){let t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let e=t.height;if(this.axisConfig.showAxisLine&&e>this.axisConfig.axisLineWidth&&(e-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let a=this.getLabelDimension(),n=.2*t.width;this.outerPadding=Math.min(a.width/2,n);let h=a.height+this.axisConfig.labelPadding*2;this.labelTextHeight=a.height,h<=e&&(e-=h,this.showLabel=!0)}if(this.axisConfig.showTick&&e>=this.axisConfig.tickLength&&(this.showTick=!0,e-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let a=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=a.height+this.axisConfig.titlePadding*2;this.titleTextHeight=a.height,n<=e&&(e-=n,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-e}calculateSpaceIfDrawnVertical(t){let e=t.width;if(this.axisConfig.showAxisLine&&e>this.axisConfig.axisLineWidth&&(e-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let a=this.getLabelDimension(),n=.2*t.height;this.outerPadding=Math.min(a.height/2,n);let h=a.width+this.axisConfig.labelPadding*2;h<=e&&(e-=h,this.showLabel=!0)}if(this.axisConfig.showTick&&e>=this.axisConfig.tickLength&&(this.showTick=!0,e-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let a=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=a.height+this.axisConfig.titlePadding*2;this.titleTextHeight=a.height,n<=e&&(e-=n,this.showTitle=!0)}this.boundingRect.width=t.width-e,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${e},${this.boundingRect.y} L ${e},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(e),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let e=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(a=>({path:`M ${e},${this.getScaleValue(a)} L ${e-this.axisConfig.tickLength},${this.getScaleValue(a)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${e} L ${this.boundingRect.x+this.boundingRect.width},${e}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let e=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(a=>({path:`M ${this.getScaleValue(a)},${e} L ${this.getScaleValue(a)},${e+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${e} L ${this.boundingRect.x+this.boundingRect.width},${e}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let e=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(a=>({path:`M ${this.getScaleValue(a)},${e+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(a)},${e+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}};var ht=class extends Z{static{s(this,"BandAxis")}constructor(t,e,a,n,h){super(t,n,h,e),this.categories=a,this.scale=At().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=At().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),nt.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}};var lt=class extends Z{static{s(this,"LinearAxis")}constructor(t,e,a,n,h){super(t,n,h,e),this.domain=a,this.scale=Dt().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=Dt().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}};function _t(i,t,e,a){let n=new K(a);return ot(i)?new ht(t,e,i.categories,i.title,n):new lt(t,e,[i.min,i.max],i.title,n)}s(_t,"getAxis");var Rt=class{constructor(t,e,a,n){this.textDimensionCalculator=t;this.chartConfig=e;this.chartData=a;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{s(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){let e=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),a=Math.max(e.width,t.width),n=e.height+2*this.chartConfig.titlePadding;return e.width<=a&&e.height<=n&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=a,this.boundingRect.height=n,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};function Qt(i,t,e,a){let n=new K(a);return new Rt(n,i,t,e)}s(Qt,"getChartTitleComponent");var ct=class{constructor(t,e,a,n,h){this.plotData=t;this.xAxis=e;this.yAxis=a;this.orientation=n;this.plotIndex=h}static{s(this,"LinePlot")}getDrawableElement(){let t=this.plotData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),e;return this.orientation==="horizontal"?e=Tt().y(a=>a[0]).x(a=>a[1])(t):e=Tt().x(a=>a[0]).y(a=>a[1])(t),e?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:e,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}};var gt=class{constructor(t,e,a,n,h,p){this.barData=t;this.boundingRect=e;this.xAxis=a;this.yAxis=n;this.orientation=h;this.plotIndex=p}static{s(this,"BarPlot")}getDrawableElement(){let t=this.barData.data.map(h=>[this.xAxis.getScaleValue(h[0]),this.yAxis.getScaleValue(h[1])]),a=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),n=a/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(h=>({x:this.boundingRect.x,y:h[0]-n,height:a,width:h[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(h=>({x:h[0]-n,y:h[1],width:a,height:this.boundingRect.y+this.boundingRect.height-h[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}};var Pt=class{constructor(t,e,a){this.chartConfig=t;this.chartData=e;this.chartThemeConfig=a;this.boundingRect={x:0,y:0,width:0,height:0}}static{s(this,"BasePlot")}setAxes(t,e){this.xAxis=t,this.yAxis=e}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let t=[];for(let[e,a]of this.chartData.plots.entries())switch(a.type){case"line":{let n=new ct(a,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,e);t.push(...n.getDrawableElement())}break;case"bar":{let n=new gt(a,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,e);t.push(...n.getDrawableElement())}break}return t}};function Kt(i,t,e){return new Pt(i,t,e)}s(Kt,"getPlotComponent");var ut=class{constructor(t,e,a,n){this.chartConfig=t;this.chartData=e;this.componentStore={title:Qt(t,e,a,n),plot:Kt(t,e,a),xAxis:_t(e.xAxis,t.xAxis,{titleColor:a.xAxisTitleColor,labelColor:a.xAxisLabelColor,tickColor:a.xAxisTickColor,axisLineColor:a.xAxisLineColor},n),yAxis:_t(e.yAxis,t.yAxis,{titleColor:a.yAxisTitleColor,labelColor:a.yAxisLabelColor,tickColor:a.yAxisTickColor,axisLineColor:a.yAxisLineColor},n)}}static{s(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,e=this.chartConfig.height,a=0,n=0,h=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),p=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),A=this.componentStore.plot.calculateSpace({width:h,height:p});t-=A.width,e-=A.height,A=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:e}),n=A.height,e-=A.height,this.componentStore.xAxis.setAxisPosition("bottom"),A=this.componentStore.xAxis.calculateSpace({width:t,height:e}),e-=A.height,this.componentStore.yAxis.setAxisPosition("left"),A=this.componentStore.yAxis.calculateSpace({width:t,height:e}),a=A.width,t-=A.width,t>0&&(h+=t,t=0),e>0&&(p+=e,e=0),this.componentStore.plot.calculateSpace({width:h,height:p}),this.componentStore.plot.setBoundingBoxXY({x:a,y:n}),this.componentStore.xAxis.setRange([a,a+h]),this.componentStore.xAxis.setBoundingBoxXY({x:a,y:n+p}),this.componentStore.yAxis.setRange([n,n+p]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:n}),this.chartData.plots.some(D=>St(D))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,e=this.chartConfig.height,a=0,n=0,h=0,p=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),A=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),D=this.componentStore.plot.calculateSpace({width:p,height:A});t-=D.width,e-=D.height,D=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:e}),a=D.height,e-=D.height,this.componentStore.xAxis.setAxisPosition("left"),D=this.componentStore.xAxis.calculateSpace({width:t,height:e}),t-=D.width,n=D.width,this.componentStore.yAxis.setAxisPosition("top"),D=this.componentStore.yAxis.calculateSpace({width:t,height:e}),e-=D.height,h=a+D.height,t>0&&(p+=t,t=0),e>0&&(A+=e,e=0),this.componentStore.plot.calculateSpace({width:p,height:A}),this.componentStore.plot.setBoundingBoxXY({x:n,y:h}),this.componentStore.yAxis.setRange([n,n+p]),this.componentStore.yAxis.setBoundingBoxXY({x:n,y:a}),this.componentStore.xAxis.setRange([h,h+A]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:h}),this.chartData.plots.some(Y=>St(Y))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let e of Object.values(this.componentStore))t.push(...e.getDrawableElements());return t}};var pt=class{static{s(this,"XYChartBuilder")}static build(t,e,a,n){return new ut(t,e,a,n).getDrawableElement()}};var J=0,Zt,tt=te(),et=Jt(),f=ee(),vt=et.plotColorPalette.split(",").map(i=>i.trim()),xt=!1,Et=!1;function Jt(){let i=It(),t=rt();return wt(i.xyChart,t.themeVariables.xyChart)}s(Jt,"getChartDefaultThemeConfig");function te(){let i=rt();return wt(Mt.xyChart,i.xyChart)}s(te,"getChartDefaultConfig");function ee(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}s(ee,"getChartDefaultData");function Lt(i){let t=rt();return Wt(i.trim(),t)}s(Lt,"textSanitizer");function ge(i){Zt=i}s(ge,"setTmpSVGG");function ue(i){i==="horizontal"?tt.chartOrientation="horizontal":tt.chartOrientation="vertical"}s(ue,"setOrientation");function pe(i){f.xAxis.title=Lt(i.text)}s(pe,"setXAxisTitle");function ie(i,t){f.xAxis={type:"linear",title:f.xAxis.title,min:i,max:t},xt=!0}s(ie,"setXAxisRangeData");function xe(i){f.xAxis={type:"band",title:f.xAxis.title,categories:i.map(t=>Lt(t.text))},xt=!0}s(xe,"setXAxisBand");function me(i){f.yAxis.title=Lt(i.text)}s(me,"setYAxisTitle");function fe(i,t){f.yAxis={type:"linear",title:f.yAxis.title,min:i,max:t},Et=!0}s(fe,"setYAxisRangeData");function de(i){let t=Math.min(...i),e=Math.max(...i),a=Q(f.yAxis)?f.yAxis.min:1/0,n=Q(f.yAxis)?f.yAxis.max:-1/0;f.yAxis={type:"linear",title:f.yAxis.title,min:Math.min(a,t),max:Math.max(n,e)}}s(de,"setYAxisRangeFromPlotData");function ae(i){let t=[];if(i.length===0)return t;if(!xt){let e=Q(f.xAxis)?f.xAxis.min:1/0,a=Q(f.xAxis)?f.xAxis.max:-1/0;ie(Math.min(e,1),Math.max(a,i.length))}if(Et||de(i),ot(f.xAxis)&&(t=f.xAxis.categories.map((e,a)=>[e,i[a]])),Q(f.xAxis)){let e=f.xAxis.min,a=f.xAxis.max,n=(a-e)/(i.length-1),h=[];for(let p=e;p<=a;p+=n)h.push(`${p}`);t=h.map((p,A)=>[p,i[A]])}return t}s(ae,"transformDataWithoutCategory");function se(i){return vt[i===0?0:i%vt.length]}s(se,"getPlotColorFromPalette");function be(i,t){let e=ae(t);f.plots.push({type:"line",strokeFill:se(J),strokeWidth:2,data:e}),J++}s(be,"setLineData");function ye(i,t){let e=ae(t);f.plots.push({type:"bar",fill:se(J),data:e}),J++}s(ye,"setBarData");function Ce(){if(f.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return f.title=Ct(),pt.build(tt,f,et,Zt)}s(Ce,"getDrawableElem");function Ae(){return et}s(Ae,"getChartThemeConfig");function De(){return tt}s(De,"getChartConfig");function Te(){return f}s(Te,"getXYChartData");var we=s(function(){zt(),J=0,tt=te(),f=ee(),et=Jt(),vt=et.plotColorPalette.split(",").map(i=>i.trim()),xt=!1,Et=!1},"clear"),ne={getDrawableElem:Ce,clear:we,setAccTitle:Ft,getAccTitle:Nt,setDiagramTitle:Ht,getDiagramTitle:Ct,getAccDescription:Gt,setAccDescription:jt,setOrientation:ue,setXAxisTitle:pe,setXAxisRangeData:ie,setXAxisBand:xe,setYAxisTitle:me,setYAxisRangeData:fe,setLineData:be,setBarData:ye,setTmpSVGG:ge,getChartThemeConfig:Ae,getChartConfig:De,getXYChartData:Te};var ke=s((i,t,e,a)=>{let n=a.db,h=n.getChartThemeConfig(),p=n.getChartConfig(),A=n.getXYChartData().plots[0].data.map(m=>m[1]);function D(m){return m==="top"?"text-before-edge":"middle"}s(D,"getDominantBaseLine");function Y(m){return m==="left"?"start":m==="right"?"end":"middle"}s(Y,"getTextAnchor");function V(m){return`translate(${m.x}, ${m.y}) rotate(${m.rotation||0})`}s(V,"getTextTransformation"),nt.debug(`Rendering xychart chart +`+i);let _=$t(t),L=_.append("g").attr("class","main"),I=L.append("rect").attr("width",p.width).attr("height",p.height).attr("class","background");Ot(_,p.height,p.width,!0),_.attr("viewBox",`0 0 ${p.width} ${p.height}`),I.attr("fill",h.backgroundColor),n.setTmpSVGG(_.append("g").attr("class","mermaid-tmp-group"));let M=n.getDrawableElem(),R={};function W(m){let P=L,c="";for(let[N]of m.entries()){let B=L;N>0&&R[c]&&(B=R[c]),c+=m[N],P=R[c],P||(P=R[c]=B.append("g").attr("class",m[N]))}return P}s(W,"getGroup");for(let m of M){if(m.data.length===0)continue;let P=W(m.groupTexts);switch(m.type){case"rect":if(P.selectAll("rect").data(m.data).enter().append("rect").attr("x",c=>c.x).attr("y",c=>c.y).attr("width",c=>c.width).attr("height",c=>c.height).attr("fill",c=>c.fill).attr("stroke",c=>c.strokeFill).attr("stroke-width",c=>c.strokeWidth),p.showDataLabel){let c=p.showDataLabelOutsideBar;if(p.chartOrientation==="horizontal"){let j=function(y,v){let{data:d,label:o}=y;return v*o.length*.7<=d.width-10};var O=j;s(j,"fitsHorizontally");let N=.7,B=10,b=m.data.map((y,v)=>({data:y,label:A[v].toString()})).filter(y=>y.data.width>0&&y.data.height>0),k=b.map(y=>{let{data:v}=y,d=v.height*.7;for(;!j(y,d)&&d>0;)d-=1;return d}),$=Math.floor(Math.min(...k)),T=s(y=>c?y.data.x+y.data.width+10:y.data.x+y.data.width-10,"determineLabelXPosition");P.selectAll("text").data(b).enter().append("text").attr("x",T).attr("y",y=>y.data.y+y.data.height/2).attr("text-anchor",c?"start":"end").attr("dominant-baseline","middle").attr("fill",h.dataLabelColor).attr("font-size",`${$}px`).text(y=>y.label)}else{let b=function(T,y,v){let{data:d,label:o}=T,g=y*o.length*.7,u=d.x+d.width/2,C=u-g/2,r=u+g/2,G=C>=d.x&&r<=d.x+d.width,x=d.y+v+y<=d.y+d.height;return G&&x};var z=b;s(b,"fitsInBar");let N=10,B=m.data.map((T,y)=>({data:T,label:A[y].toString()})).filter(T=>T.data.width>0&&T.data.height>0),j=B.map(T=>{let{data:y,label:v}=T,d=y.width/(v.length*.7);for(;!b(T,d,10)&&d>0;)d-=1;return d}),k=Math.floor(Math.min(...j)),$=s(T=>c?T.data.y-10:T.data.y+10,"determineLabelYPosition");P.selectAll("text").data(B).enter().append("text").attr("x",T=>T.data.x+T.data.width/2).attr("y",$).attr("text-anchor","middle").attr("dominant-baseline",c?"auto":"hanging").attr("fill",h.dataLabelColor).attr("font-size",`${k}px`).text(T=>T.label)}}break;case"text":P.selectAll("text").data(m.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",c=>c.fill).attr("font-size",c=>c.fontSize).attr("dominant-baseline",c=>D(c.verticalPos)).attr("text-anchor",c=>Y(c.horizontalPos)).attr("transform",c=>V(c)).text(c=>c.text);break;case"path":P.selectAll("path").data(m.data).enter().append("path").attr("d",c=>c.path).attr("fill",c=>c.fill?c.fill:"none").attr("stroke",c=>c.strokeFill).attr("stroke-width",c=>c.strokeWidth);break}}},"draw"),re={draw:ke};var Ii={parser:qt,db:ne,renderer:re};export{Ii as diagram}; diff --git a/assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-TMDUDL2A.mjs.map b/assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-N2JHSOCM.mjs.map similarity index 90% rename from assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-TMDUDL2A.mjs.map rename to assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-N2JHSOCM.mjs.map index 69f95ca..9b583d1 100644 --- a/assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-TMDUDL2A.mjs.map +++ b/assets/mermaid/chunks/mermaid.esm.min/xychartDiagram-N2JHSOCM.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../src/diagrams/xychart/parser/xychart.jison", "../../../src/diagrams/xychart/chartBuilder/interfaces.ts", "../../../src/diagrams/xychart/chartBuilder/textDimensionCalculator.ts", "../../../src/diagrams/xychart/chartBuilder/components/axis/baseAxis.ts", "../../../src/diagrams/xychart/chartBuilder/components/axis/bandAxis.ts", "../../../src/diagrams/xychart/chartBuilder/components/axis/linearAxis.ts", "../../../src/diagrams/xychart/chartBuilder/components/axis/index.ts", "../../../src/diagrams/xychart/chartBuilder/components/chartTitle.ts", "../../../src/diagrams/xychart/chartBuilder/components/plot/linePlot.ts", "../../../src/diagrams/xychart/chartBuilder/components/plot/barPlot.ts", "../../../src/diagrams/xychart/chartBuilder/components/plot/index.ts", "../../../src/diagrams/xychart/chartBuilder/orchestrator.ts", "../../../src/diagrams/xychart/chartBuilder/index.ts", "../../../src/diagrams/xychart/xychartDb.ts", "../../../src/diagrams/xychart/xychartRenderer.ts", "../../../src/diagrams/xychart/xychartDiagram.ts"], - "sourcesContent": ["/* 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,10,12,14,16,18,19,21,23],$V1=[2,6],$V2=[1,3],$V3=[1,5],$V4=[1,6],$V5=[1,7],$V6=[1,5,10,12,14,16,18,19,21,23,34,35,36],$V7=[1,25],$V8=[1,26],$V9=[1,28],$Va=[1,29],$Vb=[1,30],$Vc=[1,31],$Vd=[1,32],$Ve=[1,33],$Vf=[1,34],$Vg=[1,35],$Vh=[1,36],$Vi=[1,37],$Vj=[1,43],$Vk=[1,42],$Vl=[1,47],$Vm=[1,50],$Vn=[1,10,12,14,16,18,19,21,23,34,35,36],$Vo=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],$Vp=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],$Vq=[1,64];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"XYCHART\":5,\"chartConfig\":6,\"document\":7,\"CHART_ORIENTATION\":8,\"statement\":9,\"title\":10,\"text\":11,\"X_AXIS\":12,\"parseXAxis\":13,\"Y_AXIS\":14,\"parseYAxis\":15,\"LINE\":16,\"plotData\":17,\"BAR\":18,\"acc_title\":19,\"acc_title_value\":20,\"acc_descr\":21,\"acc_descr_value\":22,\"acc_descr_multiline_value\":23,\"SQUARE_BRACES_START\":24,\"commaSeparatedNumbers\":25,\"SQUARE_BRACES_END\":26,\"NUMBER_WITH_DECIMAL\":27,\"COMMA\":28,\"xAxisData\":29,\"bandData\":30,\"ARROW_DELIMITER\":31,\"commaSeparatedTexts\":32,\"yAxisData\":33,\"NEWLINE\":34,\"SEMI\":35,\"EOF\":36,\"alphaNum\":37,\"STR\":38,\"MD_STR\":39,\"alphaNumToken\":40,\"AMP\":41,\"NUM\":42,\"ALPHA\":43,\"PLUS\":44,\"EQUALS\":45,\"MULT\":46,\"DOT\":47,\"BRKT\":48,\"MINUS\":49,\"UNDERSCORE\":50,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"XYCHART\",8:\"CHART_ORIENTATION\",10:\"title\",12:\"X_AXIS\",14:\"Y_AXIS\",16:\"LINE\",18:\"BAR\",19:\"acc_title\",20:\"acc_title_value\",21:\"acc_descr\",22:\"acc_descr_value\",23:\"acc_descr_multiline_value\",24:\"SQUARE_BRACES_START\",26:\"SQUARE_BRACES_END\",27:\"NUMBER_WITH_DECIMAL\",28:\"COMMA\",31:\"ARROW_DELIMITER\",34:\"NEWLINE\",35:\"SEMI\",36:\"EOF\",38:\"STR\",39:\"MD_STR\",41:\"AMP\",42:\"NUM\",43:\"ALPHA\",44:\"PLUS\",45:\"EQUALS\",46:\"MULT\",47:\"DOT\",48:\"BRKT\",49:\"MINUS\",50:\"UNDERSCORE\"},\nproductions_: [0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,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.setOrientation($$[$0]); \nbreak;\ncase 9:\n yy.setDiagramTitle($$[$0].text.trim()); \nbreak;\ncase 12:\n yy.setLineData({text: '', type: 'text'}, $$[$0]); \nbreak;\ncase 13:\n yy.setLineData($$[$0-1], $$[$0]); \nbreak;\ncase 14:\n yy.setBarData({text: '', type: 'text'}, $$[$0]); \nbreak;\ncase 15:\n yy.setBarData($$[$0-1], $$[$0]); \nbreak;\ncase 16:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 17: case 18:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 19:\n this.$ = $$[$0-1] \nbreak;\ncase 20:\n this.$ = [Number($$[$0-2]), ...$$[$0]] \nbreak;\ncase 21:\n this.$ = [Number($$[$0])] \nbreak;\ncase 22:\nyy.setXAxisTitle($$[$0]);\nbreak;\ncase 23:\nyy.setXAxisTitle($$[$0-1]);\nbreak;\ncase 24:\nyy.setXAxisTitle({type: 'text', text: ''});\nbreak;\ncase 25:\nyy.setXAxisBand($$[$0]);\nbreak;\ncase 26:\nyy.setXAxisRangeData(Number($$[$0-2]), Number($$[$0]));\nbreak;\ncase 27:\nthis.$ = $$[$0-1]\nbreak;\ncase 28:\n this.$ = [$$[$0-2], ...$$[$0]] \nbreak;\ncase 29:\n this.$ = [$$[$0]] \nbreak;\ncase 30:\nyy.setYAxisTitle($$[$0]);\nbreak;\ncase 31:\nyy.setYAxisTitle($$[$0-1]);\nbreak;\ncase 32:\nyy.setYAxisTitle({type: \"text\", text: \"\"});\nbreak;\ncase 33:\nyy.setYAxisRangeData(Number($$[$0-2]), Number($$[$0]));\nbreak;\ncase 37:\n this.$={text:$$[$0], type: 'text'};\nbreak;\ncase 38:\n this.$={text: $$[$0], type: 'text'};\nbreak;\ncase 39:\n this.$={text: $$[$0], type: 'markdown'};\nbreak;\ncase 40:\nthis.$=$$[$0];\nbreak;\ncase 41:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\n}\n},\ntable: [o($V0,$V1,{3:1,4:2,7:4,5:$V2,34:$V3,35:$V4,36:$V5}),{1:[3]},o($V0,$V1,{4:2,7:4,3:8,5:$V2,34:$V3,35:$V4,36:$V5}),o($V0,$V1,{4:2,7:4,6:9,3:10,5:$V2,8:[1,11],34:$V3,35:$V4,36:$V5}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},o($V6,[2,34]),o($V6,[2,35]),o($V6,[2,36]),{1:[2,1]},o($V0,$V1,{4:2,7:4,3:21,5:$V2,34:$V3,35:$V4,36:$V5}),{1:[2,3]},o($V6,[2,5]),o($V0,[2,7],{4:22,34:$V3,35:$V4,36:$V5}),{11:23,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{11:39,13:38,24:$Vj,27:$Vk,29:40,30:41,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{11:45,15:44,27:$Vl,33:46,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{11:49,17:48,24:$Vm,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{11:52,17:51,24:$Vm,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{20:[1,53]},{22:[1,54]},o($Vn,[2,18]),{1:[2,2]},o($Vn,[2,8]),o($Vn,[2,9]),o($Vo,[2,37],{40:55,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi}),o($Vo,[2,38]),o($Vo,[2,39]),o($Vp,[2,40]),o($Vp,[2,42]),o($Vp,[2,43]),o($Vp,[2,44]),o($Vp,[2,45]),o($Vp,[2,46]),o($Vp,[2,47]),o($Vp,[2,48]),o($Vp,[2,49]),o($Vp,[2,50]),o($Vp,[2,51]),o($Vn,[2,10]),o($Vn,[2,22],{30:41,29:56,24:$Vj,27:$Vk}),o($Vn,[2,24]),o($Vn,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},o($Vn,[2,11]),o($Vn,[2,30],{33:60,27:$Vl}),o($Vn,[2,32]),{31:[1,61]},o($Vn,[2,12]),{17:62,24:$Vm},{25:63,27:$Vq},o($Vn,[2,14]),{17:65,24:$Vm},o($Vn,[2,16]),o($Vn,[2,17]),o($Vp,[2,41]),o($Vn,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},o($Vn,[2,31]),{27:[1,69]},o($Vn,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},o($Vn,[2,15]),o($Vn,[2,26]),o($Vn,[2,27]),{11:59,32:72,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},o($Vn,[2,33]),o($Vn,[2,19]),{25:73,27:$Vq},{26:[2,28]},{26:[2,20]}],\ndefaultActions: {8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},\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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2: this.popState(); return 34; \nbreak;\ncase 3: this.popState(); return 34; \nbreak;\ncase 4:return 34;\nbreak;\ncase 5:/* do nothing */\nbreak;\ncase 6: return 10; \nbreak;\ncase 7: this.pushState(\"acc_title\");return 19; \nbreak;\ncase 8: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 9: this.pushState(\"acc_descr\");return 21; \nbreak;\ncase 10: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 11: this.pushState(\"acc_descr_multiline\");\nbreak;\ncase 12: this.popState(); \nbreak;\ncase 13: return \"acc_descr_multiline_value\"; \nbreak;\ncase 14:return 5;\nbreak;\ncase 15:return 5;\nbreak;\ncase 16:return 8\nbreak;\ncase 17: this.pushState(\"axis_data\"); return \"X_AXIS\"; \nbreak;\ncase 18: this.pushState(\"axis_data\"); return \"Y_AXIS\"; \nbreak;\ncase 19: this.pushState(\"axis_band_data\"); return 24; \nbreak;\ncase 20: return 31; \nbreak;\ncase 21: this.pushState(\"data\"); return 16; \nbreak;\ncase 22: this.pushState(\"data\"); return 18; \nbreak;\ncase 23: this.pushState(\"data_inner\"); return 24; \nbreak;\ncase 24: return 27; \nbreak;\ncase 25: this.popState(); return 26; \nbreak;\ncase 26: this.popState(); \nbreak;\ncase 27:this.pushState(\"string\");\nbreak;\ncase 28:this.popState();\nbreak;\ncase 29:return \"STR\";\nbreak;\ncase 30:return 24\nbreak;\ncase 31:return 26\nbreak;\ncase 32:return 43;\nbreak;\ncase 33:return 'COLON';\nbreak;\ncase 34:return 44;\nbreak;\ncase 35:return 28;\nbreak;\ncase 36:return 45;\nbreak;\ncase 37:return 46;\nbreak;\ncase 38:return 48;\nbreak;\ncase 39:return 50;\nbreak;\ncase 40:return 47;\nbreak;\ncase 41:return 41;\nbreak;\ncase 42:return 49;\nbreak;\ncase 43:return 42;\nbreak;\ncase 44:/* skip */\nbreak;\ncase 45:return 35;\nbreak;\ncase 46:return 36;\nbreak;\n}\n},\nrules: [/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:(\\r?\\n))/i,/^(?:(\\r?\\n))/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:title\\b)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:\\})/i,/^(?:[^\\}]*)/i,/^(?:xychart-beta\\b)/i,/^(?:xychart\\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\\b)/i,/^(?:y-axis\\b)/i,/^(?:\\[)/i,/^(?:-->)/i,/^(?:line\\b)/i,/^(?:bar\\b)/i,/^(?:\\[)/i,/^(?:[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+))/i,/^(?:\\])/i,/^(?:(?:`\\) \\{ this\\.pushState\\(md_string\\); \\}\\n\\(\\?:\\(\\?!`\"\\)\\.\\)\\+ \\{ return MD_STR; \\}\\n\\(\\?:`))/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\\*)/i,/^(?:#)/i,/^(?:[\\_])/i,/^(?:\\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\\s+)/i,/^(?:;)/i,/^(?:$)/i],\nconditions: {\"data_inner\":{\"rules\":[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true},\"data\":{\"rules\":[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true},\"axis_band_data\":{\"rules\":[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true},\"axis_data\":{\"rules\":[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true},\"acc_descr_multiline\":{\"rules\":[12,13],\"inclusive\":false},\"acc_descr\":{\"rules\":[10],\"inclusive\":false},\"acc_title\":{\"rules\":[8],\"inclusive\":false},\"title\":{\"rules\":[],\"inclusive\":false},\"md_string\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[28,29],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "export interface XYChartAxisThemeConfig {\n titleColor: string;\n labelColor: string;\n tickColor: string;\n axisLineColor: string;\n}\n\nexport interface XYChartThemeConfig {\n backgroundColor: string;\n titleColor: string;\n xAxisLabelColor: string;\n xAxisTitleColor: string;\n xAxisTickColor: string;\n xAxisLineColor: string;\n yAxisLabelColor: string;\n yAxisTitleColor: string;\n yAxisTickColor: string;\n yAxisLineColor: string;\n plotColorPalette: string;\n}\n\nexport interface ChartComponent {\n calculateSpace(availableSpace: Dimension): Dimension;\n setBoundingBoxXY(point: Point): void;\n getDrawableElements(): DrawableElem[];\n}\n\nexport type SimplePlotDataType = [string, number][];\n\nexport interface LinePlotData {\n type: 'line';\n strokeFill: string;\n strokeWidth: number;\n data: SimplePlotDataType;\n}\n\nexport interface BarPlotData {\n type: 'bar';\n fill: string;\n data: SimplePlotDataType;\n}\n\nexport type PlotData = LinePlotData | BarPlotData;\n\nexport function isBarPlot(data: PlotData): data is BarPlotData {\n return data.type === 'bar';\n}\n\nexport interface BandAxisDataType {\n type: 'band';\n title: string;\n categories: string[];\n}\n\nexport interface LinearAxisDataType {\n type: 'linear';\n title: string;\n min: number;\n max: number;\n}\n\nexport type AxisDataType = LinearAxisDataType | BandAxisDataType;\n\nexport function isBandAxisData(data: AxisDataType): data is BandAxisDataType {\n return data.type === 'band';\n}\n\nexport function isLinearAxisData(data: AxisDataType): data is LinearAxisDataType {\n return data.type === 'linear';\n}\n\n/**\n * For now we are keeping this configs as we are removing the required fields while generating the config.type.ts file\n * we should remove `XYChartAxisConfig` and `XYChartConfig` after we started using required fields\n */\nexport interface XYChartAxisConfig {\n showLabel: boolean;\n labelFontSize: number;\n labelPadding: number;\n showTitle: boolean;\n titleFontSize: number;\n titlePadding: number;\n showTick: boolean;\n tickLength: number;\n tickWidth: number;\n showAxisLine: boolean;\n axisLineWidth: number;\n}\n\nexport interface XYChartConfig {\n width: number;\n height: number;\n titleFontSize: number;\n titlePadding: number;\n showTitle: boolean;\n showDataLabel: boolean;\n xAxis: XYChartAxisConfig;\n yAxis: XYChartAxisConfig;\n chartOrientation: 'vertical' | 'horizontal';\n plotReservedSpacePercent: number;\n}\n\nexport interface XYChartData {\n xAxis: AxisDataType;\n yAxis: AxisDataType;\n title: string;\n plots: PlotData[];\n}\n\nexport interface Dimension {\n width: number;\n height: number;\n}\n\nexport interface BoundingRect extends Point, Dimension {}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport type TextHorizontalPos = 'left' | 'center' | 'right';\nexport type TextVerticalPos = 'top' | 'middle';\n\nexport interface RectElem extends Point {\n width: number;\n height: number;\n fill: string;\n strokeWidth: number;\n strokeFill: string;\n}\n\nexport interface TextElem extends Point {\n text: string;\n fill: string;\n verticalPos: TextVerticalPos;\n horizontalPos: TextHorizontalPos;\n fontSize: number;\n rotation: number;\n}\n\nexport interface PathElem {\n path: string;\n fill?: string;\n strokeWidth: number;\n strokeFill: string;\n}\n\nexport type DrawableElem =\n | {\n groupTexts: string[];\n type: 'rect';\n data: RectElem[];\n }\n | {\n groupTexts: string[];\n type: 'text';\n data: TextElem[];\n }\n | {\n groupTexts: string[];\n type: 'path';\n data: PathElem[];\n };\n", "import type { SVGGroup } from '../../../diagram-api/types.js';\nimport { computeDimensionOfText } from '../../../rendering-util/createText.js';\nimport type { Dimension } from './interfaces.js';\n\nexport interface TextDimensionCalculator {\n getMaxDimension(texts: string[], fontSize: number): Dimension;\n}\n\nexport class TextDimensionCalculatorWithFont implements TextDimensionCalculator {\n constructor(private parentGroup: SVGGroup) {}\n getMaxDimension(texts: string[], fontSize: number): Dimension {\n if (!this.parentGroup) {\n return {\n width: texts.reduce((acc, cur) => Math.max(cur.length, acc), 0) * fontSize,\n height: fontSize,\n };\n }\n\n const dimension: Dimension = {\n width: 0,\n height: 0,\n };\n\n const elem = this.parentGroup\n .append('g')\n .attr('visibility', 'hidden')\n .attr('font-size', fontSize);\n\n for (const t of texts) {\n const bbox = computeDimensionOfText(elem, 1, t);\n const width = bbox ? bbox.width : t.length * fontSize;\n const height = bbox ? bbox.height : fontSize;\n dimension.width = Math.max(dimension.width, width);\n dimension.height = Math.max(dimension.height, height);\n }\n elem.remove();\n return dimension;\n }\n}\n", "import type {\n BoundingRect,\n Dimension,\n DrawableElem,\n Point,\n XYChartAxisConfig,\n XYChartAxisThemeConfig,\n} from '../../interfaces.js';\nimport type { TextDimensionCalculator } from '../../textDimensionCalculator.js';\nimport type { Axis, AxisPosition } from './index.js';\n\nconst BAR_WIDTH_TO_TICK_WIDTH_RATIO = 0.7;\nconst MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL = 0.2;\n\nexport abstract class BaseAxis implements Axis {\n protected boundingRect: BoundingRect = { x: 0, y: 0, width: 0, height: 0 };\n protected axisPosition: AxisPosition = 'left';\n private range: [number, number];\n protected showTitle = false;\n protected showLabel = false;\n protected showTick = false;\n protected showAxisLine = false;\n protected outerPadding = 0;\n protected titleTextHeight = 0;\n protected labelTextHeight = 0;\n\n constructor(\n protected axisConfig: XYChartAxisConfig,\n protected title: string,\n protected textDimensionCalculator: TextDimensionCalculator,\n protected axisThemeConfig: XYChartAxisThemeConfig\n ) {\n this.range = [0, 10];\n this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };\n this.axisPosition = 'left';\n }\n\n setRange(range: [number, number]): void {\n this.range = range;\n if (this.axisPosition === 'left' || this.axisPosition === 'right') {\n this.boundingRect.height = range[1] - range[0];\n } else {\n this.boundingRect.width = range[1] - range[0];\n }\n this.recalculateScale();\n }\n\n getRange(): [number, number] {\n return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding];\n }\n\n setAxisPosition(axisPosition: AxisPosition): void {\n this.axisPosition = axisPosition;\n this.setRange(this.range);\n }\n\n abstract getScaleValue(value: number | string): number;\n\n abstract recalculateScale(): void;\n\n abstract getTickValues(): (string | number)[];\n\n getTickDistance(): number {\n const range = this.getRange();\n return Math.abs(range[0] - range[1]) / this.getTickValues().length;\n }\n\n getAxisOuterPadding(): number {\n return this.outerPadding;\n }\n\n private getLabelDimension(): Dimension {\n return this.textDimensionCalculator.getMaxDimension(\n this.getTickValues().map((tick) => tick.toString()),\n this.axisConfig.labelFontSize\n );\n }\n\n recalculateOuterPaddingToDrawBar(): void {\n if (BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() > this.outerPadding * 2) {\n this.outerPadding = Math.floor((BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance()) / 2);\n }\n this.recalculateScale();\n }\n\n private calculateSpaceIfDrawnHorizontally(availableSpace: Dimension) {\n let availableHeight = availableSpace.height;\n if (this.axisConfig.showAxisLine && availableHeight > this.axisConfig.axisLineWidth) {\n availableHeight -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.width;\n this.outerPadding = Math.min(spaceRequired.width / 2, maxPadding);\n\n const heightRequired = spaceRequired.height + this.axisConfig.labelPadding * 2;\n this.labelTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableHeight >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableHeight -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const heightRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height - availableHeight;\n }\n\n private calculateSpaceIfDrawnVertical(availableSpace: Dimension) {\n let availableWidth = availableSpace.width;\n if (this.axisConfig.showAxisLine && availableWidth > this.axisConfig.axisLineWidth) {\n availableWidth -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.height;\n this.outerPadding = Math.min(spaceRequired.height / 2, maxPadding);\n const widthRequired = spaceRequired.width + this.axisConfig.labelPadding * 2;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableWidth >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableWidth -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const widthRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width - availableWidth;\n this.boundingRect.height = availableSpace.height;\n }\n\n calculateSpace(availableSpace: Dimension): Dimension {\n if (this.axisPosition === 'left' || this.axisPosition === 'right') {\n this.calculateSpaceIfDrawnVertical(availableSpace);\n } else {\n this.calculateSpaceIfDrawnHorizontally(availableSpace);\n }\n this.recalculateScale();\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height,\n };\n }\n\n setBoundingBoxXY(point: Point): void {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n\n private getDrawableElementsForLeftAxis(): DrawableElem[] {\n const drawableElement: DrawableElem[] = [];\n if (this.showAxisLine) {\n const x = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: 'path',\n groupTexts: ['left-axis', 'axisl-line'],\n data: [\n {\n path: `M ${x},${this.boundingRect.y} L ${x},${\n this.boundingRect.y + this.boundingRect.height\n } `,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth,\n },\n ],\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['left-axis', 'label'],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x:\n this.boundingRect.x +\n this.boundingRect.width -\n (this.showLabel ? this.axisConfig.labelPadding : 0) -\n (this.showTick ? this.axisConfig.tickLength : 0) -\n (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n y: this.getScaleValue(tick),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: 'middle',\n horizontalPos: 'right',\n })),\n });\n }\n if (this.showTick) {\n const x =\n this.boundingRect.x +\n this.boundingRect.width -\n (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: 'path',\n groupTexts: ['left-axis', 'ticks'],\n data: this.getTickValues().map((tick) => ({\n path: `M ${x},${this.getScaleValue(tick)} L ${\n x - this.axisConfig.tickLength\n },${this.getScaleValue(tick)}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth,\n })),\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['left-axis', 'title'],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.axisConfig.titlePadding,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 270,\n verticalPos: 'top',\n horizontalPos: 'center',\n },\n ],\n });\n }\n return drawableElement;\n }\n private getDrawableElementsForBottomAxis(): DrawableElem[] {\n const drawableElement: DrawableElem[] = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: 'path',\n groupTexts: ['bottom-axis', 'axis-line'],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${\n this.boundingRect.x + this.boundingRect.width\n },${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth,\n },\n ],\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['bottom-axis', 'label'],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y:\n this.boundingRect.y +\n this.axisConfig.labelPadding +\n (this.showTick ? this.axisConfig.tickLength : 0) +\n (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: 'top',\n horizontalPos: 'center',\n })),\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: 'path',\n groupTexts: ['bottom-axis', 'ticks'],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${y} L ${this.getScaleValue(tick)},${\n y + this.axisConfig.tickLength\n }`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth,\n })),\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['bottom-axis', 'title'],\n data: [\n {\n text: this.title,\n x: this.range[0] + (this.range[1] - this.range[0]) / 2,\n y:\n this.boundingRect.y +\n this.boundingRect.height -\n this.axisConfig.titlePadding -\n this.titleTextHeight,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: 'top',\n horizontalPos: 'center',\n },\n ],\n });\n }\n return drawableElement;\n }\n private getDrawableElementsForTopAxis(): DrawableElem[] {\n const drawableElement: DrawableElem[] = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: 'path',\n groupTexts: ['top-axis', 'axis-line'],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${\n this.boundingRect.x + this.boundingRect.width\n },${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth,\n },\n ],\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['top-axis', 'label'],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y:\n this.boundingRect.y +\n (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) +\n this.axisConfig.labelPadding,\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: 'top',\n horizontalPos: 'center',\n })),\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y;\n drawableElement.push({\n type: 'path',\n groupTexts: ['top-axis', 'ticks'],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${\n y + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)\n } L ${this.getScaleValue(tick)},${\n y +\n this.boundingRect.height -\n this.axisConfig.tickLength -\n (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)\n }`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth,\n })),\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['top-axis', 'title'],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.axisConfig.titlePadding,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: 'top',\n horizontalPos: 'center',\n },\n ],\n });\n }\n return drawableElement;\n }\n\n getDrawableElements(): DrawableElem[] {\n if (this.axisPosition === 'left') {\n return this.getDrawableElementsForLeftAxis();\n }\n if (this.axisPosition === 'right') {\n throw Error('Drawing of right axis is not implemented');\n }\n if (this.axisPosition === 'bottom') {\n return this.getDrawableElementsForBottomAxis();\n }\n if (this.axisPosition === 'top') {\n return this.getDrawableElementsForTopAxis();\n }\n return [];\n }\n}\n", "import type { ScaleBand } from 'd3';\nimport { scaleBand } from 'd3';\nimport { log } from '../../../../../logger.js';\nimport type { TextDimensionCalculator } from '../../textDimensionCalculator.js';\nimport { BaseAxis } from './baseAxis.js';\nimport type { XYChartAxisThemeConfig, XYChartAxisConfig } from '../../interfaces.js';\n\nexport class BandAxis extends BaseAxis {\n private scale: ScaleBand;\n private categories: string[];\n\n constructor(\n axisConfig: XYChartAxisConfig,\n axisThemeConfig: XYChartAxisThemeConfig,\n categories: string[],\n title: string,\n textDimensionCalculator: TextDimensionCalculator\n ) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.categories = categories;\n this.scale = scaleBand().domain(this.categories).range(this.getRange());\n }\n\n setRange(range: [number, number]): void {\n super.setRange(range);\n }\n\n recalculateScale(): void {\n this.scale = scaleBand()\n .domain(this.categories)\n .range(this.getRange())\n .paddingInner(1)\n .paddingOuter(0)\n .align(0.5);\n log.trace('BandAxis axis final categories, range: ', this.categories, this.getRange());\n }\n\n getTickValues(): (string | number)[] {\n return this.categories;\n }\n\n getScaleValue(value: string): number {\n return this.scale(value) ?? this.getRange()[0];\n }\n}\n", "import type { ScaleLinear } from 'd3';\nimport { scaleLinear } from 'd3';\nimport type { TextDimensionCalculator } from '../../textDimensionCalculator.js';\nimport { BaseAxis } from './baseAxis.js';\nimport type { XYChartAxisThemeConfig, XYChartAxisConfig } from '../../interfaces.js';\n\nexport class LinearAxis extends BaseAxis {\n private scale: ScaleLinear;\n private domain: [number, number];\n\n constructor(\n axisConfig: XYChartAxisConfig,\n axisThemeConfig: XYChartAxisThemeConfig,\n domain: [number, number],\n title: string,\n textDimensionCalculator: TextDimensionCalculator\n ) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.domain = domain;\n this.scale = scaleLinear().domain(this.domain).range(this.getRange());\n }\n\n getTickValues(): (string | number)[] {\n return this.scale.ticks();\n }\n\n recalculateScale(): void {\n const domain = [...this.domain]; // copy the array so if reverse is called two times it should not cancel the reverse effect\n if (this.axisPosition === 'left') {\n domain.reverse(); // since y-axis in svg start from top\n }\n this.scale = scaleLinear().domain(domain).range(this.getRange());\n }\n\n getScaleValue(value: number): number {\n return this.scale(value);\n }\n}\n", "import type { SVGGroup } from '../../../../../diagram-api/types.js';\nimport type {\n AxisDataType,\n ChartComponent,\n XYChartAxisConfig,\n XYChartAxisThemeConfig,\n} from '../../interfaces.js';\nimport { isBandAxisData } from '../../interfaces.js';\nimport { TextDimensionCalculatorWithFont } from '../../textDimensionCalculator.js';\nimport { BandAxis } from './bandAxis.js';\nimport { LinearAxis } from './linearAxis.js';\n\nexport type AxisPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface Axis extends ChartComponent {\n getScaleValue(value: string | number): number;\n setAxisPosition(axisPosition: AxisPosition): void;\n getAxisOuterPadding(): number;\n getTickDistance(): number;\n recalculateOuterPaddingToDrawBar(): void;\n setRange(range: [number, number]): void;\n}\n\nexport function getAxis(\n data: AxisDataType,\n axisConfig: XYChartAxisConfig,\n axisThemeConfig: XYChartAxisThemeConfig,\n tmpSVGGroup: SVGGroup\n): Axis {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup);\n if (isBandAxisData(data)) {\n return new BandAxis(\n axisConfig,\n axisThemeConfig,\n data.categories,\n data.title,\n textDimensionCalculator\n );\n }\n return new LinearAxis(\n axisConfig,\n axisThemeConfig,\n [data.min, data.max],\n data.title,\n textDimensionCalculator\n );\n}\n", "import type { SVGGroup } from '../../../../diagram-api/types.js';\nimport type {\n BoundingRect,\n ChartComponent,\n Dimension,\n DrawableElem,\n Point,\n XYChartConfig,\n XYChartData,\n XYChartThemeConfig,\n} from '../interfaces.js';\nimport type { TextDimensionCalculator } from '../textDimensionCalculator.js';\nimport { TextDimensionCalculatorWithFont } from '../textDimensionCalculator.js';\n\nexport class ChartTitle implements ChartComponent {\n private boundingRect: BoundingRect;\n private showChartTitle: boolean;\n constructor(\n private textDimensionCalculator: TextDimensionCalculator,\n private chartConfig: XYChartConfig,\n private chartData: XYChartData,\n private chartThemeConfig: XYChartThemeConfig\n ) {\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n this.showChartTitle = false;\n }\n setBoundingBoxXY(point: Point): void {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace: Dimension): Dimension {\n const titleDimension = this.textDimensionCalculator.getMaxDimension(\n [this.chartData.title],\n this.chartConfig.titleFontSize\n );\n const widthRequired = Math.max(titleDimension.width, availableSpace.width);\n const heightRequired = titleDimension.height + 2 * this.chartConfig.titlePadding;\n if (\n titleDimension.width <= widthRequired &&\n titleDimension.height <= heightRequired &&\n this.chartConfig.showTitle &&\n this.chartData.title\n ) {\n this.boundingRect.width = widthRequired;\n this.boundingRect.height = heightRequired;\n this.showChartTitle = true;\n }\n\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height,\n };\n }\n getDrawableElements(): DrawableElem[] {\n const drawableElem: DrawableElem[] = [];\n if (this.showChartTitle) {\n drawableElem.push({\n groupTexts: ['chart-title'],\n type: 'text',\n data: [\n {\n fontSize: this.chartConfig.titleFontSize,\n text: this.chartData.title,\n verticalPos: 'middle',\n horizontalPos: 'center',\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.chartThemeConfig.titleColor,\n rotation: 0,\n },\n ],\n });\n }\n return drawableElem;\n }\n}\n\nexport function getChartTitleComponent(\n chartConfig: XYChartConfig,\n chartData: XYChartData,\n chartThemeConfig: XYChartThemeConfig,\n tmpSVGGroup: SVGGroup\n): ChartComponent {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup);\n return new ChartTitle(textDimensionCalculator, chartConfig, chartData, chartThemeConfig);\n}\n", "import { line } from 'd3';\nimport type { DrawableElem, LinePlotData, XYChartConfig } from '../../interfaces.js';\nimport type { Axis } from '../axis/index.js';\n\nexport class LinePlot {\n constructor(\n private plotData: LinePlotData,\n private xAxis: Axis,\n private yAxis: Axis,\n private orientation: XYChartConfig['chartOrientation'],\n private plotIndex: number\n ) {}\n\n getDrawableElement(): DrawableElem[] {\n const finalData: [number, number][] = this.plotData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1]),\n ]);\n\n let path: string | null;\n if (this.orientation === 'horizontal') {\n path = line()\n .y((d) => d[0])\n .x((d) => d[1])(finalData);\n } else {\n path = line()\n .x((d) => d[0])\n .y((d) => d[1])(finalData);\n }\n if (!path) {\n return [];\n }\n return [\n {\n groupTexts: ['plot', `line-plot-${this.plotIndex}`],\n type: 'path',\n data: [\n {\n path,\n strokeFill: this.plotData.strokeFill,\n strokeWidth: this.plotData.strokeWidth,\n },\n ],\n },\n ];\n }\n}\n", "import type { BarPlotData, BoundingRect, DrawableElem, XYChartConfig } from '../../interfaces.js';\nimport type { Axis } from '../axis/index.js';\n\nexport class BarPlot {\n constructor(\n private barData: BarPlotData,\n private boundingRect: BoundingRect,\n private xAxis: Axis,\n private yAxis: Axis,\n private orientation: XYChartConfig['chartOrientation'],\n private plotIndex: number\n ) {}\n\n getDrawableElement(): DrawableElem[] {\n const finalData: [number, number][] = this.barData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1]),\n ]);\n\n const barPaddingPercent = 0.05;\n\n const barWidth =\n Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) *\n (1 - barPaddingPercent);\n const barWidthHalf = barWidth / 2;\n\n if (this.orientation === 'horizontal') {\n return [\n {\n groupTexts: ['plot', `bar-plot-${this.plotIndex}`],\n type: 'rect',\n data: finalData.map((data) => ({\n x: this.boundingRect.x,\n y: data[0] - barWidthHalf,\n height: barWidth,\n width: data[1] - this.boundingRect.x,\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill,\n })),\n },\n ];\n }\n return [\n {\n groupTexts: ['plot', `bar-plot-${this.plotIndex}`],\n type: 'rect',\n data: finalData.map((data) => ({\n x: data[0] - barWidthHalf,\n y: data[1],\n width: barWidth,\n height: this.boundingRect.y + this.boundingRect.height - data[1],\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill,\n })),\n },\n ];\n }\n}\n", "import type {\n XYChartData,\n Dimension,\n BoundingRect,\n DrawableElem,\n Point,\n XYChartThemeConfig,\n XYChartConfig,\n} from '../../interfaces.js';\nimport type { Axis } from '../axis/index.js';\nimport type { ChartComponent } from '../../interfaces.js';\nimport { LinePlot } from './linePlot.js';\nimport { BarPlot } from './barPlot.js';\n\nexport interface Plot extends ChartComponent {\n setAxes(xAxis: Axis, yAxis: Axis): void;\n}\n\nexport class BasePlot implements Plot {\n private boundingRect: BoundingRect;\n private xAxis?: Axis;\n private yAxis?: Axis;\n\n constructor(\n private chartConfig: XYChartConfig,\n private chartData: XYChartData,\n private chartThemeConfig: XYChartThemeConfig\n ) {\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n setAxes(xAxis: Axis, yAxis: Axis) {\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n }\n setBoundingBoxXY(point: Point): void {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace: Dimension): Dimension {\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height;\n\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height,\n };\n }\n getDrawableElements(): DrawableElem[] {\n if (!(this.xAxis && this.yAxis)) {\n throw Error('Axes must be passed to render Plots');\n }\n const drawableElem: DrawableElem[] = [];\n for (const [i, plot] of this.chartData.plots.entries()) {\n switch (plot.type) {\n case 'line':\n {\n const linePlot = new LinePlot(\n plot,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...linePlot.getDrawableElement());\n }\n break;\n case 'bar':\n {\n const barPlot = new BarPlot(\n plot,\n this.boundingRect,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...barPlot.getDrawableElement());\n }\n break;\n }\n }\n return drawableElem;\n }\n}\n\nexport function getPlotComponent(\n chartConfig: XYChartConfig,\n chartData: XYChartData,\n chartThemeConfig: XYChartThemeConfig\n): Plot {\n return new BasePlot(chartConfig, chartData, chartThemeConfig);\n}\n", "import type { SVGGroup } from '../../../diagram-api/types.js';\nimport type { Axis } from './components/axis/index.js';\nimport { getAxis } from './components/axis/index.js';\nimport { getChartTitleComponent } from './components/chartTitle.js';\nimport type { Plot } from './components/plot/index.js';\nimport { getPlotComponent } from './components/plot/index.js';\nimport type {\n ChartComponent,\n DrawableElem,\n XYChartConfig,\n XYChartData,\n XYChartThemeConfig,\n} from './interfaces.js';\nimport { isBarPlot } from './interfaces.js';\n\nexport class Orchestrator {\n private componentStore: {\n title: ChartComponent;\n plot: Plot;\n xAxis: Axis;\n yAxis: Axis;\n };\n constructor(\n private chartConfig: XYChartConfig,\n private chartData: XYChartData,\n chartThemeConfig: XYChartThemeConfig,\n tmpSVGGroup: SVGGroup\n ) {\n this.componentStore = {\n title: getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup),\n plot: getPlotComponent(chartConfig, chartData, chartThemeConfig),\n xAxis: getAxis(\n chartData.xAxis,\n chartConfig.xAxis,\n {\n titleColor: chartThemeConfig.xAxisTitleColor,\n labelColor: chartThemeConfig.xAxisLabelColor,\n tickColor: chartThemeConfig.xAxisTickColor,\n axisLineColor: chartThemeConfig.xAxisLineColor,\n },\n tmpSVGGroup\n ),\n yAxis: getAxis(\n chartData.yAxis,\n chartConfig.yAxis,\n {\n titleColor: chartThemeConfig.yAxisTitleColor,\n labelColor: chartThemeConfig.yAxisLabelColor,\n tickColor: chartThemeConfig.yAxisTickColor,\n axisLineColor: chartThemeConfig.yAxisLineColor,\n },\n tmpSVGGroup\n ),\n };\n }\n\n private calculateVerticalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor((availableWidth * this.chartConfig.plotReservedSpacePercent) / 100);\n let chartHeight = Math.floor(\n (availableHeight * this.chartConfig.plotReservedSpacePercent) / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight,\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight,\n });\n plotY = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition('bottom');\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight,\n });\n availableHeight -= spaceUsed.height;\n this.componentStore.yAxis.setAxisPosition('left');\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight,\n });\n plotX = spaceUsed.width;\n availableWidth -= spaceUsed.width;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight,\n });\n\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.xAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: plotX, y: plotY + chartHeight });\n this.componentStore.yAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n\n private calculateHorizontalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let titleYEnd = 0;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor((availableWidth * this.chartConfig.plotReservedSpacePercent) / 100);\n let chartHeight = Math.floor(\n (availableHeight * this.chartConfig.plotReservedSpacePercent) / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight,\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight,\n });\n titleYEnd = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition('left');\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight,\n });\n availableWidth -= spaceUsed.width;\n plotX = spaceUsed.width;\n this.componentStore.yAxis.setAxisPosition('top');\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight,\n });\n availableHeight -= spaceUsed.height;\n plotY = titleYEnd + spaceUsed.height;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight,\n });\n\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.yAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: plotX, y: titleYEnd });\n this.componentStore.xAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n\n private calculateSpace() {\n if (this.chartConfig.chartOrientation === 'horizontal') {\n this.calculateHorizontalSpace();\n } else {\n this.calculateVerticalSpace();\n }\n }\n\n getDrawableElement() {\n this.calculateSpace();\n const drawableElem: DrawableElem[] = [];\n this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis);\n for (const component of Object.values(this.componentStore)) {\n drawableElem.push(...component.getDrawableElements());\n }\n return drawableElem;\n }\n}\n", "import type { SVGGroup } from '../../../diagram-api/types.js';\nimport type { DrawableElem, XYChartConfig, XYChartData, XYChartThemeConfig } from './interfaces.js';\nimport { Orchestrator } from './orchestrator.js';\n\nexport class XYChartBuilder {\n static build(\n config: XYChartConfig,\n chartData: XYChartData,\n chartThemeConfig: XYChartThemeConfig,\n tmpSVGGroup: SVGGroup\n ): DrawableElem[] {\n const orchestrator = new Orchestrator(config, chartData, chartThemeConfig, tmpSVGGroup);\n return orchestrator.getDrawableElement();\n }\n}\n", "import * as configApi from '../../config.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { SVGGroup } from '../../diagram-api/types.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { sanitizeText } from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport { XYChartBuilder } from './chartBuilder/index.js';\nimport type {\n DrawableElem,\n SimplePlotDataType,\n XYChartConfig,\n XYChartData,\n XYChartThemeConfig,\n} from './chartBuilder/interfaces.js';\nimport { isBandAxisData, isLinearAxisData } from './chartBuilder/interfaces.js';\n\nlet plotIndex = 0;\n\nlet tmpSVGGroup: SVGGroup;\n\nlet xyChartConfig: XYChartConfig = getChartDefaultConfig();\nlet xyChartThemeConfig: XYChartThemeConfig = getChartDefaultThemeConfig();\nlet xyChartData: XYChartData = getChartDefaultData();\nlet plotColorPalette = xyChartThemeConfig.plotColorPalette.split(',').map((color) => color.trim());\nlet hasSetXAxis = false;\nlet hasSetYAxis = false;\n\ninterface NormalTextType {\n type: 'text';\n text: string;\n}\n\nfunction getChartDefaultThemeConfig(): XYChartThemeConfig {\n const defaultThemeVariables = getThemeVariables();\n const config = configApi.getConfig();\n return cleanAndMerge(defaultThemeVariables.xyChart, config.themeVariables.xyChart);\n}\nfunction getChartDefaultConfig(): XYChartConfig {\n const config = configApi.getConfig();\n return cleanAndMerge(\n defaultConfig.xyChart as XYChartConfig,\n config.xyChart as XYChartConfig\n );\n}\n\nfunction getChartDefaultData(): XYChartData {\n return {\n yAxis: {\n type: 'linear',\n title: '',\n min: Infinity,\n max: -Infinity,\n },\n xAxis: {\n type: 'band',\n title: '',\n categories: [],\n },\n title: '',\n plots: [],\n };\n}\n\nfunction textSanitizer(text: string) {\n const config = configApi.getConfig();\n return sanitizeText(text.trim(), config);\n}\n\nfunction setTmpSVGG(SVGG: SVGGroup) {\n tmpSVGGroup = SVGG;\n}\nfunction setOrientation(orientation: string) {\n if (orientation === 'horizontal') {\n xyChartConfig.chartOrientation = 'horizontal';\n } else {\n xyChartConfig.chartOrientation = 'vertical';\n }\n}\nfunction setXAxisTitle(title: NormalTextType) {\n xyChartData.xAxis.title = textSanitizer(title.text);\n}\nfunction setXAxisRangeData(min: number, max: number) {\n xyChartData.xAxis = { type: 'linear', title: xyChartData.xAxis.title, min, max };\n hasSetXAxis = true;\n}\nfunction setXAxisBand(categories: NormalTextType[]) {\n xyChartData.xAxis = {\n type: 'band',\n title: xyChartData.xAxis.title,\n categories: categories.map((c) => textSanitizer(c.text)),\n };\n hasSetXAxis = true;\n}\nfunction setYAxisTitle(title: NormalTextType) {\n xyChartData.yAxis.title = textSanitizer(title.text);\n}\nfunction setYAxisRangeData(min: number, max: number) {\n xyChartData.yAxis = { type: 'linear', title: xyChartData.yAxis.title, min, max };\n hasSetYAxis = true;\n}\n\n// this function does not set `hasSetYAxis` as there can be multiple data so we should calculate the range accordingly\nfunction setYAxisRangeFromPlotData(data: number[]) {\n const minValue = Math.min(...data);\n const maxValue = Math.max(...data);\n const prevMinValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.max : -Infinity;\n xyChartData.yAxis = {\n type: 'linear',\n title: xyChartData.yAxis.title,\n min: Math.min(prevMinValue, minValue),\n max: Math.max(prevMaxValue, maxValue),\n };\n}\n\nfunction transformDataWithoutCategory(data: number[]): SimplePlotDataType {\n let retData: SimplePlotDataType = [];\n if (data.length === 0) {\n return retData;\n }\n if (!hasSetXAxis) {\n const prevMinValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.max : -Infinity;\n setXAxisRangeData(Math.min(prevMinValue, 1), Math.max(prevMaxValue, data.length));\n }\n if (!hasSetYAxis) {\n setYAxisRangeFromPlotData(data);\n }\n\n if (isBandAxisData(xyChartData.xAxis)) {\n retData = xyChartData.xAxis.categories.map((c, i) => [c, data[i]]);\n }\n\n if (isLinearAxisData(xyChartData.xAxis)) {\n const min = xyChartData.xAxis.min;\n const max = xyChartData.xAxis.max;\n const step = (max - min) / (data.length - 1);\n const categories: string[] = [];\n for (let i = min; i <= max; i += step) {\n categories.push(`${i}`);\n }\n retData = categories.map((c, i) => [c, data[i]]);\n }\n\n return retData;\n}\n\nfunction getPlotColorFromPalette(plotIndex: number): string {\n return plotColorPalette[plotIndex === 0 ? 0 : plotIndex % plotColorPalette.length];\n}\n\nfunction setLineData(title: NormalTextType, data: number[]) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: 'line',\n strokeFill: getPlotColorFromPalette(plotIndex),\n strokeWidth: 2,\n data: plotData,\n });\n plotIndex++;\n}\n\nfunction setBarData(title: NormalTextType, data: number[]) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: 'bar',\n fill: getPlotColorFromPalette(plotIndex),\n data: plotData,\n });\n plotIndex++;\n}\n\nfunction getDrawableElem(): DrawableElem[] {\n if (xyChartData.plots.length === 0) {\n throw Error('No Plot to render, please provide a plot with some data');\n }\n xyChartData.title = getDiagramTitle();\n return XYChartBuilder.build(xyChartConfig, xyChartData, xyChartThemeConfig, tmpSVGGroup);\n}\n\nfunction getChartThemeConfig() {\n return xyChartThemeConfig;\n}\n\nfunction getChartConfig() {\n return xyChartConfig;\n}\n\nfunction getXYChartData() {\n return xyChartData;\n}\n\nconst clear = function () {\n commonClear();\n plotIndex = 0;\n xyChartConfig = getChartDefaultConfig();\n xyChartData = getChartDefaultData();\n xyChartThemeConfig = getChartDefaultThemeConfig();\n plotColorPalette = xyChartThemeConfig.plotColorPalette.split(',').map((color) => color.trim());\n hasSetXAxis = false;\n hasSetYAxis = false;\n};\n\nexport default {\n getDrawableElem,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n setOrientation,\n setXAxisTitle,\n setXAxisRangeData,\n setXAxisBand,\n setYAxisTitle,\n setYAxisRangeData,\n setLineData,\n setBarData,\n setTmpSVGG,\n getChartThemeConfig,\n getChartConfig,\n getXYChartData,\n};\n", "import type { Diagram } from '../../Diagram.js';\nimport { log } from '../../logger.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type {\n DrawableElem,\n TextElem,\n TextHorizontalPos,\n TextVerticalPos,\n} from './chartBuilder/interfaces.js';\nimport type XYChartDB from './xychartDb.js';\n\nexport const draw = (txt: string, id: string, _version: string, diagObj: Diagram) => {\n const db = diagObj.db as typeof XYChartDB;\n const themeConfig = db.getChartThemeConfig();\n const chartConfig = db.getChartConfig();\n const labelData = db.getXYChartData().plots[0].data.map((data) => data[1]);\n function getDominantBaseLine(horizontalPos: TextVerticalPos) {\n return horizontalPos === 'top' ? 'text-before-edge' : 'middle';\n }\n\n function getTextAnchor(verticalPos: TextHorizontalPos) {\n return verticalPos === 'left' ? 'start' : verticalPos === 'right' ? 'end' : 'middle';\n }\n\n function getTextTransformation(data: TextElem) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n\n log.debug('Rendering xychart chart\\n' + txt);\n\n const svg = selectSvgElement(id);\n const group = svg.append('g').attr('class', 'main');\n const background = group\n .append('rect')\n .attr('width', chartConfig.width)\n .attr('height', chartConfig.height)\n .attr('class', 'background');\n\n // @ts-ignore: TODO Fix ts errors\n configureSvgSize(svg, chartConfig.height, chartConfig.width, true);\n\n svg.attr('viewBox', `0 0 ${chartConfig.width} ${chartConfig.height}`);\n\n background.attr('fill', themeConfig.backgroundColor);\n\n db.setTmpSVGG(svg.append('g').attr('class', 'mermaid-tmp-group'));\n\n const shapes: DrawableElem[] = db.getDrawableElem();\n\n const groups: Record = {};\n\n interface BarItem {\n data: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n label: string;\n }\n\n function getGroup(gList: string[]) {\n let elem = group;\n let prefix = '';\n for (const [i] of gList.entries()) {\n let parent = group;\n if (i > 0 && groups[prefix]) {\n parent = groups[prefix];\n }\n prefix += gList[i];\n elem = groups[prefix];\n if (!elem) {\n elem = groups[prefix] = parent.append('g').attr('class', gList[i]);\n }\n }\n return elem;\n }\n\n for (const shape of shapes) {\n if (shape.data.length === 0) {\n continue;\n }\n\n const shapeGroup = getGroup(shape.groupTexts);\n\n switch (shape.type) {\n case 'rect':\n shapeGroup\n .selectAll('rect')\n .data(shape.data)\n .enter()\n .append('rect')\n .attr('x', (data) => data.x)\n .attr('y', (data) => data.y)\n .attr('width', (data) => data.width)\n .attr('height', (data) => data.height)\n .attr('fill', (data) => data.fill)\n .attr('stroke', (data) => data.strokeFill)\n .attr('stroke-width', (data) => data.strokeWidth);\n\n if (chartConfig.showDataLabel) {\n if (chartConfig.chartOrientation === 'horizontal') {\n // Factor to approximate each character's width.\n const charWidthFactor = 0.7;\n\n // Filter out bars that have zero width or height.\n const validItems = shape.data\n .map((d, i) => ({ data: d, label: labelData[i].toString() }))\n .filter((item) => item.data.width > 0 && item.data.height > 0);\n\n // Helper function to check if the text fits horizontally with a 10px right margin.\n function fitsHorizontally(item: BarItem, fontSize: number): boolean {\n const { data, label } = item;\n // Approximate the text width.\n const textWidth: number = fontSize * label.length * charWidthFactor;\n // The available width is the bar's width minus a 10px right margin.\n return textWidth <= data.width - 10;\n }\n\n // For each valid bar, start with an initial candidate font size (70% of the bar's height),\n // then reduce it until the text fits horizontally.\n const candidateFontSizes = validItems.map((item) => {\n const { data } = item;\n let fontSize = data.height * 0.7;\n // Decrease fontSize until the text fits horizontally.\n while (!fitsHorizontally(item, fontSize) && fontSize > 0) {\n fontSize -= 1;\n }\n return fontSize;\n });\n\n // Choose the smallest candidate font size across all valid bars for uniformity.\n const uniformFontSize = Math.floor(Math.min(...candidateFontSizes));\n\n shapeGroup\n .selectAll('text')\n .data(validItems)\n .enter()\n .append('text')\n .attr('x', (item) => item.data.x + item.data.width - 10)\n .attr('y', (item) => item.data.y + item.data.height / 2)\n .attr('text-anchor', 'end')\n .attr('dominant-baseline', 'middle')\n .attr('fill', 'black')\n .attr('font-size', `${uniformFontSize}px`)\n .text((item) => item.label);\n } else {\n const yOffset = 10;\n\n // filter out bars that have zero width or height.\n const validItems = shape.data\n .map((d, i) => ({ data: d, label: labelData[i].toString() }))\n .filter((item) => item.data.width > 0 && item.data.height > 0);\n\n // Helper function that checks if the text with a given fontSize fits within the bar boundaries.\n function fitsInBar(item: BarItem, fontSize: number, yOffset: number): boolean {\n const { data, label } = item;\n const charWidthFactor = 0.7;\n const textWidth = fontSize * label.length * charWidthFactor;\n\n // Compute horizontal boundaries using the center.\n const centerX = data.x + data.width / 2;\n const leftEdge = centerX - textWidth / 2;\n const rightEdge = centerX + textWidth / 2;\n\n // Check that text doesn't overflow horizontally.\n const horizontalFits = leftEdge >= data.x && rightEdge <= data.x + data.width;\n\n // For vertical placement, we use 'dominant-baseline: hanging' so that y marks the top of the text.\n // Thus, the bottom edge is y + yOffset + fontSize.\n const verticalFits = data.y + yOffset + fontSize <= data.y + data.height;\n\n return horizontalFits && verticalFits;\n }\n\n // For each valid item, start with a candidate font size based on the width,\n // then reduce it until the text fits within both the horizontal and vertical boundaries.\n const candidateFontSizes = validItems.map((item) => {\n const { data, label } = item;\n let fontSize = data.width / (label.length * 0.7);\n\n // Decrease the font size until the text fits or fontSize reaches 0.\n while (!fitsInBar(item, fontSize, yOffset) && fontSize > 0) {\n fontSize -= 1;\n }\n return fontSize;\n });\n\n // Choose the smallest candidate across all valid bars for uniformity.\n const uniformFontSize = Math.floor(Math.min(...candidateFontSizes));\n\n // Render text only for valid items.\n shapeGroup\n .selectAll('text')\n .data(validItems)\n .enter()\n .append('text')\n .attr('x', (item) => item.data.x + item.data.width / 2)\n .attr('y', (item) => item.data.y + yOffset)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'hanging')\n .attr('fill', 'black')\n .attr('font-size', `${uniformFontSize}px`)\n .text((item) => item.label);\n }\n }\n break;\n case 'text':\n shapeGroup\n .selectAll('text')\n .data(shape.data)\n .enter()\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .attr('fill', (data) => data.fill)\n .attr('font-size', (data) => data.fontSize)\n .attr('dominant-baseline', (data) => getDominantBaseLine(data.verticalPos))\n .attr('text-anchor', (data) => getTextAnchor(data.horizontalPos))\n .attr('transform', (data) => getTextTransformation(data))\n .text((data) => data.text);\n break;\n case 'path':\n shapeGroup\n .selectAll('path')\n .data(shape.data)\n .enter()\n .append('path')\n .attr('d', (data) => data.path)\n .attr('fill', (data) => (data.fill ? data.fill : 'none'))\n .attr('stroke', (data) => data.strokeFill)\n .attr('stroke-width', (data) => data.strokeWidth);\n break;\n }\n }\n};\n\nexport default {\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: Jison doesn't support types.\nimport parser from './parser/xychart.jison';\nimport db from './xychartDb.js';\nimport renderer from './xychartRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n};\n"], - "mappings": "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", - "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "xychart_default", "parser", "isBarPlot", "data", "__name", "isBandAxisData", "isLinearAxisData", "TextDimensionCalculatorWithFont", "parentGroup", "__name", "texts", "fontSize", "acc", "cur", "dimension", "elem", "t", "bbox", "computeDimensionOfText", "width", "height", "BaseAxis", "axisConfig", "title", "textDimensionCalculator", "axisThemeConfig", "__name", "range", "axisPosition", "tick", "availableSpace", "availableHeight", "spaceRequired", "maxPadding", "heightRequired", "availableWidth", "widthRequired", "point", "drawableElement", "x", "y", "BandAxis", "BaseAxis", "__name", "axisConfig", "axisThemeConfig", "categories", "title", "textDimensionCalculator", "band", "range", "log", "value", "LinearAxis", "BaseAxis", "__name", "axisConfig", "axisThemeConfig", "domain", "title", "textDimensionCalculator", "linear", "value", "getAxis", "data", "axisConfig", "axisThemeConfig", "tmpSVGGroup", "textDimensionCalculator", "TextDimensionCalculatorWithFont", "isBandAxisData", "BandAxis", "LinearAxis", "__name", "ChartTitle", "textDimensionCalculator", "chartConfig", "chartData", "chartThemeConfig", "__name", "point", "availableSpace", "titleDimension", "widthRequired", "heightRequired", "drawableElem", "getChartTitleComponent", "tmpSVGGroup", "TextDimensionCalculatorWithFont", "LinePlot", "plotData", "xAxis", "yAxis", "orientation", "plotIndex", "__name", "finalData", "d", "path", "line_default", "BarPlot", "barData", "boundingRect", "xAxis", "yAxis", "orientation", "plotIndex", "__name", "finalData", "d", "barWidth", "barWidthHalf", "data", "BasePlot", "chartConfig", "chartData", "chartThemeConfig", "__name", "xAxis", "yAxis", "point", "availableSpace", "drawableElem", "i", "plot", "linePlot", "LinePlot", "barPlot", "BarPlot", "getPlotComponent", "Orchestrator", "chartConfig", "chartData", "chartThemeConfig", "tmpSVGGroup", "getChartTitleComponent", "getPlotComponent", "getAxis", "__name", "availableWidth", "availableHeight", "plotX", "plotY", "chartWidth", "chartHeight", "spaceUsed", "p", "isBarPlot", "titleYEnd", "drawableElem", "component", "XYChartBuilder", "__name", "config", "chartData", "chartThemeConfig", "tmpSVGGroup", "Orchestrator", "plotIndex", "tmpSVGGroup", "xyChartConfig", "getChartDefaultConfig", "xyChartThemeConfig", "getChartDefaultThemeConfig", "xyChartData", "getChartDefaultData", "plotColorPalette", "color", "hasSetXAxis", "hasSetYAxis", "defaultThemeVariables", "getThemeVariables", "config", "getConfig", "cleanAndMerge", "__name", "defaultConfig_default", "textSanitizer", "text", "sanitizeText", "setTmpSVGG", "SVGG", "setOrientation", "orientation", "setXAxisTitle", "title", "setXAxisRangeData", "min", "max", "setXAxisBand", "categories", "c", "setYAxisTitle", "setYAxisRangeData", "setYAxisRangeFromPlotData", "data", "minValue", "maxValue", "prevMinValue", "isLinearAxisData", "prevMaxValue", "transformDataWithoutCategory", "retData", "isBandAxisData", "i", "step", "getPlotColorFromPalette", "setLineData", "plotData", "setBarData", "getDrawableElem", "getDiagramTitle", "XYChartBuilder", "getChartThemeConfig", "getChartConfig", "getXYChartData", "clear", "xychartDb_default", "setAccTitle", "getAccTitle", "setDiagramTitle", "getAccDescription", "setAccDescription", "draw", "__name", "txt", "id", "_version", "diagObj", "db", "themeConfig", "chartConfig", "labelData", "data", "getDominantBaseLine", "horizontalPos", "getTextAnchor", "verticalPos", "getTextTransformation", "log", "svg", "selectSvgElement", "group", "background", "configureSvgSize", "shapes", "groups", "getGroup", "gList", "elem", "prefix", "i", "parent", "shape", "shapeGroup", "fitsHorizontally", "item", "fontSize", "label", "charWidthFactor", "validItems", "d", "candidateFontSizes", "uniformFontSize", "fitsInBar", "yOffset", "textWidth", "centerX", "leftEdge", "rightEdge", "horizontalFits", "verticalFits", "xychartRenderer_default", "diagram", "xychart_default", "xychartDb_default", "xychartRenderer_default"] + "sourcesContent": ["/* 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,10,12,14,16,18,19,21,23],$V1=[2,6],$V2=[1,3],$V3=[1,5],$V4=[1,6],$V5=[1,7],$V6=[1,5,10,12,14,16,18,19,21,23,34,35,36],$V7=[1,25],$V8=[1,26],$V9=[1,28],$Va=[1,29],$Vb=[1,30],$Vc=[1,31],$Vd=[1,32],$Ve=[1,33],$Vf=[1,34],$Vg=[1,35],$Vh=[1,36],$Vi=[1,37],$Vj=[1,43],$Vk=[1,42],$Vl=[1,47],$Vm=[1,50],$Vn=[1,10,12,14,16,18,19,21,23,34,35,36],$Vo=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],$Vp=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],$Vq=[1,64];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"XYCHART\":5,\"chartConfig\":6,\"document\":7,\"CHART_ORIENTATION\":8,\"statement\":9,\"title\":10,\"text\":11,\"X_AXIS\":12,\"parseXAxis\":13,\"Y_AXIS\":14,\"parseYAxis\":15,\"LINE\":16,\"plotData\":17,\"BAR\":18,\"acc_title\":19,\"acc_title_value\":20,\"acc_descr\":21,\"acc_descr_value\":22,\"acc_descr_multiline_value\":23,\"SQUARE_BRACES_START\":24,\"commaSeparatedNumbers\":25,\"SQUARE_BRACES_END\":26,\"NUMBER_WITH_DECIMAL\":27,\"COMMA\":28,\"xAxisData\":29,\"bandData\":30,\"ARROW_DELIMITER\":31,\"commaSeparatedTexts\":32,\"yAxisData\":33,\"NEWLINE\":34,\"SEMI\":35,\"EOF\":36,\"alphaNum\":37,\"STR\":38,\"MD_STR\":39,\"alphaNumToken\":40,\"AMP\":41,\"NUM\":42,\"ALPHA\":43,\"PLUS\":44,\"EQUALS\":45,\"MULT\":46,\"DOT\":47,\"BRKT\":48,\"MINUS\":49,\"UNDERSCORE\":50,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"XYCHART\",8:\"CHART_ORIENTATION\",10:\"title\",12:\"X_AXIS\",14:\"Y_AXIS\",16:\"LINE\",18:\"BAR\",19:\"acc_title\",20:\"acc_title_value\",21:\"acc_descr\",22:\"acc_descr_value\",23:\"acc_descr_multiline_value\",24:\"SQUARE_BRACES_START\",26:\"SQUARE_BRACES_END\",27:\"NUMBER_WITH_DECIMAL\",28:\"COMMA\",31:\"ARROW_DELIMITER\",34:\"NEWLINE\",35:\"SEMI\",36:\"EOF\",38:\"STR\",39:\"MD_STR\",41:\"AMP\",42:\"NUM\",43:\"ALPHA\",44:\"PLUS\",45:\"EQUALS\",46:\"MULT\",47:\"DOT\",48:\"BRKT\",49:\"MINUS\",50:\"UNDERSCORE\"},\nproductions_: [0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,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.setOrientation($$[$0]); \nbreak;\ncase 9:\n yy.setDiagramTitle($$[$0].text.trim()); \nbreak;\ncase 12:\n yy.setLineData({text: '', type: 'text'}, $$[$0]); \nbreak;\ncase 13:\n yy.setLineData($$[$0-1], $$[$0]); \nbreak;\ncase 14:\n yy.setBarData({text: '', type: 'text'}, $$[$0]); \nbreak;\ncase 15:\n yy.setBarData($$[$0-1], $$[$0]); \nbreak;\ncase 16:\n this.$=$$[$0].trim();yy.setAccTitle(this.$); \nbreak;\ncase 17: case 18:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 19:\n this.$ = $$[$0-1] \nbreak;\ncase 20:\n this.$ = [Number($$[$0-2]), ...$$[$0]] \nbreak;\ncase 21:\n this.$ = [Number($$[$0])] \nbreak;\ncase 22:\nyy.setXAxisTitle($$[$0]);\nbreak;\ncase 23:\nyy.setXAxisTitle($$[$0-1]);\nbreak;\ncase 24:\nyy.setXAxisTitle({type: 'text', text: ''});\nbreak;\ncase 25:\nyy.setXAxisBand($$[$0]);\nbreak;\ncase 26:\nyy.setXAxisRangeData(Number($$[$0-2]), Number($$[$0]));\nbreak;\ncase 27:\nthis.$ = $$[$0-1]\nbreak;\ncase 28:\n this.$ = [$$[$0-2], ...$$[$0]] \nbreak;\ncase 29:\n this.$ = [$$[$0]] \nbreak;\ncase 30:\nyy.setYAxisTitle($$[$0]);\nbreak;\ncase 31:\nyy.setYAxisTitle($$[$0-1]);\nbreak;\ncase 32:\nyy.setYAxisTitle({type: \"text\", text: \"\"});\nbreak;\ncase 33:\nyy.setYAxisRangeData(Number($$[$0-2]), Number($$[$0]));\nbreak;\ncase 37:\n this.$={text:$$[$0], type: 'text'};\nbreak;\ncase 38:\n this.$={text: $$[$0], type: 'text'};\nbreak;\ncase 39:\n this.$={text: $$[$0], type: 'markdown'};\nbreak;\ncase 40:\nthis.$=$$[$0];\nbreak;\ncase 41:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\n}\n},\ntable: [o($V0,$V1,{3:1,4:2,7:4,5:$V2,34:$V3,35:$V4,36:$V5}),{1:[3]},o($V0,$V1,{4:2,7:4,3:8,5:$V2,34:$V3,35:$V4,36:$V5}),o($V0,$V1,{4:2,7:4,6:9,3:10,5:$V2,8:[1,11],34:$V3,35:$V4,36:$V5}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},o($V6,[2,34]),o($V6,[2,35]),o($V6,[2,36]),{1:[2,1]},o($V0,$V1,{4:2,7:4,3:21,5:$V2,34:$V3,35:$V4,36:$V5}),{1:[2,3]},o($V6,[2,5]),o($V0,[2,7],{4:22,34:$V3,35:$V4,36:$V5}),{11:23,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{11:39,13:38,24:$Vj,27:$Vk,29:40,30:41,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{11:45,15:44,27:$Vl,33:46,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{11:49,17:48,24:$Vm,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{11:52,17:51,24:$Vm,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},{20:[1,53]},{22:[1,54]},o($Vn,[2,18]),{1:[2,2]},o($Vn,[2,8]),o($Vn,[2,9]),o($Vo,[2,37],{40:55,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi}),o($Vo,[2,38]),o($Vo,[2,39]),o($Vp,[2,40]),o($Vp,[2,42]),o($Vp,[2,43]),o($Vp,[2,44]),o($Vp,[2,45]),o($Vp,[2,46]),o($Vp,[2,47]),o($Vp,[2,48]),o($Vp,[2,49]),o($Vp,[2,50]),o($Vp,[2,51]),o($Vn,[2,10]),o($Vn,[2,22],{30:41,29:56,24:$Vj,27:$Vk}),o($Vn,[2,24]),o($Vn,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},o($Vn,[2,11]),o($Vn,[2,30],{33:60,27:$Vl}),o($Vn,[2,32]),{31:[1,61]},o($Vn,[2,12]),{17:62,24:$Vm},{25:63,27:$Vq},o($Vn,[2,14]),{17:65,24:$Vm},o($Vn,[2,16]),o($Vn,[2,17]),o($Vp,[2,41]),o($Vn,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},o($Vn,[2,31]),{27:[1,69]},o($Vn,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},o($Vn,[2,15]),o($Vn,[2,26]),o($Vn,[2,27]),{11:59,32:72,37:24,38:$V7,39:$V8,40:27,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,46:$Ve,47:$Vf,48:$Vg,49:$Vh,50:$Vi},o($Vn,[2,33]),o($Vn,[2,19]),{25:73,27:$Vq},{26:[2,28]},{26:[2,20]}],\ndefaultActions: {8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},\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\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:/* skip comments */\nbreak;\ncase 1:/* skip comments */\nbreak;\ncase 2: this.popState(); return 34; \nbreak;\ncase 3: this.popState(); return 34; \nbreak;\ncase 4:return 34;\nbreak;\ncase 5:/* do nothing */\nbreak;\ncase 6: return 10; \nbreak;\ncase 7: this.pushState(\"acc_title\");return 19; \nbreak;\ncase 8: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 9: this.pushState(\"acc_descr\");return 21; \nbreak;\ncase 10: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 11: this.pushState(\"acc_descr_multiline\");\nbreak;\ncase 12: this.popState(); \nbreak;\ncase 13: return \"acc_descr_multiline_value\"; \nbreak;\ncase 14:return 5;\nbreak;\ncase 15:return 5;\nbreak;\ncase 16:return 8\nbreak;\ncase 17: this.pushState(\"axis_data\"); return \"X_AXIS\"; \nbreak;\ncase 18: this.pushState(\"axis_data\"); return \"Y_AXIS\"; \nbreak;\ncase 19: this.pushState(\"axis_band_data\"); return 24; \nbreak;\ncase 20: return 31; \nbreak;\ncase 21: this.pushState(\"data\"); return 16; \nbreak;\ncase 22: this.pushState(\"data\"); return 18; \nbreak;\ncase 23: this.pushState(\"data_inner\"); return 24; \nbreak;\ncase 24: return 27; \nbreak;\ncase 25: this.popState(); return 26; \nbreak;\ncase 26: this.popState(); \nbreak;\ncase 27:this.pushState(\"string\");\nbreak;\ncase 28:this.popState();\nbreak;\ncase 29:return \"STR\";\nbreak;\ncase 30:return 24\nbreak;\ncase 31:return 26\nbreak;\ncase 32:return 43;\nbreak;\ncase 33:return 'COLON';\nbreak;\ncase 34:return 44;\nbreak;\ncase 35:return 28;\nbreak;\ncase 36:return 45;\nbreak;\ncase 37:return 46;\nbreak;\ncase 38:return 48;\nbreak;\ncase 39:return 50;\nbreak;\ncase 40:return 47;\nbreak;\ncase 41:return 41;\nbreak;\ncase 42:return 49;\nbreak;\ncase 43:return 42;\nbreak;\ncase 44:/* skip */\nbreak;\ncase 45:return 35;\nbreak;\ncase 46:return 36;\nbreak;\n}\n},\nrules: [/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:(\\r?\\n))/i,/^(?:(\\r?\\n))/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:title\\b)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:\\})/i,/^(?:[^\\}]*)/i,/^(?:xychart-beta\\b)/i,/^(?:xychart\\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\\b)/i,/^(?:y-axis\\b)/i,/^(?:\\[)/i,/^(?:-->)/i,/^(?:line\\b)/i,/^(?:bar\\b)/i,/^(?:\\[)/i,/^(?:[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+))/i,/^(?:\\])/i,/^(?:(?:`\\) \\{ this\\.pushState\\(md_string\\); \\}\\n\\(\\?:\\(\\?!`\"\\)\\.\\)\\+ \\{ return MD_STR; \\}\\n\\(\\?:`))/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:\\[)/i,/^(?:\\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\\*)/i,/^(?:#)/i,/^(?:[\\_])/i,/^(?:\\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\\s+)/i,/^(?:;)/i,/^(?:$)/i],\nconditions: {\"data_inner\":{\"rules\":[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true},\"data\":{\"rules\":[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true},\"axis_band_data\":{\"rules\":[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true},\"axis_data\":{\"rules\":[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":true},\"acc_descr_multiline\":{\"rules\":[12,13],\"inclusive\":false},\"acc_descr\":{\"rules\":[10],\"inclusive\":false},\"acc_title\":{\"rules\":[8],\"inclusive\":false},\"title\":{\"rules\":[],\"inclusive\":false},\"md_string\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[28,29],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],\"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\tparser.parser = parser;\n\texport { parser };\n\texport default parser;\n\t", "export interface XYChartAxisThemeConfig {\n titleColor: string;\n labelColor: string;\n tickColor: string;\n axisLineColor: string;\n}\n\nexport interface XYChartThemeConfig {\n backgroundColor: string;\n titleColor: string;\n dataLabelColor: string;\n xAxisLabelColor: string;\n xAxisTitleColor: string;\n xAxisTickColor: string;\n xAxisLineColor: string;\n yAxisLabelColor: string;\n yAxisTitleColor: string;\n yAxisTickColor: string;\n yAxisLineColor: string;\n plotColorPalette: string;\n}\n\nexport interface ChartComponent {\n calculateSpace(availableSpace: Dimension): Dimension;\n setBoundingBoxXY(point: Point): void;\n getDrawableElements(): DrawableElem[];\n}\n\nexport type SimplePlotDataType = [string, number][];\n\nexport interface LinePlotData {\n type: 'line';\n strokeFill: string;\n strokeWidth: number;\n data: SimplePlotDataType;\n}\n\nexport interface BarPlotData {\n type: 'bar';\n fill: string;\n data: SimplePlotDataType;\n}\n\nexport type PlotData = LinePlotData | BarPlotData;\n\nexport function isBarPlot(data: PlotData): data is BarPlotData {\n return data.type === 'bar';\n}\n\nexport interface BandAxisDataType {\n type: 'band';\n title: string;\n categories: string[];\n}\n\nexport interface LinearAxisDataType {\n type: 'linear';\n title: string;\n min: number;\n max: number;\n}\n\nexport type AxisDataType = LinearAxisDataType | BandAxisDataType;\n\nexport function isBandAxisData(data: AxisDataType): data is BandAxisDataType {\n return data.type === 'band';\n}\n\nexport function isLinearAxisData(data: AxisDataType): data is LinearAxisDataType {\n return data.type === 'linear';\n}\n\n/**\n * For now we are keeping this configs as we are removing the required fields while generating the config.type.ts file\n * we should remove `XYChartAxisConfig` and `XYChartConfig` after we started using required fields\n */\nexport interface XYChartAxisConfig {\n showLabel: boolean;\n labelFontSize: number;\n labelPadding: number;\n showTitle: boolean;\n titleFontSize: number;\n titlePadding: number;\n showTick: boolean;\n tickLength: number;\n tickWidth: number;\n showAxisLine: boolean;\n axisLineWidth: number;\n}\n\nexport interface XYChartConfig {\n width: number;\n height: number;\n titleFontSize: number;\n titlePadding: number;\n showTitle: boolean;\n showDataLabel: boolean;\n showDataLabelOutsideBar: boolean;\n xAxis: XYChartAxisConfig;\n yAxis: XYChartAxisConfig;\n chartOrientation: 'vertical' | 'horizontal';\n plotReservedSpacePercent: number;\n}\n\nexport interface XYChartData {\n xAxis: AxisDataType;\n yAxis: AxisDataType;\n title: string;\n plots: PlotData[];\n}\n\nexport interface Dimension {\n width: number;\n height: number;\n}\n\nexport interface BoundingRect extends Point, Dimension {}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport type TextHorizontalPos = 'left' | 'center' | 'right';\nexport type TextVerticalPos = 'top' | 'middle';\n\nexport interface RectElem extends Point {\n width: number;\n height: number;\n fill: string;\n strokeWidth: number;\n strokeFill: string;\n}\n\nexport interface TextElem extends Point {\n text: string;\n fill: string;\n verticalPos: TextVerticalPos;\n horizontalPos: TextHorizontalPos;\n fontSize: number;\n rotation: number;\n}\n\nexport interface PathElem {\n path: string;\n fill?: string;\n strokeWidth: number;\n strokeFill: string;\n}\n\nexport type DrawableElem =\n | {\n groupTexts: string[];\n type: 'rect';\n data: RectElem[];\n }\n | {\n groupTexts: string[];\n type: 'text';\n data: TextElem[];\n }\n | {\n groupTexts: string[];\n type: 'path';\n data: PathElem[];\n };\n", "import type { SVGGroup } from '../../../diagram-api/types.js';\nimport { computeDimensionOfText } from '../../../rendering-util/createText.js';\nimport type { Dimension } from './interfaces.js';\n\nexport interface TextDimensionCalculator {\n getMaxDimension(texts: string[], fontSize: number): Dimension;\n}\n\nexport class TextDimensionCalculatorWithFont implements TextDimensionCalculator {\n constructor(private parentGroup: SVGGroup) {}\n getMaxDimension(texts: string[], fontSize: number): Dimension {\n if (!this.parentGroup) {\n return {\n width: texts.reduce((acc, cur) => Math.max(cur.length, acc), 0) * fontSize,\n height: fontSize,\n };\n }\n\n const dimension: Dimension = {\n width: 0,\n height: 0,\n };\n\n const elem = this.parentGroup\n .append('g')\n .attr('visibility', 'hidden')\n .attr('font-size', fontSize);\n\n for (const t of texts) {\n const bbox = computeDimensionOfText(elem, 1, t);\n const width = bbox ? bbox.width : t.length * fontSize;\n const height = bbox ? bbox.height : fontSize;\n dimension.width = Math.max(dimension.width, width);\n dimension.height = Math.max(dimension.height, height);\n }\n elem.remove();\n return dimension;\n }\n}\n", "import type {\n BoundingRect,\n Dimension,\n DrawableElem,\n Point,\n XYChartAxisConfig,\n XYChartAxisThemeConfig,\n} from '../../interfaces.js';\nimport type { TextDimensionCalculator } from '../../textDimensionCalculator.js';\nimport type { Axis, AxisPosition } from './index.js';\n\nconst BAR_WIDTH_TO_TICK_WIDTH_RATIO = 0.7;\nconst MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL = 0.2;\n\nexport abstract class BaseAxis implements Axis {\n protected boundingRect: BoundingRect = { x: 0, y: 0, width: 0, height: 0 };\n protected axisPosition: AxisPosition = 'left';\n private range: [number, number];\n protected showTitle = false;\n protected showLabel = false;\n protected showTick = false;\n protected showAxisLine = false;\n protected outerPadding = 0;\n protected titleTextHeight = 0;\n protected labelTextHeight = 0;\n\n constructor(\n protected axisConfig: XYChartAxisConfig,\n protected title: string,\n protected textDimensionCalculator: TextDimensionCalculator,\n protected axisThemeConfig: XYChartAxisThemeConfig\n ) {\n this.range = [0, 10];\n this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };\n this.axisPosition = 'left';\n }\n\n setRange(range: [number, number]): void {\n this.range = range;\n if (this.axisPosition === 'left' || this.axisPosition === 'right') {\n this.boundingRect.height = range[1] - range[0];\n } else {\n this.boundingRect.width = range[1] - range[0];\n }\n this.recalculateScale();\n }\n\n getRange(): [number, number] {\n return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding];\n }\n\n setAxisPosition(axisPosition: AxisPosition): void {\n this.axisPosition = axisPosition;\n this.setRange(this.range);\n }\n\n abstract getScaleValue(value: number | string): number;\n\n abstract recalculateScale(): void;\n\n abstract getTickValues(): (string | number)[];\n\n getTickDistance(): number {\n const range = this.getRange();\n return Math.abs(range[0] - range[1]) / this.getTickValues().length;\n }\n\n getAxisOuterPadding(): number {\n return this.outerPadding;\n }\n\n private getLabelDimension(): Dimension {\n return this.textDimensionCalculator.getMaxDimension(\n this.getTickValues().map((tick) => tick.toString()),\n this.axisConfig.labelFontSize\n );\n }\n\n recalculateOuterPaddingToDrawBar(): void {\n if (BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() > this.outerPadding * 2) {\n this.outerPadding = Math.floor((BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance()) / 2);\n }\n this.recalculateScale();\n }\n\n private calculateSpaceIfDrawnHorizontally(availableSpace: Dimension) {\n let availableHeight = availableSpace.height;\n if (this.axisConfig.showAxisLine && availableHeight > this.axisConfig.axisLineWidth) {\n availableHeight -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.width;\n this.outerPadding = Math.min(spaceRequired.width / 2, maxPadding);\n\n const heightRequired = spaceRequired.height + this.axisConfig.labelPadding * 2;\n this.labelTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableHeight >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableHeight -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const heightRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height - availableHeight;\n }\n\n private calculateSpaceIfDrawnVertical(availableSpace: Dimension) {\n let availableWidth = availableSpace.width;\n if (this.axisConfig.showAxisLine && availableWidth > this.axisConfig.axisLineWidth) {\n availableWidth -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.height;\n this.outerPadding = Math.min(spaceRequired.height / 2, maxPadding);\n const widthRequired = spaceRequired.width + this.axisConfig.labelPadding * 2;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableWidth >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableWidth -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const widthRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width - availableWidth;\n this.boundingRect.height = availableSpace.height;\n }\n\n calculateSpace(availableSpace: Dimension): Dimension {\n if (this.axisPosition === 'left' || this.axisPosition === 'right') {\n this.calculateSpaceIfDrawnVertical(availableSpace);\n } else {\n this.calculateSpaceIfDrawnHorizontally(availableSpace);\n }\n this.recalculateScale();\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height,\n };\n }\n\n setBoundingBoxXY(point: Point): void {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n\n private getDrawableElementsForLeftAxis(): DrawableElem[] {\n const drawableElement: DrawableElem[] = [];\n if (this.showAxisLine) {\n const x = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: 'path',\n groupTexts: ['left-axis', 'axisl-line'],\n data: [\n {\n path: `M ${x},${this.boundingRect.y} L ${x},${\n this.boundingRect.y + this.boundingRect.height\n } `,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth,\n },\n ],\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['left-axis', 'label'],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x:\n this.boundingRect.x +\n this.boundingRect.width -\n (this.showLabel ? this.axisConfig.labelPadding : 0) -\n (this.showTick ? this.axisConfig.tickLength : 0) -\n (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n y: this.getScaleValue(tick),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: 'middle',\n horizontalPos: 'right',\n })),\n });\n }\n if (this.showTick) {\n const x =\n this.boundingRect.x +\n this.boundingRect.width -\n (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: 'path',\n groupTexts: ['left-axis', 'ticks'],\n data: this.getTickValues().map((tick) => ({\n path: `M ${x},${this.getScaleValue(tick)} L ${\n x - this.axisConfig.tickLength\n },${this.getScaleValue(tick)}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth,\n })),\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['left-axis', 'title'],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.axisConfig.titlePadding,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 270,\n verticalPos: 'top',\n horizontalPos: 'center',\n },\n ],\n });\n }\n return drawableElement;\n }\n private getDrawableElementsForBottomAxis(): DrawableElem[] {\n const drawableElement: DrawableElem[] = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: 'path',\n groupTexts: ['bottom-axis', 'axis-line'],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${\n this.boundingRect.x + this.boundingRect.width\n },${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth,\n },\n ],\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['bottom-axis', 'label'],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y:\n this.boundingRect.y +\n this.axisConfig.labelPadding +\n (this.showTick ? this.axisConfig.tickLength : 0) +\n (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: 'top',\n horizontalPos: 'center',\n })),\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: 'path',\n groupTexts: ['bottom-axis', 'ticks'],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${y} L ${this.getScaleValue(tick)},${\n y + this.axisConfig.tickLength\n }`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth,\n })),\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['bottom-axis', 'title'],\n data: [\n {\n text: this.title,\n x: this.range[0] + (this.range[1] - this.range[0]) / 2,\n y:\n this.boundingRect.y +\n this.boundingRect.height -\n this.axisConfig.titlePadding -\n this.titleTextHeight,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: 'top',\n horizontalPos: 'center',\n },\n ],\n });\n }\n return drawableElement;\n }\n private getDrawableElementsForTopAxis(): DrawableElem[] {\n const drawableElement: DrawableElem[] = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: 'path',\n groupTexts: ['top-axis', 'axis-line'],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${\n this.boundingRect.x + this.boundingRect.width\n },${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth,\n },\n ],\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['top-axis', 'label'],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y:\n this.boundingRect.y +\n (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) +\n this.axisConfig.labelPadding,\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: 'top',\n horizontalPos: 'center',\n })),\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y;\n drawableElement.push({\n type: 'path',\n groupTexts: ['top-axis', 'ticks'],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${\n y + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)\n } L ${this.getScaleValue(tick)},${\n y +\n this.boundingRect.height -\n this.axisConfig.tickLength -\n (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)\n }`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth,\n })),\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: 'text',\n groupTexts: ['top-axis', 'title'],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.axisConfig.titlePadding,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: 'top',\n horizontalPos: 'center',\n },\n ],\n });\n }\n return drawableElement;\n }\n\n getDrawableElements(): DrawableElem[] {\n if (this.axisPosition === 'left') {\n return this.getDrawableElementsForLeftAxis();\n }\n if (this.axisPosition === 'right') {\n throw Error('Drawing of right axis is not implemented');\n }\n if (this.axisPosition === 'bottom') {\n return this.getDrawableElementsForBottomAxis();\n }\n if (this.axisPosition === 'top') {\n return this.getDrawableElementsForTopAxis();\n }\n return [];\n }\n}\n", "import type { ScaleBand } from 'd3';\nimport { scaleBand } from 'd3';\nimport { log } from '../../../../../logger.js';\nimport type { TextDimensionCalculator } from '../../textDimensionCalculator.js';\nimport { BaseAxis } from './baseAxis.js';\nimport type { XYChartAxisThemeConfig, XYChartAxisConfig } from '../../interfaces.js';\n\nexport class BandAxis extends BaseAxis {\n private scale: ScaleBand;\n private categories: string[];\n\n constructor(\n axisConfig: XYChartAxisConfig,\n axisThemeConfig: XYChartAxisThemeConfig,\n categories: string[],\n title: string,\n textDimensionCalculator: TextDimensionCalculator\n ) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.categories = categories;\n this.scale = scaleBand().domain(this.categories).range(this.getRange());\n }\n\n setRange(range: [number, number]): void {\n super.setRange(range);\n }\n\n recalculateScale(): void {\n this.scale = scaleBand()\n .domain(this.categories)\n .range(this.getRange())\n .paddingInner(1)\n .paddingOuter(0)\n .align(0.5);\n log.trace('BandAxis axis final categories, range: ', this.categories, this.getRange());\n }\n\n getTickValues(): (string | number)[] {\n return this.categories;\n }\n\n getScaleValue(value: string): number {\n return this.scale(value) ?? this.getRange()[0];\n }\n}\n", "import type { ScaleLinear } from 'd3';\nimport { scaleLinear } from 'd3';\nimport type { TextDimensionCalculator } from '../../textDimensionCalculator.js';\nimport { BaseAxis } from './baseAxis.js';\nimport type { XYChartAxisThemeConfig, XYChartAxisConfig } from '../../interfaces.js';\n\nexport class LinearAxis extends BaseAxis {\n private scale: ScaleLinear;\n private domain: [number, number];\n\n constructor(\n axisConfig: XYChartAxisConfig,\n axisThemeConfig: XYChartAxisThemeConfig,\n domain: [number, number],\n title: string,\n textDimensionCalculator: TextDimensionCalculator\n ) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.domain = domain;\n this.scale = scaleLinear().domain(this.domain).range(this.getRange());\n }\n\n getTickValues(): (string | number)[] {\n return this.scale.ticks();\n }\n\n recalculateScale(): void {\n const domain = [...this.domain]; // copy the array so if reverse is called two times it should not cancel the reverse effect\n if (this.axisPosition === 'left') {\n domain.reverse(); // since y-axis in svg start from top\n }\n this.scale = scaleLinear().domain(domain).range(this.getRange());\n }\n\n getScaleValue(value: number): number {\n return this.scale(value);\n }\n}\n", "import type { SVGGroup } from '../../../../../diagram-api/types.js';\nimport type {\n AxisDataType,\n ChartComponent,\n XYChartAxisConfig,\n XYChartAxisThemeConfig,\n} from '../../interfaces.js';\nimport { isBandAxisData } from '../../interfaces.js';\nimport { TextDimensionCalculatorWithFont } from '../../textDimensionCalculator.js';\nimport { BandAxis } from './bandAxis.js';\nimport { LinearAxis } from './linearAxis.js';\n\nexport type AxisPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface Axis extends ChartComponent {\n getScaleValue(value: string | number): number;\n setAxisPosition(axisPosition: AxisPosition): void;\n getAxisOuterPadding(): number;\n getTickDistance(): number;\n recalculateOuterPaddingToDrawBar(): void;\n setRange(range: [number, number]): void;\n}\n\nexport function getAxis(\n data: AxisDataType,\n axisConfig: XYChartAxisConfig,\n axisThemeConfig: XYChartAxisThemeConfig,\n tmpSVGGroup: SVGGroup\n): Axis {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup);\n if (isBandAxisData(data)) {\n return new BandAxis(\n axisConfig,\n axisThemeConfig,\n data.categories,\n data.title,\n textDimensionCalculator\n );\n }\n return new LinearAxis(\n axisConfig,\n axisThemeConfig,\n [data.min, data.max],\n data.title,\n textDimensionCalculator\n );\n}\n", "import type { SVGGroup } from '../../../../diagram-api/types.js';\nimport type {\n BoundingRect,\n ChartComponent,\n Dimension,\n DrawableElem,\n Point,\n XYChartConfig,\n XYChartData,\n XYChartThemeConfig,\n} from '../interfaces.js';\nimport type { TextDimensionCalculator } from '../textDimensionCalculator.js';\nimport { TextDimensionCalculatorWithFont } from '../textDimensionCalculator.js';\n\nexport class ChartTitle implements ChartComponent {\n private boundingRect: BoundingRect;\n private showChartTitle: boolean;\n constructor(\n private textDimensionCalculator: TextDimensionCalculator,\n private chartConfig: XYChartConfig,\n private chartData: XYChartData,\n private chartThemeConfig: XYChartThemeConfig\n ) {\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n this.showChartTitle = false;\n }\n setBoundingBoxXY(point: Point): void {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace: Dimension): Dimension {\n const titleDimension = this.textDimensionCalculator.getMaxDimension(\n [this.chartData.title],\n this.chartConfig.titleFontSize\n );\n const widthRequired = Math.max(titleDimension.width, availableSpace.width);\n const heightRequired = titleDimension.height + 2 * this.chartConfig.titlePadding;\n if (\n titleDimension.width <= widthRequired &&\n titleDimension.height <= heightRequired &&\n this.chartConfig.showTitle &&\n this.chartData.title\n ) {\n this.boundingRect.width = widthRequired;\n this.boundingRect.height = heightRequired;\n this.showChartTitle = true;\n }\n\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height,\n };\n }\n getDrawableElements(): DrawableElem[] {\n const drawableElem: DrawableElem[] = [];\n if (this.showChartTitle) {\n drawableElem.push({\n groupTexts: ['chart-title'],\n type: 'text',\n data: [\n {\n fontSize: this.chartConfig.titleFontSize,\n text: this.chartData.title,\n verticalPos: 'middle',\n horizontalPos: 'center',\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.chartThemeConfig.titleColor,\n rotation: 0,\n },\n ],\n });\n }\n return drawableElem;\n }\n}\n\nexport function getChartTitleComponent(\n chartConfig: XYChartConfig,\n chartData: XYChartData,\n chartThemeConfig: XYChartThemeConfig,\n tmpSVGGroup: SVGGroup\n): ChartComponent {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup);\n return new ChartTitle(textDimensionCalculator, chartConfig, chartData, chartThemeConfig);\n}\n", "import { line } from 'd3';\nimport type { DrawableElem, LinePlotData, XYChartConfig } from '../../interfaces.js';\nimport type { Axis } from '../axis/index.js';\n\nexport class LinePlot {\n constructor(\n private plotData: LinePlotData,\n private xAxis: Axis,\n private yAxis: Axis,\n private orientation: XYChartConfig['chartOrientation'],\n private plotIndex: number\n ) {}\n\n getDrawableElement(): DrawableElem[] {\n const finalData: [number, number][] = this.plotData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1]),\n ]);\n\n let path: string | null;\n if (this.orientation === 'horizontal') {\n path = line()\n .y((d) => d[0])\n .x((d) => d[1])(finalData);\n } else {\n path = line()\n .x((d) => d[0])\n .y((d) => d[1])(finalData);\n }\n if (!path) {\n return [];\n }\n return [\n {\n groupTexts: ['plot', `line-plot-${this.plotIndex}`],\n type: 'path',\n data: [\n {\n path,\n strokeFill: this.plotData.strokeFill,\n strokeWidth: this.plotData.strokeWidth,\n },\n ],\n },\n ];\n }\n}\n", "import type { BarPlotData, BoundingRect, DrawableElem, XYChartConfig } from '../../interfaces.js';\nimport type { Axis } from '../axis/index.js';\n\nexport class BarPlot {\n constructor(\n private barData: BarPlotData,\n private boundingRect: BoundingRect,\n private xAxis: Axis,\n private yAxis: Axis,\n private orientation: XYChartConfig['chartOrientation'],\n private plotIndex: number\n ) {}\n\n getDrawableElement(): DrawableElem[] {\n const finalData: [number, number][] = this.barData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1]),\n ]);\n\n const barPaddingPercent = 0.05;\n\n const barWidth =\n Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) *\n (1 - barPaddingPercent);\n const barWidthHalf = barWidth / 2;\n\n if (this.orientation === 'horizontal') {\n return [\n {\n groupTexts: ['plot', `bar-plot-${this.plotIndex}`],\n type: 'rect',\n data: finalData.map((data) => ({\n x: this.boundingRect.x,\n y: data[0] - barWidthHalf,\n height: barWidth,\n width: data[1] - this.boundingRect.x,\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill,\n })),\n },\n ];\n }\n return [\n {\n groupTexts: ['plot', `bar-plot-${this.plotIndex}`],\n type: 'rect',\n data: finalData.map((data) => ({\n x: data[0] - barWidthHalf,\n y: data[1],\n width: barWidth,\n height: this.boundingRect.y + this.boundingRect.height - data[1],\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill,\n })),\n },\n ];\n }\n}\n", "import type {\n XYChartData,\n Dimension,\n BoundingRect,\n DrawableElem,\n Point,\n XYChartThemeConfig,\n XYChartConfig,\n} from '../../interfaces.js';\nimport type { Axis } from '../axis/index.js';\nimport type { ChartComponent } from '../../interfaces.js';\nimport { LinePlot } from './linePlot.js';\nimport { BarPlot } from './barPlot.js';\n\nexport interface Plot extends ChartComponent {\n setAxes(xAxis: Axis, yAxis: Axis): void;\n}\n\nexport class BasePlot implements Plot {\n private boundingRect: BoundingRect;\n private xAxis?: Axis;\n private yAxis?: Axis;\n\n constructor(\n private chartConfig: XYChartConfig,\n private chartData: XYChartData,\n private chartThemeConfig: XYChartThemeConfig\n ) {\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n setAxes(xAxis: Axis, yAxis: Axis) {\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n }\n setBoundingBoxXY(point: Point): void {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace: Dimension): Dimension {\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height;\n\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height,\n };\n }\n getDrawableElements(): DrawableElem[] {\n if (!(this.xAxis && this.yAxis)) {\n throw Error('Axes must be passed to render Plots');\n }\n const drawableElem: DrawableElem[] = [];\n for (const [i, plot] of this.chartData.plots.entries()) {\n switch (plot.type) {\n case 'line':\n {\n const linePlot = new LinePlot(\n plot,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...linePlot.getDrawableElement());\n }\n break;\n case 'bar':\n {\n const barPlot = new BarPlot(\n plot,\n this.boundingRect,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...barPlot.getDrawableElement());\n }\n break;\n }\n }\n return drawableElem;\n }\n}\n\nexport function getPlotComponent(\n chartConfig: XYChartConfig,\n chartData: XYChartData,\n chartThemeConfig: XYChartThemeConfig\n): Plot {\n return new BasePlot(chartConfig, chartData, chartThemeConfig);\n}\n", "import type { SVGGroup } from '../../../diagram-api/types.js';\nimport type { Axis } from './components/axis/index.js';\nimport { getAxis } from './components/axis/index.js';\nimport { getChartTitleComponent } from './components/chartTitle.js';\nimport type { Plot } from './components/plot/index.js';\nimport { getPlotComponent } from './components/plot/index.js';\nimport type {\n ChartComponent,\n DrawableElem,\n XYChartConfig,\n XYChartData,\n XYChartThemeConfig,\n} from './interfaces.js';\nimport { isBarPlot } from './interfaces.js';\n\nexport class Orchestrator {\n private componentStore: {\n title: ChartComponent;\n plot: Plot;\n xAxis: Axis;\n yAxis: Axis;\n };\n constructor(\n private chartConfig: XYChartConfig,\n private chartData: XYChartData,\n chartThemeConfig: XYChartThemeConfig,\n tmpSVGGroup: SVGGroup\n ) {\n this.componentStore = {\n title: getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup),\n plot: getPlotComponent(chartConfig, chartData, chartThemeConfig),\n xAxis: getAxis(\n chartData.xAxis,\n chartConfig.xAxis,\n {\n titleColor: chartThemeConfig.xAxisTitleColor,\n labelColor: chartThemeConfig.xAxisLabelColor,\n tickColor: chartThemeConfig.xAxisTickColor,\n axisLineColor: chartThemeConfig.xAxisLineColor,\n },\n tmpSVGGroup\n ),\n yAxis: getAxis(\n chartData.yAxis,\n chartConfig.yAxis,\n {\n titleColor: chartThemeConfig.yAxisTitleColor,\n labelColor: chartThemeConfig.yAxisLabelColor,\n tickColor: chartThemeConfig.yAxisTickColor,\n axisLineColor: chartThemeConfig.yAxisLineColor,\n },\n tmpSVGGroup\n ),\n };\n }\n\n private calculateVerticalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor((availableWidth * this.chartConfig.plotReservedSpacePercent) / 100);\n let chartHeight = Math.floor(\n (availableHeight * this.chartConfig.plotReservedSpacePercent) / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight,\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight,\n });\n plotY = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition('bottom');\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight,\n });\n availableHeight -= spaceUsed.height;\n this.componentStore.yAxis.setAxisPosition('left');\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight,\n });\n plotX = spaceUsed.width;\n availableWidth -= spaceUsed.width;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight,\n });\n\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.xAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: plotX, y: plotY + chartHeight });\n this.componentStore.yAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n\n private calculateHorizontalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let titleYEnd = 0;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor((availableWidth * this.chartConfig.plotReservedSpacePercent) / 100);\n let chartHeight = Math.floor(\n (availableHeight * this.chartConfig.plotReservedSpacePercent) / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight,\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight,\n });\n titleYEnd = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition('left');\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight,\n });\n availableWidth -= spaceUsed.width;\n plotX = spaceUsed.width;\n this.componentStore.yAxis.setAxisPosition('top');\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight,\n });\n availableHeight -= spaceUsed.height;\n plotY = titleYEnd + spaceUsed.height;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight,\n });\n\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.yAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: plotX, y: titleYEnd });\n this.componentStore.xAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n\n private calculateSpace() {\n if (this.chartConfig.chartOrientation === 'horizontal') {\n this.calculateHorizontalSpace();\n } else {\n this.calculateVerticalSpace();\n }\n }\n\n getDrawableElement() {\n this.calculateSpace();\n const drawableElem: DrawableElem[] = [];\n this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis);\n for (const component of Object.values(this.componentStore)) {\n drawableElem.push(...component.getDrawableElements());\n }\n return drawableElem;\n }\n}\n", "import type { SVGGroup } from '../../../diagram-api/types.js';\nimport type { DrawableElem, XYChartConfig, XYChartData, XYChartThemeConfig } from './interfaces.js';\nimport { Orchestrator } from './orchestrator.js';\n\nexport class XYChartBuilder {\n static build(\n config: XYChartConfig,\n chartData: XYChartData,\n chartThemeConfig: XYChartThemeConfig,\n tmpSVGGroup: SVGGroup\n ): DrawableElem[] {\n const orchestrator = new Orchestrator(config, chartData, chartThemeConfig, tmpSVGGroup);\n return orchestrator.getDrawableElement();\n }\n}\n", "import * as configApi from '../../config.js';\nimport defaultConfig from '../../defaultConfig.js';\nimport type { SVGGroup } from '../../diagram-api/types.js';\nimport { getThemeVariables } from '../../themes/theme-default.js';\nimport { cleanAndMerge } from '../../utils.js';\nimport { sanitizeText } from '../common/common.js';\nimport {\n clear as commonClear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n} from '../common/commonDb.js';\nimport { XYChartBuilder } from './chartBuilder/index.js';\nimport type {\n DrawableElem,\n SimplePlotDataType,\n XYChartConfig,\n XYChartData,\n XYChartThemeConfig,\n} from './chartBuilder/interfaces.js';\nimport { isBandAxisData, isLinearAxisData } from './chartBuilder/interfaces.js';\n\nlet plotIndex = 0;\n\nlet tmpSVGGroup: SVGGroup;\n\nlet xyChartConfig: XYChartConfig = getChartDefaultConfig();\nlet xyChartThemeConfig: XYChartThemeConfig = getChartDefaultThemeConfig();\nlet xyChartData: XYChartData = getChartDefaultData();\nlet plotColorPalette = xyChartThemeConfig.plotColorPalette.split(',').map((color) => color.trim());\nlet hasSetXAxis = false;\nlet hasSetYAxis = false;\n\ninterface NormalTextType {\n type: 'text';\n text: string;\n}\n\nfunction getChartDefaultThemeConfig(): XYChartThemeConfig {\n const defaultThemeVariables = getThemeVariables();\n const config = configApi.getConfig();\n return cleanAndMerge(defaultThemeVariables.xyChart, config.themeVariables.xyChart);\n}\nfunction getChartDefaultConfig(): XYChartConfig {\n const config = configApi.getConfig();\n return cleanAndMerge(\n defaultConfig.xyChart as XYChartConfig,\n config.xyChart as XYChartConfig\n );\n}\n\nfunction getChartDefaultData(): XYChartData {\n return {\n yAxis: {\n type: 'linear',\n title: '',\n min: Infinity,\n max: -Infinity,\n },\n xAxis: {\n type: 'band',\n title: '',\n categories: [],\n },\n title: '',\n plots: [],\n };\n}\n\nfunction textSanitizer(text: string) {\n const config = configApi.getConfig();\n return sanitizeText(text.trim(), config);\n}\n\nfunction setTmpSVGG(SVGG: SVGGroup) {\n tmpSVGGroup = SVGG;\n}\nfunction setOrientation(orientation: string) {\n if (orientation === 'horizontal') {\n xyChartConfig.chartOrientation = 'horizontal';\n } else {\n xyChartConfig.chartOrientation = 'vertical';\n }\n}\nfunction setXAxisTitle(title: NormalTextType) {\n xyChartData.xAxis.title = textSanitizer(title.text);\n}\nfunction setXAxisRangeData(min: number, max: number) {\n xyChartData.xAxis = { type: 'linear', title: xyChartData.xAxis.title, min, max };\n hasSetXAxis = true;\n}\nfunction setXAxisBand(categories: NormalTextType[]) {\n xyChartData.xAxis = {\n type: 'band',\n title: xyChartData.xAxis.title,\n categories: categories.map((c) => textSanitizer(c.text)),\n };\n hasSetXAxis = true;\n}\nfunction setYAxisTitle(title: NormalTextType) {\n xyChartData.yAxis.title = textSanitizer(title.text);\n}\nfunction setYAxisRangeData(min: number, max: number) {\n xyChartData.yAxis = { type: 'linear', title: xyChartData.yAxis.title, min, max };\n hasSetYAxis = true;\n}\n\n// this function does not set `hasSetYAxis` as there can be multiple data so we should calculate the range accordingly\nfunction setYAxisRangeFromPlotData(data: number[]) {\n const minValue = Math.min(...data);\n const maxValue = Math.max(...data);\n const prevMinValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.max : -Infinity;\n xyChartData.yAxis = {\n type: 'linear',\n title: xyChartData.yAxis.title,\n min: Math.min(prevMinValue, minValue),\n max: Math.max(prevMaxValue, maxValue),\n };\n}\n\nfunction transformDataWithoutCategory(data: number[]): SimplePlotDataType {\n let retData: SimplePlotDataType = [];\n if (data.length === 0) {\n return retData;\n }\n if (!hasSetXAxis) {\n const prevMinValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.max : -Infinity;\n setXAxisRangeData(Math.min(prevMinValue, 1), Math.max(prevMaxValue, data.length));\n }\n if (!hasSetYAxis) {\n setYAxisRangeFromPlotData(data);\n }\n\n if (isBandAxisData(xyChartData.xAxis)) {\n retData = xyChartData.xAxis.categories.map((c, i) => [c, data[i]]);\n }\n\n if (isLinearAxisData(xyChartData.xAxis)) {\n const min = xyChartData.xAxis.min;\n const max = xyChartData.xAxis.max;\n const step = (max - min) / (data.length - 1);\n const categories: string[] = [];\n for (let i = min; i <= max; i += step) {\n categories.push(`${i}`);\n }\n retData = categories.map((c, i) => [c, data[i]]);\n }\n\n return retData;\n}\n\nfunction getPlotColorFromPalette(plotIndex: number): string {\n return plotColorPalette[plotIndex === 0 ? 0 : plotIndex % plotColorPalette.length];\n}\n\nfunction setLineData(title: NormalTextType, data: number[]) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: 'line',\n strokeFill: getPlotColorFromPalette(plotIndex),\n strokeWidth: 2,\n data: plotData,\n });\n plotIndex++;\n}\n\nfunction setBarData(title: NormalTextType, data: number[]) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: 'bar',\n fill: getPlotColorFromPalette(plotIndex),\n data: plotData,\n });\n plotIndex++;\n}\n\nfunction getDrawableElem(): DrawableElem[] {\n if (xyChartData.plots.length === 0) {\n throw Error('No Plot to render, please provide a plot with some data');\n }\n xyChartData.title = getDiagramTitle();\n return XYChartBuilder.build(xyChartConfig, xyChartData, xyChartThemeConfig, tmpSVGGroup);\n}\n\nfunction getChartThemeConfig() {\n return xyChartThemeConfig;\n}\n\nfunction getChartConfig() {\n return xyChartConfig;\n}\n\nfunction getXYChartData() {\n return xyChartData;\n}\n\nconst clear = function () {\n commonClear();\n plotIndex = 0;\n xyChartConfig = getChartDefaultConfig();\n xyChartData = getChartDefaultData();\n xyChartThemeConfig = getChartDefaultThemeConfig();\n plotColorPalette = xyChartThemeConfig.plotColorPalette.split(',').map((color) => color.trim());\n hasSetXAxis = false;\n hasSetYAxis = false;\n};\n\nexport default {\n getDrawableElem,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n setOrientation,\n setXAxisTitle,\n setXAxisRangeData,\n setXAxisBand,\n setYAxisTitle,\n setYAxisRangeData,\n setLineData,\n setBarData,\n setTmpSVGG,\n getChartThemeConfig,\n getChartConfig,\n getXYChartData,\n};\n", "import type { Diagram } from '../../Diagram.js';\nimport { log } from '../../logger.js';\nimport { selectSvgElement } from '../../rendering-util/selectSvgElement.js';\nimport { configureSvgSize } from '../../setupGraphViewbox.js';\nimport type {\n DrawableElem,\n TextElem,\n TextHorizontalPos,\n TextVerticalPos,\n} from './chartBuilder/interfaces.js';\nimport type XYChartDB from './xychartDb.js';\n\nexport const draw = (txt: string, id: string, _version: string, diagObj: Diagram) => {\n const db = diagObj.db as typeof XYChartDB;\n const themeConfig = db.getChartThemeConfig();\n const chartConfig = db.getChartConfig();\n const labelData = db.getXYChartData().plots[0].data.map((data) => data[1]);\n function getDominantBaseLine(horizontalPos: TextVerticalPos) {\n return horizontalPos === 'top' ? 'text-before-edge' : 'middle';\n }\n\n function getTextAnchor(verticalPos: TextHorizontalPos) {\n return verticalPos === 'left' ? 'start' : verticalPos === 'right' ? 'end' : 'middle';\n }\n\n function getTextTransformation(data: TextElem) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n\n log.debug('Rendering xychart chart\\n' + txt);\n\n const svg = selectSvgElement(id);\n const group = svg.append('g').attr('class', 'main');\n const background = group\n .append('rect')\n .attr('width', chartConfig.width)\n .attr('height', chartConfig.height)\n .attr('class', 'background');\n\n // @ts-ignore: TODO Fix ts errors\n configureSvgSize(svg, chartConfig.height, chartConfig.width, true);\n\n svg.attr('viewBox', `0 0 ${chartConfig.width} ${chartConfig.height}`);\n\n background.attr('fill', themeConfig.backgroundColor);\n\n db.setTmpSVGG(svg.append('g').attr('class', 'mermaid-tmp-group'));\n\n const shapes: DrawableElem[] = db.getDrawableElem();\n\n const groups: Record = {};\n\n interface BarItem {\n data: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n label: string;\n }\n\n function getGroup(gList: string[]) {\n let elem = group;\n let prefix = '';\n for (const [i] of gList.entries()) {\n let parent = group;\n if (i > 0 && groups[prefix]) {\n parent = groups[prefix];\n }\n prefix += gList[i];\n elem = groups[prefix];\n if (!elem) {\n elem = groups[prefix] = parent.append('g').attr('class', gList[i]);\n }\n }\n return elem;\n }\n\n for (const shape of shapes) {\n if (shape.data.length === 0) {\n continue;\n }\n\n const shapeGroup = getGroup(shape.groupTexts);\n\n switch (shape.type) {\n case 'rect':\n shapeGroup\n .selectAll('rect')\n .data(shape.data)\n .enter()\n .append('rect')\n .attr('x', (data) => data.x)\n .attr('y', (data) => data.y)\n .attr('width', (data) => data.width)\n .attr('height', (data) => data.height)\n .attr('fill', (data) => data.fill)\n .attr('stroke', (data) => data.strokeFill)\n .attr('stroke-width', (data) => data.strokeWidth);\n\n if (chartConfig.showDataLabel) {\n const showDataLabelOutsideBar = chartConfig.showDataLabelOutsideBar;\n\n if (chartConfig.chartOrientation === 'horizontal') {\n // Factor to approximate each character's width.\n const charWidthFactor = 0.7;\n\n const rightMargin = 10;\n\n // Filter out bars that have zero width or height.\n const validItems = shape.data\n .map((d, i) => ({ data: d, label: labelData[i].toString() }))\n .filter((item) => item.data.width > 0 && item.data.height > 0);\n\n // Helper function to check if the text fits horizontally with a 10px right margin.\n function fitsHorizontally(item: BarItem, fontSize: number): boolean {\n const { data, label } = item;\n // Approximate the text width.\n const textWidth: number = fontSize * label.length * charWidthFactor;\n // The available width is the bar's width minus a 10px right margin.\n return textWidth <= data.width - rightMargin;\n }\n\n // For each valid bar, start with an initial candidate font size (70% of the bar's height),\n // then reduce it until the text fits horizontally.\n const candidateFontSizes = validItems.map((item) => {\n const { data } = item;\n let fontSize = data.height * 0.7;\n // Decrease fontSize until the text fits horizontally.\n while (!fitsHorizontally(item, fontSize) && fontSize > 0) {\n fontSize -= 1;\n }\n return fontSize;\n });\n\n // Choose the smallest candidate font size across all valid bars for uniformity.\n const uniformFontSize = Math.floor(Math.min(...candidateFontSizes));\n\n const determineLabelXPosition = (item: BarItem) => {\n if (showDataLabelOutsideBar) {\n return item.data.x + item.data.width + rightMargin;\n } else {\n return item.data.x + item.data.width - rightMargin;\n }\n };\n\n shapeGroup\n .selectAll('text')\n .data(validItems)\n .enter()\n .append('text')\n .attr('x', determineLabelXPosition)\n .attr('y', (item) => item.data.y + item.data.height / 2)\n .attr('text-anchor', showDataLabelOutsideBar ? 'start' : 'end')\n .attr('dominant-baseline', 'middle')\n .attr('fill', themeConfig.dataLabelColor)\n .attr('font-size', `${uniformFontSize}px`)\n .text((item) => item.label);\n } else {\n const yOffset = 10;\n\n // filter out bars that have zero width or height.\n const validItems = shape.data\n .map((d, i) => ({ data: d, label: labelData[i].toString() }))\n .filter((item) => item.data.width > 0 && item.data.height > 0);\n\n // Helper function that checks if the text with a given fontSize fits within the bar boundaries.\n function fitsInBar(item: BarItem, fontSize: number, yOffset: number): boolean {\n const { data, label } = item;\n const charWidthFactor = 0.7;\n const textWidth = fontSize * label.length * charWidthFactor;\n\n // Compute horizontal boundaries using the center.\n const centerX = data.x + data.width / 2;\n const leftEdge = centerX - textWidth / 2;\n const rightEdge = centerX + textWidth / 2;\n\n // Check that text doesn't overflow horizontally.\n const horizontalFits = leftEdge >= data.x && rightEdge <= data.x + data.width;\n\n // For vertical placement, we use 'dominant-baseline: hanging' so that y marks the top of the text.\n // Thus, the bottom edge is y + yOffset + fontSize.\n const verticalFits = data.y + yOffset + fontSize <= data.y + data.height;\n\n return horizontalFits && verticalFits;\n }\n\n // For each valid item, start with a candidate font size based on the width,\n // then reduce it until the text fits within both the horizontal and vertical boundaries.\n const candidateFontSizes = validItems.map((item) => {\n const { data, label } = item;\n let fontSize = data.width / (label.length * 0.7);\n\n // Decrease the font size until the text fits or fontSize reaches 0.\n while (!fitsInBar(item, fontSize, yOffset) && fontSize > 0) {\n fontSize -= 1;\n }\n return fontSize;\n });\n\n // Choose the smallest candidate across all valid bars for uniformity.\n const uniformFontSize = Math.floor(Math.min(...candidateFontSizes));\n\n const determineLabelYPosition = (item: BarItem) => {\n if (showDataLabelOutsideBar) {\n return item.data.y - yOffset;\n } else {\n return item.data.y + yOffset;\n }\n };\n\n // Render text only for valid items.\n shapeGroup\n .selectAll('text')\n .data(validItems)\n .enter()\n .append('text')\n .attr('x', (item) => item.data.x + item.data.width / 2)\n .attr('y', determineLabelYPosition)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', showDataLabelOutsideBar ? 'auto' : 'hanging')\n .attr('fill', themeConfig.dataLabelColor)\n .attr('font-size', `${uniformFontSize}px`)\n .text((item) => item.label);\n }\n }\n break;\n case 'text':\n shapeGroup\n .selectAll('text')\n .data(shape.data)\n .enter()\n .append('text')\n .attr('x', 0)\n .attr('y', 0)\n .attr('fill', (data) => data.fill)\n .attr('font-size', (data) => data.fontSize)\n .attr('dominant-baseline', (data) => getDominantBaseLine(data.verticalPos))\n .attr('text-anchor', (data) => getTextAnchor(data.horizontalPos))\n .attr('transform', (data) => getTextTransformation(data))\n .text((data) => data.text);\n\n break;\n case 'path':\n shapeGroup\n .selectAll('path')\n .data(shape.data)\n .enter()\n .append('path')\n .attr('d', (data) => data.path)\n .attr('fill', (data) => (data.fill ? data.fill : 'none'))\n .attr('stroke', (data) => data.strokeFill)\n .attr('stroke-width', (data) => data.strokeWidth);\n break;\n }\n }\n};\n\nexport default {\n draw,\n};\n", "import type { DiagramDefinition } from '../../diagram-api/types.js';\n// @ts-ignore: Jison doesn't support types.\nimport parser from './parser/xychart.jison';\nimport db from './xychartDb.js';\nimport renderer from './xychartRenderer.js';\n\nexport const diagram: DiagramDefinition = {\n parser,\n db,\n renderer,\n};\n"], + "mappings": "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", + "names": ["parser", "o", "__name", "k", "v", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "xychart_default", "parser", "isBarPlot", "data", "__name", "isBandAxisData", "isLinearAxisData", "TextDimensionCalculatorWithFont", "parentGroup", "__name", "texts", "fontSize", "acc", "cur", "dimension", "elem", "t", "bbox", "computeDimensionOfText", "width", "height", "BaseAxis", "axisConfig", "title", "textDimensionCalculator", "axisThemeConfig", "__name", "range", "axisPosition", "tick", "availableSpace", "availableHeight", "spaceRequired", "maxPadding", "heightRequired", "availableWidth", "widthRequired", "point", "drawableElement", "x", "y", "BandAxis", "BaseAxis", "__name", "axisConfig", "axisThemeConfig", "categories", "title", "textDimensionCalculator", "band", "range", "log", "value", "LinearAxis", "BaseAxis", "__name", "axisConfig", "axisThemeConfig", "domain", "title", "textDimensionCalculator", "linear", "value", "getAxis", "data", "axisConfig", "axisThemeConfig", "tmpSVGGroup", "textDimensionCalculator", "TextDimensionCalculatorWithFont", "isBandAxisData", "BandAxis", "LinearAxis", "__name", "ChartTitle", "textDimensionCalculator", "chartConfig", "chartData", "chartThemeConfig", "__name", "point", "availableSpace", "titleDimension", "widthRequired", "heightRequired", "drawableElem", "getChartTitleComponent", "tmpSVGGroup", "TextDimensionCalculatorWithFont", "LinePlot", "plotData", "xAxis", "yAxis", "orientation", "plotIndex", "__name", "finalData", "d", "path", "line_default", "BarPlot", "barData", "boundingRect", "xAxis", "yAxis", "orientation", "plotIndex", "__name", "finalData", "d", "barWidth", "barWidthHalf", "data", "BasePlot", "chartConfig", "chartData", "chartThemeConfig", "__name", "xAxis", "yAxis", "point", "availableSpace", "drawableElem", "i", "plot", "linePlot", "LinePlot", "barPlot", "BarPlot", "getPlotComponent", "Orchestrator", "chartConfig", "chartData", "chartThemeConfig", "tmpSVGGroup", "getChartTitleComponent", "getPlotComponent", "getAxis", "__name", "availableWidth", "availableHeight", "plotX", "plotY", "chartWidth", "chartHeight", "spaceUsed", "p", "isBarPlot", "titleYEnd", "drawableElem", "component", "XYChartBuilder", "__name", "config", "chartData", "chartThemeConfig", "tmpSVGGroup", "Orchestrator", "plotIndex", "tmpSVGGroup", "xyChartConfig", "getChartDefaultConfig", "xyChartThemeConfig", "getChartDefaultThemeConfig", "xyChartData", "getChartDefaultData", "plotColorPalette", "color", "hasSetXAxis", "hasSetYAxis", "defaultThemeVariables", "getThemeVariables", "config", "getConfig", "cleanAndMerge", "__name", "defaultConfig_default", "textSanitizer", "text", "sanitizeText", "setTmpSVGG", "SVGG", "setOrientation", "orientation", "setXAxisTitle", "title", "setXAxisRangeData", "min", "max", "setXAxisBand", "categories", "c", "setYAxisTitle", "setYAxisRangeData", "setYAxisRangeFromPlotData", "data", "minValue", "maxValue", "prevMinValue", "isLinearAxisData", "prevMaxValue", "transformDataWithoutCategory", "retData", "isBandAxisData", "i", "step", "getPlotColorFromPalette", "setLineData", "plotData", "setBarData", "getDrawableElem", "getDiagramTitle", "XYChartBuilder", "getChartThemeConfig", "getChartConfig", "getXYChartData", "clear", "xychartDb_default", "setAccTitle", "getAccTitle", "setDiagramTitle", "getAccDescription", "setAccDescription", "draw", "__name", "txt", "id", "_version", "diagObj", "db", "themeConfig", "chartConfig", "labelData", "data", "getDominantBaseLine", "horizontalPos", "getTextAnchor", "verticalPos", "getTextTransformation", "log", "svg", "selectSvgElement", "group", "background", "configureSvgSize", "shapes", "groups", "getGroup", "gList", "elem", "prefix", "i", "parent", "shape", "shapeGroup", "showDataLabelOutsideBar", "fitsHorizontally", "item", "fontSize", "label", "charWidthFactor", "rightMargin", "validItems", "d", "candidateFontSizes", "uniformFontSize", "determineLabelXPosition", "fitsInBar", "yOffset", "textWidth", "centerX", "leftEdge", "rightEdge", "horizontalFits", "verticalFits", "determineLabelYPosition", "xychartRenderer_default", "diagram", "xychart_default", "xychartDb_default", "xychartRenderer_default"] } diff --git a/assets/mermaid/mermaid.esm.min.mjs b/assets/mermaid/mermaid.esm.min.mjs index 394322e..f3cb543 100644 --- a/assets/mermaid/mermaid.esm.min.mjs +++ b/assets/mermaid/mermaid.esm.min.mjs @@ -1,13 +1,11 @@ -import{a as Yt}from"./chunks/mermaid.esm.min/chunk-D4HHKWPY.mjs";import{a as Ut,b as qt}from"./chunks/mermaid.esm.min/chunk-NN2NZ22Q.mjs";import{a as Bt}from"./chunks/mermaid.esm.min/chunk-SK62O5VA.mjs";import"./chunks/mermaid.esm.min/chunk-5YHUCXBM.mjs";import"./chunks/mermaid.esm.min/chunk-3ZBQQEZ6.mjs";import"./chunks/mermaid.esm.min/chunk-BDKIFH7H.mjs";import"./chunks/mermaid.esm.min/chunk-XODN6PIJ.mjs";import"./chunks/mermaid.esm.min/chunk-IWDTEBJL.mjs";import"./chunks/mermaid.esm.min/chunk-D2KP3OBD.mjs";import{b as It,d as Ot}from"./chunks/mermaid.esm.min/chunk-YLHEXJF3.mjs";import{b as Vt,j as yt,l as $t,m as V,n as Nt,o as Ht}from"./chunks/mermaid.esm.min/chunk-Q3CC2MQB.mjs";import"./chunks/mermaid.esm.min/chunk-XBXGYYE5.mjs";import{G as Pt,I as Ft,J as X,K as rt,L as W,M as _t,N as Gt,P as zt,a as vt,ba as z,ca as K,i as tt,l as ut,m as St,n as Mt,o as At,p as Tt,q as Dt,r as Ct,s as G,t as kt,u as Y,w as Rt,x as jt}from"./chunks/mermaid.esm.min/chunk-3UWU4A3N.mjs";import{b as g,c as lt,h as R}from"./chunks/mermaid.esm.min/chunk-MGPAVIPZ.mjs";import{d as xt}from"./chunks/mermaid.esm.min/chunk-QU3B7NT4.mjs";import"./chunks/mermaid.esm.min/chunk-JIN56HTB.mjs";import{a as r}from"./chunks/mermaid.esm.min/chunk-VELTKBKT.mjs";var Ge=r(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),ze=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/c4Diagram-BBK6TRR6.mjs");return{id:"c4",diagram:t}},"loader"),Ve={id:"c4",detector:Ge,loader:ze},Xt=Ve;var Wt="flowchart",$e=r((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),Ne=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs");return{id:Wt,diagram:t}},"loader"),He={id:Wt,detector:$e,loader:Ne},Kt=He;var Qt="flowchart-v2",Ue=r((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),qe=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs");return{id:Qt,diagram:t}},"loader"),Be={id:Qt,detector:Ue,loader:qe},Zt=Be;var Ye=r(t=>/^\s*erDiagram/.test(t),"detector"),Xe=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/erDiagram-L2NYR2MQ.mjs");return{id:"er",diagram:t}},"loader"),We={id:"er",detector:Ye,loader:Xe},Jt=We;var tr="gitGraph",Ke=r(t=>/^\s*gitGraph/.test(t),"detector"),Qe=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/gitGraphDiagram-FCDOK2W6.mjs");return{id:tr,diagram:t}},"loader"),Ze={id:tr,detector:Ke,loader:Qe},rr=Ze;var er="gantt",Je=r(t=>/^\s*gantt/.test(t),"detector"),ta=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/ganttDiagram-CBGYKTO2.mjs");return{id:er,diagram:t}},"loader"),ra={id:er,detector:Je,loader:ta},ar=ra;var ir="info",ea=r(t=>/^\s*info/.test(t),"detector"),aa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/infoDiagram-JC2SMEGH.mjs");return{id:ir,diagram:t}},"loader"),or={id:ir,detector:ea,loader:aa};var ia=r(t=>/^\s*pie/.test(t),"detector"),oa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/pieDiagram-O4VNXU6G.mjs");return{id:"pie",diagram:t}},"loader"),nr={id:"pie",detector:ia,loader:oa};var sr="quadrantChart",na=r(t=>/^\s*quadrantChart/.test(t),"detector"),sa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/quadrantDiagram-DYU4IJOS.mjs");return{id:sr,diagram:t}},"loader"),ca={id:sr,detector:na,loader:sa},cr=ca;var mr="xychart",ma=r(t=>/^\s*xychart(-beta)?/.test(t),"detector"),pa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/xychartDiagram-TMDUDL2A.mjs");return{id:mr,diagram:t}},"loader"),da={id:mr,detector:ma,loader:pa},pr=da;var dr="requirement",fa=r(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),ga=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/requirementDiagram-N2XL27SN.mjs");return{id:dr,diagram:t}},"loader"),la={id:dr,detector:fa,loader:ga},fr=la;var gr="sequence",ua=r(t=>/^\s*sequenceDiagram/.test(t),"detector"),Da=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/sequenceDiagram-PYXOKC54.mjs");return{id:gr,diagram:t}},"loader"),ya={id:gr,detector:ua,loader:Da},lr=ya;var ur="class",xa=r((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),ha=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/classDiagram-JG6F6YBT.mjs");return{id:ur,diagram:t}},"loader"),Ea={id:ur,detector:xa,loader:ha},Dr=Ea;var yr="classDiagram",wa=r((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),La=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/classDiagram-v2-CFK7UN3Z.mjs");return{id:yr,diagram:t}},"loader"),ba={id:yr,detector:wa,loader:La},xr=ba;var hr="state",va=r((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),Sa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/stateDiagram-UFOXNHOX.mjs");return{id:hr,diagram:t}},"loader"),Ma={id:hr,detector:va,loader:Sa},Er=Ma;var wr="stateDiagram",Aa=r((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),Ta=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/stateDiagram-v2-C774GKM7.mjs");return{id:wr,diagram:t}},"loader"),Ca={id:wr,detector:Aa,loader:Ta},Lr=Ca;var br="journey",ka=r(t=>/^\s*journey/.test(t),"detector"),Ra=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/journeyDiagram-FZRSWBTQ.mjs");return{id:br,diagram:t}},"loader"),ja={id:br,detector:ka,loader:Ra},vr=ja;var Ia=r((t,e,a)=>{g.debug(`rendering svg for syntax error -`);let i=Yt(e),o=i.append("g");i.attr("viewBox","0 0 2412 512"),Gt(i,100,512,!0),o.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),o.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),o.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),o.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),o.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),o.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),o.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),o.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${a}`)},"draw"),ht={draw:Ia},Sr=ht;var Oa={db:{},renderer:ht,parser:{parse:r(()=>{},"parse")}},Mr=Oa;var Ar="flowchart-elk",Pa=r((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),Fa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/flowDiagram-IIOBCMXN.mjs");return{id:Ar,diagram:t}},"loader"),_a={id:Ar,detector:Pa,loader:Fa},Tr=_a;var Cr="timeline",Ga=r(t=>/^\s*timeline/.test(t),"detector"),za=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/timeline-definition-GC5UGDFR.mjs");return{id:Cr,diagram:t}},"loader"),Va={id:Cr,detector:Ga,loader:za},kr=Va;var Rr="mindmap",$a=r(t=>/^\s*mindmap/.test(t),"detector"),Na=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/mindmap-definition-QTQOGDLH.mjs");return{id:Rr,diagram:t}},"loader"),Ha={id:Rr,detector:$a,loader:Na},jr=Ha;var Ir="kanban",Ua=r(t=>/^\s*kanban/.test(t),"detector"),qa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/kanban-definition-ETIEC4YN.mjs");return{id:Ir,diagram:t}},"loader"),Ba={id:Ir,detector:Ua,loader:qa},Or=Ba;var Pr="sankey",Ya=r(t=>/^\s*sankey(-beta)?/.test(t),"detector"),Xa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/sankeyDiagram-HWP7ZNIN.mjs");return{id:Pr,diagram:t}},"loader"),Wa={id:Pr,detector:Ya,loader:Xa},Fr=Wa;var _r="packet",Ka=r(t=>/^\s*packet(-beta)?/.test(t),"detector"),Qa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/diagram-SUXTHJMA.mjs");return{id:_r,diagram:t}},"loader"),Gr={id:_r,detector:Ka,loader:Qa};var zr="radar",Za=r(t=>/^\s*radar-beta/.test(t),"detector"),Ja=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/diagram-G7E7SVAT.mjs");return{id:zr,diagram:t}},"loader"),Vr={id:zr,detector:Za,loader:Ja};var $r="block",ti=r(t=>/^\s*block(-beta)?/.test(t),"detector"),ri=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/blockDiagram-HG7WUIX4.mjs");return{id:$r,diagram:t}},"loader"),ei={id:$r,detector:ti,loader:ri},Nr=ei;var Hr="architecture",ai=r(t=>/^\s*architecture/.test(t),"detector"),ii=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/architectureDiagram-EJXTDGMB.mjs");return{id:Hr,diagram:t}},"loader"),oi={id:Hr,detector:ai,loader:ii},Ur=oi;var qr="ishikawa",ni=r(t=>/^\s*ishikawa(-beta)?\b/i.test(t),"detector"),si=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/ishikawaDiagram-LCPTV24A.mjs");return{id:qr,diagram:t}},"loader"),Br={id:qr,detector:ni,loader:si};var Yr="venn",ci=r(t=>/^\s*venn-beta/.test(t),"detector"),mi=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/vennDiagram-R4MEU4WM.mjs");return{id:Yr,diagram:t}},"loader"),pi={id:Yr,detector:ci,loader:mi},Xr=pi;var Wr="treemap",di=r(t=>/^\s*treemap/.test(t),"detector"),fi=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/diagram-HOHITQNR.mjs");return{id:Wr,diagram:t}},"loader"),Kr={id:Wr,detector:di,loader:fi};var Qr=!1,$=r(()=>{Qr||(Qr=!0,z("error",Mr,t=>t.toLowerCase().trim()==="error"),z("---",{db:{clear:r(()=>{},"clear")},styles:{},renderer:{draw:r(()=>{},"draw")},parser:{parse:r(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:r(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),W(Tr,jr,Ur),W(Xt,Or,xr,Dr,Jt,ar,or,nr,fr,lr,Zt,Kt,kr,rr,Lr,Er,vr,cr,Fr,Gr,pr,Nr,Vr,Br,Kr,Xr))},"addDiagrams");var Zr=r(async()=>{g.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(X).map(async([a,{detector:i,loader:o}])=>{if(o)try{K(a)}catch{try{let{diagram:n,id:m}=await o();z(m,n,i)}catch(n){throw g.error(`Failed to load external diagram with key ${a}. Removing from detectors.`),delete X[a],n}}}))).filter(a=>a.status==="rejected");if(e.length>0){g.error(`Failed to load ${e.length} external diagrams`);for(let a of e)g.error(a);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");var et="comm",at="rule",it="decl";var Jr="@import";var te="@namespace",re="@keyframes";var ee="@layer";var Et=Math.abs,Q=String.fromCharCode;function ot(t){return t.trim()}r(ot,"trim");function Z(t,e,a){return t.replace(e,a)}r(Z,"replace");function ae(t,e,a){return t.indexOf(e,a)}r(ae,"indexof");function O(t,e){return t.charCodeAt(e)|0}r(O,"charat");function P(t,e,a){return t.slice(e,a)}r(P,"substr");function h(t){return t.length}r(h,"strlen");function ie(t){return t.length}r(ie,"sizeof");function N(t,e){return e.push(t),t}r(N,"append");var nt=1,H=1,oe=0,w=0,D=0,q="";function st(t,e,a,i,o,n,m,s){return{value:t,root:e,parent:a,type:i,props:o,children:n,line:nt,column:H,length:m,return:"",siblings:s}}r(st,"node");function ne(){return D}r(ne,"char");function se(){return D=w>0?O(q,--w):0,H--,D===10&&(H=1,nt--),D}r(se,"prev");function L(){return D=w2||U(D)>3?"":" "}r(pe,"whitespace");function de(t,e){for(;--e&&L()&&!(D<48||D>102||D>57&&D<65||D>70&&D<97););return ct(t,J()+(e<6&&j()==32&&L()==32))}r(de,"escaping");function wt(t){for(;L();)switch(D){case t:return w;case 34:case 39:t!==34&&t!==39&&wt(D);break;case 40:t===41&&wt(t);break;case 92:L();break}return w}r(wt,"delimiter");function fe(t,e){for(;L()&&t+D!==57;)if(t+D===84&&j()===47)break;return"/*"+ct(e,w-1)+"*"+Q(t===47?t:L())}r(fe,"commenter");function ge(t){for(;!U(j());)L();return ct(t,w)}r(ge,"identifier");function De(t){return me(pt("",null,null,null,[""],t=ce(t),0,[0],t))}r(De,"compile");function pt(t,e,a,i,o,n,m,s,c){for(var l=0,y=0,p=m,x=0,A=0,b=0,f=1,C=1,v=1,u=0,S="",k=o,T=n,E=i,d=S;C;)switch(b=u,u=L()){case 40:if(b!=108&&O(d,p-1)==58){ae(d+=Z(mt(u),"&","&\f"),"&\f",Et(l?s[l-1]:0))!=-1&&(v=-1);break}case 34:case 39:case 91:d+=mt(u);break;case 9:case 10:case 13:case 32:d+=pe(b);break;case 92:d+=de(J()-1,7);continue;case 47:switch(j()){case 42:case 47:N(gi(fe(L(),J()),e,a,c),c),(U(b||1)==5||U(j()||1)==5)&&h(d)&&P(d,-1,void 0)!==" "&&(d+=" ");break;default:d+="/"}break;case 123*f:s[l++]=h(d)*v;case 125*f:case 59:case 0:switch(u){case 0:case 125:C=0;case 59+y:v==-1&&(d=Z(d,/\f/g,"")),A>0&&(h(d)-p||f===0&&b===47)&&N(A>32?ue(d+";",i,a,p-1,c):ue(Z(d," ","")+";",i,a,p-2,c),c);break;case 59:d+=";";default:if(N(E=le(d,e,a,l,y,o,s,S,k=[],T=[],p,n),n),u===123)if(y===0)pt(d,e,E,E,k,n,p,s,T);else{switch(x){case 99:if(O(d,3)===110)break;case 108:if(O(d,2)===97)break;default:y=0;case 100:case 109:case 115:}y?pt(t,E,E,i&&N(le(t,E,E,0,0,o,s,S,o,k=[],p,T),T),o,T,p,s,i?k:T):pt(d,E,E,E,[""],T,0,s,T)}}l=y=A=0,f=v=1,S=d="",p=m;break;case 58:p=1+h(d),A=b;default:if(f<1){if(u==123)--f;else if(u==125&&f++==0&&se()==125)continue}switch(d+=Q(u),u*f){case 38:v=y>0?1:(d+="\f",-1);break;case 44:s[l++]=(h(d)-1)*v,v=1;break;case 64:j()===45&&(d+=mt(L())),x=j(),y=p=h(S=d+=ge(J())),u++;break;case 45:b===45&&h(d)==2&&(f=0)}}return n}r(pt,"parse");function le(t,e,a,i,o,n,m,s,c,l,y,p){for(var x=o-1,A=o===0?n:[""],b=ie(A),f=0,C=0,v=0;f0?A[u]+" "+S:Z(S,/&\f/g,A[u])))&&(c[v++]=k);return st(t,e,a,o===0?at:s,c,l,y,p)}r(le,"ruleset");function gi(t,e,a,i){return st(t,e,a,et,Q(ne()),P(t,2,-2),0,i)}r(gi,"comment");function ue(t,e,a,i,o){return st(t,e,a,it,P(t,0,i),P(t,i+1,-1),i,o)}r(ue,"declaration");function dt(t,e){for(var a="",i=0;i{Ee.forEach(t=>{t()}),Ee=[]},"attachFunctions");var Le=r(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function be(t){let e=t.match(Pt);if(!e)return{text:t,metadata:{}};let a=qt(e[1],{schema:Ut})??{};a=typeof a=="object"&&!Array.isArray(a)?a:{};let i={};return a.displayMode&&(i.displayMode=a.displayMode.toString()),a.title&&(i.title=a.title.toString()),a.config&&(i.config=a.config),{text:t.slice(e[0].length),metadata:i}}r(be,"extractFrontMatter");var Di=r(t=>t.replace(/\r\n?/g,` -`).replace(/<(\w+)([^>]*)>/g,(e,a,i)=>"<"+a+i.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),yi=r(t=>{let{text:e,metadata:a}=be(t),{displayMode:i,title:o,config:n={}}=a;return i&&(n.gantt||(n.gantt={}),n.gantt.displayMode=i),{title:o,config:n,text:e}},"processFrontmatter"),xi=r(t=>{let e=V.detectInit(t)??{},a=V.detectDirective(t,"wrap");return Array.isArray(a)?e.wrap=a.some(({type:i})=>i==="wrap"):a?.type==="wrap"&&(e.wrap=!0),{text:Vt(t),directive:e}},"processDirectives");function Lt(t){let e=Di(t),a=yi(e),i=xi(a.text),o=$t(a.config,i.directive);return t=Le(i.text),{code:t,title:a.title,config:o}}r(Lt,"preprocessDiagram");function ve(t){let e=new TextEncoder().encode(t),a=Array.from(e,i=>String.fromCodePoint(i)).join("");return btoa(a)}r(ve,"toBase64");var hi=5e4,Ei="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",wi="sandbox",Li="loose",bi="http://www.w3.org/2000/svg",vi="http://www.w3.org/1999/xlink",Si="http://www.w3.org/1999/xhtml",Mi="100%",Ai="100%",Ti="border:0;margin:0;",Ci="margin:0",ki="allow-top-navigation-by-user-activation allow-popups",Ri='The "iframe" tag is not supported by your browser.',ji=["foreignobject"],Ii=["dominant-baseline"];function Te(t){let e=Lt(t);return Y(),kt(e.config??{}),e}r(Te,"processAndSetConfigs");async function Oi(t,e){$();try{let{code:a,config:i}=Te(t);return{diagramType:(await Ce(a)).type,config:i}}catch(a){if(e?.suppressErrors)return!1;throw a}}r(Oi,"parse");var Se=r((t,e,a=[])=>` -.${t} ${e} { ${a.join(" !important; ")} !important; }`,"cssImportantStyles"),Pi=r((t,e=new Map)=>{let a="";if(t.themeCSS!==void 0&&(a+=` -${t.themeCSS}`),t.fontFamily!==void 0&&(a+=` -:root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(a+=` -:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){let m=Rt(t)?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(s=>{xt(s.styles)||m.forEach(c=>{a+=Se(s.id,c,s.styles)}),xt(s.textStyles)||(a+=Se(s.id,"tspan",(s?.textStyles||[]).map(c=>c.replace("color","fill"))))})}return a},"createCssStyles"),Fi=r((t,e,a,i)=>{let o=Pi(t,a),n=zt(e,o,t.themeVariables);return dt(De(`${i}{${n}}`),ye)},"createUserStyles"),_i=r((t="",e,a)=>{let i=t;return!a&&!e&&(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=Ht(i),i=i.replace(/
    /g,"
    "),i},"cleanUpSvgCode"),Gi=r((t="",e)=>{let a=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":Ai,i=ve(`${t}`);return``},"putIntoIFrame"),Me=r((t,e,a,i,o)=>{let n=t.append("div");n.attr("id",a),i&&n.attr("style",i);let m=n.append("svg").attr("id",e).attr("width","100%").attr("xmlns",bi);return o&&m.attr("xmlns:xlink",o),m.append("g"),t},"appendDivSvgG");function Ae(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}r(Ae,"sandboxedIframe");var zi=r((t,e,a,i)=>{t.getElementById(e)?.remove(),t.getElementById(a)?.remove(),t.getElementById(i)?.remove()},"removeExistingElements"),Vi=r(async function(t,e,a){$();let i=Te(e);e=i.code;let o=G();g.debug(o),e.length>(o?.maxTextSize??hi)&&(e=Ei);let n="#"+t,m="i"+t,s="#"+m,c="d"+t,l="#"+c,y=r(()=>{let gt=R(x?s:l).node();gt&&"remove"in gt&>.remove()},"removeTempElements"),p=R("body"),x=o.securityLevel===wi,A=o.securityLevel===Li,b=o.fontFamily;if(a!==void 0){if(a&&(a.innerHTML=""),x){let M=Ae(R(a),m);p=R(M.nodes()[0].contentDocument.body),p.node().style.margin=0}else p=R(a);Me(p,t,c,`font-family: ${b}`,vi)}else{if(zi(document,t,c,m),x){let M=Ae(R("body"),m);p=R(M.nodes()[0].contentDocument.body),p.node().style.margin=0}else p=R("body");Me(p,t,c)}let f,C;try{f=await B.fromText(e,{title:i.title})}catch(M){if(o.suppressErrorRendering)throw y(),M;f=await B.fromText("error"),C=M}let v=p.select(l).node(),u=f.type,S=v.firstChild,k=S.firstChild,T=f.renderer.getClasses?.(e,f),E=Fi(o,u,T,n),d=document.createElement("style");d.innerHTML=E,S.insertBefore(d,k);try{await f.renderer.draw(e,t,"11.13.0",f)}catch(M){throw o.suppressErrorRendering?y():Sr.draw(e,t,"11.13.0"),M}let Pe=p.select(`${l} svg`),Fe=f.db.getAccTitle?.(),_e=f.db.getAccDescription?.();Ni(u,Pe,Fe,_e),p.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",Si);let _=p.select(l).node().innerHTML;if(g.debug("config.arrowMarkerAbsolute",o.arrowMarkerAbsolute),_=_i(_,x,St(o.arrowMarkerAbsolute)),x){let M=p.select(l+" svg").node();_=Gi(_,M)}else A||(_=jt.sanitize(_,{ADD_TAGS:ji,ADD_ATTR:Ii,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(we(),C)throw C;return y(),{diagramType:u,svg:_,bindFunctions:f.db.bindFunctions}},"render");function $i(t={}){let e=vt({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),At(e),e?.theme&&e.theme in tt?e.themeVariables=tt[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=tt.default.getThemeVariables(e.themeVariables));let a=typeof e=="object"?Mt(e):Dt();lt(a.logLevel),$()}r($i,"initialize");var Ce=r((t,e={})=>{let{code:a}=Lt(t);return B.fromText(a,e)},"getDiagramFromText");function Ni(t,e,a,i){xe(e,t),he(e,a,i,e.attr("id"))}r(Ni,"addA11yInfo");var F=Object.freeze({render:Vi,parse:Oi,getDiagramFromText:Ce,initialize:$i,getConfig:G,setConfig:Ct,getSiteConfig:Dt,updateSiteConfig:Tt,reset:r(()=>{Y()},"reset"),globalReset:r(()=>{Y(ut)},"globalReset"),defaultConfig:ut});lt(G().logLevel);Y(G());var Hi=r((t,e,a)=>{g.warn(t),yt(t)?(a&&a(t.str,t.hash),e.push({...t,message:t.str,error:t})):(a&&a(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),ke=r(async function(t={querySelector:".mermaid"}){try{await Ui(t)}catch(e){if(yt(e)&&g.error(e.str),I.parseError&&I.parseError(e),!t.suppressErrors)throw g.error("Use the suppressErrors option to suppress these errors"),e}},"run"),Ui=r(async function({postRenderCallback:t,querySelector:e,nodes:a}={querySelector:".mermaid"}){let i=F.getConfig();g.debug(`${t?"":"No "}Callback function found`);let o;if(a)o=a;else if(e)o=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");g.debug(`Found ${o.length} diagrams`),i?.startOnLoad!==void 0&&(g.debug("Start On Load: "+i?.startOnLoad),F.updateSiteConfig({startOnLoad:i?.startOnLoad}));let n=new V.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed),m,s=[];for(let c of Array.from(o)){g.info("Rendering diagram: "+c.id);if(c.getAttribute("data-processed"))continue;c.setAttribute("data-processed","true");let l=`mermaid-${n.next()}`;m=c.innerHTML,m=Ot(V.entityDecode(m)).trim().replace(//gi,"
    ");let y=V.detectInit(m);y&&g.debug("Detected early reinit: ",y);try{let{svg:p,bindFunctions:x}=await Oe(l,m,c);c.innerHTML=p,t&&await t(l),x&&x(c)}catch(p){Hi(p,s,I.parseError)}}if(s.length>0)throw s[0]},"runThrowsErrors"),Re=r(function(t){F.initialize(t)},"initialize"),qi=r(async function(t,e,a){g.warn("mermaid.init is deprecated. Please use run instead."),t&&Re(t);let i={postRenderCallback:a,querySelector:".mermaid"};typeof e=="string"?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await ke(i)},"init"),Bi=r(async(t,{lazyLoad:e=!0}={})=>{$(),W(...t),e===!1&&await Zr()},"registerExternalDiagrams"),je=r(function(){if(I.startOnLoad){let{startOnLoad:t}=F.getConfig();t&&I.run().catch(e=>g.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",je,!1)}var Yi=r(function(t){I.parseError=t},"setParseErrorHandler"),ft=[],bt=!1,Ie=r(async()=>{if(!bt){for(bt=!0;ft.length>0;){let t=ft.shift();if(t)try{await t()}catch(e){g.error("Error executing queue",e)}}bt=!1}},"executeQueue"),Xi=r(async(t,e)=>new Promise((a,i)=>{let o=r(()=>new Promise((n,m)=>{F.parse(t,e).then(s=>{n(s),a(s)},s=>{g.error("Error parsing",s),I.parseError?.(s),m(s),i(s)})}),"performCall");ft.push(o),Ie().catch(i)}),"parse"),Oe=r((t,e,a)=>new Promise((i,o)=>{let n=r(()=>new Promise((m,s)=>{F.render(t,e,a).then(c=>{m(c),i(c)},c=>{g.error("Error parsing",c),I.parseError?.(c),s(c),o(c)})}),"performCall");ft.push(n),Ie().catch(o)}),"render"),Wi=r(()=>Object.keys(X).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),I={startOnLoad:!0,mermaidAPI:F,parse:Xi,render:Oe,init:qi,run:ke,registerExternalDiagrams:Bi,registerLayoutLoaders:Bt,initialize:Re,parseError:void 0,contentLoaded:je,setParseErrorHandler:Yi,detectType:rt,registerIconPacks:It,getRegisteredDiagramsMetadata:Wi},mc=I;export{mc as default}; +import{a as Zt}from"./chunks/mermaid.esm.min/chunk-LRIF4GLE.mjs";import{a as Wt,b as Kt}from"./chunks/mermaid.esm.min/chunk-7FYTHRHK.mjs";import{a as Qt}from"./chunks/mermaid.esm.min/chunk-VU6ZFW4Y.mjs";import"./chunks/mermaid.esm.min/chunk-7J6CGLKN.mjs";import"./chunks/mermaid.esm.min/chunk-KGFNY3KK.mjs";import"./chunks/mermaid.esm.min/chunk-5IMINLNL.mjs";import"./chunks/mermaid.esm.min/chunk-T2UQINTJ.mjs";import"./chunks/mermaid.esm.min/chunk-5VCL7Z4A.mjs";import"./chunks/mermaid.esm.min/chunk-UY5QBCOK.mjs";import{b as _t,d as Gt}from"./chunks/mermaid.esm.min/chunk-INKRHTLW.mjs";import{b as wt,d as Bt,m as Lt,o as Yt,p as $,q as qt,r as Xt}from"./chunks/mermaid.esm.min/chunk-QA3QBVWF.mjs";import"./chunks/mermaid.esm.min/chunk-KNLZD3CH.mjs";import{H as $t,J as Ht,K,L as at,M as Q,N as zt,O as Nt,Q as Et,R as Ut,a as Rt,da as G,ea as Z,i as et,l as Tt,m as xt,n as Ct,o as kt,p as jt,q as Ot,r as ht,s as It,t as _,u as Pt,v as W,x as Ft,y as Vt}from"./chunks/mermaid.esm.min/chunk-67TQ5CYL.mjs";import{b as f,c as yt,h as k}from"./chunks/mermaid.esm.min/chunk-7W6UQGC5.mjs";import{a as r}from"./chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs";var Ke=r(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),Qe=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/c4Diagram-Y2BXMSZH.mjs");return{id:"c4",diagram:t}},"loader"),Ze={id:"c4",detector:Ke,loader:Qe},Jt=Ze;var tr="flowchart",Je=r((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),ta=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs");return{id:tr,diagram:t}},"loader"),ra={id:tr,detector:Je,loader:ta},rr=ra;var er="flowchart-v2",ea=r((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),aa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs");return{id:er,diagram:t}},"loader"),ia={id:er,detector:ea,loader:aa},ar=ia;var oa=r(t=>/^\s*erDiagram/.test(t),"detector"),na=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/erDiagram-L5TCEMPS.mjs");return{id:"er",diagram:t}},"loader"),sa={id:"er",detector:oa,loader:na},ir=sa;var or="gitGraph",ca=r(t=>/^\s*gitGraph/.test(t),"detector"),ma=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/gitGraphDiagram-S2ZK5IYY.mjs");return{id:or,diagram:t}},"loader"),pa={id:or,detector:ca,loader:ma},nr=pa;var sr="gantt",da=r(t=>/^\s*gantt/.test(t),"detector"),fa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/ganttDiagram-JCBTUEKG.mjs");return{id:sr,diagram:t}},"loader"),ga={id:sr,detector:da,loader:fa},cr=ga;var mr="info",la=r(t=>/^\s*info/.test(t),"detector"),ua=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/infoDiagram-3YFTVSEB.mjs");return{id:mr,diagram:t}},"loader"),pr={id:mr,detector:la,loader:ua};var Da=r(t=>/^\s*pie/.test(t),"detector"),ya=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/pieDiagram-CU6KROY3.mjs");return{id:"pie",diagram:t}},"loader"),dr={id:"pie",detector:Da,loader:ya};var fr="quadrantChart",xa=r(t=>/^\s*quadrantChart/.test(t),"detector"),ha=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/quadrantDiagram-VICAPDV7.mjs");return{id:fr,diagram:t}},"loader"),Ea={id:fr,detector:xa,loader:ha},gr=Ea;var lr="xychart",wa=r(t=>/^\s*xychart(-beta)?/.test(t),"detector"),La=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/xychartDiagram-N2JHSOCM.mjs");return{id:lr,diagram:t}},"loader"),Sa={id:lr,detector:wa,loader:La},ur=Sa;var Dr="requirement",ba=r(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),Ma=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/requirementDiagram-JXO7QTGE.mjs");return{id:Dr,diagram:t}},"loader"),va={id:Dr,detector:ba,loader:Ma},yr=va;var xr="sequence",Aa=r(t=>/^\s*sequenceDiagram/.test(t),"detector"),Ra=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/sequenceDiagram-VS2MUI6T.mjs");return{id:xr,diagram:t}},"loader"),Ta={id:xr,detector:Aa,loader:Ra},hr=Ta;var Er="class",Ca=r((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),ka=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/classDiagram-KGZ6W3CR.mjs");return{id:Er,diagram:t}},"loader"),ja={id:Er,detector:Ca,loader:ka},wr=ja;var Lr="classDiagram",Oa=r((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),Ia=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/classDiagram-v2-72OJOZXJ.mjs");return{id:Lr,diagram:t}},"loader"),Pa={id:Lr,detector:Oa,loader:Ia},Sr=Pa;var br="state",Fa=r((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),Va=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/stateDiagram-7D4R322I.mjs");return{id:br,diagram:t}},"loader"),_a={id:br,detector:Fa,loader:Va},Mr=_a;var vr="stateDiagram",Ga=r((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),$a=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/stateDiagram-v2-36443NZ5.mjs");return{id:vr,diagram:t}},"loader"),Ha={id:vr,detector:Ga,loader:$a},Ar=Ha;var Rr="journey",za=r(t=>/^\s*journey/.test(t),"detector"),Na=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/journeyDiagram-M6C3CM3L.mjs");return{id:Rr,diagram:t}},"loader"),Ua={id:Rr,detector:za,loader:Na},Tr=Ua;var Ba=r((t,e,a)=>{f.debug(`rendering svg for syntax error +`);let i=Zt(e),o=i.append("g");i.attr("viewBox","0 0 2412 512"),Nt(i,100,512,!0),o.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),o.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),o.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),o.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),o.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),o.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),o.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),o.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${a}`)},"draw"),St={draw:Ba},Cr=St;var Ya={db:{},renderer:St,parser:{parse:r(()=>{},"parse")}},kr=Ya;var jr="flowchart-elk",qa=r((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),Xa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/flowDiagram-H6V6AXG4.mjs");return{id:jr,diagram:t}},"loader"),Wa={id:jr,detector:qa,loader:Xa},Or=Wa;var Ir="timeline",Ka=r(t=>/^\s*timeline/.test(t),"detector"),Qa=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/timeline-definition-O6YCAMPW.mjs");return{id:Ir,diagram:t}},"loader"),Za={id:Ir,detector:Ka,loader:Qa},Pr=Za;var Fr="mindmap",Ja=r(t=>/^\s*mindmap/.test(t),"detector"),ti=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/mindmap-definition-2TDM6QVE.mjs");return{id:Fr,diagram:t}},"loader"),ri={id:Fr,detector:Ja,loader:ti},Vr=ri;var _r="kanban",ei=r(t=>/^\s*kanban/.test(t),"detector"),ai=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/kanban-definition-75IXJCU3.mjs");return{id:_r,diagram:t}},"loader"),ii={id:_r,detector:ei,loader:ai},Gr=ii;var $r="sankey",oi=r(t=>/^\s*sankey(-beta)?/.test(t),"detector"),ni=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/sankeyDiagram-URQDO5SZ.mjs");return{id:$r,diagram:t}},"loader"),si={id:$r,detector:oi,loader:ni},Hr=si;var zr="packet",ci=r(t=>/^\s*packet(-beta)?/.test(t),"detector"),mi=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/diagram-QXG6HAR7.mjs");return{id:zr,diagram:t}},"loader"),Nr={id:zr,detector:ci,loader:mi};var Ur="radar",pi=r(t=>/^\s*radar-beta/.test(t),"detector"),di=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/diagram-3NCE3AQN.mjs");return{id:Ur,diagram:t}},"loader"),Br={id:Ur,detector:pi,loader:di};var Yr="block",fi=r(t=>/^\s*block(-beta)?/.test(t),"detector"),gi=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/blockDiagram-7IZFK4PR.mjs");return{id:Yr,diagram:t}},"loader"),li={id:Yr,detector:fi,loader:gi},qr=li;var Xr="treeView",ui=r(t=>/^\s*treeView-beta/.test(t),"detector"),Di=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/diagram-WEQXMOUZ.mjs");return{id:Xr,diagram:t}},"loader"),yi={id:Xr,detector:ui,loader:Di},Wr=yi;var Kr="architecture",xi=r(t=>/^\s*architecture/.test(t),"detector"),hi=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/architectureDiagram-UL44E2DR.mjs");return{id:Kr,diagram:t}},"loader"),Ei={id:Kr,detector:xi,loader:hi},Qr=Ei;var Zr="eventmodeling",wi=r(t=>/^\s*eventmodeling/.test(t),"detector"),Li=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/diagram-HNR7UZ2L.mjs");return{id:Zr,diagram:t}},"loader"),Si={id:Zr,detector:wi,loader:Li},Jr=Si;var te="ishikawa",bi=r(t=>/^\s*ishikawa(-beta)?\b/i.test(t),"detector"),Mi=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/ishikawaDiagram-BNXS4ZKH.mjs");return{id:te,diagram:t}},"loader"),re={id:te,detector:bi,loader:Mi};var ee="venn",vi=r(t=>/^\s*venn-beta/.test(t),"detector"),Ai=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/vennDiagram-MWXL3ELB.mjs");return{id:ee,diagram:t}},"loader"),Ri={id:ee,detector:vi,loader:Ai},ae=Ri;var ie="treemap",Ti=r(t=>/^\s*treemap/.test(t),"detector"),Ci=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/diagram-GF46GFSD.mjs");return{id:ie,diagram:t}},"loader"),oe={id:ie,detector:Ti,loader:Ci};var ne="wardley-beta",ki=r(t=>/^\s*wardley-beta/i.test(t),"detector"),ji=r(async()=>{let{diagram:t}=await import("./chunks/mermaid.esm.min/wardleyDiagram-CUQ6CDDI.mjs");return{id:ne,diagram:t}},"loader"),Oi={id:ne,detector:ki,loader:ji},se=Oi;var ce=!1,H=r(()=>{ce||(ce=!0,G("error",kr,t=>t.toLowerCase().trim()==="error"),G("---",{db:{clear:r(()=>{},"clear")},styles:{},renderer:{draw:r(()=>{},"draw")},parser:{parse:r(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:r(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),Q(Or,Vr,Qr),Q(Jt,Gr,Sr,wr,ir,cr,pr,dr,yr,hr,ar,rr,Pr,nr,Ar,Mr,Tr,gr,Hr,Nr,ur,qr,Jr,Wr,Br,re,oe,ae,se))},"addDiagrams");var me=r(async()=>{f.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(K).map(async([a,{detector:i,loader:o}])=>{if(o)try{Z(a)}catch{try{let{diagram:n,id:m}=await o();G(m,n,i)}catch(n){throw f.error(`Failed to load external diagram with key ${a}. Removing from detectors.`),delete K[a],n}}}))).filter(a=>a.status==="rejected");if(e.length>0){f.error(`Failed to load ${e.length} external diagrams`);for(let a of e)f.error(a);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");var z="comm",it="rule",ot="decl";var pe="@media",de="@import";var fe="@supports";var ge="@namespace",J="@keyframes";var nt="@layer",le="@scope";var bt=Math.abs,tt=String.fromCharCode;function st(t){return t.trim()}r(st,"trim");function N(t,e,a){return t.replace(e,a)}r(N,"replace");function ue(t,e,a){return t.indexOf(e,a)}r(ue,"indexof");function j(t,e){return t.charCodeAt(e)|0}r(j,"charat");function O(t,e,a){return t.slice(e,a)}r(O,"substr");function h(t){return t.length}r(h,"strlen");function ct(t){return t.length}r(ct,"sizeof");function U(t,e){return e.push(t),t}r(U,"append");var mt=1,B=1,De=0,w=0,D=0,q="";function pt(t,e,a,i,o,n,m,s){return{value:t,root:e,parent:a,type:i,props:o,children:n,line:mt,column:B,length:m,return:"",siblings:s}}r(pt,"node");function ye(){return D}r(ye,"char");function xe(){return D=w>0?j(q,--w):0,B--,D===10&&(B=1,mt--),D}r(xe,"prev");function L(){return D=w2||Y(D)>3?"":" "}r(we,"whitespace");function Le(t,e){for(;--e&&L()&&!(D<48||D>102||D>57&&D<65||D>70&&D<97););return dt(t,rt()+(e<6&&I()==32&&L()==32))}r(Le,"escaping");function Mt(t){for(;L();)switch(D){case t:return w;case 34:case 39:t!==34&&t!==39&&Mt(D);break;case 40:t===41&&Mt(t);break;case 92:L();break}return w}r(Mt,"delimiter");function Se(t,e){for(;L()&&t+D!==57;)if(t+D===84&&I()===47)break;return"/*"+dt(e,w-1)+"*"+tt(t===47?t:L())}r(Se,"commenter");function be(t){for(;!Y(I());)L();return dt(t,w)}r(be,"identifier");function Ae(t){return Ee(gt("",null,null,null,[""],t=he(t),0,[0],t))}r(Ae,"compile");function gt(t,e,a,i,o,n,m,s,c){for(var g=0,y=0,p=m,x=0,A=0,S=0,l=1,T=1,b=1,u=0,M="",C=o,R=n,E=i,d=M;T;)switch(S=u,u=L()){case 40:if(S!=108&&j(d,p-1)==58){ue(d+=N(ft(u),"&","&\f"),"&\f",bt(g?s[g-1]:0))!=-1&&(b=-1);break}case 34:case 39:case 91:d+=ft(u);break;case 9:case 10:case 13:case 32:d+=we(S);break;case 92:d+=Le(rt()-1,7);continue;case 47:switch(I()){case 42:case 47:U(Pi(Se(L(),rt()),e,a,c),c),(Y(S||1)==5||Y(I()||1)==5)&&h(d)&&O(d,-1,void 0)!==" "&&(d+=" ");break;default:d+="/"}break;case 123*l:s[g++]=h(d)*b;case 125*l:case 59:case 0:switch(u){case 0:case 125:T=0;case 59+y:b==-1&&(d=N(d,/\f/g,"")),A>0&&(h(d)-p||l===0&&S===47)&&U(A>32?ve(d+";",i,a,p-1,c):ve(N(d," ","")+";",i,a,p-2,c),c);break;case 59:d+=";";default:if(U(E=Me(d,e,a,g,y,o,s,M,C=[],R=[],p,n),n),u===123)if(y===0)gt(d,e,E,E,C,n,p,s,R);else{switch(x){case 99:if(j(d,3)===110)break;case 108:if(j(d,2)===97)break;default:y=0;case 100:case 109:case 115:}y?gt(t,E,E,i&&U(Me(t,E,E,0,0,o,s,M,o,C=[],p,R),R),o,R,p,s,i?C:R):gt(d,E,E,E,[""],R,0,s,R)}}g=y=A=0,l=b=1,M=d="",p=m;break;case 58:p=1+h(d),A=S;default:if(l<1){if(u==123)--l;else if(u==125&&l++==0&&xe()==125)continue}switch(d+=tt(u),u*l){case 38:b=y>0?1:(d+="\f",-1);break;case 44:s[g++]=(h(d)-1)*b,b=1;break;case 64:I()===45&&(d+=ft(L())),x=I(),y=p=h(M=d+=be(rt())),u++;break;case 45:S===45&&h(d)==2&&(l=0)}}return n}r(gt,"parse");function Me(t,e,a,i,o,n,m,s,c,g,y,p){for(var x=o-1,A=o===0?n:[""],S=ct(A),l=0,T=0,b=0;l0?A[u]+" "+M:N(M,/&\f/g,A[u])))&&(c[b++]=C);return pt(t,e,a,o===0?it:s,c,g,y,p)}r(Me,"ruleset");function Pi(t,e,a,i){return pt(t,e,a,z,tt(ye()),O(t,2,-2),0,i)}r(Pi,"comment");function ve(t,e,a,i,o){return pt(t,e,a,ot,O(t,0,i),O(t,i+1,-1),i,o)}r(ve,"declaration");function lt(t,e){for(var a="",i=0;i{je.forEach(t=>{t()}),je=[]},"attachFunctions");var Ie=r(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function Pe(t){let e=t.match($t);if(!e)return{text:t,metadata:{}};let a=Kt(e[1],{schema:Wt})??{};a=typeof a=="object"&&!Array.isArray(a)?a:{};let i={};return a.displayMode&&(i.displayMode=a.displayMode.toString()),a.title&&(i.title=a.title.toString()),a.config&&(i.config=a.config),{text:t.slice(e[0].length),metadata:i}}r(Pe,"extractFrontMatter");var _i=r(t=>t.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(e,a,i)=>"<"+a+i.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),Gi=r(t=>{let{text:e,metadata:a}=Pe(t),{displayMode:i,title:o,config:n={}}=a;return i&&(n.gantt||(n.gantt={}),n.gantt.displayMode=i),{title:o,config:n,text:e}},"processFrontmatter"),$i=r(t=>{let e=$.detectInit(t)??{},a=$.detectDirective(t,"wrap");return Array.isArray(a)?e.wrap=a.some(({type:i})=>i==="wrap"):a?.type==="wrap"&&(e.wrap=!0),{text:Bt(t),directive:e}},"processDirectives");function vt(t){let e=_i(t),a=Gi(e),i=$i(a.text),o=Yt(a.config,i.directive);return t=Ie(i.text),{code:t,title:a.title,config:o}}r(vt,"preprocessDiagram");function Fe(t){let e=new TextEncoder().encode(t),a=Array.from(e,i=>String.fromCodePoint(i)).join("");return btoa(a)}r(Fe,"toBase64");var Hi=5e4,zi="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",Ni="sandbox",Ui="loose",Bi="http://www.w3.org/2000/svg",Yi="http://www.w3.org/1999/xlink",qi="http://www.w3.org/1999/xhtml",Xi="100%",Wi="100%",Ki="border:0;margin:0;",Qi="margin:0",Zi="allow-top-navigation-by-user-activation allow-popups",Ji='The "iframe" tag is not supported by your browser.',to=["foreignobject"],ro=["dominant-baseline"];function $e(t){let e=vt(t);return W(),Pt(e.config??{}),e}r($e,"processAndSetConfigs");async function eo(t,e){H();try{let{code:a,config:i}=$e(t);return{diagramType:(await He(a)).type,config:i}}catch(a){if(e?.suppressErrors)return!1;throw a}}r(eo,"parse");var Ve=r((t,e,a=[])=>{let i=Tt(`{ ${a.join(" !important; ")} !important; }`);return`.${t} ${e} ${i}`},"cssImportantStyles"),ao=r((t,e=new Map)=>{let a=new CSSStyleSheet;if(t.fontFamily!==void 0&&a.insertRule(`:root { --mermaid-font-family: ${t.fontFamily}}`,a.cssRules.length),t.altFontFamily!==void 0&&a.insertRule(`:root { --mermaid-alt-font-family: ${t.altFontFamily}}`,a.cssRules.length),e instanceof Map){let s=Ft(t)?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(c=>{wt(c.styles)||s.forEach(g=>{a.insertRule(Ve(c.id,g,c.styles),a.cssRules.length)}),wt(c.textStyles)||a.insertRule(Ve(c.id,"tspan",(c?.textStyles||[]).map(g=>g.replace("color","fill"))),a.cssRules.length)})}let i="";if(t.themeCSS!==void 0)if(typeof a.replaceSync=="function"){let o=new CSSStyleSheet;o.replaceSync(t.themeCSS),i=Et(o)+` +`}else i+=`${t.themeCSS} +`;return i+Et(a)},"createCssStyles"),io=r((t,e)=>lt(Ae(`${t}{${e}}`),Te([r(function(i,o,n,m){if(i.type==="rule"&&Array.isArray(i.props)){if(i.parent&&i.parent.type===J)return;i.props=i.props.map(s=>s.startsWith(t)?s:`${t} ${s}`)}else i.type.startsWith("@")&&([...[pe,fe,nt,le,"@container","@starting-style"],J].includes(i.type)||(f.warn(`Removing unsupported at-rule ${i.type} from CSS`),i.type=z))},"addNamespace"),Re])),"compileCSS"),oo=r((t,e,a,i)=>{let o=ao(t,a),n=Ut(e,o,{...t.themeVariables,theme:t.theme,look:t.look},i);return io(i,n)},"createUserStyles"),no=r((t="",e,a)=>{let i=t;return!a&&!e&&(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=Xt(i),i=i.replace(/
    /g,"
    "),i},"cleanUpSvgCode"),so=r((t="",e)=>{let a=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":Wi,i=Fe(`${t}`);return``},"putIntoIFrame"),_e=r((t,e,a,i,o)=>{let n=t.append("div");n.attr("id",a),i&&n.attr("style",i);let m=n.append("svg").attr("id",e).attr("width","100%").attr("xmlns",Bi);return o&&m.attr("xmlns:xlink",o),m.append("g"),t},"appendDivSvgG");function Ge(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}r(Ge,"sandboxedIframe");var co=r((t,e,a,i)=>{t.getElementById(e)?.remove(),t.getElementById(a)?.remove(),t.getElementById(i)?.remove()},"removeExistingElements"),mo=r(async function(t,e,a){H();let i=$e(e);e=i.code;let o=_();f.debug(o),e.length>(o?.maxTextSize??Hi)&&(e=zi);let n=`#${t}`,m="i"+t,s="#"+m,c="d"+t,g="#"+c,y=r(()=>{let Dt=k(x?s:g).node();Dt&&"remove"in Dt&&Dt.remove()},"removeTempElements"),p=k(document.body),x=o.securityLevel===Ni,A=o.securityLevel===Ui,S=o.fontFamily;if(a!==void 0){if(a&&(a.innerHTML=""),x){let v=Ge(k(a),m);p=k(v.nodes()[0].contentDocument.body),p.node().style.margin="0"}else p=k(a);_e(p,t,c,`font-family: ${S}`,Yi)}else{if(co(document,t,c,m),x){let v=Ge(k(document.body),m);p=k(v.nodes()[0].contentDocument.body),p.node().style.margin="0"}else p=k("body");_e(p,t,c)}let l,T;try{l=await X.fromText(e,{title:i.title})}catch(v){if(o.suppressErrorRendering)throw y(),v;l=await X.fromText("error"),T=v}let b=p.select(g).node(),u=l.type,M=b.firstChild,C=M.firstChild,R=l.renderer.getClasses?.(e,l),E=oo(o,u,R,n),d=document.createElement("style");d.innerHTML=E,M.insertBefore(d,C);try{await l.renderer.draw(e,t,"11.15.0",l)}catch(v){throw o.suppressErrorRendering?y():Cr.draw(e,t,"11.15.0"),v}let qe=p.select(`${g} svg`),Xe=l.db.getAccTitle?.(),We=l.db.getAccDescription?.();fo(u,qe,Xe,We),p.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",qi);let V=p.select(g).node().innerHTML;if(f.debug("config.arrowMarkerAbsolute",o.arrowMarkerAbsolute),V=no(V,x,Ct(o.arrowMarkerAbsolute)),x){let v=p.select(g+" svg").node();V=so(V,v)}else A||(V=Vt.sanitize(V,{ADD_TAGS:to,ADD_ATTR:ro,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(Oe(),T)throw T;return y(),{diagramType:u,svg:V,bindFunctions:l.db.bindFunctions}},"render");function po(t={}){let e=Rt({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),jt(e),e?.theme&&e.theme in et?e.themeVariables=et[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=et.default.getThemeVariables(e.themeVariables));let a=typeof e=="object"?kt(e):ht();yt(a.logLevel),H()}r(po,"initialize");var He=r((t,e={})=>{let{code:a}=vt(t);return X.fromText(a,e)},"getDiagramFromText");function fo(t,e,a,i){Ce(e,t),ke(e,a,i,e.attr("id"))}r(fo,"addA11yInfo");var F=Object.freeze({render:mo,parse:eo,getDiagramFromText:He,initialize:po,getConfig:_,setConfig:It,getSiteConfig:ht,updateSiteConfig:Ot,reset:r(()=>{W()},"reset"),globalReset:r(()=>{W(xt)},"globalReset"),defaultConfig:xt});yt(_().logLevel);W(_());var go=r((t,e,a)=>{f.warn(t),Lt(t)?(a&&a(t.str,t.hash),e.push({...t,message:t.str,error:t})):(a&&a(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),ze=r(async function(t={querySelector:".mermaid"}){try{await lo(t)}catch(e){if(Lt(e)&&f.error(e.str),P.parseError&&P.parseError(e),!t.suppressErrors)throw f.error("Use the suppressErrors option to suppress these errors"),e}},"run"),lo=r(async function({postRenderCallback:t,querySelector:e,nodes:a}={querySelector:".mermaid"}){let i=F.getConfig();f.debug(`${t?"":"No "}Callback function found`);let o;if(a)o=a;else if(e)o=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");f.debug(`Found ${o.length} diagrams`),i?.startOnLoad!==void 0&&(f.debug("Start On Load: "+i?.startOnLoad),F.updateSiteConfig({startOnLoad:i?.startOnLoad}));let n=new $.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed),m,s=[];for(let c of Array.from(o)){f.info("Rendering diagram: "+c.id);if(c.getAttribute("data-processed"))continue;c.setAttribute("data-processed","true");let g=`mermaid-${n.next()}`;m=c.innerHTML,m=Gt($.entityDecode(m)).trim().replace(//gi,"
    ");let y=$.detectInit(m);y&&f.debug("Detected early reinit: ",y);try{let{svg:p,bindFunctions:x}=await Ye(g,m,c);c.innerHTML=p,t&&await t(g),x&&x(c)}catch(p){go(p,s,P.parseError)}}if(s.length>0)throw s[0]},"runThrowsErrors"),Ne=r(function(t){F.initialize(t)},"initialize"),uo=r(async function(t,e,a){f.warn("mermaid.init is deprecated. Please use run instead."),t&&Ne(t);let i={postRenderCallback:a,querySelector:".mermaid"};typeof e=="string"?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await ze(i)},"init"),Do=r(async(t,{lazyLoad:e=!0}={})=>{H(),Q(...t),e===!1&&await me()},"registerExternalDiagrams"),Ue=r(function(){if(P.startOnLoad){let{startOnLoad:t}=F.getConfig();t&&P.run().catch(e=>f.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",Ue,!1)}var yo=r(function(t){P.parseError=t},"setParseErrorHandler"),ut=[],At=!1,Be=r(async()=>{if(!At){for(At=!0;ut.length>0;){let t=ut.shift();if(t)try{await t()}catch(e){f.error("Error executing queue",e)}}At=!1}},"executeQueue"),xo=r(async(t,e)=>new Promise((a,i)=>{let o=r(()=>new Promise((n,m)=>{F.parse(t,e).then(s=>{n(s),a(s)},s=>{f.error("Error parsing",s),P.parseError?.(s),m(s),i(s)})}),"performCall");ut.push(o),Be().catch(i)}),"parse"),Ye=r((t,e,a)=>new Promise((i,o)=>{let n=r(()=>new Promise((m,s)=>{F.render(t,e,a).then(c=>{m(c),i(c)},c=>{f.error("Error parsing",c),P.parseError?.(c),s(c),o(c)})}),"performCall");ut.push(n),Be().catch(o)}),"render"),ho=r(()=>Object.keys(K).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),P={startOnLoad:!0,mermaidAPI:F,parse:xo,render:Ye,init:uo,run:ze,registerExternalDiagrams:Do,registerLayoutLoaders:Qt,initialize:Ne,parseError:void 0,contentLoaded:Ue,setParseErrorHandler:yo,detectType:at,registerIconPacks:_t,getRegisteredDiagramsMetadata:ho},qc=P;export{qc as default}; /*! Check if previously processed */ /*! * Wait for document loaded before starting the execution diff --git a/cliff.toml b/cliff.toml index b2b572b..3d797ce 100644 --- a/cliff.toml +++ b/cliff.toml @@ -78,12 +78,15 @@ commit_parsers = [ { message = "^fix", group = "Fixed" }, { message = "^docs?", group = "Changed" }, { message = "^perf", group = "Changed" }, - { message = "^refactor", group = "Changed" }, - { message = "^style", group = "Changed" }, - { message = "^revert", group = "Changed" }, - { message = "^test", group = "Changed" }, + { message = "^refactor", group = "Internal" }, + { message = "^style", group = "Internal" }, + { message = "^revert", group = "Internal" }, + { message = "^test", group = "Internal" }, + { message = "^ci", group = "Internal" }, { message = "^chore\\(release\\)", skip = true }, - { message = "^chore", group = "Changed" }, + { message = "^chore", group = "Internal" }, + # the rest + { message = ".*", group = "Internal" }, ] # Exclude commits that are not matched by any commit parser. filter_commits = false diff --git a/docs/analysis/CODE_STRUCTURE_REVIEW.md b/docs/analysis/CODE_STRUCTURE_REVIEW.md index 1ecaf77..76483d2 100644 --- a/docs/analysis/CODE_STRUCTURE_REVIEW.md +++ b/docs/analysis/CODE_STRUCTURE_REVIEW.md @@ -36,6 +36,8 @@ The codebase has good separation in some areas (`position-mapping.ts`, `decorati ### 1. Text Normalization Logic Duplication +**Status:** Resolved in 2026 refactor + **Status:** 🔴 High Priority **Location:** `src/parser.ts:124-126`, `src/parser/__tests__/helpers/crlf-helpers.ts:9-10` @@ -64,6 +66,8 @@ The codebase has good separation in some areas (`position-mapping.ts`, `decorati ### 2. Configuration Reading Duplication +**Status:** Resolved in 2026 refactor + **Status:** 🔴 High Priority **Location:** `src/extension.ts:11-24`, `src/link-provider.ts:30-31` @@ -101,6 +105,8 @@ export function getDiffViewApplyDecorations(): boolean { ### 3. Diff Detection Logic Duplication +**Status:** Resolved in 2026 refactor + **Status:** 🟡 Medium Priority **Location:** `src/decorator.ts:422-499`, `src/link-provider.ts:35-36` @@ -145,6 +151,8 @@ export function isDiffEditor(editor: TextEditor): boolean { ### 4. URL Resolution Logic Complexity +**Status:** Resolved in 2026 refactor + **Status:** 🟡 Medium Priority **Location:** `src/link-provider.ts:62-75` @@ -193,6 +201,8 @@ export function resolveLinkTarget(url: string, documentUri: vscode.Uri): vscode. ### 5. Extension.ts Domain Mixing +**Status:** Resolved in 2026 refactor + **Status:** 🟡 Medium Priority **Location:** `src/extension.ts` @@ -251,6 +261,8 @@ export function activate(context: vscode.ExtensionContext) { ### 6. Parser.ts Helper Methods +**Status:** Resolved in 2026 refactor + **Status:** 🟢 Low Priority **Location:** `src/parser.ts:249-269` @@ -388,5 +400,5 @@ src/ ## References - [AGENTS.md](../AGENTS.md) - Project guidelines -- [TECHNICAL_DEBT.md](./TECHNICAL_DEBT.md) - Related technical debt items +- [runtime-pipeline.md](../architecture/runtime-pipeline.md) - Current runtime boundaries after the refactor - [CONTRIBUTING.md](../CONTRIBUTING.md) - Contribution guidelines diff --git a/docs/analysis/TECHNICAL_DEBT.md b/docs/analysis/TECHNICAL_DEBT.md deleted file mode 100644 index 50e321f..0000000 --- a/docs/analysis/TECHNICAL_DEBT.md +++ /dev/null @@ -1,221 +0,0 @@ -# Technical Debt - -**Last Updated:** 2025-01-27 -**Purpose:** Track known technical debt, code quality issues, and areas for improvement - ---- - -## Overview - -This document tracks technical debt items that don't block current functionality but should be addressed to improve code quality, maintainability, and developer experience. - - -## Medium Priority - -### 3. Large Class: Decorator - -**Status:** Open -**Location:** `src/decorator.ts` (920 lines) - -**Issue:** -- `Decorator` class is large and handles multiple responsibilities: - - Caching - - Parsing coordination - - Decoration application - - Selection filtering - - Performance optimization - -**Impact:** -- Harder to understand and maintain -- Difficult to test individual concerns -- Risk of merge conflicts - -**Recommendation:** -- Consider splitting into smaller classes: - - `DecorationCache` - handles LRU caching - - `DecorationApplier` - applies decorations to editor - - `DecorationFilter` - filters decorations based on selection - - Keep `Decorator` as orchestrator -- Only refactor if class continues to grow or becomes hard to maintain - -**Related Files:** -- `src/decorator.ts` - ---- - -### 4. Error Handling and Logging - -**Status:** Open -**Location:** Multiple files - -**Issue:** -- Limited error logging for production debugging -- Stale document detection (`isDocumentStale`) has no logging -- Errors are thrown but not logged for debugging - -**Impact:** -- Difficult to debug production issues -- No visibility into performance problems -- User reports lack context - -**Recommendation:** -- Add debug logging for: - - Cache hits/misses - - Stale document detection - - Performance metrics (parse time, decoration count) -- Use VS Code's output channel for logging -- Make logging configurable via settings - -**Example:** -```typescript -private logDebug(message: string, ...args: any[]): void { - if (this.config.debug) { - this.outputChannel.appendLine(`[DEBUG] ${message}`, ...args); - } -} -``` - -**Related Files:** -- `src/decorator.ts:379-382` -- `src/parser.ts:135` - ---- - -### 5. Performance Metrics - -**Status:** Open -**Location:** `src/decorator.ts` - -**Issue:** -- No performance metrics or telemetry -- Cannot measure actual performance in production -- Difficult to identify performance regressions - -**Impact:** -- No data to guide optimization efforts -- Cannot detect performance degradation -- User reports lack quantitative data - -**Recommendation:** -- Add optional performance metrics: - - Parse time - - Decoration count - - Cache hit rate - - Update frequency -- Make metrics opt-in via configuration -- Log to output channel or telemetry (if available) - -**Related Files:** -- `src/decorator.ts` - ---- - -## Low Priority - -### 6. ESLint Configuration Warning - -**Status:** Open -**Location:** `scripts/validate-feature-outline.js:2` - -**Issue:** -- ESLint warning about `/* eslint-env */` comments in flat config -- Will become error in ESLint v10.0.0 - -**Impact:** -- Future ESLint upgrade will break -- Minor: only affects scripts directory - -**Recommendation:** -- Replace `/* eslint-env */` with `/* global */` or define globals in config -- Update when upgrading ESLint - -**Related Files:** -- `scripts/validate-feature-outline.js:2` - ---- - -### 7. Test Coverage Gaps (Partially Addressed) - -**Status:** Open -**Location:** Various test files - -**Issue:** -- Some edge cases may not be fully covered -- Integration tests for complex scenarios (e.g., rapid typing, large files) - -**Impact:** -- Potential bugs in edge cases -- Performance issues may not be caught - -**Recommendation:** -- Add tests for: - - Rapid typing scenarios (stress test debouncing) - - Very large files (>10K lines) - - Complex nested structures - - Concurrent document changes - -**Recent Improvements:** -- ✅ Added comprehensive tests for hover providers (image and link) -- ✅ Added tests for link click handler -- ✅ Added tests for hover utilities (URL resolution, caching, diff view handling) -- ✅ Current test count: 438+ passing tests across 33 test suites - -**Related Files:** -- `src/decorator/__tests__/` -- `src/parser/__tests__/` -- `src/markdown-parse-cache/__tests__/` -- `src/diff-context/__tests__/` -- `src/link-targets/__tests__/` -- `src/image-hover-provider/__tests__/` -- `src/link-hover-provider/__tests__/` -- `src/link-click-handler/__tests__/` - ---- - -### 8. Documentation Improvements - -**Status:** Open -**Location:** Various files - -**Issue:** -- Some complex algorithms lack detailed explanations -- Performance characteristics not documented -- Architecture decisions not fully documented - -**Impact:** -- Harder for new contributors to understand -- Risk of breaking changes during refactoring - -**Recommendation:** -- Add detailed JSDoc for complex methods -- Document performance characteristics (O(n) complexity, etc.) -- Add architecture decision records (ADRs) for major decisions - -**Related Files:** -- `src/decorator.ts` (caching strategy, debouncing) -- `src/position-mapping.ts` (CRLF handling) - ---- - -## Notes - -- **Priority Levels:** - - **High:** Blocks maintainability or causes bugs - - **Medium:** Improves code quality or developer experience - - **Low:** Nice to have, minor improvements - -- **Review Frequency:** This document should be reviewed quarterly or when major refactoring occurs. - -- **Contributing:** When adding new technical debt, include: - - Clear description of the issue - - Impact assessment - - Specific recommendations - - Related file locations - ---- - -## References - -- [Code Review Summary](./TECHNICAL_DEBT.md) - Initial review that identified these issues -- [AGENTS.md](../AGENTS.md) - Project guidelines and code style -- [CONTRIBUTING.md](../CONTRIBUTING.md) - Contribution guidelines diff --git a/docs/architecture/runtime-pipeline.md b/docs/architecture/runtime-pipeline.md new file mode 100644 index 0000000..b17b420 --- /dev/null +++ b/docs/architecture/runtime-pipeline.md @@ -0,0 +1,58 @@ +# Runtime Pipeline + +This document describes the extension's runtime flow after the 2026 structure refactor. + +## Overview + +The runtime is intentionally split into a small set of stages: + +1. `extension.ts` + - Builds shared services + - Registers commands, providers, and event handlers + - Exposes a small integration-test API + +2. `registration/` + - Wires VS Code lifecycle events and providers + - Keeps activation logic out of feature modules + +3. `markdown-parse-cache.ts` + - Owns parser reuse and document-version keyed cache entries + +4. `parser/core.ts` + - Produces `decorations`, `scopes`, `mermaidBlocks`, and `mathRegions` + - `parser.ts` remains the public facade + +5. `link-interactions/shared.ts` + - Converts parser decorations into interactive targets and VS Code ranges + - Shared by link provider, hover, and click flows + +6. `decorator.ts` + - Orchestrates filtered rendering + - Delegates state, scheduling, Mermaid rendering, and low-level application to `decorator/` helpers + +7. `logging.ts` + - Owns the shared output channel + - Centralizes warning/error reporting and opt-in performance metrics + +## Design Intent + +The structure is aimed at reducing growth pressure on single files: + +- `extension.ts` is a composition root, not a feature bucket +- parser types are stable and importable without pulling in the parser implementation +- link interactions have one shared resolution path +- decorator internals are split by responsibility: scheduling, state, application, async render coordination +- debug and performance diagnostics are opt-in and written to a single output channel + +## Current Boundaries + +- Public parser API: `src/parser.ts` +- Public decorator API: `src/decorator.ts` +- Internal helper modules should remain behavior-preserving and low-level +- New user-facing commands should land in `src/commands/` +- New registration wiring should land in `src/registration/` +- Runtime warnings should use `src/logging.ts` instead of direct `console.*` calls + +## Refactor Rule + +When adding a feature, prefer extending an existing subsystem over adding behavior to `extension.ts`, `parser.ts`, or `decorator.ts` directly unless the change is truly orchestration-only. diff --git a/eslint.config.mjs b/eslint.config.mjs index e3ab9ff..3654134 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -11,17 +11,23 @@ export default defineConfig( '@typescript-eslint/naming-convention': 'off', '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-unused-vars': [ - 'warn', + 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', }, ], - '@typescript-eslint/no-var-requires': 'warn', + '@typescript-eslint/no-var-requires': 'error', '@typescript-eslint/no-require-imports': 'off', // Allow require() for CommonJS compatibility curly: 'off', - eqeqeq: 'warn', - 'no-throw-literal': 'warn', + eqeqeq: 'error', + 'no-throw-literal': 'error', + }, + }, + { + files: ['src/**/*.ts'], + rules: { + 'no-console': 'error', }, }, { @@ -52,12 +58,13 @@ export default defineConfig( }, // Ignore strict lint rules for test files - no warnings, just ignore { - files: ['**/__mocks__/**', '**/__tests__/**', '**/*.test.ts', '**/*.test.js'], + files: ['src/test/**', '**/__mocks__/**', '**/__tests__/**', '**/*.test.ts', '**/*.test.js'], rules: { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-unused-vars': 'off', '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/no-require-imports': 'off', + 'no-console': 'off', }, }, // Node.js scripts directory - allow CommonJS and Node.js globals @@ -81,7 +88,7 @@ export default defineConfig( rules: { '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/no-require-imports': 'off', + 'no-console': 'off', }, } ); - diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 96181c7..0000000 --- a/jest.config.js +++ /dev/null @@ -1,43 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - moduleNameMapper: { - '^vscode$': '/src/test/__mocks__/vscode.ts', - '^(\\.{1,2}/.*)\\.js$': '$1', - }, - roots: ['/src'], - testMatch: ['**/__tests__/**/*.test.ts'], - collectCoverageFrom: [ - 'src/**/*.ts', - '!src/**/*.d.ts', - '!src/test/**', - '!src/extension.ts', - '!src/mermaid/**', - '!src/code-block-hover-provider.ts', - '!src/decorator/decoration-type-registry.ts', - '!src/math/math-decorations.ts', - '!src/forge-context.ts', - '!src/github-context.ts', - ], - coverageThreshold: { - global: { - statements: 80, - branches: 70, - functions: 80, - lines: 80, - }, - }, - reporters: [ - 'default', - [ - 'jest-html-reporters', - { - publicPath: './dist/test-report', - filename: 'report.html', - openReport: false, - inlineSource: false, - }, - ], - ], - coverageDirectory: './dist/coverage', -}; diff --git a/jest.setup.js b/jest.setup.js deleted file mode 100644 index b21e502..0000000 --- a/jest.setup.js +++ /dev/null @@ -1,13 +0,0 @@ -// Jest setup file to handle ESM modules -// This file runs before tests to configure the environment - -// Mock the require function to handle ESM modules -const originalRequire = require; -const Module = require('module'); - -// This is a workaround - in practice, we need Jest to transform these modules -// For now, we'll let the actual require() calls fail gracefully in tests -// and handle them in the parser-remark.ts file - - - diff --git a/package-lock.json b/package-lock.json index 3b8b992..e369a49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,9 +10,9 @@ "license": "MIT", "dependencies": { "cheerio": "1.2.0", - "katex": "^0.16.44", + "katex": "^0.16.45", "mathjax-full": "^3.2.2", - "mermaid": "11.13.0", + "mermaid": "11.15.0", "remark-gfm": "4.0.1", "remark-parse": "11.0.0", "unified": "11.0.5", @@ -21,26 +21,22 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@tsconfig/node-lts": "^24.0.0", - "@types/jest": "^30.0.0", "@types/mocha": "^10.0.10", - "@types/node": "^25.5.2", + "@types/node": "^25.6.2", "@types/unist": "^3.0.3", "@types/vscode": "1.100.0", - "@typescript-eslint/eslint-plugin": "^8.58.0", - "@typescript-eslint/parser": "^8.58.0", + "@vitest/coverage-v8": "^4.1.6", "@vscode/test-cli": "^0.0.12", "@vscode/test-electron": "^2.5.2", - "@vscode/vsce": "^3.7.1", + "@vscode/vsce": "^3.9.1", "esbuild": "^0.28.0", - "eslint": "^10.2.0", - "git-cliff": "^2.12.0", - "jest": "^30.3.0", - "jest-html-reporters": "^3.1.7", - "ovsx": "^0.10.10", + "eslint": "^10.3.0", + "git-cliff": "^2.13.1", + "ovsx": "^0.10.12", "rimraf": "^6.1.3", - "ts-jest": "^29.4.9", - "typescript": "^6.0.2", - "typescript-eslint": "^8.58.0" + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3", + "vitest": "^4.1.6" }, "engines": { "vscode": "^1.100.0" @@ -231,20 +227,29 @@ } }, "node_modules/@azure/msal-node": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.1.1.tgz", - "integrity": "sha512-71grXU6+5hl+3CL3joOxlj/AW6rmhthuTlG0fRqsTrhPArQBpZuUFzCIlKOGdcafLUa/i1hBdV78ZxJdlvRA+g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.1.5.tgz", + "integrity": "sha512-ObTeMoNPmq19X3z40et9Xvs4ZoWVeJg43PZMRLG5iwVL+2nCtAerG3YTDItqPp1CfXNwmCXBbg8jn1DOx65c3g==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "16.4.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" + "@azure/msal-common": "16.5.2", + "jsonwebtoken": "^9.0.0" }, "engines": { "node": ">=20" } }, + "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.5.2.tgz", + "integrity": "sha512-GkDEL6TYo3HgT3UuqakdgE9PZfc1hMki6+Hwgy1uddb/EauvAKfu85vVhuofRSo22D1xTnWt8Ucwfg4vSCVwvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", @@ -260,746 +265,875 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, "engines": { "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" } }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" + "license": "MIT", + "engines": { + "node": ">=18" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "node_modules/@braintree/sanitize-url": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT" }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" + "node_modules/@chevrotain/types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "license": "Apache-2.0" }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", + "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "node_modules/@esbuild/android-arm": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", + "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "node_modules/@esbuild/android-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", + "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "node_modules/@esbuild/android-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", + "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", + "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", + "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", + "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", + "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@esbuild/linux-arm": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", + "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", + "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", + "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", + "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", + "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", + "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", + "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", + "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@esbuild/linux-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", + "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", + "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", + "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", + "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", + "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", + "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", + "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", + "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", + "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "node_modules/@esbuild/win32-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", + "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@braintree/sanitize-url": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", - "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", - "license": "MIT" - }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", - "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@chevrotain/gast": "11.1.2", - "@chevrotain/types": "11.1.2", - "lodash-es": "4.17.23" + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@chevrotain/gast": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", - "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", + "node_modules/@eslint/config-helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz", + "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@chevrotain/types": "11.1.2", - "lodash-es": "4.17.23" + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", - "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/types": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", - "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", - "license": "Apache-2.0" - }, - "node_modules/@chevrotain/utils": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", - "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", - "license": "Apache-2.0" - }, - "node_modules/@emnapi/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", - "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", "dependencies": { - "@emnapi/wasi-threads": "1.2.0", - "tslib": "^2.4.0" + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@emnapi/runtime": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", - "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", - "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", - "cpu": [ - "ppc64" - ], + "node_modules/@eslint/plugin-kit": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", + "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", - "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", - "cpu": [ - "arm" - ], + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=18.18.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", - "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", - "cpu": [ - "arm64" - ], + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, "engines": { - "node": ">=18" + "node": ">=18.18.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", - "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", - "cpu": [ - "x64" - ], + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", - "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", - "cpu": [ - "arm64" - ], + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", - "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", - "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", - "cpu": [ - "arm64" - ], + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", - "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", - "cpu": [ - "x64" - ], + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mermaid-js/parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.1.1.tgz", + "integrity": "sha512-VuHdsYMK1bT6X2JbcAaWAhugTRvRBRyuZgd+c22swUeI9g/ntaxF7CY7dYarhZovofCbUNO0G7JesfmNtjYOCw==", + "license": "MIT", + "dependencies": { + "@chevrotain/types": "~11.1.1" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@node-rs/crc32": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.6.tgz", + "integrity": "sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/crc32-android-arm-eabi": "1.10.6", + "@node-rs/crc32-android-arm64": "1.10.6", + "@node-rs/crc32-darwin-arm64": "1.10.6", + "@node-rs/crc32-darwin-x64": "1.10.6", + "@node-rs/crc32-freebsd-x64": "1.10.6", + "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", + "@node-rs/crc32-linux-arm64-gnu": "1.10.6", + "@node-rs/crc32-linux-arm64-musl": "1.10.6", + "@node-rs/crc32-linux-x64-gnu": "1.10.6", + "@node-rs/crc32-linux-x64-musl": "1.10.6", + "@node-rs/crc32-wasm32-wasi": "1.10.6", + "@node-rs/crc32-win32-arm64-msvc": "1.10.6", + "@node-rs/crc32-win32-ia32-msvc": "1.10.6", + "@node-rs/crc32-win32-x64-msvc": "1.10.6" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", - "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", + "node_modules/@node-rs/crc32-android-arm-eabi": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.6.tgz", + "integrity": "sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ==", "cpu": [ "arm" ], @@ -1007,16 +1141,16 @@ "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", - "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", + "node_modules/@node-rs/crc32-android-arm64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.6.tgz", + "integrity": "sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w==", "cpu": [ "arm64" ], @@ -1024,69 +1158,69 @@ "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", - "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", + "node_modules/@node-rs/crc32-darwin-arm64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.6.tgz", + "integrity": "sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg==", "cpu": [ - "ia32" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", - "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", + "node_modules/@node-rs/crc32-darwin-x64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.6.tgz", + "integrity": "sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA==", "cpu": [ - "loong64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", - "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", + "node_modules/@node-rs/crc32-freebsd-x64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.6.tgz", + "integrity": "sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg==", "cpu": [ - "mips64el" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "freebsd" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", - "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", + "node_modules/@node-rs/crc32-linux-arm-gnueabihf": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.6.tgz", + "integrity": "sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg==", "cpu": [ - "ppc64" + "arm" ], "dev": true, "license": "MIT", @@ -1095,98 +1229,110 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", - "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", + "node_modules/@node-rs/crc32-linux-arm64-gnu": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.6.tgz", + "integrity": "sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ==", "cpu": [ - "riscv64" + "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", - "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", + "node_modules/@node-rs/crc32-linux-arm64-musl": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.6.tgz", + "integrity": "sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==", "cpu": [ - "s390x" + "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", - "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", + "node_modules/@node-rs/crc32-linux-x64-gnu": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.6.tgz", + "integrity": "sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", - "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", + "node_modules/@node-rs/crc32-linux-x64-musl": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.6.tgz", + "integrity": "sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==", "cpu": [ - "arm64" + "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ - "netbsd" + "linux" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", - "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", + "node_modules/@node-rs/crc32-wasm32-wasi": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.6.tgz", + "integrity": "sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==", "cpu": [ - "x64" + "wasm32" ], "dev": true, "license": "MIT", "optional": true, - "os": [ - "netbsd" - ], + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.5" + }, "engines": { - "node": ">=18" + "node": ">=14.0.0" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", - "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", + "node_modules/@node-rs/crc32-win32-arm64-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.6.tgz", + "integrity": "sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ==", "cpu": [ "arm64" ], @@ -1194,67 +1340,126 @@ "license": "MIT", "optional": true, "os": [ - "openbsd" + "win32" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", - "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", + "node_modules/@node-rs/crc32-win32-ia32-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.6.tgz", + "integrity": "sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw==", "cpu": [ - "x64" + "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "openbsd" + "win32" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", - "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", + "node_modules/@node-rs/crc32-win32-x64-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.6.tgz", + "integrity": "sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "openharmony" + "win32" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", - "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.129.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz", + "integrity": "sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz", + "integrity": "sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "sunos" + "android" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", - "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz", + "integrity": "sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==", "cpu": [ "arm64" ], @@ -1262,33 +1467,33 @@ "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", - "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz", + "integrity": "sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==", "cpu": [ - "ia32" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", - "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0.tgz", + "integrity": "sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==", "cpu": [ "x64" ], @@ -1296,4593 +1501,2299 @@ "license": "MIT", "optional": true, "os": [ - "win32" + "freebsd" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0.tgz", + "integrity": "sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz", + "integrity": "sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==", + "cpu": [ + "arm64" + ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@eslint/config-array": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.4.tgz", - "integrity": "sha512-lf19F24LSMfF8weXvW5QEtnLqW70u7kgit5e9PSx0MsHAFclGd1T9ynvWEMDT1w5J4Qt54tomGeAhdoAku1Xow==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz", + "integrity": "sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^3.0.4", - "debug": "^4.3.1", - "minimatch": "^10.2.4" - }, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@eslint/config-helpers": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.4.tgz", - "integrity": "sha512-jJhqiY3wPMlWWO3370M86CPJ7pt8GmEwSLglMfQhjXal07RCvhmU0as4IuUEW5SJeunfItiEetHmSxCCe9lDBg==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0.tgz", + "integrity": "sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^1.2.0" - }, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@eslint/core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.0.tgz", - "integrity": "sha512-8FTGbNzTvmSlc4cZBaShkC6YvFMG0riksYWRFKXztqVdXaQbcZLXlFbSpC05s70sGEsXAw0qwhx69JiW7hQS7A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/js": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", - "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0.tgz", + "integrity": "sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==", + "cpu": [ + "s390x" + ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "eslint": "^10.0.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@eslint/object-schema": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.4.tgz", - "integrity": "sha512-55lO/7+Yp0ISKRP0PsPtNTeNGapXaO085aELZmWCVc5SH3jfrqpuU6YgOdIxMS99ZHkQN1cXKE+cdIqwww9ptw==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz", + "integrity": "sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.0.tgz", - "integrity": "sha512-ejvBr8MQCbVsWNZnCwDXjUKq40MDmHalq7cJ6e9s/qzTUFIIo/afzt1Vui9T97FM/V/pN4YsFVoed5NIa96RDg==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz", + "integrity": "sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^1.2.0", - "levn": "^0.4.1" - }, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0.tgz", + "integrity": "sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=18.18.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0.tgz", + "integrity": "sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==", + "cpu": [ + "wasm32" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" }, "engines": { - "node": ">=18.18.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz", + "integrity": "sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "license": "MIT" - }, - "node_modules/@iconify/utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", - "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz", + "integrity": "sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^1.1.0", - "@iconify/types": "^2.0.0", - "mlly": "^1.8.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0.tgz", + "integrity": "sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } + "license": "MIT" }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", "dev": true, "license": "MIT" }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@secretlint/config-creator": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz", + "integrity": "sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==", "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@secretlint/types": "^10.2.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=20.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@secretlint/config-loader": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz", + "integrity": "sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@secretlint/profiler": "^10.2.2", + "@secretlint/resolver": "^10.2.2", + "@secretlint/types": "^10.2.2", + "ajv": "^8.17.1", + "debug": "^4.4.1", + "rc-config-loader": "^4.1.3" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@secretlint/core": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz", + "integrity": "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==", "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@secretlint/profiler": "^10.2.2", + "@secretlint/types": "^10.2.2", + "debug": "^4.4.1", + "structured-source": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@secretlint/formatter": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz", + "integrity": "sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@secretlint/resolver": "^10.2.2", + "@secretlint/types": "^10.2.2", + "@textlint/linter-formatter": "^15.2.0", + "@textlint/module-interop": "^15.2.0", + "@textlint/types": "^15.2.0", + "chalk": "^5.4.1", + "debug": "^4.4.1", + "pluralize": "^8.0.0", + "strip-ansi": "^7.1.0", + "table": "^6.9.0", + "terminal-link": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "node_modules/@secretlint/formatter/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@secretlint/node": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz", + "integrity": "sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" + "@secretlint/config-loader": "^10.2.2", + "@secretlint/core": "^10.2.2", + "@secretlint/formatter": "^10.2.2", + "@secretlint/profiler": "^10.2.2", + "@secretlint/source-creator": "^10.2.2", + "@secretlint/types": "^10.2.2", + "debug": "^4.4.1", + "p-map": "^7.0.3" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=20.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@secretlint/profiler": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz", + "integrity": "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==", "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@secretlint/resolver": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz", + "integrity": "sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/@jest/console": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", - "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", + "node_modules/@secretlint/secretlint-formatter-sarif": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz", + "integrity": "sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node-sarif-builder": "^3.2.0" } }, - "node_modules/@jest/core": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", - "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", + "node_modules/@secretlint/secretlint-rule-no-dotenv": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz", + "integrity": "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.3.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.3.0", - "jest-config": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-resolve-dependencies": "30.3.0", - "jest-runner": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "jest-watcher": "30.3.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@secretlint/types": "^10.2.2" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@jest/diff-sequences": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", - "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", + "node_modules/@secretlint/secretlint-rule-preset-recommend": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz", + "integrity": "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==", "dev": true, "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=20.0.0" } }, - "node_modules/@jest/environment": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", - "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "node_modules/@secretlint/source-creator": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz", + "integrity": "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0" + "@secretlint/types": "^10.2.2", + "istextorbinary": "^9.5.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=20.0.0" } }, - "node_modules/@jest/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", + "node_modules/@secretlint/types": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz", + "integrity": "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==", "dev": true, "license": "MIT", - "dependencies": { - "expect": "30.3.0", - "jest-snapshot": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=20.0.0" } }, - "node_modules/@jest/expect-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", - "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/fake-timers": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", - "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@sinonjs/fake-timers": "^15.0.0", - "@types/node": "*", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "node_modules/@textlint/ast-node-types": { + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.5.2.tgz", + "integrity": "sha512-fCaOxoup5LIyBEo7R1oYWE7V4bSX0KQeHh66twon9e9usaLE3ijgF8QjYsR6joCssdeCHVd0wHm7ppsEyTr6vg==", "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/@jest/globals": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", - "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", + "node_modules/@textlint/linter-formatter": { + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.5.2.tgz", + "integrity": "sha512-jAw7jWM8+wU9cG6Uu31jGyD1B+PAVePCvnPKC/oov+2iBPKk3ao30zc/Itmi7FvXo4oPaL9PmzPPQhyniPVgVg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/types": "30.3.0", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@azu/format-text": "^1.0.2", + "@azu/style-format": "^1.0.1", + "@textlint/module-interop": "15.5.2", + "@textlint/resolver": "15.5.2", + "@textlint/types": "15.5.2", + "chalk": "^4.1.2", + "debug": "^4.4.3", + "js-yaml": "^4.1.1", + "lodash": "^4.17.23", + "pluralize": "^2.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "table": "^6.9.0", + "text-table": "^0.2.0" } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "node_modules/@textlint/linter-formatter/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/@jest/reporters": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", - "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", + "node_modules/@textlint/linter-formatter/node_modules/pluralize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", + "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "node_modules/@textlint/module-interop": { + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.5.2.tgz", + "integrity": "sha512-mg6rMQ3+YjwiXCYoQXbyVfDucpTa1q5mhspd/9qHBxUq4uY6W8GU42rmT3GW0V1yOfQ9z/iRrgPtkp71s8JzXg==", "dev": true, "license": "MIT" }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/@textlint/resolver": { + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.5.2.tgz", + "integrity": "sha512-YEITdjRiJaQrGLUWxWXl4TEg+d2C7+TNNjbGPHPH7V7CCnXm+S9GTjGAL7Q2WSGJyFEKt88Jvx6XdJffRv4HEA==", "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/@jest/snapshot-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", - "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", + "node_modules/@textlint/types": { + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.5.2.tgz", + "integrity": "sha512-sJOrlVLLXp4/EZtiWKWq9y2fWyZlI8GP+24rnU5avtPWBIMm/1w97yzKrAqYF8czx2MqR391z5akhnfhj2f/AQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@textlint/ast-node-types": "15.5.2" } }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "node_modules/@tsconfig/node-lts": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/node-lts/-/node-lts-24.0.0.tgz", + "integrity": "sha512-8mSTqWwCd6aQpvxSrpQlMoA9RiUZSs7bYhL5qsLXIIaN9HQaINeoydrRu/Y7/fws4bvfuyhs0BRnW9/NI8tySg==", "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/@jest/test-result": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", - "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@jest/console": "30.3.0", - "@jest/types": "30.3.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", - "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, - "node_modules/@jest/transform": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", - "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", - "dev": true, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" } }, - "node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", - "dev": true, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@types/d3-selection": "*" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "@types/d3-selection": "*" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "@types/d3-array": "*", + "@types/geojson": "*" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@types/d3-selection": "*" } }, - "node_modules/@mermaid-js/parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.1.0.tgz", - "integrity": "sha512-gxK9ZX2+Fex5zu8LhRQoMeMPEHbc73UKZ0FQ54YrQtUxE1VVhMwzeNtKRPAu5aXks4FasbMe4xB4bWrmq6Jlxw==", + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "license": "MIT", "dependencies": { - "langium": "^4.0.0" + "@types/d3-dsv": "*" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", "license": "MIT", - "optional": true, "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" + "@types/geojson": "*" } }, - "node_modules/@node-rs/crc32": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.6.tgz", - "integrity": "sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==", - "dev": true, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "license": "MIT", - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@node-rs/crc32-android-arm-eabi": "1.10.6", - "@node-rs/crc32-android-arm64": "1.10.6", - "@node-rs/crc32-darwin-arm64": "1.10.6", - "@node-rs/crc32-darwin-x64": "1.10.6", - "@node-rs/crc32-freebsd-x64": "1.10.6", - "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", - "@node-rs/crc32-linux-arm64-gnu": "1.10.6", - "@node-rs/crc32-linux-arm64-musl": "1.10.6", - "@node-rs/crc32-linux-x64-gnu": "1.10.6", - "@node-rs/crc32-linux-x64-musl": "1.10.6", - "@node-rs/crc32-wasm32-wasi": "1.10.6", - "@node-rs/crc32-win32-arm64-msvc": "1.10.6", - "@node-rs/crc32-win32-ia32-msvc": "1.10.6", - "@node-rs/crc32-win32-x64-msvc": "1.10.6" + "dependencies": { + "@types/d3-color": "*" } }, - "node_modules/@node-rs/crc32-android-arm-eabi": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.6.tgz", - "integrity": "sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ==", - "cpu": [ - "arm" - ], - "dev": true, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@types/d3-time": "*" } }, - "node_modules/@node-rs/crc32-android-arm64": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.6.tgz", - "integrity": "sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@types/d3-path": "*" } }, - "node_modules/@node-rs/crc32-darwin-arm64": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.6.tgz", - "integrity": "sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@types/d3-selection": "*" } }, - "node_modules/@node-rs/crc32-darwin-x64": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.6.tgz", - "integrity": "sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, - "node_modules/@node-rs/crc32-freebsd-x64": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.6.tgz", - "integrity": "sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@types/ms": "*" } }, - "node_modules/@node-rs/crc32-linux-arm-gnueabihf": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.6.tgz", - "integrity": "sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg==", - "cpu": [ - "arm" - ], + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } + "license": "MIT" }, - "node_modules/@node-rs/crc32-linux-arm64-gnu": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.6.tgz", - "integrity": "sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ==", - "cpu": [ - "arm64" - ], + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", "dev": true, - "libc": [ - "glibc" - ], + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "@types/unist": "*" } }, - "node_modules/@node-rs/crc32-linux-arm64-musl": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.6.tgz", - "integrity": "sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==", - "cpu": [ - "arm64" - ], + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.2.tgz", + "integrity": "sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==", "dev": true, - "libc": [ - "musl" - ], "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "undici-types": "~7.19.0" } }, - "node_modules/@node-rs/crc32-linux-x64-gnu": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.6.tgz", - "integrity": "sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==", - "cpu": [ - "x64" - ], + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true, - "libc": [ - "glibc" - ], + "license": "MIT" + }, + "node_modules/@types/sarif": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", + "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } + "optional": true }, - "node_modules/@node-rs/crc32-linux-x64-musl": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.6.tgz", - "integrity": "sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==", - "cpu": [ - "x64" - ], + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/vscode": { + "version": "1.100.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.100.0.tgz", + "integrity": "sha512-4uNyvzHoraXEeCamR3+fzcBlh7Afs4Ifjs4epINyUX/jvdk0uzLnwiDY35UKDKnkCHP5Nu3dljl2H8lR6s+rQw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz", + "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==", "dev": true, - "libc": [ - "musl" - ], "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/type-utils": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, "engines": { - "node": ">= 10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.59.3", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@node-rs/crc32-wasm32-wasi": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.6.tgz", - "integrity": "sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==", - "cpu": [ - "wasm32" - ], + "node_modules/@typescript-eslint/parser": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz", + "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.5" + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", + "debug": "^4.4.3" }, "engines": { - "node": ">=14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@node-rs/crc32-win32-arm64-msvc": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.6.tgz", - "integrity": "sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ==", - "cpu": [ - "arm64" - ], + "node_modules/@typescript-eslint/project-service": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz", + "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.59.3", + "@typescript-eslint/types": "^8.59.3", + "debug": "^4.4.3" + }, "engines": { - "node": ">= 10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@node-rs/crc32-win32-ia32-msvc": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.6.tgz", - "integrity": "sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw==", - "cpu": [ - "ia32" - ], + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz", + "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3" + }, "engines": { - "node": ">= 10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@node-rs/crc32-win32-x64-msvc": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.6.tgz", - "integrity": "sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw==", - "cpu": [ - "x64" - ], + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz", + "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz", + "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": ">= 8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@typescript-eslint/types": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz", + "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz", + "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@typescript-eslint/project-service": "8.59.3", + "@typescript-eslint/tsconfig-utils": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": ">= 8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@typescript-eslint/utils": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz", + "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3" + }, "engines": { - "node": ">=14" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz", + "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.59.3", + "eslint-visitor-keys": "^5.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/pkgr" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/@secretlint/config-creator": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz", - "integrity": "sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==", + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.4.tgz", + "integrity": "sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/types": "^10.2.2" + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@secretlint/config-loader": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz", - "integrity": "sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==", + "node_modules/@upsetjs/venn.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", + "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "license": "MIT", + "optionalDependencies": { + "d3-selection": "^3.0.0", + "d3-transition": "^3.0.1" + } + }, + "node_modules/@vitest/coverage-v8": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.6.tgz", + "integrity": "sha512-36l628fQ/9a/8ihy97eOtEnvWQEdqULQOJtcaxtoNq0G1w3Mxd4szSahOaMM9/NGyZ+hyKcMtIW/WIxq0XQViQ==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/profiler": "^10.2.2", - "@secretlint/resolver": "^10.2.2", - "@secretlint/types": "^10.2.2", - "ajv": "^8.17.1", - "debug": "^4.4.1", - "rc-config-loader": "^4.1.3" + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.1.6", + "ast-v8-to-istanbul": "^1.0.0", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.2", + "obug": "^2.1.1", + "std-env": "^4.0.0-rc.1", + "tinyrainbow": "^3.1.0" }, - "engines": { - "node": ">=20.0.0" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "4.1.6", + "vitest": "4.1.6" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, - "node_modules/@secretlint/core": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz", - "integrity": "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==", + "node_modules/@vitest/expect": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.6.tgz", + "integrity": "sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/profiler": "^10.2.2", - "@secretlint/types": "^10.2.2", - "debug": "^4.4.1", - "structured-source": "^4.0.0" + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" }, - "engines": { - "node": ">=20.0.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@secretlint/formatter": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz", - "integrity": "sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==", + "node_modules/@vitest/mocker": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.6.tgz", + "integrity": "sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/resolver": "^10.2.2", - "@secretlint/types": "^10.2.2", - "@textlint/linter-formatter": "^15.2.0", - "@textlint/module-interop": "^15.2.0", - "@textlint/types": "^15.2.0", - "chalk": "^5.4.1", - "debug": "^4.4.1", - "pluralize": "^8.0.0", - "strip-ansi": "^7.1.0", - "table": "^6.9.0", - "terminal-link": "^4.0.0" + "@vitest/spy": "4.1.6", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" }, - "engines": { - "node": ">=20.0.0" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/@secretlint/formatter/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/@vitest/pretty-format": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.6.tgz", + "integrity": "sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "tinyrainbow": "^3.1.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@secretlint/node": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz", - "integrity": "sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==", + "node_modules/@vitest/runner": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.6.tgz", + "integrity": "sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/config-loader": "^10.2.2", - "@secretlint/core": "^10.2.2", - "@secretlint/formatter": "^10.2.2", - "@secretlint/profiler": "^10.2.2", - "@secretlint/source-creator": "^10.2.2", - "@secretlint/types": "^10.2.2", - "debug": "^4.4.1", - "p-map": "^7.0.3" + "@vitest/utils": "4.1.6", + "pathe": "^2.0.3" }, - "engines": { - "node": ">=20.0.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@secretlint/profiler": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz", - "integrity": "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==", + "node_modules/@vitest/snapshot": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.6.tgz", + "integrity": "sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.6", + "@vitest/utils": "4.1.6", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, - "node_modules/@secretlint/resolver": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz", - "integrity": "sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@secretlint/secretlint-formatter-sarif": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz", - "integrity": "sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==", + "node_modules/@vitest/spy": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.6.tgz", + "integrity": "sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==", "dev": true, "license": "MIT", - "dependencies": { - "node-sarif-builder": "^3.2.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@secretlint/secretlint-rule-no-dotenv": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz", - "integrity": "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==", + "node_modules/@vitest/utils": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.6.tgz", + "integrity": "sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/types": "^10.2.2" + "@vitest/pretty-format": "4.1.6", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/secretlint-rule-preset-recommend": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz", - "integrity": "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@secretlint/source-creator": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz", - "integrity": "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==", + "node_modules/@vscode/test-cli": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.12.tgz", + "integrity": "sha512-iYN0fDg29+a2Xelle/Y56Xvv7Nc8Thzq4VwpzAF/SIE6918rDicqfsQxV6w1ttr2+SOm+10laGuY9FG2ptEKsQ==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/types": "^10.2.2", - "istextorbinary": "^9.5.0" + "@types/mocha": "^10.0.10", + "c8": "^10.1.3", + "chokidar": "^3.6.0", + "enhanced-resolve": "^5.18.3", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^11.7.4", + "supports-color": "^10.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "vscode-test": "out/bin.mjs" }, "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/types": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz", - "integrity": "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" + "node": ">=18" } }, - "node_modules/@sinclair/typebox": { - "version": "0.34.49", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", - "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "node_modules/@vscode/test-cli/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "node_modules/@vscode/test-cli/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "type-detect": "4.0.8" + "balanced-match": "^1.0.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", - "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", + "node_modules/@vscode/test-cli/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "dependencies": { - "@sinonjs/commons": "^3.0.1" + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@textlint/ast-node-types": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.5.2.tgz", - "integrity": "sha512-fCaOxoup5LIyBEo7R1oYWE7V4bSX0KQeHh66twon9e9usaLE3ijgF8QjYsR6joCssdeCHVd0wHm7ppsEyTr6vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/linter-formatter": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.5.2.tgz", - "integrity": "sha512-jAw7jWM8+wU9cG6Uu31jGyD1B+PAVePCvnPKC/oov+2iBPKk3ao30zc/Itmi7FvXo4oPaL9PmzPPQhyniPVgVg==", + "node_modules/@vscode/test-electron": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz", + "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==", "dev": true, "license": "MIT", "dependencies": { - "@azu/format-text": "^1.0.2", - "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "15.5.2", - "@textlint/resolver": "15.5.2", - "@textlint/types": "15.5.2", - "chalk": "^4.1.2", - "debug": "^4.4.3", - "js-yaml": "^4.1.1", - "lodash": "^4.17.23", - "pluralize": "^2.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "table": "^6.9.0", - "text-table": "^0.2.0" - } - }, - "node_modules/@textlint/linter-formatter/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^8.1.0", + "semver": "^7.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@textlint/linter-formatter/node_modules/pluralize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", - "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/linter-formatter/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@vscode/vsce": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.9.1.tgz", + "integrity": "sha512-MPn5p+DoudI+3GfJSpAZZraE1lgLv0LcwbH3+xy7RgEhty3UIkmUMUA+5jPTDaxXae00AnX5u77FxGM8FhfKKA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@azure/identity": "^4.1.0", + "@secretlint/node": "^10.1.2", + "@secretlint/secretlint-formatter-sarif": "^10.1.2", + "@secretlint/secretlint-rule-no-dotenv": "^10.1.2", + "@secretlint/secretlint-rule-preset-recommend": "^10.1.2", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", + "commander": "^12.1.0", + "form-data": "^4.0.0", + "glob": "^11.0.0", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^14.1.0", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "secretlint": "^10.1.2", + "semver": "^7.5.2", + "tmp": "^0.2.3", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^3.2.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" }, "engines": { - "node": ">=8" + "node": ">= 20" + }, + "optionalDependencies": { + "keytar": "^7.7.0" } }, - "node_modules/@textlint/module-interop": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.5.2.tgz", - "integrity": "sha512-mg6rMQ3+YjwiXCYoQXbyVfDucpTa1q5mhspd/9qHBxUq4uY6W8GU42rmT3GW0V1yOfQ9z/iRrgPtkp71s8JzXg==", + "node_modules/@vscode/vsce-sign": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz", + "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==", "dev": true, - "license": "MIT" + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.6", + "@vscode/vsce-sign-alpine-x64": "2.0.6", + "@vscode/vsce-sign-darwin-arm64": "2.0.6", + "@vscode/vsce-sign-darwin-x64": "2.0.6", + "@vscode/vsce-sign-linux-arm": "2.0.6", + "@vscode/vsce-sign-linux-arm64": "2.0.6", + "@vscode/vsce-sign-linux-x64": "2.0.6", + "@vscode/vsce-sign-win32-arm64": "2.0.6", + "@vscode/vsce-sign-win32-x64": "2.0.6" + } }, - "node_modules/@textlint/resolver": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.5.2.tgz", - "integrity": "sha512-YEITdjRiJaQrGLUWxWXl4TEg+d2C7+TNNjbGPHPH7V7CCnXm+S9GTjGAL7Q2WSGJyFEKt88Jvx6XdJffRv4HEA==", + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz", + "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] }, - "node_modules/@textlint/types": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.5.2.tgz", - "integrity": "sha512-sJOrlVLLXp4/EZtiWKWq9y2fWyZlI8GP+24rnU5avtPWBIMm/1w97yzKrAqYF8czx2MqR391z5akhnfhj2f/AQ==", + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz", + "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@textlint/ast-node-types": "15.5.2" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] }, - "node_modules/@tsconfig/node-lts": { - "version": "24.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/node-lts/-/node-lts-24.0.0.tgz", - "integrity": "sha512-8mSTqWwCd6aQpvxSrpQlMoA9RiUZSs7bYhL5qsLXIIaN9HQaINeoydrRu/Y7/fws4bvfuyhs0BRnW9/NI8tySg==", + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz", + "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz", + "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "license": "SEE LICENSE IN LICENSE.txt", "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } + "os": [ + "darwin" + ] }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz", + "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz", + "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz", + "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz", + "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", - "license": "MIT", - "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", - "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", - "license": "MIT" + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@types/d3-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz", + "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@types/d3-brush": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" + "node_modules/@vscode/vsce/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, - "node_modules/@types/d3-chord": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", - "license": "MIT" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "node_modules/@vscode/vsce/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, - "node_modules/@types/d3-contour": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "license": "MIT", + "node_modules/@vscode/vsce/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "license": "MIT" - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", - "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", - "license": "MIT" - }, - "node_modules/@types/d3-drag": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "license": "MIT", + "node_modules/@vscode/vsce/node_modules/glob/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@types/d3-selection": "*" + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/d3-dsv": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "license": "MIT" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT" - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "license": "MIT", - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", - "license": "MIT" - }, - "node_modules/@types/d3-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", - "license": "MIT" - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "license": "MIT", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", - "license": "MIT" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "license": "MIT", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", - "license": "MIT" - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", - "license": "MIT" - }, - "node_modules/@types/d3-random": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", - "license": "MIT" - }, - "node_modules/@types/d3-selection": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", - "license": "MIT" - }, - "node_modules/@types/d3-shape": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", - "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT" - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "license": "MIT" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" - }, - "node_modules/@types/d3-transition": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", - "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", - "license": "MIT", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", - "license": "MIT", - "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", - "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/esrecurse": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", - "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/geojson": { - "version": "7946.0.16", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", - "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.2.tgz", - "integrity": "sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.18.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sarif": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", - "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" - }, - "node_modules/@types/vscode": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.100.0.tgz", - "integrity": "sha512-4uNyvzHoraXEeCamR3+fzcBlh7Afs4Ifjs4epINyUX/jvdk0uzLnwiDY35UKDKnkCHP5Nu3dljl2H8lR6s+rQw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", - "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/type-utils": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.58.0", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", - "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", - "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.58.0", - "@typescript-eslint/types": "^8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", - "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", - "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", - "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", - "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", - "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.58.0", - "@typescript-eslint/tsconfig-utils": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", - "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", - "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "eslint-visitor-keys": "^5.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.4.tgz", - "integrity": "sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@upsetjs/venn.js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", - "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", - "license": "MIT", - "optionalDependencies": { - "d3-selection": "^3.0.0", - "d3-transition": "^3.0.1" - } - }, - "node_modules/@vscode/test-cli": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.12.tgz", - "integrity": "sha512-iYN0fDg29+a2Xelle/Y56Xvv7Nc8Thzq4VwpzAF/SIE6918rDicqfsQxV6w1ttr2+SOm+10laGuY9FG2ptEKsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mocha": "^10.0.10", - "c8": "^10.1.3", - "chokidar": "^3.6.0", - "enhanced-resolve": "^5.18.3", - "glob": "^10.3.10", - "minimatch": "^9.0.3", - "mocha": "^11.7.4", - "supports-color": "^10.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "vscode-test": "out/bin.mjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@vscode/test-cli/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vscode/test-cli/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@vscode/test-cli/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vscode/test-electron": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz", - "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "jszip": "^3.10.1", - "ora": "^8.1.0", - "semver": "^7.6.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@vscode/vsce": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.7.1.tgz", - "integrity": "sha512-OTm2XdMt2YkpSn2Nx7z2EJtSuhRHsTPYsSK59hr3v8jRArK+2UEoju4Jumn1CmpgoBLGI6ReHLJ/czYltNUW3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/identity": "^4.1.0", - "@secretlint/node": "^10.1.2", - "@secretlint/secretlint-formatter-sarif": "^10.1.2", - "@secretlint/secretlint-rule-no-dotenv": "^10.1.2", - "@secretlint/secretlint-rule-preset-recommend": "^10.1.2", - "@vscode/vsce-sign": "^2.0.0", - "azure-devops-node-api": "^12.5.0", - "chalk": "^4.1.2", - "cheerio": "^1.0.0-rc.9", - "cockatiel": "^3.1.2", - "commander": "^12.1.0", - "form-data": "^4.0.0", - "glob": "^11.0.0", - "hosted-git-info": "^4.0.2", - "jsonc-parser": "^3.2.0", - "leven": "^3.1.0", - "markdown-it": "^14.1.0", - "mime": "^1.3.4", - "minimatch": "^3.0.3", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "secretlint": "^10.1.2", - "semver": "^7.5.2", - "tmp": "^0.2.3", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.5.0", - "yauzl": "^2.3.1", - "yazl": "^2.2.2" - }, - "bin": { - "vsce": "vsce" - }, - "engines": { - "node": ">= 20" - }, - "optionalDependencies": { - "keytar": "^7.7.0" - } - }, - "node_modules/@vscode/vsce-sign": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz", - "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==", - "dev": true, - "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optionalDependencies": { - "@vscode/vsce-sign-alpine-arm64": "2.0.6", - "@vscode/vsce-sign-alpine-x64": "2.0.6", - "@vscode/vsce-sign-darwin-arm64": "2.0.6", - "@vscode/vsce-sign-darwin-x64": "2.0.6", - "@vscode/vsce-sign-linux-arm": "2.0.6", - "@vscode/vsce-sign-linux-arm64": "2.0.6", - "@vscode/vsce-sign-linux-x64": "2.0.6", - "@vscode/vsce-sign-win32-arm64": "2.0.6", - "@vscode/vsce-sign-win32-x64": "2.0.6" - } - }, - "node_modules/@vscode/vsce-sign-alpine-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz", - "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "alpine" - ] - }, - "node_modules/@vscode/vsce-sign-alpine-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz", - "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "alpine" - ] - }, - "node_modules/@vscode/vsce-sign-darwin-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz", - "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@vscode/vsce-sign-darwin-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz", - "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@vscode/vsce-sign-linux-arm": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz", - "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-linux-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz", - "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-linux-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz", - "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-win32-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz", - "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vscode/vsce-sign-win32-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz", - "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vscode/vsce/node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@vscode/vsce/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vscode/vsce/node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vscode/vsce/node_modules/glob/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vscode/vsce/node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^9.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vscode/vsce/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@vscode/vsce/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@vscode/vsce/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@vscode/vsce/node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.9.tgz", - "integrity": "sha512-qycIHAucxy/LXAYIjmLmtQ8q9GPnMbnjG1KXhWm9o5sCr6pOYDATkMPiTNa6/v8eELyqOQ2FsEqeoFYmgv/gJg==", - "license": "MIT", - "engines": { - "node": ">=14.6" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/azure-devops-node-api": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", - "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", - "dev": true, - "license": "MIT", - "dependencies": { - "tunnel": "0.0.6", - "typed-rest-client": "^1.8.4" - } - }, - "node_modules/babel-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", - "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.3.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-plugin-istanbul/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", - "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", - "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.12", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.12.tgz", - "integrity": "sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binaryextensions": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", - "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "editions": "^6.21.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/boundary": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", - "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" - }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/c8": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", - "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@bcoe/v8-coverage": "^1.0.1", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^3.1.1", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.1.6", - "test-exclude": "^7.0.1", - "v8-to-istanbul": "^9.0.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1" - }, - "bin": { - "c8": "bin/c8.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "monocart-coverage-reports": "^2" - }, - "peerDependenciesMeta": { - "monocart-coverage-reports": { - "optional": true - } - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001781", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", - "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/cheerio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", - "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.1.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.19.0", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=20.18.1" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chevrotain": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", - "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.1.2", - "@chevrotain/gast": "11.1.2", - "@chevrotain/regexp-to-ast": "11.1.2", - "@chevrotain/types": "11.1.2", - "@chevrotain/utils": "11.1.2", - "lodash-es": "4.17.23" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "license": "MIT", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/cockatiel": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", - "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cose-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", - "license": "MIT", - "dependencies": { - "layout-base": "^1.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/@vscode/vsce/node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cytoscape": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", - "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/cytoscape-cose-bilkent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", - "license": "MIT", - "dependencies": { - "cose-base": "^1.0.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", - "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", - "license": "MIT", - "dependencies": { - "cose-base": "^2.2.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/cose-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", - "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", - "license": "MIT", - "dependencies": { - "layout-base": "^2.0.0" - } - }, - "node_modules/cytoscape-fcose/node_modules/layout-base": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", - "license": "MIT" - }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "license": "ISC", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-brush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", - "license": "ISC", - "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "d3-array": "^3.2.0" + "@isaacs/cliui": "^9.0.0" }, "engines": { - "node": ">=12" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "node_modules/@vscode/vsce/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vscode/vsce/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, "license": "ISC", "dependencies": { - "delaunator": "5" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "license": "ISC", - "engines": { - "node": ">=12" + "node_modules/@vscode/vsce/node_modules/minimatch/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "license": "ISC", + "node_modules/@vscode/vsce/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=12" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "license": "ISC", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, + "node_modules/@xmldom/xmldom": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", + "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==", + "license": "MIT", + "engines": { + "node": ">=14.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 10" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "license": "BSD-3-Clause", + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 14" } }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "license": "ISC", + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-dsv": "1 - 3" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=12" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/d3-format": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", - "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", - "license": "ISC", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "license": "ISC", "dependencies": { - "d3-array": "2.5.0 - 3" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "license": "ISC", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", "engines": { "node": ">=12" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", + "node_modules/ast-v8-to-istanbul": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.0.tgz", + "integrity": "sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" } }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/azure-devops-node-api": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" } }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", - "license": "ISC", - "engines": { - "node": ">=12" + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "license": "ISC", + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": "18 || 20 || >=22" } }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "license": "ISC", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", - "license": "BSD-3-Clause", + "node_modules/binaryextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", + "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", + "dev": true, + "license": "Artistic-2.0", "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "license": "BSD-3-Clause", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "internmap": "^1.0.0" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/d3-sankey/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", - "license": "BSD-3-Clause" - }, - "node_modules/d3-sankey/node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "license": "BSD-3-Clause", + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "d3-path": "1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/d3-sankey/node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", + "node_modules/boundary": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", + "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=12" + "node": "18 || 20 || >=22" } }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "license": "ISC", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-time": "1 - 3" + "run-applescript": "^7.0.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "license": "ISC", - "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "node_modules/c8": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", + "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", + "dev": true, "license": "ISC", "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" + "@bcoe/v8-coverage": "^1.0.1", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^7.0.1", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" }, "engines": { - "node": ">=12" + "node": ">=18" }, "peerDependencies": { - "d3-selection": "2 - 3" + "monocart-coverage-reports": "^2" + }, + "peerDependenciesMeta": { + "monocart-coverage-reports": { + "optional": true + } } }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "license": "ISC", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/dagre-d3-es": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", - "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "license": "MIT", "dependencies": { - "d3": "^7.9.0", - "lodash-es": "^4.17.21" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dayjs": { - "version": "1.11.20", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", - "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", - "license": "MIT" + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=18" } }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/decode-named-character-reference": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", - "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { - "character-entities": "^2.0.0" + "has-flag": "^4.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, + "node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", "license": "MIT", - "optional": true, "dependencies": { - "mimic-response": "^3.1.0" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=20.18.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" } }, - "node_modules/dedent": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", - "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": ">=4.0.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "ISC", + "optional": true }, - "node_modules/default-browser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "license": "MIT", "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" + "restore-cursor": "^5.0.0" }, "engines": { "node": ">=18" @@ -5891,1956 +3802,2088 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/delaunator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", - "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", - "license": "ISC", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", "dependencies": { - "robust-predicates": "^3.0.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=16" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "Apache-2.0", - "optional": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", "license": "MIT", "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "layout-base": "^1.0.0" } }, - "node_modules/diff": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", - "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=0.3.1" + "node": ">= 8" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", "dependencies": { - "domelementtype": "^2.3.0", + "boolbase": "^1.0.0", + "css-what": "^6.1.0", "domhandler": "^5.0.2", - "entities": "^4.2.0" + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, "engines": { - "node": ">= 4" + "node": ">= 6" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/dompurify": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", - "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" } }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "cose-base": "^1.0.0" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "cose-base": "^2.2.0" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", "license": "MIT" }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "license": "Apache-2.0", + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", "dependencies": { - "safe-buffer": "^5.0.1" + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/editions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/editions/-/editions-6.22.0.tgz", - "integrity": "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==", - "dev": true, - "license": "Artistic-2.0", + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { - "version-range": "^4.15.0" + "internmap": "1 - 2" }, "engines": { - "ecmascript": ">= es5", - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" + "node": ">=12" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.328", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.328.tgz", - "integrity": "sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==", - "dev": true, - "license": "ISC" + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, "engines": { "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "engines": { + "node": ">=12" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "license": "MIT", + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" + "d3-array": "^3.2.0" }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + "engines": { + "node": ">=12" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { - "once": "^1.4.0" + "delaunator": "5" + }, + "engines": { + "node": ">=12" } }, - "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", - "dev": true, - "license": "MIT", + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "d3-dispatch": "1 - 3", + "d3-selection": "3" }, "engines": { - "node": ">=10.13.0" + "node": ">=12" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" } }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { - "is-arrayish": "^0.2.1" + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", "dependencies": { - "es-errors": "^1.3.0" + "d3-array": "2.5.0 - 3" }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/esbuild": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", - "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.0", - "@esbuild/android-arm": "0.28.0", - "@esbuild/android-arm64": "0.28.0", - "@esbuild/android-x64": "0.28.0", - "@esbuild/darwin-arm64": "0.28.0", - "@esbuild/darwin-x64": "0.28.0", - "@esbuild/freebsd-arm64": "0.28.0", - "@esbuild/freebsd-x64": "0.28.0", - "@esbuild/linux-arm": "0.28.0", - "@esbuild/linux-arm64": "0.28.0", - "@esbuild/linux-ia32": "0.28.0", - "@esbuild/linux-loong64": "0.28.0", - "@esbuild/linux-mips64el": "0.28.0", - "@esbuild/linux-ppc64": "0.28.0", - "@esbuild/linux-riscv64": "0.28.0", - "@esbuild/linux-s390x": "0.28.0", - "@esbuild/linux-x64": "0.28.0", - "@esbuild/netbsd-arm64": "0.28.0", - "@esbuild/netbsd-x64": "0.28.0", - "@esbuild/openbsd-arm64": "0.28.0", - "@esbuild/openbsd-x64": "0.28.0", - "@esbuild/openharmony-arm64": "0.28.0", - "@esbuild/sunos-x64": "0.28.0", - "@esbuild/win32-arm64": "0.28.0", - "@esbuild/win32-ia32": "0.28.0", - "@esbuild/win32-x64": "0.28.0" + "node": ">=12" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/eslint": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.2.0.tgz", - "integrity": "sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.2", - "@eslint/config-array": "^0.23.4", - "@eslint/config-helpers": "^0.5.4", - "@eslint/core": "^1.2.0", - "@eslint/plugin-kit": "^0.7.0", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^9.1.2", - "eslint-visitor-keys": "^5.0.1", - "espree": "^11.2.0", - "esquery": "^1.7.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "minimatch": "^10.2.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "node": ">=12" } }, - "node_modules/eslint-scope": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", - "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@types/esrecurse": "^4.3.1", - "@types/estree": "^1.0.8", - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "d3-path": "1" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=12" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", "license": "ISC", "dependencies": { - "is-glob": "^4.0.3" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" }, "engines": { - "node": ">=10.13.0" + "node": ">=12" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { - "node": ">= 4" + "node": ">=12" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "license": "MIT", + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/espree": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", - "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { - "acorn": "^8.16.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^5.0.1" + "d3-array": "2 - 3" }, "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=12" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { - "estraverse": "^5.1.0" + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=0.10" + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { - "estraverse": "^5.2.0" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" }, "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node_modules/dagre-d3-es": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", + "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/execa": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", - "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - }, "engines": { - "node": "^18.19.0 || >=20.5.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", "license": "MIT", - "engines": { - "node": ">= 0.8.0" + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, - "license": "(MIT OR WTFPL)", + "license": "MIT", "optional": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, + "optional": true, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=4.0.0" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "bser": "2.1.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", - "dependencies": { - "pend": "~1.2.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", "dependencies": { - "is-unicode-supported": "^2.0.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "node_modules/delaunator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", + "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, "engines": { - "node": ">=16.0.0" + "node": ">=0.4.0" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" + "dequal": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", "dev": true, "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "engines": { + "node": ">=0.3.1" } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": ">=16" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "dev": true, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" + "type": "github", + "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, "engines": { - "node": ">=4.0" + "node": ">= 4" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", + "node_modules/dompurify": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.2.tgz", + "integrity": "sha512-lHeS9SA/IKeIFFyYciHBr2n0v1VMPlSj843HdLOwjb2OxNwdq9Xykxqhk+FE42MzAdHvInbAolSE4mhahPpjXA==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, - "license": "MIT", - "optional": true + "license": "MIT" }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "safe-buffer": "^5.0.1" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/editions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/editions/-/editions-6.22.0.tgz", + "integrity": "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Artistic-2.0", + "dependencies": { + "version-range": "^4.15.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "ecmascript": ">= es5", + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, + "license": "MIT" + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "optional": true, + "dependencies": { + "once": "^1.4.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=10.13.0" } }, - "node_modules/get-east-asian-width": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", - "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", - "dev": true, - "license": "MIT", + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { - "node": ">=18" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, "engines": { "node": ">= 0.4" } }, - "node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "node_modules/es-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" + "es-errors": "^1.3.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/git-cliff": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/git-cliff/-/git-cliff-2.12.0.tgz", - "integrity": "sha512-kjTm5439LsvMs/xRxndWBUetrA4aQfLE8DTbR/ER5H7fGn7ioeFG9YNAK1V7dpTtNi6k2uKYY4f3EvT8J1d+1Q==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, - "license": "MIT OR Apache-2.0", + "license": "MIT", "dependencies": { - "execa": "^9.6.0" - }, - "bin": { - "git-cliff": "lib/cli/cli.js" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=18.19 || >=20.6 || >=21" - }, - "optionalDependencies": { - "git-cliff-darwin-arm64": "2.12.0", - "git-cliff-darwin-x64": "2.12.0", - "git-cliff-linux-arm64": "2.12.0", - "git-cliff-linux-x64": "2.12.0", - "git-cliff-windows-arm64": "2.12.0", - "git-cliff-windows-x64": "2.12.0" + "node": ">= 0.4" } }, - "node_modules/git-cliff-darwin-arm64": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/git-cliff-darwin-arm64/-/git-cliff-darwin-arm64-2.12.0.tgz", - "integrity": "sha512-k3jzFDmkjc+6MjpnqvRenzMWRbZN5J+w3iQ8WNt9pSmPewNJIm92O/G6AbAxQaCbSfzQapeZ0e+5wSacVc62GA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/git-cliff-darwin-x64": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/git-cliff-darwin-x64/-/git-cliff-darwin-x64-2.12.0.tgz", - "integrity": "sha512-Kkoe+nfmXM/WMcZuC+OaIGA5vj847Ima6NEaaHnyb7Xsri+OAJryPXlABV7q6UeGfiiN2MlL8UsoHgnIEIQLqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/git-cliff-linux-arm64": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/git-cliff-linux-arm64/-/git-cliff-linux-arm64-2.12.0.tgz", - "integrity": "sha512-eTp2gZjV4LmfzdlhFsYFYuWf5mojALU03X/37r3VmnpuabaijuTEQo/zm/0BKP8gPiLKLR4ofdUvE1OSisCE1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/git-cliff-linux-x64": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/git-cliff-linux-x64/-/git-cliff-linux-x64-2.12.0.tgz", - "integrity": "sha512-abidFG6dH2N5hPUF245/kRYdwViP11Pz7ZwIW/a86CJLZ/WSE7dJt0f2cUIkxTcFSsp11OwuLc5k1hAbwmiIRw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/git-cliff-windows-arm64": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/git-cliff-windows-arm64/-/git-cliff-windows-arm64-2.12.0.tgz", - "integrity": "sha512-rFuI+D/3Yq3jqafazZw5E68HsXEvcwI/B/5IPDIZD+QqZh8vETf4IXs7wVxYWWtHQJDC+G9ZrR3vE5648mdG3A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/git-cliff-windows-x64": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/git-cliff-windows-x64/-/git-cliff-windows-x64-2.12.0.tgz", - "integrity": "sha512-jskb3nyVGr4dekHSCDM/J6iho45t37wnmMGkPNq42kOoUp04JS96yMBrNRdXfXV9ViZsaZq3NaNu1e3QkhFlyA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT OR Apache-2.0", - "optional": true, - "os": [ - "win32" + "node_modules/es-toolkit": { + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.46.1.tgz", + "integrity": "sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" ] }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "node_modules/esbuild": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", + "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "optional": true - }, - "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 6" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.0", + "@esbuild/android-arm": "0.28.0", + "@esbuild/android-arm64": "0.28.0", + "@esbuild/android-x64": "0.28.0", + "@esbuild/darwin-arm64": "0.28.0", + "@esbuild/darwin-x64": "0.28.0", + "@esbuild/freebsd-arm64": "0.28.0", + "@esbuild/freebsd-x64": "0.28.0", + "@esbuild/linux-arm": "0.28.0", + "@esbuild/linux-arm64": "0.28.0", + "@esbuild/linux-ia32": "0.28.0", + "@esbuild/linux-loong64": "0.28.0", + "@esbuild/linux-mips64el": "0.28.0", + "@esbuild/linux-ppc64": "0.28.0", + "@esbuild/linux-riscv64": "0.28.0", + "@esbuild/linux-s390x": "0.28.0", + "@esbuild/linux-x64": "0.28.0", + "@esbuild/netbsd-arm64": "0.28.0", + "@esbuild/netbsd-x64": "0.28.0", + "@esbuild/openbsd-arm64": "0.28.0", + "@esbuild/openbsd-x64": "0.28.0", + "@esbuild/openharmony-arm64": "0.28.0", + "@esbuild/sunos-x64": "0.28.0", + "@esbuild/win32-arm64": "0.28.0", + "@esbuild/win32-ia32": "0.28.0", + "@esbuild/win32-x64": "0.28.0" } }, - "node_modules/glob/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/eslint": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.3.0.tgz", + "integrity": "sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.5.5", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 0.4" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/globby/node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/globby/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.16" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">= 0.4" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/hachure-fill": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", - "license": "MIT" - }, - "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "node": ">=10.13.0" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, + "license": "MIT" + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, "engines": { - "node": ">= 0.4" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 0.4" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "function-bind": "^1.1.2" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" + "node": ">=0.10" } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "lru-cache": "^6.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } }, - "node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" + "@types/estree": "^1.0.0" } }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" }, "engines": { - "node": ">= 14" + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, + "license": "(MIT OR WTFPL)", + "optional": true, "engines": { - "node": ">= 14" + "node": ">=6" } }, - "node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=18.18.0" + "node": ">=12.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "dev": true, "funding": [ { "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "url": "https://github.com/sponsors/fastify" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "opencollective", + "url": "https://opencollective.com/fastify" } ], - "license": "BSD-3-Clause", - "optional": true + "license": "BSD-3-Clause" }, - "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=0.8.19" + "node": ">=8" } }, - "node_modules/index-to-position": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", - "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "binary-extensions": "^2.0.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { - "ci-info": "^2.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">= 6" } }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "node_modules/git-cliff": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/git-cliff/-/git-cliff-2.13.1.tgz", + "integrity": "sha512-2BzXwrom+SMHeNA5Ut+MtzqXejg0wbVwmzj3k7e9w62UQoyCDrM9UIcvtl6hnT3jocEQ1zLRQBaXXx97Gmnk7A==", "dev": true, - "license": "MIT", + "license": "MIT OR Apache-2.0", + "dependencies": { + "execa": "^9.6.0" + }, + "bin": { + "git-cliff": "lib/cli/cli.js" + }, "engines": { - "node": ">=12" + "node": "^18.19 || >=20.6" + }, + "optionalDependencies": { + "git-cliff-darwin-arm64": "2.13.1", + "git-cliff-darwin-x64": "2.13.1", + "git-cliff-linux-arm64": "2.13.1", + "git-cliff-linux-x64": "2.13.1", + "git-cliff-windows-arm64": "2.13.1", + "git-cliff-windows-x64": "2.13.1" + } + }, + "node_modules/git-cliff-darwin-arm64": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/git-cliff-darwin-arm64/-/git-cliff-darwin-arm64-2.13.1.tgz", + "integrity": "sha512-3ebPUnUlLmrSZDHknSZQmyZV7DEJVtKse8I25Am0cENET5Py9u9Hg9k8IRXdiDtHtPDs6MYZx7BOi11WtcfqSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/git-cliff-darwin-x64": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/git-cliff-darwin-x64/-/git-cliff-darwin-x64-2.13.1.tgz", + "integrity": "sha512-KZfggGAiw1EvZH3BOUclEU4eGCP2+Z+lH/N2Ni3FH9L2M1U7FYJqqaMhqgO8azTj67betvDshH8WBUkIkSsVxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/git-cliff-linux-arm64": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/git-cliff-linux-arm64/-/git-cliff-linux-arm64-2.13.1.tgz", + "integrity": "sha512-clNRcNzdvk4GKyTt3ZhhWqcrjVRghcUcGNSV/Y87YJf3Mc/zl9ajUAhnXPOBSX/KWBr2od5SmkCt0qGYagY07g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/git-cliff-linux-x64": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/git-cliff-linux-x64/-/git-cliff-linux-x64-2.13.1.tgz", + "integrity": "sha512-gZcIQhIQ1lDUMD8UieUSEZAYoyZN7nPd8O3VQoj1Ddhqll4UAS1Zxms1SU3U8pb0UTdc2m3ia/wtOnyhvbjdjQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/git-cliff-windows-arm64": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/git-cliff-windows-arm64/-/git-cliff-windows-arm64-2.13.1.tgz", + "integrity": "sha512-+XubuQv68DuDwF0u6Af5d889MEf/RD48VBQS7ZmPi4sUSCXAZqRm1/ApCsStLqxMDCf1+7s05B/kNbm9wjV80A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/git-cliff-windows-x64": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/git-cliff-windows-x64/-/git-cliff-windows-x64-2.13.1.tgz", + "integrity": "sha512-Bi8ehp1VMkomY7M/356PgovKQ8CBRiuOOkq+aWC2evQuMFfXWjG0GBlPED9QkZoUJ4iQ5ygB5DYdK3BjhaOyPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-it-type": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/is-it-type/-/is-it-type-5.1.3.tgz", - "integrity": "sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "globalthis": "^1.0.2" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=12" + "node": ">= 6" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } + "license": "MIT" }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", "dev": true, "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, "engines": { "node": ">=18" }, @@ -7848,944 +5891,619 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "node_modules/globby/node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", "dev": true, "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/globby/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "node": ">=14.16" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istextorbinary": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", - "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "binaryextensions": "^6.11.0", - "editions": "^6.21.0", - "textextensions": "^6.11.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" }, "funding": { - "url": "https://bevry.me/fund" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } + "license": "ISC" + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" }, - "node_modules/jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", - "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/core": "30.3.0", - "@jest/types": "30.3.0", - "import-local": "^3.2.0", - "jest-cli": "30.3.0" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-changed-files": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", - "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.3.0", - "p-limit": "^3.1.0" + "es-define-property": "^1.0.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=10.17.0" + "node": ">= 0.4" } }, - "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "he": "bin/he" } }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "path-key": "^3.0.0" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-changed-files/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" - }, + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", "engines": { - "node": ">=6" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/jest-changed-files/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-changed-files/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, "engines": { - "node": ">=6" + "node": ">= 14" } }, - "node_modules/jest-circus": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", - "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "p-limit": "^3.1.0", - "pretty-format": "30.3.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 14" } }, - "node_modules/jest-cli": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", - "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { - "@jest/core": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/jest-config": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", - "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.3.0", - "@jest/types": "30.3.0", - "babel-jest": "30.3.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-circus": "30.3.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-runner": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "parse-json": "^5.2.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "esbuild-register": { - "optional": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "ts-node": { - "optional": true + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ], + "license": "BSD-3-Clause", + "optional": true }, - "node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.3.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 4" } }, - "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/jest-each": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", - "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "jest-util": "30.3.0", - "pretty-format": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.8.19" } }, - "node_modules/jest-environment-node": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", - "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", + "node_modules/index-to-position": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", + "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-haste-map": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", - "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "picomatch": "^4.0.3", - "walker": "^1.0.8" - }, + "license": "ISC", + "optional": true + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "node": ">=12" } }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "binary-extensions": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=8" } }, - "node_modules/jest-html-reporters": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/jest-html-reporters/-/jest-html-reporters-3.1.7.tgz", - "integrity": "sha512-GTmjqK6muQ0S0Mnksf9QkL9X9z2FGIpNSxC52E0PHDzjPQ1XDu2+XTI3B3FS43ZiUzD1f354/5FfwbNIBzT7ew==", + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "license": "MIT", "dependencies": { - "fs-extra": "^10.0.0", - "open": "^8.0.3" + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" } }, - "node_modules/jest-html-reporters/node_modules/define-lazy-prop": { + "node_modules/is-ci/node_modules/ci-info": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/jest-html-reporters/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, "license": "MIT", "bin": { "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-html-reporters/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-html-reporters/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/jest-leak-detector": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", - "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.3.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" + "is-docker": "^3.0.0" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", - "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.3.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "bin": { + "is-inside-container": "cli.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-mock": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", - "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "node_modules/is-it-type": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/is-it-type/-/is-it-type-5.1.3.tgz", + "integrity": "sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-util": "30.3.0" + "globalthis": "^1.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=12" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "node": ">=0.12.0" } }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", - "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", - "dev": true, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve-dependencies": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", - "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", - "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.3.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", - "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/environment": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-leak-detector": "30.3.0", - "jest-message-util": "30.3.0", - "jest-resolve": "30.3.0", - "jest-runtime": "30.3.0", - "jest-util": "30.3.0", - "jest-watcher": "30.3.0", - "jest-worker": "30.3.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", - "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/globals": "30.3.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", - "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "pretty-format": "30.3.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", - "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" + "is-inside-container": "^1.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/jest-validate": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", - "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.3.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/jest-watcher": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", - "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.3.0", - "string-length": "^4.0.2" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-worker": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", - "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "node_modules/istextorbinary": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", + "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", "dev": true, - "license": "MIT", + "license": "Artistic-2.0", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.3.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "binaryextensions": "^6.11.0", + "editions": "^6.21.0", + "textextensions": "^6.11.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/js-tokens": { @@ -8808,19 +6526,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -8828,13 +6533,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -8942,9 +6640,9 @@ } }, "node_modules/katex": { - "version": "0.16.44", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.44.tgz", - "integrity": "sha512-EkxoDTk8ufHqHlf9QxGwcxeLkWRR3iOuYfRpfORgYfqc8s13bgb+YtRY59NK5ZpRaCwq1kqA6a5lpX8C/eLphQ==", + "version": "0.16.45", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.45.tgz", + "integrity": "sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -8992,24 +6690,7 @@ "node_modules/khroma": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", - "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" - }, - "node_modules/langium": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz", - "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==", - "license": "MIT", - "dependencies": { - "chevrotain": "~11.1.1", - "chevrotain-allstar": "~0.3.1", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.1.0" - }, - "engines": { - "node": ">=20.10.0", - "npm": ">=10.2.3" - } + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" }, "node_modules/layout-base": { "version": "1.0.2", @@ -9051,12 +6732,278 @@ "immediate": "~3.0.5" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "dev": true, - "license": "MIT" + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, "node_modules/linkify-it": { "version": "5.0.0", @@ -9139,13 +7086,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -9213,6 +7153,28 @@ "node": ">=10" } }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -9229,23 +7191,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, "node_modules/markdown-it": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", @@ -9517,13 +7462,6 @@ "dev": true, "license": "MIT" }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -9535,14 +7473,14 @@ } }, "node_modules/mermaid": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.13.0.tgz", - "integrity": "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==", + "version": "11.15.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.15.0.tgz", + "integrity": "sha512-pTMbcf3rWdtLiYGpmoTjHEpeY8seiy6sR+9nD7LOs8KfUbHE4lOUAprTRqRAcWSQ6MQpdX+YEsxShtGsINtPtw==", "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.2", - "@mermaid-js/parser": "^1.0.1", + "@mermaid-js/parser": "^1.1.1", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", "cytoscape": "^3.33.1", @@ -9553,27 +7491,14 @@ "dagre-d3-es": "7.0.14", "dayjs": "^1.11.19", "dompurify": "^3.3.1", + "es-toolkit": "^1.45.1", "katex": "^0.16.25", "khroma": "^2.1.0", - "lodash-es": "^4.17.23", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", - "uuid": "^11.1.0" - } - }, - "node_modules/mermaid/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" } }, "node_modules/mhchemparser": { @@ -10195,16 +8120,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", @@ -10254,6 +8169,7 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", + "optional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10423,6 +8339,25 @@ "dev": true, "license": "ISC" }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/napi-build-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", @@ -10431,22 +8366,6 @@ "license": "MIT", "optional": true }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -10454,13 +8373,6 @@ "dev": true, "license": "MIT" }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, "node_modules/node-abi": { "version": "3.89.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.89.0.tgz", @@ -10480,22 +8392,8 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", - "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/node-sarif-builder": { "version": "3.4.0", @@ -10636,12 +8534,24 @@ "node": ">= 0.4" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", + "optional": true, "dependencies": { "wrappy": "1" } @@ -10792,15 +8702,15 @@ } }, "node_modules/ovsx": { - "version": "0.10.10", - "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.10.10.tgz", - "integrity": "sha512-/X5J4VLKPUGGaMynW9hgvsGg9jmwsK/3RhODeA2yzdeDbb8PUSNcg5GQ9aPDJW/znlqNvAwQcXAyE+Cq0RRvAQ==", + "version": "0.10.12", + "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.10.12.tgz", + "integrity": "sha512-WwMj1iQDvCk02029oxPnkFXsPrHZ+WzmoNW5pJ8JGepHtL30i2JE4s3C3wqzQqj6a35vx2hp0gV3TdfefGmvMg==", "dev": true, "license": "EPL-2.0", "dependencies": { "@vscode/vsce": "^3.7.1", "commander": "^6.2.1", - "follow-redirects": "^1.14.6", + "follow-redirects": "^1.16.0", "is-ci": "^2.0.0", "leven": "^3.1.0", "semver": "^7.6.0", @@ -10869,16 +8779,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -10899,25 +8799,6 @@ "dev": true, "license": "(MIT AND Zlib)" }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parse-ms": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", @@ -11016,16 +8897,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -11106,85 +8977,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/pkg-types": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", @@ -11222,6 +9014,35 @@ "points-on-curve": "0.2.0" } }, + "node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/prebuild-install": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", @@ -11261,34 +9082,6 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/pretty-ms": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", @@ -11344,23 +9137,6 @@ "node": ">=6" } }, - "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, "node_modules/qs": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", @@ -11439,13 +9215,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -11628,29 +9397,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -11750,6 +9496,40 @@ "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", "license": "Unlicense" }, + "node_modules/rolldown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz", + "integrity": "sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.129.0", + "@rolldown/pluginutils": "1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0", + "@rolldown/binding-darwin-arm64": "1.0.0", + "@rolldown/binding-darwin-x64": "1.0.0", + "@rolldown/binding-freebsd-x64": "1.0.0", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0", + "@rolldown/binding-linux-arm64-gnu": "1.0.0", + "@rolldown/binding-linux-arm64-musl": "1.0.0", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0", + "@rolldown/binding-linux-s390x-gnu": "1.0.0", + "@rolldown/binding-linux-x64-gnu": "1.0.0", + "@rolldown/binding-linux-x64-musl": "1.0.0", + "@rolldown/binding-openharmony-arm64": "1.0.0", + "@rolldown/binding-wasm32-wasi": "1.0.0", + "@rolldown/binding-win32-arm64-msvc": "1.0.0", + "@rolldown/binding-win32-x64-msvc": "1.0.0" + } + }, "node_modules/roughjs": { "version": "4.6.6", "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", @@ -11993,6 +9773,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -12065,16 +9852,6 @@ "node": ">=10" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -12093,27 +9870,16 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -12151,12 +9917,12 @@ "license": "CC0-1.0" }, "node_modules/speech-rule-engine": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz", - "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.4.tgz", + "integrity": "sha512-i/VCLG1fvRc95pMHRqG4aQNscv+9aIsqA2oI7ZQS51sTdUcDHYX6cpT8/tqZ+enjs1tKVwbRBWgxut9SWn+f9g==", "license": "Apache-2.0", "dependencies": { - "@xmldom/xmldom": "0.9.8", + "@xmldom/xmldom": "0.9.10", "commander": "13.1.0", "wicked-good-xpath": "1.3.0" }, @@ -12173,35 +9939,19 @@ "node": ">=18" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/std-env": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/stdin-discarder": { "version": "0.2.2", @@ -12233,43 +9983,6 @@ "dev": true, "license": "MIT" }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -12387,16 +10100,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-final-newline": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", @@ -12482,22 +10185,6 @@ "node": ">=8" } }, - "node_modules/synckit": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", - "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, "node_modules/table": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", @@ -12671,6 +10358,13 @@ "url": "https://bevry.me/fund" } }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, "node_modules/tinyexec": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", @@ -12681,14 +10375,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -12728,6 +10422,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tmp": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", @@ -12738,13 +10442,6 @@ "node": ">=14.14" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12790,72 +10487,6 @@ "node": ">=6.10" } }, - "node_modules/ts-jest": { - "version": "29.4.9", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", - "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "fast-json-stable-stringify": "^2.1.0", - "handlebars": "^4.7.9", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.4", - "type-fest": "^4.41.0", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0 || ^30.0.0", - "@jest/types": "^29.0.0 || ^30.0.0", - "babel-jest": "^29.0.0 || ^30.0.0", - "jest": "^29.0.0 || ^30.0.0", - "jest-util": "^29.0.0 || ^30.0.0", - "typescript": ">=4.3 <7" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jest-util": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -12900,29 +10531,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typed-rest-client": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", @@ -12936,9 +10544,9 @@ } }, "node_modules/typescript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", - "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -12950,16 +10558,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", - "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz", + "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.58.0", - "@typescript-eslint/parser": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0" + "@typescript-eslint/eslint-plugin": "8.59.3", + "@typescript-eslint/parser": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12986,20 +10594,6 @@ "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", "license": "MIT" }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/underscore": { "version": "1.13.8", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", @@ -13017,9 +10611,9 @@ } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", "dev": true, "license": "MIT" }, @@ -13120,72 +10714,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -13211,13 +10739,16 @@ "license": "MIT" }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist-node/bin/uuid" } }, "node_modules/v8-to-istanbul": { @@ -13287,63 +10818,198 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "node_modules/vite": { + "version": "8.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.12.tgz", + "integrity": "sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg==", + "dev": true, "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.14", + "rolldown": "1.0.0", + "tinyglobby": "^0.2.16" + }, + "bin": { + "vite": "bin/vite.js" + }, "engines": { - "node": ">=14.0.0" + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.17.5" + "engines": { + "node": ">=12" }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "node_modules/vitest": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.6.tgz", + "integrity": "sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==", + "dev": true, "license": "MIT", "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" + "@vitest/expect": "4.1.6", + "@vitest/mocker": "4.1.6", + "@vitest/pretty-format": "4.1.6", + "@vitest/runner": "4.1.6", + "@vitest/snapshot": "4.1.6", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.6", + "@vitest/browser-preview": "4.1.6", + "@vitest/browser-webdriverio": "4.1.6", + "@vitest/coverage-istanbul": "4.1.6", + "@vitest/coverage-v8": "4.1.6", + "@vitest/ui": "4.1.6", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } } }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", - "license": "MIT" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "license": "MIT" - }, - "node_modules/vscode-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", - "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", - "license": "MIT" - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/whatwg-encoding": { @@ -13384,6 +11050,23 @@ "node": ">= 8" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wicked-good-xpath": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", @@ -13400,13 +11083,6 @@ "node": ">=0.10.0" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, "node_modules/workerpool": { "version": "9.3.4", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", @@ -13517,21 +11193,8 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "optional": true }, "node_modules/wsl-utils": { "version": "0.1.0", @@ -13659,14 +11322,17 @@ } }, "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.0.tgz", + "integrity": "sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==", "dev": true, "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/yauzl-promise": { diff --git a/package.json b/package.json index ecdfede..8b9a9ad 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ ], "activationEvents": [ "onLanguage:markdown", + "onLanguage:mdx", "onLanguage:skill", "onLanguage:markdoc", "onLanguage:mdc", @@ -152,6 +153,18 @@ "description": "Override clickable mention and issue reference links", "markdownDescription": "Override git-remote context auto-detection for clickable mention and issue links. `true` forces links on; `false` forces links off; leave unset to use origin remote auto-detection." }, + "markdownInlineEditor.debug.logging.enabled": { + "type": "boolean", + "default": false, + "description": "Enable Markdown Inline Editor debug logging", + "markdownDescription": "Write debug and warning messages to the `Markdown Inline Editor` output channel." + }, + "markdownInlineEditor.debug.performance.enabled": { + "type": "boolean", + "default": false, + "description": "Enable performance metric logging", + "markdownDescription": "Write parse and decoration timing metrics to the `Markdown Inline Editor` output channel." + }, "markdownInlineEditor.colors.heading1": { "type": "string", "description": "Hex color for level-1 headings", @@ -252,13 +265,13 @@ "scripts": { "lint": "eslint .", "lint:docs": "node scripts/validate-feature-outline.js", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch", - "test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --coverage", + "test": "vitest run", + "test:watch": "vitest", + "test:coverage": "vitest run --coverage", "test:e2e": "npm run bundle && npm run compile:e2e && vscode-test", "test:e2e:cursor": "npm run bundle && npm run compile:e2e && node scripts/cursor-test.mjs", - "test:report": "NODE_OPTIONS=--experimental-vm-modules jest && echo 'HTML report generated at: dist/test-report/report.html'", - "test:crlf": "NODE_OPTIONS=--experimental-vm-modules jest --testPathPatterns='(crlf|position-mapping|cache-crlf)'", + "test:report": "vitest run --coverage && echo HTML coverage report: dist/coverage/index.html", + "test:crlf": "vitest run src/parser/__tests__/parser-crlf.test.ts src/link-provider/__tests__/link-provider-crlf.test.ts src/decorator/__tests__/decorator-crlf.test.ts src/decorator/__tests__/decorator-cache-crlf.test.ts src/position-mapping/__tests__/position-mapping.test.ts", "clean": "rimraf dist", "copy:mermaid": "node scripts/copy-mermaid.js", "compile": "tsc --project tsconfig.build.json", @@ -273,16 +286,17 @@ "prepublishOnly": "npm run clean && npm run build" }, "overrides": { - "@xmldom/xmldom": "0.9.9", + "@xmldom/xmldom": "0.9.10", "diff": "^8.0.3", "lodash-es": "4.18.1", - "serialize-javascript": "^7.0.4" + "serialize-javascript": "^7.0.4", + "uuid": "^14.0.0" }, "dependencies": { "cheerio": "1.2.0", - "katex": "^0.16.44", + "katex": "^0.16.45", "mathjax-full": "^3.2.2", - "mermaid": "11.13.0", + "mermaid": "11.15.0", "remark-gfm": "4.0.1", "remark-parse": "11.0.0", "unified": "11.0.5", @@ -291,25 +305,21 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@tsconfig/node-lts": "^24.0.0", - "@types/jest": "^30.0.0", + "@vitest/coverage-v8": "^4.1.6", "@types/mocha": "^10.0.10", - "@types/node": "^25.5.2", + "@types/node": "^25.6.2", "@types/unist": "^3.0.3", "@types/vscode": "1.100.0", - "@typescript-eslint/eslint-plugin": "^8.58.0", - "@typescript-eslint/parser": "^8.58.0", "@vscode/test-cli": "^0.0.12", "@vscode/test-electron": "^2.5.2", - "@vscode/vsce": "^3.7.1", + "@vscode/vsce": "^3.9.1", "esbuild": "^0.28.0", - "eslint": "^10.2.0", - "git-cliff": "^2.12.0", - "jest": "^30.3.0", - "jest-html-reporters": "^3.1.7", - "ovsx": "^0.10.10", + "eslint": "^10.3.0", + "git-cliff": "^2.13.1", + "ovsx": "^0.10.12", "rimraf": "^6.1.3", - "ts-jest": "^29.4.9", - "typescript": "^6.0.2", - "typescript-eslint": "^8.58.0" + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3", + "vitest": "^4.1.6" } } diff --git a/src/code-block-hover-provider.ts b/src/code-block-hover-provider.ts index 0ffdb3f..2ca7cff 100644 --- a/src/code-block-hover-provider.ts +++ b/src/code-block-hover-provider.ts @@ -5,6 +5,7 @@ import { MarkdownParseCache } from './markdown-parse-cache'; import { renderMermaidSvgNatural, createErrorSvg, svgToDataUri } from './mermaid/mermaid-renderer'; import { svgToDataUriBase64 } from './mermaid/svg-processor'; import * as cheerio from 'cheerio'; +import { logWarn } from './logging'; /** * Configuration for code block hover previews @@ -249,7 +250,7 @@ export class CodeBlockHoverProvider implements vscode.HoverProvider { height: Math.round(hoverHeight), }; } catch (error) { - console.warn('[Code Block Hover] Mermaid render failed:', error instanceof Error ? error.message : error); + logWarn('[Code Block Hover] Mermaid render failed', error); // Create error SVG to display in hover instead of returning undefined // Extract meaningful error message let errorMessage: string; @@ -514,7 +515,7 @@ export class CodeBlockHoverProvider implements vscode.HoverProvider { return new vscode.Hover(markdown, hoverRange); } catch (error) { - console.warn(`[Code Block Hover] Failed to create hover for ${language}:`, error); + logWarn(`[Code Block Hover] Failed to create hover for ${language}`, error); return undefined; } } diff --git a/src/commands/__tests__/navigate-to-anchor.test.ts b/src/commands/__tests__/navigate-to-anchor.test.ts new file mode 100644 index 0000000..929ca67 --- /dev/null +++ b/src/commands/__tests__/navigate-to-anchor.test.ts @@ -0,0 +1,53 @@ +import type { Mock } from 'vitest'; +import * as vscode from 'vscode'; +import { createNavigateToAnchorCommand } from '../navigate-to-anchor'; + +describe('navigate-to-anchor command', () => { + it('opens document and selects matching heading', async () => { + let handler: ((anchor: string, documentUri: string) => Promise) | undefined; + (vscode.commands.registerCommand as Mock).mockImplementation((_id, cb) => { + handler = cb; + return { dispose: vi.fn() }; + }); + + const document = new (vscode.TextDocument as any)( + vscode.Uri.file('/test.md'), + 'markdown', + 1, + '# Title\n## My Heading' + ); + const editor = new (vscode.TextEditor as any)(document, []); + editor.revealRange = vi.fn(); + (vscode.workspace.openTextDocument as Mock).mockResolvedValue(document); + (vscode.window.showTextDocument as Mock).mockResolvedValue(editor); + + createNavigateToAnchorCommand(); + await handler?.('my-heading', 'file:///test.md'); + + expect(vscode.workspace.openTextDocument).toHaveBeenCalled(); + expect(editor.revealRange).toHaveBeenCalled(); + expect(editor.selection).toBeDefined(); + }); + + it('shows message when anchor is missing', async () => { + let handler: ((anchor: string, documentUri: string) => Promise) | undefined; + (vscode.commands.registerCommand as Mock).mockImplementation((_id, cb) => { + handler = cb; + return { dispose: vi.fn() }; + }); + + const document = new (vscode.TextDocument as any)( + vscode.Uri.file('/test.md'), + 'markdown', + 1, + '# Title' + ); + (vscode.workspace.openTextDocument as Mock).mockResolvedValue(document); + (vscode.window.showTextDocument as Mock).mockResolvedValue(new (vscode.TextEditor as any)(document, [])); + + createNavigateToAnchorCommand(); + await handler?.('missing', 'file:///test.md'); + + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith('Anchor "missing" not found'); + }); +}); diff --git a/src/commands/__tests__/toggle-decorations.test.ts b/src/commands/__tests__/toggle-decorations.test.ts new file mode 100644 index 0000000..d3bf863 --- /dev/null +++ b/src/commands/__tests__/toggle-decorations.test.ts @@ -0,0 +1,54 @@ +import type { Mock } from 'vitest'; +import * as vscode from 'vscode'; +import { createToggleDecorationsCommand } from '../toggle-decorations'; + +describe('toggle-decorations command', () => { + it('registers command and shows resulting state', async () => { + let handler: (() => void) | undefined; + (vscode.commands.registerCommand as Mock).mockImplementation((_id, cb) => { + handler = cb; + return { dispose: vi.fn() }; + }); + + const decorator = { + toggleDecorations: vi.fn(() => false), + activeEditor: { + document: { + uri: { toString: () => 'file:///test.md' }, + }, + }, + }; + vi.spyOn(vscode.workspace, 'asRelativePath' as any).mockReturnValue('test.md'); + + createToggleDecorationsCommand(decorator as any); + handler?.(); + + expect(vscode.commands.registerCommand).toHaveBeenCalledWith( + 'mdInline.toggleDecorations', + expect.any(Function) + ); + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith( + 'Markdown decorations disabled for test.md' + ); + }); + + it('falls back to a generic file label without an active editor', () => { + let handler: (() => void) | undefined; + (vscode.commands.registerCommand as Mock).mockImplementation((_id, cb) => { + handler = cb; + return { dispose: vi.fn() }; + }); + + const decorator = { + toggleDecorations: vi.fn(() => true), + activeEditor: undefined, + }; + + createToggleDecorationsCommand(decorator as any); + handler?.(); + + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith( + 'Markdown decorations enabled for this file' + ); + }); +}); diff --git a/src/commands/navigate-to-anchor.ts b/src/commands/navigate-to-anchor.ts new file mode 100644 index 0000000..c8329d0 --- /dev/null +++ b/src/commands/navigate-to-anchor.ts @@ -0,0 +1,35 @@ +import * as vscode from 'vscode'; +import { normalizeAnchorText } from '../position-mapping'; + +async function navigateToAnchor(anchor: string, documentUri: string): Promise { + const uri = vscode.Uri.parse(documentUri); + const document = await vscode.workspace.openTextDocument(uri); + const editor = await vscode.window.showTextDocument(document); + const text = document.getText(); + const lines = text.split('\n'); + + for (let i = 0; i < lines.length; i++) { + const headingMatch = lines[i].match(/^#+\s+(.+)$/); + if (!headingMatch) { + continue; + } + + if (normalizeAnchorText(headingMatch[1]) !== anchor) { + continue; + } + + const position = new vscode.Position(i, 0); + editor.revealRange(new vscode.Range(position, position), vscode.TextEditorRevealType.InCenter); + editor.selection = new vscode.Selection(position, position); + return; + } + + void vscode.window.showInformationMessage(`Anchor "${anchor}" not found`); +} + +export function createNavigateToAnchorCommand(): vscode.Disposable { + return vscode.commands.registerCommand( + 'markdown-inline-editor.navigateToAnchor', + navigateToAnchor + ); +} diff --git a/src/commands/toggle-decorations.ts b/src/commands/toggle-decorations.ts new file mode 100644 index 0000000..bbc4987 --- /dev/null +++ b/src/commands/toggle-decorations.ts @@ -0,0 +1,14 @@ +import * as vscode from 'vscode'; +import { Decorator } from '../decorator'; + +export function createToggleDecorationsCommand(decorator: Decorator): vscode.Disposable { + return vscode.commands.registerCommand('mdInline.toggleDecorations', () => { + const enabled = decorator.toggleDecorations(); + const fileName = decorator.activeEditor + ? vscode.workspace.asRelativePath(decorator.activeEditor.document.uri) + : 'this file'; + void vscode.window.showInformationMessage( + `Markdown decorations ${enabled ? 'enabled' : 'disabled'} for ${fileName}` + ); + }); +} diff --git a/src/config.ts b/src/config.ts index 90d32bf..9a78e63 100644 --- a/src/config.ts +++ b/src/config.ts @@ -93,6 +93,18 @@ export const config = { .get('mentions.enabled', true); }, }, + debug: { + loggingEnabled(): boolean { + return vscode.workspace + .getConfiguration(SECTION) + .get('debug.logging.enabled', false); + }, + performanceEnabled(): boolean { + return vscode.workspace + .getConfiguration(SECTION) + .get('debug.performance.enabled', false); + }, + }, colors: { heading1(): string | undefined { return getColorConfig('heading1'); diff --git a/src/decorator.ts b/src/decorator.ts index 418c812..a4de84a 100644 --- a/src/decorator.ts +++ b/src/decorator.ts @@ -1,87 +1,36 @@ -import { Range, Position, TextEditor, TextDocument, TextDocumentChangeEvent, window, TextEditorSelectionChangeKind, ColorThemeKind, workspace, DecorationOptions, Memento } from 'vscode'; -import { createHash } from 'crypto'; +import { DecorationOptions, Range, TextEditor, TextDocument, TextDocumentChangeEvent, window, TextEditorSelectionChangeKind, Memento } from 'vscode'; import { DecorationRange, DecorationType, MermaidBlock, MathRegion, ScopeRange } from './parser'; -import { mapNormalizedToOriginal } from './position-mapping'; import { config } from './config'; import { isDiffLikeUri, isDiffViewVisible } from './diff-context'; import { MarkdownParseCache } from './markdown-parse-cache'; +import { + applyFilteredDecorations, + buildScopeEntries, + createRange as createEditorRange, + isSelectionOrCursorInsideOffsets as selectionIntersectsOffsets, +} from './decorator/editor-decoration-applier'; +import { FileDecorationStateStore } from './decorator/file-decoration-state'; +import { MermaidUpdateCoordinator } from './decorator/mermaid-update-coordinator'; import { DecorationTypeRegistry } from './decorator/decoration-type-registry'; import { filterDecorationsForEditor, ScopeEntry } from './decorator/visibility-model'; import { handleCheckboxClick } from './decorator/checkbox-toggle'; import { MermaidDiagramDecorations } from './decorator/mermaid-diagram-decorations'; +import { DecoratorUpdateScheduler } from './decorator/update-scheduler'; import { MathDecorations } from './math/math-decorations'; -import { renderMermaidSvg, svgToDataUri, createErrorSvg } from './mermaid/mermaid-renderer'; import { MermaidHoverIndicatorDecorationType } from './decorations'; - -/** Workspace state key prefix for per-file decoration toggle persistence. */ -const DECORATION_STATE_KEY_PREFIX = 'mdInline.decorationsEnabled'; +import { isSupportedMarkdownLanguage } from './language-support'; +import { logDebug, logPerformanceMetric } from './logging'; +import { applyMathDecorationsForEditor } from './decorator/math-region-application'; /** * Performance and caching constants. */ const PERFORMANCE_CONSTANTS = { - /** Debounce timeout for document changes (ms) - balances responsiveness vs performance */ DEBOUNCE_TIMEOUT_MS: 150, - /** Maximum timeout for requestIdleCallback (ms) - ensures updates don't wait indefinitely */ IDLE_CALLBACK_TIMEOUT_MS: 300, - /** Max Mermaid renders in flight (bounded parallelism) */ MERMAID_MAX_CONCURRENCY: 4, } as const; -type MermaidBlockKeyCacheEntry = { - theme: 'default' | 'dark'; - fontFamily?: string; - numLines: number; - key: string; -}; - -// Cache hash computation results per block object (cleared automatically on GC / parse cache eviction). -const mermaidBlockKeyCache = new WeakMap(); - -function getMermaidBlockCacheKey( - block: MermaidBlock, - theme: 'default' | 'dark', - fontFamily?: string -): string { - const cached = mermaidBlockKeyCache.get(block); - if ( - cached && - cached.theme === theme && - cached.fontFamily === fontFamily && - cached.numLines === block.numLines - ) { - return cached.key; - } - - const keySource = `${block.source}\n${theme}\n${fontFamily ?? ''}\n${block.numLines}`; - const key = createHash('sha256').update(keySource).digest('hex'); - mermaidBlockKeyCache.set(block, { theme, fontFamily, numLines: block.numLines, key }); - return key; -} - -async function mapWithConcurrency( - items: readonly T[], - maxConcurrency: number, - mapper: (item: T, index: number) => Promise -): Promise { - const results: R[] = new Array(items.length); - let nextIndex = 0; - - const worker = async () => { - while (true) { - const index = nextIndex++; - if (index >= items.length) { - return; - } - results[index] = await mapper(items[index], index); - } - }; - - const concurrency = Math.max(1, Math.min(maxConcurrency, items.length)); - await Promise.all(Array.from({ length: concurrency }, () => worker())); - return results; -} - /** * Manages the application of text decorations to markdown documents in VS Code. @@ -109,32 +58,28 @@ export class Decorator { onApply: ((nonEmptyTypeCount: number) => void) | undefined = undefined; private parseCache: MarkdownParseCache; - private updateTimeout: NodeJS.Timeout | undefined; - - /** Pending update batching: track last document version that triggered an update */ - private pendingUpdateVersion = new Map(); - - /** requestIdleCallback handle for idle updates */ - private idleCallbackHandle: number | undefined; - - /** Per-file decoration enabled state, keyed by URI string */ - private fileDecorationState = new Map(); - - /** Workspace state for persisting per-file toggle state across sessions */ - private workspaceState?: Memento; /** Whether to skip decorations in diff views (inverse of applyDecorations setting) */ private skipDecorationsInDiffView = true; private decorationTypes: DecorationTypeRegistry; private mermaidDecorations = new MermaidDiagramDecorations(); + private readonly mermaidCoordinator = new MermaidUpdateCoordinator( + this.mermaidDecorations, + PERFORMANCE_CONSTANTS.MERMAID_MAX_CONCURRENCY + ); private mathDecorations = new MathDecorations(); - private mermaidUpdateToken = 0; private mermaidHoverIndicatorDecorationType = MermaidHoverIndicatorDecorationType(); + private readonly fileDecorationState: FileDecorationStateStore; + private readonly updateScheduler: DecoratorUpdateScheduler; constructor(parseCache: MarkdownParseCache, workspaceState?: Memento) { this.parseCache = parseCache; - this.workspaceState = workspaceState; + this.fileDecorationState = new FileDecorationStateStore(workspaceState); + this.updateScheduler = new DecoratorUpdateScheduler( + PERFORMANCE_CONSTANTS.DEBOUNCE_TIMEOUT_MS, + PERFORMANCE_CONSTANTS.IDLE_CALLBACK_TIMEOUT_MS + ); this.decorationTypes = new DecorationTypeRegistry({ getGhostFaintOpacity: () => this.getGhostFaintOpacity(), getFrontmatterDelimiterOpacity: () => this.getFrontmatterDelimiterOpacity(), @@ -169,11 +114,7 @@ export class Decorator { * decorator.setActiveEditor(vscode.window.activeTextEditor); */ setActiveEditor(textEditor: TextEditor | undefined) { - // Clear any pending debounced updates - if (this.updateTimeout) { - clearTimeout(this.updateTimeout); - this.updateTimeout = undefined; - } + this.updateScheduler.cancel(); if (!textEditor) { return; @@ -235,51 +176,14 @@ export class Decorator { } const document = event?.document || this.activeEditor.document; - const cacheKey = document.uri.toString(); // Invalidate cache on document change if (event) { this.invalidateCache(document); } - - // Track this version to batch updates - this.pendingUpdateVersion.set(cacheKey, document.version); - - // Clear any pending timeout-based updates - if (this.updateTimeout) { - clearTimeout(this.updateTimeout); - this.updateTimeout = undefined; - } - - // Cancel any pending idle callback - if (this.idleCallbackHandle !== undefined) { - this.cancelIdleCallback(this.idleCallbackHandle); - this.idleCallbackHandle = undefined; - } - - // Debounce with two-tier strategy: - // 1. Short timeout for responsive feedback - // 2. Fallback to idle callback for heavy work during continuous typing - this.updateTimeout = setTimeout(() => { - this.updateTimeout = undefined; - - // Check if document version changed since we scheduled this update (batching) - const latestVersion = this.activeEditor?.document.version; - const scheduledVersion = this.pendingUpdateVersion.get(cacheKey); - - if (latestVersion !== undefined && scheduledVersion !== undefined && latestVersion !== scheduledVersion) { - // Document changed again, skip this update (another one is queued) - return; - } - - // Use requestIdleCallback wrapper for non-urgent updates - // This will use requestIdleCallback in browser or setTimeout in Node.js - this.idleCallbackHandle = this.requestIdleCallback(() => { - this.idleCallbackHandle = undefined; - this.updateDecorationsInternal(); - this.pendingUpdateVersion.delete(cacheKey); - }, { timeout: PERFORMANCE_CONSTANTS.IDLE_CALLBACK_TIMEOUT_MS }); - }, PERFORMANCE_CONSTANTS.DEBOUNCE_TIMEOUT_MS); + this.updateScheduler.schedule(document, () => { + this.updateDecorationsInternal(); + }); } /** @@ -291,9 +195,7 @@ export class Decorator { const uri = this.activeEditor?.document.uri.toString(); if (!uri) { return true; } - const next = !this.isEnabledForUri(uri); - this.fileDecorationState.set(uri, next); - void this.workspaceState?.update(`${DECORATION_STATE_KEY_PREFIX}.${uri}`, next); + const next = this.fileDecorationState.toggle(uri); if (next) { // Re-enable: update decorations immediately @@ -325,12 +227,7 @@ export class Decorator { * @returns {boolean} True if decorations are enabled for that file */ private isEnabledForUri(uri: string): boolean { - let cached = this.fileDecorationState.get(uri); - if (cached === undefined) { - cached = this.workspaceState?.get(`${DECORATION_STATE_KEY_PREFIX}.${uri}`, true) ?? true; - this.fileDecorationState.set(uri, cached); - } - return cached; + return this.fileDecorationState.isEnabled(uri); } /** @@ -340,22 +237,7 @@ export class Decorator { * @param {string} newUri - The new file URI string */ renameFile(oldUri: string, newUri: string): void { - const oldKey = `${DECORATION_STATE_KEY_PREFIX}.${oldUri}`; - const newKey = `${DECORATION_STATE_KEY_PREFIX}.${newUri}`; - - // Migrate in-memory state - const cachedValue = this.fileDecorationState.get(oldUri); - if (cachedValue !== undefined) { - this.fileDecorationState.set(newUri, cachedValue); - this.fileDecorationState.delete(oldUri); - } - - // Migrate persisted state, using cached value when available to avoid a redundant read - const persistedValue = cachedValue ?? this.workspaceState?.get(oldKey, undefined); - if (persistedValue !== undefined) { - void this.workspaceState?.update(newKey, persistedValue); - void this.workspaceState?.update(oldKey, undefined); - } + this.fileDecorationState.renameFile(oldUri, newUri); } /** @@ -402,6 +284,7 @@ export class Decorator { // Early exit if decorations are disabled for this file if (!this.isEnabledForUri(document.uri.toString())) { + logDebug('skip decoration update for disabled file', { uri: document.uri.toString() }); return; } @@ -412,21 +295,31 @@ export class Decorator { // Check if we should skip decorations in diff mode if (this.skipDecorationsInDiffView && this.isDiffEditor()) { + logDebug('skip decoration update in diff view', { uri: document.uri.toString() }); this.clearAllDecorations(); return; } // Parse document (uses cache if version unchanged) + const cycleStart = Date.now(); const version = document.version; const { decorations, scopes, text, mermaidBlocks, mathRegions } = this.parseDocument(document); + const parseDurationMs = Date.now() - cycleStart; // Re-validate version before applying (race condition protection) if (document.version !== version) { + logDebug('skip stale decoration update', { + uri: document.uri.toString(), + scheduledVersion: version, + currentVersion: document.version, + }); return; // Document changed during parse, skip this update } // Filter decorations based on selections (pass original text for offset adjustment) + const filterStart = Date.now(); const filtered = this.filterDecorations(decorations, scopes, text); + const filterDurationMs = Date.now() - filterStart; // Apply decorations this.applyDecorations(filtered); @@ -438,6 +331,20 @@ export class Decorator { } } void this.updateMermaidDiagrams(mermaidBlocks, text, document.version); + if (config.debug.performanceEnabled()) { + logPerformanceMetric('decorator.update', { + uri: document.uri.toString(), + version, + parseMs: parseDurationMs, + filterMs: filterDurationMs, + totalMs: Date.now() - cycleStart, + decorations: decorations.length, + scopes: scopes.length, + mermaidBlocks: mermaidBlocks.length, + mathRegions: mathRegions.length, + filteredDecorationTypes: filtered.size, + }); + } } /** @@ -446,21 +353,12 @@ export class Decorator { */ private applyMathDecorations(mathRegions: MathRegion[], normalizedText: string): void { if (!this.activeEditor) return; - const editor = this.activeEditor; - const regionsWithRanges = mathRegions.map((region) => { - const inside = this.isSelectionOrCursorInsideOffsets( - region.startPos, - region.endPos, - normalizedText, - editor.selections, - editor.document - ); - return { - region, - range: inside ? null : this.createRange(region.startPos, region.endPos, normalizedText), - }; - }); - this.mathDecorations.apply(editor, regionsWithRanges); + applyMathDecorationsForEditor( + this.activeEditor, + mathRegions, + normalizedText, + this.mathDecorations + ); } /** @@ -478,7 +376,7 @@ export class Decorator { // 'mdc' (#61): Nuxt Content .mdc files assigned languageId 'mdc' by vscode-mdc. // 'juliamarkdown' (#61): Julia Markdown files (VS Code built-in identifier). // 'rmarkdown' (#61): R Markdown files assigned languageId 'rmarkdown' by vscode-R. - return ['markdown', 'md', 'mdx', 'skill', 'markdoc', 'mdc', 'juliamarkdown', 'rmarkdown'].includes(this.activeEditor.document.languageId); + return isSupportedMarkdownLanguage(this.activeEditor.document.languageId); } /** @@ -496,7 +394,6 @@ export class Decorator { return false; } - // Check the active editor first if (isDiffLikeUri(this.activeEditor.document.uri)) { return true; } @@ -543,125 +440,13 @@ export class Decorator { } const editor = this.activeEditor; - if (mermaidBlocks.length === 0) { - this.mermaidDecorations.clear(editor); - editor.setDecorations(this.mermaidHoverIndicatorDecorationType, []); - return; - } - - const token = ++this.mermaidUpdateToken; - const theme = window.activeColorTheme.kind === ColorThemeKind.Dark || - window.activeColorTheme.kind === ColorThemeKind.HighContrast - ? 'dark' - : 'default'; - const fontFamily = workspace.getConfiguration('editor').get('fontFamily'); - - const rangesByKey = new Map(); - const dataUrisByKey = new Map(); - const indicatorRanges: Range[] = []; - - const originalText = editor.document.getText(); - - // Deduplicate renders for identical keys during this update (parallel-safe). - const dataUriPromisesByKey = new Map>(); - - const results = await mapWithConcurrency( + await this.mermaidCoordinator.update( + editor, mermaidBlocks, - PERFORMANCE_CONSTANTS.MERMAID_MAX_CONCURRENCY, - async (block): Promise<{ key: string; range: Range; dataUri: string; indicatorRange: Range } | null> => { - // Early exit checks (token/version can change while we await renders). - if (token !== this.mermaidUpdateToken || editor.document.version !== documentVersion) { - return null; - } - - if (this.isSelectionOrCursorInsideOffsets(block.startPos, block.endPos, text, editor.selections, editor.document)) { - return null; - } - - const range = this.createRange(block.startPos, block.endPos, text); - if (!range) { - return null; - } - - // Add indicator decoration at the start of the mermaid block content - // Place it at the beginning of the first line of content (after opening fence line). - const blockStart = mapNormalizedToOriginal(block.startPos, text); - const openingFenceLineEnd = originalText.indexOf('\n', blockStart); - const contentStart = openingFenceLineEnd !== -1 ? openingFenceLineEnd + 1 : blockStart; - - const contentStartPos = editor.document.positionAt(contentStart); - // Create a small range (1 character) at the start of content for the indicator. - const line = editor.document.lineAt(contentStartPos.line); - const indicatorEndChar = Math.min(contentStartPos.character + 1, line.text.length); - const indicatorRange = new Range( - contentStartPos, - new Position(contentStartPos.line, indicatorEndChar) - ); - - const key = getMermaidBlockCacheKey(block, theme, fontFamily); - - let dataUriPromise = dataUriPromisesByKey.get(key); - if (!dataUriPromise) { - dataUriPromise = (async () => { - try { - const svg = await renderMermaidSvg(block.source, { theme, fontFamily, numLines: block.numLines }); - return svgToDataUri(svg); - } catch (error) { - console.warn('Mermaid render failed:', error instanceof Error ? error.message : error); - // Create error SVG to display instead of silently failing. - let errorMessage: string; - if (error instanceof Error) { - errorMessage = error.message || error.toString() || 'Rendering failed'; - } else if (typeof error === 'string') { - errorMessage = error; - } else { - errorMessage = String(error) || 'Rendering failed'; - } - if (!errorMessage || errorMessage.trim().length === 0) { - errorMessage = 'Unknown rendering error occurred'; - } - const errorSvg = createErrorSvg( - errorMessage, - Math.max(400, block.numLines * 20), - block.numLines * 20, - theme === 'dark' - ); - return svgToDataUri(errorSvg); - } - })(); - dataUriPromisesByKey.set(key, dataUriPromise); - } - - const dataUri = await dataUriPromise; - - if (token !== this.mermaidUpdateToken || editor.document.version !== documentVersion) { - return null; - } - - return { key, range, dataUri, indicatorRange }; - } + text, + documentVersion, + this.mermaidHoverIndicatorDecorationType ); - - // Merge results sequentially (single apply at end). - for (const result of results) { - if (!result) { - continue; - } - dataUrisByKey.set(result.key, result.dataUri); - const ranges = rangesByKey.get(result.key) || []; - ranges.push(result.range); - rangesByKey.set(result.key, ranges); - indicatorRanges.push(result.indicatorRange); - } - - if (token !== this.mermaidUpdateToken || editor.document.version !== documentVersion) { - return; - } - - this.mermaidDecorations.apply(editor, rangesByKey, dataUrisByKey); - - // Apply hover indicator decorations - editor.setDecorations(this.mermaidHoverIndicatorDecorationType, indicatorRanges); } private isSelectionOrCursorInsideOffsets( @@ -671,41 +456,14 @@ export class Decorator { selections: readonly Range[], document: TextDocument ): boolean { - const mappedStart = mapNormalizedToOriginal(startPos, text); - const mappedEnd = mapNormalizedToOriginal(endPos, text); - - return selections.some((selection) => { - const selectionStart = document.offsetAt(selection.start); - const selectionEnd = document.offsetAt(selection.end); - if (selectionStart === selectionEnd) { - return selectionStart >= mappedStart && selectionStart <= mappedEnd; - } - return selectionStart <= mappedEnd && selectionEnd >= mappedStart; - }); + return selectionIntersectsOffsets(startPos, endPos, text, selections, document); } /** * Builds scope entries from parser-emitted scope ranges. */ private buildScopeEntries(scopes: ScopeRange[], originalText: string): ScopeEntry[] { - if (!this.activeEditor || scopes.length === 0) { - return []; - } - - const entries: ScopeEntry[] = []; - for (const scope of scopes) { - const range = this.createRange(scope.startPos, scope.endPos, originalText); - if (range) { - entries.push({ - startPos: scope.startPos, - endPos: scope.endPos, - range, - kind: scope.kind, - }); - } - } - - return entries; + return buildScopeEntries(this.activeEditor, scopes, originalText); } /** @@ -745,42 +503,7 @@ export class Decorator { if (!this.activeEditor) { return; } - - // Types that use per-range renderOptions (DecorationOptions, not plain Range) - const renderOptionsTypes = new Set([ - 'emoji', 'orderedListItem', 'tablePipe', 'tableSeparatorPipe', 'tableSeparatorDash', 'tableCell', - ]); - - // Apply all decorations by iterating through the type map - for (const [type, decorationType] of this.decorationTypes.getMap().entries()) { - if (type === 'emoji') { - if (!config.emojis.enabled()) { - this.activeEditor.setDecorations(decorationType, []); - continue; - } - const emojiRanges = filteredDecorations.get(type) as DecorationOptions[] | undefined; - this.activeEditor.setDecorations(decorationType, emojiRanges || []); - continue; - } - - if (renderOptionsTypes.has(type)) { - const optionsRanges = filteredDecorations.get(type) as DecorationOptions[] | undefined; - this.activeEditor.setDecorations(decorationType, optionsRanges || []); - continue; - } - - const ranges = filteredDecorations.get(type) as Range[] | undefined; - this.activeEditor.setDecorations(decorationType, ranges || []); - } - - const ghostFaintRanges = (filteredDecorations.get('ghostFaint') as Range[] | undefined) || []; - this.activeEditor.setDecorations(this.decorationTypes.getGhostFaintDecorationType(), ghostFaintRanges); - - // Fire optional test hook (E2E only — undefined in production). - if (this.onApply) { - const nonEmptyTypeCount = [...filteredDecorations.values()].filter(r => r.length > 0).length; - this.onApply(nonEmptyTypeCount); - } + applyFilteredDecorations(this.activeEditor, filteredDecorations, this.decorationTypes, this.onApply); } /** @@ -917,48 +640,11 @@ export class Decorator { * Dispose of resources and clear any pending updates. */ dispose() { - if (this.updateTimeout) { - clearTimeout(this.updateTimeout); - this.updateTimeout = undefined; - } - if (this.idleCallbackHandle !== undefined) { - this.cancelIdleCallback(this.idleCallbackHandle); - this.idleCallbackHandle = undefined; - } - this.pendingUpdateVersion.clear(); - + this.updateScheduler.dispose(); this.decorationTypes.dispose(); this.mermaidHoverIndicatorDecorationType.dispose(); } - /** - * Wrapper for requestIdleCallback that falls back to setTimeout if not available. - * - * VS Code extensions run in Node.js, which doesn't have requestIdleCallback. - * This method uses setTimeout as a fallback to simulate idle behavior. - * - * @private - * @param {Function} callback - The callback to execute when idle - * @param {Object} options - Options for requestIdleCallback - * @returns {number} Handle for cancellation - */ - private requestIdleCallback(callback: () => void, options?: { timeout?: number }): number { - // VS Code runs in Node.js, use setTimeout as fallback - // In future, if running in browser context, we could check for requestIdleCallback - return setTimeout(callback, options?.timeout || 50) as unknown as number; - } - - /** - * Wrapper for cancelIdleCallback that falls back to clearTimeout if not available. - * - * @private - * @param {number} handle - The handle returned by requestIdleCallback - */ - private cancelIdleCallback(handle: number): void { - // VS Code runs in Node.js, use clearTimeout as fallback - clearTimeout(handle); - } - /** * Convert character positions to VS Code Range. @@ -975,20 +661,9 @@ export class Decorator { * @returns {Range | null} VS Code Range or null if invalid */ private createRange(startPos: number, endPos: number, originalText?: string): Range | null { - if (!this.activeEditor) return null; - - try { - // Map normalized positions to original document positions - const mappedStart = mapNormalizedToOriginal(startPos, originalText); - const mappedEnd = mapNormalizedToOriginal(endPos, originalText); - - const start = this.activeEditor.document.positionAt(mappedStart); - const end = this.activeEditor.document.positionAt(mappedEnd); - return new Range(start, end); - } catch { - // Invalid position - return null; - } + return this.activeEditor + ? createEditorRange(this.activeEditor, startPos, endPos, originalText) + : null; } } diff --git a/src/decorator/__tests__/checkbox-toggle.test.ts b/src/decorator/__tests__/checkbox-toggle.test.ts index dc951f8..f0425c1 100644 --- a/src/decorator/__tests__/checkbox-toggle.test.ts +++ b/src/decorator/__tests__/checkbox-toggle.test.ts @@ -1,3 +1,4 @@ +import type { Mock } from 'vitest'; import { handleCheckboxClick } from '../checkbox-toggle'; import { workspace, WorkspaceEdit, Selection, Position, Uri, TextDocument } from '../../test/__mocks__/vscode'; @@ -14,7 +15,7 @@ function makeEditor(lineText: string, cursorChar: number) { describe('handleCheckboxClick', () => { beforeEach(() => { - (workspace.applyEdit as jest.Mock).mockClear(); + (workspace.applyEdit as Mock).mockClear(); }); describe('returns false (no toggle)', () => { @@ -49,7 +50,7 @@ describe('handleCheckboxClick', () => { const result = handleCheckboxClick(editor as any); expect(result).toBe(true); expect(workspace.applyEdit).toHaveBeenCalledTimes(1); - const edit = (workspace.applyEdit as jest.Mock).mock.calls[0][0] as WorkspaceEdit; + const edit = (workspace.applyEdit as Mock).mock.calls[0][0] as WorkspaceEdit; const edits = edit.getEdits(); expect(edits).toHaveLength(1); expect(edits[0].newText).toBe('x'); @@ -60,7 +61,7 @@ describe('handleCheckboxClick', () => { const editor = makeEditor('- [ ] task', 3); const result = handleCheckboxClick(editor as any); expect(result).toBe(true); - const edit = (workspace.applyEdit as jest.Mock).mock.calls[0][0] as WorkspaceEdit; + const edit = (workspace.applyEdit as Mock).mock.calls[0][0] as WorkspaceEdit; expect(edit.getEdits()[0].newText).toBe('x'); }); @@ -69,7 +70,7 @@ describe('handleCheckboxClick', () => { const editor = makeEditor('- [ ] task', 4); const result = handleCheckboxClick(editor as any); expect(result).toBe(true); - const edit = (workspace.applyEdit as jest.Mock).mock.calls[0][0] as WorkspaceEdit; + const edit = (workspace.applyEdit as Mock).mock.calls[0][0] as WorkspaceEdit; expect(edit.getEdits()[0].newText).toBe('x'); }); }); @@ -80,7 +81,7 @@ describe('handleCheckboxClick', () => { const editor = makeEditor('- [x] done', 3); const result = handleCheckboxClick(editor as any); expect(result).toBe(true); - const edit = (workspace.applyEdit as jest.Mock).mock.calls[0][0] as WorkspaceEdit; + const edit = (workspace.applyEdit as Mock).mock.calls[0][0] as WorkspaceEdit; expect(edit.getEdits()[0].newText).toBe(' '); }); @@ -88,7 +89,7 @@ describe('handleCheckboxClick', () => { const editor = makeEditor('- [X] done', 3); const result = handleCheckboxClick(editor as any); expect(result).toBe(true); - const edit = (workspace.applyEdit as jest.Mock).mock.calls[0][0] as WorkspaceEdit; + const edit = (workspace.applyEdit as Mock).mock.calls[0][0] as WorkspaceEdit; expect(edit.getEdits()[0].newText).toBe(' '); }); }); @@ -109,7 +110,7 @@ describe('handleCheckboxClick', () => { const editor = makeEditor('[ ] a [ ] b', 7); // cursor inside second checkbox const result = handleCheckboxClick(editor as any); expect(result).toBe(true); - const edit = (workspace.applyEdit as jest.Mock).mock.calls[0][0] as WorkspaceEdit; + const edit = (workspace.applyEdit as Mock).mock.calls[0][0] as WorkspaceEdit; const edits = edit.getEdits(); // The replaced range should be inside the second checkbox (char 7) expect(edits[0].range.start.character).toBe(7); // bracketStart(6) + 1 diff --git a/src/decorator/__tests__/config-colors.test.ts b/src/decorator/__tests__/config-colors.test.ts index b95ea81..6a756e9 100644 --- a/src/decorator/__tests__/config-colors.test.ts +++ b/src/decorator/__tests__/config-colors.test.ts @@ -1,8 +1,8 @@ import { workspace } from '../../test/__mocks__/vscode'; import { config } from '../../config'; -const mockGet = jest.fn(); -const mockGetConfiguration = jest.fn().mockReturnValue({ get: mockGet }); +const mockGet = vi.fn(); +const mockGetConfiguration = vi.fn().mockReturnValue({ get: mockGet }); (workspace as any).getConfiguration = mockGetConfiguration; diff --git a/src/decorator/__tests__/decorator-cache-crlf.test.ts b/src/decorator/__tests__/decorator-cache-crlf.test.ts index 8d40c48..085b028 100644 --- a/src/decorator/__tests__/decorator-cache-crlf.test.ts +++ b/src/decorator/__tests__/decorator-cache-crlf.test.ts @@ -2,7 +2,7 @@ import { TextDocument, Uri } from '../../test/__mocks__/vscode'; import { createCRLFText } from '../../parser/__tests__/helpers/crlf-helpers'; describe('Decorator - Cache with CRLF', () => { - // Note: Full decorator cache tests are limited due to ESM module loading issues in Jest. + // Note: Full decorator cache tests are limited due to ESM module loading issues in tests. // These tests verify CRLF handling in mock documents. // The critical position mapping tests are in decorator-position-mapping.test.ts diff --git a/src/decorator/__tests__/decorator-crlf.test.ts b/src/decorator/__tests__/decorator-crlf.test.ts index 43bdfbb..2c03823 100644 --- a/src/decorator/__tests__/decorator-crlf.test.ts +++ b/src/decorator/__tests__/decorator-crlf.test.ts @@ -2,7 +2,7 @@ import { TextDocument, Uri } from '../../test/__mocks__/vscode'; import { createCRLFText } from '../../parser/__tests__/helpers/crlf-helpers'; describe('Decorator - CRLF Line Endings', () => { - // Note: Full decorator tests are limited due to ESM module loading issues in Jest. + // Note: Full decorator tests are limited due to ESM module loading issues in tests. // The critical position mapping tests are in decorator-position-mapping.test.ts describe('CRLF text handling', () => { diff --git a/src/decorator/__tests__/decorator-diff-mode.test.ts b/src/decorator/__tests__/decorator-diff-mode.test.ts index 205adb9..77fe392 100644 --- a/src/decorator/__tests__/decorator-diff-mode.test.ts +++ b/src/decorator/__tests__/decorator-diff-mode.test.ts @@ -5,7 +5,7 @@ import { isDiffLikeUri } from '../../diff-context'; * Tests for diff mode detection functionality. * * Note: Full Decorator integration tests are limited due to ESM module loading - * issues in Jest (similar to decorator-crlf.test.ts). These tests verify the + * issues in the test runner (similar to decorator-crlf.test.ts). These tests verify the * URI scheme detection logic which is the core of diff mode detection. * * Manual testing in VS Code is required to verify full integration: diff --git a/src/decorator/__tests__/decorator-filtering.test.ts b/src/decorator/__tests__/decorator-filtering.test.ts index 0baa964..adae5d7 100644 --- a/src/decorator/__tests__/decorator-filtering.test.ts +++ b/src/decorator/__tests__/decorator-filtering.test.ts @@ -1,4 +1,4 @@ -jest.mock('../../parser', () => ({ +vi.mock('../../parser', () => ({ MarkdownParser: class { extractDecorations() { return []; diff --git a/src/decorator/__tests__/decorator-math.test.ts b/src/decorator/__tests__/decorator-math.test.ts index 31106a1..49549da 100644 --- a/src/decorator/__tests__/decorator-math.test.ts +++ b/src/decorator/__tests__/decorator-math.test.ts @@ -3,8 +3,10 @@ * raw LaTeX is shown (no math decoration applied for that region). */ -jest.mock('../../math/math-renderer', () => ({ - renderMathToDataUri: jest.fn((source: string) => `data:image/svg+xml,${source}`), +import type { Mock } from 'vitest'; + +vi.mock('../../math/math-renderer', () => ({ + renderMathToDataUri: vi.fn((source: string) => `data:image/svg+xml,${source}`), })); import { Decorator } from '../../decorator'; @@ -19,7 +21,7 @@ const mathRegions = [ function createDecoratorWithMathCache(customText?: string, customMathRegions?: typeof mathRegions): Decorator & { parseCache: { get: (doc: ReturnType) => unknown }; applyMathDecorations: (regions: typeof mathRegions, normalizedText: string) => void; - mathDecorations: { apply: jest.Mock; clear: jest.Mock }; + mathDecorations: { apply: Mock; clear: Mock }; } { const entry = { version: 1, @@ -36,15 +38,15 @@ function createDecoratorWithMathCache(customText?: string, customMathRegions?: t }; const decorator = new Decorator(parseCache as any) as any; decorator.mathDecorations = { - apply: jest.fn(), - clear: jest.fn(), + apply: vi.fn(), + clear: vi.fn(), }; return decorator; } describe('Decorator - Math reveal on select', () => { afterEach(() => { - jest.restoreAllMocks(); + vi.restoreAllMocks(); }); it('applies math decoration when cursor is outside math region', () => { @@ -56,7 +58,7 @@ describe('Decorator - Math reveal on select', () => { (decorator as any).updateDecorationsInternal(); expect(decorator.mathDecorations.apply).toHaveBeenCalled(); - const calls = (decorator.mathDecorations.apply as jest.Mock).mock.calls; + const calls = (decorator.mathDecorations.apply as Mock).mock.calls; const lastCall = calls[calls.length - 1]; const regionsWithRanges = lastCall[1]; expect(regionsWithRanges).toHaveLength(1); @@ -72,7 +74,7 @@ describe('Decorator - Math reveal on select', () => { (decorator as any).updateDecorationsInternal(); expect(decorator.mathDecorations.apply).toHaveBeenCalled(); - const calls = (decorator.mathDecorations.apply as jest.Mock).mock.calls; + const calls = (decorator.mathDecorations.apply as Mock).mock.calls; const lastCall = calls[calls.length - 1]; const regionsWithRanges = lastCall[1]; expect(regionsWithRanges).toHaveLength(1); @@ -88,7 +90,7 @@ describe('Decorator - Math reveal on select', () => { (decorator as any).updateDecorationsInternal(); expect(decorator.mathDecorations.apply).toHaveBeenCalled(); - const calls = (decorator.mathDecorations.apply as jest.Mock).mock.calls; + const calls = (decorator.mathDecorations.apply as Mock).mock.calls; const lastCall = calls[calls.length - 1]; const regionsWithRanges = lastCall[1]; expect(regionsWithRanges[0].range).toBeNull(); @@ -106,7 +108,7 @@ describe('Decorator - Math reveal on select', () => { decorator.setActiveEditor(editor); (decorator as any).updateDecorationsInternal(); - const lastCall = (decorator.mathDecorations.apply as jest.Mock).mock.calls.slice(-1)[0]; + const lastCall = (decorator.mathDecorations.apply as Mock).mock.calls.slice(-1)[0]; const regionsWithRanges = lastCall[1]; expect(regionsWithRanges).toHaveLength(1); expect(regionsWithRanges[0].range).toBeNull(); @@ -126,7 +128,7 @@ describe('Decorator - Math reveal on select', () => { decorator.setActiveEditor(editor); (decorator as any).updateDecorationsInternal(); - const lastCall = (decorator.mathDecorations.apply as jest.Mock).mock.calls.slice(-1)[0]; + const lastCall = (decorator.mathDecorations.apply as Mock).mock.calls.slice(-1)[0]; const regionsWithRanges = lastCall[1]; expect(regionsWithRanges[0].range).not.toBeNull(); }); @@ -144,7 +146,7 @@ describe('Decorator - Math reveal on select', () => { (decorator as any).updateDecorationsInternal(); expect(decorator.mathDecorations.apply).toHaveBeenCalled(); - const lastCall = (decorator.mathDecorations.apply as jest.Mock).mock.calls.slice(-1)[0]; + const lastCall = (decorator.mathDecorations.apply as Mock).mock.calls.slice(-1)[0]; const regionsWithRanges = lastCall[1]; expect(regionsWithRanges).toHaveLength(2); expect(regionsWithRanges[0].region.numLines).toBe(1); @@ -164,13 +166,13 @@ describe('Decorator - Math reveal on select', () => { decorator.setActiveEditor(editor); expect(() => (decorator as any).updateDecorationsInternal()).not.toThrow(); expect(decorator.mathDecorations.apply).toHaveBeenCalled(); - const lastCall = (decorator.mathDecorations.apply as jest.Mock).mock.calls.slice(-1)[0]; + const lastCall = (decorator.mathDecorations.apply as Mock).mock.calls.slice(-1)[0]; expect(lastCall[1]).toHaveLength(1); expect(lastCall[1][0].region.source).toBe('\\invalid{\n'); }); it('clears math decorations when math setting is disabled', () => { - jest.spyOn(config.math, 'enabled').mockReturnValue(false); + vi.spyOn(config.math, 'enabled').mockReturnValue(false); const document = new TextDocument(Uri.file('test.md'), 'markdown', 1, text); const editor = new TextEditor(document, [new Selection(new Position(0, 0), new Position(0, 0))]); @@ -194,7 +196,7 @@ describe('Decorator - Math reveal on select', () => { decorator.setActiveEditor(editor); (decorator as any).updateDecorationsInternal(); - const lastCall = (decorator.mathDecorations.apply as jest.Mock).mock.calls.slice(-1)[0]; + const lastCall = (decorator.mathDecorations.apply as Mock).mock.calls.slice(-1)[0]; const regionsWithRanges = lastCall[1]; expect(regionsWithRanges).toHaveLength(2); expect(regionsWithRanges[0].range).not.toBeNull(); diff --git a/src/decorator/__tests__/decorator-mermaid.test.ts b/src/decorator/__tests__/decorator-mermaid.test.ts index 2fe9792..cdd3ab2 100644 --- a/src/decorator/__tests__/decorator-mermaid.test.ts +++ b/src/decorator/__tests__/decorator-mermaid.test.ts @@ -1,10 +1,10 @@ -jest.mock('../../mermaid/mermaid-renderer', () => ({ - initMermaidRenderer: jest.fn(), - renderMermaidSvg: jest.fn(), - svgToDataUri: jest.fn((svg: string) => `data:${svg}`), - createErrorSvg: jest.fn(() => ''), - saveSvgToHtml: jest.fn(), - disposeMermaidRenderer: jest.fn(), +vi.mock('../../mermaid/mermaid-renderer', () => ({ + initMermaidRenderer: vi.fn(), + renderMermaidSvg: vi.fn(), + svgToDataUri: vi.fn((svg: string) => `data:${svg}`), + createErrorSvg: vi.fn(() => ''), + saveSvgToHtml: vi.fn(), + disposeMermaidRenderer: vi.fn(), })); import { Decorator } from '../../decorator'; @@ -12,7 +12,7 @@ import { MarkdownParseCache } from '../../markdown-parse-cache'; import { TextDocument, TextEditor, Selection, Uri } from '../../test/__mocks__/vscode'; import { renderMermaidSvg } from '../../mermaid/mermaid-renderer'; -const mockRenderMermaidSvg = renderMermaidSvg as jest.MockedFunction; +const mockRenderMermaidSvg = vi.mocked(renderMermaidSvg); describe('Decorator - Mermaid diagrams', () => { const blockText = [ @@ -46,12 +46,10 @@ describe('Decorator - Mermaid diagrams', () => { const decorator = new Decorator(new MarkdownParseCache({} as any)); (decorator as any).activeEditor = editor; - // Return false = cursor is NOT inside the block, so rendering should happen - (decorator as any).isSelectionOrCursorInsideOffsets = jest.fn().mockReturnValue(false); - const applyMock = jest.fn(); - (decorator as any).mermaidDecorations = { + const applyMock = vi.fn(); + (decorator as any).mermaidCoordinator.mermaidDecorations = { apply: applyMock, - clear: jest.fn(), + clear: vi.fn(), }; await (decorator as any).updateMermaidDiagrams(mermaidBlocks, text, document.version); @@ -70,12 +68,10 @@ describe('Decorator - Mermaid diagrams', () => { const decorator = new Decorator(new MarkdownParseCache({} as any)); (decorator as any).activeEditor = editor; - // Return true = cursor IS inside the block, so rendering should be skipped - (decorator as any).isSelectionOrCursorInsideOffsets = jest.fn().mockReturnValue(true); - const applyMock = jest.fn(); - (decorator as any).mermaidDecorations = { + const applyMock = vi.fn(); + (decorator as any).mermaidCoordinator.mermaidDecorations = { apply: applyMock, - clear: jest.fn(), + clear: vi.fn(), }; await (decorator as any).updateMermaidDiagrams(mermaidBlocks, text, document.version); @@ -95,11 +91,10 @@ describe('Decorator - Mermaid diagrams', () => { const decorator = new Decorator(new MarkdownParseCache({} as any)); (decorator as any).activeEditor = editor; - (decorator as any).isSelectionOrCursorInsideOffsets = jest.fn().mockReturnValue(false); - const applyMock = jest.fn(); - (decorator as any).mermaidDecorations = { + const applyMock = vi.fn(); + (decorator as any).mermaidCoordinator.mermaidDecorations = { apply: applyMock, - clear: jest.fn(), + clear: vi.fn(), }; const secondStart = blockText.length + 2; // "\n\n" diff --git a/src/decorator/__tests__/editor-decoration-applier.test.ts b/src/decorator/__tests__/editor-decoration-applier.test.ts new file mode 100644 index 0000000..5070e7a --- /dev/null +++ b/src/decorator/__tests__/editor-decoration-applier.test.ts @@ -0,0 +1,184 @@ +import * as vscode from 'vscode'; +import { config } from '../../config'; +import { + applyFilteredDecorations, + buildScopeEntries, + createRange, + isSelectionOrCursorInsideOffsets, +} from '../editor-decoration-applier'; + +describe('editor-decoration-applier', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('creates mapped ranges from normalized offsets', () => { + const document = new (vscode.TextDocument as any)( + vscode.Uri.file('/test.md'), + 'markdown', + 1, + 'a\r\nb' + ); + const editor = new (vscode.TextEditor as any)(document, []); + + const range = createRange(editor, 0, 3, document.getText()); + + expect(range).not.toBeNull(); + expect(range?.start).toEqual({ line: 0, character: 0 }); + expect(range?.end).toEqual({ line: 1, character: 1 }); + }); + + it('returns null when the document cannot map positions', () => { + const editor = { + document: { + positionAt: vi.fn(() => { + throw new Error('boom'); + }), + }, + }; + + expect(createRange(editor as any, 0, 1, 'a')).toBeNull(); + }); + + it('builds scope entries and skips invalid ranges', () => { + const document = new (vscode.TextDocument as any)( + vscode.Uri.file('/test.md'), + 'markdown', + 1, + 'hello' + ); + const editor = new (vscode.TextEditor as any)(document, []); + vi.spyOn(document, 'positionAt') + .mockImplementationOnce(() => ({ line: 0, character: 0 })) + .mockImplementationOnce(() => ({ line: 0, character: 5 })) + .mockImplementationOnce(() => { + throw new Error('bad range'); + }); + + const entries = buildScopeEntries( + editor as any, + [ + { startPos: 0, endPos: 5, kind: 'frontmatter' }, + { startPos: 6, endPos: 8, kind: 'code' }, + ], + document.getText() + ); + + expect(entries).toHaveLength(1); + expect(entries[0]).toMatchObject({ + startPos: 0, + endPos: 5, + kind: 'frontmatter', + }); + }); + + it('returns no scope entries without an editor or scopes', () => { + expect(buildScopeEntries(undefined, [], 'text')).toEqual([]); + }); + + it('detects cursor and selection overlap against mapped offsets', () => { + const document = new (vscode.TextDocument as any)( + vscode.Uri.file('/test.md'), + 'markdown', + 1, + 'abcd' + ); + + const cursor = new vscode.Range( + new vscode.Position(0, 1), + new vscode.Position(0, 1) + ); + const selection = new vscode.Range( + new vscode.Position(0, 0), + new vscode.Position(0, 2) + ); + const outside = new vscode.Range( + new vscode.Position(0, 3), + new vscode.Position(0, 3) + ); + + expect( + isSelectionOrCursorInsideOffsets(0, 2, document.getText(), [cursor], document as any) + ).toBe(true); + expect( + isSelectionOrCursorInsideOffsets(0, 2, document.getText(), [selection], document as any) + ).toBe(true); + expect( + isSelectionOrCursorInsideOffsets(0, 2, document.getText(), [outside], document as any) + ).toBe(false); + }); + + it('applies ranges, render options, ghost faint, and reports non-empty counts', () => { + vi.spyOn(config.emojis, 'enabled').mockReturnValue(true); + + const document = new (vscode.TextDocument as any)( + vscode.Uri.file('/test.md'), + 'markdown', + 1, + 'hello' + ); + const editor = new (vscode.TextEditor as any)(document, []); + editor.setDecorations = vi.fn(); + + const hideType = { key: 'hide' }; + const emojiType = { key: 'emoji' }; + const tableType = { key: 'tableCell' }; + const ghostFaintType = { key: 'ghostFaint' }; + const registry = { + getMap: () => + new Map([ + ['hide', hideType], + ['emoji', emojiType], + ['tableCell', tableType], + ]), + getGhostFaintDecorationType: () => ghostFaintType, + }; + + const hideRange = new vscode.Range(new vscode.Position(0, 0), new vscode.Position(0, 1)); + const ghostRange = new vscode.Range(new vscode.Position(0, 1), new vscode.Position(0, 2)); + const emojiOption = { range: hideRange, renderOptions: { after: { contentText: 'x' } } }; + const tableOption = { range: hideRange, renderOptions: { before: { contentText: '|' } } }; + const onApply = vi.fn(); + + applyFilteredDecorations( + editor as any, + new Map([ + ['hide', [hideRange]], + ['emoji', [emojiOption]], + ['tableCell', [tableOption]], + ['ghostFaint', [ghostRange]], + ]), + registry as any, + onApply + ); + + expect(editor.setDecorations).toHaveBeenCalledWith(hideType, [hideRange]); + expect(editor.setDecorations).toHaveBeenCalledWith(emojiType, [emojiOption]); + expect(editor.setDecorations).toHaveBeenCalledWith(tableType, [tableOption]); + expect(editor.setDecorations).toHaveBeenCalledWith(ghostFaintType, [ghostRange]); + expect(onApply).toHaveBeenCalledWith(4); + }); + + it('clears emoji decorations when emojis are disabled', () => { + vi.spyOn(config.emojis, 'enabled').mockReturnValue(false); + + const document = new (vscode.TextDocument as any)( + vscode.Uri.file('/test.md'), + 'markdown', + 1, + 'hello' + ); + const editor = new (vscode.TextEditor as any)(document, []); + editor.setDecorations = vi.fn(); + + const emojiType = { key: 'emoji' }; + const registry = { + getMap: () => new Map([['emoji', emojiType]]), + getGhostFaintDecorationType: () => ({ key: 'ghostFaint' }), + }; + + applyFilteredDecorations(editor as any, new Map(), registry as any); + + expect(editor.setDecorations).toHaveBeenCalledWith(emojiType, []); + }); +}); diff --git a/src/decorator/__tests__/file-decoration-state.test.ts b/src/decorator/__tests__/file-decoration-state.test.ts new file mode 100644 index 0000000..af1873d --- /dev/null +++ b/src/decorator/__tests__/file-decoration-state.test.ts @@ -0,0 +1,79 @@ +import { FileDecorationStateStore } from '../file-decoration-state'; + +function makeMockWorkspaceState() { + const stateMap = new Map(); + return { + get: vi.fn((key: string, defaultValue: T): T => + stateMap.has(key) ? (stateMap.get(key) as T) : defaultValue + ), + update: vi.fn((key: string, value: unknown) => { + if (value === undefined) { + stateMap.delete(key); + } else { + stateMap.set(key, value); + } + return Promise.resolve(); + }), + }; +} + +describe('FileDecorationStateStore', () => { + it('defaults to enabled for unseen files', () => { + const store = new FileDecorationStateStore(); + expect(store.isEnabled('file:///test/file-a.md')).toBe(true); + }); + + it('reads persisted state on first access', () => { + const workspaceState = makeMockWorkspaceState(); + void workspaceState.update('mdInline.decorationsEnabled.file:///test/file-a.md', false); + workspaceState.update.mockClear(); + + const store = new FileDecorationStateStore(workspaceState as any); + expect(store.isEnabled('file:///test/file-a.md')).toBe(false); + expect(workspaceState.get).toHaveBeenCalledWith( + 'mdInline.decorationsEnabled.file:///test/file-a.md', + true + ); + }); + + it('toggles and persists state per uri', () => { + const workspaceState = makeMockWorkspaceState(); + const store = new FileDecorationStateStore(workspaceState as any); + + expect(store.toggle('file:///test/file-a.md')).toBe(false); + expect(store.isEnabled('file:///test/file-a.md')).toBe(false); + expect(workspaceState.update).toHaveBeenCalledWith( + 'mdInline.decorationsEnabled.file:///test/file-a.md', + false + ); + }); + + it('keeps states isolated by file', () => { + const store = new FileDecorationStateStore(); + store.toggle('file:///test/file-a.md'); + + expect(store.isEnabled('file:///test/file-a.md')).toBe(false); + expect(store.isEnabled('file:///test/file-b.md')).toBe(true); + }); + + it('migrates in-memory and persisted state on rename', () => { + const workspaceState = makeMockWorkspaceState(); + const store = new FileDecorationStateStore(workspaceState as any); + + store.toggle('file:///test/old.md'); + workspaceState.update.mockClear(); + + store.renameFile('file:///test/old.md', 'file:///test/new.md'); + + expect(store.isEnabled('file:///test/old.md')).toBe(true); + expect(store.isEnabled('file:///test/new.md')).toBe(false); + expect(workspaceState.update).toHaveBeenCalledWith( + 'mdInline.decorationsEnabled.file:///test/new.md', + false + ); + expect(workspaceState.update).toHaveBeenCalledWith( + 'mdInline.decorationsEnabled.file:///test/old.md', + undefined + ); + }); +}); diff --git a/src/decorator/__tests__/mermaid-diagram-decorations.test.ts b/src/decorator/__tests__/mermaid-diagram-decorations.test.ts index 034e07f..2a5867a 100644 --- a/src/decorator/__tests__/mermaid-diagram-decorations.test.ts +++ b/src/decorator/__tests__/mermaid-diagram-decorations.test.ts @@ -1,3 +1,4 @@ +import type { Mock } from 'vitest'; import { MermaidDiagramDecorations } from '../mermaid-diagram-decorations'; import { window, ColorThemeKind, Range } from '../../test/__mocks__/vscode'; @@ -5,7 +6,7 @@ import { window, ColorThemeKind, Range } from '../../test/__mocks__/vscode'; function makeEditor() { const calls = new Map(); return { - setDecorations: jest.fn((type: any, ranges: any[]) => { + setDecorations: vi.fn((type: any, ranges: any[]) => { const prev = calls.get(type) ?? []; prev.push(ranges); calls.set(type, prev); @@ -25,7 +26,7 @@ describe('MermaidDiagramDecorations', () => { beforeEach(() => { // Default to dark theme (window.activeColorTheme as any).kind = ColorThemeKind.Dark; - (window.createTextEditorDecorationType as jest.Mock).mockClear(); + (window.createTextEditorDecorationType as Mock).mockClear(); }); describe('apply()', () => { diff --git a/src/decorator/__tests__/per-file-toggle.test.ts b/src/decorator/__tests__/per-file-toggle.test.ts deleted file mode 100644 index f550b62..0000000 --- a/src/decorator/__tests__/per-file-toggle.test.ts +++ /dev/null @@ -1,196 +0,0 @@ -jest.mock('../../parser', () => ({ - MarkdownParser: class { - extractDecorations() { - return []; - } - } -})); - -import { Decorator } from '../../decorator'; -import { TextDocument, TextEditor, Selection, Position, Uri } from '../../test/__mocks__/vscode'; - -function makeMockWorkspaceState() { - const stateMap = new Map(); - return { - get: jest.fn((key: string, defaultValue: T): T => - stateMap.has(key) ? (stateMap.get(key) as T) : defaultValue - ), - update: jest.fn((key: string, value: unknown) => { - if (value === undefined) { - stateMap.delete(key); - } else { - stateMap.set(key, value); - } - return Promise.resolve(); - }), - keys: () => [...stateMap.keys()], - }; -} - -function makeEditor(uriString: string) { - const uri = Uri.parse(uriString); - const doc = new TextDocument(uri, 'markdown', 1, '# Hello'); - return new TextEditor(doc, [new Selection(new Position(0, 0), new Position(0, 0))]); -} - -function makeDecorator(workspaceState?: ReturnType) { - const parseCache = { - get: () => ({ version: 1, text: '# Hello', decorations: [], scopes: [], mermaidBlocks: [], mathRegions: [] }), - invalidate: () => {}, - clear: () => {}, - }; - return new Decorator(parseCache as any, workspaceState as any); -} - -describe('Per-file toggle state', () => { - describe('isEnabled() default behavior', () => { - it('returns true for a file that has never been toggled', () => { - const decorator = makeDecorator(); - const editor = makeEditor('file:///test/file-a.md'); - (decorator as any).activeEditor = editor; - expect(decorator.isEnabled()).toBe(true); - }); - - it('returns true when there is no active editor', () => { - const decorator = makeDecorator(); - (decorator as any).activeEditor = undefined; - expect(decorator.isEnabled()).toBe(true); - }); - }); - - describe('toggleDecorations() per-file isolation', () => { - it('toggling file A does not affect file B', () => { - const decorator = makeDecorator(); - const editorA = makeEditor('file:///test/file-a.md'); - const editorB = makeEditor('file:///test/file-b.md'); - - // Toggle file A off - (decorator as any).activeEditor = editorA; - decorator.toggleDecorations(); - expect(decorator.isEnabled()).toBe(false); - - // File B should still be enabled - (decorator as any).activeEditor = editorB; - expect(decorator.isEnabled()).toBe(true); - }); - - it('toggling file A twice restores it to enabled', () => { - const decorator = makeDecorator(); - const editor = makeEditor('file:///test/file-a.md'); - (decorator as any).activeEditor = editor; - - decorator.toggleDecorations(); - expect(decorator.isEnabled()).toBe(false); - - decorator.toggleDecorations(); - expect(decorator.isEnabled()).toBe(true); - }); - - it('returns true without toggling when there is no active editor', () => { - const decorator = makeDecorator(); - (decorator as any).activeEditor = undefined; - const result = decorator.toggleDecorations(); - expect(result).toBe(true); - }); - }); - - describe('state persistence via workspaceState', () => { - it('reads persisted state on first access', () => { - const ws = makeMockWorkspaceState(); - const uri = 'file:///test/file-a.md'; - // Pre-populate persisted state: decorations disabled - ws.update(`mdInline.decorationsEnabled.${uri}`, false); - ws.update.mockClear(); - - const decorator = makeDecorator(ws); - const editor = makeEditor(uri); - (decorator as any).activeEditor = editor; - - expect(decorator.isEnabled()).toBe(false); - expect(ws.get).toHaveBeenCalledWith(`mdInline.decorationsEnabled.${uri}`, true); - }); - - it('writes to workspaceState on toggle', () => { - const ws = makeMockWorkspaceState(); - const uri = 'file:///test/file-a.md'; - const decorator = makeDecorator(ws); - const editor = makeEditor(uri); - (decorator as any).activeEditor = editor; - - decorator.toggleDecorations(); // disable - - expect(ws.update).toHaveBeenCalledWith(`mdInline.decorationsEnabled.${uri}`, false); - }); - - it('new files default to enabled even with workspaceState provided', () => { - const ws = makeMockWorkspaceState(); - const decorator = makeDecorator(ws); - const editor = makeEditor('file:///test/new-file.md'); - (decorator as any).activeEditor = editor; - - expect(decorator.isEnabled()).toBe(true); - }); - - it('works without workspaceState (no persistence)', () => { - const decorator = makeDecorator(undefined); - const editor = makeEditor('file:///test/file-a.md'); - (decorator as any).activeEditor = editor; - - expect(decorator.isEnabled()).toBe(true); - decorator.toggleDecorations(); - expect(decorator.isEnabled()).toBe(false); - }); - }); - - describe('renameFile()', () => { - it('migrates in-memory state from old URI to new URI', () => { - const decorator = makeDecorator(); - const oldUri = 'file:///test/old.md'; - const newUri = 'file:///test/new.md'; - - // Disable old file - (decorator as any).activeEditor = makeEditor(oldUri); - decorator.toggleDecorations(); - expect(decorator.isEnabled()).toBe(false); - - // Rename - decorator.renameFile(oldUri, newUri); - - // Old URI should revert to default (true) - (decorator as any).activeEditor = makeEditor(oldUri); - expect(decorator.isEnabled()).toBe(true); - - // New URI should carry the disabled state - (decorator as any).activeEditor = makeEditor(newUri); - expect(decorator.isEnabled()).toBe(false); - }); - - it('migrates persisted state from old URI to new URI', () => { - const ws = makeMockWorkspaceState(); - const oldUri = 'file:///test/old.md'; - const newUri = 'file:///test/new.md'; - const decorator = makeDecorator(ws); - - // Disable old file (writes to workspaceState) - (decorator as any).activeEditor = makeEditor(oldUri); - decorator.toggleDecorations(); - ws.update.mockClear(); - - // Rename - decorator.renameFile(oldUri, newUri); - - expect(ws.update).toHaveBeenCalledWith(`mdInline.decorationsEnabled.${newUri}`, false); - expect(ws.update).toHaveBeenCalledWith(`mdInline.decorationsEnabled.${oldUri}`, undefined); - }); - - it('is a no-op for URIs with no toggle state', () => { - const ws = makeMockWorkspaceState(); - const decorator = makeDecorator(ws); - ws.update.mockClear(); - - // Should not throw and should not write to workspaceState - expect(() => decorator.renameFile('file:///test/unknown.md', 'file:///test/other.md')).not.toThrow(); - expect(ws.update).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/src/decorator/__tests__/pipeline-integration.test.ts b/src/decorator/__tests__/pipeline-integration.test.ts index eac9310..d8844cb 100644 --- a/src/decorator/__tests__/pipeline-integration.test.ts +++ b/src/decorator/__tests__/pipeline-integration.test.ts @@ -6,7 +6,7 @@ * internal shape, which is the same pattern used in decorator-filtering.test.ts. */ -jest.mock('../../parser', () => ({ +vi.mock('../../parser', () => ({ MarkdownParser: class { extractDecorations() { return []; diff --git a/src/decorator/__tests__/update-scheduler.test.ts b/src/decorator/__tests__/update-scheduler.test.ts new file mode 100644 index 0000000..b686477 --- /dev/null +++ b/src/decorator/__tests__/update-scheduler.test.ts @@ -0,0 +1,67 @@ +import { DecoratorUpdateScheduler } from '../update-scheduler'; + +describe('DecoratorUpdateScheduler', () => { + it('runs the latest scheduled callback after debounce', async () => { + vi.useFakeTimers(); + + const scheduler = new DecoratorUpdateScheduler(10, 5); + const callbackA = vi.fn(); + const callbackB = vi.fn(); + const document = { + uri: { toString: () => 'file:///test.md' }, + version: 1, + }; + + scheduler.schedule(document as any, callbackA); + scheduler.schedule(document as any, callbackB); + + vi.runAllTimers(); + await Promise.resolve(); + + expect(callbackA).not.toHaveBeenCalled(); + expect(callbackB).toHaveBeenCalledTimes(1); + scheduler.dispose(); + vi.useRealTimers(); + }); + + it('skips outdated callbacks when document version changes', async () => { + vi.useFakeTimers(); + + const scheduler = new DecoratorUpdateScheduler(10, 5); + const callback = vi.fn(); + const document = { + uri: { toString: () => 'file:///test.md' }, + version: 1, + }; + + scheduler.schedule(document as any, callback); + document.version = 2; + + vi.runAllTimers(); + await Promise.resolve(); + + expect(callback).not.toHaveBeenCalled(); + scheduler.dispose(); + vi.useRealTimers(); + }); + + it('cancels pending work', async () => { + vi.useFakeTimers(); + + const scheduler = new DecoratorUpdateScheduler(10, 5); + const callback = vi.fn(); + const document = { + uri: { toString: () => 'file:///test.md' }, + version: 1, + }; + + scheduler.schedule(document as any, callback); + scheduler.cancel(); + + vi.runAllTimers(); + await Promise.resolve(); + + expect(callback).not.toHaveBeenCalled(); + vi.useRealTimers(); + }); +}); diff --git a/src/decorator/__tests__/visibility-model.test.ts b/src/decorator/__tests__/visibility-model.test.ts index 40f2eea..8129339 100644 --- a/src/decorator/__tests__/visibility-model.test.ts +++ b/src/decorator/__tests__/visibility-model.test.ts @@ -1,4 +1,4 @@ -jest.mock('../../parser', () => ({ +vi.mock('../../parser', () => ({ MarkdownParser: class { extractDecorations() { return []; } }, diff --git a/src/decorator/editor-decoration-applier.ts b/src/decorator/editor-decoration-applier.ts new file mode 100644 index 0000000..4f1bb01 --- /dev/null +++ b/src/decorator/editor-decoration-applier.ts @@ -0,0 +1,108 @@ +import { DecorationOptions, Range, TextDocument, TextEditor } from 'vscode'; +import type { DecorationType, ScopeRange } from '../parser'; +import { mapNormalizedToOriginal } from '../position-mapping'; +import { config } from '../config'; +import type { DecorationTypeRegistry } from './decoration-type-registry'; +import type { ScopeEntry } from './visibility-model'; + +export function createRange( + editor: TextEditor, + startPos: number, + endPos: number, + originalText?: string +): Range | null { + try { + const mappedStart = mapNormalizedToOriginal(startPos, originalText); + const mappedEnd = mapNormalizedToOriginal(endPos, originalText); + return new Range( + editor.document.positionAt(mappedStart), + editor.document.positionAt(mappedEnd) + ); + } catch { + return null; + } +} + +export function buildScopeEntries( + editor: TextEditor | undefined, + scopes: ScopeRange[], + originalText: string +): ScopeEntry[] { + if (!editor || scopes.length === 0) { + return []; + } + + const entries: ScopeEntry[] = []; + for (const scope of scopes) { + const range = createRange(editor, scope.startPos, scope.endPos, originalText); + if (range) { + entries.push({ + startPos: scope.startPos, + endPos: scope.endPos, + range, + kind: scope.kind, + }); + } + } + return entries; +} + +export function isSelectionOrCursorInsideOffsets( + startPos: number, + endPos: number, + normalizedText: string, + selections: readonly Range[], + document: TextDocument +): boolean { + const mappedStart = mapNormalizedToOriginal(startPos, normalizedText); + const mappedEnd = mapNormalizedToOriginal(endPos, normalizedText); + + return selections.some((selection) => { + const selectionStart = document.offsetAt(selection.start); + const selectionEnd = document.offsetAt(selection.end); + if (selectionStart === selectionEnd) { + return selectionStart >= mappedStart && selectionStart <= mappedEnd; + } + return selectionStart <= mappedEnd && selectionEnd >= mappedStart; + }); +} + +export function applyFilteredDecorations( + editor: TextEditor, + filteredDecorations: Map>, + decorationTypes: DecorationTypeRegistry, + onApply?: (nonEmptyTypeCount: number) => void +): void { + const renderOptionsTypes = new Set([ + 'emoji', 'orderedListItem', 'tablePipe', 'tableSeparatorPipe', 'tableSeparatorDash', 'tableCell', + ]); + + for (const [type, decorationType] of decorationTypes.getMap().entries()) { + if (type === 'emoji') { + if (!config.emojis.enabled()) { + editor.setDecorations(decorationType, []); + continue; + } + const emojiRanges = filteredDecorations.get(type) as DecorationOptions[] | undefined; + editor.setDecorations(decorationType, emojiRanges || []); + continue; + } + + if (renderOptionsTypes.has(type)) { + const optionsRanges = filteredDecorations.get(type) as DecorationOptions[] | undefined; + editor.setDecorations(decorationType, optionsRanges || []); + continue; + } + + const ranges = filteredDecorations.get(type) as Range[] | undefined; + editor.setDecorations(decorationType, ranges || []); + } + + const ghostFaintRanges = (filteredDecorations.get('ghostFaint') as Range[] | undefined) || []; + editor.setDecorations(decorationTypes.getGhostFaintDecorationType(), ghostFaintRanges); + + if (onApply) { + const nonEmptyTypeCount = [...filteredDecorations.values()].filter((ranges) => ranges.length > 0).length; + onApply(nonEmptyTypeCount); + } +} diff --git a/src/decorator/file-decoration-state.ts b/src/decorator/file-decoration-state.ts new file mode 100644 index 0000000..55af4b5 --- /dev/null +++ b/src/decorator/file-decoration-state.ts @@ -0,0 +1,42 @@ +import type { Memento } from 'vscode'; + +const DECORATION_STATE_KEY_PREFIX = 'mdInline.decorationsEnabled'; + +export class FileDecorationStateStore { + private readonly fileDecorationState = new Map(); + + constructor(private readonly workspaceState?: Memento) {} + + isEnabled(uri: string): boolean { + let cached = this.fileDecorationState.get(uri); + if (cached === undefined) { + cached = this.workspaceState?.get(`${DECORATION_STATE_KEY_PREFIX}.${uri}`, true) ?? true; + this.fileDecorationState.set(uri, cached); + } + return cached; + } + + toggle(uri: string): boolean { + const next = !this.isEnabled(uri); + this.fileDecorationState.set(uri, next); + void this.workspaceState?.update(`${DECORATION_STATE_KEY_PREFIX}.${uri}`, next); + return next; + } + + renameFile(oldUri: string, newUri: string): void { + const oldKey = `${DECORATION_STATE_KEY_PREFIX}.${oldUri}`; + const newKey = `${DECORATION_STATE_KEY_PREFIX}.${newUri}`; + const cachedValue = this.fileDecorationState.get(oldUri); + + if (cachedValue !== undefined) { + this.fileDecorationState.set(newUri, cachedValue); + this.fileDecorationState.delete(oldUri); + } + + const persistedValue = cachedValue ?? this.workspaceState?.get(oldKey, undefined); + if (persistedValue !== undefined) { + void this.workspaceState?.update(newKey, persistedValue); + void this.workspaceState?.update(oldKey, undefined); + } + } +} diff --git a/src/decorator/math-region-application.ts b/src/decorator/math-region-application.ts new file mode 100644 index 0000000..fc214a8 --- /dev/null +++ b/src/decorator/math-region-application.ts @@ -0,0 +1,27 @@ +import type { TextEditor } from 'vscode'; +import type { MathRegion } from '../parser'; +import type { MathDecorations } from '../math/math-decorations'; +import { createRange, isSelectionOrCursorInsideOffsets } from './editor-decoration-applier'; + +export function applyMathDecorationsForEditor( + editor: TextEditor, + mathRegions: MathRegion[], + normalizedText: string, + mathDecorations: MathDecorations +): void { + const regionsWithRanges = mathRegions.map((region) => { + const inside = isSelectionOrCursorInsideOffsets( + region.startPos, + region.endPos, + normalizedText, + editor.selections, + editor.document + ); + return { + region, + range: inside ? null : createRange(editor, region.startPos, region.endPos, normalizedText), + }; + }); + + mathDecorations.apply(editor, regionsWithRanges); +} diff --git a/src/decorator/mermaid-update-coordinator.ts b/src/decorator/mermaid-update-coordinator.ts new file mode 100644 index 0000000..6bd203e --- /dev/null +++ b/src/decorator/mermaid-update-coordinator.ts @@ -0,0 +1,176 @@ +import { createHash } from 'crypto'; +import { ColorThemeKind, Position, Range, TextEditor, window, workspace } from 'vscode'; +import type { MermaidBlock } from '../parser'; +import { mapNormalizedToOriginal } from '../position-mapping'; +import { renderMermaidSvg, svgToDataUri, createErrorSvg } from '../mermaid/mermaid-renderer'; +import { MermaidDiagramDecorations } from './mermaid-diagram-decorations'; +import { createRange, isSelectionOrCursorInsideOffsets } from './editor-decoration-applier'; +import { logWarn } from '../logging'; + +type MermaidBlockKeyCacheEntry = { + theme: 'default' | 'dark'; + fontFamily?: string; + numLines: number; + key: string; +}; + +const mermaidBlockKeyCache = new WeakMap(); + +function getMermaidBlockCacheKey( + block: MermaidBlock, + theme: 'default' | 'dark', + fontFamily?: string +): string { + const cached = mermaidBlockKeyCache.get(block); + if ( + cached && + cached.theme === theme && + cached.fontFamily === fontFamily && + cached.numLines === block.numLines + ) { + return cached.key; + } + + const keySource = `${block.source}\n${theme}\n${fontFamily ?? ''}\n${block.numLines}`; + const key = createHash('sha256').update(keySource).digest('hex'); + mermaidBlockKeyCache.set(block, { theme, fontFamily, numLines: block.numLines, key }); + return key; +} + +async function mapWithConcurrency( + items: readonly T[], + maxConcurrency: number, + mapper: (item: T, index: number) => Promise +): Promise { + const results: R[] = new Array(items.length); + let nextIndex = 0; + + const worker = async () => { + while (true) { + const index = nextIndex++; + if (index >= items.length) { + return; + } + results[index] = await mapper(items[index], index); + } + }; + + const concurrency = Math.max(1, Math.min(maxConcurrency, items.length)); + await Promise.all(Array.from({ length: concurrency }, () => worker())); + return results; +} + +export class MermaidUpdateCoordinator { + private mermaidUpdateToken = 0; + + constructor( + private readonly mermaidDecorations: MermaidDiagramDecorations, + private readonly maxConcurrency: number + ) {} + + async update( + editor: TextEditor, + mermaidBlocks: MermaidBlock[], + normalizedText: string, + documentVersion: number, + hoverIndicatorDecorationType: { dispose(): void } & { key?: string }, + ): Promise { + if (mermaidBlocks.length === 0) { + this.mermaidDecorations.clear(editor); + editor.setDecorations(hoverIndicatorDecorationType as never, []); + return; + } + + const token = ++this.mermaidUpdateToken; + const theme = window.activeColorTheme.kind === ColorThemeKind.Dark || + window.activeColorTheme.kind === ColorThemeKind.HighContrast + ? 'dark' + : 'default'; + const fontFamily = workspace.getConfiguration('editor').get('fontFamily'); + + const rangesByKey = new Map(); + const dataUrisByKey = new Map(); + const indicatorRanges: Range[] = []; + const originalText = editor.document.getText(); + const dataUriPromisesByKey = new Map>(); + + const results = await mapWithConcurrency( + mermaidBlocks, + this.maxConcurrency, + async (block): Promise<{ key: string; range: Range; dataUri: string; indicatorRange: Range } | null> => { + if (token !== this.mermaidUpdateToken || editor.document.version !== documentVersion) { + return null; + } + + if (isSelectionOrCursorInsideOffsets(block.startPos, block.endPos, normalizedText, editor.selections, editor.document)) { + return null; + } + + const range = createRange(editor, block.startPos, block.endPos, normalizedText); + if (!range) { + return null; + } + + const blockStart = mapNormalizedToOriginal(block.startPos, normalizedText); + const openingFenceLineEnd = originalText.indexOf('\n', blockStart); + const contentStart = openingFenceLineEnd !== -1 ? openingFenceLineEnd + 1 : blockStart; + const contentStartPos = editor.document.positionAt(contentStart); + const line = editor.document.lineAt(contentStartPos.line); + const indicatorEndChar = Math.min(contentStartPos.character + 1, line.text.length); + const indicatorRange = new Range( + contentStartPos, + new Position(contentStartPos.line, indicatorEndChar) + ); + + const key = getMermaidBlockCacheKey(block, theme, fontFamily); + let dataUriPromise = dataUriPromisesByKey.get(key); + if (!dataUriPromise) { + dataUriPromise = (async () => { + try { + const svg = await renderMermaidSvg(block.source, { theme, fontFamily, numLines: block.numLines }); + return svgToDataUri(svg); + } catch (error) { + logWarn('Mermaid render failed', error); + const message = error instanceof Error + ? (error.message || error.toString() || 'Rendering failed') + : (typeof error === 'string' ? error : String(error) || 'Rendering failed'); + const errorSvg = createErrorSvg( + message.trim().length > 0 ? message : 'Unknown rendering error occurred', + Math.max(400, block.numLines * 20), + block.numLines * 20, + theme === 'dark' + ); + return svgToDataUri(errorSvg); + } + })(); + dataUriPromisesByKey.set(key, dataUriPromise); + } + + const dataUri = await dataUriPromise; + if (token !== this.mermaidUpdateToken || editor.document.version !== documentVersion) { + return null; + } + + return { key, range, dataUri, indicatorRange }; + } + ); + + for (const result of results) { + if (!result) { + continue; + } + dataUrisByKey.set(result.key, result.dataUri); + const ranges = rangesByKey.get(result.key) || []; + ranges.push(result.range); + rangesByKey.set(result.key, ranges); + indicatorRanges.push(result.indicatorRange); + } + + if (token !== this.mermaidUpdateToken || editor.document.version !== documentVersion) { + return; + } + + this.mermaidDecorations.apply(editor, rangesByKey, dataUrisByKey); + editor.setDecorations(hoverIndicatorDecorationType as never, indicatorRanges); + } +} diff --git a/src/decorator/update-scheduler.ts b/src/decorator/update-scheduler.ts new file mode 100644 index 0000000..87fc7f9 --- /dev/null +++ b/src/decorator/update-scheduler.ts @@ -0,0 +1,68 @@ +import type { TextDocument } from 'vscode'; + +const DEFAULT_IDLE_TIMEOUT_MS = 300; + +export class DecoratorUpdateScheduler { + private updateTimeout: NodeJS.Timeout | undefined; + private idleCallbackHandle: number | undefined; + private readonly pendingUpdateVersion = new Map(); + + constructor( + private readonly debounceTimeoutMs: number, + private readonly idleTimeoutMs: number = DEFAULT_IDLE_TIMEOUT_MS + ) {} + + schedule(document: TextDocument, callback: () => void): void { + const cacheKey = document.uri.toString(); + this.pendingUpdateVersion.set(cacheKey, document.version); + + if (this.updateTimeout) { + clearTimeout(this.updateTimeout); + this.updateTimeout = undefined; + } + + if (this.idleCallbackHandle !== undefined) { + this.cancelIdleCallback(this.idleCallbackHandle); + this.idleCallbackHandle = undefined; + } + + this.updateTimeout = setTimeout(() => { + this.updateTimeout = undefined; + const scheduledVersion = this.pendingUpdateVersion.get(cacheKey); + if (scheduledVersion !== document.version) { + return; + } + + this.idleCallbackHandle = this.requestIdleCallback(() => { + this.idleCallbackHandle = undefined; + callback(); + this.pendingUpdateVersion.delete(cacheKey); + }, { timeout: this.idleTimeoutMs }); + }, this.debounceTimeoutMs); + } + + cancel(): void { + if (this.updateTimeout) { + clearTimeout(this.updateTimeout); + this.updateTimeout = undefined; + } + + if (this.idleCallbackHandle !== undefined) { + this.cancelIdleCallback(this.idleCallbackHandle); + this.idleCallbackHandle = undefined; + } + } + + dispose(): void { + this.cancel(); + this.pendingUpdateVersion.clear(); + } + + private requestIdleCallback(callback: () => void, options?: { timeout?: number }): number { + return setTimeout(callback, options?.timeout || 50) as unknown as number; + } + + private cancelIdleCallback(handle: number): void { + clearTimeout(handle); + } +} diff --git a/src/diff-context/__tests__/diff-context.test.ts b/src/diff-context/__tests__/diff-context.test.ts index c5cb291..d96337b 100644 --- a/src/diff-context/__tests__/diff-context.test.ts +++ b/src/diff-context/__tests__/diff-context.test.ts @@ -1,8 +1,8 @@ import { TextDocument, TextEditor, Uri, workspace } from '../../test/__mocks__/vscode'; import { isDiffLikeUri, isDiffViewVisible, shouldSkipInDiffView } from '../../diff-context'; -const mockGetConfiguration = jest.fn().mockReturnValue({ - get: jest.fn().mockReturnValue(false), +const mockGetConfiguration = vi.fn().mockReturnValue({ + get: vi.fn().mockReturnValue(false), }); (workspace as any).getConfiguration = mockGetConfiguration; @@ -30,6 +30,28 @@ describe('diff-context', () => { it('detects "compare" in URI path string', () => { expect(isDiffLikeUri(Uri.parse('file:///compare/files.md') as any)).toBe(true); }); + + it('detects diff-like query parameters', () => { + const uri = { + scheme: 'file', + query: 'path=/tmp/file.md&mode=compare', + fragment: '', + toString: () => 'file:///tmp/file.md?path=/tmp/file.md&mode=compare', + }; + + expect(isDiffLikeUri(uri as any)).toBe(true); + }); + + it('detects diff-like fragments', () => { + const uri = { + scheme: 'file', + query: '', + fragment: 'merge-view', + toString: () => 'file:///tmp/file.md#merge-view', + }; + + expect(isDiffLikeUri(uri as any)).toBe(true); + }); }); describe('isDiffViewVisible', () => { @@ -56,7 +78,7 @@ describe('diff-context', () => { it('returns false for regular file documents', () => { const document = new TextDocument(Uri.file('/path/to/file.md'), 'markdown', 1, 'text'); mockGetConfiguration.mockReturnValue({ - get: jest.fn().mockReturnValue(false), + get: vi.fn().mockReturnValue(false), }); expect(shouldSkipInDiffView(document as any)).toBe(false); @@ -65,7 +87,7 @@ describe('diff-context', () => { it('returns true for diff schemes when decorations disabled', () => { const document = new TextDocument(Uri.parse('git:/path/to/file.md'), 'markdown', 1, 'text'); mockGetConfiguration.mockReturnValue({ - get: jest.fn().mockReturnValue(false), + get: vi.fn().mockReturnValue(false), }); expect(shouldSkipInDiffView(document as any)).toBe(true); @@ -74,7 +96,7 @@ describe('diff-context', () => { it('returns false for diff schemes when decorations enabled', () => { const document = new TextDocument(Uri.parse('git:/path/to/file.md'), 'markdown', 1, 'text'); mockGetConfiguration.mockReturnValue({ - get: jest.fn().mockReturnValue(true), + get: vi.fn().mockReturnValue(true), }); expect(shouldSkipInDiffView(document as any)).toBe(false); diff --git a/src/emoji-map-loader.ts b/src/emoji-map-loader.ts index bb15c04..cd404bf 100644 --- a/src/emoji-map-loader.ts +++ b/src/emoji-map-loader.ts @@ -1,27 +1,12 @@ -// Helper module to handle lazy loading of emoji map -// This allows the emoji map to be loaded only when needed, improving initial load time -// Works in both CommonJS (VS Code) and ESM (Jest) contexts +// Re-exports lazy access to the emoji map. The map is a large static table; the parser +// only calls getEmojiMap() when processing emoji shortcodes. -let emojiByShortcode: Record | null = null; +import { emojiByShortcode } from './emoji-map'; /** - * Lazily loads the emoji map when needed. - * The emoji map is large (1917 entries), so we only load it when emoji shortcodes - * are actually encountered in the document. - * - * Uses a pattern similar to parser-remark to handle both CommonJS (VS Code) and ESM (Jest) contexts. - * In Jest with ts-jest, modules are transformed so require() works. - * - * @returns The emoji map (loaded and cached on first call) + * Returns the emoji shortcode → glyph map. + * Kept as a function so call sites stay stable; data is loaded with this module. */ export function getEmojiMap(): Record { - if (emojiByShortcode === null) { - // Use require - works in VS Code extension CommonJS context - // For Jest, ts-jest transforms the module so require() works - // eslint-disable-next-line @typescript-eslint/no-var-requires - const emojiMapModule = require("./emoji-map"); - emojiByShortcode = emojiMapModule.emojiByShortcode; - } - // At this point, emojiByShortcode is guaranteed to be non-null - return emojiByShortcode as Record; + return emojiByShortcode; } diff --git a/src/extension.ts b/src/extension.ts index a5a0084..8703b9a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,74 +1,16 @@ import * as vscode from 'vscode'; -import { Decorator } from './decorator'; -import { MarkdownLinkProvider } from './link-provider'; -import { MarkdownImageHoverProvider } from './image-hover-provider'; -import { MarkdownLinkHoverProvider } from './link-hover-provider'; -import { CodeBlockHoverProvider } from './code-block-hover-provider'; -import { LinkClickHandler } from './link-click-handler'; -import { normalizeAnchorText } from './position-mapping'; +import { createNavigateToAnchorCommand } from './commands/navigate-to-anchor'; +import { createToggleDecorationsCommand } from './commands/toggle-decorations'; import { config } from './config'; -import { MarkdownParser } from './parser'; +import { Decorator } from './decorator'; import { MarkdownParseCache } from './markdown-parse-cache'; -import { initMermaidRenderer, disposeMermaidRenderer } from './mermaid/mermaid-renderer'; +import { MarkdownParser } from './parser'; +import { disposeMermaidRenderer, initMermaidRenderer } from './mermaid/mermaid-renderer'; import { processSvg } from './mermaid/svg-processor'; - -/** - * Checks if a recommended extension is installed and optionally shows a notification. - * - * @param extensionId - The extension ID (e.g., 'yzhang.markdown-all-in-one') - * @param context - The extension context for storing state - * @param showNotification - Whether to show a notification if not installed (default: false) - * @returns True if the extension is installed, false otherwise - */ -function checkRecommendedExtension( - extensionId: string, - context: vscode.ExtensionContext, - showNotification: boolean = false -): boolean { - const extension = vscode.extensions.getExtension(extensionId); - const isInstalled = extension !== undefined; - - if (!isInstalled && showNotification) { - const notificationKey = `recommendationShown.${extensionId}`; - const hasShownBefore = context.globalState.get(notificationKey, false); - - if (!hasShownBefore) { - const extensionName = extensionId.split('.').pop() || extensionId; - vscode.window.showInformationMessage( - `Enhance your Markdown workflow: Consider installing "${extensionName}"`, - 'Install', - 'Dismiss' - ).then((selection) => { - if (selection === 'Install') { - vscode.commands.executeCommand('workbench.extensions.installExtension', extensionId); - } - // Mark as shown regardless of user choice - context.globalState.update(notificationKey, true); - }); - } - } - - return isInstalled; -} - -/** - * Checks for recommended extensions and shows notifications if needed. - * Only shows each recommendation once per user. - * - * @param context - The extension context - */ -function checkRecommendedExtensions(context: vscode.ExtensionContext): void { - // List of recommended extension IDs - const recommendedExtensions = [ - 'yzhang.markdown-all-in-one', - 'MermaidChart.vscode-mermaid-chart' - ]; - - // Check each extension (notifications are shown only once per extension) - recommendedExtensions.forEach((extensionId) => { - checkRecommendedExtension(extensionId, context, true); - }); -} +import { checkRecommendedExtensions } from './recommendations'; +import { registerEventHandlers } from './registration/register-event-handlers'; +import { registerProviders } from './registration/register-providers'; +import { disposeLogger } from './logging'; /** * Public API exposed via `vscode.extensions.getExtension(id).exports`. @@ -87,210 +29,38 @@ export type ExtensionApi = { }; }; -/** - * Activates the markdown inline preview extension. - * - * This function is called by VS Code when the extension is activated (typically - * when a markdown file is opened). It sets up event listeners for: - * - Active editor changes - * - Text selection changes - * - Document content changes - * - * All event subscriptions are registered with the extension context for proper - * cleanup when the extension is deactivated. - * - * @param {vscode.ExtensionContext} context - The extension context provided by VS Code - * - * @example - * // Called automatically by VS Code when extension is activated - * activate(context); - */ export function activate(context: vscode.ExtensionContext): ExtensionApi { - // Initialize mermaid renderer with extension context initMermaidRenderer(context); const parser = new MarkdownParser(); const parseCache = new MarkdownParseCache(parser); const decorator = new Decorator(parseCache, context.workspaceState); - const diffViewApplyDecorations = config.diffView.applyDecorations(); - decorator.updateDiffViewDecorationSetting(!diffViewApplyDecorations); - + decorator.updateDiffViewDecorationSetting(!config.diffView.applyDecorations()); decorator.setActiveEditor(vscode.window.activeTextEditor); - // Check for recommended extensions (shows notifications if not installed) checkRecommendedExtensions(context); - // Register link provider for clickable markdown links - const linkProvider = new MarkdownLinkProvider(parseCache); - const linkProviderDisposable = vscode.languages.registerDocumentLinkProvider( - { language: 'markdown', scheme: 'file' }, - linkProvider - ); - - // Register hover provider for image previews on hover - const imageHoverProvider = new MarkdownImageHoverProvider(parseCache); - const imageHoverProviderDisposable = vscode.languages.registerHoverProvider( - { language: 'markdown', scheme: 'file' }, - imageHoverProvider - ); - - // Register hover provider for link URL previews - const linkHoverProvider = new MarkdownLinkHoverProvider(parseCache); - const linkHoverProviderDisposable = vscode.languages.registerHoverProvider( - { language: 'markdown', scheme: 'file' }, - linkHoverProvider - ); - - // Register hover provider for code block previews (Mermaid, LaTeX, etc.) - const codeBlockHoverProvider = new CodeBlockHoverProvider(parseCache); - const codeBlockHoverProviderDisposable = vscode.languages.registerHoverProvider( - { language: 'markdown', scheme: 'file' }, - codeBlockHoverProvider - ); - - // Setup single-click link handler (configurable) - const linkClickHandler = new LinkClickHandler(parseCache); - const singleClickEnabled = config.links.singleClickOpen(); - linkClickHandler.setEnabled(singleClickEnabled); + const { disposables: providerDisposables, linkClickHandler } = registerProviders(parseCache); + linkClickHandler.setEnabled(config.links.singleClickOpen()); - // Register command for toggling markdown decorations - const toggleDecorationsCommand = vscode.commands.registerCommand( - 'mdInline.toggleDecorations', - () => { - const enabled = decorator.toggleDecorations(); - const fileName = decorator.activeEditor - ? vscode.workspace.asRelativePath(decorator.activeEditor.document.uri) - : 'this file'; - vscode.window.showInformationMessage( - `Markdown decorations ${enabled ? 'enabled' : 'disabled'} for ${fileName}` - ); - } - ); + const eventDisposables = registerEventHandlers(decorator, linkClickHandler); + const commandDisposables = [ + createToggleDecorationsCommand(decorator), + createNavigateToAnchorCommand(), + ]; - // Register command for navigating to anchor links - const navigateToAnchorCommand = vscode.commands.registerCommand( - 'markdown-inline-editor.navigateToAnchor', - async (anchor: string, documentUri: string) => { - const uri = vscode.Uri.parse(documentUri); - const document = await vscode.workspace.openTextDocument(uri); - const editor = await vscode.window.showTextDocument(document); - - // Find the heading with this anchor - const text = document.getText(); - const lines = text.split('\n'); - - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; - // Check if this line is a heading that matches the anchor - const headingMatch = line.match(/^#+\s+(.+)$/); - if (headingMatch) { - const headingText = normalizeAnchorText(headingMatch[1]); - - if (headingText === anchor) { - // Navigate to this line - const position = new vscode.Position(i, 0); - editor.revealRange(new vscode.Range(position, position), vscode.TextEditorRevealType.InCenter); - editor.selection = new vscode.Selection(position, position); - return; - } - } - } - - // If not found, show a message - vscode.window.showInformationMessage(`Anchor "${anchor}" not found`); - } + context.subscriptions.push( + ...providerDisposables, + ...eventDisposables, + ...commandDisposables, + { dispose: () => decorator.dispose() }, + { dispose: () => disposeLogger() }, ); - const changeActiveTextEditor = vscode.window.onDidChangeActiveTextEditor((editor) => { - decorator.setActiveEditor(editor); - }); - - const changeTextEditorSelection = vscode.window.onDidChangeTextEditorSelection((event) => { - decorator.updateDecorationsForSelection(event.kind); - }); - - const changeDocument = vscode.workspace.onDidChangeTextDocument((event) => { - if (event.document === vscode.window.activeTextEditor?.document) { - decorator.updateDecorationsFromChange(event); - } - }); - - const renameFiles = vscode.workspace.onDidRenameFiles((event) => { - for (const { oldUri, newUri } of event.files) { - decorator.renameFile(oldUri.toString(), newUri.toString()); - } - }); - - const changeConfiguration = vscode.workspace.onDidChangeConfiguration((event) => { - if (event.affectsConfiguration('markdownInlineEditor.defaultBehaviors.diffView.applyDecorations')) { - const diffViewApplyDecorations = config.diffView.applyDecorations(); - decorator.updateDiffViewDecorationSetting(!diffViewApplyDecorations); - decorator.updateDecorationsForSelection(); - } - - if (event.affectsConfiguration('markdownInlineEditor.decorations.ghostFaintOpacity')) { - decorator.recreateGhostFaintDecorationType(); - } - - if (event.affectsConfiguration('markdownInlineEditor.decorations.frontmatterDelimiterOpacity')) { - decorator.recreateFrontmatterDelimiterDecorationType(); - } - - if (event.affectsConfiguration('markdownInlineEditor.decorations.codeBlockLanguageOpacity')) { - decorator.recreateCodeBlockLanguageDecorationType(); - } - - if (event.affectsConfiguration('markdownInlineEditor.links.singleClickOpen')) { - const singleClickEnabled = config.links.singleClickOpen(); - linkClickHandler.setEnabled(singleClickEnabled); - } - - if (event.affectsConfiguration('markdownInlineEditor.colors')) { - decorator.recreateColorDependentTypes(); - } - - if (event.affectsConfiguration('editor.fontSize') || event.affectsConfiguration('editor.lineHeight')) { - decorator.clearMathDecorationCache(); - } - }); - - // Listen for theme changes to update code and color-dependent decoration types - const changeColorTheme = vscode.window.onDidChangeActiveColorTheme(() => { - decorator.recreateColorDependentTypes(); - }); - - context.subscriptions.push(changeActiveTextEditor); - context.subscriptions.push(changeTextEditorSelection); - context.subscriptions.push(changeDocument); - context.subscriptions.push(renameFiles); - context.subscriptions.push(changeConfiguration); - context.subscriptions.push(changeColorTheme); - context.subscriptions.push(linkProviderDisposable); - context.subscriptions.push(imageHoverProviderDisposable); - context.subscriptions.push(linkHoverProviderDisposable); - context.subscriptions.push(codeBlockHoverProviderDisposable); - context.subscriptions.push(toggleDecorationsCommand); - context.subscriptions.push(navigateToAnchorCommand); - context.subscriptions.push({ dispose: () => decorator.dispose() }); - context.subscriptions.push({ dispose: () => linkClickHandler.dispose() }); - return { parseCache, decorator, svgProcessor: { processSvg } }; } -/** - * Deactivates the markdown inline preview extension. - * - * This function is called by VS Code when the extension is deactivated. - * It properly disposes of all event subscriptions and cleans up resources. - * - * @param {vscode.ExtensionContext} context - The extension context provided by VS Code - * - * @example - * // Called automatically by VS Code when extension is deactivated - * deactivate(context); - */ export function deactivate(): void { - // Dispose mermaid renderer webview + disposeLogger(); disposeMermaidRenderer(); - // VS Code disposes subscriptions automatically on deactivation. } diff --git a/src/forge-context/__tests__/forge-context.test.ts b/src/forge-context/__tests__/forge-context.test.ts index feb1136..7becdf2 100644 --- a/src/forge-context/__tests__/forge-context.test.ts +++ b/src/forge-context/__tests__/forge-context.test.ts @@ -2,12 +2,12 @@ import { Uri } from "../../test/__mocks__/vscode"; import { getForgeContext, parseGitRemoteUrl } from "../../forge-context"; import { config } from "../../config"; -const mockLinksEnabled = jest.fn(); +const mockLinksEnabled = vi.fn(); (config.mentions as any).linksEnabled = mockLinksEnabled; describe("forge-context", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe("parseGitRemoteUrl", () => { diff --git a/src/image-hover-provider.ts b/src/image-hover-provider.ts index 86de6bd..9c92096 100644 --- a/src/image-hover-provider.ts +++ b/src/image-hover-provider.ts @@ -1,9 +1,14 @@ import * as vscode from 'vscode'; -import { mapNormalizedToOriginal } from './position-mapping'; import { shouldSkipInDiffView } from './diff-context'; -import { resolveImageTarget } from './link-targets'; import { config } from './config'; import { MarkdownParseCache } from './markdown-parse-cache'; +import { + createDecorationRange, + findDecorationAtOffset, + isLinkDecoration, + resolveInteractionTarget, + toInteractionUri, +} from './link-interactions/shared'; /** * Provides an image preview hover for markdown image constructs. @@ -38,46 +43,35 @@ export class MarkdownImageHoverProvider implements vscode.HoverProvider { const decorations = parseEntry.decorations; const hoverOffset = document.offsetAt(position); const singleClickEnabled = config.links.singleClickOpen(); + const decoration = findDecorationAtOffset( + decorations, + text, + hoverOffset, + document, + (candidate) => candidate.type === 'image' && isLinkDecoration(candidate) + ); + if (!decoration) { + return; + } - for (const decoration of decorations) { - if (token.isCancellationRequested) { - return; - } - - if (decoration.type !== 'image' || !decoration.url) { - continue; - } - - // Map normalized positions (parser) to original document offsets (VS Code) - const start = mapNormalizedToOriginal(decoration.startPos, text); - const end = mapNormalizedToOriginal(decoration.endPos, text); - - if (hoverOffset < start || hoverOffset >= end) { - continue; - } - - const target = resolveImageTarget(decoration.url, document.uri); - if (!target) { - return; - } - - // Render the image inside the hover with size constraints. - const targetUri = escapeHtmlAttribute(target.toString(true)); - const markdown = new vscode.MarkdownString( - `` - ); - markdown.appendText(`\n\nImage URL: ${decoration.url}`); - if (!singleClickEnabled) { - markdown.appendMarkdown('\n\n*Direct click disabled (enable in settings).*'); - } - markdown.supportHtml = true; - markdown.isTrusted = target.scheme === 'file' || target.scheme === 'vscode-remote'; + const target = resolveInteractionTarget(decoration, document.uri); + if (!target) { + return; + } - const hoverRange = new vscode.Range(document.positionAt(start), document.positionAt(end)); - return new vscode.Hover(markdown, hoverRange); + const targetUri = escapeHtmlAttribute(toInteractionUri(target).toString(true)); + const markdown = new vscode.MarkdownString( + `` + ); + markdown.appendText(`\n\nImage URL: ${decoration.url}`); + if (!singleClickEnabled) { + markdown.appendMarkdown('\n\n*Direct click disabled (enable in settings).*'); } + markdown.supportHtml = true; + const trustedTarget = toInteractionUri(target); + markdown.isTrusted = trustedTarget.scheme === 'file' || trustedTarget.scheme === 'vscode-remote'; - return; + return new vscode.Hover(markdown, createDecorationRange(document, decoration, text)); } } @@ -89,4 +83,3 @@ function escapeHtmlAttribute(value: string): string { .replace(//g, '>'); } - diff --git a/src/image-hover-provider/__tests__/image-hover-provider.test.ts b/src/image-hover-provider/__tests__/image-hover-provider.test.ts index f0f45c2..1ffd664 100644 --- a/src/image-hover-provider/__tests__/image-hover-provider.test.ts +++ b/src/image-hover-provider/__tests__/image-hover-provider.test.ts @@ -4,8 +4,8 @@ import { MarkdownParseCache } from '../../markdown-parse-cache'; import { TextDocument, Uri, Position, workspace, CancellationToken } from '../../test/__mocks__/vscode'; // Mock workspace.getConfiguration -const mockGetConfiguration = jest.fn().mockReturnValue({ - get: jest.fn().mockReturnValue(false), +const mockGetConfiguration = vi.fn().mockReturnValue({ + get: vi.fn().mockReturnValue(false), }); (workspace as any).getConfiguration = mockGetConfiguration; @@ -40,7 +40,7 @@ describe('MarkdownImageHoverProvider', () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string) => { + get: vi.fn((key: string) => { if (key === 'defaultBehaviors.diffView.applyDecorations') return false; if (key === 'links.singleClickOpen') return false; return false; @@ -92,7 +92,7 @@ describe('MarkdownImageHoverProvider', () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn().mockReturnValue(false), + get: vi.fn().mockReturnValue(false), }); const result = await provider.provideHover(document, position, token); @@ -106,7 +106,7 @@ describe('MarkdownImageHoverProvider', () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string) => { + get: vi.fn((key: string) => { if (key === 'defaultBehaviors.diffView.applyDecorations') return false; if (key === 'links.singleClickOpen') return false; return false; @@ -129,7 +129,7 @@ describe('MarkdownImageHoverProvider', () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string) => { + get: vi.fn((key: string) => { if (key === 'defaultBehaviors.diffView.applyDecorations') return false; if (key === 'links.singleClickOpen') return true; return false; @@ -173,7 +173,7 @@ describe('MarkdownImageHoverProvider', () => { // Access the parser through the parse cache const parser = (parseCache as any).parser; - const extractSpy = jest.spyOn(parser, 'extractDecorationsWithScopes'); + const extractSpy = vi.spyOn(parser, 'extractDecorationsWithScopes'); // First hover - should parse await provider.provideHover(document, position, token); diff --git a/src/language-support.ts b/src/language-support.ts new file mode 100644 index 0000000..1859de2 --- /dev/null +++ b/src/language-support.ts @@ -0,0 +1,19 @@ +import type * as vscode from 'vscode'; + +export const SUPPORTED_MARKDOWN_LANGUAGE_IDS = [ + 'markdown', + 'md', + 'mdx', + 'skill', + 'markdoc', + 'mdc', + 'juliamarkdown', + 'rmarkdown', +] as const; + +export function isSupportedMarkdownLanguage(languageId: string): boolean { + return (SUPPORTED_MARKDOWN_LANGUAGE_IDS as readonly string[]).includes(languageId); +} + +export const FILE_BACKED_MARKDOWN_SELECTOR: vscode.DocumentSelector = + SUPPORTED_MARKDOWN_LANGUAGE_IDS.map((language) => ({ language, scheme: 'file' })); diff --git a/src/link-click-handler.ts b/src/link-click-handler.ts index 356da1e..9ed327c 100644 --- a/src/link-click-handler.ts +++ b/src/link-click-handler.ts @@ -1,13 +1,12 @@ import * as vscode from "vscode"; -import { mapNormalizedToOriginal } from "./position-mapping"; -import { - resolveImageTarget, - resolveLinkTarget, - resolveMentionTarget, - resolveIssueRefTarget, -} from "./link-targets"; import { MarkdownParseCache } from "./markdown-parse-cache"; -import { getForgeContext } from "./forge-context"; +import { + findDecorationAtOffset, + isLinkLikeDecoration, + resolveInteractionTarget, + toInteractionUri, +} from "./link-interactions/shared"; +import { logWarn } from "./logging"; /** * Handles single-click navigation for markdown links and images. @@ -81,101 +80,30 @@ export class LinkClickHandler { const text = parseEntry.text; const decorations = parseEntry.decorations; const clickOffset = document.offsetAt(position); - - // Find if the click is on a link or image - for (const decoration of decorations) { - if ( - (decoration.type === "link" || decoration.type === "image") && - decoration.url - ) { - const start = mapNormalizedToOriginal(decoration.startPos, text); - const end = mapNormalizedToOriginal(decoration.endPos, text); - if (clickOffset >= start && clickOffset < end) { - await this.openLink(decoration.url, decoration.type, document.uri); - return; - } - } - } - - // Mention and issue-reference: compute URL from metadata when in remote context. - // Fall back to document directory when there is no workspace folder so git detection still works. - const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri); - const rootUri = - workspaceFolder?.uri ?? vscode.Uri.joinPath(document.uri, ".."); - const ctx = getForgeContext(rootUri); - if (ctx.enabled) { - for (const decoration of decorations) { - const start = mapNormalizedToOriginal(decoration.startPos, text); - const end = mapNormalizedToOriginal(decoration.endPos, text); - if (clickOffset < start || clickOffset >= end) continue; - if (decoration.type === "mention" && decoration.slug) { - const target = resolveMentionTarget(decoration.slug, ctx.webBaseUrl); - if (target) { - await vscode.commands.executeCommand("vscode.open", target); - return; - } - } else if ( - decoration.type === "issueReference" && - typeof decoration.issueNumber === "number" - ) { - const owner = decoration.ownerRepo?.split("/")[0] ?? ctx.owner; - const repo = decoration.ownerRepo?.split("/")[1] ?? ctx.repo; - if (owner && repo) { - const target = resolveIssueRefTarget( - owner, - repo, - decoration.issueNumber, - ctx.webBaseUrl, - ctx.issuePathSegment, - ); - if (target) { - await vscode.commands.executeCommand("vscode.open", target); - return; - } - } - } - } - } - } - - /** - * Opens a link or image based on its URL and type. - * - * @param url - The URL to open - * @param type - The decoration type ('link' or 'image') - * @param documentUri - The URI of the current document - */ - private async openLink( - url: string, - type: "link" | "image", - documentUri: vscode.Uri, - ): Promise { - const trimmed = url.trim(); - - if (type === "image") { - const target = resolveImageTarget(trimmed, documentUri); - if (!target) { - return; - } - await vscode.commands.executeCommand("vscode.open", target); + const decoration = findDecorationAtOffset( + decorations, + text, + clickOffset, + document, + isLinkLikeDecoration + ); + if (!decoration) { return; } - const target = resolveLinkTarget(trimmed, documentUri); + const target = resolveInteractionTarget(decoration, document.uri); if (!target) { return; } - if (target.kind === "command") { - await vscode.commands.executeCommand(target.command, ...target.args); - return; - } - try { - await vscode.commands.executeCommand("vscode.open", target.uri); + if (target.kind === 'command') { + await vscode.commands.executeCommand(target.command, ...target.args); + return; + } + await vscode.commands.executeCommand("vscode.open", toInteractionUri(target)); } catch (error) { - // File might not exist, silently fail - console.warn("Failed to open link:", error); + logWarn('Failed to open link', error); } } diff --git a/src/link-click-handler/__tests__/link-click-handler.test.ts b/src/link-click-handler/__tests__/link-click-handler.test.ts index 9e06bfa..812d52c 100644 --- a/src/link-click-handler/__tests__/link-click-handler.test.ts +++ b/src/link-click-handler/__tests__/link-click-handler.test.ts @@ -1,3 +1,4 @@ +import type { Mock } from 'vitest'; import { LinkClickHandler } from "../../link-click-handler"; import { MarkdownParser } from "../../parser"; import { MarkdownParseCache } from "../../markdown-parse-cache"; @@ -9,17 +10,18 @@ import { Selection, workspace, commands, + window, } from "../../test/__mocks__/vscode"; // Mock workspace.getConfiguration -const mockGetConfiguration = jest.fn().mockReturnValue({ - get: jest.fn().mockReturnValue(false), +const mockGetConfiguration = vi.fn().mockReturnValue({ + get: vi.fn().mockReturnValue(false), }); (workspace as any).getConfiguration = mockGetConfiguration; // Mock commands.executeCommand -const mockExecuteCommand = jest.fn(); +const mockExecuteCommand = vi.fn(); (commands as any).executeCommand = mockExecuteCommand; describe("LinkClickHandler", () => { @@ -245,7 +247,7 @@ describe("LinkClickHandler", () => { it("should open mention targets when mention links are enabled", async () => { mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string, defaultValue?: unknown) => { + get: vi.fn((key: string, defaultValue?: unknown) => { if (key === "mentions.enabled") return true; if (key === "mentions.linksEnabled") return true; return defaultValue; @@ -277,7 +279,7 @@ describe("LinkClickHandler", () => { it("should open repo-scoped issue reference targets", async () => { mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string, defaultValue?: unknown) => { + get: vi.fn((key: string, defaultValue?: unknown) => { if (key === "mentions.enabled") return true; if (key === "mentions.linksEnabled") return true; return defaultValue; @@ -309,7 +311,7 @@ describe("LinkClickHandler", () => { it("should not open mention targets when mention links are explicitly disabled", async () => { mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string, defaultValue?: unknown) => { + get: vi.fn((key: string, defaultValue?: unknown) => { if (key === "mentions.enabled") return true; if (key === "mentions.linksEnabled") return false; return defaultValue; @@ -343,12 +345,12 @@ describe("LinkClickHandler", () => { const position = new Position(0, 3); mockExecuteCommand.mockRejectedValueOnce(new Error("File not found")); - const consoleSpy = jest.spyOn(console, "warn").mockImplementation(); await (handler as any).handleClick(editor, position); - expect(consoleSpy).toHaveBeenCalled(); - consoleSpy.mockRestore(); + expect(window.createOutputChannel).toHaveBeenCalledTimes(1); + const channel = (window.createOutputChannel as Mock).mock.results[0].value; + expect(channel.appendLine).toHaveBeenCalledWith(expect.stringContaining('[warn] Failed to open link')); }); }); diff --git a/src/link-hover-provider.ts b/src/link-hover-provider.ts index 5a5bf68..1a1f9e0 100644 --- a/src/link-hover-provider.ts +++ b/src/link-hover-provider.ts @@ -1,10 +1,14 @@ import * as vscode from "vscode"; -import { mapNormalizedToOriginal } from "./position-mapping"; import { shouldSkipInDiffView } from "./diff-context"; import { config } from "./config"; import { MarkdownParseCache } from "./markdown-parse-cache"; -import { getForgeContext } from "./forge-context"; -import { resolveIssueRefTarget, resolveMentionTarget } from "./link-targets"; +import { + createDecorationRange, + findDecorationAtOffset, + getInteractionDisplayValue, + isLinkLikeDecoration, + resolveInteractionTarget, +} from "./link-interactions/shared"; /** * Provides a hover that shows the target URL for markdown links, mentions, and issue references. @@ -37,72 +41,33 @@ export class MarkdownLinkHoverProvider implements vscode.HoverProvider { const decorations = parseEntry.decorations; const hoverOffset = document.offsetAt(position); const singleClickEnabled = config.links.singleClickOpen(); - const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri); - const rootUri = - workspaceFolder?.uri ?? vscode.Uri.joinPath(document.uri, ".."); - const ctx = getForgeContext(rootUri); - - for (const decoration of decorations) { - if (token.isCancellationRequested) { - return; - } - - const start = mapNormalizedToOriginal(decoration.startPos, text); - const end = mapNormalizedToOriginal(decoration.endPos, text); - - if (hoverOffset < start || hoverOffset >= end) { - continue; - } - - let targetUrl: string | undefined; - - if (decoration.type === "link" && decoration.url) { - targetUrl = decoration.url; - } else if ( - ctx.enabled && - decoration.type === "mention" && - decoration.slug - ) { - targetUrl = resolveMentionTarget( - decoration.slug, - ctx.webBaseUrl, - )?.toString(); - } else if ( - ctx.enabled && - decoration.type === "issueReference" && - typeof decoration.issueNumber === "number" - ) { - const owner = decoration.ownerRepo?.split("/")[0] ?? ctx.owner; - const repo = decoration.ownerRepo?.split("/")[1] ?? ctx.repo; - if (owner && repo) { - targetUrl = resolveIssueRefTarget( - owner, - repo, - decoration.issueNumber, - ctx.webBaseUrl, - ctx.issuePathSegment, - )?.toString(); - } - } + const decoration = findDecorationAtOffset( + decorations, + text, + hoverOffset, + document, + isLinkLikeDecoration + ); + if (!decoration) { + return; + } - if (!targetUrl) { - continue; - } + const target = resolveInteractionTarget(decoration, document.uri); + if (!target) { + return; + } - const markdown = new vscode.MarkdownString(); - markdown.appendText(`Link URL: ${targetUrl}`); - if (!singleClickEnabled) { - markdown.appendMarkdown( - "\n\n*Direct click disabled (enable in settings).*", - ); - } - const hoverRange = new vscode.Range( - document.positionAt(start), - document.positionAt(end), + const markdown = new vscode.MarkdownString(); + markdown.appendText(`Link URL: ${getInteractionDisplayValue(decoration, target)}`); + if (!singleClickEnabled) { + markdown.appendMarkdown( + "\n\n*Direct click disabled (enable in settings).*", ); - return new vscode.Hover(markdown, hoverRange); } - return; + return new vscode.Hover( + markdown, + createDecorationRange(document, decoration, text) + ); } } diff --git a/src/link-hover-provider/__tests__/link-hover-provider.test.ts b/src/link-hover-provider/__tests__/link-hover-provider.test.ts index d6c685e..f447087 100644 --- a/src/link-hover-provider/__tests__/link-hover-provider.test.ts +++ b/src/link-hover-provider/__tests__/link-hover-provider.test.ts @@ -10,8 +10,8 @@ import { } from "../../test/__mocks__/vscode"; // Mock workspace.getConfiguration -const mockGetConfiguration = jest.fn().mockReturnValue({ - get: jest.fn().mockReturnValue(false), +const mockGetConfiguration = vi.fn().mockReturnValue({ + get: vi.fn().mockReturnValue(false), }); (workspace as any).getConfiguration = mockGetConfiguration; @@ -54,7 +54,7 @@ describe("MarkdownLinkHoverProvider", () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string) => { + get: vi.fn((key: string) => { if (key === "defaultBehaviors.diffView.applyDecorations") return false; if (key === "links.singleClickOpen") return false; @@ -117,7 +117,7 @@ describe("MarkdownLinkHoverProvider", () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn().mockReturnValue(false), + get: vi.fn().mockReturnValue(false), }); const result = await provider.provideHover(document, position, token); @@ -135,7 +135,7 @@ describe("MarkdownLinkHoverProvider", () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string) => { + get: vi.fn((key: string) => { if (key === "defaultBehaviors.diffView.applyDecorations") return false; if (key === "links.singleClickOpen") return false; @@ -167,7 +167,7 @@ describe("MarkdownLinkHoverProvider", () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string) => { + get: vi.fn((key: string) => { if (key === "defaultBehaviors.diffView.applyDecorations") return false; if (key === "links.singleClickOpen") return true; @@ -221,7 +221,7 @@ describe("MarkdownLinkHoverProvider", () => { // Access the parser through the parse cache const parser = (parseCache as any).parser; - const extractSpy = jest.spyOn(parser, "extractDecorationsWithScopes"); + const extractSpy = vi.spyOn(parser, "extractDecorationsWithScopes"); // First hover - should parse await provider.provideHover(document, position, token); @@ -246,7 +246,7 @@ describe("MarkdownLinkHoverProvider", () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string, defaultValue?: unknown) => { + get: vi.fn((key: string, defaultValue?: unknown) => { if (key === "mentions.enabled") return true; if (key === "mentions.linksEnabled") return true; if (key === "defaultBehaviors.diffView.applyDecorations") @@ -279,7 +279,7 @@ describe("MarkdownLinkHoverProvider", () => { const token = new CancellationToken(false); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string, defaultValue?: unknown) => { + get: vi.fn((key: string, defaultValue?: unknown) => { if (key === "mentions.enabled") return true; if (key === "mentions.linksEnabled") return true; if (key === "defaultBehaviors.diffView.applyDecorations") diff --git a/src/link-interactions/shared.ts b/src/link-interactions/shared.ts new file mode 100644 index 0000000..ad1555b --- /dev/null +++ b/src/link-interactions/shared.ts @@ -0,0 +1,131 @@ +import * as vscode from 'vscode'; +import type { DecorationRange } from '../parser'; +import { getForgeContext } from '../forge-context'; +import { + resolveImageTarget, + resolveIssueRefTarget, + resolveLinkTarget, + resolveMentionTarget, + toCommandUri, +} from '../link-targets'; +import { mapNormalizedToOriginal } from '../position-mapping'; + +export type InteractionTarget = + | { kind: 'uri'; uri: vscode.Uri } + | { kind: 'command'; command: string; args: unknown[] }; + +export function getDocumentRootUri(documentUri: vscode.Uri): vscode.Uri { + const workspaceFolder = vscode.workspace.getWorkspaceFolder(documentUri); + return workspaceFolder?.uri ?? vscode.Uri.joinPath(documentUri, '..'); +} + +export function createDecorationRange( + document: vscode.TextDocument, + decoration: DecorationRange, + normalizedText: string +): vscode.Range { + const mappedStart = mapNormalizedToOriginal(decoration.startPos, normalizedText); + const mappedEnd = mapNormalizedToOriginal(decoration.endPos, normalizedText); + return new vscode.Range( + document.positionAt(mappedStart), + document.positionAt(mappedEnd) + ); +} + +export function findDecorationAtOffset( + decorations: readonly DecorationRange[], + normalizedText: string, + offset: number, + document: vscode.TextDocument, + predicate: (decoration: DecorationRange) => boolean +): DecorationRange | undefined { + return decorations.find((decoration) => { + if (!predicate(decoration)) { + return false; + } + + const start = mapNormalizedToOriginal(decoration.startPos, normalizedText); + const end = mapNormalizedToOriginal(decoration.endPos, normalizedText); + return offset >= start && offset < end; + }); +} + +export function resolveInteractionTarget( + decoration: DecorationRange, + documentUri: vscode.Uri +): InteractionTarget | undefined { + if (decoration.type === 'image' && decoration.url) { + const uri = resolveImageTarget(decoration.url, documentUri); + return uri ? { kind: 'uri', uri } : undefined; + } + + if (decoration.type === 'link' && decoration.url) { + const resolved = resolveLinkTarget(decoration.url, documentUri); + if (!resolved) { + return undefined; + } + return resolved; + } + + const ctx = getForgeContext(getDocumentRootUri(documentUri)); + if (!ctx.enabled) { + return undefined; + } + + if (decoration.type === 'mention' && decoration.slug) { + const uri = resolveMentionTarget(decoration.slug, ctx.webBaseUrl); + return uri ? { kind: 'uri', uri } : undefined; + } + + if ( + decoration.type === 'issueReference' && + typeof decoration.issueNumber === 'number' + ) { + const owner = decoration.ownerRepo?.split('/')[0] ?? ctx.owner; + const repo = decoration.ownerRepo?.split('/')[1] ?? ctx.repo; + if (!owner || !repo) { + return undefined; + } + + const uri = resolveIssueRefTarget( + owner, + repo, + decoration.issueNumber, + ctx.webBaseUrl, + ctx.issuePathSegment + ); + return uri ? { kind: 'uri', uri } : undefined; + } + + return undefined; +} + +export function toInteractionUri(target: InteractionTarget): vscode.Uri { + return target.kind === 'command' + ? toCommandUri(target.command, target.args) + : target.uri; +} + +export function getInteractionDisplayValue( + decoration: DecorationRange, + target: InteractionTarget +): string { + if (decoration.type === 'link' || decoration.type === 'image') { + return decoration.url ?? toInteractionUri(target).toString(); + } + + return toInteractionUri(target).toString(); +} + +export function isLinkDecoration(decoration: DecorationRange): boolean { + return ( + (decoration.type === 'link' || decoration.type === 'image') && + typeof decoration.url === 'string' + ); +} + +export function isLinkLikeDecoration(decoration: DecorationRange): boolean { + return isLinkDecoration(decoration) || + (decoration.type === 'mention' && typeof decoration.slug === 'string') || + (decoration.type === 'issueReference' && typeof decoration.issueNumber === 'number'); +} diff --git a/src/link-provider.ts b/src/link-provider.ts index 980cdd2..34ac062 100644 --- a/src/link-provider.ts +++ b/src/link-provider.ts @@ -1,15 +1,41 @@ import * as vscode from "vscode"; +import type { DecorationRange } from "./parser"; import { MarkdownParseCache } from "./markdown-parse-cache"; -import { mapNormalizedToOriginal } from "./position-mapping"; import { shouldSkipInDiffView } from "./diff-context"; import { - resolveImageTarget, - resolveLinkTarget, - toCommandUri, - resolveMentionTarget, - resolveIssueRefTarget, -} from "./link-targets"; -import { getForgeContext } from "./forge-context"; + createDecorationRange, + isLinkLikeDecoration, + resolveInteractionTarget, + toInteractionUri, +} from "./link-interactions/shared"; + +/** + * VS Code rejects DocumentLink ranges where start === end ("Illegal argument: range"). + * Empty image alt (![](url)) yields a zero-width decoration range; expand by one UTF-16 unit. + */ +function rangeIsEmpty(range: vscode.Range): boolean { + return ( + range.start.line === range.end.line && + range.start.character === range.end.character + ); +} + +function documentLinkRange( + document: vscode.TextDocument, + decoration: DecorationRange, + normalizedText: string, +): vscode.Range { + const range = createDecorationRange(document, decoration, normalizedText); + if (!rangeIsEmpty(range)) { + return range; + } + const startOffset = document.offsetAt(range.start); + const endOffset = Math.min(startOffset + 1, document.getText().length); + if (endOffset <= startOffset) { + return range; + } + return new vscode.Range(range.start, document.positionAt(endOffset)); +} /** * Provides clickable links and images for markdown documents. @@ -55,97 +81,19 @@ export class MarkdownLinkProvider implements vscode.DocumentLinkProvider { const parseEntry = this.parseCache.get(document); const text = parseEntry.text; const decorations = parseEntry.decorations; - const links: vscode.DocumentLink[] = []; - - // Find all link decorations with URLs - // Note: Links inside code blocks are already filtered out by the parser's - // post-processing filter (filterDecorationsInCodeBlocks), so we don't need - // to check scopes here. - for (const decoration of decorations) { - if ( - (decoration.type === "link" || decoration.type === "image") && - decoration.url - ) { - const url = decoration.url; - - // Map normalized positions to original document positions (handles CRLF -> LF normalization) - const mappedStart = mapNormalizedToOriginal(decoration.startPos, text); - const mappedEnd = mapNormalizedToOriginal(decoration.endPos, text); - - // Create range for the link/image text (not the URL) - const startPos = document.positionAt(mappedStart); - const endPos = document.positionAt(mappedEnd); - const range = new vscode.Range(startPos, endPos); - - // Create document link - let target: vscode.Uri | undefined; - - if (decoration.type === "image") { - target = resolveImageTarget(url, document.uri); - } else { - const resolved = resolveLinkTarget(url, document.uri); - if (resolved?.kind === "command") { - target = toCommandUri(resolved.command, resolved.args); - } else { - target = resolved?.uri; - } - } - - if (target) { - const link = new vscode.DocumentLink(range, target); - links.push(link); + return decorations + .filter(isLinkLikeDecoration) + .flatMap((decoration) => { + const target = resolveInteractionTarget(decoration, document.uri); + if (!target) { + return []; } - } - } - - // Mention and issue-reference links when in remote context (URL computed from decoration metadata). - // Fall back to document directory when there is no workspace folder so git detection still works. - const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri); - const rootUri = - workspaceFolder?.uri ?? vscode.Uri.joinPath(document.uri, ".."); - const ctx = getForgeContext(rootUri); - if (ctx.enabled) { - for (const decoration of decorations) { - if (decoration.type === "mention" && decoration.slug) { - const target = resolveMentionTarget(decoration.slug, ctx.webBaseUrl); - if (target) { - const mappedStart = mapNormalizedToOriginal(decoration.startPos, text); - const mappedEnd = mapNormalizedToOriginal(decoration.endPos, text); - const range = new vscode.Range( - document.positionAt(mappedStart), - document.positionAt(mappedEnd), - ); - links.push(new vscode.DocumentLink(range, target)); - } - } else if ( - decoration.type === "issueReference" && - typeof decoration.issueNumber === "number" - ) { - const owner = decoration.ownerRepo?.split("/")[0] ?? ctx.owner; - const repo = decoration.ownerRepo?.split("/")[1] ?? ctx.repo; - if (owner && repo) { - const target = resolveIssueRefTarget( - owner, - repo, - decoration.issueNumber, - ctx.webBaseUrl, - ctx.issuePathSegment, - ); - if (target) { - const mappedStart = mapNormalizedToOriginal(decoration.startPos, text); - const mappedEnd = mapNormalizedToOriginal(decoration.endPos, text); - const range = new vscode.Range( - document.positionAt(mappedStart), - document.positionAt(mappedEnd), - ); - links.push(new vscode.DocumentLink(range, target)); - } - } - } - } - } - return links; + return [new vscode.DocumentLink( + documentLinkRange(document, decoration, text), + toInteractionUri(target) + )]; + }); } /** diff --git a/src/link-provider/__tests__/link-provider-crlf.test.ts b/src/link-provider/__tests__/link-provider-crlf.test.ts index 1fc3e89..d7068c5 100644 --- a/src/link-provider/__tests__/link-provider-crlf.test.ts +++ b/src/link-provider/__tests__/link-provider-crlf.test.ts @@ -3,8 +3,8 @@ import { workspace } from '../../test/__mocks__/vscode'; import { createCRLFText, mapNormalizedToOriginal } from '../../parser/__tests__/helpers/crlf-helpers'; // Mock workspace.getConfiguration -const mockGetConfiguration = jest.fn().mockReturnValue({ - get: jest.fn().mockReturnValue(false), // defaultBehaviors.diffView.applyDecorations defaults to false +const mockGetConfiguration = vi.fn().mockReturnValue({ + get: vi.fn().mockReturnValue(false), // defaultBehaviors.diffView.applyDecorations defaults to false }); (workspace as any).getConfiguration = mockGetConfiguration; @@ -12,7 +12,7 @@ const mockGetConfiguration = jest.fn().mockReturnValue({ /** * Test the position mapping logic used by MarkdownLinkProvider. * - * Note: We can't directly test MarkdownLinkProvider in Jest due to ESM module loading issues + * Note: We can't directly test MarkdownLinkProvider in unit tests due to ESM module loading issues * with the parser. However, we can test the core position mapping logic that was added * to fix issue #33 (CRLF line endings in table of contents links). * diff --git a/src/link-provider/__tests__/link-provider.test.ts b/src/link-provider/__tests__/link-provider.test.ts index eeeb920..7e68144 100644 --- a/src/link-provider/__tests__/link-provider.test.ts +++ b/src/link-provider/__tests__/link-provider.test.ts @@ -8,7 +8,7 @@ import { workspace, } from "../../test/__mocks__/vscode"; -const mockGetConfiguration = jest.fn(); +const mockGetConfiguration = vi.fn(); (workspace as any).getConfiguration = mockGetConfiguration; describe("MarkdownLinkProvider", () => { @@ -21,7 +21,7 @@ describe("MarkdownLinkProvider", () => { provider = new MarkdownLinkProvider(parseCache); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string, defaultValue?: unknown) => { + get: vi.fn((key: string, defaultValue?: unknown) => { if (key === "defaultBehaviors.diffView.applyDecorations") return false; if (key === "mentions.enabled") return true; if (key === "mentions.linksEnabled") return undefined; @@ -29,7 +29,7 @@ describe("MarkdownLinkProvider", () => { }), }); - (workspace as any).getWorkspaceFolder = jest.fn(() => undefined); + (workspace as any).getWorkspaceFolder = vi.fn(() => undefined); }); it("returns no links for non-markdown documents", () => { @@ -112,13 +112,13 @@ describe("MarkdownLinkProvider", () => { }); it("resolves standalone #123 when workspace owner/repo is available", () => { - (workspace as any).getWorkspaceFolder = jest.fn(() => ({ + (workspace as any).getWorkspaceFolder = vi.fn(() => ({ uri: Uri.file("/tmp/workspace"), name: "workspace", })); mockGetConfiguration.mockReturnValue({ - get: jest.fn((key: string, defaultValue?: unknown) => { + get: vi.fn((key: string, defaultValue?: unknown) => { if (key === "defaultBehaviors.diffView.applyDecorations") return false; if (key === "mentions.enabled") return true; if (key === "mentions.linksEnabled") return true; @@ -147,4 +147,23 @@ describe("MarkdownLinkProvider", () => { provider.resolveDocumentLink(link, new CancellationToken(false)), ).toBe(link); }); + + it("provides a non-empty DocumentLink range for images with empty alt (![](url))", () => { + const document = new TextDocument( + Uri.file("/test.md"), + "markdown", + 1, + "![](https://example.com/x.png)", + ); + const links = provider.provideDocumentLinks( + document, + new CancellationToken(false), + ) as Array<{ range: { start: { line: number; character: number }; end: { line: number; character: number } }; target?: Uri }>; + + const img = links.find((l) => l.target?.toString().includes("example.com")); + expect(img).toBeDefined(); + expect(document.offsetAt(img!.range.end)).toBeGreaterThan( + document.offsetAt(img!.range.start), + ); + }); }); diff --git a/src/logging.ts b/src/logging.ts new file mode 100644 index 0000000..9b888a9 --- /dev/null +++ b/src/logging.ts @@ -0,0 +1,67 @@ +import * as vscode from 'vscode'; +import { config } from './config'; + +let outputChannel: vscode.OutputChannel | undefined; + +function getOutputChannel(): vscode.OutputChannel { + if (!outputChannel) { + outputChannel = vscode.window.createOutputChannel('Markdown Inline Editor'); + } + return outputChannel; +} + +function stringifyDetails(details: Record | undefined): string { + if (!details) { + return ''; + } + + const parts = Object.entries(details).map(([key, value]) => `${key}=${String(value)}`); + return parts.length > 0 ? ` ${parts.join(' ')}` : ''; +} + +function stringifyError(error: unknown): string { + if (error instanceof Error) { + return error.stack || error.message || error.toString(); + } + return String(error); +} + +function writeLine(level: 'debug' | 'warn' | 'error' | 'perf', message: string, details?: Record): void { + getOutputChannel().appendLine(`[${level}] ${message}${stringifyDetails(details)}`); +} + +export function logDebug(message: string, details?: Record): void { + if (!config.debug.loggingEnabled()) { + return; + } + + writeLine('debug', message, details); +} + +function logWithError(level: 'warn' | 'error', message: string, error?: unknown, details?: Record): void { + writeLine(level, message, { + ...details, + ...(error === undefined ? {} : { error: stringifyError(error) }), + }); +} + +export function logWarn(message: string, error?: unknown, details?: Record): void { + logWithError('warn', message, error, details); +} + +export function logError(message: string, error?: unknown, details?: Record): void { + logWithError('error', message, error, details); +} + +export function logPerformanceMetric(metric: string, details: Record): void { + if (!config.debug.performanceEnabled()) { + return; + } + + writeLine('perf', metric, details); +} + +export function disposeLogger(): void { + outputChannel?.dispose(); + outputChannel = undefined; +} diff --git a/src/logging/__tests__/logging.test.ts b/src/logging/__tests__/logging.test.ts new file mode 100644 index 0000000..dd3b648 --- /dev/null +++ b/src/logging/__tests__/logging.test.ts @@ -0,0 +1,57 @@ +import type { Mock } from 'vitest'; +import * as vscode from 'vscode'; +import { disposeLogger, logDebug, logError, logPerformanceMetric, logWarn } from '../../logging'; + +describe('logging', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + afterEach(() => { + vi.restoreAllMocks(); + disposeLogger(); + }); + + it('does not create an output channel for debug logs when debug logging is disabled', () => { + logDebug('skipped'); + + expect(vscode.window.createOutputChannel).not.toHaveBeenCalled(); + }); + + it('writes warnings and errors to the output channel', () => { + logWarn('warning message', new Error('boom')); + logError('error message', 'bad'); + + expect(vscode.window.createOutputChannel).toHaveBeenCalledTimes(1); + const channel = (vscode.window.createOutputChannel as Mock).mock.results[0].value; + expect(channel.appendLine).toHaveBeenCalledWith(expect.stringContaining('[warn] warning message')); + expect(channel.appendLine).toHaveBeenCalledWith(expect.stringContaining('[error] error message')); + }); + + it('writes performance metrics only when performance logging is enabled', () => { + vi.spyOn(vscode.workspace, 'getConfiguration').mockReturnValue({ + get: (key: string, defaultValue: T): T => { + if (key === 'debug.performance.enabled') { + return true as T; + } + return defaultValue; + }, + } as any); + + logPerformanceMetric('decorator.update', { totalMs: 12, decorations: 5 }); + + const channel = (vscode.window.createOutputChannel as Mock).mock.results[0].value; + expect(channel.appendLine).toHaveBeenCalledWith( + expect.stringContaining('[perf] decorator.update totalMs=12 decorations=5') + ); + }); + + it('disposes the output channel when requested', () => { + logWarn('warning message'); + const channel = (vscode.window.createOutputChannel as Mock).mock.results[0].value; + + disposeLogger(); + + expect(channel.dispose).toHaveBeenCalledTimes(1); + }); +}); diff --git a/src/markdown-parse-cache.ts b/src/markdown-parse-cache.ts index ff535e0..25faf0f 100644 --- a/src/markdown-parse-cache.ts +++ b/src/markdown-parse-cache.ts @@ -1,5 +1,6 @@ import type * as vscode from 'vscode'; import type { DecorationRange, ScopeRange, MermaidBlock, MathRegion, MarkdownParser } from './parser'; +import { logDebug, logPerformanceMetric } from './logging'; export type ParseEntry = { version: number; @@ -25,11 +26,14 @@ export class MarkdownParseCache { const cached = this.cache.get(cacheKey); if (cached && cached.version === document.version) { cached.lastAccessed = ++this.accessCounter; + logDebug('parse cache hit', { uri: cacheKey, version: document.version }); return cached; } const text = document.getText(); + const parseStart = Date.now(); const { decorations, scopes, mermaidBlocks, mathRegions } = this.parser.extractDecorationsWithScopes(text); + const parseDurationMs = Date.now() - parseStart; const entry: CacheEntry = { version: document.version, text, @@ -45,6 +49,15 @@ export class MarkdownParseCache { } this.cache.set(cacheKey, entry); + logPerformanceMetric('parse-cache.get', { + uri: cacheKey, + version: document.version, + parseMs: parseDurationMs, + decorations: decorations.length, + scopes: scopes.length, + mermaidBlocks: mermaidBlocks.length, + mathRegions: mathRegions.length, + }); return entry; } @@ -72,6 +85,7 @@ export class MarkdownParseCache { } if (lruKey) { + logDebug('parse cache evict', { uri: lruKey }); this.cache.delete(lruKey); } } diff --git a/src/math/__tests__/math-decorations.test.ts b/src/math/__tests__/math-decorations.test.ts index afa9f95..7b57194 100644 --- a/src/math/__tests__/math-decorations.test.ts +++ b/src/math/__tests__/math-decorations.test.ts @@ -1,5 +1,5 @@ -jest.mock('../math-renderer', () => ({ - renderMathToDataUri: jest.fn(() => 'data:image/svg+xml;base64,PHN2Zy8+'), +vi.mock('../math-renderer', () => ({ + renderMathToDataUri: vi.fn(() => 'data:image/svg+xml;base64,PHN2Zy8+'), })); import { window, workspace, ColorThemeKind } from 'vscode'; @@ -8,12 +8,12 @@ import { renderMathToDataUri } from '../math-renderer'; describe('MathDecorations', () => { afterEach(() => { - jest.restoreAllMocks(); - jest.clearAllMocks(); + vi.restoreAllMocks(); + vi.clearAllMocks(); }); it('uses (numLines + 2) * lineHeight for block regions', () => { - jest.spyOn(workspace, 'getConfiguration').mockReturnValue({ + vi.spyOn(workspace, 'getConfiguration').mockReturnValue({ get: (key: string, defaultValue: T): T => { if (key === 'fontSize') return 14 as T; if (key === 'lineHeight') return 0 as T; @@ -21,7 +21,7 @@ describe('MathDecorations', () => { }, } as unknown as ReturnType); - const editor = { setDecorations: jest.fn() } as any; + const editor = { setDecorations: vi.fn() } as any; const decorations = new MathDecorations(); decorations.apply(editor, [ { @@ -47,10 +47,10 @@ describe('MathDecorations', () => { }); it('does not set block-only width/height auto styling on decoration before options', () => { - jest.spyOn(window, 'createTextEditorDecorationType'); + vi.spyOn(window, 'createTextEditorDecorationType'); window.activeColorTheme.kind = ColorThemeKind.Dark; - const editor = { setDecorations: jest.fn() } as any; + const editor = { setDecorations: vi.fn() } as any; const decorations = new MathDecorations(); decorations.apply(editor, [ { @@ -65,7 +65,7 @@ describe('MathDecorations', () => { }, ]); - const options = (window.createTextEditorDecorationType as jest.Mock).mock.calls[0][0]; + const options = vi.mocked(window.createTextEditorDecorationType).mock.calls[0][0]; expect(options.before.width).toBeUndefined(); expect(options.before.height).toBeUndefined(); }); diff --git a/src/mermaid/mermaid-renderer.ts b/src/mermaid/mermaid-renderer.ts index 8b675b5..9d44690 100644 --- a/src/mermaid/mermaid-renderer.ts +++ b/src/mermaid/mermaid-renderer.ts @@ -5,6 +5,7 @@ import { processSvg } from './svg-processor'; import { createErrorSvg, extractErrorMessage } from './error-handler'; import { MERMAID_CONSTANTS } from './constants'; import type { MermaidRenderOptions } from './types'; +import { logWarn } from '../logging'; // Singleton webview manager instance let webviewManager: MermaidWebviewManager | undefined; @@ -19,7 +20,7 @@ let hasLoggedWaitingForWebview = false; async function waitForWebviewOnceLogged(manager: MermaidWebviewManager): Promise { if (!hasLoggedWaitingForWebview) { hasLoggedWaitingForWebview = true; - console.warn('Mermaid: waiting for webview'); + logWarn('Mermaid: waiting for webview'); } await manager.waitForWebview(); } diff --git a/src/mermaid/webview-manager.ts b/src/mermaid/webview-manager.ts index f79c11b..8f54bb3 100644 --- a/src/mermaid/webview-manager.ts +++ b/src/mermaid/webview-manager.ts @@ -3,6 +3,7 @@ import { ColorThemeKind } from 'vscode'; import type { PendingRender, RenderResponse } from './types'; import { MERMAID_CONSTANTS } from './constants'; import { createErrorSvg } from './error-handler'; +import { logWarn } from '../logging'; /** * Manages the Mermaid webview lifecycle and communication @@ -77,7 +78,7 @@ export class MermaidWebviewManager { }) .catch((err: unknown) => { if (err instanceof Error && err.message === 'timeout') { - console.warn('Mermaid: Webview not ready after opening view'); + logWarn('Mermaid: Webview not ready after opening view'); } this.initTimeoutId = setTimeout(() => { vscode.commands.executeCommand('workbench.view.explorer'); @@ -87,7 +88,7 @@ export class MermaidWebviewManager { }, (err: unknown) => { if (err !== undefined) { - console.warn('Mermaid: Failed to focus view', err); + logWarn('Mermaid: Failed to focus view', err); } } ); diff --git a/src/parser-remark.ts b/src/parser-remark.ts index f6e4e6a..10252ea 100644 --- a/src/parser-remark.ts +++ b/src/parser-remark.ts @@ -1,5 +1,5 @@ // Helper module to handle ESM imports for remark -// This allows the parser to work in both CommonJS (VS Code) and ESM (Jest) contexts +// This allows the parser to work in both CommonJS (VS Code) and test-runner (Vitest) contexts let unified: any; let remarkParse: any; @@ -15,7 +15,7 @@ export async function getRemarkProcessor() { remarkGfm = require('remark-gfm'); visit = require('unist-util-visit').visit; } catch { - // Fall back to ESM dynamic import (for Jest/testing) + // Fall back to ESM dynamic import (for Vitest / async paths) const unifiedModule = await import('unified'); unified = unifiedModule.unified; remarkParse = await import('remark-parse'); @@ -37,7 +37,7 @@ export async function getRemarkProcessor() { export function getRemarkProcessorSync() { if (!unified) { // Use require - works in VS Code extension CommonJS context - // For Jest, we need to ensure transformIgnorePatterns includes these modules + // Vitest resolves these via the same require path when sync entry is used unified = require('unified').unified; remarkParse = require('remark-parse'); remarkGfm = require('remark-gfm'); diff --git a/src/parser.ts b/src/parser.ts index c22b8a4..86eb658 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -1,2904 +1,9 @@ -import type { - Root, - Node, - Strong, - Emphasis, - Heading, - InlineCode, - Code, - Link, - Image, - Delete, - Blockquote, - List, - ListItem, - ThematicBreak, - Text, - Table, - TableCell, -} from "mdast"; -import { getRemarkProcessorSync, getRemarkProcessor } from "./parser-remark"; -import { getEmojiMap } from "./emoji-map-loader"; -import { scanMathRegions } from "./math/math-scanner"; -import { config } from "./config"; - -/** - * Represents a decoration range in the markdown document. - * - * @interface DecorationRange - * @property {number} startPos - Character position (0-based, inclusive) - * @property {number} endPos - Character position (0-based, exclusive) - * @property {DecorationType} type - The type of decoration to apply - */ -export interface DecorationRange { - startPos: number; - endPos: number; - type: DecorationType; - url?: string; // URL for link decorations (for clickable links) - level?: number; // Nesting level for blockquotes - emoji?: string; // Emoji character for emoji shortcode replacements - replacement?: string; // Replacement text for table pipe/cell decorations - cellStyle?: { - fontWeight?: string; - fontStyle?: string; - textDecoration?: string; - }; - slug?: string; // For type 'mention': segment after @ (e.g. username, org/team). Used by link provider to resolve URL. - issueNumber?: number; // For type 'issueReference': issue/PR number. Used by link provider to resolve URL. - ownerRepo?: string; // For type 'issueReference' when repo-scoped (@user/repo#456): the "user/repo" part. - /** True when the source marker number differs from the computed replacement (ordered lists only). */ - orderedListMarkerMismatch?: boolean; -} - -/** - * Represents a markdown construct scope (e.g., **bold**, [link](url)). - * Positions are in normalized text offsets (LF line endings). - */ -export interface ScopeRange { - startPos: number; - endPos: number; - kind?: string; -} - -export interface MermaidBlock { - startPos: number; - endPos: number; - source: string; - /** - * Number of lines in `source` (1 + newline count). - * - * Precomputed during parsing to avoid re-counting on every selection change. - */ - numLines: number; -} - -/** - * One detected math span (inline $...$ or block $$...$$). - * Positions are in normalized document text (LF line endings). - * For fence-derived regions: startPos/endPos span the whole fenced block; source is body only; numLines is body line count for height. - */ -export interface MathRegion { - startPos: number; - endPos: number; - source: string; - displayMode: boolean; - /** Body line count for fence-derived display math; used for height = (numLines + 2) × line height. Omitted for delimiter math. */ - numLines?: number; -} - -/** - * Result of parsing markdown for decorations and scopes. - */ -export interface ParseResult { - decorations: DecorationRange[]; - scopes: ScopeRange[]; - mermaidBlocks: MermaidBlock[]; - mathRegions: MathRegion[]; -} - -/** - * Types of decorations that can be applied to markdown content. - */ -export type DecorationType = - | "hide" - | "transparent" - // Selection overlay used by the Decorator (not emitted by the parser) - | "selectionOverlay" - // Ghost-faint markers used by the Decorator (not emitted by the parser) - | "ghostFaint" - | "emoji" - | "bold" - | "italic" - | "boldItalic" - | "strikethrough" - | "code" - | "codeBlock" - | "codeBlockLanguage" - | "heading" - | "heading1" - | "heading2" - | "heading3" - | "heading4" - | "heading5" - | "heading6" - | "link" - | "image" - | "blockquote" - | "listItem" - | "orderedListItem" - | "checkboxUnchecked" - | "checkboxChecked" - | "horizontalRule" - | "frontmatter" - | "frontmatterDelimiter" - | "tablePipe" - | "tableSeparatorPipe" - | "tableSeparatorDash" - | "tableCell" - | "mention" - | "issueReference"; - -/** - * Type for the unified processor used to parse markdown text to a Root AST node. - * - * The processor is created by the `unified()` function from the unified ecosystem - * and configured with remark-parse and remark-gfm plugins. - */ -type UnifiedProcessor = { - parse: (text: string) => Root; -}; - -/** - * Type for the visit function from unist-util-visit. - * - * Traverses nodes in a tree structure (AST) and calls the visitor function - * for each node. The visitor receives: node, index (optional), parent (optional). - */ -type VisitFunction = ( - tree: Root, - visitor: (node: Node, index?: number, parent?: Node) => void, -) => void; - -/** - * A parser that extracts decoration ranges from markdown text. - * - * This class uses `remark` to parse the input markdown and determines ranges for: - * - Markdown syntax markers (for hiding, e.g., `**`, `#`, `` ` ``) - * - Content (for applying styles such as bold, italic, headings, etc.) - * - * @class MarkdownParser - * @example - * // Synchronous usage (VS Code extension): - * const parser = new MarkdownParser(); - * const decorations = parser.extractDecorations('# Heading\n**bold** text'); - * - * // Asynchronous usage (ESM tests): - * const parser = await MarkdownParser.create(); - * const decorations = parser.extractDecorations('# Heading\n**bold** text'); - */ -export class MarkdownParser { - private processor: UnifiedProcessor; - private visit: VisitFunction; - - constructor() { - const { unified, remarkParse, remarkGfm, visit } = getRemarkProcessorSync(); - this.visit = visit; - this.processor = unified().use(remarkParse).use(remarkGfm); - } - - /** - * Async factory method to create a MarkdownParser instance. - * Uses dynamic imports to support ESM modules in test environments. - * - * @returns {Promise} A promise that resolves to a MarkdownParser instance - */ - static async create(): Promise { - const parser = Object.create(MarkdownParser.prototype); - const { unified, remarkParse, remarkGfm, visit } = - await getRemarkProcessor(); - parser.visit = visit; - parser.processor = unified().use(remarkParse).use(remarkGfm); - return parser; - } - - /** - * Extracts decoration ranges from markdown text. - * - * @param {string} text - The markdown text to parse - * @returns {DecorationRange[]} Array of decoration ranges, sorted by startPos - */ - extractDecorations(text: string): DecorationRange[] { - return this.extractDecorationsWithScopes(text).decorations; - } - - /** - * Extracts decoration ranges and explicit scope ranges from markdown text. - * - * @param {string} text - The markdown text to parse - * @returns {ParseResult} Decorations and scopes, sorted by startPos - */ - extractDecorationsWithScopes(text: string): ParseResult { - if (!text || typeof text !== "string") { - return { - decorations: [], - scopes: [], - mermaidBlocks: [], - mathRegions: [], - }; - } - - // Normalize line endings to \n for consistent position tracking - // Optimization: Only normalize if document contains CRLF - const normalizedText = - text.indexOf("\r") !== -1 ? text.replace(/\r\n|\r/g, "\n") : text; - - const decorations: DecorationRange[] = []; - const scopes: ScopeRange[] = []; - const mermaidBlocks: MermaidBlock[] = []; - - // Process frontmatter before remark parsing to avoid conflicts with thematic break detection - this.processFrontmatter(normalizedText, decorations, scopes); - - try { - // Parse markdown into AST - const ast = this.processor.parse(normalizedText) as Root; - - // Process AST nodes and extract decorations + scopes - this.processAST(ast, normalizedText, decorations, scopes, mermaidBlocks); - - // Handle edge cases: empty image alt text that remark doesn't parse as Image node - this.handleEmptyImageAlt(normalizedText, decorations); - - // GitHub-style mentions and issue references (@username, @org/team, #123, @user/repo#456) - if (config.mentions.enabled()) { - this.scanMentionAndIssueRefs(normalizedText, decorations, scopes); - } - - // Safety net: Remove any markdown formatting decorations that fall within code blocks - // Ancestor checks in processors prevent most cases, but this catches edge cases - this.filterDecorationsInCodeBlocks(decorations, scopes, normalizedText); - - // Sort decorations by start position - decorations.sort((a, b) => a.startPos - b.startPos); - } catch (error) { - // Gracefully handle parse errors - console.error("Error parsing markdown:", error); - } - - return { - decorations, - scopes: this.dedupeScopes(scopes), - mermaidBlocks, - mathRegions: scanMathRegions(normalizedText), - }; - } - - /** - * Processes the remark AST to extract decoration ranges. - * - * Uses a proper visitor pattern with ancestor tracking for efficient traversal. - * - * @private - * @param {Root} ast - The parsed AST root node - * @param {string} text - The original markdown text - * @param {DecorationRange[]} decorations - Array to accumulate decorations - */ - private processAST( - ast: Root, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - mermaidBlocks: MermaidBlock[], - ): void { - // Track processed blockquote positions to avoid duplicates from nested blockquotes - const processedBlockquotePositions = new Set(); - - // Use a map to efficiently track ancestors for each node - const ancestorMap = new Map(); - - this.visit( - ast, - (node: Node, index: number | undefined, parent: Node | undefined) => { - // Optimization: Trust remark's position data in hot path - // Individual process methods still validate for safety - try { - // Build ancestor chain efficiently using parent's cached ancestors - const currentAncestors: Node[] = []; - if (parent) { - currentAncestors.push(parent); - // Get parent's ancestors from cache (O(1) lookup instead of O(n) search) - const parentAncestors = ancestorMap.get(parent); - if (parentAncestors) { - currentAncestors.push(...parentAncestors); - } - } - - // Cache this node's ancestors for its children to use - if (currentAncestors.length > 0) { - ancestorMap.set(node, currentAncestors); - } - - switch (node.type) { - case "heading": - this.processHeading( - node as Heading, - text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "strong": - this.processStrong( - node as Strong, - text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "emphasis": - this.processEmphasis( - node as Emphasis, - text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "delete": - this.processStrikethrough( - node as Delete, - text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "inlineCode": - this.processInlineCode( - node as InlineCode, - text, - decorations, - scopes, - ); - break; - - case "code": - this.processCodeBlock( - node as Code, - text, - decorations, - scopes, - mermaidBlocks, - ); - break; - - case "link": - this.processLink( - node as Link, - text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "image": - this.processImage( - node as Image, - text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "blockquote": - this.processBlockquote( - node as Blockquote, - text, - decorations, - scopes, - processedBlockquotePositions, - currentAncestors, - ); - break; - - case "listItem": - this.processListItem( - node as ListItem, - text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "thematicBreak": - this.processThematicBreak( - node as ThematicBreak, - text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "text": - this.processText( - node as Text, - decorations, - scopes, - currentAncestors, - ); - break; - - case "table": - this.processTable( - node as Table, - text, - decorations, - scopes, - currentAncestors, - ); - break; - } - } catch (error) { - // Gracefully handle invalid positions or processing errors - // Individual methods still validate, so this catches unexpected issues - console.warn("Error processing AST node:", node.type, error); - } - }, - ); - } - - /** - * Validates that a node has valid position information. - * @returns {boolean} True if node position is valid - */ - private hasValidPosition(node: Node): boolean { - return !!( - node.position && - node.position.start.offset !== undefined && - node.position.end.offset !== undefined - ); - } - - /** - * Checks if any ancestor node is a code block (fenced or inline). - * Used to skip processing markdown formatting inside code blocks. - * - * @param ancestors - Array of ancestor nodes to check - * @returns {boolean} True if any ancestor is a code block - */ - private isInCodeBlock(ancestors: Node[]): boolean { - return ancestors.some((a) => a.type === "code" || a.type === "inlineCode"); - } - - /** - * Adds hide decorations for opening and closing markers, and content decoration. - * Common pattern for bold, italic, strikethrough, and inline code. - * - * @param decorations - Array to add decorations to - * @param start - Start position of the node - * @param end - End position of the node - * @param markerLength - Length of the opening/closing marker - * @param contentType - Type of decoration for the content - */ - private addMarkerDecorations( - decorations: DecorationRange[], - start: number, - end: number, - markerLength: number, - contentType: DecorationType, - ): void { - const contentStart = start + markerLength; - const contentEnd = end - markerLength; - - // Hide opening marker - decorations.push({ startPos: start, endPos: contentStart, type: "hide" }); - - // Add content decoration - if (contentStart < contentEnd) { - decorations.push({ - startPos: contentStart, - endPos: contentEnd, - type: contentType, - }); - } - - // Hide closing marker - decorations.push({ startPos: contentEnd, endPos: end, type: "hide" }); - } - - /** - * Adds a scope range for a markdown construct if valid. - */ - private addScope( - scopes: ScopeRange[], - startPos: number, - endPos: number, - kind?: string, - ): void { - if (startPos < endPos) { - scopes.push({ startPos, endPos, kind }); - } - } - - /** - * Deduplicates and sorts scopes by start position. - */ - private dedupeScopes(scopes: ScopeRange[]): ScopeRange[] { - if (scopes.length === 0) { - return []; - } - - const unique = new Map(); - for (const scope of scopes) { - const key = `${scope.startPos}:${scope.endPos}`; - if (!unique.has(key)) { - unique.set(key, scope); - } - } - - return Array.from(unique.values()).sort((a, b) => { - if (a.startPos !== b.startPos) { - return a.startPos - b.startPos; - } - return a.endPos - b.endPos; - }); - } - - /** - * Scans normalized text for GitHub-style @mentions and #issue references. - * Pushes decoration ranges and scopes; excludes code blocks and email patterns. - */ - private scanMentionAndIssueRefs( - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ): void { - const codeRanges = this.getCodeBlockRanges(scopes); - const inCode = (start: number, end: number) => - codeRanges.some((r) => start < r.end && end > r.start); - const occupiedIssueRanges: Array<{ start: number; end: number }> = []; - const overlapsIssueRange = (start: number, end: number) => - occupiedIssueRanges.some((r) => start < r.end && end > r.start); - - // Match @user/repo#456 first (repo-scoped issue), then @org/team, then @username, then #123 - const repoScopedRefRe = - /@([a-zA-Z0-9][a-zA-Z0-9-]*)\/([a-zA-Z0-9][a-zA-Z0-9-]*)#(\d+)/g; - let m: RegExpExecArray | null; - while ((m = repoScopedRefRe.exec(text)) !== null) { - const start = m.index; - const end = m.index + m[0].length; - if (inCode(start, end)) continue; - if (this.looksLikeEmailAt(text, start)) continue; - const ownerRepo = `${m[1]}/${m[2]}`; - decorations.push({ - startPos: start, - endPos: end, - type: "issueReference", - issueNumber: parseInt(m[3], 10), - ownerRepo, - }); - occupiedIssueRanges.push({ start, end }); - this.addScope(scopes, start, end, "issueReference"); - } - - // @org/team (exactly one slash, token boundary after team segment) - const orgTeamRe = - /@([a-zA-Z0-9][a-zA-Z0-9-]*)\/([a-zA-Z0-9][a-zA-Z0-9-]*)(?=$|[^a-zA-Z0-9-])/g; - while ((m = orgTeamRe.exec(text)) !== null) { - const start = m.index; - const end = m.index + m[0].length; - if (inCode(start, end)) continue; - if (this.looksLikeEmailAt(text, start)) continue; - // Repo-scoped refs (@owner/repo#123) are handled above as issueReference. - if (text[end] === "#") continue; - decorations.push({ - startPos: start, - endPos: end, - type: "mention", - slug: `${m[1]}/${m[2]}`, - }); - this.addScope(scopes, start, end, "mention"); - } - - // @username (alphanumeric and hyphen, no leading hyphen) - const userRe = /@([a-zA-Z0-9][a-zA-Z0-9-]*)(?![a-zA-Z0-9_/-])/g; - while ((m = userRe.exec(text)) !== null) { - const start = m.index; - const end = m.index + m[0].length; - if (inCode(start, end)) continue; - if (this.looksLikeEmailAt(text, start)) continue; - decorations.push({ - startPos: start, - endPos: end, - type: "mention", - slug: m[1], - }); - this.addScope(scopes, start, end, "mention"); - } - - // #123 (digits only) - const issueRe = /#(\d+)/g; - while ((m = issueRe.exec(text)) !== null) { - const start = m.index; - const end = m.index + m[0].length; - if (inCode(start, end)) continue; - if (overlapsIssueRange(start, end)) continue; - decorations.push({ - startPos: start, - endPos: end, - type: "issueReference", - issueNumber: parseInt(m[1], 10), - }); - this.addScope(scopes, start, end, "issueReference"); - } - } - - /** Returns whether the @ at position atIdx appears to be part of an email (local@domain). */ - private looksLikeEmailAt(text: string, atIdx: number): boolean { - let lo = atIdx - 1; - while (lo >= 0 && /[a-zA-Z0-9._%+-]/.test(text[lo])) lo--; - const localPart = text.slice(lo + 1, atIdx); - let hi = atIdx + 1; - while (hi < text.length && /[a-zA-Z0-9.-]/.test(text[hi])) hi++; - const domainPart = text.slice(atIdx + 1, hi); - if (!localPart.length || !domainPart.length) return false; - if (!/\./.test(domainPart)) return false; - return true; - } - - /** Builds code block ranges from scopes for mention/ref exclusion. */ - private getCodeBlockRanges( - scopes: ScopeRange[], - ): Array<{ start: number; end: number }> { - const out: Array<{ start: number; end: number }> = []; - for (const scope of scopes) { - if (scope.kind === "codeBlock" || scope.kind === "code") { - out.push({ start: scope.startPos, end: scope.endPos }); - } - } - out.sort((a, b) => a.start - b.start); - return out; - } - - /** - * Filters out markdown formatting decorations that fall within code blocks. - * - * This is a safety net: ancestor checks in processors prevent most cases, but this - * catches any edge cases where decorations might still be created inside code blocks. - * - * Only code block specific decorations are preserved: - * - codeBlock, codeBlockLanguage, code, transparent - * - hide decorations that are part of fence structure (fence markers, newlines on fence lines) - * - * @param decorations - Array of decorations to filter (modified in place) - * @param scopes - Array of scope ranges (used to identify code blocks) - * @param text - The normalized markdown text (used to identify fence lines) - */ - private filterDecorationsInCodeBlocks( - decorations: DecorationRange[], - scopes: ScopeRange[], - text: string, - ): void { - // Collect code block ranges and pre-compute opening line ends for fenced blocks - const codeBlockRanges: Array<{ - start: number; - end: number; - isFenced: boolean; - openingLineEnd?: number; // Pre-computed for fenced blocks - }> = []; - - for (const scope of scopes) { - if (scope.kind === "codeBlock") { - // Pre-compute opening line end once per fenced code block - const openingLineEnd = text.indexOf("\n", scope.startPos); - codeBlockRanges.push({ - start: scope.startPos, - end: scope.endPos, - isFenced: true, - openingLineEnd: - openingLineEnd !== -1 ? openingLineEnd + 1 : undefined, - }); - } else if (scope.kind === "code") { - codeBlockRanges.push({ - start: scope.startPos, - end: scope.endPos, - isFenced: false, - }); - } - } - if (codeBlockRanges.length === 0) { - return; - } - - // Sort ranges by start position for efficient lookup - codeBlockRanges.sort((a, b) => a.start - b.start); - - // Find min/max bounds for early exit optimization - const minCodeBlockStart = codeBlockRanges[0].start; - const maxCodeBlockEnd = Math.max(...codeBlockRanges.map((r) => r.end)); - - // Decorations that are always allowed inside code blocks - const alwaysAllowed = new Set([ - "codeBlock", - "codeBlockLanguage", - "code", - "transparent", - ]); - - // Remove all other decorations that fall within code blocks - for (let i = decorations.length - 1; i >= 0; i--) { - const decoration = decorations[i]; - - // Always allowed decorations - fast path - if (alwaysAllowed.has(decoration.type)) { - continue; - } - - // Early exit: decoration is before first code block or after last code block - if ( - decoration.endPos <= minCodeBlockStart || - decoration.startPos >= maxCodeBlockEnd - ) { - continue; - } - - // Find matching code block range (ranges are sorted, so we can stop early) - let matchingRange: (typeof codeBlockRanges)[0] | undefined; - for (const range of codeBlockRanges) { - // Early exit if we've passed all possible matches - if (decoration.startPos < range.start) { - break; - } - // Check if decoration is inside this range - if ( - decoration.startPos >= range.start && - decoration.endPos <= range.end - ) { - matchingRange = range; - break; - } - } - - if (!matchingRange) { - continue; // Not in a code block - } - - // Special handling for hide decorations: only keep fence structure - if (decoration.type === "hide" && matchingRange.isFenced) { - // Fence markers are at boundaries: opening fence starts at range.start, closing fence ends at range.end - const isOpeningFence = decoration.startPos === matchingRange.start; - const isClosingFence = decoration.endPos === matchingRange.end; - - // Check if it's on the opening line (using pre-computed value) - const isOnOpeningLine = - matchingRange.openingLineEnd !== undefined && - decoration.startPos >= matchingRange.start && - decoration.endPos <= matchingRange.openingLineEnd; - - // Keep hide decorations that are clearly fence structure - if (isOpeningFence || isClosingFence || isOnOpeningLine) { - continue; - } - // Remove all other hide decorations inside fenced code blocks - decorations.splice(i, 1); - continue; - } - - // For inline code blocks, remove all hide decorations (they use transparent, not hide) - if (decoration.type === "hide" && !matchingRange.isFenced) { - decorations.splice(i, 1); - continue; - } - - // Remove all other decorations inside code blocks - decorations.splice(i, 1); - } - } - - /** - * Processes a heading node. - */ - private processHeading( - node: Heading, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse headings inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Find the heading marker (#) by checking the source text - let markerLength = 0; - let pos = start; - while (pos < end && text[pos] === "#") { - markerLength++; - pos++; - } - - if (markerLength === 0) return; - - const level = markerLength; - const headingType = `heading${level}` as DecorationType; - - // Find whitespace after marker - const contentStart = start + markerLength; - let whitespaceLength = 0; - let posAfterMarker = contentStart; - while (posAfterMarker < end && /\s/.test(text[posAfterMarker])) { - whitespaceLength++; - posAfterMarker++; - } - - const hideEnd = contentStart + whitespaceLength; - - // Hide the marker AND the whitespace after it - decorations.push({ - startPos: start, - endPos: hideEnd, - type: "hide", - }); - - // Find content end (exclude trailing whitespace) - let contentEnd = end; - while (contentEnd > hideEnd && /\s/.test(text[contentEnd - 1])) { - contentEnd--; - } - - // Style the heading content (from after marker+whitespace to end of line) - if (hideEnd < contentEnd) { - // Add specific heading decoration - decorations.push({ - startPos: hideEnd, - endPos: contentEnd, - type: headingType, - }); - - // Also add generic heading decoration - decorations.push({ - startPos: hideEnd, - endPos: contentEnd, - type: "heading", - }); - } - - this.addScope(scopes, start, contentEnd, "heading"); - } - - /** - * Processes a strong (bold) node. - * - * Skips processing if the bold text is inside a code block or inline code, - * as markdown formatting should not be parsed inside code contexts. - */ - private processStrong( - node: Strong, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse bold inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Determine marker type by checking source text (** or __) - const marker = this.getBoldMarker(text, start); - if (!marker) return; - - const markerLength = marker.length; - - // Check if this is bold+italic (nested with emphasis) - const isBoldItalic = ancestors.some((a) => a.type === "emphasis"); - const contentType: DecorationType = isBoldItalic ? "boldItalic" : "bold"; - - this.addMarkerDecorations( - decorations, - start, - end, - markerLength, - contentType, - ); - this.addScope(scopes, start, end, contentType); - - // Process children for nested decorations (handled by visit) - } - - /** - * Processes an emphasis (italic) node. - * - * Skips processing if the italic text is inside a code block or inline code, - * as markdown formatting should not be parsed inside code contexts. - */ - private processEmphasis( - node: Emphasis, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse italic inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Determine marker type by checking source text - const marker = this.getItalicMarker(text, start); - if (!marker) return; - - const markerLength = marker.length; - - // Skip if this emphasis is part of ***text*** pattern - // In that case, strong node already handles the decoration - const parentStrong = ancestors.find((a) => a.type === "strong"); - if (parentStrong && parentStrong.position) { - const strongStart = parentStrong.position.start.offset ?? -1; - const strongEnd = parentStrong.position.end.offset ?? -1; - - // Check if emphasis markers overlap with strong markers (***text*** case) - if (start === strongStart + 2 && end === strongEnd - 2) { - return; // Strong node already applied boldItalic decoration - } - } - - // Check if this is bold+italic (nested with strong) - const isBoldItalic = ancestors.some((a) => a.type === "strong"); - const contentType: DecorationType = isBoldItalic ? "boldItalic" : "italic"; - - this.addMarkerDecorations( - decorations, - start, - end, - markerLength, - contentType, - ); - this.addScope(scopes, start, end, contentType); - } - - /** - * Processes a strikethrough (delete) node. - * - * Validates that the node actually uses ~~ (double tilde) markers, - * not single ~, to prevent incorrect parsing of single tildes as strikethrough. - * - * Skips processing if the strikethrough text is inside a code block or inline code, - * as markdown formatting should not be parsed inside code contexts. - */ - private processStrikethrough( - node: Delete, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse strikethrough inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Validate that this is actually strikethrough (~~text~~) and not single tilde (~text~) - // Check for double tilde at the start - if ( - start + 1 >= text.length || - text[start] !== "~" || - text[start + 1] !== "~" - ) { - return; // Not a valid strikethrough marker - } - - // Check for double tilde at the end - if (end < 2 || text[end - 2] !== "~" || text[end - 1] !== "~") { - return; // Not a valid strikethrough marker - } - - // Strikethrough uses ~~ markers (length 2) - this.addMarkerDecorations(decorations, start, end, 2, "strikethrough"); - this.addScope(scopes, start, end, "strikethrough"); - } - - /** - * Processes an inline code node. - * - * Matches Markless approach: applies code decoration (with border) to the entire range - * including backticks, then hides the backticks separately. This ensures the border - * spans the full code block and works correctly even on single lines. - */ - private processInlineCode( - node: InlineCode, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ): void { - if (!this.hasValidPosition(node)) return; - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Count backticks at start to determine marker length - let markerLength = 0; - let pos = start; - while (pos < end && text[pos] === "`") { - markerLength++; - pos++; - } - - if (markerLength === 0) return; - - // Apply code decoration to ENTIRE range (including backticks) - // This ensures the border spans the full code block - decorations.push({ startPos: start, endPos: end, type: "code" }); - - // Make backticks transparent (not hidden) - matches Markless approach - // Using 'transparent' instead of 'hide' keeps backticks in layout, - // which is required for borders to render correctly on single lines - decorations.push({ - startPos: start, - endPos: start + markerLength, - type: "transparent", - }); - decorations.push({ - startPos: end - markerLength, - endPos: end, - type: "transparent", - }); - - this.addScope(scopes, start, end, "code"); - } - - /** - * Processes a code block node. - * - * Supports both backtick (```) and tilde (~~~) fences, with variable length (3+ characters). - * Detects the fence type and length from the text to properly handle all GFM code block variants. - */ - private processCodeBlock( - node: Code, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - mermaidBlocks: MermaidBlock[], - ): void { - if (!this.hasValidPosition(node)) return; - - const codeStart = node.position!.start.offset!; - const codeEnd = node.position!.end.offset!; - - // Detect opening fence: scan from codeStart backwards to find fence start - // The fence should be at the start of a line (or after only whitespace) - let fenceStart = codeStart; - let fenceChar: string | null = null; - let fenceLength = 0; - - // Find the line start before the code block - const lineStart = text.lastIndexOf("\n", codeStart - 1) + 1; - - // Scan from line start to find the fence - for (let pos = lineStart; pos < codeStart && pos < text.length; pos++) { - const char = text[pos]; - if (char === "`" || char === "~") { - // Count consecutive fence characters - let count = 1; - let checkPos = pos + 1; - while ( - checkPos < text.length && - text[checkPos] === char && - count < 20 - ) { - count++; - checkPos++; - } - - // Valid fence must be 3+ characters - if (count >= 3) { - fenceStart = pos; - fenceChar = char; - fenceLength = count; - break; - } - } - } - - // Fallback: if no fence found, try searching forward from codeStart - if (!fenceChar) { - for ( - let pos = codeStart; - pos < Math.min(codeStart + 20, text.length); - pos++ - ) { - const char = text[pos]; - if (char === "`" || char === "~") { - let count = 1; - let checkPos = pos + 1; - while ( - checkPos < text.length && - text[checkPos] === char && - count < 20 - ) { - count++; - checkPos++; - } - if (count >= 3) { - fenceStart = pos; - fenceChar = char; - fenceLength = count; - break; - } - } - } - } - - if (!fenceChar || fenceLength < 3) { - // Final fallback: assume standard ``` backticks - const fallbackFence = text.indexOf("```", codeStart - 10); - if (fallbackFence === -1 || fallbackFence > codeStart) return; - fenceStart = fallbackFence; - fenceChar = "`"; - fenceLength = 3; - } - - // Find closing fence: scan backwards from codeEnd - let closingFence = -1; - const closingLineStart = text.lastIndexOf("\n", codeEnd - 1) + 1; - - // Search backwards from codeEnd to find closing fence - for ( - let pos = codeEnd - 1; - pos >= closingLineStart && pos >= fenceStart + fenceLength; - pos-- - ) { - if (text[pos] === fenceChar) { - // Count consecutive fence characters backwards - let count = 1; - let checkPos = pos - 1; - while (checkPos >= 0 && text[checkPos] === fenceChar && count < 20) { - count++; - checkPos--; - } - - // Closing fence must be at least as long as opening fence - if (count >= fenceLength) { - closingFence = pos - count + 1; - break; - } - } - } - - if (closingFence === -1) { - // Fallback: search forward from codeEnd - for ( - let pos = codeEnd; - pos < Math.min(codeEnd + 20, text.length); - pos++ - ) { - if (text[pos] === fenceChar) { - let count = 1; - let checkPos = pos + 1; - while ( - checkPos < text.length && - text[checkPos] === fenceChar && - count < 20 - ) { - count++; - checkPos++; - } - if (count >= fenceLength) { - closingFence = pos; - break; - } - } - } - } - - if (closingFence === -1 || closingFence <= fenceStart) return; - - // Find the end of the opening fence line (including language identifier and newline) - const openingLineEnd = text.indexOf("\n", fenceStart); - const openingFenceEnd = fenceStart + fenceLength; - - // Find the end of the closing fence - const closingFenceEnd = closingFence + fenceLength; - - // Find if there's a newline after the closing fence - const closingLineEnd = text.indexOf("\n", closingFence); - const closingEnd = closingLineEnd !== -1 ? closingLineEnd + 1 : codeEnd; - - const isMermaid = node.lang?.trim() === "mermaid"; - - if (!isMermaid) { - // Apply code block background to the entire block including fence lines - // but NOT including the newline after the closing fence - decorations.push({ - startPos: fenceStart, - endPos: closingFenceEnd, - type: "codeBlock", - }); - - // Hide the opening fence markers - decorations.push({ - startPos: fenceStart, - endPos: openingFenceEnd, - type: "hide", - }); - - // Find language identifier (between fence and newline) - const languageStart = openingFenceEnd; - const languageEnd = - openingLineEnd !== -1 && openingLineEnd < closingFence - ? openingLineEnd - : openingFenceEnd; - - // Apply language identifier decoration if there's a language (not just whitespace) - if (languageEnd > languageStart) { - const languageText = text.substring(languageStart, languageEnd).trim(); - if (languageText.length > 0) { - decorations.push({ - startPos: languageStart, - endPos: languageEnd, - type: "codeBlockLanguage", - }); - } - } - - // Hide the newline after the language identifier (if present) - if (openingLineEnd !== -1 && openingLineEnd < closingFence) { - decorations.push({ - startPos: openingLineEnd, - endPos: openingLineEnd + 1, - type: "hide", - }); - } - - // Hide the closing fence line (fence and newline if present) - decorations.push({ - startPos: closingFence, - endPos: closingEnd, - type: "hide", - }); - } else { - // For Mermaid blocks, hide the fence markers so only the SVG shows - // Hide the opening fence markers (```mermaid) - decorations.push({ - startPos: fenceStart, - endPos: openingFenceEnd, - type: "hide", - }); - - // Find language identifier (between fence and newline) and hide it - const languageStart = openingFenceEnd; - const languageEnd = - openingLineEnd !== -1 && openingLineEnd < closingFence - ? openingLineEnd - : openingFenceEnd; - - if (languageEnd > languageStart) { - decorations.push({ - startPos: languageStart, - endPos: languageEnd, - type: "hide", - }); - } - - // Hide the newline after the language identifier (if present) - if (openingLineEnd !== -1 && openingLineEnd < closingFence) { - decorations.push({ - startPos: openingLineEnd, - endPos: openingLineEnd + 1, - type: "hide", - }); - } - - // Hide the closing fence line (```) - decorations.push({ - startPos: closingFence, - endPos: closingEnd, - type: "hide", - }); - } - - this.addScope(scopes, fenceStart, closingEnd, "codeBlock"); - - if (isMermaid) { - const source = node.value ?? ""; - // Fast newline count (avoid regex allocations in hot paths). - let numLines = 1; - for (let i = 0; i < source.length; i++) { - if (source.charCodeAt(i) === 10 /* '\n' */) { - numLines++; - } - } - mermaidBlocks.push({ - startPos: fenceStart, - endPos: closingEnd, - source, - numLines, - }); - } - } - - /** - * Processes a link node. - * - * Skips processing if the link is inside a code block or inline code, - * as links should not be parsed inside code contexts. - */ - private processLink( - node: Link, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse links inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Explicit bracket-style link [text](url): always use regular link rendering so that - // [bob@email.com](mailto:bob@email.com) and [url](url) hide delimiters and URL. - if (text[start] === "[") { - // Fall through to "Regular bracket-style link" path below. - } else { - // Detect autolinks and bare links using AST structure: link text equals the URL - // (or URL without mailto: prefix for email autolinks) - const firstChild = node.children?.[0]; - const linkText = - firstChild && firstChild.type === "text" ? firstChild.value : ""; - const url = node.url || ""; - const urlWithoutMailto = url.replace(/^mailto:/, ""); - const isAutolinkOrBareLink = - linkText === url || linkText === urlWithoutMailto; - - if (isAutolinkOrBareLink) { - // Check if it's an autolink (has angle brackets) or bare link (no brackets) - const hasAngleBrackets = text[start] === "<" && text[end - 1] === ">"; - - if (hasAngleBrackets) { - // Process autolink - use text child position for accurate content range - const textChild = - firstChild && firstChild.type === "text" ? firstChild : null; - const contentStart = textChild?.position?.start.offset ?? start + 1; - const contentEnd = textChild?.position?.end.offset ?? end - 1; - - // Hide opening angle bracket - decorations.push({ - startPos: start, - endPos: start + 1, - type: "hide", - }); - - // Add link decoration for content (between angle brackets) - if (contentStart < contentEnd) { - decorations.push({ - startPos: contentStart, - endPos: contentEnd, - type: "link", - url: url, // Use URL from AST (remark-gfm already handles mailto: for emails) - }); - } - - // Hide closing angle bracket - decorations.push({ - startPos: end - 1, - endPos: end, - type: "hide", - }); - - // Add scope for reveal-on-select behavior - this.addScope(scopes, start, end, "link"); - } else { - // Process bare link (no angle brackets) - just apply link decoration - const textChild = - firstChild && firstChild.type === "text" ? firstChild : null; - const contentStart = textChild?.position?.start.offset ?? start; - const contentEnd = textChild?.position?.end.offset ?? end; - - // Add link decoration for the URL/email text - if (contentStart < contentEnd) { - decorations.push({ - startPos: contentStart, - endPos: contentEnd, - type: "link", - url: url, // Use URL from AST (remark-gfm already handles mailto: for emails) - }); - } - - // Add scope for reveal-on-select behavior - this.addScope(scopes, start, end, "link"); - } - return; - } - } - - // Regular bracket-style link: [text](url) - // Find opening bracket [ - const bracketStart = text.indexOf("[", start); - if (bracketStart === -1) return; - - // Find closing bracket ] - const bracketEnd = text.indexOf("]", bracketStart); - if (bracketEnd === -1) return; - - // Hide opening bracket - decorations.push({ - startPos: bracketStart, - endPos: bracketStart + 1, - type: "hide", - }); - - // Add link decoration for text (between brackets) - const contentStart = bracketStart + 1; - if (contentStart < bracketEnd) { - // Extract URL from the link node - const url = node.url || ""; - - decorations.push({ - startPos: contentStart, - endPos: bracketEnd, - type: "link", - url: url, - }); - } - - // Hide closing bracket - decorations.push({ - startPos: bracketEnd, - endPos: bracketEnd + 1, - type: "hide", - }); - - // Find and hide URL part (url) - const parenStart = text.indexOf("(", bracketEnd); - if (parenStart !== -1 && parenStart === bracketEnd + 1) { - // Hide opening parenthesis - decorations.push({ - startPos: parenStart, - endPos: parenStart + 1, - type: "hide", - }); - - const parenEnd = text.indexOf(")", parenStart + 1); - if (parenEnd !== -1 && parenEnd <= end) { - // Hide URL content between parentheses - const urlStart = parenStart + 1; - if (urlStart < parenEnd) { - decorations.push({ - startPos: urlStart, - endPos: parenEnd, - type: "hide", - }); - } - - // Hide closing parenthesis - decorations.push({ - startPos: parenEnd, - endPos: parenEnd + 1, - type: "hide", - }); - } - } - - this.addScope(scopes, start, end, "link"); - } - - /** - * Processes an image node. - */ - private processImage( - node: Image, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse images inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Find opening ![ - const exclamationStart = text.indexOf("![", start); - if (exclamationStart === -1 || exclamationStart > start) return; - - // Hide ![ - decorations.push({ - startPos: exclamationStart, - endPos: exclamationStart + 2, - type: "hide", - }); - - // Find alt text (between [ and ]) - const altStart = exclamationStart + 2; - const bracketEnd = text.indexOf("]", altStart); - if (bracketEnd === -1) { - // Even if no closing bracket found, try to hide what we can - // This handles edge cases like ![] without proper syntax - return; - } - - // Add image decoration for alt text (even if empty) - if (altStart <= bracketEnd) { - const url = node.url || ""; - decorations.push({ - startPos: altStart, - endPos: bracketEnd, - type: "image", - url, - }); - - // Image nodes from remark store alt text as a string (no child nodes), - // so inline formatting like **bold** and *italic* inside the alt text - // is not parsed by the main AST walk. We parse the alt slice separately - // and add inline formatting decorations within the alt range. - if (altStart < bracketEnd) { - this.processInlineFormattingInImageAlt( - text, - decorations, - scopes, - altStart, - bracketEnd, - ); - this.processEmojiShortcodesInSlice( - text.substring(altStart, bracketEnd), - altStart, - decorations, - scopes, - ); - } - } - - // Hide closing bracket - decorations.push({ - startPos: bracketEnd, - endPos: bracketEnd + 1, - type: "hide", - }); - - // Find and hide URL part - const parenStart = text.indexOf("(", bracketEnd); - if (parenStart !== -1) { - // Allow for optional space between ] and ( - const between = text.substring(bracketEnd + 1, parenStart); - const hasOnlyWhitespaceBetween = - between.length > 0 && between.trim().length === 0; - if (parenStart === bracketEnd + 1 || hasOnlyWhitespaceBetween) { - // Hide whitespace between ] and ( if present - if (hasOnlyWhitespaceBetween) { - decorations.push({ - startPos: bracketEnd + 1, - endPos: parenStart, - type: "hide", - }); - } - - decorations.push({ - startPos: parenStart, - endPos: parenStart + 1, - type: "hide", - }); - - const parenEnd = text.indexOf(")", parenStart + 1); - if (parenEnd !== -1 && parenEnd <= end) { - const urlStart = parenStart + 1; - if (urlStart < parenEnd) { - decorations.push({ - startPos: urlStart, - endPos: parenEnd, - type: "hide", - }); - } - - decorations.push({ - startPos: parenEnd, - endPos: parenEnd + 1, - type: "hide", - }); - } - } - } - - this.addScope(scopes, start, end, "image"); - } - - /** - * Parses inline markdown inside an image's alt text and emits decorations. - * - * Remark's mdast `image` node stores `alt` as a plain string (no inline children), - * so formatting inside the alt text is not present in the main AST traversal. - * - * This method parses only the alt slice (fast path + early exits) and maps the - * resulting node positions back into the original (normalized) document offsets. - * - * Note: This is only called for images that are NOT inside code blocks (checked in processImage). - */ - private processInlineFormattingInImageAlt( - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - altStart: number, - altEnd: number, - ): void { - if (altStart >= altEnd) return; - - const altText = text.substring(altStart, altEnd); - - // Fast path: avoid parsing when there are no inline marker characters - const hasInlineMarkers = - altText.indexOf("*") !== -1 || - altText.indexOf("_") !== -1 || - altText.indexOf("~") !== -1 || - altText.indexOf("`") !== -1; - if (!hasInlineMarkers) return; - - let altAst: Root; - try { - altAst = this.processor.parse(altText) as Root; - } catch { - return; - } - - const ancestorMap = new Map(); - const absCache = new WeakMap(); - - const toAbsoluteNode = (node: T): T => { - const cached = absCache.get(node); - if (cached) return cached as T; - - if ( - !node.position || - node.position.start.offset === undefined || - node.position.end.offset === undefined - ) { - absCache.set(node, node); - return node; - } - - const absNode = { - ...node, - position: { - ...node.position, - start: { - ...node.position.start, - offset: altStart + (node.position.start.offset ?? 0), - }, - end: { - ...node.position.end, - offset: altStart + (node.position.end.offset ?? 0), - }, - }, - } as T; - - absCache.set(node, absNode as unknown as Node); - return absNode; - }; - - const toAbsoluteAncestors = (ancestors: Node[]): Node[] => - ancestors.map(toAbsoluteNode); - - this.visit( - altAst, - (node: Node, _index: number | undefined, parent: Node | undefined) => { - const currentAncestors: Node[] = []; - if (parent) { - currentAncestors.push(parent); - const parentAncestors = ancestorMap.get(parent); - if (parentAncestors) { - currentAncestors.push(...parentAncestors); - } - } - - if (currentAncestors.length > 0) { - ancestorMap.set(node, currentAncestors); - } - - try { - switch (node.type) { - case "strong": - this.processStrong( - toAbsoluteNode(node as Strong), - text, - decorations, - scopes, - toAbsoluteAncestors(currentAncestors), - ); - break; - case "emphasis": - this.processEmphasis( - toAbsoluteNode(node as Emphasis), - text, - decorations, - scopes, - toAbsoluteAncestors(currentAncestors), - ); - break; - case "delete": - this.processStrikethrough( - toAbsoluteNode(node as Delete), - text, - decorations, - scopes, - toAbsoluteAncestors(currentAncestors), - ); - break; - case "inlineCode": - this.processInlineCode( - toAbsoluteNode(node as InlineCode), - text, - decorations, - scopes, - ); - break; - } - } catch { - // Be conservative: never fail the main image parsing because the alt slice is malformed. - } - }, - ); - } - - /** - * Processes a blockquote node. - * - * Replaces '>' characters with vertical bars for visual indication. - * Nested blockquotes automatically show multiple bars (one per '>'). - * - * @param processedPositions - Set to track which positions have already been processed - */ - private processBlockquote( - node: Blockquote, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - processedPositions: Set, - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse blockquotes inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Find all '>' markers at the start of lines within this blockquote - // Blockquotes can span multiple lines, each starting with '>' - let pos = start; - while (pos < end) { - // Find line start (either document start or after newline) - const lineStart = pos === 0 ? 0 : text.lastIndexOf("\n", pos - 1) + 1; - - // Find all '>' markers on this line (for nested blockquotes like "> > >") - // We process all '>' markers that are at the start of the line or after whitespace/other '>' - let searchStart = lineStart; - const lineEnd = text.indexOf("\n", lineStart); - const actualLineEnd = lineEnd === -1 ? end : Math.min(lineEnd, end); - - while (searchStart < actualLineEnd) { - const gtIndex = text.indexOf(">", searchStart); - if (gtIndex === -1 || gtIndex >= actualLineEnd) break; - - // Check if we've already processed this position (from a parent blockquote node) - if (processedPositions.has(gtIndex)) { - searchStart = gtIndex + 1; - continue; - } - - // Check if there's only whitespace and/or '>' before this '>' - // This allows nested blockquotes like "> > >" where each '>' is valid - const beforeGt = text.substring(lineStart, gtIndex); - const isBlockquoteMarker = - beforeGt.trim().length === 0 || /^[\s>]*$/.test(beforeGt); - - if (isBlockquoteMarker) { - // Mark this position as processed - processedPositions.add(gtIndex); - - // Replace only the '>' character with blockquote decoration (vertical bar) - // Keep the space after it visible to maintain proper spacing - decorations.push({ - startPos: gtIndex, - endPos: gtIndex + 1, - type: "blockquote", - }); - searchStart = gtIndex + 1; - } else { - // Not a blockquote marker, move past it - searchStart = gtIndex + 1; - } - } - - // Move to next line - const nextLine = text.indexOf("\n", pos); - if (nextLine === -1 || nextLine >= end) break; - pos = nextLine + 1; - } - - this.addScope(scopes, start, end, "blockquote"); - } - - /** - * Processes a list item node. - * - * Replaces unordered list markers (-, *, +) with a bullet point (•). - * Ordered lists: optionally hides markers and shows computed numbers (see `orderedLists.autoNumber`). - * Detects and decorates checkboxes ([ ] or [x]) after the marker. - * Supports both unordered lists (-, *, +) and ordered lists (1., 2., etc.). - */ - private processListItem( - node: ListItem, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse list items inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Find the list marker at the start of the list item - let markerEnd = start; - - // Skip leading whitespace - while (markerEnd < end && /\s/.test(text[markerEnd])) { - markerEnd++; - } - - if (markerEnd >= end) return; - - this.addScope(scopes, start, end, "listItem"); - - const markerStart = markerEnd; - - // Check for unordered list markers: -, *, + - if ( - text[markerEnd] === "-" || - text[markerEnd] === "*" || - text[markerEnd] === "+" - ) { - markerEnd++; - // Skip optional space after marker - if (markerEnd < end && text[markerEnd] === " ") { - markerEnd++; - } - - // Try to detect and add checkbox, otherwise add regular list item decoration - if ( - this.tryAddCheckboxDecorations( - text, - markerStart, - markerEnd, - end, - decorations, - false, - ) - ) { - return; - } - - decorations.push({ - startPos: markerStart, - endPos: markerEnd, - type: "listItem", - }); - return; - } - - // Check for ordered list markers: 1., 2., etc. or 1), 2), etc. - if (/\d/.test(text[markerEnd])) { - // Find the end of the number - let numEnd = markerEnd; - while (numEnd < end && /\d/.test(text[numEnd])) { - numEnd++; - } - - // Check if followed by '.' or ')' - if (numEnd < end && (text[numEnd] === "." || text[numEnd] === ")")) { - const delimiter = text[numEnd]; - markerEnd = numEnd + 1; - // Skip optional space after marker - if (markerEnd < end && text[markerEnd] === " ") { - markerEnd++; - } - - // Compute auto-numbered replacement from position in parent list - const parentList = ancestors[0] as List | undefined; - const itemIndex = parentList?.children - ? parentList.children.indexOf(node) - : -1; - const autoNumber = itemIndex >= 0 - ? (parentList!.start ?? 1) + itemIndex - : parseInt(text.slice(markerStart, numEnd), 10); - const writtenNumber = parseInt(text.slice(markerStart, numEnd), 10); - const replacement = `${autoNumber}${delimiter} `; - const autoNumberEnabled = config.orderedLists.autoNumber(); - const sourceMismatch = - autoNumberEnabled && - config.orderedLists.warnWhenSourceNumberDiffers() && - writtenNumber !== autoNumber; - - // Show markers as typed (no computed replacement) - if (!autoNumberEnabled) { - if ( - this.tryAddCheckboxDecorations( - text, - markerStart, - markerEnd, - end, - decorations, - true, - undefined, - ) - ) { - return; - } - return; - } - - // For ordered lists: only add checkbox decoration if present, otherwise auto-number - // Ordered lists should NOT be decorated with listItem (bullet point) - if ( - this.tryAddCheckboxDecorations( - text, - markerStart, - markerEnd, - end, - decorations, - true, - replacement, - sourceMismatch, - ) - ) { - return; - } - - // Hide original marker and show auto-calculated number - decorations.push({ - startPos: markerStart, - endPos: markerEnd, - type: "orderedListItem", - replacement, - orderedListMarkerMismatch: sourceMismatch, - }); - return; - } - } - } - - /** - * Attempts to detect and add checkbox decorations after a list marker. - * - * @param text - The full document text - * @param markerStart - Start position of the list marker - * @param markerEnd - End position after the marker (and optional space) - * @param end - End position of the list item - * @param decorations - Array to add decorations to - * @param isOrderedList - Whether this is an ordered list (true) or unordered list (false) - * @param orderedReplacement - Auto-numbered replacement text for ordered list markers (omit when auto-number is off) - * @param orderedListMarkerMismatch - When true, render ordered marker with a warning tint (source number ≠ computed) - * @returns true if checkbox was found and decorations were added, false otherwise - */ - private tryAddCheckboxDecorations( - text: string, - markerStart: number, - markerEnd: number, - end: number, - decorations: DecorationRange[], - isOrderedList: boolean, - orderedReplacement?: string, - orderedListMarkerMismatch?: boolean, - ): boolean { - // Check for checkbox pattern: [ ] or [x] or [X] - // GFM requires a space after the closing bracket for task lists - if (markerEnd + 3 >= end || text[markerEnd] !== "[") { - return false; - } - - const checkChar = text[markerEnd + 1]; - if ( - (checkChar !== " " && checkChar !== "x" && checkChar !== "X") || - text[markerEnd + 2] !== "]" - ) { - return false; - } - - // GFM spec requires a space after the closing bracket for task lists - // Without a space, it's not a valid task list (e.g., "- [x]task" is not a task list) - if (text[markerEnd + 3] !== " ") { - return false; - } - - // Found a valid checkbox - add decorations - const checkboxStart = markerEnd; - const checkboxEnd = checkboxStart + 3; // [ ], [x], or [X] (space after is not part of checkbox) - const isChecked = checkChar === "x" || checkChar === "X"; - - // For ordered lists with checkboxes, hide marker and show auto-numbered replacement - if (isOrderedList && orderedReplacement !== undefined) { - decorations.push({ - startPos: markerStart, - endPos: markerEnd, - type: "orderedListItem", - replacement: orderedReplacement, - orderedListMarkerMismatch: orderedListMarkerMismatch, - }); - } - // For unordered lists: no listItem (bullet); single checkbox decoration covers marker + checkbox - decorations.push({ - startPos: isOrderedList ? checkboxStart : markerStart, - endPos: checkboxEnd, - type: isChecked ? "checkboxChecked" : "checkboxUnchecked", - }); - - return true; - } - - /** - * Processes a thematic break (horizontal rule) node. - * - * Replaces the text (---, ***, ___) with a visual horizontal line. - * Skips thematic breaks that are part of a frontmatter block. - */ - private processThematicBreak( - node: ThematicBreak, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse horizontal rules inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - const end = node.position!.end.offset!; - - // Skip if this thematic break is within a frontmatter block - // Frontmatter delimiters should not be processed as horizontal rules - const isInFrontmatter = decorations.some( - (d) => d.type === "frontmatter" && d.startPos <= start && d.endPos >= end, - ); - - if (isInFrontmatter) { - return; // Skip processing this thematic break - it's part of frontmatter - } - - // Replace the entire horizontal rule text with a decoration - decorations.push({ - startPos: start, - endPos: end, - type: "horizontalRule", - }); - - this.addScope(scopes, start, end, "horizontalRule"); - } - - /** - * Processes a text node to extract emoji shortcodes. - */ - private processText( - node: Text, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't parse emoji shortcodes inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const start = node.position!.start.offset!; - this.processEmojiShortcodesInSlice(node.value, start, decorations, scopes); - } - - /** - * Detects and decorates emoji shortcodes in a text slice. - * - * Matches GitHub-style emoji shortcodes (e.g., `:smile:`, `:+1:`, `:t-rex:`). - * Shortcodes must: - * - Start and end with `:` - * - Contain only alphanumeric characters, underscores, hyphens, and plus signs - * - Be case-insensitive (matched against lowercase keys in emoji map) - * - * The regex pattern `/:([a-z0-9_+-]+):/gi` matches valid shortcode patterns. - * Since this processes text nodes from the parsed AST (not raw markdown), - * URLs and other markdown syntax are already handled by their respective nodes, - * reducing false positives. However, the pattern is still defensive and only - * matches when a valid emoji exists in the emoji map. - * - * The emoji map is lazily loaded only when colons are found in the text, - * improving initial load time for documents without emojis. - * - * @param slice - The text slice to search for emoji shortcodes - * @param offset - Character offset of the slice within the original document - * @param decorations - Array to accumulate decoration ranges - * @param scopes - Array to accumulate scope ranges - */ - private processEmojiShortcodesInSlice( - slice: string, - offset: number, - decorations: DecorationRange[], - scopes: ScopeRange[], - ): void { - if (!slice || slice.indexOf(":") === -1) { - return; - } - - // Lazy load emoji map only when we encounter a colon (potential emoji) - const emojiByShortcode = getEmojiMap(); - - // Match GitHub-style emoji shortcodes: :shortcode: - // Pattern allows: letters, numbers, underscores, hyphens, plus signs - // Examples: :smile:, :+1:, :-1:, :t-rex:, :non-potable_water: - // The 'g' flag ensures we find all matches, 'i' makes it case-insensitive - const regex = /:([a-z0-9_+-]+):/gi; - let match: RegExpExecArray | null; - while ((match = regex.exec(slice)) !== null) { - const rawName = match[1]; - // Normalize to lowercase for case-insensitive lookup - const name = rawName.toLowerCase(); - const emoji = emojiByShortcode[name]; - if (!emoji) { - // Invalid shortcode (not in emoji map) - silently ignore - continue; - } - - const start = offset + match.index; - const end = start + match[0].length; - decorations.push({ - startPos: start, - endPos: end, - type: "emoji", - emoji, - }); - this.addScope(scopes, start, end, "emoji"); - } - } - - /** - * Handles empty image alt text that remark doesn't parse as an Image node. - * Optimized with early exit to avoid regex when no image syntax exists. - */ - private handleEmptyImageAlt( - text: string, - decorations: DecorationRange[], - ): void { - // Early exit: check if '![' exists in text before running regex - if (text.indexOf("![") === -1) { - return; - } - - // Find ![] patterns that weren't handled by processImage - const regex = /!\[\]/g; - let match; - while ((match = regex.exec(text)) !== null) { - const pos = match.index; - // Check if this position is already covered by a decoration - const isCovered = decorations.some( - (d) => d.startPos <= pos && d.endPos > pos, - ); - if (!isCovered) { - // Add hide decorations for ![ - decorations.push({ - startPos: pos, - endPos: pos + 2, - type: "hide", - }); - // Add hide decoration for ] - decorations.push({ - startPos: pos + 2, - endPos: pos + 3, - type: "hide", - }); - } - } - } - - /** - * Gets the bold marker type (** or __) from source text. - * Optimized to use character code comparisons instead of substring allocation. - */ - private getBoldMarker(text: string, pos: number): string | null { - if (pos + 2 <= text.length) { - const char1 = text.charCodeAt(pos); - const char2 = text.charCodeAt(pos + 1); - - // Check for '**' (asterisk = 0x2A) - if (char1 === 0x2a && char2 === 0x2a) { - return "**"; - } - - // Check for '__' (underscore = 0x5F) - if (char1 === 0x5f && char2 === 0x5f) { - return "__"; - } - } - return null; - } - - /** - * Gets the italic marker type (* or _) from source text. - * Optimized to use character code comparisons instead of string allocation. - */ - private getItalicMarker(text: string, pos: number): string | null { - if (pos + 1 <= text.length) { - const charCode = text.charCodeAt(pos); - - // Check for '*' (asterisk = 0x2A) - if (charCode === 0x2a) { - return "*"; - } - - // Check for '_' (underscore = 0x5F) - if (charCode === 0x5f) { - return "_"; - } - } - return null; - } - - /** Minimum length required for frontmatter delimiter */ - private static readonly MIN_FRONTMATTER_LENGTH = 3; // '---' - - /** - * Maximum number of lines to search for closing frontmatter delimiter. - * - * Frontmatter is typically very short (< 50 lines). This limit prevents - * performance issues when searching for closing delimiter in large files - * where frontmatter might be incomplete or missing. - */ - private static readonly MAX_FRONTMATTER_SEARCH_LINES = 100; - - /** - * Processes YAML frontmatter at the start of the document. - * - * Detects `---` delimiters at document start (after optional spaces/tabs only), - * finds the closing delimiter, and applies a decoration to the entire block. - * Frontmatter must be at the document start to distinguish it from horizontal rules. - * - * @private - * @param {string} text - The normalized markdown text (CRLF normalized to LF) - * @param {DecorationRange[]} decorations - Array to accumulate decorations - */ - private processFrontmatter( - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ): void { - if (!text || text.length < MarkdownParser.MIN_FRONTMATTER_LENGTH) { - return; - } - - // Find the start of the document (skip leading spaces/tabs only, not newlines) - // This ensures frontmatter is truly at document start, not after content - let startPos = 0; - while ( - startPos < text.length && - (text[startPos] === " " || text[startPos] === "\t") - ) { - startPos++; - } - - // Check if document starts with --- - if ( - startPos + MarkdownParser.MIN_FRONTMATTER_LENGTH > text.length || - text.substring( - startPos, - startPos + MarkdownParser.MIN_FRONTMATTER_LENGTH, - ) !== "---" - ) { - return; - } - - // Find the end of the opening delimiter line - const openingDelimiterStart = startPos; - const openingLineEnd = text.indexOf("\n", openingDelimiterStart); - if (openingLineEnd === -1) { - // No newline found - document ends after opening delimiter - // This is not valid frontmatter (needs closing delimiter) - return; - } - const openingLineEndPos = openingLineEnd + 1; // Include the newline - - // Search for closing delimiter starting after the opening line - // Look for a line that contains only --- (with optional whitespace) - // Limit search to prevent performance issues with large files - let searchPos = openingLineEndPos; - let linesSearched = 0; - while ( - searchPos < text.length && - linesSearched < MarkdownParser.MAX_FRONTMATTER_SEARCH_LINES - ) { - // Find next line start - const lineStart = searchPos; - let lineStartPos = lineStart; - - // Skip whitespace at line start - while (lineStartPos < text.length && /\s/.test(text[lineStartPos])) { - lineStartPos++; - } - - // Check if this line starts with --- - if ( - lineStartPos + MarkdownParser.MIN_FRONTMATTER_LENGTH <= text.length && - text.substring( - lineStartPos, - lineStartPos + MarkdownParser.MIN_FRONTMATTER_LENGTH, - ) === "---" - ) { - // Found potential closing delimiter - validate the entire line - const closingDelimiterStart = lineStartPos; - const closingLineEnd = text.indexOf("\n", closingDelimiterStart); - const lineEnd = closingLineEnd === -1 ? text.length : closingLineEnd; - const lineContent = text.substring(lineStartPos, lineEnd); - - // Validate: closing delimiter line must contain only --- with optional whitespace - // This prevents false matches like "--- some text" or "---comment" - if (!/^---\s*$/.test(lineContent)) { - // Not a valid closing delimiter, continue searching - const nextLine = - closingLineEnd === -1 ? text.length : closingLineEnd + 1; - searchPos = nextLine; - linesSearched++; - continue; - } - - // Validate: closing delimiter must be on its own line (only whitespace before it) - const lineBeforeDelimiter = text.substring(lineStart, lineStartPos); - const isOnlyWhitespaceBefore = /^\s*$/.test(lineBeforeDelimiter); - - if (isOnlyWhitespaceBefore) { - // Found valid frontmatter block - // End decoration at the end of the closing delimiter line, NOT including the newline after it - // This ensures the decoration stops exactly at the closing --- line - const closingLineEndPos = - closingLineEnd === -1 - ? closingDelimiterStart + MarkdownParser.MIN_FRONTMATTER_LENGTH // End at end of --- (no newline, end of document) - : closingLineEnd; // End at newline position (exclusive, so newline is not included) - - // Apply background decoration to entire block from opening delimiter start to end of closing delimiter line - decorations.push({ - startPos: openingDelimiterStart, - endPos: closingLineEndPos, - type: "frontmatter", - }); - - this.addScope( - scopes, - openingDelimiterStart, - closingLineEndPos, - "frontmatter", - ); - - // Apply opacity decoration to opening delimiter (---) - // The delimiter is exactly 3 characters: --- - const openingDelimiterEnd = - openingDelimiterStart + MarkdownParser.MIN_FRONTMATTER_LENGTH; - decorations.push({ - startPos: openingDelimiterStart, - endPos: openingDelimiterEnd, - type: "frontmatterDelimiter", - }); - - // Apply opacity decoration to closing delimiter (---) - // The delimiter is exactly 3 characters: --- - const closingDelimiterEnd = - closingDelimiterStart + MarkdownParser.MIN_FRONTMATTER_LENGTH; - decorations.push({ - startPos: closingDelimiterStart, - endPos: closingDelimiterEnd, - type: "frontmatterDelimiter", - }); - } - return; - } - - // Move to next line - const nextLine = text.indexOf("\n", searchPos); - if (nextLine === -1) { - break; - } - searchPos = nextLine + 1; - linesSearched++; - } - - // No closing delimiter found - not valid frontmatter, don't apply decoration - } - - /** - * Extracts plain display text from a TableCell AST node by walking its - * child tree. Avoids regex-based stripping which incorrectly removes - * literal underscores and asterisks (e.g. snake_case, 100*200). - */ - private extractCellPlainText(cell: TableCell): string { - const walk = (node: Node): string => { - switch (node.type) { - case "text": - return (node as Text).value; - case "inlineCode": - return (node as InlineCode).value; - case "strong": - case "emphasis": - case "delete": { - const parent = node as Strong | Emphasis | Delete; - return parent.children.map(walk).join(""); - } - default: { - const asParent = node as { children?: Node[] }; - if (asParent.children) { - return asParent.children.map(walk).join(""); - } - return ""; - } - } - }; - return cell.children.map(walk).join(""); - } - - /** - * Returns true if a cell has inline formatting children (strong, emphasis, - * delete, inlineCode) that cannot be rendered as whole-cell CSS. - * Used to decide whether to show raw syntax vs AST-extracted plain text. - */ - private cellHasMixedFormatting(cell: TableCell): boolean { - return cell.children.some(child => - child.type === "strong" || child.type === "emphasis" || - child.type === "delete" || child.type === "inlineCode" - ); - } - - /** - * Detects whole-cell formatting and returns CSS properties for the before - * pseudo-element. Returns undefined for unformatted or mixed-format cells. - * - * When undefined is returned and the cell contains formatting markers, - * the caller falls back to showing the raw cell text (VS Code cannot - * partially style a single contentText string). - */ - private detectCellStyle( - trimmed: string, - ): { fontWeight?: string; fontStyle?: string; textDecoration?: string } | undefined { - // Order matters: check longer markers first to avoid partial matches - // Bold-italic: ***text*** or ___text___ - if ( - (trimmed.startsWith("***") && trimmed.endsWith("***")) || - (trimmed.startsWith("___") && trimmed.endsWith("___")) - ) { - return { fontWeight: "bold", fontStyle: "italic" }; - } - // Bold: **text** or __text__ - if ( - (trimmed.startsWith("**") && trimmed.endsWith("**")) || - (trimmed.startsWith("__") && trimmed.endsWith("__")) - ) { - return { fontWeight: "bold" }; - } - // Strikethrough: ~~text~~ - if (trimmed.startsWith("~~") && trimmed.endsWith("~~")) { - return { textDecoration: "line-through" }; - } - // Italic: *text* or _text_ - if ( - (trimmed.startsWith("*") && trimmed.endsWith("*") && trimmed.length > 2) || - (trimmed.startsWith("_") && trimmed.endsWith("_") && trimmed.length > 2) - ) { - return { fontStyle: "italic" }; - } - // Inline code: `text` - if (trimmed.startsWith("`") && trimmed.endsWith("`") && trimmed.length > 2) { - return { fontWeight: "normal" }; - } - return undefined; - } - - /** - * Measures display width for monospace column alignment of **plain** cell text - * (no markdown markers — callers use `extractCellPlainText` / `detectCellStyle` paths). - * - * CJK wide characters (Unicode ranges U+2E80–U+9FFF, U+F900–U+FAFF, - * U+FE30–U+FE4F, U+20000–U+2FA1F) count as 2 columns; all others as 1. - * - * Adds a small per-CJK-character correction because VS Code's `before` - * pseudo-element renders CJK glyphs slightly wider than exactly 2x - * ASCII width in most monospace fonts. - * - * @param plain - Already-unmarked cell display text - * @returns Estimated width in monospace columns - */ - private measureTextWidth(plain: string): number { - let width = 0; - let cjkCount = 0; - for (const char of plain) { - const code = char.codePointAt(0)!; - if ( - (code >= 0x2e80 && code <= 0x9fff) || - (code >= 0xf900 && code <= 0xfaff) || - (code >= 0xfe30 && code <= 0xfe4f) || - (code >= 0x20000 && code <= 0x2fa1f) - ) { - width += 2; - cjkCount++; - } else { - width += 1; - } - } - // Correction: VS Code's before pseudo-element renders CJK glyphs - // slightly wider than exactly 2x ASCII in most default fonts. - // ceil(n*0.25) ensures every CJK cell gets at least +1 correction. - return width + Math.ceil(cjkCount * 0.25); - } - - /** - * Finds unescaped pipe positions within a line range. - * Counts consecutive preceding backslashes: pipe is escaped only when - * the count is odd (e.g. \| is escaped, \\| is not). - */ - private findPipePositions( - text: string, - lineStart: number, - lineEnd: number, - ): number[] { - const pipes: number[] = []; - for (let i = lineStart; i < lineEnd; i++) { - if (text[i] === "|") { - let backslashCount = 0; - let j = i - 1; - while (j >= lineStart && text[j] === "\\") { - backslashCount++; - j--; - } - if (backslashCount % 2 === 0) { - pipes.push(i); - } - } - } - return pipes; - } - - /** - * Augments pipe positions with virtual boundary markers for rows that lack - * leading and/or trailing pipe characters. Virtual positions enable cell - * boundary detection but should NOT generate tablePipe decorations. - */ - private normalizePipePositions( - text: string, - lineStart: number, - trimmedLineEnd: number, - pipes: number[], - ): { positions: number[]; isVirtual: boolean[] } { - if (pipes.length === 0) { - return { positions: pipes, isVirtual: [] }; - } - - const positions = [...pipes]; - const isVirtual: boolean[] = new Array(pipes.length).fill(false); - - // Find first non-whitespace position on this line - let firstContentPos = lineStart; - while (firstContentPos < trimmedLineEnd && (text[firstContentPos] === " " || text[firstContentPos] === "\t")) { - firstContentPos++; - } - - // Inject virtual leading boundary if first pipe is not the first content char. - // When the line starts with content at `lineStart`, `firstContentPos - 1` would be - // invalid (-1); use -1 as a sentinel so cell ranges use substring(pipes[i] + 1, …) → start at 0. - if (pipes[0] !== firstContentPos) { - const virtualLead = - firstContentPos > lineStart ? firstContentPos - 1 : -1; - positions.unshift(virtualLead); - isVirtual.unshift(true); - } - - // Inject virtual trailing boundary if last pipe is not at the line end - if (pipes[pipes.length - 1] < trimmedLineEnd - 1) { - positions.push(trimmedLineEnd); - isVirtual.push(true); - } - - return { positions, isVirtual }; - } - - /** - * Gets the line boundaries (start offset, end offset excluding newline) for a - * given character offset within the source text. - */ - private getLineRange(text: string, offset: number): [number, number] { - const lineStart = - offset === 0 ? 0 : text.lastIndexOf("\n", offset - 1) + 1; - let lineEnd = text.indexOf("\n", offset); - if (lineEnd === -1) lineEnd = text.length; - return [lineStart, lineEnd]; - } - - /** - * Trims trailing whitespace from a line range, returning the new end offset. - */ - private trimLineEnd( - text: string, - lineStart: number, - lineEnd: number, - ): number { - let end = lineEnd; - while ( - end > lineStart && - (text[end - 1] === " " || text[end - 1] === "\t") - ) { - end--; - } - return end; - } - - /** - * Computes the maximum display width for each column in a table. - * - * Uses pipe positions on each row line to extract cell content, avoiding - * remark-gfm cell positions which include pipe characters. - * - * @param tableNode - The remark Table AST node - * @param source - The full normalized document text - * @returns Array of column widths (one per column, minimum 3) - */ - private computeColumnWidths(tableNode: Table, source: string): number[] { - let numCols = 0; - - for (const row of tableNode.children) { - if (!row.position || row.position.start.offset === undefined) continue; - const [lineStart, lineEnd] = this.getLineRange( - source, - row.position.start.offset, - ); - const trimmed = this.trimLineEnd(source, lineStart, lineEnd); - const rawPipes = this.findPipePositions(source, lineStart, trimmed); - const { positions: pipes } = this.normalizePipePositions(source, lineStart, trimmed, rawPipes); - const cellCount = Math.max(0, pipes.length - 1); - if (cellCount > numCols) numCols = cellCount; - } - - const widths: number[] = new Array(numCols).fill(3); - - for (const row of tableNode.children) { - if (!row.position || row.position.start.offset === undefined) continue; - const [lineStart, lineEnd] = this.getLineRange( - source, - row.position.start.offset, - ); - const trimmed = this.trimLineEnd(source, lineStart, lineEnd); - const rawPipes = this.findPipePositions(source, lineStart, trimmed); - const { positions: pipes } = this.normalizePipePositions(source, lineStart, trimmed, rawPipes); - - for (let i = 0; i < pipes.length - 1 && i < numCols; i++) { - const cellText = source.substring(pipes[i] + 1, pipes[i + 1]).trim(); - const astCell = i < row.children.length ? row.children[i] as TableCell : undefined; - const cellStyle = this.detectCellStyle(cellText); - // Mixed formatting → raw syntax; otherwise → AST plain text (handles escapes) - const showRaw = !cellStyle && astCell && this.cellHasMixedFormatting(astCell); - const displayText = (astCell && !showRaw) - ? this.extractCellPlainText(astCell) - : cellText; - const w = this.measureTextWidth(displayText); - if (w > widths[i]) widths[i] = w; - } - } - - return widths; - } - - /** - * Processes a GFM table node and emits decorations for pipes, cells, and the separator row. - * - * Produces: - * - `tablePipe` decorations for `|` in header and data rows (replaced with `│`) - * - `tableSeparatorPipe` decorations for `|` in the separator row (replaced with `├`, `┼`, or `┤`) - * - `tableSeparatorDash` decorations for dash segments in the separator row (replaced with `─` repeats) - * - `tableCell` decorations for cell content (padded to uniform column width) - * - * Also adds a scope for the entire table so the visibility model can reveal the - * whole block when the cursor is inside it. - */ - private processTable( - node: Table, - text: string, - decorations: DecorationRange[], - scopes: ScopeRange[], - ancestors: Node[], - ): void { - if (!this.hasValidPosition(node)) return; - - // Don't process tables inside code blocks - if (this.isInCodeBlock(ancestors)) { - return; - } - - const tableStart = node.position!.start.offset!; - const tableEnd = node.position!.end.offset!; - const colWidths = this.computeColumnWidths(node, text); - const colAligns = node.align ?? []; - - this.addScope(scopes, tableStart, tableEnd, "table"); - - for (let rowIdx = 0; rowIdx < node.children.length; rowIdx++) { - const row = node.children[rowIdx]; - if ( - !row.position || - row.position.start.offset === undefined || - row.position.end.offset === undefined - ) { - continue; - } - - const rowStartOffset = row.position.start.offset; - const [lineStart, lineEnd] = this.getLineRange(text, rowStartOffset); - const trimmedLineEnd = this.trimLineEnd(text, lineStart, lineEnd); - const rawPipes = this.findPipePositions(text, lineStart, trimmedLineEnd); - const { positions: pipes, isVirtual } = this.normalizePipePositions( - text, lineStart, trimmedLineEnd, rawPipes, - ); - - // Only decorate real (non-virtual) pipes - for (let pIdx = 0; pIdx < pipes.length; pIdx++) { - if (!isVirtual[pIdx]) { - decorations.push({ - startPos: pipes[pIdx], - endPos: pipes[pIdx] + 1, - type: "tablePipe", - replacement: "\u2502", // │ - }); - } - } - - // Derive cells from pipe positions (avoids remark cell positions which include pipes) - for (let i = 0; i < pipes.length - 1; i++) { - const cellRangeStart = pipes[i] + 1; - const cellRangeEnd = pipes[i + 1]; - if (cellRangeStart >= cellRangeEnd) continue; - - const rawContent = text.substring(cellRangeStart, cellRangeEnd); - const trimmedContent = rawContent.trim(); - const cellStyle = this.detectCellStyle(trimmedContent); - const colWidth = i < colWidths.length ? colWidths[i] : 3; - - // Whole-cell styled: extract clean text via AST + apply CSS - // Mixed formatting: show raw syntax (VS Code can't partially style) - // Plain / escaped: use AST extraction (handles \| → |, \\ → \) - const astCell = i < row.children.length ? row.children[i] as TableCell : undefined; - const showRaw = !cellStyle && astCell && this.cellHasMixedFormatting(astCell); - const displayContent = (astCell && !showRaw) - ? this.extractCellPlainText(astCell) - : trimmedContent; - const displayWidth = this.measureTextWidth(displayContent); - const totalPad = Math.max(0, colWidth - displayWidth); - const align = i < colAligns.length ? colAligns[i] : null; - - let replacement: string; - if (align === "right") { - replacement = "\u00A0".repeat(totalPad + 1) + displayContent + "\u00A0"; - } else if (align === "center") { - const padLeft = Math.floor(totalPad / 2); - const padRight = totalPad - padLeft; - replacement = "\u00A0".repeat(padLeft + 1) + displayContent + "\u00A0".repeat(padRight + 1); - } else { - // left or null (default) - replacement = "\u00A0" + displayContent + "\u00A0".repeat(totalPad + 1); - } - - decorations.push({ - startPos: cellRangeStart, - endPos: cellRangeEnd, - type: "tableCell", - replacement, - cellStyle, - }); - } - - // After the header row (index 0), process the separator row. - // remark-gfm does NOT include the separator row as a child node. - if (rowIdx === 0) { - const headerEndOffset = row.position.end.offset; - - let sepLineStart = text.indexOf("\n", headerEndOffset); - if (sepLineStart === -1) continue; - sepLineStart += 1; - - let sepLineEnd: number; - if (node.children.length > 1 && node.children[1].position) { - const nextRowStart = node.children[1].position.start.offset!; - sepLineEnd = text.lastIndexOf("\n", nextRowStart - 1); - if (sepLineEnd === -1 || sepLineEnd < sepLineStart) { - sepLineEnd = nextRowStart; - } - } else { - sepLineEnd = text.indexOf("\n", sepLineStart); - if (sepLineEnd === -1) sepLineEnd = tableEnd; - } - - const trimmedSepEnd = this.trimLineEnd(text, sepLineStart, sepLineEnd); - const rawSepPipes = this.findPipePositions(text, sepLineStart, trimmedSepEnd); - const { positions: sepPipes, isVirtual: sepIsVirtual } = this.normalizePipePositions( - text, sepLineStart, trimmedSepEnd, rawSepPipes, - ); - - // Use │ for separator pipes (same as data rows) and ASCII - for - // dashes. Box-drawing ─ (U+2500) renders wider than monospace chars - // in many editor fonts, causing cumulative misalignment. - for (let pIdx = 0; pIdx < sepPipes.length; pIdx++) { - if (!sepIsVirtual[pIdx]) { - decorations.push({ - startPos: sepPipes[pIdx], - endPos: sepPipes[pIdx] + 1, - type: "tableSeparatorPipe", - replacement: "\u2502", // │ (same as regular pipe) - }); - } - } - - for (let pIdx = 0; pIdx < sepPipes.length - 1; pIdx++) { - const segStart = sepPipes[pIdx] + 1; - const segEnd = sepPipes[pIdx + 1]; - if (segStart >= segEnd) continue; - - const colWidth = pIdx < colWidths.length ? colWidths[pIdx] : 3; - decorations.push({ - startPos: segStart, - endPos: segEnd, - type: "tableSeparatorDash", - replacement: "-".repeat(colWidth + 2), - }); - } - } - } - } -} +export { MarkdownParser } from "./parser/core"; +export type { + DecorationRange, + DecorationType, + MathRegion, + MermaidBlock, + ParseResult, + ScopeRange, +} from "./parser/types"; diff --git a/src/parser/__tests__/code-blocks.test.ts b/src/parser/__tests__/code-blocks.test.ts new file mode 100644 index 0000000..ccb4960 --- /dev/null +++ b/src/parser/__tests__/code-blocks.test.ts @@ -0,0 +1,98 @@ +import type { Code } from 'mdast'; +import { processCodeBlock } from '../code-blocks'; +import type { DecorationRange, MermaidBlock, ScopeRange } from '../types'; + +function createCodeNode( + text: string, + lang?: string, + value?: string, + startOffset?: number, + endOffset?: number +): Code { + const start = startOffset ?? 0; + const end = endOffset ?? text.length; + + return { + type: 'code', + lang, + value: value ?? '', + position: { + start: { line: 1, column: 1, offset: start }, + end: { line: 3, column: 1, offset: end }, + }, + }; +} + +describe('processCodeBlock', () => { + let decorations: DecorationRange[]; + let scopes: ScopeRange[]; + let mermaidBlocks: MermaidBlock[]; + + beforeEach(() => { + decorations = []; + scopes = []; + mermaidBlocks = []; + }); + + it('ignores nodes without valid offsets', () => { + const node = { + type: 'code', + value: 'graph TD', + position: { + start: { line: 1, column: 1 }, + end: { line: 3, column: 1 }, + }, + } as Code; + + processCodeBlock(node, '```\\ncode\\n```', decorations, scopes, mermaidBlocks); + + expect(decorations).toEqual([]); + expect(scopes).toEqual([]); + expect(mermaidBlocks).toEqual([]); + }); + + it('detects an opening fence that appears earlier on the same line as the node start', () => { + const text = '```ts\nabc\n```'; + const codeStart = 3; + const codeEnd = text.lastIndexOf('```') + 3; + const node = createCodeNode(text, 'ts', 'abc', codeStart, codeEnd); + + processCodeBlock(node, text, decorations, scopes, mermaidBlocks); + + expect(decorations.some((d) => d.type === 'codeBlock')).toBe(true); + expect(decorations.some((d) => d.type === 'codeBlockLanguage')).toBe(true); + expect(scopes).toEqual([ + expect.objectContaining({ kind: 'codeBlock' }), + ]); + }); + + it('returns without decorations when no closing fence can be found', () => { + const text = '```ts\nconst x = 1;\nno close'; + const codeStart = text.indexOf('const x'); + const node = createCodeNode(text, 'ts', 'const x = 1;', codeStart, text.length); + + processCodeBlock(node, text, decorations, scopes, mermaidBlocks); + + expect(decorations).toEqual([]); + expect(scopes).toEqual([]); + expect(mermaidBlocks).toEqual([]); + }); + + it('records mermaid blocks and hides fences without adding codeBlock styling', () => { + const text = '```mermaid\ngraph TD\nA-->B\n```'; + const node = createCodeNode(text, 'mermaid', 'graph TD\nA-->B', 0, text.length); + + processCodeBlock(node, text, decorations, scopes, mermaidBlocks); + + expect(decorations.some((d) => d.type === 'codeBlock')).toBe(false); + expect(decorations.some((d) => d.type === 'hide')).toBe(true); + expect(mermaidBlocks).toEqual([ + { + startPos: 0, + endPos: text.length, + source: 'graph TD\nA-->B', + numLines: 2, + }, + ]); + }); +}); diff --git a/src/parser/__tests__/helpers/crlf-helpers.ts b/src/parser/__tests__/helpers/crlf-helpers.ts index d57cce8..8389264 100644 --- a/src/parser/__tests__/helpers/crlf-helpers.ts +++ b/src/parser/__tests__/helpers/crlf-helpers.ts @@ -1,68 +1,7 @@ import { DecorationRange } from '../../../parser'; +import { mapNormalizedToOriginal, normalizeToLF } from '../../../position-mapping'; -/** - * Converts CRLF text to LF (normalized) text, matching parser behavior. - * - * @param text - Text with any line endings - * @returns Text normalized to LF line endings - */ -export function normalizeToLF(text: string): string { - return text.replace(/\r\n|\r/g, '\n'); -} - -/** - * Maps a position from normalized text (LF only) to original document text (with CRLF). - * This matches the decorator's mapNormalizedToOriginal() behavior. - * - * @param normalizedPos - Position in normalized text - * @param originalText - Original document text (may contain CRLF) - * @returns Position in original document text - */ -export function mapNormalizedToOriginal(normalizedPos: number, originalText: string): number { - if (!originalText) { - return normalizedPos; - } - - // If no CRLF, positions match exactly - if (!originalText.includes('\r\n')) { - return normalizedPos; - } - - // Build a direct character-by-character mapping - // Walk through original text character by character, tracking normalized index - // When normalized index reaches target, return the corresponding original position - // - // Key insight: For exclusive end positions, when normalized position points to '\n', - // we want to map to the '\r' position (not '\n') so that the content range excludes '\r' - // This ensures [start:end) in normalized maps to [start:end) in original with same content - let normalizedIndex = 0; - - for (let i = 0; i < originalText.length; i++) { - // Check for CRLF first - if (originalText[i] === '\r' && i + 1 < originalText.length && originalText[i + 1] === '\n') { - // CRLF: '\r' is skipped in normalized, '\n' maps to normalized position - // If target is at the normalized '\n' position, return '\r' position (i) - // This ensures exclusive end positions work correctly - if (normalizedIndex === normalizedPos) { - // Target points to '\n' in normalized, map to '\r' in original - return i; - } - // Advance normalized index by 1 (for the single '\n' in normalized) - normalizedIndex++; - i++; // Skip the '\n' in original - // Continue to next iteration - don't check here, let the loop handle it - } else { - // Regular character: check if this is our target before incrementing - if (normalizedIndex === normalizedPos) { - return i; - } - normalizedIndex++; - } - } - - // If we didn't find it (shouldn't happen), return the last position - return originalText.length; -} +export { mapNormalizedToOriginal, normalizeToLF }; /** * Verifies that a decoration's position in the original text matches expected content. @@ -109,4 +48,3 @@ export function extractDecorationText(decoration: DecorationRange, originalText: const originalEnd = mapNormalizedToOriginal(decoration.endPos, originalText); return originalText.substring(originalStart, originalEnd); } - diff --git a/src/parser/__tests__/parser-mention-ref.test.ts b/src/parser/__tests__/parser-mention-ref.test.ts index d469d5a..0428e31 100644 --- a/src/parser/__tests__/parser-mention-ref.test.ts +++ b/src/parser/__tests__/parser-mention-ref.test.ts @@ -260,7 +260,7 @@ describe("MarkdownParser - Mentions and Issue References", () => { const originalGetConfiguration = workspace.getConfiguration; beforeEach(() => { - (workspace as any).getConfiguration = jest.fn().mockReturnValue({ + (workspace as any).getConfiguration = vi.fn().mockReturnValue({ get: (key: string, defaultValue: unknown) => { if (key === "mentions.enabled") return false; return defaultValue; diff --git a/src/parser/__tests__/parser-ordered-list.test.ts b/src/parser/__tests__/parser-ordered-list.test.ts index a93329b..b28cc67 100644 --- a/src/parser/__tests__/parser-ordered-list.test.ts +++ b/src/parser/__tests__/parser-ordered-list.test.ts @@ -156,18 +156,18 @@ describe('MarkdownParser - Ordered List Auto-Numbering', () => { describe('when orderedLists.autoNumber is false', () => { afterEach(() => { - jest.restoreAllMocks(); + vi.restoreAllMocks(); }); it('should not emit orderedListItem decorations', () => { - jest.spyOn(config.orderedLists, 'autoNumber').mockReturnValue(false); + vi.spyOn(config.orderedLists, 'autoNumber').mockReturnValue(false); const markdown = '1. First\n2. Second'; const result = parser.extractDecorations(markdown); expect(result.filter(d => d.type === 'orderedListItem')).toHaveLength(0); }); it('should still decorate checkboxes without hiding the ordered marker', () => { - jest.spyOn(config.orderedLists, 'autoNumber').mockReturnValue(false); + vi.spyOn(config.orderedLists, 'autoNumber').mockReturnValue(false); const markdown = '1. [ ] Task'; const result = parser.extractDecorations(markdown); expect(result.filter(d => d.type === 'orderedListItem')).toHaveLength(0); @@ -177,11 +177,11 @@ describe('MarkdownParser - Ordered List Auto-Numbering', () => { describe('when orderedLists.warnWhenSourceNumberDiffers is false', () => { afterEach(() => { - jest.restoreAllMocks(); + vi.restoreAllMocks(); }); it('should not set orderedListMarkerMismatch even for lazy lists', () => { - jest.spyOn(config.orderedLists, 'warnWhenSourceNumberDiffers').mockReturnValue(false); + vi.spyOn(config.orderedLists, 'warnWhenSourceNumberDiffers').mockReturnValue(false); const markdown = '1. First\n1. Second'; const result = parser.extractDecorations(markdown); const ordered = result.filter(d => d.type === 'orderedListItem'); diff --git a/src/parser/code-blocks.ts b/src/parser/code-blocks.ts new file mode 100644 index 0000000..a529bcf --- /dev/null +++ b/src/parser/code-blocks.ts @@ -0,0 +1,211 @@ +import type { Code } from 'mdast'; +import { addScope, hasValidPosition } from './common'; +import type { DecorationRange, MermaidBlock, ScopeRange } from './types'; + +export function processCodeBlock( + node: Code, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + mermaidBlocks: MermaidBlock[], +): void { + if (!hasValidPosition(node)) { + return; + } + + const codeStart = node.position!.start.offset!; + const codeEnd = node.position!.end.offset!; + let fenceStart = codeStart; + let fenceChar: string | null = null; + let fenceLength = 0; + const lineStart = text.lastIndexOf('\n', codeStart - 1) + 1; + + for (let pos = lineStart; pos < codeStart && pos < text.length; pos++) { + const char = text[pos]; + if (char === '`' || char === '~') { + let count = 1; + let checkPos = pos + 1; + while (checkPos < text.length && text[checkPos] === char && count < 20) { + count++; + checkPos++; + } + if (count >= 3) { + fenceStart = pos; + fenceChar = char; + fenceLength = count; + break; + } + } + } + + if (!fenceChar) { + for (let pos = codeStart; pos < Math.min(codeStart + 20, text.length); pos++) { + const char = text[pos]; + if (char === '`' || char === '~') { + let count = 1; + let checkPos = pos + 1; + while (checkPos < text.length && text[checkPos] === char && count < 20) { + count++; + checkPos++; + } + if (count >= 3) { + fenceStart = pos; + fenceChar = char; + fenceLength = count; + break; + } + } + } + } + + if (!fenceChar || fenceLength < 3) { + const fallbackFence = text.indexOf('```', codeStart - 10); + if (fallbackFence === -1 || fallbackFence > codeStart) { + return; + } + fenceStart = fallbackFence; + fenceChar = '`'; + fenceLength = 3; + } + + let closingFence = -1; + const closingLineStart = text.lastIndexOf('\n', codeEnd - 1) + 1; + for (let pos = codeEnd - 1; pos >= closingLineStart && pos >= fenceStart + fenceLength; pos--) { + if (text[pos] === fenceChar) { + let count = 1; + let checkPos = pos - 1; + while (checkPos >= 0 && text[checkPos] === fenceChar && count < 20) { + count++; + checkPos--; + } + if (count >= fenceLength) { + closingFence = pos - count + 1; + break; + } + } + } + + if (closingFence === -1) { + for (let pos = codeEnd; pos < Math.min(codeEnd + 20, text.length); pos++) { + if (text[pos] === fenceChar) { + let count = 1; + let checkPos = pos + 1; + while (checkPos < text.length && text[checkPos] === fenceChar && count < 20) { + count++; + checkPos++; + } + if (count >= fenceLength) { + closingFence = pos; + break; + } + } + } + } + + if (closingFence === -1 || closingFence <= fenceStart) { + return; + } + + const openingLineEnd = text.indexOf('\n', fenceStart); + const openingFenceEnd = fenceStart + fenceLength; + const closingFenceEnd = closingFence + fenceLength; + const closingLineEnd = text.indexOf('\n', closingFence); + const closingEnd = closingLineEnd !== -1 ? closingLineEnd + 1 : codeEnd; + const isMermaid = node.lang?.trim() === 'mermaid'; + + if (!isMermaid) { + decorations.push({ + startPos: fenceStart, + endPos: closingFenceEnd, + type: 'codeBlock', + }); + decorations.push({ + startPos: fenceStart, + endPos: openingFenceEnd, + type: 'hide', + }); + + const languageStart = openingFenceEnd; + const languageEnd = + openingLineEnd !== -1 && openingLineEnd < closingFence + ? openingLineEnd + : openingFenceEnd; + + if (languageEnd > languageStart) { + const languageText = text.substring(languageStart, languageEnd).trim(); + if (languageText.length > 0) { + decorations.push({ + startPos: languageStart, + endPos: languageEnd, + type: 'codeBlockLanguage', + }); + } + } + + if (openingLineEnd !== -1 && openingLineEnd < closingFence) { + decorations.push({ + startPos: openingLineEnd, + endPos: openingLineEnd + 1, + type: 'hide', + }); + } + + decorations.push({ + startPos: closingFence, + endPos: closingEnd, + type: 'hide', + }); + } else { + decorations.push({ + startPos: fenceStart, + endPos: openingFenceEnd, + type: 'hide', + }); + + const languageStart = openingFenceEnd; + const languageEnd = + openingLineEnd !== -1 && openingLineEnd < closingFence + ? openingLineEnd + : openingFenceEnd; + + if (languageEnd > languageStart) { + decorations.push({ + startPos: languageStart, + endPos: languageEnd, + type: 'hide', + }); + } + + if (openingLineEnd !== -1 && openingLineEnd < closingFence) { + decorations.push({ + startPos: openingLineEnd, + endPos: openingLineEnd + 1, + type: 'hide', + }); + } + + decorations.push({ + startPos: closingFence, + endPos: closingEnd, + type: 'hide', + }); + } + + addScope(scopes, fenceStart, closingEnd, 'codeBlock'); + + if (isMermaid) { + const source = node.value ?? ''; + let numLines = 1; + for (let i = 0; i < source.length; i++) { + if (source.charCodeAt(i) === 10) { + numLines++; + } + } + mermaidBlocks.push({ + startPos: fenceStart, + endPos: closingEnd, + source, + numLines, + }); + } +} diff --git a/src/parser/common.ts b/src/parser/common.ts new file mode 100644 index 0000000..7463c69 --- /dev/null +++ b/src/parser/common.ts @@ -0,0 +1,102 @@ +import type { Node } from 'mdast'; +import type { DecorationRange, DecorationType, ScopeRange } from './types'; + +export function hasValidPosition(node: Node): boolean { + return !!( + node.position && + node.position.start.offset !== undefined && + node.position.end.offset !== undefined + ); +} + +export function isInCodeBlock(ancestors: Node[]): boolean { + return ancestors.some((ancestor) => ancestor.type === 'code' || ancestor.type === 'inlineCode'); +} + +export function addMarkerDecorations( + decorations: DecorationRange[], + start: number, + end: number, + markerLength: number, + contentType: DecorationType, +): void { + const contentStart = start + markerLength; + const contentEnd = end - markerLength; + + decorations.push({ startPos: start, endPos: contentStart, type: 'hide' }); + + if (contentStart < contentEnd) { + decorations.push({ + startPos: contentStart, + endPos: contentEnd, + type: contentType, + }); + } + + decorations.push({ startPos: contentEnd, endPos: end, type: 'hide' }); +} + +export function addScope( + scopes: ScopeRange[], + startPos: number, + endPos: number, + kind?: string, +): void { + if (startPos < endPos) { + scopes.push({ startPos, endPos, kind }); + } +} + +export function dedupeScopes(scopes: ScopeRange[]): ScopeRange[] { + if (scopes.length === 0) { + return []; + } + + const unique = new Map(); + for (const scope of scopes) { + const key = `${scope.startPos}:${scope.endPos}`; + if (!unique.has(key)) { + unique.set(key, scope); + } + } + + return Array.from(unique.values()).sort((a, b) => { + if (a.startPos !== b.startPos) { + return a.startPos - b.startPos; + } + return a.endPos - b.endPos; + }); +} + +export function getBoldMarker(text: string, pos: number): string | null { + if (pos + 2 <= text.length) { + const char1 = text.charCodeAt(pos); + const char2 = text.charCodeAt(pos + 1); + + if (char1 === 0x2a && char2 === 0x2a) { + return '**'; + } + + if (char1 === 0x5f && char2 === 0x5f) { + return '__'; + } + } + + return null; +} + +export function getItalicMarker(text: string, pos: number): string | null { + if (pos + 1 <= text.length) { + const charCode = text.charCodeAt(pos); + + if (charCode === 0x2a) { + return '*'; + } + + if (charCode === 0x5f) { + return '_'; + } + } + + return null; +} diff --git a/src/parser/core.ts b/src/parser/core.ts new file mode 100644 index 0000000..ea0ac5b --- /dev/null +++ b/src/parser/core.ts @@ -0,0 +1,1534 @@ +import type { + Root, + Node, + Strong, + Emphasis, + Heading, + InlineCode, + Code, + Link, + Image, + Delete, + Blockquote, + ListItem, + ThematicBreak, + Text, + Table, + TableCell, +} from "mdast"; +import { + addMarkerDecorations as addMarkerDecorationsHelper, + addScope as addScopeHelper, + dedupeScopes as dedupeScopesHelper, + getBoldMarker as getBoldMarkerHelper, + getItalicMarker as getItalicMarkerHelper, + hasValidPosition as hasValidPositionHelper, + isInCodeBlock as isInCodeBlockHelper, +} from "./common"; +import { + processFrontmatter as processFrontmatterHelper, +} from "./frontmatter"; +import { + filterDecorationsInCodeBlocks as filterDecorationsInCodeBlocksHelper, + scanMentionAndIssueRefs as scanMentionAndIssueRefsHelper, +} from "./mentions"; +import { + cellHasMixedFormatting as cellHasMixedFormattingHelper, + computeColumnWidths as computeColumnWidthsHelper, + detectCellStyle as detectCellStyleHelper, + extractCellPlainText as extractCellPlainTextHelper, + findPipePositions as findPipePositionsHelper, + getLineRange as getLineRangeHelper, + measureTextWidth as measureTextWidthHelper, + normalizePipePositions as normalizePipePositionsHelper, + trimLineEnd as trimLineEndHelper, +} from "./tables"; +import { + processEmphasis as processEmphasisHelper, + processHeading as processHeadingHelper, + processInlineCode as processInlineCodeHelper, + processStrikethrough as processStrikethroughHelper, + processStrong as processStrongHelper, +} from "./inline-formatting"; +import { processCodeBlock as processCodeBlockHelper } from "./code-blocks"; +import { + processBlockquote as processBlockquoteHelper, + processListItem as processListItemHelper, + processThematicBreak as processThematicBreakHelper, +} from "./list-quote"; +import { + handleEmptyImageAlt as handleEmptyImageAltHelper, + processEmojiShortcodesInSlice as processEmojiShortcodesInSliceHelper, + processTextNode as processTextNodeHelper, +} from "./text-processing"; +import { getRemarkProcessorSync, getRemarkProcessor } from "../parser-remark"; +import { getEmojiMap } from "../emoji-map-loader"; +import { scanMathRegions } from "../math/math-scanner"; +import { config } from "../config"; +import { logError, logWarn } from "../logging"; +import { normalizeToLF } from "../position-mapping"; +import { + DecorationRange, + DecorationType, + MermaidBlock, + ParseResult, + ScopeRange, +} from "./types"; + +/** + * Type for the unified processor used to parse markdown text to a Root AST node. + * + * The processor is created by the `unified()` function from the unified ecosystem + * and configured with remark-parse and remark-gfm plugins. + */ +type UnifiedProcessor = { + parse: (text: string) => Root; +}; + +/** + * Type for the visit function from unist-util-visit. + * + * Traverses nodes in a tree structure (AST) and calls the visitor function + * for each node. The visitor receives: node, index (optional), parent (optional). + */ +type VisitFunction = ( + tree: Root, + visitor: (node: Node, index?: number, parent?: Node) => void, +) => void; + +/** + * A parser that extracts decoration ranges from markdown text. + * + * This class uses `remark` to parse the input markdown and determines ranges for: + * - Markdown syntax markers (for hiding, e.g., `**`, `#`, `` ` ``) + * - Content (for applying styles such as bold, italic, headings, etc.) + * + * @class MarkdownParser + * @example + * // Synchronous usage (VS Code extension): + * const parser = new MarkdownParser(); + * const decorations = parser.extractDecorations('# Heading\n**bold** text'); + * + * // Asynchronous usage (ESM tests): + * const parser = await MarkdownParser.create(); + * const decorations = parser.extractDecorations('# Heading\n**bold** text'); + */ +export class MarkdownParser { + private processor: UnifiedProcessor; + private visit: VisitFunction; + + constructor() { + const { unified, remarkParse, remarkGfm, visit } = getRemarkProcessorSync(); + this.visit = visit; + this.processor = unified().use(remarkParse).use(remarkGfm); + } + + /** + * Async factory method to create a MarkdownParser instance. + * Uses dynamic imports to support ESM modules in test environments. + * + * @returns {Promise} A promise that resolves to a MarkdownParser instance + */ + static async create(): Promise { + const parser = Object.create(MarkdownParser.prototype); + const { unified, remarkParse, remarkGfm, visit } = + await getRemarkProcessor(); + parser.visit = visit; + parser.processor = unified().use(remarkParse).use(remarkGfm); + return parser; + } + + /** + * Extracts decoration ranges from markdown text. + * + * @param {string} text - The markdown text to parse + * @returns {DecorationRange[]} Array of decoration ranges, sorted by startPos + */ + extractDecorations(text: string): DecorationRange[] { + return this.extractDecorationsWithScopes(text).decorations; + } + + /** + * Extracts decoration ranges and explicit scope ranges from markdown text. + * + * @param {string} text - The markdown text to parse + * @returns {ParseResult} Decorations and scopes, sorted by startPos + */ + extractDecorationsWithScopes(text: string): ParseResult { + if (!text || typeof text !== "string") { + return { + decorations: [], + scopes: [], + mermaidBlocks: [], + mathRegions: [], + }; + } + + // Normalize line endings to \n for consistent position tracking + // Optimization: Only normalize if document contains CRLF + const normalizedText = normalizeToLF(text); + + const decorations: DecorationRange[] = []; + const scopes: ScopeRange[] = []; + const mermaidBlocks: MermaidBlock[] = []; + + // Process frontmatter before remark parsing to avoid conflicts with thematic break detection + this.processFrontmatter(normalizedText, decorations, scopes); + + try { + // Parse markdown into AST + const ast = this.processor.parse(normalizedText) as Root; + + // Process AST nodes and extract decorations + scopes + this.processAST(ast, normalizedText, decorations, scopes, mermaidBlocks); + + // Handle edge cases: empty image alt text that remark doesn't parse as Image node + this.handleEmptyImageAlt(normalizedText, decorations); + + // GitHub-style mentions and issue references (@username, @org/team, #123, @user/repo#456) + if (config.mentions.enabled()) { + this.scanMentionAndIssueRefs(normalizedText, decorations, scopes); + } + + // Safety net: Remove any markdown formatting decorations that fall within code blocks + // Ancestor checks in processors prevent most cases, but this catches edge cases + this.filterDecorationsInCodeBlocks(decorations, scopes, normalizedText); + + // Sort decorations by start position + decorations.sort((a, b) => a.startPos - b.startPos); + } catch (error) { + // Gracefully handle parse errors + logError('Error parsing markdown', error); + } + + return { + decorations, + scopes: this.dedupeScopes(scopes), + mermaidBlocks, + mathRegions: scanMathRegions(normalizedText), + }; + } + + /** + * Processes the remark AST to extract decoration ranges. + * + * Uses a proper visitor pattern with ancestor tracking for efficient traversal. + * + * @private + * @param {Root} ast - The parsed AST root node + * @param {string} text - The original markdown text + * @param {DecorationRange[]} decorations - Array to accumulate decorations + */ + private processAST( + ast: Root, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + mermaidBlocks: MermaidBlock[], + ): void { + // Track processed blockquote positions to avoid duplicates from nested blockquotes + const processedBlockquotePositions = new Set(); + + // Use a map to efficiently track ancestors for each node + const ancestorMap = new Map(); + + this.visit( + ast, + (node: Node, index: number | undefined, parent: Node | undefined) => { + // Optimization: Trust remark's position data in hot path + // Individual process methods still validate for safety + try { + // Build ancestor chain efficiently using parent's cached ancestors + const currentAncestors: Node[] = []; + if (parent) { + currentAncestors.push(parent); + // Get parent's ancestors from cache (O(1) lookup instead of O(n) search) + const parentAncestors = ancestorMap.get(parent); + if (parentAncestors) { + currentAncestors.push(...parentAncestors); + } + } + + // Cache this node's ancestors for its children to use + if (currentAncestors.length > 0) { + ancestorMap.set(node, currentAncestors); + } + + switch (node.type) { + case "heading": + this.processHeading( + node as Heading, + text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "strong": + this.processStrong( + node as Strong, + text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "emphasis": + this.processEmphasis( + node as Emphasis, + text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "delete": + this.processStrikethrough( + node as Delete, + text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "inlineCode": + this.processInlineCode( + node as InlineCode, + text, + decorations, + scopes, + ); + break; + + case "code": + this.processCodeBlock( + node as Code, + text, + decorations, + scopes, + mermaidBlocks, + ); + break; + + case "link": + this.processLink( + node as Link, + text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "image": + this.processImage( + node as Image, + text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "blockquote": + this.processBlockquote( + node as Blockquote, + text, + decorations, + scopes, + processedBlockquotePositions, + currentAncestors, + ); + break; + + case "listItem": + this.processListItem( + node as ListItem, + text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "thematicBreak": + this.processThematicBreak( + node as ThematicBreak, + text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "text": + this.processText( + node as Text, + decorations, + scopes, + currentAncestors, + ); + break; + + case "table": + this.processTable( + node as Table, + text, + decorations, + scopes, + currentAncestors, + ); + break; + } + } catch (error) { + // Gracefully handle invalid positions or processing errors + // Individual methods still validate, so this catches unexpected issues + logWarn('Error processing AST node', error, { nodeType: node.type }); + } + }, + ); + } + + /** + * Validates that a node has valid position information. + * @returns {boolean} True if node position is valid + */ + private hasValidPosition(node: Node): boolean { + return hasValidPositionHelper(node); + } + + /** + * Checks if any ancestor node is a code block (fenced or inline). + * Used to skip processing markdown formatting inside code blocks. + * + * @param ancestors - Array of ancestor nodes to check + * @returns {boolean} True if any ancestor is a code block + */ + private isInCodeBlock(ancestors: Node[]): boolean { + return isInCodeBlockHelper(ancestors); + } + + /** + * Adds hide decorations for opening and closing markers, and content decoration. + * Common pattern for bold, italic, strikethrough, and inline code. + * + * @param decorations - Array to add decorations to + * @param start - Start position of the node + * @param end - End position of the node + * @param markerLength - Length of the opening/closing marker + * @param contentType - Type of decoration for the content + */ + private addMarkerDecorations( + decorations: DecorationRange[], + start: number, + end: number, + markerLength: number, + contentType: DecorationType, + ): void { + addMarkerDecorationsHelper(decorations, start, end, markerLength, contentType); + } + + /** + * Adds a scope range for a markdown construct if valid. + */ + private addScope( + scopes: ScopeRange[], + startPos: number, + endPos: number, + kind?: string, + ): void { + addScopeHelper(scopes, startPos, endPos, kind); + } + + /** + * Deduplicates and sorts scopes by start position. + */ + private dedupeScopes(scopes: ScopeRange[]): ScopeRange[] { + return dedupeScopesHelper(scopes); + } + + /** + * Scans normalized text for GitHub-style @mentions and #issue references. + * Pushes decoration ranges and scopes; excludes code blocks and email patterns. + */ + private scanMentionAndIssueRefs( + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ): void { + scanMentionAndIssueRefsHelper(text, decorations, scopes); + } + + /** Returns whether the @ at position atIdx appears to be part of an email (local@domain). */ + private looksLikeEmailAt(text: string, atIdx: number): boolean { + let lo = atIdx - 1; + while (lo >= 0 && /[a-zA-Z0-9._%+-]/.test(text[lo])) lo--; + const localPart = text.slice(lo + 1, atIdx); + let hi = atIdx + 1; + while (hi < text.length && /[a-zA-Z0-9.-]/.test(text[hi])) hi++; + const domainPart = text.slice(atIdx + 1, hi); + if (!localPart.length || !domainPart.length) return false; + if (!/\./.test(domainPart)) return false; + return true; + } + + /** Builds code block ranges from scopes for mention/ref exclusion. */ + private getCodeBlockRanges( + scopes: ScopeRange[], + ): Array<{ start: number; end: number }> { + const out: Array<{ start: number; end: number }> = []; + for (const scope of scopes) { + if (scope.kind === "codeBlock" || scope.kind === "code") { + out.push({ start: scope.startPos, end: scope.endPos }); + } + } + out.sort((a, b) => a.start - b.start); + return out; + } + + /** + * Filters out markdown formatting decorations that fall within code blocks. + * + * This is a safety net: ancestor checks in processors prevent most cases, but this + * catches any edge cases where decorations might still be created inside code blocks. + * + * Only code block specific decorations are preserved: + * - codeBlock, codeBlockLanguage, code, transparent + * - hide decorations that are part of fence structure (fence markers, newlines on fence lines) + * + * @param decorations - Array of decorations to filter (modified in place) + * @param scopes - Array of scope ranges (used to identify code blocks) + * @param text - The normalized markdown text (used to identify fence lines) + */ + private filterDecorationsInCodeBlocks( + decorations: DecorationRange[], + scopes: ScopeRange[], + text: string, + ): void { + filterDecorationsInCodeBlocksHelper(decorations, scopes, text); + } + + /** + * Processes a heading node. + */ + private processHeading( + node: Heading, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + processHeadingHelper(node, text, decorations, scopes, ancestors); + } + + /** + * Processes a strong (bold) node. + * + * Skips processing if the bold text is inside a code block or inline code, + * as markdown formatting should not be parsed inside code contexts. + */ + private processStrong( + node: Strong, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + processStrongHelper(node, text, decorations, scopes, ancestors); + } + + /** + * Processes an emphasis (italic) node. + * + * Skips processing if the italic text is inside a code block or inline code, + * as markdown formatting should not be parsed inside code contexts. + */ + private processEmphasis( + node: Emphasis, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + processEmphasisHelper(node, text, decorations, scopes, ancestors); + } + + /** + * Processes a strikethrough (delete) node. + * + * Validates that the node actually uses ~~ (double tilde) markers, + * not single ~, to prevent incorrect parsing of single tildes as strikethrough. + * + * Skips processing if the strikethrough text is inside a code block or inline code, + * as markdown formatting should not be parsed inside code contexts. + */ + private processStrikethrough( + node: Delete, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + processStrikethroughHelper(node, text, decorations, scopes, ancestors); + } + + /** + * Processes an inline code node. + * + * Matches Markless approach: applies code decoration (with border) to the entire range + * including backticks, then hides the backticks separately. This ensures the border + * spans the full code block and works correctly even on single lines. + */ + private processInlineCode( + node: InlineCode, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ): void { + processInlineCodeHelper(node, text, decorations, scopes); + } + + /** + * Processes a code block node. + * + * Supports both backtick (```) and tilde (~~~) fences, with variable length (3+ characters). + * Detects the fence type and length from the text to properly handle all GFM code block variants. + */ + private processCodeBlock( + node: Code, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + mermaidBlocks: MermaidBlock[], + ): void { + processCodeBlockHelper(node, text, decorations, scopes, mermaidBlocks); + } + + /** + * Processes a link node. + * + * Skips processing if the link is inside a code block or inline code, + * as links should not be parsed inside code contexts. + */ + private processLink( + node: Link, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + if (!this.hasValidPosition(node)) return; + + // Don't parse links inside code blocks + if (this.isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + + // Explicit bracket-style link [text](url): always use regular link rendering so that + // [bob@email.com](mailto:bob@email.com) and [url](url) hide delimiters and URL. + if (text[start] === "[") { + // Fall through to "Regular bracket-style link" path below. + } else { + // Detect autolinks and bare links using AST structure: link text equals the URL + // (or URL without mailto: prefix for email autolinks) + const firstChild = node.children?.[0]; + const linkText = + firstChild && firstChild.type === "text" ? firstChild.value : ""; + const url = node.url || ""; + const urlWithoutMailto = url.replace(/^mailto:/, ""); + const isAutolinkOrBareLink = + linkText === url || linkText === urlWithoutMailto; + + if (isAutolinkOrBareLink) { + // Check if it's an autolink (has angle brackets) or bare link (no brackets) + const hasAngleBrackets = text[start] === "<" && text[end - 1] === ">"; + + if (hasAngleBrackets) { + // Process autolink - use text child position for accurate content range + const textChild = + firstChild && firstChild.type === "text" ? firstChild : null; + const contentStart = textChild?.position?.start.offset ?? start + 1; + const contentEnd = textChild?.position?.end.offset ?? end - 1; + + // Hide opening angle bracket + decorations.push({ + startPos: start, + endPos: start + 1, + type: "hide", + }); + + // Add link decoration for content (between angle brackets) + if (contentStart < contentEnd) { + decorations.push({ + startPos: contentStart, + endPos: contentEnd, + type: "link", + url: url, // Use URL from AST (remark-gfm already handles mailto: for emails) + }); + } + + // Hide closing angle bracket + decorations.push({ + startPos: end - 1, + endPos: end, + type: "hide", + }); + + // Add scope for reveal-on-select behavior + this.addScope(scopes, start, end, "link"); + } else { + // Process bare link (no angle brackets) - just apply link decoration + const textChild = + firstChild && firstChild.type === "text" ? firstChild : null; + const contentStart = textChild?.position?.start.offset ?? start; + const contentEnd = textChild?.position?.end.offset ?? end; + + // Add link decoration for the URL/email text + if (contentStart < contentEnd) { + decorations.push({ + startPos: contentStart, + endPos: contentEnd, + type: "link", + url: url, // Use URL from AST (remark-gfm already handles mailto: for emails) + }); + } + + // Add scope for reveal-on-select behavior + this.addScope(scopes, start, end, "link"); + } + return; + } + } + + // Regular bracket-style link: [text](url) + // Find opening bracket [ + const bracketStart = text.indexOf("[", start); + if (bracketStart === -1) return; + + // Find closing bracket ] + const bracketEnd = text.indexOf("]", bracketStart); + if (bracketEnd === -1) return; + + // Hide opening bracket + decorations.push({ + startPos: bracketStart, + endPos: bracketStart + 1, + type: "hide", + }); + + // Add link decoration for text (between brackets) + const contentStart = bracketStart + 1; + if (contentStart < bracketEnd) { + // Extract URL from the link node + const url = node.url || ""; + + decorations.push({ + startPos: contentStart, + endPos: bracketEnd, + type: "link", + url: url, + }); + } + + // Hide closing bracket + decorations.push({ + startPos: bracketEnd, + endPos: bracketEnd + 1, + type: "hide", + }); + + // Find and hide URL part (url) + const parenStart = text.indexOf("(", bracketEnd); + if (parenStart !== -1 && parenStart === bracketEnd + 1) { + // Hide opening parenthesis + decorations.push({ + startPos: parenStart, + endPos: parenStart + 1, + type: "hide", + }); + + const parenEnd = text.indexOf(")", parenStart + 1); + if (parenEnd !== -1 && parenEnd <= end) { + // Hide URL content between parentheses + const urlStart = parenStart + 1; + if (urlStart < parenEnd) { + decorations.push({ + startPos: urlStart, + endPos: parenEnd, + type: "hide", + }); + } + + // Hide closing parenthesis + decorations.push({ + startPos: parenEnd, + endPos: parenEnd + 1, + type: "hide", + }); + } + } + + this.addScope(scopes, start, end, "link"); + } + + /** + * Processes an image node. + */ + private processImage( + node: Image, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + if (!this.hasValidPosition(node)) return; + + // Don't parse images inside code blocks + if (this.isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + + // Find opening ![ + const exclamationStart = text.indexOf("![", start); + if (exclamationStart === -1 || exclamationStart > start) return; + + // Hide ![ + decorations.push({ + startPos: exclamationStart, + endPos: exclamationStart + 2, + type: "hide", + }); + + // Find alt text (between [ and ]) + const altStart = exclamationStart + 2; + const bracketEnd = text.indexOf("]", altStart); + if (bracketEnd === -1) { + // Even if no closing bracket found, try to hide what we can + // This handles edge cases like ![] without proper syntax + return; + } + + // Add image decoration for alt text (even if empty) + if (altStart <= bracketEnd) { + const url = node.url || ""; + decorations.push({ + startPos: altStart, + endPos: bracketEnd, + type: "image", + url, + }); + + // Image nodes from remark store alt text as a string (no child nodes), + // so inline formatting like **bold** and *italic* inside the alt text + // is not parsed by the main AST walk. We parse the alt slice separately + // and add inline formatting decorations within the alt range. + if (altStart < bracketEnd) { + this.processInlineFormattingInImageAlt( + text, + decorations, + scopes, + altStart, + bracketEnd, + ); + this.processEmojiShortcodesInSlice( + text.substring(altStart, bracketEnd), + altStart, + decorations, + scopes, + ); + } + } + + // Hide closing bracket + decorations.push({ + startPos: bracketEnd, + endPos: bracketEnd + 1, + type: "hide", + }); + + // Find and hide URL part + const parenStart = text.indexOf("(", bracketEnd); + if (parenStart !== -1) { + // Allow for optional space between ] and ( + const between = text.substring(bracketEnd + 1, parenStart); + const hasOnlyWhitespaceBetween = + between.length > 0 && between.trim().length === 0; + if (parenStart === bracketEnd + 1 || hasOnlyWhitespaceBetween) { + // Hide whitespace between ] and ( if present + if (hasOnlyWhitespaceBetween) { + decorations.push({ + startPos: bracketEnd + 1, + endPos: parenStart, + type: "hide", + }); + } + + decorations.push({ + startPos: parenStart, + endPos: parenStart + 1, + type: "hide", + }); + + const parenEnd = text.indexOf(")", parenStart + 1); + if (parenEnd !== -1 && parenEnd <= end) { + const urlStart = parenStart + 1; + if (urlStart < parenEnd) { + decorations.push({ + startPos: urlStart, + endPos: parenEnd, + type: "hide", + }); + } + + decorations.push({ + startPos: parenEnd, + endPos: parenEnd + 1, + type: "hide", + }); + } + } + } + + this.addScope(scopes, start, end, "image"); + } + + /** + * Parses inline markdown inside an image's alt text and emits decorations. + * + * Remark's mdast `image` node stores `alt` as a plain string (no inline children), + * so formatting inside the alt text is not present in the main AST traversal. + * + * This method parses only the alt slice (fast path + early exits) and maps the + * resulting node positions back into the original (normalized) document offsets. + * + * Note: This is only called for images that are NOT inside code blocks (checked in processImage). + */ + private processInlineFormattingInImageAlt( + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + altStart: number, + altEnd: number, + ): void { + if (altStart >= altEnd) return; + + const altText = text.substring(altStart, altEnd); + + // Fast path: avoid parsing when there are no inline marker characters + const hasInlineMarkers = + altText.indexOf("*") !== -1 || + altText.indexOf("_") !== -1 || + altText.indexOf("~") !== -1 || + altText.indexOf("`") !== -1; + if (!hasInlineMarkers) return; + + let altAst: Root; + try { + altAst = this.processor.parse(altText) as Root; + } catch { + return; + } + + const ancestorMap = new Map(); + const absCache = new WeakMap(); + + const toAbsoluteNode = (node: T): T => { + const cached = absCache.get(node); + if (cached) return cached as T; + + if ( + !node.position || + node.position.start.offset === undefined || + node.position.end.offset === undefined + ) { + absCache.set(node, node); + return node; + } + + const absNode = { + ...node, + position: { + ...node.position, + start: { + ...node.position.start, + offset: altStart + (node.position.start.offset ?? 0), + }, + end: { + ...node.position.end, + offset: altStart + (node.position.end.offset ?? 0), + }, + }, + } as T; + + absCache.set(node, absNode as unknown as Node); + return absNode; + }; + + const toAbsoluteAncestors = (ancestors: Node[]): Node[] => + ancestors.map(toAbsoluteNode); + + this.visit( + altAst, + (node: Node, _index: number | undefined, parent: Node | undefined) => { + const currentAncestors: Node[] = []; + if (parent) { + currentAncestors.push(parent); + const parentAncestors = ancestorMap.get(parent); + if (parentAncestors) { + currentAncestors.push(...parentAncestors); + } + } + + if (currentAncestors.length > 0) { + ancestorMap.set(node, currentAncestors); + } + + try { + switch (node.type) { + case "strong": + this.processStrong( + toAbsoluteNode(node as Strong), + text, + decorations, + scopes, + toAbsoluteAncestors(currentAncestors), + ); + break; + case "emphasis": + this.processEmphasis( + toAbsoluteNode(node as Emphasis), + text, + decorations, + scopes, + toAbsoluteAncestors(currentAncestors), + ); + break; + case "delete": + this.processStrikethrough( + toAbsoluteNode(node as Delete), + text, + decorations, + scopes, + toAbsoluteAncestors(currentAncestors), + ); + break; + case "inlineCode": + this.processInlineCode( + toAbsoluteNode(node as InlineCode), + text, + decorations, + scopes, + ); + break; + } + } catch { + // Be conservative: never fail the main image parsing because the alt slice is malformed. + } + }, + ); + } + + /** + * Processes a blockquote node. + * + * Replaces '>' characters with vertical bars for visual indication. + * Nested blockquotes automatically show multiple bars (one per '>'). + * + * @param processedPositions - Set to track which positions have already been processed + */ + private processBlockquote( + node: Blockquote, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + processedPositions: Set, + ancestors: Node[], + ): void { + processBlockquoteHelper(node, text, decorations, scopes, processedPositions, ancestors); + } + + /** + * Processes a list item node. + * + * Replaces unordered list markers (-, *, +) with a bullet point (•). + * Keeps ordered list markers (1., 2., etc.) as-is (no decoration). + * Detects and decorates checkboxes ([ ] or [x]) after the marker. + * Supports both unordered lists (-, *, +) and ordered lists (1., 2., etc.). + */ + private processListItem( + node: ListItem, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + processListItemHelper(node, text, decorations, scopes, ancestors); + } + + /** + * Attempts to detect and add checkbox decorations after a list marker. + * + * @param text - The full document text + * @param markerStart - Start position of the list marker + * @param markerEnd - End position after the marker (and optional space) + * @param end - End position of the list item + * @param decorations - Array to add decorations to + * @param isOrderedList - Whether this is an ordered list (true) or unordered list (false) + * @returns true if checkbox was found and decorations were added, false otherwise + */ + private tryAddCheckboxDecorations( + text: string, + markerStart: number, + markerEnd: number, + end: number, + decorations: DecorationRange[], + isOrderedList: boolean, + ): boolean { + // Check for checkbox pattern: [ ] or [x] or [X] + // GFM requires a space after the closing bracket for task lists + if (markerEnd + 3 >= end || text[markerEnd] !== "[") { + return false; + } + + const checkChar = text[markerEnd + 1]; + if ( + (checkChar !== " " && checkChar !== "x" && checkChar !== "X") || + text[markerEnd + 2] !== "]" + ) { + return false; + } + + // GFM spec requires a space after the closing bracket for task lists + // Without a space, it's not a valid task list (e.g., "- [x]task" is not a task list) + if (text[markerEnd + 3] !== " ") { + return false; + } + + // Found a valid checkbox - add decorations + const checkboxStart = markerEnd; + const checkboxEnd = checkboxStart + 3; // [ ], [x], or [X] (space after is not part of checkbox) + const isChecked = checkChar === "x" || checkChar === "X"; + + // For ordered lists with checkboxes, apply color decoration to the numbers + if (isOrderedList) { + decorations.push({ + startPos: markerStart, + endPos: markerEnd, + type: "orderedListItem", + }); + } + // For unordered lists: no listItem (bullet); single checkbox decoration covers marker + checkbox + decorations.push({ + startPos: isOrderedList ? checkboxStart : markerStart, + endPos: checkboxEnd, + type: isChecked ? "checkboxChecked" : "checkboxUnchecked", + }); + + return true; + } + + /** + * Processes a thematic break (horizontal rule) node. + * + * Replaces the text (---, ***, ___) with a visual horizontal line. + * Skips thematic breaks that are part of a frontmatter block. + */ + private processThematicBreak( + node: ThematicBreak, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + processThematicBreakHelper(node, decorations, scopes, ancestors); + } + + /** + * Processes a text node to extract emoji shortcodes. + */ + private processText( + node: Text, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + processTextNodeHelper(node, decorations, scopes, ancestors, (slice, offset, outDecorations, outScopes) => + this.processEmojiShortcodesInSlice(slice, offset, outDecorations, outScopes) + ); + } + + /** + * Detects and decorates emoji shortcodes in a text slice. + * + * Matches GitHub-style emoji shortcodes (e.g., `:smile:`, `:+1:`, `:t-rex:`). + * Shortcodes must: + * - Start and end with `:` + * - Contain only alphanumeric characters, underscores, hyphens, and plus signs + * - Be case-insensitive (matched against lowercase keys in emoji map) + * + * The regex pattern `/:([a-z0-9_+-]+):/gi` matches valid shortcode patterns. + * Since this processes text nodes from the parsed AST (not raw markdown), + * URLs and other markdown syntax are already handled by their respective nodes, + * reducing false positives. However, the pattern is still defensive and only + * matches when a valid emoji exists in the emoji map. + * + * The emoji map is lazily loaded only when colons are found in the text, + * improving initial load time for documents without emojis. + * + * @param slice - The text slice to search for emoji shortcodes + * @param offset - Character offset of the slice within the original document + * @param decorations - Array to accumulate decoration ranges + * @param scopes - Array to accumulate scope ranges + */ + private processEmojiShortcodesInSlice( + slice: string, + offset: number, + decorations: DecorationRange[], + scopes: ScopeRange[], + ): void { + processEmojiShortcodesInSliceHelper(slice, offset, decorations, scopes, getEmojiMap()); + } + + /** + * Handles empty image alt text that remark doesn't parse as an Image node. + * Optimized with early exit to avoid regex when no image syntax exists. + */ + private handleEmptyImageAlt( + text: string, + decorations: DecorationRange[], + ): void { + handleEmptyImageAltHelper(text, decorations); + } + + /** + * Gets the bold marker type (** or __) from source text. + * Optimized to use character code comparisons instead of substring allocation. + */ + private getBoldMarker(text: string, pos: number): string | null { + return getBoldMarkerHelper(text, pos); + } + + /** + * Gets the italic marker type (* or _) from source text. + * Optimized to use character code comparisons instead of string allocation. + */ + private getItalicMarker(text: string, pos: number): string | null { + return getItalicMarkerHelper(text, pos); + } + + /** Minimum length required for frontmatter delimiter */ + private static readonly MIN_FRONTMATTER_LENGTH = 3; // '---' + + /** + * Maximum number of lines to search for closing frontmatter delimiter. + * + * Frontmatter is typically very short (< 50 lines). This limit prevents + * performance issues when searching for closing delimiter in large files + * where frontmatter might be incomplete or missing. + */ + private static readonly MAX_FRONTMATTER_SEARCH_LINES = 100; + + /** + * Processes YAML frontmatter at the start of the document. + * + * Detects `---` delimiters at document start (after optional spaces/tabs only), + * finds the closing delimiter, and applies a decoration to the entire block. + * Frontmatter must be at the document start to distinguish it from horizontal rules. + * + * @private + * @param {string} text - The normalized markdown text (CRLF normalized to LF) + * @param {DecorationRange[]} decorations - Array to accumulate decorations + */ + private processFrontmatter( + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ): void { + processFrontmatterHelper(text, decorations, scopes); + } + + /** + * Extracts plain display text from a TableCell AST node by walking its + * child tree. Avoids regex-based stripping which incorrectly removes + * literal underscores and asterisks (e.g. snake_case, 100*200). + */ + private extractCellPlainText(cell: TableCell): string { + return extractCellPlainTextHelper(cell); + } + + /** + * Returns true if a cell has inline formatting children (strong, emphasis, + * delete, inlineCode) that cannot be rendered as whole-cell CSS. + * Used to decide whether to show raw syntax vs AST-extracted plain text. + */ + private cellHasMixedFormatting(cell: TableCell): boolean { + return cellHasMixedFormattingHelper(cell); + } + + /** + * Detects whole-cell formatting and returns CSS properties for the before + * pseudo-element. Returns undefined for unformatted or mixed-format cells. + * + * When undefined is returned and the cell contains formatting markers, + * the caller falls back to showing the raw cell text (VS Code cannot + * partially style a single contentText string). + */ + private detectCellStyle( + trimmed: string, + ): { fontWeight?: string; fontStyle?: string; textDecoration?: string } | undefined { + return detectCellStyleHelper(trimmed); + } + + /** + * Measures display width for monospace column alignment of **plain** cell text + * (no markdown markers — callers use `extractCellPlainText` / `detectCellStyle` paths). + * + * CJK wide characters (Unicode ranges U+2E80–U+9FFF, U+F900–U+FAFF, + * U+FE30–U+FE4F, U+20000–U+2FA1F) count as 2 columns; all others as 1. + * + * Adds a small per-CJK-character correction because VS Code's `before` + * pseudo-element renders CJK glyphs slightly wider than exactly 2x + * ASCII width in most monospace fonts. + * + * @param plain - Already-unmarked cell display text + * @returns Estimated width in monospace columns + */ + private measureTextWidth(plain: string): number { + return measureTextWidthHelper(plain); + } + + /** + * Finds unescaped pipe positions within a line range. + * Counts consecutive preceding backslashes: pipe is escaped only when + * the count is odd (e.g. \| is escaped, \\| is not). + */ + private findPipePositions( + text: string, + lineStart: number, + lineEnd: number, + ): number[] { + return findPipePositionsHelper(text, lineStart, lineEnd); + } + + /** + * Augments pipe positions with virtual boundary markers for rows that lack + * leading and/or trailing pipe characters. Virtual positions enable cell + * boundary detection but should NOT generate tablePipe decorations. + */ + private normalizePipePositions( + text: string, + lineStart: number, + trimmedLineEnd: number, + pipes: number[], + ): { positions: number[]; isVirtual: boolean[] } { + return normalizePipePositionsHelper(text, lineStart, trimmedLineEnd, pipes); + } + + /** + * Gets the line boundaries (start offset, end offset excluding newline) for a + * given character offset within the source text. + */ + private getLineRange(text: string, offset: number): [number, number] { + return getLineRangeHelper(text, offset); + } + + /** + * Trims trailing whitespace from a line range, returning the new end offset. + */ + private trimLineEnd( + text: string, + lineStart: number, + lineEnd: number, + ): number { + return trimLineEndHelper(text, lineStart, lineEnd); + } + + /** + * Computes the maximum display width for each column in a table. + * + * Uses pipe positions on each row line to extract cell content, avoiding + * remark-gfm cell positions which include pipe characters. + * + * @param tableNode - The remark Table AST node + * @param source - The full normalized document text + * @returns Array of column widths (one per column, minimum 3) + */ + private computeColumnWidths(tableNode: Table, source: string): number[] { + return computeColumnWidthsHelper(tableNode, source); + } + + /** + * Processes a GFM table node and emits decorations for pipes, cells, and the separator row. + * + * Produces: + * - `tablePipe` decorations for `|` in header and data rows (replaced with `│`) + * - `tableSeparatorPipe` decorations for `|` in the separator row (replaced with `├`, `┼`, or `┤`) + * - `tableSeparatorDash` decorations for dash segments in the separator row (replaced with `─` repeats) + * - `tableCell` decorations for cell content (padded to uniform column width) + * + * Also adds a scope for the entire table so the visibility model can reveal the + * whole block when the cursor is inside it. + */ + private processTable( + node: Table, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + ): void { + if (!this.hasValidPosition(node)) return; + + // Don't process tables inside code blocks + if (this.isInCodeBlock(ancestors)) { + return; + } + + const tableStart = node.position!.start.offset!; + const tableEnd = node.position!.end.offset!; + const colWidths = this.computeColumnWidths(node, text); + const colAligns = node.align ?? []; + + this.addScope(scopes, tableStart, tableEnd, "table"); + + for (let rowIdx = 0; rowIdx < node.children.length; rowIdx++) { + const row = node.children[rowIdx]; + if ( + !row.position || + row.position.start.offset === undefined || + row.position.end.offset === undefined + ) { + continue; + } + + const rowStartOffset = row.position.start.offset; + const [lineStart, lineEnd] = this.getLineRange(text, rowStartOffset); + const trimmedLineEnd = this.trimLineEnd(text, lineStart, lineEnd); + const rawPipes = this.findPipePositions(text, lineStart, trimmedLineEnd); + const { positions: pipes, isVirtual } = this.normalizePipePositions( + text, lineStart, trimmedLineEnd, rawPipes, + ); + + // Only decorate real (non-virtual) pipes + for (let pIdx = 0; pIdx < pipes.length; pIdx++) { + if (!isVirtual[pIdx]) { + decorations.push({ + startPos: pipes[pIdx], + endPos: pipes[pIdx] + 1, + type: "tablePipe", + replacement: "\u2502", // │ + }); + } + } + + // Derive cells from pipe positions (avoids remark cell positions which include pipes) + for (let i = 0; i < pipes.length - 1; i++) { + const cellRangeStart = pipes[i] + 1; + const cellRangeEnd = pipes[i + 1]; + if (cellRangeStart >= cellRangeEnd) continue; + + const rawContent = text.substring(cellRangeStart, cellRangeEnd); + const trimmedContent = rawContent.trim(); + const cellStyle = this.detectCellStyle(trimmedContent); + const colWidth = i < colWidths.length ? colWidths[i] : 3; + + // Whole-cell styled: extract clean text via AST + apply CSS + // Mixed formatting: show raw syntax (VS Code can't partially style) + // Plain / escaped: use AST extraction (handles \| → |, \\ → \) + const astCell = i < row.children.length ? row.children[i] as TableCell : undefined; + const showRaw = !cellStyle && astCell && this.cellHasMixedFormatting(astCell); + const displayContent = (astCell && !showRaw) + ? this.extractCellPlainText(astCell) + : trimmedContent; + const displayWidth = this.measureTextWidth(displayContent); + const totalPad = Math.max(0, colWidth - displayWidth); + const align = i < colAligns.length ? colAligns[i] : null; + + let replacement: string; + if (align === "right") { + replacement = "\u00A0".repeat(totalPad + 1) + displayContent + "\u00A0"; + } else if (align === "center") { + const padLeft = Math.floor(totalPad / 2); + const padRight = totalPad - padLeft; + replacement = "\u00A0".repeat(padLeft + 1) + displayContent + "\u00A0".repeat(padRight + 1); + } else { + // left or null (default) + replacement = "\u00A0" + displayContent + "\u00A0".repeat(totalPad + 1); + } + + decorations.push({ + startPos: cellRangeStart, + endPos: cellRangeEnd, + type: "tableCell", + replacement, + cellStyle, + }); + } + + // After the header row (index 0), process the separator row. + // remark-gfm does NOT include the separator row as a child node. + if (rowIdx === 0) { + const headerEndOffset = row.position.end.offset; + + let sepLineStart = text.indexOf("\n", headerEndOffset); + if (sepLineStart === -1) continue; + sepLineStart += 1; + + let sepLineEnd: number; + if (node.children.length > 1 && node.children[1].position) { + const nextRowStart = node.children[1].position.start.offset!; + sepLineEnd = text.lastIndexOf("\n", nextRowStart - 1); + if (sepLineEnd === -1 || sepLineEnd < sepLineStart) { + sepLineEnd = nextRowStart; + } + } else { + sepLineEnd = text.indexOf("\n", sepLineStart); + if (sepLineEnd === -1) sepLineEnd = tableEnd; + } + + const trimmedSepEnd = this.trimLineEnd(text, sepLineStart, sepLineEnd); + const rawSepPipes = this.findPipePositions(text, sepLineStart, trimmedSepEnd); + const { positions: sepPipes, isVirtual: sepIsVirtual } = this.normalizePipePositions( + text, sepLineStart, trimmedSepEnd, rawSepPipes, + ); + + // Use │ for separator pipes (same as data rows) and ASCII - for + // dashes. Box-drawing ─ (U+2500) renders wider than monospace chars + // in many editor fonts, causing cumulative misalignment. + for (let pIdx = 0; pIdx < sepPipes.length; pIdx++) { + if (!sepIsVirtual[pIdx]) { + decorations.push({ + startPos: sepPipes[pIdx], + endPos: sepPipes[pIdx] + 1, + type: "tableSeparatorPipe", + replacement: "\u2502", // │ (same as regular pipe) + }); + } + } + + for (let pIdx = 0; pIdx < sepPipes.length - 1; pIdx++) { + const segStart = sepPipes[pIdx] + 1; + const segEnd = sepPipes[pIdx + 1]; + if (segStart >= segEnd) continue; + + const colWidth = pIdx < colWidths.length ? colWidths[pIdx] : 3; + decorations.push({ + startPos: segStart, + endPos: segEnd, + type: "tableSeparatorDash", + replacement: "-".repeat(colWidth + 2), + }); + } + } + } + } +} diff --git a/src/parser/frontmatter.ts b/src/parser/frontmatter.ts new file mode 100644 index 0000000..9f6395d --- /dev/null +++ b/src/parser/frontmatter.ts @@ -0,0 +1,105 @@ +import type { DecorationRange, ScopeRange } from './types'; +import { addScope } from './common'; + +export const MIN_FRONTMATTER_LENGTH = 3; +export const MAX_FRONTMATTER_SEARCH_LINES = 100; + +export function processFrontmatter( + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], +): void { + if (!text || text.length < MIN_FRONTMATTER_LENGTH) { + return; + } + + let startPos = 0; + while ( + startPos < text.length && + (text[startPos] === ' ' || text[startPos] === '\t') + ) { + startPos++; + } + + if ( + startPos + MIN_FRONTMATTER_LENGTH > text.length || + text.substring(startPos, startPos + MIN_FRONTMATTER_LENGTH) !== '---' + ) { + return; + } + + const openingDelimiterStart = startPos; + const openingLineEnd = text.indexOf('\n', openingDelimiterStart); + if (openingLineEnd === -1) { + return; + } + const openingLineEndPos = openingLineEnd + 1; + + let searchPos = openingLineEndPos; + let linesSearched = 0; + while (searchPos < text.length && linesSearched < MAX_FRONTMATTER_SEARCH_LINES) { + const lineStart = searchPos; + let lineStartPos = lineStart; + + while (lineStartPos < text.length && /\s/.test(text[lineStartPos])) { + lineStartPos++; + } + + if ( + lineStartPos + MIN_FRONTMATTER_LENGTH <= text.length && + text.substring(lineStartPos, lineStartPos + MIN_FRONTMATTER_LENGTH) === '---' + ) { + const closingDelimiterStart = lineStartPos; + const closingLineEnd = text.indexOf('\n', closingDelimiterStart); + const lineEnd = closingLineEnd === -1 ? text.length : closingLineEnd; + const lineContent = text.substring(lineStartPos, lineEnd); + + if (!/^---\s*$/.test(lineContent)) { + const nextLine = closingLineEnd === -1 ? text.length : closingLineEnd + 1; + searchPos = nextLine; + linesSearched++; + continue; + } + + const lineBeforeDelimiter = text.substring(lineStart, lineStartPos); + const isOnlyWhitespaceBefore = /^\s*$/.test(lineBeforeDelimiter); + + if (isOnlyWhitespaceBefore) { + const closingLineEndPos = + closingLineEnd === -1 + ? closingDelimiterStart + MIN_FRONTMATTER_LENGTH + : closingLineEnd; + + decorations.push({ + startPos: openingDelimiterStart, + endPos: closingLineEndPos, + type: 'frontmatter', + }); + + addScope(scopes, openingDelimiterStart, closingLineEndPos, 'frontmatter'); + + const openingDelimiterEnd = openingDelimiterStart + MIN_FRONTMATTER_LENGTH; + decorations.push({ + startPos: openingDelimiterStart, + endPos: openingDelimiterEnd, + type: 'frontmatterDelimiter', + }); + + const closingDelimiterEnd = closingDelimiterStart + MIN_FRONTMATTER_LENGTH; + decorations.push({ + startPos: closingDelimiterStart, + endPos: closingDelimiterEnd, + type: 'frontmatterDelimiter', + }); + } + return; + } + + const nextLine = text.indexOf('\n', searchPos); + if (nextLine === -1) { + break; + } + searchPos = nextLine + 1; + linesSearched++; + } +} diff --git a/src/parser/inline-formatting.ts b/src/parser/inline-formatting.ts new file mode 100644 index 0000000..a3de148 --- /dev/null +++ b/src/parser/inline-formatting.ts @@ -0,0 +1,177 @@ +import type { Delete, Emphasis, Heading, InlineCode, Node, Strong } from 'mdast'; +import { + addMarkerDecorations, + addScope, + getBoldMarker, + getItalicMarker, + hasValidPosition, + isInCodeBlock, +} from './common'; +import type { DecorationRange, DecorationType, ScopeRange } from './types'; + +export function processHeading( + node: Heading, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], +): void { + if (!hasValidPosition(node) || isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + let markerLength = 0; + let pos = start; + while (pos < end && text[pos] === '#') { + markerLength++; + pos++; + } + + if (markerLength === 0) { + return; + } + + const headingType = `heading${markerLength}` as DecorationType; + const contentStart = start + markerLength; + let whitespaceLength = 0; + let posAfterMarker = contentStart; + while (posAfterMarker < end && /\s/.test(text[posAfterMarker])) { + whitespaceLength++; + posAfterMarker++; + } + + const hideEnd = contentStart + whitespaceLength; + decorations.push({ startPos: start, endPos: hideEnd, type: 'hide' }); + + let contentEnd = end; + while (contentEnd > hideEnd && /\s/.test(text[contentEnd - 1])) { + contentEnd--; + } + + if (hideEnd < contentEnd) { + decorations.push({ startPos: hideEnd, endPos: contentEnd, type: headingType }); + decorations.push({ startPos: hideEnd, endPos: contentEnd, type: 'heading' }); + } + + addScope(scopes, start, contentEnd, 'heading'); +} + +export function processStrong( + node: Strong, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], +): void { + if (!hasValidPosition(node) || isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + const marker = getBoldMarker(text, start); + if (!marker) { + return; + } + + const contentType: DecorationType = ancestors.some((ancestor) => ancestor.type === 'emphasis') + ? 'boldItalic' + : 'bold'; + + addMarkerDecorations(decorations, start, end, marker.length, contentType); + addScope(scopes, start, end, contentType); +} + +export function processEmphasis( + node: Emphasis, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], +): void { + if (!hasValidPosition(node) || isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + const marker = getItalicMarker(text, start); + if (!marker) { + return; + } + + const parentStrong = ancestors.find((ancestor) => ancestor.type === 'strong'); + if (parentStrong?.position) { + const strongStart = parentStrong.position.start.offset ?? -1; + const strongEnd = parentStrong.position.end.offset ?? -1; + if (start === strongStart + 2 && end === strongEnd - 2) { + return; + } + } + + const contentType: DecorationType = ancestors.some((ancestor) => ancestor.type === 'strong') + ? 'boldItalic' + : 'italic'; + + addMarkerDecorations(decorations, start, end, marker.length, contentType); + addScope(scopes, start, end, contentType); +} + +export function processStrikethrough( + node: Delete, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], +): void { + if (!hasValidPosition(node) || isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + if ( + start + 1 >= text.length || + text[start] !== '~' || + text[start + 1] !== '~' || + end < 2 || + text[end - 2] !== '~' || + text[end - 1] !== '~' + ) { + return; + } + + addMarkerDecorations(decorations, start, end, 2, 'strikethrough'); + addScope(scopes, start, end, 'strikethrough'); +} + +export function processInlineCode( + node: InlineCode, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], +): void { + if (!hasValidPosition(node)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + let markerLength = 0; + let pos = start; + while (pos < end && text[pos] === '`') { + markerLength++; + pos++; + } + + if (markerLength === 0) { + return; + } + + decorations.push({ startPos: start, endPos: end, type: 'code' }); + decorations.push({ startPos: start, endPos: start + markerLength, type: 'transparent' }); + decorations.push({ startPos: end - markerLength, endPos: end, type: 'transparent' }); + addScope(scopes, start, end, 'code'); +} diff --git a/src/parser/list-quote.ts b/src/parser/list-quote.ts new file mode 100644 index 0000000..48b9c26 --- /dev/null +++ b/src/parser/list-quote.ts @@ -0,0 +1,224 @@ +import type { Blockquote, List, ListItem, Node, ThematicBreak } from 'mdast'; +import { config } from '../config'; +import { addScope, hasValidPosition, isInCodeBlock } from './common'; +import type { DecorationRange, ScopeRange } from './types'; + +export function processBlockquote( + node: Blockquote, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + processedPositions: Set, + ancestors: Node[], +): void { + if (!hasValidPosition(node) || isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + let pos = start; + while (pos < end) { + const lineStart = pos === 0 ? 0 : text.lastIndexOf('\n', pos - 1) + 1; + let searchStart = lineStart; + const lineEnd = text.indexOf('\n', lineStart); + const actualLineEnd = lineEnd === -1 ? end : Math.min(lineEnd, end); + + while (searchStart < actualLineEnd) { + const gtIndex = text.indexOf('>', searchStart); + if (gtIndex === -1 || gtIndex >= actualLineEnd) break; + if (processedPositions.has(gtIndex)) { + searchStart = gtIndex + 1; + continue; + } + + const beforeGt = text.substring(lineStart, gtIndex); + const isBlockquoteMarker = + beforeGt.trim().length === 0 || /^[\s>]*$/.test(beforeGt); + + if (isBlockquoteMarker) { + processedPositions.add(gtIndex); + decorations.push({ + startPos: gtIndex, + endPos: gtIndex + 1, + type: 'blockquote', + }); + } + searchStart = gtIndex + 1; + } + + const nextLine = text.indexOf('\n', pos); + if (nextLine === -1 || nextLine >= end) break; + pos = nextLine + 1; + } + + addScope(scopes, start, end, 'blockquote'); +} + +export function processListItem( + node: ListItem, + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], +): void { + if (!hasValidPosition(node) || isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + let markerEnd = start; + while (markerEnd < end && /\s/.test(text[markerEnd])) { + markerEnd++; + } + if (markerEnd >= end) { + return; + } + + addScope(scopes, start, end, 'listItem'); + const markerStart = markerEnd; + + if (text[markerEnd] === '-' || text[markerEnd] === '*' || text[markerEnd] === '+') { + markerEnd++; + if (markerEnd < end && text[markerEnd] === ' ') { + markerEnd++; + } + if (tryAddCheckboxDecorations(text, markerStart, markerEnd, end, decorations, false)) { + return; + } + decorations.push({ startPos: markerStart, endPos: markerEnd, type: 'listItem' }); + return; + } + + if (/\d/.test(text[markerEnd])) { + let numEnd = markerEnd; + while (numEnd < end && /\d/.test(text[numEnd])) { + numEnd++; + } + if (numEnd < end && (text[numEnd] === '.' || text[numEnd] === ')')) { + const delimiter = text[numEnd]; + markerEnd = numEnd + 1; + if (markerEnd < end && text[markerEnd] === ' ') { + markerEnd++; + } + + const parentList = ancestors[0] as List | undefined; + const itemIndex = parentList?.children ? parentList.children.indexOf(node) : -1; + const autoNumber = + itemIndex >= 0 + ? (parentList!.start ?? 1) + itemIndex + : parseInt(text.slice(markerStart, numEnd), 10); + const writtenNumber = parseInt(text.slice(markerStart, numEnd), 10); + const replacement = `${autoNumber}${delimiter} `; + const autoNumberEnabled = config.orderedLists.autoNumber(); + const sourceMismatch = + autoNumberEnabled && + config.orderedLists.warnWhenSourceNumberDiffers() && + writtenNumber !== autoNumber; + + if (!autoNumberEnabled) { + tryAddCheckboxDecorations(text, markerStart, markerEnd, end, decorations, true); + return; + } + + if ( + tryAddCheckboxDecorations( + text, + markerStart, + markerEnd, + end, + decorations, + true, + replacement, + sourceMismatch, + ) + ) { + return; + } + + decorations.push({ + startPos: markerStart, + endPos: markerEnd, + type: 'orderedListItem', + replacement, + orderedListMarkerMismatch: sourceMismatch, + }); + } + } +} + +export function processThematicBreak( + node: ThematicBreak, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], +): void { + if (!hasValidPosition(node) || isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + const end = node.position!.end.offset!; + const isInFrontmatter = decorations.some( + (decoration) => decoration.type === 'frontmatter' && decoration.startPos <= start && decoration.endPos >= end, + ); + if (isInFrontmatter) { + return; + } + + decorations.push({ + startPos: start, + endPos: end, + type: 'horizontalRule', + }); + addScope(scopes, start, end, 'horizontalRule'); +} + +function tryAddCheckboxDecorations( + text: string, + markerStart: number, + markerEnd: number, + end: number, + decorations: DecorationRange[], + isOrderedList: boolean, + orderedReplacement?: string, + orderedListMarkerMismatch?: boolean, +): boolean { + if (markerEnd + 3 >= end || text[markerEnd] !== '[') { + return false; + } + + const checkChar = text[markerEnd + 1]; + if ( + (checkChar !== ' ' && checkChar !== 'x' && checkChar !== 'X') || + text[markerEnd + 2] !== ']' + ) { + return false; + } + + if (text[markerEnd + 3] !== ' ') { + return false; + } + + const checkboxStart = markerEnd; + const checkboxEnd = checkboxStart + 3; + const isChecked = checkChar === 'x' || checkChar === 'X'; + + if (isOrderedList && orderedReplacement !== undefined) { + decorations.push({ + startPos: markerStart, + endPos: markerEnd, + type: 'orderedListItem', + replacement: orderedReplacement, + orderedListMarkerMismatch, + }); + } + + decorations.push({ + startPos: isOrderedList ? checkboxStart : markerStart, + endPos: checkboxEnd, + type: isChecked ? 'checkboxChecked' : 'checkboxUnchecked', + }); + return true; +} diff --git a/src/parser/mentions.ts b/src/parser/mentions.ts new file mode 100644 index 0000000..1ca1d62 --- /dev/null +++ b/src/parser/mentions.ts @@ -0,0 +1,200 @@ +import type { DecorationRange, DecorationType, ScopeRange } from './types'; +import { addScope } from './common'; + +function looksLikeEmailAt(text: string, atIdx: number): boolean { + let lo = atIdx - 1; + while (lo >= 0 && /[a-zA-Z0-9._%+-]/.test(text[lo])) lo--; + const localPart = text.slice(lo + 1, atIdx); + let hi = atIdx + 1; + while (hi < text.length && /[a-zA-Z0-9.-]/.test(text[hi])) hi++; + const domainPart = text.slice(atIdx + 1, hi); + if (!localPart.length || !domainPart.length) return false; + if (!/\./.test(domainPart)) return false; + return true; +} + +function getCodeBlockRanges(scopes: ScopeRange[]): Array<{ start: number; end: number }> { + const out: Array<{ start: number; end: number }> = []; + for (const scope of scopes) { + if (scope.kind === 'codeBlock' || scope.kind === 'code') { + out.push({ start: scope.startPos, end: scope.endPos }); + } + } + out.sort((a, b) => a.start - b.start); + return out; +} + +export function scanMentionAndIssueRefs( + text: string, + decorations: DecorationRange[], + scopes: ScopeRange[], +): void { + const codeRanges = getCodeBlockRanges(scopes); + const inCode = (start: number, end: number) => + codeRanges.some((range) => start < range.end && end > range.start); + const occupiedIssueRanges: Array<{ start: number; end: number }> = []; + const overlapsIssueRange = (start: number, end: number) => + occupiedIssueRanges.some((range) => start < range.end && end > range.start); + + const repoScopedRefRe = + /@([a-zA-Z0-9][a-zA-Z0-9-]*)\/([a-zA-Z0-9][a-zA-Z0-9-]*)#(\d+)/g; + let match: RegExpExecArray | null; + while ((match = repoScopedRefRe.exec(text)) !== null) { + const start = match.index; + const end = match.index + match[0].length; + if (inCode(start, end) || looksLikeEmailAt(text, start)) continue; + const ownerRepo = `${match[1]}/${match[2]}`; + decorations.push({ + startPos: start, + endPos: end, + type: 'issueReference', + issueNumber: parseInt(match[3], 10), + ownerRepo, + }); + occupiedIssueRanges.push({ start, end }); + addScope(scopes, start, end, 'issueReference'); + } + + const orgTeamRe = + /@([a-zA-Z0-9][a-zA-Z0-9-]*)\/([a-zA-Z0-9][a-zA-Z0-9-]*)(?=$|[^a-zA-Z0-9-])/g; + while ((match = orgTeamRe.exec(text)) !== null) { + const start = match.index; + const end = match.index + match[0].length; + if (inCode(start, end) || looksLikeEmailAt(text, start) || text[end] === '#') continue; + decorations.push({ + startPos: start, + endPos: end, + type: 'mention', + slug: `${match[1]}/${match[2]}`, + }); + addScope(scopes, start, end, 'mention'); + } + + const userRe = /@([a-zA-Z0-9][a-zA-Z0-9-]*)(?![a-zA-Z0-9_/-])/g; + while ((match = userRe.exec(text)) !== null) { + const start = match.index; + const end = match.index + match[0].length; + if (inCode(start, end) || looksLikeEmailAt(text, start)) continue; + decorations.push({ + startPos: start, + endPos: end, + type: 'mention', + slug: match[1], + }); + addScope(scopes, start, end, 'mention'); + } + + const issueRe = /#(\d+)/g; + while ((match = issueRe.exec(text)) !== null) { + const start = match.index; + const end = match.index + match[0].length; + if (inCode(start, end) || overlapsIssueRange(start, end)) continue; + decorations.push({ + startPos: start, + endPos: end, + type: 'issueReference', + issueNumber: parseInt(match[1], 10), + }); + addScope(scopes, start, end, 'issueReference'); + } +} + +export function filterDecorationsInCodeBlocks( + decorations: DecorationRange[], + scopes: ScopeRange[], + text: string, +): void { + const codeBlockRanges: Array<{ + start: number; + end: number; + isFenced: boolean; + openingLineEnd?: number; + }> = []; + + for (const scope of scopes) { + if (scope.kind === 'codeBlock') { + const openingLineEnd = text.indexOf('\n', scope.startPos); + codeBlockRanges.push({ + start: scope.startPos, + end: scope.endPos, + isFenced: true, + openingLineEnd: openingLineEnd !== -1 ? openingLineEnd + 1 : undefined, + }); + } else if (scope.kind === 'code') { + codeBlockRanges.push({ + start: scope.startPos, + end: scope.endPos, + isFenced: false, + }); + } + } + + if (codeBlockRanges.length === 0) { + return; + } + + codeBlockRanges.sort((a, b) => a.start - b.start); + const minCodeBlockStart = codeBlockRanges[0].start; + const maxCodeBlockEnd = Math.max(...codeBlockRanges.map((range) => range.end)); + const alwaysAllowed = new Set([ + 'codeBlock', + 'codeBlockLanguage', + 'code', + 'transparent', + ]); + + for (let i = decorations.length - 1; i >= 0; i--) { + const decoration = decorations[i]; + + if (alwaysAllowed.has(decoration.type)) { + continue; + } + + if ( + decoration.endPos <= minCodeBlockStart || + decoration.startPos >= maxCodeBlockEnd + ) { + continue; + } + + let matchingRange: (typeof codeBlockRanges)[0] | undefined; + for (const range of codeBlockRanges) { + if (decoration.startPos < range.start) { + break; + } + if ( + decoration.startPos >= range.start && + decoration.endPos <= range.end + ) { + matchingRange = range; + break; + } + } + + if (!matchingRange) { + continue; + } + + if (decoration.type === 'hide' && matchingRange.isFenced) { + const isOpeningFence = decoration.startPos === matchingRange.start; + const isClosingFence = decoration.endPos === matchingRange.end; + const isOnOpeningLine = + matchingRange.openingLineEnd !== undefined && + decoration.startPos >= matchingRange.start && + decoration.endPos <= matchingRange.openingLineEnd; + + if (isOpeningFence || isClosingFence || isOnOpeningLine) { + continue; + } + decorations.splice(i, 1); + continue; + } + + if (decoration.type === 'hide' && !matchingRange.isFenced) { + decorations.splice(i, 1); + continue; + } + + decorations.splice(i, 1); + } +} diff --git a/src/parser/tables.ts b/src/parser/tables.ts new file mode 100644 index 0000000..01229ee --- /dev/null +++ b/src/parser/tables.ts @@ -0,0 +1,206 @@ +import type { + Delete, + Emphasis, + InlineCode, + Node, + Strong, + Table, + TableCell, + Text, +} from 'mdast'; +import type { ScopeRange } from './types'; +import { addScope } from './common'; + +export function extractCellPlainText(cell: TableCell): string { + const walk = (node: Node): string => { + switch (node.type) { + case 'text': + return (node as Text).value; + case 'inlineCode': + return (node as InlineCode).value; + case 'strong': + case 'emphasis': + case 'delete': { + const parent = node as Strong | Emphasis | Delete; + return parent.children.map(walk).join(''); + } + default: { + const asParent = node as { children?: Node[] }; + return asParent.children ? asParent.children.map(walk).join('') : ''; + } + } + }; + + return cell.children.map(walk).join(''); +} + +export function cellHasMixedFormatting(cell: TableCell): boolean { + return cell.children.some((child) => + child.type === 'strong' || child.type === 'emphasis' || + child.type === 'delete' || child.type === 'inlineCode' + ); +} + +export function detectCellStyle( + trimmed: string, +): { fontWeight?: string; fontStyle?: string; textDecoration?: string } | undefined { + if ( + (trimmed.startsWith('***') && trimmed.endsWith('***')) || + (trimmed.startsWith('___') && trimmed.endsWith('___')) + ) { + return { fontWeight: 'bold', fontStyle: 'italic' }; + } + if ( + (trimmed.startsWith('**') && trimmed.endsWith('**')) || + (trimmed.startsWith('__') && trimmed.endsWith('__')) + ) { + return { fontWeight: 'bold' }; + } + if (trimmed.startsWith('~~') && trimmed.endsWith('~~')) { + return { textDecoration: 'line-through' }; + } + if ( + (trimmed.startsWith('*') && trimmed.endsWith('*') && trimmed.length > 2) || + (trimmed.startsWith('_') && trimmed.endsWith('_') && trimmed.length > 2) + ) { + return { fontStyle: 'italic' }; + } + if (trimmed.startsWith('`') && trimmed.endsWith('`') && trimmed.length > 2) { + return { fontWeight: 'normal' }; + } + return undefined; +} + +export function measureTextWidth(plain: string): number { + let width = 0; + let cjkCount = 0; + for (const char of plain) { + const code = char.codePointAt(0)!; + if ( + (code >= 0x2e80 && code <= 0x9fff) || + (code >= 0xf900 && code <= 0xfaff) || + (code >= 0xfe30 && code <= 0xfe4f) || + (code >= 0x20000 && code <= 0x2fa1f) + ) { + width += 2; + cjkCount++; + } else { + width += 1; + } + } + return width + Math.ceil(cjkCount * 0.25); +} + +export function findPipePositions( + text: string, + lineStart: number, + lineEnd: number, +): number[] { + const pipes: number[] = []; + for (let i = lineStart; i < lineEnd; i++) { + if (text[i] === '|') { + let backslashCount = 0; + let j = i - 1; + while (j >= lineStart && text[j] === '\\') { + backslashCount++; + j--; + } + if (backslashCount % 2 === 0) { + pipes.push(i); + } + } + } + return pipes; +} + +export function normalizePipePositions( + text: string, + lineStart: number, + trimmedLineEnd: number, + pipes: number[], +): { positions: number[]; isVirtual: boolean[] } { + if (pipes.length === 0) { + return { positions: pipes, isVirtual: [] }; + } + + const positions = [...pipes]; + const isVirtual = new Array(pipes.length).fill(false); + + let firstContentPos = lineStart; + while (firstContentPos < trimmedLineEnd && (text[firstContentPos] === ' ' || text[firstContentPos] === '\t')) { + firstContentPos++; + } + + if (pipes[0] !== firstContentPos) { + const virtualLead = firstContentPos > lineStart ? firstContentPos - 1 : -1; + positions.unshift(virtualLead); + isVirtual.unshift(true); + } + + if (pipes[pipes.length - 1] < trimmedLineEnd - 1) { + positions.push(trimmedLineEnd); + isVirtual.push(true); + } + + return { positions, isVirtual }; +} + +export function getLineRange(text: string, offset: number): [number, number] { + const lineStart = offset === 0 ? 0 : text.lastIndexOf('\n', offset - 1) + 1; + let lineEnd = text.indexOf('\n', offset); + if (lineEnd === -1) lineEnd = text.length; + return [lineStart, lineEnd]; +} + +export function trimLineEnd(text: string, lineStart: number, lineEnd: number): number { + let end = lineEnd; + while ( + end > lineStart && + (text[end - 1] === ' ' || text[end - 1] === '\t') + ) { + end--; + } + return end; +} + +export function computeColumnWidths(tableNode: Table, source: string): number[] { + let numCols = 0; + + for (const row of tableNode.children) { + if (!row.position || row.position.start.offset === undefined) continue; + const [lineStart, lineEnd] = getLineRange(source, row.position.start.offset); + const trimmed = trimLineEnd(source, lineStart, lineEnd); + const rawPipes = findPipePositions(source, lineStart, trimmed); + const { positions: pipes } = normalizePipePositions(source, lineStart, trimmed, rawPipes); + const cellCount = Math.max(0, pipes.length - 1); + if (cellCount > numCols) numCols = cellCount; + } + + const widths: number[] = new Array(numCols).fill(3); + + for (const row of tableNode.children) { + if (!row.position || row.position.start.offset === undefined) continue; + const [lineStart, lineEnd] = getLineRange(source, row.position.start.offset); + const trimmed = trimLineEnd(source, lineStart, lineEnd); + const rawPipes = findPipePositions(source, lineStart, trimmed); + const { positions: pipes } = normalizePipePositions(source, lineStart, trimmed, rawPipes); + + for (let i = 0; i < pipes.length - 1 && i < numCols; i++) { + const cellText = source.substring(pipes[i] + 1, pipes[i + 1]).trim(); + const astCell = i < row.children.length ? row.children[i] as TableCell : undefined; + const cellStyle = detectCellStyle(cellText); + const showRaw = !cellStyle && astCell && cellHasMixedFormatting(astCell); + const displayText = (astCell && !showRaw) + ? extractCellPlainText(astCell) + : cellText; + const width = measureTextWidth(displayText); + if (width > widths[i]) widths[i] = width; + } + } + + return widths; +} + +export function addTableScope(scopes: ScopeRange[], tableStart: number, tableEnd: number): void { + addScope(scopes, tableStart, tableEnd, 'table'); +} diff --git a/src/parser/text-processing.ts b/src/parser/text-processing.ts new file mode 100644 index 0000000..8cdbe5d --- /dev/null +++ b/src/parser/text-processing.ts @@ -0,0 +1,77 @@ +import type { Node, Text } from 'mdast'; +import { addScope, hasValidPosition, isInCodeBlock } from './common'; +import type { DecorationRange, ScopeRange } from './types'; + +export function processTextNode( + node: Text, + decorations: DecorationRange[], + scopes: ScopeRange[], + ancestors: Node[], + processEmojiShortcodesInSlice: ( + slice: string, + offset: number, + decorations: DecorationRange[], + scopes: ScopeRange[], + ) => void, +): void { + if (!hasValidPosition(node) || isInCodeBlock(ancestors)) { + return; + } + + const start = node.position!.start.offset!; + processEmojiShortcodesInSlice(node.value, start, decorations, scopes); +} + +export function processEmojiShortcodesInSlice( + slice: string, + offset: number, + decorations: DecorationRange[], + scopes: ScopeRange[], + emojiByShortcode: Record, +): void { + if (!slice || slice.indexOf(':') === -1) { + return; + } + + const regex = /:([a-z0-9_+-]+):/gi; + let match: RegExpExecArray | null; + while ((match = regex.exec(slice)) !== null) { + const name = match[1].toLowerCase(); + const emoji = emojiByShortcode[name]; + if (!emoji) { + continue; + } + + const start = offset + match.index; + const end = start + match[0].length; + decorations.push({ + startPos: start, + endPos: end, + type: 'emoji', + emoji, + }); + addScope(scopes, start, end, 'emoji'); + } +} + +export function handleEmptyImageAlt( + text: string, + decorations: DecorationRange[], +): void { + if (text.indexOf('![') === -1) { + return; + } + + const regex = /!\[\]/g; + let match: RegExpExecArray | null; + while ((match = regex.exec(text)) !== null) { + const pos = match.index; + const isCovered = decorations.some( + (decoration) => decoration.startPos <= pos && decoration.endPos > pos, + ); + if (!isCovered) { + decorations.push({ startPos: pos, endPos: pos + 2, type: 'hide' }); + decorations.push({ startPos: pos + 2, endPos: pos + 3, type: 'hide' }); + } + } +} diff --git a/src/parser/types.ts b/src/parser/types.ts new file mode 100644 index 0000000..6500a54 --- /dev/null +++ b/src/parser/types.ts @@ -0,0 +1,83 @@ +export interface DecorationRange { + startPos: number; + endPos: number; + type: DecorationType; + url?: string; + level?: number; + emoji?: string; + replacement?: string; + cellStyle?: { + fontWeight?: string; + fontStyle?: string; + textDecoration?: string; + }; + slug?: string; + issueNumber?: number; + ownerRepo?: string; + orderedListMarkerMismatch?: boolean; +} + +export interface ScopeRange { + startPos: number; + endPos: number; + kind?: string; +} + +export interface MermaidBlock { + startPos: number; + endPos: number; + source: string; + numLines: number; +} + +export interface MathRegion { + startPos: number; + endPos: number; + source: string; + displayMode: boolean; + numLines?: number; +} + +export interface ParseResult { + decorations: DecorationRange[]; + scopes: ScopeRange[]; + mermaidBlocks: MermaidBlock[]; + mathRegions: MathRegion[]; +} + +export type DecorationType = + | "hide" + | "transparent" + | "selectionOverlay" + | "ghostFaint" + | "emoji" + | "bold" + | "italic" + | "boldItalic" + | "strikethrough" + | "code" + | "codeBlock" + | "codeBlockLanguage" + | "heading" + | "heading1" + | "heading2" + | "heading3" + | "heading4" + | "heading5" + | "heading6" + | "link" + | "image" + | "blockquote" + | "listItem" + | "orderedListItem" + | "checkboxUnchecked" + | "checkboxChecked" + | "horizontalRule" + | "frontmatter" + | "frontmatterDelimiter" + | "tablePipe" + | "tableSeparatorPipe" + | "tableSeparatorDash" + | "tableCell" + | "mention" + | "issueReference"; diff --git a/src/position-mapping.ts b/src/position-mapping.ts index fdd1094..e336ec3 100644 --- a/src/position-mapping.ts +++ b/src/position-mapping.ts @@ -6,6 +6,16 @@ * uses the actual document text. These utilities help map between the two. */ +/** + * Normalizes any mix of CRLF/CR line endings to LF. + * + * @param text - Source text with arbitrary line endings + * @returns Text normalized to LF-only line endings + */ +export function normalizeToLF(text: string): string { + return text.includes('\r') ? text.replace(/\r\n|\r/g, '\n') : text; +} + /** * Maps a position from normalized text (LF only) to original document text. * This accounts for CRLF -> LF normalization done by the parser. diff --git a/src/position-mapping/__tests__/position-mapping.test.ts b/src/position-mapping/__tests__/position-mapping.test.ts index 75c4e53..d068761 100644 --- a/src/position-mapping/__tests__/position-mapping.test.ts +++ b/src/position-mapping/__tests__/position-mapping.test.ts @@ -1,4 +1,4 @@ -import { mapNormalizedToOriginal, normalizeAnchorText } from '../../position-mapping'; +import { mapNormalizedToOriginal, normalizeAnchorText, normalizeToLF } from '../../position-mapping'; describe('mapNormalizedToOriginal', () => { describe('LF-only documents (no CRLF)', () => { @@ -97,3 +97,13 @@ describe('normalizeAnchorText', () => { expect(normalizeAnchorText('')).toBe(''); }); }); + +describe('normalizeToLF', () => { + it('normalizes CRLF and CR line endings to LF', () => { + expect(normalizeToLF('a\r\nb\rc')).toBe('a\nb\nc'); + }); + + it('returns the same text when no CR characters are present', () => { + expect(normalizeToLF('a\nb\nc')).toBe('a\nb\nc'); + }); +}); diff --git a/src/recommendations.ts b/src/recommendations.ts new file mode 100644 index 0000000..c401b6e --- /dev/null +++ b/src/recommendations.ts @@ -0,0 +1,40 @@ +import * as vscode from 'vscode'; + +const RECOMMENDED_EXTENSIONS = [ + 'yzhang.markdown-all-in-one', + 'MermaidChart.vscode-mermaid-chart', +] as const; + +function checkRecommendedExtension( + extensionId: string, + context: vscode.ExtensionContext, +): void { + const extension = vscode.extensions.getExtension(extensionId); + if (extension) { + return; + } + + const notificationKey = `recommendationShown.${extensionId}`; + const hasShownBefore = context.globalState.get(notificationKey, false); + if (hasShownBefore) { + return; + } + + const extensionName = extensionId.split('.').pop() || extensionId; + void vscode.window.showInformationMessage( + `Enhance your Markdown workflow: Consider installing "${extensionName}"`, + 'Install', + 'Dismiss' + ).then((selection) => { + if (selection === 'Install') { + void vscode.commands.executeCommand('workbench.extensions.installExtension', extensionId); + } + void context.globalState.update(notificationKey, true); + }); +} + +export function checkRecommendedExtensions(context: vscode.ExtensionContext): void { + for (const extensionId of RECOMMENDED_EXTENSIONS) { + checkRecommendedExtension(extensionId, context); + } +} diff --git a/src/recommendations/__tests__/recommendations.test.ts b/src/recommendations/__tests__/recommendations.test.ts new file mode 100644 index 0000000..2dec7cf --- /dev/null +++ b/src/recommendations/__tests__/recommendations.test.ts @@ -0,0 +1,56 @@ +import type { Mock } from 'vitest'; +import * as vscode from 'vscode'; +import { checkRecommendedExtensions } from '../../recommendations'; + +describe('recommendations', () => { + beforeEach(() => { + vi.clearAllMocks(); + (vscode.extensions.getExtension as any) = vi.fn(() => undefined); + (vscode.window.showInformationMessage as Mock).mockResolvedValue('Install'); + }); + + it('prompts for missing recommended extensions once', async () => { + const context = { + globalState: { + get: vi.fn(() => false), + update: vi.fn(() => Promise.resolve()), + }, + }; + + checkRecommendedExtensions(context as any); + await Promise.resolve(); + + expect(vscode.window.showInformationMessage).toHaveBeenCalledTimes(2); + expect(vscode.commands.executeCommand).toHaveBeenCalledWith( + 'workbench.extensions.installExtension', + 'yzhang.markdown-all-in-one' + ); + }); + + it('skips already-shown recommendations', () => { + const context = { + globalState: { + get: vi.fn(() => true), + update: vi.fn(() => Promise.resolve()), + }, + }; + + checkRecommendedExtensions(context as any); + + expect(vscode.window.showInformationMessage).not.toHaveBeenCalled(); + }); + + it('skips installed extensions', () => { + (vscode.extensions.getExtension as Mock).mockReturnValue({ id: 'installed' }); + const context = { + globalState: { + get: vi.fn(() => false), + update: vi.fn(() => Promise.resolve()), + }, + }; + + checkRecommendedExtensions(context as any); + + expect(vscode.window.showInformationMessage).not.toHaveBeenCalled(); + }); +}); diff --git a/src/registration/__tests__/register-event-handlers.test.ts b/src/registration/__tests__/register-event-handlers.test.ts new file mode 100644 index 0000000..852d8eb --- /dev/null +++ b/src/registration/__tests__/register-event-handlers.test.ts @@ -0,0 +1,161 @@ +import * as vscode from 'vscode'; +import { config } from '../../config'; +import { registerEventHandlers } from '../register-event-handlers'; + +describe('registerEventHandlers', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('registers editor, workspace, and theme listeners', () => { + const decorator = { + setActiveEditor: vi.fn(), + updateDecorationsForSelection: vi.fn(), + updateDecorationsFromChange: vi.fn(), + renameFile: vi.fn(), + updateDiffViewDecorationSetting: vi.fn(), + recreateGhostFaintDecorationType: vi.fn(), + recreateFrontmatterDelimiterDecorationType: vi.fn(), + recreateCodeBlockLanguageDecorationType: vi.fn(), + recreateColorDependentTypes: vi.fn(), + clearMathDecorationCache: vi.fn(), + }; + const linkClickHandler = { + setEnabled: vi.fn(), + }; + + const disposables = registerEventHandlers(decorator as any, linkClickHandler as any); + + expect(disposables).toHaveLength(6); + }); + + it('routes editor and workspace events to the decorator', () => { + let activeEditorListener: ((editor: vscode.TextEditor | undefined) => void) | undefined; + let selectionListener: + | ((event: { kind: vscode.TextEditorSelectionChangeKind }) => void) + | undefined; + let documentChangeListener: + | ((event: { document: vscode.TextDocument }) => void) + | undefined; + let renameListener: + | ((event: { files: Array<{ oldUri: vscode.Uri; newUri: vscode.Uri }> }) => void) + | undefined; + + vscode.window.onDidChangeActiveTextEditor = vi.fn((listener) => { + activeEditorListener = listener; + return { dispose: vi.fn() }; + }) as any; + vscode.window.onDidChangeTextEditorSelection = vi.fn((listener) => { + selectionListener = listener; + return { dispose: vi.fn() }; + }) as any; + vscode.workspace.onDidChangeTextDocument = vi.fn((listener) => { + documentChangeListener = listener; + return { dispose: vi.fn() }; + }) as any; + vscode.workspace.onDidRenameFiles = vi.fn((listener) => { + renameListener = listener; + return { dispose: vi.fn() }; + }) as any; + + const document = new (vscode.TextDocument as any)( + vscode.Uri.file('/test.md'), + 'markdown', + 1, + '# Title' + ); + const editor = new (vscode.TextEditor as any)(document, []); + (vscode.window as any).activeTextEditor = editor; + + const decorator = { + setActiveEditor: vi.fn(), + updateDecorationsForSelection: vi.fn(), + updateDecorationsFromChange: vi.fn(), + renameFile: vi.fn(), + updateDiffViewDecorationSetting: vi.fn(), + recreateGhostFaintDecorationType: vi.fn(), + recreateFrontmatterDelimiterDecorationType: vi.fn(), + recreateCodeBlockLanguageDecorationType: vi.fn(), + recreateColorDependentTypes: vi.fn(), + clearMathDecorationCache: vi.fn(), + }; + + registerEventHandlers(decorator as any, { setEnabled: vi.fn() } as any); + + activeEditorListener?.(editor); + selectionListener?.({ kind: vscode.TextEditorSelectionChangeKind.Mouse }); + documentChangeListener?.({ document }); + renameListener?.({ + files: [{ oldUri: vscode.Uri.file('/old.md'), newUri: vscode.Uri.file('/new.md') }], + }); + + expect(decorator.setActiveEditor).toHaveBeenCalledWith(editor); + expect(decorator.updateDecorationsForSelection).toHaveBeenCalledWith( + vscode.TextEditorSelectionChangeKind.Mouse + ); + expect(decorator.updateDecorationsFromChange).toHaveBeenCalledWith({ document }); + expect(decorator.renameFile).toHaveBeenCalledWith('file:///old.md', 'file:///new.md'); + }); + + it('applies configuration and theme changes', () => { + let configurationListener: + | ((event: { affectsConfiguration: (section: string) => boolean }) => void) + | undefined; + let themeListener: (() => void) | undefined; + + vscode.workspace.onDidChangeConfiguration = vi.fn((listener) => { + configurationListener = listener; + return { dispose: vi.fn() }; + }) as any; + vscode.window.onDidChangeActiveColorTheme = vi.fn((listener) => { + themeListener = listener; + return { dispose: vi.fn() }; + }) as any; + + vi.spyOn(config.diffView, 'applyDecorations').mockReturnValue(false); + vi.spyOn(config.links, 'singleClickOpen').mockReturnValue(true); + + const decorator = { + setActiveEditor: vi.fn(), + updateDecorationsForSelection: vi.fn(), + updateDecorationsFromChange: vi.fn(), + renameFile: vi.fn(), + updateDiffViewDecorationSetting: vi.fn(), + recreateGhostFaintDecorationType: vi.fn(), + recreateFrontmatterDelimiterDecorationType: vi.fn(), + recreateCodeBlockLanguageDecorationType: vi.fn(), + recreateColorDependentTypes: vi.fn(), + clearMathDecorationCache: vi.fn(), + }; + const linkClickHandler = { + setEnabled: vi.fn(), + }; + + registerEventHandlers(decorator as any, linkClickHandler as any); + + const changedKeys = new Set([ + 'markdownInlineEditor.defaultBehaviors.diffView.applyDecorations', + 'markdownInlineEditor.decorations.ghostFaintOpacity', + 'markdownInlineEditor.decorations.frontmatterDelimiterOpacity', + 'markdownInlineEditor.decorations.codeBlockLanguageOpacity', + 'markdownInlineEditor.links.singleClickOpen', + 'markdownInlineEditor.colors', + 'editor.fontSize', + 'editor.lineHeight', + ]); + + configurationListener?.({ + affectsConfiguration: (section: string) => changedKeys.has(section), + }); + themeListener?.(); + + expect(decorator.updateDiffViewDecorationSetting).toHaveBeenCalledWith(true); + expect(decorator.updateDecorationsForSelection).toHaveBeenCalled(); + expect(decorator.recreateGhostFaintDecorationType).toHaveBeenCalled(); + expect(decorator.recreateFrontmatterDelimiterDecorationType).toHaveBeenCalled(); + expect(decorator.recreateCodeBlockLanguageDecorationType).toHaveBeenCalled(); + expect(linkClickHandler.setEnabled).toHaveBeenCalledWith(true); + expect(decorator.recreateColorDependentTypes).toHaveBeenCalledTimes(2); + expect(decorator.clearMathDecorationCache).toHaveBeenCalledTimes(1); + }); +}); diff --git a/src/registration/__tests__/register-providers.test.ts b/src/registration/__tests__/register-providers.test.ts new file mode 100644 index 0000000..c24b338 --- /dev/null +++ b/src/registration/__tests__/register-providers.test.ts @@ -0,0 +1,28 @@ +import * as vscode from 'vscode'; +import { LinkClickHandler } from '../../link-click-handler'; +import { registerProviders } from '../register-providers'; + +describe('registerProviders', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('registers document link and hover providers and returns a link click handler', () => { + const parseCache = {} as any; + const result = registerProviders(parseCache); + + expect(vscode.languages.registerDocumentLinkProvider).toHaveBeenCalledTimes(1); + expect(vscode.languages.registerHoverProvider).toHaveBeenCalledTimes(3); + expect(result.disposables).toHaveLength(5); + expect(result.linkClickHandler).toBeDefined(); + }); + + it('disposes the link click handler through the returned disposable list', () => { + const disposeSpy = vi.spyOn(LinkClickHandler.prototype, 'dispose'); + + const result = registerProviders({} as any); + result.disposables[4].dispose(); + + expect(disposeSpy).toHaveBeenCalledTimes(1); + }); +}); diff --git a/src/registration/register-event-handlers.ts b/src/registration/register-event-handlers.ts new file mode 100644 index 0000000..546e6dc --- /dev/null +++ b/src/registration/register-event-handlers.ts @@ -0,0 +1,62 @@ +import * as vscode from 'vscode'; +import { config } from '../config'; +import { Decorator } from '../decorator'; +import { LinkClickHandler } from '../link-click-handler'; + +export function registerEventHandlers( + decorator: Decorator, + linkClickHandler: LinkClickHandler +): vscode.Disposable[] { + return [ + vscode.window.onDidChangeActiveTextEditor((editor) => { + decorator.setActiveEditor(editor); + }), + vscode.window.onDidChangeTextEditorSelection((event) => { + decorator.updateDecorationsForSelection(event.kind); + }), + vscode.workspace.onDidChangeTextDocument((event) => { + if (event.document === vscode.window.activeTextEditor?.document) { + decorator.updateDecorationsFromChange(event); + } + }), + vscode.workspace.onDidRenameFiles((event) => { + for (const { oldUri, newUri } of event.files) { + decorator.renameFile(oldUri.toString(), newUri.toString()); + } + }), + vscode.workspace.onDidChangeConfiguration((event) => { + if (event.affectsConfiguration('markdownInlineEditor.defaultBehaviors.diffView.applyDecorations')) { + const diffViewApplyDecorations = config.diffView.applyDecorations(); + decorator.updateDiffViewDecorationSetting(!diffViewApplyDecorations); + decorator.updateDecorationsForSelection(); + } + + if (event.affectsConfiguration('markdownInlineEditor.decorations.ghostFaintOpacity')) { + decorator.recreateGhostFaintDecorationType(); + } + + if (event.affectsConfiguration('markdownInlineEditor.decorations.frontmatterDelimiterOpacity')) { + decorator.recreateFrontmatterDelimiterDecorationType(); + } + + if (event.affectsConfiguration('markdownInlineEditor.decorations.codeBlockLanguageOpacity')) { + decorator.recreateCodeBlockLanguageDecorationType(); + } + + if (event.affectsConfiguration('markdownInlineEditor.links.singleClickOpen')) { + linkClickHandler.setEnabled(config.links.singleClickOpen()); + } + + if (event.affectsConfiguration('markdownInlineEditor.colors')) { + decorator.recreateColorDependentTypes(); + } + + if (event.affectsConfiguration('editor.fontSize') || event.affectsConfiguration('editor.lineHeight')) { + decorator.clearMathDecorationCache(); + } + }), + vscode.window.onDidChangeActiveColorTheme(() => { + decorator.recreateColorDependentTypes(); + }), + ]; +} diff --git a/src/registration/register-providers.ts b/src/registration/register-providers.ts new file mode 100644 index 0000000..274c636 --- /dev/null +++ b/src/registration/register-providers.ts @@ -0,0 +1,40 @@ +import * as vscode from 'vscode'; +import { CodeBlockHoverProvider } from '../code-block-hover-provider'; +import { MarkdownImageHoverProvider } from '../image-hover-provider'; +import { MarkdownLinkHoverProvider } from '../link-hover-provider'; +import { LinkClickHandler } from '../link-click-handler'; +import { MarkdownLinkProvider } from '../link-provider'; +import { MarkdownParseCache } from '../markdown-parse-cache'; +import { FILE_BACKED_MARKDOWN_SELECTOR } from '../language-support'; + +export type ProviderRegistration = { + disposables: vscode.Disposable[]; + linkClickHandler: LinkClickHandler; +}; + +export function registerProviders(parseCache: MarkdownParseCache): ProviderRegistration { + const linkClickHandler = new LinkClickHandler(parseCache); + + return { + linkClickHandler, + disposables: [ + vscode.languages.registerDocumentLinkProvider( + FILE_BACKED_MARKDOWN_SELECTOR, + new MarkdownLinkProvider(parseCache) + ), + vscode.languages.registerHoverProvider( + FILE_BACKED_MARKDOWN_SELECTOR, + new MarkdownImageHoverProvider(parseCache) + ), + vscode.languages.registerHoverProvider( + FILE_BACKED_MARKDOWN_SELECTOR, + new MarkdownLinkHoverProvider(parseCache) + ), + vscode.languages.registerHoverProvider( + FILE_BACKED_MARKDOWN_SELECTOR, + new CodeBlockHoverProvider(parseCache) + ), + { dispose: () => linkClickHandler.dispose() }, + ], + }; +} diff --git a/src/test/__mocks__/vscode.ts b/src/test/__mocks__/vscode.ts index 5490832..f48e161 100644 --- a/src/test/__mocks__/vscode.ts +++ b/src/test/__mocks__/vscode.ts @@ -1,4 +1,6 @@ // Mock VS Code API for testing +import { vi } from 'vitest'; + class MockRange { constructor( public start: { line: number; character: number }, @@ -173,14 +175,22 @@ class MockTextDocument { export const TextDocument = MockTextDocument as any; class MockTextEditor { + public selection: MockSelection; + constructor( public document: MockTextDocument, public selections: MockSelection[], - ) {} + ) { + this.selection = selections[0] ?? new MockSelection({ line: 0, character: 0 }, { line: 0, character: 0 }); + } setDecorations(_decorationType: any, _ranges: MockRange[]): void { // Mock implementation } + + revealRange(_range: MockRange, _revealType?: unknown): void { + // Mock implementation + } } export const TextEditor = MockTextEditor as any; @@ -206,15 +216,21 @@ export function resetTextEditorDecorationTypeOptionsCapture(): void { } export const window = { - createTextEditorDecorationType: jest.fn((options: unknown) => { + createTextEditorDecorationType: vi.fn((options: unknown) => { lastTextEditorDecorationTypeOptions = options; - return { dispose: jest.fn() }; + return { dispose: vi.fn() }; }), + createOutputChannel: vi.fn(() => ({ + appendLine: vi.fn(), + dispose: vi.fn(), + })), activeTextEditor: undefined as any, visibleTextEditors: [] as any[], activeColorTheme: { kind: ColorThemeKind.Dark, }, + showInformationMessage: vi.fn(), + showTextDocument: vi.fn(async (document: MockTextDocument) => new MockTextEditor(document, [])), onDidChangeActiveTextEditor: () => ({ dispose: () => {} }), onDidChangeTextEditorSelection: () => ({ dispose: () => {} }), onDidChangeActiveColorTheme: () => ({ dispose: () => {} }), @@ -237,7 +253,12 @@ export const workspace = { onDidChangeTextDocument: () => ({ dispose: () => {} }), onDidChangeConfiguration: () => ({ dispose: () => {} }), onDidRenameFiles: () => ({ dispose: () => {} }), - applyEdit: jest.fn().mockResolvedValue(true), + applyEdit: vi.fn().mockResolvedValue(true), + openTextDocument: vi.fn(async (uri: ReturnType) => new MockTextDocument(uri, "markdown", 1, "")), + asRelativePath: vi.fn((uri: { toString?: () => string } | string) => { + const value = typeof uri === "string" ? uri : uri.toString?.() ?? ""; + return value.replace(/^file:\/\/\/?/, ""); + }), getConfiguration: (section?: string) => ({ get: (key: string, defaultValue: T): T => { // Return default value for all configuration keys in tests @@ -299,9 +320,24 @@ export const CancellationToken = class { }; export const commands = { - executeCommand: jest.fn(), + executeCommand: vi.fn(), + registerCommand: vi.fn((_command: string, _handler: (...args: any[]) => any) => ({ dispose: vi.fn() })), +}; + +export const extensions = { + getExtension: vi.fn(), }; +export const languages = { + registerDocumentLinkProvider: vi.fn((_selector: unknown, _provider: unknown) => ({ dispose: vi.fn() })), + registerHoverProvider: vi.fn((_selector: unknown, _provider: unknown) => ({ dispose: vi.fn() })), +}; + +export enum TextEditorRevealType { + Default = 0, + InCenter = 1, +} + export enum TextEditorSelectionChangeKind { Mouse = 1, Keyboard = 2, diff --git a/src/test/e2e/suite/extension.test.ts b/src/test/e2e/suite/extension.test.ts index 63946b0..b85a804 100644 --- a/src/test/e2e/suite/extension.test.ts +++ b/src/test/e2e/suite/extension.test.ts @@ -70,6 +70,49 @@ suite('Extension E2E', () => { // Reaching here without an unhandled exception means the decorator ran cleanly. }); + // One document exercising many parsers at once — catches interaction bugs before release. + test('release smoke: kitchen-sink markdown decorates without error', async () => { + const doc = await vscode.workspace.openTextDocument({ + language: 'markdown', + content: [ + '---', + 'title: Smoke', + '---', + '', + '# Title', + '', + '| A | B |', + '| - | - |', + '| 1 | 2 |', + '', + '- [ ] open', + '- [x] done', + '', + '1. one', + '2. two', + '', + '**bold** _italic_ `code` ~~strike~~', + '', + '[link](https://example.com/page)', + '', + '```javascript', + 'const x = "**not** bold";', + '```', + '', + '> quote line', + '', + '---', + '', + 'See #99 and @alice.', + '', + 'Emoji :rocket:', + ].join('\n'), + }); + await vscode.window.showTextDocument(doc); + await delay(900); + assert.strictEqual(doc.languageId, 'markdown'); + }); + test('toggle command executes without error on active markdown editor', async () => { const doc = await vscode.workspace.openTextDocument({ language: 'markdown', @@ -363,6 +406,97 @@ suite('Extension E2E', () => { ); }); + // Image hover (MarkdownImageHoverProvider) — release smoke for image previews. + test('image hover provider includes the image URL in hover content', async () => { + await withTempFile( + '![preview shot](https://example.com/assets/photo.png)', + async (_doc, uri) => { + const hovers = await vscode.commands.executeCommand( + 'vscode.executeHoverProvider', + uri, + new vscode.Position(0, 5) + ); + assert.ok(hovers && hovers.length > 0, 'Expected hover content over image alt text'); + const hoverText = hovers + .flatMap(h => h.contents) + .map(c => (typeof c === 'string' ? c : c.value)) + .join('\n'); + assert.ok( + hoverText.includes('example.com') && hoverText.toLowerCase().includes('image'), + `Expected image hover with URL; got: ${hoverText.slice(0, 200)}` + ); + } + ); + }); + + // Relative links must resolve for file-backed docs (common README pattern). + test('link provider resolves relative ./ path to a sibling markdown file', async () => { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'md-e2e-rel-')); + const mainPath = path.join(dir, 'readme.md'); + const siblingPath = path.join(dir, 'other.md'); + fs.writeFileSync(mainPath, '[See other](./other.md)\n', 'utf8'); + fs.writeFileSync(siblingPath, '# Other\n\nBody.\n', 'utf8'); + try { + const uri = vscode.Uri.file(mainPath); + const doc = await vscode.workspace.openTextDocument(uri); + await vscode.window.showTextDocument(doc); + await delay(600); + const links = await vscode.commands.executeCommand( + 'vscode.executeLinkProvider', + uri + ); + assert.ok(links && links.length > 0, 'Expected at least one DocumentLink'); + const normalizedSibling = siblingPath.replace(/\\/g, '/').toLowerCase(); + const hit = links.some(l => { + const fsPath = l.target?.fsPath?.replace(/\\/g, '/').toLowerCase() ?? ''; + return fsPath === normalizedSibling || fsPath.endsWith('/other.md'); + }); + assert.ok( + hit, + `Expected link target for ./other.md; targets: ${links.map(l => l.target?.toString()).join(', ')}` + ); + } finally { + try { + fs.unlinkSync(mainPath); + fs.unlinkSync(siblingPath); + fs.rmdirSync(dir); + } catch { + /* ignore cleanup */ + } + } + }); + + // mailto: links must still surface as clickable document links. + test('link provider returns a mailto target for email links', async () => { + await withTempFile('[Write us](mailto:support@example.com)', async (_doc, uri) => { + const links = await vscode.commands.executeCommand( + 'vscode.executeLinkProvider', + uri + ); + assert.ok(links && links.length > 0, 'Expected a DocumentLink for mailto'); + const mail = links.find(l => l.target?.scheme === 'mailto'); + assert.ok(mail, `Expected mailto link, got: ${links.map(l => l.target?.toString()).join(', ')}`); + const targetStr = mail!.target!.toString(true); + assert.ok( + /support(@|%40)example\.com/i.test(targetStr), + `Unexpected mailto target: ${targetStr}` + ); + }); + }); + + // Images must be document links (open in image viewer / preview). + test('link provider returns an https target for markdown images', async () => { + await withTempFile('![](https://example.com/preview.png)', async (_doc, uri) => { + const links = await vscode.commands.executeCommand( + 'vscode.executeLinkProvider', + uri + ); + assert.ok(links && links.length > 0, 'Expected DocumentLink for image'); + const img = links.find(l => l.target?.toString().includes('example.com')); + assert.ok(img, `Expected image link target, got: ${links.map(l => l.target?.toString()).join(', ')}`); + }); + }); + // navigateToAnchor must move the active editor cursor to the line of the // target heading (not just open the file without error). test('navigateToAnchor moves cursor to the target heading line', async () => { @@ -388,6 +522,46 @@ suite('Extension E2E', () => { ); }); + // navigateToAnchor must match ## headings (not only #). + test('navigateToAnchor moves cursor to a ## subheading line', async () => { + await withTempFile( + '# Title\n\n## Sub section\n\nText.\n\n### Deep\n', + async (_doc, uri) => { + await vscode.commands.executeCommand( + 'markdown-inline-editor.navigateToAnchor', + 'sub-section', + uri.toString() + ); + await delay(300); + const activeEditor = vscode.window.activeTextEditor; + assert.ok(activeEditor, 'Expected an active editor after navigation'); + const lineText = activeEditor.document.lineAt(activeEditor.selection.active.line).text; + assert.ok( + lineText.includes('Sub section'), + `Expected cursor on ## Sub section, got line: "${lineText}"` + ); + } + ); + }); + + // Missing anchor must not throw; document content must be unchanged. + test('navigateToAnchor with unknown anchor completes without error', async () => { + await withTempFile('# Only heading\n\nParagraph.', async (doc, uri) => { + const before = doc.getText(); + await vscode.commands.executeCommand( + 'markdown-inline-editor.navigateToAnchor', + 'this-anchor-is-not-in-the-document', + uri.toString() + ); + await delay(200); + assert.strictEqual( + doc.getText(), + before, + 'Document must be unchanged when anchor is not found' + ); + }); + }); + // Switching rapidly between a markdown editor and a non-markdown editor // must not crash the decorator (exercises onDidChangeActiveTextEditor). test('switching between markdown and non-markdown editors does not crash', async () => { @@ -666,6 +840,36 @@ suite('Extension E2E', () => { ); }); + test('parse: ordered list produces orderedListItem decorations', async () => { + assert.ok(cache, 'parseCache not available from ext.exports'); + const doc = await vscode.workspace.openTextDocument({ + language: 'markdown', + content: '1. first\n2. second', + }); + await vscode.window.showTextDocument(doc); + await delay(400); + const entry = cache.get(doc); + assert.ok( + entry.decorations.some(d => d.type === 'orderedListItem'), + 'Expected orderedListItem decorations for numbered list' + ); + }); + + test('parse: inline backticks produce a code decoration', async () => { + assert.ok(cache, 'parseCache not available from ext.exports'); + const doc = await vscode.workspace.openTextDocument({ + language: 'markdown', + content: 'Use `npm test` here.', + }); + await vscode.window.showTextDocument(doc); + await delay(400); + const entry = cache.get(doc); + const codes = entry.decorations.filter(d => d.type === 'code'); + assert.ok(codes.length > 0, 'Expected a code decoration for inline backticks'); + const slice = entry.text.slice(codes[0].startPos, codes[0].endPos); + assert.ok(slice.includes('npm test'), `Expected code slice to cover npm test, got "${slice}"`); + }); + test('parse: CRLF — decoration positions are consistent with LF-normalised offsets', async () => { assert.ok(cache, 'parseCache not available from ext.exports'); // CRLF document: "**bold**\r\n_italic_" diff --git a/tsconfig.vitest.json b/tsconfig.vitest.json new file mode 100644 index 0000000..c1bd0e8 --- /dev/null +++ b/tsconfig.vitest.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "types": ["vitest/globals", "node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules", "dist", "examples"] +} diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..4cadbf7 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,41 @@ +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { defineConfig } from 'vitest/config'; + +const dir = path.dirname(fileURLToPath(import.meta.url)); + +export default defineConfig({ + test: { + globals: true, + environment: 'node', + include: ['src/**/__tests__/**/*.test.ts'], + coverage: { + provider: 'v8', + reporter: ['text', 'html', 'lcov'], + reportsDirectory: './dist/coverage', + exclude: [ + '**/*.d.ts', + '**/node_modules/**', + 'src/test/**', + 'src/extension.ts', + 'src/mermaid/**', + 'src/code-block-hover-provider.ts', + 'src/decorator/decoration-type-registry.ts', + 'src/math/math-decorations.ts', + 'src/forge-context.ts', + 'src/github-context.ts', + ], + thresholds: { + statements: 80, + branches: 70, + functions: 80, + lines: 80, + }, + }, + }, + resolve: { + alias: { + vscode: path.resolve(dir, 'src/test/__mocks__/vscode.ts'), + }, + }, +});